conductor-oss 0.10.2 → 0.10.3

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 (83) hide show
  1. package/package.json +5 -5
  2. package/web/.next/standalone/packages/web/.next/BUILD_ID +1 -1
  3. package/web/.next/standalone/packages/web/.next/build-manifest.json +2 -2
  4. package/web/.next/standalone/packages/web/.next/prerender-manifest.json +3 -3
  5. package/web/.next/standalone/packages/web/.next/server/app/_global-error.html +2 -2
  6. package/web/.next/standalone/packages/web/.next/server/app/_global-error.rsc +1 -1
  7. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/web/.next/standalone/packages/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page/server-reference-manifest.json +7 -7
  13. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  14. package/web/.next/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/web/.next/standalone/packages/web/.next/server/app/_not-found.html +1 -1
  16. package/web/.next/standalone/packages/web/.next/server/app/_not-found.rsc +4 -4
  17. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  18. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  20. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/web/.next/standalone/packages/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/web/.next/standalone/packages/web/.next/server/app/page/react-loadable-manifest.json +1 -1
  24. package/web/.next/standalone/packages/web/.next/server/app/page/server-reference-manifest.json +7 -7
  25. package/web/.next/standalone/packages/web/.next/server/app/page.js.nft.json +1 -1
  26. package/web/.next/standalone/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
  27. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page/server-reference-manifest.json +7 -7
  28. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  29. package/web/.next/standalone/packages/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  30. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page/server-reference-manifest.json +7 -7
  31. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page.js.nft.json +1 -1
  32. package/web/.next/standalone/packages/web/.next/server/app/sign-in/[[...sign-in]]/page_client-reference-manifest.js +1 -1
  33. package/web/.next/standalone/packages/web/.next/server/app/unlock/page/server-reference-manifest.json +7 -7
  34. package/web/.next/standalone/packages/web/.next/server/app/unlock/page.js.nft.json +1 -1
  35. package/web/.next/standalone/packages/web/.next/server/app/unlock/page_client-reference-manifest.js +1 -1
  36. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__000b8c99._.js +1 -1
  37. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__29d8d063._.js +1 -1
  38. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{[root-of-the-server]__449b4752._.js → [root-of-the-server]__88f1a658._.js} +2 -2
  39. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_0e1412de._.js +1 -1
  40. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{_09cee208._.js → _50729681._.js} +2 -2
  41. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_532f707d._.js +1 -1
  42. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_69e05fca._.js +1 -1
  43. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{_39a8aaab._.js → _772b8780._.js} +1 -1
  44. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_80efe193._.js +1 -1
  45. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_c0f0e227._.js +1 -1
  46. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{_e8d785fd._.js → _e4bb6f8b._.js} +1 -1
  47. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/_f36ddaa9._.js +1 -1
  48. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_91af56d7._.js +3 -0
  49. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/{node_modules_@clerk_nextjs_dist_esm_app-router_d643ba4f._.js → node_modules_@clerk_nextjs_dist_esm_app-router_bdf45210._.js} +2 -2
  50. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_components_sessions_SessionDetail_tsx_5fcad270._.js +3 -3
  51. package/web/.next/standalone/packages/web/.next/server/pages/404.html +1 -1
  52. package/web/.next/standalone/packages/web/.next/server/pages/500.html +2 -2
  53. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.js +1 -1
  54. package/web/.next/standalone/packages/web/.next/server/server-reference-manifest.json +8 -8
  55. package/web/.next/standalone/packages/web/.next/static/chunks/1bb0a91a28af6657.js +1 -0
  56. package/web/.next/standalone/packages/web/.next/static/chunks/29e54db10e738a4a.js +1 -0
  57. package/web/.next/{static/chunks/b37560d2b00bfad0.js → standalone/packages/web/.next/static/chunks/5d9099e8a93cb553.js} +1 -1
  58. package/web/.next/standalone/packages/web/.next/static/chunks/{3113dc641d66d78b.js → 76d95865c9872cf3.js} +1 -1
  59. package/web/.next/standalone/packages/web/.next/static/chunks/95c6beedbca3ca5f.css +3 -0
  60. package/web/.next/standalone/packages/web/.next/static/chunks/{b432e7e698d18686.js → 9a521cb372150458.js} +3 -3
  61. package/web/.next/standalone/packages/web/.next/static/chunks/{a429a6b133b0f690.js → e7bdcf9932b93b7a.js} +1 -1
  62. package/web/.next/standalone/packages/web/src/app/globals.css +9 -2
  63. package/web/.next/standalone/packages/web/src/components/sessions/SessionTerminal.tsx +75 -17
  64. package/web/.next/static/chunks/1bb0a91a28af6657.js +1 -0
  65. package/web/.next/static/chunks/29e54db10e738a4a.js +1 -0
  66. package/web/.next/{standalone/packages/web/.next/static/chunks/b37560d2b00bfad0.js → static/chunks/5d9099e8a93cb553.js} +1 -1
  67. package/web/.next/static/chunks/{3113dc641d66d78b.js → 76d95865c9872cf3.js} +1 -1
  68. package/web/.next/static/chunks/95c6beedbca3ca5f.css +3 -0
  69. package/web/.next/static/chunks/{b432e7e698d18686.js → 9a521cb372150458.js} +3 -3
  70. package/web/.next/static/chunks/{a429a6b133b0f690.js → e7bdcf9932b93b7a.js} +1 -1
  71. package/web/.next/standalone/packages/web/.next/server/chunks/ssr/node_modules_@clerk_nextjs_dist_esm_app-router_251c7a58._.js +0 -3
  72. package/web/.next/standalone/packages/web/.next/static/chunks/061d791617412133.js +0 -1
  73. package/web/.next/standalone/packages/web/.next/static/chunks/2f53a8bab803f5c8.js +0 -1
  74. package/web/.next/standalone/packages/web/.next/static/chunks/ab896140dbd7fe0c.css +0 -3
  75. package/web/.next/static/chunks/061d791617412133.js +0 -1
  76. package/web/.next/static/chunks/2f53a8bab803f5c8.js +0 -1
  77. package/web/.next/static/chunks/ab896140dbd7fe0c.css +0 -3
  78. /package/web/.next/standalone/packages/web/.next/static/{niCzSE_5c2XBzuC341KeF → P0LCs51_izGZRW_UQNGtN}/_buildManifest.js +0 -0
  79. /package/web/.next/standalone/packages/web/.next/static/{niCzSE_5c2XBzuC341KeF → P0LCs51_izGZRW_UQNGtN}/_clientMiddlewareManifest.json +0 -0
  80. /package/web/.next/standalone/packages/web/.next/static/{niCzSE_5c2XBzuC341KeF → P0LCs51_izGZRW_UQNGtN}/_ssgManifest.js +0 -0
  81. /package/web/.next/static/{niCzSE_5c2XBzuC341KeF → P0LCs51_izGZRW_UQNGtN}/_buildManifest.js +0 -0
  82. /package/web/.next/static/{niCzSE_5c2XBzuC341KeF → P0LCs51_izGZRW_UQNGtN}/_clientMiddlewareManifest.json +0 -0
  83. /package/web/.next/static/{niCzSE_5c2XBzuC341KeF → P0LCs51_izGZRW_UQNGtN}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
- module.exports=[37483,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(70106);let f=(0,e.default)("file-code",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}]]),g=(0,e.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]),h=(0,e.default)("layout-dashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]),i=(0,e.default)("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);var j=a.i(7554),k=a.i(50104),l=a.i(24050),m=a.i(77192),n=a.i(30553),o=a.i(7827),p=a.i(25152),q=a.i(92843),r="Tabs",[s,t]=(0,k.createContextScope)(r,[l.createRovingFocusGroupScope]),u=(0,l.createRovingFocusGroupScope)(),[v,w]=s(r),x=c.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,onValueChange:f,defaultValue:g,orientation:h="horizontal",dir:i,activationMode:j="automatic",...k}=a,l=(0,o.useDirection)(i),[m,s]=(0,p.useControllableState)({prop:e,onChange:f,defaultProp:g??"",caller:r});return(0,b.jsx)(v,{scope:d,baseId:(0,q.useId)(),value:m,onValueChange:s,orientation:h,dir:l,activationMode:j,children:(0,b.jsx)(n.Primitive.div,{dir:l,"data-orientation":h,...k,ref:c})})});x.displayName=r;var y="TabsList",z=c.forwardRef((a,c)=>{let{__scopeTabs:d,loop:e=!0,...f}=a,g=w(y,d),h=u(d);return(0,b.jsx)(l.Root,{asChild:!0,...h,orientation:g.orientation,dir:g.dir,loop:e,children:(0,b.jsx)(n.Primitive.div,{role:"tablist","aria-orientation":g.orientation,...f,ref:c})})});z.displayName=y;var A="TabsTrigger",B=c.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,disabled:f=!1,...g}=a,h=w(A,d),i=u(d),k=E(h.baseId,e),m=F(h.baseId,e),o=e===h.value;return(0,b.jsx)(l.Item,{asChild:!0,...i,focusable:!f,active:o,children:(0,b.jsx)(n.Primitive.button,{type:"button",role:"tab","aria-selected":o,"aria-controls":m,"data-state":o?"active":"inactive","data-disabled":f?"":void 0,disabled:f,id:k,...g,ref:c,onMouseDown:(0,j.composeEventHandlers)(a.onMouseDown,a=>{f||0!==a.button||!1!==a.ctrlKey?a.preventDefault():h.onValueChange(e)}),onKeyDown:(0,j.composeEventHandlers)(a.onKeyDown,a=>{[" ","Enter"].includes(a.key)&&h.onValueChange(e)}),onFocus:(0,j.composeEventHandlers)(a.onFocus,()=>{let a="manual"!==h.activationMode;o||f||!a||h.onValueChange(e)})})})});B.displayName=A;var C="TabsContent",D=c.forwardRef((a,d)=>{let{__scopeTabs:e,value:f,forceMount:g,children:h,...i}=a,j=w(C,e),k=E(j.baseId,f),l=F(j.baseId,f),o=f===j.value,p=c.useRef(o);return c.useEffect(()=>{let a=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)(m.Presence,{present:g||o,children:({present:c})=>(0,b.jsx)(n.Primitive.div,{"data-state":o?"active":"inactive","data-orientation":j.orientation,role:"tabpanel","aria-labelledby":k,hidden:!c,id:l,tabIndex:0,...i,ref:d,style:{...a.style,animationDuration:p.current?"0s":void 0},children:c&&h})})});function E(a,b){return`${a}-trigger-${b}`}function F(a,b){return`${a}-content-${b}`}D.displayName=C;var G=a.i(26006);let H=(0,c.forwardRef)(({className:a,...c},d)=>(0,b.jsx)(z,{ref:d,className:(0,G.cn)("inline-flex max-w-full items-center gap-0.5 overflow-x-auto rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] p-0.5 whitespace-nowrap touch-pan-x [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",a),...c}));H.displayName="TabsList";let I=(0,c.forwardRef)(({className:a,...c},d)=>(0,b.jsx)(B,{ref:d,className:(0,G.cn)("inline-flex min-h-[34px] shrink-0 items-center gap-1.5 rounded-[3px] px-2.5 py-1.5 text-[12px] text-[var(--vk-text-muted)]","data-[state=active]:bg-[var(--vk-bg-active)] data-[state=active]:text-[var(--vk-text-normal)]","hover:text-[var(--vk-text-normal)]","focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--vk-orange)]",a),...c}));I.displayName="TabsTrigger";let J=(0,c.forwardRef)(({className:a,...c},d)=>(0,b.jsx)(D,{ref:d,className:(0,G.cn)("focus-visible:outline-none",a),...c}));J.displayName="TabsContent";var K=a.i(48079),L=a.i(50415),M=a.i(61693),N=a.i(33441);let O=(0,e.default)("clock-3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6h4",key:"135r8i"}]]);var P=a.i(5151);let Q=(0,e.default)("dollar-sign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]);var R=a.i(34531),S=a.i(10948);let T=(0,e.default)("list-checks",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]]),U=(0,e.default)("timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]]);var V=a.i(52806);let W={archived:"default",queued:"info",running:"success",working:"success",done:"default",merged:"success",errored:"error",stuck:"warning",killed:"error",needs_input:"warning"};function X({text:a}){let[d,e]=(0,c.useState)(!1);async function f(){try{await navigator.clipboard.writeText(a),e(!0),window.setTimeout(()=>e(!1),1400)}catch{}}return(0,b.jsxs)("button",{type:"button",onClick:()=>void f(),className:"inline-flex items-center gap-1 font-mono text-[12px] text-[var(--text-normal)] transition-colors hover:text-[var(--text-strong)]",children:[(0,b.jsx)("span",{className:"truncate",children:a}),d?(0,b.jsx)(N.Check,{className:"h-3 w-3 text-[var(--status-ready)]"}):(0,b.jsx)(P.Copy,{className:"h-3 w-3 text-[var(--text-faint)]"})]})}function Y(a){if(!a)return"-";let b=new Date(a);return Number.isNaN(b.getTime())?"-":b.toLocaleString()}function Z(a,b){let c=a.metadata[b];if("string"==typeof c&&c.trim().length>0)return c}function $(a){if(!a)return null;let b=Number.parseInt(a,10);return Number.isFinite(b)&&b>0?b:null}function _({session:a}){let d=(0,c.useMemo)(()=>Z(a,"task")??Z(a,"prompt")??("string"==typeof a.task?a.task:"")??("string"==typeof a.prompt?a.prompt:""),[a]),e=(0,c.useMemo)(()=>Z(a,"agent")??("string"==typeof a.agent?a.agent:""),[a]),f=(0,c.useMemo)(()=>Z(a,"worktree")??Z(a,"path")??("string"==typeof a.worktree?a.worktree:""),[a]),g=(0,c.useMemo)(()=>({created:Y(a.createdAt),started:Y(Z(a,"startedAt")??a.startedAt),finished:Y(Z(a,"finishedAt")??a.finishedAt),duration:function(a,b){if(!a||!b)return"-";let c=new Date(a).getTime(),d=new Date(b).getTime();if(!Number.isFinite(c)||!Number.isFinite(d)||d<c)return"-";let e=Math.floor((d-c)/6e4);if(e<1)return"<1m";if(e<60)return`${e}m`;let f=Math.floor(e/60);return`${f}h ${e%60}m`}(Z(a,"startedAt")??a.startedAt,Z(a,"finishedAt")??a.finishedAt),cost:function(a){if("number"==typeof a.cost)return a.cost;let b=a.metadata;if(!b||"object"!=typeof b)return 0;let c=b.cost;if("string"!=typeof c)return 0;try{let a=JSON.parse(c),b="number"==typeof a.estimatedCostUsd?a.estimatedCostUsd:0,d="number"==typeof a.totalUSD?a.totalUSD:0;return b??d}catch{return 0}}(a)}),[a]),h=(0,c.useMemo)(()=>$(Z(a,"queuePosition")),[a]),i=(0,c.useMemo)(()=>$(Z(a,"queueDepth")),[a]),j=(0,c.useMemo)(()=>Z(a,"recoveryState")??"",[a]),k=(0,c.useMemo)(()=>"queued"===a.status?h?`Waiting in queue at position ${h}${i?` of ${i}`:""}.`:"Waiting in the launch queue.":"requeued_after_restart"===j?"This session was recovered after a backend restart and requeued automatically.":"reattach_pending"===j?"Reattaching the tmux-managed runtime after backend restart.":"detached_runtime"===j?"The backend restarted while the agent may still be running. Kill or archive this session before resuming.":"resume_required"===j?"This session was recovered after a backend restart. Send a message to resume in the same workspace.":"",[i,h,j,a.status]);return(0,b.jsxs)("div",{className:"space-y-3",children:[d&&(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{children:[(0,b.jsx)(T,{className:"h-4 w-4 text-[var(--accent)]"}),(0,b.jsx)("span",{className:"text-[12px] font-semibold uppercase tracking-[0.08em] text-[var(--text-faint)]",children:"Task Brief"})]}),(0,b.jsx)(K.CardContent,{children:(0,b.jsx)("p",{className:"whitespace-pre-wrap text-[13px] leading-relaxed text-[var(--text-normal)]",children:d})})]}),("queued"===a.status||j)&&(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{children:[(0,b.jsx)(O,{className:"h-4 w-4 text-[var(--accent)]"}),(0,b.jsx)("span",{className:"text-[12px] font-semibold uppercase tracking-[0.08em] text-[var(--text-faint)]",children:"Launch State"})]}),(0,b.jsxs)(K.CardContent,{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(L.Badge,{variant:W[a.status]??"default",children:a.status}),h?(0,b.jsxs)(L.Badge,{variant:"info",children:["Queue #",h,i?` / ${i}`:""]}):null,j?(0,b.jsx)(L.Badge,{variant:"warning",children:j.replaceAll("_"," ")}):null]}),k?(0,b.jsx)("p",{className:"text-[13px] leading-relaxed text-[var(--text-normal)]",children:k}):null]})]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(a.branch||f)&&(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{children:[(0,b.jsx)(S.GitBranch,{className:"h-4 w-4 text-[var(--text-faint)]"}),(0,b.jsx)("span",{className:"text-[12px] font-semibold text-[var(--text-normal)]",children:"Workspace"})]}),(0,b.jsxs)(K.CardContent,{className:"space-y-2",children:[a.branch&&(0,b.jsxs)("div",{className:"surface-panel flex items-center gap-2 rounded-[var(--radius-sm)] border px-2.5 py-2",children:[(0,b.jsx)(S.GitBranch,{className:"h-3.5 w-3.5 text-[var(--text-faint)]"}),(0,b.jsx)(X,{text:a.branch})]}),f&&(0,b.jsxs)("div",{className:"surface-panel flex items-center gap-2 rounded-[var(--radius-sm)] border px-2.5 py-2",children:[(0,b.jsx)(R.FolderGit2,{className:"h-3.5 w-3.5 text-[var(--text-faint)]"}),(0,b.jsx)(X,{text:f})]})]})]}),(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{children:[(0,b.jsx)(V.AgentTileIcon,{seed:{label:e||"agent"},className:"h-6 w-6"}),(0,b.jsx)("span",{className:"text-[12px] font-semibold text-[var(--text-normal)]",children:"Session Status"})]}),(0,b.jsxs)(K.CardContent,{className:"space-y-2.5",children:[(0,b.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[(0,b.jsx)(L.Badge,{variant:W[a.status]??"default",children:a.status}),a.activity&&(0,b.jsx)(L.Badge,{variant:"info",children:a.activity}),a.attention&&(0,b.jsx)(L.Badge,{variant:"warning",children:a.attention})]}),(0,b.jsx)("p",{className:"text-[13px] text-[var(--text-normal)]",children:e||"Unknown agent"})]})]}),(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{children:[(0,b.jsx)(O,{className:"h-4 w-4 text-[var(--text-faint)]"}),(0,b.jsx)("span",{className:"text-[12px] font-semibold text-[var(--text-normal)]",children:"Timeline"})]}),(0,b.jsxs)(K.CardContent,{className:"space-y-2 text-[12px] text-[var(--text-muted)]",children:[(0,b.jsx)(aa,{icon:(0,b.jsx)(U,{className:"h-3.5 w-3.5"}),label:"Created",value:g.created}),(0,b.jsx)(aa,{icon:(0,b.jsx)(U,{className:"h-3.5 w-3.5"}),label:"Started",value:g.started}),(0,b.jsx)(aa,{icon:(0,b.jsx)(U,{className:"h-3.5 w-3.5"}),label:"Finished",value:g.finished}),(0,b.jsx)(aa,{icon:(0,b.jsx)(O,{className:"h-3.5 w-3.5"}),label:"Duration",value:g.duration}),(0,b.jsx)(aa,{icon:(0,b.jsx)(Q,{className:"h-3.5 w-3.5"}),label:"Estimated Cost",value:g.cost>0?`$${g.cost.toFixed(2)}`:"$0.00"})]})]})]})]})}function aa({icon:a,label:c,value:d}){return(0,b.jsxs)("div",{className:"surface-panel flex items-center gap-2 rounded-[var(--radius-sm)] border px-2.5 py-2",children:[(0,b.jsx)("span",{className:"text-[var(--text-faint)]",children:a}),(0,b.jsx)("span",{className:"min-w-[70px] text-[var(--text-faint)]",children:c}),(0,b.jsx)("span",{className:"ml-auto truncate text-right font-mono text-[11px] text-[var(--text-normal)]",children:d})]})}var ab=a.i(5784),ac=a.i(50522);let ad=(0,e.default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]),ae=(0,e.default)("file-code-corner",[["path",{d:"M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35",key:"1wthlu"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"m5 16-3 3 3 3",key:"331omg"}],["path",{d:"m9 22 3-3-3-3",key:"lsp7cz"}]]),af=(0,e.default)("file-plus-corner",[["path",{d:"M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35",key:"17jvcc"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M14 19h6",key:"bvotb8"}],["path",{d:"M17 16v6",key:"18yu1i"}]]);var ag=a.i(92596),ah=a.i(96101);let ai=(0,e.default)("git-compare",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["path",{d:"M11 18H8a2 2 0 0 1-2-2V9",key:"19pyzm"}]]),aj=(0,e.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var ak=a.i(15618),al=a.i(69520),am=a.i(87532);let an=(0,e.default)("text-wrap",[["path",{d:"m16 16-3 3 3 3",key:"117b85"}],["path",{d:"M3 12h14.5a1 1 0 0 1 0 7H13",key:"18xa6z"}],["path",{d:"M3 19h6",key:"1ygdsz"}],["path",{d:"M3 5h18",key:"1u36vt"}]]);var ao=a.i(33508),ap=a.i(9341),aq=a.i(69630);let ar={hasDiff:!1,generatedAt:"",source:"not-found",truncated:!1,files:[],untracked:[]};function as(a){return"modified"===a||"added"===a||"deleted"===a||"renamed"===a||"copy"===a||"binary"===a?a:"unknown"}function at(a){return"meta"===a||"hunk"===a||"context"===a||"add"===a||"remove"===a||"info"===a?a:"context"}function au(a){return"string"!=typeof a?"":a.trim().replace(/^\/+/,"").replace(/\/+/g,"/")||"unknown-file"}function av(a){let b=new Map;for(let c of a.files??[]){let a=au(c.path),d={path:a,status:as(c.status),additions:Number.isFinite(c.additions)?Math.max(0,c.additions):0,deletions:Number.isFinite(c.deletions)?Math.max(0,c.deletions):0,lines:Array.isArray(c.lines)?c.lines.map(a=>({kind:at(a.kind),oldLine:"number"==typeof a.oldLine&&Number.isFinite(a.oldLine)?a.oldLine:null,newLine:"number"==typeof a.newLine&&Number.isFinite(a.newLine)?a.newLine:null,text:"string"==typeof a.text?a.text:""})):[],untracked:!!c.untracked};b.set(a,d)}for(let c of a.untracked??[]){let a=au(c);b.has(a)||b.set(a,{path:a,status:"added",additions:0,deletions:0,lines:[],untracked:!0})}return[...b.values()].sort((a,b)=>a.path.localeCompare(b.path,void 0,{sensitivity:"base"}))}function aw(a,b){return{name:a,path:b,dirs:new Map,files:[]}}function ax(a){return"working-tree"===a?"Working Tree":"remote-pr"===a?"Remote PR":"Not Found"}function ay(a){return"add"===a?"text-[var(--vk-green)]":"remove"===a?"text-[var(--vk-red)]":"hunk"===a?"text-[var(--status-working)]":"meta"===a||"info"===a?"text-[var(--vk-text-muted)]":"text-[var(--vk-text-normal)]"}function az({sessionId:a}){let d=encodeURIComponent(a),[e,f]=(0,c.useState)(ar),[g,h]=(0,c.useState)(!0),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)("changes"),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),[u,v]=(0,c.useState)(null),[w,x]=(0,c.useState)({}),[y,z]=(0,c.useState)({}),[A,B]=(0,c.useState)([]),[C,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)(!1),[G,H]=(0,c.useState)(null),[I,J]=(0,c.useState)(!1),[K,M]=(0,c.useState)(""),[N,O]=(0,c.useState)(!1),[P,Q]=(0,c.useState)(!1),[R,S]=(0,c.useState)(0),[T,U]=(0,c.useState)(!1),[V,W]=(0,c.useState)(null),X=(0,c.useRef)(!0),Y=(0,c.useRef)({}),Z=(0,c.useRef)(null),$=(0,c.useRef)(!1),_=(0,c.useCallback)(a=>av(a),[]),aa=(0,c.useCallback)(async()=>{try{let a=await fetch(`/api/sessions/${d}/diff`,{cache:"no-store"});if(!a.ok){if(404===a.status){if(!X.current)return;f(ar),j(null);return}let b=`Failed to fetch diff (${a.status})`;try{let c=await a.json();"string"==typeof c.error&&c.error.length>0&&(b=c.error)}catch{}throw Error(b)}let b=await a.json();if(!X.current)return;if(b.error)throw Error(b.error);let c={hasDiff:!!b.hasDiff,generatedAt:"string"==typeof b.generatedAt?b.generatedAt:"",source:"working-tree"===b.source||"remote-pr"===b.source?b.source:"not-found",truncated:!!b.truncated,files:Array.isArray(b.files)?b.files.map(a=>({path:au(a.path),status:as(a.status),additions:Number.isFinite(a.additions)?Math.max(0,Number(a.additions)):0,deletions:Number.isFinite(a.deletions)?Math.max(0,Number(a.deletions)):0,lines:Array.isArray(a.lines)?a.lines.map(a=>({kind:at(a.kind),oldLine:"number"==typeof a.oldLine&&Number.isFinite(a.oldLine)?a.oldLine:null,newLine:"number"==typeof a.newLine&&Number.isFinite(a.newLine)?a.newLine:null,text:"string"==typeof a.text?a.text:""})):[]})):[],untracked:Array.isArray(b.untracked)?b.untracked.filter(a=>"string"==typeof a):[]},e=_(c);f(a=>!function(a,b){if(a.hasDiff!==b.hasDiff||a.generatedAt!==b.generatedAt||a.source!==b.source||a.truncated!==b.truncated||!function(a,b){if(a===b)return!0;if(a.length!==b.length)return!1;for(let c=0;c<a.length;c+=1)if(a[c]!==b[c])return!1;return!0}(a.untracked,b.untracked)||a.files.length!==b.files.length)return!1;for(let c=0;c<a.files.length;c+=1){let d=a.files[c],e=b.files[c];if(d.path!==e.path||d.status!==e.status||d.additions!==e.additions||d.deletions!==e.deletions||!!d.untracked!=!!e.untracked||d.lines.length!==e.lines.length)return!1;for(let a=0;a<d.lines.length;a+=1){let b=d.lines[a],c=e.lines[a];if(b.kind!==c.kind||b.oldLine!==c.oldLine||b.newLine!==c.newLine||b.text!==c.text)return!1}}return!0}(a,c)?c:a),t(a=>a&&e.some(b=>b.path===a)?a:e[0]?.path??null),x(a=>{let b={...a};for(let a of e.slice(0,10))null==b[a.path]&&(b[a.path]=!1);return b}),j(null)}catch(a){X.current&&(f(ar),j(a instanceof Error?a.message:"Failed to load diff"))}finally{X.current&&h(!1)}},[d,_]),az=(0,c.useCallback)(async()=>{F(!0);try{let a=await fetch(`/api/sessions/${d}/files`,{cache:"no-store"});if(!a.ok){if(404===a.status){if(!X.current)return;B([]),D(!0),J(!1),H(null);return}let b=`Failed to load workspace files (${a.status})`;try{let c=await a.json();"string"==typeof c.error&&c.error.length>0&&(b=c.error)}catch{}throw Error(b)}let b=await a.json();if(!X.current)return;let c=Array.isArray(b.files)?b.files.filter(a=>"string"==typeof a&&a.trim().length>0):[];B(c),D(!0),J(!!b.truncated),H(null),v(a=>a&&c.includes(a)?a:c[0]??null)}catch(a){if(!X.current)return;B([]),D(!1),H(a instanceof Error?a.message:"Failed to load workspace files")}finally{X.current&&F(!1)}},[d]),aA=(0,c.useCallback)(async a=>{U(!0);try{let b=encodeURIComponent(a),c=await fetch(`/api/sessions/${d}/files?path=${b}`,{cache:"no-store"});if(!c.ok){if(404===c.status){if(!X.current)return;M(""),O(!1),Q(!1),S(0),W("File no longer exists in this workspace.");return}let a=`Failed to load file content (${c.status})`;try{let b=await c.json();"string"==typeof b.error&&b.error.length>0&&(a=b.error)}catch{}throw Error(a)}let e=await c.json();if(!X.current)return;M("string"==typeof e.content?e.content:""),O(!!e.binary),Q(!!e.truncated),S("number"==typeof e.size&&Number.isFinite(e.size)?Math.max(0,e.size):0),W(null)}catch(a){if(!X.current)return;M(""),O(!1),Q(!1),S(0),W(a instanceof Error?a.message:"Failed to load file content")}finally{X.current&&U(!1)}},[d]);(0,c.useEffect)(()=>{X.current=!0,Z.current=null,$.current=!1,aa();let b=(0,ap.subscribeToSnapshotEvents)(b=>{if(!X.current)return;let c=b.sessions.find(b=>b.id===a);if(!c)return;$.current=aq.TERMINAL_STATUSES.has(c.status);let d=`${c.status}:${c.lastActivityAt}`;Z.current!==d&&(Z.current=d,aa())}),c=null,d=()=>{let a="visible"!==document.visibilityState||$.current?3e4:15e3;c=window.setTimeout(async()=>{X.current&&(await aa(),X.current&&d())},a)};d();let e=()=>{Z.current=null,aa()},f=()=>{"visible"===document.visibilityState&&e()};return window.addEventListener("focus",e),document.addEventListener("visibilitychange",f),()=>{X.current=!1,b(),null!=c&&window.clearTimeout(c),window.removeEventListener("focus",e),document.removeEventListener("visibilitychange",f)}},[aa,a]),(0,c.useEffect)(()=>{Z.current=null,$.current=!1,h(!0),l("changes"),p(""),v(null),B([]),D(!1),F(!1),H(null),J(!1),M(""),O(!1),Q(!1),S(0),U(!1),W(null)},[a]),(0,c.useEffect)(()=>{"files"!==k||C||E||az()},[az,k,C,E]),(0,c.useEffect)(()=>{"files"!==k||u&&aA(u)},[aA,u,k]);let aB=(0,c.useMemo)(()=>av(e),[e]),aC=m.trim().toLowerCase(),aD=(0,c.useMemo)(()=>0===aC.length?aB:aB.filter(a=>a.path.toLowerCase().includes(aC)),[aB,aC]),aE=(0,c.useMemo)(()=>(function(a){let b=aw("","");for(let c of a){let a=c.path.split("/").filter(a=>a.length>0),d=a.pop()??c.path,e=b,f="";for(let b of a){f=f?`${f}/${b}`:b;let a=e.dirs.get(b);if(a){e=a;continue}let c=aw(b,f);e.dirs.set(b,c),e=c}e.files.push({kind:"file",name:d,path:c.path,additions:c.additions,deletions:c.deletions,status:c.status,untracked:!!c.untracked})}return function a(b){let c=[...[...b.dirs.values()].sort((a,b)=>a.name.localeCompare(b.name,void 0,{sensitivity:"base"})).map(a),...[...b.files].sort((a,b)=>a.name.localeCompare(b.name,void 0,{sensitivity:"base"}))],d=0,e=0,f=0;for(let a of c){if("dir"===a.kind){d+=a.additions,e+=a.deletions,f+=a.fileCount;continue}d+=a.additions,e+=a.deletions,f+=1}return{kind:"dir",name:b.name,path:b.path,additions:d,deletions:e,fileCount:f,children:c}}(b)})(aD),[aD]),aF=(0,c.useMemo)(()=>aB.reduce((a,b)=>a+Math.max(0,b.additions),0),[aB]),aG=(0,c.useMemo)(()=>aB.reduce((a,b)=>a+Math.max(0,b.deletions),0),[aB]),aH=(0,c.useMemo)(()=>s?aB.find(a=>a.path===s)??null:aB[0]??null,[aB,s]),aI=o.trim().toLowerCase(),aJ=(0,c.useMemo)(()=>0===aI.length?A:A.filter(a=>a.toLowerCase().includes(aI)),[A,aI]);function aK(a){t(a),x(b=>({...b,[a]:!0})),window.requestAnimationFrame(()=>{Y.current[a]?.scrollIntoView({behavior:"smooth",block:"start"})})}return(0,b.jsxs)("div",{className:"flex h-full min-h-0 flex-col overflow-hidden rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)]",children:[(0,b.jsxs)("div",{className:"flex h-[32px] shrink-0 items-center border-b border-[var(--vk-border)] px-2",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)(ai,{className:"h-[15px] w-[15px] text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"truncate text-[13px] font-medium text-[var(--vk-text-strong)]",children:"Review Diff"}),(0,b.jsx)(L.Badge,{variant:"outline",className:"h-[20px] px-1.5 text-[10px]",children:ax(e.source)})]}),(0,b.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,b.jsx)("span",{className:"hidden text-[11px] text-[var(--vk-text-muted)] md:inline",children:function(a){if(!a)return"Not generated";let b=new Date(a);return Number.isNaN(b.getTime())?"Not generated":b.toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}(e.generatedAt)}),(0,b.jsx)("button",{type:"button",onClick:()=>void aa(),disabled:g,className:"inline-flex h-[22px] w-[22px] items-center justify-center rounded-[3px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)] disabled:opacity-60","aria-label":"Refresh diff",children:(0,b.jsx)(al.RefreshCw,{className:`h-[14px] w-[14px] ${g?"animate-spin":""}`})}),(0,b.jsxs)("button",{type:"button",onClick:()=>r(a=>!a),className:`inline-flex h-[22px] items-center gap-1 rounded-[3px] px-1.5 text-[11px] ${q?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]"}`,"aria-label":"Toggle wrapped lines",children:[(0,b.jsx)(an,{className:"h-[14px] w-[14px]"}),"Wrap"]})]})]}),(0,b.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col xl:flex-row",children:[(0,b.jsxs)("section",{className:"flex min-h-0 min-w-0 flex-1 flex-col border-b border-[var(--vk-border)] xl:border-b-0 xl:border-r",children:[(0,b.jsxs)("div",{className:"flex h-[30px] shrink-0 items-center gap-2 border-b border-[var(--vk-border)] px-2 text-[11px] text-[var(--vk-text-muted)]",children:[(0,b.jsxs)("span",{children:[aB.length," files changed"]}),(0,b.jsxs)("span",{className:"inline-flex items-center gap-0.5 text-[var(--vk-green)]",children:[(0,b.jsx)(ak.Plus,{className:"h-[12px] w-[12px]"}),aF]}),(0,b.jsxs)("span",{className:"inline-flex items-center gap-0.5 text-[var(--vk-red)]",children:[(0,b.jsx)(aj,{className:"h-[12px] w-[12px]"}),aG]}),e.truncated&&(0,b.jsx)("span",{className:"ml-auto text-[var(--status-attention)]",children:"Output truncated"})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-auto bg-[var(--vk-bg-panel)]",children:[g&&0===aB.length&&!i&&(0,b.jsx)("div",{className:"flex h-full items-center justify-center p-8 text-[13px] text-[var(--vk-text-muted)]",children:"Loading session diff..."}),i&&(0,b.jsx)("div",{className:"flex h-full items-center justify-center p-8 text-center text-[13px] text-[var(--status-error)]",children:i}),!g&&!i&&0===aB.length&&(0,b.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2 p-8 text-center",children:[(0,b.jsx)(ad,{className:"h-7 w-7 text-[var(--vk-text-muted)]"}),(0,b.jsx)("p",{className:"text-[13px] text-[var(--vk-text-muted)]",children:"No changed files in this session yet."})]}),!i&&aB.length>0&&aB.map(a=>{let c=w[a.path]??!1,d=aH?.path===a.path;return(0,b.jsxs)("div",{ref:b=>{Y.current[a.path]=b},className:`border-b border-[var(--vk-border)] ${d?"bg-[var(--vk-bg-active)]/40":"bg-[var(--vk-bg-panel)]"}`,children:[(0,b.jsxs)("div",{className:"flex min-h-[40px] items-center gap-2 px-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{var b;return b=a.path,void x(a=>{let c=a[b]??!1;return{...a,[b]:!c}})},className:"inline-flex h-[20px] w-[20px] items-center justify-center rounded-[3px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]","aria-label":c?`Collapse ${a.path}`:`Expand ${a.path}`,children:c?(0,b.jsx)(ab.ChevronDown,{className:"h-[15px] w-[15px]"}):(0,b.jsx)(ac.ChevronRight,{className:"h-[15px] w-[15px]"})}),(0,b.jsx)("span",{className:`inline-flex h-[23px] min-w-[58px] items-center justify-center rounded-[3px] border px-1.5 text-[11px] ${a.untracked||"added"===a.status?"border-[rgba(84,176,79,0.35)] text-[var(--vk-green)]":"deleted"===a.status?"border-[rgba(210,81,81,0.35)] text-[var(--vk-red)]":"renamed"===a.status||"copy"===a.status?"border-[rgba(108,168,255,0.35)] text-[var(--status-working)]":"binary"===a.status?"border-[rgba(210,160,59,0.35)] text-[var(--status-attention)]":"border-[var(--vk-border)] text-[var(--vk-text-muted)]"}`,children:a.untracked?"Untracked":"added"===a.status?"Added":"deleted"===a.status?"Deleted":"renamed"===a.status?"Renamed":"copy"===a.status?"Copied":"binary"===a.status?"Binary":"modified"===a.status?"Modified":"Changed"}),(0,b.jsx)("button",{type:"button",onClick:()=>aK(a.path),className:`min-w-0 flex-1 truncate text-left font-mono text-[12px] ${d?"text-[var(--vk-text-strong)]":"text-[var(--vk-text-normal)]"}`,children:a.path}),(0,b.jsxs)("div",{className:"flex items-center gap-2 font-mono text-[11px]",children:[a.additions>0&&(0,b.jsxs)("span",{className:"text-[var(--vk-green)]",children:["+",a.additions]}),a.deletions>0&&(0,b.jsxs)("span",{className:"text-[var(--vk-red)]",children:["-",a.deletions]}),0===a.additions&&0===a.deletions&&(0,b.jsx)("span",{className:"text-[var(--vk-text-muted)]",children:"0"})]})]}),c&&(0,b.jsx)("div",{className:"border-t border-[var(--vk-border)] bg-[var(--vk-bg-outer)]/30",children:0===a.lines.length?(0,b.jsx)("div",{className:"px-2 py-2 font-mono text-[11px] text-[var(--vk-text-muted)]",children:a.untracked?"Untracked file (line-level diff unavailable until staged).":"No line-level diff output for this file."}):(0,b.jsx)("div",{className:q?"":"overflow-x-auto",children:(0,b.jsxs)("div",{className:q?"":"min-w-[760px]",children:[(0,b.jsxs)("div",{className:"grid grid-cols-[56px_56px_20px_minmax(0,1fr)] border-b border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-2 py-1 font-mono text-[10px] uppercase tracking-wide text-[var(--vk-text-muted)]",children:[(0,b.jsx)("div",{children:"Old"}),(0,b.jsx)("div",{children:"New"}),(0,b.jsx)("div",{}),(0,b.jsx)("div",{children:"Line"})]}),a.lines.map((c,d)=>{var e,f;return(0,b.jsxs)("div",{className:`grid grid-cols-[56px_56px_20px_minmax(0,1fr)] border-b border-[var(--vk-border)] px-2 py-[2px] font-mono text-[11px] last:border-b-0 ${"add"===(e=c.kind)?"bg-[rgba(84,176,79,0.18)]":"remove"===e?"bg-[rgba(210,81,81,0.18)]":"hunk"===e?"bg-[rgba(108,168,255,0.12)]":""}`,children:[(0,b.jsx)("div",{className:"text-[var(--vk-text-muted)]",children:c.oldLine??""}),(0,b.jsx)("div",{className:"text-[var(--vk-text-muted)]",children:c.newLine??""}),(0,b.jsx)("div",{className:ay(c.kind),children:"add"===(f=c.kind)?"+":"remove"===f?"-":"hunk"===f?"@":"info"===f?"i":""}),(0,b.jsx)("div",{className:`${ay(c.kind)} ${q?"whitespace-pre-wrap break-words":"whitespace-pre"}`,children:c.text})]},`${a.path}-${d}-${c.oldLine??"x"}-${c.newLine??"y"}`)})]})})})]},a.path)})]})]}),(0,b.jsxs)("aside",{className:"flex min-h-0 w-full shrink-0 flex-col bg-[var(--vk-bg-panel)] xl:w-[299px]",children:[(0,b.jsxs)("div",{className:"flex h-[32px] items-center gap-1 border-b border-[var(--vk-border)] p-1",children:[(0,b.jsx)("button",{type:"button",onClick:()=>l("changes"),className:`inline-flex h-[24px] items-center rounded-[3px] px-2 text-[12px] ${"changes"===k?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]"}`,children:"Changes"}),(0,b.jsx)("button",{type:"button",onClick:()=>l("files"),className:`inline-flex h-[24px] items-center rounded-[3px] px-2 text-[12px] ${"files"===k?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]"}`,children:"Files"})]}),"changes"===k?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"border-b border-[var(--vk-border)] p-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-2 py-[5px]",children:[(0,b.jsx)(am.Search,{className:"h-[15px] w-[15px] text-[var(--vk-text-muted)]"}),(0,b.jsx)("input",{type:"text",value:m,onChange:a=>n(a.target.value),placeholder:"Search files...",className:"h-[20px] w-full bg-transparent text-[14px] text-[var(--vk-text-normal)] outline-none placeholder:text-[var(--vk-text-muted)]"}),m.length>0&&(0,b.jsx)("button",{type:"button",onClick:()=>n(""),className:"inline-flex h-[17px] w-[17px] items-center justify-center rounded-[3px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]","aria-label":"Clear file search",children:(0,b.jsx)(ao.X,{className:"h-[12px] w-[12px]"})})]})}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-auto",children:0===aD.length?(0,b.jsx)("div",{className:"px-3 py-3 text-[13px] text-[var(--vk-text-muted)]",children:aC.length>0?"No files match the current search.":"No changed files."}):(0,b.jsx)("div",{className:"py-1",children:function a(c,d=0){let e=[];for(let f of c){if("dir"===f.kind){let c=!!y[f.path];e.push((0,b.jsxs)("button",{type:"button",onClick:()=>(function(a){z(b=>({...b,[a]:!b[a]}))})(f.path),className:"flex h-[26px] w-full items-center gap-1.5 pr-2 text-left text-[12px] text-[var(--vk-text-normal)] hover:bg-[var(--vk-bg-hover)]",style:{paddingLeft:`${8+14*d}px`},children:[c?(0,b.jsx)(ac.ChevronRight,{className:"h-3.5 w-3.5 shrink-0 text-[var(--vk-text-muted)]"}):(0,b.jsx)(ab.ChevronDown,{className:"h-3.5 w-3.5 shrink-0 text-[var(--vk-text-muted)]"}),c?(0,b.jsx)(ag.Folder,{className:"h-3.5 w-3.5 shrink-0 text-[var(--vk-text-muted)]"}):(0,b.jsx)(ah.FolderOpen,{className:"h-3.5 w-3.5 shrink-0 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate",children:f.name}),(0,b.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-[var(--vk-text-muted)]",children:f.fileCount})]},`dir-${f.path}`)),c||e.push(...a(f.children,d+1));continue}let c=f.path===s;e.push((0,b.jsxs)("button",{type:"button",onClick:()=>aK(f.path),className:`flex h-[26px] w-full items-center gap-1.5 pr-2 text-left text-[12px] transition-colors ${c?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-normal)] hover:bg-[var(--vk-bg-hover)]"}`,style:{paddingLeft:`${8+14*d}px`},children:[(0,b.jsx)("span",{className:"inline-flex w-4 shrink-0 justify-center",children:f.untracked?(0,b.jsx)(af,{className:"h-3.5 w-3.5 text-[var(--vk-green)]"}):(0,b.jsx)(ae,{className:"h-3.5 w-3.5 text-[var(--vk-text-muted)]"})}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate",children:f.name}),f.additions>0&&(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[11px] text-[var(--vk-green)]",children:["+",f.additions]}),f.deletions>0&&(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[11px] text-[var(--vk-red)]",children:["-",f.deletions]})]},`file-${f.path}`))}return e}(aE.children)})}),(0,b.jsxs)("div",{className:"border-t border-[var(--vk-border)] p-2",children:[(0,b.jsx)("div",{className:"text-[16px] font-medium text-[var(--vk-text-normal)]",children:"Git"}),(0,b.jsxs)("div",{className:"mt-2 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-2 py-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-[12px] text-[var(--vk-text-muted)]",children:[(0,b.jsx)("span",{children:"Files"}),(0,b.jsx)("span",{className:"font-mono text-[var(--vk-text-normal)]",children:aB.length})]}),(0,b.jsxs)("div",{className:"mt-1 flex items-center justify-between text-[12px]",children:[(0,b.jsx)("span",{className:"text-[var(--vk-text-muted)]",children:"Added"}),(0,b.jsxs)("span",{className:"font-mono text-[var(--vk-green)]",children:["+",aF]})]}),(0,b.jsxs)("div",{className:"mt-1 flex items-center justify-between text-[12px]",children:[(0,b.jsx)("span",{className:"text-[var(--vk-text-muted)]",children:"Deleted"}),(0,b.jsxs)("span",{className:"font-mono text-[var(--vk-red)]",children:["-",aG]})]}),(0,b.jsxs)("div",{className:"mt-1 flex items-center justify-between text-[12px]",children:[(0,b.jsx)("span",{className:"text-[var(--vk-text-muted)]",children:"Source"}),(0,b.jsx)("span",{className:"font-mono text-[var(--vk-text-normal)]",children:ax(e.source)})]})]})]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"border-b border-[var(--vk-border)] p-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-2 py-[5px]",children:[(0,b.jsx)(am.Search,{className:"h-[15px] w-[15px] text-[var(--vk-text-muted)]"}),(0,b.jsx)("input",{type:"text",value:o,onChange:a=>p(a.target.value),placeholder:"Search all files...",className:"h-[20px] w-full bg-transparent text-[14px] text-[var(--vk-text-normal)] outline-none placeholder:text-[var(--vk-text-muted)]"}),o.length>0&&(0,b.jsx)("button",{type:"button",onClick:()=>p(""),className:"inline-flex h-[17px] w-[17px] items-center justify-center rounded-[3px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]","aria-label":"Clear workspace file search",children:(0,b.jsx)(ao.X,{className:"h-[12px] w-[12px]"})})]})}),(0,b.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-auto border-b border-[var(--vk-border)]",children:[E&&(0,b.jsx)("div",{className:"px-3 py-3 text-[13px] text-[var(--vk-text-muted)]",children:"Loading workspace files..."}),G&&(0,b.jsx)("div",{className:"px-3 py-3 text-[13px] text-[var(--status-error)]",children:G}),!E&&!G&&0===aJ.length&&(0,b.jsx)("div",{className:"px-3 py-3 text-[13px] text-[var(--vk-text-muted)]",children:aI.length>0?"No files match the current search.":"No files found."}),!E&&!G&&aJ.length>0&&(0,b.jsx)("div",{className:"py-1",children:aJ.map(a=>{let c=a===u,d=a.split("/").pop()??a;return(0,b.jsxs)("button",{type:"button",onClick:()=>v(a),className:`flex h-[26px] w-full items-center gap-1.5 px-2 text-left text-[12px] ${c?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-normal)] hover:bg-[var(--vk-bg-hover)]"}`,children:[(0,b.jsx)(ae,{className:"h-3.5 w-3.5 shrink-0 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"truncate",children:d})]},a)})})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-auto bg-[var(--vk-bg-main)] p-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--vk-border)] pb-2",children:[(0,b.jsx)("span",{className:"truncate font-mono text-[11px] text-[var(--vk-text-normal)]",children:u??"Select a file"}),R>0&&(0,b.jsxs)("span",{className:"ml-2 shrink-0 font-mono text-[10px] text-[var(--vk-text-muted)]",children:[R.toLocaleString()," bytes"]})]}),I&&(0,b.jsx)("p",{className:"pt-2 text-[11px] text-[var(--status-attention)]",children:"File list truncated to the first 4000 files."}),T&&(0,b.jsx)("p",{className:"pt-2 text-[12px] text-[var(--vk-text-muted)]",children:"Loading file content..."}),V&&(0,b.jsx)("p",{className:"pt-2 text-[12px] text-[var(--status-error)]",children:V}),!T&&!V&&u&&N&&(0,b.jsx)("p",{className:"pt-2 text-[12px] text-[var(--vk-text-muted)]",children:"Binary file preview is not available."}),!T&&!V&&u&&!N&&K.length>0&&(0,b.jsx)("pre",{className:"pt-2 whitespace-pre-wrap break-words font-mono text-[11px] text-[var(--vk-text-normal)]",children:K}),!T&&!V&&u&&!N&&0===K.length&&(0,b.jsx)("p",{className:"pt-2 text-[12px] text-[var(--vk-text-muted)]",children:"File is empty."}),P&&(0,b.jsx)("p",{className:"pt-2 text-[11px] text-[var(--status-attention)]",children:"Preview truncated to 1 MB."})]})]})]})]})]})]})}let aA=(0,e.default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),aB=(0,e.default)("boxes",[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]]);var aC=a.i(77156);let aD=(0,e.default)("file-braces-corner",[["path",{d:"M14 22h4a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v6",key:"14cnrg"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M5 14a1 1 0 0 0-1 1v2a1 1 0 0 1-1 1 1 1 0 0 1 1 1v2a1 1 0 0 0 1 1",key:"sr0ebq"}],["path",{d:"M9 22a1 1 0 0 0 1-1v-2a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-2a1 1 0 0 0-1-1",key:"w793db"}]]);var aE=a.i(96221);let aF=(0,e.default)("mouse-pointer-click",[["path",{d:"M14 4.1 12 6",key:"ita8i4"}],["path",{d:"m5.1 8-2.9-.8",key:"1go3kf"}],["path",{d:"m6 12-1.9 2",key:"mnht97"}],["path",{d:"M7.2 2.2 8 5.1",key:"1cfko1"}],["path",{d:"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z",key:"s0h3yz"}]]),aG=(0,e.default)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]),aH=(0,e.default)("waypoints",[["path",{d:"m10.586 5.414-5.172 5.172",key:"4mc350"}],["path",{d:"m18.586 13.414-5.172 5.172",key:"8c96vv"}],["path",{d:"M6 12h12",key:"8npq4p"}],["circle",{cx:"12",cy:"20",r:"2",key:"144qzu"}],["circle",{cx:"12",cy:"4",r:"2",key:"muu5ef"}],["circle",{cx:"20",cy:"12",r:"2",key:"1xzzfp"}],["circle",{cx:"4",cy:"12",r:"2",key:"1hvhnz"}]]);var aI=a.i(71541),aJ=a.i(70121),aK=a.i(46872),aL=a.i(72752),aM="ScrollArea",[aN,aO]=(0,k.createContextScope)(aM),[aP,aQ]=aN(aM),aR=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,type:f="hover",dir:g,scrollHideDelay:h=600,...i}=a,[j,k]=c.useState(null),[l,m]=c.useState(null),[p,q]=c.useState(null),[r,s]=c.useState(null),[t,u]=c.useState(null),[v,w]=c.useState(0),[x,y]=c.useState(0),[z,A]=c.useState(!1),[B,C]=c.useState(!1),D=(0,aJ.useComposedRefs)(d,a=>k(a)),E=(0,o.useDirection)(g);return(0,b.jsx)(aP,{scope:e,type:f,dir:E,scrollHideDelay:h,scrollArea:j,viewport:l,onViewportChange:m,content:p,onContentChange:q,scrollbarX:r,onScrollbarXChange:s,scrollbarXEnabled:z,onScrollbarXEnabledChange:A,scrollbarY:t,onScrollbarYChange:u,scrollbarYEnabled:B,onScrollbarYEnabledChange:C,onCornerWidthChange:w,onCornerHeightChange:y,children:(0,b.jsx)(n.Primitive.div,{dir:E,...i,ref:D,style:{position:"relative","--radix-scroll-area-corner-width":v+"px","--radix-scroll-area-corner-height":x+"px",...a.style}})})});aR.displayName=aM;var aS="ScrollAreaViewport",aT=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,children:f,nonce:g,...h}=a,i=aQ(aS,e),j=c.useRef(null),k=(0,aJ.useComposedRefs)(d,j,i.onViewportChange);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:g}),(0,b.jsx)(n.Primitive.div,{"data-radix-scroll-area-viewport":"",...h,ref:k,style:{overflowX:i.scrollbarXEnabled?"scroll":"hidden",overflowY:i.scrollbarYEnabled?"scroll":"hidden",...a.style},children:(0,b.jsx)("div",{ref:i.onContentChange,style:{minWidth:"100%",display:"table"},children:f})})]})});aT.displayName=aS;var aU="ScrollAreaScrollbar",aV=c.forwardRef((a,d)=>{let{forceMount:e,...f}=a,g=aQ(aU,a.__scopeScrollArea),{onScrollbarXEnabledChange:h,onScrollbarYEnabledChange:i}=g,j="horizontal"===a.orientation;return c.useEffect(()=>(j?h(!0):i(!0),()=>{j?h(!1):i(!1)}),[j,h,i]),"hover"===g.type?(0,b.jsx)(aW,{...f,ref:d,forceMount:e}):"scroll"===g.type?(0,b.jsx)(aX,{...f,ref:d,forceMount:e}):"auto"===g.type?(0,b.jsx)(aY,{...f,ref:d,forceMount:e}):"always"===g.type?(0,b.jsx)(aZ,{...f,ref:d}):null});aV.displayName=aU;var aW=c.forwardRef((a,d)=>{let{forceMount:e,...f}=a,g=aQ(aU,a.__scopeScrollArea),[h,i]=c.useState(!1);return c.useEffect(()=>{let a=g.scrollArea,b=0;if(a){let c=()=>{window.clearTimeout(b),i(!0)},d=()=>{b=window.setTimeout(()=>i(!1),g.scrollHideDelay)};return a.addEventListener("pointerenter",c),a.addEventListener("pointerleave",d),()=>{window.clearTimeout(b),a.removeEventListener("pointerenter",c),a.removeEventListener("pointerleave",d)}}},[g.scrollArea,g.scrollHideDelay]),(0,b.jsx)(m.Presence,{present:e||h,children:(0,b.jsx)(aY,{"data-state":h?"visible":"hidden",...f,ref:d})})}),aX=c.forwardRef((a,d)=>{var e;let{forceMount:f,...g}=a,h=aQ(aU,a.__scopeScrollArea),i="horizontal"===a.orientation,k=bf(()=>n("SCROLL_END"),100),[l,n]=(e={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},c.useReducer((a,b)=>e[a][b]??a,"hidden"));return c.useEffect(()=>{if("idle"===l){let a=window.setTimeout(()=>n("HIDE"),h.scrollHideDelay);return()=>window.clearTimeout(a)}},[l,h.scrollHideDelay,n]),c.useEffect(()=>{let a=h.viewport,b=i?"scrollLeft":"scrollTop";if(a){let c=a[b],d=()=>{let d=a[b];c!==d&&(n("SCROLL"),k()),c=d};return a.addEventListener("scroll",d),()=>a.removeEventListener("scroll",d)}},[h.viewport,i,n,k]),(0,b.jsx)(m.Presence,{present:f||"hidden"!==l,children:(0,b.jsx)(aZ,{"data-state":"hidden"===l?"hidden":"visible",...g,ref:d,onPointerEnter:(0,j.composeEventHandlers)(a.onPointerEnter,()=>n("POINTER_ENTER")),onPointerLeave:(0,j.composeEventHandlers)(a.onPointerLeave,()=>n("POINTER_LEAVE"))})})}),aY=c.forwardRef((a,d)=>{let e=aQ(aU,a.__scopeScrollArea),{forceMount:f,...g}=a,[h,i]=c.useState(!1),j="horizontal"===a.orientation,k=bf(()=>{if(e.viewport){let a=e.viewport.offsetWidth<e.viewport.scrollWidth,b=e.viewport.offsetHeight<e.viewport.scrollHeight;i(j?a:b)}},10);return bg(e.viewport,k),bg(e.content,k),(0,b.jsx)(m.Presence,{present:f||h,children:(0,b.jsx)(aZ,{"data-state":h?"visible":"hidden",...g,ref:d})})}),aZ=c.forwardRef((a,d)=>{let{orientation:e="vertical",...f}=a,g=aQ(aU,a.__scopeScrollArea),h=c.useRef(null),i=c.useRef(0),[j,k]=c.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=ba(j.viewport,j.content),m={...f,sizes:j,onSizesChange:k,hasThumb:!!(l>0&&l<1),onThumbChange:a=>h.current=a,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:a=>i.current=a};function n(a,b){return function(a,b,c,d="ltr"){let e=bb(c),f=b||e/2,g=c.scrollbar.paddingStart+f,h=c.scrollbar.size-c.scrollbar.paddingEnd-(e-f),i=c.content-c.viewport;return bd([g,h],"ltr"===d?[0,i]:[-1*i,0])(a)}(a,i.current,j,b)}return"horizontal"===e?(0,b.jsx)(a$,{...m,ref:d,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=bc(g.viewport.scrollLeft,j,g.dir);h.current.style.transform=`translate3d(${a}px, 0, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollLeft=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollLeft=n(a,g.dir))}}):"vertical"===e?(0,b.jsx)(a_,{...m,ref:d,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=bc(g.viewport.scrollTop,j);h.current.style.transform=`translate3d(0, ${a}px, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollTop=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollTop=n(a))}}):null}),a$=c.forwardRef((a,d)=>{let{sizes:e,onSizesChange:f,...g}=a,h=aQ(aU,a.__scopeScrollArea),[i,j]=c.useState(),k=c.useRef(null),l=(0,aJ.useComposedRefs)(d,k,h.onScrollbarXChange);return c.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,b.jsx)(a2,{"data-orientation":"horizontal",...g,ref:l,sizes:e,style:{bottom:0,left:"rtl"===h.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===h.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":bb(e)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.x),onDragScroll:b=>a.onDragScroll(b.x),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollLeft+b.deltaX;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollWidth,viewport:h.viewport.offsetWidth,scrollbar:{size:k.current.clientWidth,paddingStart:a9(i.paddingLeft),paddingEnd:a9(i.paddingRight)}})}})}),a_=c.forwardRef((a,d)=>{let{sizes:e,onSizesChange:f,...g}=a,h=aQ(aU,a.__scopeScrollArea),[i,j]=c.useState(),k=c.useRef(null),l=(0,aJ.useComposedRefs)(d,k,h.onScrollbarYChange);return c.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,b.jsx)(a2,{"data-orientation":"vertical",...g,ref:l,sizes:e,style:{top:0,right:"ltr"===h.dir?0:void 0,left:"rtl"===h.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":bb(e)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.y),onDragScroll:b=>a.onDragScroll(b.y),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollTop+b.deltaY;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollHeight,viewport:h.viewport.offsetHeight,scrollbar:{size:k.current.clientHeight,paddingStart:a9(i.paddingTop),paddingEnd:a9(i.paddingBottom)}})}})}),[a0,a1]=aN(aU),a2=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,sizes:f,hasThumb:g,onThumbChange:h,onThumbPointerUp:i,onThumbPointerDown:k,onThumbPositionChange:l,onDragScroll:m,onWheelScroll:o,onResize:p,...q}=a,r=aQ(aU,e),[s,t]=c.useState(null),u=(0,aJ.useComposedRefs)(d,a=>t(a)),v=c.useRef(null),w=c.useRef(""),x=r.viewport,y=f.content-f.viewport,z=(0,aK.useCallbackRef)(o),A=(0,aK.useCallbackRef)(l),B=bf(p,10);function C(a){v.current&&m({x:a.clientX-v.current.left,y:a.clientY-v.current.top})}return c.useEffect(()=>{let a=a=>{let b=a.target;s?.contains(b)&&z(a,y)};return document.addEventListener("wheel",a,{passive:!1}),()=>document.removeEventListener("wheel",a,{passive:!1})},[x,s,y,z]),c.useEffect(A,[f,A]),bg(s,B),bg(r.content,B),(0,b.jsx)(a0,{scope:e,scrollbar:s,hasThumb:g,onThumbChange:(0,aK.useCallbackRef)(h),onThumbPointerUp:(0,aK.useCallbackRef)(i),onThumbPositionChange:A,onThumbPointerDown:(0,aK.useCallbackRef)(k),children:(0,b.jsx)(n.Primitive.div,{...q,ref:u,style:{position:"absolute",...q.style},onPointerDown:(0,j.composeEventHandlers)(a.onPointerDown,a=>{0===a.button&&(a.target.setPointerCapture(a.pointerId),v.current=s.getBoundingClientRect(),w.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",r.viewport&&(r.viewport.style.scrollBehavior="auto"),C(a))}),onPointerMove:(0,j.composeEventHandlers)(a.onPointerMove,C),onPointerUp:(0,j.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),document.body.style.webkitUserSelect=w.current,r.viewport&&(r.viewport.style.scrollBehavior=""),v.current=null})})})}),a3="ScrollAreaThumb",a4=c.forwardRef((a,c)=>{let{forceMount:d,...e}=a,f=a1(a3,a.__scopeScrollArea);return(0,b.jsx)(m.Presence,{present:d||f.hasThumb,children:(0,b.jsx)(a5,{ref:c,...e})})}),a5=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,style:f,...g}=a,h=aQ(a3,e),i=a1(a3,e),{onThumbPositionChange:k}=i,l=(0,aJ.useComposedRefs)(d,a=>i.onThumbChange(a)),m=c.useRef(void 0),o=bf(()=>{m.current&&(m.current(),m.current=void 0)},100);return c.useEffect(()=>{let a=h.viewport;if(a){let b=()=>{o(),m.current||(m.current=be(a,k),k())};return k(),a.addEventListener("scroll",b),()=>a.removeEventListener("scroll",b)}},[h.viewport,o,k]),(0,b.jsx)(n.Primitive.div,{"data-state":i.hasThumb?"visible":"hidden",...g,ref:l,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...f},onPointerDownCapture:(0,j.composeEventHandlers)(a.onPointerDownCapture,a=>{let b=a.target.getBoundingClientRect(),c=a.clientX-b.left,d=a.clientY-b.top;i.onThumbPointerDown({x:c,y:d})}),onPointerUp:(0,j.composeEventHandlers)(a.onPointerUp,i.onThumbPointerUp)})});a4.displayName=a3;var a6="ScrollAreaCorner",a7=c.forwardRef((a,c)=>{let d=aQ(a6,a.__scopeScrollArea),e=!!(d.scrollbarX&&d.scrollbarY);return"scroll"!==d.type&&e?(0,b.jsx)(a8,{...a,ref:c}):null});a7.displayName=a6;var a8=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,...f}=a,g=aQ(a6,e),[h,i]=c.useState(0),[j,k]=c.useState(0),l=!!(h&&j);return bg(g.scrollbarX,()=>{let a=g.scrollbarX?.offsetHeight||0;g.onCornerHeightChange(a),k(a)}),bg(g.scrollbarY,()=>{let a=g.scrollbarY?.offsetWidth||0;g.onCornerWidthChange(a),i(a)}),l?(0,b.jsx)(n.Primitive.div,{...f,ref:d,style:{width:h,height:j,position:"absolute",right:"ltr"===g.dir?0:void 0,left:"rtl"===g.dir?0:void 0,bottom:0,...a.style}}):null});function a9(a){return a?parseInt(a,10):0}function ba(a,b){let c=a/b;return isNaN(c)?0:c}function bb(a){let b=ba(a.viewport,a.content),c=a.scrollbar.paddingStart+a.scrollbar.paddingEnd;return Math.max((a.scrollbar.size-c)*b,18)}function bc(a,b,c="ltr"){let d=bb(b),e=b.scrollbar.paddingStart+b.scrollbar.paddingEnd,f=b.scrollbar.size-e,g=b.content-b.viewport,h=function(a,[b,c]){return Math.min(c,Math.max(b,a))}(a,"ltr"===c?[0,g]:[-1*g,0]);return bd([0,g],[0,f-d])(h)}function bd(a,b){return c=>{if(a[0]===a[1]||b[0]===b[1])return b[0];let d=(b[1]-b[0])/(a[1]-a[0]);return b[0]+d*(c-a[0])}}var be=(a,b=()=>{})=>{let c={left:a.scrollLeft,top:a.scrollTop},d=0;return!function e(){let f={left:a.scrollLeft,top:a.scrollTop},g=c.left!==f.left,h=c.top!==f.top;(g||h)&&b(),c=f,d=window.requestAnimationFrame(e)}(),()=>window.cancelAnimationFrame(d)};function bf(a,b){let d=(0,aK.useCallbackRef)(a),e=c.useRef(0);return c.useEffect(()=>()=>window.clearTimeout(e.current),[]),c.useCallback(()=>{window.clearTimeout(e.current),e.current=window.setTimeout(d,b)},[d,b])}function bg(a,b){let c=(0,aK.useCallbackRef)(b);(0,aL.useLayoutEffect)(()=>{let b=0;if(a){let d=new ResizeObserver(()=>{cancelAnimationFrame(b),b=window.requestAnimationFrame(c)});return d.observe(a),()=>{window.cancelAnimationFrame(b),d.unobserve(a)}}},[a,c])}let bh=(0,c.forwardRef)(({className:a,children:c,...d},e)=>(0,b.jsxs)(aR,{ref:e,className:(0,G.cn)("relative overflow-hidden",a),...d,children:[(0,b.jsx)(aT,{className:"h-full w-full rounded-[inherit]",children:c}),(0,b.jsx)(bi,{}),(0,b.jsx)(a7,{})]}));bh.displayName="ScrollArea";let bi=(0,c.forwardRef)(({className:a,orientation:c="vertical",...d},e)=>(0,b.jsx)(aV,{ref:e,orientation:c,className:(0,G.cn)("flex touch-none select-none","vertical"===c&&"h-full w-2.5 border-l border-l-transparent p-px","horizontal"===c&&"h-2.5 flex-col border-t border-t-transparent p-px",a),...d,children:(0,b.jsx)(a4,{className:"relative flex-1 rounded-full bg-[color:color-mix(in_srgb,var(--border-strong)_75%,transparent)] hover:bg-[var(--border-strong)]"})}));bi.displayName="ScrollBar";let bj=new Map([["Backspace","Backspace"],["Delete","Delete"],["Enter","Enter"],["Tab","Tab"],["Escape","Escape"],["ArrowUp","ArrowUp"],["ArrowDown","ArrowDown"],["ArrowLeft","ArrowLeft"],["ArrowRight","ArrowRight"],["Home","Home"],["End","End"],["PageUp","PageUp"],["PageDown","PageDown"],[" ","Space"]]);function bk(a){let b=Date.parse(a);return Number.isNaN(b)?a:new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit",second:"2-digit"}).format(new Date(b))}function bl(a,b=120){return a.length<=b?a:`${a.slice(0,b-1)}…`}function bm(a,b=180){let c=bl((a??"").replace(/\s+/g," ").trim(),b);return c?`"${c.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:null}function bn(a){return a.map(a=>a?.trim()).filter(a=>!!a).join("; ")}function bo(a,b){return[`[${a}]`,...b.map(a=>a?.trim()).filter(a=>!!a)].join("\n")}function bp(a,b){return{inlineText:bn(["[Browser selection]",`selector=${bm(a.selector,220)}`,`tag=${a.tag}`,a.role?`role=${a.role}`:null,a.name?`name=${bm(a.name,140)}`:null,a.text?`text=${bm(a.text,180)}`:null,a.frameName?`frame=${bm(a.frameName,120)}`:null,b?`page=${bm(b,220)}`:null]),draftText:bo("Browser selection",[b?`Page: ${b}`:null,`Frame: ${a.frameName} (${a.frameUrl})`,`Selector: ${a.selector}`,`Tag: ${a.tag}`,a.role?`Role: ${a.role}`:null,a.name?`Name: ${a.name}`:null,a.text?`Text: ${a.text}`:null,a.htmlPreview?`HTML preview: ${a.htmlPreview}`:null]),successMessage:"Queued the selected element for terminal input."}}function bq(a,b,c,d){let e=b.slice("console"===a?-8:-10),f=e.map(b=>{let c=[b.level,bm(b.message,120)];return"network"===a&&(c.unshift(b.method??"GET"),c.push("number"==typeof b.status?String(b.status):null),c.push(b.url?bm(b.url,120):null)),c.filter(Boolean).join(" ")});return{inlineText:bn(["console"===a?"[Browser console]":"[Browser network]",c?`page=${bm(c,220)}`:null,d?`selected=${bm(d.selector,180)}`:null,`entries=${bm(f.join(" | "),520)}`]),draftText:bo("console"===a?"Browser console logs":"Browser network logs",[c?`Page: ${c}`:null,d?`Selected element: ${d.selector}`:null,...e.map(b=>"console"===a?`- ${bk(b.timestamp)} ${b.level}: ${b.message}`:`- ${bk(b.timestamp)} ${b.method??"GET"} ${b.status??"-"} ${b.url??b.message}`)]),successMessage:"console"===a?"Queued recent console logs for terminal input.":"Queued recent network logs for terminal input."}}function br({sessionId:a,active:d,onQueueTerminalInsert:e,onConnectionChange:f}){let[h,j]=(0,c.useState)(null),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(!1),[q,r]=(0,c.useState)(!0),[s,t]=(0,c.useState)(!0),[u,v]=(0,c.useState)(null),[w,x]=(0,c.useState)(null),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)(null),[C,D]=(0,c.useState)("navigate"),[E,F]=(0,c.useState)(null),[H,I]=(0,c.useState)(""),[J,M]=(0,c.useState)({naturalWidth:0,naturalHeight:0,renderedWidth:0,renderedHeight:0}),N=(0,c.useRef)(null),O=(0,c.useRef)(Promise.resolve()),Q=(0,c.useRef)(null),R=(0,c.useRef)(null),[S,T]=(0,c.useState)(()=>"u"<typeof document||!document.hidden),U=d&&S;(0,c.useEffect)(()=>{let a=()=>{T(!document.hidden)};return document.addEventListener("visibilitychange",a),()=>{document.removeEventListener("visibilitychange",a)}},[]);let V=(0,c.useCallback)(async()=>{let b=await fetch(`/api/sessions/${encodeURIComponent(a)}/preview`,{cache:"no-store"}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c&&"error"in c?c.error??"Failed to load preview state":`Failed to load preview state: ${b.status}`);j(c),v(null),I(a=>a.trim().length>0&&a!==h?.currentUrl?a:c.currentUrl??c.candidateUrls[0]??a)},[a,h?.currentUrl]),W=(0,c.useCallback)(async b=>{p(!0),v(null);try{let c=await fetch(`/api/sessions/${encodeURIComponent(a)}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>null);if(!c.ok)throw d&&"object"==typeof d&&"status"in d&&d.status&&j(d.status),Error(d&&"error"in d?d.error??"Preview command failed":`Preview command failed: ${c.status}`);return j(d),d}finally{p(!1)}},[a]),X=(0,c.useCallback)((a,b)=>{O.current=O.current.catch(()=>void 0).then(async()=>{try{await W(a)}catch(a){v(a instanceof Error?a.message:b)}})},[W]),Y=(0,c.useCallback)(async b=>{if(!h?.connected)return void l([]);n(!0);try{let c=new URLSearchParams;b&&c.set("frameId",b),s&&c.set("interactiveOnly","1");let d=await fetch(`/api/sessions/${encodeURIComponent(a)}/preview/dom?${c.toString()}`,{cache:"no-store"}),e=await d.json().catch(()=>null);if(!d.ok)throw Error(e&&"error"in e?e.error??"Failed to inspect DOM":`Failed to inspect DOM: ${d.status}`);l(e.nodes)}catch(a){v(a instanceof Error?a.message:"Failed to inspect DOM"),l([])}finally{n(!1)}},[s,a,h?.connected]);(0,c.useEffect)(()=>{if(!U)return;let a=!0;(async()=>{try{await V()}catch(b){a&&v(b instanceof Error?b.message:"Failed to load preview")}finally{a&&r(!1)}})();let b=window.setInterval(()=>{V().catch(b=>{a&&v(b instanceof Error?b.message:"Failed to refresh preview")})},4e3);return()=>{a=!1,window.clearInterval(b)}},[V,U]),(0,c.useEffect)(()=>{U&&h?.connected?Y(h.activeFrameId):l([])},[s,Y,U,h?.activeFrameId,h?.connected,h?.screenshotKey]),(0,c.useEffect)(()=>{if(!U)return;if(h?.connected){N.current=null;return}F(null);let a=h?.candidateUrls[0];if(!a)return;let b=N.current?.attemptedAt??NaN,c=N.current?.candidate??null,d=Date.now();c===a&&Number.isFinite(b)&&d-b<5e3||(N.current={candidate:a,attemptedAt:d},W({command:"connect",url:a}).catch(a=>{v(a instanceof Error?a.message:"Failed to connect preview")}))},[W,U,h?.candidateUrls,h?.connected]),(0,c.useEffect)(()=>{f?.(!!(U&&h?.connected&&h?.screenshotKey))},[f,U,h?.connected,h?.screenshotKey]);let Z=(0,c.useMemo)(()=>h?.connected?`/api/sessions/${encodeURIComponent(a)}/preview/screenshot?ts=${encodeURIComponent(h.screenshotKey)}`:null,[a,h?.connected,h?.screenshotKey]),$=(0,c.useMemo)(()=>h?.frames.find(a=>a.id===h.activeFrameId)??null,[h?.activeFrameId,h?.frames]),_=(0,c.useMemo)(()=>h?.frames.find(a=>a.isMain)??null,[h?.frames]),aa=null!==A,ab=!!$?.isMain,ac=(0,c.useMemo)(()=>{let a=h?.selectedElement?.bounds;if(!h?.selectedElement||!a||!_||h.selectedElement.frameId!==_.id||!J.naturalWidth||!J.naturalHeight||!J.renderedWidth||!J.renderedHeight)return null;let b=J.renderedWidth/J.naturalWidth,c=J.renderedHeight/J.naturalHeight;return{left:`${a.x*b}px`,top:`${a.y*c}px`,width:`${Math.max(a.width*b,2)}px`,height:`${Math.max(a.height*c,2)}px`}},[J,_,h?.selectedElement]),ad=(0,c.useCallback)(async()=>{let a=H.trim();if(a)try{await W({command:"connect",url:a})}catch(a){v(a instanceof Error?a.message:"Failed to connect preview")}},[W,H]),ae=(0,c.useCallback)((a,b,c=!1)=>{F({anchorX:a,anchorY:b,pending:c}),x(null),z(null)},[]),af=(0,c.useCallback)(a=>{D(a),F(null),x(null),z(null)},[]),ag=(0,c.useMemo)(()=>{if(!E)return null;let a=J.renderedWidth||340,b=J.renderedHeight||280,c=Math.max(220,b-24);if(a<=520)return{left:"12px",top:`${Math.max(12,b-Math.min(280,c)-12)}px`,width:`${Math.max(a-24,220)}px`,maxHeight:`${c}px`};let d=Math.min(340,Math.max(a-24,240)),e=Math.max(12,a-d-12),f=Math.max(12,b-280-12),g=E.anchorX+18,h=E.anchorY+18,i=g>e?Math.max(12,E.anchorX-d-18):g,j=h>f?Math.max(12,E.anchorY-280-18):h;return{left:`${Math.min(Math.max(i,12),e)}px`,top:`${Math.min(Math.max(j,12),f)}px`,width:`${d}px`,maxHeight:`${c}px`}},[J.renderedHeight,J.renderedWidth,E]);(0,c.useEffect)(()=>{if(!E)return;let a=a=>{"Escape"===a.key&&F(null)};return window.addEventListener("keydown",a),()=>{window.removeEventListener("keydown",a)}},[E]);let ah=(0,c.useCallback)(a=>{if(!Q.current)return null;let b=Q.current.getBoundingClientRect();if(!b.width||!b.height||!Q.current.naturalWidth||!Q.current.naturalHeight)return null;let c=a.clientX-b.left,d=a.clientY-b.top;return{anchorX:c,anchorY:d,x:c/b.width*Q.current.naturalWidth,y:d/b.height*Q.current.naturalHeight}},[]),ai=(0,c.useCallback)(a=>{e(a),x(null),z(a.successMessage)},[e]),aj=(0,c.useCallback)(async(a,b,c,d)=>{ae(c,d,!0);try{let e=await W({command:"selectAtPoint",x:a,y:b});return ae(c,d,!1),e}catch(a){throw F(null),a}},[ae,W]),ak=(0,c.useCallback)(async(a,b)=>{let c=Math.max(J.renderedWidth-44,12);ae(c,12,!0);try{let d=await W({command:"selectBySelector",selector:a,frameId:b});return ae(c,12,!1),d}catch(a){throw F(null),a}},[J.renderedWidth,ae,W]),am=(0,c.useCallback)(async a=>{if(o)return;let b=ah(a);if(b){if(F(null),x(null),z(null),"navigate"===C){R.current?.focus({preventScroll:!0});try{await W({command:"clickAtPoint",x:b.x,y:b.y})}catch(a){v(a instanceof Error?a.message:"Failed to interact with preview")}return}if(ab)try{await aj(b.x,b.y,b.anchorX,b.anchorY)}catch(a){v(a instanceof Error?a.message:"Failed to select element")}}},[o,ab,C,ah,W,aj]),an=(0,c.useCallback)(async a=>{if(o||"inspect"!==C||!ab)return;let b=ah(a);if(b){x(null),z(null);try{let a=await aj(b.x,b.y,b.anchorX,b.anchorY);if(!a.selectedElement)throw Error("No element found at the selected point");ai(bp(a.selectedElement,a.currentUrl))}catch(a){v(a instanceof Error?a.message:"Failed to queue selected element")}}},[o,ab,C,ai,ah,aj]),ap=(0,c.useCallback)(a=>{if("navigate"!==C||!h?.connected||a.metaKey||a.ctrlKey||a.altKey)return;let b=bj.get(a.key);if(b){a.preventDefault(),X({command:"pressKey",key:b},"Failed to send key to preview");return}1===a.key.length&&(a.preventDefault(),X({command:"typeText",text:a.key},"Failed to type into preview"))},[C,X,h?.connected]),aq=(0,c.useCallback)(a=>{if("navigate"!==C||!h?.connected)return;let b=a.clipboardData.getData("text");b&&(a.preventDefault(),X({command:"typeText",text:b},"Failed to paste into preview"))},[C,X,h?.connected]),ar=(0,c.useCallback)(a=>{if(!h)return void x("Preview state is not loaded yet.");let b=h.consoleLogs.slice(-80),c=h.networkLogs.slice(-80);if("selection"===a&&!h.selectedElement)return void x("Select an element before queueing preview context for terminal input.");if("console"===a&&!b.length)return void x("There are no console logs to send yet.");if("network"===a&&!c.length)return void x("There are no network logs to send yet.");B(a),x(null),z(null);try{let d="selection"===a&&h.selectedElement?bp(h.selectedElement,h.currentUrl):"console"===a?bq("console",b,h.currentUrl,h.selectedElement):bq("network",c,h.currentUrl,h.selectedElement);ai(d),"selection"===a&&F(null)}catch(a){x(a instanceof Error?a.message:"Failed to queue preview context")}finally{B(null)}},[ai,h]),as=(0,c.useCallback)(async()=>{let a=h?.selectedElement?.selector;if(a)try{await navigator.clipboard.writeText(a),z("Selector copied to clipboard."),x(null)}catch{x("Clipboard access is unavailable.")}},[h?.selectedElement?.selector]);return(0,b.jsxs)("div",{className:"flex h-full min-h-0 flex-col gap-2 overflow-auto",children:[(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{className:"flex flex-col items-start gap-2 lg:flex-row lg:items-center lg:justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(g,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"text-[13px] font-medium text-[var(--vk-text-normal)]",children:"Dev preview browser"}),h?.connected?(0,b.jsx)(L.Badge,{variant:"success",children:"connected"}):(0,b.jsx)(L.Badge,{variant:"outline",children:"idle"}),$?(0,b.jsx)(L.Badge,{variant:"outline",children:$.isMain?"main frame":"nested frame"}):null]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)(aI.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void V().catch(a=>{v(a instanceof Error?a.message:"Failed to refresh preview")}),disabled:q||o,children:[(0,b.jsx)(al.RefreshCw,{className:(0,G.cn)("h-3.5 w-3.5",o&&"animate-spin")}),"Refresh"]}),(0,b.jsxs)(aI.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void W({command:"reload"}).catch(a=>{v(a instanceof Error?a.message:"Failed to reload preview")}),disabled:!h?.connected||o,children:[(0,b.jsx)(aH,{className:"h-3.5 w-3.5"}),"Reload page"]})]})]}),(0,b.jsxs)(K.CardContent,{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-2 lg:flex-row",children:[(0,b.jsx)("input",{value:H,onChange:a=>I(a.target.value),placeholder:h?.candidateUrls[0]??"http://127.0.0.1:3000",className:"h-9 min-w-0 flex-1 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-3 text-[13px] text-[var(--vk-text-normal)] outline-none focus:border-[var(--vk-orange)]"}),(0,b.jsxs)(aI.Button,{type:"button",variant:"primary",onClick:()=>void ad(),disabled:o||!H.trim(),children:[o?(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(aF,{className:"h-4 w-4"}),"Connect"]})]}),h?.candidateUrls.length?(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:h.candidateUrls.map(a=>(0,b.jsxs)("button",{type:"button",className:"inline-flex max-w-full items-center gap-1 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-2 py-1 text-left text-[11px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)] hover:text-[var(--vk-text-normal)]",onClick:()=>{I(a),W({command:"connect",url:a}).catch(a=>{v(a instanceof Error?a.message:"Failed to connect preview")})},children:[(0,b.jsx)(g,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a})]},a))}):null,u||h?.lastError?(0,b.jsxs)("div",{className:"flex items-start gap-2 rounded-[4px] border border-[color:color-mix(in_srgb,var(--vk-red)_45%,transparent)] bg-[color:color-mix(in_srgb,var(--vk-red)_12%,transparent)] px-3 py-2 text-[12px] text-[var(--vk-red)]",children:[(0,b.jsx)(aA,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,b.jsx)("span",{children:u??h?.lastError})]}):null]})]}),(0,b.jsxs)(K.Card,{className:"min-h-0 shrink-0 overflow-hidden",children:[(0,b.jsxs)(K.CardHeader,{className:"flex flex-col items-start gap-2 lg:flex-row lg:items-center lg:justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(aC.Eye,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"text-[13px] font-medium text-[var(--vk-text-normal)]",children:"Preview"})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1 rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] p-1",children:[(0,b.jsxs)(aI.Button,{type:"button",size:"sm",variant:"navigate"===C?"primary":"ghost",onClick:()=>af("navigate"),children:[(0,b.jsx)(aF,{className:"h-3.5 w-3.5"}),"Navigate"]}),(0,b.jsxs)(aI.Button,{type:"button",size:"sm",variant:"inspect"===C?"primary":"ghost",onClick:()=>af("inspect"),children:[(0,b.jsx)(aC.Eye,{className:"h-3.5 w-3.5"}),"Inspect"]})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-[11px] text-[var(--vk-text-muted)]",children:[(0,b.jsx)(L.Badge,{variant:"outline",children:h?.title?bl(h.title,40):"Untitled page"}),(0,b.jsx)(L.Badge,{variant:"outline",children:"navigate"===C?"navigate mode: clicks interact with the page":ab?"inspect mode: click once to select, double-click to queue for terminal input":"inspect mode: use DOM list for this frame"})]})]})]}),(0,b.jsx)(K.CardContent,{className:"min-h-0",children:(0,b.jsx)("div",{className:"flex h-[56vh] min-h-[280px] max-h-[620px] items-center justify-center overflow-auto rounded-[6px] border border-[var(--vk-border)] bg-[#111] p-2 sm:h-[72vh] sm:min-h-[360px] sm:max-h-[760px] sm:p-3",children:q?(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[13px] text-[var(--vk-text-muted)]",children:[(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin"}),"Loading preview…"]}):Z?(0,b.jsxs)("div",{ref:R,tabIndex:h?.connected?0:-1,onKeyDown:ap,onPaste:aq,className:"relative flex max-h-full max-w-full items-start justify-center overflow-auto rounded-[6px] outline-none focus-visible:ring-2 focus-visible:ring-[var(--vk-orange)] focus-visible:ring-offset-2 focus-visible:ring-offset-[#111]",children:[(0,b.jsx)("img",{ref:Q,src:Z,alt:"Session preview",className:(0,G.cn)("max-h-full max-w-full rounded-[4px] object-contain shadow-[0_18px_36px_rgba(0,0,0,0.28)]","navigate"===C?"cursor-pointer":ab?"cursor-crosshair":"cursor-default"),onClick:a=>void am(a),onDoubleClick:a=>void an(a),onLoad:a=>{let b=a.currentTarget;M({naturalWidth:b.naturalWidth,naturalHeight:b.naturalHeight,renderedWidth:b.clientWidth,renderedHeight:b.clientHeight})}}),"inspect"===C&&ac?(0,b.jsx)("div",{className:"pointer-events-none absolute border-2 border-[var(--vk-orange)] bg-[color:color-mix(in_srgb,var(--vk-orange)_18%,transparent)] shadow-[0_0_0_1px_rgba(0,0,0,0.5)]",style:ac}):null,"inspect"===C&&E&&ag?(0,b.jsxs)("div",{className:"pointer-events-auto absolute z-20 flex flex-col overflow-hidden rounded-[10px] border border-[var(--vk-border)] bg-[color:color-mix(in_srgb,var(--vk-bg-panel)_94%,black_6%)] shadow-[0_20px_44px_rgba(0,0,0,0.42)] backdrop-blur",style:ag,children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-3 border-b border-[var(--vk-border)] px-3 py-3",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("div",{className:"text-[10px] uppercase tracking-[0.16em] text-[var(--vk-text-muted)]",children:"Terminal input"}),(0,b.jsx)("div",{className:"mt-1 text-[13px] font-medium text-[var(--vk-text-normal)]",children:E.pending?"Selecting element…":"Queue selection for the terminal"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsx)(aI.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>void as(),disabled:E.pending||!h?.selectedElement,children:(0,b.jsx)(P.Copy,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(aI.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>F(null),children:(0,b.jsx)(ao.X,{className:"h-3.5 w-3.5"})})]})]}),(0,b.jsx)("div",{className:"flex-1 space-y-3 overflow-y-auto px-3 py-3",children:E.pending?(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-[6px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-3 py-3 text-[12px] text-[var(--vk-text-muted)]",children:[(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin"}),"Capturing the selected element from the preview…"]}):h?.selectedElement?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"rounded-[6px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-3 py-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"font-mono text-[12px] text-[var(--vk-text-normal)]",children:h.selectedElement.tag}),h.selectedElement.role?(0,b.jsx)(L.Badge,{variant:"outline",children:h.selectedElement.role}):null]}),(0,b.jsx)("div",{className:"mt-2 text-[12px] text-[var(--vk-text-normal)]",children:bl(h.selectedElement.name||h.selectedElement.text||"Selected element",140)}),(0,b.jsx)("div",{className:"mt-2 break-all font-mono text-[11px] text-[var(--vk-text-muted)]",children:h.selectedElement.selector})]}),(0,b.jsx)("div",{className:"rounded-[6px] border border-dashed border-[var(--vk-border)] px-3 py-2 text-[12px] text-[var(--vk-text-muted)]",children:"Double-click the element in the preview to queue it immediately, or use the button below. The text is inserted into terminal input instead of being sent to the agent, so you can add more context before submitting."}),w?(0,b.jsx)("div",{className:"text-[12px] text-[var(--vk-red)]",children:w}):null,(0,b.jsxs)(aI.Button,{type:"button",variant:"primary",className:"w-full",onClick:()=>void ar("selection"),disabled:aa||!h.selectedElement,children:["selection"===A?(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(aG,{className:"h-4 w-4"}),"Queue for terminal input"]})]}):(0,b.jsx)("div",{className:"rounded-[6px] border border-dashed border-[var(--vk-border)] px-3 py-3 text-[12px] text-[var(--vk-text-muted)]",children:"Single-click an element to inspect it here. Double-click to queue it for terminal input."})})]}):null]}):(0,b.jsx)("div",{className:"max-w-md text-center text-[13px] text-[var(--vk-text-muted)]",children:"Connect a local dev URL to start the preview browser. In Navigate mode, click the preview first, then type directly into the running app. Switch to Inspect mode to select UI elements and queue browser context into terminal input."})})})]}),y?(0,b.jsx)("div",{className:"rounded-[6px] border border-[color:color-mix(in_srgb,var(--vk-green)_35%,transparent)] bg-[color:color-mix(in_srgb,var(--vk-green)_10%,transparent)] px-3 py-2 text-[12px] text-[var(--vk-green)]",children:y}):null,!E&&w?(0,b.jsx)("div",{className:"rounded-[6px] border border-[color:color-mix(in_srgb,var(--vk-red)_35%,transparent)] bg-[color:color-mix(in_srgb,var(--vk-red)_10%,transparent)] px-3 py-2 text-[12px] text-[var(--vk-red)]",children:w}):null,(0,b.jsxs)("div",{className:"grid gap-2",children:[(0,b.jsxs)(K.Card,{className:"min-h-0",children:[(0,b.jsxs)(K.CardHeader,{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(aB,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"text-[13px] font-medium text-[var(--vk-text-normal)]",children:"Frames and DOM"}),(0,b.jsx)(L.Badge,{variant:"outline",children:"inspect"===C?"inspect":"read-only in navigate mode"})]}),(0,b.jsx)(aI.Button,{type:"button",variant:s?"primary":"outline",size:"sm",onClick:()=>t(a=>!a),children:s?"Interactive only":"All nodes"})]}),(0,b.jsxs)(K.CardContent,{className:"grid gap-2 xl:grid-cols-[220px_minmax(0,1fr)]",children:[(0,b.jsx)("div",{className:"space-y-2",children:h?.frames.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>{W({command:"selectFrame",frameId:a.id}).catch(a=>{v(a instanceof Error?a.message:"Failed to select frame")})},className:(0,G.cn)("flex w-full flex-col items-start gap-1 rounded-[4px] border px-2 py-2 text-left transition-colors",h.activeFrameId===a.id?"border-[var(--vk-orange)] bg-[color:color-mix(in_srgb,var(--vk-orange)_10%,transparent)]":"border-[var(--vk-border)] bg-[var(--vk-bg-main)] hover:bg-[var(--vk-bg-hover)]"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(L.Badge,{variant:"outline",children:a.isMain?"main":"frame"}),(0,b.jsx)("span",{className:"truncate text-[12px] text-[var(--vk-text-normal)]",children:a.name})]}),(0,b.jsx)("span",{className:"w-full truncate text-[11px] text-[var(--vk-text-muted)]",children:a.url||"about:blank"})]},a.id))}),(0,b.jsx)("div",{className:"rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)]",children:(0,b.jsx)(bh,{className:"h-[240px] sm:h-[300px] xl:h-[360px]",children:(0,b.jsxs)("div",{className:"space-y-1 p-2",children:["navigate"===C?(0,b.jsx)("div",{className:"rounded-[4px] border border-dashed border-[var(--vk-border)] px-2 py-2 text-[11px] text-[var(--vk-text-muted)]",children:"Switch to Inspect mode to pick DOM nodes. Single-click selects a node. Double-click queues it for terminal input."}):null,m?(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2 py-2 text-[12px] text-[var(--vk-text-muted)]",children:[(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin"}),"Inspecting frame DOM…"]}):k.length?k.map((a,c)=>(0,b.jsxs)("button",{type:"button",className:(0,G.cn)("w-full rounded-[4px] border border-[transparent] px-2 py-2 text-left","inspect"===C?"hover:border-[var(--vk-border)] hover:bg-[var(--vk-bg-hover)]":"cursor-not-allowed opacity-60"),disabled:"inspect"!==C,onClick:()=>{F(null),x(null),z(null),ak(a.selector,h?.activeFrameId).catch(a=>{v(a instanceof Error?a.message:"Failed to select DOM node")})},onDoubleClick:()=>{x(null),z(null),ak(a.selector,h?.activeFrameId).then(a=>{if(!a.selectedElement)throw Error("Failed to resolve the selected DOM node");ai(bp(a.selectedElement,a.currentUrl))}).catch(a=>{v(a instanceof Error?a.message:"Failed to queue DOM node")})},children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"font-mono text-[12px] text-[var(--vk-text-normal)]",children:a.tag}),a.interactive?(0,b.jsx)(L.Badge,{variant:"warning",children:"interactive"}):null,a.role?(0,b.jsx)(L.Badge,{variant:"outline",children:a.role}):null]}),(0,b.jsx)("div",{className:"mt-1 break-all font-mono text-[11px] text-[var(--vk-text-muted)]",children:a.selector}),a.text?(0,b.jsx)("div",{className:"mt-1 text-[12px] text-[var(--vk-text-normal)]",children:bl(a.text,180)}):null]},`${a.id??"node"}-${c}-${a.selector}-${a.tag}-${a.text}`)):(0,b.jsx)("div",{className:"px-2 py-3 text-[12px] text-[var(--vk-text-muted)]",children:"No DOM nodes to show for the current frame yet."})]})})})]})]}),(0,b.jsxs)("div",{className:"grid gap-2 lg:grid-cols-2",children:[(0,b.jsxs)(K.Card,{className:"min-h-0",children:[(0,b.jsxs)(K.CardHeader,{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(i,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"text-[13px] font-medium text-[var(--vk-text-normal)]",children:"Console"}),(0,b.jsx)(L.Badge,{variant:"outline",children:h?.consoleLogs.length??0})]}),(0,b.jsxs)(aI.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>void ar("console"),disabled:aa||!h?.consoleLogs.length,children:["console"===A?(0,b.jsx)(aE.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,b.jsx)(aG,{className:"h-3.5 w-3.5"}),"Queue for terminal"]})]}),(0,b.jsx)(K.CardContent,{children:(0,b.jsx)(bh,{className:"h-[220px] sm:h-[260px] rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)]",children:(0,b.jsx)("div",{className:"space-y-1 p-2",children:h?.consoleLogs.length?h.consoleLogs.map(a=>(0,b.jsxs)("div",{className:"rounded-[3px] px-2 py-1.5 text-[11px] text-[var(--vk-text-normal)]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[10px] uppercase tracking-wide text-[var(--vk-text-muted)]",children:[(0,b.jsx)("span",{children:a.level}),(0,b.jsx)("span",{children:bk(a.timestamp)})]}),(0,b.jsx)("div",{className:"mt-1 whitespace-pre-wrap break-all font-mono",children:a.message})]},a.id)):(0,b.jsx)("div",{className:"px-2 py-3 text-[12px] text-[var(--vk-text-muted)]",children:"Console output appears here once the page loads."})})})})]}),(0,b.jsxs)(K.Card,{className:"min-h-0",children:[(0,b.jsxs)(K.CardHeader,{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(aD,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"text-[13px] font-medium text-[var(--vk-text-normal)]",children:"Network"}),(0,b.jsx)(L.Badge,{variant:"outline",children:h?.networkLogs.length??0})]}),(0,b.jsxs)(aI.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>void ar("network"),disabled:aa||!h?.networkLogs.length,children:["network"===A?(0,b.jsx)(aE.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,b.jsx)(aG,{className:"h-3.5 w-3.5"}),"Queue for terminal"]})]}),(0,b.jsx)(K.CardContent,{children:(0,b.jsx)(bh,{className:"h-[220px] sm:h-[260px] rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)]",children:(0,b.jsx)("div",{className:"space-y-1 p-2",children:h?.networkLogs.length?h.networkLogs.map(a=>(0,b.jsxs)("div",{className:"rounded-[3px] px-2 py-1.5 text-[11px] text-[var(--vk-text-normal)]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[10px] uppercase tracking-wide text-[var(--vk-text-muted)]",children:[(0,b.jsx)("span",{children:a.method??"GET"}),"number"==typeof a.status?(0,b.jsx)("span",{children:a.status}):null,a.resourceType?(0,b.jsx)("span",{children:a.resourceType}):null,(0,b.jsx)("span",{children:bk(a.timestamp)})]}),(0,b.jsx)("div",{className:"mt-1 break-all font-mono",children:a.url??a.message})]},a.id)):(0,b.jsx)("div",{className:"px-2 py-3 text-[12px] text-[var(--vk-text-muted)]",children:"Network requests appear here after the preview loads."})})})})]})]})]})]})}var bs=a.i(27736),bt=a.i(52495),bu=a.i(65385),bv=a.i(34959);let bw="block h-5 w-5 shrink-0 object-contain",bx=[{id:"finder",label:"Finder"},{id:"cursor",label:"Cursor"},{id:"antigravity",label:"Antigravity"},{id:"windsurf",label:"Windsurf"},{id:"zed",label:"Zed"},{id:"xcode",label:"Xcode"},{id:"vscode",label:"VS Code"},{id:"vscode-insiders",label:"VS Code Insiders"},{id:"intellij-idea",label:"IntelliJ IDEA"},{id:"custom",label:"Custom"}],by={finder:{kind:"image",imageSrc:"/icons/ide/finder.svg",className:bw},vscode:{kind:"image",imageSrc:"/icons/ide/vscode-dark.svg",className:bw},"vscode-insiders":{kind:"image",imageSrc:"/icons/ide/vscode-insiders.svg",className:bw},cursor:{kind:"image",imageSrc:"/icons/ide/cursor-dark.svg",className:bw},windsurf:{kind:"image",imageSrc:"/icons/ide/windsurf-dark.svg",className:bw},"intellij-idea":{kind:"image",imageSrc:"/icons/ide/intellij.svg",className:bw},zed:{kind:"image",imageSrc:"/icons/ide/zed-dark.svg",className:bw},xcode:{kind:"image",imageSrc:"/icons/ide/xcode.svg",className:bw},antigravity:{kind:"image",imageSrc:"/icons/ide/antigravity-dark.svg",className:bw},custom:{kind:"icon",className:`${bw} text-[var(--vk-text-muted)]`}};function bz({editorId:a,label:c}){let d=by[a];return d?"icon"===d.kind?(0,b.jsx)(bu.Settings2,{className:d?.className??`${bw} text-[var(--vk-text-muted)]`}):(0,b.jsx)("img",{src:d.imageSrc,alt:`${c} logo`,className:d.className}):(0,b.jsx)(bu.Settings2,{className:`${bw} text-[var(--vk-text-muted)]`})}function bA({projectId:a}){let{preferences:d}=(0,bv.usePreferences)(),[e,f]=(0,c.useState)(null),g=(0,c.useMemo)(()=>{var a;return a=d?.ide??"vscode",bx.find(b=>b.id===a)??{id:a,label:a}},[d?.ide]);async function h(b){if(a&&!e){f(b);try{let c=await fetch(`/api/projects/${encodeURIComponent(a)}/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ide:b})}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Failed to open project (${c.status})`)}catch(a){window.alert(a instanceof Error?a.message:"Failed to open project")}finally{f(null)}}}return(0,b.jsxs)(bs.Root,{children:[(0,b.jsx)(bs.Trigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button",disabled:!a||null!==e,className:"inline-flex h-9 items-center gap-2 rounded-[6px] border border-[rgba(255,255,255,0.08)] bg-[rgba(255,255,255,0.03)] px-3 text-[13px] text-[var(--vk-text-normal)] transition hover:bg-[rgba(255,255,255,0.06)] disabled:cursor-not-allowed disabled:opacity-60","aria-label":"Open project in code editor",title:a?`Open project in ${g.label}`:"No project selected",children:[e?(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin text-[var(--vk-text-muted)]"}):(0,b.jsx)(bt.ExternalLink,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"hidden font-medium sm:inline",children:"Open"}),(0,b.jsx)(ab.ChevronDown,{className:"h-3.5 w-3.5 text-[var(--vk-text-muted)]"})]})}),(0,b.jsx)(bs.Portal,{children:(0,b.jsx)(bs.Content,{align:"end",sideOffset:8,className:"z-50 min-w-[240px] rounded-[8px] border border-[rgba(255,255,255,0.08)] bg-[#1c1a19] p-2 shadow-[0_18px_50px_rgba(0,0,0,0.45)]",children:bx.map(a=>(0,b.jsxs)(bs.Item,{onSelect:()=>void h(a.id),className:"flex min-h-[44px] cursor-default items-center gap-3 rounded-[6px] px-3 py-2 text-[14px] text-[#f3efea] outline-none transition hover:bg-[rgba(255,255,255,0.06)] focus:bg-[rgba(255,255,255,0.06)]",children:[(0,b.jsx)(bz,{editorId:a.id,label:a.label}),(0,b.jsx)("span",{className:"flex-1",children:a.label}),g.id===a.id?(0,b.jsx)(N.Check,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}):null]},a.id))})})]})}let bB=(0,e.default)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]]),bC={background:"#000000",foreground:"#ffffff",cursor:"#ffffff",cursorAccent:"#000000",selectionBackground:"#4d4d4d",black:"#2e3436",red:"#cc0000",green:"#4e9a06",yellow:"#c4a000",blue:"#3465a4",magenta:"#75507b",cyan:"#06989a",white:"#d3d7cf",brightBlack:"#555753",brightRed:"#ef2929",brightGreen:"#8ae234",brightYellow:"#fce94f",brightBlue:"#729fcf",brightMagenta:"#ad7fa8",brightCyan:"#34e2e2",brightWhite:"#eeeeec"},bD={background:"#ffffff",foreground:"#000000",cursor:"#000000",cursorAccent:"#ffffff",selectionBackground:"#add6ff",black:"#2e3436",red:"#cc0000",green:"#4e9a06",yellow:"#c4a000",blue:"#3465a4",magenta:"#75507b",cyan:"#06989a",white:"#d3d7cf",brightBlack:"#555753",brightRed:"#ef2929",brightGreen:"#8ae234",brightYellow:"#fce94f",brightBlue:"#729fcf",brightMagenta:"#ad7fa8",brightCyan:"#34e2e2",brightWhite:"#eeeeec"};function bE(a){return a&&"object"==typeof a?a:null}function bF(a){let b=a.trim();if(!b)return null;let c=b.split(/\r?\n/g).map(a=>a.trim()).filter(Boolean);if(1!==c.length)return null;let d=c[0].replace(/^['"]|['"]$/g,"");if(!d)return null;if(d.startsWith("file://"))try{let a=new URL(d);if("file:"!==a.protocol)return null;let b=decodeURIComponent(a.pathname);return/^\/[A-Za-z]:\//.test(b)&&(b=b.slice(1)),b||null}catch{return null}if(!(d.startsWith("/")||/^[A-Za-z]:[\\/]/.test(d)))return null;let e=d.split(/[\\/]/).filter(Boolean).pop()??"";return/\.[A-Za-z0-9]{1,10}$/.test(e)?d:null}async function bG({files:a,projectId:b,taskRef:c,preferAbsolute:d=!0}){if(!a.length)return[];let e=b.trim();if(!e)throw Error("Project id is required to upload attachments");let f=new FormData;f.append("projectId",e);let g=c?.trim();for(let b of(g&&f.append("taskRef",g),a))f.append("files",b);let h=await fetch("/api/attachments",{method:"POST",body:f}),i=await h.json().catch(()=>null);if(!h.ok){let b=1===a.length?a[0]?.name??"attachment":`${a.length} attachments`;throw Error(i?.error??`Failed to upload ${b}`)}let j=(Array.isArray(i?.files)?i.files:i?[i]:[]).map(a=>(function(a,b){let c=bE(a);if(!c)return null;let d=bE(c.attachment);for(let a of b?[c.absolutePath,c.path,c.filePath,d?.absolutePath,d?.path,d?.filePath]:[c.path,c.absolutePath,c.filePath,d?.path,d?.absolutePath,d?.filePath])if("string"==typeof a&&a.trim().length>0)return a.trim();return null})(a,d)).filter(a=>!!a);if(0===j.length)throw Error("Attachment upload succeeded but did not return a usable file path");return j}let bH=new Set(["queued","spawning","running","working","needs_input","stuck"]),bI=new Set(["done","needs_input","stuck","errored","terminated","killed"]),bJ=new Set([1e3,1002,1003,1005,1006,1015,1047,1048,1049]),bK=[/\x1b\[(?:I|O)/g,/\x1b\[\d+;\d+R/g,/\x1b\[(?:[?>])[\d;]*c/g,/\x1b\](?:10|11|12|4;\d+);[\s\S]*?(?:\x07|\x1b\\)/g],bL=/\u001b(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~]|\][\s\S]*?(?:\u0007|\u001b\\))/g;function bM(a){return`'${a.replace(/'/g,"'\\''")}'`}async function bN(a){let b=await fetch(`/api/sessions/${encodeURIComponent(a)}/terminal/connection`,{cache:"no-store"}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error??`Failed to resolve terminal connection: ${b.status}`);let d=c?.transport==="http-poll"?"http-poll":"websocket",e="number"==typeof c?.pollIntervalMs&&Number.isFinite(c.pollIntervalMs)&&c.pollIntervalMs>=100?Math.round(c.pollIntervalMs):700;if("websocket"===d){if("string"!=typeof c?.wsUrl||0===c.wsUrl.trim().length)throw Error("Terminal connection did not include a websocket URL");return{transport:d,wsUrl:c.wsUrl.trim(),pollIntervalMs:e}}return{transport:d,wsUrl:null,pollIntervalMs:e}}async function bO(a,b){let c=await fetch(`/api/sessions/${encodeURIComponent(a)}/terminal/snapshot?lines=${b}`,{cache:"no-store"}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Failed to resolve terminal snapshot: ${c.status}`);return{snapshot:"string"==typeof d?.snapshot?d.snapshot:"",source:"string"==typeof d?.source?d.source:"empty",live:d?.live===!0,restored:d?.restored===!0}}async function bP(a,b){let c=await fetch(`/api/sessions/${encodeURIComponent(a)}/terminal/snapshot?lines=${b}&live=1`,{cache:"no-store"}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Failed to resolve terminal snapshot: ${c.status}`);return{snapshot:"string"==typeof d?.snapshot?d.snapshot:"",source:"string"==typeof d?.source?d.source:"empty",live:d?.live===!0,restored:d?.restored===!0}}async function bQ(a){let b=await fetch(`/api/sessions/${encodeURIComponent(a)}`,{cache:"no-store"});if(!b.ok)throw Error(`Failed to load session: ${b.status}`);let c=await b.json().catch(()=>null);return"string"==typeof c?.status&&c.status.trim().length>0?c.status.trim():null}async function bR(a,b){let c=await fetch(`/api/sessions/${encodeURIComponent(a)}/keys`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Failed to send terminal input: ${c.status}`)}async function bS(a,b,c){let d=await fetch(`/api/sessions/${encodeURIComponent(a)}/terminal/resize`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cols:Math.max(1,Math.round(b)),rows:Math.max(1,Math.round(c))})});if(404===d.status)return;let e=await d.json().catch(()=>null);if(!d.ok)throw Error(e?.error??`Failed to resize terminal: ${d.status}`)}function bT(a){return a.replace(/\r?\n/g,"\r\n")}function bU(a){let b=a.toLowerCase();return b.includes("/temporaryitems/")||b.includes("nsird_screencaptureui")?"macOS exposed only a temporary screenshot path. Paste the screenshot or drop the saved file from Finder so Conductor can upload it cleanly.":"The browser exposed only a local file path for this drop. Use paste or the attach button so Conductor can upload the file instead of injecting raw path text."}function bV(a){return a<420?{fontFamily:"'SF Mono', Menlo, Monaco, monospace",fontSize:11,lineHeight:1}:a<640?{fontFamily:"'SF Mono', Menlo, Monaco, monospace",fontSize:13,lineHeight:1.08}:{fontFamily:'MesloLGM Nerd Font, MesloLGM NF, MesloLGS NF, MesloLGS Nerd Font, Hack Nerd Font, FiraCode Nerd Font, JetBrainsMono Nerd Font, CaskaydiaCove Nerd Font, Menlo, Monaco, "Courier New", SF Mono, SF Pro, monospace',fontSize:17,lineHeight:1.06}}function bW({sessionId:e,agentName:f,projectId:g,sessionModel:h,sessionReasoningEffort:i,sessionState:j,active:k,pendingInsert:l}){let m=(0,d.useRouter)(),n=(0,c.useRef)(null),o=(0,c.useRef)(null),p=(0,c.useRef)(null),q=(0,c.useRef)(null),r=(0,c.useRef)(null),s=(0,c.useRef)(null),t=(0,c.useRef)(null),u=(0,c.useRef)(null),v=(0,c.useRef)(Promise.resolve()),w=(0,c.useRef)(0),x=(0,c.useRef)(0),y=(0,c.useRef)(null),z=(0,c.useRef)(null),A=(0,c.useRef)(null),B=(0,c.useRef)(null),C=(0,c.useRef)(null),D=(0,c.useRef)(j),E=(0,c.useRef)(k),F=(0,c.useRef)(!1),G=(0,c.useRef)(!1),H=(0,c.useRef)(null),I=(0,c.useRef)(""),J=(0,c.useRef)(!1),K=(0,c.useRef)(!1),L=(0,c.useRef)(null),M=(0,c.useRef)(null),N=(0,c.useRef)(0),O=(0,c.useRef)(!1),P=(0,c.useRef)([]),Q=(0,c.useRef)(0),[R,S]=(0,c.useState)(!1),[T,U]=(0,c.useState)("websocket"),[V,W]=(0,c.useState)(null),[X,Y]=(0,c.useState)("connecting"),[Z,$]=(0,c.useState)(null),[_,aa]=(0,c.useState)(700),[ac,ae]=(0,c.useState)(0),[af,ag]=(0,c.useState)(""),[ah,ai]=(0,c.useState)(""),[aj,ak]=(0,c.useState)([]),[an,ap]=(0,c.useState)(!1),[aq,ar]=(0,c.useState)(null),[as,at]=(0,c.useState)(!1),[au,av]=(0,c.useState)(!1),[aw,ax]=(0,c.useState)(""),[ay,az]=(0,c.useState)(!1),[aA,aB]=(0,c.useState)(!1),[aC,aD]=(0,c.useState)(""),[aF,aG]=(0,c.useState)(()=>"u"<typeof document||!document.hidden),[aH,aJ]=(0,c.useState)(null),aK=(0,c.useMemo)(()=>("string"==typeof aH&&aH.trim().length>0?aH:j).trim().toLowerCase(),[j,aH]);D.current=aK,E.current=k;let aL=bH.has(aK),aM=aL&&k&&aF,aN=bI.has(aK)&&!aL,aO=aL&&"http-poll"===T,aP=(0,c.useMemo)(()=>aC.replace(bL,"").replace(/\r\n/g,"\n").replace(/\r/g,"\n").replace(/\u0000/g,""),[aC]),aQ="done"===aK?"Continue the session...":"needs_input"===aK||"stuck"===aK?"Answer the agent and resume...":"Restart this session with a follow-up...",aR=(0,c.useCallback)(()=>{ag(a=>0===a.trim().length?"":a)},[]),aS=(0,c.useCallback)(()=>{null!==u.current&&(window.clearTimeout(u.current),u.current=null)},[]),aT=(0,c.useCallback)(()=>{aS(),w.current+=1;let a=Math.min(1600,300*w.current);u.current=window.setTimeout(()=>{ae(a=>a+1)},a)},[aS]),aU=(0,c.useCallback)(()=>{aS(),$(null),Y("connecting"),U("websocket"),W(null),ae(a=>a+1)},[aS]),aV=(0,c.useCallback)(a=>{let b=v.current.catch(()=>void 0).then(a);return v.current=b.catch(()=>void 0),b},[]),aW=(0,c.useCallback)(async()=>{let a=p.current;if(!a)return;if("http-poll"===T)return void await aV(()=>bS(e,a.cols,a.rows));let b=t.current;b&&b.readyState===WebSocket.OPEN&&b.send(JSON.stringify({type:"resize",cols:Math.max(1,a.cols),rows:Math.max(1,a.rows)}))},[aV,e,T]),aX=(0,c.useCallback)(async a=>{let b=function(a){let b=a;for(let a of bK)b=b.replace(a,"");return b}(a);if(0===b.length)return;if("http-poll"===T)return void await aV(()=>bR(e,{keys:b}));let c=t.current;if(!c||c.readyState!==WebSocket.OPEN)throw Error("Terminal is not connected");c.send(JSON.stringify({type:"keys",keys:b}))},[aV,e,T]),aY=(0,c.useCallback)(async a=>{if("http-poll"===T)return void await aV(()=>bR(e,{special:a}));let b=t.current;if(!b||b.readyState!==WebSocket.OPEN)throw Error("Terminal is not connected");b.send(JSON.stringify({type:"keys",special:a}))},[aV,e,T]),aZ=(0,c.useCallback)(()=>{let a=p.current;if(!a)return void az(!1);let b=a.buffer.active;az(b.viewportY<b.baseY)},[]),a$=(0,c.useCallback)(()=>{null!==L.current&&(window.cancelAnimationFrame(L.current),L.current=null),null!==M.current&&(window.clearTimeout(M.current),M.current=null),O.current=!1},[]),a_=(0,c.useCallback)(()=>{for(let a of P.current)window.clearTimeout(a);P.current=[]},[]),a0=(0,c.useCallback)(a=>{let b=p.current,c=q.current,d=n.current;if(!b||!c||!d)return;let e=window.getComputedStyle(d);if("none"===e.display||"hidden"===e.visibility)return;let f=d.getBoundingClientRect();if(f.width<=1||f.height<=1)return;let g=b.cols,h=b.rows,i=b.buffer.active.viewportY>=b.buffer.active.baseY;try{c.fit()}catch{return}a&&b.refresh(0,Math.max(0,b.rows-1)),(a||b.cols!==g||b.rows!==h)&&aW().catch(a=>{$(a instanceof Error?a.message:"Failed to resize terminal")}),i&&b.scrollToBottom(),aZ(),E.current&&b.focus()},[aW,aZ]),a1=(0,c.useCallback)(a=>{O.current||=a,null===L.current&&(L.current=window.requestAnimationFrame(()=>{L.current=null;let a=Date.now();if(a-N.current<120){let b=120-(a-N.current);null!==M.current&&window.clearTimeout(M.current),M.current=window.setTimeout(()=>{M.current=null,a1(O.current)},b+1);return}N.current=a;let b=O.current;O.current=!1,a0(b)}))},[a0]),a2=(0,c.useCallback)(a=>{a.length&&ak(b=>[...b,...a.map(a=>({file:a}))])},[]),a3=(0,c.useCallback)(async a=>{let b=await bG({files:a,projectId:g,preferAbsolute:!0});if(!b.length)return;let c=b.map(bM).join(" ");await aX(`${c} `)},[g,aX]),a4=(0,c.useCallback)(async a=>{if(a.length){ar(null);try{if(aL&&"live"===X)return void await a3(a);a2(a)}catch(a){ar(a instanceof Error?a.message:"Failed to process files")}}},[X,aL,a3,a2]),a5=(0,c.useCallback)(a=>{H.current=null,I.current=a.snapshot,aD(a.snapshot),aB(!0),a.live&&(Y("live"),$(null))},[]);(0,c.useEffect)(()=>{let a=K.current;K.current=aL,a&&!aL&&(H.current=null,J.current=!1)},[aL]),(0,c.useEffect)(()=>{F.current=!1,G.current=!1,H.current=null,I.current="",J.current=!1,w.current=0,x.current=0,Q.current=0,aS(),a$(),t.current?.close(),t.current=null,v.current=Promise.resolve(),U("websocket"),W(null),Y("connecting"),$(null),aa(700),ag(""),ai(""),ak([]),ap(!1),ar(null),at(!1),av(!1),ax(""),az(!1),aB(!1),aD(""),aJ(null),p.current?.reset(),aZ()},[aS,a$,e,aZ]),(0,c.useEffect)(()=>{aJ(null)},[j]),(0,c.useEffect)(()=>{let a=!0;return(aB(!1),aL)?aM?(J.current=!1,H.current=null,(async()=>{try{let b=await bP(e,1200);if(!a)return;a5(b)}catch{try{let b=await bO(e,6e3);if(!a)return;a5(b)}catch{if(!a)return;aD("")}}finally{a&&aB(!0)}})(),()=>{a=!1}):(aD(""),()=>{a=!1}):(aD(""),(async()=>{try{let b=await bO(e,6e3);if(!a)return;a5(b)}catch{if(!a)return;aD("")}finally{a&&aB(!0)}})(),()=>{a=!1})},[a5,aL,e,aM]),(0,c.useEffect)(()=>{let a=!0;return aL&&!aM?(W(null),Y("closed"),$(null),()=>{a=!1}):((async()=>{try{W(null);let b=await bN(e);if(!a)return;U(b.transport),aa(b.pollIntervalMs),W(b.wsUrl),$(null),Y("connecting")}catch(b){if(!a)return;$(b instanceof Error?b.message:"Failed to resolve terminal connection"),Y("error")}})(),()=>{a=!1})},[aL,ac,e,aM]),(0,c.useEffect)(()=>{if(aO){p.current?.dispose(),p.current=null,q.current=null,r.current=null,S(!1);return}let b=null,c=null,d=!0;return async function(){if(!n.current||!d)return;let[e,f,g]=await Promise.all([a.A(81888),a.A(71789),a.A(63198)]);if(!d||!n.current)return;let h=document.documentElement.classList.contains("light"),i=bV(window.innerWidth),j={allowTransparency:!1,cursorBlink:!0,cursorStyle:"block",disableStdin:!1,drawBoldTextInBrightColors:!0,fontFamily:i.fontFamily,fontSize:i.fontSize,fastScrollSensitivity:4,lineHeight:i.lineHeight,scrollSensitivity:1.1,scrollback:5e4,theme:h?bD:bC,scrollbar:{showScrollbar:!1}};b=new e.Terminal(j);let k=a=>{b?.parser.registerCsiHandler({prefix:"?",final:a},a=>!!a.some(a=>Array.isArray(a)?a.some(a=>bJ.has(a)):bJ.has(a)))};k("h"),k("l"),b.attachCustomWheelEventHandler(a=>{let c=a.deltaMode===WheelEvent.DOM_DELTA_LINE?a.deltaY:a.deltaY/14,d=0===c?0:c>0?Math.max(1,Math.round(c)):Math.min(-1,Math.round(c));return 0!==d&&(a.preventDefault(),a.stopPropagation(),b?.scrollLines(d),aZ(),!1)}),c=new f.FitAddon,b.loadAddon(c);let l=new g.SearchAddon;b.loadAddon(l),b.open(n.current),c.fit(),p.current=b,q.current=c,r.current=l,b.options.disableStdin="http-poll"===T,S(!0),aZ(),y.current=b.onData(a=>{aX(a).catch(()=>{})}),z.current=b.onScroll(()=>{aZ()}),s.current=new ResizeObserver(()=>{if(E.current&&b){try{let a=bV(window.innerWidth);b.options.fontFamily=a.fontFamily,b.options.fontSize=a.fontSize,b.options.lineHeight=a.lineHeight}catch{return}a1(!0)}}),s.current.observe(n.current)}(),()=>{d=!1,y.current?.dispose(),y.current=null,z.current?.dispose(),z.current=null,s.current?.disconnect(),s.current=null,b&&b.dispose(),p.current=null,q.current=null,r.current=null,S(!1)}},[aO,a1,aX,T,aZ]),(0,c.useEffect)(()=>{let a=p.current;a&&(a.options.disableStdin="http-poll"===T)},[T]),(0,c.useEffect)(()=>{if(!k)return;a_();let a=window.requestAnimationFrame(()=>{a1(!0),P.current.push(window.setTimeout(()=>{a1(!0)},48)),P.current.push(window.setTimeout(()=>{a1(!0)},140))});return()=>{window.cancelAnimationFrame(a),a_()}},[k,a_,a1]),(0,c.useEffect)(()=>{if(!R||!aA)return;let a=p.current;if(a){if("http-poll"===T&&aL){let b=Math.max(0,a.buffer.active.baseY-a.buffer.active.viewportY),c=b<=2;return(a.reset(),aC.length>0)?void a.write(bT(aC),()=>{if(p.current===a){if(c)try{a.scrollToBottom()}catch{return}else{let c=Math.max(0,a.buffer.active.baseY-b)-a.buffer.active.viewportY;if(0!==c)try{a.scrollLines(c)}catch{return}}if(aZ(),E.current)try{a.focus()}catch{}}}):void aZ()}if(H.current!==e){if(aL&&(J.current||function(a){let b=a.buffer.active;if(b.baseY>0)return!0;for(let c=0;c<a.rows;c+=1){let a=b.getLine(c);if(a&&a.translateToString(!0).trim().length>0)return!0}return!1}(a))){H.current=e,aZ();return}if(H.current=e,aC.length>0){a.reset(),a.write(bT(aC),()=>{if(p.current===a&&(aZ(),E.current))try{a.focus()}catch{}});return}aZ()}}},[k,aL,e,aC,aA,R,T,aZ]),(0,c.useEffect)(()=>{if(!aO)return;let a=o.current;if(!a)return;let b=a.scrollHeight,c=a.scrollTop,d=Math.max(0,b-a.clientHeight-c),e=d<=24;requestAnimationFrame(()=>{let a=o.current;if(a){if(e)a.scrollTop=a.scrollHeight;else{let b=Math.max(0,a.scrollHeight-a.clientHeight-d);a.scrollTop=b}az(a.scrollTop+a.clientHeight<a.scrollHeight-8)}})},[aO,aP]),(0,c.useEffect)(()=>{let a=()=>{aG(!document.hidden),document.hidden||(aR(),a1(!1))},b=()=>{aG(!document.hidden),aR(),a1(!1)};return document.addEventListener("visibilitychange",a),window.addEventListener("focus",b),()=>{document.removeEventListener("visibilitychange",a),window.removeEventListener("focus",b)}},[aR,a1]),(0,c.useEffect)(()=>{if(aM)return;aS();let a=t.current;t.current=null,a&&a.close()},[aS,aM]),(0,c.useEffect)(()=>{if(!aA||!aM||"http-poll"!==T)return;let a=!1,b=null,c=!1,d=async()=>{if(!a&&!c){c=!0;try{let b=await bP(e,1200);if(a)return;Y("live"),$(null),b.snapshot!==I.current&&a5(b)}catch(b){if(a)return;$(b instanceof Error?b.message:"Terminal polling failed"),Y("error")}finally{c=!1,a||(b=window.setTimeout(()=>{d()},_))}}};return d(),()=>{a=!0,null!==b&&window.clearTimeout(b)}},[a5,I,_,e,aM,aA,T]),(0,c.useEffect)(()=>{var a,b;let c;if(!R||!aA||!V||!p.current||!aM||"websocket"!==T)return;let d=p.current,e=(a=d.cols,b=d.rows,(c=new URL(V)).searchParams.set("cols",String(Math.max(1,a))),c.searchParams.set("rows",String(Math.max(1,b))),c.toString()),f=x.current+1;x.current=f,aS(),Y("connecting");let g=new WebSocket(e);return g.binaryType="arraybuffer",t.current=g,g.onopen=()=>{if(x.current!==f)return;w.current=0,$(null),Y("live");let a=F.current;F.current=!0,G.current=!1,a&&d.writeln("\r\n\x1b[90m[Reconnected]\x1b[0m"),aZ(),a1(!0)},g.onmessage=a=>{if(x.current===f){if("string"==typeof a.data){try{let b=JSON.parse(a.data);"error"===b.type?($(b.error),Y("error")):"exit"===b.type&&Y("closed")}catch{$("Received an invalid terminal event"),Y("error")}return}if(a.data instanceof ArrayBuffer){J.current=!0;let b=d.buffer.active.viewportY>=d.buffer.active.baseY;d.write(new Uint8Array(a.data),()=>{if(p.current===d){if(b)try{d.scrollToBottom()}catch{return}aZ()}})}}},g.onclose=()=>{if(x.current===f){if(t.current=null,bH.has(D.current)){let a=p.current;a&&F.current&&!G.current&&(G.current=!0,a.writeln("\r\n\x1b[90m[Connection lost. Reconnecting...]\x1b[0m")),Y("connecting"),W(null),aT();return}Y("closed")}},g.onerror=()=>{x.current===f&&($("Terminal connection failed"),Y("error"))},()=>{t.current===g&&(t.current=null),g.close()}},[aS,ac,aT,a1,aM,aA,V,R,T,aZ]),(0,c.useEffect)(()=>{if(!R||!aA||!aM||"websocket"!==T)return;let a=t.current;a&&(a.readyState===WebSocket.CONNECTING||a.readyState===WebSocket.OPEN)||"closed"!==X&&"error"!==X||null===u.current&&aT()},[X,aT,aM,aA,R,T]),(0,c.useEffect)(()=>()=>{aS(),a$(),a_(),t.current?.close()},[aS,a$,a_]),(0,c.useEffect)(()=>{let a=n.current;if(!a)return;let b=a=>{let b=a.clipboardData;if(!b)return;let c=Array.from(b.files??[]);if(c.length>0){a.preventDefault(),a4(c);return}let d=bF(b.getData("text/plain")??"");d&&(a.preventDefault(),ar(bU(d)))};return a.addEventListener("paste",b,{capture:!0}),()=>{a.removeEventListener("paste",b,{capture:!0})}},[a4]);let a6=(0,c.useCallback)(async()=>{let a=af.trim();if(a||0!==aj.length){ap(!0),ar(null);try{let b=await bG({files:aj.map(a=>a.file),projectId:g,preferAbsolute:!0}),c=await fetch(`/api/sessions/${encodeURIComponent(e)}/send`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:a,attachments:b,model:h||null,reasoningEffort:i||null,projectId:g||null})}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Failed to send message: ${c.status}`);if(ag(""),ak([]),d?.sessionId&&d.sessionId!==e)return void m.push(`/sessions/${encodeURIComponent(d.sessionId)}`);ae(a=>a+1);try{let a=await bQ(e);aJ(a)}catch{}}catch(a){ar(a instanceof Error?a.message:"Failed to resume session")}finally{ap(!1)}}},[aj,af,g,m,e,h,i]);(0,c.useEffect)(()=>{if(!l||l.nonce<=Q.current)return;if(Q.current=l.nonce,ar(null),aL&&"live"===X){let a=l.inlineText.trim();a.length>0&&aX(`${a} `).catch(a=>{ar(a instanceof Error?a.message:"Failed to insert preview context into terminal")});return}let a=l.draftText.trim();0!==a.length&&ag(b=>b.trim().length>0?`${b}
1
+ module.exports=[37483,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(70106);let f=(0,e.default)("file-code",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}]]),g=(0,e.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]),h=(0,e.default)("layout-dashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]),i=(0,e.default)("square-terminal",[["path",{d:"m7 11 2-2-2-2",key:"1lz0vl"}],["path",{d:"M11 13h4",key:"1p7l4v"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}]]);var j=a.i(7554),k=a.i(50104),l=a.i(24050),m=a.i(77192),n=a.i(30553),o=a.i(7827),p=a.i(25152),q=a.i(92843),r="Tabs",[s,t]=(0,k.createContextScope)(r,[l.createRovingFocusGroupScope]),u=(0,l.createRovingFocusGroupScope)(),[v,w]=s(r),x=c.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,onValueChange:f,defaultValue:g,orientation:h="horizontal",dir:i,activationMode:j="automatic",...k}=a,l=(0,o.useDirection)(i),[m,s]=(0,p.useControllableState)({prop:e,onChange:f,defaultProp:g??"",caller:r});return(0,b.jsx)(v,{scope:d,baseId:(0,q.useId)(),value:m,onValueChange:s,orientation:h,dir:l,activationMode:j,children:(0,b.jsx)(n.Primitive.div,{dir:l,"data-orientation":h,...k,ref:c})})});x.displayName=r;var y="TabsList",z=c.forwardRef((a,c)=>{let{__scopeTabs:d,loop:e=!0,...f}=a,g=w(y,d),h=u(d);return(0,b.jsx)(l.Root,{asChild:!0,...h,orientation:g.orientation,dir:g.dir,loop:e,children:(0,b.jsx)(n.Primitive.div,{role:"tablist","aria-orientation":g.orientation,...f,ref:c})})});z.displayName=y;var A="TabsTrigger",B=c.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,disabled:f=!1,...g}=a,h=w(A,d),i=u(d),k=E(h.baseId,e),m=F(h.baseId,e),o=e===h.value;return(0,b.jsx)(l.Item,{asChild:!0,...i,focusable:!f,active:o,children:(0,b.jsx)(n.Primitive.button,{type:"button",role:"tab","aria-selected":o,"aria-controls":m,"data-state":o?"active":"inactive","data-disabled":f?"":void 0,disabled:f,id:k,...g,ref:c,onMouseDown:(0,j.composeEventHandlers)(a.onMouseDown,a=>{f||0!==a.button||!1!==a.ctrlKey?a.preventDefault():h.onValueChange(e)}),onKeyDown:(0,j.composeEventHandlers)(a.onKeyDown,a=>{[" ","Enter"].includes(a.key)&&h.onValueChange(e)}),onFocus:(0,j.composeEventHandlers)(a.onFocus,()=>{let a="manual"!==h.activationMode;o||f||!a||h.onValueChange(e)})})})});B.displayName=A;var C="TabsContent",D=c.forwardRef((a,d)=>{let{__scopeTabs:e,value:f,forceMount:g,children:h,...i}=a,j=w(C,e),k=E(j.baseId,f),l=F(j.baseId,f),o=f===j.value,p=c.useRef(o);return c.useEffect(()=>{let a=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)(m.Presence,{present:g||o,children:({present:c})=>(0,b.jsx)(n.Primitive.div,{"data-state":o?"active":"inactive","data-orientation":j.orientation,role:"tabpanel","aria-labelledby":k,hidden:!c,id:l,tabIndex:0,...i,ref:d,style:{...a.style,animationDuration:p.current?"0s":void 0},children:c&&h})})});function E(a,b){return`${a}-trigger-${b}`}function F(a,b){return`${a}-content-${b}`}D.displayName=C;var G=a.i(26006);let H=(0,c.forwardRef)(({className:a,...c},d)=>(0,b.jsx)(z,{ref:d,className:(0,G.cn)("inline-flex max-w-full items-center gap-0.5 overflow-x-auto rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] p-0.5 whitespace-nowrap touch-pan-x [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",a),...c}));H.displayName="TabsList";let I=(0,c.forwardRef)(({className:a,...c},d)=>(0,b.jsx)(B,{ref:d,className:(0,G.cn)("inline-flex min-h-[34px] shrink-0 items-center gap-1.5 rounded-[3px] px-2.5 py-1.5 text-[12px] text-[var(--vk-text-muted)]","data-[state=active]:bg-[var(--vk-bg-active)] data-[state=active]:text-[var(--vk-text-normal)]","hover:text-[var(--vk-text-normal)]","focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--vk-orange)]",a),...c}));I.displayName="TabsTrigger";let J=(0,c.forwardRef)(({className:a,...c},d)=>(0,b.jsx)(D,{ref:d,className:(0,G.cn)("focus-visible:outline-none",a),...c}));J.displayName="TabsContent";var K=a.i(48079),L=a.i(50415),M=a.i(61693),N=a.i(33441);let O=(0,e.default)("clock-3",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6h4",key:"135r8i"}]]);var P=a.i(5151);let Q=(0,e.default)("dollar-sign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]);var R=a.i(34531),S=a.i(10948);let T=(0,e.default)("list-checks",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]]),U=(0,e.default)("timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]]);var V=a.i(52806);let W={archived:"default",queued:"info",running:"success",working:"success",done:"default",merged:"success",errored:"error",stuck:"warning",killed:"error",needs_input:"warning"};function X({text:a}){let[d,e]=(0,c.useState)(!1);async function f(){try{await navigator.clipboard.writeText(a),e(!0),window.setTimeout(()=>e(!1),1400)}catch{}}return(0,b.jsxs)("button",{type:"button",onClick:()=>void f(),className:"inline-flex items-center gap-1 font-mono text-[12px] text-[var(--text-normal)] transition-colors hover:text-[var(--text-strong)]",children:[(0,b.jsx)("span",{className:"truncate",children:a}),d?(0,b.jsx)(N.Check,{className:"h-3 w-3 text-[var(--status-ready)]"}):(0,b.jsx)(P.Copy,{className:"h-3 w-3 text-[var(--text-faint)]"})]})}function Y(a){if(!a)return"-";let b=new Date(a);return Number.isNaN(b.getTime())?"-":b.toLocaleString()}function Z(a,b){let c=a.metadata[b];if("string"==typeof c&&c.trim().length>0)return c}function $(a){if(!a)return null;let b=Number.parseInt(a,10);return Number.isFinite(b)&&b>0?b:null}function _({session:a}){let d=(0,c.useMemo)(()=>Z(a,"task")??Z(a,"prompt")??("string"==typeof a.task?a.task:"")??("string"==typeof a.prompt?a.prompt:""),[a]),e=(0,c.useMemo)(()=>Z(a,"agent")??("string"==typeof a.agent?a.agent:""),[a]),f=(0,c.useMemo)(()=>Z(a,"worktree")??Z(a,"path")??("string"==typeof a.worktree?a.worktree:""),[a]),g=(0,c.useMemo)(()=>({created:Y(a.createdAt),started:Y(Z(a,"startedAt")??a.startedAt),finished:Y(Z(a,"finishedAt")??a.finishedAt),duration:function(a,b){if(!a||!b)return"-";let c=new Date(a).getTime(),d=new Date(b).getTime();if(!Number.isFinite(c)||!Number.isFinite(d)||d<c)return"-";let e=Math.floor((d-c)/6e4);if(e<1)return"<1m";if(e<60)return`${e}m`;let f=Math.floor(e/60);return`${f}h ${e%60}m`}(Z(a,"startedAt")??a.startedAt,Z(a,"finishedAt")??a.finishedAt),cost:function(a){if("number"==typeof a.cost)return a.cost;let b=a.metadata;if(!b||"object"!=typeof b)return 0;let c=b.cost;if("string"!=typeof c)return 0;try{let a=JSON.parse(c),b="number"==typeof a.estimatedCostUsd?a.estimatedCostUsd:0,d="number"==typeof a.totalUSD?a.totalUSD:0;return b??d}catch{return 0}}(a)}),[a]),h=(0,c.useMemo)(()=>$(Z(a,"queuePosition")),[a]),i=(0,c.useMemo)(()=>$(Z(a,"queueDepth")),[a]),j=(0,c.useMemo)(()=>Z(a,"recoveryState")??"",[a]),k=(0,c.useMemo)(()=>"queued"===a.status?h?`Waiting in queue at position ${h}${i?` of ${i}`:""}.`:"Waiting in the launch queue.":"requeued_after_restart"===j?"This session was recovered after a backend restart and requeued automatically.":"reattach_pending"===j?"Reattaching the tmux-managed runtime after backend restart.":"detached_runtime"===j?"The backend restarted while the agent may still be running. Kill or archive this session before resuming.":"resume_required"===j?"This session was recovered after a backend restart. Send a message to resume in the same workspace.":"",[i,h,j,a.status]);return(0,b.jsxs)("div",{className:"space-y-3",children:[d&&(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{children:[(0,b.jsx)(T,{className:"h-4 w-4 text-[var(--accent)]"}),(0,b.jsx)("span",{className:"text-[12px] font-semibold uppercase tracking-[0.08em] text-[var(--text-faint)]",children:"Task Brief"})]}),(0,b.jsx)(K.CardContent,{children:(0,b.jsx)("p",{className:"whitespace-pre-wrap text-[13px] leading-relaxed text-[var(--text-normal)]",children:d})})]}),("queued"===a.status||j)&&(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{children:[(0,b.jsx)(O,{className:"h-4 w-4 text-[var(--accent)]"}),(0,b.jsx)("span",{className:"text-[12px] font-semibold uppercase tracking-[0.08em] text-[var(--text-faint)]",children:"Launch State"})]}),(0,b.jsxs)(K.CardContent,{className:"space-y-2",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(L.Badge,{variant:W[a.status]??"default",children:a.status}),h?(0,b.jsxs)(L.Badge,{variant:"info",children:["Queue #",h,i?` / ${i}`:""]}):null,j?(0,b.jsx)(L.Badge,{variant:"warning",children:j.replaceAll("_"," ")}):null]}),k?(0,b.jsx)("p",{className:"text-[13px] leading-relaxed text-[var(--text-normal)]",children:k}):null]})]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(a.branch||f)&&(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{children:[(0,b.jsx)(S.GitBranch,{className:"h-4 w-4 text-[var(--text-faint)]"}),(0,b.jsx)("span",{className:"text-[12px] font-semibold text-[var(--text-normal)]",children:"Workspace"})]}),(0,b.jsxs)(K.CardContent,{className:"space-y-2",children:[a.branch&&(0,b.jsxs)("div",{className:"surface-panel flex items-center gap-2 rounded-[var(--radius-sm)] border px-2.5 py-2",children:[(0,b.jsx)(S.GitBranch,{className:"h-3.5 w-3.5 text-[var(--text-faint)]"}),(0,b.jsx)(X,{text:a.branch})]}),f&&(0,b.jsxs)("div",{className:"surface-panel flex items-center gap-2 rounded-[var(--radius-sm)] border px-2.5 py-2",children:[(0,b.jsx)(R.FolderGit2,{className:"h-3.5 w-3.5 text-[var(--text-faint)]"}),(0,b.jsx)(X,{text:f})]})]})]}),(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{children:[(0,b.jsx)(V.AgentTileIcon,{seed:{label:e||"agent"},className:"h-6 w-6"}),(0,b.jsx)("span",{className:"text-[12px] font-semibold text-[var(--text-normal)]",children:"Session Status"})]}),(0,b.jsxs)(K.CardContent,{className:"space-y-2.5",children:[(0,b.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[(0,b.jsx)(L.Badge,{variant:W[a.status]??"default",children:a.status}),a.activity&&(0,b.jsx)(L.Badge,{variant:"info",children:a.activity}),a.attention&&(0,b.jsx)(L.Badge,{variant:"warning",children:a.attention})]}),(0,b.jsx)("p",{className:"text-[13px] text-[var(--text-normal)]",children:e||"Unknown agent"})]})]}),(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{children:[(0,b.jsx)(O,{className:"h-4 w-4 text-[var(--text-faint)]"}),(0,b.jsx)("span",{className:"text-[12px] font-semibold text-[var(--text-normal)]",children:"Timeline"})]}),(0,b.jsxs)(K.CardContent,{className:"space-y-2 text-[12px] text-[var(--text-muted)]",children:[(0,b.jsx)(aa,{icon:(0,b.jsx)(U,{className:"h-3.5 w-3.5"}),label:"Created",value:g.created}),(0,b.jsx)(aa,{icon:(0,b.jsx)(U,{className:"h-3.5 w-3.5"}),label:"Started",value:g.started}),(0,b.jsx)(aa,{icon:(0,b.jsx)(U,{className:"h-3.5 w-3.5"}),label:"Finished",value:g.finished}),(0,b.jsx)(aa,{icon:(0,b.jsx)(O,{className:"h-3.5 w-3.5"}),label:"Duration",value:g.duration}),(0,b.jsx)(aa,{icon:(0,b.jsx)(Q,{className:"h-3.5 w-3.5"}),label:"Estimated Cost",value:g.cost>0?`$${g.cost.toFixed(2)}`:"$0.00"})]})]})]})]})}function aa({icon:a,label:c,value:d}){return(0,b.jsxs)("div",{className:"surface-panel flex items-center gap-2 rounded-[var(--radius-sm)] border px-2.5 py-2",children:[(0,b.jsx)("span",{className:"text-[var(--text-faint)]",children:a}),(0,b.jsx)("span",{className:"min-w-[70px] text-[var(--text-faint)]",children:c}),(0,b.jsx)("span",{className:"ml-auto truncate text-right font-mono text-[11px] text-[var(--text-normal)]",children:d})]})}var ab=a.i(5784),ac=a.i(50522);let ad=(0,e.default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]),ae=(0,e.default)("file-code-corner",[["path",{d:"M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35",key:"1wthlu"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"m5 16-3 3 3 3",key:"331omg"}],["path",{d:"m9 22 3-3-3-3",key:"lsp7cz"}]]),af=(0,e.default)("file-plus-corner",[["path",{d:"M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35",key:"17jvcc"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M14 19h6",key:"bvotb8"}],["path",{d:"M17 16v6",key:"18yu1i"}]]);var ag=a.i(92596),ah=a.i(96101);let ai=(0,e.default)("git-compare",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["path",{d:"M11 18H8a2 2 0 0 1-2-2V9",key:"19pyzm"}]]),aj=(0,e.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var ak=a.i(15618),al=a.i(69520),am=a.i(87532);let an=(0,e.default)("text-wrap",[["path",{d:"m16 16-3 3 3 3",key:"117b85"}],["path",{d:"M3 12h14.5a1 1 0 0 1 0 7H13",key:"18xa6z"}],["path",{d:"M3 19h6",key:"1ygdsz"}],["path",{d:"M3 5h18",key:"1u36vt"}]]);var ao=a.i(33508),ap=a.i(9341),aq=a.i(69630);let ar={hasDiff:!1,generatedAt:"",source:"not-found",truncated:!1,files:[],untracked:[]};function as(a){return"modified"===a||"added"===a||"deleted"===a||"renamed"===a||"copy"===a||"binary"===a?a:"unknown"}function at(a){return"meta"===a||"hunk"===a||"context"===a||"add"===a||"remove"===a||"info"===a?a:"context"}function au(a){return"string"!=typeof a?"":a.trim().replace(/^\/+/,"").replace(/\/+/g,"/")||"unknown-file"}function av(a){let b=new Map;for(let c of a.files??[]){let a=au(c.path),d={path:a,status:as(c.status),additions:Number.isFinite(c.additions)?Math.max(0,c.additions):0,deletions:Number.isFinite(c.deletions)?Math.max(0,c.deletions):0,lines:Array.isArray(c.lines)?c.lines.map(a=>({kind:at(a.kind),oldLine:"number"==typeof a.oldLine&&Number.isFinite(a.oldLine)?a.oldLine:null,newLine:"number"==typeof a.newLine&&Number.isFinite(a.newLine)?a.newLine:null,text:"string"==typeof a.text?a.text:""})):[],untracked:!!c.untracked};b.set(a,d)}for(let c of a.untracked??[]){let a=au(c);b.has(a)||b.set(a,{path:a,status:"added",additions:0,deletions:0,lines:[],untracked:!0})}return[...b.values()].sort((a,b)=>a.path.localeCompare(b.path,void 0,{sensitivity:"base"}))}function aw(a,b){return{name:a,path:b,dirs:new Map,files:[]}}function ax(a){return"working-tree"===a?"Working Tree":"remote-pr"===a?"Remote PR":"Not Found"}function ay(a){return"add"===a?"text-[var(--vk-green)]":"remove"===a?"text-[var(--vk-red)]":"hunk"===a?"text-[var(--status-working)]":"meta"===a||"info"===a?"text-[var(--vk-text-muted)]":"text-[var(--vk-text-normal)]"}function az({sessionId:a}){let d=encodeURIComponent(a),[e,f]=(0,c.useState)(ar),[g,h]=(0,c.useState)(!0),[i,j]=(0,c.useState)(null),[k,l]=(0,c.useState)("changes"),[m,n]=(0,c.useState)(""),[o,p]=(0,c.useState)(""),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(null),[u,v]=(0,c.useState)(null),[w,x]=(0,c.useState)({}),[y,z]=(0,c.useState)({}),[A,B]=(0,c.useState)([]),[C,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)(!1),[G,H]=(0,c.useState)(null),[I,J]=(0,c.useState)(!1),[K,M]=(0,c.useState)(""),[N,O]=(0,c.useState)(!1),[P,Q]=(0,c.useState)(!1),[R,S]=(0,c.useState)(0),[T,U]=(0,c.useState)(!1),[V,W]=(0,c.useState)(null),X=(0,c.useRef)(!0),Y=(0,c.useRef)({}),Z=(0,c.useRef)(null),$=(0,c.useRef)(!1),_=(0,c.useCallback)(a=>av(a),[]),aa=(0,c.useCallback)(async()=>{try{let a=await fetch(`/api/sessions/${d}/diff`,{cache:"no-store"});if(!a.ok){if(404===a.status){if(!X.current)return;f(ar),j(null);return}let b=`Failed to fetch diff (${a.status})`;try{let c=await a.json();"string"==typeof c.error&&c.error.length>0&&(b=c.error)}catch{}throw Error(b)}let b=await a.json();if(!X.current)return;if(b.error)throw Error(b.error);let c={hasDiff:!!b.hasDiff,generatedAt:"string"==typeof b.generatedAt?b.generatedAt:"",source:"working-tree"===b.source||"remote-pr"===b.source?b.source:"not-found",truncated:!!b.truncated,files:Array.isArray(b.files)?b.files.map(a=>({path:au(a.path),status:as(a.status),additions:Number.isFinite(a.additions)?Math.max(0,Number(a.additions)):0,deletions:Number.isFinite(a.deletions)?Math.max(0,Number(a.deletions)):0,lines:Array.isArray(a.lines)?a.lines.map(a=>({kind:at(a.kind),oldLine:"number"==typeof a.oldLine&&Number.isFinite(a.oldLine)?a.oldLine:null,newLine:"number"==typeof a.newLine&&Number.isFinite(a.newLine)?a.newLine:null,text:"string"==typeof a.text?a.text:""})):[]})):[],untracked:Array.isArray(b.untracked)?b.untracked.filter(a=>"string"==typeof a):[]},e=_(c);f(a=>!function(a,b){if(a.hasDiff!==b.hasDiff||a.generatedAt!==b.generatedAt||a.source!==b.source||a.truncated!==b.truncated||!function(a,b){if(a===b)return!0;if(a.length!==b.length)return!1;for(let c=0;c<a.length;c+=1)if(a[c]!==b[c])return!1;return!0}(a.untracked,b.untracked)||a.files.length!==b.files.length)return!1;for(let c=0;c<a.files.length;c+=1){let d=a.files[c],e=b.files[c];if(d.path!==e.path||d.status!==e.status||d.additions!==e.additions||d.deletions!==e.deletions||!!d.untracked!=!!e.untracked||d.lines.length!==e.lines.length)return!1;for(let a=0;a<d.lines.length;a+=1){let b=d.lines[a],c=e.lines[a];if(b.kind!==c.kind||b.oldLine!==c.oldLine||b.newLine!==c.newLine||b.text!==c.text)return!1}}return!0}(a,c)?c:a),t(a=>a&&e.some(b=>b.path===a)?a:e[0]?.path??null),x(a=>{let b={...a};for(let a of e.slice(0,10))null==b[a.path]&&(b[a.path]=!1);return b}),j(null)}catch(a){X.current&&(f(ar),j(a instanceof Error?a.message:"Failed to load diff"))}finally{X.current&&h(!1)}},[d,_]),az=(0,c.useCallback)(async()=>{F(!0);try{let a=await fetch(`/api/sessions/${d}/files`,{cache:"no-store"});if(!a.ok){if(404===a.status){if(!X.current)return;B([]),D(!0),J(!1),H(null);return}let b=`Failed to load workspace files (${a.status})`;try{let c=await a.json();"string"==typeof c.error&&c.error.length>0&&(b=c.error)}catch{}throw Error(b)}let b=await a.json();if(!X.current)return;let c=Array.isArray(b.files)?b.files.filter(a=>"string"==typeof a&&a.trim().length>0):[];B(c),D(!0),J(!!b.truncated),H(null),v(a=>a&&c.includes(a)?a:c[0]??null)}catch(a){if(!X.current)return;B([]),D(!1),H(a instanceof Error?a.message:"Failed to load workspace files")}finally{X.current&&F(!1)}},[d]),aA=(0,c.useCallback)(async a=>{U(!0);try{let b=encodeURIComponent(a),c=await fetch(`/api/sessions/${d}/files?path=${b}`,{cache:"no-store"});if(!c.ok){if(404===c.status){if(!X.current)return;M(""),O(!1),Q(!1),S(0),W("File no longer exists in this workspace.");return}let a=`Failed to load file content (${c.status})`;try{let b=await c.json();"string"==typeof b.error&&b.error.length>0&&(a=b.error)}catch{}throw Error(a)}let e=await c.json();if(!X.current)return;M("string"==typeof e.content?e.content:""),O(!!e.binary),Q(!!e.truncated),S("number"==typeof e.size&&Number.isFinite(e.size)?Math.max(0,e.size):0),W(null)}catch(a){if(!X.current)return;M(""),O(!1),Q(!1),S(0),W(a instanceof Error?a.message:"Failed to load file content")}finally{X.current&&U(!1)}},[d]);(0,c.useEffect)(()=>{X.current=!0,Z.current=null,$.current=!1,aa();let b=(0,ap.subscribeToSnapshotEvents)(b=>{if(!X.current)return;let c=b.sessions.find(b=>b.id===a);if(!c)return;$.current=aq.TERMINAL_STATUSES.has(c.status);let d=`${c.status}:${c.lastActivityAt}`;Z.current!==d&&(Z.current=d,aa())}),c=null,d=()=>{let a="visible"!==document.visibilityState||$.current?3e4:15e3;c=window.setTimeout(async()=>{X.current&&(await aa(),X.current&&d())},a)};d();let e=()=>{Z.current=null,aa()},f=()=>{"visible"===document.visibilityState&&e()};return window.addEventListener("focus",e),document.addEventListener("visibilitychange",f),()=>{X.current=!1,b(),null!=c&&window.clearTimeout(c),window.removeEventListener("focus",e),document.removeEventListener("visibilitychange",f)}},[aa,a]),(0,c.useEffect)(()=>{Z.current=null,$.current=!1,h(!0),l("changes"),p(""),v(null),B([]),D(!1),F(!1),H(null),J(!1),M(""),O(!1),Q(!1),S(0),U(!1),W(null)},[a]),(0,c.useEffect)(()=>{"files"!==k||C||E||az()},[az,k,C,E]),(0,c.useEffect)(()=>{"files"!==k||u&&aA(u)},[aA,u,k]);let aB=(0,c.useMemo)(()=>av(e),[e]),aC=m.trim().toLowerCase(),aD=(0,c.useMemo)(()=>0===aC.length?aB:aB.filter(a=>a.path.toLowerCase().includes(aC)),[aB,aC]),aE=(0,c.useMemo)(()=>(function(a){let b=aw("","");for(let c of a){let a=c.path.split("/").filter(a=>a.length>0),d=a.pop()??c.path,e=b,f="";for(let b of a){f=f?`${f}/${b}`:b;let a=e.dirs.get(b);if(a){e=a;continue}let c=aw(b,f);e.dirs.set(b,c),e=c}e.files.push({kind:"file",name:d,path:c.path,additions:c.additions,deletions:c.deletions,status:c.status,untracked:!!c.untracked})}return function a(b){let c=[...[...b.dirs.values()].sort((a,b)=>a.name.localeCompare(b.name,void 0,{sensitivity:"base"})).map(a),...[...b.files].sort((a,b)=>a.name.localeCompare(b.name,void 0,{sensitivity:"base"}))],d=0,e=0,f=0;for(let a of c){if("dir"===a.kind){d+=a.additions,e+=a.deletions,f+=a.fileCount;continue}d+=a.additions,e+=a.deletions,f+=1}return{kind:"dir",name:b.name,path:b.path,additions:d,deletions:e,fileCount:f,children:c}}(b)})(aD),[aD]),aF=(0,c.useMemo)(()=>aB.reduce((a,b)=>a+Math.max(0,b.additions),0),[aB]),aG=(0,c.useMemo)(()=>aB.reduce((a,b)=>a+Math.max(0,b.deletions),0),[aB]),aH=(0,c.useMemo)(()=>s?aB.find(a=>a.path===s)??null:aB[0]??null,[aB,s]),aI=o.trim().toLowerCase(),aJ=(0,c.useMemo)(()=>0===aI.length?A:A.filter(a=>a.toLowerCase().includes(aI)),[A,aI]);function aK(a){t(a),x(b=>({...b,[a]:!0})),window.requestAnimationFrame(()=>{Y.current[a]?.scrollIntoView({behavior:"smooth",block:"start"})})}return(0,b.jsxs)("div",{className:"flex h-full min-h-0 flex-col overflow-hidden rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)]",children:[(0,b.jsxs)("div",{className:"flex h-[32px] shrink-0 items-center border-b border-[var(--vk-border)] px-2",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsx)(ai,{className:"h-[15px] w-[15px] text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"truncate text-[13px] font-medium text-[var(--vk-text-strong)]",children:"Review Diff"}),(0,b.jsx)(L.Badge,{variant:"outline",className:"h-[20px] px-1.5 text-[10px]",children:ax(e.source)})]}),(0,b.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,b.jsx)("span",{className:"hidden text-[11px] text-[var(--vk-text-muted)] md:inline",children:function(a){if(!a)return"Not generated";let b=new Date(a);return Number.isNaN(b.getTime())?"Not generated":b.toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}(e.generatedAt)}),(0,b.jsx)("button",{type:"button",onClick:()=>void aa(),disabled:g,className:"inline-flex h-[22px] w-[22px] items-center justify-center rounded-[3px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)] disabled:opacity-60","aria-label":"Refresh diff",children:(0,b.jsx)(al.RefreshCw,{className:`h-[14px] w-[14px] ${g?"animate-spin":""}`})}),(0,b.jsxs)("button",{type:"button",onClick:()=>r(a=>!a),className:`inline-flex h-[22px] items-center gap-1 rounded-[3px] px-1.5 text-[11px] ${q?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]"}`,"aria-label":"Toggle wrapped lines",children:[(0,b.jsx)(an,{className:"h-[14px] w-[14px]"}),"Wrap"]})]})]}),(0,b.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col xl:flex-row",children:[(0,b.jsxs)("section",{className:"flex min-h-0 min-w-0 flex-1 flex-col border-b border-[var(--vk-border)] xl:border-b-0 xl:border-r",children:[(0,b.jsxs)("div",{className:"flex h-[30px] shrink-0 items-center gap-2 border-b border-[var(--vk-border)] px-2 text-[11px] text-[var(--vk-text-muted)]",children:[(0,b.jsxs)("span",{children:[aB.length," files changed"]}),(0,b.jsxs)("span",{className:"inline-flex items-center gap-0.5 text-[var(--vk-green)]",children:[(0,b.jsx)(ak.Plus,{className:"h-[12px] w-[12px]"}),aF]}),(0,b.jsxs)("span",{className:"inline-flex items-center gap-0.5 text-[var(--vk-red)]",children:[(0,b.jsx)(aj,{className:"h-[12px] w-[12px]"}),aG]}),e.truncated&&(0,b.jsx)("span",{className:"ml-auto text-[var(--status-attention)]",children:"Output truncated"})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-auto bg-[var(--vk-bg-panel)]",children:[g&&0===aB.length&&!i&&(0,b.jsx)("div",{className:"flex h-full items-center justify-center p-8 text-[13px] text-[var(--vk-text-muted)]",children:"Loading session diff..."}),i&&(0,b.jsx)("div",{className:"flex h-full items-center justify-center p-8 text-center text-[13px] text-[var(--status-error)]",children:i}),!g&&!i&&0===aB.length&&(0,b.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-2 p-8 text-center",children:[(0,b.jsx)(ad,{className:"h-7 w-7 text-[var(--vk-text-muted)]"}),(0,b.jsx)("p",{className:"text-[13px] text-[var(--vk-text-muted)]",children:"No changed files in this session yet."})]}),!i&&aB.length>0&&aB.map(a=>{let c=w[a.path]??!1,d=aH?.path===a.path;return(0,b.jsxs)("div",{ref:b=>{Y.current[a.path]=b},className:`border-b border-[var(--vk-border)] ${d?"bg-[var(--vk-bg-active)]/40":"bg-[var(--vk-bg-panel)]"}`,children:[(0,b.jsxs)("div",{className:"flex min-h-[40px] items-center gap-2 px-2",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{var b;return b=a.path,void x(a=>{let c=a[b]??!1;return{...a,[b]:!c}})},className:"inline-flex h-[20px] w-[20px] items-center justify-center rounded-[3px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]","aria-label":c?`Collapse ${a.path}`:`Expand ${a.path}`,children:c?(0,b.jsx)(ab.ChevronDown,{className:"h-[15px] w-[15px]"}):(0,b.jsx)(ac.ChevronRight,{className:"h-[15px] w-[15px]"})}),(0,b.jsx)("span",{className:`inline-flex h-[23px] min-w-[58px] items-center justify-center rounded-[3px] border px-1.5 text-[11px] ${a.untracked||"added"===a.status?"border-[rgba(84,176,79,0.35)] text-[var(--vk-green)]":"deleted"===a.status?"border-[rgba(210,81,81,0.35)] text-[var(--vk-red)]":"renamed"===a.status||"copy"===a.status?"border-[rgba(108,168,255,0.35)] text-[var(--status-working)]":"binary"===a.status?"border-[rgba(210,160,59,0.35)] text-[var(--status-attention)]":"border-[var(--vk-border)] text-[var(--vk-text-muted)]"}`,children:a.untracked?"Untracked":"added"===a.status?"Added":"deleted"===a.status?"Deleted":"renamed"===a.status?"Renamed":"copy"===a.status?"Copied":"binary"===a.status?"Binary":"modified"===a.status?"Modified":"Changed"}),(0,b.jsx)("button",{type:"button",onClick:()=>aK(a.path),className:`min-w-0 flex-1 truncate text-left font-mono text-[12px] ${d?"text-[var(--vk-text-strong)]":"text-[var(--vk-text-normal)]"}`,children:a.path}),(0,b.jsxs)("div",{className:"flex items-center gap-2 font-mono text-[11px]",children:[a.additions>0&&(0,b.jsxs)("span",{className:"text-[var(--vk-green)]",children:["+",a.additions]}),a.deletions>0&&(0,b.jsxs)("span",{className:"text-[var(--vk-red)]",children:["-",a.deletions]}),0===a.additions&&0===a.deletions&&(0,b.jsx)("span",{className:"text-[var(--vk-text-muted)]",children:"0"})]})]}),c&&(0,b.jsx)("div",{className:"border-t border-[var(--vk-border)] bg-[var(--vk-bg-outer)]/30",children:0===a.lines.length?(0,b.jsx)("div",{className:"px-2 py-2 font-mono text-[11px] text-[var(--vk-text-muted)]",children:a.untracked?"Untracked file (line-level diff unavailable until staged).":"No line-level diff output for this file."}):(0,b.jsx)("div",{className:q?"":"overflow-x-auto",children:(0,b.jsxs)("div",{className:q?"":"min-w-[760px]",children:[(0,b.jsxs)("div",{className:"grid grid-cols-[56px_56px_20px_minmax(0,1fr)] border-b border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-2 py-1 font-mono text-[10px] uppercase tracking-wide text-[var(--vk-text-muted)]",children:[(0,b.jsx)("div",{children:"Old"}),(0,b.jsx)("div",{children:"New"}),(0,b.jsx)("div",{}),(0,b.jsx)("div",{children:"Line"})]}),a.lines.map((c,d)=>{var e,f;return(0,b.jsxs)("div",{className:`grid grid-cols-[56px_56px_20px_minmax(0,1fr)] border-b border-[var(--vk-border)] px-2 py-[2px] font-mono text-[11px] last:border-b-0 ${"add"===(e=c.kind)?"bg-[rgba(84,176,79,0.18)]":"remove"===e?"bg-[rgba(210,81,81,0.18)]":"hunk"===e?"bg-[rgba(108,168,255,0.12)]":""}`,children:[(0,b.jsx)("div",{className:"text-[var(--vk-text-muted)]",children:c.oldLine??""}),(0,b.jsx)("div",{className:"text-[var(--vk-text-muted)]",children:c.newLine??""}),(0,b.jsx)("div",{className:ay(c.kind),children:"add"===(f=c.kind)?"+":"remove"===f?"-":"hunk"===f?"@":"info"===f?"i":""}),(0,b.jsx)("div",{className:`${ay(c.kind)} ${q?"whitespace-pre-wrap break-words":"whitespace-pre"}`,children:c.text})]},`${a.path}-${d}-${c.oldLine??"x"}-${c.newLine??"y"}`)})]})})})]},a.path)})]})]}),(0,b.jsxs)("aside",{className:"flex min-h-0 w-full shrink-0 flex-col bg-[var(--vk-bg-panel)] xl:w-[299px]",children:[(0,b.jsxs)("div",{className:"flex h-[32px] items-center gap-1 border-b border-[var(--vk-border)] p-1",children:[(0,b.jsx)("button",{type:"button",onClick:()=>l("changes"),className:`inline-flex h-[24px] items-center rounded-[3px] px-2 text-[12px] ${"changes"===k?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]"}`,children:"Changes"}),(0,b.jsx)("button",{type:"button",onClick:()=>l("files"),className:`inline-flex h-[24px] items-center rounded-[3px] px-2 text-[12px] ${"files"===k?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]"}`,children:"Files"})]}),"changes"===k?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"border-b border-[var(--vk-border)] p-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-2 py-[5px]",children:[(0,b.jsx)(am.Search,{className:"h-[15px] w-[15px] text-[var(--vk-text-muted)]"}),(0,b.jsx)("input",{type:"text",value:m,onChange:a=>n(a.target.value),placeholder:"Search files...",className:"h-[20px] w-full bg-transparent text-[14px] text-[var(--vk-text-normal)] outline-none placeholder:text-[var(--vk-text-muted)]"}),m.length>0&&(0,b.jsx)("button",{type:"button",onClick:()=>n(""),className:"inline-flex h-[17px] w-[17px] items-center justify-center rounded-[3px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]","aria-label":"Clear file search",children:(0,b.jsx)(ao.X,{className:"h-[12px] w-[12px]"})})]})}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-auto",children:0===aD.length?(0,b.jsx)("div",{className:"px-3 py-3 text-[13px] text-[var(--vk-text-muted)]",children:aC.length>0?"No files match the current search.":"No changed files."}):(0,b.jsx)("div",{className:"py-1",children:function a(c,d=0){let e=[];for(let f of c){if("dir"===f.kind){let c=!!y[f.path];e.push((0,b.jsxs)("button",{type:"button",onClick:()=>(function(a){z(b=>({...b,[a]:!b[a]}))})(f.path),className:"flex h-[26px] w-full items-center gap-1.5 pr-2 text-left text-[12px] text-[var(--vk-text-normal)] hover:bg-[var(--vk-bg-hover)]",style:{paddingLeft:`${8+14*d}px`},children:[c?(0,b.jsx)(ac.ChevronRight,{className:"h-3.5 w-3.5 shrink-0 text-[var(--vk-text-muted)]"}):(0,b.jsx)(ab.ChevronDown,{className:"h-3.5 w-3.5 shrink-0 text-[var(--vk-text-muted)]"}),c?(0,b.jsx)(ag.Folder,{className:"h-3.5 w-3.5 shrink-0 text-[var(--vk-text-muted)]"}):(0,b.jsx)(ah.FolderOpen,{className:"h-3.5 w-3.5 shrink-0 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate",children:f.name}),(0,b.jsx)("span",{className:"shrink-0 font-mono text-[11px] text-[var(--vk-text-muted)]",children:f.fileCount})]},`dir-${f.path}`)),c||e.push(...a(f.children,d+1));continue}let c=f.path===s;e.push((0,b.jsxs)("button",{type:"button",onClick:()=>aK(f.path),className:`flex h-[26px] w-full items-center gap-1.5 pr-2 text-left text-[12px] transition-colors ${c?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-normal)] hover:bg-[var(--vk-bg-hover)]"}`,style:{paddingLeft:`${8+14*d}px`},children:[(0,b.jsx)("span",{className:"inline-flex w-4 shrink-0 justify-center",children:f.untracked?(0,b.jsx)(af,{className:"h-3.5 w-3.5 text-[var(--vk-green)]"}):(0,b.jsx)(ae,{className:"h-3.5 w-3.5 text-[var(--vk-text-muted)]"})}),(0,b.jsx)("span",{className:"min-w-0 flex-1 truncate",children:f.name}),f.additions>0&&(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[11px] text-[var(--vk-green)]",children:["+",f.additions]}),f.deletions>0&&(0,b.jsxs)("span",{className:"shrink-0 font-mono text-[11px] text-[var(--vk-red)]",children:["-",f.deletions]})]},`file-${f.path}`))}return e}(aE.children)})}),(0,b.jsxs)("div",{className:"border-t border-[var(--vk-border)] p-2",children:[(0,b.jsx)("div",{className:"text-[16px] font-medium text-[var(--vk-text-normal)]",children:"Git"}),(0,b.jsxs)("div",{className:"mt-2 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-2 py-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between text-[12px] text-[var(--vk-text-muted)]",children:[(0,b.jsx)("span",{children:"Files"}),(0,b.jsx)("span",{className:"font-mono text-[var(--vk-text-normal)]",children:aB.length})]}),(0,b.jsxs)("div",{className:"mt-1 flex items-center justify-between text-[12px]",children:[(0,b.jsx)("span",{className:"text-[var(--vk-text-muted)]",children:"Added"}),(0,b.jsxs)("span",{className:"font-mono text-[var(--vk-green)]",children:["+",aF]})]}),(0,b.jsxs)("div",{className:"mt-1 flex items-center justify-between text-[12px]",children:[(0,b.jsx)("span",{className:"text-[var(--vk-text-muted)]",children:"Deleted"}),(0,b.jsxs)("span",{className:"font-mono text-[var(--vk-red)]",children:["-",aG]})]}),(0,b.jsxs)("div",{className:"mt-1 flex items-center justify-between text-[12px]",children:[(0,b.jsx)("span",{className:"text-[var(--vk-text-muted)]",children:"Source"}),(0,b.jsx)("span",{className:"font-mono text-[var(--vk-text-normal)]",children:ax(e.source)})]})]})]})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"border-b border-[var(--vk-border)] p-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-2 py-[5px]",children:[(0,b.jsx)(am.Search,{className:"h-[15px] w-[15px] text-[var(--vk-text-muted)]"}),(0,b.jsx)("input",{type:"text",value:o,onChange:a=>p(a.target.value),placeholder:"Search all files...",className:"h-[20px] w-full bg-transparent text-[14px] text-[var(--vk-text-normal)] outline-none placeholder:text-[var(--vk-text-muted)]"}),o.length>0&&(0,b.jsx)("button",{type:"button",onClick:()=>p(""),className:"inline-flex h-[17px] w-[17px] items-center justify-center rounded-[3px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)]","aria-label":"Clear workspace file search",children:(0,b.jsx)(ao.X,{className:"h-[12px] w-[12px]"})})]})}),(0,b.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col",children:[(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-auto border-b border-[var(--vk-border)]",children:[E&&(0,b.jsx)("div",{className:"px-3 py-3 text-[13px] text-[var(--vk-text-muted)]",children:"Loading workspace files..."}),G&&(0,b.jsx)("div",{className:"px-3 py-3 text-[13px] text-[var(--status-error)]",children:G}),!E&&!G&&0===aJ.length&&(0,b.jsx)("div",{className:"px-3 py-3 text-[13px] text-[var(--vk-text-muted)]",children:aI.length>0?"No files match the current search.":"No files found."}),!E&&!G&&aJ.length>0&&(0,b.jsx)("div",{className:"py-1",children:aJ.map(a=>{let c=a===u,d=a.split("/").pop()??a;return(0,b.jsxs)("button",{type:"button",onClick:()=>v(a),className:`flex h-[26px] w-full items-center gap-1.5 px-2 text-left text-[12px] ${c?"bg-[var(--vk-bg-active)] text-[var(--vk-text-strong)]":"text-[var(--vk-text-normal)] hover:bg-[var(--vk-bg-hover)]"}`,children:[(0,b.jsx)(ae,{className:"h-3.5 w-3.5 shrink-0 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"truncate",children:d})]},a)})})]}),(0,b.jsxs)("div",{className:"min-h-0 flex-1 overflow-auto bg-[var(--vk-bg-main)] p-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between border-b border-[var(--vk-border)] pb-2",children:[(0,b.jsx)("span",{className:"truncate font-mono text-[11px] text-[var(--vk-text-normal)]",children:u??"Select a file"}),R>0&&(0,b.jsxs)("span",{className:"ml-2 shrink-0 font-mono text-[10px] text-[var(--vk-text-muted)]",children:[R.toLocaleString()," bytes"]})]}),I&&(0,b.jsx)("p",{className:"pt-2 text-[11px] text-[var(--status-attention)]",children:"File list truncated to the first 4000 files."}),T&&(0,b.jsx)("p",{className:"pt-2 text-[12px] text-[var(--vk-text-muted)]",children:"Loading file content..."}),V&&(0,b.jsx)("p",{className:"pt-2 text-[12px] text-[var(--status-error)]",children:V}),!T&&!V&&u&&N&&(0,b.jsx)("p",{className:"pt-2 text-[12px] text-[var(--vk-text-muted)]",children:"Binary file preview is not available."}),!T&&!V&&u&&!N&&K.length>0&&(0,b.jsx)("pre",{className:"pt-2 whitespace-pre-wrap break-words font-mono text-[11px] text-[var(--vk-text-normal)]",children:K}),!T&&!V&&u&&!N&&0===K.length&&(0,b.jsx)("p",{className:"pt-2 text-[12px] text-[var(--vk-text-muted)]",children:"File is empty."}),P&&(0,b.jsx)("p",{className:"pt-2 text-[11px] text-[var(--status-attention)]",children:"Preview truncated to 1 MB."})]})]})]})]})]})]})}let aA=(0,e.default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),aB=(0,e.default)("boxes",[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]]);var aC=a.i(77156);let aD=(0,e.default)("file-braces-corner",[["path",{d:"M14 22h4a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v6",key:"14cnrg"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M5 14a1 1 0 0 0-1 1v2a1 1 0 0 1-1 1 1 1 0 0 1 1 1v2a1 1 0 0 0 1 1",key:"sr0ebq"}],["path",{d:"M9 22a1 1 0 0 0 1-1v-2a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-2a1 1 0 0 0-1-1",key:"w793db"}]]);var aE=a.i(96221);let aF=(0,e.default)("mouse-pointer-click",[["path",{d:"M14 4.1 12 6",key:"ita8i4"}],["path",{d:"m5.1 8-2.9-.8",key:"1go3kf"}],["path",{d:"m6 12-1.9 2",key:"mnht97"}],["path",{d:"M7.2 2.2 8 5.1",key:"1cfko1"}],["path",{d:"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z",key:"s0h3yz"}]]),aG=(0,e.default)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]),aH=(0,e.default)("waypoints",[["path",{d:"m10.586 5.414-5.172 5.172",key:"4mc350"}],["path",{d:"m18.586 13.414-5.172 5.172",key:"8c96vv"}],["path",{d:"M6 12h12",key:"8npq4p"}],["circle",{cx:"12",cy:"20",r:"2",key:"144qzu"}],["circle",{cx:"12",cy:"4",r:"2",key:"muu5ef"}],["circle",{cx:"20",cy:"12",r:"2",key:"1xzzfp"}],["circle",{cx:"4",cy:"12",r:"2",key:"1hvhnz"}]]);var aI=a.i(71541),aJ=a.i(70121),aK=a.i(46872),aL=a.i(72752),aM="ScrollArea",[aN,aO]=(0,k.createContextScope)(aM),[aP,aQ]=aN(aM),aR=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,type:f="hover",dir:g,scrollHideDelay:h=600,...i}=a,[j,k]=c.useState(null),[l,m]=c.useState(null),[p,q]=c.useState(null),[r,s]=c.useState(null),[t,u]=c.useState(null),[v,w]=c.useState(0),[x,y]=c.useState(0),[z,A]=c.useState(!1),[B,C]=c.useState(!1),D=(0,aJ.useComposedRefs)(d,a=>k(a)),E=(0,o.useDirection)(g);return(0,b.jsx)(aP,{scope:e,type:f,dir:E,scrollHideDelay:h,scrollArea:j,viewport:l,onViewportChange:m,content:p,onContentChange:q,scrollbarX:r,onScrollbarXChange:s,scrollbarXEnabled:z,onScrollbarXEnabledChange:A,scrollbarY:t,onScrollbarYChange:u,scrollbarYEnabled:B,onScrollbarYEnabledChange:C,onCornerWidthChange:w,onCornerHeightChange:y,children:(0,b.jsx)(n.Primitive.div,{dir:E,...i,ref:D,style:{position:"relative","--radix-scroll-area-corner-width":v+"px","--radix-scroll-area-corner-height":x+"px",...a.style}})})});aR.displayName=aM;var aS="ScrollAreaViewport",aT=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,children:f,nonce:g,...h}=a,i=aQ(aS,e),j=c.useRef(null),k=(0,aJ.useComposedRefs)(d,j,i.onViewportChange);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:g}),(0,b.jsx)(n.Primitive.div,{"data-radix-scroll-area-viewport":"",...h,ref:k,style:{overflowX:i.scrollbarXEnabled?"scroll":"hidden",overflowY:i.scrollbarYEnabled?"scroll":"hidden",...a.style},children:(0,b.jsx)("div",{ref:i.onContentChange,style:{minWidth:"100%",display:"table"},children:f})})]})});aT.displayName=aS;var aU="ScrollAreaScrollbar",aV=c.forwardRef((a,d)=>{let{forceMount:e,...f}=a,g=aQ(aU,a.__scopeScrollArea),{onScrollbarXEnabledChange:h,onScrollbarYEnabledChange:i}=g,j="horizontal"===a.orientation;return c.useEffect(()=>(j?h(!0):i(!0),()=>{j?h(!1):i(!1)}),[j,h,i]),"hover"===g.type?(0,b.jsx)(aW,{...f,ref:d,forceMount:e}):"scroll"===g.type?(0,b.jsx)(aX,{...f,ref:d,forceMount:e}):"auto"===g.type?(0,b.jsx)(aY,{...f,ref:d,forceMount:e}):"always"===g.type?(0,b.jsx)(aZ,{...f,ref:d}):null});aV.displayName=aU;var aW=c.forwardRef((a,d)=>{let{forceMount:e,...f}=a,g=aQ(aU,a.__scopeScrollArea),[h,i]=c.useState(!1);return c.useEffect(()=>{let a=g.scrollArea,b=0;if(a){let c=()=>{window.clearTimeout(b),i(!0)},d=()=>{b=window.setTimeout(()=>i(!1),g.scrollHideDelay)};return a.addEventListener("pointerenter",c),a.addEventListener("pointerleave",d),()=>{window.clearTimeout(b),a.removeEventListener("pointerenter",c),a.removeEventListener("pointerleave",d)}}},[g.scrollArea,g.scrollHideDelay]),(0,b.jsx)(m.Presence,{present:e||h,children:(0,b.jsx)(aY,{"data-state":h?"visible":"hidden",...f,ref:d})})}),aX=c.forwardRef((a,d)=>{var e;let{forceMount:f,...g}=a,h=aQ(aU,a.__scopeScrollArea),i="horizontal"===a.orientation,k=bf(()=>n("SCROLL_END"),100),[l,n]=(e={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},c.useReducer((a,b)=>e[a][b]??a,"hidden"));return c.useEffect(()=>{if("idle"===l){let a=window.setTimeout(()=>n("HIDE"),h.scrollHideDelay);return()=>window.clearTimeout(a)}},[l,h.scrollHideDelay,n]),c.useEffect(()=>{let a=h.viewport,b=i?"scrollLeft":"scrollTop";if(a){let c=a[b],d=()=>{let d=a[b];c!==d&&(n("SCROLL"),k()),c=d};return a.addEventListener("scroll",d),()=>a.removeEventListener("scroll",d)}},[h.viewport,i,n,k]),(0,b.jsx)(m.Presence,{present:f||"hidden"!==l,children:(0,b.jsx)(aZ,{"data-state":"hidden"===l?"hidden":"visible",...g,ref:d,onPointerEnter:(0,j.composeEventHandlers)(a.onPointerEnter,()=>n("POINTER_ENTER")),onPointerLeave:(0,j.composeEventHandlers)(a.onPointerLeave,()=>n("POINTER_LEAVE"))})})}),aY=c.forwardRef((a,d)=>{let e=aQ(aU,a.__scopeScrollArea),{forceMount:f,...g}=a,[h,i]=c.useState(!1),j="horizontal"===a.orientation,k=bf(()=>{if(e.viewport){let a=e.viewport.offsetWidth<e.viewport.scrollWidth,b=e.viewport.offsetHeight<e.viewport.scrollHeight;i(j?a:b)}},10);return bg(e.viewport,k),bg(e.content,k),(0,b.jsx)(m.Presence,{present:f||h,children:(0,b.jsx)(aZ,{"data-state":h?"visible":"hidden",...g,ref:d})})}),aZ=c.forwardRef((a,d)=>{let{orientation:e="vertical",...f}=a,g=aQ(aU,a.__scopeScrollArea),h=c.useRef(null),i=c.useRef(0),[j,k]=c.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=ba(j.viewport,j.content),m={...f,sizes:j,onSizesChange:k,hasThumb:!!(l>0&&l<1),onThumbChange:a=>h.current=a,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:a=>i.current=a};function n(a,b){return function(a,b,c,d="ltr"){let e=bb(c),f=b||e/2,g=c.scrollbar.paddingStart+f,h=c.scrollbar.size-c.scrollbar.paddingEnd-(e-f),i=c.content-c.viewport;return bd([g,h],"ltr"===d?[0,i]:[-1*i,0])(a)}(a,i.current,j,b)}return"horizontal"===e?(0,b.jsx)(a$,{...m,ref:d,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=bc(g.viewport.scrollLeft,j,g.dir);h.current.style.transform=`translate3d(${a}px, 0, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollLeft=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollLeft=n(a,g.dir))}}):"vertical"===e?(0,b.jsx)(a_,{...m,ref:d,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=bc(g.viewport.scrollTop,j);h.current.style.transform=`translate3d(0, ${a}px, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollTop=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollTop=n(a))}}):null}),a$=c.forwardRef((a,d)=>{let{sizes:e,onSizesChange:f,...g}=a,h=aQ(aU,a.__scopeScrollArea),[i,j]=c.useState(),k=c.useRef(null),l=(0,aJ.useComposedRefs)(d,k,h.onScrollbarXChange);return c.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,b.jsx)(a2,{"data-orientation":"horizontal",...g,ref:l,sizes:e,style:{bottom:0,left:"rtl"===h.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===h.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":bb(e)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.x),onDragScroll:b=>a.onDragScroll(b.x),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollLeft+b.deltaX;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollWidth,viewport:h.viewport.offsetWidth,scrollbar:{size:k.current.clientWidth,paddingStart:a9(i.paddingLeft),paddingEnd:a9(i.paddingRight)}})}})}),a_=c.forwardRef((a,d)=>{let{sizes:e,onSizesChange:f,...g}=a,h=aQ(aU,a.__scopeScrollArea),[i,j]=c.useState(),k=c.useRef(null),l=(0,aJ.useComposedRefs)(d,k,h.onScrollbarYChange);return c.useEffect(()=>{k.current&&j(getComputedStyle(k.current))},[k]),(0,b.jsx)(a2,{"data-orientation":"vertical",...g,ref:l,sizes:e,style:{top:0,right:"ltr"===h.dir?0:void 0,left:"rtl"===h.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":bb(e)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.y),onDragScroll:b=>a.onDragScroll(b.y),onWheelScroll:(b,c)=>{if(h.viewport){var d,e;let f=h.viewport.scrollTop+b.deltaY;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{k.current&&h.viewport&&i&&f({content:h.viewport.scrollHeight,viewport:h.viewport.offsetHeight,scrollbar:{size:k.current.clientHeight,paddingStart:a9(i.paddingTop),paddingEnd:a9(i.paddingBottom)}})}})}),[a0,a1]=aN(aU),a2=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,sizes:f,hasThumb:g,onThumbChange:h,onThumbPointerUp:i,onThumbPointerDown:k,onThumbPositionChange:l,onDragScroll:m,onWheelScroll:o,onResize:p,...q}=a,r=aQ(aU,e),[s,t]=c.useState(null),u=(0,aJ.useComposedRefs)(d,a=>t(a)),v=c.useRef(null),w=c.useRef(""),x=r.viewport,y=f.content-f.viewport,z=(0,aK.useCallbackRef)(o),A=(0,aK.useCallbackRef)(l),B=bf(p,10);function C(a){v.current&&m({x:a.clientX-v.current.left,y:a.clientY-v.current.top})}return c.useEffect(()=>{let a=a=>{let b=a.target;s?.contains(b)&&z(a,y)};return document.addEventListener("wheel",a,{passive:!1}),()=>document.removeEventListener("wheel",a,{passive:!1})},[x,s,y,z]),c.useEffect(A,[f,A]),bg(s,B),bg(r.content,B),(0,b.jsx)(a0,{scope:e,scrollbar:s,hasThumb:g,onThumbChange:(0,aK.useCallbackRef)(h),onThumbPointerUp:(0,aK.useCallbackRef)(i),onThumbPositionChange:A,onThumbPointerDown:(0,aK.useCallbackRef)(k),children:(0,b.jsx)(n.Primitive.div,{...q,ref:u,style:{position:"absolute",...q.style},onPointerDown:(0,j.composeEventHandlers)(a.onPointerDown,a=>{0===a.button&&(a.target.setPointerCapture(a.pointerId),v.current=s.getBoundingClientRect(),w.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",r.viewport&&(r.viewport.style.scrollBehavior="auto"),C(a))}),onPointerMove:(0,j.composeEventHandlers)(a.onPointerMove,C),onPointerUp:(0,j.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),document.body.style.webkitUserSelect=w.current,r.viewport&&(r.viewport.style.scrollBehavior=""),v.current=null})})})}),a3="ScrollAreaThumb",a4=c.forwardRef((a,c)=>{let{forceMount:d,...e}=a,f=a1(a3,a.__scopeScrollArea);return(0,b.jsx)(m.Presence,{present:d||f.hasThumb,children:(0,b.jsx)(a5,{ref:c,...e})})}),a5=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,style:f,...g}=a,h=aQ(a3,e),i=a1(a3,e),{onThumbPositionChange:k}=i,l=(0,aJ.useComposedRefs)(d,a=>i.onThumbChange(a)),m=c.useRef(void 0),o=bf(()=>{m.current&&(m.current(),m.current=void 0)},100);return c.useEffect(()=>{let a=h.viewport;if(a){let b=()=>{o(),m.current||(m.current=be(a,k),k())};return k(),a.addEventListener("scroll",b),()=>a.removeEventListener("scroll",b)}},[h.viewport,o,k]),(0,b.jsx)(n.Primitive.div,{"data-state":i.hasThumb?"visible":"hidden",...g,ref:l,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...f},onPointerDownCapture:(0,j.composeEventHandlers)(a.onPointerDownCapture,a=>{let b=a.target.getBoundingClientRect(),c=a.clientX-b.left,d=a.clientY-b.top;i.onThumbPointerDown({x:c,y:d})}),onPointerUp:(0,j.composeEventHandlers)(a.onPointerUp,i.onThumbPointerUp)})});a4.displayName=a3;var a6="ScrollAreaCorner",a7=c.forwardRef((a,c)=>{let d=aQ(a6,a.__scopeScrollArea),e=!!(d.scrollbarX&&d.scrollbarY);return"scroll"!==d.type&&e?(0,b.jsx)(a8,{...a,ref:c}):null});a7.displayName=a6;var a8=c.forwardRef((a,d)=>{let{__scopeScrollArea:e,...f}=a,g=aQ(a6,e),[h,i]=c.useState(0),[j,k]=c.useState(0),l=!!(h&&j);return bg(g.scrollbarX,()=>{let a=g.scrollbarX?.offsetHeight||0;g.onCornerHeightChange(a),k(a)}),bg(g.scrollbarY,()=>{let a=g.scrollbarY?.offsetWidth||0;g.onCornerWidthChange(a),i(a)}),l?(0,b.jsx)(n.Primitive.div,{...f,ref:d,style:{width:h,height:j,position:"absolute",right:"ltr"===g.dir?0:void 0,left:"rtl"===g.dir?0:void 0,bottom:0,...a.style}}):null});function a9(a){return a?parseInt(a,10):0}function ba(a,b){let c=a/b;return isNaN(c)?0:c}function bb(a){let b=ba(a.viewport,a.content),c=a.scrollbar.paddingStart+a.scrollbar.paddingEnd;return Math.max((a.scrollbar.size-c)*b,18)}function bc(a,b,c="ltr"){let d=bb(b),e=b.scrollbar.paddingStart+b.scrollbar.paddingEnd,f=b.scrollbar.size-e,g=b.content-b.viewport,h=function(a,[b,c]){return Math.min(c,Math.max(b,a))}(a,"ltr"===c?[0,g]:[-1*g,0]);return bd([0,g],[0,f-d])(h)}function bd(a,b){return c=>{if(a[0]===a[1]||b[0]===b[1])return b[0];let d=(b[1]-b[0])/(a[1]-a[0]);return b[0]+d*(c-a[0])}}var be=(a,b=()=>{})=>{let c={left:a.scrollLeft,top:a.scrollTop},d=0;return!function e(){let f={left:a.scrollLeft,top:a.scrollTop},g=c.left!==f.left,h=c.top!==f.top;(g||h)&&b(),c=f,d=window.requestAnimationFrame(e)}(),()=>window.cancelAnimationFrame(d)};function bf(a,b){let d=(0,aK.useCallbackRef)(a),e=c.useRef(0);return c.useEffect(()=>()=>window.clearTimeout(e.current),[]),c.useCallback(()=>{window.clearTimeout(e.current),e.current=window.setTimeout(d,b)},[d,b])}function bg(a,b){let c=(0,aK.useCallbackRef)(b);(0,aL.useLayoutEffect)(()=>{let b=0;if(a){let d=new ResizeObserver(()=>{cancelAnimationFrame(b),b=window.requestAnimationFrame(c)});return d.observe(a),()=>{window.cancelAnimationFrame(b),d.unobserve(a)}}},[a,c])}let bh=(0,c.forwardRef)(({className:a,children:c,...d},e)=>(0,b.jsxs)(aR,{ref:e,className:(0,G.cn)("relative overflow-hidden",a),...d,children:[(0,b.jsx)(aT,{className:"h-full w-full rounded-[inherit]",children:c}),(0,b.jsx)(bi,{}),(0,b.jsx)(a7,{})]}));bh.displayName="ScrollArea";let bi=(0,c.forwardRef)(({className:a,orientation:c="vertical",...d},e)=>(0,b.jsx)(aV,{ref:e,orientation:c,className:(0,G.cn)("flex touch-none select-none","vertical"===c&&"h-full w-2.5 border-l border-l-transparent p-px","horizontal"===c&&"h-2.5 flex-col border-t border-t-transparent p-px",a),...d,children:(0,b.jsx)(a4,{className:"relative flex-1 rounded-full bg-[color:color-mix(in_srgb,var(--border-strong)_75%,transparent)] hover:bg-[var(--border-strong)]"})}));bi.displayName="ScrollBar";let bj=new Map([["Backspace","Backspace"],["Delete","Delete"],["Enter","Enter"],["Tab","Tab"],["Escape","Escape"],["ArrowUp","ArrowUp"],["ArrowDown","ArrowDown"],["ArrowLeft","ArrowLeft"],["ArrowRight","ArrowRight"],["Home","Home"],["End","End"],["PageUp","PageUp"],["PageDown","PageDown"],[" ","Space"]]);function bk(a){let b=Date.parse(a);return Number.isNaN(b)?a:new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit",second:"2-digit"}).format(new Date(b))}function bl(a,b=120){return a.length<=b?a:`${a.slice(0,b-1)}…`}function bm(a,b=180){let c=bl((a??"").replace(/\s+/g," ").trim(),b);return c?`"${c.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:null}function bn(a){return a.map(a=>a?.trim()).filter(a=>!!a).join("; ")}function bo(a,b){return[`[${a}]`,...b.map(a=>a?.trim()).filter(a=>!!a)].join("\n")}function bp(a,b){return{inlineText:bn(["[Browser selection]",`selector=${bm(a.selector,220)}`,`tag=${a.tag}`,a.role?`role=${a.role}`:null,a.name?`name=${bm(a.name,140)}`:null,a.text?`text=${bm(a.text,180)}`:null,a.frameName?`frame=${bm(a.frameName,120)}`:null,b?`page=${bm(b,220)}`:null]),draftText:bo("Browser selection",[b?`Page: ${b}`:null,`Frame: ${a.frameName} (${a.frameUrl})`,`Selector: ${a.selector}`,`Tag: ${a.tag}`,a.role?`Role: ${a.role}`:null,a.name?`Name: ${a.name}`:null,a.text?`Text: ${a.text}`:null,a.htmlPreview?`HTML preview: ${a.htmlPreview}`:null]),successMessage:"Queued the selected element for terminal input."}}function bq(a,b,c,d){let e=b.slice("console"===a?-8:-10),f=e.map(b=>{let c=[b.level,bm(b.message,120)];return"network"===a&&(c.unshift(b.method??"GET"),c.push("number"==typeof b.status?String(b.status):null),c.push(b.url?bm(b.url,120):null)),c.filter(Boolean).join(" ")});return{inlineText:bn(["console"===a?"[Browser console]":"[Browser network]",c?`page=${bm(c,220)}`:null,d?`selected=${bm(d.selector,180)}`:null,`entries=${bm(f.join(" | "),520)}`]),draftText:bo("console"===a?"Browser console logs":"Browser network logs",[c?`Page: ${c}`:null,d?`Selected element: ${d.selector}`:null,...e.map(b=>"console"===a?`- ${bk(b.timestamp)} ${b.level}: ${b.message}`:`- ${bk(b.timestamp)} ${b.method??"GET"} ${b.status??"-"} ${b.url??b.message}`)]),successMessage:"console"===a?"Queued recent console logs for terminal input.":"Queued recent network logs for terminal input."}}function br({sessionId:a,active:d,onQueueTerminalInsert:e,onConnectionChange:f}){let[h,j]=(0,c.useState)(null),[k,l]=(0,c.useState)([]),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(!1),[q,r]=(0,c.useState)(!0),[s,t]=(0,c.useState)(!0),[u,v]=(0,c.useState)(null),[w,x]=(0,c.useState)(null),[y,z]=(0,c.useState)(null),[A,B]=(0,c.useState)(null),[C,D]=(0,c.useState)("navigate"),[E,F]=(0,c.useState)(null),[H,I]=(0,c.useState)(""),[J,M]=(0,c.useState)({naturalWidth:0,naturalHeight:0,renderedWidth:0,renderedHeight:0}),N=(0,c.useRef)(null),O=(0,c.useRef)(Promise.resolve()),Q=(0,c.useRef)(null),R=(0,c.useRef)(null),[S,T]=(0,c.useState)(()=>"u"<typeof document||!document.hidden),U=d&&S;(0,c.useEffect)(()=>{let a=()=>{T(!document.hidden)};return document.addEventListener("visibilitychange",a),()=>{document.removeEventListener("visibilitychange",a)}},[]);let V=(0,c.useCallback)(async()=>{let b=await fetch(`/api/sessions/${encodeURIComponent(a)}/preview`,{cache:"no-store"}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c&&"error"in c?c.error??"Failed to load preview state":`Failed to load preview state: ${b.status}`);j(c),v(null),I(a=>a.trim().length>0&&a!==h?.currentUrl?a:c.currentUrl??c.candidateUrls[0]??a)},[a,h?.currentUrl]),W=(0,c.useCallback)(async b=>{p(!0),v(null);try{let c=await fetch(`/api/sessions/${encodeURIComponent(a)}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>null);if(!c.ok)throw d&&"object"==typeof d&&"status"in d&&d.status&&j(d.status),Error(d&&"error"in d?d.error??"Preview command failed":`Preview command failed: ${c.status}`);return j(d),d}finally{p(!1)}},[a]),X=(0,c.useCallback)((a,b)=>{O.current=O.current.catch(()=>void 0).then(async()=>{try{await W(a)}catch(a){v(a instanceof Error?a.message:b)}})},[W]),Y=(0,c.useCallback)(async b=>{if(!h?.connected)return void l([]);n(!0);try{let c=new URLSearchParams;b&&c.set("frameId",b),s&&c.set("interactiveOnly","1");let d=await fetch(`/api/sessions/${encodeURIComponent(a)}/preview/dom?${c.toString()}`,{cache:"no-store"}),e=await d.json().catch(()=>null);if(!d.ok)throw Error(e&&"error"in e?e.error??"Failed to inspect DOM":`Failed to inspect DOM: ${d.status}`);l(e.nodes)}catch(a){v(a instanceof Error?a.message:"Failed to inspect DOM"),l([])}finally{n(!1)}},[s,a,h?.connected]);(0,c.useEffect)(()=>{if(!U)return;let a=!0;(async()=>{try{await V()}catch(b){a&&v(b instanceof Error?b.message:"Failed to load preview")}finally{a&&r(!1)}})();let b=window.setInterval(()=>{V().catch(b=>{a&&v(b instanceof Error?b.message:"Failed to refresh preview")})},4e3);return()=>{a=!1,window.clearInterval(b)}},[V,U]),(0,c.useEffect)(()=>{U&&h?.connected?Y(h.activeFrameId):l([])},[s,Y,U,h?.activeFrameId,h?.connected,h?.screenshotKey]),(0,c.useEffect)(()=>{if(!U)return;if(h?.connected){N.current=null;return}F(null);let a=h?.candidateUrls[0];if(!a)return;let b=N.current?.attemptedAt??NaN,c=N.current?.candidate??null,d=Date.now();c===a&&Number.isFinite(b)&&d-b<5e3||(N.current={candidate:a,attemptedAt:d},W({command:"connect",url:a}).catch(a=>{v(a instanceof Error?a.message:"Failed to connect preview")}))},[W,U,h?.candidateUrls,h?.connected]),(0,c.useEffect)(()=>{f?.(!!(U&&h?.connected&&h?.screenshotKey))},[f,U,h?.connected,h?.screenshotKey]);let Z=(0,c.useMemo)(()=>h?.connected?`/api/sessions/${encodeURIComponent(a)}/preview/screenshot?ts=${encodeURIComponent(h.screenshotKey)}`:null,[a,h?.connected,h?.screenshotKey]),$=(0,c.useMemo)(()=>h?.frames.find(a=>a.id===h.activeFrameId)??null,[h?.activeFrameId,h?.frames]),_=(0,c.useMemo)(()=>h?.frames.find(a=>a.isMain)??null,[h?.frames]),aa=null!==A,ab=!!$?.isMain,ac=(0,c.useMemo)(()=>{let a=h?.selectedElement?.bounds;if(!h?.selectedElement||!a||!_||h.selectedElement.frameId!==_.id||!J.naturalWidth||!J.naturalHeight||!J.renderedWidth||!J.renderedHeight)return null;let b=J.renderedWidth/J.naturalWidth,c=J.renderedHeight/J.naturalHeight;return{left:`${a.x*b}px`,top:`${a.y*c}px`,width:`${Math.max(a.width*b,2)}px`,height:`${Math.max(a.height*c,2)}px`}},[J,_,h?.selectedElement]),ad=(0,c.useCallback)(async()=>{let a=H.trim();if(a)try{await W({command:"connect",url:a})}catch(a){v(a instanceof Error?a.message:"Failed to connect preview")}},[W,H]),ae=(0,c.useCallback)((a,b,c=!1)=>{F({anchorX:a,anchorY:b,pending:c}),x(null),z(null)},[]),af=(0,c.useCallback)(a=>{D(a),F(null),x(null),z(null)},[]),ag=(0,c.useMemo)(()=>{if(!E)return null;let a=J.renderedWidth||340,b=J.renderedHeight||280,c=Math.max(220,b-24);if(a<=520)return{left:"12px",top:`${Math.max(12,b-Math.min(280,c)-12)}px`,width:`${Math.max(a-24,220)}px`,maxHeight:`${c}px`};let d=Math.min(340,Math.max(a-24,240)),e=Math.max(12,a-d-12),f=Math.max(12,b-280-12),g=E.anchorX+18,h=E.anchorY+18,i=g>e?Math.max(12,E.anchorX-d-18):g,j=h>f?Math.max(12,E.anchorY-280-18):h;return{left:`${Math.min(Math.max(i,12),e)}px`,top:`${Math.min(Math.max(j,12),f)}px`,width:`${d}px`,maxHeight:`${c}px`}},[J.renderedHeight,J.renderedWidth,E]);(0,c.useEffect)(()=>{if(!E)return;let a=a=>{"Escape"===a.key&&F(null)};return window.addEventListener("keydown",a),()=>{window.removeEventListener("keydown",a)}},[E]);let ah=(0,c.useCallback)(a=>{if(!Q.current)return null;let b=Q.current.getBoundingClientRect();if(!b.width||!b.height||!Q.current.naturalWidth||!Q.current.naturalHeight)return null;let c=a.clientX-b.left,d=a.clientY-b.top;return{anchorX:c,anchorY:d,x:c/b.width*Q.current.naturalWidth,y:d/b.height*Q.current.naturalHeight}},[]),ai=(0,c.useCallback)(a=>{e(a),x(null),z(a.successMessage)},[e]),aj=(0,c.useCallback)(async(a,b,c,d)=>{ae(c,d,!0);try{let e=await W({command:"selectAtPoint",x:a,y:b});return ae(c,d,!1),e}catch(a){throw F(null),a}},[ae,W]),ak=(0,c.useCallback)(async(a,b)=>{let c=Math.max(J.renderedWidth-44,12);ae(c,12,!0);try{let d=await W({command:"selectBySelector",selector:a,frameId:b});return ae(c,12,!1),d}catch(a){throw F(null),a}},[J.renderedWidth,ae,W]),am=(0,c.useCallback)(async a=>{if(o)return;let b=ah(a);if(b){if(F(null),x(null),z(null),"navigate"===C){R.current?.focus({preventScroll:!0});try{await W({command:"clickAtPoint",x:b.x,y:b.y})}catch(a){v(a instanceof Error?a.message:"Failed to interact with preview")}return}if(ab)try{await aj(b.x,b.y,b.anchorX,b.anchorY)}catch(a){v(a instanceof Error?a.message:"Failed to select element")}}},[o,ab,C,ah,W,aj]),an=(0,c.useCallback)(async a=>{if(o||"inspect"!==C||!ab)return;let b=ah(a);if(b){x(null),z(null);try{let a=await aj(b.x,b.y,b.anchorX,b.anchorY);if(!a.selectedElement)throw Error("No element found at the selected point");ai(bp(a.selectedElement,a.currentUrl))}catch(a){v(a instanceof Error?a.message:"Failed to queue selected element")}}},[o,ab,C,ai,ah,aj]),ap=(0,c.useCallback)(a=>{if("navigate"!==C||!h?.connected||a.metaKey||a.ctrlKey||a.altKey)return;let b=bj.get(a.key);if(b){a.preventDefault(),X({command:"pressKey",key:b},"Failed to send key to preview");return}1===a.key.length&&(a.preventDefault(),X({command:"typeText",text:a.key},"Failed to type into preview"))},[C,X,h?.connected]),aq=(0,c.useCallback)(a=>{if("navigate"!==C||!h?.connected)return;let b=a.clipboardData.getData("text");b&&(a.preventDefault(),X({command:"typeText",text:b},"Failed to paste into preview"))},[C,X,h?.connected]),ar=(0,c.useCallback)(a=>{if(!h)return void x("Preview state is not loaded yet.");let b=h.consoleLogs.slice(-80),c=h.networkLogs.slice(-80);if("selection"===a&&!h.selectedElement)return void x("Select an element before queueing preview context for terminal input.");if("console"===a&&!b.length)return void x("There are no console logs to send yet.");if("network"===a&&!c.length)return void x("There are no network logs to send yet.");B(a),x(null),z(null);try{let d="selection"===a&&h.selectedElement?bp(h.selectedElement,h.currentUrl):"console"===a?bq("console",b,h.currentUrl,h.selectedElement):bq("network",c,h.currentUrl,h.selectedElement);ai(d),"selection"===a&&F(null)}catch(a){x(a instanceof Error?a.message:"Failed to queue preview context")}finally{B(null)}},[ai,h]),as=(0,c.useCallback)(async()=>{let a=h?.selectedElement?.selector;if(a)try{await navigator.clipboard.writeText(a),z("Selector copied to clipboard."),x(null)}catch{x("Clipboard access is unavailable.")}},[h?.selectedElement?.selector]);return(0,b.jsxs)("div",{className:"flex h-full min-h-0 flex-col gap-2 overflow-auto",children:[(0,b.jsxs)(K.Card,{children:[(0,b.jsxs)(K.CardHeader,{className:"flex flex-col items-start gap-2 lg:flex-row lg:items-center lg:justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(g,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"text-[13px] font-medium text-[var(--vk-text-normal)]",children:"Dev preview browser"}),h?.connected?(0,b.jsx)(L.Badge,{variant:"success",children:"connected"}):(0,b.jsx)(L.Badge,{variant:"outline",children:"idle"}),$?(0,b.jsx)(L.Badge,{variant:"outline",children:$.isMain?"main frame":"nested frame"}):null]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)(aI.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void V().catch(a=>{v(a instanceof Error?a.message:"Failed to refresh preview")}),disabled:q||o,children:[(0,b.jsx)(al.RefreshCw,{className:(0,G.cn)("h-3.5 w-3.5",o&&"animate-spin")}),"Refresh"]}),(0,b.jsxs)(aI.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void W({command:"reload"}).catch(a=>{v(a instanceof Error?a.message:"Failed to reload preview")}),disabled:!h?.connected||o,children:[(0,b.jsx)(aH,{className:"h-3.5 w-3.5"}),"Reload page"]})]})]}),(0,b.jsxs)(K.CardContent,{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-2 lg:flex-row",children:[(0,b.jsx)("input",{value:H,onChange:a=>I(a.target.value),placeholder:h?.candidateUrls[0]??"http://127.0.0.1:3000",className:"h-9 min-w-0 flex-1 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-panel)] px-3 text-[13px] text-[var(--vk-text-normal)] outline-none focus:border-[var(--vk-orange)]"}),(0,b.jsxs)(aI.Button,{type:"button",variant:"primary",onClick:()=>void ad(),disabled:o||!H.trim(),children:[o?(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(aF,{className:"h-4 w-4"}),"Connect"]})]}),h?.candidateUrls.length?(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2",children:h.candidateUrls.map(a=>(0,b.jsxs)("button",{type:"button",className:"inline-flex max-w-full items-center gap-1 rounded-[3px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-2 py-1 text-left text-[11px] text-[var(--vk-text-muted)] hover:bg-[var(--vk-bg-hover)] hover:text-[var(--vk-text-normal)]",onClick:()=>{I(a),W({command:"connect",url:a}).catch(a=>{v(a instanceof Error?a.message:"Failed to connect preview")})},children:[(0,b.jsx)(g,{className:"h-3 w-3 shrink-0"}),(0,b.jsx)("span",{className:"truncate",children:a})]},a))}):null,u||h?.lastError?(0,b.jsxs)("div",{className:"flex items-start gap-2 rounded-[4px] border border-[color:color-mix(in_srgb,var(--vk-red)_45%,transparent)] bg-[color:color-mix(in_srgb,var(--vk-red)_12%,transparent)] px-3 py-2 text-[12px] text-[var(--vk-red)]",children:[(0,b.jsx)(aA,{className:"mt-0.5 h-4 w-4 shrink-0"}),(0,b.jsx)("span",{children:u??h?.lastError})]}):null]})]}),(0,b.jsxs)(K.Card,{className:"min-h-0 shrink-0 overflow-hidden",children:[(0,b.jsxs)(K.CardHeader,{className:"flex flex-col items-start gap-2 lg:flex-row lg:items-center lg:justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(aC.Eye,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"text-[13px] font-medium text-[var(--vk-text-normal)]",children:"Preview"})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1 rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] p-1",children:[(0,b.jsxs)(aI.Button,{type:"button",size:"sm",variant:"navigate"===C?"primary":"ghost",onClick:()=>af("navigate"),children:[(0,b.jsx)(aF,{className:"h-3.5 w-3.5"}),"Navigate"]}),(0,b.jsxs)(aI.Button,{type:"button",size:"sm",variant:"inspect"===C?"primary":"ghost",onClick:()=>af("inspect"),children:[(0,b.jsx)(aC.Eye,{className:"h-3.5 w-3.5"}),"Inspect"]})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-[11px] text-[var(--vk-text-muted)]",children:[(0,b.jsx)(L.Badge,{variant:"outline",children:h?.title?bl(h.title,40):"Untitled page"}),(0,b.jsx)(L.Badge,{variant:"outline",children:"navigate"===C?"navigate mode: clicks interact with the page":ab?"inspect mode: click once to select, double-click to queue for terminal input":"inspect mode: use DOM list for this frame"})]})]})]}),(0,b.jsx)(K.CardContent,{className:"min-h-0",children:(0,b.jsx)("div",{className:"flex h-[56vh] min-h-[280px] max-h-[620px] items-center justify-center overflow-auto rounded-[6px] border border-[var(--vk-border)] bg-[#111] p-2 sm:h-[72vh] sm:min-h-[360px] sm:max-h-[760px] sm:p-3",children:q?(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[13px] text-[var(--vk-text-muted)]",children:[(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin"}),"Loading preview…"]}):Z?(0,b.jsxs)("div",{ref:R,tabIndex:h?.connected?0:-1,onKeyDown:ap,onPaste:aq,className:"relative flex max-h-full max-w-full items-start justify-center overflow-auto rounded-[6px] outline-none focus-visible:ring-2 focus-visible:ring-[var(--vk-orange)] focus-visible:ring-offset-2 focus-visible:ring-offset-[#111]",children:[(0,b.jsx)("img",{ref:Q,src:Z,alt:"Session preview",className:(0,G.cn)("max-h-full max-w-full rounded-[4px] object-contain shadow-[0_18px_36px_rgba(0,0,0,0.28)]","navigate"===C?"cursor-pointer":ab?"cursor-crosshair":"cursor-default"),onClick:a=>void am(a),onDoubleClick:a=>void an(a),onLoad:a=>{let b=a.currentTarget;M({naturalWidth:b.naturalWidth,naturalHeight:b.naturalHeight,renderedWidth:b.clientWidth,renderedHeight:b.clientHeight})}}),"inspect"===C&&ac?(0,b.jsx)("div",{className:"pointer-events-none absolute border-2 border-[var(--vk-orange)] bg-[color:color-mix(in_srgb,var(--vk-orange)_18%,transparent)] shadow-[0_0_0_1px_rgba(0,0,0,0.5)]",style:ac}):null,"inspect"===C&&E&&ag?(0,b.jsxs)("div",{className:"pointer-events-auto absolute z-20 flex flex-col overflow-hidden rounded-[10px] border border-[var(--vk-border)] bg-[color:color-mix(in_srgb,var(--vk-bg-panel)_94%,black_6%)] shadow-[0_20px_44px_rgba(0,0,0,0.42)] backdrop-blur",style:ag,children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-3 border-b border-[var(--vk-border)] px-3 py-3",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("div",{className:"text-[10px] uppercase tracking-[0.16em] text-[var(--vk-text-muted)]",children:"Terminal input"}),(0,b.jsx)("div",{className:"mt-1 text-[13px] font-medium text-[var(--vk-text-normal)]",children:E.pending?"Selecting element…":"Queue selection for the terminal"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsx)(aI.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>void as(),disabled:E.pending||!h?.selectedElement,children:(0,b.jsx)(P.Copy,{className:"h-3.5 w-3.5"})}),(0,b.jsx)(aI.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>F(null),children:(0,b.jsx)(ao.X,{className:"h-3.5 w-3.5"})})]})]}),(0,b.jsx)("div",{className:"flex-1 space-y-3 overflow-y-auto px-3 py-3",children:E.pending?(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-[6px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-3 py-3 text-[12px] text-[var(--vk-text-muted)]",children:[(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin"}),"Capturing the selected element from the preview…"]}):h?.selectedElement?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"rounded-[6px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)] px-3 py-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"font-mono text-[12px] text-[var(--vk-text-normal)]",children:h.selectedElement.tag}),h.selectedElement.role?(0,b.jsx)(L.Badge,{variant:"outline",children:h.selectedElement.role}):null]}),(0,b.jsx)("div",{className:"mt-2 text-[12px] text-[var(--vk-text-normal)]",children:bl(h.selectedElement.name||h.selectedElement.text||"Selected element",140)}),(0,b.jsx)("div",{className:"mt-2 break-all font-mono text-[11px] text-[var(--vk-text-muted)]",children:h.selectedElement.selector})]}),(0,b.jsx)("div",{className:"rounded-[6px] border border-dashed border-[var(--vk-border)] px-3 py-2 text-[12px] text-[var(--vk-text-muted)]",children:"Double-click the element in the preview to queue it immediately, or use the button below. The text is inserted into terminal input instead of being sent to the agent, so you can add more context before submitting."}),w?(0,b.jsx)("div",{className:"text-[12px] text-[var(--vk-red)]",children:w}):null,(0,b.jsxs)(aI.Button,{type:"button",variant:"primary",className:"w-full",onClick:()=>void ar("selection"),disabled:aa||!h.selectedElement,children:["selection"===A?(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin"}):(0,b.jsx)(aG,{className:"h-4 w-4"}),"Queue for terminal input"]})]}):(0,b.jsx)("div",{className:"rounded-[6px] border border-dashed border-[var(--vk-border)] px-3 py-3 text-[12px] text-[var(--vk-text-muted)]",children:"Single-click an element to inspect it here. Double-click to queue it for terminal input."})})]}):null]}):(0,b.jsx)("div",{className:"max-w-md text-center text-[13px] text-[var(--vk-text-muted)]",children:"Connect a local dev URL to start the preview browser. In Navigate mode, click the preview first, then type directly into the running app. Switch to Inspect mode to select UI elements and queue browser context into terminal input."})})})]}),y?(0,b.jsx)("div",{className:"rounded-[6px] border border-[color:color-mix(in_srgb,var(--vk-green)_35%,transparent)] bg-[color:color-mix(in_srgb,var(--vk-green)_10%,transparent)] px-3 py-2 text-[12px] text-[var(--vk-green)]",children:y}):null,!E&&w?(0,b.jsx)("div",{className:"rounded-[6px] border border-[color:color-mix(in_srgb,var(--vk-red)_35%,transparent)] bg-[color:color-mix(in_srgb,var(--vk-red)_10%,transparent)] px-3 py-2 text-[12px] text-[var(--vk-red)]",children:w}):null,(0,b.jsxs)("div",{className:"grid gap-2",children:[(0,b.jsxs)(K.Card,{className:"min-h-0",children:[(0,b.jsxs)(K.CardHeader,{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(aB,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"text-[13px] font-medium text-[var(--vk-text-normal)]",children:"Frames and DOM"}),(0,b.jsx)(L.Badge,{variant:"outline",children:"inspect"===C?"inspect":"read-only in navigate mode"})]}),(0,b.jsx)(aI.Button,{type:"button",variant:s?"primary":"outline",size:"sm",onClick:()=>t(a=>!a),children:s?"Interactive only":"All nodes"})]}),(0,b.jsxs)(K.CardContent,{className:"grid gap-2 xl:grid-cols-[220px_minmax(0,1fr)]",children:[(0,b.jsx)("div",{className:"space-y-2",children:h?.frames.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>{W({command:"selectFrame",frameId:a.id}).catch(a=>{v(a instanceof Error?a.message:"Failed to select frame")})},className:(0,G.cn)("flex w-full flex-col items-start gap-1 rounded-[4px] border px-2 py-2 text-left transition-colors",h.activeFrameId===a.id?"border-[var(--vk-orange)] bg-[color:color-mix(in_srgb,var(--vk-orange)_10%,transparent)]":"border-[var(--vk-border)] bg-[var(--vk-bg-main)] hover:bg-[var(--vk-bg-hover)]"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(L.Badge,{variant:"outline",children:a.isMain?"main":"frame"}),(0,b.jsx)("span",{className:"truncate text-[12px] text-[var(--vk-text-normal)]",children:a.name})]}),(0,b.jsx)("span",{className:"w-full truncate text-[11px] text-[var(--vk-text-muted)]",children:a.url||"about:blank"})]},a.id))}),(0,b.jsx)("div",{className:"rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)]",children:(0,b.jsx)(bh,{className:"h-[240px] sm:h-[300px] xl:h-[360px]",children:(0,b.jsxs)("div",{className:"space-y-1 p-2",children:["navigate"===C?(0,b.jsx)("div",{className:"rounded-[4px] border border-dashed border-[var(--vk-border)] px-2 py-2 text-[11px] text-[var(--vk-text-muted)]",children:"Switch to Inspect mode to pick DOM nodes. Single-click selects a node. Double-click queues it for terminal input."}):null,m?(0,b.jsxs)("div",{className:"flex items-center gap-2 px-2 py-2 text-[12px] text-[var(--vk-text-muted)]",children:[(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin"}),"Inspecting frame DOM…"]}):k.length?k.map((a,c)=>(0,b.jsxs)("button",{type:"button",className:(0,G.cn)("w-full rounded-[4px] border border-[transparent] px-2 py-2 text-left","inspect"===C?"hover:border-[var(--vk-border)] hover:bg-[var(--vk-bg-hover)]":"cursor-not-allowed opacity-60"),disabled:"inspect"!==C,onClick:()=>{F(null),x(null),z(null),ak(a.selector,h?.activeFrameId).catch(a=>{v(a instanceof Error?a.message:"Failed to select DOM node")})},onDoubleClick:()=>{x(null),z(null),ak(a.selector,h?.activeFrameId).then(a=>{if(!a.selectedElement)throw Error("Failed to resolve the selected DOM node");ai(bp(a.selectedElement,a.currentUrl))}).catch(a=>{v(a instanceof Error?a.message:"Failed to queue DOM node")})},children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"font-mono text-[12px] text-[var(--vk-text-normal)]",children:a.tag}),a.interactive?(0,b.jsx)(L.Badge,{variant:"warning",children:"interactive"}):null,a.role?(0,b.jsx)(L.Badge,{variant:"outline",children:a.role}):null]}),(0,b.jsx)("div",{className:"mt-1 break-all font-mono text-[11px] text-[var(--vk-text-muted)]",children:a.selector}),a.text?(0,b.jsx)("div",{className:"mt-1 text-[12px] text-[var(--vk-text-normal)]",children:bl(a.text,180)}):null]},`${a.id??"node"}-${c}-${a.selector}-${a.tag}-${a.text}`)):(0,b.jsx)("div",{className:"px-2 py-3 text-[12px] text-[var(--vk-text-muted)]",children:"No DOM nodes to show for the current frame yet."})]})})})]})]}),(0,b.jsxs)("div",{className:"grid gap-2 lg:grid-cols-2",children:[(0,b.jsxs)(K.Card,{className:"min-h-0",children:[(0,b.jsxs)(K.CardHeader,{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(i,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"text-[13px] font-medium text-[var(--vk-text-normal)]",children:"Console"}),(0,b.jsx)(L.Badge,{variant:"outline",children:h?.consoleLogs.length??0})]}),(0,b.jsxs)(aI.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>void ar("console"),disabled:aa||!h?.consoleLogs.length,children:["console"===A?(0,b.jsx)(aE.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,b.jsx)(aG,{className:"h-3.5 w-3.5"}),"Queue for terminal"]})]}),(0,b.jsx)(K.CardContent,{children:(0,b.jsx)(bh,{className:"h-[220px] sm:h-[260px] rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)]",children:(0,b.jsx)("div",{className:"space-y-1 p-2",children:h?.consoleLogs.length?h.consoleLogs.map(a=>(0,b.jsxs)("div",{className:"rounded-[3px] px-2 py-1.5 text-[11px] text-[var(--vk-text-normal)]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[10px] uppercase tracking-wide text-[var(--vk-text-muted)]",children:[(0,b.jsx)("span",{children:a.level}),(0,b.jsx)("span",{children:bk(a.timestamp)})]}),(0,b.jsx)("div",{className:"mt-1 whitespace-pre-wrap break-all font-mono",children:a.message})]},a.id)):(0,b.jsx)("div",{className:"px-2 py-3 text-[12px] text-[var(--vk-text-muted)]",children:"Console output appears here once the page loads."})})})})]}),(0,b.jsxs)(K.Card,{className:"min-h-0",children:[(0,b.jsxs)(K.CardHeader,{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(aD,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"text-[13px] font-medium text-[var(--vk-text-normal)]",children:"Network"}),(0,b.jsx)(L.Badge,{variant:"outline",children:h?.networkLogs.length??0})]}),(0,b.jsxs)(aI.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>void ar("network"),disabled:aa||!h?.networkLogs.length,children:["network"===A?(0,b.jsx)(aE.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,b.jsx)(aG,{className:"h-3.5 w-3.5"}),"Queue for terminal"]})]}),(0,b.jsx)(K.CardContent,{children:(0,b.jsx)(bh,{className:"h-[220px] sm:h-[260px] rounded-[4px] border border-[var(--vk-border)] bg-[var(--vk-bg-main)]",children:(0,b.jsx)("div",{className:"space-y-1 p-2",children:h?.networkLogs.length?h.networkLogs.map(a=>(0,b.jsxs)("div",{className:"rounded-[3px] px-2 py-1.5 text-[11px] text-[var(--vk-text-normal)]",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[10px] uppercase tracking-wide text-[var(--vk-text-muted)]",children:[(0,b.jsx)("span",{children:a.method??"GET"}),"number"==typeof a.status?(0,b.jsx)("span",{children:a.status}):null,a.resourceType?(0,b.jsx)("span",{children:a.resourceType}):null,(0,b.jsx)("span",{children:bk(a.timestamp)})]}),(0,b.jsx)("div",{className:"mt-1 break-all font-mono",children:a.url??a.message})]},a.id)):(0,b.jsx)("div",{className:"px-2 py-3 text-[12px] text-[var(--vk-text-muted)]",children:"Network requests appear here after the preview loads."})})})})]})]})]})]})}var bs=a.i(27736),bt=a.i(52495),bu=a.i(65385),bv=a.i(34959);let bw="block h-5 w-5 shrink-0 object-contain",bx=[{id:"finder",label:"Finder"},{id:"cursor",label:"Cursor"},{id:"antigravity",label:"Antigravity"},{id:"windsurf",label:"Windsurf"},{id:"zed",label:"Zed"},{id:"xcode",label:"Xcode"},{id:"vscode",label:"VS Code"},{id:"vscode-insiders",label:"VS Code Insiders"},{id:"intellij-idea",label:"IntelliJ IDEA"},{id:"custom",label:"Custom"}],by={finder:{kind:"image",imageSrc:"/icons/ide/finder.svg",className:bw},vscode:{kind:"image",imageSrc:"/icons/ide/vscode-dark.svg",className:bw},"vscode-insiders":{kind:"image",imageSrc:"/icons/ide/vscode-insiders.svg",className:bw},cursor:{kind:"image",imageSrc:"/icons/ide/cursor-dark.svg",className:bw},windsurf:{kind:"image",imageSrc:"/icons/ide/windsurf-dark.svg",className:bw},"intellij-idea":{kind:"image",imageSrc:"/icons/ide/intellij.svg",className:bw},zed:{kind:"image",imageSrc:"/icons/ide/zed-dark.svg",className:bw},xcode:{kind:"image",imageSrc:"/icons/ide/xcode.svg",className:bw},antigravity:{kind:"image",imageSrc:"/icons/ide/antigravity-dark.svg",className:bw},custom:{kind:"icon",className:`${bw} text-[var(--vk-text-muted)]`}};function bz({editorId:a,label:c}){let d=by[a];return d?"icon"===d.kind?(0,b.jsx)(bu.Settings2,{className:d?.className??`${bw} text-[var(--vk-text-muted)]`}):(0,b.jsx)("img",{src:d.imageSrc,alt:`${c} logo`,className:d.className}):(0,b.jsx)(bu.Settings2,{className:`${bw} text-[var(--vk-text-muted)]`})}function bA({projectId:a}){let{preferences:d}=(0,bv.usePreferences)(),[e,f]=(0,c.useState)(null),g=(0,c.useMemo)(()=>{var a;return a=d?.ide??"vscode",bx.find(b=>b.id===a)??{id:a,label:a}},[d?.ide]);async function h(b){if(a&&!e){f(b);try{let c=await fetch(`/api/projects/${encodeURIComponent(a)}/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ide:b})}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Failed to open project (${c.status})`)}catch(a){window.alert(a instanceof Error?a.message:"Failed to open project")}finally{f(null)}}}return(0,b.jsxs)(bs.Root,{children:[(0,b.jsx)(bs.Trigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button",disabled:!a||null!==e,className:"inline-flex h-9 items-center gap-2 rounded-[6px] border border-[rgba(255,255,255,0.08)] bg-[rgba(255,255,255,0.03)] px-3 text-[13px] text-[var(--vk-text-normal)] transition hover:bg-[rgba(255,255,255,0.06)] disabled:cursor-not-allowed disabled:opacity-60","aria-label":"Open project in code editor",title:a?`Open project in ${g.label}`:"No project selected",children:[e?(0,b.jsx)(aE.Loader2,{className:"h-4 w-4 animate-spin text-[var(--vk-text-muted)]"}):(0,b.jsx)(bt.ExternalLink,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}),(0,b.jsx)("span",{className:"hidden font-medium sm:inline",children:"Open"}),(0,b.jsx)(ab.ChevronDown,{className:"h-3.5 w-3.5 text-[var(--vk-text-muted)]"})]})}),(0,b.jsx)(bs.Portal,{children:(0,b.jsx)(bs.Content,{align:"end",sideOffset:8,className:"z-50 min-w-[240px] rounded-[8px] border border-[rgba(255,255,255,0.08)] bg-[#1c1a19] p-2 shadow-[0_18px_50px_rgba(0,0,0,0.45)]",children:bx.map(a=>(0,b.jsxs)(bs.Item,{onSelect:()=>void h(a.id),className:"flex min-h-[44px] cursor-default items-center gap-3 rounded-[6px] px-3 py-2 text-[14px] text-[#f3efea] outline-none transition hover:bg-[rgba(255,255,255,0.06)] focus:bg-[rgba(255,255,255,0.06)]",children:[(0,b.jsx)(bz,{editorId:a.id,label:a.label}),(0,b.jsx)("span",{className:"flex-1",children:a.label}),g.id===a.id?(0,b.jsx)(N.Check,{className:"h-4 w-4 text-[var(--vk-text-muted)]"}):null]},a.id))})})]})}let bB=(0,e.default)("paperclip",[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]]),bC={background:"#000000",foreground:"#ffffff",cursor:"#ffffff",cursorAccent:"#000000",selectionBackground:"#4d4d4d",black:"#2e3436",red:"#cc0000",green:"#4e9a06",yellow:"#c4a000",blue:"#3465a4",magenta:"#75507b",cyan:"#06989a",white:"#d3d7cf",brightBlack:"#555753",brightRed:"#ef2929",brightGreen:"#8ae234",brightYellow:"#fce94f",brightBlue:"#729fcf",brightMagenta:"#ad7fa8",brightCyan:"#34e2e2",brightWhite:"#eeeeec"},bD={background:"#ffffff",foreground:"#000000",cursor:"#000000",cursorAccent:"#ffffff",selectionBackground:"#add6ff",black:"#2e3436",red:"#cc0000",green:"#4e9a06",yellow:"#c4a000",blue:"#3465a4",magenta:"#75507b",cyan:"#06989a",white:"#d3d7cf",brightBlack:"#555753",brightRed:"#ef2929",brightGreen:"#8ae234",brightYellow:"#fce94f",brightBlue:"#729fcf",brightMagenta:"#ad7fa8",brightCyan:"#34e2e2",brightWhite:"#eeeeec"};function bE(a){return a&&"object"==typeof a?a:null}function bF(a){let b=a.trim();if(!b)return null;let c=b.split(/\r?\n/g).map(a=>a.trim()).filter(Boolean);if(1!==c.length)return null;let d=c[0].replace(/^['"]|['"]$/g,"");if(!d)return null;if(d.startsWith("file://"))try{let a=new URL(d);if("file:"!==a.protocol)return null;let b=decodeURIComponent(a.pathname);return/^\/[A-Za-z]:\//.test(b)&&(b=b.slice(1)),b||null}catch{return null}if(!(d.startsWith("/")||/^[A-Za-z]:[\\/]/.test(d)))return null;let e=d.split(/[\\/]/).filter(Boolean).pop()??"";return/\.[A-Za-z0-9]{1,10}$/.test(e)?d:null}async function bG({files:a,projectId:b,taskRef:c,preferAbsolute:d=!0}){if(!a.length)return[];let e=b.trim();if(!e)throw Error("Project id is required to upload attachments");let f=new FormData;f.append("projectId",e);let g=c?.trim();for(let b of(g&&f.append("taskRef",g),a))f.append("files",b);let h=await fetch("/api/attachments",{method:"POST",body:f}),i=await h.json().catch(()=>null);if(!h.ok){let b=1===a.length?a[0]?.name??"attachment":`${a.length} attachments`;throw Error(i?.error??`Failed to upload ${b}`)}let j=(Array.isArray(i?.files)?i.files:i?[i]:[]).map(a=>(function(a,b){let c=bE(a);if(!c)return null;let d=bE(c.attachment);for(let a of b?[c.absolutePath,c.path,c.filePath,d?.absolutePath,d?.path,d?.filePath]:[c.path,c.absolutePath,c.filePath,d?.path,d?.absolutePath,d?.filePath])if("string"==typeof a&&a.trim().length>0)return a.trim();return null})(a,d)).filter(a=>!!a);if(0===j.length)throw Error("Attachment upload succeeded but did not return a usable file path");return j}let bH=new Set(["queued","spawning","running","working","needs_input","stuck"]),bI=new Set(["done","needs_input","stuck","errored","terminated","killed"]),bJ=new Set([1e3,1002,1003,1005,1006,1015,1047,1048,1049]),bK=[/\x1b\[(?:I|O)/g,/\x1b\[\d+;\d+R/g,/\x1b\[(?:[?>])[\d;]*c/g,/\x1b\](?:10|11|12|4;\d+);[\s\S]*?(?:\x07|\x1b\\)/g],bL=/\u001b(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~]|\][\s\S]*?(?:\u0007|\u001b\\))/g;function bM(a){return`'${a.replace(/'/g,"'\\''")}'`}async function bN(a){let b=await fetch(`/api/sessions/${encodeURIComponent(a)}/terminal/connection`,{cache:"no-store"}),c=await b.json().catch(()=>null);if(!b.ok)throw Error(c?.error??`Failed to resolve terminal connection: ${b.status}`);let d=c?.transport==="http-poll"?"http-poll":"websocket",e="number"==typeof c?.pollIntervalMs&&Number.isFinite(c.pollIntervalMs)&&c.pollIntervalMs>=100?Math.round(c.pollIntervalMs):700;if("websocket"===d){if("string"!=typeof c?.wsUrl||0===c.wsUrl.trim().length)throw Error("Terminal connection did not include a websocket URL");return{transport:d,wsUrl:c.wsUrl.trim(),pollIntervalMs:e}}return{transport:d,wsUrl:null,pollIntervalMs:e}}async function bO(a,b){let c=await fetch(`/api/sessions/${encodeURIComponent(a)}/terminal/snapshot?lines=${b}`,{cache:"no-store"}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Failed to resolve terminal snapshot: ${c.status}`);return{snapshot:"string"==typeof d?.snapshot?d.snapshot:"",source:"string"==typeof d?.source?d.source:"empty",live:d?.live===!0,restored:d?.restored===!0}}async function bP(a,b){let c=await fetch(`/api/sessions/${encodeURIComponent(a)}/terminal/snapshot?lines=${b}&live=1`,{cache:"no-store"}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Failed to resolve terminal snapshot: ${c.status}`);return{snapshot:"string"==typeof d?.snapshot?d.snapshot:"",source:"string"==typeof d?.source?d.source:"empty",live:d?.live===!0,restored:d?.restored===!0}}async function bQ(a){let b=await fetch(`/api/sessions/${encodeURIComponent(a)}`,{cache:"no-store"});if(!b.ok)throw Error(`Failed to load session: ${b.status}`);let c=await b.json().catch(()=>null);return"string"==typeof c?.status&&c.status.trim().length>0?c.status.trim():null}async function bR(a,b){let c=await fetch(`/api/sessions/${encodeURIComponent(a)}/keys`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Failed to send terminal input: ${c.status}`)}async function bS(a,b,c){let d=await fetch(`/api/sessions/${encodeURIComponent(a)}/terminal/resize`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cols:Math.max(1,Math.round(b)),rows:Math.max(1,Math.round(c))})});if(404===d.status)return;let e=await d.json().catch(()=>null);if(!d.ok)throw Error(e?.error??`Failed to resize terminal: ${d.status}`)}function bT(a){return a.replace(/\r?\n/g,"\r\n")}function bU(a){let b=a.toLowerCase();return b.includes("/temporaryitems/")||b.includes("nsird_screencaptureui")?"macOS exposed only a temporary screenshot path. Paste the screenshot or drop the saved file from Finder so Conductor can upload it cleanly.":"The browser exposed only a local file path for this drop. Use paste or the attach button so Conductor can upload the file instead of injecting raw path text."}function bV(a){return a<420?{fontFamily:"'SF Mono', Menlo, Monaco, monospace",fontSize:11,lineHeight:1}:a<640?{fontFamily:"'SF Mono', Menlo, Monaco, monospace",fontSize:13,lineHeight:1.08}:{fontFamily:'MesloLGM Nerd Font, MesloLGM NF, MesloLGS NF, MesloLGS Nerd Font, Hack Nerd Font, FiraCode Nerd Font, JetBrainsMono Nerd Font, CaskaydiaCove Nerd Font, Menlo, Monaco, "Courier New", SF Mono, SF Pro, monospace',fontSize:17,lineHeight:1.06}}function bW({sessionId:e,agentName:f,projectId:g,sessionModel:h,sessionReasoningEffort:i,sessionState:j,active:k,pendingInsert:l}){let m=(0,d.useRouter)(),n=(0,c.useRef)(null),o=(0,c.useRef)(null),p=(0,c.useRef)(null),q=(0,c.useRef)(null),r=(0,c.useRef)(null),s=(0,c.useRef)(null),t=(0,c.useRef)(null),u=(0,c.useRef)(null),v=(0,c.useRef)(Promise.resolve()),w=(0,c.useRef)(0),x=(0,c.useRef)(0),y=(0,c.useRef)(null),z=(0,c.useRef)(null),A=(0,c.useRef)(null),B=(0,c.useRef)(null),C=(0,c.useRef)(null),D=(0,c.useRef)(j),E=(0,c.useRef)(k),F=(0,c.useRef)(!1),G=(0,c.useRef)(!1),H=(0,c.useRef)(null),I=(0,c.useRef)(""),J=(0,c.useRef)(!1),K=(0,c.useRef)(!1),L=(0,c.useRef)(null),M=(0,c.useRef)(null),N=(0,c.useRef)(0),O=(0,c.useRef)(!1),P=(0,c.useRef)([]),Q=(0,c.useRef)(0),[R,S]=(0,c.useState)(!1),[T,U]=(0,c.useState)("websocket"),[V,W]=(0,c.useState)(null),[X,Y]=(0,c.useState)("connecting"),[Z,$]=(0,c.useState)(null),[_,aa]=(0,c.useState)(700),[ac,ae]=(0,c.useState)(0),[af,ag]=(0,c.useState)(""),[ah,ai]=(0,c.useState)(""),[aj,ak]=(0,c.useState)([]),[an,ap]=(0,c.useState)(!1),[aq,ar]=(0,c.useState)(null),[as,at]=(0,c.useState)(!1),[au,av]=(0,c.useState)(!1),[aw,ax]=(0,c.useState)(""),[ay,az]=(0,c.useState)(!1),[aA,aB]=(0,c.useState)(!1),[aC,aD]=(0,c.useState)(""),[aF,aG]=(0,c.useState)(()=>"u"<typeof document||!document.hidden),[aH,aJ]=(0,c.useState)(null),[aK,aL]=(0,c.useState)(()=>!1),aM=(0,c.useMemo)(()=>("string"==typeof aH&&aH.trim().length>0?aH:j).trim().toLowerCase(),[j,aH]);D.current=aM,E.current=k;let aN=bH.has(aM),aO=aN&&k&&aF,aP=bI.has(aM)&&!aN,aQ=aN&&"http-poll"===T,aR=aN&&aK,aS=aQ||aR,aT=(0,c.useMemo)(()=>aC.replace(bL,"").replace(/\r\n/g,"\n").replace(/\r/g,"\n").replace(/\u0000/g,""),[aC]),aU="done"===aM?"Continue the session...":"needs_input"===aM||"stuck"===aM?"Answer the agent and resume...":"Restart this session with a follow-up...",aV=(0,c.useCallback)(()=>{ag(a=>0===a.trim().length?"":a)},[]),aW=(0,c.useCallback)(()=>{null!==u.current&&(window.clearTimeout(u.current),u.current=null)},[]),aX=(0,c.useCallback)(()=>{aW(),w.current+=1;let a=Math.min(1600,300*w.current);u.current=window.setTimeout(()=>{ae(a=>a+1)},a)},[aW]),aY=(0,c.useCallback)(()=>{aW(),$(null),Y("connecting"),U("websocket"),W(null),ae(a=>a+1)},[aW]),aZ=(0,c.useCallback)(a=>{let b=v.current.catch(()=>void 0).then(a);return v.current=b.catch(()=>void 0),b},[]),a$=(0,c.useCallback)(async()=>{let a=p.current;if(!a)return;if("http-poll"===T)return void await aZ(()=>bS(e,a.cols,a.rows));let b=t.current;b&&b.readyState===WebSocket.OPEN&&b.send(JSON.stringify({type:"resize",cols:Math.max(1,a.cols),rows:Math.max(1,a.rows)}))},[aZ,e,T]),a_=(0,c.useCallback)(async a=>{let b=function(a){let b=a;for(let a of bK)b=b.replace(a,"");return b}(a);if(0===b.length)return;if("http-poll"===T)return void await aZ(()=>bR(e,{keys:b}));let c=t.current;if(!c||c.readyState!==WebSocket.OPEN)throw Error("Terminal is not connected");c.send(JSON.stringify({type:"keys",keys:b}))},[aZ,e,T]),a0=(0,c.useCallback)(async a=>{if("http-poll"===T)return void await aZ(()=>bR(e,{special:a}));let b=t.current;if(!b||b.readyState!==WebSocket.OPEN)throw Error("Terminal is not connected");b.send(JSON.stringify({type:"keys",special:a}))},[aZ,e,T]),a1=(0,c.useCallback)(()=>{let a=p.current;if(!a)return void az(!1);let b=a.buffer.active;az(b.viewportY<b.baseY)},[]),a2=(0,c.useCallback)(()=>{null!==L.current&&(window.cancelAnimationFrame(L.current),L.current=null),null!==M.current&&(window.clearTimeout(M.current),M.current=null),O.current=!1},[]),a3=(0,c.useCallback)(()=>{for(let a of P.current)window.clearTimeout(a);P.current=[]},[]),a4=(0,c.useCallback)(a=>{let b=p.current,c=q.current,d=n.current;if(!b||!c||!d)return;let e=window.getComputedStyle(d);if("none"===e.display||"hidden"===e.visibility)return;let f=d.getBoundingClientRect();if(f.width<=1||f.height<=1)return;let g=b.cols,h=b.rows,i=b.buffer.active.viewportY>=b.buffer.active.baseY;try{c.fit()}catch{return}a&&b.refresh(0,Math.max(0,b.rows-1)),(a||b.cols!==g||b.rows!==h)&&a$().catch(a=>{$(a instanceof Error?a.message:"Failed to resize terminal")}),i&&b.scrollToBottom(),a1(),E.current&&b.focus()},[a$,a1]),a5=(0,c.useCallback)(a=>{O.current||=a,null===L.current&&(L.current=window.requestAnimationFrame(()=>{L.current=null;let a=Date.now();if(a-N.current<120){let b=120-(a-N.current);null!==M.current&&window.clearTimeout(M.current),M.current=window.setTimeout(()=>{M.current=null,a5(O.current)},b+1);return}N.current=a;let b=O.current;O.current=!1,a4(b)}))},[a4]),a6=(0,c.useCallback)(a=>{a.length&&ak(b=>[...b,...a.map(a=>({file:a}))])},[]),a7=(0,c.useCallback)(async a=>{let b=await bG({files:a,projectId:g,preferAbsolute:!0});if(!b.length)return;let c=b.map(bM).join(" ");await a_(`${c} `)},[g,a_]),a8=(0,c.useCallback)(async a=>{if(a.length){ar(null);try{if(aN&&"live"===X)return void await a7(a);a6(a)}catch(a){ar(a instanceof Error?a.message:"Failed to process files")}}},[X,aN,a7,a6]),a9=(0,c.useCallback)(a=>{H.current=null,I.current=a.snapshot,aD(a.snapshot),aB(!0),a.live&&(Y("live"),$(null))},[]);(0,c.useEffect)(()=>{let a=K.current;K.current=aN,a&&!aN&&(H.current=null,J.current=!1)},[aN]),(0,c.useEffect)(()=>{},[]),(0,c.useEffect)(()=>{F.current=!1,G.current=!1,H.current=null,I.current="",J.current=!1,w.current=0,x.current=0,Q.current=0,aW(),a2(),t.current?.close(),t.current=null,v.current=Promise.resolve(),U("websocket"),W(null),Y("connecting"),$(null),aa(700),ag(""),ai(""),ak([]),ap(!1),ar(null),at(!1),av(!1),ax(""),az(!1),aB(!1),aD(""),aJ(null),p.current?.reset(),a1()},[aW,a2,e,a1]),(0,c.useEffect)(()=>{aJ(null)},[j]),(0,c.useEffect)(()=>{let a=!0;return(aB(!1),aN)?aO?(J.current=!1,H.current=null,(async()=>{try{let b=await bP(e,1200);if(!a)return;a9(b)}catch{try{let b=await bO(e,6e3);if(!a)return;a9(b)}catch{if(!a)return;aD("")}}finally{a&&aB(!0)}})(),()=>{a=!1}):(aD(""),()=>{a=!1}):(aD(""),(async()=>{try{let b=await bO(e,6e3);if(!a)return;a9(b)}catch{if(!a)return;aD("")}finally{a&&aB(!0)}})(),()=>{a=!1})},[a9,aN,e,aO]),(0,c.useEffect)(()=>{let a=!0;return aN&&!aO?(W(null),Y("closed"),$(null),()=>{a=!1}):((async()=>{try{W(null);let b=await bN(e);if(!a)return;U(b.transport),aa(b.pollIntervalMs),W(b.wsUrl),$(null),Y("connecting")}catch(b){if(!a)return;$(b instanceof Error?b.message:"Failed to resolve terminal connection"),Y("error")}})(),()=>{a=!1})},[aN,ac,e,aO]),(0,c.useEffect)(()=>{if(aQ){p.current?.dispose(),p.current=null,q.current=null,r.current=null,S(!1);return}let b=null,c=null,d=!0;return async function(){if(!n.current||!d)return;let[e,f,g]=await Promise.all([a.A(81888),a.A(71789),a.A(63198)]);if(!d||!n.current)return;let h=document.documentElement.classList.contains("light"),i=bV(window.innerWidth),j={allowTransparency:!1,cursorBlink:!0,cursorStyle:"block",disableStdin:!1,drawBoldTextInBrightColors:!0,fontFamily:i.fontFamily,fontSize:i.fontSize,fastScrollSensitivity:4,lineHeight:i.lineHeight,scrollSensitivity:1.1,scrollback:5e4,theme:h?bD:bC,scrollbar:{showScrollbar:!1}};b=new e.Terminal(j);let k=a=>{b?.parser.registerCsiHandler({prefix:"?",final:a},a=>!!a.some(a=>Array.isArray(a)?a.some(a=>bJ.has(a)):bJ.has(a)))};k("h"),k("l"),b.attachCustomWheelEventHandler(a=>{let c=a.deltaMode===WheelEvent.DOM_DELTA_LINE?a.deltaY:a.deltaY/14,d=0===c?0:c>0?Math.max(1,Math.round(c)):Math.min(-1,Math.round(c));return 0!==d&&(a.preventDefault(),a.stopPropagation(),b?.scrollLines(d),a1(),!1)}),c=new f.FitAddon,b.loadAddon(c);let l=new g.SearchAddon;b.loadAddon(l),b.open(n.current),c.fit(),p.current=b,q.current=c,r.current=l,b.options.disableStdin=aS,S(!0),a1(),y.current=b.onData(a=>{a_(a).catch(()=>{})}),z.current=b.onScroll(()=>{a1()}),s.current=new ResizeObserver(()=>{if(E.current&&b){try{let a=bV(window.innerWidth);b.options.fontFamily=a.fontFamily,b.options.fontSize=a.fontSize,b.options.lineHeight=a.lineHeight}catch{return}a5(!0)}}),s.current.observe(n.current)}(),()=>{d=!1,y.current?.dispose(),y.current=null,z.current?.dispose(),z.current=null,s.current?.disconnect(),s.current=null,b&&b.dispose(),p.current=null,q.current=null,r.current=null,S(!1)}},[aQ,a5,a_,a1]),(0,c.useEffect)(()=>{let a=p.current;a&&(a.options.disableStdin=aS)},[aS]),(0,c.useEffect)(()=>{if(!k)return;a3();let a=window.requestAnimationFrame(()=>{a5(!0),P.current.push(window.setTimeout(()=>{a5(!0)},48)),P.current.push(window.setTimeout(()=>{a5(!0)},140))});return()=>{window.cancelAnimationFrame(a),a3()}},[k,a3,a5]),(0,c.useEffect)(()=>{if(!R||!aA)return;let a=p.current;if(a){if("http-poll"===T&&aN){let b=Math.max(0,a.buffer.active.baseY-a.buffer.active.viewportY),c=b<=2;return(a.reset(),aC.length>0)?void a.write(bT(aC),()=>{if(p.current===a){if(c)try{a.scrollToBottom()}catch{return}else{let c=Math.max(0,a.buffer.active.baseY-b)-a.buffer.active.viewportY;if(0!==c)try{a.scrollLines(c)}catch{return}}if(a1(),E.current)try{a.focus()}catch{}}}):void a1()}if(H.current!==e){if(aN&&(J.current||function(a){let b=a.buffer.active;if(b.baseY>0)return!0;for(let c=0;c<a.rows;c+=1){let a=b.getLine(c);if(a&&a.translateToString(!0).trim().length>0)return!0}return!1}(a))){H.current=e,a1();return}if(H.current=e,aC.length>0){a.reset(),a.write(bT(aC),()=>{if(p.current===a&&(a1(),E.current))try{a.focus()}catch{}});return}a1()}}},[k,aN,e,aC,aA,R,T,a1]),(0,c.useEffect)(()=>{if(!aQ)return;let a=o.current;if(!a)return;let b=a.scrollHeight,c=a.scrollTop,d=Math.max(0,b-a.clientHeight-c),e=d<=24;requestAnimationFrame(()=>{let a=o.current;if(a){if(e)a.scrollTop=a.scrollHeight;else{let b=Math.max(0,a.scrollHeight-a.clientHeight-d);a.scrollTop=b}az(a.scrollTop+a.clientHeight<a.scrollHeight-8)}})},[aQ,aT]),(0,c.useEffect)(()=>{let a=()=>{aG(!document.hidden),document.hidden||(aV(),a5(!1))},b=()=>{aG(!document.hidden),aV(),a5(!1)};return document.addEventListener("visibilitychange",a),window.addEventListener("focus",b),()=>{document.removeEventListener("visibilitychange",a),window.removeEventListener("focus",b)}},[aV,a5]),(0,c.useEffect)(()=>{if(aO)return;aW();let a=t.current;t.current=null,a&&a.close()},[aW,aO]),(0,c.useEffect)(()=>{if(!aA||!aO||"http-poll"!==T)return;let a=!1,b=null,c=!1,d=async()=>{if(!a&&!c){c=!0;try{let b=await bP(e,1200);if(a)return;Y("live"),$(null),b.snapshot!==I.current&&a9(b)}catch(b){if(a)return;$(b instanceof Error?b.message:"Terminal polling failed"),Y("error")}finally{c=!1,a||(b=window.setTimeout(()=>{d()},_))}}};return d(),()=>{a=!0,null!==b&&window.clearTimeout(b)}},[a9,I,_,e,aO,aA,T]),(0,c.useEffect)(()=>{var a,b;let c;if(!R||!aA||!V||!p.current||!aO||"websocket"!==T)return;let d=p.current,e=(a=d.cols,b=d.rows,(c=new URL(V)).searchParams.set("cols",String(Math.max(1,a))),c.searchParams.set("rows",String(Math.max(1,b))),c.toString()),f=x.current+1;x.current=f,aW(),Y("connecting");let g=new WebSocket(e);return g.binaryType="arraybuffer",t.current=g,g.onopen=()=>{if(x.current!==f)return;w.current=0,$(null),Y("live");let a=F.current;F.current=!0,G.current=!1,a&&d.writeln("\r\n\x1b[90m[Reconnected]\x1b[0m"),a1(),a5(!0)},g.onmessage=a=>{if(x.current===f){if("string"==typeof a.data){try{let b=JSON.parse(a.data);"error"===b.type?($(b.error),Y("error")):"exit"===b.type&&Y("closed")}catch{$("Received an invalid terminal event"),Y("error")}return}if(a.data instanceof ArrayBuffer){J.current=!0;let b=d.buffer.active.viewportY>=d.buffer.active.baseY;d.write(new Uint8Array(a.data),()=>{if(p.current===d){if(b)try{d.scrollToBottom()}catch{return}a1()}})}}},g.onclose=()=>{if(x.current===f){if(t.current=null,bH.has(D.current)){let a=p.current;a&&F.current&&!G.current&&(G.current=!0,a.writeln("\r\n\x1b[90m[Connection lost. Reconnecting...]\x1b[0m")),Y("connecting"),W(null),aX();return}Y("closed")}},g.onerror=()=>{x.current===f&&($("Terminal connection failed"),Y("error"))},()=>{t.current===g&&(t.current=null),g.close()}},[aW,ac,aX,a5,aO,aA,V,R,T,a1]),(0,c.useEffect)(()=>{if(!R||!aA||!aO||"websocket"!==T)return;let a=t.current;a&&(a.readyState===WebSocket.CONNECTING||a.readyState===WebSocket.OPEN)||"closed"!==X&&"error"!==X||null===u.current&&aX()},[X,aX,aO,aA,R,T]),(0,c.useEffect)(()=>()=>{aW(),a2(),a3(),t.current?.close()},[aW,a2,a3]),(0,c.useEffect)(()=>{let a=n.current;if(!a)return;let b=a=>{let b=a.clipboardData;if(!b)return;let c=Array.from(b.files??[]);if(c.length>0){a.preventDefault(),a8(c);return}let d=bF(b.getData("text/plain")??"");d&&(a.preventDefault(),ar(bU(d)))};return a.addEventListener("paste",b,{capture:!0}),()=>{a.removeEventListener("paste",b,{capture:!0})}},[a8]);let ba=(0,c.useCallback)(async()=>{let a=af.trim();if(a||0!==aj.length){ap(!0),ar(null);try{let b=await bG({files:aj.map(a=>a.file),projectId:g,preferAbsolute:!0}),c=await fetch(`/api/sessions/${encodeURIComponent(e)}/send`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:a,attachments:b,model:h||null,reasoningEffort:i||null,projectId:g||null})}),d=await c.json().catch(()=>null);if(!c.ok)throw Error(d?.error??`Failed to send message: ${c.status}`);if(ag(""),ak([]),d?.sessionId&&d.sessionId!==e)return void m.push(`/sessions/${encodeURIComponent(d.sessionId)}`);ae(a=>a+1);try{let a=await bQ(e);aJ(a)}catch{}}catch(a){ar(a instanceof Error?a.message:"Failed to resume session")}finally{ap(!1)}}},[aj,af,g,m,e,h,i]);(0,c.useEffect)(()=>{if(!l||l.nonce<=Q.current)return;if(Q.current=l.nonce,ar(null),aN&&"live"===X){let a=l.inlineText.trim();a.length>0&&a_(`${a} `).catch(a=>{ar(a instanceof Error?a.message:"Failed to insert preview context into terminal")});return}let a=l.draftText.trim();0!==a.length&&ag(b=>b.trim().length>0?`${b}
2
2
 
3
- ${a}`:a)},[X,aL,l,aX]);let a7=(0,c.useCallback)(a=>{let b=r.current;b&&0!==aw.trim().length&&("next"===a?b.findNext(aw,{incremental:!0,caseSensitive:!1}):b.findPrevious(aw,{incremental:!0,caseSensitive:!1}))},[aw]),a8=(0,c.useCallback)(()=>{if(aO){let a=o.current;if(!a)return;a.scrollTop=a.scrollHeight,az(!1);return}let a=p.current;a&&(a.scrollToBottom(),aZ(),E.current&&a.focus())},[aO,aZ]),a9=(0,c.useCallback)(()=>{if(aO)return;let a=p.current;if(a){try{a.focus()}catch{return}a1(!1)}},[a1,aO]),ba=(0,c.useCallback)(()=>{av(!1),ax(""),E.current&&p.current?.focus()},[]);(0,c.useEffect)(()=>{aO&&au&&(av(!1),ax(""))},[aO,au]);let bb=(0,c.useCallback)(async a=>{if(!ah.trim()){if(a)try{await aY("Enter"),ar(null)}catch(a){ar(a instanceof Error?a.message:"Failed to send terminal input")}return}try{await aX(ah),a&&await aY("Enter"),ai(""),ar(null),requestAnimationFrame(()=>{B.current?.focus()})}catch(a){ar(a instanceof Error?a.message:"Failed to send terminal input")}},[ah,aX,aY]);return(0,b.jsxs)("div",{className:"group/terminal relative flex h-full min-h-0 flex-col overflow-hidden rounded-[14px] border border-white/10 bg-[#060404] shadow-[inset_0_1px_0_rgba(255,255,255,0.04)]",onDragOver:a=>{a.preventDefault(),at(!0)},onDragLeave:a=>{a.currentTarget.contains(a.relatedTarget)||at(!1)},onDrop:async a=>{a.preventDefault(),at(!1);let b=Array.from(a.dataTransfer.files??[]),c=a.dataTransfer.getData("text/plain").trim();if(b.length>0)return void a4(b);let d=bF(c);if(d)return void ar(bU(d));if(c)try{if(aL&&"live"===X){let a=c.startsWith("/")?bM(c):c;await aX(a);return}ag(a=>a.length>0?`${a}
4
- ${c}`:c)}catch(a){ar(a instanceof Error?a.message:"Failed to write drop payload")}},children:[!aO&&au?(0,b.jsxs)("div",{className:"absolute right-2 top-2 z-10 flex max-w-[calc(100%-1rem)] items-center rounded bg-[#141010]/95 pl-2 pr-0.5 shadow-lg ring-1 ring-white/10 backdrop-blur sm:right-3 sm:top-3 sm:max-w-[calc(100%-1.5rem)]",children:[(0,b.jsx)(am.Search,{className:"h-3.5 w-3.5 text-[#8e847d]"}),(0,b.jsx)("input",{value:aw,onChange:a=>ax(a.target.value),onKeyDown:a=>{"Enter"===a.key?(a.preventDefault(),a7(a.shiftKey?"prev":"next")):"Escape"===a.key&&(a.preventDefault(),ba())},placeholder:"Find",className:"h-6 w-20 min-w-0 bg-transparent px-2 text-[11px] text-[#efe8e1] outline-none placeholder:text-[#7d746e] sm:w-28 sm:text-[12px]"}),(0,b.jsx)(aI.Button,{type:"button",size:"icon",variant:"ghost",className:"h-6 w-6 text-[#c9c0b7]",onClick:()=>a7("prev"),"aria-label":"Find previous",children:(0,b.jsx)("span",{className:"text-[11px]",children:"↑"})}),(0,b.jsx)(aI.Button,{type:"button",size:"icon",variant:"ghost",className:"h-6 w-6 text-[#c9c0b7]",onClick:()=>a7("next"),"aria-label":"Find next",children:(0,b.jsx)("span",{className:"text-[11px]",children:"↓"})}),(0,b.jsx)(aI.Button,{type:"button",size:"icon",variant:"ghost",className:"h-6 w-6 text-[#c9c0b7]",onClick:ba,"aria-label":"Close search",children:(0,b.jsx)(ao.X,{className:"h-3.5 w-3.5"})})]}):aO?null:(0,b.jsxs)("div",{className:`absolute right-2 top-2 z-10 flex items-center gap-1.5 transition-opacity sm:right-3 sm:top-3 sm:gap-2 ${"live"===X?"opacity-0 group-hover/terminal:opacity-100 focus-within:opacity-100":"opacity-100"}`,children:["live"!==X?(0,b.jsx)(aI.Button,{type:"button",size:"icon",variant:"ghost",className:`pointer-events-auto h-7 w-7 rounded-full border backdrop-blur-sm sm:h-8 sm:w-8 ${Z?"border-[#ff8f7a]/25 bg-[#2a1616]/92 text-[#ff8f7a] hover:bg-[#351b1b]":"border-white/10 bg-[#141010]/92 text-[#c9c0b7] hover:bg-[#201818]"}`,onClick:aU,"aria-label":"Reconnect",children:"connecting"===X?(0,b.jsx)(aE.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):Z?(0,b.jsx)(ad,{className:"h-3.5 w-3.5"}):(0,b.jsx)(al.RefreshCw,{className:"h-3.5 w-3.5"})}):null,(0,b.jsx)(aI.Button,{type:"button",size:"icon",variant:"ghost",className:"pointer-events-auto h-7 w-7 rounded-full border border-white/10 bg-[#141010]/92 text-[#c9c0b7] backdrop-blur-sm hover:bg-[#201818] sm:h-8 sm:w-8",onClick:()=>av(!0),"aria-label":"Search terminal",children:(0,b.jsx)(am.Search,{className:"h-3.5 w-3.5"})})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden px-0.5 pb-1 pt-2 sm:px-1.5 sm:pb-1.5 sm:pt-3",children:aO?(0,b.jsx)("div",{ref:o,className:"h-full w-full overflow-auto rounded-[10px] border border-white/6 bg-[#050303] px-3 py-2 font-mono text-[12px] leading-5 text-[#efe8e1] touch-pan-y",onScroll:a=>{let b=a.currentTarget;az(b.scrollTop+b.clientHeight<b.scrollHeight-8)},children:(0,b.jsx)("pre",{className:"min-h-full whitespace-pre-wrap break-words",children:aP||("connecting"===X?"Connecting remote terminal...":"")})}):(0,b.jsx)("div",{ref:n,className:"h-full w-full overflow-hidden touch-manipulation",onPointerDown:a9})}),ay?(0,b.jsx)("div",{className:`pointer-events-none absolute left-1/2 z-10 -translate-x-1/2 ${aN?"bottom-24":aO?"bottom-36 sm:bottom-32":"bottom-4"}`,children:(0,b.jsxs)(aI.Button,{type:"button",size:"sm",variant:"ghost",className:"pointer-events-auto h-9 rounded-full border border-white/10 bg-[#141010]/92 px-3 text-[#efe8e1] shadow-[0_14px_28px_rgba(0,0,0,0.38)] backdrop-blur-sm hover:bg-[#201818]",onClick:a8,"aria-label":"Scroll to bottom",children:[(0,b.jsx)(ab.ChevronDown,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"ml-1 text-[11px] uppercase tracking-[0.16em]",children:"Jump to latest"})]})}):null,as?(0,b.jsx)("div",{className:"pointer-events-none absolute inset-4 z-10 flex items-center justify-center rounded-[18px] border border-dashed border-white/20 bg-black/55",children:(0,b.jsx)("span",{className:"rounded-full border border-white/10 bg-white/6 px-4 py-2 text-[12px] text-[#efe8e1]",children:aL?"Drop files or screenshots to insert uploaded paths into the terminal":"Drop files or screenshots to attach them before resuming"})}):null,aO?(0,b.jsxs)("div",{className:"border-t border-white/8 bg-[#0b0808]/98 px-3 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{ref:B,value:ah,onChange:a=>ai(a.target.value),onFocus:()=>{ar(null)},onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),bb(!0))},placeholder:"Type into terminal...",autoCapitalize:"off",autoCorrect:"off",spellCheck:!1,className:"h-10 flex-1 rounded-[12px] border border-white/10 bg-black/35 px-3 text-[14px] text-[#efe8e1] outline-none placeholder:text-[#7d746e] focus:border-white/20"}),(0,b.jsx)("button",{type:"button",className:"rounded-full border border-white/12 bg-white/6 px-3 py-2 text-[12px] text-[#efe8e1] transition hover:bg-white/10",onClick:()=>{bb(!1)},disabled:"live"!==X||0===ah.length,children:"Type"}),(0,b.jsx)("button",{type:"button",className:"rounded-full border border-[#f3f0ea]/12 bg-[#f3f0ea] px-3 py-2 text-[12px] font-medium text-[#0d0909] transition hover:bg-white disabled:cursor-not-allowed disabled:opacity-50",onClick:()=>{bb(!0)},disabled:"live"!==X,children:"Enter"})]}),(0,b.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:["Tab","Escape","Backspace","ArrowUp","ArrowDown","C-c"].map(a=>(0,b.jsx)("button",{type:"button",className:"rounded-full border border-white/12 bg-white/6 px-3 py-1.5 text-[11px] text-[#d7cec7] transition hover:bg-white/10 disabled:cursor-not-allowed disabled:opacity-50",disabled:"live"!==X,onClick:()=>{aY(a).catch(a=>{ar(a instanceof Error?a.message:"Failed to send terminal input")})},children:"C-c"===a?"Ctrl+C":a.replace("Arrow","")},a))}),(0,b.jsx)("p",{className:"mt-2 text-[11px] text-[#8e847d]",children:"Remote/mobile terminal uses a synchronized input rail so typing stays reliable while the terminal view updates."}),aq?(0,b.jsx)("p",{className:"mt-2 text-[12px] text-[#ff8f7a]",children:aq}):null]}):null,aN?(0,b.jsxs)("div",{className:"border-t border-white/8 bg-[#0b0808]/98 px-3 py-3",children:[aj.length>0?(0,b.jsx)("div",{className:"mb-2 flex flex-wrap gap-2",children:aj.map(({file:a})=>(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 rounded-full border border-white/12 bg-white/6 px-2.5 py-1 text-[11px] text-[#d7cec7]",onClick:()=>{ak(b=>b.filter(b=>b.file!==a))},children:[(0,b.jsx)(bB,{className:"h-3 w-3"}),a.name]},`${a.name}-${a.lastModified}`))}):null,(0,b.jsxs)("div",{className:"flex items-end gap-2",children:[(0,b.jsx)("textarea",{ref:C,value:af,onChange:a=>ag(a.target.value),onFocus:()=>{aR()},onKeyDown:a=>{(a.metaKey||a.ctrlKey)&&"Enter"===a.key&&(a.preventDefault(),a6())},placeholder:aQ,className:"min-h-[52px] flex-1 resize-none rounded-[14px] border border-white/10 bg-black/35 px-3 py-2 text-[13px] text-[#efe8e1] outline-none placeholder:text-[#7d746e] focus:border-white/20"}),(0,b.jsx)("input",{ref:A,type:"file",className:"hidden",multiple:!0,onChange:a=>{let b=Array.from(a.target.files??[]);b.length>0&&a2(b),a.target.value=""}}),(0,b.jsx)("button",{type:"button",className:"rounded-full border border-white/12 bg-white/6 p-2 text-[#d7cec7] transition hover:bg-white/10",onClick:()=>A.current?.click(),"aria-label":"Attach files",children:(0,b.jsx)(bB,{className:"h-4 w-4"})}),(0,b.jsx)("button",{type:"button",className:"rounded-full border border-[#f3f0ea]/12 bg-[#f3f0ea] px-4 py-2 text-[12px] font-medium text-[#0d0909] transition hover:bg-white disabled:cursor-not-allowed disabled:opacity-50",disabled:an||!af.trim()&&0===aj.length,onClick:()=>{a6()},children:an?"Starting...":"Resume"})]}),aq?(0,b.jsx)("p",{className:"mt-2 text-[12px] text-[#ff8f7a]",children:aq}):null]}):aq?(0,b.jsx)("div",{className:"absolute bottom-3 left-3 rounded-full border border-[#ff8f7a]/30 bg-[#1d1111]/90 px-3 py-1.5 text-[12px] text-[#ff8f7a] backdrop-blur-sm",children:aq}):null]})}function bX(a){return"overview"===a||"terminal"===a||"diff"===a||"preview"===a?a:"terminal"}function bY({sessionId:a,initialSession:e=null}){let j=(0,d.usePathname)(),k=(0,d.useRouter)(),l=(0,d.useSearchParams)(),{session:m,loading:n,error:o}=(0,M.useSession)(a,e),p=(0,c.useRef)(0),q=(0,c.useRef)(!1),[r,s]=(0,c.useState)(null),t=(0,c.useMemo)(()=>bX(l.get("tab")),[l]),u=(0,c.useCallback)(a=>{let b=bX(a),c=new URLSearchParams(l.toString());"terminal"===b?c.delete("tab"):c.set("tab",b);let d=c.toString(),e=d.length>0?`${j}?${d}`:j;k.replace(e,{scroll:!1})},[j,k,l]),v=(0,c.useCallback)(a=>{p.current+=1,s({nonce:p.current,...a})},[]);(0,c.useEffect)(()=>{q.current=!1,p.current=0,s(null)},[a]);let w=(0,c.useCallback)(a=>{a&&"terminal"===t&&!q.current&&(q.current=!0,u("preview"))},[t,u]);if(n)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center p-6",children:(0,b.jsx)(K.Card,{className:"w-full max-w-md",children:(0,b.jsx)(K.CardContent,{className:"py-7 text-center text-[13px] text-[var(--text-muted)]",children:"Loading session workspace..."})})});if(o)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center p-6",children:(0,b.jsx)(K.Card,{className:"w-full max-w-md border-[color:color-mix(in_srgb,var(--status-error)_45%,transparent)]",children:(0,b.jsx)(K.CardContent,{className:"py-7 text-center text-[13px] text-[var(--status-error)]",children:o})})});if(!m)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center p-6",children:(0,b.jsx)(K.Card,{className:"w-full max-w-md",children:(0,b.jsx)(K.CardContent,{className:"py-7 text-center text-[13px] text-[var(--text-muted)]",children:"Session not found"})})});let y="string"==typeof m.status?m.status:"unknown",z=m.metadata.agent?.trim()??"",A=m.metadata.model?.trim()??"",B=m.metadata.reasoningEffort?.trim()??"",C=function(a){switch(a){case"needs_input":return"input";case"working":return"working";case"running":return"running";case"spawning":return"spawn";case"queued":return"queued";default:return a.replace(/[_-]+/g," ")}}(y),D="queued"!==y&&"spawning"!==y;return(0,b.jsx)("div",{className:"flex h-full min-h-0 flex-col",children:(0,b.jsxs)(x,{value:t,onValueChange:u,className:"flex min-h-0 flex-1 flex-col gap-1.5 p-1.5 sm:gap-2 sm:p-3",children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-col gap-1.5 sm:gap-2",children:[(0,b.jsxs)(H,{className:"grid w-full grid-cols-4 sm:w-fit sm:inline-flex",children:[(0,b.jsxs)(I,{value:"overview",className:"justify-center px-2 text-[11px] sm:px-2.5 sm:text-[12px]",children:[(0,b.jsx)(h,{className:"h-3.5 w-3.5"}),"Overview"]}),(0,b.jsxs)(I,{value:"terminal",className:"justify-center px-2 text-[11px] sm:px-2.5 sm:text-[12px]",children:[(0,b.jsx)(i,{className:"h-3.5 w-3.5"}),"Terminal"]}),(0,b.jsxs)(I,{value:"preview",className:"justify-center px-2 text-[11px] sm:px-2.5 sm:text-[12px]",children:[(0,b.jsx)(g,{className:"h-3.5 w-3.5"}),"Preview"]}),(0,b.jsxs)(I,{value:"diff",className:"justify-center px-2 text-[11px] sm:px-2.5 sm:text-[12px]",children:[(0,b.jsx)(f,{className:"h-3.5 w-3.5"}),"Diff"]})]}),(0,b.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsxs)(L.Badge,{variant:"outline",className:"h-[23px] max-w-full",children:[(0,b.jsx)("span",{className:"sm:hidden",children:C}),(0,b.jsx)("span",{className:"hidden sm:inline",children:y})]}),(0,b.jsx)("span",{className:"font-mono text-[10px] text-[var(--vk-text-muted)] sm:hidden",children:a.slice(0,6)}),(0,b.jsx)("span",{className:"hidden min-w-0 truncate font-mono text-[10px] text-[var(--vk-text-muted)] sm:block",children:a})]}),D?(0,b.jsx)(bA,{projectId:m.projectId}):null]})]}),(0,b.jsxs)("div",{className:"relative min-h-0 flex-1",children:[(0,b.jsx)(J,{value:"overview",className:"min-h-0 h-full overflow-auto",children:(0,b.jsx)(_,{session:m},a)}),(0,b.jsx)(J,{value:"terminal",forceMount:!0,className:"min-h-0 h-full overflow-hidden rounded-[3px] border border-[var(--vk-border)] bg-[#212121] focus-visible:outline-none [&[hidden]]:block data-[state=inactive]:pointer-events-none data-[state=inactive]:absolute data-[state=inactive]:inset-0 data-[state=inactive]:invisible data-[state=inactive]:opacity-0",children:(0,b.jsx)(bW,{sessionId:a,agentName:z,projectId:m.projectId,sessionModel:A,sessionReasoningEffort:B,sessionState:y,active:"terminal"===t,pendingInsert:r},a)}),(0,b.jsx)(J,{value:"preview",className:"min-h-0 h-full overflow-auto focus-visible:outline-none [&[hidden]]:block data-[state=inactive]:pointer-events-none data-[state=inactive]:absolute data-[state=inactive]:inset-0 data-[state=inactive]:invisible data-[state=inactive]:opacity-0",children:"preview"===t?(0,b.jsx)(br,{sessionId:a,active:!0,onQueueTerminalInsert:v,onConnectionChange:w},a):null}),(0,b.jsx)(J,{value:"diff",className:"min-h-0 h-full overflow-auto",children:(0,b.jsx)(az,{sessionId:a},a)})]})]},a)})}a.s(["SessionDetail",()=>bY],37483)}];
3
+ ${a}`:a)},[X,aN,l,a_]);let bb=(0,c.useCallback)(a=>{let b=r.current;b&&0!==aw.trim().length&&("next"===a?b.findNext(aw,{incremental:!0,caseSensitive:!1}):b.findPrevious(aw,{incremental:!0,caseSensitive:!1}))},[aw]),bc=(0,c.useCallback)(()=>{if(aQ){let a=o.current;if(!a)return;a.scrollTop=a.scrollHeight,az(!1);return}let a=p.current;a&&(a.scrollToBottom(),a1(),E.current&&(aS?B.current?.focus():a.focus()))},[aQ,aS,a1]),bd=(0,c.useCallback)(()=>{if(aS)return void B.current?.focus();let a=p.current;if(a){try{a.focus()}catch{return}a5(!1)}},[a5,aS]),be=(0,c.useCallback)(a=>{"touch"!==a.pointerType&&bd()},[bd]),bf=(0,c.useCallback)(()=>{av(!1),ax(""),E.current&&(aS?B.current?.focus():p.current?.focus())},[aS]);(0,c.useEffect)(()=>{aQ&&au&&(av(!1),ax(""))},[aQ,au]);let bg=(0,c.useCallback)(async a=>{if(!ah.trim()){if(a)try{await a0("Enter"),ar(null)}catch(a){ar(a instanceof Error?a.message:"Failed to send terminal input")}return}try{await a_(ah),a&&await a0("Enter"),ai(""),ar(null),requestAnimationFrame(()=>{B.current?.focus()})}catch(a){ar(a instanceof Error?a.message:"Failed to send terminal input")}},[ah,a_,a0]);return(0,b.jsxs)("div",{className:"group/terminal relative flex h-full min-h-0 flex-col overflow-hidden rounded-[14px] border border-white/10 bg-[#060404] shadow-[inset_0_1px_0_rgba(255,255,255,0.04)]",onDragOver:a=>{a.preventDefault(),at(!0)},onDragLeave:a=>{a.currentTarget.contains(a.relatedTarget)||at(!1)},onDrop:async a=>{a.preventDefault(),at(!1);let b=Array.from(a.dataTransfer.files??[]),c=a.dataTransfer.getData("text/plain").trim();if(b.length>0)return void a8(b);let d=bF(c);if(d)return void ar(bU(d));if(c)try{if(aN&&"live"===X){let a=c.startsWith("/")?bM(c):c;await a_(a);return}ag(a=>a.length>0?`${a}
4
+ ${c}`:c)}catch(a){ar(a instanceof Error?a.message:"Failed to write drop payload")}},children:[!aQ&&au?(0,b.jsxs)("div",{className:"absolute right-2 top-2 z-10 flex max-w-[calc(100%-1rem)] items-center rounded bg-[#141010]/95 pl-2 pr-0.5 shadow-lg ring-1 ring-white/10 backdrop-blur sm:right-3 sm:top-3 sm:max-w-[calc(100%-1.5rem)]",children:[(0,b.jsx)(am.Search,{className:"h-3.5 w-3.5 text-[#8e847d]"}),(0,b.jsx)("input",{value:aw,onChange:a=>ax(a.target.value),onKeyDown:a=>{"Enter"===a.key?(a.preventDefault(),bb(a.shiftKey?"prev":"next")):"Escape"===a.key&&(a.preventDefault(),bf())},placeholder:"Find",className:"h-6 w-20 min-w-0 bg-transparent px-2 text-[11px] text-[#efe8e1] outline-none placeholder:text-[#7d746e] sm:w-28 sm:text-[12px]"}),(0,b.jsx)(aI.Button,{type:"button",size:"icon",variant:"ghost",className:"h-6 w-6 text-[#c9c0b7]",onClick:()=>bb("prev"),"aria-label":"Find previous",children:(0,b.jsx)("span",{className:"text-[11px]",children:"↑"})}),(0,b.jsx)(aI.Button,{type:"button",size:"icon",variant:"ghost",className:"h-6 w-6 text-[#c9c0b7]",onClick:()=>bb("next"),"aria-label":"Find next",children:(0,b.jsx)("span",{className:"text-[11px]",children:"↓"})}),(0,b.jsx)(aI.Button,{type:"button",size:"icon",variant:"ghost",className:"h-6 w-6 text-[#c9c0b7]",onClick:bf,"aria-label":"Close search",children:(0,b.jsx)(ao.X,{className:"h-3.5 w-3.5"})})]}):aQ?null:(0,b.jsxs)("div",{className:`absolute right-2 top-2 z-10 flex items-center gap-1.5 transition-opacity sm:right-3 sm:top-3 sm:gap-2 ${"live"===X?"opacity-0 group-hover/terminal:opacity-100 focus-within:opacity-100":"opacity-100"}`,children:["live"!==X?(0,b.jsx)(aI.Button,{type:"button",size:"icon",variant:"ghost",className:`pointer-events-auto h-7 w-7 rounded-full border backdrop-blur-sm sm:h-8 sm:w-8 ${Z?"border-[#ff8f7a]/25 bg-[#2a1616]/92 text-[#ff8f7a] hover:bg-[#351b1b]":"border-white/10 bg-[#141010]/92 text-[#c9c0b7] hover:bg-[#201818]"}`,onClick:aY,"aria-label":"Reconnect",children:"connecting"===X?(0,b.jsx)(aE.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):Z?(0,b.jsx)(ad,{className:"h-3.5 w-3.5"}):(0,b.jsx)(al.RefreshCw,{className:"h-3.5 w-3.5"})}):null,(0,b.jsx)(aI.Button,{type:"button",size:"icon",variant:"ghost",className:"pointer-events-auto h-7 w-7 rounded-full border border-white/10 bg-[#141010]/92 text-[#c9c0b7] backdrop-blur-sm hover:bg-[#201818] sm:h-8 sm:w-8",onClick:()=>av(!0),"aria-label":"Search terminal",children:(0,b.jsx)(am.Search,{className:"h-3.5 w-3.5"})})]}),(0,b.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden px-0.5 pb-1 pt-2 sm:px-1.5 sm:pb-1.5 sm:pt-3",children:aQ?(0,b.jsx)("div",{ref:o,className:"h-full w-full overflow-auto rounded-[10px] border border-white/6 bg-[#050303] px-3 py-2 font-mono text-[12px] leading-5 text-[#efe8e1] touch-pan-y",onScroll:a=>{let b=a.currentTarget;az(b.scrollTop+b.clientHeight<b.scrollHeight-8)},children:(0,b.jsx)("pre",{className:"min-h-full whitespace-pre-wrap break-words",children:aT||("connecting"===X?"Connecting remote terminal...":"")})}):(0,b.jsx)("div",{ref:n,className:"h-full w-full overflow-hidden touch-pan-y",onClick:bd,onPointerDown:be})}),ay?(0,b.jsx)("div",{className:`pointer-events-none absolute left-1/2 z-10 -translate-x-1/2 ${aP?"bottom-24":aS?"bottom-36 sm:bottom-32":"bottom-4"}`,children:(0,b.jsxs)(aI.Button,{type:"button",size:"sm",variant:"ghost",className:"pointer-events-auto h-9 rounded-full border border-white/10 bg-[#141010]/92 px-3 text-[#efe8e1] shadow-[0_14px_28px_rgba(0,0,0,0.38)] backdrop-blur-sm hover:bg-[#201818]",onClick:bc,"aria-label":"Scroll to bottom",children:[(0,b.jsx)(ab.ChevronDown,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"ml-1 text-[11px] uppercase tracking-[0.16em]",children:"Jump to latest"})]})}):null,as?(0,b.jsx)("div",{className:"pointer-events-none absolute inset-4 z-10 flex items-center justify-center rounded-[18px] border border-dashed border-white/20 bg-black/55",children:(0,b.jsx)("span",{className:"rounded-full border border-white/10 bg-white/6 px-4 py-2 text-[12px] text-[#efe8e1]",children:aN?"Drop files or screenshots to insert uploaded paths into the terminal":"Drop files or screenshots to attach them before resuming"})}):null,aS?(0,b.jsxs)("div",{className:"border-t border-white/8 bg-[#0b0808]/98 px-3 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{ref:B,value:ah,onChange:a=>ai(a.target.value),onFocus:()=>{ar(null)},onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),bg(!0))},placeholder:"Type into terminal...",autoCapitalize:"off",autoCorrect:"off",autoComplete:"off",enterKeyHint:"send",inputMode:"text",spellCheck:!1,className:"h-10 flex-1 rounded-[12px] border border-white/10 bg-black/35 px-3 text-[14px] text-[#efe8e1] outline-none placeholder:text-[#7d746e] focus:border-white/20"}),(0,b.jsx)("button",{type:"button",className:"rounded-full border border-white/12 bg-white/6 px-3 py-2 text-[12px] text-[#efe8e1] transition hover:bg-white/10",onClick:()=>{bg(!1)},disabled:"live"!==X||0===ah.length,children:"Type"}),(0,b.jsx)("button",{type:"button",className:"rounded-full border border-[#f3f0ea]/12 bg-[#f3f0ea] px-3 py-2 text-[12px] font-medium text-[#0d0909] transition hover:bg-white disabled:cursor-not-allowed disabled:opacity-50",onClick:()=>{bg(!0)},disabled:"live"!==X,children:"Enter"})]}),(0,b.jsx)("div",{className:"mt-2 flex flex-wrap gap-2",children:["Tab","Escape","Backspace","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","C-c"].map(a=>(0,b.jsx)("button",{type:"button",className:"rounded-full border border-white/12 bg-white/6 px-3 py-1.5 text-[11px] text-[#d7cec7] transition hover:bg-white/10 disabled:cursor-not-allowed disabled:opacity-50",disabled:"live"!==X,onClick:()=>{a0(a).catch(a=>{ar(a instanceof Error?a.message:"Failed to send terminal input")})},children:"C-c"===a?"Ctrl+C":a.replace("Arrow","")},a))}),(0,b.jsx)("p",{className:"mt-2 text-[11px] text-[#8e847d]",children:aQ?"Remote/mobile terminal uses a synchronized input rail so typing stays reliable while the terminal view updates.":"Mobile terminal uses a synchronized input rail so your draft stays visible while the live console keeps its place."}),aq?(0,b.jsx)("p",{className:"mt-2 text-[12px] text-[#ff8f7a]",children:aq}):null]}):null,aP?(0,b.jsxs)("div",{className:"border-t border-white/8 bg-[#0b0808]/98 px-3 py-3",children:[aj.length>0?(0,b.jsx)("div",{className:"mb-2 flex flex-wrap gap-2",children:aj.map(({file:a})=>(0,b.jsxs)("button",{type:"button",className:"inline-flex items-center gap-1 rounded-full border border-white/12 bg-white/6 px-2.5 py-1 text-[11px] text-[#d7cec7]",onClick:()=>{ak(b=>b.filter(b=>b.file!==a))},children:[(0,b.jsx)(bB,{className:"h-3 w-3"}),a.name]},`${a.name}-${a.lastModified}`))}):null,(0,b.jsxs)("div",{className:"flex items-end gap-2",children:[(0,b.jsx)("textarea",{ref:C,value:af,onChange:a=>ag(a.target.value),onFocus:()=>{aV()},onKeyDown:a=>{(a.metaKey||a.ctrlKey)&&"Enter"===a.key&&(a.preventDefault(),ba())},placeholder:aU,className:"min-h-[52px] flex-1 resize-none rounded-[14px] border border-white/10 bg-black/35 px-3 py-2 text-[13px] text-[#efe8e1] outline-none placeholder:text-[#7d746e] focus:border-white/20"}),(0,b.jsx)("input",{ref:A,type:"file",className:"hidden",multiple:!0,onChange:a=>{let b=Array.from(a.target.files??[]);b.length>0&&a6(b),a.target.value=""}}),(0,b.jsx)("button",{type:"button",className:"rounded-full border border-white/12 bg-white/6 p-2 text-[#d7cec7] transition hover:bg-white/10",onClick:()=>A.current?.click(),"aria-label":"Attach files",children:(0,b.jsx)(bB,{className:"h-4 w-4"})}),(0,b.jsx)("button",{type:"button",className:"rounded-full border border-[#f3f0ea]/12 bg-[#f3f0ea] px-4 py-2 text-[12px] font-medium text-[#0d0909] transition hover:bg-white disabled:cursor-not-allowed disabled:opacity-50",disabled:an||!af.trim()&&0===aj.length,onClick:()=>{ba()},children:an?"Starting...":"Resume"})]}),aq?(0,b.jsx)("p",{className:"mt-2 text-[12px] text-[#ff8f7a]",children:aq}):null]}):aq?(0,b.jsx)("div",{className:"absolute bottom-3 left-3 rounded-full border border-[#ff8f7a]/30 bg-[#1d1111]/90 px-3 py-1.5 text-[12px] text-[#ff8f7a] backdrop-blur-sm",children:aq}):null]})}function bX(a){return"overview"===a||"terminal"===a||"diff"===a||"preview"===a?a:"terminal"}function bY({sessionId:a,initialSession:e=null}){let j=(0,d.usePathname)(),k=(0,d.useRouter)(),l=(0,d.useSearchParams)(),{session:m,loading:n,error:o}=(0,M.useSession)(a,e),p=(0,c.useRef)(0),q=(0,c.useRef)(!1),[r,s]=(0,c.useState)(null),t=(0,c.useMemo)(()=>bX(l.get("tab")),[l]),u=(0,c.useCallback)(a=>{let b=bX(a),c=new URLSearchParams(l.toString());"terminal"===b?c.delete("tab"):c.set("tab",b);let d=c.toString(),e=d.length>0?`${j}?${d}`:j;k.replace(e,{scroll:!1})},[j,k,l]),v=(0,c.useCallback)(a=>{p.current+=1,s({nonce:p.current,...a})},[]);(0,c.useEffect)(()=>{q.current=!1,p.current=0,s(null)},[a]);let w=(0,c.useCallback)(a=>{a&&"terminal"===t&&!q.current&&(q.current=!0,u("preview"))},[t,u]);if(n)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center p-6",children:(0,b.jsx)(K.Card,{className:"w-full max-w-md",children:(0,b.jsx)(K.CardContent,{className:"py-7 text-center text-[13px] text-[var(--text-muted)]",children:"Loading session workspace..."})})});if(o)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center p-6",children:(0,b.jsx)(K.Card,{className:"w-full max-w-md border-[color:color-mix(in_srgb,var(--status-error)_45%,transparent)]",children:(0,b.jsx)(K.CardContent,{className:"py-7 text-center text-[13px] text-[var(--status-error)]",children:o})})});if(!m)return(0,b.jsx)("div",{className:"flex h-full items-center justify-center p-6",children:(0,b.jsx)(K.Card,{className:"w-full max-w-md",children:(0,b.jsx)(K.CardContent,{className:"py-7 text-center text-[13px] text-[var(--text-muted)]",children:"Session not found"})})});let y="string"==typeof m.status?m.status:"unknown",z=m.metadata.agent?.trim()??"",A=m.metadata.model?.trim()??"",B=m.metadata.reasoningEffort?.trim()??"",C=function(a){switch(a){case"needs_input":return"input";case"working":return"working";case"running":return"running";case"spawning":return"spawn";case"queued":return"queued";default:return a.replace(/[_-]+/g," ")}}(y),D="queued"!==y&&"spawning"!==y;return(0,b.jsx)("div",{className:"flex h-full min-h-0 flex-col",children:(0,b.jsxs)(x,{value:t,onValueChange:u,className:"flex min-h-0 flex-1 flex-col gap-1.5 p-1.5 sm:gap-2 sm:p-3",children:[(0,b.jsxs)("div",{className:"flex min-w-0 flex-col gap-1.5 sm:gap-2",children:[(0,b.jsxs)(H,{className:"grid w-full grid-cols-4 sm:w-fit sm:inline-flex",children:[(0,b.jsxs)(I,{value:"overview",className:"justify-center px-2 text-[11px] sm:px-2.5 sm:text-[12px]",children:[(0,b.jsx)(h,{className:"h-3.5 w-3.5"}),"Overview"]}),(0,b.jsxs)(I,{value:"terminal",className:"justify-center px-2 text-[11px] sm:px-2.5 sm:text-[12px]",children:[(0,b.jsx)(i,{className:"h-3.5 w-3.5"}),"Terminal"]}),(0,b.jsxs)(I,{value:"preview",className:"justify-center px-2 text-[11px] sm:px-2.5 sm:text-[12px]",children:[(0,b.jsx)(g,{className:"h-3.5 w-3.5"}),"Preview"]}),(0,b.jsxs)(I,{value:"diff",className:"justify-center px-2 text-[11px] sm:px-2.5 sm:text-[12px]",children:[(0,b.jsx)(f,{className:"h-3.5 w-3.5"}),"Diff"]})]}),(0,b.jsxs)("div",{className:"flex min-w-0 items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[(0,b.jsxs)(L.Badge,{variant:"outline",className:"h-[23px] max-w-full",children:[(0,b.jsx)("span",{className:"sm:hidden",children:C}),(0,b.jsx)("span",{className:"hidden sm:inline",children:y})]}),(0,b.jsx)("span",{className:"font-mono text-[10px] text-[var(--vk-text-muted)] sm:hidden",children:a.slice(0,6)}),(0,b.jsx)("span",{className:"hidden min-w-0 truncate font-mono text-[10px] text-[var(--vk-text-muted)] sm:block",children:a})]}),D?(0,b.jsx)(bA,{projectId:m.projectId}):null]})]}),(0,b.jsxs)("div",{className:"relative min-h-0 flex-1",children:[(0,b.jsx)(J,{value:"overview",className:"min-h-0 h-full overflow-auto",children:(0,b.jsx)(_,{session:m},a)}),(0,b.jsx)(J,{value:"terminal",forceMount:!0,className:"min-h-0 h-full overflow-hidden rounded-[3px] border border-[var(--vk-border)] bg-[#212121] focus-visible:outline-none [&[hidden]]:block data-[state=inactive]:pointer-events-none data-[state=inactive]:absolute data-[state=inactive]:inset-0 data-[state=inactive]:invisible data-[state=inactive]:opacity-0",children:(0,b.jsx)(bW,{sessionId:a,agentName:z,projectId:m.projectId,sessionModel:A,sessionReasoningEffort:B,sessionState:y,active:"terminal"===t,pendingInsert:r},a)}),(0,b.jsx)(J,{value:"preview",className:"min-h-0 h-full overflow-auto focus-visible:outline-none [&[hidden]]:block data-[state=inactive]:pointer-events-none data-[state=inactive]:absolute data-[state=inactive]:inset-0 data-[state=inactive]:invisible data-[state=inactive]:opacity-0",children:"preview"===t?(0,b.jsx)(br,{sessionId:a,active:!0,onQueueTerminalInsert:v,onConnectionChange:w},a):null}),(0,b.jsx)(J,{value:"diff",className:"min-h-0 h-full overflow-auto",children:(0,b.jsx)(az,{sessionId:a},a)})]})]},a)})}a.s(["SessionDetail",()=>bY],37483)}];
5
5
 
6
6
  //# sourceMappingURL=packages_web_src_components_sessions_SessionDetail_tsx_5fcad270._.js.map