@turmind/halo 2.2.2 → 2.2.4

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.
Files changed (42) hide show
  1. package/README.md +2 -1
  2. package/admin-out/404.html +1 -1
  3. package/admin-out/_next/static/chunks/1989-9d30cdb1a86e4beb.js +1 -0
  4. package/admin-out/_next/static/chunks/4362.115405260299210d.js +1 -0
  5. package/admin-out/_next/static/chunks/{7613.fe24922a6a839656.js → 7073.4081ed209e6748bd.js} +1 -1
  6. package/admin-out/_next/static/chunks/{7073.9d5f9dd7a77827b7.js → 7613.9c1657bb3b52d1b5.js} +1 -1
  7. package/admin-out/_next/static/chunks/app/{page-10a4afac9cbc27a2.js → page-c9d174a5432b0007.js} +1 -1
  8. package/admin-out/_next/static/chunks/{webpack-9532ec7f1fa9a757.js → webpack-1970c5140e4019b7.js} +1 -1
  9. package/admin-out/_next/static/css/87d4fc049f865389.css +1 -0
  10. package/admin-out/index.html +1 -1
  11. package/admin-out/index.txt +5 -5
  12. package/bundled-docs/design/a2a.md +3 -1
  13. package/bundled-docs/design/architecture.md +1 -1
  14. package/bundled-docs/design/cron.md +1 -1
  15. package/bundled-docs/design/evolution.md +6 -6
  16. package/bundled-docs/design/node.md +18 -39
  17. package/bundled-docs/design/observability.md +2 -2
  18. package/bundled-docs/design/relay.md +1 -1
  19. package/bundled-docs/design/session.md +3 -3
  20. package/bundled-docs/design/storage.md +5 -2
  21. package/bundled-docs/design/stt-local.md +2 -2
  22. package/bundled-docs/design/ws.md +3 -3
  23. package/bundled-docs/dev/api.md +10 -9
  24. package/bundled-docs/dev/deploy.md +1 -1
  25. package/bundled-docs/dev/env.md +2 -1
  26. package/bundled-docs/dev/tools.md +10 -6
  27. package/bundled-docs/guide/README.md +1 -1
  28. package/bundled-docs/guide/cli.md +4 -31
  29. package/bundled-docs/guide/node.md +57 -36
  30. package/bundled-docs/requirements/command.md +1 -1
  31. package/bundled-docs/requirements/settings.md +39 -2
  32. package/dist/evo-wrapper.js +368 -268
  33. package/dist/index.js +2330 -2531
  34. package/package.json +2 -1
  35. package/templates/agents/default/agent.yaml +1 -1
  36. package/templates/models/aws-bedrock-openai.yaml +81 -7
  37. package/templates/skills/cron/SKILL.md +1 -3
  38. package/admin-out/_next/static/chunks/1989-3b2faa2731d973c4.js +0 -1
  39. package/admin-out/_next/static/chunks/4362.9d2ee4f9b6facc49.js +0 -1
  40. package/admin-out/_next/static/css/8fc43fce83e5ce5d.css +0 -1
  41. /package/admin-out/_next/static/{u9pg60rITCj73MBYeXsW1 → vf5W8US5y8B2f1E6zJJw3}/_buildManifest.js +0 -0
  42. /package/admin-out/_next/static/{u9pg60rITCj73MBYeXsW1 → vf5W8US5y8B2f1E6zJJw3}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{17119:(e,t,r)=>{"use strict";r.d(t,{kj:()=>n.useT,pZ:()=>a.LanguageSelect,s9:()=>n.useI18n});var n=r(19882);r(38115);var a=r(53804);r(24554)},27173:(e,t,r)=>{"use strict";r.d(t,{SQ:()=>o,Tv:()=>s,_H:()=>l,dj:()=>a});var n=r(54604);let a=["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"],s=["mp4","webm","ogg","mov","avi","mkv"],l=["mp3","wav","flac","aac","m4a","wma"],o={id:"media",extensions:[...a,...s,...l],Component:(0,n.lazy)(()=>r.e(5287).then(r.bind(r,65287)).then(e=>({default:e.MediaPreview})))}},29562:(e,t,r)=>{"use strict";r.d(t,{Ar:()=>x,Uw:()=>h,_r:()=>g,nm:()=>o,y:()=>l});var n=r(54604),a=r(60252),s=r(56207);function l(e,t){return"".concat(null!=e?e:"","/").concat(t)}function o(e,t){let r=s.wG.__getMonacoInstance();if(r)for(let a of t){var n;null==(n=r.editor.getModel(r.Uri.parse(l(e,a))))||n.dispose()}}let i=1;function c(){return"g".concat(i++)}function d(e){let t=e.groups[e.activeGroupIdx];if(!t)return{tabs:[],activeTab:null};let r=[];for(let n of t.tabs){let t=e.buffers[n];t&&r.push(t)}return{tabs:r,activeTab:t.activeTab}}function u(e,t,r,n){let a=e.buffers[r]?e.buffers:{...e.buffers,[r]:n()},s=e.groups[t],l=s.tabs.includes(r)?s.tabs:[...s.tabs,r];return{buffers:a,groups:e.groups.map((e,n)=>n===t?{...e,tabs:l,activeTab:r}:e)}}function m(e,t){let r={...e,children:e.children&&[...e.children]},n=r,a=0;for(let e of t){if(!n.children)break;let t=n.children.findIndex(t=>t.name===e&&"directory"===t.type);if(-1===t)break;let r={...n.children[t]};r.children&&(r.children=[...r.children]),n.children[t]=r,n=r,a++}return{root:r,node:n,depth:a}}function p(){return(0,a.v)((e,t)=>({buffers:{},groups:[{id:c(),tabs:[],activeTab:null}],activeGroupIdx:0,tabs:[],activeTab:null,modelPathPrefix:null,setModelPathPrefix(r){t().modelPathPrefix!==r&&e({modelPathPrefix:r})},pinnedTab:null,pinTab(r,n){let a=r.path,s=t().buffers[a];e(e=>{let t=e.groups.findIndex(e=>e.tabs.includes(a)),s=e.pinnedTab===a&&t>=0?t:e.activeGroupIdx,l=e.groups.map((e,t)=>{var r,l;if(t!==s){if(!e.tabs.includes(a))return e;let t=e.tabs.filter(e=>e!==a),r=e.activeTab===a?null!=(l=t[Math.min(e.tabs.indexOf(a),t.length-1)])?l:null:e.activeTab;return{...e,tabs:t,activeTab:r}}let o=[a,...e.tabs.filter(e=>e!==a)];return{...e,tabs:o,activeTab:n?a:null!=(r=e.activeTab)?r:a}}),o=l.length>1?l.filter(e=>e.tabs.length>0):l,i=o.indexOf(l[s]),c=n||o.length!==l.length?i:e.activeGroupIdx,u={...e.buffers,[a]:r},m=e.modifiedPaths.has(a)?(()=>{let t=new Set(e.modifiedPaths);return t.delete(a),t})():e.modifiedPaths,p={...e,buffers:u,groups:o,activeGroupIdx:c,modifiedPaths:m};return{buffers:u,groups:o,activeGroupIdx:c,modifiedPaths:m,pinnedTab:a,...d(p)}}),s&&!s.preview&&o(t().modelPathPrefix,[a])},unpinTab(){let r=t().pinnedTab;r&&(e({pinnedTab:null}),t().closeTab(r))},fileTree:null,modifiedPaths:new Set,rejectedFile:null,bottomTab:"terminal"===localStorage.getItem("halo_bottom_tab")?"terminal":"chat",maximized:"true"===localStorage.getItem("halo_editor_maximized"),bottomFloating:"true"===sessionStorage.getItem("halo_bottom_floating"),bottomMaximized:"true"===localStorage.getItem("halo_bottom_maximized"),pendingReveal:null,bottomSplit:"true"===localStorage.getItem("halo_bottom_split"),bottomFloatRect:(()=>{let e=sessionStorage.getItem("halo_bottom_float_rect");if(e)try{return JSON.parse(e)}catch(e){}return{x:Math.max(0,window.innerWidth-480-24),y:Math.max(0,window.innerHeight-640-24),w:480,h:640}})(),selectedText:null,selectedRange:null,contextEnabled:"false"!==localStorage.getItem("halo_context_enabled"),setSelectedText(t,r){e({selectedText:t||null,selectedRange:null!=r?r:null})},setContextEnabled(t){e({contextEnabled:t}),localStorage.setItem("halo_context_enabled",String(t))},openFile(r,n,a,s,l){if(r===t().pinnedTab)return void t().setActiveTab(r);e(e=>{let{buffers:t,groups:o}=u(e,e.activeGroupIdx,r,()=>({path:r,content:n,originalContent:n,language:a,mtime:s,size:null==l?void 0:l.size,createdAt:null==l?void 0:l.createdAt,...(null==l?void 0:l.readOnly)?{readOnly:!0}:{}})),i={...e,buffers:t,groups:o};return{buffers:t,groups:o,...d(i)}})},openPreview(r,n,a,s){if(r===t().pinnedTab)return void t().setActiveTab(r);e(e=>{let{buffers:t,groups:l}=u(e,e.activeGroupIdx,r,()=>({path:r,content:"",originalContent:"",language:"",preview:{downloadUrl:n,viewUrl:a,tooLarge:null==s?void 0:s.tooLarge,...(null==s?void 0:s.bundle)?{bundle:!0}:{}},size:null==s?void 0:s.size,mtime:null==s?void 0:s.mtime,createdAt:null==s?void 0:s.createdAt,...(null==s?void 0:s.readOnly)?{readOnly:!0}:{}})),o={...e,buffers:t,groups:l};return{buffers:t,groups:l,...d(o)}})},openFileInGroup(r,n,a,s,l,o){if(n===t().pinnedTab)return void t().setActiveTab(n);e(e=>{if(r<0||r>=e.groups.length)return e;let{buffers:t,groups:i}=u(e,r,n,()=>({path:n,content:a,originalContent:a,language:s,mtime:l,size:null==o?void 0:o.size,createdAt:null==o?void 0:o.createdAt})),c={...e,buffers:t,groups:i,activeGroupIdx:r};return{buffers:t,groups:i,activeGroupIdx:r,...d(c)}})},closeTab(r){if(r===t().pinnedTab)return;e(e=>{let t=e.groups.map(e=>{if(!e.tabs.includes(r))return e;let t=e.tabs.filter(e=>e!==r),n=e.activeTab;if(n===r){var a;n=null!=(a=t[Math.min(e.tabs.indexOf(r),t.length-1)])?a:null}return{...e,tabs:t,activeTab:n}}),n=t.some(e=>e.tabs.includes(r)),a=n?e.buffers:(()=>{let{[r]:t,...n}=e.buffers;return n})(),s=n?e.modifiedPaths:(()=>{if(!e.modifiedPaths.has(r))return e.modifiedPaths;let t=new Set(e.modifiedPaths);return t.delete(r),t})(),l=t.length>1&&0===t[1].tabs.length?{groups:[t[0]],activeGroupIdx:0}:{groups:t,activeGroupIdx:Math.min(e.activeGroupIdx,t.length-1)},o={...e,buffers:a,modifiedPaths:s,...l};return{buffers:a,modifiedPaths:s,...l,...d(o)}});let n=t();n.buffers[r]||o(n.modelPathPrefix,[r])},closeTabIn(r,n){if(n===t().pinnedTab)return;e(e=>{if(r<0||r>=e.groups.length)return e;let t=e.groups[r];if(!t.tabs.includes(n))return e;let a=t.tabs.filter(e=>e!==n),s=t.activeTab;if(s===n){var l;s=null!=(l=a[Math.min(t.tabs.indexOf(n),a.length-1)])?l:null}let o=e.groups.map((e,t)=>t===r?{...e,tabs:a,activeTab:s}:e),i=e.activeGroupIdx;o.length>1&&0===o[1].tabs.length&&(o=[o[0]],i=0);let c=o.some(e=>e.tabs.includes(n)),u=c?e.buffers:(()=>{let{[n]:t,...r}=e.buffers;return r})(),m=c?e.modifiedPaths:(()=>{if(!e.modifiedPaths.has(n))return e.modifiedPaths;let t=new Set(e.modifiedPaths);return t.delete(n),t})(),p={...e,groups:o,activeGroupIdx:i,buffers:u,modifiedPaths:m};return{groups:o,activeGroupIdx:i,buffers:u,modifiedPaths:m,...d(p)}});let a=t();a.buffers[n]||o(a.modelPathPrefix,[n])},setActiveTab(t,r){e(e=>{let n=null!=r?r:-1;if(n<0){let r=e.groups[e.activeGroupIdx];n=(null==r?void 0:r.tabs.includes(t))?e.activeGroupIdx:e.groups.findIndex(e=>e.tabs.includes(t))}if(n<0||!e.groups[n].tabs.includes(t))return e;let a=e.groups.map((e,r)=>r===n?{...e,activeTab:t}:e),s=n,l={...e,groups:a,activeGroupIdx:s};return{groups:a,activeGroupIdx:s,...d(l)}})},updateContent(t,r){e(e=>{let n=e.buffers[t];if(!n)return e;let a=r!==n.originalContent,s={...e.buffers,[t]:{...n,content:r,modified:a}},l=new Set(e.modifiedPaths);a?l.add(t):l.delete(t);let o={...e,buffers:s,modifiedPaths:l};return{buffers:s,modifiedPaths:l,...d(o)}})},setActiveGroup(t){e(e=>{if(t<0||t>=e.groups.length||t===e.activeGroupIdx)return e;let r={...e,activeGroupIdx:t};return{activeGroupIdx:t,...d(r)}})},splitToRight(t){e(e=>{var r,n,a,s;if(e.groups.length>=2)return e;let l=null!=(n=null!=t?t:null==(r=e.groups[e.activeGroupIdx])?void 0:r.activeTab)?n:null;if(l&&l===e.pinnedTab&&(l=null!=(s=null==(a=e.groups[e.activeGroupIdx])?void 0:a.tabs.find(t=>t!==e.pinnedTab))?s:null),!l||!e.buffers[l])return e;let o={id:c(),tabs:[l],activeTab:l},i=[e.groups[0],o],u={...e,groups:i,activeGroupIdx:1};return{groups:i,activeGroupIdx:1,...d(u)}})},closeGroup(r){let n=[];e(e=>{if(e.groups.length<=1||r<0||r>=e.groups.length)return e;let t=e.groups.filter((e,t)=>t!==r),a=new Set;for(let e of t)for(let t of e.tabs)a.add(t);let s={};for(let[t,r]of Object.entries(e.buffers))a.has(t)?s[t]=r:n.push(t);let l=new Set;for(let t of e.modifiedPaths)a.has(t)&&l.add(t);let o=Math.max(0,Math.min(e.activeGroupIdx,t.length-1)),i={...e,groups:t,activeGroupIdx:o,buffers:s,modifiedPaths:l};return{groups:t,activeGroupIdx:o,buffers:s,modifiedPaths:l,...d(i)}}),n.length>0&&o(t().modelPathPrefix,n)},moveTabToGroup(t,r,n,a){e(e=>{if(t===n){if(t<0||t>=e.groups.length)return e;let n=e.groups[t],s=n.tabs.indexOf(r);if(s<0)return e;let l=null==a?n.tabs.length-1:Math.max(0,Math.min(a,n.tabs.length-1));if(s===l)return e;let o=function(e,t,r){let n=[...e],[a]=n.splice(t,1);return n.splice(r,0,a),n}(n.tabs,s,l),i=e.groups.map((e,n)=>n===t?{...e,tabs:o,activeTab:r}:e),c={...e,groups:i};return{groups:i,...d(c)}}if(t<0||t>=e.groups.length||n<0||n>e.groups.length)return e;let s=e.groups[t];if(!s.tabs.includes(r))return e;let l=s.tabs.filter(e=>e!==r),o=s.activeTab;if(o===r){var i;o=null!=(i=l[Math.min(s.tabs.indexOf(r),l.length-1)])?i:null}let u=e.groups.slice();if(n===e.groups.length){if(e.groups.length>=2)return e;u[t]={...s,tabs:l,activeTab:o},u.push({id:c(),tabs:[r],activeTab:r})}else{let e=u[n],i=e.tabs.includes(r)?e.tabs:(()=>{let t=[...e.tabs];return null==a||a>=t.length?t.push(r):t.splice(Math.max(0,a),0,r),t})();u[t]={...s,tabs:l,activeTab:o},u[n]={...e,tabs:i,activeTab:r}}let m=n;0===u[t].tabs.length&&u.length>1&&(u=u.filter((e,r)=>r!==t),m=Math.max(0,Math.min(n>t?n-1:n,u.length-1)));let p={...e,groups:u,activeGroupIdx:m};return{groups:u,activeGroupIdx:m,...d(p)}})},setFileTree(t){e({fileTree:t})},setDirChildren(t,r){e(e=>{if(!e.fileTree)return e;let n=t.split("/").filter(Boolean),{root:a,node:s,depth:l}=m(e.fileTree,n);if(l<n.length)return e;let o=[...r].sort((e,t)=>e.type!==t.type?"directory"===e.type?-1:1:e.name.localeCompare(t.name));return s.children=o,s.hasChildren=o.length>0,{fileTree:a}})},markModified(t){e(e=>{let r=e.buffers[t];if(!r)return e;let n=new Set(e.modifiedPaths);n.add(t);let a={...e.buffers,[t]:{...r,modified:!0}},s={...e,buffers:a,modifiedPaths:n};return{buffers:a,modifiedPaths:n,...d(s)}})},clearModified(t){e(e=>{let r=e.buffers[t];if(!r)return e;let n=new Set(e.modifiedPaths);n.delete(t);let a={...e.buffers,[t]:{...r,modified:!1}},s={...e,buffers:a,modifiedPaths:n};return{buffers:a,modifiedPaths:n,...d(s)}})},markSaved(t,r){e(e=>{let n=e.buffers[t];if(!n)return e;let a=new Set(e.modifiedPaths);a.delete(t);let s={...e.buffers,[t]:{...n,originalContent:n.content,modified:!1,mtime:null!=r?r:n.mtime}},l={...e,buffers:s,modifiedPaths:a};return{buffers:s,modifiedPaths:a,...d(l)}})},setRejectedFile(t){e({rejectedFile:t})},setBottomTab(t){localStorage.setItem("halo_bottom_tab",t),e({bottomTab:t})},pendingTerminalCwd:null,requestTerminalSpawn(t){e({pendingTerminalCwd:t})},consumeTerminalSpawn(){let r=t().pendingTerminalCwd;return null!=r&&e({pendingTerminalCwd:null}),r},toggleMaximized(){e(e=>{let t=!e.maximized;return localStorage.setItem("halo_editor_maximized",String(t)),{maximized:t}})},setMaximized(t){localStorage.setItem("halo_editor_maximized",String(t)),e({maximized:t})},setBottomFloating(t){sessionStorage.setItem("halo_bottom_floating",String(t)),e({bottomFloating:t})},setBottomMaximized(t){localStorage.setItem("halo_bottom_maximized",String(t)),e({bottomMaximized:t})},requestReveal(t,r,n){e({pendingReveal:{path:t,line:r,column:n}})},clearReveal(){t().pendingReveal&&e({pendingReveal:null})},setBottomSplit(t){localStorage.setItem("halo_bottom_split",String(t)),e({bottomSplit:t})},setBottomFloatRect(t){sessionStorage.setItem("halo_bottom_float_rect",JSON.stringify(t)),e({bottomFloatRect:t})},insertFileNode(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"file";e(e=>{if(!e.fileTree)return e;let n=t.split("/").filter(Boolean);if(0===n.length)return e;let a=n.slice(0,-1),{root:s,node:l,depth:o}=m(e.fileTree,a);if(o<a.length||void 0===l.children)return void 0===l.children&&!0!==l.hasChildren?(l.hasChildren=!0,{fileTree:s}):e;let i=n[n.length-1];if(l.children.some(e=>e.name===i))return e;let c="directory"===r?{name:i,path:t,type:"directory",hasChildren:!1,children:[]}:{name:i,path:t,type:"file"};return l.children.push(c),l.children.sort((e,t)=>e.type!==t.type?"directory"===e.type?-1:1:e.name.localeCompare(t.name)),{fileTree:s}})},removeFileNode(t){e(e=>{if(!e.fileTree)return e;let r=t.split("/").filter(Boolean);if(0===r.length)return e;let n=r.slice(0,-1),{root:a,node:s,depth:l}=m(e.fileTree,n);if(l<n.length||!s.children)return e;let o=r[r.length-1],i=s.children.findIndex(e=>e.name===o);return -1===i?e:(s.children.splice(i,1),{fileTree:a})})},async checkAndRefresh(r,n,a){let s=t().buffers[r];if(!s||s.preview||s.mtime&&n<=s.mtime||s.modified)return!1;let l=await a();return e(e=>{var t,n;let a=e.buffers[r];if(!a||a.modified)return e;let s={...e.buffers,[r]:{...a,content:l.content,originalContent:l.content,mtime:l.modifiedAt,size:null!=(t=l.size)?t:a.size,createdAt:null!=(n=l.createdAt)?n:a.createdAt}},o={...e,buffers:s};return{buffers:s,...d(o)}}),!0},refreshPreview(t,r,n){e(e=>{let a=e.buffers[t];if(!(null==a?void 0:a.preview)||a.mtime&&r<=a.mtime)return e;let s={...e.buffers,[t]:{...a,mtime:r,size:n}};return{buffers:s,...d({...e,buffers:s})}})}}))}let h=p(),f=(0,n.createContext)(null);function x(e){let{children:t}=e,r=(0,n.useRef)(null);return r.current||(r.current=p()),(0,n.useEffect)(()=>{let e=r.current;return()=>{let t=e.getState();o(t.modelPathPrefix,Object.keys(t.buffers))}},[]),(0,n.createElement)(f.Provider,{value:r.current},t)}function g(){let e=(0,n.useContext)(f);return null!=e?e:h}},37050:(e,t,r)=>{"use strict";r.d(t,{IB:()=>d,NU:()=>i,no:()=>c});var n=r(41440),a=r(54604),s=r(48434),l=r(90302),o=r(17119);let i=(0,a.createContext)(null);function c(e){let{name:t,downloadUrl:r,onOpenAsText:c,extraToolbar:u,loading:m,error:p,hideHeader:h,children:f}=e,x=(0,o.kj)(),g=(0,a.useContext)(i);return(0,n.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,n.jsxs)("div",{className:"flex h-8 shrink-0 items-center gap-2 border-b border-[var(--border)] bg-[var(--card)] px-3".concat(h?" hidden":""),children:[(0,n.jsx)("span",{className:"truncate text-xs text-[var(--muted-foreground)]",children:t}),(0,n.jsx)("div",{className:"flex-1"}),u,g,c&&(0,n.jsxs)(d,{onClick:c,title:x("editor.openAsText"),children:[(0,n.jsx)(s.A,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:x("editor.openAsText")})]}),r&&(0,n.jsxs)("a",{href:r,download:!0,className:"flex items-center gap-1 rounded px-2 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",title:x("editor.download"),children:[(0,n.jsx)(l.A,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:x("editor.download")})]})]}),(0,n.jsx)("div",{className:"relative min-h-0 flex-1",children:p?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-red-400",children:p}):(0,n.jsxs)(n.Fragment,{children:[f,m&&(0,n.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-[var(--background)]/80 text-sm text-[var(--muted-foreground)]",children:"Loading preview..."})]})})]})}function d(e){let{onClick:t,title:r,children:a}=e;return(0,n.jsx)("button",{onClick:t,title:r,className:"flex items-center gap-1 rounded px-2 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:a})}},40909:(e,t,r)=>{"use strict";r.d(t,{$C:()=>l,Z1:()=>o,ZC:()=>i,cn:()=>s,fN:()=>c,fw:()=>d,sQ:()=>m,v7:()=>u});var n=r(59344),a=r(1623);function s(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,a.QP)((0,n.$)(t))}function l(){return Math.random().toString(36).substring(2,10)+Date.now().toString(36)}function o(e){return!!e&&!!(e.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(e)||e.startsWith("\\\\"))}function i(e,t){let r=window;return"function"==typeof r.haloPrompt?r.haloPrompt(e,t):Promise.resolve(window.prompt(e,t))}function c(e){let t=window;return"function"==typeof t.haloConfirm?t.haloConfirm(e):Promise.resolve(window.confirm(e))}function d(e,t){let r="number"==typeof e?e:new Date(e).getTime(),n=Math.floor((Date.now()-r)/6e4);if(n<1)return t?t("time.justNow"):"just now";if(n<60)return t?t("time.minutes",{n:n}):"".concat(n,"m ago");let a=Math.floor(n/60);if(a<24)return t?t("time.hours",{n:a}):"".concat(a,"h ago");let s=Math.floor(a/24);return s<30?t?t("time.days",{n:s}):"".concat(s,"d ago"):new Date(r).toLocaleDateString()}function u(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(1)," KB"):"".concat((e/1048576).toFixed(1)," MB")}function m(e){var t,r,n;return null!=(n=({ts:"typescript",tsx:"typescript",js:"javascript",jsx:"javascript",json:"json",md:"markdown",css:"css",html:"html",yaml:"yaml",yml:"yaml",py:"python",rs:"rust",go:"go",sh:"shell",bash:"shell",sql:"sql",toml:"toml",xml:"xml",svg:"xml",env:"plaintext",gitignore:"plaintext",dockerfile:"dockerfile"})[null!=(r=null==(t=e.split(".").pop())?void 0:t.toLowerCase())?r:""])?n:"plaintext"}},44652:(e,t,r)=>{Promise.resolve().then(r.bind(r,47333))},47333:(e,t,r)=>{"use strict";let n;r.r(t),r.d(t,{default:()=>d2});var a,s,l=r(41440),o=r(54604),i=r(2877),c=r(17640),d=r(29562),u=r(43672);class m{connect(e){if(!this.ws||this.ws.readyState!==WebSocket.OPEN&&this.ws.readyState!==WebSocket.CONNECTING){this.url=null!=e?e:this.getDefaultUrl(),this.intentionalClose=!1,this.connectStartedAt=Date.now(),this.startLiveness();try{let e=!1;this.ws=new WebSocket(this.url),this.ws.onopen=()=>{for(let t of(e=!0,this.reconnectDelay=1e3,this.lastReceiveTs=Date.now(),this.lastProbeTs=0,this.missedProbes=0,this.pendingQueue))this.ws.send(JSON.stringify(t));for(let[e,t]of(this.pendingQueue=[],this.pendingAcks))this.transmitChat(e,t);this.emit("_connected",{})},this.ws.onmessage=e=>{this.lastReceiveTs=Date.now();try{let t=JSON.parse(e.data),r=t.type;"chat:ack"===r&&this.resolveAck(t.clientMsgId),r&&this.emit(r,t)}catch(e){console.error("[WsClient] Failed to parse message:",e)}},this.ws.onclose=()=>{this.ws=null,this.emit("_disconnected",{}),this.intentionalClose||(e?this.reconnect():this.checkAuthThenReconnect())},this.ws.onerror=e=>{console.error("[WsClient] Error:",e)}}catch(e){console.error("[WsClient] Failed to connect:",e),this.reconnect()}}}disconnect(){for(let e of(this.intentionalClose=!0,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.stopLiveness(),this.pendingAcks.values()))e.ackTimer&&clearTimeout(e.ackTimer),clearTimeout(e.deadlineTimer);this.pendingAcks.clear(),this.ws&&(this.ws.close(),this.ws=null)}startLiveness(){this.stopLiveness(),this.livenessTimer=setInterval(()=>{if(!this.ws||this.intentionalClose)return;let e=this.ws.readyState;if(e===WebSocket.CONNECTING){if(Date.now()-this.connectStartedAt>1e4)try{this.ws.close()}catch(e){}return}if(e===WebSocket.CLOSING||e===WebSocket.CLOSED){this.ws=null,this.emit("_disconnected",{}),this.reconnect();return}if(this.lastProbeTs>0&&this.lastReceiveTs<this.lastProbeTs){if(this.missedProbes++,this.missedProbes>=2){try{this.ws.close()}catch(e){}return}}else this.missedProbes=0;try{this.ws.send(JSON.stringify({type:"__ping__"})),this.lastProbeTs=Date.now()}catch(e){try{this.ws.close()}catch(e){}}},15e3)}stopLiveness(){this.livenessTimer&&(clearInterval(this.livenessTimer),this.livenessTimer=null)}send(e){let{type:t,clientMsgId:r}=e;return"chat"===t&&r?void this.sendChat(r,e):this.ws&&this.ws.readyState===WebSocket.OPEN?void this.ws.send(JSON.stringify(e)):"__ping__"===t||"terminal:input"===t||"terminal:resize"===t?void 0:void(this.pendingQueue.length>=100&&this.pendingQueue.shift(),this.pendingQueue.push(e))}sendChat(e,t){if(this.pendingAcks.size>=100){let e=this.pendingAcks.keys().next().value;void 0!==e&&this.failPendingChat(e)}let r={message:t,attempts:0,ackTimer:null,deadlineTimer:setTimeout(()=>this.failPendingChat(e),12e4)};if(this.pendingAcks.set(e,r),this.ws&&this.ws.readyState===WebSocket.OPEN){if(Date.now()-this.lastReceiveTs>3e4){try{this.ws.close()}catch(e){}return}this.transmitChat(e,r)}}transmitChat(e,t){t.ackTimer&&(clearTimeout(t.ackTimer),t.ackTimer=null),t.attempts++;try{this.ws.send(JSON.stringify(t.message))}catch(e){try{var r;null==(r=this.ws)||r.close()}catch(e){}return}t.ackTimer=setTimeout(()=>{if((t.ackTimer=null,this.pendingAcks.has(e))&&!(t.attempts>=3))try{var r;null==(r=this.ws)||r.close()}catch(e){}},5e3)}failPendingChat(e){let t=this.pendingAcks.get(e);t&&(t.ackTimer&&clearTimeout(t.ackTimer),clearTimeout(t.deadlineTimer),this.pendingAcks.delete(e),this.emit("_chat_send_failed",{clientMsgId:e}))}resolveAck(e){if("string"!=typeof e)return;let t=this.pendingAcks.get(e);t&&(t.ackTimer&&clearTimeout(t.ackTimer),clearTimeout(t.deadlineTimer),this.pendingAcks.delete(e))}on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),()=>{let r=this.listeners.get(e);r&&(r.delete(t),0===r.size&&this.listeners.delete(e))}}get connected(){var e;return(null==(e=this.ws)?void 0:e.readyState)===WebSocket.OPEN}get lastReceiveAgeMs(){return 0===this.lastReceiveTs?1/0:Date.now()-this.lastReceiveTs}reconnectIfStale(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5e3;if(!this.ws)return void this.connect(this.url);if(0===e&&this.ws.readyState===WebSocket.CONNECTING){try{this.ws.close()}catch(e){}return}if(this.ws.readyState===WebSocket.OPEN&&!(Date.now()-this.lastReceiveTs<e))try{this.ws.close()}catch(e){}}emit(e,t){let r=this.listeners.get(e);r&&r.forEach(r=>{try{r(t)}catch(t){console.error('[WsClient] Error in handler for "'.concat(e,'":'),t)}})}reconnect(){this.reconnectTimer||(this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.reconnectDelay=Math.min(2*this.reconnectDelay,this.maxReconnectDelay),this.connect(this.url)},this.reconnectDelay))}async checkAuthThenReconnect(){try{let e=await fetch("/api/auth/check",{credentials:"include"});if(401===e.status){this.stopLiveness(),this.emit("_auth_expired",{});return}}catch(e){}this.intentionalClose||this.reconnect()}getDefaultUrl(){let e="https:"===window.location.protocol?"wss:":"ws:";return"".concat(e,"//").concat(window.location.host,"/ws")}constructor(){this.ws=null,this.listeners=new Map,this.reconnectTimer=null,this.reconnectDelay=1e3,this.maxReconnectDelay=3e4,this.url="",this.intentionalClose=!1,this.pendingQueue=[],this.pendingAcks=new Map,this.lastReceiveTs=0,this.lastProbeTs=0,this.missedProbes=0,this.connectStartedAt=0,this.livenessTimer=null}}let p=new m;function h(e,t){let r=e.connected;return e.on("_connected",()=>{if(!r){r=!0;return}t()})}function f(e,t){var r,n;return{name:null!=(n=null!=(r=t.root)?r:e.split("/").filter(Boolean).pop())?n:"root",path:"",type:"directory",hasChildren:t.tree.length>0,children:t.tree}}function x(e,t,r){return(0,u.NE)(2e4,r=>u.FH.files.tree(e,t,r),r)}function g(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d.Uw;x(e).then(r=>{t.getState().setFileTree(f(e,r))}).catch(e=>{console.error("[Explorer] Failed to load file tree:",e)})}async function v(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:d.Uw,n=arguments.length>3?arguments[3]:void 0,a=await x(e,t,n);r.getState().setDirChildren(t,a.tree)}var b=r(60252);let y={M:{letter:"M",color:"#1B81A8",label:"Modified"},A:{letter:"A",color:"#487E02",label:"Added"},D:{letter:"D",color:"#F48771",label:"Deleted"},R:{letter:"R",color:"#2090D3",label:"Renamed"},C:{letter:"C",color:"#2090D3",label:"Copied"},U:{letter:"C",color:"#E4676B",label:"Conflict"},"?":{letter:"U",color:"#487E02",label:"Untracked"}},w={letter:"?",color:"#487E02",label:"Untracked"};function j(e){var t;return null!=(t=y[e])?t:w}function k(e){return""!==e&&" "!==e&&"?"!==e}function N(e){return""!==e&&" "!==e}let S=[".halo/sessions/",".halo/logs/",".halo/halo.db"];function C(e,t,r,n){let a=(0,o.useRef)({fetch:t,apply:r,onError:n});(0,o.useEffect)(()=>{a.current={fetch:t,apply:r,onError:n}});let s=(0,o.useRef)(null);return(0,o.useEffect)(()=>{if(null===e)return;let t=function(e){let t=0,r=!1,n="none",a=null,s=0,l=!1,o=[],i=null;async function c(){if(a=null,r)return;if(document.hidden){l=!0;return}r=!0;let c=++t,m=o;o=[],i=new AbortController;try{let r=await (0,u.NE)(3e4,e.fetch,i.signal);c===t&&e.apply(r)}catch(r){c===t&&e.onError(r)}if(m.forEach(e=>e()),c===t&&(r=!1,s=Date.now(),"none"!==n)){let e="immediate"===n;n="none",d(e)}}function d(e){if(r)return void(e?n="immediate":"none"===n&&(n="delta"));if(e){a&&clearTimeout(a),c();return}a||(a=setTimeout(()=>{c()},Math.max(400,s+3e3-Date.now())))}let m=()=>{!document.hidden&&l&&(l=!1,c())};document.addEventListener("visibilitychange",m);let p=!1;return{request(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(p)return Promise.resolve();let t=new Promise(e=>o.push(e));return d(e),t},dispose(){p=!0,t++,null==i||i.abort(),a&&clearTimeout(a),a=null,document.removeEventListener("visibilitychange",m),o.forEach(e=>e()),o=[]}}}({fetch:e=>a.current.fetch(e),apply:e=>a.current.apply(e),onError:e=>a.current.onError(e)});s.current=t,t.request(!0);let r=p.on("file:changed",e=>{!function(e){let t=e.path;return"string"==typeof t&&S.some(e=>t.startsWith(e))}(e)&&t.request()}),n=h(p,()=>{t.request(!0)});return()=>{r(),n(),t.dispose(),s.current===t&&(s.current=null)}},[e]),(0,o.useCallback)(()=>{var e,t;return null!=(t=null==(e=s.current)?void 0:e.request(!0))?t:Promise.resolve()},[])}let A={files:new Map,dirs:new Map,ignored:new Set},I=(0,b.v)(e=>({byProject:{},repoStatus:{},setForProject:(t,r)=>e(e=>({byProject:{...e.byProject,[t]:r}})),clearProject:t=>e(e=>{if(!e.byProject[t])return e;let r={...e.byProject};return delete r[t],{byProject:r}}),setRepoStatus:(t,r)=>e(e=>e.repoStatus[t]===r?e:{repoStatus:{...e.repoStatus,[t]:r}}),clearRepoStatus:t=>e(e=>{if(!(t in e.repoStatus))return e;let r={...e.repoStatus};return delete r[t],{repoStatus:r}})}));var E=r(40909),T=r(17119),_=r(27322),P=r(54810),M=r(93396),F=r(19478),D=r(54718),L=r(70101),R=r(87212),H=r(65293),z=r(74262),O=r(58781),U=r(44607),B=r(14909),W=r(34996),K=r(5431),G=r(71311),q=r(60086),$=r(13743),Y=r(77470),J=r(2038),Z=r(94944),V=r(95342),X=r(58983),Q=r(28963),ee=r(42563),et=r(60768);let er={ts:z.A,tsx:z.A,mts:z.A,cts:z.A,js:z.A,jsx:z.A,mjs:z.A,cjs:z.A,json:O.A,jsonc:O.A,html:U.A,htm:U.A,svg:U.A,xml:U.A,css:B.A,scss:B.A,sass:B.A,less:B.A,md:W.A,mdx:W.A,txt:W.A,rst:W.A,log:W.A,csv:K.A,tsv:K.A,xlsx:K.A,xls:K.A,sql:G.A,sh:q.A,bash:q.A,zsh:q.A,yaml:$.A,yml:$.A,toml:$.A,ini:$.A,env:$.A,py:Y.A,go:J.A,rs:J.A,c:J.A,cpp:J.A,h:J.A,hpp:J.A,java:J.A,kt:J.A,scala:J.A,cs:J.A,swift:J.A,dart:J.A,rb:J.A,php:J.A,lua:J.A,r:J.A,png:Z.A,jpg:Z.A,jpeg:Z.A,gif:Z.A,webp:Z.A,bmp:Z.A,ico:Z.A,avif:Z.A,mp4:V.A,webm:V.A,mov:V.A,avi:V.A,mkv:V.A,ogg:V.A,mp3:X.A,wav:X.A,flac:X.A,aac:X.A,m4a:X.A,wma:X.A,zip:Q.A,tar:Q.A,gz:Q.A,"7z":Q.A,rar:Q.A,pdf:ee.A,docx:ee.A,doc:ee.A,pptx:ee.A,ppt:ee.A},en={ts:"text-blue-400",tsx:"text-blue-400",mts:"text-blue-400",cts:"text-blue-400",js:"text-yellow-400",jsx:"text-yellow-400",mjs:"text-yellow-400",cjs:"text-yellow-400",json:"text-yellow-300",jsonc:"text-yellow-300",html:"text-orange-400",htm:"text-orange-400",css:"text-blue-300",scss:"text-pink-400",sass:"text-pink-400",less:"text-blue-300",md:"text-sky-300",mdx:"text-sky-300",py:"text-green-400",go:"text-cyan-400",rs:"text-orange-400",java:"text-red-400",rb:"text-red-300",php:"text-indigo-300",sh:"text-green-300",bash:"text-green-300",svg:"text-orange-300",xml:"text-orange-300",yaml:"text-red-300",yml:"text-red-300",sql:"text-cyan-300",png:"text-purple-300",jpg:"text-purple-300",jpeg:"text-purple-300",gif:"text-purple-300",webp:"text-purple-300",avif:"text-purple-300",mp4:"text-pink-300",webm:"text-pink-300",mov:"text-pink-300",mp3:"text-emerald-300",wav:"text-emerald-300",flac:"text-emerald-300",pdf:"text-red-400",docx:"text-blue-400",doc:"text-blue-400",pptx:"text-orange-400",ppt:"text-orange-400",zip:"text-amber-400",tar:"text-amber-400",gz:"text-amber-400"};function ea(e){var t,r,n,a,s,l;let o=null!=(n=null==(t=e.split(".").pop())?void 0:t.toLowerCase())?n:"",i=null!=(a=null==(r=e.split("/").pop())?void 0:r.toLowerCase())?a:"";return"dockerfile"===i||i.startsWith("dockerfile.")?{Icon:q.A,color:"text-cyan-400"}:".gitignore"===i||".gitattributes"===i?{Icon:$.A,color:"text-[var(--muted-foreground)]"}:".env"===i||i.startsWith(".env.")?{Icon:$.A,color:"text-yellow-300"}:"makefile"===i||"cmake"===i?{Icon:q.A,color:"text-[var(--muted-foreground)]"}:{Icon:null!=(s=er[o])?s:et.A,color:null!=(l=en[o])?l:"text-[var(--muted-foreground)]"}}let es=new Map,el={extensions:[],disabled:[],errors:[]},eo=0,ei=new Set;function ec(){for(let e of(eo++,ei))e()}function ed(e){return ei.add(e),()=>{ei.delete(e)}}function eu(){return eo}function em(){return(0,o.useSyncExternalStore)(ed,eu,eu)}function ep(e){for(let t of e.extensions)es.set(t.toLowerCase(),e);ec()}function eh(e){var t;el={...e,disabled:null!=(t=e.disabled)?t:[]},ec()}let ef=null;function ex(){if(!ef){let e=u.FH.extensions.list().then(eh).catch(e=>{console.error("[PreviewRegistry] Failed to load extensions:",e)});ef=Promise.race([e,new Promise(t=>{let r=setTimeout(()=>{console.warn("[PreviewRegistry] Extension list not back after ".concat(3e3,"ms, opening files without it")),t()},3e3);e.finally(()=>clearTimeout(r))})])}return ef}function eg(){return el}function ev(e){return e.toLowerCase().replace(/^\./,"")}let eb=null;function ey(){var e;return eb?eb:"undefined"==typeof navigator?"web":eb=(e=navigator.userAgent).includes("Electron/")?/Macintosh|Mac OS X/.test(e)?"desktop-mac":e.includes("Windows")?"desktop-win":"desktop-linux":"web"}function ew(e,t){return e.map(e=>t("extensions.platform.".concat(e))).join(t("extensions.platform.sep"))}function ej(e){return!e.platforms||e.platforms.includes(ey())}function ek(e,t,r){return!!e.bundle===r&&e.extensions.includes(".".concat(t))}function eN(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return el.extensions.filter(n=>n.priority===t&&ek(n,e,r)&&ej(n)).sort((e,t)=>t.installedAt-e.installedAt).map(e=>({kind:"extension",info:e}))}function eS(e){let t=ev(e),r=eN(t,"default"),n=es.get(t);return n&&r.push({kind:"builtin",plugin:n}),r.push(...eN(t,"option")),r.push({kind:"text"}),r}function eC(e){let t=ev(e);return[...eN(t,"default",!0),...eN(t,"option",!0),{kind:"text"}]}function eA(e){let t=e.lastIndexOf(".");return!(t<=0)&&eN(ev(e.slice(t+1)),"default",!0).length>0}function eI(e){switch(e.kind){case"extension":return"extension:".concat(e.info.id);case"builtin":return"builtin:".concat(e.plugin.id);case"text":return"text"}}function eE(e){return"text"!==eS(e)[0].kind}let eT="halo:file-tree:expanded",e_=null,eP=new Map;function eM(){if(e_)return e_;try{let e=localStorage.getItem(eT);e_=e?new Set(JSON.parse(e)):new Set}catch(e){e_=new Set}return e_}let eF=null;function eD(){eF&&clearTimeout(eF),eF=setTimeout(()=>{try{let e=eM();localStorage.setItem(eT,JSON.stringify([...e]))}catch(e){}},300)}function eL(e,t){let r=eM(),n=r.has(e);if(t?r.add(e):r.delete(e),eD(),n!==t){let r=eP.get(e);if(r)for(let e of r)e(t)}}function eR(){let e=eM();if(0===e.size)return;let t=[...e];for(let r of(e.clear(),eD(),t)){let e=eP.get(r);if(e)for(let t of e)t(!1)}}function eH(e){return eM().has(e)}function ez(e){try{let t=JSON.parse(e);if(Array.isArray(t))return t}catch(e){}return[e]}let eO="application/x-halo-path";function eU(e){let{depth:t,initialValue:r,iconKind:n,onCommit:a,onCancel:s}=e,i=(0,o.useRef)(null),[c,d]=(0,o.useState)(r),u=(0,o.useRef)(!1);(0,o.useEffect)(()=>{let e=i.current;if(!e)return;e.focus();let t=r.lastIndexOf(".");"file"===n&&t>0?e.setSelectionRange(0,t):e.select()},[r,n]);let m="folder"===n?_.A:P.A;return(0,l.jsxs)("div",{className:"flex w-full items-center gap-1 py-1 text-xs",style:{paddingLeft:"".concat(12*t+8,"px")},children:[(0,l.jsx)("span",{className:"w-3.5 shrink-0"}),(0,l.jsx)(m,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0","folder"===n?"text-blue-400":"fill-[var(--muted-foreground)] text-[var(--muted-foreground)]")}),(0,l.jsx)("input",{ref:i,type:"text",value:c,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),u.current=!0,a(c)):"Escape"===e.key&&(e.preventDefault(),u.current=!0,s()),e.stopPropagation()},onBlur:()=>{u.current||(""===c.trim()?s():a(c))},className:"min-w-0 flex-1 rounded border border-[var(--primary)] bg-[var(--background)] px-1 py-0 text-xs text-[var(--foreground)] outline-none"})]})}async function eB(e){let t=e.items;if(t&&t.length>0){let e=[];for(let a=0;a<t.length;a++){var r,n;let s=null==(r=(n=t[a]).webkitGetAsEntry)?void 0:r.call(n);s&&e.push(s)}if(e.some(e=>e.isDirectory)){let t=[];async function a(e,r){if(e.isFile){let n=await new Promise((t,r)=>e.file(t,r)),a=r?"".concat(r,"/").concat(e.name):e.name;t.push(new File([n],a,{type:n.type,lastModified:n.lastModified}))}else if(e.isDirectory){let t,n=e.createReader(),s=r?"".concat(r,"/").concat(e.name):e.name;do for(let e of t=await function(e){return new Promise((t,r)=>e.readEntries(t,r))}(n))await a(e,s);while(t.length>0)}}for(let t of e)await a(t,"");return t}}return Array.from(e.files)}function eW(e,t){return e.type!==t.type?"directory"===e.type?-1:1:e.name.localeCompare(t.name)}function eK(e){let t=[];if(e.path&&t.push(e.path),"directory"===e.type&&e.children&&(!e.path||eH(e.path))){var r;for(let n of[...null!=(r=e.children)?r:[]].sort(eW))t.push(...eK(n))}return t}function eG(e){var t,r,n;let{node:a,projectId:s,onSelect:i,onContextMenu:c,onDropFiles:u,onMoveFile:m,selectedPaths:h,onSelectionChange:f,lastAnchor:x,visiblePaths:g,depth:b,pendingEdit:y,onCommitEdit:w,onCancelEdit:k}=e,N=(0,d._r)(),S=(0,T.kj)(),[C,z]=(0,o.useState)(()=>!!a.path&&eH(a.path)),[O,U]=(0,o.useState)(!1),[B,W]=(0,o.useState)("idle"),[K,G]=(0,o.useState)(null),q=(0,o.useRef)(null),$=(0,o.useRef)(null),Y=(0,o.useRef)(0),J=(0,o.useRef)(null),Z=(0,o.useRef)(null),V="directory"===a.type;em();let X=V&&eA(a.name),Q=V&&!1!==a.hasChildren&&void 0===a.children,ee=(0,o.useRef)(C),et=(0,o.useCallback)(e=>{z(e),a.path&&eL(a.path,e)},[a.path]);(0,o.useEffect)(()=>{if(a.path){var e,t;let r;return e=a.path,t=e=>z(e),(r=eP.get(e))||(r=new Set,eP.set(e,r)),r.add(t),()=>{let r=eP.get(e);r&&(r.delete(t),0===r.size&&eP.delete(e))}}},[a.path]);let er=(0,o.useCallback)(()=>{let e=q.current;q.current=null,null==e||e.abort(),$.current&&clearTimeout($.current),$.current=null},[]),en=(0,o.useCallback)(function e(){if(!a.path)return;er();let t=new AbortController;q.current=t,W("loading"),v(s,a.path,N,t.signal).then(()=>{q.current===t&&(q.current=null,Y.current=0,G(null),W("idle"))},r=>{if(q.current!==t)return;q.current=null;let n=++Y.current;console.error("[Explorer] Failed to load directory:",a.path,r),G(r instanceof Error?r.message:String(r)),W("error"),n<=5&&($.current=setTimeout(e,Math.min(2e3*2**(n-1),3e4)))})},[a.path,s,N,er]),es=(0,o.useCallback)(()=>{Y.current=0,en()},[en]);(0,o.useEffect)(()=>{let e=ee.current;if(ee.current=C,a.path){if(!C){er(),Y.current=0,W("idle");return}(!e||Q&&"idle"===B)&&en()}},[C,Q,B,a.path,er,en]),(0,o.useEffect)(()=>er,[er]),(0,o.useEffect)(()=>{if("idle"===B)return;let e="loading"===B&&p.lastReceiveAgeMs===1/0;return p.on("_connected",()=>{if(e){e=!1;return}es()})},[B,es]);let el=N(e=>e.modifiedPaths),eo=N(e=>e.activeTab),ei=I(e=>{var t;return null!=(t=s?e.byProject[s]:void 0)?t:A}),ec=0===b&&!a.path,ed=(0,o.useMemo)(()=>ec?eK(a):void 0,[ec,a]),eu=(e,t,r)=>{var n;return(0,l.jsxs)(l.Fragment,{children:[e&&y&&(0,l.jsx)(eU,{depth:t,initialValue:"",iconKind:"create-folder"===y.mode?"folder":"file",onCommit:e=>null==w?void 0:w(e),onCancel:()=>null==k?void 0:k()}),(null!=(n=a.children)?n:[]).sort(eW).map(e=>(0,l.jsx)(eG,{node:e,projectId:s,onSelect:i,onContextMenu:c,onDropFiles:u,onMoveFile:m,selectedPaths:h,onSelectionChange:f,lastAnchor:x,visiblePaths:r,depth:t,pendingEdit:y,onCommitEdit:w,onCancelEdit:k},e.path))]})};if(ec){let e=async e=>{e.preventDefault(),e.stopPropagation(),U(!1);let t=e.dataTransfer.getData(eO);if(t){for(let e of ez(t))null==m||m(e,"");return}let r=await eB(e.dataTransfer);r.length>0&&(null==u||u(r,""))},t=y&&""===y.parentDir&&"rename"!==y.mode;return(0,l.jsx)("div",{onClick:e=>{e.target===e.currentTarget&&f&&f(new Set,"")},onContextMenu:e=>{e.target===e.currentTarget&&(e.preventDefault(),null==c||c({x:e.clientX,y:e.clientY,path:"",name:"/",isDir:!0}))},onDragOver:e=>{(e.dataTransfer.types.includes("Files")||e.dataTransfer.types.includes(eO))&&(e.preventDefault(),e.stopPropagation(),U(!0))},onDragLeave:e=>{e.currentTarget===e.target&&U(!1)},onDrop:e,className:(0,E.cn)("min-h-full",O&&"bg-[var(--accent)]/30"),children:eu(!!t,0,ed)})}let ep=el.has(a.path),eh=eo===a.path,ef=null!=(r=null==h?void 0:h.has(a.path))&&r,ex=eh&&!(null==h?void 0:h.size),{Icon:eg,color:ev}=ea(a.path),eb=V?ei.dirs.get(a.path):ei.files.get(a.path),ey=eb&&"*"!==eb?j(eb):null,ew="*"===eb?"#8C8C8C":null==ey?void 0:ey.color,ej=!eb&&function(e,t){if(0===e.size)return!1;if(e.has(t))return!0;for(let r of e)if(t.startsWith(r+"/"))return!0;return!1}(ei.ignored,a.path),ek=()=>{Z.current&&(clearTimeout(Z.current),Z.current=null)},eN=async e=>{if(!V)return;e.preventDefault(),e.stopPropagation(),U(!1),ek(),C||et(!0);let t=e.dataTransfer.getData(eO);if(t){for(let e of ez(t))e===a.path||e.startsWith(a.path+"/")||null==m||m(e,a.path);return}let r=await eB(e.dataTransfer);r.length>0&&(null==u||u(r,a.path))},eS=V&&(null==(t=a.children)?void 0:t.some(e=>{let t=e=>{var r,n;return!!el.has(e.path)||null!=(n=null==(r=e.children)?void 0:r.some(t))&&n};return t(e)})),eC=y&&"rename"===y.mode&&y.originalPath===a.path,eI=y&&"rename"!==y.mode&&y.parentDir===a.path&&V;return eC&&y?(0,l.jsx)(eU,{depth:b,initialValue:null!=(n=y.originalName)?n:a.name,iconKind:V?"folder":"file",onCommit:e=>null==w?void 0:w(e),onCancel:()=>null==k?void 0:k()}):(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{draggable:!0,"data-path":a.path,onClick:e=>{if(e.stopPropagation(),V&&!X&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey){f&&f(new Set([a.path]),a.path),et(!C);return}if(e.shiftKey&&f&&g&&x){let e=g.indexOf(x),t=g.indexOf(a.path);if(e>=0&&t>=0){let r=Math.min(e,t),n=Math.max(e,t);f(new Set(g.slice(r,n+1)),x)}return}if((e.ctrlKey||e.metaKey)&&f){let e=new Set(h);e.has(a.path)?e.delete(a.path):e.add(a.path),f(e,a.path);return}(!V||X)&&(f&&f(new Set([a.path]),a.path),J.current&&clearTimeout(J.current),J.current=setTimeout(()=>{J.current=null,i(a.path,X?{bundle:!0}:void 0)},300))},onDoubleClick:e=>{e.stopPropagation(),J.current&&(clearTimeout(J.current),J.current=null),V&&!X?et(!C):i(a.path,X?{bundle:!0}:void 0)},onDragStart:e=>{h&&h.size>1&&h.has(a.path)?e.dataTransfer.setData(eO,JSON.stringify([...h])):e.dataTransfer.setData(eO,JSON.stringify([a.path])),e.dataTransfer.effectAllowed="move"},onContextMenu:e=>{e.preventDefault(),e.stopPropagation(),!ef&&f&&f(new Set([a.path]),a.path),null==c||c({x:e.clientX,y:e.clientY,path:a.path,name:a.name,isDir:V})},onDragOver:e=>{V&&(e.dataTransfer.types.includes("Files")||e.dataTransfer.types.includes(eO))&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move",U(!0),C||Z.current||(Z.current=setTimeout(()=>{Z.current=null,et(!0)},600)))},onDragLeave:()=>{U(!1),ek()},onDrop:eN,className:(0,E.cn)("flex w-full items-center gap-1 py-1 text-left text-xs transition-colors",ef&&"bg-[var(--primary)]/20 text-[var(--foreground)]",!ef&&"hover:bg-[var(--secondary)]",!ef&&ex&&"bg-[var(--accent)] text-[var(--accent-foreground)]",!ef&&!ex&&"text-[var(--foreground)]",O&&V&&"bg-[var(--accent)] ring-1 ring-[var(--primary)]"),style:{paddingLeft:"".concat(12*b+8,"px")},children:[V&&(0,l.jsx)("span",{className:(0,E.cn)("shrink-0 text-[var(--muted-foreground)]",X&&"rounded hover:bg-[var(--accent)] hover:text-[var(--foreground)]"),onClick:e=>{X&&(e.stopPropagation(),et(!C))},onDoubleClick:X?e=>e.stopPropagation():void 0,children:C?(0,l.jsx)(M.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(F.A,{className:"h-3.5 w-3.5"})}),!V&&(0,l.jsx)("span",{className:"w-3.5 shrink-0"}),X?(0,l.jsx)(D.A,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0 text-violet-400",ej&&"opacity-60")}):V?C?(0,l.jsx)(L.A,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0 text-blue-400",ej&&"opacity-60")}):(0,l.jsx)(_.A,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0 text-blue-400",ej&&"opacity-60")}):(0,l.jsx)(eg,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",ev,ej&&"opacity-60")}),(0,l.jsx)("span",{className:(0,E.cn)("truncate",ej&&"text-[var(--muted-foreground)] opacity-60"),style:ew?{color:ew}:void 0,children:a.name}),(0,l.jsxs)("span",{className:"ml-auto flex shrink-0 items-center gap-1 pl-1 pr-2",children:[(ep||eS)&&(0,l.jsx)(P.A,{className:"h-1.5 w-1.5 shrink-0 fill-amber-400 text-amber-400"}),V?ew&&(0,l.jsx)(P.A,{className:"h-1.5 w-1.5 shrink-0",style:{fill:ew,color:ew}}):ey&&(0,l.jsx)("span",{className:"w-3 text-center font-mono text-[11px] font-semibold",style:{color:ey.color},title:ey.label,children:ey.letter})]})]}),V&&C&&"loading"===B&&!a.children&&(0,l.jsxs)("div",{className:"flex items-center gap-1.5 py-1 text-[10px] text-[var(--muted-foreground)]",style:{paddingLeft:"".concat((b+1)*12+8,"px")},children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),(0,l.jsx)("span",{children:"Loading..."})]}),V&&C&&"error"===B&&(0,l.jsxs)("div",{className:"flex items-center gap-1.5 py-1 text-[10px] text-[var(--muted-foreground)]",style:{paddingLeft:"".concat((b+1)*12+8,"px")},title:null!=K?K:void 0,children:[(0,l.jsx)(H.A,{className:"h-3 w-3 shrink-0 text-red-400"}),(0,l.jsx)("span",{children:S("explorer.tree.loadFailed")}),(0,l.jsx)("span",{children:"\xb7"}),(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),es()},className:"text-[var(--primary)] hover:underline",children:S("explorer.tree.retry")})]}),V&&C&&(a.children||eI)&&(0,l.jsx)("div",{children:eu(!!eI,b+1,g)})]})}var eq=r(80151),e$=r(66731),eY=r(877),eJ=r(94665),eZ=r(90302),eV=r(11943),eX=r(19127);function eQ(e){let{x:t,y:r,path:n,name:a,isDir:s,selectedCount:i,onAction:c,onClose:d}=e,u=(0,o.useRef)(null),[m,p]=(0,o.useState)({x:t,y:r});(0,o.useEffect)(()=>{function e(e){u.current&&!u.current.contains(e.target)&&d()}function t(e){"Escape"===e.key&&d()}return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[d]),(0,o.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let n=e.getBoundingClientRect(),a=window.innerWidth,s=window.innerHeight,l=t+n.width+4>a?Math.max(4,a-n.width-4):t,o=r+n.height+4>s?Math.max(4,s-n.height-4):r;(l!==m.x||o!==m.y)&&p({x:l,y:o})},[t,r,m.x,m.y]);let h={position:"fixed",left:m.x,top:m.y,zIndex:9999};if(void 0!==i&&i>1)return(0,l.jsxs)("div",{ref:u,style:h,className:"min-w-[140px] rounded-md border border-[var(--border)] bg-[var(--card)] py-1 shadow-lg",children:[(0,l.jsxs)("div",{className:"truncate border-b border-[var(--border)] px-3 py-1.5 text-[10px] text-[var(--muted-foreground)]",children:[i," items selected"]}),(0,l.jsxs)("button",{onClick:()=>{c({type:"delete",path:n,isDir:s}),d()},className:"flex w-full items-center gap-2 px-3 py-1.5 text-xs text-red-400 transition-colors hover:bg-[var(--secondary)] hover:text-red-300",children:[(0,l.jsx)(eq.A,{className:"h-3.5 w-3.5"}),"Delete ",i," items"]})]});let f=""===n&&s,x=!!window.haloReveal,g=f?[{icon:e$.A,label:"New File...",type:"new-file"},{icon:eY.A,label:"New Folder...",type:"new-folder"},{icon:q.A,label:"Open in Integrated Terminal",type:"open-terminal"},...x?[{icon:eJ.A,label:"Reveal in File Manager",type:"reveal-in-file-manager"}]:[],{icon:eZ.A,label:"Download",type:"download"}]:[{icon:e$.A,label:"New File...",type:"new-file",separatorAfter:!1},{icon:eY.A,label:"New Folder...",type:"new-folder",separatorAfter:!1},{icon:q.A,label:"Open in Integrated Terminal",type:"open-terminal",separatorAfter:!x},...x?[{icon:eJ.A,label:"Reveal in File Manager",type:"reveal-in-file-manager",separatorAfter:!0}]:[],...s?[...eA(a)?[{icon:eV.A,label:"Open to the Side",type:"open-to-side"}]:[],{icon:eZ.A,label:"Download",type:"download"}]:[{icon:eV.A,label:"Open to the Side",type:"open-to-side",separatorAfter:!1},{icon:eZ.A,label:"Download",type:"download"}],{icon:eX.A,label:"Rename",type:"rename"},{icon:eq.A,label:"Delete",type:"delete",danger:!0,separatorAfter:s},...s?[{icon:L.A,label:"Open as Workspace",type:"open-as-workspace"}]:[]];return(0,l.jsxs)("div",{ref:u,style:h,className:"min-w-[140px] rounded-md border border-[var(--border)] bg-[var(--card)] py-1 shadow-lg",children:[(0,l.jsx)("div",{className:"truncate border-b border-[var(--border)] px-3 py-1.5 text-[10px] text-[var(--muted-foreground)]",children:a}),g.map(e=>{let t=e.icon;return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{onClick:()=>{c({type:e.type,path:n,isDir:s}),d()},className:"flex w-full items-center gap-2 px-3 py-1.5 text-xs transition-colors hover:bg-[var(--secondary)] ".concat(e.danger?"text-red-400 hover:text-red-300":"text-[var(--foreground)]"),children:[(0,l.jsx)(t,{className:"h-3.5 w-3.5"}),e.label]}),e.separatorAfter&&(0,l.jsx)("div",{className:"my-1 border-t border-[var(--border)]"})]},e.type)})]})}var e0=r(97558);let e1=["node_modules",".git"];function e3(e){var t,r,n;let{path:a,projectId:s,onClose:i}=e,c=(0,T.kj)(),[d,m]=(0,o.useState)(!1),p="".concat(s,"\n").concat(a,"\n").concat(d),[h,f]=(0,o.useState)(null),x=(null==h?void 0:h.key)===p?h.result:null,g=(null==x?void 0:x.ok)===!0,v=(0,o.useRef)(null),b=(0,o.useRef)(null),y=a.split("/").pop()||s.split(/[\\/]/).filter(Boolean).pop()||c("explorer.download.workspace");(0,o.useEffect)(()=>{let e=new AbortController;return u.FH.files.downloadFolderEstimate(a,s,d,e.signal).then(t=>{e.signal.aborted||f({key:p,result:t})}).catch(t=>{e.signal.aborted||f({key:p,result:{ok:!1,status:0,message:t instanceof Error?t.message:String(t)}})}),()=>e.abort()},[p,a,s,d]),(0,o.useEffect)(()=>{let e=e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),i())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[i]),(0,o.useEffect)(()=>{var e;if(!g)return;let t=document.activeElement;t&&t!==document.body&&t!==v.current||null==(e=b.current)||e.focus()},[g]);let w=(null==x?void 0:x.ok)?x.ignoredNames:{},j=e1.filter(e=>w[e]).map(e=>"".concat(e," (").concat(w[e],")")),k=Object.entries(w).filter(e=>{let[t]=e;return!e1.includes(t)}).reduce((e,t)=>{let[,r]=t;return e+r},0);k>0&&j.push(c("explorer.download.otherFolders",{n:k}));let N=(null==x?void 0:x.ok)&&null!=(t=x.excluded.blocked)?t:0,S=(null==x?void 0:x.ok)?(null!=(r=x.excluded.symlink)?r:0)+(null!=(n=x.excluded.unreadable)?n:0):0;return(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:i,children:(0,l.jsxs)("div",{role:"dialog","aria-label":c("explorer.download.title",{name:y}),className:"w-[420px] rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-2.5",children:[(0,l.jsx)("h3",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:c("explorer.download.title",{name:y})}),(0,l.jsx)("button",{onClick:i,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-3 px-4 py-4 text-xs",children:[x?x.ok?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("p",{"data-testid":"download-folder-summary",className:"text-sm text-[var(--foreground)]",children:["≈ ",(0,E.v7)(x.bytes)," \xb7 ",c(1===x.files?"explorer.download.file":"explorer.download.files",{n:x.files.toLocaleString()})]}),(j.length>0||N>0||S>0)&&(0,l.jsxs)("ul",{className:"flex flex-col gap-1 text-[var(--muted-foreground)]",children:[j.length>0&&(0,l.jsx)("li",{children:c("explorer.download.excludedDefault",{list:j.join(", ")})}),N>0&&(0,l.jsx)("li",{children:c("explorer.download.excludedBlocked",{n:N})}),S>0&&(0,l.jsx)("li",{children:c("explorer.download.excludedSkipped",{n:S})})]})]}):(0,l.jsx)("p",{"data-testid":"download-folder-error",className:"text-red-400",children:x.message}):(0,l.jsxs)("p",{className:"flex items-center gap-2 text-[var(--muted-foreground)]",children:[(0,l.jsx)(R.A,{className:"h-3.5 w-3.5 animate-spin"}),c("explorer.download.estimating")]}),(0,l.jsxs)("label",{className:"flex items-center gap-2 text-[var(--foreground)]",children:[(0,l.jsx)("input",{type:"checkbox",checked:d,onChange:e=>m(e.target.checked)}),c("explorer.download.include")]})]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-3 py-2.5",children:[(0,l.jsx)("button",{ref:v,autoFocus:!0,onClick:i,className:"rounded px-3 py-1 text-xs font-medium text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:c("explorer.download.cancel")}),(0,l.jsxs)("button",{ref:b,onClick:function(){let e=document.createElement("a");e.href=u.FH.files.downloadFolderUrl(a,s,d),e.download="",document.body.appendChild(e),e.click(),e.remove(),i()},disabled:!g,className:"flex items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:[(0,l.jsx)(eZ.A,{className:"h-3.5 w-3.5"}),c("explorer.download.confirm")]})]})]})})}var e2=r(56207);e2.wG.config({paths:{vs:"/monaco/vs"}});var e5=r(58321);let e4={dark:"vs-dark",light:"vs",midnight:"halo-midnight",warm:"halo-warm"},e8=!1;function e6(e){e8||(e8=!0,e.editor.defineTheme("halo-midnight",{base:"vs-dark",inherit:!0,rules:[],colors:{"editor.background":"#0b1220","editor.foreground":"#dbe4f3","editor.lineHighlightBackground":"#111a2e","editorLineNumber.foreground":"#3d4f78"}}),e.editor.defineTheme("halo-warm",{base:"vs",inherit:!0,rules:[],colors:{"editor.background":"#f6f1e7","editor.foreground":"#3d3427","editor.lineHighlightBackground":"#efe7d8","editorLineNumber.foreground":"#a89878"}}))}function e9(e){let{path:t,content:r,language:n,onChange:a,onSave:s,onClose:i,readOnly:c,reveal:u,onRevealed:m}=e,p=(0,T.kj)(),h=(0,d._r)(),f=(0,o.useRef)(null),{theme:x}=(0,e5.useTheme)(),g=(0,o.useRef)(u),v=(0,o.useRef)(m),b=(0,o.useCallback)(()=>{var e,t;let r=f.current,n=g.current;r&&n&&(r.layout(),r.revealLineInCenter(n.line),r.setPosition({lineNumber:n.line,column:null!=(t=n.column)?t:1}),r.focus(),null==(e=v.current)||e.call(v))},[]);(0,o.useEffect)(()=>{g.current=u,v.current=m,b()},[u,m,t,b]);let y=(0,o.useRef)(s),w=(0,o.useRef)(i),j=(0,o.useRef)(r);(0,o.useEffect)(()=>{y.current=s,w.current=i,j.current=r},[s,i,r]),(0,o.useEffect)(()=>()=>{h.getState().setSelectedText(null,null)},[t]);let k=(0,o.useRef)(null),N=(0,o.useCallback)(e=>{var r;let n=null==(r=f.current)?void 0:r.getModel();n&&k.current&&n.uri.toString()!==k.current.Uri.parse(t).toString()||void 0!==e&&a&&a(e)},[a,t]),S=(0,o.useCallback)((e,t)=>{f.current=e,k.current=t;let r=e.getModel();r&&r.getValue()!==j.current&&r.setValue(j.current),e.onDidChangeCursorSelection(t=>{var r,n;let a=e.getSelection();if(!a||a.isEmpty())return void h.getState().setSelectedText(null,null);let s=null!=(n=null==(r=e.getModel())?void 0:r.getValueInRange(a))?n:null;s&&h.getState().setSelectedText(s,{startLine:a.startLineNumber,endLine:a.endLineNumber})}),e.addAction({id:"halo-save",label:"Save File",keybindings:[t.KeyMod.CtrlCmd|t.KeyCode.KeyS],run:()=>{var e;null==(e=y.current)||e.call(y)}}),e.addAction({id:"halo-close-tab",label:"Close Tab",keybindings:[t.KeyMod.Alt|t.KeyCode.KeyW],run:()=>{var e;null==(e=w.current)||e.call(w)}}),b()},[b]);return(0,l.jsx)(e2.Ay,{path:t,keepCurrentModel:!0,height:"100%",language:n,value:r,onChange:N,beforeMount:e6,onMount:S,theme:e4[x],options:{fontSize:13,lineHeight:20,fontFamily:"'JetBrains Mono', 'Fira Code', 'Cascadia Code', Menlo, Monaco, monospace",minimap:{enabled:!1},scrollBeyondLastLine:!1,wordWrap:"on",tabSize:2,renderLineHighlight:"line",cursorBlinking:"smooth",smoothScrolling:!0,padding:{top:12,bottom:12},bracketPairColorization:{enabled:!0},automaticLayout:!0,readOnly:!!c,readOnlyMessage:{value:p("pathLink.readOnly")},overviewRulerLanes:0,hideCursorInOverviewRuler:!0,overviewRulerBorder:!1,scrollbar:{verticalScrollbarSize:6,horizontalScrollbarSize:6}},loading:(0,l.jsx)("div",{className:"flex h-full items-center justify-center bg-[var(--background)]",children:(0,l.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading editor..."})})})}var e7=r(10691),te=r(76633),tt=r(5659),tr=r(28965),tn=r(79906);function ta(e){let t=null==e?void 0:e.children[0];if((null==t?void 0:t.type)!=="element"||"code"!==t.tagName)return null;let r=t.properties.className;return Array.isArray(r)&&r.includes("language-mermaid")?t.children.map(e=>"text"===e.type?e.value:"").join("").replace(/\n$/,""):null}let ts=null,tl=null,to=0;async function ti(e,t){null!=ts||(ts=Promise.all([r.e(5129),r.e(5712),r.e(9104)]).then(r.bind(r,73884)).then(e=>e.default));let n=await ts;tl!==t&&(n.initialize({startOnLoad:!1,securityLevel:"strict",suppressErrorRendering:!0,theme:t}),tl=t);let{svg:a}=await n.render("halo-mermaid-".concat(++to),e);return a}function tc(e){var t;let{source:r,fallback:n}=e,a=(0,T.kj)(),s="light"===(t=(0,e5.useTheme)().theme)||"warm"===t?"default":"dark",[i,c]=(0,o.useState)(null);return((0,o.useEffect)(()=>{let e=!1;return ti(r,s).then(t=>{e||c({svg:t})},t=>{e||c({error:t instanceof Error?t.message:String(t)})}),()=>{e=!0}},[r,s]),null==i?void 0:i.svg)?(0,l.jsx)("div",{"data-mermaid":"",className:"not-prose my-2 overflow-x-auto [&>svg]:max-w-full",dangerouslySetInnerHTML:{__html:i.svg}}):(0,l.jsxs)(l.Fragment,{children:[n,(null==i?void 0:i.error)&&(0,l.jsx)("div",{title:i.error,className:"not-prose -mt-1 mb-2 truncate text-[10px] text-[var(--destructive)]",children:a("mermaid.renderFailed",{error:i.error.split("\n")[0]})})]})}function td(e){let{node:t,...r}=e,n=ta(t);return null===n?(0,l.jsx)("pre",{...r}):(0,l.jsx)(tc,{source:n,fallback:(0,l.jsx)("pre",{...r})})}function tu(e){let{content:t,filePath:r,projectId:n}=e,a=(0,T.kj)(),s=(0,d._r)(),i=(0,o.useRef)(null),c=(0,o.useMemo)(()=>(function(e){let t=[],r=new Map,n=!1;for(let s of e.split("\n")){var a;let e=s.trimEnd();if(/^\s*(```|~~~)/.test(e)){n=!n;continue}if(n)continue;let l=/^(#{1,6})\s+(.+?)\s*#*$/.exec(e);if(!l)continue;let o=l[1].length,i=l[2].trim(),c=i.trim().toLowerCase().replace(/[^\w一-鿿\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"section",d=null!=(a=r.get(c))?a:0;r.set(c,d+1),d>0&&(c="".concat(c,"-").concat(d)),t.push({level:o,text:i,slug:c})}return t})(t),[t]),u=0,m=e=>{let t=i.current;if(!t)return;let r=t.querySelector("#".concat(CSS.escape(e)));r&&r.scrollIntoView({behavior:"smooth",block:"start"})},[p,h]=(0,o.useState)(()=>{try{return"1"===localStorage.getItem("halo.mdOutlineHidden")}catch(e){return!1}}),f=()=>{h(e=>{let t=!e;try{localStorage.setItem("halo.mdOutlineHidden",t?"1":"0")}catch(e){}return t})};(0,o.useEffect)(()=>{let e=i.current;if(!e)return;let t=s.getState().setSelectedText;function r(){let r=window.getSelection();if(!r||0===r.rangeCount)return;let n=r.getRangeAt(0);if(!(e&&e.contains(n.commonAncestorContainer)))return;if(r.isCollapsed)return void t(null,null);let a=r.toString();if(!a.trim())return void t(null,null);t(a,null)}return document.addEventListener("selectionchange",r),()=>{document.removeEventListener("selectionchange",r),t(null,null)}},[s]);let x=e=>function(t){var r;let{children:n}=t;return(0,l.jsx)(e,{id:null==(r=c[u++])?void 0:r.slug,children:n})};return(0,l.jsxs)("div",{className:"flex h-full bg-[var(--background)]",children:[c.length>1&&!p&&(0,l.jsxs)("nav",{className:"hidden w-56 shrink-0 flex-col overflow-y-auto border-r border-[var(--border)] py-4 md:flex",children:[(0,l.jsxs)("div",{className:"flex shrink-0 items-center justify-between px-3 pb-2",children:[(0,l.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wide text-[var(--muted-foreground)]",children:a("editor.outline")}),(0,l.jsx)("button",{onClick:f,title:a("editor.hideOutline"),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,l.jsx)(tt.A,{className:"h-3.5 w-3.5"})})]}),c.map((e,t)=>(0,l.jsx)("button",{onClick:()=>m(e.slug),title:e.text,className:"block w-full shrink-0 truncate px-3 py-1 text-left text-xs text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",style:{paddingLeft:"".concat(.75+(e.level-1)*.75,"rem")},children:e.text},"".concat(e.slug,"-").concat(t)))]}),(0,l.jsxs)("div",{ref:i,className:"relative flex-1 overflow-y-auto px-8 py-6",children:[c.length>1&&p&&(0,l.jsx)("button",{onClick:f,title:a("editor.showOutline"),className:"absolute left-2 top-2 z-10 hidden rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] md:block",children:(0,l.jsx)(tr.A,{className:"h-4 w-4"})}),(0,l.jsx)("article",{className:"prose prose-invert prose-sm max-w-none prose-headings:text-[var(--foreground)] prose-headings:font-semibold prose-headings:scroll-mt-4 prose-h1:text-2xl prose-h1:border-b prose-h1:border-[var(--border)] prose-h1:pb-2 prose-h2:text-xl prose-h2:border-b prose-h2:border-[var(--border)] prose-h2:pb-1.5 prose-h3:text-lg prose-p:text-[var(--foreground)] prose-p:leading-relaxed prose-a:text-blue-400 prose-a:no-underline hover:prose-a:underline prose-strong:text-[var(--foreground)] prose-code:text-amber-300 prose-code:bg-[var(--secondary)] prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded prose-code:text-xs prose-code:before:content-none prose-code:after:content-none prose-pre:bg-[var(--secondary)] prose-pre:border prose-pre:border-[var(--border)] prose-pre:rounded-lg prose-blockquote:border-l-blue-500 prose-blockquote:text-[var(--muted-foreground)] prose-li:text-[var(--foreground)] prose-th:text-[var(--foreground)] prose-td:text-[var(--foreground)] prose-table:border-collapse prose-th:border prose-th:border-[var(--border)] prose-th:px-3 prose-th:py-1.5 prose-th:bg-[var(--secondary)] prose-td:border prose-td:border-[var(--border)] prose-td:px-3 prose-td:py-1.5 prose-hr:border-[var(--border)] prose-img:rounded-lg ",children:(0,l.jsx)(e7.oz,{remarkPlugins:[te.A],components:{h1:x("h1"),h2:x("h2"),h3:x("h3"),h4:x("h4"),h5:x("h5"),h6:x("h6"),a(e){let{href:t,children:r,node:n,...a}=e;return(null==t?void 0:t.startsWith("#"))?(0,l.jsx)("a",{href:t,onClick:e=>{e.preventDefault();let r=t.slice(1);try{r=decodeURIComponent(r)}catch(e){}m(r)},...a,children:r}):(0,l.jsx)("a",{href:t,target:"_blank",rel:"noopener noreferrer",...a,children:r})},img(e){let{src:t,alt:a,node:s,...o}=e,i=function(e,t,r){let n;if(!e)return null;if(/^(https?:|data:|blob:)/i.test(e))return e;if(!r)return null;if(e.startsWith("/"))n=e;else{if(!t)return null;let a=t.includes("/")?t.slice(0,t.lastIndexOf("/")):"",s=a?"".concat(a,"/").concat(e):e,l=[];for(let e of s.split("/"))""!==e&&"."!==e&&(".."===e?l.pop():l.push(e));n="".concat(r.replace(/\/$/,""),"/").concat(l.join("/"))}let a=new URLSearchParams;return a.set("path",n),a.set("projectId",r),a.set("inline","1"),"/api/files/download?".concat(a.toString())}("string"==typeof t?t:"",r,n);return i?(0,l.jsx)(tn.p,{src:i,alt:null!=a?a:"",...o,placeholderClassName:"my-2 aspect-[4/3] w-full max-w-sm"}):(0,l.jsxs)("span",{className:"rounded border border-[var(--border)] bg-[var(--secondary)]/30 px-2 py-1 text-xs text-[var(--muted-foreground)]",children:["[image unavailable: ",a||String(t),"]"]})},pre:td},children:t})})]})]})}let tm=["background","foreground","card","card-foreground","border","input","primary","primary-foreground","secondary","secondary-foreground","muted","muted-foreground","accent","accent-foreground","destructive","ring"];function tp(){if("undefined"==typeof document)return{theme:"dark",themeVars:{}};let e=function(e){let t={};for(let r of tm){let n=e.getPropertyValue("--".concat(r)).trim();n&&(t[r]=n)}return t}(getComputedStyle(document.documentElement)),t=e.background?document.createElement("canvas").getContext("2d",{willReadFrequently:!0}):null;if(!t||!e.background)return{theme:"dark",themeVars:e};t.fillStyle=e.background,t.fillRect(0,0,1,1);let[r,n,a]=t.getImageData(0,0,1,1).data;return{theme:function(e){let[t,r,n]=e,a=e=>{let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4};return .2126*a(t)+.7152*a(r)+.0722*a(n)>.4?"light":"dark"}([r,n,a]),themeVars:e}}let th=".halo/canvas/self.html",tf=new Set,tx=!1;function tg(e){let{theme:t,themeVars:r}=tp();try{var n;null==(n=e.contentWindow)||n.postMessage({haloFaceTheme:{scheme:t,vars:r}},"*")}catch(e){}}function tv(e,t){try{var r;null==(r=e.contentWindow)||r.postMessage({haloFaceLang:t},"*")}catch(e){}}let tb=[];function ty(e){let t=e.replace(/[[\]\r\n]+/g," ").replace(/\s+/g," ").trim().slice(0,100);t&&((tb=tb.filter(e=>e!==t)).push(t),tb.length>8&&(tb=tb.slice(-8)))}let tw=null,tj=!1,tk=!1,tN=new Set(["image/jpeg","image/png","image/webp"]),tS=!1;function tC(e){let{url:t,name:r,face:n}=e,a=(0,o.useRef)(null),{theme:s}=(0,e5.useTheme)(),{lang:i}=(0,T.s9)();return(0,o.useEffect)(()=>{if(n&&a.current){var e;return e=a.current,tf.add(e),tS||(tS=!0,window.addEventListener("message",e=>(function(e,t){var r,n;if(!e||"object"!=typeof e||void 0===e.haloFaceAck&&void 0===e.haloFaceSnap)return;let a=!1;for(let e of tf)e.contentWindow&&e.contentWindow===t&&(a=!0);if(!a)return;"string"==typeof e.haloFaceAck&&ty(e.haloFaceAck);let s=e.haloFaceSnap;s&&"string"==typeof s.data&&s.data&&s.data.length<=8388608&&"string"==typeof s.mimeType&&tN.has(s.mimeType)&&(r=s.data,n=s.mimeType,tj?ty("snap skipped (1 per round)"):tk?ty("snap skipped (chain)"):tw?tw(r,n)&&(tj=!0,tk=!0):ty("snap skipped"))})(e.data,e.source))),()=>{tf.delete(e)}}},[n]),(0,o.useEffect)(()=>{n&&a.current&&tg(a.current)},[n,s]),(0,o.useEffect)(()=>{n&&a.current&&tv(a.current,i)},[n,i]),(0,l.jsx)("iframe",{ref:a,src:t,title:r,className:"h-full w-full border-0 ".concat(n?"bg-[var(--background)]":"bg-white"),sandbox:"allow-scripts allow-same-origin",allow:"autoplay",onLoad:n?e=>(function(e,t){if(tg(e),tv(e,t),tx){tx=!1;try{var r;null==(r=e.contentWindow)||r.postMessage({haloFace:"self.intro()"},"*")}catch(e){}}})(e.currentTarget,i):void 0})}let tA=e=>"halo_face_on:".concat(e);function tI(e){return"1"===localStorage.getItem(tA(e))}let tE=(0,b.v)(e=>({on:{},setFaceOn(t,r){t_(t)!==r&&(r?localStorage.setItem(tA(t),"1"):localStorage.removeItem(tA(t)),tb=[],e(e=>({on:{...e.on,[t]:r}})))}})),tT=!1;function t_(e){var t;return!!e&&(null!=(t=tE.getState().on[e])?t:tI(e))}function tP(e){return tE(t=>{var r;return!!e&&(null!=(r=t.on[e])?r:tI(e))})}function tM(e){let{original:t,modified:r,path:n}=e,a=(0,E.sQ)(n),{theme:s}=(0,e5.useTheme)();return(0,l.jsx)(e2.zC,{height:"100%",language:a,original:t,modified:r,beforeMount:e6,theme:e4[s],options:{fontSize:13,lineHeight:20,fontFamily:"'JetBrains Mono', 'Fira Code', 'Cascadia Code', Menlo, Monaco, monospace",minimap:{enabled:!1},scrollBeyondLastLine:!1,readOnly:!0,renderSideBySide:!0,padding:{top:12,bottom:12},automaticLayout:!0,overviewRulerLanes:0,scrollbar:{verticalScrollbarSize:6,horizontalScrollbarSize:6}},loading:(0,l.jsx)("div",{className:"flex h-full items-center justify-center bg-[var(--background)]",children:(0,l.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading diff..."})})})}var tF=r(74037),tD=r(6821),tL=r(56279),tR=r(53105);function tH(e){var t,r;let{x:n,y:a,path:s,groupIdx:i,onClose:c,onCloseTab:u}=e,m=(0,d._r)(),p=(0,o.useRef)(null);(0,o.useEffect)(()=>{function e(e){p.current&&!p.current.contains(e.target)&&c()}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[c]);let h=m.getState(),f=(null!=(r=null==(t=h.groups[i])?void 0:t.tabs)?r:[]).filter(e=>e!==h.pinnedTab).map(e=>h.buffers[e]).filter(e=>!!e),x=f.findIndex(e=>e.path===s),g=[{label:"Close",action:()=>u(s),disabled:s===h.pinnedTab},{label:"Close Others",action:()=>{f.forEach(e=>{e.path!==s&&u(e.path)})},disabled:0===f.filter(e=>e.path!==s).length},{label:"Close to the Right",action:()=>{f.slice(x+1).forEach(e=>u(e.path))},disabled:x>=f.length-1},{label:"Close Saved",action:()=>{f.forEach(e=>{e.modified||u(e.path)})}},{label:"Close All",action:()=>{f.forEach(e=>u(e.path))}}];return(0,l.jsx)("div",{ref:p,className:"fixed z-50 min-w-[160px] rounded-md border border-[var(--border)] bg-[var(--card)] py-1 shadow-lg",style:{left:n,top:a},children:g.map((e,t)=>(0,l.jsx)("button",{disabled:e.disabled,onClick:()=>{e.action(),c()},className:(0,E.cn)("w-full px-3 py-1.5 text-left text-xs transition-colors",e.disabled?"text-[var(--muted-foreground)]/40 cursor-default":"text-[var(--foreground)] hover:bg-[var(--secondary)]"),children:e.label},t))})}let tz="application/x-halo-tab";function tO(e){let{tabs:t,activeTab:r,groupIdx:n,canSplit:a,onCloseTab:s,renderMode:i,onToggleRenderMode:c,showDiffButton:u,onToggleDiff:m}=e,p=(0,T.kj)(),h=(0,d._r)(),f=(0,o.useRef)(null),[x,g]=(0,o.useState)(!1),[v,b]=(0,o.useState)(!1),[y,w]=(0,o.useState)(null),[j,k]=(0,o.useState)(null),[N,S]=(0,o.useState)(!1),[C,A]=(0,o.useState)(null),I=function(e){var t,r,n,a;let s=new Map,l=new Map;for(let n of e){let e=null!=(t=n.path.split(/[\\/]/).pop())?t:n.path;l.set(e,(null!=(r=l.get(e))?r:0)+1)}for(let t of e){let e=t.path.split(/[\\/]/),r=null!=(n=e.pop())?n:t.path;(null!=(a=l.get(r))?a:0)>1&&e.length>0?s.set(t.path,"".concat(e[e.length-1],"/").concat(r)):s.set(t.path,r)}return s}(t),_=(0,o.useCallback)(()=>{let e=f.current;e&&(g(e.scrollLeft>0),b(e.scrollLeft+e.clientWidth<e.scrollWidth-1))},[]);(0,o.useEffect)(()=>{_();let e=f.current;if(!e)return;e.addEventListener("scroll",_);let t=new ResizeObserver(_);return t.observe(e),()=>{e.removeEventListener("scroll",_),t.disconnect()}},[_,t.length]);let M=e=>{var t;null==(t=f.current)||t.scrollBy({left:e,behavior:"smooth"})},D=()=>{w(null),k(null),S(!1)},L=h(e=>e.activeGroupIdx),R=h(e=>e.pinnedTab);return(0,l.jsxs)("div",{className:(0,E.cn)("relative flex shrink-0 items-center border-b border-[var(--border)] bg-[var(--card)]",N&&"ring-1 ring-[var(--primary)]"),onDragOver:e=>{if(!tU(e))return;let t=e.dataTransfer.types.includes(tz)?{srcGroupIdx:-1,path:""}:null;t&&t.srcGroupIdx!==n&&(e.preventDefault(),e.dataTransfer.dropEffect="move",S(!0))},onDragLeave:e=>{e.currentTarget===e.target&&S(!1)},onDrop:e=>{if(!tU(e))return;e.preventDefault();let t=tB(e);t&&t.srcGroupIdx!==n&&h.getState().moveTabToGroup(t.srcGroupIdx,t.path,n),w(null),k(null),S(!1)},onMouseDown:()=>h.getState().setActiveGroup(n),children:[x&&(0,l.jsx)("button",{onClick:()=>M(-150),className:"sticky left-0 z-10 flex h-full w-6 shrink-0 items-center justify-center bg-[var(--card)] text-[var(--muted-foreground)] hover:text-[var(--foreground)] border-r border-[var(--border)]",children:(0,l.jsx)(tF.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("div",{ref:f,className:"flex flex-1 overflow-x-hidden",children:t.map((e,t)=>{var a;let{Icon:o,color:i}=ea(e.path),c=e.path===r&&n===L,d=e.path===r&&n!==L;return(0,l.jsxs)("div",{draggable:!0,onDragStart:r=>{var a;return a=e.path,w(t),r.dataTransfer.effectAllowed="move",r.dataTransfer.setData("text/plain",String(t)),void r.dataTransfer.setData(tz,JSON.stringify({srcGroupIdx:n,path:a}))},onDragOver:e=>{tU(e)&&(e.preventDefault(),e.dataTransfer.dropEffect="move",k(t))},onDrop:e=>((e,t)=>{if(!tU(e))return;e.preventDefault();let r=tB(e);r&&h.getState().moveTabToGroup(r.srcGroupIdx,r.path,n,t),w(null),k(null),S(!1)})(e,t),onDragEnd:D,onContextMenu:t=>{t.preventDefault(),A({x:t.clientX,y:t.clientY,path:e.path})},className:(0,E.cn)("group relative flex items-center gap-1.5 border-r border-[var(--border)] px-3 py-1.5 text-xs cursor-pointer transition-colors select-none",c?"bg-[var(--background)] text-[var(--foreground)]":d?"bg-[var(--background)]/50 text-[var(--muted-foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",y===t&&"opacity-40"),onClick:()=>{h.getState().setActiveTab(e.path,n),h.getState().setRejectedFile(null)},children:[j===t&&null!==y&&y>t&&(0,l.jsx)("div",{className:"absolute left-0 top-1 bottom-1 w-0.5 bg-[var(--primary)]"}),j===t&&null!==y&&y<t&&(0,l.jsx)("div",{className:"absolute right-0 top-1 bottom-1 w-0.5 bg-[var(--primary)]"}),(0,l.jsx)(o,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",i)}),(0,l.jsx)("span",{className:"max-w-40 truncate",title:e.readOnly?"".concat(e.path," \xb7 ").concat(p("pathLink.readOnly")):void 0,children:null!=(a=I.get(e.path))?a:e.path.split("/").pop()}),e.readOnly&&(0,l.jsx)(tD.A,{className:"h-3 w-3 shrink-0 opacity-60","aria-label":p("pathLink.readOnly")}),e.path===R?null:e.modified?(0,l.jsx)(P.A,{className:"h-2 w-2 fill-amber-400 text-amber-400 shrink-0"}):(0,l.jsx)("button",{onClick:t=>{t.stopPropagation(),s(e.path)},className:"ml-0.5 rounded p-0.5 opacity-0 transition-opacity group-hover:opacity-100 hover:bg-[var(--secondary)]",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})}),e.modified&&e.path!==R&&(0,l.jsx)("button",{onClick:t=>{t.stopPropagation(),s(e.path)},className:"ml-0.5 rounded p-0.5 opacity-0 transition-opacity group-hover:opacity-100 hover:bg-[var(--secondary)]",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]},e.path)})}),v&&(0,l.jsx)("button",{onClick:()=>M(150),className:"sticky right-0 z-10 flex h-full w-6 shrink-0 items-center justify-center bg-[var(--card)] text-[var(--muted-foreground)] hover:text-[var(--foreground)] border-l border-[var(--border)]",children:(0,l.jsx)(F.A,{className:"h-3.5 w-3.5"})}),(()=>{let e=t.find(e=>e.path===r),n=(null==e?void 0:e.language)==="markdown"||(null==e?void 0:e.language)==="html";return(0,l.jsxs)("div",{className:"flex items-center gap-0.5 mr-1",children:[n&&(0,l.jsxs)("button",{onClick:c,title:i?"Switch to source view":"Switch to rendered view",className:(0,E.cn)("flex items-center gap-1 rounded px-1.5 py-1 text-[11px] transition-colors",i?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),children:[i?(0,l.jsx)(eX.A,{className:"h-3 w-3"}):(0,l.jsx)(tL.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{children:i?"Edit":"Preview"})]}),u&&(0,l.jsxs)("button",{onClick:m,title:p("editor.viewDiff"),className:"flex items-center gap-1 rounded px-1.5 py-1 text-[11px] text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:[(0,l.jsx)(tR.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{children:p("editor.diff")})]})]})})(),a&&(0,l.jsx)("button",{title:p("editor.splitRight"),onClick:()=>h.getState().splitToRight(),className:"ml-1 mr-1 shrink-0 rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(eV.A,{className:"h-3.5 w-3.5"})}),C&&(0,l.jsx)(tH,{x:C.x,y:C.y,path:C.path,groupIdx:n,onClose:()=>A(null),onCloseTab:s})]})}function tU(e){return e.dataTransfer.types.includes(tz)}function tB(e){try{let t=e.dataTransfer.getData(tz);if(!t)return null;return JSON.parse(t)}catch(e){return null}}let tW={id:"pdf",extensions:["pdf"],Component:(0,o.lazy)(()=>r.e(9839).then(r.bind(r,9839)).then(e=>({default:e.PdfPreview})))},tK={id:"docx",extensions:["docx","doc"],Component:(0,o.lazy)(()=>r.e(2449).then(r.bind(r,32449)).then(e=>({default:e.DocxPreview})))},tG={id:"xlsx",extensions:["xlsx","xls"],Component:(0,o.lazy)(()=>r.e(8892).then(r.bind(r,28892)).then(e=>({default:e.XlsxPreview})))},tq={id:"pptx",extensions:["pptx","ppt"],Component:(0,o.lazy)(()=>Promise.all([r.e(6819),r.e(1807),r.e(1522),r.e(1160),r.e(9868)]).then(r.bind(r,49868)).then(e=>({default:e.PptxPreview}))),heavy:!0};var t$=r(27173);let tY={id:"parquet",extensions:["parquet"],Component:(0,o.lazy)(()=>r.e(7613).then(r.bind(r,37613)).then(e=>({default:e.ParquetPreview})))},tJ={id:"sqlite",extensions:["db","sqlite","sqlite3"],Component:(0,o.lazy)(()=>r.e(4362).then(r.bind(r,84362)).then(e=>({default:e.SqlitePreview})))},tZ={id:"csv",extensions:["csv","tsv"],Component:(0,o.lazy)(()=>r.e(7073).then(r.bind(r,27073)).then(e=>({default:e.CsvPreview})))};ep(tW),ep(tK),ep(tG),ep(tq),ep(t$.SQ),ep(tY),ep(tJ),ep(tZ);var tV=r(43180),tX=r(35418),tQ=r(19875);let t0=e=>e.replace(/\\/g,"/");function t1(e){var t,r;let{workspace:n,accept:a,start:s,onDone:c}=e,d=(0,T.kj)(),[m,p]=(0,o.useState)(null),[h,f]=(0,o.useState)(null),[x,g]=(0,o.useState)(null),[v,b]=(0,o.useState)(0),[y,w]=(0,o.useState)(""),[j,k]=(0,o.useState)(null),N=(0,o.useRef)(null),S=(0,o.useRef)(null),C=(0,o.useRef)(!1),A=(0,o.useCallback)(e=>{C.current||(C.current=!0,c(e))},[c]),I=(0,o.useCallback)((e,t)=>{f(null),g(null),u.FH.fs.browseFiles(e).then(e=>{let t=t0(e.path);p(t),w(t),f(e.entries.map(e=>({...e,path:t0(e.path)})).filter(e=>"directory"===e.type||((e,t)=>{if(0===t.length)return!0;let r=e.toLowerCase();return t.some(e=>r.endsWith(e))})(e.name,a))),b(0)},r=>{if(t&&e!==n)return void I(n,!1);p(e),w(e),f([]),g(r instanceof Error?r.message:String(r))})},[a,n]);(0,o.useEffect)(()=>{I(s,!0)},[I,s]),(0,o.useEffect)(()=>{u.FH.fs.home().then(e=>k(t0(e.home)),()=>{})},[]),(0,o.useEffect)(()=>{var e;null==(e=S.current)||e.focus()},[]);let P=m?null!=(r=null==(t=/^[A-Za-z]:\//.exec(m))?void 0:t[0])?r:"/":"/",M=m&&m!==P?m.lastIndexOf("/")<=P.length-1?P:m.slice(0,m.lastIndexOf("/")):null,D=[...null!==M?["up"]:[],...null!=h?h:[]],L=e=>{var t;if("up"===e){null!==M&&I(M,!1);return}if("directory"===e.type)return void I(e.path,!1);A({path:e.path,name:e.name,size:null!=(t=e.size)?t:0})};(0,o.useEffect)(()=>{let e=e=>{var t;let r=(null==(t=e.target)?void 0:t.tagName)==="INPUT";["Escape","Enter","ArrowDown","ArrowUp","Backspace"].includes(e.key)&&(!r||"Backspace"!==e.key)&&(e.preventDefault(),e.stopImmediatePropagation(),"Escape"===e.key?A(null):r&&"Enter"===e.key?y.trim()&&I(t0(y.trim()),!1):"ArrowDown"===e.key?b(e=>Math.min(e+1,D.length-1)):"ArrowUp"===e.key?b(e=>Math.max(e-1,0)):"Backspace"===e.key?null!==M&&I(M,!1):D[v]&&L(D[v]))};return window.addEventListener("keydown",e,!0),()=>window.removeEventListener("keydown",e,!0)}),(0,o.useEffect)(()=>{var e,t;null==(t=N.current)||null==(e=t.children[v])||e.scrollIntoView({block:"nearest"})},[v]);let R=m?m.slice(P.length).split("/").filter(Boolean):[],H="flex items-center gap-1 rounded border border-[var(--border)] px-2 py-1 text-xs hover:bg-[var(--secondary)]";return(0,i.createPortal)((0,l.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":d("picker.title"),"data-file-picker":!0,className:"fixed inset-0 z-[90] flex items-center justify-center bg-black/40 p-3",onPointerDown:e=>{e.target===e.currentTarget&&A(null)},children:(0,l.jsxs)("div",{ref:S,tabIndex:-1,className:"flex max-h-[85vh] w-full max-w-xl flex-col overflow-hidden rounded-lg border border-[var(--border)] bg-[var(--card)] text-[var(--foreground)] shadow-xl outline-none",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsx)("span",{className:"text-sm font-medium",children:d("picker.title")}),a.length>0&&(0,l.jsx)("span",{className:"truncate text-[10px] text-[var(--muted-foreground)]",children:a.join(" ")}),(0,l.jsx)("button",{type:"button",onClick:()=>A(null),"aria-label":d("picker.cancel"),className:"ml-auto rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsxs)("button",{type:"button",onClick:()=>I(n,!1),className:H,children:[(0,l.jsx)(tV.A,{className:"h-3.5 w-3.5"}),d("picker.workspace")]}),j&&(0,l.jsxs)("button",{type:"button",onClick:()=>I(j,!1),className:H,children:[(0,l.jsx)(tX.A,{className:"h-3.5 w-3.5"}),d("picker.home")]}),(0,l.jsx)("input",{value:y,onChange:e=>w(e.target.value),"aria-label":d("picker.pathBox"),spellCheck:!1,className:"min-w-0 flex-1 rounded border border-[var(--border)] bg-[var(--background)] px-2 py-1 font-mono text-xs outline-none focus:border-[var(--primary)]"})]}),(0,l.jsxs)("nav",{className:"flex flex-wrap items-center gap-0.5 border-b border-[var(--border)] px-3 py-1.5 text-xs",children:[(0,l.jsx)("button",{type:"button",onClick:()=>I(P,!1),className:"rounded px-1 py-0.5 font-mono hover:bg-[var(--secondary)]",children:P}),R.map((e,t)=>(0,l.jsxs)("span",{className:"flex items-center gap-0.5",children:[t>0&&(0,l.jsx)(F.A,{className:"h-3 w-3 text-[var(--muted-foreground)]"}),(0,l.jsx)("button",{type:"button",onClick:()=>I(P+R.slice(0,t+1).join("/"),!1),className:"rounded px-1 py-0.5 hover:bg-[var(--secondary)]",children:e})]},t))]}),(0,l.jsxs)("div",{ref:N,className:"min-h-[8rem] flex-1 overflow-y-auto py-1",children:[D.map((e,t)=>(0,l.jsx)("button",{type:"button",onClick:()=>L(e),onPointerEnter:e=>{"mouse"===e.pointerType&&b(t)},className:(0,E.cn)("flex w-full items-center gap-2 px-3 py-2.5 text-left text-sm sm:py-1.5 sm:text-xs",t===v?"bg-[var(--accent)] text-[var(--accent-foreground)]":"hover:bg-[var(--secondary)]"),children:"up"===e?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(tQ.A,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{children:".."})]}):(0,l.jsxs)(l.Fragment,{children:["directory"===e.type?(0,l.jsx)(_.A,{className:"h-4 w-4 shrink-0 text-[var(--primary)]"}):(0,l.jsx)(et.A,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e.name}),"file"===e.type&&void 0!==e.size&&(0,l.jsx)("span",{className:"shrink-0 text-[10px] text-[var(--muted-foreground)]",children:(0,E.v7)(e.size)})]})},"up"===e?"..":e.path)),null===h&&(0,l.jsx)("p",{className:"px-3 py-4 text-center text-xs text-[var(--muted-foreground)]",children:d("picker.loading")}),null!==h&&x&&(0,l.jsx)("p",{className:"px-3 py-4 text-center text-xs text-[var(--muted-foreground)]",children:x}),null!==h&&!x&&!h.some(e=>"file"===e.type)&&(0,l.jsx)("p",{className:"px-3 py-4 text-center text-xs text-[var(--muted-foreground)]",children:a.length>0?d("picker.emptyAccept",{accept:a.join(" ")}):d("picker.empty")})]}),(0,l.jsx)("div",{className:"flex justify-end border-t border-[var(--border)] px-3 py-2",children:(0,l.jsx)("button",{type:"button",onClick:()=>A(null),className:"rounded-md border border-[var(--border)] bg-[var(--secondary)] px-4 py-1.5 text-xs hover:opacity-90",children:d("picker.cancel")})})]})}),document.body)}var t3=r(37050);let t2=null,t5=null;function t4(){return t2&&t2.expiresAt-Date.now()>6e4?Promise.resolve(t2.token):(t5||(t5=u.FH.extensions.token().then(e=>(t2=e,e.token)).finally(()=>{t5=null})),t5)}function t8(e,t,r,n){return"/api/extensions/".concat(encodeURIComponent(e),"/").concat(encodeURIComponent(t),"/").concat(encodeURIComponent(r),"/").concat(n)}let t6=(0,o.createContext)(null),t9=null,t7=new Set;function re(){for(let e of t7)e()}function rt(e){return t7.add(e),()=>{t7.delete(e)}}function rr(){return null!==t9}function rn(){return(0,o.useSyncExternalStore)(rt,rr,()=>!1)}let ra=!1,rs=!1;function rl(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t9&&(rs=!1===e.refocus,d.Uw.getState().setMaximized(!1))}function ro(e,t){return t?e.filter(e=>"save"!==e):e}function ri(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{ready:!1,dirty:!1,mtime:null,saving:!1,retried:!1,capabilities:e,bundle:t}}function rc(e){return"object"==typeof e&&null!==e&&1===e.haloExt&&"string"==typeof e.type}function rd(e){return e.capabilities.includes("save")}function ru(e){return e.capabilities.includes("fs-read")}let rm=new Set(["read","write","append","list","stat"]);function rp(e,t){return"string"==typeof e&&(""===e?t:!(e.includes("\\")||e.includes("\0"))&&e.split("/").every(e=>""!==e&&"."!==e&&".."!==e))}function rh(e){var t;if("string"!=typeof e||e.includes("\\")||e.includes("\0"))return!1;let r=null==(t=/^(\/|[A-Za-z]:\/)/.exec(e))?void 0:t[0];if(!r)return!1;let n=e.slice(r.length);return""===n||n.split("/").every(e=>""!==e&&"."!==e&&".."!==e)}function rf(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function rx(e,t){return{type:"post",frame:{haloExt:1,type:"export-error",reason:e,message:t}}}function rg(e,t,r,n){return{type:"post",frame:{haloExt:1,type:"fs-result",id:e,ok:!1,code:t,error:r,...n?{auth:n}:{}}}}function rv(e,t){return{type:"post",frame:{haloExt:1,type:"pick-result",id:e,...t}}}function rb(e,t,r){if(!r.ok)return r.auth?{state:e,effects:[rg(t,"io",r.message,!0)]}:{state:e,effects:[rg(t,404===r.status?"not-found":403===r.status?"denied":"io",r.message)]};let{ok:n,...a}=r;return{state:e,effects:[{type:"post",frame:{haloExt:1,type:"fs-result",id:t,ok:!0,...a},...a.buffer?{transfer:[a.buffer]}:{}}]}}function ry(e,t,r){return r.ok?{state:{...e,saving:!1,retried:!1,dirty:!1,mtime:r.mtime},effects:[{type:"post",frame:{haloExt:1,type:"saved",mtime:r.mtime}},{type:"set-modified",modified:!1}]}:"mtime"in r?e.retried?{state:{...e,saving:!1,retried:!1},effects:[{type:"post",frame:{haloExt:1,type:"save-error",reason:"conflict",message:"file changed on disk again",mtime:r.mtime}},{type:"error",message:"Save failed: the file keeps changing on disk"}]}:{state:{...e,saving:!1},effects:[{type:"confirm-conflict",buffer:t,diskMtime:r.mtime}]}:{state:{...e,saving:!1,retried:!1},effects:[{type:"post",frame:{haloExt:1,type:"save-error",reason:"io",message:r.message}},{type:"error",message:"Save failed: ".concat(r.message)}]}}let rw=new Map;function rj(e,t){return"".concat(null!=e?e:"","::").concat(t)}let rk="microphone; display-capture; clipboard-write",rN=e=>e.replace(/\\/g,"/"),rS={redirect:"manual"};async function rC(e){var t;let r=(0,u.cW)(e);if(r)return r;let n=await e.json().catch(()=>({}));return{ok:!1,status:e.status,message:null!=(t=n.error)?t:e.statusText}}async function rA(e){let t=encodeURIComponent(e.path);switch(e.op){case"read":{let e=await fetch("/api/fs/raw?path=".concat(t),rS);return e.ok?{ok:!0,buffer:await e.arrayBuffer()}:await rC(e)}case"list":{let e=await fetch("/api/fs/browse?path=".concat(t,"&files=1"),rS);if(!e.ok)return await rC(e);return{ok:!0,entries:(await e.json()).entries.map(e=>{let{name:t,type:r}=e;return{name:t,type:r}})}}case"stat":{let e=await fetch("/api/fs/stat?path=".concat(t),rS);if(!e.ok)return await rC(e);let r=await e.json();return{ok:!0,size:r.size,mtime:r.modifiedAt}}default:return{ok:!1,status:403,message:"system scope is read-only"}}}async function rI(e,t,r){if("system"===r.scope)try{return await rA(r)}catch(e){return{ok:!1,status:0,message:e instanceof Error?e.message:String(e)}}let n="workspace"===r.scope?r.path:r.path?"".concat(t,"/").concat(r.path):t,a=new URLSearchParams({path:n,projectId:e});try{switch(r.op){case"read":{let t=await fetch(u.FH.files.viewUrl(n,e),rS);return t.ok?{ok:!0,buffer:await t.arrayBuffer()}:await rC(t)}case"list":{let e=await fetch("/api/files/tree?".concat(a),rS);if(!e.ok)return await rC(e);let t=await e.json();return{ok:!0,entries:t.tree.map(e=>{let{name:t,type:r}=e;return{name:t,type:r}})}}case"stat":{let e=await fetch("/api/files/stat?".concat(a),rS);if(!e.ok)return await rC(e);let t=await e.json();return{ok:!0,size:t.size,mtime:t.modifiedAt}}case"write":case"append":{let a=await u.FH.files.saveRaw(n,r.buffer,e,void 0,{create:!0,append:"append"===r.op,root:t});if(a.ok)return{ok:!0,size:a.size,mtime:a.mtime};return"message"in a?a:{ok:!1,status:a.status,message:"conflict"}}}}catch(e){return{ok:!1,status:0,message:e instanceof Error?e.message:String(e)}}}function rE(e){var t,r;let{info:n,gone:a,name:s,path:i,projectId:c,viewUrl:m,downloadUrl:p,size:h,onOpenAsText:f,readOnly:x}=e,{t:g,lang:v}=(0,T.s9)(),b=(0,d._r)(),{theme:y}=(0,e5.useTheme)(),w=(0,o.useMemo)(()=>tp(),[y]),j=(0,o.useRef)(null),k=ro(n.capabilities,!!x),N=(0,o.useRef)(ri(k,n.bundle)),S=(0,o.useRef)(function(){let e=new Map;return{run(t,r){var n;let a=(null!=(n=e.get(t))?n:Promise.resolve()).then(r),s=a.then(()=>{},()=>{});return e.set(t,s),s.then(()=>{e.get(t)===s&&e.delete(t)}),a}}}()),[C,A]=(0,o.useState)(0),I=(0,o.useRef)(C),[_,P]=(0,o.useState)(null),[M,F]=(0,o.useState)("token"),[D,L]=(0,o.useState)(null),[R,H]=(0,o.useState)(null),[z,O]=(0,o.useState)(null),U=(0,o.useRef)(null),[B,W]=(0,o.useState)(null),K=e=>{U.current=e,W(e)},G=(0,o.useRef)(null),q=(0,o.useRef)(null),$=(0,o.useRef)(n.version),Y={file:{name:s,path:i,size:null!=h?h:0,ext:null!=(r=null==(t=s.split(".").pop())?void 0:t.toLowerCase())?r:""},theme:w.theme,themeVars:w.themeVars,platform:ey(),lang:v,projectId:c},J=(0,o.useRef)(Y),Z=(0,o.useRef)(()=>{}),V=(0,o.useCallback)(e=>{for(let t of(N.current=e.state,e.effects))Z.current(t)},[]),X=()=>{G.current&&(clearTimeout(G.current),G.current=null)},Q=e=>{var t,r,a,s,l;switch(e.type){case"post":null==(r=j.current)||null==(t=r.contentWindow)||t.postMessage(e.frame,"*",null!=(a=e.transfer)?a:[]);return;case"load":(async()=>{try{var e;let[t,r]=await Promise.all([fetch(m),c&&!x?u.FH.files.stat(i,c).catch(()=>null):Promise.resolve(null)]);if(!t.ok)throw Error("HTTP ".concat(t.status));let n=await t.arrayBuffer();V(function(e,t,r){let n=[{type:"post",frame:{haloExt:1,type:"load",buffer:t,mtime:null!=r?r:0},transfer:[t]}];return e.dirty&&n.push({type:"set-modified",modified:!1}),{state:{...e,mtime:r,dirty:!1},effects:n}}(N.current,n,null!=(e=null==r?void 0:r.modifiedAt)?e:null))}catch(e){L("Failed to load file: ".concat(e instanceof Error?e.message:String(e)))}})();return;case"put":if(X(),!c)return void V(ry(N.current,e.buffer,{ok:!1,status:0,message:"no workspace"}));u.FH.files.saveRaw(i,e.buffer,c,null!=(s=e.expectMtime)?s:void 0).then(t=>V(ry(N.current,e.buffer,t)));return;case"set-modified":e.modified?b.getState().markModified(i):b.getState().clearModified(i);return;case"error":L(e.message);return;case"confirm-conflict":(async()=>{let t=i.split("/").pop(),r=await (0,E.fN)('"'.concat(t,'" changed on disk since you opened it. Overwrite the disk version with your changes?'))?"overwrite":await (0,E.fN)('Discard your changes and reload "'.concat(t,'" from disk? (Cancel keeps your unsaved changes.)'))?"discard":"cancel";V(function(e,t,r,n){switch(t){case"overwrite":return{state:{...e,saving:!0,retried:!0},effects:[{type:"put",buffer:r,expectMtime:n}]};case"discard":return{state:e,effects:[{type:"load"}]};case"cancel":return{state:e,effects:[]}}}(N.current,r,e.buffer,e.diskMtime))})();return;case"warn":console.warn("[ExtensionHost] ".concat(n.id,": ").concat(e.message));return;case"fs":{if(!c)return void V(rb(N.current,e.id,{ok:!1,status:0,message:"no workspace"}));let t=I.current,r=()=>rI(c,i,e);("write"===e.op||"append"===e.op?S.current.run(e.path,r):r()).then(r=>{I.current===t&&V(rb(N.current,e.id,r))});return}case"export":{let t=I.current,r=e=>{I.current===t&&Z.current(e)};if(!c)return void r(rx("io","no workspace"));let n=i.lastIndexOf("/"),a=n<0?e.name:"".concat(i.slice(0,n),"/").concat(e.name);(async()=>{if(await u.FH.files.stat(a,c).then(()=>!0,()=>!1)&&!await (0,E.fN)(g("editor.extension.exportOverwrite",{name:e.name})))return r(rx("cancelled","overwrite declined"));let t=await u.FH.files.saveRaw(a,e.buffer,c,void 0,{create:!0});if(t.ok){r({type:"post",frame:{haloExt:1,type:"exported",name:e.name,path:a}}),H({path:a,url:u.FH.files.downloadUrl(a,c)});return}let n="message"in t?t.message:"HTTP ".concat(t.status);r(rx("io",n)),L(g("editor.extension.exportFailed",{message:n}))})();return}case"pick":{if(!c||U.current)return void V({state:N.current,effects:[rv(e.id,{ok:!1,code:"cancelled",error:c?"a picker is already open":"no workspace"})]});let t=document.fullscreenElement;t&&t!==document.documentElement&&document.exitFullscreen().catch(()=>{});let r=rN(c).replace(/(.)\/$/,"$1"),a=null!=(l=e.start)?l:n.bundle?i:i.includes("/")?i.slice(0,i.lastIndexOf("/")):"",s=rh(a)?a:a?"".concat(r,"/").concat(a):r;K({id:e.id,accept:e.accept,start:s,attempt:I.current});return}}},ee=async e=>{let t=U.current;K(null);let r=e=>{t&&t.attempt===I.current&&(V({state:N.current,effects:[rv(t.id,e)]}),em())};if(!e||!c)return void r({ok:!1,code:"cancelled",error:"picker closed"});try{let[t,n]=await Promise.all([u.FH.fs.stat(e.path),u.FH.fs.stat(c)]),a=rN(t.realPath),s=rN(n.realPath).replace(/(.)\/$/,"$1"),l=a.startsWith(s.endsWith("/")?s:"".concat(s,"/"));r({ok:!0,path:l?a.slice(s.length).replace(/^\//,""):e.path,name:e.name,size:t.size})}catch(e){r({ok:!1,code:"cancelled",error:"could not stat the picked file: ".concat(e instanceof Error?e.message:String(e))})}};(0,o.useEffect)(()=>{J.current=Y,Z.current=Q});let et=()=>{O(null),F("token"),L(null),P(null),A(e=>e+1)};(0,o.useEffect)(()=>{let e=!1;return I.current=C,N.current.dirty&&b.getState().clearModified(i),N.current=ri(ro(n.capabilities,!!x),n.bundle),t4().then(t=>{e||($.current=n.version,P(t8(n.id,n.version,t,n.entry)),F("loading"),q.current=setTimeout(()=>{N.current.ready||F("failed")},1e4))}).catch(t=>{e||(L(t instanceof Error?t.message:String(t)),F("failed"))}),()=>{e=!0,q.current&&clearTimeout(q.current)}},[C]),(0,o.useEffect)(()=>{let e=e=>{var t;e.source===(null==(t=j.current)?void 0:t.contentWindow)&&rc(e.data)&&("ready"===e.data.type&&(q.current&&(clearTimeout(q.current),q.current=null),F("ready")),"save"===e.data.type&&X(),V(function(e,t,r){switch(t.type){case"ready":{let t=e.dirty?[{type:"set-modified",modified:!1}]:[],n={type:"post",frame:{haloExt:1,type:"init",view:"file",protocol:1,file:r.file,capabilities:e.capabilities,theme:r.theme,themeVars:r.themeVars,bundle:e.bundle,platform:r.platform,lang:r.lang,export:rd(e)&&!e.bundle,...r.projectId&&!e.bundle?{jupyter:{projectId:r.projectId}}:{}}};return{state:{...e,ready:!0,dirty:!1},effects:e.bundle?[...t,n]:[...t,n,{type:"load"}]}}case"dirty":if(!e.ready)return{state:e,effects:[{type:"warn",message:"dirty before ready ignored"}]};if(!rd(e)&&!e.bundle)return{state:e,effects:[{type:"warn",message:"dirty from an extension without the save capability ignored"}]};if(e.dirty===t.dirty)return{state:e,effects:[]};return{state:{...e,dirty:t.dirty},effects:[{type:"set-modified",modified:t.dirty}]};case"save":if(!e.ready)return{state:e,effects:[{type:"warn",message:"save before ready ignored"}]};if(!rd(e))return{state:e,effects:[{type:"post",frame:{haloExt:1,type:"save-error",reason:"denied",message:"extension did not declare the save capability"}},{type:"warn",message:"save from an extension without the save capability denied"}]};if(e.saving)return{state:e,effects:[{type:"warn",message:"save while a save is in flight dropped"}]};return{state:{...e,saving:!0},effects:[{type:"put",buffer:t.buffer,expectMtime:e.mtime}]};case"error":return{state:e,effects:[{type:"error",message:t.message}]};case"fs":let{id:n}=t;if("number"!=typeof n||!Number.isFinite(n))return{state:e,effects:[{type:"warn",message:"fs frame without a numeric id ignored"}]};if(void 0!==t.scope){let{scope:r}=t;return"workspace"!==r&&"system"!==r?{state:e,effects:[rg(n,"denied","unknown fs scope: ".concat(String(r)))]}:ru(e)?rm.has(t.op)?"write"===t.op||"append"===t.op?{state:e,effects:[rg(n,"denied","".concat(r," scope is read-only"))]}:("system"===r?rh(t.path):rp(t.path,"list"===t.op))?{state:e,effects:[{type:"fs",id:n,op:t.op,path:t.path,scope:r}]}:{state:e,effects:[rg(n,"invalid-path","invalid ".concat(r," path: ").concat(JSON.stringify(t.path)))]}:{state:e,effects:[rg(n,"denied","unknown fs op: ".concat(String(t.op)))]}:{state:e,effects:[rg(n,"denied","".concat(r," fs needs the fs-read capability")),{type:"warn",message:"".concat(r," fs without fs-read denied")}]}}if(!e.bundle)return{state:e,effects:[rg(n,"denied","fs is only available to bundle extensions"),{type:"warn",message:"fs from a non-bundle extension denied"}]};if(!rm.has(t.op))return{state:e,effects:[rg(n,"denied","unknown fs op: ".concat(String(t.op)))]};if(!rp(t.path,"list"===t.op))return{state:e,effects:[rg(n,"invalid-path","invalid bundle path: ".concat(JSON.stringify(t.path)))]};if("write"===t.op||"append"===t.op)return rf(t.buffer)?{state:e,effects:[{type:"fs",id:n,op:t.op,path:t.path,buffer:t.buffer}]}:{state:e,effects:[rg(n,"io","".concat(t.op," needs an ArrayBuffer buffer"))]};return{state:e,effects:[{type:"fs",id:n,op:t.op,path:t.path}]};case"export":var a;if(!e.ready)return{state:e,effects:[{type:"warn",message:"export before ready ignored"}]};if(!rd(e)||e.bundle)return{state:e,effects:[rx("denied","export needs the save capability (non-bundle)"),{type:"warn",message:"export from an extension without export support denied"}]};return"string"!=typeof(a=t.name)||""===a||"."===a||".."===a||/[/\\\0]/.test(a)?{state:e,effects:[rx("invalid","invalid export file name: ".concat(JSON.stringify(t.name)))]}:t.name===r.file.name?{state:e,effects:[rx("invalid","export must not overwrite the open file")]}:rf(t.buffer)?{state:e,effects:[{type:"export",name:t.name,buffer:t.buffer}]}:{state:e,effects:[rx("invalid","export needs an ArrayBuffer buffer")]};case"pick":let{id:s}=t;if("number"!=typeof s||!Number.isFinite(s))return{state:e,effects:[{type:"warn",message:"pick frame without a numeric id ignored"}]};if(!ru(e))return{state:e,effects:[rv(s,{ok:!1,code:"denied",error:"pick needs the fs-read capability"}),{type:"warn",message:"pick without fs-read denied"}]};let l=Array.isArray(t.accept)?t.accept.filter(e=>"string"==typeof e&&""!==e).map(e=>e.toLowerCase()):[],o=rp(t.start,!0)||rh(t.start)?t.start:void 0;return{state:e,effects:[{type:"pick",id:s,accept:l,...void 0!==o?{start:o}:{}}]};case"insert-text":case"busy":return{state:e,effects:[{type:"warn",message:"".concat(t.type," frame ignored outside a chat-bar panel")}]}}}(N.current,e.data,J.current)))};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[V]),(0,o.useEffect)(()=>{var e,t,r;V((e=N.current,t=w.theme,r=w.themeVars,e.ready?{state:e,effects:[{type:"post",frame:{haloExt:1,type:"theme",theme:t,themeVars:r}}]}:{state:e,effects:[]}))},[w,V]),(0,o.useEffect)(()=>{var e;V((e=N.current,e.ready?{state:e,effects:[{type:"post",frame:{haloExt:1,type:"lang",lang:v}}]}:{state:e,effects:[]}))},[v,V]);let er=(0,o.useCallback)(()=>{var e;let t=(e=N.current).ready&&rd(e)&&e.dirty&&!e.saving?{state:e,effects:[{type:"post",frame:{haloExt:1,type:"save-request"}}]}:{state:e,effects:[]};V(t),0!==t.effects.length&&(X(),G.current=setTimeout(()=>{G.current=null,N.current.dirty&&!N.current.saving&&window.alert('Extension "'.concat(n.name,'" did not respond to the save request.'))},5e3))},[V,n.name]);(0,o.useEffect)(()=>(function(e,t,r){let n=rj(e,t);return rw.set(n,r),()=>{rw.get(n)===r&&rw.delete(n)}})(c,i,{requestSave:er,fileChanged(){c&&!N.current.bundle&&u.FH.files.stat(i,c).then(e=>{var t,r;return V((t=N.current,r=e.modifiedAt,!t.ready||t.bundle||null!=t.mtime&&r<=t.mtime||t.dirty?{state:t,effects:[]}:{state:t,effects:[{type:"load"}]}))}).catch(()=>{})}}),[c,i,er,V]),(0,o.useEffect)(()=>{if(n.version!==$.current){if(N.current.dirty)return void O(g("editor.extension.updated",{version:n.version}));et()}},[n.version,g]),(0,o.useEffect)(()=>()=>{X(),N.current.dirty&&b.getState().clearModified(i)},[b,i]);let en=async()=>{(!N.current.dirty||await (0,E.fN)('"'.concat(s,'" has unsaved changes. Discard them and reload?')))&&et()},ea=(0,o.useContext)(t6)===i&&!n.capabilities.includes("save"),[es,el]=(0,o.useState)(!1),[eo]=(0,o.useState)(()=>(function(e){let{enterMs:t=2500,leaveMs:r=1500,tapMs:n=3e3}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=!1,s=null,l=t=>{t!==a&&(a=t,e(t))},o=()=>{s&&(clearTimeout(s),s=null)},i=e=>{o(),s=setTimeout(()=>{s=null,l(!1)},e)};return{start(){l(!0),i(t)},move(e){if(e<=48){o(),l(!0);return}a&&!s&&i(r)},tap(e){e>48||(l(!0),i(n))},dispose:o}})(el)),[ei]=(0,o.useState)(()=>{var e,t;return!!(null==(e=(t=window).matchMedia)?void 0:e.call(t,"(pointer: coarse)").matches)}),ec=(0,o.useRef)(!1),[ed,eu]=(0,o.useState)(0),em=()=>{var e;let t=j.current;null==t||t.focus(),null==t||null==(e=t.contentWindow)||e.focus()};(0,o.useEffect)(()=>{if(!ea)return;let e=function(){let e={};return t9=e,re(),()=>{t9===e&&(t9=null,re())}}();eo.start();let t=!1,r=!1,n=document.documentElement;(function(){let e=ra;return ra=!1,e})()&&!document.fullscreenElement&&n.requestFullscreen&&n.requestFullscreen().then(()=>{t=!0,r&&document.exitFullscreen().catch(()=>{})},()=>{});let a=document.fullscreenElement,s=()=>{let e=document.fullscreenElement,r=null!==a&&a!==n;a=e,t&&!e&&(t=!1,r||rl())},l=e=>{"mouse"===e.pointerType&&eo.move(e.clientY)},o=()=>eo.move(1/0),i=e=>{"mouse"!==e.pointerType&&eo.tap(e.clientY)};return document.addEventListener("fullscreenchange",s),window.addEventListener("pointermove",l),n.addEventListener("mouseleave",o),window.addEventListener("pointerdown",i,!0),()=>{r=!0,document.removeEventListener("fullscreenchange",s),window.removeEventListener("pointermove",l),n.removeEventListener("mouseleave",o),window.removeEventListener("pointerdown",i,!0),eo.dispose(),e(),t&&document.fullscreenElement===n&&document.exitFullscreen().catch(()=>{}),function(){let e=!rs;return rs=!1,e}()&&em()}},[ea,eo]),(0,o.useEffect)(()=>{if(!ea||0===ed)return;let e=j.current,t=null==e?void 0:e.contentWindow;if(!e||!t)return;let r=()=>e.getBoundingClientRect().top,n=e=>{"Escape"===e.key&&(t.document.fullscreenElement||(e.preventDefault(),e.stopPropagation(),rl()))},a=e=>{"mouse"===e.pointerType&&eo.move(e.clientY+r())},s=()=>eo.move(1/0),l=e=>{"mouse"!==e.pointerType&&eo.tap(e.clientY+r())},o=null;try{o=t.document,t.addEventListener("keydown",n,!0),t.addEventListener("pointermove",a),t.addEventListener("pointerdown",l,!0),o.documentElement.addEventListener("mouseleave",s)}catch(e){}return em(),()=>{try{t.removeEventListener("keydown",n,!0),t.removeEventListener("pointermove",a),t.removeEventListener("pointerdown",l,!0),null==o||o.documentElement.removeEventListener("mouseleave",s)}catch(e){}}},[ea,ed,eo]);let ep=k.includes("save")?(0,l.jsx)(t3.IB,{onClick:er,title:g("editor.extension.save"),children:(0,l.jsx)("span",{children:g("editor.extension.save")})}):void 0;return(0,l.jsx)(t3.no,{name:s,downloadUrl:p,onOpenAsText:f,extraToolbar:ep,hideHeader:ea,children:(0,l.jsxs)("div",{"data-immersive":ea||void 0,className:(0,E.cn)("flex h-full flex-col",ea&&"fixed inset-0 z-[70] bg-[var(--background)]"),children:[a&&(0,l.jsx)(rT,{children:g("editor.extension.".concat(a))}),z&&(0,l.jsxs)(rT,{onClose:()=>O(null),children:[z,(0,l.jsx)("button",{onClick:en,className:"ml-2 text-[var(--primary)] hover:underline",children:g("editor.extension.reload")})]}),D&&"failed"!==M&&(0,l.jsx)(rT,{onClose:()=>L(null),children:D}),R&&(0,l.jsxs)(rT,{onClose:()=>H(null),children:[g("editor.extension.exported",{path:R.path}),(0,l.jsx)("a",{href:R.url,download:!0,className:"ml-2 text-[var(--primary)] hover:underline",children:g("editor.download")})]}),"failed"===M?(0,l.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 p-8 text-center",children:[(0,l.jsx)("p",{className:"text-sm text-[var(--foreground)]",children:g("editor.extension.unresponsive",{name:n.name})}),D&&(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:D}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("button",{onClick:en,className:"inline-flex items-center rounded-md bg-[var(--primary)] px-4 py-2 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90",children:g("editor.extension.retry")}),f&&(0,l.jsx)("button",{onClick:f,className:"inline-flex items-center rounded-md border border-[var(--border)] bg-[var(--secondary)] px-4 py-2 text-xs font-medium text-[var(--foreground)] hover:opacity-90",children:g("editor.openAsText")})]})]}):(0,l.jsxs)("div",{className:"relative min-h-0 flex-1",children:[_&&(0,l.jsx)("iframe",{ref:j,src:_,sandbox:"allow-scripts allow-same-origin",allow:n.capabilities.includes("media")?rk:"",referrerPolicy:"no-referrer",title:n.name,className:"h-full w-full border-0 bg-[var(--background)]",onLoad:()=>eu(e=>e+1)},C),"ready"!==M&&(0,l.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center bg-[var(--background)]/80 text-sm text-[var(--muted-foreground)]",children:"Loading preview..."})]}),B&&c&&(0,l.jsx)(t1,{workspace:rN(c),accept:B.accept,start:B.start,onDone:e=>{ee(e)}}),ea&&(0,l.jsx)("button",{type:"button",onPointerDown:()=>{ec.current=!0},onClick:e=>{let t=ec.current;ec.current=!1,(t||0===e.detail)&&rl()},onPointerEnter:e=>{"mouse"===e.pointerType&&eo.move(0)},"aria-label":g("editor.immersive.exit"),className:(0,E.cn)("absolute z-10 flex items-center justify-center rounded-full border border-[var(--border)] bg-[var(--card)]/90 text-xs text-[var(--foreground)] shadow-lg backdrop-blur transition-all duration-200",ei?"left-2":"left-1/2 -translate-x-1/2",es?"top-2 h-7 gap-1 px-3 opacity-100":ei?"top-1.5 h-7 w-7 opacity-60":"pointer-events-none -top-2 h-7 px-3 opacity-0"),children:es||!ei?g("editor.immersive.exit"):"\xd7"})]})})}function rT(e){let{children:t,onClose:r}=e;return(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-[var(--border)] bg-[var(--card)] px-3 py-1.5 text-xs text-[var(--foreground)]",children:[(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate",children:t}),r&&(0,l.jsx)("button",{onClick:r,className:"shrink-0 text-[var(--muted-foreground)] hover:text-[var(--foreground)]","aria-label":"Dismiss",children:"\xd7"})]})}var r_=r(46415),rP=r(22726);function rM(e){let{candidates:t,current:r,onPick:n}=e,a=(0,T.kj)(),[s,i]=(0,o.useState)(!1),c=eI(r);return(0,l.jsxs)("div",{className:"relative",children:[(0,l.jsxs)("button",{onClick:()=>i(e=>!e),title:a("editor.openWith"),className:"flex items-center gap-1 rounded px-2 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:[(0,l.jsx)(r_.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{children:a("editor.openWith")})]}),s&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"fixed inset-0 z-20",onClick:()=>i(!1)}),(0,l.jsx)("div",{className:"absolute right-0 top-full z-30 mt-0.5 min-w-[180px] rounded-md border border-[var(--border)] bg-[var(--background)] py-1 shadow-lg",children:t.map(e=>{let t=eI(e),r=t===c;return(0,l.jsxs)("button",{onClick:()=>{i(!1),r||n(e)},className:(0,E.cn)("flex w-full items-center gap-2 px-3 py-1.5 text-left text-[11px] transition-colors hover:bg-[var(--secondary)]",r?"text-[var(--foreground)]":"text-[var(--foreground)]/80"),children:[(0,l.jsx)(rP.A,{className:(0,E.cn)("h-3 w-3 shrink-0",!r&&"invisible")}),(0,l.jsx)("span",{className:"truncate",children:"text"===e.kind?a("editor.openAsText"):"builtin"===e.kind?a("editor.openWith.builtin",{id:e.plugin.id}):e.info.name}),"extension"===e.kind&&(0,l.jsxs)("span",{className:"ml-auto shrink-0 text-[9px] text-[var(--muted-foreground)]",children:["v",e.info.version]})]},t)})})]})]})}function rF(e,t){return e&&null!=t?"".concat(e,"&v=").concat(t):e}let rD="https://github.com/turmind/halo-hub";function rL(){return(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading preview..."})}function rR(e){var t,r;em();let n=(0,d._r)();if(e.tooLarge)return(0,l.jsx)(rz,{...e});let a=null!=(r=null==(t=e.name.split(".").pop())?void 0:t.toLowerCase())?r:"",s=e.bundle?eC(a):eS(a),o=e.bundle?void 0:e.onOpenAsText;return(0,l.jsx)(rH,{...e,onOpenAsText:o,candidates:s,useEditorStore:n},a)}function rH(e){var t,r;let n,a,{candidates:s,useEditorStore:i,...c}=e,[d,u]=(0,o.useState)(null),[m,p]=(0,o.useState)(null),h=i(e=>{var t;return!!(null==(t=e.buffers[c.path])?void 0:t.modified)}),f=e=>s.find(t=>eI(t)===eI(e)),x=null!=(t=d&&f(d))?t:s[0];if((null==m?void 0:m.kind)==="extension"&&!f(m)&&h){x=m;let e=m.info.id;n=eg().disabled.some(t=>t.id===e)?"disabled":"uninstalled"}m&&eI(m)===eI(x)&&("extension"!==m.kind||"extension"!==x.kind||m.info===x.info)||p(x);let g=async e=>{if(!h||await (0,E.fN)('"'.concat(c.name,'" has unsaved changes. Discard them and switch viewer?'))){if("text"===e.kind){var t;null==(t=c.onOpenAsText)||t.call(c);return}u(e)}},v=s.length>2?(0,l.jsx)(rM,{candidates:c.bundle?s.filter(e=>"text"!==e.kind):s,current:x,onPick:g}):null;if("extension"===x.kind&&!c.bundle&&(null!=(r=c.size)?r:0)>0x6400000)a=(0,l.jsx)(t3.no,{name:c.name,downloadUrl:c.downloadUrl,onOpenAsText:c.onOpenAsText,children:(0,l.jsx)(rz,{...c,maxLabel:"100MB"})});else if("extension"===x.kind)a=(0,l.jsx)(rE,{...c,info:x.info,gone:n},x.info.id);else if("builtin"===x.kind){let{Component:e}=x.plugin;a=(0,l.jsx)(o.Suspense,{fallback:(0,l.jsx)(rL,{}),children:(0,l.jsx)(e,{...c,viewUrl:rF(c.viewUrl,c.mtime)},c.mtime)})}else a=(0,l.jsx)(rO,{...c});return(0,l.jsx)(t3.NU.Provider,{value:v,children:a})}function rz(e){let{name:t,size:r,downloadUrl:n,maxLabel:a="10MB"}=e;return(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-4 bg-[var(--background)] p-8",children:[(0,l.jsx)("div",{className:"flex h-16 w-16 items-center justify-center rounded-full bg-[var(--secondary)]",children:(0,l.jsx)(et.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"})}),(0,l.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:t}),(0,l.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)]",children:[null!=r?"".concat((0,E.v7)(r)," \xb7 "):"","File is too large to preview (max ",a,")"]}),(0,l.jsx)("a",{href:n,download:!0,className:"inline-flex items-center gap-1.5 rounded-md bg-[var(--primary)] px-4 py-2 text-xs font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90",children:"Download"})]})}function rO(e){var t,r;let{name:n,projectId:a,downloadUrl:s,onOpenAsText:i,bundle:c}=e,d=(0,T.kj)(),[m,p]=(0,o.useState)({url:rD,raw:""}),h=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=ev(e);return el.extensions.filter(e=>ek(e,r,t)&&!ej(e))}(null!=(t=n.split(".").pop())?t:"",!!c),f=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=ev(e);return el.disabled.filter(e=>ek(e,r,t))}(null!=(r=n.split(".").pop())?r:"",!!c);return(0,o.useEffect)(()=>{let e=!0;return u.FH.settings.getSchema(a).then(t=>{var r,n;let a=null==(r=t.sections.find(e=>"extension"===e.namespaceId))?void 0:r.fields.find(e=>"hub_repo"===e.key);e&&p({url:function(e){let t=(null!=e?e:"").trim();return!t||t.startsWith("{{")?rD:/^[A-Za-z0-9][\w.-]*\/[\w.-]+$/.test(t)?"https://github.com/".concat(t):/^https?:\/\//.test(t)?t.replace(/\/+$/,"").replace(/\.git$/,""):null}(null==a?void 0:a.value),raw:null!=(n=null==a?void 0:a.value)?n:""})}).catch(()=>{}),()=>{e=!1}},[a]),(0,l.jsx)(t3.no,{name:n,downloadUrl:s,onOpenAsText:i,children:(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-4 bg-[var(--background)] p-8",children:[(0,l.jsx)("div",{className:"flex h-16 w-16 items-center justify-center rounded-full bg-[var(--secondary)]",children:(0,l.jsx)(et.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"})}),(0,l.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:n}),(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:d("editor.unsupported.title")}),h.map(e=>{var t;return(0,l.jsx)("p",{className:"text-xs text-[var(--foreground)]",children:d("editor.unsupported.platform",{name:e.name,platforms:ew(null!=(t=e.platforms)?t:[],d)})},e.id)}),f.map(e=>(0,l.jsx)("p",{className:"text-xs text-[var(--foreground)]",children:d("editor.unsupported.disabled",{name:e.name})},e.id)),(0,l.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)]",children:[d("editor.unsupported.hub")," ",m.url?(0,l.jsxs)("a",{href:m.url,target:"_blank",rel:"noopener",className:"text-[var(--primary)] hover:underline",children:[m.url===rD?"halo-hub":m.url.replace(/^https?:\/\//,"")," ↗"]}):(0,l.jsx)("code",{className:"text-[var(--foreground)]",children:m.raw})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[i&&(0,l.jsx)("button",{onClick:i,className:"inline-flex items-center gap-1.5 rounded-md border border-[var(--border)] bg-[var(--secondary)] px-4 py-2 text-xs font-medium text-[var(--foreground)] transition-colors hover:opacity-90",children:d("editor.openAsText")}),s&&(0,l.jsx)("a",{href:s,download:!0,className:"inline-flex items-center gap-1.5 rounded-md bg-[var(--primary)] px-4 py-2 text-xs font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90",children:d("editor.download")})]})]})})}let rU=(0,b.v)((e,t)=>({projects:[],activeProject:null,folderPath:"",setProjects(t){e({projects:t})},setActiveProject(t){e({activeProject:t})},setFolderPath(t){e({folderPath:t})},openFolder(r,n){var a;let s=r.trim();if(!s)return;let l=null!=(a=s.split("/").filter(Boolean).pop())?a:s,o={id:s,name:l,path:s,workspaceId:n,createdAt:Date.now()},i=t().projects;i.find(e=>e.path===s)||e({projects:[...i,o]}),e({activeProject:o,folderPath:s})}})),rB=/^(.+?)(?::(\d+)(?::(\d+))?)?$/,rW=/[\s()=<>|;,*?]/,rK=/\.[A-Za-z][A-Za-z0-9]{0,9}$/,rG=/^[A-Za-z]:\//,rq=e=>e.replace(/\\/g,"/"),r$=e=>e.replace(/\/+$/,"");function rY(e){if(!e||rW.test(e)||e.includes("://")||e.startsWith("-"))return null;let t=rB.exec(e);if(!t)return null;let r=t[1],n=rq(r),a=n.indexOf(":");return -1!==a&&(1!==a||!rG.test(n)||n.includes(":",2))||r.startsWith("\\")&&!/^\/\/[^/]+\/[^/]/.test(n)||r.startsWith("//")||!/[^/~.]/.test(n)||!n.includes("/")&&!rK.test(n)?null:{path:r,...t[2]?{line:Number(t[2])}:{},...t[3]?{column:Number(t[3])}:{}}}function rJ(e,t){return t?"".concat(e.replace(/[\\/]+$/,""),"/").concat(t):e}let rZ=null,rV=null;var rX=r(65099),rQ=r(95037),r0=r(31367);function r1(e,t){if(!e||!t)return!0;let r=t.split("/").filter(Boolean),n=e;for(let e of r){var a;if(!(n=null==n||null==(a=n.children)?void 0:a.find(t=>t.name===e)))return!1}return"directory"===n.type}function r3(e){return new Date(e).toLocaleString(void 0,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}let r2=new Set(["tiff","tif","zip","tar","gz","bz2","xz","7z","rar","woff","woff2","ttf","otf","eot","exe","dll","so","dylib","o","a","class","pyc","wasm"]);async function r5(e){return!!(r2.has(e)||eE(e))||(await ex(),eE(e))}function r4(e,t,r){return r?{downloadUrl:"",viewUrl:"",bundle:!0}:{downloadUrl:u.FH.files.downloadUrl(e,t),viewUrl:u.FH.files.viewUrl(e,t)}}function r8(e){var t;return null!=(t=e.split("/").pop())?t:""}async function r6(e,t,r){var n,a;let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],l={path:e,size:r.size,mtime:r.modifiedAt,readOnly:!0};if(!s&&await r5(null!=(a=null==(n=e.split(".").pop())?void 0:n.toLowerCase())?a:""))return{...l,content:"",originalContent:"",language:"",preview:r4(e,t,!1)};if(r.size>0xa00000)return"tooLarge";try{let t=await u.FH.fs.readText(e);return{...l,content:t,originalContent:t,language:(0,E.sQ)(e)}}catch(e){return"missing"}}function r9(e){let{projectId:t,mode:r="full",showMaximize:n=!0}=e,a=(0,T.kj)(),s=(0,d._r)(),i=s(e=>e.tabs),m=s(e=>e.activeTab),v=s(e=>e.buffers),b=s(e=>e.groups),y=s(e=>e.activeGroupIdx),w=s(e=>e.pinnedTab),j=s(e=>e.maximized),k=rn()&&n&&j,N="editor-only"===r,[S,C]=(0,o.useState)(!0),[A,I]=(0,o.useState)({}),[_,P]=(0,o.useState)({});function M(e){var t;return null==(t=_[e])||t}let[F,D]=(0,o.useState)(null),[L,R]=(0,o.useState)(null),[H,z]=(0,o.useState)(new Set),[O,U]=(0,o.useState)(null),[B,W]=(0,o.useState)(null),[K,G]=(0,o.useState)(null),q=(0,o.useRef)(null),$=(0,o.useRef)(null),{tree:Y,loading:J}=function(e){let t=(0,d._r)(),[r,n]=(0,o.useState)(!1),[a,s]=(0,o.useState)(null),l=t(e=>e.fileTree),i=(0,o.useCallback)(async()=>{if(e){n(!0),s(null);try{let r=await x(e);t.getState().setFileTree(f(e,r))}catch(e){s(e instanceof Error?e.message:"Failed to load file tree"),console.error("[useFileTree] Error:",e)}finally{n(!1)}}},[e,t]);return(0,o.useEffect)(()=>{e&&i()},[e,i]),(0,o.useEffect)(()=>{if(e)return p.on("file:changed",e=>{"add"===e.action||"addDir"===e.action?t.getState().insertFileNode(e.path,"addDir"===e.action?"directory":"file"):("unlink"===e.action||"unlinkDir"===e.action)&&t.getState().removeFileNode(e.path)})},[e,t]),(0,o.useEffect)(()=>{if(e)return h(p,()=>g(e,t))},[e,t]),{tree:l,loading:r,error:a,refresh:i}}("editor-only"===r?null:t),[Z,V]=(0,o.useState)(!1),X=(0,o.useRef)(null),Q=em(),ee=(0,o.useCallback)(e=>{var t,r,n,a;return function(e){var t;let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=(r?eC(e):eS(e))[0];return"builtin"===n.kind?!!n.plugin.heavy:"extension"===n.kind&&!(t=n.info).capabilities.includes("save")&&!t.bundle}(null!=(a=null==(t=e.split(".").pop())?void 0:t.toLowerCase())?a:"",!!(null==(n=s.getState().buffers[e])||null==(r=n.preview)?void 0:r.bundle))},[s]),[et,er]=(0,o.useState)([]);(0,o.useEffect)(()=>{let e=[];for(let t of b){let r=t.activeTab;if(!r)continue;let n=v[r];(null==n?void 0:n.preview)&&r!==w&&(ee(r)||e.push(r))}0!==e.length&&er(t=>{let r=t.slice();for(let t=e.length-1;t>=0;t--){let n=e[t];r=[n,...r.filter(e=>e!==n)]}return(r=[...r.slice(0,5),...r.slice(5).filter(e=>{var t;return null==(t=v[e])?void 0:t.modified})],t.length===r.length&&t.every((e,t)=>e===r[t]))?t:r})},[b,v,ee,Q,w]),(0,o.useEffect)(()=>{er(e=>{let t=new Set;for(let e of b)for(let r of e.tabs)t.add(r);let r=e.filter(e=>t.has(e));return r.length===e.length?e:r})},[b]),(0,o.useEffect)(()=>{s.getState().setModelPathPrefix(null!=t?t:null)},[t,s]),(0,o.useEffect)(()=>{if(!t)return;X.current&&X.current!==t&&((0,d.nm)(X.current,Object.keys(s.getState().buffers)),s.setState(e=>{var t,r;return{buffers:{},groups:[{id:null!=(r=null==(t=e.groups[0])?void 0:t.id)?r:"g0",tabs:[],activeTab:null}],activeGroupIdx:0,tabs:[],activeTab:null,modifiedPaths:new Set,pinnedTab:null}}),V(!1)),X.current=t;let e="halo_tabs:".concat(t),r=localStorage.getItem(e);if(!r)return void V(!0);let n=!1;return async function(){try{var e,a,l;let o=JSON.parse(r),i=null!=(a=o.groups)?a:o.tabs?[{tabs:o.tabs,activeTab:null!=(e=o.activeTab)?e:null}]:[],c=null!=(l=o.activeGroupIdx)?l:0;if(0===i.length)return void V(!0);let d=Array.from(new Set(i.flatMap(e=>e.tabs.map(e=>e.path)))),m=new Map,p=new Set,h=new Set;for(let e of i)for(let t of e.tabs)m.has(t.path)||m.set(t.path,t.language),t.bundle&&p.add(t.path),t.readOnly&&h.add(t.path);let f=await Promise.all(d.map(async e=>{var r,n;if(h.has(e))try{let r=await u.FH.fs.stat(e);if(r.isDirectory)return null;let n=await r6(e,t,r);return"string"==typeof n?null:n}catch(e){return null}let a=null!=(n=null==(r=e.split(".").pop())?void 0:r.toLowerCase())?n:"",s=!1;if(p.has(e)){if(await ex(),!eA(r8(e)))return null;s=!0}if(s||await r5(a))try{let r=await u.FH.files.stat(e,t);return{path:e,content:"",originalContent:"",language:"",size:r.size,mtime:r.modifiedAt,createdAt:r.createdAt,preview:r4(e,t,s)}}catch(e){return null}try{let r=await u.FH.files.read(e,t);return{path:e,content:r.content,originalContent:r.content,language:m.get(e)||(0,E.sQ)(e),mtime:r.modifiedAt,size:r.size,createdAt:r.createdAt}}catch(e){return null}}));if(n)return;let x={};for(let e of f)e&&(x[e.path]=e);let g=i.map((e,t)=>{var r;let n=e.tabs.map(e=>e.path).filter(e=>x[e]),a=e.activeTab&&n.includes(e.activeTab)?e.activeTab:null!=(r=n[0])?r:null;return{id:"g_restored_".concat(t,"_").concat(Date.now().toString(36)),tabs:n,activeTab:a}}).filter(e=>e.tabs.length>0);if(0===g.length)s.setState(e=>{var t,r;return{buffers:{},groups:[{id:null!=(r=null==(t=e.groups[0])?void 0:t.id)?r:"g0",tabs:[],activeTab:null}],activeGroupIdx:0,tabs:[],activeTab:null}});else{let e=Math.max(0,Math.min(c,g.length-1)),t=g[e],r=t.tabs.map(e=>x[e]).filter(e=>!!e);s.setState({buffers:x,groups:g,activeGroupIdx:e,tabs:r,activeTab:t.activeTab})}}catch(e){}n||V(!0)}(),()=>{n=!0}},[t]),(0,o.useEffect)(()=>{if(!t||!Z)return;let e=b.map(e=>({tabs:e.tabs.filter(e=>e!==w).map(e=>{var t;let r=v[e];return{path:e,isPreview:!!(null==r?void 0:r.preview),...(null==r||null==(t=r.preview)?void 0:t.bundle)?{bundle:!0}:{},...(null==r?void 0:r.readOnly)?{readOnly:!0}:{},language:null==r?void 0:r.language}}),activeTab:e.activeTab===w?null:e.activeTab}));localStorage.setItem("halo_tabs:".concat(t),JSON.stringify({groups:e,activeGroupIdx:y}))},[b,y,v,t,Z,w]);let en=tP(t);(0,o.useEffect)(()=>{var e;if("editor-only"!==r||!t||!Z)return;let n=s.getState();if(!en)return void n.unpinTab();let a=function(){let e=tT;return tT=!1,e}();if(n.pinnedTab===th&&(null==(e=n.buffers[th])?void 0:e.preview)&&n.groups.some(e=>e.tabs.includes(th))){a&&n.setActiveTab(th);return}let l=!1;return u.FH.files.stat(th,t).then(e=>{l||s.getState().pinTab({path:th,content:"",originalContent:"",language:"",size:e.size,mtime:e.modifiedAt,createdAt:e.createdAt,preview:r4(th,t,!1)},a)}).catch(e=>console.warn("[EditorPanel] Face page missing:",e)),()=>{l=!0}},[en,t,Z,r,s]);let ea=i.find(e=>e.path===m),es=(0,o.useCallback)((e,r)=>{var n,a;if(!t)return;let l=s.getState(),o=rw.get(rj(t,e)),i=(n=l.buffers[e],a={pinned:e===l.pinnedTab,hasHost:!!o},!n||a.pinned||n.readOnly?"none":n.preview?a.hasHost?"host":n.preview.bundle?"none":"preview":n.modified?"none":"text");if("none"!==i){if("host"===i){r&&o.fileChanged();return}u.FH.files.stat(e,t).then(r=>{let n=s.getState();"preview"===i?n.refreshPreview(e,r.modifiedAt,r.size):n.checkAndRefresh(e,r.modifiedAt,()=>u.FH.files.read(e,t))}).catch(()=>{})}},[t,s]),el=(0,o.useCallback)(()=>{let e=s.getState().activeTab;e&&es(e,!1)},[es,s]);(0,o.useEffect)(()=>{Z&&el()},[m,el,Z]);let eo=rU(e=>{var t;return null==(t=e.activeProject)?void 0:t.path});(0,o.useEffect)(()=>{if(t&&eo&&"tree-only"!==r)return p.on("file:changed",e=>{var r;if("change"!==(r=e.action)&&"add"!==r)return;let n="".concat(eo,"/").concat(e.path),a=t.endsWith("/")?t:"".concat(t,"/");if(!n.startsWith(a))return;let l=n.slice(a.length);s.getState().buffers[l]&&es(l,!0)})},[t,eo,r,es,s]),(0,o.useEffect)(()=>{if("tree-only"===r)return;let e=()=>el();return window.addEventListener("focus",e),()=>window.removeEventListener("focus",e)},[el,r]),(0,o.useEffect)(()=>{if("tree-only"!==r)return h(p,el)},[el,r]);let ei=(0,o.useCallback)(async(e,r)=>{var n,a;if(!t)return;if(e===s.getState().pinnedTab)return void s.getState().setActiveTab(e);let l=null!=(a=null==(n=e.split(".").pop())?void 0:n.toLowerCase())?a:"",o=!!(null==r?void 0:r.bundle);if(o||await r5(l)){let r,{downloadUrl:n,viewUrl:a}=r4(e,t,o);try{let n=await u.FH.files.stat(e,t);r={size:n.size,mtime:n.modifiedAt,createdAt:n.createdAt}}catch(e){}s.getState().openPreview(e,n,a,{...r,bundle:o});return}if(s.getState().tabs.find(t=>t.path===e))return void s.getState().setActiveTab(e);try{let r=await u.FH.files.read(e,t),n=(0,E.sQ)(e);s.getState().openFile(e,r.content,n,r.modifiedAt,{size:r.size,createdAt:r.createdAt})}catch(n){console.error("[EditorPanel] Failed to read file:",n);let r=n instanceof Error?n.message:String(n);if(r.includes("413")||r.includes("too large")){let r;try{let n=await u.FH.files.stat(e,t);r={size:n.size,mtime:n.modifiedAt,createdAt:n.createdAt}}catch(e){}s.getState().openPreview(e,u.FH.files.downloadUrl(e,t),u.FH.files.viewUrl(e,t),{...r,tooLarge:!0})}}},[t]),ec=(0,o.useCallback)(async(e,t)=>{let r=s.getState(),n=r.buffers[t],a=r.groups.some((r,n)=>n!==e&&r.tabs.includes(t));(null==n||!n.modified||a&&!n.preview||await (0,E.fN)('"'.concat(t.split("/").pop(),'" has unsaved changes. Close anyway?')))&&s.getState().closeTabIn(e,t)},[]),ed=(0,o.useCallback)(async e=>{let t=Object.values(s.getState().buffers).filter(t=>{var r;return t.modified&&(null==(r=t.preview)?void 0:r.bundle)&&e.some(e=>t.path===e||t.path.startsWith("".concat(e,"/")))}).map(e=>e.path);for(let e of t)if(!await (0,E.fN)('"'.concat(r8(e),'" has unsaved changes. Close anyway?')))return!1;for(let e of t)s.getState().closeTab(e);return!0},[s]),eu=(0,o.useCallback)(async e=>{var r;if(t){if(null==(r=s.getState().buffers[e])?void 0:r.readOnly){let r;try{r=await r6(e,t,await u.FH.fs.stat(e),!0)}catch(e){r="missing"}return"string"==typeof r?void window.alert(a("pathLink.".concat(r))):(s.getState().closeTab(e),void s.getState().openFile(e,r.content,r.language,r.mtime,{size:r.size,readOnly:!0}))}try{let r=await u.FH.files.read(e,t),n=(0,E.sQ)(e);s.getState().closeTab(e),s.getState().openFile(e,r.content,n,r.modifiedAt,{size:r.size,createdAt:r.createdAt})}catch(e){console.error("[EditorPanel] Failed to open as text:",e)}}},[t,a,s]),ep=(0,o.useCallback)((e,t)=>{s.getState().updateContent(e,t)},[]),eh=(0,o.useCallback)(async e=>{var r;let n=null!=e?e:m;if(!n||!t)return;let a=s.getState().tabs.find(e=>e.path===n);if(!a||!a.modified||a.readOnly||(null==(r=a.preview)?void 0:r.bundle))return;let l=rw.get(rj(t,n));if(l)return void l.requestSave();try{let e=await u.FH.files.save(n,a.content,t);s.getState().markSaved(n,e.modifiedAt)}catch(e){console.error("[EditorPanel] Failed to save file:",e)}},[t,m]),ef=(0,o.useCallback)((e,t)=>{let r=s.getState().buffers[t];r&&I(n=>({...n,[e]:{original:r.originalContent,modified:r.content,path:t}}))},[]),eg=(0,o.useCallback)(e=>{I(t=>({...t,[e]:null}))},[]),ev=(0,o.useCallback)(async(e,r)=>{if(!t)return;let n=new AbortController;q.current=n,G({count:e.length,progress:0});try{await u.FH.files.upload(e,t,r||void 0,(e,t)=>{t>0&&G(r=>r?{...r,progress:e/t*100}:null)},n.signal),G(e=>e?{...e,progress:100}:null),setTimeout(()=>G(null),400),g(t,s)}catch(e){if(G(null),e instanceof DOMException&&"AbortError"===e.name)return;console.error("[EditorPanel] Upload failed:",e),window.alert(e instanceof Error?e.message:"Upload failed")}finally{q.current=null}},[t]),eb=(0,o.useCallback)(async(e,r)=>{var n;if(!t)return;let a=null!=(n=e.split("/").pop())?n:"",l=r?"".concat(r,"/").concat(a):a;if(e!==l&&await ed([e]))try{await u.FH.files.rename(e,l,t);let r=s.getState();r.tabs.find(t=>t.path===e)&&r.closeTab(e),g(t,s)}catch(e){console.error("[EditorPanel] Move failed:",e),window.alert(e instanceof Error?e.message:"Move failed")}},[t,ed]),ey=(0,o.useCallback)((e,t)=>{z(e),t&&U(t)},[]),ew=(0,o.useCallback)(e=>{D(e)},[]),ej=(0,o.useCallback)(async e=>{var r,n,a,l,o;if(!t)return;let i=""===e.path&&e.isDir,c=(()=>{if(!i)return{path:e.path,isDir:e.isDir};if(0===H.size)return{path:"",isDir:!0};let t=H.values().next().value;return{path:t,isDir:r1(Y,t)}})(),m=c.isDir?c.path:c.path.includes("/")?c.path.substring(0,c.path.lastIndexOf("/")):"";if("new-file"===e.type||"new-folder"===e.type){m&&eL(m,!0),W({mode:"new-file"===e.type?"create-file":"create-folder",parentDir:m});return}if("open-to-side"===e.type){let l=e.isDir&&eA(r8(e.path));if(e.isDir&&!l)return;try{let o=null!=(n=null==(r=e.path.split(".").pop())?void 0:r.toLowerCase())?n:"",i=l||await r5(o),c=s.getState();1===c.groups.length&&c.splitToRight(null!=(a=c.groups[0].activeTab)?a:e.path);let d=+(s.getState().groups.length>1);if(i){let r=await u.FH.files.stat(e.path,t);s.getState().openFileInGroup(d,e.path,"","",r.modifiedAt,{size:r.size,createdAt:r.createdAt}),s.setState(r=>({buffers:{...r.buffers,[e.path]:{...r.buffers[e.path],preview:r4(e.path,t,l)}}}))}else{let r=await u.FH.files.read(e.path,t),n=(0,E.sQ)(e.path);s.getState().openFileInGroup(d,e.path,r.content,n,r.modifiedAt,{size:r.size,createdAt:r.createdAt})}}catch(e){console.error("[EditorPanel] Open to the side failed:",e),window.alert(e instanceof Error?e.message:"Open to the side failed")}return}if("open-terminal"===e.type){if(!eo)return;let e=m?"".concat(eo,"/").concat(m):eo;d.Uw.getState().requestTerminalSpawn(e),d.Uw.getState().setBottomTab("terminal");return}if("open-as-workspace"===e.type){if(!e.isDir||!eo)return;let t=e.path?"".concat(eo,"/").concat(e.path):eo;window.dispatchEvent(new CustomEvent("halo:open-workspace",{detail:{path:t}}));return}if("reveal-in-file-manager"===e.type){if(!eo)return;let t=window.haloReveal;if(!t)return;let r=e.path?"".concat(eo,"/").concat(e.path):eo;t.reveal(r,e.isDir);return}if("download"===e.type){if(e.isDir)return void R(e.path);let r=u.FH.files.downloadUrl(e.path,t),n=document.createElement("a");return n.href=r,n.download=null!=(l=e.path.split("/").pop())?l:"file",document.body.appendChild(n),n.click(),void n.remove()}if("rename"===e.type){let t=null!=(o=e.path.split("/").pop())?o:"";W({mode:"rename",parentDir:e.path.includes("/")?e.path.substring(0,e.path.lastIndexOf("/")):"",originalPath:e.path,originalName:t});return}if("delete"===e.type){let r=H.size>1&&H.has(e.path)?Array.from(H):[e.path];if(r.length>1){if(!await (0,E.fN)("Delete ".concat(r.length," items?")))return}else{let t=e.isDir?"folder":"file";if(!await (0,E.fN)("Delete ".concat(t,' "').concat(e.path.split("/").pop(),'"?')))return}if(!await ed(r))return;try{for(let e of r)await u.FH.files.remove(e,t),s.getState().closeTab(e);z(new Set),g(t,s)}catch(e){console.error("[EditorPanel] Delete failed:",e),window.alert(e instanceof Error?e.message:"Delete failed"),g(t,s)}}},[t,H,ed]),ek=(0,o.useCallback)(()=>{W(null)},[]),eN=(0,o.useCallback)(async e=>{if(!t||!B)return;let r=e.trim();if(""===r)return void W(null);let{mode:n,parentDir:a,originalPath:l,originalName:o}=B;if("rename"===n){if(!l||r===o)return void W(null);let e=a?"".concat(a,"/").concat(r):r;if(!await ed([l]))return void W(null);try{await u.FH.files.rename(l,e,t),s.getState().closeTab(l),g(t,s)}catch(e){console.error("[EditorPanel] Rename failed:",e),window.alert(e instanceof Error?e.message:"Rename failed")}return void W(null)}let i=a?"".concat(a,"/").concat(r):r,c="create-file"===n&&eA(r);try{"create-file"!==n||c?await u.FH.files.mkdir(i,t):await u.FH.files.create(i,t),g(t,s),c&&ei(i,{bundle:!0})}catch(e){console.error("[EditorPanel] Create failed:",e),window.alert(e instanceof Error?e.message:"Create failed")}W(null)},[t,B,s,ei,ed]);(0,o.useEffect)(()=>{var e;if("tree-only"!==r||!t||!eo)return;let n=e=>{d.Uw.getState().setBottomMaximized(!1),window.dispatchEvent(new CustomEvent("halo:navigate",{detail:{tab:"explorer",force:!0,sidebar:e}}))};return rZ=e=async e=>{var r;let a,l=function(e,t,r){let n=e;if("~"===e||e.startsWith("~/")||e.startsWith("~\\")){if(!r)return null;n=r+e.slice(1)}let a=rq(n);if(!a.startsWith("/")&&!rG.test(a)){let e=r$(a.replace(/^(\.\/)+/,""));return{kind:"workspace",path:e,abs:rJ(t,e)}}let s=function(e,t){let r=/^[A-Za-z]:/.test(t)||t.includes("\\"),n=r$(rq(t)),a=r$(rq(e)),[s,l]=r?[a.toLowerCase(),n.toLowerCase()]:[a,n];return s===l?"":s.startsWith("".concat(l,"/"))?a.slice(n.length+1):null}(a,t);return null!==s?{kind:"workspace",path:s,abs:rJ(t,s)}:{kind:"external",path:n}}(e.path,eo,e.path.startsWith("~")?await (null!=rV||(rV=u.FH.fs.home().then(e=>e.home,()=>(rV=null,null))),rV):null);if(!l)return"missing";try{a=await u.FH.fs.stat("workspace"===l.kind?l.abs:l.path)}catch(e){return"missing"}let o=s.getState();if("workspace"===l.kind){let t=l.path;if(a.isDirectory&&!(t&&eA(r8(t))))return n(!0),t&&(e=>{let t=e.split("/");for(let e=1;e<=t.length;e++)eL(t.slice(0,e).join("/"),!0);ey(new Set([e]),e);let r=0,n=()=>{var t;let a=null==(t=$.current)?void 0:t.querySelector('button[data-path="'.concat(CSS.escape(e),'"]'));a?a.scrollIntoView({block:"nearest"}):++r<50&&setTimeout(n,100)};n()})(t),"ok";await ei(t,a.isDirectory?{bundle:!0}:void 0);let r=s.getState().buffers[t];return r?(e.line&&!r.preview&&o.requestReveal(t,e.line,e.column),n(!1),"ok"):"missing"}if(a.isDirectory)return"outside";let i=a.path;if(o.buffers[i])o.setActiveTab(i);else{let e=await r6(i,t,a);if("string"==typeof e)return e;e.preview?o.openPreview(i,e.preview.downloadUrl,e.preview.viewUrl,{size:e.size,mtime:e.mtime,readOnly:!0}):o.openFile(i,e.content,e.language,e.mtime,{size:e.size,readOnly:!0})}return!e.line||(null==(r=s.getState().buffers[i])?void 0:r.preview)||o.requestReveal(i,e.line,e.column),n(!1),"ok"},()=>{rZ===e&&(rZ=null)}},[r,t,eo,s,ei,ey]);let eI=s(e=>e.pendingReveal);(0,o.useEffect)(()=>{var e;if(!eI)return;let t=null==(e=v[eI.path])?void 0:e.language;if("markdown"!==t&&"html"!==t)return;let r=b.filter(e=>e.activeTab===eI.path).map(e=>e.id);P(e=>r.every(t=>!1===e[t])?e:{...e,...Object.fromEntries(r.map(e=>[e,!1]))})},[eI,b,v]);let eE=(0,o.useCallback)(()=>s.getState().clearReveal(),[s]);(0,o.useEffect)(()=>{function e(e){var t;let r=null==(t=$.current)?void 0:t.querySelector('button[data-path="'.concat(CSS.escape(e),'"]'));r&&(r.focus({preventScroll:!0}),r.scrollIntoView({block:"nearest"}))}function t(t){if(B)return;let r=$.current;if(!r||!Y)return;let n=t.target;if(!n||!r.contains(n)||t.ctrlKey||t.metaKey||t.altKey)return;let a=eK(Y);if(0===a.length)return;let s=[...H].map(e=>a.indexOf(e)).filter(e=>e>=0),l=s.length?Math.min(...s):-1,o=s.length?Math.max(...s):-1,i=O?a.indexOf(O):-1,c=0===s.length?-1:i>=0&&l<i?l:o,d=i>=0?i:c,u=t=>{let r=a[t];ey(new Set([r]),r),e(r)};switch(t.key){case"ArrowDown":case"ArrowUp":{t.preventDefault();let r="ArrowDown"===t.key?1:-1;if(t.shiftKey&&d>=0&&c>=0){let t=Math.max(0,Math.min(a.length-1,c+r)),n=Math.min(d,t),s=Math.max(d,t);ey(new Set(a.slice(n,s+1)),a[d]),e(a[t]);return}if(c<0)return void u(1===r?0:a.length-1);u(Math.max(0,Math.min(a.length-1,c+r)));return}case"ArrowRight":{if(t.shiftKey||c<0)return;t.preventDefault();let e=a[c];if(!r1(Y,e))return;if(!eH(e))return void eL(e,!0);let r=a[c+1];r&&r.startsWith("".concat(e,"/"))&&u(c+1);return}case"ArrowLeft":{if(t.shiftKey||c<0)return;t.preventDefault();let e=a[c];if(r1(Y,e)&&eH(e))return void eL(e,!1);if(!e.includes("/"))return;let r=a.indexOf(e.slice(0,e.lastIndexOf("/")));r>=0&&u(r);return}case"Enter":{if(t.shiftKey||c<0)return;t.preventDefault();let e=a[c],r=r1(Y,e);r&&eA(r8(e))?ei(e,{bundle:!0}):r?eL(e,!eH(e)):ei(e);return}case"Home":case"End":if(t.shiftKey)return;t.preventDefault(),u("Home"===t.key?0:a.length-1);return;case"F2":{var m;if(1!==H.size)return;t.preventDefault();let e=H.values().next().value,r=null!=(m=e.split("/").pop())?m:"";W({mode:"rename",parentDir:e.includes("/")?e.substring(0,e.lastIndexOf("/")):"",originalPath:e,originalName:r});return}}}return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[Y,H,O,B,ei,ey]);let eT=K&&(0,l.jsxs)("div",{className:"shrink-0 border-b border-[var(--border)] bg-[var(--card)] px-3 py-1.5",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsxs)("span",{children:["Uploading ",K.count," file",K.count>1?"s":"","..."]}),(0,l.jsxs)("span",{className:"flex items-center gap-1.5",children:[Math.round(K.progress),"%",(0,l.jsx)("button",{type:"button",onClick:()=>{var e;return null==(e=q.current)?void 0:e.abort()},className:"rounded p-0.5 hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",title:"Cancel upload",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]})]}),(0,l.jsx)("div",{className:"mt-1 h-1 overflow-hidden rounded-full bg-[var(--secondary)]",children:(0,l.jsx)("div",{className:"h-full rounded-full bg-[var(--primary)] transition-all duration-150",style:{width:"".concat(K.progress,"%")}})})]});if("tree-only"===r)return(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[eT,(0,l.jsx)("div",{ref:$,tabIndex:0,className:"flex-1 overflow-y-auto outline-none",children:J?(0,l.jsx)("div",{className:"p-3 text-xs text-[var(--muted-foreground)]",children:"Loading..."}):Y?(0,l.jsx)(eG,{node:Y,projectId:t,onSelect:ei,onContextMenu:ew,onDropFiles:ev,onMoveFile:eb,selectedPaths:H,onSelectionChange:ey,lastAnchor:O,depth:0,pendingEdit:B,onCommitEdit:eN,onCancelEdit:ek}):(0,l.jsx)("div",{className:"p-3 text-xs text-[var(--muted-foreground)]",children:"No files"})}),F&&(0,l.jsx)(eQ,{x:F.x,y:F.y,path:F.path,name:F.name,isDir:F.isDir,selectedCount:H.size>1&&H.has(F.path)?H.size:void 0,onAction:ej,onClose:()=>D(null)}),null!==L&&t&&(0,l.jsx)(e3,{path:L,projectId:t,onClose:()=>R(null)})]});let e_="full"===r&&S;return(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:(0,E.cn)("flex h-10 shrink-0 items-center justify-between border-b border-[var(--border)] px-3",k&&"hidden"),children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:["full"===r&&(0,l.jsx)("button",{onClick:()=>C(!S),className:"rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:S?(0,l.jsx)(tt.A,{className:"h-4 w-4"}):(0,l.jsx)(tr.A,{className:"h-4 w-4"})}),(0,l.jsx)(rX.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:a("nav.canvas")}),ea&&(null!=ea.size||null!=ea.mtime)&&(0,l.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:["(",[null!=ea.size?(0,E.v7)(ea.size):"",null!=ea.createdAt?"Created ".concat(r3(ea.createdAt)):"",null!=ea.mtime?"Modified ".concat(r3(ea.mtime)):""].filter(Boolean).join(" \xb7 "),")"]})]}),(0,l.jsx)("div",{className:"flex items-center gap-1",children:n&&(0,l.jsx)("button",{onClick:()=>{let e=s.getState();e.maximized||(ra=!0,setTimeout(()=>{ra=!1},0)),e.toggleMaximized()},title:j?"Exit full screen":"Maximize editor",className:"rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:j?(0,l.jsx)(rQ.A,{className:"h-4 w-4"}):(0,l.jsx)(r0.A,{className:"h-4 w-4"})})})]}),(0,l.jsxs)(c.YZ,{direction:"horizontal",autoSaveId:e_?"halo-editor-tree":void 0,children:[e_&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.Zk,{defaultSize:20,minSize:10,maxSize:40,children:(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--card)]",children:[eT,(0,l.jsx)("div",{ref:$,tabIndex:0,className:"flex-1 overflow-y-auto outline-none",children:t?J?(0,l.jsx)("div",{className:"p-3 text-xs text-[var(--muted-foreground)]",children:"Loading..."}):Y?(0,l.jsx)(eG,{node:Y,projectId:t,onSelect:ei,onContextMenu:ew,onDropFiles:ev,onMoveFile:eb,selectedPaths:H,onSelectionChange:ey,lastAnchor:O,depth:0,pendingEdit:B,onCommitEdit:eN,onCancelEdit:ek}):(0,l.jsx)("div",{className:"p-3 text-xs text-[var(--muted-foreground)]",children:"No files"}):(0,l.jsx)("div",{className:"p-3 text-xs text-[var(--muted-foreground)]",children:"Open a folder to view files"})})]})}),(0,l.jsx)(c.TW,{className:"w-px bg-[var(--border)] hover:w-1 hover:bg-[var(--primary)] transition-colors"})]}),(0,l.jsx)(c.Zk,{defaultSize:80,minSize:40,children:(0,l.jsx)(c.YZ,{direction:"horizontal",autoSaveId:"halo-editor-panes",children:b.map((e,r)=>{var a,o;let i=e.tabs.map(e=>v[e]).filter(e=>!!e),m=e.activeTab,p=i.find(e=>e.path===m),h=r===y;return(0,l.jsx)(c.Zk,{defaultSize:100/b.length,minSize:20,children:(0,l.jsxs)("div",{className:(0,E.cn)("flex h-full flex-col overflow-hidden",h&&b.length>1&&"ring-1 ring-inset ring-[var(--primary)]/30",k&&!h&&"hidden"),onMouseDown:()=>s.getState().setActiveGroup(r),children:[i.length>0&&(()=>{let t=M(e.id),n=A[e.id],a=!!(null==p?void 0:p.modified)&&!p.preview;return(0,l.jsx)("div",{className:k?"hidden":"contents",children:(0,l.jsx)(tO,{tabs:i,activeTab:m,groupIdx:r,canSplit:N&&1===b.length,onCloseTab:e=>ec(r,e),renderMode:t,onToggleRenderMode:()=>P(r=>({...r,[e.id]:!t})),showDiffButton:a,onToggleDiff:()=>{n?eg(e.id):p&&ef(e.id,p.path)}})})})(),(0,l.jsx)(t6.Provider,{value:j&&n&&h?m:null,children:(0,l.jsxs)("div",{className:"flex-1 overflow-hidden",children:[w&&e.tabs.includes(w)&&(null==(a=v[w])?void 0:a.preview)&&(0,l.jsx)("div",{className:(0,E.cn)("h-full",m!==w&&"hidden"),children:(0,l.jsx)(tC,{url:v[w].preview.viewUrl,name:r8(w),face:!0})}),[...et].sort().map(e=>i.find(t=>t.path===e&&t.preview)).filter(e=>!!e).map(e=>{var r;return(0,l.jsx)("div",{className:(0,E.cn)("h-full",(null==p?void 0:p.path)!==e.path&&"hidden"),children:(0,l.jsx)(rR,{path:e.path,name:null!=(r=e.path.split("/").pop())?r:"",projectId:null!=t?t:void 0,downloadUrl:e.preview.downloadUrl,viewUrl:e.preview.viewUrl,tooLarge:e.preview.tooLarge,bundle:e.preview.bundle,size:e.size,mtime:e.mtime,readOnly:e.readOnly,onOpenAsText:()=>eu(e.path)})},e.path)}),(null==p?void 0:p.preview)&&p.path!==w&&ee(p.path)&&!et.includes(p.path)&&(0,l.jsx)("div",{className:"h-full",children:(0,l.jsx)(rR,{path:p.path,name:null!=(o=p.path.split("/").pop())?o:"",projectId:null!=t?t:void 0,downloadUrl:p.preview.downloadUrl,viewUrl:p.preview.viewUrl,tooLarge:p.preview.tooLarge,bundle:p.preview.bundle,size:p.size,mtime:p.mtime,readOnly:p.readOnly,onOpenAsText:()=>eu(p.path)})},p.path),(()=>{let n=A[e.id],a=M(e.id);if(null==p?void 0:p.preview)return null;if(n)return(0,l.jsxs)("div",{className:"h-full flex flex-col",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] bg-[var(--card)] px-3 py-1.5",children:[(0,l.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:["Diff: ",n.path]}),(0,l.jsx)("button",{onClick:()=>eg(e.id),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"flex-1",children:(0,l.jsx)(tM,{original:n.original,modified:n.modified,path:n.path})})]});if(p){var s;let e=a&&"markdown"===p.language,n=a&&"html"===p.language&&!!t;return(0,l.jsxs)(l.Fragment,{children:[e&&(0,l.jsx)(tu,{content:p.content,filePath:p.path,projectId:t}),n&&(0,l.jsx)(tC,{url:p.path===th?u.FH.files.viewUrl(p.path,t):rF(u.FH.files.viewUrl(p.path,t),p.mtime),name:null!=(s=p.path.split("/").pop())?s:"",face:p.path===th}),(0,l.jsx)("div",{className:(0,E.cn)("h-full",(e||n)&&"hidden"),children:(0,l.jsx)(e9,{path:(0,d.y)(t,p.path),content:p.content,language:p.language,onChange:e=>ep(p.path,e),onSave:()=>eh(p.path),onClose:()=>ec(r,p.path),readOnly:p.readOnly,reveal:e||n||(null==eI?void 0:eI.path)!==p.path?null:eI,onRevealed:eE})})]})}return(0,l.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,l.jsxs)("div",{className:"text-center",children:[(0,l.jsx)(rX.A,{className:"mx-auto h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:"Open a file to start editing"})]})})})()]})})]})},e.id)}).flatMap((e,t,r)=>t<r.length-1?[e,(0,l.jsx)(c.TW,{className:"w-px bg-[var(--border)] hover:w-1 hover:bg-[var(--primary)] transition-colors"},"rh-".concat(t))]:[e])},b.length)})]}),F&&(0,l.jsx)(eQ,{x:F.x,y:F.y,path:F.path,name:F.name,isDir:F.isDir,selectedCount:H.size>1&&H.has(F.path)?H.size:void 0,onAction:ej,onClose:()=>D(null)}),null!==L&&t&&(0,l.jsx)(e3,{path:L,projectId:t,onClose:()=>R(null)})]})}var r7=r(3546);function ne(e){let{info:t,icon:r,fallback:n,className:a}=e,[s,i]=(0,o.useState)(null),[c,d]=(0,o.useState)(!1);if((0,o.useEffect)(()=>{if(!r)return;let e=!1;return t4().then(n=>{e||i(t8(t.id,t.version,n,r))}).catch(()=>{e||d(!0)}),()=>{e=!0,i(null),d(!1)}},[t.id,t.version,r]),!r||c)return(0,l.jsx)(n,{className:a});if(!s)return(0,l.jsx)("span",{"aria-hidden":!0,className:(0,E.cn)("block",a)});let u="url(".concat(JSON.stringify(s),") center / contain no-repeat");return(0,l.jsx)("span",{"aria-hidden":!0,className:(0,E.cn)("block bg-current",a),style:{mask:u,WebkitMask:u}})}function nt(){return{ready:!1}}function nr(e,t,r){let n={type:"post",frame:{haloExt:1,type:"init",view:r,protocol:1,capabilities:t.capabilities,theme:t.theme,themeVars:t.themeVars,platform:t.platform,lang:t.lang}};return{state:{...e,ready:!0},effects:[{type:"ready"},n]}}function nn(e,t,r){switch(t.type){case"ready":return nr(e,r,"activity");case"error":return{state:e,effects:[{type:"error",message:t.message}]};default:return{state:e,effects:[{type:"warn",message:"".concat(t.type," frame ignored on an activity page")}]}}}function na(e,t){var r,n;let a=e.activity;return null!=(n=null!=(r="zh"===t?null==a?void 0:a.title_zh:void 0)?r:null==a?void 0:a.title)?n:e.name}let ns="ext:";function nl(e){return"".concat(ns).concat(e)}function no(e){return e.startsWith(ns)}function ni(e){var t;let{info:r}=e;return(0,l.jsx)(ne,{info:r,icon:null==(t=r.activity)?void 0:t.icon,fallback:r7.A,className:"h-5 w-5"})}function nc(e){let{info:t}=e,{lang:r}=(0,T.s9)();return(0,l.jsx)(nd,{info:t,title:na(t,r),onFrame:nn,logTag:"ExtensionActivity"})}function nd(e){let{info:t,title:r,onFrame:n,onInsert:a,onBusy:s,closeRequested:i=!1,logTag:c,compact:d=!1}=e,{t:u,lang:m}=(0,T.s9)(),{theme:p}=(0,e5.useTheme)(),h=(0,o.useMemo)(()=>tp(),[p]),f=(0,o.useRef)(null),x=(0,o.useRef)(nt()),g=(0,o.useRef)(null),[v,b]=(0,o.useState)(0),[y,w]=(0,o.useState)(null),[j,k]=(0,o.useState)("loading"),[N,S]=(0,o.useState)(null),C={capabilities:t.capabilities.filter(e=>"media"===e||"transcribe"===e||"stt-local"===e),theme:h.theme,themeVars:h.themeVars,platform:ey(),lang:m},A=(0,o.useRef)(C),I=(0,o.useRef)(n),_=(0,o.useRef)(a),P=(0,o.useRef)(s);(0,o.useEffect)(()=>{A.current=C,I.current=n,_.current=a,P.current=s});let M=(0,o.useCallback)(e=>{for(let l of(x.current=e.state,e.effects)){var r,n,a,s;switch(l.type){case"post":null==(n=f.current)||null==(r=n.contentWindow)||r.postMessage(l.frame,"*");break;case"ready":g.current&&(clearTimeout(g.current),g.current=null),k("ready");break;case"error":S(l.message);break;case"warn":console.warn("[".concat(c,"] ").concat(t.id,": ").concat(l.message));break;case"insert":null==(a=_.current)||a.call(_,l.text);break;case"busy":null==(s=P.current)||s.call(P,l.busy)}}},[t.id,c]);return(0,o.useEffect)(()=>{let e=!1;return x.current=nt(),t4().then(r=>{e||(w(t8(t.id,t.version,r,t.entry)),g.current=setTimeout(()=>{x.current.ready||k("failed")},1e4))}).catch(t=>{e||(S(t instanceof Error?t.message:String(t)),k("failed"))}),()=>{e=!0,g.current&&(clearTimeout(g.current),g.current=null)}},[v,t.id,t.version,t.entry]),(0,o.useEffect)(()=>{let e=e=>{var t;e.source===(null==(t=f.current)?void 0:t.contentWindow)&&rc(e.data)&&M(I.current(x.current,e.data,A.current))};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[M]),(0,o.useEffect)(()=>{var e,t,r;M((e=x.current,t=h.theme,r=h.themeVars,e.ready?{state:e,effects:[{type:"post",frame:{haloExt:1,type:"theme",theme:t,themeVars:r}}]}:{state:e,effects:[]}))},[h,M]),(0,o.useEffect)(()=>{var e;M((e=x.current,e.ready?{state:e,effects:[{type:"post",frame:{haloExt:1,type:"lang",lang:m}}]}:{state:e,effects:[]}))},[m,M]),(0,o.useEffect)(()=>{var e,t;i&&(null==(t=f.current)||null==(e=t.contentWindow)||e.postMessage({haloExt:1,type:"close-request"},"*"))},[i]),(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[N&&"failed"!==j&&(0,l.jsx)(rT,{onClose:()=>S(null),children:N}),"failed"===j?(0,l.jsxs)("div",{className:(0,E.cn)("flex flex-1 flex-col items-center justify-center overflow-auto text-center",d?"gap-2 p-2":"gap-3 p-8"),children:[(0,l.jsx)("p",{className:"text-sm text-[var(--foreground)]",children:u("editor.extension.unresponsive",{name:t.name})}),N&&(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:N}),(0,l.jsx)("button",{onClick:()=>{k("loading"),S(null),w(null),b(e=>e+1)},className:"inline-flex items-center rounded-md bg-[var(--primary)] px-4 py-2 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90",children:u("editor.extension.retry")})]}):(0,l.jsxs)("div",{className:"relative min-h-0 flex-1",children:[y&&(0,l.jsx)("iframe",{ref:f,src:y,sandbox:"allow-scripts allow-same-origin",allow:t.capabilities.includes("media")?rk:"",referrerPolicy:"no-referrer",title:r,className:"h-full w-full border-0 bg-[var(--background)]"},"".concat(t.id,"@").concat(t.version)),"ready"!==j&&(0,l.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center bg-[var(--background)]/80 text-sm text-[var(--muted-foreground)]",children:"Loading..."})]})]})}function nu(e){return e.type?e.type:"user"===e.role?"user":"assistant"===e.role?"assistant":e.toolName?"tool_call":void 0===e.toolOutput||e.toolName?e.usage?"usage":e.systemPrompt?"context":"notification":"tool_result"}var nm=r(4671),np=r(46073),nh=r(77497);let nf=/\.(png|jpe?g|gif|webp|bmp|svg)$/i,nx=/\.(mp4|webm|mov|m4v|ogv)$/i,ng=/\.(mp3|wav|flac|aac|m4a|ogg|opus|amr|silk)$/i;function nv(e){return nf.test(e)?"image":nx.test(e)?"video":ng.test(e)?"audio":"file"}function nb(e){let t=[],r=e.replace(/\[(图片|视频|语音消息(?:\s*[^\s]+)?|文件(?:\s*"[^"]*")?)\s*已保存:\s*([^,\]]+)(?:,\s*服务端转写:\s*([^\]]+))?\]/g,(e,r,n,a)=>{let s,l=n.trim();s=r.startsWith("图片")?"image":r.startsWith("视频")?"video":r.startsWith("语音")?"audio":r.startsWith("文件")?"file":nv(l);let o=r.match(/"([^"]+)"/),i=o?o[1]:a?a.trim():void 0;return t.push({path:l,kind:s,label:i}),""});return{text:r=(r=r.replace(/^[ \t]*MEDIA:\s*(\S.*?)\s*$/gm,(e,r)=>{let n=r.trim();return t.push({path:n,kind:nv(n)}),""})).replace(/\n{3,}/g,"\n\n").trim(),media:t}}function ny(e){let{media:t}=e,[r,n]=(0,o.useState)(null);return 0===t.length?null:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:t.map((e,t)=>(0,l.jsx)(nj,{media:e,onOpen:()=>n(e)},"".concat(e.path,"-").concat(t)))}),r&&(0,l.jsx)(nN,{media:r,onClose:()=>n(null)})]})}function nw(e,t){if(!t||!/^(\/|[a-zA-Z]:[\\/]|\\\\)/.test(e))return null;let r=new URLSearchParams;return r.set("path",e),r.set("projectId",t),r.set("inline","1"),"/api/files/download?".concat(r.toString())}function nj(e){var t;let{media:r,onOpen:n}=e,a=rU(e=>{var t,r;return null!=(r=null==(t=e.activeProject)?void 0:t.path)?r:null}),s=nw(r.path,a),o=null!=(t=r.path.split("/").pop())?t:r.path;return s?(0,l.jsxs)("button",{onClick:n,className:"inline-flex items-center gap-1.5 rounded border border-[var(--border)] bg-[var(--secondary)]/30 px-2 py-1 text-[11px] text-[var(--foreground)] cursor-pointer hover:ring-1 hover:ring-[var(--primary)]/40 transition-all no-underline",title:o,children:[(0,l.jsx)(nk,{kind:r.kind}),(0,l.jsx)("span",{className:"truncate max-w-[240px] font-mono",children:r.label||o})]}):(0,l.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded border border-[var(--border)] bg-[var(--secondary)]/30 px-2 py-1 font-mono text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsx)(nk,{kind:r.kind}),o]})}function nk(e){let{kind:t}=e,r="h-3 w-3";return"image"===t?(0,l.jsx)(nm.A,{className:r}):"video"===t?(0,l.jsx)(np.A,{className:r}):"audio"===t?(0,l.jsx)(nh.A,{className:r}):(0,l.jsx)(W.A,{className:r})}function nN(e){var t;let{media:r,onClose:n}=e,a=rU(e=>{var t,r;return null!=(r=null==(t=e.activeProject)?void 0:t.path)?r:null}),s=nw(r.path,a),[i]=(0,o.useState)(()=>Date.now()),c=null!=(t=r.path.split("/").pop())?t:"file";if((0,o.useEffect)(()=>{let e=e=>{"Escape"===e.key&&n()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[n]),!s)return null;let d="".concat(s,"&t=").concat(i),u="".concat(s.replace("&inline=1",""),"&t=").concat(i);return(0,l.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-6",onClick:n,children:["file"!==r.kind&&(0,l.jsx)("a",{href:u,download:c,onClick:e=>e.stopPropagation(),className:"absolute right-14 top-4 rounded p-2 text-white/80 hover:bg-white/10 hover:text-white","aria-label":"Download",title:"Download",children:(0,l.jsx)(eZ.A,{className:"h-5 w-5"})}),(0,l.jsx)("button",{onClick:n,className:"absolute right-4 top-4 rounded p-2 text-white/80 hover:bg-white/10 hover:text-white","aria-label":"Close",children:(0,l.jsx)(e0.A,{className:"h-5 w-5"})}),(0,l.jsxs)("div",{className:"flex max-h-full max-w-full flex-col items-center gap-3",onClick:e=>e.stopPropagation(),children:["image"===r.kind&&(0,l.jsx)(tn.p,{src:d,alt:r.path,className:"max-h-[85vh] max-w-[90vw] object-contain",placeholderClassName:"aspect-video w-[min(90vw,640px)]"}),"video"===r.kind&&(0,l.jsx)("video",{src:d,controls:!0,autoPlay:!0,className:"max-h-[85vh] max-w-[90vw]"}),"audio"===r.kind&&(0,l.jsx)("audio",{src:d,controls:!0,autoPlay:!0,className:"w-[min(80vw,480px)]"}),"file"===r.kind&&(0,l.jsxs)("a",{href:u,download:c,className:"rounded bg-white/10 px-4 py-2 text-sm text-white hover:bg-white/20 no-underline",children:["Download ",c]}),(0,l.jsx)("div",{className:"max-w-[90vw] truncate font-mono text-[11px] text-white/60",children:r.path})]})]})}var nS=r(45764);function nC(e){let t=nu(e);return"tool_call"===t||"tool_result"===t||"usage"===t||"context"===t||"agent_start"===t||"agent_done"===t}function nA(e){if(e.taskId)return!1;let t=nu(e);return"user"===t||"assistant"===t||"notification"===t}function nI(e){var t,r;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now();return!!e.streaming&&!e.content&&!(null==(t=e.toolCalls)?void 0:t.length)&&!(null==(r=e.contentBlocks)?void 0:r.length)&&n-e.timestamp>3e4}let nE=0;function nT(e){var t;return"system"!==e.role||"notification"!==nu(e)?null:"".concat(null!=(t=e.taskId)?t:"","\0").concat(e.content)}function n_(e){return null!=e?e:""}function nP(e,t,r){if("assistant"===t.role&&t.streaming&&e.streamingIdx.set(n_(t.taskId),r),t.toolCalls)for(let n of t.toolCalls)n.toolUseId&&e.toolUseIdIdx.set(n.toolUseId,r);if(t.contentBlocks)for(let n of t.contentBlocks)"tool_call"===n.type&&n.toolCall.toolUseId&&e.toolUseIdIdx.set(n.toolCall.toolUseId,r)}function nM(e,t){e.streamingIdx.clear(),e.toolUseIdIdx.clear();for(let r=0;r<t.length;r++)nP(e,t[r],r)}function nF(e,t){for(let[r,n]of e.streamingIdx){let a=t[n];a&&"assistant"===a.role&&a.streaming&&n_(a.taskId)===r||e.streamingIdx.delete(r)}}function nD(e,t,r){let n=n_(r),a=e.streamingIdx.get(n);if(void 0!==a){let e=t[a];if(e&&"assistant"===e.role&&e.streaming&&e.taskId===r)return a}for(let a=t.length-1;a>=0;a--){let s=t[a];if("assistant"===s.role&&s.streaming&&s.taskId===r)return e.streamingIdx.set(n,a),a}return e.streamingIdx.delete(n),-1}function nL(e,t,r,n,a){if(!a)return{messages:t,slotIdx:nD(e,t,n),copied:!1};let s=nD(e,t,n),l=-1===s?void 0:t[s];if(l&&!(r&&l.agentName&&l.agentName.toLowerCase()!==r.toLowerCase())){var o;let i=null!=(o=l.contentBlocks)?o:[],c=i.length>0?i[i.length-1].turnId:void 0;if(!c||c===a)return{messages:t,slotIdx:s,copied:!1};let d=[...t];return d[s]={...l,streaming:!1},d.push({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0,agentName:r,taskId:n}),e.streamingIdx.set(n_(n),d.length-1),{messages:d,slotIdx:d.length-1,copied:!0}}let i=[...t,{id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0,agentName:r,taskId:n}];return e.streamingIdx.set(n_(n),i.length-1),{messages:i,slotIdx:i.length-1,copied:!0}}function nR(e){let t="",r=[];for(let n of e)"text"===n.type?t+=n.text:"tool_call"===n.type&&r.push(n.toolCall);return{content:t,toolCalls:r,contentBlocks:e}}let nH={usableAgentCount:-1,sandboxAvailable:null,screenSource:null,cameraSource:null},nz=new Set;function nO(e){for(let t of(Object.assign(nH,e),nz))t.setState(e)}let nU=new Set;function nB(){let e,t={streamingIdx:new Map,toolUseIdIdx:new Map,roundStart:0,lastSnapshot:null},r=(0,nS.y)()((e=()=>queueMicrotask(()=>{if(nz.has(r)&&!r.getState().isStreaming)for(let e of nU)e(r)}),(r,n)=>({messages:[],isStreaming:!1,sessionId:null,pendingMessages:[],contextTokens:0,outputTokens:0,maxContextTokens:0,isCompacting:!1,selectedAgentId:"default",accessLevel:"full",...nH,addMessage(e){var n,a;let s={id:null!=(n=e.id)?n:(0,E.$C)(),type:e.type,role:e.role,content:e.content,timestamp:null!=(a=e.timestamp)?a:Date.now(),streaming:e.streaming,agentName:e.agentName,taskId:e.taskId,contentBlocks:e.contentBlocks,toolName:e.toolName,toolInput:e.toolInput,toolOutput:e.toolOutput,systemPrompt:e.systemPrompt,usage:e.usage,turnId:e.turnId,modelId:e.modelId,durationMs:e.durationMs,localImages:e.localImages,clientMsgId:e.clientMsgId};r(r=>{var n;let a,l=function(e,t,r){var n;if("assistant"===r.role||!nA(r))return null;let a=nD(e,t);if(-1===a)return null;let s=t[a],l=null!=(n=s.contentBlocks)?n:[],o=l.findIndex(e=>"tool_call"===e.type&&!e.toolCall.output),i=-1===o?!l.some(e=>"tool_call"===e.type):0===o;if(!s.content.trim()&&i)return{prefix:[...t.slice(0,a),...t.slice(a+1)],slot:s};let c=[...t];return c[a]=-1===o?{...s,streaming:!1}:{...s,...nR(l.slice(0,o)),streaming:!1},{prefix:c,slot:{id:(0,E.$C)(),role:"assistant",timestamp:Date.now(),streaming:!0,agentName:s.agentName,...nR(-1===o?[]:l.slice(o))}}}(t,r.messages,s),o=nT(s);return null!==o&&function(e,t){for(let r=e.length-1;r>=0;r--){let n=nT(e[r]);if(null===n)break;if(n===t)return!0}return!1}(null!=(n=null==l?void 0:l.prefix)?n:r.messages,o)?r:(l?nM(t,a=[...l.prefix,s,l.slot]):(nP(t,s,r.messages.length),a=[...r.messages,s]),{messages:a,isStreaming:!!e.streaming&&!e.taskId||r.isStreaming})})},appendThinking(e,n,a,s){r(r=>{var l;let o=nL(t,r.messages,n,a,s);if(-1===o.slotIdx)return r;let i=o.copied?o.messages:[...o.messages],c=i[o.slotIdx],d=[...null!=(l=c.contentBlocks)?l:[]],u=d[d.length-1];return u&&"thinking"===u.type&&(!s||u.turnId===s)?d[d.length-1]={type:"thinking",text:u.text+e,turnId:null!=s?s:u.turnId}:d.push({type:"thinking",text:e,turnId:s}),i[o.slotIdx]={...c,contentBlocks:d},{messages:i}})},updateLastAssistant(e,n,a,s){r(r=>{var l;let o=nL(t,r.messages,n,a,s);if(-1===o.slotIdx)return r;let i=o.copied?o.messages:[...o.messages],c=i[o.slotIdx],d=[...null!=(l=c.contentBlocks)?l:[]],u=d[d.length-1];return u&&"text"===u.type&&(!s||u.turnId===s)?d[d.length-1]={type:"text",text:u.text+e,turnId:null!=s?s:u.turnId}:d.push({type:"text",text:e,turnId:s}),i[o.slotIdx]={...c,content:c.content+e,contentBlocks:d},a?{messages:i}:{messages:i,isStreaming:!0}})},discardTurnText(e){r(r=>{var n,a;let s=nD(t,r.messages);if(-1===s)return r;let l=r.messages[s],o=(null!=(n=l.contentBlocks)?n:[]).filter(t=>"text"!==t.type&&"thinking"!==t.type||t.turnId!==e);if(o.length===(null!=(a=l.contentBlocks)?a:[]).length)return r;let i=[...r.messages];return i[s]={...l,...nR(o)},{messages:i}})},addToolCallToLastAssistant(e,n,a,s){r(r=>{var l,o;if(e.toolUseId&&t.toolUseIdIdx.has(e.toolUseId))return r;let i=nL(t,r.messages,n,a,s);if(-1===i.slotIdx)return r;let c=i.copied?i.messages:[...i.messages],d=c[i.slotIdx],u=[...null!=(l=d.contentBlocks)?l:[]];return u.push({type:"tool_call",toolCall:e,turnId:s}),c[i.slotIdx]={...d,toolCalls:[...null!=(o=d.toolCalls)?o:[],e],contentBlocks:u},e.toolUseId&&t.toolUseIdIdx.set(e.toolUseId,i.slotIdx),{messages:c}})},updateLastToolCallResult(e,n,a,s){r(r=>{var n,l,o,i,c,d,u;if(s){let n=null!=(i=t.toolUseIdIdx.get(s))?i:-1,a=-1===n?void 0:r.messages[n],u=null!=(c=null==a||null==(l=a.toolCalls)?void 0:l.findIndex(e=>e.toolUseId===s))?c:-1,m=null!=(d=null==a||null==(o=a.contentBlocks)?void 0:o.findIndex(e=>"tool_call"===e.type&&e.toolCall.toolUseId===s))?d:-1;if(a&&(-1!==u||-1!==m)){if(-1!==u&&void 0!==a.toolCalls[u].output||-1!==m&&void 0!==a.contentBlocks[m].toolCall.output)return r;let t=a.toolCalls?[...a.toolCalls]:a.toolCalls;t&&-1!==u&&(t[u]={...t[u],output:e});let s=a.contentBlocks?[...a.contentBlocks]:a.contentBlocks;if(s&&-1!==m){let t=s[m];s[m]={type:"tool_call",toolCall:{...t.toolCall,output:e},turnId:t.turnId}}let l=[...r.messages];return l[n]={...a,toolCalls:t,contentBlocks:s},{messages:l}}}let m=nD(t,r.messages,a),p=-1===m?void 0:r.messages[m];if(!p||!(null==(n=p.toolCalls)?void 0:n.length))return r;let h=[...p.toolCalls],f=h.findIndex(e=>void 0===e.output);-1!==f&&(h[f]={...h[f],output:e});let x=[...null!=(u=p.contentBlocks)?u:[]];for(let t=0;t<x.length;t++){let r=x[t];if("tool_call"===r.type&&void 0===r.toolCall.output){x[t]={type:"tool_call",toolCall:{...r.toolCall,output:e},turnId:r.turnId};break}}let g=[...r.messages];return g[m]={...p,toolCalls:h,contentBlocks:x},{messages:g}})},completeStreaming(){r(e=>{let r=e.messages.map(e=>e.streaming?{...e,streaming:!1}:e);return nF(t,r),{messages:r,isStreaming:!1}})},completeAgentStreaming(a,s,l){let o=n().isStreaming;r(e=>{let r=e.messages.filter(nA).length,n=e.messages.map(e=>e.streaming?(!s||e.taskId!==s)&&(s||e.taskId)?e:{...e,streaming:!1}:e),l=n.filter(nA).length,o=n.some(e=>e.streaming&&!e.taskId);return r!==l&&console.warn("[ChatStore:completeAgentStreaming] main msgs changed ".concat(r," -> ").concat(l,", agentName=").concat(a,", taskId=").concat(s)),nF(t,n),{messages:n,isStreaming:o}}),!o||n().isStreaming||l||e()},takeRoundReplies(){let{messages:e}=n(),r=e.slice(t.roundStart).filter(e=>"assistant"===e.role&&!e.taskId);return t.roundStart=e.length,r},noteSnapshot(e,r){t.lastSnapshot={sessionId:e,messages:r}},takeReplaySnapshot(){let e=n().sessionId;return t.lastSnapshot&&e&&t.lastSnapshot.sessionId===e?t.lastSnapshot.messages:null},dropOptimisticSend(e){let{messages:a}=n(),s=a.findIndex(t=>t.clientMsgId===e);if(-1===s)return;let l=a.filter((e,t)=>{var r,n;return t!==s&&!(t>s&&e.streaming&&!e.taskId&&!e.content&&!(null==(r=e.toolCalls)?void 0:r.length)&&!(null==(n=e.contentBlocks)?void 0:n.length))});nM(t,l),t.roundStart=Math.min(t.roundStart,l.length),r({messages:l,isStreaming:l.some(e=>e.streaming&&!e.taskId)})},setSessionId(e){r({sessionId:e})},setMessages(e){nM(t,e),t.roundStart=e.length,r({messages:e})},markDeleted(e,t,a){var s;let{messages:l}=n(),o=new Set(e),i=[];for(let e=0;e<l.length;e++)"user"!==l[e].role||l[e].taskId||i.push(e);let c=i.length===a,d=c&&null!=(s=i[t])?s:-1,u=d;if(-1!==d)for(u=d+1;u<l.length&&"user"!==l[u].role;)u++;let m=!1,p=l.map((e,t)=>!e.deleted&&(t>=d&&t<u||o.has(e.id))?(m=!0,{...e,deleted:!0}):e);return m&&r({messages:p}),c},setTokenUsage(e,t){r({contextTokens:e,outputTokens:t})},setMaxContextTokens(e){e>0&&r({maxContextTokens:e})},setCompacting(e){r({isCompacting:e})},setSelectedAgentId(e){r({selectedAgentId:e})},setUsableAgentCount(e){nO({usableAgentCount:e})},setAccessLevel(e){r({accessLevel:e})},setSandboxAvailable(e){nO({sandboxAvailable:e})},setScreenSource(e){nO({screenSource:e})},setCameraSource(e){nO({cameraSource:e})},addPendingMessage(e){r(t=>({pendingMessages:[...t.pendingMessages,e]}))},removePendingMessage(e){r(t=>({pendingMessages:t.pendingMessages.filter((t,r)=>r!==e)}))},shiftPendingMessage(){let e=n().pendingMessages;if(0===e.length)return;let[t,...a]=e;return r({pendingMessages:a}),t},markChatSendFailed(e){r(r=>{let n=r.messages.findIndex(t=>t.clientMsgId===e);if(-1===n)return r;let a=r.messages.map((e,t)=>{var r,a;return t===n?{...e,sendFailed:!0}:!(t>n)||!e.streaming||e.taskId||e.content||(null==(r=e.toolCalls)?void 0:r.length)||(null==(a=e.contentBlocks)?void 0:a.length)?e:{...e,streaming:!1,interrupted:!0}});return nF(t,a),{messages:a,isStreaming:a.some(e=>e.streaming&&!e.taskId)}})},convergeStaleStreaming(){if(n().isCompacting||0===nE)return;let e=Date.now(),a=t=>t.timestamp<=nE&&nI(t,e);n().messages.some(a)&&r(e=>{let r=e.messages.map(e=>a(e)?{...e,streaming:!1,interrupted:!0}:e);return nF(t,r),{messages:r,isStreaming:r.some(e=>e.streaming&&!e.taskId)}})},clear(){nM(t,[]),t.roundStart=0,t.lastSnapshot=null,r({messages:[],isStreaming:!1,pendingMessages:[],sessionId:null,contextTokens:0,outputTokens:0,accessLevel:"full"})}})));return nz.add(r),r}function nW(e){nz.delete(e)}function nK(e){for(let t of nz)e(t)}let nG=nB(),nq=new Set;function n$(){return nG}function nY(e){return nq.add(e),()=>{nq.delete(e)}}let nJ=Object.assign(function(e){let t=(0,o.useSyncExternalStore)(nY,n$,n$);return(0,b.P)(t,e)},{getState:()=>nG.getState(),setState:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return nG.setState(...t)}}),nZ=new Map,nV=(0,b.v)(()=>({sessionId:null,anchor:0,cursor:0,messages:[],loading:!1}));function nX(e,t){let r=nV.getState();r.sessionId===e&&t<=r.anchor||nV.setState({sessionId:e,anchor:t,cursor:t,messages:[],loading:!1})}function nQ(e,t,r){let n=nV.getState();n.sessionId===e&&n.cursor===t&&nV.setState({messages:[...r,...n.messages],cursor:t-1,loading:!1})}async function n0(){var e,t;let r=null==(e=rU.getState().activeProject)?void 0:e.id,{sessionId:n,cursor:a,loading:s}=nV.getState();if(!r||!n||a<1||s)return;let l="".concat(n,"\0").concat(a),o=nZ.get(l);if(o)return void nQ(n,a,o);nV.setState({loading:!0});try{let e=null!=(t=(await u.FH.sessionLogs.archiveSegment(n,a,r)).messages)?t:[];if(nZ.size>=20){let e=nZ.keys().next().value;void 0!==e&&nZ.delete(e)}nZ.set(l,e),nQ(n,a,e)}catch(e){nV.setState({loading:!1})}}function n1(e){return{tabId:(0,E.$C)(),sessionId:null,store:e}}let n3=n1(n$()),n2=(0,b.v)(()=>({projectId:null,tabs:[n3],activeTabId:n3.tabId})),n5=e=>"halo_chat_tabs_".concat(e);function n4(){var e,t;let{projectId:r,tabs:n,activeTabId:a}=n2.getState();if(!r)return;let s=null!=(t=null==(e=n.find(e=>e.tabId===a))?void 0:e.sessionId)?t:null;try{localStorage.setItem(n5(r),JSON.stringify({active:s}))}catch(e){}}let n8=new Map;function n6(e,t){n8.set(e,{scrollTop:0,userScrolledUp:!1,hiddenTurns:0,...n8.get(e),...t})}function n9(e){return n2.getState().tabs.find(e)}function n7(e,t){n2.setState(r=>({tabs:r.tabs.map(r=>r.tabId===e?{...r,...t}:r)}))}function ae(e){return null===e.sessionId&&(!e.store||0===e.store.getState().messages.length)}function at(e,t){let r=n$().getState(),n=nB(),a=n.getState();return a.setSelectedAgentId(null!=t?t:r.selectedAgentId),a.setMaxContextTokens(r.maxContextTokens),e&&a.setSessionId(e),n}function ar(e){var t;let r=null==(t=rU.getState().activeProject)?void 0:t.id;r&&p.connected&&p.send({type:"subscribe",sessionId:e,projectId:r})}function an(e){let t=n9(t=>t.tabId===e);if(!t)return null;let r={},n=null,a=t.store;!a&&(r.store=a=at(t.sessionId),t.sessionId&&(n=t.sessionId,r.loading=!0,r.attempt=(null!=(s=t.attempt)?s:0)+1)),t.unread&&(r.unread=!1);var s,l,o=a;if(o!==nG)for(let e of(nG=o,nq))e();return n2.setState(t=>({activeTabId:e,tabs:Object.keys(r).length>0?t.tabs.map(t=>t.tabId===e?{...t,...r}:t):t.tabs})),t.sessionId&&nX(t.sessionId,null!=(l=t.archiveCount)?l:0),n4(),n}function aa(e){let t=as(e);t&&ar(t)}function as(e){let t=n2.getState(),r=t.tabs.find(t=>t.sessionId===e);if(r)return an(r.tabId);let n={tabId:(0,E.$C)(),sessionId:e},a=t.tabs.find(e=>e.tabId===t.activeTabId),s=a&&ae(a)?a:null;n2.setState({tabs:s?t.tabs.map(e=>e===s?n:e):[...t.tabs,n]});let l=an(n.tabId);return s&&(s.store&&nW(s.store),n8.delete(s.tabId)),l}function al(e){let t=n2.getState(),r=t.tabs.find(ae);if(r){var n;an(r.tabId),e&&(null==(n=r.store)||n.getState().setSelectedAgentId(e));return}let a=n1(at(null,e));n2.setState({tabs:[...t.tabs,a]}),an(a.tabId)}function ao(e){let t=n9(t=>t.sessionId===e);t&&function(e){let t=n2.getState(),r=t.tabs.findIndex(t=>t.tabId===e);if(-1===r)return;let n=t.tabs[r],a=t.tabs.filter(t=>t.tabId!==e);if(0===a.length&&(a=[n1(at(null))]),n2.setState({tabs:a}),t.activeTabId===e){let e=an(a[Math.min(r,a.length-1)].tabId);e&&ar(e)}else n4();n.store&&nW(n.store),n8.delete(e)}(t.tabId)}function ai(e){let t=n$();t.getState().sessionId!==e&&t.getState().setSessionId(e);let r=n9(e=>e.store===t);r&&r.sessionId!==e&&(n7(r.tabId,{sessionId:e}),n4())}function ac(e){var t;let r=[];return nK(t=>{t.getState().sessionId===e&&r.push(t)}),null!=(t=r[0])?t:null}function ad(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],r=e?ac(e):n$();if(r&&t&&r!==n$()){let e=n9(e=>e.store===r);e&&!e.unread&&n7(e.tabId,{unread:!0})}return r}function au(e){e.store&&(nW(e.store),n7(e.tabId,{store:void 0,loading:!1,unread:!1}))}function am(e){return"halo_goal_dismissed_".concat(e)}let ap=(0,b.v)(e=>({enabled:!1,setEnabled:t=>e({enabled:t}),goal:null,dismissedGoalId:null,setGoal:t=>e({goal:t}),dismiss:t=>{var r;e({dismissedGoalId:t});let n=null==(r=rU.getState().activeProject)?void 0:r.id;n&&localStorage.setItem(am(n),t)}}));async function ah(e){if(!ap.getState().enabled)return;let t=localStorage.getItem(am(e));ap.setState({dismissedGoalId:t});try{var r;let t=await u.FH.sessionLogs.goal(e);ap.getState().setGoal(null!=(r=t.goal)?r:null)}catch(e){}}let af=(0,b.v)(()=>({sessionId:null,anchor:0,cursor:0,messages:[],loading:!1}));function ax(e,t){let r=af.getState();r.sessionId===e&&t<=r.anchor||af.setState({sessionId:e,anchor:t,cursor:t,messages:[],loading:!1})}async function ag(){var e,t;let r=null==(e=rU.getState().activeProject)?void 0:e.id,{sessionId:n,cursor:a,loading:s}=af.getState();if(r&&n&&!(a<1)&&!s){af.setState({loading:!0});try{let e=await u.FH.sessionLogs.archiveSegment(n,a,r),s=af.getState();if(s.sessionId!==n||s.cursor!==a)return;af.setState({messages:[...null!=(t=e.messages)?t:[],...s.messages],cursor:a-1,loading:!1})}catch(t){let e=af.getState();e.sessionId===n&&e.cursor===a&&af.setState({loading:!1})}}}let av=new Map,ab=null,ay=!1;function aw(e){return av.get(e)}function aj(e,t,r){let n=av.get(e);if(n){n.messages=t,n.archiveCount=r;return}if(av.set(e,{messages:t,archiveCount:r,scrollOffset:0,atBottom:!0,stale:!1}),!(av.size<=20)){for(let e of av.keys())if(e!==ab)return void av.delete(e)}}function ak(e,t){let r=av.get(e);r&&(r.stale=t)}function aN(e){for(let t of av.keys())(t===e||t.startsWith("".concat(e,">")))&&av.delete(t)}function aS(e){return e.slice(e.lastIndexOf(">")+1)}function aC(e,t){if(t)return e.find(e=>void 0!==e.store&&!e.loading&&e.sessionId===t)}function aA(){let e=(0,b.v)(e=>({version:0,bump:()=>e(e=>({version:e.version+1}))}));return{useBus:e,bump:()=>e.getState().bump()}}let aI=aA(),aE=aI.useBus,aT=aI.bump;function a_(e,t){let r=(0,o.useRef)(null);return(0,o.useEffect)(()=>{let t=r.current;if(!t||"undefined"==typeof IntersectionObserver)return;let n=new IntersectionObserver(t=>{var r;(null==(r=t[0])?void 0:r.isIntersecting)&&e()},{rootMargin:"64px"});return n.observe(t),()=>n.disconnect()},[e,t]),r}var aP=r(63129),aM=r(22936),aF=r(70207),aD=r(4882),aL=r(87343);let aR=(0,b.v)(e=>({selectedAgent:null,selectedSessionId:null,selectedSession:null,loadedMessages:null,loading:!1,setSelectedSession:t=>e({selectedAgent:t.agentName||t.agentId,selectedSessionId:t.id,selectedSession:t,loadedMessages:null}),setLoadedMessages:t=>e({loadedMessages:t,loading:!1}),setLoading:t=>e({loading:t}),clearSelection:()=>e({selectedAgent:null,selectedSessionId:null,selectedSession:null,loadedMessages:null,loading:!1})}));function aH(e){let t=new Map;for(let r of e)t.set(r.id,{...r,children:[]});let r=[];for(let e of t.values())e.parentSessionId&&t.has(e.parentSessionId)?t.get(e.parentSessionId).children.push(e):r.push(e);for(let e of t.values())e.children.sort((e,t)=>t.updatedAt-e.updatedAt);return r}function az(e){let t=0;for(let r of e)t+=1+az(r.children);return t}function aO(e){let{value:t,onChange:r,onCommit:n,onCancel:a,textSize:s}=e;return(0,l.jsx)("input",{autoFocus:!0,value:t,onChange:e=>r(e.target.value),onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),n()):"Escape"===e.key&&(e.preventDefault(),a())},onBlur:n,className:(0,E.cn)("min-w-0 flex-1 rounded border border-[var(--border)] bg-[var(--background)] px-1 py-0.5 text-[var(--foreground)] outline-none focus:border-blue-500",s)})}function aU(e){let{nodes:t,depth:r,expanded:n,selectedSessionId:a,onToggle:s,onSelect:o,editingId:i,editingTitle:c,setEditingTitle:d,onStartRename:u,onCommitRename:m,onCancelRename:p}=e,h=(0,T.kj)(),f=ap(e=>e.enabled),x=12+16*r;return(0,l.jsx)(l.Fragment,{children:t.map(e=>{let t=a===e.id,g=!!e.stoppedAt,v=!!e.archivedAt,b=e.children.length>0,y=n.has(e.id);return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{onClick:()=>o(e),title:"Click to preview sub-agent session",className:(0,E.cn)("group flex w-full items-center gap-1.5 pr-3 py-1.5 text-left transition-colors border-b border-[var(--border)]/10",t?"bg-[var(--secondary)]":"hover:bg-[var(--secondary)]/40",v&&"opacity-50"),style:{paddingLeft:"".concat(x,"px")},children:[b?(0,l.jsx)("span",{onClick:t=>{t.stopPropagation(),s(e.id)},className:"shrink-0 flex items-center justify-center w-4 h-4 -ml-0.5 cursor-pointer rounded hover:bg-[var(--muted)]/50",children:(0,l.jsx)(F.A,{className:(0,E.cn)("h-2.5 w-2.5 text-[var(--muted-foreground)] transition-transform",y&&"rotate-90")})}):(0,l.jsx)("span",{className:"w-4 shrink-0 -ml-0.5"}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,l.jsx)("span",{className:"shrink-0 rounded bg-purple-900/50 px-1 py-0.5 text-[8px] text-purple-400",children:e.agentName||e.agentId}),i===e.id?(0,l.jsx)(aO,{value:c,onChange:d,onCommit:()=>m(e.id),onCancel:p,textSize:"text-[10px]"}):(0,l.jsxs)("p",{className:"truncate text-[10px] text-[var(--foreground)]",children:[f&&e.goalSessionId&&(0,l.jsx)("span",{title:"Goal-bound worker session",className:"mr-1",children:"\uD83C\uDFAF"}),e.title||"Untitled"]}),g&&(0,l.jsx)("span",{title:"Stopped",children:(0,l.jsx)(aP.A,{className:"h-2.5 w-2.5 shrink-0 text-[var(--muted-foreground)]"})}),v&&(0,l.jsx)("span",{title:"Archived",children:(0,l.jsx)(aM.A,{className:"h-2.5 w-2.5 shrink-0 text-amber-500"})}),b&&(0,l.jsxs)("span",{className:"text-[9px] text-[var(--muted-foreground)]",children:["+",az(e.children)]})]}),(0,l.jsxs)("p",{className:"text-[9px] text-[var(--muted-foreground)]",children:[e.exchangeCount," msgs \xb7 ",(0,E.fw)(e.updatedAt,h)]})]}),i!==e.id&&(0,l.jsx)("span",{onClick:t=>u(t,e),title:"Rename",className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 hover:text-blue-400 transition-opacity",children:(0,l.jsx)(eX.A,{className:"h-2.5 w-2.5"})})]}),y&&b&&(0,l.jsx)(aU,{nodes:e.children,depth:r+1,expanded:n,selectedSessionId:a,onToggle:s,onSelect:o,editingId:i,editingTitle:c,setEditingTitle:d,onStartRename:u,onCommitRename:m,onCancelRename:p})]},e.id)})})}let aB=e=>"halo_selected_session_".concat(e);function aW(e){let t=[];return!function e(r){for(let n of r)t.push(n),e(n.children)}(e),t}function aK(){let e=(0,T.kj)(),t=nJ(e=>e.isStreaming),r=nJ(e=>e.sessionId),n=rU(e=>e.activeProject),{selectedSessionId:a,setSelectedSession:s,clearSelection:i,setLoadedMessages:c,setLoading:d}=aR(),[m,p]=(0,o.useState)([]),[h,f]=(0,o.useState)(null),x=(0,o.useRef)(0),g=(0,o.useRef)(null),[v,b]=(0,o.useState)(new Set),[y,w]=(0,o.useState)(!0),[j,k]=(0,o.useState)(!1),N=(0,o.useRef)(null),[S,C]=(0,o.useState)(null),[A,I]=(0,o.useState)(""),_=(0,o.useRef)(""),P=(0,o.useRef)(null),M=(0,o.useRef)(!1);(0,o.useEffect)(()=>{(null==n?void 0:n.id)&&N.current&&N.current!==n.id&&(i(),av.clear(),N.current=null)},[null==n?void 0:n.id,i]);let D=(0,o.useCallback)(async function(){let{showSpinner:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{showSpinner:!0};if(!(null==n?void 0:n.path)){p([]),f(null),w(!1);return}if(null!==P.current){M.current=!0;return}M.current=!1,e&&w(!0);let t=n.path,r=Date.now();try{let e=await u.FH.sessionLogs.list(t,{includeArchived:!0,limit:30}),r=e.sessions,n=e.nextCursor;if(g.current!==t||x.current<=30||null===n)p(aH(r)),f(n);else{let e=new Set(r.map(e=>e.id));p(t=>{let a=t.filter(t=>t.updatedAt<n&&!e.has(t.id));return aH([...r,...aW(a)])})}g.current=t}catch(e){console.error("[Sessions] Failed to fetch:",e),p([]),f(null)}finally{e?setTimeout(()=>w(!1),Math.max(0,350-(Date.now()-r))):w(!1)}},[null==n?void 0:n.path]),L=(0,o.useCallback)(async()=>{if((null==n?void 0:n.path)&&null!==h&&!j){k(!0);try{let e=await u.FH.sessionLogs.list(n.path,{includeArchived:!0,limit:30,cursor:h}),t=e.sessions;p(e=>{let r=aW(e),n=new Set(r.map(e=>e.id)),a=[...r,...t.filter(e=>!n.has(e.id))];return aH(a)}),f(e.nextCursor)}catch(e){console.error("[Sessions] loadMore failed:",e)}finally{k(!1)}}},[null==n?void 0:n.path,h,j]);(0,o.useEffect)(()=>{x.current=m.length},[m.length]);let H=aE(e=>e.version),z=(0,o.useRef)(!0);(0,o.useEffect)(()=>{D({showSpinner:z.current}),z.current=!1},[D,H]),(0,o.useEffect)(()=>{a&&!y&&!new Set(aW(m).map(e=>e.id)).has(a)&&(i(),(null==n?void 0:n.id)&&localStorage.removeItem(aB(n.id)))},[m,a,y,i,null==n?void 0:n.id]);let O=(0,o.useCallback)(e=>{b(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),U=(0,o.useCallback)(async e=>{var t,r;let a=aR.getState();if(a.selectedSessionId===e.id&&(null!==a.loadedMessages||a.loading))return;s(e),d(!0),(null==n?void 0:n.id)&&localStorage.setItem(aB(n.id),e.id);let l=aC(n2.getState().tabs,e.id);if(null==l?void 0:l.store){ax(e.id,null!=(t=l.archiveCount)?t:0),c(l.store.getState().messages);return}let o=aw(e.id);if(o){ax(e.id,o.archiveCount),c(o.messages);return}let i=()=>aR.getState().selectedSessionId===e.id;try{let t=await u.FH.sessionLogs.get(e.id,null==n?void 0:n.path),a="number"==typeof t.archiveCount?t.archiveCount:0,s=null!=(r=t.messages)?r:[];if(aj(e.id,s,a),!i())return;ax(e.id,a),c(s)}catch(t){if(console.error("[Sessions] Load failed:",t),!i())return;ax(e.id,0),c([])}},[null==n?void 0:n.id,null==n?void 0:n.path,s,c,d]);(0,o.useEffect)(()=>{if(!(null==n?void 0:n.id)||y||0===m.length||N.current===n.id)return;N.current=n.id;let e=localStorage.getItem(aB(n.id));if(!e)return;let t=aW(m),r=t.find(t=>t.id===e);if(!r)return;let a=new Map(t.map(e=>[e.id,e])),s=[],l=r;for(;null==l?void 0:l.parentSessionId;)s.push(l.parentSessionId),l=a.get(l.parentSessionId);s.length>0&&b(e=>{let t=new Set(e);for(let e of s)t.add(e);return t}),U(r)},[null==n?void 0:n.id,y,m,U]);let B=(0,o.useCallback)(e=>{aa(e.id)},[]),W=(0,o.useCallback)(async(t,r)=>{if((t.stopPropagation(),null==n?void 0:n.path)&&await (0,E.fN)(e("chat.sessions.deleteTreeConfirm")))try{p(e=>e.filter(e=>e.id!==r)),ao(r),aN(r),a===r&&(i(),(null==n?void 0:n.id)&&localStorage.removeItem(aB(n.id))),await u.FH.sessionLogs.delete(r,n.path),aT()}catch(e){console.error("[Sessions] Delete failed:",e),aT()}},[null==n?void 0:n.path,null==n?void 0:n.id,a,i,e]),K=(0,o.useCallback)((e,t)=>{e.stopPropagation(),P.current=t.id,_.current=t.title||"",C(t.id),I(t.title||"")},[]),G=(0,o.useCallback)(()=>{P.current=null,C(null),I(""),M.current&&D({showSpinner:!1})},[D]),q=(0,o.useCallback)(async e=>{if(P.current!==e)return;let t=A.trim();if(!t||t===_.current||!(null==n?void 0:n.path))return void G();P.current=null,C(null),p(r=>(function e(t,r,n){return t.map(t=>t.id===r?{...t,title:n}:{...t,children:e(t.children,r,n)})})(r,e,t));try{await u.FH.sessionLogs.rename(e,t,n.path),aT()}catch(e){console.error("[Sessions] Rename failed:",e),aT()}},[A,null==n?void 0:n.path,G]),$=m.length,Y=a_(L,m.length);return(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 shrink-0 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(aF.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Sessions"}),$>0&&(0,l.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:["(",$,null!==h?"+":"",")"]}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:()=>D(),disabled:y,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",title:"Refresh sessions",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",y&&"animate-spin")})}),t&&(0,l.jsx)("span",{className:"rounded bg-blue-900/50 px-1.5 py-0.5 text-[9px] text-blue-400 animate-pulse",children:"running"})]}),(0,l.jsx)("div",{className:"flex-1 overflow-y-auto",children:y?(0,l.jsxs)("div",{className:"flex items-center justify-center py-8 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsx)(R.A,{className:"h-3.5 w-3.5 animate-spin mr-1.5"})," Loading..."]}):0===m.length?(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center gap-2 p-6 text-center",children:[(0,l.jsx)(aL.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"No session history yet"}),(0,l.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)]",children:"Start a conversation in the Chat panel"})]}):(0,l.jsxs)(l.Fragment,{children:[m.map(t=>{let n=t.children,s=v.has(t.id),o=t.id===r,i=a===t.id,c=!!t.archivedAt,d=n.length>0,u=az(n);return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{onClick:()=>U(t),onDoubleClick:()=>B(t),title:"Click to preview, double-click to load into chat",className:(0,E.cn)("group flex w-full items-center gap-1.5 px-3 py-2 text-left border-b border-[var(--border)]/30 transition-colors",i?"bg-[var(--secondary)]":"hover:bg-[var(--secondary)]/50",c&&"opacity-50"),children:[d?(0,l.jsx)("span",{onClick:e=>{e.stopPropagation(),O(t.id)},className:"shrink-0 flex items-center justify-center w-5 h-5 -ml-1 cursor-pointer rounded hover:bg-[var(--muted)]/50",children:(0,l.jsx)(F.A,{className:(0,E.cn)("h-3 w-3 text-[var(--muted-foreground)] transition-transform",s&&"rotate-90")})}):(0,l.jsx)("span",{className:"w-5 shrink-0 -ml-1"}),(0,l.jsx)(aF.A,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",o?"text-blue-400":"text-[var(--muted-foreground)]")}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5",children:[S===t.id?(0,l.jsx)(aO,{value:A,onChange:I,onCommit:()=>void q(t.id),onCancel:G,textSize:"text-[11px]"}):(0,l.jsx)("p",{className:"truncate text-[11px] font-medium text-[var(--foreground)]",children:t.title||"Untitled"}),o&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-blue-900/50 px-1 py-0.5 text-[8px] text-blue-400",children:"active"}),c&&(0,l.jsx)("span",{title:"Archived",children:(0,l.jsx)(aM.A,{className:"h-2.5 w-2.5 shrink-0 text-amber-500"})}),d&&(0,l.jsxs)("span",{className:"text-[9px] text-[var(--muted-foreground)]",children:["+",u]})]}),(0,l.jsxs)("p",{className:"text-[9px] text-[var(--muted-foreground)]",children:[t.exchangeCount," msgs \xb7 ",(0,E.fw)(t.updatedAt,e)]})]}),S!==t.id&&(0,l.jsx)("button",{onClick:e=>K(e,t),title:"Rename",className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 hover:text-blue-400 transition-opacity",children:(0,l.jsx)(eX.A,{className:"h-3 w-3"})}),(0,l.jsx)("button",{onClick:e=>W(e,t.id),className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 hover:text-red-400 transition-opacity",children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]}),s&&d&&(0,l.jsx)(aU,{nodes:n,depth:1,expanded:v,selectedSessionId:a,onToggle:O,onSelect:U,editingId:S,editingTitle:A,setEditingTitle:I,onStartRename:K,onCommitRename:q,onCancelRename:G})]},t.id)}),null!==h&&(0,l.jsx)("div",{ref:Y,className:"flex items-center justify-center py-2 text-[10px] text-[var(--muted-foreground)]",children:j?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin mr-1"})," Loading more…"]}):(0,l.jsx)("span",{className:"opacity-50",children:"scroll for more"})})]})})]})}let aG=/<<<CAPTURE(?::(screen|camera))?>>>/g,aq="web:screen",a$=e=>new Promise(t=>setTimeout(t,e));function aY(e){if(e)for(let t of e.getTracks())t.stop()}function aJ(e){return!!e&&e.getVideoTracks().some(e=>"live"===e.readyState)}function aZ(e){let t=document.createElement("video");return t.muted=!0,t.playsInline=!0,t.setAttribute("aria-hidden","true"),t.style.cssText="position:fixed;left:-10000px;top:0;width:160px;height:90px;opacity:0;pointer-events:none",t.srcObject=e,document.body.appendChild(t),t.play().catch(()=>{}),t}function aV(e,t){aY(e),t&&(t.srcObject=null,t.remove())}async function aX(e){e.paused&&await e.play().catch(()=>{}),e.videoWidth||await new Promise(t=>{e.addEventListener("loadedmetadata",()=>t(),{once:!0}),setTimeout(t,1e3)})}function aQ(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1920,r=e.videoWidth,n=e.videoHeight;if(!r||!n)return null;let a=Math.min(1,t/r),s=document.createElement("canvas");s.width=Math.max(1,Math.round(r*a)),s.height=Math.max(1,Math.round(n*a));let l=s.getContext("2d");return l?(l.drawImage(e,0,0,s.width,s.height),s):null}function a0(e,t){let r=e.getContext("2d").getImageData(0,0,e.width,e.height).data;if(r.length<4)return!0;let n=4*Math.max(1,Math.floor(r.length/4/1e3)),a=0,s=0;for(let e=0;e+2<r.length;e+=n)a++,r[e]<=t&&r[e+1]<=t&&r[e+2]<=t&&s++;return a>0&&s/a>.99}function a1(e){return e.toDataURL("image/jpeg",.85).split(",")[1]||null}function a3(e){return(null==e?void 0:e.id)===aq}let a2=null;function a5(){a2&&(aV(a2.stream,a2.video),a2=null)}let a4={web:!0,start:async()=>{var e;let t;try{t=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1})}catch(e){return null}let r=t.getVideoTracks()[0];if(!r)return aY(t),null;a5();let n={stream:t,video:aZ(t)};return a2=n,r.addEventListener("ended",()=>{if(a2!==n)return;a5();let e=nJ.getState();a3(e.screenSource)&&e.setScreenSource(null)}),"window"===(e=r.getSettings().displaySurface)?"capture.webSurfaceWindow":"browser"===e?"capture.webSurfaceTab":"capture.webSurfaceScreen"},grab:async()=>{for(let e=0;e<3;e++){e>0&&await a$(300);let t=a2;if(!t||!aJ(t.stream))break;await aX(t.video);let r=aQ(t.video);if(r&&!a0(r,8))return a1(r)}return null}};async function a8(){let e,t=window.CaptureController,r=t?new t:void 0;try{e=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1,...r?{controller:r}:{}})}catch(e){return null}try{null==r||r.setFocusBehavior("no-focus-change")}catch(e){}let n=aZ(e),a=null;try{for(let e=0;e<4;e++){var s;if(e>0&&await a$(300),await aX(n),(a=null!=(s=aQ(n,1/0))?s:a)&&!a0(a,8))break}}finally{aV(e,n)}if(!a)return null;let l=await new Promise(e=>a.toBlob(e,"image/png"));return l?URL.createObjectURL(l):null}let a6=null;function a9(e){var t;if(e.opening)return e.opening;aV(e.stream,e.video),e.stream=null,e.video=null;let r=navigator.mediaDevices.getUserMedia({video:(t=e.deviceId)?{deviceId:{exact:t},width:{ideal:1280},height:{ideal:720}}:{width:{ideal:1280},height:{ideal:720}},audio:!1}).then(t=>a6!==e?(aY(t),!1):(e.stream=t,e.video=aZ(t),e.openedAt=Date.now(),!0),()=>!1).finally(()=>{e.opening=null});return e.opening=r,r}let a7={web:!0,has:async()=>{try{return(await navigator.mediaDevices.enumerateDevices()).some(e=>"videoinput"===e.kind)}catch(e){return!1}},list:async()=>{try{return(await navigator.mediaDevices.enumerateDevices()).filter(e=>"videoinput"===e.kind).map((e,t)=>({deviceId:e.deviceId,label:e.label||"Camera ".concat(t+1)}))}catch(e){return[]}},requestPermission:async()=>{try{return aY(await navigator.mediaDevices.getUserMedia({video:!0})),!0}catch(e){return!1}},snap:async e=>{var t;let r=a6;if(!r||r.deviceId!==(null!=e?e:"")||!aJ(r.stream)&&!await (t=a9(r),Promise.race([t,a$(5e3).then(()=>!1)])))return null;let n=r.video;if(a6!==r||!n)return null;try{await aX(n);let e=r.openedAt+500-Date.now();e>0&&await a$(e);let t=aQ(n);return(!t||a0(t,10))&&(await a$(500),t=aQ(n)),t?a1(t):null}catch(e){return null}}};function se(){var e;let t=window.haloCapture;return t||("function"==typeof(null==(e=navigator.mediaDevices)?void 0:e.getDisplayMedia)?a4:void 0)}function st(){var e;let t=window.haloCamera;return t||("function"==typeof(null==(e=navigator.mediaDevices)?void 0:e.getUserMedia)?a7:void 0)}let sr=new Set(["PageUp","ArrowUp","Home"]),sn=e=>e.scrollHeight-e.scrollTop-e.clientHeight;function sa(e,t){let r=(0,o.useRef)(null);return(0,o.useLayoutEffect)(()=>{let n=e.current;if(!n)return;let a=function(e,t){let r=e.scrollTop,n=null,a=!1,s=r=>{e.scrollTop>0&&!function(e,t){for(let r=e instanceof Element?e:null;r&&r!==t;r=r.parentElement)if(r.scrollTop>0&&r.scrollHeight>r.clientHeight){let e=getComputedStyle(r).overflowY;if("auto"===e||"scroll"===e)return!0}return!1}(r,e)&&(t.current=!0)},l=()=>{1>=sn(e)&&(t.current=!1)},o=e=>{!e.ctrlKey&&(e.deltaY<0?s(e.target):e.deltaY>0&&l())},i=e=>{var t,r;n=null!=(r=null==(t=e.touches[0])?void 0:t.clientY)?r:null},c=e=>{var t;let r=null==(t=e.touches[0])?void 0:t.clientY;void 0!==r&&(null!==n&&r>n?s(e.target):null!==n&&r<n&&l(),n=r)},d=e=>{(sr.has(e.key)||" "===e.key&&e.shiftKey)&&s(e.target)},u=()=>{a=!1,80>=sn(e)&&(t.current=!1)},m=r=>{r.target!==e||r.offsetX<e.clientWidth||(a=!0,t.current=!0,window.addEventListener("pointerup",u,{once:!0}))},p=()=>{let n=e.scrollTop;n>r?sn(e)>80?t.current=!0:a||(t.current=!1):n<r&&sn(e)>1&&(t.current=!0),r=n},h={passive:!0};return e.addEventListener("wheel",o,h),e.addEventListener("touchstart",i,h),e.addEventListener("touchmove",c,h),e.addEventListener("keydown",d),e.addEventListener("pointerdown",m),e.addEventListener("scroll",p,h),{pin(){e.clientHeight>0&&e.scrollHeight<=e.clientHeight&&(t.current=!1),t.current||(e.scrollTop=e.scrollHeight,r=e.scrollTop)},destroy(){e.removeEventListener("wheel",o),e.removeEventListener("touchstart",i),e.removeEventListener("touchmove",c),e.removeEventListener("keydown",d),e.removeEventListener("pointerdown",m),e.removeEventListener("scroll",p),window.removeEventListener("pointerup",u)}}}(n,t);return r.current=a,()=>{a.destroy(),r.current=null}},[e,t]),(0,o.useCallback)(()=>{var e;return null==(e=r.current)?void 0:e.pin()},[])}var ss=r(32031),sl=r(75037);function so(e){var t;let r=null==(t=rU.getState().activeProject)?void 0:t.id;if(!r)return null;let n=nJ.getState();if(n.sessionId&&n.messages.some(t=>t.id===e))return n.sessionId.includes(">")?null:{sessionId:n.sessionId,projectId:r,archiveCount:si(nV.getState(),n.sessionId)};let a=aR.getState().selectedSessionId;return a&&!a.includes(">")?{sessionId:a,projectId:r,archiveCount:si(af.getState(),a)}:null}function si(e,t){return e.sessionId===t?e.anchor:0}function sc(e){let{messages:t,debugMode:r,readOnly:n,userOrdinalBase:a}=e;return(0,l.jsx)(sd,{messages:t,debugMode:r,readOnly:n,userOrdinalBase:a})}function sd(e){let{messages:t,debugMode:r,readOnly:n,userOrdinalBase:a}=e,s=(0,o.useMemo)(()=>(function(e){var t,r;let n=[],a=null,s=new Map;if(e.some(e=>"usage"===nu(e))){for(let r of e)if("assistant"===nu(r))for(let e of null!=(t=r.contentBlocks)?t:[])e.turnId&&s.set(e.turnId,r)}let l=new Map,o=[];for(let t of e)"context"!==nu(t)&&("user"===t.role?(a&&n.push(a),a={user:t,responses:[]}):a?t.turnId&&s.has(t.turnId)&&"usage"===nu(t)?o.push([t,a]):(a.responses.push(t),s.size>0&&l.set(t,a)):n.push({user:t,responses:[]}));for(let[e,t]of(a&&n.push(a),o))(null!=(r=l.get(s.get(e.turnId)))?r:t).responses.push(e);return n})(t),[t]),i=(0,o.useMemo)(()=>{if(n)return!1;let e=t.find(e=>"user"===e.role);return!!e&&null!==so(e.id)},[t,n]),c=null!=a?a:0;return(0,l.jsx)("div",{className:"flex flex-col",children:s.map(e=>{let t="user"===e.user.role?c++:-1;return(0,l.jsx)(su,{user:e.user,responses:e.responses,debugMode:r,userOrdinal:t,deletable:i},e.user.id)})})}let su=(0,o.memo)(function(e){let{user:t,responses:r,debugMode:n,userOrdinal:a,deletable:s}=e,o=!!t.deleted;return(0,l.jsxs)("div",{className:(0,E.cn)("border-b border-[var(--border)]/50 last:border-b-0",o&&"opacity-50"),children:["user"===t.role?sh(t.content)?(0,l.jsx)(sf,{content:t.content,userOrdinal:a,deleted:o,messageId:t.id,deletable:s}):sx(t.content)?(0,l.jsx)(sg,{content:t.content,userOrdinal:a,deleted:o,messageId:t.id,deletable:s}):(0,l.jsx)(sk,{content:t.content,localImages:t.localImages,timestamp:t.timestamp,userOrdinal:a,deleted:o,messageId:t.id,deletable:s,sendFailed:t.sendFailed}):(0,l.jsx)("div",{className:"px-3 py-2",children:(0,l.jsx)(sy,{message:t,debugMode:n})}),r.length>0&&(0,l.jsx)(sv,{responses:r,debugMode:n})]})},(e,t)=>e.user===t.user&&e.debugMode===t.debugMode&&e.userOrdinal===t.userOrdinal&&e.deletable===t.deletable&&e.responses.length===t.responses.length&&e.responses.every((e,r)=>e===t.responses[r]));function sm(e){let{copyText:t,userOrdinal:r,deleted:n,messageId:a,deletable:s}=e,i=(0,T.kj)(),[c,d]=(0,o.useState)(!1),u=s&&!n&&r>=0,m=async()=>{let e=so(a);e&&await (0,E.fN)(i("chat.exchange.deleteConfirm"))&&p.send({type:"exchange:delete",sessionId:e.sessionId,projectId:e.projectId,userOrdinal:r,archiveCount:e.archiveCount})};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(t).then(()=>{d(!0),setTimeout(()=>d(!1),2e3)}).catch(()=>{})},title:"Copy message",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--background)]/40",children:c?(0,l.jsx)(rP.A,{className:"h-3 w-3 text-emerald-400"}):(0,l.jsx)(ss.A,{className:"h-3 w-3"})}),u&&(0,l.jsx)("button",{onClick:m,title:"Delete message",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-red-900/30 hover:text-red-400",children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]})}let sp="rounded bg-red-900/30 px-1 py-px text-[9px] font-medium text-red-400";function sh(e){let t=e.match(/^\(from: session ([^)]+)\)\n([\s\S]*)$/);return t?{sessionId:t[1],body:t[2]}:null}function sf(e){var t;let{content:r,...n}=e,a=sh(r),s=null!=(t=a.sessionId.split(">").pop())?t:a.sessionId,{contentRef:i,clamped:c,expanded:d,toggle:u,contentStyle:m}=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20*e,r=(0,o.useRef)(null),[n,a]=(0,o.useState)(!1),[s,l]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{let t=r.current;if(!t)return;let n=20*e+4,s=new ResizeObserver(()=>{let e=t.scrollHeight>n;a(t=>t===e?t:e)});return s.observe(t),()=>s.disconnect()},[e]),{contentRef:r,clamped:n,expanded:s,toggle:()=>l(e=>!e),contentStyle:n?s?{maxHeight:"40vh",overflowY:"auto"}:{maxHeight:"".concat(t,"px"),overflow:"hidden"}:void 0}}(4);return(0,l.jsxs)("div",{className:"sticky top-0 z-10 px-3 py-2 border-b border-[var(--border)] border-l-2 border-l-emerald-500/70 bg-emerald-950/40 backdrop-blur-sm shadow-sm",children:[(0,l.jsx)("div",{className:"absolute top-1.5 right-1.5 z-20 flex items-center gap-0.5",children:(0,l.jsx)(sm,{copyText:a.body,...n})}),(0,l.jsxs)("button",{onClick:u,disabled:!c,className:"mb-1 flex w-full items-center gap-2 pr-16 text-left text-[10px] font-medium text-emerald-400 enabled:hover:text-emerald-300",children:[c&&(d?(0,l.jsx)(M.A,{className:"h-3 w-3"}):(0,l.jsx)(F.A,{className:"h-3 w-3"})),(0,l.jsx)("span",{children:"Report from sub-session"}),(0,l.jsx)("span",{className:"rounded bg-emerald-900/40 px-1 py-0.5 font-mono text-emerald-300/80",children:s}),n.deleted&&(0,l.jsx)("span",{className:sp,children:"deleted"})]}),(0,l.jsx)("div",{ref:i,style:m,children:(0,l.jsx)("div",{className:"text-xs text-[var(--foreground)] whitespace-pre-wrap leading-relaxed",children:a.body})})]})}function sx(e){let t=e.match(/^\[Conversation Summary — (\d+) messages compacted\]\n([\s\S]*)$/);return t?{olderCount:parseInt(t[1],10),body:t[2]}:null}function sg(e){let{content:t,...r}=e,n=sx(t),[a,s]=(0,o.useState)(!1);return(0,l.jsxs)("div",{className:"sticky top-0 z-10 border-l-2 border-l-purple-500/70 bg-purple-950/40 backdrop-blur-sm shadow-sm",children:[(0,l.jsx)("div",{className:"absolute top-1.5 right-1.5 z-20 flex items-center gap-0.5",children:(0,l.jsx)(sm,{copyText:n.body,...r})}),(0,l.jsxs)("button",{onClick:()=>s(!a),className:"flex w-full items-center gap-2 px-3 py-2 pr-14 text-[10px] font-medium text-purple-400 hover:bg-purple-900/30 transition-colors",children:[a?(0,l.jsx)(M.A,{className:"h-3 w-3"}):(0,l.jsx)(F.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{children:"Conversation summary sent to LLM"}),(0,l.jsxs)("span",{className:"rounded bg-purple-900/40 px-1 py-0.5 font-mono text-purple-300/80",children:[n.olderCount," messages compacted"]}),r.deleted&&(0,l.jsx)("span",{className:sp,children:"deleted"})]}),a&&(0,l.jsx)("div",{className:"px-3 pb-2 text-xs text-[var(--foreground)] whitespace-pre-wrap leading-relaxed max-h-[40vh] overflow-y-auto",children:n.body})]})}function sv(e){let{responses:t,debugMode:r}=e,n=(0,o.useMemo)(()=>{var e,n;let a=new Map;if(!r)return a;let s=t.filter(e=>"usage"===nu(e)&&e.usage);if(0===s.length)return a;let l=new Map;for(let e of t)if("assistant"===nu(e)&&e.contentBlocks)for(let t of e.contentBlocks)t.turnId&&l.set(t.turnId,e.id);let o=[];for(let t of s){let r=t.turnId?l.get(t.turnId):void 0;if(r){let n=null!=(e=a.get(r))?e:[];n.push(t),a.set(r,n)}else o.push(t)}if(o.length>0){let e=[...t].reverse().find(e=>"assistant"===nu(e));if(e){let t=null!=(n=a.get(e.id))?n:[];t.push(...o),a.set(e.id,t)}}return a},[r,t]);return(0,l.jsx)("div",{className:"px-3 py-2",children:t.map(e=>(0,l.jsx)(sy,{message:e,debugMode:r,usages:n.get(e.id)},e.id))})}function sb(e){var t,r,n,a,s,o,i,c;let{message:d}=e,u=d.usage;if(!u)return null;let m=null!=(r=null==(t=d.modelId)?void 0:t.replace(/^global\.anthropic\./,""))?r:"",p=u.inputTokens+(null!=(n=u.cacheReadInputTokens)?n:0)+(null!=(a=u.cacheWriteInputTokens)?a:0),h=p+u.outputTokens,f=p>0?Math.round(u.cacheReadInputTokens/p*100):0,x=e=>e>=1e3?"".concat((e/1e3).toFixed(1),"s"):"".concat(e,"ms"),g=new Date(d.timestamp),v=e=>e.toString().padStart(2,"0"),b="".concat(v(g.getMonth()+1),"-").concat(v(g.getDate())," ").concat(v(g.getHours()),":").concat(v(g.getMinutes()),":").concat(v(g.getSeconds()));return(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-1 py-0.5 text-[10px] font-mono text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px opacity-70",title:g.toLocaleString(),children:b}),(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px",children:[(0,l.jsx)("span",{className:"opacity-60",children:"in"}),(u.inputTokens/1e3).toFixed(1),"K"]}),(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px",children:[(0,l.jsx)("span",{className:"opacity-60",children:"out"}),(u.outputTokens/1e3).toFixed(1),"K"]}),(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px",children:[(0,l.jsx)("span",{className:"opacity-60",children:"ctx"}),(h/1e3).toFixed(1),"K"]}),(null!=(s=u.cacheReadInputTokens)?s:0)>0&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-emerald-900/30 px-1 py-px text-emerald-400",children:[(0,l.jsx)("span",{className:"opacity-60",children:"read"}),((null!=(o=u.cacheReadInputTokens)?o:0)/1e3).toFixed(1),"K"]}),(null!=(i=u.cacheWriteInputTokens)?i:0)>0&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-amber-900/30 px-1 py-px text-amber-400",children:[(0,l.jsx)("span",{className:"opacity-60",children:"write"}),((null!=(c=u.cacheWriteInputTokens)?c:0)/1e3).toFixed(1),"K"]}),f>0&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-emerald-900/30 px-1 py-px text-emerald-400",children:[(0,l.jsx)("span",{className:"opacity-60",children:"cache"}),f,"%"]}),null!=u.ttftMs&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px",children:[(0,l.jsx)("span",{className:"opacity-60",children:"ttft"}),x(u.ttftMs)]}),null!=u.e2eMs&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px",children:[(0,l.jsx)("span",{className:"opacity-60",children:"e2e"}),x(u.e2eMs)]}),u.thinkingEffort&&"off"!==u.thinkingEffort&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-purple-900/30 px-1 py-px text-purple-400",children:[(0,l.jsx)("span",{className:"opacity-60",children:"think"}),u.thinkingEffort]}),"off"===u.thinkingEffort&&(0,l.jsx)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px opacity-50",children:"think off"}),m&&(0,l.jsx)("span",{className:"inline-flex items-center gap-0.5 rounded bg-blue-900/30 px-1 py-px text-blue-400",children:m})]})}function sy(e){var t,r,n,a,s;let{message:i,debugMode:c,usages:d}=e,u=(0,T.kj)(),m=nu(i),p="assistant"===m,h=(0,o.useMemo)(()=>{if(!c||!p||!(null==d?void 0:d.length))return null;let e=new Map;for(let t of d)t.turnId&&e.set(t.turnId,t);return e.size>0?e:null},[c,p,d]);if("tool_call"===m||"tool_result"===m||"usage"===m||"context"===m)return null;if("agent_start"===m||"agent_done"===m)return c?(0,l.jsx)("div",{className:"my-0.5 px-1",children:(0,l.jsxs)("span",{className:(0,E.cn)("inline-block rounded px-1.5 py-0.5 text-[9px]","agent_start"===m?"bg-blue-900/40 text-blue-400":"bg-emerald-900/40 text-emerald-400"),children:[null!=(a=i.agentName)?a:"Agent",": ",i.content||("agent_start"===m?"started":"done")]})}):null;let f=p&&i.contentBlocks&&i.contentBlocks.length>0,x=f?i.contentBlocks.filter(e=>"tool_call"===e.type).length:0;if(i.interrupted&&!i.content&&!(null==(t=i.toolCalls)?void 0:t.length))return(0,l.jsxs)("div",{className:"flex items-center gap-1.5 py-1",children:[(0,l.jsx)(sl.A,{className:"h-3 w-3 text-amber-400"}),(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:u("chat.interrupted")})]});if(i.streaming&&!i.content&&!(null==(r=i.toolCalls)?void 0:r.length)&&!(null==(n=i.contentBlocks)?void 0:n.some(e=>"thinking"===e.type&&e.text.trim())))return(0,l.jsxs)("div",{className:"flex items-center gap-1.5 py-1",children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin text-[var(--primary)]"}),(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"Thinking..."})]});let g=[];if(f){let e=i.contentBlocks,t=0;for(let r=0;r<e.length;r++){let n=e[r];if("thinking"===n.type&&n.text.trim()?g.push(i.streaming&&r===e.length-1?(0,l.jsx)(sj,{text:n.text},"b".concat(r)):(0,l.jsx)(sw,{text:n.text},"b".concat(r))):"text"===n.type&&n.text.trim()?g.push((0,l.jsx)(sI,{text:n.text,streaming:i.streaming},"b".concat(r))):"tool_call"===n.type&&(t++,g.push((0,l.jsx)(sF,{call:n.toolCall,isStreaming:i.streaming,isLast:t===x},"b".concat(r)))),h&&n.turnId){let t=null==(s=e[r+1])?void 0:s.turnId;if(!t||t!==n.turnId){let e=h.get(n.turnId);e&&g.push((0,l.jsx)(sb,{message:e},"u".concat(n.turnId)))}}}if(h){let t=new Set(e.map(e=>e.turnId).filter(Boolean));for(let[e,r]of h)t.has(e)||g.push((0,l.jsx)(sb,{message:r},"u".concat(e)))}}else{if(p&&i.toolCalls&&i.toolCalls.length>0&&i.toolCalls.forEach((e,t)=>{g.push((0,l.jsx)(sF,{call:e,isStreaming:i.streaming,isLast:t===i.toolCalls.length-1},"tc".concat(t)))}),h)for(let[e,t]of h)g.push((0,l.jsx)(sb,{message:t},"u".concat(e)));if(i.content){let e=!p&&/^Compacting context /.test(i.content);g.push(p?(0,l.jsx)(sI,{text:i.content,streaming:i.streaming},"txt"):e?(0,l.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin shrink-0"}),(0,l.jsx)("span",{className:"whitespace-pre-wrap",children:i.content})]},"txt"):(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)] whitespace-pre-wrap",children:i.content},"txt"))}}return 0===g.length?null:(0,l.jsx)("div",{className:"py-1",children:g})}function sw(e){let{text:t}=e,[r,n]=(0,o.useState)(!1);return(0,l.jsxs)("div",{className:"my-1 rounded border border-purple-900/50 bg-purple-950/20",children:[(0,l.jsxs)("button",{onClick:()=>n(!r),className:"flex w-full items-center gap-1.5 px-2 py-1 text-left text-[11px] text-purple-400 hover:bg-purple-900/20 transition-colors",children:[r?(0,l.jsx)(M.A,{className:"h-3 w-3"}):(0,l.jsx)(F.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{className:"font-medium",children:"Thinking"}),(0,l.jsxs)("span",{className:"text-[10px] text-purple-400/60",children:[t.length.toLocaleString()," chars"]})]}),r&&(0,l.jsx)("pre",{className:"px-2 pb-2 text-[11px] text-[var(--foreground)] whitespace-pre-wrap break-words leading-relaxed max-h-[50vh] overflow-y-auto",children:t})]})}function sj(e){let{text:t}=e,r=(0,o.useRef)(null),n=sa(r,(0,o.useRef)(!1));return(0,o.useLayoutEffect)(n,[t,n]),(0,l.jsxs)("div",{"data-thinking-live":"",className:"my-1 rounded border border-purple-900/50 bg-purple-950/20",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-1 text-[11px] text-purple-400",children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),(0,l.jsx)("span",{className:"font-medium",children:"Thinking..."}),(0,l.jsxs)("span",{className:"text-[10px] text-purple-400/60",children:[t.length.toLocaleString()," chars"]})]}),(0,l.jsx)("pre",{ref:r,className:"max-h-40 overflow-y-auto px-2 pb-2 text-[11px] leading-relaxed text-[var(--muted-foreground)] whitespace-pre-wrap break-words",children:t})]})}function sk(e){let{content:t,localImages:r,timestamp:n,userOrdinal:a,deleted:s,messageId:i,deletable:c,sendFailed:d}=e,u=(0,T.kj)(),{text:m,media:p}=(0,o.useMemo)(()=>nb(t),[t]),[h,f]=(0,o.useState)(null),[x,g]=(0,o.useState)(!1),[v,b]=(0,o.useState)(!1),y=(0,o.useRef)(null),w=m.trim().split("\n"),j=w.length>1,k=(j?"".concat(w[0].trim(),"…"):w[0].trim())||(p.length>0||(null==r?void 0:r.length)?"(attachment)":""),N=j||v;(0,o.useEffect)(()=>{let e=y.current;if(!e)return;let t=new ResizeObserver(()=>{let t=e.scrollWidth>e.clientWidth;b(e=>e===t?e:t)});return t.observe(e),()=>t.disconnect()},[k]);let S=new Date(n),C=e=>e.toString().padStart(2,"0"),A=s?"text-[var(--muted-foreground)] line-through":"text-[var(--accent-foreground)]";return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:(0,E.cn)("sticky top-0 z-10 bg-[var(--accent)] border-b border-[var(--border)] border-l-2 px-4 py-2.5 shadow-sm",s||d?"border-l-red-500/60":"border-l-blue-500"),children:[(0,l.jsxs)("div",{className:"absolute top-1.5 right-1.5 z-20 flex items-center gap-0.5",children:[s&&(0,l.jsx)("span",{className:(0,E.cn)("mr-1",sp),children:"deleted"}),d&&!s&&(0,l.jsxs)("span",{className:"mr-1 inline-flex items-center gap-0.5 rounded bg-red-900/30 px-1 py-px text-[9px] font-medium text-red-400",title:u("chat.sendFailed"),children:[(0,l.jsx)(sl.A,{className:"h-2.5 w-2.5"}),u("chat.sendFailedBadge")]}),(0,l.jsx)(sm,{copyText:m,userOrdinal:a,deleted:s,messageId:i,deletable:c})]}),(0,l.jsxs)("button",{onClick:()=>g(e=>!e),disabled:!N,className:(0,E.cn)("flex w-full min-w-0 items-center gap-1.5 text-left",s||d?"pr-32":"pr-14"),children:[(0,l.jsx)("span",{className:"flex w-3 shrink-0 justify-center text-[var(--muted-foreground)]",children:N?x?(0,l.jsx)(M.A,{className:"h-3 w-3"}):(0,l.jsx)(F.A,{className:"h-3 w-3"}):"\xb7"}),(0,l.jsxs)("span",{className:"shrink-0 text-[10px] font-mono text-[var(--muted-foreground)] opacity-70",title:S.toLocaleString(),children:[C(S.getHours()),":",C(S.getMinutes())]}),(0,l.jsx)("span",{ref:y,className:(0,E.cn)("min-w-0 truncate text-xs",A,x&&N&&"invisible"),children:k})]}),x&&N&&(0,l.jsx)("div",{className:"mt-1 max-h-[40vh] overflow-y-auto",children:(0,l.jsx)("div",{className:(0,E.cn)("text-xs leading-relaxed whitespace-pre-wrap",A),children:m})})]}),r&&r.length>0&&(0,l.jsx)("div",{className:"flex flex-wrap gap-2 px-4 py-2 border-b border-[var(--border)]/30",children:r.map((e,t)=>(0,l.jsx)(tn.p,{src:e,alt:"screenshot",onClick:()=>f(e),className:"max-h-40 max-w-[240px] cursor-pointer rounded border border-[var(--border)] object-contain hover:ring-1 hover:ring-[var(--primary)]/40",placeholderClassName:"aspect-video w-40"},t))}),p.length>0&&(0,l.jsx)("div",{className:"px-4 py-2 border-b border-[var(--border)]/30",children:(0,l.jsx)(ny,{media:p})}),h&&(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-6",onClick:()=>f(null),children:(0,l.jsx)(tn.p,{src:h,alt:"screenshot",className:"max-h-[90vh] max-w-[92vw] object-contain",placeholderClassName:"aspect-video w-[min(92vw,640px)]"})})]})}function sN(e){let{children:t}=e;return(0,l.jsx)("pre",{className:"overflow-x-auto",children:t})}function sS(e){let{node:t,children:r}=e,n=ta(t);return null===n?(0,l.jsx)(sN,{children:r}):(0,l.jsx)(tc,{source:n,fallback:(0,l.jsx)(sN,{children:r})})}function sC(e){return rY(e)?e:(0,e7.Lv)(e)}function sA(e){let{pathRef:t,href:r,className:n,children:a}=e,s=(0,T.kj)(),[i,c]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!i)return;let e=setTimeout(()=>c(null),2500);return()=>clearTimeout(e)},[i]);let d=e=>{e.preventDefault(),e.stopPropagation(),(rZ?rZ(t):Promise.resolve("missing")).then(e=>{"ok"!==e&&c(s("pathLink.".concat(e)))})},u=(0,E.cn)(n,"cursor-pointer underline-offset-2 hover:underline");return(0,l.jsxs)("span",{className:"relative",children:[void 0!==r?(0,l.jsx)("a",{href:r,onClick:d,className:u,children:a}):(0,l.jsx)("code",{onClick:d,className:u,children:a}),i&&(0,l.jsx)("span",{role:"status",className:"absolute bottom-full left-0 z-10 mb-1 whitespace-nowrap rounded border border-[var(--border)] bg-[var(--card)] px-2 py-0.5 text-[11px] font-normal text-[var(--muted-foreground)] shadow",children:i})]})}function sI(e){let{text:t,streaming:r}=e,{text:n,media:a}=(0,o.useMemo)(()=>nb(t),[t]),s=(0,o.useMemo)(()=>n.replace(aG,"").replace(/<<<SHOW:[\s\S]*?>>>/g,"").trim(),[n]);return(0,l.jsxs)("div",{className:"prose prose-sm prose-invert max-w-none prose-p:my-1.5 prose-headings:my-2 prose-ul:my-1.5 prose-ol:my-1.5 prose-li:my-0.5 prose-pre:my-2 prose-code:text-amber-300 prose-code:before:content-none prose-code:after:content-none prose-pre:bg-[var(--secondary)] prose-pre:border prose-pre:border-[var(--border)] prose-a:text-[var(--primary)] prose-code:bg-[var(--secondary)] prose-code:px-1 prose-code:py-0.5 prose-code:rounded prose-code:text-xs prose-th:border prose-th:border-[var(--border)] prose-th:px-2 prose-th:py-1 prose-th:bg-[var(--secondary)] prose-td:border prose-td:border-[var(--border)] prose-td:px-2 prose-td:py-1",children:[s&&(0,l.jsx)(e7.oz,{remarkPlugins:[te.A],urlTransform:sC,components:{a(e){let{href:t,children:r,node:n,...a}=e,s=function(e){if(!e)return null;let t=e;try{t=decodeURIComponent(e)}catch(e){}return rY(t)}(t);return s?(0,l.jsx)(sA,{pathRef:s,href:t,className:a.className,children:r}):(0,l.jsx)("a",{href:t,target:"_blank",rel:"noopener noreferrer",...a,children:r})},img(e){let{src:t,alt:r,node:n,...a}=e;return(0,l.jsx)(tn.p,{src:t,alt:null!=r?r:"",...a,placeholderClassName:"my-2 aspect-[4/3] w-full max-w-sm"})},pre:r?sN:sS,code(e){let{className:t,children:r,node:n,...a}=e;if((null==t?void 0:t.startsWith("language-"))||String(r).includes("\n"))return(0,l.jsx)(sD,{className:t,children:r});let s="string"==typeof r?rY(r):null;return s?(0,l.jsx)(sA,{pathRef:s,className:t,children:r}):(0,l.jsx)("code",{className:t,...a,children:r})}},children:s}),(0,l.jsx)(ny,{media:a})]})}function sE(e){try{let t=JSON.parse(e);return"object"==typeof t&&null!==t?t:null}catch(e){return null}}let sT={node_read:"file_read",node_write:"file_write",node_edit:"file_edit",node_list_dir:"file_list",node_grep:"grep",node_glob:"glob",node_run:"shell_exec"},s_="__TOOL_ERROR__",sP="__TOOL_WARN__",sM={running:"bg-amber-400 animate-pulse",success:"bg-emerald-400",warn:"bg-yellow-400",error:"bg-red-400"};function sF(e){let{call:t,isStreaming:r,isLast:n}=e,[a,s]=(0,o.useState)(!1),i=function(e,t,r){var n;if(!e.output&&""!==e.output)return"running";let a=null!=(n=e.output)?n:"";return a.startsWith(s_)?"error":a.startsWith(sP)?"warn":"success"}(t,r,0),c=void 0!==t.output&&""!==t.output,{summary:d}=(0,o.useMemo)(()=>(function e(t,r){let n=sE(r),a=sT[t];if(n&&a){let{node:t,...r}=n,s=e(a,JSON.stringify(r));return"string"==typeof t&&t?{...s,summary:"".concat(t,": ").concat(s.summary)}:s}if(n){var s,l,o,i,c,d,u,m,p,h,f,x,g,v,b,y,w,j,k,N,S,C,A;switch(t){case"shell_exec":return{summary:String(null!=(l=null!=(s=n.command)?s:n.cmd)?l:"")||r};case"file_read":return{summary:String(null!=(c=null!=(i=null!=(o=n.path)?o:n.file)?i:n.filePath)?c:"")||r};case"file_write":{let e=String(null!=(m=null!=(u=null!=(d=n.path)?d:n.file)?u:n.filePath)?m:""),t=String(null!=(p=n.content)?p:"");return{summary:e,detail:t?"".concat(t.length," chars"):void 0}}case"file_edit":return{summary:String(null!=(x=null!=(f=null!=(h=n.path)?h:n.file)?f:n.filePath)?x:"")};case"file_list":return{summary:String(null!=(b=null!=(v=null!=(g=n.path)?g:n.directory)?v:n.dir)?b:".")};case"grep":{let e=String(null!=(w=null!=(y=n.pattern)?y:n.query)?w:""),t=n.path?" in ".concat(n.path):"",r=n.include?" (".concat(n.include,")"):"";return{summary:'"'.concat(e,'"').concat(t).concat(r)}}case"glob":{let e=String(null!=(k=null!=(j=n.pattern)?j:n.glob)?k:""),t=n.path?" in ".concat(n.path):"";return{summary:"".concat(e).concat(t)}}case"web_fetch":return{summary:String(null!=(N=n.url)?N:"")};case"delegate_task":{let e=String(null!=(S=n.agent_id)?S:""),t=String(null!=(A=null!=(C=n.task)?C:n.input)?A:""),r=t.length>100?t.slice(0,100)+"...":t;return{summary:e?"→ ".concat(e,": ").concat(r):r}}}}return{summary:r}})(t.name,t.input),[t.name,t.input]),u=(0,o.useMemo)(()=>{var e;return c?function(e,t){let r=sE(t);if(r){let e=r.toolResult;if(null==e?void 0:e.content){let t=e.content;if(Array.isArray(t)&&t.length>0&&t[0].text)return t[0].text}if("string"==typeof r.text)return r.text;if("string"==typeof r.result)return r.result;if("string"==typeof r.output)return r.output}return t}(t.name,(e=t.output).startsWith(s_+"\n")?e.slice(s_.length+1):e.startsWith(sP+"\n")?e.slice(sP.length+1):e):""},[t.name,t.output,c]),m=u.length>120?u.slice(0,120)+"...":u;return(0,l.jsxs)("div",{className:"my-0.5 text-[12px] font-mono",children:[(0,l.jsxs)("button",{onClick:()=>s(!a),className:"flex w-full items-center gap-1.5 rounded px-1 py-0.5 hover:bg-[var(--secondary)]/60 transition-colors text-left group",children:[(0,l.jsx)("span",{className:(0,E.cn)("h-2 w-2 shrink-0 rounded-full",sM[i])}),a?(0,l.jsx)(M.A,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}):(0,l.jsx)(F.A,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"shrink-0 font-semibold text-[var(--foreground)]",children:t.name}),(0,l.jsx)("span",{className:"truncate text-[var(--muted-foreground)]",children:d})]}),a&&(0,l.jsxs)("div",{className:"ml-[22px] mt-0.5 mb-1 rounded border border-[var(--border)] bg-[var(--card)] overflow-hidden",children:[(0,l.jsxs)("div",{className:"border-b border-[var(--border)] px-2.5 py-1.5",children:[(0,l.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-[var(--muted-foreground)] opacity-60 mb-0.5",children:"IN"}),(0,l.jsx)("pre",{className:"text-[11px] text-[var(--foreground)] whitespace-pre-wrap break-all leading-relaxed",children:d})]}),c&&(0,l.jsxs)("div",{className:"px-2.5 py-1.5",children:[(0,l.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-[var(--muted-foreground)] opacity-60 mb-0.5",children:"OUT"}),(0,l.jsx)("pre",{className:(0,E.cn)("text-[11px] whitespace-pre-wrap break-all leading-relaxed max-h-[200px] overflow-y-auto","error"===i?"text-red-400":"warn"===i?"text-yellow-300":"text-[var(--foreground)]"),children:u})]}),"running"===i&&(0,l.jsxs)("div",{className:"px-2.5 py-1.5 flex items-center gap-1.5",children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin text-amber-400"}),(0,l.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:"Running..."})]})]}),!a&&c&&m&&(0,l.jsx)("div",{className:"ml-[22px] text-[11px] text-[var(--muted-foreground)] truncate",children:m})]})}function sD(e){let{children:t,className:r}=e,[n,a]=(0,o.useState)(!1),s=String(t).replace(/\n$/,""),i=(null==r?void 0:r.replace("language-",""))||"";return(0,l.jsxs)("div",{className:"relative group",children:[i&&(0,l.jsx)("span",{className:"block mb-1 text-[9px] leading-none text-[var(--muted-foreground)] opacity-60",children:i}),(0,l.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(s).then(()=>{a(!0),setTimeout(()=>a(!1),2e3)})},className:"absolute top-1 right-1 rounded p-1 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 hover:bg-[var(--accent)] transition-opacity",children:n?(0,l.jsx)(rP.A,{className:"h-3 w-3 text-emerald-400"}):(0,l.jsx)(ss.A,{className:"h-3 w-3"})}),(0,l.jsx)("code",{className:r,children:t})]})}var sL=r(8985),sR=r(98285),sH=r(16936),sz=r(30906),sO=r(73082),sU=r(78153),sB=r(57482),sW=r(48253),sK=r(37784);let sG=aA(),sq=sG.useBus,s$=sG.bump,sY=[{name:"/session",description:"Manage sessions (new/list/switch/stop/interrupt/compact/context)",type:"server",argHint:"<verb>"},{name:"/clear",description:"Clear chat (alias for /session new)",type:"client"},{name:"/help",description:"Show available commands",type:"client"}],sJ=[];async function sZ(e,t,r){try{sJ=(await u.FH.commands.list(e,t,r)).commands.map(e=>({name:e.slashName,description:e.description,type:e.type,argHint:e.argHint,source:e.source,skillId:e.skillId,verbs:e.verbs}))}catch(e){sJ=[]}}function sV(){let e=sJ.length>0?sJ:sY;return ap.getState().enabled?e:e.filter(e=>"/goal"!==e.name)}function sX(e){let{commands:t,selectedIndex:r,onSelect:n}=e,a=(0,o.useRef)(null);return((0,o.useEffect)(()=>{var e;let t=null==(e=a.current)?void 0:e.children[r];null==t||t.scrollIntoView({block:"nearest"})},[r]),0===t.length)?null:(0,l.jsx)("div",{ref:a,className:"absolute bottom-full left-3 right-3 mb-1 max-h-48 overflow-y-auto rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-lg z-20",children:t.map((e,t)=>(0,l.jsxs)("button",{onMouseDown:t=>{t.preventDefault(),n(e)},className:"flex w-full items-center gap-3 px-3 py-2 text-left text-sm transition-colors ".concat(t===r?"bg-[var(--accent)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)("span",{className:"font-mono font-medium text-[var(--primary)]",children:e.name}),e.argHint&&(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:e.argHint}),(0,l.jsx)("span",{className:"flex-1 truncate text-xs",children:e.description})]},e.name))})}function sQ(e){let{matches:t,selectedIndex:r,onSelect:n,dirs:a=!1}=e,s=(0,o.useRef)(null);return((0,o.useEffect)(()=>{var e;let t=null==(e=s.current)?void 0:e.children[r];null==t||t.scrollIntoView({block:"nearest"})},[r]),0===t.length)?null:(0,l.jsx)("div",{ref:s,className:"absolute bottom-full left-3 right-3 mb-1 max-h-48 overflow-y-auto rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-lg z-20",children:t.map((e,t)=>{var s;let o=ea(e),i=a?_.A:o.Icon,c=a?"text-amber-500":o.color,d=null!=(s=e.split("/").pop())?s:e,u=e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";return(0,l.jsxs)("button",{onMouseDown:t=>{t.preventDefault(),n(e)},className:(0,E.cn)("flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm transition-colors",t===r?"bg-[var(--accent)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)(i,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",c)}),(0,l.jsx)("span",{className:"truncate font-medium",children:d}),u&&(0,l.jsx)("span",{className:"ml-auto truncate text-xs text-[var(--muted-foreground)] opacity-60",children:u})]},e)})})}let s0=(e,t,r)=>Math.min(r,Math.max(t,e));function s1(e){let{src:t,onConfirm:r,onCancel:n}=e,a=(0,T.kj)(),s=(0,o.useRef)(null),c=(0,o.useRef)(null),[d,u]=(0,o.useState)(null),[m,p]=(0,o.useState)(null),[h,f]=(0,o.useState)(null),x=(0,o.useRef)(null),g=(0,o.useRef)(!1);(0,o.useLayoutEffect)(()=>{let e=s.current;if(!e)return;let t=new ResizeObserver(()=>{p({w:e.clientWidth,h:e.clientHeight}),f(null)});return t.observe(e),()=>t.disconnect()},[]);let v=d&&m?function(e,t,r,n){let a=Math.min(r/e,n/t),s=e*a,l=t*a;return{x:(r-s)/2,y:(n-l)/2,w:s,h:l}}(d.w,d.h,m.w,m.h):null,b=(0,o.useCallback)(async()=>{var e;let t=c.current;if(g.current||!t||!d)return;g.current=!0;let a=function(e,t,r,n){let a={x:0,y:0,w:r,h:n};if(!e||e.w<8||e.h<8||t.w<=0||t.h<=0)return a;let s=r/t.w,l=n/t.h,o=s0(Math.round((e.x-t.x)*s),0,r),i=s0(Math.round((e.y-t.y)*l),0,n),c=s0(Math.round((e.x+e.w-t.x)*s),0,r),d=s0(Math.round((e.y+e.h-t.y)*l),0,n);return c-o<1||d-i<1?a:{x:o,y:i,w:c-o,h:d-i}}(h,null!=v?v:{x:0,y:0,w:0,h:0},d.w,d.h),s=document.createElement("canvas");s.width=a.w,s.height=a.h,null==(e=s.getContext("2d"))||e.drawImage(t,a.x,a.y,a.w,a.h,0,0,a.w,a.h);let l=await new Promise(e=>s.toBlob(e,"image/png"));l?r(new File([l],function(e){let t=e=>String(e).padStart(2,"0");return"screenshot-".concat(e.getFullYear()).concat(t(e.getMonth()+1)).concat(t(e.getDate()),"-").concat(t(e.getHours())).concat(t(e.getMinutes())).concat(t(e.getSeconds()),".png")}(new Date),{type:"image/png"})):n()},[h,v,d,r,n]);(0,o.useEffect)(()=>{let e=e=>{("Escape"===e.key||"Enter"===e.key)&&(e.preventDefault(),e.stopImmediatePropagation(),"Escape"===e.key?n():b())};return window.addEventListener("keydown",e,!0),()=>window.removeEventListener("keydown",e,!0)},[b,n]);let y=e=>{let t=s.current.getBoundingClientRect();return{x:s0(e.clientX-t.left,v.x,v.x+v.w),y:s0(e.clientY-t.top,v.y,v.y+v.h)}};return(0,i.createPortal)((0,l.jsxs)("div",{role:"dialog","aria-label":a("capture.screenshotHint"),className:"fixed inset-0 z-[10000] flex select-none flex-col bg-black/90",children:[(0,l.jsxs)("div",{className:"flex h-12 shrink-0 items-center justify-center gap-3 text-xs text-white/80",children:[(0,l.jsx)("span",{children:a("capture.screenshotHint")}),(0,l.jsx)("button",{onClick:()=>void b(),title:a("capture.screenshotConfirm"),className:"flex h-7 w-7 items-center justify-center rounded-md bg-[var(--primary)] text-[var(--primary-foreground)] transition-opacity hover:opacity-90",children:(0,l.jsx)(rP.A,{className:"h-4 w-4"})}),(0,l.jsx)("button",{onClick:n,title:a("capture.screenshotCancel"),className:"flex h-7 w-7 items-center justify-center rounded-md bg-white/10 text-white transition-colors hover:bg-white/20",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsxs)("div",{ref:s,className:"relative mx-4 mb-4 min-h-0 flex-1 cursor-crosshair touch-none",onPointerDown:e=>{0===e.button&&v&&(e.currentTarget.setPointerCapture(e.pointerId),x.current={...y(e),moved:!1})},onPointerMove:e=>{let t=x.current;if(!t||!v)return;let r=y(e);!t.moved&&3>Math.hypot(r.x-t.x,r.y-t.y)||(t.moved=!0,f({x:Math.min(t.x,r.x),y:Math.min(t.y,r.y),w:Math.abs(r.x-t.x),h:Math.abs(r.y-t.y)}))},onPointerUp:()=>{x.current=null},onDoubleClick:e=>{if(!h||!v)return;let t=y(e);t.x>=h.x&&t.x<=h.x+h.w&&t.y>=h.y&&t.y<=h.y+h.h&&b()},children:[(0,l.jsx)("img",{ref:c,src:t,alt:"",draggable:!1,onLoad:e=>u({w:e.currentTarget.naturalWidth,h:e.currentTarget.naturalHeight}),onError:n,className:"pointer-events-none absolute",style:v?{left:v.x,top:v.y,width:v.w,height:v.h}:{visibility:"hidden"}}),v&&(0,l.jsx)("div",{className:"pointer-events-none absolute overflow-hidden",style:{left:v.x,top:v.y,width:v.w,height:v.h},children:h?(0,l.jsx)("div",{className:"absolute border border-[var(--primary)] shadow-[0_0_0_9999px_rgba(0,0,0,0.55)]",style:{left:h.x-v.x,top:h.y-v.y,width:h.w,height:h.h}}):(0,l.jsx)("div",{className:"absolute inset-0 bg-black/30"})})]})]}),document.body)}var s3=r(25713);function s2(e,t,r){switch(t.type){case"ready":{let t=nr(e,r,"chatbar");return{state:t.state,effects:[...t.effects,{type:"busy",busy:!1}]}}case"error":return{state:e,effects:[{type:"error",message:t.message}]};case"insert-text":{let r=t.text;if("string"!=typeof r)return{state:e,effects:[{type:"warn",message:"insert-text without a string text ignored"}]};if(""===r)return{state:e,effects:[{type:"warn",message:"empty insert-text ignored"}]};if(r.length>1e4)return{state:e,effects:[{type:"warn",message:"insert-text over ".concat(1e4," chars ignored (").concat(r.length,")")}]};return{state:e,effects:[{type:"insert",text:r}]}}case"busy":{let r=t.busy;if("boolean"!=typeof r)return{state:e,effects:[{type:"warn",message:"busy without a boolean busy ignored"}]};return{state:e,effects:[{type:"busy",busy:r}]}}default:return{state:e,effects:[{type:"warn",message:"".concat(t.type," frame ignored on a chat-bar panel")}]}}}let s5={openId:null,busy:!1,closing:!1};function s4(e,t){var r,n;let a=e.chatbar;return null!=(n=null!=(r="zh"===t?null==a?void 0:a.title_zh:void 0)?r:null==a?void 0:a.title)?n:e.name}function s8(e){let{panel:t,dispatch:r,onInsert:n,anchor:a,disabled:s}=e,{t:i,lang:c}=(0,T.s9)(),d=em(),u=(0,o.useMemo)(()=>el.extensions.filter(e=>e.chatbar&&ej(e)).sort((e,t)=>e.chatbar.order-t.chatbar.order||e.id.localeCompare(t.id)),[d]),{openId:m,closing:p}=t,h=m?u.find(e=>e.id===m):void 0;return((0,o.useEffect)(()=>{m&&!h&&r({type:"unmount"})},[m,h,r]),(0,o.useEffect)(()=>{if(!h)return;let e=e=>{"Escape"!==e.key||e.defaultPrevented||r({type:"close"})};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[h,r]),(0,o.useEffect)(()=>{if(!p)return;let e=setTimeout(()=>r({type:"unmount"}),35e3);return()=>clearTimeout(e)},[p,r]),0===u.length)?null:(0,l.jsxs)(l.Fragment,{children:[u.map(e=>{var t;let n=s4(e,c),a=e.id===(null==h?void 0:h.id);return(0,l.jsx)("button",{onClick:()=>r({type:"toggle",id:e.id}),disabled:s,title:n,"aria-label":n,"aria-pressed":a,className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",a?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(ne,{info:e,icon:null==(t=e.chatbar)?void 0:t.icon,fallback:s3.A,className:"h-4 w-4"})},e.id)}),h&&(0,l.jsx)(s6,{info:h,title:s4(h,c),closeLabel:i("chat.chatbar.close"),anchor:a,closing:p,onClose:()=>r({type:"close"}),onHidden:()=>r({type:"unmount"}),onBusy:e=>r({type:"busy",busy:e}),onInsert:n},"".concat(h.id,"@").concat(h.version))]})}function s6(e){var t,r;let{info:n,title:a,closeLabel:s,anchor:c,closing:d,onClose:u,onHidden:m,onBusy:p,onInsert:h}=e,f=function(e,t,r){let[n,a]=(0,o.useState)(null),s=(0,o.useRef)(r);return(0,o.useLayoutEffect)(()=>{s.current=r}),(0,o.useLayoutEffect)(()=>{if(!e)return;let r=0,n=()=>{r=0;let n=e.getBoundingClientRect();if(0===n.width&&0===n.height)return void s.current();let l=function(e,t,r){let n=Math.min(420,t.width-16),a=Math.max(8,Math.min(e.left+12,t.width-n-8)),s=Math.max(80,Math.min(r,e.top-8-28-4)),l=Math.max(e.top-4,36+s);return{left:a,bottom:t.height-l,width:n,frameHeight:s}}(n,{width:window.innerWidth,height:window.innerHeight},t);a(e=>e&&e.left===l.left&&e.bottom===l.bottom&&e.width===l.width&&e.frameHeight===l.frameHeight?e:l)},l=()=>{r||(r=requestAnimationFrame(n))};n();let o=new ResizeObserver(l);for(let t=e;t&&t!==document.body;t=t.parentElement)o.observe(t);return window.addEventListener("resize",l),window.addEventListener("scroll",l,!0),window.addEventListener("pointermove",l,{passive:!0}),()=>{o.disconnect(),window.removeEventListener("resize",l),window.removeEventListener("scroll",l,!0),window.removeEventListener("pointermove",l),r&&cancelAnimationFrame(r)}},[e,t]),n}(c,null!=(r=null==(t=n.chatbar)?void 0:t.height)?r:160,m);return f?(0,i.createPortal)((0,l.jsxs)("div",{role:"dialog","aria-label":a,className:"fixed z-[55] flex flex-col overflow-hidden rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-lg",style:{left:f.left,bottom:f.bottom,width:f.width},children:[(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-[var(--border)] pl-2.5 pr-1 text-xs text-[var(--muted-foreground)]",style:{height:28},children:[(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate",children:a}),(0,l.jsx)("button",{onClick:u,title:s,"aria-label":s,className:"flex h-5 w-5 shrink-0 items-center justify-center rounded hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"min-h-0",style:{height:f.frameHeight},children:(0,l.jsx)(nd,{info:n,title:a,onFrame:s2,onInsert:h,onBusy:p,closeRequested:d,logTag:"ExtensionChatbar",compact:!0})})]}),document.body):null}let s9=["image/jpeg","image/png","image/gif","image/webp"];async function s7(e){if("image/svg+xml"!==e.type){let t=await createImageBitmap(e);return{source:t,width:t.width,height:t.height,close:()=>t.close()}}let t=URL.createObjectURL(e);try{let e=new Image;e.src=t,await e.decode();let r=e.naturalWidth||1,n=e.naturalHeight||1,a=1024/Math.max(r,n);return{source:e,width:Math.round(r*a),height:Math.round(n*a),close:()=>{}}}finally{URL.revokeObjectURL(t)}}async function le(e){try{let t=await s7(e),r=Math.min(1,1568/Math.max(t.width,t.height)),n=Math.max(1,Math.round(t.width*r)),a=Math.max(1,Math.round(t.height*r)),s=document.createElement("canvas");s.width=n,s.height=a;let l=s.getContext("2d");if(!l)throw Error("no 2d context");"image/svg+xml"===e.type&&(l.fillStyle="#fff",l.fillRect(0,0,n,a)),l.drawImage(t.source,0,0,n,a),t.close();let o=s.toDataURL("image/jpeg",.85).split(",")[1];if(!o)throw Error("encode failed");return{base64:o,mimeType:"image/jpeg"}}catch(t){if(s9.includes(e.type))return{base64:await new Promise((t,r)=>{let n=new FileReader;n.onload=()=>t(n.result.split(",")[1]),n.onerror=r,n.readAsDataURL(e)}),mimeType:e.type};throw t}}async function lt(e){if(s9.includes(e.type))return!0;try{return(await s7(e)).close(),!0}catch(e){return!1}}let lr=null,ln=null,la=-1;function ls(){let e=(0,T.kj)(),t=rU(e=>e.activeProject),r=tP(null==t?void 0:t.id);return t?(0,l.jsx)("button",{onClick:()=>{let e=t.id;if(r)return void tE.getState().setFaceOn(e,!1);window.dispatchEvent(new CustomEvent("halo:navigate",{detail:{tab:"explorer"}})),tT=!0,tx=!0,tE.getState().setFaceOn(e,!0)},"aria-pressed":r,title:e(r?"face.on":"face.button"),className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",r?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(sL.A,{className:(0,E.cn)("h-4 w-4",r&&"fill-current")})}):null}function ll(e){var t;let{cameras:r,onPick:n,onClose:a}=e,s=(0,T.kj)(),[i,c]=(0,o.useState)((null==(t=r[0])?void 0:t.deviceId)||""),d=(0,o.useRef)(null),u=(0,o.useRef)(null);return(0,o.useEffect)(()=>{let e=!1,t=()=>{if(u.current){for(let e of u.current.getTracks())e.stop();u.current=null}};return t(),navigator.mediaDevices.getUserMedia({video:!i||{deviceId:{exact:i}},audio:!1}).then(t=>{if(e){for(let e of t.getTracks())e.stop();return}u.current=t,d.current&&(d.current.srcObject=t,d.current.play().catch(()=>{}))}).catch(()=>{}),()=>{e=!0,t()}},[i]),(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-3",onClick:a,children:(0,l.jsxs)("div",{className:"flex w-[640px] max-w-[94vw] flex-col overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--background)] shadow-2xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:s("capture.cameraPick")}),(0,l.jsx)("button",{onClick:a,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsx)("video",{ref:d,muted:!0,playsInline:!0,className:"aspect-video w-full bg-black object-contain"}),(0,l.jsx)("div",{className:"flex flex-col gap-1 p-2",children:r.map(e=>(0,l.jsxs)("button",{onClick:()=>c(e.deviceId),title:e.label,className:(0,E.cn)("flex items-center gap-2 rounded px-2 py-1.5 text-left text-xs hover:bg-[var(--secondary)]",i===e.deviceId?"text-[var(--primary)]":"text-[var(--foreground)]"),children:[(0,l.jsx)(sR.A,{className:"h-3.5 w-3.5 shrink-0"}),(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e.label})]},e.deviceId))}),(0,l.jsx)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-4 py-3",children:(0,l.jsx)("button",{onClick:()=>{let e=r.find(e=>e.deviceId===i);e&&n(e)},className:"rounded-md bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-white hover:opacity-90",children:s("capture.cameraUse")})})]})})}let lo=["full","workspace","readonly"],li={full:{Icon:sH.A,color:"text-amber-400"},workspace:{Icon:sz.A,color:"text-blue-400"},readonly:{Icon:tL.A,color:"text-emerald-400"}};function lc(){let e=(0,T.kj)(),t=nJ(e=>e.accessLevel),r=nJ(e=>e.isStreaming),n=nJ(e=>e.sandboxAvailable),[a,s]=(0,o.useState)(!1),i=(0,o.useRef)(null);(0,o.useEffect)(()=>{null===n&&u.FH.health().then(e=>nJ.getState().setSandboxAvailable(!!e.sandbox)).catch(()=>{})},[n]),(0,o.useEffect)(()=>{if(!a)return;let e=e=>{i.current&&!i.current.contains(e.target)&&s(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[a]);let c=!1===n,d=c?"full":t,m=r||c,{Icon:p,color:h}=li[d];return(0,l.jsxs)("div",{ref:i,className:"relative",children:[(0,l.jsxs)("button",{onClick:()=>!m&&s(!a),disabled:m,title:c?e("chat.access.noSandbox"):e("chat.access.title"),className:(0,E.cn)("flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors",m?"opacity-50 cursor-default":"hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),children:[(0,l.jsx)(p,{className:(0,E.cn)("h-3 w-3",h)}),(0,l.jsx)("span",{children:e("chat.access.".concat(d))}),!m&&(0,l.jsx)(M.A,{className:"h-2.5 w-2.5"})]}),a&&(0,l.jsx)("div",{className:"absolute bottom-full left-0 mb-1 min-w-[180px] rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-lg z-30",children:lo.map(r=>{let{Icon:n,color:a}=li[r];return(0,l.jsxs)("button",{onClick:()=>{nJ.getState().setAccessLevel(r),s(!1)},className:(0,E.cn)("flex w-full items-start gap-2 px-3 py-1.5 text-left text-xs transition-colors",r===t?"bg-[var(--accent)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)(n,{className:(0,E.cn)("mt-0.5 h-3 w-3 shrink-0",a)}),(0,l.jsxs)("span",{className:"flex min-w-0 flex-col",children:[(0,l.jsx)("span",{children:e("chat.access.".concat(r))}),(0,l.jsx)("span",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:e("chat.access.".concat(r,"Desc"))})]}),r===t&&(0,l.jsx)(rP.A,{className:"ml-auto h-3.5 w-3.5 shrink-0 self-center text-[var(--primary)]"})]},r)})})]})}function ld(){return(0,l.jsx)("span",{className:"mx-1 h-4 w-px shrink-0 bg-[var(--border)]"})}function lu(){let e=(0,T.kj)(),t=nJ(e=>e.screenSource),r=nJ(e=>e.cameraSource);return[t&&{key:"screen",Icon:sO.A,name:t.name,unbind:()=>nJ.getState().setScreenSource(null)},r&&{key:"camera",Icon:sR.A,name:r.name,unbind:()=>nJ.getState().setCameraSource(null)}].filter(e=>!!e).map(t=>{let{key:r,Icon:n,name:a,unbind:s}=t;return(0,l.jsxs)("div",{className:"flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium text-[var(--primary)]",children:[(0,l.jsx)(n,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{className:"max-w-[80px] truncate",title:a,children:a}),(0,l.jsx)("button",{onClick:s,title:e("capture.unbind"),className:"rounded opacity-75 hover:opacity-100",children:(0,l.jsx)(e0.A,{className:"h-2.5 w-2.5"})})]},r)})}function lm(e){let{modelSupportsImage:t}=e,r=(0,T.kj)(),n=nJ(e=>e.screenSource),a=nJ(e=>e.cameraSource),s=nJ(e=>e.setScreenSource),i=nJ(e=>e.setCameraSource),[c,d]=(0,o.useState)(!1),[u,m]=(0,o.useState)([]),[p,h]=(0,o.useState)(!1),[f,x]=(0,o.useState)(!1),[g,v]=(0,o.useState)(!1),[b,y]=(0,o.useState)(!1),[w,j]=(0,o.useState)([]),[k,N]=(0,o.useState)(!1),S=(0,o.useRef)(null),C=se(),A=st();if((0,o.useEffect)(()=>{!t&&(n&&s(null),a&&i(null))},[t,n,a,s,i]),(0,o.useEffect)(()=>{var e,t=n,r=a;a3(t)||a5();let s=r&&(null==(e=st())?void 0:e.web)?r.id:null;a6&&a6.deviceId===s||(a6&&(aV(a6.stream,a6.video),a6=null),null!==s&&a9(a6={deviceId:s,stream:null,video:null,opening:null,openedAt:0}))},[n,a]),(0,o.useEffect)(()=>{if(!A||!t)return void v(!1);let e=!1;return A.has().then(t=>{e||v(t)}).catch(()=>{}),()=>{e=!0}},[A,t]),(0,o.useEffect)(()=>{if(!c&&!k)return;let e=e=>{S.current&&!S.current.contains(e.target)&&(d(!1),N(!1))},t=e=>{"Escape"===e.key&&(d(!1),N(!1))};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[c,k]),!C&&!A||!t)return null;let I=async()=>{if(n)return void s(null);if(null==C?void 0:C.web){let e=await C.start();e&&s({id:aq,name:r(e)});return}if(c)return void d(!1);d(!0),x(!0);try{let e=await C.list();m(e);let t=e.filter(e=>e.id.startsWith("screen:"));h(t.length>0&&t.every(e=>e.blank))}catch(e){m([])}finally{x(!1)}},_=(e,t)=>{if(y(!1),N(!1),e)try{localStorage.setItem("halo.cameraId",e)}catch(e){}i({id:e,name:t||r("capture.cameraName")})},P=async()=>{if(a)return void i(null);if(!await A.requestPermission())return void y(!0);let e=await A.list();if(0===e.length)return void _("",void 0);j(e),N(!0)};return(0,l.jsxs)("div",{ref:S,className:"relative flex items-center gap-1",children:[C&&(0,l.jsx)("button",{onClick:I,title:n?r("capture.bound",{name:n.name}):r("capture.button"),className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",n?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(sO.A,{className:"h-4 w-4"})}),A&&g&&(0,l.jsx)("button",{onClick:P,title:a?r("capture.cameraBound"):r("capture.cameraButton"),className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",a?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(sR.A,{className:"h-4 w-4"})}),b&&(0,l.jsxs)("div",{className:"absolute bottom-full left-0 z-50 mb-1 w-64 rounded-md border border-amber-500/30 bg-[var(--background)] p-2.5 text-xs text-amber-300 shadow-lg",children:[(0,l.jsx)("div",{children:r((null==A?void 0:A.web)?"capture.cameraPermissionHintWeb":"capture.cameraPermissionHint")}),(0,l.jsxs)("div",{className:"mt-1.5 flex items-center gap-3",children:[A&&!A.web&&(0,l.jsx)("button",{onClick:()=>A.openSettings(),className:"underline hover:text-amber-200",children:r("capture.openSettings")}),(0,l.jsx)("button",{onClick:()=>y(!1),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:r("capture.dismiss")})]})]}),k&&w.length>=1&&(0,l.jsx)(ll,{cameras:w,onPick:e=>_(e.deviceId,e.label),onClose:()=>N(!1)}),c&&(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-3",onClick:()=>d(!1),children:(0,l.jsxs)("div",{className:"flex h-[92vh] w-[96vw] flex-col overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--background)] shadow-2xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:r("capture.pickTitle")}),(0,l.jsx)("button",{onClick:()=>d(!1),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto p-4",children:[p&&C&&!C.web&&(0,l.jsxs)("div",{className:"mb-3 rounded-md border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-300",children:[(0,l.jsx)("div",{children:r("capture.permissionHint")}),(0,l.jsx)("button",{onClick:()=>C.openSettings(),className:"mt-1.5 underline hover:text-amber-200",children:r("capture.openSettings")})]}),f?(0,l.jsx)("div",{className:"py-8 text-center text-xs text-[var(--muted-foreground)]",children:r("capture.loading")}):0===u.length?(0,l.jsx)("div",{className:"py-8 text-center text-xs text-[var(--muted-foreground)]",children:r("capture.empty")}):(0,l.jsx)("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(220px,1fr))] gap-3",children:u.map(e=>(0,l.jsxs)("button",{onClick:()=>{s({id:e.id,name:e.name}),d(!1)},title:e.name,className:"flex min-w-0 flex-col gap-1.5 overflow-hidden rounded-lg border border-[var(--border)] p-2 text-left transition-colors hover:border-[var(--primary)] hover:bg-[var(--secondary)]",children:[e.thumb?(0,l.jsx)("img",{src:e.thumb,alt:e.name,className:"aspect-video w-full rounded object-cover bg-black/20"}):(0,l.jsx)("div",{className:"flex aspect-video w-full items-center justify-center rounded bg-black/20 text-[10px] text-[var(--muted-foreground)]",children:r("capture.noPreview")}),(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[e.icon&&(0,l.jsx)("img",{src:e.icon,alt:"",className:"h-4 w-4 shrink-0"}),(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs text-[var(--foreground)]",children:e.name})]})]},e.id))})]})]})})]})}function lp(e){let{disabled:t,onCapture:r,onNotice:n}=e,a=(0,T.kj)(),s=function(){var e,t;let r=null==(e=window.haloCapture)?void 0:e.screenshot;return"function"==typeof r?async()=>{let e=await r();return"string"==typeof e?"data:image/jpeg;base64,".concat(e):e}:"function"==typeof(null==(t=navigator.mediaDevices)?void 0:t.getDisplayMedia)?a8:void 0}(),[i,c]=(0,o.useState)(!1),[d,u]=(0,o.useState)(null),m=(0,o.useRef)(0);if((0,o.useEffect)(()=>()=>{(null==d?void 0:d.startsWith("blob:"))&&URL.revokeObjectURL(d)},[d]),!s)return null;let p=i||null!==d,h=async()=>{if(p){m.current++,c(!1),u(null);return}let e=++m.current;c(!0);let t=null;try{t=await s()}catch(e){}if(e!==m.current){"string"==typeof t&&t.startsWith("blob:")&&URL.revokeObjectURL(t);return}c(!1),t&&"object"==typeof t?n(a("capture.permissionHint")):t&&u(t)};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{onClick:h,disabled:t,title:p?a("capture.screenshotActive"):a("capture.screenshotButton"),className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",p?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(sU.A,{className:"h-4 w-4"})}),d&&(0,l.jsx)(s1,{src:d,onConfirm:e=>{u(null),r(e)},onCancel:()=>u(null)})]})}function lh(e){let{onCompact:t}=e,r=nJ(e=>e.messages),n=nJ(e=>e.contextTokens),a=nJ(e=>e.maxContextTokens),s=nJ(e=>e.isCompacting),i=nJ(e=>e.isStreaming),c=(0,o.useMemo)(()=>n>0?n:0,[n]);if(0===c||0===r.length||0===a)return null;let d=Math.min(c/a*100,100),u=(c/1e3).toFixed(2),m=2*Math.PI*8,p=r.length>5&&t&&!s&&!i;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ld,{}),(0,l.jsx)("div",{className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg",p&&"cursor-pointer hover:bg-[var(--secondary)]"),title:s?"Compacting...":"~".concat(u,"K / ").concat(a/1e3,"K tokens (").concat(Math.round(d),"%)").concat(p?"\nClick to compact context":""),onClick:p?t:void 0,children:(0,l.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 22 22",className:(0,E.cn)("transform -rotate-90",s&&"animate-pulse"),children:[(0,l.jsx)("circle",{cx:"11",cy:"11",r:8,fill:"none",stroke:"var(--muted-foreground)",strokeWidth:"2.5",opacity:"0.3"}),(0,l.jsx)("circle",{cx:"11",cy:"11",r:8,fill:"none",stroke:s?"#3b82f6":d<50?"#22c55e":d<70?"#eab308":d<85?"#f97316":"#ef4444",strokeWidth:"2.5",strokeDasharray:m,strokeDashoffset:m-d/100*m,strokeLinecap:"round",className:"transition-all duration-300"})]})})]})}function lf(e){let{onSend:t,disabled:r,isStreaming:n,onStop:a,onInterrupt:s,pendingMessages:c,onRemovePending:m,onCommand:p,onCompact:h,agentControl:f,debugControl:x}=e,g=(0,T.kj)(),v=(0,d.Uw)(e=>e.selectedText),b=(0,d.Uw)(e=>e.selectedRange),y=(0,d.Uw)(e=>e.activeTab),w=(0,d.Uw)(e=>e.contextEnabled),j=(0,d.Uw)(e=>e.setContextEnabled),[k,N]=(0,o.useState)(""),[S,C]=(0,o.useState)([]),[A,I]=(0,o.useState)(!1),[_,P]=(0,o.useState)(0),[M,F]=(0,o.useState)([]),[D,L]=(0,o.useState)(0),[R,H]=(0,o.useState)(0),[z,O]=(0,o.useState)(!1),[U,B]=(0,o.useState)(null),K=function(){let e=nJ(e=>e.selectedAgentId),t=rU(e=>{var t;return null==(t=e.activeProject)?void 0:t.path}),r=sq(e=>e.version),[n,a]=(0,o.useState)(!0);return(0,o.useEffect)(()=>{if(!t)return;let n=!1;return Promise.all([u.FH.agentConfigs.list(t),(r!==la&&(la=r,lr=null,ln=null),lr)?Promise.resolve(lr):(!ln&&(ln=u.FH.agentConfigs.models().then(e=>{let t={};for(let n of e.providers){var r;for(let e of n.models)t[e.id]=!!(null==(r=e.capabilities)?void 0:r.image)}return lr=t,t}).catch(()=>({}))),ln)]).then(t=>{var r;let[s,l]=t;if(n)return;let o=null!=(r=s.agents.find(t=>t.id===e))?r:s.agents[0],i=null==o?void 0:o.model;if(!i||!(i in l))return void a(!0);a(l[i])}).catch(()=>{n||a(!0)}),()=>{n=!0}},[e,t,r]),n}(),G=(0,o.useRef)(null);(0,o.useEffect)(()=>{let e=()=>{var e;return null==(e=G.current)?void 0:e.focus()};return window.addEventListener("halo:focus-chat-input",e),()=>window.removeEventListener("halo:focus-chat-input",e)},[]);let q=(0,o.useRef)(null),$=rU(e=>e.activeProject),Y=0===nJ(e=>e.usableAgentCount),J=ap(e=>e.enabled),Z=ap(e=>e.goal),V=nJ(e=>e.sessionId),X=J&&!!Z&&("intake"===Z.status||"running"===Z.status)&&V===Z.workerSessionId,Q=X&&!k.trim().startsWith("/"),ee=(0,o.useMemo)(()=>{var e,t;if(v&&y){let t=null!=(e=y.split("/").pop())?e:y,r=b?":".concat(b.startLine,"-").concat(b.endLine):"";return"".concat(t).concat(r," (").concat(v.length," chars)")}return y?null!=(t=y.split("/").pop())?t:y:null},[v,b,y]),er=(0,o.useMemo)(()=>{if(!k.startsWith("/")||/\s/.test(k))return[];if(!k.startsWith("/"))return[];let e=k.toLowerCase();return sV().filter(t=>t.name.startsWith(e))},[k]),en=(0,o.useMemo)(()=>(function(e){var t;let r=e.match(/^(\/\S+)\s+(\S*)$/);if(!r)return[];let n=sV().find(e=>e.name===r[1].toLowerCase());if(!(null==n||null==(t=n.verbs)?void 0:t.length))return[];let a=r[2].toLowerCase();return n.verbs.filter(e=>e.name.startsWith(a)&&e.name!==a).map(e=>({cmd:n,verb:e}))})(k),[k]),[ea,es]=(0,o.useState)(0);(0,o.useEffect)(()=>{es(0)},[en.length]);let el=(0,o.useCallback)(e=>{var t;N("".concat(e.cmd.name," ").concat(e.verb.name," ")),null==(t=G.current)||t.focus()},[]),eo=(0,o.useMemo)(()=>{let e=k.slice(0,R).match(/(^|\s)@scope\s+(\S*)$/);return e?{startIdx:e.index+e[1].length,query:e[2]}:null},[k,R]),ei=(0,o.useMemo)(()=>{if(eo)return null;let e=k.slice(0,R).match(/(^|\s)@(\S*)$/);return e?{startIdx:e.index+e[1].length,query:e[2]}:null},[k,R,eo]),[ec,ed]=(0,o.useState)([]);(0,o.useEffect)(()=>{if(!ei||z||!$)return void ed([]);let e=!1,t=setTimeout(()=>{u.FH.files.search($.id,ei.query,15).then(t=>{e||ed(t.matches.map(e=>e.path))}).catch(()=>{e||ed([])})},120);return()=>{e=!0,clearTimeout(t)}},[ei,z,$]);let eu=(0,o.useCallback)(e=>{if(!ei)return;let t=k.slice(0,ei.startIdx);N(t+k.slice(ei.startIdx+1+ei.query.length)),F(t=>t.includes(e)?t:[...t,e]),L(0),O(!1),requestAnimationFrame(()=>{if(G.current){let e=t.length;G.current.selectionStart=e,G.current.selectionEnd=e,G.current.focus(),H(e)}})},[k,ei]),[em,ep]=(0,o.useReducer)(function e(t,r){switch(r.type){case"toggle":if(t.openId!==r.id)return{openId:r.id,busy:!1,closing:!1};return e(t,{type:"close"});case"close":if(!t.openId)return t;return t.busy&&!t.closing?{...t,closing:!0}:s5;case"unmount":return t.openId?s5:t;case"busy":if(!t.openId)return t;if(!r.busy&&t.closing)return s5;return t.busy===r.busy?t:{...t,busy:r.busy}}},s5),[eh,ef]=(0,o.useState)(null);(0,o.useEffect)(()=>n2.subscribe((e,t)=>{e.activeTabId!==t.activeTabId&&ep({type:"unmount"})}),[]);let ex=(0,o.useCallback)(e=>{var t;let r=G.current;if(!r)return;let n=function(e,t,r,n){let a=Math.max(0,Math.min(t,e.length)),s=Math.max(a,Math.min(r,e.length));return{value:e.slice(0,a)+n+e.slice(s),caret:a+n.length}}(r.value,r.selectionStart,r.selectionEnd,e);(0,i.flushSync)(()=>{N(n.value),H(n.caret)}),r.selectionStart=n.caret,r.selectionEnd=n.caret;let a=document.getSelection();a&&a.rangeCount>0&&document.activeElement!==r&&(null==(t=a.anchorNode)?void 0:t.childNodes[a.anchorOffset])===r&&a.removeAllRanges(),r.style.height="auto",r.style.height=Math.min(r.scrollHeight,200)+"px"},[]),[eg,ev]=(0,o.useState)([]),[eb,ey]=(0,o.useState)(0);(0,o.useEffect)(()=>{if(!eo||!$)return void ev([]);let e=!1,t=setTimeout(()=>{u.FH.files.search($.id,eo.query,15,!0).then(t=>{e||ev(t.matches.map(e=>e.path))}).catch(()=>{e||ev([])})},120);return()=>{e=!0,clearTimeout(t)}},[eo,$]);let ew=(0,o.useCallback)(e=>{if(!eo)return;let t=k.slice(0,eo.startIdx),r=k.slice(R),n="@scope ".concat(e," ");N(t+n+r),ey(0),requestAnimationFrame(()=>{if(G.current){let e=t.length+n.length;G.current.selectionStart=e,G.current.selectionEnd=e,G.current.focus(),H(e)}})},[k,eo,R]),ej=(0,o.useCallback)(e=>{F(t=>t.filter(t=>t!==e))},[]),ek=(0,o.useCallback)(e=>{var t,r;let n=k.split(/\s+/),a=null!=(t=n[0])?t:"",s=n.slice(1).join(" ");if(e.argHint&&!s&&a!==e.name){N(e.name+" "),P(0),null==(r=G.current)||r.focus();return}null==p||p(e,s),N(""),P(0),G.current&&(G.current.style.height="auto")},[k,p]),eN=(0,o.useCallback)(e=>{let t=Array.from(e).filter(e=>e.type.startsWith("image/"));Promise.all(t.map(lt)).then(e=>{let r=t.filter((t,r)=>!e[r]);B(r.length>0?g("chat.attachUnsupported",{names:r.map(e=>e.name).join(", ")}):null);let n=t.filter((t,r)=>e[r]).map(e=>({file:e,preview:URL.createObjectURL(e)}));n.length>0&&C(e=>[...e,...n])})},[g]);(0,o.useEffect)(()=>{let e=e=>{var t;let r=null==(t=e.detail)?void 0:t.file;if(!r)return;K?eN([r]):B(g("chat.attachNoVision",{name:r.name}));let n=d.Uw.getState();n.setBottomTab("chat"),n.maximized&&n.setMaximized(!1),requestAnimationFrame(()=>{var e;return null==(e=G.current)?void 0:e.focus()})};return window.addEventListener("halo:attach-image",e),()=>window.removeEventListener("halo:attach-image",e)},[eN,K,g]);let eS=(0,o.useCallback)(e=>{C(t=>{let r=t[e];return(null==r?void 0:r.preview)&&URL.revokeObjectURL(r.preview),t.filter((t,r)=>r!==e)})},[]),eC=(0,o.useCallback)(async()=>{var e,r;let n=k.trim();if(!n&&0===S.length||Y)return;if(en.length>0)return void el(null!=(e=en[ea])?e:en[0]);if(n.startsWith("/")){if(er.length>0)return void ek(null!=(r=er[_])?r:er[0]);let e=sV().find(e=>{var t;return e.name===(null==(t=n.split(/\s+/)[0])?void 0:t.toLowerCase())});if(e)return void ek(e)}if(X)return;let a=[];for(let e of S)try{let{base64:t,mimeType:r}=await le(e.file);a.push({data:t,mimeType:r})}catch(e){console.error("[MessageInput] Image conversion failed:",e)}(n||a.length>0)&&t(n||"(image)",a.length>0?a:void 0,M.length>0?M:void 0),S.forEach(e=>{e.preview&&URL.revokeObjectURL(e.preview)}),C([]),F([]),N(""),G.current&&(G.current.style.height="auto")},[k,S,t,er,_,ek,M,en,ea,el,Y,X]),eA=(0,o.useCallback)(e=>{if(eg.length>0){if("ArrowDown"===e.key){e.preventDefault(),ey(e=>Math.min(e+1,eg.length-1));return}if("ArrowUp"===e.key){e.preventDefault(),ey(e=>Math.max(e-1,0));return}if("Tab"===e.key||"Enter"===e.key&&!e.nativeEvent.isComposing){e.preventDefault();let t=eg[eb];t&&ew(t);return}if("Escape"===e.key){e.preventDefault(),ev([]);return}}if(ec.length>0){if("ArrowDown"===e.key){e.preventDefault(),L(e=>Math.min(e+1,ec.length-1));return}if("ArrowUp"===e.key){e.preventDefault(),L(e=>Math.max(e-1,0));return}if("Tab"===e.key||"Enter"===e.key&&!e.nativeEvent.isComposing){e.preventDefault();let t=ec[D];t&&eu(t);return}if("Escape"===e.key){e.preventDefault(),O(!0);return}}if(en.length>0){if("ArrowDown"===e.key){e.preventDefault(),es(e=>Math.min(e+1,en.length-1));return}if("ArrowUp"===e.key){e.preventDefault(),es(e=>Math.max(e-1,0));return}if("Tab"===e.key){e.preventDefault();let t=en[ea];t&&el(t);return}if("Escape"===e.key){e.preventDefault(),es(0);return}}if(er.length>0){if("ArrowDown"===e.key){e.preventDefault(),P(e=>Math.min(e+1,er.length-1));return}if("ArrowUp"===e.key){e.preventDefault(),P(e=>Math.max(e-1,0));return}if("Escape"===e.key){e.preventDefault(),N(""),P(0);return}if("Tab"===e.key){e.preventDefault();let t=er[_];t&&N(t.name+" ");return}}if("Escape"===e.key&&em.openId){e.preventDefault(),ep({type:"close"});return}if("Escape"===e.key&&n&&!k.trim()&&s){e.preventDefault(),s();return}"Enter"!==e.key||e.nativeEvent.isComposing||e.shiftKey||e.metaKey||e.ctrlKey||(e.preventDefault(),eC())},[eC,er,_,en,ea,el,ec,D,eu,eg,eb,ew,n,k,s,em.openId]),eI=(0,o.useCallback)(e=>{N(e.target.value),H(e.target.selectionStart),P(0),O(!1),L(0),ey(0);let t=e.target;t.style.height="auto",t.style.height=Math.min(t.scrollHeight,200)+"px"},[]),eE=(0,o.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),I(!0)},[]),eT=(0,o.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),I(!1)},[]),e_=(0,o.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),I(!1),e.dataTransfer.files.length>0&&eN(e.dataTransfer.files)},[eN]),eP=(0,o.useCallback)(e=>{let t=e.clipboardData.items,r=[];for(let e=0;e<t.length;e++){let n=t[e];if("file"===n.kind){let e=n.getAsFile();e&&r.push(e)}}r.length>0&&(e.preventDefault(),eN(r))},[eN]);return(0,l.jsxs)("div",{ref:ef,className:(0,E.cn)("relative px-3 pb-3 pt-1 transition-colors",A&&"bg-[var(--accent)]"),onDragOver:eE,onDragLeave:eT,onDrop:e_,children:[(0,l.jsx)(sX,{commands:er,selectedIndex:_,onSelect:ek}),(0,l.jsx)(sX,{commands:en.map(e=>{var t;return{name:"".concat(e.cmd.name," ").concat(e.verb.name),description:null!=(t=e.verb.desc)?t:"",type:"server"}}),selectedIndex:ea,onSelect:e=>{var t;N(e.name+" "),null==(t=G.current)||t.focus()}}),(0,l.jsx)(sQ,{matches:ec,selectedIndex:D,onSelect:eu}),(0,l.jsx)(sQ,{matches:eg,selectedIndex:eb,onSelect:ew,dirs:!0}),A&&(0,l.jsx)("div",{className:"absolute inset-0 z-10 flex items-center justify-center rounded-xl bg-[var(--accent)]/80 border-2 border-dashed border-[var(--primary)]",children:(0,l.jsx)("p",{className:"text-sm text-[var(--primary)]",children:"Drop images here"})}),(0,l.jsx)("input",{ref:q,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:e=>{e.target.files&&eN(e.target.files),e.target.value=""}}),U&&(0,l.jsxs)("div",{className:"mb-1 flex items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/10 px-2.5 py-1.5 text-xs text-amber-300",children:[(0,l.jsx)("span",{className:"flex-1",children:U}),(0,l.jsx)("button",{onClick:()=>B(null),className:"shrink-0 rounded p-0.5 hover:bg-amber-500/20",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]}),(0,l.jsxs)("div",{className:(0,E.cn)("rounded-2xl border border-[var(--border)] bg-[var(--secondary)] transition-colors","focus-within:border-[var(--primary)] focus-within:ring-1 focus-within:ring-[var(--primary)]"),children:[(0,l.jsx)("textarea",{ref:G,value:k,onChange:eI,onKeyDown:eA,onPaste:eP,onSelect:e=>H(e.target.selectionStart),placeholder:Y?"All agents are disabled — enable one in the Agents tab to chat":X?g("goal.inputLocked"):n?"Send to interrupt current response...":"Type @ to reference files...",rows:1,className:"w-full resize-none bg-transparent px-3.5 pt-3 pb-1 text-sm text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none max-h-[200px]"}),(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-1 px-2 pb-2",children:[(0,l.jsx)(lc,{}),f,(0,l.jsx)(lu,{}),(0,l.jsx)(lh,{onCompact:h}),(0,l.jsx)(ld,{}),(0,l.jsx)("button",{onClick:()=>{var e;return null==(e=q.current)?void 0:e.click()},disabled:r,title:"Attach images",className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(sB.A,{className:"h-4 w-4"})}),K&&(0,l.jsx)(lp,{disabled:r,onCapture:e=>eN([e]),onNotice:B}),(0,l.jsx)(lm,{modelSupportsImage:K}),(0,l.jsx)(s8,{panel:em,dispatch:ep,onInsert:ex,anchor:eh,disabled:r}),($||x||ee)&&(0,l.jsx)(ld,{}),(0,l.jsx)(ls,{}),x,ee&&(0,l.jsxs)("button",{onClick:()=>j(!w),title:w?"Click to exclude context":"Click to include context",className:(0,E.cn)("flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium transition-colors hover:bg-[var(--secondary)]",w?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)] line-through opacity-50"),children:[(0,l.jsx)(W.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{className:"max-w-36 truncate",children:ee})]}),null==c?void 0:c.map((e,t)=>(0,l.jsxs)("div",{className:"flex items-center gap-1 rounded-full border border-[var(--border)] bg-[var(--background)] px-2 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{className:"max-w-32 truncate",children:e}),(0,l.jsx)("button",{onClick:()=>null==m?void 0:m(t),className:"ml-0.5 rounded-full p-0.5 hover:bg-[var(--accent)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-2.5 w-2.5"})})]},"q-".concat(t))),M.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-1 rounded-full border border-green-500/20 bg-green-500/10 px-2 py-0.5 text-[10px] text-green-400",children:[(0,l.jsxs)("span",{className:"max-w-32 truncate",children:["@",e.split("/").pop()]}),(0,l.jsx)("button",{onClick:()=>ej(e),className:"ml-0.5 rounded-full p-0.5 hover:bg-green-500/20 hover:text-green-300",children:(0,l.jsx)(e0.A,{className:"h-2.5 w-2.5"})})]},"@".concat(e))),S.map((e,t)=>(0,l.jsxs)("div",{className:"flex items-center gap-1 rounded-lg border border-[var(--border)] bg-[var(--background)] px-2 py-0.5",children:[e.preview?(0,l.jsx)("img",{src:e.preview,alt:e.file.name,className:"h-5 w-5 rounded object-cover"}):(0,l.jsx)(et.A,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"max-w-20 truncate text-[10px] text-[var(--muted-foreground)]",children:e.file.name}),(0,l.jsx)("button",{onClick:()=>eS(t),className:"ml-0.5 rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--accent)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-2.5 w-2.5"})})]},"f-".concat(t))),(0,l.jsx)("div",{className:"flex-1"}),n&&!k.trim()&&0===S.length?(0,l.jsx)("button",{onClick:a,title:"Stop generation",className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-red-600 text-white transition-colors hover:bg-red-700",children:(0,l.jsx)(sW.A,{className:"h-3.5 w-3.5 fill-current"})}):(0,l.jsx)("button",{onClick:eC,disabled:Y||Q||!k.trim()&&0===S.length,title:Y?"All agents are disabled — enable one to chat":Q?g("goal.inputLocked"):n&&k.trim()?"Send (interrupts current response)":"Send (Enter)",className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors",!Y&&!Q&&(k.trim()||S.length>0)?n?"bg-orange-600 text-white hover:bg-orange-700":"bg-[var(--primary)] text-[var(--primary-foreground)] hover:bg-blue-600":"text-[var(--muted-foreground)] cursor-not-allowed"),children:(0,l.jsx)(sK.A,{className:"h-4 w-4"})})]})]})]})}let lx={intake:"border-blue-500/30 bg-blue-500/10 text-blue-400",running:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",paused:"border-amber-500/30 bg-amber-500/10 text-amber-400",halted:"border-red-500/30 bg-red-500/10 text-red-400",done:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400"};function lg(e){let{currentSessionId:t,onJump:r}=e,n=ap(e=>e.enabled),a=ap(e=>e.goal),s=ap(e=>e.dismissedGoalId),o=ap(e=>e.dismiss),i=(0,T.kj)();if(!n||!a)return null;let c="done"===a.status||"halted"===a.status;if(c&&s===a.goalSessionId)return null;let d=i("goal.banner.".concat(a.status),{round:a.round,max:a.maxRounds}),u=t===a.goalSessionId,m=t===a.workerSessionId;return(0,l.jsxs)("div",{className:(0,E.cn)("flex items-center gap-2 border-t px-3 py-1.5 text-[11px]",lx[a.status]),children:[(0,l.jsx)("button",{onClick:()=>!u&&r(a.goalSessionId),title:u?void 0:i("goal.banner.jump"),className:(0,E.cn)("min-w-0 flex-1 truncate text-left",!u&&"hover:underline cursor-pointer"),children:d}),(0,l.jsx)("button",{onClick:()=>!m&&r(a.workerSessionId),title:m?void 0:i("goal.banner.jump_worker"),className:(0,E.cn)("shrink-0",!m&&"hover:underline cursor-pointer"),children:i("goal.banner.worker")}),c&&(0,l.jsx)("button",{onClick:()=>o(a.goalSessionId),title:i("goal.banner.dismiss"),className:"shrink-0 rounded p-0.5 opacity-60 hover:opacity-100 transition-opacity",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]})}var lv=r(70805);function lb(e){let{onLoadOlder:t,scrollRef:r}=e,n=(0,T.kj)(),a=nJ(e=>e.sessionId),s=nV(e=>e.sessionId),i=nV(e=>e.anchor),c=nV(e=>e.cursor),d=nV(e=>e.messages),u=nV(e=>e.loading),[m,p]=(0,o.useState)(!1),h=(0,o.useRef)(null);(0,o.useLayoutEffect)(()=>{let e=r.current,t=h.current;e&&null!==t&&(e.scrollTop=e.scrollHeight-t,h.current=null)},[m,r]);let f=(0,o.useMemo)(()=>d.filter(nA),[d]);return null===s||s!==a||0===i?null:(0,l.jsxs)("div",{className:"border-b border-[var(--border)]/50",children:[c>0?(0,l.jsxs)("button",{onClick:t,disabled:u,className:"flex w-full items-center justify-center gap-1.5 px-3 py-2 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:hover:bg-transparent",children:[u&&(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),n(u?"chat.archive.loading":"chat.archive.loadOlder")]}):(0,l.jsx)("div",{className:"px-3 py-2 text-center text-[10px] text-[var(--muted-foreground)]",children:n("chat.archive.noEarlier")}),f.length>0&&(0,l.jsxs)(l.Fragment,{children:[m&&(0,l.jsx)(sc,{messages:f,readOnly:!0}),(0,l.jsxs)("button",{onClick:()=>{let e=r.current;h.current=e?e.scrollHeight-e.scrollTop:null,p(!m)},className:"flex w-full items-center gap-2 border-t border-[var(--border)]/50 px-3 py-2 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:[m?(0,l.jsx)(lv.A,{className:"h-3 w-3"}):(0,l.jsx)(F.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{children:n("chat.archive.header",{segments:i-c,messages:f.length})})]})]})]})}var ly=r(39802),lw=r(72486);let lj=e=>Math.min(480,Math.max(120,Math.round(e)));function lk(e,t){try{localStorage.setItem(e,t)}catch(e){}}function lN(e){let{openKey:t,widthKey:r,defaultWidth:n,title:a,children:s,collapsedContent:i,hoverPeek:c}=e,d=(0,T.kj)(),[u,m]=(0,o.useState)(()=>"false"!==localStorage.getItem(t)),[p,h]=(0,o.useState)(()=>(function(e,t){let r=Number(localStorage.getItem(e));return Number.isFinite(r)&&r>0?lj(r):t})(r,n)),f=null==c?void 0:c.close,x=(0,o.useCallback)((e,r)=>{m(e),lk(t,String(e)),null==f||f(!e&&!!r&&r.detail>0)},[t,f]),g=(0,o.useCallback)(e=>{if(0!==e.button)return;e.preventDefault();let t=e.clientX,n=p,a=document.body.style,s=a.cursor,l=a.userSelect;a.cursor="col-resize",a.userSelect="none";let o=e=>{h(n=lj(p+t-e.clientX))},i=()=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",i),window.removeEventListener("pointercancel",i),a.cursor=s,a.userSelect=l,lk(r,String(n))};window.addEventListener("pointermove",o),window.addEventListener("pointerup",i),window.addEventListener("pointercancel",i)},[p,r]),v=e=>{let t=d(e?"sidebar.expand":"sidebar.collapse"),r=e?ly.A:lw.A;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex h-7 shrink-0 items-center justify-between gap-1 border-b border-[var(--border)] pl-2 pr-1",children:[(0,l.jsx)("span",{className:"truncate text-[10px] font-medium uppercase tracking-wide text-[var(--muted-foreground)]",children:a}),(0,l.jsx)("button",{onClick:t=>x(e,t),title:t,"aria-label":t,className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(r,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"flex min-h-0 flex-1 flex-col",children:s})]})};return u?(0,l.jsxs)("div",{className:"relative flex shrink-0 flex-col border-l border-[var(--border)] bg-[var(--card)]",style:{width:p},children:[(0,l.jsx)("div",{onPointerDown:g,title:d("sidebar.resize"),className:"absolute inset-y-0 -left-0.5 z-10 w-1 cursor-col-resize transition-colors hover:bg-[var(--primary)]/40"}),v(!1)]}):(0,l.jsxs)("div",{...null==c?void 0:c.bind,className:(0,E.cn)("relative flex shrink-0 flex-col items-center border-l border-[var(--border)] bg-[var(--card)] pt-1",i?"w-10":"w-6"),children:[(0,l.jsx)("button",{onClick:()=>x(!0),title:d("sidebar.expand"),"aria-label":d("sidebar.expand"),className:"shrink-0 rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(ly.A,{className:"h-3.5 w-3.5"})}),i&&(0,l.jsx)("div",{className:"flex min-h-0 w-full flex-1 flex-col items-center",children:i}),(null==c?void 0:c.open)&&(0,l.jsx)("div",{ref:lS,"data-peek":!0,className:"absolute inset-y-0 right-0 z-30 flex flex-col border-l border-[var(--border)] bg-[var(--card)] shadow-[-6px_0_16px_-6px_rgba(0,0,0,0.35)] transition-[translate,opacity] duration-150 ease-out starting:translate-x-4 starting:opacity-0 motion-reduce:transition-none",style:{width:p},children:v(!0)})]})}function lS(e){var t;let r=null==e||null==(t=e.parentElement)?void 0:t.parentElement;e&&r&&(e.style.maxWidth="".concat(r.clientWidth,"px"))}var lC=r(58958);let lA=e=>e?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/50 hover:text-[var(--foreground)]";function lI(e){let{icon:t,label:r,tooltip:n,active:a,onActivate:s,badge:o,statusBar:i,onClose:c,closeLabel:d,menuGestures:u}=e;return(0,l.jsxs)("div",{...u,onClick:s,title:n,"aria-selected":a,className:(0,E.cn)("group relative mx-1.5 flex h-7 shrink-0 cursor-pointer select-none items-center gap-2 rounded-md px-2 text-[11px] transition-colors",lA(a)),children:[t&&(0,l.jsx)("span",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:t}),(0,l.jsx)("div",{className:"min-w-0 flex-1 truncate",children:r}),o,c&&(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),c(e)},title:d,"aria-label":d,className:"shrink-0 rounded p-0.5 opacity-0 hover:bg-[var(--accent)] group-hover:opacity-100",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})}),i]})}function lE(e){let{icon:t,tooltip:r,active:n,onActivate:a,badge:s}=e;return(0,l.jsxs)("button",{onClick:a,title:r,"aria-label":r,"aria-pressed":n,className:(0,E.cn)("group relative flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-[11px] font-medium transition-colors",lA(n)),children:[t,s]})}function lT(e){let{onClick:t,label:r,collapsed:n=!1}=e;return(0,l.jsx)("div",{className:(0,E.cn)("flex shrink-0 justify-center",n?"py-1.5":"p-1.5"),children:(0,l.jsx)("button",{onClick:t,title:r,"aria-label":r,className:(0,E.cn)("flex h-7 items-center justify-center rounded-md bg-[var(--secondary)]/50 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",n?"w-7":"w-full"),children:(0,l.jsx)(lC.A,{className:"h-3.5 w-3.5"})})})}function l_(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],[t,r]=(0,o.useState)(!1),[a]=(0,o.useState)(()=>(function(e){let t,{openDelay:r=300,closeDelay:n=200}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=!1,s=!1,l=!1,o=!1,i=()=>{clearTimeout(t),t=void 0},c=t=>{i(),a!==t&&(a=t,e(t))},d=(e,r)=>{i(),t=setTimeout(()=>c(e),r)};return{enter(){s=!0,l||o||(a?i():d(!0,r))},leave(){s=!1,o=!1,l||(a?d(!1,n):i())},close(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];o=e,c(!1)},setHold(e){(l=e)?i():a&&!s&&d(!1,n)},dispose:i}})(r));(0,o.useEffect)(()=>()=>a.dispose(),[a]),(0,o.useEffect)(()=>a.setHold(e),[a,e]);let s=(0,o.useMemo)(()=>({onPointerEnter:e=>{"mouse"===e.pointerType&&"function"==typeof window.matchMedia&&(null!=n||(n=window.matchMedia("(hover: hover) and (pointer: fine)")),n.matches)&&a.enter()},onPointerLeave:e=>{"mouse"===e.pointerType&&a.leave()}}),[a]);return{open:t,close:a.close,bind:s}}function lP(e){let{x:t,y:r,returnFocus:n,onRename:a,onDelete:s,onClose:i}=e,c=(0,T.kj)(),d=(0,o.useRef)(null),[u,m]=(0,o.useState)({x:t,y:r}),p=(0,o.useRef)(!1);(0,o.useEffect)(()=>{var e;function t(e){d.current&&!d.current.contains(e.target)&&i()}function r(e){"Escape"===e.key&&(i(),(null==n?void 0:n.isConnected)&&n.focus())}return null==(e=d.current)||e.focus(),document.addEventListener("pointerdown",t),document.addEventListener("keydown",r),()=>{document.removeEventListener("pointerdown",t),document.removeEventListener("keydown",r)}},[i,n]),(0,o.useLayoutEffect)(()=>{let e=d.current;if(!e)return;let n=e.getBoundingClientRect(),a=window.innerWidth,s=window.innerHeight,l=t+n.width+4>a?Math.max(4,a-n.width-4):t,o=r+n.height+4>s?Math.max(4,s-n.height-4):r;(l!==u.x||o!==u.y)&&m({x:l,y:o})},[t,r,u.x,u.y]);let h=(e,t,r)=>{(!(e.detail>0)||p.current)&&(r&&(null==n?void 0:n.isConnected)&&n.focus(),i(),t(e))},f="flex w-full items-center gap-2 px-3 py-1.5 text-xs transition-colors hover:bg-[var(--secondary)]";return(0,l.jsxs)("div",{ref:d,role:"menu",tabIndex:-1,style:{position:"fixed",left:u.x,top:u.y,zIndex:9999},onPointerDown:()=>{p.current=!0},onContextMenu:e=>e.preventDefault(),className:"min-w-[140px] rounded-md border border-[var(--border)] bg-[var(--card)] py-1 shadow-lg outline-none",children:[(0,l.jsxs)("button",{role:"menuitem",onClick:e=>h(e,a,!1),className:"".concat(f," text-[var(--foreground)]"),children:[(0,l.jsx)(eX.A,{className:"h-3.5 w-3.5"}),c("chat.sessions.rename")]}),(0,l.jsxs)("button",{role:"menuitem",onClick:e=>h(e,s,!0),className:"".concat(f," text-red-400 hover:text-red-300"),children:[(0,l.jsx)(eq.A,{className:"h-3.5 w-3.5"}),c("chat.sessions.delete")]})]})}let lM=new Map;function lF(e){let{sessions:t,currentSessionId:r,onSelect:n,onDelete:a,onNew:s,onLoadMore:i,hasMore:c=!1,loadingMore:d=!1}=e,m=(0,T.kj)(),p=ap(e=>e.enabled),h=rU(e=>e.activeProject),[f,x]=(0,o.useState)(null),[g,v]=(0,o.useState)(""),b=(0,o.useRef)(null),y=(0,o.useRef)(""),w=()=>{b.current=null,x(null),v("")},j=async e=>{if(b.current!==e)return;let t=g.trim();if(!t||t===y.current||!(null==h?void 0:h.path))return void w();b.current=null,x(null);try{await u.FH.sessionLogs.rename(e,t,h.path)}catch(e){console.error("[SessionSidebar] Rename failed:",e)}aT()},[k,N]=(0,o.useState)(null),S=(0,o.useCallback)(()=>N(null),[]),[C,A]=(0,o.useState)(!1),I=l_(null!==k||null!==f||C),_=e=>{I.close(),n(e)},P=async(e,t)=>{A(!0);try{await a(e,t)}finally{A(!1)}};(0,o.useEffect)(()=>{for(let e of(lM.clear(),t))e.title&&lM.set(e.id,e.title)},[t]);let M=(0,o.useCallback)(e=>{if(!e||"undefined"==typeof IntersectionObserver)return;let t=new IntersectionObserver(e=>{var t;(null==(t=e[0])?void 0:t.isIntersecting)&&(null==i||i())},{rootMargin:"48px"});return t.observe(e),()=>t.disconnect()},[i,t.length]),F=n2(e=>e.tabs),D=(0,o.useMemo)(()=>new Map(F.flatMap(e=>e.sessionId?[[e.sessionId,e]]:[])),[F]),L=null===r,H=e=>{let t=D.get(e.id);return e.id!==r&&!!(null==t?void 0:t.store)&&!!t.unread},z=e=>e.title||m("chat.tabs.untitled"),O=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex min-h-0 w-full flex-1 flex-col items-center gap-0.5 overflow-y-auto py-1",children:[L&&(0,l.jsx)(lE,{icon:(0,l.jsx)(aF.A,{className:"h-3.5 w-3.5"}),tooltip:m("chat.tabs.newSession"),active:!0,onActivate:()=>{}}),t.map(e=>{let t=D.get(e.id);return(0,l.jsx)(lz,{title:e.title,tooltip:z(e),active:r===e.id,store:null==t?void 0:t.store,unread:H(e),onActivate:()=>_(e.id)},e.id)})]}),s&&(0,l.jsx)(lT,{collapsed:!0,onClick:s,label:m("chat.sessions.new")})]});return(0,l.jsxs)(lN,{openKey:"halo_session_sidebar_open",widthKey:"halo_session_sidebar_width",defaultWidth:200,title:m("chat.sessions.title"),collapsedContent:O,hoverPeek:I,children:[(0,l.jsxs)("div",{className:"flex flex-1 flex-col gap-0.5 overflow-y-auto py-1",children:[L&&(0,l.jsx)(lI,{label:m("chat.tabs.newSession"),active:!0,onActivate:()=>{}}),0===t.length?(0,l.jsx)("div",{className:"px-3 py-4 text-center text-[10px] text-[var(--muted-foreground)]",children:"No sessions yet"}):t.map(e=>{var t;let n=D.get(e.id),a=f===e.id,s="string"==typeof(null==(t=e.agentSnapshot)?void 0:t.model)?" \xb7 ".concat(e.agentSnapshot.model.split(".").pop()):"";return(0,l.jsx)(lH,{store:null==n?void 0:n.store,unread:H(e),tooltip:"".concat(z(e),"\n").concat(e.exchangeCount," msgs \xb7 ").concat((0,E.fw)(e.updatedAt,m)).concat(s),active:r===e.id,onActivate:()=>_(e.id),onMenu:a?void 0:(t,r,n)=>N({session:e,x:t,y:r,returnFocus:n}),label:a?(0,l.jsx)("input",{autoFocus:!0,value:g,onChange:e=>v(e.target.value),onClick:e=>e.stopPropagation(),onKeyDown:t=>{"Enter"===t.key?(t.preventDefault(),j(e.id)):"Escape"===t.key&&(t.preventDefault(),w())},onBlur:()=>j(e.id),className:"w-full rounded border border-[var(--border)] bg-[var(--background)] px-1 py-0.5 text-[11px] text-[var(--foreground)] outline-none focus:border-blue-500"}):(0,l.jsxs)(l.Fragment,{children:[p&&e.goalSessionId&&(0,l.jsx)("span",{title:"Goal-bound worker session",className:"mr-1",children:"\uD83C\uDFAF"}),z(e)]})},e.id)}),c&&(0,l.jsx)("div",{ref:M,className:"flex items-center justify-center py-2 text-[9px] text-[var(--muted-foreground)]",children:d?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(R.A,{className:"h-2.5 w-2.5 animate-spin mr-1"})," Loading…"]}):(0,l.jsx)("span",{className:"opacity-50",children:"scroll for more"})})]}),s&&(0,l.jsx)(lT,{onClick:()=>{I.close(),s()},label:m("chat.sessions.new")}),k&&(0,l.jsx)(lP,{x:k.x,y:k.y,returnFocus:k.returnFocus,onRename:e=>{var t;return t=k.session,void(e.stopPropagation(),b.current=t.id,y.current=t.title||"",x(t.id),v(t.title||""))},onDelete:e=>{P(k.session.id,e)},onClose:S})]})}function lD(e,t){return!function(e){let t=(0,o.useCallback)(t=>e?e.subscribe(t):()=>{},[e]),r=()=>{var t;return null!=(t=null==e?void 0:e.getState().isStreaming)&&t};return(0,o.useSyncExternalStore)(t,r,r)}(e)?t?"unread":"idle":"busy"}let lL={busy:"status.busy",unread:"chat.tabs.unread",idle:"status.idle"};function lR(e){let{status:t,active:r,className:n}=e;return(0,l.jsx)("span",{"aria-hidden":!0,className:(0,E.cn)("pointer-events-none absolute bottom-0 h-0.5 rounded-full transition-colors","busy"===t&&"bg-amber-400 animate-pulse","unread"===t&&"bg-blue-500","idle"===t&&(r?"bg-emerald-500/70":"bg-emerald-500/40 group-hover:bg-emerald-500/70"),n)})}function lH(e){let{store:t,unread:r,tooltip:n,onMenu:a,...s}=e,i=(0,T.kj)(),c=lD(t,r),d=function(e){let t=(0,o.useRef)(null),r=(0,o.useRef)(!1),n=(0,o.useRef)(null),a=()=>{t.current&&clearTimeout(t.current.timer),t.current=null};return(0,o.useEffect)(()=>()=>{t.current&&clearTimeout(t.current.timer)},[]),{onPointerDown:s=>{if(r.current=!1,n.current=document.activeElement,a(),"mouse"===s.pointerType)return;let{clientX:l,clientY:o}=s;t.current={x:l,y:o,timer:setTimeout(()=>{t.current=null,r.current=!0,e(l,o,n.current)},500)}},onPointerMove:e=>{let r=t.current;r&&Math.hypot(e.clientX-r.x,e.clientY-r.y)>8&&a()},onPointerUp:a,onPointerCancel:a,onContextMenu:s=>{s.preventDefault(),r.current||(t.current&&(r.current=!0),a(),e(s.clientX,s.clientY,n.current))},onClickCapture:e=>{r.current&&(r.current=!1,e.preventDefault(),e.stopPropagation())}}}((e,t,r)=>null==a?void 0:a(e,t,r));return(0,l.jsx)(lI,{...s,menuGestures:a&&d,tooltip:"".concat(n," \xb7 ").concat(i(lL[c])),statusBar:(0,l.jsx)(lR,{status:c,active:s.active,className:"inset-x-1.5"})})}function lz(e){let{title:t,tooltip:r,active:n,store:a,unread:s,onActivate:o}=e,i=(0,T.kj)(),c=lD(a,s),d=Array.from(t.trim())[0];return(0,l.jsx)(lE,{icon:d?d.toUpperCase():(0,l.jsx)(aF.A,{className:"h-3.5 w-3.5"}),tooltip:"".concat(r," \xb7 ").concat(i(lL[c])),active:n,onActivate:o,badge:(0,l.jsx)(lR,{status:c,active:n,className:"inset-x-[20%]"})})}var lO=r(81324);let lU=aA(),lB=lU.useBus,lW=lU.bump,lK=aA(),lG=lK.useBus,lq=lK.bump;function l$(){var e,t;let r=nJ(e=>e.selectedAgentId),n=nJ(e=>e.sessionId),a=nJ(e=>e.isStreaming),s=rU(e=>e.activeProject),[i,c]=(0,o.useState)([]),[d,m]=(0,o.useState)(!1),p=(0,o.useRef)(null),h=(0,T.kj)(),f=lB(e=>e.version);(0,o.useEffect)(()=>{(null==s?void 0:s.path)&&u.FH.agentConfigs.list(s.path).then(e=>{let t=e.agents.filter(e=>!e.overridden&&!e.disabled&&!e.internal).map(e=>{var t;return{id:e.id,name:e.name,scope:e.scope,priority:null!=(t=e.priority)?t:0}}).sort((e,t)=>t.priority-e.priority||e.name.localeCompare(t.name));c(t),nJ.getState().setUsableAgentCount(t.length);let r=nJ.getState();!r.sessionId&&"default"===r.selectedAgentId&&t[0]&&"default"!==t[0].id&&r.setSelectedAgentId(t[0].id)}).catch(()=>{})},[null==s?void 0:s.path,f]);let x=lG(e=>e.version);(0,o.useEffect)(()=>{(null==s?void 0:s.path)&&sZ(s.path,null!=n?n:void 0,null!=r?r:void 0).catch(()=>{})},[null==s?void 0:s.path,n,r,f,x]),(0,o.useEffect)(()=>{if(!d)return;let e=e=>{p.current&&!p.current.contains(e.target)&&m(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[d]);let g=!!n,v=null!=(e=i.find(e=>e.id===r))?e:i[0],b=null!=(t=null==v?void 0:v.name)?t:r;return i.length<=1?null:(0,l.jsxs)("div",{ref:p,className:"relative",children:[(0,l.jsxs)("button",{onClick:()=>!g&&!a&&m(!d),disabled:g||a,title:h(g?"chat.agent.locked":"chat.agent.select"),className:(0,E.cn)("flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium transition-colors",g?"text-[var(--muted-foreground)] opacity-50 cursor-default":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),children:[(0,l.jsx)(aL.A,{className:(0,E.cn)("h-3 w-3",!g&&!a&&"text-[var(--primary)]")}),(0,l.jsx)("span",{className:"max-w-[80px] truncate",children:b}),!g&&(0,l.jsx)(M.A,{className:"h-2.5 w-2.5"})]}),d&&(0,l.jsx)("div",{className:"absolute bottom-full left-0 mb-1 min-w-[160px] max-h-60 overflow-y-auto rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-lg z-30",children:i.map(e=>(0,l.jsxs)("button",{onClick:()=>{nJ.getState().setSelectedAgentId(e.id),m(!1)},className:(0,E.cn)("flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors",e.id===r?"bg-[var(--accent)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)(aL.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{className:"truncate",children:e.name})]},"".concat(e.id,":").concat(e.scope)))})]})}function lY(){let{onTitleChange:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,T.kj)(),{messages:r,sendMessage:n,isStreaming:a,deleteSession:s,stopGeneration:i,interruptGeneration:c,pendingMessages:m,removePendingMessage:h,handleCommand:f,sessionId:x}=function(){let e=(0,T.kj)(),t=nJ(e=>e.messages),r=nJ(e=>e.isStreaming),n=nJ(e=>e.sessionId),a=nJ(e=>e.pendingMessages),s=rU(e=>e.activeProject);(0,o.useEffect)(()=>{s&&function(e){var t;let r=n2.getState();if(r.projectId===e)return;let n=function(e){try{let t=localStorage.getItem(n5(e));if(t){let e=JSON.parse(t);return"string"==typeof e.active&&e.active.length>0?e.active:null}for(let t of["halo_session_".concat(e),"halo_session_id"]){let e=localStorage.getItem(t);if(e)return localStorage.removeItem(t),e}}catch(e){}return null}(e),a=n?{tabId:(0,E.$C)(),sessionId:n}:n1(at(null));for(let n of(n2.setState({projectId:e,tabs:[a],activeTabId:a.tabId}),ar(null!=(t=an(a.tabId))?t:""),r.tabs))n.store&&nW(n.store);n8.clear()}(s.id)},[null==s?void 0:s.id]);let l=(0,o.useCallback)(()=>{let{activeTab:e,selectedText:t,selectedRange:r,tabs:n,contextEnabled:a}=d.Uw.getState();if(!a)return"";let s=[];if(e&&s.push("[Currently viewing: ".concat(e,"]")),t&&t.trim()&&e){let n=r?":".concat(r.startLine,"-").concat(r.endLine):"";s.push("[Selected text in ".concat(e).concat(n,"]\n```\n").concat(t,"\n```"))}return s.length>0?s.join("\n")+"\n\n":""},[]),i=(0,o.useCallback)((t,r,a)=>{var o;if(!s)return;let i=null!=n?n:(0,E.$C)();n||ai(i);let c=l(),d=[];c&&d.push(c.trim()),(null==a?void 0:a.length)&&d.push("[Referenced files:\n".concat(a.map(e=>" - ".concat(e)).join("\n"),"]"));let{screenSource:u,cameraSource:m}=nJ.getState(),h=se(),f=!!u&&!!h,x=!!m&&!!st();f&&x?d.push(e("capture.bothLlmPrompt",{name:u.name})):x?d.push(e("capture.cameraLlmPrompt")):f&&d.push(e(h.web?"capture.webLlmPrompt":"capture.llmPrompt",{name:u.name})),tk=!1,t_(s.id)&&d.push((o=function(){let e=tb;return tb=[],e}(),"[Face open: ".concat(th).concat(o.length?" \xb7 last: ".concat(o.join(", ")):"","]")));let g=(d.length>0?d.join("\n")+"\n\n":"")+t.trim(),v=nJ.getState(),b=t.trim();if(null==a?void 0:a.length){let e=a.map(e=>"@".concat(e.split("/").pop())).join(" ");b="".concat(e," ").concat(b)}if(null==r?void 0:r.length){let t=e("chat.imageSent",{n:r.length});b=b?"".concat(t,"\n").concat(b):t}let y=(0,E.$C)();v.addMessage({id:(0,E.$C)(),role:"user",content:b,timestamp:Date.now(),clientMsgId:y,...(null==r?void 0:r.length)?{localImages:r.map(e=>"data:".concat(e.mimeType,";base64,").concat(e.data))}:{}}),v.messages.some(e=>e.streaming&&"assistant"===e.role&&!e.taskId)||v.addMessage({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0});let{selectedAgentId:w,accessLevel:j}=nJ.getState();p.send({type:"chat",sessionId:i,projectId:s.id,message:g,clientMsgId:y,accessLevel:j,..."default"!==w?{agentId:w}:{},...(null==r?void 0:r.length)?{images:r}:{}})},[n,s,l]),c=(0,o.useCallback)((e,t,r)=>{if(e.trim()||(null==t?void 0:t.length)){if(!s)return void console.warn("[useChat] No active project selected");i(e,t,r)}},[s,i,n]),u=(0,o.useCallback)(()=>{p.send({type:"chat:stop",sessionId:n})},[n]),m=(0,o.useCallback)(()=>{p.send({type:"chat:interrupt",sessionId:n})},[n]),h=(0,o.useCallback)(e=>{nJ.getState().removePendingMessage(e)},[]);(0,o.useEffect)(()=>{if(r)return;let e=nJ.getState().shiftPendingMessage();if(e){let t=setTimeout(()=>i(e),100);return()=>clearTimeout(t)}},[r,i]);let f=(0,o.useCallback)(e=>{s&&(p.send({type:"session:delete",sessionId:e,projectId:s.path}),ao(e),aN(e))},[s]),x=(0,o.useCallback)((e,t)=>{if(!s)return;if("/clear"===e.name||"/session"===e.name&&"new"===t.trim())return void al();let r=null!=n?n:(0,E.$C)();n||ai(r);let a=e.name.slice(1),l=nJ.getState().selectedAgentId,o={type:"command:".concat(a),sessionId:r,projectId:s.id,..."default"!==l?{agentId:l}:{}};t.trim()&&(o.message=t.trim()),p.send(o),nJ.getState().addMessage({id:(0,E.$C)(),role:"system",content:"Executing ".concat(e.name).concat(t.trim()?" ".concat(t.trim()):"","..."),timestamp:Date.now()})},[s,n]);return{messages:t,sendMessage:c,isStreaming:r,sessionId:n,deleteSession:f,stopGeneration:u,interruptGeneration:m,pendingMessages:a,removePendingMessage:h,handleCommand:x}}(),g=n2(e=>e.tabs.find(t=>t.tabId===e.activeTabId)),{sessions:v,remove:b,loadMore:y,hasMore:w,loadingMore:j}=function(){let e=rU(e=>e.activeProject);return function(e){let[t,r]=(0,o.useState)([]),[n,a]=(0,o.useState)(null),[s,l]=(0,o.useState)(!1),i=aE(e=>e.version),c=(0,o.useCallback)(async()=>{if(!e){r([]),a(null);return}try{let t=await u.FH.sessionLogs.list(e,{rootOnly:!0,limit:30});r(t.sessions),a(t.nextCursor)}catch(e){r([]),a(null)}},[e]);(0,o.useEffect)(()=>{c()},[c,i]);let d=(0,o.useCallback)(async()=>{if(null!==n&&!s){l(!0);try{if(!e)return;let t=await u.FH.sessionLogs.list(e,{rootOnly:!0,limit:30,cursor:n}),s=t.sessions;r(e=>{let t=new Set(e.map(e=>e.id));return[...e,...s.filter(e=>!t.has(e.id))]}),a(t.nextCursor)}catch(e){console.error("[SessionList] loadMore failed:",e)}finally{l(!1)}}},[e,n,s]);return{sessions:t,refresh:c,remove:(0,o.useCallback)(async t=>{try{await u.FH.sessionLogs.delete(t,e),r(e=>e.filter(e=>e.id!==t)),aN(t),aT()}catch(e){console.error("[SessionList] Delete failed:",e)}},[e]),loadMore:d,hasMore:null!==n,loadingMore:s}}(null==e?void 0:e.path)}(),k=(0,o.useMemo)(()=>{var e;return null===x?t("chat.tabs.newSession"):(null==(e=v.find(e=>e.id===x))?void 0:e.title)||t("chat.tabs.untitled")},[x,v,t]);(0,o.useEffect)(()=>{null==e||e(k)},[k,e]);let[N,S]=(0,o.useState)(()=>"1"===localStorage.getItem("halo_chat_debug"));(0,o.useEffect)(()=>{localStorage.setItem("halo_chat_debug",N?"1":"0")},[N]);let C=rU(e=>{var t;return null==(t=e.activeProject)?void 0:t.id});(0,o.useEffect)(()=>{C&&ah(C)},[C]);let A=(0,o.useCallback)(async(e,r)=>{r.stopPropagation(),await (0,E.fN)(t("chat.sessions.deleteConfirm"))&&(await b(e),s(e))},[s,b,t]),I=(0,o.useMemo)(()=>N?r.filter(e=>!e.taskId):r.filter(nA),[r,N]);return(0,l.jsxs)("div",{className:"flex h-full min-h-0 bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-full min-w-0 flex-1 flex-col",children:[g&&(0,l.jsx)(lJ,{tab:g,sessionId:x,mainMessages:I,debugMode:N},g.tabId),(0,l.jsxs)("div",{className:"shrink-0",children:[(0,l.jsx)(lg,{currentSessionId:x,onJump:aa}),(0,l.jsx)(lf,{onSend:n,isStreaming:a,onStop:i,onInterrupt:c,pendingMessages:m,onRemovePending:h,onCommand:f,onCompact:()=>f({name:"/session",description:"",type:"server"},"compact"),agentControl:(0,l.jsx)(l$,{}),debugControl:(0,l.jsx)("button",{onClick:()=>S(!N),"aria-pressed":N,className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",N?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),title:"Debug mode: show all messages including tool calls and usage",children:(0,l.jsx)(lO.A,{className:"h-4 w-4"})})})]})]}),(0,l.jsx)(lF,{sessions:v,currentSessionId:x,onSelect:aa,onDelete:A,onNew:()=>al(),onLoadMore:y,hasMore:w,loadingMore:j})]})}function lJ(e){var t,r;let{tab:n,sessionId:a,mainMessages:s,debugMode:i}=e,c=(0,T.kj)(),d=n.tabId,u=(0,o.useRef)(null),[m]=(0,o.useState)(()=>n8.get(d)),[p,h]=(0,o.useState)(null),f=!!n.loading,x=null!=(t=n.attempt)?t:0;(0,o.useEffect)(()=>{if(!f)return;let e=setTimeout(()=>h(x),3e4);return()=>clearTimeout(e)},[f,x]);let g=f&&p===x,v=(0,o.useRef)(null!=(r=null==m?void 0:m.userScrolledUp)&&r),b=(0,o.useMemo)(()=>{let e=0;for(let t of s)"user"===t.role&&e++;return e},[s]),y=Math.max(0,b-30),[w,j]=(0,o.useState)(()=>({sessionId:a,hiddenTurns:m?Math.min(m.hiddenTurns,y):y,seenTurns:b}));w.sessionId!==a?j({sessionId:a,hiddenTurns:y,seenTurns:b}):(w.hiddenTurns>y||0===w.seenTurns&&b>0)&&j({sessionId:w.sessionId,hiddenTurns:y,seenTurns:b});let k=w.hiddenTurns;(0,o.useLayoutEffect)(()=>{w.seenTurns!==b&&j(e=>({sessionId:e.sessionId,hiddenTurns:v.current?e.hiddenTurns:Math.max(0,b-30),seenTurns:b}))}),(0,o.useEffect)(()=>{n6(d,{hiddenTurns:k})},[d,k]);let N=(0,o.useMemo)(()=>{if(k<=0)return s;let e=0;for(let t=0;t<s.length;t++)if("user"===s[t].role&&++e>k)return s.slice(t);return s},[s,k]),S=(0,o.useRef)(null),C=(0,o.useCallback)(()=>{let e=u.current;S.current=e?e.scrollHeight-e.scrollTop:null,j(e=>({...e,hiddenTurns:Math.max(0,e.hiddenTurns-30)}))},[]);(0,o.useLayoutEffect)(()=>{let e=u.current,t=S.current;e&&null!==t&&(e.scrollTop=e.scrollHeight-t,S.current=null)},[k]),(0,o.useLayoutEffect)(()=>{let e=u.current;e&&(e.scrollTop=(null==m?void 0:m.userScrolledUp)?m.scrollTop:e.scrollHeight)},[m]);let A=sa(u,v),I=(0,o.useRef)(null),E=(0,o.useRef)(!0),_=(0,o.useCallback)(()=>{let e=u.current;I.current=e?e.scrollHeight-e.scrollTop:null,n0()},[]),P=k>0;(0,o.useEffect)(()=>{let e=u.current;if(!e)return;let t=()=>{n6(d,{scrollTop:e.scrollTop,userScrolledUp:v.current}),e.scrollTop>200?E.current=!0:e.scrollTop<80&&E.current&&(E.current=!1,P?C():_())};return e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)},[d,_,C,P]);let M=nV(e=>e.messages);return(0,o.useEffect)(()=>{let e=u.current,t=I.current;e&&null!==t&&(e.scrollTop=e.scrollHeight-t,I.current=null)},[M]),(0,o.useEffect)(()=>{A()},[s,A]),(0,o.useEffect)(()=>{let e=u.current;if(!e||"undefined"==typeof ResizeObserver)return;let t=new ResizeObserver(A);return t.observe(e),()=>t.disconnect()},[A]),(0,l.jsx)("div",{ref:u,className:"flex-1 min-h-0 overflow-y-auto",children:f&&n.sessionId?(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center gap-2 py-8 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)(R.A,{className:"h-3.5 w-3.5 animate-spin mr-1.5"})," Loading session..."]}),g&&(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{children:"Slow network — still loading…"}),(0,l.jsx)("button",{onClick:()=>(function(e){var t;let r=n9(t=>t.tabId===e);(null==r?void 0:r.sessionId)&&(n7(e,{loading:!0,attempt:(null!=(t=r.attempt)?t:0)+1}),ar(r.sessionId))})(d),className:"text-[var(--primary)] hover:underline",children:"Retry"})]})]}):0===s.length?(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center",children:[(0,l.jsx)("div",{className:"rounded-full bg-[var(--secondary)] p-3",children:(0,l.jsx)(aF.A,{className:"h-6 w-6 text-[var(--muted-foreground)]"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:"Start a conversation"}),(0,l.jsx)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:"Describe what you want to build, and agents will work together to deliver it."})]})]}):(0,l.jsxs)(l.Fragment,{children:[k>0?(0,l.jsx)("button",{onClick:C,className:"flex w-full items-center justify-center gap-1.5 border-b border-[var(--border)]/50 px-3 py-2 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:c("chat.window.showEarlier",{count:k})}):(0,l.jsx)(lb,{onLoadOlder:_,scrollRef:u}),(0,l.jsx)(sc,{messages:N,debugMode:i,userOrdinalBase:k})]})})}var lZ=r(86557),lV=r(21379);let lX="undefined"!=typeof navigator&&/Mac|iPhone|iPad/.test(navigator.userAgent);var lQ=r(65146),l0=r(77408),l1=r(89678);function l3(e){let{x:t,y:r,term:n,onClose:a}=e,s=(0,T.kj)(),i=(0,o.useRef)(null),[c,d]=(0,o.useState)({x:t,y:r}),[u]=(0,o.useState)(()=>n.hasSelection()),[m,p]=(0,o.useState)(!1);(0,o.useEffect)(()=>{var e;function t(e){i.current&&!i.current.contains(e.target)&&a()}function r(e){"Escape"===e.key&&(a(),n.focus())}return null==(e=i.current)||e.focus(),document.addEventListener("mousedown",t),document.addEventListener("keydown",r),()=>{document.removeEventListener("mousedown",t),document.removeEventListener("keydown",r)}},[a,n]),(0,o.useLayoutEffect)(()=>{let e=i.current;if(!e)return;let n=e.getBoundingClientRect(),a=window.innerWidth,s=window.innerHeight,l=t+n.width+4>a?Math.max(4,a-n.width-4):t,o=r+n.height+4>s?Math.max(4,s-n.height-4):r;(l!==c.x||o!==c.y)&&d({x:l,y:o})},[t,r,c.x,c.y]);let h=()=>{n.focus(),a()},f=async()=>{let e=n.getSelection();try{await navigator.clipboard.writeText(e)}catch(e){n.focus(),document.execCommand("copy")}h()},x=async()=>{try{n.paste(await navigator.clipboard.readText()),h()}catch(e){p(!0)}},g=[{key:"copy",icon:ss.A,label:s("terminal.menu.copy"),hint:lX?"⌘C":"Ctrl+C",disabled:!u,run:f},{key:"paste",icon:lQ.A,label:s("terminal.menu.paste"),hint:lX?"⌘V":"Ctrl+V",run:x},{key:"selectAll",icon:l0.A,label:s("terminal.menu.selectAll"),run:()=>{n.selectAll(),h()}},{key:"clear",icon:l1.A,label:s("terminal.menu.clear"),run:()=>{n.clear(),h()}}];return(0,l.jsx)("div",{ref:i,tabIndex:-1,style:{position:"fixed",left:c.x,top:c.y,zIndex:9999},onContextMenu:e=>e.preventDefault(),className:"min-w-[160px] rounded-md border border-[var(--border)] bg-[var(--card)] py-1 shadow-lg outline-none",children:g.map(e=>{let t=e.icon;return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{disabled:e.disabled,onClick:()=>{e.run()},className:"flex w-full items-center gap-2 px-3 py-1.5 text-xs text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)] disabled:pointer-events-none disabled:opacity-40",children:[(0,l.jsx)(t,{className:"h-3.5 w-3.5"}),(0,l.jsx)("span",{className:"flex-1 text-left",children:e.label}),e.hint&&(0,l.jsx)("span",{className:"pl-4 text-[10px] text-[var(--muted-foreground)]",children:e.hint})]}),"paste"===e.key&&m&&(0,l.jsx)("div",{className:"max-w-[220px] px-3 pb-1.5 text-[10px] text-[var(--muted-foreground)]",children:s("terminal.menu.pasteHint",{key:lX?"⌘V":"Ctrl+V"})}),"paste"===e.key&&(0,l.jsx)("div",{className:"my-1 border-t border-[var(--border)]"})]},e.key)})})}class l2{fire(e){for(let t of[...this.listeners])t(e)}dispose(){this.listeners.clear()}constructor(){this.listeners=new Set,this.event=e=>(this.listeners.add(e),{dispose:()=>this.listeners.delete(e)})}}class l5{_register(e){return this.disposables.push(e),e}dispose(){for(let e of this.disposables.splice(0))e.dispose()}constructor(){this.disposables=[]}}let l4=/\b(vim|vi|nano|tmux)\b/i,l8=/^\x1b\[[0-9;]*m/,l6=/^\x1b\[?([0-9]*)(;[35])?O?([DC])/,l9=/[^a-z0-9]/i,l7=/^(\x1b\[(\??25[hl]|\??[0-9;]+n))+/,oe=e=>e._core,ot=e=>{};class or{get x(){return this._x}get y(){return this._y}get baseY(){return this._baseY}get coordinate(){return{x:this._x,y:this._y,baseY:this._baseY}}getLine(){return this._buffer.getLine(this._y+this._baseY)}getCell(e){var t;return null==(t=this.getLine())?void 0:t.getCell(this._x,e)}moveTo(e){return this._x=e.x,this._y=e.y+e.baseY-this._baseY,this.moveInstruction()}clone(){let e=new or(this.rows,this.cols,this._buffer);return e.moveTo(this),e}move(e,t){return this._x=e,this._y=t,this.moveInstruction()}shift(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._x+=e,this._y+=t,this.moveInstruction()}moveInstruction(){return this._y>=this.rows?(this._baseY+=this._y-(this.rows-1),this._y=this.rows-1):this._y<0&&(this._baseY-=this._y,this._y=0),"\x1b[".concat(this._y+1,";").concat(this._x+1,"H")}constructor(e,t,r){this.rows=e,this.cols=t,this._buffer=r,this._x=0,this._y=1,this._baseY=1,this._x=r.cursorX,this._y=r.cursorY,this._baseY=r.baseY}}let on=(e,t,r)=>{let n,a=!1;for(r<0&&t.shift(-1);t.x>=0;){if(!(null==(n=t.getCell(n))?void 0:n.getCode()))return;let e=n.getChars();if(l9.test(e)){if(a)break}else a=!0;t.shift(r)}r<0&&t.shift(1)};class oa{get remaining(){return this._input.length-this.index}get eof(){return this.index===this._input.length}get rest(){return this._input.slice(this.index)}eatChar(e){if(this._input[this.index]===e)return this.index++,e}eatStr(e){if(this._input.slice(this.index,e.length)===e)return this.index+=e.length,e}eatGradually(e){let t=this.index;for(let r=0;r<e.length;r++){if(r>0&&this.eof)return 2;if(!this.eatChar(e[r]))return this.index=t,1}return 0}eatRe(e){let t=e.exec(this._input.slice(this.index));if(t)return this.index+=t[0].length,t}eatCharCode(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e+1,r=this._input.charCodeAt(this.index);if(!(r<e)&&!(r>=t))return this.index++,r}constructor(e){this._input=e,this.index=0}}class os{apply(){return""}rollback(){return""}rollForwards(){return""}matches(){return 1}constructor(){this.clearAfterTimeout=!1}}class ol{apply(e,t){return this._appliedCursor=t.clone(),this.inner.apply(e,this._appliedCursor),""}rollback(e){return this.inner.rollback(e.clone()),""}rollForwards(e,t){return this._appliedCursor&&e.moveTo(this._appliedCursor),t}matches(e){return this.inner.matches(e)}constructor(e){this.inner=e}}class oo{apply(e,t){let r=t.getCell();return this.appliedAt=r?{pos:t.coordinate,oldAttributes:of(r),oldChar:r.getChars()}:{pos:t.coordinate,oldAttributes:"",oldChar:""},t.shift(1),this._style.apply+this._char+this._style.undo}rollback(e){if(!this.appliedAt)return"";let{oldAttributes:t,oldChar:r,pos:n}=this.appliedAt;return e.moveTo(n)+(r?"".concat(t).concat(r).concat(e.moveTo(n)):"\x1b[X")}rollForwards(e,t){return this.appliedAt?e.clone().moveTo(this.appliedAt.pos)+t:""}matches(e,t){let r=e.index;for(;e.eatRe(l8););if(e.eof)return 2;if(e.eatChar(this._char))return 0;if(t instanceof oo){let r=e.eatGradually("\b".concat(t._char).concat(this._char));if(1!==r)return r}return e.index=r,1}constructor(e,t){this._style=e,this._char=t,this.affectsStyle=!0}}class oi{apply(e,t){var r;let n=!(null==(r=t.getLine())?void 0:r.translateToString(void 0,t.x).trim()),a=t.coordinate,s=t.shift(-1),l=t.getCell();return this._appliedAt=l?{isLastChar:n,pos:a,oldAttributes:of(l),oldChar:l.getChars()}:{isLastChar:n,pos:a,oldAttributes:"",oldChar:""},s+"\x1b[X"}rollback(e){if(!this._appliedAt)return"";let{oldAttributes:t,oldChar:r,pos:n}=this._appliedAt;return r?t+r+e.moveTo(n)+of(oe(this._terminal)._inputHandler._curAttrData):e.moveTo(n)+"\x1b[X"}rollForwards(){return""}matches(e){var t;if(null==(t=this._appliedAt)?void 0:t.isLastChar){let t=e.eatGradually("\b\x1b[K");if(1!==t)return t;let r=e.eatGradually("\b \b");if(1!==r)return r}return 1}constructor(e){this._terminal=e}}class oc{apply(e,t){return this._prevPosition=t.coordinate,t.move(0,t.y+1),"\r\n"}rollback(e){return this._prevPosition?e.moveTo(this._prevPosition):""}rollForwards(){return""}matches(e){return e.eatGradually("\r\n")}}class od extends oc{apply(e,t){return this._prevPosition=t.coordinate,t.move(0,t.y+1)," \r"}matches(e){let t=e.eatGradually(" \r");return 1!==t?2===e.eatGradually("\x1b[K")?2:t:e.eatGradually("\r\n")}}class ou{apply(e,t){let r=t.x,n=t.getCell(),a=n?of(n):"",{_amount:s,_direction:l,_moveByWords:o}=this,i="D"===l?-1:1,c=t.clone();if(o)for(let t=0;t<s;t++)on(e,c,i);else c.shift(i*s);return this._applied={amount:Math.abs(t.x-c.x),prevPosition:r,prevAttrs:a,rollForward:t.moveTo(c)},this._applied.rollForward}rollback(e){return this._applied?e.move(this._applied.prevPosition,e.y)+this._applied.prevAttrs:""}rollForwards(){return""}matches(e){if(!this._applied)return 1;let t=this._direction,{amount:r,rollForward:n}=this._applied;if(e.eatStr("\x1b[".concat(t).repeat(r))||"D"===t&&e.eatStr("\b".repeat(r)))return 0;if(n){let t=e.eatGradually(n);if(1!==t)return t}return e.eatGradually("\x1b[".concat(r).concat(t))}constructor(e,t,r){this._direction=e,this._moveByWords=t,this._amount=r}}class om extends l5{get accuracy(){let e=0;for(let[,t]of this._stats)t&&e++;return e/(this._stats.length||1)}get sampleSize(){return this._stats.length}get latency(){let e=this._stats.filter(e=>{let[,t]=e;return t}).map(e=>{let[t]=e;return t}).sort((e,t)=>e-t);return{count:e.length,min:e[0],median:e[Math.floor(e.length/2)],max:e[e.length-1]}}get maxLatency(){let e=-1/0;for(let[t,r]of this._stats)r&&(e=Math.max(t,e));return e}_pushStat(e,t){let r=this._addedAtTime.get(t);this._stats[this._index]=[Date.now()-r,e],this._index=(this._index+1)%24,this._changeEmitter.fire()}constructor(e){super(),this._stats=[],this._index=0,this._addedAtTime=new WeakMap,this._changeEmitter=this._register(new l2),this.onChange=this._changeEmitter.event,this._register(e.onPredictionAdded(e=>this._addedAtTime.set(e,Date.now()))),this._register(e.onPredictionSucceeded(this._pushStat.bind(this,!0))),this._register(e.onPredictionFailed(this._pushStat.bind(this,!1)))}}class op extends l5{get _currentGenerationPredictions(){return this._expected.filter(e=>{let{gen:t}=e;return t===this._expected[0].gen}).map(e=>{let{p:t}=e;return t})}get isShowingPredictions(){return this._showPredictions}get length(){return this._expected.length}setShowPredictions(e){if(e===this._showPredictions)return;this._showPredictions=e;let t=this._getActiveBuffer();if(!t)return;let r=this._currentGenerationPredictions;e?(this.clearCursor(),this._style.expectIncomingStyle(r.reduce((e,t)=>t.affectsStyle?e+1:e,0)),this.terminal.write(r.map(e=>e.apply(t,this.physicalCursor(t))).join(""))):this.terminal.write(r.reverse().map(e=>e.rollback(this.physicalCursor(t))).join(""))}undoAllPredictions(){let e=this._getActiveBuffer();this._showPredictions&&e&&this.terminal.write(this._currentGenerationPredictions.reverse().map(t=>t.rollback(this.physicalCursor(e))).join("")),this._expected=[]}beforeServerInput(e){let t=e;if(this._inputBuffer&&(e=this._inputBuffer+e,this._inputBuffer=void 0),!this._expected.length)return this._clearPredictionState(),e;let r=this._getActiveBuffer();if(!r)return this._clearPredictionState(),e;let n="",a=new oa(e),s=this._expected[0].gen,l=()=>{let e=a.eatRe(l7);e&&(n+=e[0])};e:for(;this._expected.length&&a.remaining>0;){l();let{p:t,gen:i}=this._expected[0],c=this.physicalCursor(r),d=a.index;switch(t.matches(a,this._lookBehind)){case 0:{let l=e.slice(d,a.index);if(i===s){var o;n+=null==(o=t.rollForwards)?void 0:o.call(t,c,l)}else t.apply(r,this.physicalCursor(r)),n+=l;this._succeededEmitter.fire(t),this._lookBehind=t,this._expected.shift();break}case 2:this._inputBuffer=e.slice(d),a.index=e.length;break e;case 1:{let e=this._expected.filter(e=>e.gen===s).reverse();n+=e.map(e=>{let{p:t}=e;return t.rollback(this.physicalCursor(r))}).join(""),e.some(e=>e.p.affectsStyle)&&(n+=of(oe(this.terminal)._inputHandler._curAttrData)),this._clearPredictionState(),this._failedEmitter.fire(t);break e}}}if(l(),a.eof||(n+=a.rest,this._clearPredictionState()),this._expected.length&&s!==this._expected[0].gen)for(let{p:e,gen:t}of this._expected){if(t!==this._expected[0].gen)break;e.affectsStyle&&this._style.expectIncomingStyle(),n+=e.apply(r,this.physicalCursor(r))}return this._showPredictions?0===n.length||n===e?n:(this._physicalCursor&&(n+=this._physicalCursor.moveInstruction()),n="\x1b[?25l"+n+"\x1b[?25h"):t}reset(){this._clearPredictionState(),this._inputBuffer=void 0}_clearPredictionState(){this._expected=[],this.clearCursor(),this._lookBehind=void 0}addPrediction(e,t){if(this._expected.push({gen:this._currentGen,p:t}),this._addedEmitter.fire(t),this._currentGen!==this._expected[0].gen)return t.apply(e,this.tentativeCursor(e)),!1;let r=t.apply(e,this.physicalCursor(e));return this._tenativeCursor=void 0,this._showPredictions&&r&&(t.affectsStyle&&this._style.expectIncomingStyle(),this.terminal.write(r)),!0}addBoundary(e,t){let r=!1;return e&&t&&(r=this.addPrediction(e,new ol(t)),t.apply(e,this.tentativeCursor(e))),this._currentGen++,r}peekEnd(){var e;return null==(e=this._expected[this._expected.length-1])?void 0:e.p}peekStart(){var e;return null==(e=this._expected[0])?void 0:e.p}physicalCursor(e){return this._physicalCursor||(this._showPredictions&&ot(this.terminal),this._physicalCursor=new or(this.terminal.rows,this.terminal.cols,e)),this._physicalCursor}tentativeCursor(e){return this._tenativeCursor||(this._tenativeCursor=this.physicalCursor(e).clone()),this._tenativeCursor}clearCursor(){this._physicalCursor=void 0,this._tenativeCursor=void 0}_getActiveBuffer(){let e=this.terminal.buffer.active;return"normal"===e.type?e:void 0}constructor(e,t){super(),this.terminal=e,this._style=t,this._expected=[],this._currentGen=0,this._showPredictions=!1,this._addedEmitter=this._register(new l2),this.onPredictionAdded=this._addedEmitter.event,this._failedEmitter=this._register(new l2),this.onPredictionFailed=this._failedEmitter.event,this._succeededEmitter=this._register(new l2),this.onPredictionSucceeded=this._succeededEmitter.event}}let oh=e=>{if(e.isAttributeDefault())return[0];let t=[];return e.isBold()&&t.push(1),e.isDim()&&t.push(2),e.isItalic()&&t.push(3),e.isUnderline()&&t.push(4),e.isBlink()&&t.push(5),e.isInverse()&&t.push(7),e.isInvisible()&&t.push(8),e.isFgRGB()&&t.push(38,2,e.getFgColor()>>>24,e.getFgColor()>>>16&255,255&e.getFgColor()),e.isFgPalette()&&t.push(38,5,e.getFgColor()),e.isFgDefault()&&t.push(39),e.isBgRGB()&&t.push(48,2,e.getBgColor()>>>24,e.getBgColor()>>>16&255,255&e.getBgColor()),e.isBgPalette()&&t.push(48,5,e.getBgColor()),e.isBgDefault()&&t.push(49),t},of=e=>"\x1b[".concat(oh(e).join(";"),"m"),ox=(e,t,r)=>{if(e.length-t>r.length)return!1;for(let n=0;n<r.length;n++,t++)if(r[t]!==e[t])return!1;return!0},og=e=>"number"==typeof e,ov=(e,t)=>{let r=[0,0,-1,0,0,0],n=0,a=0;do{let s=e[t+a];if(r[a+n]=og(s)?s:s[0],!og(s)){let e=0;do 5===r[1]&&(n=1),r[a+e+1+n]=s[e];while(++e<s.length&&e+a+1+n<r.length);break}if(5===r[1]&&a+n>=2||2===r[1]&&a+n>=5)break;r[1]&&(n=1)}while(++a+t<e.length&&a+n<r.length);return a};class ob{static _compileArgs(e){return"\x1b[".concat(e.join(";"),"m")}expectIncomingStyle(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this._expectedIncomingStyles+=2*e}startTracking(){this.stopTracking(),this._expectedIncomingStyles=0,this._onDidWriteSGR(oh(oe(this._terminal)._inputHandler._curAttrData)),this._csiHandler=this._terminal.parser.registerCsiHandler({final:"m"},e=>(this._onDidWriteSGR(e),!1))}debounceStopTracking(){clearTimeout(this._stopTrackingTimer),this._stopTrackingTimer=setTimeout(()=>this.stopTracking(),2e3)}dispose(){this.stopTracking()}stopTracking(){var e;clearTimeout(this._stopTrackingTimer),this._stopTrackingTimer=void 0,null==(e=this._csiHandler)||e.dispose(),this._csiHandler=void 0}_onDidWriteSGR(e){let t=this._undoArgs;for(let t=0;t<e.length;){let r=e[t],n=og(r)?r:r[0];if(this._expectedIncomingStyles){if(ox(e,t,this._undoArgs)){this._expectedIncomingStyles--,t+=this._undoArgs.length;continue}if(ox(e,t,this._applyArgs)){this._expectedIncomingStyles--,t+=this._applyArgs.length;continue}}let a=38===n||48===n||58===n?ov(e,t):1;switch(this._applyArgs[0]){case 1:2===n?this._undoArgs=[22,2]:(22===n||0===n)&&(this._undoArgs=[22]);break;case 2:1===n?this._undoArgs=[22,1]:(22===n||0===n)&&(this._undoArgs=[22]);break;case 38:0===n||39===n||100===n?this._undoArgs=[39]:(n>=30&&n<=38||n>=90&&n<=97)&&(this._undoArgs=e.slice(t,t+a));break;default:n===this._applyArgs[0]?this._undoArgs=this._applyArgs:0===n&&(this._undoArgs=this._originalUndoArgs)}t+=a}t!==this._undoArgs&&(this.undo=ob._compileArgs(this._undoArgs))}onUpdate(e){let{applyArgs:t,undoArgs:r}=this._getArgs(e);this._applyArgs=t,this._undoArgs=this._originalUndoArgs=r,this.apply=ob._compileArgs(this._applyArgs),this.undo=ob._compileArgs(this._undoArgs)}_getArgs(e){switch(e){case"bold":return{applyArgs:[1],undoArgs:[22]};case"dim":return{applyArgs:[2],undoArgs:[22]};case"italic":return{applyArgs:[3],undoArgs:[23]};case"underlined":return{applyArgs:[4],undoArgs:[24]};case"inverted":return{applyArgs:[7],undoArgs:[27]}}}constructor(e,t){this._terminal=t,this._expectedIncomingStyles=0,this.onUpdate(e)}}class oy extends l5{activate(e){let t=this._typeaheadStyle=this._register(new ob("dim",e)),r=this._timeline=this._register(new op(e,this._typeaheadStyle)),n=this.stats=this._register(new om(this._timeline));r.setShowPredictions(0===this._typeaheadThreshold),this._register(e.onData(e=>this._onUserData(e))),this._register(e.onTitleChange(e=>{this._terminalTitle=e,this._reevaluatePredictorState(n,r)})),this._register(e.onResize(()=>{r.setShowPredictions(!1),r.clearCursor(),this._reevaluatePredictorState(n,r)})),this._register(this._timeline.onPredictionSucceeded(e=>{var t;(null==(t=this._lastRow)?void 0:t.charState)===1&&e instanceof ol&&e.inner instanceof oo&&e.inner.appliedAt&&e.inner.appliedAt.pos.y+e.inner.appliedAt.pos.baseY===this._lastRow.y&&(this._lastRow.charState=2)})),this._register(n.onChange(()=>{0===r.length&&t.debounceStopTracking(),this._reevaluatePredictorState(n,r)}))}reset(){var e,t;this._lastRow=void 0,clearTimeout(this._clearPredictionDebounce),this._clearPredictionDebounce=void 0,null==(e=this._timeline)||e.reset(),null==(t=this._typeaheadStyle)||t.stopTracking()}_deferClearingPredictions(){var e;if(this.stats&&this._timeline){if(clearTimeout(this._clearPredictionDebounce),0===this._timeline.length||(null==(e=this._timeline.peekStart())?void 0:e.clearAfterTimeout)===!1){this._clearPredictionDebounce=void 0;return}this._clearPredictionDebounce=setTimeout(()=>{var e,t;this._clearPredictionDebounce=void 0,null==(e=this._timeline)||e.undoAllPredictions(),(null==(t=this._lastRow)?void 0:t.charState)===1&&(this._lastRow.charState=0)},Math.max(500,3*this.stats.maxLatency/2))}}_reevaluatePredictorState(e,t){clearTimeout(this._reevaluateDebounce),this._reevaluateDebounce=setTimeout(()=>this._reevaluatePredictorStateNow(e,t),100)}_reevaluatePredictorStateNow(e,t){if(this._excludeProgramRe.test(this._terminalTitle))t.setShowPredictions(!1);else if(this._typeaheadThreshold<0)t.setShowPredictions(!1);else if(0===this._typeaheadThreshold)t.setShowPredictions(!0);else if(e.sampleSize>5&&e.accuracy>.3){let r=e.latency.median;r>=this._typeaheadThreshold?t.setShowPredictions(!0):r<this._typeaheadThreshold/.5&&t.setShowPredictions(!1)}}_onUserData(e){var t,r,n,a;if((null==(t=this._timeline)?void 0:t.terminal.buffer.active.type)!=="normal")return;let s=this._timeline.terminal,l=s.buffer.active;if(1===l.cursorX&&l.cursorY===s.rows-1&&(null==(a=l.getLine(l.cursorY+l.baseY))||null==(n=a.getCell(0))?void 0:n.getChars())===":")return;let o=l.baseY+l.cursorY;o!==(null==(r=this._lastRow)?void 0:r.y)?this._lastRow={y:o,startingX:l.cursorX,endingX:l.cursorX,charState:0}:(this._lastRow.startingX=Math.min(this._lastRow.startingX,l.cursorX),this._lastRow.endingX=Math.max(this._lastRow.endingX,this._timeline.physicalCursor(l).x));let i=e=>this._timeline.tentativeCursor(l).x<=this._lastRow.startingX?this._timeline.addBoundary(l,e):this._timeline.addPrediction(l,e),c=e=>this._timeline.tentativeCursor(l).x>=this._lastRow.endingX-1?this._timeline.addBoundary(l,e):this._timeline.addPrediction(l,e),d=new oa(e);for(;d.remaining>0;){if(d.eatCharCode(127)){let e=this._timeline.peekEnd();e&&e instanceof oo&&this._timeline.addBoundary(),this._timeline.isShowingPredictions&&ot(this._timeline.terminal),this._timeline.tentativeCursor(l).x<=this._lastRow.startingX?this._timeline.addBoundary(l,new oi(this._timeline.terminal)):(this._lastRow.endingX--,this._timeline.addPrediction(l,new oi(this._timeline.terminal)));continue}if(d.eatCharCode(32,126)){let t=e[d.index-1],r=new oo(this._typeaheadStyle,t);0===this._lastRow.charState?(this._timeline.addBoundary(l,r),this._lastRow.charState=1):this._timeline.addPrediction(l,r),this._timeline.tentativeCursor(l).x>=s.cols&&this._timeline.addBoundary(l,new od);continue}let t=d.eatRe(l6);if(t){let e=t[3],r=new ou(e,!!t[2],Number(t[1])||1);"D"===e?i(r):c(r);continue}if(d.eatStr("\x1bf")){c(new ou("C",!0,1));continue}if(d.eatStr("\x1bb")){i(new ou("D",!0,1));continue}if(d.eatChar("\r")&&l.cursorY<s.rows-1){this._timeline.addPrediction(l,new oc);continue}this._timeline.addBoundary(l,new os);break}1===this._timeline.length&&(this._deferClearingPredictions(),this._typeaheadStyle.startTracking())}beforeServerInput(e){return this._timeline&&(e=this._timeline.beforeServerInput(e),this._deferClearingPredictions()),e}constructor(){super(),this._typeaheadThreshold=0,this._excludeProgramRe=l4,this._terminalTitle="",this._register({dispose:()=>{clearTimeout(this._clearPredictionDebounce),clearTimeout(this._reevaluateDebounce)}})}}r(87063);let ow=0,oj={dark:{background:"#0a0a0a",foreground:"#e4e4e7",cursor:"#e4e4e7",cursorAccent:"#0a0a0a",selectionBackground:"#27272a",black:"#18181b",red:"#f87171",green:"#4ade80",yellow:"#facc15",blue:"#60a5fa",magenta:"#c084fc",cyan:"#22d3ee",white:"#e4e4e7",brightBlack:"#52525b",brightRed:"#fca5a5",brightGreen:"#86efac",brightYellow:"#fde68a",brightBlue:"#93c5fd",brightMagenta:"#d8b4fe",brightCyan:"#67e8f9",brightWhite:"#fafafa"},light:{background:"#ffffff",foreground:"#171717",cursor:"#171717",cursorAccent:"#ffffff",selectionBackground:"#bfdbfe",black:"#262626",red:"#b91c1c",green:"#15803d",yellow:"#a16207",blue:"#1d4ed8",magenta:"#7e22ce",cyan:"#0e7490",white:"#525252",brightBlack:"#737373",brightRed:"#dc2626",brightGreen:"#16a34a",brightYellow:"#ca8a04",brightBlue:"#2563eb",brightMagenta:"#9333ea",brightCyan:"#0891b2",brightWhite:"#a3a3a3"},midnight:{background:"#0b1220",foreground:"#dbe4f3",cursor:"#dbe4f3",cursorAccent:"#0b1220",selectionBackground:"#1e2a47",black:"#16213a",red:"#f87171",green:"#4ade80",yellow:"#facc15",blue:"#60a5fa",magenta:"#c084fc",cyan:"#22d3ee",white:"#dbe4f3",brightBlack:"#64769b",brightRed:"#fca5a5",brightGreen:"#86efac",brightYellow:"#fde68a",brightBlue:"#93c5fd",brightMagenta:"#d8b4fe",brightCyan:"#67e8f9",brightWhite:"#f1f5fb"},warm:{background:"#f6f1e7",foreground:"#3d3427",cursor:"#3d3427",cursorAccent:"#f6f1e7",selectionBackground:"#e6dabf",black:"#292524",red:"#b91c1c",green:"#15803d",yellow:"#a16207",blue:"#1d4ed8",magenta:"#7e22ce",cyan:"#0e7490",white:"#57534e",brightBlack:"#78716c",brightRed:"#dc2626",brightGreen:"#16a34a",brightYellow:"#ca8a04",brightBlue:"#2563eb",brightMagenta:"#9333ea",brightCyan:"#0891b2",brightWhite:"#a8a29e"}},ok={fontFamily:"'JetBrains Mono', 'Fira Code', Menlo, Monaco, monospace",fontSize:13,lineHeight:1,cursorBlink:!0,scrollback:1e4};function oN(e,t,r,n){let a=document.createElement("div");a.className="absolute inset-0",a.style.display="none",e.appendChild(a);let s=new lZ.B({...ok,theme:oj[r]}),l=new lV.Y;s.loadAddon(l),s.open(a),l.fit();let o=new oy;s.loadAddon(o),s.onData(e=>{p.send({type:"terminal:input",data:e,terminalId:t})}),s.attachCustomKeyEventHandler(e=>{let t=function(e,t){let{isMac:r,hasSelection:n}=t;if(r||"keydown"!==e.type||!e.ctrlKey||e.altKey||e.metaKey)return null;let a=e.key.toLowerCase();return"c"===a?e.shiftKey||n?"copy":null:"v"===a?"paste":null}(e,{isMac:lX,hasSelection:s.hasSelection()});return"copy"===t&&(e.preventDefault(),s.hasSelection()&&(document.execCommand("copy"),s.clearSelection())),null===t}),a.addEventListener("contextmenu",e=>{e.preventDefault(),n({x:e.clientX,y:e.clientY,term:s})});let i=null,c=new ResizeObserver(()=>{l.fit(),i&&clearTimeout(i),i=setTimeout(()=>{p.send({type:"terminal:resize",cols:s.cols,rows:s.rows,terminalId:t})},150)});return c.observe(a),{term:s,fit:l,typeAhead:o,container:a,ro:c}}function oS(){var e,t;let{headerless:r,onActiveNameChange:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=(0,T.kj)(),s=(0,o.useRef)(null),i=(0,o.useRef)(new Map),[c,u]=(0,o.useState)([]),[m,h]=(0,o.useState)(null),f=null!=(t=null==(e=c.find(e=>e.id===m))?void 0:e.name)?t:null;(0,o.useEffect)(()=>{null==n||n(f)},[f,n]);let[x,g]=(0,o.useState)(null),v=(0,o.useCallback)(()=>g(null),[]),b=rU(e=>e.activeProject),{theme:y}=(0,e5.useTheme)(),w=(0,o.useRef)(y);(0,o.useEffect)(()=>{for(let e of(w.current=y,i.current.values()))e.term.options.theme=oj[y]},[y]);let j=(0,o.useCallback)(e=>{var t,r,n;let a=s.current;if(!a)return;ow++;let l="term_".concat(Date.now().toString(36),"_").concat(ow),o=0===c.length?"bash":"bash (".concat(ow,")"),{term:d,fit:m,typeAhead:f,container:x,ro:v}=oN(a,l,w.current,g);i.current.set(l,{id:l,name:o,term:d,fit:m,typeAhead:f,container:x,ro:v,ready:!1,exited:!1});let y=new URLSearchParams(window.location.search).get("folder"),j=null!=(r=null!=(t=null!=e?e:null==b?void 0:b.path)?t:y)?r:"~";return p.send({type:"terminal:start",terminalId:l,cwd:j,cols:d.cols,rows:d.rows,workspacePath:null!=(n=null==b?void 0:b.path)?n:"",name:o}),u(e=>[...e,{id:l,name:o}]),h(l),l},[b,c.length]),k=(0,o.useCallback)((e,t)=>{let r=i.current.get(e);if(r)return r;let n=s.current;if(!n)return;ow++;let{term:a,fit:l,typeAhead:o,container:c,ro:d}=oN(n,e,w.current,g),m={id:e,name:t,term:a,fit:l,typeAhead:o,container:c,ro:d,ready:!0,exited:!1};return i.current.set(e,m),u(r=>[...r,{id:e,name:t}]),h(t=>null!=t?t:e),m},[]),N=(0,o.useCallback)(e=>{let t=i.current.get(e);t&&(p.send({type:"terminal:close",terminalId:e}),t.ro.disconnect(),t.term.dispose(),t.container.remove(),i.current.delete(e),u(t=>{let r=t.filter(t=>t.id!==e);return h(n=>{if(n===e){var a,s;return null!=(s=null==(a=r[Math.min(t.findIndex(t=>t.id===e),r.length-1)])?void 0:a.id)?s:null}return n}),r}))},[]),S=(0,o.useCallback)(e=>{h(e)},[]);(0,o.useEffect)(()=>{let e=i.current;return()=>{for(let t of e.values())t.ro.disconnect(),t.term.dispose(),t.container.remove();e.clear()}},[]),(0,o.useEffect)(()=>{for(let[e,t]of i.current){let r=e===m;t.container.style.display=r?"block":"none",r&&(t.fit.fit(),t.term.focus())}},[m]),(0,o.useEffect)(()=>{let e=[];return e.push(p.on("terminal:output",e=>{let{terminalId:t,data:r}=e,n=t?i.current.get(t):i.current.values().next().value;null==n||n.term.write(n.typeAhead.beforeServerInput(r))})),e.push(p.on("terminal:ready",e=>{let{terminalId:t}=e;if(t){let e=i.current.get(t);e&&(e.ready=!0)}})),e.push(p.on("terminal:exit",e=>{let{terminalId:t}=e;if(t){let e=i.current.get(t);e&&(e.exited=!0,e.term.write(e.typeAhead.beforeServerInput("\r\n\x1b[90m[Process exited]\x1b[0m\r\n")))}})),e.push(p.on("terminal:opened",e=>{k(e.terminalId,e.name)})),e.push(p.on("terminal:snapshot",e=>{let t=k(e.terminalId,"bash");t&&(t.typeAhead.reset(),t.term.reset(),t.term.resize(e.cols,e.rows),t.term.write(e.data,()=>{t.fit.fit(),p.send({type:"terminal:resize",cols:t.term.cols,rows:t.term.rows,terminalId:e.terminalId})}))})),()=>e.forEach(e=>e())},[k]);let C=(0,o.useRef)(!1);return(0,o.useEffect)(()=>{if(C.current||!b)return;C.current=!0;let e=p.on("terminal:reattached",e=>{for(let{id:t,name:r}of e.terminals)k(t,r);0===e.terminals.length&&0===i.current.size&&j()}),t=()=>{var e;p.send({type:"terminal:reattach",workspacePath:null!=(e=null==b?void 0:b.path)?e:""})};t();let r=p.on("_connected",t);return()=>{e(),r()}},[b,j,k]),(0,o.useEffect)(()=>{let e=d.Uw.getState().pendingTerminalCwd;return d.Uw.subscribe(t=>{let r=t.pendingTerminalCwd;if(r&&r!==e){e=r;let n=t.consumeTerminalSpawn();n&&j(n)}else e=r})},[j]),(0,l.jsxs)("div",{className:"flex h-full min-h-0 bg-[var(--background)]",children:[(0,l.jsx)("div",{ref:s,className:"relative min-h-0 flex-1 overflow-hidden"}),x&&(0,l.jsx)(l3,{x:x.x,y:x.y,term:x.term,onClose:v}),(0,l.jsxs)(lN,{openKey:"halo_terminal_sidebar_open",widthKey:"halo_terminal_sidebar_width",defaultWidth:160,title:a("terminal.list.title"),collapsedContent:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"flex min-h-0 w-full flex-1 flex-col items-center gap-0.5 overflow-y-auto py-1",children:c.map(e=>(0,l.jsx)(lE,{icon:(0,l.jsx)(q.A,{className:"h-3.5 w-3.5"}),tooltip:e.name,active:e.id===m,onActivate:()=>S(e.id)},e.id))}),(0,l.jsx)(lT,{collapsed:!0,onClick:()=>j(),label:a("terminal.list.new")})]}),children:[(0,l.jsx)("div",{className:"flex flex-1 flex-col gap-0.5 overflow-y-auto py-1",children:c.map(e=>(0,l.jsx)(lI,{icon:(0,l.jsx)(q.A,{className:"h-3 w-3"}),label:e.name,tooltip:e.name,active:e.id===m,onActivate:()=>S(e.id),onClose:c.length>1?()=>N(e.id):void 0,closeLabel:a("terminal.list.close")},e.id))}),(0,l.jsx)(lT,{onClick:()=>j(),label:a("terminal.list.new")})]})]})}var oC=r(39768);function oA(e){return Math.min(.8,Math.max(.2,e))}let oI=e=>"halo_bottom_split_ratio_".concat(e),oE=e=>"".concat(e," 1 0px");function oT(e){let t=Number(localStorage.getItem(oI(e)));return Number.isFinite(t)&&t>0?oA(t):.5}function o_(){let{floating:e=!1,dragHandleRef:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=(0,T.kj)(),n=(0,d.Uw)(e=>e.bottomTab),a=(0,d.Uw)(e=>e.setBottomTab),s=(0,d.Uw)(e=>e.setBottomFloating),i=(0,d.Uw)(e=>e.bottomMaximized),c=(0,d.Uw)(e=>e.setBottomMaximized),u=(0,d.Uw)(e=>e.bottomSplit),m=(0,d.Uw)(e=>e.setBottomSplit),[h,f]=(0,o.useState)("terminal"===n||u);(0,o.useEffect)(()=>{("terminal"===n||u)&&f(!0)},[n,u]);let[x,g]=(0,o.useState)(0);(0,o.useEffect)(()=>p.on("_disconnected",()=>g(e=>e+1)),[]);let[v,b]=(0,o.useState)(""),[y,w]=(0,o.useState)(null),j=u?[v,y].filter(Boolean).join(" \xb7 "):"chat"===n?v:null!=y?y:"",k=(0,o.useRef)(null),[N,S]=(0,o.useState)("row");(0,o.useEffect)(()=>{let e=k.current;if(!e)return;let t=new ResizeObserver(e=>{let[t]=e;t.contentRect.width>0&&S(t.contentRect.width<720?"column":"row")});return t.observe(e),()=>t.disconnect()},[]);let[C,A]=(0,o.useState)(()=>({row:oT("row"),column:oT("column")})),I=C[N],_=(0,o.useRef)(null),P=(0,o.useRef)(null),M=e=>{u&&m(!1),a(e)},F=(e,t)=>u?{className:"min-h-0 min-w-0 overflow-hidden",style:{flex:oE(t)}}:{className:n===e?"h-full min-w-0 flex-1":"hidden"};return(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{ref:t,className:(0,E.cn)("relative flex h-[35px] shrink-0 items-center gap-0 border-b border-[var(--border)] bg-[var(--card)] px-2",e&&"cursor-move select-none"),children:[(0,l.jsx)(oP,{label:r("nav.chat"),active:u||"chat"===n,onClick:()=>M("chat")}),(0,l.jsx)(oP,{label:r("nav.terminal"),active:u||"terminal"===n,onClick:()=>M("terminal")}),j&&(0,l.jsx)("div",{className:"pointer-events-none absolute inset-y-0 left-48 right-48 flex items-center justify-center overflow-hidden",children:(0,l.jsx)("span",{title:j,className:"pointer-events-auto truncate text-[11px] text-[var(--muted-foreground)]",children:j})}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onMouseDown:e=>e.stopPropagation(),onClick:()=>m(!u),title:r(u?"bottom.singleView":"bottom.splitView"),className:"rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(eV.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onMouseDown:e=>e.stopPropagation(),onClick:()=>c(!i),title:i?"Restore panel":"Maximize panel",className:"rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:i?(0,l.jsx)(rQ.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(r0.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onMouseDown:e=>e.stopPropagation(),onClick:()=>s(!e),title:e?"Dock back":"Float panel",className:"rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:e?(0,l.jsx)(e0.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(oC.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsxs)("div",{ref:k,className:(0,E.cn)("flex min-h-0 flex-1",u&&"column"===N&&"flex-col"),children:[(0,l.jsx)("div",{ref:_,"data-pane":"chat",...F("chat",I),children:(0,l.jsx)(lY,{onTitleChange:b})}),u&&(0,l.jsx)("div",{className:(0,E.cn)("group relative z-10 shrink-0 bg-[var(--border)]","row"===N?"w-px":"h-px"),children:(0,l.jsx)("div",{"data-split-divider":!0,onPointerDown:e=>{let t=k.current,r=_.current,n=P.current;if(0!==e.button||!t||!r||!n)return;e.preventDefault();let a=t.getBoundingClientRect(),s=I,l=document.body.style,o=l.cursor,i=l.userSelect;l.cursor="row"===N?"col-resize":"row-resize",l.userSelect="none";let c=e=>{s=oA("row"===N?(e.clientX-a.left)/a.width:(e.clientY-a.top)/a.height),r.style.flex=oE(s),n.style.flex=oE(1-s)},d=()=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",d),window.removeEventListener("pointercancel",d),l.cursor=o,l.userSelect=i,s!==I&&(A(e=>({...e,[N]:s})),localStorage.setItem(oI(N),String(s)))};window.addEventListener("pointermove",c),window.addEventListener("pointerup",d),window.addEventListener("pointercancel",d)},className:(0,E.cn)("absolute transition-colors group-hover:bg-[var(--primary)]","row"===N?"-inset-x-0.5 inset-y-0 cursor-col-resize":"-inset-y-0.5 inset-x-0 cursor-row-resize")})}),(0,l.jsx)("div",{ref:P,"data-pane":"terminal",...F("terminal",1-I),children:h&&(0,l.jsx)(oS,{headerless:!0,onActiveNameChange:w},x)})]})]})}function oP(e){let{label:t,active:r,onClick:n}=e;return(0,l.jsxs)("button",{onClick:n,className:(0,E.cn)("relative px-3 py-2 text-[11px] font-medium tracking-wide transition-colors",r?"text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:[t,r&&(0,l.jsx)("div",{className:"absolute bottom-0 left-2 right-2 h-px bg-[var(--foreground)]"})]})}function oM(e){let{slotRef:t,dragHandleRef:r}=e,n=(0,d.Uw)(e=>e.bottomFloatRect),a=(0,d.Uw)(e=>e.setBottomFloatRect),s=(0,d.Uw)(e=>e.bottomMaximized),i=(0,o.useRef)(n);(0,o.useEffect)(()=>{i.current=n}),(0,o.useEffect)(()=>{let e=r.current;if(e&&!s)return e.addEventListener("mousedown",t),()=>e.removeEventListener("mousedown",t);function t(e){if(e.target.closest("button"))return;e.preventDefault();let t=e.clientX,r=e.clientY,n={...i.current};function s(e){let s=e.clientX-t,l=e.clientY-r;a({x:oF(n.x+s,0,window.innerWidth-n.w),y:oF(n.y+l,0,window.innerHeight-n.h),w:n.w,h:n.h})}window.addEventListener("mousemove",s),window.addEventListener("mouseup",function e(){window.removeEventListener("mousemove",s),window.removeEventListener("mouseup",e)})}},[a,s,r]),(0,o.useEffect)(()=>{function e(){let e=i.current,t=oF(e.x,0,Math.max(0,window.innerWidth-e.w)),r=oF(e.y,0,Math.max(0,window.innerHeight-e.h));(t!==e.x||r!==e.y)&&a({...e,x:t,y:r})}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[a]);let c=(0,o.useRef)(null);(0,o.useEffect)(()=>{let e=c.current;if(e&&!s)return e.addEventListener("mousedown",t),()=>e.removeEventListener("mousedown",t);function t(e){var t;let r=e.target.closest("[data-edges]");if(!r)return;let n=null!=(t=r.getAttribute("data-edges"))?t:"",s={top:n.includes("top"),bottom:n.includes("bottom"),left:n.includes("left"),right:n.includes("right")};e.preventDefault(),e.stopPropagation();let l=e.clientX,o=e.clientY,c={...i.current},d=c.x+c.w,u=c.y+c.h;function m(e){let t=e.clientX-l,r=e.clientY-o,{x:n,y:i,w:m,h:p}=c;if(s.right&&(m=oF(c.w+t,320,window.innerWidth-c.x)),s.bottom&&(p=oF(c.h+r,240,window.innerHeight-c.y)),s.left){let e=oF(c.x+t,0,d-320);n=e,m=d-e}if(s.top){let e=oF(c.y+r,0,u-240);i=e,p=u-e}a({x:n,y:i,w:m,h:p})}window.addEventListener("mousemove",m),window.addEventListener("mouseup",function e(){window.removeEventListener("mousemove",m),window.removeEventListener("mouseup",e)})}},[a,s]);let u=s?{left:0,top:0,width:"100vw",height:"100vh"}:{left:n.x,top:n.y,width:n.w,height:n.h};return(0,l.jsxs)("div",{className:"fixed z-50 flex flex-col rounded-md border border-[var(--border)] bg-[var(--background)] shadow-2xl",style:u,children:[(0,l.jsx)("div",{ref:t,className:"min-h-0 flex-1 overflow-hidden rounded-md"}),!s&&(0,l.jsxs)("div",{ref:c,children:[(0,l.jsx)("div",{"data-edges":"top",className:"absolute -top-1 left-3 right-3 h-2 cursor-ns-resize"}),(0,l.jsx)("div",{"data-edges":"bottom",className:"absolute -bottom-1 left-3 right-3 h-2 cursor-ns-resize"}),(0,l.jsx)("div",{"data-edges":"left",className:"absolute -left-1 top-3 bottom-3 w-2 cursor-ew-resize"}),(0,l.jsx)("div",{"data-edges":"right",className:"absolute -right-1 top-3 bottom-3 w-2 cursor-ew-resize"}),(0,l.jsx)("div",{"data-edges":"top left",className:"absolute -top-1 -left-1 h-3 w-3 cursor-nwse-resize"}),(0,l.jsx)("div",{"data-edges":"top right",className:"absolute -top-1 -right-1 h-3 w-3 cursor-nesw-resize"}),(0,l.jsx)("div",{"data-edges":"bottom left",className:"absolute -bottom-1 -left-1 h-3 w-3 cursor-nesw-resize"}),(0,l.jsx)("div",{"data-edges":"bottom right",className:"absolute -bottom-1 -right-1 h-3 w-3 cursor-nwse-resize"})]})]})}function oF(e,t,r){return Math.max(t,Math.min(r,e))}let oD={ts:J.A,tsx:J.A,js:J.A,jsx:J.A,json:O.A,md:W.A};function oL(e){let{onSelect:t,onClose:r}=e,n=rU(e=>{var t,r;return null!=(r=null==(t=e.activeProject)?void 0:t.id)?r:null}),[a,s]=(0,o.useState)(""),[i,c]=(0,o.useState)(0),[d,m]=(0,o.useState)([]),[p,h]=(0,o.useState)(!1),f=(0,o.useRef)(null),x=(0,o.useRef)(null);(0,o.useEffect)(()=>{var e;null==(e=f.current)||e.focus()},[]),(0,o.useEffect)(()=>{c(0)},[a]),(0,o.useEffect)(()=>{if(!n)return;let e=a.trim();if(!e){m([]),h(!1);return}h(!0);let t=!1,r=setTimeout(()=>{u.FH.files.search(n,e,50).then(e=>{t||m(e.matches)}).catch(e=>{t||(console.error("[QuickOpen] Search failed:",e),m([]))}).finally(()=>{t||h(!1)})},150);return()=>{t=!0,clearTimeout(r)}},[n,a]),(0,o.useEffect)(()=>{var e;let t=null==(e=x.current)?void 0:e.children[i];null==t||t.scrollIntoView({block:"nearest"})},[i]);let g=(0,o.useCallback)(e=>{if("Escape"===e.key)return void r();if("ArrowDown"===e.key){e.preventDefault(),c(e=>Math.min(e+1,d.length-1));return}if("ArrowUp"===e.key){e.preventDefault(),c(e=>Math.max(e-1,0));return}"Enter"===e.key&&(e.preventDefault(),d[i]&&(t(d[i].path),r()))},[d,i,t,r]);return(0,o.useEffect)(()=>{function e(e){e.target.closest("[data-quick-open]")||r()}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[r]),(0,l.jsxs)("div",{className:"fixed inset-0 z-50 flex justify-center pt-[15vh]",children:[(0,l.jsx)("div",{className:"fixed inset-0 bg-black/40"}),(0,l.jsxs)("div",{"data-quick-open":!0,className:"relative w-full max-w-lg",children:[(0,l.jsx)("input",{ref:f,value:a,onChange:e=>s(e.target.value),onKeyDown:g,placeholder:"Search files by name...",className:"w-full rounded-t-md border border-[var(--border)] bg-[var(--card)] px-4 py-3 text-sm text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none"}),(0,l.jsx)("div",{ref:x,className:"max-h-[40vh] overflow-y-auto rounded-b-md border border-t-0 border-[var(--border)] bg-[var(--card)]",children:0===d.length?(0,l.jsx)("div",{className:"px-4 py-6 text-center text-xs text-[var(--muted-foreground)]",children:p?"Searching...":"No files found"}):d.map((e,n)=>{var a,s,o;let c=null!=(o=oD[null!=(s=null==(a=e.name.split(".").pop())?void 0:a.toLowerCase())?s:""])?o:et.A;return(0,l.jsxs)("button",{onClick:()=>{t(e.path),r()},className:(0,E.cn)("flex w-full items-center gap-2 px-4 py-2 text-left text-xs transition-colors",n===i?"bg-[var(--accent)] text-[var(--accent-foreground)]":"text-[var(--foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)(c,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"truncate font-medium",children:e.name}),(0,l.jsx)("span",{className:"ml-auto truncate text-[10px] text-[var(--muted-foreground)]",children:e.path})]},e.path)})})]})]})}var oR=r(82011);function oH(e){let{initialPath:t,onSelect:r,onClose:n}=e,[a,s]=(0,o.useState)(null!=t?t:""),[i,c]=(0,o.useState)(""),[d,m]=(0,o.useState)([]),[p,h]=(0,o.useState)(!1),[f,x]=(0,o.useState)(null),g=(0,o.useCallback)(async e=>{h(!0),x(null);try{let t=await u.FH.fs.browse(e);s(t.path),c(t.parent),m(t.entries)}catch(e){x(e instanceof Error?e.message:"Failed to load directory")}finally{h(!1)}},[]);return(0,o.useEffect)(()=>{t?g(t):u.FH.fs.home().then(e=>{let{home:t}=e;return g(t)}).catch(e=>x(String(e)))},[t,g]),(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:n,children:(0,l.jsxs)("div",{className:"w-[560px] max-h-[70vh] flex flex-col rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-2.5",children:[(0,l.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:"Open Workspace"}),(0,l.jsx)("button",{onClick:n,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-1 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsx)("button",{onClick:()=>g(i),disabled:p||!i||i===a,title:"Parent directory",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:opacity-30",children:(0,l.jsx)(oR.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:()=>u.FH.fs.home().then(e=>{let{home:t}=e;return g(t)}),disabled:p,title:"Home directory",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:opacity-30",children:(0,l.jsx)(tX.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("input",{type:"text",value:a,onChange:e=>s(e.target.value),onKeyDown:e=>{"Enter"===e.key&&g(a)},className:"flex-1 rounded border border-[var(--border)] bg-[var(--secondary)] px-2 py-1 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]"})]}),(0,l.jsxs)("div",{className:"flex-1 min-h-0 overflow-y-auto",children:[f&&(0,l.jsx)("p",{className:"px-4 py-3 text-xs text-red-400",children:f}),p&&!f&&(0,l.jsx)("p",{className:"px-4 py-3 text-xs text-[var(--muted-foreground)]",children:"Loading..."}),!p&&!f&&0===d.length&&(0,l.jsx)("p",{className:"px-4 py-3 text-xs text-[var(--muted-foreground)]",children:"(empty)"}),!p&&d.map(e=>(0,l.jsxs)("button",{onDoubleClick:()=>g(e.path),onClick:()=>s(e.path),className:(0,E.cn)("flex w-full items-center gap-2 px-4 py-1.5 text-xs text-left transition-colors",a===e.path?"bg-[var(--primary)]/20 text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)(_.A,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),e.name]},e.path))]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-3 py-2.5",children:[(0,l.jsx)("button",{onClick:n,className:"rounded px-3 py-1 text-xs font-medium text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:"Cancel"}),(0,l.jsx)("button",{onClick:()=>r(a),disabled:!a,className:"rounded bg-[var(--primary)] px-3 py-1 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-30",children:"Open"})]})]})})}let oz="halo_recent_workspaces";function oO(){try{let e=localStorage.getItem(oz),t=e?JSON.parse(e):[];return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch(e){return[]}}function oU(e){try{localStorage.setItem(oz,JSON.stringify(e))}catch(e){}}var oB=r(42981),oW=r(72838),oK=r(29062),oG=r(24619);function oq(e){var t,r;let{projectId:n,pathInput:a,onPathInputChange:s,onOpenFolder:i,onOpenPath:c,activeProject:m}=e,p=(0,T.kj)(),h=(0,d._r)(),f=nJ(e=>e.isStreaming),[x,v]=(0,o.useState)(!1),[b,y]=(0,o.useState)(!1),w=(0,o.useRef)(null),{recent:j,remove:k}=function(){let[e,t]=(0,o.useState)([]);return(0,o.useEffect)(()=>{t(oO())},[]),{recent:e,remove:(0,o.useCallback)(e=>{t(t=>{let r=t.filter(t=>t!==e);return oU(r),r})},[])}}(),[N,S]=(0,o.useState)(!1),[C,A]=(0,o.useState)(!1),I=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(N)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){I.current&&!I.current.contains(e.target)&&S(!1)}},[N]);let _=C?a.trim().toLowerCase():"",P=j.filter(e=>e!==(null==m?void 0:m.path)&&(!_||e.toLowerCase().includes(_)));async function M(){var e;if(!n)return;let t=await (0,E.ZC)("New file name (relative path, e.g. src/hello.ts):");if(!(null==t?void 0:t.trim()))return;let r=t.trim(),a=eA(null!=(e=r.split("/").pop())?e:"");try{a?await u.FH.files.mkdir(r,n):await u.FH.files.create(r,n),g(n),a&&h.getState().openPreview(r,"","",{bundle:!0})}catch(e){console.error("[Explorer] Failed to create file:",e),window.alert(e instanceof Error?e.message:"Failed to create file")}}async function F(){if(!n)return;let e=await (0,E.ZC)("New folder name (relative path, e.g. src/utils):");if(null==e?void 0:e.trim())try{await u.FH.files.mkdir(e.trim(),n),g(n)}catch(e){console.error("[Explorer] Failed to create folder:",e),window.alert(e instanceof Error?e.message:"Failed to create folder")}}async function D(e){var t;if(!n||!(null==(t=e.target.files)?void 0:t.length))return;let r=Array.from(e.target.files);try{await u.FH.files.upload(r,n),g(n)}catch(e){console.error("[Explorer] Upload failed:",e),window.alert(e instanceof Error?e.message:"Upload failed")}e.target.value=""}let R=null!=(r=null==m||null==(t=m.path.split("/").filter(Boolean).pop())?void 0:t.toUpperCase())?r:"EXPLORER";return(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 shrink-0 items-center border-b border-[var(--border)] px-3",children:[(0,l.jsx)(oB.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"ml-2 text-sm font-medium text-[var(--foreground)]",children:p("nav.explorer")}),(0,l.jsx)("div",{className:"flex-1"}),n&&(0,l.jsx)("button",{onClick:function(){n&&(v(!0),g(n),setTimeout(()=>v(!1),500))},disabled:x,title:"Refresh",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",x&&"animate-spin")})}),n&&(0,l.jsx)("button",{onClick:eR,title:"Collapse All",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors",children:(0,l.jsx)(oW.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-1 border-b border-[var(--border)] p-3",children:[(0,l.jsxs)("div",{ref:I,className:"relative min-w-0 flex-1",children:[(0,l.jsx)("input",{type:"text",value:a,onChange:e=>{s(e.target.value),A(!0),S(!0)},onFocus:()=>{A(!1),S(!0)},onKeyDown:e=>{"Enter"!==e.key||e.repeat||e.nativeEvent.isComposing?"Escape"===e.key&&S(!1):(S(!1),i())},placeholder:"Enter folder path, press Enter",className:"w-full rounded border border-[var(--border)] bg-[var(--secondary)] px-2 py-1.5 text-xs text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none focus:border-[var(--primary)]"}),N&&P.length>0&&(0,l.jsx)("div",{className:"absolute left-0 right-0 top-full z-20 mt-1 max-h-64 overflow-y-auto rounded border border-[var(--border)] bg-[var(--background)] py-1 shadow-lg",children:P.map(e=>(0,l.jsxs)("div",{onClick:()=>{S(!1),c(e)},className:"group flex cursor-pointer items-center gap-2 px-2 py-1.5 hover:bg-[var(--secondary)]",children:[(0,l.jsx)(oK.A,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("div",{className:"truncate text-xs text-[var(--foreground)]",children:e.split(/[/\\]/).filter(Boolean).pop()||e}),(0,l.jsx)("div",{className:"truncate text-[10px] text-[var(--muted-foreground)]",children:e})]}),(0,l.jsx)("button",{onClick:t=>{t.stopPropagation(),k(e)},title:"Remove from recent",className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 hover:bg-[var(--border)] hover:text-[var(--foreground)] group-hover:opacity-100",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]},e))})]}),(0,l.jsx)("button",{onClick:()=>y(!0),title:"Browse for folder",className:"shrink-0 rounded border border-[var(--border)] p-1.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(eJ.A,{className:"h-3.5 w-3.5"})})]}),b&&(0,l.jsx)(oH,{initialPath:null==m?void 0:m.path,onSelect:e=>{y(!1),c(e)},onClose:()=>y(!1)}),n&&(0,l.jsxs)("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--border)] px-3 py-1.5",children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,l.jsx)("span",{title:p(f?"status.busy":"status.idle"),className:(0,E.cn)("inline-block h-2 w-2 shrink-0 rounded-full",f?"bg-amber-400 animate-pulse":"bg-emerald-500")}),(0,l.jsx)("span",{className:"truncate text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:R})]}),(0,l.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,l.jsx)("button",{onClick:M,title:"New File",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e$.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:F,title:"New Folder",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(eY.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:()=>{var e;return null==(e=w.current)?void 0:e.click()},title:"Upload Files",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(oG.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("input",{ref:w,type:"file",multiple:!0,className:"hidden",onChange:D})]})]}),(0,l.jsx)("div",{className:"flex-1 overflow-y-auto",children:n?(0,l.jsx)(r9,{projectId:n,mode:"tree-only"}):(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center gap-2 p-6 text-center",children:[(0,l.jsx)(L.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"Enter a folder path to explore files"})]})})]})}var o$=r(91061),oY=r(40876),oJ=r(35829);function oZ(e){return"".concat(e.id,":").concat(e.scope)}let oV="halo_skills_selectedKey",oX="halo_skills_expandedScopes";function oQ(){try{let e=localStorage.getItem(oX);if(e)return new Set(JSON.parse(e))}catch(e){}return new Set(["global","workspace","extension"])}let o0=(0,b.v)(e=>({skills:[],selectedKey:localStorage.getItem(oV),setSkills:t=>e({skills:t}),setSelectedKey:t=>{t?localStorage.setItem(oV,t):localStorage.removeItem(oV),e({selectedKey:t})},addSkill:t=>e(e=>({skills:[...e.skills,t]})),removeSkill:t=>e(e=>{let r=e.skills.filter(e=>oZ(e)!==t),[n,a]=t.split(":"),s="workspace"===a?r.map(e=>e.id===n&&"global"===e.scope?{...e,overridden:!1}:e):r,l=e.selectedKey===t?null:e.selectedKey;return e.selectedKey===t&&localStorage.removeItem(oV),{skills:s,selectedKey:l}})}));function o1(){let e=(0,T.kj)(),{skills:t,selectedKey:r,setSkills:n,setSelectedKey:a,addSkill:s,removeSkill:i}=o0(),c=rU(e=>e.activeProject),d=null==c?void 0:c.path,[m,f]=(0,o.useState)(oQ),[x,g]=(0,o.useState)(!1),v=lG(e=>e.version);async function b(e){if("workspace"===e&&!d)return;let r=await (0,E.ZC)("New ".concat(e," skill name:"));if(!(null==r?void 0:r.trim()))return;let l=r.trim().toLowerCase().replace(/[^a-z0-9一-鿿]+/g,"-").replace(/^-|-$/g,""),o=t.find(t=>t.id===l&&t.scope!==e);if(o){var i;let t="workspace"===o.scope?'Workspace skill "'.concat(o.name,'" has the same ID.\nIt will override this global skill in that project.\n\nContinue?'):"extension"===o.scope?'Skill "'.concat(o.name,'" from extension ').concat(null!=(i=o.extId)?i:""," has the same ID.\nThe new ").concat(e," skill will override it at runtime.\n\nContinue?"):'Global skill "'.concat(o.name,'" has the same ID.\nWorkspace version will override it at runtime.\n\nContinue?');if(!await (0,E.fN)(t))return}try{let l=(await u.FH.skills.create({name:r.trim(),scope:e,projectId:"workspace"===e?d:void 0})).skill;o?n(t.map(t=>t.id===l.id&&("workspace"===e?"workspace"!==t.scope:"extension"===t.scope)?{...t,overridden:!0}:t).concat(l)):s(l),f(t=>new Set(t).add(e)),a(oZ(l)),lq()}catch(e){console.error("[SkillsSidebar] Create failed:",e)}}async function y(e,t){if(e.stopPropagation(),await (0,E.fN)('Delete skill "'.concat(t.name,'"?')))try{await u.FH.skills.remove(t.id,"workspace"===t.scope?{scope:"workspace",projectId:d}:void 0),i(oZ(t)),lq()}catch(e){console.error("[SkillsSidebar] Delete failed:",e)}}async function w(e,r){e.stopPropagation();try{let e=await u.FH.skills.toggle(r.id,{scope:r.scope,projectId:d});n(t.map(t=>oZ(t)===oZ(r)?{...t,disabled:e.disabled}:t)),lq()}catch(e){console.error("[SkillsSidebar] Toggle failed:",e)}}(0,o.useEffect)(()=>{localStorage.setItem(oX,JSON.stringify([...m]))},[m]),(0,o.useEffect)(()=>{g(!0),u.FH.skills.list(d).then(e=>n(e.skills)).catch(()=>{}).finally(()=>g(!1))},[d,v,n]),(0,o.useEffect)(()=>{if(d)return h(p,lq)},[d]),(0,o.useEffect)(()=>{let e=()=>lq();return window.addEventListener("focus",e),()=>window.removeEventListener("focus",e)},[]);let j=t.filter(e=>"global"===e.scope),k=t.filter(e=>"workspace"===e.scope),N=t.filter(e=>"extension"===e.scope),S=(t,n,s,o)=>{let i=m.has(t),c="extension"===t;return(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex items-center h-8 px-2 hover:bg-[var(--secondary)]/50 transition-colors",children:[(0,l.jsxs)("button",{onClick:()=>{f(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},className:"flex items-center gap-1.5 flex-1 min-w-0",children:[(0,l.jsx)(F.A,{className:(0,E.cn)("h-3 w-3 shrink-0 text-[var(--muted-foreground)] transition-transform",i&&"rotate-90")}),(0,l.jsx)(n,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-[11px] font-medium text-[var(--foreground)] truncate",children:s}),(0,l.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)] ml-auto",children:o.length})]}),!c&&(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),b(t)},title:"New ".concat(t," skill"),className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--secondary)]",children:(0,l.jsx)(lC.A,{className:"h-3 w-3"})})]}),i&&o.map(t=>{var n;let s=oZ(t);return(0,l.jsxs)("div",{onClick:()=>a(s),className:(0,E.cn)("group flex w-full items-center gap-2 pl-7 pr-2 py-1.5 cursor-pointer transition-colors",r===s?"bg-[var(--secondary)]":"hover:bg-[var(--secondary)]/50",(t.overridden||t.disabled)&&"opacity-40"),children:[(0,l.jsx)(o$.A,{className:"h-3 w-3 shrink-0 text-amber-500"}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",title:c?t.description:void 0,children:[(0,l.jsx)("p",{className:"text-[11px] font-medium text-[var(--foreground)] truncate",children:t.name}),(t.disabled||t.overridden||t.description||c)&&(0,l.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate",children:t.disabled?"disabled":t.overridden?"overridden":c?e("skill.fromExtension",{ext:null!=(n=t.extId)?n:""}):t.description})]}),(0,l.jsx)("button",{onClick:e=>w(e,t),className:(0,E.cn)("shrink-0 rounded p-0.5 text-[var(--muted-foreground)] transition-opacity hover:text-[var(--foreground)]",t.disabled?"opacity-100":"opacity-0 group-hover:opacity-100"),title:t.disabled?"Enable skill":"Disable skill",children:t.disabled?(0,l.jsx)(oY.A,{className:"h-4.5 w-4.5"}):(0,l.jsx)(oJ.A,{className:"h-4.5 w-4.5 text-blue-500"})}),!c&&(0,l.jsx)("button",{onClick:e=>y(e,t),className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 transition-opacity group-hover:opacity-100 hover:text-red-400",title:"Delete skill",children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]},s)})]},t)};return(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 shrink-0 items-center border-b border-[var(--border)] px-3",children:[(0,l.jsx)(o$.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"ml-2 text-sm font-medium text-[var(--foreground)]",children:e("skill.skills")}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:()=>lq(),disabled:x,title:"Refresh skills",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",x&&"animate-spin")})})]}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto py-1",children:[S("global",U.A,e("common.global"),j),d&&S("workspace",L.A,e("common.workspace"),k),N.length>0&&S("extension",r7.A,e("skill.section.extension"),N),0===t.length&&(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center gap-2 p-6 text-center",children:[(0,l.jsx)(o$.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:e("skill.noSkills")})]})]})]})}var o3=r(67889),o2=r(79773),o5=r(73743),o4=r(4196);function o8(e){let{value:t,disabled:r,presets:n,placeholder:a,onCommit:s,minWidth:i=240,className:c}=e,[d,u]=(0,o.useState)(t),[m,p]=(0,o.useState)(!1),[h,f]=(0,o.useState)(""),[x,g]=(0,o.useState)(0),v=(0,o.useRef)(null),b=(0,o.useRef)(null);(0,o.useEffect)(()=>{u(t)},[t]),(0,o.useEffect)(()=>{m&&(f(""),g(0),setTimeout(()=>{var e;return null==(e=b.current)?void 0:e.focus()},0))},[m]);let y=(0,o.useMemo)(()=>{if(!h)return n;let e=h.toLowerCase();return n.filter(t=>t.id.toLowerCase().includes(e)||t.label.toLowerCase().includes(e))},[h,n]);function w(e){u(e),p(!1),e!==t&&s(e)}function j(){d!==t&&s(d)}return(0,o.useEffect)(()=>{x>=y.length&&g(0)},[y.length,x]),(0,o.useEffect)(()=>{if(m)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){v.current&&!v.current.contains(e.target)&&p(!1)}},[m]),(0,l.jsxs)("div",{ref:v,className:"relative ".concat(null!=c?c:""),style:{minWidth:i},children:[(0,l.jsx)("input",{value:d,disabled:r,onFocus:()=>p(!0),onChange:e=>u(e.target.value),onBlur:()=>{setTimeout(()=>{m||j()},120)},onKeyDown:e=>{"ArrowDown"!==e.key||m?"Enter"===e.key?(e.preventDefault(),j()):"Escape"===e.key&&p(!1):(e.preventDefault(),p(!0))},placeholder:a,className:"h-7 w-full rounded border border-[var(--border)] bg-[var(--card)] px-2 pr-6 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]"}),(0,l.jsx)("span",{className:"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-[10px] opacity-50",children:"▾"}),m&&(0,l.jsxs)("div",{className:"absolute left-0 right-0 top-[calc(100%+2px)] z-20 max-h-72 overflow-hidden rounded border border-[var(--border)] bg-[var(--card)] shadow-lg",children:[(0,l.jsx)("div",{className:"border-b border-[var(--border)] p-1",children:(0,l.jsx)("input",{ref:b,value:h,onChange:e=>{f(e.target.value),g(0)},onKeyDown:e=>{if("ArrowDown"===e.key)e.preventDefault(),g(e=>Math.min(y.length-1,e+1));else if("ArrowUp"===e.key)e.preventDefault(),g(e=>Math.max(0,e-1));else if("Enter"===e.key){e.preventDefault();let t=y[x];t&&w(t.id)}else"Escape"===e.key&&p(!1)},placeholder:"Filter…",className:"h-6 w-full rounded border border-[var(--border)] bg-[var(--background)] px-2 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]"})}),(0,l.jsx)("div",{className:"max-h-56 overflow-auto",children:0===y.length?(0,l.jsx)("div",{className:"px-2 py-2 text-xs text-[var(--muted-foreground)]",children:"No matches"}):y.map((e,t)=>(0,l.jsxs)("div",{onMouseDown:t=>{t.preventDefault(),w(e.id)},onMouseEnter:()=>g(t),className:"cursor-pointer px-2 py-1 text-xs ".concat(t===x?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)("div",{className:"font-medium",children:e.label}),e.label!==e.id&&(0,l.jsx)("div",{className:"text-[10px] ".concat(t===x?"opacity-80":"opacity-60"),children:e.id})]},e.id))})]})]})}let o6=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0):[];function o9(e,t){let r="string"==typeof(null==e?void 0:e.defaultEndpoint)?e.defaultEndpoint:"",n=o6(null==t?void 0:t.endpoints);return 0===n.length?{presets:o6(null==e?void 0:e.endpointPresets),defaultEndpoint:r,modelScoped:!1}:{presets:n,defaultEndpoint:n.includes(r)?r:n[0],modelScoped:!0}}let o7={promptCaching:{ttlPresets:[{value:"5m",label:"5min"},{value:"1h",label:"1hour"}]},thinking:{effortPresets:[{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"},{value:"max",label:"Max"}]},verbosity:{presets:[{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}]}};function ie(e,t){var r,n,a,s,l,o,i,c,d,u;let m=null==e?void 0:e.capabilities,p={},h=null==m?void 0:m.thinking,f=t.thinking;if(h||f){let e=null!=(r=null==h?void 0:h.mode)?r:"adaptive";if(f?!f.enabled:!(null==h?void 0:h.defaultEnabled))p.thinking=void 0;else if("manual"===e){let e=null==f?void 0:f.budget_tokens;p.thinking={enabled:!0,budget_tokens:null!=(n=null!=e?e:null==h?void 0:h.defaultBudgetTokens)?n:8192}}else{let e=null==h?void 0:h.effortPresets,t=null!=(s=null==f?void 0:f.effort)?s:null==f?void 0:f.budget,r=t&&(null==e?void 0:e.some(e=>e.value===t)),n=null!=(o=null!=(l=null==h?void 0:h.default)?l:null==e||null==(a=e[0])?void 0:a.value)?o:"medium";p.thinking={enabled:!0,effort:r?t:n}}}let x=null==m?void 0:m.promptCaching,g=null==x?void 0:x.ttlPresets;if(null==g?void 0:g.length){let e=t.promptCaching,r="string"==typeof e?e:void 0;r&&g.some(e=>e.value===r)?p.promptCaching=r:r?p.promptCaching=null!=(i=null==x?void 0:x.default)?i:g[0].value:p.promptCaching=null==(c=null==x?void 0:x.defaultEnabled)||c?null!=(d=null==x?void 0:x.default)?d:g[0].value:void 0}else p.promptCaching=void 0;let v=null==m?void 0:m.verbosity,b=null==v?void 0:v.presets,y="string"==typeof t.verbosity?t.verbosity:void 0;return(null==b?void 0:b.length)?y&&b.some(e=>e.value===y)?p.verbosity=y:p.verbosity=null!=(u=null==v?void 0:v.default)?u:void 0:p.verbosity=void 0,p}function it(e){var t;return null!=(t=null==e?void 0:e.maxContextWindow)?t:null==e?void 0:e.contextWindow}function ir(e,t,r){if(!t||0===Object.keys(r).length)return;let n={...r},a="number"==typeof r.maxTokens?r.maxTokens:void 0,s=it(t);void 0!==t.contextWindow&&(void 0===a||a===(null==e?void 0:e.contextWindow)||void 0!==s&&a>s)&&(n.maxTokens=Math.min(t.contextWindow,null!=s?s:t.contextWindow));let l="number"==typeof r.compressAt?r.compressAt:void 0;return void 0!==t.compressAt&&(void 0===l||l===(null==e?void 0:e.compressAt))&&(n.compressAt=t.compressAt),n.maxTokens===r.maxTokens&&n.compressAt===r.compressAt?void 0:n}function ia(e){let{value:t,max:r,onCommit:n}=e,a=(0,T.kj)(),[s,i]=(0,o.useState)(String(t)),[c,d]=(0,o.useState)(t);t!==c&&(d(t),i(String(t)));let u=void 0!==r&&Number(s)>r;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("input",{type:"number",value:s,onChange:e=>{i(e.target.value);let t=Number(e.target.value);Number.isInteger(t)&&t>0&&(void 0===r||t<=r)&&n(t)},className:(0,E.cn)(is,"mt-1",u&&"border-red-500 focus:border-red-500")}),void 0!==r&&(0,l.jsx)("p",{className:(0,E.cn)(io,"mt-0.5",u&&"text-red-500"),children:a(u?"agent.contextOverMax":"agent.contextMax",{max:r.toLocaleString()})})]})}let is="h-7 w-full rounded border border-[var(--border)] bg-[var(--card)] px-2 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]",il="text-[11px] font-medium text-[var(--foreground)]",io="text-[10px] text-[var(--muted-foreground)]";function ii(e){let{label:t,enabled:r,value:n,defaultValue:a,presets:s,onChange:o}=e;return(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,l.jsx)("input",{type:"checkbox",checked:r,onChange:e=>o(e.target.checked?n||a:void 0),className:"rounded border-[var(--border)] bg-[var(--card)] text-[var(--primary)] focus:ring-[var(--primary)] h-3.5 w-3.5 cursor-pointer"}),(0,l.jsx)("span",{className:il,children:t})]}),r&&(0,l.jsx)(o8,{value:n||a,presets:s.map(e=>({id:e.value,label:e.label})),onCommit:e=>o(e||void 0),minWidth:110,className:"h-7"})]})}function ic(e){var t,r,n,a,s,i,c,d,u,m,p,h;let{data:f,availableSkills:x,availableTools:g,allAgents:v,selfId:b,modelsRegistry:y,onUpdate:w,onUpdateNested:j,onToggleArrayItem:k}=e,N=(0,T.kj)(),S=null!=(n=f.model)?n:{},C=null!=(a=f.context)?a:{},A=Array.isArray(f.skills)?f.skills:[],I=Array.isArray(f.tools)?f.tools:[],_=Array.isArray(f.team)?f.team:void 0,P=null!=(s=null==y||null==(t=y.providers)?void 0:t.flatMap(e=>e.models))?s:[],M=String(null!=(i=S.id)?i:""),F=P.find(e=>e.id===M),[D,L]=(0,o.useState)(null);return(0,l.jsxs)("div",{className:"h-full overflow-y-auto p-5 space-y-5",children:[(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:N("agent.basic")}),(0,l.jsxs)("div",{className:"grid grid-cols-[1fr_1fr_80px] gap-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.name")}),(0,l.jsx)("input",{value:String(null!=(c=f.name)?c:""),onChange:e=>w("name",e.target.value),className:(0,E.cn)(is,"mt-1")})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.description")}),(0,l.jsx)("input",{value:String(null!=(d=f.description)?d:""),onChange:e=>w("description",e.target.value),className:(0,E.cn)(is,"mt-1")})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.priority")}),(0,l.jsx)("input",{type:"number",value:null!=f.priority?String(f.priority):"",onChange:e=>w("priority",e.target.value?Number(e.target.value):void 0),className:(0,E.cn)(is,"mt-1"),placeholder:"0"})]})]})]}),(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:N("agent.model")}),(0,l.jsxs)("div",{className:"grid grid-cols-4 gap-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.provider")}),y&&y.providers.length>0?(0,l.jsx)("select",{value:String(null!=(m=S.provider)?m:null!=(u=null==(r=y.providers[0])?void 0:r.id)?u:""),onChange:e=>{var t,r,n,a;let s=y.providers.find(t=>t.id===e.target.value),l=String(null!=(t=S.id)?t:""),o=null==s?void 0:s.models.some(e=>e.id===l),i=null!=(n=null!=(r=null==s?void 0:s.models.find(e=>e.id===s.defaultModelId))?r:o?s.models.find(e=>e.id===l):void 0)?n:null==s?void 0:s.models[0];L(null),w("model",{...S,provider:e.target.value,id:null!=(a=null==i?void 0:i.id)?a:"",endpoint:o9(s,i).defaultEndpoint,...ie(i,S)});let c=ir(F,i,C);c&&w("context",c)},className:(0,E.cn)("h-7 w-full rounded border border-[var(--border)] bg-[var(--card)] px-2 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)] appearance-none cursor-pointer","mt-1"),children:y.providers.map(e=>{var t;return(0,l.jsx)("option",{value:e.id,title:e.description,children:null!=(t=e.displayName)?t:e.id},e.id)})}):(0,l.jsx)("input",{value:String(null!=(p=S.provider)?p:""),onChange:e=>j("model","provider",e.target.value),className:(0,E.cn)(is,"mt-1")})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.modelId")}),(()=>{var e,t,r,n;let a=String(null!=(r=S.provider)?r:null!=(t=null==y||null==(e=y.providers[0])?void 0:e.id)?t:""),s=null==y?void 0:y.providers.find(e=>e.id===a),o=null!=(n=null==s?void 0:s.models)?n:[];return(0,l.jsx)(o8,{value:M,presets:o.map(e=>{var t;return{id:e.id,label:null!=(t=e.displayName)?t:e.id}}),placeholder:"model id",onCommit:e=>(function(e){var t,r,n;let a=o.find(t=>t.id===e),l=o9(s,a),i=String(null!=(t=S.endpoint)?t:"")||(null!=(r=null==s?void 0:s.defaultEndpoint)?r:""),c=l.modelScoped&&!l.presets.includes(i)?l.defaultEndpoint:void 0;L(c?N("agent.endpointSwitched",{endpoint:c,model:null!=(n=null==a?void 0:a.displayName)?n:e}):null),w("model",{...S,id:e,...c?{endpoint:c}:{},...ie(a,S)});let d=ir(F,a,C);d&&w("context",d)})(e),className:"mt-1"})})()]}),(()=>{var e,t,r,n,a;let s=String(null!=(r=S.provider)?r:null!=(t=null==y||null==(e=y.providers[0])?void 0:e.id)?t:""),o=null==y?void 0:y.providers.find(e=>e.id===s),i=null==o?void 0:o.models.find(e=>e.id===M),{presets:c,defaultEndpoint:d,modelScoped:u}=o9(o,i),m=String(null!=(n=S.endpoint)?n:""),p=u&&""!==m&&!c.includes(m);return(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.endpoint")}),(0,l.jsx)(o8,{value:m,presets:c.map(e=>({id:e,label:e})),placeholder:d||"https://...",onCommit:e=>{L(null),j("model","endpoint",e)},className:"mt-1"}),d&&!S.endpoint&&(0,l.jsxs)("p",{className:(0,E.cn)(io,"mt-0.5"),children:["Default: ",d]}),D&&(0,l.jsx)("p",{className:(0,E.cn)(io,"mt-0.5"),children:D}),p&&(0,l.jsx)("p",{className:(0,E.cn)(io,"mt-0.5 text-amber-500"),children:N("agent.endpointOffList",{model:null!=(a=null==i?void 0:i.displayName)?a:M})})]})})(),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.maxTokens")}),(0,l.jsx)("input",{type:"number",value:null!=S.maxTokens?String(S.maxTokens):"",onChange:e=>j("model","maxTokens",e.target.value?Number(e.target.value):void 0),className:(0,E.cn)(is,"mt-1"),placeholder:(null==F?void 0:F.maxOutputTokens)?String(F.maxOutputTokens):"auto"}),(0,l.jsx)("p",{className:(0,E.cn)(io,"mt-0.5"),children:(null==F?void 0:F.maxOutputTokens)?N("agent.maxTokensDefault",{max:F.maxOutputTokens.toLocaleString()}):N("agent.maxTokensAuto")})]})]}),(()=>{var e,t,r,n,a,s,o,i;let c=null!=(s=null==F?void 0:F.capabilities)?s:M?o7:null;if(!c)return null;let d=null==(e=c.promptCaching)?void 0:e.ttlPresets,u=null==(t=c.thinking)?void 0:t.effortPresets;return(0,l.jsxs)("div",{className:"flex flex-wrap gap-6 pt-1",children:[d&&(0,l.jsx)(ii,{label:"Prompt Caching",enabled:!!S.promptCaching,value:"string"==typeof S.promptCaching?S.promptCaching:"",defaultValue:null!=(o=null==(r=c.promptCaching)?void 0:r.default)?o:d[0].value,presets:d,onChange:e=>j("model","promptCaching",e)}),(null==(a=c.verbosity)||null==(n=a.presets)?void 0:n.length)&&(0,l.jsx)(ii,{label:"Verbosity",enabled:"string"==typeof S.verbosity,value:"string"==typeof S.verbosity?S.verbosity:"",defaultValue:null!=(i=c.verbosity.default)?i:c.verbosity.presets[0].value,presets:c.verbosity.presets,onChange:e=>j("model","verbosity",e)}),(()=>{let e=!F&&""!==M,t=S.image,r=S.video,n=S.audio;if(e){let e=e=>{let{field:t,label:r,value:n}=e;return(0,l.jsx)("button",{type:"button",onClick:()=>j("model",t,!n||void 0),className:(0,E.cn)("rounded px-2 py-0.5 text-[10px] font-medium transition-colors cursor-pointer",n?"bg-[var(--primary)] text-[var(--primary-foreground)]":"bg-[var(--secondary)] text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:r})};return(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[(0,l.jsx)(e,{field:"image",label:"Image",value:t}),(0,l.jsx)(e,{field:"video",label:"Video",value:r}),(0,l.jsx)(e,{field:"audio",label:"Audio",value:n})]})}return void 0===c.image&&void 0===c.video&&void 0===c.audio?null:(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[void 0!==c.image&&(0,l.jsx)("span",{className:(0,E.cn)("rounded px-2 py-0.5 text-[10px] font-medium",c.image?"bg-emerald-500/15 text-emerald-600":"bg-[var(--secondary)] text-[var(--muted-foreground)]"),children:"Image"}),void 0!==c.video&&(0,l.jsx)("span",{className:(0,E.cn)("rounded px-2 py-0.5 text-[10px] font-medium",c.video?"bg-emerald-500/15 text-emerald-600":"bg-[var(--secondary)] text-[var(--muted-foreground)]"),children:"Video"}),void 0!==c.audio&&(0,l.jsx)("span",{className:(0,E.cn)("rounded px-2 py-0.5 text-[10px] font-medium",c.audio?"bg-emerald-500/15 text-emerald-600":"bg-[var(--secondary)] text-[var(--muted-foreground)]"),children:"Audio"})]})})(),(u||c.thinking)&&(()=>{var e,t,r,n,a,s,o,i,d;let m=S.thinking,p=!!(null==m?void 0:m.enabled),h=!F&&""!==M,f=null!=(n=null==(e=c.thinking)?void 0:e.mode)?n:"adaptive",x=h?(null==m?void 0:m.budget_tokens)!=null?"manual":"adaptive":f,g=null!=(s=null!=(a=null==(t=c.thinking)?void 0:t.default)?a:null==u||null==(r=u[0])?void 0:r.value)?s:"medium",v="manual"===x?{enabled:!0,budget_tokens:8192}:{enabled:!0,effort:g};return(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,l.jsx)("input",{type:"checkbox",checked:p,onChange:e=>{j("model","thinking",e.target.checked?v:void 0)},className:"rounded border-[var(--border)] bg-[var(--card)] text-[var(--primary)] focus:ring-[var(--primary)] h-3.5 w-3.5 cursor-pointer"}),(0,l.jsx)("span",{className:il,children:"Thinking"})]}),p&&"adaptive"===x&&u&&(0,l.jsx)(o8,{value:null!=(i=null!=(o=null==m?void 0:m.effort)?o:null==m?void 0:m.budget)?i:g,presets:u.map(e=>({id:e.value,label:e.label})),onCommit:e=>j("model","thinking",{enabled:!0,effort:e}),minWidth:110,className:"h-7"}),p&&"manual"===x&&(0,l.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,l.jsx)("span",{className:io,children:"budget"}),(0,l.jsx)("input",{type:"number",min:1024,step:1024,value:null!=(d=null==m?void 0:m.budget_tokens)?d:8192,onChange:e=>{let t=parseInt(e.target.value,10);Number.isFinite(t)&&t>0&&j("model","thinking",{enabled:!0,budget_tokens:t})},className:"h-6 w-24 rounded border border-[var(--border)] bg-[var(--card)] px-2 text-[10px] text-[var(--foreground)] outline-none focus:border-[var(--primary)]"}),(0,l.jsx)("span",{className:io,children:"tokens"})]}),p&&h&&(0,l.jsx)("button",{type:"button",onClick:()=>{"adaptive"===x?j("model","thinking",{enabled:!0,budget_tokens:8192}):j("model","thinking",{enabled:!0,effort:g})},className:"text-[10px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] underline cursor-pointer",children:"adaptive"===x?"use budget":"use effort"})]})})()]})})(),Object.keys(C).length>0&&(0,l.jsx)("div",{className:"grid grid-cols-2 gap-4 pt-1",children:Object.entries(C).map(e=>{let[t,r]=e;return(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:"context.".concat(t)}),"maxTokens"===t&&"number"==typeof r?(0,l.jsx)(ia,{value:r,max:it(F),onCommit:e=>j("context",t,e)}):(0,l.jsx)("input",{type:"number"==typeof r?"number":"text",step:"number"==typeof r&&r<1?"0.1":void 0,value:String(null!=r?r:""),onChange:e=>j("context",t,"number"==typeof r?Number(e.target.value):e.target.value),className:(0,E.cn)(is,"mt-1")})]},t)})})]}),(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:N("agent.systemPrompt")}),(0,l.jsx)("span",{className:"text-[9px] text-[var(--muted-foreground)] opacity-60",children:N("agent.systemPromptHint")})]}),(0,l.jsx)("textarea",{value:String(null!=(h=f.system_prompt)?h:""),onChange:e=>w("system_prompt",e.target.value),rows:8,className:"w-full rounded border border-[var(--border)] bg-[var(--card)] px-3 py-2 text-xs leading-relaxed text-[var(--foreground)] outline-none focus:border-[var(--primary)] resize-y font-mono",placeholder:N("agent.systemPromptPlaceholder")})]}),(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:N("agent.team")}),(0,l.jsx)("span",{className:"text-[9px] text-[var(--muted-foreground)] opacity-60",children:N("agent.teamHint")})]}),(0,l.jsx)("div",{className:"flex flex-wrap gap-2",children:v.map(e=>{let t=void 0!==_&&_.includes(e.id);return(0,l.jsxs)("button",{type:"button",title:e.id,onClick:()=>{let t=null!=_?_:[],r=t.includes(e.id)?t.filter(t=>t!==e.id):[...t,e.id];w("team",0===r.length?void 0:r)},className:(0,E.cn)("rounded-full px-3 py-1 text-xs font-medium transition-colors cursor-pointer",t?"bg-[var(--primary)] text-[var(--primary-foreground)]":"bg-[var(--secondary)] text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/80 hover:text-[var(--foreground)]"),children:[e.name,e.id===b?" (you)":""]},e.id)})})]}),(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Tools"}),0===g.length?(0,l.jsx)("p",{className:io,children:N("agent.loadingTools")}):(()=>{var e;let t=new Set(g.map(e=>e.name)),r=new Set(["query_agent","start_session","session_list","get_session_output","query_session","interrupt_session","stop_session","archive_session"]),n=I.filter(e=>!t.has(e)&&!r.has(e)),a=S.image,s=null!=a?a:null==F||null==(e=F.capabilities)?void 0:e.image;return(0,l.jsxs)("div",{className:"flex flex-wrap gap-2",children:[g.map(e=>{let t=I.includes(e.name),r="view_image"===e.name&&""!==M&&!0!==s,n=r?"".concat(e.description,"\n\nNote: the selected model does not declare capabilities.image: true — view_image will be dropped from this agent's tool list at runtime."):e.description;return(0,l.jsxs)("button",{type:"button",title:n,onClick:()=>k("tools",e.name),className:(0,E.cn)("rounded-full px-3 py-1 text-xs font-medium transition-colors cursor-pointer",t?"bg-[var(--primary)] text-[var(--primary-foreground)]":"bg-[var(--secondary)] text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/80 hover:text-[var(--foreground)]",r&&"opacity-50"),children:[e.name,r&&(0,l.jsx)("span",{className:"ml-1",children:"⊘"})]},e.name)}),n.map(e=>(0,l.jsxs)("button",{type:"button",title:'Tool "'.concat(e,'" is not available in this server. Click to remove from this agent.'),onClick:()=>k("tools",e),className:"rounded-full px-3 py-1 text-xs font-medium transition-colors cursor-pointer border border-[var(--destructive)] bg-[var(--destructive)]/10 text-[var(--destructive)] hover:bg-[var(--destructive)]/20",children:["⚠ ",e]},"missing-".concat(e)))]})})()]}),(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Skills"}),(()=>{let e=x.filter(e=>!e.disabled&&!e.overridden),t=new Set(e.map(e=>e.id)),r=A.filter(e=>!t.has(e));return 0===e.length&&0===r.length?(0,l.jsx)("p",{className:io,children:N("agent.noSkills")}):(0,l.jsxs)("div",{className:"flex flex-wrap gap-2",children:[e.map(e=>{let t=A.includes(e.id);return(0,l.jsx)("button",{type:"button",title:[e.description,"(".concat(e.scope,")")].filter(Boolean).join(" "),onClick:()=>k("skills",e.id),className:(0,E.cn)("rounded-full px-3 py-1 text-xs font-medium transition-colors cursor-pointer",t?"bg-[var(--primary)] text-[var(--primary-foreground)]":"bg-[var(--secondary)] text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/80 hover:text-[var(--foreground)]"),children:e.name},e.id)}),r.map(e=>(0,l.jsxs)("button",{type:"button",title:'Skill "'.concat(e,'" is not installed. Add it to ~/.halo/global/skills/ or ',"<workspace>","/.halo/skills/, or click to remove from this agent."),onClick:()=>k("skills",e),className:"rounded-full px-3 py-1 text-xs font-medium transition-colors cursor-pointer border border-[var(--destructive)] bg-[var(--destructive)]/10 text-[var(--destructive)] hover:bg-[var(--destructive)]/20",children:["⚠ ",e]},"missing-".concat(e)))]})})()]})]})}function id(e){return"".concat(e.id,":").concat(e.scope)}let iu="halo_agents_selectedKey",im="halo_agents_expandedScopes";function ip(){try{let e=localStorage.getItem(im);if(e)return new Set(JSON.parse(e))}catch(e){}return new Set(["global","workspace"])}function ih(){var e,t;let r=(0,T.kj)(),n=rU(e=>e.activeProject),a=null!=(e=null==n?void 0:n.path)?e:void 0,[s,i]=(0,o.useState)([]),[d,m]=(0,o.useState)(()=>localStorage.getItem(iu)),[f,x]=(0,o.useState)(ip),{skills:g,setSkills:v}=o0(),[b,y]=(0,o.useState)(null),[w,j]=(0,o.useState)(!1);(0,o.useEffect)(()=>{d?localStorage.setItem(iu,d):localStorage.removeItem(iu)},[d]),(0,o.useEffect)(()=>{localStorage.setItem(im,JSON.stringify([...f]))},[f]);let k=sq(e=>e.version);(0,o.useEffect)(()=>{u.FH.agentConfigs.models().then(y).catch(()=>{})},[k]);let N=(0,o.useCallback)(async()=>{j(!0);try{let e=(await u.FH.agentConfigs.list(a)).agents.filter(e=>!(e.internal&&"goal"===e.id));i(e),!e.some(e=>id(e)===d)&&e.length>0&&m(id(e[0]))}catch(e){console.error("[AgentManagement] Load failed:",e)}finally{j(!1)}},[a,d]),S=lB(e=>e.version);(0,o.useEffect)(()=>{N()},[N,S]),(0,o.useEffect)(()=>{if(!a)return;let e=p.on("file:changed",e=>{("add"===e.action||"unlink"===e.action||"addDir"===e.action||"unlinkDir"===e.action)&&e.path.startsWith(".halo/agents/")&&lW()}),t=h(p,lW);return()=>{e(),t()}},[a]),(0,o.useEffect)(()=>{let e=()=>lW();return window.addEventListener("focus",e),()=>window.removeEventListener("focus",e)},[]);let C=lG(e=>e.version),A=(0,o.useRef)(C);(0,o.useEffect)(()=>{g.length>0&&A.current===C||(A.current=C,u.FH.skills.list(null==n?void 0:n.path).then(e=>{v(e.skills)}).catch(()=>{}))},[null==n?void 0:n.path,g.length,v,C]);let I=null!=(t=s.find(e=>id(e)===d))?t:null;async function _(e){var t;if("workspace"===e&&!a)return;let r=await (0,E.ZC)("Agent name:");if(!(null==r?void 0:r.trim()))return;let n=null!=(t=await (0,E.ZC)("Agent description (optional):"))?t:"",l=r.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fff]+/g,"-").replace(/^-|-$/g,""),o="workspace"===e?"global":"workspace",c=s.find(e=>e.id===l&&e.scope===o);if(c){let t="workspace"===e?'Global agent "'.concat(c.name,'" has the same ID.\nWorkspace version will override it at runtime.\n\nContinue?'):'Workspace agent "'.concat(c.name,'" has the same ID.\nIt will override this global agent in that project.\n\nContinue?');if(!await (0,E.fN)(t))return}try{let t=(await u.FH.agentConfigs.create({name:r.trim(),description:n.trim(),scope:e,projectId:"workspace"===e?a:void 0})).agent;i(r=>[..."workspace"===e?r.map(e=>e.id===t.id&&"global"===e.scope?{...e,overridden:!0}:e):r,t]),x(t=>new Set(t).add(e)),m(id(t)),lW()}catch(e){console.error("[AgentManagement] Create failed:",e)}}async function P(e){if(await (0,E.fN)('Delete agent "'.concat(e.name,'"?')))try{await u.FH.agentConfigs.remove(e.id,{scope:e.scope,projectId:a}),i(t=>{let r=t.filter(t=>id(t)!==id(e));return"workspace"===e.scope?r.map(t=>t.id===e.id&&"global"===t.scope?{...t,overridden:!1}:t):r}),d===id(e)&&m(null),lW()}catch(e){console.error("[AgentManagement] Delete failed:",e)}}async function M(e){try{let{disabled:t}=await u.FH.agentConfigs.toggle(e.id,{scope:e.scope,projectId:a});i(r=>r.map(r=>id(r)===id(e)?{...r,disabled:t}:r)),lW()}catch(e){console.error("[AgentManagement] Toggle failed:",e)}}let D=s.filter(e=>e.internal),R=s.filter(e=>"global"===e.scope&&!e.internal),H=s.filter(e=>"workspace"===e.scope&&!e.internal),z=(()=>{let e=new Map;for(let t of[...R,...H])t.overridden||t.disabled||e.set(t.id,{id:t.id,name:t.name});return[...e.values()]})(),O=function(e,t,r,n){let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{allowCreate:!0},o=f.has(e);return(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex items-center h-8 px-2 hover:bg-[var(--secondary)]/50 transition-colors",children:[(0,l.jsxs)("button",{onClick:()=>{x(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},className:"flex items-center gap-1.5 flex-1 min-w-0",children:[(0,l.jsx)(F.A,{className:(0,E.cn)("h-3 w-3 shrink-0 text-[var(--muted-foreground)] transition-transform",o&&"rotate-90")}),(0,l.jsx)(t,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-[11px] font-medium text-[var(--foreground)] truncate",children:r}),(0,l.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)] ml-auto",children:n.length})]}),s.allowCreate&&"internal"!==e&&(0,l.jsx)("button",{onClick:t=>{t.stopPropagation(),_(e)},title:"New ".concat(e," agent"),className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--secondary)]",children:(0,l.jsx)(lC.A,{className:"h-3 w-3"})})]}),o&&n.map(t=>{let r=id(t);return(0,l.jsxs)("div",{className:(0,E.cn)("group flex w-full items-center gap-2 pl-7 pr-2 py-1.5 cursor-pointer transition-colors",d===r?"bg-[var(--secondary)]":"hover:bg-[var(--secondary)]/50",(t.overridden||t.disabled)&&"opacity-40"),onClick:()=>m(r),children:[(0,l.jsx)(aL.A,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("p",{className:"text-[11px] font-medium text-[var(--foreground)] truncate",children:t.name}),(t.overridden||t.disabled||t.description)&&(0,l.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate",children:t.overridden?"overridden":t.disabled?"disabled":t.description})]}),"internal"!==e&&a&&(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),M(t)},title:t.disabled?"Enable (show in roster)":"Disable (hide from roster)",className:(0,E.cn)("shrink-0 rounded p-0.5 text-[var(--muted-foreground)] transition-opacity hover:text-[var(--foreground)]",t.disabled?"opacity-100":"opacity-0 group-hover:opacity-100"),children:t.disabled?(0,l.jsx)(oY.A,{className:"h-4.5 w-4.5"}):(0,l.jsx)(oJ.A,{className:"h-4.5 w-4.5 text-blue-500"})}),"global"===t.scope?(0,l.jsx)("span",{title:"Global agent (cannot delete)",children:(0,l.jsx)(o3.A,{className:"h-3 w-3 shrink-0 text-amber-500"})}):(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),P(t)},className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 transition-opacity group-hover:opacity-100 hover:text-red-400",children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]},r)})]},e)};return(0,l.jsxs)(c.YZ,{direction:"horizontal",autoSaveId:"halo-agent-mgmt",className:"h-full",children:[(0,l.jsx)(c.Zk,{defaultSize:22,minSize:12,maxSize:40,children:(0,l.jsxs)("div",{className:"h-full flex flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(aL.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:r("agent.agents")}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:()=>N(),disabled:w,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",title:"Refresh agents",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",w&&"animate-spin")})})]}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto py-1",children:[O("global",U.A,r("common.global"),R),a&&O("workspace",L.A,r("common.workspace"),H),D.length>0&&O("internal",o2.A,r("common.internal"),D,{allowCreate:!1})]})]})}),(0,l.jsx)(c.TW,{className:"w-px bg-[var(--border)] hover:w-1 hover:bg-[var(--primary)] transition-colors"}),(0,l.jsx)(c.Zk,{defaultSize:78,minSize:40,children:I?(0,l.jsx)(ix,{agent:I,allAgents:z,modelsRegistry:b,onSaved:e=>{i(t=>t.map(t=>id(t)===id(e)?e:t))}},id(I)):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 text-center",children:[(0,l.jsx)(aL.A,{className:"h-10 w-10 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:r("agent.selectToEdit")})]})})]})}function ix(e){let{agent:t,allAgents:n,modelsRegistry:a,onSaved:s}=e,i=(0,T.kj)(),{skills:c}=o0(),m=rU(e=>e.activeProject),[p,h]=(0,o.useState)({}),f="halo_agent_view:".concat(id(t)),[x,g]=(0,o.useState)(()=>{var e;return null!=(e=localStorage.getItem(f))?e:"form"}),v=(0,o.useCallback)(e=>{localStorage.setItem(f,e),g(e)},[f]),[b,y]=(0,o.useState)(!0),[w,j]=(0,o.useState)(null),[k,N]=(0,o.useState)(!1),[S,C]=(0,o.useState)([]),[A,I]=(0,o.useState)("");(0,o.useEffect)(()=>{u.FH.agentConfigs.tools().then(e=>C(e.tools)).catch(()=>{})},[]);let E=(0,o.useRef)(s);(0,o.useEffect)(()=>{E.current=s});let _=(0,o.useRef)(null),P=(0,o.useCallback)(async()=>{y(!0),j(null);let e="workspace"===t.scope?null==m?void 0:m.path:void 0;try{let n=await u.FH.agentConfigs.getYaml(t.id,{scope:t.scope,projectId:e}),{parse:a,stringify:s}=await r.e(5510).then(r.bind(r,5510)),l=null,o=!1;try{l=a(n.yaml)}catch(e){o=!0}if(o||null!==l&&("object"!=typeof l||Array.isArray(l)))j("agent.yamlInvalid");else{let e=null!=l?l:{};h(e),_.current=s(e,{lineWidth:120})}}catch(e){console.error("[AgentEditor] Load YAML failed:",e),j("agent.loadFailed"),h({}),_.current=null}try{var n,a;let r=await u.FH.agentConfigs.getMdAll(t.id,{scope:t.scope,projectId:e});I(null!=(a=null==(n=r.files["AGENT.md"])?void 0:n.content)?a:"")}catch(e){I("")}y(!1)},[t.id,t.scope,null==m?void 0:m.path]);(0,o.useEffect)(()=>{P()},[P]);let M=(0,o.useRef)(x);return(0,o.useEffect)(()=>{"edit"===M.current&&"form"===x&&P(),M.current=x},[x,P]),(0,o.useEffect)(()=>{if(b||w)return;let e=setTimeout(async()=>{try{let{stringify:e}=await r.e(5510).then(r.bind(r,5510)),n=e(p,{lineWidth:120});if(_.current===n)return;N(!0);let a="workspace"===t.scope?null==m?void 0:m.path:void 0,s=await u.FH.agentConfigs.saveYaml(t.id,n,{scope:t.scope,projectId:a});_.current=n,E.current(s.agent)}catch(e){console.error("[AgentEditor] Auto-save failed:",e)}finally{N(!1)}},500);return()=>clearTimeout(e)},[p,t.id,t.scope,null==m?void 0:m.path,b,w]),(0,o.useEffect)(()=>{_.current=null},[t.id,t.scope]),(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"flex h-10 items-center justify-between border-b border-[var(--border)] bg-[var(--card)] px-3",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:["edit"===x&&(0,l.jsxs)("button",{onClick:()=>v("form"),className:"flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",title:"Back to form",children:[(0,l.jsx)(o5.A,{className:"h-3 w-3"}),i("agent.back")]}),(0,l.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)]",children:t.name}),(0,l.jsx)("span",{className:"rounded bg-[var(--secondary)] px-1.5 py-0.5 text-[9px] text-[var(--muted-foreground)]",children:t.scope}),"form"===x&&k&&(0,l.jsx)("span",{className:"text-[9px] text-[var(--muted-foreground)]",children:i("agent.saving")})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[!t.internal&&(0,l.jsxs)("button",{onClick:()=>{al(t.id),window.dispatchEvent(new CustomEvent("halo:navigate",{detail:{tab:"explorer"}}))},className:"flex items-center gap-1.5 rounded bg-[var(--secondary)] px-2.5 py-1 text-xs font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]/80",children:[(0,l.jsx)(o4.A,{className:"h-3 w-3"}),i("agent.test")]}),"form"===x&&(0,l.jsxs)("button",{onClick:()=>v("edit"),className:"flex items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1 text-xs font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90",title:i("agent.editHint"),children:[(0,l.jsx)(eX.A,{className:"h-3 w-3"}),i("agent.edit")]})]})]}),(0,l.jsx)("div",{className:"flex-1 min-h-0 overflow-hidden",children:"edit"===x?(0,l.jsx)(d.Ar,{children:(0,l.jsx)(r9,{projectId:t.path,mode:"full",showMaximize:!1})},"".concat(t.id,":").concat(t.scope)):b?(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:i("agent.loading")}):w?(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{children:i(w)}),(0,l.jsxs)("button",{onClick:()=>P(),className:"flex items-center gap-1.5 rounded bg-[var(--secondary)] px-2.5 py-1 text-xs font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]/80",children:[(0,l.jsx)(aD.A,{className:"h-3 w-3"}),i("agent.retry")]})]}):(0,l.jsxs)("div",{className:"h-full overflow-y-auto",children:[(0,l.jsx)(ic,{data:p,availableSkills:c,availableTools:S,allAgents:n,selfId:t.id,modelsRegistry:a,onUpdate:function(e,t){h(r=>({...r,[e]:t}))},onUpdateNested:function(e,t,r){h(n=>{var a;let s=null!=(a=n[e])?a:{};return{...n,[e]:{...s,[t]:r}}})},onToggleArrayItem:function(e,t){h(r=>{let n=Array.isArray(r[e])?[...r[e]]:[],a=n.indexOf(t);return a>=0?n.splice(a,1):n.push(t),{...r,[e]:n}})}}),A.trim()&&(0,l.jsxs)("div",{className:"border-t border-[var(--border)]",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5 px-8 pt-6 text-[10px] uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{className:"rounded bg-[var(--secondary)] px-1.5 py-0.5",children:"AGENT.md"}),(0,l.jsx)("span",{children:i("agent.mdPreviewHint")})]}),(0,l.jsx)(tu,{content:A})]})]})})]})}function ig(){var e;let{skills:t,selectedKey:r}=o0(),n=null!=(e=t.find(e=>"".concat(e.id,":").concat(e.scope)===r))?e:null;return n?(0,l.jsx)(d.Ar,{children:"extension"===n.scope?(0,l.jsx)(iv,{skill:n}):(0,l.jsx)(r9,{projectId:n.path,mode:"full",showMaximize:!1})},"".concat(n.id,":").concat(n.scope)):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 text-center bg-[var(--background)]",children:[(0,l.jsx)(o$.A,{className:"h-10 w-10 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Select a skill to edit, or create a new one"})]})}function iv(e){var t;let{skill:r}=e,n=(0,T.kj)(),[a,s]=(0,o.useState)([]),[i,c]=(0,o.useState)("SKILL.md"),[d,m]=(0,o.useState)(null);return(0,o.useEffect)(()=>{u.FH.files.search(r.path,"",1e3).then(e=>s(e.matches.map(e=>e.path).sort((e,t)=>"SKILL.md"===e?-1:"SKILL.md"===t?1:e.localeCompare(t)))).catch(()=>s([]))},[r.path]),(0,o.useEffect)(()=>{m(null),u.FH.files.read(i,r.path).then(e=>m(e.content)).catch(e=>m(e instanceof Error?e.message:String(e)))},[i,r.path]),(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsx)(r7.A,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)] truncate",children:r.name}),(0,l.jsxs)("span",{className:"shrink-0 rounded bg-[var(--secondary)] px-1.5 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:[n("skill.fromExtension",{ext:null!=(t=r.extId)?t:""})," \xb7 ",n("skill.readOnly")]}),(0,l.jsx)("span",{className:"ml-auto truncate font-mono text-[10px] text-[var(--muted-foreground)]",title:r.path,children:r.path})]}),(0,l.jsx)("p",{className:"shrink-0 border-b border-[var(--border)] bg-[var(--secondary)]/30 px-3 py-1.5 text-[10px] text-[var(--muted-foreground)]",children:n("skill.extensionHint",{id:r.id})}),(0,l.jsxs)("div",{className:"flex min-h-0 flex-1",children:[(0,l.jsx)("div",{className:"w-48 shrink-0 overflow-y-auto border-r border-[var(--border)] py-1",children:a.map(e=>(0,l.jsxs)("button",{onClick:()=>c(e),title:e,className:(0,E.cn)("flex w-full items-center gap-1.5 px-3 py-1 text-left text-[11px] transition-colors",i===e?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/50 hover:text-[var(--foreground)]"),children:[(0,l.jsx)(W.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{className:"truncate",children:e})]},e))}),(0,l.jsx)("div",{className:"min-w-0 flex-1 overflow-hidden",children:null!==d&&(0,l.jsx)("pre",{className:"h-full overflow-auto p-4 font-mono text-xs text-[var(--foreground)] whitespace-pre-wrap",children:d})})]})]})}function ib(e,t){let{settledPrefix:r=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e||0===e.length)return t;if(r){let r=Math.min(e.length,t.length),n=Math.max(0,e.length-2),a=t.length>=e.length;for(let r=0;a&&r<n;r++)(e[r].id!==t[r].id||e[r].deleted!==t[r].deleted)&&(a=!1);if(a){let a=e.length===t.length,s=t.slice();for(let t=0;t<n;t++)s[t]=e[t];for(let l=n;l<r;l++)JSON.stringify(e[l])===JSON.stringify(t[l])?s[l]=e[l]:a=!1;return a?e:s}}let n=e.length===t.length,a=t.map((t,r)=>{let a=e[r];return a&&JSON.stringify(a)===JSON.stringify(t)?a:(n=!1,t)});return n?e:a}var iy=r(99603);let iw=[],ij=()=>()=>{};function ik(e){var t;let{visible:r}=e,n=(0,T.kj)(),a=aR(e=>e.selectedSessionId),s=aR(e=>e.selectedSession),i=aR(e=>e.loadedMessages),c=aR(e=>e.loading),d=n2(e=>aC(e.tabs,a)),m=null==d?void 0:d.store,f=void 0!==m,x=m&&r?m.subscribe:ij,g=()=>{var e;return null!=(e=null==m?void 0:m.getState().messages)?e:iw},v=(0,o.useSyncExternalStore)(x,g,g),b=()=>{var e;return null!=(e=null==m?void 0:m.getState().isStreaming)&&e},y=(0,o.useSyncExternalStore)(x,b,b),w=(0,o.useRef)(null),[j,k]=(0,o.useState)(!1),[N,S]=(0,o.useState)(()=>"1"===localStorage.getItem("halo_session_debug")),[C,A]=(0,o.useState)(()=>"1"===localStorage.getItem("halo_session_prompt"));(0,o.useEffect)(()=>{localStorage.setItem("halo_session_debug",N?"1":"0")},[N]),(0,o.useEffect)(()=>{localStorage.setItem("halo_session_prompt",C?"1":"0")},[C]),(0,o.useEffect)(()=>{ab=a;let e=a?av.get(a):void 0;a&&e&&(av.delete(a),av.set(a,e))},[a]),(0,o.useEffect)(()=>{ay=r},[r]);let I=aR(e=>e.setLoadedMessages),_=(0,o.useRef)(new Map),P=(0,o.useCallback)(e=>{let t=_.current;if(t.has(e))return void t.set(e,!0);let r=()=>{var n;let a=null==(n=rU.getState().activeProject)?void 0:n.path;a&&(t.set(e,!1),ak(e,!1),u.FH.sessionLogs.get(e,a).then(t=>{var r,n,a;let s="number"==typeof t.archiveCount?t.archiveCount:0,l=null!=(n=t.messages)?n:[],o=aR.getState(),i=o.selectedSessionId===e,c=ib(null!=(a=null==(r=aw(e))?void 0:r.messages)?a:null,l,{settledPrefix:!0});aj(e,c,s),i&&(ax(e,s),c!==o.loadedMessages&&I(c))}).catch(()=>ak(e,!0)).finally(()=>{let n=t.get(e);t.delete(e),n&&(ak(e,!0),aR.getState().selectedSessionId===e&&r())}))};r()},[I]);(0,o.useEffect)(()=>{let e=e=>{e&&!aC(n2.getState().tabs,e)&&P(e)},t=p.on("file:changed",t=>e(function(e,t){if("change"!==t&&"add"!==t||!e.startsWith(".halo/sessions/")||!e.endsWith(".ui.jsonl"))return null;let r=e.slice(e.lastIndexOf("/")+1,-9);for(let[e,t]of av)aS(e)===r&&(t.stale=!0);return ay&&null!==ab&&aS(ab)===r?ab:null}(t.path,t.action))),r=h(p,()=>e(function(){for(let e of av.values())e.stale=!0;return ay?ab:null}()));return()=>{t(),r()}},[P]),(0,o.useEffect)(()=>{if(!r||!a||f)return;let e=aR.getState();if(e.loading)return;let t=aw(a);!t||t.stale?P(a):e.loadedMessages!==t.messages&&I(t.messages)},[r,a,f,P,I]);let M=(0,o.useMemo)(()=>{if(!a)return[];if(f){let e=v.filter(e=>!e.taskId);return N?e:e.filter(nA)}let e=null!=i?i:[];return N?e:e.filter(e=>!nC(e))},[a,f,v,i,N]),F=(0,o.useMemo)(()=>{for(let e of f?v:null!=i?i:[])if("context"===nu(e)&&e.systemPrompt)return e.systemPrompt;return null},[f,v,i]),D=af(e=>e.sessionId),L=af(e=>e.anchor),H=af(e=>e.cursor),z=af(e=>e.messages),O=af(e=>e.loading),U=null!==D&&D===a,B=null!=(t=null==d?void 0:d.archiveCount)?t:0;(0,o.useEffect)(()=>{a&&f&&ax(a,B)},[a,f,B]);let K=(0,o.useMemo)(()=>U?N?z:z.filter(e=>!nC(e)):[],[U,z,N]),G=(0,o.useRef)(!1),q=sa(w,G),$=(0,o.useRef)(null),Y=(0,o.useRef)(!0),J=(0,o.useRef)(r),Z=(0,o.useRef)(null),V=(0,o.useRef)(null),X=(0,o.useRef)(!0),Q=(0,o.useRef)(0),ee=(0,o.useCallback)(()=>{let e=af.getState();if(e.sessionId!==a||e.cursor<1||e.loading)return;let t=w.current;$.current=t?t.scrollHeight-t.scrollTop:null,ag()},[a]);return(0,o.useLayoutEffect)(()=>{Y.current=!0,$.current=null,X.current=!0,G.current=!1,Q.current=0},[a]),(0,o.useLayoutEffect)(()=>{J.current=r,X.current=!0},[r]),(0,o.useLayoutEffect)(()=>{Z.current=f?null:a},[f,a]),(0,o.useLayoutEffect)(()=>{let e=w.current;if(!X.current||!r||!e||c||0===M.length)return;X.current=!1;let t=a&&!f?aw(a):void 0;if(t&&(G.current=!t.atBottom,Q.current=t.scrollOffset),G.current){var n,s;e.scrollTop=(null!=(s=null==(n=V.current)?void 0:n.offsetTop)?s:0)+Q.current,e.scrollTop<80&&(Y.current=!1)}else q()},[a,r,c,M,f]),(0,o.useEffect)(()=>{let e=w.current;if(!e)return;let t=()=>{var t,r;if(!J.current)return;Q.current=e.scrollTop-(null!=(r=null==(t=V.current)?void 0:t.offsetTop)?r:0);let n=Z.current;n&&function(e,t,r){let n=av.get(e);n&&(n.scrollOffset=t,n.atBottom=r)}(n,Q.current,!G.current),e.scrollTop>200?Y.current=!0:e.scrollTop<80&&Y.current&&(Y.current=!1,ee())};return e.addEventListener("scroll",t,{passive:!0}),()=>e.removeEventListener("scroll",t)},[ee]),(0,o.useLayoutEffect)(()=>{let e=w.current,t=$.current;e&&null!==t&&(e.scrollTop=e.scrollHeight-t,$.current=null)},[z]),(0,o.useEffect)(()=>{q()},[M,q]),(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 shrink-0 items-center gap-2 border-b border-[var(--border)] px-3 min-w-0",children:[a?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(iy.A,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),(null==s?void 0:s.agentName)&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-purple-900/50 px-1.5 py-0.5 text-[10px] text-purple-400",children:s.agentName}),(0,l.jsx)("span",{className:"truncate text-xs font-medium text-[var(--foreground)]",title:(null==s?void 0:s.title)||"Untitled",children:(null==s?void 0:s.title)||"Untitled"}),(0,l.jsxs)("span",{className:"shrink-0 text-[10px] text-[var(--muted-foreground)]",children:["(",M.length,")"]}),f&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-blue-900/50 px-1.5 py-0.5 text-[8px] text-blue-400",children:"live"}),(null==s?void 0:s.parentSessionId)&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--secondary)] px-1 py-0.5 text-[8px] text-[var(--muted-foreground)]",title:"Sub-session",children:"sub"}),(null==s?void 0:s.stoppedAt)&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--secondary)] px-1 py-0.5 text-[8px] text-[var(--muted-foreground)]",children:"stopped"}),(null==s?void 0:s.archivedAt)&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-amber-900/50 px-1 py-0.5 text-[8px] text-amber-400",title:"Archived: ".concat(new Date(s.archivedAt).toLocaleString()),children:"archived"}),(null==s?void 0:s.createdAt)&&(0,l.jsx)("span",{className:"shrink-0 text-[10px] text-[var(--muted-foreground)]",title:"Created: ".concat(new Date(s.createdAt).toLocaleString()),children:(0,E.fw)(s.createdAt)}),(0,l.jsxs)("button",{onClick:()=>{a&&navigator.clipboard.writeText(a).then(()=>{k(!0),setTimeout(()=>k(!1),1200)}).catch(()=>{})},title:"Session ID: ".concat(a),className:"shrink-0 flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] font-mono text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors",children:[j?(0,l.jsx)(rP.A,{className:"h-2.5 w-2.5 text-green-400"}):(0,l.jsx)(ss.A,{className:"h-2.5 w-2.5"}),a.slice(0,8)]})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(aL.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Session Viewer"})]}),a&&(0,l.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[F&&(0,l.jsxs)("button",{onClick:()=>A(!C),className:(0,E.cn)("flex items-center gap-1 rounded px-1.5 py-0.5 text-[9px] transition-colors",C?"bg-purple-900/50 text-purple-400":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),title:"View system prompt",children:[(0,l.jsx)(W.A,{className:"h-3 w-3"}),"Prompt"]}),(0,l.jsxs)("button",{onClick:()=>S(!N),className:(0,E.cn)("flex items-center gap-1 rounded px-1.5 py-0.5 text-[9px] transition-colors",N?"bg-amber-900/50 text-amber-400":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),title:"Debug mode: show all messages including sub-agent tool calls",children:[(0,l.jsx)(lO.A,{className:"h-3 w-3"}),"Debug"]})]}),y&&(0,l.jsx)("span",{className:"rounded bg-blue-900/50 px-1.5 py-0.5 text-[9px] text-blue-400 animate-pulse",children:"streaming"})]}),(0,l.jsxs)("div",{ref:w,className:"relative flex-1 overflow-y-auto",children:[C&&F&&(0,l.jsxs)("div",{className:"sticky top-2 right-2 z-10 float-right ml-2 mb-2 mr-2 w-[min(520px,80%)] rounded-md border border-purple-900/60 bg-[var(--background)] shadow-lg",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-purple-900/50 bg-purple-950/40 px-3 py-1.5 rounded-t-md",children:[(0,l.jsx)("span",{className:"text-[10px] font-semibold text-purple-400",children:"System Prompt"}),(0,l.jsx)("button",{onClick:()=>A(!1),title:"Close",className:"rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]}),(0,l.jsx)("pre",{className:"px-3 py-2 text-[11px] text-[var(--foreground)] whitespace-pre-wrap break-words leading-relaxed max-h-[60vh] overflow-y-auto",children:F})]}),c?(0,l.jsxs)("div",{className:"flex items-center justify-center py-8 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsx)(R.A,{className:"h-3.5 w-3.5 animate-spin mr-1.5"})," Loading session..."]}):a?0===M.length?(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center",children:[(0,l.jsx)(aL.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No messages in this session"})]}):(0,l.jsxs)(l.Fragment,{children:[U&&L>0&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)]/50",children:[H>0?(0,l.jsxs)("button",{onClick:ee,disabled:O,className:"flex w-full items-center justify-center gap-1.5 px-3 py-2 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:hover:bg-transparent",children:[O&&(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),n(O?"chat.archive.loading":"chat.archive.loadOlder")]}):(0,l.jsx)("div",{className:"px-3 py-2 text-center text-[10px] text-[var(--muted-foreground)]",children:n("chat.archive.noEarlier")}),K.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(sc,{messages:K,debugMode:N,readOnly:!0}),(0,l.jsx)("div",{className:"border-t border-[var(--border)]/50 px-3 py-2 text-center text-[10px] text-[var(--muted-foreground)]",children:n("chat.archive.header",{segments:L-H,messages:K.length})})]})]}),(0,l.jsx)("div",{ref:V}),(0,l.jsx)(sc,{messages:M,debugMode:N})]}):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center",children:[(0,l.jsx)(aL.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Select a session from the sidebar to view messages"})]})]})]})}var iN=r(37568),iS=r(28976),iC=r(70539),iA=r(13680),iI=r(29656),iE=r(23715),iT=r(85615),i_=r(8565);function iP(){return(0,l.jsxs)("div",{className:"space-y-8 p-6",children:[(0,l.jsx)(iM,{}),(0,l.jsx)(iF,{})]})}function iM(){let{t:e}=(0,T.s9)(),[t,r]=(0,o.useState)(""),[n,a]=(0,o.useState)(""),[s,i]=(0,o.useState)(""),[c,d]=(0,o.useState)(!1),[u,m]=(0,o.useState)(""),[p,h]=(0,o.useState)(!1),f=""!==n?n.length<8?"tooShort":/[A-Za-z]/.test(n)?/[0-9]/.test(n)?null:"needDigit":"needLetter":null,x=""!==n&&n===t,g=""!==s&&s!==n,v=!c&&""!==t&&""!==n&&s===n&&null===f&&!x;async function b(s){if(s.preventDefault(),v){d(!0),m(""),h(!1);try{let e=await fetch("/api/auth/change-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({oldPassword:t,newPassword:n}),credentials:"include"});if(e.ok)h(!0),r(""),a(""),i("");else{let t=await e.json().catch(()=>null);m((null==t?void 0:t.error)||"HTTP ".concat(e.status))}}catch(t){m(e("security.changePassword.connectionFailed"))}finally{d(!1)}}}return(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:e("security.changePassword.title")}),(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:e("security.changePassword.desc")})]}),(0,l.jsxs)("form",{onSubmit:b,className:"max-w-md space-y-4 rounded-md border border-[var(--border)] bg-[var(--card)] p-4",children:[(0,l.jsx)(iD,{label:e("security.changePassword.current"),value:t,disabled:c,autoComplete:"current-password",onChange:e=>{r(e),h(!1)}}),(0,l.jsx)(iD,{label:e("security.changePassword.new"),value:n,disabled:c,autoComplete:"new-password",onChange:e=>{a(e),h(!1)},error:f?e("security.changePassword.".concat(f)):x?e("security.changePassword.sameAsOld"):void 0,hint:e("security.changePassword.rule")}),(0,l.jsx)(iD,{label:e("security.changePassword.confirm"),value:s,disabled:c,autoComplete:"new-password",onChange:e=>{i(e),h(!1)},error:g?e("security.changePassword.mismatch"):void 0}),u&&(0,l.jsx)("p",{className:"text-[11px] text-red-400",children:u}),p&&(0,l.jsx)("p",{className:"text-[11px] text-emerald-400",children:e("security.changePassword.success")}),(0,l.jsx)("button",{type:"submit",disabled:!v,className:"rounded bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90 disabled:opacity-50",children:c?e("security.changePassword.submitting"):e("security.changePassword.submit")})]})]})}function iF(){let{t:e}=(0,T.s9)(),[t,r]=(0,o.useState)(!1);async function n(){r(!0);try{await fetch("/api/auth/logout",{method:"POST",credentials:"include"})}catch(e){}window.location.reload()}return(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:e("security.logout")}),(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:e("security.logout.desc")})]}),(0,l.jsxs)("button",{onClick:n,disabled:t,className:"flex items-center gap-1.5 rounded border border-[var(--border)] bg-[var(--card)] px-3 py-1.5 text-xs font-medium text-red-400 transition-colors hover:bg-[var(--secondary)] disabled:opacity-50",children:[(0,l.jsx)(i_.A,{className:"h-3.5 w-3.5"}),e("security.logout")]})]})}function iD(e){let{label:t,value:r,disabled:n,autoComplete:a,onChange:s,error:o,hint:i}=e;return(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs font-medium text-[var(--foreground)]",children:t}),(0,l.jsx)("input",{type:"password",value:r,autoComplete:a,disabled:n,onChange:e=>s(e.target.value),className:(0,E.cn)("mt-1 h-7 w-full rounded border bg-[var(--background)] px-2 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]",o?"border-red-400/60":"border-[var(--border)]")}),o?(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-red-400",children:o}):i?(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:i}):null]})}var iL=r(3524);function iR(e,t){var r,n;return null===e?t:(null!=(r=t.checkedAt)?r:-1/0)<(null!=(n=e.checkedAt)?n:-1/0)?e:t}function iH(){var e;let{t}=(0,T.s9)(),r=(0,o.useSyncExternalStore)(ed,eg,eg),n=(0,o.useRef)(null),[a,s]=(0,o.useState)(!1),[i,c]=(0,o.useState)(null),[d,m]=(0,o.useState)(null);async function h(e){s(!0),c(null);try{await u.FH.extensions.update(e)}catch(e){c(e instanceof Error?e.message:String(e))}finally{s(!1)}}async function f(e){s(!0),c(null);try{await u.FH.extensions.install(e)}catch(e){c(e instanceof Error?e.message:String(e))}finally{s(!1)}}async function x(e,t){s(!0),c(null);try{await u.FH.extensions.setEnabled(e,t)}catch(e){c(e instanceof Error?e.message:String(e))}finally{s(!1)}}async function g(e,r){if(await (0,E.fN)(t("settings.extensions.confirmRemove",{name:r}))){s(!0),c(null);try{await u.FH.extensions.remove(e)}catch(e){c(e instanceof Error?e.message:String(e))}finally{s(!1)}}}(0,o.useEffect)(()=>{let e=p.on("updates:changed",e=>{"extensions"===e.scope&&m(t=>iR(t,e.status))});return u.FH.updates.extensions().then(e=>m(t=>iR(t,e))).catch(e=>c(e instanceof Error?e.message:String(e))),e},[]);let v=(0,o.useMemo)(()=>{var e;let t=new Map((null!=(e=null==d?void 0:d.extensions)?e:[]).map(e=>["".concat(e.id,"@").concat(e.installed),e]));return[...r.extensions.map(e=>({ext:e,off:!1})),...r.disabled.map(e=>({ext:e,off:!0}))].sort((e,t)=>e.ext.id.localeCompare(t.ext.id)).map(e=>({...e,update:t.get("".concat(e.ext.id,"@").concat(e.ext.version))}))},[r,d]),b=0===v.length&&0===r.errors.length,y=null!=(e=null==d?void 0:d.checking)&&e,w=v.filter(e=>{var t;return(null==(t=e.update)?void 0:t.state)==="available"}).length,j=y?null:w>0?t(1===w?"settings.extensions.updateAvailable":"settings.extensions.updatesAvailable",{n:w}):v.length>0&&v.every(e=>{var t;return(null==(t=e.update)?void 0:t.state)==="current"})?t("settings.extensions.allCurrent"):null;return(0,l.jsxs)("div",{className:"space-y-6 p-6",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:t("settings.extensions.title")}),(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:t("settings.extensions.intro")})]}),(0,l.jsx)("input",{ref:n,type:"file",accept:".zip,application/zip",className:"hidden",onChange:e=>{var t;let r=null==(t=e.target.files)?void 0:t[0];e.target.value="",r&&f(r)}}),(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(null==d?void 0:d.checkedAt)!=null&&(0,l.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:[t("settings.extensions.lastChecked",{time:new Date(d.checkedAt).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",hour12:!1})}),j&&" \xb7 ".concat(j)]}),(0,l.jsxs)("button",{onClick:function(){c(null),u.FH.updates.checkExtensions().then(e=>m(t=>iR(t,e))).catch(e=>c(e instanceof Error?e.message:String(e)))},disabled:y,className:"flex shrink-0 items-center gap-1.5 rounded border border-[var(--border)] px-3 py-1.5 text-xs text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)] disabled:opacity-50",children:[(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",y&&"animate-spin")}),y?t("settings.update.checking"):t("settings.update.check")]}),(0,l.jsxs)("button",{onClick:()=>{var e;return null==(e=n.current)?void 0:e.click()},disabled:a,className:"flex shrink-0 items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90 disabled:opacity-50",children:[(0,l.jsx)(oG.A,{className:"h-3.5 w-3.5"}),a?t("settings.extensions.working"):t("settings.extensions.upload")]})]})]}),i&&(0,l.jsx)("p",{className:"text-[11px] text-red-400",children:i}),b?(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:t("settings.extensions.empty")}):(0,l.jsxs)("ul",{className:"divide-y divide-[var(--border)] rounded border border-[var(--border)]",children:[v.map(e=>{let{ext:r,off:n,update:s}=e;return(0,l.jsxs)("li",{className:"flex items-center gap-3 px-3 py-2",children:[(0,l.jsxs)("div",{className:(0,E.cn)("min-w-0 flex-1",n&&"opacity-50"),children:[(0,l.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,l.jsx)("span",{className:"truncate text-xs font-medium text-[var(--foreground)]",children:r.name}),(0,l.jsxs)("code",{className:"text-[10px] text-[var(--muted-foreground)]",children:[r.id,"@",r.version]}),n&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--secondary)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:t("settings.extensions.off")}),r.platforms&&(0,l.jsx)("span",{className:"shrink-0 rounded border border-[var(--border)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:ew(r.platforms,t)}),r.activity&&(0,l.jsx)("span",{className:"shrink-0 rounded border border-[var(--border)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:t("settings.extensions.activity")}),r.chatbar&&(0,l.jsx)("span",{className:"shrink-0 rounded border border-[var(--border)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:t("settings.extensions.chatbar")}),!ej(r)&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--secondary)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:t("settings.extensions.unsupportedHere")})]}),r.extensions.length>0?(0,l.jsxs)("p",{className:"mt-0.5 truncate text-[10px] text-[var(--muted-foreground)]",children:[r.extensions.join(" "),"option"===r.priority&&" \xb7 ".concat(t("settings.extensions.optionOnly")),r.bundle&&" \xb7 ".concat(t("settings.extensions.bundle")),r.capabilities.includes("save")&&" \xb7 ".concat(t("settings.extensions.canSave")),r.capabilities.includes("media")&&" \xb7 ".concat(t("settings.extensions.media")),r.capabilities.includes("fs-read")&&" \xb7 ".concat(t("settings.extensions.fsRead")),r.description&&" — ".concat(r.description)]}):r.description&&(0,l.jsx)("p",{className:"mt-0.5 truncate text-[10px] text-[var(--muted-foreground)]",children:r.description}),s&&(0,l.jsx)(iz,{entry:s})]}),(null==s?void 0:s.state)==="available"&&(0,l.jsxs)("button",{onClick:()=>h(r.id),disabled:a,className:"flex shrink-0 cursor-pointer items-center gap-1 rounded px-2 py-0.5 text-[10px] text-blue-500 hover:bg-blue-500/10 disabled:opacity-50",children:[(0,l.jsx)(iL.A,{className:"h-3 w-3"}),t("settings.extensions.update")]}),(0,l.jsx)("button",{role:"switch","aria-checked":!n,onClick:()=>x(r.id,n),disabled:a,title:t(n?"settings.extensions.enable":"settings.extensions.disable"),"aria-label":t(n?"settings.extensions.enable":"settings.extensions.disable"),className:"shrink-0 cursor-pointer rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] disabled:opacity-50",children:n?(0,l.jsx)(oY.A,{className:"h-4.5 w-4.5"}):(0,l.jsx)(oJ.A,{className:"h-4.5 w-4.5 text-blue-500"})}),(0,l.jsx)(iO,{disabled:a,onClick:()=>g(r.id,r.name),label:t("settings.extensions.remove")})]},r.id)}),r.errors.map(e=>(0,l.jsxs)("li",{className:"flex items-center gap-3 px-3 py-2",children:[(0,l.jsx)(sl.A,{className:"h-3.5 w-3.5 shrink-0 text-red-400"}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("code",{className:"text-xs text-red-400",children:e.id}),(0,l.jsx)("p",{className:"mt-0.5 truncate text-[10px] text-[var(--muted-foreground)]",children:e.error})]}),(0,l.jsx)(iO,{disabled:a,onClick:()=>g(e.id,e.id),label:t("settings.extensions.remove")})]},e.id))]})]})}function iz(e){var t,r,n,a;let{entry:s}=e,{t:o}=(0,T.s9)(),i="mt-0.5 truncate text-[10px] text-[var(--muted-foreground)]";switch(s.state){case"available":return(0,l.jsx)("p",{className:"mt-0.5 truncate text-[10px] text-blue-500",children:o("settings.extensions.latest",{version:null!=(t=s.latest)?t:""})});case"needs-halo":return(0,l.jsx)("p",{className:i,children:o("settings.extensions.needsHalo",{version:null!=(r=s.latest)?r:"",minHalo:null!=(n=s.minHalo)?n:""})});case"not-found":return(0,l.jsx)("p",{className:i,children:o("settings.extensions.notFound")});case"no-source":return(0,l.jsx)("p",{className:i,children:o("settings.extensions.noSource")});case"invalid":case"refused":case"unreachable":return(0,l.jsx)("p",{className:i,title:s.error,children:o("settings.extensions.".concat(s.state),{error:null!=(a=s.error)?a:""})});default:return null}}function iO(e){let{disabled:t,onClick:r,label:n}=e;return(0,l.jsxs)("button",{onClick:r,disabled:t,className:"flex shrink-0 cursor-pointer items-center gap-1 rounded px-2 py-0.5 text-[10px] text-red-400 hover:bg-red-500/10 hover:text-red-300 disabled:opacity-50",children:[(0,l.jsx)(eq.A,{className:"h-3 w-3"}),n]})}let iU="halo upgrade && halo server restart",iB="https://github.com/turmind/halo-agent/releases";function iW(e){var t,r;let{version:n}=e,{t:a}=(0,T.s9)(),[s,i]=(0,o.useState)(null),[c,d]=(0,o.useState)(null),[m,h]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=p.on("updates:changed",e=>{"core"===e.scope&&i(t=>iR(t,e.status))});return u.FH.updates.core().then(e=>i(t=>iR(t,e))).catch(e=>d(e instanceof Error?e.message:String(e))),e},[]);let f=null!=(t=null==s?void 0:s.checking)&&t,x="web"!==ey(),g=null!=c?c:(null==s?void 0:s.state)==="error"?null!=(r=s.error)?r:"":null;return(0,l.jsxs)("div",{className:"shrink-0 space-y-1 border-t border-[var(--border)] px-3 py-2 text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)("span",{className:"truncate",children:["Halo v",n]}),(0,l.jsx)("div",{className:"flex-1"}),(null==s?void 0:s.state)!=="dev"&&(0,l.jsxs)("button",{onClick:function(){d(null),u.FH.updates.checkCore().then(e=>i(t=>iR(t,e))).catch(e=>d(e instanceof Error?e.message:String(e)))},disabled:f,className:"flex shrink-0 items-center gap-1 rounded px-1.5 py-0.5 hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:opacity-50",children:[(0,l.jsx)(aD.A,{className:"h-3 w-3 ".concat(f?"animate-spin":"")}),a(f?"settings.update.checking":"settings.update.check")]})]}),(null==s?void 0:s.state)==="dev"&&(0,l.jsx)("p",{children:a("settings.update.dev")}),(null==s?void 0:s.state)==="current"&&s.latest&&(0,l.jsx)("p",{children:a("settings.update.current",{version:s.latest})}),(null==s?void 0:s.state)==="available"&&s.latest&&(0,l.jsxs)("div",{className:"space-y-1",children:[(0,l.jsx)("p",{className:"font-medium text-[var(--foreground)]",children:a("settings.update.available",{version:s.latest})}),x?(0,l.jsx)("a",{href:iB,target:"_blank",rel:"noreferrer",className:"text-[var(--primary)] hover:underline",children:a("settings.update.download")}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex items-center gap-1 rounded bg-[var(--secondary)] px-1.5 py-1",children:[(0,l.jsx)("code",{className:"min-w-0 flex-1 truncate text-[var(--foreground)]",children:iU}),(0,l.jsx)("button",{onClick:function(){navigator.clipboard.writeText(iU).then(()=>{h(!0),setTimeout(()=>h(!1),2e3)}).catch(()=>{})},title:a("settings.update.copy"),className:"shrink-0 hover:text-[var(--foreground)]",children:m?(0,l.jsx)(rP.A,{className:"h-3 w-3"}):(0,l.jsx)(ss.A,{className:"h-3 w-3"})})]}),(0,l.jsx)("p",{children:a("settings.update.sudoHint")}),(0,l.jsx)("a",{href:"".concat(iB,"/tag/v").concat(s.latest),target:"_blank",rel:"noreferrer",className:"text-[var(--primary)] hover:underline",children:a("settings.update.notes")})]})]}),null!==g&&(0,l.jsx)("p",{className:"truncate",title:g,children:a("settings.update.error",{error:g})})]})}function iK(){var e,t,r;let{t:n,refreshFromServer:a}=(0,T.s9)(),{refreshFromServer:s}=(0,e5.useTheme)(),i=rU(e=>e.activeProject),[c,d]=(0,o.useState)("global"),[m,p]=(0,o.useState)(null),[h,f]=(0,o.useState)("general"),[x,g]=(0,o.useState)(!1),[v,b]=(0,o.useState)(!1),[y,w]=(0,o.useState)(null),[j,k]=(0,o.useState)([]),N="workspace"===c?null==i?void 0:i.path:void 0,S=(0,o.useCallback)(()=>{b(!0),u.FH.settings.getSchema(N).then(e=>{p(e),f(t=>"__orphans"===t||"__security"===t||"__extensions"===t||e.sections.find(e=>e.namespaceId===t)?t:"general")}).catch(e=>{console.error("[Settings] schema load failed:",e)}).finally(()=>b(!1))},[N]),C=sq(e=>e.version),A=(0,o.useSyncExternalStore)(ed,eg,eg);function I(e,t){e.restartRequired&&k(e=>e.includes(t)?e:[...e,t])}async function _(e,t,r){g(!0);try{let n="general"===e?"general.".concat(t.key):"".concat(e,".").concat(t.kind,"s.").concat(t.key);if(""===r)await u.FH.settings.remove(c,n,N);else{let e=function(e,t){switch(e){case"int":{let e=parseInt(t,10);return Number.isFinite(e)?e:t}case"float":{let e=parseFloat(t);return Number.isFinite(e)?e:t}case"boolean":return"true"===t;default:return t}}(t.type,r);await u.FH.settings.patch(c,n,e,N)}I(t,n),S(),a(),s()}catch(e){console.error("[Settings] save failed:",e)}finally{g(!1)}}async function P(e,t){g(!0);try{let r="general"===e?"general.".concat(t.key):"".concat(e,".").concat(t.kind,"s.").concat(t.key);await u.FH.settings.remove(c,r,N),I(t,r),S(),a(),s()}catch(e){console.error("[Settings] reset failed:",e)}finally{g(!1)}}async function M(e){let t="".concat(e.namespaceId,".").concat(e.kind,"s.").concat(e.key);if(confirm(n("settings.orphans.confirm",{key:t}))){g(!0);try{await u.FH.settings.remove(c,t,N),S()}catch(e){console.error("[Settings] orphan remove failed:",e)}finally{g(!1)}}}(0,o.useEffect)(()=>{S()},[S,C,A]),(0,o.useEffect)(()=>{u.FH.health().then(e=>w("string"==typeof(null==e?void 0:e.version)?e.version:null)).catch(()=>w(null))},[]);let F=null!=(e=null==m?void 0:m.sections)?e:[],D=null!=(t=null==m?void 0:m.orphans)?t:[],L=(0,o.useMemo)(()=>F.find(e=>e.namespaceId===h),[F,h]);return(0,l.jsxs)("div",{className:"flex h-full bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex w-[220px] shrink-0 flex-col border-r border-[var(--border)]",children:[(0,l.jsxs)("div",{className:"flex h-10 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(iN.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:n("nav.settings")}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:S,disabled:v,title:"Refresh",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",v&&"animate-spin")})})]}),(0,l.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:[(0,l.jsxs)("div",{className:"border-b border-[var(--border)] p-2",children:[(0,l.jsxs)("div",{className:"flex rounded-md bg-[var(--card)] p-0.5",children:[(0,l.jsxs)("button",{onClick:()=>d("global"),className:(0,E.cn)("flex flex-1 items-center justify-center gap-1 rounded-sm px-2 py-1 text-[10px] font-medium transition-colors","global"===c?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:[(0,l.jsx)(U.A,{className:"h-3 w-3"}),n("common.global")]}),(0,l.jsxs)("button",{onClick:()=>d("workspace"),disabled:!i,className:(0,E.cn)("flex flex-1 items-center justify-center gap-1 rounded-sm px-2 py-1 text-[10px] font-medium transition-colors","workspace"===c?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",!i&&"cursor-not-allowed opacity-40"),children:[(0,l.jsx)(iS.A,{className:"h-3 w-3"}),n("common.workspace")]})]}),"workspace"===c&&i&&(0,l.jsx)("p",{className:"mt-1 truncate text-[9px] text-[var(--muted-foreground)]",children:i.path})]}),(0,l.jsx)(iG,{sections:F,orphans:D,active:h,onPick:f})]}),y&&(0,l.jsx)(iW,{version:y})]}),(0,l.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,l.jsx)("div",{className:"flex h-10 shrink-0 items-center justify-between border-b border-[var(--border)] px-4",children:(0,l.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:"__security"===h?(0,l.jsxs)(l.Fragment,{children:["~/.halo/secrets/config.yaml → ",(0,l.jsx)("code",{className:"text-[var(--foreground)]",children:"server.password"})]}):"__extensions"===h?(0,l.jsx)(l.Fragment,{children:"~/.halo/global/extensions/"}):(0,l.jsxs)(l.Fragment,{children:["global"===c?"~/.halo/secrets/settings.yaml":"".concat(null!=(r=null==i?void 0:i.path)?r:"...","/.halo/settings.yaml")," ","→ ",(0,l.jsx)("code",{className:"text-[var(--foreground)]",children:h})]})})}),j.length>0&&(0,l.jsxs)("div",{className:"flex shrink-0 items-start gap-2 border-b border-amber-500/30 bg-amber-500/10 px-4 py-2 text-[11px] text-amber-400",children:[(0,l.jsx)(sl.A,{className:"mt-px h-3.5 w-3.5 shrink-0"}),(0,l.jsx)("span",{className:"min-w-0 flex-1 break-words",children:n("settings.restartNotice",{keys:j.join(", ")})}),(0,l.jsx)("button",{onClick:()=>k([]),title:n("settings.restartNotice.dismiss"),className:"shrink-0 cursor-pointer rounded p-0.5 hover:bg-amber-500/20",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]}),(0,l.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:"__security"===h?(0,l.jsx)(iP,{}):"__extensions"===h?(0,l.jsx)(iH,{}):"__orphans"===h?(0,l.jsx)(i2,{orphans:D,onRemove:M,saving:x}):L?(0,l.jsx)(iJ,{section:L,scope:c,saving:x,onSave:(e,t)=>_(L.namespaceId,e,t),onReset:e=>P(L.namespaceId,e)}):(0,l.jsx)("div",{className:"p-10 text-center text-xs text-[var(--muted-foreground)]",children:m?n("settings.empty"):n("settings.loading")})})]})]})}function iG(e){let{sections:t,orphans:r,active:n,onPick:a}=e,{t:s}=(0,T.s9)(),i=(0,o.useMemo)(()=>{let e=t.filter(e=>"general"===e.source),r=t.filter(e=>"provider"===e.source),n=t.filter(e=>"skill"===e.source);return{general:e,providers:r,skills:n,agents:t.filter(e=>"agent"===e.source),extensions:t.filter(e=>"extension"===e.source)}},[t]),[c,d]=function(){let[e,t]=(0,o.useState)(()=>{try{var e;return new Set(JSON.parse(null!=(e=localStorage.getItem(iq))?e:"[]"))}catch(e){return new Set}});return[e,(0,o.useCallback)(e=>{t(t=>{let r=new Set(t);return r.delete(e)||r.add(e),localStorage.setItem(iq,JSON.stringify([...r])),r})},[])]}(),u=(e,t)=>({label:t,collapsed:c.has(e),onToggle:()=>d(e)});return(0,l.jsxs)("div",{className:"py-1",children:[(0,l.jsxs)(iY,{...u("system",s("settings.nav.system")),items:i.general,icons:{general:iC.A,a2a:iA.A},active:n,onPick:a,children:[(0,l.jsxs)(i$,{active:"__security"===n,onClick:()=>a("__security"),children:[(0,l.jsx)(iI.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{children:s("settings.nav.security")})]}),(0,l.jsxs)(i$,{active:"__extensions"===n,onClick:()=>a("__extensions"),children:[(0,l.jsx)(r7.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{children:s("settings.nav.extensions")})]})]}),(0,l.jsx)(iY,{...u("extensions",s("settings.nav.extensionSettings")),items:i.extensions,active:n,onPick:a}),(0,l.jsx)(iY,{...u("providers",s("settings.nav.providers")),items:i.providers,active:n,onPick:a}),(0,l.jsx)(iY,{...u("agents",s("settings.nav.agents")),items:i.agents,active:n,onPick:a}),(0,l.jsx)(iY,{...u("skills",s("settings.nav.skills")),items:i.skills,active:n,onPick:a}),r.length>0&&(0,l.jsx)(iY,{...u("orphans",s("settings.nav.orphans")),items:[],active:n,onPick:a,children:(0,l.jsxs)(i$,{active:"__orphans"===n,onClick:()=>a("__orphans"),children:[(0,l.jsx)(eq.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{children:s("settings.nav.unclaimed")}),(0,l.jsx)("span",{className:"ml-auto rounded bg-[var(--card)] px-1 py-0 text-[9px]",children:r.length})]})})]})}let iq="halo_settings_navCollapsed";function i$(e){let{active:t,onClick:r,title:n,children:a}=e;return(0,l.jsx)("button",{onClick:r,title:n,className:(0,E.cn)("flex w-full cursor-pointer items-center gap-2 py-1.5 pl-6 pr-3 text-[11px] transition-colors",t?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--foreground)]/80 hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),children:a})}function iY(e){let{label:t,items:r,icons:n,active:a,onPick:s,collapsed:o,onToggle:i,children:c}=e,{lang:d}=(0,T.s9)();return 0!==r.length||c?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("button",{onClick:i,"aria-expanded":!o,className:"flex w-full cursor-pointer items-center gap-1 px-2 pb-1 pt-2.5 text-[10px] font-medium tracking-wide text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,l.jsx)(F.A,{className:(0,E.cn)("h-3 w-3 shrink-0 transition-transform",!o&&"rotate-90")}),(0,l.jsx)("span",{className:"truncate",children:t})]}),!o&&r.map(e=>{let t="zh"===d&&e.displayName_zh||e.displayName,r="zh"===d&&e.description_zh||e.description,o=null==n?void 0:n[e.namespaceId];return(0,l.jsxs)(i$,{active:a===e.namespaceId,onClick:()=>s(e.namespaceId),title:null!=r?r:e.namespaceId,children:[o&&(0,l.jsx)(o,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{className:"truncate",children:t})]},e.namespaceId)}),!o&&c]}):null}function iJ(e){let{section:t,scope:r,saving:n,onSave:a,onReset:s}=e,{t:i,lang:c}=(0,T.s9)(),[d,u]=(0,o.useState)(!1),m=t.fields.filter(e=>"param"===e.kind),p=m.filter(e=>!e.advanced),h=m.filter(e=>e.advanced),f=t.fields.filter(e=>"secret"===e.kind),x=e=>(0,l.jsx)(iZ,{namespaceId:t.namespaceId,field:e,scope:r,saving:n,onSave:t=>a(e,t),onReset:()=>s(e)},e.key),g="zh"===c&&t.displayName_zh||t.displayName,v="zh"===c&&t.description_zh||t.description,[b,y]=i("settings.section.secretsHint",{placeholder:"\0"}).split("\0");return(0,l.jsxs)("div",{className:"space-y-6 p-6",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:g}),v&&(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:v}),(0,l.jsxs)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:[i("settings.section.namespace"),": ",(0,l.jsx)("code",{className:"text-[var(--foreground)]",children:t.namespaceId})," \xb7 ",i("settings.section.declaredBy"),": ",(0,l.jsx)("span",{children:i("settings.section.declaredBy.".concat(t.source))})]})]}),m.length>0&&(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsx)("h3",{className:"text-[11px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:i("general"===t.namespaceId?"settings.section.settings":"settings.section.params")}),p.map(x),h.length>0&&(0,l.jsxs)("div",{className:"space-y-4 border-t border-[var(--border)] pt-3",children:[(0,l.jsxs)("button",{onClick:()=>u(e=>!e),className:"flex cursor-pointer items-center gap-1 text-[11px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:[(0,l.jsx)(F.A,{className:(0,E.cn)("h-3 w-3 transition-transform",d&&"rotate-90")}),i("settings.section.advanced"),(0,l.jsx)("span",{className:"rounded bg-[var(--card)] px-1 py-0 text-[9px] font-normal normal-case",children:h.length})]}),d&&h.map(x)]})]}),f.length>0&&(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsx)("h3",{className:"text-[11px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:i("settings.section.secrets")}),(0,l.jsxs)("p",{className:"text-[10px] text-[var(--muted-foreground)]",children:[b,(0,l.jsx)("code",{className:"rounded bg-[var(--card)] px-1 py-0.5",children:"<<ENV_NAME>>"}),y]}),f.map(x)]})]})}function iZ(e){var t,r,n;let{namespaceId:a,field:s,scope:o,saving:i,onSave:c,onReset:d}=e,{lang:u,t:m}=(0,T.s9)(),p="zh"===u&&s.description_zh||s.description||"",h="general"===a?"general.".concat(s.key):"".concat(a,".").concat(s.kind,"s.").concat(s.key),f="workspace"===o&&s.inheritedFromGlobal,x="workspace"===o&&!0===s.globalOnly,g=!x&&s.source===o&&("workspace"===o||(null!=(r=s.value)?r:"")!==(null!=(n=s.default)?n:""));return(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,l.jsx)("label",{className:"text-xs font-medium text-[var(--foreground)]",children:s.key}),(0,l.jsx)("code",{className:"text-[10px] text-[var(--muted-foreground)]",children:h}),(0,l.jsx)(iV,{source:s.source,inherited:f}),s.globalOnly&&(0,l.jsx)("span",{className:"rounded bg-[var(--secondary)] px-1.5 py-px text-[10px] uppercase text-[var(--muted-foreground)]",title:m("settings.globalOnlyHint"),children:"global only"}),g&&(0,l.jsxs)("button",{onClick:d,disabled:i,className:"flex cursor-pointer items-center gap-1 text-[10px] text-blue-400 hover:text-blue-300",title:m("workspace"===o?"settings.field.resetTitleWorkspace":"settings.field.resetTitleGlobal"),children:[(0,l.jsx)(iE.A,{className:"h-2.5 w-2.5"}),m("settings.field.reset")]})]}),p&&(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:p}),(0,l.jsx)("div",{className:(0,E.cn)("mt-1.5",x&&"opacity-60 pointer-events-none"),children:function(e,t,r){var n,a,s,o,i,c,d,u;if(e.secret)return(0,l.jsx)(i3,{initial:null!=(n=e.value)?n:"",placeholder:null!=(a=e.default)?a:"",saving:t,onCommit:r});switch(e.type){case"int":case"float":return(0,l.jsx)(iQ,{initial:null!=(s=e.value)?s:"",placeholder:null!=(o=e.default)?o:"",type:"number",step:"int"===e.type?1:.1,saving:t,onCommit:r});case"boolean":return(0,l.jsx)(i0,{value:e.value,saving:t,onCommit:r});case"enum":return(0,l.jsx)(i1,{value:e.value,options:null!=(i=e.options)?i:[],optionLabels:e.optionLabels,placeholder:null!=(c=e.default)?c:"",saving:t,onCommit:r});default:return(0,l.jsx)(iQ,{initial:null!=(d=e.value)?d:"",placeholder:null!=(u=e.default)?u:"",saving:t,onCommit:r})}}(s,i||x,c)}),(null==(t=s.envMissing)?void 0:t.length)>0&&(0,l.jsxs)("p",{className:"mt-1 flex items-start gap-1 text-[10px] text-amber-400",children:[(0,l.jsx)(sl.A,{className:"mt-px h-3 w-3 shrink-0"}),(0,l.jsx)("span",{children:m("settings.field.envMissing",{names:s.envMissing.join(", ")})})]})]})}function iV(e){let{source:t,inherited:r}=e,{t:n}=(0,T.s9)();return(0,l.jsx)("span",{className:(0,E.cn)("rounded px-1.5 py-0 text-[9px] font-medium",{workspace:"bg-blue-500/20 text-blue-300",global:r?"bg-[var(--secondary)] text-[var(--muted-foreground)]":"bg-emerald-500/20 text-emerald-300",unset:"bg-[var(--secondary)] text-[var(--muted-foreground)] opacity-60"}[t]),children:n("unset"===t?"settings.source.unset":r?"settings.source.inherited":"settings.source.".concat(t))})}let iX=/^<<[A-Z_][A-Z0-9_]*>>$/;function iQ(e){let{initial:t,placeholder:r,type:n="text",step:a,saving:s,onCommit:i}=e,c=""===t&&!!r,[d,u]=(0,o.useState)(t),[m,p]=(0,o.useState)(!1),h=(0,o.useRef)(t);function f(){p(!1),d!==h.current&&(h.current=d,i(d))}(0,o.useEffect)(()=>{u(t),h.current=t,p(!1)},[t]);let x=c&&!m?null!=r?r:"":d;return(0,l.jsx)("input",{type:n,step:a,value:x,placeholder:r,onFocus:()=>{c&&u(""),p(!0)},onChange:e=>{u(e.target.value),p(!0)},onBlur:f,onKeyDown:e=>{"Enter"===e.key&&f()},disabled:s,className:(0,E.cn)("h-7 w-full max-w-md rounded border border-[var(--border)] bg-[var(--card)] px-2 text-xs outline-none focus:border-[var(--primary)]",c&&!m?"text-[var(--muted-foreground)] italic":"text-[var(--foreground)]")})}function i0(e){let{value:t,saving:r,onCommit:n}=e,a="true"===t||"1"===t;return(0,l.jsxs)("label",{className:"inline-flex cursor-pointer items-center gap-2",children:[(0,l.jsx)("input",{type:"checkbox",checked:a,disabled:r,onChange:e=>n(e.target.checked?"true":"false"),className:"h-3.5 w-3.5 cursor-pointer rounded border-[var(--border)] bg-[var(--card)] text-[var(--primary)] focus:ring-[var(--primary)]"}),(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:a?"on":"off"})]})}function i1(e){var t,r;let{value:n,options:a,optionLabels:s,placeholder:o,saving:i,onCommit:c}=e,d=null!=(r=null!=(t=null!=n?n:o)?t:a[0])?r:"";return(0,l.jsx)("select",{value:d,disabled:i,onChange:e=>c(e.target.value),className:"h-7 w-full max-w-md cursor-pointer rounded border border-[var(--border)] bg-[var(--card)] px-2 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]",children:a.map((e,t)=>{var r;return(0,l.jsx)("option",{value:e,children:null!=(r=null==s?void 0:s[t])?r:e},e)})})}function i3(e){let{initial:t,placeholder:r,saving:n,onCommit:a}=e,s=iX.test(t),[i,c]=(0,o.useState)(t),[d,u]=(0,o.useState)(!1),[m,p]=(0,o.useState)(s),h=(0,o.useRef)(t);function f(){if(d){if(i===h.current)return void u(!1);h.current=i,a(i),u(!1)}}return(0,o.useEffect)(()=>{c(t),h.current=t,u(!1),p(iX.test(t))},[t]),(0,l.jsxs)("div",{className:"relative w-full max-w-md",children:[(0,l.jsx)("input",{type:m||d?"text":"password",value:d?i:t||"",placeholder:r,onFocus:()=>{d||!t||iX.test(t)||c(""),u(!0)},onChange:e=>c(e.target.value),onBlur:f,onKeyDown:e=>{"Enter"===e.key&&f()},disabled:n,className:"h-7 w-full rounded border border-[var(--border)] bg-[var(--card)] px-2 pr-7 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]"}),!s&&(0,l.jsx)("button",{type:"button",onClick:()=>p(e=>!e),className:"absolute right-1.5 top-1/2 -translate-y-1/2 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",tabIndex:-1,children:m?(0,l.jsx)(iT.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(tL.A,{className:"h-3.5 w-3.5"})})]})}function i2(e){let{orphans:t,onRemove:r,saving:n}=e,{t:a}=(0,T.s9)(),s=(0,o.useMemo)(()=>{let e=new Map;for(let n of t){var r;let t=null!=(r=e.get(n.namespaceId))?r:[];t.push(n),e.set(n.namespaceId,t)}return Array.from(e.entries())},[t]);return 0===t.length?null:(0,l.jsxs)("div",{className:"space-y-6 p-6",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:a("settings.orphans.title")}),(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:a("settings.orphans.intro")})]}),s.map(e=>{let[t,s]=e;return(0,l.jsxs)("div",{className:"space-y-2 rounded border border-[var(--border)] p-3",children:[(0,l.jsx)("h3",{className:"text-[11px] font-semibold text-[var(--foreground)]",children:t}),(0,l.jsx)("ul",{className:"space-y-1",children:s.map(e=>(0,l.jsxs)("li",{className:"flex items-center justify-between text-[11px]",children:[(0,l.jsxs)("code",{className:"text-[var(--muted-foreground)]",children:[t,".",e.kind,"s.",e.key]}),(0,l.jsxs)("button",{onClick:()=>r(e),disabled:n,className:"flex cursor-pointer items-center gap-1 rounded px-2 py-0.5 text-[10px] text-red-400 hover:bg-red-500/10 hover:text-red-300",children:[(0,l.jsx)(eq.A,{className:"h-3 w-3"}),a("settings.orphans.remove")]})]},"".concat(e.kind,".").concat(e.key)))})]},t)})]})}var i5=r(84064);let i4=aA(),i8=i4.useBus,i6=i4.bump;var i9=r(89918),i7=r(27269),ce=r(78547),ct=r(45211),cr=r(35622);function cn(e,t){return(0,E.cn)(e?"mt-0.5":"mt-1","w-full rounded border border-[var(--border)] bg-[var(--card)] px-2",e?"py-1":"py-1.5",t&&"font-mono","text-xs")}function ca(e){return(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:(0,E.cn)(e.compact?"text-[10px]":"text-[11px]","text-[var(--muted-foreground)]"),children:e.label}),e.children,e.hint&&(0,l.jsx)("p",{className:"mt-1 text-[10px] text-[var(--muted-foreground)]",children:e.hint})]})}function cs(e){return(0,l.jsx)("input",{type:e.type,value:e.value,onChange:t=>e.onChange(t.target.value),className:cn(e.compact,e.mono),placeholder:e.placeholder})}function cl(e){let t=(0,T.kj)(),{ns:r}=e;return(0,l.jsxs)("select",{value:e.value,onChange:t=>e.onChange(t.target.value),className:cn(e.compact),children:[(0,l.jsx)("option",{value:"readonly",children:t("".concat(r,".readonly"))}),e.observer?(0,l.jsx)("option",{value:"observer",children:t("".concat(r,".observer"))}):"observer"===e.value&&(0,l.jsx)("option",{value:"observer",disabled:!0,children:t("channels.observerAdminOnly")}),(0,l.jsx)("option",{value:"workspace",children:t("".concat(r,".wsWrite"))}),(0,l.jsx)("option",{value:"full",children:t("".concat(r,".full"))})]})}function co(e){return(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:e.onClose,children:(0,l.jsxs)("div",{className:(0,E.cn)(e.width,"max-h-[90vh] overflow-y-auto rounded-lg border border-[var(--border)] bg-[var(--background)] p-5 shadow-xl"),onClick:e=>e.stopPropagation(),children:[e.title&&(0,l.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,l.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:e.title}),(0,l.jsx)("button",{onClick:e.onClose,className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),e.children]})})}function ci(e){let t=(0,T.kj)(),{ns:r,value:n,onChange:a}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ca,{label:t("".concat(r,".bindWorkspace")),hint:e.workspaceHint,children:(0,l.jsx)(cs,{mono:!0,value:n.workspacePath,onChange:e=>a({workspacePath:e}),placeholder:"/home/user/project"})}),(0,l.jsx)(ca,{label:t("".concat(r,".nameOptional")),children:(0,l.jsx)(cs,{value:n.label,onChange:e=>a({label:e}),placeholder:t("".concat(r,".namePlaceholder"))})}),(0,l.jsx)(ca,{label:t("".concat(r,".accessLevel")),hint:e.accessHint,children:(0,l.jsx)(cl,{ns:r,value:n.accessLevel,onChange:e=>a({accessLevel:e}),observer:e.observer})}),(0,l.jsx)(T.pZ,{value:n.language,onChange:e=>a({language:e})})]})}function cc(e){let t=(0,T.kj)(),{lang:r}=(0,T.s9)(),{ns:n,onClose:a,canSubmit:s=!0}=e,i=rU(e=>e.activeProject),[c,d]=(0,o.useState)({workspacePath:(null==i?void 0:i.path)||"",label:"",accessLevel:"readonly",language:r}),[u,m]=(0,o.useState)(!1),[p,h]=(0,o.useState)("");async function f(){h(""),m(!0);try{e.onDone(await e.create({...c,label:c.label||void 0}))}catch(e){h(e instanceof Error?e.message:String(e))}finally{m(!1)}}return(0,l.jsx)(co,{width:e.width,title:t("".concat(n,".addTitle")),onClose:a,children:(0,l.jsxs)("div",{className:"space-y-3",children:[e.children,(0,l.jsx)(ci,{ns:n,value:c,onChange:e=>d(t=>({...t,...e})),observer:e.observer}),e.extraFields,p&&(0,l.jsx)("p",{className:"text-xs text-red-400",children:p}),(0,l.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[(0,l.jsx)("button",{onClick:a,className:"rounded border border-[var(--border)] px-3 py-1.5 text-xs",children:t("".concat(n,".cancel"))}),(0,l.jsxs)("button",{onClick:f,disabled:u||!s||!(0,E.Z1)(c.workspacePath),className:"flex items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1.5 text-xs text-white disabled:opacity-50",children:[u&&(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),t("".concat(n,".addBtn"))]})]})]})})}function cd(e,t){let[r,n]=(0,o.useState)([]),[a,s]=(0,o.useState)(!0),l=(0,o.useCallback)(()=>{s(!0),t().then(e=>n(e.accounts)).catch(t=>{console.error("[".concat(e,"] list failed:"),t)}).finally(()=>s(!1))},[e,t]);(0,o.useEffect)(()=>{l()},[l]);let i=i8(e=>e.version);return(0,o.useEffect)(()=>{i>0&&l()},[i,l]),{accounts:r,loading:a,reload:l}}function cu(e){let t=(0,T.kj)(),{ns:r,accounts:n,loading:a,reload:s}=e,[i,c]=(0,o.useState)(null);return(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-medium text-[var(--foreground)]",children:t("".concat(r,".title"))}),(0,l.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)]",children:t("".concat(r,".desc"))})]}),(0,l.jsxs)("button",{onClick:e.onAdd,className:"flex items-center gap-1.5 rounded-md bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-white hover:opacity-90",children:[(0,l.jsx)(lC.A,{className:"h-3.5 w-3.5"}),t("".concat(r,".add"))]})]}),(0,l.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:a?(0,l.jsxs)("div",{className:"flex items-center justify-center py-8 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsx)(R.A,{className:"mr-2 h-3.5 w-3.5 animate-spin"}),t("".concat(r,".loading"))]}):0===n.length?(0,l.jsx)("div",{className:"p-8 text-center text-xs text-[var(--muted-foreground)]",children:t("".concat(r,".empty"))}):(0,l.jsx)("ul",{className:"divide-y divide-[var(--border)]",children:n.map(t=>(0,l.jsx)(o.Fragment,{children:e.renderRow(t,{editing:i===t.accountId,onEdit:()=>c(t.accountId),onCancelEdit:()=>c(null),onSaved:()=>{c(null),s()},onChanged:s})},t.accountId))})}),e.children]})}function cm(e){let t=e.icon;return(0,l.jsx)("button",{onClick:e.onClick,disabled:e.disabled,title:e.title,className:(0,E.cn)("rounded p-1.5 text-[var(--muted-foreground)]",e.danger?"hover:bg-red-500/20 hover:text-red-400":"hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(t,{className:"h-3.5 w-3.5"})})}let cp={readonly:{text:"Readonly",className:"bg-emerald-500/15 text-emerald-300"},observer:{text:"Observer",className:"bg-teal-500/15 text-teal-300"},workspace:{text:"Workspace",className:"bg-blue-500/15 text-blue-300"},full:{text:"Full",className:"bg-amber-500/15 text-amber-300"}};function ch(e){return e instanceof Error?e.message:String(e)}function cf(e){var t;let r=(0,T.kj)(),{ns:n,account:a,onEdit:s,onChanged:i}=e,[c,d]=(0,o.useState)(!1);if(e.editing)return(0,l.jsx)(cx,{...e});async function u(e,t){d(!0);try{await e(),i()}catch(e){alert(r("".concat(n,".").concat(t),{error:ch(e)}))}finally{d(!1)}}async function m(){var t;await (0,E.fN)(r("".concat(n,".confirmDelete"),{name:null!=(t=e.deleteName)?t:""}))&&await u(e.remove,"deleteFailed")}let p=cp[a.accessLevel];return(0,l.jsxs)("li",{className:"flex items-center gap-3 px-4 py-3",children:[(0,l.jsx)("div",{className:(0,E.cn)("h-2 w-2 rounded-full",a.enabled?"bg-emerald-500":"bg-[var(--muted-foreground)]")}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)]",children:e.title}),(0,l.jsx)("span",{className:(0,E.cn)("rounded px-1.5 py-0.5 text-[9px] font-medium",p.className),children:p.text}),e.titleExtra]}),(0,l.jsxs)("p",{className:"mt-0.5 truncate font-mono text-[10px] text-[var(--muted-foreground)]",children:[e.detail,e.workspaceMissing&&(0,l.jsx)("span",{className:"ml-1 text-red-400",children:r("".concat(n,".pathMissing"))})]}),e.footer]}),(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[(0,l.jsx)(cm,{onClick:()=>u(()=>e.setEnabled(!a.enabled),"switchFailed"),disabled:c,title:a.enabled?r("".concat(n,".disable")):r("".concat(n,".enable")),icon:a.enabled?ce.A:ct.A}),null==(t=e.actions)?void 0:t.call(e,c),(0,l.jsx)(cm,{onClick:s,disabled:c,title:r("".concat(n,".edit")),icon:cr.A}),(0,l.jsx)(cm,{onClick:m,disabled:c,title:r("".concat(n,".delete")),icon:eq.A,danger:!0})]})]})}function cx(e){var t;let r=(0,T.kj)(),{ns:n,account:a}=e,s=()=>({label:a.label,workspacePath:a.workspacePath,accessLevel:a.accessLevel,language:a.language||"en",...e.extraDraft}),[i,c]=(0,o.useState)(s),[d,u]=(0,o.useState)(a);d!==a&&(u(a),c(s()));let[m,p]=(0,o.useState)(!1),h=e=>c(t=>({...t,...e}));async function f(){p(!0);let{accessLevel:t,...a}=i;try{await e.save("observer"===t&&!e.observer?a:i),e.onSaved()}catch(e){alert(r("".concat(n,".saveFailed"),{error:ch(e)}))}finally{p(!1)}}return(0,l.jsx)("li",{className:"px-4 py-3",children:(0,l.jsxs)("div",{className:"space-y-2",children:[(0,l.jsx)(ca,{compact:!0,label:r("".concat(n,".label")),children:(0,l.jsx)(cs,{compact:!0,value:i.label,onChange:e=>h({label:e}),placeholder:r("".concat(n,".labelPlaceholder"))})}),(0,l.jsx)(ca,{compact:!0,label:r("".concat(n,".workspace")),children:(0,l.jsx)(cs,{compact:!0,mono:!0,value:i.workspacePath,onChange:e=>h({workspacePath:e}),placeholder:"/home/user/project"})}),(0,l.jsx)(ca,{compact:!0,label:r("".concat(n,".accessLevel")),hint:e.accessHint,children:(0,l.jsx)(cl,{compact:!0,ns:n,value:i.accessLevel,onChange:e=>h({accessLevel:e}),observer:e.observer})}),(0,l.jsx)(T.pZ,{value:i.language,onChange:e=>h({language:e})}),null==(t=e.editExtra)?void 0:t.call(e,i,e=>c(t=>({...t,...e}))),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsxs)("button",{onClick:f,disabled:m||!(0,E.Z1)(i.workspacePath),className:"flex items-center gap-1 rounded bg-[var(--primary)] px-2 py-1 text-[11px] text-white disabled:opacity-50",children:[(0,l.jsx)(rP.A,{className:"h-3 w-3"})," ",r("".concat(n,".save"))]}),(0,l.jsxs)("button",{onClick:e.onCancelEdit,disabled:m,className:"flex items-center gap-1 rounded border border-[var(--border)] px-2 py-1 text-[11px]",children:[(0,l.jsx)(e0.A,{className:"h-3 w-3"})," ",r("".concat(n,".cancel"))]})]})]})})}function cg(e){let t=(0,T.kj)(),{intent:r,onClose:n,onDone:a}=e,s=rU(e=>e.activeProject),[i,c]=(0,o.useState)(null),[d,m]=(0,o.useState)(null),[p,h]=(0,o.useState)("loading"),[f,x]=(0,o.useState)(t("wx.generatingQr")),[g,v]=(0,o.useState)({workspacePath:r.workspacePath||(null==s?void 0:s.path)||"",label:r.label||"",accessLevel:r.accessLevel,language:r.language}),{workspacePath:b,label:y,accessLevel:w,language:j}=g,[k,N]=(0,o.useState)(r.skipConfig?"scan":"config"),S=(0,o.useRef)(!1),C=r.skipConfig;async function A(){if(!(0,E.Z1)(b))return void x(t("wx.pathRequired"));N("scan"),h("loading"),x(t("wx.generatingQr"));try{let{qrcodeUrl:r,sessionKey:n}=await u.FH.wechat.startLogin();if(S.current)return;if(!r){h("error"),x(t("wx.qrFailed"));return}c(n);let s=await i9.toDataURL(r,{width:256,margin:2});if(S.current)return;m(s),h("waiting"),x(t("wx.scanPrompt"));let l=await u.FH.wechat.waitLogin({sessionKey:n,workspacePath:b,label:y||void 0,accessLevel:w,language:j});if(S.current)return;if(l.connected){var e;h("success"),x(t("wx.connected",{id:null!=(e=l.accountId)?e:""})),setTimeout(a,1200)}else h("error"),x(l.message||t("wx.loginFailed"))}catch(e){if(S.current)return;h("error"),x(e instanceof Error?e.message:String(e))}}return(0,o.useEffect)(()=>()=>{S.current=!0},[]),(0,o.useEffect)(()=>{r.skipConfig&&A()},[]),(0,l.jsxs)(co,{width:"w-[400px]",title:C?t("wx.rescanBtn"):t("wx.addTitle"),onClose:n,children:["config"===k?(0,l.jsxs)("div",{className:"space-y-3",children:[(0,l.jsx)(ci,{ns:"wx",value:g,onChange:e=>v(t=>({...t,...e})),workspaceHint:t("wx.bindHint"),accessHint:t("wx.readonlyShareHint")}),(0,l.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[(0,l.jsx)("button",{onClick:n,className:"rounded border border-[var(--border)] px-3 py-1.5 text-xs",children:t("wx.cancel")}),(0,l.jsx)("button",{onClick:A,disabled:!(0,E.Z1)(b),className:"rounded bg-[var(--primary)] px-3 py-1.5 text-xs text-white disabled:opacity-50",children:t("wx.nextStep")})]})]}):(0,l.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[d?(0,l.jsx)("img",{src:d,alt:t("wx.scanTitle"),className:"rounded border border-[var(--border)]"}):(0,l.jsx)("div",{className:"flex h-64 w-64 items-center justify-center rounded border border-[var(--border)] bg-[var(--card)]",children:(0,l.jsx)(R.A,{className:"h-6 w-6 animate-spin text-[var(--muted-foreground)]"})}),(0,l.jsx)("p",{className:(0,E.cn)("text-center text-xs","success"===p&&"text-emerald-400","error"===p&&"text-red-400","success"!==p&&"error"!==p&&"text-[var(--muted-foreground)]"),children:f}),(0,l.jsxs)("p",{className:"text-[10px] text-[var(--muted-foreground)]",children:[t("wx.bindTo")," ",(0,l.jsx)("code",{className:"text-[var(--foreground)]",children:b})]}),"error"===p&&(0,l.jsx)("button",{onClick:()=>{N("config")},className:"rounded border border-[var(--border)] px-3 py-1.5 text-xs",children:t("wx.restart")})]}),i&&(0,l.jsx)("input",{type:"hidden",value:i,readOnly:!0})]})}let cv={id:"wechat",label:"channels.wechat",Icon:i5.A,Component:function(){let e=(0,T.kj)(),{lang:t}=(0,T.s9)(),{accounts:r,loading:n,reload:a}=cd("wechat",u.FH.wechat.listAccounts),[s,i]=(0,o.useState)(null);return(0,l.jsx)(cu,{ns:"wx",accounts:r,loading:n,reload:a,onAdd:()=>i({workspacePath:"",label:"",accessLevel:"readonly",language:t,skipConfig:!1}),renderRow:(t,r)=>(0,l.jsx)(cf,{...r,ns:"wx",account:t,title:t.label||t.accountId,deleteName:t.label,titleExtra:(0,l.jsx)("span",{className:"font-mono text-[10px] text-[var(--muted-foreground)]",children:t.accountId}),detail:t.workspacePath,workspaceMissing:t.workspaceMissing,accessHint:e("wx.readonlyHint"),actions:r=>(0,l.jsx)(cm,{onClick:()=>i({workspacePath:t.workspacePath,label:t.label,accessLevel:t.accessLevel,language:t.language,skipConfig:!0}),disabled:r,title:e("wx.rescan"),icon:i7.A}),save:e=>u.FH.wechat.updateAccount(t.accountId,e),setEnabled:e=>u.FH.wechat.updateAccount(t.accountId,{enabled:e}),remove:()=>u.FH.wechat.deleteAccount(t.accountId)}),children:s&&(0,l.jsx)(cg,{intent:s,onClose:()=>i(null),onDone:()=>{i(null),a()}})})}};function cb(e){let t=(0,T.kj)(),[r,n]=(0,o.useState)(""),[a,s]=(0,o.useState)("");return(0,l.jsx)(cc,{ns:"tg",width:"w-[420px]",onClose:e.onClose,onDone:e.onDone,canSubmit:!!r.trim(),create:e=>u.FH.telegram.createAccount({botToken:r,...e,allowedUsers:a||void 0}),extraFields:(0,l.jsx)(ca,{label:t("tg.allowedUsersOptional"),children:(0,l.jsx)(cs,{mono:!0,value:a,onChange:s,placeholder:t("tg.allowedUsersHint")})}),children:(0,l.jsx)(ca,{label:t("tg.tokenLabel"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:r,onChange:n,placeholder:"123456:ABC-DEF..."})})})}let cy={id:"telegram",label:"Telegram",Icon:sK.A,Component:function(){let e=(0,T.kj)(),{accounts:t,loading:r,reload:n}=cd("telegram",u.FH.telegram.listAccounts),[a,s]=(0,o.useState)(!1);return(0,l.jsx)(cu,{ns:"tg",accounts:t,loading:r,reload:n,onAdd:()=>s(!0),renderRow:(t,r)=>(0,l.jsx)(cf,{...r,ns:"tg",account:t,title:t.label||"@".concat(t.botUsername),deleteName:t.botUsername,titleExtra:t.allowedUsers&&(0,l.jsx)("span",{className:"rounded bg-blue-500/15 px-1.5 py-0.5 text-[9px] font-medium text-blue-300",children:e("tg.whitelist")}),detail:(0,l.jsxs)(l.Fragment,{children:["@",t.botUsername," → ",t.workspacePath]}),workspaceMissing:t.workspaceMissing,extraDraft:{allowedUsers:t.allowedUsers},editExtra:(t,r)=>(0,l.jsx)(ca,{compact:!0,label:e("tg.allowedUsers"),children:(0,l.jsx)(cs,{compact:!0,mono:!0,value:t.allowedUsers,onChange:e=>r({allowedUsers:e}),placeholder:"123456789,@username"})}),save:e=>u.FH.telegram.updateAccount(t.accountId,e),setEnabled:e=>u.FH.telegram.updateAccount(t.accountId,{enabled:e}),remove:()=>u.FH.telegram.deleteAccount(t.accountId)}),children:a&&(0,l.jsx)(cb,{onClose:()=>s(!1),onDone:()=>{s(!1),n()}})})}};function cw(e){let t=(0,T.kj)(),[r,n]=(0,o.useState)(!1);return(0,l.jsxs)("div",{className:"mt-1 flex items-center gap-2",children:[(0,l.jsxs)("code",{className:"rounded bg-[var(--secondary)] px-1.5 py-0.5 font-mono text-[9px] text-[var(--muted-foreground)]",children:[e.token.slice(0,12),"..."]}),(0,l.jsx)("button",{onClick:function(){navigator.clipboard.writeText(e.token),n(!0),setTimeout(()=>n(!1),2e3)},className:"text-[10px] text-[var(--primary)] hover:underline",children:t(r?"web.copied":"web.copyToken")})]})}function cj(e){let t=(0,T.kj)(),{onClose:r,onDone:n}=e,[a,s]=(0,o.useState)(null);return a?(0,l.jsxs)(co,{width:"w-[420px]",onClose:n,children:[(0,l.jsx)("h3",{className:"mb-3 text-sm font-medium text-[var(--foreground)]",children:t("web.createSuccess")}),(0,l.jsx)("p",{className:"mb-2 text-xs text-[var(--muted-foreground)]",children:t("web.tokenNotice")}),(0,l.jsxs)("div",{className:"flex items-center gap-2 rounded border border-[var(--border)] bg-[var(--card)] p-2",children:[(0,l.jsx)("code",{className:"flex-1 break-all font-mono text-xs text-[var(--foreground)]",children:a.token}),(0,l.jsx)("button",{onClick:()=>navigator.clipboard.writeText(a.token),className:"rounded p-1 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,l.jsx)(ss.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"mt-4 flex justify-end",children:(0,l.jsx)("button",{onClick:n,className:"rounded bg-[var(--primary)] px-3 py-1.5 text-xs text-white",children:t("web.done")})})]}):(0,l.jsx)(cc,{ns:"web",width:"w-[420px]",observer:!0,onClose:r,create:e=>u.FH.web.createAccount(e),onDone:e=>s({token:e.token})})}let ck={id:"web_demo",label:"Web",Icon:U.A,Component:function(){let{accounts:e,loading:t,reload:r}=cd("web",u.FH.web.listAccounts),[n,a]=(0,o.useState)(!1);return(0,l.jsx)(cu,{ns:"web",accounts:e,loading:t,reload:r,onAdd:()=>a(!0),renderRow:(e,t)=>(0,l.jsx)(cf,{...t,ns:"web",account:e,observer:!0,title:e.label||e.accountId,detail:e.workspacePath,workspaceMissing:e.workspaceMissing,footer:(0,l.jsx)(cw,{token:e.token}),save:t=>u.FH.web.updateAccount(e.accountId,t),setEnabled:t=>u.FH.web.updateAccount(e.accountId,{enabled:t}),remove:()=>u.FH.web.deleteAccount(e.accountId)}),children:n&&(0,l.jsx)(cj,{onClose:()=>a(!1),onDone:()=>{a(!1),r()}})})}};var cN=r(74538);let cS="https://github.com/turmind/halo-agent/releases";function cC(e){var t;let r=(0,T.kj)(),{account:n,online:a}=e,[s,i]=(0,o.useState)(!1);async function c(){if(await (0,E.fN)(r("nodes.confirmDelete",{name:n.name}))){i(!0);try{await u.FH.nodes.deleteAccount(n.accountId),e.onChanged()}catch(e){alert(r("nodes.deleteFailed",{error:e instanceof Error?e.message:String(e)}))}finally{i(!1)}}}return(0,l.jsxs)("li",{className:"flex items-center gap-3 px-4 py-3",children:[(0,l.jsx)("div",{className:(0,E.cn)("h-2 w-2 rounded-full",a?"bg-emerald-500":"bg-[var(--muted-foreground)]"),title:a?r("nodes.online"):r("nodes.offline")}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)]",children:n.name}),(0,l.jsxs)("p",{className:"mt-0.5 truncate font-mono text-[10px] text-[var(--muted-foreground)]",children:[n.workspacePath,n.workspaceMissing&&(0,l.jsx)("span",{className:"ml-1 text-red-400",children:r("nodes.pathMissing")})]}),(0,l.jsx)("p",{className:"mt-0.5 truncate text-[10px] text-[var(--muted-foreground)]",children:a?[null!=(t=a.root)?t:r("nodes.wholeMachine"),a.shell?r("nodes.shellOn"):r("nodes.shellOff"),a.os].join(" \xb7 "):r("nodes.offline")}),(0,l.jsx)(cw,{token:n.token})]}),(0,l.jsx)(cm,{onClick:c,disabled:s,title:r("nodes.delete"),icon:eq.A,danger:!0})]})}function cA(e){let t=(0,T.kj)(),{onClose:r,onDone:n}=e,a=rU(e=>e.activeProject),[s,i]=(0,o.useState)((null==a?void 0:a.path)||""),[c,d]=(0,o.useState)(""),[m,p]=(0,o.useState)(!1),[h,f]=(0,o.useState)(""),[x,g]=(0,o.useState)(null),[v,b]=(0,o.useState)(null);async function y(){f(""),p(!0);try{g((await u.FH.nodes.createAccount({workspacePath:s,name:c})).token)}catch(e){f(e instanceof Error?e.message:String(e))}finally{p(!1)}}if((0,o.useEffect)(()=>{u.FH.health().then(e=>b("string"==typeof(null==e?void 0:e.version)?e.version:null)).catch(()=>b(null))},[]),x){let e=/^\d+\.\d+\.\d+$/.test(null!=v?v:"")?"".concat(cS,"/download/v").concat(v):"".concat(cS,"/latest/download"),r="--server ".concat(location.origin," --root <folder>"),a="curl -fsSL ".concat(e,'/install.sh | sh\nPATH="$HOME/.local/bin:$PATH" HALO_NODE_TOKEN=').concat(x," halo-node ").concat(r),s="HALO_NODE_TOKEN=".concat(x," halo node ").concat(r);return(0,l.jsxs)(co,{width:"w-[480px]",onClose:n,children:[(0,l.jsx)("h3",{className:"mb-3 text-sm font-medium text-[var(--foreground)]",children:t("nodes.createSuccess")}),(0,l.jsx)("p",{className:"mb-2 text-xs text-[var(--muted-foreground)]",children:t("nodes.commandNotice")}),[[t("nodes.commandLinux"),a],[t("nodes.commandOther"),s]].map(e=>{let[t,r]=e;return(0,l.jsxs)("div",{className:"mt-2",children:[(0,l.jsx)("p",{className:"mb-1 text-[10px] font-medium text-[var(--muted-foreground)]",children:t}),(0,l.jsxs)("div",{className:"flex items-start gap-2 rounded border border-[var(--border)] bg-[var(--card)] p-2",children:[(0,l.jsx)("code",{className:"min-w-0 flex-1 whitespace-pre-wrap break-words font-mono text-xs text-[var(--foreground)]",children:r}),(0,l.jsx)("button",{onClick:()=>navigator.clipboard.writeText(r),className:"rounded p-1 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,l.jsx)(ss.A,{className:"h-3.5 w-3.5"})})]})]},t)}),(0,l.jsxs)("p",{className:"mt-2 text-[10px] text-[var(--muted-foreground)]",children:[t("nodes.commandHint")," ",(0,l.jsx)("a",{href:"https://github.com/turmind/halo-agent/blob/main/.halo/docs/guide/node.md",target:"_blank",rel:"noreferrer",className:"whitespace-nowrap text-[var(--primary)] hover:underline",children:t("nodes.guide")})]}),(0,l.jsx)("div",{className:"mt-4 flex justify-end",children:(0,l.jsx)("button",{onClick:n,className:"rounded bg-[var(--primary)] px-3 py-1.5 text-xs text-white",children:t("nodes.done")})})]})}return(0,l.jsx)(co,{width:"w-[420px]",title:t("nodes.addTitle"),onClose:r,children:(0,l.jsxs)("div",{className:"space-y-3",children:[(0,l.jsx)(ca,{label:t("nodes.bindWorkspace"),children:(0,l.jsx)(cs,{mono:!0,value:s,onChange:i,placeholder:"/home/user/project"})}),(0,l.jsx)(ca,{label:t("nodes.name"),hint:t("nodes.nameHint"),children:(0,l.jsx)(cs,{mono:!0,value:c,onChange:d,placeholder:"mbp"})}),h&&(0,l.jsx)("p",{className:"text-xs text-red-400",children:h}),(0,l.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[(0,l.jsx)("button",{onClick:r,className:"rounded border border-[var(--border)] px-3 py-1.5 text-xs",children:t("nodes.cancel")}),(0,l.jsxs)("button",{onClick:y,disabled:m||!c||!(0,E.Z1)(s),className:"flex items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1.5 text-xs text-white disabled:opacity-50",children:[m&&(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),t("nodes.addBtn")]})]})]})})}let cI={id:"nodes",label:"channels.nodes",Icon:cN.A,Component:function(){let{accounts:e,loading:t,reload:r}=cd("nodes",u.FH.nodes.listAccounts),[n,a]=(0,o.useState)(null),[s,i]=(0,o.useState)(!1),c=null!=n?n:new Map(e.flatMap(e=>e.online?[[e.accountId,e.online]]:[]));return(0,o.useEffect)(()=>{let e=p.on("nodes:changed",e=>{a(new Map(e.online.map(e=>{let{accountId:t,...r}=e;return[t,r]})))}),t=h(p,()=>{a(null),r()});return()=>{e(),t()}},[r]),(0,l.jsx)(cu,{ns:"nodes",accounts:e,loading:t,reload:r,onAdd:()=>i(!0),renderRow:e=>(0,l.jsx)(cC,{account:e,online:c.get(e.accountId),onChanged:r}),children:s&&(0,l.jsx)(cA,{onClose:()=>i(!1),onDone:()=>{i(!1),r()}})})}};function cE(e){let t=(0,T.kj)(),[r,n]=(0,o.useState)(""),[a,s]=(0,o.useState)("");return(0,l.jsxs)(cc,{ns:"slack",width:"w-[480px]",onClose:e.onClose,onDone:e.onDone,canSubmit:!!r.trim()&&!!a.trim(),create:e=>u.FH.slack.createAccount({botToken:r,appToken:a,...e}),children:[(0,l.jsx)(ca,{label:t("slack.botTokenLabel"),hint:t("slack.botTokenHint"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:r,onChange:n,placeholder:"xoxb-..."})}),(0,l.jsx)(ca,{label:t("slack.appTokenLabel"),hint:t("slack.appTokenHint"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:a,onChange:s,placeholder:"xapp-..."})})]})}let cT={id:"slack",label:"Slack",Icon:Y.A,Component:function(){let{accounts:e,loading:t,reload:r}=cd("slack",u.FH.slack.listAccounts),[n,a]=(0,o.useState)(!1);return(0,l.jsx)(cu,{ns:"slack",accounts:e,loading:t,reload:r,onAdd:()=>a(!0),renderRow:(e,t)=>(0,l.jsx)(cf,{...t,ns:"slack",account:e,title:e.label||e.teamId,deleteName:e.teamId,detail:(0,l.jsxs)(l.Fragment,{children:["team:",e.teamId," bot:",e.botUserId," → ",e.workspacePath]}),workspaceMissing:e.workspaceMissing,save:t=>u.FH.slack.updateAccount(e.accountId,t),setEnabled:t=>u.FH.slack.updateAccount(e.accountId,{enabled:t}),remove:()=>u.FH.slack.deleteAccount(e.accountId)}),children:n&&(0,l.jsx)(cE,{onClose:()=>a(!1),onDone:()=>{a(!1),r()}})})}};function c_(e){let t=(0,T.kj)(),[r,n]=(0,o.useState)(""),[a,s]=(0,o.useState)(""),[i,c]=(0,o.useState)(""),[d,m]=(0,o.useState)("");return(0,l.jsxs)(cc,{ns:"feishu",width:"w-[480px]",onClose:e.onClose,onDone:e.onDone,canSubmit:!!r.trim()&&!!a.trim(),create:e=>u.FH.feishu.createAccount({appId:r,appSecret:a,verificationToken:i||void 0,encryptKey:d||void 0,...e}),children:[(0,l.jsx)(ca,{label:t("feishu.appIdLabel"),children:(0,l.jsx)(cs,{mono:!0,value:r,onChange:n,placeholder:"cli_xxxxxxx"})}),(0,l.jsx)(ca,{label:t("feishu.appSecretLabel"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:a,onChange:s,placeholder:"****************"})}),(0,l.jsx)(ca,{label:t("feishu.verificationTokenLabel"),children:(0,l.jsx)(cs,{mono:!0,value:i,onChange:c,placeholder:""})}),(0,l.jsx)(ca,{label:t("feishu.encryptKeyLabel"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:d,onChange:m,placeholder:""})})]})}function cP(e){let t=(0,T.kj)(),[r,n]=(0,o.useState)(""),[a,s]=(0,o.useState)("");return(0,l.jsxs)(cc,{ns:"wecom",width:"w-[480px]",onClose:e.onClose,onDone:e.onDone,canSubmit:!!r.trim()&&!!a.trim(),create:e=>u.FH.wecom.createAccount({botId:r,secret:a,...e}),children:[(0,l.jsx)(ca,{label:t("wecom.botIdLabel"),children:(0,l.jsx)(cs,{mono:!0,value:r,onChange:n,placeholder:"wecombot_xxxxxxx"})}),(0,l.jsx)(ca,{label:t("wecom.secretLabel"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:a,onChange:s,placeholder:"****************"})})]})}let cM=[cv,cy,ck,cI,cT,{id:"feishu",label:"Feishu",Icon:r(61557).A,Component:function(){let{accounts:e,loading:t,reload:r}=cd("feishu",u.FH.feishu.listAccounts),[n,a]=(0,o.useState)(!1);return(0,l.jsx)(cu,{ns:"feishu",accounts:e,loading:t,reload:r,onAdd:()=>a(!0),renderRow:(e,t)=>(0,l.jsx)(cf,{...t,ns:"feishu",account:e,title:e.label||e.appId,deleteName:e.appId,detail:(0,l.jsxs)(l.Fragment,{children:["app:",e.appId," bot:",e.botOpenId," → ",e.workspacePath]}),workspaceMissing:e.workspaceMissing,save:t=>u.FH.feishu.updateAccount(e.accountId,t),setEnabled:t=>u.FH.feishu.updateAccount(e.accountId,{enabled:t}),remove:()=>u.FH.feishu.deleteAccount(e.accountId)}),children:n&&(0,l.jsx)(c_,{onClose:()=>a(!1),onDone:()=>{a(!1),r()}})})}},{id:"wecom",label:"WeCom",Icon:r(60490).A,Component:function(){let{accounts:e,loading:t,reload:r}=cd("wecom",u.FH.wecom.listAccounts),[n,a]=(0,o.useState)(!1);return(0,l.jsx)(cu,{ns:"wecom",accounts:e,loading:t,reload:r,onAdd:()=>a(!0),renderRow:(e,t)=>(0,l.jsx)(cf,{...t,ns:"wecom",account:e,title:e.label||e.botId,deleteName:e.botId,detail:(0,l.jsxs)(l.Fragment,{children:["bot:",e.botId," → ",e.workspacePath]}),workspaceMissing:e.workspaceMissing,save:t=>u.FH.wecom.updateAccount(e.accountId,t),setEnabled:t=>u.FH.wecom.updateAccount(e.accountId,{enabled:t}),remove:()=>u.FH.wecom.deleteAccount(e.accountId)}),children:n&&(0,l.jsx)(cP,{onClose:()=>a(!1),onDone:()=>{a(!1),r()}})})}}],cF="halo_channel_active",cD=new Set(cM.map(e=>e.id)),cL=null!=(s=null==(a=cM[0])?void 0:a.id)?s:"",cR=(0,b.v)(e=>({active:function(){try{let e=localStorage.getItem(cF);if(e&&cD.has(e))return e}catch(e){}return cL}(),setActive(t){if(cD.has(t)){try{localStorage.setItem(cF,t)}catch(e){}e({active:t})}}}));function cH(){let e=(0,T.kj)(),t=cR(e=>e.active),r=cR(e=>e.setActive);return(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"flex h-10 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(i5.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Channels"}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:()=>i6(),title:"Refresh",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors",children:(0,l.jsx)(aD.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto py-1",children:cM.map(n=>{if(!1===n.enabled)return null;let a=n.Icon,s=e(n.label),o=s===n.label?n.label:s;return(0,l.jsxs)("button",{onClick:()=>r(n.id),className:(0,E.cn)("flex w-full items-center gap-2 px-3 py-2 text-xs transition-colors",t===n.id?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/50 hover:text-[var(--foreground)]"),children:[(0,l.jsx)(a,{className:"h-3.5 w-3.5"}),o]},n.id)})})]})}function cz(){let e=cR(e=>e.active),t=cM.find(t=>t.id===e);if(!t)return null;let r=t.Component;return(0,l.jsx)(r,{})}var cO=r(2462),cU=r(26411);let cB=(0,b.v)(e=>({selectedId:null,filter:"all",refreshTick:0,setSelectedId:t=>e({selectedId:t}),setFilter:t=>e({filter:t}),bumpRefresh:()=>e(e=>({refreshTick:e.refreshTick+1}))}));function cW(e){var t;let{status:r}=e,n=null!=(t=cK[r])?t:"bg-[var(--accent)] text-[var(--foreground)]";return(0,l.jsx)("span",{className:(0,E.cn)("rounded px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide",n),children:r.replace("_"," ")})}let cK={pending:"bg-[var(--accent)] text-[var(--foreground)]",running:"bg-blue-700 text-blue-100",awaiting_review:"bg-amber-600 text-amber-50",approved:"bg-emerald-700 text-emerald-50",applied:"bg-emerald-800 text-emerald-100",skipped:"bg-[var(--accent)] text-[var(--foreground)]",rejected:"bg-red-700 text-red-50",failed:"bg-red-800 text-red-100",timeout:"bg-orange-700 text-orange-100",rolled_back:"bg-violet-900 text-violet-200"},cG={owner:"turmind",repo:"halo-agent"},cq=e=>Array.from(new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e),e=>e.segment),c$=/^(?:(?:https?|ssh|git):\/\/(?:[^@/\s]+@)?github\.com(?::\d+)?\/|[^@/\s]+@github\.com:)([\w.-]+)\/([\w.-]+?)(?:\.git)?\/?$/i;function cY(e,t){var r;let n=t.files.slice(0,20).map(e=>"`".concat(e,"`")).join(", "),a=t.files.length-20,s=t.files.length?a>0?"".concat(n," …and ").concat(a," more"):n:"—",l=t.score?"avg ".concat(t.score.avg," \xb7 confidence ").concat(t.score.confidence):"—";return[e,"\n---","- Run: `".concat(t.runId,"`"),"- Files: ".concat(s),"- Score: ".concat(l),"- Halo: ".concat(null!=(r=t.haloVersion)?r:"unknown"),""].join("\n")}function cJ(){let e=(0,T.kj)(),t=cB(e=>e.selectedId);return t?(0,l.jsx)(cV,{id:t}):(0,l.jsx)(cZ,{label:e("evolution.list.pickRun")})}function cZ(e){let{label:t}=e;return(0,l.jsx)("div",{className:"flex h-full items-center justify-center p-6 text-sm text-[var(--muted-foreground)]",children:t})}function cV(e){var t,r,n,a;let{id:s}=e,i=(0,T.kj)(),c=cB(e=>e.refreshTick),d=cB(e=>e.setSelectedId),[m,h]=(0,o.useState)(null),[f,x]=(0,o.useState)(!0),[g,v]=(0,o.useState)(null),[b,y]=(0,o.useState)(!1),[w,j]=(0,o.useState)(""),[k,N]=(0,o.useState)(""),[S,C]=(0,o.useState)(!1),[A,I]=(0,o.useState)(!1),[_,P]=(0,o.useState)(!1),[M,F]=(0,o.useState)(""),D=(0,o.useCallback)(async()=>{x(!0);try{let e=await u.FH.evolution.getRun(s);h(e),v(null)}catch(e){v(e instanceof Error?e.message:String(e))}finally{x(!1)}},[s]);if((0,o.useEffect)(()=>{h(null),C(!1),I(!1),j(""),N(""),D()},[s,D]),(0,o.useEffect)(()=>{0!==c&&D()},[c,D]),(0,o.useEffect)(()=>p.on("evolution:run_changed",e=>{e.id===s&&("deleted"===e.kind?d(null):D())}),[s,D,d]),f&&!m)return(0,l.jsx)(cZ,{label:i("evolution.list.loading")});if(g)return(0,l.jsx)(cZ,{label:i("cron.error",{error:g})});if(!m)return(0,l.jsx)(cZ,{label:i("evolution.list.noRun")});let{run:L,autoApply:R,observation:H,rollback:z,publishedFiles:O,patchMd:U,scoreJson:B,skipReasonMd:W,snapshotSummary:K,wrapperLog:G,subCliLog:q}=m,$="awaiting_review"===L.status,Y="approved"===L.status&&("failed"===L.applyStatus||"timeout"===L.applyStatus),J="auto"===L.applyApprovedBy&&(null==R?void 0:R.auto)===!0,Z=J&&$&&("failed"===L.applyStatus||"timeout"===L.applyStatus),V=async()=>{y(!0);try{await u.FH.evolution.approve(s,w.trim()||void 0),C(!1),j(""),await D()}catch(e){alert(e instanceof Error?e.message:String(e))}finally{y(!1)}},X=async()=>{if(await (0,E.fN)(i("evolution.action.confirmReject"))){y(!0);try{await u.FH.evolution.reject(s),await D()}catch(e){alert(e instanceof Error?e.message:String(e))}finally{y(!1)}}},Q=async()=>{let e=k.trim();if(e){y(!0);try{await u.FH.evolution.addHint(s,e),N(""),I(!1),await D()}catch(e){alert(e instanceof Error?e.message:String(e))}finally{y(!1)}}},ee=async()=>{let e=M.trim();if(!e)return void alert(i("evolution.action.retryNeedsHint"));y(!0);try{await u.FH.evolution.retry(s,e),F(""),P(!1),await D()}catch(e){alert(e instanceof Error?e.message:String(e))}finally{y(!1)}},et=async()=>{let e=L.applyId;if(e&&await (0,E.fN)(i("evolution.rollback.confirm"))){y(!0);try{var t,r;let n=await u.FH.evolution.rollback(e);if(!n.ok&&"conflict"===n.error){let r=(null!=(t=n.conflicts)?t:[]).map(e=>"• ".concat(e.rel," — ").concat(i("evolution.rollback.state.".concat(e.reason)))).join("\n");if(!await (0,E.fN)(i("evolution.rollback.confirmForce",{files:r})))return;n=await u.FH.evolution.rollback(e,!0)}n.ok?n.keptDirs.length>0&&alert(i("evolution.rollback.keptDirs",{dirs:n.keptDirs.map(e=>"• ".concat(e)).join("\n")})):alert("backup_mismatch"===n.error?i("evolution.rollback.backupMismatch",{files:(null!=(r=n.files)?r:[]).join("\n")}):i("evolution.rollback.failed",{error:n.error})),await D()}catch(e){alert(e instanceof Error?e.message:String(e))}finally{y(!1)}}},er=async()=>{if(await (0,E.fN)(i("evolution.action.confirmDelete"))){y(!0);try{await u.FH.evolution.delete(s),d(null)}catch(e){alert(e instanceof Error?e.message:String(e)),y(!1)}}};return(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(cW,{status:L.status}),(0,l.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:L.triggerKind}),(0,l.jsx)("span",{className:"ml-auto text-xs text-[var(--muted-foreground)]",children:L.id}),"pending"!==L.status&&"running"!==L.status&&"approved"!==L.status&&(0,l.jsx)("button",{disabled:b,onClick:()=>{er()},className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-red-700/80 hover:text-white disabled:opacity-50",title:i("evolution.action.delete"),children:(0,l.jsx)(eq.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsxs)("div",{className:"mt-2 text-xs text-[var(--muted-foreground)]",children:[i("evolution.detail.workspace")," ",(0,l.jsx)("span",{className:"font-mono",children:L.workspacePath})]}),L.userHint&&(0,l.jsxs)("div",{className:"mt-2 rounded bg-[var(--accent)] p-2 text-xs",children:[(0,l.jsx)("div",{className:"font-medium text-[var(--foreground)]",children:i("evolution.detail.hint")}),(0,l.jsx)("div",{className:"mt-1 whitespace-pre-wrap text-[var(--muted-foreground)]",children:L.userHint})]}),L.failureReason&&(0,l.jsx)("div",{className:"mt-2 rounded bg-red-900/30 p-2 text-xs text-red-200",children:i("evolution.detail.failure",{reason:L.failureReason})}),"skipped"===L.status&&(0,l.jsx)("div",{className:"mt-2 rounded bg-[var(--accent)] p-2 text-xs text-[var(--muted-foreground)]",children:i("evolution.detail.skipped")}),(Y||Z)&&(0,l.jsxs)("div",{className:"mt-2 rounded bg-red-900/30 p-2 text-xs text-red-200",children:[(0,l.jsx)("div",{className:"font-medium",children:i(Z?"evolution.auto.failed":"evolution.detail.applyFailed")}),L.applyFailureReason&&(0,l.jsx)("div",{className:"mt-1 whitespace-pre-wrap",children:L.applyFailureReason})]}),J&&("approved"===L.status||"applied"===L.status||"rolled_back"===L.status)&&R.score&&(0,l.jsxs)("div",{className:"mt-2 rounded bg-sky-900/30 p-2 text-xs text-sky-100",children:[(0,l.jsx)("div",{className:"font-medium",children:i("evolution.auto.applied",{level:R.level,avg:R.score.avg,threshold:R.threshold,confidence:R.score.confidence})}),(0,l.jsxs)("div",{className:"mt-1",children:[i("evolution.auto.files")," ",(0,l.jsx)("span",{className:"font-mono",children:(null!=O?O:R.files.map(e=>e.rel)).join(", ")})]})]}),R&&!R.auto&&R.reason&&(0,l.jsx)("div",{className:"mt-2 rounded bg-[var(--accent)] p-2 text-xs text-[var(--muted-foreground)]",children:i("evolution.auto.notApplied",{level:R.level,reason:function(e,t){var r,n,a,s,l,o,i,c,d,u;let m=null!=(l=t.reason)?l:"",p=m.indexOf(":"),h=p<0?m:m.slice(0,p),f="evolution.auto.reason.".concat("source_access"!==h||t.sourceAccess?h:"source_access_unrecorded"),x=e(f,{detail:p<0?"":m.slice(p+1),threshold:t.threshold,access:null!=(o=t.sourceAccess)?o:"—",avg:null!=(i=null==(r=t.score)?void 0:r.avg)?i:"—",confidence:null!=(c=null==(n=t.score)?void 0:n.confidence)?c:"—",behavior:null!=(d=null==(a=t.score)?void 0:a.behavior)?d:"—",lint:null!=(u=null==(s=t.score)?void 0:s.lint)?u:"—"});return x===f?m:x}(i,R)})})]}),$&&(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-b border-[var(--border)] bg-amber-950/20 px-4 py-2",children:[(0,l.jsxs)("button",{disabled:b,onClick:()=>C(e=>!e),className:"flex items-center gap-1 rounded bg-emerald-700 px-2 py-1 text-xs text-emerald-50 hover:bg-emerald-600 disabled:opacity-50",children:[(0,l.jsx)(rP.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.approve")]}),(0,l.jsxs)("button",{disabled:b,onClick:()=>{X()},className:"flex items-center gap-1 rounded bg-red-700 px-2 py-1 text-xs text-red-50 hover:bg-red-600 disabled:opacity-50",children:[(0,l.jsx)(e0.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.reject")]}),(0,l.jsxs)("button",{disabled:b,onClick:()=>I(e=>!e),className:"flex items-center gap-1 rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:bg-[var(--accent)]/80 disabled:opacity-50",children:[(0,l.jsx)(cO.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.addHint")]}),(0,l.jsxs)("button",{disabled:b,onClick:()=>P(e=>!e),className:"flex items-center gap-1 rounded bg-sky-700 px-2 py-1 text-xs text-sky-50 hover:bg-sky-600 disabled:opacity-50",title:i("evolution.retry.tooltip"),children:[(0,l.jsx)(aD.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.retry")]})]}),!$&&("failed"===L.status||"timeout"===L.status||"skipped"===L.status||"rejected"===L.status||"rolled_back"===L.status||Y)&&(0,l.jsx)("div",{className:"flex flex-wrap items-center gap-2 border-b border-[var(--border)] bg-sky-950/20 px-4 py-2",children:(0,l.jsxs)("button",{disabled:b,onClick:()=>P(e=>!e),className:"flex items-center gap-1 rounded bg-sky-700 px-2 py-1 text-xs text-sky-50 hover:bg-sky-600 disabled:opacity-50",title:i("evolution.retry.tooltip"),children:[(0,l.jsx)(aD.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.retryWithHint")]})}),"applied"===L.status&&z&&(0,l.jsx)("div",{className:"flex flex-wrap items-center gap-2 border-b border-[var(--border)] px-4 py-2",children:z.available?(0,l.jsxs)("button",{disabled:b,onClick:()=>{et()},className:"flex items-center gap-1 rounded bg-violet-800 px-2 py-1 text-xs text-violet-50 hover:bg-violet-700 disabled:opacity-50",children:[(0,l.jsx)(cU.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.rollback")]}):(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:i("evolution.rollback.unavailable")})}),_&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)] bg-sky-950/20 px-4 py-2",children:[(0,l.jsx)("div",{className:"text-xs text-[var(--muted-foreground)]",children:i("evolution.retry.title")}),(0,l.jsx)("textarea",{value:M,onChange:e=>F(e.target.value),rows:2,className:"mt-1 w-full rounded border border-[var(--border)] bg-[var(--background)] p-2 text-xs",placeholder:i("evolution.retry.placeholder"),autoFocus:!0}),(0,l.jsxs)("div",{className:"mt-1 flex gap-2",children:[(0,l.jsx)("button",{disabled:b||!M.trim(),onClick:()=>{ee()},className:"rounded bg-sky-700 px-2 py-1 text-xs text-sky-50 hover:bg-sky-600 disabled:opacity-50",children:i("evolution.action.confirmRetry")}),(0,l.jsx)("button",{disabled:b,onClick:()=>{P(!1),F("")},className:"rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:bg-[var(--accent)]/80 disabled:opacity-50",children:i("evolution.action.cancel")})]})]}),$&&S&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)] bg-emerald-950/20 px-4 py-2",children:[(0,l.jsx)("div",{className:"text-xs text-[var(--muted-foreground)]",children:i("evolution.approve.title")}),(0,l.jsx)("textarea",{value:w,onChange:e=>j(e.target.value),rows:2,className:"mt-1 w-full rounded border border-[var(--border)] bg-[var(--background)] p-2 text-xs",placeholder:i("evolution.approve.placeholder")}),(0,l.jsxs)("div",{className:"mt-1 flex gap-2",children:[(0,l.jsx)("button",{disabled:b,onClick:()=>{V()},className:"rounded bg-emerald-700 px-2 py-1 text-xs text-emerald-50 hover:bg-emerald-600 disabled:opacity-50",children:i("evolution.action.confirmApprove")}),(0,l.jsx)("button",{disabled:b,onClick:()=>{C(!1),j("")},className:"rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:bg-[var(--accent)]/80 disabled:opacity-50",children:i("evolution.action.cancel")})]})]}),$&&A&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)] bg-[var(--background)]/40 px-4 py-2",children:[(0,l.jsx)("div",{className:"text-xs text-[var(--muted-foreground)]",children:i("evolution.hint.title")}),(0,l.jsx)("textarea",{value:k,onChange:e=>N(e.target.value),rows:2,className:"mt-1 w-full rounded border border-[var(--border)] bg-[var(--background)] p-2 text-xs",placeholder:i("evolution.hint.placeholder")}),(0,l.jsxs)("div",{className:"mt-1 flex gap-2",children:[(0,l.jsx)("button",{disabled:b||!k.trim(),onClick:()=>{Q()},className:"rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:bg-[var(--accent)]/80 disabled:opacity-50",children:i("evolution.action.add")}),(0,l.jsx)("button",{disabled:b,onClick:()=>{I(!1),N("")},className:"rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:bg-[var(--accent)]/80 disabled:opacity-50",children:i("evolution.action.cancel")})]})]}),B&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsx)("div",{className:"mb-2 text-sm font-medium",children:i("evolution.score.title")}),(0,l.jsxs)("div",{className:"grid grid-cols-4 gap-3 text-xs",children:[(0,l.jsx)(c1,{label:i("evolution.score.lint"),value:B.lint}),(0,l.jsx)(c1,{label:i("evolution.score.behavior"),value:B.behavior}),(0,l.jsx)(c1,{label:i("evolution.score.scope"),value:B.scope}),(0,l.jsx)(c1,{label:i("evolution.score.avg"),value:B.avg,highlight:!0})]}),(0,l.jsxs)("div",{className:"mt-2 flex items-center gap-2 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{children:i("evolution.score.confidence")}),(0,l.jsx)("span",{className:"font-medium text-[var(--foreground)]",children:null!=(t=B.confidence)?t:"—"})]}),"string"==typeof B.notes&&(0,l.jsx)("div",{className:"mt-2 whitespace-pre-wrap rounded bg-[var(--accent)] p-2 text-xs text-[var(--foreground)]",children:B.notes})]}),K&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)] px-4 py-3 text-xs",children:[(0,l.jsx)("div",{className:"mb-1 font-medium",children:i("evolution.snapshot.title",{n:null!=(r=K.messageCount)?r:0})}),K.firstUser&&(0,l.jsxs)("div",{className:"mb-1",children:[(0,l.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[i("evolution.snapshot.firstUser")," "]}),(0,l.jsx)("span",{className:"line-clamp-2 whitespace-pre-wrap",children:K.firstUser})]}),K.firstAssistant&&(0,l.jsxs)("div",{children:[(0,l.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[i("evolution.snapshot.firstAssistant")," "]}),(0,l.jsx)("span",{className:"line-clamp-3 whitespace-pre-wrap",children:(n=K.firstAssistant,a=400,n.length<=400?n:n.slice(0,a)+"…")})]})]}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto px-4 py-3",children:[H&&(0,l.jsx)(cQ,{run:L,observation:H,autoApply:R,publishedFiles:O,scoreJson:B}),W&&(0,l.jsxs)("div",{className:"mb-4",children:[(0,l.jsx)("div",{className:"mb-2 text-sm font-medium",children:i("evolution.skip.title")}),(0,l.jsx)("pre",{className:"whitespace-pre-wrap rounded border border-[var(--border)]/40 bg-[var(--secondary)]/40 p-3 text-xs leading-relaxed",children:W})]}),(0,l.jsx)("div",{className:"mb-2 text-sm font-medium",children:i("evolution.patch.title")}),U?(0,l.jsx)("pre",{className:"whitespace-pre-wrap rounded bg-[var(--accent)] p-3 text-xs leading-relaxed",children:U}):(0,l.jsx)("div",{className:"text-xs italic text-[var(--muted-foreground)]",children:i("evolution.patch.empty")}),(G||q)&&(0,l.jsxs)("div",{className:"mt-6 space-y-4 border-t border-[var(--border)] pt-4",children:[(0,l.jsx)("div",{className:"text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:i("evolution.logs.title")}),G&&(0,l.jsx)(c0,{title:i("evolution.logs.wrapper"),body:G}),q&&(0,l.jsx)(c0,{title:i("evolution.logs.subCli"),body:q})]})]})]})}let cX=null;function cQ(e){var t;let{run:r,observation:n,autoApply:a,publishedFiles:s,scoreJson:i}=e,c=(0,T.kj)(),[d,m]=(0,o.useState)(null),[p,h]=(0,o.useState)(null);(0,o.useEffect)(()=>{let e=!0;return(null!=cX||(cX=u.FH.health().then(e=>"string"==typeof(null==e?void 0:e.version)?e.version:null).catch(()=>null)),cX).then(t=>{e&&m(t)}),u.FH.git.remotes(r.workspacePath).then(t=>{let r=t.remotes.find(e=>"origin"===e.name);e&&h(r?function(e){let t=c$.exec(e.trim());return t?{owner:t[1],repo:t[2]}:null}(r.url):null)}).catch(()=>{e&&h(null)}),()=>{e=!1}},[r.workspacePath]);let f=null!=(t=null==a?void 0:a.score)?t:"number"==typeof(null==i?void 0:i.avg)&&"string"==typeof i.confidence?{avg:i.avg,confidence:i.confidence}:null,x=[...p?[{label:c("evolution.observation.issueWorkspace",{repo:"".concat(p.owner,"/").concat(p.repo)}),repo:p}]:[],{label:c("evolution.observation.issueHalo",{repo:"".concat(cG.owner,"/").concat(cG.repo)}),repo:cG}];return(0,l.jsxs)("div",{className:"mb-4 rounded border border-amber-700/50 bg-amber-950/20 p-3",children:[(0,l.jsx)("div",{className:"mb-2 text-sm font-medium",children:c("evolution.observation.title")}),(0,l.jsx)("pre",{className:"whitespace-pre-wrap text-xs leading-relaxed",children:n}),(0,l.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2 text-xs",children:[(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:c("evolution.observation.issue")}),x.map(e=>{var t;return(0,l.jsx)("a",{href:function(e,t){let r="https://github.com/".concat(e.owner,"/").concat(e.repo,"/issues/new?title=").concat(encodeURIComponent(function(e){var t;let r=null!=(t=e.split(/\r?\n/).map(e=>e.trim().replace(/^(?:#+|>|[-*+]|\d+[.)])\s+/,"").trim()).find(Boolean))?t:"",n=cq(r);return"[evo] ".concat(n.length>80?"".concat(n.slice(0,80).join(""),"…"):r)}(t.observation)),"&body="),n=r+encodeURIComponent(cY(t.observation,t));if(n.length<=8e3)return n;let a=cq(t.observation),s=e=>r+encodeURIComponent(cY(a.slice(0,e).join("").trimEnd()+t.truncatedNote,t)),l=0,o=a.length-1;for(;l<o;){let e=Math.ceil((l+o)/2);s(e).length<=8e3?l=e:o=e-1}return s(l)}(e.repo,{observation:n,runId:r.id,files:null!=(t=null!=s?s:null==a?void 0:a.files.map(e=>e.rel))?t:[],score:f,haloVersion:d,truncatedNote:c("evolution.observation.truncated",{id:r.id})}),target:"_blank",rel:"noopener noreferrer",className:"rounded bg-[var(--accent)] px-2 py-0.5 text-[var(--foreground)] hover:bg-[var(--accent)]/80",children:e.label},e.label)})]}),(0,l.jsx)("div",{className:"mt-1 text-[10px] text-[var(--muted-foreground)]",children:c("evolution.observation.privacy")})]})}function c0(e){let{title:t,body:r}=e,[n,a]=(0,o.useState)(r.length<4e3);return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{type:"button",className:"flex items-center gap-2 text-sm font-medium text-[var(--foreground)] hover:text-[var(--primary)]",onClick:()=>a(e=>!e),children:[(0,l.jsx)("span",{children:n?"▼":"▶"}),(0,l.jsx)("span",{children:t}),(0,l.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:["(",(r.length/1024).toFixed(1)," KB)"]})]}),n&&(0,l.jsx)("pre",{className:"mt-2 whitespace-pre-wrap break-words rounded border border-[var(--border)]/40 bg-[var(--background)]/40 p-3 font-mono text-[11px] leading-relaxed",children:r})]})}function c1(e){let{label:t,value:r,highlight:n}=e;return(0,l.jsxs)("div",{className:(0,E.cn)("rounded p-2",n?"bg-[var(--primary)]/10":"bg-[var(--accent)]"),children:[(0,l.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-[var(--muted-foreground)]",children:t}),(0,l.jsx)("div",{className:(0,E.cn)("text-lg font-medium",n&&"text-[var(--primary)]"),children:"number"==typeof r?r:"—"})]})}var c3=r(32305);let c2=["all","awaiting_review","pending","running","approved","applied","skipped","rejected","failed","timeout","rolled_back","auto","observation","archived"];function c5(){let e=(0,T.kj)(),t=cB(e=>e.filter),r=cB(e=>e.setFilter),n=cB(e=>e.selectedId),a=cB(e=>e.setSelectedId),s=cB(e=>e.bumpRefresh),[i,c]=(0,o.useState)([]),[d,m]=(0,o.useState)(!0),[h,f]=(0,o.useState)(null),[x,g]=(0,o.useState)(!1),[v,b]=(0,o.useState)(null),[y,w]=(0,o.useState)(!1),j=(0,o.useRef)(0);(0,o.useEffect)(()=>{j.current=i.length,i.length>=300&&b(null)},[i.length]);let k=(0,o.useCallback)(async()=>{let e=Math.min(300,Math.max(20,j.current));try{let r=await u.FH.evolution.listRuns({archived:"archived"===t,limit:e});c(r.runs),b(r.hasMore?r.nextCursor:null),f(null)}catch(e){f(e instanceof Error?e.message:String(e))}finally{m(!1)}},[t]),N=(0,o.useCallback)(async()=>{if(v&&!y){w(!0);try{let e=await u.FH.evolution.listRuns({archived:"archived"===t,limit:20,before:v});c(t=>[...t,...e.runs]),b(e.hasMore?e.nextCursor:null)}catch(e){console.error("evolution.listRuns more",e)}finally{w(!1)}}},[t,v,y]);(0,o.useEffect)(()=>{k()},[k]);let S=a_(N,i.length);(0,o.useEffect)(()=>{let e=p.on("evolution:run_changed",()=>{k()}),t=p.on("evolution:apply_changed",()=>{k()});return()=>{e(),t()}},[k]);let C=(0,o.useMemo)(()=>"all"===t||"archived"===t?i:"auto"===t?i.filter(e=>"auto"===e.applyApprovedBy):"observation"===t?i.filter(e=>e.hasObservation):i.filter(e=>e.status===t),[i,t]);return(0,o.useEffect)(()=>{var e;if(n)return;let t=null!=(e=i.find(e=>"awaiting_review"===e.status))?e:i[0];t&&a(t.id)},[i,n,a]),(0,l.jsxs)("div",{className:"flex h-full flex-col border-r border-[var(--border)] bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-[var(--foreground)]",children:[(0,l.jsx)(sL.A,{className:"h-4 w-4"}),e("evolution.title")]}),(0,l.jsx)("button",{onClick:async()=>{g(!0),s();let e=new Promise(e=>setTimeout(e,400));await Promise.all([k(),e]),g(!1)},disabled:x,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--accent)] hover:text-[var(--foreground)] disabled:cursor-default",title:e("evolution.refresh"),children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",x&&"animate-spin")})})]}),(0,l.jsx)("div",{className:"flex flex-wrap gap-1 border-b border-[var(--border)] px-2 py-2",children:c2.map(n=>(0,l.jsx)("button",{onClick:()=>r(n),className:(0,E.cn)("w-16 shrink-0 rounded px-2 py-0.5 text-xs text-center",t===n?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--accent)] hover:text-[var(--foreground)]"),children:e("evolution.filter.".concat(n))},n))}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto",children:[d&&(0,l.jsx)(c4,{label:e("evolution.list.loading")}),h&&(0,l.jsx)(c4,{label:e("cron.error",{error:h})}),!d&&!h&&0===C.length&&(0,l.jsx)(c4,{label:e("evolution.list.empty")}),C.map(e=>(0,l.jsx)(c8,{run:e,selected:e.id===n,onClick:()=>a(e.id)},e.id)),v&&(0,l.jsx)("div",{ref:S,className:"px-3 py-3 text-center text-[10px] text-[var(--muted-foreground)]",children:y?e("evolution.list.loading"):e("cron.loadOlder")})]})]})}function c4(e){let{label:t}=e;return(0,l.jsx)("div",{className:"flex h-full items-center justify-center p-6 text-sm text-[var(--muted-foreground)]",children:t})}function c8(e){var t;let{run:r,selected:n,onClick:a}=e,s=(0,T.kj)();return(0,l.jsxs)("button",{onClick:a,className:(0,E.cn)("flex w-full flex-col gap-1 border-b border-[var(--border)] px-3 py-2 text-left text-sm transition-colors",n?"bg-[var(--accent)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--accent)] hover:text-[var(--foreground)]"),children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(cW,{status:r.status}),("approved"===r.status||"awaiting_review"===r.status&&"auto"===r.applyApprovedBy)&&("failed"===r.applyStatus||"timeout"===r.applyStatus)&&(0,l.jsx)("span",{className:"rounded bg-red-800 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-red-100",children:s("evolution.list.applyFailed")}),"auto"===r.applyApprovedBy&&(0,l.jsx)("span",{className:"rounded bg-sky-800 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-sky-100",children:s("evolution.list.auto")}),(0,l.jsx)("span",{className:"text-xs",children:r.triggerKind}),r.hasObservation&&(0,l.jsx)("span",{title:s("evolution.list.observation"),className:"ml-auto text-amber-400",children:(0,l.jsx)(c3.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:null!=(t=r.userHint)?t:(0,l.jsx)("span",{className:"italic",children:s("evolution.list.noHint")})}),(0,l.jsxs)("div",{className:"flex items-center gap-2 text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{children:(0,E.fw)(r.createdAt,s)}),(0,l.jsx)("span",{children:"•"}),(0,l.jsx)("span",{title:r.workspacePath,className:"truncate",children:r.workspacePath.split("/").pop()}),r.attempts>1&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("span",{children:"•"}),(0,l.jsx)("span",{children:s("evolution.list.attempts",{n:r.attempts})})]})]})]})}var c6=r(30478),c9=r.n(c6),c7=r(90144);let de=(0,b.v)(e=>({selectedId:null,formMode:null,setSelectedId:t=>e({selectedId:t,formMode:null}),openCreate:()=>e({formMode:"create"}),openEdit:()=>e({formMode:"edit"}),closeForm:()=>e({formMode:null})}));function dt(e,t){return e?e.includes("ret=-2")?t("cron.err.wechat.noInbound"):e:"?"}function dr(){let e=(0,T.kj)(),t=de(e=>e.selectedId),r=de(e=>e.setSelectedId),n=de(e=>e.formMode),a=de(e=>e.closeForm),[s,i]=(0,o.useState)(null),c=(0,o.useCallback)(async()=>{if(!t)return void i(null);try{var e;let{jobs:r}=await u.FH.cron.listJobs();i(null!=(e=r.find(e=>e.id===t))?e:null)}catch(e){console.error("cron.listJobs",e)}},[t]);(0,o.useEffect)(()=>{c()},[c]),(0,o.useEffect)(()=>p.on("cron:job_changed",()=>{c()}),[c]);let d=(0,o.useCallback)(async n=>{if(await (0,E.fN)(e("cron.confirmDelete")))try{await u.FH.cron.deleteJob(n),t===n&&r(null)}catch(e){alert(e instanceof Error?e.message:String(e))}},[t,r,e]),m=(0,o.useCallback)(async e=>{try{await u.FH.cron.runNow(e)}catch(e){alert(e instanceof Error?e.message:String(e))}},[]);return"create"===n?(0,l.jsx)(ds,{onClose:a,onSaved:a}):"edit"===n&&s?(0,l.jsx)(ds,{initial:s,onClose:a,onSaved:a}):s?(0,l.jsx)(dn,{job:s,onEdit:()=>{c().then(()=>de.getState().openEdit())},onDelete:()=>d(s.id),onRunNow:()=>m(s.id)},s.id):(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:e("cron.pickJob")})}function dn(e){var t,r;let{job:n,onEdit:a,onDelete:s,onRunNow:i}=e,c=(0,T.kj)(),[d,m]=(0,o.useState)([]),[h,f]=(0,o.useState)(null),[x,g]=(0,o.useState)(null),[v,b]=(0,o.useState)(!1),[y,w]=(0,o.useState)(null),[j,k]=(0,o.useState)(!1),N=(0,o.useCallback)(async()=>{try{let e=await u.FH.cron.listRuns(n.id,{limit:20});m(e.runs),w(e.hasMore?e.nextCursor:null)}catch(e){console.error("listRuns",e)}},[n.id]),S=(0,o.useCallback)(async()=>{if(y&&!j){k(!0);try{let e=await u.FH.cron.listRuns(n.id,{limit:20,before:y});m(t=>[...t,...e.runs]),w(e.hasMore?e.nextCursor:null)}catch(e){console.error("listRuns more",e)}finally{k(!1)}}},[n.id,y,j]);(0,o.useEffect)(()=>{N()},[N]);let C=a_(S,d.length);(0,o.useEffect)(()=>p.on("cron:run_changed",e=>{e.jobId===n.id&&N()}),[n.id,N]);let A=rU(e=>e.activeProject),I=(0,o.useCallback)(e=>{aa(e),window.dispatchEvent(new CustomEvent("halo:navigate",{detail:{tab:"explorer"}}))},[]),_=(0,o.useCallback)(async e=>{f(e),g(null),b(!0);try{let{log:t}=await u.FH.cron.getRunLog(e);g(null!=t?t:"(log file not available — retention or never written)")}catch(e){g("error: ".concat(e instanceof Error?e.message:String(e)))}finally{b(!1)}},[]);return(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,l.jsxs)("div",{className:"flex flex-1 items-center gap-2 text-sm font-medium text-[var(--foreground)]",children:[(0,l.jsx)(c7.A,{className:"h-4 w-4"}),(0,l.jsx)("span",{children:n.label||n.id}),0===n.enabled&&(0,l.jsx)("span",{className:"rounded bg-[var(--accent)] px-1.5 py-0.5 text-[10px] uppercase",children:c("cron.disabled")})]}),(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[(0,l.jsxs)("button",{onClick:i,className:"flex items-center gap-1 rounded bg-emerald-600 px-2 py-1 text-xs text-white hover:opacity-90",title:c("cron.runNow"),children:[(0,l.jsx)(o4.A,{className:"h-3 w-3"})," ",c("cron.runNow")]}),(0,l.jsxs)("button",{onClick:a,className:"flex items-center gap-1 rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:opacity-90",title:c("cron.edit"),children:[(0,l.jsx)(cr.A,{className:"h-3 w-3"})," ",c("cron.edit")]}),(0,l.jsx)("button",{onClick:s,className:"flex items-center gap-1 rounded bg-red-700/80 px-2 py-1 text-xs text-white hover:opacity-90",title:c("cron.delete"),children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]})]}),(0,l.jsxs)("div",{className:"mt-3 grid grid-cols-2 gap-2 text-xs text-[var(--muted-foreground)]",children:[n.webhookPath?(0,l.jsxs)("div",{className:"col-span-2 truncate",children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.webhook")})," ",(0,l.jsx)("span",{className:"font-mono",children:location.origin+n.webhookPath})]}):n.runAt?(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.runAt")})," ",(0,l.jsxs)("span",{className:"font-mono",children:[new Date(n.runAt).toLocaleString(),n.timezone?" (".concat(n.timezone,")"):""]})]}):(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.schedule")})," ",(0,l.jsxs)("span",{className:"font-mono",children:[n.schedule,n.timezone?" (".concat(n.timezone,")"):""]})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.agent")})," ",n.agentId]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.timeoutSec")})," ",null!=n.timeoutSec?"".concat(n.timeoutSec,"s"):c("cron.field.timeoutSecDefault")]}),null!=n.activeFrom&&(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.activeFrom")})," ",(0,l.jsx)("span",{className:"font-mono",children:new Date(n.activeFrom).toLocaleString()})]}),null!=n.activeUntil&&(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.activeUntil")})," ",(0,l.jsx)("span",{className:"font-mono",children:new Date(n.activeUntil).toLocaleString()})]}),(0,l.jsxs)("div",{className:"col-span-2 truncate",children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.workspace")})," ",n.workspacePath]}),(0,l.jsxs)("div",{className:"col-span-2 truncate",children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.folder")})," ",(0,l.jsx)("span",{className:"font-mono",children:null!=(t=n.workingDir)?t:c("cron.field.folderRoot")})]}),(0,l.jsxs)("div",{className:"col-span-2 truncate",children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.session")})," ",(0,l.jsx)("span",{className:"font-mono",children:n.stateless?c("cron.field.sessionStateless"):null!=(r=n.sessionId)?r:c("cron.field.sessionDefault",{id:n.effectiveSessionId})})]}),(0,l.jsxs)("div",{className:"col-span-2",children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.targets")})," ",0===n.targets.length?c("cron.field.targetsLogOnly"):n.targets.map(e=>"".concat(e.channelType,":").concat(e.accountId).concat(e.chatId?"/"+e.chatId:"")).join(", ")]})]}),(0,l.jsxs)("div",{className:"mt-2",children:[(0,l.jsx)("div",{className:"text-xs font-medium text-[var(--foreground)]",children:c("cron.field.prompt")}),(0,l.jsx)("pre",{className:"mt-1 whitespace-pre-wrap rounded bg-[var(--accent)] p-2 text-xs",children:n.userPrompt||c("cron.field.promptEmpty")})]})]}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto px-4 py-3",children:[(0,l.jsx)("div",{className:"mb-2 text-xs font-medium text-[var(--foreground)]",children:c("cron.runHistory")}),0===d.length?(0,l.jsx)("div",{className:"text-xs italic text-[var(--muted-foreground)]",children:c("cron.noRuns")}):(0,l.jsx)(l.Fragment,{children:(0,l.jsxs)("ul",{className:"divide-y divide-[var(--border)] text-xs",children:[d.map(e=>{var t;return(0,l.jsxs)("li",{className:"py-2",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:(0,E.cn)("rounded px-1.5 py-0.5 text-[10px] uppercase","succeeded"===e.status?"bg-emerald-700 text-emerald-50":"running"===e.status?"bg-amber-700 text-amber-50":"skipped"===e.status?"bg-[var(--accent)] text-[var(--foreground)]":"bg-red-700 text-red-50"),children:e.status}),(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:new Date(e.startedAt).toLocaleString()}),(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:"\xb7"}),(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:e.triggerKind}),e.eventCount>0&&(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:c("cron.run.events",{n:e.eventCount})}),e.sessionId&&(0,l.jsx)("span",{className:"truncate font-mono text-[10px] text-[var(--muted-foreground)]",title:c("cron.run.session"),children:e.sessionId})]}),e.logPath?(0,l.jsx)("button",{onClick:()=>{_(e.id)},className:"rounded bg-[var(--accent)] px-2 py-0.5 text-[10px] hover:opacity-90",children:"Log"}):e.sessionId&&(null!=(t=e.workspacePath)?t:n.workspacePath)===(null==A?void 0:A.path)&&(0,l.jsxs)("button",{onClick:()=>I(e.sessionId),className:"flex shrink-0 items-center gap-1 rounded bg-[var(--accent)] px-2 py-0.5 text-[10px] hover:opacity-90",children:[(0,l.jsx)(aF.A,{className:"h-3 w-3"})," ",c("cron.run.openSession")]})]}),e.failureReason&&(0,l.jsx)("div",{className:"mt-1 text-red-400",children:dt(e.failureReason,c)}),e.dispatchResults&&e.dispatchResults.length>0&&(0,l.jsxs)("div",{className:"mt-1 text-[var(--muted-foreground)]",children:[c("cron.dispatch")," ",e.dispatchResults.map(e=>{let t=e.chatId?"".concat(e.channelType,":").concat(e.accountId,"/").concat(e.chatId):"".concat(e.channelType,":").concat(e.accountId);return"".concat(t," ").concat(e.ok?"✓":"✗ (".concat(dt(e.error,c),")"))}).join(" \xb7 ")]}),e.output&&(0,l.jsx)("pre",{className:"mt-1 line-clamp-3 whitespace-pre-wrap rounded bg-[var(--accent)] p-2 text-[11px]",children:e.output})]},e.id)}),y&&(0,l.jsx)("li",{ref:C,className:"py-3 text-center text-[10px] text-[var(--muted-foreground)]",children:j?c("cron.loading"):c("cron.loadOlder")})]})})]}),h&&(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4",onClick:()=>f(null),children:(0,l.jsxs)("div",{className:"flex h-[80vh] w-[800px] max-w-full flex-col overflow-hidden rounded border border-[var(--border)] bg-[var(--background)]",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-3 py-2 text-xs",children:[(0,l.jsx)("span",{children:c("cron.log.title",{id:h})}),(0,l.jsx)("button",{onClick:()=>f(null),className:"rounded px-2 py-0.5 text-[var(--muted-foreground)] hover:bg-[var(--accent)]",children:c("cron.log.close")})]}),(0,l.jsx)("pre",{className:"flex-1 overflow-auto whitespace-pre-wrap p-3 font-mono text-[11px] leading-relaxed",children:v?c("cron.loading"):null!=x?x:""})]})})]})}function da(e){let t=e=>e.toString().padStart(2,"0");return"".concat(e.getFullYear(),"-").concat(t(e.getMonth()+1),"-").concat(t(e.getDate()),"T").concat(t(e.getHours()),":").concat(t(e.getMinutes()))}function ds(e){var t,r,n,a,s,i,c,d,m,p,h,f,x,g;let{initial:v,onClose:b,onSaved:y}=e,w=(0,T.kj)(),j=rU(e=>e.activeProject),[k,N]=(0,o.useState)(null!=(r=null==v?void 0:v.label)?r:""),[S,C]=(0,o.useState)(null!=(a=null!=(n=null==v?void 0:v.workspacePath)?n:null==j?void 0:j.path)?a:""),[A,I]=(0,o.useState)(S),[_,P]=(0,o.useState)(null!=(s=null==v?void 0:v.agentId)?s:"default"),[M,F]=(0,o.useState)([]),[D,L]=(0,o.useState)(null!=(i=null==v?void 0:v.sessionId)?i:""),[R,H]=(0,o.useState)([]),[z,O]=(0,o.useState)(null!=(c=null==v?void 0:v.workingDir)?c:""),[U,B]=(0,o.useState)(null!=(d=null==v?void 0:v.stateless)&&d),W=v?null!=(m=v.sessionId)?m:"":null,K=U?null:D!==W||(null==v?void 0:v.stateless)||A!==(null==v?void 0:v.workspacePath)?D&&null!=(h=null==(t=R.find(e=>e.id===D))?void 0:t.agentId)?h:null:null!=(p=null==v?void 0:v.sessionAgentId)?p:null,G=D||(null==v?void 0:v.effectiveSessionId)||"",q=null!==K&&K!==_,[$,Y]=(0,o.useState)((null==v?void 0:v.webhookSecret)?"webhook":(null==v?void 0:v.runAt)?"oneShot":"recurring"),[J,Z]=(0,o.useState)(null!=(f=null==v?void 0:v.webhookSecret)?f:null),[V,X]=(0,o.useState)(!1),[Q,ee]=(0,o.useState)((null==v?void 0:v.schedule)||"0 9 * * *"),[et,er]=(0,o.useState)(()=>(null==v?void 0:v.runAt)?da(new Date(v.runAt)):da(new Date(Date.now()+36e5))),[en,ea]=(0,o.useState)(()=>(function(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}catch(e){return"UTC"}})());(0,o.useEffect)(()=>{let e=!0;return u.FH.cron.meta().then(t=>{let{hostTimezone:r}=t;e&&r&&ea(r)}).catch(e=>console.error("cron.meta",e)),()=>{e=!1}},[]);let es=(0,o.useMemo)(()=>{let e=function(){let e=Intl;if("function"==typeof e.supportedValuesOf)try{return e.supportedValuesOf("timeZone")}catch(e){}return["UTC","Asia/Shanghai","Asia/Tokyo","Asia/Singapore","Europe/London","Europe/Paris","America/New_York","America/Los_Angeles"]}(),t=e.includes(en)?en:e[0];return[{id:t,label:"".concat(t," (default)")},...e.filter(e=>e!==t).map(e=>({id:e,label:e}))]},[en]),[el,eo]=(0,o.useState)(null!=(x=null==v?void 0:v.timezone)?x:""),[ei,ec]=(0,o.useState)((null==v?void 0:v.timeoutSec)!=null?String(v.timeoutSec):""),[ed,eu]=(0,o.useState)(null),[em,ep]=(0,o.useState)(null),[eh,ef]=(0,o.useState)(null!=(g=null==v?void 0:v.userPrompt)?g:""),[ex,eg]=(0,o.useState)((null==v?void 0:v.enabled)!==0),[ev,eb]=(0,o.useState)([]),[ey,ew]=(0,o.useState)(()=>{var e;let t=new Set;for(let r of null!=(e=null==v?void 0:v.targets)?e:[])t.add("".concat(r.channelType,":").concat(r.accountId));return t}),[ej,ek]=(0,o.useState)(()=>{var e;let t={};for(let r of null!=(e=null==v?void 0:v.targets)?e:[]){let e="".concat(r.channelType,":").concat(r.accountId);r.chatId&&(t[e]=t[e]?"".concat(t[e],", ").concat(r.chatId):r.chatId)}return t}),[eN,eS]=(0,o.useState)(!1),[eC,eA]=(0,o.useState)(null);(0,o.useEffect)(()=>{let e=!0,t=async()=>{try{let{agents:t}=await u.FH.agentConfigs.list(A||void 0);if(!e)return;let r=t.filter(e=>!e.internal&&!e.overridden&&!e.disabled).map(e=>({id:e.id,name:e.name||e.id}));F(r),r.length>0&&P(e=>r.some(t=>t.id===e)?e:r[0].id)}catch(e){console.error("agentConfigs.list",e)}};return A&&t(),()=>{e=!1}},[A]),(0,o.useEffect)(()=>{let e=!0;if(A)return u.FH.sessionLogs.list(A,{rootOnly:!0,limit:50}).then(t=>{let{sessions:r}=t;e&&H(r.map(e=>{var t;return{id:e.id,label:"".concat(e.title||e.id," \xb7 ").concat(e.agentName||e.agentId),agentId:e.agentId,workingDir:null!=(t=e.workingDir)?t:null}}))}).catch(t=>{e&&H([]),console.error("sessionLogs.list",t)}),()=>{e=!1}},[A]),(0,o.useEffect)(()=>{let e=!0;return u.FH.cron.listChannelTargets().then(t=>{let{targets:r}=t;e&&eb(r)}).catch(e=>console.error("listChannelTargets",e)),()=>{e=!1}},[]);let eI=(0,o.useCallback)(e=>{ew(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),eE=(0,o.useCallback)((e,t)=>{let r=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/.exec(e);if(!r)return Date.parse(e);let[,n,a,s,l,o]=r,i=Date.UTC(+n,a-1,+s,+l,+o),c=Object.fromEntries(new Intl.DateTimeFormat("en-US",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).formatToParts(new Date(i)).filter(e=>"literal"!==e.type).map(e=>[e.type,e.value]));return i-(Date.UTC(+c.year,c.month-1,+c.day,24==+c.hour?0:+c.hour,+c.minute,+c.second)-i)},[]),eT=(0,o.useCallback)(async()=>{if(v&&await (0,E.fN)(w("cron.form.webhook.rotateConfirm"))){X(!0);try{Z((await u.FH.cron.rotateWebhookSecret(v.id)).webhookSecret)}catch(e){eA(e instanceof Error?e.message:String(e))}finally{X(!1)}}},[v,w]),e_=(0,o.useCallback)(async()=>{if(eA(null),!S.trim())return void eA(w("cron.form.err.workspace"));if(!_.trim())return void eA(w("cron.form.err.agent"));if("recurring"===$&&!Q.trim())return void eA(w("cron.form.err.schedule"));if("oneShot"===$&&!et)return void eA(w("cron.form.err.runAt"));if("webhook"!==$&&!eh.trim())return void eA(w("cron.form.err.prompt"));let e=el||en,t="oneShot"===$?eE(et,e):void 0;if("oneShot"===$&&void 0!==t&&t<=Date.now())return void eA(w("cron.form.err.runAtPast"));let r=ei.trim(),n=r?Number(r):void 0;if(void 0!==n&&(!Number.isInteger(n)||n<60||n>21600))return void eA(w("cron.form.err.timeoutSec"));let a=(t,r)=>null===t?null!=r?r:null:t?eE(t,e):null,s="recurring"===$?a(ed,null==v?void 0:v.activeFrom):null,l="recurring"===$?a(em,null==v?void 0:v.activeUntil):null;if(em&&null!==l&&l<=Date.now())return void eA(w("cron.form.err.activeUntilPast"));if(null!==s&&null!==l&&l<=s)return void eA(w("cron.form.err.activeOrder"));let o=[];for(let e of ey){var i;let[t,r]=e.split(":"),n=(null!=(i=ej[e])?i:"").trim(),a=n?n.split(",").map(e=>e.trim()).filter(Boolean):[],s=e=>"slack"!==t||/^[DCG][A-Z0-9]+(:[\d.]+)?$/.test(e)?"feishu"!==t||/^oc_[a-zA-Z0-9]+(:[a-zA-Z0-9_-]+)?$/.test(e)?"wecom"!==t||/^[\w@.-]+$/.test(e)?"telegram"!==t||/^-?\d+$/.test(e)?null:w("cron.form.err.chatId.telegram",{chatId:e}):w("cron.form.err.chatId.wecom",{chatId:e}):w("cron.form.err.chatId.feishu",{chatId:e}):w("cron.form.err.chatId.slack",{chatId:e});for(let e of a){let t=s(e);if(t)return void eA(t)}if(0===a.length)o.push({channelType:t,accountId:r});else for(let e of a)o.push({channelType:t,accountId:r,chatId:e})}eS(!0);try{let e={label:k||void 0,workspacePath:S,agentId:_,userPrompt:eh,timezone:"webhook"===$?void 0:el||void 0,targets:o,enabled:ex};v?await u.FH.cron.updateJob(v.id,{...e,schedule:"recurring"===$?Q:"",runAt:"oneShot"===$?t:null,webhook:"webhook"===$,timeoutSec:null!=n?n:null,sessionId:U?null:D||null,workingDir:z.trim()||null,stateless:U,..."recurring"!==$||null!==ed?{activeFrom:s}:{},..."recurring"!==$||null!==em?{activeUntil:l}:{}}):await u.FH.cron.createJob({...e,schedule:"recurring"===$?Q:"",runAt:"oneShot"===$?t:void 0,webhook:"webhook"===$||void 0,timeoutSec:n,sessionId:U?void 0:D||void 0,workingDir:z.trim()||void 0,stateless:U,activeFrom:null!=s?s:void 0,activeUntil:null!=l?l:void 0}),y()}catch(e){eA(e instanceof Error?e.message:String(e))}finally{eS(!1)}},[v,k,S,_,D,z,U,eh,$,Q,et,el,en,eE,ei,ed,em,ey,ej,ex,y,w]);return(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 text-sm font-medium",children:v?w("cron.form.edit"):w("cron.form.create")}),(0,l.jsx)("button",{onClick:b,className:"jsx-8283b0ed0bcf6928 rounded px-2 py-1 text-xs text-[var(--muted-foreground)] hover:bg-[var(--accent)]",children:w("cron.form.cancel")})]}),(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex-1 space-y-3 overflow-y-auto p-4 text-xs",children:[(0,l.jsx)(dl,{label:w("cron.form.label"),children:(0,l.jsx)("input",{value:k,onChange:e=>N(e.target.value),placeholder:w("cron.form.label.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base"})}),(0,l.jsx)(dl,{label:w("cron.form.workspace"),children:(0,l.jsx)("input",{value:S,onChange:e=>C(e.target.value),onBlur:()=>I(S),onKeyDown:e=>{"Enter"===e.key&&I(S)},placeholder:w("cron.form.workspace.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base font-mono"})}),(0,l.jsxs)(dl,{label:w("cron.form.agent"),children:[(0,l.jsxs)("select",{value:_,onChange:e=>P(e.target.value),disabled:null!==K&&!q,className:"jsx-8283b0ed0bcf6928 input-base disabled:opacity-60",children:[0===M.length&&(0,l.jsx)("option",{value:"default",className:"jsx-8283b0ed0bcf6928",children:"default"}),K&&!M.some(e=>e.id===K)&&(0,l.jsx)("option",{value:K,className:"jsx-8283b0ed0bcf6928",children:K}),M.map(e=>(0,l.jsxs)("option",{value:e.id,className:"jsx-8283b0ed0bcf6928",children:[e.name," (",e.id,")"]},e.id))]}),q?(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-amber-600",children:w("cron.form.agent.mismatch",{id:G,agent:K})}):K&&(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.agent.locked",{id:G,agent:K})})]}),(0,l.jsxs)(dl,{label:w("cron.form.stateless"),children:[(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex cursor-pointer items-center gap-1",children:[(0,l.jsx)("input",{type:"checkbox",checked:U,onChange:e=>B(e.target.checked),className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:w("cron.form.stateless.label")})]}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.stateless.hint")})]}),(0,l.jsxs)(dl,{label:w("cron.form.session"),children:[(0,l.jsx)(o8,{value:U?"":D,disabled:U,placeholder:U?w("cron.form.session.stateless"):w("cron.form.session.placeholder"),presets:A?R:[],onCommit:e=>{let t=e.trim();L(t);let r=R.find(e=>e.id===t);if(r){var n;P(r.agentId),O(null!=(n=r.workingDir)?n:"")}},minWidth:280}),!U&&(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.session.hint")})]}),(0,l.jsxs)(dl,{label:w("cron.form.folder"),children:[(0,l.jsx)("input",{value:z,onChange:e=>O(e.target.value),placeholder:w("cron.form.folder.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base font-mono"}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.folder.hint")})]}),(0,l.jsx)(dl,{label:w("cron.form.mode"),children:(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex gap-3",children:[(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex cursor-pointer items-center gap-1",children:[(0,l.jsx)("input",{type:"radio",name:"cron-mode",value:"recurring",checked:"recurring"===$,onChange:()=>Y("recurring"),className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:w("cron.form.mode.recurring")})]}),(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex cursor-pointer items-center gap-1",children:[(0,l.jsx)("input",{type:"radio",name:"cron-mode",value:"oneShot",checked:"oneShot"===$,onChange:()=>Y("oneShot"),className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:w("cron.form.mode.oneShot")})]}),(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex cursor-pointer items-center gap-1",children:[(0,l.jsx)("input",{type:"radio",name:"cron-mode",value:"webhook",checked:"webhook"===$,onChange:()=>Y("webhook"),className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:w("cron.form.mode.webhook")})]})]})}),"webhook"===$?(0,l.jsxs)(dl,{label:w("cron.form.webhook"),children:[(null==v?void 0:v.webhookPath)&&J?(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 space-y-1",children:[[["cron.form.webhook.url",location.origin+v.webhookPath],["cron.form.webhook.secret",J]].map(e=>{let[t,r]=e;return(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex items-center gap-2",children:[(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928 w-14 shrink-0 text-[var(--muted-foreground)]",children:w(t)}),(0,l.jsx)("code",{className:"jsx-8283b0ed0bcf6928 flex-1 break-all rounded bg-[var(--accent)] px-2 py-1 font-mono",children:r}),(0,l.jsx)("button",{type:"button",onClick:()=>{navigator.clipboard.writeText(r)},title:w("cron.form.webhook.copy"),className:"jsx-8283b0ed0bcf6928 rounded p-1 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,l.jsx)(ss.A,{className:"h-3.5 w-3.5"})})]},t)}),(0,l.jsxs)("button",{type:"button",onClick:()=>{eT()},disabled:V,className:"jsx-8283b0ed0bcf6928 flex items-center gap-1 rounded bg-[var(--accent)] px-2 py-1 hover:opacity-90 disabled:opacity-50",children:[(0,l.jsx)(aD.A,{className:"h-3 w-3"})," ",w("cron.form.webhook.rotate")]})]}):(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 text-[var(--muted-foreground)]",children:w("cron.form.webhook.onSave")}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.webhook.hint")})]}):"recurring"===$?(0,l.jsxs)(dl,{label:w("cron.form.schedule"),children:[(0,l.jsx)("input",{value:Q,onChange:e=>ee(e.target.value),placeholder:w("cron.form.schedule.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base font-mono"}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.schedule.hint")})]}):(0,l.jsxs)(dl,{label:w("cron.form.runAt"),children:[(0,l.jsx)("input",{type:"datetime-local",value:et,onChange:e=>er(e.target.value),className:"jsx-8283b0ed0bcf6928 input-base font-mono"}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.runAt.hint")})]}),"webhook"!==$&&(0,l.jsx)(dl,{label:w("cron.form.timezone"),children:(0,l.jsx)(o8,{value:el||en,placeholder:w("cron.form.timezone.hostDefault",{tz:en}),presets:es,onCommit:e=>{eo(e===en?"":e)},minWidth:280})}),"recurring"===$&&(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928",children:[(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 grid grid-cols-2 gap-2",children:[["cron.form.activeFrom",ed,null==v?void 0:v.activeFrom,eu],["cron.form.activeUntil",em,null==v?void 0:v.activeUntil,ep]].map(e=>{let[t,r,n,a]=e,s=null!=r?r:null!=n?function(e,t){let r=Object.fromEntries(new Intl.DateTimeFormat("en-US",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).formatToParts(new Date(e)).filter(e=>"literal"!==e.type).map(e=>[e.type,e.value]));return"".concat(r.year,"-").concat(r.month,"-").concat(r.day,"T").concat("24"===r.hour?"00":r.hour,":").concat(r.minute)}(n,el||en):"";return(0,l.jsx)(dl,{label:w(t),children:(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex items-center gap-1",children:[(0,l.jsx)("input",{type:"datetime-local",value:s,onChange:e=>a(e.target.value),className:"jsx-8283b0ed0bcf6928 input-base font-mono"}),s&&(0,l.jsx)("button",{type:"button",onClick:()=>a(""),className:"jsx-8283b0ed0bcf6928 shrink-0 rounded px-2 py-1 text-[var(--muted-foreground)] hover:bg-[var(--accent)]",children:w("cron.form.activeClear")})]})},t)})}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.active.hint")})]}),(0,l.jsxs)(dl,{label:w("cron.form.timeoutSec"),children:[(0,l.jsx)("input",{type:"number",min:60,max:21600,step:1,value:ei,onChange:e=>ec(e.target.value),placeholder:w("cron.form.timeoutSec.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base font-mono"}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.timeoutSec.hint")})]}),(0,l.jsxs)(dl,{label:w("webhook"===$?"cron.form.userPrompt.optional":"cron.form.userPrompt"),children:[(0,l.jsx)("textarea",{value:eh,onChange:e=>ef(e.target.value),rows:5,placeholder:w("cron.form.userPrompt.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base"}),"webhook"===$&&(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.userPrompt.webhookHint")})]}),(0,l.jsx)(dl,{label:w("cron.form.targets"),children:(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 space-y-1 rounded border border-[var(--border)] p-2",children:[0===ev.length?(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 text-[var(--muted-foreground)]",children:w("cron.form.targets.empty")}):ev.map(e=>{var t;let r="".concat(e.channelType,":").concat(e.accountId),n=ey.has(r),a="wechat"!==e.channelType,s="slack"===e.channelType?"D… (DM) / C… (channel) / C…:1700.0 (thread)":"telegram"===e.channelType?w("cron.form.chatIdHint.telegram"):"feishu"===e.channelType?w("cron.form.chatIdHint.feishu"):"wecom"===e.channelType?w("cron.form.chatIdHint.wecom"):"";return(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 "+((0,E.cn)("rounded px-1 py-0.5",n&&"bg-[var(--accent)]")||""),children:[(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex cursor-pointer items-center gap-2",children:[(0,l.jsx)("input",{type:"checkbox",checked:n,onChange:()=>eI(r),disabled:!e.enabled,className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928 font-medium",children:e.channelType}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:e.label}),!e.enabled&&(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.targets.disabled")}),!e.hasActiveChat&&(0,l.jsx)("span",{title:w("cron.form.targets.noActiveChat"),className:"jsx-8283b0ed0bcf6928 text-[10px] text-amber-400",children:w("cron.form.targets.noActiveChatLabel")})]}),n&&a&&(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 ml-6",children:[(0,l.jsx)(di,{channelType:e.channelType,accountId:e.accountId,value:null!=(t=ej[r])?t:"",onChange:e=>ek(t=>({...t,[r]:e})),placeholder:s}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.chatIdHelp")})]})]},r)}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.targets.hint")})]})}),(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex items-center gap-2",children:[(0,l.jsx)("input",{type:"checkbox",checked:ex,onChange:e=>eg(e.target.checked),className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:w("cron.form.enabled")})]}),eC&&(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 rounded border border-red-500/50 bg-red-950/40 p-2 text-red-300",children:eC})]}),(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex justify-end gap-2 border-t border-[var(--border)] px-4 py-3",children:[(0,l.jsx)("button",{onClick:b,className:"jsx-8283b0ed0bcf6928 rounded bg-[var(--accent)] px-3 py-1 text-xs",children:w("cron.form.cancel")}),(0,l.jsx)("button",{onClick:()=>{e_()},disabled:eN,className:"jsx-8283b0ed0bcf6928 rounded bg-[var(--primary)] px-3 py-1 text-xs text-[var(--primary-foreground)] disabled:opacity-50",children:eN?w("cron.form.saving"):v?w("cron.form.save"):w("cron.form.create.btn")})]}),(0,l.jsx)(c9(),{id:"8283b0ed0bcf6928",children:".input-base{width:100%;background:var(--background);color:var(--foreground);border:1px solid var(--border);border-radius:.25rem;padding:.375rem .5rem;font-size:.75rem}"})]})}function dl(e){let{label:t,children:r}=e;return(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"mb-1 block text-[var(--foreground)]",children:t}),r]})}function di(e){let{channelType:t,accountId:r,value:n,onChange:a,placeholder:s}=e,i=(0,T.kj)(),[c,d]=(0,o.useState)(""),[m,p]=(0,o.useState)([]),[h,f]=(0,o.useState)(!1),[x,g]=(0,o.useState)(!1),v="slack"===t||"feishu"===t;return(0,o.useEffect)(()=>{if(!v||!c.trim())return void p([]);let e=!1;g(!0);let n=setTimeout(async()=>{try{let n="slack"===t?await u.FH.slack.searchTargets(r,c):await u.FH.feishu.searchTargets(r,c);if(e)return;let a=n.hits.map(e=>{var t,r;let n=null!=(r=null!=(t=e.realName)?t:e.email)?r:"";return{id:e.id,name:e.name,chatId:e.chatId,kind:e.kind,subtitle:n}});p(a)}catch(t){e||p([]),console.error("[cron-form] target search failed:",t)}finally{e||g(!1)}},300);return()=>{e=!0,clearTimeout(n)}},[c,t,r,v]),(0,l.jsxs)("div",{className:"relative",children:[(0,l.jsx)("input",{value:n,onChange:e=>(function(e){var t,r;if(a(e),!v)return;let n=null!=(r=null==(t=e.split(",").pop())?void 0:t.trim())?r:"";d(n),f(n.length>0)})(e.target.value),onFocus:()=>{c&&f(!0)},onBlur:()=>setTimeout(()=>f(!1),150),placeholder:s,className:"input-base font-mono text-[11px]"}),v&&h&&(x||m.length>0)&&(0,l.jsxs)("div",{className:"absolute z-10 mt-1 max-h-60 w-full overflow-y-auto rounded border border-[var(--border)] bg-[var(--background)] shadow-lg",children:[x&&(0,l.jsx)("div",{className:"px-2 py-1 text-[10px] text-[var(--muted-foreground)]",children:i("cron.form.searching")}),!x&&m.map(e=>(0,l.jsxs)("button",{type:"button",onMouseDown:e=>e.preventDefault(),onClick:()=>(function(e){let t=n.split(",").map(e=>e.trim()).filter(Boolean);t.length>0?t[t.length-1]=e:t.push(e),a(t.join(", ")),d(""),p([]),f(!1)})(e.chatId),className:"flex w-full items-center gap-2 px-2 py-1 text-left text-[11px] hover:bg-[var(--accent)]",children:[(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:function(e){switch(e){case"user":return"@";case"channel":case"chat":return"#";case"group":return"\uD83D\uDD12";case"mpim":return"\uD83D\uDC65";case"im":case"p2p":return"\uD83D\uDCAC";default:return"\xb7"}}(e.kind)}),(0,l.jsxs)("span",{className:"flex-1 truncate",children:[e.name,e.subtitle&&(0,l.jsx)("span",{className:"ml-1 text-[10px] text-[var(--muted-foreground)]",children:e.subtitle})]}),(0,l.jsx)("span",{className:"font-mono text-[10px] text-[var(--muted-foreground)]",children:e.chatId})]},e.kind+":"+e.id))]})]})}function dc(){let e=(0,T.kj)(),[t,r]=(0,o.useState)([]),[n,a]=(0,o.useState)(!0),[s,i]=(0,o.useState)(null),[c,d]=(0,o.useState)(!1),[m,h]=(0,o.useState)(null),[f,x]=(0,o.useState)(!1),[g,v]=(0,o.useState)(0),b=de(e=>e.selectedId),y=de(e=>e.setSelectedId),w=de(e=>e.openCreate),j=(0,o.useCallback)(async()=>{try{let e=await u.FH.cron.listJobs({limit:20});r(e.jobs),v(Date.now()),h(e.hasMore?e.nextCursor:null),i(null)}catch(e){i(e instanceof Error?e.message:String(e))}finally{a(!1)}},[]),k=a_((0,o.useCallback)(async()=>{if(m&&!f){x(!0);try{let e=await u.FH.cron.listJobs({limit:20,before:m});r(t=>[...t,...e.jobs]),h(e.hasMore?e.nextCursor:null)}catch(e){console.error("cron.listJobs more",e)}finally{x(!1)}}},[m,f]),t.length),N=(0,o.useCallback)(async()=>{d(!0);let e=new Promise(e=>setTimeout(e,400));await Promise.all([j(),e]),d(!1)},[j]);return(0,o.useEffect)(()=>{j()},[j]),(0,o.useEffect)(()=>{let e=p.on("cron:job_changed",()=>{j()}),t=p.on("cron:run_changed",()=>{j()});return()=>{e(),t()}},[j]),(0,o.useEffect)(()=>{!b&&t[0]&&y(t[0].id)},[t,b,y]),(0,l.jsxs)("div",{className:"flex h-full flex-col border-r border-[var(--border)] bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-[var(--foreground)]",children:[(0,l.jsx)(c7.A,{className:"h-4 w-4"}),e("cron.title")]}),(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[(0,l.jsxs)("button",{onClick:w,className:"flex items-center gap-1 rounded bg-[var(--primary)] px-2 py-1 text-xs text-[var(--primary-foreground)] hover:opacity-90",title:e("cron.new"),children:[(0,l.jsx)(lC.A,{className:"h-3 w-3"})," ",e("cron.new")]}),(0,l.jsx)("button",{onClick:()=>{N()},disabled:c,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--accent)] hover:text-[var(--foreground)] disabled:cursor-default",title:e("cron.refresh"),children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",c&&"animate-spin")})})]})]}),(0,l.jsx)("div",{className:"flex-1 overflow-y-auto",children:n&&0===t.length?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:e("cron.loading")}):s?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-red-400",children:e("cron.error",{error:s})}):0===t.length?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:e("cron.empty")}):(0,l.jsxs)("ul",{className:"divide-y divide-[var(--border)]",children:[t.map(t=>{let r=b===t.id,n=t.lastRunStatus;return(0,l.jsxs)("li",{className:(0,E.cn)("cursor-pointer px-3 py-2 text-xs hover:bg-[var(--accent)]",r&&"bg-[var(--accent)]"),onClick:()=>y(t.id),children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:(0,E.cn)("inline-block h-2 w-2 rounded-full",0===t.enabled?"bg-[var(--muted-foreground)]":"succeeded"===n?"bg-emerald-500":"running"===n?"bg-amber-400 animate-pulse":"failed"===n||"timeout"===n?"bg-red-500":"bg-[var(--muted-foreground)]")}),(0,l.jsx)("span",{className:"truncate font-medium text-[var(--foreground)]",children:t.label||t.id}),null!=t.activeUntil&&t.activeUntil<=g?(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--accent)] px-1.5 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:e("cron.badge.ended")}):null!=t.activeFrom&&t.activeFrom>g?(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--accent)] px-1.5 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:e("cron.badge.activeFrom",{date:new Date(t.activeFrom).toLocaleString(void 0,{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})})}):null]}),(0,l.jsxs)("div",{className:"mt-1 flex items-center justify-between gap-2 text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{className:"font-mono",children:t.webhookPath?e("cron.form.mode.webhook"):t.runAt?new Date(t.runAt).toLocaleString():t.schedule}),(0,l.jsx)("span",{children:t.agentId})]}),(0,l.jsx)("div",{className:"mt-0.5 truncate text-[var(--muted-foreground)]",children:t.workspacePath}),t.nextRunAt&&1===t.enabled&&(0,l.jsxs)("div",{className:"mt-0.5 text-[var(--muted-foreground)]",children:[e("cron.next")," ",new Date(t.nextRunAt).toLocaleString()]})]},t.id)}),m&&(0,l.jsx)("li",{ref:e=>{k.current=e},className:"px-3 py-3 text-center text-[10px] text-[var(--muted-foreground)]",children:f?e("cron.loading"):e("cron.loadOlder")})]})})]})}var dd=r(88373),du=r(10969),dm=r(60087),dp=r(82358),dh=r(80566);let df=(0,b.v)(e=>({selected:null,select:t=>e({selected:t}),clear:()=>e({selected:null})}));function dx(e){let{files:t,group:r,selectedPath:n,onSelect:a,onAction:s}=e,[i,c]=(0,o.useState)(new Set),d=function(e,t){let r={type:"dir",name:"",path:"",children:[]};for(let n of e){let e=n.path.split("/"),a=r;for(let t=0;t<e.length-1;t++){let r=e[t],n=a.path?"".concat(a.path,"/").concat(r):r,s=a.children.find(e=>"dir"===e.type&&e.name===r);s||(s={type:"dir",name:r,path:n,children:[]},a.children.push(s)),a=s}a.children.push({type:"file",name:e[e.length-1],file:n,char:t(n)})}return function e(t){for(let r of t.children)"dir"===r.type&&e(r);for(;1===t.children.length&&"dir"===t.children[0].type&&""!==t.name;){let e=t.children[0];t.name="".concat(t.name,"/").concat(e.name),t.path=e.path,t.children=e.children}}(r),function e(t){for(let r of(t.children.sort((e,t)=>e.type!==t.type?"dir"===e.type?-1:1:e.name.localeCompare(t.name)),t.children))"dir"===r.type&&e(r)}(r),r.children}(t,e=>"staged"===r?e.index:e.workingDir);return(0,l.jsx)("div",{children:d.map(e=>(function e(t,o){let d=12*o+8;if("dir"===t.type){let r=i.has(t.path);return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{onClick:()=>{var e;return e=t.path,void c(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},className:"flex w-full items-center gap-1 py-0.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)]",style:{paddingLeft:"".concat(d,"px")},children:[r?(0,l.jsx)(F.A,{className:"h-3.5 w-3.5 shrink-0"}):(0,l.jsx)(M.A,{className:"h-3.5 w-3.5 shrink-0"}),(0,l.jsx)("span",{className:"truncate",children:t.name})]}),!r&&t.children.map(t=>e(t,o+1))]},"d:".concat(t.path))}let u=j(t.char),m=n===t.file.path,p="staged"===r?dh.A:lC.A,{Icon:h,color:f}=ea(t.file.path);return(0,l.jsxs)("div",{onClick:()=>a(t.file),className:(0,E.cn)("group flex w-full cursor-pointer items-center gap-1.5 py-0.5 pr-2 text-xs",m?"bg-[var(--accent)]":"hover:bg-[var(--accent)]"),style:{paddingLeft:"".concat(d+16,"px")},children:[(0,l.jsx)(h,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",f)}),(0,l.jsx)("span",{className:"truncate text-[var(--foreground)]",style:{color:u.color},children:t.name}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),s([t.file.path])},title:"staged"===r?"Unstage":"Stage",className:"hidden shrink-0 rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] group-hover:block",children:(0,l.jsx)(p,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("span",{className:"w-4 shrink-0 text-center font-mono text-[11px] font-semibold",style:{color:u.color},title:u.label,children:u.letter})]},"f:".concat(t.file.path))})(e,0))})}var dg=r(4704);function dv(e){let{projectId:t,onClose:r,onSaved:n}=e,a=(0,T.kj)(),[s,i]=(0,o.useState)("https");return(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:r,children:(0,l.jsxs)("div",{className:"w-[460px] rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-2.5",children:[(0,l.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:a("sc.cred.title")}),(0,l.jsx)("button",{onClick:r,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsx)("div",{className:"flex gap-1 border-b border-[var(--border)] px-4 pt-3",children:["https","ssh"].map(e=>(0,l.jsx)("button",{onClick:()=>i(e),className:(0,E.cn)("rounded-t px-3 py-1.5 text-xs font-medium",s===e?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:"https"===e?a("sc.cred.tabHttps"):a("sc.cred.tabSsh")},e))}),"https"===s?(0,l.jsx)(dy,{onClose:r,onSaved:n}):(0,l.jsx)(dw,{projectId:t,onClose:r})]})})}let db="rounded border border-[var(--border)] bg-[var(--secondary)] px-2 py-1.5 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]";function dy(e){let{onClose:t,onSaved:r}=e,n=(0,T.kj)(),[a,s]=(0,o.useState)([]),[i,c]=(0,o.useState)(null),[d,m]=(0,o.useState)("github.com"),[p,h]=(0,o.useState)(""),[f,x]=(0,o.useState)(""),[g,v]=(0,o.useState)(!1),[b,y]=(0,o.useState)(null),w=(0,o.useCallback)(()=>{u.FH.git.getCredentials().then(e=>s(e.credentials)).catch(()=>s([]))},[]);async function j(){if(!d.trim()||!p.trim()||!f)return void y(n("sc.cred.required"));v(!0),y(null);try{await u.FH.git.saveCredentials({host:d.trim(),username:p.trim(),token:f}),x(""),w(),r()}catch(e){y(e instanceof Error?e.message:String(e))}finally{v(!1)}}async function k(e){y(null);try{await u.FH.git.deleteCredential(e),w()}catch(e){y(e instanceof Error?e.message:String(e))}finally{c(null)}}return(0,o.useEffect)(()=>{w()},[w]),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex max-h-[420px] flex-col gap-3 overflow-y-auto px-4 py-4",children:[(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.httpsDesc")}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.configuredList")}),0===a.length?(0,l.jsx)("p",{className:"rounded border border-dashed border-[var(--border)] px-2 py-3 text-center text-[10px] text-[var(--muted-foreground)]",children:n("sc.cred.noCredsYet")}):a.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2 rounded border border-[var(--border)] px-2.5 py-1.5 text-xs",children:[(0,l.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-400"}),(0,l.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[(0,l.jsx)("span",{className:"truncate text-[var(--foreground)]",children:e.host}),(0,l.jsx)("span",{className:"truncate text-[10px] text-[var(--muted-foreground)]",children:e.username})]}),i===e.host?(0,l.jsx)("button",{onClick:()=>k(e.host),className:"shrink-0 rounded bg-red-500/15 px-2 py-0.5 text-[10px] font-medium text-red-400 hover:bg-red-500/25",children:n("sc.cred.confirmDelete")}):(0,l.jsx)("button",{onClick:()=>c(e.host),title:n("sc.cred.delete"),className:"shrink-0 rounded p-1 text-[var(--muted-foreground)] hover:text-red-400",children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]},e.host))]}),(0,l.jsx)("div",{className:"border-t border-[var(--border)]"}),(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.addNew")}),(0,l.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.host")}),(0,l.jsx)("input",{type:"text",value:d,onChange:e=>m(e.target.value),placeholder:"github.com",className:db})]}),(0,l.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.username")}),(0,l.jsx)("input",{type:"text",value:p,onChange:e=>h(e.target.value),autoComplete:"off",className:db})]}),(0,l.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.token")}),(0,l.jsx)("input",{type:"password",value:f,onChange:e=>x(e.target.value),autoComplete:"new-password",className:db}),(0,l.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:[n("sc.cred.tokenHint")," ",(0,l.jsxs)("a",{href:"https://github.com/settings/tokens",target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-0.5 text-[var(--primary)] hover:underline",children:[n("sc.cred.tokenLink"),(0,l.jsx)(dg.A,{className:"h-2.5 w-2.5"})]})]})]})]}),b&&(0,l.jsx)("p",{className:"text-xs text-red-400",children:b})]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-3 py-2.5",children:[(0,l.jsx)("button",{onClick:t,className:"rounded px-3 py-1 text-xs font-medium text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:n("sc.cred.cancel")}),(0,l.jsx)("button",{onClick:j,disabled:g,className:"rounded bg-[var(--primary)] px-3 py-1 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:g?n("sc.cred.saving"):n("sc.cred.save")})]})]})}function dw(e){let{projectId:t,onClose:r}=e,n=(0,T.kj)(),[a,s]=(0,o.useState)([]),[i,c]=(0,o.useState)(!1),[d,m]=(0,o.useState)([]),[p,h]=(0,o.useState)("other"),[f,x]=(0,o.useState)(""),[g,v]=(0,o.useState)(!1),[b,y]=(0,o.useState)(null),[w,j]=(0,o.useState)(null),[k,N]=(0,o.useState)(""),[S,C]=(0,o.useState)(!1),[A,I]=(0,o.useState)(null),_=(0,o.useCallback)(()=>{u.FH.git.sshKeys().then(e=>s(e.keys)).catch(()=>s([])),u.FH.git.sshAgent().then(e=>{c(e.agentRunning),m(e.loadedKeys)}).catch(()=>{}),u.FH.git.getRemoteProtocol(t).then(e=>{h(e.protocol),x(e.url)}).catch(()=>{})},[t]);function P(){j(null),N(""),I(null)}async function M(e){C(!0),I(null);try{let r=await u.FH.git.unlockSshKey({keyPath:e.path,passphrase:k});if(r.ok)P(),_();else{var t;I(null!=(t=r.error)?t:n("sc.cred.sshUnlockFailed"))}}catch(e){I(e instanceof Error?e.message:String(e))}finally{C(!1)}}async function F(e){v(!0),y(null);try{let r=await u.FH.git.setRemoteProtocol(t,e);h(e),x(r.url)}catch(e){y(e instanceof Error?e.message:String(e))}finally{v(!1)}}return(0,o.useEffect)(()=>{_()},[_]),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex max-h-[420px] flex-col gap-3 overflow-y-auto px-4 py-4",children:[(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.sshDesc")}),(0,l.jsxs)("div",{className:"flex items-center gap-2 rounded bg-[var(--secondary)] px-2.5 py-1.5 text-xs",children:[(0,l.jsx)("span",{className:(0,E.cn)("h-2 w-2 rounded-full",i?"bg-emerald-400":"bg-[var(--muted-foreground)]")}),(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:i?n("sc.cred.sshAgentOn",{count:String(d.length)}):n("sc.cred.sshAgentOff")}),(0,l.jsx)("button",{onClick:_,className:"ml-auto rounded p-0.5 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",title:n("sc.cred.sshRefresh"),children:(0,l.jsx)(aD.A,{className:"h-3 w-3"})})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.sshKeys")}),0===a.length?(0,l.jsx)("p",{className:"rounded border border-dashed border-[var(--border)] px-2 py-3 text-center text-[10px] text-[var(--muted-foreground)]",children:n("sc.cred.sshNoKeys")}):a.map(e=>{let t=d.some(t=>t.includes(e.path)||t.includes(e.name)),r=w===e.path;return(0,l.jsxs)("div",{className:"rounded border border-[var(--border)]",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2.5 py-1.5 text-xs",children:[e.encrypted?(0,l.jsx)(tD.A,{className:"h-3 w-3 shrink-0 text-amber-400"}):(0,l.jsx)(sH.A,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"truncate text-[var(--foreground)]",children:e.name}),t?(0,l.jsx)("span",{className:"ml-auto text-[10px] text-emerald-400",children:n("sc.cred.sshLoaded")}):!r&&(0,l.jsx)("button",{onClick:()=>{j(e.path),N(""),I(null)},className:"ml-auto shrink-0 rounded bg-[var(--secondary)] px-2 py-0.5 text-[10px] font-medium text-[var(--foreground)] hover:opacity-90",children:n("sc.cred.sshUnlock")})]}),!t&&r&&(0,l.jsxs)("div",{className:"flex flex-col gap-1.5 border-t border-[var(--border)] px-2.5 py-2",children:[(0,l.jsx)("span",{className:"text-[10px] leading-relaxed text-[var(--muted-foreground)]",children:n("sc.cred.sshUnlockHint")}),(0,l.jsx)("input",{type:"password",autoFocus:!0,autoComplete:"off",value:k,onChange:e=>N(e.target.value),onKeyDown:t=>{"Enter"!==t.key||S||M(e)},placeholder:n("sc.cred.sshPassphrase"),className:db}),A&&(0,l.jsx)("span",{className:"text-[10px] leading-relaxed text-red-400",children:A}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,l.jsx)("button",{onClick:P,disabled:S,className:"rounded px-2 py-0.5 text-[10px] font-medium text-[var(--muted-foreground)] hover:bg-[var(--secondary)] disabled:opacity-40",children:n("sc.cred.cancel")}),(0,l.jsx)("button",{onClick:()=>M(e),disabled:S,className:"rounded bg-[var(--primary)] px-2 py-0.5 text-[10px] font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:S?n("sc.cred.sshUnlocking"):n("sc.cred.sshUnlock")})]})]})]},e.path)})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.sshRemote")}),(0,l.jsxs)("div",{className:"flex items-center gap-2 rounded bg-[var(--secondary)] px-2.5 py-1.5",children:[(0,l.jsx)("span",{className:"truncate text-[10px] text-[var(--muted-foreground)]",title:f,children:f||"—"}),(0,l.jsx)("div",{className:"ml-auto flex shrink-0 overflow-hidden rounded border border-[var(--border)]",children:["https","ssh"].map(e=>(0,l.jsx)("button",{onClick:()=>F(e),disabled:g||p===e,className:(0,E.cn)("px-2 py-0.5 text-[10px] font-medium",p===e?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)] disabled:opacity-40"),children:e.toUpperCase()},e))})]})]}),(0,l.jsx)("p",{className:"text-[10px] leading-relaxed text-[var(--muted-foreground)]",children:n("sc.cred.sshRestartNote")}),b&&(0,l.jsx)("p",{className:"text-xs text-red-400",children:b})]}),(0,l.jsx)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-3 py-2.5",children:(0,l.jsx)("button",{onClick:r,className:"rounded px-3 py-1 text-xs font-medium text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:n("sc.cred.close")})})]})}var dj=r(72526);function dk(e){return e.startsWith("HEAD -> ")?{kind:"head",label:e.slice(8)}:"HEAD"===e?{kind:"head",label:"HEAD"}:e.startsWith("tag: ")?{kind:"tag",label:e.slice(5)}:e.endsWith("/HEAD")?null:e.includes("/")?{kind:"remote",label:e}:{kind:"branch",label:e}}function dN(e){let{info:t}=e,r="tag"===t.kind?dj.A:dd.A,n="head"===t.kind?"bg-[var(--primary)] text-[var(--primary-foreground)] font-medium":"tag"===t.kind?"bg-amber-400/10 text-amber-300 ring-1 ring-inset ring-amber-400/30":"remote"===t.kind?"text-[var(--muted-foreground)] ring-1 ring-inset ring-[var(--border)]":"bg-[var(--secondary)] text-[var(--foreground)] ring-1 ring-inset ring-[var(--border)]";return(0,l.jsxs)("span",{className:(0,E.cn)("inline-flex items-center gap-1 rounded px-1.5 py-px text-[10px] leading-tight",n),children:[(0,l.jsx)(r,{className:"h-2.5 w-2.5 shrink-0"}),(0,l.jsx)("span",{className:"truncate",children:t.label})]})}function dS(e){let{file:t,active:r,onSelect:n}=e,a=j(t.status),{Icon:s,color:o}=ea(t.path),{name:i,dir:c}=function(e){let t=e.lastIndexOf("/");return -1===t?{name:e,dir:""}:{name:e.slice(t+1),dir:e.slice(0,t)}}(t.path);return(0,l.jsxs)("button",{onClick:n,className:(0,E.cn)("flex w-full items-center gap-1.5 py-0.5 pr-2 text-left text-xs",r?"bg-[var(--accent)]":"hover:bg-[var(--accent)]"),children:[(0,l.jsx)(s,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",o)}),(0,l.jsx)("span",{className:"shrink-0 truncate",style:{color:a.color},children:i}),c&&(0,l.jsx)("span",{className:"truncate text-[10px] text-[var(--muted-foreground)]",children:c}),(0,l.jsx)("span",{className:"flex-1"}),(0,l.jsx)("span",{className:"w-4 shrink-0 text-center font-mono text-[11px] font-semibold",style:{color:a.color},title:a.label,children:a.letter})]})}function dC(e){let{projectId:t}=e,r=(0,T.kj)(),n=df(e=>e.select),a=df(e=>e.selected),[s,i]=(0,o.useState)([]),[c,d]=(0,o.useState)(null),[m,p]=(0,o.useState)(!1),[h,f]=(0,o.useState)(null),[x,g]=(0,o.useState)(50),[v,b]=(0,o.useState)(!1),[y,w]=(0,o.useState)({}),j=(0,o.useRef)(null);C("".concat(t,"\n").concat(x),e=>u.FH.git.log(t,x,e),e=>{i(e.commits),b(e.commits.length>=x),d(null),p(!0)},e=>{d(e instanceof Error?e.message:String(e)),p(!0)}),(0,o.useEffect)(()=>{let e=j.current;if(!e||!v)return;let t=new IntersectionObserver(e=>{var t;(null==(t=e[0])?void 0:t.isIntersecting)&&g(e=>e+50)});return t.observe(e),()=>t.disconnect()},[v]);let k=(0,o.useCallback)(e=>{f(t=>t===e?null:e),w(r=>(r[e]||u.FH.git.commitFiles(t,e).then(t=>w(r=>({...r,[e]:t.files}))).catch(()=>w(t=>({...t,[e]:[]}))),r))},[t]);return c?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-red-400",children:c}):m&&0===s.length?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:r("sc.noCommits")}):(0,l.jsxs)("div",{className:"py-1",children:[s.map((e,t)=>{let s=0===t,o=h===e.hash,i=e.pushed?"var(--muted-foreground)":"var(--primary)",c=y[e.hash],d=e.refs?e.refs.split(",").map(e=>e.trim()).filter(Boolean).map(dk).filter(e=>null!==e):[];return(0,l.jsxs)("div",{className:"flex px-3",children:[(0,l.jsxs)("div",{className:"relative shrink-0",style:{width:24},children:[!s&&(0,l.jsx)("div",{className:"absolute left-1/2 w-px -translate-x-1/2 bg-[var(--primary)] opacity-30",style:{top:0,height:16}}),(0,l.jsx)("div",{className:"absolute left-1/2 w-px -translate-x-1/2 bg-[var(--primary)] opacity-30",style:{top:16,bottom:0}}),(0,l.jsx)("div",{className:(0,E.cn)("absolute left-1/2 z-10 -translate-x-1/2 rounded-full",s&&"border-2 bg-[var(--background)]"),style:{top:11,width:10,height:10,...s?{borderColor:i}:{backgroundColor:i}},title:e.pushed?r("sc.pushed"):r("sc.unpushed")})]}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{onClick:()=>k(e.hash),className:(0,E.cn)("cursor-pointer rounded-sm py-2",o?"bg-[var(--accent)]":"hover:bg-[var(--accent)]"),children:[(0,l.jsx)("div",{className:"truncate text-xs leading-4 text-[var(--foreground)]",children:e.message}),(0,l.jsxs)("div",{className:"mt-1 flex items-center gap-1.5 text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{className:"font-mono",children:e.shortHash}),(0,l.jsx)("span",{className:"truncate",children:e.author}),(0,l.jsxs)("span",{className:"shrink-0",children:["\xb7 ",(0,E.fw)(e.date)]})]}),d.length>0&&(0,l.jsx)("div",{className:"mt-1 flex flex-wrap gap-1",children:d.map(e=>(0,l.jsx)(dN,{info:e},"".concat(e.kind,":").concat(e.label)))})]}),o&&(0,l.jsx)("div",{className:"mb-1 ml-1 border-l border-[var(--border)] pl-2",children:void 0===c?(0,l.jsx)("div",{className:"py-1 text-[10px] text-[var(--muted-foreground)]",children:"…"}):0===c.length?(0,l.jsx)("div",{className:"py-1 text-[10px] text-[var(--muted-foreground)]",children:r("sc.noCommitFiles")}):c.map(t=>(0,l.jsx)(dS,{file:t,active:(null==a?void 0:a.commit)===e.hash&&a.path===t.path,onSelect:()=>n({path:t.path,staged:!1,from:t.from,commit:e.hash})},t.path))})]})]},e.hash)}),v&&(0,l.jsx)("div",{ref:j,className:"h-4"})]})}function dA(e){return/authentication|could not read username|permission denied|publickey|passphrase|\b401\b|\b403\b/i.test(e)}function dI(){var e,t,r;let n=(0,T.kj)(),a=rU(e=>{var t,r;return null!=(r=null==(t=e.activeProject)?void 0:t.id)?r:null}),s=df(e=>e.selected),i=df(e=>e.select),c=df(e=>e.clear),[d,m]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),[f,x]=(0,o.useState)(!1),[g,v]=(0,o.useState)(""),[b,y]=(0,o.useState)(!1),[w,j]=(0,o.useState)(null),[S,A]=(0,o.useState)(!1),[I,_]=(0,o.useState)(!1),[P,D]=(0,o.useState)(!1),[L,R]=(0,o.useState)("changes"),[H,z]=(0,o.useState)(null),[O,U]=(0,o.useState)(""),B=C(a,async e=>{var t;let r=await u.FH.git.status(a,e),n=!1===r.isRepo?null:await u.FH.git.remotes(a,e);return{res:r,remotes:null!=(t=null==n?void 0:n.remotes)?t:null}},e=>{let{res:t,remotes:r}=e;if(!1===t.isRepo){x(!0),m(null),z(null),h(null);return}m(t),x(!1),h(null),z(r)},e=>h(e instanceof Error?e.message:String(e))),W=null!=(e=null==d?void 0:d.files)?e:[],K=W.filter(e=>k(e.index)),G=W.filter(e=>N(e.workingDir));async function q(e){y(!0),j(null);try{await e(),await B()}catch(e){j(e instanceof Error?e.message:String(e))}finally{y(!1)}}let Y=(0,o.useCallback)((e,t)=>{i({path:e.path,staged:t,from:e.from})},[i]);function J(e){q(()=>u.FH.git.stage(a,e))}function Z(e){q(()=>u.FH.git.unstage(a,e))}async function V(){a&&g.trim()&&await q(async()=>{await u.FH.git.commit(a,g),v(""),c()})}function X(){a&&O.trim()&&q(async()=>{await u.FH.git.addRemote(a,O.trim()),U("")})}let Q=(null!=(t=null==H?void 0:H.length)?t:0)>0;return a?f?(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 bg-[var(--background)] p-6 text-center",children:[(0,l.jsx)(tV.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"max-w-[240px] text-xs text-[var(--muted-foreground)]",children:n("sc.initRepoDesc")}),(0,l.jsxs)("button",{onClick:function(){q(()=>u.FH.git.init(a))},disabled:b,className:"flex items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:[(0,l.jsx)(tV.A,{className:"h-3.5 w-3.5"}),n(b?"sc.initializing":"sc.initRepo")]}),w&&(0,l.jsx)("p",{className:"max-w-[240px] text-[11px] text-red-400",children:w})]}):(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 shrink-0 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(dd.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:n("nav.sourceControl")}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)("div",{className:"flex items-center rounded border border-[var(--border)]",children:[(0,l.jsx)("button",{onClick:()=>R("changes"),title:n("sc.viewChanges"),className:(0,E.cn)("rounded-l p-1","changes"===L?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(du.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:()=>R("graph"),title:n("sc.viewGraph"),className:(0,E.cn)("rounded-r p-1","graph"===L?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(dm.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("button",{onClick:()=>A(!0),title:n("sc.cred.title"),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)($.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:()=>{B()},title:n("sc.refresh"),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",b&&"animate-spin")})})]}),(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-[var(--border)] px-3 py-1.5",children:[(0,l.jsx)(dd.A,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"truncate text-xs font-medium text-[var(--foreground)]",children:null!=(r=null==d?void 0:d.branch)?r:"—"}),d&&(d.ahead>0||d.behind>0)&&(0,l.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-[var(--muted-foreground)]",children:[d.behind>0&&(0,l.jsxs)("span",{className:"flex items-center",children:[(0,l.jsx)(dp.A,{className:"h-3 w-3"}),d.behind]}),d.ahead>0&&(0,l.jsxs)("span",{className:"flex items-center",children:[(0,l.jsx)(oR.A,{className:"h-3 w-3"}),d.ahead]})]}),(0,l.jsx)("div",{className:"flex-1"}),Q&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{onClick:()=>void q(()=>u.FH.git.pull(a)),disabled:b,title:n("sc.pull"),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:opacity-40",children:(0,l.jsx)(dp.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:()=>void q(()=>u.FH.git.push(a)),disabled:b,title:n("sc.push"),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:opacity-40",children:(0,l.jsx)(oR.A,{className:"h-3.5 w-3.5"})})]})]}),!Q&&"changes"===L&&(0,l.jsxs)("div",{className:"flex shrink-0 flex-col gap-1.5 border-b border-[var(--border)] p-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5 text-[11px] text-[var(--muted-foreground)]",children:[(0,l.jsx)(oG.A,{className:"h-3.5 w-3.5 shrink-0"}),(0,l.jsx)("span",{children:n("sc.addRemoteDesc")})]}),(0,l.jsx)("input",{type:"text",value:O,onChange:e=>U(e.target.value),onKeyDown:e=>{"Enter"===e.key&&O.trim()&&X()},placeholder:n("sc.remotePlaceholder"),autoComplete:"off",className:"rounded border border-[var(--border)] bg-[var(--secondary)] px-2 py-1.5 font-mono text-[11px] text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none focus:border-[var(--primary)]"}),(0,l.jsxs)("button",{onClick:X,disabled:b||!O.trim(),className:"flex items-center justify-center gap-1.5 rounded bg-[var(--primary)] px-2 py-1 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:[(0,l.jsx)(oG.A,{className:"h-3.5 w-3.5"})," ",n(b?"sc.adding":"sc.addRemote")]})]}),"changes"===L&&(0,l.jsxs)("div",{className:"flex shrink-0 flex-col gap-1.5 border-b border-[var(--border)] p-2",children:[(0,l.jsx)("textarea",{value:g,onChange:e=>v(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&"Enter"===e.key&&(e.preventDefault(),V())},placeholder:n("sc.commitPlaceholder"),rows:2,className:"resize-none rounded border border-[var(--border)] bg-[var(--secondary)] px-2 py-1.5 text-xs text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none focus:border-[var(--primary)]"}),(0,l.jsxs)("button",{onClick:()=>void V(),disabled:b||!g.trim()||0===K.length,className:"flex items-center justify-center gap-1.5 rounded bg-[var(--primary)] px-2 py-1 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:[(0,l.jsx)(rP.A,{className:"h-3.5 w-3.5"})," ",n("sc.commit")]})]}),w&&(0,l.jsxs)("div",{className:"shrink-0 border-b border-[var(--border)] bg-red-500/10 px-3 py-2 text-[11px] text-red-400",children:[dA(w)?n("sc.authError"):w,dA(w)&&(0,l.jsx)("button",{onClick:()=>A(!0),className:"ml-1 underline hover:text-red-300",children:n("sc.openCreds")})]}),(0,l.jsx)("div",{className:"flex-1 overflow-y-auto",children:"graph"===L?(0,l.jsx)(dC,{projectId:a}):p?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-red-400",children:p}):0===W.length?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:n("sc.clean")}):(0,l.jsxs)(l.Fragment,{children:[K.length>0&&(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"group flex items-center gap-1 px-2 py-1",children:[(0,l.jsxs)("button",{onClick:()=>_(e=>!e),className:"flex flex-1 items-center gap-1 text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:[I?(0,l.jsx)(F.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(M.A,{className:"h-3.5 w-3.5"}),n("sc.staged")]}),(0,l.jsx)("button",{onClick:()=>Z(K.map(e=>e.path)),title:n("sc.unstageAll"),className:"hidden rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] group-hover:block",children:(0,l.jsx)(dh.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("span",{className:"rounded bg-[var(--secondary)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:K.length})]}),!I&&(0,l.jsx)(dx,{files:K,group:"staged",selectedPath:(null==s?void 0:s.staged)?s.path:null,onSelect:e=>Y(e,!0),onAction:Z})]}),G.length>0&&(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"group flex items-center gap-1 px-2 py-1",children:[(0,l.jsxs)("button",{onClick:()=>D(e=>!e),className:"flex flex-1 items-center gap-1 text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:[P?(0,l.jsx)(F.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(M.A,{className:"h-3.5 w-3.5"}),n("sc.changes")]}),(0,l.jsx)("button",{onClick:()=>J(G.map(e=>e.path)),title:n("sc.stageAll"),className:"hidden rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] group-hover:block",children:(0,l.jsx)(lC.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("span",{className:"rounded bg-[var(--secondary)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:G.length})]}),!P&&(0,l.jsx)(dx,{files:G,group:"changes",selectedPath:s&&!s.staged?s.path:null,onSelect:e=>Y(e,!1),onAction:J})]})]})}),S&&(0,l.jsx)(dv,{projectId:a,onClose:()=>A(!1),onSaved:()=>{}})]}):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center bg-[var(--background)] p-6 text-center",children:[(0,l.jsx)(dd.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"mt-2 text-xs text-[var(--muted-foreground)]",children:n("sc.noWorkspace")})]})}var dE=r(34016);function dT(){let e=(0,T.kj)(),t=rU(e=>{var t,r;return null!=(r=null==(t=e.activeProject)?void 0:t.id)?r:null}),r=df(e=>e.selected),[n,a]=(0,o.useState)(null),[s,i]=(0,o.useState)(!1),[c,d]=(0,o.useState)(null);return((0,o.useEffect)(()=>{if(!t||!r)return void a(null);let e=!1;return i(!0),d(null),u.FH.git.diff(t,r.path,r.staged,r.from,r.commit).then(t=>{e||a({original:t.original,modified:t.modified,path:r.path})}).catch(t=>{e||d(t instanceof Error?t.message:String(t))}).finally(()=>{e||i(!1)}),()=>{e=!0}},[t,r]),r)?(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-9 shrink-0 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(dE.A,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"truncate text-xs text-[var(--foreground)]",children:r.path}),(0,l.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:r.commit?"(".concat(r.commit.slice(0,7),")"):e(r.staged?"sc.diffStaged":"sc.diffWorking")})]}),(0,l.jsx)("div",{className:"flex-1 overflow-hidden",children:s?(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:e("sc.loadingDiff")}):c?(0,l.jsx)("div",{className:"px-4 py-3 text-xs text-red-400",children:c}):n?(0,l.jsx)(tM,{original:n.original,modified:n.modified,path:n.path}):null})]}):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center bg-[var(--background)] text-center",children:[(0,l.jsx)(dE.A,{className:"h-10 w-10 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:e("sc.selectFile")})]})}var d_=r(6023),dP=r(83599),dM=r(62803),dF=r(28109),dD=r(81208);function dL(e){let{expanded:t,title:r,desc:n}=e;return(0,l.jsxs)("span",{className:(0,E.cn)("min-w-0 flex-1 whitespace-nowrap pr-3 text-left transition-opacity duration-150 ease-out motion-reduce:transition-none",t?"opacity-100":"opacity-0"),children:[(0,l.jsx)("span",{className:"block truncate text-sm leading-5 text-[var(--foreground)]",children:r}),(0,l.jsx)("span",{className:"block truncate text-[11px] leading-4 text-[var(--muted-foreground)]",children:n})]})}let dR="text-[var(--muted-foreground)]/40",dH={fresh:"text-emerald-400",stale:"text-amber-400 animate-pulse",down:"text-[var(--destructive)]"};function dz(e){return window[e]}function dO(e){let[t,r]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let t=dz(e);t&&t.get().then(r)},[e]);let n=(0,o.useCallback)(()=>{let t=dz(e);t&&t.toggle().then(r)},[e]);return{available:!!dz(e),on:t,toggle:n}}function dU(e){let{items:t,expanded:r=!1,onOpenChange:n}=e,a=(0,T.kj)(),[s,i]=(0,o.useState)(!1);(0,o.useEffect)(()=>{null==n||n(s)},[s,n]);let c=(0,o.useRef)(null),d=t.filter(e=>e.available),u=d.some(e=>e.alert);(0,o.useEffect)(()=>{if(!s)return;let e=e=>{var t;(null==(t=c.current)?void 0:t.contains(e.target))||i(!1)},t=e=>{"Escape"===e.key&&i(!1)};return document.addEventListener("mousedown",e),window.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),window.removeEventListener("keydown",t)}},[s]);let m=e=>"string"==typeof e.state?e.state:a(e.state?"quick.on":"quick.off"),p="".concat(a("quick.title")," — ").concat(d.map(e=>"".concat(e.label," ").concat(m(e))).join(" \xb7 "));return(0,l.jsxs)("div",{ref:c,className:"relative w-full",children:[(0,l.jsxs)("button",{onClick:()=>i(e=>!e),title:p,"aria-expanded":s,className:(0,E.cn)("flex h-12 w-full items-center overflow-hidden transition-colors",u?"text-[var(--destructive)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",s&&"bg-[var(--secondary)]"),children:[(0,l.jsxs)("span",{className:"flex w-12 shrink-0 flex-col items-center justify-center gap-1",children:[(0,l.jsx)($.A,{className:"h-5 w-5"}),(0,l.jsx)("span",{className:"flex h-[3px] w-[30px] gap-[2px]",children:d.map(e=>(0,l.jsx)("span",{"data-segment":e.id,className:(0,E.cn)("flex-1 rounded-full bg-current",e.color)},e.id))})]}),(0,l.jsx)(dL,{expanded:r,title:a("quick.title"),desc:a("nav.desc.quick")})]}),s&&(0,l.jsxs)("div",{className:"absolute bottom-0 left-full z-[60] ml-1 w-[260px] rounded-lg border border-[var(--border)] bg-[var(--background)] py-1 shadow-lg",children:[(0,l.jsx)("div",{className:"px-3 py-1.5 text-[10px] font-medium uppercase tracking-wider text-[var(--muted-foreground)]",children:a("quick.panelTitle")}),d.map((e,t)=>{let r=e.icon,n=(0,l.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,l.jsx)("div",{className:"truncate text-xs text-[var(--foreground)]",children:e.title}),(0,l.jsx)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:e.subtitle})]}),a=t>0&&e.onToggle&&!d[t-1].onToggle?(0,l.jsx)("div",{className:"my-1 border-t border-[var(--border)]"}):null;if(!e.onToggle)return(0,l.jsxs)("div",{"data-row":e.id,className:"flex items-center gap-3 px-3 py-2",children:[(0,l.jsx)(r,{className:(0,E.cn)("h-4 w-4 shrink-0",e.color)}),n,(0,l.jsx)("span",{className:(0,E.cn)("shrink-0 text-[11px]",e.color),children:m(e)})]},e.id);let s=!0===e.state,o=s?oJ.A:oY.A;return(0,l.jsxs)("div",{children:[a,(0,l.jsxs)("button",{"data-row":e.id,role:"switch","aria-checked":s,onClick:e.onToggle,className:"flex w-full items-center gap-3 px-3 py-2 transition-colors hover:bg-[var(--secondary)]",children:[(0,l.jsx)(r,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),n,(0,l.jsx)(o,{className:(0,E.cn)("h-5 w-5 shrink-0",s?e.color:"text-[var(--muted-foreground)]")})]})]},e.id)})]})]})}let dB=null;function dW(){return dB?"[".concat(dB,"] "):""}let dK=["explorer","source-control","sessions","skills","channels","evolution","cron"],dG=null;function dq(e){var t,r;let{linkState:n}=e,{t:a,lang:s}=(0,T.s9)(),m=rU(e=>e.activeProject),p=rU(e=>e.openFolder),h=nJ(e=>e.isStreaming),[f,x]=(0,o.useState)(()=>localStorage.getItem("halo_sidebar_tab")||"explorer"),[v,b]=(0,o.useState)(()=>"false"!==localStorage.getItem("halo_sidebar_open")),[y,w]=(0,o.useState)("sessions"===f);"sessions"!==f||y||w(!0);let[j,S]=(0,o.useState)(""),[A,_]=(0,o.useState)(!1),{items:P,notifyOnFinish:M}=function(e){let t=(0,T.kj)(),r=dO("haloPin"),n=dO("haloAwake"),a=!!window.haloNotify||"Notification"in window,[s,l]=(0,o.useState)(()=>"true"===localStorage.getItem("halo_notify_on_finish")),i=(0,o.useCallback)(async()=>{let e=!!window.haloNotify;if(!s&&!e&&"Notification"in window){let e=Notification.permission;if("default"===e&&(e=await Notification.requestPermission()),"granted"!==e)return}l(e=>{let t=!e;try{localStorage.setItem("halo_notify_on_finish",String(t))}catch(e){}return t})},[s]);return{items:[{id:"network",icon:"down"===e?d_.A:dP.A,label:t("quick.network"),title:t("quick.networkTitle"),subtitle:t("quick.networkSub"),state:t("link.".concat(e)),color:dH[e],available:!0,alert:"down"===e},{id:"notify",icon:dM.A,label:t("quick.notify"),title:t("quick.notifyTitle"),subtitle:t("quick.notifySub"),state:s,color:s?"text-[var(--primary)]":dR,onToggle:()=>{i()},available:a},{id:"pin",icon:dF.A,label:t("quick.pin"),title:t("quick.pinTitle"),subtitle:t("quick.pinSub"),state:r.on,color:r.on?"text-[var(--primary)]":dR,onToggle:r.toggle,available:r.available},{id:"awake",icon:dD.A,label:t("quick.awake"),title:t("quick.awakeTitle"),subtitle:t("quick.awakeSub"),state:n.on,color:n.on?"text-amber-400":dR,onToggle:n.toggle,available:n.available}],notifyOnFinish:s}}(n),[F,D]=(0,o.useState)(!1),L=l_(F),R=L.close;(0,o.useEffect)(()=>{if(!L.open)return;let e=e=>{"Escape"===e.key&&R()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[L.open,R]),(0,o.useEffect)(()=>{let e=null==m?void 0:m.name;document.title=dW()+(e?"".concat(h?"● ":"","Halo — ").concat(e):"Halo")},[h,null==m?void 0:m.name]);let H=rn(),[z,O]=(0,o.useState)(null);!H&&z&&O(null),(0,o.useEffect)(()=>{if(!z)return;let e=setTimeout(()=>O(null),8e3);return()=>clearTimeout(e)},[z]),(0,o.useEffect)(()=>{if(M){var e;return e=e=>{!function(){try{let e=window.AudioContext||window.webkitAudioContext;if(!e)return;dG||(dG=new e);let t=dG;t.resume();let r=t.currentTime;[[880,0],[1174.66,.15]].forEach(e=>{let[n,a]=e,s=t.createOscillator(),l=t.createGain();s.type="sine",s.frequency.value=n,l.gain.setValueAtTime(1e-4,r+a),l.gain.exponentialRampToValueAtTime(.2,r+a+.02),l.gain.exponentialRampToValueAtTime(1e-4,r+a+.35),s.connect(l).connect(t.destination),s.start(r+a),s.stop(r+a+.4)})}catch(e){}}();let t=e.getState().sessionId,r=t?lM.get(t):void 0;if(t&&rr()&&O(e=>{var n;return{sessionIds:[t,...(null!=(n=null==e?void 0:e.sessionIds)?n:[]).filter(e=>e!==t)],title:r}}),document.hasFocus())return;let n=null==m?void 0:m.name,s=n?"Halo — ".concat(n):"Halo",l=r?a("status.notifyBodySession",{title:r}):a("status.notifyBody"),o=window.haloNotify;if(o)o.notify({title:s,body:l});else if("Notification"in window&&"granted"===Notification.permission){let e=new Notification(s,{body:l});e.onclick=()=>{window.focus(),e.close()}}},nU.add(e),()=>{nU.delete(e)}}},[M,null==m?void 0:m.name,a]),(0,o.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get("folder"),t=async(e,t)=>{try{let n=await u.FH.fs.resolveWorkspace(e);p(n.path,n.id),S(n.path),g(n.path);try{localStorage.setItem("halo_last_folder",n.path)}catch(e){}var r=n.path;let a=oO().filter(e=>e!==r);if(a.unshift(r),oU(a.slice(0,8)),t||n.path!==e){let e=new URL(window.location.href);e.searchParams.set("folder",n.path),window.history.replaceState({},"",e.toString())}}catch(e){return console.error("[Workspace] Failed to resolve workspace:",e),!1}return!0};if(e)t(e,!1);else{let e=(()=>{try{return localStorage.getItem("halo_last_folder")}catch(e){return null}})(),r=()=>u.FH.fs.home().then(e=>{let{home:r}=e;return t(r,!0)}).catch(e=>{console.error("[Workspace] Failed to resolve home dir:",e)});e?t(e,!0).then(e=>{e||r()}):r()}},[]);let[U,B]=(0,o.useState)(!1);(0,o.useEffect)(()=>{ex().then(()=>B(!0))},[]);let W=(0,o.useRef)(!1);(0,o.useEffect)(()=>{function e(e){W.current||("web"===ey()||0!==d.Uw.getState().modifiedPaths.size)&&e.preventDefault()}return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[]);let K=(0,o.useCallback)(()=>{let e=d.Uw.getState(),t=e.activeTab;if(!t)return!1;let r=e.tabs.find(e=>e.path===t);return(async()=>{(null==r||!r.modified||await (0,E.fN)('"'.concat(r.path.split("/").pop(),'" has unsaved changes. Close anyway?')))&&e.closeTab(t)})(),!0},[]);(0,o.useEffect)(()=>{function e(e){if((e.metaKey||e.ctrlKey)&&"p"===e.key&&(e.preventDefault(),_(e=>!e)),(e.metaKey||e.ctrlKey)&&"`"===e.key){e.preventDefault();let t=d.Uw.getState();t.bottomSplit||t.setBottomTab("terminal"===t.bottomTab?"chat":"terminal")}!e.altKey||"KeyW"!==e.code||e.metaKey||e.ctrlKey||(e.preventDefault(),K())}return window.addEventListener("keydown",e,!0),()=>window.removeEventListener("keydown",e,!0)},[K]),(0,o.useEffect)(()=>{let e=window.haloCloseShortcut;e&&e.onTrigger(()=>{K()||e.closeWindow()})},[K]),(0,o.useEffect)(()=>{function e(e){if("Escape"!==e.key||!d.Uw.getState().maximized)return;let t=document.activeElement;if(t){let e=t.tagName;if("INPUT"===e||"TEXTAREA"===e||t.isContentEditable||t.closest(".monaco-editor"))return}A||d.Uw.getState().setMaximized(!1)}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[A]),(0,o.useEffect)(()=>{let e=e=>{let t=e.detail;if(!(null==t?void 0:t.tab))return;let{bottomFloating:r}=d.Uw.getState();(!r||"explorer"!==t.tab||t.force)&&(x(t.tab),!1!==t.sidebar&&b(!0))};return window.addEventListener("halo:navigate",e),()=>window.removeEventListener("halo:navigate",e)},[]),(0,o.useEffect)(()=>{let e=e=>{var t;let r=null==(t=e.detail)?void 0:t.path;r&&q(r)};return window.addEventListener("halo:open-workspace",e),()=>window.removeEventListener("halo:open-workspace",e)},[]),(0,o.useEffect)(()=>{localStorage.setItem("halo_sidebar_tab",f),localStorage.setItem("halo_sidebar_open",String(v))},[f,v]);let G=(0,o.useRef)(!1);async function q(e){let t=e.trim();if(!t||G.current)return;G.current=!0;try{let e=await u.FH.fs.exists(t);if(!e.exists||!e.isDirectory){window.alert("Workspace not found: ".concat(t)),G.current=!1;return}}catch(e){window.alert(e instanceof Error?e.message:"Failed to validate path"),G.current=!1;return}let r=d.Uw.getState().tabs.filter(e=>e.modified);if(r.length>0){let e=r.map(e=>e.path.split("/").pop()).join(", ");if(!await (0,E.fN)("Unsaved changes in ".concat(e," will be lost. Switch workspace anyway?"))){G.current=!1;return}}W.current=!0;try{localStorage.setItem("halo_last_folder",t)}catch(e){}let n=new URL(window.location.href);n.searchParams.set("folder",t),window.location.href=n.toString()}let $=(0,o.useCallback)(async e=>{let t=null==m?void 0:m.id;if(t){if(d.Uw.getState().tabs.find(t=>t.path===e))return void d.Uw.getState().setActiveTab(e);try{let r=await u.FH.files.read(e,t),n=(0,E.sQ)(e);d.Uw.getState().openFile(e,r.content,n)}catch(e){console.error("[QuickOpen] Failed to read file:",e)}}},[m]),Y=[{id:"explorer",icon:oB.A,label:a("nav.explorer")},{id:"sessions",icon:aF.A,label:a("nav.sessions")},{id:"source-control",icon:dd.A,label:a("nav.sourceControl")},{id:"management",icon:aL.A,label:"Agents"},{id:"skills",icon:o$.A,label:"Skills"},{id:"channels",icon:i5.A,label:a("nav.channels")},{id:"evolution",icon:sL.A,label:"Evolution"},{id:"cron",icon:c7.A,label:a("nav.cron")},{id:"settings",icon:iN.A,label:a("nav.settings"),position:"bottom"}].map(e=>{let{icon:t,...r}=e;return{...r,icon:(0,l.jsx)(t,{className:"h-5 w-5"}),desc:a("nav.desc.".concat(r.id))}}),J=em(),Z=(0,o.useMemo)(()=>el.extensions.filter(e=>e.activity&&ej(e)).sort((e,t)=>e.activity.order-t.activity.order||e.id.localeCompare(t.id)),[J]),V=Z.map(e=>({id:nl(e.id),icon:(0,l.jsx)(ni,{info:e}),label:na(e,s),desc:function(e,t){var r,n,a;let s=e.activity;return null!=(a=null!=(n=null!=(r="zh"===t?null==s?void 0:s.description_zh:void 0)?r:null==s?void 0:s.description)?n:e.description)?a:""}(e,s)})),X=no(f)?Z.find(e=>nl(e.id)===f):void 0,Q=null!=(t=null==m?void 0:m.id)?t:null;C(Q,e=>Promise.all([u.FH.git.status(Q,e),u.FH.git.ignored(Q,e)]),e=>{let[t,r]=e,{setForProject:n,clearProject:a,setRepoStatus:s}=I.getState();if(!1===t.isRepo){a(Q),s(Q,!1);return}n(Q,function(e,t){let r=new Map,n=new Map;for(let t of e){var a,s;let e=(a=t.index,N(s=t.workingDir)?"?"===s?"?":s:k(a)?a:"");if(!e)continue;r.set(t.path,e);let l=t.path.split("/");for(let t=0;t<l.length-1;t++){let r=l.slice(0,t+1).join("/"),a=n.get(r);void 0===a?n.set(r,e):a!==e&&"*"!==a&&n.set(r,"*")}}return{files:r,dirs:n,ignored:new Set(t)}}(t.files,r.ignored)),s(Q,!0)},()=>{let{clearProject:e,setRepoStatus:t}=I.getState();e(Q),t(Q,!1)}),(0,o.useEffect)(()=>{if(Q)return()=>{let{clearProject:e,clearRepoStatus:t}=I.getState();e(Q),t(Q)}},[Q]);let ee=I(e=>{var t;return null!=(t=Q?e.repoStatus[Q]:void 0)?t:"unknown"}),et=Y.filter(e=>"bottom"!==e.position).filter(e=>"source-control"!==e.id||!1!==ee),er=Y.filter(e=>"bottom"===e.position),en=(0,d.Uw)(e=>e.maximized),ea=(0,d.Uw)(e=>e.bottomFloating),es=(0,d.Uw)(e=>e.bottomMaximized),eo=v&&!en,ei=dK.includes(f)&&v&&"explorer"!==f,ec="explorer"===f;(0,o.useEffect)(()=>{!1===ee&&"source-control"===f&&x("explorer")},[ee,f]),(0,o.useEffect)(()=>{U&&no(f)&&!X&&x("explorer")},[U,f,X]);let[ed]=(0,o.useState)(()=>{if("undefined"==typeof document)return null;let e=document.createElement("div");return e.className="h-full",e}),eu=(0,o.useRef)(null),[ep,eh]=(0,o.useState)(null),[ef,eg]=(0,o.useState)(null),[ev,eb]=(0,o.useState)(null),ew=ea?ev:es?ef:ep;(0,o.useLayoutEffect)(()=>{ed&&ew&&ed.parentElement!==ew&&ew.appendChild(ed)},[ed,ew]);let ek=e=>{let t=f===e.id;return(0,l.jsxs)("button",{onClick:()=>{var t;t=e.id,d.Uw.getState().maximized&&d.Uw.getState().setMaximized(!1),f===t&&v?b(!1):(x(t),b(!0)),L.close()},"aria-label":e.label,className:(0,E.cn)("relative flex h-12 w-full shrink-0 items-center overflow-hidden transition-colors hover:text-[var(--foreground)]",t?"text-[var(--foreground)]":"text-[var(--muted-foreground)]"),children:[t&&(0,l.jsx)("div",{className:"absolute left-0 top-1/2 h-6 w-0.5 -translate-y-1/2 rounded-r bg-[var(--primary)]"}),(0,l.jsx)("span",{className:"flex w-12 shrink-0 justify-center",children:e.icon}),(0,l.jsx)(dL,{expanded:L.open,title:e.label,desc:e.desc})]},e.id)};return(0,l.jsxs)("div",{className:"flex h-full",children:[(0,l.jsx)("div",{className:(0,E.cn)("relative w-12 shrink-0",en&&"hidden"),children:(0,l.jsxs)("div",{...L.bind,className:(0,E.cn)("absolute inset-y-0 left-0 flex flex-col border-r border-[var(--border)] bg-[var(--card)] py-2 transition-[width,box-shadow] duration-150 ease-out motion-reduce:transition-none",L.open?"w-60 shadow-[6px_0_16px_-6px_rgba(0,0,0,0.35)]":"w-12",F?"z-[60]":"z-[45]"),children:[(0,l.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto overflow-x-hidden [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:[et.map(ek),V.map(ek)]}),er.map(ek),(0,l.jsx)(dU,{items:P,expanded:L.open,onOpenChange:D})]})}),(0,l.jsx)("div",{className:(0,E.cn)("flex min-w-0 flex-1",!ec&&"hidden",en&&"fixed inset-0 z-40 bg-[var(--background)]"),children:(0,l.jsx)(d$,{showSidebar:eo,sidebar:(0,l.jsx)(oq,{projectId:Q,pathInput:j,onPathInputChange:S,onOpenFolder:function(){q(j)},onOpenPath:q,activeProject:m}),main:(0,l.jsx)(dY,{projectId:Q,showBottom:!ea&&!en,bottomSlotRef:eh})})}),y&&(0,l.jsx)("div",{className:(0,E.cn)("flex min-w-0 flex-1",("sessions"!==f||en)&&"hidden"),children:(0,l.jsx)(d$,{autoSaveId:"halo-h-sessions",showSidebar:v,sidebar:(0,l.jsx)(aK,{}),main:(0,l.jsx)(ik,{visible:"sessions"===f&&!en})})}),!ec&&"sessions"!==f&&!en&&(ei?(0,l.jsxs)(c.YZ,{direction:"horizontal",autoSaveId:"halo-h-sidebar",className:"flex-1",children:[(0,l.jsx)(c.Zk,{defaultSize:22,minSize:15,maxSize:40,children:(0,l.jsxs)("div",{className:"h-full overflow-hidden",children:["source-control"===f&&(0,l.jsx)(dI,{}),"skills"===f&&(0,l.jsx)(o1,{}),"channels"===f&&(0,l.jsx)(cH,{}),"evolution"===f&&(0,l.jsx)(c5,{}),"cron"===f&&(0,l.jsx)(dc,{})]})}),(0,l.jsx)(c.TW,{className:"w-px bg-[var(--border)] hover:w-1 hover:bg-[var(--primary)] transition-colors"}),(0,l.jsx)(c.Zk,{defaultSize:78,minSize:40,children:(0,l.jsx)(dJ,{activeTab:f})})]}):(0,l.jsx)("div",{className:"flex-1 min-w-0 overflow-hidden",children:X?(0,l.jsx)(nc,{info:X},"".concat(X.id,"@").concat(X.version)):(0,l.jsx)(dJ,{activeTab:f})})),A&&(0,l.jsx)(oL,{onSelect:$,onClose:()=>_(!1)}),ea&&(0,l.jsx)("div",{className:H?"hidden":"contents",children:(0,l.jsx)(oM,{slotRef:eb,dragHandleRef:eu})}),H&&z&&(0,l.jsxs)("div",{role:"status",onMouseDown:e=>e.preventDefault(),className:"fixed right-4 top-14 z-[80] flex max-w-[360px] items-center gap-3 rounded-lg border border-[var(--border)] bg-[var(--card)] px-3 py-2 text-xs text-[var(--foreground)] shadow-lg",children:[(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate",children:z.sessionIds.length>1?a("editor.immersive.repliedMany",{count:z.sessionIds.length}):a("editor.immersive.replied",{title:null!=(r=z.title)?r:a("chat.tabs.untitled")})}),(0,l.jsx)("button",{type:"button",onClick:()=>{var e;return e=z.sessionIds[0],void(O(null),rl({refocus:!1}),aa(e),d.Uw.getState().setBottomTab("chat"),requestAnimationFrame(()=>window.dispatchEvent(new CustomEvent("halo:focus-chat-input"))))},className:"shrink-0 font-medium text-[var(--primary)] hover:underline",children:a("editor.immersive.backToChat")})]}),es&&!ea&&(0,l.jsx)("div",{ref:eg,className:"fixed inset-0 z-50 bg-[var(--background)]"}),ed&&(0,i.createPortal)((0,l.jsx)(o_,{floating:ea,dragHandleRef:eu}),ed)]})}function d$(e){let{showSidebar:t,sidebar:r,main:n,autoSaveId:a="halo-h-sidebar"}=e,s=(0,o.useRef)(null),i=(0,o.useRef)([22,78]);return(0,o.useEffect)(()=>{let e=s.current;if(e)if(t)e.setLayout(i.current);else{let t=e.getLayout();t[0]>0&&(i.current=t),e.setLayout([0,100])}},[t]),(0,l.jsxs)(c.YZ,{ref:s,direction:"horizontal",autoSaveId:a,className:"flex-1",children:[(0,l.jsx)(c.Zk,{defaultSize:22,minSize:0,maxSize:40,collapsible:!0,children:(0,l.jsx)("div",{className:(0,E.cn)("h-full overflow-hidden",!t&&"hidden"),children:r})}),(0,l.jsx)(c.TW,{className:(0,E.cn)("w-px bg-[var(--border)] hover:w-1 hover:bg-[var(--primary)] transition-colors",!t&&"pointer-events-none opacity-0")}),(0,l.jsx)(c.Zk,{defaultSize:78,minSize:40,children:n})]})}function dY(e){let{projectId:t,showBottom:r,bottomSlotRef:n}=e,a=(0,o.useRef)(null),s=(0,o.useRef)([65,35]);return(0,o.useEffect)(()=>{let e=a.current;if(e)if(r)e.setLayout(s.current);else{let t=e.getLayout();t[1]>0&&(s.current=t),e.setLayout([100,0])}},[r]),(0,l.jsxs)(c.YZ,{ref:a,direction:"vertical",autoSaveId:"halo-v-editor",className:"h-full",children:[(0,l.jsx)(c.Zk,{defaultSize:65,minSize:20,children:(0,l.jsx)(r9,{projectId:t,mode:"editor-only"})}),(0,l.jsx)(c.TW,{className:(0,E.cn)("h-px bg-[var(--border)] hover:h-1 hover:bg-[var(--primary)] transition-colors",!r&&"pointer-events-none opacity-0")}),(0,l.jsx)(c.Zk,{defaultSize:35,minSize:0,collapsible:!0,children:(0,l.jsx)("div",{ref:n,className:(0,E.cn)("h-full",!r&&"hidden")})})]})}function dJ(e){let{activeTab:t}=e;return"source-control"===t?(0,l.jsx)(dT,{}):"management"===t?(0,l.jsx)(ih,{}):"skills"===t?(0,l.jsx)(ig,{}):"channels"===t?(0,l.jsx)(cz,{}):"evolution"===t?(0,l.jsx)(cJ,{}):"cron"===t?(0,l.jsx)(dr,{}):"settings"===t?(0,l.jsx)(iK,{}):null}var dZ=r(45966),dV=r(42883);let dX=/<<<SHOW:([\s\S]*?)>>>/g,dQ="[Face snapshot]",d0=null;async function d1(e,t,r){let n=t.getState(),a=n.screenSource,s=n.cameraSource,l=a?se():void 0,o=s?st():void 0,i=[];l&&i.push("screen"),o&&i.push("camera");let c=function(e,t){let r=new Set,n=!1;for(let a of e)for(let e of a.content.matchAll(aG))if(n=!0,e[1])r.add(e[1]);else for(let e of t)r.add(e);if(!n)return[];let a=t.filter(e=>r.has(e));return a.length>0?a:t}(r,i);if(0===c.length)return;let d=rU.getState().activeProject,u=n.sessionId;if(!d||!u)return;let m=(0,E.$C)(),p="undefined"!=typeof localStorage&&"zh"===localStorage.getItem("halo_lang")?dV.zh:dZ.en,h="image/jpeg",f=await Promise.all(c.map(async e=>{let t="camera"===e?s:a,r=null;try{r="camera"===e?await o.snap(t.id||void 0):await l.grab(t.id)}catch(e){r=null}return r?{base64:r,note:"[\uD83D\uDCF7 ".concat(t.name,"]"),msg:"camera"===e?"[Photo from the camera]":'[Screenshot of "'.concat(t.name,'"]')}:{base64:null,note:p["camera"===e?"capture.cameraFailNote":(null==l?void 0:l.web)?"capture.webFailNote":"capture.failNote"].replace("{name}",t.name),msg:"camera"===e?"[Could not take a photo from the camera — it may be in use by another app, or camera permission was revoked. Ask the user to check, then request the capture again.]":(null==l?void 0:l.web)?"[Could not capture the shared screen — sharing may have stopped, or the shared window is minimized. Ask the user to check, then request the capture again.]":'[Could not capture "'.concat(t.name,'" — it was likely occluded/minimized long enough that macOS purged its rendered frame (came back blank/black). Ask the user to briefly bring that window to the foreground, then request the capture again.]')}})),x=f.flatMap(e=>e.base64?[e.base64]:[]);n.addMessage({id:(0,E.$C)(),role:"user",content:f.map(e=>e.note).join("\n"),timestamp:Date.now(),clientMsgId:m,...x.length>0?{localImages:x.map(e=>"data:".concat(h,";base64,").concat(e))}:{}}),n.addMessage({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0});let g=n.selectedAgentId;e.send({type:"chat",sessionId:u,projectId:d.id,message:f.map(e=>e.msg).join("\n"),clientMsgId:m,..."default"!==g?{agentId:g}:{},...x.length>0?{images:x.map(e=>({data:e,mimeType:h}))}:{}})}function d3(e){let{onSuccess:t}=e,[r,n]=(0,o.useState)(""),[a,s]=(0,o.useState)(""),[i,c]=(0,o.useState)(!1),d=(0,o.useCallback)(async e=>{if(e.preventDefault(),r.trim()){c(!0),s("");try{(await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:r.trim()}),credentials:"include"})).ok?t():(s("Incorrect password"),n(""))}catch(e){s("Connection failed")}finally{c(!1)}}},[r,t]);return(0,l.jsx)("div",{className:"flex h-screen w-screen items-center justify-center bg-[var(--background)]",children:(0,l.jsxs)("div",{className:"w-full max-w-sm px-6",children:[(0,l.jsxs)("div",{className:"text-center",children:[(0,l.jsx)("div",{className:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-xl bg-[var(--secondary)]",children:(0,l.jsx)(tD.A,{className:"h-7 w-7 text-[var(--foreground)]"})}),(0,l.jsx)("h1",{className:"text-xl font-semibold text-[var(--foreground)]",children:"Halo"}),(0,l.jsx)("p",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:"Enter password to access workspace"})]}),(0,l.jsxs)("form",{onSubmit:d,className:"mt-8",children:[(0,l.jsx)("input",{type:"password",value:r,onChange:e=>n(e.target.value),placeholder:"Password",autoFocus:!0,className:"w-full rounded-md border border-[var(--border)] bg-[var(--secondary)] px-3 py-2.5 text-sm text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none focus:border-[var(--primary)] focus:ring-1 focus:ring-[var(--primary)]"}),a&&(0,l.jsx)("p",{className:"mt-2 text-xs text-red-400",children:a}),(0,l.jsx)("button",{type:"submit",disabled:i||!r.trim(),className:"mt-4 w-full rounded-md bg-[var(--primary)] px-3 py-2.5 text-sm font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90 disabled:opacity-50",children:i?"Verifying...":"Login"})]})]})})}function d2(){let{linkState:e}=function(){let[e,t]=(0,o.useState)(!1),[r,n]=(0,o.useState)("down"),a=(0,o.useRef)(!1);return(0,o.useEffect)(()=>{if(a.current)return;a.current=!0,p.connect();let e=[p.on("_connected",()=>{t(!0),n("fresh");let e=rU.getState().activeProject;(null==e?void 0:e.id)&&n2.getState().projectId===e.id&&p.send({type:"subscribe",sessionId:function(){var e;let{tabs:t,activeTabId:r}=n2.getState();for(let e of t)e.tabId!==r&&au(e);return null!=(e=n$().getState().sessionId)?e:""}(),projectId:e.id})}),p.on("_disconnected",()=>{t(!1),n("down")}),function(e){var t;let r=[];r.push((tw=t=(t,r)=>(function(e,t,r){let n=rU.getState().activeProject,a=n$();if(d0&&d0!==a)return ty("snap skipped (tab switched)"),!1;let s=a.getState(),l=s.sessionId;if(!n||!l)return ty("snap skipped (no session)"),!1;let o=(0,E.$C)();s.addMessage({id:(0,E.$C)(),role:"user",content:dQ,timestamp:Date.now(),clientMsgId:o,localImages:["data:".concat(r,";base64,").concat(t)]}),s.messages.some(e=>e.streaming&&"assistant"===e.role&&!e.taskId)||s.addMessage({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0});let i=s.selectedAgentId;return e.send({type:"chat",sessionId:l,projectId:n.id,message:dQ,clientMsgId:o,..."default"!==i?{agentId:i}:{},images:[{data:t,mimeType:r}]}),!0})(e,t,r),()=>{tw===t&&(tw=null)})),r.push(e.on("_chat_send_failed",e=>{e.clientMsgId&&nK(t=>t.getState().markChatSendFailed(e.clientMsgId))})),r.push(e.on("_disconnected",()=>void(nE=Date.now())));let n=setInterval(()=>{nK(e=>e.getState().convergeStaleStreaming())},5e3);r.push(()=>clearInterval(n)),r.push(e.on("chat:thinking",e=>{var t;null==(t=ad(e.sessionId))||t.getState().appendThinking(e.text,e.agentName,void 0,e.turnId)})),r.push(e.on("chat:stream",e=>{var t;null==(t=ad(e.sessionId))||t.getState().updateLastAssistant(e.text,e.agentName,void 0,e.turnId)})),r.push(e.on("chat:discard",e=>{var t;null==(t=ad(e.sessionId))||t.getState().discardTurnText(e.turnId)})),r.push(e.on("chat:complete",t=>{let r=ad(t.sessionId);if(!r)return;let n=r.getState();n.completeAgentStreaming(void 0,void 0,t.batchBoundary);let a=n.takeRoundReplies();if(r===n$()){d1(e,r,a),a.length>0&&(tj=!1,d0=r);for(let e of a)for(let t of e.content.matchAll(dX)){let e=t[1].trim();e&&function(e){for(let r of tf)try{var t;null==(t=r.contentWindow)||t.postMessage({haloFace:e},"*")}catch(e){}}(e)}}})),r.push(e.on("chat:stopped",e=>{var t;null==(t=ad(e.sessionId))||t.getState().completeAgentStreaming()})),r.push(e.on("error",e=>{var t,r;let n=null==(t=ad(e.sessionId))?void 0:t.getState();if(!n)return;let a=e.code?null!=(r=e.error)?r:"":e.error?"Error: ".concat(e.error):"An unknown error occurred.";n.addMessage({id:(0,E.$C)(),role:"system",content:a,timestamp:Date.now(),agentName:e.agentName}),e.taskId||n.completeAgentStreaming(e.agentName)})),r.push(e.on("chat:followup",e=>{var t;let r=null==(t=ad(e.sessionId))?void 0:t.getState();if(r){if(e.replay){let t=r.takeReplaySnapshot();t?r.setMessages(t):r.completeAgentStreaming(e.agentName)}else r.completeAgentStreaming(e.agentName);r.addMessage({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0,agentName:e.agentName})}})),r.push(e.on("chat:user",e=>{var t;null==(t=ad(e.sessionId))||t.getState().addMessage({id:(0,E.$C)(),role:"user",content:e.text,timestamp:Date.now()})})),r.push(e.on("chat:usage",e=>{var t;let r=null==(t=ad(e.sessionId,!1))?void 0:t.getState();r&&(r.setTokenUsage(e.contextTokens,e.outputTokens),e.usage&&r.addMessage({type:"usage",role:"system",content:"[Usage] in=".concat(e.usage.inputTokens," out=").concat(e.usage.outputTokens," cache=").concat(e.usage.cacheReadInputTokens),usage:e.usage,turnId:e.turnId,modelId:e.modelId}))})),r.push(e.on("session:switched",t=>{if(!t.sessionId)return;if(t.clientMsgId&&t.fromSessionId){var r;null==(r=ac(t.fromSessionId))||r.getState().dropOptimisticSend(t.clientMsgId)}let n=as(t.sessionId),a=rU.getState().activeProject;n&&a&&e.send({type:"subscribe",sessionId:n,projectId:a.id})})),r.push(e.on("session:compacted",e=>{var t,r;let n=ad(e.sessionId);if(!n)return;let a=null!=(t=e.message)?t:"Context compacted",s=n.getState();s.setCompacting(!1),l(n),s.setTokenUsage(null!=(r=e.contextTokens)?r:0,s.outputTokens),s.addMessage({id:(0,E.$C)(),role:"system",content:a,timestamp:Date.now()})}));let a=new Map;function s(e){l(e),a.set(e,setTimeout(()=>{a.delete(e),e.getState().setCompacting(!1)},6e4))}function l(e){let t=a.get(e);void 0!==t&&(clearTimeout(t),a.delete(e))}for(let t of(r.push(()=>{for(let e of a.values())clearTimeout(e);a.clear()}),r.push(e.on("chat:system",e=>{let t=ad(e.sessionId);if(!t)return;let r=t.getState(),n=e.text;if(!e.taskId){let e=n.match(/^Compacting context \((\d+)K tokens\)…$/);if(e&&(r.setCompacting(!0),s(t),"0"===e[1])){let e=t.getState().contextTokens;e>0&&(n="Compacting context (~".concat(Math.round(e/1e3),"K tokens)…"))}}r.addMessage({id:(0,E.$C)(),role:"system",content:n,timestamp:Date.now(),taskId:e.taskId,agentName:e.agentName})})),r.push(e.on("chat:queued",e=>{var t,r;null==(t=ad(e.sessionId))||t.getState().addMessage({id:(0,E.$C)(),role:"system",content:null!=(r=e.message)?r:"Message queued.",timestamp:Date.now()})})),["compact:progress","compact:started","compact:summarizing"]))r.push(e.on(t,e=>{let t=ad(e.sessionId,!1);t&&(t.getState().setCompacting(!0),s(t))}));return r.push(e.on("compact:done",e=>{let t=ad(e.sessionId,!1);t&&(t.getState().setCompacting(!1),l(t))})),()=>r.forEach(e=>e())}(p),function(e){let t=[];return t.push(e.on("agent:start",e=>{var t;let r=null==(t=ad(e.sessionId))?void 0:t.getState();r&&r.addMessage({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0,agentName:e.agentName,taskId:e.taskId})})),t.push(e.on("agent:done",e=>{var t;let r=null==(t=ad(e.sessionId))?void 0:t.getState();r&&r.completeAgentStreaming(e.agentName,e.taskId)})),t.push(e.on("agent:context",e=>{var t,r;let n=null==(t=ad(e.sessionId))?void 0:t.getState();n&&n.addMessage({id:(0,E.$C)(),role:"system",content:"[System Prompt: ".concat(null!=(r=e.agentName)?r:"Agent","]"),timestamp:Date.now(),agentName:e.agentName,taskId:e.taskId,systemPrompt:e.systemPrompt})})),t.push(e.on("agent:tool_call",e=>{var t,r,n,a;let s=null==(t=ad(e.sessionId))?void 0:t.getState();if(!s)return;let l=null!=(r=e.agentName)?r:"default",o="string"==typeof e.input?e.input:JSON.stringify(null!=(n=e.input)?n:{});s.addToolCallToLastAssistant({name:null!=(a=e.tool)?a:"",input:o,toolUseId:e.toolUseId},l,e.taskId,e.turnId)})),t.push(e.on("agent:tool_result",e=>{var t,r,n;let a=null==(t=ad(e.sessionId))?void 0:t.getState();if(!a)return;let s=null!=(r=e.agentName)?r:"default",l="string"==typeof e.result?e.result:JSON.stringify(null!=(n=e.result)?n:"");a.updateLastToolCallResult(l,s,e.taskId,e.toolUseId)})),()=>t.forEach(e=>e())}(p),function(e){let t=[];return t.push(e.on("file:changed",e=>{let t=d.Uw.getState();"add"===e.action||"addDir"===e.action?t.insertFileNode(e.path,"addDir"===e.action?"directory":"file"):("unlink"===e.action||"unlinkDir"===e.action)&&t.removeFileNode(e.path)})),()=>t.forEach(e=>e())}(p),function(e){let t=[];return t.push(e.on("state:snapshot",e=>{var t,r,n;let{snapshot:a}=e,s=ad(a.sessionId,!1);if(!s)return;let l=s.getState();if(a.sessionId){let e=null!=(t=a.archiveCount)?t:0;!function(e,t){var r,n;let a=n9(t=>t.store===e);if(!a)return;let s=Math.max(null!=(r=a.archiveCount)?r:0,t);(a.loading||s!==(null!=(n=a.archiveCount)?n:0))&&n7(a.tabId,{loading:!1,archiveCount:s})}(s,e),s===n$()&&nX(a.sessionId,e)}a.agentId&&l.setSelectedAgentId(a.agentId),void 0!==a.accessLevel&&l.setAccessLevel(null!=(r=a.accessLevel)?r:"full");let o=s.getState().messages.some(e=>e.streaming&&!nI(e)),i=null!=(n=a.recentMessages)?n:a.messages;i&&a.sessionId&&l.noteSnapshot(a.sessionId,i),!o&&i&&i.length>0&&l.setMessages(ib(s.getState().messages,i)),"number"==typeof a.maxContextTokens&&a.maxContextTokens>0&&l.setMaxContextTokens(a.maxContextTokens)})),t.push(e.on("exchange:deleted",t=>{var r;let{sessionId:n,deletedIds:a,userOrdinal:s,userRows:l}=t,o=ad(n,!1);if(!o||o.getState().markDeleted(a,s,l))return;let i=null==(r=rU.getState().activeProject)?void 0:r.id;i&&e.send({type:"subscribe",sessionId:n,projectId:i})})),t.push(e.on("listener:released",t=>{let{sessionId:r}=t,n=rU.getState().activeProject;if(!(null==n?void 0:n.id)||!r)return;let a=ac(r);if(a){if(a!==n$())return void function(e){let{tabs:t,activeTabId:r}=n2.getState(),n=t.find(t=>t.sessionId===e);n&&n.tabId!==r&&au(n)}(r);e.send({type:"subscribe",sessionId:r,projectId:n.id})}})),t.push(e.on("session:changed",()=>aT())),t.push(h(e,()=>aT())),t.push(e.on("goal:changed",()=>{var e;let t=null==(e=rU.getState().activeProject)?void 0:e.id;t&&ah(t),aT()})),t.push(e.on("extension:changed",e=>{let{extensions:t,disabled:r,errors:n}=e;eh({extensions:t,disabled:r,errors:n}),lq()})),t.push(h(e,()=>{u.FH.extensions.list().then(eh).catch(()=>{})})),t.push(e.on("skills:changed",()=>lq())),t.push(e.on("models:changed",()=>s$())),t.push(h(e,()=>s$())),()=>t.forEach(e=>e())}(p)],r=()=>p.reconnectIfStale(0);window.addEventListener("online",r);let s=0,l=()=>{if(document.hidden){s=Date.now();return}s>0&&Date.now()-s>=3e5&&p.reconnectIfStale(45e3),s=0};document.addEventListener("visibilitychange",l);let o=setInterval(()=>{n(p.connected?p.lastReceiveAgeMs>45e3?"stale":"fresh":"down")},5e3);return()=>{e.forEach(e=>e()),window.removeEventListener("online",r),document.removeEventListener("visibilitychange",l),clearInterval(o),p.disconnect(),a.current=!1}},[]),{connected:e,linkState:r,send:(0,o.useCallback)(e=>{p.send(e)},[])}}(),[t,r]=(0,o.useState)("checking");(0,o.useEffect)(()=>{fetch("/api/auth/check",{credentials:"include"}).then(async e=>{let t=await e.json().catch(()=>null);var n=null==t?void 0:t.badge;let a="string"==typeof n&&n.trim()?n.trim():null;a&&!dB&&(dB=a,document.title=dW()+document.title,function(e){let t=document.createElement("canvas");t.width=64,t.height=64;let r=t.getContext("2d");if(!r)return;r.beginPath(),r.moveTo(14.08,0),r.arcTo(64,0,64,64,14.08),r.arcTo(64,64,0,64,14.08),r.arcTo(0,64,0,0,14.08),r.arcTo(0,0,64,0,14.08),r.closePath();let n=r.createLinearGradient(0,0,64,64);n.addColorStop(0,"#0e1430"),n.addColorStop(1,"#070a16"),r.fillStyle=n,r.fill(),r.clip();for(let[e,t]of[[8.96,.55],[13.44,.3]])r.beginPath(),r.arc(32,21.12,e,0,2*Math.PI),r.strokeStyle="rgba(125, 140, 255, ".concat(t,")"),r.lineWidth=2.24,r.stroke();let a=r.createRadialGradient(32,21.12,0,32,21.12,6.4);a.addColorStop(0,"#d8e6ff"),a.addColorStop(1,"#8aa6ff"),r.beginPath(),r.arc(32,21.12,6.4,0,2*Math.PI),r.fillStyle=a,r.fill();r.fillStyle="#e8401c",r.fillRect(0,64-26.88,64,26.88),r.fillStyle="#ffffff",r.textAlign="center",r.textBaseline="middle";let s=Math.round(22.0416);r.font="bold ".concat(s,"px system-ui, sans-serif");for(;s>8&&r.measureText(e).width>58.88;)s-=1,r.font="bold ".concat(s,"px system-ui, sans-serif");r.fillText(e,32,51.56),document.querySelectorAll('link[rel="icon"]').forEach(e=>e.remove());let l=document.createElement("link");l.rel="icon",l.type="image/png",l.href=t.toDataURL("image/png"),document.head.appendChild(l)}(a.slice(0,4))),ap.getState().setEnabled(e.ok&&(null==t?void 0:t.goalModeEnabled)===!0),r(e.ok?"authenticated":"login")}).catch(()=>{r("login")})},[]),(0,o.useEffect)(()=>p.on("_auth_expired",()=>{r("login")}),[]);let n=(0,o.useCallback)(()=>{r("authenticated"),window.location.reload()},[]);return"checking"===t?(0,l.jsx)("div",{className:"flex h-screen w-screen items-center justify-center bg-[var(--background)]",children:(0,l.jsx)("div",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading..."})}):"login"===t?(0,l.jsx)(d3,{onSuccess:n}):(0,l.jsx)("div",{className:"h-screen w-screen overflow-hidden bg-[var(--background)]",children:(0,l.jsx)(dq,{linkState:e})})}},79906:(e,t,r)=>{"use strict";r.d(t,{p:()=>i});var n=r(41440),a=r(54604),s=r(9239),l=r(40909),o=r(17119);function i(e){let{src:t,alt:r,className:i,placeholderClassName:c,onLoad:d,onError:u,...m}=e,p=(0,o.kj)(),h=(0,a.useRef)(null),[f,x]=(0,a.useState)({src:t,status:"loading"}),g=t?f.src===t?f.status:"loading":"error";(0,a.useLayoutEffect)(()=>{let e=h.current;(null==e?void 0:e.complete)&&e.naturalWidth>0&&x({src:t,status:"loaded"})},[t]);let v="loaded"!==g;return(0,n.jsx)("span",{role:"error"===g?"img":void 0,"aria-label":"error"===g?r||p("common.imageUnavailable"):void 0,"aria-busy":"loading"===g||void 0,title:"error"===g&&r?r:void 0,className:(0,l.cn)("contents",v&&"relative inline-flex max-w-full items-center justify-center overflow-hidden rounded align-middle bg-[var(--secondary)]/40 text-[var(--muted-foreground)]",v&&(null!=c?c:"aspect-video w-64"),"loading"===g&&"animate-pulse","error"===g&&"flex-col gap-1.5 border border-[var(--border)] p-2 text-center text-xs"),children:"error"===g?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.A,{className:"h-5 w-5 shrink-0"}),(0,n.jsx)("span",{children:p("common.imageUnavailable")})]}):(0,n.jsx)("img",{ref:h,src:t,alt:r,...m,className:(0,l.cn)(i,"loading"===g&&"absolute inset-0 h-full w-full opacity-0")||void 0,onLoad:e=>{x({src:t,status:"loaded"}),null==d||d(e)},onError:e=>{x({src:t,status:"error"}),null==u||u(e)}},String(t))})}}},e=>{e.O(0,[7772,4560,1607,1989,1946,9698,7358],()=>e(e.s=44652)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{17119:(e,t,r)=>{"use strict";r.d(t,{kj:()=>n.useT,pZ:()=>a.LanguageSelect,s9:()=>n.useI18n});var n=r(19882);r(38115);var a=r(53804);r(24554)},27173:(e,t,r)=>{"use strict";r.d(t,{SQ:()=>o,Tv:()=>s,_H:()=>l,dj:()=>a});var n=r(54604);let a=["png","jpg","jpeg","gif","webp","svg","bmp","ico","avif"],s=["mp4","webm","ogg","mov","avi","mkv"],l=["mp3","wav","flac","aac","m4a","wma"],o={id:"media",extensions:[...a,...s,...l],Component:(0,n.lazy)(()=>r.e(5287).then(r.bind(r,65287)).then(e=>({default:e.MediaPreview})))}},29562:(e,t,r)=>{"use strict";r.d(t,{Ar:()=>x,Uw:()=>h,_r:()=>g,nm:()=>o,y:()=>l});var n=r(54604),a=r(60252),s=r(56207);function l(e,t){return"".concat(null!=e?e:"","/").concat(t)}function o(e,t){let r=s.wG.__getMonacoInstance();if(r)for(let a of t){var n;null==(n=r.editor.getModel(r.Uri.parse(l(e,a))))||n.dispose()}}let i=1;function c(){return"g".concat(i++)}function d(e){let t=e.groups[e.activeGroupIdx];if(!t)return{tabs:[],activeTab:null};let r=[];for(let n of t.tabs){let t=e.buffers[n];t&&r.push(t)}return{tabs:r,activeTab:t.activeTab}}function u(e,t,r,n){let a=e.buffers[r]?e.buffers:{...e.buffers,[r]:n()},s=e.groups[t],l=s.tabs.includes(r)?s.tabs:[...s.tabs,r];return{buffers:a,groups:e.groups.map((e,n)=>n===t?{...e,tabs:l,activeTab:r}:e)}}function m(e,t){let r={...e,children:e.children&&[...e.children]},n=r,a=0;for(let e of t){if(!n.children)break;let t=n.children.findIndex(t=>t.name===e&&"directory"===t.type);if(-1===t)break;let r={...n.children[t]};r.children&&(r.children=[...r.children]),n.children[t]=r,n=r,a++}return{root:r,node:n,depth:a}}function p(){return(0,a.v)((e,t)=>({buffers:{},groups:[{id:c(),tabs:[],activeTab:null}],activeGroupIdx:0,tabs:[],activeTab:null,modelPathPrefix:null,setModelPathPrefix(r){t().modelPathPrefix!==r&&e({modelPathPrefix:r})},pinnedTab:null,pinTab(r,n){let a=r.path,s=t().buffers[a];e(e=>{let t=e.groups.findIndex(e=>e.tabs.includes(a)),s=e.pinnedTab===a&&t>=0?t:e.activeGroupIdx,l=e.groups.map((e,t)=>{var r,l;if(t!==s){if(!e.tabs.includes(a))return e;let t=e.tabs.filter(e=>e!==a),r=e.activeTab===a?null!=(l=t[Math.min(e.tabs.indexOf(a),t.length-1)])?l:null:e.activeTab;return{...e,tabs:t,activeTab:r}}let o=[a,...e.tabs.filter(e=>e!==a)];return{...e,tabs:o,activeTab:n?a:null!=(r=e.activeTab)?r:a}}),o=l.length>1?l.filter(e=>e.tabs.length>0):l,i=o.indexOf(l[s]),c=n||o.length!==l.length?i:e.activeGroupIdx,u={...e.buffers,[a]:r},m=e.modifiedPaths.has(a)?(()=>{let t=new Set(e.modifiedPaths);return t.delete(a),t})():e.modifiedPaths,p={...e,buffers:u,groups:o,activeGroupIdx:c,modifiedPaths:m};return{buffers:u,groups:o,activeGroupIdx:c,modifiedPaths:m,pinnedTab:a,...d(p)}}),s&&!s.preview&&o(t().modelPathPrefix,[a])},unpinTab(){let r=t().pinnedTab;r&&(e({pinnedTab:null}),t().closeTab(r))},fileTree:null,modifiedPaths:new Set,rejectedFile:null,bottomTab:"terminal"===localStorage.getItem("halo_bottom_tab")?"terminal":"chat",maximized:"true"===localStorage.getItem("halo_editor_maximized"),bottomFloating:"true"===sessionStorage.getItem("halo_bottom_floating"),bottomMaximized:"true"===localStorage.getItem("halo_bottom_maximized"),pendingReveal:null,bottomSplit:"true"===localStorage.getItem("halo_bottom_split"),bottomFloatRect:(()=>{let e=sessionStorage.getItem("halo_bottom_float_rect");if(e)try{return JSON.parse(e)}catch(e){}return{x:Math.max(0,window.innerWidth-480-24),y:Math.max(0,window.innerHeight-640-24),w:480,h:640}})(),selectedText:null,selectedRange:null,contextEnabled:"false"!==localStorage.getItem("halo_context_enabled"),setSelectedText(t,r){e({selectedText:t||null,selectedRange:null!=r?r:null})},setContextEnabled(t){e({contextEnabled:t}),localStorage.setItem("halo_context_enabled",String(t))},openFile(r,n,a,s,l){if(r===t().pinnedTab)return void t().setActiveTab(r);e(e=>{let{buffers:t,groups:o}=u(e,e.activeGroupIdx,r,()=>({path:r,content:n,originalContent:n,language:a,mtime:s,size:null==l?void 0:l.size,createdAt:null==l?void 0:l.createdAt,...(null==l?void 0:l.readOnly)?{readOnly:!0}:{}})),i={...e,buffers:t,groups:o};return{buffers:t,groups:o,...d(i)}})},openPreview(r,n,a,s){if(r===t().pinnedTab)return void t().setActiveTab(r);e(e=>{let{buffers:t,groups:l}=u(e,e.activeGroupIdx,r,()=>({path:r,content:"",originalContent:"",language:"",preview:{downloadUrl:n,viewUrl:a,tooLarge:null==s?void 0:s.tooLarge,...(null==s?void 0:s.bundle)?{bundle:!0}:{}},size:null==s?void 0:s.size,mtime:null==s?void 0:s.mtime,createdAt:null==s?void 0:s.createdAt,...(null==s?void 0:s.readOnly)?{readOnly:!0}:{}})),o={...e,buffers:t,groups:l};return{buffers:t,groups:l,...d(o)}})},openFileInGroup(r,n,a,s,l,o){if(n===t().pinnedTab)return void t().setActiveTab(n);e(e=>{if(r<0||r>=e.groups.length)return e;let{buffers:t,groups:i}=u(e,r,n,()=>({path:n,content:a,originalContent:a,language:s,mtime:l,size:null==o?void 0:o.size,createdAt:null==o?void 0:o.createdAt})),c={...e,buffers:t,groups:i,activeGroupIdx:r};return{buffers:t,groups:i,activeGroupIdx:r,...d(c)}})},closeTab(r){if(r===t().pinnedTab)return;e(e=>{let t=e.groups.map(e=>{if(!e.tabs.includes(r))return e;let t=e.tabs.filter(e=>e!==r),n=e.activeTab;if(n===r){var a;n=null!=(a=t[Math.min(e.tabs.indexOf(r),t.length-1)])?a:null}return{...e,tabs:t,activeTab:n}}),n=t.some(e=>e.tabs.includes(r)),a=n?e.buffers:(()=>{let{[r]:t,...n}=e.buffers;return n})(),s=n?e.modifiedPaths:(()=>{if(!e.modifiedPaths.has(r))return e.modifiedPaths;let t=new Set(e.modifiedPaths);return t.delete(r),t})(),l=t.length>1&&0===t[1].tabs.length?{groups:[t[0]],activeGroupIdx:0}:{groups:t,activeGroupIdx:Math.min(e.activeGroupIdx,t.length-1)},o={...e,buffers:a,modifiedPaths:s,...l};return{buffers:a,modifiedPaths:s,...l,...d(o)}});let n=t();n.buffers[r]||o(n.modelPathPrefix,[r])},closeTabIn(r,n){if(n===t().pinnedTab)return;e(e=>{if(r<0||r>=e.groups.length)return e;let t=e.groups[r];if(!t.tabs.includes(n))return e;let a=t.tabs.filter(e=>e!==n),s=t.activeTab;if(s===n){var l;s=null!=(l=a[Math.min(t.tabs.indexOf(n),a.length-1)])?l:null}let o=e.groups.map((e,t)=>t===r?{...e,tabs:a,activeTab:s}:e),i=e.activeGroupIdx;o.length>1&&0===o[1].tabs.length&&(o=[o[0]],i=0);let c=o.some(e=>e.tabs.includes(n)),u=c?e.buffers:(()=>{let{[n]:t,...r}=e.buffers;return r})(),m=c?e.modifiedPaths:(()=>{if(!e.modifiedPaths.has(n))return e.modifiedPaths;let t=new Set(e.modifiedPaths);return t.delete(n),t})(),p={...e,groups:o,activeGroupIdx:i,buffers:u,modifiedPaths:m};return{groups:o,activeGroupIdx:i,buffers:u,modifiedPaths:m,...d(p)}});let a=t();a.buffers[n]||o(a.modelPathPrefix,[n])},setActiveTab(t,r){e(e=>{let n=null!=r?r:-1;if(n<0){let r=e.groups[e.activeGroupIdx];n=(null==r?void 0:r.tabs.includes(t))?e.activeGroupIdx:e.groups.findIndex(e=>e.tabs.includes(t))}if(n<0||!e.groups[n].tabs.includes(t))return e;let a=e.groups.map((e,r)=>r===n?{...e,activeTab:t}:e),s=n,l={...e,groups:a,activeGroupIdx:s};return{groups:a,activeGroupIdx:s,...d(l)}})},updateContent(t,r){e(e=>{let n=e.buffers[t];if(!n)return e;let a=r!==n.originalContent,s={...e.buffers,[t]:{...n,content:r,modified:a}},l=new Set(e.modifiedPaths);a?l.add(t):l.delete(t);let o={...e,buffers:s,modifiedPaths:l};return{buffers:s,modifiedPaths:l,...d(o)}})},setActiveGroup(t){e(e=>{if(t<0||t>=e.groups.length||t===e.activeGroupIdx)return e;let r={...e,activeGroupIdx:t};return{activeGroupIdx:t,...d(r)}})},splitToRight(t){e(e=>{var r,n,a,s;if(e.groups.length>=2)return e;let l=null!=(n=null!=t?t:null==(r=e.groups[e.activeGroupIdx])?void 0:r.activeTab)?n:null;if(l&&l===e.pinnedTab&&(l=null!=(s=null==(a=e.groups[e.activeGroupIdx])?void 0:a.tabs.find(t=>t!==e.pinnedTab))?s:null),!l||!e.buffers[l])return e;let o={id:c(),tabs:[l],activeTab:l},i=[e.groups[0],o],u={...e,groups:i,activeGroupIdx:1};return{groups:i,activeGroupIdx:1,...d(u)}})},closeGroup(r){let n=[];e(e=>{if(e.groups.length<=1||r<0||r>=e.groups.length)return e;let t=e.groups.filter((e,t)=>t!==r),a=new Set;for(let e of t)for(let t of e.tabs)a.add(t);let s={};for(let[t,r]of Object.entries(e.buffers))a.has(t)?s[t]=r:n.push(t);let l=new Set;for(let t of e.modifiedPaths)a.has(t)&&l.add(t);let o=Math.max(0,Math.min(e.activeGroupIdx,t.length-1)),i={...e,groups:t,activeGroupIdx:o,buffers:s,modifiedPaths:l};return{groups:t,activeGroupIdx:o,buffers:s,modifiedPaths:l,...d(i)}}),n.length>0&&o(t().modelPathPrefix,n)},moveTabToGroup(t,r,n,a){e(e=>{if(t===n){if(t<0||t>=e.groups.length)return e;let n=e.groups[t],s=n.tabs.indexOf(r);if(s<0)return e;let l=null==a?n.tabs.length-1:Math.max(0,Math.min(a,n.tabs.length-1));if(s===l)return e;let o=function(e,t,r){let n=[...e],[a]=n.splice(t,1);return n.splice(r,0,a),n}(n.tabs,s,l),i=e.groups.map((e,n)=>n===t?{...e,tabs:o,activeTab:r}:e),c={...e,groups:i};return{groups:i,...d(c)}}if(t<0||t>=e.groups.length||n<0||n>e.groups.length)return e;let s=e.groups[t];if(!s.tabs.includes(r))return e;let l=s.tabs.filter(e=>e!==r),o=s.activeTab;if(o===r){var i;o=null!=(i=l[Math.min(s.tabs.indexOf(r),l.length-1)])?i:null}let u=e.groups.slice();if(n===e.groups.length){if(e.groups.length>=2)return e;u[t]={...s,tabs:l,activeTab:o},u.push({id:c(),tabs:[r],activeTab:r})}else{let e=u[n],i=e.tabs.includes(r)?e.tabs:(()=>{let t=[...e.tabs];return null==a||a>=t.length?t.push(r):t.splice(Math.max(0,a),0,r),t})();u[t]={...s,tabs:l,activeTab:o},u[n]={...e,tabs:i,activeTab:r}}let m=n;0===u[t].tabs.length&&u.length>1&&(u=u.filter((e,r)=>r!==t),m=Math.max(0,Math.min(n>t?n-1:n,u.length-1)));let p={...e,groups:u,activeGroupIdx:m};return{groups:u,activeGroupIdx:m,...d(p)}})},setFileTree(t){e({fileTree:t})},setDirChildren(t,r){e(e=>{if(!e.fileTree)return e;let n=t.split("/").filter(Boolean),{root:a,node:s,depth:l}=m(e.fileTree,n);if(l<n.length)return e;let o=[...r].sort((e,t)=>e.type!==t.type?"directory"===e.type?-1:1:e.name.localeCompare(t.name));return s.children=o,s.hasChildren=o.length>0,{fileTree:a}})},markModified(t){e(e=>{let r=e.buffers[t];if(!r)return e;let n=new Set(e.modifiedPaths);n.add(t);let a={...e.buffers,[t]:{...r,modified:!0}},s={...e,buffers:a,modifiedPaths:n};return{buffers:a,modifiedPaths:n,...d(s)}})},clearModified(t){e(e=>{let r=e.buffers[t];if(!r)return e;let n=new Set(e.modifiedPaths);n.delete(t);let a={...e.buffers,[t]:{...r,modified:!1}},s={...e,buffers:a,modifiedPaths:n};return{buffers:a,modifiedPaths:n,...d(s)}})},markSaved(t,r){e(e=>{let n=e.buffers[t];if(!n)return e;let a=new Set(e.modifiedPaths);a.delete(t);let s={...e.buffers,[t]:{...n,originalContent:n.content,modified:!1,mtime:null!=r?r:n.mtime}},l={...e,buffers:s,modifiedPaths:a};return{buffers:s,modifiedPaths:a,...d(l)}})},setRejectedFile(t){e({rejectedFile:t})},setBottomTab(t){localStorage.setItem("halo_bottom_tab",t),e({bottomTab:t})},pendingTerminalCwd:null,requestTerminalSpawn(t){e({pendingTerminalCwd:t})},consumeTerminalSpawn(){let r=t().pendingTerminalCwd;return null!=r&&e({pendingTerminalCwd:null}),r},toggleMaximized(){e(e=>{let t=!e.maximized;return localStorage.setItem("halo_editor_maximized",String(t)),{maximized:t}})},setMaximized(t){localStorage.setItem("halo_editor_maximized",String(t)),e({maximized:t})},setBottomFloating(t){sessionStorage.setItem("halo_bottom_floating",String(t)),e({bottomFloating:t})},setBottomMaximized(t){localStorage.setItem("halo_bottom_maximized",String(t)),e({bottomMaximized:t})},requestReveal(t,r,n){e({pendingReveal:{path:t,line:r,column:n}})},clearReveal(){t().pendingReveal&&e({pendingReveal:null})},setBottomSplit(t){localStorage.setItem("halo_bottom_split",String(t)),e({bottomSplit:t})},setBottomFloatRect(t){sessionStorage.setItem("halo_bottom_float_rect",JSON.stringify(t)),e({bottomFloatRect:t})},insertFileNode(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"file";e(e=>{if(!e.fileTree)return e;let n=t.split("/").filter(Boolean);if(0===n.length)return e;let a=n.slice(0,-1),{root:s,node:l,depth:o}=m(e.fileTree,a);if(o<a.length||void 0===l.children)return void 0===l.children&&!0!==l.hasChildren?(l.hasChildren=!0,{fileTree:s}):e;let i=n[n.length-1];if(l.children.some(e=>e.name===i))return e;let c="directory"===r?{name:i,path:t,type:"directory",hasChildren:!1,children:[]}:{name:i,path:t,type:"file"};return l.children.push(c),l.children.sort((e,t)=>e.type!==t.type?"directory"===e.type?-1:1:e.name.localeCompare(t.name)),{fileTree:s}})},removeFileNode(t){e(e=>{if(!e.fileTree)return e;let r=t.split("/").filter(Boolean);if(0===r.length)return e;let n=r.slice(0,-1),{root:a,node:s,depth:l}=m(e.fileTree,n);if(l<n.length||!s.children)return e;let o=r[r.length-1],i=s.children.findIndex(e=>e.name===o);return -1===i?e:(s.children.splice(i,1),{fileTree:a})})},async checkAndRefresh(r,n,a){let s=t().buffers[r];if(!s||s.preview||s.mtime&&n<=s.mtime||s.modified)return!1;let l=await a();return e(e=>{var t,n;let a=e.buffers[r];if(!a||a.modified)return e;let s={...e.buffers,[r]:{...a,content:l.content,originalContent:l.content,mtime:l.modifiedAt,size:null!=(t=l.size)?t:a.size,createdAt:null!=(n=l.createdAt)?n:a.createdAt}},o={...e,buffers:s};return{buffers:s,...d(o)}}),!0},refreshPreview(t,r,n){e(e=>{let a=e.buffers[t];if(!(null==a?void 0:a.preview)||a.mtime&&r<=a.mtime)return e;let s={...e.buffers,[t]:{...a,mtime:r,size:n}};return{buffers:s,...d({...e,buffers:s})}})}}))}let h=p(),f=(0,n.createContext)(null);function x(e){let{children:t}=e,r=(0,n.useRef)(null);return r.current||(r.current=p()),(0,n.useEffect)(()=>{let e=r.current;return()=>{let t=e.getState();o(t.modelPathPrefix,Object.keys(t.buffers))}},[]),(0,n.createElement)(f.Provider,{value:r.current},t)}function g(){let e=(0,n.useContext)(f);return null!=e?e:h}},37050:(e,t,r)=>{"use strict";r.d(t,{IB:()=>d,NU:()=>i,no:()=>c});var n=r(41440),a=r(54604),s=r(48434),l=r(90302),o=r(17119);let i=(0,a.createContext)(null);function c(e){let{name:t,downloadUrl:r,onOpenAsText:c,extraToolbar:u,loading:m,error:p,hideHeader:h,children:f}=e,x=(0,o.kj)(),g=(0,a.useContext)(i);return(0,n.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,n.jsxs)("div",{className:"flex h-8 shrink-0 items-center gap-2 border-b border-[var(--border)] bg-[var(--card)] px-3".concat(h?" hidden":""),children:[(0,n.jsx)("span",{className:"truncate text-xs text-[var(--muted-foreground)]",children:t}),(0,n.jsx)("div",{className:"flex-1"}),u,g,c&&(0,n.jsxs)(d,{onClick:c,title:x("editor.openAsText"),children:[(0,n.jsx)(s.A,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:x("editor.openAsText")})]}),r&&(0,n.jsxs)("a",{href:r,download:!0,className:"flex items-center gap-1 rounded px-2 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",title:x("editor.download"),children:[(0,n.jsx)(l.A,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:x("editor.download")})]})]}),(0,n.jsx)("div",{className:"relative min-h-0 flex-1",children:p?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-red-400",children:p}):(0,n.jsxs)(n.Fragment,{children:[f,m&&(0,n.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-[var(--background)]/80 text-sm text-[var(--muted-foreground)]",children:"Loading preview..."})]})})]})}function d(e){let{onClick:t,title:r,children:a}=e;return(0,n.jsx)("button",{onClick:t,title:r,className:"flex items-center gap-1 rounded px-2 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:a})}},40909:(e,t,r)=>{"use strict";r.d(t,{$C:()=>l,Z1:()=>o,ZC:()=>i,cn:()=>s,fN:()=>c,fw:()=>d,sQ:()=>m,v7:()=>u});var n=r(59344),a=r(1623);function s(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,a.QP)((0,n.$)(t))}function l(){return Math.random().toString(36).substring(2,10)+Date.now().toString(36)}function o(e){return!!e&&!!(e.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(e)||e.startsWith("\\\\"))}function i(e,t){let r=window;return"function"==typeof r.haloPrompt?r.haloPrompt(e,t):Promise.resolve(window.prompt(e,t))}function c(e){let t=window;return"function"==typeof t.haloConfirm?t.haloConfirm(e):Promise.resolve(window.confirm(e))}function d(e,t){let r="number"==typeof e?e:new Date(e).getTime(),n=Math.floor((Date.now()-r)/6e4);if(n<1)return t?t("time.justNow"):"just now";if(n<60)return t?t("time.minutes",{n:n}):"".concat(n,"m ago");let a=Math.floor(n/60);if(a<24)return t?t("time.hours",{n:a}):"".concat(a,"h ago");let s=Math.floor(a/24);return s<30?t?t("time.days",{n:s}):"".concat(s,"d ago"):new Date(r).toLocaleDateString()}function u(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(1)," KB"):"".concat((e/1048576).toFixed(1)," MB")}function m(e){var t,r,n;return null!=(n=({ts:"typescript",tsx:"typescript",js:"javascript",jsx:"javascript",json:"json",md:"markdown",css:"css",html:"html",yaml:"yaml",yml:"yaml",py:"python",rs:"rust",go:"go",sh:"shell",bash:"shell",sql:"sql",toml:"toml",xml:"xml",svg:"xml",env:"plaintext",gitignore:"plaintext",dockerfile:"dockerfile"})[null!=(r=null==(t=e.split(".").pop())?void 0:t.toLowerCase())?r:""])?n:"plaintext"}},44652:(e,t,r)=>{Promise.resolve().then(r.bind(r,47333))},47333:(e,t,r)=>{"use strict";let n;r.r(t),r.d(t,{default:()=>d2});var a,s,l=r(41440),o=r(54604),i=r(2877),c=r(17640),d=r(29562),u=r(43672);class m{connect(e){if(!this.ws||this.ws.readyState!==WebSocket.OPEN&&this.ws.readyState!==WebSocket.CONNECTING){this.url=null!=e?e:this.getDefaultUrl(),this.intentionalClose=!1,this.connectStartedAt=Date.now(),this.startLiveness();try{let e=!1;this.ws=new WebSocket(this.url),this.ws.onopen=()=>{for(let t of(e=!0,this.reconnectDelay=1e3,this.lastReceiveTs=Date.now(),this.lastProbeTs=0,this.missedProbes=0,this.pendingQueue))this.ws.send(JSON.stringify(t));for(let[e,t]of(this.pendingQueue=[],this.pendingAcks))this.transmitChat(e,t);this.emit("_connected",{})},this.ws.onmessage=e=>{this.lastReceiveTs=Date.now();try{let t=JSON.parse(e.data),r=t.type;"chat:ack"===r&&this.resolveAck(t.clientMsgId),r&&this.emit(r,t)}catch(e){console.error("[WsClient] Failed to parse message:",e)}},this.ws.onclose=()=>{this.ws=null,this.emit("_disconnected",{}),this.intentionalClose||(e?this.reconnect():this.checkAuthThenReconnect())},this.ws.onerror=e=>{console.error("[WsClient] Error:",e)}}catch(e){console.error("[WsClient] Failed to connect:",e),this.reconnect()}}}disconnect(){for(let e of(this.intentionalClose=!0,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.stopLiveness(),this.pendingAcks.values()))e.ackTimer&&clearTimeout(e.ackTimer),clearTimeout(e.deadlineTimer);this.pendingAcks.clear(),this.ws&&(this.ws.close(),this.ws=null)}startLiveness(){this.stopLiveness(),this.livenessTimer=setInterval(()=>{if(!this.ws||this.intentionalClose)return;let e=this.ws.readyState;if(e===WebSocket.CONNECTING){if(Date.now()-this.connectStartedAt>1e4)try{this.ws.close()}catch(e){}return}if(e===WebSocket.CLOSING||e===WebSocket.CLOSED){this.ws=null,this.emit("_disconnected",{}),this.reconnect();return}if(this.lastProbeTs>0&&this.lastReceiveTs<this.lastProbeTs){if(this.missedProbes++,this.missedProbes>=2){try{this.ws.close()}catch(e){}return}}else this.missedProbes=0;try{this.ws.send(JSON.stringify({type:"__ping__"})),this.lastProbeTs=Date.now()}catch(e){try{this.ws.close()}catch(e){}}},15e3)}stopLiveness(){this.livenessTimer&&(clearInterval(this.livenessTimer),this.livenessTimer=null)}send(e){let{type:t,clientMsgId:r}=e;return"chat"===t&&r?void this.sendChat(r,e):this.ws&&this.ws.readyState===WebSocket.OPEN?void this.ws.send(JSON.stringify(e)):"__ping__"===t||"terminal:input"===t||"terminal:resize"===t?void 0:void(this.pendingQueue.length>=100&&this.pendingQueue.shift(),this.pendingQueue.push(e))}sendChat(e,t){if(this.pendingAcks.size>=100){let e=this.pendingAcks.keys().next().value;void 0!==e&&this.failPendingChat(e)}let r={message:t,attempts:0,ackTimer:null,deadlineTimer:setTimeout(()=>this.failPendingChat(e),12e4)};if(this.pendingAcks.set(e,r),this.ws&&this.ws.readyState===WebSocket.OPEN){if(Date.now()-this.lastReceiveTs>3e4){try{this.ws.close()}catch(e){}return}this.transmitChat(e,r)}}transmitChat(e,t){t.ackTimer&&(clearTimeout(t.ackTimer),t.ackTimer=null),t.attempts++;try{this.ws.send(JSON.stringify(t.message))}catch(e){try{var r;null==(r=this.ws)||r.close()}catch(e){}return}t.ackTimer=setTimeout(()=>{if((t.ackTimer=null,this.pendingAcks.has(e))&&!(t.attempts>=3))try{var r;null==(r=this.ws)||r.close()}catch(e){}},5e3)}failPendingChat(e){let t=this.pendingAcks.get(e);t&&(t.ackTimer&&clearTimeout(t.ackTimer),clearTimeout(t.deadlineTimer),this.pendingAcks.delete(e),this.emit("_chat_send_failed",{clientMsgId:e}))}resolveAck(e){if("string"!=typeof e)return;let t=this.pendingAcks.get(e);t&&(t.ackTimer&&clearTimeout(t.ackTimer),clearTimeout(t.deadlineTimer),this.pendingAcks.delete(e))}on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),()=>{let r=this.listeners.get(e);r&&(r.delete(t),0===r.size&&this.listeners.delete(e))}}get connected(){var e;return(null==(e=this.ws)?void 0:e.readyState)===WebSocket.OPEN}get lastReceiveAgeMs(){return 0===this.lastReceiveTs?1/0:Date.now()-this.lastReceiveTs}reconnectIfStale(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5e3;if(!this.ws)return void this.connect(this.url);if(0===e&&this.ws.readyState===WebSocket.CONNECTING){try{this.ws.close()}catch(e){}return}if(this.ws.readyState===WebSocket.OPEN&&!(Date.now()-this.lastReceiveTs<e))try{this.ws.close()}catch(e){}}emit(e,t){let r=this.listeners.get(e);r&&r.forEach(r=>{try{r(t)}catch(t){console.error('[WsClient] Error in handler for "'.concat(e,'":'),t)}})}reconnect(){this.reconnectTimer||(this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.reconnectDelay=Math.min(2*this.reconnectDelay,this.maxReconnectDelay),this.connect(this.url)},this.reconnectDelay))}async checkAuthThenReconnect(){try{let e=await fetch("/api/auth/check",{credentials:"include"});if(401===e.status){this.stopLiveness(),this.emit("_auth_expired",{});return}}catch(e){}this.intentionalClose||this.reconnect()}getDefaultUrl(){let e="https:"===window.location.protocol?"wss:":"ws:";return"".concat(e,"//").concat(window.location.host,"/ws")}constructor(){this.ws=null,this.listeners=new Map,this.reconnectTimer=null,this.reconnectDelay=1e3,this.maxReconnectDelay=3e4,this.url="",this.intentionalClose=!1,this.pendingQueue=[],this.pendingAcks=new Map,this.lastReceiveTs=0,this.lastProbeTs=0,this.missedProbes=0,this.connectStartedAt=0,this.livenessTimer=null}}let p=new m;function h(e,t){let r=e.connected;return e.on("_connected",()=>{if(!r){r=!0;return}t()})}function f(e,t){var r,n;return{name:null!=(n=null!=(r=t.root)?r:e.split("/").filter(Boolean).pop())?n:"root",path:"",type:"directory",hasChildren:t.tree.length>0,children:t.tree}}function x(e,t,r){return(0,u.NE)(2e4,r=>u.FH.files.tree(e,t,r),r)}function g(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d.Uw;x(e).then(r=>{t.getState().setFileTree(f(e,r))}).catch(e=>{console.error("[Explorer] Failed to load file tree:",e)})}async function v(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:d.Uw,n=arguments.length>3?arguments[3]:void 0,a=await x(e,t,n);r.getState().setDirChildren(t,a.tree)}var b=r(60252);let y={M:{letter:"M",color:"#1B81A8",label:"Modified"},A:{letter:"A",color:"#487E02",label:"Added"},D:{letter:"D",color:"#F48771",label:"Deleted"},R:{letter:"R",color:"#2090D3",label:"Renamed"},C:{letter:"C",color:"#2090D3",label:"Copied"},U:{letter:"C",color:"#E4676B",label:"Conflict"},"?":{letter:"U",color:"#487E02",label:"Untracked"}},w={letter:"?",color:"#487E02",label:"Untracked"};function j(e){var t;return null!=(t=y[e])?t:w}function k(e){return""!==e&&" "!==e&&"?"!==e}function N(e){return""!==e&&" "!==e}let S=[".halo/sessions/",".halo/logs/",".halo/halo.db"];function C(e,t,r,n){let a=(0,o.useRef)({fetch:t,apply:r,onError:n});(0,o.useEffect)(()=>{a.current={fetch:t,apply:r,onError:n}});let s=(0,o.useRef)(null);return(0,o.useEffect)(()=>{if(null===e)return;let t=function(e){let t=0,r=!1,n="none",a=null,s=0,l=!1,o=[],i=null;async function c(){if(a=null,r)return;if(document.hidden){l=!0;return}r=!0;let c=++t,m=o;o=[],i=new AbortController;try{let r=await (0,u.NE)(3e4,e.fetch,i.signal);c===t&&e.apply(r)}catch(r){c===t&&e.onError(r)}if(m.forEach(e=>e()),c===t&&(r=!1,s=Date.now(),"none"!==n)){let e="immediate"===n;n="none",d(e)}}function d(e){if(r)return void(e?n="immediate":"none"===n&&(n="delta"));if(e){a&&clearTimeout(a),c();return}a||(a=setTimeout(()=>{c()},Math.max(400,s+3e3-Date.now())))}let m=()=>{!document.hidden&&l&&(l=!1,c())};document.addEventListener("visibilitychange",m);let p=!1;return{request(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(p)return Promise.resolve();let t=new Promise(e=>o.push(e));return d(e),t},dispose(){p=!0,t++,null==i||i.abort(),a&&clearTimeout(a),a=null,document.removeEventListener("visibilitychange",m),o.forEach(e=>e()),o=[]}}}({fetch:e=>a.current.fetch(e),apply:e=>a.current.apply(e),onError:e=>a.current.onError(e)});s.current=t,t.request(!0);let r=p.on("file:changed",e=>{!function(e){let t=e.path;return"string"==typeof t&&S.some(e=>t.startsWith(e))}(e)&&t.request()}),n=h(p,()=>{t.request(!0)});return()=>{r(),n(),t.dispose(),s.current===t&&(s.current=null)}},[e]),(0,o.useCallback)(()=>{var e,t;return null!=(t=null==(e=s.current)?void 0:e.request(!0))?t:Promise.resolve()},[])}let A={files:new Map,dirs:new Map,ignored:new Set},I=(0,b.v)(e=>({byProject:{},repoStatus:{},setForProject:(t,r)=>e(e=>({byProject:{...e.byProject,[t]:r}})),clearProject:t=>e(e=>{if(!e.byProject[t])return e;let r={...e.byProject};return delete r[t],{byProject:r}}),setRepoStatus:(t,r)=>e(e=>e.repoStatus[t]===r?e:{repoStatus:{...e.repoStatus,[t]:r}}),clearRepoStatus:t=>e(e=>{if(!(t in e.repoStatus))return e;let r={...e.repoStatus};return delete r[t],{repoStatus:r}})}));var E=r(40909),T=r(17119),_=r(27322),P=r(54810),M=r(93396),F=r(19478),D=r(54718),L=r(70101),R=r(87212),H=r(65293),z=r(74262),O=r(58781),U=r(44607),B=r(14909),W=r(34996),K=r(5431),G=r(71311),q=r(60086),$=r(13743),Y=r(77470),J=r(2038),Z=r(94944),V=r(95342),X=r(58983),Q=r(28963),ee=r(42563),et=r(60768);let er={ts:z.A,tsx:z.A,mts:z.A,cts:z.A,js:z.A,jsx:z.A,mjs:z.A,cjs:z.A,json:O.A,jsonc:O.A,html:U.A,htm:U.A,svg:U.A,xml:U.A,css:B.A,scss:B.A,sass:B.A,less:B.A,md:W.A,mdx:W.A,txt:W.A,rst:W.A,log:W.A,csv:K.A,tsv:K.A,xlsx:K.A,xls:K.A,sql:G.A,sh:q.A,bash:q.A,zsh:q.A,yaml:$.A,yml:$.A,toml:$.A,ini:$.A,env:$.A,py:Y.A,go:J.A,rs:J.A,c:J.A,cpp:J.A,h:J.A,hpp:J.A,java:J.A,kt:J.A,scala:J.A,cs:J.A,swift:J.A,dart:J.A,rb:J.A,php:J.A,lua:J.A,r:J.A,png:Z.A,jpg:Z.A,jpeg:Z.A,gif:Z.A,webp:Z.A,bmp:Z.A,ico:Z.A,avif:Z.A,mp4:V.A,webm:V.A,mov:V.A,avi:V.A,mkv:V.A,ogg:V.A,mp3:X.A,wav:X.A,flac:X.A,aac:X.A,m4a:X.A,wma:X.A,zip:Q.A,tar:Q.A,gz:Q.A,"7z":Q.A,rar:Q.A,pdf:ee.A,docx:ee.A,doc:ee.A,pptx:ee.A,ppt:ee.A},en={ts:"text-blue-400",tsx:"text-blue-400",mts:"text-blue-400",cts:"text-blue-400",js:"text-yellow-400",jsx:"text-yellow-400",mjs:"text-yellow-400",cjs:"text-yellow-400",json:"text-yellow-300",jsonc:"text-yellow-300",html:"text-orange-400",htm:"text-orange-400",css:"text-blue-300",scss:"text-pink-400",sass:"text-pink-400",less:"text-blue-300",md:"text-sky-300",mdx:"text-sky-300",py:"text-green-400",go:"text-cyan-400",rs:"text-orange-400",java:"text-red-400",rb:"text-red-300",php:"text-indigo-300",sh:"text-green-300",bash:"text-green-300",svg:"text-orange-300",xml:"text-orange-300",yaml:"text-red-300",yml:"text-red-300",sql:"text-cyan-300",png:"text-purple-300",jpg:"text-purple-300",jpeg:"text-purple-300",gif:"text-purple-300",webp:"text-purple-300",avif:"text-purple-300",mp4:"text-pink-300",webm:"text-pink-300",mov:"text-pink-300",mp3:"text-emerald-300",wav:"text-emerald-300",flac:"text-emerald-300",pdf:"text-red-400",docx:"text-blue-400",doc:"text-blue-400",pptx:"text-orange-400",ppt:"text-orange-400",zip:"text-amber-400",tar:"text-amber-400",gz:"text-amber-400"};function ea(e){var t,r,n,a,s,l;let o=null!=(n=null==(t=e.split(".").pop())?void 0:t.toLowerCase())?n:"",i=null!=(a=null==(r=e.split("/").pop())?void 0:r.toLowerCase())?a:"";return"dockerfile"===i||i.startsWith("dockerfile.")?{Icon:q.A,color:"text-cyan-400"}:".gitignore"===i||".gitattributes"===i?{Icon:$.A,color:"text-[var(--muted-foreground)]"}:".env"===i||i.startsWith(".env.")?{Icon:$.A,color:"text-yellow-300"}:"makefile"===i||"cmake"===i?{Icon:q.A,color:"text-[var(--muted-foreground)]"}:{Icon:null!=(s=er[o])?s:et.A,color:null!=(l=en[o])?l:"text-[var(--muted-foreground)]"}}let es=new Map,el={extensions:[],disabled:[],errors:[]},eo=0,ei=new Set;function ec(){for(let e of(eo++,ei))e()}function ed(e){return ei.add(e),()=>{ei.delete(e)}}function eu(){return eo}function em(){return(0,o.useSyncExternalStore)(ed,eu,eu)}function ep(e){for(let t of e.extensions)es.set(t.toLowerCase(),e);ec()}function eh(e){var t;el={...e,disabled:null!=(t=e.disabled)?t:[]},ec()}let ef=null;function ex(){if(!ef){let e=u.FH.extensions.list().then(eh).catch(e=>{console.error("[PreviewRegistry] Failed to load extensions:",e)});ef=Promise.race([e,new Promise(t=>{let r=setTimeout(()=>{console.warn("[PreviewRegistry] Extension list not back after ".concat(3e3,"ms, opening files without it")),t()},3e3);e.finally(()=>clearTimeout(r))})])}return ef}function eg(){return el}function ev(e){return e.toLowerCase().replace(/^\./,"")}let eb=null;function ey(){var e;return eb?eb:"undefined"==typeof navigator?"web":eb=(e=navigator.userAgent).includes("Electron/")?/Macintosh|Mac OS X/.test(e)?"desktop-mac":e.includes("Windows")?"desktop-win":"desktop-linux":"web"}function ew(e,t){return e.map(e=>t("extensions.platform.".concat(e))).join(t("extensions.platform.sep"))}function ej(e){return!e.platforms||e.platforms.includes(ey())}function ek(e,t,r){return!!e.bundle===r&&e.extensions.includes(".".concat(t))}function eN(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return el.extensions.filter(n=>n.priority===t&&ek(n,e,r)&&ej(n)).sort((e,t)=>t.installedAt-e.installedAt).map(e=>({kind:"extension",info:e}))}function eS(e){let t=ev(e),r=eN(t,"default"),n=es.get(t);return n&&r.push({kind:"builtin",plugin:n}),r.push(...eN(t,"option")),r.push({kind:"text"}),r}function eC(e){let t=ev(e);return[...eN(t,"default",!0),...eN(t,"option",!0),{kind:"text"}]}function eA(e){let t=e.lastIndexOf(".");return!(t<=0)&&eN(ev(e.slice(t+1)),"default",!0).length>0}function eI(e){switch(e.kind){case"extension":return"extension:".concat(e.info.id);case"builtin":return"builtin:".concat(e.plugin.id);case"text":return"text"}}function eE(e){return"text"!==eS(e)[0].kind}let eT="halo:file-tree:expanded",e_=null,eP=new Map;function eM(){if(e_)return e_;try{let e=localStorage.getItem(eT);e_=e?new Set(JSON.parse(e)):new Set}catch(e){e_=new Set}return e_}let eF=null;function eD(){eF&&clearTimeout(eF),eF=setTimeout(()=>{try{let e=eM();localStorage.setItem(eT,JSON.stringify([...e]))}catch(e){}},300)}function eL(e,t){let r=eM(),n=r.has(e);if(t?r.add(e):r.delete(e),eD(),n!==t){let r=eP.get(e);if(r)for(let e of r)e(t)}}function eR(){let e=eM();if(0===e.size)return;let t=[...e];for(let r of(e.clear(),eD(),t)){let e=eP.get(r);if(e)for(let t of e)t(!1)}}function eH(e){return eM().has(e)}function ez(e){try{let t=JSON.parse(e);if(Array.isArray(t))return t}catch(e){}return[e]}let eO="application/x-halo-path";function eU(e){let{depth:t,initialValue:r,iconKind:n,onCommit:a,onCancel:s}=e,i=(0,o.useRef)(null),[c,d]=(0,o.useState)(r),u=(0,o.useRef)(!1);(0,o.useEffect)(()=>{let e=i.current;if(!e)return;e.focus();let t=r.lastIndexOf(".");"file"===n&&t>0?e.setSelectionRange(0,t):e.select()},[r,n]);let m="folder"===n?_.A:P.A;return(0,l.jsxs)("div",{className:"flex w-full items-center gap-1 py-1 text-xs",style:{paddingLeft:"".concat(12*t+8,"px")},children:[(0,l.jsx)("span",{className:"w-3.5 shrink-0"}),(0,l.jsx)(m,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0","folder"===n?"text-blue-400":"fill-[var(--muted-foreground)] text-[var(--muted-foreground)]")}),(0,l.jsx)("input",{ref:i,type:"text",value:c,onChange:e=>d(e.target.value),onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),u.current=!0,a(c)):"Escape"===e.key&&(e.preventDefault(),u.current=!0,s()),e.stopPropagation()},onBlur:()=>{u.current||(""===c.trim()?s():a(c))},className:"min-w-0 flex-1 rounded border border-[var(--primary)] bg-[var(--background)] px-1 py-0 text-xs text-[var(--foreground)] outline-none"})]})}async function eB(e){let t=e.items;if(t&&t.length>0){let e=[];for(let a=0;a<t.length;a++){var r,n;let s=null==(r=(n=t[a]).webkitGetAsEntry)?void 0:r.call(n);s&&e.push(s)}if(e.some(e=>e.isDirectory)){let t=[];async function a(e,r){if(e.isFile){let n=await new Promise((t,r)=>e.file(t,r)),a=r?"".concat(r,"/").concat(e.name):e.name;t.push(new File([n],a,{type:n.type,lastModified:n.lastModified}))}else if(e.isDirectory){let t,n=e.createReader(),s=r?"".concat(r,"/").concat(e.name):e.name;do for(let e of t=await function(e){return new Promise((t,r)=>e.readEntries(t,r))}(n))await a(e,s);while(t.length>0)}}for(let t of e)await a(t,"");return t}}return Array.from(e.files)}function eW(e,t){return e.type!==t.type?"directory"===e.type?-1:1:e.name.localeCompare(t.name)}function eK(e){let t=[];if(e.path&&t.push(e.path),"directory"===e.type&&e.children&&(!e.path||eH(e.path))){var r;for(let n of[...null!=(r=e.children)?r:[]].sort(eW))t.push(...eK(n))}return t}function eG(e){var t,r,n;let{node:a,projectId:s,onSelect:i,onContextMenu:c,onDropFiles:u,onMoveFile:m,selectedPaths:h,onSelectionChange:f,lastAnchor:x,visiblePaths:g,depth:b,pendingEdit:y,onCommitEdit:w,onCancelEdit:k}=e,N=(0,d._r)(),S=(0,T.kj)(),[C,z]=(0,o.useState)(()=>!!a.path&&eH(a.path)),[O,U]=(0,o.useState)(!1),[B,W]=(0,o.useState)("idle"),[K,G]=(0,o.useState)(null),q=(0,o.useRef)(null),$=(0,o.useRef)(null),Y=(0,o.useRef)(0),J=(0,o.useRef)(null),Z=(0,o.useRef)(null),V="directory"===a.type;em();let X=V&&eA(a.name),Q=V&&!1!==a.hasChildren&&void 0===a.children,ee=(0,o.useRef)(C),et=(0,o.useCallback)(e=>{z(e),a.path&&eL(a.path,e)},[a.path]);(0,o.useEffect)(()=>{if(a.path){var e,t;let r;return e=a.path,t=e=>z(e),(r=eP.get(e))||(r=new Set,eP.set(e,r)),r.add(t),()=>{let r=eP.get(e);r&&(r.delete(t),0===r.size&&eP.delete(e))}}},[a.path]);let er=(0,o.useCallback)(()=>{let e=q.current;q.current=null,null==e||e.abort(),$.current&&clearTimeout($.current),$.current=null},[]),en=(0,o.useCallback)(function e(){if(!a.path)return;er();let t=new AbortController;q.current=t,W("loading"),v(s,a.path,N,t.signal).then(()=>{q.current===t&&(q.current=null,Y.current=0,G(null),W("idle"))},r=>{if(q.current!==t)return;q.current=null;let n=++Y.current;console.error("[Explorer] Failed to load directory:",a.path,r),G(r instanceof Error?r.message:String(r)),W("error"),n<=5&&($.current=setTimeout(e,Math.min(2e3*2**(n-1),3e4)))})},[a.path,s,N,er]),es=(0,o.useCallback)(()=>{Y.current=0,en()},[en]);(0,o.useEffect)(()=>{let e=ee.current;if(ee.current=C,a.path){if(!C){er(),Y.current=0,W("idle");return}(!e||Q&&"idle"===B)&&en()}},[C,Q,B,a.path,er,en]),(0,o.useEffect)(()=>er,[er]),(0,o.useEffect)(()=>{if("idle"===B)return;let e="loading"===B&&p.lastReceiveAgeMs===1/0;return p.on("_connected",()=>{if(e){e=!1;return}es()})},[B,es]);let el=N(e=>e.modifiedPaths),eo=N(e=>e.activeTab),ei=I(e=>{var t;return null!=(t=s?e.byProject[s]:void 0)?t:A}),ec=0===b&&!a.path,ed=(0,o.useMemo)(()=>ec?eK(a):void 0,[ec,a]),eu=(e,t,r)=>{var n;return(0,l.jsxs)(l.Fragment,{children:[e&&y&&(0,l.jsx)(eU,{depth:t,initialValue:"",iconKind:"create-folder"===y.mode?"folder":"file",onCommit:e=>null==w?void 0:w(e),onCancel:()=>null==k?void 0:k()}),(null!=(n=a.children)?n:[]).sort(eW).map(e=>(0,l.jsx)(eG,{node:e,projectId:s,onSelect:i,onContextMenu:c,onDropFiles:u,onMoveFile:m,selectedPaths:h,onSelectionChange:f,lastAnchor:x,visiblePaths:r,depth:t,pendingEdit:y,onCommitEdit:w,onCancelEdit:k},e.path))]})};if(ec){let e=async e=>{e.preventDefault(),e.stopPropagation(),U(!1);let t=e.dataTransfer.getData(eO);if(t){for(let e of ez(t))null==m||m(e,"");return}let r=await eB(e.dataTransfer);r.length>0&&(null==u||u(r,""))},t=y&&""===y.parentDir&&"rename"!==y.mode;return(0,l.jsx)("div",{onClick:e=>{e.target===e.currentTarget&&f&&f(new Set,"")},onContextMenu:e=>{e.target===e.currentTarget&&(e.preventDefault(),null==c||c({x:e.clientX,y:e.clientY,path:"",name:"/",isDir:!0}))},onDragOver:e=>{(e.dataTransfer.types.includes("Files")||e.dataTransfer.types.includes(eO))&&(e.preventDefault(),e.stopPropagation(),U(!0))},onDragLeave:e=>{e.currentTarget===e.target&&U(!1)},onDrop:e,className:(0,E.cn)("min-h-full",O&&"bg-[var(--accent)]/30"),children:eu(!!t,0,ed)})}let ep=el.has(a.path),eh=eo===a.path,ef=null!=(r=null==h?void 0:h.has(a.path))&&r,ex=eh&&!(null==h?void 0:h.size),{Icon:eg,color:ev}=ea(a.path),eb=V?ei.dirs.get(a.path):ei.files.get(a.path),ey=eb&&"*"!==eb?j(eb):null,ew="*"===eb?"#8C8C8C":null==ey?void 0:ey.color,ej=!eb&&function(e,t){if(0===e.size)return!1;if(e.has(t))return!0;for(let r of e)if(t.startsWith(r+"/"))return!0;return!1}(ei.ignored,a.path),ek=()=>{Z.current&&(clearTimeout(Z.current),Z.current=null)},eN=async e=>{if(!V)return;e.preventDefault(),e.stopPropagation(),U(!1),ek(),C||et(!0);let t=e.dataTransfer.getData(eO);if(t){for(let e of ez(t))e===a.path||e.startsWith(a.path+"/")||null==m||m(e,a.path);return}let r=await eB(e.dataTransfer);r.length>0&&(null==u||u(r,a.path))},eS=V&&(null==(t=a.children)?void 0:t.some(e=>{let t=e=>{var r,n;return!!el.has(e.path)||null!=(n=null==(r=e.children)?void 0:r.some(t))&&n};return t(e)})),eC=y&&"rename"===y.mode&&y.originalPath===a.path,eI=y&&"rename"!==y.mode&&y.parentDir===a.path&&V;return eC&&y?(0,l.jsx)(eU,{depth:b,initialValue:null!=(n=y.originalName)?n:a.name,iconKind:V?"folder":"file",onCommit:e=>null==w?void 0:w(e),onCancel:()=>null==k?void 0:k()}):(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{draggable:!0,"data-path":a.path,onClick:e=>{if(e.stopPropagation(),V&&!X&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey){f&&f(new Set([a.path]),a.path),et(!C);return}if(e.shiftKey&&f&&g&&x){let e=g.indexOf(x),t=g.indexOf(a.path);if(e>=0&&t>=0){let r=Math.min(e,t),n=Math.max(e,t);f(new Set(g.slice(r,n+1)),x)}return}if((e.ctrlKey||e.metaKey)&&f){let e=new Set(h);e.has(a.path)?e.delete(a.path):e.add(a.path),f(e,a.path);return}(!V||X)&&(f&&f(new Set([a.path]),a.path),J.current&&clearTimeout(J.current),J.current=setTimeout(()=>{J.current=null,i(a.path,X?{bundle:!0}:void 0)},300))},onDoubleClick:e=>{e.stopPropagation(),J.current&&(clearTimeout(J.current),J.current=null),V&&!X?et(!C):i(a.path,X?{bundle:!0}:void 0)},onDragStart:e=>{h&&h.size>1&&h.has(a.path)?e.dataTransfer.setData(eO,JSON.stringify([...h])):e.dataTransfer.setData(eO,JSON.stringify([a.path])),e.dataTransfer.effectAllowed="move"},onContextMenu:e=>{e.preventDefault(),e.stopPropagation(),!ef&&f&&f(new Set([a.path]),a.path),null==c||c({x:e.clientX,y:e.clientY,path:a.path,name:a.name,isDir:V})},onDragOver:e=>{V&&(e.dataTransfer.types.includes("Files")||e.dataTransfer.types.includes(eO))&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move",U(!0),C||Z.current||(Z.current=setTimeout(()=>{Z.current=null,et(!0)},600)))},onDragLeave:()=>{U(!1),ek()},onDrop:eN,className:(0,E.cn)("flex w-full items-center gap-1 py-1 text-left text-xs transition-colors",ef&&"bg-[var(--primary)]/20 text-[var(--foreground)]",!ef&&"hover:bg-[var(--secondary)]",!ef&&ex&&"bg-[var(--accent)] text-[var(--accent-foreground)]",!ef&&!ex&&"text-[var(--foreground)]",O&&V&&"bg-[var(--accent)] ring-1 ring-[var(--primary)]"),style:{paddingLeft:"".concat(12*b+8,"px")},children:[V&&(0,l.jsx)("span",{className:(0,E.cn)("shrink-0 text-[var(--muted-foreground)]",X&&"rounded hover:bg-[var(--accent)] hover:text-[var(--foreground)]"),onClick:e=>{X&&(e.stopPropagation(),et(!C))},onDoubleClick:X?e=>e.stopPropagation():void 0,children:C?(0,l.jsx)(M.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(F.A,{className:"h-3.5 w-3.5"})}),!V&&(0,l.jsx)("span",{className:"w-3.5 shrink-0"}),X?(0,l.jsx)(D.A,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0 text-violet-400",ej&&"opacity-60")}):V?C?(0,l.jsx)(L.A,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0 text-blue-400",ej&&"opacity-60")}):(0,l.jsx)(_.A,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0 text-blue-400",ej&&"opacity-60")}):(0,l.jsx)(eg,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",ev,ej&&"opacity-60")}),(0,l.jsx)("span",{className:(0,E.cn)("truncate",ej&&"text-[var(--muted-foreground)] opacity-60"),style:ew?{color:ew}:void 0,children:a.name}),(0,l.jsxs)("span",{className:"ml-auto flex shrink-0 items-center gap-1 pl-1 pr-2",children:[(ep||eS)&&(0,l.jsx)(P.A,{className:"h-1.5 w-1.5 shrink-0 fill-amber-400 text-amber-400"}),V?ew&&(0,l.jsx)(P.A,{className:"h-1.5 w-1.5 shrink-0",style:{fill:ew,color:ew}}):ey&&(0,l.jsx)("span",{className:"w-3 text-center font-mono text-[11px] font-semibold",style:{color:ey.color},title:ey.label,children:ey.letter})]})]}),V&&C&&"loading"===B&&!a.children&&(0,l.jsxs)("div",{className:"flex items-center gap-1.5 py-1 text-[10px] text-[var(--muted-foreground)]",style:{paddingLeft:"".concat((b+1)*12+8,"px")},children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),(0,l.jsx)("span",{children:"Loading..."})]}),V&&C&&"error"===B&&(0,l.jsxs)("div",{className:"flex items-center gap-1.5 py-1 text-[10px] text-[var(--muted-foreground)]",style:{paddingLeft:"".concat((b+1)*12+8,"px")},title:null!=K?K:void 0,children:[(0,l.jsx)(H.A,{className:"h-3 w-3 shrink-0 text-red-400"}),(0,l.jsx)("span",{children:S("explorer.tree.loadFailed")}),(0,l.jsx)("span",{children:"\xb7"}),(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),es()},className:"text-[var(--primary)] hover:underline",children:S("explorer.tree.retry")})]}),V&&C&&(a.children||eI)&&(0,l.jsx)("div",{children:eu(!!eI,b+1,g)})]})}var eq=r(80151),e$=r(66731),eY=r(877),eJ=r(94665),eZ=r(90302),eV=r(11943),eX=r(19127);function eQ(e){let{x:t,y:r,path:n,name:a,isDir:s,selectedCount:i,onAction:c,onClose:d}=e,u=(0,o.useRef)(null),[m,p]=(0,o.useState)({x:t,y:r});(0,o.useEffect)(()=>{function e(e){u.current&&!u.current.contains(e.target)&&d()}function t(e){"Escape"===e.key&&d()}return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[d]),(0,o.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let n=e.getBoundingClientRect(),a=window.innerWidth,s=window.innerHeight,l=t+n.width+4>a?Math.max(4,a-n.width-4):t,o=r+n.height+4>s?Math.max(4,s-n.height-4):r;(l!==m.x||o!==m.y)&&p({x:l,y:o})},[t,r,m.x,m.y]);let h={position:"fixed",left:m.x,top:m.y,zIndex:9999};if(void 0!==i&&i>1)return(0,l.jsxs)("div",{ref:u,style:h,className:"min-w-[140px] rounded-md border border-[var(--border)] bg-[var(--card)] py-1 shadow-lg",children:[(0,l.jsxs)("div",{className:"truncate border-b border-[var(--border)] px-3 py-1.5 text-[10px] text-[var(--muted-foreground)]",children:[i," items selected"]}),(0,l.jsxs)("button",{onClick:()=>{c({type:"delete",path:n,isDir:s}),d()},className:"flex w-full items-center gap-2 px-3 py-1.5 text-xs text-red-400 transition-colors hover:bg-[var(--secondary)] hover:text-red-300",children:[(0,l.jsx)(eq.A,{className:"h-3.5 w-3.5"}),"Delete ",i," items"]})]});let f=""===n&&s,x=!!window.haloReveal,g=f?[{icon:e$.A,label:"New File...",type:"new-file"},{icon:eY.A,label:"New Folder...",type:"new-folder"},{icon:q.A,label:"Open in Integrated Terminal",type:"open-terminal"},...x?[{icon:eJ.A,label:"Reveal in File Manager",type:"reveal-in-file-manager"}]:[],{icon:eZ.A,label:"Download",type:"download"}]:[{icon:e$.A,label:"New File...",type:"new-file",separatorAfter:!1},{icon:eY.A,label:"New Folder...",type:"new-folder",separatorAfter:!1},{icon:q.A,label:"Open in Integrated Terminal",type:"open-terminal",separatorAfter:!x},...x?[{icon:eJ.A,label:"Reveal in File Manager",type:"reveal-in-file-manager",separatorAfter:!0}]:[],...s?[...eA(a)?[{icon:eV.A,label:"Open to the Side",type:"open-to-side"}]:[],{icon:eZ.A,label:"Download",type:"download"}]:[{icon:eV.A,label:"Open to the Side",type:"open-to-side",separatorAfter:!1},{icon:eZ.A,label:"Download",type:"download"}],{icon:eX.A,label:"Rename",type:"rename"},{icon:eq.A,label:"Delete",type:"delete",danger:!0,separatorAfter:s},...s?[{icon:L.A,label:"Open as Workspace",type:"open-as-workspace"}]:[]];return(0,l.jsxs)("div",{ref:u,style:h,className:"min-w-[140px] rounded-md border border-[var(--border)] bg-[var(--card)] py-1 shadow-lg",children:[(0,l.jsx)("div",{className:"truncate border-b border-[var(--border)] px-3 py-1.5 text-[10px] text-[var(--muted-foreground)]",children:a}),g.map(e=>{let t=e.icon;return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{onClick:()=>{c({type:e.type,path:n,isDir:s}),d()},className:"flex w-full items-center gap-2 px-3 py-1.5 text-xs transition-colors hover:bg-[var(--secondary)] ".concat(e.danger?"text-red-400 hover:text-red-300":"text-[var(--foreground)]"),children:[(0,l.jsx)(t,{className:"h-3.5 w-3.5"}),e.label]}),e.separatorAfter&&(0,l.jsx)("div",{className:"my-1 border-t border-[var(--border)]"})]},e.type)})]})}var e0=r(97558);let e1=["node_modules",".git"];function e3(e){var t,r,n;let{path:a,projectId:s,onClose:i}=e,c=(0,T.kj)(),[d,m]=(0,o.useState)(!1),p="".concat(s,"\n").concat(a,"\n").concat(d),[h,f]=(0,o.useState)(null),x=(null==h?void 0:h.key)===p?h.result:null,g=(null==x?void 0:x.ok)===!0,v=(0,o.useRef)(null),b=(0,o.useRef)(null),y=a.split("/").pop()||s.split(/[\\/]/).filter(Boolean).pop()||c("explorer.download.workspace");(0,o.useEffect)(()=>{let e=new AbortController;return u.FH.files.downloadFolderEstimate(a,s,d,e.signal).then(t=>{e.signal.aborted||f({key:p,result:t})}).catch(t=>{e.signal.aborted||f({key:p,result:{ok:!1,status:0,message:t instanceof Error?t.message:String(t)}})}),()=>e.abort()},[p,a,s,d]),(0,o.useEffect)(()=>{let e=e=>{"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),i())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[i]),(0,o.useEffect)(()=>{var e;if(!g)return;let t=document.activeElement;t&&t!==document.body&&t!==v.current||null==(e=b.current)||e.focus()},[g]);let w=(null==x?void 0:x.ok)?x.ignoredNames:{},j=e1.filter(e=>w[e]).map(e=>"".concat(e," (").concat(w[e],")")),k=Object.entries(w).filter(e=>{let[t]=e;return!e1.includes(t)}).reduce((e,t)=>{let[,r]=t;return e+r},0);k>0&&j.push(c("explorer.download.otherFolders",{n:k}));let N=(null==x?void 0:x.ok)&&null!=(t=x.excluded.blocked)?t:0,S=(null==x?void 0:x.ok)?(null!=(r=x.excluded.symlink)?r:0)+(null!=(n=x.excluded.unreadable)?n:0):0;return(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:i,children:(0,l.jsxs)("div",{role:"dialog","aria-label":c("explorer.download.title",{name:y}),className:"w-[420px] rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-2.5",children:[(0,l.jsx)("h3",{className:"truncate text-sm font-medium text-[var(--foreground)]",children:c("explorer.download.title",{name:y})}),(0,l.jsx)("button",{onClick:i,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-3 px-4 py-4 text-xs",children:[x?x.ok?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("p",{"data-testid":"download-folder-summary",className:"text-sm text-[var(--foreground)]",children:["≈ ",(0,E.v7)(x.bytes)," \xb7 ",c(1===x.files?"explorer.download.file":"explorer.download.files",{n:x.files.toLocaleString()})]}),(j.length>0||N>0||S>0)&&(0,l.jsxs)("ul",{className:"flex flex-col gap-1 text-[var(--muted-foreground)]",children:[j.length>0&&(0,l.jsx)("li",{children:c("explorer.download.excludedDefault",{list:j.join(", ")})}),N>0&&(0,l.jsx)("li",{children:c("explorer.download.excludedBlocked",{n:N})}),S>0&&(0,l.jsx)("li",{children:c("explorer.download.excludedSkipped",{n:S})})]})]}):(0,l.jsx)("p",{"data-testid":"download-folder-error",className:"text-red-400",children:x.message}):(0,l.jsxs)("p",{className:"flex items-center gap-2 text-[var(--muted-foreground)]",children:[(0,l.jsx)(R.A,{className:"h-3.5 w-3.5 animate-spin"}),c("explorer.download.estimating")]}),(0,l.jsxs)("label",{className:"flex items-center gap-2 text-[var(--foreground)]",children:[(0,l.jsx)("input",{type:"checkbox",checked:d,onChange:e=>m(e.target.checked)}),c("explorer.download.include")]})]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-3 py-2.5",children:[(0,l.jsx)("button",{ref:v,autoFocus:!0,onClick:i,className:"rounded px-3 py-1 text-xs font-medium text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:c("explorer.download.cancel")}),(0,l.jsxs)("button",{ref:b,onClick:function(){let e=document.createElement("a");e.href=u.FH.files.downloadFolderUrl(a,s,d),e.download="",document.body.appendChild(e),e.click(),e.remove(),i()},disabled:!g,className:"flex items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:[(0,l.jsx)(eZ.A,{className:"h-3.5 w-3.5"}),c("explorer.download.confirm")]})]})]})})}var e2=r(56207);e2.wG.config({paths:{vs:"/monaco/vs"}});var e5=r(58321);let e4={dark:"vs-dark",light:"vs",midnight:"halo-midnight",warm:"halo-warm"},e8=!1;function e6(e){e8||(e8=!0,e.editor.defineTheme("halo-midnight",{base:"vs-dark",inherit:!0,rules:[],colors:{"editor.background":"#0b1220","editor.foreground":"#dbe4f3","editor.lineHighlightBackground":"#111a2e","editorLineNumber.foreground":"#3d4f78"}}),e.editor.defineTheme("halo-warm",{base:"vs",inherit:!0,rules:[],colors:{"editor.background":"#f6f1e7","editor.foreground":"#3d3427","editor.lineHighlightBackground":"#efe7d8","editorLineNumber.foreground":"#a89878"}}))}function e9(e){let{path:t,content:r,language:n,onChange:a,onSave:s,onClose:i,readOnly:c,reveal:u,onRevealed:m}=e,p=(0,T.kj)(),h=(0,d._r)(),f=(0,o.useRef)(null),{theme:x}=(0,e5.useTheme)(),g=(0,o.useRef)(u),v=(0,o.useRef)(m),b=(0,o.useCallback)(()=>{var e,t;let r=f.current,n=g.current;r&&n&&(r.layout(),r.revealLineInCenter(n.line),r.setPosition({lineNumber:n.line,column:null!=(t=n.column)?t:1}),r.focus(),null==(e=v.current)||e.call(v))},[]);(0,o.useEffect)(()=>{g.current=u,v.current=m,b()},[u,m,t,b]);let y=(0,o.useRef)(s),w=(0,o.useRef)(i),j=(0,o.useRef)(r);(0,o.useEffect)(()=>{y.current=s,w.current=i,j.current=r},[s,i,r]),(0,o.useEffect)(()=>()=>{h.getState().setSelectedText(null,null)},[t]);let k=(0,o.useRef)(null),N=(0,o.useCallback)(e=>{var r;let n=null==(r=f.current)?void 0:r.getModel();n&&k.current&&n.uri.toString()!==k.current.Uri.parse(t).toString()||void 0!==e&&a&&a(e)},[a,t]),S=(0,o.useCallback)((e,t)=>{f.current=e,k.current=t;let r=e.getModel();r&&r.getValue()!==j.current&&r.setValue(j.current),e.onDidChangeCursorSelection(t=>{var r,n;let a=e.getSelection();if(!a||a.isEmpty())return void h.getState().setSelectedText(null,null);let s=null!=(n=null==(r=e.getModel())?void 0:r.getValueInRange(a))?n:null;s&&h.getState().setSelectedText(s,{startLine:a.startLineNumber,endLine:a.endLineNumber})}),e.addAction({id:"halo-save",label:"Save File",keybindings:[t.KeyMod.CtrlCmd|t.KeyCode.KeyS],run:()=>{var e;null==(e=y.current)||e.call(y)}}),e.addAction({id:"halo-close-tab",label:"Close Tab",keybindings:[t.KeyMod.Alt|t.KeyCode.KeyW],run:()=>{var e;null==(e=w.current)||e.call(w)}}),b()},[b]);return(0,l.jsx)(e2.Ay,{path:t,keepCurrentModel:!0,height:"100%",language:n,value:r,onChange:N,beforeMount:e6,onMount:S,theme:e4[x],options:{fontSize:13,lineHeight:20,fontFamily:"'JetBrains Mono', 'Fira Code', 'Cascadia Code', Menlo, Monaco, monospace",minimap:{enabled:!1},scrollBeyondLastLine:!1,wordWrap:"on",tabSize:2,renderLineHighlight:"line",cursorBlinking:"smooth",smoothScrolling:!0,padding:{top:12,bottom:12},bracketPairColorization:{enabled:!0},automaticLayout:!0,readOnly:!!c,readOnlyMessage:{value:p("pathLink.readOnly")},overviewRulerLanes:0,hideCursorInOverviewRuler:!0,overviewRulerBorder:!1,scrollbar:{verticalScrollbarSize:6,horizontalScrollbarSize:6}},loading:(0,l.jsx)("div",{className:"flex h-full items-center justify-center bg-[var(--background)]",children:(0,l.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading editor..."})})})}var e7=r(10691),te=r(76633),tt=r(5659),tr=r(28965),tn=r(79906);function ta(e){let t=null==e?void 0:e.children[0];if((null==t?void 0:t.type)!=="element"||"code"!==t.tagName)return null;let r=t.properties.className;return Array.isArray(r)&&r.includes("language-mermaid")?t.children.map(e=>"text"===e.type?e.value:"").join("").replace(/\n$/,""):null}let ts=null,tl=null,to=0;async function ti(e,t){null!=ts||(ts=Promise.all([r.e(5129),r.e(5712),r.e(9104)]).then(r.bind(r,73884)).then(e=>e.default));let n=await ts;tl!==t&&(n.initialize({startOnLoad:!1,securityLevel:"strict",suppressErrorRendering:!0,theme:t}),tl=t);let{svg:a}=await n.render("halo-mermaid-".concat(++to),e);return a}function tc(e){var t;let{source:r,fallback:n}=e,a=(0,T.kj)(),s="light"===(t=(0,e5.useTheme)().theme)||"warm"===t?"default":"dark",[i,c]=(0,o.useState)(null);return((0,o.useEffect)(()=>{let e=!1;return ti(r,s).then(t=>{e||c({svg:t})},t=>{e||c({error:t instanceof Error?t.message:String(t)})}),()=>{e=!0}},[r,s]),null==i?void 0:i.svg)?(0,l.jsx)("div",{"data-mermaid":"",className:"not-prose my-2 overflow-x-auto [&>svg]:max-w-full",dangerouslySetInnerHTML:{__html:i.svg}}):(0,l.jsxs)(l.Fragment,{children:[n,(null==i?void 0:i.error)&&(0,l.jsx)("div",{title:i.error,className:"not-prose -mt-1 mb-2 truncate text-[10px] text-[var(--destructive)]",children:a("mermaid.renderFailed",{error:i.error.split("\n")[0]})})]})}function td(e){let{node:t,...r}=e,n=ta(t);return null===n?(0,l.jsx)("pre",{...r}):(0,l.jsx)(tc,{source:n,fallback:(0,l.jsx)("pre",{...r})})}function tu(e){let{content:t,filePath:r,projectId:n}=e,a=(0,T.kj)(),s=(0,d._r)(),i=(0,o.useRef)(null),c=(0,o.useMemo)(()=>(function(e){let t=[],r=new Map,n=!1;for(let s of e.split("\n")){var a;let e=s.trimEnd();if(/^\s*(```|~~~)/.test(e)){n=!n;continue}if(n)continue;let l=/^(#{1,6})\s+(.+?)\s*#*$/.exec(e);if(!l)continue;let o=l[1].length,i=l[2].trim(),c=i.trim().toLowerCase().replace(/[^\w一-鿿\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")||"section",d=null!=(a=r.get(c))?a:0;r.set(c,d+1),d>0&&(c="".concat(c,"-").concat(d)),t.push({level:o,text:i,slug:c})}return t})(t),[t]),u=0,m=e=>{let t=i.current;if(!t)return;let r=t.querySelector("#".concat(CSS.escape(e)));r&&r.scrollIntoView({behavior:"smooth",block:"start"})},[p,h]=(0,o.useState)(()=>{try{return"1"===localStorage.getItem("halo.mdOutlineHidden")}catch(e){return!1}}),f=()=>{h(e=>{let t=!e;try{localStorage.setItem("halo.mdOutlineHidden",t?"1":"0")}catch(e){}return t})};(0,o.useEffect)(()=>{let e=i.current;if(!e)return;let t=s.getState().setSelectedText;function r(){let r=window.getSelection();if(!r||0===r.rangeCount)return;let n=r.getRangeAt(0);if(!(e&&e.contains(n.commonAncestorContainer)))return;if(r.isCollapsed)return void t(null,null);let a=r.toString();if(!a.trim())return void t(null,null);t(a,null)}return document.addEventListener("selectionchange",r),()=>{document.removeEventListener("selectionchange",r),t(null,null)}},[s]);let x=e=>function(t){var r;let{children:n}=t;return(0,l.jsx)(e,{id:null==(r=c[u++])?void 0:r.slug,children:n})};return(0,l.jsxs)("div",{className:"flex h-full bg-[var(--background)]",children:[c.length>1&&!p&&(0,l.jsxs)("nav",{className:"hidden w-56 shrink-0 flex-col overflow-y-auto border-r border-[var(--border)] py-4 md:flex",children:[(0,l.jsxs)("div",{className:"flex shrink-0 items-center justify-between px-3 pb-2",children:[(0,l.jsx)("span",{className:"text-[10px] font-medium uppercase tracking-wide text-[var(--muted-foreground)]",children:a("editor.outline")}),(0,l.jsx)("button",{onClick:f,title:a("editor.hideOutline"),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,l.jsx)(tt.A,{className:"h-3.5 w-3.5"})})]}),c.map((e,t)=>(0,l.jsx)("button",{onClick:()=>m(e.slug),title:e.text,className:"block w-full shrink-0 truncate px-3 py-1 text-left text-xs text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",style:{paddingLeft:"".concat(.75+(e.level-1)*.75,"rem")},children:e.text},"".concat(e.slug,"-").concat(t)))]}),(0,l.jsxs)("div",{ref:i,className:"relative flex-1 overflow-y-auto px-8 py-6",children:[c.length>1&&p&&(0,l.jsx)("button",{onClick:f,title:a("editor.showOutline"),className:"absolute left-2 top-2 z-10 hidden rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] md:block",children:(0,l.jsx)(tr.A,{className:"h-4 w-4"})}),(0,l.jsx)("article",{className:"prose prose-invert prose-sm max-w-none prose-headings:text-[var(--foreground)] prose-headings:font-semibold prose-headings:scroll-mt-4 prose-h1:text-2xl prose-h1:border-b prose-h1:border-[var(--border)] prose-h1:pb-2 prose-h2:text-xl prose-h2:border-b prose-h2:border-[var(--border)] prose-h2:pb-1.5 prose-h3:text-lg prose-p:text-[var(--foreground)] prose-p:leading-relaxed prose-a:text-blue-400 prose-a:no-underline hover:prose-a:underline prose-strong:text-[var(--foreground)] prose-code:text-amber-300 prose-code:bg-[var(--secondary)] prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded prose-code:text-xs prose-code:before:content-none prose-code:after:content-none prose-pre:bg-[var(--secondary)] prose-pre:border prose-pre:border-[var(--border)] prose-pre:rounded-lg prose-blockquote:border-l-blue-500 prose-blockquote:text-[var(--muted-foreground)] prose-li:text-[var(--foreground)] prose-th:text-[var(--foreground)] prose-td:text-[var(--foreground)] prose-table:border-collapse prose-th:border prose-th:border-[var(--border)] prose-th:px-3 prose-th:py-1.5 prose-th:bg-[var(--secondary)] prose-td:border prose-td:border-[var(--border)] prose-td:px-3 prose-td:py-1.5 prose-hr:border-[var(--border)] prose-img:rounded-lg ",children:(0,l.jsx)(e7.oz,{remarkPlugins:[te.A],components:{h1:x("h1"),h2:x("h2"),h3:x("h3"),h4:x("h4"),h5:x("h5"),h6:x("h6"),a(e){let{href:t,children:r,node:n,...a}=e;return(null==t?void 0:t.startsWith("#"))?(0,l.jsx)("a",{href:t,onClick:e=>{e.preventDefault();let r=t.slice(1);try{r=decodeURIComponent(r)}catch(e){}m(r)},...a,children:r}):(0,l.jsx)("a",{href:t,target:"_blank",rel:"noopener noreferrer",...a,children:r})},img(e){let{src:t,alt:a,node:s,...o}=e,i=function(e,t,r){let n;if(!e)return null;if(/^(https?:|data:|blob:)/i.test(e))return e;if(!r)return null;if(e.startsWith("/"))n=e;else{if(!t)return null;let a=t.includes("/")?t.slice(0,t.lastIndexOf("/")):"",s=a?"".concat(a,"/").concat(e):e,l=[];for(let e of s.split("/"))""!==e&&"."!==e&&(".."===e?l.pop():l.push(e));n="".concat(r.replace(/\/$/,""),"/").concat(l.join("/"))}let a=new URLSearchParams;return a.set("path",n),a.set("projectId",r),a.set("inline","1"),"/api/files/download?".concat(a.toString())}("string"==typeof t?t:"",r,n);return i?(0,l.jsx)(tn.p,{src:i,alt:null!=a?a:"",...o,placeholderClassName:"my-2 aspect-[4/3] w-full max-w-sm"}):(0,l.jsxs)("span",{className:"rounded border border-[var(--border)] bg-[var(--secondary)]/30 px-2 py-1 text-xs text-[var(--muted-foreground)]",children:["[image unavailable: ",a||String(t),"]"]})},pre:td},children:t})})]})]})}let tm=["background","foreground","card","card-foreground","border","input","primary","primary-foreground","secondary","secondary-foreground","muted","muted-foreground","accent","accent-foreground","destructive","ring"];function tp(){if("undefined"==typeof document)return{theme:"dark",themeVars:{}};let e=function(e){let t={};for(let r of tm){let n=e.getPropertyValue("--".concat(r)).trim();n&&(t[r]=n)}return t}(getComputedStyle(document.documentElement)),t=e.background?document.createElement("canvas").getContext("2d",{willReadFrequently:!0}):null;if(!t||!e.background)return{theme:"dark",themeVars:e};t.fillStyle=e.background,t.fillRect(0,0,1,1);let[r,n,a]=t.getImageData(0,0,1,1).data;return{theme:function(e){let[t,r,n]=e,a=e=>{let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4};return .2126*a(t)+.7152*a(r)+.0722*a(n)>.4?"light":"dark"}([r,n,a]),themeVars:e}}let th=".halo/canvas/self.html",tf=new Set,tx=!1;function tg(e){let{theme:t,themeVars:r}=tp();try{var n;null==(n=e.contentWindow)||n.postMessage({haloFaceTheme:{scheme:t,vars:r}},"*")}catch(e){}}function tv(e,t){try{var r;null==(r=e.contentWindow)||r.postMessage({haloFaceLang:t},"*")}catch(e){}}let tb=[];function ty(e){let t=e.replace(/[[\]\r\n]+/g," ").replace(/\s+/g," ").trim().slice(0,100);t&&((tb=tb.filter(e=>e!==t)).push(t),tb.length>8&&(tb=tb.slice(-8)))}let tw=null,tj=!1,tk=!1,tN=new Set(["image/jpeg","image/png","image/webp"]),tS=!1;function tC(e){let{url:t,name:r,face:n}=e,a=(0,o.useRef)(null),{theme:s}=(0,e5.useTheme)(),{lang:i}=(0,T.s9)();return(0,o.useEffect)(()=>{if(n&&a.current){var e;return e=a.current,tf.add(e),tS||(tS=!0,window.addEventListener("message",e=>(function(e,t){var r,n;if(!e||"object"!=typeof e||void 0===e.haloFaceAck&&void 0===e.haloFaceSnap)return;let a=!1;for(let e of tf)e.contentWindow&&e.contentWindow===t&&(a=!0);if(!a)return;"string"==typeof e.haloFaceAck&&ty(e.haloFaceAck);let s=e.haloFaceSnap;s&&"string"==typeof s.data&&s.data&&s.data.length<=8388608&&"string"==typeof s.mimeType&&tN.has(s.mimeType)&&(r=s.data,n=s.mimeType,tj?ty("snap skipped (1 per round)"):tk?ty("snap skipped (chain)"):tw?tw(r,n)&&(tj=!0,tk=!0):ty("snap skipped"))})(e.data,e.source))),()=>{tf.delete(e)}}},[n]),(0,o.useEffect)(()=>{n&&a.current&&tg(a.current)},[n,s]),(0,o.useEffect)(()=>{n&&a.current&&tv(a.current,i)},[n,i]),(0,l.jsx)("iframe",{ref:a,src:t,title:r,className:"h-full w-full border-0 ".concat(n?"bg-[var(--background)]":"bg-white"),sandbox:"allow-scripts allow-same-origin",allow:"autoplay",onLoad:n?e=>(function(e,t){if(tg(e),tv(e,t),tx){tx=!1;try{var r;null==(r=e.contentWindow)||r.postMessage({haloFace:"self.intro()"},"*")}catch(e){}}})(e.currentTarget,i):void 0})}let tA=e=>"halo_face_on:".concat(e);function tI(e){return"1"===localStorage.getItem(tA(e))}let tE=(0,b.v)(e=>({on:{},setFaceOn(t,r){t_(t)!==r&&(r?localStorage.setItem(tA(t),"1"):localStorage.removeItem(tA(t)),tb=[],e(e=>({on:{...e.on,[t]:r}})))}})),tT=!1;function t_(e){var t;return!!e&&(null!=(t=tE.getState().on[e])?t:tI(e))}function tP(e){return tE(t=>{var r;return!!e&&(null!=(r=t.on[e])?r:tI(e))})}function tM(e){let{original:t,modified:r,path:n}=e,a=(0,E.sQ)(n),{theme:s}=(0,e5.useTheme)();return(0,l.jsx)(e2.zC,{height:"100%",language:a,original:t,modified:r,beforeMount:e6,theme:e4[s],options:{fontSize:13,lineHeight:20,fontFamily:"'JetBrains Mono', 'Fira Code', 'Cascadia Code', Menlo, Monaco, monospace",minimap:{enabled:!1},scrollBeyondLastLine:!1,readOnly:!0,renderSideBySide:!0,padding:{top:12,bottom:12},automaticLayout:!0,overviewRulerLanes:0,scrollbar:{verticalScrollbarSize:6,horizontalScrollbarSize:6}},loading:(0,l.jsx)("div",{className:"flex h-full items-center justify-center bg-[var(--background)]",children:(0,l.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading diff..."})})})}var tF=r(74037),tD=r(6821),tL=r(56279),tR=r(53105);function tH(e){var t,r;let{x:n,y:a,path:s,groupIdx:i,onClose:c,onCloseTab:u}=e,m=(0,d._r)(),p=(0,o.useRef)(null);(0,o.useEffect)(()=>{function e(e){p.current&&!p.current.contains(e.target)&&c()}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[c]);let h=m.getState(),f=(null!=(r=null==(t=h.groups[i])?void 0:t.tabs)?r:[]).filter(e=>e!==h.pinnedTab).map(e=>h.buffers[e]).filter(e=>!!e),x=f.findIndex(e=>e.path===s),g=[{label:"Close",action:()=>u(s),disabled:s===h.pinnedTab},{label:"Close Others",action:()=>{f.forEach(e=>{e.path!==s&&u(e.path)})},disabled:0===f.filter(e=>e.path!==s).length},{label:"Close to the Right",action:()=>{f.slice(x+1).forEach(e=>u(e.path))},disabled:x>=f.length-1},{label:"Close Saved",action:()=>{f.forEach(e=>{e.modified||u(e.path)})}},{label:"Close All",action:()=>{f.forEach(e=>u(e.path))}}];return(0,l.jsx)("div",{ref:p,className:"fixed z-50 min-w-[160px] rounded-md border border-[var(--border)] bg-[var(--card)] py-1 shadow-lg",style:{left:n,top:a},children:g.map((e,t)=>(0,l.jsx)("button",{disabled:e.disabled,onClick:()=>{e.action(),c()},className:(0,E.cn)("w-full px-3 py-1.5 text-left text-xs transition-colors",e.disabled?"text-[var(--muted-foreground)]/40 cursor-default":"text-[var(--foreground)] hover:bg-[var(--secondary)]"),children:e.label},t))})}let tz="application/x-halo-tab";function tO(e){let{tabs:t,activeTab:r,groupIdx:n,canSplit:a,onCloseTab:s,renderMode:i,onToggleRenderMode:c,showDiffButton:u,onToggleDiff:m}=e,p=(0,T.kj)(),h=(0,d._r)(),f=(0,o.useRef)(null),[x,g]=(0,o.useState)(!1),[v,b]=(0,o.useState)(!1),[y,w]=(0,o.useState)(null),[j,k]=(0,o.useState)(null),[N,S]=(0,o.useState)(!1),[C,A]=(0,o.useState)(null),I=function(e){var t,r,n,a;let s=new Map,l=new Map;for(let n of e){let e=null!=(t=n.path.split(/[\\/]/).pop())?t:n.path;l.set(e,(null!=(r=l.get(e))?r:0)+1)}for(let t of e){let e=t.path.split(/[\\/]/),r=null!=(n=e.pop())?n:t.path;(null!=(a=l.get(r))?a:0)>1&&e.length>0?s.set(t.path,"".concat(e[e.length-1],"/").concat(r)):s.set(t.path,r)}return s}(t),_=(0,o.useCallback)(()=>{let e=f.current;e&&(g(e.scrollLeft>0),b(e.scrollLeft+e.clientWidth<e.scrollWidth-1))},[]);(0,o.useEffect)(()=>{_();let e=f.current;if(!e)return;e.addEventListener("scroll",_);let t=new ResizeObserver(_);return t.observe(e),()=>{e.removeEventListener("scroll",_),t.disconnect()}},[_,t.length]);let M=e=>{var t;null==(t=f.current)||t.scrollBy({left:e,behavior:"smooth"})},D=()=>{w(null),k(null),S(!1)},L=h(e=>e.activeGroupIdx),R=h(e=>e.pinnedTab);return(0,l.jsxs)("div",{className:(0,E.cn)("relative flex shrink-0 items-center border-b border-[var(--border)] bg-[var(--card)]",N&&"ring-1 ring-[var(--primary)]"),onDragOver:e=>{if(!tU(e))return;let t=e.dataTransfer.types.includes(tz)?{srcGroupIdx:-1,path:""}:null;t&&t.srcGroupIdx!==n&&(e.preventDefault(),e.dataTransfer.dropEffect="move",S(!0))},onDragLeave:e=>{e.currentTarget===e.target&&S(!1)},onDrop:e=>{if(!tU(e))return;e.preventDefault();let t=tB(e);t&&t.srcGroupIdx!==n&&h.getState().moveTabToGroup(t.srcGroupIdx,t.path,n),w(null),k(null),S(!1)},onMouseDown:()=>h.getState().setActiveGroup(n),children:[x&&(0,l.jsx)("button",{onClick:()=>M(-150),className:"sticky left-0 z-10 flex h-full w-6 shrink-0 items-center justify-center bg-[var(--card)] text-[var(--muted-foreground)] hover:text-[var(--foreground)] border-r border-[var(--border)]",children:(0,l.jsx)(tF.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("div",{ref:f,className:"flex flex-1 overflow-x-hidden",children:t.map((e,t)=>{var a;let{Icon:o,color:i}=ea(e.path),c=e.path===r&&n===L,d=e.path===r&&n!==L;return(0,l.jsxs)("div",{draggable:!0,onDragStart:r=>{var a;return a=e.path,w(t),r.dataTransfer.effectAllowed="move",r.dataTransfer.setData("text/plain",String(t)),void r.dataTransfer.setData(tz,JSON.stringify({srcGroupIdx:n,path:a}))},onDragOver:e=>{tU(e)&&(e.preventDefault(),e.dataTransfer.dropEffect="move",k(t))},onDrop:e=>((e,t)=>{if(!tU(e))return;e.preventDefault();let r=tB(e);r&&h.getState().moveTabToGroup(r.srcGroupIdx,r.path,n,t),w(null),k(null),S(!1)})(e,t),onDragEnd:D,onContextMenu:t=>{t.preventDefault(),A({x:t.clientX,y:t.clientY,path:e.path})},className:(0,E.cn)("group relative flex items-center gap-1.5 border-r border-[var(--border)] px-3 py-1.5 text-xs cursor-pointer transition-colors select-none",c?"bg-[var(--background)] text-[var(--foreground)]":d?"bg-[var(--background)]/50 text-[var(--muted-foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",y===t&&"opacity-40"),onClick:()=>{h.getState().setActiveTab(e.path,n),h.getState().setRejectedFile(null)},children:[j===t&&null!==y&&y>t&&(0,l.jsx)("div",{className:"absolute left-0 top-1 bottom-1 w-0.5 bg-[var(--primary)]"}),j===t&&null!==y&&y<t&&(0,l.jsx)("div",{className:"absolute right-0 top-1 bottom-1 w-0.5 bg-[var(--primary)]"}),(0,l.jsx)(o,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",i)}),(0,l.jsx)("span",{className:"max-w-40 truncate",title:e.readOnly?"".concat(e.path," \xb7 ").concat(p("pathLink.readOnly")):void 0,children:null!=(a=I.get(e.path))?a:e.path.split("/").pop()}),e.readOnly&&(0,l.jsx)(tD.A,{className:"h-3 w-3 shrink-0 opacity-60","aria-label":p("pathLink.readOnly")}),e.path===R?null:e.modified?(0,l.jsx)(P.A,{className:"h-2 w-2 fill-amber-400 text-amber-400 shrink-0"}):(0,l.jsx)("button",{onClick:t=>{t.stopPropagation(),s(e.path)},className:"ml-0.5 rounded p-0.5 opacity-0 transition-opacity group-hover:opacity-100 hover:bg-[var(--secondary)]",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})}),e.modified&&e.path!==R&&(0,l.jsx)("button",{onClick:t=>{t.stopPropagation(),s(e.path)},className:"ml-0.5 rounded p-0.5 opacity-0 transition-opacity group-hover:opacity-100 hover:bg-[var(--secondary)]",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]},e.path)})}),v&&(0,l.jsx)("button",{onClick:()=>M(150),className:"sticky right-0 z-10 flex h-full w-6 shrink-0 items-center justify-center bg-[var(--card)] text-[var(--muted-foreground)] hover:text-[var(--foreground)] border-l border-[var(--border)]",children:(0,l.jsx)(F.A,{className:"h-3.5 w-3.5"})}),(()=>{let e=t.find(e=>e.path===r),n=(null==e?void 0:e.language)==="markdown"||(null==e?void 0:e.language)==="html";return(0,l.jsxs)("div",{className:"flex items-center gap-0.5 mr-1",children:[n&&(0,l.jsxs)("button",{onClick:c,title:i?"Switch to source view":"Switch to rendered view",className:(0,E.cn)("flex items-center gap-1 rounded px-1.5 py-1 text-[11px] transition-colors",i?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),children:[i?(0,l.jsx)(eX.A,{className:"h-3 w-3"}):(0,l.jsx)(tL.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{children:i?"Edit":"Preview"})]}),u&&(0,l.jsxs)("button",{onClick:m,title:p("editor.viewDiff"),className:"flex items-center gap-1 rounded px-1.5 py-1 text-[11px] text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:[(0,l.jsx)(tR.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{children:p("editor.diff")})]})]})})(),a&&(0,l.jsx)("button",{title:p("editor.splitRight"),onClick:()=>h.getState().splitToRight(),className:"ml-1 mr-1 shrink-0 rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(eV.A,{className:"h-3.5 w-3.5"})}),C&&(0,l.jsx)(tH,{x:C.x,y:C.y,path:C.path,groupIdx:n,onClose:()=>A(null),onCloseTab:s})]})}function tU(e){return e.dataTransfer.types.includes(tz)}function tB(e){try{let t=e.dataTransfer.getData(tz);if(!t)return null;return JSON.parse(t)}catch(e){return null}}let tW={id:"pdf",extensions:["pdf"],Component:(0,o.lazy)(()=>r.e(9839).then(r.bind(r,9839)).then(e=>({default:e.PdfPreview})))},tK={id:"docx",extensions:["docx","doc"],Component:(0,o.lazy)(()=>r.e(2449).then(r.bind(r,32449)).then(e=>({default:e.DocxPreview})))},tG={id:"xlsx",extensions:["xlsx","xls"],Component:(0,o.lazy)(()=>r.e(8892).then(r.bind(r,28892)).then(e=>({default:e.XlsxPreview})))},tq={id:"pptx",extensions:["pptx","ppt"],Component:(0,o.lazy)(()=>Promise.all([r.e(6819),r.e(1807),r.e(1522),r.e(1160),r.e(9868)]).then(r.bind(r,49868)).then(e=>({default:e.PptxPreview}))),heavy:!0};var t$=r(27173);let tY={id:"parquet",extensions:["parquet"],Component:(0,o.lazy)(()=>r.e(7613).then(r.bind(r,37613)).then(e=>({default:e.ParquetPreview})))},tJ={id:"sqlite",extensions:["db","sqlite","sqlite3"],Component:(0,o.lazy)(()=>r.e(4362).then(r.bind(r,84362)).then(e=>({default:e.SqlitePreview})))},tZ={id:"csv",extensions:["csv","tsv"],Component:(0,o.lazy)(()=>r.e(7073).then(r.bind(r,27073)).then(e=>({default:e.CsvPreview})))};ep(tW),ep(tK),ep(tG),ep(tq),ep(t$.SQ),ep(tY),ep(tJ),ep(tZ);var tV=r(43180),tX=r(35418),tQ=r(19875);let t0=e=>e.replace(/\\/g,"/");function t1(e){var t,r;let{workspace:n,accept:a,start:s,onDone:c}=e,d=(0,T.kj)(),[m,p]=(0,o.useState)(null),[h,f]=(0,o.useState)(null),[x,g]=(0,o.useState)(null),[v,b]=(0,o.useState)(0),[y,w]=(0,o.useState)(""),[j,k]=(0,o.useState)(null),N=(0,o.useRef)(null),S=(0,o.useRef)(null),C=(0,o.useRef)(!1),A=(0,o.useCallback)(e=>{C.current||(C.current=!0,c(e))},[c]),I=(0,o.useCallback)((e,t)=>{f(null),g(null),u.FH.fs.browseFiles(e).then(e=>{let t=t0(e.path);p(t),w(t),f(e.entries.map(e=>({...e,path:t0(e.path)})).filter(e=>"directory"===e.type||((e,t)=>{if(0===t.length)return!0;let r=e.toLowerCase();return t.some(e=>r.endsWith(e))})(e.name,a))),b(0)},r=>{if(t&&e!==n)return void I(n,!1);p(e),w(e),f([]),g(r instanceof Error?r.message:String(r))})},[a,n]);(0,o.useEffect)(()=>{I(s,!0)},[I,s]),(0,o.useEffect)(()=>{u.FH.fs.home().then(e=>k(t0(e.home)),()=>{})},[]),(0,o.useEffect)(()=>{var e;null==(e=S.current)||e.focus()},[]);let P=m?null!=(r=null==(t=/^[A-Za-z]:\//.exec(m))?void 0:t[0])?r:"/":"/",M=m&&m!==P?m.lastIndexOf("/")<=P.length-1?P:m.slice(0,m.lastIndexOf("/")):null,D=[...null!==M?["up"]:[],...null!=h?h:[]],L=e=>{var t;if("up"===e){null!==M&&I(M,!1);return}if("directory"===e.type)return void I(e.path,!1);A({path:e.path,name:e.name,size:null!=(t=e.size)?t:0})};(0,o.useEffect)(()=>{let e=e=>{var t;let r=(null==(t=e.target)?void 0:t.tagName)==="INPUT";["Escape","Enter","ArrowDown","ArrowUp","Backspace"].includes(e.key)&&(!r||"Backspace"!==e.key)&&(e.preventDefault(),e.stopImmediatePropagation(),"Escape"===e.key?A(null):r&&"Enter"===e.key?y.trim()&&I(t0(y.trim()),!1):"ArrowDown"===e.key?b(e=>Math.min(e+1,D.length-1)):"ArrowUp"===e.key?b(e=>Math.max(e-1,0)):"Backspace"===e.key?null!==M&&I(M,!1):D[v]&&L(D[v]))};return window.addEventListener("keydown",e,!0),()=>window.removeEventListener("keydown",e,!0)}),(0,o.useEffect)(()=>{var e,t;null==(t=N.current)||null==(e=t.children[v])||e.scrollIntoView({block:"nearest"})},[v]);let R=m?m.slice(P.length).split("/").filter(Boolean):[],H="flex items-center gap-1 rounded border border-[var(--border)] px-2 py-1 text-xs hover:bg-[var(--secondary)]";return(0,i.createPortal)((0,l.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":d("picker.title"),"data-file-picker":!0,className:"fixed inset-0 z-[90] flex items-center justify-center bg-black/40 p-3",onPointerDown:e=>{e.target===e.currentTarget&&A(null)},children:(0,l.jsxs)("div",{ref:S,tabIndex:-1,className:"flex max-h-[85vh] w-full max-w-xl flex-col overflow-hidden rounded-lg border border-[var(--border)] bg-[var(--card)] text-[var(--foreground)] shadow-xl outline-none",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsx)("span",{className:"text-sm font-medium",children:d("picker.title")}),a.length>0&&(0,l.jsx)("span",{className:"truncate text-[10px] text-[var(--muted-foreground)]",children:a.join(" ")}),(0,l.jsx)("button",{type:"button",onClick:()=>A(null),"aria-label":d("picker.cancel"),className:"ml-auto rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsxs)("button",{type:"button",onClick:()=>I(n,!1),className:H,children:[(0,l.jsx)(tV.A,{className:"h-3.5 w-3.5"}),d("picker.workspace")]}),j&&(0,l.jsxs)("button",{type:"button",onClick:()=>I(j,!1),className:H,children:[(0,l.jsx)(tX.A,{className:"h-3.5 w-3.5"}),d("picker.home")]}),(0,l.jsx)("input",{value:y,onChange:e=>w(e.target.value),"aria-label":d("picker.pathBox"),spellCheck:!1,className:"min-w-0 flex-1 rounded border border-[var(--border)] bg-[var(--background)] px-2 py-1 font-mono text-xs outline-none focus:border-[var(--primary)]"})]}),(0,l.jsxs)("nav",{className:"flex flex-wrap items-center gap-0.5 border-b border-[var(--border)] px-3 py-1.5 text-xs",children:[(0,l.jsx)("button",{type:"button",onClick:()=>I(P,!1),className:"rounded px-1 py-0.5 font-mono hover:bg-[var(--secondary)]",children:P}),R.map((e,t)=>(0,l.jsxs)("span",{className:"flex items-center gap-0.5",children:[t>0&&(0,l.jsx)(F.A,{className:"h-3 w-3 text-[var(--muted-foreground)]"}),(0,l.jsx)("button",{type:"button",onClick:()=>I(P+R.slice(0,t+1).join("/"),!1),className:"rounded px-1 py-0.5 hover:bg-[var(--secondary)]",children:e})]},t))]}),(0,l.jsxs)("div",{ref:N,className:"min-h-[8rem] flex-1 overflow-y-auto py-1",children:[D.map((e,t)=>(0,l.jsx)("button",{type:"button",onClick:()=>L(e),onPointerEnter:e=>{"mouse"===e.pointerType&&b(t)},className:(0,E.cn)("flex w-full items-center gap-2 px-3 py-2.5 text-left text-sm sm:py-1.5 sm:text-xs",t===v?"bg-[var(--accent)] text-[var(--accent-foreground)]":"hover:bg-[var(--secondary)]"),children:"up"===e?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(tQ.A,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{children:".."})]}):(0,l.jsxs)(l.Fragment,{children:["directory"===e.type?(0,l.jsx)(_.A,{className:"h-4 w-4 shrink-0 text-[var(--primary)]"}):(0,l.jsx)(et.A,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e.name}),"file"===e.type&&void 0!==e.size&&(0,l.jsx)("span",{className:"shrink-0 text-[10px] text-[var(--muted-foreground)]",children:(0,E.v7)(e.size)})]})},"up"===e?"..":e.path)),null===h&&(0,l.jsx)("p",{className:"px-3 py-4 text-center text-xs text-[var(--muted-foreground)]",children:d("picker.loading")}),null!==h&&x&&(0,l.jsx)("p",{className:"px-3 py-4 text-center text-xs text-[var(--muted-foreground)]",children:x}),null!==h&&!x&&!h.some(e=>"file"===e.type)&&(0,l.jsx)("p",{className:"px-3 py-4 text-center text-xs text-[var(--muted-foreground)]",children:a.length>0?d("picker.emptyAccept",{accept:a.join(" ")}):d("picker.empty")})]}),(0,l.jsx)("div",{className:"flex justify-end border-t border-[var(--border)] px-3 py-2",children:(0,l.jsx)("button",{type:"button",onClick:()=>A(null),className:"rounded-md border border-[var(--border)] bg-[var(--secondary)] px-4 py-1.5 text-xs hover:opacity-90",children:d("picker.cancel")})})]})}),document.body)}var t3=r(37050);let t2=null,t5=null;function t4(){return t2&&t2.expiresAt-Date.now()>6e4?Promise.resolve(t2.token):(t5||(t5=u.FH.extensions.token().then(e=>(t2=e,e.token)).finally(()=>{t5=null})),t5)}function t8(e,t,r,n){return"/api/extensions/".concat(encodeURIComponent(e),"/").concat(encodeURIComponent(t),"/").concat(encodeURIComponent(r),"/").concat(n)}let t6=(0,o.createContext)(null),t9=null,t7=new Set;function re(){for(let e of t7)e()}function rt(e){return t7.add(e),()=>{t7.delete(e)}}function rr(){return null!==t9}function rn(){return(0,o.useSyncExternalStore)(rt,rr,()=>!1)}let ra=!1,rs=!1;function rl(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t9&&(rs=!1===e.refocus,d.Uw.getState().setMaximized(!1))}function ro(e,t){return t?e.filter(e=>"save"!==e):e}function ri(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{ready:!1,dirty:!1,mtime:null,saving:!1,retried:!1,capabilities:e,bundle:t}}function rc(e){return"object"==typeof e&&null!==e&&1===e.haloExt&&"string"==typeof e.type}function rd(e){return e.capabilities.includes("save")}function ru(e){return e.capabilities.includes("fs-read")}let rm=new Set(["read","write","append","list","stat"]);function rp(e,t){return"string"==typeof e&&(""===e?t:!(e.includes("\\")||e.includes("\0"))&&e.split("/").every(e=>""!==e&&"."!==e&&".."!==e))}function rh(e){var t;if("string"!=typeof e||e.includes("\\")||e.includes("\0"))return!1;let r=null==(t=/^(\/|[A-Za-z]:\/)/.exec(e))?void 0:t[0];if(!r)return!1;let n=e.slice(r.length);return""===n||n.split("/").every(e=>""!==e&&"."!==e&&".."!==e)}function rf(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function rx(e,t){return{type:"post",frame:{haloExt:1,type:"export-error",reason:e,message:t}}}function rg(e,t,r,n){return{type:"post",frame:{haloExt:1,type:"fs-result",id:e,ok:!1,code:t,error:r,...n?{auth:n}:{}}}}function rv(e,t){return{type:"post",frame:{haloExt:1,type:"pick-result",id:e,...t}}}function rb(e,t,r){if(!r.ok)return r.auth?{state:e,effects:[rg(t,"io",r.message,!0)]}:{state:e,effects:[rg(t,404===r.status?"not-found":403===r.status?"denied":"io",r.message)]};let{ok:n,...a}=r;return{state:e,effects:[{type:"post",frame:{haloExt:1,type:"fs-result",id:t,ok:!0,...a},...a.buffer?{transfer:[a.buffer]}:{}}]}}function ry(e,t,r){return r.ok?{state:{...e,saving:!1,retried:!1,dirty:!1,mtime:r.mtime},effects:[{type:"post",frame:{haloExt:1,type:"saved",mtime:r.mtime}},{type:"set-modified",modified:!1}]}:"mtime"in r?e.retried?{state:{...e,saving:!1,retried:!1},effects:[{type:"post",frame:{haloExt:1,type:"save-error",reason:"conflict",message:"file changed on disk again",mtime:r.mtime}},{type:"error",message:"Save failed: the file keeps changing on disk"}]}:{state:{...e,saving:!1},effects:[{type:"confirm-conflict",buffer:t,diskMtime:r.mtime}]}:{state:{...e,saving:!1,retried:!1},effects:[{type:"post",frame:{haloExt:1,type:"save-error",reason:"io",message:r.message}},{type:"error",message:"Save failed: ".concat(r.message)}]}}let rw=new Map;function rj(e,t){return"".concat(null!=e?e:"","::").concat(t)}let rk="microphone; display-capture; clipboard-write",rN=e=>e.replace(/\\/g,"/"),rS={redirect:"manual"};async function rC(e){var t;let r=(0,u.cW)(e);if(r)return r;let n=await e.json().catch(()=>({}));return{ok:!1,status:e.status,message:null!=(t=n.error)?t:e.statusText}}async function rA(e){let t=encodeURIComponent(e.path);switch(e.op){case"read":{let e=await fetch("/api/fs/raw?path=".concat(t),rS);return e.ok?{ok:!0,buffer:await e.arrayBuffer()}:await rC(e)}case"list":{let e=await fetch("/api/fs/browse?path=".concat(t,"&files=1"),rS);if(!e.ok)return await rC(e);return{ok:!0,entries:(await e.json()).entries.map(e=>{let{name:t,type:r}=e;return{name:t,type:r}})}}case"stat":{let e=await fetch("/api/fs/stat?path=".concat(t),rS);if(!e.ok)return await rC(e);let r=await e.json();return{ok:!0,size:r.size,mtime:r.modifiedAt}}default:return{ok:!1,status:403,message:"system scope is read-only"}}}async function rI(e,t,r){if("system"===r.scope)try{return await rA(r)}catch(e){return{ok:!1,status:0,message:e instanceof Error?e.message:String(e)}}let n="workspace"===r.scope?r.path:r.path?"".concat(t,"/").concat(r.path):t,a=new URLSearchParams({path:n,projectId:e});try{switch(r.op){case"read":{let t=await fetch(u.FH.files.viewUrl(n,e),rS);return t.ok?{ok:!0,buffer:await t.arrayBuffer()}:await rC(t)}case"list":{let e=await fetch("/api/files/tree?".concat(a),rS);if(!e.ok)return await rC(e);let t=await e.json();return{ok:!0,entries:t.tree.map(e=>{let{name:t,type:r}=e;return{name:t,type:r}})}}case"stat":{let e=await fetch("/api/files/stat?".concat(a),rS);if(!e.ok)return await rC(e);let t=await e.json();return{ok:!0,size:t.size,mtime:t.modifiedAt}}case"write":case"append":{let a=await u.FH.files.saveRaw(n,r.buffer,e,void 0,{create:!0,append:"append"===r.op,root:t});if(a.ok)return{ok:!0,size:a.size,mtime:a.mtime};return"message"in a?a:{ok:!1,status:a.status,message:"conflict"}}}}catch(e){return{ok:!1,status:0,message:e instanceof Error?e.message:String(e)}}}function rE(e){var t,r;let{info:n,gone:a,name:s,path:i,projectId:c,viewUrl:m,downloadUrl:p,size:h,onOpenAsText:f,readOnly:x}=e,{t:g,lang:v}=(0,T.s9)(),b=(0,d._r)(),{theme:y}=(0,e5.useTheme)(),w=(0,o.useMemo)(()=>tp(),[y]),j=(0,o.useRef)(null),k=ro(n.capabilities,!!x),N=(0,o.useRef)(ri(k,n.bundle)),S=(0,o.useRef)(function(){let e=new Map;return{run(t,r){var n;let a=(null!=(n=e.get(t))?n:Promise.resolve()).then(r),s=a.then(()=>{},()=>{});return e.set(t,s),s.then(()=>{e.get(t)===s&&e.delete(t)}),a}}}()),[C,A]=(0,o.useState)(0),I=(0,o.useRef)(C),[_,P]=(0,o.useState)(null),[M,F]=(0,o.useState)("token"),[D,L]=(0,o.useState)(null),[R,H]=(0,o.useState)(null),[z,O]=(0,o.useState)(null),U=(0,o.useRef)(null),[B,W]=(0,o.useState)(null),K=e=>{U.current=e,W(e)},G=(0,o.useRef)(null),q=(0,o.useRef)(null),$=(0,o.useRef)(n.version),Y={file:{name:s,path:i,size:null!=h?h:0,ext:null!=(r=null==(t=s.split(".").pop())?void 0:t.toLowerCase())?r:""},theme:w.theme,themeVars:w.themeVars,platform:ey(),lang:v,projectId:c},J=(0,o.useRef)(Y),Z=(0,o.useRef)(()=>{}),V=(0,o.useCallback)(e=>{for(let t of(N.current=e.state,e.effects))Z.current(t)},[]),X=()=>{G.current&&(clearTimeout(G.current),G.current=null)},Q=e=>{var t,r,a,s,l;switch(e.type){case"post":null==(r=j.current)||null==(t=r.contentWindow)||t.postMessage(e.frame,"*",null!=(a=e.transfer)?a:[]);return;case"load":(async()=>{try{var e;let[t,r]=await Promise.all([fetch(m),c&&!x?u.FH.files.stat(i,c).catch(()=>null):Promise.resolve(null)]);if(!t.ok)throw Error("HTTP ".concat(t.status));let n=await t.arrayBuffer();V(function(e,t,r){let n=[{type:"post",frame:{haloExt:1,type:"load",buffer:t,mtime:null!=r?r:0},transfer:[t]}];return e.dirty&&n.push({type:"set-modified",modified:!1}),{state:{...e,mtime:r,dirty:!1},effects:n}}(N.current,n,null!=(e=null==r?void 0:r.modifiedAt)?e:null))}catch(e){L("Failed to load file: ".concat(e instanceof Error?e.message:String(e)))}})();return;case"put":if(X(),!c)return void V(ry(N.current,e.buffer,{ok:!1,status:0,message:"no workspace"}));u.FH.files.saveRaw(i,e.buffer,c,null!=(s=e.expectMtime)?s:void 0).then(t=>V(ry(N.current,e.buffer,t)));return;case"set-modified":e.modified?b.getState().markModified(i):b.getState().clearModified(i);return;case"error":L(e.message);return;case"confirm-conflict":(async()=>{let t=i.split("/").pop(),r=await (0,E.fN)('"'.concat(t,'" changed on disk since you opened it. Overwrite the disk version with your changes?'))?"overwrite":await (0,E.fN)('Discard your changes and reload "'.concat(t,'" from disk? (Cancel keeps your unsaved changes.)'))?"discard":"cancel";V(function(e,t,r,n){switch(t){case"overwrite":return{state:{...e,saving:!0,retried:!0},effects:[{type:"put",buffer:r,expectMtime:n}]};case"discard":return{state:e,effects:[{type:"load"}]};case"cancel":return{state:e,effects:[]}}}(N.current,r,e.buffer,e.diskMtime))})();return;case"warn":console.warn("[ExtensionHost] ".concat(n.id,": ").concat(e.message));return;case"fs":{if(!c)return void V(rb(N.current,e.id,{ok:!1,status:0,message:"no workspace"}));let t=I.current,r=()=>rI(c,i,e);("write"===e.op||"append"===e.op?S.current.run(e.path,r):r()).then(r=>{I.current===t&&V(rb(N.current,e.id,r))});return}case"export":{let t=I.current,r=e=>{I.current===t&&Z.current(e)};if(!c)return void r(rx("io","no workspace"));let n=i.lastIndexOf("/"),a=n<0?e.name:"".concat(i.slice(0,n),"/").concat(e.name);(async()=>{if(await u.FH.files.stat(a,c).then(()=>!0,()=>!1)&&!await (0,E.fN)(g("editor.extension.exportOverwrite",{name:e.name})))return r(rx("cancelled","overwrite declined"));let t=await u.FH.files.saveRaw(a,e.buffer,c,void 0,{create:!0});if(t.ok){r({type:"post",frame:{haloExt:1,type:"exported",name:e.name,path:a}}),H({path:a,url:u.FH.files.downloadUrl(a,c)});return}let n="message"in t?t.message:"HTTP ".concat(t.status);r(rx("io",n)),L(g("editor.extension.exportFailed",{message:n}))})();return}case"pick":{if(!c||U.current)return void V({state:N.current,effects:[rv(e.id,{ok:!1,code:"cancelled",error:c?"a picker is already open":"no workspace"})]});let t=document.fullscreenElement;t&&t!==document.documentElement&&document.exitFullscreen().catch(()=>{});let r=rN(c).replace(/(.)\/$/,"$1"),a=null!=(l=e.start)?l:n.bundle?i:i.includes("/")?i.slice(0,i.lastIndexOf("/")):"",s=rh(a)?a:a?"".concat(r,"/").concat(a):r;K({id:e.id,accept:e.accept,start:s,attempt:I.current});return}}},ee=async e=>{let t=U.current;K(null);let r=e=>{t&&t.attempt===I.current&&(V({state:N.current,effects:[rv(t.id,e)]}),em())};if(!e||!c)return void r({ok:!1,code:"cancelled",error:"picker closed"});try{let[t,n]=await Promise.all([u.FH.fs.stat(e.path),u.FH.fs.stat(c)]),a=rN(t.realPath),s=rN(n.realPath).replace(/(.)\/$/,"$1"),l=a.startsWith(s.endsWith("/")?s:"".concat(s,"/"));r({ok:!0,path:l?a.slice(s.length).replace(/^\//,""):e.path,name:e.name,size:t.size})}catch(e){r({ok:!1,code:"cancelled",error:"could not stat the picked file: ".concat(e instanceof Error?e.message:String(e))})}};(0,o.useEffect)(()=>{J.current=Y,Z.current=Q});let et=()=>{O(null),F("token"),L(null),P(null),A(e=>e+1)};(0,o.useEffect)(()=>{let e=!1;return I.current=C,N.current.dirty&&b.getState().clearModified(i),N.current=ri(ro(n.capabilities,!!x),n.bundle),t4().then(t=>{e||($.current=n.version,P(t8(n.id,n.version,t,n.entry)),F("loading"),q.current=setTimeout(()=>{N.current.ready||F("failed")},1e4))}).catch(t=>{e||(L(t instanceof Error?t.message:String(t)),F("failed"))}),()=>{e=!0,q.current&&clearTimeout(q.current)}},[C]),(0,o.useEffect)(()=>{let e=e=>{var t;e.source===(null==(t=j.current)?void 0:t.contentWindow)&&rc(e.data)&&("ready"===e.data.type&&(q.current&&(clearTimeout(q.current),q.current=null),F("ready")),"save"===e.data.type&&X(),V(function(e,t,r){switch(t.type){case"ready":{let t=e.dirty?[{type:"set-modified",modified:!1}]:[],n={type:"post",frame:{haloExt:1,type:"init",view:"file",protocol:1,file:r.file,capabilities:e.capabilities,theme:r.theme,themeVars:r.themeVars,bundle:e.bundle,platform:r.platform,lang:r.lang,export:rd(e)&&!e.bundle,...r.projectId&&!e.bundle?{jupyter:{projectId:r.projectId}}:{}}};return{state:{...e,ready:!0,dirty:!1},effects:e.bundle?[...t,n]:[...t,n,{type:"load"}]}}case"dirty":if(!e.ready)return{state:e,effects:[{type:"warn",message:"dirty before ready ignored"}]};if(!rd(e)&&!e.bundle)return{state:e,effects:[{type:"warn",message:"dirty from an extension without the save capability ignored"}]};if(e.dirty===t.dirty)return{state:e,effects:[]};return{state:{...e,dirty:t.dirty},effects:[{type:"set-modified",modified:t.dirty}]};case"save":if(!e.ready)return{state:e,effects:[{type:"warn",message:"save before ready ignored"}]};if(!rd(e))return{state:e,effects:[{type:"post",frame:{haloExt:1,type:"save-error",reason:"denied",message:"extension did not declare the save capability"}},{type:"warn",message:"save from an extension without the save capability denied"}]};if(e.saving)return{state:e,effects:[{type:"warn",message:"save while a save is in flight dropped"}]};return{state:{...e,saving:!0},effects:[{type:"put",buffer:t.buffer,expectMtime:e.mtime}]};case"error":return{state:e,effects:[{type:"error",message:t.message}]};case"fs":let{id:n}=t;if("number"!=typeof n||!Number.isFinite(n))return{state:e,effects:[{type:"warn",message:"fs frame without a numeric id ignored"}]};if(void 0!==t.scope){let{scope:r}=t;return"workspace"!==r&&"system"!==r?{state:e,effects:[rg(n,"denied","unknown fs scope: ".concat(String(r)))]}:ru(e)?rm.has(t.op)?"write"===t.op||"append"===t.op?{state:e,effects:[rg(n,"denied","".concat(r," scope is read-only"))]}:("system"===r?rh(t.path):rp(t.path,"list"===t.op))?{state:e,effects:[{type:"fs",id:n,op:t.op,path:t.path,scope:r}]}:{state:e,effects:[rg(n,"invalid-path","invalid ".concat(r," path: ").concat(JSON.stringify(t.path)))]}:{state:e,effects:[rg(n,"denied","unknown fs op: ".concat(String(t.op)))]}:{state:e,effects:[rg(n,"denied","".concat(r," fs needs the fs-read capability")),{type:"warn",message:"".concat(r," fs without fs-read denied")}]}}if(!e.bundle)return{state:e,effects:[rg(n,"denied","fs is only available to bundle extensions"),{type:"warn",message:"fs from a non-bundle extension denied"}]};if(!rm.has(t.op))return{state:e,effects:[rg(n,"denied","unknown fs op: ".concat(String(t.op)))]};if(!rp(t.path,"list"===t.op))return{state:e,effects:[rg(n,"invalid-path","invalid bundle path: ".concat(JSON.stringify(t.path)))]};if("write"===t.op||"append"===t.op)return rf(t.buffer)?{state:e,effects:[{type:"fs",id:n,op:t.op,path:t.path,buffer:t.buffer}]}:{state:e,effects:[rg(n,"io","".concat(t.op," needs an ArrayBuffer buffer"))]};return{state:e,effects:[{type:"fs",id:n,op:t.op,path:t.path}]};case"export":var a;if(!e.ready)return{state:e,effects:[{type:"warn",message:"export before ready ignored"}]};if(!rd(e)||e.bundle)return{state:e,effects:[rx("denied","export needs the save capability (non-bundle)"),{type:"warn",message:"export from an extension without export support denied"}]};return"string"!=typeof(a=t.name)||""===a||"."===a||".."===a||/[/\\\0]/.test(a)?{state:e,effects:[rx("invalid","invalid export file name: ".concat(JSON.stringify(t.name)))]}:t.name===r.file.name?{state:e,effects:[rx("invalid","export must not overwrite the open file")]}:rf(t.buffer)?{state:e,effects:[{type:"export",name:t.name,buffer:t.buffer}]}:{state:e,effects:[rx("invalid","export needs an ArrayBuffer buffer")]};case"pick":let{id:s}=t;if("number"!=typeof s||!Number.isFinite(s))return{state:e,effects:[{type:"warn",message:"pick frame without a numeric id ignored"}]};if(!ru(e))return{state:e,effects:[rv(s,{ok:!1,code:"denied",error:"pick needs the fs-read capability"}),{type:"warn",message:"pick without fs-read denied"}]};let l=Array.isArray(t.accept)?t.accept.filter(e=>"string"==typeof e&&""!==e).map(e=>e.toLowerCase()):[],o=rp(t.start,!0)||rh(t.start)?t.start:void 0;return{state:e,effects:[{type:"pick",id:s,accept:l,...void 0!==o?{start:o}:{}}]};case"insert-text":case"busy":return{state:e,effects:[{type:"warn",message:"".concat(t.type," frame ignored outside a chat-bar panel")}]}}}(N.current,e.data,J.current)))};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[V]),(0,o.useEffect)(()=>{var e,t,r;V((e=N.current,t=w.theme,r=w.themeVars,e.ready?{state:e,effects:[{type:"post",frame:{haloExt:1,type:"theme",theme:t,themeVars:r}}]}:{state:e,effects:[]}))},[w,V]),(0,o.useEffect)(()=>{var e;V((e=N.current,e.ready?{state:e,effects:[{type:"post",frame:{haloExt:1,type:"lang",lang:v}}]}:{state:e,effects:[]}))},[v,V]);let er=(0,o.useCallback)(()=>{var e;let t=(e=N.current).ready&&rd(e)&&e.dirty&&!e.saving?{state:e,effects:[{type:"post",frame:{haloExt:1,type:"save-request"}}]}:{state:e,effects:[]};V(t),0!==t.effects.length&&(X(),G.current=setTimeout(()=>{G.current=null,N.current.dirty&&!N.current.saving&&window.alert('Extension "'.concat(n.name,'" did not respond to the save request.'))},5e3))},[V,n.name]);(0,o.useEffect)(()=>(function(e,t,r){let n=rj(e,t);return rw.set(n,r),()=>{rw.get(n)===r&&rw.delete(n)}})(c,i,{requestSave:er,fileChanged(){c&&!N.current.bundle&&u.FH.files.stat(i,c).then(e=>{var t,r;return V((t=N.current,r=e.modifiedAt,!t.ready||t.bundle||null!=t.mtime&&r<=t.mtime||t.dirty?{state:t,effects:[]}:{state:t,effects:[{type:"load"}]}))}).catch(()=>{})}}),[c,i,er,V]),(0,o.useEffect)(()=>{if(n.version!==$.current){if(N.current.dirty)return void O(g("editor.extension.updated",{version:n.version}));et()}},[n.version,g]),(0,o.useEffect)(()=>()=>{X(),N.current.dirty&&b.getState().clearModified(i)},[b,i]);let en=async()=>{(!N.current.dirty||await (0,E.fN)('"'.concat(s,'" has unsaved changes. Discard them and reload?')))&&et()},ea=(0,o.useContext)(t6)===i&&!n.capabilities.includes("save"),[es,el]=(0,o.useState)(!1),[eo]=(0,o.useState)(()=>(function(e){let{enterMs:t=2500,leaveMs:r=1500,tapMs:n=3e3}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=!1,s=null,l=t=>{t!==a&&(a=t,e(t))},o=()=>{s&&(clearTimeout(s),s=null)},i=e=>{o(),s=setTimeout(()=>{s=null,l(!1)},e)};return{start(){l(!0),i(t)},move(e){if(e<=48){o(),l(!0);return}a&&!s&&i(r)},tap(e){e>48||(l(!0),i(n))},dispose:o}})(el)),[ei]=(0,o.useState)(()=>{var e,t;return!!(null==(e=(t=window).matchMedia)?void 0:e.call(t,"(pointer: coarse)").matches)}),ec=(0,o.useRef)(!1),[ed,eu]=(0,o.useState)(0),em=()=>{var e;let t=j.current;null==t||t.focus(),null==t||null==(e=t.contentWindow)||e.focus()};(0,o.useEffect)(()=>{if(!ea)return;let e=function(){let e={};return t9=e,re(),()=>{t9===e&&(t9=null,re())}}();eo.start();let t=!1,r=!1,n=document.documentElement;(function(){let e=ra;return ra=!1,e})()&&!document.fullscreenElement&&n.requestFullscreen&&n.requestFullscreen().then(()=>{t=!0,r&&document.exitFullscreen().catch(()=>{})},()=>{});let a=document.fullscreenElement,s=()=>{let e=document.fullscreenElement,r=null!==a&&a!==n;a=e,t&&!e&&(t=!1,r||rl())},l=e=>{"mouse"===e.pointerType&&eo.move(e.clientY)},o=()=>eo.move(1/0),i=e=>{"mouse"!==e.pointerType&&eo.tap(e.clientY)};return document.addEventListener("fullscreenchange",s),window.addEventListener("pointermove",l),n.addEventListener("mouseleave",o),window.addEventListener("pointerdown",i,!0),()=>{r=!0,document.removeEventListener("fullscreenchange",s),window.removeEventListener("pointermove",l),n.removeEventListener("mouseleave",o),window.removeEventListener("pointerdown",i,!0),eo.dispose(),e(),t&&document.fullscreenElement===n&&document.exitFullscreen().catch(()=>{}),function(){let e=!rs;return rs=!1,e}()&&em()}},[ea,eo]),(0,o.useEffect)(()=>{if(!ea||0===ed)return;let e=j.current,t=null==e?void 0:e.contentWindow;if(!e||!t)return;let r=()=>e.getBoundingClientRect().top,n=e=>{"Escape"===e.key&&(t.document.fullscreenElement||(e.preventDefault(),e.stopPropagation(),rl()))},a=e=>{"mouse"===e.pointerType&&eo.move(e.clientY+r())},s=()=>eo.move(1/0),l=e=>{"mouse"!==e.pointerType&&eo.tap(e.clientY+r())},o=null;try{o=t.document,t.addEventListener("keydown",n,!0),t.addEventListener("pointermove",a),t.addEventListener("pointerdown",l,!0),o.documentElement.addEventListener("mouseleave",s)}catch(e){}return em(),()=>{try{t.removeEventListener("keydown",n,!0),t.removeEventListener("pointermove",a),t.removeEventListener("pointerdown",l,!0),null==o||o.documentElement.removeEventListener("mouseleave",s)}catch(e){}}},[ea,ed,eo]);let ep=k.includes("save")?(0,l.jsx)(t3.IB,{onClick:er,title:g("editor.extension.save"),children:(0,l.jsx)("span",{children:g("editor.extension.save")})}):void 0;return(0,l.jsx)(t3.no,{name:s,downloadUrl:p,onOpenAsText:f,extraToolbar:ep,hideHeader:ea,children:(0,l.jsxs)("div",{"data-immersive":ea||void 0,className:(0,E.cn)("flex h-full flex-col",ea&&"fixed inset-0 z-[70] bg-[var(--background)]"),children:[a&&(0,l.jsx)(rT,{children:g("editor.extension.".concat(a))}),z&&(0,l.jsxs)(rT,{onClose:()=>O(null),children:[z,(0,l.jsx)("button",{onClick:en,className:"ml-2 text-[var(--primary)] hover:underline",children:g("editor.extension.reload")})]}),D&&"failed"!==M&&(0,l.jsx)(rT,{onClose:()=>L(null),children:D}),R&&(0,l.jsxs)(rT,{onClose:()=>H(null),children:[g("editor.extension.exported",{path:R.path}),(0,l.jsx)("a",{href:R.url,download:!0,className:"ml-2 text-[var(--primary)] hover:underline",children:g("editor.download")})]}),"failed"===M?(0,l.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 p-8 text-center",children:[(0,l.jsx)("p",{className:"text-sm text-[var(--foreground)]",children:g("editor.extension.unresponsive",{name:n.name})}),D&&(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:D}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("button",{onClick:en,className:"inline-flex items-center rounded-md bg-[var(--primary)] px-4 py-2 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90",children:g("editor.extension.retry")}),f&&(0,l.jsx)("button",{onClick:f,className:"inline-flex items-center rounded-md border border-[var(--border)] bg-[var(--secondary)] px-4 py-2 text-xs font-medium text-[var(--foreground)] hover:opacity-90",children:g("editor.openAsText")})]})]}):(0,l.jsxs)("div",{className:"relative min-h-0 flex-1",children:[_&&(0,l.jsx)("iframe",{ref:j,src:_,sandbox:"allow-scripts allow-same-origin",allow:n.capabilities.includes("media")?rk:"",referrerPolicy:"no-referrer",title:n.name,className:"h-full w-full border-0 bg-[var(--background)]",onLoad:()=>eu(e=>e+1)},C),"ready"!==M&&(0,l.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center bg-[var(--background)]/80 text-sm text-[var(--muted-foreground)]",children:"Loading preview..."})]}),B&&c&&(0,l.jsx)(t1,{workspace:rN(c),accept:B.accept,start:B.start,onDone:e=>{ee(e)}}),ea&&(0,l.jsx)("button",{type:"button",onPointerDown:()=>{ec.current=!0},onClick:e=>{let t=ec.current;ec.current=!1,(t||0===e.detail)&&rl()},onPointerEnter:e=>{"mouse"===e.pointerType&&eo.move(0)},"aria-label":g("editor.immersive.exit"),className:(0,E.cn)("absolute z-10 flex items-center justify-center rounded-full border border-[var(--border)] bg-[var(--card)]/90 text-xs text-[var(--foreground)] shadow-lg backdrop-blur transition-all duration-200",ei?"left-2":"left-1/2 -translate-x-1/2",es?"top-2 h-7 gap-1 px-3 opacity-100":ei?"top-1.5 h-7 w-7 opacity-60":"pointer-events-none -top-2 h-7 px-3 opacity-0"),children:es||!ei?g("editor.immersive.exit"):"\xd7"})]})})}function rT(e){let{children:t,onClose:r}=e;return(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-[var(--border)] bg-[var(--card)] px-3 py-1.5 text-xs text-[var(--foreground)]",children:[(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate",children:t}),r&&(0,l.jsx)("button",{onClick:r,className:"shrink-0 text-[var(--muted-foreground)] hover:text-[var(--foreground)]","aria-label":"Dismiss",children:"\xd7"})]})}var r_=r(46415),rP=r(22726);function rM(e){let{candidates:t,current:r,onPick:n}=e,a=(0,T.kj)(),[s,i]=(0,o.useState)(!1),c=eI(r);return(0,l.jsxs)("div",{className:"relative",children:[(0,l.jsxs)("button",{onClick:()=>i(e=>!e),title:a("editor.openWith"),className:"flex items-center gap-1 rounded px-2 py-1 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:[(0,l.jsx)(r_.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{children:a("editor.openWith")})]}),s&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"fixed inset-0 z-20",onClick:()=>i(!1)}),(0,l.jsx)("div",{className:"absolute right-0 top-full z-30 mt-0.5 min-w-[180px] rounded-md border border-[var(--border)] bg-[var(--background)] py-1 shadow-lg",children:t.map(e=>{let t=eI(e),r=t===c;return(0,l.jsxs)("button",{onClick:()=>{i(!1),r||n(e)},className:(0,E.cn)("flex w-full items-center gap-2 px-3 py-1.5 text-left text-[11px] transition-colors hover:bg-[var(--secondary)]",r?"text-[var(--foreground)]":"text-[var(--foreground)]/80"),children:[(0,l.jsx)(rP.A,{className:(0,E.cn)("h-3 w-3 shrink-0",!r&&"invisible")}),(0,l.jsx)("span",{className:"truncate",children:"text"===e.kind?a("editor.openAsText"):"builtin"===e.kind?a("editor.openWith.builtin",{id:e.plugin.id}):e.info.name}),"extension"===e.kind&&(0,l.jsxs)("span",{className:"ml-auto shrink-0 text-[9px] text-[var(--muted-foreground)]",children:["v",e.info.version]})]},t)})})]})]})}function rF(e,t){return e&&null!=t?"".concat(e,"&v=").concat(t):e}let rD="https://github.com/turmind/halo-hub";function rL(){return(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:"Loading preview..."})}function rR(e){var t,r;em();let n=(0,d._r)();if(e.tooLarge)return(0,l.jsx)(rz,{...e});let a=null!=(r=null==(t=e.name.split(".").pop())?void 0:t.toLowerCase())?r:"",s=e.bundle?eC(a):eS(a),o=e.bundle?void 0:e.onOpenAsText;return(0,l.jsx)(rH,{...e,onOpenAsText:o,candidates:s,useEditorStore:n},a)}function rH(e){var t,r;let n,a,{candidates:s,useEditorStore:i,...c}=e,[d,u]=(0,o.useState)(null),[m,p]=(0,o.useState)(null),h=i(e=>{var t;return!!(null==(t=e.buffers[c.path])?void 0:t.modified)}),f=e=>s.find(t=>eI(t)===eI(e)),x=null!=(t=d&&f(d))?t:s[0];if((null==m?void 0:m.kind)==="extension"&&!f(m)&&h){x=m;let e=m.info.id;n=eg().disabled.some(t=>t.id===e)?"disabled":"uninstalled"}m&&eI(m)===eI(x)&&("extension"!==m.kind||"extension"!==x.kind||m.info===x.info)||p(x);let g=async e=>{if(!h||await (0,E.fN)('"'.concat(c.name,'" has unsaved changes. Discard them and switch viewer?'))){if("text"===e.kind){var t;null==(t=c.onOpenAsText)||t.call(c);return}u(e)}},v=s.length>2?(0,l.jsx)(rM,{candidates:c.bundle?s.filter(e=>"text"!==e.kind):s,current:x,onPick:g}):null;if("extension"===x.kind&&!c.bundle&&(null!=(r=c.size)?r:0)>0x6400000)a=(0,l.jsx)(t3.no,{name:c.name,downloadUrl:c.downloadUrl,onOpenAsText:c.onOpenAsText,children:(0,l.jsx)(rz,{...c,maxLabel:"100MB"})});else if("extension"===x.kind)a=(0,l.jsx)(rE,{...c,info:x.info,gone:n},x.info.id);else if("builtin"===x.kind){let{Component:e}=x.plugin;a=(0,l.jsx)(o.Suspense,{fallback:(0,l.jsx)(rL,{}),children:(0,l.jsx)(e,{...c,viewUrl:rF(c.viewUrl,c.mtime)},c.mtime)})}else a=(0,l.jsx)(rO,{...c});return(0,l.jsx)(t3.NU.Provider,{value:v,children:a})}function rz(e){let{name:t,size:r,downloadUrl:n,maxLabel:a="10MB"}=e;return(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-4 bg-[var(--background)] p-8",children:[(0,l.jsx)("div",{className:"flex h-16 w-16 items-center justify-center rounded-full bg-[var(--secondary)]",children:(0,l.jsx)(et.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"})}),(0,l.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:t}),(0,l.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)]",children:[null!=r?"".concat((0,E.v7)(r)," \xb7 "):"","File is too large to preview (max ",a,")"]}),(0,l.jsx)("a",{href:n,download:!0,className:"inline-flex items-center gap-1.5 rounded-md bg-[var(--primary)] px-4 py-2 text-xs font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90",children:"Download"})]})}function rO(e){var t,r;let{name:n,projectId:a,downloadUrl:s,onOpenAsText:i,bundle:c}=e,d=(0,T.kj)(),[m,p]=(0,o.useState)({url:rD,raw:""}),h=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=ev(e);return el.extensions.filter(e=>ek(e,r,t)&&!ej(e))}(null!=(t=n.split(".").pop())?t:"",!!c),f=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=ev(e);return el.disabled.filter(e=>ek(e,r,t))}(null!=(r=n.split(".").pop())?r:"",!!c);return(0,o.useEffect)(()=>{let e=!0;return u.FH.settings.getSchema(a).then(t=>{var r,n;let a=null==(r=t.sections.find(e=>"extension"===e.namespaceId))?void 0:r.fields.find(e=>"hub_repo"===e.key);e&&p({url:function(e){let t=(null!=e?e:"").trim();return!t||t.startsWith("{{")?rD:/^[A-Za-z0-9][\w.-]*\/[\w.-]+$/.test(t)?"https://github.com/".concat(t):/^https?:\/\//.test(t)?t.replace(/\/+$/,"").replace(/\.git$/,""):null}(null==a?void 0:a.value),raw:null!=(n=null==a?void 0:a.value)?n:""})}).catch(()=>{}),()=>{e=!1}},[a]),(0,l.jsx)(t3.no,{name:n,downloadUrl:s,onOpenAsText:i,children:(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-4 bg-[var(--background)] p-8",children:[(0,l.jsx)("div",{className:"flex h-16 w-16 items-center justify-center rounded-full bg-[var(--secondary)]",children:(0,l.jsx)(et.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"})}),(0,l.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:n}),(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:d("editor.unsupported.title")}),h.map(e=>{var t;return(0,l.jsx)("p",{className:"text-xs text-[var(--foreground)]",children:d("editor.unsupported.platform",{name:e.name,platforms:ew(null!=(t=e.platforms)?t:[],d)})},e.id)}),f.map(e=>(0,l.jsx)("p",{className:"text-xs text-[var(--foreground)]",children:d("editor.unsupported.disabled",{name:e.name})},e.id)),(0,l.jsxs)("p",{className:"text-xs text-[var(--muted-foreground)]",children:[d("editor.unsupported.hub")," ",m.url?(0,l.jsxs)("a",{href:m.url,target:"_blank",rel:"noopener",className:"text-[var(--primary)] hover:underline",children:[m.url===rD?"halo-hub":m.url.replace(/^https?:\/\//,"")," ↗"]}):(0,l.jsx)("code",{className:"text-[var(--foreground)]",children:m.raw})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[i&&(0,l.jsx)("button",{onClick:i,className:"inline-flex items-center gap-1.5 rounded-md border border-[var(--border)] bg-[var(--secondary)] px-4 py-2 text-xs font-medium text-[var(--foreground)] transition-colors hover:opacity-90",children:d("editor.openAsText")}),s&&(0,l.jsx)("a",{href:s,download:!0,className:"inline-flex items-center gap-1.5 rounded-md bg-[var(--primary)] px-4 py-2 text-xs font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90",children:d("editor.download")})]})]})})}let rU=(0,b.v)((e,t)=>({projects:[],activeProject:null,folderPath:"",setProjects(t){e({projects:t})},setActiveProject(t){e({activeProject:t})},setFolderPath(t){e({folderPath:t})},openFolder(r,n){var a;let s=r.trim();if(!s)return;let l=null!=(a=s.split("/").filter(Boolean).pop())?a:s,o={id:s,name:l,path:s,workspaceId:n,createdAt:Date.now()},i=t().projects;i.find(e=>e.path===s)||e({projects:[...i,o]}),e({activeProject:o,folderPath:s})}})),rB=/^(.+?)(?::(\d+)(?::(\d+))?)?$/,rW=/[\s()=<>|;,*?]/,rK=/\.[A-Za-z][A-Za-z0-9]{0,9}$/,rG=/^[A-Za-z]:\//,rq=e=>e.replace(/\\/g,"/"),r$=e=>e.replace(/\/+$/,"");function rY(e){if(!e||rW.test(e)||e.includes("://")||e.startsWith("-"))return null;let t=rB.exec(e);if(!t)return null;let r=t[1],n=rq(r),a=n.indexOf(":");return -1!==a&&(1!==a||!rG.test(n)||n.includes(":",2))||r.startsWith("\\")&&!/^\/\/[^/]+\/[^/]/.test(n)||r.startsWith("//")||!/[^/~.]/.test(n)||!n.includes("/")&&!rK.test(n)?null:{path:r,...t[2]?{line:Number(t[2])}:{},...t[3]?{column:Number(t[3])}:{}}}function rJ(e,t){return t?"".concat(e.replace(/[\\/]+$/,""),"/").concat(t):e}let rZ=null,rV=null;var rX=r(65099),rQ=r(95037),r0=r(31367);function r1(e,t){if(!e||!t)return!0;let r=t.split("/").filter(Boolean),n=e;for(let e of r){var a;if(!(n=null==n||null==(a=n.children)?void 0:a.find(t=>t.name===e)))return!1}return"directory"===n.type}function r3(e){return new Date(e).toLocaleString(void 0,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}let r2=new Set(["tiff","tif","zip","tar","gz","bz2","xz","7z","rar","woff","woff2","ttf","otf","eot","exe","dll","so","dylib","o","a","class","pyc","wasm"]);async function r5(e){return!!(r2.has(e)||eE(e))||(await ex(),eE(e))}function r4(e,t,r){return r?{downloadUrl:"",viewUrl:"",bundle:!0}:{downloadUrl:u.FH.files.downloadUrl(e,t),viewUrl:u.FH.files.viewUrl(e,t)}}function r8(e){var t;return null!=(t=e.split("/").pop())?t:""}async function r6(e,t,r){var n,a;let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],l={path:e,size:r.size,mtime:r.modifiedAt,readOnly:!0};if(!s&&await r5(null!=(a=null==(n=e.split(".").pop())?void 0:n.toLowerCase())?a:""))return{...l,content:"",originalContent:"",language:"",preview:r4(e,t,!1)};if(r.size>0xa00000)return"tooLarge";try{let t=await u.FH.fs.readText(e);return{...l,content:t,originalContent:t,language:(0,E.sQ)(e)}}catch(e){return"missing"}}function r9(e){let{projectId:t,mode:r="full",showMaximize:n=!0}=e,a=(0,T.kj)(),s=(0,d._r)(),i=s(e=>e.tabs),m=s(e=>e.activeTab),v=s(e=>e.buffers),b=s(e=>e.groups),y=s(e=>e.activeGroupIdx),w=s(e=>e.pinnedTab),j=s(e=>e.maximized),k=rn()&&n&&j,N="editor-only"===r,[S,C]=(0,o.useState)(!0),[A,I]=(0,o.useState)({}),[_,P]=(0,o.useState)({});function M(e){var t;return null==(t=_[e])||t}let[F,D]=(0,o.useState)(null),[L,R]=(0,o.useState)(null),[H,z]=(0,o.useState)(new Set),[O,U]=(0,o.useState)(null),[B,W]=(0,o.useState)(null),[K,G]=(0,o.useState)(null),q=(0,o.useRef)(null),$=(0,o.useRef)(null),{tree:Y,loading:J}=function(e){let t=(0,d._r)(),[r,n]=(0,o.useState)(!1),[a,s]=(0,o.useState)(null),l=t(e=>e.fileTree),i=(0,o.useCallback)(async()=>{if(e){n(!0),s(null);try{let r=await x(e);t.getState().setFileTree(f(e,r))}catch(e){s(e instanceof Error?e.message:"Failed to load file tree"),console.error("[useFileTree] Error:",e)}finally{n(!1)}}},[e,t]);return(0,o.useEffect)(()=>{e&&i()},[e,i]),(0,o.useEffect)(()=>{if(e)return p.on("file:changed",e=>{"add"===e.action||"addDir"===e.action?t.getState().insertFileNode(e.path,"addDir"===e.action?"directory":"file"):("unlink"===e.action||"unlinkDir"===e.action)&&t.getState().removeFileNode(e.path)})},[e,t]),(0,o.useEffect)(()=>{if(e)return h(p,()=>g(e,t))},[e,t]),{tree:l,loading:r,error:a,refresh:i}}("editor-only"===r?null:t),[Z,V]=(0,o.useState)(!1),X=(0,o.useRef)(null),Q=em(),ee=(0,o.useCallback)(e=>{var t,r,n,a;return function(e){var t;let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=(r?eC(e):eS(e))[0];return"builtin"===n.kind?!!n.plugin.heavy:"extension"===n.kind&&!(t=n.info).capabilities.includes("save")&&!t.bundle}(null!=(a=null==(t=e.split(".").pop())?void 0:t.toLowerCase())?a:"",!!(null==(n=s.getState().buffers[e])||null==(r=n.preview)?void 0:r.bundle))},[s]),[et,er]=(0,o.useState)([]);(0,o.useEffect)(()=>{let e=[];for(let t of b){let r=t.activeTab;if(!r)continue;let n=v[r];(null==n?void 0:n.preview)&&r!==w&&(ee(r)||e.push(r))}0!==e.length&&er(t=>{let r=t.slice();for(let t=e.length-1;t>=0;t--){let n=e[t];r=[n,...r.filter(e=>e!==n)]}return(r=[...r.slice(0,5),...r.slice(5).filter(e=>{var t;return null==(t=v[e])?void 0:t.modified})],t.length===r.length&&t.every((e,t)=>e===r[t]))?t:r})},[b,v,ee,Q,w]),(0,o.useEffect)(()=>{er(e=>{let t=new Set;for(let e of b)for(let r of e.tabs)t.add(r);let r=e.filter(e=>t.has(e));return r.length===e.length?e:r})},[b]),(0,o.useEffect)(()=>{s.getState().setModelPathPrefix(null!=t?t:null)},[t,s]),(0,o.useEffect)(()=>{if(!t)return;X.current&&X.current!==t&&((0,d.nm)(X.current,Object.keys(s.getState().buffers)),s.setState(e=>{var t,r;return{buffers:{},groups:[{id:null!=(r=null==(t=e.groups[0])?void 0:t.id)?r:"g0",tabs:[],activeTab:null}],activeGroupIdx:0,tabs:[],activeTab:null,modifiedPaths:new Set,pinnedTab:null}}),V(!1)),X.current=t;let e="halo_tabs:".concat(t),r=localStorage.getItem(e);if(!r)return void V(!0);let n=!1;return async function(){try{var e,a,l;let o=JSON.parse(r),i=null!=(a=o.groups)?a:o.tabs?[{tabs:o.tabs,activeTab:null!=(e=o.activeTab)?e:null}]:[],c=null!=(l=o.activeGroupIdx)?l:0;if(0===i.length)return void V(!0);let d=Array.from(new Set(i.flatMap(e=>e.tabs.map(e=>e.path)))),m=new Map,p=new Set,h=new Set;for(let e of i)for(let t of e.tabs)m.has(t.path)||m.set(t.path,t.language),t.bundle&&p.add(t.path),t.readOnly&&h.add(t.path);let f=await Promise.all(d.map(async e=>{var r,n;if(h.has(e))try{let r=await u.FH.fs.stat(e);if(r.isDirectory)return null;let n=await r6(e,t,r);return"string"==typeof n?null:n}catch(e){return null}let a=null!=(n=null==(r=e.split(".").pop())?void 0:r.toLowerCase())?n:"",s=!1;if(p.has(e)){if(await ex(),!eA(r8(e)))return null;s=!0}if(s||await r5(a))try{let r=await u.FH.files.stat(e,t);return{path:e,content:"",originalContent:"",language:"",size:r.size,mtime:r.modifiedAt,createdAt:r.createdAt,preview:r4(e,t,s)}}catch(e){return null}try{let r=await u.FH.files.read(e,t);return{path:e,content:r.content,originalContent:r.content,language:m.get(e)||(0,E.sQ)(e),mtime:r.modifiedAt,size:r.size,createdAt:r.createdAt}}catch(e){return null}}));if(n)return;let x={};for(let e of f)e&&(x[e.path]=e);let g=i.map((e,t)=>{var r;let n=e.tabs.map(e=>e.path).filter(e=>x[e]),a=e.activeTab&&n.includes(e.activeTab)?e.activeTab:null!=(r=n[0])?r:null;return{id:"g_restored_".concat(t,"_").concat(Date.now().toString(36)),tabs:n,activeTab:a}}).filter(e=>e.tabs.length>0);if(0===g.length)s.setState(e=>{var t,r;return{buffers:{},groups:[{id:null!=(r=null==(t=e.groups[0])?void 0:t.id)?r:"g0",tabs:[],activeTab:null}],activeGroupIdx:0,tabs:[],activeTab:null}});else{let e=Math.max(0,Math.min(c,g.length-1)),t=g[e],r=t.tabs.map(e=>x[e]).filter(e=>!!e);s.setState({buffers:x,groups:g,activeGroupIdx:e,tabs:r,activeTab:t.activeTab})}}catch(e){}n||V(!0)}(),()=>{n=!0}},[t]),(0,o.useEffect)(()=>{if(!t||!Z)return;let e=b.map(e=>({tabs:e.tabs.filter(e=>e!==w).map(e=>{var t;let r=v[e];return{path:e,isPreview:!!(null==r?void 0:r.preview),...(null==r||null==(t=r.preview)?void 0:t.bundle)?{bundle:!0}:{},...(null==r?void 0:r.readOnly)?{readOnly:!0}:{},language:null==r?void 0:r.language}}),activeTab:e.activeTab===w?null:e.activeTab}));localStorage.setItem("halo_tabs:".concat(t),JSON.stringify({groups:e,activeGroupIdx:y}))},[b,y,v,t,Z,w]);let en=tP(t);(0,o.useEffect)(()=>{var e;if("editor-only"!==r||!t||!Z)return;let n=s.getState();if(!en)return void n.unpinTab();let a=function(){let e=tT;return tT=!1,e}();if(n.pinnedTab===th&&(null==(e=n.buffers[th])?void 0:e.preview)&&n.groups.some(e=>e.tabs.includes(th))){a&&n.setActiveTab(th);return}let l=!1;return u.FH.files.stat(th,t).then(e=>{l||s.getState().pinTab({path:th,content:"",originalContent:"",language:"",size:e.size,mtime:e.modifiedAt,createdAt:e.createdAt,preview:r4(th,t,!1)},a)}).catch(e=>console.warn("[EditorPanel] Face page missing:",e)),()=>{l=!0}},[en,t,Z,r,s]);let ea=i.find(e=>e.path===m),es=(0,o.useCallback)((e,r)=>{var n,a;if(!t)return;let l=s.getState(),o=rw.get(rj(t,e)),i=(n=l.buffers[e],a={pinned:e===l.pinnedTab,hasHost:!!o},!n||a.pinned||n.readOnly?"none":n.preview?a.hasHost?"host":n.preview.bundle?"none":"preview":n.modified?"none":"text");if("none"!==i){if("host"===i){r&&o.fileChanged();return}u.FH.files.stat(e,t).then(r=>{let n=s.getState();"preview"===i?n.refreshPreview(e,r.modifiedAt,r.size):n.checkAndRefresh(e,r.modifiedAt,()=>u.FH.files.read(e,t))}).catch(()=>{})}},[t,s]),el=(0,o.useCallback)(()=>{let e=s.getState().activeTab;e&&es(e,!1)},[es,s]);(0,o.useEffect)(()=>{Z&&el()},[m,el,Z]);let eo=rU(e=>{var t;return null==(t=e.activeProject)?void 0:t.path});(0,o.useEffect)(()=>{if(t&&eo&&"tree-only"!==r)return p.on("file:changed",e=>{var r;if("change"!==(r=e.action)&&"add"!==r)return;let n="".concat(eo,"/").concat(e.path),a=t.endsWith("/")?t:"".concat(t,"/");if(!n.startsWith(a))return;let l=n.slice(a.length);s.getState().buffers[l]&&es(l,!0)})},[t,eo,r,es,s]),(0,o.useEffect)(()=>{if("tree-only"===r)return;let e=()=>el();return window.addEventListener("focus",e),()=>window.removeEventListener("focus",e)},[el,r]),(0,o.useEffect)(()=>{if("tree-only"!==r)return h(p,el)},[el,r]);let ei=(0,o.useCallback)(async(e,r)=>{var n,a;if(!t)return;if(e===s.getState().pinnedTab)return void s.getState().setActiveTab(e);let l=null!=(a=null==(n=e.split(".").pop())?void 0:n.toLowerCase())?a:"",o=!!(null==r?void 0:r.bundle);if(o||await r5(l)){let r,{downloadUrl:n,viewUrl:a}=r4(e,t,o);try{let n=await u.FH.files.stat(e,t);r={size:n.size,mtime:n.modifiedAt,createdAt:n.createdAt}}catch(e){}s.getState().openPreview(e,n,a,{...r,bundle:o});return}if(s.getState().tabs.find(t=>t.path===e))return void s.getState().setActiveTab(e);try{let r=await u.FH.files.read(e,t),n=(0,E.sQ)(e);s.getState().openFile(e,r.content,n,r.modifiedAt,{size:r.size,createdAt:r.createdAt})}catch(n){console.error("[EditorPanel] Failed to read file:",n);let r=n instanceof Error?n.message:String(n);if(r.includes("413")||r.includes("too large")){let r;try{let n=await u.FH.files.stat(e,t);r={size:n.size,mtime:n.modifiedAt,createdAt:n.createdAt}}catch(e){}s.getState().openPreview(e,u.FH.files.downloadUrl(e,t),u.FH.files.viewUrl(e,t),{...r,tooLarge:!0})}}},[t]),ec=(0,o.useCallback)(async(e,t)=>{let r=s.getState(),n=r.buffers[t],a=r.groups.some((r,n)=>n!==e&&r.tabs.includes(t));(null==n||!n.modified||a&&!n.preview||await (0,E.fN)('"'.concat(t.split("/").pop(),'" has unsaved changes. Close anyway?')))&&s.getState().closeTabIn(e,t)},[]),ed=(0,o.useCallback)(async e=>{let t=Object.values(s.getState().buffers).filter(t=>{var r;return t.modified&&(null==(r=t.preview)?void 0:r.bundle)&&e.some(e=>t.path===e||t.path.startsWith("".concat(e,"/")))}).map(e=>e.path);for(let e of t)if(!await (0,E.fN)('"'.concat(r8(e),'" has unsaved changes. Close anyway?')))return!1;for(let e of t)s.getState().closeTab(e);return!0},[s]),eu=(0,o.useCallback)(async e=>{var r;if(t){if(null==(r=s.getState().buffers[e])?void 0:r.readOnly){let r;try{r=await r6(e,t,await u.FH.fs.stat(e),!0)}catch(e){r="missing"}return"string"==typeof r?void window.alert(a("pathLink.".concat(r))):(s.getState().closeTab(e),void s.getState().openFile(e,r.content,r.language,r.mtime,{size:r.size,readOnly:!0}))}try{let r=await u.FH.files.read(e,t),n=(0,E.sQ)(e);s.getState().closeTab(e),s.getState().openFile(e,r.content,n,r.modifiedAt,{size:r.size,createdAt:r.createdAt})}catch(e){console.error("[EditorPanel] Failed to open as text:",e)}}},[t,a,s]),ep=(0,o.useCallback)((e,t)=>{s.getState().updateContent(e,t)},[]),eh=(0,o.useCallback)(async e=>{var r;let n=null!=e?e:m;if(!n||!t)return;let a=s.getState().tabs.find(e=>e.path===n);if(!a||!a.modified||a.readOnly||(null==(r=a.preview)?void 0:r.bundle))return;let l=rw.get(rj(t,n));if(l)return void l.requestSave();try{let e=await u.FH.files.save(n,a.content,t);s.getState().markSaved(n,e.modifiedAt)}catch(e){console.error("[EditorPanel] Failed to save file:",e)}},[t,m]),ef=(0,o.useCallback)((e,t)=>{let r=s.getState().buffers[t];r&&I(n=>({...n,[e]:{original:r.originalContent,modified:r.content,path:t}}))},[]),eg=(0,o.useCallback)(e=>{I(t=>({...t,[e]:null}))},[]),ev=(0,o.useCallback)(async(e,r)=>{if(!t)return;let n=new AbortController;q.current=n,G({count:e.length,progress:0});try{await u.FH.files.upload(e,t,r||void 0,(e,t)=>{t>0&&G(r=>r?{...r,progress:e/t*100}:null)},n.signal),G(e=>e?{...e,progress:100}:null),setTimeout(()=>G(null),400),g(t,s)}catch(e){if(G(null),e instanceof DOMException&&"AbortError"===e.name)return;console.error("[EditorPanel] Upload failed:",e),window.alert(e instanceof Error?e.message:"Upload failed")}finally{q.current=null}},[t]),eb=(0,o.useCallback)(async(e,r)=>{var n;if(!t)return;let a=null!=(n=e.split("/").pop())?n:"",l=r?"".concat(r,"/").concat(a):a;if(e!==l&&await ed([e]))try{await u.FH.files.rename(e,l,t);let r=s.getState();r.tabs.find(t=>t.path===e)&&r.closeTab(e),g(t,s)}catch(e){console.error("[EditorPanel] Move failed:",e),window.alert(e instanceof Error?e.message:"Move failed")}},[t,ed]),ey=(0,o.useCallback)((e,t)=>{z(e),t&&U(t)},[]),ew=(0,o.useCallback)(e=>{D(e)},[]),ej=(0,o.useCallback)(async e=>{var r,n,a,l,o;if(!t)return;let i=""===e.path&&e.isDir,c=(()=>{if(!i)return{path:e.path,isDir:e.isDir};if(0===H.size)return{path:"",isDir:!0};let t=H.values().next().value;return{path:t,isDir:r1(Y,t)}})(),m=c.isDir?c.path:c.path.includes("/")?c.path.substring(0,c.path.lastIndexOf("/")):"";if("new-file"===e.type||"new-folder"===e.type){m&&eL(m,!0),W({mode:"new-file"===e.type?"create-file":"create-folder",parentDir:m});return}if("open-to-side"===e.type){let l=e.isDir&&eA(r8(e.path));if(e.isDir&&!l)return;try{let o=null!=(n=null==(r=e.path.split(".").pop())?void 0:r.toLowerCase())?n:"",i=l||await r5(o),c=s.getState();1===c.groups.length&&c.splitToRight(null!=(a=c.groups[0].activeTab)?a:e.path);let d=+(s.getState().groups.length>1);if(i){let r=await u.FH.files.stat(e.path,t);s.getState().openFileInGroup(d,e.path,"","",r.modifiedAt,{size:r.size,createdAt:r.createdAt}),s.setState(r=>({buffers:{...r.buffers,[e.path]:{...r.buffers[e.path],preview:r4(e.path,t,l)}}}))}else{let r=await u.FH.files.read(e.path,t),n=(0,E.sQ)(e.path);s.getState().openFileInGroup(d,e.path,r.content,n,r.modifiedAt,{size:r.size,createdAt:r.createdAt})}}catch(e){console.error("[EditorPanel] Open to the side failed:",e),window.alert(e instanceof Error?e.message:"Open to the side failed")}return}if("open-terminal"===e.type){if(!eo)return;let e=m?"".concat(eo,"/").concat(m):eo;d.Uw.getState().requestTerminalSpawn(e),d.Uw.getState().setBottomTab("terminal");return}if("open-as-workspace"===e.type){if(!e.isDir||!eo)return;let t=e.path?"".concat(eo,"/").concat(e.path):eo;window.dispatchEvent(new CustomEvent("halo:open-workspace",{detail:{path:t}}));return}if("reveal-in-file-manager"===e.type){if(!eo)return;let t=window.haloReveal;if(!t)return;let r=e.path?"".concat(eo,"/").concat(e.path):eo;t.reveal(r,e.isDir);return}if("download"===e.type){if(e.isDir)return void R(e.path);let r=u.FH.files.downloadUrl(e.path,t),n=document.createElement("a");return n.href=r,n.download=null!=(l=e.path.split("/").pop())?l:"file",document.body.appendChild(n),n.click(),void n.remove()}if("rename"===e.type){let t=null!=(o=e.path.split("/").pop())?o:"";W({mode:"rename",parentDir:e.path.includes("/")?e.path.substring(0,e.path.lastIndexOf("/")):"",originalPath:e.path,originalName:t});return}if("delete"===e.type){let r=H.size>1&&H.has(e.path)?Array.from(H):[e.path];if(r.length>1){if(!await (0,E.fN)("Delete ".concat(r.length," items?")))return}else{let t=e.isDir?"folder":"file";if(!await (0,E.fN)("Delete ".concat(t,' "').concat(e.path.split("/").pop(),'"?')))return}if(!await ed(r))return;try{for(let e of r)await u.FH.files.remove(e,t),s.getState().closeTab(e);z(new Set),g(t,s)}catch(e){console.error("[EditorPanel] Delete failed:",e),window.alert(e instanceof Error?e.message:"Delete failed"),g(t,s)}}},[t,H,ed]),ek=(0,o.useCallback)(()=>{W(null)},[]),eN=(0,o.useCallback)(async e=>{if(!t||!B)return;let r=e.trim();if(""===r)return void W(null);let{mode:n,parentDir:a,originalPath:l,originalName:o}=B;if("rename"===n){if(!l||r===o)return void W(null);let e=a?"".concat(a,"/").concat(r):r;if(!await ed([l]))return void W(null);try{await u.FH.files.rename(l,e,t),s.getState().closeTab(l),g(t,s)}catch(e){console.error("[EditorPanel] Rename failed:",e),window.alert(e instanceof Error?e.message:"Rename failed")}return void W(null)}let i=a?"".concat(a,"/").concat(r):r,c="create-file"===n&&eA(r);try{"create-file"!==n||c?await u.FH.files.mkdir(i,t):await u.FH.files.create(i,t),g(t,s),c&&ei(i,{bundle:!0})}catch(e){console.error("[EditorPanel] Create failed:",e),window.alert(e instanceof Error?e.message:"Create failed")}W(null)},[t,B,s,ei,ed]);(0,o.useEffect)(()=>{var e;if("tree-only"!==r||!t||!eo)return;let n=e=>{d.Uw.getState().setBottomMaximized(!1),window.dispatchEvent(new CustomEvent("halo:navigate",{detail:{tab:"explorer",force:!0,sidebar:e}}))};return rZ=e=async e=>{var r;let a,l=function(e,t,r){let n=e;if("~"===e||e.startsWith("~/")||e.startsWith("~\\")){if(!r)return null;n=r+e.slice(1)}let a=rq(n);if(!a.startsWith("/")&&!rG.test(a)){let e=r$(a.replace(/^(\.\/)+/,""));return{kind:"workspace",path:e,abs:rJ(t,e)}}let s=function(e,t){let r=/^[A-Za-z]:/.test(t)||t.includes("\\"),n=r$(rq(t)),a=r$(rq(e)),[s,l]=r?[a.toLowerCase(),n.toLowerCase()]:[a,n];return s===l?"":s.startsWith("".concat(l,"/"))?a.slice(n.length+1):null}(a,t);return null!==s?{kind:"workspace",path:s,abs:rJ(t,s)}:{kind:"external",path:n}}(e.path,eo,e.path.startsWith("~")?await (null!=rV||(rV=u.FH.fs.home().then(e=>e.home,()=>(rV=null,null))),rV):null);if(!l)return"missing";try{a=await u.FH.fs.stat("workspace"===l.kind?l.abs:l.path)}catch(e){return"missing"}let o=s.getState();if("workspace"===l.kind){let t=l.path;if(a.isDirectory&&!(t&&eA(r8(t))))return n(!0),t&&(e=>{let t=e.split("/");for(let e=1;e<=t.length;e++)eL(t.slice(0,e).join("/"),!0);ey(new Set([e]),e);let r=0,n=()=>{var t;let a=null==(t=$.current)?void 0:t.querySelector('button[data-path="'.concat(CSS.escape(e),'"]'));a?a.scrollIntoView({block:"nearest"}):++r<50&&setTimeout(n,100)};n()})(t),"ok";await ei(t,a.isDirectory?{bundle:!0}:void 0);let r=s.getState().buffers[t];return r?(e.line&&!r.preview&&o.requestReveal(t,e.line,e.column),n(!1),"ok"):"missing"}if(a.isDirectory)return"outside";let i=a.path;if(o.buffers[i])o.setActiveTab(i);else{let e=await r6(i,t,a);if("string"==typeof e)return e;e.preview?o.openPreview(i,e.preview.downloadUrl,e.preview.viewUrl,{size:e.size,mtime:e.mtime,readOnly:!0}):o.openFile(i,e.content,e.language,e.mtime,{size:e.size,readOnly:!0})}return!e.line||(null==(r=s.getState().buffers[i])?void 0:r.preview)||o.requestReveal(i,e.line,e.column),n(!1),"ok"},()=>{rZ===e&&(rZ=null)}},[r,t,eo,s,ei,ey]);let eI=s(e=>e.pendingReveal);(0,o.useEffect)(()=>{var e;if(!eI)return;let t=null==(e=v[eI.path])?void 0:e.language;if("markdown"!==t&&"html"!==t)return;let r=b.filter(e=>e.activeTab===eI.path).map(e=>e.id);P(e=>r.every(t=>!1===e[t])?e:{...e,...Object.fromEntries(r.map(e=>[e,!1]))})},[eI,b,v]);let eE=(0,o.useCallback)(()=>s.getState().clearReveal(),[s]);(0,o.useEffect)(()=>{function e(e){var t;let r=null==(t=$.current)?void 0:t.querySelector('button[data-path="'.concat(CSS.escape(e),'"]'));r&&(r.focus({preventScroll:!0}),r.scrollIntoView({block:"nearest"}))}function t(t){if(B)return;let r=$.current;if(!r||!Y)return;let n=t.target;if(!n||!r.contains(n)||t.ctrlKey||t.metaKey||t.altKey)return;let a=eK(Y);if(0===a.length)return;let s=[...H].map(e=>a.indexOf(e)).filter(e=>e>=0),l=s.length?Math.min(...s):-1,o=s.length?Math.max(...s):-1,i=O?a.indexOf(O):-1,c=0===s.length?-1:i>=0&&l<i?l:o,d=i>=0?i:c,u=t=>{let r=a[t];ey(new Set([r]),r),e(r)};switch(t.key){case"ArrowDown":case"ArrowUp":{t.preventDefault();let r="ArrowDown"===t.key?1:-1;if(t.shiftKey&&d>=0&&c>=0){let t=Math.max(0,Math.min(a.length-1,c+r)),n=Math.min(d,t),s=Math.max(d,t);ey(new Set(a.slice(n,s+1)),a[d]),e(a[t]);return}if(c<0)return void u(1===r?0:a.length-1);u(Math.max(0,Math.min(a.length-1,c+r)));return}case"ArrowRight":{if(t.shiftKey||c<0)return;t.preventDefault();let e=a[c];if(!r1(Y,e))return;if(!eH(e))return void eL(e,!0);let r=a[c+1];r&&r.startsWith("".concat(e,"/"))&&u(c+1);return}case"ArrowLeft":{if(t.shiftKey||c<0)return;t.preventDefault();let e=a[c];if(r1(Y,e)&&eH(e))return void eL(e,!1);if(!e.includes("/"))return;let r=a.indexOf(e.slice(0,e.lastIndexOf("/")));r>=0&&u(r);return}case"Enter":{if(t.shiftKey||c<0)return;t.preventDefault();let e=a[c],r=r1(Y,e);r&&eA(r8(e))?ei(e,{bundle:!0}):r?eL(e,!eH(e)):ei(e);return}case"Home":case"End":if(t.shiftKey)return;t.preventDefault(),u("Home"===t.key?0:a.length-1);return;case"F2":{var m;if(1!==H.size)return;t.preventDefault();let e=H.values().next().value,r=null!=(m=e.split("/").pop())?m:"";W({mode:"rename",parentDir:e.includes("/")?e.substring(0,e.lastIndexOf("/")):"",originalPath:e,originalName:r});return}}}return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[Y,H,O,B,ei,ey]);let eT=K&&(0,l.jsxs)("div",{className:"shrink-0 border-b border-[var(--border)] bg-[var(--card)] px-3 py-1.5",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsxs)("span",{children:["Uploading ",K.count," file",K.count>1?"s":"","..."]}),(0,l.jsxs)("span",{className:"flex items-center gap-1.5",children:[Math.round(K.progress),"%",(0,l.jsx)("button",{type:"button",onClick:()=>{var e;return null==(e=q.current)?void 0:e.abort()},className:"rounded p-0.5 hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",title:"Cancel upload",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]})]}),(0,l.jsx)("div",{className:"mt-1 h-1 overflow-hidden rounded-full bg-[var(--secondary)]",children:(0,l.jsx)("div",{className:"h-full rounded-full bg-[var(--primary)] transition-all duration-150",style:{width:"".concat(K.progress,"%")}})})]});if("tree-only"===r)return(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[eT,(0,l.jsx)("div",{ref:$,tabIndex:0,className:"flex-1 overflow-y-auto outline-none",children:J?(0,l.jsx)("div",{className:"p-3 text-xs text-[var(--muted-foreground)]",children:"Loading..."}):Y?(0,l.jsx)(eG,{node:Y,projectId:t,onSelect:ei,onContextMenu:ew,onDropFiles:ev,onMoveFile:eb,selectedPaths:H,onSelectionChange:ey,lastAnchor:O,depth:0,pendingEdit:B,onCommitEdit:eN,onCancelEdit:ek}):(0,l.jsx)("div",{className:"p-3 text-xs text-[var(--muted-foreground)]",children:"No files"})}),F&&(0,l.jsx)(eQ,{x:F.x,y:F.y,path:F.path,name:F.name,isDir:F.isDir,selectedCount:H.size>1&&H.has(F.path)?H.size:void 0,onAction:ej,onClose:()=>D(null)}),null!==L&&t&&(0,l.jsx)(e3,{path:L,projectId:t,onClose:()=>R(null)})]});let e_="full"===r&&S;return(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:(0,E.cn)("flex h-10 shrink-0 items-center justify-between border-b border-[var(--border)] px-3",k&&"hidden"),children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:["full"===r&&(0,l.jsx)("button",{onClick:()=>C(!S),className:"rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:S?(0,l.jsx)(tt.A,{className:"h-4 w-4"}):(0,l.jsx)(tr.A,{className:"h-4 w-4"})}),(0,l.jsx)(rX.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:a("nav.canvas")}),ea&&(null!=ea.size||null!=ea.mtime)&&(0,l.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:["(",[null!=ea.size?(0,E.v7)(ea.size):"",null!=ea.createdAt?"Created ".concat(r3(ea.createdAt)):"",null!=ea.mtime?"Modified ".concat(r3(ea.mtime)):""].filter(Boolean).join(" \xb7 "),")"]})]}),(0,l.jsx)("div",{className:"flex items-center gap-1",children:n&&(0,l.jsx)("button",{onClick:()=>{let e=s.getState();e.maximized||(ra=!0,setTimeout(()=>{ra=!1},0)),e.toggleMaximized()},title:j?"Exit full screen":"Maximize editor",className:"rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:j?(0,l.jsx)(rQ.A,{className:"h-4 w-4"}):(0,l.jsx)(r0.A,{className:"h-4 w-4"})})})]}),(0,l.jsxs)(c.YZ,{direction:"horizontal",autoSaveId:e_?"halo-editor-tree":void 0,children:[e_&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.Zk,{defaultSize:20,minSize:10,maxSize:40,children:(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--card)]",children:[eT,(0,l.jsx)("div",{ref:$,tabIndex:0,className:"flex-1 overflow-y-auto outline-none",children:t?J?(0,l.jsx)("div",{className:"p-3 text-xs text-[var(--muted-foreground)]",children:"Loading..."}):Y?(0,l.jsx)(eG,{node:Y,projectId:t,onSelect:ei,onContextMenu:ew,onDropFiles:ev,onMoveFile:eb,selectedPaths:H,onSelectionChange:ey,lastAnchor:O,depth:0,pendingEdit:B,onCommitEdit:eN,onCancelEdit:ek}):(0,l.jsx)("div",{className:"p-3 text-xs text-[var(--muted-foreground)]",children:"No files"}):(0,l.jsx)("div",{className:"p-3 text-xs text-[var(--muted-foreground)]",children:"Open a folder to view files"})})]})}),(0,l.jsx)(c.TW,{className:"w-px bg-[var(--border)] hover:w-1 hover:bg-[var(--primary)] transition-colors"})]}),(0,l.jsx)(c.Zk,{defaultSize:80,minSize:40,children:(0,l.jsx)(c.YZ,{direction:"horizontal",autoSaveId:"halo-editor-panes",children:b.map((e,r)=>{var a,o;let i=e.tabs.map(e=>v[e]).filter(e=>!!e),m=e.activeTab,p=i.find(e=>e.path===m),h=r===y;return(0,l.jsx)(c.Zk,{defaultSize:100/b.length,minSize:20,children:(0,l.jsxs)("div",{className:(0,E.cn)("flex h-full flex-col overflow-hidden",h&&b.length>1&&"ring-1 ring-inset ring-[var(--primary)]/30",k&&!h&&"hidden"),onMouseDown:()=>s.getState().setActiveGroup(r),children:[i.length>0&&(()=>{let t=M(e.id),n=A[e.id],a=!!(null==p?void 0:p.modified)&&!p.preview;return(0,l.jsx)("div",{className:k?"hidden":"contents",children:(0,l.jsx)(tO,{tabs:i,activeTab:m,groupIdx:r,canSplit:N&&1===b.length,onCloseTab:e=>ec(r,e),renderMode:t,onToggleRenderMode:()=>P(r=>({...r,[e.id]:!t})),showDiffButton:a,onToggleDiff:()=>{n?eg(e.id):p&&ef(e.id,p.path)}})})})(),(0,l.jsx)(t6.Provider,{value:j&&n&&h?m:null,children:(0,l.jsxs)("div",{className:"flex-1 overflow-hidden",children:[w&&e.tabs.includes(w)&&(null==(a=v[w])?void 0:a.preview)&&(0,l.jsx)("div",{className:(0,E.cn)("h-full",m!==w&&"hidden"),children:(0,l.jsx)(tC,{url:v[w].preview.viewUrl,name:r8(w),face:!0})}),[...et].sort().map(e=>i.find(t=>t.path===e&&t.preview)).filter(e=>!!e).map(e=>{var r;return(0,l.jsx)("div",{className:(0,E.cn)("h-full",(null==p?void 0:p.path)!==e.path&&"hidden"),children:(0,l.jsx)(rR,{path:e.path,name:null!=(r=e.path.split("/").pop())?r:"",projectId:null!=t?t:void 0,downloadUrl:e.preview.downloadUrl,viewUrl:e.preview.viewUrl,tooLarge:e.preview.tooLarge,bundle:e.preview.bundle,size:e.size,mtime:e.mtime,readOnly:e.readOnly,onOpenAsText:()=>eu(e.path)})},e.path)}),(null==p?void 0:p.preview)&&p.path!==w&&ee(p.path)&&!et.includes(p.path)&&(0,l.jsx)("div",{className:"h-full",children:(0,l.jsx)(rR,{path:p.path,name:null!=(o=p.path.split("/").pop())?o:"",projectId:null!=t?t:void 0,downloadUrl:p.preview.downloadUrl,viewUrl:p.preview.viewUrl,tooLarge:p.preview.tooLarge,bundle:p.preview.bundle,size:p.size,mtime:p.mtime,readOnly:p.readOnly,onOpenAsText:()=>eu(p.path)})},p.path),(()=>{let n=A[e.id],a=M(e.id);if(null==p?void 0:p.preview)return null;if(n)return(0,l.jsxs)("div",{className:"h-full flex flex-col",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] bg-[var(--card)] px-3 py-1.5",children:[(0,l.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:["Diff: ",n.path]}),(0,l.jsx)("button",{onClick:()=>eg(e.id),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"flex-1",children:(0,l.jsx)(tM,{original:n.original,modified:n.modified,path:n.path})})]});if(p){var s;let e=a&&"markdown"===p.language,n=a&&"html"===p.language&&!!t;return(0,l.jsxs)(l.Fragment,{children:[e&&(0,l.jsx)(tu,{content:p.content,filePath:p.path,projectId:t}),n&&(0,l.jsx)(tC,{url:p.path===th?u.FH.files.viewUrl(p.path,t):rF(u.FH.files.viewUrl(p.path,t),p.mtime),name:null!=(s=p.path.split("/").pop())?s:"",face:p.path===th}),(0,l.jsx)("div",{className:(0,E.cn)("h-full",(e||n)&&"hidden"),children:(0,l.jsx)(e9,{path:(0,d.y)(t,p.path),content:p.content,language:p.language,onChange:e=>ep(p.path,e),onSave:()=>eh(p.path),onClose:()=>ec(r,p.path),readOnly:p.readOnly,reveal:e||n||(null==eI?void 0:eI.path)!==p.path?null:eI,onRevealed:eE})})]})}return(0,l.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,l.jsxs)("div",{className:"text-center",children:[(0,l.jsx)(rX.A,{className:"mx-auto h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:"Open a file to start editing"})]})})})()]})})]})},e.id)}).flatMap((e,t,r)=>t<r.length-1?[e,(0,l.jsx)(c.TW,{className:"w-px bg-[var(--border)] hover:w-1 hover:bg-[var(--primary)] transition-colors"},"rh-".concat(t))]:[e])},b.length)})]}),F&&(0,l.jsx)(eQ,{x:F.x,y:F.y,path:F.path,name:F.name,isDir:F.isDir,selectedCount:H.size>1&&H.has(F.path)?H.size:void 0,onAction:ej,onClose:()=>D(null)}),null!==L&&t&&(0,l.jsx)(e3,{path:L,projectId:t,onClose:()=>R(null)})]})}var r7=r(3546);function ne(e){let{info:t,icon:r,fallback:n,className:a}=e,[s,i]=(0,o.useState)(null),[c,d]=(0,o.useState)(!1);if((0,o.useEffect)(()=>{if(!r)return;let e=!1;return t4().then(n=>{e||i(t8(t.id,t.version,n,r))}).catch(()=>{e||d(!0)}),()=>{e=!0,i(null),d(!1)}},[t.id,t.version,r]),!r||c)return(0,l.jsx)(n,{className:a});if(!s)return(0,l.jsx)("span",{"aria-hidden":!0,className:(0,E.cn)("block",a)});let u="url(".concat(JSON.stringify(s),") center / contain no-repeat");return(0,l.jsx)("span",{"aria-hidden":!0,className:(0,E.cn)("block bg-current",a),style:{mask:u,WebkitMask:u}})}function nt(){return{ready:!1}}function nr(e,t,r){let n={type:"post",frame:{haloExt:1,type:"init",view:r,protocol:1,capabilities:t.capabilities,theme:t.theme,themeVars:t.themeVars,platform:t.platform,lang:t.lang}};return{state:{...e,ready:!0},effects:[{type:"ready"},n]}}function nn(e,t,r){switch(t.type){case"ready":return nr(e,r,"activity");case"error":return{state:e,effects:[{type:"error",message:t.message}]};default:return{state:e,effects:[{type:"warn",message:"".concat(t.type," frame ignored on an activity page")}]}}}function na(e,t){var r,n;let a=e.activity;return null!=(n=null!=(r="zh"===t?null==a?void 0:a.title_zh:void 0)?r:null==a?void 0:a.title)?n:e.name}let ns="ext:";function nl(e){return"".concat(ns).concat(e)}function no(e){return e.startsWith(ns)}function ni(e){var t;let{info:r}=e;return(0,l.jsx)(ne,{info:r,icon:null==(t=r.activity)?void 0:t.icon,fallback:r7.A,className:"h-5 w-5"})}function nc(e){let{info:t}=e,{lang:r}=(0,T.s9)();return(0,l.jsx)(nd,{info:t,title:na(t,r),onFrame:nn,logTag:"ExtensionActivity"})}function nd(e){let{info:t,title:r,onFrame:n,onInsert:a,onBusy:s,closeRequested:i=!1,logTag:c,compact:d=!1}=e,{t:u,lang:m}=(0,T.s9)(),{theme:p}=(0,e5.useTheme)(),h=(0,o.useMemo)(()=>tp(),[p]),f=(0,o.useRef)(null),x=(0,o.useRef)(nt()),g=(0,o.useRef)(null),[v,b]=(0,o.useState)(0),[y,w]=(0,o.useState)(null),[j,k]=(0,o.useState)("loading"),[N,S]=(0,o.useState)(null),C={capabilities:t.capabilities.filter(e=>"media"===e||"transcribe"===e||"stt-local"===e),theme:h.theme,themeVars:h.themeVars,platform:ey(),lang:m},A=(0,o.useRef)(C),I=(0,o.useRef)(n),_=(0,o.useRef)(a),P=(0,o.useRef)(s);(0,o.useEffect)(()=>{A.current=C,I.current=n,_.current=a,P.current=s});let M=(0,o.useCallback)(e=>{for(let l of(x.current=e.state,e.effects)){var r,n,a,s;switch(l.type){case"post":null==(n=f.current)||null==(r=n.contentWindow)||r.postMessage(l.frame,"*");break;case"ready":g.current&&(clearTimeout(g.current),g.current=null),k("ready");break;case"error":S(l.message);break;case"warn":console.warn("[".concat(c,"] ").concat(t.id,": ").concat(l.message));break;case"insert":null==(a=_.current)||a.call(_,l.text);break;case"busy":null==(s=P.current)||s.call(P,l.busy)}}},[t.id,c]);return(0,o.useEffect)(()=>{let e=!1;return x.current=nt(),t4().then(r=>{e||(w(t8(t.id,t.version,r,t.entry)),g.current=setTimeout(()=>{x.current.ready||k("failed")},1e4))}).catch(t=>{e||(S(t instanceof Error?t.message:String(t)),k("failed"))}),()=>{e=!0,g.current&&(clearTimeout(g.current),g.current=null)}},[v,t.id,t.version,t.entry]),(0,o.useEffect)(()=>{let e=e=>{var t;e.source===(null==(t=f.current)?void 0:t.contentWindow)&&rc(e.data)&&M(I.current(x.current,e.data,A.current))};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[M]),(0,o.useEffect)(()=>{var e,t,r;M((e=x.current,t=h.theme,r=h.themeVars,e.ready?{state:e,effects:[{type:"post",frame:{haloExt:1,type:"theme",theme:t,themeVars:r}}]}:{state:e,effects:[]}))},[h,M]),(0,o.useEffect)(()=>{var e;M((e=x.current,e.ready?{state:e,effects:[{type:"post",frame:{haloExt:1,type:"lang",lang:m}}]}:{state:e,effects:[]}))},[m,M]),(0,o.useEffect)(()=>{var e,t;i&&(null==(t=f.current)||null==(e=t.contentWindow)||e.postMessage({haloExt:1,type:"close-request"},"*"))},[i]),(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[N&&"failed"!==j&&(0,l.jsx)(rT,{onClose:()=>S(null),children:N}),"failed"===j?(0,l.jsxs)("div",{className:(0,E.cn)("flex flex-1 flex-col items-center justify-center overflow-auto text-center",d?"gap-2 p-2":"gap-3 p-8"),children:[(0,l.jsx)("p",{className:"text-sm text-[var(--foreground)]",children:u("editor.extension.unresponsive",{name:t.name})}),N&&(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:N}),(0,l.jsx)("button",{onClick:()=>{k("loading"),S(null),w(null),b(e=>e+1)},className:"inline-flex items-center rounded-md bg-[var(--primary)] px-4 py-2 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90",children:u("editor.extension.retry")})]}):(0,l.jsxs)("div",{className:"relative min-h-0 flex-1",children:[y&&(0,l.jsx)("iframe",{ref:f,src:y,sandbox:"allow-scripts allow-same-origin",allow:t.capabilities.includes("media")?rk:"",referrerPolicy:"no-referrer",title:r,className:"h-full w-full border-0 bg-[var(--background)]"},"".concat(t.id,"@").concat(t.version)),"ready"!==j&&(0,l.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center bg-[var(--background)]/80 text-sm text-[var(--muted-foreground)]",children:"Loading..."})]})]})}function nu(e){return e.type?e.type:"user"===e.role?"user":"assistant"===e.role?"assistant":e.toolName?"tool_call":void 0===e.toolOutput||e.toolName?e.usage?"usage":e.systemPrompt?"context":"notification":"tool_result"}var nm=r(4671),np=r(46073),nh=r(77497);let nf=/\.(png|jpe?g|gif|webp|bmp|svg)$/i,nx=/\.(mp4|webm|mov|m4v|ogv)$/i,ng=/\.(mp3|wav|flac|aac|m4a|ogg|opus|amr|silk)$/i;function nv(e){return nf.test(e)?"image":nx.test(e)?"video":ng.test(e)?"audio":"file"}function nb(e){let t=[],r=e.replace(/\[(图片|视频|语音消息(?:\s*[^\s]+)?|文件(?:\s*"[^"]*")?)\s*已保存:\s*([^,\]]+)(?:,\s*服务端转写:\s*([^\]]+))?\]/g,(e,r,n,a)=>{let s,l=n.trim();s=r.startsWith("图片")?"image":r.startsWith("视频")?"video":r.startsWith("语音")?"audio":r.startsWith("文件")?"file":nv(l);let o=r.match(/"([^"]+)"/),i=o?o[1]:a?a.trim():void 0;return t.push({path:l,kind:s,label:i}),""});return{text:r=(r=r.replace(/^[ \t]*MEDIA:\s*(\S.*?)\s*$/gm,(e,r)=>{let n=r.trim();return t.push({path:n,kind:nv(n)}),""})).replace(/\n{3,}/g,"\n\n").trim(),media:t}}function ny(e){let{media:t}=e,[r,n]=(0,o.useState)(null);return 0===t.length?null:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:t.map((e,t)=>(0,l.jsx)(nj,{media:e,onOpen:()=>n(e)},"".concat(e.path,"-").concat(t)))}),r&&(0,l.jsx)(nN,{media:r,onClose:()=>n(null)})]})}function nw(e,t){if(!t||!/^(\/|[a-zA-Z]:[\\/]|\\\\)/.test(e))return null;let r=new URLSearchParams;return r.set("path",e),r.set("projectId",t),r.set("inline","1"),"/api/files/download?".concat(r.toString())}function nj(e){var t;let{media:r,onOpen:n}=e,a=rU(e=>{var t,r;return null!=(r=null==(t=e.activeProject)?void 0:t.path)?r:null}),s=nw(r.path,a),o=null!=(t=r.path.split("/").pop())?t:r.path;return s?(0,l.jsxs)("button",{onClick:n,className:"inline-flex items-center gap-1.5 rounded border border-[var(--border)] bg-[var(--secondary)]/30 px-2 py-1 text-[11px] text-[var(--foreground)] cursor-pointer hover:ring-1 hover:ring-[var(--primary)]/40 transition-all no-underline",title:o,children:[(0,l.jsx)(nk,{kind:r.kind}),(0,l.jsx)("span",{className:"truncate max-w-[240px] font-mono",children:r.label||o})]}):(0,l.jsxs)("span",{className:"inline-flex items-center gap-1.5 rounded border border-[var(--border)] bg-[var(--secondary)]/30 px-2 py-1 font-mono text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsx)(nk,{kind:r.kind}),o]})}function nk(e){let{kind:t}=e,r="h-3 w-3";return"image"===t?(0,l.jsx)(nm.A,{className:r}):"video"===t?(0,l.jsx)(np.A,{className:r}):"audio"===t?(0,l.jsx)(nh.A,{className:r}):(0,l.jsx)(W.A,{className:r})}function nN(e){var t;let{media:r,onClose:n}=e,a=rU(e=>{var t,r;return null!=(r=null==(t=e.activeProject)?void 0:t.path)?r:null}),s=nw(r.path,a),[i]=(0,o.useState)(()=>Date.now()),c=null!=(t=r.path.split("/").pop())?t:"file";if((0,o.useEffect)(()=>{let e=e=>{"Escape"===e.key&&n()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[n]),!s)return null;let d="".concat(s,"&t=").concat(i),u="".concat(s.replace("&inline=1",""),"&t=").concat(i);return(0,l.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-6",onClick:n,children:["file"!==r.kind&&(0,l.jsx)("a",{href:u,download:c,onClick:e=>e.stopPropagation(),className:"absolute right-14 top-4 rounded p-2 text-white/80 hover:bg-white/10 hover:text-white","aria-label":"Download",title:"Download",children:(0,l.jsx)(eZ.A,{className:"h-5 w-5"})}),(0,l.jsx)("button",{onClick:n,className:"absolute right-4 top-4 rounded p-2 text-white/80 hover:bg-white/10 hover:text-white","aria-label":"Close",children:(0,l.jsx)(e0.A,{className:"h-5 w-5"})}),(0,l.jsxs)("div",{className:"flex max-h-full max-w-full flex-col items-center gap-3",onClick:e=>e.stopPropagation(),children:["image"===r.kind&&(0,l.jsx)(tn.p,{src:d,alt:r.path,className:"max-h-[85vh] max-w-[90vw] object-contain",placeholderClassName:"aspect-video w-[min(90vw,640px)]"}),"video"===r.kind&&(0,l.jsx)("video",{src:d,controls:!0,autoPlay:!0,className:"max-h-[85vh] max-w-[90vw]"}),"audio"===r.kind&&(0,l.jsx)("audio",{src:d,controls:!0,autoPlay:!0,className:"w-[min(80vw,480px)]"}),"file"===r.kind&&(0,l.jsxs)("a",{href:u,download:c,className:"rounded bg-white/10 px-4 py-2 text-sm text-white hover:bg-white/20 no-underline",children:["Download ",c]}),(0,l.jsx)("div",{className:"max-w-[90vw] truncate font-mono text-[11px] text-white/60",children:r.path})]})]})}var nS=r(45764);function nC(e){let t=nu(e);return"tool_call"===t||"tool_result"===t||"usage"===t||"context"===t||"agent_start"===t||"agent_done"===t}function nA(e){if(e.taskId)return!1;let t=nu(e);return"user"===t||"assistant"===t||"notification"===t}function nI(e){var t,r;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now();return!!e.streaming&&!e.content&&!(null==(t=e.toolCalls)?void 0:t.length)&&!(null==(r=e.contentBlocks)?void 0:r.length)&&n-e.timestamp>3e4}let nE=0;function nT(e){var t;return"system"!==e.role||"notification"!==nu(e)?null:"".concat(null!=(t=e.taskId)?t:"","\0").concat(e.content)}function n_(e){return null!=e?e:""}function nP(e,t,r){if("assistant"===t.role&&t.streaming&&e.streamingIdx.set(n_(t.taskId),r),t.toolCalls)for(let n of t.toolCalls)n.toolUseId&&e.toolUseIdIdx.set(n.toolUseId,r);if(t.contentBlocks)for(let n of t.contentBlocks)"tool_call"===n.type&&n.toolCall.toolUseId&&e.toolUseIdIdx.set(n.toolCall.toolUseId,r)}function nM(e,t){e.streamingIdx.clear(),e.toolUseIdIdx.clear();for(let r=0;r<t.length;r++)nP(e,t[r],r)}function nF(e,t){for(let[r,n]of e.streamingIdx){let a=t[n];a&&"assistant"===a.role&&a.streaming&&n_(a.taskId)===r||e.streamingIdx.delete(r)}}function nD(e,t,r){let n=n_(r),a=e.streamingIdx.get(n);if(void 0!==a){let e=t[a];if(e&&"assistant"===e.role&&e.streaming&&e.taskId===r)return a}for(let a=t.length-1;a>=0;a--){let s=t[a];if("assistant"===s.role&&s.streaming&&s.taskId===r)return e.streamingIdx.set(n,a),a}return e.streamingIdx.delete(n),-1}function nL(e,t,r,n,a){if(!a)return{messages:t,slotIdx:nD(e,t,n),copied:!1};let s=nD(e,t,n),l=-1===s?void 0:t[s];if(l&&!(r&&l.agentName&&l.agentName.toLowerCase()!==r.toLowerCase())){var o;let i=null!=(o=l.contentBlocks)?o:[],c=i.length>0?i[i.length-1].turnId:void 0;if(!c||c===a)return{messages:t,slotIdx:s,copied:!1};let d=[...t];return d[s]={...l,streaming:!1},d.push({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0,agentName:r,taskId:n}),e.streamingIdx.set(n_(n),d.length-1),{messages:d,slotIdx:d.length-1,copied:!0}}let i=[...t,{id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0,agentName:r,taskId:n}];return e.streamingIdx.set(n_(n),i.length-1),{messages:i,slotIdx:i.length-1,copied:!0}}function nR(e){let t="",r=[];for(let n of e)"text"===n.type?t+=n.text:"tool_call"===n.type&&r.push(n.toolCall);return{content:t,toolCalls:r,contentBlocks:e}}let nH={usableAgentCount:-1,sandboxAvailable:null,screenSource:null,cameraSource:null},nz=new Set;function nO(e){for(let t of(Object.assign(nH,e),nz))t.setState(e)}let nU=new Set;function nB(){let e,t={streamingIdx:new Map,toolUseIdIdx:new Map,roundStart:0,lastSnapshot:null},r=(0,nS.y)()((e=()=>queueMicrotask(()=>{if(nz.has(r)&&!r.getState().isStreaming)for(let e of nU)e(r)}),(r,n)=>({messages:[],isStreaming:!1,sessionId:null,pendingMessages:[],contextTokens:0,outputTokens:0,maxContextTokens:0,isCompacting:!1,selectedAgentId:"default",accessLevel:"full",...nH,addMessage(e){var n,a;let s={id:null!=(n=e.id)?n:(0,E.$C)(),type:e.type,role:e.role,content:e.content,timestamp:null!=(a=e.timestamp)?a:Date.now(),streaming:e.streaming,agentName:e.agentName,taskId:e.taskId,contentBlocks:e.contentBlocks,toolName:e.toolName,toolInput:e.toolInput,toolOutput:e.toolOutput,systemPrompt:e.systemPrompt,usage:e.usage,turnId:e.turnId,modelId:e.modelId,durationMs:e.durationMs,localImages:e.localImages,clientMsgId:e.clientMsgId};r(r=>{var n;let a,l=function(e,t,r){var n;if("assistant"===r.role||!nA(r))return null;let a=nD(e,t);if(-1===a)return null;let s=t[a],l=null!=(n=s.contentBlocks)?n:[],o=l.findIndex(e=>"tool_call"===e.type&&!e.toolCall.output),i=-1===o?!l.some(e=>"tool_call"===e.type):0===o;if(!s.content.trim()&&i)return{prefix:[...t.slice(0,a),...t.slice(a+1)],slot:s};let c=[...t];return c[a]=-1===o?{...s,streaming:!1}:{...s,...nR(l.slice(0,o)),streaming:!1},{prefix:c,slot:{id:(0,E.$C)(),role:"assistant",timestamp:Date.now(),streaming:!0,agentName:s.agentName,...nR(-1===o?[]:l.slice(o))}}}(t,r.messages,s),o=nT(s);return null!==o&&function(e,t){for(let r=e.length-1;r>=0;r--){let n=nT(e[r]);if(null===n)break;if(n===t)return!0}return!1}(null!=(n=null==l?void 0:l.prefix)?n:r.messages,o)?r:(l?nM(t,a=[...l.prefix,s,l.slot]):(nP(t,s,r.messages.length),a=[...r.messages,s]),{messages:a,isStreaming:!!e.streaming&&!e.taskId||r.isStreaming})})},appendThinking(e,n,a,s){r(r=>{var l;let o=nL(t,r.messages,n,a,s);if(-1===o.slotIdx)return r;let i=o.copied?o.messages:[...o.messages],c=i[o.slotIdx],d=[...null!=(l=c.contentBlocks)?l:[]],u=d[d.length-1];return u&&"thinking"===u.type&&(!s||u.turnId===s)?d[d.length-1]={type:"thinking",text:u.text+e,turnId:null!=s?s:u.turnId}:d.push({type:"thinking",text:e,turnId:s}),i[o.slotIdx]={...c,contentBlocks:d},{messages:i}})},updateLastAssistant(e,n,a,s){r(r=>{var l;let o=nL(t,r.messages,n,a,s);if(-1===o.slotIdx)return r;let i=o.copied?o.messages:[...o.messages],c=i[o.slotIdx],d=[...null!=(l=c.contentBlocks)?l:[]],u=d[d.length-1];return u&&"text"===u.type&&(!s||u.turnId===s)?d[d.length-1]={type:"text",text:u.text+e,turnId:null!=s?s:u.turnId}:d.push({type:"text",text:e,turnId:s}),i[o.slotIdx]={...c,content:c.content+e,contentBlocks:d},a?{messages:i}:{messages:i,isStreaming:!0}})},discardTurnText(e){r(r=>{var n,a;let s=nD(t,r.messages);if(-1===s)return r;let l=r.messages[s],o=(null!=(n=l.contentBlocks)?n:[]).filter(t=>"text"!==t.type&&"thinking"!==t.type||t.turnId!==e);if(o.length===(null!=(a=l.contentBlocks)?a:[]).length)return r;let i=[...r.messages];return i[s]={...l,...nR(o)},{messages:i}})},addToolCallToLastAssistant(e,n,a,s){r(r=>{var l,o;if(e.toolUseId&&t.toolUseIdIdx.has(e.toolUseId))return r;let i=nL(t,r.messages,n,a,s);if(-1===i.slotIdx)return r;let c=i.copied?i.messages:[...i.messages],d=c[i.slotIdx],u=[...null!=(l=d.contentBlocks)?l:[]];return u.push({type:"tool_call",toolCall:e,turnId:s}),c[i.slotIdx]={...d,toolCalls:[...null!=(o=d.toolCalls)?o:[],e],contentBlocks:u},e.toolUseId&&t.toolUseIdIdx.set(e.toolUseId,i.slotIdx),{messages:c}})},updateLastToolCallResult(e,n,a,s){r(r=>{var n,l,o,i,c,d,u;if(s){let n=null!=(i=t.toolUseIdIdx.get(s))?i:-1,a=-1===n?void 0:r.messages[n],u=null!=(c=null==a||null==(l=a.toolCalls)?void 0:l.findIndex(e=>e.toolUseId===s))?c:-1,m=null!=(d=null==a||null==(o=a.contentBlocks)?void 0:o.findIndex(e=>"tool_call"===e.type&&e.toolCall.toolUseId===s))?d:-1;if(a&&(-1!==u||-1!==m)){if(-1!==u&&void 0!==a.toolCalls[u].output||-1!==m&&void 0!==a.contentBlocks[m].toolCall.output)return r;let t=a.toolCalls?[...a.toolCalls]:a.toolCalls;t&&-1!==u&&(t[u]={...t[u],output:e});let s=a.contentBlocks?[...a.contentBlocks]:a.contentBlocks;if(s&&-1!==m){let t=s[m];s[m]={type:"tool_call",toolCall:{...t.toolCall,output:e},turnId:t.turnId}}let l=[...r.messages];return l[n]={...a,toolCalls:t,contentBlocks:s},{messages:l}}}let m=nD(t,r.messages,a),p=-1===m?void 0:r.messages[m];if(!p||!(null==(n=p.toolCalls)?void 0:n.length))return r;let h=[...p.toolCalls],f=h.findIndex(e=>void 0===e.output);-1!==f&&(h[f]={...h[f],output:e});let x=[...null!=(u=p.contentBlocks)?u:[]];for(let t=0;t<x.length;t++){let r=x[t];if("tool_call"===r.type&&void 0===r.toolCall.output){x[t]={type:"tool_call",toolCall:{...r.toolCall,output:e},turnId:r.turnId};break}}let g=[...r.messages];return g[m]={...p,toolCalls:h,contentBlocks:x},{messages:g}})},completeStreaming(){r(e=>{let r=e.messages.map(e=>e.streaming?{...e,streaming:!1}:e);return nF(t,r),{messages:r,isStreaming:!1}})},completeAgentStreaming(a,s,l){let o=n().isStreaming;r(e=>{let r=e.messages.filter(nA).length,n=e.messages.map(e=>e.streaming?(!s||e.taskId!==s)&&(s||e.taskId)?e:{...e,streaming:!1}:e),l=n.filter(nA).length,o=n.some(e=>e.streaming&&!e.taskId);return r!==l&&console.warn("[ChatStore:completeAgentStreaming] main msgs changed ".concat(r," -> ").concat(l,", agentName=").concat(a,", taskId=").concat(s)),nF(t,n),{messages:n,isStreaming:o}}),!o||n().isStreaming||l||e()},takeRoundReplies(){let{messages:e}=n(),r=e.slice(t.roundStart).filter(e=>"assistant"===e.role&&!e.taskId);return t.roundStart=e.length,r},noteSnapshot(e,r){t.lastSnapshot={sessionId:e,messages:r}},takeReplaySnapshot(){let e=n().sessionId;return t.lastSnapshot&&e&&t.lastSnapshot.sessionId===e?t.lastSnapshot.messages:null},dropOptimisticSend(e){let{messages:a}=n(),s=a.findIndex(t=>t.clientMsgId===e);if(-1===s)return;let l=a.filter((e,t)=>{var r,n;return t!==s&&!(t>s&&e.streaming&&!e.taskId&&!e.content&&!(null==(r=e.toolCalls)?void 0:r.length)&&!(null==(n=e.contentBlocks)?void 0:n.length))});nM(t,l),t.roundStart=Math.min(t.roundStart,l.length),r({messages:l,isStreaming:l.some(e=>e.streaming&&!e.taskId)})},setSessionId(e){r({sessionId:e})},setMessages(e){nM(t,e),t.roundStart=e.length,r({messages:e})},markDeleted(e,t,a){var s;let{messages:l}=n(),o=new Set(e),i=[];for(let e=0;e<l.length;e++)"user"!==l[e].role||l[e].taskId||i.push(e);let c=i.length===a,d=c&&null!=(s=i[t])?s:-1,u=d;if(-1!==d)for(u=d+1;u<l.length&&"user"!==l[u].role;)u++;let m=!1,p=l.map((e,t)=>!e.deleted&&(t>=d&&t<u||o.has(e.id))?(m=!0,{...e,deleted:!0}):e);return m&&r({messages:p}),c},setTokenUsage(e,t){r({contextTokens:e,outputTokens:t})},setMaxContextTokens(e){e>0&&r({maxContextTokens:e})},setCompacting(e){r({isCompacting:e})},setSelectedAgentId(e){r({selectedAgentId:e})},setUsableAgentCount(e){nO({usableAgentCount:e})},setAccessLevel(e){r({accessLevel:e})},setSandboxAvailable(e){nO({sandboxAvailable:e})},setScreenSource(e){nO({screenSource:e})},setCameraSource(e){nO({cameraSource:e})},addPendingMessage(e){r(t=>({pendingMessages:[...t.pendingMessages,e]}))},removePendingMessage(e){r(t=>({pendingMessages:t.pendingMessages.filter((t,r)=>r!==e)}))},shiftPendingMessage(){let e=n().pendingMessages;if(0===e.length)return;let[t,...a]=e;return r({pendingMessages:a}),t},markChatSendFailed(e){r(r=>{let n=r.messages.findIndex(t=>t.clientMsgId===e);if(-1===n)return r;let a=r.messages.map((e,t)=>{var r,a;return t===n?{...e,sendFailed:!0}:!(t>n)||!e.streaming||e.taskId||e.content||(null==(r=e.toolCalls)?void 0:r.length)||(null==(a=e.contentBlocks)?void 0:a.length)?e:{...e,streaming:!1,interrupted:!0}});return nF(t,a),{messages:a,isStreaming:a.some(e=>e.streaming&&!e.taskId)}})},convergeStaleStreaming(){if(n().isCompacting||0===nE)return;let e=Date.now(),a=t=>t.timestamp<=nE&&nI(t,e);n().messages.some(a)&&r(e=>{let r=e.messages.map(e=>a(e)?{...e,streaming:!1,interrupted:!0}:e);return nF(t,r),{messages:r,isStreaming:r.some(e=>e.streaming&&!e.taskId)}})},clear(){nM(t,[]),t.roundStart=0,t.lastSnapshot=null,r({messages:[],isStreaming:!1,pendingMessages:[],sessionId:null,contextTokens:0,outputTokens:0,accessLevel:"full"})}})));return nz.add(r),r}function nW(e){nz.delete(e)}function nK(e){for(let t of nz)e(t)}let nG=nB(),nq=new Set;function n$(){return nG}function nY(e){return nq.add(e),()=>{nq.delete(e)}}let nJ=Object.assign(function(e){let t=(0,o.useSyncExternalStore)(nY,n$,n$);return(0,b.P)(t,e)},{getState:()=>nG.getState(),setState:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return nG.setState(...t)}}),nZ=new Map,nV=(0,b.v)(()=>({sessionId:null,anchor:0,cursor:0,messages:[],loading:!1}));function nX(e,t){let r=nV.getState();r.sessionId===e&&t<=r.anchor||nV.setState({sessionId:e,anchor:t,cursor:t,messages:[],loading:!1})}function nQ(e,t,r){let n=nV.getState();n.sessionId===e&&n.cursor===t&&nV.setState({messages:[...r,...n.messages],cursor:t-1,loading:!1})}async function n0(){var e,t;let r=null==(e=rU.getState().activeProject)?void 0:e.id,{sessionId:n,cursor:a,loading:s}=nV.getState();if(!r||!n||a<1||s)return;let l="".concat(n,"\0").concat(a),o=nZ.get(l);if(o)return void nQ(n,a,o);nV.setState({loading:!0});try{let e=null!=(t=(await u.FH.sessionLogs.archiveSegment(n,a,r)).messages)?t:[];if(nZ.size>=20){let e=nZ.keys().next().value;void 0!==e&&nZ.delete(e)}nZ.set(l,e),nQ(n,a,e)}catch(e){nV.setState({loading:!1})}}function n1(e){return{tabId:(0,E.$C)(),sessionId:null,store:e}}let n3=n1(n$()),n2=(0,b.v)(()=>({projectId:null,tabs:[n3],activeTabId:n3.tabId})),n5=e=>"halo_chat_tabs_".concat(e);function n4(){var e,t;let{projectId:r,tabs:n,activeTabId:a}=n2.getState();if(!r)return;let s=null!=(t=null==(e=n.find(e=>e.tabId===a))?void 0:e.sessionId)?t:null;try{localStorage.setItem(n5(r),JSON.stringify({active:s}))}catch(e){}}let n8=new Map;function n6(e,t){n8.set(e,{scrollTop:0,userScrolledUp:!1,hiddenTurns:0,...n8.get(e),...t})}function n9(e){return n2.getState().tabs.find(e)}function n7(e,t){n2.setState(r=>({tabs:r.tabs.map(r=>r.tabId===e?{...r,...t}:r)}))}function ae(e){return null===e.sessionId&&(!e.store||0===e.store.getState().messages.length)}function at(e,t){let r=n$().getState(),n=nB(),a=n.getState();return a.setSelectedAgentId(null!=t?t:r.selectedAgentId),a.setMaxContextTokens(r.maxContextTokens),e&&a.setSessionId(e),n}function ar(e){var t;let r=null==(t=rU.getState().activeProject)?void 0:t.id;r&&p.connected&&p.send({type:"subscribe",sessionId:e,projectId:r})}function an(e){let t=n9(t=>t.tabId===e);if(!t)return null;let r={},n=null,a=t.store;!a&&(r.store=a=at(t.sessionId),t.sessionId&&(n=t.sessionId,r.loading=!0,r.attempt=(null!=(s=t.attempt)?s:0)+1)),t.unread&&(r.unread=!1);var s,l,o=a;if(o!==nG)for(let e of(nG=o,nq))e();return n2.setState(t=>({activeTabId:e,tabs:Object.keys(r).length>0?t.tabs.map(t=>t.tabId===e?{...t,...r}:t):t.tabs})),t.sessionId&&nX(t.sessionId,null!=(l=t.archiveCount)?l:0),n4(),n}function aa(e){let t=as(e);t&&ar(t)}function as(e){let t=n2.getState(),r=t.tabs.find(t=>t.sessionId===e);if(r)return an(r.tabId);let n={tabId:(0,E.$C)(),sessionId:e},a=t.tabs.find(e=>e.tabId===t.activeTabId),s=a&&ae(a)?a:null;n2.setState({tabs:s?t.tabs.map(e=>e===s?n:e):[...t.tabs,n]});let l=an(n.tabId);return s&&(s.store&&nW(s.store),n8.delete(s.tabId)),l}function al(e){let t=n2.getState(),r=t.tabs.find(ae);if(r){var n;an(r.tabId),e&&(null==(n=r.store)||n.getState().setSelectedAgentId(e));return}let a=n1(at(null,e));n2.setState({tabs:[...t.tabs,a]}),an(a.tabId)}function ao(e){let t=n9(t=>t.sessionId===e);t&&function(e){let t=n2.getState(),r=t.tabs.findIndex(t=>t.tabId===e);if(-1===r)return;let n=t.tabs[r],a=t.tabs.filter(t=>t.tabId!==e);if(0===a.length&&(a=[n1(at(null))]),n2.setState({tabs:a}),t.activeTabId===e){let e=an(a[Math.min(r,a.length-1)].tabId);e&&ar(e)}else n4();n.store&&nW(n.store),n8.delete(e)}(t.tabId)}function ai(e){let t=n$();t.getState().sessionId!==e&&t.getState().setSessionId(e);let r=n9(e=>e.store===t);r&&r.sessionId!==e&&(n7(r.tabId,{sessionId:e}),n4())}function ac(e){var t;let r=[];return nK(t=>{t.getState().sessionId===e&&r.push(t)}),null!=(t=r[0])?t:null}function ad(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],r=e?ac(e):n$();if(r&&t&&r!==n$()){let e=n9(e=>e.store===r);e&&!e.unread&&n7(e.tabId,{unread:!0})}return r}function au(e){e.store&&(nW(e.store),n7(e.tabId,{store:void 0,loading:!1,unread:!1}))}function am(e){return"halo_goal_dismissed_".concat(e)}let ap=(0,b.v)(e=>({enabled:!1,setEnabled:t=>e({enabled:t}),goal:null,dismissedGoalId:null,setGoal:t=>e({goal:t}),dismiss:t=>{var r;e({dismissedGoalId:t});let n=null==(r=rU.getState().activeProject)?void 0:r.id;n&&localStorage.setItem(am(n),t)}}));async function ah(e){if(!ap.getState().enabled)return;let t=localStorage.getItem(am(e));ap.setState({dismissedGoalId:t});try{var r;let t=await u.FH.sessionLogs.goal(e);ap.getState().setGoal(null!=(r=t.goal)?r:null)}catch(e){}}let af=(0,b.v)(()=>({sessionId:null,anchor:0,cursor:0,messages:[],loading:!1}));function ax(e,t){let r=af.getState();r.sessionId===e&&t<=r.anchor||af.setState({sessionId:e,anchor:t,cursor:t,messages:[],loading:!1})}async function ag(){var e,t;let r=null==(e=rU.getState().activeProject)?void 0:e.id,{sessionId:n,cursor:a,loading:s}=af.getState();if(r&&n&&!(a<1)&&!s){af.setState({loading:!0});try{let e=await u.FH.sessionLogs.archiveSegment(n,a,r),s=af.getState();if(s.sessionId!==n||s.cursor!==a)return;af.setState({messages:[...null!=(t=e.messages)?t:[],...s.messages],cursor:a-1,loading:!1})}catch(t){let e=af.getState();e.sessionId===n&&e.cursor===a&&af.setState({loading:!1})}}}let av=new Map,ab=null,ay=!1;function aw(e){return av.get(e)}function aj(e,t,r){let n=av.get(e);if(n){n.messages=t,n.archiveCount=r;return}if(av.set(e,{messages:t,archiveCount:r,scrollOffset:0,atBottom:!0,stale:!1}),!(av.size<=20)){for(let e of av.keys())if(e!==ab)return void av.delete(e)}}function ak(e,t){let r=av.get(e);r&&(r.stale=t)}function aN(e){for(let t of av.keys())(t===e||t.startsWith("".concat(e,">")))&&av.delete(t)}function aS(e){return e.slice(e.lastIndexOf(">")+1)}function aC(e,t){if(t)return e.find(e=>void 0!==e.store&&!e.loading&&e.sessionId===t)}function aA(){let e=(0,b.v)(e=>({version:0,bump:()=>e(e=>({version:e.version+1}))}));return{useBus:e,bump:()=>e.getState().bump()}}let aI=aA(),aE=aI.useBus,aT=aI.bump;function a_(e,t){let r=(0,o.useRef)(null);return(0,o.useEffect)(()=>{let t=r.current;if(!t||"undefined"==typeof IntersectionObserver)return;let n=new IntersectionObserver(t=>{var r;(null==(r=t[0])?void 0:r.isIntersecting)&&e()},{rootMargin:"64px"});return n.observe(t),()=>n.disconnect()},[e,t]),r}var aP=r(63129),aM=r(22936),aF=r(70207),aD=r(4882),aL=r(87343);let aR=(0,b.v)(e=>({selectedAgent:null,selectedSessionId:null,selectedSession:null,loadedMessages:null,loading:!1,setSelectedSession:t=>e({selectedAgent:t.agentName||t.agentId,selectedSessionId:t.id,selectedSession:t,loadedMessages:null}),setLoadedMessages:t=>e({loadedMessages:t,loading:!1}),setLoading:t=>e({loading:t}),clearSelection:()=>e({selectedAgent:null,selectedSessionId:null,selectedSession:null,loadedMessages:null,loading:!1})}));function aH(e){let t=new Map;for(let r of e)t.set(r.id,{...r,children:[]});let r=[];for(let e of t.values())e.parentSessionId&&t.has(e.parentSessionId)?t.get(e.parentSessionId).children.push(e):r.push(e);for(let e of t.values())e.children.sort((e,t)=>t.updatedAt-e.updatedAt);return r}function az(e){let t=0;for(let r of e)t+=1+az(r.children);return t}function aO(e){let{value:t,onChange:r,onCommit:n,onCancel:a,textSize:s}=e;return(0,l.jsx)("input",{autoFocus:!0,value:t,onChange:e=>r(e.target.value),onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),n()):"Escape"===e.key&&(e.preventDefault(),a())},onBlur:n,className:(0,E.cn)("min-w-0 flex-1 rounded border border-[var(--border)] bg-[var(--background)] px-1 py-0.5 text-[var(--foreground)] outline-none focus:border-blue-500",s)})}function aU(e){let{nodes:t,depth:r,expanded:n,selectedSessionId:a,onToggle:s,onSelect:o,editingId:i,editingTitle:c,setEditingTitle:d,onStartRename:u,onCommitRename:m,onCancelRename:p}=e,h=(0,T.kj)(),f=ap(e=>e.enabled),x=12+16*r;return(0,l.jsx)(l.Fragment,{children:t.map(e=>{let t=a===e.id,g=!!e.stoppedAt,v=!!e.archivedAt,b=e.children.length>0,y=n.has(e.id);return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{onClick:()=>o(e),title:"Click to preview sub-agent session",className:(0,E.cn)("group flex w-full items-center gap-1.5 pr-3 py-1.5 text-left transition-colors border-b border-[var(--border)]/10",t?"bg-[var(--secondary)]":"hover:bg-[var(--secondary)]/40",v&&"opacity-50"),style:{paddingLeft:"".concat(x,"px")},children:[b?(0,l.jsx)("span",{onClick:t=>{t.stopPropagation(),s(e.id)},className:"shrink-0 flex items-center justify-center w-4 h-4 -ml-0.5 cursor-pointer rounded hover:bg-[var(--muted)]/50",children:(0,l.jsx)(F.A,{className:(0,E.cn)("h-2.5 w-2.5 text-[var(--muted-foreground)] transition-transform",y&&"rotate-90")})}):(0,l.jsx)("span",{className:"w-4 shrink-0 -ml-0.5"}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,l.jsx)("span",{className:"shrink-0 rounded bg-purple-900/50 px-1 py-0.5 text-[8px] text-purple-400",children:e.agentName||e.agentId}),i===e.id?(0,l.jsx)(aO,{value:c,onChange:d,onCommit:()=>m(e.id),onCancel:p,textSize:"text-[10px]"}):(0,l.jsxs)("p",{className:"truncate text-[10px] text-[var(--foreground)]",children:[f&&e.goalSessionId&&(0,l.jsx)("span",{title:"Goal-bound worker session",className:"mr-1",children:"\uD83C\uDFAF"}),e.title||"Untitled"]}),g&&(0,l.jsx)("span",{title:"Stopped",children:(0,l.jsx)(aP.A,{className:"h-2.5 w-2.5 shrink-0 text-[var(--muted-foreground)]"})}),v&&(0,l.jsx)("span",{title:"Archived",children:(0,l.jsx)(aM.A,{className:"h-2.5 w-2.5 shrink-0 text-amber-500"})}),b&&(0,l.jsxs)("span",{className:"text-[9px] text-[var(--muted-foreground)]",children:["+",az(e.children)]})]}),(0,l.jsxs)("p",{className:"text-[9px] text-[var(--muted-foreground)]",children:[e.exchangeCount," msgs \xb7 ",(0,E.fw)(e.updatedAt,h)]})]}),i!==e.id&&(0,l.jsx)("span",{onClick:t=>u(t,e),title:"Rename",className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 hover:text-blue-400 transition-opacity",children:(0,l.jsx)(eX.A,{className:"h-2.5 w-2.5"})})]}),y&&b&&(0,l.jsx)(aU,{nodes:e.children,depth:r+1,expanded:n,selectedSessionId:a,onToggle:s,onSelect:o,editingId:i,editingTitle:c,setEditingTitle:d,onStartRename:u,onCommitRename:m,onCancelRename:p})]},e.id)})})}let aB=e=>"halo_selected_session_".concat(e);function aW(e){let t=[];return!function e(r){for(let n of r)t.push(n),e(n.children)}(e),t}function aK(){let e=(0,T.kj)(),t=nJ(e=>e.isStreaming),r=nJ(e=>e.sessionId),n=rU(e=>e.activeProject),{selectedSessionId:a,setSelectedSession:s,clearSelection:i,setLoadedMessages:c,setLoading:d}=aR(),[m,p]=(0,o.useState)([]),[h,f]=(0,o.useState)(null),x=(0,o.useRef)(0),g=(0,o.useRef)(null),[v,b]=(0,o.useState)(new Set),[y,w]=(0,o.useState)(!0),[j,k]=(0,o.useState)(!1),N=(0,o.useRef)(null),[S,C]=(0,o.useState)(null),[A,I]=(0,o.useState)(""),_=(0,o.useRef)(""),P=(0,o.useRef)(null),M=(0,o.useRef)(!1);(0,o.useEffect)(()=>{(null==n?void 0:n.id)&&N.current&&N.current!==n.id&&(i(),av.clear(),N.current=null)},[null==n?void 0:n.id,i]);let D=(0,o.useCallback)(async function(){let{showSpinner:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{showSpinner:!0};if(!(null==n?void 0:n.path)){p([]),f(null),w(!1);return}if(null!==P.current){M.current=!0;return}M.current=!1,e&&w(!0);let t=n.path,r=Date.now();try{let e=await u.FH.sessionLogs.list(t,{includeArchived:!0,limit:30}),r=e.sessions,n=e.nextCursor;if(g.current!==t||x.current<=30||null===n)p(aH(r)),f(n);else{let e=new Set(r.map(e=>e.id));p(t=>{let a=t.filter(t=>t.updatedAt<n&&!e.has(t.id));return aH([...r,...aW(a)])})}g.current=t}catch(e){console.error("[Sessions] Failed to fetch:",e),p([]),f(null)}finally{e?setTimeout(()=>w(!1),Math.max(0,350-(Date.now()-r))):w(!1)}},[null==n?void 0:n.path]),L=(0,o.useCallback)(async()=>{if((null==n?void 0:n.path)&&null!==h&&!j){k(!0);try{let e=await u.FH.sessionLogs.list(n.path,{includeArchived:!0,limit:30,cursor:h}),t=e.sessions;p(e=>{let r=aW(e),n=new Set(r.map(e=>e.id)),a=[...r,...t.filter(e=>!n.has(e.id))];return aH(a)}),f(e.nextCursor)}catch(e){console.error("[Sessions] loadMore failed:",e)}finally{k(!1)}}},[null==n?void 0:n.path,h,j]);(0,o.useEffect)(()=>{x.current=m.length},[m.length]);let H=aE(e=>e.version),z=(0,o.useRef)(!0);(0,o.useEffect)(()=>{D({showSpinner:z.current}),z.current=!1},[D,H]),(0,o.useEffect)(()=>{a&&!y&&!new Set(aW(m).map(e=>e.id)).has(a)&&(i(),(null==n?void 0:n.id)&&localStorage.removeItem(aB(n.id)))},[m,a,y,i,null==n?void 0:n.id]);let O=(0,o.useCallback)(e=>{b(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),U=(0,o.useCallback)(async e=>{var t,r;let a=aR.getState();if(a.selectedSessionId===e.id&&(null!==a.loadedMessages||a.loading))return;s(e),d(!0),(null==n?void 0:n.id)&&localStorage.setItem(aB(n.id),e.id);let l=aC(n2.getState().tabs,e.id);if(null==l?void 0:l.store){ax(e.id,null!=(t=l.archiveCount)?t:0),c(l.store.getState().messages);return}let o=aw(e.id);if(o){ax(e.id,o.archiveCount),c(o.messages);return}let i=()=>aR.getState().selectedSessionId===e.id;try{let t=await u.FH.sessionLogs.get(e.id,null==n?void 0:n.path),a="number"==typeof t.archiveCount?t.archiveCount:0,s=null!=(r=t.messages)?r:[];if(aj(e.id,s,a),!i())return;ax(e.id,a),c(s)}catch(t){if(console.error("[Sessions] Load failed:",t),!i())return;ax(e.id,0),c([])}},[null==n?void 0:n.id,null==n?void 0:n.path,s,c,d]);(0,o.useEffect)(()=>{if(!(null==n?void 0:n.id)||y||0===m.length||N.current===n.id)return;N.current=n.id;let e=localStorage.getItem(aB(n.id));if(!e)return;let t=aW(m),r=t.find(t=>t.id===e);if(!r)return;let a=new Map(t.map(e=>[e.id,e])),s=[],l=r;for(;null==l?void 0:l.parentSessionId;)s.push(l.parentSessionId),l=a.get(l.parentSessionId);s.length>0&&b(e=>{let t=new Set(e);for(let e of s)t.add(e);return t}),U(r)},[null==n?void 0:n.id,y,m,U]);let B=(0,o.useCallback)(e=>{aa(e.id)},[]),W=(0,o.useCallback)(async(t,r)=>{if((t.stopPropagation(),null==n?void 0:n.path)&&await (0,E.fN)(e("chat.sessions.deleteTreeConfirm")))try{p(e=>e.filter(e=>e.id!==r)),ao(r),aN(r),a===r&&(i(),(null==n?void 0:n.id)&&localStorage.removeItem(aB(n.id))),await u.FH.sessionLogs.delete(r,n.path),aT()}catch(e){console.error("[Sessions] Delete failed:",e),aT()}},[null==n?void 0:n.path,null==n?void 0:n.id,a,i,e]),K=(0,o.useCallback)((e,t)=>{e.stopPropagation(),P.current=t.id,_.current=t.title||"",C(t.id),I(t.title||"")},[]),G=(0,o.useCallback)(()=>{P.current=null,C(null),I(""),M.current&&D({showSpinner:!1})},[D]),q=(0,o.useCallback)(async e=>{if(P.current!==e)return;let t=A.trim();if(!t||t===_.current||!(null==n?void 0:n.path))return void G();P.current=null,C(null),p(r=>(function e(t,r,n){return t.map(t=>t.id===r?{...t,title:n}:{...t,children:e(t.children,r,n)})})(r,e,t));try{await u.FH.sessionLogs.rename(e,t,n.path),aT()}catch(e){console.error("[Sessions] Rename failed:",e),aT()}},[A,null==n?void 0:n.path,G]),$=m.length,Y=a_(L,m.length);return(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 shrink-0 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(aF.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Sessions"}),$>0&&(0,l.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:["(",$,null!==h?"+":"",")"]}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:()=>D(),disabled:y,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",title:"Refresh sessions",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",y&&"animate-spin")})}),t&&(0,l.jsx)("span",{className:"rounded bg-blue-900/50 px-1.5 py-0.5 text-[9px] text-blue-400 animate-pulse",children:"running"})]}),(0,l.jsx)("div",{className:"flex-1 overflow-y-auto",children:y?(0,l.jsxs)("div",{className:"flex items-center justify-center py-8 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsx)(R.A,{className:"h-3.5 w-3.5 animate-spin mr-1.5"})," Loading..."]}):0===m.length?(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center gap-2 p-6 text-center",children:[(0,l.jsx)(aL.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"No session history yet"}),(0,l.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)]",children:"Start a conversation in the Chat panel"})]}):(0,l.jsxs)(l.Fragment,{children:[m.map(t=>{let n=t.children,s=v.has(t.id),o=t.id===r,i=a===t.id,c=!!t.archivedAt,d=n.length>0,u=az(n);return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{onClick:()=>U(t),onDoubleClick:()=>B(t),title:"Click to preview, double-click to load into chat",className:(0,E.cn)("group flex w-full items-center gap-1.5 px-3 py-2 text-left border-b border-[var(--border)]/30 transition-colors",i?"bg-[var(--secondary)]":"hover:bg-[var(--secondary)]/50",c&&"opacity-50"),children:[d?(0,l.jsx)("span",{onClick:e=>{e.stopPropagation(),O(t.id)},className:"shrink-0 flex items-center justify-center w-5 h-5 -ml-1 cursor-pointer rounded hover:bg-[var(--muted)]/50",children:(0,l.jsx)(F.A,{className:(0,E.cn)("h-3 w-3 text-[var(--muted-foreground)] transition-transform",s&&"rotate-90")})}):(0,l.jsx)("span",{className:"w-5 shrink-0 -ml-1"}),(0,l.jsx)(aF.A,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",o?"text-blue-400":"text-[var(--muted-foreground)]")}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5",children:[S===t.id?(0,l.jsx)(aO,{value:A,onChange:I,onCommit:()=>void q(t.id),onCancel:G,textSize:"text-[11px]"}):(0,l.jsx)("p",{className:"truncate text-[11px] font-medium text-[var(--foreground)]",children:t.title||"Untitled"}),o&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-blue-900/50 px-1 py-0.5 text-[8px] text-blue-400",children:"active"}),c&&(0,l.jsx)("span",{title:"Archived",children:(0,l.jsx)(aM.A,{className:"h-2.5 w-2.5 shrink-0 text-amber-500"})}),d&&(0,l.jsxs)("span",{className:"text-[9px] text-[var(--muted-foreground)]",children:["+",u]})]}),(0,l.jsxs)("p",{className:"text-[9px] text-[var(--muted-foreground)]",children:[t.exchangeCount," msgs \xb7 ",(0,E.fw)(t.updatedAt,e)]})]}),S!==t.id&&(0,l.jsx)("button",{onClick:e=>K(e,t),title:"Rename",className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 hover:text-blue-400 transition-opacity",children:(0,l.jsx)(eX.A,{className:"h-3 w-3"})}),(0,l.jsx)("button",{onClick:e=>W(e,t.id),className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 hover:text-red-400 transition-opacity",children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]}),s&&d&&(0,l.jsx)(aU,{nodes:n,depth:1,expanded:v,selectedSessionId:a,onToggle:O,onSelect:U,editingId:S,editingTitle:A,setEditingTitle:I,onStartRename:K,onCommitRename:q,onCancelRename:G})]},t.id)}),null!==h&&(0,l.jsx)("div",{ref:Y,className:"flex items-center justify-center py-2 text-[10px] text-[var(--muted-foreground)]",children:j?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin mr-1"})," Loading more…"]}):(0,l.jsx)("span",{className:"opacity-50",children:"scroll for more"})})]})})]})}let aG=/<<<CAPTURE(?::(screen|camera))?>>>/g,aq="web:screen",a$=e=>new Promise(t=>setTimeout(t,e));function aY(e){if(e)for(let t of e.getTracks())t.stop()}function aJ(e){return!!e&&e.getVideoTracks().some(e=>"live"===e.readyState)}function aZ(e){let t=document.createElement("video");return t.muted=!0,t.playsInline=!0,t.setAttribute("aria-hidden","true"),t.style.cssText="position:fixed;left:-10000px;top:0;width:160px;height:90px;opacity:0;pointer-events:none",t.srcObject=e,document.body.appendChild(t),t.play().catch(()=>{}),t}function aV(e,t){aY(e),t&&(t.srcObject=null,t.remove())}async function aX(e){e.paused&&await e.play().catch(()=>{}),e.videoWidth||await new Promise(t=>{e.addEventListener("loadedmetadata",()=>t(),{once:!0}),setTimeout(t,1e3)})}function aQ(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1920,r=e.videoWidth,n=e.videoHeight;if(!r||!n)return null;let a=Math.min(1,t/r),s=document.createElement("canvas");s.width=Math.max(1,Math.round(r*a)),s.height=Math.max(1,Math.round(n*a));let l=s.getContext("2d");return l?(l.drawImage(e,0,0,s.width,s.height),s):null}function a0(e,t){let r=e.getContext("2d").getImageData(0,0,e.width,e.height).data;if(r.length<4)return!0;let n=4*Math.max(1,Math.floor(r.length/4/1e3)),a=0,s=0;for(let e=0;e+2<r.length;e+=n)a++,r[e]<=t&&r[e+1]<=t&&r[e+2]<=t&&s++;return a>0&&s/a>.99}function a1(e){return e.toDataURL("image/jpeg",.85).split(",")[1]||null}function a3(e){return(null==e?void 0:e.id)===aq}let a2=null;function a5(){a2&&(aV(a2.stream,a2.video),a2=null)}let a4={web:!0,start:async()=>{var e;let t;try{t=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1})}catch(e){return null}let r=t.getVideoTracks()[0];if(!r)return aY(t),null;a5();let n={stream:t,video:aZ(t)};return a2=n,r.addEventListener("ended",()=>{if(a2!==n)return;a5();let e=nJ.getState();a3(e.screenSource)&&e.setScreenSource(null)}),"window"===(e=r.getSettings().displaySurface)?"capture.webSurfaceWindow":"browser"===e?"capture.webSurfaceTab":"capture.webSurfaceScreen"},grab:async()=>{for(let e=0;e<3;e++){e>0&&await a$(300);let t=a2;if(!t||!aJ(t.stream))break;await aX(t.video);let r=aQ(t.video);if(r&&!a0(r,8))return a1(r)}return null}};async function a8(){let e,t=window.CaptureController,r=t?new t:void 0;try{e=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1,...r?{controller:r}:{}})}catch(e){return null}try{null==r||r.setFocusBehavior("no-focus-change")}catch(e){}let n=aZ(e),a=null;try{for(let e=0;e<4;e++){var s;if(e>0&&await a$(300),await aX(n),(a=null!=(s=aQ(n,1/0))?s:a)&&!a0(a,8))break}}finally{aV(e,n)}if(!a)return null;let l=await new Promise(e=>a.toBlob(e,"image/png"));return l?URL.createObjectURL(l):null}let a6=null;function a9(e){var t;if(e.opening)return e.opening;aV(e.stream,e.video),e.stream=null,e.video=null;let r=navigator.mediaDevices.getUserMedia({video:(t=e.deviceId)?{deviceId:{exact:t},width:{ideal:1280},height:{ideal:720}}:{width:{ideal:1280},height:{ideal:720}},audio:!1}).then(t=>a6!==e?(aY(t),!1):(e.stream=t,e.video=aZ(t),e.openedAt=Date.now(),!0),()=>!1).finally(()=>{e.opening=null});return e.opening=r,r}let a7={web:!0,has:async()=>{try{return(await navigator.mediaDevices.enumerateDevices()).some(e=>"videoinput"===e.kind)}catch(e){return!1}},list:async()=>{try{return(await navigator.mediaDevices.enumerateDevices()).filter(e=>"videoinput"===e.kind).map((e,t)=>({deviceId:e.deviceId,label:e.label||"Camera ".concat(t+1)}))}catch(e){return[]}},requestPermission:async()=>{try{return aY(await navigator.mediaDevices.getUserMedia({video:!0})),!0}catch(e){return!1}},snap:async e=>{var t;let r=a6;if(!r||r.deviceId!==(null!=e?e:"")||!aJ(r.stream)&&!await (t=a9(r),Promise.race([t,a$(5e3).then(()=>!1)])))return null;let n=r.video;if(a6!==r||!n)return null;try{await aX(n);let e=r.openedAt+500-Date.now();e>0&&await a$(e);let t=aQ(n);return(!t||a0(t,10))&&(await a$(500),t=aQ(n)),t?a1(t):null}catch(e){return null}}};function se(){var e;let t=window.haloCapture;return t||("function"==typeof(null==(e=navigator.mediaDevices)?void 0:e.getDisplayMedia)?a4:void 0)}function st(){var e;let t=window.haloCamera;return t||("function"==typeof(null==(e=navigator.mediaDevices)?void 0:e.getUserMedia)?a7:void 0)}let sr=new Set(["PageUp","ArrowUp","Home"]),sn=e=>e.scrollHeight-e.scrollTop-e.clientHeight;function sa(e,t){let r=(0,o.useRef)(null);return(0,o.useLayoutEffect)(()=>{let n=e.current;if(!n)return;let a=function(e,t){let r=e.scrollTop,n=null,a=!1,s=r=>{e.scrollTop>0&&!function(e,t){for(let r=e instanceof Element?e:null;r&&r!==t;r=r.parentElement)if(r.scrollTop>0&&r.scrollHeight>r.clientHeight){let e=getComputedStyle(r).overflowY;if("auto"===e||"scroll"===e)return!0}return!1}(r,e)&&(t.current=!0)},l=()=>{1>=sn(e)&&(t.current=!1)},o=e=>{!e.ctrlKey&&(e.deltaY<0?s(e.target):e.deltaY>0&&l())},i=e=>{var t,r;n=null!=(r=null==(t=e.touches[0])?void 0:t.clientY)?r:null},c=e=>{var t;let r=null==(t=e.touches[0])?void 0:t.clientY;void 0!==r&&(null!==n&&r>n?s(e.target):null!==n&&r<n&&l(),n=r)},d=e=>{(sr.has(e.key)||" "===e.key&&e.shiftKey)&&s(e.target)},u=()=>{a=!1,80>=sn(e)&&(t.current=!1)},m=r=>{r.target!==e||r.offsetX<e.clientWidth||(a=!0,t.current=!0,window.addEventListener("pointerup",u,{once:!0}))},p=()=>{let n=e.scrollTop;n>r?sn(e)>80?t.current=!0:a||(t.current=!1):n<r&&sn(e)>1&&(t.current=!0),r=n},h={passive:!0};return e.addEventListener("wheel",o,h),e.addEventListener("touchstart",i,h),e.addEventListener("touchmove",c,h),e.addEventListener("keydown",d),e.addEventListener("pointerdown",m),e.addEventListener("scroll",p,h),{pin(){e.clientHeight>0&&e.scrollHeight<=e.clientHeight&&(t.current=!1),t.current||(e.scrollTop=e.scrollHeight,r=e.scrollTop)},destroy(){e.removeEventListener("wheel",o),e.removeEventListener("touchstart",i),e.removeEventListener("touchmove",c),e.removeEventListener("keydown",d),e.removeEventListener("pointerdown",m),e.removeEventListener("scroll",p),window.removeEventListener("pointerup",u)}}}(n,t);return r.current=a,()=>{a.destroy(),r.current=null}},[e,t]),(0,o.useCallback)(()=>{var e;return null==(e=r.current)?void 0:e.pin()},[])}var ss=r(32031),sl=r(75037);function so(e){var t;let r=null==(t=rU.getState().activeProject)?void 0:t.id;if(!r)return null;let n=nJ.getState();if(n.sessionId&&n.messages.some(t=>t.id===e))return n.sessionId.includes(">")?null:{sessionId:n.sessionId,projectId:r,archiveCount:si(nV.getState(),n.sessionId)};let a=aR.getState().selectedSessionId;return a&&!a.includes(">")?{sessionId:a,projectId:r,archiveCount:si(af.getState(),a)}:null}function si(e,t){return e.sessionId===t?e.anchor:0}function sc(e){let{messages:t,debugMode:r,readOnly:n,userOrdinalBase:a}=e;return(0,l.jsx)(sd,{messages:t,debugMode:r,readOnly:n,userOrdinalBase:a})}function sd(e){let{messages:t,debugMode:r,readOnly:n,userOrdinalBase:a}=e,s=(0,o.useMemo)(()=>(function(e){var t,r;let n=[],a=null,s=new Map;if(e.some(e=>"usage"===nu(e))){for(let r of e)if("assistant"===nu(r))for(let e of null!=(t=r.contentBlocks)?t:[])e.turnId&&s.set(e.turnId,r)}let l=new Map,o=[];for(let t of e)"context"!==nu(t)&&("user"===t.role?(a&&n.push(a),a={user:t,responses:[]}):a?t.turnId&&s.has(t.turnId)&&"usage"===nu(t)?o.push([t,a]):(a.responses.push(t),s.size>0&&l.set(t,a)):n.push({user:t,responses:[]}));for(let[e,t]of(a&&n.push(a),o))(null!=(r=l.get(s.get(e.turnId)))?r:t).responses.push(e);return n})(t),[t]),i=(0,o.useMemo)(()=>{if(n)return!1;let e=t.find(e=>"user"===e.role);return!!e&&null!==so(e.id)},[t,n]),c=null!=a?a:0;return(0,l.jsx)("div",{className:"flex flex-col",children:s.map(e=>{let t="user"===e.user.role?c++:-1;return(0,l.jsx)(su,{user:e.user,responses:e.responses,debugMode:r,userOrdinal:t,deletable:i},e.user.id)})})}let su=(0,o.memo)(function(e){let{user:t,responses:r,debugMode:n,userOrdinal:a,deletable:s}=e,o=!!t.deleted;return(0,l.jsxs)("div",{className:(0,E.cn)("border-b border-[var(--border)]/50 last:border-b-0",o&&"opacity-50"),children:["user"===t.role?sh(t.content)?(0,l.jsx)(sf,{content:t.content,userOrdinal:a,deleted:o,messageId:t.id,deletable:s}):sx(t.content)?(0,l.jsx)(sg,{content:t.content,userOrdinal:a,deleted:o,messageId:t.id,deletable:s}):(0,l.jsx)(sk,{content:t.content,localImages:t.localImages,timestamp:t.timestamp,userOrdinal:a,deleted:o,messageId:t.id,deletable:s,sendFailed:t.sendFailed}):(0,l.jsx)("div",{className:"px-3 py-2",children:(0,l.jsx)(sy,{message:t,debugMode:n})}),r.length>0&&(0,l.jsx)(sv,{responses:r,debugMode:n})]})},(e,t)=>e.user===t.user&&e.debugMode===t.debugMode&&e.userOrdinal===t.userOrdinal&&e.deletable===t.deletable&&e.responses.length===t.responses.length&&e.responses.every((e,r)=>e===t.responses[r]));function sm(e){let{copyText:t,userOrdinal:r,deleted:n,messageId:a,deletable:s}=e,i=(0,T.kj)(),[c,d]=(0,o.useState)(!1),u=s&&!n&&r>=0,m=async()=>{let e=so(a);e&&await (0,E.fN)(i("chat.exchange.deleteConfirm"))&&p.send({type:"exchange:delete",sessionId:e.sessionId,projectId:e.projectId,userOrdinal:r,archiveCount:e.archiveCount})};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(t).then(()=>{d(!0),setTimeout(()=>d(!1),2e3)}).catch(()=>{})},title:"Copy message",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--background)]/40",children:c?(0,l.jsx)(rP.A,{className:"h-3 w-3 text-emerald-400"}):(0,l.jsx)(ss.A,{className:"h-3 w-3"})}),u&&(0,l.jsx)("button",{onClick:m,title:"Delete message",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-red-900/30 hover:text-red-400",children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]})}let sp="rounded bg-red-900/30 px-1 py-px text-[9px] font-medium text-red-400";function sh(e){let t=e.match(/^\(from: session ([^)]+)\)\n([\s\S]*)$/);return t?{sessionId:t[1],body:t[2]}:null}function sf(e){var t;let{content:r,...n}=e,a=sh(r),s=null!=(t=a.sessionId.split(">").pop())?t:a.sessionId,{contentRef:i,clamped:c,expanded:d,toggle:u,contentStyle:m}=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20*e,r=(0,o.useRef)(null),[n,a]=(0,o.useState)(!1),[s,l]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{let t=r.current;if(!t)return;let n=20*e+4,s=new ResizeObserver(()=>{let e=t.scrollHeight>n;a(t=>t===e?t:e)});return s.observe(t),()=>s.disconnect()},[e]),{contentRef:r,clamped:n,expanded:s,toggle:()=>l(e=>!e),contentStyle:n?s?{maxHeight:"40vh",overflowY:"auto"}:{maxHeight:"".concat(t,"px"),overflow:"hidden"}:void 0}}(4);return(0,l.jsxs)("div",{className:"sticky top-0 z-10 px-3 py-2 border-b border-[var(--border)] border-l-2 border-l-emerald-500/70 bg-emerald-950/40 backdrop-blur-sm shadow-sm",children:[(0,l.jsx)("div",{className:"absolute top-1.5 right-1.5 z-20 flex items-center gap-0.5",children:(0,l.jsx)(sm,{copyText:a.body,...n})}),(0,l.jsxs)("button",{onClick:u,disabled:!c,className:"mb-1 flex w-full items-center gap-2 pr-16 text-left text-[10px] font-medium text-emerald-400 enabled:hover:text-emerald-300",children:[c&&(d?(0,l.jsx)(M.A,{className:"h-3 w-3"}):(0,l.jsx)(F.A,{className:"h-3 w-3"})),(0,l.jsx)("span",{children:"Report from sub-session"}),(0,l.jsx)("span",{className:"rounded bg-emerald-900/40 px-1 py-0.5 font-mono text-emerald-300/80",children:s}),n.deleted&&(0,l.jsx)("span",{className:sp,children:"deleted"})]}),(0,l.jsx)("div",{ref:i,style:m,children:(0,l.jsx)("div",{className:"text-xs text-[var(--foreground)] whitespace-pre-wrap leading-relaxed",children:a.body})})]})}function sx(e){let t=e.match(/^\[Conversation Summary — (\d+) messages compacted\]\n([\s\S]*)$/);return t?{olderCount:parseInt(t[1],10),body:t[2]}:null}function sg(e){let{content:t,...r}=e,n=sx(t),[a,s]=(0,o.useState)(!1);return(0,l.jsxs)("div",{className:"sticky top-0 z-10 border-l-2 border-l-purple-500/70 bg-purple-950/40 backdrop-blur-sm shadow-sm",children:[(0,l.jsx)("div",{className:"absolute top-1.5 right-1.5 z-20 flex items-center gap-0.5",children:(0,l.jsx)(sm,{copyText:n.body,...r})}),(0,l.jsxs)("button",{onClick:()=>s(!a),className:"flex w-full items-center gap-2 px-3 py-2 pr-14 text-[10px] font-medium text-purple-400 hover:bg-purple-900/30 transition-colors",children:[a?(0,l.jsx)(M.A,{className:"h-3 w-3"}):(0,l.jsx)(F.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{children:"Conversation summary sent to LLM"}),(0,l.jsxs)("span",{className:"rounded bg-purple-900/40 px-1 py-0.5 font-mono text-purple-300/80",children:[n.olderCount," messages compacted"]}),r.deleted&&(0,l.jsx)("span",{className:sp,children:"deleted"})]}),a&&(0,l.jsx)("div",{className:"px-3 pb-2 text-xs text-[var(--foreground)] whitespace-pre-wrap leading-relaxed max-h-[40vh] overflow-y-auto",children:n.body})]})}function sv(e){let{responses:t,debugMode:r}=e,n=(0,o.useMemo)(()=>{var e,n;let a=new Map;if(!r)return a;let s=t.filter(e=>"usage"===nu(e)&&e.usage);if(0===s.length)return a;let l=new Map;for(let e of t)if("assistant"===nu(e)&&e.contentBlocks)for(let t of e.contentBlocks)t.turnId&&l.set(t.turnId,e.id);let o=[];for(let t of s){let r=t.turnId?l.get(t.turnId):void 0;if(r){let n=null!=(e=a.get(r))?e:[];n.push(t),a.set(r,n)}else o.push(t)}if(o.length>0){let e=[...t].reverse().find(e=>"assistant"===nu(e));if(e){let t=null!=(n=a.get(e.id))?n:[];t.push(...o),a.set(e.id,t)}}return a},[r,t]);return(0,l.jsx)("div",{className:"px-3 py-2",children:t.map(e=>(0,l.jsx)(sy,{message:e,debugMode:r,usages:n.get(e.id)},e.id))})}function sb(e){var t,r,n,a,s,o,i,c;let{message:d}=e,u=d.usage;if(!u)return null;let m=null!=(r=null==(t=d.modelId)?void 0:t.replace(/^global\.anthropic\./,""))?r:"",p=u.inputTokens+(null!=(n=u.cacheReadInputTokens)?n:0)+(null!=(a=u.cacheWriteInputTokens)?a:0),h=p+u.outputTokens,f=p>0?Math.round(u.cacheReadInputTokens/p*100):0,x=e=>e>=1e3?"".concat((e/1e3).toFixed(1),"s"):"".concat(e,"ms"),g=new Date(d.timestamp),v=e=>e.toString().padStart(2,"0"),b="".concat(v(g.getMonth()+1),"-").concat(v(g.getDate())," ").concat(v(g.getHours()),":").concat(v(g.getMinutes()),":").concat(v(g.getSeconds()));return(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-1 py-0.5 text-[10px] font-mono text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px opacity-70",title:g.toLocaleString(),children:b}),(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px",children:[(0,l.jsx)("span",{className:"opacity-60",children:"in"}),(u.inputTokens/1e3).toFixed(1),"K"]}),(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px",children:[(0,l.jsx)("span",{className:"opacity-60",children:"out"}),(u.outputTokens/1e3).toFixed(1),"K"]}),(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px",children:[(0,l.jsx)("span",{className:"opacity-60",children:"ctx"}),(h/1e3).toFixed(1),"K"]}),(null!=(s=u.cacheReadInputTokens)?s:0)>0&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-emerald-900/30 px-1 py-px text-emerald-400",children:[(0,l.jsx)("span",{className:"opacity-60",children:"read"}),((null!=(o=u.cacheReadInputTokens)?o:0)/1e3).toFixed(1),"K"]}),(null!=(i=u.cacheWriteInputTokens)?i:0)>0&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-amber-900/30 px-1 py-px text-amber-400",children:[(0,l.jsx)("span",{className:"opacity-60",children:"write"}),((null!=(c=u.cacheWriteInputTokens)?c:0)/1e3).toFixed(1),"K"]}),f>0&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-emerald-900/30 px-1 py-px text-emerald-400",children:[(0,l.jsx)("span",{className:"opacity-60",children:"cache"}),f,"%"]}),null!=u.ttftMs&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px",children:[(0,l.jsx)("span",{className:"opacity-60",children:"ttft"}),x(u.ttftMs)]}),null!=u.e2eMs&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px",children:[(0,l.jsx)("span",{className:"opacity-60",children:"e2e"}),x(u.e2eMs)]}),u.thinkingEffort&&"off"!==u.thinkingEffort&&(0,l.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-purple-900/30 px-1 py-px text-purple-400",children:[(0,l.jsx)("span",{className:"opacity-60",children:"think"}),u.thinkingEffort]}),"off"===u.thinkingEffort&&(0,l.jsx)("span",{className:"inline-flex items-center gap-0.5 rounded bg-[var(--secondary)] px-1 py-px opacity-50",children:"think off"}),m&&(0,l.jsx)("span",{className:"inline-flex items-center gap-0.5 rounded bg-blue-900/30 px-1 py-px text-blue-400",children:m})]})}function sy(e){var t,r,n,a,s;let{message:i,debugMode:c,usages:d}=e,u=(0,T.kj)(),m=nu(i),p="assistant"===m,h=(0,o.useMemo)(()=>{if(!c||!p||!(null==d?void 0:d.length))return null;let e=new Map;for(let t of d)t.turnId&&e.set(t.turnId,t);return e.size>0?e:null},[c,p,d]);if("tool_call"===m||"tool_result"===m||"usage"===m||"context"===m)return null;if("agent_start"===m||"agent_done"===m)return c?(0,l.jsx)("div",{className:"my-0.5 px-1",children:(0,l.jsxs)("span",{className:(0,E.cn)("inline-block rounded px-1.5 py-0.5 text-[9px]","agent_start"===m?"bg-blue-900/40 text-blue-400":"bg-emerald-900/40 text-emerald-400"),children:[null!=(a=i.agentName)?a:"Agent",": ",i.content||("agent_start"===m?"started":"done")]})}):null;let f=p&&i.contentBlocks&&i.contentBlocks.length>0,x=f?i.contentBlocks.filter(e=>"tool_call"===e.type).length:0;if(i.interrupted&&!i.content&&!(null==(t=i.toolCalls)?void 0:t.length))return(0,l.jsxs)("div",{className:"flex items-center gap-1.5 py-1",children:[(0,l.jsx)(sl.A,{className:"h-3 w-3 text-amber-400"}),(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:u("chat.interrupted")})]});if(i.streaming&&!i.content&&!(null==(r=i.toolCalls)?void 0:r.length)&&!(null==(n=i.contentBlocks)?void 0:n.some(e=>"thinking"===e.type&&e.text.trim())))return(0,l.jsxs)("div",{className:"flex items-center gap-1.5 py-1",children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin text-[var(--primary)]"}),(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:"Thinking..."})]});let g=[];if(f){let e=i.contentBlocks,t=0;for(let r=0;r<e.length;r++){let n=e[r];if("thinking"===n.type&&n.text.trim()?g.push(i.streaming&&r===e.length-1?(0,l.jsx)(sj,{text:n.text},"b".concat(r)):(0,l.jsx)(sw,{text:n.text},"b".concat(r))):"text"===n.type&&n.text.trim()?g.push((0,l.jsx)(sI,{text:n.text,streaming:i.streaming},"b".concat(r))):"tool_call"===n.type&&(t++,g.push((0,l.jsx)(sF,{call:n.toolCall,isStreaming:i.streaming,isLast:t===x},"b".concat(r)))),h&&n.turnId){let t=null==(s=e[r+1])?void 0:s.turnId;if(!t||t!==n.turnId){let e=h.get(n.turnId);e&&g.push((0,l.jsx)(sb,{message:e},"u".concat(n.turnId)))}}}if(h){let t=new Set(e.map(e=>e.turnId).filter(Boolean));for(let[e,r]of h)t.has(e)||g.push((0,l.jsx)(sb,{message:r},"u".concat(e)))}}else{if(p&&i.toolCalls&&i.toolCalls.length>0&&i.toolCalls.forEach((e,t)=>{g.push((0,l.jsx)(sF,{call:e,isStreaming:i.streaming,isLast:t===i.toolCalls.length-1},"tc".concat(t)))}),h)for(let[e,t]of h)g.push((0,l.jsx)(sb,{message:t},"u".concat(e)));if(i.content){let e=!p&&/^Compacting context /.test(i.content);g.push(p?(0,l.jsx)(sI,{text:i.content,streaming:i.streaming},"txt"):e?(0,l.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin shrink-0"}),(0,l.jsx)("span",{className:"whitespace-pre-wrap",children:i.content})]},"txt"):(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)] whitespace-pre-wrap",children:i.content},"txt"))}}return 0===g.length?null:(0,l.jsx)("div",{className:"py-1",children:g})}function sw(e){let{text:t}=e,[r,n]=(0,o.useState)(!1);return(0,l.jsxs)("div",{className:"my-1 rounded border border-purple-900/50 bg-purple-950/20",children:[(0,l.jsxs)("button",{onClick:()=>n(!r),className:"flex w-full items-center gap-1.5 px-2 py-1 text-left text-[11px] text-purple-400 hover:bg-purple-900/20 transition-colors",children:[r?(0,l.jsx)(M.A,{className:"h-3 w-3"}):(0,l.jsx)(F.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{className:"font-medium",children:"Thinking"}),(0,l.jsxs)("span",{className:"text-[10px] text-purple-400/60",children:[t.length.toLocaleString()," chars"]})]}),r&&(0,l.jsx)("pre",{className:"px-2 pb-2 text-[11px] text-[var(--foreground)] whitespace-pre-wrap break-words leading-relaxed max-h-[50vh] overflow-y-auto",children:t})]})}function sj(e){let{text:t}=e,r=(0,o.useRef)(null),n=sa(r,(0,o.useRef)(!1));return(0,o.useLayoutEffect)(n,[t,n]),(0,l.jsxs)("div",{"data-thinking-live":"",className:"my-1 rounded border border-purple-900/50 bg-purple-950/20",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-1 text-[11px] text-purple-400",children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),(0,l.jsx)("span",{className:"font-medium",children:"Thinking..."}),(0,l.jsxs)("span",{className:"text-[10px] text-purple-400/60",children:[t.length.toLocaleString()," chars"]})]}),(0,l.jsx)("pre",{ref:r,className:"max-h-40 overflow-y-auto px-2 pb-2 text-[11px] leading-relaxed text-[var(--muted-foreground)] whitespace-pre-wrap break-words",children:t})]})}function sk(e){let{content:t,localImages:r,timestamp:n,userOrdinal:a,deleted:s,messageId:i,deletable:c,sendFailed:d}=e,u=(0,T.kj)(),{text:m,media:p}=(0,o.useMemo)(()=>nb(t),[t]),[h,f]=(0,o.useState)(null),[x,g]=(0,o.useState)(!1),[v,b]=(0,o.useState)(!1),y=(0,o.useRef)(null),w=m.trim().split("\n"),j=w.length>1,k=(j?"".concat(w[0].trim(),"…"):w[0].trim())||(p.length>0||(null==r?void 0:r.length)?"(attachment)":""),N=j||v;(0,o.useEffect)(()=>{let e=y.current;if(!e)return;let t=new ResizeObserver(()=>{let t=e.scrollWidth>e.clientWidth;b(e=>e===t?e:t)});return t.observe(e),()=>t.disconnect()},[k]);let S=new Date(n),C=e=>e.toString().padStart(2,"0"),A=s?"text-[var(--muted-foreground)] line-through":"text-[var(--accent-foreground)]";return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:(0,E.cn)("sticky top-0 z-10 bg-[var(--accent)] border-b border-[var(--border)] border-l-2 px-4 py-2.5 shadow-sm",s||d?"border-l-red-500/60":"border-l-blue-500"),children:[(0,l.jsxs)("div",{className:"absolute top-1.5 right-1.5 z-20 flex items-center gap-0.5",children:[s&&(0,l.jsx)("span",{className:(0,E.cn)("mr-1",sp),children:"deleted"}),d&&!s&&(0,l.jsxs)("span",{className:"mr-1 inline-flex items-center gap-0.5 rounded bg-red-900/30 px-1 py-px text-[9px] font-medium text-red-400",title:u("chat.sendFailed"),children:[(0,l.jsx)(sl.A,{className:"h-2.5 w-2.5"}),u("chat.sendFailedBadge")]}),(0,l.jsx)(sm,{copyText:m,userOrdinal:a,deleted:s,messageId:i,deletable:c})]}),(0,l.jsxs)("button",{onClick:()=>g(e=>!e),disabled:!N,className:(0,E.cn)("flex w-full min-w-0 items-center gap-1.5 text-left",s||d?"pr-32":"pr-14"),children:[(0,l.jsx)("span",{className:"flex w-3 shrink-0 justify-center text-[var(--muted-foreground)]",children:N?x?(0,l.jsx)(M.A,{className:"h-3 w-3"}):(0,l.jsx)(F.A,{className:"h-3 w-3"}):"\xb7"}),(0,l.jsxs)("span",{className:"shrink-0 text-[10px] font-mono text-[var(--muted-foreground)] opacity-70",title:S.toLocaleString(),children:[C(S.getHours()),":",C(S.getMinutes())]}),(0,l.jsx)("span",{ref:y,className:(0,E.cn)("min-w-0 truncate text-xs",A,x&&N&&"invisible"),children:k})]}),x&&N&&(0,l.jsx)("div",{className:"mt-1 max-h-[40vh] overflow-y-auto",children:(0,l.jsx)("div",{className:(0,E.cn)("text-xs leading-relaxed whitespace-pre-wrap",A),children:m})})]}),r&&r.length>0&&(0,l.jsx)("div",{className:"flex flex-wrap gap-2 px-4 py-2 border-b border-[var(--border)]/30",children:r.map((e,t)=>(0,l.jsx)(tn.p,{src:e,alt:"screenshot",onClick:()=>f(e),className:"max-h-40 max-w-[240px] cursor-pointer rounded border border-[var(--border)] object-contain hover:ring-1 hover:ring-[var(--primary)]/40",placeholderClassName:"aspect-video w-40"},t))}),p.length>0&&(0,l.jsx)("div",{className:"px-4 py-2 border-b border-[var(--border)]/30",children:(0,l.jsx)(ny,{media:p})}),h&&(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-6",onClick:()=>f(null),children:(0,l.jsx)(tn.p,{src:h,alt:"screenshot",className:"max-h-[90vh] max-w-[92vw] object-contain",placeholderClassName:"aspect-video w-[min(92vw,640px)]"})})]})}function sN(e){let{children:t}=e;return(0,l.jsx)("pre",{className:"overflow-x-auto",children:t})}function sS(e){let{node:t,children:r}=e,n=ta(t);return null===n?(0,l.jsx)(sN,{children:r}):(0,l.jsx)(tc,{source:n,fallback:(0,l.jsx)(sN,{children:r})})}function sC(e){return rY(e)?e:(0,e7.Lv)(e)}function sA(e){let{pathRef:t,href:r,className:n,children:a}=e,s=(0,T.kj)(),[i,c]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!i)return;let e=setTimeout(()=>c(null),2500);return()=>clearTimeout(e)},[i]);let d=e=>{e.preventDefault(),e.stopPropagation(),(rZ?rZ(t):Promise.resolve("missing")).then(e=>{"ok"!==e&&c(s("pathLink.".concat(e)))})},u=(0,E.cn)(n,"cursor-pointer underline-offset-2 hover:underline");return(0,l.jsxs)("span",{className:"relative",children:[void 0!==r?(0,l.jsx)("a",{href:r,onClick:d,className:u,children:a}):(0,l.jsx)("code",{onClick:d,className:u,children:a}),i&&(0,l.jsx)("span",{role:"status",className:"absolute bottom-full left-0 z-10 mb-1 whitespace-nowrap rounded border border-[var(--border)] bg-[var(--card)] px-2 py-0.5 text-[11px] font-normal text-[var(--muted-foreground)] shadow",children:i})]})}function sI(e){let{text:t,streaming:r}=e,{text:n,media:a}=(0,o.useMemo)(()=>nb(t),[t]),s=(0,o.useMemo)(()=>n.replace(aG,"").replace(/<<<SHOW:[\s\S]*?>>>/g,"").trim(),[n]);return(0,l.jsxs)("div",{className:"prose prose-sm prose-invert max-w-none prose-p:my-1.5 prose-headings:my-2 prose-ul:my-1.5 prose-ol:my-1.5 prose-li:my-0.5 prose-pre:my-2 prose-code:text-amber-300 prose-code:before:content-none prose-code:after:content-none prose-pre:bg-[var(--secondary)] prose-pre:border prose-pre:border-[var(--border)] prose-a:text-[var(--primary)] prose-code:bg-[var(--secondary)] prose-code:px-1 prose-code:py-0.5 prose-code:rounded prose-code:text-xs prose-th:border prose-th:border-[var(--border)] prose-th:px-2 prose-th:py-1 prose-th:bg-[var(--secondary)] prose-td:border prose-td:border-[var(--border)] prose-td:px-2 prose-td:py-1",children:[s&&(0,l.jsx)(e7.oz,{remarkPlugins:[te.A],urlTransform:sC,components:{a(e){let{href:t,children:r,node:n,...a}=e,s=function(e){if(!e)return null;let t=e;try{t=decodeURIComponent(e)}catch(e){}return rY(t)}(t);return s?(0,l.jsx)(sA,{pathRef:s,href:t,className:a.className,children:r}):(0,l.jsx)("a",{href:t,target:"_blank",rel:"noopener noreferrer",...a,children:r})},img(e){let{src:t,alt:r,node:n,...a}=e;return(0,l.jsx)(tn.p,{src:t,alt:null!=r?r:"",...a,placeholderClassName:"my-2 aspect-[4/3] w-full max-w-sm"})},pre:r?sN:sS,code(e){let{className:t,children:r,node:n,...a}=e;if((null==t?void 0:t.startsWith("language-"))||String(r).includes("\n"))return(0,l.jsx)(sD,{className:t,children:r});let s="string"==typeof r?rY(r):null;return s?(0,l.jsx)(sA,{pathRef:s,className:t,children:r}):(0,l.jsx)("code",{className:t,...a,children:r})}},children:s}),(0,l.jsx)(ny,{media:a})]})}function sE(e){try{let t=JSON.parse(e);return"object"==typeof t&&null!==t?t:null}catch(e){return null}}let sT={node_read:"file_read",node_write:"file_write",node_edit:"file_edit",node_list_dir:"file_list",node_grep:"grep",node_glob:"glob",node_run:"shell_exec"},s_="__TOOL_ERROR__",sP="__TOOL_WARN__",sM={running:"bg-amber-400 animate-pulse",success:"bg-emerald-400",warn:"bg-yellow-400",error:"bg-red-400"};function sF(e){let{call:t,isStreaming:r,isLast:n}=e,[a,s]=(0,o.useState)(!1),i=function(e,t,r){var n;if(!e.output&&""!==e.output)return"running";let a=null!=(n=e.output)?n:"";return a.startsWith(s_)?"error":a.startsWith(sP)?"warn":"success"}(t,r,0),c=void 0!==t.output&&""!==t.output,{summary:d}=(0,o.useMemo)(()=>(function e(t,r){let n=sE(r),a=sT[t];if(n&&a){let{node:t,...r}=n,s=e(a,JSON.stringify(r));return"string"==typeof t&&t?{...s,summary:"".concat(t,": ").concat(s.summary)}:s}if(n){var s,l,o,i,c,d,u,m,p,h,f,x,g,v,b,y,w,j,k,N,S,C,A;switch(t){case"shell_exec":return{summary:String(null!=(l=null!=(s=n.command)?s:n.cmd)?l:"")||r};case"file_read":return{summary:String(null!=(c=null!=(i=null!=(o=n.path)?o:n.file)?i:n.filePath)?c:"")||r};case"file_write":{let e=String(null!=(m=null!=(u=null!=(d=n.path)?d:n.file)?u:n.filePath)?m:""),t=String(null!=(p=n.content)?p:"");return{summary:e,detail:t?"".concat(t.length," chars"):void 0}}case"file_edit":return{summary:String(null!=(x=null!=(f=null!=(h=n.path)?h:n.file)?f:n.filePath)?x:"")};case"file_list":return{summary:String(null!=(b=null!=(v=null!=(g=n.path)?g:n.directory)?v:n.dir)?b:".")};case"grep":{let e=String(null!=(w=null!=(y=n.pattern)?y:n.query)?w:""),t=n.path?" in ".concat(n.path):"",r=n.include?" (".concat(n.include,")"):"";return{summary:'"'.concat(e,'"').concat(t).concat(r)}}case"glob":{let e=String(null!=(k=null!=(j=n.pattern)?j:n.glob)?k:""),t=n.path?" in ".concat(n.path):"";return{summary:"".concat(e).concat(t)}}case"web_fetch":return{summary:String(null!=(N=n.url)?N:"")};case"delegate_task":{let e=String(null!=(S=n.agent_id)?S:""),t=String(null!=(A=null!=(C=n.task)?C:n.input)?A:""),r=t.length>100?t.slice(0,100)+"...":t;return{summary:e?"→ ".concat(e,": ").concat(r):r}}}}return{summary:r}})(t.name,t.input),[t.name,t.input]),u=(0,o.useMemo)(()=>{var e;return c?function(e,t){let r=sE(t);if(r){let e=r.toolResult;if(null==e?void 0:e.content){let t=e.content;if(Array.isArray(t)&&t.length>0&&t[0].text)return t[0].text}if("string"==typeof r.text)return r.text;if("string"==typeof r.result)return r.result;if("string"==typeof r.output)return r.output}return t}(t.name,(e=t.output).startsWith(s_+"\n")?e.slice(s_.length+1):e.startsWith(sP+"\n")?e.slice(sP.length+1):e):""},[t.name,t.output,c]),m=u.length>120?u.slice(0,120)+"...":u;return(0,l.jsxs)("div",{className:"my-0.5 text-[12px] font-mono",children:[(0,l.jsxs)("button",{onClick:()=>s(!a),className:"flex w-full items-center gap-1.5 rounded px-1 py-0.5 hover:bg-[var(--secondary)]/60 transition-colors text-left group",children:[(0,l.jsx)("span",{className:(0,E.cn)("h-2 w-2 shrink-0 rounded-full",sM[i])}),a?(0,l.jsx)(M.A,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}):(0,l.jsx)(F.A,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"shrink-0 font-semibold text-[var(--foreground)]",children:t.name}),(0,l.jsx)("span",{className:"truncate text-[var(--muted-foreground)]",children:d})]}),a&&(0,l.jsxs)("div",{className:"ml-[22px] mt-0.5 mb-1 rounded border border-[var(--border)] bg-[var(--card)] overflow-hidden",children:[(0,l.jsxs)("div",{className:"border-b border-[var(--border)] px-2.5 py-1.5",children:[(0,l.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-[var(--muted-foreground)] opacity-60 mb-0.5",children:"IN"}),(0,l.jsx)("pre",{className:"text-[11px] text-[var(--foreground)] whitespace-pre-wrap break-all leading-relaxed",children:d})]}),c&&(0,l.jsxs)("div",{className:"px-2.5 py-1.5",children:[(0,l.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-[var(--muted-foreground)] opacity-60 mb-0.5",children:"OUT"}),(0,l.jsx)("pre",{className:(0,E.cn)("text-[11px] whitespace-pre-wrap break-all leading-relaxed max-h-[200px] overflow-y-auto","error"===i?"text-red-400":"warn"===i?"text-yellow-300":"text-[var(--foreground)]"),children:u})]}),"running"===i&&(0,l.jsxs)("div",{className:"px-2.5 py-1.5 flex items-center gap-1.5",children:[(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin text-amber-400"}),(0,l.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:"Running..."})]})]}),!a&&c&&m&&(0,l.jsx)("div",{className:"ml-[22px] text-[11px] text-[var(--muted-foreground)] truncate",children:m})]})}function sD(e){let{children:t,className:r}=e,[n,a]=(0,o.useState)(!1),s=String(t).replace(/\n$/,""),i=(null==r?void 0:r.replace("language-",""))||"";return(0,l.jsxs)("div",{className:"relative group",children:[i&&(0,l.jsx)("span",{className:"block mb-1 text-[9px] leading-none text-[var(--muted-foreground)] opacity-60",children:i}),(0,l.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(s).then(()=>{a(!0),setTimeout(()=>a(!1),2e3)})},className:"absolute top-1 right-1 rounded p-1 text-[var(--muted-foreground)] opacity-0 group-hover:opacity-100 hover:bg-[var(--accent)] transition-opacity",children:n?(0,l.jsx)(rP.A,{className:"h-3 w-3 text-emerald-400"}):(0,l.jsx)(ss.A,{className:"h-3 w-3"})}),(0,l.jsx)("code",{className:r,children:t})]})}var sL=r(8985),sR=r(98285),sH=r(16936),sz=r(30906),sO=r(73082),sU=r(78153),sB=r(57482),sW=r(48253),sK=r(37784);let sG=aA(),sq=sG.useBus,s$=sG.bump,sY=[{name:"/session",description:"Manage sessions (new/list/switch/stop/interrupt/compact/context)",type:"server",argHint:"<verb>"},{name:"/clear",description:"Clear chat (alias for /session new)",type:"client"},{name:"/help",description:"Show available commands",type:"client"}],sJ=[];async function sZ(e,t,r){try{sJ=(await u.FH.commands.list(e,t,r)).commands.map(e=>({name:e.slashName,description:e.description,type:e.type,argHint:e.argHint,source:e.source,skillId:e.skillId,verbs:e.verbs}))}catch(e){sJ=[]}}function sV(){let e=sJ.length>0?sJ:sY;return ap.getState().enabled?e:e.filter(e=>"/goal"!==e.name)}function sX(e){let{commands:t,selectedIndex:r,onSelect:n}=e,a=(0,o.useRef)(null);return((0,o.useEffect)(()=>{var e;let t=null==(e=a.current)?void 0:e.children[r];null==t||t.scrollIntoView({block:"nearest"})},[r]),0===t.length)?null:(0,l.jsx)("div",{ref:a,className:"absolute bottom-full left-3 right-3 mb-1 max-h-48 overflow-y-auto rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-lg z-20",children:t.map((e,t)=>(0,l.jsxs)("button",{onMouseDown:t=>{t.preventDefault(),n(e)},className:"flex w-full items-center gap-3 px-3 py-2 text-left text-sm transition-colors ".concat(t===r?"bg-[var(--accent)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)("span",{className:"font-mono font-medium text-[var(--primary)]",children:e.name}),e.argHint&&(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:e.argHint}),(0,l.jsx)("span",{className:"flex-1 truncate text-xs",children:e.description})]},e.name))})}function sQ(e){let{matches:t,selectedIndex:r,onSelect:n,dirs:a=!1}=e,s=(0,o.useRef)(null);return((0,o.useEffect)(()=>{var e;let t=null==(e=s.current)?void 0:e.children[r];null==t||t.scrollIntoView({block:"nearest"})},[r]),0===t.length)?null:(0,l.jsx)("div",{ref:s,className:"absolute bottom-full left-3 right-3 mb-1 max-h-48 overflow-y-auto rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-lg z-20",children:t.map((e,t)=>{var s;let o=ea(e),i=a?_.A:o.Icon,c=a?"text-amber-500":o.color,d=null!=(s=e.split("/").pop())?s:e,u=e.includes("/")?e.slice(0,e.lastIndexOf("/")):"";return(0,l.jsxs)("button",{onMouseDown:t=>{t.preventDefault(),n(e)},className:(0,E.cn)("flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm transition-colors",t===r?"bg-[var(--accent)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)(i,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",c)}),(0,l.jsx)("span",{className:"truncate font-medium",children:d}),u&&(0,l.jsx)("span",{className:"ml-auto truncate text-xs text-[var(--muted-foreground)] opacity-60",children:u})]},e)})})}let s0=(e,t,r)=>Math.min(r,Math.max(t,e));function s1(e){let{src:t,onConfirm:r,onCancel:n}=e,a=(0,T.kj)(),s=(0,o.useRef)(null),c=(0,o.useRef)(null),[d,u]=(0,o.useState)(null),[m,p]=(0,o.useState)(null),[h,f]=(0,o.useState)(null),x=(0,o.useRef)(null),g=(0,o.useRef)(!1);(0,o.useLayoutEffect)(()=>{let e=s.current;if(!e)return;let t=new ResizeObserver(()=>{p({w:e.clientWidth,h:e.clientHeight}),f(null)});return t.observe(e),()=>t.disconnect()},[]);let v=d&&m?function(e,t,r,n){let a=Math.min(r/e,n/t),s=e*a,l=t*a;return{x:(r-s)/2,y:(n-l)/2,w:s,h:l}}(d.w,d.h,m.w,m.h):null,b=(0,o.useCallback)(async()=>{var e;let t=c.current;if(g.current||!t||!d)return;g.current=!0;let a=function(e,t,r,n){let a={x:0,y:0,w:r,h:n};if(!e||e.w<8||e.h<8||t.w<=0||t.h<=0)return a;let s=r/t.w,l=n/t.h,o=s0(Math.round((e.x-t.x)*s),0,r),i=s0(Math.round((e.y-t.y)*l),0,n),c=s0(Math.round((e.x+e.w-t.x)*s),0,r),d=s0(Math.round((e.y+e.h-t.y)*l),0,n);return c-o<1||d-i<1?a:{x:o,y:i,w:c-o,h:d-i}}(h,null!=v?v:{x:0,y:0,w:0,h:0},d.w,d.h),s=document.createElement("canvas");s.width=a.w,s.height=a.h,null==(e=s.getContext("2d"))||e.drawImage(t,a.x,a.y,a.w,a.h,0,0,a.w,a.h);let l=await new Promise(e=>s.toBlob(e,"image/png"));l?r(new File([l],function(e){let t=e=>String(e).padStart(2,"0");return"screenshot-".concat(e.getFullYear()).concat(t(e.getMonth()+1)).concat(t(e.getDate()),"-").concat(t(e.getHours())).concat(t(e.getMinutes())).concat(t(e.getSeconds()),".png")}(new Date),{type:"image/png"})):n()},[h,v,d,r,n]);(0,o.useEffect)(()=>{let e=e=>{("Escape"===e.key||"Enter"===e.key)&&(e.preventDefault(),e.stopImmediatePropagation(),"Escape"===e.key?n():b())};return window.addEventListener("keydown",e,!0),()=>window.removeEventListener("keydown",e,!0)},[b,n]);let y=e=>{let t=s.current.getBoundingClientRect();return{x:s0(e.clientX-t.left,v.x,v.x+v.w),y:s0(e.clientY-t.top,v.y,v.y+v.h)}};return(0,i.createPortal)((0,l.jsxs)("div",{role:"dialog","aria-label":a("capture.screenshotHint"),className:"fixed inset-0 z-[10000] flex select-none flex-col bg-black/90",children:[(0,l.jsxs)("div",{className:"flex h-12 shrink-0 items-center justify-center gap-3 text-xs text-white/80",children:[(0,l.jsx)("span",{children:a("capture.screenshotHint")}),(0,l.jsx)("button",{onClick:()=>void b(),title:a("capture.screenshotConfirm"),className:"flex h-7 w-7 items-center justify-center rounded-md bg-[var(--primary)] text-[var(--primary-foreground)] transition-opacity hover:opacity-90",children:(0,l.jsx)(rP.A,{className:"h-4 w-4"})}),(0,l.jsx)("button",{onClick:n,title:a("capture.screenshotCancel"),className:"flex h-7 w-7 items-center justify-center rounded-md bg-white/10 text-white transition-colors hover:bg-white/20",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsxs)("div",{ref:s,className:"relative mx-4 mb-4 min-h-0 flex-1 cursor-crosshair touch-none",onPointerDown:e=>{0===e.button&&v&&(e.currentTarget.setPointerCapture(e.pointerId),x.current={...y(e),moved:!1})},onPointerMove:e=>{let t=x.current;if(!t||!v)return;let r=y(e);!t.moved&&3>Math.hypot(r.x-t.x,r.y-t.y)||(t.moved=!0,f({x:Math.min(t.x,r.x),y:Math.min(t.y,r.y),w:Math.abs(r.x-t.x),h:Math.abs(r.y-t.y)}))},onPointerUp:()=>{x.current=null},onDoubleClick:e=>{if(!h||!v)return;let t=y(e);t.x>=h.x&&t.x<=h.x+h.w&&t.y>=h.y&&t.y<=h.y+h.h&&b()},children:[(0,l.jsx)("img",{ref:c,src:t,alt:"",draggable:!1,onLoad:e=>u({w:e.currentTarget.naturalWidth,h:e.currentTarget.naturalHeight}),onError:n,className:"pointer-events-none absolute",style:v?{left:v.x,top:v.y,width:v.w,height:v.h}:{visibility:"hidden"}}),v&&(0,l.jsx)("div",{className:"pointer-events-none absolute overflow-hidden",style:{left:v.x,top:v.y,width:v.w,height:v.h},children:h?(0,l.jsx)("div",{className:"absolute border border-[var(--primary)] shadow-[0_0_0_9999px_rgba(0,0,0,0.55)]",style:{left:h.x-v.x,top:h.y-v.y,width:h.w,height:h.h}}):(0,l.jsx)("div",{className:"absolute inset-0 bg-black/30"})})]})]}),document.body)}var s3=r(25713);function s2(e,t,r){switch(t.type){case"ready":{let t=nr(e,r,"chatbar");return{state:t.state,effects:[...t.effects,{type:"busy",busy:!1}]}}case"error":return{state:e,effects:[{type:"error",message:t.message}]};case"insert-text":{let r=t.text;if("string"!=typeof r)return{state:e,effects:[{type:"warn",message:"insert-text without a string text ignored"}]};if(""===r)return{state:e,effects:[{type:"warn",message:"empty insert-text ignored"}]};if(r.length>1e4)return{state:e,effects:[{type:"warn",message:"insert-text over ".concat(1e4," chars ignored (").concat(r.length,")")}]};return{state:e,effects:[{type:"insert",text:r}]}}case"busy":{let r=t.busy;if("boolean"!=typeof r)return{state:e,effects:[{type:"warn",message:"busy without a boolean busy ignored"}]};return{state:e,effects:[{type:"busy",busy:r}]}}default:return{state:e,effects:[{type:"warn",message:"".concat(t.type," frame ignored on a chat-bar panel")}]}}}let s5={openId:null,busy:!1,closing:!1};function s4(e,t){var r,n;let a=e.chatbar;return null!=(n=null!=(r="zh"===t?null==a?void 0:a.title_zh:void 0)?r:null==a?void 0:a.title)?n:e.name}function s8(e){let{panel:t,dispatch:r,onInsert:n,anchor:a,disabled:s}=e,{t:i,lang:c}=(0,T.s9)(),d=em(),u=(0,o.useMemo)(()=>el.extensions.filter(e=>e.chatbar&&ej(e)).sort((e,t)=>e.chatbar.order-t.chatbar.order||e.id.localeCompare(t.id)),[d]),{openId:m,closing:p}=t,h=m?u.find(e=>e.id===m):void 0;return((0,o.useEffect)(()=>{m&&!h&&r({type:"unmount"})},[m,h,r]),(0,o.useEffect)(()=>{if(!h)return;let e=e=>{"Escape"!==e.key||e.defaultPrevented||r({type:"close"})};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[h,r]),(0,o.useEffect)(()=>{if(!p)return;let e=setTimeout(()=>r({type:"unmount"}),35e3);return()=>clearTimeout(e)},[p,r]),0===u.length)?null:(0,l.jsxs)(l.Fragment,{children:[u.map(e=>{var t;let n=s4(e,c),a=e.id===(null==h?void 0:h.id);return(0,l.jsx)("button",{onClick:()=>r({type:"toggle",id:e.id}),disabled:s,title:n,"aria-label":n,"aria-pressed":a,className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",a?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(ne,{info:e,icon:null==(t=e.chatbar)?void 0:t.icon,fallback:s3.A,className:"h-4 w-4"})},e.id)}),h&&(0,l.jsx)(s6,{info:h,title:s4(h,c),closeLabel:i("chat.chatbar.close"),anchor:a,closing:p,onClose:()=>r({type:"close"}),onHidden:()=>r({type:"unmount"}),onBusy:e=>r({type:"busy",busy:e}),onInsert:n},"".concat(h.id,"@").concat(h.version))]})}function s6(e){var t,r;let{info:n,title:a,closeLabel:s,anchor:c,closing:d,onClose:u,onHidden:m,onBusy:p,onInsert:h}=e,f=function(e,t,r){let[n,a]=(0,o.useState)(null),s=(0,o.useRef)(r);return(0,o.useLayoutEffect)(()=>{s.current=r}),(0,o.useLayoutEffect)(()=>{if(!e)return;let r=0,n=()=>{r=0;let n=e.getBoundingClientRect();if(0===n.width&&0===n.height)return void s.current();let l=function(e,t,r){let n=Math.min(420,t.width-16),a=Math.max(8,Math.min(e.left+12,t.width-n-8)),s=Math.max(80,Math.min(r,e.top-8-28-4)),l=Math.max(e.top-4,36+s);return{left:a,bottom:t.height-l,width:n,frameHeight:s}}(n,{width:window.innerWidth,height:window.innerHeight},t);a(e=>e&&e.left===l.left&&e.bottom===l.bottom&&e.width===l.width&&e.frameHeight===l.frameHeight?e:l)},l=()=>{r||(r=requestAnimationFrame(n))};n();let o=new ResizeObserver(l);for(let t=e;t&&t!==document.body;t=t.parentElement)o.observe(t);return window.addEventListener("resize",l),window.addEventListener("scroll",l,!0),window.addEventListener("pointermove",l,{passive:!0}),()=>{o.disconnect(),window.removeEventListener("resize",l),window.removeEventListener("scroll",l,!0),window.removeEventListener("pointermove",l),r&&cancelAnimationFrame(r)}},[e,t]),n}(c,null!=(r=null==(t=n.chatbar)?void 0:t.height)?r:160,m);return f?(0,i.createPortal)((0,l.jsxs)("div",{role:"dialog","aria-label":a,className:"fixed z-[55] flex flex-col overflow-hidden rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-lg",style:{left:f.left,bottom:f.bottom,width:f.width},children:[(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-[var(--border)] pl-2.5 pr-1 text-xs text-[var(--muted-foreground)]",style:{height:28},children:[(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate",children:a}),(0,l.jsx)("button",{onClick:u,title:s,"aria-label":s,className:"flex h-5 w-5 shrink-0 items-center justify-center rounded hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"min-h-0",style:{height:f.frameHeight},children:(0,l.jsx)(nd,{info:n,title:a,onFrame:s2,onInsert:h,onBusy:p,closeRequested:d,logTag:"ExtensionChatbar",compact:!0})})]}),document.body):null}let s9=["image/jpeg","image/png","image/gif","image/webp"];async function s7(e){if("image/svg+xml"!==e.type){let t=await createImageBitmap(e);return{source:t,width:t.width,height:t.height,close:()=>t.close()}}let t=URL.createObjectURL(e);try{let e=new Image;e.src=t,await e.decode();let r=e.naturalWidth||1,n=e.naturalHeight||1,a=1024/Math.max(r,n);return{source:e,width:Math.round(r*a),height:Math.round(n*a),close:()=>{}}}finally{URL.revokeObjectURL(t)}}async function le(e){try{let t=await s7(e),r=Math.min(1,1568/Math.max(t.width,t.height)),n=Math.max(1,Math.round(t.width*r)),a=Math.max(1,Math.round(t.height*r)),s=document.createElement("canvas");s.width=n,s.height=a;let l=s.getContext("2d");if(!l)throw Error("no 2d context");"image/svg+xml"===e.type&&(l.fillStyle="#fff",l.fillRect(0,0,n,a)),l.drawImage(t.source,0,0,n,a),t.close();let o=s.toDataURL("image/jpeg",.85).split(",")[1];if(!o)throw Error("encode failed");return{base64:o,mimeType:"image/jpeg"}}catch(t){if(s9.includes(e.type))return{base64:await new Promise((t,r)=>{let n=new FileReader;n.onload=()=>t(n.result.split(",")[1]),n.onerror=r,n.readAsDataURL(e)}),mimeType:e.type};throw t}}async function lt(e){if(s9.includes(e.type))return!0;try{return(await s7(e)).close(),!0}catch(e){return!1}}let lr=null,ln=null,la=-1;function ls(){let e=(0,T.kj)(),t=rU(e=>e.activeProject),r=tP(null==t?void 0:t.id);return t?(0,l.jsx)("button",{onClick:()=>{let e=t.id;if(r)return void tE.getState().setFaceOn(e,!1);window.dispatchEvent(new CustomEvent("halo:navigate",{detail:{tab:"explorer"}})),tT=!0,tx=!0,tE.getState().setFaceOn(e,!0)},"aria-pressed":r,title:e(r?"face.on":"face.button"),className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",r?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(sL.A,{className:(0,E.cn)("h-4 w-4",r&&"fill-current")})}):null}function ll(e){var t;let{cameras:r,onPick:n,onClose:a}=e,s=(0,T.kj)(),[i,c]=(0,o.useState)((null==(t=r[0])?void 0:t.deviceId)||""),d=(0,o.useRef)(null),u=(0,o.useRef)(null);return(0,o.useEffect)(()=>{let e=!1,t=()=>{if(u.current){for(let e of u.current.getTracks())e.stop();u.current=null}};return t(),navigator.mediaDevices.getUserMedia({video:!i||{deviceId:{exact:i}},audio:!1}).then(t=>{if(e){for(let e of t.getTracks())e.stop();return}u.current=t,d.current&&(d.current.srcObject=t,d.current.play().catch(()=>{}))}).catch(()=>{}),()=>{e=!0,t()}},[i]),(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-3",onClick:a,children:(0,l.jsxs)("div",{className:"flex w-[640px] max-w-[94vw] flex-col overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--background)] shadow-2xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:s("capture.cameraPick")}),(0,l.jsx)("button",{onClick:a,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsx)("video",{ref:d,muted:!0,playsInline:!0,className:"aspect-video w-full bg-black object-contain"}),(0,l.jsx)("div",{className:"flex flex-col gap-1 p-2",children:r.map(e=>(0,l.jsxs)("button",{onClick:()=>c(e.deviceId),title:e.label,className:(0,E.cn)("flex items-center gap-2 rounded px-2 py-1.5 text-left text-xs hover:bg-[var(--secondary)]",i===e.deviceId?"text-[var(--primary)]":"text-[var(--foreground)]"),children:[(0,l.jsx)(sR.A,{className:"h-3.5 w-3.5 shrink-0"}),(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e.label})]},e.deviceId))}),(0,l.jsx)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-4 py-3",children:(0,l.jsx)("button",{onClick:()=>{let e=r.find(e=>e.deviceId===i);e&&n(e)},className:"rounded-md bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-white hover:opacity-90",children:s("capture.cameraUse")})})]})})}let lo=["full","workspace","readonly"],li={full:{Icon:sH.A,color:"text-amber-400"},workspace:{Icon:sz.A,color:"text-blue-400"},readonly:{Icon:tL.A,color:"text-emerald-400"}};function lc(){let e=(0,T.kj)(),t=nJ(e=>e.accessLevel),r=nJ(e=>e.isStreaming),n=nJ(e=>e.sandboxAvailable),[a,s]=(0,o.useState)(!1),i=(0,o.useRef)(null);(0,o.useEffect)(()=>{null===n&&u.FH.health().then(e=>nJ.getState().setSandboxAvailable(!!e.sandbox)).catch(()=>{})},[n]),(0,o.useEffect)(()=>{if(!a)return;let e=e=>{i.current&&!i.current.contains(e.target)&&s(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[a]);let c=!1===n,d=c?"full":t,m=r||c,{Icon:p,color:h}=li[d];return(0,l.jsxs)("div",{ref:i,className:"relative",children:[(0,l.jsxs)("button",{onClick:()=>!m&&s(!a),disabled:m,title:c?e("chat.access.noSandbox"):e("chat.access.title"),className:(0,E.cn)("flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors",m?"opacity-50 cursor-default":"hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),children:[(0,l.jsx)(p,{className:(0,E.cn)("h-3 w-3",h)}),(0,l.jsx)("span",{children:e("chat.access.".concat(d))}),!m&&(0,l.jsx)(M.A,{className:"h-2.5 w-2.5"})]}),a&&(0,l.jsx)("div",{className:"absolute bottom-full left-0 mb-1 min-w-[180px] rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-lg z-30",children:lo.map(r=>{let{Icon:n,color:a}=li[r];return(0,l.jsxs)("button",{onClick:()=>{nJ.getState().setAccessLevel(r),s(!1)},className:(0,E.cn)("flex w-full items-start gap-2 px-3 py-1.5 text-left text-xs transition-colors",r===t?"bg-[var(--accent)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)(n,{className:(0,E.cn)("mt-0.5 h-3 w-3 shrink-0",a)}),(0,l.jsxs)("span",{className:"flex min-w-0 flex-col",children:[(0,l.jsx)("span",{children:e("chat.access.".concat(r))}),(0,l.jsx)("span",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:e("chat.access.".concat(r,"Desc"))})]}),r===t&&(0,l.jsx)(rP.A,{className:"ml-auto h-3.5 w-3.5 shrink-0 self-center text-[var(--primary)]"})]},r)})})]})}function ld(){return(0,l.jsx)("span",{className:"mx-1 h-4 w-px shrink-0 bg-[var(--border)]"})}function lu(){let e=(0,T.kj)(),t=nJ(e=>e.screenSource),r=nJ(e=>e.cameraSource);return[t&&{key:"screen",Icon:sO.A,name:t.name,unbind:()=>nJ.getState().setScreenSource(null)},r&&{key:"camera",Icon:sR.A,name:r.name,unbind:()=>nJ.getState().setCameraSource(null)}].filter(e=>!!e).map(t=>{let{key:r,Icon:n,name:a,unbind:s}=t;return(0,l.jsxs)("div",{className:"flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium text-[var(--primary)]",children:[(0,l.jsx)(n,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{className:"max-w-[80px] truncate",title:a,children:a}),(0,l.jsx)("button",{onClick:s,title:e("capture.unbind"),className:"rounded opacity-75 hover:opacity-100",children:(0,l.jsx)(e0.A,{className:"h-2.5 w-2.5"})})]},r)})}function lm(e){let{modelSupportsImage:t}=e,r=(0,T.kj)(),n=nJ(e=>e.screenSource),a=nJ(e=>e.cameraSource),s=nJ(e=>e.setScreenSource),i=nJ(e=>e.setCameraSource),[c,d]=(0,o.useState)(!1),[u,m]=(0,o.useState)([]),[p,h]=(0,o.useState)(!1),[f,x]=(0,o.useState)(!1),[g,v]=(0,o.useState)(!1),[b,y]=(0,o.useState)(!1),[w,j]=(0,o.useState)([]),[k,N]=(0,o.useState)(!1),S=(0,o.useRef)(null),C=se(),A=st();if((0,o.useEffect)(()=>{!t&&(n&&s(null),a&&i(null))},[t,n,a,s,i]),(0,o.useEffect)(()=>{var e,t=n,r=a;a3(t)||a5();let s=r&&(null==(e=st())?void 0:e.web)?r.id:null;a6&&a6.deviceId===s||(a6&&(aV(a6.stream,a6.video),a6=null),null!==s&&a9(a6={deviceId:s,stream:null,video:null,opening:null,openedAt:0}))},[n,a]),(0,o.useEffect)(()=>{if(!A||!t)return void v(!1);let e=!1;return A.has().then(t=>{e||v(t)}).catch(()=>{}),()=>{e=!0}},[A,t]),(0,o.useEffect)(()=>{if(!c&&!k)return;let e=e=>{S.current&&!S.current.contains(e.target)&&(d(!1),N(!1))},t=e=>{"Escape"===e.key&&(d(!1),N(!1))};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[c,k]),!C&&!A||!t)return null;let I=async()=>{if(n)return void s(null);if(null==C?void 0:C.web){let e=await C.start();e&&s({id:aq,name:r(e)});return}if(c)return void d(!1);d(!0),x(!0);try{let e=await C.list();m(e);let t=e.filter(e=>e.id.startsWith("screen:"));h(t.length>0&&t.every(e=>e.blank))}catch(e){m([])}finally{x(!1)}},_=(e,t)=>{if(y(!1),N(!1),e)try{localStorage.setItem("halo.cameraId",e)}catch(e){}i({id:e,name:t||r("capture.cameraName")})},P=async()=>{if(a)return void i(null);if(!await A.requestPermission())return void y(!0);let e=await A.list();if(0===e.length)return void _("",void 0);j(e),N(!0)};return(0,l.jsxs)("div",{ref:S,className:"relative flex items-center gap-1",children:[C&&(0,l.jsx)("button",{onClick:I,title:n?r("capture.bound",{name:n.name}):r("capture.button"),className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",n?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(sO.A,{className:"h-4 w-4"})}),A&&g&&(0,l.jsx)("button",{onClick:P,title:a?r("capture.cameraBound"):r("capture.cameraButton"),className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",a?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(sR.A,{className:"h-4 w-4"})}),b&&(0,l.jsxs)("div",{className:"absolute bottom-full left-0 z-50 mb-1 w-64 rounded-md border border-amber-500/30 bg-[var(--background)] p-2.5 text-xs text-amber-300 shadow-lg",children:[(0,l.jsx)("div",{children:r((null==A?void 0:A.web)?"capture.cameraPermissionHintWeb":"capture.cameraPermissionHint")}),(0,l.jsxs)("div",{className:"mt-1.5 flex items-center gap-3",children:[A&&!A.web&&(0,l.jsx)("button",{onClick:()=>A.openSettings(),className:"underline hover:text-amber-200",children:r("capture.openSettings")}),(0,l.jsx)("button",{onClick:()=>y(!1),className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:r("capture.dismiss")})]})]}),k&&w.length>=1&&(0,l.jsx)(ll,{cameras:w,onPick:e=>_(e.deviceId,e.label),onClose:()=>N(!1)}),c&&(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-3",onClick:()=>d(!1),children:(0,l.jsxs)("div",{className:"flex h-[92vh] w-[96vw] flex-col overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--background)] shadow-2xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:r("capture.pickTitle")}),(0,l.jsx)("button",{onClick:()=>d(!1),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto p-4",children:[p&&C&&!C.web&&(0,l.jsxs)("div",{className:"mb-3 rounded-md border border-amber-500/30 bg-amber-500/10 p-3 text-xs text-amber-300",children:[(0,l.jsx)("div",{children:r("capture.permissionHint")}),(0,l.jsx)("button",{onClick:()=>C.openSettings(),className:"mt-1.5 underline hover:text-amber-200",children:r("capture.openSettings")})]}),f?(0,l.jsx)("div",{className:"py-8 text-center text-xs text-[var(--muted-foreground)]",children:r("capture.loading")}):0===u.length?(0,l.jsx)("div",{className:"py-8 text-center text-xs text-[var(--muted-foreground)]",children:r("capture.empty")}):(0,l.jsx)("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(220px,1fr))] gap-3",children:u.map(e=>(0,l.jsxs)("button",{onClick:()=>{s({id:e.id,name:e.name}),d(!1)},title:e.name,className:"flex min-w-0 flex-col gap-1.5 overflow-hidden rounded-lg border border-[var(--border)] p-2 text-left transition-colors hover:border-[var(--primary)] hover:bg-[var(--secondary)]",children:[e.thumb?(0,l.jsx)("img",{src:e.thumb,alt:e.name,className:"aspect-video w-full rounded object-cover bg-black/20"}):(0,l.jsx)("div",{className:"flex aspect-video w-full items-center justify-center rounded bg-black/20 text-[10px] text-[var(--muted-foreground)]",children:r("capture.noPreview")}),(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[e.icon&&(0,l.jsx)("img",{src:e.icon,alt:"",className:"h-4 w-4 shrink-0"}),(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs text-[var(--foreground)]",children:e.name})]})]},e.id))})]})]})})]})}function lp(e){let{disabled:t,onCapture:r,onNotice:n}=e,a=(0,T.kj)(),s=function(){var e,t;let r=null==(e=window.haloCapture)?void 0:e.screenshot;return"function"==typeof r?async()=>{let e=await r();return"string"==typeof e?"data:image/jpeg;base64,".concat(e):e}:"function"==typeof(null==(t=navigator.mediaDevices)?void 0:t.getDisplayMedia)?a8:void 0}(),[i,c]=(0,o.useState)(!1),[d,u]=(0,o.useState)(null),m=(0,o.useRef)(0);if((0,o.useEffect)(()=>()=>{(null==d?void 0:d.startsWith("blob:"))&&URL.revokeObjectURL(d)},[d]),!s)return null;let p=i||null!==d,h=async()=>{if(p){m.current++,c(!1),u(null);return}let e=++m.current;c(!0);let t=null;try{t=await s()}catch(e){}if(e!==m.current){"string"==typeof t&&t.startsWith("blob:")&&URL.revokeObjectURL(t);return}c(!1),t&&"object"==typeof t?n(a("capture.permissionHint")):t&&u(t)};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{onClick:h,disabled:t,title:p?a("capture.screenshotActive"):a("capture.screenshotButton"),className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",p?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(sU.A,{className:"h-4 w-4"})}),d&&(0,l.jsx)(s1,{src:d,onConfirm:e=>{u(null),r(e)},onCancel:()=>u(null)})]})}function lh(e){let{onCompact:t}=e,r=nJ(e=>e.messages),n=nJ(e=>e.contextTokens),a=nJ(e=>e.maxContextTokens),s=nJ(e=>e.isCompacting),i=nJ(e=>e.isStreaming),c=(0,o.useMemo)(()=>n>0?n:0,[n]);if(0===c||0===r.length||0===a)return null;let d=Math.min(c/a*100,100),u=(c/1e3).toFixed(2),m=2*Math.PI*8,p=r.length>5&&t&&!s&&!i;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ld,{}),(0,l.jsx)("div",{className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg",p&&"cursor-pointer hover:bg-[var(--secondary)]"),title:s?"Compacting...":"~".concat(u,"K / ").concat(a/1e3,"K tokens (").concat(Math.round(d),"%)").concat(p?"\nClick to compact context":""),onClick:p?t:void 0,children:(0,l.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 22 22",className:(0,E.cn)("transform -rotate-90",s&&"animate-pulse"),children:[(0,l.jsx)("circle",{cx:"11",cy:"11",r:8,fill:"none",stroke:"var(--muted-foreground)",strokeWidth:"2.5",opacity:"0.3"}),(0,l.jsx)("circle",{cx:"11",cy:"11",r:8,fill:"none",stroke:s?"#3b82f6":d<50?"#22c55e":d<70?"#eab308":d<85?"#f97316":"#ef4444",strokeWidth:"2.5",strokeDasharray:m,strokeDashoffset:m-d/100*m,strokeLinecap:"round",className:"transition-all duration-300"})]})})]})}function lf(e){let{onSend:t,disabled:r,isStreaming:n,onStop:a,onInterrupt:s,pendingMessages:c,onRemovePending:m,onCommand:p,onCompact:h,agentControl:f,debugControl:x}=e,g=(0,T.kj)(),v=(0,d.Uw)(e=>e.selectedText),b=(0,d.Uw)(e=>e.selectedRange),y=(0,d.Uw)(e=>e.activeTab),w=(0,d.Uw)(e=>e.contextEnabled),j=(0,d.Uw)(e=>e.setContextEnabled),[k,N]=(0,o.useState)(""),[S,C]=(0,o.useState)([]),[A,I]=(0,o.useState)(!1),[_,P]=(0,o.useState)(0),[M,F]=(0,o.useState)([]),[D,L]=(0,o.useState)(0),[R,H]=(0,o.useState)(0),[z,O]=(0,o.useState)(!1),[U,B]=(0,o.useState)(null),K=function(){let e=nJ(e=>e.selectedAgentId),t=rU(e=>{var t;return null==(t=e.activeProject)?void 0:t.path}),r=sq(e=>e.version),[n,a]=(0,o.useState)(!0);return(0,o.useEffect)(()=>{if(!t)return;let n=!1;return Promise.all([u.FH.agentConfigs.list(t),(r!==la&&(la=r,lr=null,ln=null),lr)?Promise.resolve(lr):(!ln&&(ln=u.FH.agentConfigs.models().then(e=>{let t={};for(let n of e.providers){var r;for(let e of n.models)t[e.id]=!!(null==(r=e.capabilities)?void 0:r.image)}return lr=t,t}).catch(()=>({}))),ln)]).then(t=>{var r;let[s,l]=t;if(n)return;let o=null!=(r=s.agents.find(t=>t.id===e))?r:s.agents[0],i=null==o?void 0:o.model;if(!i||!(i in l))return void a(!0);a(l[i])}).catch(()=>{n||a(!0)}),()=>{n=!0}},[e,t,r]),n}(),G=(0,o.useRef)(null);(0,o.useEffect)(()=>{let e=()=>{var e;return null==(e=G.current)?void 0:e.focus()};return window.addEventListener("halo:focus-chat-input",e),()=>window.removeEventListener("halo:focus-chat-input",e)},[]);let q=(0,o.useRef)(null),$=rU(e=>e.activeProject),Y=0===nJ(e=>e.usableAgentCount),J=ap(e=>e.enabled),Z=ap(e=>e.goal),V=nJ(e=>e.sessionId),X=J&&!!Z&&("intake"===Z.status||"running"===Z.status)&&V===Z.workerSessionId,Q=X&&!k.trim().startsWith("/"),ee=(0,o.useMemo)(()=>{var e,t;if(v&&y){let t=null!=(e=y.split("/").pop())?e:y,r=b?":".concat(b.startLine,"-").concat(b.endLine):"";return"".concat(t).concat(r," (").concat(v.length," chars)")}return y?null!=(t=y.split("/").pop())?t:y:null},[v,b,y]),er=(0,o.useMemo)(()=>{if(!k.startsWith("/")||/\s/.test(k))return[];if(!k.startsWith("/"))return[];let e=k.toLowerCase();return sV().filter(t=>t.name.startsWith(e))},[k]),en=(0,o.useMemo)(()=>(function(e){var t;let r=e.match(/^(\/\S+)\s+(\S*)$/);if(!r)return[];let n=sV().find(e=>e.name===r[1].toLowerCase());if(!(null==n||null==(t=n.verbs)?void 0:t.length))return[];let a=r[2].toLowerCase();return n.verbs.filter(e=>e.name.startsWith(a)&&e.name!==a).map(e=>({cmd:n,verb:e}))})(k),[k]),[ea,es]=(0,o.useState)(0);(0,o.useEffect)(()=>{es(0)},[en.length]);let el=(0,o.useCallback)(e=>{var t;N("".concat(e.cmd.name," ").concat(e.verb.name," ")),null==(t=G.current)||t.focus()},[]),eo=(0,o.useMemo)(()=>{let e=k.slice(0,R).match(/(^|\s)@scope\s+(\S*)$/);return e?{startIdx:e.index+e[1].length,query:e[2]}:null},[k,R]),ei=(0,o.useMemo)(()=>{if(eo)return null;let e=k.slice(0,R).match(/(^|\s)@(\S*)$/);return e?{startIdx:e.index+e[1].length,query:e[2]}:null},[k,R,eo]),[ec,ed]=(0,o.useState)([]);(0,o.useEffect)(()=>{if(!ei||z||!$)return void ed([]);let e=!1,t=setTimeout(()=>{u.FH.files.search($.id,ei.query,15).then(t=>{e||ed(t.matches.map(e=>e.path))}).catch(()=>{e||ed([])})},120);return()=>{e=!0,clearTimeout(t)}},[ei,z,$]);let eu=(0,o.useCallback)(e=>{if(!ei)return;let t=k.slice(0,ei.startIdx);N(t+k.slice(ei.startIdx+1+ei.query.length)),F(t=>t.includes(e)?t:[...t,e]),L(0),O(!1),requestAnimationFrame(()=>{if(G.current){let e=t.length;G.current.selectionStart=e,G.current.selectionEnd=e,G.current.focus(),H(e)}})},[k,ei]),[em,ep]=(0,o.useReducer)(function e(t,r){switch(r.type){case"toggle":if(t.openId!==r.id)return{openId:r.id,busy:!1,closing:!1};return e(t,{type:"close"});case"close":if(!t.openId)return t;return t.busy&&!t.closing?{...t,closing:!0}:s5;case"unmount":return t.openId?s5:t;case"busy":if(!t.openId)return t;if(!r.busy&&t.closing)return s5;return t.busy===r.busy?t:{...t,busy:r.busy}}},s5),[eh,ef]=(0,o.useState)(null);(0,o.useEffect)(()=>n2.subscribe((e,t)=>{e.activeTabId!==t.activeTabId&&ep({type:"unmount"})}),[]);let ex=(0,o.useCallback)(e=>{var t;let r=G.current;if(!r)return;let n=function(e,t,r,n){let a=Math.max(0,Math.min(t,e.length)),s=Math.max(a,Math.min(r,e.length));return{value:e.slice(0,a)+n+e.slice(s),caret:a+n.length}}(r.value,r.selectionStart,r.selectionEnd,e);(0,i.flushSync)(()=>{N(n.value),H(n.caret)}),r.selectionStart=n.caret,r.selectionEnd=n.caret;let a=document.getSelection();a&&a.rangeCount>0&&document.activeElement!==r&&(null==(t=a.anchorNode)?void 0:t.childNodes[a.anchorOffset])===r&&a.removeAllRanges(),r.style.height="auto",r.style.height=Math.min(r.scrollHeight,200)+"px"},[]),[eg,ev]=(0,o.useState)([]),[eb,ey]=(0,o.useState)(0);(0,o.useEffect)(()=>{if(!eo||!$)return void ev([]);let e=!1,t=setTimeout(()=>{u.FH.files.search($.id,eo.query,15,!0).then(t=>{e||ev(t.matches.map(e=>e.path))}).catch(()=>{e||ev([])})},120);return()=>{e=!0,clearTimeout(t)}},[eo,$]);let ew=(0,o.useCallback)(e=>{if(!eo)return;let t=k.slice(0,eo.startIdx),r=k.slice(R),n="@scope ".concat(e," ");N(t+n+r),ey(0),requestAnimationFrame(()=>{if(G.current){let e=t.length+n.length;G.current.selectionStart=e,G.current.selectionEnd=e,G.current.focus(),H(e)}})},[k,eo,R]),ej=(0,o.useCallback)(e=>{F(t=>t.filter(t=>t!==e))},[]),ek=(0,o.useCallback)(e=>{var t,r;let n=k.split(/\s+/),a=null!=(t=n[0])?t:"",s=n.slice(1).join(" ");if(e.argHint&&!s&&a!==e.name){N(e.name+" "),P(0),null==(r=G.current)||r.focus();return}null==p||p(e,s),N(""),P(0),G.current&&(G.current.style.height="auto")},[k,p]),eN=(0,o.useCallback)(e=>{let t=Array.from(e).filter(e=>e.type.startsWith("image/"));Promise.all(t.map(lt)).then(e=>{let r=t.filter((t,r)=>!e[r]);B(r.length>0?g("chat.attachUnsupported",{names:r.map(e=>e.name).join(", ")}):null);let n=t.filter((t,r)=>e[r]).map(e=>({file:e,preview:URL.createObjectURL(e)}));n.length>0&&C(e=>[...e,...n])})},[g]);(0,o.useEffect)(()=>{let e=e=>{var t;let r=null==(t=e.detail)?void 0:t.file;if(!r)return;K?eN([r]):B(g("chat.attachNoVision",{name:r.name}));let n=d.Uw.getState();n.setBottomTab("chat"),n.maximized&&n.setMaximized(!1),requestAnimationFrame(()=>{var e;return null==(e=G.current)?void 0:e.focus()})};return window.addEventListener("halo:attach-image",e),()=>window.removeEventListener("halo:attach-image",e)},[eN,K,g]);let eS=(0,o.useCallback)(e=>{C(t=>{let r=t[e];return(null==r?void 0:r.preview)&&URL.revokeObjectURL(r.preview),t.filter((t,r)=>r!==e)})},[]),eC=(0,o.useCallback)(async()=>{var e,r;let n=k.trim();if(!n&&0===S.length||Y)return;if(en.length>0)return void el(null!=(e=en[ea])?e:en[0]);if(n.startsWith("/")){if(er.length>0)return void ek(null!=(r=er[_])?r:er[0]);let e=sV().find(e=>{var t;return e.name===(null==(t=n.split(/\s+/)[0])?void 0:t.toLowerCase())});if(e)return void ek(e)}if(X)return;let a=[];for(let e of S)try{let{base64:t,mimeType:r}=await le(e.file);a.push({data:t,mimeType:r})}catch(e){console.error("[MessageInput] Image conversion failed:",e)}(n||a.length>0)&&t(n||"(image)",a.length>0?a:void 0,M.length>0?M:void 0),S.forEach(e=>{e.preview&&URL.revokeObjectURL(e.preview)}),C([]),F([]),N(""),G.current&&(G.current.style.height="auto")},[k,S,t,er,_,ek,M,en,ea,el,Y,X]),eA=(0,o.useCallback)(e=>{if(eg.length>0){if("ArrowDown"===e.key){e.preventDefault(),ey(e=>Math.min(e+1,eg.length-1));return}if("ArrowUp"===e.key){e.preventDefault(),ey(e=>Math.max(e-1,0));return}if("Tab"===e.key||"Enter"===e.key&&!e.nativeEvent.isComposing){e.preventDefault();let t=eg[eb];t&&ew(t);return}if("Escape"===e.key){e.preventDefault(),ev([]);return}}if(ec.length>0){if("ArrowDown"===e.key){e.preventDefault(),L(e=>Math.min(e+1,ec.length-1));return}if("ArrowUp"===e.key){e.preventDefault(),L(e=>Math.max(e-1,0));return}if("Tab"===e.key||"Enter"===e.key&&!e.nativeEvent.isComposing){e.preventDefault();let t=ec[D];t&&eu(t);return}if("Escape"===e.key){e.preventDefault(),O(!0);return}}if(en.length>0){if("ArrowDown"===e.key){e.preventDefault(),es(e=>Math.min(e+1,en.length-1));return}if("ArrowUp"===e.key){e.preventDefault(),es(e=>Math.max(e-1,0));return}if("Tab"===e.key){e.preventDefault();let t=en[ea];t&&el(t);return}if("Escape"===e.key){e.preventDefault(),es(0);return}}if(er.length>0){if("ArrowDown"===e.key){e.preventDefault(),P(e=>Math.min(e+1,er.length-1));return}if("ArrowUp"===e.key){e.preventDefault(),P(e=>Math.max(e-1,0));return}if("Escape"===e.key){e.preventDefault(),N(""),P(0);return}if("Tab"===e.key){e.preventDefault();let t=er[_];t&&N(t.name+" ");return}}if("Escape"===e.key&&em.openId){e.preventDefault(),ep({type:"close"});return}if("Escape"===e.key&&n&&!k.trim()&&s){e.preventDefault(),s();return}"Enter"!==e.key||e.nativeEvent.isComposing||e.shiftKey||e.metaKey||e.ctrlKey||(e.preventDefault(),eC())},[eC,er,_,en,ea,el,ec,D,eu,eg,eb,ew,n,k,s,em.openId]),eI=(0,o.useCallback)(e=>{N(e.target.value),H(e.target.selectionStart),P(0),O(!1),L(0),ey(0);let t=e.target;t.style.height="auto",t.style.height=Math.min(t.scrollHeight,200)+"px"},[]),eE=(0,o.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),I(!0)},[]),eT=(0,o.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),I(!1)},[]),e_=(0,o.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),I(!1),e.dataTransfer.files.length>0&&eN(e.dataTransfer.files)},[eN]),eP=(0,o.useCallback)(e=>{let t=e.clipboardData.items,r=[];for(let e=0;e<t.length;e++){let n=t[e];if("file"===n.kind){let e=n.getAsFile();e&&r.push(e)}}r.length>0&&(e.preventDefault(),eN(r))},[eN]);return(0,l.jsxs)("div",{ref:ef,className:(0,E.cn)("relative px-3 pb-3 pt-1 transition-colors",A&&"bg-[var(--accent)]"),onDragOver:eE,onDragLeave:eT,onDrop:e_,children:[(0,l.jsx)(sX,{commands:er,selectedIndex:_,onSelect:ek}),(0,l.jsx)(sX,{commands:en.map(e=>{var t;return{name:"".concat(e.cmd.name," ").concat(e.verb.name),description:null!=(t=e.verb.desc)?t:"",type:"server"}}),selectedIndex:ea,onSelect:e=>{var t;N(e.name+" "),null==(t=G.current)||t.focus()}}),(0,l.jsx)(sQ,{matches:ec,selectedIndex:D,onSelect:eu}),(0,l.jsx)(sQ,{matches:eg,selectedIndex:eb,onSelect:ew,dirs:!0}),A&&(0,l.jsx)("div",{className:"absolute inset-0 z-10 flex items-center justify-center rounded-xl bg-[var(--accent)]/80 border-2 border-dashed border-[var(--primary)]",children:(0,l.jsx)("p",{className:"text-sm text-[var(--primary)]",children:"Drop images here"})}),(0,l.jsx)("input",{ref:q,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:e=>{e.target.files&&eN(e.target.files),e.target.value=""}}),U&&(0,l.jsxs)("div",{className:"mb-1 flex items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/10 px-2.5 py-1.5 text-xs text-amber-300",children:[(0,l.jsx)("span",{className:"flex-1",children:U}),(0,l.jsx)("button",{onClick:()=>B(null),className:"shrink-0 rounded p-0.5 hover:bg-amber-500/20",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]}),(0,l.jsxs)("div",{className:(0,E.cn)("rounded-2xl border border-[var(--border)] bg-[var(--secondary)] transition-colors","focus-within:border-[var(--primary)] focus-within:ring-1 focus-within:ring-[var(--primary)]"),children:[(0,l.jsx)("textarea",{ref:G,value:k,onChange:eI,onKeyDown:eA,onPaste:eP,onSelect:e=>H(e.target.selectionStart),placeholder:Y?"All agents are disabled — enable one in the Agents tab to chat":X?g("goal.inputLocked"):n?"Send to interrupt current response...":"Type @ to reference files...",rows:1,className:"w-full resize-none bg-transparent px-3.5 pt-3 pb-1 text-sm text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none max-h-[200px]"}),(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-1 px-2 pb-2",children:[(0,l.jsx)(lc,{}),f,(0,l.jsx)(lu,{}),(0,l.jsx)(lh,{onCompact:h}),(0,l.jsx)(ld,{}),(0,l.jsx)("button",{onClick:()=>{var e;return null==(e=q.current)?void 0:e.click()},disabled:r,title:"Attach images",className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(sB.A,{className:"h-4 w-4"})}),K&&(0,l.jsx)(lp,{disabled:r,onCapture:e=>eN([e]),onNotice:B}),(0,l.jsx)(lm,{modelSupportsImage:K}),(0,l.jsx)(s8,{panel:em,dispatch:ep,onInsert:ex,anchor:eh,disabled:r}),($||x||ee)&&(0,l.jsx)(ld,{}),(0,l.jsx)(ls,{}),x,ee&&(0,l.jsxs)("button",{onClick:()=>j(!w),title:w?"Click to exclude context":"Click to include context",className:(0,E.cn)("flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium transition-colors hover:bg-[var(--secondary)]",w?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)] line-through opacity-50"),children:[(0,l.jsx)(W.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{className:"max-w-36 truncate",children:ee})]}),null==c?void 0:c.map((e,t)=>(0,l.jsxs)("div",{className:"flex items-center gap-1 rounded-full border border-[var(--border)] bg-[var(--background)] px-2 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{className:"max-w-32 truncate",children:e}),(0,l.jsx)("button",{onClick:()=>null==m?void 0:m(t),className:"ml-0.5 rounded-full p-0.5 hover:bg-[var(--accent)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-2.5 w-2.5"})})]},"q-".concat(t))),M.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-1 rounded-full border border-green-500/20 bg-green-500/10 px-2 py-0.5 text-[10px] text-green-400",children:[(0,l.jsxs)("span",{className:"max-w-32 truncate",children:["@",e.split("/").pop()]}),(0,l.jsx)("button",{onClick:()=>ej(e),className:"ml-0.5 rounded-full p-0.5 hover:bg-green-500/20 hover:text-green-300",children:(0,l.jsx)(e0.A,{className:"h-2.5 w-2.5"})})]},"@".concat(e))),S.map((e,t)=>(0,l.jsxs)("div",{className:"flex items-center gap-1 rounded-lg border border-[var(--border)] bg-[var(--background)] px-2 py-0.5",children:[e.preview?(0,l.jsx)("img",{src:e.preview,alt:e.file.name,className:"h-5 w-5 rounded object-cover"}):(0,l.jsx)(et.A,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"max-w-20 truncate text-[10px] text-[var(--muted-foreground)]",children:e.file.name}),(0,l.jsx)("button",{onClick:()=>eS(t),className:"ml-0.5 rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--accent)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-2.5 w-2.5"})})]},"f-".concat(t))),(0,l.jsx)("div",{className:"flex-1"}),n&&!k.trim()&&0===S.length?(0,l.jsx)("button",{onClick:a,title:"Stop generation",className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-red-600 text-white transition-colors hover:bg-red-700",children:(0,l.jsx)(sW.A,{className:"h-3.5 w-3.5 fill-current"})}):(0,l.jsx)("button",{onClick:eC,disabled:Y||Q||!k.trim()&&0===S.length,title:Y?"All agents are disabled — enable one to chat":Q?g("goal.inputLocked"):n&&k.trim()?"Send (interrupts current response)":"Send (Enter)",className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors",!Y&&!Q&&(k.trim()||S.length>0)?n?"bg-orange-600 text-white hover:bg-orange-700":"bg-[var(--primary)] text-[var(--primary-foreground)] hover:bg-blue-600":"text-[var(--muted-foreground)] cursor-not-allowed"),children:(0,l.jsx)(sK.A,{className:"h-4 w-4"})})]})]})]})}let lx={intake:"border-blue-500/30 bg-blue-500/10 text-blue-400",running:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400",paused:"border-amber-500/30 bg-amber-500/10 text-amber-400",halted:"border-red-500/30 bg-red-500/10 text-red-400",done:"border-emerald-500/30 bg-emerald-500/10 text-emerald-400"};function lg(e){let{currentSessionId:t,onJump:r}=e,n=ap(e=>e.enabled),a=ap(e=>e.goal),s=ap(e=>e.dismissedGoalId),o=ap(e=>e.dismiss),i=(0,T.kj)();if(!n||!a)return null;let c="done"===a.status||"halted"===a.status;if(c&&s===a.goalSessionId)return null;let d=i("goal.banner.".concat(a.status),{round:a.round,max:a.maxRounds}),u=t===a.goalSessionId,m=t===a.workerSessionId;return(0,l.jsxs)("div",{className:(0,E.cn)("flex items-center gap-2 border-t px-3 py-1.5 text-[11px]",lx[a.status]),children:[(0,l.jsx)("button",{onClick:()=>!u&&r(a.goalSessionId),title:u?void 0:i("goal.banner.jump"),className:(0,E.cn)("min-w-0 flex-1 truncate text-left",!u&&"hover:underline cursor-pointer"),children:d}),(0,l.jsx)("button",{onClick:()=>!m&&r(a.workerSessionId),title:m?void 0:i("goal.banner.jump_worker"),className:(0,E.cn)("shrink-0",!m&&"hover:underline cursor-pointer"),children:i("goal.banner.worker")}),c&&(0,l.jsx)("button",{onClick:()=>o(a.goalSessionId),title:i("goal.banner.dismiss"),className:"shrink-0 rounded p-0.5 opacity-60 hover:opacity-100 transition-opacity",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]})}var lv=r(70805);function lb(e){let{onLoadOlder:t,scrollRef:r}=e,n=(0,T.kj)(),a=nJ(e=>e.sessionId),s=nV(e=>e.sessionId),i=nV(e=>e.anchor),c=nV(e=>e.cursor),d=nV(e=>e.messages),u=nV(e=>e.loading),[m,p]=(0,o.useState)(!1),h=(0,o.useRef)(null);(0,o.useLayoutEffect)(()=>{let e=r.current,t=h.current;e&&null!==t&&(e.scrollTop=e.scrollHeight-t,h.current=null)},[m,r]);let f=(0,o.useMemo)(()=>d.filter(nA),[d]);return null===s||s!==a||0===i?null:(0,l.jsxs)("div",{className:"border-b border-[var(--border)]/50",children:[c>0?(0,l.jsxs)("button",{onClick:t,disabled:u,className:"flex w-full items-center justify-center gap-1.5 px-3 py-2 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:hover:bg-transparent",children:[u&&(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),n(u?"chat.archive.loading":"chat.archive.loadOlder")]}):(0,l.jsx)("div",{className:"px-3 py-2 text-center text-[10px] text-[var(--muted-foreground)]",children:n("chat.archive.noEarlier")}),f.length>0&&(0,l.jsxs)(l.Fragment,{children:[m&&(0,l.jsx)(sc,{messages:f,readOnly:!0}),(0,l.jsxs)("button",{onClick:()=>{let e=r.current;h.current=e?e.scrollHeight-e.scrollTop:null,p(!m)},className:"flex w-full items-center gap-2 border-t border-[var(--border)]/50 px-3 py-2 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:[m?(0,l.jsx)(lv.A,{className:"h-3 w-3"}):(0,l.jsx)(F.A,{className:"h-3 w-3"}),(0,l.jsx)("span",{children:n("chat.archive.header",{segments:i-c,messages:f.length})})]})]})]})}var ly=r(39802),lw=r(72486);let lj=e=>Math.min(480,Math.max(120,Math.round(e)));function lk(e,t){try{localStorage.setItem(e,t)}catch(e){}}function lN(e){let{openKey:t,widthKey:r,defaultWidth:n,title:a,children:s,collapsedContent:i,hoverPeek:c}=e,d=(0,T.kj)(),[u,m]=(0,o.useState)(()=>"false"!==localStorage.getItem(t)),[p,h]=(0,o.useState)(()=>(function(e,t){let r=Number(localStorage.getItem(e));return Number.isFinite(r)&&r>0?lj(r):t})(r,n)),f=null==c?void 0:c.close,x=(0,o.useCallback)((e,r)=>{m(e),lk(t,String(e)),null==f||f(!e&&!!r&&r.detail>0)},[t,f]),g=(0,o.useCallback)(e=>{if(0!==e.button)return;e.preventDefault();let t=e.clientX,n=p,a=document.body.style,s=a.cursor,l=a.userSelect;a.cursor="col-resize",a.userSelect="none";let o=e=>{h(n=lj(p+t-e.clientX))},i=()=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",i),window.removeEventListener("pointercancel",i),a.cursor=s,a.userSelect=l,lk(r,String(n))};window.addEventListener("pointermove",o),window.addEventListener("pointerup",i),window.addEventListener("pointercancel",i)},[p,r]),v=e=>{let t=d(e?"sidebar.expand":"sidebar.collapse"),r=e?ly.A:lw.A;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex h-7 shrink-0 items-center justify-between gap-1 border-b border-[var(--border)] pl-2 pr-1",children:[(0,l.jsx)("span",{className:"truncate text-[10px] font-medium uppercase tracking-wide text-[var(--muted-foreground)]",children:a}),(0,l.jsx)("button",{onClick:t=>x(e,t),title:t,"aria-label":t,className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(r,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"flex min-h-0 flex-1 flex-col",children:s})]})};return u?(0,l.jsxs)("div",{className:"relative flex shrink-0 flex-col border-l border-[var(--border)] bg-[var(--card)]",style:{width:p},children:[(0,l.jsx)("div",{onPointerDown:g,title:d("sidebar.resize"),className:"absolute inset-y-0 -left-0.5 z-10 w-1 cursor-col-resize transition-colors hover:bg-[var(--primary)]/40"}),v(!1)]}):(0,l.jsxs)("div",{...null==c?void 0:c.bind,className:(0,E.cn)("relative flex shrink-0 flex-col items-center border-l border-[var(--border)] bg-[var(--card)] pt-1",i?"w-10":"w-6"),children:[(0,l.jsx)("button",{onClick:()=>x(!0),title:d("sidebar.expand"),"aria-label":d("sidebar.expand"),className:"shrink-0 rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(ly.A,{className:"h-3.5 w-3.5"})}),i&&(0,l.jsx)("div",{className:"flex min-h-0 w-full flex-1 flex-col items-center",children:i}),(null==c?void 0:c.open)&&(0,l.jsx)("div",{ref:lS,"data-peek":!0,className:"absolute inset-y-0 right-0 z-30 flex flex-col border-l border-[var(--border)] bg-[var(--card)] shadow-[-6px_0_16px_-6px_rgba(0,0,0,0.35)] transition-[translate,opacity] duration-150 ease-out starting:translate-x-4 starting:opacity-0 motion-reduce:transition-none",style:{width:p},children:v(!0)})]})}function lS(e){var t;let r=null==e||null==(t=e.parentElement)?void 0:t.parentElement;e&&r&&(e.style.maxWidth="".concat(r.clientWidth,"px"))}var lC=r(58958);let lA=e=>e?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/50 hover:text-[var(--foreground)]";function lI(e){let{icon:t,label:r,tooltip:n,active:a,onActivate:s,badge:o,statusBar:i,onClose:c,closeLabel:d,menuGestures:u}=e;return(0,l.jsxs)("div",{...u,onClick:s,title:n,"aria-selected":a,className:(0,E.cn)("group relative mx-1.5 flex h-7 shrink-0 cursor-pointer select-none items-center gap-2 rounded-md px-2 text-[11px] transition-colors",lA(a)),children:[t&&(0,l.jsx)("span",{className:"flex h-3.5 w-3.5 shrink-0 items-center justify-center",children:t}),(0,l.jsx)("div",{className:"min-w-0 flex-1 truncate",children:r}),o,c&&(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),c(e)},title:d,"aria-label":d,className:"shrink-0 rounded p-0.5 opacity-0 hover:bg-[var(--accent)] group-hover:opacity-100",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})}),i]})}function lE(e){let{icon:t,tooltip:r,active:n,onActivate:a,badge:s}=e;return(0,l.jsxs)("button",{onClick:a,title:r,"aria-label":r,"aria-pressed":n,className:(0,E.cn)("group relative flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-[11px] font-medium transition-colors",lA(n)),children:[t,s]})}function lT(e){let{onClick:t,label:r,collapsed:n=!1}=e;return(0,l.jsx)("div",{className:(0,E.cn)("flex shrink-0 justify-center",n?"py-1.5":"p-1.5"),children:(0,l.jsx)("button",{onClick:t,title:r,"aria-label":r,className:(0,E.cn)("flex h-7 items-center justify-center rounded-md bg-[var(--secondary)]/50 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",n?"w-7":"w-full"),children:(0,l.jsx)(lC.A,{className:"h-3.5 w-3.5"})})})}function l_(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],[t,r]=(0,o.useState)(!1),[a]=(0,o.useState)(()=>(function(e){let t,{openDelay:r=300,closeDelay:n=200}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=!1,s=!1,l=!1,o=!1,i=()=>{clearTimeout(t),t=void 0},c=t=>{i(),a!==t&&(a=t,e(t))},d=(e,r)=>{i(),t=setTimeout(()=>c(e),r)};return{enter(){s=!0,l||o||(a?i():d(!0,r))},leave(){s=!1,o=!1,l||(a?d(!1,n):i())},close(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];o=e,c(!1)},setHold(e){(l=e)?i():a&&!s&&d(!1,n)},dispose:i}})(r));(0,o.useEffect)(()=>()=>a.dispose(),[a]),(0,o.useEffect)(()=>a.setHold(e),[a,e]);let s=(0,o.useMemo)(()=>({onPointerEnter:e=>{"mouse"===e.pointerType&&"function"==typeof window.matchMedia&&(null!=n||(n=window.matchMedia("(hover: hover) and (pointer: fine)")),n.matches)&&a.enter()},onPointerLeave:e=>{"mouse"===e.pointerType&&a.leave()}}),[a]);return{open:t,close:a.close,bind:s}}function lP(e){let{x:t,y:r,returnFocus:n,onRename:a,onDelete:s,onClose:i}=e,c=(0,T.kj)(),d=(0,o.useRef)(null),[u,m]=(0,o.useState)({x:t,y:r}),p=(0,o.useRef)(!1);(0,o.useEffect)(()=>{var e;function t(e){d.current&&!d.current.contains(e.target)&&i()}function r(e){"Escape"===e.key&&(i(),(null==n?void 0:n.isConnected)&&n.focus())}return null==(e=d.current)||e.focus(),document.addEventListener("pointerdown",t),document.addEventListener("keydown",r),()=>{document.removeEventListener("pointerdown",t),document.removeEventListener("keydown",r)}},[i,n]),(0,o.useLayoutEffect)(()=>{let e=d.current;if(!e)return;let n=e.getBoundingClientRect(),a=window.innerWidth,s=window.innerHeight,l=t+n.width+4>a?Math.max(4,a-n.width-4):t,o=r+n.height+4>s?Math.max(4,s-n.height-4):r;(l!==u.x||o!==u.y)&&m({x:l,y:o})},[t,r,u.x,u.y]);let h=(e,t,r)=>{(!(e.detail>0)||p.current)&&(r&&(null==n?void 0:n.isConnected)&&n.focus(),i(),t(e))},f="flex w-full items-center gap-2 px-3 py-1.5 text-xs transition-colors hover:bg-[var(--secondary)]";return(0,l.jsxs)("div",{ref:d,role:"menu",tabIndex:-1,style:{position:"fixed",left:u.x,top:u.y,zIndex:9999},onPointerDown:()=>{p.current=!0},onContextMenu:e=>e.preventDefault(),className:"min-w-[140px] rounded-md border border-[var(--border)] bg-[var(--card)] py-1 shadow-lg outline-none",children:[(0,l.jsxs)("button",{role:"menuitem",onClick:e=>h(e,a,!1),className:"".concat(f," text-[var(--foreground)]"),children:[(0,l.jsx)(eX.A,{className:"h-3.5 w-3.5"}),c("chat.sessions.rename")]}),(0,l.jsxs)("button",{role:"menuitem",onClick:e=>h(e,s,!0),className:"".concat(f," text-red-400 hover:text-red-300"),children:[(0,l.jsx)(eq.A,{className:"h-3.5 w-3.5"}),c("chat.sessions.delete")]})]})}let lM=new Map;function lF(e){let{sessions:t,currentSessionId:r,onSelect:n,onDelete:a,onNew:s,onLoadMore:i,hasMore:c=!1,loadingMore:d=!1}=e,m=(0,T.kj)(),p=ap(e=>e.enabled),h=rU(e=>e.activeProject),[f,x]=(0,o.useState)(null),[g,v]=(0,o.useState)(""),b=(0,o.useRef)(null),y=(0,o.useRef)(""),w=()=>{b.current=null,x(null),v("")},j=async e=>{if(b.current!==e)return;let t=g.trim();if(!t||t===y.current||!(null==h?void 0:h.path))return void w();b.current=null,x(null);try{await u.FH.sessionLogs.rename(e,t,h.path)}catch(e){console.error("[SessionSidebar] Rename failed:",e)}aT()},[k,N]=(0,o.useState)(null),S=(0,o.useCallback)(()=>N(null),[]),[C,A]=(0,o.useState)(!1),I=l_(null!==k||null!==f||C),_=e=>{I.close(),n(e)},P=async(e,t)=>{A(!0);try{await a(e,t)}finally{A(!1)}};(0,o.useEffect)(()=>{for(let e of(lM.clear(),t))e.title&&lM.set(e.id,e.title)},[t]);let M=(0,o.useCallback)(e=>{if(!e||"undefined"==typeof IntersectionObserver)return;let t=new IntersectionObserver(e=>{var t;(null==(t=e[0])?void 0:t.isIntersecting)&&(null==i||i())},{rootMargin:"48px"});return t.observe(e),()=>t.disconnect()},[i,t.length]),F=n2(e=>e.tabs),D=(0,o.useMemo)(()=>new Map(F.flatMap(e=>e.sessionId?[[e.sessionId,e]]:[])),[F]),L=null===r,H=e=>{let t=D.get(e.id);return e.id!==r&&!!(null==t?void 0:t.store)&&!!t.unread},z=e=>e.title||m("chat.tabs.untitled"),O=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex min-h-0 w-full flex-1 flex-col items-center gap-0.5 overflow-y-auto py-1",children:[L&&(0,l.jsx)(lE,{icon:(0,l.jsx)(aF.A,{className:"h-3.5 w-3.5"}),tooltip:m("chat.tabs.newSession"),active:!0,onActivate:()=>{}}),t.map(e=>{let t=D.get(e.id);return(0,l.jsx)(lz,{title:e.title,tooltip:z(e),active:r===e.id,store:null==t?void 0:t.store,unread:H(e),onActivate:()=>_(e.id)},e.id)})]}),s&&(0,l.jsx)(lT,{collapsed:!0,onClick:s,label:m("chat.sessions.new")})]});return(0,l.jsxs)(lN,{openKey:"halo_session_sidebar_open",widthKey:"halo_session_sidebar_width",defaultWidth:200,title:m("chat.sessions.title"),collapsedContent:O,hoverPeek:I,children:[(0,l.jsxs)("div",{className:"flex flex-1 flex-col gap-0.5 overflow-y-auto py-1",children:[L&&(0,l.jsx)(lI,{label:m("chat.tabs.newSession"),active:!0,onActivate:()=>{}}),0===t.length?(0,l.jsx)("div",{className:"px-3 py-4 text-center text-[10px] text-[var(--muted-foreground)]",children:"No sessions yet"}):t.map(e=>{var t;let n=D.get(e.id),a=f===e.id,s="string"==typeof(null==(t=e.agentSnapshot)?void 0:t.model)?" \xb7 ".concat(e.agentSnapshot.model.split(".").pop()):"";return(0,l.jsx)(lH,{store:null==n?void 0:n.store,unread:H(e),tooltip:"".concat(z(e),"\n").concat(e.exchangeCount," msgs \xb7 ").concat((0,E.fw)(e.updatedAt,m)).concat(s),active:r===e.id,onActivate:()=>_(e.id),onMenu:a?void 0:(t,r,n)=>N({session:e,x:t,y:r,returnFocus:n}),label:a?(0,l.jsx)("input",{autoFocus:!0,value:g,onChange:e=>v(e.target.value),onClick:e=>e.stopPropagation(),onKeyDown:t=>{"Enter"===t.key?(t.preventDefault(),j(e.id)):"Escape"===t.key&&(t.preventDefault(),w())},onBlur:()=>j(e.id),className:"w-full rounded border border-[var(--border)] bg-[var(--background)] px-1 py-0.5 text-[11px] text-[var(--foreground)] outline-none focus:border-blue-500"}):(0,l.jsxs)(l.Fragment,{children:[p&&e.goalSessionId&&(0,l.jsx)("span",{title:"Goal-bound worker session",className:"mr-1",children:"\uD83C\uDFAF"}),z(e)]})},e.id)}),c&&(0,l.jsx)("div",{ref:M,className:"flex items-center justify-center py-2 text-[9px] text-[var(--muted-foreground)]",children:d?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(R.A,{className:"h-2.5 w-2.5 animate-spin mr-1"})," Loading…"]}):(0,l.jsx)("span",{className:"opacity-50",children:"scroll for more"})})]}),s&&(0,l.jsx)(lT,{onClick:()=>{I.close(),s()},label:m("chat.sessions.new")}),k&&(0,l.jsx)(lP,{x:k.x,y:k.y,returnFocus:k.returnFocus,onRename:e=>{var t;return t=k.session,void(e.stopPropagation(),b.current=t.id,y.current=t.title||"",x(t.id),v(t.title||""))},onDelete:e=>{P(k.session.id,e)},onClose:S})]})}function lD(e,t){return!function(e){let t=(0,o.useCallback)(t=>e?e.subscribe(t):()=>{},[e]),r=()=>{var t;return null!=(t=null==e?void 0:e.getState().isStreaming)&&t};return(0,o.useSyncExternalStore)(t,r,r)}(e)?t?"unread":"idle":"busy"}let lL={busy:"status.busy",unread:"chat.tabs.unread",idle:"status.idle"};function lR(e){let{status:t,active:r,className:n}=e;return(0,l.jsx)("span",{"aria-hidden":!0,className:(0,E.cn)("pointer-events-none absolute bottom-0 h-0.5 rounded-full transition-colors","busy"===t&&"bg-amber-400 animate-pulse","unread"===t&&"bg-blue-500","idle"===t&&(r?"bg-emerald-500/70":"bg-emerald-500/40 group-hover:bg-emerald-500/70"),n)})}function lH(e){let{store:t,unread:r,tooltip:n,onMenu:a,...s}=e,i=(0,T.kj)(),c=lD(t,r),d=function(e){let t=(0,o.useRef)(null),r=(0,o.useRef)(!1),n=(0,o.useRef)(null),a=()=>{t.current&&clearTimeout(t.current.timer),t.current=null};return(0,o.useEffect)(()=>()=>{t.current&&clearTimeout(t.current.timer)},[]),{onPointerDown:s=>{if(r.current=!1,n.current=document.activeElement,a(),"mouse"===s.pointerType)return;let{clientX:l,clientY:o}=s;t.current={x:l,y:o,timer:setTimeout(()=>{t.current=null,r.current=!0,e(l,o,n.current)},500)}},onPointerMove:e=>{let r=t.current;r&&Math.hypot(e.clientX-r.x,e.clientY-r.y)>8&&a()},onPointerUp:a,onPointerCancel:a,onContextMenu:s=>{s.preventDefault(),r.current||(t.current&&(r.current=!0),a(),e(s.clientX,s.clientY,n.current))},onClickCapture:e=>{r.current&&(r.current=!1,e.preventDefault(),e.stopPropagation())}}}((e,t,r)=>null==a?void 0:a(e,t,r));return(0,l.jsx)(lI,{...s,menuGestures:a&&d,tooltip:"".concat(n," \xb7 ").concat(i(lL[c])),statusBar:(0,l.jsx)(lR,{status:c,active:s.active,className:"inset-x-1.5"})})}function lz(e){let{title:t,tooltip:r,active:n,store:a,unread:s,onActivate:o}=e,i=(0,T.kj)(),c=lD(a,s),d=Array.from(t.trim())[0];return(0,l.jsx)(lE,{icon:d?d.toUpperCase():(0,l.jsx)(aF.A,{className:"h-3.5 w-3.5"}),tooltip:"".concat(r," \xb7 ").concat(i(lL[c])),active:n,onActivate:o,badge:(0,l.jsx)(lR,{status:c,active:n,className:"inset-x-[20%]"})})}var lO=r(81324);let lU=aA(),lB=lU.useBus,lW=lU.bump,lK=aA(),lG=lK.useBus,lq=lK.bump;function l$(){var e,t;let r=nJ(e=>e.selectedAgentId),n=nJ(e=>e.sessionId),a=nJ(e=>e.isStreaming),s=rU(e=>e.activeProject),[i,c]=(0,o.useState)([]),[d,m]=(0,o.useState)(!1),p=(0,o.useRef)(null),h=(0,T.kj)(),f=lB(e=>e.version);(0,o.useEffect)(()=>{(null==s?void 0:s.path)&&u.FH.agentConfigs.list(s.path).then(e=>{let t=e.agents.filter(e=>!e.overridden&&!e.disabled&&!e.internal).map(e=>{var t;return{id:e.id,name:e.name,scope:e.scope,priority:null!=(t=e.priority)?t:0}}).sort((e,t)=>t.priority-e.priority||e.name.localeCompare(t.name));c(t),nJ.getState().setUsableAgentCount(t.length);let r=nJ.getState();!r.sessionId&&"default"===r.selectedAgentId&&t[0]&&"default"!==t[0].id&&r.setSelectedAgentId(t[0].id)}).catch(()=>{})},[null==s?void 0:s.path,f]);let x=lG(e=>e.version);(0,o.useEffect)(()=>{(null==s?void 0:s.path)&&sZ(s.path,null!=n?n:void 0,null!=r?r:void 0).catch(()=>{})},[null==s?void 0:s.path,n,r,f,x]),(0,o.useEffect)(()=>{if(!d)return;let e=e=>{p.current&&!p.current.contains(e.target)&&m(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[d]);let g=!!n,v=null!=(e=i.find(e=>e.id===r))?e:i[0],b=null!=(t=null==v?void 0:v.name)?t:r;return i.length<=1?null:(0,l.jsxs)("div",{ref:p,className:"relative",children:[(0,l.jsxs)("button",{onClick:()=>!g&&!a&&m(!d),disabled:g||a,title:h(g?"chat.agent.locked":"chat.agent.select"),className:(0,E.cn)("flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium transition-colors",g?"text-[var(--muted-foreground)] opacity-50 cursor-default":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),children:[(0,l.jsx)(aL.A,{className:(0,E.cn)("h-3 w-3",!g&&!a&&"text-[var(--primary)]")}),(0,l.jsx)("span",{className:"max-w-[80px] truncate",children:b}),!g&&(0,l.jsx)(M.A,{className:"h-2.5 w-2.5"})]}),d&&(0,l.jsx)("div",{className:"absolute bottom-full left-0 mb-1 min-w-[160px] max-h-60 overflow-y-auto rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-lg z-30",children:i.map(e=>(0,l.jsxs)("button",{onClick:()=>{nJ.getState().setSelectedAgentId(e.id),m(!1)},className:(0,E.cn)("flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors",e.id===r?"bg-[var(--accent)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)(aL.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{className:"truncate",children:e.name})]},"".concat(e.id,":").concat(e.scope)))})]})}function lY(){let{onTitleChange:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,T.kj)(),{messages:r,sendMessage:n,isStreaming:a,deleteSession:s,stopGeneration:i,interruptGeneration:c,pendingMessages:m,removePendingMessage:h,handleCommand:f,sessionId:x}=function(){let e=(0,T.kj)(),t=nJ(e=>e.messages),r=nJ(e=>e.isStreaming),n=nJ(e=>e.sessionId),a=nJ(e=>e.pendingMessages),s=rU(e=>e.activeProject);(0,o.useEffect)(()=>{s&&function(e){var t;let r=n2.getState();if(r.projectId===e)return;let n=function(e){try{let t=localStorage.getItem(n5(e));if(t){let e=JSON.parse(t);return"string"==typeof e.active&&e.active.length>0?e.active:null}for(let t of["halo_session_".concat(e),"halo_session_id"]){let e=localStorage.getItem(t);if(e)return localStorage.removeItem(t),e}}catch(e){}return null}(e),a=n?{tabId:(0,E.$C)(),sessionId:n}:n1(at(null));for(let n of(n2.setState({projectId:e,tabs:[a],activeTabId:a.tabId}),ar(null!=(t=an(a.tabId))?t:""),r.tabs))n.store&&nW(n.store);n8.clear()}(s.id)},[null==s?void 0:s.id]);let l=(0,o.useCallback)(()=>{let{activeTab:e,selectedText:t,selectedRange:r,tabs:n,contextEnabled:a}=d.Uw.getState();if(!a)return"";let s=[];if(e&&s.push("[Currently viewing: ".concat(e,"]")),t&&t.trim()&&e){let n=r?":".concat(r.startLine,"-").concat(r.endLine):"";s.push("[Selected text in ".concat(e).concat(n,"]\n```\n").concat(t,"\n```"))}return s.length>0?s.join("\n")+"\n\n":""},[]),i=(0,o.useCallback)((t,r,a)=>{var o;if(!s)return;let i=null!=n?n:(0,E.$C)();n||ai(i);let c=l(),d=[];c&&d.push(c.trim()),(null==a?void 0:a.length)&&d.push("[Referenced files:\n".concat(a.map(e=>" - ".concat(e)).join("\n"),"]"));let{screenSource:u,cameraSource:m}=nJ.getState(),h=se(),f=!!u&&!!h,x=!!m&&!!st();f&&x?d.push(e("capture.bothLlmPrompt",{name:u.name})):x?d.push(e("capture.cameraLlmPrompt")):f&&d.push(e(h.web?"capture.webLlmPrompt":"capture.llmPrompt",{name:u.name})),tk=!1,t_(s.id)&&d.push((o=function(){let e=tb;return tb=[],e}(),"[Face open: ".concat(th).concat(o.length?" \xb7 last: ".concat(o.join(", ")):"","]")));let g=(d.length>0?d.join("\n")+"\n\n":"")+t.trim(),v=nJ.getState(),b=t.trim();if(null==a?void 0:a.length){let e=a.map(e=>"@".concat(e.split("/").pop())).join(" ");b="".concat(e," ").concat(b)}if(null==r?void 0:r.length){let t=e("chat.imageSent",{n:r.length});b=b?"".concat(t,"\n").concat(b):t}let y=(0,E.$C)();v.addMessage({id:(0,E.$C)(),role:"user",content:b,timestamp:Date.now(),clientMsgId:y,...(null==r?void 0:r.length)?{localImages:r.map(e=>"data:".concat(e.mimeType,";base64,").concat(e.data))}:{}}),v.messages.some(e=>e.streaming&&"assistant"===e.role&&!e.taskId)||v.addMessage({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0});let{selectedAgentId:w,accessLevel:j}=nJ.getState();p.send({type:"chat",sessionId:i,projectId:s.id,message:g,clientMsgId:y,accessLevel:j,..."default"!==w?{agentId:w}:{},...(null==r?void 0:r.length)?{images:r}:{}})},[n,s,l]),c=(0,o.useCallback)((e,t,r)=>{if(e.trim()||(null==t?void 0:t.length)){if(!s)return void console.warn("[useChat] No active project selected");i(e,t,r)}},[s,i,n]),u=(0,o.useCallback)(()=>{p.send({type:"chat:stop",sessionId:n})},[n]),m=(0,o.useCallback)(()=>{p.send({type:"chat:interrupt",sessionId:n})},[n]),h=(0,o.useCallback)(e=>{nJ.getState().removePendingMessage(e)},[]);(0,o.useEffect)(()=>{if(r)return;let e=nJ.getState().shiftPendingMessage();if(e){let t=setTimeout(()=>i(e),100);return()=>clearTimeout(t)}},[r,i]);let f=(0,o.useCallback)(e=>{s&&(p.send({type:"session:delete",sessionId:e,projectId:s.path}),ao(e),aN(e))},[s]),x=(0,o.useCallback)((e,t)=>{if(!s)return;if("/clear"===e.name||"/session"===e.name&&"new"===t.trim())return void al();let r=null!=n?n:(0,E.$C)();n||ai(r);let a=e.name.slice(1),l=nJ.getState().selectedAgentId,o={type:"command:".concat(a),sessionId:r,projectId:s.id,..."default"!==l?{agentId:l}:{}};t.trim()&&(o.message=t.trim()),p.send(o),nJ.getState().addMessage({id:(0,E.$C)(),role:"system",content:"Executing ".concat(e.name).concat(t.trim()?" ".concat(t.trim()):"","..."),timestamp:Date.now()})},[s,n]);return{messages:t,sendMessage:c,isStreaming:r,sessionId:n,deleteSession:f,stopGeneration:u,interruptGeneration:m,pendingMessages:a,removePendingMessage:h,handleCommand:x}}(),g=n2(e=>e.tabs.find(t=>t.tabId===e.activeTabId)),{sessions:v,remove:b,loadMore:y,hasMore:w,loadingMore:j}=function(){let e=rU(e=>e.activeProject);return function(e){let[t,r]=(0,o.useState)([]),[n,a]=(0,o.useState)(null),[s,l]=(0,o.useState)(!1),i=aE(e=>e.version),c=(0,o.useCallback)(async()=>{if(!e){r([]),a(null);return}try{let t=await u.FH.sessionLogs.list(e,{rootOnly:!0,limit:30});r(t.sessions),a(t.nextCursor)}catch(e){r([]),a(null)}},[e]);(0,o.useEffect)(()=>{c()},[c,i]);let d=(0,o.useCallback)(async()=>{if(null!==n&&!s){l(!0);try{if(!e)return;let t=await u.FH.sessionLogs.list(e,{rootOnly:!0,limit:30,cursor:n}),s=t.sessions;r(e=>{let t=new Set(e.map(e=>e.id));return[...e,...s.filter(e=>!t.has(e.id))]}),a(t.nextCursor)}catch(e){console.error("[SessionList] loadMore failed:",e)}finally{l(!1)}}},[e,n,s]);return{sessions:t,refresh:c,remove:(0,o.useCallback)(async t=>{try{await u.FH.sessionLogs.delete(t,e),r(e=>e.filter(e=>e.id!==t)),aN(t),aT()}catch(e){console.error("[SessionList] Delete failed:",e)}},[e]),loadMore:d,hasMore:null!==n,loadingMore:s}}(null==e?void 0:e.path)}(),k=(0,o.useMemo)(()=>{var e;return null===x?t("chat.tabs.newSession"):(null==(e=v.find(e=>e.id===x))?void 0:e.title)||t("chat.tabs.untitled")},[x,v,t]);(0,o.useEffect)(()=>{null==e||e(k)},[k,e]);let[N,S]=(0,o.useState)(()=>"1"===localStorage.getItem("halo_chat_debug"));(0,o.useEffect)(()=>{localStorage.setItem("halo_chat_debug",N?"1":"0")},[N]);let C=rU(e=>{var t;return null==(t=e.activeProject)?void 0:t.id});(0,o.useEffect)(()=>{C&&ah(C)},[C]);let A=(0,o.useCallback)(async(e,r)=>{r.stopPropagation(),await (0,E.fN)(t("chat.sessions.deleteConfirm"))&&(await b(e),s(e))},[s,b,t]),I=(0,o.useMemo)(()=>N?r.filter(e=>!e.taskId):r.filter(nA),[r,N]);return(0,l.jsxs)("div",{className:"flex h-full min-h-0 bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-full min-w-0 flex-1 flex-col",children:[g&&(0,l.jsx)(lJ,{tab:g,sessionId:x,mainMessages:I,debugMode:N},g.tabId),(0,l.jsxs)("div",{className:"shrink-0",children:[(0,l.jsx)(lg,{currentSessionId:x,onJump:aa}),(0,l.jsx)(lf,{onSend:n,isStreaming:a,onStop:i,onInterrupt:c,pendingMessages:m,onRemovePending:h,onCommand:f,onCompact:()=>f({name:"/session",description:"",type:"server"},"compact"),agentControl:(0,l.jsx)(l$,{}),debugControl:(0,l.jsx)("button",{onClick:()=>S(!N),"aria-pressed":N,className:(0,E.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors hover:bg-[var(--secondary)]",N?"text-[var(--primary)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),title:"Debug mode: show all messages including tool calls and usage",children:(0,l.jsx)(lO.A,{className:"h-4 w-4"})})})]})]}),(0,l.jsx)(lF,{sessions:v,currentSessionId:x,onSelect:aa,onDelete:A,onNew:()=>al(),onLoadMore:y,hasMore:w,loadingMore:j})]})}function lJ(e){var t,r;let{tab:n,sessionId:a,mainMessages:s,debugMode:i}=e,c=(0,T.kj)(),d=n.tabId,u=(0,o.useRef)(null),[m]=(0,o.useState)(()=>n8.get(d)),[p,h]=(0,o.useState)(null),f=!!n.loading,x=null!=(t=n.attempt)?t:0;(0,o.useEffect)(()=>{if(!f)return;let e=setTimeout(()=>h(x),3e4);return()=>clearTimeout(e)},[f,x]);let g=f&&p===x,v=(0,o.useRef)(null!=(r=null==m?void 0:m.userScrolledUp)&&r),b=(0,o.useMemo)(()=>{let e=0;for(let t of s)"user"===t.role&&e++;return e},[s]),y=Math.max(0,b-30),[w,j]=(0,o.useState)(()=>({sessionId:a,hiddenTurns:m?Math.min(m.hiddenTurns,y):y,seenTurns:b}));w.sessionId!==a?j({sessionId:a,hiddenTurns:y,seenTurns:b}):(w.hiddenTurns>y||0===w.seenTurns&&b>0)&&j({sessionId:w.sessionId,hiddenTurns:y,seenTurns:b});let k=w.hiddenTurns;(0,o.useLayoutEffect)(()=>{w.seenTurns!==b&&j(e=>({sessionId:e.sessionId,hiddenTurns:v.current?e.hiddenTurns:Math.max(0,b-30),seenTurns:b}))}),(0,o.useEffect)(()=>{n6(d,{hiddenTurns:k})},[d,k]);let N=(0,o.useMemo)(()=>{if(k<=0)return s;let e=0;for(let t=0;t<s.length;t++)if("user"===s[t].role&&++e>k)return s.slice(t);return s},[s,k]),S=(0,o.useRef)(null),C=(0,o.useCallback)(()=>{let e=u.current;S.current=e?e.scrollHeight-e.scrollTop:null,j(e=>({...e,hiddenTurns:Math.max(0,e.hiddenTurns-30)}))},[]);(0,o.useLayoutEffect)(()=>{let e=u.current,t=S.current;e&&null!==t&&(e.scrollTop=e.scrollHeight-t,S.current=null)},[k]),(0,o.useLayoutEffect)(()=>{let e=u.current;e&&(e.scrollTop=(null==m?void 0:m.userScrolledUp)?m.scrollTop:e.scrollHeight)},[m]);let A=sa(u,v),I=(0,o.useRef)(null),E=(0,o.useRef)(!0),_=(0,o.useCallback)(()=>{let e=u.current;I.current=e?e.scrollHeight-e.scrollTop:null,n0()},[]),P=k>0;(0,o.useEffect)(()=>{let e=u.current;if(!e)return;let t=()=>{n6(d,{scrollTop:e.scrollTop,userScrolledUp:v.current}),e.scrollTop>200?E.current=!0:e.scrollTop<80&&E.current&&(E.current=!1,P?C():_())};return e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)},[d,_,C,P]);let M=nV(e=>e.messages);return(0,o.useEffect)(()=>{let e=u.current,t=I.current;e&&null!==t&&(e.scrollTop=e.scrollHeight-t,I.current=null)},[M]),(0,o.useEffect)(()=>{A()},[s,A]),(0,o.useEffect)(()=>{let e=u.current;if(!e||"undefined"==typeof ResizeObserver)return;let t=new ResizeObserver(A);return t.observe(e),()=>t.disconnect()},[A]),(0,l.jsx)("div",{ref:u,className:"flex-1 min-h-0 overflow-y-auto",children:f&&n.sessionId?(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center gap-2 py-8 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)(R.A,{className:"h-3.5 w-3.5 animate-spin mr-1.5"})," Loading session..."]}),g&&(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{children:"Slow network — still loading…"}),(0,l.jsx)("button",{onClick:()=>(function(e){var t;let r=n9(t=>t.tabId===e);(null==r?void 0:r.sessionId)&&(n7(e,{loading:!0,attempt:(null!=(t=r.attempt)?t:0)+1}),ar(r.sessionId))})(d),className:"text-[var(--primary)] hover:underline",children:"Retry"})]})]}):0===s.length?(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center",children:[(0,l.jsx)("div",{className:"rounded-full bg-[var(--secondary)] p-3",children:(0,l.jsx)(aF.A,{className:"h-6 w-6 text-[var(--muted-foreground)]"})}),(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"text-sm font-medium text-[var(--foreground)]",children:"Start a conversation"}),(0,l.jsx)("p",{className:"mt-1 text-xs text-[var(--muted-foreground)]",children:"Describe what you want to build, and agents will work together to deliver it."})]})]}):(0,l.jsxs)(l.Fragment,{children:[k>0?(0,l.jsx)("button",{onClick:C,className:"flex w-full items-center justify-center gap-1.5 border-b border-[var(--border)]/50 px-3 py-2 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:c("chat.window.showEarlier",{count:k})}):(0,l.jsx)(lb,{onLoadOlder:_,scrollRef:u}),(0,l.jsx)(sc,{messages:N,debugMode:i,userOrdinalBase:k})]})})}var lZ=r(86557),lV=r(21379);let lX="undefined"!=typeof navigator&&/Mac|iPhone|iPad/.test(navigator.userAgent);var lQ=r(65146),l0=r(77408),l1=r(89678);function l3(e){let{x:t,y:r,term:n,onClose:a}=e,s=(0,T.kj)(),i=(0,o.useRef)(null),[c,d]=(0,o.useState)({x:t,y:r}),[u]=(0,o.useState)(()=>n.hasSelection()),[m,p]=(0,o.useState)(!1);(0,o.useEffect)(()=>{var e;function t(e){i.current&&!i.current.contains(e.target)&&a()}function r(e){"Escape"===e.key&&(a(),n.focus())}return null==(e=i.current)||e.focus(),document.addEventListener("mousedown",t),document.addEventListener("keydown",r),()=>{document.removeEventListener("mousedown",t),document.removeEventListener("keydown",r)}},[a,n]),(0,o.useLayoutEffect)(()=>{let e=i.current;if(!e)return;let n=e.getBoundingClientRect(),a=window.innerWidth,s=window.innerHeight,l=t+n.width+4>a?Math.max(4,a-n.width-4):t,o=r+n.height+4>s?Math.max(4,s-n.height-4):r;(l!==c.x||o!==c.y)&&d({x:l,y:o})},[t,r,c.x,c.y]);let h=()=>{n.focus(),a()},f=async()=>{let e=n.getSelection();try{await navigator.clipboard.writeText(e)}catch(e){n.focus(),document.execCommand("copy")}h()},x=async()=>{try{n.paste(await navigator.clipboard.readText()),h()}catch(e){p(!0)}},g=[{key:"copy",icon:ss.A,label:s("terminal.menu.copy"),hint:lX?"⌘C":"Ctrl+C",disabled:!u,run:f},{key:"paste",icon:lQ.A,label:s("terminal.menu.paste"),hint:lX?"⌘V":"Ctrl+V",run:x},{key:"selectAll",icon:l0.A,label:s("terminal.menu.selectAll"),run:()=>{n.selectAll(),h()}},{key:"clear",icon:l1.A,label:s("terminal.menu.clear"),run:()=>{n.clear(),h()}}];return(0,l.jsx)("div",{ref:i,tabIndex:-1,style:{position:"fixed",left:c.x,top:c.y,zIndex:9999},onContextMenu:e=>e.preventDefault(),className:"min-w-[160px] rounded-md border border-[var(--border)] bg-[var(--card)] py-1 shadow-lg outline-none",children:g.map(e=>{let t=e.icon;return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{disabled:e.disabled,onClick:()=>{e.run()},className:"flex w-full items-center gap-2 px-3 py-1.5 text-xs text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)] disabled:pointer-events-none disabled:opacity-40",children:[(0,l.jsx)(t,{className:"h-3.5 w-3.5"}),(0,l.jsx)("span",{className:"flex-1 text-left",children:e.label}),e.hint&&(0,l.jsx)("span",{className:"pl-4 text-[10px] text-[var(--muted-foreground)]",children:e.hint})]}),"paste"===e.key&&m&&(0,l.jsx)("div",{className:"max-w-[220px] px-3 pb-1.5 text-[10px] text-[var(--muted-foreground)]",children:s("terminal.menu.pasteHint",{key:lX?"⌘V":"Ctrl+V"})}),"paste"===e.key&&(0,l.jsx)("div",{className:"my-1 border-t border-[var(--border)]"})]},e.key)})})}class l2{fire(e){for(let t of[...this.listeners])t(e)}dispose(){this.listeners.clear()}constructor(){this.listeners=new Set,this.event=e=>(this.listeners.add(e),{dispose:()=>this.listeners.delete(e)})}}class l5{_register(e){return this.disposables.push(e),e}dispose(){for(let e of this.disposables.splice(0))e.dispose()}constructor(){this.disposables=[]}}let l4=/\b(vim|vi|nano|tmux)\b/i,l8=/^\x1b\[[0-9;]*m/,l6=/^\x1b\[?([0-9]*)(;[35])?O?([DC])/,l9=/[^a-z0-9]/i,l7=/^(\x1b\[(\??25[hl]|\??[0-9;]+n))+/,oe=e=>e._core,ot=e=>{};class or{get x(){return this._x}get y(){return this._y}get baseY(){return this._baseY}get coordinate(){return{x:this._x,y:this._y,baseY:this._baseY}}getLine(){return this._buffer.getLine(this._y+this._baseY)}getCell(e){var t;return null==(t=this.getLine())?void 0:t.getCell(this._x,e)}moveTo(e){return this._x=e.x,this._y=e.y+e.baseY-this._baseY,this.moveInstruction()}clone(){let e=new or(this.rows,this.cols,this._buffer);return e.moveTo(this),e}move(e,t){return this._x=e,this._y=t,this.moveInstruction()}shift(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return this._x+=e,this._y+=t,this.moveInstruction()}moveInstruction(){return this._y>=this.rows?(this._baseY+=this._y-(this.rows-1),this._y=this.rows-1):this._y<0&&(this._baseY-=this._y,this._y=0),"\x1b[".concat(this._y+1,";").concat(this._x+1,"H")}constructor(e,t,r){this.rows=e,this.cols=t,this._buffer=r,this._x=0,this._y=1,this._baseY=1,this._x=r.cursorX,this._y=r.cursorY,this._baseY=r.baseY}}let on=(e,t,r)=>{let n,a=!1;for(r<0&&t.shift(-1);t.x>=0;){if(!(null==(n=t.getCell(n))?void 0:n.getCode()))return;let e=n.getChars();if(l9.test(e)){if(a)break}else a=!0;t.shift(r)}r<0&&t.shift(1)};class oa{get remaining(){return this._input.length-this.index}get eof(){return this.index===this._input.length}get rest(){return this._input.slice(this.index)}eatChar(e){if(this._input[this.index]===e)return this.index++,e}eatStr(e){if(this._input.slice(this.index,e.length)===e)return this.index+=e.length,e}eatGradually(e){let t=this.index;for(let r=0;r<e.length;r++){if(r>0&&this.eof)return 2;if(!this.eatChar(e[r]))return this.index=t,1}return 0}eatRe(e){let t=e.exec(this._input.slice(this.index));if(t)return this.index+=t[0].length,t}eatCharCode(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e+1,r=this._input.charCodeAt(this.index);if(!(r<e)&&!(r>=t))return this.index++,r}constructor(e){this._input=e,this.index=0}}class os{apply(){return""}rollback(){return""}rollForwards(){return""}matches(){return 1}constructor(){this.clearAfterTimeout=!1}}class ol{apply(e,t){return this._appliedCursor=t.clone(),this.inner.apply(e,this._appliedCursor),""}rollback(e){return this.inner.rollback(e.clone()),""}rollForwards(e,t){return this._appliedCursor&&e.moveTo(this._appliedCursor),t}matches(e){return this.inner.matches(e)}constructor(e){this.inner=e}}class oo{apply(e,t){let r=t.getCell();return this.appliedAt=r?{pos:t.coordinate,oldAttributes:of(r),oldChar:r.getChars()}:{pos:t.coordinate,oldAttributes:"",oldChar:""},t.shift(1),this._style.apply+this._char+this._style.undo}rollback(e){if(!this.appliedAt)return"";let{oldAttributes:t,oldChar:r,pos:n}=this.appliedAt;return e.moveTo(n)+(r?"".concat(t).concat(r).concat(e.moveTo(n)):"\x1b[X")}rollForwards(e,t){return this.appliedAt?e.clone().moveTo(this.appliedAt.pos)+t:""}matches(e,t){let r=e.index;for(;e.eatRe(l8););if(e.eof)return 2;if(e.eatChar(this._char))return 0;if(t instanceof oo){let r=e.eatGradually("\b".concat(t._char).concat(this._char));if(1!==r)return r}return e.index=r,1}constructor(e,t){this._style=e,this._char=t,this.affectsStyle=!0}}class oi{apply(e,t){var r;let n=!(null==(r=t.getLine())?void 0:r.translateToString(void 0,t.x).trim()),a=t.coordinate,s=t.shift(-1),l=t.getCell();return this._appliedAt=l?{isLastChar:n,pos:a,oldAttributes:of(l),oldChar:l.getChars()}:{isLastChar:n,pos:a,oldAttributes:"",oldChar:""},s+"\x1b[X"}rollback(e){if(!this._appliedAt)return"";let{oldAttributes:t,oldChar:r,pos:n}=this._appliedAt;return r?t+r+e.moveTo(n)+of(oe(this._terminal)._inputHandler._curAttrData):e.moveTo(n)+"\x1b[X"}rollForwards(){return""}matches(e){var t;if(null==(t=this._appliedAt)?void 0:t.isLastChar){let t=e.eatGradually("\b\x1b[K");if(1!==t)return t;let r=e.eatGradually("\b \b");if(1!==r)return r}return 1}constructor(e){this._terminal=e}}class oc{apply(e,t){return this._prevPosition=t.coordinate,t.move(0,t.y+1),"\r\n"}rollback(e){return this._prevPosition?e.moveTo(this._prevPosition):""}rollForwards(){return""}matches(e){return e.eatGradually("\r\n")}}class od extends oc{apply(e,t){return this._prevPosition=t.coordinate,t.move(0,t.y+1)," \r"}matches(e){let t=e.eatGradually(" \r");return 1!==t?2===e.eatGradually("\x1b[K")?2:t:e.eatGradually("\r\n")}}class ou{apply(e,t){let r=t.x,n=t.getCell(),a=n?of(n):"",{_amount:s,_direction:l,_moveByWords:o}=this,i="D"===l?-1:1,c=t.clone();if(o)for(let t=0;t<s;t++)on(e,c,i);else c.shift(i*s);return this._applied={amount:Math.abs(t.x-c.x),prevPosition:r,prevAttrs:a,rollForward:t.moveTo(c)},this._applied.rollForward}rollback(e){return this._applied?e.move(this._applied.prevPosition,e.y)+this._applied.prevAttrs:""}rollForwards(){return""}matches(e){if(!this._applied)return 1;let t=this._direction,{amount:r,rollForward:n}=this._applied;if(e.eatStr("\x1b[".concat(t).repeat(r))||"D"===t&&e.eatStr("\b".repeat(r)))return 0;if(n){let t=e.eatGradually(n);if(1!==t)return t}return e.eatGradually("\x1b[".concat(r).concat(t))}constructor(e,t,r){this._direction=e,this._moveByWords=t,this._amount=r}}class om extends l5{get accuracy(){let e=0;for(let[,t]of this._stats)t&&e++;return e/(this._stats.length||1)}get sampleSize(){return this._stats.length}get latency(){let e=this._stats.filter(e=>{let[,t]=e;return t}).map(e=>{let[t]=e;return t}).sort((e,t)=>e-t);return{count:e.length,min:e[0],median:e[Math.floor(e.length/2)],max:e[e.length-1]}}get maxLatency(){let e=-1/0;for(let[t,r]of this._stats)r&&(e=Math.max(t,e));return e}_pushStat(e,t){let r=this._addedAtTime.get(t);this._stats[this._index]=[Date.now()-r,e],this._index=(this._index+1)%24,this._changeEmitter.fire()}constructor(e){super(),this._stats=[],this._index=0,this._addedAtTime=new WeakMap,this._changeEmitter=this._register(new l2),this.onChange=this._changeEmitter.event,this._register(e.onPredictionAdded(e=>this._addedAtTime.set(e,Date.now()))),this._register(e.onPredictionSucceeded(this._pushStat.bind(this,!0))),this._register(e.onPredictionFailed(this._pushStat.bind(this,!1)))}}class op extends l5{get _currentGenerationPredictions(){return this._expected.filter(e=>{let{gen:t}=e;return t===this._expected[0].gen}).map(e=>{let{p:t}=e;return t})}get isShowingPredictions(){return this._showPredictions}get length(){return this._expected.length}setShowPredictions(e){if(e===this._showPredictions)return;this._showPredictions=e;let t=this._getActiveBuffer();if(!t)return;let r=this._currentGenerationPredictions;e?(this.clearCursor(),this._style.expectIncomingStyle(r.reduce((e,t)=>t.affectsStyle?e+1:e,0)),this.terminal.write(r.map(e=>e.apply(t,this.physicalCursor(t))).join(""))):this.terminal.write(r.reverse().map(e=>e.rollback(this.physicalCursor(t))).join(""))}undoAllPredictions(){let e=this._getActiveBuffer();this._showPredictions&&e&&this.terminal.write(this._currentGenerationPredictions.reverse().map(t=>t.rollback(this.physicalCursor(e))).join("")),this._expected=[]}beforeServerInput(e){let t=e;if(this._inputBuffer&&(e=this._inputBuffer+e,this._inputBuffer=void 0),!this._expected.length)return this._clearPredictionState(),e;let r=this._getActiveBuffer();if(!r)return this._clearPredictionState(),e;let n="",a=new oa(e),s=this._expected[0].gen,l=()=>{let e=a.eatRe(l7);e&&(n+=e[0])};e:for(;this._expected.length&&a.remaining>0;){l();let{p:t,gen:i}=this._expected[0],c=this.physicalCursor(r),d=a.index;switch(t.matches(a,this._lookBehind)){case 0:{let l=e.slice(d,a.index);if(i===s){var o;n+=null==(o=t.rollForwards)?void 0:o.call(t,c,l)}else t.apply(r,this.physicalCursor(r)),n+=l;this._succeededEmitter.fire(t),this._lookBehind=t,this._expected.shift();break}case 2:this._inputBuffer=e.slice(d),a.index=e.length;break e;case 1:{let e=this._expected.filter(e=>e.gen===s).reverse();n+=e.map(e=>{let{p:t}=e;return t.rollback(this.physicalCursor(r))}).join(""),e.some(e=>e.p.affectsStyle)&&(n+=of(oe(this.terminal)._inputHandler._curAttrData)),this._clearPredictionState(),this._failedEmitter.fire(t);break e}}}if(l(),a.eof||(n+=a.rest,this._clearPredictionState()),this._expected.length&&s!==this._expected[0].gen)for(let{p:e,gen:t}of this._expected){if(t!==this._expected[0].gen)break;e.affectsStyle&&this._style.expectIncomingStyle(),n+=e.apply(r,this.physicalCursor(r))}return this._showPredictions?0===n.length||n===e?n:(this._physicalCursor&&(n+=this._physicalCursor.moveInstruction()),n="\x1b[?25l"+n+"\x1b[?25h"):t}reset(){this._clearPredictionState(),this._inputBuffer=void 0}_clearPredictionState(){this._expected=[],this.clearCursor(),this._lookBehind=void 0}addPrediction(e,t){if(this._expected.push({gen:this._currentGen,p:t}),this._addedEmitter.fire(t),this._currentGen!==this._expected[0].gen)return t.apply(e,this.tentativeCursor(e)),!1;let r=t.apply(e,this.physicalCursor(e));return this._tenativeCursor=void 0,this._showPredictions&&r&&(t.affectsStyle&&this._style.expectIncomingStyle(),this.terminal.write(r)),!0}addBoundary(e,t){let r=!1;return e&&t&&(r=this.addPrediction(e,new ol(t)),t.apply(e,this.tentativeCursor(e))),this._currentGen++,r}peekEnd(){var e;return null==(e=this._expected[this._expected.length-1])?void 0:e.p}peekStart(){var e;return null==(e=this._expected[0])?void 0:e.p}physicalCursor(e){return this._physicalCursor||(this._showPredictions&&ot(this.terminal),this._physicalCursor=new or(this.terminal.rows,this.terminal.cols,e)),this._physicalCursor}tentativeCursor(e){return this._tenativeCursor||(this._tenativeCursor=this.physicalCursor(e).clone()),this._tenativeCursor}clearCursor(){this._physicalCursor=void 0,this._tenativeCursor=void 0}_getActiveBuffer(){let e=this.terminal.buffer.active;return"normal"===e.type?e:void 0}constructor(e,t){super(),this.terminal=e,this._style=t,this._expected=[],this._currentGen=0,this._showPredictions=!1,this._addedEmitter=this._register(new l2),this.onPredictionAdded=this._addedEmitter.event,this._failedEmitter=this._register(new l2),this.onPredictionFailed=this._failedEmitter.event,this._succeededEmitter=this._register(new l2),this.onPredictionSucceeded=this._succeededEmitter.event}}let oh=e=>{if(e.isAttributeDefault())return[0];let t=[];return e.isBold()&&t.push(1),e.isDim()&&t.push(2),e.isItalic()&&t.push(3),e.isUnderline()&&t.push(4),e.isBlink()&&t.push(5),e.isInverse()&&t.push(7),e.isInvisible()&&t.push(8),e.isFgRGB()&&t.push(38,2,e.getFgColor()>>>24,e.getFgColor()>>>16&255,255&e.getFgColor()),e.isFgPalette()&&t.push(38,5,e.getFgColor()),e.isFgDefault()&&t.push(39),e.isBgRGB()&&t.push(48,2,e.getBgColor()>>>24,e.getBgColor()>>>16&255,255&e.getBgColor()),e.isBgPalette()&&t.push(48,5,e.getBgColor()),e.isBgDefault()&&t.push(49),t},of=e=>"\x1b[".concat(oh(e).join(";"),"m"),ox=(e,t,r)=>{if(e.length-t>r.length)return!1;for(let n=0;n<r.length;n++,t++)if(r[t]!==e[t])return!1;return!0},og=e=>"number"==typeof e,ov=(e,t)=>{let r=[0,0,-1,0,0,0],n=0,a=0;do{let s=e[t+a];if(r[a+n]=og(s)?s:s[0],!og(s)){let e=0;do 5===r[1]&&(n=1),r[a+e+1+n]=s[e];while(++e<s.length&&e+a+1+n<r.length);break}if(5===r[1]&&a+n>=2||2===r[1]&&a+n>=5)break;r[1]&&(n=1)}while(++a+t<e.length&&a+n<r.length);return a};class ob{static _compileArgs(e){return"\x1b[".concat(e.join(";"),"m")}expectIncomingStyle(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this._expectedIncomingStyles+=2*e}startTracking(){this.stopTracking(),this._expectedIncomingStyles=0,this._onDidWriteSGR(oh(oe(this._terminal)._inputHandler._curAttrData)),this._csiHandler=this._terminal.parser.registerCsiHandler({final:"m"},e=>(this._onDidWriteSGR(e),!1))}debounceStopTracking(){clearTimeout(this._stopTrackingTimer),this._stopTrackingTimer=setTimeout(()=>this.stopTracking(),2e3)}dispose(){this.stopTracking()}stopTracking(){var e;clearTimeout(this._stopTrackingTimer),this._stopTrackingTimer=void 0,null==(e=this._csiHandler)||e.dispose(),this._csiHandler=void 0}_onDidWriteSGR(e){let t=this._undoArgs;for(let t=0;t<e.length;){let r=e[t],n=og(r)?r:r[0];if(this._expectedIncomingStyles){if(ox(e,t,this._undoArgs)){this._expectedIncomingStyles--,t+=this._undoArgs.length;continue}if(ox(e,t,this._applyArgs)){this._expectedIncomingStyles--,t+=this._applyArgs.length;continue}}let a=38===n||48===n||58===n?ov(e,t):1;switch(this._applyArgs[0]){case 1:2===n?this._undoArgs=[22,2]:(22===n||0===n)&&(this._undoArgs=[22]);break;case 2:1===n?this._undoArgs=[22,1]:(22===n||0===n)&&(this._undoArgs=[22]);break;case 38:0===n||39===n||100===n?this._undoArgs=[39]:(n>=30&&n<=38||n>=90&&n<=97)&&(this._undoArgs=e.slice(t,t+a));break;default:n===this._applyArgs[0]?this._undoArgs=this._applyArgs:0===n&&(this._undoArgs=this._originalUndoArgs)}t+=a}t!==this._undoArgs&&(this.undo=ob._compileArgs(this._undoArgs))}onUpdate(e){let{applyArgs:t,undoArgs:r}=this._getArgs(e);this._applyArgs=t,this._undoArgs=this._originalUndoArgs=r,this.apply=ob._compileArgs(this._applyArgs),this.undo=ob._compileArgs(this._undoArgs)}_getArgs(e){switch(e){case"bold":return{applyArgs:[1],undoArgs:[22]};case"dim":return{applyArgs:[2],undoArgs:[22]};case"italic":return{applyArgs:[3],undoArgs:[23]};case"underlined":return{applyArgs:[4],undoArgs:[24]};case"inverted":return{applyArgs:[7],undoArgs:[27]}}}constructor(e,t){this._terminal=t,this._expectedIncomingStyles=0,this.onUpdate(e)}}class oy extends l5{activate(e){let t=this._typeaheadStyle=this._register(new ob("dim",e)),r=this._timeline=this._register(new op(e,this._typeaheadStyle)),n=this.stats=this._register(new om(this._timeline));r.setShowPredictions(0===this._typeaheadThreshold),this._register(e.onData(e=>this._onUserData(e))),this._register(e.onTitleChange(e=>{this._terminalTitle=e,this._reevaluatePredictorState(n,r)})),this._register(e.onResize(()=>{r.setShowPredictions(!1),r.clearCursor(),this._reevaluatePredictorState(n,r)})),this._register(this._timeline.onPredictionSucceeded(e=>{var t;(null==(t=this._lastRow)?void 0:t.charState)===1&&e instanceof ol&&e.inner instanceof oo&&e.inner.appliedAt&&e.inner.appliedAt.pos.y+e.inner.appliedAt.pos.baseY===this._lastRow.y&&(this._lastRow.charState=2)})),this._register(n.onChange(()=>{0===r.length&&t.debounceStopTracking(),this._reevaluatePredictorState(n,r)}))}reset(){var e,t;this._lastRow=void 0,clearTimeout(this._clearPredictionDebounce),this._clearPredictionDebounce=void 0,null==(e=this._timeline)||e.reset(),null==(t=this._typeaheadStyle)||t.stopTracking()}_deferClearingPredictions(){var e;if(this.stats&&this._timeline){if(clearTimeout(this._clearPredictionDebounce),0===this._timeline.length||(null==(e=this._timeline.peekStart())?void 0:e.clearAfterTimeout)===!1){this._clearPredictionDebounce=void 0;return}this._clearPredictionDebounce=setTimeout(()=>{var e,t;this._clearPredictionDebounce=void 0,null==(e=this._timeline)||e.undoAllPredictions(),(null==(t=this._lastRow)?void 0:t.charState)===1&&(this._lastRow.charState=0)},Math.max(500,3*this.stats.maxLatency/2))}}_reevaluatePredictorState(e,t){clearTimeout(this._reevaluateDebounce),this._reevaluateDebounce=setTimeout(()=>this._reevaluatePredictorStateNow(e,t),100)}_reevaluatePredictorStateNow(e,t){if(this._excludeProgramRe.test(this._terminalTitle))t.setShowPredictions(!1);else if(this._typeaheadThreshold<0)t.setShowPredictions(!1);else if(0===this._typeaheadThreshold)t.setShowPredictions(!0);else if(e.sampleSize>5&&e.accuracy>.3){let r=e.latency.median;r>=this._typeaheadThreshold?t.setShowPredictions(!0):r<this._typeaheadThreshold/.5&&t.setShowPredictions(!1)}}_onUserData(e){var t,r,n,a;if((null==(t=this._timeline)?void 0:t.terminal.buffer.active.type)!=="normal")return;let s=this._timeline.terminal,l=s.buffer.active;if(1===l.cursorX&&l.cursorY===s.rows-1&&(null==(a=l.getLine(l.cursorY+l.baseY))||null==(n=a.getCell(0))?void 0:n.getChars())===":")return;let o=l.baseY+l.cursorY;o!==(null==(r=this._lastRow)?void 0:r.y)?this._lastRow={y:o,startingX:l.cursorX,endingX:l.cursorX,charState:0}:(this._lastRow.startingX=Math.min(this._lastRow.startingX,l.cursorX),this._lastRow.endingX=Math.max(this._lastRow.endingX,this._timeline.physicalCursor(l).x));let i=e=>this._timeline.tentativeCursor(l).x<=this._lastRow.startingX?this._timeline.addBoundary(l,e):this._timeline.addPrediction(l,e),c=e=>this._timeline.tentativeCursor(l).x>=this._lastRow.endingX-1?this._timeline.addBoundary(l,e):this._timeline.addPrediction(l,e),d=new oa(e);for(;d.remaining>0;){if(d.eatCharCode(127)){let e=this._timeline.peekEnd();e&&e instanceof oo&&this._timeline.addBoundary(),this._timeline.isShowingPredictions&&ot(this._timeline.terminal),this._timeline.tentativeCursor(l).x<=this._lastRow.startingX?this._timeline.addBoundary(l,new oi(this._timeline.terminal)):(this._lastRow.endingX--,this._timeline.addPrediction(l,new oi(this._timeline.terminal)));continue}if(d.eatCharCode(32,126)){let t=e[d.index-1],r=new oo(this._typeaheadStyle,t);0===this._lastRow.charState?(this._timeline.addBoundary(l,r),this._lastRow.charState=1):this._timeline.addPrediction(l,r),this._timeline.tentativeCursor(l).x>=s.cols&&this._timeline.addBoundary(l,new od);continue}let t=d.eatRe(l6);if(t){let e=t[3],r=new ou(e,!!t[2],Number(t[1])||1);"D"===e?i(r):c(r);continue}if(d.eatStr("\x1bf")){c(new ou("C",!0,1));continue}if(d.eatStr("\x1bb")){i(new ou("D",!0,1));continue}if(d.eatChar("\r")&&l.cursorY<s.rows-1){this._timeline.addPrediction(l,new oc);continue}this._timeline.addBoundary(l,new os);break}1===this._timeline.length&&(this._deferClearingPredictions(),this._typeaheadStyle.startTracking())}beforeServerInput(e){return this._timeline&&(e=this._timeline.beforeServerInput(e),this._deferClearingPredictions()),e}constructor(){super(),this._typeaheadThreshold=0,this._excludeProgramRe=l4,this._terminalTitle="",this._register({dispose:()=>{clearTimeout(this._clearPredictionDebounce),clearTimeout(this._reevaluateDebounce)}})}}r(87063);let ow=0,oj={dark:{background:"#0a0a0a",foreground:"#e4e4e7",cursor:"#e4e4e7",cursorAccent:"#0a0a0a",selectionBackground:"#27272a",black:"#18181b",red:"#f87171",green:"#4ade80",yellow:"#facc15",blue:"#60a5fa",magenta:"#c084fc",cyan:"#22d3ee",white:"#e4e4e7",brightBlack:"#52525b",brightRed:"#fca5a5",brightGreen:"#86efac",brightYellow:"#fde68a",brightBlue:"#93c5fd",brightMagenta:"#d8b4fe",brightCyan:"#67e8f9",brightWhite:"#fafafa"},light:{background:"#ffffff",foreground:"#171717",cursor:"#171717",cursorAccent:"#ffffff",selectionBackground:"#bfdbfe",black:"#262626",red:"#b91c1c",green:"#15803d",yellow:"#a16207",blue:"#1d4ed8",magenta:"#7e22ce",cyan:"#0e7490",white:"#525252",brightBlack:"#737373",brightRed:"#dc2626",brightGreen:"#16a34a",brightYellow:"#ca8a04",brightBlue:"#2563eb",brightMagenta:"#9333ea",brightCyan:"#0891b2",brightWhite:"#a3a3a3"},midnight:{background:"#0b1220",foreground:"#dbe4f3",cursor:"#dbe4f3",cursorAccent:"#0b1220",selectionBackground:"#1e2a47",black:"#16213a",red:"#f87171",green:"#4ade80",yellow:"#facc15",blue:"#60a5fa",magenta:"#c084fc",cyan:"#22d3ee",white:"#dbe4f3",brightBlack:"#64769b",brightRed:"#fca5a5",brightGreen:"#86efac",brightYellow:"#fde68a",brightBlue:"#93c5fd",brightMagenta:"#d8b4fe",brightCyan:"#67e8f9",brightWhite:"#f1f5fb"},warm:{background:"#f6f1e7",foreground:"#3d3427",cursor:"#3d3427",cursorAccent:"#f6f1e7",selectionBackground:"#e6dabf",black:"#292524",red:"#b91c1c",green:"#15803d",yellow:"#a16207",blue:"#1d4ed8",magenta:"#7e22ce",cyan:"#0e7490",white:"#57534e",brightBlack:"#78716c",brightRed:"#dc2626",brightGreen:"#16a34a",brightYellow:"#ca8a04",brightBlue:"#2563eb",brightMagenta:"#9333ea",brightCyan:"#0891b2",brightWhite:"#a8a29e"}},ok={fontFamily:"'JetBrains Mono', 'Fira Code', Menlo, Monaco, monospace",fontSize:13,lineHeight:1,cursorBlink:!0,scrollback:1e4};function oN(e,t,r,n){let a=document.createElement("div");a.className="absolute inset-0",a.style.display="none",e.appendChild(a);let s=new lZ.B({...ok,theme:oj[r]}),l=new lV.Y;s.loadAddon(l),s.open(a),l.fit();let o=new oy;s.loadAddon(o),s.onData(e=>{p.send({type:"terminal:input",data:e,terminalId:t})}),s.attachCustomKeyEventHandler(e=>{let t=function(e,t){let{isMac:r,hasSelection:n}=t;if(r||"keydown"!==e.type||!e.ctrlKey||e.altKey||e.metaKey)return null;let a=e.key.toLowerCase();return"c"===a?e.shiftKey||n?"copy":null:"v"===a?"paste":null}(e,{isMac:lX,hasSelection:s.hasSelection()});return"copy"===t&&(e.preventDefault(),s.hasSelection()&&(document.execCommand("copy"),s.clearSelection())),null===t}),a.addEventListener("contextmenu",e=>{e.preventDefault(),n({x:e.clientX,y:e.clientY,term:s})});let i=null,c=new ResizeObserver(()=>{l.fit(),i&&clearTimeout(i),i=setTimeout(()=>{p.send({type:"terminal:resize",cols:s.cols,rows:s.rows,terminalId:t})},150)});return c.observe(a),{term:s,fit:l,typeAhead:o,container:a,ro:c}}function oS(){var e,t;let{headerless:r,onActiveNameChange:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=(0,T.kj)(),s=(0,o.useRef)(null),i=(0,o.useRef)(new Map),[c,u]=(0,o.useState)([]),[m,h]=(0,o.useState)(null),f=null!=(t=null==(e=c.find(e=>e.id===m))?void 0:e.name)?t:null;(0,o.useEffect)(()=>{null==n||n(f)},[f,n]);let[x,g]=(0,o.useState)(null),v=(0,o.useCallback)(()=>g(null),[]),b=rU(e=>e.activeProject),{theme:y}=(0,e5.useTheme)(),w=(0,o.useRef)(y);(0,o.useEffect)(()=>{for(let e of(w.current=y,i.current.values()))e.term.options.theme=oj[y]},[y]);let j=(0,o.useCallback)(e=>{var t,r,n;let a=s.current;if(!a)return;ow++;let l="term_".concat(Date.now().toString(36),"_").concat(ow),o=0===c.length?"bash":"bash (".concat(ow,")"),{term:d,fit:m,typeAhead:f,container:x,ro:v}=oN(a,l,w.current,g);i.current.set(l,{id:l,name:o,term:d,fit:m,typeAhead:f,container:x,ro:v,ready:!1,exited:!1});let y=new URLSearchParams(window.location.search).get("folder"),j=null!=(r=null!=(t=null!=e?e:null==b?void 0:b.path)?t:y)?r:"~";return p.send({type:"terminal:start",terminalId:l,cwd:j,cols:d.cols,rows:d.rows,workspacePath:null!=(n=null==b?void 0:b.path)?n:"",name:o}),u(e=>[...e,{id:l,name:o}]),h(l),l},[b,c.length]),k=(0,o.useCallback)((e,t)=>{let r=i.current.get(e);if(r)return r;let n=s.current;if(!n)return;ow++;let{term:a,fit:l,typeAhead:o,container:c,ro:d}=oN(n,e,w.current,g),m={id:e,name:t,term:a,fit:l,typeAhead:o,container:c,ro:d,ready:!0,exited:!1};return i.current.set(e,m),u(r=>[...r,{id:e,name:t}]),h(t=>null!=t?t:e),m},[]),N=(0,o.useCallback)(e=>{let t=i.current.get(e);t&&(p.send({type:"terminal:close",terminalId:e}),t.ro.disconnect(),t.term.dispose(),t.container.remove(),i.current.delete(e),u(t=>{let r=t.filter(t=>t.id!==e);return h(n=>{if(n===e){var a,s;return null!=(s=null==(a=r[Math.min(t.findIndex(t=>t.id===e),r.length-1)])?void 0:a.id)?s:null}return n}),r}))},[]),S=(0,o.useCallback)(e=>{h(e)},[]);(0,o.useEffect)(()=>{let e=i.current;return()=>{for(let t of e.values())t.ro.disconnect(),t.term.dispose(),t.container.remove();e.clear()}},[]),(0,o.useEffect)(()=>{for(let[e,t]of i.current){let r=e===m;t.container.style.display=r?"block":"none",r&&(t.fit.fit(),t.term.focus())}},[m]),(0,o.useEffect)(()=>{let e=[];return e.push(p.on("terminal:output",e=>{let{terminalId:t,data:r}=e,n=t?i.current.get(t):i.current.values().next().value;null==n||n.term.write(n.typeAhead.beforeServerInput(r))})),e.push(p.on("terminal:ready",e=>{let{terminalId:t}=e;if(t){let e=i.current.get(t);e&&(e.ready=!0)}})),e.push(p.on("terminal:exit",e=>{let{terminalId:t}=e;if(t){let e=i.current.get(t);e&&(e.exited=!0,e.term.write(e.typeAhead.beforeServerInput("\r\n\x1b[90m[Process exited]\x1b[0m\r\n")))}})),e.push(p.on("terminal:opened",e=>{k(e.terminalId,e.name)})),e.push(p.on("terminal:snapshot",e=>{let t=k(e.terminalId,"bash");t&&(t.typeAhead.reset(),t.term.reset(),t.term.resize(e.cols,e.rows),t.term.write(e.data,()=>{t.fit.fit(),p.send({type:"terminal:resize",cols:t.term.cols,rows:t.term.rows,terminalId:e.terminalId})}))})),()=>e.forEach(e=>e())},[k]);let C=(0,o.useRef)(!1);return(0,o.useEffect)(()=>{if(C.current||!b)return;C.current=!0;let e=p.on("terminal:reattached",e=>{for(let{id:t,name:r}of e.terminals)k(t,r);0===e.terminals.length&&0===i.current.size&&j()}),t=()=>{var e;p.send({type:"terminal:reattach",workspacePath:null!=(e=null==b?void 0:b.path)?e:""})};t();let r=p.on("_connected",t);return()=>{e(),r()}},[b,j,k]),(0,o.useEffect)(()=>{let e=d.Uw.getState().pendingTerminalCwd;return d.Uw.subscribe(t=>{let r=t.pendingTerminalCwd;if(r&&r!==e){e=r;let n=t.consumeTerminalSpawn();n&&j(n)}else e=r})},[j]),(0,l.jsxs)("div",{className:"flex h-full min-h-0 bg-[var(--background)]",children:[(0,l.jsx)("div",{ref:s,className:"relative min-h-0 flex-1 overflow-hidden"}),x&&(0,l.jsx)(l3,{x:x.x,y:x.y,term:x.term,onClose:v}),(0,l.jsxs)(lN,{openKey:"halo_terminal_sidebar_open",widthKey:"halo_terminal_sidebar_width",defaultWidth:160,title:a("terminal.list.title"),collapsedContent:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"flex min-h-0 w-full flex-1 flex-col items-center gap-0.5 overflow-y-auto py-1",children:c.map(e=>(0,l.jsx)(lE,{icon:(0,l.jsx)(q.A,{className:"h-3.5 w-3.5"}),tooltip:e.name,active:e.id===m,onActivate:()=>S(e.id)},e.id))}),(0,l.jsx)(lT,{collapsed:!0,onClick:()=>j(),label:a("terminal.list.new")})]}),children:[(0,l.jsx)("div",{className:"flex flex-1 flex-col gap-0.5 overflow-y-auto py-1",children:c.map(e=>(0,l.jsx)(lI,{icon:(0,l.jsx)(q.A,{className:"h-3 w-3"}),label:e.name,tooltip:e.name,active:e.id===m,onActivate:()=>S(e.id),onClose:c.length>1?()=>N(e.id):void 0,closeLabel:a("terminal.list.close")},e.id))}),(0,l.jsx)(lT,{onClick:()=>j(),label:a("terminal.list.new")})]})]})}var oC=r(39768);function oA(e){return Math.min(.8,Math.max(.2,e))}let oI=e=>"halo_bottom_split_ratio_".concat(e),oE=e=>"".concat(e," 1 0px");function oT(e){let t=Number(localStorage.getItem(oI(e)));return Number.isFinite(t)&&t>0?oA(t):.5}function o_(){let{floating:e=!1,dragHandleRef:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=(0,T.kj)(),n=(0,d.Uw)(e=>e.bottomTab),a=(0,d.Uw)(e=>e.setBottomTab),s=(0,d.Uw)(e=>e.setBottomFloating),i=(0,d.Uw)(e=>e.bottomMaximized),c=(0,d.Uw)(e=>e.setBottomMaximized),u=(0,d.Uw)(e=>e.bottomSplit),m=(0,d.Uw)(e=>e.setBottomSplit),[h,f]=(0,o.useState)("terminal"===n||u);(0,o.useEffect)(()=>{("terminal"===n||u)&&f(!0)},[n,u]);let[x,g]=(0,o.useState)(0);(0,o.useEffect)(()=>p.on("_disconnected",()=>g(e=>e+1)),[]);let[v,b]=(0,o.useState)(""),[y,w]=(0,o.useState)(null),j=u?[v,y].filter(Boolean).join(" \xb7 "):"chat"===n?v:null!=y?y:"",k=(0,o.useRef)(null),[N,S]=(0,o.useState)("row");(0,o.useEffect)(()=>{let e=k.current;if(!e)return;let t=new ResizeObserver(e=>{let[t]=e;t.contentRect.width>0&&S(t.contentRect.width<720?"column":"row")});return t.observe(e),()=>t.disconnect()},[]);let[C,A]=(0,o.useState)(()=>({row:oT("row"),column:oT("column")})),I=C[N],_=(0,o.useRef)(null),P=(0,o.useRef)(null),M=e=>{u&&m(!1),a(e)},F=(e,t)=>u?{className:"min-h-0 min-w-0 overflow-hidden",style:{flex:oE(t)}}:{className:n===e?"h-full min-w-0 flex-1":"hidden"};return(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{ref:t,className:(0,E.cn)("relative flex h-[35px] shrink-0 items-center gap-0 border-b border-[var(--border)] bg-[var(--card)] px-2",e&&"cursor-move select-none"),children:[(0,l.jsx)(oP,{label:r("nav.chat"),active:u||"chat"===n,onClick:()=>M("chat")}),(0,l.jsx)(oP,{label:r("nav.terminal"),active:u||"terminal"===n,onClick:()=>M("terminal")}),j&&(0,l.jsx)("div",{className:"pointer-events-none absolute inset-y-0 left-48 right-48 flex items-center justify-center overflow-hidden",children:(0,l.jsx)("span",{title:j,className:"pointer-events-auto truncate text-[11px] text-[var(--muted-foreground)]",children:j})}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onMouseDown:e=>e.stopPropagation(),onClick:()=>m(!u),title:r(u?"bottom.singleView":"bottom.splitView"),className:"rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(eV.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onMouseDown:e=>e.stopPropagation(),onClick:()=>c(!i),title:i?"Restore panel":"Maximize panel",className:"rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:i?(0,l.jsx)(rQ.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(r0.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onMouseDown:e=>e.stopPropagation(),onClick:()=>s(!e),title:e?"Dock back":"Float panel",className:"rounded p-1 text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:e?(0,l.jsx)(e0.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(oC.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsxs)("div",{ref:k,className:(0,E.cn)("flex min-h-0 flex-1",u&&"column"===N&&"flex-col"),children:[(0,l.jsx)("div",{ref:_,"data-pane":"chat",...F("chat",I),children:(0,l.jsx)(lY,{onTitleChange:b})}),u&&(0,l.jsx)("div",{className:(0,E.cn)("group relative z-10 shrink-0 bg-[var(--border)]","row"===N?"w-px":"h-px"),children:(0,l.jsx)("div",{"data-split-divider":!0,onPointerDown:e=>{let t=k.current,r=_.current,n=P.current;if(0!==e.button||!t||!r||!n)return;e.preventDefault();let a=t.getBoundingClientRect(),s=I,l=document.body.style,o=l.cursor,i=l.userSelect;l.cursor="row"===N?"col-resize":"row-resize",l.userSelect="none";let c=e=>{s=oA("row"===N?(e.clientX-a.left)/a.width:(e.clientY-a.top)/a.height),r.style.flex=oE(s),n.style.flex=oE(1-s)},d=()=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",d),window.removeEventListener("pointercancel",d),l.cursor=o,l.userSelect=i,s!==I&&(A(e=>({...e,[N]:s})),localStorage.setItem(oI(N),String(s)))};window.addEventListener("pointermove",c),window.addEventListener("pointerup",d),window.addEventListener("pointercancel",d)},className:(0,E.cn)("absolute transition-colors group-hover:bg-[var(--primary)]","row"===N?"-inset-x-0.5 inset-y-0 cursor-col-resize":"-inset-y-0.5 inset-x-0 cursor-row-resize")})}),(0,l.jsx)("div",{ref:P,"data-pane":"terminal",...F("terminal",1-I),children:h&&(0,l.jsx)(oS,{headerless:!0,onActiveNameChange:w},x)})]})]})}function oP(e){let{label:t,active:r,onClick:n}=e;return(0,l.jsxs)("button",{onClick:n,className:(0,E.cn)("relative px-3 py-2 text-[11px] font-medium tracking-wide transition-colors",r?"text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:[t,r&&(0,l.jsx)("div",{className:"absolute bottom-0 left-2 right-2 h-px bg-[var(--foreground)]"})]})}function oM(e){let{slotRef:t,dragHandleRef:r}=e,n=(0,d.Uw)(e=>e.bottomFloatRect),a=(0,d.Uw)(e=>e.setBottomFloatRect),s=(0,d.Uw)(e=>e.bottomMaximized),i=(0,o.useRef)(n);(0,o.useEffect)(()=>{i.current=n}),(0,o.useEffect)(()=>{let e=r.current;if(e&&!s)return e.addEventListener("mousedown",t),()=>e.removeEventListener("mousedown",t);function t(e){if(e.target.closest("button"))return;e.preventDefault();let t=e.clientX,r=e.clientY,n={...i.current};function s(e){let s=e.clientX-t,l=e.clientY-r;a({x:oF(n.x+s,0,window.innerWidth-n.w),y:oF(n.y+l,0,window.innerHeight-n.h),w:n.w,h:n.h})}window.addEventListener("mousemove",s),window.addEventListener("mouseup",function e(){window.removeEventListener("mousemove",s),window.removeEventListener("mouseup",e)})}},[a,s,r]),(0,o.useEffect)(()=>{function e(){let e=i.current,t=oF(e.x,0,Math.max(0,window.innerWidth-e.w)),r=oF(e.y,0,Math.max(0,window.innerHeight-e.h));(t!==e.x||r!==e.y)&&a({...e,x:t,y:r})}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[a]);let c=(0,o.useRef)(null);(0,o.useEffect)(()=>{let e=c.current;if(e&&!s)return e.addEventListener("mousedown",t),()=>e.removeEventListener("mousedown",t);function t(e){var t;let r=e.target.closest("[data-edges]");if(!r)return;let n=null!=(t=r.getAttribute("data-edges"))?t:"",s={top:n.includes("top"),bottom:n.includes("bottom"),left:n.includes("left"),right:n.includes("right")};e.preventDefault(),e.stopPropagation();let l=e.clientX,o=e.clientY,c={...i.current},d=c.x+c.w,u=c.y+c.h;function m(e){let t=e.clientX-l,r=e.clientY-o,{x:n,y:i,w:m,h:p}=c;if(s.right&&(m=oF(c.w+t,320,window.innerWidth-c.x)),s.bottom&&(p=oF(c.h+r,240,window.innerHeight-c.y)),s.left){let e=oF(c.x+t,0,d-320);n=e,m=d-e}if(s.top){let e=oF(c.y+r,0,u-240);i=e,p=u-e}a({x:n,y:i,w:m,h:p})}window.addEventListener("mousemove",m),window.addEventListener("mouseup",function e(){window.removeEventListener("mousemove",m),window.removeEventListener("mouseup",e)})}},[a,s]);let u=s?{left:0,top:0,width:"100vw",height:"100vh"}:{left:n.x,top:n.y,width:n.w,height:n.h};return(0,l.jsxs)("div",{className:"fixed z-50 flex flex-col rounded-md border border-[var(--border)] bg-[var(--background)] shadow-2xl",style:u,children:[(0,l.jsx)("div",{ref:t,className:"min-h-0 flex-1 overflow-hidden rounded-md"}),!s&&(0,l.jsxs)("div",{ref:c,children:[(0,l.jsx)("div",{"data-edges":"top",className:"absolute -top-1 left-3 right-3 h-2 cursor-ns-resize"}),(0,l.jsx)("div",{"data-edges":"bottom",className:"absolute -bottom-1 left-3 right-3 h-2 cursor-ns-resize"}),(0,l.jsx)("div",{"data-edges":"left",className:"absolute -left-1 top-3 bottom-3 w-2 cursor-ew-resize"}),(0,l.jsx)("div",{"data-edges":"right",className:"absolute -right-1 top-3 bottom-3 w-2 cursor-ew-resize"}),(0,l.jsx)("div",{"data-edges":"top left",className:"absolute -top-1 -left-1 h-3 w-3 cursor-nwse-resize"}),(0,l.jsx)("div",{"data-edges":"top right",className:"absolute -top-1 -right-1 h-3 w-3 cursor-nesw-resize"}),(0,l.jsx)("div",{"data-edges":"bottom left",className:"absolute -bottom-1 -left-1 h-3 w-3 cursor-nesw-resize"}),(0,l.jsx)("div",{"data-edges":"bottom right",className:"absolute -bottom-1 -right-1 h-3 w-3 cursor-nwse-resize"})]})]})}function oF(e,t,r){return Math.max(t,Math.min(r,e))}let oD={ts:J.A,tsx:J.A,js:J.A,jsx:J.A,json:O.A,md:W.A};function oL(e){let{onSelect:t,onClose:r}=e,n=rU(e=>{var t,r;return null!=(r=null==(t=e.activeProject)?void 0:t.id)?r:null}),[a,s]=(0,o.useState)(""),[i,c]=(0,o.useState)(0),[d,m]=(0,o.useState)([]),[p,h]=(0,o.useState)(!1),f=(0,o.useRef)(null),x=(0,o.useRef)(null);(0,o.useEffect)(()=>{var e;null==(e=f.current)||e.focus()},[]),(0,o.useEffect)(()=>{c(0)},[a]),(0,o.useEffect)(()=>{if(!n)return;let e=a.trim();if(!e){m([]),h(!1);return}h(!0);let t=!1,r=setTimeout(()=>{u.FH.files.search(n,e,50).then(e=>{t||m(e.matches)}).catch(e=>{t||(console.error("[QuickOpen] Search failed:",e),m([]))}).finally(()=>{t||h(!1)})},150);return()=>{t=!0,clearTimeout(r)}},[n,a]),(0,o.useEffect)(()=>{var e;let t=null==(e=x.current)?void 0:e.children[i];null==t||t.scrollIntoView({block:"nearest"})},[i]);let g=(0,o.useCallback)(e=>{if("Escape"===e.key)return void r();if("ArrowDown"===e.key){e.preventDefault(),c(e=>Math.min(e+1,d.length-1));return}if("ArrowUp"===e.key){e.preventDefault(),c(e=>Math.max(e-1,0));return}"Enter"===e.key&&(e.preventDefault(),d[i]&&(t(d[i].path),r()))},[d,i,t,r]);return(0,o.useEffect)(()=>{function e(e){e.target.closest("[data-quick-open]")||r()}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[r]),(0,l.jsxs)("div",{className:"fixed inset-0 z-50 flex justify-center pt-[15vh]",children:[(0,l.jsx)("div",{className:"fixed inset-0 bg-black/40"}),(0,l.jsxs)("div",{"data-quick-open":!0,className:"relative w-full max-w-lg",children:[(0,l.jsx)("input",{ref:f,value:a,onChange:e=>s(e.target.value),onKeyDown:g,placeholder:"Search files by name...",className:"w-full rounded-t-md border border-[var(--border)] bg-[var(--card)] px-4 py-3 text-sm text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none"}),(0,l.jsx)("div",{ref:x,className:"max-h-[40vh] overflow-y-auto rounded-b-md border border-t-0 border-[var(--border)] bg-[var(--card)]",children:0===d.length?(0,l.jsx)("div",{className:"px-4 py-6 text-center text-xs text-[var(--muted-foreground)]",children:p?"Searching...":"No files found"}):d.map((e,n)=>{var a,s,o;let c=null!=(o=oD[null!=(s=null==(a=e.name.split(".").pop())?void 0:a.toLowerCase())?s:""])?o:et.A;return(0,l.jsxs)("button",{onClick:()=>{t(e.path),r()},className:(0,E.cn)("flex w-full items-center gap-2 px-4 py-2 text-left text-xs transition-colors",n===i?"bg-[var(--accent)] text-[var(--accent-foreground)]":"text-[var(--foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)(c,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"truncate font-medium",children:e.name}),(0,l.jsx)("span",{className:"ml-auto truncate text-[10px] text-[var(--muted-foreground)]",children:e.path})]},e.path)})})]})]})}var oR=r(82011);function oH(e){let{initialPath:t,onSelect:r,onClose:n}=e,[a,s]=(0,o.useState)(null!=t?t:""),[i,c]=(0,o.useState)(""),[d,m]=(0,o.useState)([]),[p,h]=(0,o.useState)(!1),[f,x]=(0,o.useState)(null),g=(0,o.useCallback)(async e=>{h(!0),x(null);try{let t=await u.FH.fs.browse(e);s(t.path),c(t.parent),m(t.entries)}catch(e){x(e instanceof Error?e.message:"Failed to load directory")}finally{h(!1)}},[]);return(0,o.useEffect)(()=>{t?g(t):u.FH.fs.home().then(e=>{let{home:t}=e;return g(t)}).catch(e=>x(String(e)))},[t,g]),(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:n,children:(0,l.jsxs)("div",{className:"w-[560px] max-h-[70vh] flex flex-col rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-2.5",children:[(0,l.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:"Open Workspace"}),(0,l.jsx)("button",{onClick:n,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-1 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsx)("button",{onClick:()=>g(i),disabled:p||!i||i===a,title:"Parent directory",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:opacity-30",children:(0,l.jsx)(oR.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:()=>u.FH.fs.home().then(e=>{let{home:t}=e;return g(t)}),disabled:p,title:"Home directory",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:opacity-30",children:(0,l.jsx)(tX.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("input",{type:"text",value:a,onChange:e=>s(e.target.value),onKeyDown:e=>{"Enter"===e.key&&g(a)},className:"flex-1 rounded border border-[var(--border)] bg-[var(--secondary)] px-2 py-1 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]"})]}),(0,l.jsxs)("div",{className:"flex-1 min-h-0 overflow-y-auto",children:[f&&(0,l.jsx)("p",{className:"px-4 py-3 text-xs text-red-400",children:f}),p&&!f&&(0,l.jsx)("p",{className:"px-4 py-3 text-xs text-[var(--muted-foreground)]",children:"Loading..."}),!p&&!f&&0===d.length&&(0,l.jsx)("p",{className:"px-4 py-3 text-xs text-[var(--muted-foreground)]",children:"(empty)"}),!p&&d.map(e=>(0,l.jsxs)("button",{onDoubleClick:()=>g(e.path),onClick:()=>s(e.path),className:(0,E.cn)("flex w-full items-center gap-2 px-4 py-1.5 text-xs text-left transition-colors",a===e.path?"bg-[var(--primary)]/20 text-[var(--foreground)]":"text-[var(--foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)(_.A,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),e.name]},e.path))]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-3 py-2.5",children:[(0,l.jsx)("button",{onClick:n,className:"rounded px-3 py-1 text-xs font-medium text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:"Cancel"}),(0,l.jsx)("button",{onClick:()=>r(a),disabled:!a,className:"rounded bg-[var(--primary)] px-3 py-1 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-30",children:"Open"})]})]})})}let oz="halo_recent_workspaces";function oO(){try{let e=localStorage.getItem(oz),t=e?JSON.parse(e):[];return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch(e){return[]}}function oU(e){try{localStorage.setItem(oz,JSON.stringify(e))}catch(e){}}var oB=r(42981),oW=r(72838),oK=r(29062),oG=r(24619);function oq(e){var t,r;let{projectId:n,pathInput:a,onPathInputChange:s,onOpenFolder:i,onOpenPath:c,activeProject:m}=e,p=(0,T.kj)(),h=(0,d._r)(),f=nJ(e=>e.isStreaming),[x,v]=(0,o.useState)(!1),[b,y]=(0,o.useState)(!1),w=(0,o.useRef)(null),{recent:j,remove:k}=function(){let[e,t]=(0,o.useState)([]);return(0,o.useEffect)(()=>{t(oO())},[]),{recent:e,remove:(0,o.useCallback)(e=>{t(t=>{let r=t.filter(t=>t!==e);return oU(r),r})},[])}}(),[N,S]=(0,o.useState)(!1),[C,A]=(0,o.useState)(!1),I=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(N)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){I.current&&!I.current.contains(e.target)&&S(!1)}},[N]);let _=C?a.trim().toLowerCase():"",P=j.filter(e=>e!==(null==m?void 0:m.path)&&(!_||e.toLowerCase().includes(_)));async function M(){var e;if(!n)return;let t=await (0,E.ZC)("New file name (relative path, e.g. src/hello.ts):");if(!(null==t?void 0:t.trim()))return;let r=t.trim(),a=eA(null!=(e=r.split("/").pop())?e:"");try{a?await u.FH.files.mkdir(r,n):await u.FH.files.create(r,n),g(n),a&&h.getState().openPreview(r,"","",{bundle:!0})}catch(e){console.error("[Explorer] Failed to create file:",e),window.alert(e instanceof Error?e.message:"Failed to create file")}}async function F(){if(!n)return;let e=await (0,E.ZC)("New folder name (relative path, e.g. src/utils):");if(null==e?void 0:e.trim())try{await u.FH.files.mkdir(e.trim(),n),g(n)}catch(e){console.error("[Explorer] Failed to create folder:",e),window.alert(e instanceof Error?e.message:"Failed to create folder")}}async function D(e){var t;if(!n||!(null==(t=e.target.files)?void 0:t.length))return;let r=Array.from(e.target.files);try{await u.FH.files.upload(r,n),g(n)}catch(e){console.error("[Explorer] Upload failed:",e),window.alert(e instanceof Error?e.message:"Upload failed")}e.target.value=""}let R=null!=(r=null==m||null==(t=m.path.split("/").filter(Boolean).pop())?void 0:t.toUpperCase())?r:"EXPLORER";return(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 shrink-0 items-center border-b border-[var(--border)] px-3",children:[(0,l.jsx)(oB.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"ml-2 text-sm font-medium text-[var(--foreground)]",children:p("nav.explorer")}),(0,l.jsx)("div",{className:"flex-1"}),n&&(0,l.jsx)("button",{onClick:function(){n&&(v(!0),g(n),setTimeout(()=>v(!1),500))},disabled:x,title:"Refresh",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",x&&"animate-spin")})}),n&&(0,l.jsx)("button",{onClick:eR,title:"Collapse All",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors",children:(0,l.jsx)(oW.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-1 border-b border-[var(--border)] p-3",children:[(0,l.jsxs)("div",{ref:I,className:"relative min-w-0 flex-1",children:[(0,l.jsx)("input",{type:"text",value:a,onChange:e=>{s(e.target.value),A(!0),S(!0)},onFocus:()=>{A(!1),S(!0)},onKeyDown:e=>{"Enter"!==e.key||e.repeat||e.nativeEvent.isComposing?"Escape"===e.key&&S(!1):(S(!1),i())},placeholder:"Enter folder path, press Enter",className:"w-full rounded border border-[var(--border)] bg-[var(--secondary)] px-2 py-1.5 text-xs text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none focus:border-[var(--primary)]"}),N&&P.length>0&&(0,l.jsx)("div",{className:"absolute left-0 right-0 top-full z-20 mt-1 max-h-64 overflow-y-auto rounded border border-[var(--border)] bg-[var(--background)] py-1 shadow-lg",children:P.map(e=>(0,l.jsxs)("div",{onClick:()=>{S(!1),c(e)},className:"group flex cursor-pointer items-center gap-2 px-2 py-1.5 hover:bg-[var(--secondary)]",children:[(0,l.jsx)(oK.A,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("div",{className:"truncate text-xs text-[var(--foreground)]",children:e.split(/[/\\]/).filter(Boolean).pop()||e}),(0,l.jsx)("div",{className:"truncate text-[10px] text-[var(--muted-foreground)]",children:e})]}),(0,l.jsx)("button",{onClick:t=>{t.stopPropagation(),k(e)},title:"Remove from recent",className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 hover:bg-[var(--border)] hover:text-[var(--foreground)] group-hover:opacity-100",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]},e))})]}),(0,l.jsx)("button",{onClick:()=>y(!0),title:"Browse for folder",className:"shrink-0 rounded border border-[var(--border)] p-1.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(eJ.A,{className:"h-3.5 w-3.5"})})]}),b&&(0,l.jsx)(oH,{initialPath:null==m?void 0:m.path,onSelect:e=>{y(!1),c(e)},onClose:()=>y(!1)}),n&&(0,l.jsxs)("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--border)] px-3 py-1.5",children:[(0,l.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,l.jsx)("span",{title:p(f?"status.busy":"status.idle"),className:(0,E.cn)("inline-block h-2 w-2 shrink-0 rounded-full",f?"bg-amber-400 animate-pulse":"bg-emerald-500")}),(0,l.jsx)("span",{className:"truncate text-[10px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:R})]}),(0,l.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,l.jsx)("button",{onClick:M,title:"New File",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e$.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:F,title:"New Folder",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(eY.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:()=>{var e;return null==(e=w.current)?void 0:e.click()},title:"Upload Files",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(oG.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("input",{ref:w,type:"file",multiple:!0,className:"hidden",onChange:D})]})]}),(0,l.jsx)("div",{className:"flex-1 overflow-y-auto",children:n?(0,l.jsx)(r9,{projectId:n,mode:"tree-only"}):(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center gap-2 p-6 text-center",children:[(0,l.jsx)(L.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"Enter a folder path to explore files"})]})})]})}var o$=r(91061),oY=r(40876),oJ=r(35829);function oZ(e){return"".concat(e.id,":").concat(e.scope)}let oV="halo_skills_selectedKey",oX="halo_skills_expandedScopes";function oQ(){try{let e=localStorage.getItem(oX);if(e)return new Set(JSON.parse(e))}catch(e){}return new Set(["global","workspace","extension"])}let o0=(0,b.v)(e=>({skills:[],selectedKey:localStorage.getItem(oV),setSkills:t=>e({skills:t}),setSelectedKey:t=>{t?localStorage.setItem(oV,t):localStorage.removeItem(oV),e({selectedKey:t})},addSkill:t=>e(e=>({skills:[...e.skills,t]})),removeSkill:t=>e(e=>{let r=e.skills.filter(e=>oZ(e)!==t),[n,a]=t.split(":"),s="workspace"===a?r.map(e=>e.id===n&&"global"===e.scope?{...e,overridden:!1}:e):r,l=e.selectedKey===t?null:e.selectedKey;return e.selectedKey===t&&localStorage.removeItem(oV),{skills:s,selectedKey:l}})}));function o1(){let e=(0,T.kj)(),{skills:t,selectedKey:r,setSkills:n,setSelectedKey:a,addSkill:s,removeSkill:i}=o0(),c=rU(e=>e.activeProject),d=null==c?void 0:c.path,[m,f]=(0,o.useState)(oQ),[x,g]=(0,o.useState)(!1),v=lG(e=>e.version);async function b(e){if("workspace"===e&&!d)return;let r=await (0,E.ZC)("New ".concat(e," skill name:"));if(!(null==r?void 0:r.trim()))return;let l=r.trim().toLowerCase().replace(/[^a-z0-9一-鿿]+/g,"-").replace(/^-|-$/g,""),o=t.find(t=>t.id===l&&t.scope!==e);if(o){var i;let t="workspace"===o.scope?'Workspace skill "'.concat(o.name,'" has the same ID.\nIt will override this global skill in that project.\n\nContinue?'):"extension"===o.scope?'Skill "'.concat(o.name,'" from extension ').concat(null!=(i=o.extId)?i:""," has the same ID.\nThe new ").concat(e," skill will override it at runtime.\n\nContinue?"):'Global skill "'.concat(o.name,'" has the same ID.\nWorkspace version will override it at runtime.\n\nContinue?');if(!await (0,E.fN)(t))return}try{let l=(await u.FH.skills.create({name:r.trim(),scope:e,projectId:"workspace"===e?d:void 0})).skill;o?n(t.map(t=>t.id===l.id&&("workspace"===e?"workspace"!==t.scope:"extension"===t.scope)?{...t,overridden:!0}:t).concat(l)):s(l),f(t=>new Set(t).add(e)),a(oZ(l)),lq()}catch(e){console.error("[SkillsSidebar] Create failed:",e)}}async function y(e,t){if(e.stopPropagation(),await (0,E.fN)('Delete skill "'.concat(t.name,'"?')))try{await u.FH.skills.remove(t.id,"workspace"===t.scope?{scope:"workspace",projectId:d}:void 0),i(oZ(t)),lq()}catch(e){console.error("[SkillsSidebar] Delete failed:",e)}}async function w(e,r){e.stopPropagation();try{let e=await u.FH.skills.toggle(r.id,{scope:r.scope,projectId:d});n(t.map(t=>oZ(t)===oZ(r)?{...t,disabled:e.disabled}:t)),lq()}catch(e){console.error("[SkillsSidebar] Toggle failed:",e)}}(0,o.useEffect)(()=>{localStorage.setItem(oX,JSON.stringify([...m]))},[m]),(0,o.useEffect)(()=>{g(!0),u.FH.skills.list(d).then(e=>n(e.skills)).catch(()=>{}).finally(()=>g(!1))},[d,v,n]),(0,o.useEffect)(()=>{if(d)return h(p,lq)},[d]),(0,o.useEffect)(()=>{let e=()=>lq();return window.addEventListener("focus",e),()=>window.removeEventListener("focus",e)},[]);let j=t.filter(e=>"global"===e.scope),k=t.filter(e=>"workspace"===e.scope),N=t.filter(e=>"extension"===e.scope),S=(t,n,s,o)=>{let i=m.has(t),c="extension"===t;return(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex items-center h-8 px-2 hover:bg-[var(--secondary)]/50 transition-colors",children:[(0,l.jsxs)("button",{onClick:()=>{f(e=>{let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r})},className:"flex items-center gap-1.5 flex-1 min-w-0",children:[(0,l.jsx)(F.A,{className:(0,E.cn)("h-3 w-3 shrink-0 text-[var(--muted-foreground)] transition-transform",i&&"rotate-90")}),(0,l.jsx)(n,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-[11px] font-medium text-[var(--foreground)] truncate",children:s}),(0,l.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)] ml-auto",children:o.length})]}),!c&&(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),b(t)},title:"New ".concat(t," skill"),className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--secondary)]",children:(0,l.jsx)(lC.A,{className:"h-3 w-3"})})]}),i&&o.map(t=>{var n;let s=oZ(t);return(0,l.jsxs)("div",{onClick:()=>a(s),className:(0,E.cn)("group flex w-full items-center gap-2 pl-7 pr-2 py-1.5 cursor-pointer transition-colors",r===s?"bg-[var(--secondary)]":"hover:bg-[var(--secondary)]/50",(t.overridden||t.disabled)&&"opacity-40"),children:[(0,l.jsx)(o$.A,{className:"h-3 w-3 shrink-0 text-amber-500"}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",title:c?t.description:void 0,children:[(0,l.jsx)("p",{className:"text-[11px] font-medium text-[var(--foreground)] truncate",children:t.name}),(t.disabled||t.overridden||t.description||c)&&(0,l.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate",children:t.disabled?"disabled":t.overridden?"overridden":c?e("skill.fromExtension",{ext:null!=(n=t.extId)?n:""}):t.description})]}),(0,l.jsx)("button",{onClick:e=>w(e,t),className:(0,E.cn)("shrink-0 rounded p-0.5 text-[var(--muted-foreground)] transition-opacity hover:text-[var(--foreground)]",t.disabled?"opacity-100":"opacity-0 group-hover:opacity-100"),title:t.disabled?"Enable skill":"Disable skill",children:t.disabled?(0,l.jsx)(oY.A,{className:"h-4.5 w-4.5"}):(0,l.jsx)(oJ.A,{className:"h-4.5 w-4.5 text-blue-500"})}),!c&&(0,l.jsx)("button",{onClick:e=>y(e,t),className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 transition-opacity group-hover:opacity-100 hover:text-red-400",title:"Delete skill",children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]},s)})]},t)};return(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 shrink-0 items-center border-b border-[var(--border)] px-3",children:[(0,l.jsx)(o$.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"ml-2 text-sm font-medium text-[var(--foreground)]",children:e("skill.skills")}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:()=>lq(),disabled:x,title:"Refresh skills",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",x&&"animate-spin")})})]}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto py-1",children:[S("global",U.A,e("common.global"),j),d&&S("workspace",L.A,e("common.workspace"),k),N.length>0&&S("extension",r7.A,e("skill.section.extension"),N),0===t.length&&(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center gap-2 p-6 text-center",children:[(0,l.jsx)(o$.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:e("skill.noSkills")})]})]})]})}var o3=r(67889),o2=r(79773),o5=r(73743),o4=r(4196);function o8(e){let{value:t,disabled:r,presets:n,placeholder:a,onCommit:s,minWidth:i=240,className:c}=e,[d,u]=(0,o.useState)(t),[m,p]=(0,o.useState)(!1),[h,f]=(0,o.useState)(""),[x,g]=(0,o.useState)(0),v=(0,o.useRef)(null),b=(0,o.useRef)(null);(0,o.useEffect)(()=>{u(t)},[t]),(0,o.useEffect)(()=>{m&&(f(""),g(0),setTimeout(()=>{var e;return null==(e=b.current)?void 0:e.focus()},0))},[m]);let y=(0,o.useMemo)(()=>{if(!h)return n;let e=h.toLowerCase();return n.filter(t=>t.id.toLowerCase().includes(e)||t.label.toLowerCase().includes(e))},[h,n]);function w(e){u(e),p(!1),e!==t&&s(e)}function j(){d!==t&&s(d)}return(0,o.useEffect)(()=>{x>=y.length&&g(0)},[y.length,x]),(0,o.useEffect)(()=>{if(m)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){v.current&&!v.current.contains(e.target)&&p(!1)}},[m]),(0,l.jsxs)("div",{ref:v,className:"relative ".concat(null!=c?c:""),style:{minWidth:i},children:[(0,l.jsx)("input",{value:d,disabled:r,onFocus:()=>p(!0),onChange:e=>u(e.target.value),onBlur:()=>{setTimeout(()=>{m||j()},120)},onKeyDown:e=>{"ArrowDown"!==e.key||m?"Enter"===e.key?(e.preventDefault(),j()):"Escape"===e.key&&p(!1):(e.preventDefault(),p(!0))},placeholder:a,className:"h-7 w-full rounded border border-[var(--border)] bg-[var(--card)] px-2 pr-6 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]"}),(0,l.jsx)("span",{className:"pointer-events-none absolute right-2 top-1/2 -translate-y-1/2 text-[10px] opacity-50",children:"▾"}),m&&(0,l.jsxs)("div",{className:"absolute left-0 right-0 top-[calc(100%+2px)] z-20 max-h-72 overflow-hidden rounded border border-[var(--border)] bg-[var(--card)] shadow-lg",children:[(0,l.jsx)("div",{className:"border-b border-[var(--border)] p-1",children:(0,l.jsx)("input",{ref:b,value:h,onChange:e=>{f(e.target.value),g(0)},onKeyDown:e=>{if("ArrowDown"===e.key)e.preventDefault(),g(e=>Math.min(y.length-1,e+1));else if("ArrowUp"===e.key)e.preventDefault(),g(e=>Math.max(0,e-1));else if("Enter"===e.key){e.preventDefault();let t=y[x];t&&w(t.id)}else"Escape"===e.key&&p(!1)},placeholder:"Filter…",className:"h-6 w-full rounded border border-[var(--border)] bg-[var(--background)] px-2 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]"})}),(0,l.jsx)("div",{className:"max-h-56 overflow-auto",children:0===y.length?(0,l.jsx)("div",{className:"px-2 py-2 text-xs text-[var(--muted-foreground)]",children:"No matches"}):y.map((e,t)=>(0,l.jsxs)("div",{onMouseDown:t=>{t.preventDefault(),w(e.id)},onMouseEnter:()=>g(t),className:"cursor-pointer px-2 py-1 text-xs ".concat(t===x?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--foreground)] hover:bg-[var(--secondary)]"),children:[(0,l.jsx)("div",{className:"font-medium",children:e.label}),e.label!==e.id&&(0,l.jsx)("div",{className:"text-[10px] ".concat(t===x?"opacity-80":"opacity-60"),children:e.id})]},e.id))})]})]})}let o6=e=>Array.isArray(e)?e.filter(e=>"string"==typeof e&&e.length>0):[];function o9(e,t){let r="string"==typeof(null==e?void 0:e.defaultEndpoint)?e.defaultEndpoint:"",n=o6(null==t?void 0:t.endpoints);return 0===n.length?{presets:o6(null==e?void 0:e.endpointPresets),defaultEndpoint:r,modelScoped:!1}:{presets:n,defaultEndpoint:n.includes(r)?r:n[0],modelScoped:!0}}let o7={promptCaching:{ttlPresets:[{value:"5m",label:"5min"},{value:"1h",label:"1hour"}]},thinking:{effortPresets:[{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"},{value:"max",label:"Max"}]},verbosity:{presets:[{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"}]}};function ie(e,t){var r,n,a,s,l,o,i,c,d,u;let m=null==e?void 0:e.capabilities,p={},h=null==m?void 0:m.thinking,f=t.thinking;if(h||f){let e=null!=(r=null==h?void 0:h.mode)?r:"adaptive";if(f?!f.enabled:!(null==h?void 0:h.defaultEnabled))p.thinking=void 0;else if("manual"===e){let e=null==f?void 0:f.budget_tokens;p.thinking={enabled:!0,budget_tokens:null!=(n=null!=e?e:null==h?void 0:h.defaultBudgetTokens)?n:8192}}else{let e=null==h?void 0:h.effortPresets,t=null!=(s=null==f?void 0:f.effort)?s:null==f?void 0:f.budget,r=t&&(null==e?void 0:e.some(e=>e.value===t)),n=null!=(o=null!=(l=null==h?void 0:h.default)?l:null==e||null==(a=e[0])?void 0:a.value)?o:"medium";p.thinking={enabled:!0,effort:r?t:n}}}let x=null==m?void 0:m.promptCaching,g=null==x?void 0:x.ttlPresets;if(null==g?void 0:g.length){let e=t.promptCaching,r="string"==typeof e?e:void 0;r&&g.some(e=>e.value===r)?p.promptCaching=r:r?p.promptCaching=null!=(i=null==x?void 0:x.default)?i:g[0].value:p.promptCaching=null==(c=null==x?void 0:x.defaultEnabled)||c?null!=(d=null==x?void 0:x.default)?d:g[0].value:void 0}else p.promptCaching=void 0;let v=null==m?void 0:m.verbosity,b=null==v?void 0:v.presets,y="string"==typeof t.verbosity?t.verbosity:void 0;return(null==b?void 0:b.length)?y&&b.some(e=>e.value===y)?p.verbosity=y:p.verbosity=null!=(u=null==v?void 0:v.default)?u:void 0:p.verbosity=void 0,p}function it(e){var t;return null!=(t=null==e?void 0:e.maxContextWindow)?t:null==e?void 0:e.contextWindow}function ir(e,t,r){if(!t||0===Object.keys(r).length)return;let n={...r},a="number"==typeof r.maxTokens?r.maxTokens:void 0,s=it(t);void 0!==t.contextWindow&&(void 0===a||a===(null==e?void 0:e.contextWindow)||void 0!==s&&a>s)&&(n.maxTokens=Math.min(t.contextWindow,null!=s?s:t.contextWindow));let l="number"==typeof r.compressAt?r.compressAt:void 0;return void 0!==t.compressAt&&(void 0===l||l===(null==e?void 0:e.compressAt))&&(n.compressAt=t.compressAt),n.maxTokens===r.maxTokens&&n.compressAt===r.compressAt?void 0:n}function ia(e){let{value:t,max:r,onCommit:n}=e,a=(0,T.kj)(),[s,i]=(0,o.useState)(String(t)),[c,d]=(0,o.useState)(t);t!==c&&(d(t),i(String(t)));let u=void 0!==r&&Number(s)>r;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("input",{type:"number",value:s,onChange:e=>{i(e.target.value);let t=Number(e.target.value);Number.isInteger(t)&&t>0&&(void 0===r||t<=r)&&n(t)},className:(0,E.cn)(is,"mt-1",u&&"border-red-500 focus:border-red-500")}),void 0!==r&&(0,l.jsx)("p",{className:(0,E.cn)(io,"mt-0.5",u&&"text-red-500"),children:a(u?"agent.contextOverMax":"agent.contextMax",{max:r.toLocaleString()})})]})}let is="h-7 w-full rounded border border-[var(--border)] bg-[var(--card)] px-2 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]",il="text-[11px] font-medium text-[var(--foreground)]",io="text-[10px] text-[var(--muted-foreground)]";function ii(e){let{label:t,enabled:r,value:n,defaultValue:a,presets:s,onChange:o}=e;return(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,l.jsx)("input",{type:"checkbox",checked:r,onChange:e=>o(e.target.checked?n||a:void 0),className:"rounded border-[var(--border)] bg-[var(--card)] text-[var(--primary)] focus:ring-[var(--primary)] h-3.5 w-3.5 cursor-pointer"}),(0,l.jsx)("span",{className:il,children:t})]}),r&&(0,l.jsx)(o8,{value:n||a,presets:s.map(e=>({id:e.value,label:e.label})),onCommit:e=>o(e||void 0),minWidth:110,className:"h-7"})]})}function ic(e){var t,r,n,a,s,i,c,d,u,m,p,h;let{data:f,availableSkills:x,availableTools:g,allAgents:v,selfId:b,modelsRegistry:y,onUpdate:w,onUpdateNested:j,onToggleArrayItem:k}=e,N=(0,T.kj)(),S=null!=(n=f.model)?n:{},C=null!=(a=f.context)?a:{},A=Array.isArray(f.skills)?f.skills:[],I=Array.isArray(f.tools)?f.tools:[],_=Array.isArray(f.team)?f.team:void 0,P=null!=(s=null==y||null==(t=y.providers)?void 0:t.flatMap(e=>e.models))?s:[],M=String(null!=(i=S.id)?i:""),F=P.find(e=>e.id===M),[D,L]=(0,o.useState)(null);return(0,l.jsxs)("div",{className:"h-full overflow-y-auto p-5 space-y-5",children:[(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:N("agent.basic")}),(0,l.jsxs)("div",{className:"grid grid-cols-[1fr_1fr_80px] gap-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.name")}),(0,l.jsx)("input",{value:String(null!=(c=f.name)?c:""),onChange:e=>w("name",e.target.value),className:(0,E.cn)(is,"mt-1")})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.description")}),(0,l.jsx)("input",{value:String(null!=(d=f.description)?d:""),onChange:e=>w("description",e.target.value),className:(0,E.cn)(is,"mt-1")})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.priority")}),(0,l.jsx)("input",{type:"number",value:null!=f.priority?String(f.priority):"",onChange:e=>w("priority",e.target.value?Number(e.target.value):void 0),className:(0,E.cn)(is,"mt-1"),placeholder:"0"})]})]})]}),(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:N("agent.model")}),(0,l.jsxs)("div",{className:"grid grid-cols-4 gap-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.provider")}),y&&y.providers.length>0?(0,l.jsx)("select",{value:String(null!=(m=S.provider)?m:null!=(u=null==(r=y.providers[0])?void 0:r.id)?u:""),onChange:e=>{var t,r,n,a;let s=y.providers.find(t=>t.id===e.target.value),l=String(null!=(t=S.id)?t:""),o=null==s?void 0:s.models.some(e=>e.id===l),i=null!=(n=null!=(r=null==s?void 0:s.models.find(e=>e.id===s.defaultModelId))?r:o?s.models.find(e=>e.id===l):void 0)?n:null==s?void 0:s.models[0];L(null),w("model",{...S,provider:e.target.value,id:null!=(a=null==i?void 0:i.id)?a:"",endpoint:o9(s,i).defaultEndpoint,...ie(i,S)});let c=ir(F,i,C);c&&w("context",c)},className:(0,E.cn)("h-7 w-full rounded border border-[var(--border)] bg-[var(--card)] px-2 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)] appearance-none cursor-pointer","mt-1"),children:y.providers.map(e=>{var t;return(0,l.jsx)("option",{value:e.id,title:e.description,children:null!=(t=e.displayName)?t:e.id},e.id)})}):(0,l.jsx)("input",{value:String(null!=(p=S.provider)?p:""),onChange:e=>j("model","provider",e.target.value),className:(0,E.cn)(is,"mt-1")})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.modelId")}),(()=>{var e,t,r,n;let a=String(null!=(r=S.provider)?r:null!=(t=null==y||null==(e=y.providers[0])?void 0:e.id)?t:""),s=null==y?void 0:y.providers.find(e=>e.id===a),o=null!=(n=null==s?void 0:s.models)?n:[];return(0,l.jsx)(o8,{value:M,presets:o.map(e=>{var t;return{id:e.id,label:null!=(t=e.displayName)?t:e.id}}),placeholder:"model id",onCommit:e=>(function(e){var t,r,n;let a=o.find(t=>t.id===e),l=o9(s,a),i=String(null!=(t=S.endpoint)?t:"")||(null!=(r=null==s?void 0:s.defaultEndpoint)?r:""),c=l.modelScoped&&!l.presets.includes(i)?l.defaultEndpoint:void 0;L(c?N("agent.endpointSwitched",{endpoint:c,model:null!=(n=null==a?void 0:a.displayName)?n:e}):null),w("model",{...S,id:e,...c?{endpoint:c}:{},...ie(a,S)});let d=ir(F,a,C);d&&w("context",d)})(e),className:"mt-1"})})()]}),(()=>{var e,t,r,n,a;let s=String(null!=(r=S.provider)?r:null!=(t=null==y||null==(e=y.providers[0])?void 0:e.id)?t:""),o=null==y?void 0:y.providers.find(e=>e.id===s),i=null==o?void 0:o.models.find(e=>e.id===M),{presets:c,defaultEndpoint:d,modelScoped:u}=o9(o,i),m=String(null!=(n=S.endpoint)?n:""),p=u&&""!==m&&!c.includes(m);return(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.endpoint")}),(0,l.jsx)(o8,{value:m,presets:c.map(e=>({id:e,label:e})),placeholder:d||"https://...",onCommit:e=>{L(null),j("model","endpoint",e)},className:"mt-1"}),d&&!S.endpoint&&(0,l.jsxs)("p",{className:(0,E.cn)(io,"mt-0.5"),children:["Default: ",d]}),D&&(0,l.jsx)("p",{className:(0,E.cn)(io,"mt-0.5"),children:D}),p&&(0,l.jsx)("p",{className:(0,E.cn)(io,"mt-0.5 text-amber-500"),children:N("agent.endpointOffList",{model:null!=(a=null==i?void 0:i.displayName)?a:M})})]})})(),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:N("agent.maxTokens")}),(0,l.jsx)("input",{type:"number",value:null!=S.maxTokens?String(S.maxTokens):"",onChange:e=>j("model","maxTokens",e.target.value?Number(e.target.value):void 0),className:(0,E.cn)(is,"mt-1"),placeholder:(null==F?void 0:F.maxOutputTokens)?String(F.maxOutputTokens):"auto"}),(0,l.jsx)("p",{className:(0,E.cn)(io,"mt-0.5"),children:(null==F?void 0:F.maxOutputTokens)?N("agent.maxTokensDefault",{max:F.maxOutputTokens.toLocaleString()}):N("agent.maxTokensAuto")})]})]}),(()=>{var e,t,r,n,a,s,o,i;let c=null!=(s=null==F?void 0:F.capabilities)?s:M?o7:null;if(!c)return null;let d=null==(e=c.promptCaching)?void 0:e.ttlPresets,u=null==(t=c.thinking)?void 0:t.effortPresets;return(0,l.jsxs)("div",{className:"flex flex-wrap gap-6 pt-1",children:[d&&(0,l.jsx)(ii,{label:"Prompt Caching",enabled:!!S.promptCaching,value:"string"==typeof S.promptCaching?S.promptCaching:"",defaultValue:null!=(o=null==(r=c.promptCaching)?void 0:r.default)?o:d[0].value,presets:d,onChange:e=>j("model","promptCaching",e)}),(null==(a=c.verbosity)||null==(n=a.presets)?void 0:n.length)&&(0,l.jsx)(ii,{label:"Verbosity",enabled:"string"==typeof S.verbosity,value:"string"==typeof S.verbosity?S.verbosity:"",defaultValue:null!=(i=c.verbosity.default)?i:c.verbosity.presets[0].value,presets:c.verbosity.presets,onChange:e=>j("model","verbosity",e)}),(()=>{let e=!F&&""!==M,t=S.image,r=S.video,n=S.audio;if(e){let e=e=>{let{field:t,label:r,value:n}=e;return(0,l.jsx)("button",{type:"button",onClick:()=>j("model",t,!n||void 0),className:(0,E.cn)("rounded px-2 py-0.5 text-[10px] font-medium transition-colors cursor-pointer",n?"bg-[var(--primary)] text-[var(--primary-foreground)]":"bg-[var(--secondary)] text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:r})};return(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[(0,l.jsx)(e,{field:"image",label:"Image",value:t}),(0,l.jsx)(e,{field:"video",label:"Video",value:r}),(0,l.jsx)(e,{field:"audio",label:"Audio",value:n})]})}return void 0===c.image&&void 0===c.video&&void 0===c.audio?null:(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[void 0!==c.image&&(0,l.jsx)("span",{className:(0,E.cn)("rounded px-2 py-0.5 text-[10px] font-medium",c.image?"bg-emerald-500/15 text-emerald-600":"bg-[var(--secondary)] text-[var(--muted-foreground)]"),children:"Image"}),void 0!==c.video&&(0,l.jsx)("span",{className:(0,E.cn)("rounded px-2 py-0.5 text-[10px] font-medium",c.video?"bg-emerald-500/15 text-emerald-600":"bg-[var(--secondary)] text-[var(--muted-foreground)]"),children:"Video"}),void 0!==c.audio&&(0,l.jsx)("span",{className:(0,E.cn)("rounded px-2 py-0.5 text-[10px] font-medium",c.audio?"bg-emerald-500/15 text-emerald-600":"bg-[var(--secondary)] text-[var(--muted-foreground)]"),children:"Audio"})]})})(),(u||c.thinking)&&(()=>{var e,t,r,n,a,s,o,i,d;let m=S.thinking,p=!!(null==m?void 0:m.enabled),h=!F&&""!==M,f=null!=(n=null==(e=c.thinking)?void 0:e.mode)?n:"adaptive",x=h?(null==m?void 0:m.budget_tokens)!=null?"manual":"adaptive":f,g=null!=(s=null!=(a=null==(t=c.thinking)?void 0:t.default)?a:null==u||null==(r=u[0])?void 0:r.value)?s:"medium",v="manual"===x?{enabled:!0,budget_tokens:8192}:{enabled:!0,effort:g};return(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,l.jsx)("input",{type:"checkbox",checked:p,onChange:e=>{j("model","thinking",e.target.checked?v:void 0)},className:"rounded border-[var(--border)] bg-[var(--card)] text-[var(--primary)] focus:ring-[var(--primary)] h-3.5 w-3.5 cursor-pointer"}),(0,l.jsx)("span",{className:il,children:"Thinking"})]}),p&&"adaptive"===x&&u&&(0,l.jsx)(o8,{value:null!=(i=null!=(o=null==m?void 0:m.effort)?o:null==m?void 0:m.budget)?i:g,presets:u.map(e=>({id:e.value,label:e.label})),onCommit:e=>j("model","thinking",{enabled:!0,effort:e}),minWidth:110,className:"h-7"}),p&&"manual"===x&&(0,l.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,l.jsx)("span",{className:io,children:"budget"}),(0,l.jsx)("input",{type:"number",min:1024,step:1024,value:null!=(d=null==m?void 0:m.budget_tokens)?d:8192,onChange:e=>{let t=parseInt(e.target.value,10);Number.isFinite(t)&&t>0&&j("model","thinking",{enabled:!0,budget_tokens:t})},className:"h-6 w-24 rounded border border-[var(--border)] bg-[var(--card)] px-2 text-[10px] text-[var(--foreground)] outline-none focus:border-[var(--primary)]"}),(0,l.jsx)("span",{className:io,children:"tokens"})]}),p&&h&&(0,l.jsx)("button",{type:"button",onClick:()=>{"adaptive"===x?j("model","thinking",{enabled:!0,budget_tokens:8192}):j("model","thinking",{enabled:!0,effort:g})},className:"text-[10px] text-[var(--muted-foreground)] hover:text-[var(--foreground)] underline cursor-pointer",children:"adaptive"===x?"use budget":"use effort"})]})})()]})})(),Object.keys(C).length>0&&(0,l.jsx)("div",{className:"grid grid-cols-2 gap-4 pt-1",children:Object.entries(C).map(e=>{let[t,r]=e;return(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:il,children:"context.".concat(t)}),"maxTokens"===t&&"number"==typeof r?(0,l.jsx)(ia,{value:r,max:it(F),onCommit:e=>j("context",t,e)}):(0,l.jsx)("input",{type:"number"==typeof r?"number":"text",step:"number"==typeof r&&r<1?"0.1":void 0,value:String(null!=r?r:""),onChange:e=>j("context",t,"number"==typeof r?Number(e.target.value):e.target.value),className:(0,E.cn)(is,"mt-1")})]},t)})})]}),(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:N("agent.systemPrompt")}),(0,l.jsx)("span",{className:"text-[9px] text-[var(--muted-foreground)] opacity-60",children:N("agent.systemPromptHint")})]}),(0,l.jsx)("textarea",{value:String(null!=(h=f.system_prompt)?h:""),onChange:e=>w("system_prompt",e.target.value),rows:8,className:"w-full rounded border border-[var(--border)] bg-[var(--card)] px-3 py-2 text-xs leading-relaxed text-[var(--foreground)] outline-none focus:border-[var(--primary)] resize-y font-mono",placeholder:N("agent.systemPromptPlaceholder")})]}),(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:N("agent.team")}),(0,l.jsx)("span",{className:"text-[9px] text-[var(--muted-foreground)] opacity-60",children:N("agent.teamHint")})]}),(0,l.jsx)("div",{className:"flex flex-wrap gap-2",children:v.map(e=>{let t=void 0!==_&&_.includes(e.id);return(0,l.jsxs)("button",{type:"button",title:e.id,onClick:()=>{let t=null!=_?_:[],r=t.includes(e.id)?t.filter(t=>t!==e.id):[...t,e.id];w("team",0===r.length?void 0:r)},className:(0,E.cn)("rounded-full px-3 py-1 text-xs font-medium transition-colors cursor-pointer",t?"bg-[var(--primary)] text-[var(--primary-foreground)]":"bg-[var(--secondary)] text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/80 hover:text-[var(--foreground)]"),children:[e.name,e.id===b?" (you)":""]},e.id)})})]}),(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Tools"}),0===g.length?(0,l.jsx)("p",{className:io,children:N("agent.loadingTools")}):(()=>{var e;let t=new Set(g.map(e=>e.name)),r=new Set(["query_agent","start_session","session_list","get_session_output","query_session","interrupt_session","stop_session","archive_session"]),n=I.filter(e=>!t.has(e)&&!r.has(e)),a=S.image,s=null!=a?a:null==F||null==(e=F.capabilities)?void 0:e.image;return(0,l.jsxs)("div",{className:"flex flex-wrap gap-2",children:[g.map(e=>{let t=I.includes(e.name),r="view_image"===e.name&&""!==M&&!0!==s,n=r?"".concat(e.description,"\n\nNote: the selected model does not declare capabilities.image: true — view_image will be dropped from this agent's tool list at runtime."):e.description;return(0,l.jsxs)("button",{type:"button",title:n,onClick:()=>k("tools",e.name),className:(0,E.cn)("rounded-full px-3 py-1 text-xs font-medium transition-colors cursor-pointer",t?"bg-[var(--primary)] text-[var(--primary-foreground)]":"bg-[var(--secondary)] text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/80 hover:text-[var(--foreground)]",r&&"opacity-50"),children:[e.name,r&&(0,l.jsx)("span",{className:"ml-1",children:"⊘"})]},e.name)}),n.map(e=>(0,l.jsxs)("button",{type:"button",title:'Tool "'.concat(e,'" is not available in this server. Click to remove from this agent.'),onClick:()=>k("tools",e),className:"rounded-full px-3 py-1 text-xs font-medium transition-colors cursor-pointer border border-[var(--destructive)] bg-[var(--destructive)]/10 text-[var(--destructive)] hover:bg-[var(--destructive)]/20",children:["⚠ ",e]},"missing-".concat(e)))]})})()]}),(0,l.jsxs)("section",{className:"space-y-3",children:[(0,l.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Skills"}),(()=>{let e=x.filter(e=>!e.disabled&&!e.overridden),t=new Set(e.map(e=>e.id)),r=A.filter(e=>!t.has(e));return 0===e.length&&0===r.length?(0,l.jsx)("p",{className:io,children:N("agent.noSkills")}):(0,l.jsxs)("div",{className:"flex flex-wrap gap-2",children:[e.map(e=>{let t=A.includes(e.id);return(0,l.jsx)("button",{type:"button",title:[e.description,"(".concat(e.scope,")")].filter(Boolean).join(" "),onClick:()=>k("skills",e.id),className:(0,E.cn)("rounded-full px-3 py-1 text-xs font-medium transition-colors cursor-pointer",t?"bg-[var(--primary)] text-[var(--primary-foreground)]":"bg-[var(--secondary)] text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/80 hover:text-[var(--foreground)]"),children:e.name},e.id)}),r.map(e=>(0,l.jsxs)("button",{type:"button",title:'Skill "'.concat(e,'" is not installed. Add it to ~/.halo/global/skills/ or ',"<workspace>","/.halo/skills/, or click to remove from this agent."),onClick:()=>k("skills",e),className:"rounded-full px-3 py-1 text-xs font-medium transition-colors cursor-pointer border border-[var(--destructive)] bg-[var(--destructive)]/10 text-[var(--destructive)] hover:bg-[var(--destructive)]/20",children:["⚠ ",e]},"missing-".concat(e)))]})})()]})]})}function id(e){return"".concat(e.id,":").concat(e.scope)}let iu="halo_agents_selectedKey",im="halo_agents_expandedScopes";function ip(){try{let e=localStorage.getItem(im);if(e)return new Set(JSON.parse(e))}catch(e){}return new Set(["global","workspace"])}function ih(){var e,t;let r=(0,T.kj)(),n=rU(e=>e.activeProject),a=null!=(e=null==n?void 0:n.path)?e:void 0,[s,i]=(0,o.useState)([]),[d,m]=(0,o.useState)(()=>localStorage.getItem(iu)),[f,x]=(0,o.useState)(ip),{skills:g,setSkills:v}=o0(),[b,y]=(0,o.useState)(null),[w,j]=(0,o.useState)(!1);(0,o.useEffect)(()=>{d?localStorage.setItem(iu,d):localStorage.removeItem(iu)},[d]),(0,o.useEffect)(()=>{localStorage.setItem(im,JSON.stringify([...f]))},[f]);let k=sq(e=>e.version);(0,o.useEffect)(()=>{u.FH.agentConfigs.models().then(y).catch(()=>{})},[k]);let N=(0,o.useCallback)(async()=>{j(!0);try{let e=(await u.FH.agentConfigs.list(a)).agents.filter(e=>!(e.internal&&"goal"===e.id));i(e),!e.some(e=>id(e)===d)&&e.length>0&&m(id(e[0]))}catch(e){console.error("[AgentManagement] Load failed:",e)}finally{j(!1)}},[a,d]),S=lB(e=>e.version);(0,o.useEffect)(()=>{N()},[N,S]),(0,o.useEffect)(()=>{if(!a)return;let e=p.on("file:changed",e=>{("add"===e.action||"unlink"===e.action||"addDir"===e.action||"unlinkDir"===e.action)&&e.path.startsWith(".halo/agents/")&&lW()}),t=h(p,lW);return()=>{e(),t()}},[a]),(0,o.useEffect)(()=>{let e=()=>lW();return window.addEventListener("focus",e),()=>window.removeEventListener("focus",e)},[]);let C=lG(e=>e.version),A=(0,o.useRef)(C);(0,o.useEffect)(()=>{g.length>0&&A.current===C||(A.current=C,u.FH.skills.list(null==n?void 0:n.path).then(e=>{v(e.skills)}).catch(()=>{}))},[null==n?void 0:n.path,g.length,v,C]);let I=null!=(t=s.find(e=>id(e)===d))?t:null;async function _(e){var t;if("workspace"===e&&!a)return;let r=await (0,E.ZC)("Agent name:");if(!(null==r?void 0:r.trim()))return;let n=null!=(t=await (0,E.ZC)("Agent description (optional):"))?t:"",l=r.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fff]+/g,"-").replace(/^-|-$/g,""),o="workspace"===e?"global":"workspace",c=s.find(e=>e.id===l&&e.scope===o);if(c){let t="workspace"===e?'Global agent "'.concat(c.name,'" has the same ID.\nWorkspace version will override it at runtime.\n\nContinue?'):'Workspace agent "'.concat(c.name,'" has the same ID.\nIt will override this global agent in that project.\n\nContinue?');if(!await (0,E.fN)(t))return}try{let t=(await u.FH.agentConfigs.create({name:r.trim(),description:n.trim(),scope:e,projectId:"workspace"===e?a:void 0})).agent;i(r=>[..."workspace"===e?r.map(e=>e.id===t.id&&"global"===e.scope?{...e,overridden:!0}:e):r,t]),x(t=>new Set(t).add(e)),m(id(t)),lW()}catch(e){console.error("[AgentManagement] Create failed:",e)}}async function P(e){if(await (0,E.fN)('Delete agent "'.concat(e.name,'"?')))try{await u.FH.agentConfigs.remove(e.id,{scope:e.scope,projectId:a}),i(t=>{let r=t.filter(t=>id(t)!==id(e));return"workspace"===e.scope?r.map(t=>t.id===e.id&&"global"===t.scope?{...t,overridden:!1}:t):r}),d===id(e)&&m(null),lW()}catch(e){console.error("[AgentManagement] Delete failed:",e)}}async function M(e){try{let{disabled:t}=await u.FH.agentConfigs.toggle(e.id,{scope:e.scope,projectId:a});i(r=>r.map(r=>id(r)===id(e)?{...r,disabled:t}:r)),lW()}catch(e){console.error("[AgentManagement] Toggle failed:",e)}}let D=s.filter(e=>e.internal),R=s.filter(e=>"global"===e.scope&&!e.internal),H=s.filter(e=>"workspace"===e.scope&&!e.internal),z=(()=>{let e=new Map;for(let t of[...R,...H])t.overridden||t.disabled||e.set(t.id,{id:t.id,name:t.name});return[...e.values()]})(),O=function(e,t,r,n){let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{allowCreate:!0},o=f.has(e);return(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex items-center h-8 px-2 hover:bg-[var(--secondary)]/50 transition-colors",children:[(0,l.jsxs)("button",{onClick:()=>{x(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},className:"flex items-center gap-1.5 flex-1 min-w-0",children:[(0,l.jsx)(F.A,{className:(0,E.cn)("h-3 w-3 shrink-0 text-[var(--muted-foreground)] transition-transform",o&&"rotate-90")}),(0,l.jsx)(t,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-[11px] font-medium text-[var(--foreground)] truncate",children:r}),(0,l.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)] ml-auto",children:n.length})]}),s.allowCreate&&"internal"!==e&&(0,l.jsx)("button",{onClick:t=>{t.stopPropagation(),_(e)},title:"New ".concat(e," agent"),className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:bg-[var(--secondary)]",children:(0,l.jsx)(lC.A,{className:"h-3 w-3"})})]}),o&&n.map(t=>{let r=id(t);return(0,l.jsxs)("div",{className:(0,E.cn)("group flex w-full items-center gap-2 pl-7 pr-2 py-1.5 cursor-pointer transition-colors",d===r?"bg-[var(--secondary)]":"hover:bg-[var(--secondary)]/50",(t.overridden||t.disabled)&&"opacity-40"),onClick:()=>m(r),children:[(0,l.jsx)(aL.A,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("p",{className:"text-[11px] font-medium text-[var(--foreground)] truncate",children:t.name}),(t.overridden||t.disabled||t.description)&&(0,l.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] truncate",children:t.overridden?"overridden":t.disabled?"disabled":t.description})]}),"internal"!==e&&a&&(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),M(t)},title:t.disabled?"Enable (show in roster)":"Disable (hide from roster)",className:(0,E.cn)("shrink-0 rounded p-0.5 text-[var(--muted-foreground)] transition-opacity hover:text-[var(--foreground)]",t.disabled?"opacity-100":"opacity-0 group-hover:opacity-100"),children:t.disabled?(0,l.jsx)(oY.A,{className:"h-4.5 w-4.5"}):(0,l.jsx)(oJ.A,{className:"h-4.5 w-4.5 text-blue-500"})}),"global"===t.scope?(0,l.jsx)("span",{title:"Global agent (cannot delete)",children:(0,l.jsx)(o3.A,{className:"h-3 w-3 shrink-0 text-amber-500"})}):(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),P(t)},className:"shrink-0 rounded p-0.5 text-[var(--muted-foreground)] opacity-0 transition-opacity group-hover:opacity-100 hover:text-red-400",children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]},r)})]},e)};return(0,l.jsxs)(c.YZ,{direction:"horizontal",autoSaveId:"halo-agent-mgmt",className:"h-full",children:[(0,l.jsx)(c.Zk,{defaultSize:22,minSize:12,maxSize:40,children:(0,l.jsxs)("div",{className:"h-full flex flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(aL.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:r("agent.agents")}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:()=>N(),disabled:w,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",title:"Refresh agents",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",w&&"animate-spin")})})]}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto py-1",children:[O("global",U.A,r("common.global"),R),a&&O("workspace",L.A,r("common.workspace"),H),D.length>0&&O("internal",o2.A,r("common.internal"),D,{allowCreate:!1})]})]})}),(0,l.jsx)(c.TW,{className:"w-px bg-[var(--border)] hover:w-1 hover:bg-[var(--primary)] transition-colors"}),(0,l.jsx)(c.Zk,{defaultSize:78,minSize:40,children:I?(0,l.jsx)(ix,{agent:I,allAgents:z,modelsRegistry:b,onSaved:e=>{i(t=>t.map(t=>id(t)===id(e)?e:t))}},id(I)):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 text-center",children:[(0,l.jsx)(aL.A,{className:"h-10 w-10 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:r("agent.selectToEdit")})]})})]})}function ix(e){let{agent:t,allAgents:n,modelsRegistry:a,onSaved:s}=e,i=(0,T.kj)(),{skills:c}=o0(),m=rU(e=>e.activeProject),[p,h]=(0,o.useState)({}),f="halo_agent_view:".concat(id(t)),[x,g]=(0,o.useState)(()=>{var e;return null!=(e=localStorage.getItem(f))?e:"form"}),v=(0,o.useCallback)(e=>{localStorage.setItem(f,e),g(e)},[f]),[b,y]=(0,o.useState)(!0),[w,j]=(0,o.useState)(null),[k,N]=(0,o.useState)(!1),[S,C]=(0,o.useState)([]),[A,I]=(0,o.useState)("");(0,o.useEffect)(()=>{u.FH.agentConfigs.tools().then(e=>C(e.tools)).catch(()=>{})},[]);let E=(0,o.useRef)(s);(0,o.useEffect)(()=>{E.current=s});let _=(0,o.useRef)(null),P=(0,o.useCallback)(async()=>{y(!0),j(null);let e="workspace"===t.scope?null==m?void 0:m.path:void 0;try{let n=await u.FH.agentConfigs.getYaml(t.id,{scope:t.scope,projectId:e}),{parse:a,stringify:s}=await r.e(5510).then(r.bind(r,5510)),l=null,o=!1;try{l=a(n.yaml)}catch(e){o=!0}if(o||null!==l&&("object"!=typeof l||Array.isArray(l)))j("agent.yamlInvalid");else{let e=null!=l?l:{};h(e),_.current=s(e,{lineWidth:120})}}catch(e){console.error("[AgentEditor] Load YAML failed:",e),j("agent.loadFailed"),h({}),_.current=null}try{var n,a;let r=await u.FH.agentConfigs.getMdAll(t.id,{scope:t.scope,projectId:e});I(null!=(a=null==(n=r.files["AGENT.md"])?void 0:n.content)?a:"")}catch(e){I("")}y(!1)},[t.id,t.scope,null==m?void 0:m.path]);(0,o.useEffect)(()=>{P()},[P]);let M=(0,o.useRef)(x);return(0,o.useEffect)(()=>{"edit"===M.current&&"form"===x&&P(),M.current=x},[x,P]),(0,o.useEffect)(()=>{if(b||w)return;let e=setTimeout(async()=>{try{let{stringify:e}=await r.e(5510).then(r.bind(r,5510)),n=e(p,{lineWidth:120});if(_.current===n)return;N(!0);let a="workspace"===t.scope?null==m?void 0:m.path:void 0,s=await u.FH.agentConfigs.saveYaml(t.id,n,{scope:t.scope,projectId:a});_.current=n,E.current(s.agent)}catch(e){console.error("[AgentEditor] Auto-save failed:",e)}finally{N(!1)}},500);return()=>clearTimeout(e)},[p,t.id,t.scope,null==m?void 0:m.path,b,w]),(0,o.useEffect)(()=>{_.current=null},[t.id,t.scope]),(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"flex h-10 items-center justify-between border-b border-[var(--border)] bg-[var(--card)] px-3",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:["edit"===x&&(0,l.jsxs)("button",{onClick:()=>v("form"),className:"flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",title:"Back to form",children:[(0,l.jsx)(o5.A,{className:"h-3 w-3"}),i("agent.back")]}),(0,l.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)]",children:t.name}),(0,l.jsx)("span",{className:"rounded bg-[var(--secondary)] px-1.5 py-0.5 text-[9px] text-[var(--muted-foreground)]",children:t.scope}),"form"===x&&k&&(0,l.jsx)("span",{className:"text-[9px] text-[var(--muted-foreground)]",children:i("agent.saving")})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[!t.internal&&(0,l.jsxs)("button",{onClick:()=>{al(t.id),window.dispatchEvent(new CustomEvent("halo:navigate",{detail:{tab:"explorer"}}))},className:"flex items-center gap-1.5 rounded bg-[var(--secondary)] px-2.5 py-1 text-xs font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]/80",children:[(0,l.jsx)(o4.A,{className:"h-3 w-3"}),i("agent.test")]}),"form"===x&&(0,l.jsxs)("button",{onClick:()=>v("edit"),className:"flex items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1 text-xs font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90",title:i("agent.editHint"),children:[(0,l.jsx)(eX.A,{className:"h-3 w-3"}),i("agent.edit")]})]})]}),(0,l.jsx)("div",{className:"flex-1 min-h-0 overflow-hidden",children:"edit"===x?(0,l.jsx)(d.Ar,{children:(0,l.jsx)(r9,{projectId:t.path,mode:"full",showMaximize:!1})},"".concat(t.id,":").concat(t.scope)):b?(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-[var(--muted-foreground)]",children:i("agent.loading")}):w?(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 text-sm text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{children:i(w)}),(0,l.jsxs)("button",{onClick:()=>P(),className:"flex items-center gap-1.5 rounded bg-[var(--secondary)] px-2.5 py-1 text-xs font-medium text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)]/80",children:[(0,l.jsx)(aD.A,{className:"h-3 w-3"}),i("agent.retry")]})]}):(0,l.jsxs)("div",{className:"h-full overflow-y-auto",children:[(0,l.jsx)(ic,{data:p,availableSkills:c,availableTools:S,allAgents:n,selfId:t.id,modelsRegistry:a,onUpdate:function(e,t){h(r=>({...r,[e]:t}))},onUpdateNested:function(e,t,r){h(n=>{var a;let s=null!=(a=n[e])?a:{};return{...n,[e]:{...s,[t]:r}}})},onToggleArrayItem:function(e,t){h(r=>{let n=Array.isArray(r[e])?[...r[e]]:[],a=n.indexOf(t);return a>=0?n.splice(a,1):n.push(t),{...r,[e]:n}})}}),A.trim()&&(0,l.jsxs)("div",{className:"border-t border-[var(--border)]",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5 px-8 pt-6 text-[10px] uppercase tracking-wide text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{className:"rounded bg-[var(--secondary)] px-1.5 py-0.5",children:"AGENT.md"}),(0,l.jsx)("span",{children:i("agent.mdPreviewHint")})]}),(0,l.jsx)(tu,{content:A})]})]})})]})}function ig(){var e;let{skills:t,selectedKey:r}=o0(),n=null!=(e=t.find(e=>"".concat(e.id,":").concat(e.scope)===r))?e:null;return n?(0,l.jsx)(d.Ar,{children:"extension"===n.scope?(0,l.jsx)(iv,{skill:n}):(0,l.jsx)(r9,{projectId:n.path,mode:"full",showMaximize:!1})},"".concat(n.id,":").concat(n.scope)):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 text-center bg-[var(--background)]",children:[(0,l.jsx)(o$.A,{className:"h-10 w-10 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Select a skill to edit, or create a new one"})]})}function iv(e){var t;let{skill:r}=e,n=(0,T.kj)(),[a,s]=(0,o.useState)([]),[i,c]=(0,o.useState)("SKILL.md"),[d,m]=(0,o.useState)(null);return(0,o.useEffect)(()=>{u.FH.files.search(r.path,"",1e3).then(e=>s(e.matches.map(e=>e.path).sort((e,t)=>"SKILL.md"===e?-1:"SKILL.md"===t?1:e.localeCompare(t)))).catch(()=>s([]))},[r.path]),(0,o.useEffect)(()=>{m(null),u.FH.files.read(i,r.path).then(e=>m(e.content)).catch(e=>m(e instanceof Error?e.message:String(e)))},[i,r.path]),(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsx)(r7.A,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)] truncate",children:r.name}),(0,l.jsxs)("span",{className:"shrink-0 rounded bg-[var(--secondary)] px-1.5 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:[n("skill.fromExtension",{ext:null!=(t=r.extId)?t:""})," \xb7 ",n("skill.readOnly")]}),(0,l.jsx)("span",{className:"ml-auto truncate font-mono text-[10px] text-[var(--muted-foreground)]",title:r.path,children:r.path})]}),(0,l.jsx)("p",{className:"shrink-0 border-b border-[var(--border)] bg-[var(--secondary)]/30 px-3 py-1.5 text-[10px] text-[var(--muted-foreground)]",children:n("skill.extensionHint",{id:r.id})}),(0,l.jsxs)("div",{className:"flex min-h-0 flex-1",children:[(0,l.jsx)("div",{className:"w-48 shrink-0 overflow-y-auto border-r border-[var(--border)] py-1",children:a.map(e=>(0,l.jsxs)("button",{onClick:()=>c(e),title:e,className:(0,E.cn)("flex w-full items-center gap-1.5 px-3 py-1 text-left text-[11px] transition-colors",i===e?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/50 hover:text-[var(--foreground)]"),children:[(0,l.jsx)(W.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{className:"truncate",children:e})]},e))}),(0,l.jsx)("div",{className:"min-w-0 flex-1 overflow-hidden",children:null!==d&&(0,l.jsx)("pre",{className:"h-full overflow-auto p-4 font-mono text-xs text-[var(--foreground)] whitespace-pre-wrap",children:d})})]})]})}function ib(e,t){let{settledPrefix:r=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e||0===e.length)return t;if(r){let r=Math.min(e.length,t.length),n=Math.max(0,e.length-2),a=t.length>=e.length;for(let r=0;a&&r<n;r++)(e[r].id!==t[r].id||e[r].deleted!==t[r].deleted)&&(a=!1);if(a){let a=e.length===t.length,s=t.slice();for(let t=0;t<n;t++)s[t]=e[t];for(let l=n;l<r;l++)JSON.stringify(e[l])===JSON.stringify(t[l])?s[l]=e[l]:a=!1;return a?e:s}}let n=e.length===t.length,a=t.map((t,r)=>{let a=e[r];return a&&JSON.stringify(a)===JSON.stringify(t)?a:(n=!1,t)});return n?e:a}var iy=r(99603);let iw=[],ij=()=>()=>{};function ik(e){var t;let{visible:r}=e,n=(0,T.kj)(),a=aR(e=>e.selectedSessionId),s=aR(e=>e.selectedSession),i=aR(e=>e.loadedMessages),c=aR(e=>e.loading),d=n2(e=>aC(e.tabs,a)),m=null==d?void 0:d.store,f=void 0!==m,x=m&&r?m.subscribe:ij,g=()=>{var e;return null!=(e=null==m?void 0:m.getState().messages)?e:iw},v=(0,o.useSyncExternalStore)(x,g,g),b=()=>{var e;return null!=(e=null==m?void 0:m.getState().isStreaming)&&e},y=(0,o.useSyncExternalStore)(x,b,b),w=(0,o.useRef)(null),[j,k]=(0,o.useState)(!1),[N,S]=(0,o.useState)(()=>"1"===localStorage.getItem("halo_session_debug")),[C,A]=(0,o.useState)(()=>"1"===localStorage.getItem("halo_session_prompt"));(0,o.useEffect)(()=>{localStorage.setItem("halo_session_debug",N?"1":"0")},[N]),(0,o.useEffect)(()=>{localStorage.setItem("halo_session_prompt",C?"1":"0")},[C]),(0,o.useEffect)(()=>{ab=a;let e=a?av.get(a):void 0;a&&e&&(av.delete(a),av.set(a,e))},[a]),(0,o.useEffect)(()=>{ay=r},[r]);let I=aR(e=>e.setLoadedMessages),_=(0,o.useRef)(new Map),P=(0,o.useCallback)(e=>{let t=_.current;if(t.has(e))return void t.set(e,!0);let r=()=>{var n;let a=null==(n=rU.getState().activeProject)?void 0:n.path;a&&(t.set(e,!1),ak(e,!1),u.FH.sessionLogs.get(e,a).then(t=>{var r,n,a;let s="number"==typeof t.archiveCount?t.archiveCount:0,l=null!=(n=t.messages)?n:[],o=aR.getState(),i=o.selectedSessionId===e,c=ib(null!=(a=null==(r=aw(e))?void 0:r.messages)?a:null,l,{settledPrefix:!0});aj(e,c,s),i&&(ax(e,s),c!==o.loadedMessages&&I(c))}).catch(()=>ak(e,!0)).finally(()=>{let n=t.get(e);t.delete(e),n&&(ak(e,!0),aR.getState().selectedSessionId===e&&r())}))};r()},[I]);(0,o.useEffect)(()=>{let e=e=>{e&&!aC(n2.getState().tabs,e)&&P(e)},t=p.on("file:changed",t=>e(function(e,t){if("change"!==t&&"add"!==t||!e.startsWith(".halo/sessions/")||!e.endsWith(".ui.jsonl"))return null;let r=e.slice(e.lastIndexOf("/")+1,-9);for(let[e,t]of av)aS(e)===r&&(t.stale=!0);return ay&&null!==ab&&aS(ab)===r?ab:null}(t.path,t.action))),r=h(p,()=>e(function(){for(let e of av.values())e.stale=!0;return ay?ab:null}()));return()=>{t(),r()}},[P]),(0,o.useEffect)(()=>{if(!r||!a||f)return;let e=aR.getState();if(e.loading)return;let t=aw(a);!t||t.stale?P(a):e.loadedMessages!==t.messages&&I(t.messages)},[r,a,f,P,I]);let M=(0,o.useMemo)(()=>{if(!a)return[];if(f){let e=v.filter(e=>!e.taskId);return N?e:e.filter(nA)}let e=null!=i?i:[];return N?e:e.filter(e=>!nC(e))},[a,f,v,i,N]),F=(0,o.useMemo)(()=>{for(let e of f?v:null!=i?i:[])if("context"===nu(e)&&e.systemPrompt)return e.systemPrompt;return null},[f,v,i]),D=af(e=>e.sessionId),L=af(e=>e.anchor),H=af(e=>e.cursor),z=af(e=>e.messages),O=af(e=>e.loading),U=null!==D&&D===a,B=null!=(t=null==d?void 0:d.archiveCount)?t:0;(0,o.useEffect)(()=>{a&&f&&ax(a,B)},[a,f,B]);let K=(0,o.useMemo)(()=>U?N?z:z.filter(e=>!nC(e)):[],[U,z,N]),G=(0,o.useRef)(!1),q=sa(w,G),$=(0,o.useRef)(null),Y=(0,o.useRef)(!0),J=(0,o.useRef)(r),Z=(0,o.useRef)(null),V=(0,o.useRef)(null),X=(0,o.useRef)(!0),Q=(0,o.useRef)(0),ee=(0,o.useCallback)(()=>{let e=af.getState();if(e.sessionId!==a||e.cursor<1||e.loading)return;let t=w.current;$.current=t?t.scrollHeight-t.scrollTop:null,ag()},[a]);return(0,o.useLayoutEffect)(()=>{Y.current=!0,$.current=null,X.current=!0,G.current=!1,Q.current=0},[a]),(0,o.useLayoutEffect)(()=>{J.current=r,X.current=!0},[r]),(0,o.useLayoutEffect)(()=>{Z.current=f?null:a},[f,a]),(0,o.useLayoutEffect)(()=>{let e=w.current;if(!X.current||!r||!e||c||0===M.length)return;X.current=!1;let t=a&&!f?aw(a):void 0;if(t&&(G.current=!t.atBottom,Q.current=t.scrollOffset),G.current){var n,s;e.scrollTop=(null!=(s=null==(n=V.current)?void 0:n.offsetTop)?s:0)+Q.current,e.scrollTop<80&&(Y.current=!1)}else q()},[a,r,c,M,f]),(0,o.useEffect)(()=>{let e=w.current;if(!e)return;let t=()=>{var t,r;if(!J.current)return;Q.current=e.scrollTop-(null!=(r=null==(t=V.current)?void 0:t.offsetTop)?r:0);let n=Z.current;n&&function(e,t,r){let n=av.get(e);n&&(n.scrollOffset=t,n.atBottom=r)}(n,Q.current,!G.current),e.scrollTop>200?Y.current=!0:e.scrollTop<80&&Y.current&&(Y.current=!1,ee())};return e.addEventListener("scroll",t,{passive:!0}),()=>e.removeEventListener("scroll",t)},[ee]),(0,o.useLayoutEffect)(()=>{let e=w.current,t=$.current;e&&null!==t&&(e.scrollTop=e.scrollHeight-t,$.current=null)},[z]),(0,o.useEffect)(()=>{q()},[M,q]),(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 shrink-0 items-center gap-2 border-b border-[var(--border)] px-3 min-w-0",children:[a?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(iy.A,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),(null==s?void 0:s.agentName)&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-purple-900/50 px-1.5 py-0.5 text-[10px] text-purple-400",children:s.agentName}),(0,l.jsx)("span",{className:"truncate text-xs font-medium text-[var(--foreground)]",title:(null==s?void 0:s.title)||"Untitled",children:(null==s?void 0:s.title)||"Untitled"}),(0,l.jsxs)("span",{className:"shrink-0 text-[10px] text-[var(--muted-foreground)]",children:["(",M.length,")"]}),f&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-blue-900/50 px-1.5 py-0.5 text-[8px] text-blue-400",children:"live"}),(null==s?void 0:s.parentSessionId)&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--secondary)] px-1 py-0.5 text-[8px] text-[var(--muted-foreground)]",title:"Sub-session",children:"sub"}),(null==s?void 0:s.stoppedAt)&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--secondary)] px-1 py-0.5 text-[8px] text-[var(--muted-foreground)]",children:"stopped"}),(null==s?void 0:s.archivedAt)&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-amber-900/50 px-1 py-0.5 text-[8px] text-amber-400",title:"Archived: ".concat(new Date(s.archivedAt).toLocaleString()),children:"archived"}),(null==s?void 0:s.createdAt)&&(0,l.jsx)("span",{className:"shrink-0 text-[10px] text-[var(--muted-foreground)]",title:"Created: ".concat(new Date(s.createdAt).toLocaleString()),children:(0,E.fw)(s.createdAt)}),(0,l.jsxs)("button",{onClick:()=>{a&&navigator.clipboard.writeText(a).then(()=>{k(!0),setTimeout(()=>k(!1),1200)}).catch(()=>{})},title:"Session ID: ".concat(a),className:"shrink-0 flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] font-mono text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors",children:[j?(0,l.jsx)(rP.A,{className:"h-2.5 w-2.5 text-green-400"}):(0,l.jsx)(ss.A,{className:"h-2.5 w-2.5"}),a.slice(0,8)]})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(aL.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Session Viewer"})]}),a&&(0,l.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[F&&(0,l.jsxs)("button",{onClick:()=>A(!C),className:(0,E.cn)("flex items-center gap-1 rounded px-1.5 py-0.5 text-[9px] transition-colors",C?"bg-purple-900/50 text-purple-400":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),title:"View system prompt",children:[(0,l.jsx)(W.A,{className:"h-3 w-3"}),"Prompt"]}),(0,l.jsxs)("button",{onClick:()=>S(!N),className:(0,E.cn)("flex items-center gap-1 rounded px-1.5 py-0.5 text-[9px] transition-colors",N?"bg-amber-900/50 text-amber-400":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),title:"Debug mode: show all messages including sub-agent tool calls",children:[(0,l.jsx)(lO.A,{className:"h-3 w-3"}),"Debug"]})]}),y&&(0,l.jsx)("span",{className:"rounded bg-blue-900/50 px-1.5 py-0.5 text-[9px] text-blue-400 animate-pulse",children:"streaming"})]}),(0,l.jsxs)("div",{ref:w,className:"relative flex-1 overflow-y-auto",children:[C&&F&&(0,l.jsxs)("div",{className:"sticky top-2 right-2 z-10 float-right ml-2 mb-2 mr-2 w-[min(520px,80%)] rounded-md border border-purple-900/60 bg-[var(--background)] shadow-lg",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-purple-900/50 bg-purple-950/40 px-3 py-1.5 rounded-t-md",children:[(0,l.jsx)("span",{className:"text-[10px] font-semibold text-purple-400",children:"System Prompt"}),(0,l.jsx)("button",{onClick:()=>A(!1),title:"Close",className:"rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]}),(0,l.jsx)("pre",{className:"px-3 py-2 text-[11px] text-[var(--foreground)] whitespace-pre-wrap break-words leading-relaxed max-h-[60vh] overflow-y-auto",children:F})]}),c?(0,l.jsxs)("div",{className:"flex items-center justify-center py-8 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsx)(R.A,{className:"h-3.5 w-3.5 animate-spin mr-1.5"})," Loading session..."]}):a?0===M.length?(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center",children:[(0,l.jsx)(aL.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"No messages in this session"})]}):(0,l.jsxs)(l.Fragment,{children:[U&&L>0&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)]/50",children:[H>0?(0,l.jsxs)("button",{onClick:ee,disabled:O,className:"flex w-full items-center justify-center gap-1.5 px-3 py-2 text-[10px] font-medium text-[var(--muted-foreground)] transition-colors hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:hover:bg-transparent",children:[O&&(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),n(O?"chat.archive.loading":"chat.archive.loadOlder")]}):(0,l.jsx)("div",{className:"px-3 py-2 text-center text-[10px] text-[var(--muted-foreground)]",children:n("chat.archive.noEarlier")}),K.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(sc,{messages:K,debugMode:N,readOnly:!0}),(0,l.jsx)("div",{className:"border-t border-[var(--border)]/50 px-3 py-2 text-center text-[10px] text-[var(--muted-foreground)]",children:n("chat.archive.header",{segments:L-H,messages:K.length})})]})]}),(0,l.jsx)("div",{ref:V}),(0,l.jsx)(sc,{messages:M,debugMode:N})]}):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center",children:[(0,l.jsx)(aL.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:"Select a session from the sidebar to view messages"})]})]})]})}var iN=r(37568),iS=r(28976),iC=r(70539),iA=r(13680),iI=r(29656),iE=r(23715),iT=r(85615),i_=r(8565);function iP(){return(0,l.jsxs)("div",{className:"space-y-8 p-6",children:[(0,l.jsx)(iM,{}),(0,l.jsx)(iF,{})]})}function iM(){let{t:e}=(0,T.s9)(),[t,r]=(0,o.useState)(""),[n,a]=(0,o.useState)(""),[s,i]=(0,o.useState)(""),[c,d]=(0,o.useState)(!1),[u,m]=(0,o.useState)(""),[p,h]=(0,o.useState)(!1),f=""!==n?n.length<8?"tooShort":/[A-Za-z]/.test(n)?/[0-9]/.test(n)?null:"needDigit":"needLetter":null,x=""!==n&&n===t,g=""!==s&&s!==n,v=!c&&""!==t&&""!==n&&s===n&&null===f&&!x;async function b(s){if(s.preventDefault(),v){d(!0),m(""),h(!1);try{let e=await fetch("/api/auth/change-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({oldPassword:t,newPassword:n}),credentials:"include"});if(e.ok)h(!0),r(""),a(""),i("");else{let t=await e.json().catch(()=>null);m((null==t?void 0:t.error)||"HTTP ".concat(e.status))}}catch(t){m(e("security.changePassword.connectionFailed"))}finally{d(!1)}}}return(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:e("security.changePassword.title")}),(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:e("security.changePassword.desc")})]}),(0,l.jsxs)("form",{onSubmit:b,className:"max-w-md space-y-4 rounded-md border border-[var(--border)] bg-[var(--card)] p-4",children:[(0,l.jsx)(iD,{label:e("security.changePassword.current"),value:t,disabled:c,autoComplete:"current-password",onChange:e=>{r(e),h(!1)}}),(0,l.jsx)(iD,{label:e("security.changePassword.new"),value:n,disabled:c,autoComplete:"new-password",onChange:e=>{a(e),h(!1)},error:f?e("security.changePassword.".concat(f)):x?e("security.changePassword.sameAsOld"):void 0,hint:e("security.changePassword.rule")}),(0,l.jsx)(iD,{label:e("security.changePassword.confirm"),value:s,disabled:c,autoComplete:"new-password",onChange:e=>{i(e),h(!1)},error:g?e("security.changePassword.mismatch"):void 0}),u&&(0,l.jsx)("p",{className:"text-[11px] text-red-400",children:u}),p&&(0,l.jsx)("p",{className:"text-[11px] text-emerald-400",children:e("security.changePassword.success")}),(0,l.jsx)("button",{type:"submit",disabled:!v,className:"rounded bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90 disabled:opacity-50",children:c?e("security.changePassword.submitting"):e("security.changePassword.submit")})]})]})}function iF(){let{t:e}=(0,T.s9)(),[t,r]=(0,o.useState)(!1);async function n(){r(!0);try{await fetch("/api/auth/logout",{method:"POST",credentials:"include"})}catch(e){}window.location.reload()}return(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:e("security.logout")}),(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:e("security.logout.desc")})]}),(0,l.jsxs)("button",{onClick:n,disabled:t,className:"flex items-center gap-1.5 rounded border border-[var(--border)] bg-[var(--card)] px-3 py-1.5 text-xs font-medium text-red-400 transition-colors hover:bg-[var(--secondary)] disabled:opacity-50",children:[(0,l.jsx)(i_.A,{className:"h-3.5 w-3.5"}),e("security.logout")]})]})}function iD(e){let{label:t,value:r,disabled:n,autoComplete:a,onChange:s,error:o,hint:i}=e;return(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"text-xs font-medium text-[var(--foreground)]",children:t}),(0,l.jsx)("input",{type:"password",value:r,autoComplete:a,disabled:n,onChange:e=>s(e.target.value),className:(0,E.cn)("mt-1 h-7 w-full rounded border bg-[var(--background)] px-2 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]",o?"border-red-400/60":"border-[var(--border)]")}),o?(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-red-400",children:o}):i?(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:i}):null]})}var iL=r(3524);function iR(e,t){var r,n;return null===e?t:(null!=(r=t.checkedAt)?r:-1/0)<(null!=(n=e.checkedAt)?n:-1/0)?e:t}function iH(){var e;let{t}=(0,T.s9)(),r=(0,o.useSyncExternalStore)(ed,eg,eg),n=(0,o.useRef)(null),[a,s]=(0,o.useState)(!1),[i,c]=(0,o.useState)(null),[d,m]=(0,o.useState)(null);async function h(e){s(!0),c(null);try{await u.FH.extensions.update(e)}catch(e){c(e instanceof Error?e.message:String(e))}finally{s(!1)}}async function f(e){s(!0),c(null);try{await u.FH.extensions.install(e)}catch(e){c(e instanceof Error?e.message:String(e))}finally{s(!1)}}async function x(e,t){s(!0),c(null);try{await u.FH.extensions.setEnabled(e,t)}catch(e){c(e instanceof Error?e.message:String(e))}finally{s(!1)}}async function g(e,r){if(await (0,E.fN)(t("settings.extensions.confirmRemove",{name:r}))){s(!0),c(null);try{await u.FH.extensions.remove(e)}catch(e){c(e instanceof Error?e.message:String(e))}finally{s(!1)}}}(0,o.useEffect)(()=>{let e=p.on("updates:changed",e=>{"extensions"===e.scope&&m(t=>iR(t,e.status))});return u.FH.updates.extensions().then(e=>m(t=>iR(t,e))).catch(e=>c(e instanceof Error?e.message:String(e))),e},[]);let v=(0,o.useMemo)(()=>{var e;let t=new Map((null!=(e=null==d?void 0:d.extensions)?e:[]).map(e=>["".concat(e.id,"@").concat(e.installed),e]));return[...r.extensions.map(e=>({ext:e,off:!1})),...r.disabled.map(e=>({ext:e,off:!0}))].sort((e,t)=>e.ext.id.localeCompare(t.ext.id)).map(e=>({...e,update:t.get("".concat(e.ext.id,"@").concat(e.ext.version))}))},[r,d]),b=0===v.length&&0===r.errors.length,y=null!=(e=null==d?void 0:d.checking)&&e,w=v.filter(e=>{var t;return(null==(t=e.update)?void 0:t.state)==="available"}).length,j=y?null:w>0?t(1===w?"settings.extensions.updateAvailable":"settings.extensions.updatesAvailable",{n:w}):v.length>0&&v.every(e=>{var t;return(null==(t=e.update)?void 0:t.state)==="current"})?t("settings.extensions.allCurrent"):null;return(0,l.jsxs)("div",{className:"space-y-6 p-6",children:[(0,l.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:t("settings.extensions.title")}),(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:t("settings.extensions.intro")})]}),(0,l.jsx)("input",{ref:n,type:"file",accept:".zip,application/zip",className:"hidden",onChange:e=>{var t;let r=null==(t=e.target.files)?void 0:t[0];e.target.value="",r&&f(r)}}),(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(null==d?void 0:d.checkedAt)!=null&&(0,l.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:[t("settings.extensions.lastChecked",{time:new Date(d.checkedAt).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",hour12:!1})}),j&&" \xb7 ".concat(j)]}),(0,l.jsxs)("button",{onClick:function(){c(null),u.FH.updates.checkExtensions().then(e=>m(t=>iR(t,e))).catch(e=>c(e instanceof Error?e.message:String(e)))},disabled:y,className:"flex shrink-0 items-center gap-1.5 rounded border border-[var(--border)] px-3 py-1.5 text-xs text-[var(--foreground)] transition-colors hover:bg-[var(--secondary)] disabled:opacity-50",children:[(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",y&&"animate-spin")}),y?t("settings.update.checking"):t("settings.update.check")]}),(0,l.jsxs)("button",{onClick:()=>{var e;return null==(e=n.current)?void 0:e.click()},disabled:a,className:"flex shrink-0 items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90 disabled:opacity-50",children:[(0,l.jsx)(oG.A,{className:"h-3.5 w-3.5"}),a?t("settings.extensions.working"):t("settings.extensions.upload")]})]})]}),i&&(0,l.jsx)("p",{className:"text-[11px] text-red-400",children:i}),b?(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:t("settings.extensions.empty")}):(0,l.jsxs)("ul",{className:"divide-y divide-[var(--border)] rounded border border-[var(--border)]",children:[v.map(e=>{let{ext:r,off:n,update:s}=e;return(0,l.jsxs)("li",{className:"flex items-center gap-3 px-3 py-2",children:[(0,l.jsxs)("div",{className:(0,E.cn)("min-w-0 flex-1",n&&"opacity-50"),children:[(0,l.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,l.jsx)("span",{className:"truncate text-xs font-medium text-[var(--foreground)]",children:r.name}),(0,l.jsxs)("code",{className:"text-[10px] text-[var(--muted-foreground)]",children:[r.id,"@",r.version]}),n&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--secondary)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:t("settings.extensions.off")}),r.platforms&&(0,l.jsx)("span",{className:"shrink-0 rounded border border-[var(--border)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:ew(r.platforms,t)}),r.activity&&(0,l.jsx)("span",{className:"shrink-0 rounded border border-[var(--border)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:t("settings.extensions.activity")}),r.chatbar&&(0,l.jsx)("span",{className:"shrink-0 rounded border border-[var(--border)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:t("settings.extensions.chatbar")}),!ej(r)&&(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--secondary)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:t("settings.extensions.unsupportedHere")})]}),r.extensions.length>0?(0,l.jsxs)("p",{className:"mt-0.5 truncate text-[10px] text-[var(--muted-foreground)]",children:[r.extensions.join(" "),"option"===r.priority&&" \xb7 ".concat(t("settings.extensions.optionOnly")),r.bundle&&" \xb7 ".concat(t("settings.extensions.bundle")),r.capabilities.includes("save")&&" \xb7 ".concat(t("settings.extensions.canSave")),r.capabilities.includes("media")&&" \xb7 ".concat(t("settings.extensions.media")),r.capabilities.includes("fs-read")&&" \xb7 ".concat(t("settings.extensions.fsRead")),r.description&&" — ".concat(r.description)]}):r.description&&(0,l.jsx)("p",{className:"mt-0.5 truncate text-[10px] text-[var(--muted-foreground)]",children:r.description}),s&&(0,l.jsx)(iz,{entry:s})]}),(null==s?void 0:s.state)==="available"&&(0,l.jsxs)("button",{onClick:()=>h(r.id),disabled:a,className:"flex shrink-0 cursor-pointer items-center gap-1 rounded px-2 py-0.5 text-[10px] text-blue-500 hover:bg-blue-500/10 disabled:opacity-50",children:[(0,l.jsx)(iL.A,{className:"h-3 w-3"}),t("settings.extensions.update")]}),(0,l.jsx)("button",{role:"switch","aria-checked":!n,onClick:()=>x(r.id,n),disabled:a,title:t(n?"settings.extensions.enable":"settings.extensions.disable"),"aria-label":t(n?"settings.extensions.enable":"settings.extensions.disable"),className:"shrink-0 cursor-pointer rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] disabled:opacity-50",children:n?(0,l.jsx)(oY.A,{className:"h-4.5 w-4.5"}):(0,l.jsx)(oJ.A,{className:"h-4.5 w-4.5 text-blue-500"})}),(0,l.jsx)(iO,{disabled:a,onClick:()=>g(r.id,r.name),label:t("settings.extensions.remove")})]},r.id)}),r.errors.map(e=>(0,l.jsxs)("li",{className:"flex items-center gap-3 px-3 py-2",children:[(0,l.jsx)(sl.A,{className:"h-3.5 w-3.5 shrink-0 text-red-400"}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("code",{className:"text-xs text-red-400",children:e.id}),(0,l.jsx)("p",{className:"mt-0.5 truncate text-[10px] text-[var(--muted-foreground)]",children:e.error})]}),(0,l.jsx)(iO,{disabled:a,onClick:()=>g(e.id,e.id),label:t("settings.extensions.remove")})]},e.id))]})]})}function iz(e){var t,r,n,a;let{entry:s}=e,{t:o}=(0,T.s9)(),i="mt-0.5 truncate text-[10px] text-[var(--muted-foreground)]";switch(s.state){case"available":return(0,l.jsx)("p",{className:"mt-0.5 truncate text-[10px] text-blue-500",children:o("settings.extensions.latest",{version:null!=(t=s.latest)?t:""})});case"needs-halo":return(0,l.jsx)("p",{className:i,children:o("settings.extensions.needsHalo",{version:null!=(r=s.latest)?r:"",minHalo:null!=(n=s.minHalo)?n:""})});case"not-found":return(0,l.jsx)("p",{className:i,children:o("settings.extensions.notFound")});case"no-source":return(0,l.jsx)("p",{className:i,children:o("settings.extensions.noSource")});case"invalid":case"refused":case"unreachable":return(0,l.jsx)("p",{className:i,title:s.error,children:o("settings.extensions.".concat(s.state),{error:null!=(a=s.error)?a:""})});default:return null}}function iO(e){let{disabled:t,onClick:r,label:n}=e;return(0,l.jsxs)("button",{onClick:r,disabled:t,className:"flex shrink-0 cursor-pointer items-center gap-1 rounded px-2 py-0.5 text-[10px] text-red-400 hover:bg-red-500/10 hover:text-red-300 disabled:opacity-50",children:[(0,l.jsx)(eq.A,{className:"h-3 w-3"}),n]})}let iU="halo upgrade && halo server restart",iB="https://github.com/turmind/halo-agent/releases";function iW(e){var t,r;let{version:n}=e,{t:a}=(0,T.s9)(),[s,i]=(0,o.useState)(null),[c,d]=(0,o.useState)(null),[m,h]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=p.on("updates:changed",e=>{"core"===e.scope&&i(t=>iR(t,e.status))});return u.FH.updates.core().then(e=>i(t=>iR(t,e))).catch(e=>d(e instanceof Error?e.message:String(e))),e},[]);let f=null!=(t=null==s?void 0:s.checking)&&t,x="web"!==ey(),g=null!=c?c:(null==s?void 0:s.state)==="error"?null!=(r=s.error)?r:"":null;return(0,l.jsxs)("div",{className:"shrink-0 space-y-1 border-t border-[var(--border)] px-3 py-2 text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)("span",{className:"truncate",children:["Halo v",n]}),(0,l.jsx)("div",{className:"flex-1"}),(null==s?void 0:s.state)!=="dev"&&(0,l.jsxs)("button",{onClick:function(){d(null),u.FH.updates.checkCore().then(e=>i(t=>iR(t,e))).catch(e=>d(e instanceof Error?e.message:String(e)))},disabled:f,className:"flex shrink-0 items-center gap-1 rounded px-1.5 py-0.5 hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:opacity-50",children:[(0,l.jsx)(aD.A,{className:"h-3 w-3 ".concat(f?"animate-spin":"")}),a(f?"settings.update.checking":"settings.update.check")]})]}),(null==s?void 0:s.state)==="dev"&&(0,l.jsx)("p",{children:a("settings.update.dev")}),(null==s?void 0:s.state)==="current"&&s.latest&&(0,l.jsx)("p",{children:a("settings.update.current",{version:s.latest})}),(null==s?void 0:s.state)==="available"&&s.latest&&(0,l.jsxs)("div",{className:"space-y-1",children:[(0,l.jsx)("p",{className:"font-medium text-[var(--foreground)]",children:a("settings.update.available",{version:s.latest})}),x?(0,l.jsx)("a",{href:iB,target:"_blank",rel:"noreferrer",className:"text-[var(--primary)] hover:underline",children:a("settings.update.download")}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex items-center gap-1 rounded bg-[var(--secondary)] px-1.5 py-1",children:[(0,l.jsx)("code",{className:"min-w-0 flex-1 truncate text-[var(--foreground)]",children:iU}),(0,l.jsx)("button",{onClick:function(){navigator.clipboard.writeText(iU).then(()=>{h(!0),setTimeout(()=>h(!1),2e3)}).catch(()=>{})},title:a("settings.update.copy"),className:"shrink-0 hover:text-[var(--foreground)]",children:m?(0,l.jsx)(rP.A,{className:"h-3 w-3"}):(0,l.jsx)(ss.A,{className:"h-3 w-3"})})]}),(0,l.jsx)("p",{children:a("settings.update.sudoHint")}),(0,l.jsx)("a",{href:"".concat(iB,"/tag/v").concat(s.latest),target:"_blank",rel:"noreferrer",className:"text-[var(--primary)] hover:underline",children:a("settings.update.notes")})]})]}),null!==g&&(0,l.jsx)("p",{className:"truncate",title:g,children:a("settings.update.error",{error:g})})]})}function iK(){var e,t,r;let{t:n,refreshFromServer:a}=(0,T.s9)(),{refreshFromServer:s}=(0,e5.useTheme)(),i=rU(e=>e.activeProject),[c,d]=(0,o.useState)("global"),[m,p]=(0,o.useState)(null),[h,f]=(0,o.useState)("general"),[x,g]=(0,o.useState)(!1),[v,b]=(0,o.useState)(!1),[y,w]=(0,o.useState)(null),[j,k]=(0,o.useState)([]),[N,S]=(0,o.useState)(null),C="workspace"===c?null==i?void 0:i.path:void 0,A=(0,o.useCallback)(()=>{b(!0),u.FH.settings.getSchema(C).then(e=>{p(e),f(t=>"__orphans"===t||"__security"===t||"__extensions"===t||e.sections.find(e=>e.namespaceId===t)?t:"general")}).catch(e=>{console.error("[Settings] schema load failed:",e)}).finally(()=>b(!1))},[C]),I=sq(e=>e.version),_=(0,o.useSyncExternalStore)(ed,eg,eg);function P(e,t){e.restartRequired&&k(e=>e.includes(t)?e:[...e,t])}async function M(e,t,r){g(!0),S(null);let n="general"===e?"general.".concat(t.key):"".concat(e,".").concat(t.kind,"s.").concat(t.key);try{if(""===r)await u.FH.settings.remove(c,n,C);else{let e=function(e,t){switch(e){case"int":{let e=parseInt(t,10);return Number.isFinite(e)?e:t}case"float":{let e=parseFloat(t);return Number.isFinite(e)?e:t}case"boolean":return"true"===t;default:return t}}(t.type,r);await u.FH.settings.patch(c,n,e,C)}P(t,n),A(),a(),s()}catch(e){console.error("[Settings] save failed:",e),S({dotPath:n,message:(0,u.CK)(e)})}finally{g(!1)}}async function F(e,t){g(!0),S(null);try{let r="general"===e?"general.".concat(t.key):"".concat(e,".").concat(t.kind,"s.").concat(t.key);await u.FH.settings.remove(c,r,C),P(t,r),A(),a(),s()}catch(e){console.error("[Settings] reset failed:",e)}finally{g(!1)}}async function D(e){let t="".concat(e.namespaceId,".").concat(e.kind,"s.").concat(e.key);if(confirm(n("settings.orphans.confirm",{key:t}))){g(!0);try{await u.FH.settings.remove(c,t,C),A()}catch(e){console.error("[Settings] orphan remove failed:",e)}finally{g(!1)}}}(0,o.useEffect)(()=>{A()},[A,I,_]),(0,o.useEffect)(()=>{u.FH.health().then(e=>w("string"==typeof(null==e?void 0:e.version)?e.version:null)).catch(()=>w(null))},[]);let L=null!=(e=null==m?void 0:m.sections)?e:[],R=null!=(t=null==m?void 0:m.orphans)?t:[],H=(0,o.useMemo)(()=>L.find(e=>e.namespaceId===h),[L,h]);return(0,l.jsxs)("div",{className:"flex h-full bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex w-[220px] shrink-0 flex-col border-r border-[var(--border)]",children:[(0,l.jsxs)("div",{className:"flex h-10 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(iN.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:n("nav.settings")}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:A,disabled:v,title:"Refresh",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors disabled:opacity-50",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",v&&"animate-spin")})})]}),(0,l.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:[(0,l.jsxs)("div",{className:"border-b border-[var(--border)] p-2",children:[(0,l.jsxs)("div",{className:"flex rounded-md bg-[var(--card)] p-0.5",children:[(0,l.jsxs)("button",{onClick:()=>d("global"),className:(0,E.cn)("flex flex-1 items-center justify-center gap-1 rounded-sm px-2 py-1 text-[10px] font-medium transition-colors","global"===c?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:[(0,l.jsx)(U.A,{className:"h-3 w-3"}),n("common.global")]}),(0,l.jsxs)("button",{onClick:()=>d("workspace"),disabled:!i,className:(0,E.cn)("flex flex-1 items-center justify-center gap-1 rounded-sm px-2 py-1 text-[10px] font-medium transition-colors","workspace"===c?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",!i&&"cursor-not-allowed opacity-40"),children:[(0,l.jsx)(iS.A,{className:"h-3 w-3"}),n("common.workspace")]})]}),"workspace"===c&&i&&(0,l.jsx)("p",{className:"mt-1 truncate text-[9px] text-[var(--muted-foreground)]",children:i.path})]}),(0,l.jsx)(iG,{sections:L,orphans:R,active:h,onPick:f})]}),y&&(0,l.jsx)(iW,{version:y})]}),(0,l.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,l.jsx)("div",{className:"flex h-10 shrink-0 items-center justify-between border-b border-[var(--border)] px-4",children:(0,l.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:"__security"===h?(0,l.jsxs)(l.Fragment,{children:["~/.halo/secrets/config.yaml → ",(0,l.jsx)("code",{className:"text-[var(--foreground)]",children:"server.password"})]}):"__extensions"===h?(0,l.jsx)(l.Fragment,{children:"~/.halo/global/extensions/"}):(0,l.jsxs)(l.Fragment,{children:["global"===c?"~/.halo/secrets/settings.yaml":"".concat(null!=(r=null==i?void 0:i.path)?r:"...","/.halo/settings.yaml")," ","→ ",(0,l.jsx)("code",{className:"text-[var(--foreground)]",children:h})]})})}),j.length>0&&(0,l.jsxs)("div",{className:"flex shrink-0 items-start gap-2 border-b border-amber-500/30 bg-amber-500/10 px-4 py-2 text-[11px] text-amber-400",children:[(0,l.jsx)(sl.A,{className:"mt-px h-3.5 w-3.5 shrink-0"}),(0,l.jsx)("span",{className:"min-w-0 flex-1 break-words",children:n("settings.restartNotice",{keys:j.join(", ")})}),(0,l.jsx)("button",{onClick:()=>k([]),title:n("settings.restartNotice.dismiss"),className:"shrink-0 cursor-pointer rounded p-0.5 hover:bg-amber-500/20",children:(0,l.jsx)(e0.A,{className:"h-3 w-3"})})]}),(0,l.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:"__security"===h?(0,l.jsx)(iP,{}):"__extensions"===h?(0,l.jsx)(iH,{}):"__orphans"===h?(0,l.jsx)(i2,{orphans:R,onRemove:D,saving:x}):H?(0,l.jsx)(iJ,{section:H,scope:c,saving:x,saveError:N,onSave:(e,t)=>M(H.namespaceId,e,t),onReset:e=>F(H.namespaceId,e)}):(0,l.jsx)("div",{className:"p-10 text-center text-xs text-[var(--muted-foreground)]",children:m?n("settings.empty"):n("settings.loading")})})]})]})}function iG(e){let{sections:t,orphans:r,active:n,onPick:a}=e,{t:s}=(0,T.s9)(),i=(0,o.useMemo)(()=>{let e=t.filter(e=>"general"===e.source),r=t.filter(e=>"provider"===e.source),n=t.filter(e=>"skill"===e.source);return{general:e,providers:r,skills:n,agents:t.filter(e=>"agent"===e.source),extensions:t.filter(e=>"extension"===e.source)}},[t]),[c,d]=function(){let[e,t]=(0,o.useState)(()=>{try{var e;return new Set(JSON.parse(null!=(e=localStorage.getItem(iq))?e:"[]"))}catch(e){return new Set}});return[e,(0,o.useCallback)(e=>{t(t=>{let r=new Set(t);return r.delete(e)||r.add(e),localStorage.setItem(iq,JSON.stringify([...r])),r})},[])]}(),u=(e,t)=>({label:t,collapsed:c.has(e),onToggle:()=>d(e)});return(0,l.jsxs)("div",{className:"py-1",children:[(0,l.jsxs)(iY,{...u("system",s("settings.nav.system")),items:i.general,icons:{general:iC.A,a2a:iA.A},active:n,onPick:a,children:[(0,l.jsxs)(i$,{active:"__security"===n,onClick:()=>a("__security"),children:[(0,l.jsx)(iI.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{children:s("settings.nav.security")})]}),(0,l.jsxs)(i$,{active:"__extensions"===n,onClick:()=>a("__extensions"),children:[(0,l.jsx)(r7.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{children:s("settings.nav.extensions")})]})]}),(0,l.jsx)(iY,{...u("extensions",s("settings.nav.extensionSettings")),items:i.extensions,active:n,onPick:a}),(0,l.jsx)(iY,{...u("providers",s("settings.nav.providers")),items:i.providers,active:n,onPick:a}),(0,l.jsx)(iY,{...u("agents",s("settings.nav.agents")),items:i.agents,active:n,onPick:a}),(0,l.jsx)(iY,{...u("skills",s("settings.nav.skills")),items:i.skills,active:n,onPick:a}),r.length>0&&(0,l.jsx)(iY,{...u("orphans",s("settings.nav.orphans")),items:[],active:n,onPick:a,children:(0,l.jsxs)(i$,{active:"__orphans"===n,onClick:()=>a("__orphans"),children:[(0,l.jsx)(eq.A,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{children:s("settings.nav.unclaimed")}),(0,l.jsx)("span",{className:"ml-auto rounded bg-[var(--card)] px-1 py-0 text-[9px]",children:r.length})]})})]})}let iq="halo_settings_navCollapsed";function i$(e){let{active:t,onClick:r,title:n,children:a}=e;return(0,l.jsx)("button",{onClick:r,title:n,className:(0,E.cn)("flex w-full cursor-pointer items-center gap-2 py-1.5 pl-6 pr-3 text-[11px] transition-colors",t?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--foreground)]/80 hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),children:a})}function iY(e){let{label:t,items:r,icons:n,active:a,onPick:s,collapsed:o,onToggle:i,children:c}=e,{lang:d}=(0,T.s9)();return 0!==r.length||c?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("button",{onClick:i,"aria-expanded":!o,className:"flex w-full cursor-pointer items-center gap-1 px-2 pb-1 pt-2.5 text-[10px] font-medium tracking-wide text-[var(--muted-foreground)] transition-colors hover:text-[var(--foreground)]",children:[(0,l.jsx)(F.A,{className:(0,E.cn)("h-3 w-3 shrink-0 transition-transform",!o&&"rotate-90")}),(0,l.jsx)("span",{className:"truncate",children:t})]}),!o&&r.map(e=>{let t="zh"===d&&e.displayName_zh||e.displayName,r="zh"===d&&e.description_zh||e.description,o=null==n?void 0:n[e.namespaceId];return(0,l.jsxs)(i$,{active:a===e.namespaceId,onClick:()=>s(e.namespaceId),title:null!=r?r:e.namespaceId,children:[o&&(0,l.jsx)(o,{className:"h-3 w-3 shrink-0"}),(0,l.jsx)("span",{className:"truncate",children:t})]},e.namespaceId)}),!o&&c]}):null}function iJ(e){let{section:t,scope:r,saving:n,saveError:a,onSave:s,onReset:i}=e,{t:c,lang:d}=(0,T.s9)(),[u,m]=(0,o.useState)(!1),p=t.fields.filter(e=>"param"===e.kind),h=p.filter(e=>!e.advanced),f=p.filter(e=>e.advanced),x=t.fields.filter(e=>"secret"===e.kind),g=e=>(0,l.jsx)(iZ,{namespaceId:t.namespaceId,field:e,scope:r,saving:n,saveError:a,onSave:t=>s(e,t),onReset:()=>i(e)},e.key),v="zh"===d&&t.displayName_zh||t.displayName,b="zh"===d&&t.description_zh||t.description,[y,w]=c("settings.section.secretsHint",{placeholder:"\0"}).split("\0");return(0,l.jsxs)("div",{className:"space-y-6 p-6",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:v}),b&&(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:b}),(0,l.jsxs)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:[c("settings.section.namespace"),": ",(0,l.jsx)("code",{className:"text-[var(--foreground)]",children:t.namespaceId})," \xb7 ",c("settings.section.declaredBy"),": ",(0,l.jsx)("span",{children:c("settings.section.declaredBy.".concat(t.source))})]})]}),p.length>0&&(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsx)("h3",{className:"text-[11px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:c("general"===t.namespaceId?"settings.section.settings":"settings.section.params")}),h.map(g),f.length>0&&(0,l.jsxs)("div",{className:"space-y-4 border-t border-[var(--border)] pt-3",children:[(0,l.jsxs)("button",{onClick:()=>m(e=>!e),className:"flex cursor-pointer items-center gap-1 text-[11px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:[(0,l.jsx)(F.A,{className:(0,E.cn)("h-3 w-3 transition-transform",u&&"rotate-90")}),c("settings.section.advanced"),(0,l.jsx)("span",{className:"rounded bg-[var(--card)] px-1 py-0 text-[9px] font-normal normal-case",children:f.length})]}),u&&f.map(g)]})]}),x.length>0&&(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsx)("h3",{className:"text-[11px] font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:c("settings.section.secrets")}),(0,l.jsxs)("p",{className:"text-[10px] text-[var(--muted-foreground)]",children:[y,(0,l.jsx)("code",{className:"rounded bg-[var(--card)] px-1 py-0.5",children:"<<ENV_NAME>>"}),w]}),x.map(g)]})]})}function iZ(e){var t,r,n;let{namespaceId:a,field:s,scope:o,saving:i,saveError:c,onSave:d,onReset:u}=e,{lang:m,t:p}=(0,T.s9)(),h="zh"===m&&s.description_zh||s.description||"",f="general"===a?"general.".concat(s.key):"".concat(a,".").concat(s.kind,"s.").concat(s.key),x="workspace"===o&&s.inheritedFromGlobal,g="workspace"===o&&!0===s.globalOnly,v=!g&&s.source===o&&("workspace"===o||(null!=(r=s.value)?r:"")!==(null!=(n=s.default)?n:""));return(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,l.jsx)("label",{className:"text-xs font-medium text-[var(--foreground)]",children:s.key}),(0,l.jsx)("code",{className:"text-[10px] text-[var(--muted-foreground)]",children:f}),(0,l.jsx)(iV,{source:s.source,inherited:x}),s.globalOnly&&(0,l.jsx)("span",{className:"rounded bg-[var(--secondary)] px-1.5 py-px text-[10px] uppercase text-[var(--muted-foreground)]",title:p("settings.globalOnlyHint"),children:"global only"}),v&&(0,l.jsxs)("button",{onClick:u,disabled:i,className:"flex cursor-pointer items-center gap-1 text-[10px] text-blue-400 hover:text-blue-300",title:p("workspace"===o?"settings.field.resetTitleWorkspace":"settings.field.resetTitleGlobal"),children:[(0,l.jsx)(iE.A,{className:"h-2.5 w-2.5"}),p("settings.field.reset")]})]}),h&&(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:h}),(0,l.jsx)("div",{className:(0,E.cn)("mt-1.5",g&&"opacity-60 pointer-events-none"),children:function(e,t,r){var n,a,s,o,i,c,d,u;if(e.secret)return(0,l.jsx)(i3,{initial:null!=(n=e.value)?n:"",placeholder:null!=(a=e.default)?a:"",saving:t,onCommit:r});switch(e.type){case"int":case"float":return(0,l.jsx)(iQ,{initial:null!=(s=e.value)?s:"",placeholder:null!=(o=e.default)?o:"",type:"number",step:"int"===e.type?1:.1,saving:t,onCommit:r});case"boolean":return(0,l.jsx)(i0,{value:e.value,saving:t,onCommit:r});case"enum":return(0,l.jsx)(i1,{value:e.value,options:null!=(i=e.options)?i:[],optionLabels:e.optionLabels,placeholder:null!=(c=e.default)?c:"",saving:t,onCommit:r});default:return(0,l.jsx)(iQ,{initial:null!=(d=e.value)?d:"",placeholder:null!=(u=e.default)?u:"",hint:e.placeholder,saving:t,onCommit:r})}}(s,i||g,d)}),(null==(t=s.envMissing)?void 0:t.length)>0&&(0,l.jsxs)("p",{className:"mt-1 flex items-start gap-1 text-[10px] text-amber-400",children:[(0,l.jsx)(sl.A,{className:"mt-px h-3 w-3 shrink-0"}),(0,l.jsx)("span",{children:p("settings.field.envMissing",{names:s.envMissing.join(", ")})})]}),(null==c?void 0:c.dotPath)===f&&(0,l.jsx)("p",{className:"mt-1 text-[10px] text-red-400",children:c.message})]})}function iV(e){let{source:t,inherited:r}=e,{t:n}=(0,T.s9)();return(0,l.jsx)("span",{className:(0,E.cn)("rounded px-1.5 py-0 text-[9px] font-medium",{workspace:"bg-blue-500/20 text-blue-300",global:r?"bg-[var(--secondary)] text-[var(--muted-foreground)]":"bg-emerald-500/20 text-emerald-300",unset:"bg-[var(--secondary)] text-[var(--muted-foreground)] opacity-60"}[t]),children:n("unset"===t?"settings.source.unset":r?"settings.source.inherited":"settings.source.".concat(t))})}let iX=/^<<[A-Z_][A-Z0-9_]*>>$/;function iQ(e){let{initial:t,placeholder:r,hint:n,type:a="text",step:s,saving:i,onCommit:c}=e,d=""===t&&!!r,[u,m]=(0,o.useState)(t),[p,h]=(0,o.useState)(!1),f=(0,o.useRef)(t);function x(){h(!1),u!==f.current&&(f.current=u,c(u))}(0,o.useEffect)(()=>{m(t),f.current=t,h(!1)},[t]);let g=d&&!p?null!=r?r:"":u;return(0,l.jsx)("input",{type:a,step:s,value:g,placeholder:r||n,onFocus:()=>{d&&m(""),h(!0)},onChange:e=>{m(e.target.value),h(!0)},onBlur:x,onKeyDown:e=>{"Enter"===e.key&&x()},disabled:i,className:(0,E.cn)("h-7 w-full max-w-md rounded border border-[var(--border)] bg-[var(--card)] px-2 text-xs outline-none focus:border-[var(--primary)]",d&&!p?"text-[var(--muted-foreground)] italic":"text-[var(--foreground)]")})}function i0(e){let{value:t,saving:r,onCommit:n}=e,a="true"===t||"1"===t;return(0,l.jsxs)("label",{className:"inline-flex cursor-pointer items-center gap-2",children:[(0,l.jsx)("input",{type:"checkbox",checked:a,disabled:r,onChange:e=>n(e.target.checked?"true":"false"),className:"h-3.5 w-3.5 cursor-pointer rounded border-[var(--border)] bg-[var(--card)] text-[var(--primary)] focus:ring-[var(--primary)]"}),(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:a?"on":"off"})]})}function i1(e){var t,r;let{value:n,options:a,optionLabels:s,placeholder:o,saving:i,onCommit:c}=e,d=null!=(r=null!=(t=null!=n?n:o)?t:a[0])?r:"";return(0,l.jsx)("select",{value:d,disabled:i,onChange:e=>c(e.target.value),className:"h-7 w-full max-w-md cursor-pointer rounded border border-[var(--border)] bg-[var(--card)] px-2 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]",children:a.map((e,t)=>{var r;return(0,l.jsx)("option",{value:e,children:null!=(r=null==s?void 0:s[t])?r:e},e)})})}function i3(e){let{initial:t,placeholder:r,saving:n,onCommit:a}=e,s=iX.test(t),[i,c]=(0,o.useState)(t),[d,u]=(0,o.useState)(!1),[m,p]=(0,o.useState)(s),h=(0,o.useRef)(t);function f(){if(d){if(i===h.current)return void u(!1);h.current=i,a(i),u(!1)}}return(0,o.useEffect)(()=>{c(t),h.current=t,u(!1),p(iX.test(t))},[t]),(0,l.jsxs)("div",{className:"relative w-full max-w-md",children:[(0,l.jsx)("input",{type:m||d?"text":"password",value:d?i:t||"",placeholder:r,onFocus:()=>{d||!t||iX.test(t)||c(""),u(!0)},onChange:e=>c(e.target.value),onBlur:f,onKeyDown:e=>{"Enter"===e.key&&f()},disabled:n,className:"h-7 w-full rounded border border-[var(--border)] bg-[var(--card)] px-2 pr-7 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]"}),!s&&(0,l.jsx)("button",{type:"button",onClick:()=>p(e=>!e),className:"absolute right-1.5 top-1/2 -translate-y-1/2 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",tabIndex:-1,children:m?(0,l.jsx)(iT.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(tL.A,{className:"h-3.5 w-3.5"})})]})}function i2(e){let{orphans:t,onRemove:r,saving:n}=e,{t:a}=(0,T.s9)(),s=(0,o.useMemo)(()=>{let e=new Map;for(let n of t){var r;let t=null!=(r=e.get(n.namespaceId))?r:[];t.push(n),e.set(n.namespaceId,t)}return Array.from(e.entries())},[t]);return 0===t.length?null:(0,l.jsxs)("div",{className:"space-y-6 p-6",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-semibold text-[var(--foreground)]",children:a("settings.orphans.title")}),(0,l.jsx)("p",{className:"mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:a("settings.orphans.intro")})]}),s.map(e=>{let[t,s]=e;return(0,l.jsxs)("div",{className:"space-y-2 rounded border border-[var(--border)] p-3",children:[(0,l.jsx)("h3",{className:"text-[11px] font-semibold text-[var(--foreground)]",children:t}),(0,l.jsx)("ul",{className:"space-y-1",children:s.map(e=>(0,l.jsxs)("li",{className:"flex items-center justify-between text-[11px]",children:[(0,l.jsxs)("code",{className:"text-[var(--muted-foreground)]",children:[t,".",e.kind,"s.",e.key]}),(0,l.jsxs)("button",{onClick:()=>r(e),disabled:n,className:"flex cursor-pointer items-center gap-1 rounded px-2 py-0.5 text-[10px] text-red-400 hover:bg-red-500/10 hover:text-red-300",children:[(0,l.jsx)(eq.A,{className:"h-3 w-3"}),a("settings.orphans.remove")]})]},"".concat(e.kind,".").concat(e.key)))})]},t)})]})}var i5=r(84064);let i4=aA(),i8=i4.useBus,i6=i4.bump;var i9=r(89918),i7=r(27269),ce=r(78547),ct=r(45211),cr=r(35622);function cn(e,t){return(0,E.cn)(e?"mt-0.5":"mt-1","w-full rounded border border-[var(--border)] bg-[var(--card)] px-2",e?"py-1":"py-1.5",t&&"font-mono","text-xs")}function ca(e){return(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:(0,E.cn)(e.compact?"text-[10px]":"text-[11px]","text-[var(--muted-foreground)]"),children:e.label}),e.children,e.hint&&(0,l.jsx)("p",{className:"mt-1 text-[10px] text-[var(--muted-foreground)]",children:e.hint})]})}function cs(e){return(0,l.jsx)("input",{type:e.type,value:e.value,onChange:t=>e.onChange(t.target.value),className:cn(e.compact,e.mono),placeholder:e.placeholder})}function cl(e){let t=(0,T.kj)(),{ns:r}=e;return(0,l.jsxs)("select",{value:e.value,onChange:t=>e.onChange(t.target.value),className:cn(e.compact),children:[(0,l.jsx)("option",{value:"readonly",children:t("".concat(r,".readonly"))}),e.observer?(0,l.jsx)("option",{value:"observer",children:t("".concat(r,".observer"))}):"observer"===e.value&&(0,l.jsx)("option",{value:"observer",disabled:!0,children:t("channels.observerAdminOnly")}),(0,l.jsx)("option",{value:"workspace",children:t("".concat(r,".wsWrite"))}),(0,l.jsx)("option",{value:"full",children:t("".concat(r,".full"))})]})}function co(e){return(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:e.onClose,children:(0,l.jsxs)("div",{className:(0,E.cn)(e.width,"max-h-[90vh] overflow-y-auto rounded-lg border border-[var(--border)] bg-[var(--background)] p-5 shadow-xl"),onClick:e=>e.stopPropagation(),children:[e.title&&(0,l.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,l.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:e.title}),(0,l.jsx)("button",{onClick:e.onClose,className:"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),e.children]})})}function ci(e){let t=(0,T.kj)(),{ns:r,value:n,onChange:a}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ca,{label:t("".concat(r,".bindWorkspace")),hint:e.workspaceHint,children:(0,l.jsx)(cs,{mono:!0,value:n.workspacePath,onChange:e=>a({workspacePath:e}),placeholder:"/home/user/project"})}),(0,l.jsx)(ca,{label:t("".concat(r,".nameOptional")),children:(0,l.jsx)(cs,{value:n.label,onChange:e=>a({label:e}),placeholder:t("".concat(r,".namePlaceholder"))})}),(0,l.jsx)(ca,{label:t("".concat(r,".accessLevel")),hint:e.accessHint,children:(0,l.jsx)(cl,{ns:r,value:n.accessLevel,onChange:e=>a({accessLevel:e}),observer:e.observer})}),(0,l.jsx)(T.pZ,{value:n.language,onChange:e=>a({language:e})})]})}function cc(e){let t=(0,T.kj)(),{lang:r}=(0,T.s9)(),{ns:n,onClose:a,canSubmit:s=!0}=e,i=rU(e=>e.activeProject),[c,d]=(0,o.useState)({workspacePath:(null==i?void 0:i.path)||"",label:"",accessLevel:"readonly",language:r}),[u,m]=(0,o.useState)(!1),[p,h]=(0,o.useState)("");async function f(){h(""),m(!0);try{e.onDone(await e.create({...c,label:c.label||void 0}))}catch(e){h(e instanceof Error?e.message:String(e))}finally{m(!1)}}return(0,l.jsx)(co,{width:e.width,title:t("".concat(n,".addTitle")),onClose:a,children:(0,l.jsxs)("div",{className:"space-y-3",children:[e.children,(0,l.jsx)(ci,{ns:n,value:c,onChange:e=>d(t=>({...t,...e})),observer:e.observer}),e.extraFields,p&&(0,l.jsx)("p",{className:"text-xs text-red-400",children:p}),(0,l.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[(0,l.jsx)("button",{onClick:a,className:"rounded border border-[var(--border)] px-3 py-1.5 text-xs",children:t("".concat(n,".cancel"))}),(0,l.jsxs)("button",{onClick:f,disabled:u||!s||!(0,E.Z1)(c.workspacePath),className:"flex items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1.5 text-xs text-white disabled:opacity-50",children:[u&&(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),t("".concat(n,".addBtn"))]})]})]})})}function cd(e,t){let[r,n]=(0,o.useState)([]),[a,s]=(0,o.useState)(!0),l=(0,o.useCallback)(()=>{s(!0),t().then(e=>n(e.accounts)).catch(t=>{console.error("[".concat(e,"] list failed:"),t)}).finally(()=>s(!1))},[e,t]);(0,o.useEffect)(()=>{l()},[l]);let i=i8(e=>e.version);return(0,o.useEffect)(()=>{i>0&&l()},[i,l]),{accounts:r,loading:a,reload:l}}function cu(e){let t=(0,T.kj)(),{ns:r,accounts:n,loading:a,reload:s}=e,[i,c]=(0,o.useState)(null);return(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("h2",{className:"text-sm font-medium text-[var(--foreground)]",children:t("".concat(r,".title"))}),(0,l.jsx)("p",{className:"text-[11px] text-[var(--muted-foreground)]",children:t("".concat(r,".desc"))})]}),(0,l.jsxs)("button",{onClick:e.onAdd,className:"flex items-center gap-1.5 rounded-md bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-white hover:opacity-90",children:[(0,l.jsx)(lC.A,{className:"h-3.5 w-3.5"}),t("".concat(r,".add"))]})]}),(0,l.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:a?(0,l.jsxs)("div",{className:"flex items-center justify-center py-8 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsx)(R.A,{className:"mr-2 h-3.5 w-3.5 animate-spin"}),t("".concat(r,".loading"))]}):0===n.length?(0,l.jsx)("div",{className:"p-8 text-center text-xs text-[var(--muted-foreground)]",children:t("".concat(r,".empty"))}):(0,l.jsx)("ul",{className:"divide-y divide-[var(--border)]",children:n.map(t=>(0,l.jsx)(o.Fragment,{children:e.renderRow(t,{editing:i===t.accountId,onEdit:()=>c(t.accountId),onCancelEdit:()=>c(null),onSaved:()=>{c(null),s()},onChanged:s})},t.accountId))})}),e.children]})}function cm(e){let t=e.icon;return(0,l.jsx)("button",{onClick:e.onClick,disabled:e.disabled,title:e.title,className:(0,E.cn)("rounded p-1.5 text-[var(--muted-foreground)]",e.danger?"hover:bg-red-500/20 hover:text-red-400":"hover:bg-[var(--secondary)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(t,{className:"h-3.5 w-3.5"})})}let cp={readonly:{text:"Readonly",className:"bg-emerald-500/15 text-emerald-300"},observer:{text:"Observer",className:"bg-teal-500/15 text-teal-300"},workspace:{text:"Workspace",className:"bg-blue-500/15 text-blue-300"},full:{text:"Full",className:"bg-amber-500/15 text-amber-300"}};function ch(e){return e instanceof Error?e.message:String(e)}function cf(e){var t;let r=(0,T.kj)(),{ns:n,account:a,onEdit:s,onChanged:i}=e,[c,d]=(0,o.useState)(!1);if(e.editing)return(0,l.jsx)(cx,{...e});async function u(e,t){d(!0);try{await e(),i()}catch(e){alert(r("".concat(n,".").concat(t),{error:ch(e)}))}finally{d(!1)}}async function m(){var t;await (0,E.fN)(r("".concat(n,".confirmDelete"),{name:null!=(t=e.deleteName)?t:""}))&&await u(e.remove,"deleteFailed")}let p=cp[a.accessLevel];return(0,l.jsxs)("li",{className:"flex items-center gap-3 px-4 py-3",children:[(0,l.jsx)("div",{className:(0,E.cn)("h-2 w-2 rounded-full",a.enabled?"bg-emerald-500":"bg-[var(--muted-foreground)]")}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)]",children:e.title}),(0,l.jsx)("span",{className:(0,E.cn)("rounded px-1.5 py-0.5 text-[9px] font-medium",p.className),children:p.text}),e.titleExtra]}),(0,l.jsxs)("p",{className:"mt-0.5 truncate font-mono text-[10px] text-[var(--muted-foreground)]",children:[e.detail,e.workspaceMissing&&(0,l.jsx)("span",{className:"ml-1 text-red-400",children:r("".concat(n,".pathMissing"))})]}),e.footer]}),(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[(0,l.jsx)(cm,{onClick:()=>u(()=>e.setEnabled(!a.enabled),"switchFailed"),disabled:c,title:a.enabled?r("".concat(n,".disable")):r("".concat(n,".enable")),icon:a.enabled?ce.A:ct.A}),null==(t=e.actions)?void 0:t.call(e,c),(0,l.jsx)(cm,{onClick:s,disabled:c,title:r("".concat(n,".edit")),icon:cr.A}),(0,l.jsx)(cm,{onClick:m,disabled:c,title:r("".concat(n,".delete")),icon:eq.A,danger:!0})]})]})}function cx(e){var t;let r=(0,T.kj)(),{ns:n,account:a}=e,s=()=>({label:a.label,workspacePath:a.workspacePath,accessLevel:a.accessLevel,language:a.language||"en",...e.extraDraft}),[i,c]=(0,o.useState)(s),[d,u]=(0,o.useState)(a);d!==a&&(u(a),c(s()));let[m,p]=(0,o.useState)(!1),h=e=>c(t=>({...t,...e}));async function f(){p(!0);let{accessLevel:t,...a}=i;try{await e.save("observer"===t&&!e.observer?a:i),e.onSaved()}catch(e){alert(r("".concat(n,".saveFailed"),{error:ch(e)}))}finally{p(!1)}}return(0,l.jsx)("li",{className:"px-4 py-3",children:(0,l.jsxs)("div",{className:"space-y-2",children:[(0,l.jsx)(ca,{compact:!0,label:r("".concat(n,".label")),children:(0,l.jsx)(cs,{compact:!0,value:i.label,onChange:e=>h({label:e}),placeholder:r("".concat(n,".labelPlaceholder"))})}),(0,l.jsx)(ca,{compact:!0,label:r("".concat(n,".workspace")),children:(0,l.jsx)(cs,{compact:!0,mono:!0,value:i.workspacePath,onChange:e=>h({workspacePath:e}),placeholder:"/home/user/project"})}),(0,l.jsx)(ca,{compact:!0,label:r("".concat(n,".accessLevel")),hint:e.accessHint,children:(0,l.jsx)(cl,{compact:!0,ns:n,value:i.accessLevel,onChange:e=>h({accessLevel:e}),observer:e.observer})}),(0,l.jsx)(T.pZ,{value:i.language,onChange:e=>h({language:e})}),null==(t=e.editExtra)?void 0:t.call(e,i,e=>c(t=>({...t,...e}))),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsxs)("button",{onClick:f,disabled:m||!(0,E.Z1)(i.workspacePath),className:"flex items-center gap-1 rounded bg-[var(--primary)] px-2 py-1 text-[11px] text-white disabled:opacity-50",children:[(0,l.jsx)(rP.A,{className:"h-3 w-3"})," ",r("".concat(n,".save"))]}),(0,l.jsxs)("button",{onClick:e.onCancelEdit,disabled:m,className:"flex items-center gap-1 rounded border border-[var(--border)] px-2 py-1 text-[11px]",children:[(0,l.jsx)(e0.A,{className:"h-3 w-3"})," ",r("".concat(n,".cancel"))]})]})]})})}function cg(e){let t=(0,T.kj)(),{intent:r,onClose:n,onDone:a}=e,s=rU(e=>e.activeProject),[i,c]=(0,o.useState)(null),[d,m]=(0,o.useState)(null),[p,h]=(0,o.useState)("loading"),[f,x]=(0,o.useState)(t("wx.generatingQr")),[g,v]=(0,o.useState)({workspacePath:r.workspacePath||(null==s?void 0:s.path)||"",label:r.label||"",accessLevel:r.accessLevel,language:r.language}),{workspacePath:b,label:y,accessLevel:w,language:j}=g,[k,N]=(0,o.useState)(r.skipConfig?"scan":"config"),S=(0,o.useRef)(!1),C=r.skipConfig;async function A(){if(!(0,E.Z1)(b))return void x(t("wx.pathRequired"));N("scan"),h("loading"),x(t("wx.generatingQr"));try{let{qrcodeUrl:r,sessionKey:n}=await u.FH.wechat.startLogin();if(S.current)return;if(!r){h("error"),x(t("wx.qrFailed"));return}c(n);let s=await i9.toDataURL(r,{width:256,margin:2});if(S.current)return;m(s),h("waiting"),x(t("wx.scanPrompt"));let l=await u.FH.wechat.waitLogin({sessionKey:n,workspacePath:b,label:y||void 0,accessLevel:w,language:j});if(S.current)return;if(l.connected){var e;h("success"),x(t("wx.connected",{id:null!=(e=l.accountId)?e:""})),setTimeout(a,1200)}else h("error"),x(l.message||t("wx.loginFailed"))}catch(e){if(S.current)return;h("error"),x(e instanceof Error?e.message:String(e))}}return(0,o.useEffect)(()=>()=>{S.current=!0},[]),(0,o.useEffect)(()=>{r.skipConfig&&A()},[]),(0,l.jsxs)(co,{width:"w-[400px]",title:C?t("wx.rescanBtn"):t("wx.addTitle"),onClose:n,children:["config"===k?(0,l.jsxs)("div",{className:"space-y-3",children:[(0,l.jsx)(ci,{ns:"wx",value:g,onChange:e=>v(t=>({...t,...e})),workspaceHint:t("wx.bindHint"),accessHint:t("wx.readonlyShareHint")}),(0,l.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[(0,l.jsx)("button",{onClick:n,className:"rounded border border-[var(--border)] px-3 py-1.5 text-xs",children:t("wx.cancel")}),(0,l.jsx)("button",{onClick:A,disabled:!(0,E.Z1)(b),className:"rounded bg-[var(--primary)] px-3 py-1.5 text-xs text-white disabled:opacity-50",children:t("wx.nextStep")})]})]}):(0,l.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[d?(0,l.jsx)("img",{src:d,alt:t("wx.scanTitle"),className:"rounded border border-[var(--border)]"}):(0,l.jsx)("div",{className:"flex h-64 w-64 items-center justify-center rounded border border-[var(--border)] bg-[var(--card)]",children:(0,l.jsx)(R.A,{className:"h-6 w-6 animate-spin text-[var(--muted-foreground)]"})}),(0,l.jsx)("p",{className:(0,E.cn)("text-center text-xs","success"===p&&"text-emerald-400","error"===p&&"text-red-400","success"!==p&&"error"!==p&&"text-[var(--muted-foreground)]"),children:f}),(0,l.jsxs)("p",{className:"text-[10px] text-[var(--muted-foreground)]",children:[t("wx.bindTo")," ",(0,l.jsx)("code",{className:"text-[var(--foreground)]",children:b})]}),"error"===p&&(0,l.jsx)("button",{onClick:()=>{N("config")},className:"rounded border border-[var(--border)] px-3 py-1.5 text-xs",children:t("wx.restart")})]}),i&&(0,l.jsx)("input",{type:"hidden",value:i,readOnly:!0})]})}let cv={id:"wechat",label:"channels.wechat",Icon:i5.A,Component:function(){let e=(0,T.kj)(),{lang:t}=(0,T.s9)(),{accounts:r,loading:n,reload:a}=cd("wechat",u.FH.wechat.listAccounts),[s,i]=(0,o.useState)(null);return(0,l.jsx)(cu,{ns:"wx",accounts:r,loading:n,reload:a,onAdd:()=>i({workspacePath:"",label:"",accessLevel:"readonly",language:t,skipConfig:!1}),renderRow:(t,r)=>(0,l.jsx)(cf,{...r,ns:"wx",account:t,title:t.label||t.accountId,deleteName:t.label,titleExtra:(0,l.jsx)("span",{className:"font-mono text-[10px] text-[var(--muted-foreground)]",children:t.accountId}),detail:t.workspacePath,workspaceMissing:t.workspaceMissing,accessHint:e("wx.readonlyHint"),actions:r=>(0,l.jsx)(cm,{onClick:()=>i({workspacePath:t.workspacePath,label:t.label,accessLevel:t.accessLevel,language:t.language,skipConfig:!0}),disabled:r,title:e("wx.rescan"),icon:i7.A}),save:e=>u.FH.wechat.updateAccount(t.accountId,e),setEnabled:e=>u.FH.wechat.updateAccount(t.accountId,{enabled:e}),remove:()=>u.FH.wechat.deleteAccount(t.accountId)}),children:s&&(0,l.jsx)(cg,{intent:s,onClose:()=>i(null),onDone:()=>{i(null),a()}})})}};function cb(e){let t=(0,T.kj)(),[r,n]=(0,o.useState)(""),[a,s]=(0,o.useState)("");return(0,l.jsx)(cc,{ns:"tg",width:"w-[420px]",onClose:e.onClose,onDone:e.onDone,canSubmit:!!r.trim(),create:e=>u.FH.telegram.createAccount({botToken:r,...e,allowedUsers:a||void 0}),extraFields:(0,l.jsx)(ca,{label:t("tg.allowedUsersOptional"),children:(0,l.jsx)(cs,{mono:!0,value:a,onChange:s,placeholder:t("tg.allowedUsersHint")})}),children:(0,l.jsx)(ca,{label:t("tg.tokenLabel"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:r,onChange:n,placeholder:"123456:ABC-DEF..."})})})}let cy={id:"telegram",label:"Telegram",Icon:sK.A,Component:function(){let e=(0,T.kj)(),{accounts:t,loading:r,reload:n}=cd("telegram",u.FH.telegram.listAccounts),[a,s]=(0,o.useState)(!1);return(0,l.jsx)(cu,{ns:"tg",accounts:t,loading:r,reload:n,onAdd:()=>s(!0),renderRow:(t,r)=>(0,l.jsx)(cf,{...r,ns:"tg",account:t,title:t.label||"@".concat(t.botUsername),deleteName:t.botUsername,titleExtra:t.allowedUsers&&(0,l.jsx)("span",{className:"rounded bg-blue-500/15 px-1.5 py-0.5 text-[9px] font-medium text-blue-300",children:e("tg.whitelist")}),detail:(0,l.jsxs)(l.Fragment,{children:["@",t.botUsername," → ",t.workspacePath]}),workspaceMissing:t.workspaceMissing,extraDraft:{allowedUsers:t.allowedUsers},editExtra:(t,r)=>(0,l.jsx)(ca,{compact:!0,label:e("tg.allowedUsers"),children:(0,l.jsx)(cs,{compact:!0,mono:!0,value:t.allowedUsers,onChange:e=>r({allowedUsers:e}),placeholder:"123456789,@username"})}),save:e=>u.FH.telegram.updateAccount(t.accountId,e),setEnabled:e=>u.FH.telegram.updateAccount(t.accountId,{enabled:e}),remove:()=>u.FH.telegram.deleteAccount(t.accountId)}),children:a&&(0,l.jsx)(cb,{onClose:()=>s(!1),onDone:()=>{s(!1),n()}})})}};function cw(e){let t=(0,T.kj)(),[r,n]=(0,o.useState)(!1);return(0,l.jsxs)("div",{className:"mt-1 flex items-center gap-2",children:[(0,l.jsxs)("code",{className:"rounded bg-[var(--secondary)] px-1.5 py-0.5 font-mono text-[9px] text-[var(--muted-foreground)]",children:[e.token.slice(0,12),"..."]}),(0,l.jsx)("button",{onClick:function(){navigator.clipboard.writeText(e.token),n(!0),setTimeout(()=>n(!1),2e3)},className:"text-[10px] text-[var(--primary)] hover:underline",children:t(r?"web.copied":"web.copyToken")})]})}function cj(e){let t=(0,T.kj)(),{onClose:r,onDone:n}=e,[a,s]=(0,o.useState)(null);return a?(0,l.jsxs)(co,{width:"w-[420px]",onClose:n,children:[(0,l.jsx)("h3",{className:"mb-3 text-sm font-medium text-[var(--foreground)]",children:t("web.createSuccess")}),(0,l.jsx)("p",{className:"mb-2 text-xs text-[var(--muted-foreground)]",children:t("web.tokenNotice")}),(0,l.jsxs)("div",{className:"flex items-center gap-2 rounded border border-[var(--border)] bg-[var(--card)] p-2",children:[(0,l.jsx)("code",{className:"flex-1 break-all font-mono text-xs text-[var(--foreground)]",children:a.token}),(0,l.jsx)("button",{onClick:()=>navigator.clipboard.writeText(a.token),className:"rounded p-1 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,l.jsx)(ss.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"mt-4 flex justify-end",children:(0,l.jsx)("button",{onClick:n,className:"rounded bg-[var(--primary)] px-3 py-1.5 text-xs text-white",children:t("web.done")})})]}):(0,l.jsx)(cc,{ns:"web",width:"w-[420px]",observer:!0,onClose:r,create:e=>u.FH.web.createAccount(e),onDone:e=>s({token:e.token})})}let ck={id:"web_demo",label:"Web",Icon:U.A,Component:function(){let{accounts:e,loading:t,reload:r}=cd("web",u.FH.web.listAccounts),[n,a]=(0,o.useState)(!1);return(0,l.jsx)(cu,{ns:"web",accounts:e,loading:t,reload:r,onAdd:()=>a(!0),renderRow:(e,t)=>(0,l.jsx)(cf,{...t,ns:"web",account:e,observer:!0,title:e.label||e.accountId,detail:e.workspacePath,workspaceMissing:e.workspaceMissing,footer:(0,l.jsx)(cw,{token:e.token}),save:t=>u.FH.web.updateAccount(e.accountId,t),setEnabled:t=>u.FH.web.updateAccount(e.accountId,{enabled:t}),remove:()=>u.FH.web.deleteAccount(e.accountId)}),children:n&&(0,l.jsx)(cj,{onClose:()=>a(!1),onDone:()=>{a(!1),r()}})})}};var cN=r(74538);let cS="https://github.com/turmind/halo-agent/releases";function cC(e){var t;let r=(0,T.kj)(),{account:n,online:a}=e,[s,i]=(0,o.useState)(!1);async function c(){if(await (0,E.fN)(r("nodes.confirmDelete",{name:n.name}))){i(!0);try{await u.FH.nodes.deleteAccount(n.accountId),e.onChanged()}catch(e){alert(r("nodes.deleteFailed",{error:e instanceof Error?e.message:String(e)}))}finally{i(!1)}}}return(0,l.jsxs)("li",{className:"flex items-center gap-3 px-4 py-3",children:[(0,l.jsx)("div",{className:(0,E.cn)("h-2 w-2 rounded-full",a?"bg-emerald-500":"bg-[var(--muted-foreground)]"),title:a?r("nodes.online"):r("nodes.offline")}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsx)("span",{className:"text-xs font-medium text-[var(--foreground)]",children:n.name}),(0,l.jsxs)("p",{className:"mt-0.5 truncate font-mono text-[10px] text-[var(--muted-foreground)]",children:[n.workspacePath,n.workspaceMissing&&(0,l.jsx)("span",{className:"ml-1 text-red-400",children:r("nodes.pathMissing")})]}),(0,l.jsx)("p",{className:"mt-0.5 truncate text-[10px] text-[var(--muted-foreground)]",children:a?[null!=(t=a.root)?t:r("nodes.wholeMachine"),a.shell?r("nodes.shellOn"):r("nodes.shellOff"),a.os].join(" \xb7 "):r("nodes.offline")}),(0,l.jsx)(cw,{token:n.token})]}),(0,l.jsx)(cm,{onClick:c,disabled:s,title:r("nodes.delete"),icon:eq.A,danger:!0})]})}function cA(e){let t=(0,T.kj)(),{onClose:r,onDone:n}=e,a=rU(e=>e.activeProject),[s,i]=(0,o.useState)((null==a?void 0:a.path)||""),[c,d]=(0,o.useState)(""),[m,p]=(0,o.useState)(!1),[h,f]=(0,o.useState)(""),[x,g]=(0,o.useState)(null),[v,b]=(0,o.useState)(null);async function y(){f(""),p(!0);try{g((await u.FH.nodes.createAccount({workspacePath:s,name:c})).token)}catch(e){f(e instanceof Error?e.message:String(e))}finally{p(!1)}}if((0,o.useEffect)(()=>{u.FH.health().then(e=>b("string"==typeof(null==e?void 0:e.version)?e.version:null)).catch(()=>b(null))},[]),x){let e=/^\d+\.\d+\.\d+$/.test(null!=v?v:"")?"".concat(cS,"/download/v").concat(v):"".concat(cS,"/latest/download"),r="--server ".concat(location.origin," --root <folder>"),a="curl -fsSL ".concat(e,'/install.sh | sh\nPATH="$HOME/.local/bin:$PATH" HALO_NODE_TOKEN=').concat(x," halo-node ").concat(r),s="Invoke-WebRequest -UseBasicParsing ".concat(e,"/halo-node-windows-amd64.exe -OutFile halo-node-windows-amd64.exe\n$env:HALO_NODE_TOKEN = '").concat(x,"'\n.\\halo-node-windows-amd64.exe ").concat(r);return(0,l.jsxs)(co,{width:"w-[480px]",onClose:n,children:[(0,l.jsx)("h3",{className:"mb-3 text-sm font-medium text-[var(--foreground)]",children:t("nodes.createSuccess")}),(0,l.jsx)("p",{className:"mb-2 text-xs text-[var(--muted-foreground)]",children:t("nodes.commandNotice")}),[[t("nodes.commandUnix"),a],[t("nodes.commandWindows"),s]].map(e=>{let[t,r]=e;return(0,l.jsxs)("div",{className:"mt-2",children:[(0,l.jsx)("p",{className:"mb-1 text-[10px] font-medium text-[var(--muted-foreground)]",children:t}),(0,l.jsxs)("div",{className:"flex items-start gap-2 rounded border border-[var(--border)] bg-[var(--card)] p-2",children:[(0,l.jsx)("code",{className:"min-w-0 flex-1 whitespace-pre-wrap break-words font-mono text-xs text-[var(--foreground)]",children:r}),(0,l.jsx)("button",{onClick:()=>navigator.clipboard.writeText(r),className:"rounded p-1 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,l.jsx)(ss.A,{className:"h-3.5 w-3.5"})})]})]},t)}),(0,l.jsxs)("p",{className:"mt-2 text-[10px] text-[var(--muted-foreground)]",children:[t("nodes.commandHint")," ",(0,l.jsx)("a",{href:"https://github.com/turmind/halo-agent/blob/main/.halo/docs/guide/node.md",target:"_blank",rel:"noreferrer",className:"whitespace-nowrap text-[var(--primary)] hover:underline",children:t("nodes.guide")})]}),(0,l.jsx)("div",{className:"mt-4 flex justify-end",children:(0,l.jsx)("button",{onClick:n,className:"rounded bg-[var(--primary)] px-3 py-1.5 text-xs text-white",children:t("nodes.done")})})]})}return(0,l.jsx)(co,{width:"w-[420px]",title:t("nodes.addTitle"),onClose:r,children:(0,l.jsxs)("div",{className:"space-y-3",children:[(0,l.jsx)(ca,{label:t("nodes.bindWorkspace"),children:(0,l.jsx)(cs,{mono:!0,value:s,onChange:i,placeholder:"/home/user/project"})}),(0,l.jsx)(ca,{label:t("nodes.name"),hint:t("nodes.nameHint"),children:(0,l.jsx)(cs,{mono:!0,value:c,onChange:d,placeholder:"mbp"})}),h&&(0,l.jsx)("p",{className:"text-xs text-red-400",children:h}),(0,l.jsxs)("div",{className:"flex justify-end gap-2 pt-2",children:[(0,l.jsx)("button",{onClick:r,className:"rounded border border-[var(--border)] px-3 py-1.5 text-xs",children:t("nodes.cancel")}),(0,l.jsxs)("button",{onClick:y,disabled:m||!c||!(0,E.Z1)(s),className:"flex items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1.5 text-xs text-white disabled:opacity-50",children:[m&&(0,l.jsx)(R.A,{className:"h-3 w-3 animate-spin"}),t("nodes.addBtn")]})]})]})})}let cI={id:"nodes",label:"channels.nodes",Icon:cN.A,Component:function(){let{accounts:e,loading:t,reload:r}=cd("nodes",u.FH.nodes.listAccounts),[n,a]=(0,o.useState)(null),[s,i]=(0,o.useState)(!1),c=null!=n?n:new Map(e.flatMap(e=>e.online?[[e.accountId,e.online]]:[]));return(0,o.useEffect)(()=>{let e=p.on("nodes:changed",e=>{a(new Map(e.online.map(e=>{let{accountId:t,...r}=e;return[t,r]})))}),t=h(p,()=>{a(null),r()});return()=>{e(),t()}},[r]),(0,l.jsx)(cu,{ns:"nodes",accounts:e,loading:t,reload:r,onAdd:()=>i(!0),renderRow:e=>(0,l.jsx)(cC,{account:e,online:c.get(e.accountId),onChanged:r}),children:s&&(0,l.jsx)(cA,{onClose:()=>i(!1),onDone:()=>{i(!1),r()}})})}};function cE(e){let t=(0,T.kj)(),[r,n]=(0,o.useState)(""),[a,s]=(0,o.useState)("");return(0,l.jsxs)(cc,{ns:"slack",width:"w-[480px]",onClose:e.onClose,onDone:e.onDone,canSubmit:!!r.trim()&&!!a.trim(),create:e=>u.FH.slack.createAccount({botToken:r,appToken:a,...e}),children:[(0,l.jsx)(ca,{label:t("slack.botTokenLabel"),hint:t("slack.botTokenHint"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:r,onChange:n,placeholder:"xoxb-..."})}),(0,l.jsx)(ca,{label:t("slack.appTokenLabel"),hint:t("slack.appTokenHint"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:a,onChange:s,placeholder:"xapp-..."})})]})}let cT={id:"slack",label:"Slack",Icon:Y.A,Component:function(){let{accounts:e,loading:t,reload:r}=cd("slack",u.FH.slack.listAccounts),[n,a]=(0,o.useState)(!1);return(0,l.jsx)(cu,{ns:"slack",accounts:e,loading:t,reload:r,onAdd:()=>a(!0),renderRow:(e,t)=>(0,l.jsx)(cf,{...t,ns:"slack",account:e,title:e.label||e.teamId,deleteName:e.teamId,detail:(0,l.jsxs)(l.Fragment,{children:["team:",e.teamId," bot:",e.botUserId," → ",e.workspacePath]}),workspaceMissing:e.workspaceMissing,save:t=>u.FH.slack.updateAccount(e.accountId,t),setEnabled:t=>u.FH.slack.updateAccount(e.accountId,{enabled:t}),remove:()=>u.FH.slack.deleteAccount(e.accountId)}),children:n&&(0,l.jsx)(cE,{onClose:()=>a(!1),onDone:()=>{a(!1),r()}})})}};function c_(e){let t=(0,T.kj)(),[r,n]=(0,o.useState)(""),[a,s]=(0,o.useState)(""),[i,c]=(0,o.useState)(""),[d,m]=(0,o.useState)("");return(0,l.jsxs)(cc,{ns:"feishu",width:"w-[480px]",onClose:e.onClose,onDone:e.onDone,canSubmit:!!r.trim()&&!!a.trim(),create:e=>u.FH.feishu.createAccount({appId:r,appSecret:a,verificationToken:i||void 0,encryptKey:d||void 0,...e}),children:[(0,l.jsx)(ca,{label:t("feishu.appIdLabel"),children:(0,l.jsx)(cs,{mono:!0,value:r,onChange:n,placeholder:"cli_xxxxxxx"})}),(0,l.jsx)(ca,{label:t("feishu.appSecretLabel"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:a,onChange:s,placeholder:"****************"})}),(0,l.jsx)(ca,{label:t("feishu.verificationTokenLabel"),children:(0,l.jsx)(cs,{mono:!0,value:i,onChange:c,placeholder:""})}),(0,l.jsx)(ca,{label:t("feishu.encryptKeyLabel"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:d,onChange:m,placeholder:""})})]})}function cP(e){let t=(0,T.kj)(),[r,n]=(0,o.useState)(""),[a,s]=(0,o.useState)("");return(0,l.jsxs)(cc,{ns:"wecom",width:"w-[480px]",onClose:e.onClose,onDone:e.onDone,canSubmit:!!r.trim()&&!!a.trim(),create:e=>u.FH.wecom.createAccount({botId:r,secret:a,...e}),children:[(0,l.jsx)(ca,{label:t("wecom.botIdLabel"),children:(0,l.jsx)(cs,{mono:!0,value:r,onChange:n,placeholder:"wecombot_xxxxxxx"})}),(0,l.jsx)(ca,{label:t("wecom.secretLabel"),children:(0,l.jsx)(cs,{mono:!0,type:"password",value:a,onChange:s,placeholder:"****************"})})]})}let cM=[cv,cy,ck,cI,cT,{id:"feishu",label:"Feishu",Icon:r(61557).A,Component:function(){let{accounts:e,loading:t,reload:r}=cd("feishu",u.FH.feishu.listAccounts),[n,a]=(0,o.useState)(!1);return(0,l.jsx)(cu,{ns:"feishu",accounts:e,loading:t,reload:r,onAdd:()=>a(!0),renderRow:(e,t)=>(0,l.jsx)(cf,{...t,ns:"feishu",account:e,title:e.label||e.appId,deleteName:e.appId,detail:(0,l.jsxs)(l.Fragment,{children:["app:",e.appId," bot:",e.botOpenId," → ",e.workspacePath]}),workspaceMissing:e.workspaceMissing,save:t=>u.FH.feishu.updateAccount(e.accountId,t),setEnabled:t=>u.FH.feishu.updateAccount(e.accountId,{enabled:t}),remove:()=>u.FH.feishu.deleteAccount(e.accountId)}),children:n&&(0,l.jsx)(c_,{onClose:()=>a(!1),onDone:()=>{a(!1),r()}})})}},{id:"wecom",label:"WeCom",Icon:r(60490).A,Component:function(){let{accounts:e,loading:t,reload:r}=cd("wecom",u.FH.wecom.listAccounts),[n,a]=(0,o.useState)(!1);return(0,l.jsx)(cu,{ns:"wecom",accounts:e,loading:t,reload:r,onAdd:()=>a(!0),renderRow:(e,t)=>(0,l.jsx)(cf,{...t,ns:"wecom",account:e,title:e.label||e.botId,deleteName:e.botId,detail:(0,l.jsxs)(l.Fragment,{children:["bot:",e.botId," → ",e.workspacePath]}),workspaceMissing:e.workspaceMissing,save:t=>u.FH.wecom.updateAccount(e.accountId,t),setEnabled:t=>u.FH.wecom.updateAccount(e.accountId,{enabled:t}),remove:()=>u.FH.wecom.deleteAccount(e.accountId)}),children:n&&(0,l.jsx)(cP,{onClose:()=>a(!1),onDone:()=>{a(!1),r()}})})}}],cF="halo_channel_active",cD=new Set(cM.map(e=>e.id)),cL=null!=(s=null==(a=cM[0])?void 0:a.id)?s:"",cR=(0,b.v)(e=>({active:function(){try{let e=localStorage.getItem(cF);if(e&&cD.has(e))return e}catch(e){}return cL}(),setActive(t){if(cD.has(t)){try{localStorage.setItem(cF,t)}catch(e){}e({active:t})}}}));function cH(){let e=(0,T.kj)(),t=cR(e=>e.active),r=cR(e=>e.setActive);return(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"flex h-10 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(i5.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:"Channels"}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:()=>i6(),title:"Refresh",className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] transition-colors",children:(0,l.jsx)(aD.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto py-1",children:cM.map(n=>{if(!1===n.enabled)return null;let a=n.Icon,s=e(n.label),o=s===n.label?n.label:s;return(0,l.jsxs)("button",{onClick:()=>r(n.id),className:(0,E.cn)("flex w-full items-center gap-2 px-3 py-2 text-xs transition-colors",t===n.id?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--secondary)]/50 hover:text-[var(--foreground)]"),children:[(0,l.jsx)(a,{className:"h-3.5 w-3.5"}),o]},n.id)})})]})}function cz(){let e=cR(e=>e.active),t=cM.find(t=>t.id===e);if(!t)return null;let r=t.Component;return(0,l.jsx)(r,{})}var cO=r(2462),cU=r(26411);let cB=(0,b.v)(e=>({selectedId:null,filter:"all",refreshTick:0,setSelectedId:t=>e({selectedId:t}),setFilter:t=>e({filter:t}),bumpRefresh:()=>e(e=>({refreshTick:e.refreshTick+1}))}));function cW(e){var t;let{status:r}=e,n=null!=(t=cK[r])?t:"bg-[var(--accent)] text-[var(--foreground)]";return(0,l.jsx)("span",{className:(0,E.cn)("rounded px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide",n),children:r.replace("_"," ")})}let cK={pending:"bg-[var(--accent)] text-[var(--foreground)]",running:"bg-blue-700 text-blue-100",awaiting_review:"bg-amber-600 text-amber-50",approved:"bg-emerald-700 text-emerald-50",applied:"bg-emerald-800 text-emerald-100",skipped:"bg-[var(--accent)] text-[var(--foreground)]",rejected:"bg-red-700 text-red-50",failed:"bg-red-800 text-red-100",timeout:"bg-orange-700 text-orange-100",rolled_back:"bg-violet-900 text-violet-200"},cG={owner:"turmind",repo:"halo-agent"},cq=e=>Array.from(new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e),e=>e.segment),c$=/^(?:(?:https?|ssh|git):\/\/(?:[^@/\s]+@)?github\.com(?::\d+)?\/|[^@/\s]+@github\.com:)([\w.-]+)\/([\w.-]+?)(?:\.git)?\/?$/i;function cY(e,t){var r;let n=t.files.slice(0,20).map(e=>"`".concat(e,"`")).join(", "),a=t.files.length-20,s=t.files.length?a>0?"".concat(n," …and ").concat(a," more"):n:"—",l=t.score?"avg ".concat(t.score.avg," \xb7 confidence ").concat(t.score.confidence):"—";return[e,"\n---","- Run: `".concat(t.runId,"`"),"- Files: ".concat(s),"- Score: ".concat(l),"- Halo: ".concat(null!=(r=t.haloVersion)?r:"unknown"),""].join("\n")}function cJ(){let e=(0,T.kj)(),t=cB(e=>e.selectedId);return t?(0,l.jsx)(cV,{id:t}):(0,l.jsx)(cZ,{label:e("evolution.list.pickRun")})}function cZ(e){let{label:t}=e;return(0,l.jsx)("div",{className:"flex h-full items-center justify-center p-6 text-sm text-[var(--muted-foreground)]",children:t})}function cV(e){var t,r,n,a;let{id:s}=e,i=(0,T.kj)(),c=cB(e=>e.refreshTick),d=cB(e=>e.setSelectedId),[m,h]=(0,o.useState)(null),[f,x]=(0,o.useState)(!0),[g,v]=(0,o.useState)(null),[b,y]=(0,o.useState)(!1),[w,j]=(0,o.useState)(""),[k,N]=(0,o.useState)(""),[S,C]=(0,o.useState)(!1),[A,I]=(0,o.useState)(!1),[_,P]=(0,o.useState)(!1),[M,F]=(0,o.useState)(""),D=(0,o.useCallback)(async()=>{x(!0);try{let e=await u.FH.evolution.getRun(s);h(e),v(null)}catch(e){v(e instanceof Error?e.message:String(e))}finally{x(!1)}},[s]);if((0,o.useEffect)(()=>{h(null),C(!1),I(!1),j(""),N(""),D()},[s,D]),(0,o.useEffect)(()=>{0!==c&&D()},[c,D]),(0,o.useEffect)(()=>p.on("evolution:run_changed",e=>{e.id===s&&("deleted"===e.kind?d(null):D())}),[s,D,d]),f&&!m)return(0,l.jsx)(cZ,{label:i("evolution.list.loading")});if(g)return(0,l.jsx)(cZ,{label:i("cron.error",{error:g})});if(!m)return(0,l.jsx)(cZ,{label:i("evolution.list.noRun")});let{run:L,autoApply:R,observation:H,rollback:z,publishedFiles:O,patchMd:U,scoreJson:B,skipReasonMd:W,snapshotSummary:K,wrapperLog:G,subCliLog:q}=m,$="awaiting_review"===L.status,Y="approved"===L.status&&("failed"===L.applyStatus||"timeout"===L.applyStatus),J="auto"===L.applyApprovedBy&&(null==R?void 0:R.auto)===!0,Z=J&&$&&("failed"===L.applyStatus||"timeout"===L.applyStatus),V=async()=>{y(!0);try{await u.FH.evolution.approve(s,w.trim()||void 0),C(!1),j(""),await D()}catch(e){alert(e instanceof Error?e.message:String(e))}finally{y(!1)}},X=async()=>{if(await (0,E.fN)(i("evolution.action.confirmReject"))){y(!0);try{await u.FH.evolution.reject(s),await D()}catch(e){alert(e instanceof Error?e.message:String(e))}finally{y(!1)}}},Q=async()=>{let e=k.trim();if(e){y(!0);try{await u.FH.evolution.addHint(s,e),N(""),I(!1),await D()}catch(e){alert(e instanceof Error?e.message:String(e))}finally{y(!1)}}},ee=async()=>{let e=M.trim();if(!e)return void alert(i("evolution.action.retryNeedsHint"));y(!0);try{await u.FH.evolution.retry(s,e),F(""),P(!1),await D()}catch(e){alert(e instanceof Error?e.message:String(e))}finally{y(!1)}},et=async()=>{let e=L.applyId;if(e&&await (0,E.fN)(i("evolution.rollback.confirm"))){y(!0);try{var t,r;let n=await u.FH.evolution.rollback(e);if(!n.ok&&"conflict"===n.error){let r=(null!=(t=n.conflicts)?t:[]).map(e=>"• ".concat(e.rel," — ").concat(i("evolution.rollback.state.".concat(e.reason)))).join("\n");if(!await (0,E.fN)(i("evolution.rollback.confirmForce",{files:r})))return;n=await u.FH.evolution.rollback(e,!0)}n.ok?n.keptDirs.length>0&&alert(i("evolution.rollback.keptDirs",{dirs:n.keptDirs.map(e=>"• ".concat(e)).join("\n")})):alert("backup_mismatch"===n.error?i("evolution.rollback.backupMismatch",{files:(null!=(r=n.files)?r:[]).join("\n")}):i("evolution.rollback.failed",{error:n.error})),await D()}catch(e){alert(e instanceof Error?e.message:String(e))}finally{y(!1)}}},er=async()=>{if(await (0,E.fN)(i("evolution.action.confirmDelete"))){y(!0);try{await u.FH.evolution.delete(s),d(null)}catch(e){alert(e instanceof Error?e.message:String(e)),y(!1)}}};return(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(cW,{status:L.status}),(0,l.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:L.triggerKind}),(0,l.jsx)("span",{className:"ml-auto text-xs text-[var(--muted-foreground)]",children:L.id}),"pending"!==L.status&&"running"!==L.status&&"approved"!==L.status&&(0,l.jsx)("button",{disabled:b,onClick:()=>{er()},className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-red-700/80 hover:text-white disabled:opacity-50",title:i("evolution.action.delete"),children:(0,l.jsx)(eq.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsxs)("div",{className:"mt-2 text-xs text-[var(--muted-foreground)]",children:[i("evolution.detail.workspace")," ",(0,l.jsx)("span",{className:"font-mono",children:L.workspacePath})]}),L.userHint&&(0,l.jsxs)("div",{className:"mt-2 rounded bg-[var(--accent)] p-2 text-xs",children:[(0,l.jsx)("div",{className:"font-medium text-[var(--foreground)]",children:i("evolution.detail.hint")}),(0,l.jsx)("div",{className:"mt-1 whitespace-pre-wrap text-[var(--muted-foreground)]",children:L.userHint})]}),L.failureReason&&(0,l.jsx)("div",{className:"mt-2 rounded bg-red-900/30 p-2 text-xs text-red-200",children:i("evolution.detail.failure",{reason:L.failureReason})}),"skipped"===L.status&&(0,l.jsx)("div",{className:"mt-2 rounded bg-[var(--accent)] p-2 text-xs text-[var(--muted-foreground)]",children:i("evolution.detail.skipped")}),(Y||Z)&&(0,l.jsxs)("div",{className:"mt-2 rounded bg-red-900/30 p-2 text-xs text-red-200",children:[(0,l.jsx)("div",{className:"font-medium",children:i(Z?"evolution.auto.failed":"evolution.detail.applyFailed")}),L.applyFailureReason&&(0,l.jsx)("div",{className:"mt-1 whitespace-pre-wrap",children:L.applyFailureReason})]}),J&&("approved"===L.status||"applied"===L.status||"rolled_back"===L.status)&&R.score&&(0,l.jsxs)("div",{className:"mt-2 rounded bg-sky-900/30 p-2 text-xs text-sky-100",children:[(0,l.jsx)("div",{className:"font-medium",children:i("evolution.auto.applied",{level:R.level,avg:R.score.avg,threshold:R.threshold,confidence:R.score.confidence})}),(0,l.jsxs)("div",{className:"mt-1",children:[i("evolution.auto.files")," ",(0,l.jsx)("span",{className:"font-mono",children:(null!=O?O:R.files.map(e=>e.rel)).join(", ")})]})]}),R&&!R.auto&&R.reason&&(0,l.jsx)("div",{className:"mt-2 rounded bg-[var(--accent)] p-2 text-xs text-[var(--muted-foreground)]",children:i("evolution.auto.notApplied",{level:R.level,reason:function(e,t){var r,n,a,s,l,o,i,c,d,u;let m=null!=(l=t.reason)?l:"",p=m.indexOf(":"),h=p<0?m:m.slice(0,p),f="evolution.auto.reason.".concat("source_access"!==h||t.sourceAccess?h:"source_access_unrecorded"),x=e(f,{detail:p<0?"":m.slice(p+1),threshold:t.threshold,access:null!=(o=t.sourceAccess)?o:"—",avg:null!=(i=null==(r=t.score)?void 0:r.avg)?i:"—",confidence:null!=(c=null==(n=t.score)?void 0:n.confidence)?c:"—",behavior:null!=(d=null==(a=t.score)?void 0:a.behavior)?d:"—",lint:null!=(u=null==(s=t.score)?void 0:s.lint)?u:"—"});return x===f?m:x}(i,R)})})]}),$&&(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-b border-[var(--border)] bg-amber-950/20 px-4 py-2",children:[(0,l.jsxs)("button",{disabled:b,onClick:()=>C(e=>!e),className:"flex items-center gap-1 rounded bg-emerald-700 px-2 py-1 text-xs text-emerald-50 hover:bg-emerald-600 disabled:opacity-50",children:[(0,l.jsx)(rP.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.approve")]}),(0,l.jsxs)("button",{disabled:b,onClick:()=>{X()},className:"flex items-center gap-1 rounded bg-red-700 px-2 py-1 text-xs text-red-50 hover:bg-red-600 disabled:opacity-50",children:[(0,l.jsx)(e0.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.reject")]}),(0,l.jsxs)("button",{disabled:b,onClick:()=>I(e=>!e),className:"flex items-center gap-1 rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:bg-[var(--accent)]/80 disabled:opacity-50",children:[(0,l.jsx)(cO.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.addHint")]}),(0,l.jsxs)("button",{disabled:b,onClick:()=>P(e=>!e),className:"flex items-center gap-1 rounded bg-sky-700 px-2 py-1 text-xs text-sky-50 hover:bg-sky-600 disabled:opacity-50",title:i("evolution.retry.tooltip"),children:[(0,l.jsx)(aD.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.retry")]})]}),!$&&("failed"===L.status||"timeout"===L.status||"skipped"===L.status||"rejected"===L.status||"rolled_back"===L.status||Y)&&(0,l.jsx)("div",{className:"flex flex-wrap items-center gap-2 border-b border-[var(--border)] bg-sky-950/20 px-4 py-2",children:(0,l.jsxs)("button",{disabled:b,onClick:()=>P(e=>!e),className:"flex items-center gap-1 rounded bg-sky-700 px-2 py-1 text-xs text-sky-50 hover:bg-sky-600 disabled:opacity-50",title:i("evolution.retry.tooltip"),children:[(0,l.jsx)(aD.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.retryWithHint")]})}),"applied"===L.status&&z&&(0,l.jsx)("div",{className:"flex flex-wrap items-center gap-2 border-b border-[var(--border)] px-4 py-2",children:z.available?(0,l.jsxs)("button",{disabled:b,onClick:()=>{et()},className:"flex items-center gap-1 rounded bg-violet-800 px-2 py-1 text-xs text-violet-50 hover:bg-violet-700 disabled:opacity-50",children:[(0,l.jsx)(cU.A,{className:"h-3.5 w-3.5"})," ",i("evolution.action.rollback")]}):(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:i("evolution.rollback.unavailable")})}),_&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)] bg-sky-950/20 px-4 py-2",children:[(0,l.jsx)("div",{className:"text-xs text-[var(--muted-foreground)]",children:i("evolution.retry.title")}),(0,l.jsx)("textarea",{value:M,onChange:e=>F(e.target.value),rows:2,className:"mt-1 w-full rounded border border-[var(--border)] bg-[var(--background)] p-2 text-xs",placeholder:i("evolution.retry.placeholder"),autoFocus:!0}),(0,l.jsxs)("div",{className:"mt-1 flex gap-2",children:[(0,l.jsx)("button",{disabled:b||!M.trim(),onClick:()=>{ee()},className:"rounded bg-sky-700 px-2 py-1 text-xs text-sky-50 hover:bg-sky-600 disabled:opacity-50",children:i("evolution.action.confirmRetry")}),(0,l.jsx)("button",{disabled:b,onClick:()=>{P(!1),F("")},className:"rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:bg-[var(--accent)]/80 disabled:opacity-50",children:i("evolution.action.cancel")})]})]}),$&&S&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)] bg-emerald-950/20 px-4 py-2",children:[(0,l.jsx)("div",{className:"text-xs text-[var(--muted-foreground)]",children:i("evolution.approve.title")}),(0,l.jsx)("textarea",{value:w,onChange:e=>j(e.target.value),rows:2,className:"mt-1 w-full rounded border border-[var(--border)] bg-[var(--background)] p-2 text-xs",placeholder:i("evolution.approve.placeholder")}),(0,l.jsxs)("div",{className:"mt-1 flex gap-2",children:[(0,l.jsx)("button",{disabled:b,onClick:()=>{V()},className:"rounded bg-emerald-700 px-2 py-1 text-xs text-emerald-50 hover:bg-emerald-600 disabled:opacity-50",children:i("evolution.action.confirmApprove")}),(0,l.jsx)("button",{disabled:b,onClick:()=>{C(!1),j("")},className:"rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:bg-[var(--accent)]/80 disabled:opacity-50",children:i("evolution.action.cancel")})]})]}),$&&A&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)] bg-[var(--background)]/40 px-4 py-2",children:[(0,l.jsx)("div",{className:"text-xs text-[var(--muted-foreground)]",children:i("evolution.hint.title")}),(0,l.jsx)("textarea",{value:k,onChange:e=>N(e.target.value),rows:2,className:"mt-1 w-full rounded border border-[var(--border)] bg-[var(--background)] p-2 text-xs",placeholder:i("evolution.hint.placeholder")}),(0,l.jsxs)("div",{className:"mt-1 flex gap-2",children:[(0,l.jsx)("button",{disabled:b||!k.trim(),onClick:()=>{Q()},className:"rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:bg-[var(--accent)]/80 disabled:opacity-50",children:i("evolution.action.add")}),(0,l.jsx)("button",{disabled:b,onClick:()=>{I(!1),N("")},className:"rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:bg-[var(--accent)]/80 disabled:opacity-50",children:i("evolution.action.cancel")})]})]}),B&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsx)("div",{className:"mb-2 text-sm font-medium",children:i("evolution.score.title")}),(0,l.jsxs)("div",{className:"grid grid-cols-4 gap-3 text-xs",children:[(0,l.jsx)(c1,{label:i("evolution.score.lint"),value:B.lint}),(0,l.jsx)(c1,{label:i("evolution.score.behavior"),value:B.behavior}),(0,l.jsx)(c1,{label:i("evolution.score.scope"),value:B.scope}),(0,l.jsx)(c1,{label:i("evolution.score.avg"),value:B.avg,highlight:!0})]}),(0,l.jsxs)("div",{className:"mt-2 flex items-center gap-2 text-xs text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{children:i("evolution.score.confidence")}),(0,l.jsx)("span",{className:"font-medium text-[var(--foreground)]",children:null!=(t=B.confidence)?t:"—"})]}),"string"==typeof B.notes&&(0,l.jsx)("div",{className:"mt-2 whitespace-pre-wrap rounded bg-[var(--accent)] p-2 text-xs text-[var(--foreground)]",children:B.notes})]}),K&&(0,l.jsxs)("div",{className:"border-b border-[var(--border)] px-4 py-3 text-xs",children:[(0,l.jsx)("div",{className:"mb-1 font-medium",children:i("evolution.snapshot.title",{n:null!=(r=K.messageCount)?r:0})}),K.firstUser&&(0,l.jsxs)("div",{className:"mb-1",children:[(0,l.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[i("evolution.snapshot.firstUser")," "]}),(0,l.jsx)("span",{className:"line-clamp-2 whitespace-pre-wrap",children:K.firstUser})]}),K.firstAssistant&&(0,l.jsxs)("div",{children:[(0,l.jsxs)("span",{className:"text-[var(--muted-foreground)]",children:[i("evolution.snapshot.firstAssistant")," "]}),(0,l.jsx)("span",{className:"line-clamp-3 whitespace-pre-wrap",children:(n=K.firstAssistant,a=400,n.length<=400?n:n.slice(0,a)+"…")})]})]}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto px-4 py-3",children:[H&&(0,l.jsx)(cQ,{run:L,observation:H,autoApply:R,publishedFiles:O,scoreJson:B}),W&&(0,l.jsxs)("div",{className:"mb-4",children:[(0,l.jsx)("div",{className:"mb-2 text-sm font-medium",children:i("evolution.skip.title")}),(0,l.jsx)("pre",{className:"whitespace-pre-wrap rounded border border-[var(--border)]/40 bg-[var(--secondary)]/40 p-3 text-xs leading-relaxed",children:W})]}),(0,l.jsx)("div",{className:"mb-2 text-sm font-medium",children:i("evolution.patch.title")}),U?(0,l.jsx)("pre",{className:"whitespace-pre-wrap rounded bg-[var(--accent)] p-3 text-xs leading-relaxed",children:U}):(0,l.jsx)("div",{className:"text-xs italic text-[var(--muted-foreground)]",children:i("evolution.patch.empty")}),(G||q)&&(0,l.jsxs)("div",{className:"mt-6 space-y-4 border-t border-[var(--border)] pt-4",children:[(0,l.jsx)("div",{className:"text-xs uppercase tracking-wide text-[var(--muted-foreground)]",children:i("evolution.logs.title")}),G&&(0,l.jsx)(c0,{title:i("evolution.logs.wrapper"),body:G}),q&&(0,l.jsx)(c0,{title:i("evolution.logs.subCli"),body:q})]})]})]})}let cX=null;function cQ(e){var t;let{run:r,observation:n,autoApply:a,publishedFiles:s,scoreJson:i}=e,c=(0,T.kj)(),[d,m]=(0,o.useState)(null),[p,h]=(0,o.useState)(null);(0,o.useEffect)(()=>{let e=!0;return(null!=cX||(cX=u.FH.health().then(e=>"string"==typeof(null==e?void 0:e.version)?e.version:null).catch(()=>null)),cX).then(t=>{e&&m(t)}),u.FH.git.remotes(r.workspacePath).then(t=>{let r=t.remotes.find(e=>"origin"===e.name);e&&h(r?function(e){let t=c$.exec(e.trim());return t?{owner:t[1],repo:t[2]}:null}(r.url):null)}).catch(()=>{e&&h(null)}),()=>{e=!1}},[r.workspacePath]);let f=null!=(t=null==a?void 0:a.score)?t:"number"==typeof(null==i?void 0:i.avg)&&"string"==typeof i.confidence?{avg:i.avg,confidence:i.confidence}:null,x=[...p?[{label:c("evolution.observation.issueWorkspace",{repo:"".concat(p.owner,"/").concat(p.repo)}),repo:p}]:[],{label:c("evolution.observation.issueHalo",{repo:"".concat(cG.owner,"/").concat(cG.repo)}),repo:cG}];return(0,l.jsxs)("div",{className:"mb-4 rounded border border-amber-700/50 bg-amber-950/20 p-3",children:[(0,l.jsx)("div",{className:"mb-2 text-sm font-medium",children:c("evolution.observation.title")}),(0,l.jsx)("pre",{className:"whitespace-pre-wrap text-xs leading-relaxed",children:n}),(0,l.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2 text-xs",children:[(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:c("evolution.observation.issue")}),x.map(e=>{var t;return(0,l.jsx)("a",{href:function(e,t){let r="https://github.com/".concat(e.owner,"/").concat(e.repo,"/issues/new?title=").concat(encodeURIComponent(function(e){var t;let r=null!=(t=e.split(/\r?\n/).map(e=>e.trim().replace(/^(?:#+|>|[-*+]|\d+[.)])\s+/,"").trim()).find(Boolean))?t:"",n=cq(r);return"[evo] ".concat(n.length>80?"".concat(n.slice(0,80).join(""),"…"):r)}(t.observation)),"&body="),n=r+encodeURIComponent(cY(t.observation,t));if(n.length<=8e3)return n;let a=cq(t.observation),s=e=>r+encodeURIComponent(cY(a.slice(0,e).join("").trimEnd()+t.truncatedNote,t)),l=0,o=a.length-1;for(;l<o;){let e=Math.ceil((l+o)/2);s(e).length<=8e3?l=e:o=e-1}return s(l)}(e.repo,{observation:n,runId:r.id,files:null!=(t=null!=s?s:null==a?void 0:a.files.map(e=>e.rel))?t:[],score:f,haloVersion:d,truncatedNote:c("evolution.observation.truncated",{id:r.id})}),target:"_blank",rel:"noopener noreferrer",className:"rounded bg-[var(--accent)] px-2 py-0.5 text-[var(--foreground)] hover:bg-[var(--accent)]/80",children:e.label},e.label)})]}),(0,l.jsx)("div",{className:"mt-1 text-[10px] text-[var(--muted-foreground)]",children:c("evolution.observation.privacy")})]})}function c0(e){let{title:t,body:r}=e,[n,a]=(0,o.useState)(r.length<4e3);return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{type:"button",className:"flex items-center gap-2 text-sm font-medium text-[var(--foreground)] hover:text-[var(--primary)]",onClick:()=>a(e=>!e),children:[(0,l.jsx)("span",{children:n?"▼":"▶"}),(0,l.jsx)("span",{children:t}),(0,l.jsxs)("span",{className:"text-xs text-[var(--muted-foreground)]",children:["(",(r.length/1024).toFixed(1)," KB)"]})]}),n&&(0,l.jsx)("pre",{className:"mt-2 whitespace-pre-wrap break-words rounded border border-[var(--border)]/40 bg-[var(--background)]/40 p-3 font-mono text-[11px] leading-relaxed",children:r})]})}function c1(e){let{label:t,value:r,highlight:n}=e;return(0,l.jsxs)("div",{className:(0,E.cn)("rounded p-2",n?"bg-[var(--primary)]/10":"bg-[var(--accent)]"),children:[(0,l.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-[var(--muted-foreground)]",children:t}),(0,l.jsx)("div",{className:(0,E.cn)("text-lg font-medium",n&&"text-[var(--primary)]"),children:"number"==typeof r?r:"—"})]})}var c3=r(32305);let c2=["all","awaiting_review","pending","running","approved","applied","skipped","rejected","failed","timeout","rolled_back","auto","observation","archived"];function c5(){let e=(0,T.kj)(),t=cB(e=>e.filter),r=cB(e=>e.setFilter),n=cB(e=>e.selectedId),a=cB(e=>e.setSelectedId),s=cB(e=>e.bumpRefresh),[i,c]=(0,o.useState)([]),[d,m]=(0,o.useState)(!0),[h,f]=(0,o.useState)(null),[x,g]=(0,o.useState)(!1),[v,b]=(0,o.useState)(null),[y,w]=(0,o.useState)(!1),j=(0,o.useRef)(0);(0,o.useEffect)(()=>{j.current=i.length,i.length>=300&&b(null)},[i.length]);let k=(0,o.useCallback)(async()=>{let e=Math.min(300,Math.max(20,j.current));try{let r=await u.FH.evolution.listRuns({archived:"archived"===t,limit:e});c(r.runs),b(r.hasMore?r.nextCursor:null),f(null)}catch(e){f(e instanceof Error?e.message:String(e))}finally{m(!1)}},[t]),N=(0,o.useCallback)(async()=>{if(v&&!y){w(!0);try{let e=await u.FH.evolution.listRuns({archived:"archived"===t,limit:20,before:v});c(t=>[...t,...e.runs]),b(e.hasMore?e.nextCursor:null)}catch(e){console.error("evolution.listRuns more",e)}finally{w(!1)}}},[t,v,y]);(0,o.useEffect)(()=>{k()},[k]);let S=a_(N,i.length);(0,o.useEffect)(()=>{let e=p.on("evolution:run_changed",()=>{k()}),t=p.on("evolution:apply_changed",()=>{k()});return()=>{e(),t()}},[k]);let C=(0,o.useMemo)(()=>"all"===t||"archived"===t?i:"auto"===t?i.filter(e=>"auto"===e.applyApprovedBy):"observation"===t?i.filter(e=>e.hasObservation):i.filter(e=>e.status===t),[i,t]);return(0,o.useEffect)(()=>{var e;if(n)return;let t=null!=(e=i.find(e=>"awaiting_review"===e.status))?e:i[0];t&&a(t.id)},[i,n,a]),(0,l.jsxs)("div",{className:"flex h-full flex-col border-r border-[var(--border)] bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-[var(--foreground)]",children:[(0,l.jsx)(sL.A,{className:"h-4 w-4"}),e("evolution.title")]}),(0,l.jsx)("button",{onClick:async()=>{g(!0),s();let e=new Promise(e=>setTimeout(e,400));await Promise.all([k(),e]),g(!1)},disabled:x,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--accent)] hover:text-[var(--foreground)] disabled:cursor-default",title:e("evolution.refresh"),children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",x&&"animate-spin")})})]}),(0,l.jsx)("div",{className:"flex flex-wrap gap-1 border-b border-[var(--border)] px-2 py-2",children:c2.map(n=>(0,l.jsx)("button",{onClick:()=>r(n),className:(0,E.cn)("w-16 shrink-0 rounded px-2 py-0.5 text-xs text-center",t===n?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--accent)] hover:text-[var(--foreground)]"),children:e("evolution.filter.".concat(n))},n))}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto",children:[d&&(0,l.jsx)(c4,{label:e("evolution.list.loading")}),h&&(0,l.jsx)(c4,{label:e("cron.error",{error:h})}),!d&&!h&&0===C.length&&(0,l.jsx)(c4,{label:e("evolution.list.empty")}),C.map(e=>(0,l.jsx)(c8,{run:e,selected:e.id===n,onClick:()=>a(e.id)},e.id)),v&&(0,l.jsx)("div",{ref:S,className:"px-3 py-3 text-center text-[10px] text-[var(--muted-foreground)]",children:y?e("evolution.list.loading"):e("cron.loadOlder")})]})]})}function c4(e){let{label:t}=e;return(0,l.jsx)("div",{className:"flex h-full items-center justify-center p-6 text-sm text-[var(--muted-foreground)]",children:t})}function c8(e){var t;let{run:r,selected:n,onClick:a}=e,s=(0,T.kj)();return(0,l.jsxs)("button",{onClick:a,className:(0,E.cn)("flex w-full flex-col gap-1 border-b border-[var(--border)] px-3 py-2 text-left text-sm transition-colors",n?"bg-[var(--accent)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:bg-[var(--accent)] hover:text-[var(--foreground)]"),children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(cW,{status:r.status}),("approved"===r.status||"awaiting_review"===r.status&&"auto"===r.applyApprovedBy)&&("failed"===r.applyStatus||"timeout"===r.applyStatus)&&(0,l.jsx)("span",{className:"rounded bg-red-800 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-red-100",children:s("evolution.list.applyFailed")}),"auto"===r.applyApprovedBy&&(0,l.jsx)("span",{className:"rounded bg-sky-800 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-sky-100",children:s("evolution.list.auto")}),(0,l.jsx)("span",{className:"text-xs",children:r.triggerKind}),r.hasObservation&&(0,l.jsx)("span",{title:s("evolution.list.observation"),className:"ml-auto text-amber-400",children:(0,l.jsx)(c3.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("div",{className:"truncate text-xs text-[var(--muted-foreground)]",children:null!=(t=r.userHint)?t:(0,l.jsx)("span",{className:"italic",children:s("evolution.list.noHint")})}),(0,l.jsxs)("div",{className:"flex items-center gap-2 text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{children:(0,E.fw)(r.createdAt,s)}),(0,l.jsx)("span",{children:"•"}),(0,l.jsx)("span",{title:r.workspacePath,className:"truncate",children:r.workspacePath.split("/").pop()}),r.attempts>1&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("span",{children:"•"}),(0,l.jsx)("span",{children:s("evolution.list.attempts",{n:r.attempts})})]})]})]})}var c6=r(30478),c9=r.n(c6),c7=r(90144);let de=(0,b.v)(e=>({selectedId:null,formMode:null,setSelectedId:t=>e({selectedId:t,formMode:null}),openCreate:()=>e({formMode:"create"}),openEdit:()=>e({formMode:"edit"}),closeForm:()=>e({formMode:null})}));function dt(e,t){return e?e.includes("ret=-2")?t("cron.err.wechat.noInbound"):e:"?"}function dr(){let e=(0,T.kj)(),t=de(e=>e.selectedId),r=de(e=>e.setSelectedId),n=de(e=>e.formMode),a=de(e=>e.closeForm),[s,i]=(0,o.useState)(null),c=(0,o.useCallback)(async()=>{if(!t)return void i(null);try{var e;let{jobs:r}=await u.FH.cron.listJobs();i(null!=(e=r.find(e=>e.id===t))?e:null)}catch(e){console.error("cron.listJobs",e)}},[t]);(0,o.useEffect)(()=>{c()},[c]),(0,o.useEffect)(()=>p.on("cron:job_changed",()=>{c()}),[c]);let d=(0,o.useCallback)(async n=>{if(await (0,E.fN)(e("cron.confirmDelete")))try{await u.FH.cron.deleteJob(n),t===n&&r(null)}catch(e){alert(e instanceof Error?e.message:String(e))}},[t,r,e]),m=(0,o.useCallback)(async e=>{try{await u.FH.cron.runNow(e)}catch(e){alert(e instanceof Error?e.message:String(e))}},[]);return"create"===n?(0,l.jsx)(ds,{onClose:a,onSaved:a}):"edit"===n&&s?(0,l.jsx)(ds,{initial:s,onClose:a,onSaved:a}):s?(0,l.jsx)(dn,{job:s,onEdit:()=>{c().then(()=>de.getState().openEdit())},onDelete:()=>d(s.id),onRunNow:()=>m(s.id)},s.id):(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:e("cron.pickJob")})}function dn(e){var t,r;let{job:n,onEdit:a,onDelete:s,onRunNow:i}=e,c=(0,T.kj)(),[d,m]=(0,o.useState)([]),[h,f]=(0,o.useState)(null),[x,g]=(0,o.useState)(null),[v,b]=(0,o.useState)(!1),[y,w]=(0,o.useState)(null),[j,k]=(0,o.useState)(!1),N=(0,o.useCallback)(async()=>{try{let e=await u.FH.cron.listRuns(n.id,{limit:20});m(e.runs),w(e.hasMore?e.nextCursor:null)}catch(e){console.error("listRuns",e)}},[n.id]),S=(0,o.useCallback)(async()=>{if(y&&!j){k(!0);try{let e=await u.FH.cron.listRuns(n.id,{limit:20,before:y});m(t=>[...t,...e.runs]),w(e.hasMore?e.nextCursor:null)}catch(e){console.error("listRuns more",e)}finally{k(!1)}}},[n.id,y,j]);(0,o.useEffect)(()=>{N()},[N]);let C=a_(S,d.length);(0,o.useEffect)(()=>p.on("cron:run_changed",e=>{e.jobId===n.id&&N()}),[n.id,N]);let A=rU(e=>e.activeProject),I=(0,o.useCallback)(e=>{aa(e),window.dispatchEvent(new CustomEvent("halo:navigate",{detail:{tab:"explorer"}}))},[]),_=(0,o.useCallback)(async e=>{f(e),g(null),b(!0);try{let{log:t}=await u.FH.cron.getRunLog(e);g(null!=t?t:"(log file not available — retention or never written)")}catch(e){g("error: ".concat(e instanceof Error?e.message:String(e)))}finally{b(!1)}},[]);return(0,l.jsxs)("div",{className:"flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,l.jsxs)("div",{className:"flex flex-1 items-center gap-2 text-sm font-medium text-[var(--foreground)]",children:[(0,l.jsx)(c7.A,{className:"h-4 w-4"}),(0,l.jsx)("span",{children:n.label||n.id}),0===n.enabled&&(0,l.jsx)("span",{className:"rounded bg-[var(--accent)] px-1.5 py-0.5 text-[10px] uppercase",children:c("cron.disabled")})]}),(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[(0,l.jsxs)("button",{onClick:i,className:"flex items-center gap-1 rounded bg-emerald-600 px-2 py-1 text-xs text-white hover:opacity-90",title:c("cron.runNow"),children:[(0,l.jsx)(o4.A,{className:"h-3 w-3"})," ",c("cron.runNow")]}),(0,l.jsxs)("button",{onClick:a,className:"flex items-center gap-1 rounded bg-[var(--accent)] px-2 py-1 text-xs text-[var(--foreground)] hover:opacity-90",title:c("cron.edit"),children:[(0,l.jsx)(cr.A,{className:"h-3 w-3"})," ",c("cron.edit")]}),(0,l.jsx)("button",{onClick:s,className:"flex items-center gap-1 rounded bg-red-700/80 px-2 py-1 text-xs text-white hover:opacity-90",title:c("cron.delete"),children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]})]}),(0,l.jsxs)("div",{className:"mt-3 grid grid-cols-2 gap-2 text-xs text-[var(--muted-foreground)]",children:[n.webhookPath?(0,l.jsxs)("div",{className:"col-span-2 truncate",children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.webhook")})," ",(0,l.jsx)("span",{className:"font-mono",children:location.origin+n.webhookPath})]}):n.runAt?(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.runAt")})," ",(0,l.jsxs)("span",{className:"font-mono",children:[new Date(n.runAt).toLocaleString(),n.timezone?" (".concat(n.timezone,")"):""]})]}):(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.schedule")})," ",(0,l.jsxs)("span",{className:"font-mono",children:[n.schedule,n.timezone?" (".concat(n.timezone,")"):""]})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.agent")})," ",n.agentId]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.timeoutSec")})," ",null!=n.timeoutSec?"".concat(n.timeoutSec,"s"):c("cron.field.timeoutSecDefault")]}),null!=n.activeFrom&&(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.activeFrom")})," ",(0,l.jsx)("span",{className:"font-mono",children:new Date(n.activeFrom).toLocaleString()})]}),null!=n.activeUntil&&(0,l.jsxs)("div",{children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.activeUntil")})," ",(0,l.jsx)("span",{className:"font-mono",children:new Date(n.activeUntil).toLocaleString()})]}),(0,l.jsxs)("div",{className:"col-span-2 truncate",children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.workspace")})," ",n.workspacePath]}),(0,l.jsxs)("div",{className:"col-span-2 truncate",children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.folder")})," ",(0,l.jsx)("span",{className:"font-mono",children:null!=(t=n.workingDir)?t:c("cron.field.folderRoot")})]}),(0,l.jsxs)("div",{className:"col-span-2 truncate",children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.session")})," ",(0,l.jsx)("span",{className:"font-mono",children:n.stateless?c("cron.field.sessionStateless"):null!=(r=n.sessionId)?r:c("cron.field.sessionDefault",{id:n.effectiveSessionId})})]}),(0,l.jsxs)("div",{className:"col-span-2",children:[(0,l.jsx)("span",{className:"text-[var(--foreground)]",children:c("cron.field.targets")})," ",0===n.targets.length?c("cron.field.targetsLogOnly"):n.targets.map(e=>"".concat(e.channelType,":").concat(e.accountId).concat(e.chatId?"/"+e.chatId:"")).join(", ")]})]}),(0,l.jsxs)("div",{className:"mt-2",children:[(0,l.jsx)("div",{className:"text-xs font-medium text-[var(--foreground)]",children:c("cron.field.prompt")}),(0,l.jsx)("pre",{className:"mt-1 whitespace-pre-wrap rounded bg-[var(--accent)] p-2 text-xs",children:n.userPrompt||c("cron.field.promptEmpty")})]})]}),(0,l.jsxs)("div",{className:"flex-1 overflow-y-auto px-4 py-3",children:[(0,l.jsx)("div",{className:"mb-2 text-xs font-medium text-[var(--foreground)]",children:c("cron.runHistory")}),0===d.length?(0,l.jsx)("div",{className:"text-xs italic text-[var(--muted-foreground)]",children:c("cron.noRuns")}):(0,l.jsx)(l.Fragment,{children:(0,l.jsxs)("ul",{className:"divide-y divide-[var(--border)] text-xs",children:[d.map(e=>{var t;return(0,l.jsxs)("li",{className:"py-2",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:(0,E.cn)("rounded px-1.5 py-0.5 text-[10px] uppercase","succeeded"===e.status?"bg-emerald-700 text-emerald-50":"running"===e.status?"bg-amber-700 text-amber-50":"skipped"===e.status?"bg-[var(--accent)] text-[var(--foreground)]":"bg-red-700 text-red-50"),children:e.status}),(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:new Date(e.startedAt).toLocaleString()}),(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:"\xb7"}),(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:e.triggerKind}),e.eventCount>0&&(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:c("cron.run.events",{n:e.eventCount})}),e.sessionId&&(0,l.jsx)("span",{className:"truncate font-mono text-[10px] text-[var(--muted-foreground)]",title:c("cron.run.session"),children:e.sessionId})]}),e.logPath?(0,l.jsx)("button",{onClick:()=>{_(e.id)},className:"rounded bg-[var(--accent)] px-2 py-0.5 text-[10px] hover:opacity-90",children:"Log"}):e.sessionId&&(null!=(t=e.workspacePath)?t:n.workspacePath)===(null==A?void 0:A.path)&&(0,l.jsxs)("button",{onClick:()=>I(e.sessionId),className:"flex shrink-0 items-center gap-1 rounded bg-[var(--accent)] px-2 py-0.5 text-[10px] hover:opacity-90",children:[(0,l.jsx)(aF.A,{className:"h-3 w-3"})," ",c("cron.run.openSession")]})]}),e.failureReason&&(0,l.jsx)("div",{className:"mt-1 text-red-400",children:dt(e.failureReason,c)}),e.dispatchResults&&e.dispatchResults.length>0&&(0,l.jsxs)("div",{className:"mt-1 text-[var(--muted-foreground)]",children:[c("cron.dispatch")," ",e.dispatchResults.map(e=>{let t=e.chatId?"".concat(e.channelType,":").concat(e.accountId,"/").concat(e.chatId):"".concat(e.channelType,":").concat(e.accountId);return"".concat(t," ").concat(e.ok?"✓":"✗ (".concat(dt(e.error,c),")"))}).join(" \xb7 ")]}),e.output&&(0,l.jsx)("pre",{className:"mt-1 line-clamp-3 whitespace-pre-wrap rounded bg-[var(--accent)] p-2 text-[11px]",children:e.output})]},e.id)}),y&&(0,l.jsx)("li",{ref:C,className:"py-3 text-center text-[10px] text-[var(--muted-foreground)]",children:j?c("cron.loading"):c("cron.loadOlder")})]})})]}),h&&(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4",onClick:()=>f(null),children:(0,l.jsxs)("div",{className:"flex h-[80vh] w-[800px] max-w-full flex-col overflow-hidden rounded border border-[var(--border)] bg-[var(--background)]",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-3 py-2 text-xs",children:[(0,l.jsx)("span",{children:c("cron.log.title",{id:h})}),(0,l.jsx)("button",{onClick:()=>f(null),className:"rounded px-2 py-0.5 text-[var(--muted-foreground)] hover:bg-[var(--accent)]",children:c("cron.log.close")})]}),(0,l.jsx)("pre",{className:"flex-1 overflow-auto whitespace-pre-wrap p-3 font-mono text-[11px] leading-relaxed",children:v?c("cron.loading"):null!=x?x:""})]})})]})}function da(e){let t=e=>e.toString().padStart(2,"0");return"".concat(e.getFullYear(),"-").concat(t(e.getMonth()+1),"-").concat(t(e.getDate()),"T").concat(t(e.getHours()),":").concat(t(e.getMinutes()))}function ds(e){var t,r,n,a,s,i,c,d,m,p,h,f,x,g;let{initial:v,onClose:b,onSaved:y}=e,w=(0,T.kj)(),j=rU(e=>e.activeProject),[k,N]=(0,o.useState)(null!=(r=null==v?void 0:v.label)?r:""),[S,C]=(0,o.useState)(null!=(a=null!=(n=null==v?void 0:v.workspacePath)?n:null==j?void 0:j.path)?a:""),[A,I]=(0,o.useState)(S),[_,P]=(0,o.useState)(null!=(s=null==v?void 0:v.agentId)?s:"default"),[M,F]=(0,o.useState)([]),[D,L]=(0,o.useState)(null!=(i=null==v?void 0:v.sessionId)?i:""),[R,H]=(0,o.useState)([]),[z,O]=(0,o.useState)(null!=(c=null==v?void 0:v.workingDir)?c:""),[U,B]=(0,o.useState)(null!=(d=null==v?void 0:v.stateless)&&d),W=v?null!=(m=v.sessionId)?m:"":null,K=U?null:D!==W||(null==v?void 0:v.stateless)||A!==(null==v?void 0:v.workspacePath)?D&&null!=(h=null==(t=R.find(e=>e.id===D))?void 0:t.agentId)?h:null:null!=(p=null==v?void 0:v.sessionAgentId)?p:null,G=D||(null==v?void 0:v.effectiveSessionId)||"",q=null!==K&&K!==_,[$,Y]=(0,o.useState)((null==v?void 0:v.webhookSecret)?"webhook":(null==v?void 0:v.runAt)?"oneShot":"recurring"),[J,Z]=(0,o.useState)(null!=(f=null==v?void 0:v.webhookSecret)?f:null),[V,X]=(0,o.useState)(!1),[Q,ee]=(0,o.useState)((null==v?void 0:v.schedule)||"0 9 * * *"),[et,er]=(0,o.useState)(()=>(null==v?void 0:v.runAt)?da(new Date(v.runAt)):da(new Date(Date.now()+36e5))),[en,ea]=(0,o.useState)(()=>(function(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}catch(e){return"UTC"}})());(0,o.useEffect)(()=>{let e=!0;return u.FH.cron.meta().then(t=>{let{hostTimezone:r}=t;e&&r&&ea(r)}).catch(e=>console.error("cron.meta",e)),()=>{e=!1}},[]);let es=(0,o.useMemo)(()=>{let e=function(){let e=Intl;if("function"==typeof e.supportedValuesOf)try{return e.supportedValuesOf("timeZone")}catch(e){}return["UTC","Asia/Shanghai","Asia/Tokyo","Asia/Singapore","Europe/London","Europe/Paris","America/New_York","America/Los_Angeles"]}(),t=e.includes(en)?en:e[0];return[{id:t,label:"".concat(t," (default)")},...e.filter(e=>e!==t).map(e=>({id:e,label:e}))]},[en]),[el,eo]=(0,o.useState)(null!=(x=null==v?void 0:v.timezone)?x:""),[ei,ec]=(0,o.useState)((null==v?void 0:v.timeoutSec)!=null?String(v.timeoutSec):""),[ed,eu]=(0,o.useState)(null),[em,ep]=(0,o.useState)(null),[eh,ef]=(0,o.useState)(null!=(g=null==v?void 0:v.userPrompt)?g:""),[ex,eg]=(0,o.useState)((null==v?void 0:v.enabled)!==0),[ev,eb]=(0,o.useState)([]),[ey,ew]=(0,o.useState)(()=>{var e;let t=new Set;for(let r of null!=(e=null==v?void 0:v.targets)?e:[])t.add("".concat(r.channelType,":").concat(r.accountId));return t}),[ej,ek]=(0,o.useState)(()=>{var e;let t={};for(let r of null!=(e=null==v?void 0:v.targets)?e:[]){let e="".concat(r.channelType,":").concat(r.accountId);r.chatId&&(t[e]=t[e]?"".concat(t[e],", ").concat(r.chatId):r.chatId)}return t}),[eN,eS]=(0,o.useState)(!1),[eC,eA]=(0,o.useState)(null);(0,o.useEffect)(()=>{let e=!0,t=async()=>{try{let{agents:t}=await u.FH.agentConfigs.list(A||void 0);if(!e)return;let r=t.filter(e=>!e.internal&&!e.overridden&&!e.disabled).map(e=>({id:e.id,name:e.name||e.id}));F(r),r.length>0&&P(e=>r.some(t=>t.id===e)?e:r[0].id)}catch(e){console.error("agentConfigs.list",e)}};return A&&t(),()=>{e=!1}},[A]),(0,o.useEffect)(()=>{let e=!0;if(A)return u.FH.sessionLogs.list(A,{rootOnly:!0,limit:50}).then(t=>{let{sessions:r}=t;e&&H(r.map(e=>{var t;return{id:e.id,label:"".concat(e.title||e.id," \xb7 ").concat(e.agentName||e.agentId),agentId:e.agentId,workingDir:null!=(t=e.workingDir)?t:null}}))}).catch(t=>{e&&H([]),console.error("sessionLogs.list",t)}),()=>{e=!1}},[A]),(0,o.useEffect)(()=>{let e=!0;return u.FH.cron.listChannelTargets().then(t=>{let{targets:r}=t;e&&eb(r)}).catch(e=>console.error("listChannelTargets",e)),()=>{e=!1}},[]);let eI=(0,o.useCallback)(e=>{ew(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),eE=(0,o.useCallback)((e,t)=>{let r=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/.exec(e);if(!r)return Date.parse(e);let[,n,a,s,l,o]=r,i=Date.UTC(+n,a-1,+s,+l,+o),c=Object.fromEntries(new Intl.DateTimeFormat("en-US",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1}).formatToParts(new Date(i)).filter(e=>"literal"!==e.type).map(e=>[e.type,e.value]));return i-(Date.UTC(+c.year,c.month-1,+c.day,24==+c.hour?0:+c.hour,+c.minute,+c.second)-i)},[]),eT=(0,o.useCallback)(async()=>{if(v&&await (0,E.fN)(w("cron.form.webhook.rotateConfirm"))){X(!0);try{Z((await u.FH.cron.rotateWebhookSecret(v.id)).webhookSecret)}catch(e){eA(e instanceof Error?e.message:String(e))}finally{X(!1)}}},[v,w]),e_=(0,o.useCallback)(async()=>{if(eA(null),!S.trim())return void eA(w("cron.form.err.workspace"));if(!_.trim())return void eA(w("cron.form.err.agent"));if("recurring"===$&&!Q.trim())return void eA(w("cron.form.err.schedule"));if("oneShot"===$&&!et)return void eA(w("cron.form.err.runAt"));if("webhook"!==$&&!eh.trim())return void eA(w("cron.form.err.prompt"));let e=el||en,t="oneShot"===$?eE(et,e):void 0;if("oneShot"===$&&void 0!==t&&t<=Date.now())return void eA(w("cron.form.err.runAtPast"));let r=ei.trim(),n=r?Number(r):void 0;if(void 0!==n&&(!Number.isInteger(n)||n<60||n>21600))return void eA(w("cron.form.err.timeoutSec"));let a=(t,r)=>null===t?null!=r?r:null:t?eE(t,e):null,s="recurring"===$?a(ed,null==v?void 0:v.activeFrom):null,l="recurring"===$?a(em,null==v?void 0:v.activeUntil):null;if(em&&null!==l&&l<=Date.now())return void eA(w("cron.form.err.activeUntilPast"));if(null!==s&&null!==l&&l<=s)return void eA(w("cron.form.err.activeOrder"));let o=[];for(let e of ey){var i;let[t,r]=e.split(":"),n=(null!=(i=ej[e])?i:"").trim(),a=n?n.split(",").map(e=>e.trim()).filter(Boolean):[],s=e=>"slack"!==t||/^[DCG][A-Z0-9]+(:[\d.]+)?$/.test(e)?"feishu"!==t||/^oc_[a-zA-Z0-9]+(:[a-zA-Z0-9_-]+)?$/.test(e)?"wecom"!==t||/^[\w@.-]+$/.test(e)?"telegram"!==t||/^-?\d+$/.test(e)?null:w("cron.form.err.chatId.telegram",{chatId:e}):w("cron.form.err.chatId.wecom",{chatId:e}):w("cron.form.err.chatId.feishu",{chatId:e}):w("cron.form.err.chatId.slack",{chatId:e});for(let e of a){let t=s(e);if(t)return void eA(t)}if(0===a.length)o.push({channelType:t,accountId:r});else for(let e of a)o.push({channelType:t,accountId:r,chatId:e})}eS(!0);try{let e={label:k||void 0,workspacePath:S,agentId:_,userPrompt:eh,timezone:"webhook"===$?void 0:el||void 0,targets:o,enabled:ex};v?await u.FH.cron.updateJob(v.id,{...e,schedule:"recurring"===$?Q:"",runAt:"oneShot"===$?t:null,webhook:"webhook"===$,timeoutSec:null!=n?n:null,sessionId:U?null:D||null,workingDir:z.trim()||null,stateless:U,..."recurring"!==$||null!==ed?{activeFrom:s}:{},..."recurring"!==$||null!==em?{activeUntil:l}:{}}):await u.FH.cron.createJob({...e,schedule:"recurring"===$?Q:"",runAt:"oneShot"===$?t:void 0,webhook:"webhook"===$||void 0,timeoutSec:n,sessionId:U?void 0:D||void 0,workingDir:z.trim()||void 0,stateless:U,activeFrom:null!=s?s:void 0,activeUntil:null!=l?l:void 0}),y()}catch(e){eA(e instanceof Error?e.message:String(e))}finally{eS(!1)}},[v,k,S,_,D,z,U,eh,$,Q,et,el,en,eE,ei,ed,em,ey,ej,ex,y,w]);return(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex h-full flex-col",children:[(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex items-center justify-between border-b border-[var(--border)] px-4 py-3",children:[(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 text-sm font-medium",children:v?w("cron.form.edit"):w("cron.form.create")}),(0,l.jsx)("button",{onClick:b,className:"jsx-8283b0ed0bcf6928 rounded px-2 py-1 text-xs text-[var(--muted-foreground)] hover:bg-[var(--accent)]",children:w("cron.form.cancel")})]}),(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex-1 space-y-3 overflow-y-auto p-4 text-xs",children:[(0,l.jsx)(dl,{label:w("cron.form.label"),children:(0,l.jsx)("input",{value:k,onChange:e=>N(e.target.value),placeholder:w("cron.form.label.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base"})}),(0,l.jsx)(dl,{label:w("cron.form.workspace"),children:(0,l.jsx)("input",{value:S,onChange:e=>C(e.target.value),onBlur:()=>I(S),onKeyDown:e=>{"Enter"===e.key&&I(S)},placeholder:w("cron.form.workspace.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base font-mono"})}),(0,l.jsxs)(dl,{label:w("cron.form.agent"),children:[(0,l.jsxs)("select",{value:_,onChange:e=>P(e.target.value),disabled:null!==K&&!q,className:"jsx-8283b0ed0bcf6928 input-base disabled:opacity-60",children:[0===M.length&&(0,l.jsx)("option",{value:"default",className:"jsx-8283b0ed0bcf6928",children:"default"}),K&&!M.some(e=>e.id===K)&&(0,l.jsx)("option",{value:K,className:"jsx-8283b0ed0bcf6928",children:K}),M.map(e=>(0,l.jsxs)("option",{value:e.id,className:"jsx-8283b0ed0bcf6928",children:[e.name," (",e.id,")"]},e.id))]}),q?(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-amber-600",children:w("cron.form.agent.mismatch",{id:G,agent:K})}):K&&(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.agent.locked",{id:G,agent:K})})]}),(0,l.jsxs)(dl,{label:w("cron.form.stateless"),children:[(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex cursor-pointer items-center gap-1",children:[(0,l.jsx)("input",{type:"checkbox",checked:U,onChange:e=>B(e.target.checked),className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:w("cron.form.stateless.label")})]}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.stateless.hint")})]}),(0,l.jsxs)(dl,{label:w("cron.form.session"),children:[(0,l.jsx)(o8,{value:U?"":D,disabled:U,placeholder:U?w("cron.form.session.stateless"):w("cron.form.session.placeholder"),presets:A?R:[],onCommit:e=>{let t=e.trim();L(t);let r=R.find(e=>e.id===t);if(r){var n;P(r.agentId),O(null!=(n=r.workingDir)?n:"")}},minWidth:280}),!U&&(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.session.hint")})]}),(0,l.jsxs)(dl,{label:w("cron.form.folder"),children:[(0,l.jsx)("input",{value:z,onChange:e=>O(e.target.value),placeholder:w("cron.form.folder.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base font-mono"}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.folder.hint")})]}),(0,l.jsx)(dl,{label:w("cron.form.mode"),children:(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex gap-3",children:[(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex cursor-pointer items-center gap-1",children:[(0,l.jsx)("input",{type:"radio",name:"cron-mode",value:"recurring",checked:"recurring"===$,onChange:()=>Y("recurring"),className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:w("cron.form.mode.recurring")})]}),(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex cursor-pointer items-center gap-1",children:[(0,l.jsx)("input",{type:"radio",name:"cron-mode",value:"oneShot",checked:"oneShot"===$,onChange:()=>Y("oneShot"),className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:w("cron.form.mode.oneShot")})]}),(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex cursor-pointer items-center gap-1",children:[(0,l.jsx)("input",{type:"radio",name:"cron-mode",value:"webhook",checked:"webhook"===$,onChange:()=>Y("webhook"),className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:w("cron.form.mode.webhook")})]})]})}),"webhook"===$?(0,l.jsxs)(dl,{label:w("cron.form.webhook"),children:[(null==v?void 0:v.webhookPath)&&J?(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 space-y-1",children:[[["cron.form.webhook.url",location.origin+v.webhookPath],["cron.form.webhook.secret",J]].map(e=>{let[t,r]=e;return(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex items-center gap-2",children:[(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928 w-14 shrink-0 text-[var(--muted-foreground)]",children:w(t)}),(0,l.jsx)("code",{className:"jsx-8283b0ed0bcf6928 flex-1 break-all rounded bg-[var(--accent)] px-2 py-1 font-mono",children:r}),(0,l.jsx)("button",{type:"button",onClick:()=>{navigator.clipboard.writeText(r)},title:w("cron.form.webhook.copy"),className:"jsx-8283b0ed0bcf6928 rounded p-1 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:(0,l.jsx)(ss.A,{className:"h-3.5 w-3.5"})})]},t)}),(0,l.jsxs)("button",{type:"button",onClick:()=>{eT()},disabled:V,className:"jsx-8283b0ed0bcf6928 flex items-center gap-1 rounded bg-[var(--accent)] px-2 py-1 hover:opacity-90 disabled:opacity-50",children:[(0,l.jsx)(aD.A,{className:"h-3 w-3"})," ",w("cron.form.webhook.rotate")]})]}):(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 text-[var(--muted-foreground)]",children:w("cron.form.webhook.onSave")}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.webhook.hint")})]}):"recurring"===$?(0,l.jsxs)(dl,{label:w("cron.form.schedule"),children:[(0,l.jsx)("input",{value:Q,onChange:e=>ee(e.target.value),placeholder:w("cron.form.schedule.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base font-mono"}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.schedule.hint")})]}):(0,l.jsxs)(dl,{label:w("cron.form.runAt"),children:[(0,l.jsx)("input",{type:"datetime-local",value:et,onChange:e=>er(e.target.value),className:"jsx-8283b0ed0bcf6928 input-base font-mono"}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.runAt.hint")})]}),"webhook"!==$&&(0,l.jsx)(dl,{label:w("cron.form.timezone"),children:(0,l.jsx)(o8,{value:el||en,placeholder:w("cron.form.timezone.hostDefault",{tz:en}),presets:es,onCommit:e=>{eo(e===en?"":e)},minWidth:280})}),"recurring"===$&&(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928",children:[(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 grid grid-cols-2 gap-2",children:[["cron.form.activeFrom",ed,null==v?void 0:v.activeFrom,eu],["cron.form.activeUntil",em,null==v?void 0:v.activeUntil,ep]].map(e=>{let[t,r,n,a]=e,s=null!=r?r:null!=n?function(e,t){let r=Object.fromEntries(new Intl.DateTimeFormat("en-US",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).formatToParts(new Date(e)).filter(e=>"literal"!==e.type).map(e=>[e.type,e.value]));return"".concat(r.year,"-").concat(r.month,"-").concat(r.day,"T").concat("24"===r.hour?"00":r.hour,":").concat(r.minute)}(n,el||en):"";return(0,l.jsx)(dl,{label:w(t),children:(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex items-center gap-1",children:[(0,l.jsx)("input",{type:"datetime-local",value:s,onChange:e=>a(e.target.value),className:"jsx-8283b0ed0bcf6928 input-base font-mono"}),s&&(0,l.jsx)("button",{type:"button",onClick:()=>a(""),className:"jsx-8283b0ed0bcf6928 shrink-0 rounded px-2 py-1 text-[var(--muted-foreground)] hover:bg-[var(--accent)]",children:w("cron.form.activeClear")})]})},t)})}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.active.hint")})]}),(0,l.jsxs)(dl,{label:w("cron.form.timeoutSec"),children:[(0,l.jsx)("input",{type:"number",min:60,max:21600,step:1,value:ei,onChange:e=>ec(e.target.value),placeholder:w("cron.form.timeoutSec.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base font-mono"}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.timeoutSec.hint")})]}),(0,l.jsxs)(dl,{label:w("webhook"===$?"cron.form.userPrompt.optional":"cron.form.userPrompt"),children:[(0,l.jsx)("textarea",{value:eh,onChange:e=>ef(e.target.value),rows:5,placeholder:w("cron.form.userPrompt.placeholder"),className:"jsx-8283b0ed0bcf6928 input-base"}),"webhook"===$&&(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.userPrompt.webhookHint")})]}),(0,l.jsx)(dl,{label:w("cron.form.targets"),children:(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 space-y-1 rounded border border-[var(--border)] p-2",children:[0===ev.length?(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 text-[var(--muted-foreground)]",children:w("cron.form.targets.empty")}):ev.map(e=>{var t;let r="".concat(e.channelType,":").concat(e.accountId),n=ey.has(r),a="wechat"!==e.channelType,s="slack"===e.channelType?"D… (DM) / C… (channel) / C…:1700.0 (thread)":"telegram"===e.channelType?w("cron.form.chatIdHint.telegram"):"feishu"===e.channelType?w("cron.form.chatIdHint.feishu"):"wecom"===e.channelType?w("cron.form.chatIdHint.wecom"):"";return(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 "+((0,E.cn)("rounded px-1 py-0.5",n&&"bg-[var(--accent)]")||""),children:[(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex cursor-pointer items-center gap-2",children:[(0,l.jsx)("input",{type:"checkbox",checked:n,onChange:()=>eI(r),disabled:!e.enabled,className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928 font-medium",children:e.channelType}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:e.label}),!e.enabled&&(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.targets.disabled")}),!e.hasActiveChat&&(0,l.jsx)("span",{title:w("cron.form.targets.noActiveChat"),className:"jsx-8283b0ed0bcf6928 text-[10px] text-amber-400",children:w("cron.form.targets.noActiveChatLabel")})]}),n&&a&&(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 ml-6",children:[(0,l.jsx)(di,{channelType:e.channelType,accountId:e.accountId,value:null!=(t=ej[r])?t:"",onChange:e=>ek(t=>({...t,[r]:e})),placeholder:s}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-0.5 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.chatIdHelp")})]})]},r)}),(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 mt-1 text-[10px] text-[var(--muted-foreground)]",children:w("cron.form.targets.hint")})]})}),(0,l.jsxs)("label",{className:"jsx-8283b0ed0bcf6928 flex items-center gap-2",children:[(0,l.jsx)("input",{type:"checkbox",checked:ex,onChange:e=>eg(e.target.checked),className:"jsx-8283b0ed0bcf6928"}),(0,l.jsx)("span",{className:"jsx-8283b0ed0bcf6928",children:w("cron.form.enabled")})]}),eC&&(0,l.jsx)("div",{className:"jsx-8283b0ed0bcf6928 rounded border border-red-500/50 bg-red-950/40 p-2 text-red-300",children:eC})]}),(0,l.jsxs)("div",{className:"jsx-8283b0ed0bcf6928 flex justify-end gap-2 border-t border-[var(--border)] px-4 py-3",children:[(0,l.jsx)("button",{onClick:b,className:"jsx-8283b0ed0bcf6928 rounded bg-[var(--accent)] px-3 py-1 text-xs",children:w("cron.form.cancel")}),(0,l.jsx)("button",{onClick:()=>{e_()},disabled:eN,className:"jsx-8283b0ed0bcf6928 rounded bg-[var(--primary)] px-3 py-1 text-xs text-[var(--primary-foreground)] disabled:opacity-50",children:eN?w("cron.form.saving"):v?w("cron.form.save"):w("cron.form.create.btn")})]}),(0,l.jsx)(c9(),{id:"8283b0ed0bcf6928",children:".input-base{width:100%;background:var(--background);color:var(--foreground);border:1px solid var(--border);border-radius:.25rem;padding:.375rem .5rem;font-size:.75rem}"})]})}function dl(e){let{label:t,children:r}=e;return(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"mb-1 block text-[var(--foreground)]",children:t}),r]})}function di(e){let{channelType:t,accountId:r,value:n,onChange:a,placeholder:s}=e,i=(0,T.kj)(),[c,d]=(0,o.useState)(""),[m,p]=(0,o.useState)([]),[h,f]=(0,o.useState)(!1),[x,g]=(0,o.useState)(!1),v="slack"===t||"feishu"===t;return(0,o.useEffect)(()=>{if(!v||!c.trim())return void p([]);let e=!1;g(!0);let n=setTimeout(async()=>{try{let n="slack"===t?await u.FH.slack.searchTargets(r,c):await u.FH.feishu.searchTargets(r,c);if(e)return;let a=n.hits.map(e=>{var t,r;let n=null!=(r=null!=(t=e.realName)?t:e.email)?r:"";return{id:e.id,name:e.name,chatId:e.chatId,kind:e.kind,subtitle:n}});p(a)}catch(t){e||p([]),console.error("[cron-form] target search failed:",t)}finally{e||g(!1)}},300);return()=>{e=!0,clearTimeout(n)}},[c,t,r,v]),(0,l.jsxs)("div",{className:"relative",children:[(0,l.jsx)("input",{value:n,onChange:e=>(function(e){var t,r;if(a(e),!v)return;let n=null!=(r=null==(t=e.split(",").pop())?void 0:t.trim())?r:"";d(n),f(n.length>0)})(e.target.value),onFocus:()=>{c&&f(!0)},onBlur:()=>setTimeout(()=>f(!1),150),placeholder:s,className:"input-base font-mono text-[11px]"}),v&&h&&(x||m.length>0)&&(0,l.jsxs)("div",{className:"absolute z-10 mt-1 max-h-60 w-full overflow-y-auto rounded border border-[var(--border)] bg-[var(--background)] shadow-lg",children:[x&&(0,l.jsx)("div",{className:"px-2 py-1 text-[10px] text-[var(--muted-foreground)]",children:i("cron.form.searching")}),!x&&m.map(e=>(0,l.jsxs)("button",{type:"button",onMouseDown:e=>e.preventDefault(),onClick:()=>(function(e){let t=n.split(",").map(e=>e.trim()).filter(Boolean);t.length>0?t[t.length-1]=e:t.push(e),a(t.join(", ")),d(""),p([]),f(!1)})(e.chatId),className:"flex w-full items-center gap-2 px-2 py-1 text-left text-[11px] hover:bg-[var(--accent)]",children:[(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:function(e){switch(e){case"user":return"@";case"channel":case"chat":return"#";case"group":return"\uD83D\uDD12";case"mpim":return"\uD83D\uDC65";case"im":case"p2p":return"\uD83D\uDCAC";default:return"\xb7"}}(e.kind)}),(0,l.jsxs)("span",{className:"flex-1 truncate",children:[e.name,e.subtitle&&(0,l.jsx)("span",{className:"ml-1 text-[10px] text-[var(--muted-foreground)]",children:e.subtitle})]}),(0,l.jsx)("span",{className:"font-mono text-[10px] text-[var(--muted-foreground)]",children:e.chatId})]},e.kind+":"+e.id))]})]})}function dc(){let e=(0,T.kj)(),[t,r]=(0,o.useState)([]),[n,a]=(0,o.useState)(!0),[s,i]=(0,o.useState)(null),[c,d]=(0,o.useState)(!1),[m,h]=(0,o.useState)(null),[f,x]=(0,o.useState)(!1),[g,v]=(0,o.useState)(0),b=de(e=>e.selectedId),y=de(e=>e.setSelectedId),w=de(e=>e.openCreate),j=(0,o.useCallback)(async()=>{try{let e=await u.FH.cron.listJobs({limit:20});r(e.jobs),v(Date.now()),h(e.hasMore?e.nextCursor:null),i(null)}catch(e){i(e instanceof Error?e.message:String(e))}finally{a(!1)}},[]),k=a_((0,o.useCallback)(async()=>{if(m&&!f){x(!0);try{let e=await u.FH.cron.listJobs({limit:20,before:m});r(t=>[...t,...e.jobs]),h(e.hasMore?e.nextCursor:null)}catch(e){console.error("cron.listJobs more",e)}finally{x(!1)}}},[m,f]),t.length),N=(0,o.useCallback)(async()=>{d(!0);let e=new Promise(e=>setTimeout(e,400));await Promise.all([j(),e]),d(!1)},[j]);return(0,o.useEffect)(()=>{j()},[j]),(0,o.useEffect)(()=>{let e=p.on("cron:job_changed",()=>{j()}),t=p.on("cron:run_changed",()=>{j()});return()=>{e(),t()}},[j]),(0,o.useEffect)(()=>{!b&&t[0]&&y(t[0].id)},[t,b,y]),(0,l.jsxs)("div",{className:"flex h-full flex-col border-r border-[var(--border)] bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-[var(--border)] px-3 py-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-[var(--foreground)]",children:[(0,l.jsx)(c7.A,{className:"h-4 w-4"}),e("cron.title")]}),(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[(0,l.jsxs)("button",{onClick:w,className:"flex items-center gap-1 rounded bg-[var(--primary)] px-2 py-1 text-xs text-[var(--primary-foreground)] hover:opacity-90",title:e("cron.new"),children:[(0,l.jsx)(lC.A,{className:"h-3 w-3"})," ",e("cron.new")]}),(0,l.jsx)("button",{onClick:()=>{N()},disabled:c,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--accent)] hover:text-[var(--foreground)] disabled:cursor-default",title:e("cron.refresh"),children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",c&&"animate-spin")})})]})]}),(0,l.jsx)("div",{className:"flex-1 overflow-y-auto",children:n&&0===t.length?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:e("cron.loading")}):s?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-red-400",children:e("cron.error",{error:s})}):0===t.length?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:e("cron.empty")}):(0,l.jsxs)("ul",{className:"divide-y divide-[var(--border)]",children:[t.map(t=>{let r=b===t.id,n=t.lastRunStatus;return(0,l.jsxs)("li",{className:(0,E.cn)("cursor-pointer px-3 py-2 text-xs hover:bg-[var(--accent)]",r&&"bg-[var(--accent)]"),onClick:()=>y(t.id),children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:(0,E.cn)("inline-block h-2 w-2 rounded-full",0===t.enabled?"bg-[var(--muted-foreground)]":"succeeded"===n?"bg-emerald-500":"running"===n?"bg-amber-400 animate-pulse":"failed"===n||"timeout"===n?"bg-red-500":"bg-[var(--muted-foreground)]")}),(0,l.jsx)("span",{className:"truncate font-medium text-[var(--foreground)]",children:t.label||t.id}),null!=t.activeUntil&&t.activeUntil<=g?(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--accent)] px-1.5 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:e("cron.badge.ended")}):null!=t.activeFrom&&t.activeFrom>g?(0,l.jsx)("span",{className:"shrink-0 rounded bg-[var(--accent)] px-1.5 py-0.5 text-[10px] text-[var(--muted-foreground)]",children:e("cron.badge.activeFrom",{date:new Date(t.activeFrom).toLocaleString(void 0,{month:"numeric",day:"numeric",hour:"2-digit",minute:"2-digit"})})}):null]}),(0,l.jsxs)("div",{className:"mt-1 flex items-center justify-between gap-2 text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{className:"font-mono",children:t.webhookPath?e("cron.form.mode.webhook"):t.runAt?new Date(t.runAt).toLocaleString():t.schedule}),(0,l.jsx)("span",{children:t.agentId})]}),(0,l.jsx)("div",{className:"mt-0.5 truncate text-[var(--muted-foreground)]",children:t.workspacePath}),t.nextRunAt&&1===t.enabled&&(0,l.jsxs)("div",{className:"mt-0.5 text-[var(--muted-foreground)]",children:[e("cron.next")," ",new Date(t.nextRunAt).toLocaleString()]})]},t.id)}),m&&(0,l.jsx)("li",{ref:e=>{k.current=e},className:"px-3 py-3 text-center text-[10px] text-[var(--muted-foreground)]",children:f?e("cron.loading"):e("cron.loadOlder")})]})})]})}var dd=r(88373),du=r(10969),dm=r(60087),dp=r(82358),dh=r(80566);let df=(0,b.v)(e=>({selected:null,select:t=>e({selected:t}),clear:()=>e({selected:null})}));function dx(e){let{files:t,group:r,selectedPath:n,onSelect:a,onAction:s}=e,[i,c]=(0,o.useState)(new Set),d=function(e,t){let r={type:"dir",name:"",path:"",children:[]};for(let n of e){let e=n.path.split("/"),a=r;for(let t=0;t<e.length-1;t++){let r=e[t],n=a.path?"".concat(a.path,"/").concat(r):r,s=a.children.find(e=>"dir"===e.type&&e.name===r);s||(s={type:"dir",name:r,path:n,children:[]},a.children.push(s)),a=s}a.children.push({type:"file",name:e[e.length-1],file:n,char:t(n)})}return function e(t){for(let r of t.children)"dir"===r.type&&e(r);for(;1===t.children.length&&"dir"===t.children[0].type&&""!==t.name;){let e=t.children[0];t.name="".concat(t.name,"/").concat(e.name),t.path=e.path,t.children=e.children}}(r),function e(t){for(let r of(t.children.sort((e,t)=>e.type!==t.type?"dir"===e.type?-1:1:e.name.localeCompare(t.name)),t.children))"dir"===r.type&&e(r)}(r),r.children}(t,e=>"staged"===r?e.index:e.workingDir);return(0,l.jsx)("div",{children:d.map(e=>(function e(t,o){let d=12*o+8;if("dir"===t.type){let r=i.has(t.path);return(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{onClick:()=>{var e;return e=t.path,void c(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},className:"flex w-full items-center gap-1 py-0.5 text-xs text-[var(--muted-foreground)] hover:text-[var(--foreground)]",style:{paddingLeft:"".concat(d,"px")},children:[r?(0,l.jsx)(F.A,{className:"h-3.5 w-3.5 shrink-0"}):(0,l.jsx)(M.A,{className:"h-3.5 w-3.5 shrink-0"}),(0,l.jsx)("span",{className:"truncate",children:t.name})]}),!r&&t.children.map(t=>e(t,o+1))]},"d:".concat(t.path))}let u=j(t.char),m=n===t.file.path,p="staged"===r?dh.A:lC.A,{Icon:h,color:f}=ea(t.file.path);return(0,l.jsxs)("div",{onClick:()=>a(t.file),className:(0,E.cn)("group flex w-full cursor-pointer items-center gap-1.5 py-0.5 pr-2 text-xs",m?"bg-[var(--accent)]":"hover:bg-[var(--accent)]"),style:{paddingLeft:"".concat(d+16,"px")},children:[(0,l.jsx)(h,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",f)}),(0,l.jsx)("span",{className:"truncate text-[var(--foreground)]",style:{color:u.color},children:t.name}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsx)("button",{onClick:e=>{e.stopPropagation(),s([t.file.path])},title:"staged"===r?"Unstage":"Stage",className:"hidden shrink-0 rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] group-hover:block",children:(0,l.jsx)(p,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("span",{className:"w-4 shrink-0 text-center font-mono text-[11px] font-semibold",style:{color:u.color},title:u.label,children:u.letter})]},"f:".concat(t.file.path))})(e,0))})}var dg=r(4704);function dv(e){let{projectId:t,onClose:r,onSaved:n}=e,a=(0,T.kj)(),[s,i]=(0,o.useState)("https");return(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:r,children:(0,l.jsxs)("div",{className:"w-[460px] rounded-lg border border-[var(--border)] bg-[var(--background)] shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--border)] px-4 py-2.5",children:[(0,l.jsx)("h3",{className:"text-sm font-medium text-[var(--foreground)]",children:a("sc.cred.title")}),(0,l.jsx)("button",{onClick:r,className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:(0,l.jsx)(e0.A,{className:"h-4 w-4"})})]}),(0,l.jsx)("div",{className:"flex gap-1 border-b border-[var(--border)] px-4 pt-3",children:["https","ssh"].map(e=>(0,l.jsx)("button",{onClick:()=>i(e),className:(0,E.cn)("rounded-t px-3 py-1.5 text-xs font-medium",s===e?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:"https"===e?a("sc.cred.tabHttps"):a("sc.cred.tabSsh")},e))}),"https"===s?(0,l.jsx)(dy,{onClose:r,onSaved:n}):(0,l.jsx)(dw,{projectId:t,onClose:r})]})})}let db="rounded border border-[var(--border)] bg-[var(--secondary)] px-2 py-1.5 text-xs text-[var(--foreground)] outline-none focus:border-[var(--primary)]";function dy(e){let{onClose:t,onSaved:r}=e,n=(0,T.kj)(),[a,s]=(0,o.useState)([]),[i,c]=(0,o.useState)(null),[d,m]=(0,o.useState)("github.com"),[p,h]=(0,o.useState)(""),[f,x]=(0,o.useState)(""),[g,v]=(0,o.useState)(!1),[b,y]=(0,o.useState)(null),w=(0,o.useCallback)(()=>{u.FH.git.getCredentials().then(e=>s(e.credentials)).catch(()=>s([]))},[]);async function j(){if(!d.trim()||!p.trim()||!f)return void y(n("sc.cred.required"));v(!0),y(null);try{await u.FH.git.saveCredentials({host:d.trim(),username:p.trim(),token:f}),x(""),w(),r()}catch(e){y(e instanceof Error?e.message:String(e))}finally{v(!1)}}async function k(e){y(null);try{await u.FH.git.deleteCredential(e),w()}catch(e){y(e instanceof Error?e.message:String(e))}finally{c(null)}}return(0,o.useEffect)(()=>{w()},[w]),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex max-h-[420px] flex-col gap-3 overflow-y-auto px-4 py-4",children:[(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.httpsDesc")}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.configuredList")}),0===a.length?(0,l.jsx)("p",{className:"rounded border border-dashed border-[var(--border)] px-2 py-3 text-center text-[10px] text-[var(--muted-foreground)]",children:n("sc.cred.noCredsYet")}):a.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2 rounded border border-[var(--border)] px-2.5 py-1.5 text-xs",children:[(0,l.jsx)("span",{className:"h-2 w-2 shrink-0 rounded-full bg-emerald-400"}),(0,l.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[(0,l.jsx)("span",{className:"truncate text-[var(--foreground)]",children:e.host}),(0,l.jsx)("span",{className:"truncate text-[10px] text-[var(--muted-foreground)]",children:e.username})]}),i===e.host?(0,l.jsx)("button",{onClick:()=>k(e.host),className:"shrink-0 rounded bg-red-500/15 px-2 py-0.5 text-[10px] font-medium text-red-400 hover:bg-red-500/25",children:n("sc.cred.confirmDelete")}):(0,l.jsx)("button",{onClick:()=>c(e.host),title:n("sc.cred.delete"),className:"shrink-0 rounded p-1 text-[var(--muted-foreground)] hover:text-red-400",children:(0,l.jsx)(eq.A,{className:"h-3 w-3"})})]},e.host))]}),(0,l.jsx)("div",{className:"border-t border-[var(--border)]"}),(0,l.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.addNew")}),(0,l.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.host")}),(0,l.jsx)("input",{type:"text",value:d,onChange:e=>m(e.target.value),placeholder:"github.com",className:db})]}),(0,l.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.username")}),(0,l.jsx)("input",{type:"text",value:p,onChange:e=>h(e.target.value),autoComplete:"off",className:db})]}),(0,l.jsxs)("label",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.token")}),(0,l.jsx)("input",{type:"password",value:f,onChange:e=>x(e.target.value),autoComplete:"new-password",className:db}),(0,l.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:[n("sc.cred.tokenHint")," ",(0,l.jsxs)("a",{href:"https://github.com/settings/tokens",target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-0.5 text-[var(--primary)] hover:underline",children:[n("sc.cred.tokenLink"),(0,l.jsx)(dg.A,{className:"h-2.5 w-2.5"})]})]})]})]}),b&&(0,l.jsx)("p",{className:"text-xs text-red-400",children:b})]}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-3 py-2.5",children:[(0,l.jsx)("button",{onClick:t,className:"rounded px-3 py-1 text-xs font-medium text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:n("sc.cred.cancel")}),(0,l.jsx)("button",{onClick:j,disabled:g,className:"rounded bg-[var(--primary)] px-3 py-1 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:g?n("sc.cred.saving"):n("sc.cred.save")})]})]})}function dw(e){let{projectId:t,onClose:r}=e,n=(0,T.kj)(),[a,s]=(0,o.useState)([]),[i,c]=(0,o.useState)(!1),[d,m]=(0,o.useState)([]),[p,h]=(0,o.useState)("other"),[f,x]=(0,o.useState)(""),[g,v]=(0,o.useState)(!1),[b,y]=(0,o.useState)(null),[w,j]=(0,o.useState)(null),[k,N]=(0,o.useState)(""),[S,C]=(0,o.useState)(!1),[A,I]=(0,o.useState)(null),_=(0,o.useCallback)(()=>{u.FH.git.sshKeys().then(e=>s(e.keys)).catch(()=>s([])),u.FH.git.sshAgent().then(e=>{c(e.agentRunning),m(e.loadedKeys)}).catch(()=>{}),u.FH.git.getRemoteProtocol(t).then(e=>{h(e.protocol),x(e.url)}).catch(()=>{})},[t]);function P(){j(null),N(""),I(null)}async function M(e){C(!0),I(null);try{let r=await u.FH.git.unlockSshKey({keyPath:e.path,passphrase:k});if(r.ok)P(),_();else{var t;I(null!=(t=r.error)?t:n("sc.cred.sshUnlockFailed"))}}catch(e){I(e instanceof Error?e.message:String(e))}finally{C(!1)}}async function F(e){v(!0),y(null);try{let r=await u.FH.git.setRemoteProtocol(t,e);h(e),x(r.url)}catch(e){y(e instanceof Error?e.message:String(e))}finally{v(!1)}}return(0,o.useEffect)(()=>{_()},[_]),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex max-h-[420px] flex-col gap-3 overflow-y-auto px-4 py-4",children:[(0,l.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.sshDesc")}),(0,l.jsxs)("div",{className:"flex items-center gap-2 rounded bg-[var(--secondary)] px-2.5 py-1.5 text-xs",children:[(0,l.jsx)("span",{className:(0,E.cn)("h-2 w-2 rounded-full",i?"bg-emerald-400":"bg-[var(--muted-foreground)]")}),(0,l.jsx)("span",{className:"text-[var(--muted-foreground)]",children:i?n("sc.cred.sshAgentOn",{count:String(d.length)}):n("sc.cred.sshAgentOff")}),(0,l.jsx)("button",{onClick:_,className:"ml-auto rounded p-0.5 text-[var(--muted-foreground)] hover:text-[var(--foreground)]",title:n("sc.cred.sshRefresh"),children:(0,l.jsx)(aD.A,{className:"h-3 w-3"})})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.sshKeys")}),0===a.length?(0,l.jsx)("p",{className:"rounded border border-dashed border-[var(--border)] px-2 py-3 text-center text-[10px] text-[var(--muted-foreground)]",children:n("sc.cred.sshNoKeys")}):a.map(e=>{let t=d.some(t=>t.includes(e.path)||t.includes(e.name)),r=w===e.path;return(0,l.jsxs)("div",{className:"rounded border border-[var(--border)]",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 px-2.5 py-1.5 text-xs",children:[e.encrypted?(0,l.jsx)(tD.A,{className:"h-3 w-3 shrink-0 text-amber-400"}):(0,l.jsx)(sH.A,{className:"h-3 w-3 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"truncate text-[var(--foreground)]",children:e.name}),t?(0,l.jsx)("span",{className:"ml-auto text-[10px] text-emerald-400",children:n("sc.cred.sshLoaded")}):!r&&(0,l.jsx)("button",{onClick:()=>{j(e.path),N(""),I(null)},className:"ml-auto shrink-0 rounded bg-[var(--secondary)] px-2 py-0.5 text-[10px] font-medium text-[var(--foreground)] hover:opacity-90",children:n("sc.cred.sshUnlock")})]}),!t&&r&&(0,l.jsxs)("div",{className:"flex flex-col gap-1.5 border-t border-[var(--border)] px-2.5 py-2",children:[(0,l.jsx)("span",{className:"text-[10px] leading-relaxed text-[var(--muted-foreground)]",children:n("sc.cred.sshUnlockHint")}),(0,l.jsx)("input",{type:"password",autoFocus:!0,autoComplete:"off",value:k,onChange:e=>N(e.target.value),onKeyDown:t=>{"Enter"!==t.key||S||M(e)},placeholder:n("sc.cred.sshPassphrase"),className:db}),A&&(0,l.jsx)("span",{className:"text-[10px] leading-relaxed text-red-400",children:A}),(0,l.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,l.jsx)("button",{onClick:P,disabled:S,className:"rounded px-2 py-0.5 text-[10px] font-medium text-[var(--muted-foreground)] hover:bg-[var(--secondary)] disabled:opacity-40",children:n("sc.cred.cancel")}),(0,l.jsx)("button",{onClick:()=>M(e),disabled:S,className:"rounded bg-[var(--primary)] px-2 py-0.5 text-[10px] font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:S?n("sc.cred.sshUnlocking"):n("sc.cred.sshUnlock")})]})]})]},e.path)})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("span",{className:"text-xs text-[var(--muted-foreground)]",children:n("sc.cred.sshRemote")}),(0,l.jsxs)("div",{className:"flex items-center gap-2 rounded bg-[var(--secondary)] px-2.5 py-1.5",children:[(0,l.jsx)("span",{className:"truncate text-[10px] text-[var(--muted-foreground)]",title:f,children:f||"—"}),(0,l.jsx)("div",{className:"ml-auto flex shrink-0 overflow-hidden rounded border border-[var(--border)]",children:["https","ssh"].map(e=>(0,l.jsx)("button",{onClick:()=>F(e),disabled:g||p===e,className:(0,E.cn)("px-2 py-0.5 text-[10px] font-medium",p===e?"bg-[var(--primary)] text-[var(--primary-foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)] disabled:opacity-40"),children:e.toUpperCase()},e))})]})]}),(0,l.jsx)("p",{className:"text-[10px] leading-relaxed text-[var(--muted-foreground)]",children:n("sc.cred.sshRestartNote")}),b&&(0,l.jsx)("p",{className:"text-xs text-red-400",children:b})]}),(0,l.jsx)("div",{className:"flex items-center justify-end gap-2 border-t border-[var(--border)] px-3 py-2.5",children:(0,l.jsx)("button",{onClick:r,className:"rounded px-3 py-1 text-xs font-medium text-[var(--muted-foreground)] hover:bg-[var(--secondary)]",children:n("sc.cred.close")})})]})}var dj=r(72526);function dk(e){return e.startsWith("HEAD -> ")?{kind:"head",label:e.slice(8)}:"HEAD"===e?{kind:"head",label:"HEAD"}:e.startsWith("tag: ")?{kind:"tag",label:e.slice(5)}:e.endsWith("/HEAD")?null:e.includes("/")?{kind:"remote",label:e}:{kind:"branch",label:e}}function dN(e){let{info:t}=e,r="tag"===t.kind?dj.A:dd.A,n="head"===t.kind?"bg-[var(--primary)] text-[var(--primary-foreground)] font-medium":"tag"===t.kind?"bg-amber-400/10 text-amber-300 ring-1 ring-inset ring-amber-400/30":"remote"===t.kind?"text-[var(--muted-foreground)] ring-1 ring-inset ring-[var(--border)]":"bg-[var(--secondary)] text-[var(--foreground)] ring-1 ring-inset ring-[var(--border)]";return(0,l.jsxs)("span",{className:(0,E.cn)("inline-flex items-center gap-1 rounded px-1.5 py-px text-[10px] leading-tight",n),children:[(0,l.jsx)(r,{className:"h-2.5 w-2.5 shrink-0"}),(0,l.jsx)("span",{className:"truncate",children:t.label})]})}function dS(e){let{file:t,active:r,onSelect:n}=e,a=j(t.status),{Icon:s,color:o}=ea(t.path),{name:i,dir:c}=function(e){let t=e.lastIndexOf("/");return -1===t?{name:e,dir:""}:{name:e.slice(t+1),dir:e.slice(0,t)}}(t.path);return(0,l.jsxs)("button",{onClick:n,className:(0,E.cn)("flex w-full items-center gap-1.5 py-0.5 pr-2 text-left text-xs",r?"bg-[var(--accent)]":"hover:bg-[var(--accent)]"),children:[(0,l.jsx)(s,{className:(0,E.cn)("h-3.5 w-3.5 shrink-0",o)}),(0,l.jsx)("span",{className:"shrink-0 truncate",style:{color:a.color},children:i}),c&&(0,l.jsx)("span",{className:"truncate text-[10px] text-[var(--muted-foreground)]",children:c}),(0,l.jsx)("span",{className:"flex-1"}),(0,l.jsx)("span",{className:"w-4 shrink-0 text-center font-mono text-[11px] font-semibold",style:{color:a.color},title:a.label,children:a.letter})]})}function dC(e){let{projectId:t}=e,r=(0,T.kj)(),n=df(e=>e.select),a=df(e=>e.selected),[s,i]=(0,o.useState)([]),[c,d]=(0,o.useState)(null),[m,p]=(0,o.useState)(!1),[h,f]=(0,o.useState)(null),[x,g]=(0,o.useState)(50),[v,b]=(0,o.useState)(!1),[y,w]=(0,o.useState)({}),j=(0,o.useRef)(null);C("".concat(t,"\n").concat(x),e=>u.FH.git.log(t,x,e),e=>{i(e.commits),b(e.commits.length>=x),d(null),p(!0)},e=>{d(e instanceof Error?e.message:String(e)),p(!0)}),(0,o.useEffect)(()=>{let e=j.current;if(!e||!v)return;let t=new IntersectionObserver(e=>{var t;(null==(t=e[0])?void 0:t.isIntersecting)&&g(e=>e+50)});return t.observe(e),()=>t.disconnect()},[v]);let k=(0,o.useCallback)(e=>{f(t=>t===e?null:e),w(r=>(r[e]||u.FH.git.commitFiles(t,e).then(t=>w(r=>({...r,[e]:t.files}))).catch(()=>w(t=>({...t,[e]:[]}))),r))},[t]);return c?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-red-400",children:c}):m&&0===s.length?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:r("sc.noCommits")}):(0,l.jsxs)("div",{className:"py-1",children:[s.map((e,t)=>{let s=0===t,o=h===e.hash,i=e.pushed?"var(--muted-foreground)":"var(--primary)",c=y[e.hash],d=e.refs?e.refs.split(",").map(e=>e.trim()).filter(Boolean).map(dk).filter(e=>null!==e):[];return(0,l.jsxs)("div",{className:"flex px-3",children:[(0,l.jsxs)("div",{className:"relative shrink-0",style:{width:24},children:[!s&&(0,l.jsx)("div",{className:"absolute left-1/2 w-px -translate-x-1/2 bg-[var(--primary)] opacity-30",style:{top:0,height:16}}),(0,l.jsx)("div",{className:"absolute left-1/2 w-px -translate-x-1/2 bg-[var(--primary)] opacity-30",style:{top:16,bottom:0}}),(0,l.jsx)("div",{className:(0,E.cn)("absolute left-1/2 z-10 -translate-x-1/2 rounded-full",s&&"border-2 bg-[var(--background)]"),style:{top:11,width:10,height:10,...s?{borderColor:i}:{backgroundColor:i}},title:e.pushed?r("sc.pushed"):r("sc.unpushed")})]}),(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{onClick:()=>k(e.hash),className:(0,E.cn)("cursor-pointer rounded-sm py-2",o?"bg-[var(--accent)]":"hover:bg-[var(--accent)]"),children:[(0,l.jsx)("div",{className:"truncate text-xs leading-4 text-[var(--foreground)]",children:e.message}),(0,l.jsxs)("div",{className:"mt-1 flex items-center gap-1.5 text-[10px] text-[var(--muted-foreground)]",children:[(0,l.jsx)("span",{className:"font-mono",children:e.shortHash}),(0,l.jsx)("span",{className:"truncate",children:e.author}),(0,l.jsxs)("span",{className:"shrink-0",children:["\xb7 ",(0,E.fw)(e.date)]})]}),d.length>0&&(0,l.jsx)("div",{className:"mt-1 flex flex-wrap gap-1",children:d.map(e=>(0,l.jsx)(dN,{info:e},"".concat(e.kind,":").concat(e.label)))})]}),o&&(0,l.jsx)("div",{className:"mb-1 ml-1 border-l border-[var(--border)] pl-2",children:void 0===c?(0,l.jsx)("div",{className:"py-1 text-[10px] text-[var(--muted-foreground)]",children:"…"}):0===c.length?(0,l.jsx)("div",{className:"py-1 text-[10px] text-[var(--muted-foreground)]",children:r("sc.noCommitFiles")}):c.map(t=>(0,l.jsx)(dS,{file:t,active:(null==a?void 0:a.commit)===e.hash&&a.path===t.path,onSelect:()=>n({path:t.path,staged:!1,from:t.from,commit:e.hash})},t.path))})]})]},e.hash)}),v&&(0,l.jsx)("div",{ref:j,className:"h-4"})]})}function dA(e){return/authentication|could not read username|permission denied|publickey|passphrase|\b401\b|\b403\b/i.test(e)}function dI(){var e,t,r;let n=(0,T.kj)(),a=rU(e=>{var t,r;return null!=(r=null==(t=e.activeProject)?void 0:t.id)?r:null}),s=df(e=>e.selected),i=df(e=>e.select),c=df(e=>e.clear),[d,m]=(0,o.useState)(null),[p,h]=(0,o.useState)(null),[f,x]=(0,o.useState)(!1),[g,v]=(0,o.useState)(""),[b,y]=(0,o.useState)(!1),[w,j]=(0,o.useState)(null),[S,A]=(0,o.useState)(!1),[I,_]=(0,o.useState)(!1),[P,D]=(0,o.useState)(!1),[L,R]=(0,o.useState)("changes"),[H,z]=(0,o.useState)(null),[O,U]=(0,o.useState)(""),B=C(a,async e=>{var t;let r=await u.FH.git.status(a,e),n=!1===r.isRepo?null:await u.FH.git.remotes(a,e);return{res:r,remotes:null!=(t=null==n?void 0:n.remotes)?t:null}},e=>{let{res:t,remotes:r}=e;if(!1===t.isRepo){x(!0),m(null),z(null),h(null);return}m(t),x(!1),h(null),z(r)},e=>h(e instanceof Error?e.message:String(e))),W=null!=(e=null==d?void 0:d.files)?e:[],K=W.filter(e=>k(e.index)),G=W.filter(e=>N(e.workingDir));async function q(e){y(!0),j(null);try{await e(),await B()}catch(e){j(e instanceof Error?e.message:String(e))}finally{y(!1)}}let Y=(0,o.useCallback)((e,t)=>{i({path:e.path,staged:t,from:e.from})},[i]);function J(e){q(()=>u.FH.git.stage(a,e))}function Z(e){q(()=>u.FH.git.unstage(a,e))}async function V(){a&&g.trim()&&await q(async()=>{await u.FH.git.commit(a,g),v(""),c()})}function X(){a&&O.trim()&&q(async()=>{await u.FH.git.addRemote(a,O.trim()),U("")})}let Q=(null!=(t=null==H?void 0:H.length)?t:0)>0;return a?f?(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-3 bg-[var(--background)] p-6 text-center",children:[(0,l.jsx)(tV.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"max-w-[240px] text-xs text-[var(--muted-foreground)]",children:n("sc.initRepoDesc")}),(0,l.jsxs)("button",{onClick:function(){q(()=>u.FH.git.init(a))},disabled:b,className:"flex items-center gap-1.5 rounded bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:[(0,l.jsx)(tV.A,{className:"h-3.5 w-3.5"}),n(b?"sc.initializing":"sc.initRepo")]}),w&&(0,l.jsx)("p",{className:"max-w-[240px] text-[11px] text-red-400",children:w})]}):(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-10 shrink-0 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(dd.A,{className:"h-4 w-4 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"text-sm font-medium text-[var(--foreground)]",children:n("nav.sourceControl")}),(0,l.jsx)("div",{className:"flex-1"}),(0,l.jsxs)("div",{className:"flex items-center rounded border border-[var(--border)]",children:[(0,l.jsx)("button",{onClick:()=>R("changes"),title:n("sc.viewChanges"),className:(0,E.cn)("rounded-l p-1","changes"===L?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(du.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:()=>R("graph"),title:n("sc.viewGraph"),className:(0,E.cn)("rounded-r p-1","graph"===L?"bg-[var(--secondary)] text-[var(--foreground)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]"),children:(0,l.jsx)(dm.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("button",{onClick:()=>A(!0),title:n("sc.cred.title"),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)($.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:()=>{B()},title:n("sc.refresh"),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)]",children:(0,l.jsx)(aD.A,{className:(0,E.cn)("h-3.5 w-3.5",b&&"animate-spin")})})]}),(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-[var(--border)] px-3 py-1.5",children:[(0,l.jsx)(dd.A,{className:"h-3.5 w-3.5 shrink-0 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"truncate text-xs font-medium text-[var(--foreground)]",children:null!=(r=null==d?void 0:d.branch)?r:"—"}),d&&(d.ahead>0||d.behind>0)&&(0,l.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-[var(--muted-foreground)]",children:[d.behind>0&&(0,l.jsxs)("span",{className:"flex items-center",children:[(0,l.jsx)(dp.A,{className:"h-3 w-3"}),d.behind]}),d.ahead>0&&(0,l.jsxs)("span",{className:"flex items-center",children:[(0,l.jsx)(oR.A,{className:"h-3 w-3"}),d.ahead]})]}),(0,l.jsx)("div",{className:"flex-1"}),Q&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{onClick:()=>void q(()=>u.FH.git.pull(a)),disabled:b,title:n("sc.pull"),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:opacity-40",children:(0,l.jsx)(dp.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("button",{onClick:()=>void q(()=>u.FH.git.push(a)),disabled:b,title:n("sc.push"),className:"rounded p-1 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] disabled:opacity-40",children:(0,l.jsx)(oR.A,{className:"h-3.5 w-3.5"})})]})]}),!Q&&"changes"===L&&(0,l.jsxs)("div",{className:"flex shrink-0 flex-col gap-1.5 border-b border-[var(--border)] p-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5 text-[11px] text-[var(--muted-foreground)]",children:[(0,l.jsx)(oG.A,{className:"h-3.5 w-3.5 shrink-0"}),(0,l.jsx)("span",{children:n("sc.addRemoteDesc")})]}),(0,l.jsx)("input",{type:"text",value:O,onChange:e=>U(e.target.value),onKeyDown:e=>{"Enter"===e.key&&O.trim()&&X()},placeholder:n("sc.remotePlaceholder"),autoComplete:"off",className:"rounded border border-[var(--border)] bg-[var(--secondary)] px-2 py-1.5 font-mono text-[11px] text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none focus:border-[var(--primary)]"}),(0,l.jsxs)("button",{onClick:X,disabled:b||!O.trim(),className:"flex items-center justify-center gap-1.5 rounded bg-[var(--primary)] px-2 py-1 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:[(0,l.jsx)(oG.A,{className:"h-3.5 w-3.5"})," ",n(b?"sc.adding":"sc.addRemote")]})]}),"changes"===L&&(0,l.jsxs)("div",{className:"flex shrink-0 flex-col gap-1.5 border-b border-[var(--border)] p-2",children:[(0,l.jsx)("textarea",{value:g,onChange:e=>v(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&"Enter"===e.key&&(e.preventDefault(),V())},placeholder:n("sc.commitPlaceholder"),rows:2,className:"resize-none rounded border border-[var(--border)] bg-[var(--secondary)] px-2 py-1.5 text-xs text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none focus:border-[var(--primary)]"}),(0,l.jsxs)("button",{onClick:()=>void V(),disabled:b||!g.trim()||0===K.length,className:"flex items-center justify-center gap-1.5 rounded bg-[var(--primary)] px-2 py-1 text-xs font-medium text-[var(--primary-foreground)] hover:opacity-90 disabled:opacity-40",children:[(0,l.jsx)(rP.A,{className:"h-3.5 w-3.5"})," ",n("sc.commit")]})]}),w&&(0,l.jsxs)("div",{className:"shrink-0 border-b border-[var(--border)] bg-red-500/10 px-3 py-2 text-[11px] text-red-400",children:[dA(w)?n("sc.authError"):w,dA(w)&&(0,l.jsx)("button",{onClick:()=>A(!0),className:"ml-1 underline hover:text-red-300",children:n("sc.openCreds")})]}),(0,l.jsx)("div",{className:"flex-1 overflow-y-auto",children:"graph"===L?(0,l.jsx)(dC,{projectId:a}):p?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-red-400",children:p}):0===W.length?(0,l.jsx)("div",{className:"px-3 py-4 text-xs text-[var(--muted-foreground)]",children:n("sc.clean")}):(0,l.jsxs)(l.Fragment,{children:[K.length>0&&(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"group flex items-center gap-1 px-2 py-1",children:[(0,l.jsxs)("button",{onClick:()=>_(e=>!e),className:"flex flex-1 items-center gap-1 text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:[I?(0,l.jsx)(F.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(M.A,{className:"h-3.5 w-3.5"}),n("sc.staged")]}),(0,l.jsx)("button",{onClick:()=>Z(K.map(e=>e.path)),title:n("sc.unstageAll"),className:"hidden rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] group-hover:block",children:(0,l.jsx)(dh.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("span",{className:"rounded bg-[var(--secondary)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:K.length})]}),!I&&(0,l.jsx)(dx,{files:K,group:"staged",selectedPath:(null==s?void 0:s.staged)?s.path:null,onSelect:e=>Y(e,!0),onAction:Z})]}),G.length>0&&(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"group flex items-center gap-1 px-2 py-1",children:[(0,l.jsxs)("button",{onClick:()=>D(e=>!e),className:"flex flex-1 items-center gap-1 text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)] hover:text-[var(--foreground)]",children:[P?(0,l.jsx)(F.A,{className:"h-3.5 w-3.5"}):(0,l.jsx)(M.A,{className:"h-3.5 w-3.5"}),n("sc.changes")]}),(0,l.jsx)("button",{onClick:()=>J(G.map(e=>e.path)),title:n("sc.stageAll"),className:"hidden rounded p-0.5 text-[var(--muted-foreground)] hover:bg-[var(--secondary)] hover:text-[var(--foreground)] group-hover:block",children:(0,l.jsx)(lC.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)("span",{className:"rounded bg-[var(--secondary)] px-1.5 text-[10px] text-[var(--muted-foreground)]",children:G.length})]}),!P&&(0,l.jsx)(dx,{files:G,group:"changes",selectedPath:s&&!s.staged?s.path:null,onSelect:e=>Y(e,!1),onAction:J})]})]})}),S&&(0,l.jsx)(dv,{projectId:a,onClose:()=>A(!1),onSaved:()=>{}})]}):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center bg-[var(--background)] p-6 text-center",children:[(0,l.jsx)(dd.A,{className:"h-8 w-8 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"mt-2 text-xs text-[var(--muted-foreground)]",children:n("sc.noWorkspace")})]})}var dE=r(34016);function dT(){let e=(0,T.kj)(),t=rU(e=>{var t,r;return null!=(r=null==(t=e.activeProject)?void 0:t.id)?r:null}),r=df(e=>e.selected),[n,a]=(0,o.useState)(null),[s,i]=(0,o.useState)(!1),[c,d]=(0,o.useState)(null);return((0,o.useEffect)(()=>{if(!t||!r)return void a(null);let e=!1;return i(!0),d(null),u.FH.git.diff(t,r.path,r.staged,r.from,r.commit).then(t=>{e||a({original:t.original,modified:t.modified,path:r.path})}).catch(t=>{e||d(t instanceof Error?t.message:String(t))}).finally(()=>{e||i(!1)}),()=>{e=!0}},[t,r]),r)?(0,l.jsxs)("div",{className:"flex h-full flex-col bg-[var(--background)]",children:[(0,l.jsxs)("div",{className:"flex h-9 shrink-0 items-center gap-2 border-b border-[var(--border)] px-3",children:[(0,l.jsx)(dE.A,{className:"h-3.5 w-3.5 text-[var(--muted-foreground)]"}),(0,l.jsx)("span",{className:"truncate text-xs text-[var(--foreground)]",children:r.path}),(0,l.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:r.commit?"(".concat(r.commit.slice(0,7),")"):e(r.staged?"sc.diffStaged":"sc.diffWorking")})]}),(0,l.jsx)("div",{className:"flex-1 overflow-hidden",children:s?(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-xs text-[var(--muted-foreground)]",children:e("sc.loadingDiff")}):c?(0,l.jsx)("div",{className:"px-4 py-3 text-xs text-red-400",children:c}):n?(0,l.jsx)(tM,{original:n.original,modified:n.modified,path:n.path}):null})]}):(0,l.jsxs)("div",{className:"flex h-full flex-col items-center justify-center bg-[var(--background)] text-center",children:[(0,l.jsx)(dE.A,{className:"h-10 w-10 text-[var(--muted-foreground)]"}),(0,l.jsx)("p",{className:"mt-2 text-sm text-[var(--muted-foreground)]",children:e("sc.selectFile")})]})}var d_=r(6023),dP=r(83599),dM=r(62803),dF=r(28109),dD=r(81208);function dL(e){let{expanded:t,title:r,desc:n}=e;return(0,l.jsxs)("span",{className:(0,E.cn)("min-w-0 flex-1 whitespace-nowrap pr-3 text-left transition-opacity duration-150 ease-out motion-reduce:transition-none",t?"opacity-100":"opacity-0"),children:[(0,l.jsx)("span",{className:"block truncate text-sm leading-5 text-[var(--foreground)]",children:r}),(0,l.jsx)("span",{className:"block truncate text-[11px] leading-4 text-[var(--muted-foreground)]",children:n})]})}let dR="text-[var(--muted-foreground)]/40",dH={fresh:"text-emerald-400",stale:"text-amber-400 animate-pulse",down:"text-[var(--destructive)]"};function dz(e){return window[e]}function dO(e){let[t,r]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let t=dz(e);t&&t.get().then(r)},[e]);let n=(0,o.useCallback)(()=>{let t=dz(e);t&&t.toggle().then(r)},[e]);return{available:!!dz(e),on:t,toggle:n}}function dU(e){let{items:t,expanded:r=!1,onOpenChange:n}=e,a=(0,T.kj)(),[s,i]=(0,o.useState)(!1);(0,o.useEffect)(()=>{null==n||n(s)},[s,n]);let c=(0,o.useRef)(null),d=t.filter(e=>e.available),u=d.some(e=>e.alert);(0,o.useEffect)(()=>{if(!s)return;let e=e=>{var t;(null==(t=c.current)?void 0:t.contains(e.target))||i(!1)},t=e=>{"Escape"===e.key&&i(!1)};return document.addEventListener("mousedown",e),window.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),window.removeEventListener("keydown",t)}},[s]);let m=e=>"string"==typeof e.state?e.state:a(e.state?"quick.on":"quick.off"),p="".concat(a("quick.title")," — ").concat(d.map(e=>"".concat(e.label," ").concat(m(e))).join(" \xb7 "));return(0,l.jsxs)("div",{ref:c,className:"relative w-full",children:[(0,l.jsxs)("button",{onClick:()=>i(e=>!e),title:p,"aria-expanded":s,className:(0,E.cn)("flex h-12 w-full items-center overflow-hidden transition-colors",u?"text-[var(--destructive)]":"text-[var(--muted-foreground)] hover:text-[var(--foreground)]",s&&"bg-[var(--secondary)]"),children:[(0,l.jsxs)("span",{className:"flex w-12 shrink-0 flex-col items-center justify-center gap-1",children:[(0,l.jsx)($.A,{className:"h-5 w-5"}),(0,l.jsx)("span",{className:"flex h-[3px] w-[30px] gap-[2px]",children:d.map(e=>(0,l.jsx)("span",{"data-segment":e.id,className:(0,E.cn)("flex-1 rounded-full bg-current",e.color)},e.id))})]}),(0,l.jsx)(dL,{expanded:r,title:a("quick.title"),desc:a("nav.desc.quick")})]}),s&&(0,l.jsxs)("div",{className:"absolute bottom-0 left-full z-[60] ml-1 w-[260px] rounded-lg border border-[var(--border)] bg-[var(--background)] py-1 shadow-lg",children:[(0,l.jsx)("div",{className:"px-3 py-1.5 text-[10px] font-medium uppercase tracking-wider text-[var(--muted-foreground)]",children:a("quick.panelTitle")}),d.map((e,t)=>{let r=e.icon,n=(0,l.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,l.jsx)("div",{className:"truncate text-xs text-[var(--foreground)]",children:e.title}),(0,l.jsx)("div",{className:"text-[10px] text-[var(--muted-foreground)]",children:e.subtitle})]}),a=t>0&&e.onToggle&&!d[t-1].onToggle?(0,l.jsx)("div",{className:"my-1 border-t border-[var(--border)]"}):null;if(!e.onToggle)return(0,l.jsxs)("div",{"data-row":e.id,className:"flex items-center gap-3 px-3 py-2",children:[(0,l.jsx)(r,{className:(0,E.cn)("h-4 w-4 shrink-0",e.color)}),n,(0,l.jsx)("span",{className:(0,E.cn)("shrink-0 text-[11px]",e.color),children:m(e)})]},e.id);let s=!0===e.state,o=s?oJ.A:oY.A;return(0,l.jsxs)("div",{children:[a,(0,l.jsxs)("button",{"data-row":e.id,role:"switch","aria-checked":s,onClick:e.onToggle,className:"flex w-full items-center gap-3 px-3 py-2 transition-colors hover:bg-[var(--secondary)]",children:[(0,l.jsx)(r,{className:"h-4 w-4 shrink-0 text-[var(--muted-foreground)]"}),n,(0,l.jsx)(o,{className:(0,E.cn)("h-5 w-5 shrink-0",s?e.color:"text-[var(--muted-foreground)]")})]})]},e.id)})]})]})}let dB=null;function dW(){return dB?"[".concat(dB,"] "):""}let dK=["explorer","source-control","sessions","skills","channels","evolution","cron"],dG=null;function dq(e){var t,r;let{linkState:n}=e,{t:a,lang:s}=(0,T.s9)(),m=rU(e=>e.activeProject),p=rU(e=>e.openFolder),h=nJ(e=>e.isStreaming),[f,x]=(0,o.useState)(()=>localStorage.getItem("halo_sidebar_tab")||"explorer"),[v,b]=(0,o.useState)(()=>"false"!==localStorage.getItem("halo_sidebar_open")),[y,w]=(0,o.useState)("sessions"===f);"sessions"!==f||y||w(!0);let[j,S]=(0,o.useState)(""),[A,_]=(0,o.useState)(!1),{items:P,notifyOnFinish:M}=function(e){let t=(0,T.kj)(),r=dO("haloPin"),n=dO("haloAwake"),a=!!window.haloNotify||"Notification"in window,[s,l]=(0,o.useState)(()=>"true"===localStorage.getItem("halo_notify_on_finish")),i=(0,o.useCallback)(async()=>{let e=!!window.haloNotify;if(!s&&!e&&"Notification"in window){let e=Notification.permission;if("default"===e&&(e=await Notification.requestPermission()),"granted"!==e)return}l(e=>{let t=!e;try{localStorage.setItem("halo_notify_on_finish",String(t))}catch(e){}return t})},[s]);return{items:[{id:"network",icon:"down"===e?d_.A:dP.A,label:t("quick.network"),title:t("quick.networkTitle"),subtitle:t("quick.networkSub"),state:t("link.".concat(e)),color:dH[e],available:!0,alert:"down"===e},{id:"notify",icon:dM.A,label:t("quick.notify"),title:t("quick.notifyTitle"),subtitle:t("quick.notifySub"),state:s,color:s?"text-[var(--primary)]":dR,onToggle:()=>{i()},available:a},{id:"pin",icon:dF.A,label:t("quick.pin"),title:t("quick.pinTitle"),subtitle:t("quick.pinSub"),state:r.on,color:r.on?"text-[var(--primary)]":dR,onToggle:r.toggle,available:r.available},{id:"awake",icon:dD.A,label:t("quick.awake"),title:t("quick.awakeTitle"),subtitle:t("quick.awakeSub"),state:n.on,color:n.on?"text-amber-400":dR,onToggle:n.toggle,available:n.available}],notifyOnFinish:s}}(n),[F,D]=(0,o.useState)(!1),L=l_(F),R=L.close;(0,o.useEffect)(()=>{if(!L.open)return;let e=e=>{"Escape"===e.key&&R()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[L.open,R]),(0,o.useEffect)(()=>{let e=null==m?void 0:m.name;document.title=dW()+(e?"".concat(h?"● ":"","Halo — ").concat(e):"Halo")},[h,null==m?void 0:m.name]);let H=rn(),[z,O]=(0,o.useState)(null);!H&&z&&O(null),(0,o.useEffect)(()=>{if(!z)return;let e=setTimeout(()=>O(null),8e3);return()=>clearTimeout(e)},[z]),(0,o.useEffect)(()=>{if(M){var e;return e=e=>{!function(){try{let e=window.AudioContext||window.webkitAudioContext;if(!e)return;dG||(dG=new e);let t=dG;t.resume();let r=t.currentTime;[[880,0],[1174.66,.15]].forEach(e=>{let[n,a]=e,s=t.createOscillator(),l=t.createGain();s.type="sine",s.frequency.value=n,l.gain.setValueAtTime(1e-4,r+a),l.gain.exponentialRampToValueAtTime(.2,r+a+.02),l.gain.exponentialRampToValueAtTime(1e-4,r+a+.35),s.connect(l).connect(t.destination),s.start(r+a),s.stop(r+a+.4)})}catch(e){}}();let t=e.getState().sessionId,r=t?lM.get(t):void 0;if(t&&rr()&&O(e=>{var n;return{sessionIds:[t,...(null!=(n=null==e?void 0:e.sessionIds)?n:[]).filter(e=>e!==t)],title:r}}),document.hasFocus())return;let n=null==m?void 0:m.name,s=n?"Halo — ".concat(n):"Halo",l=r?a("status.notifyBodySession",{title:r}):a("status.notifyBody"),o=window.haloNotify;if(o)o.notify({title:s,body:l});else if("Notification"in window&&"granted"===Notification.permission){let e=new Notification(s,{body:l});e.onclick=()=>{window.focus(),e.close()}}},nU.add(e),()=>{nU.delete(e)}}},[M,null==m?void 0:m.name,a]),(0,o.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get("folder"),t=async(e,t)=>{try{let n=await u.FH.fs.resolveWorkspace(e);p(n.path,n.id),S(n.path),g(n.path);try{localStorage.setItem("halo_last_folder",n.path)}catch(e){}var r=n.path;let a=oO().filter(e=>e!==r);if(a.unshift(r),oU(a.slice(0,8)),t||n.path!==e){let e=new URL(window.location.href);e.searchParams.set("folder",n.path),window.history.replaceState({},"",e.toString())}}catch(e){return console.error("[Workspace] Failed to resolve workspace:",e),!1}return!0};if(e)t(e,!1);else{let e=(()=>{try{return localStorage.getItem("halo_last_folder")}catch(e){return null}})(),r=()=>u.FH.fs.home().then(e=>{let{home:r}=e;return t(r,!0)}).catch(e=>{console.error("[Workspace] Failed to resolve home dir:",e)});e?t(e,!0).then(e=>{e||r()}):r()}},[]);let[U,B]=(0,o.useState)(!1);(0,o.useEffect)(()=>{ex().then(()=>B(!0))},[]);let W=(0,o.useRef)(!1);(0,o.useEffect)(()=>{function e(e){W.current||("web"===ey()||0!==d.Uw.getState().modifiedPaths.size)&&e.preventDefault()}return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[]);let K=(0,o.useCallback)(()=>{let e=d.Uw.getState(),t=e.activeTab;if(!t)return!1;let r=e.tabs.find(e=>e.path===t);return(async()=>{(null==r||!r.modified||await (0,E.fN)('"'.concat(r.path.split("/").pop(),'" has unsaved changes. Close anyway?')))&&e.closeTab(t)})(),!0},[]);(0,o.useEffect)(()=>{function e(e){if((e.metaKey||e.ctrlKey)&&"p"===e.key&&(e.preventDefault(),_(e=>!e)),(e.metaKey||e.ctrlKey)&&"`"===e.key){e.preventDefault();let t=d.Uw.getState();t.bottomSplit||t.setBottomTab("terminal"===t.bottomTab?"chat":"terminal")}!e.altKey||"KeyW"!==e.code||e.metaKey||e.ctrlKey||(e.preventDefault(),K())}return window.addEventListener("keydown",e,!0),()=>window.removeEventListener("keydown",e,!0)},[K]),(0,o.useEffect)(()=>{let e=window.haloCloseShortcut;e&&e.onTrigger(()=>{K()||e.closeWindow()})},[K]),(0,o.useEffect)(()=>{function e(e){if("Escape"!==e.key||!d.Uw.getState().maximized)return;let t=document.activeElement;if(t){let e=t.tagName;if("INPUT"===e||"TEXTAREA"===e||t.isContentEditable||t.closest(".monaco-editor"))return}A||d.Uw.getState().setMaximized(!1)}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[A]),(0,o.useEffect)(()=>{let e=e=>{let t=e.detail;if(!(null==t?void 0:t.tab))return;let{bottomFloating:r}=d.Uw.getState();(!r||"explorer"!==t.tab||t.force)&&(x(t.tab),!1!==t.sidebar&&b(!0))};return window.addEventListener("halo:navigate",e),()=>window.removeEventListener("halo:navigate",e)},[]),(0,o.useEffect)(()=>{let e=e=>{var t;let r=null==(t=e.detail)?void 0:t.path;r&&q(r)};return window.addEventListener("halo:open-workspace",e),()=>window.removeEventListener("halo:open-workspace",e)},[]),(0,o.useEffect)(()=>{localStorage.setItem("halo_sidebar_tab",f),localStorage.setItem("halo_sidebar_open",String(v))},[f,v]);let G=(0,o.useRef)(!1);async function q(e){let t=e.trim();if(!t||G.current)return;G.current=!0;try{let e=await u.FH.fs.exists(t);if(!e.exists||!e.isDirectory){window.alert("Workspace not found: ".concat(t)),G.current=!1;return}}catch(e){window.alert(e instanceof Error?e.message:"Failed to validate path"),G.current=!1;return}let r=d.Uw.getState().tabs.filter(e=>e.modified);if(r.length>0){let e=r.map(e=>e.path.split("/").pop()).join(", ");if(!await (0,E.fN)("Unsaved changes in ".concat(e," will be lost. Switch workspace anyway?"))){G.current=!1;return}}W.current=!0;try{localStorage.setItem("halo_last_folder",t)}catch(e){}let n=new URL(window.location.href);n.searchParams.set("folder",t),window.location.href=n.toString()}let $=(0,o.useCallback)(async e=>{let t=null==m?void 0:m.id;if(t){if(d.Uw.getState().tabs.find(t=>t.path===e))return void d.Uw.getState().setActiveTab(e);try{let r=await u.FH.files.read(e,t),n=(0,E.sQ)(e);d.Uw.getState().openFile(e,r.content,n)}catch(e){console.error("[QuickOpen] Failed to read file:",e)}}},[m]),Y=[{id:"explorer",icon:oB.A,label:a("nav.explorer")},{id:"sessions",icon:aF.A,label:a("nav.sessions")},{id:"source-control",icon:dd.A,label:a("nav.sourceControl")},{id:"management",icon:aL.A,label:"Agents"},{id:"skills",icon:o$.A,label:"Skills"},{id:"channels",icon:i5.A,label:a("nav.channels")},{id:"evolution",icon:sL.A,label:"Evolution"},{id:"cron",icon:c7.A,label:a("nav.cron")},{id:"settings",icon:iN.A,label:a("nav.settings"),position:"bottom"}].map(e=>{let{icon:t,...r}=e;return{...r,icon:(0,l.jsx)(t,{className:"h-5 w-5"}),desc:a("nav.desc.".concat(r.id))}}),J=em(),Z=(0,o.useMemo)(()=>el.extensions.filter(e=>e.activity&&ej(e)).sort((e,t)=>e.activity.order-t.activity.order||e.id.localeCompare(t.id)),[J]),V=Z.map(e=>({id:nl(e.id),icon:(0,l.jsx)(ni,{info:e}),label:na(e,s),desc:function(e,t){var r,n,a;let s=e.activity;return null!=(a=null!=(n=null!=(r="zh"===t?null==s?void 0:s.description_zh:void 0)?r:null==s?void 0:s.description)?n:e.description)?a:""}(e,s)})),X=no(f)?Z.find(e=>nl(e.id)===f):void 0,Q=null!=(t=null==m?void 0:m.id)?t:null;C(Q,e=>Promise.all([u.FH.git.status(Q,e),u.FH.git.ignored(Q,e)]),e=>{let[t,r]=e,{setForProject:n,clearProject:a,setRepoStatus:s}=I.getState();if(!1===t.isRepo){a(Q),s(Q,!1);return}n(Q,function(e,t){let r=new Map,n=new Map;for(let t of e){var a,s;let e=(a=t.index,N(s=t.workingDir)?"?"===s?"?":s:k(a)?a:"");if(!e)continue;r.set(t.path,e);let l=t.path.split("/");for(let t=0;t<l.length-1;t++){let r=l.slice(0,t+1).join("/"),a=n.get(r);void 0===a?n.set(r,e):a!==e&&"*"!==a&&n.set(r,"*")}}return{files:r,dirs:n,ignored:new Set(t)}}(t.files,r.ignored)),s(Q,!0)},()=>{let{clearProject:e,setRepoStatus:t}=I.getState();e(Q),t(Q,!1)}),(0,o.useEffect)(()=>{if(Q)return()=>{let{clearProject:e,clearRepoStatus:t}=I.getState();e(Q),t(Q)}},[Q]);let ee=I(e=>{var t;return null!=(t=Q?e.repoStatus[Q]:void 0)?t:"unknown"}),et=Y.filter(e=>"bottom"!==e.position).filter(e=>"source-control"!==e.id||!1!==ee),er=Y.filter(e=>"bottom"===e.position),en=(0,d.Uw)(e=>e.maximized),ea=(0,d.Uw)(e=>e.bottomFloating),es=(0,d.Uw)(e=>e.bottomMaximized),eo=v&&!en,ei=dK.includes(f)&&v&&"explorer"!==f,ec="explorer"===f;(0,o.useEffect)(()=>{!1===ee&&"source-control"===f&&x("explorer")},[ee,f]),(0,o.useEffect)(()=>{U&&no(f)&&!X&&x("explorer")},[U,f,X]);let[ed]=(0,o.useState)(()=>{if("undefined"==typeof document)return null;let e=document.createElement("div");return e.className="h-full",e}),eu=(0,o.useRef)(null),[ep,eh]=(0,o.useState)(null),[ef,eg]=(0,o.useState)(null),[ev,eb]=(0,o.useState)(null),ew=ea?ev:es?ef:ep;(0,o.useLayoutEffect)(()=>{ed&&ew&&ed.parentElement!==ew&&ew.appendChild(ed)},[ed,ew]);let ek=e=>{let t=f===e.id;return(0,l.jsxs)("button",{onClick:()=>{var t;t=e.id,d.Uw.getState().maximized&&d.Uw.getState().setMaximized(!1),f===t&&v?b(!1):(x(t),b(!0)),L.close()},"aria-label":e.label,className:(0,E.cn)("relative flex h-12 w-full shrink-0 items-center overflow-hidden transition-colors hover:text-[var(--foreground)]",t?"text-[var(--foreground)]":"text-[var(--muted-foreground)]"),children:[t&&(0,l.jsx)("div",{className:"absolute left-0 top-1/2 h-6 w-0.5 -translate-y-1/2 rounded-r bg-[var(--primary)]"}),(0,l.jsx)("span",{className:"flex w-12 shrink-0 justify-center",children:e.icon}),(0,l.jsx)(dL,{expanded:L.open,title:e.label,desc:e.desc})]},e.id)};return(0,l.jsxs)("div",{className:"flex h-full",children:[(0,l.jsx)("div",{className:(0,E.cn)("relative w-12 shrink-0",en&&"hidden"),children:(0,l.jsxs)("div",{...L.bind,className:(0,E.cn)("absolute inset-y-0 left-0 flex flex-col border-r border-[var(--border)] bg-[var(--card)] py-2 transition-[width,box-shadow] duration-150 ease-out motion-reduce:transition-none",L.open?"w-60 shadow-[6px_0_16px_-6px_rgba(0,0,0,0.35)]":"w-12",F?"z-[60]":"z-[45]"),children:[(0,l.jsxs)("div",{className:"min-h-0 flex-1 overflow-y-auto overflow-x-hidden [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:[et.map(ek),V.map(ek)]}),er.map(ek),(0,l.jsx)(dU,{items:P,expanded:L.open,onOpenChange:D})]})}),(0,l.jsx)("div",{className:(0,E.cn)("flex min-w-0 flex-1",!ec&&"hidden",en&&"fixed inset-0 z-40 bg-[var(--background)]"),children:(0,l.jsx)(d$,{showSidebar:eo,sidebar:(0,l.jsx)(oq,{projectId:Q,pathInput:j,onPathInputChange:S,onOpenFolder:function(){q(j)},onOpenPath:q,activeProject:m}),main:(0,l.jsx)(dY,{projectId:Q,showBottom:!ea&&!en,bottomSlotRef:eh})})}),y&&(0,l.jsx)("div",{className:(0,E.cn)("flex min-w-0 flex-1",("sessions"!==f||en)&&"hidden"),children:(0,l.jsx)(d$,{autoSaveId:"halo-h-sessions",showSidebar:v,sidebar:(0,l.jsx)(aK,{}),main:(0,l.jsx)(ik,{visible:"sessions"===f&&!en})})}),!ec&&"sessions"!==f&&!en&&(ei?(0,l.jsxs)(c.YZ,{direction:"horizontal",autoSaveId:"halo-h-sidebar",className:"flex-1",children:[(0,l.jsx)(c.Zk,{defaultSize:22,minSize:15,maxSize:40,children:(0,l.jsxs)("div",{className:"h-full overflow-hidden",children:["source-control"===f&&(0,l.jsx)(dI,{}),"skills"===f&&(0,l.jsx)(o1,{}),"channels"===f&&(0,l.jsx)(cH,{}),"evolution"===f&&(0,l.jsx)(c5,{}),"cron"===f&&(0,l.jsx)(dc,{})]})}),(0,l.jsx)(c.TW,{className:"w-px bg-[var(--border)] hover:w-1 hover:bg-[var(--primary)] transition-colors"}),(0,l.jsx)(c.Zk,{defaultSize:78,minSize:40,children:(0,l.jsx)(dJ,{activeTab:f})})]}):(0,l.jsx)("div",{className:"flex-1 min-w-0 overflow-hidden",children:X?(0,l.jsx)(nc,{info:X},"".concat(X.id,"@").concat(X.version)):(0,l.jsx)(dJ,{activeTab:f})})),A&&(0,l.jsx)(oL,{onSelect:$,onClose:()=>_(!1)}),ea&&(0,l.jsx)("div",{className:H?"hidden":"contents",children:(0,l.jsx)(oM,{slotRef:eb,dragHandleRef:eu})}),H&&z&&(0,l.jsxs)("div",{role:"status",onMouseDown:e=>e.preventDefault(),className:"fixed right-4 top-14 z-[80] flex max-w-[360px] items-center gap-3 rounded-lg border border-[var(--border)] bg-[var(--card)] px-3 py-2 text-xs text-[var(--foreground)] shadow-lg",children:[(0,l.jsx)("span",{className:"min-w-0 flex-1 truncate",children:z.sessionIds.length>1?a("editor.immersive.repliedMany",{count:z.sessionIds.length}):a("editor.immersive.replied",{title:null!=(r=z.title)?r:a("chat.tabs.untitled")})}),(0,l.jsx)("button",{type:"button",onClick:()=>{var e;return e=z.sessionIds[0],void(O(null),rl({refocus:!1}),aa(e),d.Uw.getState().setBottomTab("chat"),requestAnimationFrame(()=>window.dispatchEvent(new CustomEvent("halo:focus-chat-input"))))},className:"shrink-0 font-medium text-[var(--primary)] hover:underline",children:a("editor.immersive.backToChat")})]}),es&&!ea&&(0,l.jsx)("div",{ref:eg,className:"fixed inset-0 z-50 bg-[var(--background)]"}),ed&&(0,i.createPortal)((0,l.jsx)(o_,{floating:ea,dragHandleRef:eu}),ed)]})}function d$(e){let{showSidebar:t,sidebar:r,main:n,autoSaveId:a="halo-h-sidebar"}=e,s=(0,o.useRef)(null),i=(0,o.useRef)([22,78]);return(0,o.useEffect)(()=>{let e=s.current;if(e)if(t)e.setLayout(i.current);else{let t=e.getLayout();t[0]>0&&(i.current=t),e.setLayout([0,100])}},[t]),(0,l.jsxs)(c.YZ,{ref:s,direction:"horizontal",autoSaveId:a,className:"flex-1",children:[(0,l.jsx)(c.Zk,{defaultSize:22,minSize:0,maxSize:40,collapsible:!0,children:(0,l.jsx)("div",{className:(0,E.cn)("h-full overflow-hidden",!t&&"hidden"),children:r})}),(0,l.jsx)(c.TW,{className:(0,E.cn)("w-px bg-[var(--border)] hover:w-1 hover:bg-[var(--primary)] transition-colors",!t&&"pointer-events-none opacity-0")}),(0,l.jsx)(c.Zk,{defaultSize:78,minSize:40,children:n})]})}function dY(e){let{projectId:t,showBottom:r,bottomSlotRef:n}=e,a=(0,o.useRef)(null),s=(0,o.useRef)([65,35]);return(0,o.useEffect)(()=>{let e=a.current;if(e)if(r)e.setLayout(s.current);else{let t=e.getLayout();t[1]>0&&(s.current=t),e.setLayout([100,0])}},[r]),(0,l.jsxs)(c.YZ,{ref:a,direction:"vertical",autoSaveId:"halo-v-editor",className:"h-full",children:[(0,l.jsx)(c.Zk,{defaultSize:65,minSize:20,children:(0,l.jsx)(r9,{projectId:t,mode:"editor-only"})}),(0,l.jsx)(c.TW,{className:(0,E.cn)("h-px bg-[var(--border)] hover:h-1 hover:bg-[var(--primary)] transition-colors",!r&&"pointer-events-none opacity-0")}),(0,l.jsx)(c.Zk,{defaultSize:35,minSize:0,collapsible:!0,children:(0,l.jsx)("div",{ref:n,className:(0,E.cn)("h-full",!r&&"hidden")})})]})}function dJ(e){let{activeTab:t}=e;return"source-control"===t?(0,l.jsx)(dT,{}):"management"===t?(0,l.jsx)(ih,{}):"skills"===t?(0,l.jsx)(ig,{}):"channels"===t?(0,l.jsx)(cz,{}):"evolution"===t?(0,l.jsx)(cJ,{}):"cron"===t?(0,l.jsx)(dr,{}):"settings"===t?(0,l.jsx)(iK,{}):null}var dZ=r(45966),dV=r(42883);let dX=/<<<SHOW:([\s\S]*?)>>>/g,dQ="[Face snapshot]",d0=null;async function d1(e,t,r){let n=t.getState(),a=n.screenSource,s=n.cameraSource,l=a?se():void 0,o=s?st():void 0,i=[];l&&i.push("screen"),o&&i.push("camera");let c=function(e,t){let r=new Set,n=!1;for(let a of e)for(let e of a.content.matchAll(aG))if(n=!0,e[1])r.add(e[1]);else for(let e of t)r.add(e);if(!n)return[];let a=t.filter(e=>r.has(e));return a.length>0?a:t}(r,i);if(0===c.length)return;let d=rU.getState().activeProject,u=n.sessionId;if(!d||!u)return;let m=(0,E.$C)(),p="undefined"!=typeof localStorage&&"zh"===localStorage.getItem("halo_lang")?dV.zh:dZ.en,h="image/jpeg",f=await Promise.all(c.map(async e=>{let t="camera"===e?s:a,r=null;try{r="camera"===e?await o.snap(t.id||void 0):await l.grab(t.id)}catch(e){r=null}return r?{base64:r,note:"[\uD83D\uDCF7 ".concat(t.name,"]"),msg:"camera"===e?"[Photo from the camera]":'[Screenshot of "'.concat(t.name,'"]')}:{base64:null,note:p["camera"===e?"capture.cameraFailNote":(null==l?void 0:l.web)?"capture.webFailNote":"capture.failNote"].replace("{name}",t.name),msg:"camera"===e?"[Could not take a photo from the camera — it may be in use by another app, or camera permission was revoked. Ask the user to check, then request the capture again.]":(null==l?void 0:l.web)?"[Could not capture the shared screen — sharing may have stopped, or the shared window is minimized. Ask the user to check, then request the capture again.]":'[Could not capture "'.concat(t.name,'" — it was likely occluded/minimized long enough that macOS purged its rendered frame (came back blank/black). Ask the user to briefly bring that window to the foreground, then request the capture again.]')}})),x=f.flatMap(e=>e.base64?[e.base64]:[]);n.addMessage({id:(0,E.$C)(),role:"user",content:f.map(e=>e.note).join("\n"),timestamp:Date.now(),clientMsgId:m,...x.length>0?{localImages:x.map(e=>"data:".concat(h,";base64,").concat(e))}:{}}),n.addMessage({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0});let g=n.selectedAgentId;e.send({type:"chat",sessionId:u,projectId:d.id,message:f.map(e=>e.msg).join("\n"),clientMsgId:m,..."default"!==g?{agentId:g}:{},...x.length>0?{images:x.map(e=>({data:e,mimeType:h}))}:{}})}function d3(e){let{onSuccess:t}=e,[r,n]=(0,o.useState)(""),[a,s]=(0,o.useState)(""),[i,c]=(0,o.useState)(!1),d=(0,o.useCallback)(async e=>{if(e.preventDefault(),r.trim()){c(!0),s("");try{(await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:r.trim()}),credentials:"include"})).ok?t():(s("Incorrect password"),n(""))}catch(e){s("Connection failed")}finally{c(!1)}}},[r,t]);return(0,l.jsx)("div",{className:"flex h-screen w-screen items-center justify-center bg-[var(--background)]",children:(0,l.jsxs)("div",{className:"w-full max-w-sm px-6",children:[(0,l.jsxs)("div",{className:"text-center",children:[(0,l.jsx)("div",{className:"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-xl bg-[var(--secondary)]",children:(0,l.jsx)(tD.A,{className:"h-7 w-7 text-[var(--foreground)]"})}),(0,l.jsx)("h1",{className:"text-xl font-semibold text-[var(--foreground)]",children:"Halo"}),(0,l.jsx)("p",{className:"mt-1 text-sm text-[var(--muted-foreground)]",children:"Enter password to access workspace"})]}),(0,l.jsxs)("form",{onSubmit:d,className:"mt-8",children:[(0,l.jsx)("input",{type:"password",value:r,onChange:e=>n(e.target.value),placeholder:"Password",autoFocus:!0,className:"w-full rounded-md border border-[var(--border)] bg-[var(--secondary)] px-3 py-2.5 text-sm text-[var(--foreground)] placeholder-[var(--muted-foreground)] outline-none focus:border-[var(--primary)] focus:ring-1 focus:ring-[var(--primary)]"}),a&&(0,l.jsx)("p",{className:"mt-2 text-xs text-red-400",children:a}),(0,l.jsx)("button",{type:"submit",disabled:i||!r.trim(),className:"mt-4 w-full rounded-md bg-[var(--primary)] px-3 py-2.5 text-sm font-medium text-[var(--primary-foreground)] transition-colors hover:opacity-90 disabled:opacity-50",children:i?"Verifying...":"Login"})]})]})})}function d2(){let{linkState:e}=function(){let[e,t]=(0,o.useState)(!1),[r,n]=(0,o.useState)("down"),a=(0,o.useRef)(!1);return(0,o.useEffect)(()=>{if(a.current)return;a.current=!0,p.connect();let e=[p.on("_connected",()=>{t(!0),n("fresh");let e=rU.getState().activeProject;(null==e?void 0:e.id)&&n2.getState().projectId===e.id&&p.send({type:"subscribe",sessionId:function(){var e;let{tabs:t,activeTabId:r}=n2.getState();for(let e of t)e.tabId!==r&&au(e);return null!=(e=n$().getState().sessionId)?e:""}(),projectId:e.id})}),p.on("_disconnected",()=>{t(!1),n("down")}),function(e){var t;let r=[];r.push((tw=t=(t,r)=>(function(e,t,r){let n=rU.getState().activeProject,a=n$();if(d0&&d0!==a)return ty("snap skipped (tab switched)"),!1;let s=a.getState(),l=s.sessionId;if(!n||!l)return ty("snap skipped (no session)"),!1;let o=(0,E.$C)();s.addMessage({id:(0,E.$C)(),role:"user",content:dQ,timestamp:Date.now(),clientMsgId:o,localImages:["data:".concat(r,";base64,").concat(t)]}),s.messages.some(e=>e.streaming&&"assistant"===e.role&&!e.taskId)||s.addMessage({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0});let i=s.selectedAgentId;return e.send({type:"chat",sessionId:l,projectId:n.id,message:dQ,clientMsgId:o,..."default"!==i?{agentId:i}:{},images:[{data:t,mimeType:r}]}),!0})(e,t,r),()=>{tw===t&&(tw=null)})),r.push(e.on("_chat_send_failed",e=>{e.clientMsgId&&nK(t=>t.getState().markChatSendFailed(e.clientMsgId))})),r.push(e.on("_disconnected",()=>void(nE=Date.now())));let n=setInterval(()=>{nK(e=>e.getState().convergeStaleStreaming())},5e3);r.push(()=>clearInterval(n)),r.push(e.on("chat:thinking",e=>{var t;null==(t=ad(e.sessionId))||t.getState().appendThinking(e.text,e.agentName,void 0,e.turnId)})),r.push(e.on("chat:stream",e=>{var t;null==(t=ad(e.sessionId))||t.getState().updateLastAssistant(e.text,e.agentName,void 0,e.turnId)})),r.push(e.on("chat:discard",e=>{var t;null==(t=ad(e.sessionId))||t.getState().discardTurnText(e.turnId)})),r.push(e.on("chat:complete",t=>{let r=ad(t.sessionId);if(!r)return;let n=r.getState();n.completeAgentStreaming(void 0,void 0,t.batchBoundary);let a=n.takeRoundReplies();if(r===n$()){d1(e,r,a),a.length>0&&(tj=!1,d0=r);for(let e of a)for(let t of e.content.matchAll(dX)){let e=t[1].trim();e&&function(e){for(let r of tf)try{var t;null==(t=r.contentWindow)||t.postMessage({haloFace:e},"*")}catch(e){}}(e)}}})),r.push(e.on("chat:stopped",e=>{var t;null==(t=ad(e.sessionId))||t.getState().completeAgentStreaming()})),r.push(e.on("error",e=>{var t,r;let n=null==(t=ad(e.sessionId))?void 0:t.getState();if(!n)return;let a=e.code?null!=(r=e.error)?r:"":e.error?"Error: ".concat(e.error):"An unknown error occurred.";n.addMessage({id:(0,E.$C)(),role:"system",content:a,timestamp:Date.now(),agentName:e.agentName}),e.taskId||n.completeAgentStreaming(e.agentName)})),r.push(e.on("chat:followup",e=>{var t;let r=null==(t=ad(e.sessionId))?void 0:t.getState();if(r){if(e.replay){let t=r.takeReplaySnapshot();t?r.setMessages(t):r.completeAgentStreaming(e.agentName)}else r.completeAgentStreaming(e.agentName);r.addMessage({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0,agentName:e.agentName})}})),r.push(e.on("chat:user",e=>{var t;null==(t=ad(e.sessionId))||t.getState().addMessage({id:(0,E.$C)(),role:"user",content:e.text,timestamp:Date.now()})})),r.push(e.on("chat:usage",e=>{var t;let r=null==(t=ad(e.sessionId,!1))?void 0:t.getState();r&&(r.setTokenUsage(e.contextTokens,e.outputTokens),e.usage&&r.addMessage({type:"usage",role:"system",content:"[Usage] in=".concat(e.usage.inputTokens," out=").concat(e.usage.outputTokens," cache=").concat(e.usage.cacheReadInputTokens),usage:e.usage,turnId:e.turnId,modelId:e.modelId}))})),r.push(e.on("session:switched",t=>{if(!t.sessionId)return;if(t.clientMsgId&&t.fromSessionId){var r;null==(r=ac(t.fromSessionId))||r.getState().dropOptimisticSend(t.clientMsgId)}let n=as(t.sessionId),a=rU.getState().activeProject;n&&a&&e.send({type:"subscribe",sessionId:n,projectId:a.id})})),r.push(e.on("session:compacted",e=>{var t,r;let n=ad(e.sessionId);if(!n)return;let a=null!=(t=e.message)?t:"Context compacted",s=n.getState();s.setCompacting(!1),l(n),s.setTokenUsage(null!=(r=e.contextTokens)?r:0,s.outputTokens),s.addMessage({id:(0,E.$C)(),role:"system",content:a,timestamp:Date.now()})}));let a=new Map;function s(e){l(e),a.set(e,setTimeout(()=>{a.delete(e),e.getState().setCompacting(!1)},6e4))}function l(e){let t=a.get(e);void 0!==t&&(clearTimeout(t),a.delete(e))}for(let t of(r.push(()=>{for(let e of a.values())clearTimeout(e);a.clear()}),r.push(e.on("chat:system",e=>{let t=ad(e.sessionId);if(!t)return;let r=t.getState(),n=e.text;if(!e.taskId){let e=n.match(/^Compacting context \((\d+)K tokens\)…$/);if(e&&(r.setCompacting(!0),s(t),"0"===e[1])){let e=t.getState().contextTokens;e>0&&(n="Compacting context (~".concat(Math.round(e/1e3),"K tokens)…"))}}r.addMessage({id:(0,E.$C)(),role:"system",content:n,timestamp:Date.now(),taskId:e.taskId,agentName:e.agentName})})),r.push(e.on("chat:queued",e=>{var t,r;null==(t=ad(e.sessionId))||t.getState().addMessage({id:(0,E.$C)(),role:"system",content:null!=(r=e.message)?r:"Message queued.",timestamp:Date.now()})})),["compact:progress","compact:started","compact:summarizing"]))r.push(e.on(t,e=>{let t=ad(e.sessionId,!1);t&&(t.getState().setCompacting(!0),s(t))}));return r.push(e.on("compact:done",e=>{let t=ad(e.sessionId,!1);t&&(t.getState().setCompacting(!1),l(t))})),()=>r.forEach(e=>e())}(p),function(e){let t=[];return t.push(e.on("agent:start",e=>{var t;let r=null==(t=ad(e.sessionId))?void 0:t.getState();r&&r.addMessage({id:(0,E.$C)(),role:"assistant",content:"",timestamp:Date.now(),streaming:!0,agentName:e.agentName,taskId:e.taskId})})),t.push(e.on("agent:done",e=>{var t;let r=null==(t=ad(e.sessionId))?void 0:t.getState();r&&r.completeAgentStreaming(e.agentName,e.taskId)})),t.push(e.on("agent:context",e=>{var t,r;let n=null==(t=ad(e.sessionId))?void 0:t.getState();n&&n.addMessage({id:(0,E.$C)(),role:"system",content:"[System Prompt: ".concat(null!=(r=e.agentName)?r:"Agent","]"),timestamp:Date.now(),agentName:e.agentName,taskId:e.taskId,systemPrompt:e.systemPrompt})})),t.push(e.on("agent:tool_call",e=>{var t,r,n,a;let s=null==(t=ad(e.sessionId))?void 0:t.getState();if(!s)return;let l=null!=(r=e.agentName)?r:"default",o="string"==typeof e.input?e.input:JSON.stringify(null!=(n=e.input)?n:{});s.addToolCallToLastAssistant({name:null!=(a=e.tool)?a:"",input:o,toolUseId:e.toolUseId},l,e.taskId,e.turnId)})),t.push(e.on("agent:tool_result",e=>{var t,r,n;let a=null==(t=ad(e.sessionId))?void 0:t.getState();if(!a)return;let s=null!=(r=e.agentName)?r:"default",l="string"==typeof e.result?e.result:JSON.stringify(null!=(n=e.result)?n:"");a.updateLastToolCallResult(l,s,e.taskId,e.toolUseId)})),()=>t.forEach(e=>e())}(p),function(e){let t=[];return t.push(e.on("file:changed",e=>{let t=d.Uw.getState();"add"===e.action||"addDir"===e.action?t.insertFileNode(e.path,"addDir"===e.action?"directory":"file"):("unlink"===e.action||"unlinkDir"===e.action)&&t.removeFileNode(e.path)})),()=>t.forEach(e=>e())}(p),function(e){let t=[];return t.push(e.on("state:snapshot",e=>{var t,r,n;let{snapshot:a}=e,s=ad(a.sessionId,!1);if(!s)return;let l=s.getState();if(a.sessionId){let e=null!=(t=a.archiveCount)?t:0;!function(e,t){var r,n;let a=n9(t=>t.store===e);if(!a)return;let s=Math.max(null!=(r=a.archiveCount)?r:0,t);(a.loading||s!==(null!=(n=a.archiveCount)?n:0))&&n7(a.tabId,{loading:!1,archiveCount:s})}(s,e),s===n$()&&nX(a.sessionId,e)}a.agentId&&l.setSelectedAgentId(a.agentId),void 0!==a.accessLevel&&l.setAccessLevel(null!=(r=a.accessLevel)?r:"full");let o=s.getState().messages.some(e=>e.streaming&&!nI(e)),i=null!=(n=a.recentMessages)?n:a.messages;i&&a.sessionId&&l.noteSnapshot(a.sessionId,i),!o&&i&&i.length>0&&l.setMessages(ib(s.getState().messages,i)),"number"==typeof a.maxContextTokens&&a.maxContextTokens>0&&l.setMaxContextTokens(a.maxContextTokens)})),t.push(e.on("exchange:deleted",t=>{var r;let{sessionId:n,deletedIds:a,userOrdinal:s,userRows:l}=t,o=ad(n,!1);if(!o||o.getState().markDeleted(a,s,l))return;let i=null==(r=rU.getState().activeProject)?void 0:r.id;i&&e.send({type:"subscribe",sessionId:n,projectId:i})})),t.push(e.on("listener:released",t=>{let{sessionId:r}=t,n=rU.getState().activeProject;if(!(null==n?void 0:n.id)||!r)return;let a=ac(r);if(a){if(a!==n$())return void function(e){let{tabs:t,activeTabId:r}=n2.getState(),n=t.find(t=>t.sessionId===e);n&&n.tabId!==r&&au(n)}(r);e.send({type:"subscribe",sessionId:r,projectId:n.id})}})),t.push(e.on("session:changed",()=>aT())),t.push(h(e,()=>aT())),t.push(e.on("goal:changed",()=>{var e;let t=null==(e=rU.getState().activeProject)?void 0:e.id;t&&ah(t),aT()})),t.push(e.on("extension:changed",e=>{let{extensions:t,disabled:r,errors:n}=e;eh({extensions:t,disabled:r,errors:n}),lq()})),t.push(h(e,()=>{u.FH.extensions.list().then(eh).catch(()=>{})})),t.push(e.on("skills:changed",()=>lq())),t.push(e.on("models:changed",()=>s$())),t.push(h(e,()=>s$())),()=>t.forEach(e=>e())}(p)],r=()=>p.reconnectIfStale(0);window.addEventListener("online",r);let s=0,l=()=>{if(document.hidden){s=Date.now();return}s>0&&Date.now()-s>=3e5&&p.reconnectIfStale(45e3),s=0};document.addEventListener("visibilitychange",l);let o=setInterval(()=>{n(p.connected?p.lastReceiveAgeMs>45e3?"stale":"fresh":"down")},5e3);return()=>{e.forEach(e=>e()),window.removeEventListener("online",r),document.removeEventListener("visibilitychange",l),clearInterval(o),p.disconnect(),a.current=!1}},[]),{connected:e,linkState:r,send:(0,o.useCallback)(e=>{p.send(e)},[])}}(),[t,r]=(0,o.useState)("checking");(0,o.useEffect)(()=>{fetch("/api/auth/check",{credentials:"include"}).then(async e=>{let t=await e.json().catch(()=>null);var n=null==t?void 0:t.badge;let a="string"==typeof n&&n.trim()?n.trim():null;a&&!dB&&(dB=a,document.title=dW()+document.title,function(e){let t=document.createElement("canvas");t.width=64,t.height=64;let r=t.getContext("2d");if(!r)return;r.beginPath(),r.moveTo(14.08,0),r.arcTo(64,0,64,64,14.08),r.arcTo(64,64,0,64,14.08),r.arcTo(0,64,0,0,14.08),r.arcTo(0,0,64,0,14.08),r.closePath();let n=r.createLinearGradient(0,0,64,64);n.addColorStop(0,"#0e1430"),n.addColorStop(1,"#070a16"),r.fillStyle=n,r.fill(),r.clip();for(let[e,t]of[[8.96,.55],[13.44,.3]])r.beginPath(),r.arc(32,21.12,e,0,2*Math.PI),r.strokeStyle="rgba(125, 140, 255, ".concat(t,")"),r.lineWidth=2.24,r.stroke();let a=r.createRadialGradient(32,21.12,0,32,21.12,6.4);a.addColorStop(0,"#d8e6ff"),a.addColorStop(1,"#8aa6ff"),r.beginPath(),r.arc(32,21.12,6.4,0,2*Math.PI),r.fillStyle=a,r.fill();r.fillStyle="#e8401c",r.fillRect(0,64-26.88,64,26.88),r.fillStyle="#ffffff",r.textAlign="center",r.textBaseline="middle";let s=Math.round(22.0416);r.font="bold ".concat(s,"px system-ui, sans-serif");for(;s>8&&r.measureText(e).width>58.88;)s-=1,r.font="bold ".concat(s,"px system-ui, sans-serif");r.fillText(e,32,51.56),document.querySelectorAll('link[rel="icon"]').forEach(e=>e.remove());let l=document.createElement("link");l.rel="icon",l.type="image/png",l.href=t.toDataURL("image/png"),document.head.appendChild(l)}(a.slice(0,4))),ap.getState().setEnabled(e.ok&&(null==t?void 0:t.goalModeEnabled)===!0),r(e.ok?"authenticated":"login")}).catch(()=>{r("login")})},[]),(0,o.useEffect)(()=>p.on("_auth_expired",()=>{r("login")}),[]);let n=(0,o.useCallback)(()=>{r("authenticated"),window.location.reload()},[]);return"checking"===t?(0,l.jsx)("div",{className:"flex h-screen w-screen items-center justify-center bg-[var(--background)]",children:(0,l.jsx)("div",{className:"text-sm text-[var(--muted-foreground)]",children:"Loading..."})}):"login"===t?(0,l.jsx)(d3,{onSuccess:n}):(0,l.jsx)("div",{className:"h-screen w-screen overflow-hidden bg-[var(--background)]",children:(0,l.jsx)(dq,{linkState:e})})}},79906:(e,t,r)=>{"use strict";r.d(t,{p:()=>i});var n=r(41440),a=r(54604),s=r(9239),l=r(40909),o=r(17119);function i(e){let{src:t,alt:r,className:i,placeholderClassName:c,onLoad:d,onError:u,...m}=e,p=(0,o.kj)(),h=(0,a.useRef)(null),[f,x]=(0,a.useState)({src:t,status:"loading"}),g=t?f.src===t?f.status:"loading":"error";(0,a.useLayoutEffect)(()=>{let e=h.current;(null==e?void 0:e.complete)&&e.naturalWidth>0&&x({src:t,status:"loaded"})},[t]);let v="loaded"!==g;return(0,n.jsx)("span",{role:"error"===g?"img":void 0,"aria-label":"error"===g?r||p("common.imageUnavailable"):void 0,"aria-busy":"loading"===g||void 0,title:"error"===g&&r?r:void 0,className:(0,l.cn)("contents",v&&"relative inline-flex max-w-full items-center justify-center overflow-hidden rounded align-middle bg-[var(--secondary)]/40 text-[var(--muted-foreground)]",v&&(null!=c?c:"aspect-video w-64"),"loading"===g&&"animate-pulse","error"===g&&"flex-col gap-1.5 border border-[var(--border)] p-2 text-center text-xs"),children:"error"===g?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.A,{className:"h-5 w-5 shrink-0"}),(0,n.jsx)("span",{children:p("common.imageUnavailable")})]}):(0,n.jsx)("img",{ref:h,src:t,alt:r,...m,className:(0,l.cn)(i,"loading"===g&&"absolute inset-0 h-full w-full opacity-0")||void 0,onLoad:e=>{x({src:t,status:"loaded"}),null==d||d(e)},onError:e=>{x({src:t,status:"error"}),null==u||u(e)}},String(t))})}}},e=>{e.O(0,[7772,4560,1607,1989,1946,9698,7358],()=>e(e.s=44652)),_N_E=e.O()}]);