@surething/cockpit 1.0.247 → 1.0.249

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 (45) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +1 -1
  3. package/.next-prod/build-manifest.json +2 -2
  4. package/.next-prod/prerender-manifest.json +3 -3
  5. package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next-prod/server/app/_global-error.html +1 -1
  7. package/.next-prod/server/app/_global-error.rsc +1 -1
  8. package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next-prod/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  11. package/.next-prod/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next-prod/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next-prod/server/app/_not-found.html +2 -2
  16. package/.next-prod/server/app/_not-found.rsc +3 -3
  17. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +3 -3
  18. package/.next-prod/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +3 -3
  20. package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next-prod/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next-prod/server/app/m/page_client-reference-manifest.js +1 -1
  24. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  25. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  26. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  27. package/.next-prod/server/app-paths-manifest.json +1 -1
  28. package/.next-prod/server/chunks/4848.js +68 -16
  29. package/.next-prod/server/chunks/6038.js +1 -1
  30. package/.next-prod/server/chunks/9658.js +5 -5
  31. package/.next-prod/server/middleware-build-manifest.js +1 -1
  32. package/.next-prod/server/pages/404.html +2 -2
  33. package/.next-prod/server/pages/500.html +1 -1
  34. package/.next-prod/server/server-reference-manifest.json +1 -1
  35. package/.next-prod/static/chunks/{6784-59c6418d36cf5a13.js → 6784-4a7131705a94a485.js} +0 -0
  36. package/.next-prod/static/chunks/{8010-75928e3e1e85c88e.js → 8010-c6ac47f8859f0e7c.js} +3 -3
  37. package/.next-prod/static/chunks/{9530-7b59ce2b030911c6.js → 9530-65205a67308b45d2.js} +1 -1
  38. package/.next-prod/static/css/6fc5b80292e2e015.css +1 -0
  39. package/.next-prod/trace +14 -14
  40. package/.next-prod/trace-build +1 -1
  41. package/dist/scheduledTasks.mjs +121 -78
  42. package/package.json +2 -1
  43. package/.next-prod/static/css/546386ec7f3b9978.css +0 -1
  44. /package/.next-prod/static/{CQYkjM0s2vhvvRjWjJ865 → OzKv3t56RBO_kvWsx59tl}/_buildManifest.js +0 -0
  45. /package/.next-prod/static/{CQYkjM0s2vhvvRjWjJ865 → OzKv3t56RBO_kvWsx59tl}/_ssgManifest.js +0 -0
@@ -372,7 +372,7 @@
372
372
  try { if (ws) ws.close(); } catch (e) {}
373
373
  });
374
374
  })();
375
- `;function s(e){return/^([/\\]|[A-Za-z]:)/.test(e)}function l(e,t){let n=e.replace(/[/\\]+$/,"");return t?`${n}/${t}`:n}function o(e,t){let n,r=(n=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\")))<0?"":0===n?"/":e.slice(0,n);return s(e)?r:t?l(t,r):r}function a(e,t){return s(e)||!!t}function i(e,t){let n=e.trim();return"/apps/local/"+(s(n)?n:l(t??"",n)).replace(/\\/g,"/").split("/").map(encodeURIComponent).join("/").replace(/^\//,"")}let c=/\.(md|png|jpe?g|gif|webp|svg|pdf|json)$/i;function d(e){return c.test(e.trim())}function u(e,t){let n=e.trim();return"/apps/builtin/file-viewer/index.html?file="+encodeURIComponent((s(n)?n:l(t??"",n)).replace(/\\/g,"/"))}function h(e,t){let n=e=>JSON.stringify(e).replace(/</g,"\\u003c"),s="<script>"+r.replaceAll("__CWD__",n(t.cwd)).replaceAll("__WS_URL__",n(t.wsUrl??""))+"<\/script>",l=e.match(/<head[^>]*>/i);if(l&&void 0!==l.index){let t=l.index+l[0].length;return e.slice(0,t)+s+e.slice(t)}let o=e.match(/<html[^>]*>/i);if(o&&void 0!==o.index){let t=o.index+o[0].length;return e.slice(0,t)+s+e.slice(t)}return s+e}},37614:(e,t,n)=>{n.d(t,{t:()=>o});var r=n(95155),s=n(12115),l=n(79114);function o({x:e,y:t,comment:n,container:a,onClose:i,onUpdateComment:c,onDeleteComment:d}){let{t:u}=(0,l.Bd)(),[h,m]=(0,s.useState)(!1),[f,p]=(0,s.useState)(n.content),x=(0,s.useRef)(null),[g,b]=(0,s.useState)({x:0,y:0});(0,s.useEffect)(()=>{if(x.current&&a){let n=a.getBoundingClientRect(),r=x.current.getBoundingClientRect(),s=e-n.left,l=t-n.top;s+r.width>n.width-16&&(s=n.width-r.width-16),s<16&&(s=16),l+r.height>n.height-16&&(l=l-r.height-8),l<16&&(l=16),queueMicrotask(()=>b({x:s,y:l}))}},[e,t,a]),(0,s.useEffect)(()=>{let e=e=>{x.current&&!x.current.contains(e.target)&&i()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[i]);let v=async()=>{f.trim()&&(await c(n.id,f.trim()),m(!1))},w=async()=>{await d(n.id),i()};return(0,r.jsx)("div",{ref:x,className:"absolute z-[200] w-96 bg-card border border-border rounded-lg shadow-lg overflow-hidden",style:{left:g.x,top:g.y},children:(0,r.jsx)("div",{className:"p-3",children:h?(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("textarea",{value:f,onChange:e=>p(e.target.value),className:"w-full px-2 py-1.5 text-sm border border-border rounded bg-card resize-none focus:outline-none focus:ring-1 focus:ring-ring",rows:3,autoFocus:!0,onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),v()),"Escape"===e.key&&(m(!1),p(n.content))}}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)("button",{onClick:()=>{m(!1),p(n.content)},className:"px-2 py-1 text-xs text-muted-foreground hover:text-foreground",children:u("common.cancel")}),(0,r.jsx)("button",{onClick:v,className:"px-2 py-1 text-xs bg-brand text-white rounded hover:bg-brand/90",children:u("common.save")})]})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{className:"text-sm text-foreground whitespace-pre-wrap",children:n.content}),(0,r.jsxs)("div",{className:"mt-2 flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:u("comments.lineRange",{start:n.startLine,end:n.endLine})}),(0,r.jsxs)("div",{className:"flex gap-1",children:[(0,r.jsx)("button",{onClick:()=>m(!0),className:"p-1 rounded hover:bg-accent text-muted-foreground",title:u("common.edit"),children:(0,r.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})})}),(0,r.jsx)("button",{onClick:w,className:"p-1 rounded hover:bg-accent text-muted-foreground hover:text-red-9",title:u("common.delete"),children:(0,r.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})})})]})]})]})})})}},38175:(e,t,n)=>{n.d(t,{E:()=>u});var r=n(95155),s=n(12115),l=n(48347),o=n(89109),a=n(7320),i=n(34582),c=n(1058),d=n(90717);function u({content:e,filePath:t,cwd:n,onContentSearch:h}){let m=(0,l.r)(),f=!!n,p=(0,s.useMemo)(()=>{if((0,i.qF)(t,n))return{mode:"url",url:(0,i.Xe)(t,n)};let r=e??"",s=(0,i.J4)(t,n),l="https:"===window.location.protocol?"wss:":"ws:",o=`${l}//${window.location.host}/ws/bash?cwd=${encodeURIComponent(s)}`;return{mode:"srcdoc",html:(0,i.OP)(r,{cwd:s,wsUrl:o})}},[e,t,n]),{addComment:x,refresh:g}=(0,c._)({cwd:n||"",filePath:t}),[b,v]=(0,s.useState)(null),w=(0,s.useRef)(null),y=(0,s.useRef)(null),k=(0,s.useRef)(()=>{}),[j,C]=(0,s.useState)(null),[N,S]=(0,s.useState)(null),E=(0,s.useRef)(!1);(0,s.useEffect)(()=>{E.current=!!(j||N)},[j,N]);let L=(0,s.useCallback)(()=>{y.current&&(y.current=null,k.current())},[]),M=(0,s.useCallback)(()=>{if(!f)return;let e=w.current,t=e?.contentDocument;e&&t&&(t.addEventListener("mouseup",t=>{if(E.current)return;let n=e.contentWindow?.getSelection(),r=n&&!n.isCollapsed?n.toString().trim():"";if(!r)return void L();let s=e.getBoundingClientRect();y.current={x:s.left+t.clientX,y:s.top+t.clientY,range:{start:0,end:0},selectedText:r,lineSnapshot:r},k.current()}),t.addEventListener("mousedown",()=>{L(),C(null),S(null)}),t.addEventListener("scroll",()=>L(),{capture:!0,passive:!0}))},[f,L]),R=(0,s.useCallback)(()=>{let e=y.current;e&&(C({x:e.x,y:e.y,text:e.selectedText}),L(),w.current?.contentWindow?.getSelection()?.removeAllRanges())},[L]),T=(0,s.useCallback)(()=>{let e=y.current;e&&(S({x:e.x,y:e.y,text:e.selectedText}),L(),w.current?.contentWindow?.getSelection()?.removeAllRanges())},[L]),$=(0,s.useCallback)(()=>{let e=y.current;if(!e||!h)return;let t=e.selectedText.trim();L(),w.current?.contentWindow?.getSelection()?.removeAllRanges(),t&&h(t)},[h,L]),I=(0,s.useCallback)(async e=>{j&&(await x(0,0,e,j.text),C(null))},[j,x]),P=(0,s.useCallback)(async(e,r)=>{if(m&&n)try{let s=(await (0,d.$3)(n)).map(e=>({filePath:e.filePath,startLine:e.startLine,endLine:e.endLine,codeContent:e.codeContent,note:e.content||void 0}));s.push({filePath:t,startLine:0,endLine:0,codeContent:e});let l=(0,d.Gw)(s,r);m.sendMessage(l),await (0,d.RP)(n),g()}catch(e){console.error("[HtmlPreview] send to AI failed:",e)}},[m,n,t,g]),A=(0,s.useCallback)(e=>{N&&P(N.text,e)},[N,P]),_=(0,s.useCallback)(e=>{j&&P(j.text,e)},[j,P]);return(0,r.jsxs)("div",{ref:v,className:"relative h-full w-full bg-white",children:[(0,r.jsx)("iframe",{ref:w,..."url"===p.mode?{src:p.url}:{srcDoc:p.html},title:t,className:"h-full w-full border-0",onLoad:M},t),f&&b&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.f,{floatingToolbarRef:y,bumpRef:k,container:b,onAddComment:R,onSendToAI:T,onSearch:h?$:void 0,isChatLoading:m?.isLoading}),j&&(0,r.jsx)(a.t,{x:j.x,y:j.y,range:{start:0,end:0},filePath:t,lineSnapshot:j.text,container:b,onSubmit:I,onSendToAI:m?_:void 0,onClose:()=>C(null),isChatLoading:m?.isLoading}),N&&(0,r.jsx)(a.G,{x:N.x,y:N.y,range:{start:0,end:0},filePath:t,lineSnapshot:N.text,container:b,onSubmit:A,onClose:()=>S(null),isChatLoading:m?.isLoading})]})]})}},38408:(e,t,n)=>{n.d(t,{Cv:()=>P,XO:()=>A});var r=n(95155),s=n(12115),l=n(79114),o=n(47650),a=n(86957),i=n(60938),c=n(70188),d=n(7320),u=n(56978),h=n(17196),m=n(89109),f=n(37614),p=n(69809),x=n(64428);function g({blame:e,onClick:t}){let{t:n}=(0,l.Bd)(),o=(0,s.useRef)(null),a=(0,s.useRef)(null),i=(0,x.F2)(),c=(0,s.useRef)(!1),d=(0,s.useRef)(!1),u=(0,s.useRef)(null),h=(0,s.useRef)(null),m=(0,s.useRef)(null),f=(0,s.useRef)(e);(0,s.useEffect)(()=>{f.current=e},[e]);let b=(0,s.useRef)(t);(0,s.useEffect)(()=>{b.current=t},[t]);let v=(0,s.useCallback)(()=>{let e,t=a.current,n=o.current;if(!t||!n)return;let r=n.getBoundingClientRect(),s=t.getBoundingClientRect(),l=i?.getBoundingClientRect(),c=l?.left??0,d=l?.top??0,u=l?.width??window.innerWidth,h=l?.height??window.innerHeight,m=r.left-c;m+s.width>u-8&&(m=u-s.width-8),m<8&&(m=8);let f=r.top-d,p=r.bottom-d;(e=f-s.height-4<0?p+4:f-s.height-4)+s.height>h-8&&(e=h-s.height-8),t.style.left=`${m}px`,t.style.top=`${e}px`},[i]),w=(0,s.useCallback)(()=>{u.current&&(clearTimeout(u.current),u.current=null),h.current&&(clearTimeout(h.current),h.current=null),c.current=!1,d.current=!1,a.current&&(a.current.style.display="none"),m.current&&(document.removeEventListener("mousedown",m.current.down),document.removeEventListener("mouseup",m.current.up),m.current=null)},[]),y=(0,s.useCallback)(()=>{let e=a.current;if(!e||c.current)return;c.current=!0,e.style.left="-9999px",e.style.top="-9999px",e.style.display="block",requestAnimationFrame(()=>requestAnimationFrame(v));let t=0,n=0,r=e=>{t=e.clientX,n=e.clientY},s=e=>{if(!(Math.abs(e.clientX-t)>5||Math.abs(e.clientY-n)>5)){let t;t=e.target,a.current?.contains(t)||o.current?.contains(t)||w()}};document.addEventListener("mousedown",r),document.addEventListener("mouseup",s),m.current={down:r,up:s}},[v,w]),k=(0,s.useCallback)(()=>{if(u.current&&clearTimeout(u.current),h.current&&(clearTimeout(h.current),h.current=null),c.current)return;let e=window.getSelection();(!e||e.isCollapsed)&&(u.current=setTimeout(y,500))},[y]),j=(0,s.useCallback)(()=>{u.current&&(clearTimeout(u.current),u.current=null),c.current&&(h.current=setTimeout(()=>{d.current||w()},200))},[w]),C=(0,s.useCallback)(()=>{d.current=!0,h.current&&(clearTimeout(h.current),h.current=null)},[]),N=(0,s.useCallback)(()=>{d.current=!1,w()},[w]),S=(0,s.useCallback)(e=>{e.stopPropagation();let t=window.getSelection();t&&t.toString().length>0&&a.current?.contains(t.anchorNode)||(b.current?.(f.current),w())},[w]);(0,s.useEffect)(()=>()=>w(),[w]);let E=e.message.split("\n")[0]||"",L=e.message.split("\n").slice(1).join("\n").trim();return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("span",{ref:o,className:"select-none text-xs text-muted-foreground/50 ml-6 cursor-default hover:text-muted-foreground/80",onMouseEnter:k,onMouseLeave:j,children:[e.author.split(" ")[0],", ",function(e){let t=p.A.t,n=Math.floor((Date.now()-1e3*e)/1e3);if(n<60)return t("common.justNow");let r=Math.floor(n/60);if(r<60)return t("common.minutesAgo",{count:r});let s=Math.floor(r/60);if(s<24)return t("common.hoursAgo",{count:s});let l=Math.floor(s/24);if(l<30)return t("common.daysAgo",{count:l});let o=Math.floor(l/30);return o<12?t("common.monthsAgo",{count:o}):t("common.yearsAgo",{count:Math.floor(o/12)})}(e.time)," \xb7 ",E]}),(0,r.jsx)(x.ZL,{children:(0,r.jsxs)("div",{ref:a,className:"fixed z-[9999] bg-card border border-border rounded-lg shadow-xl p-3 text-xs text-foreground whitespace-pre-wrap max-w-md select-text",style:{display:"none",minWidth:280,cursor:"text"},"data-inline-blame-tip":"",onMouseEnter:C,onMouseLeave:N,children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,r.jsx)("span",{className:"font-mono text-brand",children:e.hash}),(0,r.jsx)("span",{className:"text-muted-foreground",children:e.author}),(0,r.jsx)("span",{className:"text-muted-foreground/60",children:new Date(1e3*e.time).toLocaleString()})]}),(0,r.jsx)("div",{className:"font-medium",children:E}),L&&(0,r.jsx)("div",{className:"mt-1 text-muted-foreground",children:L}),(0,r.jsx)("div",{className:"mt-2 text-[11px] text-brand border-t border-border pt-2 cursor-pointer hover:underline",onClick:S,children:n("codeViewer.clickToViewDetails")})]})})]})}let b=[{bg:"rgba(59, 130, 246, 0.15)",border:"rgb(59, 130, 246)"},{bg:"rgba(16, 185, 129, 0.15)",border:"rgb(16, 185, 129)"},{bg:"rgba(245, 158, 11, 0.15)",border:"rgb(245, 158, 11)"},{bg:"rgba(239, 68, 68, 0.15)",border:"rgb(239, 68, 68)"},{bg:"rgba(168, 85, 247, 0.15)",border:"rgb(168, 85, 247)"},{bg:"rgba(236, 72, 153, 0.15)",border:"rgb(236, 72, 153)"},{bg:"rgba(20, 184, 166, 0.15)",border:"rgb(20, 184, 166)"},{bg:"rgba(249, 115, 22, 0.15)",border:"rgb(249, 115, 22)"}];function v(e,t){let n,r=document.caretRangeFromPoint(e.clientX,e.clientY);if(!r||!t.contains(r.startContainer))return 1;let s=r.startContainer,l=r.startOffset,o=document.createTreeWalker(t,NodeFilter.SHOW_TEXT),a=1;for(;n=o.nextNode();){if(n===s){a+=l;break}a+=n.textContent?.length||0}return a}let w=(0,s.memo)(function({virtualKey:e,lineNum:t,highlightedHtml:n,hasComments:o,firstComment:a,lineCommentsCount:i,isInRange:c,showLineNumbers:d,lineNumChars:u,commentsEnabled:h,virtualItemSize:m,virtualItemStart:f,onCommentBubbleClick:p,onCmdClick:x,onTokenHover:b,onTokenHoverLeave:w,flashLine:y,blameLine:k,showBlameInfo:j,blameAuthorColor:C,isBlameHovered:N,onBlameClick:S,onBlameMouseEnter:E,onBlameMouseLeave:L,inlineBlameData:M,onInlineBlameClick:R,isCursorLine:T,cursorCol:$}){let{t:I}=(0,l.Bd)(),P=(0,s.useMemo)(()=>T&&null!=$?function(e,t){let n=0,r=0;for(;r<e.length;){if("<"===e[r]){let t=e.indexOf(">",r);if(-1!==t){r=t+1;continue}}if(n===t){let t;if("&"===e[r]){let n=e.indexOf(";",r);t=-1!==n&&n-r<10?n+1:r+1}else t=r+1;let n=e.substring(r,t);return e.substring(0,r)+'<span class="vi-char-cursor">'+n+"</span>"+e.substring(t)}if("&"===e[r]){let t=e.indexOf(";",r);r=-1!==t&&t-r<10?t+1:r+1}else r++;n++}return e+'<span class="vi-char-cursor"> </span>'}(n,$):n,[n,T,$]),A=(0,s.useCallback)(e=>{if(!e.metaKey||!x)return;e.preventDefault(),e.stopPropagation();let n=e.currentTarget,r=v(e,n);window.getSelection()?.removeAllRanges(),x(t,r)},[t,x]),_=(0,s.useCallback)(e=>{if(!b||0!==e.buttons)return;let n=window.getSelection();if(n&&!n.isCollapsed)return;let r=e.target;if("SPAN"!==r.tagName||!r.style.color)return;let s=e.currentTarget,l=v(e,s),o=r.getBoundingClientRect();b(t,l,{x:o.left,y:o.bottom+4})},[t,b]),D=(0,s.useCallback)(()=>{k&&S&&S(k)},[k,S]),B=(0,s.useCallback)(e=>{k&&E&&E(k,e)},[k,E]);return(0,r.jsxs)("div",{"data-line":t,style:{position:"absolute",top:0,left:0,width:"100%",height:`${m}px`,transform:`translateY(${f}px)`,backgroundColor:N&&C?C.bg:void 0},className:`flex ${y===t?"flash-line":""} ${T?"vi-cursor-line":""} ${c?"bg-blue-9/20":o?"bg-amber-9/10":"hover:bg-accent/50"}`,children:[(0,r.jsxs)("div",{className:"flex shrink-0 sticky left-0 z-[2] bg-secondary",style:{backgroundColor:N&&C?C.bg:void 0},children:[k&&C&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"w-1 flex-shrink-0",style:{backgroundColor:C.border}}),(0,r.jsx)("div",{className:"w-48 flex-shrink-0 px-2 flex items-center gap-2 border-r border-border text-muted-foreground cursor-pointer hover:bg-accent/50",onMouseEnter:B,onMouseLeave:L,onClick:D,title:I("codeViewer.clickToViewCommit"),children:j?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"font-medium",style:{color:C.border},children:k.hash}),(0,r.jsx)("span",{className:"truncate flex-1",children:k.author.split(" ")[0]})]}):null})]}),d&&(0,r.jsxs)("span",{className:`flex-shrink-0 flex items-center justify-end gap-0.5 pr-2 select-none border-r border-border font-variant-tabular ${c?"bg-blue-9/30 text-blue-11":"bg-card/50 text-slate-9"}`,children:[h&&o&&a&&(0,r.jsx)("button",{onClick:e=>p(a,e),className:"w-4 h-4 flex items-center justify-center rounded hover:bg-accent text-amber-9",title:I("codeViewer.nComments",{count:i}),children:(0,r.jsx)("svg",{className:"w-3 h-3",fill:"currentColor",viewBox:"0 0 20 20",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M18 10c0 3.866-3.582 7-8 7a8.841 8.841 0 01-4.083-.98L2 17l1.338-3.123C2.493 12.767 2 11.434 2 10c0-3.866 3.582-7 8-7s8 3.134 8 7zM7 9H5v2h2V9zm8 0h-2v2h2V9zM9 9h2v2H9V9z",clipRule:"evenodd"})})}),h&&!o&&(0,r.jsx)("span",{className:"w-4"}),(0,r.jsx)("span",{className:"text-right",style:{minWidth:`${u}ch`},children:t})]})]}),(0,r.jsxs)("span",{className:"flex-1 px-3 whitespace-pre select-text",onClick:A,onMouseOver:_,onMouseLeave:w,"data-code-content":!0,children:[(0,r.jsx)("span",{dangerouslySetInnerHTML:{__html:P}}),M&&(0,r.jsx)(g,{blame:M,onClick:R})]})]},e)});var y=n(64702),k=n(1058),j=n(90717),C=n(48347),N=n(27570);function S(e,t,n){let r,s=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),l=0;for(;(r=s.nextNode())&&r!==t;)l+=r.textContent.length;return l+n}function E(e,t){let n,r=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),s=t,l=null;for(;n=r.nextNode();){l=n;let e=n.textContent.length;if(s<=e)return{node:n,offset:s};s-=e}return l?{node:l,offset:l.textContent.length}:null}var L=n(82292),M=n(34075);let R="white-space:pre;padding:0 12px;min-height:20px;line-height:20px";function T(e){let t=window.getSelection();if(!t?.rangeCount)return null;let n=t.getRangeAt(0),r=n.startContainer;for(;r&&r.parentElement!==e;)r=r.parentElement;if(!r)return null;let s=Array.from(e.children).indexOf(r);if(s<0)return null;let l=document.createRange();return l.selectNodeContents(r),l.setEnd(n.startContainer,n.startOffset),{line:s,offset:l.toString().length}}function $(e,t){let n,r=e.children[t.line];if(!r)return;let s=document.createTreeWalker(r,NodeFilter.SHOW_TEXT),l=t.offset;for(;n=s.nextNode();){let e=n.textContent?.length||0;if(l<=e){let e=window.getSelection(),t=document.createRange();t.setStart(n,l),t.collapse(!0),e?.removeAllRanges(),e?.addRange(t);return}l-=e}let o=window.getSelection(),a=document.createRange();a.selectNodeContents(r),a.collapse(!1),o?.removeAllRanges(),o?.addRange(a)}function I(e){return e.map(e=>`<div style="${R}">${e}</div>`).join("")}let P=(0,s.forwardRef)(function({content:e,filePath:t,showLineNumbers:n=!0,showSearch:p=!0,className:x="",cwd:g,enableComments:v=!1,scrollToLine:P=null,scrollToLineAlign:A="center",onScrollToLineComplete:_,highlightKeyword:D=null,visibleLineRef:B,onCmdClick:W,onTokenHover:F,onTokenHoverLeave:O,onTokenHoverCancel:V,blameLines:z,inlineBlameLines:H,onSelectCommit:U,editable:q=!1,initialMtime:K,onEditorClose:G,onSaved:X,onEditorStateChange:Y,viMode:J=!1,onContentMutate:Z,onEnterInsertMode:Q,onViSave:ee,viStateRef:et,initialCursorLine:en,initialCursorCol:er,onInitialCursorSet:es,onContentSearch:el},eo){let{t:ea}=(0,l.Bd)(),ei=(0,s.useRef)(e),ec=(0,s.useRef)(!1),[ed,eu]=(0,s.useState)(!1),[eh,em]=(0,s.useState)(!1),[ef,ep]=(0,s.useState)(()=>e.split("\n").length),ex=(0,s.useRef)(e.split("\n").length),[eg,eb]=(0,s.useState)({show:!1}),ev=(0,s.useRef)(null),ew=(0,s.useRef)(null),ey=(0,s.useRef)(K),ek=(0,s.useRef)(null),ej=(0,s.useRef)(!1),eC=(0,s.useRef)(!1),{parentRef:eN,containerRef:eS,searchInputRef:eE,floatingToolbarRef:eL,suppressHoverRef:eM,bumpToolbarRef:eR,savedSelectionRef:eT,highlightedLines:e$,isMounted:eI,cmdHeld:eP,flashLine:eA,isSearchVisible:e_,searchQuery:eD,caseSensitive:eB,wholeWord:eW,currentMatchIndex:eF,viewingComment:eO,addCommentInput:eV,sendToAIInput:ez,aiBridge:eH,commentsEnabled:eU,updateComment:eq,deleteComment:eK,lines:eG,matches:eX,rowData:eY,virtualizer:eJ,commentsByEndLine:eZ,linesWithComments:eQ,setIsSearchVisible:e0,setSearchQuery:e1,setCaseSensitive:e2,setWholeWord:e5,setViewingComment:e4,setAddCommentInput:e3,setSendToAIInput:e8,goToNextMatch:e6,goToPrevMatch:e9,handleSearchKeyDown:e7,handleCommentBubbleClick:te,handleToolbarAddComment:tt,handleToolbarSendToAI:tn,handleToolbarSearch:tr,handleCommentSubmit:ts,handleSendToAISubmit:tl,handleCommentSendToAI:to,getHighlightedLineHtml:ta,suppressMatchScrollRef:ti,inlineBlameLineRef:tc,inlineBlameVersion:td}=function({content:e,filePath:t,showSearch:n=!0,cwd:r,enableComments:l=!1,scrollToLine:o=null,scrollToLineAlign:a="center",onScrollToLineComplete:i,visibleLineRef:c,onContentSearch:d}){let[m,f]=(0,s.useState)(!1),p=(0,s.useRef)(null),x=(0,s.useRef)(null),g=(0,s.useRef)(null),b=(0,C.r)();(0,s.useEffect)(()=>{f(!0)},[]);let[v,w]=(0,s.useState)(!1),[E,L]=(0,s.useState)(null),M=(0,s.useRef)(null),[R,T]=(0,s.useState)(!1),[$,I]=(0,s.useState)(""),[P,A]=(0,s.useState)(!1),[_,D]=(0,s.useState)(!1),[B,W]=(0,s.useState)(0),[F,O]=(0,s.useState)(0),V=(0,s.useRef)(!1),[z,H]=(0,s.useState)(null),U=(0,s.useRef)(!1),q=(0,s.useRef)(null),[K,G]=(0,s.useState)(null),[X,Y]=(0,s.useState)(null),J=(0,s.useMemo)(()=>e.split("\n"),[e]),[Z,Q]=(0,s.useState)(null);(0,s.useEffect)(()=>{p.current!==Z&&Q(p.current)});let ee=l&&!!r,{toolbarRef:et,bumpRef:en,clearToolbar:er}=(0,N.L)({enabled:ee,container:Z,resolveLineRange:e=>{if(!document.contains(e))return null;let t=e.nodeType===Node.TEXT_NODE?e.parentElement:e,n=t?.closest("[data-line]");if(!n)return null;let r=parseInt(n.getAttribute("data-line")||"0",10);return!Number.isFinite(r)||r<=0?null:{start:r,end:r}},buildLineSnapshot:({start:e,end:t})=>J.slice(e-1,t).join("\n")}),es=(0,s.useRef)(null),[el,eo]=(0,s.useState)(0),{comments:ea,addComment:ei,updateComment:ec,deleteComment:ed,refresh:eu}=(0,k._)({cwd:r||"",filePath:t}),eh=(0,u.C)(J,t),em=(0,s.useMemo)(()=>{let e=new Map;for(let t of ea){let n=t.endLine;e.has(n)||e.set(n,[]),e.get(n).push(t)}return e},[ea]),ef=(0,s.useMemo)(()=>{let e=new Set;for(let t of ea)for(let n=t.startLine;n<=t.endLine;n++)e.add(n);return e},[ea]),ep=(0,s.useMemo)(()=>(0,h.Np)(J,$,P,_),[J,$,P,_]);(0,s.useEffect)(()=>{ep.length>0&&W(0)},[ep.length,$,P,_]);let ex=(0,s.useMemo)(()=>{let e=[];for(let t=0;t<J.length;t++)e.push({type:"code",lineIndex:t});return e},[J.length]),eg=(0,y.Te)({count:ex.length,getScrollElement:()=>p.current,estimateSize:()=>20,overscan:10});(0,s.useEffect)(()=>{if(!c)return;let e=p.current;if(!e)return;let t=()=>{if(!eg.range)return;let t=e.scrollTop;for(let e of eg.getVirtualItems())if(e.start>=t){let t=ex[e.index];t?.type==="code"&&(c.current=t.lineIndex+1);return}};return e.addEventListener("scroll",t,{passive:!0}),t(),()=>e.removeEventListener("scroll",t)},[c,ex]),(0,s.useEffect)(()=>{let e=e=>{"Meta"===e.key&&w(!0)},t=e=>{"Meta"===e.key&&w(!1)},n=()=>w(!1);return window.addEventListener("keydown",e),window.addEventListener("keyup",t),window.addEventListener("blur",n),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",t),window.removeEventListener("blur",n)}},[]),(0,s.useEffect)(()=>{if(!n)return;let e=e=>{(e.metaKey||e.ctrlKey)&&"f"===e.key&&(e.preventDefault(),T(!0),setTimeout(()=>g.current?.focus(),0)),"Escape"===e.key&&(R?(T(!1),I("")):X?Y(null):K?G(null):et.current?er():z&&H(null))},t=x.current;if(t)return t.addEventListener("keydown",e),()=>t.removeEventListener("keydown",e)},[n,R,X,K,z]),(0,s.useEffect)(()=>{if(V.current){V.current=!1;return}if(ep.length>0&&B>=0&&B<ep.length){let e=ep[B],t=ex.findIndex(t=>"code"===t.type&&t.lineIndex===e.lineIndex);t>=0&&eg.scrollToIndex(t,{align:"center"})}},[B,ep,eg,ex,F]);let eb=(0,s.useCallback)(()=>{0!==ep.length&&(W(e=>(e+1)%ep.length),O(e=>e+1))},[ep.length]),ev=(0,s.useCallback)(()=>{0!==ep.length&&(W(e=>(e-1+ep.length)%ep.length),O(e=>e+1))},[ep.length]),ew=(0,s.useRef)(o);ew.current=o,(0,s.useEffect)(()=>{if(null!==ew.current&&ew.current>0&&ex.length>0){let e=ew.current,t=e-1,n=ex.findIndex(e=>"code"===e.type&&e.lineIndex===t);if(n>=0){let t=()=>{eg.scrollToIndex(n,{align:a}),"center"===a&&(M.current&&clearTimeout(M.current),L(e),M.current=setTimeout(()=>L(null),500)),i?.()};"start"===a?requestAnimationFrame(t):setTimeout(t,150)}}},[o,a,ex.length,eg,i]);let ey=(0,s.useCallback)(e=>{"Enter"===e.key&&(e.preventDefault(),e.shiftKey?ev():eb()),"Escape"===e.key&&(T(!1),I(""))},[eb,ev]),ek=(0,s.useCallback)((e,t)=>{ee&&(t.stopPropagation(),H({comment:e,x:t.clientX,y:t.clientY}),er(),G(null),Y(null))},[ee,er]);(0,s.useEffect)(()=>{if(!ee)return;let e=p.current,t=!1,n=()=>{t=!0,q.current=null,U.current=!0},r=()=>{t=!1;let e=window.getSelection();if(!e||e.isCollapsed||!e.toString().trim()){U.current=!1;return}let n=e.getRangeAt(0),r=p.current;if(!r||!r.contains(n.commonAncestorContainer))return;let s=n.startContainer,l=n.endContainer,o=(s.nodeType===Node.TEXT_NODE?s.parentElement:s)?.closest("[data-line]"),a=(l.nodeType===Node.TEXT_NODE?l.parentElement:l)?.closest("[data-line]");if(!o||!a)return;let i=parseInt(o.getAttribute("data-line")||"0",10),c=parseInt(a.getAttribute("data-line")||"0",10);i&&c&&(U.current=!0,q.current={startLine:i,startOffset:S(o,n.startContainer,n.startOffset),endLine:c,endOffset:S(a,n.endContainer,n.endOffset)})},s=()=>{if(t)return;let e=window.getSelection();e&&!e.isCollapsed&&e.toString().trim()||(q.current=null,U.current=!1)};return e?.addEventListener("mousedown",n),document.addEventListener("mouseup",r),document.addEventListener("selectionchange",s),()=>{e?.removeEventListener("mousedown",n),document.removeEventListener("mouseup",r),document.removeEventListener("selectionchange",s)}},[ee]),(0,s.useEffect)(()=>{let e=p.current;if(!e)return;let t=t=>{let n,r;if(!e.contains(t.target)){if(t.target.closest?.("[data-inline-blame-tip]"))return;null!==es.current&&(es.current=null,eo(e=>e+1));return}let s=window.getSelection();if(s&&!s.isCollapsed&&s.toString().trim())return;let l=(n=t.target,(r=n.closest?.("[data-line]"))?parseInt(r.getAttribute("data-line")||"0",10):null);l!==es.current&&(es.current=l,requestAnimationFrame(()=>eo(e=>e+1)))};return document.addEventListener("mouseup",t),()=>document.removeEventListener("mouseup",t)},[]);let ej=(0,s.useCallback)(()=>{let e=et.current;e&&(G({x:e.x,y:e.y,range:e.range,selectedText:e.selectedText,lineSnapshot:e.lineSnapshot}),er())},[er,et]),eC=(0,s.useCallback)(()=>{let e=et.current;e&&(Y({x:e.x,y:e.y,range:e.range,selectedText:e.selectedText,lineSnapshot:e.lineSnapshot}),er())},[er,et]),eN=(0,s.useCallback)(()=>{let e=et.current;if(!e||!d)return;let t=e.selectedText.trim();er(),t&&d(t)},[d,er,et]),eS=(0,s.useCallback)(async e=>{K&&(await ei(K.range.start,K.range.end,e,K.selectedText),G(null))},[K,ei]),eE=(0,s.useCallback)(async(e,n)=>{if(b&&r)try{let s=await (0,j.$3)(r),l=[];for(let e of s)l.push({filePath:e.filePath,startLine:e.startLine,endLine:e.endLine,codeContent:e.codeContent,note:e.content||void 0});l.push({filePath:t,startLine:e.range.start,endLine:e.range.end,codeContent:e.lineSnapshot});let o=(0,j.Gw)(l,n);b.sendMessage(o),await (0,j.RP)(r),eu()}catch(e){console.error("Failed to send to AI:",e)}},[b,t,r,eu]),eL=(0,s.useCallback)(e=>{X&&eE(X,e)},[X,eE]),eM=(0,s.useCallback)(e=>{K&&eE(K,e)},[K,eE]),eR=(0,s.useCallback)((e,t,n)=>{let r=J[e];if(!r)return t;let s=[];if($&&ep.length>0)for(let t of ep.filter(t=>t.lineIndex===e)){let n=ep[B]?.lineIndex===e&&ep[B]?.startCol===t.startCol;s.push({start:t.startCol,end:t.endCol,cls:n?"hl-cur":"hl-m"})}if(n&&!$&&n.length>=1){let e=n.toLowerCase(),t=r.toLowerCase(),l=0;for(;-1!==(l=t.indexOf(e,l));)s.push({start:l,end:l+n.length,cls:"hl-kw"}),l+=1}if(0===s.length)return t;s.sort((e,t)=>e.start-t.start||e.end-t.end);let l=[],o=0;for(let e of s){if(e.start<o)continue;e.start>o&&l.push((0,h.ZD)(r.substring(o,e.start)));let t=(0,h.ZD)(r.substring(e.start,e.end));l.push(`<span class="${e.cls}">${t}</span>`),o=e.end}if(o<r.length&&l.push((0,h.ZD)(r.substring(o))),t!==(0,h.ZD)(r)){let e=t;for(let t of s){let n=r.substring(t.start,t.end),s=(0,h.ZD)(n),l=s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=RegExp(`(?<=>)([^<]*?)(${l})`,""),a=`$1<span class="${t.cls}">${s}</span>`,i=e.replace(o,a);i.length>e.length+200||(e=i)}return e}return l.join("")},[$,ep,B,J]);return{parentRef:p,containerRef:x,searchInputRef:g,floatingToolbarRef:et,suppressHoverRef:U,savedSelectionRef:q,highlightedLines:eh,isMounted:m,cmdHeld:v,flashLine:E,isSearchVisible:R,searchQuery:$,caseSensitive:P,wholeWord:_,currentMatchIndex:B,viewingComment:z,bumpToolbarRef:en,addCommentInput:K,sendToAIInput:X,aiBridge:b,commentsEnabled:ee,comments:ea,updateComment:ec,deleteComment:ed,lines:J,matches:ep,rowData:ex,virtualizer:eg,commentsByEndLine:em,linesWithComments:ef,setIsSearchVisible:T,setSearchQuery:I,suppressMatchScrollRef:V,setCaseSensitive:A,setWholeWord:D,setViewingComment:H,setAddCommentInput:G,setSendToAIInput:Y,goToNextMatch:eb,goToPrevMatch:ev,handleSearchKeyDown:ey,handleCommentBubbleClick:ek,handleToolbarAddComment:ej,handleToolbarSendToAI:eC,handleToolbarSearch:eN,handleCommentSubmit:eS,handleSendToAISubmit:eL,handleCommentSendToAI:eM,getHighlightedLineHtml:eR,inlineBlameLineRef:es,inlineBlameVersion:el}}({content:e,filePath:t,showSearch:p,cwd:g,enableComments:!q&&v,scrollToLine:q?null:P,scrollToLineAlign:q?"center":A,onScrollToLineComplete:q?void 0:_,visibleLineRef:q?void 0:B,onContentSearch:el}),tu=(0,c.iN)(),th=(0,s.useRef)(null),tm=(0,s.useRef)(null),tf=(0,s.useRef)({line:0,col:0}),tp=(0,s.useRef)({line:0,col:0}),tx=function({lines:e,enabled:t,onContentChange:n,onEnterInsert:r,onSave:l,getVisibleLineCount:o,scrollToLine:a,onSearchExecute:i,onSearchNext:c,onSearchPrev:d,onSearchClear:u}){let[h,m]=(0,s.useState)("normal"),[f,p]=(0,s.useState)(-1),[x,g]=(0,s.useState)(0),[b,v]=(0,s.useState)(!1),[w,y]=(0,s.useState)(""),[k,j]=(0,s.useState)(""),[C,N]=(0,s.useState)(""),[S,E]=(0,s.useState)(""),L=(0,s.useRef)([]),M=(0,s.useRef)([]),R=(0,s.useRef)([]),T=(0,s.useRef)(null),$=(0,s.useRef)(e);(0,s.useEffect)(()=>{$.current=e}),(0,s.useEffect)(()=>{0!==e.length&&queueMicrotask(()=>p(t=>Math.min(t,e.length-1)))},[e.length]);let I=(0,s.useCallback)((e,t)=>Math.max(0,Math.min(t,Math.max(0,($.current[e]??"").length-1))),[]),P=(0,s.useRef)(e.length);(0,s.useEffect)(()=>{let t=Math.abs(e.length-P.current);P.current=e.length,t>10&&(queueMicrotask(()=>{p(-1),g(0),v(!1)}),L.current=[],M.current=[],R.current=[])},[e]);let A=(0,s.useCallback)(()=>{T.current&&(clearTimeout(T.current),T.current=null),y("")},[]),_=(0,s.useCallback)(()=>{T.current&&clearTimeout(T.current),T.current=setTimeout(()=>{y(""),T.current=null},500)},[]),D=(0,s.useCallback)((e,t)=>{L.current.push(t),M.current=[],v(!0),n(e.join("\n"))},[n]),B=(0,s.useCallback)((e,t)=>{let n=Math.max(0,Math.min(e,$.current.length-1));p(n),g(I(n,t??0)),a(n,"auto")},[a,I]),W=(0,s.useCallback)(e=>{p(t=>{let n=Math.max(0,Math.min(t+e,$.current.length-1));return a(n,"auto"),g(e=>Math.max(0,Math.min(e,Math.max(0,($.current[n]??"").length-1)))),n})},[a]),F=(0,s.useCallback)(()=>{let e=$.current,t=Math.min(f,e.length-1);if(0===e.length)return;let n=e[t];R.current=[n];let r=[...e];r.splice(t,1),0===r.length&&r.push("");let s=Math.min(t,r.length-1);D(r,{lineIndex:t,oldLines:[n],newLines:[],cursorLine:t}),p(s),g(0)},[f,D]),O=(0,s.useCallback)(()=>{let e=$.current,t=Math.min(f,e.length-1);e.length>0&&(R.current=[e[t]])},[f]),V=(0,s.useCallback)(()=>{let e=R.current;if(0===e.length)return;let t=$.current,n=Math.min(f,t.length-1)+1,r=[...t];r.splice(n,0,...e),D(r,{lineIndex:n,oldLines:[],newLines:[...e],cursorLine:f}),p(n),g(0),a(n,"auto")},[f,D,a]),z=(0,s.useCallback)(()=>{let e=$.current,t=Math.min(f,e.length-1),n=e[t];if(!n||0===n.length)return;let r=n.substring(1),s=[...e];s[t]=r,D(s,{lineIndex:t,oldLines:[n],newLines:[r],cursorLine:f})},[f,D]),H=(0,s.useCallback)(()=>{let e=L.current;if(0===e.length)return;let t=e.pop(),r=[...$.current];0===t.newLines.length&&t.oldLines.length>0?r.splice(t.lineIndex,0,...t.oldLines):0===t.oldLines.length&&t.newLines.length>0?(r.splice(t.lineIndex,t.newLines.length),0===r.length&&r.push("")):r.splice(t.lineIndex,t.newLines.length,...t.oldLines),M.current.push(t),n(r.join("\n")),p(Math.min(t.cursorLine,r.length-1)),a(Math.min(t.cursorLine,r.length-1),"auto"),0===e.length&&v(!1)},[n,a]),U=(0,s.useCallback)(()=>{let e=M.current;if(0===e.length)return;let t=e.pop(),r=[...$.current];0===t.newLines.length&&t.oldLines.length>0?(r.splice(t.lineIndex,t.oldLines.length),0===r.length&&r.push("")):0===t.oldLines.length&&t.newLines.length>0?r.splice(t.lineIndex,0,...t.newLines):r.splice(t.lineIndex,t.oldLines.length,...t.newLines),L.current.push(t),v(!0),n(r.join("\n"));let s=t.lineIndex+Math.max(0,t.newLines.length-1);p(Math.min(s,r.length-1)),a(Math.min(s,r.length-1),"auto")},[n,a]),q=(0,s.useCallback)(e=>{let t=$.current,n=Math.min(f,t.length-1);if("o"===e||"O"===e){let r="o"===e?n+1:n,s=[...t];s.splice(r,0,""),D(s,{lineIndex:r,oldLines:[],newLines:[""],cursorLine:f}),n=r,p(r)}m("insert"),r(n,x,e)},[f,x,D,r]),K=(0,s.useCallback)(()=>{m("normal"),A()},[A]),G=(0,s.useCallback)(()=>{m("command"),j("")},[]),X=(0,s.useCallback)(()=>{m("normal"),j("")},[]),Y=(0,s.useCallback)(()=>{m("search"),N("")},[]),J=(0,s.useCallback)(()=>{m("normal"),N("")},[]),Z=(0,s.useCallback)(e=>{let t=e.trim();if("w"===t){l?.(),m("normal"),j("");return}if("q"===t){m("normal"),j("");return}if("wq"===t){l?.(),m("normal"),j("");return}if("noh"===t||"nohlsearch"===t){u?.(),m("normal"),j("");return}let n=parseInt(t,10);if(!isNaN(n)&&n>0){let e=Math.min(n-1,$.current.length-1);p(e),a(e,"center"),m("normal"),j("");return}m("normal"),j("")},[l,u,a]),Q=(0,s.useCallback)(e=>{if(!e){m("normal"),N("");return}E(e),i?.(e),m("normal"),N("")},[i]),ee=(0,s.useCallback)(e=>{if(!t)return!1;let n=e.ctrlKey&&"c"===e.key&&!e.metaKey&&!e.shiftKey;if("insert"===h)return("Escape"===e.key||!!n)&&(K(),!0);if("command"===h)return!e.isComposing&&("Escape"===e.key||n?X():"Enter"===e.key?Z(k):"Backspace"===e.key?0===k.length?X():j(e=>e.slice(0,-1)):1!==e.key.length||e.metaKey||e.ctrlKey||j(t=>t+e.key),!0);if("search"===h)return!e.isComposing&&("Escape"===e.key||n?J():"Enter"===e.key?Q(C):"Backspace"===e.key?0===C.length?J():N(e=>e.slice(0,-1)):1!==e.key.length||e.metaKey||e.ctrlKey||N(t=>t+e.key),!0);if(f<0&&(p(0),g(0)),e.metaKey)return!1;if(e.ctrlKey)return"d"===e.key?(W(Math.max(1,Math.floor(o()/2))),A(),!0):"u"===e.key?(W(-Math.max(1,Math.floor(o()/2))),A(),!0):"r"===e.key&&(U(),A(),!0);let r=e.key,s=w+r;if("g"===s)return y("g"),_(),!0;if("gg"===s)return B(0),A(),!0;if("d"===s)return y("d"),_(),!0;if("dd"===s)return F(),A(),!0;if("y"===s)return y("y"),_(),!0;if("yy"===s)return O(),A(),!0;if(w&&s!==r&&A(),"j"===r||"ArrowDown"===r)return W(1),!0;if("k"===r||"ArrowUp"===r)return W(-1),!0;if("h"===r||"ArrowLeft"===r)return g(e=>Math.max(0,e-1)),!0;if("l"===r||"ArrowRight"===r){let e=Math.max(0,($.current[f]??"").length-1);return g(t=>Math.min(e,t+1)),!0}if("0"===r)return g(0),!0;if("$"===r)return g(Math.max(0,($.current[f]??"").length-1)),!0;if("^"===r){let e=($.current[f]??"").search(/\S/);return g(e>=0?e:0),!0}return"G"===r?(B($.current.length-1),!0):"x"===r?(z(),!0):"p"===r?(V(),!0):"u"===r?(H(),!0):"i"===r||"a"===r||"I"===r||"A"===r||"o"===r||"O"===r?(q(r),!0):"/"===r?(Y(),!0):"n"===r?(c?.(),!0):"N"===r?(d?.(),!0):":"===r?(G(),!0):"Escape"!==r&&1===r.length},[t,h,w,k,C,f,K,q,G,X,Y,J,Z,Q,W,B,o,F,O,V,z,H,U,A,_,c,d]);return{state:{mode:h,cursorLine:f,cursorCol:x,isDirty:b,keyBuffer:w,commandInput:k,searchInput:C,lastSearch:S},handleKeyDown:ee,enterNormal:K,enterInsert:q,setCursorLine:p,setCursorCol:g,setCommandInput:j,setSearchInput:N,setIsDirty:v,clearUndoHistory:(0,s.useCallback)(()=>{L.current=[],M.current=[]},[])}}({lines:eG,enabled:J&&!q,onContentChange:e=>{tf.current={line:tp.current.line,col:tp.current.col},Z?.(e)},onEnterInsert:(e,t,n)=>{let r=t;if("a"===n)r=t+1;else if("A"===n)r=(eG[e]??"").length;else if("I"===n){let t=(eG[e]??"").search(/\S/);r=t>=0?t:0}else("o"===n||"O"===n)&&(r=0);tf.current={line:e,col:r},Q?.(e)},onSave:ee,getVisibleLineCount:()=>{let e=eN.current;return e?Math.floor(e.clientHeight/20):20},scrollToLine:(e,t)=>{let n=eY.findIndex(t=>"code"===t.type&&t.lineIndex===e);n>=0&&eJ.scrollToIndex(n,{align:t||"auto"})},onSearchExecute:e=>{e1(e),e0(!1)},onSearchNext:e6,onSearchPrev:e9,onSearchClear:()=>{e1("")}});(0,s.useEffect)(()=>{et&&(et.current={cursorLine:tx.state.cursorLine,cursorCol:tx.state.cursorCol}),tp.current={line:tx.state.cursorLine,col:tx.state.cursorCol}},[et,tx.state.cursorLine,tx.state.cursorCol]);let tg=(0,s.useRef)(null);(0,s.useEffect)(()=>{J&&!q&&null!=en&&t&&tg.current!==t&&(tg.current=t,tx.setCursorLine(en-1),null!=er&&tx.setCursorCol(er-1),es?.())},[J,q,en,er,t]),(0,s.useEffect)(()=>{if(!J||q)return;let e=eS.current;if(!e)return;let t=e=>{let t=e.target;"TEXTAREA"===t.tagName||"INPUT"===t.tagName||t.isContentEditable||tx.handleKeyDown(e)&&(e.preventDefault(),e.stopPropagation())};return e.addEventListener("keydown",t,!0),()=>e.removeEventListener("keydown",t,!0)},[J,q,tx.handleKeyDown]),(0,s.useEffect)(()=>{if(!J||q)return;let e=eS.current;e&&"normal"===tx.state.mode&&requestAnimationFrame(()=>{let t=document.activeElement;t&&("TEXTAREA"===t.tagName||"INPUT"===t.tagName||t.isContentEditable)||e.focus()})},[J,q,tx.state.mode,e]);let tb=(0,s.useCallback)(e=>{if(!J||q)return;let t=e.target.closest("[data-line]");if(t){let n=parseInt(t.getAttribute("data-line"),10);if(!isNaN(n)){tx.setCursorLine(n-1);let r=t.querySelector("[data-code-content]");if(r){let t=document.caretRangeFromPoint(e.clientX,e.clientY);if(t&&r.contains(t.startContainer)){let e,s=document.createTreeWalker(r,NodeFilter.SHOW_TEXT),l=0;for(;e=s.nextNode();){if(e===t.startContainer){l+=t.startOffset;break}l+=e.textContent?.length||0}let o=eG[n-1]??"";tx.setCursorCol(Math.max(0,Math.min(l,Math.max(0,o.length-1))))}}}}let n=e.target;if("TEXTAREA"===n.tagName||"INPUT"===n.tagName||n.isContentEditable)return;let r=eS.current;r&&r.focus()},[J,q,tx.setCursorLine,tx.setCursorCol,eG]),tv=(0,s.useCallback)(e=>{J&&!q&&requestAnimationFrame(()=>{let e=window.getSelection(),t=e?.toString().trim();t&&/^\S+$/.test(t)&&(ti.current=!0,e1(t))})},[J,q,e1,ti]);(0,s.useEffect)(()=>{"command"===tx.state.mode?setTimeout(()=>th.current?.focus(),0):"search"===tx.state.mode&&setTimeout(()=>tm.current?.focus(),0)},[tx.state.mode]),(0,s.useEffect)(()=>{let e=eN.current;if(!e)return;let t=()=>{(V??O)?.()};return e.addEventListener("mousedown",t),()=>e.removeEventListener("mousedown",t)},[V,O]),(0,s.useEffect)(()=>{eV||ez?(eM.current=!0,O?.()):eL.current||(eM.current=!1)},[eV,ez,O]),(0,s.useLayoutEffect)(()=>{let e=eT.current;if(!e)return;let t=window.getSelection();if(t&&!t.isCollapsed)return;let n=eN.current;if(!n)return;let r=n.querySelector(`[data-line="${e.startLine}"]`),s=n.querySelector(`[data-line="${e.endLine}"]`);if(!r||!s)return;let l=E(r,e.startOffset),o=E(s,e.endOffset);if(l&&o)try{let e=document.createRange();e.setStart(l.node,l.offset),e.setEnd(o.node,o.offset),t?.removeAllRanges(),t?.addRange(e)}catch{}});let tw=(0,s.useCallback)((e,t,n)=>{eM.current||F?.(e,t,n)},[F]),ty=(0,s.useCallback)((e,t)=>{eM.current||W?.(e,t)},[W]),tk=Math.max(4,String(q?ef:eG.length).length),tj=(0,s.useMemo)(()=>{let e=0;for(let t of eG){let n=0;for(let e=0;e<t.length;e++)" "===t[e]?n+=2-n%2:n+=1;n>e&&(e=n)}return e},[eG]);(0,s.useEffect)(()=>{if(q){ei.current=e;let t=e.split("\n").length;ex.current=t,ep(t),ec.current=!1,eu(!1),eb({show:!1}),ey.current=K}},[q,e,K]),(0,s.useEffect)(()=>{if(!q)return;let t=ev.current;if(!t)return;let n=e.split("\n");t.innerHTML=I(n.map((e,t)=>e$[t]||(0,h.ZD)(e||" "))),requestAnimationFrame(()=>{let e,r;J?(e=Math.max(0,Math.min(tf.current.line,n.length-1)),r=tf.current.col):(e=Math.max(0,Math.min((B?.current??1)-1,n.length-1)),r=0),t.focus(),$(t,{line:e,offset:r});let s=B?.current??1;ew.current&&(ew.current.scrollTop=(s-1)*20)})},[q]),(0,s.useEffect)(()=>{q&&Y?.({isDirty:ed,isSaving:eh})},[q,ed,eh,Y]);let tC=(0,s.useCallback)(()=>{let e=ev.current;if(!e)return ei.current;let t=[];for(let n of e.childNodes){let e=n.textContent||"";t.push(" "===e?"":e)}return t.join("\n")},[]),tN=(0,s.useCallback)(()=>{ek.current&&clearTimeout(ek.current),ek.current=setTimeout(async()=>{let e=ev.current;if(e&&!eC.current){ei.current=tC();try{let n=await (0,h.kS)(),r=(0,h.sQ)(t),s=document.documentElement.classList.contains("dark"),l=ei.current.split("\n"),o=n.codeToTokens(l.join("\n"),{lang:r,theme:s?"github-dark":"github-light"}).tokens.map(e=>(0,h.b8)(e)),a=T(e);ej.current=!0,e.innerHTML=I(o),ej.current=!1,a&&$(e,a)}catch{}}},300)},[t,tC]);(0,s.useEffect)(()=>{if(q)return()=>{ek.current&&clearTimeout(ek.current)}},[q]);let tS=(0,s.useCallback)(()=>{let e=ev.current;if(!e)return;ec.current||(ec.current=!0,eu(!0));let t=e.children.length;t!==ex.current&&(ex.current=t,ep(t))},[]),tE=(0,s.useCallback)(()=>{ej.current||eC.current||(tS(),tN())},[tS,tN]),tL=(0,s.useCallback)(e=>{if(!e.nativeEvent.isComposing&&("Tab"===e.key&&(e.preventDefault(),document.execCommand("insertText",!1," ")),"Enter"===e.key)){e.preventDefault();let t=ev.current;if(!t)return;let n=window.getSelection();if(!n?.rangeCount)return;let r=n.getRangeAt(0);r.deleteContents();let s=r.startContainer;for(;s&&s.parentElement!==t;)s=s.parentElement;if(!s||!(s instanceof HTMLElement))return;let l=T(t),o=Array.from(t.children).indexOf(s),a=s.textContent||"",i=l?.offset??a.length,c=a.substring(0,i),d=a.substring(i);s.innerHTML=(0,h.ZD)(c||" ");let u=document.createElement("div");u.setAttribute("style",R),u.innerHTML=(0,h.ZD)(d||" "),s.after(u),$(t,{line:o+1,offset:0}),tS(),tN()}},[tS,tN]),tM=(0,s.useCallback)(e=>{e.preventDefault();let t=e.clipboardData.getData("text/plain");document.execCommand("insertText",!1,t)},[]),tR=(0,s.useCallback)(async(e=!1)=>{if(!g)return;ei.current=tC(),em(!0);let n=await a.t4.runPromiseExit((0,i.OJ)({cwd:g,path:t,content:ei.current,expectedMtime:e?void 0:ey.current}));if("Failure"===n._tag){console.error("Error saving file:",n.cause),(0,M.oR)(ea("toast.saveFailed"),"error"),em(!1);return}let r=n.value,s=r.data;if(409===r.status&&s?.conflict){let e=await a.t4.runPromiseExit((0,i.K9)(g,t));"Success"===e._tag&&e.value.ok&&"string"==typeof e.value.data?.content?eb({show:!0,diskContent:e.value.data.content}):eb({show:!0}),em(!1);return}if(!r.ok){console.error("Error saving file: status",r.status),(0,M.oR)(ea("toast.saveFailed"),"error"),em(!1);return}let l=s?.mtime;l&&(ey.current=l),ec.current=!1,eu(!1),eb({show:!1}),(0,M.oR)(ea("toast.savedSuccess"),"success"),X?.(),em(!1)},[g,t,tC,X,ea]),tT=(0,s.useCallback)(async()=>{ed&&!eh&&await tR(!1)},[ed,eh,tR]),t$=(0,s.useCallback)(async()=>{eb({show:!1}),await tR(!0)},[tR]),tI=(0,s.useCallback)(()=>{if(void 0!==eg.diskContent){ei.current=eg.diskContent;let t=eg.diskContent.split("\n").length;ex.current=t,ep(t);let n=eg.diskContent!==e;ec.current=n,eu(n);let r=ev.current;r&&(r.innerHTML=I(eg.diskContent.split("\n").map(e=>(0,h.ZD)(e||" "))),tN())}eb({show:!1}),X?.()},[eg.diskContent,e,X,tN]),tP=(0,s.useCallback)(()=>{let e=ew.current;return e?Math.floor(e.scrollTop/20)+1:B?.current??1},[B]),tA=(0,s.useCallback)(async()=>{(!ed||await (0,M.lJ)(ea("codeViewer.unsavedConfirm"),{danger:!0,confirmText:ea("codeViewer.discardChanges"),cancelText:ea("codeViewer.continueEditing")}))&&G?.(tP())},[ed,G,tP]);(0,s.useEffect)(()=>{if(!q)return;let e=e=>{(e.metaKey||e.ctrlKey)&&"s"===e.key&&(e.preventDefault(),tT())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[q,tT]);let t_=(0,s.useCallback)(()=>{let e=tC();Z?.(e);let t=ev.current,n=t?T(t):null,r=tP();if(tx.enterNormal(),n){tx.setCursorLine(n.line);let t=e.split("\n")[n.line]??"";tx.setCursorCol(Math.max(0,Math.min(n.offset,Math.max(0,t.length-1))))}else tx.setCursorLine(Math.max(0,r-1));G?.(r)},[tC,Z,tP,G,tx]);(0,s.useEffect)(()=>{if(!q)return;let e=e=>{let t="Escape"===e.key,n=e.ctrlKey&&"c"===e.key&&!e.metaKey&&!e.shiftKey;(t||J&&n)&&(e.preventDefault(),e.stopPropagation(),J?ec.current?(0,M.lJ)(ea("codeViewer.unsavedExitConfirm"),{danger:!0,confirmText:ea("codeViewer.discardChanges"),cancelText:ea("codeViewer.continueEditing")}).then(e=>{e&&t_()}):t_():tA())};return document.addEventListener("keydown",e,!0),()=>document.removeEventListener("keydown",e,!0)},[q,J,tA,t_]);let tD=(0,s.useCallback)(()=>{ec.current||(ec.current=!0,eu(!0))},[]);(0,s.useImperativeHandle)(eo,()=>({save:tT,close:tA,markDirty:tD,get isDirty(){return ec.current},get isSaving(){return eh}}),[tT,tA,tD,eh]);let tB=!!(z&&z.length>0),tW=(0,s.useMemo)(()=>{if(!z)return new Map;let e=[...new Set(z.map(e=>e.author))],t=new Map;return e.forEach((e,n)=>{t.set(e,b[n%b.length])}),t},[z]),[tF,tO]=(0,s.useState)(null),[tV,tz]=(0,s.useState)(null);(0,s.useEffect)(()=>{tO(null),tz(null)},[z]);let tH=(0,s.useCallback)((e,t)=>{tO(e.author);let n=t.currentTarget.getBoundingClientRect();tz({line:e,x:n.right+8,y:n.top})},[]),tU=(0,s.useCallback)(()=>{tO(null),tz(null)},[]),tq=(0,s.useCallback)(e=>{U&&(U({hash:e.hashFull,shortHash:e.hash,author:e.author,authorEmail:e.authorEmail,date:new Date(1e3*e.time).toISOString(),subject:e.message.split("\n")[0]||"",body:e.message.split("\n").slice(1).join("\n").trim(),time:e.time}),tz(null))},[U]),tK=`${tk+2}ch`;return(0,r.jsxs)("div",{ref:eS,className:`h-full flex flex-col outline-none ${x}`,tabIndex:0,onClick:tb,onDoubleClick:tv,children:[q&&eg.show&&(0,r.jsxs)("div",{className:"px-4 py-2 bg-amber-500/15 border-b border-amber-500/30 flex items-center gap-3 flex-shrink-0",children:[(0,r.jsx)("svg",{className:"w-5 h-5 text-amber-500 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z"})}),(0,r.jsx)("span",{className:"text-sm text-foreground flex-1",children:ea("codeViewer.fileModifiedExternally")}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("button",{onClick:tI,className:"px-3 py-1 text-sm rounded border border-border hover:bg-accent transition-colors",children:ea("codeViewer.useDiskVersion")}),(0,r.jsx)("button",{onClick:t$,className:"px-3 py-1 text-sm rounded bg-amber-500 text-white hover:bg-amber-600 transition-colors",children:ea("codeViewer.forceOverwrite")})]})]}),!q&&p&&e_&&(0,r.jsxs)("div",{className:"flex-shrink-0 flex items-center gap-2 px-3 py-2 bg-secondary border-b border-border",children:[(0,r.jsx)("input",{ref:eE,type:"text",value:eD,onChange:e=>e1(e.target.value),onKeyDown:e7,placeholder:ea("codeViewer.searchPlaceholder"),className:"flex-1 max-w-xs px-2 py-1 text-sm border border-border rounded bg-card text-foreground focus:outline-none focus:ring-2 focus:ring-ring"}),(0,r.jsx)("button",{onClick:()=>e2(!eB),className:`px-2 py-1 text-xs font-mono rounded border transition-colors ${eB?"bg-brand text-white border-brand":"border-border text-muted-foreground hover:bg-accent"}`,title:ea("codeViewer.caseSensitive"),children:"Aa"}),(0,r.jsx)("button",{onClick:()=>e5(!eW),className:`px-2 py-1 text-xs font-mono rounded border transition-colors ${eW?"bg-brand text-white border-brand":"border-border text-muted-foreground hover:bg-accent"}`,title:ea("codeViewer.wholeWordMatch"),children:"[ab]"}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:eX.length>0?`${eF+1}/${eX.length}`:ea("common.noMatch")}),(0,r.jsx)("button",{onClick:e9,disabled:0===eX.length,className:"p-1 rounded hover:bg-accent disabled:opacity-50",title:ea("common.previous"),children:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 15l7-7 7 7"})})}),(0,r.jsx)("button",{onClick:e6,disabled:0===eX.length,className:"p-1 rounded hover:bg-accent disabled:opacity-50",title:ea("common.next"),children:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})}),(0,r.jsx)("button",{onClick:()=>{e0(!1),e1("")},className:"p-1 rounded hover:bg-accent",title:ea("common.close"),children:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),q?(0,r.jsx)("div",{ref:ew,className:"flex-1 overflow-auto bg-secondary",children:(0,r.jsxs)("div",{className:"flex",style:{minHeight:"100%"},children:[(0,r.jsx)("div",{className:"flex-shrink-0 font-mono text-sm select-none sticky left-0 z-[2] bg-secondary",style:{width:tK},children:Array.from({length:ef},(e,t)=>(0,r.jsx)("div",{className:"text-right text-muted-foreground/50 pr-3",style:{height:20,lineHeight:"20px"},children:t+1},t))}),(0,r.jsx)("div",{ref:ev,contentEditable:!0,suppressContentEditableWarning:!0,onInput:tE,onKeyDown:tL,onPaste:tM,onCompositionStart:()=>{eC.current=!0},onCompositionEnd:()=>{eC.current=!1,tE()},spellCheck:!1,autoCorrect:"off",autoCapitalize:"off",className:"flex-1 font-mono text-sm outline-none",style:{caretColor:"var(--foreground)",tabSize:2}})]})}):(0,r.jsx)("div",{ref:eN,className:`flex-1 overflow-auto font-mono text-sm bg-secondary${eP?" cmd-held-container":""}`,children:(0,r.jsx)("div",{style:{height:`${eJ.getTotalSize()}px`,minWidth:"100%",width:tB?`calc(${tk+tj+10}ch + 13rem)`:`${tk+tj+10}ch`,position:"relative"},children:eJ.getVirtualItems().map(e=>{let t=eY[e.index];if("code"!==t.type)return null;let s=t.lineIndex,l=s+1,o=e$[s]||(0,h.ZD)(eG[s]||""),a=ta(s,o,D),i=eQ.has(l),c=eZ.get(l),d=c?.[0],u=!!(eV&&l>=eV.range.start&&l<=eV.range.end),m=td>=0?tc.current:null,f=!q&&H&&m===l?H[s]??null:null,p=tB?z[s]:void 0,x=tB&&s>0?z[s-1]:void 0,g=!!p&&(!x||x.hash!==p.hash),b=p?tW.get(p.author):void 0;return(0,r.jsx)(w,{virtualKey:e.key,lineNum:l,highlightedHtml:a,hasComments:i,firstComment:d,lineCommentsCount:c?.length,isInRange:u,showLineNumbers:n,lineNumChars:tk,commentsEnabled:eU,virtualItemSize:e.size,virtualItemStart:e.start,onCommentBubbleClick:te,onCmdClick:ty,onTokenHover:tw,onTokenHoverLeave:O,flashLine:eA,blameLine:p,showBlameInfo:g,blameAuthorColor:b,isBlameHovered:!!(p&&tF===p.author),onBlameClick:tq,onBlameMouseEnter:tH,onBlameMouseLeave:tU,inlineBlameData:f,onInlineBlameClick:tq,isCursorLine:J&&!q&&tx.state.cursorLine===s,cursorCol:J&&!q&&tx.state.cursorLine===s?tx.state.cursorCol:void 0},e.key)})})}),J&&(0,r.jsxs)("div",{className:"vi-status-bar flex-shrink-0 h-6 bg-card border-t border-border flex items-center px-3 text-xs font-mono select-none",children:["normal"===tx.state.mode&&(0,r.jsx)("span",{className:"text-green-11 font-medium",children:"NORMAL"}),"insert"===tx.state.mode&&(0,r.jsx)("span",{className:"text-blue-11 font-medium",children:"INSERT"}),"command"===tx.state.mode&&(0,r.jsxs)("div",{className:"flex items-center flex-1",children:[(0,r.jsx)("span",{className:"text-foreground",children:":"}),(0,r.jsx)("input",{ref:th,value:tx.state.commandInput,onChange:e=>tx.setCommandInput(e.target.value),onKeyDown:e=>{if(e.nativeEvent.isComposing)return;let t=e.ctrlKey&&"c"===e.key&&!e.metaKey&&!e.shiftKey;("Enter"===e.key||"Escape"===e.key||t)&&(e.preventDefault(),e.stopPropagation(),tx.handleKeyDown(e.nativeEvent))},className:"flex-1 bg-transparent outline-none text-foreground ml-0.5",spellCheck:!1,autoComplete:"off"})]}),"search"===tx.state.mode&&(0,r.jsxs)("div",{className:"flex items-center flex-1",children:[(0,r.jsx)("span",{className:"text-foreground",children:"/"}),(0,r.jsx)("input",{ref:tm,value:tx.state.searchInput,onChange:e=>tx.setSearchInput(e.target.value),onKeyDown:e=>{if(e.nativeEvent.isComposing)return;let t=e.ctrlKey&&"c"===e.key&&!e.metaKey&&!e.shiftKey;("Enter"===e.key||"Escape"===e.key||t)&&(e.preventDefault(),e.stopPropagation(),tx.handleKeyDown(e.nativeEvent))},className:"flex-1 bg-transparent outline-none text-foreground ml-0.5",spellCheck:!1,autoComplete:"off"})]}),tx.state.keyBuffer&&"normal"===tx.state.mode&&(0,r.jsx)("span",{className:"ml-2 text-muted-foreground",children:tx.state.keyBuffer}),tx.state.isDirty&&("normal"===tx.state.mode||"command"===tx.state.mode)&&(0,r.jsx)("span",{className:"ml-2 text-amber-11",children:"[+]"}),(0,r.jsxs)("span",{className:"ml-auto text-muted-foreground",children:[tx.state.cursorLine+1,":",tx.state.cursorCol+1]})]}),eI&&tu&&(0,o.createPortal)((0,r.jsxs)(r.Fragment,{children:[!q&&(0,r.jsx)(m.f,{floatingToolbarRef:eL,bumpRef:eR,container:tu,onAddComment:tt,onSendToAI:tn,onSearch:el?tr:void 0,isChatLoading:eH?.isLoading}),!q&&eV&&(0,r.jsx)(d.t,{x:eV.x,y:eV.y,range:eV.range,filePath:t,lineSnapshot:eV.lineSnapshot,container:tu,onSubmit:ts,onSendToAI:eH?to:void 0,onClose:()=>e3(null),isChatLoading:eH?.isLoading}),!q&&ez&&(0,r.jsx)(d.G,{x:ez.x,y:ez.y,range:ez.range,filePath:t,lineSnapshot:ez.lineSnapshot,container:tu,onSubmit:tl,onClose:()=>e8(null),isChatLoading:eH?.isLoading}),!q&&eO&&(0,r.jsx)(f.t,{x:eO.x,y:eO.y,comment:eO.comment,container:tu,onClose:()=>e4(null),onUpdateComment:eq,onDeleteComment:eK}),tV&&(0,r.jsxs)("div",{className:"fixed z-50 bg-card border border-border rounded-lg shadow-lg p-3 max-w-lg",style:{left:Math.min(tV.x,window.innerWidth-450),top:Math.max(8,Math.min(tV.y,window.innerHeight-200))},children:[(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("div",{className:"px-2 py-0.5 rounded text-xs font-mono font-medium text-white flex-shrink-0",style:{backgroundColor:tW.get(tV.line.author)?.border||"#666"},children:tV.line.hash}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("div",{className:"text-sm font-medium text-foreground",children:tV.line.author}),(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:tV.line.authorEmail})]})]}),(0,r.jsx)("div",{className:"mt-2 text-sm text-foreground whitespace-pre-wrap max-h-48 overflow-y-auto",children:tV.line.message}),(0,r.jsxs)("div",{className:"mt-2 text-xs text-muted-foreground border-t border-border pt-2",children:[(0,L.fw)(tV.line.time)," \xb7 ",new Date(1e3*tV.line.time).toLocaleString(),(0,r.jsx)("span",{className:"ml-2 text-brand",children:ea("codeViewer.clickToViewDetails")})]})]})]}),tu)]})});function A({content:e,filePath:t,className:n=""}){let l=(0,s.useMemo)(()=>e.split("\n"),[e]),o=(0,u.C)(l,t),a=Math.max(4,String(l.length).length);return(0,r.jsx)("pre",{className:`overflow-auto text-sm font-mono bg-secondary p-2 ${n}`,children:l.map((e,t)=>(0,r.jsxs)("div",{className:"flex",children:[(0,r.jsx)("span",{className:"text-slate-9 select-none pr-4 text-right",style:{minWidth:`${a+2}ch`},children:t+1}),(0,r.jsx)("span",{className:"flex-1",dangerouslySetInnerHTML:{__html:o[t]||(0,h.ZD)(e||" ")}})]},t))})}},38987:(e,t,n)=>{n.d(t,{zB:()=>$,e$:()=>T,vP:()=>E});var r=n(95155),s=n(12115),l=n(79114),o=n(49433),a=n(77725),i=n(62111),c=n(70188),d=n(64428),u=n(12710),h=n(33210),m=n(32967),f=n(88780),p=n(30133),x=n(48661),g=n(53377),b=n(47215),v=n(5135),w=n(24602),y=n(9573);let k=[/(^|\/)__tests__\//,/(^|\/)tests?\//,/\.(test|spec)\.[^/]+$/],j=[/\.(md|mdx)$/i,/(^|\/)docs\//,/(^|\/)README[^/]*$/i,/(^|\/)LICENSE[^/]*$/i,/(^|\/)CHANGELOG[^/]*$/i];function C(e){return k.some(t=>t.test(e))?"test":j.some(t=>t.test(e))?"docs":null}function N(e,t){if(t&&e.startsWith(t)){let n=e.slice(t.length);return n.startsWith("/")?n.slice(1):n}return e}function S(e,t){let n=[];for(let r of e)if("Edit"===r.name){let e=r.input;if(e.file_path&&"string"==typeof e.old_string&&"string"==typeof e.new_string){let s=N(e.file_path,t);n.push({key:r.id,toolName:"Edit",subject:`[Edit] ${s}`,legacy:!0,changeClass:C(s),files:[{path:s,status:"modified",old_string:e.old_string,new_string:e.new_string,fileClass:C(s)}]})}}else if("Write"===r.name){let e=r.input;if(e.file_path&&"string"==typeof e.content){let s=N(e.file_path,t);n.push({key:r.id,toolName:"Write",subject:`[Write] ${s}`,legacy:!0,changeClass:C(s),files:[{path:s,status:"added",old_string:"",new_string:e.content,fileClass:C(s)}]})}}return n}function E(e,t,n){let r=e.map(e=>{let t=new Set(e.commit.toolFiles);return{key:e.commit.toolId??e.commit.hash,shortHash:e.commit.hash.slice(0,7),toolName:e.commit.toolName??"tool",subject:e.commit.subject,timestamp:e.commit.timestamp,truncated:!0===e.truncated,changeClass:function(e){if(0===e.length)return null;let t=C(e[0]);return null===t?null:e.every(e=>C(e)===t)?t:null}(e.files.map(e=>e.path)),files:e.files.map(e=>({path:e.path,status:e.status,additions:e.additions,deletions:e.deletions,old_string:e.oldContent??"",new_string:e.newContent??"",unviewable:e.binary||null===e.oldContent&&null===e.newContent,external:t.size>0&&!t.has(e.path),fileClass:C(e.path)}))}});return r.length>0?r:S(t,n)}function L({additions:e,deletions:t}){return(0,r.jsxs)("span",{className:"flex items-center gap-1 font-mono",children:[(0,r.jsxs)("span",{className:"text-green-11",children:["+",e]}),(0,r.jsxs)("span",{className:"text-red-11",children:["-",t]})]})}function M({cls:e}){return(0,r.jsx)("span",{className:`text-[10px] px-1 py-px rounded flex-shrink-0 ${"test"===e?"bg-emerald-500/15 text-emerald-600 dark:text-emerald-400/80":"bg-sky-500/15 text-sky-600 dark:text-sky-400/80"}`,children:e})}function R(e){let t=new Date(1e3*e),n=new Date,r=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),l=String(t.getHours()).padStart(2,"0"),o=String(t.getMinutes()).padStart(2,"0"),a=`${r}-${s} ${l}:${o}`;return t.getFullYear()===n.getFullYear()?a:`${t.getFullYear()}-${a}`}function T({toolCalls:e,cwd:t,onClose:n,onContentSearch:d}){let{t:k}=(0,l.Bd)(),j=(0,s.useRef)(null),[C,N]=(0,s.useState)(null);(0,s.useEffect)(()=>{N(j.current)},[]);let $=(0,s.useMemo)(()=>e.map(e=>e.id).filter(Boolean),[e]),I=$.join(","),[P,A]=(0,s.useState)(0),_=(0,a.Z)(t&&$.length>0?(0,y.se)(t,$):o.succeed([]),[t,I,P]),D=(0,s.useMemo)(()=>e.filter(e=>["Edit","Write","MultiEdit","NotebookEdit"].includes(e.name)).map(e=>e.id),[e]);(0,s.useEffect)(()=>{if("success"!==_.status||P>=2)return;let e=new Set(_.data.map(e=>e.commit.toolId));if(D.some(t=>!e.has(t))){let e=setTimeout(()=>A(e=>e+1),2e3);return()=>clearTimeout(e)}},[_,P,D]);let B=(0,s.useRef)([]),W="loading"===_.status&&0===B.current.length,F=(0,s.useMemo)(()=>{if("success"===_.status){let n=E(_.data,e,t);return n.length>0&&(B.current=n),n}return"loading"===_.status&&B.current.length>0?B.current:"loading"===_.status?[]:S(e,t)},[_,e,t]),[O,V]=(0,s.useState)(null),[z,H]=(0,s.useState)(null),[U,q]=(0,s.useState)(new Set),[K,G]=(0,s.useState)(()=>window.innerWidth>=768),[X,Y]=(0,s.useState)("compact"),[J,Z]=(0,s.useState)("split"),[Q,ee]=(0,s.useState)(!1),[et,en]=(0,s.useState)(!1),[er,es]=(0,s.useState)(null),el=(0,s.useMemo)(()=>F.find(e=>e.key===O)??null,[F,O]),eo=(0,s.useRef)(null);(0,s.useEffect)(()=>{el&&(eo.current=el)},[el]);let ea=el??eo.current,ei=(0,s.useMemo)(()=>ea?(0,f.Do)(ea.files):[],[ea]),ec=(0,s.useMemo)(()=>ea?.files.find(e=>e.path===z)??null,[ea,z]),ed=(0,s.useCallback)(e=>{V(e.key),H(e.files[0]?.path??null),q(new Set((0,f.Sz)((0,f.Do)(e.files))))},[]);(0,s.useEffect)(()=>{F.length>0&&null==O&&ed(F[0])},[F,O,ed]),(0,s.useEffect)(()=>{let e=e=>{if("Escape"===e.key){if(Q)return void ee(!1);if(et)return void en(!1);if(er)return void es(null);(0,i.k)(),n()}};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[n,Q,et,er]);let eu=(0,s.useMemo)(()=>F.reduce((e,t)=>e+t.files.length,0),[F]),eh=e=>(0,r.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted-foreground text-sm",children:e});return(0,r.jsx)(c.SU,{container:C,children:(0,r.jsxs)("div",{ref:j,className:"relative bg-card shadow-xl w-full h-full flex flex-col",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("button",{onClick:()=>G(e=>!e),"aria-label":k("diffViewer.toggleFileTree"),className:`p-1 rounded transition-colors ${K?"text-foreground bg-accent":"text-muted-foreground hover:text-foreground hover:bg-accent"}`,children:(0,r.jsx)(u.A,{className:"w-4 h-4"})}),(0,r.jsx)("h3",{className:"text-sm font-medium text-foreground",children:k("diffViewer.fileChanges",{count:eu})})]}),(0,r.jsx)("button",{onClick:n,className:"p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",children:(0,r.jsx)(h.A,{className:"w-5 h-5"})})]}),(0,r.jsxs)("div",{className:"flex-1 flex overflow-hidden",children:[K&&(0,r.jsx)("div",{className:"w-60 flex-shrink-0 border-r border-border overflow-y-auto",children:F.map(e=>{let t;return(0,r.jsxs)("div",{onClick:()=>ed(e),className:`px-3 py-2 border-b border-border cursor-pointer hover:bg-accent ${O===e.key?"bg-brand/10":""}`,children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[e.shortHash&&(0,r.jsx)("span",{className:"font-mono text-xs text-brand",children:e.shortHash}),void 0!==e.timestamp&&(0,r.jsx)("span",{className:"text-xs text-slate-9",children:R(e.timestamp)}),e.changeClass&&(0,r.jsx)("span",{className:"ml-auto",children:(0,r.jsx)(M,{cls:e.changeClass})})]}),(0,r.jsx)("div",{className:"text-sm text-foreground truncate mt-0.5","data-tooltip":e.subject,children:e.subject}),(0,r.jsxs)("div",{className:"flex items-center gap-2 mt-0.5 text-xs text-muted-foreground",children:[(0,r.jsx)("span",{children:k("commitDetail.nChanges",{count:e.files.length})}),(t=function(e){let t=!1,n=0,r=0;for(let s of e.files)(void 0!==s.additions||void 0!==s.deletions)&&(t=!0),n+=s.additions??0,r+=s.deletions??0;return t?{additions:n,deletions:r}:null}(e))&&(t.additions>0||t.deletions>0)?(0,r.jsx)(L,{additions:t.additions,deletions:t.deletions}):null]})]},e.key)})}),(0,r.jsx)("div",{className:"flex-1 flex flex-col overflow-hidden",children:W?eh(k("diffViewer.loadingSnapshots")):0===F.length?eh(k("diffViewer.noChanges")):ea?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 px-4 py-2 border-b border-border text-xs text-muted-foreground",children:[(0,r.jsxs)("span",{className:"flex items-center gap-1 text-foreground",children:[(0,r.jsx)(m.A,{className:"w-3.5 h-3.5"}),ea.toolName]}),ea.shortHash&&(0,r.jsx)("span",{className:"font-mono text-brand",children:ea.shortHash}),void 0!==ea.timestamp&&(0,r.jsx)("span",{children:R(ea.timestamp)}),(0,r.jsx)("span",{className:"flex-1 min-w-0 truncate","data-tooltip":ea.subject,children:ea.subject}),ea.truncated&&(0,r.jsx)("span",{className:"text-amber-500",children:k("diffViewer.truncated")}),ea.legacy&&(0,r.jsx)("span",{className:"px-1.5 py-0.5 rounded bg-amber-500/15 text-amber-600 dark:text-amber-400","data-tooltip":k("diffViewer.reconstructedHint"),children:k("diffViewer.reconstructed")}),(0,r.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,r.jsx)(p.y,{value:X,onChange:Y}),(0,r.jsx)(x.q,{value:J,onChange:Z})]})]}),(0,r.jsxs)("div",{className:"flex-1 flex overflow-hidden",children:[K&&(0,r.jsx)("div",{className:"w-72 flex-shrink-0 border-r border-border overflow-y-auto overflow-x-hidden",children:(0,r.jsx)(f.VO,{files:ei,selectedPath:z,expandedPaths:U,onToggle:e=>q(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),onSelect:e=>{!e.isDirectory&&e.file&&(H(e.file.path),window.innerWidth<768&&G(!1))},cwd:t||"",showChanges:!0,renderActions:e=>{if(e.isDirectory)return null;let t=e.file;return t?(0,r.jsxs)(r.Fragment,{children:[t.fileClass&&(0,r.jsx)(M,{cls:t.fileClass}),t.external&&(0,r.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-purple-400 flex-shrink-0","data-tooltip":k("diffViewer.externalChange")})]}):null}})}),(0,r.jsx)("div",{className:"flex-1 overflow-hidden",children:ec?ec.unviewable?(0,r.jsx)("div",{className:"h-full flex items-center justify-center text-muted-foreground text-sm",children:k("diffViewer.notViewable")}):"unified"===J?(0,r.jsx)(g.xU,{oldContent:ec.old_string,newContent:ec.new_string,filePath:ec.path,cwd:t,enableComments:!0,onContentSearch:d,compact:"compact"===X,onPreview:"deleted"===ec.status?void 0:(0,b.e$)(ec.path)?()=>ee(!0):(0,b.aR)(ec.path)?()=>en(!0):ec.path.endsWith(".json")?()=>es({content:ec.new_string,filePath:ec.path}):void 0,previewLabel:ec.path.endsWith(".json")?k("common.readable"):k("common.preview")}):(0,r.jsx)(g.xZ,{oldContent:ec.old_string,newContent:ec.new_string,filePath:ec.path,isNew:"added"===ec.status,isDeleted:"deleted"===ec.status,cwd:t,enableComments:!0,onContentSearch:d,compact:"compact"===X,onPreview:"deleted"===ec.status?void 0:(0,b.e$)(ec.path)?()=>ee(!0):(0,b.aR)(ec.path)?()=>en(!0):ec.path.endsWith(".json")?()=>es({content:ec.new_string,filePath:ec.path}):void 0,previewLabel:ec.path.endsWith(".json")?k("common.readable"):k("common.preview")}):(0,r.jsx)("div",{className:"h-full flex items-center justify-center text-muted-foreground text-sm",children:k("diffViewer.selectFileToView")})})]})]}):eh(k("diffViewer.selectFileToView"))})]}),Q&&ec&&(0,r.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/50 p-2 md:p-4",onClick:()=>ee(!1),children:(0,r.jsx)("div",{className:"bg-card rounded-lg shadow-xl w-full max-w-[95%] h-full flex flex-col",onClick:e=>e.stopPropagation(),children:(0,r.jsx)(v.M,{content:ec.new_string,filePath:ec.path,cwd:t||"",onClose:()=>ee(!1)})})}),et&&ec&&(0,r.jsx)(w.N,{filePath:ec.path,content:ec.new_string,cwd:t,onClose:()=>en(!1),onContentSearch:d}),er&&(0,r.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/50 p-2 md:p-4",onClick:()=>es(null),children:(0,r.jsxs)("div",{className:"bg-card rounded-lg shadow-xl w-full max-w-[95%] h-full flex flex-col",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-2 border-b border-border flex-shrink-0",children:[(0,r.jsx)("span",{className:"text-sm text-muted-foreground font-mono truncate",children:er.filePath}),(0,r.jsx)("button",{onClick:()=>es(null),className:"p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",children:(0,r.jsx)(h.A,{className:"w-4 h-4"})})]}),(0,r.jsx)("div",{className:"flex-1 overflow-auto px-6 py-4 bg-[#0d1117]",children:(0,r.jsx)("pre",{className:"whitespace-pre-wrap break-words font-mono",style:{fontSize:"0.8125rem",lineHeight:"1.5"},children:(0,b.xb)(er.content)})})]})})]})})}function $({toolCalls:e,cwd:t,onClose:n,onContentSearch:s}){return(0,r.jsx)(d.ZL,{children:(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:n,children:(0,r.jsx)(T,{toolCalls:e,cwd:t,onClose:n,onContentSearch:s?e=>{n(),s(e)}:void 0})})})}},46456:(e,t,n)=>{n.d(t,{$:()=>i,BC:()=>c,Tu:()=>u,lb:()=>a,tj:()=>h,vv:()=>d});var r=n(49433),s=n(82680);let l=(e,t)=>r.tryPromise({try:async()=>{let n=await fetch(e,t);if(!n.ok)throw Error(`HTTP ${n.status}`);return await n.json()},catch:n=>new s.uV({message:`${t?.method??"GET"} ${e} failed`,cause:n})}),o=(e,t)=>r.tryPromise({try:async()=>{let n=await fetch(e,t);if(!n.ok)throw Error(`HTTP ${n.status}`)},catch:n=>new s.uV({message:`${t.method} ${e} failed`,cause:n})}),a=(e,t)=>l(`/api/comments?cwd=${encodeURIComponent(e)}${t?`&filePath=${encodeURIComponent(t)}`:""}`),i=e=>l(`/api/comments?cwd=${encodeURIComponent(e)}&all=true`),c=e=>l("/api/comments",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),d=(e,t,n)=>l("/api/comments",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,id:t,content:n})}),u=(e,t)=>o(`/api/comments?cwd=${encodeURIComponent(e)}&id=${encodeURIComponent(t)}`,{method:"DELETE"}),h=e=>o(`/api/comments?cwd=${encodeURIComponent(e)}&all=true`,{method:"DELETE"})},47215:(e,t,n)=>{n.d(t,{C6:()=>o,Hz:()=>b,WU:()=>v,aR:()=>g,cG:()=>i,e$:()=>x,jU:()=>l,oK:()=>w,u:()=>p,xb:()=>c,zs:()=>m});var r=n(12115),s=n(69809);function l(e){try{return JSON.parse(e),!0}catch{return!1}}function o(e){try{let t=JSON.parse(e);return JSON.stringify(t,null,2)}catch{return e}}let a={key:"#79c0ff",str:"#a5d6ff",num:"#79c0ff",bool:"#ff7b72",punct:"#8b949e",fold:"#6e7681"},i={key:"hsl(var(--blue-11))",str:"hsl(var(--green-11))",num:"hsl(var(--violet-11))",bool:"hsl(var(--red-11))",punct:"hsl(var(--slate-11))",fold:"hsl(var(--slate-11))"};function c(e,t=a){try{let n=JSON.parse(e);return h(n,0,t)}catch{return e}}let d=(e,t)=>r.createElement("span",{style:{color:e}},t);function u({label:e,labelColor:t,value:n,indent:l,colors:o}){let[a,i]=r.useState(!1),[c,m]=r.useState({x:0,y:0}),f="string"==typeof n&&n.replace(/\\n/g,"\n").split("\n").length>3,p={onMouseDown:e=>{m({x:e.clientX,y:e.clientY})},onClick:e=>{let t=e.clientX-c.x,n=e.clientY-c.y;t*t+n*n>25||(e.stopPropagation(),i(e=>!e))},style:{cursor:"pointer"}};if(f&&a&&"string"==typeof n){let l=n.replace(/\\n/g,"\n").split("\n")[0],a=n.replace(/\\n/g,"\n").split("\n").length;return r.createElement("span",p,d(t,e),d(o.punct,": "),d(o.str,l),d(o.fold,` ${s.A.t("toolCall.foldedLines",{count:a})}`))}let x=r.createElement(r.Fragment,null,d(t,e),d(o.punct,": "),h(n,l,o));return f?r.createElement("span",p,x):x}function h(e,t,n){let s=" ".repeat(t);if(null===e)return d(n.bool,"null");if(void 0===e)return d(n.bool,"undefined");if("string"==typeof e){let t=e.replace(/\\n/g,"\n").replace(/\n/g,"\n"+s);return d(n.str,t)}if("number"==typeof e)return d(n.num,String(e));if("boolean"==typeof e)return d(n.bool,String(e));if(Array.isArray(e))return 0===e.length?d(n.punct,"[]"):r.createElement(r.Fragment,null,d(n.punct,"["),"\n",...e.map((l,o)=>r.createElement("span",{key:o},s+" ",r.createElement(u,{label:`[${o}]`,labelColor:n.key,value:l,indent:t+1,colors:n}),o<e.length-1?r.createElement(r.Fragment,null,d(n.punct,","),"\n"):"\n")),s,d(n.punct,"]"));if("object"==typeof e){let l=Object.entries(e);return 0===l.length?d(n.punct,"{}"):r.createElement(r.Fragment,null,d(n.punct,"{"),"\n",...l.map(([e,o],a)=>r.createElement("span",{key:e},s+" ",r.createElement(u,{label:e,labelColor:n.key,value:o,indent:t+1,colors:n}),a<l.length-1?r.createElement(r.Fragment,null,d(n.punct,","),"\n"):"\n")),s,d(n.punct,"}"))}return String(e)}function m(e){try{let t=JSON.parse(e);if(t&&"string"==typeof t.file_path&&"string"==typeof t.old_string&&"string"==typeof t.new_string)return t}catch{}return null}let f=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".avif"]);function p(e){let t=e.slice(e.lastIndexOf(".")).toLowerCase();return f.has(t)}function x(e){return e.toLowerCase().endsWith(".md")}function g(e){let t=e.toLowerCase();return t.endsWith(".html")||t.endsWith(".htm")}function b(e){return e.toLowerCase().endsWith(".json")}function v(e,t){let n=t.startsWith("/")?[]:e.split("/").slice(0,-1);for(let e of t.replace(/^\//,"").split("/"))""!==e&&"."!==e&&(".."===e?n.pop():n.push(e));return n.join("/")}function w(e){try{let t=JSON.parse(e);if(t&&"string"==typeof t.file_path)return t.file_path}catch{let t=e.trim();if(t.startsWith("/")&&!t.includes("\n")&&t.length<500)return t}return null}},48347:(e,t,n)=>{n.d(t,{H:()=>o,r:()=>a});var r=n(95155),s=n(12115);let l=(0,s.createContext)(null);function o({value:e,children:t}){return(0,r.jsx)(l.Provider,{value:e,children:t})}function a(){return(0,s.useContext)(l)}},48661:(e,t,n)=>{n.d(t,{q:()=>l});var r=n(95155),s=n(79114);function l({value:e,onChange:t,className:n}){let{t:o}=(0,s.Bd)();return(0,r.jsx)("div",{className:`flex items-center gap-0.5 rounded border border-border overflow-hidden ${n??""}`,children:["split","unified"].map(n=>(0,r.jsx)("button",{onClick:e=>{e.stopPropagation(),t(n)},className:`px-2 py-0.5 text-xs transition-colors ${e===n?"bg-brand text-white":"text-muted-foreground hover:bg-accent"}`,children:o("split"===n?"diffViewer.viewSplit":"diffViewer.viewUnified")},n))})}},48948:(e,t,n)=>{n.d(t,{F:()=>r});function r(e,t,n){let{engine:r,assistantId:s}=n;if("stream_event"===t.type){let n=t.event;if(n?.type==="content_block_delta"&&n.delta?.type==="text_delta"&&n.delta.text){let t=n.delta.text;return e.map(e=>e.id===s?{...e,content:(e.content||"")+t}:e)}return e}if("assistant"===t.type){let n=t.message?.content;if(!Array.isArray(n))return e;let l=e,o=t.message?.model==="<synthetic>";if("codex"===r||"kimi"===r||"ollama"===r||o){let e=n.filter(e=>"text"===e.type&&e.text).map(e=>e.text).join("");e&&(l=l.map(t=>t.id===s?{...t,content:(t.content||"")+e}:t))}for(let e of n)if(e.name){let t={id:e.id||`tool-${s}-${e.name}`,name:e.name,input:e.input||{},isLoading:!0};l=l.map(e=>e.id!==s||e.toolCalls?.some(e=>e.id===t.id)?e:{...e,toolCalls:[...e.toolCalls||[],t]})}return l}if("user"===t.type){let n=t.message?.content;if(!Array.isArray(n))return e;let r=e;for(let e of n)if(e.tool_use_id){let t=e.tool_use_id,n="string"==typeof e.content?e.content:JSON.stringify(e.content);r=r.map(e=>e.id===s?{...e,toolCalls:e.toolCalls?.map(e=>e.id===t?{...e,result:n,isLoading:!1}:e)}:e)}return r}if("error"===t.type){let n=t.error||"An error occurred. Please try again.";return e.map(e=>e.id===s?{...e,content:e.content?`${e.content}
375
+ `;function s(e){return/^([/\\]|[A-Za-z]:)/.test(e)}function l(e,t){let n=e.replace(/[/\\]+$/,"");return t?`${n}/${t}`:n}function o(e,t){let n,r=(n=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\")))<0?"":0===n?"/":e.slice(0,n);return s(e)?r:t?l(t,r):r}function a(e,t){return s(e)||!!t}function i(e,t){let n=e.trim();return"/apps/local/"+(s(n)?n:l(t??"",n)).replace(/\\/g,"/").split("/").map(encodeURIComponent).join("/").replace(/^\//,"")}let c=/\.(md|png|jpe?g|gif|webp|svg|pdf|json)$/i;function d(e){return c.test(e.trim())}function u(e,t){let n=e.trim();return"/apps/builtin/file-viewer/index.html?file="+encodeURIComponent((s(n)?n:l(t??"",n)).replace(/\\/g,"/"))}function h(e,t){let n=e=>JSON.stringify(e).replace(/</g,"\\u003c"),s="<script>"+r.replaceAll("__CWD__",n(t.cwd)).replaceAll("__WS_URL__",n(t.wsUrl??""))+"<\/script>",l=e.match(/<head[^>]*>/i);if(l&&void 0!==l.index){let t=l.index+l[0].length;return e.slice(0,t)+s+e.slice(t)}let o=e.match(/<html[^>]*>/i);if(o&&void 0!==o.index){let t=o.index+o[0].length;return e.slice(0,t)+s+e.slice(t)}return s+e}},37614:(e,t,n)=>{n.d(t,{t:()=>o});var r=n(95155),s=n(12115),l=n(79114);function o({x:e,y:t,comment:n,container:a,onClose:i,onUpdateComment:c,onDeleteComment:d}){let{t:u}=(0,l.Bd)(),[h,m]=(0,s.useState)(!1),[f,p]=(0,s.useState)(n.content),x=(0,s.useRef)(null),[g,b]=(0,s.useState)({x:0,y:0});(0,s.useEffect)(()=>{if(x.current&&a){let n=a.getBoundingClientRect(),r=x.current.getBoundingClientRect(),s=e-n.left,l=t-n.top;s+r.width>n.width-16&&(s=n.width-r.width-16),s<16&&(s=16),l+r.height>n.height-16&&(l=l-r.height-8),l<16&&(l=16),queueMicrotask(()=>b({x:s,y:l}))}},[e,t,a]),(0,s.useEffect)(()=>{let e=e=>{x.current&&!x.current.contains(e.target)&&i()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[i]);let v=async()=>{f.trim()&&(await c(n.id,f.trim()),m(!1))},w=async()=>{await d(n.id),i()};return(0,r.jsx)("div",{ref:x,className:"absolute z-[200] w-96 bg-card border border-border rounded-lg shadow-lg overflow-hidden",style:{left:g.x,top:g.y},children:(0,r.jsx)("div",{className:"p-3",children:h?(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("textarea",{value:f,onChange:e=>p(e.target.value),className:"w-full px-2 py-1.5 text-sm border border-border rounded bg-card resize-none focus:outline-none focus:ring-1 focus:ring-ring",rows:3,autoFocus:!0,onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),v()),"Escape"===e.key&&(m(!1),p(n.content))}}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)("button",{onClick:()=>{m(!1),p(n.content)},className:"px-2 py-1 text-xs text-muted-foreground hover:text-foreground",children:u("common.cancel")}),(0,r.jsx)("button",{onClick:v,className:"px-2 py-1 text-xs bg-brand text-white rounded hover:bg-brand/90",children:u("common.save")})]})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{className:"text-sm text-foreground whitespace-pre-wrap",children:n.content}),(0,r.jsxs)("div",{className:"mt-2 flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:u("comments.lineRange",{start:n.startLine,end:n.endLine})}),(0,r.jsxs)("div",{className:"flex gap-1",children:[(0,r.jsx)("button",{onClick:()=>m(!0),className:"p-1 rounded hover:bg-accent text-muted-foreground",title:u("common.edit"),children:(0,r.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})})}),(0,r.jsx)("button",{onClick:w,className:"p-1 rounded hover:bg-accent text-muted-foreground hover:text-red-9",title:u("common.delete"),children:(0,r.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})})})]})]})]})})})}},38175:(e,t,n)=>{n.d(t,{E:()=>u});var r=n(95155),s=n(12115),l=n(48347),o=n(89109),a=n(7320),i=n(34582),c=n(1058),d=n(90717);function u({content:e,filePath:t,cwd:n,onContentSearch:h}){let m=(0,l.r)(),f=!!n,p=(0,s.useMemo)(()=>{if((0,i.qF)(t,n))return{mode:"url",url:(0,i.Xe)(t,n)};let r=e??"",s=(0,i.J4)(t,n),l="https:"===window.location.protocol?"wss:":"ws:",o=`${l}//${window.location.host}/ws/bash?cwd=${encodeURIComponent(s)}`;return{mode:"srcdoc",html:(0,i.OP)(r,{cwd:s,wsUrl:o})}},[e,t,n]),{addComment:x,refresh:g}=(0,c._)({cwd:n||"",filePath:t}),[b,v]=(0,s.useState)(null),w=(0,s.useRef)(null),y=(0,s.useRef)(null),k=(0,s.useRef)(()=>{}),[j,C]=(0,s.useState)(null),[N,S]=(0,s.useState)(null),E=(0,s.useRef)(!1);(0,s.useEffect)(()=>{E.current=!!(j||N)},[j,N]);let L=(0,s.useCallback)(()=>{y.current&&(y.current=null,k.current())},[]),M=(0,s.useCallback)(()=>{if(!f)return;let e=w.current,t=e?.contentDocument;e&&t&&(t.addEventListener("mouseup",t=>{if(E.current)return;let n=e.contentWindow?.getSelection(),r=n&&!n.isCollapsed?n.toString().trim():"";if(!r)return void L();let s=e.getBoundingClientRect();y.current={x:s.left+t.clientX,y:s.top+t.clientY,range:{start:0,end:0},selectedText:r,lineSnapshot:r},k.current()}),t.addEventListener("mousedown",()=>{L(),C(null),S(null)}),t.addEventListener("scroll",()=>L(),{capture:!0,passive:!0}))},[f,L]),R=(0,s.useCallback)(()=>{let e=y.current;e&&(C({x:e.x,y:e.y,text:e.selectedText}),L(),w.current?.contentWindow?.getSelection()?.removeAllRanges())},[L]),T=(0,s.useCallback)(()=>{let e=y.current;e&&(S({x:e.x,y:e.y,text:e.selectedText}),L(),w.current?.contentWindow?.getSelection()?.removeAllRanges())},[L]),$=(0,s.useCallback)(()=>{let e=y.current;if(!e||!h)return;let t=e.selectedText.trim();L(),w.current?.contentWindow?.getSelection()?.removeAllRanges(),t&&h(t)},[h,L]),I=(0,s.useCallback)(async e=>{j&&(await x(0,0,e,j.text),C(null))},[j,x]),P=(0,s.useCallback)(async(e,r)=>{if(m&&n)try{let s=(await (0,d.$3)(n)).map(e=>({filePath:e.filePath,startLine:e.startLine,endLine:e.endLine,codeContent:e.codeContent,note:e.content||void 0}));s.push({filePath:t,startLine:0,endLine:0,codeContent:e});let l=(0,d.Gw)(s,r);m.sendMessage(l),await (0,d.RP)(n),g()}catch(e){console.error("[HtmlPreview] send to AI failed:",e)}},[m,n,t,g]),A=(0,s.useCallback)(e=>{N&&P(N.text,e)},[N,P]),_=(0,s.useCallback)(e=>{j&&P(j.text,e)},[j,P]);return(0,r.jsxs)("div",{ref:v,className:"relative h-full w-full bg-white",children:[(0,r.jsx)("iframe",{ref:w,..."url"===p.mode?{src:p.url}:{srcDoc:p.html},title:t,className:"h-full w-full border-0",onLoad:M},t),f&&b&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.f,{floatingToolbarRef:y,bumpRef:k,container:b,onAddComment:R,onSendToAI:T,onSearch:h?$:void 0,isChatLoading:m?.isLoading}),j&&(0,r.jsx)(a.t,{x:j.x,y:j.y,range:{start:0,end:0},filePath:t,lineSnapshot:j.text,container:b,onSubmit:I,onSendToAI:m?_:void 0,onClose:()=>C(null),isChatLoading:m?.isLoading}),N&&(0,r.jsx)(a.G,{x:N.x,y:N.y,range:{start:0,end:0},filePath:t,lineSnapshot:N.text,container:b,onSubmit:A,onClose:()=>S(null),isChatLoading:m?.isLoading})]})]})}},38408:(e,t,n)=>{n.d(t,{Cv:()=>P,XO:()=>A});var r=n(95155),s=n(12115),l=n(79114),o=n(47650),a=n(86957),i=n(60938),c=n(70188),d=n(7320),u=n(56978),h=n(17196),m=n(89109),f=n(37614),p=n(69809),x=n(64428);function g({blame:e,onClick:t}){let{t:n}=(0,l.Bd)(),o=(0,s.useRef)(null),a=(0,s.useRef)(null),i=(0,x.F2)(),c=(0,s.useRef)(!1),d=(0,s.useRef)(!1),u=(0,s.useRef)(null),h=(0,s.useRef)(null),m=(0,s.useRef)(null),f=(0,s.useRef)(e);(0,s.useEffect)(()=>{f.current=e},[e]);let b=(0,s.useRef)(t);(0,s.useEffect)(()=>{b.current=t},[t]);let v=(0,s.useCallback)(()=>{let e,t=a.current,n=o.current;if(!t||!n)return;let r=n.getBoundingClientRect(),s=t.getBoundingClientRect(),l=i?.getBoundingClientRect(),c=l?.left??0,d=l?.top??0,u=l?.width??window.innerWidth,h=l?.height??window.innerHeight,m=r.left-c;m+s.width>u-8&&(m=u-s.width-8),m<8&&(m=8);let f=r.top-d,p=r.bottom-d;(e=f-s.height-4<0?p+4:f-s.height-4)+s.height>h-8&&(e=h-s.height-8),t.style.left=`${m}px`,t.style.top=`${e}px`},[i]),w=(0,s.useCallback)(()=>{u.current&&(clearTimeout(u.current),u.current=null),h.current&&(clearTimeout(h.current),h.current=null),c.current=!1,d.current=!1,a.current&&(a.current.style.display="none"),m.current&&(document.removeEventListener("mousedown",m.current.down),document.removeEventListener("mouseup",m.current.up),m.current=null)},[]),y=(0,s.useCallback)(()=>{let e=a.current;if(!e||c.current)return;c.current=!0,e.style.left="-9999px",e.style.top="-9999px",e.style.display="block",requestAnimationFrame(()=>requestAnimationFrame(v));let t=0,n=0,r=e=>{t=e.clientX,n=e.clientY},s=e=>{if(!(Math.abs(e.clientX-t)>5||Math.abs(e.clientY-n)>5)){let t;t=e.target,a.current?.contains(t)||o.current?.contains(t)||w()}};document.addEventListener("mousedown",r),document.addEventListener("mouseup",s),m.current={down:r,up:s}},[v,w]),k=(0,s.useCallback)(()=>{if(u.current&&clearTimeout(u.current),h.current&&(clearTimeout(h.current),h.current=null),c.current)return;let e=window.getSelection();(!e||e.isCollapsed)&&(u.current=setTimeout(y,500))},[y]),j=(0,s.useCallback)(()=>{u.current&&(clearTimeout(u.current),u.current=null),c.current&&(h.current=setTimeout(()=>{d.current||w()},200))},[w]),C=(0,s.useCallback)(()=>{d.current=!0,h.current&&(clearTimeout(h.current),h.current=null)},[]),N=(0,s.useCallback)(()=>{d.current=!1,w()},[w]),S=(0,s.useCallback)(e=>{e.stopPropagation();let t=window.getSelection();t&&t.toString().length>0&&a.current?.contains(t.anchorNode)||(b.current?.(f.current),w())},[w]);(0,s.useEffect)(()=>()=>w(),[w]);let E=e.message.split("\n")[0]||"",L=e.message.split("\n").slice(1).join("\n").trim();return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("span",{ref:o,className:"select-none text-xs text-muted-foreground/50 ml-6 cursor-default hover:text-muted-foreground/80",onMouseEnter:k,onMouseLeave:j,children:[e.author.split(" ")[0],", ",function(e){let t=p.A.t,n=Math.floor((Date.now()-1e3*e)/1e3);if(n<60)return t("common.justNow");let r=Math.floor(n/60);if(r<60)return t("common.minutesAgo",{count:r});let s=Math.floor(r/60);if(s<24)return t("common.hoursAgo",{count:s});let l=Math.floor(s/24);if(l<30)return t("common.daysAgo",{count:l});let o=Math.floor(l/30);return o<12?t("common.monthsAgo",{count:o}):t("common.yearsAgo",{count:Math.floor(o/12)})}(e.time)," \xb7 ",E]}),(0,r.jsx)(x.ZL,{children:(0,r.jsxs)("div",{ref:a,className:"fixed z-[9999] bg-card border border-border rounded-lg shadow-xl p-3 text-xs text-foreground whitespace-pre-wrap max-w-md select-text",style:{display:"none",minWidth:280,cursor:"text"},"data-inline-blame-tip":"",onMouseEnter:C,onMouseLeave:N,children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,r.jsx)("span",{className:"font-mono text-brand",children:e.hash}),(0,r.jsx)("span",{className:"text-muted-foreground",children:e.author}),(0,r.jsx)("span",{className:"text-muted-foreground/60",children:new Date(1e3*e.time).toLocaleString()})]}),(0,r.jsx)("div",{className:"font-medium",children:E}),L&&(0,r.jsx)("div",{className:"mt-1 text-muted-foreground",children:L}),(0,r.jsx)("div",{className:"mt-2 text-[11px] text-brand border-t border-border pt-2 cursor-pointer hover:underline",onClick:S,children:n("codeViewer.clickToViewDetails")})]})})]})}let b=[{bg:"rgba(59, 130, 246, 0.15)",border:"rgb(59, 130, 246)"},{bg:"rgba(16, 185, 129, 0.15)",border:"rgb(16, 185, 129)"},{bg:"rgba(245, 158, 11, 0.15)",border:"rgb(245, 158, 11)"},{bg:"rgba(239, 68, 68, 0.15)",border:"rgb(239, 68, 68)"},{bg:"rgba(168, 85, 247, 0.15)",border:"rgb(168, 85, 247)"},{bg:"rgba(236, 72, 153, 0.15)",border:"rgb(236, 72, 153)"},{bg:"rgba(20, 184, 166, 0.15)",border:"rgb(20, 184, 166)"},{bg:"rgba(249, 115, 22, 0.15)",border:"rgb(249, 115, 22)"}];function v(e,t){let n,r=document.caretRangeFromPoint(e.clientX,e.clientY);if(!r||!t.contains(r.startContainer))return 1;let s=r.startContainer,l=r.startOffset,o=document.createTreeWalker(t,NodeFilter.SHOW_TEXT),a=1;for(;n=o.nextNode();){if(n===s){a+=l;break}a+=n.textContent?.length||0}return a}let w=(0,s.memo)(function({virtualKey:e,lineNum:t,highlightedHtml:n,hasComments:o,firstComment:a,lineCommentsCount:i,isInRange:c,showLineNumbers:d,lineNumChars:u,commentsEnabled:h,virtualItemSize:m,virtualItemStart:f,onCommentBubbleClick:p,onCmdClick:x,onTokenHover:b,onTokenHoverLeave:w,flashLine:y,blameLine:k,showBlameInfo:j,blameAuthorColor:C,isBlameHovered:N,onBlameClick:S,onBlameMouseEnter:E,onBlameMouseLeave:L,inlineBlameData:M,onInlineBlameClick:R,isCursorLine:T,cursorCol:$}){let{t:I}=(0,l.Bd)(),P=(0,s.useMemo)(()=>T&&null!=$?function(e,t){let n=0,r=0;for(;r<e.length;){if("<"===e[r]){let t=e.indexOf(">",r);if(-1!==t){r=t+1;continue}}if(n===t){let t;if("&"===e[r]){let n=e.indexOf(";",r);t=-1!==n&&n-r<10?n+1:r+1}else t=r+1;let n=e.substring(r,t);return e.substring(0,r)+'<span class="vi-char-cursor">'+n+"</span>"+e.substring(t)}if("&"===e[r]){let t=e.indexOf(";",r);r=-1!==t&&t-r<10?t+1:r+1}else r++;n++}return e+'<span class="vi-char-cursor"> </span>'}(n,$):n,[n,T,$]),A=(0,s.useCallback)(e=>{if(!e.metaKey||!x)return;e.preventDefault(),e.stopPropagation();let n=e.currentTarget,r=v(e,n);window.getSelection()?.removeAllRanges(),x(t,r)},[t,x]),_=(0,s.useCallback)(e=>{if(!b||0!==e.buttons)return;let n=window.getSelection();if(n&&!n.isCollapsed)return;let r=e.target;if("SPAN"!==r.tagName||!r.style.color)return;let s=e.currentTarget,l=v(e,s),o=r.getBoundingClientRect();b(t,l,{x:o.left,y:o.bottom+4})},[t,b]),D=(0,s.useCallback)(()=>{k&&S&&S(k)},[k,S]),B=(0,s.useCallback)(e=>{k&&E&&E(k,e)},[k,E]);return(0,r.jsxs)("div",{"data-line":t,style:{position:"absolute",top:0,left:0,width:"100%",height:`${m}px`,transform:`translateY(${f}px)`,backgroundColor:N&&C?C.bg:void 0},className:`flex ${y===t?"flash-line":""} ${T?"vi-cursor-line":""} ${c?"bg-blue-9/20":o?"bg-amber-9/10":"hover:bg-accent/50"}`,children:[(0,r.jsxs)("div",{className:"flex shrink-0 sticky left-0 z-[2] bg-secondary",style:{backgroundColor:N&&C?C.bg:void 0},children:[k&&C&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"w-1 flex-shrink-0",style:{backgroundColor:C.border}}),(0,r.jsx)("div",{className:"w-48 flex-shrink-0 px-2 flex items-center gap-2 border-r border-border text-muted-foreground cursor-pointer hover:bg-accent/50",onMouseEnter:B,onMouseLeave:L,onClick:D,title:I("codeViewer.clickToViewCommit"),children:j?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"font-medium",style:{color:C.border},children:k.hash}),(0,r.jsx)("span",{className:"truncate flex-1",children:k.author.split(" ")[0]})]}):null})]}),d&&(0,r.jsxs)("span",{className:`flex-shrink-0 flex items-center justify-end gap-0.5 pr-2 select-none border-r border-border font-variant-tabular ${c?"bg-blue-9/30 text-blue-11":"bg-card/50 text-slate-9"}`,children:[h&&o&&a&&(0,r.jsx)("button",{onClick:e=>p(a,e),className:"w-4 h-4 flex items-center justify-center rounded hover:bg-accent text-amber-9",title:I("codeViewer.nComments",{count:i}),children:(0,r.jsx)("svg",{className:"w-3 h-3",fill:"currentColor",viewBox:"0 0 20 20",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M18 10c0 3.866-3.582 7-8 7a8.841 8.841 0 01-4.083-.98L2 17l1.338-3.123C2.493 12.767 2 11.434 2 10c0-3.866 3.582-7 8-7s8 3.134 8 7zM7 9H5v2h2V9zm8 0h-2v2h2V9zM9 9h2v2H9V9z",clipRule:"evenodd"})})}),h&&!o&&(0,r.jsx)("span",{className:"w-4"}),(0,r.jsx)("span",{className:"text-right",style:{minWidth:`${u}ch`},children:t})]})]}),(0,r.jsxs)("span",{className:"flex-1 px-3 whitespace-pre select-text",onClick:A,onMouseOver:_,onMouseLeave:w,"data-code-content":!0,children:[(0,r.jsx)("span",{dangerouslySetInnerHTML:{__html:P}}),M&&(0,r.jsx)(g,{blame:M,onClick:R})]})]},e)});var y=n(64702),k=n(1058),j=n(90717),C=n(48347),N=n(27570);function S(e,t,n){let r,s=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),l=0;for(;(r=s.nextNode())&&r!==t;)l+=r.textContent.length;return l+n}function E(e,t){let n,r=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),s=t,l=null;for(;n=r.nextNode();){l=n;let e=n.textContent.length;if(s<=e)return{node:n,offset:s};s-=e}return l?{node:l,offset:l.textContent.length}:null}var L=n(82292),M=n(34075);let R="white-space:pre;padding:0 12px;min-height:20px;line-height:20px";function T(e){let t=window.getSelection();if(!t?.rangeCount)return null;let n=t.getRangeAt(0),r=n.startContainer;for(;r&&r.parentElement!==e;)r=r.parentElement;if(!r)return null;let s=Array.from(e.children).indexOf(r);if(s<0)return null;let l=document.createRange();return l.selectNodeContents(r),l.setEnd(n.startContainer,n.startOffset),{line:s,offset:l.toString().length}}function $(e,t){let n,r=e.children[t.line];if(!r)return;let s=document.createTreeWalker(r,NodeFilter.SHOW_TEXT),l=t.offset;for(;n=s.nextNode();){let e=n.textContent?.length||0;if(l<=e){let e=window.getSelection(),t=document.createRange();t.setStart(n,l),t.collapse(!0),e?.removeAllRanges(),e?.addRange(t);return}l-=e}let o=window.getSelection(),a=document.createRange();a.selectNodeContents(r),a.collapse(!1),o?.removeAllRanges(),o?.addRange(a)}function I(e){return e.map(e=>`<div style="${R}">${e}</div>`).join("")}let P=(0,s.forwardRef)(function({content:e,filePath:t,showLineNumbers:n=!0,showSearch:p=!0,className:x="",cwd:g,enableComments:v=!1,scrollToLine:P=null,scrollToLineAlign:A="center",onScrollToLineComplete:_,highlightKeyword:D=null,visibleLineRef:B,onCmdClick:W,onTokenHover:F,onTokenHoverLeave:O,onTokenHoverCancel:V,blameLines:z,inlineBlameLines:H,onSelectCommit:U,editable:q=!1,initialMtime:K,onEditorClose:G,onSaved:X,onEditorStateChange:Y,viMode:J=!1,onContentMutate:Z,onEnterInsertMode:Q,onViSave:ee,viStateRef:et,initialCursorLine:en,initialCursorCol:er,onInitialCursorSet:es,onContentSearch:el},eo){let{t:ea}=(0,l.Bd)(),ei=(0,s.useRef)(e),ec=(0,s.useRef)(!1),[ed,eu]=(0,s.useState)(!1),[eh,em]=(0,s.useState)(!1),[ef,ep]=(0,s.useState)(()=>e.split("\n").length),ex=(0,s.useRef)(e.split("\n").length),[eg,eb]=(0,s.useState)({show:!1}),ev=(0,s.useRef)(null),ew=(0,s.useRef)(null),ey=(0,s.useRef)(K),ek=(0,s.useRef)(null),ej=(0,s.useRef)(!1),eC=(0,s.useRef)(!1),{parentRef:eN,containerRef:eS,searchInputRef:eE,floatingToolbarRef:eL,suppressHoverRef:eM,bumpToolbarRef:eR,savedSelectionRef:eT,highlightedLines:e$,isMounted:eI,cmdHeld:eP,flashLine:eA,isSearchVisible:e_,searchQuery:eD,caseSensitive:eB,wholeWord:eW,currentMatchIndex:eF,viewingComment:eO,addCommentInput:eV,sendToAIInput:ez,aiBridge:eH,commentsEnabled:eU,updateComment:eq,deleteComment:eK,lines:eG,matches:eX,rowData:eY,virtualizer:eJ,commentsByEndLine:eZ,linesWithComments:eQ,setIsSearchVisible:e0,setSearchQuery:e1,setCaseSensitive:e2,setWholeWord:e5,setViewingComment:e4,setAddCommentInput:e3,setSendToAIInput:e8,goToNextMatch:e6,goToPrevMatch:e9,handleSearchKeyDown:e7,handleCommentBubbleClick:te,handleToolbarAddComment:tt,handleToolbarSendToAI:tn,handleToolbarSearch:tr,handleCommentSubmit:ts,handleSendToAISubmit:tl,handleCommentSendToAI:to,getHighlightedLineHtml:ta,suppressMatchScrollRef:ti,inlineBlameLineRef:tc,inlineBlameVersion:td}=function({content:e,filePath:t,showSearch:n=!0,cwd:r,enableComments:l=!1,scrollToLine:o=null,scrollToLineAlign:a="center",onScrollToLineComplete:i,visibleLineRef:c,onContentSearch:d}){let[m,f]=(0,s.useState)(!1),p=(0,s.useRef)(null),x=(0,s.useRef)(null),g=(0,s.useRef)(null),b=(0,C.r)();(0,s.useEffect)(()=>{f(!0)},[]);let[v,w]=(0,s.useState)(!1),[E,L]=(0,s.useState)(null),M=(0,s.useRef)(null),[R,T]=(0,s.useState)(!1),[$,I]=(0,s.useState)(""),[P,A]=(0,s.useState)(!1),[_,D]=(0,s.useState)(!1),[B,W]=(0,s.useState)(0),[F,O]=(0,s.useState)(0),V=(0,s.useRef)(!1),[z,H]=(0,s.useState)(null),U=(0,s.useRef)(!1),q=(0,s.useRef)(null),[K,G]=(0,s.useState)(null),[X,Y]=(0,s.useState)(null),J=(0,s.useMemo)(()=>e.split("\n"),[e]),[Z,Q]=(0,s.useState)(null);(0,s.useEffect)(()=>{p.current!==Z&&Q(p.current)});let ee=l&&!!r,{toolbarRef:et,bumpRef:en,clearToolbar:er}=(0,N.L)({enabled:ee,container:Z,resolveLineRange:e=>{if(!document.contains(e))return null;let t=e.nodeType===Node.TEXT_NODE?e.parentElement:e,n=t?.closest("[data-line]");if(!n)return null;let r=parseInt(n.getAttribute("data-line")||"0",10);return!Number.isFinite(r)||r<=0?null:{start:r,end:r}},buildLineSnapshot:({start:e,end:t})=>J.slice(e-1,t).join("\n")}),es=(0,s.useRef)(null),[el,eo]=(0,s.useState)(0),{comments:ea,addComment:ei,updateComment:ec,deleteComment:ed,refresh:eu}=(0,k._)({cwd:r||"",filePath:t}),eh=(0,u.C)(J,t),em=(0,s.useMemo)(()=>{let e=new Map;for(let t of ea){let n=t.endLine;e.has(n)||e.set(n,[]),e.get(n).push(t)}return e},[ea]),ef=(0,s.useMemo)(()=>{let e=new Set;for(let t of ea)for(let n=t.startLine;n<=t.endLine;n++)e.add(n);return e},[ea]),ep=(0,s.useMemo)(()=>(0,h.Np)(J,$,P,_),[J,$,P,_]);(0,s.useEffect)(()=>{ep.length>0&&W(0)},[ep.length,$,P,_]);let ex=(0,s.useMemo)(()=>{let e=[];for(let t=0;t<J.length;t++)e.push({type:"code",lineIndex:t});return e},[J.length]),eg=(0,y.Te)({count:ex.length,getScrollElement:()=>p.current,estimateSize:()=>20,overscan:10});(0,s.useEffect)(()=>{if(!c)return;let e=p.current;if(!e)return;let t=()=>{if(!eg.range)return;let t=e.scrollTop;for(let e of eg.getVirtualItems())if(e.start>=t){let t=ex[e.index];t?.type==="code"&&(c.current=t.lineIndex+1);return}};return e.addEventListener("scroll",t,{passive:!0}),t(),()=>e.removeEventListener("scroll",t)},[c,ex]),(0,s.useEffect)(()=>{let e=e=>{"Meta"===e.key&&w(!0)},t=e=>{"Meta"===e.key&&w(!1)},n=()=>w(!1);return window.addEventListener("keydown",e),window.addEventListener("keyup",t),window.addEventListener("blur",n),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",t),window.removeEventListener("blur",n)}},[]),(0,s.useEffect)(()=>{if(!n)return;let e=e=>{(e.metaKey||e.ctrlKey)&&"f"===e.key&&(e.preventDefault(),T(!0),setTimeout(()=>g.current?.focus(),0)),"Escape"===e.key&&(R?(T(!1),I("")):X?Y(null):K?G(null):et.current?er():z&&H(null))},t=x.current;if(t)return t.addEventListener("keydown",e),()=>t.removeEventListener("keydown",e)},[n,R,X,K,z]),(0,s.useEffect)(()=>{if(V.current){V.current=!1;return}if(ep.length>0&&B>=0&&B<ep.length){let e=ep[B],t=ex.findIndex(t=>"code"===t.type&&t.lineIndex===e.lineIndex);t>=0&&eg.scrollToIndex(t,{align:"center"})}},[B,ep,eg,ex,F]);let eb=(0,s.useCallback)(()=>{0!==ep.length&&(W(e=>(e+1)%ep.length),O(e=>e+1))},[ep.length]),ev=(0,s.useCallback)(()=>{0!==ep.length&&(W(e=>(e-1+ep.length)%ep.length),O(e=>e+1))},[ep.length]),ew=(0,s.useRef)(o);ew.current=o,(0,s.useEffect)(()=>{if(null!==ew.current&&ew.current>0&&ex.length>0){let e=ew.current,t=e-1,n=ex.findIndex(e=>"code"===e.type&&e.lineIndex===t);if(n>=0){let t=()=>{eg.scrollToIndex(n,{align:a}),"center"===a&&(M.current&&clearTimeout(M.current),L(e),M.current=setTimeout(()=>L(null),500)),i?.()};"start"===a?requestAnimationFrame(t):setTimeout(t,150)}}},[o,a,ex.length,eg,i]);let ey=(0,s.useCallback)(e=>{"Enter"===e.key&&(e.preventDefault(),e.shiftKey?ev():eb()),"Escape"===e.key&&(T(!1),I(""))},[eb,ev]),ek=(0,s.useCallback)((e,t)=>{ee&&(t.stopPropagation(),H({comment:e,x:t.clientX,y:t.clientY}),er(),G(null),Y(null))},[ee,er]);(0,s.useEffect)(()=>{if(!ee)return;let e=p.current,t=!1,n=()=>{t=!0,q.current=null,U.current=!0},r=()=>{t=!1;let e=window.getSelection();if(!e||e.isCollapsed||!e.toString().trim()){U.current=!1;return}let n=e.getRangeAt(0),r=p.current;if(!r||!r.contains(n.commonAncestorContainer))return;let s=n.startContainer,l=n.endContainer,o=(s.nodeType===Node.TEXT_NODE?s.parentElement:s)?.closest("[data-line]"),a=(l.nodeType===Node.TEXT_NODE?l.parentElement:l)?.closest("[data-line]");if(!o||!a)return;let i=parseInt(o.getAttribute("data-line")||"0",10),c=parseInt(a.getAttribute("data-line")||"0",10);i&&c&&(U.current=!0,q.current={startLine:i,startOffset:S(o,n.startContainer,n.startOffset),endLine:c,endOffset:S(a,n.endContainer,n.endOffset)})},s=()=>{if(t)return;let e=window.getSelection();e&&!e.isCollapsed&&e.toString().trim()||(q.current=null,U.current=!1)};return e?.addEventListener("mousedown",n),document.addEventListener("mouseup",r),document.addEventListener("selectionchange",s),()=>{e?.removeEventListener("mousedown",n),document.removeEventListener("mouseup",r),document.removeEventListener("selectionchange",s)}},[ee]),(0,s.useEffect)(()=>{let e=p.current;if(!e)return;let t=t=>{let n,r;if(!e.contains(t.target)){if(t.target.closest?.("[data-inline-blame-tip]"))return;null!==es.current&&(es.current=null,eo(e=>e+1));return}let s=window.getSelection();if(s&&!s.isCollapsed&&s.toString().trim())return;let l=(n=t.target,(r=n.closest?.("[data-line]"))?parseInt(r.getAttribute("data-line")||"0",10):null);l!==es.current&&(es.current=l,requestAnimationFrame(()=>eo(e=>e+1)))};return document.addEventListener("mouseup",t),()=>document.removeEventListener("mouseup",t)},[]);let ej=(0,s.useCallback)(()=>{let e=et.current;e&&(G({x:e.x,y:e.y,range:e.range,selectedText:e.selectedText,lineSnapshot:e.lineSnapshot}),er())},[er,et]),eC=(0,s.useCallback)(()=>{let e=et.current;e&&(Y({x:e.x,y:e.y,range:e.range,selectedText:e.selectedText,lineSnapshot:e.lineSnapshot}),er())},[er,et]),eN=(0,s.useCallback)(()=>{let e=et.current;if(!e||!d)return;let t=e.selectedText.trim();er(),t&&d(t)},[d,er,et]),eS=(0,s.useCallback)(async e=>{K&&(await ei(K.range.start,K.range.end,e,K.selectedText),G(null))},[K,ei]),eE=(0,s.useCallback)(async(e,n)=>{if(b&&r)try{let s=await (0,j.$3)(r),l=[];for(let e of s)l.push({filePath:e.filePath,startLine:e.startLine,endLine:e.endLine,codeContent:e.codeContent,note:e.content||void 0});l.push({filePath:t,startLine:e.range.start,endLine:e.range.end,codeContent:e.lineSnapshot});let o=(0,j.Gw)(l,n);b.sendMessage(o),await (0,j.RP)(r),eu()}catch(e){console.error("Failed to send to AI:",e)}},[b,t,r,eu]),eL=(0,s.useCallback)(e=>{X&&eE(X,e)},[X,eE]),eM=(0,s.useCallback)(e=>{K&&eE(K,e)},[K,eE]),eR=(0,s.useCallback)((e,t,n)=>{let r=J[e];if(!r)return t;let s=[];if($&&ep.length>0)for(let t of ep.filter(t=>t.lineIndex===e)){let n=ep[B]?.lineIndex===e&&ep[B]?.startCol===t.startCol;s.push({start:t.startCol,end:t.endCol,cls:n?"hl-cur":"hl-m"})}if(n&&!$&&n.length>=1){let e=n.toLowerCase(),t=r.toLowerCase(),l=0;for(;-1!==(l=t.indexOf(e,l));)s.push({start:l,end:l+n.length,cls:"hl-kw"}),l+=1}if(0===s.length)return t;s.sort((e,t)=>e.start-t.start||e.end-t.end);let l=[],o=0;for(let e of s){if(e.start<o)continue;e.start>o&&l.push((0,h.ZD)(r.substring(o,e.start)));let t=(0,h.ZD)(r.substring(e.start,e.end));l.push(`<span class="${e.cls}">${t}</span>`),o=e.end}if(o<r.length&&l.push((0,h.ZD)(r.substring(o))),t!==(0,h.ZD)(r)){let e=t;for(let t of s){let n=r.substring(t.start,t.end),s=(0,h.ZD)(n),l=s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=RegExp(`(?<=>)([^<]*?)(${l})`,""),a=`$1<span class="${t.cls}">${s}</span>`,i=e.replace(o,a);i.length>e.length+200||(e=i)}return e}return l.join("")},[$,ep,B,J]);return{parentRef:p,containerRef:x,searchInputRef:g,floatingToolbarRef:et,suppressHoverRef:U,savedSelectionRef:q,highlightedLines:eh,isMounted:m,cmdHeld:v,flashLine:E,isSearchVisible:R,searchQuery:$,caseSensitive:P,wholeWord:_,currentMatchIndex:B,viewingComment:z,bumpToolbarRef:en,addCommentInput:K,sendToAIInput:X,aiBridge:b,commentsEnabled:ee,comments:ea,updateComment:ec,deleteComment:ed,lines:J,matches:ep,rowData:ex,virtualizer:eg,commentsByEndLine:em,linesWithComments:ef,setIsSearchVisible:T,setSearchQuery:I,suppressMatchScrollRef:V,setCaseSensitive:A,setWholeWord:D,setViewingComment:H,setAddCommentInput:G,setSendToAIInput:Y,goToNextMatch:eb,goToPrevMatch:ev,handleSearchKeyDown:ey,handleCommentBubbleClick:ek,handleToolbarAddComment:ej,handleToolbarSendToAI:eC,handleToolbarSearch:eN,handleCommentSubmit:eS,handleSendToAISubmit:eL,handleCommentSendToAI:eM,getHighlightedLineHtml:eR,inlineBlameLineRef:es,inlineBlameVersion:el}}({content:e,filePath:t,showSearch:p,cwd:g,enableComments:!q&&v,scrollToLine:q?null:P,scrollToLineAlign:q?"center":A,onScrollToLineComplete:q?void 0:_,visibleLineRef:q?void 0:B,onContentSearch:el}),tu=(0,c.iN)(),th=(0,s.useRef)(null),tm=(0,s.useRef)(null),tf=(0,s.useRef)({line:0,col:0}),tp=(0,s.useRef)({line:0,col:0}),tx=function({lines:e,enabled:t,onContentChange:n,onEnterInsert:r,onSave:l,getVisibleLineCount:o,scrollToLine:a,onSearchExecute:i,onSearchNext:c,onSearchPrev:d,onSearchClear:u}){let[h,m]=(0,s.useState)("normal"),[f,p]=(0,s.useState)(-1),[x,g]=(0,s.useState)(0),[b,v]=(0,s.useState)(!1),[w,y]=(0,s.useState)(""),[k,j]=(0,s.useState)(""),[C,N]=(0,s.useState)(""),[S,E]=(0,s.useState)(""),L=(0,s.useRef)([]),M=(0,s.useRef)([]),R=(0,s.useRef)([]),T=(0,s.useRef)(null),$=(0,s.useRef)(e);(0,s.useEffect)(()=>{$.current=e}),(0,s.useEffect)(()=>{0!==e.length&&queueMicrotask(()=>p(t=>Math.min(t,e.length-1)))},[e.length]);let I=(0,s.useCallback)((e,t)=>Math.max(0,Math.min(t,Math.max(0,($.current[e]??"").length-1))),[]),P=(0,s.useRef)(e.length);(0,s.useEffect)(()=>{let t=Math.abs(e.length-P.current);P.current=e.length,t>10&&(queueMicrotask(()=>{p(-1),g(0),v(!1)}),L.current=[],M.current=[],R.current=[])},[e]);let A=(0,s.useCallback)(()=>{T.current&&(clearTimeout(T.current),T.current=null),y("")},[]),_=(0,s.useCallback)(()=>{T.current&&clearTimeout(T.current),T.current=setTimeout(()=>{y(""),T.current=null},500)},[]),D=(0,s.useCallback)((e,t)=>{L.current.push(t),M.current=[],v(!0),n(e.join("\n"))},[n]),B=(0,s.useCallback)((e,t)=>{let n=Math.max(0,Math.min(e,$.current.length-1));p(n),g(I(n,t??0)),a(n,"auto")},[a,I]),W=(0,s.useCallback)(e=>{p(t=>{let n=Math.max(0,Math.min(t+e,$.current.length-1));return a(n,"auto"),g(e=>Math.max(0,Math.min(e,Math.max(0,($.current[n]??"").length-1)))),n})},[a]),F=(0,s.useCallback)(()=>{let e=$.current,t=Math.min(f,e.length-1);if(0===e.length)return;let n=e[t];R.current=[n];let r=[...e];r.splice(t,1),0===r.length&&r.push("");let s=Math.min(t,r.length-1);D(r,{lineIndex:t,oldLines:[n],newLines:[],cursorLine:t}),p(s),g(0)},[f,D]),O=(0,s.useCallback)(()=>{let e=$.current,t=Math.min(f,e.length-1);e.length>0&&(R.current=[e[t]])},[f]),V=(0,s.useCallback)(()=>{let e=R.current;if(0===e.length)return;let t=$.current,n=Math.min(f,t.length-1)+1,r=[...t];r.splice(n,0,...e),D(r,{lineIndex:n,oldLines:[],newLines:[...e],cursorLine:f}),p(n),g(0),a(n,"auto")},[f,D,a]),z=(0,s.useCallback)(()=>{let e=$.current,t=Math.min(f,e.length-1),n=e[t];if(!n||0===n.length)return;let r=n.substring(1),s=[...e];s[t]=r,D(s,{lineIndex:t,oldLines:[n],newLines:[r],cursorLine:f})},[f,D]),H=(0,s.useCallback)(()=>{let e=L.current;if(0===e.length)return;let t=e.pop(),r=[...$.current];0===t.newLines.length&&t.oldLines.length>0?r.splice(t.lineIndex,0,...t.oldLines):0===t.oldLines.length&&t.newLines.length>0?(r.splice(t.lineIndex,t.newLines.length),0===r.length&&r.push("")):r.splice(t.lineIndex,t.newLines.length,...t.oldLines),M.current.push(t),n(r.join("\n")),p(Math.min(t.cursorLine,r.length-1)),a(Math.min(t.cursorLine,r.length-1),"auto"),0===e.length&&v(!1)},[n,a]),U=(0,s.useCallback)(()=>{let e=M.current;if(0===e.length)return;let t=e.pop(),r=[...$.current];0===t.newLines.length&&t.oldLines.length>0?(r.splice(t.lineIndex,t.oldLines.length),0===r.length&&r.push("")):0===t.oldLines.length&&t.newLines.length>0?r.splice(t.lineIndex,0,...t.newLines):r.splice(t.lineIndex,t.oldLines.length,...t.newLines),L.current.push(t),v(!0),n(r.join("\n"));let s=t.lineIndex+Math.max(0,t.newLines.length-1);p(Math.min(s,r.length-1)),a(Math.min(s,r.length-1),"auto")},[n,a]),q=(0,s.useCallback)(e=>{let t=$.current,n=Math.min(f,t.length-1);if("o"===e||"O"===e){let r="o"===e?n+1:n,s=[...t];s.splice(r,0,""),D(s,{lineIndex:r,oldLines:[],newLines:[""],cursorLine:f}),n=r,p(r)}m("insert"),r(n,x,e)},[f,x,D,r]),K=(0,s.useCallback)(()=>{m("normal"),A()},[A]),G=(0,s.useCallback)(()=>{m("command"),j("")},[]),X=(0,s.useCallback)(()=>{m("normal"),j("")},[]),Y=(0,s.useCallback)(()=>{m("search"),N("")},[]),J=(0,s.useCallback)(()=>{m("normal"),N("")},[]),Z=(0,s.useCallback)(e=>{let t=e.trim();if("w"===t){l?.(),m("normal"),j("");return}if("q"===t){m("normal"),j("");return}if("wq"===t){l?.(),m("normal"),j("");return}if("noh"===t||"nohlsearch"===t){u?.(),m("normal"),j("");return}let n=parseInt(t,10);if(!isNaN(n)&&n>0){let e=Math.min(n-1,$.current.length-1);p(e),a(e,"center"),m("normal"),j("");return}m("normal"),j("")},[l,u,a]),Q=(0,s.useCallback)(e=>{if(!e){m("normal"),N("");return}E(e),i?.(e),m("normal"),N("")},[i]),ee=(0,s.useCallback)(e=>{if(!t)return!1;let n=e.ctrlKey&&"c"===e.key&&!e.metaKey&&!e.shiftKey;if("insert"===h)return("Escape"===e.key||!!n)&&(K(),!0);if("command"===h)return!e.isComposing&&("Escape"===e.key||n?X():"Enter"===e.key?Z(k):"Backspace"===e.key?0===k.length?X():j(e=>e.slice(0,-1)):1!==e.key.length||e.metaKey||e.ctrlKey||j(t=>t+e.key),!0);if("search"===h)return!e.isComposing&&("Escape"===e.key||n?J():"Enter"===e.key?Q(C):"Backspace"===e.key?0===C.length?J():N(e=>e.slice(0,-1)):1!==e.key.length||e.metaKey||e.ctrlKey||N(t=>t+e.key),!0);if(f<0&&(p(0),g(0)),e.metaKey)return!1;if(e.ctrlKey)return"d"===e.key?(W(Math.max(1,Math.floor(o()/2))),A(),!0):"u"===e.key?(W(-Math.max(1,Math.floor(o()/2))),A(),!0):"r"===e.key&&(U(),A(),!0);let r=e.key,s=w+r;if("g"===s)return y("g"),_(),!0;if("gg"===s)return B(0),A(),!0;if("d"===s)return y("d"),_(),!0;if("dd"===s)return F(),A(),!0;if("y"===s)return y("y"),_(),!0;if("yy"===s)return O(),A(),!0;if(w&&s!==r&&A(),"j"===r||"ArrowDown"===r)return W(1),!0;if("k"===r||"ArrowUp"===r)return W(-1),!0;if("h"===r||"ArrowLeft"===r)return g(e=>Math.max(0,e-1)),!0;if("l"===r||"ArrowRight"===r){let e=Math.max(0,($.current[f]??"").length-1);return g(t=>Math.min(e,t+1)),!0}if("0"===r)return g(0),!0;if("$"===r)return g(Math.max(0,($.current[f]??"").length-1)),!0;if("^"===r){let e=($.current[f]??"").search(/\S/);return g(e>=0?e:0),!0}return"G"===r?(B($.current.length-1),!0):"x"===r?(z(),!0):"p"===r?(V(),!0):"u"===r?(H(),!0):"i"===r||"a"===r||"I"===r||"A"===r||"o"===r||"O"===r?(q(r),!0):"/"===r?(Y(),!0):"n"===r?(c?.(),!0):"N"===r?(d?.(),!0):":"===r?(G(),!0):"Escape"!==r&&1===r.length},[t,h,w,k,C,f,K,q,G,X,Y,J,Z,Q,W,B,o,F,O,V,z,H,U,A,_,c,d]);return{state:{mode:h,cursorLine:f,cursorCol:x,isDirty:b,keyBuffer:w,commandInput:k,searchInput:C,lastSearch:S},handleKeyDown:ee,enterNormal:K,enterInsert:q,setCursorLine:p,setCursorCol:g,setCommandInput:j,setSearchInput:N,setIsDirty:v,clearUndoHistory:(0,s.useCallback)(()=>{L.current=[],M.current=[]},[])}}({lines:eG,enabled:J&&!q,onContentChange:e=>{tf.current={line:tp.current.line,col:tp.current.col},Z?.(e)},onEnterInsert:(e,t,n)=>{let r=t;if("a"===n)r=t+1;else if("A"===n)r=(eG[e]??"").length;else if("I"===n){let t=(eG[e]??"").search(/\S/);r=t>=0?t:0}else("o"===n||"O"===n)&&(r=0);tf.current={line:e,col:r},Q?.(e)},onSave:ee,getVisibleLineCount:()=>{let e=eN.current;return e?Math.floor(e.clientHeight/20):20},scrollToLine:(e,t)=>{let n=eY.findIndex(t=>"code"===t.type&&t.lineIndex===e);n>=0&&eJ.scrollToIndex(n,{align:t||"auto"})},onSearchExecute:e=>{e1(e),e0(!1)},onSearchNext:e6,onSearchPrev:e9,onSearchClear:()=>{e1("")}});(0,s.useEffect)(()=>{et&&(et.current={cursorLine:tx.state.cursorLine,cursorCol:tx.state.cursorCol}),tp.current={line:tx.state.cursorLine,col:tx.state.cursorCol}},[et,tx.state.cursorLine,tx.state.cursorCol]);let tg=(0,s.useRef)(null);(0,s.useEffect)(()=>{J&&!q&&null!=en&&t&&tg.current!==t&&(tg.current=t,tx.setCursorLine(en-1),null!=er&&tx.setCursorCol(er-1),es?.())},[J,q,en,er,t]),(0,s.useEffect)(()=>{if(!J||q)return;let e=eS.current;if(!e)return;let t=e=>{let t=e.target;"TEXTAREA"===t.tagName||"INPUT"===t.tagName||t.isContentEditable||tx.handleKeyDown(e)&&(e.preventDefault(),e.stopPropagation())};return e.addEventListener("keydown",t,!0),()=>e.removeEventListener("keydown",t,!0)},[J,q,tx.handleKeyDown]),(0,s.useEffect)(()=>{if(!J||q)return;let e=eS.current;e&&"normal"===tx.state.mode&&requestAnimationFrame(()=>{let t=document.activeElement;t&&("TEXTAREA"===t.tagName||"INPUT"===t.tagName||t.isContentEditable)||e.focus()})},[J,q,tx.state.mode,e]);let tb=(0,s.useCallback)(e=>{if(!J||q)return;let t=e.target.closest("[data-line]");if(t){let n=parseInt(t.getAttribute("data-line"),10);if(!isNaN(n)){tx.setCursorLine(n-1);let r=t.querySelector("[data-code-content]");if(r){let t=document.caretRangeFromPoint(e.clientX,e.clientY);if(t&&r.contains(t.startContainer)){let e,s=document.createTreeWalker(r,NodeFilter.SHOW_TEXT),l=0;for(;e=s.nextNode();){if(e===t.startContainer){l+=t.startOffset;break}l+=e.textContent?.length||0}let o=eG[n-1]??"";tx.setCursorCol(Math.max(0,Math.min(l,Math.max(0,o.length-1))))}}}}let n=e.target;if("TEXTAREA"===n.tagName||"INPUT"===n.tagName||n.isContentEditable)return;let r=eS.current;r&&r.focus()},[J,q,tx.setCursorLine,tx.setCursorCol,eG]),tv=(0,s.useCallback)(e=>{J&&!q&&requestAnimationFrame(()=>{let e=window.getSelection(),t=e?.toString().trim();t&&/^\S+$/.test(t)&&(ti.current=!0,e1(t))})},[J,q,e1,ti]);(0,s.useEffect)(()=>{"command"===tx.state.mode?setTimeout(()=>th.current?.focus(),0):"search"===tx.state.mode&&setTimeout(()=>tm.current?.focus(),0)},[tx.state.mode]),(0,s.useEffect)(()=>{let e=eN.current;if(!e)return;let t=()=>{(V??O)?.()};return e.addEventListener("mousedown",t),()=>e.removeEventListener("mousedown",t)},[V,O]),(0,s.useEffect)(()=>{eV||ez?(eM.current=!0,O?.()):eL.current||(eM.current=!1)},[eV,ez,O]),(0,s.useLayoutEffect)(()=>{let e=eT.current;if(!e)return;let t=window.getSelection();if(t&&!t.isCollapsed)return;let n=eN.current;if(!n)return;let r=n.querySelector(`[data-line="${e.startLine}"]`),s=n.querySelector(`[data-line="${e.endLine}"]`);if(!r||!s)return;let l=E(r,e.startOffset),o=E(s,e.endOffset);if(l&&o)try{let e=document.createRange();e.setStart(l.node,l.offset),e.setEnd(o.node,o.offset),t?.removeAllRanges(),t?.addRange(e)}catch{}});let tw=(0,s.useCallback)((e,t,n)=>{eM.current||F?.(e,t,n)},[F]),ty=(0,s.useCallback)((e,t)=>{eM.current||W?.(e,t)},[W]),tk=Math.max(4,String(q?ef:eG.length).length),tj=(0,s.useMemo)(()=>{let e=0;for(let t of eG){let n=0;for(let e=0;e<t.length;e++)" "===t[e]?n+=2-n%2:n+=1;n>e&&(e=n)}return e},[eG]);(0,s.useEffect)(()=>{if(q){ei.current=e;let t=e.split("\n").length;ex.current=t,ep(t),ec.current=!1,eu(!1),eb({show:!1}),ey.current=K}},[q,e,K]),(0,s.useEffect)(()=>{if(!q)return;let t=ev.current;if(!t)return;let n=e.split("\n");t.innerHTML=I(n.map((e,t)=>e$[t]||(0,h.ZD)(e||" "))),requestAnimationFrame(()=>{let e,r;J?(e=Math.max(0,Math.min(tf.current.line,n.length-1)),r=tf.current.col):(e=Math.max(0,Math.min((B?.current??1)-1,n.length-1)),r=0),t.focus(),$(t,{line:e,offset:r});let s=B?.current??1;ew.current&&(ew.current.scrollTop=(s-1)*20)})},[q]),(0,s.useEffect)(()=>{q&&Y?.({isDirty:ed,isSaving:eh})},[q,ed,eh,Y]);let tC=(0,s.useCallback)(()=>{let e=ev.current;if(!e)return ei.current;let t=[];for(let n of e.childNodes){let e=n.textContent||"";t.push(" "===e?"":e)}return t.join("\n")},[]),tN=(0,s.useCallback)(()=>{ek.current&&clearTimeout(ek.current),ek.current=setTimeout(async()=>{let e=ev.current;if(e&&!eC.current){ei.current=tC();try{let n=await (0,h.kS)(),r=(0,h.sQ)(t),s=document.documentElement.classList.contains("dark"),l=ei.current.split("\n"),o=n.codeToTokens(l.join("\n"),{lang:r,theme:s?"github-dark":"github-light"}).tokens.map(e=>(0,h.b8)(e)),a=T(e);ej.current=!0,e.innerHTML=I(o),ej.current=!1,a&&$(e,a)}catch{}}},300)},[t,tC]);(0,s.useEffect)(()=>{if(q)return()=>{ek.current&&clearTimeout(ek.current)}},[q]);let tS=(0,s.useCallback)(()=>{let e=ev.current;if(!e)return;ec.current||(ec.current=!0,eu(!0));let t=e.children.length;t!==ex.current&&(ex.current=t,ep(t))},[]),tE=(0,s.useCallback)(()=>{ej.current||eC.current||(tS(),tN())},[tS,tN]),tL=(0,s.useCallback)(e=>{if(!e.nativeEvent.isComposing&&("Tab"===e.key&&(e.preventDefault(),document.execCommand("insertText",!1," ")),"Enter"===e.key)){e.preventDefault();let t=ev.current;if(!t)return;let n=window.getSelection();if(!n?.rangeCount)return;let r=n.getRangeAt(0);r.deleteContents();let s=r.startContainer;for(;s&&s.parentElement!==t;)s=s.parentElement;if(!s||!(s instanceof HTMLElement))return;let l=T(t),o=Array.from(t.children).indexOf(s),a=s.textContent||"",i=l?.offset??a.length,c=a.substring(0,i),d=a.substring(i);s.innerHTML=(0,h.ZD)(c||" ");let u=document.createElement("div");u.setAttribute("style",R),u.innerHTML=(0,h.ZD)(d||" "),s.after(u),$(t,{line:o+1,offset:0}),tS(),tN()}},[tS,tN]),tM=(0,s.useCallback)(e=>{e.preventDefault();let t=e.clipboardData.getData("text/plain");document.execCommand("insertText",!1,t)},[]),tR=(0,s.useCallback)(async(e=!1)=>{if(!g)return;ei.current=tC(),em(!0);let n=await a.t4.runPromiseExit((0,i.OJ)({cwd:g,path:t,content:ei.current,expectedMtime:e?void 0:ey.current}));if("Failure"===n._tag){console.error("Error saving file:",n.cause),(0,M.oR)(ea("toast.saveFailed"),"error"),em(!1);return}let r=n.value,s=r.data;if(409===r.status&&s?.conflict){let e=await a.t4.runPromiseExit((0,i.K9)(g,t));"Success"===e._tag&&e.value.ok&&"string"==typeof e.value.data?.content?eb({show:!0,diskContent:e.value.data.content}):eb({show:!0}),em(!1);return}if(!r.ok){console.error("Error saving file: status",r.status),(0,M.oR)(ea("toast.saveFailed"),"error"),em(!1);return}let l=s?.mtime;l&&(ey.current=l),ec.current=!1,eu(!1),eb({show:!1}),(0,M.oR)(ea("toast.savedSuccess"),"success"),X?.(),em(!1)},[g,t,tC,X,ea]),tT=(0,s.useCallback)(async()=>{ed&&!eh&&await tR(!1)},[ed,eh,tR]),t$=(0,s.useCallback)(async()=>{eb({show:!1}),await tR(!0)},[tR]),tI=(0,s.useCallback)(()=>{if(void 0!==eg.diskContent){ei.current=eg.diskContent;let t=eg.diskContent.split("\n").length;ex.current=t,ep(t);let n=eg.diskContent!==e;ec.current=n,eu(n);let r=ev.current;r&&(r.innerHTML=I(eg.diskContent.split("\n").map(e=>(0,h.ZD)(e||" "))),tN())}eb({show:!1}),X?.()},[eg.diskContent,e,X,tN]),tP=(0,s.useCallback)(()=>{let e=ew.current;return e?Math.floor(e.scrollTop/20)+1:B?.current??1},[B]),tA=(0,s.useCallback)(async()=>{(!ed||await (0,M.lJ)(ea("codeViewer.unsavedConfirm"),{danger:!0,confirmText:ea("codeViewer.discardChanges"),cancelText:ea("codeViewer.continueEditing")}))&&G?.(tP())},[ed,G,tP]);(0,s.useEffect)(()=>{if(!q)return;let e=e=>{(e.metaKey||e.ctrlKey)&&"s"===e.key&&(e.preventDefault(),tT())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[q,tT]);let t_=(0,s.useCallback)(()=>{let e=tC();Z?.(e);let t=ev.current,n=t?T(t):null,r=tP();if(tx.enterNormal(),n){tx.setCursorLine(n.line);let t=e.split("\n")[n.line]??"";tx.setCursorCol(Math.max(0,Math.min(n.offset,Math.max(0,t.length-1))))}else tx.setCursorLine(Math.max(0,r-1));G?.(r)},[tC,Z,tP,G,tx]);(0,s.useEffect)(()=>{if(!q)return;let e=e=>{let t="Escape"===e.key,n=e.ctrlKey&&"c"===e.key&&!e.metaKey&&!e.shiftKey;(t||J&&n)&&(e.preventDefault(),e.stopPropagation(),J?ec.current?(0,M.lJ)(ea("codeViewer.unsavedExitConfirm"),{danger:!0,confirmText:ea("codeViewer.discardChanges"),cancelText:ea("codeViewer.continueEditing")}).then(e=>{e&&t_()}):t_():tA())};return document.addEventListener("keydown",e,!0),()=>document.removeEventListener("keydown",e,!0)},[q,J,tA,t_]);let tD=(0,s.useCallback)(()=>{ec.current||(ec.current=!0,eu(!0))},[]);(0,s.useImperativeHandle)(eo,()=>({save:tT,close:tA,markDirty:tD,get isDirty(){return ec.current},get isSaving(){return eh}}),[tT,tA,tD,eh]);let tB=!!(z&&z.length>0),tW=(0,s.useMemo)(()=>{if(!z)return new Map;let e=[...new Set(z.map(e=>e.author))],t=new Map;return e.forEach((e,n)=>{t.set(e,b[n%b.length])}),t},[z]),[tF,tO]=(0,s.useState)(null),[tV,tz]=(0,s.useState)(null);(0,s.useEffect)(()=>{tO(null),tz(null)},[z]);let tH=(0,s.useCallback)((e,t)=>{tO(e.author);let n=t.currentTarget.getBoundingClientRect();tz({line:e,x:n.right+8,y:n.top})},[]),tU=(0,s.useCallback)(()=>{tO(null),tz(null)},[]),tq=(0,s.useCallback)(e=>{U&&(U({hash:e.hashFull,shortHash:e.hash,author:e.author,authorEmail:e.authorEmail,date:new Date(1e3*e.time).toISOString(),subject:e.message.split("\n")[0]||"",body:e.message.split("\n").slice(1).join("\n").trim(),time:e.time}),tz(null))},[U]),tK=`${tk+2}ch`;return(0,r.jsxs)("div",{ref:eS,className:`h-full flex flex-col outline-none ${x}`,tabIndex:0,onClick:tb,onDoubleClick:tv,children:[q&&eg.show&&(0,r.jsxs)("div",{className:"px-4 py-2 bg-amber-500/15 border-b border-amber-500/30 flex items-center gap-3 flex-shrink-0",children:[(0,r.jsx)("svg",{className:"w-5 h-5 text-amber-500 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z"})}),(0,r.jsx)("span",{className:"text-sm text-foreground flex-1",children:ea("codeViewer.fileModifiedExternally")}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("button",{onClick:tI,className:"px-3 py-1 text-sm rounded border border-border hover:bg-accent transition-colors",children:ea("codeViewer.useDiskVersion")}),(0,r.jsx)("button",{onClick:t$,className:"px-3 py-1 text-sm rounded bg-amber-500 text-white hover:bg-amber-600 transition-colors",children:ea("codeViewer.forceOverwrite")})]})]}),!q&&p&&e_&&(0,r.jsxs)("div",{className:"flex-shrink-0 flex items-center gap-2 px-3 py-2 bg-secondary border-b border-border",children:[(0,r.jsx)("input",{ref:eE,type:"text",value:eD,onChange:e=>e1(e.target.value),onKeyDown:e7,placeholder:ea("codeViewer.searchPlaceholder"),className:"flex-1 max-w-xs px-2 py-1 text-sm border border-border rounded bg-card text-foreground focus:outline-none focus:ring-2 focus:ring-ring"}),(0,r.jsx)("button",{onClick:()=>e2(!eB),className:`px-2 py-1 text-xs font-mono rounded border transition-colors ${eB?"bg-brand text-white border-brand":"border-border text-muted-foreground hover:bg-accent"}`,title:ea("codeViewer.caseSensitive"),children:"Aa"}),(0,r.jsx)("button",{onClick:()=>e5(!eW),className:`px-2 py-1 text-xs font-mono rounded border transition-colors ${eW?"bg-brand text-white border-brand":"border-border text-muted-foreground hover:bg-accent"}`,title:ea("codeViewer.wholeWordMatch"),children:"[ab]"}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground",children:eX.length>0?`${eF+1}/${eX.length}`:ea("common.noMatch")}),(0,r.jsx)("button",{onClick:e9,disabled:0===eX.length,className:"p-1 rounded hover:bg-accent disabled:opacity-50",title:ea("common.previous"),children:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 15l7-7 7 7"})})}),(0,r.jsx)("button",{onClick:e6,disabled:0===eX.length,className:"p-1 rounded hover:bg-accent disabled:opacity-50",title:ea("common.next"),children:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})}),(0,r.jsx)("button",{onClick:()=>{e0(!1),e1("")},className:"p-1 rounded hover:bg-accent",title:ea("common.close"),children:(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),q?(0,r.jsx)("div",{ref:ew,className:"flex-1 overflow-auto bg-secondary",children:(0,r.jsxs)("div",{className:"flex",style:{minHeight:"100%"},children:[(0,r.jsx)("div",{className:"flex-shrink-0 font-mono text-sm select-none sticky left-0 z-[2] bg-secondary",style:{width:tK},children:Array.from({length:ef},(e,t)=>(0,r.jsx)("div",{className:"text-right text-muted-foreground/50 pr-3",style:{height:20,lineHeight:"20px"},children:t+1},t))}),(0,r.jsx)("div",{ref:ev,contentEditable:!0,suppressContentEditableWarning:!0,onInput:tE,onKeyDown:tL,onPaste:tM,onCompositionStart:()=>{eC.current=!0},onCompositionEnd:()=>{eC.current=!1,tE()},spellCheck:!1,autoCorrect:"off",autoCapitalize:"off",className:"flex-1 font-mono text-sm outline-none",style:{caretColor:"var(--foreground)",tabSize:2}})]})}):(0,r.jsx)("div",{ref:eN,className:`flex-1 overflow-auto font-mono text-sm bg-secondary${eP?" cmd-held-container":""}`,children:(0,r.jsx)("div",{style:{height:`${eJ.getTotalSize()}px`,minWidth:"100%",width:tB?`calc(${tk+tj+10}ch + 13rem)`:`${tk+tj+10}ch`,position:"relative"},children:eJ.getVirtualItems().map(e=>{let t=eY[e.index];if("code"!==t.type)return null;let s=t.lineIndex,l=s+1,o=e$[s]||(0,h.ZD)(eG[s]||""),a=ta(s,o,D),i=eQ.has(l),c=eZ.get(l),d=c?.[0],u=!!(eV&&l>=eV.range.start&&l<=eV.range.end),m=td>=0?tc.current:null,f=!q&&H&&m===l?H[s]??null:null,p=tB?z[s]:void 0,x=tB&&s>0?z[s-1]:void 0,g=!!p&&(!x||x.hash!==p.hash),b=p?tW.get(p.author):void 0;return(0,r.jsx)(w,{virtualKey:e.key,lineNum:l,highlightedHtml:a,hasComments:i,firstComment:d,lineCommentsCount:c?.length,isInRange:u,showLineNumbers:n,lineNumChars:tk,commentsEnabled:eU,virtualItemSize:e.size,virtualItemStart:e.start,onCommentBubbleClick:te,onCmdClick:ty,onTokenHover:tw,onTokenHoverLeave:O,flashLine:eA,blameLine:p,showBlameInfo:g,blameAuthorColor:b,isBlameHovered:!!(p&&tF===p.author),onBlameClick:tq,onBlameMouseEnter:tH,onBlameMouseLeave:tU,inlineBlameData:f,onInlineBlameClick:tq,isCursorLine:J&&!q&&tx.state.cursorLine===s,cursorCol:J&&!q&&tx.state.cursorLine===s?tx.state.cursorCol:void 0},e.key)})})}),J&&(0,r.jsxs)("div",{className:"vi-status-bar flex-shrink-0 h-6 bg-card border-t border-border flex items-center px-3 text-xs font-mono select-none",children:["normal"===tx.state.mode&&(0,r.jsx)("span",{className:"text-green-11 font-medium",children:"NORMAL"}),"insert"===tx.state.mode&&(0,r.jsx)("span",{className:"text-blue-11 font-medium",children:"INSERT"}),"command"===tx.state.mode&&(0,r.jsxs)("div",{className:"flex items-center flex-1",children:[(0,r.jsx)("span",{className:"text-foreground",children:":"}),(0,r.jsx)("input",{ref:th,value:tx.state.commandInput,onChange:e=>tx.setCommandInput(e.target.value),onKeyDown:e=>{if(e.nativeEvent.isComposing)return;let t=e.ctrlKey&&"c"===e.key&&!e.metaKey&&!e.shiftKey;("Enter"===e.key||"Escape"===e.key||t)&&(e.preventDefault(),e.stopPropagation(),tx.handleKeyDown(e.nativeEvent))},className:"flex-1 bg-transparent outline-none text-foreground ml-0.5",spellCheck:!1,autoComplete:"off"})]}),"search"===tx.state.mode&&(0,r.jsxs)("div",{className:"flex items-center flex-1",children:[(0,r.jsx)("span",{className:"text-foreground",children:"/"}),(0,r.jsx)("input",{ref:tm,value:tx.state.searchInput,onChange:e=>tx.setSearchInput(e.target.value),onKeyDown:e=>{if(e.nativeEvent.isComposing)return;let t=e.ctrlKey&&"c"===e.key&&!e.metaKey&&!e.shiftKey;("Enter"===e.key||"Escape"===e.key||t)&&(e.preventDefault(),e.stopPropagation(),tx.handleKeyDown(e.nativeEvent))},className:"flex-1 bg-transparent outline-none text-foreground ml-0.5",spellCheck:!1,autoComplete:"off"})]}),tx.state.keyBuffer&&"normal"===tx.state.mode&&(0,r.jsx)("span",{className:"ml-2 text-muted-foreground",children:tx.state.keyBuffer}),tx.state.isDirty&&("normal"===tx.state.mode||"command"===tx.state.mode)&&(0,r.jsx)("span",{className:"ml-2 text-amber-11",children:"[+]"}),(0,r.jsxs)("span",{className:"ml-auto text-muted-foreground",children:[tx.state.cursorLine+1,":",tx.state.cursorCol+1]})]}),eI&&tu&&(0,o.createPortal)((0,r.jsxs)(r.Fragment,{children:[!q&&(0,r.jsx)(m.f,{floatingToolbarRef:eL,bumpRef:eR,container:tu,onAddComment:tt,onSendToAI:tn,onSearch:el?tr:void 0,isChatLoading:eH?.isLoading}),!q&&eV&&(0,r.jsx)(d.t,{x:eV.x,y:eV.y,range:eV.range,filePath:t,lineSnapshot:eV.lineSnapshot,container:tu,onSubmit:ts,onSendToAI:eH?to:void 0,onClose:()=>e3(null),isChatLoading:eH?.isLoading}),!q&&ez&&(0,r.jsx)(d.G,{x:ez.x,y:ez.y,range:ez.range,filePath:t,lineSnapshot:ez.lineSnapshot,container:tu,onSubmit:tl,onClose:()=>e8(null),isChatLoading:eH?.isLoading}),!q&&eO&&(0,r.jsx)(f.t,{x:eO.x,y:eO.y,comment:eO.comment,container:tu,onClose:()=>e4(null),onUpdateComment:eq,onDeleteComment:eK}),tV&&(0,r.jsxs)("div",{className:"fixed z-50 bg-card border border-border rounded-lg shadow-lg p-3 max-w-lg",style:{left:Math.min(tV.x,window.innerWidth-450),top:Math.max(8,Math.min(tV.y,window.innerHeight-200))},children:[(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("div",{className:"px-2 py-0.5 rounded text-xs font-mono font-medium text-white flex-shrink-0",style:{backgroundColor:tW.get(tV.line.author)?.border||"#666"},children:tV.line.hash}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("div",{className:"text-sm font-medium text-foreground",children:tV.line.author}),(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:tV.line.authorEmail})]})]}),(0,r.jsx)("div",{className:"mt-2 text-sm text-foreground whitespace-pre-wrap max-h-48 overflow-y-auto",children:tV.line.message}),(0,r.jsxs)("div",{className:"mt-2 text-xs text-muted-foreground border-t border-border pt-2",children:[(0,L.fw)(tV.line.time)," \xb7 ",new Date(1e3*tV.line.time).toLocaleString(),(0,r.jsx)("span",{className:"ml-2 text-brand",children:ea("codeViewer.clickToViewDetails")})]})]})]}),tu)]})});function A({content:e,filePath:t,className:n=""}){let l=(0,s.useMemo)(()=>e.split("\n"),[e]),o=(0,u.C)(l,t),a=Math.max(4,String(l.length).length);return(0,r.jsx)("pre",{className:`overflow-auto text-sm font-mono bg-secondary p-2 ${n}`,children:l.map((e,t)=>(0,r.jsxs)("div",{className:"flex",children:[(0,r.jsx)("span",{className:"text-slate-9 select-none pr-4 text-right",style:{minWidth:`${a+2}ch`},children:t+1}),(0,r.jsx)("span",{className:"flex-1",dangerouslySetInnerHTML:{__html:o[t]||(0,h.ZD)(e||" ")}})]},t))})}},38987:(e,t,n)=>{n.d(t,{zB:()=>$,e$:()=>T,vP:()=>E});var r=n(95155),s=n(12115),l=n(79114),o=n(49433),a=n(77725),i=n(62111),c=n(70188),d=n(64428),u=n(12710),h=n(33210),m=n(32967),f=n(88780),p=n(30133),x=n(48661),g=n(53377),b=n(47215),v=n(5135),w=n(24602),y=n(9573);let k=[/(^|\/)__tests__\//,/(^|\/)tests?\//,/\.(test|spec)\.[^/]+$/],j=[/\.(md|mdx)$/i,/(^|\/)docs\//,/(^|\/)README[^/]*$/i,/(^|\/)LICENSE[^/]*$/i,/(^|\/)CHANGELOG[^/]*$/i];function C(e){return k.some(t=>t.test(e))?"test":j.some(t=>t.test(e))?"docs":null}function N(e,t){if(t&&e.startsWith(t)){let n=e.slice(t.length);return n.startsWith("/")?n.slice(1):n}return e}function S(e,t){let n=[];for(let r of e)if("Edit"===r.name){let e=r.input;if(e.file_path&&"string"==typeof e.old_string&&"string"==typeof e.new_string){let s=N(e.file_path,t);n.push({key:r.id,toolName:"Edit",subject:`[Edit] ${s}`,legacy:!0,changeClass:C(s),files:[{path:s,status:"modified",old_string:e.old_string,new_string:e.new_string,fileClass:C(s)}]})}}else if("Write"===r.name){let e=r.input;if(e.file_path&&"string"==typeof e.content){let s=N(e.file_path,t);n.push({key:r.id,toolName:"Write",subject:`[Write] ${s}`,legacy:!0,changeClass:C(s),files:[{path:s,status:"added",old_string:"",new_string:e.content,fileClass:C(s)}]})}}return n}function E(e,t,n){let r=e.map(e=>{let t=new Set(e.commit.toolFiles);return{key:e.commit.toolId??e.commit.hash,shortHash:e.commit.hash.slice(0,7),toolName:e.commit.toolName??"tool",subject:e.commit.subject,timestamp:e.commit.timestamp,truncated:!0===e.truncated,changeClass:function(e){if(0===e.length)return null;let t=C(e[0]);return null===t?null:e.every(e=>C(e)===t)?t:null}(e.files.map(e=>e.path)),files:e.files.map(e=>({path:e.path,status:e.status,additions:e.additions,deletions:e.deletions,old_string:e.oldContent??"",new_string:e.newContent??"",unviewable:e.binary||null===e.oldContent&&null===e.newContent,external:t.size>0&&!t.has(e.path),fileClass:C(e.path)}))}});return r.length>0?r:S(t,n)}function L({additions:e,deletions:t}){return(0,r.jsxs)("span",{className:"flex items-center gap-1 font-mono",children:[(0,r.jsxs)("span",{className:"text-green-11",children:["+",e]}),(0,r.jsxs)("span",{className:"text-red-11",children:["-",t]})]})}function M({cls:e}){return(0,r.jsx)("span",{className:`text-[10px] px-1 py-px rounded flex-shrink-0 ${"test"===e?"bg-emerald-500/15 text-emerald-600 dark:text-emerald-400/80":"bg-sky-500/15 text-sky-600 dark:text-sky-400/80"}`,children:e})}function R(e){let t=new Date(1e3*e),n=new Date,r=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),l=String(t.getHours()).padStart(2,"0"),o=String(t.getMinutes()).padStart(2,"0"),a=`${r}-${s} ${l}:${o}`;return t.getFullYear()===n.getFullYear()?a:`${t.getFullYear()}-${a}`}function T({toolCalls:e,cwd:t,onClose:n,onContentSearch:d}){let{t:k}=(0,l.Bd)(),j=(0,s.useRef)(null),[C,N]=(0,s.useState)(null);(0,s.useEffect)(()=>{N(j.current)},[]);let $=(0,s.useMemo)(()=>e.map(e=>e.id).filter(Boolean),[e]),I=$.join(","),[P,A]=(0,s.useState)(0),_=(0,a.Z)(t&&$.length>0?(0,y.se)(t,$):o.succeed([]),[t,I,P]),D=(0,s.useMemo)(()=>e.filter(e=>["Edit","Write","MultiEdit","NotebookEdit"].includes(e.name)).map(e=>e.id),[e]);(0,s.useEffect)(()=>{if("success"!==_.status||P>=2)return;let e=new Set(_.data.map(e=>e.commit.toolId));if(D.some(t=>!e.has(t))){let e=setTimeout(()=>A(e=>e+1),2e3);return()=>clearTimeout(e)}},[_,P,D]);let B=(0,s.useRef)([]),W="loading"===_.status&&0===B.current.length,F=(0,s.useMemo)(()=>{if("success"===_.status){let n=E(_.data,e,t);return n.length>0&&(B.current=n),n}return"loading"===_.status&&B.current.length>0?B.current:"loading"===_.status?[]:S(e,t)},[_,e,t]),[O,V]=(0,s.useState)(null),[z,H]=(0,s.useState)(null),[U,q]=(0,s.useState)(new Set),[K,G]=(0,s.useState)(()=>window.innerWidth>=768),[X,Y]=(0,s.useState)("compact"),[J,Z]=(0,s.useState)("split"),[Q,ee]=(0,s.useState)(!1),[et,en]=(0,s.useState)(!1),[er,es]=(0,s.useState)(null),el=(0,s.useMemo)(()=>F.find(e=>e.key===O)??null,[F,O]),eo=(0,s.useRef)(null);(0,s.useEffect)(()=>{el&&(eo.current=el)},[el]);let ea=el??eo.current,ei=(0,s.useMemo)(()=>ea?(0,f.Do)(ea.files):[],[ea]),ec=(0,s.useMemo)(()=>ea?.files.find(e=>e.path===z)??null,[ea,z]),ed=(0,s.useCallback)(e=>{V(e.key),H(e.files[0]?.path??null),q(new Set((0,f.Sz)((0,f.Do)(e.files))))},[]);(0,s.useEffect)(()=>{F.length>0&&null==O&&ed(F[0])},[F,O,ed]),(0,s.useEffect)(()=>{let e=e=>{if("Escape"===e.key){if(Q)return void ee(!1);if(et)return void en(!1);if(er)return void es(null);(0,i.k)(),n()}};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[n,Q,et,er]);let eu=(0,s.useMemo)(()=>F.reduce((e,t)=>e+t.files.length,0),[F]),eh=e=>(0,r.jsx)("div",{className:"flex-1 flex items-center justify-center text-muted-foreground text-sm",children:e});return(0,r.jsx)(c.SU,{container:C,children:(0,r.jsxs)("div",{ref:j,className:"relative bg-card shadow-xl w-full h-full flex flex-col rounded-lg",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-3 border-b border-border",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("button",{onClick:()=>G(e=>!e),"aria-label":k("diffViewer.toggleFileTree"),className:`p-1 rounded transition-colors ${K?"text-foreground bg-accent":"text-muted-foreground hover:text-foreground hover:bg-accent"}`,children:(0,r.jsx)(u.A,{className:"w-4 h-4"})}),(0,r.jsx)("h3",{className:"text-sm font-medium text-foreground",children:k("diffViewer.fileChanges",{count:eu})})]}),(0,r.jsx)("button",{onClick:n,className:"p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",children:(0,r.jsx)(h.A,{className:"w-5 h-5"})})]}),(0,r.jsxs)("div",{className:"flex-1 flex overflow-hidden",children:[K&&(0,r.jsx)("div",{className:"w-60 flex-shrink-0 border-r border-border overflow-y-auto",children:F.map(e=>{let t;return(0,r.jsxs)("div",{onClick:()=>ed(e),className:`px-3 py-2 border-b border-border cursor-pointer hover:bg-accent ${O===e.key?"bg-brand/10":""}`,children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[e.shortHash&&(0,r.jsx)("span",{className:"font-mono text-xs text-brand",children:e.shortHash}),void 0!==e.timestamp&&(0,r.jsx)("span",{className:"text-xs text-slate-9",children:R(e.timestamp)}),e.changeClass&&(0,r.jsx)("span",{className:"ml-auto",children:(0,r.jsx)(M,{cls:e.changeClass})})]}),(0,r.jsx)("div",{className:"text-sm text-foreground truncate mt-0.5","data-tooltip":e.subject,children:e.subject}),(0,r.jsxs)("div",{className:"flex items-center gap-2 mt-0.5 text-xs text-muted-foreground",children:[(0,r.jsx)("span",{children:k("commitDetail.nChanges",{count:e.files.length})}),(t=function(e){let t=!1,n=0,r=0;for(let s of e.files)(void 0!==s.additions||void 0!==s.deletions)&&(t=!0),n+=s.additions??0,r+=s.deletions??0;return t?{additions:n,deletions:r}:null}(e))&&(t.additions>0||t.deletions>0)?(0,r.jsx)(L,{additions:t.additions,deletions:t.deletions}):null]})]},e.key)})}),(0,r.jsx)("div",{className:"flex-1 flex flex-col overflow-hidden",children:W?eh(k("diffViewer.loadingSnapshots")):0===F.length?eh(k("diffViewer.noChanges")):ea?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 px-4 py-2 border-b border-border text-xs text-muted-foreground",children:[(0,r.jsxs)("span",{className:"flex items-center gap-1 text-foreground",children:[(0,r.jsx)(m.A,{className:"w-3.5 h-3.5"}),ea.toolName]}),ea.shortHash&&(0,r.jsx)("span",{className:"font-mono text-brand",children:ea.shortHash}),void 0!==ea.timestamp&&(0,r.jsx)("span",{children:R(ea.timestamp)}),(0,r.jsx)("span",{className:"flex-1 min-w-0 truncate","data-tooltip":ea.subject,children:ea.subject}),ea.truncated&&(0,r.jsx)("span",{className:"text-amber-500",children:k("diffViewer.truncated")}),ea.legacy&&(0,r.jsx)("span",{className:"px-1.5 py-0.5 rounded bg-amber-500/15 text-amber-600 dark:text-amber-400","data-tooltip":k("diffViewer.reconstructedHint"),children:k("diffViewer.reconstructed")}),(0,r.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,r.jsx)(p.y,{value:X,onChange:Y}),(0,r.jsx)(x.q,{value:J,onChange:Z})]})]}),(0,r.jsxs)("div",{className:"flex-1 flex overflow-hidden",children:[K&&(0,r.jsx)("div",{className:"w-72 flex-shrink-0 border-r border-border overflow-y-auto overflow-x-hidden",children:(0,r.jsx)(f.VO,{files:ei,selectedPath:z,expandedPaths:U,onToggle:e=>q(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),onSelect:e=>{!e.isDirectory&&e.file&&(H(e.file.path),window.innerWidth<768&&G(!1))},cwd:t||"",showChanges:!0,renderActions:e=>{if(e.isDirectory)return null;let t=e.file;return t?(0,r.jsxs)(r.Fragment,{children:[t.fileClass&&(0,r.jsx)(M,{cls:t.fileClass}),t.external&&(0,r.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-purple-400 flex-shrink-0","data-tooltip":k("diffViewer.externalChange")})]}):null}})}),(0,r.jsx)("div",{className:"flex-1 overflow-hidden",children:ec?ec.unviewable?(0,r.jsx)("div",{className:"h-full flex items-center justify-center text-muted-foreground text-sm",children:k("diffViewer.notViewable")}):"unified"===J?(0,r.jsx)(g.xU,{oldContent:ec.old_string,newContent:ec.new_string,filePath:ec.path,cwd:t,enableComments:!0,onContentSearch:d,compact:"compact"===X,onPreview:"deleted"===ec.status?void 0:(0,b.e$)(ec.path)?()=>ee(!0):(0,b.aR)(ec.path)?()=>en(!0):ec.path.endsWith(".json")?()=>es({content:ec.new_string,filePath:ec.path}):void 0,previewLabel:ec.path.endsWith(".json")?k("common.readable"):k("common.preview")}):(0,r.jsx)(g.xZ,{oldContent:ec.old_string,newContent:ec.new_string,filePath:ec.path,isNew:"added"===ec.status,isDeleted:"deleted"===ec.status,cwd:t,enableComments:!0,onContentSearch:d,compact:"compact"===X,onPreview:"deleted"===ec.status?void 0:(0,b.e$)(ec.path)?()=>ee(!0):(0,b.aR)(ec.path)?()=>en(!0):ec.path.endsWith(".json")?()=>es({content:ec.new_string,filePath:ec.path}):void 0,previewLabel:ec.path.endsWith(".json")?k("common.readable"):k("common.preview")}):(0,r.jsx)("div",{className:"h-full flex items-center justify-center text-muted-foreground text-sm",children:k("diffViewer.selectFileToView")})})]})]}):eh(k("diffViewer.selectFileToView"))})]}),Q&&ec&&(0,r.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/50 p-2 md:p-4",onClick:()=>ee(!1),children:(0,r.jsx)("div",{className:"bg-card rounded-lg shadow-xl w-full max-w-[95%] h-full flex flex-col",onClick:e=>e.stopPropagation(),children:(0,r.jsx)(v.M,{content:ec.new_string,filePath:ec.path,cwd:t||"",onClose:()=>ee(!1)})})}),et&&ec&&(0,r.jsx)(w.N,{filePath:ec.path,content:ec.new_string,cwd:t,onClose:()=>en(!1),onContentSearch:d}),er&&(0,r.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/50 p-2 md:p-4",onClick:()=>es(null),children:(0,r.jsxs)("div",{className:"bg-card rounded-lg shadow-xl w-full max-w-[95%] h-full flex flex-col",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-2 border-b border-border flex-shrink-0",children:[(0,r.jsx)("span",{className:"text-sm text-muted-foreground font-mono truncate",children:er.filePath}),(0,r.jsx)("button",{onClick:()=>es(null),className:"p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",children:(0,r.jsx)(h.A,{className:"w-4 h-4"})})]}),(0,r.jsx)("div",{className:"flex-1 overflow-auto px-6 py-4 bg-[#0d1117]",children:(0,r.jsx)("pre",{className:"whitespace-pre-wrap break-words font-mono",style:{fontSize:"0.8125rem",lineHeight:"1.5"},children:(0,b.xb)(er.content)})})]})})]})})}function $({toolCalls:e,cwd:t,onClose:n,onContentSearch:s}){return(0,r.jsx)(d.ZL,{children:(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:n,children:(0,r.jsx)(T,{toolCalls:e,cwd:t,onClose:n,onContentSearch:s?e=>{n(),s(e)}:void 0})})})}},46456:(e,t,n)=>{n.d(t,{$:()=>i,BC:()=>c,Tu:()=>u,lb:()=>a,tj:()=>h,vv:()=>d});var r=n(49433),s=n(82680);let l=(e,t)=>r.tryPromise({try:async()=>{let n=await fetch(e,t);if(!n.ok)throw Error(`HTTP ${n.status}`);return await n.json()},catch:n=>new s.uV({message:`${t?.method??"GET"} ${e} failed`,cause:n})}),o=(e,t)=>r.tryPromise({try:async()=>{let n=await fetch(e,t);if(!n.ok)throw Error(`HTTP ${n.status}`)},catch:n=>new s.uV({message:`${t.method} ${e} failed`,cause:n})}),a=(e,t)=>l(`/api/comments?cwd=${encodeURIComponent(e)}${t?`&filePath=${encodeURIComponent(t)}`:""}`),i=e=>l(`/api/comments?cwd=${encodeURIComponent(e)}&all=true`),c=e=>l("/api/comments",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),d=(e,t,n)=>l("/api/comments",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:e,id:t,content:n})}),u=(e,t)=>o(`/api/comments?cwd=${encodeURIComponent(e)}&id=${encodeURIComponent(t)}`,{method:"DELETE"}),h=e=>o(`/api/comments?cwd=${encodeURIComponent(e)}&all=true`,{method:"DELETE"})},47215:(e,t,n)=>{n.d(t,{C6:()=>o,Hz:()=>b,WU:()=>v,aR:()=>g,cG:()=>i,e$:()=>x,jU:()=>l,oK:()=>w,u:()=>p,xb:()=>c,zs:()=>m});var r=n(12115),s=n(69809);function l(e){try{return JSON.parse(e),!0}catch{return!1}}function o(e){try{let t=JSON.parse(e);return JSON.stringify(t,null,2)}catch{return e}}let a={key:"#79c0ff",str:"#a5d6ff",num:"#79c0ff",bool:"#ff7b72",punct:"#8b949e",fold:"#6e7681"},i={key:"hsl(var(--blue-11))",str:"hsl(var(--green-11))",num:"hsl(var(--violet-11))",bool:"hsl(var(--red-11))",punct:"hsl(var(--slate-11))",fold:"hsl(var(--slate-11))"};function c(e,t=a){try{let n=JSON.parse(e);return h(n,0,t)}catch{return e}}let d=(e,t)=>r.createElement("span",{style:{color:e}},t);function u({label:e,labelColor:t,value:n,indent:l,colors:o}){let[a,i]=r.useState(!1),[c,m]=r.useState({x:0,y:0}),f="string"==typeof n&&n.replace(/\\n/g,"\n").split("\n").length>3,p={onMouseDown:e=>{m({x:e.clientX,y:e.clientY})},onClick:e=>{let t=e.clientX-c.x,n=e.clientY-c.y;t*t+n*n>25||(e.stopPropagation(),i(e=>!e))},style:{cursor:"pointer"}};if(f&&a&&"string"==typeof n){let l=n.replace(/\\n/g,"\n").split("\n")[0],a=n.replace(/\\n/g,"\n").split("\n").length;return r.createElement("span",p,d(t,e),d(o.punct,": "),d(o.str,l),d(o.fold,` ${s.A.t("toolCall.foldedLines",{count:a})}`))}let x=r.createElement(r.Fragment,null,d(t,e),d(o.punct,": "),h(n,l,o));return f?r.createElement("span",p,x):x}function h(e,t,n){let s=" ".repeat(t);if(null===e)return d(n.bool,"null");if(void 0===e)return d(n.bool,"undefined");if("string"==typeof e){let t=e.replace(/\\n/g,"\n").replace(/\n/g,"\n"+s);return d(n.str,t)}if("number"==typeof e)return d(n.num,String(e));if("boolean"==typeof e)return d(n.bool,String(e));if(Array.isArray(e))return 0===e.length?d(n.punct,"[]"):r.createElement(r.Fragment,null,d(n.punct,"["),"\n",...e.map((l,o)=>r.createElement("span",{key:o},s+" ",r.createElement(u,{label:`[${o}]`,labelColor:n.key,value:l,indent:t+1,colors:n}),o<e.length-1?r.createElement(r.Fragment,null,d(n.punct,","),"\n"):"\n")),s,d(n.punct,"]"));if("object"==typeof e){let l=Object.entries(e);return 0===l.length?d(n.punct,"{}"):r.createElement(r.Fragment,null,d(n.punct,"{"),"\n",...l.map(([e,o],a)=>r.createElement("span",{key:e},s+" ",r.createElement(u,{label:e,labelColor:n.key,value:o,indent:t+1,colors:n}),a<l.length-1?r.createElement(r.Fragment,null,d(n.punct,","),"\n"):"\n")),s,d(n.punct,"}"))}return String(e)}function m(e){try{let t=JSON.parse(e);if(t&&"string"==typeof t.file_path&&"string"==typeof t.old_string&&"string"==typeof t.new_string)return t}catch{}return null}let f=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".avif"]);function p(e){let t=e.slice(e.lastIndexOf(".")).toLowerCase();return f.has(t)}function x(e){return e.toLowerCase().endsWith(".md")}function g(e){let t=e.toLowerCase();return t.endsWith(".html")||t.endsWith(".htm")}function b(e){return e.toLowerCase().endsWith(".json")}function v(e,t){let n=t.startsWith("/")?[]:e.split("/").slice(0,-1);for(let e of t.replace(/^\//,"").split("/"))""!==e&&"."!==e&&(".."===e?n.pop():n.push(e));return n.join("/")}function w(e){try{let t=JSON.parse(e);if(t&&"string"==typeof t.file_path)return t.file_path}catch{let t=e.trim();if(t.startsWith("/")&&!t.includes("\n")&&t.length<500)return t}return null}},48347:(e,t,n)=>{n.d(t,{H:()=>o,r:()=>a});var r=n(95155),s=n(12115);let l=(0,s.createContext)(null);function o({value:e,children:t}){return(0,r.jsx)(l.Provider,{value:e,children:t})}function a(){return(0,s.useContext)(l)}},48661:(e,t,n)=>{n.d(t,{q:()=>l});var r=n(95155),s=n(79114);function l({value:e,onChange:t,className:n}){let{t:o}=(0,s.Bd)();return(0,r.jsx)("div",{className:`flex items-center gap-0.5 rounded border border-border overflow-hidden ${n??""}`,children:["split","unified"].map(n=>(0,r.jsx)("button",{onClick:e=>{e.stopPropagation(),t(n)},className:`px-2 py-0.5 text-xs transition-colors ${e===n?"bg-brand text-white":"text-muted-foreground hover:bg-accent"}`,children:o("split"===n?"diffViewer.viewSplit":"diffViewer.viewUnified")},n))})}},48948:(e,t,n)=>{n.d(t,{F:()=>r});function r(e,t,n){let{engine:r,assistantId:s}=n;if("stream_event"===t.type){let n=t.event;if(n?.type==="content_block_delta"&&n.delta?.type==="text_delta"&&n.delta.text){let t=n.delta.text;return e.map(e=>e.id===s?{...e,content:(e.content||"")+t}:e)}return e}if("assistant"===t.type){let n=t.message?.content;if(!Array.isArray(n))return e;let l=e,o=t.message?.model==="<synthetic>";if("codex"===r||"kimi"===r||"ollama"===r||o){let e=n.filter(e=>"text"===e.type&&e.text).map(e=>e.text).join("");e&&(l=l.map(t=>t.id===s?{...t,content:(t.content||"")+e}:t))}for(let e of n)if(e.name){let t={id:e.id||`tool-${s}-${e.name}`,name:e.name,input:e.input||{},isLoading:!0};l=l.map(e=>e.id!==s||e.toolCalls?.some(e=>e.id===t.id)?e:{...e,toolCalls:[...e.toolCalls||[],t]})}return l}if("user"===t.type){let n=t.message?.content;if(!Array.isArray(n))return e;let r=e;for(let e of n)if(e.tool_use_id){let t=e.tool_use_id,n="string"==typeof e.content?e.content:JSON.stringify(e.content);r=r.map(e=>e.id===s?{...e,toolCalls:e.toolCalls?.map(e=>e.id===t?{...e,result:n,isLoading:!1}:e)}:e)}return r}if("error"===t.type){let n=t.error||"An error occurred. Please try again.";return e.map(e=>e.id===s?{...e,content:e.content?`${e.content}
376
376
 
377
377
  ⚠️ ${n}`:`⚠️ ${n}`,isStreaming:!1}:e)}if("result"===t.type){let n="string"==typeof t.result?t.result.trim():"";return e.map(e=>e.id===s?{...e,content:!e.content&&n?n:e.content,isStreaming:!1,toolCalls:e.toolCalls?.map(e=>({...e,isLoading:!1}))}:e)}return e}},50860:(e,t,n)=>{n.d(t,{I:()=>a});var r=n(95155),s=n(12115),l=n(86957),o=n(60938);function a(e){let{refreshKey:t,className:n="h-full flex items-center justify-center p-4 bg-secondary",imgClassName:a="max-w-full max-h-full object-contain",alt:i}=e,c="absPath"in e&&"string"==typeof e.absPath,d=c?void 0:e.cwd,u=c?void 0:e.path,h=c?e.absPath:void 0,[m,f]=(0,s.useState)({kind:"loading"}),p=(0,s.useRef)(0);if((0,s.useEffect)(()=>{let e=++p.current;return f({kind:"loading"}),(async()=>{if(c){if(e!==p.current)return;f({kind:"ready",etag:null,size:0});return}let t=await l.t4.runPromiseExit((0,o.r6)(d,u));if(e!==p.current)return;if("Failure"===t._tag){let e="Fail"===t.cause._tag?t.cause.error:null,n=e?.cause;f({kind:"error",message:n instanceof Error?n.message:"Unknown error"});return}let n=t.value;if(!n.ok)return f({kind:"error",message:`stat failed (${n.status})`});let r=n.data;r&&r.exists?"too-large"===r.category?f({kind:"too-large",size:r.size??0}):"image"!==r.category?f({kind:"error",message:`Not an image (${r.category})`}):f({kind:"ready",etag:r.etag||`t-${r.mtimeMs??Date.now()}`,size:r.size??0}):f({kind:"missing"})})(),()=>{p.current++}},[c,d,u,h,t]),"loading"===m.kind)return(0,r.jsx)("div",{className:n,children:(0,r.jsx)("span",{className:"inline-block w-6 h-6 border-2 border-brand border-t-transparent rounded-full animate-spin"})});if("missing"===m.kind)return(0,r.jsx)("div",{className:n,children:(0,r.jsx)("div",{className:"text-sm text-muted-foreground",children:"File not found"})});if("too-large"===m.kind)return(0,r.jsx)("div",{className:n,children:(0,r.jsxs)("div",{className:"text-sm text-muted-foreground",children:["Image too large to preview (",Math.round(m.size/1024/1024)," MB)"]})});if("error"===m.kind)return(0,r.jsx)("div",{className:n,children:(0,r.jsx)("div",{className:"text-sm text-red-11",children:m.message})});let x=c?`/api/file?path=${encodeURIComponent(h)}&raw=true`:`/api/files/read?cwd=${encodeURIComponent(d)}&path=${encodeURIComponent(u)}&v=${encodeURIComponent(m.etag)}`;return(0,r.jsx)("div",{className:n,children:(0,r.jsx)("img",{src:x,alt:i??(u||h),className:a})})}},53377:(e,t,n)=>{n.d(t,{xU:()=>C,xZ:()=>j});var r=n(95155),s=n(12115),l=n(79114),o=n(64702),a=n(22576),i=n(34075),c=n(56978),d=n(17196);function u({lines:e,containerRef:t}){let n=(0,s.useRef)(null),[l,o]=(0,s.useState)({top:0,height:0});if((0,s.useEffect)(()=>{let e=t.current;if(!e)return;let r=()=>{let{scrollTop:t,scrollHeight:r,clientHeight:s}=e,l=n.current?.clientHeight||0;if(r<=s)o({top:0,height:l});else{let e=l/r;o({top:t*e,height:s*e})}};return r(),e.addEventListener("scroll",r),window.addEventListener("resize",r),()=>{e.removeEventListener("scroll",r),window.removeEventListener("resize",r)}},[t]),0===e.length)return null;let a=100/e.length;return(0,r.jsxs)("div",{ref:n,className:"w-4 flex-shrink-0 bg-secondary border-l border-border relative cursor-pointer",onClick:e=>{let r=t.current,s=n.current;if(!r||!s)return;let l=s.getBoundingClientRect(),o=(e.clientY-l.top)/l.height*r.scrollHeight-r.clientHeight/2;r.scrollTo({top:Math.max(0,o),behavior:"smooth"})},children:[e.map((e,t)=>"unchanged"!==e.type&&(0,r.jsx)("div",{className:`absolute left-0 right-0 ${"removed"===e.type?"bg-red-9":"bg-green-9"}`,style:{top:`${t*a}%`,height:`${Math.max(a,.5)}%`,minHeight:"2px"}},t)),(0,r.jsx)("div",{className:"absolute left-0 right-0 bg-muted/60 border-y border-border",style:{top:`${l.top}px`,height:`${Math.max(l.height,10)}px`}})]})}var h=n(47650),m=n(1058),f=n(90717),p=n(70188),x=n(48347),g=n(89109),b=n(7320),v=n(37614),w=n(27570);function y({cwd:e,enableComments:t=!1,filePath:n,diffLines:l,containerEl:o,onContentSearch:a}){let i=(0,p.iN)(),c=(0,x.r)(),d=t&&!!e,{comments:u,addComment:k,updateComment:j,deleteComment:C,refresh:N}=(0,m._)({cwd:e||"",filePath:n}),[S,E]=(0,s.useState)(null),{toolbarRef:L,bumpRef:M,clearToolbar:R}=(0,w.L)({enabled:d,container:o,resolveLineRange:e=>{if(!document.contains(e))return null;let t=e.nodeType===Node.TEXT_NODE?e.parentElement:e,n=t?.closest("[data-new-line]");if(!n)return null;let r=parseInt(n.getAttribute("data-new-line")||"0",10);return!Number.isFinite(r)||r<=0?null:{start:r,end:r}},buildLineSnapshot:({start:e,end:t})=>{let n=[],r=0;for(let s of l)("unchanged"===s.type||"added"===s.type)&&++r>=e&&r<=t&&n.push(s.content);return n.join("\n")}}),[T,$]=(0,s.useState)(null),[I,P]=(0,s.useState)(null),[A,_]=(0,s.useState)(!1);(0,s.useEffect)(()=>{_(!0)},[]);let D=(0,s.useMemo)(()=>{let e=new Set;for(let t of u)for(let n=t.startLine;n<=t.endLine;n++)e.add(n);return e},[u]),B=(0,s.useMemo)(()=>{let e=new Map;for(let t of u){let n=t.endLine;e.has(n)||e.set(n,[]),e.get(n).push(t)}return e},[u]),W=(0,s.useCallback)((e,t)=>{t.stopPropagation(),E({comment:e,x:t.clientX,y:t.clientY}),R(),$(null),P(null)},[R]),F=(0,s.useCallback)(()=>{let e=L.current;e&&($({x:e.x,y:e.y,range:e.range,selectedText:e.selectedText,lineSnapshot:e.lineSnapshot}),R())},[R,L]),O=(0,s.useCallback)(()=>{let e=L.current;e&&(P({x:e.x,y:e.y,range:e.range,selectedText:e.selectedText,lineSnapshot:e.lineSnapshot}),R())},[R,L]),V=(0,s.useCallback)(()=>{let e=L.current;if(!e||!a)return;let t=e.selectedText.trim();R(),t&&a(t)},[a,R,L]),z=(0,s.useCallback)(async(t,r)=>{if(c&&e)try{let s=await (0,f.$3)(e),l=[];for(let e of s)l.push({filePath:e.filePath,startLine:e.startLine,endLine:e.endLine,codeContent:e.codeContent,note:e.content||void 0});l.push({filePath:n,startLine:t.range.start,endLine:t.range.end,codeContent:t.lineSnapshot});let o=(0,f.Gw)(l,r);c.sendMessage(o),await (0,f.RP)(e),N()}catch(e){console.error("Failed to send to AI:",e)}},[c,n,e,N]),H=(0,s.useCallback)(e=>{I&&z(I,e)},[I,z]),U=(0,s.useCallback)(e=>{T&&z(T,e)},[T,z]),q=(0,s.useCallback)(async e=>{T&&(await k(T.range.start,T.range.end,e,T.selectedText),$(null))},[T,k]),K=A&&i?(0,h.createPortal)((0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(g.f,{floatingToolbarRef:L,bumpRef:M,container:i,onAddComment:F,onSendToAI:O,onSearch:a?V:void 0,isChatLoading:c?.isLoading??!1}),T&&(0,r.jsx)(b.t,{x:T.x,y:T.y,range:T.range,filePath:n,lineSnapshot:T.lineSnapshot,container:i,onSubmit:q,onSendToAI:c?U:void 0,onClose:()=>$(null),isChatLoading:c?.isLoading}),I&&(0,r.jsx)(b.G,{x:I.x,y:I.y,range:I.range,filePath:n,lineSnapshot:I.lineSnapshot,container:i,onSubmit:H,onClose:()=>P(null),isChatLoading:c?.isLoading}),S&&(0,r.jsx)(v.t,{x:S.x,y:S.y,comment:S.comment,container:i,onClose:()=>E(null),onUpdateComment:j,onDeleteComment:C})]}),i):null;return{commentsEnabled:d,linesWithComments:D,commentsByEndLine:B,handleCommentBubbleClick:W,addCommentRange:T?.range??null,sendToAIRange:I?.range??null,commentPortal:K}}function k(e){return e.params?`${e.name}(${e.params.join(", ")})`:e.name}function j({oldContent:e,newContent:t,filePath:n,isNew:h=!1,isDeleted:m=!1,cwd:f,enableComments:p=!1,onPreview:x,previewLabel:g,onContentSearch:b,targetLine:v,compact:w=!1,symbols:C}){let{t:N}=(0,l.Bd)(),S=g??N("common.preview"),E=(0,s.useMemo)(()=>(0,a.X)(e,t),[e,t]),L=(0,s.useRef)(null),M=(0,s.useRef)(null),R=(0,s.useRef)(null),T=(0,s.useRef)(!1),[$,I]=(0,s.useState)(null);(0,s.useEffect)(()=>{R.current!==$&&I(R.current)});let{commentsEnabled:P,linesWithComments:A,commentsByEndLine:_,handleCommentBubbleClick:D,addCommentRange:B,sendToAIRange:W,commentPortal:F}=y({cwd:f,enableComments:p,filePath:n,diffLines:E,containerEl:$,onContentSearch:b});(0,s.useEffect)(()=>{let e=M.current,t=R.current;if(!e||!t)return;let n=(e,t)=>{T.current||(T.current=!0,t.scrollLeft=e.scrollLeft,requestAnimationFrame(()=>{T.current=!1}))},r=()=>n(e,t),s=()=>n(t,e);return e.addEventListener("scroll",r),t.addEventListener("scroll",s),()=>{e.removeEventListener("scroll",r),t.removeEventListener("scroll",s)}},[]);let{leftLines:O,rightLines:V}=(0,s.useMemo)(()=>{let e=[],t=[],n=0,r=0;for(let s=0;s<E.length;s++){let l=E[s];if("unchanged"===l.type){for(;e.length<t.length;)e.push({lineNum:0,content:"",type:"unchanged",originalIdx:-1});for(;t.length<e.length;)t.push({lineNum:0,content:"",type:"unchanged",originalIdx:-1});n++,r++,e.push({lineNum:n,content:l.content,type:"unchanged",originalIdx:s}),t.push({lineNum:r,content:l.content,type:"unchanged",originalIdx:s})}else"removed"===l.type?(n++,e.push({lineNum:n,content:l.content,type:"removed",originalIdx:s})):"added"===l.type&&(r++,t.push({lineNum:r,content:l.content,type:"added",originalIdx:s}))}for(;e.length<t.length;)e.push({lineNum:0,content:"",type:"unchanged",originalIdx:-1});for(;t.length<e.length;)t.push({lineNum:0,content:"",type:"unchanged",originalIdx:-1});return{leftLines:e,rightLines:t}},[E]),z=(0,s.useMemo)(()=>E.map(e=>e.content),[E]),H=(0,c.C)(z,n),[U,q]=(0,s.useState)(()=>new Map);(0,s.useLayoutEffect)(()=>{q(new Map),ee.measure()},[O,V]);let K=(0,s.useMemo)(()=>C??[],[C]),{rows:G,gaps:X}=(0,s.useMemo)(()=>w?function(e,t,n,r=[]){let s=e.length,l=n=>"unchanged"!==e[n].type||"unchanged"!==t[n].type,o=new Set;for(let e=0;e<s;e++){if(!l(e))continue;let t=Math.max(0,e-3),n=Math.min(s-1,e+3);for(let e=t;e<=n;e++)o.add(e)}let a=[];for(let e=0;e<s;e++){if(o.has(e))continue;let t=e;for(;e<s&&!o.has(e);)e++;a.push({id:a.length,startIdx:t,endIdx:e-1}),e--}for(let e of a){let t=n.get(e.id)??{topRevealed:0,bottomRevealed:0},r=e.endIdx-e.startIdx+1,s=Math.max(0,Math.min(t.topRevealed,r)),l=Math.max(0,Math.min(t.bottomRevealed,r-s));for(let t=e.startIdx;t<e.startIdx+s;t++)o.add(t);for(let t=e.endIdx-l+1;t<=e.endIdx;t++)o.add(t)}let i=[];for(let e=0;e<s;e++){let n;if(o.has(e)){i.push({kind:"diff",idx:e});continue}let l=e;for(;e<s&&!o.has(e);)e++;let c=e-1;e--;let d=a.find(e=>e.startIdx<=l&&c<=e.endIdx);if(!d)continue;let u=c-l+1,h=Math.min(20,u);if(r.length>0&&c+1<s)for(let e=c+1;e<s;e++){let s=t[e].lineNum;if(!(s<=0)){n=function(e,t){let n=null;for(let r of e)r.startLine<=t&&t<=r.endLine&&(!n||r.endLine-r.startLine<n.endLine-n.startLine)&&(n=r);return n}(r,s)??void 0;break}}i.push({kind:"gap-expand",gapId:d.id,direction:"up",revealCount:h}),i.push({kind:"gap-label",gapId:d.id,hiddenCount:u,enclosingFn:n}),i.push({kind:"gap-expand",gapId:d.id,direction:"down",revealCount:h})}return{rows:i,gaps:a}}(O,V,U,K):{rows:O.map((e,t)=>({kind:"diff",idx:t})),gaps:[]},[w,O,O,V,U,K]),Y=(0,s.useCallback)((e,t)=>{let n=X.find(t=>t.id===e);n&&q(r=>{let s=r.get(e)??{topRevealed:0,bottomRevealed:0},l=n.endIdx-n.startIdx+1-s.topRevealed-s.bottomRevealed;if(l<=0)return r;let o=Math.min(20,l),a="up"===t?{...s,topRevealed:s.topRevealed+o}:{...s,bottomRevealed:s.bottomRevealed+o};return new Map(r).set(e,a)})},[X]),J=(0,s.useCallback)(e=>{for(let t of X)if(e>=t.startIdx&&e<=t.endIdx)return t.id;return null},[X]),Z=(0,s.useCallback)(e=>G[e]?.kind==="gap-label"?28:20,[G]),Q=(0,s.useCallback)(e=>{let t=G[e];if(!t)return e;if("gap-label"===t.kind)return`gl:${t.gapId}`;if("gap-expand"===t.kind)return`ge:${t.gapId}:${t.direction}`;let n=O[t.idx],r=V[t.idx];return`d:${n?.lineNum??"x"}:${n?.type??"x"}:${r?.lineNum??"x"}:${r?.type??"x"}`},[G,O,V]),ee=(0,o.Te)({count:G.length,getScrollElement:()=>L.current,estimateSize:Z,getItemKey:Q,overscan:20}),et=h?"w-1/4":m?"w-3/4":"w-1/2",en=h?"w-3/4":m?"w-1/4":"w-1/2",er=(0,s.useMemo)(()=>G.map(e=>{if("diff"!==e.kind)return{type:"unchanged"};let t=O[e.idx],n=V[e.idx];return"removed"===t.type?{type:"removed"}:n?.type==="added"?{type:"added"}:{type:"unchanged"}}),[G,O,V]),es=ee.getTotalSize(),el=ee.getVirtualItems();return(0,s.useEffect)(()=>{if(!v)return;let e=("after"===v.side?V:O).findIndex(e=>e.lineNum===v.line);if(-1===e)return;let t=G.findIndex(t=>"diff"===t.kind&&t.idx===e);if(-1===t){let t=J(e);if(null!==t){let e=X.find(e=>e.id===t);if(!e)return;let n=e.endIdx-e.startIdx+1;q(e=>{let r=e.get(t)??{topRevealed:0,bottomRevealed:0};if(r.topRevealed+r.bottomRevealed>=n)return e;let s=new Map(e);return s.set(t,{topRevealed:n,bottomRevealed:0}),s})}return}let n=requestAnimationFrame(()=>{ee.scrollToIndex(t,{align:"start"})});return()=>cancelAnimationFrame(n)},[v,O,V,G]),(0,r.jsxs)("div",{className:"font-mono flex flex-col h-full text-sm",children:[(0,r.jsxs)("div",{className:"flex flex-shrink-0 border-b border-border",children:[(0,r.jsx)("div",{className:`${et} min-w-0 px-2 py-1 bg-accent text-muted-foreground text-center text-xs font-medium border-r border-border`,children:h?"(New File)":m?"Deleted":"Old"}),(0,r.jsxs)("div",{className:`${en} min-w-0 px-2 py-1 bg-accent text-muted-foreground text-xs font-medium relative`,children:[(0,r.jsx)("span",{className:"block text-center",children:m?"(Deleted)":"New"}),(0,r.jsxs)("div",{className:"absolute right-2 top-1/2 -translate-y-1/2 flex items-center gap-2",children:[x&&(0,r.jsx)("button",{onClick:x,className:"text-muted-foreground hover:text-foreground transition-colors",children:S}),!m&&t&&(0,r.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(t),(0,i.oR)(N("diffViewer.copiedAll"))},className:"text-muted-foreground hover:text-foreground transition-colors",children:N("common.copy")})]})]}),(0,r.jsx)("div",{className:"w-4 flex-shrink-0 bg-accent"})]}),(0,r.jsxs)("div",{className:"flex-1 min-h-0 flex",children:[(0,r.jsx)("div",{ref:L,className:"flex-1 overflow-y-auto overflow-x-hidden",children:(0,r.jsxs)("div",{className:"flex",style:{height:`${es}px`},children:[(0,r.jsx)("div",{ref:M,className:`${et} overflow-x-auto border-r border-border`,children:(0,r.jsx)("div",{className:"min-w-max h-full",style:{position:"relative"},children:el.map(e=>{let t=G[e.index];if("gap-expand"===t.kind||"gap-label"===t.kind){let n="gap-label"===t.kind;return(0,r.jsx)("div",{ref:ee.measureElement,"data-index":e.index,style:{position:"absolute",top:0,left:0,width:"100%",height:`${Math.max(e.size,Z(e.index))}px`,transform:`translateY(${e.start}px)`},className:n?"bg-accent border-y border-border":""},e.key)}let n=O[t.idx];return(0,r.jsxs)("div",{ref:ee.measureElement,"data-index":e.index,"data-row-idx":t.idx,style:{position:"absolute",top:0,left:0,minWidth:"100%",width:"max-content",height:`${Math.max(e.size,Z(e.index))}px`,transform:`translateY(${e.start}px)`},className:`flex ${"removed"===n.type?"bg-red-9/15 dark:bg-red-9/25":""}`,children:[(0,r.jsx)("span",{className:"w-10 flex-shrink-0 text-right pr-2 text-slate-9 select-none border-r border-border",children:n.lineNum||""}),(0,r.jsx)("span",{className:"whitespace-pre pl-2",dangerouslySetInnerHTML:{__html:n.originalIdx>=0&&H[n.originalIdx]||(0,d.ZD)(n.content||" ")}})]},e.key)})})}),(0,r.jsx)("div",{ref:R,className:`${en} overflow-x-auto`,children:(0,r.jsx)("div",{className:"min-w-max h-full",style:{position:"relative"},children:el.map(e=>{let t=G[e.index];if("gap-expand"===t.kind)return(0,r.jsx)("button",{ref:ee.measureElement,"data-index":e.index,type:"button",onClick:()=>Y(t.gapId,t.direction),style:{position:"absolute",top:0,left:0,width:"100%",height:`${Math.max(e.size,Z(e.index))}px`,transform:`translateY(${e.start}px)`},className:"flex items-center justify-center text-[11px] text-foreground/50 hover:bg-accent hover:text-brand active:bg-brand/15 transition-colors duration-100 cursor-pointer focus:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-brand/60",title:N("up"===t.direction?"diffViewer.gap.expandUp":"diffViewer.gap.expandDown",{count:t.revealCount}),"aria-label":N("up"===t.direction?"diffViewer.gap.expandUp":"diffViewer.gap.expandDown",{count:t.revealCount}),children:(0,r.jsx)("span",{className:"select-none",children:N("diffViewer.gap.more",{count:t.revealCount})})},e.key);if("gap-label"===t.kind)return(0,r.jsxs)("div",{ref:ee.measureElement,"data-index":e.index,"data-gap-id":t.gapId,style:{position:"absolute",top:0,left:0,width:"100%",height:`${Math.max(e.size,Z(e.index))}px`,transform:`translateY(${e.start}px)`},className:"flex items-center justify-center gap-2 px-3 text-[11px] text-foreground/80 bg-accent border-y border-border min-w-0 select-none",children:[(0,r.jsx)("span",{className:"flex-shrink-0",children:N("diffViewer.gap.hidden",{count:t.hiddenCount})}),t.enclosingFn&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"opacity-50 flex-shrink-0",children:"\xb7"}),(0,r.jsx)("span",{className:"truncate min-w-0 font-medium",title:k(t.enclosingFn),children:k(t.enclosingFn)})]})]},e.key);let n=V[t.idx],s=n?.lineNum||0,l=s>0&&A.has(s),o=_.get(s),a=o?.[0],i=B&&s>=B.start&&s<=B.end,c=W&&s>=W.start&&s<=W.end,u=i||c;return(0,r.jsxs)("div",{ref:ee.measureElement,"data-index":e.index,"data-new-line":s||void 0,"data-row-idx":t.idx,style:{position:"absolute",top:0,left:0,minWidth:"100%",width:"max-content",height:`${Math.max(e.size,Z(e.index))}px`,transform:`translateY(${e.start}px)`},className:`flex ${u?"bg-blue-9/20":l?"bg-amber-9/10":n?.type==="added"?"bg-green-9/15 dark:bg-green-9/25":""}`,children:[(0,r.jsxs)("span",{className:`flex-shrink-0 flex items-center gap-0.5 pr-1 text-slate-9 select-none border-r border-border ${u?"bg-blue-9/30":""}`,style:{width:P?"52px":"40px"},children:[P&&s>0&&l&&a&&(0,r.jsx)("button",{onClick:e=>D(a,e),className:"w-4 h-4 flex items-center justify-center rounded hover:bg-accent text-amber-9",title:N("codeViewer.nComments",{count:o?.length}),children:(0,r.jsx)("svg",{className:"w-3 h-3",fill:"currentColor",viewBox:"0 0 20 20",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M18 10c0 3.866-3.582 7-8 7a8.841 8.841 0 01-4.083-.98L2 17l1.338-3.123C2.493 12.767 2 11.434 2 10c0-3.866 3.582-7 8-7s8 3.134 8 7zM7 9H5v2h2V9zm8 0h-2v2h2V9zM9 9h2v2H9V9z",clipRule:"evenodd"})})}),P&&s>0&&!l&&(0,r.jsx)("span",{className:"w-4"}),(0,r.jsx)("span",{className:"flex-1 text-right pr-1",children:s||""})]}),(0,r.jsx)("span",{className:"whitespace-pre pl-2",dangerouslySetInnerHTML:{__html:n?.originalIdx>=0&&H[n.originalIdx]||(0,d.ZD)(n?.content||" ")}})]},e.key)})})})]})}),(0,r.jsx)(u,{lines:er,containerRef:L})]}),F]})}function C({oldContent:e,newContent:t,filePath:n,cwd:u,enableComments:h=!1,onPreview:m,previewLabel:f,onContentSearch:p,compact:x=!1}){let{t:g}=(0,l.Bd)(),b=f??g("common.preview"),v=(0,s.useMemo)(()=>(0,a.X)(e,t),[e,t]),w=(0,s.useRef)(null),k=(0,s.useMemo)(()=>v.map(e=>e.content),[v]),j=(0,c.C)(k,n),[N,S]=(0,s.useState)(null);(0,s.useEffect)(()=>{w.current!==N&&S(w.current)});let{commentsEnabled:E,linesWithComments:L,commentsByEndLine:M,handleCommentBubbleClick:R,addCommentRange:T,sendToAIRange:$,commentPortal:I}=y({cwd:u,enableComments:h,filePath:n,diffLines:v,containerEl:N,onContentSearch:p}),[P,A]=(0,s.useState)(()=>new Set);(0,s.useEffect)(()=>{A(new Set)},[e,t,n]);let _=(0,s.useMemo)(()=>x?function(e,t){let n=e.length,r=Array(n).fill(!1);for(let t=0;t<n;t++){if("unchanged"===e[t].type)continue;let s=Math.max(0,t-3),l=Math.min(n-1,t+3);for(let e=s;e<=l;e++)r[e]=!0}let s=[],l=0,o=0;for(;o<n;){if(r[o]){s.push({kind:"line",line:e[o],index:o}),o++;continue}let a=o;for(;a<n&&!r[a];)a++;let i=l++;if(t.has(i))for(let t=o;t<a;t++)s.push({kind:"line",line:e[t],index:t});else s.push({kind:"gap",id:i,count:a-o});o=a}return s}(v,P):v.map((e,t)=>({kind:"line",line:e,index:t})),[x,v,P]),D=(0,s.useCallback)(e=>{let t=_[e];if(!t)return e;if("gap"===t.kind)return`gap:${t.id}`;let n=t.line;return`${n.type}:${n.oldLineNum??"x"}:${n.newLineNum??"x"}`},[_]),B=(0,o.Te)({count:_.length,getScrollElement:()=>w.current,estimateSize:()=>20,getItemKey:D,overscan:20});return(0,r.jsxs)("div",{className:"font-mono flex flex-col h-full text-sm",children:[(m||t)&&(0,r.jsxs)("div",{className:"flex-shrink-0 flex items-center justify-end gap-2 px-2 py-1 border-b border-border bg-accent text-xs",children:[m&&(0,r.jsx)("button",{onClick:m,className:"text-muted-foreground hover:text-foreground transition-colors",children:b}),t&&(0,r.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(t),(0,i.oR)(g("diffViewer.copiedAll"))},className:"text-muted-foreground hover:text-foreground transition-colors",children:g("common.copy")})]}),(0,r.jsx)("div",{ref:w,className:"flex-1 min-h-0 overflow-auto",children:(0,r.jsx)("div",{style:{height:`${B.getTotalSize()}px`,position:"relative"},children:B.getVirtualItems().map(e=>{let t=_[e.index];if(!t)return null;let n={position:"absolute",top:0,left:0,minWidth:"100%",width:"max-content",height:`${e.size}px`,transform:`translateY(${e.start}px)`};if("gap"===t.kind){let s=g("diffViewer.gap.hidden",{count:t.count});return(0,r.jsx)("div",{style:n,onClick:()=>A(e=>new Set(e).add(t.id)),className:"flex items-center cursor-pointer bg-slate-2 hover:bg-accent border-y border-border text-xs text-slate-9 select-none",title:s,children:(0,r.jsx)("span",{className:"w-full text-center",children:s})},e.key)}let s=t.line,l="removed"!==s.type?s.newLineNum??0:0,o=l>0&&L.has(l),a=M.get(l),i=a?.[0],c=T&&l>=T.start&&l<=T.end,u=$&&l>=$.start&&l<=$.end;return(0,r.jsxs)("div",{style:n,"data-new-line":l||void 0,className:`flex ${c||u?"bg-blue-9/20":o?"bg-amber-9/10":"removed"===s.type?"bg-red-9/15 dark:bg-red-9/25":"added"===s.type?"bg-green-9/15 dark:bg-green-9/25":""}`,children:[E&&(0,r.jsx)("span",{className:"w-5 flex-shrink-0 flex items-center justify-center select-none",children:l>0&&o&&i&&(0,r.jsx)("button",{onClick:e=>R(i,e),className:"w-4 h-4 flex items-center justify-center rounded hover:bg-accent text-amber-9",title:g("codeViewer.nComments",{count:a?.length}),children:(0,r.jsx)("svg",{className:"w-3 h-3",fill:"currentColor",viewBox:"0 0 20 20",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M18 10c0 3.866-3.582 7-8 7a8.841 8.841 0 01-4.083-.98L2 17l1.338-3.123C2.493 12.767 2 11.434 2 10c0-3.866 3.582-7 8-7s8 3.134 8 7zM7 9H5v2h2V9zm8 0h-2v2h2V9zM9 9h2v2H9V9z",clipRule:"evenodd"})})})}),(0,r.jsx)("span",{className:"w-10 flex-shrink-0 text-right pr-2 text-slate-9 select-none border-r border-border",children:"added"!==s.type?s.oldLineNum:""}),(0,r.jsx)("span",{className:"w-10 flex-shrink-0 text-right pr-2 text-slate-9 select-none border-r border-border",children:"removed"!==s.type?s.newLineNum:""}),(0,r.jsx)("span",{className:`w-6 flex-shrink-0 text-center select-none ${"removed"===s.type?"text-red-11":"added"===s.type?"text-green-11":"text-slate-9"}`,children:"removed"===s.type?"-":"added"===s.type?"+":" "}),(0,r.jsx)("span",{className:"flex-1 whitespace-pre pl-1",dangerouslySetInnerHTML:{__html:j[t.index]||(0,d.ZD)(s.content||" ")}})]},e.key)})})}),I]})}},56045:(e,t,n)=>{n.d(t,{_:()=>a,o:()=>o});var r=n(12115),s=n(69809);let l="json-search-highlight-style";function o(e){let[t,n]=(0,r.useState)(!1),[s,o]=(0,r.useState)(""),[a,i]=(0,r.useState)(!1),[c,d]=(0,r.useState)(0),[u,h]=(0,r.useState)(0),m=(0,r.useRef)(null),f=(0,r.useRef)([]),p=(0,r.useCallback)(()=>{let t;CSS.highlights?.delete("json-search"),CSS.highlights?.delete("json-search-current"),f.current=[];let n=e.current;if(!n||!s){d(0),h(0);return}!function(){if(document.getElementById(l))return;let e=document.createElement("style");e.id=l,e.textContent="::highlight(json-search){background:rgba(217,119,6,.3)}::highlight(json-search-current){background:rgba(217,119,6,.5)}",document.head.appendChild(e)}();let r=n.textContent||"",o=a?s:s.toLowerCase(),i=a?r:r.toLowerCase(),c=[],u=0;for(;u<i.length;){let e=i.indexOf(o,u);if(-1===e)break;c.push([e,e+o.length]),u=e+1}if(0===c.length){d(0),h(0);return}let m=document.createTreeWalker(n,NodeFilter.SHOW_TEXT),p=0,x=0,g=[],b=null,v=0;for(;(t=m.nextNode())&&x<c.length;){let e=t.textContent?.length||0,n=p,r=p+e;for(;x<c.length;){let[e,s]=c[x];if(e>=r)break;if(!b)if(e>=n)(b=document.createRange()).setStart(t,e-n),v=s;else break;if(v<=r)b.setEnd(t,v-n),g.push(b),b=null,x++;else break}p=r}f.current=g,d(g.length),h(e=>g.length>0?Math.min(e,g.length-1):0),CSS.highlights&&g.length>0&&CSS.highlights.set("json-search",new Highlight(...g))},[e,s,a]),x=(0,r.useCallback)((e,t)=>{let n=e.getBoundingClientRect();(t.top<n.top||t.bottom>n.bottom)&&(e.scrollTop+=t.top-n.top-n.height/2+t.height/2)},[]),g=(0,r.useCallback)(t=>{CSS.highlights?.delete("json-search-current");let n=f.current[t];if(!n||!CSS.highlights)return;CSS.highlights.set("json-search-current",new Highlight(n));let r=n.getBoundingClientRect(),s=e.current?.parentElement;s&&x(s,r)},[e,x]);(0,r.useEffect)(()=>{queueMicrotask(()=>p())},[p]),(0,r.useEffect)(()=>{g(u)},[u,c,g]),(0,r.useEffect)(()=>{let t=e.current;if(!t||!s)return;let n=new MutationObserver(()=>p());return n.observe(t,{childList:!0,subtree:!0,characterData:!0}),()=>n.disconnect()},[e,s,p]),(0,r.useEffect)(()=>{t||(CSS.highlights?.delete("json-search"),CSS.highlights?.delete("json-search-current"),f.current=[])},[t]),(0,r.useEffect)(()=>()=>{CSS.highlights?.delete("json-search"),CSS.highlights?.delete("json-search-current")},[]);let b=(0,r.useCallback)(()=>{0!==c&&h(e=>(e+1)%c)},[c]),v=(0,r.useCallback)(()=>{0!==c&&h(e=>(e-1+c)%c)},[c]),w=(0,r.useCallback)(()=>{n(!0),setTimeout(()=>m.current?.focus(),0)},[]),y=(0,r.useCallback)(()=>{n(!1),o(""),h(0)},[]),k=(0,r.useCallback)(e=>{"Enter"===e.key&&(e.preventDefault(),e.shiftKey?v():b()),"Escape"===e.key&&(e.preventDefault(),y())},[b,v,y]);return{isVisible:t,query:s,setQuery:o,caseSensitive:a,setCaseSensitive:i,matchCount:c,currentIndex:u,searchInputRef:m,open:w,close:y,goToNext:b,goToPrev:v,handleKeyDown:k}}function a({search:e}){return e.isVisible?r.createElement("div",{className:"flex-shrink-0 flex items-center gap-2 px-3 py-2 bg-secondary border-b border-border"},r.createElement("input",{ref:e.searchInputRef,type:"text",value:e.query,onChange:t=>e.setQuery(t.target.value),onKeyDown:e.handleKeyDown,placeholder:s.A.t("codeViewer.searchPlaceholder"),className:"flex-1 max-w-xs px-2 py-1 text-sm border border-border rounded bg-card text-foreground focus:outline-none focus:ring-2 focus:ring-ring"}),r.createElement("button",{onClick:()=>e.setCaseSensitive(e=>!e),className:`px-2 py-1 text-xs font-mono rounded border transition-colors ${e.caseSensitive?"bg-brand text-white border-brand":"border-border text-muted-foreground hover:bg-accent"}`,title:s.A.t("codeViewer.caseSensitive")},"Aa"),r.createElement("span",{className:"text-xs text-muted-foreground"},e.matchCount>0?`${e.currentIndex+1}/${e.matchCount}`:s.A.t("common.noMatch")),r.createElement("button",{onClick:e.goToPrev,disabled:0===e.matchCount,className:"p-1 rounded hover:bg-accent disabled:opacity-50",title:s.A.t("common.previous")},r.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 15l7-7 7 7"}))),r.createElement("button",{onClick:e.goToNext,disabled:0===e.matchCount,className:"p-1 rounded hover:bg-accent disabled:opacity-50",title:s.A.t("common.next")},r.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),r.createElement("button",{onClick:e.close,className:"p-1 rounded hover:bg-accent",title:s.A.t("common.close")},r.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))):null}},56978:(e,t,n)=>{n.d(t,{C:()=>l});var r=n(12115),s=n(17196);function l(e,t){let[n,l]=(0,r.useState)(null),[o,a]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=()=>{a(document.documentElement.classList.contains("dark"))};e();let t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>t.disconnect()},[]);let i=(0,r.useMemo)(()=>e.join("\n"),[e]),c=`${i}:${t}:${o}`,d=(0,r.useMemo)(()=>n&&n.key===c?n.html:e.map(e=>(0,s.ZD)(e||" ")),[e,c,n]);return(0,r.useEffect)(()=>{if(0===e.length)return;let n=!1;return(async()=>{try{let r=await (0,s.kS)();if(n)return;let a=(0,s.sQ)(t),i=e.join("\n"),d=r.codeToTokens(i,{lang:a,theme:o?"github-dark":"github-light"}),u=[];for(let e=0;e<d.tokens.length;e++)if(u[e]=(0,s.b8)(d.tokens[e]),e%500==0&&e>0&&(await new Promise(e=>setTimeout(e,0)),n))return;l({key:c,html:u})}catch(e){console.error("Line highlight error:",e)}})(),()=>{n=!0}},[i,t,o]),d}},60938:(e,t,n)=>{n.d(t,{DZ:()=>c,Ft:()=>m,K9:()=>x,Nn:()=>y,OJ:()=>b,VK:()=>k,YW:()=>h,__:()=>w,dt:()=>v,eA:()=>g,eE:()=>f,gZ:()=>d,mP:()=>i,nM:()=>j,r6:()=>p,r9:()=>u});var r=n(49433),s=n(82680);let l=(e,t={})=>r.tryPromise({try:async()=>{let n=await fetch(e,t.init);if(t.passThroughStatuses&&t.passThroughStatuses.includes(n.status))return await n.json().catch(()=>({}));if(!n.ok){let e;try{e=(await n.json()).error}catch{}throw Error(e||`HTTP ${n.status}`)}return await n.json()},catch:t=>new s.uV({message:`GET ${e} failed`,cause:t})}),o=(e,t)=>r.tryPromise({try:async()=>{let n=await fetch(e,t),r=null;try{r=await n.json()}catch{}return{status:n.status,ok:n.ok,data:r}},catch:t=>new s.uV({message:`GET ${e} failed`,cause:t})}),a=(e,t)=>r.tryPromise({try:async()=>{let n=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok)throw Error(`HTTP ${n.status}`)},catch:t=>new s.uV({message:`POST ${e} failed`,cause:t})}),i=e=>l(`/api/files/init?cwd=${encodeURIComponent(e)}`),c=e=>l(`/api/files/index?cwd=${encodeURIComponent(e)}`),d=(e,t)=>l(`/api/files/readdir?cwd=${encodeURIComponent(e)}&path=${encodeURIComponent(t)}`),u=e=>l(`/api/files/recent?cwd=${encodeURIComponent(e)}`),h=(e,t,n)=>a("/api/files/recent",{cwd:e,file:t,...n??{}}),m=(e,t)=>a("/api/files/expanded",{cwd:e,paths:t}),f=(e,t)=>l(`/api/files/blame?cwd=${encodeURIComponent(e)}&path=${encodeURIComponent(t)}`).pipe(r.catchAll(e=>r.succeed({error:e.message}))),p=(e,t)=>o(`/api/files/stat?cwd=${encodeURIComponent(e)}&path=${encodeURIComponent(t)}`,{cache:"no-store"}),x=(e,t)=>o(`/api/files/text?cwd=${encodeURIComponent(e)}&path=${encodeURIComponent(t)}`,{cache:"no-store"}),g=e=>l(`/api/files/text?${e.toString()}`),b=e=>r.tryPromise({try:async()=>{let t=await fetch("/api/files/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),n=null;try{n=await t.json()}catch{}return{status:t.status,ok:t.ok,data:n}},catch:e=>new s.uV({message:"POST /api/files/save failed",cause:e})}),v=()=>l("/api/files/clipboard"),w=e=>r.tryPromise({try:async()=>{let t=await fetch("/api/files/clipboard",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(`HTTP ${t.status}`)},catch:e=>new s.uV({message:"POST /api/files/clipboard failed",cause:e})}),y=e=>r.tryPromise({try:async()=>{let t=await fetch("/api/files/paste",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error||`HTTP ${t.status}`);return n},catch:e=>new s.uV({message:"POST /api/files/paste failed",cause:e})}),k=e=>r.tryPromise({try:async()=>{let t=await fetch("/api/files/delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error||`HTTP ${t.status}`);return n},catch:e=>new s.uV({message:"POST /api/files/delete failed",cause:e})}),j=e=>l(`/api/file?path=${encodeURIComponent(e)}`)},62111:(e,t,n)=>{n.d(t,{E:()=>l,k:()=>s});var r=n(12115);function s(){"u">typeof document&&document.activeElement instanceof HTMLElement&&document.activeElement.blur()}function l(e,t=!0){(0,r.useEffect)(()=>{if(!t)return;let n=t=>{"Escape"===t.key&&(s(),e())};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[e,t])}},63563:(e,t,n)=>{n.d(t,{N:()=>r});function r(){let e="u"<typeof BroadcastChannel?null:new BroadcastChannel("cockpit-html-apps");if(e)try{e.postMessage({type:"changed"})}finally{e.close()}}},65153:(e,t,n)=>{n.d(t,{u:()=>o});var r=n(12115),s=n(2111),l=n(48948);function o(e,t,n,o,a){let i=(0,r.useRef)(null),c=(0,r.useRef)(0),d=(0,r.useRef)(!1),u=()=>{let e=`live-asst-${++c.current}`;return i.current=e,t(t=>[...t,{id:e,role:"assistant",content:"",isStreaming:!0}]),e},h=e=>{if("system"===e.type&&"init"===e.subtype){d.current=!0,u();return}if("system"===e.type&&"task_notification"===e.subtype){if(!d.current){let n=`live-tasknotif-${e.task_id||++c.current}`,r=`<task-notification>
378
378
  `+(e.task_id?`<task-id>${e.task_id}</task-id>