agent-relay-server 0.35.4 → 0.36.1

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 (125) hide show
  1. package/docs/openapi.json +68 -1
  2. package/package.json +2 -2
  3. package/public/assets/{activity-CPuZGkeP.js → activity-C3mkM6AU.js} +2 -2
  4. package/public/assets/{activity-CPuZGkeP.js.map → activity-C3mkM6AU.js.map} +1 -1
  5. package/public/assets/{agent-profiles-Bs8MAW6j.js → agent-profiles-DS4_jLPT.js} +2 -2
  6. package/public/assets/{agent-profiles-Bs8MAW6j.js.map → agent-profiles-DS4_jLPT.js.map} +1 -1
  7. package/public/assets/agents-CAhQO7JH.js +2 -0
  8. package/public/assets/agents-CAhQO7JH.js.map +1 -0
  9. package/public/assets/{analytics-inmkBD_j.js → analytics-BwihhhNn.js} +3 -3
  10. package/public/assets/{analytics-inmkBD_j.js.map → analytics-BwihhhNn.js.map} +1 -1
  11. package/public/assets/{automation-DRN2lcqQ.js → automation-BLXToUiU.js} +2 -2
  12. package/public/assets/{automation-DRN2lcqQ.js.map → automation-BLXToUiU.js.map} +1 -1
  13. package/public/assets/{badge-t8zAwHW9.js → badge-JVybSpzR.js} +2 -2
  14. package/public/assets/{badge-t8zAwHW9.js.map → badge-JVybSpzR.js.map} +1 -1
  15. package/public/assets/{branch-state-badge-EliCEAQI.js → branch-state-badge-D8-T2c1K.js} +2 -2
  16. package/public/assets/{branch-state-badge-EliCEAQI.js.map → branch-state-badge-D8-T2c1K.js.map} +1 -1
  17. package/public/assets/{button-DDA5P2YQ.js → button-BsMqBNJb.js} +2 -2
  18. package/public/assets/{button-DDA5P2YQ.js.map → button-BsMqBNJb.js.map} +1 -1
  19. package/public/assets/card-I8w4U656.js +2 -0
  20. package/public/assets/{card-CggxP1h9.js.map → card-I8w4U656.js.map} +1 -1
  21. package/public/assets/{channels-BzSpsE5h.js → channels-ppN8k4hu.js} +2 -2
  22. package/public/assets/{channels-BzSpsE5h.js.map → channels-ppN8k4hu.js.map} +1 -1
  23. package/public/assets/chat-8iIPyww9.js +2 -0
  24. package/public/assets/chat-8iIPyww9.js.map +1 -0
  25. package/public/assets/{connectors-DoUgct8f.js → connectors-CL9BALhF.js} +2 -2
  26. package/public/assets/{connectors-DoUgct8f.js.map → connectors-CL9BALhF.js.map} +1 -1
  27. package/public/assets/copy-button-B-XlL8nF.js +2 -0
  28. package/public/assets/{copy-button-CE8e2c-F.js.map → copy-button-B-XlL8nF.js.map} +1 -1
  29. package/public/assets/display-ConJ9cJB.js +3 -0
  30. package/public/assets/{display-Bebqs1qu.js.map → display-ConJ9cJB.js.map} +1 -1
  31. package/public/assets/{dist-CiWi_f7V.js → dist-BQ52MnS1.js} +2 -2
  32. package/public/assets/{dist-CiWi_f7V.js.map → dist-BQ52MnS1.js.map} +1 -1
  33. package/public/assets/{dist-CHi40_tZ.js → dist-BgfF2Rlm.js} +2 -2
  34. package/public/assets/{dist-CHi40_tZ.js.map → dist-BgfF2Rlm.js.map} +1 -1
  35. package/public/assets/dist-CnJzBTp1.js +2 -0
  36. package/public/assets/{dist-DTLaCErY.js.map → dist-CnJzBTp1.js.map} +1 -1
  37. package/public/assets/{dist-xorgjFcF.js → dist-CrBurS6i.js} +2 -2
  38. package/public/assets/{dist-xorgjFcF.js.map → dist-CrBurS6i.js.map} +1 -1
  39. package/public/assets/dist-D6iXJzms.js +2 -0
  40. package/public/assets/{dist-BmYJ5xuf.js.map → dist-D6iXJzms.js.map} +1 -1
  41. package/public/assets/{dist-CkiXMjV0.js → dist-DRlgXPi_.js} +2 -2
  42. package/public/assets/{dist-CkiXMjV0.js.map → dist-DRlgXPi_.js.map} +1 -1
  43. package/public/assets/{dist-B3igiXqp.js → dist-DSNhRDNh.js} +2 -2
  44. package/public/assets/{dist-B3igiXqp.js.map → dist-DSNhRDNh.js.map} +1 -1
  45. package/public/assets/{dist-C3Yx04R4.js → dist-SqFV12iO.js} +2 -2
  46. package/public/assets/{dist-C3Yx04R4.js.map → dist-SqFV12iO.js.map} +1 -1
  47. package/public/assets/{es2015-BDK_SBFZ.js → es2015-iucXYTIE.js} +2 -2
  48. package/public/assets/{es2015-BDK_SBFZ.js.map → es2015-iucXYTIE.js.map} +1 -1
  49. package/public/assets/{formatted-body-impl-DP9iZsd4.js → formatted-body-impl-BHH0wzY7.js} +2 -2
  50. package/public/assets/{formatted-body-impl-DP9iZsd4.js.map → formatted-body-impl-BHH0wzY7.js.map} +1 -1
  51. package/public/assets/index-3pO43nJo.css +2 -0
  52. package/public/assets/index-CaauKXl9.js +21 -0
  53. package/public/assets/index-CaauKXl9.js.map +1 -0
  54. package/public/assets/{input-BW9UD3FM.js → input-dPzf0luy.js} +2 -2
  55. package/public/assets/{input-BW9UD3FM.js.map → input-dPzf0luy.js.map} +1 -1
  56. package/public/assets/{insights-yJFgCa3o.js → insights-5CDeJfoX.js} +2 -2
  57. package/public/assets/{insights-yJFgCa3o.js.map → insights-5CDeJfoX.js.map} +1 -1
  58. package/public/assets/{integrations-CUv4i_4i.js → integrations-DX55ARy0.js} +2 -2
  59. package/public/assets/{integrations-CUv4i_4i.js.map → integrations-DX55ARy0.js.map} +1 -1
  60. package/public/assets/{lib-ZEIADKGq.js → lib-BAE--T4O.js} +3 -3
  61. package/public/assets/{lib-ZEIADKGq.js.map → lib-BAE--T4O.js.map} +1 -1
  62. package/public/assets/lucide-react-DLQFnqNm.js +9 -0
  63. package/public/assets/{lucide-react-CD8Xl2U3.js.map → lucide-react-DLQFnqNm.js.map} +1 -1
  64. package/public/assets/{maintenance-DtfpsMZa.js → maintenance-9n_rJCHT.js} +2 -2
  65. package/public/assets/{maintenance-DtfpsMZa.js.map → maintenance-9n_rJCHT.js.map} +1 -1
  66. package/public/assets/{managed-agents-C5pzetBh.js → managed-agents-Rp2-xpBx.js} +2 -2
  67. package/public/assets/{managed-agents-C5pzetBh.js.map → managed-agents-Rp2-xpBx.js.map} +1 -1
  68. package/public/assets/{markdown-preview-impl-4s9YDGM7.js → markdown-preview-impl-YfJsGh6I.js} +2 -2
  69. package/public/assets/{markdown-preview-impl-4s9YDGM7.js.map → markdown-preview-impl-YfJsGh6I.js.map} +1 -1
  70. package/public/assets/memory-BQONtGQS.js +2 -0
  71. package/public/assets/{memory-BWfDbph3.js.map → memory-BQONtGQS.js.map} +1 -1
  72. package/public/assets/{messages-C8cP25kp.js → messages-DGqpkH72.js} +2 -2
  73. package/public/assets/{messages-C8cP25kp.js.map → messages-DGqpkH72.js.map} +1 -1
  74. package/public/assets/{orchestrators-Clu8MNKo.js → orchestrators-b8k9QoGv.js} +2 -2
  75. package/public/assets/{orchestrators-Clu8MNKo.js.map → orchestrators-b8k9QoGv.js.map} +1 -1
  76. package/public/assets/{overview-CXcGh2D6.js → overview-DSU_CggA.js} +2 -2
  77. package/public/assets/{overview-CXcGh2D6.js.map → overview-DSU_CggA.js.map} +1 -1
  78. package/public/assets/pairs-DGocNC1U.js +2 -0
  79. package/public/assets/{pairs-eOZl_lQn.js.map → pairs-DGocNC1U.js.map} +1 -1
  80. package/public/assets/{react-dom-CX8inunm.js → react-dom-CzfKBOnw.js} +2 -2
  81. package/public/assets/{react-dom-CX8inunm.js.map → react-dom-CzfKBOnw.js.map} +1 -1
  82. package/public/assets/{security-CA03sHyP.js → security-BSh0QxOl.js} +2 -2
  83. package/public/assets/{security-CA03sHyP.js.map → security-BSh0QxOl.js.map} +1 -1
  84. package/public/assets/{settings-KTOwGJiW.js → settings-C03CAJgO.js} +7 -7
  85. package/public/assets/{settings-KTOwGJiW.js.map → settings-C03CAJgO.js.map} +1 -1
  86. package/public/assets/store-DKVWC6Uh.js +9 -0
  87. package/public/assets/store-DKVWC6Uh.js.map +1 -0
  88. package/public/assets/{switch-22dlDUXs.js → switch-W2_mhdrR.js} +2 -2
  89. package/public/assets/{switch-22dlDUXs.js.map → switch-W2_mhdrR.js.map} +1 -1
  90. package/public/assets/tasks-rKbuUPOk.js +2 -0
  91. package/public/assets/{tasks-D6jbr2y6.js.map → tasks-rKbuUPOk.js.map} +1 -1
  92. package/public/assets/{terminal-viewer-impl-DFODXxpG.js → terminal-viewer-impl-CA8u4jh3.js} +3 -3
  93. package/public/assets/{terminal-viewer-impl-DFODXxpG.js.map → terminal-viewer-impl-CA8u4jh3.js.map} +1 -1
  94. package/public/assets/{use-keyboard-viewport-DxY_xJV5.js → use-keyboard-viewport-bZ1J-ZnH.js} +2 -2
  95. package/public/assets/{use-keyboard-viewport-DxY_xJV5.js.map → use-keyboard-viewport-bZ1J-ZnH.js.map} +1 -1
  96. package/public/assets/work-queue-DOsA9s4M.js +2 -0
  97. package/public/assets/{work-queue-BWWckTVy.js.map → work-queue-DOsA9s4M.js.map} +1 -1
  98. package/public/assets/{workspaces-D7lsWShY.js → workspaces-CoC2nflZ.js} +3 -3
  99. package/public/assets/{workspaces-D7lsWShY.js.map → workspaces-CoC2nflZ.js.map} +1 -1
  100. package/public/index.html +20 -20
  101. package/src/db/message-reads.ts +54 -1
  102. package/src/db/migrations.ts +1 -0
  103. package/src/routes/_shared.ts +2 -1
  104. package/src/routes/agents.ts +21 -2
  105. package/src/routes/index.ts +2 -1
  106. package/src/sse.ts +7 -2
  107. package/public/assets/agents-Bz4eJ4zH.js +0 -2
  108. package/public/assets/agents-Bz4eJ4zH.js.map +0 -1
  109. package/public/assets/card-CggxP1h9.js +0 -2
  110. package/public/assets/chat-Dn3TEhl0.js +0 -2
  111. package/public/assets/chat-Dn3TEhl0.js.map +0 -1
  112. package/public/assets/copy-button-CE8e2c-F.js +0 -2
  113. package/public/assets/display-Bebqs1qu.js +0 -3
  114. package/public/assets/dist-BmYJ5xuf.js +0 -2
  115. package/public/assets/dist-DTLaCErY.js +0 -2
  116. package/public/assets/index-BL8r94_U.js +0 -21
  117. package/public/assets/index-BL8r94_U.js.map +0 -1
  118. package/public/assets/index-DeSwlD3c.css +0 -2
  119. package/public/assets/lucide-react-CD8Xl2U3.js +0 -9
  120. package/public/assets/memory-BWfDbph3.js +0 -2
  121. package/public/assets/pairs-eOZl_lQn.js +0 -2
  122. package/public/assets/store-CICRhg1m.js +0 -9
  123. package/public/assets/store-CICRhg1m.js.map +0 -1
  124. package/public/assets/tasks-D6jbr2y6.js +0 -2
  125. package/public/assets/work-queue-BWWckTVy.js +0 -2
@@ -1,2 +1,2 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{Dn as t,Vn as n,kn as r}from"./lucide-react-CD8Xl2U3.js";import{o as i}from"./dist-CiWi_f7V.js";import{t as a}from"./dist-CkiXMjV0.js";import{i as o,n as s,t as c}from"./dist-C3Yx04R4.js";import{t as l}from"./dist-CHi40_tZ.js";var u=e(n(),1);function d(e){let t=u.useRef({value:e,previous:e});return u.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}function f(e){let[t,n]=u.useState(void 0);return c(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var p=r(),m=`Switch`,[h,g]=o(m),[_,v]=h(m),y=u.forwardRef((e,t)=>{let{__scopeSwitch:n,name:r,checked:o,defaultChecked:c,required:d,disabled:f,value:h=`on`,onCheckedChange:g,form:v,...y}=e,[b,x]=u.useState(null),S=i(t,e=>x(e)),T=u.useRef(!1),E=b?v||!!b.closest(`form`):!0,[D,O]=l({prop:o,defaultProp:c??!1,onChange:g,caller:m});return(0,p.jsxs)(_,{scope:n,checked:D,disabled:f,children:[(0,p.jsx)(a.button,{type:`button`,role:`switch`,"aria-checked":D,"aria-required":d,"data-state":w(D),"data-disabled":f?``:void 0,disabled:f,value:h,...y,ref:S,onClick:s(e.onClick,e=>{O(e=>!e),E&&(T.current=e.isPropagationStopped(),T.current||e.stopPropagation())})}),E&&(0,p.jsx)(C,{control:b,bubbles:!T.current,name:r,value:h,checked:D,required:d,disabled:f,form:v,style:{transform:`translateX(-100%)`}})]})});y.displayName=m;var b=`SwitchThumb`,x=u.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=v(b,n);return(0,p.jsx)(a.span,{"data-state":w(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});x.displayName=b;var S=`SwitchBubbleInput`,C=u.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:r=!0,...a},o)=>{let s=u.useRef(null),c=i(s,o),l=d(n),m=f(t);return u.useEffect(()=>{let e=s.current;if(!e)return;let t=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(t,`checked`).set;if(l!==n&&i){let t=new Event(`click`,{bubbles:r});i.call(e,n),e.dispatchEvent(t)}},[l,n,r]),(0,p.jsx)(`input`,{type:`checkbox`,"aria-hidden":!0,defaultChecked:n,...a,tabIndex:-1,ref:c,style:{...a.style,...m,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});C.displayName=S;function w(e){return e?`checked`:`unchecked`}var T=y,E=x;function D({className:e,size:n=`default`,...r}){return(0,p.jsx)(T,{"data-slot":`switch`,"data-size":n,className:t(`peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50`,e),...r,children:(0,p.jsx)(E,{"data-slot":`switch-thumb`,className:`pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground`})})}export{f as n,d as r,D as t};
2
- //# sourceMappingURL=switch-22dlDUXs.js.map
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{An as t,Hn as n,On as r}from"./lucide-react-DLQFnqNm.js";import{o as i}from"./dist-BQ52MnS1.js";import{t as a}from"./dist-DRlgXPi_.js";import{i as o,n as s,t as c}from"./dist-SqFV12iO.js";import{t as l}from"./dist-BgfF2Rlm.js";var u=e(n(),1);function d(e){let t=u.useRef({value:e,previous:e});return u.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}function f(e){let[t,n]=u.useState(void 0);return c(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var p=t(),m=`Switch`,[h,g]=o(m),[_,v]=h(m),y=u.forwardRef((e,t)=>{let{__scopeSwitch:n,name:r,checked:o,defaultChecked:c,required:d,disabled:f,value:h=`on`,onCheckedChange:g,form:v,...y}=e,[b,x]=u.useState(null),S=i(t,e=>x(e)),T=u.useRef(!1),E=b?v||!!b.closest(`form`):!0,[D,O]=l({prop:o,defaultProp:c??!1,onChange:g,caller:m});return(0,p.jsxs)(_,{scope:n,checked:D,disabled:f,children:[(0,p.jsx)(a.button,{type:`button`,role:`switch`,"aria-checked":D,"aria-required":d,"data-state":w(D),"data-disabled":f?``:void 0,disabled:f,value:h,...y,ref:S,onClick:s(e.onClick,e=>{O(e=>!e),E&&(T.current=e.isPropagationStopped(),T.current||e.stopPropagation())})}),E&&(0,p.jsx)(C,{control:b,bubbles:!T.current,name:r,value:h,checked:D,required:d,disabled:f,form:v,style:{transform:`translateX(-100%)`}})]})});y.displayName=m;var b=`SwitchThumb`,x=u.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=v(b,n);return(0,p.jsx)(a.span,{"data-state":w(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});x.displayName=b;var S=`SwitchBubbleInput`,C=u.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:r=!0,...a},o)=>{let s=u.useRef(null),c=i(s,o),l=d(n),m=f(t);return u.useEffect(()=>{let e=s.current;if(!e)return;let t=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(t,`checked`).set;if(l!==n&&i){let t=new Event(`click`,{bubbles:r});i.call(e,n),e.dispatchEvent(t)}},[l,n,r]),(0,p.jsx)(`input`,{type:`checkbox`,"aria-hidden":!0,defaultChecked:n,...a,tabIndex:-1,ref:c,style:{...a.style,...m,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});C.displayName=S;function w(e){return e?`checked`:`unchecked`}var T=y,E=x;function D({className:e,size:t=`default`,...n}){return(0,p.jsx)(T,{"data-slot":`switch`,"data-size":t,className:r(`peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50`,e),...n,children:(0,p.jsx)(E,{"data-slot":`switch-thumb`,className:`pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground`})})}export{f as n,d as r,D as t};
2
+ //# sourceMappingURL=switch-W2_mhdrR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch-22dlDUXs.js","names":["Switch"],"sources":["../../dashboard/node_modules/@radix-ui/react-use-previous/dist/index.mjs","../../dashboard/node_modules/@radix-ui/react-use-size/dist/index.mjs","../../dashboard/node_modules/@radix-ui/react-switch/dist/index.mjs","../../dashboard/src/components/ui/switch.tsx"],"sourcesContent":["// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\"\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
1
+ {"version":3,"file":"switch-W2_mhdrR.js","names":["Switch"],"sources":["../../dashboard/node_modules/@radix-ui/react-use-previous/dist/index.mjs","../../dashboard/node_modules/@radix-ui/react-use-size/dist/index.mjs","../../dashboard/node_modules/@radix-ui/react-switch/dist/index.mjs","../../dashboard/src/components/ui/switch.tsx"],"sourcesContent":["// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/switch.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Switch({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\"\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{An as t,Hn as n,Kt as r,Pt as i,Zt as a}from"./lucide-react-DLQFnqNm.js";import{i as o,t as s}from"./store-DKVWC6Uh.js";import{H as c,Q as l,ct as u,d,h as f}from"./display-ConJ9cJB.js";import{t as p}from"./badge-JVybSpzR.js";import{t as m}from"./button-BsMqBNJb.js";import{s as h}from"./index-CaauKXl9.js";import{n as g,r as _,t as v}from"./card-I8w4U656.js";var y=e(n(),1),b=t(),x={open:`bg-blue-500/10 text-blue-400 border-blue-500/20`,blocked:`bg-yellow-500/10 text-yellow-400 border-yellow-500/20`,claimed:`bg-emerald-500/10 text-emerald-400 border-emerald-500/20`,in_progress:`bg-purple-500/10 text-purple-400 border-purple-500/20`,done:`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`,failed:`bg-red-500/10 text-red-400 border-red-500/20`,canceled:`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`},S=[`open`,`claimed`,`in_progress`,`blocked`,`done`,`failed`,`canceled`];function C(){let e=o(),t=s(e=>e.tasks),n=s(e=>e.agentsById),i=s(e=>e.taskStatusFilter),a=s(e=>e.taskSourceFilter),c=s(e=>e.set),u=s(e=>e.fetchTasks),f=s(e=>e.doClaimTask),m=s(e=>e.doUpdateTaskStatus),g=s(e=>e.openTaskEvents),_=t.filter(e=>!l.has(e.status)&&!e.claimedBy).length,v=(0,y.useMemo)(()=>[...new Set(t.map(e=>e.source).filter(Boolean))],[t]);function x(e){c(e),setTimeout(()=>u(),0)}function C(e){return n[e]?d(n[e]):e.slice(-10)}return(0,b.jsxs)(`div`,{className:`space-y-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-center justify-between flex-wrap gap-2`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(r,{className:`w-5 h-5 text-muted-foreground`}),(0,b.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Tasks`}),(0,b.jsx)(p,{variant:`secondary`,children:t.length}),_>0&&(0,b.jsxs)(p,{className:`bg-orange-500/20 text-orange-400 border-orange-500/30 border`,children:[_,` claimable`]})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,b.jsxs)(`select`,{className:`rounded-md border border-input bg-background px-3 py-1.5 text-sm`,value:i,onChange:e=>x({taskStatusFilter:e.target.value}),children:[(0,b.jsx)(`option`,{value:``,children:`All statuses`}),S.map(e=>(0,b.jsx)(`option`,{value:e,children:e},e))]}),(0,b.jsxs)(`select`,{className:`rounded-md border border-input bg-background px-3 py-1.5 text-sm`,value:a,onChange:e=>x({taskSourceFilter:e.target.value}),children:[(0,b.jsx)(`option`,{value:``,children:`All sources`}),v.map(e=>(0,b.jsx)(`option`,{value:e,children:e},e))]})]})]}),(0,b.jsx)(h,{className:`h-[calc(100dvh-11rem)]`,children:(0,b.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 lg:grid-cols-3 pr-2`,children:[t.length===0&&(0,b.jsx)(`div`,{className:`col-span-full text-center text-muted-foreground py-16 text-sm`,children:`No tasks`}),t.map(t=>(0,b.jsx)(w,{task:t,now:e,agentName:C,onClaim:()=>f(t.id),onEvents:()=>g(t),onStatusChange:e=>m(t,e)},t.id))]})})]})}function w({task:e,now:t,agentName:n,onClaim:r,onEvents:o,onStatusChange:s}){let d=u[e.severity]||u.info,h=x[e.status]||`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`,y=l.has(e.status),S=!y&&!e.claimedBy;return(0,b.jsxs)(v,{className:`flex flex-col ${S?`ring-1 ring-orange-500/20`:``} ${y?`opacity-60`:``}`,children:[(0,b.jsxs)(_,{className:`py-3 px-4 pb-0 space-y-0`,children:[(0,b.jsxs)(`div`,{className:`flex items-start gap-2 justify-between`,children:[(0,b.jsxs)(`div`,{className:`flex gap-1.5 flex-wrap`,children:[(0,b.jsx)(p,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${d}`,children:e.severity}),(0,b.jsx)(p,{variant:`outline`,className:`text-xs px-1.5 py-0 border ${h}`,children:e.status})]}),(0,b.jsxs)(`span`,{className:`text-xs text-muted-foreground shrink-0`,title:f(e.createdAt),children:[`#`,e.id]})]}),(0,b.jsx)(`p`,{className:`font-medium text-sm mt-2 line-clamp-2`,children:e.title})]}),(0,b.jsxs)(g,{className:`px-4 py-3 flex-1 flex flex-col justify-between gap-3`,children:[(0,b.jsxs)(`div`,{children:[e.body&&(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-3 mb-2`,children:e.body}),(0,b.jsxs)(`div`,{className:`flex flex-col gap-0.5 text-xs text-muted-foreground`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground/60`,children:`source`}),(0,b.jsx)(`span`,{className:`font-mono truncate`,children:e.source})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground/60`,children:`target`}),(0,b.jsx)(`span`,{className:`font-mono truncate`,children:e.target})]}),e.claimedBy&&(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsx)(a,{className:`w-3 h-3 text-emerald-400`}),(0,b.jsx)(`span`,{className:`text-emerald-400`,children:n(e.claimedBy)})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1 mt-0.5`,title:f(e.updatedAt),children:[(0,b.jsx)(`span`,{className:`text-muted-foreground/60`,children:`updated`}),(0,b.jsx)(`span`,{children:c(t,e.updatedAt)})]})]})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[S&&(0,b.jsxs)(m,{size:`sm`,className:`h-7 text-xs bg-orange-600 hover:bg-orange-700 text-white`,onClick:r,children:[(0,b.jsx)(a,{className:`w-3.5 h-3.5 mr-1`}),` Claim`]}),(0,b.jsx)(m,{size:`sm`,variant:`outline`,className:`h-7 text-xs`,onClick:o,children:`Events`}),!y&&(0,b.jsx)(`select`,{className:`rounded-md border border-input bg-background px-2 py-1 text-xs h-7`,value:e.status,onChange:e=>s(e.target.value),onClick:e=>e.stopPropagation(),children:[`open`,`claimed`,`in_progress`,`blocked`,`done`,`failed`,`canceled`].map(e=>(0,b.jsx)(`option`,{value:e,children:e},e))}),e.externalUrl&&(0,b.jsx)(`a`,{href:e.externalUrl,target:`_blank`,rel:`noopener noreferrer`,className:`ml-auto`,children:(0,b.jsx)(m,{size:`sm`,variant:`ghost`,className:`h-7 px-2`,children:(0,b.jsx)(i,{className:`w-3.5 h-3.5`})})})]})]})]})}export{C as TasksView};
2
+ //# sourceMappingURL=tasks-rKbuUPOk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks-D6jbr2y6.js","names":[],"sources":["../../dashboard/src/components/views/tasks.tsx"],"sourcesContent":["import { useRelayStore, useNow } from '@/store'\nimport { Card, CardContent, CardHeader } from '@/components/ui/card'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { ClipboardList, CheckCircle2, ExternalLink } from 'lucide-react'\nimport { displayName, timeAgo, fmtTime } from '@/lib/display'\nimport { SEVERITY_COLORS, CLOSED_TASK_STATUSES } from '@/lib/constants'\nimport type { Task } from '@/types'\nimport { useMemo } from 'react'\n\nconst STATUS_COLORS: Record<string, string> = {\n open: 'bg-blue-500/10 text-blue-400 border-blue-500/20',\n blocked: 'bg-yellow-500/10 text-yellow-400 border-yellow-500/20',\n claimed: 'bg-emerald-500/10 text-emerald-400 border-emerald-500/20',\n in_progress: 'bg-purple-500/10 text-purple-400 border-purple-500/20',\n done: 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20',\n failed: 'bg-red-500/10 text-red-400 border-red-500/20',\n canceled: 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20',\n}\n\nconst STATUS_OPTIONS = ['open', 'claimed', 'in_progress', 'blocked', 'done', 'failed', 'canceled']\n\nexport function TasksView() {\n const now = useNow()\n const tasks = useRelayStore((s) => s.tasks)\n const agentsById = useRelayStore((s) => s.agentsById)\n const taskStatusFilter = useRelayStore((s) => s.taskStatusFilter)\n const taskSourceFilter = useRelayStore((s) => s.taskSourceFilter)\n const set = useRelayStore((s) => s.set)\n const fetchTasks = useRelayStore((s) => s.fetchTasks)\n const doClaimTask = useRelayStore((s) => s.doClaimTask)\n const doUpdateTaskStatus = useRelayStore((s) => s.doUpdateTaskStatus)\n const openTaskEvents = useRelayStore((s) => s.openTaskEvents)\n\n const claimableCount = tasks.filter((t) => !CLOSED_TASK_STATUSES.has(t.status) && !t.claimedBy).length\n\n const uniqueSources = useMemo(() => [...new Set(tasks.map((t) => t.source).filter(Boolean))], [tasks])\n\n function handleFilterChange(partial: { taskStatusFilter?: string; taskSourceFilter?: string }) {\n set(partial)\n setTimeout(() => fetchTasks(), 0)\n }\n\n function agentName(id: string) {\n return agentsById[id] ? displayName(agentsById[id]) : id.slice(-10)\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between flex-wrap gap-2\">\n <div className=\"flex items-center gap-2\">\n <ClipboardList className=\"w-5 h-5 text-muted-foreground\" />\n <h2 className=\"text-lg font-semibold\">Tasks</h2>\n <Badge variant=\"secondary\">{tasks.length}</Badge>\n {claimableCount > 0 && (\n <Badge className=\"bg-orange-500/20 text-orange-400 border-orange-500/30 border\">\n {claimableCount} claimable\n </Badge>\n )}\n </div>\n <div className=\"flex items-center gap-2 flex-wrap\">\n <select\n className=\"rounded-md border border-input bg-background px-3 py-1.5 text-sm\"\n value={taskStatusFilter}\n onChange={(e) => handleFilterChange({ taskStatusFilter: e.target.value })}\n >\n <option value=\"\">All statuses</option>\n {STATUS_OPTIONS.map((s) => <option key={s} value={s}>{s}</option>)}\n </select>\n <select\n className=\"rounded-md border border-input bg-background px-3 py-1.5 text-sm\"\n value={taskSourceFilter}\n onChange={(e) => handleFilterChange({ taskSourceFilter: e.target.value })}\n >\n <option value=\"\">All sources</option>\n {uniqueSources.map((s) => <option key={s} value={s}>{s}</option>)}\n </select>\n </div>\n </div>\n\n <ScrollArea className=\"h-[calc(100dvh-11rem)]\">\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 pr-2\">\n {tasks.length === 0 && (\n <div className=\"col-span-full text-center text-muted-foreground py-16 text-sm\">No tasks</div>\n )}\n {tasks.map((task) => (\n <TaskCard\n key={task.id}\n task={task}\n now={now}\n agentName={agentName}\n onClaim={() => doClaimTask(task.id)}\n onEvents={() => openTaskEvents(task)}\n onStatusChange={(status) => doUpdateTaskStatus(task, status)}\n />\n ))}\n </div>\n </ScrollArea>\n </div>\n )\n}\n\nfunction TaskCard({\n task, now, agentName, onClaim, onEvents, onStatusChange,\n}: {\n task: Task\n now: number\n agentName: (id: string) => string\n onClaim: () => void\n onEvents: () => void\n onStatusChange: (status: string) => void\n}) {\n const severityClass = SEVERITY_COLORS[task.severity] || SEVERITY_COLORS.info\n const statusClass = STATUS_COLORS[task.status] || 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20'\n const isClosed = CLOSED_TASK_STATUSES.has(task.status)\n const isClaimable = !isClosed && !task.claimedBy\n\n return (\n <Card className={`flex flex-col ${isClaimable ? 'ring-1 ring-orange-500/20' : ''} ${isClosed ? 'opacity-60' : ''}`}>\n <CardHeader className=\"py-3 px-4 pb-0 space-y-0\">\n <div className=\"flex items-start gap-2 justify-between\">\n <div className=\"flex gap-1.5 flex-wrap\">\n <Badge variant=\"outline\" className={`text-xs px-1.5 py-0 border ${severityClass}`}>{task.severity}</Badge>\n <Badge variant=\"outline\" className={`text-xs px-1.5 py-0 border ${statusClass}`}>{task.status}</Badge>\n </div>\n <span className=\"text-xs text-muted-foreground shrink-0\" title={fmtTime(task.createdAt)}>\n #{task.id}\n </span>\n </div>\n <p className=\"font-medium text-sm mt-2 line-clamp-2\">{task.title}</p>\n </CardHeader>\n <CardContent className=\"px-4 py-3 flex-1 flex flex-col justify-between gap-3\">\n <div>\n {task.body && (\n <p className=\"text-xs text-muted-foreground line-clamp-3 mb-2\">{task.body}</p>\n )}\n <div className=\"flex flex-col gap-0.5 text-xs text-muted-foreground\">\n <div className=\"flex items-center gap-1\">\n <span className=\"text-muted-foreground/60\">source</span>\n <span className=\"font-mono truncate\">{task.source}</span>\n </div>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-muted-foreground/60\">target</span>\n <span className=\"font-mono truncate\">{task.target}</span>\n </div>\n {task.claimedBy && (\n <div className=\"flex items-center gap-1\">\n <CheckCircle2 className=\"w-3 h-3 text-emerald-400\" />\n <span className=\"text-emerald-400\">{agentName(task.claimedBy)}</span>\n </div>\n )}\n <div className=\"flex items-center gap-1 mt-0.5\" title={fmtTime(task.updatedAt)}>\n <span className=\"text-muted-foreground/60\">updated</span>\n <span>{timeAgo(now, task.updatedAt)}</span>\n </div>\n </div>\n </div>\n\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n {isClaimable && (\n <Button size=\"sm\" className=\"h-7 text-xs bg-orange-600 hover:bg-orange-700 text-white\" onClick={onClaim}>\n <CheckCircle2 className=\"w-3.5 h-3.5 mr-1\" /> Claim\n </Button>\n )}\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs\" onClick={onEvents}>\n Events\n </Button>\n {!isClosed && (\n <select\n className=\"rounded-md border border-input bg-background px-2 py-1 text-xs h-7\"\n value={task.status}\n onChange={(e) => onStatusChange(e.target.value)}\n onClick={(e) => e.stopPropagation()}\n >\n {['open', 'claimed', 'in_progress', 'blocked', 'done', 'failed', 'canceled'].map((s) => (\n <option key={s} value={s}>{s}</option>\n ))}\n </select>\n )}\n {task.externalUrl && (\n <a href={task.externalUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"ml-auto\">\n <Button size=\"sm\" variant=\"ghost\" className=\"h-7 px-2\">\n <ExternalLink className=\"w-3.5 h-3.5\" />\n </Button>\n </a>\n )}\n </div>\n </CardContent>\n </Card>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tasks-rKbuUPOk.js","names":[],"sources":["../../dashboard/src/components/views/tasks.tsx"],"sourcesContent":["import { useRelayStore, useNow } from '@/store'\nimport { Card, CardContent, CardHeader } from '@/components/ui/card'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { ClipboardList, CheckCircle2, ExternalLink } from 'lucide-react'\nimport { displayName, timeAgo, fmtTime } from '@/lib/display'\nimport { SEVERITY_COLORS, CLOSED_TASK_STATUSES } from '@/lib/constants'\nimport type { Task } from '@/types'\nimport { useMemo } from 'react'\n\nconst STATUS_COLORS: Record<string, string> = {\n open: 'bg-blue-500/10 text-blue-400 border-blue-500/20',\n blocked: 'bg-yellow-500/10 text-yellow-400 border-yellow-500/20',\n claimed: 'bg-emerald-500/10 text-emerald-400 border-emerald-500/20',\n in_progress: 'bg-purple-500/10 text-purple-400 border-purple-500/20',\n done: 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20',\n failed: 'bg-red-500/10 text-red-400 border-red-500/20',\n canceled: 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20',\n}\n\nconst STATUS_OPTIONS = ['open', 'claimed', 'in_progress', 'blocked', 'done', 'failed', 'canceled']\n\nexport function TasksView() {\n const now = useNow()\n const tasks = useRelayStore((s) => s.tasks)\n const agentsById = useRelayStore((s) => s.agentsById)\n const taskStatusFilter = useRelayStore((s) => s.taskStatusFilter)\n const taskSourceFilter = useRelayStore((s) => s.taskSourceFilter)\n const set = useRelayStore((s) => s.set)\n const fetchTasks = useRelayStore((s) => s.fetchTasks)\n const doClaimTask = useRelayStore((s) => s.doClaimTask)\n const doUpdateTaskStatus = useRelayStore((s) => s.doUpdateTaskStatus)\n const openTaskEvents = useRelayStore((s) => s.openTaskEvents)\n\n const claimableCount = tasks.filter((t) => !CLOSED_TASK_STATUSES.has(t.status) && !t.claimedBy).length\n\n const uniqueSources = useMemo(() => [...new Set(tasks.map((t) => t.source).filter(Boolean))], [tasks])\n\n function handleFilterChange(partial: { taskStatusFilter?: string; taskSourceFilter?: string }) {\n set(partial)\n setTimeout(() => fetchTasks(), 0)\n }\n\n function agentName(id: string) {\n return agentsById[id] ? displayName(agentsById[id]) : id.slice(-10)\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between flex-wrap gap-2\">\n <div className=\"flex items-center gap-2\">\n <ClipboardList className=\"w-5 h-5 text-muted-foreground\" />\n <h2 className=\"text-lg font-semibold\">Tasks</h2>\n <Badge variant=\"secondary\">{tasks.length}</Badge>\n {claimableCount > 0 && (\n <Badge className=\"bg-orange-500/20 text-orange-400 border-orange-500/30 border\">\n {claimableCount} claimable\n </Badge>\n )}\n </div>\n <div className=\"flex items-center gap-2 flex-wrap\">\n <select\n className=\"rounded-md border border-input bg-background px-3 py-1.5 text-sm\"\n value={taskStatusFilter}\n onChange={(e) => handleFilterChange({ taskStatusFilter: e.target.value })}\n >\n <option value=\"\">All statuses</option>\n {STATUS_OPTIONS.map((s) => <option key={s} value={s}>{s}</option>)}\n </select>\n <select\n className=\"rounded-md border border-input bg-background px-3 py-1.5 text-sm\"\n value={taskSourceFilter}\n onChange={(e) => handleFilterChange({ taskSourceFilter: e.target.value })}\n >\n <option value=\"\">All sources</option>\n {uniqueSources.map((s) => <option key={s} value={s}>{s}</option>)}\n </select>\n </div>\n </div>\n\n <ScrollArea className=\"h-[calc(100dvh-11rem)]\">\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-3 pr-2\">\n {tasks.length === 0 && (\n <div className=\"col-span-full text-center text-muted-foreground py-16 text-sm\">No tasks</div>\n )}\n {tasks.map((task) => (\n <TaskCard\n key={task.id}\n task={task}\n now={now}\n agentName={agentName}\n onClaim={() => doClaimTask(task.id)}\n onEvents={() => openTaskEvents(task)}\n onStatusChange={(status) => doUpdateTaskStatus(task, status)}\n />\n ))}\n </div>\n </ScrollArea>\n </div>\n )\n}\n\nfunction TaskCard({\n task, now, agentName, onClaim, onEvents, onStatusChange,\n}: {\n task: Task\n now: number\n agentName: (id: string) => string\n onClaim: () => void\n onEvents: () => void\n onStatusChange: (status: string) => void\n}) {\n const severityClass = SEVERITY_COLORS[task.severity] || SEVERITY_COLORS.info\n const statusClass = STATUS_COLORS[task.status] || 'bg-zinc-500/10 text-zinc-400 border-zinc-500/20'\n const isClosed = CLOSED_TASK_STATUSES.has(task.status)\n const isClaimable = !isClosed && !task.claimedBy\n\n return (\n <Card className={`flex flex-col ${isClaimable ? 'ring-1 ring-orange-500/20' : ''} ${isClosed ? 'opacity-60' : ''}`}>\n <CardHeader className=\"py-3 px-4 pb-0 space-y-0\">\n <div className=\"flex items-start gap-2 justify-between\">\n <div className=\"flex gap-1.5 flex-wrap\">\n <Badge variant=\"outline\" className={`text-xs px-1.5 py-0 border ${severityClass}`}>{task.severity}</Badge>\n <Badge variant=\"outline\" className={`text-xs px-1.5 py-0 border ${statusClass}`}>{task.status}</Badge>\n </div>\n <span className=\"text-xs text-muted-foreground shrink-0\" title={fmtTime(task.createdAt)}>\n #{task.id}\n </span>\n </div>\n <p className=\"font-medium text-sm mt-2 line-clamp-2\">{task.title}</p>\n </CardHeader>\n <CardContent className=\"px-4 py-3 flex-1 flex flex-col justify-between gap-3\">\n <div>\n {task.body && (\n <p className=\"text-xs text-muted-foreground line-clamp-3 mb-2\">{task.body}</p>\n )}\n <div className=\"flex flex-col gap-0.5 text-xs text-muted-foreground\">\n <div className=\"flex items-center gap-1\">\n <span className=\"text-muted-foreground/60\">source</span>\n <span className=\"font-mono truncate\">{task.source}</span>\n </div>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-muted-foreground/60\">target</span>\n <span className=\"font-mono truncate\">{task.target}</span>\n </div>\n {task.claimedBy && (\n <div className=\"flex items-center gap-1\">\n <CheckCircle2 className=\"w-3 h-3 text-emerald-400\" />\n <span className=\"text-emerald-400\">{agentName(task.claimedBy)}</span>\n </div>\n )}\n <div className=\"flex items-center gap-1 mt-0.5\" title={fmtTime(task.updatedAt)}>\n <span className=\"text-muted-foreground/60\">updated</span>\n <span>{timeAgo(now, task.updatedAt)}</span>\n </div>\n </div>\n </div>\n\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n {isClaimable && (\n <Button size=\"sm\" className=\"h-7 text-xs bg-orange-600 hover:bg-orange-700 text-white\" onClick={onClaim}>\n <CheckCircle2 className=\"w-3.5 h-3.5 mr-1\" /> Claim\n </Button>\n )}\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs\" onClick={onEvents}>\n Events\n </Button>\n {!isClosed && (\n <select\n className=\"rounded-md border border-input bg-background px-2 py-1 text-xs h-7\"\n value={task.status}\n onChange={(e) => onStatusChange(e.target.value)}\n onClick={(e) => e.stopPropagation()}\n >\n {['open', 'claimed', 'in_progress', 'blocked', 'done', 'failed', 'canceled'].map((s) => (\n <option key={s} value={s}>{s}</option>\n ))}\n </select>\n )}\n {task.externalUrl && (\n <a href={task.externalUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"ml-auto\">\n <Button size=\"sm\" variant=\"ghost\" className=\"h-7 px-2\">\n <ExternalLink className=\"w-3.5 h-3.5\" />\n </Button>\n </a>\n )}\n </div>\n </CardContent>\n </Card>\n )\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{Dn as t,Ln as n,M as r,R as i,V as a,Vn as o,ft as s,g as c,i as l,kn as u}from"./lucide-react-CD8Xl2U3.js";import{t as d}from"./store-CICRhg1m.js";import{G as f}from"./display-Bebqs1qu.js";import{t as p}from"./button-DDA5P2YQ.js";import{a as m,i as h,o as g}from"./index-BL8r94_U.js";import{t as _}from"./use-keyboard-viewport-DxY_xJV5.js";var v=e(o(),1),y=Object.defineProperty,b=Object.getOwnPropertyDescriptor,x=(e,t)=>{for(var n in t)y(e,n,{get:t[n],enumerable:!0})},S=(e,t,n,r)=>{for(var i=r>1?void 0:r?b(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&y(t,n,i),i},C=(e,t)=>(n,r)=>t(n,r,e),w=`Terminal input`,T={get:()=>w,set:e=>w=e},ee=`Too much output to announce, navigate to rows manually to read`,E={get:()=>ee,set:e=>ee=e};function te(e){return e.replace(/\r?\n/g,`\r`)}function D(e,t){return t?`\x1B[200~`+e+`\x1B[201~`:e}function ne(e,t){e.clipboardData&&e.clipboardData.setData(`text/plain`,t.selectionText),e.preventDefault()}function re(e,t,n,r){e.stopPropagation(),e.clipboardData&&ie(e.clipboardData.getData(`text/plain`),t,n,r)}function ie(e,t,n,r){e=te(e),e=D(e,n.decPrivateModes.bracketedPasteMode&&r.rawOptions.ignoreBracketedPasteMode!==!0),n.triggerDataEvent(e,!0),t.value=``}function O(e,t,n){let r=n.getBoundingClientRect(),i=e.clientX-r.left-10,a=e.clientY-r.top-10;t.style.width=`20px`,t.style.height=`20px`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.zIndex=`1000`,t.focus()}function k(e,t,n,r,i){O(e,t,n),i&&r.rightClickSelect(e),t.value=r.selectionText,t.select()}function A(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function ae(e,t=0,n=e.length){let r=``;for(let i=t;i<n;++i){let t=e[i];t>65535?(t-=65536,r+=String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):r+=String.fromCharCode(t)}return r}var oe=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i=0;if(this._interim){let n=e.charCodeAt(i++);56320<=n&&n<=57343?t[r++]=(this._interim-55296)*1024+n-56320+65536:(t[r++]=this._interim,t[r++]=n),this._interim=0}for(let a=i;a<n;++a){let i=e.charCodeAt(a);if(55296<=i&&i<=56319){if(++a>=n)return this._interim=i,r;let o=e.charCodeAt(a);56320<=o&&o<=57343?t[r++]=(i-55296)*1024+o-56320+65536:(t[r++]=i,t[r++]=o);continue}i!==65279&&(t[r++]=i)}return r}},se=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i,a,o,s,c=0,l=0;if(this.interim[0]){let i=!1,a=this.interim[0];a&=(a&224)==192?31:(a&240)==224?15:7;let o=0,s;for(;(s=this.interim[++o]&63)&&o<4;)a<<=6,a|=s;let c=(this.interim[0]&224)==192?2:(this.interim[0]&240)==224?3:4,u=c-o;for(;l<u;){if(l>=n)return 0;if(s=e[l++],(s&192)!=128){l--,i=!0;break}else this.interim[o++]=s,a<<=6,a|=s&63}i||(c===2?a<128?l--:t[r++]=a:c===3?a<2048||a>=55296&&a<=57343||a===65279||(t[r++]=a):a<65536||a>1114111||(t[r++]=a)),this.interim.fill(0)}let u=n-4,d=l;for(;d<n;){for(;d<u&&!((i=e[d])&128)&&!((a=e[d+1])&128)&&!((o=e[d+2])&128)&&!((s=e[d+3])&128);)t[r++]=i,t[r++]=a,t[r++]=o,t[r++]=s,d+=4;if(i=e[d++],i<128)t[r++]=i;else if((i&224)==192){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(c=(i&31)<<6|a&63,c<128){d--;continue}t[r++]=c}else if((i&240)==224){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(c=(i&15)<<12|(a&63)<<6|o&63,c<2048||c>=55296&&c<=57343||c===65279)continue;t[r++]=c}else if((i&248)==240){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,this.interim[2]=o,r;if(s=e[d++],(s&192)!=128){d--;continue}if(c=(i&7)<<18|(a&63)<<12|(o&63)<<6|s&63,c<65536||c>1114111)continue;t[r++]=c}}return r}},ce=``,le=` `,ue=class e{constructor(){this.fg=0,this.bg=0,this.extended=new de}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)==50331648}isBgRGB(){return(this.bg&50331648)==50331648}isFgPalette(){return(this.fg&50331648)==16777216||(this.fg&50331648)==33554432}isBgPalette(){return(this.bg&50331648)==16777216||(this.bg&50331648)==33554432}isFgDefault(){return(this.fg&50331648)==0}isBgDefault(){return(this.bg&50331648)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==16777216||(this.extended.underlineColor&50331648)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},de=class e{constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new e(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},j=class e extends ue{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new de,this.combinedData=``}static fromCharData(t){let n=new e;return n.setFromCharData(t),n}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?A(this.content&2097151):``}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let t=!1;if(e[1].length>2)t=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:t=!0}else t=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;t&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},fe=`di$target`,pe=`di$dependencies`,me=new Map;function he(e){return e[pe]||[]}function M(e){if(me.has(e))return me.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);ge(t,e,r)};return t._id=e,me.set(e,t),t}function ge(e,t,n){t[fe]===t?t[pe].push({id:e,index:n}):(t[pe]=[{id:e,index:n}],t[fe]=t)}var _e=M(`BufferService`),ve=M(`CoreMouseService`),ye=M(`CoreService`),be=M(`CharsetService`),xe=M(`InstantiationService`),Se=M(`LogService`),Ce=M(`OptionsService`),we=M(`OscLinkService`),Te=M(`UnicodeService`),Ee=M(`DecorationService`),De=class{constructor(e,t,n){this._bufferService=e,this._optionsService=t,this._oscLinkService=n}provideLinks(e,t){let n=this._bufferService.buffer.lines.get(e-1);if(!n){t(void 0);return}let r=[],i=this._optionsService.rawOptions.linkHandler,a=new j,o=n.getTrimmedLength(),s=-1,c=-1,l=!1;for(let t=0;t<o;t++)if(!(c===-1&&!n.hasContent(t))){if(n.loadCell(t,a),a.hasExtendedAttrs()&&a.extended.urlId)if(c===-1){c=t,s=a.extended.urlId;continue}else l=a.extended.urlId!==s;else c!==-1&&(l=!0);if(l||c!==-1&&t===o-1){let n=this._oscLinkService.getLinkData(s)?.uri;if(n){let a={start:{x:c+1,y:e},end:{x:t+ +(!l&&t===o-1),y:e}},s=!1;if(!i?.allowNonHttpProtocols)try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s=!0)}catch{s=!0}s||r.push({text:n,range:a,activate:(e,t)=>i?i.activate(e,t,a):Oe(e,t),hover:(e,t)=>i?.hover?.(e,t,a),leave:(e,t)=>i?.leave?.(e,t,a)})}l=!1,a.hasExtendedAttrs()&&a.extended.urlId?(c=t,s=a.extended.urlId):(c=-1,s=-1)}}t(r)}};De=S([C(0,_e),C(1,Ce),C(2,we)],De);function Oe(e,t){if(confirm(`Do you want to navigate to ${t}?
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{An as t,Hn as n,M as r,On as i,R as a,Rn as o,V as s,ft as c,g as l,i as u}from"./lucide-react-DLQFnqNm.js";import{t as d}from"./store-DKVWC6Uh.js";import{J as f}from"./display-ConJ9cJB.js";import{t as p}from"./button-BsMqBNJb.js";import{a as m,i as h,o as g}from"./index-CaauKXl9.js";import{t as _}from"./use-keyboard-viewport-bZ1J-ZnH.js";var v=e(n(),1),y=Object.defineProperty,b=Object.getOwnPropertyDescriptor,x=(e,t)=>{for(var n in t)y(e,n,{get:t[n],enumerable:!0})},S=(e,t,n,r)=>{for(var i=r>1?void 0:r?b(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&y(t,n,i),i},C=(e,t)=>(n,r)=>t(n,r,e),w=`Terminal input`,T={get:()=>w,set:e=>w=e},ee=`Too much output to announce, navigate to rows manually to read`,E={get:()=>ee,set:e=>ee=e};function te(e){return e.replace(/\r?\n/g,`\r`)}function D(e,t){return t?`\x1B[200~`+e+`\x1B[201~`:e}function ne(e,t){e.clipboardData&&e.clipboardData.setData(`text/plain`,t.selectionText),e.preventDefault()}function re(e,t,n,r){e.stopPropagation(),e.clipboardData&&ie(e.clipboardData.getData(`text/plain`),t,n,r)}function ie(e,t,n,r){e=te(e),e=D(e,n.decPrivateModes.bracketedPasteMode&&r.rawOptions.ignoreBracketedPasteMode!==!0),n.triggerDataEvent(e,!0),t.value=``}function O(e,t,n){let r=n.getBoundingClientRect(),i=e.clientX-r.left-10,a=e.clientY-r.top-10;t.style.width=`20px`,t.style.height=`20px`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.zIndex=`1000`,t.focus()}function k(e,t,n,r,i){O(e,t,n),i&&r.rightClickSelect(e),t.value=r.selectionText,t.select()}function A(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function ae(e,t=0,n=e.length){let r=``;for(let i=t;i<n;++i){let t=e[i];t>65535?(t-=65536,r+=String.fromCharCode((t>>10)+55296)+String.fromCharCode(t%1024+56320)):r+=String.fromCharCode(t)}return r}var oe=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i=0;if(this._interim){let n=e.charCodeAt(i++);56320<=n&&n<=57343?t[r++]=(this._interim-55296)*1024+n-56320+65536:(t[r++]=this._interim,t[r++]=n),this._interim=0}for(let a=i;a<n;++a){let i=e.charCodeAt(a);if(55296<=i&&i<=56319){if(++a>=n)return this._interim=i,r;let o=e.charCodeAt(a);56320<=o&&o<=57343?t[r++]=(i-55296)*1024+o-56320+65536:(t[r++]=i,t[r++]=o);continue}i!==65279&&(t[r++]=i)}return r}},se=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let n=e.length;if(!n)return 0;let r=0,i,a,o,s,c=0,l=0;if(this.interim[0]){let i=!1,a=this.interim[0];a&=(a&224)==192?31:(a&240)==224?15:7;let o=0,s;for(;(s=this.interim[++o]&63)&&o<4;)a<<=6,a|=s;let c=(this.interim[0]&224)==192?2:(this.interim[0]&240)==224?3:4,u=c-o;for(;l<u;){if(l>=n)return 0;if(s=e[l++],(s&192)!=128){l--,i=!0;break}else this.interim[o++]=s,a<<=6,a|=s&63}i||(c===2?a<128?l--:t[r++]=a:c===3?a<2048||a>=55296&&a<=57343||a===65279||(t[r++]=a):a<65536||a>1114111||(t[r++]=a)),this.interim.fill(0)}let u=n-4,d=l;for(;d<n;){for(;d<u&&!((i=e[d])&128)&&!((a=e[d+1])&128)&&!((o=e[d+2])&128)&&!((s=e[d+3])&128);)t[r++]=i,t[r++]=a,t[r++]=o,t[r++]=s,d+=4;if(i=e[d++],i<128)t[r++]=i;else if((i&224)==192){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(c=(i&31)<<6|a&63,c<128){d--;continue}t[r++]=c}else if((i&240)==224){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(c=(i&15)<<12|(a&63)<<6|o&63,c<2048||c>=55296&&c<=57343||c===65279)continue;t[r++]=c}else if((i&248)==240){if(d>=n)return this.interim[0]=i,r;if(a=e[d++],(a&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,r;if(o=e[d++],(o&192)!=128){d--;continue}if(d>=n)return this.interim[0]=i,this.interim[1]=a,this.interim[2]=o,r;if(s=e[d++],(s&192)!=128){d--;continue}if(c=(i&7)<<18|(a&63)<<12|(o&63)<<6|s&63,c<65536||c>1114111)continue;t[r++]=c}}return r}},ce=``,le=` `,ue=class e{constructor(){this.fg=0,this.bg=0,this.extended=new de}static toColorRGB(e){return[e>>>16&255,e>>>8&255,e&255]}static fromColorRGB(e){return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255}clone(){let t=new e;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)==50331648}isBgRGB(){return(this.bg&50331648)==50331648}isFgPalette(){return(this.fg&50331648)==16777216||(this.fg&50331648)==33554432}isBgPalette(){return(this.bg&50331648)==16777216||(this.bg&50331648)==33554432}isFgDefault(){return(this.fg&50331648)==0}isBgDefault(){return(this.bg&50331648)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==16777216||(this.extended.underlineColor&50331648)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)==0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},de=class e{constructor(e=0,t=0){this._ext=0,this._urlId=0,this._ext=e,this._urlId=t}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(e){this._ext=e}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(e){this._ext&=-469762049,this._ext|=e<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(e){this._ext&=-67108864,this._ext|=e&67108863}get urlId(){return this._urlId}set urlId(e){this._urlId=e}get underlineVariantOffset(){let e=(this._ext&3758096384)>>29;return e<0?e^4294967288:e}set underlineVariantOffset(e){this._ext&=536870911,this._ext|=e<<29&3758096384}clone(){return new e(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},j=class e extends ue{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new de,this.combinedData=``}static fromCharData(t){let n=new e;return n.setFromCharData(t),n}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?A(this.content&2097151):``}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(e){this.fg=e[0],this.bg=0;let t=!1;if(e[1].length>2)t=!0;else if(e[1].length===2){let n=e[1].charCodeAt(0);if(55296<=n&&n<=56319){let r=e[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(n-55296)*1024+r-56320+65536|e[2]<<22:t=!0}else t=!0}else this.content=e[1].charCodeAt(0)|e[2]<<22;t&&(this.combinedData=e[1],this.content=2097152|e[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},fe=`di$target`,pe=`di$dependencies`,me=new Map;function he(e){return e[pe]||[]}function M(e){if(me.has(e))return me.get(e);let t=function(e,n,r){if(arguments.length!==3)throw Error(`@IServiceName-decorator can only be used to decorate a parameter`);ge(t,e,r)};return t._id=e,me.set(e,t),t}function ge(e,t,n){t[fe]===t?t[pe].push({id:e,index:n}):(t[pe]=[{id:e,index:n}],t[fe]=t)}var _e=M(`BufferService`),ve=M(`CoreMouseService`),ye=M(`CoreService`),be=M(`CharsetService`),xe=M(`InstantiationService`),Se=M(`LogService`),Ce=M(`OptionsService`),we=M(`OscLinkService`),Te=M(`UnicodeService`),Ee=M(`DecorationService`),De=class{constructor(e,t,n){this._bufferService=e,this._optionsService=t,this._oscLinkService=n}provideLinks(e,t){let n=this._bufferService.buffer.lines.get(e-1);if(!n){t(void 0);return}let r=[],i=this._optionsService.rawOptions.linkHandler,a=new j,o=n.getTrimmedLength(),s=-1,c=-1,l=!1;for(let t=0;t<o;t++)if(!(c===-1&&!n.hasContent(t))){if(n.loadCell(t,a),a.hasExtendedAttrs()&&a.extended.urlId)if(c===-1){c=t,s=a.extended.urlId;continue}else l=a.extended.urlId!==s;else c!==-1&&(l=!0);if(l||c!==-1&&t===o-1){let n=this._oscLinkService.getLinkData(s)?.uri;if(n){let a={start:{x:c+1,y:e},end:{x:t+ +(!l&&t===o-1),y:e}},s=!1;if(!i?.allowNonHttpProtocols)try{let e=new URL(n);[`http:`,`https:`].includes(e.protocol)||(s=!0)}catch{s=!0}s||r.push({text:n,range:a,activate:(e,t)=>i?i.activate(e,t,a):Oe(e,t),hover:(e,t)=>i?.hover?.(e,t,a),leave:(e,t)=>i?.leave?.(e,t,a)})}l=!1,a.hasExtendedAttrs()&&a.extended.urlId?(c=t,s=a.extended.urlId):(c=-1,s=-1)}}t(r)}};De=S([C(0,_e),C(1,Ce),C(2,we)],De);function Oe(e,t){if(confirm(`Do you want to navigate to ${t}?
2
2
 
3
3
  WARNING: This link could potentially be dangerous`)){let e=window.open();if(e){try{e.opener=null}catch{}e.location.href=t}else console.warn(`Opening link blocked as opener could not be cleared`)}}var ke=M(`CharSizeService`),Ae=M(`CoreBrowserService`),je=M(`MouseService`),Me=M(`RenderService`),Ne=M(`SelectionService`),Pe=M(`CharacterJoinerService`),Fe=M(`ThemeService`),Ie=M(`LinkProviderService`),Le=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?Ue.isErrorNoTelemetry(e)?new Ue(e.message+`
4
4
 
@@ -142,5 +142,5 @@ ${s.join(`
142
142
  `))}},Fp=class extends Error{constructor(e,t){super(e),this.name=`ListenerLeakError`,this.stack=t}},Ip=class extends Error{constructor(e,t){super(e),this.name=`ListenerRefusalError`,this.stack=t}},Lp=0,Rp=class{constructor(e){this.value=e,this.id=Lp++}},zp=2,Bp=(e,t)=>{if(e instanceof Rp)t(e);else for(let n=0;n<e.length;n++){let r=e[n];r&&t(r)}},Vp;if(Tp){let e=[];setInterval(()=>{e.length!==0&&(console.warn(`[LEAKING LISTENERS] GC'ed these listeners that were NOT yet disposed:`),console.warn(e.join(`
143
143
  `)),e.length=0)},3e3),Vp=new FinalizationRegistry(t=>{typeof t==`string`&&e.push(t)})}var Hp=class{constructor(e){this._size=0,this._options=e,this._leakageMon=jp>0||this._options?.leakWarningThreshold?new Np(e?.onListenerError??qf,this._options?.leakWarningThreshold??jp):void 0,this._perfMon=this._options?._profName?new Ap(this._options._profName):void 0,this._deliveryQueue=this._options?.deliveryQueue}dispose(){if(!this._disposed){if(this._disposed=!0,this._deliveryQueue?.current===this&&this._deliveryQueue.reset(),this._listeners){if(Ep){let e=this._listeners;queueMicrotask(()=>{Bp(e,e=>e.stack?.print())})}this._listeners=void 0,this._size=0}this._options?.onDidRemoveLastListener?.(),this._leakageMon?.dispose()}}get event(){return this._event??=(e,t,n)=>{if(this._leakageMon&&this._size>this._leakageMon.threshold**2){let e=`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far (${this._size} vs ${this._leakageMon.threshold})`;console.warn(e);let t=this._leakageMon.getMostFrequentStack()??[`UNKNOWN stack`,-1],n=new Ip(`${e}. HINT: Stack shows most frequent listener (${t[1]}-times)`,t[0]);return(this._options?.onListenerError||qf)(n),xp.None}if(this._disposed)return xp.None;t&&(e=e.bind(t));let r=new Rp(e),i;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(r.stack=Pp.create(),i=this._leakageMon.check(r.stack,this._size+1)),Ep&&(r.stack=Pp.create()),this._listeners?this._listeners instanceof Rp?(this._deliveryQueue??=new Up,this._listeners=[this._listeners,r]):this._listeners.push(r):(this._options?.onWillAddFirstListener?.(this),this._listeners=r,this._options?.onDidAddFirstListener?.(this)),this._size++;let a=vp(()=>{Vp?.unregister(a),i?.(),this._removeListener(r)});if(n instanceof bp?n.add(a):Array.isArray(n)&&n.push(a),Vp){let e=Error().stack.split(`
144
144
  `).slice(2,3).join(`
145
- `).trim(),t=/(file:|vscode-file:\/\/vscode-app)?(\/[^:]*:\d+:\d+)/.exec(e);Vp.register(a,t?.[2]??e,a)}return a},this._event}_removeListener(e){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1){this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),this._size=0;return}let t=this._listeners,n=t.indexOf(e);if(n===-1)throw console.log(`disposed?`,this._disposed),console.log(`size?`,this._size),console.log(`arr?`,JSON.stringify(this._listeners)),Error(`Attempted to dispose unknown listener`);this._size--,t[n]=void 0;let r=this._deliveryQueue.current===this;if(this._size*zp<=t.length){let e=0;for(let n=0;n<t.length;n++)t[n]?t[e++]=t[n]:r&&(this._deliveryQueue.end--,e<this._deliveryQueue.i&&this._deliveryQueue.i--);t.length=e}}_deliver(e,t){if(!e)return;let n=this._options?.onListenerError||qf;if(!n){e.value(t);return}try{e.value(t)}catch(e){n(e)}}_deliverQueue(e){let t=e.current._listeners;for(;e.i<e.end;)this._deliver(t[e.i++],e.value);e.reset()}fire(e){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof Rp)this._deliver(this._listeners,e);else{let t=this._deliveryQueue;t.enqueue(this,e,this._listeners.length),this._deliverQueue(t)}this._perfMon?.stop()}hasListeners(){return this._size>0}},Up=class{constructor(){this.i=-1,this.end=0}enqueue(e,t,n){this.i=0,this.end=n,this.current=e,this.value=t}reset(){this.i=this.end,this.current=void 0,this.value=void 0}},Wp=class e{constructor(){this._providers=Object.create(null),this._active=``,this._onChange=new Hp,this.onChange=this._onChange.event;let e=new Gf;this.register(e),this._active=e.version,this._activeProvider=e}static extractShouldJoin(e){return(e&1)!=0}static extractWidth(e){return e>>1&3}static extractCharKind(e){return e>>3}static createPropertyValue(e,t,n=!1){return(e&16777215)<<3|(t&3)<<1|!!n}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(e){if(!this._providers[e])throw Error(`unknown Unicode version "${e}"`);this._active=e,this._activeProvider=this._providers[e],this._onChange.fire(e)}register(e){this._providers[e.version]=e}wcwidth(e){return this._activeProvider.wcwidth(e)}getStringCellWidth(t){let n=0,r=0,i=t.length;for(let a=0;a<i;++a){let o=t.charCodeAt(a);if(55296<=o&&o<=56319){if(++a>=i)return n+this.wcwidth(o);let e=t.charCodeAt(a);56320<=e&&e<=57343?o=(o-55296)*1024+e-56320+65536:n+=this.wcwidth(e)}let s=this.charProperties(o,r),c=e.extractWidth(s);e.extractShouldJoin(s)&&(c-=e.extractWidth(r)),n+=c,r=s}return n}charProperties(e,t){return this._activeProvider.charProperties(e,t)}},Gp=[[768,879],[1155,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1541],[1552,1562],[1564,1564],[1611,1631],[1648,1648],[1750,1757],[1759,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2045,2045],[2070,2073],[2075,2083],[2085,2087],[2089,2093],[2137,2139],[2259,2306],[2362,2362],[2364,2364],[2369,2376],[2381,2381],[2385,2391],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2558,2558],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2641,2641],[2672,2673],[2677,2677],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2810,2815],[2817,2817],[2876,2876],[2879,2879],[2881,2884],[2893,2893],[2902,2902],[2914,2915],[2946,2946],[3008,3008],[3021,3021],[3072,3072],[3076,3076],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3170,3171],[3201,3201],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3328,3329],[3387,3388],[3393,3396],[3405,3405],[3426,3427],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3981,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4151],[4153,4154],[4157,4158],[4184,4185],[4190,4192],[4209,4212],[4226,4226],[4229,4230],[4237,4237],[4253,4253],[4448,4607],[4957,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6158],[6277,6278],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6683,6683],[6742,6742],[6744,6750],[6752,6752],[6754,6754],[6757,6764],[6771,6780],[6783,6783],[6832,6846],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7040,7041],[7074,7077],[7080,7081],[7083,7085],[7142,7142],[7144,7145],[7149,7149],[7151,7153],[7212,7219],[7222,7223],[7376,7378],[7380,7392],[7394,7400],[7405,7405],[7412,7412],[7416,7417],[7616,7673],[7675,7679],[8203,8207],[8234,8238],[8288,8292],[8294,8303],[8400,8432],[11503,11505],[11647,11647],[11744,11775],[12330,12333],[12441,12442],[42607,42610],[42612,42621],[42654,42655],[42736,42737],[43010,43010],[43014,43014],[43019,43019],[43045,43046],[43204,43205],[43232,43249],[43263,43263],[43302,43309],[43335,43345],[43392,43394],[43443,43443],[43446,43449],[43452,43453],[43493,43493],[43561,43566],[43569,43570],[43573,43574],[43587,43587],[43596,43596],[43644,43644],[43696,43696],[43698,43700],[43703,43704],[43710,43711],[43713,43713],[43756,43757],[43766,43766],[44005,44005],[44008,44008],[44013,44013],[64286,64286],[65024,65039],[65056,65071],[65279,65279],[65529,65531]],Kp=[[66045,66045],[66272,66272],[66422,66426],[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[68325,68326],[68900,68903],[69446,69456],[69633,69633],[69688,69702],[69759,69761],[69811,69814],[69817,69818],[69821,69821],[69837,69837],[69888,69890],[69927,69931],[69933,69940],[70003,70003],[70016,70017],[70070,70078],[70089,70092],[70191,70193],[70196,70196],[70198,70199],[70206,70206],[70367,70367],[70371,70378],[70400,70401],[70459,70460],[70464,70464],[70502,70508],[70512,70516],[70712,70719],[70722,70724],[70726,70726],[70750,70750],[70835,70840],[70842,70842],[70847,70848],[70850,70851],[71090,71093],[71100,71101],[71103,71104],[71132,71133],[71219,71226],[71229,71229],[71231,71232],[71339,71339],[71341,71341],[71344,71349],[71351,71351],[71453,71455],[71458,71461],[71463,71467],[71727,71735],[71737,71738],[72148,72151],[72154,72155],[72160,72160],[72193,72202],[72243,72248],[72251,72254],[72263,72263],[72273,72278],[72281,72283],[72330,72342],[72344,72345],[72752,72758],[72760,72765],[72767,72767],[72850,72871],[72874,72880],[72882,72883],[72885,72886],[73009,73014],[73018,73018],[73020,73021],[73023,73029],[73031,73031],[73104,73105],[73109,73109],[73111,73111],[73459,73460],[78896,78904],[92912,92916],[92976,92982],[94031,94031],[94095,94098],[113821,113822],[113824,113827],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[121344,121398],[121403,121452],[121461,121461],[121476,121476],[121499,121503],[121505,121519],[122880,122886],[122888,122904],[122907,122913],[122915,122916],[122918,122922],[123184,123190],[123628,123631],[125136,125142],[125252,125258],[917505,917505],[917536,917631],[917760,917999]],qp=[[4352,4447],[8986,8987],[9001,9002],[9193,9196],[9200,9200],[9203,9203],[9725,9726],[9748,9749],[9800,9811],[9855,9855],[9875,9875],[9889,9889],[9898,9899],[9917,9918],[9924,9925],[9934,9934],[9940,9940],[9962,9962],[9970,9971],[9973,9973],[9978,9978],[9981,9981],[9989,9989],[9994,9995],[10024,10024],[10060,10060],[10062,10062],[10067,10069],[10071,10071],[10133,10135],[10160,10160],[10175,10175],[11035,11036],[11088,11088],[11093,11093],[11904,11929],[11931,12019],[12032,12245],[12272,12283],[12288,12329],[12334,12350],[12353,12438],[12443,12543],[12549,12591],[12593,12686],[12688,12730],[12736,12771],[12784,12830],[12832,12871],[12880,19903],[19968,42124],[42128,42182],[43360,43388],[44032,55203],[63744,64255],[65040,65049],[65072,65106],[65108,65126],[65128,65131],[65281,65376],[65504,65510]],Jp=[[94176,94179],[94208,100343],[100352,101106],[110592,110878],[110928,110930],[110948,110951],[110960,111355],[126980,126980],[127183,127183],[127374,127374],[127377,127386],[127488,127490],[127504,127547],[127552,127560],[127568,127569],[127584,127589],[127744,127776],[127789,127797],[127799,127868],[127870,127891],[127904,127946],[127951,127955],[127968,127984],[127988,127988],[127992,128062],[128064,128064],[128066,128252],[128255,128317],[128331,128334],[128336,128359],[128378,128378],[128405,128406],[128420,128420],[128507,128591],[128640,128709],[128716,128716],[128720,128722],[128725,128725],[128747,128748],[128756,128762],[128992,129003],[129293,129393],[129395,129398],[129402,129442],[129445,129450],[129454,129482],[129485,129535],[129648,129651],[129656,129658],[129664,129666],[129680,129685],[131072,196605],[196608,262141]],Yp;function Xp(e,t){let n=0,r=t.length-1,i;if(e<t[0][0]||e>t[r][1])return!1;for(;r>=n;)if(i=n+r>>1,e>t[i][1])n=i+1;else if(e<t[i][0])r=i-1;else return!0;return!1}var Zp=class{constructor(){if(this.version=`11`,!Yp){Yp=new Uint8Array(65536),Yp.fill(1),Yp[0]=0,Yp.fill(0,1,32),Yp.fill(0,127,160);for(let e=0;e<Gp.length;++e)Yp.fill(0,Gp[e][0],Gp[e][1]+1);for(let e=0;e<qp.length;++e)Yp.fill(2,qp[e][0],qp[e][1]+1)}}wcwidth(e){return e<32?0:e<127?1:e<65536?Yp[e]:Xp(e,Kp)?0:Xp(e,Jp)?2:1}charProperties(e,t){let n=this.wcwidth(e),r=n===0&&t!==0;if(r){let e=Wp.extractWidth(t);e===0?r=!1:e>n&&(n=e)}return Wp.createPropertyValue(0,n,r)}},Qp=class{activate(e){e.unicode.register(new Zp)}dispose(){}},$=u();function $p(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function em(e){if(e)try{let t=document.createElement(`div`);t.style.color=`oklch(${e})`,document.body.appendChild(t);let n=getComputedStyle(t).color;document.body.removeChild(t);let r=n.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);return r?`#${[r[1],r[2],r[3]].map(e=>Number(e).toString(16).padStart(2,`0`)).join(``)}`:void 0}catch{return}}function tm(){let e=em($p(`--background`))??`#09090b`,t=em($p(`--foreground`))??`#e4e4e7`;return{background:e,foreground:t,cursor:t,selectionBackground:em($p(`--muted`))??`#3f3f46`}}function nm({orchestratorId:e,session:o,interactive:u=!1,onClose:m}){let h=d(e=>e.apiCall),g=d(e=>e.theme),_=(0,v.useRef)(null),y=(0,v.useRef)(null),b=(0,v.useRef)(null),x=(0,v.useRef)(null),S=(0,v.useRef)(!1),C=(0,v.useRef)(Promise.resolve()),w=(0,v.useRef)(null),T=(0,v.useRef)(null),ee=(0,v.useRef)(null),E=(0,v.useRef)(!1),te=(0,v.useRef)(!1),D=(0,v.useRef)(!1),[ne,re]=(0,v.useState)(!1),[ie,O]=(0,v.useState)(null),[k,A]=(0,v.useState)(null),[ae,oe]=(0,v.useState)(null),[se,ce]=(0,v.useState)(u),le=(0,v.useRef)(u),[ue,de]=(0,v.useState)(`connecting`),j=(0,v.useRef)(!1),[fe,pe]=(0,v.useState)(!1),me=(0,v.useCallback)(()=>{let e=te.current||D.current;E.current=e;let t=x.current;t?.readyState===WebSocket.OPEN&&t.send(JSON.stringify({type:`pause`,paused:e}))},[]);(0,v.useEffect)(()=>{te.current=ne,me()},[ne,me]),(0,v.useEffect)(()=>{let e=()=>{D.current=document.hidden||!document.hasFocus(),me()};return e(),document.addEventListener(`visibilitychange`,e),window.addEventListener(`blur`,e),window.addEventListener(`focus`,e),()=>{document.removeEventListener(`visibilitychange`,e),window.removeEventListener(`blur`,e),window.removeEventListener(`focus`,e)}},[me]);let he=(0,v.useCallback)(e=>{let t=y.current;if(t){let n=(e.content||``).replace(/\n$/,``);t.write(`\x1b[H\x1b[2J\x1b[3J${n}`),e.cursorX!=null&&e.cursorY!=null&&t.write(`\x1b[${e.cursorY+1};${e.cursorX+1}H`)}O(e.running),oe(e.capturedAt),A(null)},[]),M=(0,v.useCallback)(async()=>{if(E.current||S.current)return;let t=x.current;if(t?.readyState===WebSocket.OPEN){t.send(JSON.stringify({type:`refresh`}));return}S.current=!0;try{he(await h(`GET`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(o)}`))}catch(e){A(f(e))}finally{S.current=!1}},[e,o,h,he]);function ge(t,n){let r=ee.current;if(r&&r.cols===t&&r.rows===n)return;ee.current={cols:t,rows:n};let i=x.current;if(i?.readyState===WebSocket.OPEN){i.send(JSON.stringify({type:`resize`,cols:t,rows:n}));return}h(`POST`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(o)}/resize`,{cols:t,rows:n}).catch(()=>{})}function _e(){let e=b.current,t=y.current;if(!(!e||!t))try{e.fit(),w.current&&clearTimeout(w.current),w.current=setTimeout(()=>{ge(t.cols,t.rows)},300)}catch{}}function ve(t){if(!t)return;let n=t.match(/[\s\S]{1,2048}/g)??[],r=x.current;if(r?.readyState===WebSocket.OPEN){for(let e of n)r.send(JSON.stringify({type:`input`,data:e}));return}for(let t of n)C.current=C.current.then(()=>h(`POST`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(o)}/input`,{data:t})).then(()=>{A(null)}).catch(e=>{A(f(e))})}function ye(e){if(j.current&&e.length===1){let t=e.toLowerCase().charCodeAt(0);if(t>=97&&t<=122){ve(String.fromCharCode(t-96)),j.current=!1,pe(!1);return}}ve(e)}function be(e){ve(e),y.current?.focus()}function xe(){let e=!j.current;j.current=e,pe(e)}return(0,v.useEffect)(()=>{let e=new nc,t=new $s({convertEol:!0,cursorBlink:!1,disableStdin:!se,fontFamily:`"JetBrains Mono", "SFMono-Regular", Consolas, monospace`,fontSize:13,lineHeight:1.15,scrollback:5e3,scrollSensitivity:3,fastScrollSensitivity:10,theme:tm()});t.loadAddon(e);try{t.loadAddon(new Qp),t.unicode.activeVersion=`11`}catch{}if(y.current=t,b.current=e,_.current){t.open(_.current);let e=0,n=()=>{let t=y.current;if(t)try{let r=new Bf;r.onContextLoss(()=>{r.dispose(),!(e>=3)&&(e+=1,T.current&&clearTimeout(T.current),T.current=setTimeout(n,3e3))}),t.loadAddon(r)}catch{}};n(),requestAnimationFrame(()=>_e())}let n=_.current,r=0,i=0,a=0,o=null;function s(e){e.touches.length===1&&(r=e.touches[0].clientY,i=e.touches[0].clientX,a=0,o=null)}function c(e){if(e.touches.length!==1)return;let t=y.current;if(!t)return;let n=r-e.touches[0].clientY,s=i-e.touches[0].clientX;if(o===null&&(Math.abs(n)>8||Math.abs(s)>8)&&(o=Math.abs(n)>Math.abs(s)),o!==!0)return;a+=n,r=e.touches[0].clientY;let c=Math.trunc(a/15);c!==0&&(t.scrollLines(c),a-=c*15),e.preventDefault(),e.stopPropagation()}n.addEventListener(`touchstart`,s,{capture:!0,passive:!0}),n.addEventListener(`touchmove`,c,{capture:!0,passive:!1});let l=new ResizeObserver(()=>{requestAnimationFrame(()=>_e())});return _.current&&l.observe(_.current),M(),()=>{n.removeEventListener(`touchstart`,s,{capture:!0}),n.removeEventListener(`touchmove`,c,{capture:!0}),l.disconnect(),w.current&&clearTimeout(w.current),T.current&&clearTimeout(T.current),t.dispose(),y.current=null,b.current=null}},[e,o]),(0,v.useEffect)(()=>{let e=y.current;e&&requestAnimationFrame(()=>{e.options.theme=tm()})},[g]),(0,v.useEffect)(()=>{le.current=se;let e=x.current;e?.readyState===WebSocket.OPEN&&e.send(JSON.stringify({type:`interactive`,interactive:se}));let t=y.current;if(t&&(t.options.disableStdin=!se,se)){let e=t.onData(ye);return setTimeout(()=>t.focus(),50),()=>e.dispose()}},[se]),(0,v.useEffect)(()=>{let t=!1,r=!1,i=0,a=null,s=null,c=()=>{if(t||r||a)return;let e=Math.min(1e4,1e3*2**i);i+=1,a=setTimeout(()=>{a=null,l()},e)},l=()=>{if(t||r)return;de(`connecting`);let a=n(e,o);a.binaryType=`arraybuffer`,s=a,x.current=a,a.onopen=()=>{if(t)return;i=0,de(`stream`),A(null),a.send(JSON.stringify({type:`pause`,paused:E.current})),a.send(JSON.stringify({type:`interactive`,interactive:le.current}));let e=y.current;try{b.current?.fit()}catch{}e&&a.send(JSON.stringify({type:`resize`,cols:e.cols,rows:e.rows}))},a.onmessage=e=>{let t=y.current;if(typeof e.data!=`string`){if(!t)return;e.data instanceof ArrayBuffer?t.write(new Uint8Array(e.data)):e.data instanceof Blob&&e.data.arrayBuffer().then(e=>y.current?.write(new Uint8Array(e)));return}try{let n=JSON.parse(e.data);n.type===`reset`?(t&&t.write(`\x1B[H\x1B[2J\x1B[3J`),typeof n.running==`boolean`&&O(n.running),typeof n.capturedAt==`number`&&oe(n.capturedAt),A(null)):n.type===`closed`?n.reason===`backpressure`?(A(`stream reset (backpressure) — reconnecting`),a.close()):(r=!0,O(!1),n.reason&&A(n.reason)):n.type===`error`&&A(n.error||`terminal stream error`)}catch{A(`invalid terminal stream frame`)}},a.onerror=()=>{t||A(`terminal stream failed; falling back to polling`)},a.onclose=()=>{t||(x.current===a&&(x.current=null),de(`polling`),c())}};return l(),()=>{t=!0,a&&clearTimeout(a),x.current===s&&(x.current=null),s?.close()}},[e,o]),(0,v.useEffect)(()=>{if(ue===`stream`||ue===`connecting`)return;let e=setInterval(()=>void M(),se?1e3:1500);return()=>clearInterval(e)},[M,se,ue]),(0,$.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col overflow-hidden`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1 px-1.5 py-1.5 border-b border-border bg-background shrink-0 w-full`,children:[(0,$.jsx)(c,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,$.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground truncate min-w-0`,children:o}),(0,$.jsx)(`span`,{className:t(`text-xs shrink-0 ml-auto`,ie===!1?`text-red-400`:ie===!0?`text-emerald-400`:`text-muted-foreground`),children:ie===!1?`stopped`:ie===!0?`live`:`…`}),(0,$.jsx)(`span`,{className:t(`text-xs shrink-0 hidden sm:inline`,ue===`stream`?`text-sky-400`:ue===`polling`?`text-amber-400`:`text-muted-foreground`),children:ue}),(0,$.jsxs)(`div`,{className:`flex items-center shrink-0`,children:[(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>ce(e=>!e),title:se?`Disable input`:`Enable input`,className:t(`h-7 w-7`,se?`text-emerald-400`:``),children:(0,$.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>re(e=>!e),title:ne?`Resume`:`Pause`,className:`h-7 w-7`,children:ne?(0,$.jsx)(i,{className:`h-3.5 w-3.5`}):(0,$.jsx)(a,{className:`h-3.5 w-3.5`})}),(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>void M(),title:`Refresh`,className:`hidden sm:inline-flex h-7 w-7`,children:(0,$.jsx)(r,{className:`h-3.5 w-3.5`})}),m&&(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:m,title:`Close`,className:`h-7 w-7`,children:(0,$.jsx)(l,{className:`h-3.5 w-3.5`})})]})]}),k&&(0,$.jsx)(`div`,{className:`px-3 py-1 text-xs text-destructive bg-destructive/10 border-b border-destructive/20`,children:k}),(0,$.jsx)(`div`,{className:`flex-1 min-h-0 bg-background p-1 overscroll-contain`,children:(0,$.jsx)(`div`,{ref:_,className:`h-full w-full overscroll-contain`})}),se&&(0,$.jsxs)(`div`,{className:`flex shrink-0 gap-1 overflow-x-auto border-t border-border bg-muted/30 px-1.5 py-1.5`,children:[[{label:`Esc`,seq:`\x1B`},{label:`Tab`,seq:` `},{label:`↑`,seq:`\x1B[A`},{label:`↓`,seq:`\x1B[B`},{label:`←`,seq:`\x1B[D`},{label:`→`,seq:`\x1B[C`},{label:`^C`,seq:``},{label:`^D`,seq:``},{label:`^Z`,seq:``}].map(e=>(0,$.jsx)(`button`,{type:`button`,className:`shrink-0 rounded border border-border bg-background px-2 py-1 font-mono text-xs text-foreground active:bg-accent`,onPointerDown:e=>e.preventDefault(),onClick:()=>be(e.seq),children:e.label},e.label)),(0,$.jsx)(`button`,{type:`button`,className:t(`shrink-0 rounded border px-2 py-1 font-mono text-xs`,fe?`border-primary bg-primary/20 text-primary`:`border-border bg-background text-foreground active:bg-accent`),onPointerDown:e=>e.preventDefault(),onClick:xe,children:`Ctrl`})]})]})}function rm({open:e,onOpenChange:t,orchestratorId:n,session:r,interactive:i}){let a=_(e);return(0,$.jsx)(h,{open:e,onOpenChange:t,children:(0,$.jsxs)(m,{className:`inset-x-0 top-0 translate-x-0 translate-y-0 w-auto max-w-none rounded-none p-0 pt-[var(--sat)] bg-background border-border gap-0 overflow-hidden`,style:{height:a?`${a}px`:`100dvh`},showCloseButton:!1,blurOverlay:!1,onEscapeKeyDown:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,$.jsxs)(g,{className:`sr-only`,children:[`Terminal — `,r]}),(0,$.jsx)(nm,{orchestratorId:n,session:r,interactive:i,onClose:()=>t(!1)})]})})}export{rm as TerminalDialog};
146
- //# sourceMappingURL=terminal-viewer-impl-DFODXxpG.js.map
145
+ `).trim(),t=/(file:|vscode-file:\/\/vscode-app)?(\/[^:]*:\d+:\d+)/.exec(e);Vp.register(a,t?.[2]??e,a)}return a},this._event}_removeListener(e){if(this._options?.onWillRemoveListener?.(this),!this._listeners)return;if(this._size===1){this._listeners=void 0,this._options?.onDidRemoveLastListener?.(this),this._size=0;return}let t=this._listeners,n=t.indexOf(e);if(n===-1)throw console.log(`disposed?`,this._disposed),console.log(`size?`,this._size),console.log(`arr?`,JSON.stringify(this._listeners)),Error(`Attempted to dispose unknown listener`);this._size--,t[n]=void 0;let r=this._deliveryQueue.current===this;if(this._size*zp<=t.length){let e=0;for(let n=0;n<t.length;n++)t[n]?t[e++]=t[n]:r&&(this._deliveryQueue.end--,e<this._deliveryQueue.i&&this._deliveryQueue.i--);t.length=e}}_deliver(e,t){if(!e)return;let n=this._options?.onListenerError||qf;if(!n){e.value(t);return}try{e.value(t)}catch(e){n(e)}}_deliverQueue(e){let t=e.current._listeners;for(;e.i<e.end;)this._deliver(t[e.i++],e.value);e.reset()}fire(e){if(this._deliveryQueue?.current&&(this._deliverQueue(this._deliveryQueue),this._perfMon?.stop()),this._perfMon?.start(this._size),this._listeners)if(this._listeners instanceof Rp)this._deliver(this._listeners,e);else{let t=this._deliveryQueue;t.enqueue(this,e,this._listeners.length),this._deliverQueue(t)}this._perfMon?.stop()}hasListeners(){return this._size>0}},Up=class{constructor(){this.i=-1,this.end=0}enqueue(e,t,n){this.i=0,this.end=n,this.current=e,this.value=t}reset(){this.i=this.end,this.current=void 0,this.value=void 0}},Wp=class e{constructor(){this._providers=Object.create(null),this._active=``,this._onChange=new Hp,this.onChange=this._onChange.event;let e=new Gf;this.register(e),this._active=e.version,this._activeProvider=e}static extractShouldJoin(e){return(e&1)!=0}static extractWidth(e){return e>>1&3}static extractCharKind(e){return e>>3}static createPropertyValue(e,t,n=!1){return(e&16777215)<<3|(t&3)<<1|!!n}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(e){if(!this._providers[e])throw Error(`unknown Unicode version "${e}"`);this._active=e,this._activeProvider=this._providers[e],this._onChange.fire(e)}register(e){this._providers[e.version]=e}wcwidth(e){return this._activeProvider.wcwidth(e)}getStringCellWidth(t){let n=0,r=0,i=t.length;for(let a=0;a<i;++a){let o=t.charCodeAt(a);if(55296<=o&&o<=56319){if(++a>=i)return n+this.wcwidth(o);let e=t.charCodeAt(a);56320<=e&&e<=57343?o=(o-55296)*1024+e-56320+65536:n+=this.wcwidth(e)}let s=this.charProperties(o,r),c=e.extractWidth(s);e.extractShouldJoin(s)&&(c-=e.extractWidth(r)),n+=c,r=s}return n}charProperties(e,t){return this._activeProvider.charProperties(e,t)}},Gp=[[768,879],[1155,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1541],[1552,1562],[1564,1564],[1611,1631],[1648,1648],[1750,1757],[1759,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2045,2045],[2070,2073],[2075,2083],[2085,2087],[2089,2093],[2137,2139],[2259,2306],[2362,2362],[2364,2364],[2369,2376],[2381,2381],[2385,2391],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2558,2558],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2641,2641],[2672,2673],[2677,2677],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2810,2815],[2817,2817],[2876,2876],[2879,2879],[2881,2884],[2893,2893],[2902,2902],[2914,2915],[2946,2946],[3008,3008],[3021,3021],[3072,3072],[3076,3076],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3170,3171],[3201,3201],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3328,3329],[3387,3388],[3393,3396],[3405,3405],[3426,3427],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3981,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4151],[4153,4154],[4157,4158],[4184,4185],[4190,4192],[4209,4212],[4226,4226],[4229,4230],[4237,4237],[4253,4253],[4448,4607],[4957,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6158],[6277,6278],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6683,6683],[6742,6742],[6744,6750],[6752,6752],[6754,6754],[6757,6764],[6771,6780],[6783,6783],[6832,6846],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7040,7041],[7074,7077],[7080,7081],[7083,7085],[7142,7142],[7144,7145],[7149,7149],[7151,7153],[7212,7219],[7222,7223],[7376,7378],[7380,7392],[7394,7400],[7405,7405],[7412,7412],[7416,7417],[7616,7673],[7675,7679],[8203,8207],[8234,8238],[8288,8292],[8294,8303],[8400,8432],[11503,11505],[11647,11647],[11744,11775],[12330,12333],[12441,12442],[42607,42610],[42612,42621],[42654,42655],[42736,42737],[43010,43010],[43014,43014],[43019,43019],[43045,43046],[43204,43205],[43232,43249],[43263,43263],[43302,43309],[43335,43345],[43392,43394],[43443,43443],[43446,43449],[43452,43453],[43493,43493],[43561,43566],[43569,43570],[43573,43574],[43587,43587],[43596,43596],[43644,43644],[43696,43696],[43698,43700],[43703,43704],[43710,43711],[43713,43713],[43756,43757],[43766,43766],[44005,44005],[44008,44008],[44013,44013],[64286,64286],[65024,65039],[65056,65071],[65279,65279],[65529,65531]],Kp=[[66045,66045],[66272,66272],[66422,66426],[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[68325,68326],[68900,68903],[69446,69456],[69633,69633],[69688,69702],[69759,69761],[69811,69814],[69817,69818],[69821,69821],[69837,69837],[69888,69890],[69927,69931],[69933,69940],[70003,70003],[70016,70017],[70070,70078],[70089,70092],[70191,70193],[70196,70196],[70198,70199],[70206,70206],[70367,70367],[70371,70378],[70400,70401],[70459,70460],[70464,70464],[70502,70508],[70512,70516],[70712,70719],[70722,70724],[70726,70726],[70750,70750],[70835,70840],[70842,70842],[70847,70848],[70850,70851],[71090,71093],[71100,71101],[71103,71104],[71132,71133],[71219,71226],[71229,71229],[71231,71232],[71339,71339],[71341,71341],[71344,71349],[71351,71351],[71453,71455],[71458,71461],[71463,71467],[71727,71735],[71737,71738],[72148,72151],[72154,72155],[72160,72160],[72193,72202],[72243,72248],[72251,72254],[72263,72263],[72273,72278],[72281,72283],[72330,72342],[72344,72345],[72752,72758],[72760,72765],[72767,72767],[72850,72871],[72874,72880],[72882,72883],[72885,72886],[73009,73014],[73018,73018],[73020,73021],[73023,73029],[73031,73031],[73104,73105],[73109,73109],[73111,73111],[73459,73460],[78896,78904],[92912,92916],[92976,92982],[94031,94031],[94095,94098],[113821,113822],[113824,113827],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[121344,121398],[121403,121452],[121461,121461],[121476,121476],[121499,121503],[121505,121519],[122880,122886],[122888,122904],[122907,122913],[122915,122916],[122918,122922],[123184,123190],[123628,123631],[125136,125142],[125252,125258],[917505,917505],[917536,917631],[917760,917999]],qp=[[4352,4447],[8986,8987],[9001,9002],[9193,9196],[9200,9200],[9203,9203],[9725,9726],[9748,9749],[9800,9811],[9855,9855],[9875,9875],[9889,9889],[9898,9899],[9917,9918],[9924,9925],[9934,9934],[9940,9940],[9962,9962],[9970,9971],[9973,9973],[9978,9978],[9981,9981],[9989,9989],[9994,9995],[10024,10024],[10060,10060],[10062,10062],[10067,10069],[10071,10071],[10133,10135],[10160,10160],[10175,10175],[11035,11036],[11088,11088],[11093,11093],[11904,11929],[11931,12019],[12032,12245],[12272,12283],[12288,12329],[12334,12350],[12353,12438],[12443,12543],[12549,12591],[12593,12686],[12688,12730],[12736,12771],[12784,12830],[12832,12871],[12880,19903],[19968,42124],[42128,42182],[43360,43388],[44032,55203],[63744,64255],[65040,65049],[65072,65106],[65108,65126],[65128,65131],[65281,65376],[65504,65510]],Jp=[[94176,94179],[94208,100343],[100352,101106],[110592,110878],[110928,110930],[110948,110951],[110960,111355],[126980,126980],[127183,127183],[127374,127374],[127377,127386],[127488,127490],[127504,127547],[127552,127560],[127568,127569],[127584,127589],[127744,127776],[127789,127797],[127799,127868],[127870,127891],[127904,127946],[127951,127955],[127968,127984],[127988,127988],[127992,128062],[128064,128064],[128066,128252],[128255,128317],[128331,128334],[128336,128359],[128378,128378],[128405,128406],[128420,128420],[128507,128591],[128640,128709],[128716,128716],[128720,128722],[128725,128725],[128747,128748],[128756,128762],[128992,129003],[129293,129393],[129395,129398],[129402,129442],[129445,129450],[129454,129482],[129485,129535],[129648,129651],[129656,129658],[129664,129666],[129680,129685],[131072,196605],[196608,262141]],Yp;function Xp(e,t){let n=0,r=t.length-1,i;if(e<t[0][0]||e>t[r][1])return!1;for(;r>=n;)if(i=n+r>>1,e>t[i][1])n=i+1;else if(e<t[i][0])r=i-1;else return!0;return!1}var Zp=class{constructor(){if(this.version=`11`,!Yp){Yp=new Uint8Array(65536),Yp.fill(1),Yp[0]=0,Yp.fill(0,1,32),Yp.fill(0,127,160);for(let e=0;e<Gp.length;++e)Yp.fill(0,Gp[e][0],Gp[e][1]+1);for(let e=0;e<qp.length;++e)Yp.fill(2,qp[e][0],qp[e][1]+1)}}wcwidth(e){return e<32?0:e<127?1:e<65536?Yp[e]:Xp(e,Kp)?0:Xp(e,Jp)?2:1}charProperties(e,t){let n=this.wcwidth(e),r=n===0&&t!==0;if(r){let e=Wp.extractWidth(t);e===0?r=!1:e>n&&(n=e)}return Wp.createPropertyValue(0,n,r)}},Qp=class{activate(e){e.unicode.register(new Zp)}dispose(){}},$=t();function $p(e){return getComputedStyle(document.documentElement).getPropertyValue(e).trim()}function em(e){if(e)try{let t=document.createElement(`div`);t.style.color=`oklch(${e})`,document.body.appendChild(t);let n=getComputedStyle(t).color;document.body.removeChild(t);let r=n.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);return r?`#${[r[1],r[2],r[3]].map(e=>Number(e).toString(16).padStart(2,`0`)).join(``)}`:void 0}catch{return}}function tm(){let e=em($p(`--background`))??`#09090b`,t=em($p(`--foreground`))??`#e4e4e7`;return{background:e,foreground:t,cursor:t,selectionBackground:em($p(`--muted`))??`#3f3f46`}}function nm({orchestratorId:e,session:t,interactive:n=!1,onClose:m}){let h=d(e=>e.apiCall),g=d(e=>e.theme),_=(0,v.useRef)(null),y=(0,v.useRef)(null),b=(0,v.useRef)(null),x=(0,v.useRef)(null),S=(0,v.useRef)(!1),C=(0,v.useRef)(Promise.resolve()),w=(0,v.useRef)(null),T=(0,v.useRef)(null),ee=(0,v.useRef)(null),E=(0,v.useRef)(!1),te=(0,v.useRef)(!1),D=(0,v.useRef)(!1),[ne,re]=(0,v.useState)(!1),[ie,O]=(0,v.useState)(null),[k,A]=(0,v.useState)(null),[ae,oe]=(0,v.useState)(null),[se,ce]=(0,v.useState)(n),le=(0,v.useRef)(n),[ue,de]=(0,v.useState)(`connecting`),j=(0,v.useRef)(!1),[fe,pe]=(0,v.useState)(!1),me=(0,v.useCallback)(()=>{let e=te.current||D.current;E.current=e;let t=x.current;t?.readyState===WebSocket.OPEN&&t.send(JSON.stringify({type:`pause`,paused:e}))},[]);(0,v.useEffect)(()=>{te.current=ne,me()},[ne,me]),(0,v.useEffect)(()=>{let e=()=>{D.current=document.hidden||!document.hasFocus(),me()};return e(),document.addEventListener(`visibilitychange`,e),window.addEventListener(`blur`,e),window.addEventListener(`focus`,e),()=>{document.removeEventListener(`visibilitychange`,e),window.removeEventListener(`blur`,e),window.removeEventListener(`focus`,e)}},[me]);let he=(0,v.useCallback)(e=>{let t=y.current;if(t){let n=(e.content||``).replace(/\n$/,``);t.write(`\x1b[H\x1b[2J\x1b[3J${n}`),e.cursorX!=null&&e.cursorY!=null&&t.write(`\x1b[${e.cursorY+1};${e.cursorX+1}H`)}O(e.running),oe(e.capturedAt),A(null)},[]),M=(0,v.useCallback)(async()=>{if(E.current||S.current)return;let n=x.current;if(n?.readyState===WebSocket.OPEN){n.send(JSON.stringify({type:`refresh`}));return}S.current=!0;try{he(await h(`GET`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(t)}`))}catch(e){A(f(e))}finally{S.current=!1}},[e,t,h,he]);function ge(n,r){let i=ee.current;if(i&&i.cols===n&&i.rows===r)return;ee.current={cols:n,rows:r};let a=x.current;if(a?.readyState===WebSocket.OPEN){a.send(JSON.stringify({type:`resize`,cols:n,rows:r}));return}h(`POST`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(t)}/resize`,{cols:n,rows:r}).catch(()=>{})}function _e(){let e=b.current,t=y.current;if(!(!e||!t))try{e.fit(),w.current&&clearTimeout(w.current),w.current=setTimeout(()=>{ge(t.cols,t.rows)},300)}catch{}}function ve(n){if(!n)return;let r=n.match(/[\s\S]{1,2048}/g)??[],i=x.current;if(i?.readyState===WebSocket.OPEN){for(let e of r)i.send(JSON.stringify({type:`input`,data:e}));return}for(let n of r)C.current=C.current.then(()=>h(`POST`,`/orchestrators/${encodeURIComponent(e)}/terminal/${encodeURIComponent(t)}/input`,{data:n})).then(()=>{A(null)}).catch(e=>{A(f(e))})}function ye(e){if(j.current&&e.length===1){let t=e.toLowerCase().charCodeAt(0);if(t>=97&&t<=122){ve(String.fromCharCode(t-96)),j.current=!1,pe(!1);return}}ve(e)}function be(e){ve(e),y.current?.focus()}function xe(){let e=!j.current;j.current=e,pe(e)}return(0,v.useEffect)(()=>{let e=new nc,t=new $s({convertEol:!0,cursorBlink:!1,disableStdin:!se,fontFamily:`"JetBrains Mono", "SFMono-Regular", Consolas, monospace`,fontSize:13,lineHeight:1.15,scrollback:5e3,scrollSensitivity:3,fastScrollSensitivity:10,theme:tm()});t.loadAddon(e);try{t.loadAddon(new Qp),t.unicode.activeVersion=`11`}catch{}if(y.current=t,b.current=e,_.current){t.open(_.current);let e=0,n=()=>{let t=y.current;if(t)try{let r=new Bf;r.onContextLoss(()=>{r.dispose(),!(e>=3)&&(e+=1,T.current&&clearTimeout(T.current),T.current=setTimeout(n,3e3))}),t.loadAddon(r)}catch{}};n(),requestAnimationFrame(()=>_e())}let n=_.current,r=0,i=0,a=0,o=null;function s(e){e.touches.length===1&&(r=e.touches[0].clientY,i=e.touches[0].clientX,a=0,o=null)}function c(e){if(e.touches.length!==1)return;let t=y.current;if(!t)return;let n=r-e.touches[0].clientY,s=i-e.touches[0].clientX;if(o===null&&(Math.abs(n)>8||Math.abs(s)>8)&&(o=Math.abs(n)>Math.abs(s)),o!==!0)return;a+=n,r=e.touches[0].clientY;let c=Math.trunc(a/15);c!==0&&(t.scrollLines(c),a-=c*15),e.preventDefault(),e.stopPropagation()}n.addEventListener(`touchstart`,s,{capture:!0,passive:!0}),n.addEventListener(`touchmove`,c,{capture:!0,passive:!1});let l=new ResizeObserver(()=>{requestAnimationFrame(()=>_e())});return _.current&&l.observe(_.current),M(),()=>{n.removeEventListener(`touchstart`,s,{capture:!0}),n.removeEventListener(`touchmove`,c,{capture:!0}),l.disconnect(),w.current&&clearTimeout(w.current),T.current&&clearTimeout(T.current),t.dispose(),y.current=null,b.current=null}},[e,t]),(0,v.useEffect)(()=>{let e=y.current;e&&requestAnimationFrame(()=>{e.options.theme=tm()})},[g]),(0,v.useEffect)(()=>{le.current=se;let e=x.current;e?.readyState===WebSocket.OPEN&&e.send(JSON.stringify({type:`interactive`,interactive:se}));let t=y.current;if(t&&(t.options.disableStdin=!se,se)){let e=t.onData(ye);return setTimeout(()=>t.focus(),50),()=>e.dispose()}},[se]),(0,v.useEffect)(()=>{let n=!1,r=!1,i=0,a=null,s=null,c=()=>{if(n||r||a)return;let e=Math.min(1e4,1e3*2**i);i+=1,a=setTimeout(()=>{a=null,l()},e)},l=()=>{if(n||r)return;de(`connecting`);let a=o(e,t);a.binaryType=`arraybuffer`,s=a,x.current=a,a.onopen=()=>{if(n)return;i=0,de(`stream`),A(null),a.send(JSON.stringify({type:`pause`,paused:E.current})),a.send(JSON.stringify({type:`interactive`,interactive:le.current}));let e=y.current;try{b.current?.fit()}catch{}e&&a.send(JSON.stringify({type:`resize`,cols:e.cols,rows:e.rows}))},a.onmessage=e=>{let t=y.current;if(typeof e.data!=`string`){if(!t)return;e.data instanceof ArrayBuffer?t.write(new Uint8Array(e.data)):e.data instanceof Blob&&e.data.arrayBuffer().then(e=>y.current?.write(new Uint8Array(e)));return}try{let n=JSON.parse(e.data);n.type===`reset`?(t&&t.write(`\x1B[H\x1B[2J\x1B[3J`),typeof n.running==`boolean`&&O(n.running),typeof n.capturedAt==`number`&&oe(n.capturedAt),A(null)):n.type===`closed`?n.reason===`backpressure`?(A(`stream reset (backpressure) — reconnecting`),a.close()):(r=!0,O(!1),n.reason&&A(n.reason)):n.type===`error`&&A(n.error||`terminal stream error`)}catch{A(`invalid terminal stream frame`)}},a.onerror=()=>{n||A(`terminal stream failed; falling back to polling`)},a.onclose=()=>{n||(x.current===a&&(x.current=null),de(`polling`),c())}};return l(),()=>{n=!0,a&&clearTimeout(a),x.current===s&&(x.current=null),s?.close()}},[e,t]),(0,v.useEffect)(()=>{if(ue===`stream`||ue===`connecting`)return;let e=setInterval(()=>void M(),se?1e3:1500);return()=>clearInterval(e)},[M,se,ue]),(0,$.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col overflow-hidden`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1 px-1.5 py-1.5 border-b border-border bg-background shrink-0 w-full`,children:[(0,$.jsx)(l,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,$.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground truncate min-w-0`,children:t}),(0,$.jsx)(`span`,{className:i(`text-xs shrink-0 ml-auto`,ie===!1?`text-red-400`:ie===!0?`text-emerald-400`:`text-muted-foreground`),children:ie===!1?`stopped`:ie===!0?`live`:`…`}),(0,$.jsx)(`span`,{className:i(`text-xs shrink-0 hidden sm:inline`,ue===`stream`?`text-sky-400`:ue===`polling`?`text-amber-400`:`text-muted-foreground`),children:ue}),(0,$.jsxs)(`div`,{className:`flex items-center shrink-0`,children:[(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>ce(e=>!e),title:se?`Disable input`:`Enable input`,className:i(`h-7 w-7`,se?`text-emerald-400`:``),children:(0,$.jsx)(c,{className:`h-3.5 w-3.5`})}),(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>re(e=>!e),title:ne?`Resume`:`Pause`,className:`h-7 w-7`,children:ne?(0,$.jsx)(a,{className:`h-3.5 w-3.5`}):(0,$.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>void M(),title:`Refresh`,className:`hidden sm:inline-flex h-7 w-7`,children:(0,$.jsx)(r,{className:`h-3.5 w-3.5`})}),m&&(0,$.jsx)(p,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:m,title:`Close`,className:`h-7 w-7`,children:(0,$.jsx)(u,{className:`h-3.5 w-3.5`})})]})]}),k&&(0,$.jsx)(`div`,{className:`px-3 py-1 text-xs text-destructive bg-destructive/10 border-b border-destructive/20`,children:k}),(0,$.jsx)(`div`,{className:`flex-1 min-h-0 bg-background p-1 overscroll-contain`,children:(0,$.jsx)(`div`,{ref:_,className:`h-full w-full overscroll-contain`})}),se&&(0,$.jsxs)(`div`,{className:`flex shrink-0 gap-1 overflow-x-auto border-t border-border bg-muted/30 px-1.5 py-1.5`,children:[[{label:`Esc`,seq:`\x1B`},{label:`Tab`,seq:` `},{label:`↑`,seq:`\x1B[A`},{label:`↓`,seq:`\x1B[B`},{label:`←`,seq:`\x1B[D`},{label:`→`,seq:`\x1B[C`},{label:`^C`,seq:``},{label:`^D`,seq:``},{label:`^Z`,seq:``}].map(e=>(0,$.jsx)(`button`,{type:`button`,className:`shrink-0 rounded border border-border bg-background px-2 py-1 font-mono text-xs text-foreground active:bg-accent`,onPointerDown:e=>e.preventDefault(),onClick:()=>be(e.seq),children:e.label},e.label)),(0,$.jsx)(`button`,{type:`button`,className:i(`shrink-0 rounded border px-2 py-1 font-mono text-xs`,fe?`border-primary bg-primary/20 text-primary`:`border-border bg-background text-foreground active:bg-accent`),onPointerDown:e=>e.preventDefault(),onClick:xe,children:`Ctrl`})]})]})}function rm({open:e,onOpenChange:t,orchestratorId:n,session:r,interactive:i}){let a=_(e);return(0,$.jsx)(h,{open:e,onOpenChange:t,children:(0,$.jsxs)(m,{className:`inset-x-0 top-0 translate-x-0 translate-y-0 w-auto max-w-none rounded-none p-0 pt-[var(--sat)] bg-background border-border gap-0 overflow-hidden`,style:{height:a?`${a}px`:`100dvh`},showCloseButton:!1,blurOverlay:!1,onEscapeKeyDown:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,$.jsxs)(g,{className:`sr-only`,children:[`Terminal — `,r]}),(0,$.jsx)(nm,{orchestratorId:n,session:r,interactive:i,onClose:()=>t(!1)})]})})}export{rm as TerminalDialog};
146
+ //# sourceMappingURL=terminal-viewer-impl-CA8u4jh3.js.map