tarsk 0.5.75 → 0.5.76

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 (66) hide show
  1. package/dist/public/assets/{account-view-DvyhZGLB.js → account-view-CWtpznW2.js} +1 -1
  2. package/dist/public/assets/browser-tab-D_5MLhxE.js +12 -0
  3. package/dist/public/assets/chat-dock-context-8K8Ikjgy.js +1 -0
  4. package/dist/public/assets/{commit-dialog-BUfbvG6F.js → commit-dialog-CSXPoomw.js} +1 -1
  5. package/dist/public/assets/{commit-error-dialog-D1XRPBOc.js → commit-error-dialog-CdcGI69P.js} +1 -1
  6. package/dist/public/assets/{commit-method-fields-CVQjrJ_O.js → commit-method-fields-BtEHb0_G.js} +1 -1
  7. package/dist/public/assets/{conversation-history-view-CzRrC6cJ.js → conversation-history-view-CuzU9qF6.js} +1 -1
  8. package/dist/public/assets/{create-project-dialog-Bqm_qC2v.js → create-project-dialog-a6Wgq-Z8.js} +1 -1
  9. package/dist/public/assets/{create-repo-dialog-D2H1eZic.js → create-repo-dialog-BTIQ5Nw4.js} +1 -1
  10. package/dist/public/assets/{diff-view-zXlCXzER.js → diff-view-DA1uT9tc.js} +2 -2
  11. package/dist/public/assets/{explorer-tab-view-BOc5FPFg.js → explorer-tab-view-CewTYYOm.js} +2 -2
  12. package/dist/public/assets/explorer-tree-C0VDhihz.js +1 -0
  13. package/dist/public/assets/{explorer-view-DFjt0DXO.js → explorer-view-RCfDm3p5.js} +2 -2
  14. package/dist/public/assets/{git-history-dialog-CFoZcBB0.js → git-history-dialog-DL0Trxiz.js} +1 -1
  15. package/dist/public/assets/index-B3-5kIOf.js +3658 -0
  16. package/dist/public/assets/merged-pr-dialog-BzND8nzx.js +1 -0
  17. package/dist/public/assets/{model-list-controls-CNrps9Ys.js → model-list-controls-I67L2x3H.js} +1 -1
  18. package/dist/public/assets/onboarding-dialog-DY8v11hv.js +1 -0
  19. package/dist/public/assets/{project-coding-view-DG1D8-z4.js → project-coding-view-DxOwsjtt.js} +1 -1
  20. package/dist/public/assets/project-danger-zone-view-CkvKOQrl.js +1 -0
  21. package/dist/public/assets/{project-env-vars-view-TblkryyN.js → project-env-vars-view-DYLWA7s0.js} +1 -1
  22. package/dist/public/assets/{project-model-aliases-view-Ct0v4NQm.js → project-model-aliases-view-DWu9khLA.js} +1 -1
  23. package/dist/public/assets/{project-settings-view-Dd3QPujg.js → project-settings-view-DJfmaWn6.js} +1 -1
  24. package/dist/public/assets/{project-tools-view-DdsKSUDp.js → project-tools-view-BEjBkghz.js} +1 -1
  25. package/dist/public/assets/providers-list-view-jMEPJCci.js +1 -0
  26. package/dist/public/assets/{pull-request-dialog-BRiR5Qz8.js → pull-request-dialog-B_JCqT53.js} +1 -1
  27. package/dist/public/assets/{pull-with-changes-dialog-BCIWOzvE.js → pull-with-changes-dialog-V3_km2zQ.js} +1 -1
  28. package/dist/public/assets/{push-before-pr-dialog-BEr0QZlO.js → push-before-pr-dialog-CarrD3y2.js} +1 -1
  29. package/dist/public/assets/{settings-general-view-CKvkG8C5.js → settings-general-view-BhrfHGfQ.js} +1 -1
  30. package/dist/public/assets/{settings-list-B9a61wMg.js → settings-list-DiiYzOxn.js} +1 -1
  31. package/dist/public/assets/{settings-logs-view-4Uoa1-Dx.js → settings-logs-view-DbKM1SNk.js} +2 -2
  32. package/dist/public/assets/settings-mcp-servers-view-4FpPIeYV.js +5 -0
  33. package/dist/public/assets/{settings-models-view-Ef404r4H.js → settings-models-view-CJVeo9ad.js} +1 -1
  34. package/dist/public/assets/settings-skills-view-DoRPGbHG.js +3 -0
  35. package/dist/public/assets/{settings-slack-view-C32in2Wg.js → settings-slack-view-Cc1NgVkx.js} +1 -1
  36. package/dist/public/assets/settings-slash-commands-view-CmlWqqmi.js +1 -0
  37. package/dist/public/assets/{settings-statistics-view-CxW2KB56.js → settings-statistics-view-DRuyEbcN.js} +1 -1
  38. package/dist/public/assets/settings-storage-view-DihbtUYb.js +1 -0
  39. package/dist/public/assets/{settings-subagents-view-StdmEn-E.js → settings-subagents-view-B2RvxDZI.js} +2 -2
  40. package/dist/public/assets/{settings-system-prompt-view-DizAjXjo.js → settings-system-prompt-view-CvVbgjNN.js} +1 -1
  41. package/dist/public/assets/settings-view-CPUAjTMa.js +2 -0
  42. package/dist/public/assets/tasks-view-CvFFLPeD.js +1 -0
  43. package/dist/public/assets/{terminal-panel-DSfDZzBk.js → terminal-panel-DIh6it7K.js} +1 -1
  44. package/dist/public/assets/{use-active-dock-panel-instance-DNExGWVs.js → use-active-dock-panel-instance-DRfRj6MV.js} +1 -1
  45. package/dist/public/assets/{use-installed-ai-files-BuuVI3sM.js → use-installed-ai-files-C8nNWGC7.js} +1 -1
  46. package/dist/public/assets/{useBaseQuery-GJoj38pA.js → useBaseQuery-34f0-SVd.js} +1 -1
  47. package/dist/public/assets/{web-DyYrh5r4.js → web-Bn9n5e7r.js} +1 -1
  48. package/dist/public/assets/{web-CliOgvKf.js → web-C2KGFouM.js} +1 -1
  49. package/dist/public/assets/{web-Dzci4edU.js → web-Dk3GAfTy.js} +1 -1
  50. package/dist/public/assets/{web-BmpJHrzY.js → web-DycfRH4j.js} +1 -1
  51. package/dist/public/index.html +3 -3
  52. package/package.json +1 -1
  53. package/dist/public/assets/browser-tab-5rqpwS93.js +0 -12
  54. package/dist/public/assets/chat-dock-context-BJNNRoZC.js +0 -1
  55. package/dist/public/assets/explorer-tree-m1u3VhWL.js +0 -1
  56. package/dist/public/assets/index-u8UbWjXL.js +0 -3658
  57. package/dist/public/assets/merged-pr-dialog-BMqHRow2.js +0 -1
  58. package/dist/public/assets/onboarding-dialog-BFJftu2O.js +0 -1
  59. package/dist/public/assets/project-danger-zone-view-6HEDGyUj.js +0 -1
  60. package/dist/public/assets/providers-list-view-BUNk2E8O.js +0 -1
  61. package/dist/public/assets/settings-mcp-servers-view-CaAy6iV4.js +0 -5
  62. package/dist/public/assets/settings-skills-view-DLrG4E_U.js +0 -3
  63. package/dist/public/assets/settings-slash-commands-view-CpBMV_5D.js +0 -1
  64. package/dist/public/assets/settings-storage-view-BzT8k6yE.js +0 -1
  65. package/dist/public/assets/settings-view-CTQgFmjM.js +0 -2
  66. package/dist/public/assets/tasks-view-z93aMoQp.js +0 -1
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{Dt as i,N as a}from"./dist-CTLFS4dn.js";import{d as o,r as s,t as c}from"./button-kWtLAMpB.js";import{En as l,Ft as u,M as d,N as f,On as p,Ot as m,Pn as h,Wn as g,Z as _,bn as v,g as y,gt as b,h as x,ht as S,kn as C,t as w,u as T}from"./dist-c_QADQ5u.js";import{t as ee}from"./dist-DoxvnNEY.js";import{i as E,n as te,t as ne}from"./tooltip-Db8UeYxm.js";import{$ as re,Br as ie,Gn as ae,Ir as oe,Li as se,yi as ce}from"./api-DX1ny6q-.js";import{t as le}from"./dist-DD4GtbiM.js";import{t as ue}from"./dist-OixawqbU.js";import{i as de}from"./scroll-area-lkVMElz5.js";import{t as fe}from"./use-toast-xpb5jNtN.js";import{t as D}from"./dist-CSssbxDI.js";import{Et as pe,N as O,O as me,P as he,St as ge,Yn as _e,at as ve,fr as ye,gt as k,it as be,kt as xe,n as Se,ot as Ce,r as we,t as Te,vt as Ee,wt as De}from"./index-u8UbWjXL.js";import{n as A,t as Oe}from"./toggle-group-Q36wRGKA.js";import{t as ke}from"./use-settings-page-loading-BTySlInF.js";var j=t(),M=e(n(),1),N=r(),Ae=[`PageUp`,`PageDown`],je=[`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`],Me={"from-left":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-right":[`Home`,`PageDown`,`ArrowDown`,`ArrowRight`],"from-bottom":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-top":[`Home`,`PageDown`,`ArrowUp`,`ArrowLeft`]},P=`Slider`,[Ne,Pe,Fe]=le(P),[Ie,Le]=x(P,[Fe]),[Re,ze]=Ie(P),Be=M.forwardRef((e,t)=>{let{name:n,min:r=0,max:i=100,step:a=1,orientation:o=`horizontal`,disabled:s=!1,minStepsBetweenThumbs:c=0,defaultValue:l=[r],value:u,onValueChange:d=()=>{},onValueCommit:f=()=>{},inverted:p=!1,form:m,...h}=e,g=M.useRef(new Set),_=M.useRef(0),v=o===`horizontal`?He:Ue,[b=[],x]=w({prop:u,defaultProp:l,onChange:e=>{[...g.current][_.current]?.focus(),d(e)}}),S=M.useRef(b);function C(e){E(e,nt(b,e))}function T(e){E(e,_.current)}function ee(){let e=S.current[_.current];b[_.current]!==e&&f(b)}function E(e,t,{commit:n}={commit:!1}){let o=R(a),s=de(z(Math.round((e-r)/a)*a+r,o),[r,i]);x((e=[])=>{let r=$e(e,s,t);if(at(r,c*a)){_.current=r.indexOf(s);let t=String(r)!==String(e);return t&&n&&f(r),t?r:e}else return e})}return(0,N.jsx)(Re,{scope:e.__scopeSlider,name:n,disabled:s,min:r,max:i,valueIndexToChangeRef:_,thumbs:g.current,values:b,orientation:o,form:m,children:(0,N.jsx)(Ne.Provider,{scope:e.__scopeSlider,children:(0,N.jsx)(Ne.Slot,{scope:e.__scopeSlider,children:(0,N.jsx)(v,{"aria-disabled":s,"data-disabled":s?``:void 0,...h,ref:t,onPointerDown:y(h.onPointerDown,()=>{s||(S.current=b)}),min:r,max:i,inverted:p,onSlideStart:s?void 0:C,onSlideMove:s?void 0:T,onSlideEnd:s?void 0:ee,onHomeKeyDown:()=>!s&&E(r,0,{commit:!0}),onEndKeyDown:()=>!s&&E(i,b.length-1,{commit:!0}),onStepKeyDown:({event:e,direction:t})=>{if(!s){let n=Ae.includes(e.key)||e.shiftKey&&je.includes(e.key)?10:1,r=_.current,i=b[r];E(i+a*n*t,r,{commit:!0})}}})})})})});Be.displayName=P;var[Ve,F]=Ie(P,{startEdge:`left`,endEdge:`right`,size:`width`,direction:1}),He=M.forwardRef((e,t)=>{let{min:n,max:r,dir:i,inverted:a,onSlideStart:s,onSlideMove:c,onSlideEnd:l,onStepKeyDown:u,...d}=e,[f,p]=M.useState(null),m=o(t,e=>p(e)),h=M.useRef(void 0),g=ue(i),_=g===`ltr`,v=_&&!a||!_&&a;function y(e){let t=h.current||f.getBoundingClientRect(),i=L([0,t.width],v?[n,r]:[r,n]);return h.current=t,i(e-t.left)}return(0,N.jsx)(Ve,{scope:e.__scopeSlider,startEdge:v?`left`:`right`,endEdge:v?`right`:`left`,direction:v?1:-1,size:`width`,children:(0,N.jsx)(I,{dir:g,"data-orientation":`horizontal`,...d,ref:m,style:{...d.style,"--radix-slider-thumb-transform":`translateX(-50%)`},onSlideStart:e=>{let t=y(e.clientX);s?.(t)},onSlideMove:e=>{let t=y(e.clientX);c?.(t)},onSlideEnd:()=>{h.current=void 0,l?.()},onStepKeyDown:e=>{let t=Me[v?`from-left`:`from-right`].includes(e.key);u?.({event:e,direction:t?-1:1})}})})}),Ue=M.forwardRef((e,t)=>{let{min:n,max:r,inverted:i,onSlideStart:a,onSlideMove:s,onSlideEnd:c,onStepKeyDown:l,...u}=e,d=M.useRef(null),f=o(t,d),p=M.useRef(void 0),m=!i;function h(e){let t=p.current||d.current.getBoundingClientRect(),i=L([0,t.height],m?[r,n]:[n,r]);return p.current=t,i(e-t.top)}return(0,N.jsx)(Ve,{scope:e.__scopeSlider,startEdge:m?`bottom`:`top`,endEdge:m?`top`:`bottom`,size:`height`,direction:m?1:-1,children:(0,N.jsx)(I,{"data-orientation":`vertical`,...u,ref:f,style:{...u.style,"--radix-slider-thumb-transform":`translateY(50%)`},onSlideStart:e=>{let t=h(e.clientY);a?.(t)},onSlideMove:e=>{let t=h(e.clientY);s?.(t)},onSlideEnd:()=>{p.current=void 0,c?.()},onStepKeyDown:e=>{let t=Me[m?`from-bottom`:`from-top`].includes(e.key);l?.({event:e,direction:t?-1:1})}})})}),I=M.forwardRef((e,t)=>{let{__scopeSlider:n,onSlideStart:r,onSlideMove:i,onSlideEnd:a,onHomeKeyDown:o,onEndKeyDown:s,onStepKeyDown:c,...l}=e,u=ze(P,n);return(0,N.jsx)(T.span,{...l,ref:t,onKeyDown:y(e.onKeyDown,e=>{e.key===`Home`?(o(e),e.preventDefault()):e.key===`End`?(s(e),e.preventDefault()):Ae.concat(je).includes(e.key)&&(c(e),e.preventDefault())}),onPointerDown:y(e.onPointerDown,e=>{let t=e.target;t.setPointerCapture(e.pointerId),e.preventDefault(),u.thumbs.has(t)?t.focus():r(e)}),onPointerMove:y(e.onPointerMove,e=>{e.target.hasPointerCapture(e.pointerId)&&i(e)}),onPointerUp:y(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(t.releasePointerCapture(e.pointerId),a(e))})})}),We=`SliderTrack`,Ge=M.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=ze(We,n);return(0,N.jsx)(T.span,{"data-disabled":i.disabled?``:void 0,"data-orientation":i.orientation,...r,ref:t})});Ge.displayName=We;var Ke=`SliderRange`,qe=M.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=ze(Ke,n),a=F(Ke,n),s=o(t,M.useRef(null)),c=i.values.length,l=i.values.map(e=>et(e,i.min,i.max)),u=c>1?Math.min(...l):0,d=100-Math.max(...l);return(0,N.jsx)(T.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?``:void 0,...r,ref:s,style:{...e.style,[a.startEdge]:u+`%`,[a.endEdge]:d+`%`}})});qe.displayName=Ke;var Je=`SliderThumb`,Ye=M.forwardRef((e,t)=>{let n=Pe(e.__scopeSlider),[r,i]=M.useState(null),a=o(t,e=>i(e)),s=M.useMemo(()=>r?n().findIndex(e=>e.ref.current===r):-1,[n,r]);return(0,N.jsx)(Xe,{...e,ref:a,index:s})}),Xe=M.forwardRef((e,t)=>{let{__scopeSlider:n,index:r,name:i,...a}=e,s=ze(Je,n),c=F(Je,n),[l,u]=M.useState(null),d=o(t,e=>u(e)),f=l?s.form||!!l.closest(`form`):!0,p=ee(l),m=s.values[r],h=m===void 0?0:et(m,s.min,s.max),g=tt(r,s.values.length),_=p?.[c.size],v=_?rt(_,h,c.direction):0;return M.useEffect(()=>{if(l)return s.thumbs.add(l),()=>{s.thumbs.delete(l)}},[l,s.thumbs]),(0,N.jsxs)(`span`,{style:{transform:`var(--radix-slider-thumb-transform)`,position:`absolute`,[c.startEdge]:`calc(${h}% + ${v}px)`},children:[(0,N.jsx)(Ne.ItemSlot,{scope:e.__scopeSlider,children:(0,N.jsx)(T.span,{role:`slider`,"aria-label":e[`aria-label`]||g,"aria-valuemin":s.min,"aria-valuenow":m,"aria-valuemax":s.max,"aria-orientation":s.orientation,"data-orientation":s.orientation,"data-disabled":s.disabled?``:void 0,tabIndex:s.disabled?void 0:0,...a,ref:d,style:m===void 0?{display:`none`}:e.style,onFocus:y(e.onFocus,()=>{s.valueIndexToChangeRef.current=r})})}),f&&(0,N.jsx)(Qe,{name:i??(s.name?s.name+(s.values.length>1?`[]`:``):void 0),form:s.form,value:m},r)]})});Ye.displayName=Je;var Ze=`RadioBubbleInput`,Qe=M.forwardRef(({__scopeSlider:e,value:t,...n},r)=>{let i=M.useRef(null),a=o(i,r),s=D(t);return M.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLInputElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(s!==t&&r){let n=new Event(`input`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[s,t]),(0,N.jsx)(T.input,{style:{display:`none`},...n,ref:a,defaultValue:t})});Qe.displayName=Ze;function $e(e=[],t,n){let r=[...e];return r[n]=t,r.sort((e,t)=>e-t)}function et(e,t,n){return de(100/(n-t)*(e-t),[0,100])}function tt(e,t){if(t>2)return`Value ${e+1} of ${t}`;if(t===2)return[`Minimum`,`Maximum`][e]}function nt(e,t){if(e.length===1)return 0;let n=e.map(e=>Math.abs(e-t)),r=Math.min(...n);return n.indexOf(r)}function rt(e,t,n){let r=e/2;return(r-L([0,50],[0,r])(t)*n)*n}function it(e){return e.slice(0,-1).map((t,n)=>e[n+1]-t)}function at(e,t){if(t>0){let n=it(e);return Math.min(...n)>=t}return!0}function L(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function R(e){return(String(e).split(`.`)[1]||``).length}function z(e,t){let n=10**t;return Math.round(e*n)/n}var ot=Be,st=Ge,ct=qe,lt=Ye,ut=M.forwardRef((e,t)=>{let n=(0,j.c)(22),r,i,a;n[0]===e?(r=n[1],i=n[2],a=n[3]):({className:r,valueTooltip:a,...i}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a);let[o,c]=M.useState(!1),[l,u]=M.useState(!1),d,f;n[4]===l?(d=n[5],f=n[6]):(d=()=>{if(!l)return;let e=function(){u(!1)};return document.addEventListener(`pointerup`,e),()=>{document.removeEventListener(`pointerup`,e)}},f=[l],n[4]=l,n[5]=d,n[6]=f),M.useEffect(d,f);let p;n[7]===a?p=n[8]:(p=(0,N.jsx)(lt,{className:`block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50`,onPointerDown:()=>{a!=null&&(u(!0),c(!0))}}),n[7]=a,n[8]=p);let m=p,h;n[9]===r?h=n[10]:(h=s(`relative flex w-full touch-none select-none items-center`,r),n[9]=r,n[10]=h);let g;n[11]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,N.jsx)(st,{className:`relative h-2 w-full grow overflow-hidden rounded-full bg-secondary`,children:(0,N.jsx)(ct,{className:`absolute h-full bg-primary`})}),n[11]=g):g=n[11];let _;n[12]!==l||n[13]!==o||n[14]!==m||n[15]!==a?(_=a==null?m:(0,N.jsxs)(ne,{open:o||l,onOpenChange:c,children:[(0,N.jsx)(E,{asChild:!0,children:m}),(0,N.jsx)(te,{side:`top`,children:a})]}),n[12]=l,n[13]=o,n[14]=m,n[15]=a,n[16]=_):_=n[16];let v;return n[17]!==i||n[18]!==t||n[19]!==h||n[20]!==_?(v=(0,N.jsxs)(ot,{ref:t,className:h,...i,children:[g,_]}),n[17]=i,n[18]=t,n[19]=h,n[20]=_,n[21]=v):v=n[21],v});ut.displayName=ot.displayName;var B=a(`app.use-maximum-turn-count.hook`),dt=100;function ft(){let[e,t]=(0,M.useState)(dt),[n,r]=(0,M.useState)(dt.toString()),[i,a]=(0,M.useState)(!0),[o,s]=(0,M.useState)(!1);(0,M.useEffect)(()=>{let e=!1;async function n(){try{let n=await re();e||(t(n.maximumTurnCount),r(n.maximumTurnCount.toString()))}catch(e){B.error(`Failed to load maximum turn count:`,e)}finally{e||a(!1)}}return n(),()=>{e=!0}},[]);function c(e){r(e)}async function l(e){s(!0);try{let n=await ae({maximumTurnCount:e});t(n.maximumTurnCount),r(n.maximumTurnCount.toString())}catch(e){throw B.error(`Failed to update maximum turn count:`,e),e}finally{s(!1)}}function u(){r(e.toString())}return{defaultMaximumTurnCount:dt,draftMaximumTurnCount:n,isLoading:i,isSaving:o,maximumTurnCount:e,resetDraftMaximumTurnCount:u,setDraftMaximumTurnCount:c,updateMaximumTurnCount:l}}var V=a(`app.use-screen-recording-permission.hook`),H={isMacOS:!1,granted:!1,available:!1,message:``};function pt(){return{...H,isMacOS:O()}}function mt(){let[e,t]=(0,M.useState)(pt),[n,r]=(0,M.useState)(!0),[i,a]=(0,M.useState)(null),[o,s]=(0,M.useState)(!1),[c,l]=(0,M.useState)(null),u=(0,M.useCallback)(async()=>{r(!0),a(null);try{t(await oe(`api/system-permissions/screen-recording`))}catch(e){a(e instanceof Error?e.message:`Failed to check screen recording permission`),t(e=>({...H,isMacOS:e?.isMacOS??O(),message:`Unable to check permission status.`}))}finally{r(!1)}},[]);return(0,M.useEffect)(()=>{u()},[u]),{status:e,isLoading:n,error:i,isOpeningSettings:o,openSettingsError:c,refresh:u,openSystemSettings:(0,M.useCallback)(async()=>{s(!0),l(null);try{let e=await ie(`api/system-permissions/screen-recording/open-settings`,{});if(!e.success){let t=e.message||`Failed to open System Settings`;V.error(`[useScreenRecordingPermission] ${t}`,e.error),l(t)}}catch(e){let t=e instanceof Error?e.message:`Failed to open System Settings`;V.error(`[useScreenRecordingPermission] Error opening System Settings:`,e),l(t)}finally{s(!1)}},[])}}var U=a(`app.use-server-bind-mode.hook`),W=`local`,ht=`tarsk-server-bind-mode-changed`;function G(e){se(e)}function gt(){if(typeof window>`u`)return!1;try{return sessionStorage.getItem(ht)===`true`}catch{return!1}}function _t(e){if(!(typeof window>`u`))try{e?sessionStorage.setItem(ht,`true`):sessionStorage.removeItem(ht)}catch{}}function vt(){let[e,t]=(0,M.useState)(()=>ce()?.serverBindMode??W),[n,r]=(0,M.useState)(null),[i,a]=(0,M.useState)(()=>ce()?.networkAddresses??[]),[o,s]=(0,M.useState)(()=>ce()===null),[c,l]=(0,M.useState)(!1),[u,d]=(0,M.useState)(gt);(0,M.useEffect)(()=>{let e=!1;async function n(){try{let n=await re();e||(t(n.serverBindMode),r(n.serverBindMode),a(n.networkAddresses),G({networkAddresses:n.networkAddresses,serverBindMode:n.serverBindMode}))}catch(e){U.error(`Failed to load server bind mode:`,e)}finally{e||s(!1)}}return n(),()=>{e=!0}},[]);async function f(e){l(!0);try{let n=await ae({serverBindMode:e});t(n.serverBindMode),a(n.networkAddresses),G({networkAddresses:n.networkAddresses,serverBindMode:n.serverBindMode}),d(!0),_t(!0)}catch(e){throw U.error(`Failed to update server bind mode:`,e),e}finally{l(!1)}}let p=n!==null&&e!==n;return{defaultServerBindMode:W,hasServerBindModeChanged:p,isLoading:o,isSaving:c,needsRestart:p||u,networkAddresses:i,serverBindMode:e,updateServerBindMode:f}}var K=a(`app.use-logging.hook`);function yt(){let[e,t]=(0,M.useState)(!1),[n,r]=(0,M.useState)(null),[i,a]=(0,M.useState)(!1),[o,s]=(0,M.useState)(null),[c,l]=(0,M.useState)(!0),[u,d]=(0,M.useState)(!1);(0,M.useEffect)(()=>{let e=!1;async function n(){try{let n=await re();e||(t(n.loggingEnabled),r(n.fileLoggingPath),a(n.betterStackEnvConfigured),s(n.betterStackIngestingHost))}catch(e){K.error(`Failed to load logging setting:`,e)}finally{e||l(!1)}}return n(),()=>{e=!0}},[]);async function f(e){d(!0);try{let n=await ae({loggingEnabled:e});t(n.loggingEnabled),r(n.fileLoggingPath),a(n.betterStackEnvConfigured),s(n.betterStackIngestingHost)}catch(e){throw K.error(`Failed to update logging setting:`,e),e}finally{d(!1)}}return{ingestingHost:o,isEnabled:e,isEnvConfigured:i,isLoading:c,isSaving:u,logPath:n,updateIsEnabled:f}}var bt=Object.defineProperty,q=Object.getOwnPropertySymbols,xt=Object.prototype.hasOwnProperty,St=Object.prototype.propertyIsEnumerable,Ct=(e,t,n)=>t in e?bt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,J=(e,t)=>{for(var n in t||={})xt.call(t,n)&&Ct(e,n,t[n]);if(q)for(var n of q(t))St.call(t,n)&&Ct(e,n,t[n]);return e},Y=(e,t)=>{var n={};for(var r in e)xt.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&q)for(var r of q(e))t.indexOf(r)<0&&St.call(e,r)&&(n[r]=e[r]);return n},X;(e=>{let t=class t{constructor(e,n,r,a){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version value out of range`);if(a<-1||a>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let o=[];for(let e=0;e<this.size;e++)o.push(!1);for(let e=0;e<this.size;e++)this.modules.push(o.slice()),this.isFunction.push(o.slice());this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a==-1){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<e&&(a=t,e=n),this.applyMask(t)}}i(0<=a&&a<=7),this.mask=a,this.applyMask(a),this.drawFormatBits(a),this.isFunction=[]}static encodeText(n,r){let i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){let i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,r,a=1,s=40,c=-1,l=!0){if(!(t.MIN_VERSION<=a&&a<=s&&s<=t.MAX_VERSION)||c<-1||c>7)throw RangeError(`Invalid value`);let u,d;for(u=a;;u++){let n=t.getNumDataCodewords(u,r)*8,i=o.getTotalBits(e,u);if(i<=n){d=i;break}if(u>=s)throw RangeError(`Data too long`)}for(let e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])l&&d<=t.getNumDataCodewords(u,e)*8&&(r=e);let f=[];for(let t of e){n(t.mode.modeBits,4,f),n(t.numChars,t.mode.numCharCountBits(u),f);for(let e of t.getData())f.push(e)}i(f.length==d);let p=t.getNumDataCodewords(u,r)*8;i(f.length<=p),n(0,Math.min(4,p-f.length),f),n(0,(8-f.length%8)%8,f),i(f.length%8==0);for(let e=236;f.length<p;e^=253)n(e,8,f);let m=[];for(;m.length*8<f.length;)m.push(0);return f.forEach((e,t)=>m[t>>>3]|=e<<7-(t&7)),new t(u,r,m,c)}getModule(e,t){return 0<=e&&e<this.size&&0<=t&&t<this.size&&this.modules[t][e]}getModules(){return this.modules}drawFunctionPatterns(){for(let e=0;e<this.size;e++)this.setFunctionModule(6,e,e%2==0),this.setFunctionModule(e,6,e%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)n==0&&r==0||n==0&&r==t-1||n==t-1&&r==0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let t=this.errorCorrectionLevel.formatBits<<3|e,n=t;for(let e=0;e<10;e++)n=n<<1^(n>>>9)*1335;let a=(t<<10|n)^21522;i(a>>>15==0);for(let e=0;e<=5;e++)this.setFunctionModule(8,e,r(a,e));this.setFunctionModule(8,7,r(a,6)),this.setFunctionModule(8,8,r(a,7)),this.setFunctionModule(7,8,r(a,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,r(a,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,r(a,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,r(a,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;i(t>>>18==0);for(let e=0;e<18;e++){let n=r(t,e),i=this.size-11+e%3,a=Math.floor(e/3);this.setFunctionModule(i,a,n),this.setFunctionModule(a,i,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a<this.size&&0<=o&&o<this.size&&this.setFunctionModule(a,o,i!=2&&i!=4)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,Math.max(Math.abs(r),Math.abs(n))!=1)}setFunctionModule(e,t,n){this.modules[t][e]=n,this.isFunction[t][e]=!0}addEccAndInterleave(e){let n=this.version,r=this.errorCorrectionLevel;if(e.length!=t.getNumDataCodewords(n,r))throw RangeError(`Invalid argument`);let a=t.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][n],o=t.ECC_CODEWORDS_PER_BLOCK[r.ordinal][n],s=Math.floor(t.getNumRawDataModules(n)/8),c=a-s%a,l=Math.floor(s/a),u=[],d=t.reedSolomonComputeDivisor(o);for(let n=0,r=0;n<a;n++){let i=e.slice(r,r+l-o+(n<c?0:1));r+=i.length;let a=t.reedSolomonComputeRemainder(i,d);n<c&&i.push(0),u.push(i.concat(a))}let f=[];for(let e=0;e<u[0].length;e++)u.forEach((t,n)=>{(e!=l-o||n>=c)&&f.push(t[e])});return i(f.length==s),f}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let i=0;i<this.size;i++)for(let a=0;a<2;a++){let o=t-a,s=t+1&2?i:this.size-1-i;!this.isFunction[s][o]&&n<e.length*8&&(this.modules[s][o]=r(e[n>>>3],7-(n&7)),n++)}}i(n==e.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw Error(`Unreachable`)}!this.isFunction[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let e=0;for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[n][o]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[n][o],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[o][n]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[o][n],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size-1;n++)for(let r=0;r<this.size-1;r++){let i=this.modules[n][r];i==this.modules[n][r+1]&&i==this.modules[n+1][r]&&i==this.modules[n+1][r+1]&&(e+=t.PENALTY_N2)}let n=0;for(let e of this.modules)n=e.reduce((e,t)=>e+ +!!t,n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return i(0<=a&&a<=9),e+=a*t.PENALTY_N4,i(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}static getNumRawDataModules(e){if(e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*e+128)*e+64;if(e>=2){let t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return i(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let n=[];for(let t=0;t<e-1;t++)n.push(0);n.push(1);let r=1;for(let i=0;i<e;i++){for(let e=0;e<n.length;e++)n[e]=t.reedSolomonMultiply(n[e],r),e+1<n.length&&(n[e]^=n[e+1]);r=t.reedSolomonMultiply(r,2)}return n}static reedSolomonComputeRemainder(e,n){let r=n.map(e=>0);for(let i of e){let e=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=t.reedSolomonMultiply(n,e))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return i(n>>>8==0),n}finderPenaltyCountPatterns(e){let t=e[1];i(t<=this.size*3);let n=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)}};t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function r(e,t){return(e>>>t&1)!=0}function i(e){if(!e)throw Error(`Assertion error`)}let a=class e{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw RangeError(`Invalid argument`);this.bitData=n.slice()}static makeBytes(t){let r=[];for(let e of t)n(e,8,r);return new e(e.Mode.BYTE,t.length,r)}static makeNumeric(t){if(!e.isNumeric(t))throw RangeError(`String contains non-numeric characters`);let r=[];for(let e=0;e<t.length;){let i=Math.min(t.length-e,3);n(parseInt(t.substring(e,e+i),10),i*3+1,r),e+=i}return new e(e.Mode.NUMERIC,t.length,r)}static makeAlphanumeric(t){if(!e.isAlphanumeric(t))throw RangeError(`String contains unencodable characters in alphanumeric mode`);let r=[],i;for(i=0;i+2<=t.length;i+=2){let a=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i))*45;a+=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i+1)),n(a,11,r)}return i<t.length&&n(e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i)),6,r),new e(e.Mode.ALPHANUMERIC,t.length,r)}static makeSegments(t){return t==``?[]:e.isNumeric(t)?[e.makeNumeric(t)]:e.isAlphanumeric(t)?[e.makeAlphanumeric(t)]:[e.makeBytes(e.toUtf8ByteArray(t))]}static makeEci(t){let r=[];if(t<0)throw RangeError(`ECI assignment value out of range`);if(t<128)n(t,8,r);else if(t<16384)n(2,2,r),n(t,14,r);else if(t<1e6)n(6,3,r),n(t,21,r);else throw RangeError(`ECI assignment value out of range`);return new e(e.Mode.ECI,0,r)}static isNumeric(t){return e.NUMERIC_REGEX.test(t)}static isAlphanumeric(t){return e.ALPHANUMERIC_REGEX.test(t)}getData(){return this.bitData.slice()}static getTotalBits(e,t){let n=0;for(let r of e){let e=r.mode.numCharCountBits(t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}static toUtf8ByteArray(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)==`%`?(t.push(parseInt(e.substring(n+1,n+3),16)),n+=2):t.push(e.charCodeAt(n));return t}};a.NUMERIC_REGEX=/^[0-9]*$/,a.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,a.ALPHANUMERIC_CHARSET=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`;let o=a;e.QrSegment=a})(X||={}),(e=>{(e=>{let t=class{constructor(e,t){this.ordinal=e,this.formatBits=t}};t.LOW=new t(0,1),t.MEDIUM=new t(1,0),t.QUARTILE=new t(2,3),t.HIGH=new t(3,2),e.Ecc=t})(e.QrCode||={})})(X||={}),(e=>{(e=>{let t=class{constructor(e,t){this.modeBits=e,this.numBitsCharCount=t}numCharCountBits(e){return this.numBitsCharCount[Math.floor((e+7)/17)]}};t.NUMERIC=new t(1,[10,12,14]),t.ALPHANUMERIC=new t(2,[9,11,13]),t.BYTE=new t(4,[8,16,16]),t.KANJI=new t(8,[8,10,12]),t.ECI=new t(7,[0,0,0]),e.Mode=t})(e.QrSegment||={})})(X||={});var Z=X,wt={L:Z.QrCode.Ecc.LOW,M:Z.QrCode.Ecc.MEDIUM,Q:Z.QrCode.Ecc.QUARTILE,H:Z.QrCode.Ecc.HIGH},Tt=128,Et=`L`,Q=`#FFFFFF`,Dt=`#000000`,Ot=!1,$=1,kt=4,At=0,jt=.1;function Mt(e,t=0){let n=[];return e.forEach(function(e,r){let i=null;e.forEach(function(a,o){if(!a&&i!==null){n.push(`M${i+t} ${r+t}h${o-i}v1H${i+t}z`),i=null;return}if(o===e.length-1){if(!a)return;i===null?n.push(`M${o+t},${r+t} h1v1H${o+t}z`):n.push(`M${i+t},${r+t} h${o+1-i}v1H${i+t}z`);return}a&&i===null&&(i=o)})}),n.join(``)}function Nt(e,t){return e.slice().map((e,n)=>n<t.y||n>=t.y+t.h?e:e.map((e,n)=>n<t.x||n>=t.x+t.w?e:!1))}function Pt(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*jt),o=i/t,s=(r.width||a)*o,c=(r.height||a)*o,l=r.x==null?e.length/2-s/2:r.x*o,u=r.y==null?e.length/2-c/2:r.y*o,d=r.opacity==null?1:r.opacity,f=null;if(r.excavate){let e=Math.floor(l),t=Math.floor(u);f={x:e,y:t,w:Math.ceil(s+l-e),h:Math.ceil(c+u-t)}}let p=r.crossOrigin;return{x:l,y:u,h:c,w:s,excavation:f,opacity:d,crossOrigin:p}}function Ft(e,t){return t==null?e?kt:At:Math.max(Math.floor(t),0)}function It({value:e,level:t,minVersion:n,includeMargin:r,marginSize:i,imageSettings:a,size:o,boostLevel:s}){let c=M.useMemo(()=>{let r=(Array.isArray(e)?e:[e]).reduce((e,t)=>(e.push(...Z.QrSegment.makeSegments(t)),e),[]);return Z.QrCode.encodeSegments(r,wt[t],n,void 0,void 0,s)},[e,t,n,s]),{cells:l,margin:u,numCells:d,calculatedImageSettings:f}=M.useMemo(()=>{let e=c.getModules(),t=Ft(r,i);return{cells:e,margin:t,numCells:e.length+t*2,calculatedImageSettings:Pt(e,o,t,a)}},[c,o,a,r,i]);return{qrcode:c,margin:u,cells:l,numCells:d,calculatedImageSettings:f}}var Lt=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),Rt=M.forwardRef(function(e,t){let n=e,{value:r,size:i=Tt,level:a=Et,bgColor:o=Q,fgColor:s=Dt,includeMargin:c=Ot,minVersion:l=$,boostLevel:u,marginSize:d,imageSettings:f}=n,p=Y(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`marginSize`,`imageSettings`]),{style:m}=p,h=Y(p,[`style`]),g=f?.src,_=M.useRef(null),v=M.useRef(null),y=M.useCallback(e=>{_.current=e,typeof t==`function`?t(e):t&&(t.current=e)},[t]),[b,x]=M.useState(!1),{margin:S,cells:C,numCells:w,calculatedImageSettings:T}=It({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:d,imageSettings:f,size:i});M.useEffect(()=>{if(_.current!=null){let e=_.current,t=e.getContext(`2d`);if(!t)return;let n=C,r=v.current,a=T!=null&&r!==null&&r.complete&&r.naturalHeight!==0&&r.naturalWidth!==0;a&&T.excavation!=null&&(n=Nt(C,T.excavation));let c=window.devicePixelRatio||1;e.height=e.width=i*c;let l=i/w*c;t.scale(l,l),t.fillStyle=o,t.fillRect(0,0,w,w),t.fillStyle=s,Lt?t.fill(new Path2D(Mt(n,S))):C.forEach(function(e,n){e.forEach(function(e,r){e&&t.fillRect(r+S,n+S,1,1)})}),T&&(t.globalAlpha=T.opacity),a&&t.drawImage(r,T.x+S,T.y+S,T.w,T.h)}}),M.useEffect(()=>{x(!1)},[g]);let ee=J({height:i,width:i},m),E=null;return g!=null&&(E=M.createElement(`img`,{src:g,key:g,style:{display:`none`},onLoad:()=>{x(!0)},ref:v,crossOrigin:T?.crossOrigin})),M.createElement(M.Fragment,null,M.createElement(`canvas`,J({style:ee,height:i,width:i,ref:y,role:`img`},h)),E)});Rt.displayName=`QRCodeCanvas`;var zt=M.forwardRef(function(e,t){let n=e,{value:r,size:i=Tt,level:a=Et,bgColor:o=Q,fgColor:s=Dt,includeMargin:c=Ot,minVersion:l=$,boostLevel:u,title:d,marginSize:f,imageSettings:p}=n,m=Y(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`title`,`marginSize`,`imageSettings`]),{margin:h,cells:g,numCells:_,calculatedImageSettings:v}=It({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:f,imageSettings:p,size:i}),y=g,b=null;p!=null&&v!=null&&(v.excavation!=null&&(y=Nt(g,v.excavation)),b=M.createElement(`image`,{href:p.src,height:v.h,width:v.w,x:v.x+h,y:v.y+h,preserveAspectRatio:`none`,opacity:v.opacity,crossOrigin:v.crossOrigin}));let x=Mt(y,h);return M.createElement(`svg`,J({height:i,width:i,viewBox:`0 0 ${_} ${_}`,ref:t,role:`img`},m),!!d&&M.createElement(`title`,null,d),M.createElement(`path`,{fill:o,d:`M0,0 h${_}v${_}H0z`,shapeRendering:`crispEdges`}),M.createElement(`path`,{fill:s,d:x,shapeRendering:`crispEdges`}),b)});zt.displayName=`QRCodeSVG`;var Bt=[{value:`light`,label:`Light`,icon:d},{value:`dark`,label:`Dark`,icon:S},{value:`system`,label:`System`,icon:f}],Vt=[{value:`image`,label:`Image`,icon:u},{value:`background`,label:`Background`,icon:g}],Ht=`flex h-7 w-7 min-h-0 min-w-0 items-center justify-center rounded-full border-0 bg-background p-0 data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:shadow-sm hover:bg-background hover:text-muted-foreground data-[state=on]:hover:bg-foreground data-[state=on]:hover:text-background`,Ut=`inline-flex h-auto w-fit justify-start rounded-full border-0 bg-background p-1 text-muted-foreground`,Wt=[`462`,`8100`].includes(typeof document<`u`?document.location.port:``)?`462`:`641`,Gt=600;function Kt(e){let t=(0,j.c)(159),{onboardingResetSignal:n}=e,r=qt(n===void 0?0:n),{theme:a,setTheme:o}=me(),{scale:c,updateScale:l,min:u,max:d}=we(),{opacity:f,updateOpacity:p,min:m,max:h}=Se(),{mode:g,color:_,updateMode:v,updateColor:y}=he(),{color:b,updateColor:x,resetColor:S}=Te(),{defaultMaximumTurnCount:C,draftMaximumTurnCount:w,isLoading:T,isSaving:ee,resetDraftMaximumTurnCount:E,setDraftMaximumTurnCount:te,updateMaximumTurnCount:ne}=ft(),{status:re,isLoading:ie,isOpeningSettings:ae,openSettingsError:oe,refresh:se,openSystemSettings:ce}=mt(),{isLoading:le,isSaving:ue,needsRestart:de,networkAddresses:D,serverBindMode:O,updateServerBindMode:ye}=vt(),{isEnabled:Ce,isLoading:A,isSaving:Oe,updateIsEnabled:Ae}=be(),{isEnabled:je,isLoading:Me,isSaving:P,updateIsEnabled:Ne}=_e(),{isEnabled:Pe,isSupported:Fe,isHealthy:Ie,statusMessage:Le,isLoading:Re,isSaving:ze,updateIsEnabled:Be}=ve(),{isEnabled:Ve,logPath:F,isEnvConfigured:He,ingestingHost:Ue,isLoading:I,isSaving:We,updateIsEnabled:Ge}=yt(),Ke;t[0]!==I||t[1]!==T||t[2]!==ie||t[3]!==Re||t[4]!==le||t[5]!==Me||t[6]!==A?(Ke=[T,ie,le,A,Me,Re,I],t[0]=I,t[1]=T,t[2]=ie,t[3]=Re,t[4]=le,t[5]=Me,t[6]=A,t[7]=Ke):Ke=t[7];let qe=ke(`general`,Ke),Je;t[8]===te?Je=t[9]:(Je=function(e){te(e.target.value)},t[8]=te,t[9]=Je);let Ye=Je,Xe;t[10]!==C||t[11]!==w||t[12]!==E||t[13]!==ne?(Xe=async function(){let e=Number.parseInt(w,10),t=Number.isFinite(e)&&e>0?e:C;try{await ne(t)}catch{E()}},t[10]=C,t[11]=w,t[12]=E,t[13]=ne,t[14]=Xe):Xe=t[14];let Ze=Xe,Qe;t[15]===l?Qe=t[16]:(Qe=function(e){e.length>0&&l(e[0])},t[15]=l,t[16]=Qe);let $e=Qe,et;t[17]===p?et=t[18]:(et=function(e){e.length>0&&p(e[0])},t[17]=p,t[18]=et);let tt=et,nt;t[19]===F?nt=t[20]:(nt=async function(){if(F)try{await navigator.clipboard.writeText(F),fe({title:`Copied`,description:`Log file path copied to clipboard.`})}catch(e){let t=e;fe({title:`Copy failed`,description:t instanceof Error?t.message:`Could not copy the log file path.`,variant:`destructive`})}},t[19]=F,t[20]=nt);let rt=nt,[it,at]=(0,M.useState)(!1),L,R,z;t[21]!==D||t[22]!==O?(L=async function(){if(R)try{await navigator.clipboard.writeText(R),at(!0),fe({title:`Copied`,description:`Network URL copied to clipboard.`}),window.setTimeout(()=>{at(!1)},1500)}catch(e){let t=e;fe({title:`Copy failed`,description:t instanceof Error?t.message:`Could not copy the network URL.`,variant:`destructive`})}},z=O===`network`&&D.length>0,R=z?`http://${D[0]}:${Wt}`:null,t[21]=D,t[22]=O,t[23]=L,t[24]=R,t[25]=z):(L=t[23],R=t[24],z=t[25]);let ot=r&&`animate-headline-reset`,st;t[26]===ot?st=t[27]:(st=s(ot),t[26]=ot,t[27]=st);let ct;t[28]===st?ct=t[29]:(ct=(0,N.jsx)(Ee,{title:`Appearance`,titleClassName:st,className:`[&>div:first-child]:py-2`,sticky:!1}),t[28]=st,t[29]=ct);let lt;t[30]===u?lt=t[31]:(lt=(0,N.jsxs)(`span`,{className:`${i.bodyMuted} w-8 shrink-0 text-right`,children:[u,`%`]}),t[30]=u,t[31]=lt);let B;t[32]===c?B=t[33]:(B=[c],t[32]=c,t[33]=B);let dt=`${c}%`,V;t[34]!==$e||t[35]!==d||t[36]!==u||t[37]!==B||t[38]!==dt?(V=(0,N.jsx)(ut,{value:B,min:u,max:d,step:5,onValueChange:$e,"aria-label":`Font size`,valueTooltip:dt}),t[34]=$e,t[35]=d,t[36]=u,t[37]=B,t[38]=dt,t[39]=V):V=t[39];let H;t[40]===d?H=t[41]:(H=(0,N.jsxs)(`span`,{className:`${i.bodyMuted} w-9 shrink-0`,children:[d,`%`]}),t[40]=d,t[41]=H);let pt;t[42]!==lt||t[43]!==V||t[44]!==H?(pt=(0,N.jsx)(k,{title:`Font Size`,description:`Adjust the text size across the entire application.`,children:(0,N.jsxs)(`div`,{className:`ml-auto flex w-1/2 items-center gap-3`,children:[lt,V,H]})}),t[42]=lt,t[43]=V,t[44]=H,t[45]=pt):pt=t[45];let U;t[46]===m?U=t[47]:(U=(0,N.jsxs)(`span`,{className:`${i.bodyMuted} w-8 shrink-0 text-right`,children:[m,`%`]}),t[46]=m,t[47]=U);let W;t[48]===f?W=t[49]:(W=[f],t[48]=f,t[49]=W);let ht=`${f}%`,G;t[50]!==h||t[51]!==m||t[52]!==tt||t[53]!==W||t[54]!==ht?(G=(0,N.jsx)(ut,{value:W,min:m,max:h,step:5,onValueChange:tt,"aria-label":`Panel opacity`,valueTooltip:ht}),t[50]=h,t[51]=m,t[52]=tt,t[53]=W,t[54]=ht,t[55]=G):G=t[55];let gt;t[56]===h?gt=t[57]:(gt=(0,N.jsxs)(`span`,{className:`${i.bodyMuted} w-9 shrink-0`,children:[h,`%`]}),t[56]=h,t[57]=gt);let _t;t[58]!==U||t[59]!==G||t[60]!==gt?(_t=(0,N.jsx)(k,{title:`Panel Opacity`,description:`Adjust how opaque the frosted panels are over the wallpaper.`,children:(0,N.jsxs)(`div`,{className:`ml-auto flex w-1/2 items-center gap-3`,children:[U,G,gt]})}),t[58]=U,t[59]=G,t[60]=gt,t[61]=_t):_t=t[61];let K;t[62]!==o||t[63]!==a?(K=(0,N.jsx)(Jt,{theme:a,onThemeChange:o}),t[62]=o,t[63]=a,t[64]=K):K=t[64];let bt;t[65]!==y||t[66]!==v||t[67]!==_||t[68]!==g?(bt=(0,N.jsx)(Xt,{wallpaperMode:g,wallpaperColor:_,onModeChange:v,onColorChange:y}),t[65]=y,t[66]=v,t[67]=_,t[68]=g,t[69]=bt):bt=t[69];let q;t[70]!==b||t[71]!==S||t[72]!==x?(q=(0,N.jsx)(Qt,{brandColor:b,onColorChange:x,onReset:S}),t[70]=b,t[71]=S,t[72]=x,t[73]=q):q=t[73];let xt;t[74]!==pt||t[75]!==_t||t[76]!==K||t[77]!==bt||t[78]!==q?(xt=(0,N.jsx)(pe,{className:`max-w-none pt-0`,children:(0,N.jsxs)(De,{children:[pt,_t,K,bt,q]})}),t[74]=pt,t[75]=_t,t[76]=K,t[77]=bt,t[78]=q,t[79]=xt):xt=t[79];let St;t[80]!==ct||t[81]!==xt?(St=(0,N.jsxs)(xe,{className:`shrink-0`,children:[ct,xt]}),t[80]=ct,t[81]=xt,t[82]=St):St=t[82];let Ct;t[83]===Symbol.for(`react.memo_cache_sentinel`)?(Ct=(0,N.jsx)(Ee,{title:`Settings`,className:`[&>div:first-child]:py-2`,sticky:!1}),t[83]=Ct):Ct=t[83];let J;t[84]!==C||t[85]!==w||t[86]!==Ze||t[87]!==Ye||t[88]!==T||t[89]!==ee?(J=(0,N.jsx)($t,{draftValue:w,defaultTurnCount:C,isLoading:T,isSaving:ee,onChange:Ye,onBlur:Ze}),t[84]=C,t[85]=w,t[86]=Ze,t[87]=Ye,t[88]=T,t[89]=ee,t[90]=J):J=t[90];let Y;t[91]===Ae?Y=t[92]:(Y=e=>{Ae(e)},t[91]=Ae,t[92]=Y);let X;t[93]!==A||t[94]!==Oe||t[95]!==Y||t[96]!==Ce?(X=(0,N.jsx)(en,{title:`AI Voice Cleanup`,description:`After stopping voice recording, run the transcription through AI to remove filler words, false starts, and repetitions.`,value:Ce,isLoading:A,isSaving:Oe,ariaLabel:`AI Voice Cleanup`,onChange:Y}),t[93]=A,t[94]=Oe,t[95]=Y,t[96]=Ce,t[97]=X):X=t[97];let Z;t[98]===Ne?Z=t[99]:(Z=e=>{Ne(e)},t[98]=Ne,t[99]=Z);let wt;t[100]!==Me||t[101]!==P||t[102]!==je||t[103]!==Z?(wt=(0,N.jsx)(en,{title:`Spend`,description:`Show an estimated spend counter in the chat header.`,value:je,isLoading:Me,isSaving:P,ariaLabel:`Spend`,onChange:Z}),t[100]=Me,t[101]=P,t[102]=je,t[103]=Z,t[104]=wt):wt=t[104];let Tt;t[105]!==ae||t[106]!==ie||t[107]!==ce||t[108]!==se||t[109]!==oe||t[110]!==re?(Tt=(0,N.jsx)(tn,{status:re,isLoading:ie,isOpeningSettings:ae,openSettingsError:oe,onRefresh:se,onOpenSettings:ce}),t[105]=ae,t[106]=ie,t[107]=ce,t[108]=se,t[109]=oe,t[110]=re,t[111]=Tt):Tt=t[111];let Et;t[112]!==Re||t[113]!==ze||t[114]!==Pe||t[115]!==Ie||t[116]!==Le||t[117]!==Fe||t[118]!==Be?(Et=(0,N.jsx)(nn,{supported:Fe,enabled:Pe,healthy:Ie,message:Le,isLoading:Re,isSaving:ze,onChange:Be}),t[112]=Re,t[113]=ze,t[114]=Pe,t[115]=Ie,t[116]=Le,t[117]=Fe,t[118]=Be,t[119]=Et):Et=t[119];let Q;t[120]===Ge?Q=t[121]:(Q=e=>{Ge(e)},t[120]=Ge,t[121]=Q);let Dt;t[122]!==Ue||t[123]!==rt||t[124]!==He||t[125]!==I||t[126]!==We||t[127]!==Ve||t[128]!==F||t[129]!==Q?(Dt=(0,N.jsx)(an,{enabled:Ve,logPath:F,isEnvConfigured:He,ingestingHost:Ue,isLoading:I,isSaving:We,onChange:Q,onCopyPath:rt}),t[122]=Ue,t[123]=rt,t[124]=He,t[125]=I,t[126]=We,t[127]=Ve,t[128]=F,t[129]=Q,t[130]=Dt):Dt=t[130];let Ot;t[131]!==it||t[132]!==L||t[133]!==le||t[134]!==ue||t[135]!==R||t[136]!==de||t[137]!==D||t[138]!==O||t[139]!==z||t[140]!==ye?(Ot=(0,N.jsx)(on,{bindMode:O,isLoading:le,isSaving:ue,networkAddresses:D,needsRestart:de,showMobileQrCode:z,mobileNetworkUrl:R,copiedUrl:it,onChangeMode:ye,onCopyUrl:L}),t[131]=it,t[132]=L,t[133]=le,t[134]=ue,t[135]=R,t[136]=de,t[137]=D,t[138]=O,t[139]=z,t[140]=ye,t[141]=Ot):Ot=t[141];let $;t[142]!==J||t[143]!==X||t[144]!==wt||t[145]!==Tt||t[146]!==Et||t[147]!==Dt||t[148]!==Ot?($=(0,N.jsxs)(xe,{className:`shrink-0`,children:[Ct,(0,N.jsx)(pe,{className:`max-w-none pt-0`,children:(0,N.jsxs)(De,{children:[J,X,wt,Tt,Et,Dt,Ot]})})]}),t[142]=J,t[143]=X,t[144]=wt,t[145]=Tt,t[146]=Et,t[147]=Dt,t[148]=Ot,t[149]=$):$=t[149];let kt;t[150]===R?kt=t[151]:(kt=(0,N.jsx)(sn,{url:R}),t[150]=R,t[151]=kt);let At;t[152]!==St||t[153]!==$||t[154]!==kt?(At=(0,N.jsxs)(`div`,{className:`divide-y divide-table-border [&>*]:rounded-none`,children:[St,$,kt]}),t[152]=St,t[153]=$,t[154]=kt,t[155]=At):At=t[155];let jt;return t[156]!==qe||t[157]!==At?(jt=(0,N.jsx)(ge,{loading:qe,children:At}),t[156]=qe,t[157]=At,t[158]=jt):jt=t[158],jt}function qt(e){let t=(0,j.c)(3),[n,r]=(0,M.useState)(!1),i,a;return t[0]===e?(i=t[1],a=t[2]):(i=()=>{if(e===0)return;r(!0);let t=setTimeout(()=>{r(!1)},Gt);return()=>{clearTimeout(t)}},a=[e],t[0]=e,t[1]=i,t[2]=a),(0,M.useEffect)(i,a),n}function Jt(e){let t=(0,j.c)(6),{theme:n,onThemeChange:r}=e,i;t[0]===r?i=t[1]:(i=e=>{(e===`light`||e===`dark`||e===`system`)&&r(e)},t[0]=r,t[1]=i);let a;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=Bt.map(Yt),t[2]=a):a=t[2];let o;return t[3]!==i||t[4]!==n?(o=(0,N.jsx)(k,{title:`Appearance`,description:`Choose your preferred color scheme.`,controlLayout:`row-end`,action:(0,N.jsx)(Oe,{type:`single`,value:n,onValueChange:i,"aria-label":`Appearance`,className:Ut,children:a})}),t[3]=i,t[4]=n,t[5]=o):o=t[5],o}function Yt(e){let t=e.icon;return(0,N.jsx)(A,{value:e.value,"aria-label":e.label,className:Ht,children:(0,N.jsx)(t,{className:`h-4 w-4`,"aria-hidden":`true`})},e.value)}function Xt(e){let t=(0,j.c)(22),{wallpaperMode:n,wallpaperColor:r,onModeChange:i,onColorChange:a}=e,o;t[0]===i?o=t[1]:(o=e=>{(e===`image`||e===`background`||e===`color`)&&i(e)},t[0]=i,t[1]=o);let c;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=Vt.map(Zt),t[2]=c):c=t[2];let l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=s(Ht,`relative overflow-hidden`),t[3]=l):l=t[3];let u;t[4]===r?u=t[5]:(u=(0,N.jsx)(`span`,{className:`pointer-events-none h-4 w-4 rounded-full border border-black/25 dark:border-white/25`,style:{backgroundColor:r},"aria-hidden":`true`}),t[4]=r,t[5]=u);let d;t[6]===i?d=t[7]:(d=()=>{i(`color`)},t[6]=i,t[7]=d);let f;t[8]!==a||t[9]!==i?(f=e=>{a(e.target.value),i(`color`)},t[8]=a,t[9]=i,t[10]=f):f=t[10];let p;t[11]!==d||t[12]!==f||t[13]!==r?(p=(0,N.jsx)(`input`,{type:`color`,value:r,"aria-label":`Choose wallpaper color`,className:`absolute inset-0 cursor-pointer opacity-0`,onPointerDown:d,onChange:f}),t[11]=d,t[12]=f,t[13]=r,t[14]=p):p=t[14];let m;t[15]!==u||t[16]!==p?(m=(0,N.jsxs)(A,{value:`color`,"aria-label":`Custom color`,className:l,children:[u,p]}),t[15]=u,t[16]=p,t[17]=m):m=t[17];let h;return t[18]!==o||t[19]!==m||t[20]!==n?(h=(0,N.jsx)(k,{title:`Wallpaper`,description:`Choose a scenic image, the theme background, or a custom color.`,controlLayout:`row-end`,action:(0,N.jsxs)(Oe,{type:`single`,value:n,onValueChange:o,"aria-label":`Wallpaper`,className:Ut,children:[c,m]})}),t[18]=o,t[19]=m,t[20]=n,t[21]=h):h=t[21],h}function Zt(e){let t=e.icon;return(0,N.jsx)(A,{value:e.value,"aria-label":e.label,className:Ht,children:(0,N.jsx)(t,{className:`h-4 w-4`,"aria-hidden":`true`})},e.value)}function Qt(e){let t=(0,j.c)(14),{brandColor:n,onColorChange:r,onReset:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=s(Ht,`relative cursor-pointer overflow-hidden`),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,N.jsx)(`span`,{className:`pointer-events-none h-4 w-4 rounded-full border border-black/25 dark:border-white/25`,style:{backgroundColor:n},"aria-hidden":`true`}),t[1]=n,t[2]=o);let c;t[3]===r?c=t[4]:(c=e=>{r(e.target.value)},t[3]=r,t[4]=c);let l;t[5]!==n||t[6]!==c?(l=(0,N.jsx)(`input`,{type:`color`,value:n,"aria-label":`Primary color`,className:`absolute inset-0 cursor-pointer opacity-0`,onChange:c}),t[5]=n,t[6]=c,t[7]=l):l=t[7];let u;t[8]!==o||t[9]!==l?(u=(0,N.jsx)(`div`,{className:Ut,children:(0,N.jsxs)(`label`,{className:a,children:[o,l]})}),t[8]=o,t[9]=l,t[10]=u):u=t[10];let d;return t[11]!==i||t[12]!==u?(d=(0,N.jsx)(k,{title:`Primary Color`,description:`Choose the primary accent color used across the app. Click the label to reset to default.`,controlLayout:`row-end`,onTitleClick:i,action:u}),t[11]=i,t[12]=u,t[13]=d):d=t[13],d}function $t(e){let t=(0,j.c)(10),{draftValue:n,defaultTurnCount:r,isLoading:i,isSaving:a,onChange:o,onBlur:s}=e,c=`Set how many turns a long-running agent chat can take before Tarsk asks whether to continue. Default: ${r} turns.`,l;t[0]===s?l=t[1]:(l=()=>{s()},t[0]=s,t[1]=l);let u=i||a,d;t[2]!==n||t[3]!==o||t[4]!==l||t[5]!==u?(d=(0,N.jsx)(ye,{type:`number`,min:1,step:1,value:n,onChange:o,onBlur:l,disabled:u,"aria-label":`Maximum turn count`,className:`w-28 text-right font-mono tabular-nums flex-shrink-0`}),t[2]=n,t[3]=o,t[4]=l,t[5]=u,t[6]=d):d=t[6];let f;return t[7]!==c||t[8]!==d?(f=(0,N.jsx)(k,{title:`Maximum Turn Count`,description:c,controlLayout:`row-end`,action:d}),t[7]=c,t[8]=d,t[9]=f):f=t[9],f}function en(e){let t=(0,j.c)(9),{title:n,description:r,value:i,isLoading:a,isSaving:o,ariaLabel:s,onChange:c}=e,l=a||o,u;t[0]!==s||t[1]!==c||t[2]!==l||t[3]!==i?(u=(0,N.jsx)(Ce,{value:i,onChange:c,disabled:l,ariaLabel:s}),t[0]=s,t[1]=c,t[2]=l,t[3]=i,t[4]=u):u=t[4];let d;return t[5]!==r||t[6]!==u||t[7]!==n?(d=(0,N.jsx)(k,{title:n,description:r,controlLayout:`row-end`,action:u}),t[5]=r,t[6]=u,t[7]=n,t[8]=d):d=t[8],d}function tn(e){let t=(0,j.c)(25),{status:n,isLoading:r,isOpeningSettings:a,openSettingsError:o,onRefresh:u,onOpenSettings:d}=e;if(!n?.isMacOS)return null;let f;t[0]!==r||t[1]!==n?.granted?(f=!r&&n?.granted?(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(p,{className:`h-4 w-4 text-green-500`}),(0,N.jsx)(`span`,{className:s(i.body,`text-green-600 dark:text-green-400`),children:`Permission granted`})]}):r?null:(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(l,{className:`h-4 w-4 text-amber-500`}),(0,N.jsx)(`span`,{className:s(i.body,`text-amber-600 dark:text-amber-400`),children:`Permission not granted`})]}),t[0]=r,t[1]=n?.granted,t[2]=f):f=t[2];let h;t[3]===u?h=t[4]:(h=()=>void u(),t[3]=u,t[4]=h);let g;t[5]===r?g=t[6]:(g=r?(0,N.jsx)(m,{className:`h-3.5 w-3.5 animate-spin`}):(0,N.jsx)(_,{className:`h-3.5 w-3.5`}),t[5]=r,t[6]=g);let v;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,N.jsx)(`span`,{className:`sr-only`,children:`Refresh permission status`}),t[7]=v):v=t[7];let y;t[8]!==r||t[9]!==h||t[10]!==g?(y=(0,N.jsxs)(c,{variant:`ghost`,size:`icon-sm`,className:`h-7 w-7 shrink-0 rounded-full border-0 bg-background hover:bg-background hover:text-foreground`,onClick:h,disabled:r,children:[g,v]}),t[8]=r,t[9]=h,t[10]=g,t[11]=y):y=t[11];let x;t[12]!==f||t[13]!==y?(x=(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[f,y]}),t[12]=f,t[13]=y,t[14]=x):x=t[14];let S;t[15]!==r||t[16]!==a||t[17]!==d||t[18]!==o||t[19]!==n?.granted||t[20]!==n?.message?(S=!r&&!n?.granted?(0,N.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,N.jsx)(`p`,{className:i.bodyMuted,children:n?.message??`Tarsk needs Screen & Audio Recording permission to use browser tools.`}),(0,N.jsx)(c,{size:`sm`,onClick:()=>void d(),disabled:a,className:`w-fit`,children:a?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(m,{className:`h-4 w-4 mr-2 animate-spin`}),`Opening Settings...`]}):(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(b,{className:`h-4 w-4 mr-2`}),`Open System Settings`]})}),o&&(0,N.jsxs)(`div`,{className:`flex items-start gap-2 p-3 rounded-md bg-destructive/10 text-destructive`,children:[(0,N.jsx)(C,{className:`h-4 w-4 mt-0.5 flex-shrink-0`}),(0,N.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,N.jsx)(`p`,{className:i.body,children:`Failed to open System Settings`}),(0,N.jsx)(`p`,{className:i.bodyMuted,children:o}),(0,N.jsxs)(`p`,{className:i.bodyMuted,children:[`Please open it manually:`,` `,(0,N.jsx)(`strong`,{children:`System Settings > Privacy & Security > Screen & System Audio Recording`})]})]})]})]}):null,t[15]=r,t[16]=a,t[17]=d,t[18]=o,t[19]=n?.granted,t[20]=n?.message,t[21]=S):S=t[21];let w;return t[22]!==x||t[23]!==S?(w=(0,N.jsx)(k,{title:`Screen & Audio Recording`,description:`Tarsk needs this macOS permission to capture screen content for browser tools and screen sharing features.`,controlLayout:`row-end`,action:x,children:S}),t[22]=x,t[23]=S,t[24]=w):w=t[24],w}function nn(e){let t=(0,j.c)(15),{supported:n,enabled:r,healthy:a,message:o,isLoading:s,isSaving:c,onChange:u}=e;if(!n)return null;let d=r&&a,f;t[0]!==a||t[1]!==u?(f=e=>{e&&!a||u(e).catch(rn)},t[0]=a,t[1]=u,t[2]=f):f=t[2];let p=s||c,m=!a,h;t[3]!==d||t[4]!==f||t[5]!==p||t[6]!==m?(h=(0,N.jsx)(Ce,{value:d,onChange:f,disabled:p,disableOn:m,ariaLabel:`Sandbox`}),t[3]=d,t[4]=f,t[5]=p,t[6]=m,t[7]=h):h=t[7];let g;t[8]!==a||t[9]!==s||t[10]!==o?(g=!s&&!a?(0,N.jsxs)(`div`,{className:`flex items-start gap-2 text-destructive`,children:[(0,N.jsx)(l,{className:`h-4 w-4 mt-0.5 shrink-0`}),(0,N.jsx)(`p`,{className:i.bodyMuted,children:o||`Seatbelt sandbox failed its health check and cannot be enabled.`})]}):null,t[8]=a,t[9]=s,t[10]=o,t[11]=g):g=t[11];let _;return t[12]!==h||t[13]!==g?(_=(0,N.jsx)(k,{title:`Sandbox`,description:`Sandbox tools like bash and skill script execution to allow running and testing code safely without risking your system, files, or data.`,controlLayout:`row-end`,action:h,children:g}),t[12]=h,t[13]=g,t[14]=_):_=t[14],_}function rn(){}function an(e){let t=(0,j.c)(25),{enabled:n,logPath:r,isEnvConfigured:a,ingestingHost:o,isLoading:c,isSaving:l,onChange:u,onCopyPath:d}=e,f=c||l,p;t[0]!==n||t[1]!==u||t[2]!==f?(p=(0,N.jsx)(E,{asChild:!0,children:(0,N.jsx)(`span`,{className:`inline-flex`,children:(0,N.jsx)(Ce,{value:n,onChange:u,disabled:f,ariaLabel:`Logging`})})}),t[0]=n,t[1]=u,t[2]=f,t[3]=p):p=t[3];let m=n&&r?`max-w-sm cursor-pointer`:`max-w-sm`,h;t[4]!==n||t[5]!==r||t[6]!==d?(h=n&&r?()=>void d():void 0,t[4]=n,t[5]=r,t[6]=d,t[7]=h):h=t[7];let g;t[8]!==n||t[9]!==r?(g=n&&r?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`p`,{children:`Click to copy log file path`}),(0,N.jsx)(`p`,{className:s(i.mono,`mt-1 break-all`),children:r})]}):(0,N.jsx)(`p`,{children:`Enable logging to write to a local file.`}),t[8]=n,t[9]=r,t[10]=g):g=t[10];let _;t[11]!==m||t[12]!==h||t[13]!==g?(_=(0,N.jsx)(te,{className:m,onClick:h,children:g}),t[11]=m,t[12]=h,t[13]=g,t[14]=_):_=t[14];let v;t[15]!==p||t[16]!==_?(v=(0,N.jsxs)(ne,{children:[p,_]}),t[15]=p,t[16]=_,t[17]=v):v=t[17];let y;t[18]!==n||t[19]!==o||t[20]!==a?(y=n&&a&&o&&(0,N.jsxs)(`p`,{className:`${i.bodyMuted} mt-3`,children:[`Also sending logs to Better Stack at`,` `,(0,N.jsx)(`span`,{className:i.mono,children:o})]}),t[18]=n,t[19]=o,t[20]=a,t[21]=y):y=t[21];let b;return t[22]!==v||t[23]!==y?(b=(0,N.jsx)(k,{title:`Logging`,description:`Write verbose application logs to a local file. When Better Stack environment variables are configured, logs are sent there too.`,controlLayout:`row-end`,action:v,children:y}),t[22]=v,t[23]=y,t[24]=b):b=t[24],b}function on(e){let t=(0,j.c)(23),{bindMode:n,isLoading:r,isSaving:a,networkAddresses:o,needsRestart:s,showMobileQrCode:c,mobileNetworkUrl:l,copiedUrl:u,onChangeMode:d,onCopyUrl:f}=e,p=n===`network`,m;t[0]===d?m=t[1]:(m=e=>{d(e?`network`:`local`)},t[0]=d,t[1]=m);let g=r||a,_;t[2]!==p||t[3]!==m||t[4]!==g?(_=(0,N.jsx)(Ce,{value:p,onChange:m,disabled:g,ariaLabel:`Mobile & Network Access`}),t[2]=p,t[3]=m,t[4]=g,t[5]=_):_=t[5];let y;t[6]!==u||t[7]!==l||t[8]!==s||t[9]!==f||t[10]!==c?(y=c&&l&&(0,N.jsxs)(`div`,{className:`mt-3`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsxs)(`p`,{className:i.bodyMuted,children:[`Available on the network at:`,` `,(0,N.jsx)(`span`,{className:i.mono,children:l})]}),(0,N.jsxs)(ne,{children:[(0,N.jsx)(E,{asChild:!0,children:(0,N.jsxs)(`button`,{type:`button`,onClick:()=>void f(),className:`inline-flex h-7 w-7 items-center justify-center rounded-md border border-border bg-background/90 text-foreground shadow-sm transition-colors hover:bg-background`,children:[u?(0,N.jsx)(h,{className:`h-3.5 w-3.5 text-green-500`}):(0,N.jsx)(v,{className:`h-3.5 w-3.5`}),(0,N.jsx)(`span`,{className:`sr-only`,children:`Copy network URL`})]})}),(0,N.jsx)(te,{children:u?`Copied!`:`Copy to clipboard`})]})]}),s&&(0,N.jsx)(`p`,{className:`${i.bodyMuted} mt-1`,children:`You will need to restart for this setting to take effect.`})]}),t[6]=u,t[7]=l,t[8]=s,t[9]=f,t[10]=c,t[11]=y):y=t[11];let b;t[12]!==n||t[13]!==o?(b=n===`network`&&o.length===0&&(0,N.jsx)(`p`,{className:`${i.bodyMuted} mt-3`,children:`No network IP addresses were detected on this computer.`}),t[12]=n,t[13]=o,t[14]=b):b=t[14];let x;t[15]!==n||t[16]!==s?(x=s&&n===`local`&&(0,N.jsx)(`p`,{className:`${i.bodyMuted} mt-3`,children:`You will need to restart for this setting to take effect.`}),t[15]=n,t[16]=s,t[17]=x):x=t[17];let S;return t[18]!==_||t[19]!==y||t[20]!==b||t[21]!==x?(S=(0,N.jsxs)(k,{title:`Mobile & Network Access`,description:`Allow the Tarsk mobile app or other web browsers to access Tarsk on the wifi network.`,controlLayout:`row-end`,action:_,children:[y,b,x]}),t[18]=_,t[19]=y,t[20]=b,t[21]=x,t[22]=S):S=t[22],S}function sn(e){let t=(0,j.c)(3),{url:n}=e;if(!n)return null;let r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,N.jsx)(Ee,{title:`Mobile App`,description:`Scan this code with the Tarsk mobile app to connect on your Wi-Fi network.`,sticky:!1}),t[0]=r):r=t[0];let i;return t[1]===n?i=t[2]:(i=(0,N.jsxs)(xe,{className:`shrink-0`,children:[r,(0,N.jsx)(`div`,{className:`flex flex-col items-center px-6 pb-6 pt-6`,children:(0,N.jsx)(`div`,{className:`rounded-lg bg-background p-3`,children:(0,N.jsx)(zt,{value:n,size:128,bgColor:`hsl(var(--background))`,fgColor:`hsl(var(--foreground))`,level:`M`})})})]}),t[1]=n,t[2]=i),i}export{Kt as default};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{Dt as i,N as a}from"./dist-CTLFS4dn.js";import{d as o,r as s,t as c}from"./button-kWtLAMpB.js";import{En as l,Ft as u,M as d,N as f,On as p,Ot as m,Pn as h,Wn as g,Z as _,bn as v,g as y,gt as b,h as x,ht as S,kn as C,t as w,u as T}from"./dist-c_QADQ5u.js";import{t as ee}from"./dist-DoxvnNEY.js";import{i as E,n as te,t as ne}from"./tooltip-Db8UeYxm.js";import{$ as re,Br as ie,Gn as ae,Ir as oe,Li as se,yi as ce}from"./api-DX1ny6q-.js";import{t as le}from"./dist-DD4GtbiM.js";import{t as ue}from"./dist-OixawqbU.js";import{i as de}from"./scroll-area-lkVMElz5.js";import{t as fe}from"./use-toast-xpb5jNtN.js";import{t as D}from"./dist-CSssbxDI.js";import{At as pe,Ct as me,Dt as he,F as ge,P as O,Tt as _e,Yn as ve,_t as k,at as ye,fr as be,k as xe,n as Se,ot as Ce,r as we,st as Te,t as Ee,yt as De}from"./index-B3-5kIOf.js";import{n as A,t as Oe}from"./toggle-group-Q36wRGKA.js";import{t as ke}from"./use-settings-page-loading-BTySlInF.js";var j=t(),M=e(n(),1),N=r(),Ae=[`PageUp`,`PageDown`],je=[`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`],Me={"from-left":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-right":[`Home`,`PageDown`,`ArrowDown`,`ArrowRight`],"from-bottom":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-top":[`Home`,`PageDown`,`ArrowUp`,`ArrowLeft`]},P=`Slider`,[Ne,Pe,Fe]=le(P),[Ie,Le]=x(P,[Fe]),[Re,ze]=Ie(P),Be=M.forwardRef((e,t)=>{let{name:n,min:r=0,max:i=100,step:a=1,orientation:o=`horizontal`,disabled:s=!1,minStepsBetweenThumbs:c=0,defaultValue:l=[r],value:u,onValueChange:d=()=>{},onValueCommit:f=()=>{},inverted:p=!1,form:m,...h}=e,g=M.useRef(new Set),_=M.useRef(0),v=o===`horizontal`?He:Ue,[b=[],x]=w({prop:u,defaultProp:l,onChange:e=>{[...g.current][_.current]?.focus(),d(e)}}),S=M.useRef(b);function C(e){E(e,nt(b,e))}function T(e){E(e,_.current)}function ee(){let e=S.current[_.current];b[_.current]!==e&&f(b)}function E(e,t,{commit:n}={commit:!1}){let o=R(a),s=de(z(Math.round((e-r)/a)*a+r,o),[r,i]);x((e=[])=>{let r=$e(e,s,t);if(at(r,c*a)){_.current=r.indexOf(s);let t=String(r)!==String(e);return t&&n&&f(r),t?r:e}else return e})}return(0,N.jsx)(Re,{scope:e.__scopeSlider,name:n,disabled:s,min:r,max:i,valueIndexToChangeRef:_,thumbs:g.current,values:b,orientation:o,form:m,children:(0,N.jsx)(Ne.Provider,{scope:e.__scopeSlider,children:(0,N.jsx)(Ne.Slot,{scope:e.__scopeSlider,children:(0,N.jsx)(v,{"aria-disabled":s,"data-disabled":s?``:void 0,...h,ref:t,onPointerDown:y(h.onPointerDown,()=>{s||(S.current=b)}),min:r,max:i,inverted:p,onSlideStart:s?void 0:C,onSlideMove:s?void 0:T,onSlideEnd:s?void 0:ee,onHomeKeyDown:()=>!s&&E(r,0,{commit:!0}),onEndKeyDown:()=>!s&&E(i,b.length-1,{commit:!0}),onStepKeyDown:({event:e,direction:t})=>{if(!s){let n=Ae.includes(e.key)||e.shiftKey&&je.includes(e.key)?10:1,r=_.current,i=b[r];E(i+a*n*t,r,{commit:!0})}}})})})})});Be.displayName=P;var[Ve,F]=Ie(P,{startEdge:`left`,endEdge:`right`,size:`width`,direction:1}),He=M.forwardRef((e,t)=>{let{min:n,max:r,dir:i,inverted:a,onSlideStart:s,onSlideMove:c,onSlideEnd:l,onStepKeyDown:u,...d}=e,[f,p]=M.useState(null),m=o(t,e=>p(e)),h=M.useRef(void 0),g=ue(i),_=g===`ltr`,v=_&&!a||!_&&a;function y(e){let t=h.current||f.getBoundingClientRect(),i=L([0,t.width],v?[n,r]:[r,n]);return h.current=t,i(e-t.left)}return(0,N.jsx)(Ve,{scope:e.__scopeSlider,startEdge:v?`left`:`right`,endEdge:v?`right`:`left`,direction:v?1:-1,size:`width`,children:(0,N.jsx)(I,{dir:g,"data-orientation":`horizontal`,...d,ref:m,style:{...d.style,"--radix-slider-thumb-transform":`translateX(-50%)`},onSlideStart:e=>{let t=y(e.clientX);s?.(t)},onSlideMove:e=>{let t=y(e.clientX);c?.(t)},onSlideEnd:()=>{h.current=void 0,l?.()},onStepKeyDown:e=>{let t=Me[v?`from-left`:`from-right`].includes(e.key);u?.({event:e,direction:t?-1:1})}})})}),Ue=M.forwardRef((e,t)=>{let{min:n,max:r,inverted:i,onSlideStart:a,onSlideMove:s,onSlideEnd:c,onStepKeyDown:l,...u}=e,d=M.useRef(null),f=o(t,d),p=M.useRef(void 0),m=!i;function h(e){let t=p.current||d.current.getBoundingClientRect(),i=L([0,t.height],m?[r,n]:[n,r]);return p.current=t,i(e-t.top)}return(0,N.jsx)(Ve,{scope:e.__scopeSlider,startEdge:m?`bottom`:`top`,endEdge:m?`top`:`bottom`,size:`height`,direction:m?1:-1,children:(0,N.jsx)(I,{"data-orientation":`vertical`,...u,ref:f,style:{...u.style,"--radix-slider-thumb-transform":`translateY(50%)`},onSlideStart:e=>{let t=h(e.clientY);a?.(t)},onSlideMove:e=>{let t=h(e.clientY);s?.(t)},onSlideEnd:()=>{p.current=void 0,c?.()},onStepKeyDown:e=>{let t=Me[m?`from-bottom`:`from-top`].includes(e.key);l?.({event:e,direction:t?-1:1})}})})}),I=M.forwardRef((e,t)=>{let{__scopeSlider:n,onSlideStart:r,onSlideMove:i,onSlideEnd:a,onHomeKeyDown:o,onEndKeyDown:s,onStepKeyDown:c,...l}=e,u=ze(P,n);return(0,N.jsx)(T.span,{...l,ref:t,onKeyDown:y(e.onKeyDown,e=>{e.key===`Home`?(o(e),e.preventDefault()):e.key===`End`?(s(e),e.preventDefault()):Ae.concat(je).includes(e.key)&&(c(e),e.preventDefault())}),onPointerDown:y(e.onPointerDown,e=>{let t=e.target;t.setPointerCapture(e.pointerId),e.preventDefault(),u.thumbs.has(t)?t.focus():r(e)}),onPointerMove:y(e.onPointerMove,e=>{e.target.hasPointerCapture(e.pointerId)&&i(e)}),onPointerUp:y(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(t.releasePointerCapture(e.pointerId),a(e))})})}),We=`SliderTrack`,Ge=M.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=ze(We,n);return(0,N.jsx)(T.span,{"data-disabled":i.disabled?``:void 0,"data-orientation":i.orientation,...r,ref:t})});Ge.displayName=We;var Ke=`SliderRange`,qe=M.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=ze(Ke,n),a=F(Ke,n),s=o(t,M.useRef(null)),c=i.values.length,l=i.values.map(e=>et(e,i.min,i.max)),u=c>1?Math.min(...l):0,d=100-Math.max(...l);return(0,N.jsx)(T.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?``:void 0,...r,ref:s,style:{...e.style,[a.startEdge]:u+`%`,[a.endEdge]:d+`%`}})});qe.displayName=Ke;var Je=`SliderThumb`,Ye=M.forwardRef((e,t)=>{let n=Pe(e.__scopeSlider),[r,i]=M.useState(null),a=o(t,e=>i(e)),s=M.useMemo(()=>r?n().findIndex(e=>e.ref.current===r):-1,[n,r]);return(0,N.jsx)(Xe,{...e,ref:a,index:s})}),Xe=M.forwardRef((e,t)=>{let{__scopeSlider:n,index:r,name:i,...a}=e,s=ze(Je,n),c=F(Je,n),[l,u]=M.useState(null),d=o(t,e=>u(e)),f=l?s.form||!!l.closest(`form`):!0,p=ee(l),m=s.values[r],h=m===void 0?0:et(m,s.min,s.max),g=tt(r,s.values.length),_=p?.[c.size],v=_?rt(_,h,c.direction):0;return M.useEffect(()=>{if(l)return s.thumbs.add(l),()=>{s.thumbs.delete(l)}},[l,s.thumbs]),(0,N.jsxs)(`span`,{style:{transform:`var(--radix-slider-thumb-transform)`,position:`absolute`,[c.startEdge]:`calc(${h}% + ${v}px)`},children:[(0,N.jsx)(Ne.ItemSlot,{scope:e.__scopeSlider,children:(0,N.jsx)(T.span,{role:`slider`,"aria-label":e[`aria-label`]||g,"aria-valuemin":s.min,"aria-valuenow":m,"aria-valuemax":s.max,"aria-orientation":s.orientation,"data-orientation":s.orientation,"data-disabled":s.disabled?``:void 0,tabIndex:s.disabled?void 0:0,...a,ref:d,style:m===void 0?{display:`none`}:e.style,onFocus:y(e.onFocus,()=>{s.valueIndexToChangeRef.current=r})})}),f&&(0,N.jsx)(Qe,{name:i??(s.name?s.name+(s.values.length>1?`[]`:``):void 0),form:s.form,value:m},r)]})});Ye.displayName=Je;var Ze=`RadioBubbleInput`,Qe=M.forwardRef(({__scopeSlider:e,value:t,...n},r)=>{let i=M.useRef(null),a=o(i,r),s=D(t);return M.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLInputElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(s!==t&&r){let n=new Event(`input`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[s,t]),(0,N.jsx)(T.input,{style:{display:`none`},...n,ref:a,defaultValue:t})});Qe.displayName=Ze;function $e(e=[],t,n){let r=[...e];return r[n]=t,r.sort((e,t)=>e-t)}function et(e,t,n){return de(100/(n-t)*(e-t),[0,100])}function tt(e,t){if(t>2)return`Value ${e+1} of ${t}`;if(t===2)return[`Minimum`,`Maximum`][e]}function nt(e,t){if(e.length===1)return 0;let n=e.map(e=>Math.abs(e-t)),r=Math.min(...n);return n.indexOf(r)}function rt(e,t,n){let r=e/2;return(r-L([0,50],[0,r])(t)*n)*n}function it(e){return e.slice(0,-1).map((t,n)=>e[n+1]-t)}function at(e,t){if(t>0){let n=it(e);return Math.min(...n)>=t}return!0}function L(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function R(e){return(String(e).split(`.`)[1]||``).length}function z(e,t){let n=10**t;return Math.round(e*n)/n}var ot=Be,st=Ge,ct=qe,lt=Ye,ut=M.forwardRef((e,t)=>{let n=(0,j.c)(22),r,i,a;n[0]===e?(r=n[1],i=n[2],a=n[3]):({className:r,valueTooltip:a,...i}=e,n[0]=e,n[1]=r,n[2]=i,n[3]=a);let[o,c]=M.useState(!1),[l,u]=M.useState(!1),d,f;n[4]===l?(d=n[5],f=n[6]):(d=()=>{if(!l)return;let e=function(){u(!1)};return document.addEventListener(`pointerup`,e),()=>{document.removeEventListener(`pointerup`,e)}},f=[l],n[4]=l,n[5]=d,n[6]=f),M.useEffect(d,f);let p;n[7]===a?p=n[8]:(p=(0,N.jsx)(lt,{className:`block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50`,onPointerDown:()=>{a!=null&&(u(!0),c(!0))}}),n[7]=a,n[8]=p);let m=p,h;n[9]===r?h=n[10]:(h=s(`relative flex w-full touch-none select-none items-center`,r),n[9]=r,n[10]=h);let g;n[11]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,N.jsx)(st,{className:`relative h-2 w-full grow overflow-hidden rounded-full bg-secondary`,children:(0,N.jsx)(ct,{className:`absolute h-full bg-primary`})}),n[11]=g):g=n[11];let _;n[12]!==l||n[13]!==o||n[14]!==m||n[15]!==a?(_=a==null?m:(0,N.jsxs)(ne,{open:o||l,onOpenChange:c,children:[(0,N.jsx)(E,{asChild:!0,children:m}),(0,N.jsx)(te,{side:`top`,children:a})]}),n[12]=l,n[13]=o,n[14]=m,n[15]=a,n[16]=_):_=n[16];let v;return n[17]!==i||n[18]!==t||n[19]!==h||n[20]!==_?(v=(0,N.jsxs)(ot,{ref:t,className:h,...i,children:[g,_]}),n[17]=i,n[18]=t,n[19]=h,n[20]=_,n[21]=v):v=n[21],v});ut.displayName=ot.displayName;var B=a(`app.use-maximum-turn-count.hook`),dt=100;function ft(){let[e,t]=(0,M.useState)(dt),[n,r]=(0,M.useState)(dt.toString()),[i,a]=(0,M.useState)(!0),[o,s]=(0,M.useState)(!1);(0,M.useEffect)(()=>{let e=!1;async function n(){try{let n=await re();e||(t(n.maximumTurnCount),r(n.maximumTurnCount.toString()))}catch(e){B.error(`Failed to load maximum turn count:`,e)}finally{e||a(!1)}}return n(),()=>{e=!0}},[]);function c(e){r(e)}async function l(e){s(!0);try{let n=await ae({maximumTurnCount:e});t(n.maximumTurnCount),r(n.maximumTurnCount.toString())}catch(e){throw B.error(`Failed to update maximum turn count:`,e),e}finally{s(!1)}}function u(){r(e.toString())}return{defaultMaximumTurnCount:dt,draftMaximumTurnCount:n,isLoading:i,isSaving:o,maximumTurnCount:e,resetDraftMaximumTurnCount:u,setDraftMaximumTurnCount:c,updateMaximumTurnCount:l}}var V=a(`app.use-screen-recording-permission.hook`),H={isMacOS:!1,granted:!1,available:!1,message:``};function pt(){return{...H,isMacOS:O()}}function mt(){let[e,t]=(0,M.useState)(pt),[n,r]=(0,M.useState)(!0),[i,a]=(0,M.useState)(null),[o,s]=(0,M.useState)(!1),[c,l]=(0,M.useState)(null),u=(0,M.useCallback)(async()=>{r(!0),a(null);try{t(await oe(`api/system-permissions/screen-recording`))}catch(e){a(e instanceof Error?e.message:`Failed to check screen recording permission`),t(e=>({...H,isMacOS:e?.isMacOS??O(),message:`Unable to check permission status.`}))}finally{r(!1)}},[]);return(0,M.useEffect)(()=>{u()},[u]),{status:e,isLoading:n,error:i,isOpeningSettings:o,openSettingsError:c,refresh:u,openSystemSettings:(0,M.useCallback)(async()=>{s(!0),l(null);try{let e=await ie(`api/system-permissions/screen-recording/open-settings`,{});if(!e.success){let t=e.message||`Failed to open System Settings`;V.error(`[useScreenRecordingPermission] ${t}`,e.error),l(t)}}catch(e){let t=e instanceof Error?e.message:`Failed to open System Settings`;V.error(`[useScreenRecordingPermission] Error opening System Settings:`,e),l(t)}finally{s(!1)}},[])}}var U=a(`app.use-server-bind-mode.hook`),W=`local`,ht=`tarsk-server-bind-mode-changed`;function G(e){se(e)}function gt(){if(typeof window>`u`)return!1;try{return sessionStorage.getItem(ht)===`true`}catch{return!1}}function _t(e){if(!(typeof window>`u`))try{e?sessionStorage.setItem(ht,`true`):sessionStorage.removeItem(ht)}catch{}}function vt(){let[e,t]=(0,M.useState)(()=>ce()?.serverBindMode??W),[n,r]=(0,M.useState)(null),[i,a]=(0,M.useState)(()=>ce()?.networkAddresses??[]),[o,s]=(0,M.useState)(()=>ce()===null),[c,l]=(0,M.useState)(!1),[u,d]=(0,M.useState)(gt);(0,M.useEffect)(()=>{let e=!1;async function n(){try{let n=await re();e||(t(n.serverBindMode),r(n.serverBindMode),a(n.networkAddresses),G({networkAddresses:n.networkAddresses,serverBindMode:n.serverBindMode}))}catch(e){U.error(`Failed to load server bind mode:`,e)}finally{e||s(!1)}}return n(),()=>{e=!0}},[]);async function f(e){l(!0);try{let n=await ae({serverBindMode:e});t(n.serverBindMode),a(n.networkAddresses),G({networkAddresses:n.networkAddresses,serverBindMode:n.serverBindMode}),d(!0),_t(!0)}catch(e){throw U.error(`Failed to update server bind mode:`,e),e}finally{l(!1)}}let p=n!==null&&e!==n;return{defaultServerBindMode:W,hasServerBindModeChanged:p,isLoading:o,isSaving:c,needsRestart:p||u,networkAddresses:i,serverBindMode:e,updateServerBindMode:f}}var K=a(`app.use-logging.hook`);function yt(){let[e,t]=(0,M.useState)(!1),[n,r]=(0,M.useState)(null),[i,a]=(0,M.useState)(!1),[o,s]=(0,M.useState)(null),[c,l]=(0,M.useState)(!0),[u,d]=(0,M.useState)(!1);(0,M.useEffect)(()=>{let e=!1;async function n(){try{let n=await re();e||(t(n.loggingEnabled),r(n.fileLoggingPath),a(n.betterStackEnvConfigured),s(n.betterStackIngestingHost))}catch(e){K.error(`Failed to load logging setting:`,e)}finally{e||l(!1)}}return n(),()=>{e=!0}},[]);async function f(e){d(!0);try{let n=await ae({loggingEnabled:e});t(n.loggingEnabled),r(n.fileLoggingPath),a(n.betterStackEnvConfigured),s(n.betterStackIngestingHost)}catch(e){throw K.error(`Failed to update logging setting:`,e),e}finally{d(!1)}}return{ingestingHost:o,isEnabled:e,isEnvConfigured:i,isLoading:c,isSaving:u,logPath:n,updateIsEnabled:f}}var bt=Object.defineProperty,q=Object.getOwnPropertySymbols,xt=Object.prototype.hasOwnProperty,St=Object.prototype.propertyIsEnumerable,Ct=(e,t,n)=>t in e?bt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,J=(e,t)=>{for(var n in t||={})xt.call(t,n)&&Ct(e,n,t[n]);if(q)for(var n of q(t))St.call(t,n)&&Ct(e,n,t[n]);return e},Y=(e,t)=>{var n={};for(var r in e)xt.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&q)for(var r of q(e))t.indexOf(r)<0&&St.call(e,r)&&(n[r]=e[r]);return n},X;(e=>{let t=class t{constructor(e,n,r,a){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version value out of range`);if(a<-1||a>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let o=[];for(let e=0;e<this.size;e++)o.push(!1);for(let e=0;e<this.size;e++)this.modules.push(o.slice()),this.isFunction.push(o.slice());this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a==-1){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<e&&(a=t,e=n),this.applyMask(t)}}i(0<=a&&a<=7),this.mask=a,this.applyMask(a),this.drawFormatBits(a),this.isFunction=[]}static encodeText(n,r){let i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){let i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,r,a=1,s=40,c=-1,l=!0){if(!(t.MIN_VERSION<=a&&a<=s&&s<=t.MAX_VERSION)||c<-1||c>7)throw RangeError(`Invalid value`);let u,d;for(u=a;;u++){let n=t.getNumDataCodewords(u,r)*8,i=o.getTotalBits(e,u);if(i<=n){d=i;break}if(u>=s)throw RangeError(`Data too long`)}for(let e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])l&&d<=t.getNumDataCodewords(u,e)*8&&(r=e);let f=[];for(let t of e){n(t.mode.modeBits,4,f),n(t.numChars,t.mode.numCharCountBits(u),f);for(let e of t.getData())f.push(e)}i(f.length==d);let p=t.getNumDataCodewords(u,r)*8;i(f.length<=p),n(0,Math.min(4,p-f.length),f),n(0,(8-f.length%8)%8,f),i(f.length%8==0);for(let e=236;f.length<p;e^=253)n(e,8,f);let m=[];for(;m.length*8<f.length;)m.push(0);return f.forEach((e,t)=>m[t>>>3]|=e<<7-(t&7)),new t(u,r,m,c)}getModule(e,t){return 0<=e&&e<this.size&&0<=t&&t<this.size&&this.modules[t][e]}getModules(){return this.modules}drawFunctionPatterns(){for(let e=0;e<this.size;e++)this.setFunctionModule(6,e,e%2==0),this.setFunctionModule(e,6,e%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)n==0&&r==0||n==0&&r==t-1||n==t-1&&r==0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let t=this.errorCorrectionLevel.formatBits<<3|e,n=t;for(let e=0;e<10;e++)n=n<<1^(n>>>9)*1335;let a=(t<<10|n)^21522;i(a>>>15==0);for(let e=0;e<=5;e++)this.setFunctionModule(8,e,r(a,e));this.setFunctionModule(8,7,r(a,6)),this.setFunctionModule(8,8,r(a,7)),this.setFunctionModule(7,8,r(a,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,r(a,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,r(a,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,r(a,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;i(t>>>18==0);for(let e=0;e<18;e++){let n=r(t,e),i=this.size-11+e%3,a=Math.floor(e/3);this.setFunctionModule(i,a,n),this.setFunctionModule(a,i,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a<this.size&&0<=o&&o<this.size&&this.setFunctionModule(a,o,i!=2&&i!=4)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,Math.max(Math.abs(r),Math.abs(n))!=1)}setFunctionModule(e,t,n){this.modules[t][e]=n,this.isFunction[t][e]=!0}addEccAndInterleave(e){let n=this.version,r=this.errorCorrectionLevel;if(e.length!=t.getNumDataCodewords(n,r))throw RangeError(`Invalid argument`);let a=t.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][n],o=t.ECC_CODEWORDS_PER_BLOCK[r.ordinal][n],s=Math.floor(t.getNumRawDataModules(n)/8),c=a-s%a,l=Math.floor(s/a),u=[],d=t.reedSolomonComputeDivisor(o);for(let n=0,r=0;n<a;n++){let i=e.slice(r,r+l-o+(n<c?0:1));r+=i.length;let a=t.reedSolomonComputeRemainder(i,d);n<c&&i.push(0),u.push(i.concat(a))}let f=[];for(let e=0;e<u[0].length;e++)u.forEach((t,n)=>{(e!=l-o||n>=c)&&f.push(t[e])});return i(f.length==s),f}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let i=0;i<this.size;i++)for(let a=0;a<2;a++){let o=t-a,s=t+1&2?i:this.size-1-i;!this.isFunction[s][o]&&n<e.length*8&&(this.modules[s][o]=r(e[n>>>3],7-(n&7)),n++)}}i(n==e.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw Error(`Unreachable`)}!this.isFunction[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let e=0;for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[n][o]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[n][o],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[o][n]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[o][n],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size-1;n++)for(let r=0;r<this.size-1;r++){let i=this.modules[n][r];i==this.modules[n][r+1]&&i==this.modules[n+1][r]&&i==this.modules[n+1][r+1]&&(e+=t.PENALTY_N2)}let n=0;for(let e of this.modules)n=e.reduce((e,t)=>e+ +!!t,n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return i(0<=a&&a<=9),e+=a*t.PENALTY_N4,i(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}static getNumRawDataModules(e){if(e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*e+128)*e+64;if(e>=2){let t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return i(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let n=[];for(let t=0;t<e-1;t++)n.push(0);n.push(1);let r=1;for(let i=0;i<e;i++){for(let e=0;e<n.length;e++)n[e]=t.reedSolomonMultiply(n[e],r),e+1<n.length&&(n[e]^=n[e+1]);r=t.reedSolomonMultiply(r,2)}return n}static reedSolomonComputeRemainder(e,n){let r=n.map(e=>0);for(let i of e){let e=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=t.reedSolomonMultiply(n,e))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return i(n>>>8==0),n}finderPenaltyCountPatterns(e){let t=e[1];i(t<=this.size*3);let n=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)}};t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function r(e,t){return(e>>>t&1)!=0}function i(e){if(!e)throw Error(`Assertion error`)}let a=class e{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw RangeError(`Invalid argument`);this.bitData=n.slice()}static makeBytes(t){let r=[];for(let e of t)n(e,8,r);return new e(e.Mode.BYTE,t.length,r)}static makeNumeric(t){if(!e.isNumeric(t))throw RangeError(`String contains non-numeric characters`);let r=[];for(let e=0;e<t.length;){let i=Math.min(t.length-e,3);n(parseInt(t.substring(e,e+i),10),i*3+1,r),e+=i}return new e(e.Mode.NUMERIC,t.length,r)}static makeAlphanumeric(t){if(!e.isAlphanumeric(t))throw RangeError(`String contains unencodable characters in alphanumeric mode`);let r=[],i;for(i=0;i+2<=t.length;i+=2){let a=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i))*45;a+=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i+1)),n(a,11,r)}return i<t.length&&n(e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i)),6,r),new e(e.Mode.ALPHANUMERIC,t.length,r)}static makeSegments(t){return t==``?[]:e.isNumeric(t)?[e.makeNumeric(t)]:e.isAlphanumeric(t)?[e.makeAlphanumeric(t)]:[e.makeBytes(e.toUtf8ByteArray(t))]}static makeEci(t){let r=[];if(t<0)throw RangeError(`ECI assignment value out of range`);if(t<128)n(t,8,r);else if(t<16384)n(2,2,r),n(t,14,r);else if(t<1e6)n(6,3,r),n(t,21,r);else throw RangeError(`ECI assignment value out of range`);return new e(e.Mode.ECI,0,r)}static isNumeric(t){return e.NUMERIC_REGEX.test(t)}static isAlphanumeric(t){return e.ALPHANUMERIC_REGEX.test(t)}getData(){return this.bitData.slice()}static getTotalBits(e,t){let n=0;for(let r of e){let e=r.mode.numCharCountBits(t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}static toUtf8ByteArray(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)==`%`?(t.push(parseInt(e.substring(n+1,n+3),16)),n+=2):t.push(e.charCodeAt(n));return t}};a.NUMERIC_REGEX=/^[0-9]*$/,a.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,a.ALPHANUMERIC_CHARSET=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`;let o=a;e.QrSegment=a})(X||={}),(e=>{(e=>{let t=class{constructor(e,t){this.ordinal=e,this.formatBits=t}};t.LOW=new t(0,1),t.MEDIUM=new t(1,0),t.QUARTILE=new t(2,3),t.HIGH=new t(3,2),e.Ecc=t})(e.QrCode||={})})(X||={}),(e=>{(e=>{let t=class{constructor(e,t){this.modeBits=e,this.numBitsCharCount=t}numCharCountBits(e){return this.numBitsCharCount[Math.floor((e+7)/17)]}};t.NUMERIC=new t(1,[10,12,14]),t.ALPHANUMERIC=new t(2,[9,11,13]),t.BYTE=new t(4,[8,16,16]),t.KANJI=new t(8,[8,10,12]),t.ECI=new t(7,[0,0,0]),e.Mode=t})(e.QrSegment||={})})(X||={});var Z=X,wt={L:Z.QrCode.Ecc.LOW,M:Z.QrCode.Ecc.MEDIUM,Q:Z.QrCode.Ecc.QUARTILE,H:Z.QrCode.Ecc.HIGH},Tt=128,Et=`L`,Q=`#FFFFFF`,Dt=`#000000`,Ot=!1,$=1,kt=4,At=0,jt=.1;function Mt(e,t=0){let n=[];return e.forEach(function(e,r){let i=null;e.forEach(function(a,o){if(!a&&i!==null){n.push(`M${i+t} ${r+t}h${o-i}v1H${i+t}z`),i=null;return}if(o===e.length-1){if(!a)return;i===null?n.push(`M${o+t},${r+t} h1v1H${o+t}z`):n.push(`M${i+t},${r+t} h${o+1-i}v1H${i+t}z`);return}a&&i===null&&(i=o)})}),n.join(``)}function Nt(e,t){return e.slice().map((e,n)=>n<t.y||n>=t.y+t.h?e:e.map((e,n)=>n<t.x||n>=t.x+t.w?e:!1))}function Pt(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*jt),o=i/t,s=(r.width||a)*o,c=(r.height||a)*o,l=r.x==null?e.length/2-s/2:r.x*o,u=r.y==null?e.length/2-c/2:r.y*o,d=r.opacity==null?1:r.opacity,f=null;if(r.excavate){let e=Math.floor(l),t=Math.floor(u);f={x:e,y:t,w:Math.ceil(s+l-e),h:Math.ceil(c+u-t)}}let p=r.crossOrigin;return{x:l,y:u,h:c,w:s,excavation:f,opacity:d,crossOrigin:p}}function Ft(e,t){return t==null?e?kt:At:Math.max(Math.floor(t),0)}function It({value:e,level:t,minVersion:n,includeMargin:r,marginSize:i,imageSettings:a,size:o,boostLevel:s}){let c=M.useMemo(()=>{let r=(Array.isArray(e)?e:[e]).reduce((e,t)=>(e.push(...Z.QrSegment.makeSegments(t)),e),[]);return Z.QrCode.encodeSegments(r,wt[t],n,void 0,void 0,s)},[e,t,n,s]),{cells:l,margin:u,numCells:d,calculatedImageSettings:f}=M.useMemo(()=>{let e=c.getModules(),t=Ft(r,i);return{cells:e,margin:t,numCells:e.length+t*2,calculatedImageSettings:Pt(e,o,t,a)}},[c,o,a,r,i]);return{qrcode:c,margin:u,cells:l,numCells:d,calculatedImageSettings:f}}var Lt=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),Rt=M.forwardRef(function(e,t){let n=e,{value:r,size:i=Tt,level:a=Et,bgColor:o=Q,fgColor:s=Dt,includeMargin:c=Ot,minVersion:l=$,boostLevel:u,marginSize:d,imageSettings:f}=n,p=Y(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`marginSize`,`imageSettings`]),{style:m}=p,h=Y(p,[`style`]),g=f?.src,_=M.useRef(null),v=M.useRef(null),y=M.useCallback(e=>{_.current=e,typeof t==`function`?t(e):t&&(t.current=e)},[t]),[b,x]=M.useState(!1),{margin:S,cells:C,numCells:w,calculatedImageSettings:T}=It({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:d,imageSettings:f,size:i});M.useEffect(()=>{if(_.current!=null){let e=_.current,t=e.getContext(`2d`);if(!t)return;let n=C,r=v.current,a=T!=null&&r!==null&&r.complete&&r.naturalHeight!==0&&r.naturalWidth!==0;a&&T.excavation!=null&&(n=Nt(C,T.excavation));let c=window.devicePixelRatio||1;e.height=e.width=i*c;let l=i/w*c;t.scale(l,l),t.fillStyle=o,t.fillRect(0,0,w,w),t.fillStyle=s,Lt?t.fill(new Path2D(Mt(n,S))):C.forEach(function(e,n){e.forEach(function(e,r){e&&t.fillRect(r+S,n+S,1,1)})}),T&&(t.globalAlpha=T.opacity),a&&t.drawImage(r,T.x+S,T.y+S,T.w,T.h)}}),M.useEffect(()=>{x(!1)},[g]);let ee=J({height:i,width:i},m),E=null;return g!=null&&(E=M.createElement(`img`,{src:g,key:g,style:{display:`none`},onLoad:()=>{x(!0)},ref:v,crossOrigin:T?.crossOrigin})),M.createElement(M.Fragment,null,M.createElement(`canvas`,J({style:ee,height:i,width:i,ref:y,role:`img`},h)),E)});Rt.displayName=`QRCodeCanvas`;var zt=M.forwardRef(function(e,t){let n=e,{value:r,size:i=Tt,level:a=Et,bgColor:o=Q,fgColor:s=Dt,includeMargin:c=Ot,minVersion:l=$,boostLevel:u,title:d,marginSize:f,imageSettings:p}=n,m=Y(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`title`,`marginSize`,`imageSettings`]),{margin:h,cells:g,numCells:_,calculatedImageSettings:v}=It({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:f,imageSettings:p,size:i}),y=g,b=null;p!=null&&v!=null&&(v.excavation!=null&&(y=Nt(g,v.excavation)),b=M.createElement(`image`,{href:p.src,height:v.h,width:v.w,x:v.x+h,y:v.y+h,preserveAspectRatio:`none`,opacity:v.opacity,crossOrigin:v.crossOrigin}));let x=Mt(y,h);return M.createElement(`svg`,J({height:i,width:i,viewBox:`0 0 ${_} ${_}`,ref:t,role:`img`},m),!!d&&M.createElement(`title`,null,d),M.createElement(`path`,{fill:o,d:`M0,0 h${_}v${_}H0z`,shapeRendering:`crispEdges`}),M.createElement(`path`,{fill:s,d:x,shapeRendering:`crispEdges`}),b)});zt.displayName=`QRCodeSVG`;var Bt=[{value:`light`,label:`Light`,icon:d},{value:`dark`,label:`Dark`,icon:S},{value:`system`,label:`System`,icon:f}],Vt=[{value:`image`,label:`Image`,icon:u},{value:`background`,label:`Background`,icon:g}],Ht=`flex h-7 w-7 min-h-0 min-w-0 items-center justify-center rounded-full border-0 bg-background p-0 data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:shadow-sm hover:bg-background hover:text-muted-foreground data-[state=on]:hover:bg-foreground data-[state=on]:hover:text-background`,Ut=`inline-flex h-auto w-fit justify-start rounded-full border-0 bg-background p-1 text-muted-foreground`,Wt=[`462`,`8100`].includes(typeof document<`u`?document.location.port:``)?`462`:`641`,Gt=600;function Kt(e){let t=(0,j.c)(159),{onboardingResetSignal:n}=e,r=qt(n===void 0?0:n),{theme:a,setTheme:o}=xe(),{scale:c,updateScale:l,min:u,max:d}=we(),{opacity:f,updateOpacity:p,min:m,max:h}=Se(),{mode:g,color:_,updateMode:v,updateColor:y}=ge(),{color:b,updateColor:x,resetColor:S}=Ee(),{defaultMaximumTurnCount:C,draftMaximumTurnCount:w,isLoading:T,isSaving:ee,resetDraftMaximumTurnCount:E,setDraftMaximumTurnCount:te,updateMaximumTurnCount:ne}=ft(),{status:re,isLoading:ie,isOpeningSettings:ae,openSettingsError:oe,refresh:se,openSystemSettings:ce}=mt(),{isLoading:le,isSaving:ue,needsRestart:de,networkAddresses:D,serverBindMode:O,updateServerBindMode:be}=vt(),{isEnabled:Te,isLoading:A,isSaving:Oe,updateIsEnabled:Ae}=ye(),{isEnabled:je,isLoading:Me,isSaving:P,updateIsEnabled:Ne}=ve(),{isEnabled:Pe,isSupported:Fe,isHealthy:Ie,statusMessage:Le,isLoading:Re,isSaving:ze,updateIsEnabled:Be}=Ce(),{isEnabled:Ve,logPath:F,isEnvConfigured:He,ingestingHost:Ue,isLoading:I,isSaving:We,updateIsEnabled:Ge}=yt(),Ke;t[0]!==I||t[1]!==T||t[2]!==ie||t[3]!==Re||t[4]!==le||t[5]!==Me||t[6]!==A?(Ke=[T,ie,le,A,Me,Re,I],t[0]=I,t[1]=T,t[2]=ie,t[3]=Re,t[4]=le,t[5]=Me,t[6]=A,t[7]=Ke):Ke=t[7];let qe=ke(`general`,Ke),Je;t[8]===te?Je=t[9]:(Je=function(e){te(e.target.value)},t[8]=te,t[9]=Je);let Ye=Je,Xe;t[10]!==C||t[11]!==w||t[12]!==E||t[13]!==ne?(Xe=async function(){let e=Number.parseInt(w,10),t=Number.isFinite(e)&&e>0?e:C;try{await ne(t)}catch{E()}},t[10]=C,t[11]=w,t[12]=E,t[13]=ne,t[14]=Xe):Xe=t[14];let Ze=Xe,Qe;t[15]===l?Qe=t[16]:(Qe=function(e){e.length>0&&l(e[0])},t[15]=l,t[16]=Qe);let $e=Qe,et;t[17]===p?et=t[18]:(et=function(e){e.length>0&&p(e[0])},t[17]=p,t[18]=et);let tt=et,nt;t[19]===F?nt=t[20]:(nt=async function(){if(F)try{await navigator.clipboard.writeText(F),fe({title:`Copied`,description:`Log file path copied to clipboard.`})}catch(e){let t=e;fe({title:`Copy failed`,description:t instanceof Error?t.message:`Could not copy the log file path.`,variant:`destructive`})}},t[19]=F,t[20]=nt);let rt=nt,[it,at]=(0,M.useState)(!1),L,R,z;t[21]!==D||t[22]!==O?(L=async function(){if(R)try{await navigator.clipboard.writeText(R),at(!0),fe({title:`Copied`,description:`Network URL copied to clipboard.`}),window.setTimeout(()=>{at(!1)},1500)}catch(e){let t=e;fe({title:`Copy failed`,description:t instanceof Error?t.message:`Could not copy the network URL.`,variant:`destructive`})}},z=O===`network`&&D.length>0,R=z?`http://${D[0]}:${Wt}`:null,t[21]=D,t[22]=O,t[23]=L,t[24]=R,t[25]=z):(L=t[23],R=t[24],z=t[25]);let ot=r&&`animate-headline-reset`,st;t[26]===ot?st=t[27]:(st=s(ot),t[26]=ot,t[27]=st);let ct;t[28]===st?ct=t[29]:(ct=(0,N.jsx)(De,{title:`Appearance`,titleClassName:st,className:`[&>div:first-child]:py-2`,sticky:!1}),t[28]=st,t[29]=ct);let lt;t[30]===u?lt=t[31]:(lt=(0,N.jsxs)(`span`,{className:`${i.bodyMuted} w-8 shrink-0 text-right`,children:[u,`%`]}),t[30]=u,t[31]=lt);let B;t[32]===c?B=t[33]:(B=[c],t[32]=c,t[33]=B);let dt=`${c}%`,V;t[34]!==$e||t[35]!==d||t[36]!==u||t[37]!==B||t[38]!==dt?(V=(0,N.jsx)(ut,{value:B,min:u,max:d,step:5,onValueChange:$e,"aria-label":`Font size`,valueTooltip:dt}),t[34]=$e,t[35]=d,t[36]=u,t[37]=B,t[38]=dt,t[39]=V):V=t[39];let H;t[40]===d?H=t[41]:(H=(0,N.jsxs)(`span`,{className:`${i.bodyMuted} w-9 shrink-0`,children:[d,`%`]}),t[40]=d,t[41]=H);let pt;t[42]!==lt||t[43]!==V||t[44]!==H?(pt=(0,N.jsx)(k,{title:`Font Size`,description:`Adjust the text size across the entire application.`,children:(0,N.jsxs)(`div`,{className:`ml-auto flex w-1/2 items-center gap-3`,children:[lt,V,H]})}),t[42]=lt,t[43]=V,t[44]=H,t[45]=pt):pt=t[45];let U;t[46]===m?U=t[47]:(U=(0,N.jsxs)(`span`,{className:`${i.bodyMuted} w-8 shrink-0 text-right`,children:[m,`%`]}),t[46]=m,t[47]=U);let W;t[48]===f?W=t[49]:(W=[f],t[48]=f,t[49]=W);let ht=`${f}%`,G;t[50]!==h||t[51]!==m||t[52]!==tt||t[53]!==W||t[54]!==ht?(G=(0,N.jsx)(ut,{value:W,min:m,max:h,step:5,onValueChange:tt,"aria-label":`Panel opacity`,valueTooltip:ht}),t[50]=h,t[51]=m,t[52]=tt,t[53]=W,t[54]=ht,t[55]=G):G=t[55];let gt;t[56]===h?gt=t[57]:(gt=(0,N.jsxs)(`span`,{className:`${i.bodyMuted} w-9 shrink-0`,children:[h,`%`]}),t[56]=h,t[57]=gt);let _t;t[58]!==U||t[59]!==G||t[60]!==gt?(_t=(0,N.jsx)(k,{title:`Panel Opacity`,description:`Adjust how opaque the frosted panels are over the wallpaper.`,children:(0,N.jsxs)(`div`,{className:`ml-auto flex w-1/2 items-center gap-3`,children:[U,G,gt]})}),t[58]=U,t[59]=G,t[60]=gt,t[61]=_t):_t=t[61];let K;t[62]!==o||t[63]!==a?(K=(0,N.jsx)(Jt,{theme:a,onThemeChange:o}),t[62]=o,t[63]=a,t[64]=K):K=t[64];let bt;t[65]!==y||t[66]!==v||t[67]!==_||t[68]!==g?(bt=(0,N.jsx)(Xt,{wallpaperMode:g,wallpaperColor:_,onModeChange:v,onColorChange:y}),t[65]=y,t[66]=v,t[67]=_,t[68]=g,t[69]=bt):bt=t[69];let q;t[70]!==b||t[71]!==S||t[72]!==x?(q=(0,N.jsx)(Qt,{brandColor:b,onColorChange:x,onReset:S}),t[70]=b,t[71]=S,t[72]=x,t[73]=q):q=t[73];let xt;t[74]!==pt||t[75]!==_t||t[76]!==K||t[77]!==bt||t[78]!==q?(xt=(0,N.jsx)(he,{className:`max-w-none pt-0`,children:(0,N.jsxs)(_e,{children:[pt,_t,K,bt,q]})}),t[74]=pt,t[75]=_t,t[76]=K,t[77]=bt,t[78]=q,t[79]=xt):xt=t[79];let St;t[80]!==ct||t[81]!==xt?(St=(0,N.jsxs)(pe,{className:`shrink-0`,children:[ct,xt]}),t[80]=ct,t[81]=xt,t[82]=St):St=t[82];let Ct;t[83]===Symbol.for(`react.memo_cache_sentinel`)?(Ct=(0,N.jsx)(De,{title:`Settings`,className:`[&>div:first-child]:py-2`,sticky:!1}),t[83]=Ct):Ct=t[83];let J;t[84]!==C||t[85]!==w||t[86]!==Ze||t[87]!==Ye||t[88]!==T||t[89]!==ee?(J=(0,N.jsx)($t,{draftValue:w,defaultTurnCount:C,isLoading:T,isSaving:ee,onChange:Ye,onBlur:Ze}),t[84]=C,t[85]=w,t[86]=Ze,t[87]=Ye,t[88]=T,t[89]=ee,t[90]=J):J=t[90];let Y;t[91]===Ae?Y=t[92]:(Y=e=>{Ae(e)},t[91]=Ae,t[92]=Y);let X;t[93]!==A||t[94]!==Oe||t[95]!==Y||t[96]!==Te?(X=(0,N.jsx)(en,{title:`AI Voice Cleanup`,description:`After stopping voice recording, run the transcription through AI to remove filler words, false starts, and repetitions.`,value:Te,isLoading:A,isSaving:Oe,ariaLabel:`AI Voice Cleanup`,onChange:Y}),t[93]=A,t[94]=Oe,t[95]=Y,t[96]=Te,t[97]=X):X=t[97];let Z;t[98]===Ne?Z=t[99]:(Z=e=>{Ne(e)},t[98]=Ne,t[99]=Z);let wt;t[100]!==Me||t[101]!==P||t[102]!==je||t[103]!==Z?(wt=(0,N.jsx)(en,{title:`Spend`,description:`Show an estimated spend counter in the chat header.`,value:je,isLoading:Me,isSaving:P,ariaLabel:`Spend`,onChange:Z}),t[100]=Me,t[101]=P,t[102]=je,t[103]=Z,t[104]=wt):wt=t[104];let Tt;t[105]!==ae||t[106]!==ie||t[107]!==ce||t[108]!==se||t[109]!==oe||t[110]!==re?(Tt=(0,N.jsx)(tn,{status:re,isLoading:ie,isOpeningSettings:ae,openSettingsError:oe,onRefresh:se,onOpenSettings:ce}),t[105]=ae,t[106]=ie,t[107]=ce,t[108]=se,t[109]=oe,t[110]=re,t[111]=Tt):Tt=t[111];let Et;t[112]!==Re||t[113]!==ze||t[114]!==Pe||t[115]!==Ie||t[116]!==Le||t[117]!==Fe||t[118]!==Be?(Et=(0,N.jsx)(nn,{supported:Fe,enabled:Pe,healthy:Ie,message:Le,isLoading:Re,isSaving:ze,onChange:Be}),t[112]=Re,t[113]=ze,t[114]=Pe,t[115]=Ie,t[116]=Le,t[117]=Fe,t[118]=Be,t[119]=Et):Et=t[119];let Q;t[120]===Ge?Q=t[121]:(Q=e=>{Ge(e)},t[120]=Ge,t[121]=Q);let Dt;t[122]!==Ue||t[123]!==rt||t[124]!==He||t[125]!==I||t[126]!==We||t[127]!==Ve||t[128]!==F||t[129]!==Q?(Dt=(0,N.jsx)(an,{enabled:Ve,logPath:F,isEnvConfigured:He,ingestingHost:Ue,isLoading:I,isSaving:We,onChange:Q,onCopyPath:rt}),t[122]=Ue,t[123]=rt,t[124]=He,t[125]=I,t[126]=We,t[127]=Ve,t[128]=F,t[129]=Q,t[130]=Dt):Dt=t[130];let Ot;t[131]!==it||t[132]!==L||t[133]!==le||t[134]!==ue||t[135]!==R||t[136]!==de||t[137]!==D||t[138]!==O||t[139]!==z||t[140]!==be?(Ot=(0,N.jsx)(on,{bindMode:O,isLoading:le,isSaving:ue,networkAddresses:D,needsRestart:de,showMobileQrCode:z,mobileNetworkUrl:R,copiedUrl:it,onChangeMode:be,onCopyUrl:L}),t[131]=it,t[132]=L,t[133]=le,t[134]=ue,t[135]=R,t[136]=de,t[137]=D,t[138]=O,t[139]=z,t[140]=be,t[141]=Ot):Ot=t[141];let $;t[142]!==J||t[143]!==X||t[144]!==wt||t[145]!==Tt||t[146]!==Et||t[147]!==Dt||t[148]!==Ot?($=(0,N.jsxs)(pe,{className:`shrink-0`,children:[Ct,(0,N.jsx)(he,{className:`max-w-none pt-0`,children:(0,N.jsxs)(_e,{children:[J,X,wt,Tt,Et,Dt,Ot]})})]}),t[142]=J,t[143]=X,t[144]=wt,t[145]=Tt,t[146]=Et,t[147]=Dt,t[148]=Ot,t[149]=$):$=t[149];let kt;t[150]===R?kt=t[151]:(kt=(0,N.jsx)(sn,{url:R}),t[150]=R,t[151]=kt);let At;t[152]!==St||t[153]!==$||t[154]!==kt?(At=(0,N.jsxs)(`div`,{className:`divide-y divide-table-border [&>*]:rounded-none`,children:[St,$,kt]}),t[152]=St,t[153]=$,t[154]=kt,t[155]=At):At=t[155];let jt;return t[156]!==qe||t[157]!==At?(jt=(0,N.jsx)(me,{loading:qe,children:At}),t[156]=qe,t[157]=At,t[158]=jt):jt=t[158],jt}function qt(e){let t=(0,j.c)(3),[n,r]=(0,M.useState)(!1),i,a;return t[0]===e?(i=t[1],a=t[2]):(i=()=>{if(e===0)return;r(!0);let t=setTimeout(()=>{r(!1)},Gt);return()=>{clearTimeout(t)}},a=[e],t[0]=e,t[1]=i,t[2]=a),(0,M.useEffect)(i,a),n}function Jt(e){let t=(0,j.c)(6),{theme:n,onThemeChange:r}=e,i;t[0]===r?i=t[1]:(i=e=>{(e===`light`||e===`dark`||e===`system`)&&r(e)},t[0]=r,t[1]=i);let a;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=Bt.map(Yt),t[2]=a):a=t[2];let o;return t[3]!==i||t[4]!==n?(o=(0,N.jsx)(k,{title:`Appearance`,description:`Choose your preferred color scheme.`,controlLayout:`row-end`,action:(0,N.jsx)(Oe,{type:`single`,value:n,onValueChange:i,"aria-label":`Appearance`,className:Ut,children:a})}),t[3]=i,t[4]=n,t[5]=o):o=t[5],o}function Yt(e){let t=e.icon;return(0,N.jsx)(A,{value:e.value,"aria-label":e.label,className:Ht,children:(0,N.jsx)(t,{className:`h-4 w-4`,"aria-hidden":`true`})},e.value)}function Xt(e){let t=(0,j.c)(22),{wallpaperMode:n,wallpaperColor:r,onModeChange:i,onColorChange:a}=e,o;t[0]===i?o=t[1]:(o=e=>{(e===`image`||e===`background`||e===`color`)&&i(e)},t[0]=i,t[1]=o);let c;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=Vt.map(Zt),t[2]=c):c=t[2];let l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=s(Ht,`relative overflow-hidden`),t[3]=l):l=t[3];let u;t[4]===r?u=t[5]:(u=(0,N.jsx)(`span`,{className:`pointer-events-none h-4 w-4 rounded-full border border-black/25 dark:border-white/25`,style:{backgroundColor:r},"aria-hidden":`true`}),t[4]=r,t[5]=u);let d;t[6]===i?d=t[7]:(d=()=>{i(`color`)},t[6]=i,t[7]=d);let f;t[8]!==a||t[9]!==i?(f=e=>{a(e.target.value),i(`color`)},t[8]=a,t[9]=i,t[10]=f):f=t[10];let p;t[11]!==d||t[12]!==f||t[13]!==r?(p=(0,N.jsx)(`input`,{type:`color`,value:r,"aria-label":`Choose wallpaper color`,className:`absolute inset-0 cursor-pointer opacity-0`,onPointerDown:d,onChange:f}),t[11]=d,t[12]=f,t[13]=r,t[14]=p):p=t[14];let m;t[15]!==u||t[16]!==p?(m=(0,N.jsxs)(A,{value:`color`,"aria-label":`Custom color`,className:l,children:[u,p]}),t[15]=u,t[16]=p,t[17]=m):m=t[17];let h;return t[18]!==o||t[19]!==m||t[20]!==n?(h=(0,N.jsx)(k,{title:`Wallpaper`,description:`Choose a scenic image, the theme background, or a custom color.`,controlLayout:`row-end`,action:(0,N.jsxs)(Oe,{type:`single`,value:n,onValueChange:o,"aria-label":`Wallpaper`,className:Ut,children:[c,m]})}),t[18]=o,t[19]=m,t[20]=n,t[21]=h):h=t[21],h}function Zt(e){let t=e.icon;return(0,N.jsx)(A,{value:e.value,"aria-label":e.label,className:Ht,children:(0,N.jsx)(t,{className:`h-4 w-4`,"aria-hidden":`true`})},e.value)}function Qt(e){let t=(0,j.c)(14),{brandColor:n,onColorChange:r,onReset:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=s(Ht,`relative cursor-pointer overflow-hidden`),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,N.jsx)(`span`,{className:`pointer-events-none h-4 w-4 rounded-full border border-black/25 dark:border-white/25`,style:{backgroundColor:n},"aria-hidden":`true`}),t[1]=n,t[2]=o);let c;t[3]===r?c=t[4]:(c=e=>{r(e.target.value)},t[3]=r,t[4]=c);let l;t[5]!==n||t[6]!==c?(l=(0,N.jsx)(`input`,{type:`color`,value:n,"aria-label":`Primary color`,className:`absolute inset-0 cursor-pointer opacity-0`,onChange:c}),t[5]=n,t[6]=c,t[7]=l):l=t[7];let u;t[8]!==o||t[9]!==l?(u=(0,N.jsx)(`div`,{className:Ut,children:(0,N.jsxs)(`label`,{className:a,children:[o,l]})}),t[8]=o,t[9]=l,t[10]=u):u=t[10];let d;return t[11]!==i||t[12]!==u?(d=(0,N.jsx)(k,{title:`Primary Color`,description:`Choose the primary accent color used across the app. Click the label to reset to default.`,controlLayout:`row-end`,onTitleClick:i,action:u}),t[11]=i,t[12]=u,t[13]=d):d=t[13],d}function $t(e){let t=(0,j.c)(10),{draftValue:n,defaultTurnCount:r,isLoading:i,isSaving:a,onChange:o,onBlur:s}=e,c=`Set how many turns a long-running agent chat can take before Tarsk asks whether to continue. Default: ${r} turns.`,l;t[0]===s?l=t[1]:(l=()=>{s()},t[0]=s,t[1]=l);let u=i||a,d;t[2]!==n||t[3]!==o||t[4]!==l||t[5]!==u?(d=(0,N.jsx)(be,{type:`number`,min:1,step:1,value:n,onChange:o,onBlur:l,disabled:u,"aria-label":`Maximum turn count`,className:`w-28 text-right font-mono tabular-nums flex-shrink-0`}),t[2]=n,t[3]=o,t[4]=l,t[5]=u,t[6]=d):d=t[6];let f;return t[7]!==c||t[8]!==d?(f=(0,N.jsx)(k,{title:`Maximum Turn Count`,description:c,controlLayout:`row-end`,action:d}),t[7]=c,t[8]=d,t[9]=f):f=t[9],f}function en(e){let t=(0,j.c)(9),{title:n,description:r,value:i,isLoading:a,isSaving:o,ariaLabel:s,onChange:c}=e,l=a||o,u;t[0]!==s||t[1]!==c||t[2]!==l||t[3]!==i?(u=(0,N.jsx)(Te,{value:i,onChange:c,disabled:l,ariaLabel:s}),t[0]=s,t[1]=c,t[2]=l,t[3]=i,t[4]=u):u=t[4];let d;return t[5]!==r||t[6]!==u||t[7]!==n?(d=(0,N.jsx)(k,{title:n,description:r,controlLayout:`row-end`,action:u}),t[5]=r,t[6]=u,t[7]=n,t[8]=d):d=t[8],d}function tn(e){let t=(0,j.c)(25),{status:n,isLoading:r,isOpeningSettings:a,openSettingsError:o,onRefresh:u,onOpenSettings:d}=e;if(!n?.isMacOS)return null;let f;t[0]!==r||t[1]!==n?.granted?(f=!r&&n?.granted?(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(p,{className:`h-4 w-4 text-green-500`}),(0,N.jsx)(`span`,{className:s(i.body,`text-green-600 dark:text-green-400`),children:`Permission granted`})]}):r?null:(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(l,{className:`h-4 w-4 text-amber-500`}),(0,N.jsx)(`span`,{className:s(i.body,`text-amber-600 dark:text-amber-400`),children:`Permission not granted`})]}),t[0]=r,t[1]=n?.granted,t[2]=f):f=t[2];let h;t[3]===u?h=t[4]:(h=()=>void u(),t[3]=u,t[4]=h);let g;t[5]===r?g=t[6]:(g=r?(0,N.jsx)(m,{className:`h-3.5 w-3.5 animate-spin`}):(0,N.jsx)(_,{className:`h-3.5 w-3.5`}),t[5]=r,t[6]=g);let v;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,N.jsx)(`span`,{className:`sr-only`,children:`Refresh permission status`}),t[7]=v):v=t[7];let y;t[8]!==r||t[9]!==h||t[10]!==g?(y=(0,N.jsxs)(c,{variant:`ghost`,size:`icon-sm`,className:`h-7 w-7 shrink-0 rounded-full border-0 bg-background hover:bg-background hover:text-foreground`,onClick:h,disabled:r,children:[g,v]}),t[8]=r,t[9]=h,t[10]=g,t[11]=y):y=t[11];let x;t[12]!==f||t[13]!==y?(x=(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[f,y]}),t[12]=f,t[13]=y,t[14]=x):x=t[14];let S;t[15]!==r||t[16]!==a||t[17]!==d||t[18]!==o||t[19]!==n?.granted||t[20]!==n?.message?(S=!r&&!n?.granted?(0,N.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,N.jsx)(`p`,{className:i.bodyMuted,children:n?.message??`Tarsk needs Screen & Audio Recording permission to use browser tools.`}),(0,N.jsx)(c,{size:`sm`,onClick:()=>void d(),disabled:a,className:`w-fit`,children:a?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(m,{className:`h-4 w-4 mr-2 animate-spin`}),`Opening Settings...`]}):(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(b,{className:`h-4 w-4 mr-2`}),`Open System Settings`]})}),o&&(0,N.jsxs)(`div`,{className:`flex items-start gap-2 p-3 rounded-md bg-destructive/10 text-destructive`,children:[(0,N.jsx)(C,{className:`h-4 w-4 mt-0.5 flex-shrink-0`}),(0,N.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,N.jsx)(`p`,{className:i.body,children:`Failed to open System Settings`}),(0,N.jsx)(`p`,{className:i.bodyMuted,children:o}),(0,N.jsxs)(`p`,{className:i.bodyMuted,children:[`Please open it manually:`,` `,(0,N.jsx)(`strong`,{children:`System Settings > Privacy & Security > Screen & System Audio Recording`})]})]})]})]}):null,t[15]=r,t[16]=a,t[17]=d,t[18]=o,t[19]=n?.granted,t[20]=n?.message,t[21]=S):S=t[21];let w;return t[22]!==x||t[23]!==S?(w=(0,N.jsx)(k,{title:`Screen & Audio Recording`,description:`Tarsk needs this macOS permission to capture screen content for browser tools and screen sharing features.`,controlLayout:`row-end`,action:x,children:S}),t[22]=x,t[23]=S,t[24]=w):w=t[24],w}function nn(e){let t=(0,j.c)(15),{supported:n,enabled:r,healthy:a,message:o,isLoading:s,isSaving:c,onChange:u}=e;if(!n)return null;let d=r&&a,f;t[0]!==a||t[1]!==u?(f=e=>{e&&!a||u(e).catch(rn)},t[0]=a,t[1]=u,t[2]=f):f=t[2];let p=s||c,m=!a,h;t[3]!==d||t[4]!==f||t[5]!==p||t[6]!==m?(h=(0,N.jsx)(Te,{value:d,onChange:f,disabled:p,disableOn:m,ariaLabel:`Sandbox`}),t[3]=d,t[4]=f,t[5]=p,t[6]=m,t[7]=h):h=t[7];let g;t[8]!==a||t[9]!==s||t[10]!==o?(g=!s&&!a?(0,N.jsxs)(`div`,{className:`flex items-start gap-2 text-destructive`,children:[(0,N.jsx)(l,{className:`h-4 w-4 mt-0.5 shrink-0`}),(0,N.jsx)(`p`,{className:i.bodyMuted,children:o||`Seatbelt sandbox failed its health check and cannot be enabled.`})]}):null,t[8]=a,t[9]=s,t[10]=o,t[11]=g):g=t[11];let _;return t[12]!==h||t[13]!==g?(_=(0,N.jsx)(k,{title:`Sandbox`,description:`Sandbox tools like bash and skill script execution to allow running and testing code safely without risking your system, files, or data.`,controlLayout:`row-end`,action:h,children:g}),t[12]=h,t[13]=g,t[14]=_):_=t[14],_}function rn(){}function an(e){let t=(0,j.c)(25),{enabled:n,logPath:r,isEnvConfigured:a,ingestingHost:o,isLoading:c,isSaving:l,onChange:u,onCopyPath:d}=e,f=c||l,p;t[0]!==n||t[1]!==u||t[2]!==f?(p=(0,N.jsx)(E,{asChild:!0,children:(0,N.jsx)(`span`,{className:`inline-flex`,children:(0,N.jsx)(Te,{value:n,onChange:u,disabled:f,ariaLabel:`Logging`})})}),t[0]=n,t[1]=u,t[2]=f,t[3]=p):p=t[3];let m=n&&r?`max-w-sm cursor-pointer`:`max-w-sm`,h;t[4]!==n||t[5]!==r||t[6]!==d?(h=n&&r?()=>void d():void 0,t[4]=n,t[5]=r,t[6]=d,t[7]=h):h=t[7];let g;t[8]!==n||t[9]!==r?(g=n&&r?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`p`,{children:`Click to copy log file path`}),(0,N.jsx)(`p`,{className:s(i.mono,`mt-1 break-all`),children:r})]}):(0,N.jsx)(`p`,{children:`Enable logging to write to a local file.`}),t[8]=n,t[9]=r,t[10]=g):g=t[10];let _;t[11]!==m||t[12]!==h||t[13]!==g?(_=(0,N.jsx)(te,{className:m,onClick:h,children:g}),t[11]=m,t[12]=h,t[13]=g,t[14]=_):_=t[14];let v;t[15]!==p||t[16]!==_?(v=(0,N.jsxs)(ne,{children:[p,_]}),t[15]=p,t[16]=_,t[17]=v):v=t[17];let y;t[18]!==n||t[19]!==o||t[20]!==a?(y=n&&a&&o&&(0,N.jsxs)(`p`,{className:`${i.bodyMuted} mt-3`,children:[`Also sending logs to Better Stack at`,` `,(0,N.jsx)(`span`,{className:i.mono,children:o})]}),t[18]=n,t[19]=o,t[20]=a,t[21]=y):y=t[21];let b;return t[22]!==v||t[23]!==y?(b=(0,N.jsx)(k,{title:`Logging`,description:`Write verbose application logs to a local file. When Better Stack environment variables are configured, logs are sent there too.`,controlLayout:`row-end`,action:v,children:y}),t[22]=v,t[23]=y,t[24]=b):b=t[24],b}function on(e){let t=(0,j.c)(23),{bindMode:n,isLoading:r,isSaving:a,networkAddresses:o,needsRestart:s,showMobileQrCode:c,mobileNetworkUrl:l,copiedUrl:u,onChangeMode:d,onCopyUrl:f}=e,p=n===`network`,m;t[0]===d?m=t[1]:(m=e=>{d(e?`network`:`local`)},t[0]=d,t[1]=m);let g=r||a,_;t[2]!==p||t[3]!==m||t[4]!==g?(_=(0,N.jsx)(Te,{value:p,onChange:m,disabled:g,ariaLabel:`Mobile & Network Access`}),t[2]=p,t[3]=m,t[4]=g,t[5]=_):_=t[5];let y;t[6]!==u||t[7]!==l||t[8]!==s||t[9]!==f||t[10]!==c?(y=c&&l&&(0,N.jsxs)(`div`,{className:`mt-3`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsxs)(`p`,{className:i.bodyMuted,children:[`Available on the network at:`,` `,(0,N.jsx)(`span`,{className:i.mono,children:l})]}),(0,N.jsxs)(ne,{children:[(0,N.jsx)(E,{asChild:!0,children:(0,N.jsxs)(`button`,{type:`button`,onClick:()=>void f(),className:`inline-flex h-7 w-7 items-center justify-center rounded-md border border-border bg-background/90 text-foreground shadow-sm transition-colors hover:bg-background`,children:[u?(0,N.jsx)(h,{className:`h-3.5 w-3.5 text-green-500`}):(0,N.jsx)(v,{className:`h-3.5 w-3.5`}),(0,N.jsx)(`span`,{className:`sr-only`,children:`Copy network URL`})]})}),(0,N.jsx)(te,{children:u?`Copied!`:`Copy to clipboard`})]})]}),s&&(0,N.jsx)(`p`,{className:`${i.bodyMuted} mt-1`,children:`You will need to restart for this setting to take effect.`})]}),t[6]=u,t[7]=l,t[8]=s,t[9]=f,t[10]=c,t[11]=y):y=t[11];let b;t[12]!==n||t[13]!==o?(b=n===`network`&&o.length===0&&(0,N.jsx)(`p`,{className:`${i.bodyMuted} mt-3`,children:`No network IP addresses were detected on this computer.`}),t[12]=n,t[13]=o,t[14]=b):b=t[14];let x;t[15]!==n||t[16]!==s?(x=s&&n===`local`&&(0,N.jsx)(`p`,{className:`${i.bodyMuted} mt-3`,children:`You will need to restart for this setting to take effect.`}),t[15]=n,t[16]=s,t[17]=x):x=t[17];let S;return t[18]!==_||t[19]!==y||t[20]!==b||t[21]!==x?(S=(0,N.jsxs)(k,{title:`Mobile & Network Access`,description:`Allow the Tarsk mobile app or other web browsers to access Tarsk on the wifi network.`,controlLayout:`row-end`,action:_,children:[y,b,x]}),t[18]=_,t[19]=y,t[20]=b,t[21]=x,t[22]=S):S=t[22],S}function sn(e){let t=(0,j.c)(3),{url:n}=e;if(!n)return null;let r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,N.jsx)(De,{title:`Mobile App`,description:`Scan this code with the Tarsk mobile app to connect on your Wi-Fi network.`,sticky:!1}),t[0]=r):r=t[0];let i;return t[1]===n?i=t[2]:(i=(0,N.jsxs)(pe,{className:`shrink-0`,children:[r,(0,N.jsx)(`div`,{className:`flex flex-col items-center px-6 pb-6 pt-6`,children:(0,N.jsx)(`div`,{className:`rounded-lg bg-background p-3`,children:(0,N.jsx)(zt,{value:n,size:128,bgColor:`hsl(var(--background))`,fgColor:`hsl(var(--foreground))`,level:`M`})})})]}),t[1]=n,t[2]=i),i}export{Kt as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-aKtaBQYM.js";import{n as e,o as t,t as n}from"./react-vendor-Ee0-5T4I.js";import{Dt as r}from"./dist-CTLFS4dn.js";import{r as i,t as a}from"./button-kWtLAMpB.js";import{D as o,q as s}from"./dist-c_QADQ5u.js";import{i as c,n as l,r as u,t as d}from"./tooltip-Db8UeYxm.js";import{Wn as f,fr as p,yt as m}from"./index-u8UbWjXL.js";import"./card-B_EASkic.js";var h=e();t();var g=n();function _(e){let t=(0,h.c)(14),{icon:n,title:a,description:o,bordered:s}=e,c=(s===void 0?!0:s)&&`border border-dashed rounded-lg`,l;t[0]===c?l=t[1]:(l=i(`text-center py-12 mb-8`,c),t[0]=c,t[1]=l);let u;t[2]===n?u=t[3]:(u=(0,g.jsx)(n,{className:`mx-auto h-10 w-10 text-muted-foreground/50 mb-3`}),t[2]=n,t[3]=u);let d;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(d=i(r.emptyStateTitle,`mb-1`),t[4]=d):d=t[4];let f;t[5]===a?f=t[6]:(f=(0,g.jsx)(`h3`,{className:d,children:a}),t[5]=a,t[6]=f);let p;t[7]===o?p=t[8]:(p=o?(0,g.jsx)(`p`,{className:i(r.bodyMuted,`mb-3`),children:o}):null,t[7]=o,t[8]=p);let m;return t[9]!==l||t[10]!==u||t[11]!==f||t[12]!==p?(m=(0,g.jsxs)(`div`,{className:l,children:[u,f,p]}),t[9]=l,t[10]=u,t[11]=f,t[12]=p,t[13]=m):m=t[13],m}function v(e){let t=(0,h.c)(12),{placeholder:n,value:r,onChange:a,className:o}=e,c=o??`mb-4`,l;t[0]===c?l=t[1]:(l=i(`relative`,c),t[0]=c,t[1]=l);let u;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,g.jsx)(s,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground pointer-events-none`}),t[2]=u):u=t[2];let d;t[3]===a?d=t[4]:(d=e=>a(e.target.value),t[3]=a,t[4]=d);let f;t[5]!==n||t[6]!==d||t[7]!==r?(f=(0,g.jsx)(p,{placeholder:n,value:r,onChange:d,className:`pl-8`}),t[5]=n,t[6]=d,t[7]=r,t[8]=f):f=t[8];let m;return t[9]!==l||t[10]!==f?(m=(0,g.jsxs)(`div`,{className:l,children:[u,f]}),t[9]=l,t[10]=f,t[11]=m):m=t[11],m}function y(e){let t=(0,h.c)(3),{searchQuery:n,emptyLabel:a}=e,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=i(r.bodyMuted,`text-center py-8`),t[0]=o):o=t[0];let s=n.trim()?`No results for "${n}"`:a,c;return t[1]===s?c=t[2]:(c=(0,g.jsx)(`p`,{className:o,children:s}),t[1]=s,t[2]=c),c}function b(e){let t=(0,h.c)(3),{message:n}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=i(r.bodyMuted,`text-center py-8`),t[0]=a):a=t[0];let o;return t[1]===n?o=t[2]:(o=(0,g.jsx)(`p`,{className:a,children:n}),t[1]=n,t[2]=o),o}var x=`shrink-0 items-center justify-center text-muted-foreground opacity-0 pointer-events-none can-hover:group-hover:opacity-100 can-hover:group-hover:pointer-events-auto can-hover:hover:bg-destructive can-hover:hover:text-destructive-foreground transition-[opacity,color,background-color]`;function S(e){let t=(0,h.c)(19),{loading:n,items:r,emptyState:s,getKey:p,columnsClassName:v,compact:y,showHeader:b,renderContent:S,renderMiddle:C,onItemClick:w,itemClickLabel:T,onDelete:E,deleteAriaLabel:D,deleteTooltip:O}=e,k=v===void 0?`grid-cols-[minmax(0,1fr)_1.75rem]`:v,A=y===void 0?!1:y,j=b===void 0?!0:b,M;t[0]===j?M=t[1]:(M=j?(0,g.jsx)(m,{title:`Installed`}):null,t[0]=j,t[1]=M);let N;t[2]!==k||t[3]!==A||t[4]!==D||t[5]!==O||t[6]!==s||t[7]!==p||t[8]!==T||t[9]!==r||t[10]!==n||t[11]!==E||t[12]!==w||t[13]!==S||t[14]!==C?(N=n?(0,g.jsxs)(`div`,{className:`space-y-3 mb-8`,children:[(0,g.jsx)(f,{className:i(`w-full`,A?`h-9`:`h-12`)}),(0,g.jsx)(f,{className:i(`w-full`,A?`h-9`:`h-12`)})]}):r.length===0?(0,g.jsx)(_,{...s}):(0,g.jsx)(`div`,{className:`divide-y divide-table-border`,children:r.map(e=>(0,g.jsxs)(`div`,{className:i(`group grid items-center gap-3 px-3 hover:bg-muted/30`,A?`min-h-10 py-2`:`min-h-13 py-3`,k,w&&`cursor-pointer`),role:w?`button`:void 0,tabIndex:w?0:void 0,"aria-label":w?T?.(e):void 0,onClick:w?()=>w(e):void 0,onKeyDown:w?t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),w(e))}:void 0,children:[S(e),C?.(e),(0,g.jsx)(u,{children:(0,g.jsxs)(d,{children:[(0,g.jsx)(c,{asChild:!0,children:(0,g.jsx)(a,{type:`button`,variant:`ghost`,size:`icon-sm`,className:x,onClick:t=>{t.stopPropagation(),E(e)},"aria-label":D(e),children:(0,g.jsx)(o,{className:`h-4 w-4`})})}),(0,g.jsx)(l,{children:O})]})})]},p(e)))}),t[2]=k,t[3]=A,t[4]=D,t[5]=O,t[6]=s,t[7]=p,t[8]=T,t[9]=r,t[10]=n,t[11]=E,t[12]=w,t[13]=S,t[14]=C,t[15]=N):N=t[15];let P;return t[16]!==M||t[17]!==N?(P=(0,g.jsxs)(g.Fragment,{children:[M,N]}),t[16]=M,t[17]=N,t[18]=P):P=t[18],P}export{v as a,y as i,_ as n,b as o,S as r,x as t};
1
+ import"./rolldown-runtime-aKtaBQYM.js";import{n as e,o as t,t as n}from"./react-vendor-Ee0-5T4I.js";import{Dt as r}from"./dist-CTLFS4dn.js";import{r as i,t as a}from"./button-kWtLAMpB.js";import{D as o,q as s}from"./dist-c_QADQ5u.js";import{i as c,n as l,r as u,t as d}from"./tooltip-Db8UeYxm.js";import{Wn as f,bt as p,fr as m}from"./index-B3-5kIOf.js";import"./card-B_EASkic.js";var h=e();t();var g=n();function _(e){let t=(0,h.c)(14),{icon:n,title:a,description:o,bordered:s}=e,c=(s===void 0?!0:s)&&`border border-dashed rounded-lg`,l;t[0]===c?l=t[1]:(l=i(`text-center py-12 mb-8`,c),t[0]=c,t[1]=l);let u;t[2]===n?u=t[3]:(u=(0,g.jsx)(n,{className:`mx-auto h-10 w-10 text-muted-foreground/50 mb-3`}),t[2]=n,t[3]=u);let d;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(d=i(r.emptyStateTitle,`mb-1`),t[4]=d):d=t[4];let f;t[5]===a?f=t[6]:(f=(0,g.jsx)(`h3`,{className:d,children:a}),t[5]=a,t[6]=f);let p;t[7]===o?p=t[8]:(p=o?(0,g.jsx)(`p`,{className:i(r.bodyMuted,`mb-3`),children:o}):null,t[7]=o,t[8]=p);let m;return t[9]!==l||t[10]!==u||t[11]!==f||t[12]!==p?(m=(0,g.jsxs)(`div`,{className:l,children:[u,f,p]}),t[9]=l,t[10]=u,t[11]=f,t[12]=p,t[13]=m):m=t[13],m}function v(e){let t=(0,h.c)(12),{placeholder:n,value:r,onChange:a,className:o}=e,c=o??`mb-4`,l;t[0]===c?l=t[1]:(l=i(`relative`,c),t[0]=c,t[1]=l);let u;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,g.jsx)(s,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground pointer-events-none`}),t[2]=u):u=t[2];let d;t[3]===a?d=t[4]:(d=e=>a(e.target.value),t[3]=a,t[4]=d);let f;t[5]!==n||t[6]!==d||t[7]!==r?(f=(0,g.jsx)(m,{placeholder:n,value:r,onChange:d,className:`pl-8`}),t[5]=n,t[6]=d,t[7]=r,t[8]=f):f=t[8];let p;return t[9]!==l||t[10]!==f?(p=(0,g.jsxs)(`div`,{className:l,children:[u,f]}),t[9]=l,t[10]=f,t[11]=p):p=t[11],p}function y(e){let t=(0,h.c)(3),{searchQuery:n,emptyLabel:a}=e,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=i(r.bodyMuted,`text-center py-8`),t[0]=o):o=t[0];let s=n.trim()?`No results for "${n}"`:a,c;return t[1]===s?c=t[2]:(c=(0,g.jsx)(`p`,{className:o,children:s}),t[1]=s,t[2]=c),c}function b(e){let t=(0,h.c)(3),{message:n}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=i(r.bodyMuted,`text-center py-8`),t[0]=a):a=t[0];let o;return t[1]===n?o=t[2]:(o=(0,g.jsx)(`p`,{className:a,children:n}),t[1]=n,t[2]=o),o}var x=`shrink-0 items-center justify-center text-muted-foreground opacity-0 pointer-events-none can-hover:group-hover:opacity-100 can-hover:group-hover:pointer-events-auto can-hover:hover:bg-destructive can-hover:hover:text-destructive-foreground transition-[opacity,color,background-color]`;function S(e){let t=(0,h.c)(19),{loading:n,items:r,emptyState:s,getKey:m,columnsClassName:v,compact:y,showHeader:b,renderContent:S,renderMiddle:C,onItemClick:w,itemClickLabel:T,onDelete:E,deleteAriaLabel:D,deleteTooltip:O}=e,k=v===void 0?`grid-cols-[minmax(0,1fr)_1.75rem]`:v,A=y===void 0?!1:y,j=b===void 0?!0:b,M;t[0]===j?M=t[1]:(M=j?(0,g.jsx)(p,{title:`Installed`}):null,t[0]=j,t[1]=M);let N;t[2]!==k||t[3]!==A||t[4]!==D||t[5]!==O||t[6]!==s||t[7]!==m||t[8]!==T||t[9]!==r||t[10]!==n||t[11]!==E||t[12]!==w||t[13]!==S||t[14]!==C?(N=n?(0,g.jsxs)(`div`,{className:`space-y-3 mb-8`,children:[(0,g.jsx)(f,{className:i(`w-full`,A?`h-9`:`h-12`)}),(0,g.jsx)(f,{className:i(`w-full`,A?`h-9`:`h-12`)})]}):r.length===0?(0,g.jsx)(_,{...s}):(0,g.jsx)(`div`,{className:`divide-y divide-table-border`,children:r.map(e=>(0,g.jsxs)(`div`,{className:i(`group grid items-center gap-3 px-3 hover:bg-muted/30`,A?`min-h-10 py-2`:`min-h-13 py-3`,k,w&&`cursor-pointer`),role:w?`button`:void 0,tabIndex:w?0:void 0,"aria-label":w?T?.(e):void 0,onClick:w?()=>w(e):void 0,onKeyDown:w?t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),w(e))}:void 0,children:[S(e),C?.(e),(0,g.jsx)(u,{children:(0,g.jsxs)(d,{children:[(0,g.jsx)(c,{asChild:!0,children:(0,g.jsx)(a,{type:`button`,variant:`ghost`,size:`icon-sm`,className:x,onClick:t=>{t.stopPropagation(),E(e)},"aria-label":D(e),children:(0,g.jsx)(o,{className:`h-4 w-4`})})}),(0,g.jsx)(l,{children:O})]})})]},m(e)))}),t[2]=k,t[3]=A,t[4]=D,t[5]=O,t[6]=s,t[7]=m,t[8]=T,t[9]=r,t[10]=n,t[11]=E,t[12]=w,t[13]=S,t[14]=C,t[15]=N):N=t[15];let P;return t[16]!==M||t[17]!==N?(P=(0,g.jsxs)(g.Fragment,{children:[M,N]}),t[16]=M,t[17]=N,t[18]=P):P=t[18],P}export{v as a,y as i,_ as n,b as o,S as r,x as t};
@@ -1,5 +1,5 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{l as i}from"./chunk-QFMPRPBF-COsSkB7x.js";import{A as a,Dt as o,P as s,j as c}from"./dist-CTLFS4dn.js";import{r as l,t as u}from"./button-kWtLAMpB.js";import{Ot as d,Pn as f,bn as p}from"./dist-c_QADQ5u.js";import{i as m,n as h,r as g,t as _}from"./tooltip-Db8UeYxm.js";import{Ar as v,Fn as y,u as b}from"./api-DX1ny6q-.js";import{r as x}from"./scroll-area-lkVMElz5.js";import{t as S}from"./use-toast-xpb5jNtN.js";import{An as C,Et as w,fr as T,vt as E}from"./index-u8UbWjXL.js";import{n as D,t as ee}from"./toggle-group-Q36wRGKA.js";var O=e(n(),1),k=t();function A(e,t){let n=[...e,t];return n.length>5e3?n.slice(n.length-a):n}function j(e,t){if(e.type!==`ping`){if(e.type===`snapshot`){t(e.entries);return}if(e.type===`cleared`){t([]);return}t(t=>A(t,e.entry))}}function te(e,t){if(t.isCancelled()||t.isAborted())return;let n=e instanceof Error?e.message:String(e);if(v(n)||t.sawSuccessfulStream){t.scheduleReconnect();return}t.setConnecting(!1),t.reportHardFailure(n),t.scheduleReconnect()}function ne(e,t,n){let r=(t+e).split(`
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{l as i}from"./chunk-QFMPRPBF-COsSkB7x.js";import{A as a,Dt as o,P as s,j as c}from"./dist-CTLFS4dn.js";import{r as l,t as u}from"./button-kWtLAMpB.js";import{Ot as d,Pn as f,bn as p}from"./dist-c_QADQ5u.js";import{i as m,n as h,r as g,t as _}from"./tooltip-Db8UeYxm.js";import{Ar as v,Fn as y,u as b}from"./api-DX1ny6q-.js";import{r as x}from"./scroll-area-lkVMElz5.js";import{t as S}from"./use-toast-xpb5jNtN.js";import{Dt as C,fr as w,jn as T,yt as E}from"./index-B3-5kIOf.js";import{n as D,t as ee}from"./toggle-group-Q36wRGKA.js";var O=e(n(),1),k=t();function A(e,t){let n=[...e,t];return n.length>5e3?n.slice(n.length-a):n}function j(e,t){if(e.type!==`ping`){if(e.type===`snapshot`){t(e.entries);return}if(e.type===`cleared`){t([]);return}t(t=>A(t,e.entry))}}function te(e,t){if(t.isCancelled()||t.isAborted())return;let n=e instanceof Error?e.message:String(e);if(v(n)||t.sawSuccessfulStream){t.scheduleReconnect();return}t.setConnecting(!1),t.reportHardFailure(n),t.scheduleReconnect()}function ne(e,t,n){let r=(t+e).split(`
2
2
  `),i=r.pop()??``;for(let e of r){let t=e.trim();if(!t)continue;let r;try{r=JSON.parse(t)}catch{continue}n(r)}return i}var M=r(),re=1e3,N=[c.INFO,c.WARN,c.ERROR],P=[...N],F=`inline-flex h-11 shrink-0 rounded-full border bg-muted/40 p-2`,I=l(o.compact,`h-7 min-w-0 rounded-full border-0 px-2.5 data-[state=on]:bg-foreground data-[state=on]:text-background data-[state=on]:shadow-sm`);function ie(e,t){return t?[e.event,e.message,R(e.level),e.data===void 0?``:z(e.data)].join(` `).toLowerCase().includes(t):!0}function L(e){let t=typeof e==`number`?e:Number(e);return t===c.DEBUG||t===c.INFO||t===c.WARN||t===c.ERROR?t:null}function R(e){let t=L(e);return t===null?String(e):s(t)}function ae(e,t){let n=L(e.level);return n!==null&&t.has(n)}function z(e){if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function B(e){switch(L(e)??e){case c.ERROR:return`text-destructive`;case c.WARN:return`text-amber-600 dark:text-amber-400`;case c.INFO:return`text-foreground`;default:return`text-muted-foreground`}}function V(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function H(e){let t=[`${e.ts} ${R(e.level)} ${e.event}`,e.message];return e.data!==void 0&&t.push(z(e.data)),t.join(`
3
3
  `)}var U=(0,O.memo)(function(e){let t=(0,k.c)(40),{entry:n,copied:r,onCopy:i}=e,a;t[0]!==n||t[1]!==i?(a=()=>i(n),t[0]=n,t[1]=i,t[2]=a):a=t[2];let o;t[3]===r?o=t[4]:(o=r?(0,M.jsx)(f,{className:`h-3.5 w-3.5 text-green-500`}):(0,M.jsx)(p,{className:`h-3.5 w-3.5`}),t[3]=r,t[4]=o);let s;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,M.jsx)(`span`,{className:`sr-only`,children:`Copy log entry`}),t[5]=s):s=t[5];let c;t[6]!==a||t[7]!==o?(c=(0,M.jsx)(m,{asChild:!0,children:(0,M.jsxs)(`button`,{type:`button`,onClick:a,className:`flex h-7 w-7 items-center justify-center rounded-md border border-border bg-background/90 text-foreground shadow-sm hover:bg-background`,children:[o,s]})}),t[6]=a,t[7]=o,t[8]=c):c=t[8];let u=r?`Copied!`:`Copy to clipboard`,d;t[9]===u?d=t[10]:(d=(0,M.jsx)(h,{children:u}),t[9]=u,t[10]=d);let g;t[11]!==c||t[12]!==d?(g=(0,M.jsx)(`div`,{className:`absolute top-2 right-2 opacity-0 transition-opacity group-hover:opacity-100 focus-within:opacity-100`,children:(0,M.jsxs)(_,{children:[c,d]})}),t[11]=c,t[12]=d,t[13]=g):g=t[13];let v;t[14]===n.ts?v=t[15]:(v=V(n.ts),t[14]=n.ts,t[15]=v);let y;t[16]===v?y=t[17]:(y=(0,M.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:v}),t[16]=v,t[17]=y);let b;t[18]===n.level?b=t[19]:(b=l(`font-semibold`,B(n.level)),t[18]=n.level,t[19]=b);let x;t[20]===n.level?x=t[21]:(x=R(n.level),t[20]=n.level,t[21]=x);let S;t[22]!==b||t[23]!==x?(S=(0,M.jsx)(`span`,{className:b,children:x}),t[22]=b,t[23]=x,t[24]=S):S=t[24];let C;t[25]===n.event?C=t[26]:(C=(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:n.event}),t[25]=n.event,t[26]=C);let w;t[27]!==S||t[28]!==C||t[29]!==y?(w=(0,M.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2 gap-y-0.5`,children:[y,S,C]}),t[27]=S,t[28]=C,t[29]=y,t[30]=w):w=t[30];let T;t[31]===n.message?T=t[32]:(T=(0,M.jsx)(`p`,{className:`mt-0.5 whitespace-pre-wrap break-words text-foreground`,children:n.message}),t[31]=n.message,t[32]=T);let E;t[33]===n.data?E=t[34]:(E=n.data===void 0?null:(0,M.jsx)(`pre`,{className:`mt-1 max-h-40 overflow-auto whitespace-pre-wrap break-words text-muted-foreground`,children:z(n.data)}),t[33]=n.data,t[34]=E);let D;return t[35]!==w||t[36]!==T||t[37]!==E||t[38]!==g?(D=(0,M.jsxs)(`li`,{className:`group relative min-w-0 px-3 py-2 pr-10 hover:bg-muted/40 select-text`,children:[g,w,T,E]}),t[35]=w,t[36]=T,t[37]=E,t[38]=g,t[39]=D):D=t[39],D});function W(){let[e]=i(),t=e.get(`q`)??``,[n,r]=(0,O.useState)([]),[a,c]=(0,O.useState)(t),[v,k]=(0,O.useState)(P),[A,L]=(0,O.useState)(!0),[R,z]=(0,O.useState)(!1),[B,V]=(0,O.useState)(null),[W,G]=(0,O.useState)(!1),[K,q]=(0,O.useState)(null),J=(0,O.useRef)(null),Y=(0,O.useRef)(null);(0,O.useEffect)(()=>{t&&c(t)},[t]),(0,O.useEffect)(()=>{let e=!1,t=null,n=null,i=new AbortController,a=!1,o=!1;function s(){e||n||(L(!0),n=setTimeout(()=>{n=null,u()},re))}function c(e){j(e,r)}function l(t){te(t,{isCancelled:()=>e,isAborted:()=>i.signal.aborted,sawSuccessfulStream:a,scheduleReconnect:s,setConnecting:L,reportHardFailure:e=>{o||(o=!0,S({title:`Failed to connect to log feed`,description:e,variant:`destructive`}))}})}async function u(){if(!e){L(!0);try{let n=await y({signal:i.signal});if(!n||e){n&&e&&n.cancel().catch(()=>{});return}t=n.getReader();let r=new TextDecoder,o=``;for(a=!0,L(!1);!e;){let{done:e,value:n}=await t.read();if(e)break;o=ne(r.decode(n,{stream:!0}),o,c)}e||s()}catch(e){l(e)}}}return u(),()=>{e=!0,i.abort(),n&&clearTimeout(n),t?.cancel().catch(()=>{})}},[]),(0,O.useEffect)(()=>()=>{J.current&&clearTimeout(J.current),Y.current&&clearTimeout(Y.current)},[]);let X=(0,O.useCallback)(async e=>{try{await navigator.clipboard.writeText(H(e)),V(e.id),J.current&&clearTimeout(J.current),J.current=setTimeout(()=>{V(null),J.current=null},1500)}catch(e){S({title:`Failed to copy log entry`,description:e instanceof Error?e.message:String(e),variant:`destructive`})}},[]);async function oe(e){if(e.length!==0)try{await navigator.clipboard.writeText(e.map(e=>H(e)).join(`
4
4
 
5
- `)),G(!0),Y.current&&clearTimeout(Y.current),Y.current=setTimeout(()=>{G(!1),Y.current=null},1500)}catch(e){S({title:`Failed to copy logs`,description:e instanceof Error?e.message:String(e),variant:`destructive`})}}async function se(){z(!0);try{await b()}catch(e){S({title:`Failed to clear logs`,description:e instanceof Error?e.message:String(e),variant:`destructive`})}finally{z(!1)}}let Z=a.trim().toLowerCase(),ce=new Set(v),Q=n.filter(e=>ae(e,ce)&&ie(e,Z)),le=(0,O.useCallback)((e,t)=>(0,M.jsx)(U,{entry:t,copied:B===t.id,onCopy:X}),[B,X]);function $(){return v.length===0?`No log levels selected.`:Z?`No logs match this search.`:n.length===0?`No logs in the buffer yet.`:`No logs match the selected levels.`}return(0,M.jsx)(`div`,{className:`flex h-full min-h-0 w-full min-w-0 flex-1 flex-col`,children:(0,M.jsxs)(w,{className:`flex w-full max-w-none min-w-0 min-h-0 flex-1 flex-col pb-0 pt-0`,children:[(0,M.jsx)(E,{title:`Logs`,description:`Live in memory feed of events`,action:(0,M.jsx)(u,{type:`button`,onClick:()=>void se(),disabled:R||n.length===0,children:R?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(d,{className:`mr-2 h-4 w-4 animate-spin`}),`Clearing...`]}):`Clear`})}),(0,M.jsxs)(`div`,{className:`mb-4 mt-4 flex w-full min-w-0 items-center gap-3 electrobun-webkit-app-region-no-drag`,children:[(0,M.jsx)(T,{value:a,onChange:e=>c(e.target.value),placeholder:`Search`,className:`min-w-0 flex-1`,"aria-label":`Search logs`}),(0,M.jsx)(ee,{type:`multiple`,value:v.map(e=>s(e)),onValueChange:e=>{k(N.filter(t=>e.includes(s(t))))},"aria-label":`Log levels`,variant:`outline`,size:`sm`,className:F,children:N.map(e=>(0,M.jsx)(D,{value:s(e),"aria-label":s(e),className:I,children:s(e)},e))}),(0,M.jsx)(g,{children:(0,M.jsxs)(_,{children:[(0,M.jsx)(m,{asChild:!0,children:(0,M.jsxs)(u,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,onClick:()=>void oe(Q),disabled:Q.length===0,children:[W?(0,M.jsx)(f,{className:`h-3.5 w-3.5 text-green-500`}):(0,M.jsx)(p,{className:`h-3.5 w-3.5`}),(0,M.jsx)(`span`,{className:`sr-only`,children:`Copy visible logs`})]})}),(0,M.jsx)(h,{children:W?`Copied!`:`Copy visible logs to clipboard`})]})})]}),(0,M.jsx)(x,{viewportRef:q,className:`mb-6 w-full min-h-0 min-w-0 flex-1 rounded-md border bg-background font-mono text-xs`,children:A&&n.length===0?(0,M.jsxs)(`div`,{className:`flex items-center gap-2 p-4 text-muted-foreground`,children:[(0,M.jsx)(d,{className:`h-4 w-4 animate-spin`}),`Connecting…`]}):Q.length===0?(0,M.jsx)(`p`,{className:l(o.bodyMuted,`p-4 font-sans`),children:$()}):(0,M.jsx)(g,{children:(0,M.jsx)(C,{data:Q,computeItemKey:(e,t)=>t.id,customScrollParent:K??void 0,itemContent:le,followOutput:e=>e?`auto`:!1,overscan:500,className:`w-full min-w-0`})})})]})})}export{W as default};
5
+ `)),G(!0),Y.current&&clearTimeout(Y.current),Y.current=setTimeout(()=>{G(!1),Y.current=null},1500)}catch(e){S({title:`Failed to copy logs`,description:e instanceof Error?e.message:String(e),variant:`destructive`})}}async function se(){z(!0);try{await b()}catch(e){S({title:`Failed to clear logs`,description:e instanceof Error?e.message:String(e),variant:`destructive`})}finally{z(!1)}}let Z=a.trim().toLowerCase(),ce=new Set(v),Q=n.filter(e=>ae(e,ce)&&ie(e,Z)),le=(0,O.useCallback)((e,t)=>(0,M.jsx)(U,{entry:t,copied:B===t.id,onCopy:X}),[B,X]);function $(){return v.length===0?`No log levels selected.`:Z?`No logs match this search.`:n.length===0?`No logs in the buffer yet.`:`No logs match the selected levels.`}return(0,M.jsx)(`div`,{className:`flex h-full min-h-0 w-full min-w-0 flex-1 flex-col`,children:(0,M.jsxs)(C,{className:`flex w-full max-w-none min-w-0 min-h-0 flex-1 flex-col pb-0 pt-0`,children:[(0,M.jsx)(E,{title:`Logs`,description:`Live in memory feed of events`,action:(0,M.jsx)(u,{type:`button`,onClick:()=>void se(),disabled:R||n.length===0,children:R?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(d,{className:`mr-2 h-4 w-4 animate-spin`}),`Clearing...`]}):`Clear`})}),(0,M.jsxs)(`div`,{className:`mb-4 mt-4 flex w-full min-w-0 items-center gap-3 electrobun-webkit-app-region-no-drag`,children:[(0,M.jsx)(w,{value:a,onChange:e=>c(e.target.value),placeholder:`Search`,className:`min-w-0 flex-1`,"aria-label":`Search logs`}),(0,M.jsx)(ee,{type:`multiple`,value:v.map(e=>s(e)),onValueChange:e=>{k(N.filter(t=>e.includes(s(t))))},"aria-label":`Log levels`,variant:`outline`,size:`sm`,className:F,children:N.map(e=>(0,M.jsx)(D,{value:s(e),"aria-label":s(e),className:I,children:s(e)},e))}),(0,M.jsx)(g,{children:(0,M.jsxs)(_,{children:[(0,M.jsx)(m,{asChild:!0,children:(0,M.jsxs)(u,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8 shrink-0`,onClick:()=>void oe(Q),disabled:Q.length===0,children:[W?(0,M.jsx)(f,{className:`h-3.5 w-3.5 text-green-500`}):(0,M.jsx)(p,{className:`h-3.5 w-3.5`}),(0,M.jsx)(`span`,{className:`sr-only`,children:`Copy visible logs`})]})}),(0,M.jsx)(h,{children:W?`Copied!`:`Copy visible logs to clipboard`})]})})]}),(0,M.jsx)(x,{viewportRef:q,className:`mb-6 w-full min-h-0 min-w-0 flex-1 rounded-md border bg-background font-mono text-xs`,children:A&&n.length===0?(0,M.jsxs)(`div`,{className:`flex items-center gap-2 p-4 text-muted-foreground`,children:[(0,M.jsx)(d,{className:`h-4 w-4 animate-spin`}),`Connecting…`]}):Q.length===0?(0,M.jsx)(`p`,{className:l(o.bodyMuted,`p-4 font-sans`),children:$()}):(0,M.jsx)(g,{children:(0,M.jsx)(T,{data:Q,computeItemKey:(e,t)=>t.id,customScrollParent:K??void 0,itemContent:le,followOutput:e=>e?`auto`:!1,overscan:500,className:`w-full min-w-0`})})})]})})}export{W as default};
@@ -0,0 +1,5 @@
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{Dt as i}from"./dist-CTLFS4dn.js";import{r as a}from"./store-BSzKIu5G.js";import{d as o,r as s,t as c}from"./button-kWtLAMpB.js";import{$ as l,D as u,G as d,Nn as f,Pn as p,ct as m,fn as h,g,h as _,rt as v,t as y,u as b,y as x}from"./dist-c_QADQ5u.js";import{t as S}from"./dist-DoxvnNEY.js";import{i as C,n as ee,r as w,t as T}from"./tooltip-Db8UeYxm.js";import{Qt as E,ft as D,i as O,mn as k}from"./api-DX1ny6q-.js";import{t as A}from"./use-toast-xpb5jNtN.js";import{n as j}from"./explorer-tab-context-BxUVwWQQ.js";import{t as M}from"./dist-CSssbxDI.js";import{$n as N,At as P,C as F,Ct as I,D as L,Dt as R,E as z,Et as B,Ft as V,It as H,Jn as U,Ln as te,Mt as W,Nt as ne,Qn as G,S as K,T as re,Xn as q,Zn as J,_t as Y,cr as ie,fr as X,gt as ae,ir as oe,jt as se,kt as ce,lr as le,mr as ue,or as de,pr as fe,rr as pe,sr as me,tr as he,ur as ge,w as _e,yt as ve}from"./index-B3-5kIOf.js";import{t as ye}from"./delete-confirm-dialog-Dl76vaxb.js";import{t as be}from"./use-settings-page-loading-BTySlInF.js";import{n as xe}from"./settings-list-DiiYzOxn.js";var Z=t(),Q=e(n(),1),$=r(),Se=`Switch`,[Ce,we]=_(Se),[Te,Ee]=Ce(Se),De=Q.forwardRef((e,t)=>{let{__scopeSwitch:n,name:r,checked:i,defaultChecked:a,required:s,disabled:c,value:l=`on`,onCheckedChange:u,form:d,...f}=e,[p,m]=Q.useState(null),h=o(t,e=>m(e)),_=Q.useRef(!1),v=p?d||!!p.closest(`form`):!0,[x,S]=y({prop:i,defaultProp:a??!1,onChange:u,caller:Se});return(0,$.jsxs)(Te,{scope:n,checked:x,disabled:c,children:[(0,$.jsx)(b.button,{type:`button`,role:`switch`,"aria-checked":x,"aria-required":s,"data-state":Me(x),"data-disabled":c?``:void 0,disabled:c,value:l,...f,ref:h,onClick:g(e.onClick,e=>{S(e=>!e),v&&(_.current=e.isPropagationStopped(),_.current||e.stopPropagation())})}),v&&(0,$.jsx)(je,{control:p,bubbles:!_.current,name:r,value:l,checked:x,required:s,disabled:c,form:d,style:{transform:`translateX(-100%)`}})]})});De.displayName=Se;var Oe=`SwitchThumb`,ke=Q.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=Ee(Oe,n);return(0,$.jsx)(b.span,{"data-state":Me(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});ke.displayName=Oe;var Ae=`SwitchBubbleInput`,je=Q.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:r=!0,...i},a)=>{let s=Q.useRef(null),c=o(s,a),l=M(n),u=S(t);return Q.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,$.jsx)(`input`,{type:`checkbox`,"aria-hidden":!0,defaultChecked:n,...i,tabIndex:-1,ref:c,style:{...i.style,...u,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});je.displayName=Ae;function Me(e){return e?`checked`:`unchecked`}var Ne=De,Pe=ke,Fe=Q.forwardRef((e,t)=>{let n=(0,Z.c)(10),r,i;n[0]===e?(r=n[1],i=n[2]):({className:r,...i}=e,n[0]=e,n[1]=r,n[2]=i);let a;n[3]===r?a=n[4]:(a=s(`peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input`,r),n[3]=r,n[4]=a);let o;n[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,$.jsx)(Pe,{className:s(`pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0`)}),n[5]=o):o=n[5];let c;return n[6]!==i||n[7]!==t||n[8]!==a?(c=(0,$.jsx)(Ne,{className:a,...i,ref:t,children:o}),n[6]=i,n[7]=t,n[8]=a,n[9]=c):c=n[9],c});Fe.displayName=Ne.displayName;var Ie={key:``,value:``},Le={serverType:`local`,name:``,command:``,argsText:``,serverUrl:``,transport:`sse`,oauthClientId:``,oauthClientSecret:``,oauthCallbackPort:``,defer:!0},Re=[e=>e.name,e=>e.command,e=>e.argsText,e=>e.serverUrl,e=>e.oauthClientId,e=>e.oauthClientSecret,e=>e.oauthCallbackPort];function ze(e,t){return e??t}function Be(e){return e?.url?`remote`:`local`}function Ve(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:t}))}function He(e){let t={};for(let{key:n,value:r}of e)n.trim()&&(t[n.trim()]=r);return Object.keys(t).length>0?t:void 0}function Ue(e){return(e??[]).join(`
2
+ `)}function We(e){return e.split(`
3
+ `).map(e=>e.trim()).filter(Boolean)}function Ge(e){return e===void 0?``:String(e)}function Ke(e){return{oauthClientId:ze(e?.clientId,``),oauthClientSecret:ze(e?.clientSecret,``),oauthCallbackPort:Ge(e?.callbackPort)}}function qe(e,t){return{...Le,name:e,serverType:Be(t),command:ze(t.command,``),argsText:Ue(t.args),serverUrl:ze(t.url,``),transport:ze(t.transport,`sse`),...Ke(t.oauth),defer:t.defer!==!1}}function Je(e,t,n){return JSON.stringify({name:e,type:t,config:n})}function Ye(e){if(!e)return;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0?t:void 0}function Xe(e){let t={};for(let[n,r]of Object.entries(e))r!==``&&r!==void 0&&(t[n]=r);return t}function Ze(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t}function Qe(e,t,n){return e!==``||t!==``||n!==void 0}function $e(e){let t=e.oauthClientId.trim(),n=e.oauthClientSecret.trim(),r=Ye(e.oauthCallbackPort.trim());if(!Qe(t,n,r))return;let i=Xe({clientId:t,clientSecret:n,callbackPort:r});if(Object.keys(i).length!==0)return i}function et(e,t,n){return Ze({url:e.serverUrl.trim(),transport:e.transport,headers:He(n),env:He(t),oauth:$e(e),defer:e.defer?void 0:!1})}function tt(e,t){return Ze({command:e.command.trim(),args:We(e.argsText),env:He(t),defer:e.defer?void 0:!1})}function nt(e,t,n){return e.serverType===`remote`?et(e,t,n):tt(e,t)}function rt(e){let t=e.trim();if(!t)return`Server URL is required`;try{new URL(t)}catch{return`Server URL must be a valid URL`}return null}function it(e){if(!e.trim())return null;let t=Number.parseInt(e.trim(),10);return Number.isInteger(t)&&t>0?null:`OAuth callback port must be a positive integer`}function at(e){return e.oauthClientSecret.trim()&&!e.oauthClientId.trim()?`OAuth client ID is required when a client secret is set`:null}function ot(e){return rt(e.serverUrl)??it(e.oauthCallbackPort)??at(e)}function st(e){return e.trim()?null:`Command is required`}function ct(e,t){return t.name.trim()?e===`remote`?ot(t):st(t.command):`Server name is required`}function lt(e,t,n){return Re.some(t=>t(e).trim()!==``)||t.length>0||n.length>0||!e.defer}function ut(e){return e.isEditing?e.currentSnapshot!==e.originalSnapshot:lt(e.form,e.envEntries,e.headerEntries)}function dt(e){if(e.isEditing&&e.serverName)return e.installedServers.find(t=>t.name===e.serverName);if(e.initialConfig)return{name:ze(e.initialName,``),config:e.initialConfig}}function ft(e,t){return e instanceof Error?e.message:t}function pt(e,t){return e?t?`Saving...`:`Adding...`:t?`Save`:`Add`}function mt(e,t){return e?`MCP server saved · ${F(t.catalog)}`:`MCP server added · ${F(t.catalog)}`}function ht(e,t){return{title:e?t:`Add MCP Server`,description:e?`Edit MCP Server configuration.`:`Configure a new MCP Server.`}}function gt(){let e=(0,Z.c)(7),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={env:[],header:[]},e[0]=t):t=e[0];let[n,r]=(0,Q.useState)(t),i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=function(e,t){r(n=>({...n,[e]:t(n[e])}))},e[1]=i):i=e[1];let a=i,o;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=function(e){a(e,_t)},e[2]=o):o=e[2];let s=o,c;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=function(e,t){a(e,e=>e.filter((e,n)=>n!==t))},e[3]=c):c=e[3];let l=c,u;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(u=function(e,t,n){a(e,e=>e.map((e,r)=>r===t?{...e,...n}:e))},e[4]=u):u=e[4];let d=u,f;return e[5]===n?f=e[6]:(f={lists:n,setEntryLists:r,addEntry:s,removeEntry:l,updateEntry:d},e[5]=n,e[6]=f),f}function _t(e){return[...e,Ie]}function vt(e){async function t(){if(!e.projectPath)throw Error(`No project path`);let t=await re(e.projectPath,e.originalName||e.form.name.trim(),nt(e.form,e.envEntries,e.headerEntries));A({title:`Success`,description:mt(e.isEditing,t)}),e.onBack()}async function n(){e.setError(null);let n=ct(e.form.serverType,e.form);if(n){e.setError(n);return}e.setSaving(!0);try{await t()}catch(t){e.setError(ft(t,`Failed to save server`))}finally{e.setSaving(!1)}}async function r(){if(e.projectPath){e.setDeleting(!0);try{await K(e.projectPath,e.originalName),A({title:`Success`,description:`MCP server removed`}),e.onBack()}catch(t){e.setError(ft(t,`Failed to delete server`))}finally{e.setDeleting(!1)}}}return{handleSave:n,handleDelete:r}}function yt(e){let{installedServers:t}=L(e.projectPath),n=!!e.serverName,[r,i]=(0,Q.useState)(Le),{lists:a,setEntryLists:o,addEntry:s,removeEntry:c,updateEntry:l}=gt(),[u,d]=(0,Q.useState)({name:``,snapshot:``}),[f,p]=(0,Q.useState)(!1),[m,h]=(0,Q.useState)(!1),[g,_]=(0,Q.useState)(null),[v,y]=(0,Q.useState)(n);(0,Q.useEffect)(()=>{let r=dt({isEditing:n,serverName:e.serverName,initialName:e.initialName,initialConfig:e.initialConfig,installedServers:t});r&&(i(qe(r.name,r.config)),o({env:Ve(r.config.env),header:Ve(r.config.headers)}),d({name:r.name,snapshot:Je(r.name,Be(r.config),r.config)})),(!n||r)&&y(!1)},[t,e.serverName,e.initialName,e.initialConfig,o,n]);function b(e){i(t=>({...t,...e}))}return{form:r,patchForm:b,lists:a,addEntry:s,removeEntry:c,updateEntry:l,original:u,saving:f,deleting:m,error:g,loading:v,actions:vt({projectPath:e.projectPath,isEditing:n,form:r,envEntries:a.env,headerEntries:a.header,originalName:u.name,onBack:e.onBack,setError:_,setSaving:p,setDeleting:h})}}function bt(){let e=(0,Z.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,$.jsx)(`p`,{className:i.bodyMuted,children:`Loading server configuration...`})}),e[0]=t):t=e[0],t}function xt(e){let t=(0,Z.c)(9),{isEditing:n,name:r,onNameChange:i}=e,a=n?`Server name cannot be changed`:void 0,o;t[0]===i?o=t[1]:(o=e=>i(e.target.value),t[0]=i,t[1]=o);let s;t[2]!==n||t[3]!==r||t[4]!==o?(s=(0,$.jsx)(X,{id:`server-name`,placeholder:`e.g. filesystem`,value:r,onChange:o,disabled:n}),t[2]=n,t[3]=r,t[4]=o,t[5]=s):s=t[5];let c;return t[6]!==a||t[7]!==s?(c=(0,$.jsx)(Y,{title:`Server name`,description:a,controlLayout:`stack`,className:`pt-6`,children:s}),t[6]=a,t[7]=s,t[8]=c):c=t[8],c}function St(e){let t=(0,Z.c)(13),{form:n,onFormChange:r}=e,i;t[0]===r?i=t[1]:(i=e=>r({command:e.target.value}),t[0]=r,t[1]=i);let a;t[2]!==n.command||t[3]!==i?(a=(0,$.jsx)(Y,{title:`Command`,controlLayout:`stack`,className:`pt-6`,children:(0,$.jsx)(X,{id:`server-command`,placeholder:`e.g. npx`,value:n.command,onChange:i})}),t[2]=n.command,t[3]=i,t[4]=a):a=t[4];let o;t[5]===r?o=t[6]:(o=e=>r({argsText:e.target.value}),t[5]=r,t[6]=o);let s;t[7]!==n.argsText||t[8]!==o?(s=(0,$.jsx)(Y,{title:`Arguments`,description:`One argument per line`,controlLayout:`stack`,className:`pt-6`,children:(0,$.jsx)(U,{id:`server-args`,placeholder:`-y
4
+ @modelcontextprotocol/server-filesystem
5
+ /path/to/dir`,value:n.argsText,onChange:o,className:`font-mono min-h-[80px] resize-none`})}),t[7]=n.argsText,t[8]=o,t[9]=s):s=t[9];let c;return t[10]!==a||t[11]!==s?(c=(0,$.jsxs)($.Fragment,{children:[a,s]}),t[10]=a,t[11]=s,t[12]=c):c=t[12],c}function Ct(e){let t=(0,Z.c)(19),{form:n,onFormChange:r}=e,i;t[0]===r?i=t[1]:(i=e=>r({oauthClientId:e.target.value}),t[0]=r,t[1]=i);let a;t[2]!==n.oauthClientId||t[3]!==i?(a=(0,$.jsx)(X,{id:`oauth-client-id`,placeholder:`Client ID`,value:n.oauthClientId,onChange:i,className:`font-mono`}),t[2]=n.oauthClientId,t[3]=i,t[4]=a):a=t[4];let o;t[5]===r?o=t[6]:(o=e=>r({oauthClientSecret:e.target.value}),t[5]=r,t[6]=o);let s;t[7]!==n.oauthClientSecret||t[8]!==o?(s=(0,$.jsx)(X,{id:`oauth-client-secret`,placeholder:`Client secret`,type:`password`,value:n.oauthClientSecret,onChange:o,className:`font-mono`}),t[7]=n.oauthClientSecret,t[8]=o,t[9]=s):s=t[9];let c;t[10]===r?c=t[11]:(c=e=>r({oauthCallbackPort:e.target.value}),t[10]=r,t[11]=c);let l;t[12]!==n.oauthCallbackPort||t[13]!==c?(l=(0,$.jsx)(X,{id:`oauth-callback-port`,placeholder:`Callback port (e.g. 3118)`,value:n.oauthCallbackPort,onChange:c,className:`font-mono`}),t[12]=n.oauthCallbackPort,t[13]=c,t[14]=l):l=t[14];let u;return t[15]!==a||t[16]!==s||t[17]!==l?(u=(0,$.jsx)(Y,{title:`OAuth client`,description:`Required for servers without dynamic client registration (e.g. GitHub Copilot MCP). Create an OAuth App, set callback to http://localhost:<port>/callback, then Sign in.`,controlLayout:`stack`,className:`pt-6`,children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[a,s,l]})}),t[15]=a,t[16]=s,t[17]=l,t[18]=u):u=t[18],u}function wt(e){let t=(0,Z.c)(15),{entries:n,emptyMessage:r,keyPlaceholder:a,valuePlaceholder:o,onUpdate:s,onRemove:l}=e;if(n.length===0){let e;return t[0]===r?e=t[1]:(e=(0,$.jsx)(`p`,{className:i.caption,children:r}),t[0]=r,t[1]=e),e}let u;if(t[2]!==n||t[3]!==a||t[4]!==l||t[5]!==s||t[6]!==o){let e;t[8]!==a||t[9]!==l||t[10]!==s||t[11]!==o?(e=(e,t)=>(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(X,{placeholder:a,value:e.key,onChange:e=>s(t,{key:e.target.value}),className:`font-mono w-[35%]`}),(0,$.jsx)(X,{placeholder:o,value:e.value,onChange:e=>s(t,{value:e.target.value}),className:`font-mono flex-1`}),(0,$.jsx)(c,{variant:`ghost`,size:`icon`,onClick:()=>l(t),className:`h-9 w-9 flex-shrink-0`,children:(0,$.jsx)(x,{className:`h-3.5 w-3.5`})})]},t),t[8]=a,t[9]=l,t[10]=s,t[11]=o,t[12]=e):e=t[12],u=n.map(e),t[2]=n,t[3]=a,t[4]=l,t[5]=s,t[6]=o,t[7]=u}else u=t[7];let d;return t[13]===u?d=t[14]:(d=(0,$.jsx)(`div`,{className:`flex flex-col gap-2`,children:u}),t[13]=u,t[14]=d),d}function Tt(e){let t=(0,Z.c)(16),{title:n,description:r,actionLabel:i,emptyMessage:a,keyPlaceholder:o,valuePlaceholder:s,entries:l,onAdd:u,onRemove:d,onUpdate:f}=e,p;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,$.jsx)(v,{className:`h-3 w-3 mr-1`}),t[0]=p):p=t[0];let m;t[1]!==i||t[2]!==u?(m=(0,$.jsxs)(c,{variant:`ghost`,size:`sm`,onClick:u,children:[p,i]}),t[1]=i,t[2]=u,t[3]=m):m=t[3];let h;t[4]!==a||t[5]!==l||t[6]!==o||t[7]!==d||t[8]!==f||t[9]!==s?(h=(0,$.jsx)(wt,{entries:l,emptyMessage:a,keyPlaceholder:o,valuePlaceholder:s,onUpdate:f,onRemove:d}),t[4]=a,t[5]=l,t[6]=o,t[7]=d,t[8]=f,t[9]=s,t[10]=h):h=t[10];let g;return t[11]!==r||t[12]!==m||t[13]!==h||t[14]!==n?(g=(0,$.jsx)(Y,{title:n,description:r,controlLayout:`stack`,className:`pt-6`,action:m,children:h}),t[11]=r,t[12]=m,t[13]=h,t[14]=n,t[15]=g):g=t[15],g}function Et(e){let t=(0,Z.c)(6),{serverType:n,entries:r,onAdd:i,onRemove:a,onUpdate:o}=e,s=n===`remote`?`Optional metadata for local tooling.`:void 0,c;return t[0]!==r||t[1]!==i||t[2]!==a||t[3]!==o||t[4]!==s?(c=(0,$.jsx)(Tt,{title:`Environment variables`,description:s,actionLabel:`Add variable`,emptyMessage:`No environment variables configured`,keyPlaceholder:`KEY`,valuePlaceholder:`value`,entries:r,onAdd:i,onRemove:a,onUpdate:o}),t[0]=r,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=c):c=t[5],c}function Dt(e){let t=(0,Z.c)(6),{defer:n,onDeferChange:r}=e,i=n?`Tool definitions load on demand via tool_search to keep the initial prompt small.`:`Tool definitions are always injected into the initial prompt, even when not used. Useful when this server's tools are needed in nearly every conversation, but they consume context.`,a;t[0]!==n||t[1]!==r?(a=(0,$.jsx)(Fe,{id:`defer-tools`,checked:n,onCheckedChange:r,"aria-label":`Deferred`}),t[0]=n,t[1]=r,t[2]=a):a=t[2];let o;return t[3]!==i||t[4]!==a?(o=(0,$.jsx)(Y,{title:`Deferred`,description:i,controlLayout:`stack`,className:`pt-6`,action:a}),t[3]=i,t[4]=a,t[5]=o):o=t[5],o}function Ot(e){let t=(0,Z.c)(25),{form:n,onFormChange:r,headerEntries:i,onHeaderAdd:a,onHeaderRemove:o,onHeaderUpdate:s}=e,c;t[0]===r?c=t[1]:(c=e=>r({serverUrl:e.target.value}),t[0]=r,t[1]=c);let l;t[2]!==n.serverUrl||t[3]!==c?(l=(0,$.jsx)(Y,{title:`Server URL`,description:`Paste the MCP endpoint URL from your provider.`,controlLayout:`stack`,className:`pt-6`,children:(0,$.jsx)(X,{id:`server-url`,placeholder:`https://example.com/mcp`,value:n.serverUrl,onChange:c,className:`font-mono`})}),t[2]=n.serverUrl,t[3]=c,t[4]=l):l=t[4];let u;t[5]===r?u=t[6]:(u=e=>r({transport:e}),t[5]=r,t[6]=u);let d;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,$.jsx)(V,{children:(0,$.jsx)(H,{})}),t[7]=d):d=t[7];let f;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,$.jsxs)(W,{children:[(0,$.jsx)(ne,{value:`sse`,children:`SSE (Server-Sent Events)`}),(0,$.jsx)(ne,{value:`streamableHttp`,children:`Streamable HTTP`})]}),t[8]=f):f=t[8];let p;t[9]!==n.transport||t[10]!==u?(p=(0,$.jsx)(Y,{title:`Transport`,controlLayout:`stack`,className:`pt-6`,children:(0,$.jsxs)(se,{value:n.transport,onValueChange:u,children:[d,f]})}),t[9]=n.transport,t[10]=u,t[11]=p):p=t[11];let m;t[12]!==n||t[13]!==r?(m=(0,$.jsx)(Ct,{form:n,onFormChange:r}),t[12]=n,t[13]=r,t[14]=m):m=t[14];let h;t[15]!==i||t[16]!==a||t[17]!==o||t[18]!==s?(h=(0,$.jsx)(Tt,{title:`HTTP headers`,description:`Optional headers for authentication.`,actionLabel:`Add header`,emptyMessage:`No headers configured`,keyPlaceholder:`Authorization`,valuePlaceholder:`Bearer ...`,entries:i,onAdd:a,onRemove:o,onUpdate:s}),t[15]=i,t[16]=a,t[17]=o,t[18]=s,t[19]=h):h=t[19];let g;return t[20]!==l||t[21]!==p||t[22]!==m||t[23]!==h?(g=(0,$.jsxs)($.Fragment,{children:[l,p,m,h]}),t[20]=l,t[21]=p,t[22]=m,t[23]=h,t[24]=g):g=t[24],g}function kt(e){let t=(0,Z.c)(18),{form:n,onFormChange:r,headerEntries:i,onHeaderAdd:a,onHeaderRemove:o,onHeaderUpdate:s}=e,c;t[0]===r?c=t[1]:(c=e=>r({serverType:e}),t[0]=r,t[1]=c);let l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsxs)(G,{className:`grid w-full grid-cols-2`,children:[(0,$.jsx)(N,{value:`local`,children:`Local (stdio)`}),(0,$.jsx)(N,{value:`remote`,children:`Remote (HTTP/SSE)`})]}),t[2]=l):l=t[2];let u;t[3]!==n||t[4]!==r?(u=(0,$.jsx)(J,{value:`local`,children:(0,$.jsx)(St,{form:n,onFormChange:r})}),t[3]=n,t[4]=r,t[5]=u):u=t[5];let d;t[6]!==n||t[7]!==i||t[8]!==r||t[9]!==a||t[10]!==o||t[11]!==s?(d=(0,$.jsx)(J,{value:`remote`,children:(0,$.jsx)(Ot,{form:n,onFormChange:r,headerEntries:i,onHeaderAdd:a,onHeaderRemove:o,onHeaderUpdate:s})}),t[6]=n,t[7]=i,t[8]=r,t[9]=a,t[10]=o,t[11]=s,t[12]=d):d=t[12];let f;return t[13]!==n.serverType||t[14]!==c||t[15]!==u||t[16]!==d?(f=(0,$.jsxs)(q,{value:n.serverType,onValueChange:c,className:`w-full pt-6`,children:[l,u,d]}),t[13]=n.serverType,t[14]=c,t[15]=u,t[16]=d,t[17]=f):f=t[17],f}function At(e){let t=(0,Z.c)(5),{isEditing:n,busy:r,deleting:i,onDelete:a}=e;if(!n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`div`,{}),t[0]=e):e=t[0],e}let o=i?`Removing...`:`Remove`,s;return t[1]!==r||t[2]!==a||t[3]!==o?(s=(0,$.jsx)(c,{variant:`destructive`,onClick:a,disabled:r,children:o}),t[1]=r,t[2]=a,t[3]=o,t[4]=s):s=t[4],s}function jt(e){let t=(0,Z.c)(7),{busy:n,hasChanges:r,saving:i,isEditing:a,onSave:o}=e,s=n||!r,l;t[0]!==a||t[1]!==i?(l=pt(i,a),t[0]=a,t[1]=i,t[2]=l):l=t[2];let u;return t[3]!==o||t[4]!==s||t[5]!==l?(u=(0,$.jsx)(c,{onClick:o,disabled:s,children:l}),t[3]=o,t[4]=s,t[5]=l,t[6]=u):u=t[6],u}function Mt(e){let t=(0,Z.c)(14),{isEditing:n,busy:r,saving:i,deleting:a,hasChanges:o,onSave:s,onDelete:c}=e,l;t[0]!==r||t[1]!==a||t[2]!==n||t[3]!==c?(l=(0,$.jsx)(At,{isEditing:n,busy:r,deleting:a,onDelete:c}),t[0]=r,t[1]=a,t[2]=n,t[3]=c,t[4]=l):l=t[4];let u;t[5]!==r||t[6]!==o||t[7]!==n||t[8]!==s||t[9]!==i?(u=(0,$.jsx)(jt,{busy:r,hasChanges:o,saving:i,isEditing:n,onSave:s}),t[5]=r,t[6]=o,t[7]=n,t[8]=s,t[9]=i,t[10]=u):u=t[10];let d;return t[11]!==l||t[12]!==u?(d=(0,$.jsxs)(`div`,{className:`mt-6 border-t pt-4 flex items-center justify-between`,children:[l,u]}),t[11]=l,t[12]=u,t[13]=d):d=t[13],d}function Nt(e){let t=(0,Z.c)(74),{projectPath:n,serverName:r,initialName:a,initialConfig:o,onBack:s}=e,c;t[0]!==o||t[1]!==a||t[2]!==s||t[3]!==n||t[4]!==r?(c={projectPath:n,serverName:r,initialName:a,initialConfig:o,onBack:s},t[0]=o,t[1]=a,t[2]=s,t[3]=n,t[4]=r,t[5]=c):c=t[5];let{form:l,patchForm:u,lists:d,addEntry:f,removeEntry:p,updateEntry:m,original:h,saving:g,deleting:_,error:v,loading:y,actions:b}=yt(c),x=!!r,S=g||_,C;t[6]!==l||t[7]!==x||t[8]!==d.env||t[9]!==d.header||t[10]!==h.snapshot?(C=ut({isEditing:x,currentSnapshot:Je(l.name.trim(),l.serverType,nt(l,d.env,d.header)),originalSnapshot:h.snapshot,form:l,envEntries:d.env,headerEntries:d.header}),t[6]=l,t[7]=x,t[8]=d.env,t[9]=d.header,t[10]=h.snapshot,t[11]=C):C=t[11];let ee=C;if(y){let e;return t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(bt,{}),t[12]=e):e=t[12],e}let w;t[13]!==l.name||t[14]!==x?(w=ht(x,l.name),t[13]=l.name,t[14]=x,t[15]=w):w=t[15];let T;t[16]===w?T=t[17]:(T=(0,$.jsx)(ve,{...w,sticky:!0,className:`pr-10`}),t[16]=w,t[17]=T);let E;t[18]===u?E=t[19]:(E=e=>u({name:e}),t[18]=u,t[19]=E);let D;t[20]!==l.name||t[21]!==x||t[22]!==E?(D=(0,$.jsx)(xt,{isEditing:x,name:l.name,onNameChange:E}),t[20]=l.name,t[21]=x,t[22]=E,t[23]=D):D=t[23];let O;t[24]===f?O=t[25]:(O=()=>f(`header`),t[24]=f,t[25]=O);let k;t[26]===p?k=t[27]:(k=e=>p(`header`,e),t[26]=p,t[27]=k);let A;t[28]===m?A=t[29]:(A=(e,t)=>m(`header`,e,t),t[28]=m,t[29]=A);let j;t[30]!==l||t[31]!==d.header||t[32]!==u||t[33]!==O||t[34]!==k||t[35]!==A?(j=(0,$.jsx)(kt,{form:l,onFormChange:u,headerEntries:d.header,onHeaderAdd:O,onHeaderRemove:k,onHeaderUpdate:A}),t[30]=l,t[31]=d.header,t[32]=u,t[33]=O,t[34]=k,t[35]=A,t[36]=j):j=t[36];let M;t[37]===u?M=t[38]:(M=e=>u({defer:e}),t[37]=u,t[38]=M);let N;t[39]!==l.defer||t[40]!==M?(N=(0,$.jsx)(Dt,{defer:l.defer,onDeferChange:M}),t[39]=l.defer,t[40]=M,t[41]=N):N=t[41];let P;t[42]===f?P=t[43]:(P=()=>f(`env`),t[42]=f,t[43]=P);let F;t[44]===p?F=t[45]:(F=e=>p(`env`,e),t[44]=p,t[45]=F);let I;t[46]===m?I=t[47]:(I=(e,t)=>m(`env`,e,t),t[46]=m,t[47]=I);let L;t[48]!==l.serverType||t[49]!==d.env||t[50]!==P||t[51]!==F||t[52]!==I?(L=(0,$.jsx)(Et,{serverType:l.serverType,entries:d.env,onAdd:P,onRemove:F,onUpdate:I}),t[48]=l.serverType,t[49]=d.env,t[50]=P,t[51]=F,t[52]=I,t[53]=L):L=t[53];let R;t[54]===v?R=t[55]:(R=v&&(0,$.jsx)(`p`,{className:i.error,children:v}),t[54]=v,t[55]=R);let z;t[56]!==b.handleDelete||t[57]!==b.handleSave||t[58]!==S||t[59]!==_||t[60]!==ee||t[61]!==x||t[62]!==g?(z=(0,$.jsx)(Mt,{isEditing:x,busy:S,saving:g,deleting:_,hasChanges:ee,onSave:b.handleSave,onDelete:b.handleDelete}),t[56]=b.handleDelete,t[57]=b.handleSave,t[58]=S,t[59]=_,t[60]=ee,t[61]=x,t[62]=g,t[63]=z):z=t[63];let B;t[64]!==j||t[65]!==N||t[66]!==L||t[67]!==R||t[68]!==z||t[69]!==D?(B=(0,$.jsxs)(`div`,{children:[D,j,N,L,R,z]}),t[64]=j,t[65]=N,t[66]=L,t[67]=R,t[68]=z,t[69]=D,t[70]=B):B=t[70];let V;return t[71]!==B||t[72]!==T?(V=(0,$.jsx)(ce,{children:(0,$.jsxs)(ae,{children:[T,B]})}),t[71]=B,t[72]=T,t[73]=V):V=t[73],V}function Pt(e){if(!e)return null;let t=new Date(e).getTime();if(Number.isNaN(t))return null;let n=Math.max(0,Math.round((Date.now()-t)/1e3));if(n<60)return`just now`;let r=Math.round(n/60);if(r<60)return`${r}m ago`;let i=Math.round(r/60);return i<24?`${i}h ago`:new Date(e).toLocaleDateString()}function Ft(e){if(!e||e.state===`missing`||e.state===`stale`)return`Refresh to load tools`;if(e.state===`needs_auth`)return`Sign in required`;if(e.state===`error`)return e.error??`Could not load tools`;let t=e.tools.length,n=t===1?`1 tool`:`${t} tools`,r=Pt(e.refreshedAt);return r?`${n} · refreshed ${r}`:n}function It(e){let t=(0,Z.c)(69),{name:n,config:r,catalog:a,remote:o,authorized:d,oauthBusy:p,refreshing:m,onEdit:h,onRefresh:g,onDelete:_,onSignIn:v,onSignOut:y}=e,[b,x]=(0,Q.useState)(!1),S;if(t[0]!==d||t[1]!==a||t[2]!==r.args||t[3]!==r.command||t[4]!==r.url||t[5]!==b||t[6]!==n||t[7]!==p||t[8]!==_||t[9]!==h||t[10]!==g||t[11]!==v||t[12]!==y||t[13]!==m||t[14]!==o){let e=a?.state===`ok`?a.tools.map(zt):[],E;t[16]!==r.args||t[17]!==r.command||t[18]!==r.url?(E=r.url?r.url:`${r.command??``} ${r.args?.join(` `)??``}`.trim(),t[16]=r.args,t[17]=r.command,t[18]=r.url,t[19]=E):E=t[19];let D=E,O;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(O=s(i.body,`truncate`),t[20]=O):O=t[20];let k;t[21]===n?k=t[22]:(k=(0,$.jsx)(`div`,{className:O,children:n}),t[21]=n,t[22]=k);let A;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(A=s(i.compact,`truncate text-muted-foreground font-mono`),t[23]=A):A=t[23];let j;t[24]===D?j=t[25]:(j=(0,$.jsx)(`div`,{className:A,children:D}),t[24]=D,t[25]=j);let M;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(M=s(i.caption,`truncate text-muted-foreground`),t[26]=M):M=t[26];let N;t[27]===a?N=t[28]:(N=Ft(a),t[27]=a,t[28]=N);let P;t[29]===N?P=t[30]:(P=(0,$.jsx)(`div`,{className:M,children:N}),t[29]=N,t[30]=P);let F;t[31]!==h||t[32]!==k||t[33]!==j||t[34]!==P?(F=(0,$.jsxs)(`button`,{type:`button`,onClick:h,className:`min-w-0 text-left`,children:[k,j,P]}),t[31]=h,t[32]=k,t[33]=j,t[34]=P,t[35]=F):F=t[35];let I;t[36]!==d||t[37]!==p||t[38]!==v||t[39]!==y||t[40]!==o?(I=o&&(0,$.jsx)(c,{type:`button`,variant:d?`outline`:`secondary`,size:`sm`,disabled:p,onClick:()=>{d?y():v()},children:p?`Working…`:d?`Sign out`:`Sign in`}),t[36]=d,t[37]=p,t[38]=v,t[39]=y,t[40]=o,t[41]=I):I=t[41];let L=`Refresh ${n} tools`,R=m&&`animate-spin`,z;t[42]===R?z=t[43]:(z=s(`h-4 w-4`,R),t[42]=R,t[43]=z);let B;t[44]===z?B=t[45]:(B=(0,$.jsx)(l,{className:z}),t[44]=z,t[45]=B);let V;t[46]!==g||t[47]!==m||t[48]!==L||t[49]!==B?(V=(0,$.jsx)(C,{asChild:!0,children:(0,$.jsx)(c,{type:`button`,variant:`ghost`,size:`icon-sm`,disabled:m,onClick:g,"aria-label":L,children:B})}),t[46]=g,t[47]=m,t[48]=L,t[49]=B,t[50]=V):V=t[50];let H;t[51]===Symbol.for(`react.memo_cache_sentinel`)?(H=(0,$.jsx)(ee,{children:`Refresh tools`}),t[51]=H):H=t[51];let U;t[52]===V?U=t[53]:(U=(0,$.jsx)(w,{children:(0,$.jsxs)(T,{children:[V,H]})}),t[52]=V,t[53]=U);let te=e.length>0&&(0,$.jsx)(c,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-expanded":b,"aria-label":b?`Hide tools`:`Show tools`,onClick:()=>x(Rt),children:(0,$.jsx)(f,{className:s(`h-4 w-4 transition-transform`,b&&`rotate-180`)})}),W;t[54]!==I||t[55]!==U||t[56]!==te?(W=(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[I,U,te]}),t[54]=I,t[55]=U,t[56]=te,t[57]=W):W=t[57];let ne=`Delete ${n}`,G;t[58]===Symbol.for(`react.memo_cache_sentinel`)?(G=(0,$.jsx)(u,{className:`h-4 w-4`}),t[58]=G):G=t[58];let K;t[59]!==_||t[60]!==ne?(K=(0,$.jsx)(C,{asChild:!0,children:(0,$.jsx)(c,{type:`button`,variant:`ghost`,size:`icon-sm`,className:`shrink-0 items-center justify-center text-muted-foreground opacity-0 pointer-events-none can-hover:group-hover:opacity-100 can-hover:group-hover:pointer-events-auto can-hover:hover:bg-destructive can-hover:hover:text-destructive-foreground transition-[opacity,color,background-color]`,onClick:_,"aria-label":ne,children:G})}),t[59]=_,t[60]=ne,t[61]=K):K=t[61];let re;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(re=(0,$.jsx)(ee,{children:`Remove this MCP server from the project`}),t[62]=re):re=t[62];let q;t[63]===K?q=t[64]:(q=(0,$.jsx)(w,{children:(0,$.jsxs)(T,{children:[K,re]})}),t[63]=K,t[64]=q);let J;t[65]!==F||t[66]!==W||t[67]!==q?(J=(0,$.jsxs)(`div`,{className:`grid min-h-13 grid-cols-[minmax(0,1fr)_auto_1.75rem] items-center gap-3`,children:[F,W,q]}),t[65]=F,t[66]=W,t[67]=q,t[68]=J):J=t[68],S=(0,$.jsxs)(`div`,{className:`group px-3 py-3 hover:bg-muted/30`,children:[J,b&&e.length>0&&(0,$.jsx)(`ul`,{className:s(i.caption,`mt-2 space-y-1 pl-1 text-muted-foreground`),children:e.map(Lt)})]}),t[0]=d,t[1]=a,t[2]=r.args,t[3]=r.command,t[4]=r.url,t[5]=b,t[6]=n,t[7]=p,t[8]=_,t[9]=h,t[10]=g,t[11]=v,t[12]=y,t[13]=m,t[14]=o,t[15]=S}else S=t[15];return S}function Lt(e){return(0,$.jsx)(`li`,{className:`font-mono truncate`,children:e},e)}function Rt(e){return!e}function zt(e){return e.name}var Bt=`https://tarsk.io/skills/mcp/`;function Vt(e){return e.name.toLowerCase().replace(/\s+/g,`-`)}function Ht(e){return typeof e.url==`string`&&e.url.trim().length>0}function Ut(){let e=a(e=>e.selectedProjectId),t=a(e=>e.projects).find(t=>t.projectId===e)?.projectPath,{installedServers:n,catalog:r,loadingConfig:o,loadInstalledServers:u}=L(t),{popularServers:g,loadingPopular:_}=z(),{openChatDockPanel:v}=te(),{setPendingExplorerPath:y,triggerExplorerRefresh:b}=j(),[x,S]=(0,Q.useState)(!1),[M,N]=(0,Q.useState)(null),[V,H]=(0,Q.useState)(null),[U,W]=(0,Q.useState)(null),[ne,G]=(0,Q.useState)(!1),[q,J]=(0,Q.useState)({}),[Y,X]=(0,Q.useState)(null),[ae,se]=(0,Q.useState)(null),ce=(0,Q.useCallback)(async()=>{if(!t){J({});return}let e=n.filter(e=>Ht(e.config));if(e.length===0){J({});return}let r=await Promise.all(e.map(async e=>{try{let n=await D(t,e.name);return[e.name,n.authorized]}catch{return[e.name,!1]}}));J(Object.fromEntries(r))},[t,n]);(0,Q.useEffect)(()=>{ce()},[ce]);let Z=(0,Q.useCallback)(async e=>{if(t){G(!0);try{await K(t,e),await u(),b(),A({title:`MCP server removed`,description:e}),W(null)}catch(e){A({title:`Error`,description:e instanceof Error?e.message:`Failed to remove server`,variant:`destructive`})}finally{G(!1)}}},[t,u,b]),Se=(0,Q.useCallback)(async e=>{if(t){X(e);try{let n=await O(t,e);await ce(),await u(),A({title:`Signed in`,description:n.catalog?`${e} · ${F(n.catalog)}`:`Connected to ${e}`})}catch(e){A({title:`Sign in failed`,description:e instanceof Error?e.message:`OAuth authorization failed`,variant:`destructive`})}finally{X(null)}}},[t,ce,u]),Ce=(0,Q.useCallback)(async e=>{if(t){X(e);try{await k(t,e),await ce(),await u(),A({title:`Signed out`,description:e})}catch(e){A({title:`Sign out failed`,description:e instanceof Error?e.message:`Failed to revoke OAuth credentials`,variant:`destructive`})}finally{X(null)}}},[t,ce,u]),we=(0,Q.useCallback)(async e=>{if(t){se(e??`all`);try{let n=await _e(t,e);await u();let r=Object.values(n.catalog),[i]=r;if(i)A({title:`Tools refreshed`,description:`${i.serverName} · ${F(i)}`});else{let e=r.filter(e=>e.state===`ok`).length;A({title:`Tools refreshed`,description:`${e}/${r.length} servers loaded`})}}catch(e){A({title:`Refresh failed`,description:e instanceof Error?e.message:`Could not refresh MCP tools`,variant:`destructive`})}finally{se(null)}}},[t,u]),Te=(0,Q.useCallback)(()=>{y(`.agents/mcp.json`),v(`explorer`)},[y,v]),Ee=(0,Q.useCallback)(async e=>{if(!t)return;let r=Vt(e);if(!n.some(t=>t.name===r||t.name===e.id)){if(e.url!==void 0){if(!e.url.trim()){N({name:r,config:{url:``,transport:e.transport??`sse`,...Object.keys(e.env??{}).length>0?{env:e.env}:{}}}),S(!0);return}try{let n=await re(t,r,{url:e.url,transport:e.transport??`sse`,...Object.keys(e.env??{}).length>0?{env:e.env}:{}});await u(),b(),A({title:`MCP server installed`,description:`${e.name} · ${F(n.catalog)}`})}catch(e){A({title:`Error`,description:e instanceof Error?e.message:`Failed to install server`,variant:`destructive`})}return}if(!e.command){A({title:`Error`,description:`This server is missing install configuration.`,variant:`destructive`});return}try{let n=await re(t,r,{command:e.command,args:e.args??[],...Object.keys(e.env??{}).length>0?{env:e.env}:{}});await u(),b(),A({title:`MCP server installed`,description:`${e.name} · ${F(n.catalog)}`})}catch(e){A({title:`Error`,description:e instanceof Error?e.message:`Failed to install server`,variant:`destructive`})}}},[t,n,u,b]),De=be(e,[o,_]);return e?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(I,{loading:De,children:(0,$.jsxs)(P,{className:`shrink-0`,children:[(0,$.jsx)(ve,{title:`Installed MCP Servers`,description:`MCP servers configured for this project.`,action:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(c,{variant:`ghost`,onClick:Te,children:`Config`}),n.length>=2&&(0,$.jsxs)(c,{variant:`ghost`,className:`gap-1`,disabled:ae!==null,onClick:()=>void we(),children:[(0,$.jsx)(l,{className:s(`h-4 w-4`,ae===`all`&&`animate-spin`)}),`Refresh all`]}),(0,$.jsxs)(he,{children:[(0,$.jsx)(ge,{asChild:!0,children:(0,$.jsxs)(c,{className:`gap-1`,children:[`Add Server`,(0,$.jsx)(f,{className:`h-4 w-4 opacity-70`})]})}),(0,$.jsxs)(pe,{align:`end`,className:`w-56`,children:[(0,$.jsxs)(oe,{className:s(i.body,`gap-2`),onSelect:()=>S(!0),children:[(0,$.jsx)(m,{className:`h-4 w-4 shrink-0`}),`Manual Entry`]}),(0,$.jsxs)(me,{children:[(0,$.jsxs)(le,{className:s(i.body,`gap-2`),children:[(0,$.jsx)(d,{className:`h-4 w-4 shrink-0`}),`Popular`]}),(0,$.jsx)(ie,{className:`w-80 max-h-80 overflow-y-auto`,children:_?(0,$.jsx)(oe,{disabled:!0,className:i.bodyMuted,children:`Loading…`}):g.length===0?(0,$.jsx)(oe,{disabled:!0,className:i.bodyMuted,children:`No available servers`}):[...g].sort((e,t)=>e.name.localeCompare(t.name)).map(e=>{let t=Vt(e),r=n.some(n=>n.name===t||n.name===e.id);return(0,$.jsx)(w,{children:(0,$.jsxs)(T,{children:[(0,$.jsx)(C,{asChild:!0,children:(0,$.jsxs)(oe,{className:s(i.body,`gap-2`,r&&`opacity-50 cursor-not-allowed`),onSelect:()=>{r||Ee(e)},children:[(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name}),r&&(0,$.jsx)(p,{className:`h-4 w-4 shrink-0 text-muted-foreground`})]})}),(0,$.jsx)(ee,{side:`right`,className:`max-w-64`,children:e.description})]})},e.id)})})]}),(0,$.jsx)(de,{}),(0,$.jsxs)(oe,{className:s(i.body,`gap-2`),onSelect:()=>void E(Bt),children:[(0,$.jsx)(h,{className:`h-4 w-4 shrink-0`}),`Marketplace`]})]})]})]}),sticky:!1}),(0,$.jsx)(R,{className:`pt-6`,children:n.length===0?(0,$.jsx)(xe,{icon:d,title:`Connect your agent to tools, APIs, and data sources`,bordered:!1}):(0,$.jsx)(`div`,{className:`divide-y divide-table-border`,children:n.map(e=>(0,$.jsx)(It,{name:e.name,config:e.config,catalog:r[e.name],remote:Ht(e.config),authorized:q[e.name]===!0,oauthBusy:Y===e.name,refreshing:ae===e.name||ae===`all`,onEdit:()=>H(e.name),onRefresh:()=>void we(e.name),onDelete:()=>W(e.name),onSignIn:()=>void Se(e.name),onSignOut:()=>void Ce(e.name)},e.name))})})]})}),(0,$.jsx)(fe,{open:x,onOpenChange:e=>{S(e),e||N(null)},children:(0,$.jsx)(ue,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,$.jsx)(Nt,{projectPath:t,initialName:M?.name,initialConfig:M?.config,onBack:()=>{S(!1),N(null),u(),b()}})})}),(0,$.jsx)(fe,{open:V!==null,onOpenChange:e=>{e||H(null)},children:(0,$.jsx)(ue,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,$.jsx)(Nt,{projectPath:t,serverName:V??void 0,onBack:()=>{H(null),u(),b()}})})}),(0,$.jsx)(ye,{open:U!==null,onOpenChange:e=>!e&&W(null),title:`Delete MCP Server`,description:`Are you sure you want to delete the server "${U}"? This action cannot be undone.`,onConfirm:()=>{U&&Z(U)},confirming:ne})]}):(0,$.jsx)(B,{children:`Select a project to manage MCP servers.`})}export{Ut as SettingsMCPServersView,Ut as default};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{Dt as i}from"./dist-CTLFS4dn.js";import{$ as a,n as o}from"./store-BSzKIu5G.js";import{a as s,r as c,t as l}from"./button-kWtLAMpB.js";import{r as u}from"./tooltip-Db8UeYxm.js";import{B as d,L as f,R as p,U as m,V as h,jt as g}from"./api-DX1ny6q-.js";import{t as _}from"./suspense-resource-BFrb_XJX.js";import{t as v}from"./use-suspense-resource-Dakt9lfT.js";import{Et as y,On as ee,Rt as te,St as b,Tt as x,Vn as S,Xn as C,Zn as w,_t as ne,kt as T,mt as E,ot as D,vt as O}from"./index-u8UbWjXL.js";import{a as k,i as A,n as j,r as M,t as N}from"./table-A3cgauiZ.js";import{n as P,t as F}from"./toggle-group-Q36wRGKA.js";import{n as I,t as re}from"./commit-method-fields-CVQjrJ_O.js";import{t as L}from"./async-error-boundary-BX1G17o9.js";import{t as ie}from"./sorting-DqwxPMRN.js";import{a as ae,o as R}from"./settings-list-B9a61wMg.js";import{t as oe}from"./use-deferred-search-Dgxosq55.js";import{n as se,r as z,t as B}from"./model-list-controls-CNrps9Ys.js";var V=e(n(),1),H=t();function U(e){return`settings-models:coding:${e}`}function W(e){return`settings-models:image:${e}`}async function G(){let e=(await g()).filter(e=>e.apiKey),t=await m(`coding`),n={},r={};for(let i of e){let e=t[i.slug];n[i.slug]=e?.models??[],r[i.slug]=new Set(e?.enabledModelIds??[])}return{providers:e,allModels:n,enabledModelIds:r}}async function ce(e){let t=e.filter(e=>e.name.toLowerCase()===`openrouter`),n=await m(`image`),r={},i={};for(let e of t){let t=n[e.slug];r[e.slug]=t?.models??[],i[e.slug]=new Set(t?.enabledModelIds??[])}return{allImageModels:r,enabledImageModelIds:i}}var K=r();function q(e){let t=(0,H.c)(8),{label:n,large:r}=e,a=r===void 0?!1:r,o=a?`md`:`sm`,s=a?`h-8 w-8`:void 0,l;t[0]!==o||t[1]!==s?(l=(0,K.jsx)(S,{size:o,className:s}),t[0]=o,t[1]=s,t[2]=l):l=t[2];let u;t[3]===n?u=t[4]:(u=n?(0,K.jsx)(`p`,{className:c(i.bodyMuted,`mt-2`),children:n}):null,t[3]=n,t[4]=u);let d;return t[5]!==l||t[6]!==u?(d=(0,K.jsx)(`div`,{className:`flex h-full items-center justify-center py-12`,children:(0,K.jsxs)(`div`,{className:`text-center`,children:[l,u]})}),t[5]=l,t[6]=u,t[7]=d):d=t[7],d}var J=`table-fixed`,le=`h-9`,ue=c(i.body,`py-1.5`),de=`w-10 py-1.5`,fe=`w-24 py-1.5 text-right`,pe=c(i.body,`w-20 py-1.5 text-right text-muted-foreground tabular-nums`),me=c(i.body,`w-48 py-1.5 text-right text-muted-foreground whitespace-nowrap tabular-nums`),he=`h-9 w-24 bg-transparent py-2 text-right`,ge=`h-9 w-20 bg-transparent py-2 text-right`,_e=`h-9 w-48 bg-transparent py-2 text-right`;function Y(e){return!e||(e.prompt??0)===0&&(e.completion??0)===0?``:`$${s(e.prompt??0)} in | $${s(e.completion??0)} out`}function ve(e){return e==null||!Number.isFinite(e)||e<=0?``:e>=100?Math.round(e).toLocaleString():e.toFixed(1)}function X(e){let t=(0,H.c)(9),{showIntelligence:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=c(`w-full caption-bottom`,J,i.body),t[0]=r):r=t[0];let a,o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,K.jsx)(A,{className:`h-9 w-10 bg-transparent py-2`}),o=(0,K.jsx)(A,{className:`h-9 bg-transparent py-2`,children:`Model`}),t[1]=a,t[2]=o):(a=t[1],o=t[2]);let s;t[3]===n?s=t[4]:(s=n?(0,K.jsx)(A,{className:he,children:`Intelligence`}):null,t[3]=n,t[4]=s);let l,u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,K.jsx)(A,{className:ge,children:`TPS`}),u=(0,K.jsx)(A,{className:_e,children:`Pricing`}),t[5]=l,t[6]=u):(l=t[5],u=t[6]);let d;return t[7]===s?d=t[8]:(d=(0,K.jsx)(`table`,{className:r,children:(0,K.jsx)(`thead`,{className:`[&_tr]:border-b [&_tr]:border-table-border`,children:(0,K.jsxs)(`tr`,{children:[a,o,s,l,u]})})}),t[7]=s,t[8]=d),d}function Z(e){let t=(0,H.c)(15),{models:n,enabledIds:r,checkboxIdPrefix:a,showIntelligence:o,getModelDisplayName:s,onToggleModel:l}=e,u;if(t[0]!==a||t[1]!==r||t[2]!==s||t[3]!==n||t[4]!==l||t[5]!==o){let e;t[7]!==a||t[8]!==r||t[9]!==s||t[10]!==l||t[11]!==o?(e=e=>{let t=`${a}${e.id}`,n=r.has(e.id);return(0,K.jsxs)(k,{className:le,children:[(0,K.jsx)(M,{className:de,children:(0,K.jsx)(D,{id:t,value:n,onChange:()=>l(e.id),ariaLabel:`${s(e)} ${n?`enabled`:`disabled`}`})}),(0,K.jsx)(M,{className:ue,children:(0,K.jsx)(`label`,{htmlFor:t,className:c(i.body,`cursor-pointer truncate peer-disabled:cursor-not-allowed peer-disabled:opacity-70`),children:s(e)})}),o?(0,K.jsx)(M,{className:fe,children:(0,K.jsx)(`div`,{className:`flex justify-end`,children:(0,K.jsx)(z,{codingIndex:e.coding_index,modelName:s(e)})})}):null,(0,K.jsx)(M,{className:pe,children:ve(e.avgTPS)}),(0,K.jsx)(M,{className:me,children:Y(e.pricing)})]},e.id)},t[7]=a,t[8]=r,t[9]=s,t[10]=l,t[11]=o,t[12]=e):e=t[12],u=n.map(e),t[0]=a,t[1]=r,t[2]=s,t[3]=n,t[4]=l,t[5]=o,t[6]=u}else u=t[6];let d;return t[13]===u?d=t[14]:(d=(0,K.jsx)(N,{className:J,children:(0,K.jsx)(j,{children:u})}),t[13]=u,t[14]=d),d}function Q(e){let t=(0,H.c)(25),{providerName:n,providerSlug:r,action:a,tableHeader:o,children:s}=e,l;t[0]!==n||t[1]!==r?(l=(0,K.jsx)(E,{provider:{name:n,slug:r}}),t[0]=n,t[1]=r,t[2]=l):l=t[2];let u;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(u=c(i.pageTitle,`truncate`),t[3]=u):u=t[3];let d;t[4]===n?d=t[5]:(d=(0,K.jsx)(`h2`,{className:u,children:n}),t[4]=n,t[5]=d);let f;t[6]!==l||t[7]!==d?(f=(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[l,d]}),t[6]=l,t[7]=d,t[8]=f):f=t[8];let p;t[9]===a?p=t[10]:(p=a?(0,K.jsx)(`div`,{className:`electrobun-webkit-app-region-no-drag shrink-0`,children:a}):null,t[9]=a,t[10]=p);let m;t[11]!==f||t[12]!==p?(m=(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b border-divider px-6 py-4 electrobun-webkit-app-region-drag`,children:[f,p]}),t[11]=f,t[12]=p,t[13]=m):m=t[13];let h;t[14]===o?h=t[15]:(h=o?(0,K.jsx)(`div`,{className:`electrobun-webkit-app-region-no-drag px-6 pb-2 pt-4`,children:o}):null,t[14]=o,t[15]=h);let g=o?`pt-0`:`pt-6`,_;t[16]===g?_=t[17]:(_=c(`px-6 pb-6`,g),t[16]=g,t[17]=_);let v;t[18]!==s||t[19]!==_?(v=(0,K.jsx)(`div`,{className:_,children:s}),t[18]=s,t[19]=_,t[20]=v):v=t[20];let y;return t[21]!==v||t[22]!==m||t[23]!==h?(y=(0,K.jsxs)(T,{className:`shrink-0`,children:[m,h,v]}),t[21]=v,t[22]=m,t[23]=h,t[24]=y):y=t[24],y}function ye({providers:e,globalSearchQuery:t,modelSortBy:n,filterAndSortModels:r,getModelDisplayName:i,onSaveStatus:s}){let c=o(),l=v(W(0),()=>ce(e)),[p]=(0,V.useState)(l.allImageModels),[m,h]=(0,V.useState)(l.enabledImageModelIds);async function g(e,t){try{m[e]?.has(t)?(await f(e,t),h(n=>{let r=new Set(n[e]??[]);return r.delete(t),{...n,[e]:r}})):(await d(e,t),h(n=>({...n,[e]:new Set([...n[e]||[],t])}))),c({type:a.ConfigUpdated}),s(`Model preferences saved successfully`)}catch(e){s(e instanceof Error?e.message:`Failed to save model changes`)}}async function _(e,t){let n=p[e],r=m[e];if(n)for(let i of n)r?.has(i.id)!==t&&await g(e,i.id)}return(0,K.jsx)(K.Fragment,{children:e.filter(e=>e.name.toLowerCase()===`openrouter`).map(e=>{let a=p[e.slug]||[],o=m[e.slug]||new Set,s=r(a,o,n);return s.length===0&&t?null:(0,K.jsx)(Q,{providerName:e.name,providerSlug:e.slug,action:s.length>0?(0,K.jsx)(B,{id:`select-all-image-${e.slug}`,checked:s.every(e=>o.has(e.id)),onChange:t=>void _(e.slug,t)}):null,tableHeader:s.length>0?(0,K.jsx)(X,{showIntelligence:!1}):void 0,children:s.length===0?(0,K.jsx)(R,{message:t?`No models matching your search.`:`No image models available for this provider.`}):(0,K.jsx)(u,{children:(0,K.jsx)(Z,{models:s,enabledIds:o,checkboxIdPrefix:`image-`,showIntelligence:!1,getModelDisplayName:i,onToggleModel:t=>void g(e.slug,t)})})},e.slug)})})}function be({loadVersion:e}){let t=o(),n=v(U(e),()=>G()),r=n.providers,[s]=(0,V.useState)(n.allModels),[l,d]=(0,V.useState)(n.enabledModelIds),[f,m]=(0,V.useState)(`coding`),{query:g,setQuery:_,deferredQuery:S}=oe(),[E,D]=(0,V.useState)(`alphabetical`),[k,A]=(0,V.useState)(``),j=e=>ee(e.id),M=async(e,n)=>{try{l[e]?.has(n)?(await p(e,n),d(t=>{let r=new Set(t[e]??[]);return r.delete(n),{...t,[e]:r}})):(await h(e,n),d(t=>({...t,[e]:new Set([...t[e]||[],n])}))),te(),t({type:a.ConfigUpdated}),A(`Model preferences saved successfully`),setTimeout(()=>A(``),3e3)}catch(e){A(e instanceof Error?e.message:`Failed to save model changes`)}},N=async(e,t)=>{let n=s[e],r=l[e];if(n)for(let i of n)r?.has(i.id)!==t&&await M(e,i.id)},L=(e,t,n)=>ie({models:e,query:S,sortBy:n,getDisplayName:j,getPriority:e=>+!t.has(e.id)});if(r.length===0)return(0,K.jsx)(x,{title:`No providers configured`,children:`Configure a provider with an API key to view available models.`});let z=r.some(e=>e.name.toLowerCase()===`openrouter`);return(0,K.jsx)(b,{loading:!1,children:(0,K.jsxs)(C,{value:f,className:`flex flex-col gap-2.5`,children:[(0,K.jsxs)(T,{className:`shrink-0`,children:[(0,K.jsx)(O,{title:`Models`,description:`View and manage available models from your configured providers.`,action:(0,K.jsx)(ae,{placeholder:`Search`,value:g,onChange:_,className:`mb-0 w-64`}),sticky:!1}),(0,K.jsx)(y,{className:`max-w-none pt-6`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-3`,children:[z?(0,K.jsxs)(F,{type:`single`,value:f,onValueChange:e=>{(e===`coding`||e===`image`)&&(m(e),_(``))},"aria-label":`Model type`,className:c(re,`shrink-0`),children:[(0,K.jsx)(P,{value:`coding`,"aria-label":`Coding`,className:c(i.body,I),children:`Coding`}),(0,K.jsx)(P,{value:`image`,"aria-label":`Image`,className:c(i.body,I),children:`Image`})]}):null,k?(0,K.jsx)(ne,{variant:k.includes(`error`)||k.includes(`Failed`)?`error`:`success`,className:`mb-0 shrink-0`,children:k}):null,(0,K.jsx)(`div`,{className:`ml-auto shrink-0`,children:(0,K.jsx)(se,{sortBy:E,showCodingIndex:f===`coding`,showIntelligenceByPrice:f===`coding`,onSortByChange:D})})]})})]}),(0,K.jsx)(w,{value:`coding`,className:`mt-0 flex flex-col gap-2.5`,children:r.map(e=>{let t=s[e.slug]||[],n=l[e.slug]||new Set,r=L(t,n,E);return r.length===0&&g?null:(0,K.jsx)(Q,{providerName:e.name,providerSlug:e.slug,action:r.length>0?(0,K.jsx)(B,{id:`select-all-${e.slug}`,checked:r.every(e=>n.has(e.id)),onChange:t=>void N(e.slug,t)}):null,tableHeader:r.length>0?(0,K.jsx)(X,{showIntelligence:E===`coding-index`||E===`intelligence-by-price`}):void 0,children:r.length===0?(0,K.jsx)(R,{message:g?`No models matching your search.`:`No models available for this provider.`}):(0,K.jsx)(u,{children:(0,K.jsx)(Z,{models:r,enabledIds:n,checkboxIdPrefix:``,showIntelligence:E===`coding-index`||E===`intelligence-by-price`,getModelDisplayName:j,onToggleModel:t=>void M(e.slug,t)})})},e.slug)})}),(0,K.jsx)(w,{value:`image`,className:`mt-0 flex flex-col gap-2.5`,children:f===`image`?(0,K.jsx)(V.Suspense,{fallback:(0,K.jsx)(q,{}),children:(0,K.jsx)(ye,{providers:r,globalSearchQuery:g,modelSortBy:E,filterAndSortModels:L,getModelDisplayName:j,onSaveStatus:e=>{A(e),e.includes(`Failed`)||setTimeout(()=>A(``),3e3)}})}):null})]})})}function $(){let e=(0,H.c)(8),[t,n]=(0,V.useState)(0),r;e[0]===t?r=e[1]:(r=function(){_(U(t)),n(Se)},e[0]=t,e[1]=r);let i=r,a;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,K.jsx)(q,{label:`Loading models...`,large:!0}),e[2]=a):a=e[2];let o;e[3]===t?o=e[4]:(o=(0,K.jsx)(V.Suspense,{fallback:a,children:(0,K.jsx)(be,{loadVersion:t},t)}),e[3]=t,e[4]=o);let s;return e[5]!==i||e[6]!==o?(s=(0,K.jsx)(`div`,{className:`h-full min-h-0`,children:(0,K.jsx)(L,{fallbackTitle:`Failed to load models`,onRetry:i,renderFallback:xe,children:o})}),e[5]=i,e[6]=o,e[7]=s):s=e[7],s}function xe(e,t){return(0,K.jsx)(x,{title:`Failed to load models`,action:(0,K.jsx)(l,{variant:`outline`,onClick:t,children:`Retry`}),children:e.message})}function Se(e){return e+1}export{$ as SettingsModelsView,$ as default};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{Dt as i}from"./dist-CTLFS4dn.js";import{$ as a,n as o}from"./store-BSzKIu5G.js";import{a as s,r as c,t as l}from"./button-kWtLAMpB.js";import{r as u}from"./tooltip-Db8UeYxm.js";import{B as d,L as f,R as p,U as m,V as h,jt as g}from"./api-DX1ny6q-.js";import{t as _}from"./suspense-resource-BFrb_XJX.js";import{t as v}from"./use-suspense-resource-Dakt9lfT.js";import{At as y,Ct as b,Dt as ee,Et as x,Vn as S,Xn as C,Zn as w,ht as T,kn as te,st as E,vt as ne,yt as D,zt as O}from"./index-B3-5kIOf.js";import{a as k,i as A,n as j,r as M,t as N}from"./table-A3cgauiZ.js";import{n as P,t as F}from"./toggle-group-Q36wRGKA.js";import{n as I,t as re}from"./commit-method-fields-BtEHb0_G.js";import{t as L}from"./async-error-boundary-BX1G17o9.js";import{t as ie}from"./sorting-DqwxPMRN.js";import{a as ae,o as R}from"./settings-list-DiiYzOxn.js";import{t as oe}from"./use-deferred-search-Dgxosq55.js";import{n as se,r as z,t as B}from"./model-list-controls-I67L2x3H.js";var V=e(n(),1),H=t();function U(e){return`settings-models:coding:${e}`}function W(e){return`settings-models:image:${e}`}async function G(){let e=(await g()).filter(e=>e.apiKey),t=await m(`coding`),n={},r={};for(let i of e){let e=t[i.slug];n[i.slug]=e?.models??[],r[i.slug]=new Set(e?.enabledModelIds??[])}return{providers:e,allModels:n,enabledModelIds:r}}async function ce(e){let t=e.filter(e=>e.name.toLowerCase()===`openrouter`),n=await m(`image`),r={},i={};for(let e of t){let t=n[e.slug];r[e.slug]=t?.models??[],i[e.slug]=new Set(t?.enabledModelIds??[])}return{allImageModels:r,enabledImageModelIds:i}}var K=r();function q(e){let t=(0,H.c)(8),{label:n,large:r}=e,a=r===void 0?!1:r,o=a?`md`:`sm`,s=a?`h-8 w-8`:void 0,l;t[0]!==o||t[1]!==s?(l=(0,K.jsx)(S,{size:o,className:s}),t[0]=o,t[1]=s,t[2]=l):l=t[2];let u;t[3]===n?u=t[4]:(u=n?(0,K.jsx)(`p`,{className:c(i.bodyMuted,`mt-2`),children:n}):null,t[3]=n,t[4]=u);let d;return t[5]!==l||t[6]!==u?(d=(0,K.jsx)(`div`,{className:`flex h-full items-center justify-center py-12`,children:(0,K.jsxs)(`div`,{className:`text-center`,children:[l,u]})}),t[5]=l,t[6]=u,t[7]=d):d=t[7],d}var J=`table-fixed`,le=`h-9`,ue=c(i.body,`py-1.5`),de=`w-10 py-1.5`,fe=`w-24 py-1.5 text-right`,pe=c(i.body,`w-20 py-1.5 text-right text-muted-foreground tabular-nums`),me=c(i.body,`w-48 py-1.5 text-right text-muted-foreground whitespace-nowrap tabular-nums`),he=`h-9 w-24 bg-transparent py-2 text-right`,ge=`h-9 w-20 bg-transparent py-2 text-right`,_e=`h-9 w-48 bg-transparent py-2 text-right`;function Y(e){return!e||(e.prompt??0)===0&&(e.completion??0)===0?``:`$${s(e.prompt??0)} in | $${s(e.completion??0)} out`}function ve(e){return e==null||!Number.isFinite(e)||e<=0?``:e>=100?Math.round(e).toLocaleString():e.toFixed(1)}function X(e){let t=(0,H.c)(9),{showIntelligence:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=c(`w-full caption-bottom`,J,i.body),t[0]=r):r=t[0];let a,o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,K.jsx)(A,{className:`h-9 w-10 bg-transparent py-2`}),o=(0,K.jsx)(A,{className:`h-9 bg-transparent py-2`,children:`Model`}),t[1]=a,t[2]=o):(a=t[1],o=t[2]);let s;t[3]===n?s=t[4]:(s=n?(0,K.jsx)(A,{className:he,children:`Intelligence`}):null,t[3]=n,t[4]=s);let l,u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,K.jsx)(A,{className:ge,children:`TPS`}),u=(0,K.jsx)(A,{className:_e,children:`Pricing`}),t[5]=l,t[6]=u):(l=t[5],u=t[6]);let d;return t[7]===s?d=t[8]:(d=(0,K.jsx)(`table`,{className:r,children:(0,K.jsx)(`thead`,{className:`[&_tr]:border-b [&_tr]:border-table-border`,children:(0,K.jsxs)(`tr`,{children:[a,o,s,l,u]})})}),t[7]=s,t[8]=d),d}function Z(e){let t=(0,H.c)(15),{models:n,enabledIds:r,checkboxIdPrefix:a,showIntelligence:o,getModelDisplayName:s,onToggleModel:l}=e,u;if(t[0]!==a||t[1]!==r||t[2]!==s||t[3]!==n||t[4]!==l||t[5]!==o){let e;t[7]!==a||t[8]!==r||t[9]!==s||t[10]!==l||t[11]!==o?(e=e=>{let t=`${a}${e.id}`,n=r.has(e.id);return(0,K.jsxs)(k,{className:le,children:[(0,K.jsx)(M,{className:de,children:(0,K.jsx)(E,{id:t,value:n,onChange:()=>l(e.id),ariaLabel:`${s(e)} ${n?`enabled`:`disabled`}`})}),(0,K.jsx)(M,{className:ue,children:(0,K.jsx)(`label`,{htmlFor:t,className:c(i.body,`cursor-pointer truncate peer-disabled:cursor-not-allowed peer-disabled:opacity-70`),children:s(e)})}),o?(0,K.jsx)(M,{className:fe,children:(0,K.jsx)(`div`,{className:`flex justify-end`,children:(0,K.jsx)(z,{codingIndex:e.coding_index,modelName:s(e)})})}):null,(0,K.jsx)(M,{className:pe,children:ve(e.avgTPS)}),(0,K.jsx)(M,{className:me,children:Y(e.pricing)})]},e.id)},t[7]=a,t[8]=r,t[9]=s,t[10]=l,t[11]=o,t[12]=e):e=t[12],u=n.map(e),t[0]=a,t[1]=r,t[2]=s,t[3]=n,t[4]=l,t[5]=o,t[6]=u}else u=t[6];let d;return t[13]===u?d=t[14]:(d=(0,K.jsx)(N,{className:J,children:(0,K.jsx)(j,{children:u})}),t[13]=u,t[14]=d),d}function Q(e){let t=(0,H.c)(25),{providerName:n,providerSlug:r,action:a,tableHeader:o,children:s}=e,l;t[0]!==n||t[1]!==r?(l=(0,K.jsx)(T,{provider:{name:n,slug:r}}),t[0]=n,t[1]=r,t[2]=l):l=t[2];let u;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(u=c(i.pageTitle,`truncate`),t[3]=u):u=t[3];let d;t[4]===n?d=t[5]:(d=(0,K.jsx)(`h2`,{className:u,children:n}),t[4]=n,t[5]=d);let f;t[6]!==l||t[7]!==d?(f=(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[l,d]}),t[6]=l,t[7]=d,t[8]=f):f=t[8];let p;t[9]===a?p=t[10]:(p=a?(0,K.jsx)(`div`,{className:`electrobun-webkit-app-region-no-drag shrink-0`,children:a}):null,t[9]=a,t[10]=p);let m;t[11]!==f||t[12]!==p?(m=(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-b border-divider px-6 py-4 electrobun-webkit-app-region-drag`,children:[f,p]}),t[11]=f,t[12]=p,t[13]=m):m=t[13];let h;t[14]===o?h=t[15]:(h=o?(0,K.jsx)(`div`,{className:`electrobun-webkit-app-region-no-drag px-6 pb-2 pt-4`,children:o}):null,t[14]=o,t[15]=h);let g=o?`pt-0`:`pt-6`,_;t[16]===g?_=t[17]:(_=c(`px-6 pb-6`,g),t[16]=g,t[17]=_);let v;t[18]!==s||t[19]!==_?(v=(0,K.jsx)(`div`,{className:_,children:s}),t[18]=s,t[19]=_,t[20]=v):v=t[20];let b;return t[21]!==v||t[22]!==m||t[23]!==h?(b=(0,K.jsxs)(y,{className:`shrink-0`,children:[m,h,v]}),t[21]=v,t[22]=m,t[23]=h,t[24]=b):b=t[24],b}function ye({providers:e,globalSearchQuery:t,modelSortBy:n,filterAndSortModels:r,getModelDisplayName:i,onSaveStatus:s}){let c=o(),l=v(W(0),()=>ce(e)),[p]=(0,V.useState)(l.allImageModels),[m,h]=(0,V.useState)(l.enabledImageModelIds);async function g(e,t){try{m[e]?.has(t)?(await f(e,t),h(n=>{let r=new Set(n[e]??[]);return r.delete(t),{...n,[e]:r}})):(await d(e,t),h(n=>({...n,[e]:new Set([...n[e]||[],t])}))),c({type:a.ConfigUpdated}),s(`Model preferences saved successfully`)}catch(e){s(e instanceof Error?e.message:`Failed to save model changes`)}}async function _(e,t){let n=p[e],r=m[e];if(n)for(let i of n)r?.has(i.id)!==t&&await g(e,i.id)}return(0,K.jsx)(K.Fragment,{children:e.filter(e=>e.name.toLowerCase()===`openrouter`).map(e=>{let a=p[e.slug]||[],o=m[e.slug]||new Set,s=r(a,o,n);return s.length===0&&t?null:(0,K.jsx)(Q,{providerName:e.name,providerSlug:e.slug,action:s.length>0?(0,K.jsx)(B,{id:`select-all-image-${e.slug}`,checked:s.every(e=>o.has(e.id)),onChange:t=>void _(e.slug,t)}):null,tableHeader:s.length>0?(0,K.jsx)(X,{showIntelligence:!1}):void 0,children:s.length===0?(0,K.jsx)(R,{message:t?`No models matching your search.`:`No image models available for this provider.`}):(0,K.jsx)(u,{children:(0,K.jsx)(Z,{models:s,enabledIds:o,checkboxIdPrefix:`image-`,showIntelligence:!1,getModelDisplayName:i,onToggleModel:t=>void g(e.slug,t)})})},e.slug)})})}function be({loadVersion:e}){let t=o(),n=v(U(e),()=>G()),r=n.providers,[s]=(0,V.useState)(n.allModels),[l,d]=(0,V.useState)(n.enabledModelIds),[f,m]=(0,V.useState)(`coding`),{query:g,setQuery:_,deferredQuery:S}=oe(),[T,E]=(0,V.useState)(`alphabetical`),[k,A]=(0,V.useState)(``),j=e=>te(e.id),M=async(e,n)=>{try{l[e]?.has(n)?(await p(e,n),d(t=>{let r=new Set(t[e]??[]);return r.delete(n),{...t,[e]:r}})):(await h(e,n),d(t=>({...t,[e]:new Set([...t[e]||[],n])}))),O(),t({type:a.ConfigUpdated}),A(`Model preferences saved successfully`),setTimeout(()=>A(``),3e3)}catch(e){A(e instanceof Error?e.message:`Failed to save model changes`)}},N=async(e,t)=>{let n=s[e],r=l[e];if(n)for(let i of n)r?.has(i.id)!==t&&await M(e,i.id)},L=(e,t,n)=>ie({models:e,query:S,sortBy:n,getDisplayName:j,getPriority:e=>+!t.has(e.id)});if(r.length===0)return(0,K.jsx)(x,{title:`No providers configured`,children:`Configure a provider with an API key to view available models.`});let z=r.some(e=>e.name.toLowerCase()===`openrouter`);return(0,K.jsx)(b,{loading:!1,children:(0,K.jsxs)(C,{value:f,className:`flex flex-col gap-2.5`,children:[(0,K.jsxs)(y,{className:`shrink-0`,children:[(0,K.jsx)(D,{title:`Models`,description:`View and manage available models from your configured providers.`,action:(0,K.jsx)(ae,{placeholder:`Search`,value:g,onChange:_,className:`mb-0 w-64`}),sticky:!1}),(0,K.jsx)(ee,{className:`max-w-none pt-6`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-3`,children:[z?(0,K.jsxs)(F,{type:`single`,value:f,onValueChange:e=>{(e===`coding`||e===`image`)&&(m(e),_(``))},"aria-label":`Model type`,className:c(re,`shrink-0`),children:[(0,K.jsx)(P,{value:`coding`,"aria-label":`Coding`,className:c(i.body,I),children:`Coding`}),(0,K.jsx)(P,{value:`image`,"aria-label":`Image`,className:c(i.body,I),children:`Image`})]}):null,k?(0,K.jsx)(ne,{variant:k.includes(`error`)||k.includes(`Failed`)?`error`:`success`,className:`mb-0 shrink-0`,children:k}):null,(0,K.jsx)(`div`,{className:`ml-auto shrink-0`,children:(0,K.jsx)(se,{sortBy:T,showCodingIndex:f===`coding`,showIntelligenceByPrice:f===`coding`,onSortByChange:E})})]})})]}),(0,K.jsx)(w,{value:`coding`,className:`mt-0 flex flex-col gap-2.5`,children:r.map(e=>{let t=s[e.slug]||[],n=l[e.slug]||new Set,r=L(t,n,T);return r.length===0&&g?null:(0,K.jsx)(Q,{providerName:e.name,providerSlug:e.slug,action:r.length>0?(0,K.jsx)(B,{id:`select-all-${e.slug}`,checked:r.every(e=>n.has(e.id)),onChange:t=>void N(e.slug,t)}):null,tableHeader:r.length>0?(0,K.jsx)(X,{showIntelligence:T===`coding-index`||T===`intelligence-by-price`}):void 0,children:r.length===0?(0,K.jsx)(R,{message:g?`No models matching your search.`:`No models available for this provider.`}):(0,K.jsx)(u,{children:(0,K.jsx)(Z,{models:r,enabledIds:n,checkboxIdPrefix:``,showIntelligence:T===`coding-index`||T===`intelligence-by-price`,getModelDisplayName:j,onToggleModel:t=>void M(e.slug,t)})})},e.slug)})}),(0,K.jsx)(w,{value:`image`,className:`mt-0 flex flex-col gap-2.5`,children:f===`image`?(0,K.jsx)(V.Suspense,{fallback:(0,K.jsx)(q,{}),children:(0,K.jsx)(ye,{providers:r,globalSearchQuery:g,modelSortBy:T,filterAndSortModels:L,getModelDisplayName:j,onSaveStatus:e=>{A(e),e.includes(`Failed`)||setTimeout(()=>A(``),3e3)}})}):null})]})})}function $(){let e=(0,H.c)(8),[t,n]=(0,V.useState)(0),r;e[0]===t?r=e[1]:(r=function(){_(U(t)),n(Se)},e[0]=t,e[1]=r);let i=r,a;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,K.jsx)(q,{label:`Loading models...`,large:!0}),e[2]=a):a=e[2];let o;e[3]===t?o=e[4]:(o=(0,K.jsx)(V.Suspense,{fallback:a,children:(0,K.jsx)(be,{loadVersion:t},t)}),e[3]=t,e[4]=o);let s;return e[5]!==i||e[6]!==o?(s=(0,K.jsx)(`div`,{className:`h-full min-h-0`,children:(0,K.jsx)(L,{fallbackTitle:`Failed to load models`,onRetry:i,renderFallback:xe,children:o})}),e[5]=i,e[6]=o,e[7]=s):s=e[7],s}function xe(e,t){return(0,K.jsx)(x,{title:`Failed to load models`,action:(0,K.jsx)(l,{variant:`outline`,onClick:t,children:`Retry`}),children:e.message})}function Se(e){return e+1}export{$ as SettingsModelsView,$ as default};
@@ -0,0 +1,3 @@
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{Dt as i,F as a}from"./dist-CTLFS4dn.js";import{r as o}from"./store-BSzKIu5G.js";import{m as s,r as c,t as l}from"./button-kWtLAMpB.js";import{Mt as u,Nn as d,Ot as f,Yt as p,fn as m,hn as h,ot as g,rt as _,st as v,x as y}from"./dist-c_QADQ5u.js";import{i as b,n as x,r as S,t as C}from"./tooltip-Db8UeYxm.js";import{$n as w,Ii as T,Qn as E,Qt as D,T as O,Tn as k,ar as A,di as j,er as M,ii as N,ir as P,lr as F,nr as I,or as L,ri as R,sr as z,ur as B,vi as V,xi as H,zi as ee}from"./api-DX1ny6q-.js";import{t as U}from"./use-toast-xpb5jNtN.js";import{a as W,c as te,i as G,n as ne,o as re,r as ie,s as ae,t as oe}from"./alert-dialog-BxMfaLuO.js";import{n as K}from"./async-loading-fallback-V0EaQ_Kn.js";import{An as se,At as ce,Ct as le,Dt as ue,Et as de,Ft as fe,It as pe,Jn as me,Kn as he,Mt as ge,Nt as _e,_r as ve,_t as ye,a as be,dr as xe,fr as q,gr as Se,gt as Ce,hr as J,ir as we,jt as Te,kt as Ee,mr as Y,or as De,pr as X,rr as Oe,tr as ke,ur as Ae,vr as je,vt as Me,yt as Ne}from"./index-B3-5kIOf.js";import{t as Pe}from"./delete-confirm-dialog-Dl76vaxb.js";import{t as Fe}from"./use-settings-page-loading-BTySlInF.js";import{a as Ie,i as Le,r as Re}from"./settings-list-DiiYzOxn.js";import{t as ze}from"./use-deferred-search-Dgxosq55.js";import{t as Be}from"./use-installed-ai-files-C8nNWGC7.js";import{i as Ve,n as He,r as Ue,t as We}from"./slug-utils-CQ8PMWUL.js";var Z=t(),Q=e(n(),1),$=r();function Ge({threadId:e,onSkillCreated:t}){let[n,r]=(0,Q.useState)(``),[a,o]=(0,Q.useState)(``),[s,l]=(0,Q.useState)(!1),u=Ue(n),d=He(u),f=async()=>{if(!(!d||!a.trim()||!e)){l(!0);try{let n=await O(e,u,a.trim());U({title:`Skill created`,description:`Skill '${u}' was created successfully.`}),r(``),o(``),t?.(n.path,`SKILL.md`)}catch(e){U({title:`Error`,description:e instanceof Error?e.message:`Failed to create skill`,variant:`destructive`})}finally{l(!1)}}};return e?(0,$.jsx)(Ee,{children:(0,$.jsxs)(Ce,{children:[(0,$.jsx)(Ne,{title:`Add Skill`,description:`Saved as SKILL.md in .agents/skills.`,sticky:!0,className:`pr-10`}),(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(ye,{title:`Skill Name`,controlLayout:`stack`,className:`pt-6`,children:[(0,$.jsx)(q,{id:`skillName`,value:n,onChange:e=>r(e.target.value),placeholder:`e.g. Code Review`,disabled:s}),n?(0,$.jsxs)(`p`,{className:c(i.caption,`mt-2`),children:[`Folder name: `,(0,$.jsx)(`span`,{className:`font-mono`,children:u||`...`})]}):null]}),(0,$.jsx)(ye,{title:`Description`,controlLayout:`stack`,className:`pt-6`,children:(0,$.jsx)(me,{id:`skillDescription`,value:a,onChange:e=>o(e.target.value),placeholder:`Describe when Tarsk should apply this skill`,className:`resize-none min-h-[120px]`,disabled:s})}),(0,$.jsx)(Ve,{onContinue:()=>void f(),disabled:!d||!a.trim(),creating:s})]})]})}):(0,$.jsx)(de,{title:`No thread selected`,children:`Please select a thread to add a skill.`})}function Ke(e){let t=[`---`,`name: ${e.id}`,`description: ${e.description}`];return e.allowedTools&&t.push(`allowed-tools: ${e.allowedTools}`),e.license&&t.push(`license: ${e.license}`),t.push(`---`,``,e.instructions??``),t.join(`
2
+ `)}function qe(e){return e.endsWith(`.md`)||e.endsWith(`.mdx`)}function Je(e){return e.includes(`SKILL.md`)?`SKILL.md`:e[0]??`SKILL.md`}function Ye(e,t){let n=e?.sourceId??t;if(!(!n||n==="default"))return n}function Xe({open:e,onOpenChange:t,skill:n,catalogSourceId:r,onInstall:a}){let[o,s]=(0,Q.useState)([]),[u,d]=(0,Q.useState)(null),[f,m]=(0,Q.useState)(``),[h,g]=(0,Q.useState)(!1),[_,v]=(0,Q.useState)(!1),[y,b]=(0,Q.useState)(null),[x,S]=(0,Q.useState)(!1),C=Ye(n,r),T=!!C;(0,Q.useEffect)(()=>{if(!e||!n)return;let t=n,i=Ye(t,r),a=!1;async function o(){g(!0),b(null),s([]),d(null),m(``);try{if(i){let e=await M(i,t.id);if(a)return;s(e.files),d(Je(e.files))}else{if(a)return;s([`SKILL.md`]),d(`SKILL.md`),m(Ke(t))}}catch(e){if(a)return;b(e instanceof Error?e.message:`Failed to load skill files`)}finally{a||g(!1)}}return o(),()=>{a=!0}},[e,n,r]),(0,Q.useEffect)(()=>{if(!e||!n||!u||!T||!C)return;let t=n,r=u,i=!1;async function a(){v(!0),b(null);try{let e=await w(C,t.id,r);if(i)return;m(e.content)}catch(e){if(i)return;b(e instanceof Error?e.message:`Failed to load file`),m(``)}finally{i||v(!1)}}return a(),()=>{i=!0}},[e,n,u,T,C]);let E=(0,Q.useCallback)(async()=>{if(!n)return;let e=C?{...n,sourceId:C}:n;S(!0);try{await a(e),t(!1)}finally{S(!1)}},[n,C,a,t]),D=h||T&&_,O=u?qe(u):!1,k=(0,Q.useMemo)(()=>o.map(e=>(0,$.jsxs)(he,{selected:e===u,onClick:()=>d(e),className:`gap-2 cursor-pointer`,children:[(0,$.jsx)(p,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,$.jsx)(`span`,{className:c(i.caption,`truncate`),children:e})]},e)),[o,u]);return(0,$.jsx)(X,{open:e,onOpenChange:t,children:(0,$.jsxs)(Y,{className:`flex max-h-[90vh] max-w-5xl flex-col gap-0 overflow-hidden p-0`,children:[(0,$.jsxs)(ve,{className:`border-b border-border px-6 py-4`,children:[(0,$.jsx)(je,{children:n?.name??`Review skill`}),n?.description?(0,$.jsx)(J,{children:n.description}):null]}),(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col sm:flex-row`,children:[(0,$.jsxs)(`div`,{className:`flex max-h-40 shrink-0 flex-col border-b border-border sm:max-h-none sm:w-56 sm:border-b-0 sm:border-r`,children:[(0,$.jsx)(`div`,{className:c(i.labelMuted,`px-3 py-2`),children:`Files`}),(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-1 pb-2`,children:h?(0,$.jsx)(K,{className:`py-8`,label:`Loading files...`}):o.length===0?(0,$.jsx)(`p`,{className:c(i.caption,`px-3 py-2 text-muted-foreground`),children:`No files found.`}):k})]}),(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-6 py-4`,children:y?(0,$.jsx)(`p`,{className:c(i.body,`text-destructive`),children:y}):D?(0,$.jsx)(K,{className:`py-12`,label:`Loading preview...`}):O?(0,$.jsx)(se,{content:f,enableMermaid:!1}):(0,$.jsx)(`pre`,{className:c(i.caption,`overflow-x-auto whitespace-pre-wrap font-mono`),children:f})})]}),(0,$.jsxs)(Se,{className:`border-t border-border px-6 py-4 sm:justify-between`,children:[(0,$.jsx)(l,{type:`button`,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,$.jsx)(l,{type:`button`,onClick:()=>void E(),disabled:x||!n,children:x?`Installing...`:`Install`})]})]})})}var Ze=new Map;function Qe(e){let t=Ze.get(e);if(t)return t;let n=P(e).finally(()=>{Ze.delete(e)});return Ze.set(e,n),n}function $e(e,t){return t.map(t=>({...t,sourceId:t.sourceId??e}))}function et(){let e=(0,Z.c)(18),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0];let[n,r]=(0,Q.useState)(t),[i,a]=(0,Q.useState)(V),o;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=[],e[1]=o):o=e[1];let[s,c]=(0,Q.useState)(o),[l,u]=(0,Q.useState)(!1),[d,f]=(0,Q.useState)(!1),p;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(p=async()=>{try{r(await A())}catch{r([])}},e[2]=p):p=e[2];let m=p,h,g;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>{(async function(){let e=j();if(e.length>0)try{await L(e),R()}catch{}await m()})()},g=[m],e[3]=h,e[4]=g):(h=e[3],g=e[4]),(0,Q.useEffect)(h,g);let _;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(_=e=>{a(e),T(e)},e[5]=_):_=e[5];let v=_,y;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(y=e=>{r(t=>[...t.filter(t=>t.id!==e.id),e].sort(nt)),v(e.id)},e[6]=y):y=e[6];let b=y,x;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(x=e=>{r(t=>t.map(t=>t.id===e.id?e:t).sort(tt)),N(e.id)},e[7]=x):x=e[7];let S=x,C;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(C=e=>{r(t=>t.filter(t=>t.id!==e)),N(e),a(t=>t===e?(T(`default`),`default`):t)},e[8]=C):C=e[8];let w=C,E,D;e[9]===i?(E=e[10],D=e[11]):(D=()=>{if(i==="default"){c([]),u(!1),f(!1);return}let e=H(i);e?.skills?(c($e(i,e.skills)),u(!1)):(c([]),u(!0));let t=!1;return f(!!e?.skills),Qe(i).then(e=>{if(t)return;let n=$e(i,e);c(n),ee(i,{fetchedAt:Date.now(),skills:n})}).catch(n=>{t||(e?.skills||c([]),U({title:`Error`,description:n instanceof Error?n.message:`Failed to load skill catalog`,variant:`destructive`}))}).finally(()=>{t||(u(!1),f(!1))}),()=>{t=!0}},E=[i],e[9]=i,e[10]=E,e[11]=D),(0,Q.useEffect)(D,E);let O;return e[12]!==s||e[13]!==l||e[14]!==d||e[15]!==i||e[16]!==n?(O={sources:n,selectedSourceId:i,setSelectedSourceId:v,addSource:b,updateSource:S,removeSource:w,reloadSources:m,catalogSkills:s,isLoadingCatalog:l,isRefreshingCatalog:d},e[12]=s,e[13]=l,e[14]=d,e[15]=i,e[16]=n,e[17]=O):O=e[17],O}function tt(e,t){return e.title.localeCompare(t.title)}function nt(e,t){return e.title.localeCompare(t.title)}function rt({open:e,onOpenChange:t,editingSource:n,onSourceAdded:r,onSourceUpdated:a,onSourceDeleted:o}){let[s,u]=(0,Q.useState)(``),[d,p]=(0,Q.useState)(``),[m,h]=(0,Q.useState)(null),[g,_]=(0,Q.useState)(!1),[v,y]=(0,Q.useState)(!1),[b,x]=(0,Q.useState)(!1),S=n!=null;function C(){u(``),p(``),h(null),_(!1),y(!1),x(!1)}function w(e){e||C(),t(e)}(0,Q.useEffect)(()=>{if(e){if(n){u(n.title),p(n.url),h(null);return}u(``),p(``),h(null)}},[e,n]);async function T(){let e=s.trim(),t=d.trim();if(!e||!t){h(`Title and URL are required.`);return}_(!0),h(null);try{if(S&&n){let r=await F(n.id,e,t);a?.(r.source)}else r((await B(e,t)).source);w(!1)}catch(e){h(e instanceof Error?e.message:`Failed to verify skill source`)}finally{_(!1)}}async function D(){if(n){y(!0),h(null);try{await E(n.id),o?.(n.id),x(!1),w(!1)}catch(e){h(e instanceof Error?e.message:`Failed to delete skill source`),x(!1)}finally{y(!1)}}}return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(X,{open:e,onOpenChange:w,children:(0,$.jsxs)(Y,{className:`sm:max-w-lg`,children:[(0,$.jsxs)(ve,{children:[(0,$.jsx)(je,{children:S?`Edit Skill Source`:`Add Skill Source`}),(0,$.jsx)(J,{children:S?`Update the title or GitHub skills folder URL for this custom source.`:`Add a GitHub skills folder URL. The source is verified by loading at least one skill from the repository.`})]}),(0,$.jsxs)(`div`,{className:`grid gap-4 py-2`,children:[(0,$.jsxs)(`div`,{className:`grid gap-2`,children:[(0,$.jsx)(xe,{htmlFor:`skill-source-title`,children:`Title`}),(0,$.jsx)(q,{id:`skill-source-title`,placeholder:`e.g. My Team Skills`,value:s,onChange:e=>u(e.target.value),disabled:g||v,autoFocus:!0})]}),(0,$.jsxs)(`div`,{className:`grid gap-2`,children:[(0,$.jsx)(xe,{htmlFor:`skill-source-url`,children:`URL`}),(0,$.jsx)(q,{id:`skill-source-url`,placeholder:`https://github.com/org/repo or .../tree/main/skills`,value:d,onChange:e=>p(e.target.value),disabled:g||v})]}),m?(0,$.jsx)(`p`,{className:c(i.caption,`text-destructive`),children:m}):null]}),(0,$.jsxs)(Se,{className:`flex-col-reverse gap-2 sm:flex-row sm:justify-between`,children:[S?(0,$.jsx)(l,{type:`button`,variant:`destructive`,onClick:()=>x(!0),disabled:g||v,children:`Delete`}):(0,$.jsx)(`div`,{className:`hidden sm:block`}),(0,$.jsxs)(`div`,{className:`flex w-full flex-col-reverse gap-2 sm:w-auto sm:flex-row`,children:[(0,$.jsx)(l,{variant:`outline`,onClick:()=>w(!1),disabled:g||v,children:`Cancel`}),(0,$.jsx)(l,{onClick:()=>void T(),disabled:g||v||!s.trim()||!d.trim(),children:g?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(f,{className:`mr-2 h-4 w-4 animate-spin`}),`Verifying...`]}):S?`Save Changes`:`Add Source`})]})]})]})}),(0,$.jsx)(oe,{open:b,onOpenChange:x,children:(0,$.jsxs)(G,{children:[(0,$.jsxs)(ae,{children:[(0,$.jsx)(te,{children:`Delete Skill Source`}),(0,$.jsxs)(W,{children:[`Are you sure you want to delete "`,n?.title,`"? This removes the source from your list but does not uninstall skills you already added.`]})]}),(0,$.jsxs)(re,{children:[(0,$.jsx)(ie,{disabled:v,children:`Cancel`}),(0,$.jsx)(ne,{onClick:()=>void D(),disabled:v,className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:v?`Deleting...`:`Delete`})]})]})})]})}var it=`https://tarsk.io/skills/list/`;function at(e){let t=(0,Z.c)(20),{onSelectMode:n,manualDisabled:r}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,$.jsx)(Ae,{asChild:!0,children:(0,$.jsxs)(l,{className:`gap-1`,children:[`Add Skill`,(0,$.jsx)(d,{className:`h-4 w-4 opacity-70`})]})}),t[0]=a):a=t[0];let o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=c(i.body,`gap-2`),t[1]=o):o=t[1];let s;t[2]===n?s=t[3]:(s=()=>n(`manual`),t[2]=n,t[3]=s);let f;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,$.jsx)(v,{className:`h-4 w-4 shrink-0`}),t[4]=f):f=t[4];let p;t[5]!==r||t[6]!==s?(p=(0,$.jsxs)(we,{className:o,disabled:r,onSelect:s,children:[f,`Manually Enter`]}),t[5]=r,t[6]=s,t[7]=p):p=t[7];let h;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(h=c(i.body,`gap-2`),t[8]=h):h=t[8];let g;t[9]===n?g=t[10]:(g=()=>n(`url`),t[9]=n,t[10]=g);let _;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,$.jsx)(u,{className:`h-4 w-4 shrink-0`}),t[11]=_):_=t[11];let y;t[12]===g?y=t[13]:(y=(0,$.jsxs)(we,{className:h,onSelect:g,children:[_,`Via URL`]}),t[12]=g,t[13]=y);let b;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,$.jsx)(De,{}),t[14]=b):b=t[14];let x;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(x=c(i.body,`gap-2`),t[15]=x):x=t[15];let S;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsxs)(we,{className:x,onSelect:ot,children:[(0,$.jsx)(m,{className:`h-4 w-4 shrink-0`}),`Marketplace`]}),t[16]=S):S=t[16];let C;return t[17]!==p||t[18]!==y?(C=(0,$.jsxs)(ke,{children:[a,(0,$.jsxs)(Oe,{align:`end`,className:`w-44`,children:[p,y,b,S]})]}),t[17]=p,t[18]=y,t[19]=C):C=t[19],C}function ot(){D(it)}function st(e){let t=e.trim();if(!t)return null;if(/^https?:\/\//i.test(t))try{return new URL(t),t}catch{return null}if(t.startsWith(`tarsk://`))try{let e=new URL(`https://tarsk.invalid/${t.slice(8)}`);if(e.pathname===`/skill-install`&&e.searchParams.get(`url`))return e.searchParams.get(`url`)}catch{return null}return null}function ct(e){let t=(0,Z.c)(40),{open:n,onOpenChange:r,onSubmit:a}=e,[o,s]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(null),f;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(f=function(){s(``),d(null)},t[0]=f):f=t[0];let p=f,m;t[1]===r?m=t[2]:(m=function(e){e||p(),r(e)},t[1]=r,t[2]=m);let h=m,g,_;t[3]===n?(g=t[4],_=t[5]):(g=()=>{n&&p()},_=[n],t[3]=n,t[4]=g,t[5]=_),(0,Q.useEffect)(g,_);let v;t[6]!==h||t[7]!==a||t[8]!==o?(v=function(){let e=st(o);if(!e){d(`Enter a valid http(s) URL for the plugin archive or paste a tarsk:// install link.`);return}a(e),h(!1)},t[6]=h,t[7]=a,t[8]=o,t[9]=v):v=t[9];let y=v,b;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,$.jsxs)(ve,{children:[(0,$.jsx)(je,{children:`Add Skill via URL`}),(0,$.jsx)(J,{children:`Paste the URL of a plugin archive. Its skills and MCP servers are installed into this project.`})]}),t[10]=b):b=t[10];let x;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,$.jsx)(xe,{htmlFor:`add-skill-url`,children:`URL`}),t[11]=x):x=t[11];let S;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(S=e=>s(e.target.value),t[12]=S):S=t[12];let C;t[13]===y?C=t[14]:(C=e=>{e.key===`Enter`&&(e.preventDefault(),y())},t[13]=y,t[14]=C);let w;t[15]!==C||t[16]!==o?(w=(0,$.jsx)(q,{id:`add-skill-url`,placeholder:`https://example.com/my-plugin.zip`,value:o,onChange:S,autoFocus:!0,onKeyDown:C}),t[15]=C,t[16]=o,t[17]=w):w=t[17];let T;t[18]===u?T=t[19]:(T=u?(0,$.jsx)(`p`,{className:c(i.caption,`text-destructive`),children:u}):null,t[18]=u,t[19]=T);let E;t[20]!==w||t[21]!==T?(E=(0,$.jsx)(`div`,{className:`grid gap-4 py-2`,children:(0,$.jsxs)(`div`,{className:`grid gap-2`,children:[x,w,T]})}),t[20]=w,t[21]=T,t[22]=E):E=t[22];let D;t[23]===h?D=t[24]:(D=(0,$.jsx)(l,{variant:`outline`,onClick:()=>h(!1),children:`Cancel`}),t[23]=h,t[24]=D);let O;t[25]===o?O=t[26]:(O=o.trim(),t[25]=o,t[26]=O);let k=!O,A;t[27]!==y||t[28]!==k?(A=(0,$.jsx)(l,{onClick:y,disabled:k,children:`Continue`}),t[27]=y,t[28]=k,t[29]=A):A=t[29];let j;t[30]!==D||t[31]!==A?(j=(0,$.jsxs)(Se,{children:[D,A]}),t[30]=D,t[31]=A,t[32]=j):j=t[32];let M;t[33]!==E||t[34]!==j?(M=(0,$.jsxs)(Y,{className:`sm:max-w-lg`,children:[b,E,j]}),t[33]=E,t[34]=j,t[35]=M):M=t[35];let N;return t[36]!==h||t[37]!==n||t[38]!==M?(N=(0,$.jsx)(X,{open:n,onOpenChange:h,children:M}),t[36]=h,t[37]=n,t[38]=M,t[39]=N):N=t[39],N}function lt(e){let t=[];for(let n of e){if(n.path===`.agents/skills`&&n.type===`folder`&&n.children)for(let e of n.children)e.type===`folder`&&t.push(e);n.children&&n.children.length>0&&t.push(...lt(n.children))}return t}function ut(e){return`.agents/skills/${e}/SKILL.md`}function dt(e,t){let n=t.trim();if(!n)return e;let r=n.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(r)||e.description.toLowerCase().includes(r))}function ft(e){let t=(0,Z.c)(7),{items:n,onPreview:r}=e,a;if(t[0]!==n||t[1]!==r){let e;t[3]===r?e=t[4]:(e=e=>{let t=We(e.name);return(0,$.jsxs)(`div`,{className:`group flex min-h-13 items-center gap-3 px-3 py-2`,role:`button`,tabIndex:0,onClick:()=>r(e),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),r(e))},children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`div`,{className:c(i.label,`truncate`),children:t}),(0,$.jsx)(`p`,{className:c(i.caption,`truncate`),children:e.description})]}),(0,$.jsx)(S,{delayDuration:300,children:(0,$.jsxs)(C,{children:[(0,$.jsx)(b,{asChild:!0,children:(0,$.jsx)(l,{type:`button`,variant:`ghost`,size:`icon-sm`,className:`shrink-0 opacity-0 pointer-events-none can-hover:group-hover:opacity-100 can-hover:group-hover:pointer-events-auto`,"aria-label":`Install ${t}`,onClick:t=>{t.stopPropagation(),r(e)},children:(0,$.jsx)(h,{className:`h-4 w-4`})})}),(0,$.jsx)(x,{children:`Install skill`})]})})]},e.id)},t[3]=r,t[4]=e),a=n.map(e),t[0]=n,t[1]=r,t[2]=a}else a=t[2];let o;return t[5]===a?o=t[6]:(o=(0,$.jsx)(`div`,{className:`divide-y divide-table-border`,children:a}),t[5]=a,t[6]=o),o}function pt(e){let t=(0,Z.c)(21),{skills:n,threadId:r,onOpenSkill:i,onDelete:a,onAddManual:o,onAddUrl:s}=e,c=!r,l;t[0]!==o||t[1]!==s?(l=e=>{e===`manual`?o():s()},t[0]=o,t[1]=s,t[2]=l):l=t[2];let u;t[3]!==c||t[4]!==l?(u=(0,$.jsx)(Ne,{title:`Installed Skills`,description:`Reusable instruction sets that guide agent behavior in this project.`,action:(0,$.jsx)(at,{manualDisabled:c,onSelectMode:l}),sticky:!1}),t[3]=c,t[4]=l,t[5]=u):u=t[5];let d;t[6]===r?d=t[7]:(d=!r&&(0,$.jsx)(Me,{children:`Select a thread to add or install skills.`}),t[6]=r,t[7]=d);let f;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(f={icon:y,title:`No skills installed`,description:`Add skills to extend agent capabilities with reusable instructions.`},t[8]=f):f=t[8];let p;t[9]===i?p=t[10]:(p=e=>i(e.path),t[9]=i,t[10]=p);let m;t[11]!==a||t[12]!==n||t[13]!==p?(m=(0,$.jsx)(Re,{showHeader:!1,compact:!0,loading:!1,items:n,emptyState:f,getKey:_t,renderContent:gt,onItemClick:p,itemClickLabel:ht,onDelete:a,deleteAriaLabel:mt,deleteTooltip:`Remove this skill from the project`}),t[11]=a,t[12]=n,t[13]=p,t[14]=m):m=t[14];let h;t[15]!==d||t[16]!==m?(h=(0,$.jsxs)(ue,{className:`pt-6`,children:[d,m]}),t[15]=d,t[16]=m,t[17]=h):h=t[17];let g;return t[18]!==u||t[19]!==h?(g=(0,$.jsxs)(ce,{className:`shrink-0`,children:[u,h]}),t[18]=u,t[19]=h,t[20]=g):g=t[20],g}function mt(e){return`Delete ${e.name}`}function ht(e){return`Open ${e.name} in Files`}function gt(e){return(0,$.jsx)(`span`,{className:c(i.body,`truncate text-left`),children:e.name})}function _t(e){return e.id}function vt(e){let t=(0,Z.c)(50),{availableSearch:n,onSearchChange:r,selectedSourceId:i,onSourceChange:a,sources:o,selectedCustomSource:s,availableCatalogLoading:c,isDefaultSource:u,filteredPopular:d,filteredCatalog:f,installedFilePaths:p,onPreviewPopular:m,onPreviewCatalog:h,onAddSource:v}=e,y;if(t[0]!==d||t[1]!==p){let e;t[3]===p?e=t[4]:(e=e=>!p.has(ut(e.id)),t[3]=p,t[4]=e),y=d.filter(e),t[0]=d,t[1]=p,t[2]=y}else y=t[2];let w=y,T;if(t[5]!==f||t[6]!==p){let e;t[8]===p?e=t[9]:(e=e=>!p.has(ut(e.id)),t[8]=p,t[9]=e),T=f.filter(e),t[5]=f,t[6]=p,t[7]=T}else T=t[7];let E=T,D;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,$.jsx)(S,{children:(0,$.jsxs)(C,{children:[(0,$.jsx)(b,{asChild:!0,children:(0,$.jsx)(`span`,{className:`cursor-help`,children:`Available Skills`})}),(0,$.jsx)(x,{children:`Browse and install skills from the catalog.`})]})}),t[10]=D):D=t[10];let O;t[11]!==n||t[12]!==r?(O=(0,$.jsx)(Ie,{placeholder:`Search`,value:n,onChange:r,className:`mb-0 w-64`}),t[11]=n,t[12]=r,t[13]=O):O=t[13];let k;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,$.jsx)(fe,{className:`w-40`,"aria-label":`Skill source`,children:(0,$.jsx)(pe,{placeholder:`Default`})}),t[14]=k):k=t[14];let A;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,$.jsx)(_e,{value:`default`,children:`Default`}),t[15]=A):A=t[15];let j;t[16]===o?j=t[17]:(j=o.map(yt),t[16]=o,t[17]=j);let M;t[18]===j?M=t[19]:(M=(0,$.jsxs)(ge,{children:[A,j]}),t[18]=j,t[19]=M);let N;t[20]!==a||t[21]!==i||t[22]!==M?(N=(0,$.jsxs)(Te,{value:i,onValueChange:a,children:[k,M]}),t[20]=a,t[21]=i,t[22]=M,t[23]=N):N=t[23];let P=s?`Edit skill source`:`Add skill source`,F;t[24]===s?F=t[25]:(F=s?(0,$.jsx)(g,{className:`h-4 w-4`}):(0,$.jsx)(_,{className:`h-4 w-4`}),t[24]=s,t[25]=F);let I;t[26]!==v||t[27]!==P||t[28]!==F?(I=(0,$.jsx)(b,{asChild:!0,children:(0,$.jsx)(l,{type:`button`,variant:`outline`,size:`icon`,className:`shrink-0`,onClick:v,"aria-label":P,children:F})}),t[26]=v,t[27]=P,t[28]=F,t[29]=I):I=t[29];let L=s?`Edit this custom skill source`:`Add a custom skill source`,R;t[30]===L?R=t[31]:(R=(0,$.jsx)(x,{children:L}),t[30]=L,t[31]=R);let z;t[32]!==I||t[33]!==R?(z=(0,$.jsx)(S,{children:(0,$.jsxs)(C,{children:[I,R]})}),t[32]=I,t[33]=R,t[34]=z):z=t[34];let B;t[35]!==z||t[36]!==O||t[37]!==N?(B=(0,$.jsx)(Ne,{title:D,action:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[O,N,z]}),sticky:!1}),t[35]=z,t[36]=O,t[37]=N,t[38]=B):B=t[38];let V;t[39]!==E||t[40]!==c||t[41]!==w||t[42]!==n||t[43]!==u||t[44]!==h||t[45]!==m?(V=(0,$.jsx)(ue,{className:`pt-6`,children:c?(0,$.jsx)(K,{className:`py-12`,label:`Loading skills...`}):u?w.length===0?(0,$.jsx)(Le,{searchQuery:n,emptyLabel:`No available skills found.`}):(0,$.jsx)(ft,{items:w,onPreview:m}):E.length===0?(0,$.jsx)(Le,{searchQuery:n,emptyLabel:`No available skills found.`}):(0,$.jsx)(ft,{items:E,onPreview:h})}),t[39]=E,t[40]=c,t[41]=w,t[42]=n,t[43]=u,t[44]=h,t[45]=m,t[46]=V):V=t[46];let H;return t[47]!==B||t[48]!==V?(H=(0,$.jsxs)(ce,{className:`shrink-0`,children:[B,V]}),t[47]=B,t[48]=V,t[49]=H):H=t[49],H}function yt(e){return(0,$.jsx)(_e,{value:e.id,children:e.title},e.id)}function bt(){let{selectedProjectId:e,selectedThreadId:t,items:n,loading:r,deleteConfirm:i,setDeleteConfirm:c,deleting:l,installedFilePaths:u,setInstalledFilePaths:d,loadItems:f,handleDelete:p,handleOpenInExplorer:m,triggerExplorerRefresh:h}=Be({findItems:lt,installedPathSuffix:`/SKILL.md`,explorerPathSuffix:`/SKILL.md`,sortByName:!0,removedToastTitle:`Skill removed`}),g=o(e=>e.projects),_=(0,Q.useMemo)(()=>g.find(t=>t.projectId===e)??null,[g,e]),[v,y]=(0,Q.useState)(!1),[b,x]=(0,Q.useState)(!1),[S,C]=(0,Q.useState)(null),[w,T]=(0,Q.useState)([]),[E,D]=(0,Q.useState)(!0),[O,A]=(0,Q.useState)(null),[j,M]=(0,Q.useState)(!1),{query:N,setQuery:P,deferredQuery:F}=ze(),{sources:L,selectedSourceId:R,setSelectedSourceId:B,addSource:V,updateSource:H,removeSource:ee,catalogSkills:W,isLoadingCatalog:te}=et(),G=R==="default",ne=(0,Q.useMemo)(()=>a(R)?L.find(e=>e.id===R)??null:null,[R,L]);(0,Q.useEffect)(()=>{D(!0),I().then(T).catch(()=>T([])).finally(()=>D(!1))},[]);let re=Fe(e?`${e}:${t??``}`:null,[r,E]),ie=(0,Q.useCallback)(async e=>{let n=`.agents/skills/${e.id}/SKILL.md`;if(!t||u.has(n))return;let r=e.sourceId??(R==="default"?void 0:R);try{if(r)await z(t,r,e.id,`.agents/skills/${e.id}`);else{let r=[`---`,`name: ${e.id}`,`description: ${e.description}`];e.allowedTools&&r.push(`allowed-tools: ${e.allowedTools}`),e.license&&r.push(`license: ${e.license}`),r.push(`---`,``,e.instructions??``),await k(t,n,r.join(`
3
+ `))}d(e=>new Set(e).add(n)),h(),f(),U({title:`Skill installed`,description:e.name})}catch(e){throw U({title:`Error`,description:e instanceof Error?e.message:`Failed to install skill`,variant:`destructive`}),e}},[t,R,u,h,f]),ae=(0,Q.useMemo)(()=>dt(w,F),[w,F]),oe=(0,Q.useMemo)(()=>dt(W,F),[W,F]),K=!G&&te&&W.length===0;return e?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(le,{loading:re,children:[(0,$.jsx)(pt,{skills:n,threadId:t,onOpenSkill:m,onDelete:c,onAddManual:()=>y(!0),onAddUrl:()=>x(!0)}),(0,$.jsx)(vt,{availableSearch:N,onSearchChange:P,selectedSourceId:R,onSourceChange:B,sources:L,selectedCustomSource:ne,availableCatalogLoading:K,isDefaultSource:G,filteredPopular:ae,filteredCatalog:oe,installedFilePaths:u,onPreviewPopular:e=>A(e),onPreviewCatalog:e=>A({...e,sourceId:e.sourceId??R}),onAddSource:()=>M(!0)})]}),(0,$.jsx)(Xe,{open:O!==null,onOpenChange:e=>{e||A(null)},skill:O,catalogSourceId:G?void 0:R,onInstall:ie}),(0,$.jsx)(rt,{open:j,onOpenChange:M,editingSource:ne,onSourceAdded:e=>{V(e),U({title:`Skill source added`,description:`${e.title} is now available in the source list.`})},onSourceUpdated:e=>{H(e),U({title:`Skill source updated`,description:`${e.title} has been saved.`})},onSourceDeleted:e=>{ee(e),U({title:`Skill source removed`,description:`The custom source has been deleted.`})}}),(0,$.jsx)(X,{open:v,onOpenChange:y,children:(0,$.jsx)(Y,{className:`max-w-2xl max-h-[90vh] overflow-y-auto p-0`,children:(0,$.jsx)(Ge,{threadId:t,onSkillCreated:()=>{y(!1),f(),h()}})})}),(0,$.jsx)(ct,{open:b,onOpenChange:x,onSubmit:e=>C(e)}),(0,$.jsx)(be,{url:S,projectId:e,projectName:_?s(_):null,projects:g,onSelectProject:()=>{},onClose:()=>C(null),onInstalled:({mcpOnly:e})=>{f(),h(),U({title:e?`MCP server installed`:`Plugin installed`,description:e?`Its MCP servers were added to this project.`:`Its skills and MCP servers were added to this project.`})}}),(0,$.jsx)(Pe,{open:i!==null,onOpenChange:e=>!e&&c(null),title:`Delete Skill`,description:`Are you sure you want to delete the skill "${i?.name}"? This action cannot be undone.`,onConfirm:()=>{i&&p(i)},confirming:l})]}):(0,$.jsx)(de,{children:`Select a project to manage skills.`})}export{bt as SettingsSkillsView,bt as default};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{Dt as i}from"./dist-CTLFS4dn.js";import{r as a,t as o}from"./button-kWtLAMpB.js";import{D as s,Ot as c,bn as l,hn as u}from"./dist-c_QADQ5u.js";import{Dt as d,It as f,Lt as p,M as m,f as h,kn as g,x as _}from"./api-DX1ny6q-.js";import{t as v}from"./use-toast-xpb5jNtN.js";import{At as y,Dt as b,Ft as x,Mt as S,Pt as C,fr as w,gt as T,jt as E,wt as D,yt as O}from"./index-u8UbWjXL.js";var k=t(),A=r();function j(e){return e.configured?[e.botUsername?`@${e.botUsername}`:e.botTokenPreview,`Bridge ${e.bridgeRunning?`running`:`stopped`}`,e.teamName].filter(Boolean).join(` · `):`Not configured`}function M(e,t){return t.find(t=>t.projectId===e.projectId)?.name||e.projectId}function N(e){let t=(0,k.c)(51),{settings:n,drafts:r,isSavingTokens:s,onDraftChange:d,onSaveTokens:f,onClearTokens:p,onCopyManifest:m}=e,h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,A.jsx)(O,{title:`Slack App`}),t[0]=h):h=t[0];let g;t[1]===m?g=t[2]:(g=()=>void m(),t[1]=m,t[2]=g);let _;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,A.jsx)(l,{className:`mr-2 h-4 w-4`}),t[3]=_):_=t[3];let v;t[4]===g?v=t[5]:(v=(0,A.jsxs)(o,{type:`button`,variant:`outline`,size:`sm`,onClick:g,children:[_,`Copy app manifest`]}),t[4]=g,t[5]=v);let y;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,A.jsx)(o,{type:`button`,variant:`outline`,size:`sm`,asChild:!0,children:(0,A.jsxs)(`a`,{href:`/slack-app-icon.png`,download:`tarsk-slack-app-icon.png`,children:[(0,A.jsx)(u,{className:`mr-2 h-4 w-4`}),`Download app icon`]})}),t[6]=y):y=t[6];let b;t[7]===v?b=t[8]:(b=(0,A.jsx)(T,{title:`App Manifest`,description:`Create a Slack app from this manifest, enable Socket Mode, then paste the Bot and App-Level tokens below. The Slack manifest cannot include an app icon — download the Tarsk logo and upload it under Basic Information after creating the app.`,controlLayout:`row-end`,action:(0,A.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[v,y]})}),t[7]=v,t[8]=b);let x;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(x=a(`text-muted-foreground`,i.bodyMuted),t[9]=x):x=t[9];let S;t[10]===n?S=t[11]:(S=j(n),t[10]=n,t[11]=S);let C;t[12]===S?C=t[13]:(C=(0,A.jsx)(T,{title:`Status`,description:`Bot identity and Socket Mode bridge status.`,children:(0,A.jsx)(`span`,{className:x,children:S})}),t[12]=S,t[13]=C);let E=n.botTokenPreview||`xoxb-…`,M;t[14]===d?M=t[15]:(M=e=>d(`botToken`,e.target.value),t[14]=d,t[15]=M);let N;t[16]!==r.botToken||t[17]!==E||t[18]!==M?(N=(0,A.jsx)(T,{title:`Bot Token`,description:`Bot User OAuth Token from your Slack app (starts with xoxb-).`,children:(0,A.jsx)(w,{id:`slack-bot-token`,type:`password`,autoComplete:`off`,placeholder:E,value:r.botToken,onChange:M})}),t[16]=r.botToken,t[17]=E,t[18]=M,t[19]=N):N=t[19];let P=n.appTokenPreview||`xapp-…`,F;t[20]===d?F=t[21]:(F=e=>d(`appToken`,e.target.value),t[20]=d,t[21]=F);let I;t[22]!==r.appToken||t[23]!==P||t[24]!==F?(I=(0,A.jsx)(T,{title:`App-Level Token`,description:`App-Level Token with connections:write for Socket Mode (starts with xapp-).`,children:(0,A.jsx)(w,{id:`slack-app-token`,type:`password`,autoComplete:`off`,placeholder:P,value:r.appToken,onChange:F})}),t[22]=r.appToken,t[23]=P,t[24]=F,t[25]=I):I=t[25];let L;t[26]===f?L=t[27]:(L=()=>void f(),t[26]=f,t[27]=L);let R;t[28]!==r.appToken||t[29]!==r.botToken||t[30]!==s?(R=s||!r.botToken.trim()||!r.appToken.trim(),t[28]=r.appToken,t[29]=r.botToken,t[30]=s,t[31]=R):R=t[31];let z;t[32]===s?z=t[33]:(z=s?(0,A.jsx)(c,{className:`mr-2 h-4 w-4 animate-spin`}):null,t[32]=s,t[33]=z);let B;t[34]!==L||t[35]!==R||t[36]!==z?(B=(0,A.jsxs)(o,{type:`button`,onClick:L,disabled:R,children:[z,`Save`]}),t[34]=L,t[35]=R,t[36]=z,t[37]=B):B=t[37];let V;t[38]!==s||t[39]!==p||t[40]!==n.configured?(V=n.configured?(0,A.jsx)(o,{type:`button`,variant:`outline`,onClick:()=>void p(),disabled:s,children:`Clear`}):null,t[38]=s,t[39]=p,t[40]=n.configured,t[41]=V):V=t[41];let H;t[42]!==B||t[43]!==V?(H=(0,A.jsx)(T,{title:`Tokens`,description:`Save both tokens to start the bridge, or clear them to disconnect.`,controlLayout:`row-end`,action:(0,A.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[B,V]})}),t[42]=B,t[43]=V,t[44]=H):H=t[44];let U;return t[45]!==N||t[46]!==I||t[47]!==H||t[48]!==b||t[49]!==C?(U=(0,A.jsxs)(`div`,{children:[h,(0,A.jsxs)(D,{children:[b,C,N,I,H]})]}),t[45]=N,t[46]=I,t[47]=H,t[48]=b,t[49]=C,t[50]=U):U=t[50],U}function P(e){let t=(0,k.c)(20),{binding:n,projects:r,onDelete:c}=e,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=a(i.compact),t[0]=l):l=t[0];let u=n.slackChannelName||n.slackChannelId,d;t[1]===u?d=t[2]:(d=(0,A.jsx)(`div`,{className:`font-medium`,children:u}),t[1]=u,t[2]=d);let f;t[3]!==n||t[4]!==r?(f=M(n,r),t[3]=n,t[4]=r,t[5]=f):f=t[5];let p;t[6]===f?p=t[7]:(p=(0,A.jsx)(`div`,{className:`text-muted-foreground`,children:f}),t[6]=f,t[7]=p);let m;t[8]!==d||t[9]!==p?(m=(0,A.jsxs)(`div`,{className:l,children:[d,p]}),t[8]=d,t[9]=p,t[10]=m):m=t[10];let h;t[11]!==n||t[12]!==c?(h=()=>void c(n),t[11]=n,t[12]=c,t[13]=h):h=t[13];let g;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,A.jsx)(s,{className:`h-4 w-4`}),t[14]=g):g=t[14];let _;t[15]===h?_=t[16]:(_=(0,A.jsx)(o,{type:`button`,variant:`ghost`,size:`icon`,onClick:h,"aria-label":`Remove binding`,children:g}),t[15]=h,t[16]=_);let v;return t[17]!==m||t[18]!==_?(v=(0,A.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border px-3 py-2`,children:[m,_]}),t[17]=m,t[18]=_,t[19]=v):v=t[19],v}function F(e){let t=(0,k.c)(45),{settings:n,projects:r,drafts:s,isSavingBinding:l,onDraftChange:u,onAddBinding:d,onDeleteBinding:f}=e,p=n.channels.length>0,m=r.length>0,h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,A.jsx)(O,{title:`Channel Bindings`}),t[0]=h):h=t[0];let g;t[1]!==s.channelId||t[2]!==p||t[3]!==u||t[4]!==n.channels?(g=(0,A.jsx)(T,{title:`Slack Channel`,description:`Invite the bot to the channel first. Only channels the bot can see are listed.`,children:p?(0,A.jsxs)(y,{value:s.channelId||void 0,onValueChange:e=>u(`channelId`,e),children:[(0,A.jsx)(C,{id:`slack-channel`,"aria-label":`Slack Channel`,children:(0,A.jsx)(x,{placeholder:`Select a channel…`})}),(0,A.jsx)(E,{children:n.channels.map(L)})]}):(0,A.jsx)(w,{id:`slack-channel`,placeholder:`Channel ID (C…)`,value:s.channelId,onChange:e=>u(`channelId`,e.target.value)})}),t[1]=s.channelId,t[2]=p,t[3]=u,t[4]=n.channels,t[5]=g):g=t[5];let _=s.projectId||void 0,v;t[6]===u?v=t[7]:(v=e=>u(`projectId`,e),t[6]=u,t[7]=v);let b=!m,S=m?`Select a project…`:`No projects`,j;t[8]===S?j=t[9]:(j=(0,A.jsx)(C,{id:`slack-project`,"aria-label":`Tarsk Project`,children:(0,A.jsx)(x,{placeholder:S})}),t[8]=S,t[9]=j);let M;t[10]===r?M=t[11]:(M=r.map(I),t[10]=r,t[11]=M);let N;t[12]===M?N=t[13]:(N=(0,A.jsx)(E,{children:M}),t[12]=M,t[13]=N);let F;t[14]!==_||t[15]!==v||t[16]!==b||t[17]!==j||t[18]!==N?(F=(0,A.jsx)(T,{title:`Tarsk Project`,description:`Each Slack channel maps to one Tarsk project.`,children:(0,A.jsxs)(y,{value:_,onValueChange:v,disabled:b,children:[j,N]})}),t[14]=_,t[15]=v,t[16]=b,t[17]=j,t[18]=N,t[19]=F):F=t[19];let R;t[20]===d?R=t[21]:(R=()=>void d(),t[20]=d,t[21]=R);let z;t[22]!==s.channelId||t[23]!==s.projectId||t[24]!==l?(z=l||!s.channelId.trim()||!s.projectId,t[22]=s.channelId,t[23]=s.projectId,t[24]=l,t[25]=z):z=t[25];let B;t[26]===l?B=t[27]:(B=l?(0,A.jsx)(c,{className:`mr-2 h-4 w-4 animate-spin`}):null,t[26]=l,t[27]=B);let V;t[28]!==R||t[29]!==z||t[30]!==B?(V=(0,A.jsx)(T,{title:`Bind`,description:`Create a channel ↔ project binding.`,controlLayout:`row-end`,action:(0,A.jsxs)(o,{type:`button`,onClick:R,disabled:z,children:[B,`Bind channel`]})}),t[28]=R,t[29]=z,t[30]=B,t[31]=V):V=t[31];let H;t[32]!==F||t[33]!==V||t[34]!==g?(H=(0,A.jsxs)(D,{children:[g,F,V]}),t[32]=F,t[33]=V,t[34]=g,t[35]=H):H=t[35];let U;t[36]!==f||t[37]!==r||t[38]!==n.bindings?(U=n.bindings.length===0?(0,A.jsx)(`p`,{className:a(`text-muted-foreground`,i.compact),children:`No bindings yet.`}):n.bindings.map(e=>(0,A.jsx)(P,{binding:e,projects:r,onDelete:f},`${e.slackTeamId}:${e.slackChannelId}`)),t[36]=f,t[37]=r,t[38]=n.bindings,t[39]=U):U=t[39];let W;t[40]===U?W=t[41]:(W=(0,A.jsx)(`div`,{className:`mt-4 flex flex-col gap-2`,children:U}),t[40]=U,t[41]=W);let G;return t[42]!==H||t[43]!==W?(G=(0,A.jsxs)(`div`,{children:[h,H,W]}),t[42]=H,t[43]=W,t[44]=G):G=t[44],G}function I(e){return(0,A.jsx)(S,{value:e.projectId,children:e.name},e.projectId)}function L(e){return(0,A.jsx)(S,{value:e.id,children:e.name},e.id)}var R=e(n(),1),z={botToken:``,appToken:``,channelId:``,projectId:``},B={tokens:!1,binding:!1};function V(e,t){v({title:e,description:t instanceof Error?t.message:String(t),variant:`destructive`})}function H(){let[e,t]=(0,R.useState)(null),[n,r]=(0,R.useState)([]),[i,a]=(0,R.useState)(``),[o,s]=(0,R.useState)(z),[c,l]=(0,R.useState)(!0),[u,y]=(0,R.useState)(B),b=(0,R.useCallback)(async()=>{let[e,n]=await Promise.all([p(),d()]);t(e),r(n.projects)},[]);(0,R.useEffect)(()=>{let e=!1;async function n(){l(!0);try{let[n,i,o]=await Promise.all([p(),d(),f()]);e||(t(n),r(i.projects),a(o.manifest),i.projects[0]&&s(e=>e.projectId?e:{...e,projectId:i.projects[0].projectId}))}catch(t){e||V(`Failed to load Slack settings`,t)}finally{e||l(!1)}}return n(),()=>{e=!0}},[]);function x(e,t){s(n=>({...n,[e]:t}))}function S(e,t){y(n=>({...n,[e]:t}))}async function C(){let e=o.botToken.trim(),t=o.appToken.trim();if(!(!e||!t)){S(`tokens`,!0);try{await g({botToken:e,appToken:t}),s(e=>({...e,botToken:``,appToken:``})),await b(),v({title:`Slack tokens saved`})}catch(e){V(`Failed to save tokens`,e)}finally{S(`tokens`,!1)}}}async function w(){S(`tokens`,!0);try{await h(),await b(),v({title:`Slack tokens cleared`})}catch(e){V(`Failed to clear tokens`,e)}finally{S(`tokens`,!1)}}async function T(){let t=o.channelId.trim();if(!(!t||!o.projectId)){S(`binding`,!0);try{let n=e?.channels.find(e=>e.id===t);await _({slackChannelId:t,projectId:o.projectId,...n?{slackChannelName:n.name}:{}}),s(e=>({...e,channelId:``})),await b(),v({title:`Channel bound`})}catch(e){V(`Failed to bind channel`,e)}finally{S(`binding`,!1)}}}async function E(e){try{await m(e.slackTeamId,e.slackChannelId),await b(),v({title:`Binding removed`})}catch(e){V(`Failed to remove binding`,e)}}async function D(){try{await navigator.clipboard.writeText(i||(await f()).manifest),v({title:`Manifest copied`})}catch(e){V(`Failed to copy manifest`,e)}}return{settings:e,projects:n,manifest:i,drafts:o,isLoading:c,saving:u,setDraft:x,saveTokens:C,clearTokens:w,addBinding:T,deleteBinding:E,copyManifest:D}}function U(){let e=(0,k.c)(20),t=H();if(t.isLoading||!t.settings){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,A.jsx)(b,{title:`Slack`,description:`Loading Slack settings…`,children:(0,A.jsxs)(`div`,{className:a(`flex items-center gap-2 text-muted-foreground`,i.compact),children:[(0,A.jsx)(c,{className:`h-4 w-4 animate-spin`}),`Loading Slack settings…`]})}),e[0]=t):t=e[0],t}let n;e[1]!==t.clearTokens||e[2]!==t.copyManifest||e[3]!==t.drafts||e[4]!==t.saveTokens||e[5]!==t.saving.tokens||e[6]!==t.setDraft||e[7]!==t.settings?(n=(0,A.jsx)(N,{settings:t.settings,drafts:t.drafts,isSavingTokens:t.saving.tokens,onDraftChange:t.setDraft,onSaveTokens:t.saveTokens,onClearTokens:t.clearTokens,onCopyManifest:t.copyManifest}),e[1]=t.clearTokens,e[2]=t.copyManifest,e[3]=t.drafts,e[4]=t.saveTokens,e[5]=t.saving.tokens,e[6]=t.setDraft,e[7]=t.settings,e[8]=n):n=e[8];let r;e[9]!==t.addBinding||e[10]!==t.deleteBinding||e[11]!==t.drafts||e[12]!==t.projects||e[13]!==t.saving.binding||e[14]!==t.setDraft||e[15]!==t.settings?(r=(0,A.jsx)(F,{settings:t.settings,projects:t.projects,drafts:t.drafts,isSavingBinding:t.saving.binding,onDraftChange:t.setDraft,onAddBinding:t.addBinding,onDeleteBinding:t.deleteBinding}),e[9]=t.addBinding,e[10]=t.deleteBinding,e[11]=t.drafts,e[12]=t.projects,e[13]=t.saving.binding,e[14]=t.setDraft,e[15]=t.settings,e[16]=r):r=e[16];let o;return e[17]!==n||e[18]!==r?(o=(0,A.jsx)(b,{title:`Slack`,description:`Connect a Slack app (Socket Mode) and bind channels to Tarsk projects.`,children:(0,A.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[n,r]})}),e[17]=n,e[18]=r,e[19]=o):o=e[19],o}export{U as default};
1
+ import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{Dt as i}from"./dist-CTLFS4dn.js";import{r as a,t as o}from"./button-kWtLAMpB.js";import{D as s,Ot as c,bn as l,hn as u}from"./dist-c_QADQ5u.js";import{Dt as d,It as f,Lt as p,M as m,f as h,kn as g,x as _}from"./api-DX1ny6q-.js";import{t as v}from"./use-toast-xpb5jNtN.js";import{Ft as y,It as b,Mt as x,Nt as S,Ot as C,Tt as w,_t as T,bt as E,fr as D,jt as O}from"./index-B3-5kIOf.js";var k=t(),A=r();function j(e){return e.configured?[e.botUsername?`@${e.botUsername}`:e.botTokenPreview,`Bridge ${e.bridgeRunning?`running`:`stopped`}`,e.teamName].filter(Boolean).join(` · `):`Not configured`}function M(e,t){return t.find(t=>t.projectId===e.projectId)?.name||e.projectId}function N(e){let t=(0,k.c)(51),{settings:n,drafts:r,isSavingTokens:s,onDraftChange:d,onSaveTokens:f,onClearTokens:p,onCopyManifest:m}=e,h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,A.jsx)(E,{title:`Slack App`}),t[0]=h):h=t[0];let g;t[1]===m?g=t[2]:(g=()=>void m(),t[1]=m,t[2]=g);let _;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,A.jsx)(l,{className:`mr-2 h-4 w-4`}),t[3]=_):_=t[3];let v;t[4]===g?v=t[5]:(v=(0,A.jsxs)(o,{type:`button`,variant:`outline`,size:`sm`,onClick:g,children:[_,`Copy app manifest`]}),t[4]=g,t[5]=v);let y;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,A.jsx)(o,{type:`button`,variant:`outline`,size:`sm`,asChild:!0,children:(0,A.jsxs)(`a`,{href:`/slack-app-icon.png`,download:`tarsk-slack-app-icon.png`,children:[(0,A.jsx)(u,{className:`mr-2 h-4 w-4`}),`Download app icon`]})}),t[6]=y):y=t[6];let b;t[7]===v?b=t[8]:(b=(0,A.jsx)(T,{title:`App Manifest`,description:`Create a Slack app from this manifest, enable Socket Mode, then paste the Bot and App-Level tokens below. The Slack manifest cannot include an app icon — download the Tarsk logo and upload it under Basic Information after creating the app.`,controlLayout:`row-end`,action:(0,A.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[v,y]})}),t[7]=v,t[8]=b);let x;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(x=a(`text-muted-foreground`,i.bodyMuted),t[9]=x):x=t[9];let S;t[10]===n?S=t[11]:(S=j(n),t[10]=n,t[11]=S);let C;t[12]===S?C=t[13]:(C=(0,A.jsx)(T,{title:`Status`,description:`Bot identity and Socket Mode bridge status.`,children:(0,A.jsx)(`span`,{className:x,children:S})}),t[12]=S,t[13]=C);let O=n.botTokenPreview||`xoxb-…`,M;t[14]===d?M=t[15]:(M=e=>d(`botToken`,e.target.value),t[14]=d,t[15]=M);let N;t[16]!==r.botToken||t[17]!==O||t[18]!==M?(N=(0,A.jsx)(T,{title:`Bot Token`,description:`Bot User OAuth Token from your Slack app (starts with xoxb-).`,children:(0,A.jsx)(D,{id:`slack-bot-token`,type:`password`,autoComplete:`off`,placeholder:O,value:r.botToken,onChange:M})}),t[16]=r.botToken,t[17]=O,t[18]=M,t[19]=N):N=t[19];let P=n.appTokenPreview||`xapp-…`,F;t[20]===d?F=t[21]:(F=e=>d(`appToken`,e.target.value),t[20]=d,t[21]=F);let I;t[22]!==r.appToken||t[23]!==P||t[24]!==F?(I=(0,A.jsx)(T,{title:`App-Level Token`,description:`App-Level Token with connections:write for Socket Mode (starts with xapp-).`,children:(0,A.jsx)(D,{id:`slack-app-token`,type:`password`,autoComplete:`off`,placeholder:P,value:r.appToken,onChange:F})}),t[22]=r.appToken,t[23]=P,t[24]=F,t[25]=I):I=t[25];let L;t[26]===f?L=t[27]:(L=()=>void f(),t[26]=f,t[27]=L);let R;t[28]!==r.appToken||t[29]!==r.botToken||t[30]!==s?(R=s||!r.botToken.trim()||!r.appToken.trim(),t[28]=r.appToken,t[29]=r.botToken,t[30]=s,t[31]=R):R=t[31];let z;t[32]===s?z=t[33]:(z=s?(0,A.jsx)(c,{className:`mr-2 h-4 w-4 animate-spin`}):null,t[32]=s,t[33]=z);let B;t[34]!==L||t[35]!==R||t[36]!==z?(B=(0,A.jsxs)(o,{type:`button`,onClick:L,disabled:R,children:[z,`Save`]}),t[34]=L,t[35]=R,t[36]=z,t[37]=B):B=t[37];let V;t[38]!==s||t[39]!==p||t[40]!==n.configured?(V=n.configured?(0,A.jsx)(o,{type:`button`,variant:`outline`,onClick:()=>void p(),disabled:s,children:`Clear`}):null,t[38]=s,t[39]=p,t[40]=n.configured,t[41]=V):V=t[41];let H;t[42]!==B||t[43]!==V?(H=(0,A.jsx)(T,{title:`Tokens`,description:`Save both tokens to start the bridge, or clear them to disconnect.`,controlLayout:`row-end`,action:(0,A.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[B,V]})}),t[42]=B,t[43]=V,t[44]=H):H=t[44];let U;return t[45]!==N||t[46]!==I||t[47]!==H||t[48]!==b||t[49]!==C?(U=(0,A.jsxs)(`div`,{children:[h,(0,A.jsxs)(w,{children:[b,C,N,I,H]})]}),t[45]=N,t[46]=I,t[47]=H,t[48]=b,t[49]=C,t[50]=U):U=t[50],U}function P(e){let t=(0,k.c)(20),{binding:n,projects:r,onDelete:c}=e,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=a(i.compact),t[0]=l):l=t[0];let u=n.slackChannelName||n.slackChannelId,d;t[1]===u?d=t[2]:(d=(0,A.jsx)(`div`,{className:`font-medium`,children:u}),t[1]=u,t[2]=d);let f;t[3]!==n||t[4]!==r?(f=M(n,r),t[3]=n,t[4]=r,t[5]=f):f=t[5];let p;t[6]===f?p=t[7]:(p=(0,A.jsx)(`div`,{className:`text-muted-foreground`,children:f}),t[6]=f,t[7]=p);let m;t[8]!==d||t[9]!==p?(m=(0,A.jsxs)(`div`,{className:l,children:[d,p]}),t[8]=d,t[9]=p,t[10]=m):m=t[10];let h;t[11]!==n||t[12]!==c?(h=()=>void c(n),t[11]=n,t[12]=c,t[13]=h):h=t[13];let g;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,A.jsx)(s,{className:`h-4 w-4`}),t[14]=g):g=t[14];let _;t[15]===h?_=t[16]:(_=(0,A.jsx)(o,{type:`button`,variant:`ghost`,size:`icon`,onClick:h,"aria-label":`Remove binding`,children:g}),t[15]=h,t[16]=_);let v;return t[17]!==m||t[18]!==_?(v=(0,A.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border px-3 py-2`,children:[m,_]}),t[17]=m,t[18]=_,t[19]=v):v=t[19],v}function F(e){let t=(0,k.c)(45),{settings:n,projects:r,drafts:s,isSavingBinding:l,onDraftChange:u,onAddBinding:d,onDeleteBinding:f}=e,p=n.channels.length>0,m=r.length>0,h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,A.jsx)(E,{title:`Channel Bindings`}),t[0]=h):h=t[0];let g;t[1]!==s.channelId||t[2]!==p||t[3]!==u||t[4]!==n.channels?(g=(0,A.jsx)(T,{title:`Slack Channel`,description:`Invite the bot to the channel first. Only channels the bot can see are listed.`,children:p?(0,A.jsxs)(O,{value:s.channelId||void 0,onValueChange:e=>u(`channelId`,e),children:[(0,A.jsx)(y,{id:`slack-channel`,"aria-label":`Slack Channel`,children:(0,A.jsx)(b,{placeholder:`Select a channel…`})}),(0,A.jsx)(x,{children:n.channels.map(L)})]}):(0,A.jsx)(D,{id:`slack-channel`,placeholder:`Channel ID (C…)`,value:s.channelId,onChange:e=>u(`channelId`,e.target.value)})}),t[1]=s.channelId,t[2]=p,t[3]=u,t[4]=n.channels,t[5]=g):g=t[5];let _=s.projectId||void 0,v;t[6]===u?v=t[7]:(v=e=>u(`projectId`,e),t[6]=u,t[7]=v);let S=!m,C=m?`Select a project…`:`No projects`,j;t[8]===C?j=t[9]:(j=(0,A.jsx)(y,{id:`slack-project`,"aria-label":`Tarsk Project`,children:(0,A.jsx)(b,{placeholder:C})}),t[8]=C,t[9]=j);let M;t[10]===r?M=t[11]:(M=r.map(I),t[10]=r,t[11]=M);let N;t[12]===M?N=t[13]:(N=(0,A.jsx)(x,{children:M}),t[12]=M,t[13]=N);let F;t[14]!==_||t[15]!==v||t[16]!==S||t[17]!==j||t[18]!==N?(F=(0,A.jsx)(T,{title:`Tarsk Project`,description:`Each Slack channel maps to one Tarsk project.`,children:(0,A.jsxs)(O,{value:_,onValueChange:v,disabled:S,children:[j,N]})}),t[14]=_,t[15]=v,t[16]=S,t[17]=j,t[18]=N,t[19]=F):F=t[19];let R;t[20]===d?R=t[21]:(R=()=>void d(),t[20]=d,t[21]=R);let z;t[22]!==s.channelId||t[23]!==s.projectId||t[24]!==l?(z=l||!s.channelId.trim()||!s.projectId,t[22]=s.channelId,t[23]=s.projectId,t[24]=l,t[25]=z):z=t[25];let B;t[26]===l?B=t[27]:(B=l?(0,A.jsx)(c,{className:`mr-2 h-4 w-4 animate-spin`}):null,t[26]=l,t[27]=B);let V;t[28]!==R||t[29]!==z||t[30]!==B?(V=(0,A.jsx)(T,{title:`Bind`,description:`Create a channel ↔ project binding.`,controlLayout:`row-end`,action:(0,A.jsxs)(o,{type:`button`,onClick:R,disabled:z,children:[B,`Bind channel`]})}),t[28]=R,t[29]=z,t[30]=B,t[31]=V):V=t[31];let H;t[32]!==F||t[33]!==V||t[34]!==g?(H=(0,A.jsxs)(w,{children:[g,F,V]}),t[32]=F,t[33]=V,t[34]=g,t[35]=H):H=t[35];let U;t[36]!==f||t[37]!==r||t[38]!==n.bindings?(U=n.bindings.length===0?(0,A.jsx)(`p`,{className:a(`text-muted-foreground`,i.compact),children:`No bindings yet.`}):n.bindings.map(e=>(0,A.jsx)(P,{binding:e,projects:r,onDelete:f},`${e.slackTeamId}:${e.slackChannelId}`)),t[36]=f,t[37]=r,t[38]=n.bindings,t[39]=U):U=t[39];let W;t[40]===U?W=t[41]:(W=(0,A.jsx)(`div`,{className:`mt-4 flex flex-col gap-2`,children:U}),t[40]=U,t[41]=W);let G;return t[42]!==H||t[43]!==W?(G=(0,A.jsxs)(`div`,{children:[h,H,W]}),t[42]=H,t[43]=W,t[44]=G):G=t[44],G}function I(e){return(0,A.jsx)(S,{value:e.projectId,children:e.name},e.projectId)}function L(e){return(0,A.jsx)(S,{value:e.id,children:e.name},e.id)}var R=e(n(),1),z={botToken:``,appToken:``,channelId:``,projectId:``},B={tokens:!1,binding:!1};function V(e,t){v({title:e,description:t instanceof Error?t.message:String(t),variant:`destructive`})}function H(){let[e,t]=(0,R.useState)(null),[n,r]=(0,R.useState)([]),[i,a]=(0,R.useState)(``),[o,s]=(0,R.useState)(z),[c,l]=(0,R.useState)(!0),[u,y]=(0,R.useState)(B),b=(0,R.useCallback)(async()=>{let[e,n]=await Promise.all([p(),d()]);t(e),r(n.projects)},[]);(0,R.useEffect)(()=>{let e=!1;async function n(){l(!0);try{let[n,i,o]=await Promise.all([p(),d(),f()]);e||(t(n),r(i.projects),a(o.manifest),i.projects[0]&&s(e=>e.projectId?e:{...e,projectId:i.projects[0].projectId}))}catch(t){e||V(`Failed to load Slack settings`,t)}finally{e||l(!1)}}return n(),()=>{e=!0}},[]);function x(e,t){s(n=>({...n,[e]:t}))}function S(e,t){y(n=>({...n,[e]:t}))}async function C(){let e=o.botToken.trim(),t=o.appToken.trim();if(!(!e||!t)){S(`tokens`,!0);try{await g({botToken:e,appToken:t}),s(e=>({...e,botToken:``,appToken:``})),await b(),v({title:`Slack tokens saved`})}catch(e){V(`Failed to save tokens`,e)}finally{S(`tokens`,!1)}}}async function w(){S(`tokens`,!0);try{await h(),await b(),v({title:`Slack tokens cleared`})}catch(e){V(`Failed to clear tokens`,e)}finally{S(`tokens`,!1)}}async function T(){let t=o.channelId.trim();if(!(!t||!o.projectId)){S(`binding`,!0);try{let n=e?.channels.find(e=>e.id===t);await _({slackChannelId:t,projectId:o.projectId,...n?{slackChannelName:n.name}:{}}),s(e=>({...e,channelId:``})),await b(),v({title:`Channel bound`})}catch(e){V(`Failed to bind channel`,e)}finally{S(`binding`,!1)}}}async function E(e){try{await m(e.slackTeamId,e.slackChannelId),await b(),v({title:`Binding removed`})}catch(e){V(`Failed to remove binding`,e)}}async function D(){try{await navigator.clipboard.writeText(i||(await f()).manifest),v({title:`Manifest copied`})}catch(e){V(`Failed to copy manifest`,e)}}return{settings:e,projects:n,manifest:i,drafts:o,isLoading:c,saving:u,setDraft:x,saveTokens:C,clearTokens:w,addBinding:T,deleteBinding:E,copyManifest:D}}function U(){let e=(0,k.c)(20),t=H();if(t.isLoading||!t.settings){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,A.jsx)(C,{title:`Slack`,description:`Loading Slack settings…`,children:(0,A.jsxs)(`div`,{className:a(`flex items-center gap-2 text-muted-foreground`,i.compact),children:[(0,A.jsx)(c,{className:`h-4 w-4 animate-spin`}),`Loading Slack settings…`]})}),e[0]=t):t=e[0],t}let n;e[1]!==t.clearTokens||e[2]!==t.copyManifest||e[3]!==t.drafts||e[4]!==t.saveTokens||e[5]!==t.saving.tokens||e[6]!==t.setDraft||e[7]!==t.settings?(n=(0,A.jsx)(N,{settings:t.settings,drafts:t.drafts,isSavingTokens:t.saving.tokens,onDraftChange:t.setDraft,onSaveTokens:t.saveTokens,onClearTokens:t.clearTokens,onCopyManifest:t.copyManifest}),e[1]=t.clearTokens,e[2]=t.copyManifest,e[3]=t.drafts,e[4]=t.saveTokens,e[5]=t.saving.tokens,e[6]=t.setDraft,e[7]=t.settings,e[8]=n):n=e[8];let r;e[9]!==t.addBinding||e[10]!==t.deleteBinding||e[11]!==t.drafts||e[12]!==t.projects||e[13]!==t.saving.binding||e[14]!==t.setDraft||e[15]!==t.settings?(r=(0,A.jsx)(F,{settings:t.settings,projects:t.projects,drafts:t.drafts,isSavingBinding:t.saving.binding,onDraftChange:t.setDraft,onAddBinding:t.addBinding,onDeleteBinding:t.deleteBinding}),e[9]=t.addBinding,e[10]=t.deleteBinding,e[11]=t.drafts,e[12]=t.projects,e[13]=t.saving.binding,e[14]=t.setDraft,e[15]=t.settings,e[16]=r):r=e[16];let o;return e[17]!==n||e[18]!==r?(o=(0,A.jsx)(C,{title:`Slack`,description:`Connect a Slack app (Socket Mode) and bind channels to Tarsk projects.`,children:(0,A.jsxs)(`div`,{className:`flex flex-col gap-8`,children:[n,r]})}),e[17]=n,e[18]=r,e[19]=o):o=e[19],o}export{U as default};