@ironmussa/funny 0.1.7 → 0.1.8

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 (88) hide show
  1. package/README.md +5 -6
  2. package/bin/funny.js +88 -26
  3. package/package.json +3 -1
  4. package/packages/client/dist/assets/{AcceptInvitePage-BjMGmkD4.js → AcceptInvitePage-rU3bsShb.js} +1 -1
  5. package/packages/client/dist/assets/{ActivityPane-Cl-bUP3W.js → ActivityPane-_esdCTUa.js} +1 -1
  6. package/packages/client/dist/assets/{AddProjectView-DZuks8BQ.js → AddProjectView-DbYb4Fj3.js} +1 -1
  7. package/packages/client/dist/assets/{AllThreadsView-DdT3QdFb.js → AllThreadsView-BydYhYmA.js} +1 -1
  8. package/packages/client/dist/assets/{AnalyticsView-b_BZhrh1.js → AnalyticsView-BB2Ry67l.js} +1 -1
  9. package/packages/client/dist/assets/{App-CY9kuarV.js → App-DUg9Ibif.js} +3 -3
  10. package/packages/client/dist/assets/{AutomationInboxView-BQfGidRk.js → AutomationInboxView-BwTXxoaj.js} +1 -1
  11. package/packages/client/dist/assets/{BrowserPanel-CY_wB1AB.js → BrowserPanel-DQ8qgIKh.js} +1 -1
  12. package/packages/client/dist/assets/{BrowserPreview-2gdJqMpN.js → BrowserPreview-CYbez9uL.js} +1 -1
  13. package/packages/client/dist/assets/{CircuitBreakerDialog-B6kP1aCS.js → CircuitBreakerDialog-DWNXYG6L.js} +1 -1
  14. package/packages/client/dist/assets/{CommandPalette-DeBQCdqo.js → CommandPalette-Xtu8FVFI.js} +1 -1
  15. package/packages/client/dist/assets/{CommentsPane-JY0CN5R2.js → CommentsPane-BbeD18iG.js} +1 -1
  16. package/packages/client/dist/assets/{CsvTable-CaJ4BQ4d.js → CsvTable-CRwHp6ct.js} +1 -1
  17. package/packages/client/dist/assets/{FileSearchDialog-C2RhpM7Z.js → FileSearchDialog-BHaSfVdS.js} +1 -1
  18. package/packages/client/dist/assets/{FileTree-Bl25zGAE.js → FileTree-Dnh5srh4.js} +1 -1
  19. package/packages/client/dist/assets/{FolderPicker-CpXi_ZrF.js → FolderPicker-BBAhdFeF.js} +1 -1
  20. package/packages/client/dist/assets/{GeneralSettingsView-f8pBncJY.js → GeneralSettingsView-Q-zEISEg.js} +2 -2
  21. package/packages/client/dist/assets/{GitProgressModal-CJG5MsSI.js → GitProgressModal-2BUdcYw_.js} +1 -1
  22. package/packages/client/dist/assets/{LiveColumnsView-DwUkXA8m.js → LiveColumnsView-CWo09zTG.js} +1 -1
  23. package/packages/client/dist/assets/{LoginPage-CkgRw9Ji.js → LoginPage-BPM6y1Yj.js} +1 -1
  24. package/packages/client/dist/assets/{MediaPreview-DmMe4hGN.js → MediaPreview-JO18IhtD.js} +1 -1
  25. package/packages/client/dist/assets/{MediaPreviewDialog-DHIv3gai.js → MediaPreviewDialog-HOtpKIQD.js} +1 -1
  26. package/packages/client/dist/assets/{MermaidBlock-BZLj2TmL.js → MermaidBlock-DxJPnpCS.js} +1 -1
  27. package/packages/client/dist/assets/{MobilePage-BRWC2SVo.js → MobilePage-B9LixzUJ.js} +2 -2
  28. package/packages/client/dist/assets/{MonacoEditorDialog-CTUQ5NFr.js → MonacoEditorDialog-BGuOUdlF.js} +1 -1
  29. package/packages/client/dist/assets/{OrchestratorView-wTF6Ae0A.js → OrchestratorView-BiNJtR8P.js} +1 -1
  30. package/packages/client/dist/assets/{PreferencesPanel-CpIL485D.js → PreferencesPanel-DEJ3B3Mx.js} +1 -1
  31. package/packages/client/dist/assets/{PreviewBrowser-CEXO1tHq.js → PreviewBrowser-pI5xiPAQ.js} +1 -1
  32. package/packages/client/dist/assets/{ProjectFilesPane-02_p9zry.js → ProjectFilesPane-H9zl1XxW.js} +1 -1
  33. package/packages/client/dist/assets/{ProjectHeader-TWkvwAxm.js → ProjectHeader-CewLbcv6.js} +1 -1
  34. package/packages/client/dist/assets/{ProjectHooksSettings-CIaY32WM.js → ProjectHooksSettings-Dz9pRWek.js} +1 -1
  35. package/packages/client/dist/assets/{ReviewPane-DHTvq8t1.js → ReviewPane-CdspHwl1.js} +1 -1
  36. package/packages/client/dist/assets/{SearchablePicker-BJnuJVEi.js → SearchablePicker-BlagKlJZ.js} +1 -1
  37. package/packages/client/dist/assets/{SettingsDetailView-eBDvn5cS.js → SettingsDetailView-DdyYDZde.js} +1 -1
  38. package/packages/client/dist/assets/{SettingsPageContent-CiHRUvG3.js → SettingsPageContent-ChL9gIzA.js} +3 -3
  39. package/packages/client/dist/assets/{SetupWizard-B8rFRPma.js → SetupWizard-B3KuWJkX.js} +1 -1
  40. package/packages/client/dist/assets/{Sidebar-CPU0yoaQ.js → Sidebar-Cp0Ic-cc.js} +1 -1
  41. package/packages/client/dist/assets/{StashTab-BswTfOlb.js → StashTab-CAqDgV-y.js} +1 -1
  42. package/packages/client/dist/assets/{TestRunnerPane-DZXDbHCu.js → TestRunnerPane-RwW_FDpa.js} +1 -1
  43. package/packages/client/dist/assets/{TextSearchDialog-BUMBp448.js → TextSearchDialog-Q9Pvzolm.js} +1 -1
  44. package/packages/client/dist/assets/{ThreadPowerline-CSegubLW.js → ThreadPowerline-DVWTyxRC.js} +1 -1
  45. package/packages/client/dist/assets/{ThreadStatusPin-DhrEC0n-.js → ThreadStatusPin-CsUuwM1e.js} +1 -1
  46. package/packages/client/dist/assets/{ThreadView-hYXeM23q.js → ThreadView-PbhTHc_b.js} +1 -1
  47. package/packages/client/dist/assets/{app-store-DKW9sVHv.js → app-store-DjqdXPml.js} +1 -1
  48. package/packages/client/dist/assets/{automation-store-C8v9UlHX.js → automation-store-CN7G1rmj.js} +1 -1
  49. package/packages/client/dist/assets/{browser-panel-store-CSx5jc7O.js → browser-panel-store-BrY0M-3u.js} +2 -2
  50. package/packages/client/dist/assets/{button-B9Ypx1uQ.js → button-DqIT3IPY.js} +1 -1
  51. package/packages/client/dist/assets/{combine-CIrCcf3o.js → combine-DMf_Pe7m.js} +1 -1
  52. package/packages/client/dist/assets/{comment-store-BfRTY3FY.js → comment-store-BLJA7qy5.js} +1 -1
  53. package/packages/client/dist/assets/{diff-parse-DgLol0S6.js → diff-parse-DoxsYsvR.js} +1 -1
  54. package/packages/client/dist/assets/{element-yfBHMYal.js → element-CWNkjFyh.js} +1 -1
  55. package/packages/client/dist/assets/{go-to-thread-DD0G5vFp.js → go-to-thread-1QCGvOr9.js} +1 -1
  56. package/packages/client/dist/assets/{index-DNxUSLe_.js → index-CmX0PQ41.js} +2 -2
  57. package/packages/client/dist/assets/{input-CJ3TsT2L.js → input-Bi-kCBn4.js} +1 -1
  58. package/packages/client/dist/assets/{items-7qqySF-X.js → items-z89mbR0g.js} +1 -1
  59. package/packages/client/dist/assets/{job-store-0PeOgBpX.js → job-store-C6L3TZ6m.js} +1 -1
  60. package/packages/client/dist/assets/{kbd-d4Wzagpn.js → kbd-CYltzHK-.js} +1 -1
  61. package/packages/client/dist/assets/{loading-state-yLj5fYb6.js → loading-state-CuNSmah_.js} +1 -1
  62. package/packages/client/dist/assets/{markdown-components-DxMKBjnh.js → markdown-components-CDAAlOfJ.js} +1 -1
  63. package/packages/client/dist/assets/{native-git-store-CCenGgLt.js → native-git-store-BRK3QIOm.js} +1 -1
  64. package/packages/client/dist/assets/{orchestrator-store-DP8UohlO.js → orchestrator-store-CpN46D7d.js} +1 -1
  65. package/packages/client/dist/assets/{pipeline-approval-store-BiH1mYlB.js → pipeline-approval-store-L_CnXcgU.js} +1 -1
  66. package/packages/client/dist/assets/{pr-detail-store-DHF0exs_.js → pr-detail-store-9Jf4dkle.js} +1 -1
  67. package/packages/client/dist/assets/{providers-Dd9yhyUY.js → providers-CDWMbzb0.js} +1 -1
  68. package/packages/client/dist/assets/{sidebar-Dzb_F1kj.js → sidebar-thesisNh.js} +1 -1
  69. package/packages/client/dist/assets/{tabs-Cu3cWMHb.js → tabs-D2Tzh6Ge.js} +1 -1
  70. package/packages/client/dist/assets/{test-store-D72ZqWH2.js → test-store-BIzIn_1p.js} +1 -1
  71. package/packages/client/dist/assets/{tooltip-icon-button-8C1wJ-l9.js → tooltip-icon-button-pAxgBlHP.js} +1 -1
  72. package/packages/client/dist/assets/use-active-thread-id-BBsLXIrt.js +1 -0
  73. package/packages/client/dist/assets/{use-branch-switch-C45m2mx7.js → use-branch-switch-Z5J9CKxB.js} +1 -1
  74. package/packages/client/dist/assets/{use-image-lightbox-CsMDwY1v.js → use-image-lightbox-Bu7huixI.js} +1 -1
  75. package/packages/client/dist/assets/{use-stable-navigate-Cz_jWBHP.js → use-stable-navigate-D0phYEEB.js} +1 -1
  76. package/packages/client/dist/assets/{use-terminal-scope-BX8zAMzc.js → use-terminal-scope-CWqnHWM0.js} +1 -1
  77. package/packages/client/dist/assets/{use-thread-creation-DSLV7F8I.js → use-thread-creation-d4X0pWGi.js} +1 -1
  78. package/packages/client/dist/assets/{use-thread-search-CXsiNqRR.js → use-thread-search-BGPGuqA-.js} +1 -1
  79. package/packages/client/dist/assets/{use-todo-panel-DjPuehjq.js → use-todo-panel-Dh6mAnT6.js} +1 -1
  80. package/packages/client/dist/assets/{use-unified-prompt-model-groups-wdA26Vnd.js → use-unified-prompt-model-groups-DK1DksUz.js} +1 -1
  81. package/packages/client/dist/assets/{use-ws-AWIhcFYo.js → use-ws-Dne_mRf6.js} +3 -3
  82. package/packages/client/dist/assets/{visualizer-loader-oxC04P38.js → visualizer-loader-Di5LNXnx.js} +1 -1
  83. package/packages/client/dist/assets/{watcher-store-gym76Ag_.js → watcher-store-CwGkvZwT.js} +1 -1
  84. package/packages/client/dist/index.html +1 -1
  85. package/packages/runtime/dist/index.js +2 -2
  86. package/packages/runtime/dist/index.js.map +1 -1
  87. package/packages/runtime/dist/pty-daemon.ts +508 -0
  88. package/packages/client/dist/assets/use-active-thread-id-ZlJtsqq4.js +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ProjectHooksSettings-CIaY32WM.js","assets/rolldown-runtime-Cyuzqnbw.js","assets/index-DNxUSLe_.js","assets/mermaid-DOtnPRYX.js","assets/dist-9FgEnJXd.js","assets/dist-Bdl9_5dx.js","assets/dist-D13Y8-qe.js","assets/icons-sqwAEN28.js","assets/tiptap-ByTP6yRf.js","assets/markdown-DBtwZWLP.js","assets/clsx-CjueKrWZ.js","assets/motion-622LpYRB.js","assets/_core-lD_pNs53.js","assets/initReactI18next-Dr0vnWXF.js","assets/auth-events-BAwnCYTy.js","assets/telemetry-BE4cJhqj.js","assets/circuit-breaker-store-DR3Dx8rQ.js","assets/react-B8mHUpgK.js","assets/index-CD_81O-J.css","assets/adapter-g71mvnZo.js","assets/items-7qqySF-X.js","assets/button-B9Ypx1uQ.js","assets/syntax-C54GZp2G.js","assets/useTranslation-DAPPK3Hy.js","assets/input-CJ3TsT2L.js","assets/monaco-dp65NPQw.js","assets/monaco-setup-pMTTM56o.js","assets/editor.api2-KGjWAjnM.js","assets/editor-Br_kD0ds.css","assets/app-store-DKW9sVHv.js"])))=>i.map(i=>d[i]);
2
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{B as t,D as n,En as r,F as i,Fn as a,Fr as o,Hn as s,Jt as c,Lt as l,O as u,Q as d,R as f,Rn as p,St as m,W as h,Z as g,_r as _,ar as v,b as y,ct as b,en as x,et as S,fr as C,i as w,k as T,kt as E,m as D,mr as ee,on as O,ot as te,pn as ne,pr as re,tt as k,un as ie,w as ae,yn as oe,yr as se,yt as ce,zn as le,zr as ue}from"./icons-sqwAEN28.js";import{At as de}from"./mermaid-DOtnPRYX.js";import{o as fe}from"./markdown-DBtwZWLP.js";import{i as A,o as j,s as pe}from"./dist-Bdl9_5dx.js";import{a as me}from"./dist-D13Y8-qe.js";import{t as M}from"./useTranslation-DAPPK3Hy.js";import{G as N,P,R as he,S as ge,T as _e,W as F,Y as ve,_t as ye,dt as be,f as xe,gt as Se,j as Ce,k as we,l as Te,lt as I,nt as Ee,q as L,t as De}from"./index-DNxUSLe_.js";import{t as R}from"./button-B9Ypx1uQ.js";import{$ as Oe,$r as ke,An as Ae,B as je,Bn as Me,Dr as Ne,Fn as Pe,Gr as Fe,H as Ie,Jr as Le,Lt as Re,Mn as ze,Nn as Be,P as Ve,Pn as He,Rt as Ue,Un as We,Ur as z,V as Ge,Wn as Ke,Wr as qe,Xr as Je,Xt as Ye,Yr as Xe,Z as Ze,a as Qe,an as $e,ar as et,at as tt,cr as nt,ct as rt,dr as it,et as at,fr as ot,hr as st,ht as ct,i as lt,jn as ut,lr as dt,m as ft,mn as pt,mr as mt,mt as ht,nt as gt,or as _t,ot as vt,pr as yt,pt as bt,qr as xt,rn as St,rt as Ct,sr as wt,st as Tt,tt as Et,ur as Dt,ut as B,vr as Ot,z as kt,zr as At}from"./items-7qqySF-X.js";import{t as V}from"./input-CJ3TsT2L.js";import{t as H}from"./loading-state-yLj5fYb6.js";import{t as jt}from"./use-ws-AWIhcFYo.js";import{t as U}from"./app-store-DKW9sVHv.js";import{t as Mt}from"./tooltip-icon-button-8C1wJ-l9.js";import{t as Nt}from"./FolderPicker-CpXi_ZrF.js";import{t as Pt}from"./ThreadStatusPin-DhrEC0n-.js";import{t as Ft}from"./ThreadPowerline-CSegubLW.js";import{n as It,o as Lt,r as Rt,u as zt}from"./providers-Dd9yhyUY.js";import{t as Bt}from"./SearchablePicker-BJnuJVEi.js";import{n as Vt}from"./automation-store-C8v9UlHX.js";import{t as Ht}from"./SettingRow-D53ijhNn.js";import{t as Ut}from"./use-minute-tick-C-e4HaZD.js";var W=e(ue(),1),G=e(fe(),1),Wt=[{id:`claude`,label:`Claude`},{id:`codex`,label:`Codex`},{id:`gemini`,label:`Gemini`},{id:`cursor`,label:`Cursor`},{id:`opencode`,label:`opencode`},{id:`pi`,label:`Pi`},{id:`deepagent`,label:`DeepAgent`}],Gt={skill:{label:`Skills`,icon:T},"slash-command":{label:`Slash Commands`,icon:u},"mcp-server":{label:`MCP Servers`,icon:f},plugin:{label:`Plugins`,icon:T},connector:{label:`Connectors`,icon:f},"builtin-tool":{label:`Built-in Tools`,icon:T},template:{label:`Templates`,icon:T}},Kt=[`skill`,`slash-command`,`mcp-server`,`plugin`,`connector`,`builtin-tool`,`template`];function qt({resource:e,dimmed:t}){return(0,G.jsxs)(`div`,{className:I(`border-border/50 bg-card flex items-center justify-between gap-3 rounded-md border px-3 py-2`,t&&`opacity-60`),style:{borderLeftWidth:3,borderLeftColor:Pe(e.name)},"data-testid":`agent-resource-${e.kind}-${e.name}`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`span`,{className:`truncate font-mono text-sm`,children:e.kind===`slash-command`?`/${e.name}`:e.name}),e.commandTier&&(0,G.jsx)(`span`,{className:`bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-[10px] font-medium`,children:e.commandTier})]}),e.description&&(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 truncate text-xs`,children:e.description}),(0,G.jsx)(`span`,{className:`text-muted-foreground/70 text-xs`,children:e.origin})]}),t&&e.hiddenReason&&(0,G.jsxs)(`span`,{className:`text-muted-foreground/70 inline-flex shrink-0 items-center gap-1 text-xs`,children:[(0,G.jsx)(p,{className:`icon-2xs`}),e.hiddenReason]})]})}function Jt(){let{t:e}=M(),t=U(e=>e.projects),n=U(e=>e.selectedProjectId),[r,i]=(0,W.useState)(`claude`),[a,o]=(0,W.useState)([]),[s,c]=(0,W.useState)([]),[l,u]=(0,W.useState)(!1),d=n?t.find(e=>e.id===n)?.path??void 0:t[0]?.path??void 0,f=(0,W.useCallback)(async()=>{u(!0);let e=await P.listAgentResources({projectPath:d,provider:r,phase:`settings`});e.isOk()?(o(e.value.resources),c(e.value.hidden)):(Ke(e.error),o([]),c([])),u(!1)},[d,r]);(0,W.useEffect)(()=>{f()},[f]);let m=(0,W.useMemo)(()=>{let e=new Map;for(let t of a){let n=e.get(t.kind)??[];n.push(t),e.set(t.kind,n)}return e},[a]);return(0,G.jsxs)(`div`,{className:`space-y-6`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{className:`text-sm font-medium`,children:e(`settings.agentResources`)}),(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:e(`agentResources.subtitle`)})]}),(0,G.jsxs)(Tt,{value:r,onValueChange:i,children:[(0,G.jsx)(bt,{className:`w-44`,"data-testid":`agent-resources-provider`,children:(0,G.jsx)(ht,{})}),(0,G.jsx)(rt,{children:Wt.map(e=>(0,G.jsx)(B,{value:e.id,"data-testid":`agent-resources-provider-${e.id}`,children:e.label},e.id))})]})]}),l?(0,G.jsx)(H,{fill:!1,layout:`inline`,className:`py-6`,testId:`agent-resources-loading`,label:e(`common.loading`)}):(0,G.jsxs)(G.Fragment,{children:[Kt.filter(e=>m.has(e)).map(e=>{let t=Gt[e].icon,n=m.get(e);return(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`h3`,{className:`text-muted-foreground mb-2 flex items-center gap-1.5 text-xs font-semibold tracking-wider uppercase`,children:[(0,G.jsx)(t,{className:`icon-xs`}),Gt[e].label]}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:n.map((e,t)=>(0,G.jsx)(qt,{resource:e},`${e.kind}-${e.name}-${t}`))})]},e)}),a.length===0&&(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`agentResources.empty`)}),s.length>0&&(0,G.jsxs)(`div`,{"data-testid":`agent-resources-incompatible`,children:[(0,G.jsxs)(`h3`,{className:`text-muted-foreground mb-2 flex items-center gap-1.5 text-xs font-semibold tracking-wider uppercase`,children:[(0,G.jsx)(p,{className:`icon-xs`}),e(`agentResources.incompatible`)]}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:s.map((e,t)=>(0,G.jsx)(qt,{resource:e,dimmed:!0},`hidden-${e.kind}-${e.name}-${t}`))})]})]})]})}var Yt=60,Xt=5;function Zt({threads:e,search:t,contentSnippets:n,emptyMessage:r,searchEmptyMessage:i,onThreadClick:a,renderExtraBadges:o,renderActions:s,hideBranch:c=!1,hasMore:l=!1,loadingMore:u=!1,onEndReached:d,onSearchKeyDownRef:f,className:p}){let{t:m}=M();Ut();let h=Re(e=>e.pinThread),g=(0,W.useRef)(null),[_,v]=(0,W.useState)(-1),y=Ot({count:e.length,getScrollElement:()=>g.current,estimateSize:()=>Yt,getItemKey:t=>e[t]?.id??t,overscan:10});(0,W.useEffect)(()=>{v(-1)},[t,e]);let b=(0,W.useCallback)(t=>{if(!(!a||e.length===0))if(t.key===`ArrowDown`){t.preventDefault();let n=_<e.length-1?_+1:0;v(n),y.scrollToIndex(n,{align:`auto`})}else if(t.key===`ArrowUp`){t.preventDefault();let n=_>0?_-1:e.length-1;v(n),y.scrollToIndex(n,{align:`auto`})}else t.key===`Enter`&&_>=0&&_<e.length&&(t.preventDefault(),a(e[_]))},[e,a,_,y]);(0,W.useEffect)(()=>{if(f)return f.current=b,()=>{f&&(f.current=null)}},[f,b]);let x=y.getVirtualItems();return(0,W.useEffect)(()=>{if(!l||u||!d)return;let t=x[x.length-1];t&&t.index>=e.length-1-Xt&&d()},[x,l,u,d,e.length]),e.length===0?(0,G.jsx)(`div`,{className:I(`flex h-32 items-center justify-center text-xs text-muted-foreground`,p),children:t?i:r}):(0,G.jsx)(`div`,{className:I(`flex min-h-0 flex-1 flex-col`,p),children:(0,G.jsxs)(`div`,{ref:g,"data-testid":`virtual-thread-list-scroll`,className:`border-border/50 min-h-0 flex-1 overflow-y-auto rounded-lg border`,children:[(0,G.jsx)(`div`,{style:{height:`${y.getTotalSize()}px`,width:`100%`,position:`relative`},children:x.map(r=>{let i=e[r.index];return i?(0,G.jsxs)(a?`button`:`div`,{"data-index":r.index,"data-testid":`virtual-thread-item-${i.id}`,ref:y.measureElement,...a?{onClick:()=>a(i)}:{},onMouseMove:()=>v(r.index),className:I(`w-full flex items-center gap-3 px-3 py-2.5 border-b border-border/50 group/row outline-hidden`,a&&`text-left hover:bg-accent/50 transition-colors`,r.index===_&&`bg-accent/50`),style:{position:`absolute`,top:0,left:0,transform:`translateY(${r.start}px)`},children:[(0,G.jsx)(Pt,{thread:i,onPin:e=>h(i.id,i.projectId,e),hoverGroup:`row`,showStatusTooltip:!0}),(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsx)(ft,{title:i.title,search:t,className:`block text-sm font-medium`,badgeTestId:`virtual-thread-item-attachments-${i.id}`,stopBadgePropagation:!0}),n?.get(i.id)&&t&&!He(i.title).includes(He(t))&&(0,G.jsx)(Be,{text:n.get(i.id),query:t,className:`text-muted-foreground block truncate text-[11px] italic`}),(0,G.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2`,children:[o?.(i),!c&&(be(i)||i.baseBranch)&&(0,G.jsx)(Ie,{branch:be(i)||i.baseBranch,size:`xs`,className:`max-w-[150px]`})]})]}),(0,G.jsx)(`span`,{className:`text-muted-foreground hidden shrink-0 text-xs sm:inline`,children:St(i.completedAt??i.createdAt,m)}),s?.(i)]},r.key):null})}),u&&(0,G.jsx)(H,{fill:!1,layout:`inline`,size:`compact`,className:`py-3`,testId:`virtual-thread-list-loading-more`,label:m(`common.loading`)})]})})}var Qt=100;function $t(){let{t:e}=M(),t=U(e=>e.projects),n=U(e=>e.selectedProjectId),r=U(e=>e.loadThreadsForProject),i=We(e=>e.statusByBranch),[a,s]=(0,W.useState)([]),[c,l]=(0,W.useState)(0),[u,d]=(0,W.useState)(!0),[f,p]=(0,W.useState)(!1),[m,h]=(0,W.useState)(``),[g,_]=(0,W.useState)(``),[v,b]=(0,W.useState)(1),x=(0,W.useRef)(void 0),S=(0,W.useRef)(null),C=(0,W.useMemo)(()=>Object.fromEntries(t.map(e=>[e.id,e])),[t]),w=(0,W.useCallback)(async(e,t)=>{e===1?d(!0):p(!0);let r=await P.listArchivedThreads({page:e,limit:Qt,search:t||void 0,projectId:n||void 0});r.isOk()&&(l(r.value.total),s(t=>e===1?r.value.threads:[...t,...r.value.threads])),d(!1),p(!1)},[n]);(0,W.useEffect)(()=>{b(1),w(1,g)},[w,g]);let T=e=>{h(e),x.current&&clearTimeout(x.current),x.current=setTimeout(()=>_(e),300)},E=(0,W.useCallback)(()=>{if(u||f||a.length>=c)return;let e=v+1;b(e),w(e,g)},[u,f,a.length,c,v,w,g]),D=async t=>{(await P.archiveThread(t.id,!1)).isOk()?(s(e=>e.filter(e=>e.id!==t.id)),l(e=>e-1),r(t.projectId),z.success(e(`archived.restored`,{title:t.title}))):z.error(e(`archived.restoreFailed`))},ee=async t=>{confirm(e(`dialog.deleteThreadDesc`,{title:t.title}))&&(await P.deleteThread(t.id)).isOk()&&(s(e=>e.filter(e=>e.id!==t.id)),l(e=>e-1),z.success(e(`toast.threadDeleted`,{title:t.title})))},O=a.length<c;return(0,G.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col`,children:[(0,G.jsxs)(`div`,{className:`border-border/50 flex items-center gap-2 border-b px-4 py-2`,children:[(0,G.jsx)(pt,{inputRef:S,query:m,onQueryChange:T,totalMatches:a.length,resultLabel:m.trim()?`${a.length}/${c}`:``,onClose:m?()=>T(``):void 0,autoFocus:!0,placeholder:e(`archived.searchPlaceholder`),testIdPrefix:`archived-search`,className:`border-input h-7 w-72 shrink-0 rounded-md border bg-transparent px-2`}),(0,G.jsx)(`div`,{className:`bg-border h-4 w-px`}),(0,G.jsxs)(`span`,{className:`text-muted-foreground text-xs`,children:[c,` `,e(`archived.archivedCount`)]})]}),(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-4 py-3`,children:u?(0,G.jsx)(H,{fill:!1,layout:`inline`,size:`compact`,className:`h-32 shrink-0`,testId:`archived-loading`,label:e(`common.loading`)}):(0,G.jsx)(Zt,{threads:a,search:g,emptyMessage:e(`archived.noArchived`),searchEmptyMessage:e(`allThreads.noMatch`),hideBranch:!0,hasMore:O,loadingMore:f,onEndReached:E,renderExtraBadges:e=>{let t=i[Me(e)],n=C[e.projectId];return(0,G.jsx)(Ft,{thread:e,projectName:n?.name,projectColor:n?.color,gitStatus:t,diffStatsSize:`xxs`,"data-testid":`archived-thread-powerline-${e.id}`})},renderActions:t=>(0,G.jsxs)(`div`,{className:`flex items-center gap-1 opacity-0 transition-opacity group-hover/row:opacity-100`,children:[(0,G.jsx)(Mt,{onClick:()=>D(t),className:`text-muted-foreground hover:text-foreground`,tooltip:e(`archived.restore`),children:(0,G.jsx)(o,{className:`icon-sm`})}),(0,G.jsx)(Mt,{onClick:()=>ee(t),className:`text-muted-foreground hover:text-destructive`,tooltip:e(`common.delete`),children:(0,G.jsx)(y,{className:`icon-sm`})})]})})})]})}function en({options:e,value:t,onChange:n}){return(0,G.jsx)(`div`,{className:`border-border bg-muted/30 flex rounded-md border p-0.5`,children:e.map(e=>(0,G.jsxs)(`button`,{onClick:()=>n(e.value),"aria-pressed":t===e.value,"data-testid":e.testId,className:I(`flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-sm transition-colors`,t===e.value?`bg-background text-foreground shadow-xs`:`text-muted-foreground hover:text-foreground`),children:[e.icon,e.label]},e.value))})}var tn=[{value:`*/15 * * * *`,label:`Every 15 min`},{value:`*/30 * * * *`,label:`Every 30 min`},{value:`0 * * * *`,label:`Every hour`},{value:`0 */2 * * *`,label:`Every 2 hours`},{value:`0 */6 * * *`,label:`Every 6 hours`},{value:`0 */12 * * *`,label:`Every 12 hours`},{value:`0 9 * * *`,label:`Daily at 9am`},{value:`0 9 * * 1`,label:`Weekly (Mon 9am)`}];function nn(e){return tn.find(t=>t.value===e)?.label??e}var rn=[{value:`haiku`,label:`Haiku`},{value:`sonnet`,label:`Sonnet`},{value:`opus`,label:`Opus`}],an={name:``,prompt:``,schedule:`0 * * * *`,model:`sonnet`,permissionMode:`autoEdit`};function on(){let e=ye(),t=Se(),n=U(e=>e.selectedProjectId),r=Vt(e=>e.automationsByProject),i=Vt(e=>e.loadAutomations),a=Vt(e=>e.createAutomation),o=Vt(e=>e.updateAutomation),s=Vt(e=>e.deleteAutomation),c=Vt(e=>e.triggerAutomation),l=Vt(e=>e.selectedAutomationRuns),u=Vt(e=>e.loadRuns),[f,p]=(0,W.useState)(!1),[m,h]=(0,W.useState)(null),[g,_]=(0,W.useState)(an),[v,C]=(0,W.useState)(null),w=n&&r[n]||[];(0,W.useEffect)(()=>{n&&i(n)},[n,i]),(0,W.useEffect)(()=>{t.state?.openCreateAutomation&&(h(null),_(an),p(!0),e(t.pathname+t.search,{replace:!0,state:null}))},[t,e]);let T=()=>{h(null),_(an),p(!0)},E=e=>{h(e.id),_({name:e.name,prompt:e.prompt,schedule:e.schedule,model:e.model,permissionMode:e.permissionMode}),p(!0)},D=async(e=!1)=>{if(!n||!g.name.trim()||!g.prompt.trim())return;let t=null;m?(await o(m,{name:g.name.trim(),prompt:g.prompt.trim(),schedule:g.schedule,model:g.model,permissionMode:g.permissionMode}),t=m):t=(await a({projectId:n,name:g.name.trim(),prompt:g.prompt.trim(),schedule:g.schedule,model:g.model,permissionMode:g.permissionMode}))?.id??null,p(!1),e&&t&&await c(t)},ee=async e=>{await o(e.id,{enabled:!e.enabled})},O=async e=>{n&&await s(e.id,n)},ne=async e=>{await c(e.id)},re=e=>{C(e),u(e)};return n?(0,G.jsxs)(`div`,{className:`space-y-4`,children:[w.length>0&&(0,G.jsx)(`div`,{className:`flex items-center justify-end`,children:(0,G.jsxs)(R,{variant:`outline`,size:`sm`,className:`gap-1.5`,onClick:T,children:[(0,G.jsx)(d,{className:`icon-sm`}),`Create`]})}),w.length===0?(0,G.jsxs)(`div`,{className:`py-8 text-center`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground mb-3 text-sm`,children:`No automations yet.`}),(0,G.jsxs)(R,{variant:`outline`,size:`sm`,className:`gap-1.5`,onClick:T,children:[(0,G.jsx)(d,{className:`icon-sm`}),`Create your first automation`]})]}):w.map(t=>(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsxs)(`div`,{className:`settings-item-card group flex items-center justify-between gap-3`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`span`,{className:I(`h-2 w-2 rounded-full shrink-0`,t.enabled?`bg-status-success/80`:`bg-muted-foreground/30`)}),(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:t.name}),(0,G.jsx)(`span`,{className:`bg-muted text-muted-foreground shrink-0 rounded-full px-1.5 py-0.5 text-xs`,children:nn(t.schedule)}),(0,G.jsx)(`span`,{className:`bg-muted text-muted-foreground shrink-0 rounded-full px-1.5 py-0.5 text-xs`,children:t.model}),t.source===`config`&&(0,G.jsx)(`span`,{className:`shrink-0 rounded-full bg-blue-500/15 px-1.5 py-0.5 text-xs text-blue-500`,"data-testid":`automation-config-badge-${t.id}`,children:`.funny.json`})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 truncate pl-4 text-xs`,children:t.prompt}),t.lastRunAt&&(0,G.jsxs)(`p`,{className:`text-muted-foreground/70 mt-0.5 pl-4 text-xs`,children:[`Last run: `,new Date(t.lastRunAt).toLocaleString()]})]}),(0,G.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100`,children:[(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>ne(t),className:`text-status-success/80 hover:text-status-success`,children:(0,G.jsx)(S,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:`Run Now`})]}),(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>ee(t),className:`text-muted-foreground`,children:t.enabled?(0,G.jsx)(b,{className:`icon-sm`}):(0,G.jsx)(S,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:t.enabled?`Pause`:`Enable`})]}),(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>re(t.id),className:`text-muted-foreground`,children:(0,G.jsx)(x,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:`Run History`})]}),t.source!==`config`&&(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>E(t),className:`text-muted-foreground`,children:(0,G.jsx)(te,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:`Edit`})]}),t.source!==`config`&&(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>O(t),className:`text-muted-foreground hover:text-status-error`,children:(0,G.jsx)(y,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:`Delete`})]})]})]}),v===t.id&&(0,G.jsxs)(`div`,{className:`ml-4 space-y-1`,children:[l.length===0?(0,G.jsx)(`p`,{className:`text-muted-foreground py-2 pl-2 text-xs`,children:`No runs yet.`}):l.slice(0,10).map(t=>(0,G.jsxs)(`div`,{className:`border-border/30 flex items-center justify-between gap-2 rounded border px-2 py-1.5 text-xs`,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,G.jsx)(`span`,{className:I(`h-1.5 w-1.5 rounded-full shrink-0`,t.status===`running`?`bg-status-info animate-pulse`:t.status===`completed`?`bg-status-success/80`:t.status===`failed`?`bg-status-error`:`bg-muted-foreground/30`)}),(0,G.jsx)(`span`,{className:`text-muted-foreground truncate`,children:new Date(t.startedAt).toLocaleString()}),(0,G.jsx)(`span`,{className:`text-muted-foreground/70`,children:t.status})]}),(0,G.jsx)(R,{variant:`ghost`,size:`sm`,className:`h-5 px-1.5 text-xs`,onClick:()=>{e(Ue(`/projects/${n}/threads/${t.threadId}`))},children:`View`})]},t.id)),(0,G.jsx)(R,{variant:`ghost`,size:`sm`,className:`h-5 w-full text-xs`,onClick:()=>C(null),children:`Close`})]})]},t.id)),(0,G.jsx)(Fe,{open:f,onOpenChange:p,children:(0,G.jsxs)(xt,{className:`max-w-lg`,children:[(0,G.jsx)(Je,{children:(0,G.jsx)(ke,{children:m?`Edit Automation`:`Create Automation`})}),(0,G.jsxs)(`div`,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:`Name`}),(0,G.jsx)(V,{className:`settings-form-input`,placeholder:`e.g. Daily Issue Triage`,value:g.name,onChange:e=>_(t=>({...t,name:e.target.value})),autoFocus:!0})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:`Prompt`}),(0,G.jsx)(qe,{className:`min-h-[100px] resize-y text-sm`,placeholder:`What should the agent do?`,value:g.prompt,onChange:e=>_(t=>({...t,prompt:e.target.value}))})]}),(0,G.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:`Schedule`}),(0,G.jsxs)(Tt,{value:tn.some(e=>e.value===g.schedule)?g.schedule:`__custom__`,onValueChange:e=>{e!==`__custom__`&&_(t=>({...t,schedule:e}))},children:[(0,G.jsx)(bt,{className:`w-full`,children:(0,G.jsx)(ht,{})}),(0,G.jsxs)(rt,{children:[tn.map(e=>(0,G.jsx)(B,{value:e.value,children:e.label},e.value)),(0,G.jsx)(B,{value:`__custom__`,children:`Custom cron…`})]})]}),!tn.some(e=>e.value===g.schedule)&&(0,G.jsx)(V,{className:`settings-form-input mt-1.5 font-mono text-xs`,placeholder:`*/30 * * * *`,value:g.schedule,onChange:e=>_(t=>({...t,schedule:e.target.value}))}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-1 text-xs`,children:`Cron: min hour day month weekday`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:`Model`}),(0,G.jsx)(en,{options:rn,value:g.model,onChange:e=>_(t=>({...t,model:e}))})]})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Automations run locally in read-only mode (no file writes).`})]}),(0,G.jsxs)(Xe,{children:[(0,G.jsx)(R,{variant:`outline`,size:`sm`,onClick:()=>p(!1),children:`Cancel`}),(0,G.jsxs)(R,{variant:`outline`,size:`sm`,onClick:()=>D(!0),disabled:!g.name.trim()||!g.prompt.trim(),className:`gap-1.5`,children:[(0,G.jsx)(S,{className:`icon-xs`}),m?`Save & Test`:`Create & Test`]}),(0,G.jsx)(R,{size:`sm`,onClick:()=>D(!1),disabled:!g.name.trim()||!g.prompt.trim(),children:m?`Save`:`Create`})]})]})})]}):(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:`Select a project to manage automations.`})}function sn({value:e,onChange:t,options:n,placeholder:r,searchPlaceholder:i}){let[a,o]=(0,W.useState)(!1),s=(0,W.useId)();return(0,G.jsxs)(Ae,{open:a,onOpenChange:o,children:[(0,G.jsx)(ze,{asChild:!0,children:(0,G.jsxs)(R,{variant:`outline`,role:`combobox`,"aria-expanded":a,"aria-controls":s,className:`h-8 w-[160px] justify-between text-xs`,children:[(0,G.jsx)(`span`,{className:`truncate`,children:n.find(t=>t.value===e)?.label??r}),(0,G.jsx)(re,{className:`icon-xs ml-1 shrink-0 opacity-50`})]})}),(0,G.jsx)(ut,{className:`w-[200px] p-0`,align:`start`,children:(0,G.jsxs)(Ze,{children:[(0,G.jsx)(Et,{placeholder:i,className:`h-8 text-xs`}),(0,G.jsxs)(Ct,{id:s,children:[(0,G.jsx)(Oe,{children:`No results.`}),(0,G.jsx)(at,{children:n.map(n=>(0,G.jsxs)(gt,{value:n.label,onSelect:()=>{t(n.value),o(!1)},className:`text-xs`,children:[(0,G.jsx)(se,{className:I(`mr-2 h-3 w-3`,e===n.value?`opacity-100`:`opacity-0`)}),n.label]},n.value))})]})]})})]})}function K({title:e,description:t,children:n}){return(0,G.jsxs)(`div`,{className:`border-border/50 flex items-center justify-between gap-4 border-b px-4 py-3.5 last:border-b-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:e}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:t})]}),(0,G.jsx)(`div`,{className:`shrink-0`,children:n})]})}function cn({options:e,value:t,onChange:n}){return(0,G.jsx)(`div`,{className:`border-border bg-muted/30 flex rounded-md border p-0.5`,children:e.map(e=>(0,G.jsxs)(`button`,{onClick:()=>n(e.value),"aria-pressed":t===e.value,"data-testid":e.testId,className:I(`flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-sm transition-colors`,t===e.value?`bg-background text-foreground shadow-xs`:`text-muted-foreground hover:text-foreground`),children:[e.icon,e.label]},e.value))})}function ln({projectId:e,currentUrls:t,onSave:n}){let[r,i]=(0,W.useState)(t),[a,o]=(0,W.useState)(t),{t:s}=M();t!==a&&(o(t),i(t));let c=t=>{let r=t.filter(e=>e.trim()!==``);i(r.length>0?r:[]),n(e,{urls:r.length>0?r:null})};return(0,G.jsxs)(`div`,{className:`border-border/50 flex flex-col gap-3 border-b px-4 py-3.5 last:border-b-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:s(`settings.projectUrls`,`Extension URLs`)}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:s(`settings.projectUrlsDesc`,`URLs for Chrome extension auto-detection. The extension will auto-select this project when you visit a matching URL.`)})]}),(0,G.jsxs)(`div`,{className:`space-y-2`,children:[r.map((e,t)=>(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(V,{value:e,onChange:e=>{let n=[...r];n[t]=e.target.value,i(n)},onBlur:()=>c(r),onKeyDown:e=>{e.key===`Enter`&&c(r)},placeholder:`https://example.com`,className:`h-8 flex-1 font-mono text-xs`}),(0,G.jsx)(Mt,{size:`icon-sm`,className:`shrink-0`,onClick:()=>{c(r.filter((e,n)=>n!==t))},tooltip:s(`common.delete`),children:(0,G.jsx)(w,{className:`icon-sm`})})]},t)),(0,G.jsxs)(R,{variant:`outline`,size:`sm`,onClick:()=>i(e=>[...e,``]),"data-testid":`settings-url-pattern-add`,children:[(0,G.jsx)(d,{className:`icon-xs mr-1.5`}),s(`settings.addUrl`,`Add URL`)]})]})]})}function un({projectId:e,currentPrompt:t,onSave:n}){let[r,i]=(0,W.useState)(t||``),{t:a}=M();return(0,W.useEffect)(()=>{i(t||``)},[t]),(0,G.jsxs)(`div`,{className:`border-border/50 flex flex-col gap-3 border-b px-4 py-3.5 last:border-b-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(E,{className:`icon-base text-muted-foreground`}),(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:a(`settings.systemPrompt`,`System Prompt`)})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:a(`settings.systemPromptDesc`,`Custom instructions prepended to every agent message in this project. Use this for project-specific conventions, coding standards, or context.`)})]}),(0,G.jsx)(qe,{value:r,onChange:e=>i(e.target.value),onBlur:()=>{n(e,{systemPrompt:r.trim()||null})},placeholder:a(`settings.systemPromptPlaceholder`,`e.g. Always use TypeScript strict mode. Follow the repository's existing patterns...`),className:`min-h-[120px] resize-y font-mono text-xs`,"data-testid":`settings-system-prompt`})]})}function dn({projectId:e,currentUrl:t,onSave:n}){let[r,i]=(0,W.useState)(t||``),{t:a}=M();(0,W.useEffect)(()=>{i(t||``)},[t]);let o=()=>{n(e,{launcherUrl:r.trim()||null})};return(0,G.jsx)(K,{title:a(`settings.launcherUrl`,`Podman Launcher URL`),description:a(`settings.launcherUrlDesc`,`URL of the Podman launcher API for remote container execution`),children:(0,G.jsx)(V,{value:r,onChange:e=>i(e.target.value),onBlur:o,onKeyDown:e=>{e.key===`Enter`&&o()},placeholder:`http://localhost:4040`,className:`h-8 w-[240px] font-mono text-xs`,"data-testid":`settings-launcher-url`})})}function fn({projectId:e,currentTemplateId:t,onSave:n}){let{templates:r,initialized:i,loadTemplates:a}=Qe();return(0,W.useEffect)(()=>{i||a()},[i,a]),(0,G.jsx)(K,{title:`Default Agent Template`,description:`Auto-select this template when creating new Deep Agent threads in this project.`,children:(0,G.jsxs)(`select`,{className:`border-input bg-background h-9 rounded-md border px-3 text-xs`,value:t??``,onChange:t=>{n(e,{defaultAgentTemplateId:t.target.value||null})},"data-testid":`settings-default-agent-template`,children:[(0,G.jsx)(`option`,{value:``,children:`None`}),r.map(e=>(0,G.jsx)(`option`,{value:e.id,children:e.id.startsWith(`__builtin__`)?`[Built-in] ${e.name}`:e.name},e.id))]})})}function pn({projectId:e}){let[t,n]=(0,W.useState)(null),[r,i]=(0,W.useState)(!0),[a,o]=(0,W.useState)(!1),{t:s}=M(),c=(0,W.useCallback)(async()=>{i(!0);let t=await he.getWeaveStatus(e);t.isOk()?n(t.value):n(null),i(!1)},[e]);return(0,W.useEffect)(()=>{c()},[c]),r?(0,G.jsx)(K,{title:s(`settings.weaveTitle`,`Semantic Merge (Weave)`),description:s(`settings.weaveDesc`,`Reduces false merge conflicts using semantic analysis`),children:(0,G.jsx)(`div`,{className:`bg-muted h-8 w-[140px] animate-pulse rounded-md`})}):!t||t.status===`not-installed`?(0,G.jsx)(K,{title:s(`settings.weaveTitle`,`Semantic Merge (Weave)`),description:s(`settings.weaveDesc`,`Reduces false merge conflicts using semantic analysis`),children:(0,G.jsxs)(`div`,{className:`text-muted-foreground flex items-center gap-2 text-xs`,children:[(0,G.jsx)(`span`,{"data-testid":`settings-weave-status`,children:s(`settings.weaveNotInstalled`,`weave-driver not found`)}),(0,G.jsx)(`a`,{href:`https://github.com/Ataraxy-Labs/weave`,target:`_blank`,rel:`noopener noreferrer`,className:`text-xs text-blue-500 hover:underline`,"data-testid":`settings-weave-install-link`,children:s(`settings.weaveInstall`,`Install`)})]})}):(0,G.jsx)(K,{title:s(`settings.weaveTitle`,`Semantic Merge (Weave)`),description:s(`settings.weaveDesc`,`Reduces false merge conflicts using semantic analysis`),children:(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`span`,{"data-testid":`settings-weave-status`,className:I(`text-xs`,t.status===`active`?`text-green-500`:`text-muted-foreground`),children:t.status===`active`?s(`settings.weaveActive`,`Active`):s(`settings.weaveUnconfigured`,`Not configured`)}),(0,G.jsx)(R,{size:`sm`,variant:`outline`,onClick:async()=>{o(!0);let t=await he.configureWeave(e);t.isOk()?(n(t.value.status),z.success(s(`settings.weaveConfigured`,`Weave semantic merge configured`))):z.error(s(`settings.weaveConfigureFailed`,`Failed to configure Weave`)),o(!1)},disabled:a,"data-testid":`settings-weave-configure`,children:a?s(`settings.weaveConfiguring`,`Configuring...`):t.status===`active`?s(`settings.weaveReconfigure`,`Reconfigure`):s(`settings.weaveConfigure`,`Configure`)})]})})}var mn=[`PageUp`,`PageDown`],hn=[`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`],gn={"from-left":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-right":[`Home`,`PageDown`,`ArrowDown`,`ArrowRight`],"from-bottom":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-top":[`Home`,`PageDown`,`ArrowUp`,`ArrowLeft`]},_n=`Slider`,[vn,yn,bn]=_t(_n),[xn,Sn]=j(_n,[bn]),[Cn,wn]=xn(_n),Tn=W.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=W.useRef(new Set),_=W.useRef(0),v=W.useRef(!1),y=o===`horizontal`?On:kn,[b=[],x]=ve({prop:u,defaultProp:l,onChange:e=>{[...g.current][_.current]?.focus({preventScroll:!0,focusVisible:v.current}),v.current=!1,d(e)}}),S=W.useRef(b);function C(e){E(e,Jn(b,e))}function w(e){E(e,_.current)}function T(){let e=S.current[_.current];b[_.current]!==e&&f(b)}function E(e,t,{commit:n}={commit:!1}){let o=$n(a),s=$e(er(Math.round((e-r)/a)*a+r,o),[r,i]);x((e=[])=>{let r=Gn(e,s,t);if(Zn(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,G.jsx)(Cn,{scope:e.__scopeSlider,name:n,disabled:s,min:r,max:i,valueIndexToChangeRef:_,thumbs:g.current,values:b,orientation:o,form:m,children:(0,G.jsx)(vn.Provider,{scope:e.__scopeSlider,children:(0,G.jsx)(vn.Slot,{scope:e.__scopeSlider,children:(0,G.jsx)(y,{"aria-disabled":s,"data-disabled":s?``:void 0,...h,ref:t,onPointerDown:pe(h.onPointerDown,()=>{s||(S.current=b,v.current=!1)}),min:r,max:i,inverted:p,onSlideStart:s?void 0:C,onSlideMove:s?void 0:w,onSlideEnd:s?void 0:T,onHomeKeyDown:()=>{s||(v.current=!0,E(r,0,{commit:!0}))},onEndKeyDown:()=>{s||(v.current=!0,E(i,b.length-1,{commit:!0}))},onStepKeyDown:({event:e,direction:t})=>{if(!s){v.current=!0;let n=mn.includes(e.key)||e.shiftKey&&hn.includes(e.key)?10:1,r=_.current,i=b[r];E(i+a*n*t,r,{commit:!0})}}})})})})});Tn.displayName=_n;var[En,Dn]=xn(_n,{startEdge:`left`,endEdge:`right`,size:`width`,direction:1}),On=W.forwardRef((e,t)=>{let{min:n,max:r,dir:i,inverted:a,onSlideStart:o,onSlideMove:s,onSlideEnd:c,onStepKeyDown:l,...u}=e,[d,f]=W.useState(null),p=me(t,e=>f(e)),m=W.useRef(void 0),h=et(i),g=h===`ltr`,_=g&&!a||!g&&a;function v(e){let t=m.current||d.getBoundingClientRect(),i=Qn([0,t.width],_?[n,r]:[r,n]);return m.current=t,i(e-t.left)}return(0,G.jsx)(En,{scope:e.__scopeSlider,startEdge:_?`left`:`right`,endEdge:_?`right`:`left`,direction:_?1:-1,size:`width`,children:(0,G.jsx)(An,{dir:h,"data-orientation":`horizontal`,...u,ref:p,style:{...u.style,"--radix-slider-thumb-transform":`translateX(-50%)`},onSlideStart:e=>{let t=v(e.clientX);o?.(t)},onSlideMove:e=>{let t=v(e.clientX);s?.(t)},onSlideEnd:()=>{m.current=void 0,c?.()},onStepKeyDown:e=>{let t=gn[_?`from-left`:`from-right`].includes(e.key);l?.({event:e,direction:t?-1:1})}})})}),kn=W.forwardRef((e,t)=>{let{min:n,max:r,inverted:i,onSlideStart:a,onSlideMove:o,onSlideEnd:s,onStepKeyDown:c,...l}=e,u=W.useRef(null),d=me(t,u),f=W.useRef(void 0),p=!i;function m(e){let t=f.current||u.current.getBoundingClientRect(),i=Qn([0,t.height],p?[r,n]:[n,r]);return f.current=t,i(e-t.top)}return(0,G.jsx)(En,{scope:e.__scopeSlider,startEdge:p?`bottom`:`top`,endEdge:p?`top`:`bottom`,size:`height`,direction:p?1:-1,children:(0,G.jsx)(An,{"data-orientation":`vertical`,...l,ref:d,style:{...l.style,"--radix-slider-thumb-transform":`translateY(50%)`},onSlideStart:e=>{let t=m(e.clientY);a?.(t)},onSlideMove:e=>{let t=m(e.clientY);o?.(t)},onSlideEnd:()=>{f.current=void 0,s?.()},onStepKeyDown:e=>{let t=gn[p?`from-bottom`:`from-top`].includes(e.key);c?.({event:e,direction:t?-1:1})}})})}),An=W.forwardRef((e,t)=>{let{__scopeSlider:n,onSlideStart:r,onSlideMove:i,onSlideEnd:a,onHomeKeyDown:o,onEndKeyDown:s,onStepKeyDown:c,...l}=e,u=wn(_n,n);return(0,G.jsx)(A.span,{...l,ref:t,onKeyDown:pe(e.onKeyDown,e=>{e.key===`Home`?(o(e),e.preventDefault()):e.key===`End`?(s(e),e.preventDefault()):mn.concat(hn).includes(e.key)&&(c(e),e.preventDefault())}),onPointerDown:pe(e.onPointerDown,e=>{let t=e.target;t.setPointerCapture(e.pointerId),e.preventDefault(),u.thumbs.has(t)?t.focus({preventScroll:!0,focusVisible:!1}):r(e)}),onPointerMove:pe(e.onPointerMove,e=>{e.target.hasPointerCapture(e.pointerId)&&i(e)}),onPointerUp:pe(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(t.releasePointerCapture(e.pointerId),a(e))})})}),jn=`SliderTrack`,Mn=W.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=wn(jn,n);return(0,G.jsx)(A.span,{"data-disabled":i.disabled?``:void 0,"data-orientation":i.orientation,...r,ref:t})});Mn.displayName=jn;var Nn=`SliderRange`,Pn=W.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=wn(Nn,n),a=Dn(Nn,n),o=me(t,W.useRef(null)),s=i.values.length,c=i.values.map(e=>Kn(e,i.min,i.max)),l=s>1?Math.min(...c):0,u=100-Math.max(...c);return(0,G.jsx)(A.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?``:void 0,...r,ref:o,style:{...e.style,[a.startEdge]:l+`%`,[a.endEdge]:u+`%`}})});Pn.displayName=Nn;var Fn=`SliderThumb`,[In,Ln]=xn(Fn),Rn=`SliderThumbProvider`;function zn(e){let{__scopeSlider:t,name:n,children:r,internal_do_not_use_render:i}=e,a=wn(Rn,t),o=yn(t),[s,c]=W.useState(null),l=W.useMemo(()=>s?o().findIndex(e=>e.ref.current===s):-1,[o,s]),u=Ee(s),d=s?!!a.form||!!s.closest(`form`):!0,f=a.values[l],p=n??(a.name?a.name+(a.values.length>1?`[]`:``):void 0),m=f===void 0?0:Kn(f,a.min,a.max);W.useEffect(()=>{if(s)return a.thumbs.add(s),()=>{a.thumbs.delete(s)}},[s,a.thumbs]);let h={value:f,name:p,form:a.form,isFormControl:d,index:l,thumb:s,onThumbChange:c,percent:m,size:u};return(0,G.jsx)(In,{scope:t,...h,children:tr(i)?i(h):r})}zn.displayName=Rn;var Bn=`SliderThumbTrigger`,Vn=W.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=wn(Bn,n),a=Dn(Bn,n),{index:o,value:s,percent:c,size:l,onThumbChange:u}=Ln(Bn,n),d=me(t,e=>u(e)),f=qn(o,i.values.length),p=l?.[a.size],m=p?Yn(p,c,a.direction):0;return(0,G.jsx)(`span`,{style:{transform:`var(--radix-slider-thumb-transform)`,position:`absolute`,[a.startEdge]:`calc(${c}% + ${m}px)`},children:(0,G.jsx)(vn.ItemSlot,{scope:n,children:(0,G.jsx)(A.span,{role:`slider`,"aria-label":e[`aria-label`]||f,"aria-valuemin":i.min,"aria-valuenow":s,"aria-valuemax":i.max,"aria-orientation":i.orientation,"data-orientation":i.orientation,"data-disabled":i.disabled?``:void 0,tabIndex:i.disabled?void 0:0,...r,ref:d,style:s===void 0?{display:`none`}:e.style,onFocus:pe(e.onFocus,()=>{i.valueIndexToChangeRef.current=o})})})})});Vn.displayName=Bn;var Hn=W.forwardRef((e,t)=>{let{__scopeSlider:n,name:r,...i}=e;return(0,G.jsx)(zn,{__scopeSlider:n,name:r,internal_do_not_use_render:({index:e,isFormControl:r})=>(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Vn,{...i,ref:t,__scopeSlider:n}),r?(0,G.jsx)(Wn,{__scopeSlider:n},e):null]})})});Hn.displayName=Fn;var Un=`SliderBubbleInput`,Wn=W.forwardRef(({__scopeSlider:e,...t},n)=>{let{value:r,name:i,form:a}=Ln(Un,e),o=W.useRef(null),s=me(o,n),c=ct(r);return W.useEffect(()=>{let e=o.current;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(c!==r&&n){let t=new Event(`input`,{bubbles:!0});n.call(e,r),e.dispatchEvent(t)}},[c,r]),(0,G.jsx)(A.input,{style:{display:`none`},name:i,form:a,...t,ref:s,defaultValue:r})});Wn.displayName=Un;function Gn(e=[],t,n){let r=[...e];return r[n]=t,r.sort((e,t)=>e-t)}function Kn(e,t,n){return $e(100/(n-t)*(e-t),[0,100])}function qn(e,t){if(t>2)return`Value ${e+1} of ${t}`;if(t===2)return[`Minimum`,`Maximum`][e]}function Jn(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 Yn(e,t,n){let r=e/2;return(r-Qn([0,50],[0,r])(t)*n)*n}function Xn(e){return e.slice(0,-1).map((t,n)=>e[n+1]-t)}function Zn(e,t){if(t>0){let n=Xn(e);return Math.min(...n)>=t}return!0}function Qn(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 $n(e){if(!Number.isFinite(e))return 0;let t=e.toString();if(t.includes(`e`)){let[e,n]=t.split(`e`),r=e.split(`.`)[1]||``,i=Number(n);return Math.max(0,r.length-i)}let n=t.split(`.`)[1];return n?n.length:0}function er(e,t){let n=10**t;return Math.round(e*n)/n}function tr(e){return typeof e==`function`}var nr={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(let e in nr)Object.freeze(nr[e]);var q=Object.freeze(nr),rr=Object.create(null);for(let e in q)Object.hasOwn(q,e)&&(rr[q[e]]=e);var J={to:{},get:{}};J.get=function(e){let t=e.slice(0,3).toLowerCase(),n,r;switch(t){case`hsl`:n=J.get.hsl(e),r=`hsl`;break;case`hwb`:n=J.get.hwb(e),r=`hwb`;break;default:n=J.get.rgb(e),r=`rgb`;break}return n?{model:r,value:n}:null},J.get.rgb=function(e){if(!e)return null;let t=/^#([a-f\d]{3,4})$/i,n=/^#([a-f\d]{6})([a-f\d]{2})?$/i,r=/^rgba?\(\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)\s*(?:[\s,|/]\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(%?)\s*)?\)$/i,i=/^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/i,a=/^(\w+)$/,o=[0,0,0,1],s,c,l;if(s=e.match(n)){for(l=s[2],s=s[1],c=0;c<3;c++){let e=c*2;o[c]=Number.parseInt(s.slice(e,e+2),16)}l&&(o[3]=Number.parseInt(l,16)/255)}else if(s=e.match(t)){for(s=s[1],l=s[3],c=0;c<3;c++)o[c]=Number.parseInt(s[c]+s[c],16);l&&(o[3]=Number.parseInt(l+l,16)/255)}else if(s=e.match(r)){for(c=0;c<3;c++)o[c]=Number.parseFloat(s[c+1]);s[4]&&(o[3]=s[5]?Number.parseFloat(s[4])*.01:Number.parseFloat(s[4]))}else if(s=e.match(i)){for(c=0;c<3;c++)o[c]=Math.round(Number.parseFloat(s[c+1])*2.55);s[4]&&(o[3]=s[5]?Number.parseFloat(s[4])*.01:Number.parseFloat(s[4]))}else if(s=e.toLowerCase().match(a))return s[1]===`transparent`?[0,0,0,0]:Object.hasOwn(q,s[1])?(o=q[s[1]].slice(),o[3]=1,o):null;else return null;for(c=0;c<3;c++)o[c]=ir(o[c],0,255);return o[3]=ir(o[3],0,1),o},J.get.hsl=function(e){if(!e)return null;let t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i);if(t){let e=Number.parseFloat(t[4]);return[(Number.parseFloat(t[1])%360+360)%360,ir(Number.parseFloat(t[2]),0,100),ir(Number.parseFloat(t[3]),0,100),ir(Number.isNaN(e)?1:e,0,1)]}return null},J.get.hwb=function(e){if(!e)return null;let t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*[\s,]\s*([+-]?[\d.]+)%\s*[\s,]\s*([+-]?[\d.]+)%\s*(?:[\s,]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i);if(t){let e=Number.parseFloat(t[4]);return[(Number.parseFloat(t[1])%360+360)%360,ir(Number.parseFloat(t[2]),0,100),ir(Number.parseFloat(t[3]),0,100),ir(Number.isNaN(e)?1:e,0,1)]}return null},J.to.hex=function(...e){return`#`+ar(e[0])+ar(e[1])+ar(e[2])+(e[3]<1?ar(Math.round(e[3]*255)):``)},J.to.rgb=function(...e){return e.length<4||e[3]===1?`rgb(`+Math.round(e[0])+`, `+Math.round(e[1])+`, `+Math.round(e[2])+`)`:`rgba(`+Math.round(e[0])+`, `+Math.round(e[1])+`, `+Math.round(e[2])+`, `+e[3]+`)`},J.to.rgb.percent=function(...e){let t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),r=Math.round(e[2]/255*100);return e.length<4||e[3]===1?`rgb(`+t+`%, `+n+`%, `+r+`%)`:`rgba(`+t+`%, `+n+`%, `+r+`%, `+e[3]+`)`},J.to.hsl=function(...e){return e.length<4||e[3]===1?`hsl(`+e[0]+`, `+e[1]+`%, `+e[2]+`%)`:`hsla(`+e[0]+`, `+e[1]+`%, `+e[2]+`%, `+e[3]+`)`},J.to.hwb=function(...e){let t=``;return e.length>=4&&e[3]!==1&&(t=`, `+e[3]),`hwb(`+e[0]+`, `+e[1]+`%, `+e[2]+`%`+t+`)`},J.to.keyword=function(...e){return rr[e.slice(0,3)]};function ir(e,t,n){return Math.min(Math.max(t,e),n)}function ar(e){let t=Math.round(e).toString(16).toUpperCase();return t.length<2?`0`+t:t}var or={};for(let e of Object.keys(q))or[q[e]]=e;var Y={rgb:{channels:3,labels:`rgb`},hsl:{channels:3,labels:`hsl`},hsv:{channels:3,labels:`hsv`},hwb:{channels:3,labels:`hwb`},cmyk:{channels:4,labels:`cmyk`},xyz:{channels:3,labels:`xyz`},lab:{channels:3,labels:`lab`},oklab:{channels:3,labels:[`okl`,`oka`,`okb`]},lch:{channels:3,labels:`lch`},oklch:{channels:3,labels:[`okl`,`okc`,`okh`]},hex:{channels:1,labels:[`hex`]},keyword:{channels:1,labels:[`keyword`]},ansi16:{channels:1,labels:[`ansi16`]},ansi256:{channels:1,labels:[`ansi256`]},hcg:{channels:3,labels:[`h`,`c`,`g`]},apple:{channels:3,labels:[`r16`,`g16`,`b16`]},gray:{channels:1,labels:[`gray`]}},sr=(6/29)**3;function cr(e){let t=e>.0031308?1.055*e**(1/2.4)-.055:e*12.92;return Math.min(Math.max(0,t),1)}function lr(e){return e>.04045?((e+.055)/1.055)**2.4:e/12.92}for(let e of Object.keys(Y)){if(!(`channels`in Y[e]))throw Error(`missing channels property: `+e);if(!(`labels`in Y[e]))throw Error(`missing channel labels property: `+e);if(Y[e].labels.length!==Y[e].channels)throw Error(`channel and label counts mismatch: `+e);let{channels:t,labels:n}=Y[e];delete Y[e].channels,delete Y[e].labels,Object.defineProperty(Y[e],"channels",{value:t}),Object.defineProperty(Y[e],"labels",{value:n})}Y.rgb.hsl=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=a-i,s,c;switch(a){case i:s=0;break;case t:s=(n-r)/o;break;case n:s=2+(r-t)/o;break;case r:s=4+(t-n)/o;break}s=Math.min(s*60,360),s<0&&(s+=360);let l=(i+a)/2;return c=a===i?0:l<=.5?o/(a+i):o/(2-a-i),[s,c*100,l*100]},Y.rgb.hsv=function(e){let t,n,r,i,a,o=e[0]/255,s=e[1]/255,c=e[2]/255,l=Math.max(o,s,c),u=l-Math.min(o,s,c),d=function(e){return(l-e)/6/u+1/2};if(u===0)i=0,a=0;else{switch(a=u/l,t=d(o),n=d(s),r=d(c),l){case o:i=r-n;break;case s:i=1/3+t-r;break;case c:i=2/3+n-t;break}i<0?i+=1:i>1&&--i}return[i*360,a*100,l*100]},Y.rgb.hwb=function(e){let t=e[0],n=e[1],r=e[2],i=Y.rgb.hsl(e)[0],a=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[i,a*100,r*100]},Y.rgb.oklab=function(e){let t=lr(e[0]/255),n=lr(e[1]/255),r=lr(e[2]/255),i=Math.cbrt(.4122214708*t+.5363325363*n+.0514459929*r),a=Math.cbrt(.2119034982*t+.6806995451*n+.1073969566*r),o=Math.cbrt(.0883024619*t+.2817188376*n+.6299787005*r),s=.2104542553*i+.793617785*a-.0040720468*o,c=1.9779984951*i-2.428592205*a+.4505937099*o,l=.0259040371*i+.7827717662*a-.808675766*o;return[s*100,c*100,l*100]},Y.rgb.cmyk=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(1-t,1-n,1-r),a=(1-t-i)/(1-i)||0,o=(1-n-i)/(1-i)||0,s=(1-r-i)/(1-i)||0;return[a*100,o*100,s*100,i*100]};function ur(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}Y.rgb.keyword=function(e){let t=or[e];if(t)return t;let n=1/0,r;for(let t of Object.keys(q)){let i=q[t],a=ur(e,i);a<n&&(n=a,r=t)}return r},Y.keyword.rgb=function(e){return[...q[e]]},Y.rgb.xyz=function(e){let t=lr(e[0]/255),n=lr(e[1]/255),r=lr(e[2]/255),i=t*.4124564+n*.3575761+r*.1804375,a=t*.2126729+n*.7151522+r*.072175,o=t*.0193339+n*.119192+r*.9503041;return[i*100,a*100,o*100]},Y.rgb.lab=function(e){let t=Y.rgb.xyz(e),n=t[0],r=t[1],i=t[2];return n/=95.047,r/=100,i/=108.883,n=n>sr?n**(1/3):7.787*n+16/116,r=r>sr?r**(1/3):7.787*r+16/116,i=i>sr?i**(1/3):7.787*i+16/116,[116*r-16,500*(n-r),200*(r-i)]},Y.hsl.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100,i,a;if(n===0)return a=r*255,[a,a,a];let o=r<.5?r*(1+n):r+n-r*n,s=2*r-o,c=[0,0,0];for(let e=0;e<3;e++)i=t+1/3*-(e-1),i<0&&i++,i>1&&i--,a=6*i<1?s+(o-s)*6*i:2*i<1?o:3*i<2?s+(o-s)*(2/3-i)*6:s,c[e]=a*255;return c},Y.hsl.hsv=function(e){let t=e[0],n=e[1]/100,r=e[2]/100,i=n,a=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,i*=a<=1?a:2-a;let o=(r+n)/2;return[t,(r===0?2*i/(a+i):2*n/(r+n))*100,o*100]},Y.hsv.rgb=function(e){let t=e[0]/60,n=e[1]/100,r=e[2]/100,i=Math.floor(t)%6,a=t-Math.floor(t),o=255*r*(1-n),s=255*r*(1-n*a),c=255*r*(1-n*(1-a));switch(r*=255,i){case 0:return[r,c,o];case 1:return[s,r,o];case 2:return[o,r,c];case 3:return[o,s,r];case 4:return[c,o,r];case 5:return[r,o,s]}},Y.hsv.hsl=function(e){let t=e[0],n=e[1]/100,r=e[2]/100,i=Math.max(r,.01),a,o;o=(2-n)*r;let s=(2-n)*i;return a=n*i,a/=s<=1?s:2-s,a||=0,o/=2,[t,a*100,o*100]},Y.hwb.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100,i=n+r,a;i>1&&(n/=i,r/=i);let o=Math.floor(6*t),s=1-r;a=6*t-o,o&1&&(a=1-a);let c=n+a*(s-n),l,u,d;switch(o){default:case 6:case 0:l=s,u=c,d=n;break;case 1:l=c,u=s,d=n;break;case 2:l=n,u=s,d=c;break;case 3:l=n,u=c,d=s;break;case 4:l=c,u=n,d=s;break;case 5:l=s,u=n,d=c;break}return[l*255,u*255,d*255]},Y.cmyk.rgb=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=e[3]/100,a=1-Math.min(1,t*(1-i)+i),o=1-Math.min(1,n*(1-i)+i),s=1-Math.min(1,r*(1-i)+i);return[a*255,o*255,s*255]},Y.xyz.rgb=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i,a,o;return i=t*3.2404542+n*-1.5371385+r*-.4985314,a=t*-.969266+n*1.8760108+r*.041556,o=t*.0556434+n*-.2040259+r*1.0572252,i=cr(i),a=cr(a),o=cr(o),[i*255,a*255,o*255]},Y.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];return t/=95.047,n/=100,r/=108.883,t=t>sr?t**(1/3):7.787*t+16/116,n=n>sr?n**(1/3):7.787*n+16/116,r=r>sr?r**(1/3):7.787*r+16/116,[116*n-16,500*(t-n),200*(n-r)]},Y.xyz.oklab=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=Math.cbrt(.8189330101*t+.3618667424*n-.1288597137*r),a=Math.cbrt(.0329845436*t+.9293118715*n+.0361456387*r),o=Math.cbrt(.0482003018*t+.2643662691*n+.633851707*r),s=.2104542553*i+.793617785*a-.0040720468*o,c=1.9779984951*i-2.428592205*a+.4505937099*o,l=.0259040371*i+.7827717662*a-.808675766*o;return[s*100,c*100,l*100]},Y.oklab.oklch=function(e){return Y.lab.lch(e)},Y.oklab.xyz=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=(.999999998*t+.396337792*n+.215803758*r)**3,a=(1.000000008*t-.105561342*n-.063854175*r)**3,o=(1.000000055*t-.089484182*n-1.291485538*r)**3,s=1.227013851*i-.55779998*a+.281256149*o,c=-.040580178*i+1.11225687*a-.071676679*o,l=-.076381285*i-.421481978*a+1.58616322*o;return[s*100,c*100,l*100]},Y.oklab.rgb=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=(t+.3963377774*n+.2158037573*r)**3,a=(t-.1055613458*n-.0638541728*r)**3,o=(t-.0894841775*n-1.291485548*r)**3,s=cr(4.0767416621*i-3.3077115913*a+.2309699292*o),c=cr(-1.2684380046*i+2.6097574011*a-.3413193965*o),l=cr(-.0041960863*i-.7034186147*a+1.707614701*o);return[s*255,c*255,l*255]},Y.oklch.oklab=function(e){return Y.lch.lab(e)},Y.lab.xyz=function(e){let t=e[0],n=e[1],r=e[2],i,a,o;a=(t+16)/116,i=n/500+a,o=a-r/200;let s=a**3,c=i**3,l=o**3;return a=s>sr?s:(a-16/116)/7.787,i=c>sr?c:(i-16/116)/7.787,o=l>sr?l:(o-16/116)/7.787,i*=95.047,a*=100,o*=108.883,[i,a,o]},Y.lab.lch=function(e){let t=e[0],n=e[1],r=e[2],i;return i=Math.atan2(r,n)*360/2/Math.PI,i<0&&(i+=360),[t,Math.sqrt(n*n+r*r),i]},Y.lch.lab=function(e){let t=e[0],n=e[1],r=e[2]/360*2*Math.PI;return[t,n*Math.cos(r),n*Math.sin(r)]},Y.rgb.ansi16=function(e,t=null){let[n,r,i]=e,a=t===null?Y.rgb.hsv(e)[2]:t;if(a=Math.round(a/50),a===0)return 30;let o=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return a===2&&(o+=60),o},Y.hsv.ansi16=function(e){return Y.rgb.ansi16(Y.hsv.rgb(e),e[2])},Y.rgb.ansi256=function(e){let t=e[0],n=e[1],r=e[2];return t>>4==n>>4&&n>>4==r>>4?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},Y.ansi16.rgb=function(e){e=e[0];let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let n=(Math.trunc(e>50)+1)*.5;return[(t&1)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},Y.ansi256.rgb=function(e){if(e=e[0],e>=232){let t=(e-232)*10+8;return[t,t,t]}e-=16;let t;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},Y.rgb.hex=function(e){let t=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return`000000`.slice(t.length)+t},Y.hex.rgb=function(e){let t=e.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!t)return[0,0,0];let n=t[0];t[0].length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},Y.rgb.hcg=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.max(Math.max(t,n),r),a=Math.min(Math.min(t,n),r),o=i-a,s,c=o<1?a/(1-o):0;return s=o<=0?0:i===t?(n-r)/o%6:i===n?2+(r-t)/o:4+(t-n)/o,s/=6,s%=1,[s*360,o*100,c*100]},Y.hsl.hcg=function(e){let t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n),i=0;return r<1&&(i=(n-.5*r)/(1-r)),[e[0],r*100,i*100]},Y.hsv.hcg=function(e){let t=e[1]/100,n=e[2]/100,r=t*n,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],r*100,i*100]},Y.hcg.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100;if(n===0)return[r*255,r*255,r*255];let i=[0,0,0],a=t%1*6,o=a%1,s=1-o,c=0;switch(Math.floor(a)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=s,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=s,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=s}return c=(1-n)*r,[(n*i[0]+c)*255,(n*i[1]+c)*255,(n*i[2]+c)*255]},Y.hcg.hsv=function(e){let t=e[1]/100,n=t+e[2]/100*(1-t),r=0;return n>0&&(r=t/n),[e[0],r*100,n*100]},Y.hcg.hsl=function(e){let t=e[1]/100,n=e[2]/100*(1-t)+.5*t,r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],r*100,n*100]},Y.hcg.hwb=function(e){let t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],(n-t)*100,(1-n)*100]},Y.hwb.hcg=function(e){let t=e[1]/100,n=1-e[2]/100,r=n-t,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],r*100,i*100]},Y.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},Y.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},Y.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},Y.gray.hsl=function(e){return[0,0,e[0]]},Y.gray.hsv=Y.gray.hsl,Y.gray.hwb=function(e){return[0,100,e[0]]},Y.gray.cmyk=function(e){return[0,0,0,e[0]]},Y.gray.lab=function(e){return[e[0],0,0]},Y.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return`000000`.slice(n.length)+n},Y.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};function dr(){let e={},t=Object.keys(Y);for(let{length:n}=t,r=0;r<n;r++)e[t[r]]={distance:-1,parent:null};return e}function fr(e){let t=dr(),n=[e];for(t[e].distance=0;n.length>0;){let e=n.pop(),r=Object.keys(Y[e]);for(let{length:i}=r,a=0;a<i;a++){let i=r[a],o=t[i];o.distance===-1&&(o.distance=t[e].distance+1,o.parent=e,n.unshift(i))}}return t}function pr(e,t){return function(n){return t(e(n))}}function mr(e,t){let n=[t[e].parent,e],r=Y[t[e].parent][e],i=t[e].parent;for(;t[i].parent;)n.unshift(t[i].parent),r=pr(Y[t[i].parent][i],r),i=t[i].parent;return r.conversion=n,r}function hr(e){let t=fr(e),n={},r=Object.keys(t);for(let{length:e}=r,i=0;i<e;i++){let e=r[i];t[e].parent!==null&&(n[e]=mr(e,t))}return n}var X={},gr=Object.keys(Y);function _r(e){let t=function(...t){let n=t[0];return n==null?n:(n.length>1&&(t=n),e(t))};return`conversion`in e&&(t.conversion=e.conversion),t}function vr(e){let t=function(...t){let n=t[0];if(n==null)return n;n.length>1&&(t=n);let r=e(t);if(typeof r==`object`)for(let{length:e}=r,t=0;t<e;t++)r[t]=Math.round(r[t]);return r};return`conversion`in e&&(t.conversion=e.conversion),t}for(let e of gr){X[e]={},Object.defineProperty(X[e],"channels",{value:Y[e].channels}),Object.defineProperty(X[e],"labels",{value:Y[e].labels});let t=hr(e),n=Object.keys(t);for(let r of n){let n=t[r];X[e][r]=vr(n),X[e][r].raw=_r(n)}}var yr=[`keyword`,`gray`,`hex`],br={};for(let e of Object.keys(X))br[[...X[e].labels].sort().join(``)]=e;var xr={};function Z(e,t){if(!(this instanceof Z))return new Z(e,t);if(t&&t in yr&&(t=null),t&&!(t in X))throw Error(`Unknown model: `+t);let n,r;if(e==null)this.model=`rgb`,this.color=[0,0,0],this.valpha=1;else if(e instanceof Z)this.model=e.model,this.color=[...e.color],this.valpha=e.valpha;else if(typeof e==`string`){let t=J.get(e);if(t===null)throw Error(`Unable to parse color from string: `+e);this.model=t.model,r=X[this.model].channels,this.color=t.value.slice(0,r),this.valpha=typeof t.value[r]==`number`?t.value[r]:1}else if(e.length>0){this.model=t||`rgb`,r=X[this.model].channels;let n=Array.prototype.slice.call(e,0,r);this.color=Tr(n,r),this.valpha=typeof e[r]==`number`?e[r]:1}else if(typeof e==`number`)this.model=`rgb`,this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;let t=Object.keys(e);`alpha`in e&&(t.splice(t.indexOf(`alpha`),1),this.valpha=typeof e.alpha==`number`?e.alpha:0);let r=t.sort().join(``);if(!(r in br))throw Error(`Unable to parse color from object: `+JSON.stringify(e));this.model=br[r];let{labels:i}=X[this.model],a=[];for(n=0;n<i.length;n++)a.push(e[i[n]]);this.color=Tr(a)}if(xr[this.model])for(r=X[this.model].channels,n=0;n<r;n++){let e=xr[this.model][n];e&&(this.color[n]=e(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}Z.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(e){let t=this.model in J.to?this:this.rgb();t=t.round(typeof e==`number`?e:1);let n=t.valpha===1?t.color:[...t.color,this.valpha];return J.to[t.model](...n)},percentString(e){let t=this.rgb().round(typeof e==`number`?e:1),n=t.valpha===1?t.color:[...t.color,this.valpha];return J.to.rgb.percent(...n)},array(){return this.valpha===1?[...this.color]:[...this.color,this.valpha]},object(){let e={},{channels:t}=X[this.model],{labels:n}=X[this.model];for(let r=0;r<t;r++)e[n[r]]=this.color[r];return this.valpha!==1&&(e.alpha=this.valpha),e},unitArray(){let e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,this.valpha!==1&&e.push(this.valpha),e},unitObject(){let e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,this.valpha!==1&&(e.alpha=this.valpha),e},round(e){return e=Math.max(e||0,0),new Z([...this.color.map(Cr(e)),this.valpha],this.model)},alpha(e){return e===void 0?this.valpha:new Z([...this.color,Math.max(0,Math.min(1,e))],this.model)},red:Q(`rgb`,0,$(255)),green:Q(`rgb`,1,$(255)),blue:Q(`rgb`,2,$(255)),hue:Q([`hsl`,`hsv`,`hsl`,`hwb`,`hcg`],0,e=>(e%360+360)%360),saturationl:Q(`hsl`,1,$(100)),lightness:Q(`hsl`,2,$(100)),saturationv:Q(`hsv`,1,$(100)),value:Q(`hsv`,2,$(100)),chroma:Q(`hcg`,1,$(100)),gray:Q(`hcg`,2,$(100)),white:Q(`hwb`,1,$(100)),wblack:Q(`hwb`,2,$(100)),cyan:Q(`cmyk`,0,$(100)),magenta:Q(`cmyk`,1,$(100)),yellow:Q(`cmyk`,2,$(100)),black:Q(`cmyk`,3,$(100)),x:Q(`xyz`,0,$(95.047)),y:Q(`xyz`,1,$(100)),z:Q(`xyz`,2,$(108.833)),l:Q(`lab`,0,$(100)),a:Q(`lab`,1),b:Q(`lab`,2),keyword(e){return e===void 0?X[this.model].keyword(this.color):new Z(e)},hex(e){return e===void 0?J.to.hex(...this.rgb().round().color):new Z(e)},hexa(e){if(e!==void 0)return new Z(e);let t=this.rgb().round().color,n=Math.round(this.valpha*255).toString(16).toUpperCase();return n.length===1&&(n=`0`+n),J.to.hex(...t)+n},rgbNumber(){let e=this.rgb().color;return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255},luminosity(){let e=this.rgb().color,t=[];for(let[n,r]of e.entries()){let e=r/255;t[n]=e<=.04045?e/12.92:((e+.055)/1.055)**2.4}return .2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(e){let t=this.luminosity(),n=e.luminosity();return t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)},level(e){let t=this.contrast(e);return t>=7?`AAA`:t>=4.5?`AA`:``},isDark(){let e=this.rgb().color;return(e[0]*2126+e[1]*7152+e[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){let e=this.rgb();for(let t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten(e){let t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken(e){let t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate(e){let t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate(e){let t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten(e){let t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken(e){let t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale(){let e=this.rgb().color,t=e[0]*.3+e[1]*.59+e[2]*.11;return Z.rgb(t,t,t)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){let t=this.hsl(),n=t.color[0];return n=(n+e)%360,n=n<0?360+n:n,t.color[0]=n,t},mix(e,t){if(!e||!e.rgb)throw Error(`Argument to "mix" was not a Color instance, but rather an instance of `+typeof e);let n=e.rgb(),r=this.rgb(),i=t===void 0?.5:t,a=2*i-1,o=n.alpha()-r.alpha(),s=((a*o===-1?a:(a+o)/(1+a*o))+1)/2,c=1-s;return Z.rgb(s*n.red()+c*r.red(),s*n.green()+c*r.green(),s*n.blue()+c*r.blue(),n.alpha()*i+r.alpha()*(1-i))}};for(let e of Object.keys(X)){if(yr.includes(e))continue;let{channels:t}=X[e];Z.prototype[e]=function(...t){return this.model===e?new Z(this):t.length>0?new Z(t,e):new Z([...wr(X[this.model][e].raw(this.color)),this.valpha],e)},Z[e]=function(...n){let r=n[0];return typeof r==`number`&&(r=Tr(n,t)),new Z(r,e)}}function Sr(e,t){return Number(e.toFixed(t))}function Cr(e){return function(t){return Sr(t,e)}}function Q(e,t,n){e=Array.isArray(e)?e:[e];for(let r of e)(xr[r]||=[])[t]=n;return e=e[0],function(r){let i;return r===void 0?(i=this[e]().color[t],n&&(i=n(i)),i):(n&&(r=n(r)),i=this[e](),i.color[t]=r,i)}}function $(e){return function(t){return Math.max(0,Math.min(e,t))}}function wr(e){return Array.isArray(e)?e:[e]}function Tr(e,t){for(let n=0;n<t;n++)typeof e[n]!=`number`&&(e[n]=0);return e}var Er=e=>{try{return Z(e.trim())}catch{return null}},Dr=(0,W.createContext)(void 0),Or=()=>{let e=(0,W.useContext)(Dr);if(!e)throw Error(`useColorPicker must be used within a ColorPickerProvider`);return e},kr=({value:e,defaultValue:t=`#000000`,onChange:n,className:r,...i})=>{let a=Z(e),o=Z(t),[s,c]=(0,W.useState)(a.hue()||o.hue()||0),[l,u]=(0,W.useState)(a.saturationl()||o.saturationl()||100),[d,f]=(0,W.useState)(a.lightness()||o.lightness()||50),[p,m]=(0,W.useState)(a.alpha()*100||o.alpha()*100),[h,g]=(0,W.useState)(`hex`);(0,W.useEffect)(()=>{if(e){let t=Z(e),[n,r,i]=t.hsl().array();c(n),u(r),f(i),m(t.alpha()*100)}},[e]),(0,W.useEffect)(()=>{if(n){let e=Z.hsl(s,l,d).alpha(p/100).rgb().array();n([e[0],e[1],e[2],p/100])}},[s,l,d,p,n]);let _=(0,W.useCallback)(e=>{let[t,n,r]=e.hsl().array();c(Number.isFinite(t)?t:0),u(Number.isFinite(n)?n:0),f(Number.isFinite(r)?r:0),m(e.alpha()*100)},[]),v=(0,W.useMemo)(()=>({hue:s,saturation:l,lightness:d,alpha:p,mode:h,setHue:c,setSaturation:u,setLightness:f,setAlpha:m,setMode:g,setColor:_}),[s,l,d,p,h,_]);return(0,G.jsx)(Dr.Provider,{value:v,children:(0,G.jsx)(`div`,{className:I(`flex size-full flex-col gap-4`,r),...i})})},Ar=(0,W.memo)(({className:e,...t})=>{let n=(0,W.useRef)(null),[r,i]=(0,W.useState)(!1),[a,o]=(0,W.useState)(0),[s,c]=(0,W.useState)(0),{hue:l,setSaturation:u,setLightness:d}=Or(),f=(0,W.useMemo)(()=>`linear-gradient(0deg, rgba(0,0,0,1), rgba(0,0,0,0)),
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ProjectHooksSettings-Dz9pRWek.js","assets/rolldown-runtime-Cyuzqnbw.js","assets/index-CmX0PQ41.js","assets/mermaid-DOtnPRYX.js","assets/dist-9FgEnJXd.js","assets/dist-Bdl9_5dx.js","assets/dist-D13Y8-qe.js","assets/icons-sqwAEN28.js","assets/tiptap-ByTP6yRf.js","assets/markdown-DBtwZWLP.js","assets/clsx-CjueKrWZ.js","assets/motion-622LpYRB.js","assets/_core-lD_pNs53.js","assets/initReactI18next-Dr0vnWXF.js","assets/auth-events-BAwnCYTy.js","assets/telemetry-BE4cJhqj.js","assets/circuit-breaker-store-DR3Dx8rQ.js","assets/react-B8mHUpgK.js","assets/index-CD_81O-J.css","assets/adapter-g71mvnZo.js","assets/items-z89mbR0g.js","assets/button-DqIT3IPY.js","assets/syntax-C54GZp2G.js","assets/useTranslation-DAPPK3Hy.js","assets/input-Bi-kCBn4.js","assets/monaco-dp65NPQw.js","assets/monaco-setup-pMTTM56o.js","assets/editor.api2-KGjWAjnM.js","assets/editor-Br_kD0ds.css","assets/app-store-DjqdXPml.js"])))=>i.map(i=>d[i]);
2
+ import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{B as t,D as n,En as r,F as i,Fn as a,Fr as o,Hn as s,Jt as c,Lt as l,O as u,Q as d,R as f,Rn as p,St as m,W as h,Z as g,_r as _,ar as v,b as y,ct as b,en as x,et as S,fr as C,i as w,k as T,kt as E,m as D,mr as ee,on as O,ot as te,pn as ne,pr as re,tt as k,un as ie,w as ae,yn as oe,yr as se,yt as ce,zn as le,zr as ue}from"./icons-sqwAEN28.js";import{At as de}from"./mermaid-DOtnPRYX.js";import{o as fe}from"./markdown-DBtwZWLP.js";import{i as A,o as j,s as pe}from"./dist-Bdl9_5dx.js";import{a as me}from"./dist-D13Y8-qe.js";import{t as M}from"./useTranslation-DAPPK3Hy.js";import{G as N,P,R as he,S as ge,T as _e,W as F,Y as ve,_t as ye,dt as be,f as xe,gt as Se,j as Ce,k as we,l as Te,lt as I,nt as Ee,q as L,t as De}from"./index-CmX0PQ41.js";import{t as R}from"./button-DqIT3IPY.js";import{$ as Oe,$r as ke,An as Ae,B as je,Bn as Me,Dr as Ne,Fn as Pe,Gr as Fe,H as Ie,Jr as Le,Lt as Re,Mn as ze,Nn as Be,P as Ve,Pn as He,Rt as Ue,Un as We,Ur as z,V as Ge,Wn as Ke,Wr as qe,Xr as Je,Xt as Ye,Yr as Xe,Z as Ze,a as Qe,an as $e,ar as et,at as tt,cr as nt,ct as rt,dr as it,et as at,fr as ot,hr as st,ht as ct,i as lt,jn as ut,lr as dt,m as ft,mn as pt,mr as mt,mt as ht,nt as gt,or as _t,ot as vt,pr as yt,pt as bt,qr as xt,rn as St,rt as Ct,sr as wt,st as Tt,tt as Et,ur as Dt,ut as B,vr as Ot,z as kt,zr as At}from"./items-z89mbR0g.js";import{t as V}from"./input-Bi-kCBn4.js";import{t as H}from"./loading-state-CuNSmah_.js";import{t as jt}from"./use-ws-Dne_mRf6.js";import{t as U}from"./app-store-DjqdXPml.js";import{t as Mt}from"./tooltip-icon-button-pAxgBlHP.js";import{t as Nt}from"./FolderPicker-BBAhdFeF.js";import{t as Pt}from"./ThreadStatusPin-CsUuwM1e.js";import{t as Ft}from"./ThreadPowerline-DVWTyxRC.js";import{n as It,o as Lt,r as Rt,u as zt}from"./providers-CDWMbzb0.js";import{t as Bt}from"./SearchablePicker-BlagKlJZ.js";import{n as Vt}from"./automation-store-CN7G1rmj.js";import{t as Ht}from"./SettingRow-D53ijhNn.js";import{t as Ut}from"./use-minute-tick-C-e4HaZD.js";var W=e(ue(),1),G=e(fe(),1),Wt=[{id:`claude`,label:`Claude`},{id:`codex`,label:`Codex`},{id:`gemini`,label:`Gemini`},{id:`cursor`,label:`Cursor`},{id:`opencode`,label:`opencode`},{id:`pi`,label:`Pi`},{id:`deepagent`,label:`DeepAgent`}],Gt={skill:{label:`Skills`,icon:T},"slash-command":{label:`Slash Commands`,icon:u},"mcp-server":{label:`MCP Servers`,icon:f},plugin:{label:`Plugins`,icon:T},connector:{label:`Connectors`,icon:f},"builtin-tool":{label:`Built-in Tools`,icon:T},template:{label:`Templates`,icon:T}},Kt=[`skill`,`slash-command`,`mcp-server`,`plugin`,`connector`,`builtin-tool`,`template`];function qt({resource:e,dimmed:t}){return(0,G.jsxs)(`div`,{className:I(`border-border/50 bg-card flex items-center justify-between gap-3 rounded-md border px-3 py-2`,t&&`opacity-60`),style:{borderLeftWidth:3,borderLeftColor:Pe(e.name)},"data-testid":`agent-resource-${e.kind}-${e.name}`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`span`,{className:`truncate font-mono text-sm`,children:e.kind===`slash-command`?`/${e.name}`:e.name}),e.commandTier&&(0,G.jsx)(`span`,{className:`bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-[10px] font-medium`,children:e.commandTier})]}),e.description&&(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 truncate text-xs`,children:e.description}),(0,G.jsx)(`span`,{className:`text-muted-foreground/70 text-xs`,children:e.origin})]}),t&&e.hiddenReason&&(0,G.jsxs)(`span`,{className:`text-muted-foreground/70 inline-flex shrink-0 items-center gap-1 text-xs`,children:[(0,G.jsx)(p,{className:`icon-2xs`}),e.hiddenReason]})]})}function Jt(){let{t:e}=M(),t=U(e=>e.projects),n=U(e=>e.selectedProjectId),[r,i]=(0,W.useState)(`claude`),[a,o]=(0,W.useState)([]),[s,c]=(0,W.useState)([]),[l,u]=(0,W.useState)(!1),d=n?t.find(e=>e.id===n)?.path??void 0:t[0]?.path??void 0,f=(0,W.useCallback)(async()=>{u(!0);let e=await P.listAgentResources({projectPath:d,provider:r,phase:`settings`});e.isOk()?(o(e.value.resources),c(e.value.hidden)):(Ke(e.error),o([]),c([])),u(!1)},[d,r]);(0,W.useEffect)(()=>{f()},[f]);let m=(0,W.useMemo)(()=>{let e=new Map;for(let t of a){let n=e.get(t.kind)??[];n.push(t),e.set(t.kind,n)}return e},[a]);return(0,G.jsxs)(`div`,{className:`space-y-6`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{className:`text-sm font-medium`,children:e(`settings.agentResources`)}),(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:e(`agentResources.subtitle`)})]}),(0,G.jsxs)(Tt,{value:r,onValueChange:i,children:[(0,G.jsx)(bt,{className:`w-44`,"data-testid":`agent-resources-provider`,children:(0,G.jsx)(ht,{})}),(0,G.jsx)(rt,{children:Wt.map(e=>(0,G.jsx)(B,{value:e.id,"data-testid":`agent-resources-provider-${e.id}`,children:e.label},e.id))})]})]}),l?(0,G.jsx)(H,{fill:!1,layout:`inline`,className:`py-6`,testId:`agent-resources-loading`,label:e(`common.loading`)}):(0,G.jsxs)(G.Fragment,{children:[Kt.filter(e=>m.has(e)).map(e=>{let t=Gt[e].icon,n=m.get(e);return(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`h3`,{className:`text-muted-foreground mb-2 flex items-center gap-1.5 text-xs font-semibold tracking-wider uppercase`,children:[(0,G.jsx)(t,{className:`icon-xs`}),Gt[e].label]}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:n.map((e,t)=>(0,G.jsx)(qt,{resource:e},`${e.kind}-${e.name}-${t}`))})]},e)}),a.length===0&&(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`agentResources.empty`)}),s.length>0&&(0,G.jsxs)(`div`,{"data-testid":`agent-resources-incompatible`,children:[(0,G.jsxs)(`h3`,{className:`text-muted-foreground mb-2 flex items-center gap-1.5 text-xs font-semibold tracking-wider uppercase`,children:[(0,G.jsx)(p,{className:`icon-xs`}),e(`agentResources.incompatible`)]}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:s.map((e,t)=>(0,G.jsx)(qt,{resource:e,dimmed:!0},`hidden-${e.kind}-${e.name}-${t}`))})]})]})]})}var Yt=60,Xt=5;function Zt({threads:e,search:t,contentSnippets:n,emptyMessage:r,searchEmptyMessage:i,onThreadClick:a,renderExtraBadges:o,renderActions:s,hideBranch:c=!1,hasMore:l=!1,loadingMore:u=!1,onEndReached:d,onSearchKeyDownRef:f,className:p}){let{t:m}=M();Ut();let h=Re(e=>e.pinThread),g=(0,W.useRef)(null),[_,v]=(0,W.useState)(-1),y=Ot({count:e.length,getScrollElement:()=>g.current,estimateSize:()=>Yt,getItemKey:t=>e[t]?.id??t,overscan:10});(0,W.useEffect)(()=>{v(-1)},[t,e]);let b=(0,W.useCallback)(t=>{if(!(!a||e.length===0))if(t.key===`ArrowDown`){t.preventDefault();let n=_<e.length-1?_+1:0;v(n),y.scrollToIndex(n,{align:`auto`})}else if(t.key===`ArrowUp`){t.preventDefault();let n=_>0?_-1:e.length-1;v(n),y.scrollToIndex(n,{align:`auto`})}else t.key===`Enter`&&_>=0&&_<e.length&&(t.preventDefault(),a(e[_]))},[e,a,_,y]);(0,W.useEffect)(()=>{if(f)return f.current=b,()=>{f&&(f.current=null)}},[f,b]);let x=y.getVirtualItems();return(0,W.useEffect)(()=>{if(!l||u||!d)return;let t=x[x.length-1];t&&t.index>=e.length-1-Xt&&d()},[x,l,u,d,e.length]),e.length===0?(0,G.jsx)(`div`,{className:I(`flex h-32 items-center justify-center text-xs text-muted-foreground`,p),children:t?i:r}):(0,G.jsx)(`div`,{className:I(`flex min-h-0 flex-1 flex-col`,p),children:(0,G.jsxs)(`div`,{ref:g,"data-testid":`virtual-thread-list-scroll`,className:`border-border/50 min-h-0 flex-1 overflow-y-auto rounded-lg border`,children:[(0,G.jsx)(`div`,{style:{height:`${y.getTotalSize()}px`,width:`100%`,position:`relative`},children:x.map(r=>{let i=e[r.index];return i?(0,G.jsxs)(a?`button`:`div`,{"data-index":r.index,"data-testid":`virtual-thread-item-${i.id}`,ref:y.measureElement,...a?{onClick:()=>a(i)}:{},onMouseMove:()=>v(r.index),className:I(`w-full flex items-center gap-3 px-3 py-2.5 border-b border-border/50 group/row outline-hidden`,a&&`text-left hover:bg-accent/50 transition-colors`,r.index===_&&`bg-accent/50`),style:{position:`absolute`,top:0,left:0,transform:`translateY(${r.start}px)`},children:[(0,G.jsx)(Pt,{thread:i,onPin:e=>h(i.id,i.projectId,e),hoverGroup:`row`,showStatusTooltip:!0}),(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsx)(ft,{title:i.title,search:t,className:`block text-sm font-medium`,badgeTestId:`virtual-thread-item-attachments-${i.id}`,stopBadgePropagation:!0}),n?.get(i.id)&&t&&!He(i.title).includes(He(t))&&(0,G.jsx)(Be,{text:n.get(i.id),query:t,className:`text-muted-foreground block truncate text-[11px] italic`}),(0,G.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2`,children:[o?.(i),!c&&(be(i)||i.baseBranch)&&(0,G.jsx)(Ie,{branch:be(i)||i.baseBranch,size:`xs`,className:`max-w-[150px]`})]})]}),(0,G.jsx)(`span`,{className:`text-muted-foreground hidden shrink-0 text-xs sm:inline`,children:St(i.completedAt??i.createdAt,m)}),s?.(i)]},r.key):null})}),u&&(0,G.jsx)(H,{fill:!1,layout:`inline`,size:`compact`,className:`py-3`,testId:`virtual-thread-list-loading-more`,label:m(`common.loading`)})]})})}var Qt=100;function $t(){let{t:e}=M(),t=U(e=>e.projects),n=U(e=>e.selectedProjectId),r=U(e=>e.loadThreadsForProject),i=We(e=>e.statusByBranch),[a,s]=(0,W.useState)([]),[c,l]=(0,W.useState)(0),[u,d]=(0,W.useState)(!0),[f,p]=(0,W.useState)(!1),[m,h]=(0,W.useState)(``),[g,_]=(0,W.useState)(``),[v,b]=(0,W.useState)(1),x=(0,W.useRef)(void 0),S=(0,W.useRef)(null),C=(0,W.useMemo)(()=>Object.fromEntries(t.map(e=>[e.id,e])),[t]),w=(0,W.useCallback)(async(e,t)=>{e===1?d(!0):p(!0);let r=await P.listArchivedThreads({page:e,limit:Qt,search:t||void 0,projectId:n||void 0});r.isOk()&&(l(r.value.total),s(t=>e===1?r.value.threads:[...t,...r.value.threads])),d(!1),p(!1)},[n]);(0,W.useEffect)(()=>{b(1),w(1,g)},[w,g]);let T=e=>{h(e),x.current&&clearTimeout(x.current),x.current=setTimeout(()=>_(e),300)},E=(0,W.useCallback)(()=>{if(u||f||a.length>=c)return;let e=v+1;b(e),w(e,g)},[u,f,a.length,c,v,w,g]),D=async t=>{(await P.archiveThread(t.id,!1)).isOk()?(s(e=>e.filter(e=>e.id!==t.id)),l(e=>e-1),r(t.projectId),z.success(e(`archived.restored`,{title:t.title}))):z.error(e(`archived.restoreFailed`))},ee=async t=>{confirm(e(`dialog.deleteThreadDesc`,{title:t.title}))&&(await P.deleteThread(t.id)).isOk()&&(s(e=>e.filter(e=>e.id!==t.id)),l(e=>e-1),z.success(e(`toast.threadDeleted`,{title:t.title})))},O=a.length<c;return(0,G.jsxs)(`div`,{className:`flex h-full min-h-0 flex-1 flex-col`,children:[(0,G.jsxs)(`div`,{className:`border-border/50 flex items-center gap-2 border-b px-4 py-2`,children:[(0,G.jsx)(pt,{inputRef:S,query:m,onQueryChange:T,totalMatches:a.length,resultLabel:m.trim()?`${a.length}/${c}`:``,onClose:m?()=>T(``):void 0,autoFocus:!0,placeholder:e(`archived.searchPlaceholder`),testIdPrefix:`archived-search`,className:`border-input h-7 w-72 shrink-0 rounded-md border bg-transparent px-2`}),(0,G.jsx)(`div`,{className:`bg-border h-4 w-px`}),(0,G.jsxs)(`span`,{className:`text-muted-foreground text-xs`,children:[c,` `,e(`archived.archivedCount`)]})]}),(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-4 py-3`,children:u?(0,G.jsx)(H,{fill:!1,layout:`inline`,size:`compact`,className:`h-32 shrink-0`,testId:`archived-loading`,label:e(`common.loading`)}):(0,G.jsx)(Zt,{threads:a,search:g,emptyMessage:e(`archived.noArchived`),searchEmptyMessage:e(`allThreads.noMatch`),hideBranch:!0,hasMore:O,loadingMore:f,onEndReached:E,renderExtraBadges:e=>{let t=i[Me(e)],n=C[e.projectId];return(0,G.jsx)(Ft,{thread:e,projectName:n?.name,projectColor:n?.color,gitStatus:t,diffStatsSize:`xxs`,"data-testid":`archived-thread-powerline-${e.id}`})},renderActions:t=>(0,G.jsxs)(`div`,{className:`flex items-center gap-1 opacity-0 transition-opacity group-hover/row:opacity-100`,children:[(0,G.jsx)(Mt,{onClick:()=>D(t),className:`text-muted-foreground hover:text-foreground`,tooltip:e(`archived.restore`),children:(0,G.jsx)(o,{className:`icon-sm`})}),(0,G.jsx)(Mt,{onClick:()=>ee(t),className:`text-muted-foreground hover:text-destructive`,tooltip:e(`common.delete`),children:(0,G.jsx)(y,{className:`icon-sm`})})]})})})]})}function en({options:e,value:t,onChange:n}){return(0,G.jsx)(`div`,{className:`border-border bg-muted/30 flex rounded-md border p-0.5`,children:e.map(e=>(0,G.jsxs)(`button`,{onClick:()=>n(e.value),"aria-pressed":t===e.value,"data-testid":e.testId,className:I(`flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-sm transition-colors`,t===e.value?`bg-background text-foreground shadow-xs`:`text-muted-foreground hover:text-foreground`),children:[e.icon,e.label]},e.value))})}var tn=[{value:`*/15 * * * *`,label:`Every 15 min`},{value:`*/30 * * * *`,label:`Every 30 min`},{value:`0 * * * *`,label:`Every hour`},{value:`0 */2 * * *`,label:`Every 2 hours`},{value:`0 */6 * * *`,label:`Every 6 hours`},{value:`0 */12 * * *`,label:`Every 12 hours`},{value:`0 9 * * *`,label:`Daily at 9am`},{value:`0 9 * * 1`,label:`Weekly (Mon 9am)`}];function nn(e){return tn.find(t=>t.value===e)?.label??e}var rn=[{value:`haiku`,label:`Haiku`},{value:`sonnet`,label:`Sonnet`},{value:`opus`,label:`Opus`}],an={name:``,prompt:``,schedule:`0 * * * *`,model:`sonnet`,permissionMode:`autoEdit`};function on(){let e=ye(),t=Se(),n=U(e=>e.selectedProjectId),r=Vt(e=>e.automationsByProject),i=Vt(e=>e.loadAutomations),a=Vt(e=>e.createAutomation),o=Vt(e=>e.updateAutomation),s=Vt(e=>e.deleteAutomation),c=Vt(e=>e.triggerAutomation),l=Vt(e=>e.selectedAutomationRuns),u=Vt(e=>e.loadRuns),[f,p]=(0,W.useState)(!1),[m,h]=(0,W.useState)(null),[g,_]=(0,W.useState)(an),[v,C]=(0,W.useState)(null),w=n&&r[n]||[];(0,W.useEffect)(()=>{n&&i(n)},[n,i]),(0,W.useEffect)(()=>{t.state?.openCreateAutomation&&(h(null),_(an),p(!0),e(t.pathname+t.search,{replace:!0,state:null}))},[t,e]);let T=()=>{h(null),_(an),p(!0)},E=e=>{h(e.id),_({name:e.name,prompt:e.prompt,schedule:e.schedule,model:e.model,permissionMode:e.permissionMode}),p(!0)},D=async(e=!1)=>{if(!n||!g.name.trim()||!g.prompt.trim())return;let t=null;m?(await o(m,{name:g.name.trim(),prompt:g.prompt.trim(),schedule:g.schedule,model:g.model,permissionMode:g.permissionMode}),t=m):t=(await a({projectId:n,name:g.name.trim(),prompt:g.prompt.trim(),schedule:g.schedule,model:g.model,permissionMode:g.permissionMode}))?.id??null,p(!1),e&&t&&await c(t)},ee=async e=>{await o(e.id,{enabled:!e.enabled})},O=async e=>{n&&await s(e.id,n)},ne=async e=>{await c(e.id)},re=e=>{C(e),u(e)};return n?(0,G.jsxs)(`div`,{className:`space-y-4`,children:[w.length>0&&(0,G.jsx)(`div`,{className:`flex items-center justify-end`,children:(0,G.jsxs)(R,{variant:`outline`,size:`sm`,className:`gap-1.5`,onClick:T,children:[(0,G.jsx)(d,{className:`icon-sm`}),`Create`]})}),w.length===0?(0,G.jsxs)(`div`,{className:`py-8 text-center`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground mb-3 text-sm`,children:`No automations yet.`}),(0,G.jsxs)(R,{variant:`outline`,size:`sm`,className:`gap-1.5`,onClick:T,children:[(0,G.jsx)(d,{className:`icon-sm`}),`Create your first automation`]})]}):w.map(t=>(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsxs)(`div`,{className:`settings-item-card group flex items-center justify-between gap-3`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`span`,{className:I(`h-2 w-2 rounded-full shrink-0`,t.enabled?`bg-status-success/80`:`bg-muted-foreground/30`)}),(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:t.name}),(0,G.jsx)(`span`,{className:`bg-muted text-muted-foreground shrink-0 rounded-full px-1.5 py-0.5 text-xs`,children:nn(t.schedule)}),(0,G.jsx)(`span`,{className:`bg-muted text-muted-foreground shrink-0 rounded-full px-1.5 py-0.5 text-xs`,children:t.model}),t.source===`config`&&(0,G.jsx)(`span`,{className:`shrink-0 rounded-full bg-blue-500/15 px-1.5 py-0.5 text-xs text-blue-500`,"data-testid":`automation-config-badge-${t.id}`,children:`.funny.json`})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 truncate pl-4 text-xs`,children:t.prompt}),t.lastRunAt&&(0,G.jsxs)(`p`,{className:`text-muted-foreground/70 mt-0.5 pl-4 text-xs`,children:[`Last run: `,new Date(t.lastRunAt).toLocaleString()]})]}),(0,G.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100`,children:[(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>ne(t),className:`text-status-success/80 hover:text-status-success`,children:(0,G.jsx)(S,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:`Run Now`})]}),(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>ee(t),className:`text-muted-foreground`,children:t.enabled?(0,G.jsx)(b,{className:`icon-sm`}):(0,G.jsx)(S,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:t.enabled?`Pause`:`Enable`})]}),(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>re(t.id),className:`text-muted-foreground`,children:(0,G.jsx)(x,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:`Run History`})]}),t.source!==`config`&&(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>E(t),className:`text-muted-foreground`,children:(0,G.jsx)(te,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:`Edit`})]}),t.source!==`config`&&(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>O(t),className:`text-muted-foreground hover:text-status-error`,children:(0,G.jsx)(y,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:`Delete`})]})]})]}),v===t.id&&(0,G.jsxs)(`div`,{className:`ml-4 space-y-1`,children:[l.length===0?(0,G.jsx)(`p`,{className:`text-muted-foreground py-2 pl-2 text-xs`,children:`No runs yet.`}):l.slice(0,10).map(t=>(0,G.jsxs)(`div`,{className:`border-border/30 flex items-center justify-between gap-2 rounded border px-2 py-1.5 text-xs`,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,G.jsx)(`span`,{className:I(`h-1.5 w-1.5 rounded-full shrink-0`,t.status===`running`?`bg-status-info animate-pulse`:t.status===`completed`?`bg-status-success/80`:t.status===`failed`?`bg-status-error`:`bg-muted-foreground/30`)}),(0,G.jsx)(`span`,{className:`text-muted-foreground truncate`,children:new Date(t.startedAt).toLocaleString()}),(0,G.jsx)(`span`,{className:`text-muted-foreground/70`,children:t.status})]}),(0,G.jsx)(R,{variant:`ghost`,size:`sm`,className:`h-5 px-1.5 text-xs`,onClick:()=>{e(Ue(`/projects/${n}/threads/${t.threadId}`))},children:`View`})]},t.id)),(0,G.jsx)(R,{variant:`ghost`,size:`sm`,className:`h-5 w-full text-xs`,onClick:()=>C(null),children:`Close`})]})]},t.id)),(0,G.jsx)(Fe,{open:f,onOpenChange:p,children:(0,G.jsxs)(xt,{className:`max-w-lg`,children:[(0,G.jsx)(Je,{children:(0,G.jsx)(ke,{children:m?`Edit Automation`:`Create Automation`})}),(0,G.jsxs)(`div`,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:`Name`}),(0,G.jsx)(V,{className:`settings-form-input`,placeholder:`e.g. Daily Issue Triage`,value:g.name,onChange:e=>_(t=>({...t,name:e.target.value})),autoFocus:!0})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:`Prompt`}),(0,G.jsx)(qe,{className:`min-h-[100px] resize-y text-sm`,placeholder:`What should the agent do?`,value:g.prompt,onChange:e=>_(t=>({...t,prompt:e.target.value}))})]}),(0,G.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:`Schedule`}),(0,G.jsxs)(Tt,{value:tn.some(e=>e.value===g.schedule)?g.schedule:`__custom__`,onValueChange:e=>{e!==`__custom__`&&_(t=>({...t,schedule:e}))},children:[(0,G.jsx)(bt,{className:`w-full`,children:(0,G.jsx)(ht,{})}),(0,G.jsxs)(rt,{children:[tn.map(e=>(0,G.jsx)(B,{value:e.value,children:e.label},e.value)),(0,G.jsx)(B,{value:`__custom__`,children:`Custom cron…`})]})]}),!tn.some(e=>e.value===g.schedule)&&(0,G.jsx)(V,{className:`settings-form-input mt-1.5 font-mono text-xs`,placeholder:`*/30 * * * *`,value:g.schedule,onChange:e=>_(t=>({...t,schedule:e.target.value}))}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-1 text-xs`,children:`Cron: min hour day month weekday`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:`Model`}),(0,G.jsx)(en,{options:rn,value:g.model,onChange:e=>_(t=>({...t,model:e}))})]})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Automations run locally in read-only mode (no file writes).`})]}),(0,G.jsxs)(Xe,{children:[(0,G.jsx)(R,{variant:`outline`,size:`sm`,onClick:()=>p(!1),children:`Cancel`}),(0,G.jsxs)(R,{variant:`outline`,size:`sm`,onClick:()=>D(!0),disabled:!g.name.trim()||!g.prompt.trim(),className:`gap-1.5`,children:[(0,G.jsx)(S,{className:`icon-xs`}),m?`Save & Test`:`Create & Test`]}),(0,G.jsx)(R,{size:`sm`,onClick:()=>D(!1),disabled:!g.name.trim()||!g.prompt.trim(),children:m?`Save`:`Create`})]})]})})]}):(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:`Select a project to manage automations.`})}function sn({value:e,onChange:t,options:n,placeholder:r,searchPlaceholder:i}){let[a,o]=(0,W.useState)(!1),s=(0,W.useId)();return(0,G.jsxs)(Ae,{open:a,onOpenChange:o,children:[(0,G.jsx)(ze,{asChild:!0,children:(0,G.jsxs)(R,{variant:`outline`,role:`combobox`,"aria-expanded":a,"aria-controls":s,className:`h-8 w-[160px] justify-between text-xs`,children:[(0,G.jsx)(`span`,{className:`truncate`,children:n.find(t=>t.value===e)?.label??r}),(0,G.jsx)(re,{className:`icon-xs ml-1 shrink-0 opacity-50`})]})}),(0,G.jsx)(ut,{className:`w-[200px] p-0`,align:`start`,children:(0,G.jsxs)(Ze,{children:[(0,G.jsx)(Et,{placeholder:i,className:`h-8 text-xs`}),(0,G.jsxs)(Ct,{id:s,children:[(0,G.jsx)(Oe,{children:`No results.`}),(0,G.jsx)(at,{children:n.map(n=>(0,G.jsxs)(gt,{value:n.label,onSelect:()=>{t(n.value),o(!1)},className:`text-xs`,children:[(0,G.jsx)(se,{className:I(`mr-2 h-3 w-3`,e===n.value?`opacity-100`:`opacity-0`)}),n.label]},n.value))})]})]})})]})}function K({title:e,description:t,children:n}){return(0,G.jsxs)(`div`,{className:`border-border/50 flex items-center justify-between gap-4 border-b px-4 py-3.5 last:border-b-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:e}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:t})]}),(0,G.jsx)(`div`,{className:`shrink-0`,children:n})]})}function cn({options:e,value:t,onChange:n}){return(0,G.jsx)(`div`,{className:`border-border bg-muted/30 flex rounded-md border p-0.5`,children:e.map(e=>(0,G.jsxs)(`button`,{onClick:()=>n(e.value),"aria-pressed":t===e.value,"data-testid":e.testId,className:I(`flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-sm transition-colors`,t===e.value?`bg-background text-foreground shadow-xs`:`text-muted-foreground hover:text-foreground`),children:[e.icon,e.label]},e.value))})}function ln({projectId:e,currentUrls:t,onSave:n}){let[r,i]=(0,W.useState)(t),[a,o]=(0,W.useState)(t),{t:s}=M();t!==a&&(o(t),i(t));let c=t=>{let r=t.filter(e=>e.trim()!==``);i(r.length>0?r:[]),n(e,{urls:r.length>0?r:null})};return(0,G.jsxs)(`div`,{className:`border-border/50 flex flex-col gap-3 border-b px-4 py-3.5 last:border-b-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:s(`settings.projectUrls`,`Extension URLs`)}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:s(`settings.projectUrlsDesc`,`URLs for Chrome extension auto-detection. The extension will auto-select this project when you visit a matching URL.`)})]}),(0,G.jsxs)(`div`,{className:`space-y-2`,children:[r.map((e,t)=>(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(V,{value:e,onChange:e=>{let n=[...r];n[t]=e.target.value,i(n)},onBlur:()=>c(r),onKeyDown:e=>{e.key===`Enter`&&c(r)},placeholder:`https://example.com`,className:`h-8 flex-1 font-mono text-xs`}),(0,G.jsx)(Mt,{size:`icon-sm`,className:`shrink-0`,onClick:()=>{c(r.filter((e,n)=>n!==t))},tooltip:s(`common.delete`),children:(0,G.jsx)(w,{className:`icon-sm`})})]},t)),(0,G.jsxs)(R,{variant:`outline`,size:`sm`,onClick:()=>i(e=>[...e,``]),"data-testid":`settings-url-pattern-add`,children:[(0,G.jsx)(d,{className:`icon-xs mr-1.5`}),s(`settings.addUrl`,`Add URL`)]})]})]})}function un({projectId:e,currentPrompt:t,onSave:n}){let[r,i]=(0,W.useState)(t||``),{t:a}=M();return(0,W.useEffect)(()=>{i(t||``)},[t]),(0,G.jsxs)(`div`,{className:`border-border/50 flex flex-col gap-3 border-b px-4 py-3.5 last:border-b-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(E,{className:`icon-base text-muted-foreground`}),(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:a(`settings.systemPrompt`,`System Prompt`)})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:a(`settings.systemPromptDesc`,`Custom instructions prepended to every agent message in this project. Use this for project-specific conventions, coding standards, or context.`)})]}),(0,G.jsx)(qe,{value:r,onChange:e=>i(e.target.value),onBlur:()=>{n(e,{systemPrompt:r.trim()||null})},placeholder:a(`settings.systemPromptPlaceholder`,`e.g. Always use TypeScript strict mode. Follow the repository's existing patterns...`),className:`min-h-[120px] resize-y font-mono text-xs`,"data-testid":`settings-system-prompt`})]})}function dn({projectId:e,currentUrl:t,onSave:n}){let[r,i]=(0,W.useState)(t||``),{t:a}=M();(0,W.useEffect)(()=>{i(t||``)},[t]);let o=()=>{n(e,{launcherUrl:r.trim()||null})};return(0,G.jsx)(K,{title:a(`settings.launcherUrl`,`Podman Launcher URL`),description:a(`settings.launcherUrlDesc`,`URL of the Podman launcher API for remote container execution`),children:(0,G.jsx)(V,{value:r,onChange:e=>i(e.target.value),onBlur:o,onKeyDown:e=>{e.key===`Enter`&&o()},placeholder:`http://localhost:4040`,className:`h-8 w-[240px] font-mono text-xs`,"data-testid":`settings-launcher-url`})})}function fn({projectId:e,currentTemplateId:t,onSave:n}){let{templates:r,initialized:i,loadTemplates:a}=Qe();return(0,W.useEffect)(()=>{i||a()},[i,a]),(0,G.jsx)(K,{title:`Default Agent Template`,description:`Auto-select this template when creating new Deep Agent threads in this project.`,children:(0,G.jsxs)(`select`,{className:`border-input bg-background h-9 rounded-md border px-3 text-xs`,value:t??``,onChange:t=>{n(e,{defaultAgentTemplateId:t.target.value||null})},"data-testid":`settings-default-agent-template`,children:[(0,G.jsx)(`option`,{value:``,children:`None`}),r.map(e=>(0,G.jsx)(`option`,{value:e.id,children:e.id.startsWith(`__builtin__`)?`[Built-in] ${e.name}`:e.name},e.id))]})})}function pn({projectId:e}){let[t,n]=(0,W.useState)(null),[r,i]=(0,W.useState)(!0),[a,o]=(0,W.useState)(!1),{t:s}=M(),c=(0,W.useCallback)(async()=>{i(!0);let t=await he.getWeaveStatus(e);t.isOk()?n(t.value):n(null),i(!1)},[e]);return(0,W.useEffect)(()=>{c()},[c]),r?(0,G.jsx)(K,{title:s(`settings.weaveTitle`,`Semantic Merge (Weave)`),description:s(`settings.weaveDesc`,`Reduces false merge conflicts using semantic analysis`),children:(0,G.jsx)(`div`,{className:`bg-muted h-8 w-[140px] animate-pulse rounded-md`})}):!t||t.status===`not-installed`?(0,G.jsx)(K,{title:s(`settings.weaveTitle`,`Semantic Merge (Weave)`),description:s(`settings.weaveDesc`,`Reduces false merge conflicts using semantic analysis`),children:(0,G.jsxs)(`div`,{className:`text-muted-foreground flex items-center gap-2 text-xs`,children:[(0,G.jsx)(`span`,{"data-testid":`settings-weave-status`,children:s(`settings.weaveNotInstalled`,`weave-driver not found`)}),(0,G.jsx)(`a`,{href:`https://github.com/Ataraxy-Labs/weave`,target:`_blank`,rel:`noopener noreferrer`,className:`text-xs text-blue-500 hover:underline`,"data-testid":`settings-weave-install-link`,children:s(`settings.weaveInstall`,`Install`)})]})}):(0,G.jsx)(K,{title:s(`settings.weaveTitle`,`Semantic Merge (Weave)`),description:s(`settings.weaveDesc`,`Reduces false merge conflicts using semantic analysis`),children:(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`span`,{"data-testid":`settings-weave-status`,className:I(`text-xs`,t.status===`active`?`text-green-500`:`text-muted-foreground`),children:t.status===`active`?s(`settings.weaveActive`,`Active`):s(`settings.weaveUnconfigured`,`Not configured`)}),(0,G.jsx)(R,{size:`sm`,variant:`outline`,onClick:async()=>{o(!0);let t=await he.configureWeave(e);t.isOk()?(n(t.value.status),z.success(s(`settings.weaveConfigured`,`Weave semantic merge configured`))):z.error(s(`settings.weaveConfigureFailed`,`Failed to configure Weave`)),o(!1)},disabled:a,"data-testid":`settings-weave-configure`,children:a?s(`settings.weaveConfiguring`,`Configuring...`):t.status===`active`?s(`settings.weaveReconfigure`,`Reconfigure`):s(`settings.weaveConfigure`,`Configure`)})]})})}var mn=[`PageUp`,`PageDown`],hn=[`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`],gn={"from-left":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-right":[`Home`,`PageDown`,`ArrowDown`,`ArrowRight`],"from-bottom":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-top":[`Home`,`PageDown`,`ArrowUp`,`ArrowLeft`]},_n=`Slider`,[vn,yn,bn]=_t(_n),[xn,Sn]=j(_n,[bn]),[Cn,wn]=xn(_n),Tn=W.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=W.useRef(new Set),_=W.useRef(0),v=W.useRef(!1),y=o===`horizontal`?On:kn,[b=[],x]=ve({prop:u,defaultProp:l,onChange:e=>{[...g.current][_.current]?.focus({preventScroll:!0,focusVisible:v.current}),v.current=!1,d(e)}}),S=W.useRef(b);function C(e){E(e,Jn(b,e))}function w(e){E(e,_.current)}function T(){let e=S.current[_.current];b[_.current]!==e&&f(b)}function E(e,t,{commit:n}={commit:!1}){let o=$n(a),s=$e(er(Math.round((e-r)/a)*a+r,o),[r,i]);x((e=[])=>{let r=Gn(e,s,t);if(Zn(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,G.jsx)(Cn,{scope:e.__scopeSlider,name:n,disabled:s,min:r,max:i,valueIndexToChangeRef:_,thumbs:g.current,values:b,orientation:o,form:m,children:(0,G.jsx)(vn.Provider,{scope:e.__scopeSlider,children:(0,G.jsx)(vn.Slot,{scope:e.__scopeSlider,children:(0,G.jsx)(y,{"aria-disabled":s,"data-disabled":s?``:void 0,...h,ref:t,onPointerDown:pe(h.onPointerDown,()=>{s||(S.current=b,v.current=!1)}),min:r,max:i,inverted:p,onSlideStart:s?void 0:C,onSlideMove:s?void 0:w,onSlideEnd:s?void 0:T,onHomeKeyDown:()=>{s||(v.current=!0,E(r,0,{commit:!0}))},onEndKeyDown:()=>{s||(v.current=!0,E(i,b.length-1,{commit:!0}))},onStepKeyDown:({event:e,direction:t})=>{if(!s){v.current=!0;let n=mn.includes(e.key)||e.shiftKey&&hn.includes(e.key)?10:1,r=_.current,i=b[r];E(i+a*n*t,r,{commit:!0})}}})})})})});Tn.displayName=_n;var[En,Dn]=xn(_n,{startEdge:`left`,endEdge:`right`,size:`width`,direction:1}),On=W.forwardRef((e,t)=>{let{min:n,max:r,dir:i,inverted:a,onSlideStart:o,onSlideMove:s,onSlideEnd:c,onStepKeyDown:l,...u}=e,[d,f]=W.useState(null),p=me(t,e=>f(e)),m=W.useRef(void 0),h=et(i),g=h===`ltr`,_=g&&!a||!g&&a;function v(e){let t=m.current||d.getBoundingClientRect(),i=Qn([0,t.width],_?[n,r]:[r,n]);return m.current=t,i(e-t.left)}return(0,G.jsx)(En,{scope:e.__scopeSlider,startEdge:_?`left`:`right`,endEdge:_?`right`:`left`,direction:_?1:-1,size:`width`,children:(0,G.jsx)(An,{dir:h,"data-orientation":`horizontal`,...u,ref:p,style:{...u.style,"--radix-slider-thumb-transform":`translateX(-50%)`},onSlideStart:e=>{let t=v(e.clientX);o?.(t)},onSlideMove:e=>{let t=v(e.clientX);s?.(t)},onSlideEnd:()=>{m.current=void 0,c?.()},onStepKeyDown:e=>{let t=gn[_?`from-left`:`from-right`].includes(e.key);l?.({event:e,direction:t?-1:1})}})})}),kn=W.forwardRef((e,t)=>{let{min:n,max:r,inverted:i,onSlideStart:a,onSlideMove:o,onSlideEnd:s,onStepKeyDown:c,...l}=e,u=W.useRef(null),d=me(t,u),f=W.useRef(void 0),p=!i;function m(e){let t=f.current||u.current.getBoundingClientRect(),i=Qn([0,t.height],p?[r,n]:[n,r]);return f.current=t,i(e-t.top)}return(0,G.jsx)(En,{scope:e.__scopeSlider,startEdge:p?`bottom`:`top`,endEdge:p?`top`:`bottom`,size:`height`,direction:p?1:-1,children:(0,G.jsx)(An,{"data-orientation":`vertical`,...l,ref:d,style:{...l.style,"--radix-slider-thumb-transform":`translateY(50%)`},onSlideStart:e=>{let t=m(e.clientY);a?.(t)},onSlideMove:e=>{let t=m(e.clientY);o?.(t)},onSlideEnd:()=>{f.current=void 0,s?.()},onStepKeyDown:e=>{let t=gn[p?`from-bottom`:`from-top`].includes(e.key);c?.({event:e,direction:t?-1:1})}})})}),An=W.forwardRef((e,t)=>{let{__scopeSlider:n,onSlideStart:r,onSlideMove:i,onSlideEnd:a,onHomeKeyDown:o,onEndKeyDown:s,onStepKeyDown:c,...l}=e,u=wn(_n,n);return(0,G.jsx)(A.span,{...l,ref:t,onKeyDown:pe(e.onKeyDown,e=>{e.key===`Home`?(o(e),e.preventDefault()):e.key===`End`?(s(e),e.preventDefault()):mn.concat(hn).includes(e.key)&&(c(e),e.preventDefault())}),onPointerDown:pe(e.onPointerDown,e=>{let t=e.target;t.setPointerCapture(e.pointerId),e.preventDefault(),u.thumbs.has(t)?t.focus({preventScroll:!0,focusVisible:!1}):r(e)}),onPointerMove:pe(e.onPointerMove,e=>{e.target.hasPointerCapture(e.pointerId)&&i(e)}),onPointerUp:pe(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(t.releasePointerCapture(e.pointerId),a(e))})})}),jn=`SliderTrack`,Mn=W.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=wn(jn,n);return(0,G.jsx)(A.span,{"data-disabled":i.disabled?``:void 0,"data-orientation":i.orientation,...r,ref:t})});Mn.displayName=jn;var Nn=`SliderRange`,Pn=W.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=wn(Nn,n),a=Dn(Nn,n),o=me(t,W.useRef(null)),s=i.values.length,c=i.values.map(e=>Kn(e,i.min,i.max)),l=s>1?Math.min(...c):0,u=100-Math.max(...c);return(0,G.jsx)(A.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?``:void 0,...r,ref:o,style:{...e.style,[a.startEdge]:l+`%`,[a.endEdge]:u+`%`}})});Pn.displayName=Nn;var Fn=`SliderThumb`,[In,Ln]=xn(Fn),Rn=`SliderThumbProvider`;function zn(e){let{__scopeSlider:t,name:n,children:r,internal_do_not_use_render:i}=e,a=wn(Rn,t),o=yn(t),[s,c]=W.useState(null),l=W.useMemo(()=>s?o().findIndex(e=>e.ref.current===s):-1,[o,s]),u=Ee(s),d=s?!!a.form||!!s.closest(`form`):!0,f=a.values[l],p=n??(a.name?a.name+(a.values.length>1?`[]`:``):void 0),m=f===void 0?0:Kn(f,a.min,a.max);W.useEffect(()=>{if(s)return a.thumbs.add(s),()=>{a.thumbs.delete(s)}},[s,a.thumbs]);let h={value:f,name:p,form:a.form,isFormControl:d,index:l,thumb:s,onThumbChange:c,percent:m,size:u};return(0,G.jsx)(In,{scope:t,...h,children:tr(i)?i(h):r})}zn.displayName=Rn;var Bn=`SliderThumbTrigger`,Vn=W.forwardRef((e,t)=>{let{__scopeSlider:n,...r}=e,i=wn(Bn,n),a=Dn(Bn,n),{index:o,value:s,percent:c,size:l,onThumbChange:u}=Ln(Bn,n),d=me(t,e=>u(e)),f=qn(o,i.values.length),p=l?.[a.size],m=p?Yn(p,c,a.direction):0;return(0,G.jsx)(`span`,{style:{transform:`var(--radix-slider-thumb-transform)`,position:`absolute`,[a.startEdge]:`calc(${c}% + ${m}px)`},children:(0,G.jsx)(vn.ItemSlot,{scope:n,children:(0,G.jsx)(A.span,{role:`slider`,"aria-label":e[`aria-label`]||f,"aria-valuemin":i.min,"aria-valuenow":s,"aria-valuemax":i.max,"aria-orientation":i.orientation,"data-orientation":i.orientation,"data-disabled":i.disabled?``:void 0,tabIndex:i.disabled?void 0:0,...r,ref:d,style:s===void 0?{display:`none`}:e.style,onFocus:pe(e.onFocus,()=>{i.valueIndexToChangeRef.current=o})})})})});Vn.displayName=Bn;var Hn=W.forwardRef((e,t)=>{let{__scopeSlider:n,name:r,...i}=e;return(0,G.jsx)(zn,{__scopeSlider:n,name:r,internal_do_not_use_render:({index:e,isFormControl:r})=>(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Vn,{...i,ref:t,__scopeSlider:n}),r?(0,G.jsx)(Wn,{__scopeSlider:n},e):null]})})});Hn.displayName=Fn;var Un=`SliderBubbleInput`,Wn=W.forwardRef(({__scopeSlider:e,...t},n)=>{let{value:r,name:i,form:a}=Ln(Un,e),o=W.useRef(null),s=me(o,n),c=ct(r);return W.useEffect(()=>{let e=o.current;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(c!==r&&n){let t=new Event(`input`,{bubbles:!0});n.call(e,r),e.dispatchEvent(t)}},[c,r]),(0,G.jsx)(A.input,{style:{display:`none`},name:i,form:a,...t,ref:s,defaultValue:r})});Wn.displayName=Un;function Gn(e=[],t,n){let r=[...e];return r[n]=t,r.sort((e,t)=>e-t)}function Kn(e,t,n){return $e(100/(n-t)*(e-t),[0,100])}function qn(e,t){if(t>2)return`Value ${e+1} of ${t}`;if(t===2)return[`Minimum`,`Maximum`][e]}function Jn(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 Yn(e,t,n){let r=e/2;return(r-Qn([0,50],[0,r])(t)*n)*n}function Xn(e){return e.slice(0,-1).map((t,n)=>e[n+1]-t)}function Zn(e,t){if(t>0){let n=Xn(e);return Math.min(...n)>=t}return!0}function Qn(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 $n(e){if(!Number.isFinite(e))return 0;let t=e.toString();if(t.includes(`e`)){let[e,n]=t.split(`e`),r=e.split(`.`)[1]||``,i=Number(n);return Math.max(0,r.length-i)}let n=t.split(`.`)[1];return n?n.length:0}function er(e,t){let n=10**t;return Math.round(e*n)/n}function tr(e){return typeof e==`function`}var nr={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(let e in nr)Object.freeze(nr[e]);var q=Object.freeze(nr),rr=Object.create(null);for(let e in q)Object.hasOwn(q,e)&&(rr[q[e]]=e);var J={to:{},get:{}};J.get=function(e){let t=e.slice(0,3).toLowerCase(),n,r;switch(t){case`hsl`:n=J.get.hsl(e),r=`hsl`;break;case`hwb`:n=J.get.hwb(e),r=`hwb`;break;default:n=J.get.rgb(e),r=`rgb`;break}return n?{model:r,value:n}:null},J.get.rgb=function(e){if(!e)return null;let t=/^#([a-f\d]{3,4})$/i,n=/^#([a-f\d]{6})([a-f\d]{2})?$/i,r=/^rgba?\(\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)\s*(?:[\s,|/]\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(%?)\s*)?\)$/i,i=/^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/i,a=/^(\w+)$/,o=[0,0,0,1],s,c,l;if(s=e.match(n)){for(l=s[2],s=s[1],c=0;c<3;c++){let e=c*2;o[c]=Number.parseInt(s.slice(e,e+2),16)}l&&(o[3]=Number.parseInt(l,16)/255)}else if(s=e.match(t)){for(s=s[1],l=s[3],c=0;c<3;c++)o[c]=Number.parseInt(s[c]+s[c],16);l&&(o[3]=Number.parseInt(l+l,16)/255)}else if(s=e.match(r)){for(c=0;c<3;c++)o[c]=Number.parseFloat(s[c+1]);s[4]&&(o[3]=s[5]?Number.parseFloat(s[4])*.01:Number.parseFloat(s[4]))}else if(s=e.match(i)){for(c=0;c<3;c++)o[c]=Math.round(Number.parseFloat(s[c+1])*2.55);s[4]&&(o[3]=s[5]?Number.parseFloat(s[4])*.01:Number.parseFloat(s[4]))}else if(s=e.toLowerCase().match(a))return s[1]===`transparent`?[0,0,0,0]:Object.hasOwn(q,s[1])?(o=q[s[1]].slice(),o[3]=1,o):null;else return null;for(c=0;c<3;c++)o[c]=ir(o[c],0,255);return o[3]=ir(o[3],0,1),o},J.get.hsl=function(e){if(!e)return null;let t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i);if(t){let e=Number.parseFloat(t[4]);return[(Number.parseFloat(t[1])%360+360)%360,ir(Number.parseFloat(t[2]),0,100),ir(Number.parseFloat(t[3]),0,100),ir(Number.isNaN(e)?1:e,0,1)]}return null},J.get.hwb=function(e){if(!e)return null;let t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*[\s,]\s*([+-]?[\d.]+)%\s*[\s,]\s*([+-]?[\d.]+)%\s*(?:[\s,]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i);if(t){let e=Number.parseFloat(t[4]);return[(Number.parseFloat(t[1])%360+360)%360,ir(Number.parseFloat(t[2]),0,100),ir(Number.parseFloat(t[3]),0,100),ir(Number.isNaN(e)?1:e,0,1)]}return null},J.to.hex=function(...e){return`#`+ar(e[0])+ar(e[1])+ar(e[2])+(e[3]<1?ar(Math.round(e[3]*255)):``)},J.to.rgb=function(...e){return e.length<4||e[3]===1?`rgb(`+Math.round(e[0])+`, `+Math.round(e[1])+`, `+Math.round(e[2])+`)`:`rgba(`+Math.round(e[0])+`, `+Math.round(e[1])+`, `+Math.round(e[2])+`, `+e[3]+`)`},J.to.rgb.percent=function(...e){let t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),r=Math.round(e[2]/255*100);return e.length<4||e[3]===1?`rgb(`+t+`%, `+n+`%, `+r+`%)`:`rgba(`+t+`%, `+n+`%, `+r+`%, `+e[3]+`)`},J.to.hsl=function(...e){return e.length<4||e[3]===1?`hsl(`+e[0]+`, `+e[1]+`%, `+e[2]+`%)`:`hsla(`+e[0]+`, `+e[1]+`%, `+e[2]+`%, `+e[3]+`)`},J.to.hwb=function(...e){let t=``;return e.length>=4&&e[3]!==1&&(t=`, `+e[3]),`hwb(`+e[0]+`, `+e[1]+`%, `+e[2]+`%`+t+`)`},J.to.keyword=function(...e){return rr[e.slice(0,3)]};function ir(e,t,n){return Math.min(Math.max(t,e),n)}function ar(e){let t=Math.round(e).toString(16).toUpperCase();return t.length<2?`0`+t:t}var or={};for(let e of Object.keys(q))or[q[e]]=e;var Y={rgb:{channels:3,labels:`rgb`},hsl:{channels:3,labels:`hsl`},hsv:{channels:3,labels:`hsv`},hwb:{channels:3,labels:`hwb`},cmyk:{channels:4,labels:`cmyk`},xyz:{channels:3,labels:`xyz`},lab:{channels:3,labels:`lab`},oklab:{channels:3,labels:[`okl`,`oka`,`okb`]},lch:{channels:3,labels:`lch`},oklch:{channels:3,labels:[`okl`,`okc`,`okh`]},hex:{channels:1,labels:[`hex`]},keyword:{channels:1,labels:[`keyword`]},ansi16:{channels:1,labels:[`ansi16`]},ansi256:{channels:1,labels:[`ansi256`]},hcg:{channels:3,labels:[`h`,`c`,`g`]},apple:{channels:3,labels:[`r16`,`g16`,`b16`]},gray:{channels:1,labels:[`gray`]}},sr=(6/29)**3;function cr(e){let t=e>.0031308?1.055*e**(1/2.4)-.055:e*12.92;return Math.min(Math.max(0,t),1)}function lr(e){return e>.04045?((e+.055)/1.055)**2.4:e/12.92}for(let e of Object.keys(Y)){if(!(`channels`in Y[e]))throw Error(`missing channels property: `+e);if(!(`labels`in Y[e]))throw Error(`missing channel labels property: `+e);if(Y[e].labels.length!==Y[e].channels)throw Error(`channel and label counts mismatch: `+e);let{channels:t,labels:n}=Y[e];delete Y[e].channels,delete Y[e].labels,Object.defineProperty(Y[e],"channels",{value:t}),Object.defineProperty(Y[e],"labels",{value:n})}Y.rgb.hsl=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=a-i,s,c;switch(a){case i:s=0;break;case t:s=(n-r)/o;break;case n:s=2+(r-t)/o;break;case r:s=4+(t-n)/o;break}s=Math.min(s*60,360),s<0&&(s+=360);let l=(i+a)/2;return c=a===i?0:l<=.5?o/(a+i):o/(2-a-i),[s,c*100,l*100]},Y.rgb.hsv=function(e){let t,n,r,i,a,o=e[0]/255,s=e[1]/255,c=e[2]/255,l=Math.max(o,s,c),u=l-Math.min(o,s,c),d=function(e){return(l-e)/6/u+1/2};if(u===0)i=0,a=0;else{switch(a=u/l,t=d(o),n=d(s),r=d(c),l){case o:i=r-n;break;case s:i=1/3+t-r;break;case c:i=2/3+n-t;break}i<0?i+=1:i>1&&--i}return[i*360,a*100,l*100]},Y.rgb.hwb=function(e){let t=e[0],n=e[1],r=e[2],i=Y.rgb.hsl(e)[0],a=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[i,a*100,r*100]},Y.rgb.oklab=function(e){let t=lr(e[0]/255),n=lr(e[1]/255),r=lr(e[2]/255),i=Math.cbrt(.4122214708*t+.5363325363*n+.0514459929*r),a=Math.cbrt(.2119034982*t+.6806995451*n+.1073969566*r),o=Math.cbrt(.0883024619*t+.2817188376*n+.6299787005*r),s=.2104542553*i+.793617785*a-.0040720468*o,c=1.9779984951*i-2.428592205*a+.4505937099*o,l=.0259040371*i+.7827717662*a-.808675766*o;return[s*100,c*100,l*100]},Y.rgb.cmyk=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(1-t,1-n,1-r),a=(1-t-i)/(1-i)||0,o=(1-n-i)/(1-i)||0,s=(1-r-i)/(1-i)||0;return[a*100,o*100,s*100,i*100]};function ur(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}Y.rgb.keyword=function(e){let t=or[e];if(t)return t;let n=1/0,r;for(let t of Object.keys(q)){let i=q[t],a=ur(e,i);a<n&&(n=a,r=t)}return r},Y.keyword.rgb=function(e){return[...q[e]]},Y.rgb.xyz=function(e){let t=lr(e[0]/255),n=lr(e[1]/255),r=lr(e[2]/255),i=t*.4124564+n*.3575761+r*.1804375,a=t*.2126729+n*.7151522+r*.072175,o=t*.0193339+n*.119192+r*.9503041;return[i*100,a*100,o*100]},Y.rgb.lab=function(e){let t=Y.rgb.xyz(e),n=t[0],r=t[1],i=t[2];return n/=95.047,r/=100,i/=108.883,n=n>sr?n**(1/3):7.787*n+16/116,r=r>sr?r**(1/3):7.787*r+16/116,i=i>sr?i**(1/3):7.787*i+16/116,[116*r-16,500*(n-r),200*(r-i)]},Y.hsl.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100,i,a;if(n===0)return a=r*255,[a,a,a];let o=r<.5?r*(1+n):r+n-r*n,s=2*r-o,c=[0,0,0];for(let e=0;e<3;e++)i=t+1/3*-(e-1),i<0&&i++,i>1&&i--,a=6*i<1?s+(o-s)*6*i:2*i<1?o:3*i<2?s+(o-s)*(2/3-i)*6:s,c[e]=a*255;return c},Y.hsl.hsv=function(e){let t=e[0],n=e[1]/100,r=e[2]/100,i=n,a=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,i*=a<=1?a:2-a;let o=(r+n)/2;return[t,(r===0?2*i/(a+i):2*n/(r+n))*100,o*100]},Y.hsv.rgb=function(e){let t=e[0]/60,n=e[1]/100,r=e[2]/100,i=Math.floor(t)%6,a=t-Math.floor(t),o=255*r*(1-n),s=255*r*(1-n*a),c=255*r*(1-n*(1-a));switch(r*=255,i){case 0:return[r,c,o];case 1:return[s,r,o];case 2:return[o,r,c];case 3:return[o,s,r];case 4:return[c,o,r];case 5:return[r,o,s]}},Y.hsv.hsl=function(e){let t=e[0],n=e[1]/100,r=e[2]/100,i=Math.max(r,.01),a,o;o=(2-n)*r;let s=(2-n)*i;return a=n*i,a/=s<=1?s:2-s,a||=0,o/=2,[t,a*100,o*100]},Y.hwb.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100,i=n+r,a;i>1&&(n/=i,r/=i);let o=Math.floor(6*t),s=1-r;a=6*t-o,o&1&&(a=1-a);let c=n+a*(s-n),l,u,d;switch(o){default:case 6:case 0:l=s,u=c,d=n;break;case 1:l=c,u=s,d=n;break;case 2:l=n,u=s,d=c;break;case 3:l=n,u=c,d=s;break;case 4:l=c,u=n,d=s;break;case 5:l=s,u=n,d=c;break}return[l*255,u*255,d*255]},Y.cmyk.rgb=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=e[3]/100,a=1-Math.min(1,t*(1-i)+i),o=1-Math.min(1,n*(1-i)+i),s=1-Math.min(1,r*(1-i)+i);return[a*255,o*255,s*255]},Y.xyz.rgb=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i,a,o;return i=t*3.2404542+n*-1.5371385+r*-.4985314,a=t*-.969266+n*1.8760108+r*.041556,o=t*.0556434+n*-.2040259+r*1.0572252,i=cr(i),a=cr(a),o=cr(o),[i*255,a*255,o*255]},Y.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];return t/=95.047,n/=100,r/=108.883,t=t>sr?t**(1/3):7.787*t+16/116,n=n>sr?n**(1/3):7.787*n+16/116,r=r>sr?r**(1/3):7.787*r+16/116,[116*n-16,500*(t-n),200*(n-r)]},Y.xyz.oklab=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=Math.cbrt(.8189330101*t+.3618667424*n-.1288597137*r),a=Math.cbrt(.0329845436*t+.9293118715*n+.0361456387*r),o=Math.cbrt(.0482003018*t+.2643662691*n+.633851707*r),s=.2104542553*i+.793617785*a-.0040720468*o,c=1.9779984951*i-2.428592205*a+.4505937099*o,l=.0259040371*i+.7827717662*a-.808675766*o;return[s*100,c*100,l*100]},Y.oklab.oklch=function(e){return Y.lab.lch(e)},Y.oklab.xyz=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=(.999999998*t+.396337792*n+.215803758*r)**3,a=(1.000000008*t-.105561342*n-.063854175*r)**3,o=(1.000000055*t-.089484182*n-1.291485538*r)**3,s=1.227013851*i-.55779998*a+.281256149*o,c=-.040580178*i+1.11225687*a-.071676679*o,l=-.076381285*i-.421481978*a+1.58616322*o;return[s*100,c*100,l*100]},Y.oklab.rgb=function(e){let t=e[0]/100,n=e[1]/100,r=e[2]/100,i=(t+.3963377774*n+.2158037573*r)**3,a=(t-.1055613458*n-.0638541728*r)**3,o=(t-.0894841775*n-1.291485548*r)**3,s=cr(4.0767416621*i-3.3077115913*a+.2309699292*o),c=cr(-1.2684380046*i+2.6097574011*a-.3413193965*o),l=cr(-.0041960863*i-.7034186147*a+1.707614701*o);return[s*255,c*255,l*255]},Y.oklch.oklab=function(e){return Y.lch.lab(e)},Y.lab.xyz=function(e){let t=e[0],n=e[1],r=e[2],i,a,o;a=(t+16)/116,i=n/500+a,o=a-r/200;let s=a**3,c=i**3,l=o**3;return a=s>sr?s:(a-16/116)/7.787,i=c>sr?c:(i-16/116)/7.787,o=l>sr?l:(o-16/116)/7.787,i*=95.047,a*=100,o*=108.883,[i,a,o]},Y.lab.lch=function(e){let t=e[0],n=e[1],r=e[2],i;return i=Math.atan2(r,n)*360/2/Math.PI,i<0&&(i+=360),[t,Math.sqrt(n*n+r*r),i]},Y.lch.lab=function(e){let t=e[0],n=e[1],r=e[2]/360*2*Math.PI;return[t,n*Math.cos(r),n*Math.sin(r)]},Y.rgb.ansi16=function(e,t=null){let[n,r,i]=e,a=t===null?Y.rgb.hsv(e)[2]:t;if(a=Math.round(a/50),a===0)return 30;let o=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return a===2&&(o+=60),o},Y.hsv.ansi16=function(e){return Y.rgb.ansi16(Y.hsv.rgb(e),e[2])},Y.rgb.ansi256=function(e){let t=e[0],n=e[1],r=e[2];return t>>4==n>>4&&n>>4==r>>4?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},Y.ansi16.rgb=function(e){e=e[0];let t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let n=(Math.trunc(e>50)+1)*.5;return[(t&1)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},Y.ansi256.rgb=function(e){if(e=e[0],e>=232){let t=(e-232)*10+8;return[t,t,t]}e-=16;let t;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},Y.rgb.hex=function(e){let t=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return`000000`.slice(t.length)+t},Y.hex.rgb=function(e){let t=e.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!t)return[0,0,0];let n=t[0];t[0].length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},Y.rgb.hcg=function(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.max(Math.max(t,n),r),a=Math.min(Math.min(t,n),r),o=i-a,s,c=o<1?a/(1-o):0;return s=o<=0?0:i===t?(n-r)/o%6:i===n?2+(r-t)/o:4+(t-n)/o,s/=6,s%=1,[s*360,o*100,c*100]},Y.hsl.hcg=function(e){let t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n),i=0;return r<1&&(i=(n-.5*r)/(1-r)),[e[0],r*100,i*100]},Y.hsv.hcg=function(e){let t=e[1]/100,n=e[2]/100,r=t*n,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],r*100,i*100]},Y.hcg.rgb=function(e){let t=e[0]/360,n=e[1]/100,r=e[2]/100;if(n===0)return[r*255,r*255,r*255];let i=[0,0,0],a=t%1*6,o=a%1,s=1-o,c=0;switch(Math.floor(a)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=s,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=s,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=s}return c=(1-n)*r,[(n*i[0]+c)*255,(n*i[1]+c)*255,(n*i[2]+c)*255]},Y.hcg.hsv=function(e){let t=e[1]/100,n=t+e[2]/100*(1-t),r=0;return n>0&&(r=t/n),[e[0],r*100,n*100]},Y.hcg.hsl=function(e){let t=e[1]/100,n=e[2]/100*(1-t)+.5*t,r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],r*100,n*100]},Y.hcg.hwb=function(e){let t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],(n-t)*100,(1-n)*100]},Y.hwb.hcg=function(e){let t=e[1]/100,n=1-e[2]/100,r=n-t,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],r*100,i*100]},Y.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},Y.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},Y.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},Y.gray.hsl=function(e){return[0,0,e[0]]},Y.gray.hsv=Y.gray.hsl,Y.gray.hwb=function(e){return[0,100,e[0]]},Y.gray.cmyk=function(e){return[0,0,0,e[0]]},Y.gray.lab=function(e){return[e[0],0,0]},Y.gray.hex=function(e){let t=Math.round(e[0]/100*255)&255,n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return`000000`.slice(n.length)+n},Y.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};function dr(){let e={},t=Object.keys(Y);for(let{length:n}=t,r=0;r<n;r++)e[t[r]]={distance:-1,parent:null};return e}function fr(e){let t=dr(),n=[e];for(t[e].distance=0;n.length>0;){let e=n.pop(),r=Object.keys(Y[e]);for(let{length:i}=r,a=0;a<i;a++){let i=r[a],o=t[i];o.distance===-1&&(o.distance=t[e].distance+1,o.parent=e,n.unshift(i))}}return t}function pr(e,t){return function(n){return t(e(n))}}function mr(e,t){let n=[t[e].parent,e],r=Y[t[e].parent][e],i=t[e].parent;for(;t[i].parent;)n.unshift(t[i].parent),r=pr(Y[t[i].parent][i],r),i=t[i].parent;return r.conversion=n,r}function hr(e){let t=fr(e),n={},r=Object.keys(t);for(let{length:e}=r,i=0;i<e;i++){let e=r[i];t[e].parent!==null&&(n[e]=mr(e,t))}return n}var X={},gr=Object.keys(Y);function _r(e){let t=function(...t){let n=t[0];return n==null?n:(n.length>1&&(t=n),e(t))};return`conversion`in e&&(t.conversion=e.conversion),t}function vr(e){let t=function(...t){let n=t[0];if(n==null)return n;n.length>1&&(t=n);let r=e(t);if(typeof r==`object`)for(let{length:e}=r,t=0;t<e;t++)r[t]=Math.round(r[t]);return r};return`conversion`in e&&(t.conversion=e.conversion),t}for(let e of gr){X[e]={},Object.defineProperty(X[e],"channels",{value:Y[e].channels}),Object.defineProperty(X[e],"labels",{value:Y[e].labels});let t=hr(e),n=Object.keys(t);for(let r of n){let n=t[r];X[e][r]=vr(n),X[e][r].raw=_r(n)}}var yr=[`keyword`,`gray`,`hex`],br={};for(let e of Object.keys(X))br[[...X[e].labels].sort().join(``)]=e;var xr={};function Z(e,t){if(!(this instanceof Z))return new Z(e,t);if(t&&t in yr&&(t=null),t&&!(t in X))throw Error(`Unknown model: `+t);let n,r;if(e==null)this.model=`rgb`,this.color=[0,0,0],this.valpha=1;else if(e instanceof Z)this.model=e.model,this.color=[...e.color],this.valpha=e.valpha;else if(typeof e==`string`){let t=J.get(e);if(t===null)throw Error(`Unable to parse color from string: `+e);this.model=t.model,r=X[this.model].channels,this.color=t.value.slice(0,r),this.valpha=typeof t.value[r]==`number`?t.value[r]:1}else if(e.length>0){this.model=t||`rgb`,r=X[this.model].channels;let n=Array.prototype.slice.call(e,0,r);this.color=Tr(n,r),this.valpha=typeof e[r]==`number`?e[r]:1}else if(typeof e==`number`)this.model=`rgb`,this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;let t=Object.keys(e);`alpha`in e&&(t.splice(t.indexOf(`alpha`),1),this.valpha=typeof e.alpha==`number`?e.alpha:0);let r=t.sort().join(``);if(!(r in br))throw Error(`Unable to parse color from object: `+JSON.stringify(e));this.model=br[r];let{labels:i}=X[this.model],a=[];for(n=0;n<i.length;n++)a.push(e[i[n]]);this.color=Tr(a)}if(xr[this.model])for(r=X[this.model].channels,n=0;n<r;n++){let e=xr[this.model][n];e&&(this.color[n]=e(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}Z.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(e){let t=this.model in J.to?this:this.rgb();t=t.round(typeof e==`number`?e:1);let n=t.valpha===1?t.color:[...t.color,this.valpha];return J.to[t.model](...n)},percentString(e){let t=this.rgb().round(typeof e==`number`?e:1),n=t.valpha===1?t.color:[...t.color,this.valpha];return J.to.rgb.percent(...n)},array(){return this.valpha===1?[...this.color]:[...this.color,this.valpha]},object(){let e={},{channels:t}=X[this.model],{labels:n}=X[this.model];for(let r=0;r<t;r++)e[n[r]]=this.color[r];return this.valpha!==1&&(e.alpha=this.valpha),e},unitArray(){let e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,this.valpha!==1&&e.push(this.valpha),e},unitObject(){let e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,this.valpha!==1&&(e.alpha=this.valpha),e},round(e){return e=Math.max(e||0,0),new Z([...this.color.map(Cr(e)),this.valpha],this.model)},alpha(e){return e===void 0?this.valpha:new Z([...this.color,Math.max(0,Math.min(1,e))],this.model)},red:Q(`rgb`,0,$(255)),green:Q(`rgb`,1,$(255)),blue:Q(`rgb`,2,$(255)),hue:Q([`hsl`,`hsv`,`hsl`,`hwb`,`hcg`],0,e=>(e%360+360)%360),saturationl:Q(`hsl`,1,$(100)),lightness:Q(`hsl`,2,$(100)),saturationv:Q(`hsv`,1,$(100)),value:Q(`hsv`,2,$(100)),chroma:Q(`hcg`,1,$(100)),gray:Q(`hcg`,2,$(100)),white:Q(`hwb`,1,$(100)),wblack:Q(`hwb`,2,$(100)),cyan:Q(`cmyk`,0,$(100)),magenta:Q(`cmyk`,1,$(100)),yellow:Q(`cmyk`,2,$(100)),black:Q(`cmyk`,3,$(100)),x:Q(`xyz`,0,$(95.047)),y:Q(`xyz`,1,$(100)),z:Q(`xyz`,2,$(108.833)),l:Q(`lab`,0,$(100)),a:Q(`lab`,1),b:Q(`lab`,2),keyword(e){return e===void 0?X[this.model].keyword(this.color):new Z(e)},hex(e){return e===void 0?J.to.hex(...this.rgb().round().color):new Z(e)},hexa(e){if(e!==void 0)return new Z(e);let t=this.rgb().round().color,n=Math.round(this.valpha*255).toString(16).toUpperCase();return n.length===1&&(n=`0`+n),J.to.hex(...t)+n},rgbNumber(){let e=this.rgb().color;return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255},luminosity(){let e=this.rgb().color,t=[];for(let[n,r]of e.entries()){let e=r/255;t[n]=e<=.04045?e/12.92:((e+.055)/1.055)**2.4}return .2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(e){let t=this.luminosity(),n=e.luminosity();return t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)},level(e){let t=this.contrast(e);return t>=7?`AAA`:t>=4.5?`AA`:``},isDark(){let e=this.rgb().color;return(e[0]*2126+e[1]*7152+e[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){let e=this.rgb();for(let t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten(e){let t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken(e){let t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate(e){let t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate(e){let t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten(e){let t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken(e){let t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale(){let e=this.rgb().color,t=e[0]*.3+e[1]*.59+e[2]*.11;return Z.rgb(t,t,t)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){let t=this.hsl(),n=t.color[0];return n=(n+e)%360,n=n<0?360+n:n,t.color[0]=n,t},mix(e,t){if(!e||!e.rgb)throw Error(`Argument to "mix" was not a Color instance, but rather an instance of `+typeof e);let n=e.rgb(),r=this.rgb(),i=t===void 0?.5:t,a=2*i-1,o=n.alpha()-r.alpha(),s=((a*o===-1?a:(a+o)/(1+a*o))+1)/2,c=1-s;return Z.rgb(s*n.red()+c*r.red(),s*n.green()+c*r.green(),s*n.blue()+c*r.blue(),n.alpha()*i+r.alpha()*(1-i))}};for(let e of Object.keys(X)){if(yr.includes(e))continue;let{channels:t}=X[e];Z.prototype[e]=function(...t){return this.model===e?new Z(this):t.length>0?new Z(t,e):new Z([...wr(X[this.model][e].raw(this.color)),this.valpha],e)},Z[e]=function(...n){let r=n[0];return typeof r==`number`&&(r=Tr(n,t)),new Z(r,e)}}function Sr(e,t){return Number(e.toFixed(t))}function Cr(e){return function(t){return Sr(t,e)}}function Q(e,t,n){e=Array.isArray(e)?e:[e];for(let r of e)(xr[r]||=[])[t]=n;return e=e[0],function(r){let i;return r===void 0?(i=this[e]().color[t],n&&(i=n(i)),i):(n&&(r=n(r)),i=this[e](),i.color[t]=r,i)}}function $(e){return function(t){return Math.max(0,Math.min(e,t))}}function wr(e){return Array.isArray(e)?e:[e]}function Tr(e,t){for(let n=0;n<t;n++)typeof e[n]!=`number`&&(e[n]=0);return e}var Er=e=>{try{return Z(e.trim())}catch{return null}},Dr=(0,W.createContext)(void 0),Or=()=>{let e=(0,W.useContext)(Dr);if(!e)throw Error(`useColorPicker must be used within a ColorPickerProvider`);return e},kr=({value:e,defaultValue:t=`#000000`,onChange:n,className:r,...i})=>{let a=Z(e),o=Z(t),[s,c]=(0,W.useState)(a.hue()||o.hue()||0),[l,u]=(0,W.useState)(a.saturationl()||o.saturationl()||100),[d,f]=(0,W.useState)(a.lightness()||o.lightness()||50),[p,m]=(0,W.useState)(a.alpha()*100||o.alpha()*100),[h,g]=(0,W.useState)(`hex`);(0,W.useEffect)(()=>{if(e){let t=Z(e),[n,r,i]=t.hsl().array();c(n),u(r),f(i),m(t.alpha()*100)}},[e]),(0,W.useEffect)(()=>{if(n){let e=Z.hsl(s,l,d).alpha(p/100).rgb().array();n([e[0],e[1],e[2],p/100])}},[s,l,d,p,n]);let _=(0,W.useCallback)(e=>{let[t,n,r]=e.hsl().array();c(Number.isFinite(t)?t:0),u(Number.isFinite(n)?n:0),f(Number.isFinite(r)?r:0),m(e.alpha()*100)},[]),v=(0,W.useMemo)(()=>({hue:s,saturation:l,lightness:d,alpha:p,mode:h,setHue:c,setSaturation:u,setLightness:f,setAlpha:m,setMode:g,setColor:_}),[s,l,d,p,h,_]);return(0,G.jsx)(Dr.Provider,{value:v,children:(0,G.jsx)(`div`,{className:I(`flex size-full flex-col gap-4`,r),...i})})},Ar=(0,W.memo)(({className:e,...t})=>{let n=(0,W.useRef)(null),[r,i]=(0,W.useState)(!1),[a,o]=(0,W.useState)(0),[s,c]=(0,W.useState)(0),{hue:l,setSaturation:u,setLightness:d}=Or(),f=(0,W.useMemo)(()=>`linear-gradient(0deg, rgba(0,0,0,1), rgba(0,0,0,0)),
3
3
  linear-gradient(90deg, rgba(255,255,255,1), rgba(255,255,255,0)),
4
- hsl(${l}, 100%, 50%)`,[l]),p=(0,W.useEffectEvent)(e=>{if(!n.current)return;let t=n.current.getBoundingClientRect(),r=Math.max(0,Math.min(1,(e.clientX-t.left)/t.width)),i=Math.max(0,Math.min(1,(e.clientY-t.top)/t.height));o(r),c(i),u(r*100),d((r<.01?100:50+50*(1-r))*(1-i))});return(0,W.useEffect)(()=>{if(!r)return;let e=e=>p(e),t=()=>i(!1);return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,t),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,t)}},[r]),(0,G.jsx)(`div`,{className:I(`relative size-full cursor-crosshair rounded`,e),onPointerDown:e=>{e.preventDefault(),i(!0),p(e.nativeEvent)},ref:n,style:{background:f},...t,children:(0,G.jsx)(`div`,{className:`pointer-events-none absolute size-4 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white`,style:{left:`${a*100}%`,top:`${s*100}%`,boxShadow:`0 0 0 1px rgba(0,0,0,0.5)`}})})});Ar.displayName=`ColorPickerSelection`;var jr=({className:e,...t})=>{let{hue:n,setHue:r}=Or();return(0,G.jsxs)(Tn,{className:I(`relative flex h-4 w-full touch-none`,e),max:360,onValueChange:([e])=>r(e),step:1,value:[n],...t,children:[(0,G.jsx)(Mn,{className:`relative my-0.5 h-3 w-full grow rounded-full bg-[linear-gradient(90deg,#FF0000,#FFFF00,#00FF00,#00FFFF,#0000FF,#FF00FF,#FF0000)]`,children:(0,G.jsx)(Pn,{className:`absolute h-full`})}),(0,G.jsx)(Hn,{className:`border-primary/50 bg-background focus-visible:ring-ring block size-4 rounded-full border shadow-sm transition-colors focus-visible:ring-1 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50`})]})},Mr=({className:e,...t})=>{let{alpha:n,setAlpha:r}=Or();return(0,G.jsxs)(Tn,{className:I(`relative flex h-4 w-full touch-none`,e),max:100,onValueChange:([e])=>r(e),step:1,value:[n],...t,children:[(0,G.jsxs)(Mn,{className:`relative my-0.5 h-3 w-full grow rounded-full`,style:{background:`url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==") left center`},children:[(0,G.jsx)(`div`,{className:`absolute inset-0 rounded-full bg-linear-to-r from-transparent to-black/50`}),(0,G.jsx)(Pn,{className:`absolute h-full rounded-full bg-transparent`})]}),(0,G.jsx)(Hn,{className:`border-primary/50 bg-background focus-visible:ring-ring block size-4 rounded-full border shadow-sm transition-colors focus-visible:ring-1 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50`})]})},Nr=({className:e,...t})=>{let{setHue:n,setSaturation:r,setLightness:i,setAlpha:a}=Or();return(0,G.jsx)(R,{className:I(`shrink-0 text-muted-foreground`,e),onClick:async()=>{try{let[e,t,o]=Z((await new EyeDropper().open()).sRGBHex).hsl().array();n(e),r(t),i(o),a(100)}catch{}},size:`icon`,type:`button`,variant:`outline`,...t,children:(0,G.jsx)(k,{size:16})})},Pr=[`hex`,`rgb`,`css`,`hsl`],Fr=({className:e,...t})=>{let{mode:n,setMode:r}=Or();return(0,G.jsxs)(Tt,{onValueChange:r,value:n,children:[(0,G.jsx)(bt,{className:I(`h-8 w-20 shrink-0 text-xs`,e),...t,children:(0,G.jsx)(ht,{placeholder:`Mode`})}),(0,G.jsx)(rt,{children:Pr.map(e=>(0,G.jsx)(B,{className:`text-xs`,value:e,children:e.toUpperCase()},e))})]})},Ir=({value:e,onCommit:t,className:n,...r})=>{let[i,a]=(0,W.useState)(e),[o,s]=(0,W.useState)(!1);return(0,W.useEffect)(()=>{o||a(e)},[e,o]),(0,G.jsx)(V,{...r,value:i,className:n,onChange:e=>{let n=e.target.value;a(n),t(n)},onFocus:e=>{s(!0),e.target.select()},onBlur:()=>{s(!1),a(e)},onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()}})},Lr=({alpha:e,onAlpha:t,className:n})=>(0,G.jsxs)(`div`,{className:`relative`,children:[(0,G.jsx)(Ir,{type:`text`,value:String(Math.round(e)),onCommit:e=>{let n=Number(e);Number.isFinite(n)&&t(Math.max(0,Math.min(100,n)))},className:I(`h-8 w-13 rounded-l-none bg-secondary px-2 text-xs shadow-none`,n)}),(0,G.jsx)(`span`,{className:`text-muted-foreground pointer-events-none absolute top-1/2 right-2 -translate-y-1/2 text-xs`,children:`%`})]}),Rr=({className:e,...t})=>{let{hue:n,saturation:r,lightness:i,alpha:a,mode:o,setColor:s,setAlpha:c}=Or(),l=Z.hsl(n,r,i,a/100);if(o===`hex`){let n=l.hex();return(0,G.jsxs)(`div`,{className:I(`relative flex w-full items-center -space-x-px rounded-md shadow-xs`,e),...t,children:[(0,G.jsx)(Ir,{className:`bg-secondary h-8 rounded-r-none px-2 text-xs shadow-none`,type:`text`,value:n,onCommit:e=>{let t=Er(e);t&&s(t.alpha(a/100))}}),(0,G.jsx)(Lr,{alpha:a,onAlpha:c})]})}if(o===`rgb`){let n=l.rgb().array().map(e=>Math.round(e)),r=(e,t)=>{let r=Number(t);if(!Number.isFinite(r))return;let i=[...n];i[e]=Math.max(0,Math.min(255,r)),s(Z.rgb(i[0],i[1],i[2]).alpha(a/100))};return(0,G.jsxs)(`div`,{className:I(`flex items-center -space-x-px rounded-md shadow-xs`,e),...t,children:[n.map((e,t)=>(0,G.jsx)(Ir,{className:I(`h-8 rounded-r-none bg-secondary px-2 text-xs shadow-none`,t&&`rounded-l-none`),type:`text`,value:String(e),onCommit:e=>r(t,e)},t)),(0,G.jsx)(Lr,{alpha:a,onAlpha:c})]})}if(o===`css`){let n=`rgba(${l.rgb().array().map(e=>Math.round(e)).join(`, `)}, ${Math.round(a)}%)`;return(0,G.jsx)(`div`,{className:I(`w-full rounded-md shadow-xs`,e),...t,children:(0,G.jsx)(Ir,{className:`bg-secondary h-8 w-full px-2 text-xs shadow-none`,type:`text`,value:n,onCommit:e=>{let t=Er(e);t&&s(t)}})})}if(o===`hsl`){let n=l.hsl().array().map(e=>Math.round(e)),r=(e,t)=>{let r=Number(t);if(!Number.isFinite(r))return;let i=[...n];i[e]=Math.max(0,Math.min(e===0?360:100,r)),s(Z.hsl(i[0],i[1],i[2]).alpha(a/100))};return(0,G.jsxs)(`div`,{className:I(`flex items-center -space-x-px rounded-md shadow-xs`,e),...t,children:[n.map((e,t)=>(0,G.jsx)(Ir,{className:I(`h-8 rounded-r-none bg-secondary px-2 text-xs shadow-none`,t&&`rounded-l-none`),type:`text`,value:String(e),onCommit:e=>r(t,e)},t)),(0,G.jsx)(Lr,{alpha:a,onAlpha:c})]})}return null},zr=[`#7CB9E8`,`#F4A4A4`,`#A8D5A2`,`#F9D98C`,`#C3A6E0`,`#F2A6C8`,`#89D4CF`,`#F9B97C`];function Br({projectId:e,currentColor:t,onSave:n}){return(0,G.jsxs)(`div`,{className:`border-border/50 flex flex-col gap-3 border-b px-4 py-3.5 last:border-b-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:`Project Color`}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:`Pick any color for this project`})]}),(0,G.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,G.jsx)(`button`,{onClick:()=>n(e,{color:null}),className:I(`size-7 rounded-md border-2 transition-all flex items-center justify-center`,t?`border-border hover:border-muted-foreground`:`border-primary shadow-xs`),"aria-label":`No color`,"aria-pressed":!t,"data-testid":`project-color-none`,children:(0,G.jsx)(`div`,{className:`from-muted-foreground/20 to-muted-foreground/40 size-4 rounded-sm bg-linear-to-br`})}),zr.map(r=>(0,G.jsx)(`button`,{onClick:()=>n(e,{color:r}),className:I(`size-7 rounded-md border-2 transition-all`,t===r?`border-primary shadow-xs scale-110`:`border-transparent hover:border-muted-foreground`),style:{backgroundColor:r},"aria-label":`Color ${r}`,"aria-pressed":t===r},r))]}),(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsxs)(Ae,{children:[(0,G.jsx)(ze,{asChild:!0,children:(0,G.jsx)(`button`,{type:`button`,"aria-label":`Open custom color picker`,"data-testid":`project-color-custom-trigger`,className:I(`size-8 rounded-lg border-2 shadow-xs cursor-pointer transition-all hover:scale-105`,t?`border-primary/50`:`border-border`),style:{backgroundColor:t||`transparent`},children:!t&&(0,G.jsx)(`div`,{className:`from-muted-foreground/10 to-muted-foreground/30 flex size-full items-center justify-center rounded-md bg-linear-to-br`,children:(0,G.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`-`})})})}),(0,G.jsx)(ut,{className:`w-72 p-3`,align:`start`,children:(0,G.jsxs)(kr,{value:t||`#7CB9E8`,onChange:([t,r,i])=>{n(e,{color:`#`+[t,r,i].map(e=>Math.round(e).toString(16).padStart(2,`0`)).join(``)})},children:[(0,G.jsx)(Ar,{className:`h-40 rounded-lg`}),(0,G.jsx)(jr,{}),(0,G.jsx)(Mr,{}),(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(Nr,{}),(0,G.jsx)(Fr,{}),(0,G.jsx)(Rr,{})]})]})})]}),(0,G.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`Custom color`}),t&&(0,G.jsx)(`span`,{className:`text-muted-foreground font-mono text-xs`,children:t})]})]})}var Vr=[`Not a git repository`,`nested inside another git repository`];function Hr({projectId:e,currentPath:t}){let{t:n}=M(),r=Ne(e=>e.updateProject),[i,a]=(0,W.useState)(t),[o,s]=(0,W.useState)(t),[c,l]=(0,W.useState)(!1),[u,d]=(0,W.useState)(!1),[f,p]=(0,W.useState)(!1);t!==o&&(s(t),a(t));let m=i.trim()!==t&&i.trim().length>0,h=async t=>{let i=await r(e,{path:t});return i.isOk()?(z.success(n(`settings.projectSaved`),{id:`project-settings-saved`}),{ok:!0}):{ok:!1,message:i.error.message}};return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`div`,{className:`border-border/50 flex flex-col gap-2 border-b px-4 py-3.5 last:border-b-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:n(`settings.projectPath`,`Project Path`)}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:n(`settings.projectPathDesc`,`Absolute path to the git repository. Existing threads keep their original worktrees; new threads will use the updated path.`)})]}),(0,G.jsxs)(`div`,{className:`flex gap-2`,children:[(0,G.jsx)(V,{"data-testid":`settings-project-path`,className:`flex-1`,value:i,onChange:e=>a(e.target.value),placeholder:`/absolute/path/to/repo`}),(0,G.jsx)(Mt,{"data-testid":`settings-project-path-browse`,variant:`outline`,size:`icon`,onClick:()=>l(!0),tooltip:n(`sidebar.browseFolder`,`Browse folder`),"aria-label":n(`sidebar.browseFolder`,`Browse folder`),children:(0,G.jsx)(oe,{className:`icon-base`})}),(0,G.jsx)(R,{"data-testid":`settings-project-path-save`,size:`sm`,disabled:!m||u,onClick:async()=>{d(!0);try{let e=await h(i.trim());e.ok||(Vr.some(t=>e.message.includes(t))?p(!0):z.error(e.message,{id:`project-settings-saved`}))}finally{d(!1)}},children:u?n(`common.loading`,`Saving…`):n(`common.save`,`Save`)})]})]}),c&&(0,G.jsx)(Nt,{onSelect:e=>{a(e),l(!1)},onClose:()=>l(!1)}),(0,G.jsx)(Fe,{open:f,onOpenChange:p,children:(0,G.jsxs)(xt,{children:[(0,G.jsxs)(Je,{children:[(0,G.jsx)(ke,{children:n(`confirm.gitInitTitle`,{defaultValue:`Initialize Git Repository`})}),(0,G.jsx)(Le,{children:n(`confirm.notGitRepo`,{path:i.trim()})})]}),(0,G.jsxs)(Xe,{children:[(0,G.jsx)(R,{"data-testid":`settings-git-init-cancel`,variant:`outline`,onClick:()=>p(!1),children:n(`common.cancel`,{defaultValue:`Cancel`})}),(0,G.jsx)(R,{"data-testid":`settings-git-init-confirm`,onClick:async()=>{p(!1),d(!0);try{let e=i.trim(),t=await P.gitInit(e);if(t.isErr()){z.error(t.error.message,{id:`project-settings-saved`});return}let n=await h(e);n.ok||z.error(n.message,{id:`project-settings-saved`})}finally{d(!1)}},children:n(`confirm.gitInitAction`,{defaultValue:`Initialize`})})]})]})})]})}function Ur(){let{toolPermissions:e,setToolPermission:t,resetToolPermissions:n}=xe(Ye(e=>({toolPermissions:e.toolPermissions,setToolPermission:e.setToolPermission,resetToolPermissions:e.resetToolPermissions}))),r=Ne(e=>e.selectedProjectId),i=Ne(e=>e.projects).find(e=>e.id===r),a=Ne(e=>e.updateProject),{t:o}=M(),s=(0,W.useCallback)(async(e,t)=>{let n=await a(e,t);if(n.isErr()){z.error(n.error.message,{id:`project-settings-saved`});return}z.success(o(`settings.projectSaved`),{id:`project-settings-saved`})},[a,o]),c=(0,W.useCallback)((e,n)=>{t(e,n),z.success(o(`settings.saved`),{id:`settings-saved`})},[t,o]),l=(0,W.useCallback)(()=>{n(),z.success(o(`settings.saved`),{id:`settings-saved`})},[n,o]),[u,d]=(0,W.useState)([]);(0,W.useEffect)(()=>{i&&he.listBranches(i.id).then(e=>{e.isOk()&&d(e.value.branches)})},[i?.id]);let f=zt(e=>e.byProvider),p=zt(e=>e.fetch);(0,W.useEffect)(()=>{for(let e of _e)p(e)},[p]);let g=i?.defaultProvider||`claude`,_=(()=>{let e=Lt(g,o),t=f[g];if(t?.status===`ready`){let n=new Set(e.map(e=>e.value));for(let r of t.models)n.has(r.modelId)||(e.push({value:r.modelId,label:r.name||r.modelId}),n.add(r.modelId))}return e})();return(0,G.jsxs)(G.Fragment,{children:[i&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground px-1 pb-2 text-xs font-semibold tracking-wider uppercase`,children:`Project`}),(0,G.jsxs)(`div`,{className:`border-border/50 mb-6 overflow-hidden rounded-lg border`,children:[(0,G.jsx)(Hr,{projectId:i.id,currentPath:i.path}),(0,G.jsx)(Br,{projectId:i.id,currentColor:i.color,onSave:s}),(0,G.jsx)(K,{title:o(`settings.followUpMode`),description:o(`settings.followUpModeDesc`),children:(0,G.jsx)(cn,{value:i.followUpMode||`queue`,onChange:e=>s(i.id,{followUpMode:e}),options:[{value:`interrupt`,label:o(`settings.followUpInterrupt`),testId:`settings-followup-interrupt`},{value:`queue`,label:o(`settings.followUpQueue`),testId:`settings-followup-queue`},{value:`steer`,label:o(`settings.followUpSteer`),testId:`settings-followup-steer`}]})}),(0,G.jsx)(K,{title:o(`settings.fastMode`),description:o(`settings.fastModeDesc`),children:(0,G.jsx)(cn,{value:i.fastMode?`on`:`off`,onChange:e=>s(i.id,{fastMode:e===`on`}),options:[{value:`off`,label:o(`settings.fastModeOff`),testId:`settings-fastmode-off`},{value:`on`,label:o(`settings.fastModeOn`),testId:`settings-fastmode-on`}]})}),(0,G.jsx)(K,{title:o(`settings.projectDefaultModel`,`Default Model`),description:o(`settings.projectDefaultModelDesc`,`Provider and model for new threads in this project`),children:(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(sn,{value:i.defaultProvider||`claude`,onChange:e=>{let t=e;s(i.id,{defaultProvider:t,defaultModel:ge(t)})},options:It.map(e=>({value:e.value,label:e.label})),placeholder:o(`settings.selectProvider`),searchPlaceholder:o(`settings.searchProvider`)}),(0,G.jsx)(sn,{value:i.defaultModel||ge(i.defaultProvider||`claude`),onChange:e=>s(i.id,{defaultModel:e}),options:_,placeholder:o(`settings.selectModel`),searchPlaceholder:o(`settings.searchModel`)})]})}),(0,G.jsx)(K,{title:o(`settings.projectDefaultMode`,`Default Thread Mode`),description:o(`settings.projectDefaultModeDesc`,`Local or worktree for new threads`),children:(0,G.jsx)(cn,{value:i.defaultMode||`local`,onChange:e=>s(i.id,{defaultMode:e}),options:[{value:`local`,label:o(`thread.mode.local`),icon:(0,G.jsx)(m,{className:`icon-xs`}),testId:`settings-thread-mode-local`},{value:`worktree`,label:o(`thread.mode.worktree`),icon:(0,G.jsx)(ne,{className:`icon-xs`}),testId:`settings-thread-mode-worktree`}]})}),(0,G.jsx)(K,{title:o(`settings.projectDefaultPermission`,`Default Permission Mode`),description:o(`settings.projectDefaultPermissionDesc`,`Permission mode for new threads`),children:(0,G.jsx)(cn,{value:i.defaultPermissionMode||`autoEdit`,onChange:e=>s(i.id,{defaultPermissionMode:e}),options:[{value:`ask`,label:o(`prompt.ask`)},{value:`plan`,label:o(`prompt.plan`)},{value:`auto`,label:o(`prompt.auto`)},{value:`autoEdit`,label:o(`prompt.autoEdit`)},{value:`confirmEdit`,label:o(`prompt.askBeforeEdits`)}]})}),(0,G.jsx)(K,{title:o(`settings.projectDefaultBranch`,`Default Branch`),description:o(`settings.projectDefaultBranchDesc`,`Branch pre-selected when creating new threads`),children:(0,G.jsx)(Bt,{branches:u,selected:i.defaultBranch||``,onChange:e=>{let t=e===`__git_default__`?null:e;s(i.id,{defaultBranch:t})},extraItems:[{key:`__git_default__`,label:o(`settings.gitDefault`,`Git default`),isSelected:!i.defaultBranch}],placeholder:o(`settings.gitDefault`,`Git default`),triggerClassName:`flex h-9 items-center justify-between gap-2 rounded-md border border-input bg-background px-3 text-xs hover:bg-accent/50`,side:`bottom`,align:`end`,showCopy:!1,testId:`settings-default-branch-trigger`})}),(0,G.jsx)(ln,{projectId:i.id,currentUrls:i.urls||[],onSave:s}),(0,G.jsx)(un,{projectId:i.id,currentPrompt:i.systemPrompt,onSave:s}),(0,G.jsx)(dn,{projectId:i.id,currentUrl:i.launcherUrl,onSave:s}),(0,G.jsx)(pn,{projectId:i.id}),(0,G.jsx)(fn,{projectId:i.id,currentTemplateId:i.defaultAgentTemplateId,onSave:s})]})]}),(0,G.jsx)(`h3`,{className:`text-muted-foreground mt-6 px-1 pb-2 text-xs font-semibold tracking-wider uppercase`,children:o(`settings.permissions`)}),(0,G.jsx)(`div`,{className:`border-border/50 overflow-hidden rounded-lg border`,children:(0,G.jsxs)(`div`,{className:`px-4 py-3.5`,children:[(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:o(`settings.toolPermissions`)}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 mb-3 text-xs`,children:o(`settings.toolPermissionsDesc`)}),(0,G.jsx)(`div`,{className:`space-y-1`,children:De.map(t=>(0,G.jsxs)(`div`,{className:`hover:bg-muted/50 flex items-center justify-between gap-3 rounded-md px-2 py-1.5 transition-colors`,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,G.jsx)(`span`,{className:`text-foreground font-mono text-sm`,children:t}),(0,G.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:o(Te[t]??t)})]}),(0,G.jsx)(cn,{value:e[t]??`allow`,onChange:e=>c(t,e),options:[{value:`allow`,label:o(`settings.allow`)},{value:`ask`,label:o(`settings.ask`)},{value:`deny`,label:o(`settings.deny`)}]})]},t))}),(0,G.jsx)(`div`,{className:`mt-3 flex justify-end`,children:(0,G.jsxs)(`button`,{onClick:()=>l(),"data-testid":`settings-reset-defaults`,className:`text-muted-foreground hover:bg-muted hover:text-foreground flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs transition-colors`,children:[(0,G.jsx)(h,{className:`icon-xs`}),o(`settings.resetDefaults`)]})})]})})]})}var Wr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`rounded-lg border bg-card text-card-foreground shadow-xs`,e),...t}));Wr.displayName=`Card`;var Gr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`flex flex-col space-y-1.5 p-6`,e),...t}));Gr.displayName=`CardHeader`;var Kr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`text-2xl font-semibold leading-none tracking-tight`,e),...t}));Kr.displayName=`CardTitle`;var qr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`text-sm text-muted-foreground`,e),...t}));qr.displayName=`CardDescription`;var Jr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`p-6 pt-0`,e),...t}));Jr.displayName=`CardContent`;var Yr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`flex items-center p-6 pt-0`,e),...t}));Yr.displayName=`CardFooter`;var Xr=`${JSON.stringify({env:{ENABLE_CLAUDEAI_MCP_SERVERS:`false`}},null,2)}\n`;function Zr(e){let t=e.replace(/[/\\]+$/,``),n=t.includes(`\\`)?`\\`:`/`;return`${t}${n}.claude${n}settings.json`}function Qr(e){let t=e.toLowerCase();return t.includes(`not found`)||t.includes(`enoent`)}async function $r(){let e=await P.browseRoots();if(e.isErr()){z.error(`Failed to open Claude settings`,{description:e.error.message});return}let t=Zr(e.value.home);await At.getState().openFile(t,{defaultContent:Xr,ifNotFound:Qr})}var ei=[{value:`claude`,label:`Claude Code`},{value:`codex`,label:`Codex`}];function ti(e){return e.startsWith(`claude.ai`)||e.startsWith(`claude_ai_`)}function ni({className:e}){let{t}=M();return(0,G.jsxs)(R,{type:`button`,variant:`outline`,size:`sm`,className:I(`h-6 px-2 text-xs`,e),"data-testid":`mcp-edit-claude-settings`,onClick:()=>void $r(),children:[(0,G.jsx)(a,{className:`icon-xs mr-1`}),t(`mcp.editClaudeSettings`)]})}function ri({server:e,toggling:t,isDisabled:n,onToggle:r}){let{t:i}=M(),a=e.toggleable===!1,o=ti(e.name),s=e.provider===`codex`?`mcp.externalToggleTooltipCodex`:o?`mcp.externalToggleTooltipClaudeAi`:`mcp.externalToggleTooltipPlugin`,c=(0,G.jsx)(vt,{"data-testid":`mcp-toggle-${e.name}`,checked:!n,onCheckedChange:e=>r(!e),disabled:t||a});return a?(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(`span`,{className:`inline-flex cursor-not-allowed`,"data-testid":`mcp-toggle-disabled-wrap-${e.name}`,children:c})}),(0,G.jsx)(N,{side:`left`,className:`max-w-xs p-3 text-left`,children:(0,G.jsx)(`p`,{className:`leading-snug`,children:i(s)})})]}):c}function ii({type:e}){return(0,G.jsxs)(tt,{variant:`outline`,size:`xs`,"data-testid":`mcp-protocol-badge-${e}`,className:I(`rounded-md border-transparent uppercase tracking-wider`,e===`http`?`bg-status-info/10 text-status-info/80`:e===`sse`?`bg-status-warning/10 text-status-warning/80`:`bg-status-success/10 text-status-success/80`),children:[e===`stdio`?(0,G.jsx)(ae,{className:`icon-2xs`}):(0,G.jsx)(O,{className:`icon-2xs`}),e]})}function ai({children:e,className:t,testId:n}){return(0,G.jsx)(tt,{variant:`outline`,size:`xs`,"data-testid":n,className:I(`rounded-md border-transparent font-medium`,t),children:e})}function oi({server:e,onRemove:t,removing:n,onToggle:r,toggling:a,onAuthenticate:o,authenticating:s,onSetToken:u,settingToken:d}){let{t:f}=M(),[p,m]=(0,W.useState)(!1),[h,g]=(0,W.useState)(``),_=e.disabled===!0,b=e.toggleable===!1&&ti(e.name),x=!_&&e.status===`needs_auth`;return(0,G.jsxs)(Wr,{"data-testid":`mcp-installed-card-${e.name}`,className:I(`flex flex-col shadow-none`,_?`border-border/30 opacity-60`:e.status===`needs_auth`?`border-amber-500/50`:e.status===`error`?`border-red-500/50`:void 0),children:[(0,G.jsxs)(Gr,{className:`flex flex-row items-start gap-3 space-y-0 p-4 pb-2`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,G.jsx)(Kr,{className:I(`truncate text-sm font-medium leading-snug`,_&&`text-muted-foreground`),children:e.name}),(0,G.jsx)(ii,{type:e.type}),!_&&e.status===`error`&&(0,G.jsxs)(ai,{testId:`mcp-status-error-${e.name}`,className:`bg-red-500/15 text-red-400`,children:[(0,G.jsx)(v,{className:`icon-2xs`}),f(`mcp.failed`)]}),_&&(0,G.jsx)(ai,{testId:`mcp-status-disabled-${e.name}`,className:`bg-muted text-muted-foreground`,children:f(`mcp.disabled`)}),e.toggleable===!1&&(0,G.jsx)(ai,{testId:`mcp-status-managed-${e.name}`,className:`bg-muted text-muted-foreground`,children:f(`mcp.managedExternally`)})]}),(0,G.jsx)(qr,{className:`mt-1 truncate text-xs`,children:e.url||[e.command,...e.args||[]].join(` `)})]}),(0,G.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[b&&!x&&(0,G.jsx)(ni,{}),(0,G.jsx)(ri,{server:e,toggling:a,isDisabled:_,onToggle:r}),(0,G.jsx)(Mt,{onClick:t,disabled:n,className:`text-muted-foreground hover:text-destructive`,tooltip:f(`common.delete`),children:n?(0,G.jsx)(l,{className:`icon-sm animate-spin`}):(0,G.jsx)(y,{className:`icon-sm`})})]})]}),x&&(0,G.jsxs)(Yr,{className:`flex-col items-stretch gap-2 p-4 pt-0`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,G.jsxs)(R,{variant:`outline`,size:`sm`,onClick:o,disabled:s||d,className:`h-6 border-amber-500/30 px-2 text-xs text-amber-400 hover:bg-amber-500/10`,"data-testid":`mcp-oauth-${e.name}`,children:[s?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):(0,G.jsx)(i,{className:`icon-xs mr-1`}),s?f(`mcp.authenticating`):`OAuth`]}),(0,G.jsxs)(R,{variant:p?`secondary`:`outline`,size:`sm`,onClick:()=>m(!p),disabled:s||d,className:`h-6 px-2 text-xs`,"data-testid":`mcp-manual-token-${e.name}`,children:[(0,G.jsx)(c,{className:`icon-xs mr-1`}),f(`mcp.manualToken`)]}),b&&(0,G.jsx)(ni,{})]}),p&&(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(V,{type:`password`,value:h,onChange:e=>g(e.target.value),placeholder:f(`mcp.tokenPlaceholder`),className:`h-7 flex-1 px-2 text-xs`,"data-testid":`mcp-token-input-${e.name}`}),(0,G.jsx)(R,{variant:`outline`,size:`sm`,onClick:()=>{h&&u&&(u(h),g(``),m(!1))},disabled:!h||d,className:`h-7 px-2 text-xs`,"data-testid":`mcp-token-save-${e.name}`,children:d?(0,G.jsx)(l,{className:`icon-xs animate-spin`}):(0,G.jsx)(se,{className:`icon-xs`})})]})]})]})}function si({server:e,installed:t,onInstall:n,installing:r}){let{t:i}=M();return(0,G.jsxs)(Wr,{"data-testid":`mcp-recommended-card-${e.name}`,className:`flex h-full flex-col shadow-none`,children:[(0,G.jsxs)(Gr,{className:`flex-1 space-y-2 p-4 pb-2`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,G.jsx)(Kr,{className:`text-sm leading-snug font-medium`,children:e.name}),(0,G.jsx)(ii,{type:e.type})]}),(0,G.jsx)(qr,{className:`line-clamp-3 text-xs leading-relaxed`,children:e.description})]}),(0,G.jsx)(Yr,{className:`p-4 pt-0`,children:(0,G.jsxs)(R,{variant:t?`ghost`:`outline`,size:`sm`,onClick:n,disabled:t||r,className:`w-full`,"data-testid":`mcp-install-${e.name}`,children:[r?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):t?null:(0,G.jsx)(s,{className:`icon-xs mr-1`}),i(t?`mcp.installed`:r?`mcp.installing`:`mcp.install`)]})})]})}function ci(){let{t:e}=M(),t=Ne(e=>e.projects),n=Ne(e=>e.selectedProjectId),[r,i]=(0,W.useState)([]),[a,o]=(0,W.useState)([]),[s,c]=(0,W.useState)(!1),[u,f]=(0,W.useState)(null),[p,m]=(0,W.useState)(null),[h,g]=(0,W.useState)(null),[_,v]=(0,W.useState)(null),[y,b]=(0,W.useState)(null),[x,S]=(0,W.useState)(null),[w,T]=(0,W.useState)(!1),[E,D]=(0,W.useState)(null),[O,te]=(0,W.useState)(`claude`),[ne,re]=(0,W.useState)(``),[k,ie]=(0,W.useState)(`stdio`),[ae,oe]=(0,W.useState)(``),[se,ce]=(0,W.useState)(``),[le,ue]=(0,W.useState)(``),[de,fe]=(0,W.useState)(!1),A=n?t.find(e=>e.id===n)?.path??null:t.length>0?t[0].path:null,j=(0,W.useCallback)(async()=>{if(!A)return;c(!0),f(null);let e=await P.listMcpServers(A,O);e.isOk()?i(e.value.servers):f(e.error.message),c(!1)},[A,O]),pe=(0,W.useRef)(null);(0,W.useEffect)(()=>{let e=A?`${A}:${O}`:null;!A||e===pe.current||(pe.current=e,j())},[A,O,j]);let me=(0,W.useRef)(!1);(0,W.useEffect)(()=>{me.current||(me.current=!0,(async()=>{let e=await P.getRecommendedMcpServers();e.isOk()&&o(e.value.servers)})())},[]);let N=e=>{D(e)},he=async()=>{if(!A||!E)return;let e=E;D(null),m(e);let t=await P.removeMcpServer(e,A,O);t.isErr()?f(t.error.message):await j(),m(null)},ge=async(e,t)=>{if(!A)return;S(e);let n=await P.toggleMcpServer(e,A,t,O);n.isErr()?f(n.error.message):await j(),S(null)},_e=async e=>{if(!A)return;g(e.name);let t=await P.addMcpServer({name:e.name,provider:O,type:e.type,url:e.url,command:e.command,args:e.args,projectPath:A});t.isErr()?f(t.error.message):await j(),g(null)},F=async()=>{if(!A||!ne)return;fe(!0),f(null);let e={name:ne,provider:O,type:k,projectPath:A};k===`http`||k===`sse`?e.url=ae:(e.command=se,e.args=le.split(/\s+/).filter(Boolean));let t=await P.addMcpServer(e);t.isErr()?f(t.error.message):(await j(),re(``),oe(``),ce(``),ue(``),T(!1)),fe(!1)},ve=async t=>{if(!A)return;v(t.name),f(null);let n=await P.startMcpOAuth(t.name,A,O);if(n.isErr()){f(n.error.message),v(null);return}let{authUrl:r}=n.value,i=window.screenX+(window.innerWidth-600)/2,a=window.screenY+(window.innerHeight-700)/2,o=window.open(r,`mcp-oauth`,`width=600,height=700,left=${i},top=${a},popup=yes`),s=t=>{t.origin===window.location.origin&&t.data?.type===`mcp-oauth-callback`&&(window.removeEventListener(`message`,s),v(null),o&&!o.closed&&o.close(),t.data.success?j():f(t.data.error||e(`mcp.authFailed`)))};window.addEventListener(`message`,s);let c=setInterval(()=>{o&&o.closed&&(clearInterval(c),window.removeEventListener(`message`,s),v(null),j())},500)},ye=async(e,t)=>{if(!A)return;b(e.name),f(null);let n=await P.setMcpToken(e.name,A,t,O);n.isErr()?f(n.error.message):await j(),b(null)},be=new Set(r.map(e=>e.name));return A?(0,G.jsxs)(`div`,{className:`space-y-6`,children:[u&&(0,G.jsxs)(`div`,{className:`bg-destructive/10 text-destructive flex items-center gap-2 rounded-md px-3 py-2 text-xs`,children:[(0,G.jsx)(C,{className:`icon-sm shrink-0`}),(0,G.jsx)(`span`,{children:u}),(0,G.jsx)(`button`,{onClick:()=>f(null),className:`ml-auto text-xs underline`,children:e(`mcp.dismiss`)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,G.jsx)(`h3`,{className:`settings-section-header px-0 pb-0`,children:e(`mcp.installedServers`)}),(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsxs)(Tt,{value:O,onValueChange:e=>{te(e),T(!1)},children:[(0,G.jsx)(bt,{className:`h-8 w-[150px]`,"aria-label":e(`mcp.agentProvider`),"data-testid":`mcp-provider-select`,children:(0,G.jsx)(ht,{})}),(0,G.jsx)(rt,{children:ei.map(e=>(0,G.jsx)(B,{value:e.value,children:e.label},e.value))})]}),(0,G.jsxs)(R,{variant:`ghost`,size:`sm`,onClick:()=>T(!w),className:`px-2`,children:[w?(0,G.jsx)(ee,{className:`icon-xs mr-1`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(w?`mcp.cancel`:`mcp.addCustom`)]})]})]}),w&&(0,G.jsxs)(`div`,{className:`settings-form-panel mb-3`,children:[(0,G.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`mcp.name`)}),(0,G.jsx)(V,{type:`text`,value:ne,onChange:e=>re(e.target.value),placeholder:`my-server`,className:`h-8 px-2`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`mcp.type`)}),(0,G.jsxs)(Tt,{value:k,onValueChange:e=>ie(e),children:[(0,G.jsx)(bt,{className:`h-8`,children:(0,G.jsx)(ht,{})}),(0,G.jsxs)(rt,{children:[(0,G.jsx)(B,{value:`stdio`,children:`stdio`}),(0,G.jsx)(B,{value:`http`,children:`http`}),(0,G.jsx)(B,{value:`sse`,children:`sse`})]})]})]})]}),k===`http`||k===`sse`?(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`mcp.url`)}),(0,G.jsx)(V,{type:`text`,value:ae,onChange:e=>oe(e.target.value),placeholder:`https://api.example.com/mcp`,className:`h-8 px-2`})]}):(0,G.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`mcp.command`)}),(0,G.jsx)(V,{type:`text`,value:se,onChange:e=>ce(e.target.value),placeholder:`npx`,className:`h-8 px-2`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`mcp.arguments`)}),(0,G.jsx)(V,{type:`text`,value:le,onChange:e=>ue(e.target.value),placeholder:`-y @package/name`,className:`h-8 px-2`})]})]}),(0,G.jsx)(`div`,{className:`flex justify-end`,children:(0,G.jsxs)(R,{size:`sm`,onClick:F,disabled:!ne||de,children:[de?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(`mcp.addServer`)]})})]}),s?(0,G.jsx)(H,{fill:!1,layout:`inline`,className:`py-6`,testId:`mcp-settings-loading`,label:e(`mcp.loadingServers`)}):r.length===0?(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`mcp.noServers`)}):(0,G.jsx)(`div`,{className:`grid grid-cols-1 gap-3 xl:grid-cols-2`,children:r.map(e=>(0,G.jsx)(oi,{server:e,onRemove:()=>N(e.name),removing:p===e.name,onToggle:t=>ge(e.name,t),toggling:x===e.name,onAuthenticate:()=>ve(e),authenticating:_===e.name,onSetToken:t=>ye(e,t),settingToken:y===e.name},e.name))})]}),a.length>0&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{className:`settings-section-header mb-2 px-0 pb-0`,children:e(`mcp.recommendedServers`)}),(0,G.jsx)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3`,children:a.map(e=>(0,G.jsx)(si,{server:e,installed:be.has(e.name),onInstall:()=>_e(e),installing:h===e.name},e.name))})]}),(0,G.jsx)(nt,{open:!!E,onOpenChange:e=>!e&&D(null),children:(0,G.jsxs)(it,{children:[(0,G.jsxs)(mt,{children:[(0,G.jsx)(st,{children:e(`mcp.confirmRemoveTitle`)}),(0,G.jsx)(ot,{children:e(`mcp.confirmRemoveDescription`,{name:E})})]}),(0,G.jsxs)(yt,{children:[(0,G.jsx)(Dt,{"data-testid":`mcp-remove-cancel`,children:e(`mcp.cancel`)}),(0,G.jsx)(dt,{"data-testid":`mcp-remove-confirm`,onClick:he,className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:e(`common.delete`)})]})]})})]}):(0,G.jsxs)(`div`,{className:`text-muted-foreground flex items-center gap-2 text-sm`,children:[(0,G.jsx)(C,{className:`icon-base`}),e(`mcp.selectProject`)]})}var li=(0,W.memo)(function({value:e,onChange:t,testId:n}){let[r,i]=(0,W.useState)(!1),a=e;for(let t of Object.values(Rt)){let n=t.find(t=>t.value===e);if(n){a=n.fallback;break}}return(0,G.jsxs)(Ae,{open:r,onOpenChange:i,children:[(0,G.jsx)(ze,{asChild:!0,children:(0,G.jsxs)(`button`,{"data-testid":n,className:`border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground flex h-7 cursor-pointer items-center gap-1 rounded-md border px-2 py-1 text-xs`,children:[(0,G.jsx)(`span`,{children:a}),(0,G.jsx)(_,{className:`icon-xs opacity-50`})]})}),(0,G.jsx)(ut,{side:`bottom`,align:`end`,className:`w-auto min-w-40 p-1 data-[state=closed]:animate-none data-[state=open]:animate-none`,onOpenAutoFocus:e=>e.preventDefault(),children:It.map(r=>{let a=Rt[r.value]??[];return(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`div`,{className:`text-muted-foreground px-2 py-1.5 text-xs font-semibold`,children:r.label}),a.map(r=>(0,G.jsx)(`button`,{className:I(`flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-xs outline-hidden transition-colors hover:bg-accent hover:text-accent-foreground`,r.value===e&&`bg-accent text-accent-foreground`),onClick:()=>{t(r.value),i(!1)},"data-testid":n?`${n}-${r.value}`:void 0,children:r.fallback},r.value))]},r.value)})})]})});function ui(){let e=U(e=>e.selectedProjectId),[t,n]=(0,W.useState)(null),[r,i]=(0,W.useState)(!0),a=(0,W.useRef)(void 0),o=(0,W.useRef)({}),s=(0,W.useRef)(null);(0,W.useEffect)(()=>{s.current=t?.id??null},[t?.id]);let c=(0,W.useCallback)(async()=>{if(!e)return;i(!0);let t=await P.listPipelines(e);if(t.isOk())if(t.value.length>0)n(t.value[0]);else{let t=await P.createPipeline({projectId:e,name:`Code Review`});t.isOk()&&n(t.value)}i(!1)},[e]);(0,W.useEffect)(()=>{c()},[c]);let l=(0,W.useCallback)(async()=>{let e=s.current,t={...o.current};!e||Object.keys(t).length===0||(o.current={},(await P.updatePipeline(e,t)).isErr()&&(z.error(`Failed to save pipeline setting`),c()))},[c]);(0,W.useEffect)(()=>()=>{clearTimeout(a.current);let e=s.current,t={...o.current};e&&Object.keys(t).length>0&&P.updatePipeline(e,t)},[]);let u=(0,W.useCallback)(e=>{s.current&&(n(t=>t&&{...t,...e}),Object.assign(o.current,e),clearTimeout(a.current),a.current=setTimeout(l,400))},[l]),d=(0,W.useCallback)(e=>u({precommitFixModel:e}),[u]),f=(0,W.useCallback)(e=>u({reviewModel:e}),[u]),p=(0,W.useCallback)(e=>u({fixModel:e}),[u]),m=(0,W.useCallback)(e=>u({testFixModel:e}),[u]),h=(e,n)=>{t&&n!==(t[e]??``)&&u({[e]:n||null})};return e?r||!t?(0,G.jsx)(H,{label:`Loading…`,className:`min-h-[40vh]`}):(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsx)(`div`,{className:`border-border/50 bg-muted/20 rounded-lg border px-4 py-3`,children:(0,G.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`The pipeline automatically reviews and fixes your code after each commit. Every successful commit triggers a Reviewer agent that analyzes the diff. If issues are found, a Corrector agent creates fixes in an isolated worktree.`})}),(0,G.jsxs)(`div`,{className:`settings-card mb-0`,children:[(0,G.jsxs)(`div`,{className:`bg-muted/30 flex items-center justify-between px-3 py-2`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:`Pre-commit Auto-fix`}),(0,G.jsx)(vt,{checked:!!t.precommitFixEnabled,onCheckedChange:e=>u({precommitFixEnabled:e}),"data-testid":`pipeline-precommit-toggle`})]}),!!t.precommitFixEnabled&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ht,{title:`Fixer Model`,description:`Model for auto-fixing lint errors`,children:(0,G.jsx)(li,{value:t.precommitFixModel||`sonnet`,onChange:d,testId:`pipeline-precommit-model`})}),(0,G.jsx)(Ht,{title:`Max Fix Attempts`,description:`Max retries before failing the commit`,children:(0,G.jsx)(V,{type:`number`,min:1,max:5,value:t.precommitFixMaxIterations??3,onChange:e=>u({precommitFixMaxIterations:parseInt(e.target.value,10)||3}),className:`h-8 w-16 text-center text-xs`,"data-testid":`pipeline-precommit-max`})})]})]}),(0,G.jsxs)(`div`,{className:`settings-card mb-0`,children:[(0,G.jsxs)(`div`,{className:`bg-muted/30 flex items-center justify-between px-3 py-2`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:`Post-commit Review`}),(0,G.jsx)(vt,{checked:!!t.enabled,onCheckedChange:e=>u({enabled:e}),"data-testid":`pipeline-review-toggle`})]}),!!t.enabled&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ht,{title:`Reviewer Model`,description:`Model for analyzing code (read-only)`,children:(0,G.jsx)(li,{value:t.reviewModel||`sonnet`,onChange:f,testId:`pipeline-review-model`})}),(0,G.jsx)(Ht,{title:`Corrector Model`,description:`Model for fixing issues (worktree)`,children:(0,G.jsx)(li,{value:t.fixModel||`sonnet`,onChange:p,testId:`pipeline-fix-model`})}),(0,G.jsx)(Ht,{title:`Max Iterations`,description:`Max review-fix cycles before giving up`,children:(0,G.jsx)(V,{type:`number`,min:1,max:20,value:t.maxIterations??10,onChange:e=>u({maxIterations:parseInt(e.target.value,10)||10}),className:`h-8 w-16 text-center text-xs`,"data-testid":`pipeline-max-iterations`})})]})]}),(0,G.jsxs)(`div`,{className:`settings-card mb-0`,children:[(0,G.jsxs)(`div`,{className:`bg-muted/30 flex items-center justify-between px-3 py-2`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:`Test Auto-Fix`}),(0,G.jsx)(vt,{checked:!!t.testEnabled,onCheckedChange:e=>u({testEnabled:e}),"data-testid":`pipeline-test-toggle`})]}),!!t.testEnabled&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ht,{title:`Test Command`,description:`Command to run tests (e.g. bun test)`,children:(0,G.jsx)(V,{type:`text`,value:t.testCommand??``,onChange:e=>u({testCommand:e.target.value}),placeholder:`bun test`,className:`h-8 w-40 text-xs`,"data-testid":`pipeline-test-command`})}),(0,G.jsx)(Ht,{title:`Auto-fix Failures`,description:`Spawn an agent to fix failing tests`,children:(0,G.jsx)(vt,{checked:!!t.testFixEnabled,onCheckedChange:e=>u({testFixEnabled:e}),"data-testid":`pipeline-test-fix-toggle`})}),!!t.testFixEnabled&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ht,{title:`Fixer Model`,description:`Model for fixing test failures`,children:(0,G.jsx)(li,{value:t.testFixModel||`sonnet`,onChange:m,testId:`pipeline-test-fix-model`})}),(0,G.jsx)(Ht,{title:`Max Fix Attempts`,description:`Max test-fix cycles before giving up`,children:(0,G.jsx)(V,{type:`number`,min:1,max:10,value:t.testFixMaxIterations??3,onChange:e=>u({testFixMaxIterations:parseInt(e.target.value,10)||3}),className:`h-8 w-16 text-center text-xs`,"data-testid":`pipeline-test-fix-max`})})]})]})]}),(0,G.jsx)(Ge,{children:(0,G.jsxs)(`div`,{className:`settings-card mb-0`,children:[(0,G.jsxs)(kt,{className:`bg-muted/30 hover:bg-muted/50 flex w-full items-center justify-between px-3 py-2 transition-colors`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:`Custom Prompts`}),(0,G.jsx)(_,{className:`icon-sm text-muted-foreground transition-transform in-data-[state=open]:rotate-180`})]}),(0,G.jsx)(je,{children:(0,G.jsxs)(`div`,{className:`space-y-3 p-3`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Override default prompts for each pipeline stage. Leave empty to use built-in defaults.`}),(0,G.jsx)(di,{label:`Reviewer Prompt`,value:t.reviewerPrompt??``,onBlur:e=>h(`reviewerPrompt`,e),placeholder:`e.g. You are a code reviewer. Focus on security issues and performance...`,testId:`pipeline-reviewer-prompt`}),(0,G.jsx)(di,{label:`Corrector Prompt`,value:t.correctorPrompt??``,onBlur:e=>h(`correctorPrompt`,e),placeholder:`e.g. You are a code corrector. Fix the issues found by the reviewer...`,testId:`pipeline-corrector-prompt`}),(0,G.jsx)(di,{label:`Pre-commit Fixer Prompt`,value:t.precommitFixerPrompt??``,onBlur:e=>h(`precommitFixerPrompt`,e),placeholder:`e.g. Fix the issues reported by the pre-commit hook...`,testId:`pipeline-precommit-fixer-prompt`}),(0,G.jsx)(di,{label:`Commit Message Prompt`,value:t.commitMessagePrompt??``,onBlur:e=>h(`commitMessagePrompt`,e),placeholder:`e.g. Generate a commit message following our team conventions...`,testId:`pipeline-commit-message-prompt`}),(0,G.jsx)(di,{label:`Test Fixer Prompt`,value:t.testFixerPrompt??``,onBlur:e=>h(`testFixerPrompt`,e),placeholder:`e.g. Analyze test failures and fix the underlying code...`,testId:`pipeline-test-fixer-prompt`})]})})]})})]}):(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:`Select a project to manage pipeline settings.`})}function di({label:e,value:t,onBlur:n,placeholder:r,testId:i}){let[a,o]=(0,W.useState)(t),[s,c]=(0,W.useState)(t);return t!==s&&(c(t),o(t)),(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(`label`,{className:`text-foreground text-xs font-medium`,children:e}),(0,G.jsx)(qe,{value:a,onChange:e=>o(e.target.value),onBlur:()=>n(a),placeholder:r,rows:3,className:`resize-y text-xs`,"data-testid":i})]})}function fi(){let{t:e}=M(),t=U(e=>e.selectedProjectId),[n,i]=(0,W.useState)({}),[a,o]=(0,W.useState)(!0),[s,c]=(0,W.useState)(``),[l,u]=(0,W.useState)(!1),[f,p]=(0,W.useState)(``),[m,h]=(0,W.useState)(``),[g,_]=(0,W.useState)(``),[v,b]=(0,W.useState)(``),x=(0,W.useCallback)(async()=>{if(!t)return;o(!0);let e=await P.getProjectConfig(t);e.isOk()&&i(e.value),o(!1)},[t]);(0,W.useEffect)(()=>{x()},[x]);let S=async n=>{t&&((await P.updateProjectConfig(t,n)).isOk()?(i(n),z.success(e(`projectConfig.saved`))):z.error(e(`projectConfig.saveError`)))},C=()=>{if(!s.trim())return;let e=[...n.envFiles??[],s.trim()];S({...n,envFiles:e}),c(``)},w=(e,t)=>{let r=[...n.envFiles??[]];t.trim()?r[e]=t.trim():r.splice(e,1),S({...n,envFiles:r})},T=e=>{let t=(n.envFiles??[]).filter((t,n)=>n!==e);S({...n,envFiles:t})},E=()=>{if(!f.trim()||!m.trim())return;let e={name:f.trim(),basePort:parseInt(m,10),envVars:[]},t=[...n.portGroups??[],e];S({...n,portGroups:t}),p(``),h(``),u(!1)},D=e=>{let t=(n.portGroups??[]).filter((t,n)=>n!==e);S({...n,portGroups:t})},ee=(e,t,r)=>{let i=[...n.portGroups??[]],a={...i[e]};if(t===`name`){if(!r.trim())return;a.name=r.trim()}else{let e=parseInt(r,10);if(isNaN(e))return;a.basePort=e}i[e]=a,S({...n,portGroups:i})},O=e=>{if(!g.trim())return;let t=[...n.portGroups??[]],r={...t[e]};r.envVars=[...r.envVars,g.trim()],t[e]=r,S({...n,portGroups:t}),_(``)},te=(e,t)=>{let r=[...n.portGroups??[]],i={...r[e]};i.envVars=i.envVars.filter((e,n)=>n!==t),r[e]=i,S({...n,portGroups:r})},ne=()=>{if(!v.trim())return;let e=[...n.postCreate??[],v.trim()];S({...n,postCreate:e}),b(``)},re=(e,t)=>{let r=[...n.postCreate??[]];t.trim()?r[e]=t.trim():r.splice(e,1),S({...n,postCreate:r})},k=e=>{let t=(n.postCreate??[]).filter((t,n)=>n!==e);S({...n,postCreate:t})};return t?a?(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`common.loading`)}):(0,G.jsxs)(`div`,{className:`space-y-6`,children:[(0,G.jsxs)(`section`,{children:[(0,G.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,G.jsx)(r,{className:`icon-base text-muted-foreground`}),(0,G.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`projectConfig.envFiles`)})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground mb-3 text-xs`,children:e(`projectConfig.envFilesDescription`)}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:(n.envFiles??[]).map((t,n)=>(0,G.jsxs)(`div`,{className:`group flex items-center gap-2`,"data-testid":`env-file-${n}`,children:[(0,G.jsx)(V,{className:`h-8 flex-1 font-mono text-sm`,defaultValue:t,onBlur:e=>w(n,e.target.value),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},"data-testid":`env-file-edit-${n}`}),(0,G.jsx)(Mt,{onClick:()=>T(n),className:`text-muted-foreground hover:text-status-error opacity-0 group-hover:opacity-100`,"data-testid":`env-file-remove-${n}`,tooltip:e(`common.delete`),children:(0,G.jsx)(y,{className:`icon-xs`})})]},n))}),(0,G.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,G.jsx)(V,{className:`h-8 flex-1 font-mono text-sm`,placeholder:e(`projectConfig.envFilePlaceholder`),value:s,onChange:e=>c(e.target.value),onKeyDown:e=>e.key===`Enter`&&C(),"data-testid":`env-file-input`}),(0,G.jsx)(R,{variant:`outline`,size:`sm`,className:`h-8`,onClick:C,"data-testid":`env-file-add`,children:(0,G.jsx)(d,{className:`icon-sm`})})]})]}),(0,G.jsx)(lt,{}),(0,G.jsxs)(`section`,{children:[(0,G.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,G.jsx)(ce,{className:`icon-base text-muted-foreground`}),(0,G.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`projectConfig.portGroups`)})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground mb-3 text-xs`,children:e(`projectConfig.portGroupsDescription`)}),(0,G.jsx)(`div`,{className:`space-y-3`,children:(n.portGroups??[]).map((t,n)=>(0,G.jsxs)(`div`,{className:`group border-border/50 bg-card rounded-lg border p-3`,"data-testid":`port-group-${n}`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(V,{size:`xs`,className:`w-32 text-sm font-medium`,defaultValue:t.name,onBlur:e=>ee(n,`name`,e.target.value),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},"data-testid":`port-group-${n}-name`}),(0,G.jsx)(V,{size:`xs`,className:`w-20 font-mono`,type:`number`,defaultValue:t.basePort,onBlur:e=>ee(n,`basePort`,e.target.value),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},"data-testid":`port-group-${n}-port`})]}),(0,G.jsx)(Mt,{onClick:()=>D(n),className:`text-muted-foreground hover:text-status-error opacity-0 group-hover:opacity-100`,"data-testid":`port-group-remove-${n}`,tooltip:e(`common.delete`),children:(0,G.jsx)(y,{className:`icon-xs`})})]}),(0,G.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5`,children:[t.envVars.map((e,t)=>(0,G.jsxs)(tt,{variant:`outline`,className:`hover:bg-destructive/10 hover:text-status-error cursor-pointer gap-1 font-mono text-xs`,onClick:()=>te(n,t),"data-testid":`port-group-${n}-var-${t}`,children:[e,(0,G.jsx)(y,{className:`icon-2xs`})]},t)),(0,G.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,G.jsx)(V,{className:`h-6 w-32 font-mono text-xs`,placeholder:e(`projectConfig.envVarPlaceholder`),value:g,onChange:e=>_(e.target.value),onKeyDown:e=>{e.key===`Enter`&&O(n)},"data-testid":`port-group-${n}-var-input`}),(0,G.jsx)(Mt,{onClick:()=>O(n),"data-testid":`port-group-${n}-var-add`,tooltip:e(`common.add`),children:(0,G.jsx)(d,{className:`icon-xs`})})]})]})]},n))}),l?(0,G.jsxs)(`div`,{className:`mt-3 flex items-center gap-2`,children:[(0,G.jsx)(V,{className:`h-8 flex-1 text-sm`,placeholder:e(`projectConfig.groupNamePlaceholder`),value:f,onChange:e=>p(e.target.value),"data-testid":`port-group-name-input`,autoFocus:!0}),(0,G.jsx)(V,{className:`h-8 w-24 font-mono text-sm`,type:`number`,placeholder:e(`projectConfig.portPlaceholder`),value:m,onChange:e=>h(e.target.value),onKeyDown:e=>e.key===`Enter`&&E(),"data-testid":`port-group-port-input`}),(0,G.jsx)(R,{variant:`outline`,size:`sm`,className:`h-8`,onClick:E,"data-testid":`port-group-add-confirm`,children:(0,G.jsx)(d,{className:`icon-sm`})}),(0,G.jsx)(R,{variant:`ghost`,size:`sm`,className:`h-8`,onClick:()=>{u(!1),p(``),h(``)},"data-testid":`port-group-add-cancel`,children:e(`common.cancel`)})]}):(0,G.jsxs)(R,{variant:`outline`,size:`sm`,className:`mt-3 gap-1.5`,onClick:()=>u(!0),"data-testid":`port-group-add`,children:[(0,G.jsx)(d,{className:`icon-sm`}),e(`projectConfig.addPortGroup`)]})]}),(0,G.jsx)(lt,{}),(0,G.jsxs)(`section`,{children:[(0,G.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,G.jsx)(ae,{className:`icon-base text-muted-foreground`}),(0,G.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`projectConfig.postCreate`)})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground mb-3 text-xs`,children:e(`projectConfig.postCreateDescription`)}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:(n.postCreate??[]).map((e,t)=>(0,G.jsxs)(`div`,{className:`group flex items-center gap-2`,"data-testid":`post-create-${t}`,children:[(0,G.jsx)(V,{className:`h-8 flex-1 font-mono text-sm`,defaultValue:e,onBlur:e=>re(t,e.target.value),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},"data-testid":`post-create-edit-${t}`}),(0,G.jsx)(R,{variant:`ghost`,size:`icon-xs`,onClick:()=>k(t),className:`text-muted-foreground hover:text-status-error opacity-0 group-hover:opacity-100`,"data-testid":`post-create-remove-${t}`,children:(0,G.jsx)(y,{className:`icon-xs`})})]},t))}),(0,G.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,G.jsx)(V,{className:`h-8 flex-1 font-mono text-sm`,placeholder:e(`projectConfig.postCreatePlaceholder`),value:v,onChange:e=>b(e.target.value),onKeyDown:e=>e.key===`Enter`&&ne(),"data-testid":`post-create-input`}),(0,G.jsx)(R,{variant:`outline`,size:`sm`,className:`h-8`,onClick:ne,"data-testid":`post-create-add`,children:(0,G.jsx)(d,{className:`icon-sm`})})]})]})]}):(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`projectConfig.noProject`)})}var pi=Ce(`project-collaborators`),mi={owner:`bg-purple-500/15 text-purple-700 dark:text-purple-400`,admin:`bg-blue-500/15 text-blue-700 dark:text-blue-400`,member:`bg-green-500/15 text-green-700 dark:text-green-400`,viewer:`bg-muted text-muted-foreground`},hi=[{value:`viewer`,label:`Viewer`,hint:`Read-only access to the project.`},{value:`member`,label:`Member`,hint:`Work in the project and run threads.`},{value:`admin`,label:`Admin`,hint:`Manage collaborators and project settings.`}];function gi(){let e=Ne(e=>e.selectedProjectId),n=Ne(e=>e.projects.find(t=>t.id===e.selectedProjectId)?.userId),r=we(e=>e.user?.id),[i,a]=(0,W.useState)([]),[o,s]=(0,W.useState)(!0),[c,l]=(0,W.useState)(``),[u,d]=(0,W.useState)([]),[f,p]=(0,W.useState)(!1),[m,h]=(0,W.useState)(`member`),g=(0,W.useRef)(0),_=(0,W.useCallback)(async()=>{if(!e)return;let t=await P.listProjectMembers(e);t.isOk()?a(t.value.members):pi.warn(`Failed to load project members`),s(!1)},[e]);(0,W.useEffect)(()=>{_()},[_]),(0,W.useEffect)(()=>{let e=c.trim();if(e.length<1){d([]);return}let t=++g.current;p(!0);let n=setTimeout(async()=>{let n=await P.searchUsers(e);t===g.current&&(n.isOk()&&d(n.value),p(!1))},250);return()=>clearTimeout(n)},[c]);let v=new Set(i.map(e=>e.userId)),b=(0,W.useCallback)(async t=>{e&&((await P.addProjectMember(e,t.id,m)).isOk()?(z.success(`Added ${t.username??t.name} as ${m}`),l(``),d([]),_()):z.error(`Failed to add collaborator`))},[e,m,_]),x=(0,W.useCallback)(async(t,n)=>{!e||t.role===n||((await P.addProjectMember(e,t.userId,n)).isOk()?(z.success(`Role updated`),_()):z.error(`Failed to update role`))},[e,_]),S=(0,W.useCallback)(async t=>{e&&((await P.removeProjectMember(e,t.userId)).isOk()?(z.success(`Collaborator removed`),_()):z.error(`Failed to remove collaborator`))},[e,_]);return o?(0,G.jsx)(H,{testId:`collaborators-loading`,label:`Loading collaborators…`}):(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsx)(`div`,{className:`px-1`,children:(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-sm`,children:`People with access to this project. Each collaborator works through their own runner — they’ll be prompted to connect one and set their local directory.`})}),(0,G.jsxs)(`div`,{className:`settings-card space-y-2 p-3`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsxs)(`div`,{className:`relative flex-1`,children:[(0,G.jsx)(t,{className:`text-muted-foreground absolute top-1/2 left-2.5 size-3.5 -translate-y-1/2`}),(0,G.jsx)(V,{value:c,onChange:e=>l(e.target.value),placeholder:`Search users by name, username or email…`,className:`pl-8 text-sm`,"data-testid":`collaborators-search`})]}),(0,G.jsxs)(Tt,{value:m,onValueChange:e=>h(e),children:[(0,G.jsx)(bt,{className:`w-32 shrink-0`,"data-testid":`collaborators-role-select`,children:(0,G.jsx)(ht,{})}),(0,G.jsx)(rt,{children:hi.map(e=>(0,G.jsx)(B,{value:e.value,"data-testid":`collaborators-role-opt-${e.value}`,children:e.label},e.value))})]})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground text-[11px]`,children:hi.find(e=>e.value===m)?.hint}),c.trim().length>0&&(0,G.jsx)(`div`,{className:`border-border/50 divide-border/50 divide-y rounded-md border`,children:f&&u.length===0?(0,G.jsx)(`p`,{className:`text-muted-foreground px-3 py-2 text-xs`,children:`Searching…`}):u.length===0?(0,G.jsx)(`p`,{className:`text-muted-foreground px-3 py-2 text-xs`,children:`No users found.`}):u.map(e=>{let t=v.has(e.id);return(0,G.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2`,"data-testid":`collaborators-result-${e.id}`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`p`,{className:`text-foreground truncate text-sm`,children:e.name||e.username}),(0,G.jsxs)(`p`,{className:`text-muted-foreground truncate text-xs`,children:[`@`,e.username??e.email]})]}),(0,G.jsxs)(R,{size:`sm`,variant:`outline`,className:`h-7 shrink-0 text-xs`,disabled:t,onClick:()=>b(e),"data-testid":`collaborators-add-${e.id}`,children:[(0,G.jsx)(D,{className:`icon-xs mr-1`}),t?`Added`:`Add`]})]},e.id)})})]}),(0,G.jsx)(`div`,{className:`settings-card divide-border/50 divide-y`,children:i.length===0?(0,G.jsx)(`p`,{className:`text-muted-foreground px-4 py-6 text-center text-sm`,children:`No collaborators yet.`}):i.map(e=>{let t=e.userId===n,i=e.userId===r,a=e.user?.name||e.user?.username||e.userId;return(0,G.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2.5`,"data-testid":`collaborators-member-${e.userId}`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsxs)(`p`,{className:`text-foreground truncate text-sm font-medium`,children:[a,i&&(0,G.jsx)(`span`,{className:`text-muted-foreground ml-1 text-xs`,children:`(you)`})]}),t||i?(0,G.jsx)(tt,{variant:`secondary`,className:mi[t?`owner`:e.role]??``,children:t?`owner`:e.role}):(0,G.jsxs)(Tt,{value:[`viewer`,`member`,`admin`].includes(e.role)?e.role:`member`,onValueChange:t=>void x(e,t),children:[(0,G.jsx)(bt,{className:`h-6 w-24 text-xs`,"data-testid":`collaborators-role-${e.userId}`,children:(0,G.jsx)(ht,{})}),(0,G.jsx)(rt,{children:hi.map(e=>(0,G.jsx)(B,{value:e.value,className:`text-xs`,children:e.label},e.value))})]}),!e.localPath&&!t&&(0,G.jsx)(tt,{variant:`secondary`,className:`bg-amber-500/15 text-amber-700 dark:text-amber-400`,children:`needs setup`})]}),e.user?.username&&(0,G.jsxs)(`p`,{className:`text-muted-foreground truncate text-xs`,children:[`@`,e.user.username]})]}),!t&&!i&&(0,G.jsx)(R,{variant:`ghost`,size:`icon`,className:`text-muted-foreground hover:text-destructive size-7 shrink-0`,onClick:()=>S(e),"data-testid":`collaborators-remove-${e.userId}`,"aria-label":`Remove collaborator`,children:(0,G.jsx)(y,{className:`icon-sm`})})]},e.userId)})})]})}function _i({skill:e,onRemove:t,removing:n}){let{t:r}=M();return(0,G.jsxs)(`div`,{className:`border-border/50 bg-card flex items-center justify-between gap-3 rounded-md border px-3 py-2.5`,style:{borderLeftWidth:3,borderLeftColor:Pe(e.name)},children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,G.jsx)(T,{className:`icon-base text-status-warning shrink-0`}),(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.name})}),e.description&&(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 truncate text-xs`,children:e.description}),(0,G.jsxs)(`div`,{className:`mt-1 flex items-center gap-2`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground/70 text-xs`,children:e.source}),e.sourceUrl&&(0,G.jsx)(`a`,{href:e.sourceUrl,target:`_blank`,rel:`noopener noreferrer`,className:`text-muted-foreground/70 hover:text-foreground inline-flex items-center gap-0.5 text-xs`,children:(0,G.jsx)(le,{className:`icon-2xs`})}),e.installedAt&&(0,G.jsxs)(`span`,{className:`text-muted-foreground/70 text-xs`,children:[`installed `,new Date(e.installedAt).toLocaleDateString()]})]})]})]}),e.scope!==`project`&&(0,G.jsx)(Mt,{onClick:t,disabled:n,className:`text-muted-foreground hover:text-destructive shrink-0`,tooltip:r(`common.remove`),children:n?(0,G.jsx)(l,{className:`icon-sm animate-spin`}):(0,G.jsx)(y,{className:`icon-sm`})})]})}function vi({skill:e,installed:t,onInstall:n,installing:r}){let{t:i}=M();return(0,G.jsxs)(`div`,{className:`border-border/50 bg-card flex items-center justify-between gap-3 rounded-md border px-3 py-2.5`,style:{borderLeftWidth:3,borderLeftColor:Pe(e.name)},children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,G.jsx)(`span`,{className:`text-sm font-medium`,children:e.name})}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:e.description}),(0,G.jsx)(`p`,{className:`text-muted-foreground/70 mt-0.5 font-mono text-xs`,children:e.identifier})]}),(0,G.jsxs)(R,{variant:t?`ghost`:`outline`,size:`sm`,onClick:n,disabled:t||r,className:`shrink-0`,children:[r?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):t?null:(0,G.jsx)(s,{className:`icon-xs mr-1`}),i(t?`skills.installed`:r?`skills.installing`:`skills.install`)]})]})}function yi({command:e}){return(0,G.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 text-xs`,children:[(0,G.jsxs)(`span`,{className:`text-foreground/80 font-mono`,children:[`/`,e.name]}),e.description&&(0,G.jsx)(`span`,{className:`text-muted-foreground/70 truncate`,children:e.description})]})}function bi({plugin:e}){let{t}=M(),[n,r]=(0,W.useState)(!1),i=e.commands.length>0;return(0,G.jsx)(Ge,{open:n,onOpenChange:r,children:(0,G.jsxs)(`div`,{className:`border-border/50 bg-card rounded-md border`,style:{borderLeftWidth:3,borderLeftColor:Pe(e.name)},children:[(0,G.jsx)(kt,{asChild:!0,children:(0,G.jsxs)(`button`,{className:`hover:bg-muted/30 flex w-full items-center justify-between gap-3 rounded-md px-3 py-2.5 text-left transition-colors`,disabled:!i,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,G.jsx)(g,{className:`icon-base shrink-0 text-purple-500`}),(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.name}),i&&(0,G.jsxs)(`span`,{className:`bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-xs font-medium`,children:[e.commands.length,` `,e.commands.length===1?t(`plugins.command`):t(`plugins.commands`)]})]}),e.description&&(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 truncate text-xs`,children:e.description}),(0,G.jsxs)(`div`,{className:`mt-1 flex items-center gap-2`,children:[e.author&&(0,G.jsxs)(`span`,{className:`text-muted-foreground/70 text-xs`,children:[t(`plugins.by`),` `,e.author]}),e.installedAt&&(0,G.jsxs)(`span`,{className:`text-muted-foreground/70 text-xs`,children:[`installed `,new Date(e.installedAt).toLocaleDateString()]})]})]})]}),i&&(0,G.jsx)(_,{className:I(`icon-sm text-muted-foreground transition-transform shrink-0`,n&&`rotate-180`)})]})}),i&&(0,G.jsx)(je,{children:(0,G.jsx)(`div`,{className:`border-border/50 border-t py-1`,children:e.commands.map(e=>(0,G.jsx)(yi,{command:e},e.name))})})]})})}function xi(){let{t:e}=M(),t=U(e=>e.projects),n=U(e=>e.selectedProjectId),[r,i]=(0,W.useState)([]),[a,o]=(0,W.useState)([]),[s,c]=(0,W.useState)([]),[u,f]=(0,W.useState)(!1),[p,m]=(0,W.useState)(!1),[h,g]=(0,W.useState)(null),[_,v]=(0,W.useState)(null),[y,b]=(0,W.useState)(!1),[x,S]=(0,W.useState)(``),[C,w]=(0,W.useState)(!1),T=n?t.find(e=>e.id===n)?.path??null:t[0]?.path??null,E=(0,W.useCallback)(async()=>{f(!0);let e=await P.listSkills(T||void 0);e.isOk()?i(e.value.skills):Ke(e.error),f(!1)},[T]),D=(0,W.useCallback)(async()=>{m(!0);let e=await P.listPlugins();e.isOk()&&o(e.value.plugins),m(!1)},[]),O=(0,W.useCallback)(async()=>{let e=await P.getRecommendedSkills();e.isOk()&&c(e.value.skills)},[]);(0,W.useEffect)(()=>{E()},[E]),(0,W.useEffect)(()=>{D()},[D]),(0,W.useEffect)(()=>{O()},[O]);let te=async e=>{g(e);let t=await P.removeSkill(e);t.isErr()?Ke(t.error):(await E(),z.success(`Skill "${e}" removed`)),g(null)},ne=async e=>{v(e.identifier);let t=await P.addSkill(e.identifier);t.isErr()?Ke(t.error):(await E(),z.success(`Skill "${e.name}" installed successfully`)),v(null)},re=async()=>{let e=x.trim();if(!e)return;w(!0);let t=await P.addSkill(e);t.isErr()?Ke(t.error):(await E(),z.success(`Skill "${e}" installed successfully`),S(``),b(!1)),w(!1)},k=r.filter(e=>e.scope===`project`),ie=r.filter(e=>e.scope!==`project`),ae=new Set(r.map(e=>e.name));return(0,G.jsxs)(`div`,{className:`space-y-6`,children:[k.length>0&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground mb-2 text-xs font-semibold tracking-wider uppercase`,children:e(`skills.projectSkills`)}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:k.map((e,t)=>(0,G.jsx)(_i,{skill:e,onRemove:()=>{},removing:!1},`project-${e.source}-${e.name}-${t}`))})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:e(`skills.globalSkills`)}),(0,G.jsxs)(R,{variant:`ghost`,size:`sm`,onClick:()=>b(!y),className:`px-2`,children:[y?(0,G.jsx)(ee,{className:`icon-xs mr-1`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(y?`skills.cancel`:`skills.addCustom`)]})]}),y&&(0,G.jsxs)(`div`,{className:`border-border/50 bg-muted/30 mb-3 space-y-2 rounded-lg border p-3`,children:[(0,G.jsxs)(`label`,{className:`text-muted-foreground block text-xs`,children:[e(`skills.skillIdentifier`),` (e.g.`,` `,(0,G.jsx)(`code`,{className:`bg-muted rounded px-1 py-0.5 text-xs`,children:`owner/repo@skill-name`}),`)`]}),(0,G.jsxs)(`div`,{className:`flex gap-2`,children:[(0,G.jsx)(V,{type:`text`,value:x,onChange:e=>S(e.target.value),placeholder:`vercel-labs/agent-skills@nextjs-best-practices`,className:`h-8 flex-1 px-2 font-mono text-xs`,onKeyDown:e=>e.key===`Enter`&&re()}),(0,G.jsxs)(R,{size:`sm`,onClick:re,disabled:!x.trim()||C,className:`h-8 text-xs`,children:[C?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(`skills.install`)]})]})]}),u?(0,G.jsx)(H,{fill:!1,layout:`inline`,className:`py-6`,testId:`skills-loading`,label:e(`skills.loadingSkills`)}):ie.length===0?(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`skills.noGlobalSkills`)}):(0,G.jsx)(`div`,{className:`space-y-1.5`,children:ie.map((e,t)=>(0,G.jsx)(_i,{skill:e,onRemove:()=>te(e.name),removing:h===e.name},`global-${e.source}-${e.name}-${t}`))})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:e(`plugins.installedPlugins`)}),(0,G.jsx)(`span`,{className:`text-muted-foreground/60 text-xs`,children:e(`plugins.managedByClaudeCode`)})]}),p?(0,G.jsx)(H,{fill:!1,layout:`inline`,className:`py-6`,testId:`skills-loading-plugins`,label:e(`plugins.loadingPlugins`)}):a.length===0?(0,G.jsx)(`div`,{className:`text-muted-foreground py-4 text-center text-sm`,children:e(`plugins.noPlugins`)}):(0,G.jsx)(`div`,{className:`space-y-1.5`,children:a.map(e=>(0,G.jsx)(bi,{plugin:e},e.name))})]}),s.length>0&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground mb-2 text-xs font-semibold tracking-wider uppercase`,children:e(`skills.recommendedSkills`)}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:s.map(e=>(0,G.jsx)(vi,{skill:e,installed:ae.has(e.name),onInstall:()=>ne(e),installing:_===e.identifier},e.identifier))})]})]})}var Si=/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|--?\w[\w-]*|\$\w+|&&|\|\||[|;]|(?:^|\s)(bun|bunx|npm|npx|node|git|oxlint|oxfmt|tsc|echo|exit|cd|mkdir|rm|cp|mv|cat|grep|sed|awk|curl|wget|make|cargo|docker|pytest|jest|vitest|secretlint|eslint|prettier)(?=\s|$))/g;function Ci({command:e}){let t=[],n=0;for(let r of e.matchAll(Si)){let i=r[0],a=r.index;if(a>n&&t.push((0,G.jsx)(`span`,{className:`text-foreground/80`,children:e.slice(n,a)},`t${n}`)),r[2]){let e=i.slice(0,i.indexOf(r[2]));e&&t.push((0,G.jsx)(`span`,{className:`text-foreground/80`,children:e},`p${a}`)),t.push((0,G.jsx)(`span`,{className:`text-[#e5c07b]`,children:r[2]},`c${a}`))}else i.startsWith(`"`)||i.startsWith(`'`)?t.push((0,G.jsx)(`span`,{className:`text-[#98c379]`,children:i},`s${a}`)):i.startsWith(`-`)?t.push((0,G.jsx)(`span`,{className:`text-[#61afef]`,children:i},`f${a}`)):i.startsWith(`$`)?t.push((0,G.jsx)(`span`,{className:`text-[#c678dd]`,children:i},`v${a}`)):t.push((0,G.jsx)(`span`,{className:`text-[#c678dd]`,children:i},`o${a}`));n=a+i.length}return n<e.length&&t.push((0,G.jsx)(`span`,{className:`text-foreground/80`,children:e.slice(n)},`e${n}`)),(0,G.jsx)(`div`,{className:`mt-0.5 min-w-0 truncate overflow-hidden rounded px-1.5 py-0.5 font-mono text-[11px]`,children:t.length>0?t:e})}function wi(){let{t:e}=M(),t=U(e=>e.selectedProjectId),r=Ne(e=>e.projects),[i,a]=(0,W.useState)([]),[o,s]=(0,W.useState)(!1),[c,u]=(0,W.useState)(null),[f,p]=(0,W.useState)(``),[m,h]=(0,W.useState)(``),g=(0,W.useCallback)(async()=>{if(!t)return;let e=await P.listCommands(t);e.isOk()&&a(e.value)},[t]);(0,W.useEffect)(()=>{g()},[g]);let _=Ve(e=>e.tabs),v=new Set;for(let e of _)e.commandId&&e.alive&&v.add(e.commandId);let b=async()=>{if(t){if(!f.trim()){z.error(e(`startup.labelRequired`));return}if(!m.trim()){z.error(e(`startup.commandRequired`));return}(await P.addCommand(t,f.trim(),m.trim())).isOk()?(ee(),s(!1),g(),z.success(e(`startup.commandAdded`))):z.error(e(`startup.commandAddError`))}},x=async n=>{if(t){if(!f.trim()){z.error(e(`startup.labelRequired`));return}if(!m.trim()){z.error(e(`startup.commandRequired`));return}(await P.updateCommand(t,n,f.trim(),m.trim())).isOk()?(u(null),ee(),g(),z.success(e(`startup.commandUpdated`))):z.error(e(`startup.commandUpdateError`))}},C=async n=>{t&&((await P.deleteCommand(t,n)).isOk()?(g(),z.success(e(`startup.commandDeleted`))):z.error(e(`startup.commandDeleteError`)))},T=e=>{if(!t)return;let n=r.find(e=>e.id===t);n&&Ve.getState().addTab({id:crypto.randomUUID(),label:e.label,cwd:n.path,alive:!0,commandId:e.id,projectId:t,type:`pty`,initialCommand:e.command})},E=e=>{let t=Ve.getState(),n=t.tabs.find(t=>t.commandId===e.id&&t.alive);if(n){let e=jt();e&&e.connected&&e.emit(`pty:kill`,{id:n.id}),t.removeTab(n.id)}},D=e=>{u(e.id),p(e.label),h(e.command),s(!1)},ee=()=>{p(``),h(``)},O=()=>{u(null),s(!1),ee()};return t?(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(i.length>0||o)&&(0,G.jsx)(`div`,{className:`flex items-center justify-end`,children:(0,G.jsxs)(R,{variant:`outline`,size:`sm`,className:`gap-1.5`,onClick:()=>{O(),s(!0)},children:[(0,G.jsx)(d,{className:`icon-sm`}),e(`startup.addCommand`)]})}),i.length===0&&!o&&(0,G.jsxs)(`div`,{className:`py-8 text-center`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground mb-3 text-sm`,children:e(`startup.noCommands`)}),(0,G.jsxs)(R,{variant:`outline`,size:`sm`,className:`gap-1.5`,onClick:()=>s(!0),children:[(0,G.jsx)(d,{className:`icon-sm`}),e(`startup.addFirst`)]})]}),i.map(t=>{let r=v.has(t.id);return c===t.id?(0,G.jsxs)(`div`,{className:`settings-form-panel`,children:[(0,G.jsxs)(`div`,{className:`grid grid-cols-4 gap-2`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`startup.label`)}),(0,G.jsx)(V,{className:`settings-form-input`,placeholder:e(`startup.label`),value:f,onChange:e=>p(e.target.value),autoFocus:!0})]}),(0,G.jsxs)(`div`,{className:`col-span-3`,children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`startup.command`)}),(0,G.jsx)(V,{className:`settings-form-input font-mono`,placeholder:e(`startup.command`),value:m,onChange:e=>h(e.target.value),onKeyDown:e=>{e.key===`Enter`&&x(t.id),e.key===`Escape`&&O()}})]})]}),(0,G.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-1`,children:[(0,G.jsxs)(R,{variant:`ghost`,size:`sm`,onClick:O,children:[(0,G.jsx)(w,{className:`icon-sm mr-1`}),e(`common.cancel`)]}),(0,G.jsxs)(R,{size:`sm`,onClick:()=>x(t.id),children:[(0,G.jsx)(se,{className:`icon-sm mr-1`}),e(`common.save`)]})]})]},t.id):(0,G.jsxs)(`div`,{className:`settings-item-card group flex items-center justify-between gap-3`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[r&&(0,G.jsx)(l,{className:`icon-sm text-status-success shrink-0 animate-spin`}),(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:t.label})]}),(0,G.jsx)(Ci,{command:t.command})]}),(0,G.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100`,children:[r?(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>E(t),className:`text-status-error hover:text-status-error/80`,children:(0,G.jsx)(n,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:e(`startup.stop`)})]}):(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>T(t),className:`text-status-success hover:text-status-success/80`,children:(0,G.jsx)(S,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:e(`startup.run`)})]}),(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>D(t),className:`text-muted-foreground`,children:(0,G.jsx)(te,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:e(`startup.edit`)})]}),(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>C(t.id),className:`text-muted-foreground hover:text-status-error`,children:(0,G.jsx)(y,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:e(`startup.delete`)})]})]})]},t.id)}),o&&(0,G.jsxs)(`div`,{className:`settings-form-panel`,children:[(0,G.jsxs)(`div`,{className:`grid grid-cols-4 gap-2`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`startup.label`)}),(0,G.jsx)(V,{className:`h-auto py-1.5`,placeholder:e(`startup.label`),value:f,onChange:e=>p(e.target.value),autoFocus:!0})]}),(0,G.jsxs)(`div`,{className:`col-span-3`,children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`startup.command`)}),(0,G.jsx)(V,{className:`h-auto py-1.5 font-mono`,placeholder:e(`startup.commandPlaceholder`),value:m,onChange:e=>h(e.target.value),onKeyDown:e=>{e.key===`Enter`&&b(),e.key===`Escape`&&O()}})]})]}),(0,G.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-1`,children:[(0,G.jsxs)(R,{variant:`ghost`,size:`sm`,onClick:O,children:[(0,G.jsx)(w,{className:`icon-sm mr-1`}),e(`common.cancel`)]}),(0,G.jsxs)(R,{size:`sm`,onClick:b,children:[(0,G.jsx)(se,{className:`icon-sm mr-1`}),e(`startup.addCommand`)]})]})]})]}):(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`startup.noCommands`)})}function Ti({worktree:e,onRemove:t,removing:n}){return(0,G.jsxs)(`div`,{className:`border-border/50 bg-card flex items-center justify-between gap-3 rounded-md border px-3 py-2.5`,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,G.jsx)(ie,{className:`icon-base text-status-info shrink-0`}),(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.branch})}),(0,G.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2`,children:[(0,G.jsx)(oe,{className:`icon-xs text-muted-foreground/70 shrink-0`}),(0,G.jsx)(`span`,{className:`text-muted-foreground/70 truncate font-mono text-xs`,children:e.path})]}),e.commit&&(0,G.jsx)(`span`,{className:`text-muted-foreground/70 font-mono text-xs`,children:e.commit.slice(0,8)})]})]}),!e.isMain&&(0,G.jsx)(R,{variant:`ghost`,size:`icon-xs`,onClick:t,disabled:n,className:`text-muted-foreground hover:text-destructive shrink-0`,children:n?(0,G.jsx)(l,{className:`icon-sm animate-spin`}):(0,G.jsx)(y,{className:`icon-sm`})})]})}function Ei(){let{t:e}=M(),t=U(e=>e.projects),n=U(e=>e.selectedProjectId),[r,i]=(0,W.useState)([]),[a,o]=(0,W.useState)([]),[s,c]=(0,W.useState)(!1),[u,f]=(0,W.useState)(null),[p,m]=(0,W.useState)(null),[h,g]=(0,W.useState)(null),[_,v]=(0,W.useState)(!1),[y,b]=(0,W.useState)(``),[x,S]=(0,W.useState)(``),[w,T]=(0,W.useState)(!1),E=n?t.find(e=>e.id===n):t[0],D=(0,W.useCallback)(async()=>{if(!E)return;c(!0),f(null);let e=await P.listWorktrees(E.id);e.isOk()?i(e.value):f(e.error.message),c(!1)},[E?.id]),O=(0,W.useCallback)(async()=>{if(!E)return;let e=await P.listBranches(E.id);if(e.isOk()){let t=e.value;o(t.branches),t.branches.length>0&&S(e=>e||t.defaultBranch||t.branches[0])}else console.error(`Failed to load branches:`,e.error),f(e.error.message||`Failed to load branches`)},[E?.id]);(0,W.useEffect)(()=>{D(),O()},[D,O]);let te=async()=>{let e=x||a[0];if(!y.trim()||!E)return;if(!e){f(`No base branch available. Make sure the project has at least one commit.`);return}T(!0),f(null);let t=await P.createWorktree({projectId:E.id,branchName:y.trim(),baseBranch:e});t.isErr()?f(t.error.message):(await D(),b(``),v(!1)),T(!1)};return E?(0,G.jsxs)(`div`,{className:`space-y-6`,children:[u&&(0,G.jsxs)(`div`,{className:`bg-destructive/10 text-destructive flex items-center gap-2 rounded-md px-3 py-2 text-xs`,children:[(0,G.jsx)(C,{className:`icon-sm shrink-0`}),(0,G.jsx)(`span`,{children:u}),(0,G.jsx)(`button`,{onClick:()=>f(null),className:`ml-auto text-xs underline`,children:e(`worktreeSettings.dismiss`)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:e(`worktreeSettings.worktrees`)}),(0,G.jsxs)(R,{variant:`ghost`,size:`sm`,onClick:()=>v(!_),className:`px-2`,children:[_?(0,G.jsx)(ee,{className:`icon-xs mr-1`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(_?`worktreeSettings.cancel`:`worktreeSettings.createWorktree`)]})]}),_&&(a.length===0?(0,G.jsxs)(`div`,{className:`bg-status-pending/10 text-status-pending/80 mb-3 flex items-center gap-2 rounded-md px-3 py-2 text-xs`,children:[(0,G.jsx)(C,{className:`icon-sm shrink-0`}),(0,G.jsx)(`span`,{children:`No branches found. Make sure the project has at least one commit.`})]}):(0,G.jsxs)(`div`,{className:`border-border/50 bg-muted/30 mb-3 space-y-3 rounded-lg border p-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`text-muted-foreground mb-1 block text-xs`,children:e(`worktreeSettings.branchName`)}),(0,G.jsx)(V,{type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:`feature/my-new-branch`,className:`h-8 px-2 font-mono text-xs`,onKeyDown:e=>e.key===`Enter`&&te()})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`text-muted-foreground mb-1 block text-xs`,children:e(`worktreeSettings.baseBranch`)}),(0,G.jsx)(Bt,{branches:a,selected:x,onChange:S,triggerClassName:`flex h-8 w-full items-center gap-2 rounded-md border border-input bg-background px-3 text-xs transition-colors hover:bg-accent/50 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring/50`,side:`bottom`,align:`start`,showCopy:!1,placeholder:`main (default)`})]}),(0,G.jsxs)(R,{size:`sm`,onClick:te,disabled:!y.trim()||w,className:`w-full`,children:[w?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(w?`worktreeSettings.creating`:`worktreeSettings.createWorktree`)]})]})),s?(0,G.jsx)(H,{fill:!1,layout:`inline`,className:`py-6`,testId:`worktree-settings-loading`,label:e(`worktreeSettings.loadingWorktrees`)}):r.length===0?(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`worktreeSettings.noWorktrees`)}):(0,G.jsx)(`div`,{className:`space-y-1.5`,children:r.map(e=>(0,G.jsx)(Ti,{worktree:e,onRemove:()=>g(e),removing:p===e.path},e.path))})]}),(0,G.jsx)(wt,{open:!!h,onOpenChange:e=>{e||g(null)},title:e(`dialog.deleteWorktree`),description:e(`dialog.deleteWorktreeDesc`,{branch:h?.branch}),cancelLabel:e(`common.cancel`),confirmLabel:e(`common.delete`),onCancel:()=>g(null),onConfirm:async()=>{if(!E||!h)return;let{path:t,branch:n}=h;g(null),m(t);let r=await P.removeWorktree(E.id,t);r.isOk()?(await D(),z.success(e(`toast.worktreeDeleted`,{branch:n}))):z.error(e(`toast.worktreeDeleteFailed`,{message:r.error.message})),m(null)}})]}):(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`worktreeSettings.noProject`)})}var Di=(0,W.lazy)(()=>de(()=>import(`./ProjectHooksSettings-CIaY32WM.js`).then(e=>({default:e.ProjectHooksSettings})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29])));function Oi({page:e,label:t}){let{t:n}=M();switch(e){case`general`:return(0,G.jsx)(Ur,{});case`agent-resources`:return(0,G.jsx)(Jt,{});case`mcp-server`:return(0,G.jsx)(ci,{});case`skills`:return(0,G.jsx)(xi,{});case`worktrees`:return(0,G.jsx)(Ei,{});case`startup-commands`:return(0,G.jsx)(wi,{});case`project-config`:return(0,G.jsx)(fi,{});case`hooks`:return(0,G.jsx)(W.Suspense,{fallback:(0,G.jsx)(H,{label:`Loading…`,className:`min-h-[40vh]`}),children:(0,G.jsx)(Di,{})});case`automations`:return(0,G.jsx)(on,{});case`pipelines`:return(0,G.jsx)(ui,{});case`archived-threads`:return(0,G.jsx)($t,{});case`collaborators`:return(0,G.jsx)(gi,{});default:return(0,G.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:n(`settings.comingSoon`,{label:t})})}}export{Ci as n,Zt as r,Oi as t};
4
+ hsl(${l}, 100%, 50%)`,[l]),p=(0,W.useEffectEvent)(e=>{if(!n.current)return;let t=n.current.getBoundingClientRect(),r=Math.max(0,Math.min(1,(e.clientX-t.left)/t.width)),i=Math.max(0,Math.min(1,(e.clientY-t.top)/t.height));o(r),c(i),u(r*100),d((r<.01?100:50+50*(1-r))*(1-i))});return(0,W.useEffect)(()=>{if(!r)return;let e=e=>p(e),t=()=>i(!1);return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,t),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,t)}},[r]),(0,G.jsx)(`div`,{className:I(`relative size-full cursor-crosshair rounded`,e),onPointerDown:e=>{e.preventDefault(),i(!0),p(e.nativeEvent)},ref:n,style:{background:f},...t,children:(0,G.jsx)(`div`,{className:`pointer-events-none absolute size-4 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white`,style:{left:`${a*100}%`,top:`${s*100}%`,boxShadow:`0 0 0 1px rgba(0,0,0,0.5)`}})})});Ar.displayName=`ColorPickerSelection`;var jr=({className:e,...t})=>{let{hue:n,setHue:r}=Or();return(0,G.jsxs)(Tn,{className:I(`relative flex h-4 w-full touch-none`,e),max:360,onValueChange:([e])=>r(e),step:1,value:[n],...t,children:[(0,G.jsx)(Mn,{className:`relative my-0.5 h-3 w-full grow rounded-full bg-[linear-gradient(90deg,#FF0000,#FFFF00,#00FF00,#00FFFF,#0000FF,#FF00FF,#FF0000)]`,children:(0,G.jsx)(Pn,{className:`absolute h-full`})}),(0,G.jsx)(Hn,{className:`border-primary/50 bg-background focus-visible:ring-ring block size-4 rounded-full border shadow-sm transition-colors focus-visible:ring-1 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50`})]})},Mr=({className:e,...t})=>{let{alpha:n,setAlpha:r}=Or();return(0,G.jsxs)(Tn,{className:I(`relative flex h-4 w-full touch-none`,e),max:100,onValueChange:([e])=>r(e),step:1,value:[n],...t,children:[(0,G.jsxs)(Mn,{className:`relative my-0.5 h-3 w-full grow rounded-full`,style:{background:`url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==") left center`},children:[(0,G.jsx)(`div`,{className:`absolute inset-0 rounded-full bg-linear-to-r from-transparent to-black/50`}),(0,G.jsx)(Pn,{className:`absolute h-full rounded-full bg-transparent`})]}),(0,G.jsx)(Hn,{className:`border-primary/50 bg-background focus-visible:ring-ring block size-4 rounded-full border shadow-sm transition-colors focus-visible:ring-1 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50`})]})},Nr=({className:e,...t})=>{let{setHue:n,setSaturation:r,setLightness:i,setAlpha:a}=Or();return(0,G.jsx)(R,{className:I(`shrink-0 text-muted-foreground`,e),onClick:async()=>{try{let[e,t,o]=Z((await new EyeDropper().open()).sRGBHex).hsl().array();n(e),r(t),i(o),a(100)}catch{}},size:`icon`,type:`button`,variant:`outline`,...t,children:(0,G.jsx)(k,{size:16})})},Pr=[`hex`,`rgb`,`css`,`hsl`],Fr=({className:e,...t})=>{let{mode:n,setMode:r}=Or();return(0,G.jsxs)(Tt,{onValueChange:r,value:n,children:[(0,G.jsx)(bt,{className:I(`h-8 w-20 shrink-0 text-xs`,e),...t,children:(0,G.jsx)(ht,{placeholder:`Mode`})}),(0,G.jsx)(rt,{children:Pr.map(e=>(0,G.jsx)(B,{className:`text-xs`,value:e,children:e.toUpperCase()},e))})]})},Ir=({value:e,onCommit:t,className:n,...r})=>{let[i,a]=(0,W.useState)(e),[o,s]=(0,W.useState)(!1);return(0,W.useEffect)(()=>{o||a(e)},[e,o]),(0,G.jsx)(V,{...r,value:i,className:n,onChange:e=>{let n=e.target.value;a(n),t(n)},onFocus:e=>{s(!0),e.target.select()},onBlur:()=>{s(!1),a(e)},onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()}})},Lr=({alpha:e,onAlpha:t,className:n})=>(0,G.jsxs)(`div`,{className:`relative`,children:[(0,G.jsx)(Ir,{type:`text`,value:String(Math.round(e)),onCommit:e=>{let n=Number(e);Number.isFinite(n)&&t(Math.max(0,Math.min(100,n)))},className:I(`h-8 w-13 rounded-l-none bg-secondary px-2 text-xs shadow-none`,n)}),(0,G.jsx)(`span`,{className:`text-muted-foreground pointer-events-none absolute top-1/2 right-2 -translate-y-1/2 text-xs`,children:`%`})]}),Rr=({className:e,...t})=>{let{hue:n,saturation:r,lightness:i,alpha:a,mode:o,setColor:s,setAlpha:c}=Or(),l=Z.hsl(n,r,i,a/100);if(o===`hex`){let n=l.hex();return(0,G.jsxs)(`div`,{className:I(`relative flex w-full items-center -space-x-px rounded-md shadow-xs`,e),...t,children:[(0,G.jsx)(Ir,{className:`bg-secondary h-8 rounded-r-none px-2 text-xs shadow-none`,type:`text`,value:n,onCommit:e=>{let t=Er(e);t&&s(t.alpha(a/100))}}),(0,G.jsx)(Lr,{alpha:a,onAlpha:c})]})}if(o===`rgb`){let n=l.rgb().array().map(e=>Math.round(e)),r=(e,t)=>{let r=Number(t);if(!Number.isFinite(r))return;let i=[...n];i[e]=Math.max(0,Math.min(255,r)),s(Z.rgb(i[0],i[1],i[2]).alpha(a/100))};return(0,G.jsxs)(`div`,{className:I(`flex items-center -space-x-px rounded-md shadow-xs`,e),...t,children:[n.map((e,t)=>(0,G.jsx)(Ir,{className:I(`h-8 rounded-r-none bg-secondary px-2 text-xs shadow-none`,t&&`rounded-l-none`),type:`text`,value:String(e),onCommit:e=>r(t,e)},t)),(0,G.jsx)(Lr,{alpha:a,onAlpha:c})]})}if(o===`css`){let n=`rgba(${l.rgb().array().map(e=>Math.round(e)).join(`, `)}, ${Math.round(a)}%)`;return(0,G.jsx)(`div`,{className:I(`w-full rounded-md shadow-xs`,e),...t,children:(0,G.jsx)(Ir,{className:`bg-secondary h-8 w-full px-2 text-xs shadow-none`,type:`text`,value:n,onCommit:e=>{let t=Er(e);t&&s(t)}})})}if(o===`hsl`){let n=l.hsl().array().map(e=>Math.round(e)),r=(e,t)=>{let r=Number(t);if(!Number.isFinite(r))return;let i=[...n];i[e]=Math.max(0,Math.min(e===0?360:100,r)),s(Z.hsl(i[0],i[1],i[2]).alpha(a/100))};return(0,G.jsxs)(`div`,{className:I(`flex items-center -space-x-px rounded-md shadow-xs`,e),...t,children:[n.map((e,t)=>(0,G.jsx)(Ir,{className:I(`h-8 rounded-r-none bg-secondary px-2 text-xs shadow-none`,t&&`rounded-l-none`),type:`text`,value:String(e),onCommit:e=>r(t,e)},t)),(0,G.jsx)(Lr,{alpha:a,onAlpha:c})]})}return null},zr=[`#7CB9E8`,`#F4A4A4`,`#A8D5A2`,`#F9D98C`,`#C3A6E0`,`#F2A6C8`,`#89D4CF`,`#F9B97C`];function Br({projectId:e,currentColor:t,onSave:n}){return(0,G.jsxs)(`div`,{className:`border-border/50 flex flex-col gap-3 border-b px-4 py-3.5 last:border-b-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:`Project Color`}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:`Pick any color for this project`})]}),(0,G.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,G.jsx)(`button`,{onClick:()=>n(e,{color:null}),className:I(`size-7 rounded-md border-2 transition-all flex items-center justify-center`,t?`border-border hover:border-muted-foreground`:`border-primary shadow-xs`),"aria-label":`No color`,"aria-pressed":!t,"data-testid":`project-color-none`,children:(0,G.jsx)(`div`,{className:`from-muted-foreground/20 to-muted-foreground/40 size-4 rounded-sm bg-linear-to-br`})}),zr.map(r=>(0,G.jsx)(`button`,{onClick:()=>n(e,{color:r}),className:I(`size-7 rounded-md border-2 transition-all`,t===r?`border-primary shadow-xs scale-110`:`border-transparent hover:border-muted-foreground`),style:{backgroundColor:r},"aria-label":`Color ${r}`,"aria-pressed":t===r},r))]}),(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsxs)(Ae,{children:[(0,G.jsx)(ze,{asChild:!0,children:(0,G.jsx)(`button`,{type:`button`,"aria-label":`Open custom color picker`,"data-testid":`project-color-custom-trigger`,className:I(`size-8 rounded-lg border-2 shadow-xs cursor-pointer transition-all hover:scale-105`,t?`border-primary/50`:`border-border`),style:{backgroundColor:t||`transparent`},children:!t&&(0,G.jsx)(`div`,{className:`from-muted-foreground/10 to-muted-foreground/30 flex size-full items-center justify-center rounded-md bg-linear-to-br`,children:(0,G.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`-`})})})}),(0,G.jsx)(ut,{className:`w-72 p-3`,align:`start`,children:(0,G.jsxs)(kr,{value:t||`#7CB9E8`,onChange:([t,r,i])=>{n(e,{color:`#`+[t,r,i].map(e=>Math.round(e).toString(16).padStart(2,`0`)).join(``)})},children:[(0,G.jsx)(Ar,{className:`h-40 rounded-lg`}),(0,G.jsx)(jr,{}),(0,G.jsx)(Mr,{}),(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(Nr,{}),(0,G.jsx)(Fr,{}),(0,G.jsx)(Rr,{})]})]})})]}),(0,G.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:`Custom color`}),t&&(0,G.jsx)(`span`,{className:`text-muted-foreground font-mono text-xs`,children:t})]})]})}var Vr=[`Not a git repository`,`nested inside another git repository`];function Hr({projectId:e,currentPath:t}){let{t:n}=M(),r=Ne(e=>e.updateProject),[i,a]=(0,W.useState)(t),[o,s]=(0,W.useState)(t),[c,l]=(0,W.useState)(!1),[u,d]=(0,W.useState)(!1),[f,p]=(0,W.useState)(!1);t!==o&&(s(t),a(t));let m=i.trim()!==t&&i.trim().length>0,h=async t=>{let i=await r(e,{path:t});return i.isOk()?(z.success(n(`settings.projectSaved`),{id:`project-settings-saved`}),{ok:!0}):{ok:!1,message:i.error.message}};return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`div`,{className:`border-border/50 flex flex-col gap-2 border-b px-4 py-3.5 last:border-b-0`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:n(`settings.projectPath`,`Project Path`)}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:n(`settings.projectPathDesc`,`Absolute path to the git repository. Existing threads keep their original worktrees; new threads will use the updated path.`)})]}),(0,G.jsxs)(`div`,{className:`flex gap-2`,children:[(0,G.jsx)(V,{"data-testid":`settings-project-path`,className:`flex-1`,value:i,onChange:e=>a(e.target.value),placeholder:`/absolute/path/to/repo`}),(0,G.jsx)(Mt,{"data-testid":`settings-project-path-browse`,variant:`outline`,size:`icon`,onClick:()=>l(!0),tooltip:n(`sidebar.browseFolder`,`Browse folder`),"aria-label":n(`sidebar.browseFolder`,`Browse folder`),children:(0,G.jsx)(oe,{className:`icon-base`})}),(0,G.jsx)(R,{"data-testid":`settings-project-path-save`,size:`sm`,disabled:!m||u,onClick:async()=>{d(!0);try{let e=await h(i.trim());e.ok||(Vr.some(t=>e.message.includes(t))?p(!0):z.error(e.message,{id:`project-settings-saved`}))}finally{d(!1)}},children:u?n(`common.loading`,`Saving…`):n(`common.save`,`Save`)})]})]}),c&&(0,G.jsx)(Nt,{onSelect:e=>{a(e),l(!1)},onClose:()=>l(!1)}),(0,G.jsx)(Fe,{open:f,onOpenChange:p,children:(0,G.jsxs)(xt,{children:[(0,G.jsxs)(Je,{children:[(0,G.jsx)(ke,{children:n(`confirm.gitInitTitle`,{defaultValue:`Initialize Git Repository`})}),(0,G.jsx)(Le,{children:n(`confirm.notGitRepo`,{path:i.trim()})})]}),(0,G.jsxs)(Xe,{children:[(0,G.jsx)(R,{"data-testid":`settings-git-init-cancel`,variant:`outline`,onClick:()=>p(!1),children:n(`common.cancel`,{defaultValue:`Cancel`})}),(0,G.jsx)(R,{"data-testid":`settings-git-init-confirm`,onClick:async()=>{p(!1),d(!0);try{let e=i.trim(),t=await P.gitInit(e);if(t.isErr()){z.error(t.error.message,{id:`project-settings-saved`});return}let n=await h(e);n.ok||z.error(n.message,{id:`project-settings-saved`})}finally{d(!1)}},children:n(`confirm.gitInitAction`,{defaultValue:`Initialize`})})]})]})})]})}function Ur(){let{toolPermissions:e,setToolPermission:t,resetToolPermissions:n}=xe(Ye(e=>({toolPermissions:e.toolPermissions,setToolPermission:e.setToolPermission,resetToolPermissions:e.resetToolPermissions}))),r=Ne(e=>e.selectedProjectId),i=Ne(e=>e.projects).find(e=>e.id===r),a=Ne(e=>e.updateProject),{t:o}=M(),s=(0,W.useCallback)(async(e,t)=>{let n=await a(e,t);if(n.isErr()){z.error(n.error.message,{id:`project-settings-saved`});return}z.success(o(`settings.projectSaved`),{id:`project-settings-saved`})},[a,o]),c=(0,W.useCallback)((e,n)=>{t(e,n),z.success(o(`settings.saved`),{id:`settings-saved`})},[t,o]),l=(0,W.useCallback)(()=>{n(),z.success(o(`settings.saved`),{id:`settings-saved`})},[n,o]),[u,d]=(0,W.useState)([]);(0,W.useEffect)(()=>{i&&he.listBranches(i.id).then(e=>{e.isOk()&&d(e.value.branches)})},[i?.id]);let f=zt(e=>e.byProvider),p=zt(e=>e.fetch);(0,W.useEffect)(()=>{for(let e of _e)p(e)},[p]);let g=i?.defaultProvider||`claude`,_=(()=>{let e=Lt(g,o),t=f[g];if(t?.status===`ready`){let n=new Set(e.map(e=>e.value));for(let r of t.models)n.has(r.modelId)||(e.push({value:r.modelId,label:r.name||r.modelId}),n.add(r.modelId))}return e})();return(0,G.jsxs)(G.Fragment,{children:[i&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground px-1 pb-2 text-xs font-semibold tracking-wider uppercase`,children:`Project`}),(0,G.jsxs)(`div`,{className:`border-border/50 mb-6 overflow-hidden rounded-lg border`,children:[(0,G.jsx)(Hr,{projectId:i.id,currentPath:i.path}),(0,G.jsx)(Br,{projectId:i.id,currentColor:i.color,onSave:s}),(0,G.jsx)(K,{title:o(`settings.followUpMode`),description:o(`settings.followUpModeDesc`),children:(0,G.jsx)(cn,{value:i.followUpMode||`queue`,onChange:e=>s(i.id,{followUpMode:e}),options:[{value:`interrupt`,label:o(`settings.followUpInterrupt`),testId:`settings-followup-interrupt`},{value:`queue`,label:o(`settings.followUpQueue`),testId:`settings-followup-queue`},{value:`steer`,label:o(`settings.followUpSteer`),testId:`settings-followup-steer`}]})}),(0,G.jsx)(K,{title:o(`settings.fastMode`),description:o(`settings.fastModeDesc`),children:(0,G.jsx)(cn,{value:i.fastMode?`on`:`off`,onChange:e=>s(i.id,{fastMode:e===`on`}),options:[{value:`off`,label:o(`settings.fastModeOff`),testId:`settings-fastmode-off`},{value:`on`,label:o(`settings.fastModeOn`),testId:`settings-fastmode-on`}]})}),(0,G.jsx)(K,{title:o(`settings.projectDefaultModel`,`Default Model`),description:o(`settings.projectDefaultModelDesc`,`Provider and model for new threads in this project`),children:(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(sn,{value:i.defaultProvider||`claude`,onChange:e=>{let t=e;s(i.id,{defaultProvider:t,defaultModel:ge(t)})},options:It.map(e=>({value:e.value,label:e.label})),placeholder:o(`settings.selectProvider`),searchPlaceholder:o(`settings.searchProvider`)}),(0,G.jsx)(sn,{value:i.defaultModel||ge(i.defaultProvider||`claude`),onChange:e=>s(i.id,{defaultModel:e}),options:_,placeholder:o(`settings.selectModel`),searchPlaceholder:o(`settings.searchModel`)})]})}),(0,G.jsx)(K,{title:o(`settings.projectDefaultMode`,`Default Thread Mode`),description:o(`settings.projectDefaultModeDesc`,`Local or worktree for new threads`),children:(0,G.jsx)(cn,{value:i.defaultMode||`local`,onChange:e=>s(i.id,{defaultMode:e}),options:[{value:`local`,label:o(`thread.mode.local`),icon:(0,G.jsx)(m,{className:`icon-xs`}),testId:`settings-thread-mode-local`},{value:`worktree`,label:o(`thread.mode.worktree`),icon:(0,G.jsx)(ne,{className:`icon-xs`}),testId:`settings-thread-mode-worktree`}]})}),(0,G.jsx)(K,{title:o(`settings.projectDefaultPermission`,`Default Permission Mode`),description:o(`settings.projectDefaultPermissionDesc`,`Permission mode for new threads`),children:(0,G.jsx)(cn,{value:i.defaultPermissionMode||`autoEdit`,onChange:e=>s(i.id,{defaultPermissionMode:e}),options:[{value:`ask`,label:o(`prompt.ask`)},{value:`plan`,label:o(`prompt.plan`)},{value:`auto`,label:o(`prompt.auto`)},{value:`autoEdit`,label:o(`prompt.autoEdit`)},{value:`confirmEdit`,label:o(`prompt.askBeforeEdits`)}]})}),(0,G.jsx)(K,{title:o(`settings.projectDefaultBranch`,`Default Branch`),description:o(`settings.projectDefaultBranchDesc`,`Branch pre-selected when creating new threads`),children:(0,G.jsx)(Bt,{branches:u,selected:i.defaultBranch||``,onChange:e=>{let t=e===`__git_default__`?null:e;s(i.id,{defaultBranch:t})},extraItems:[{key:`__git_default__`,label:o(`settings.gitDefault`,`Git default`),isSelected:!i.defaultBranch}],placeholder:o(`settings.gitDefault`,`Git default`),triggerClassName:`flex h-9 items-center justify-between gap-2 rounded-md border border-input bg-background px-3 text-xs hover:bg-accent/50`,side:`bottom`,align:`end`,showCopy:!1,testId:`settings-default-branch-trigger`})}),(0,G.jsx)(ln,{projectId:i.id,currentUrls:i.urls||[],onSave:s}),(0,G.jsx)(un,{projectId:i.id,currentPrompt:i.systemPrompt,onSave:s}),(0,G.jsx)(dn,{projectId:i.id,currentUrl:i.launcherUrl,onSave:s}),(0,G.jsx)(pn,{projectId:i.id}),(0,G.jsx)(fn,{projectId:i.id,currentTemplateId:i.defaultAgentTemplateId,onSave:s})]})]}),(0,G.jsx)(`h3`,{className:`text-muted-foreground mt-6 px-1 pb-2 text-xs font-semibold tracking-wider uppercase`,children:o(`settings.permissions`)}),(0,G.jsx)(`div`,{className:`border-border/50 overflow-hidden rounded-lg border`,children:(0,G.jsxs)(`div`,{className:`px-4 py-3.5`,children:[(0,G.jsx)(`p`,{className:`text-foreground text-sm font-medium`,children:o(`settings.toolPermissions`)}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 mb-3 text-xs`,children:o(`settings.toolPermissionsDesc`)}),(0,G.jsx)(`div`,{className:`space-y-1`,children:De.map(t=>(0,G.jsxs)(`div`,{className:`hover:bg-muted/50 flex items-center justify-between gap-3 rounded-md px-2 py-1.5 transition-colors`,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,G.jsx)(`span`,{className:`text-foreground font-mono text-sm`,children:t}),(0,G.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:o(Te[t]??t)})]}),(0,G.jsx)(cn,{value:e[t]??`allow`,onChange:e=>c(t,e),options:[{value:`allow`,label:o(`settings.allow`)},{value:`ask`,label:o(`settings.ask`)},{value:`deny`,label:o(`settings.deny`)}]})]},t))}),(0,G.jsx)(`div`,{className:`mt-3 flex justify-end`,children:(0,G.jsxs)(`button`,{onClick:()=>l(),"data-testid":`settings-reset-defaults`,className:`text-muted-foreground hover:bg-muted hover:text-foreground flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs transition-colors`,children:[(0,G.jsx)(h,{className:`icon-xs`}),o(`settings.resetDefaults`)]})})]})})]})}var Wr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`rounded-lg border bg-card text-card-foreground shadow-xs`,e),...t}));Wr.displayName=`Card`;var Gr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`flex flex-col space-y-1.5 p-6`,e),...t}));Gr.displayName=`CardHeader`;var Kr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`text-2xl font-semibold leading-none tracking-tight`,e),...t}));Kr.displayName=`CardTitle`;var qr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`text-sm text-muted-foreground`,e),...t}));qr.displayName=`CardDescription`;var Jr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`p-6 pt-0`,e),...t}));Jr.displayName=`CardContent`;var Yr=W.forwardRef(({className:e,...t},n)=>(0,G.jsx)(`div`,{ref:n,className:I(`flex items-center p-6 pt-0`,e),...t}));Yr.displayName=`CardFooter`;var Xr=`${JSON.stringify({env:{ENABLE_CLAUDEAI_MCP_SERVERS:`false`}},null,2)}\n`;function Zr(e){let t=e.replace(/[/\\]+$/,``),n=t.includes(`\\`)?`\\`:`/`;return`${t}${n}.claude${n}settings.json`}function Qr(e){let t=e.toLowerCase();return t.includes(`not found`)||t.includes(`enoent`)}async function $r(){let e=await P.browseRoots();if(e.isErr()){z.error(`Failed to open Claude settings`,{description:e.error.message});return}let t=Zr(e.value.home);await At.getState().openFile(t,{defaultContent:Xr,ifNotFound:Qr})}var ei=[{value:`claude`,label:`Claude Code`},{value:`codex`,label:`Codex`}];function ti(e){return e.startsWith(`claude.ai`)||e.startsWith(`claude_ai_`)}function ni({className:e}){let{t}=M();return(0,G.jsxs)(R,{type:`button`,variant:`outline`,size:`sm`,className:I(`h-6 px-2 text-xs`,e),"data-testid":`mcp-edit-claude-settings`,onClick:()=>void $r(),children:[(0,G.jsx)(a,{className:`icon-xs mr-1`}),t(`mcp.editClaudeSettings`)]})}function ri({server:e,toggling:t,isDisabled:n,onToggle:r}){let{t:i}=M(),a=e.toggleable===!1,o=ti(e.name),s=e.provider===`codex`?`mcp.externalToggleTooltipCodex`:o?`mcp.externalToggleTooltipClaudeAi`:`mcp.externalToggleTooltipPlugin`,c=(0,G.jsx)(vt,{"data-testid":`mcp-toggle-${e.name}`,checked:!n,onCheckedChange:e=>r(!e),disabled:t||a});return a?(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(`span`,{className:`inline-flex cursor-not-allowed`,"data-testid":`mcp-toggle-disabled-wrap-${e.name}`,children:c})}),(0,G.jsx)(N,{side:`left`,className:`max-w-xs p-3 text-left`,children:(0,G.jsx)(`p`,{className:`leading-snug`,children:i(s)})})]}):c}function ii({type:e}){return(0,G.jsxs)(tt,{variant:`outline`,size:`xs`,"data-testid":`mcp-protocol-badge-${e}`,className:I(`rounded-md border-transparent uppercase tracking-wider`,e===`http`?`bg-status-info/10 text-status-info/80`:e===`sse`?`bg-status-warning/10 text-status-warning/80`:`bg-status-success/10 text-status-success/80`),children:[e===`stdio`?(0,G.jsx)(ae,{className:`icon-2xs`}):(0,G.jsx)(O,{className:`icon-2xs`}),e]})}function ai({children:e,className:t,testId:n}){return(0,G.jsx)(tt,{variant:`outline`,size:`xs`,"data-testid":n,className:I(`rounded-md border-transparent font-medium`,t),children:e})}function oi({server:e,onRemove:t,removing:n,onToggle:r,toggling:a,onAuthenticate:o,authenticating:s,onSetToken:u,settingToken:d}){let{t:f}=M(),[p,m]=(0,W.useState)(!1),[h,g]=(0,W.useState)(``),_=e.disabled===!0,b=e.toggleable===!1&&ti(e.name),x=!_&&e.status===`needs_auth`;return(0,G.jsxs)(Wr,{"data-testid":`mcp-installed-card-${e.name}`,className:I(`flex flex-col shadow-none`,_?`border-border/30 opacity-60`:e.status===`needs_auth`?`border-amber-500/50`:e.status===`error`?`border-red-500/50`:void 0),children:[(0,G.jsxs)(Gr,{className:`flex flex-row items-start gap-3 space-y-0 p-4 pb-2`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,G.jsx)(Kr,{className:I(`truncate text-sm font-medium leading-snug`,_&&`text-muted-foreground`),children:e.name}),(0,G.jsx)(ii,{type:e.type}),!_&&e.status===`error`&&(0,G.jsxs)(ai,{testId:`mcp-status-error-${e.name}`,className:`bg-red-500/15 text-red-400`,children:[(0,G.jsx)(v,{className:`icon-2xs`}),f(`mcp.failed`)]}),_&&(0,G.jsx)(ai,{testId:`mcp-status-disabled-${e.name}`,className:`bg-muted text-muted-foreground`,children:f(`mcp.disabled`)}),e.toggleable===!1&&(0,G.jsx)(ai,{testId:`mcp-status-managed-${e.name}`,className:`bg-muted text-muted-foreground`,children:f(`mcp.managedExternally`)})]}),(0,G.jsx)(qr,{className:`mt-1 truncate text-xs`,children:e.url||[e.command,...e.args||[]].join(` `)})]}),(0,G.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[b&&!x&&(0,G.jsx)(ni,{}),(0,G.jsx)(ri,{server:e,toggling:a,isDisabled:_,onToggle:r}),(0,G.jsx)(Mt,{onClick:t,disabled:n,className:`text-muted-foreground hover:text-destructive`,tooltip:f(`common.delete`),children:n?(0,G.jsx)(l,{className:`icon-sm animate-spin`}):(0,G.jsx)(y,{className:`icon-sm`})})]})]}),x&&(0,G.jsxs)(Yr,{className:`flex-col items-stretch gap-2 p-4 pt-0`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,G.jsxs)(R,{variant:`outline`,size:`sm`,onClick:o,disabled:s||d,className:`h-6 border-amber-500/30 px-2 text-xs text-amber-400 hover:bg-amber-500/10`,"data-testid":`mcp-oauth-${e.name}`,children:[s?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):(0,G.jsx)(i,{className:`icon-xs mr-1`}),s?f(`mcp.authenticating`):`OAuth`]}),(0,G.jsxs)(R,{variant:p?`secondary`:`outline`,size:`sm`,onClick:()=>m(!p),disabled:s||d,className:`h-6 px-2 text-xs`,"data-testid":`mcp-manual-token-${e.name}`,children:[(0,G.jsx)(c,{className:`icon-xs mr-1`}),f(`mcp.manualToken`)]}),b&&(0,G.jsx)(ni,{})]}),p&&(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(V,{type:`password`,value:h,onChange:e=>g(e.target.value),placeholder:f(`mcp.tokenPlaceholder`),className:`h-7 flex-1 px-2 text-xs`,"data-testid":`mcp-token-input-${e.name}`}),(0,G.jsx)(R,{variant:`outline`,size:`sm`,onClick:()=>{h&&u&&(u(h),g(``),m(!1))},disabled:!h||d,className:`h-7 px-2 text-xs`,"data-testid":`mcp-token-save-${e.name}`,children:d?(0,G.jsx)(l,{className:`icon-xs animate-spin`}):(0,G.jsx)(se,{className:`icon-xs`})})]})]})]})}function si({server:e,installed:t,onInstall:n,installing:r}){let{t:i}=M();return(0,G.jsxs)(Wr,{"data-testid":`mcp-recommended-card-${e.name}`,className:`flex h-full flex-col shadow-none`,children:[(0,G.jsxs)(Gr,{className:`flex-1 space-y-2 p-4 pb-2`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,G.jsx)(Kr,{className:`text-sm leading-snug font-medium`,children:e.name}),(0,G.jsx)(ii,{type:e.type})]}),(0,G.jsx)(qr,{className:`line-clamp-3 text-xs leading-relaxed`,children:e.description})]}),(0,G.jsx)(Yr,{className:`p-4 pt-0`,children:(0,G.jsxs)(R,{variant:t?`ghost`:`outline`,size:`sm`,onClick:n,disabled:t||r,className:`w-full`,"data-testid":`mcp-install-${e.name}`,children:[r?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):t?null:(0,G.jsx)(s,{className:`icon-xs mr-1`}),i(t?`mcp.installed`:r?`mcp.installing`:`mcp.install`)]})})]})}function ci(){let{t:e}=M(),t=Ne(e=>e.projects),n=Ne(e=>e.selectedProjectId),[r,i]=(0,W.useState)([]),[a,o]=(0,W.useState)([]),[s,c]=(0,W.useState)(!1),[u,f]=(0,W.useState)(null),[p,m]=(0,W.useState)(null),[h,g]=(0,W.useState)(null),[_,v]=(0,W.useState)(null),[y,b]=(0,W.useState)(null),[x,S]=(0,W.useState)(null),[w,T]=(0,W.useState)(!1),[E,D]=(0,W.useState)(null),[O,te]=(0,W.useState)(`claude`),[ne,re]=(0,W.useState)(``),[k,ie]=(0,W.useState)(`stdio`),[ae,oe]=(0,W.useState)(``),[se,ce]=(0,W.useState)(``),[le,ue]=(0,W.useState)(``),[de,fe]=(0,W.useState)(!1),A=n?t.find(e=>e.id===n)?.path??null:t.length>0?t[0].path:null,j=(0,W.useCallback)(async()=>{if(!A)return;c(!0),f(null);let e=await P.listMcpServers(A,O);e.isOk()?i(e.value.servers):f(e.error.message),c(!1)},[A,O]),pe=(0,W.useRef)(null);(0,W.useEffect)(()=>{let e=A?`${A}:${O}`:null;!A||e===pe.current||(pe.current=e,j())},[A,O,j]);let me=(0,W.useRef)(!1);(0,W.useEffect)(()=>{me.current||(me.current=!0,(async()=>{let e=await P.getRecommendedMcpServers();e.isOk()&&o(e.value.servers)})())},[]);let N=e=>{D(e)},he=async()=>{if(!A||!E)return;let e=E;D(null),m(e);let t=await P.removeMcpServer(e,A,O);t.isErr()?f(t.error.message):await j(),m(null)},ge=async(e,t)=>{if(!A)return;S(e);let n=await P.toggleMcpServer(e,A,t,O);n.isErr()?f(n.error.message):await j(),S(null)},_e=async e=>{if(!A)return;g(e.name);let t=await P.addMcpServer({name:e.name,provider:O,type:e.type,url:e.url,command:e.command,args:e.args,projectPath:A});t.isErr()?f(t.error.message):await j(),g(null)},F=async()=>{if(!A||!ne)return;fe(!0),f(null);let e={name:ne,provider:O,type:k,projectPath:A};k===`http`||k===`sse`?e.url=ae:(e.command=se,e.args=le.split(/\s+/).filter(Boolean));let t=await P.addMcpServer(e);t.isErr()?f(t.error.message):(await j(),re(``),oe(``),ce(``),ue(``),T(!1)),fe(!1)},ve=async t=>{if(!A)return;v(t.name),f(null);let n=await P.startMcpOAuth(t.name,A,O);if(n.isErr()){f(n.error.message),v(null);return}let{authUrl:r}=n.value,i=window.screenX+(window.innerWidth-600)/2,a=window.screenY+(window.innerHeight-700)/2,o=window.open(r,`mcp-oauth`,`width=600,height=700,left=${i},top=${a},popup=yes`),s=t=>{t.origin===window.location.origin&&t.data?.type===`mcp-oauth-callback`&&(window.removeEventListener(`message`,s),v(null),o&&!o.closed&&o.close(),t.data.success?j():f(t.data.error||e(`mcp.authFailed`)))};window.addEventListener(`message`,s);let c=setInterval(()=>{o&&o.closed&&(clearInterval(c),window.removeEventListener(`message`,s),v(null),j())},500)},ye=async(e,t)=>{if(!A)return;b(e.name),f(null);let n=await P.setMcpToken(e.name,A,t,O);n.isErr()?f(n.error.message):await j(),b(null)},be=new Set(r.map(e=>e.name));return A?(0,G.jsxs)(`div`,{className:`space-y-6`,children:[u&&(0,G.jsxs)(`div`,{className:`bg-destructive/10 text-destructive flex items-center gap-2 rounded-md px-3 py-2 text-xs`,children:[(0,G.jsx)(C,{className:`icon-sm shrink-0`}),(0,G.jsx)(`span`,{children:u}),(0,G.jsx)(`button`,{onClick:()=>f(null),className:`ml-auto text-xs underline`,children:e(`mcp.dismiss`)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,G.jsx)(`h3`,{className:`settings-section-header px-0 pb-0`,children:e(`mcp.installedServers`)}),(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsxs)(Tt,{value:O,onValueChange:e=>{te(e),T(!1)},children:[(0,G.jsx)(bt,{className:`h-8 w-[150px]`,"aria-label":e(`mcp.agentProvider`),"data-testid":`mcp-provider-select`,children:(0,G.jsx)(ht,{})}),(0,G.jsx)(rt,{children:ei.map(e=>(0,G.jsx)(B,{value:e.value,children:e.label},e.value))})]}),(0,G.jsxs)(R,{variant:`ghost`,size:`sm`,onClick:()=>T(!w),className:`px-2`,children:[w?(0,G.jsx)(ee,{className:`icon-xs mr-1`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(w?`mcp.cancel`:`mcp.addCustom`)]})]})]}),w&&(0,G.jsxs)(`div`,{className:`settings-form-panel mb-3`,children:[(0,G.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`mcp.name`)}),(0,G.jsx)(V,{type:`text`,value:ne,onChange:e=>re(e.target.value),placeholder:`my-server`,className:`h-8 px-2`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`mcp.type`)}),(0,G.jsxs)(Tt,{value:k,onValueChange:e=>ie(e),children:[(0,G.jsx)(bt,{className:`h-8`,children:(0,G.jsx)(ht,{})}),(0,G.jsxs)(rt,{children:[(0,G.jsx)(B,{value:`stdio`,children:`stdio`}),(0,G.jsx)(B,{value:`http`,children:`http`}),(0,G.jsx)(B,{value:`sse`,children:`sse`})]})]})]})]}),k===`http`||k===`sse`?(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`mcp.url`)}),(0,G.jsx)(V,{type:`text`,value:ae,onChange:e=>oe(e.target.value),placeholder:`https://api.example.com/mcp`,className:`h-8 px-2`})]}):(0,G.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`mcp.command`)}),(0,G.jsx)(V,{type:`text`,value:se,onChange:e=>ce(e.target.value),placeholder:`npx`,className:`h-8 px-2`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`mcp.arguments`)}),(0,G.jsx)(V,{type:`text`,value:le,onChange:e=>ue(e.target.value),placeholder:`-y @package/name`,className:`h-8 px-2`})]})]}),(0,G.jsx)(`div`,{className:`flex justify-end`,children:(0,G.jsxs)(R,{size:`sm`,onClick:F,disabled:!ne||de,children:[de?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(`mcp.addServer`)]})})]}),s?(0,G.jsx)(H,{fill:!1,layout:`inline`,className:`py-6`,testId:`mcp-settings-loading`,label:e(`mcp.loadingServers`)}):r.length===0?(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`mcp.noServers`)}):(0,G.jsx)(`div`,{className:`grid grid-cols-1 gap-3 xl:grid-cols-2`,children:r.map(e=>(0,G.jsx)(oi,{server:e,onRemove:()=>N(e.name),removing:p===e.name,onToggle:t=>ge(e.name,t),toggling:x===e.name,onAuthenticate:()=>ve(e),authenticating:_===e.name,onSetToken:t=>ye(e,t),settingToken:y===e.name},e.name))})]}),a.length>0&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{className:`settings-section-header mb-2 px-0 pb-0`,children:e(`mcp.recommendedServers`)}),(0,G.jsx)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3`,children:a.map(e=>(0,G.jsx)(si,{server:e,installed:be.has(e.name),onInstall:()=>_e(e),installing:h===e.name},e.name))})]}),(0,G.jsx)(nt,{open:!!E,onOpenChange:e=>!e&&D(null),children:(0,G.jsxs)(it,{children:[(0,G.jsxs)(mt,{children:[(0,G.jsx)(st,{children:e(`mcp.confirmRemoveTitle`)}),(0,G.jsx)(ot,{children:e(`mcp.confirmRemoveDescription`,{name:E})})]}),(0,G.jsxs)(yt,{children:[(0,G.jsx)(Dt,{"data-testid":`mcp-remove-cancel`,children:e(`mcp.cancel`)}),(0,G.jsx)(dt,{"data-testid":`mcp-remove-confirm`,onClick:he,className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:e(`common.delete`)})]})]})})]}):(0,G.jsxs)(`div`,{className:`text-muted-foreground flex items-center gap-2 text-sm`,children:[(0,G.jsx)(C,{className:`icon-base`}),e(`mcp.selectProject`)]})}var li=(0,W.memo)(function({value:e,onChange:t,testId:n}){let[r,i]=(0,W.useState)(!1),a=e;for(let t of Object.values(Rt)){let n=t.find(t=>t.value===e);if(n){a=n.fallback;break}}return(0,G.jsxs)(Ae,{open:r,onOpenChange:i,children:[(0,G.jsx)(ze,{asChild:!0,children:(0,G.jsxs)(`button`,{"data-testid":n,className:`border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground flex h-7 cursor-pointer items-center gap-1 rounded-md border px-2 py-1 text-xs`,children:[(0,G.jsx)(`span`,{children:a}),(0,G.jsx)(_,{className:`icon-xs opacity-50`})]})}),(0,G.jsx)(ut,{side:`bottom`,align:`end`,className:`w-auto min-w-40 p-1 data-[state=closed]:animate-none data-[state=open]:animate-none`,onOpenAutoFocus:e=>e.preventDefault(),children:It.map(r=>{let a=Rt[r.value]??[];return(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`div`,{className:`text-muted-foreground px-2 py-1.5 text-xs font-semibold`,children:r.label}),a.map(r=>(0,G.jsx)(`button`,{className:I(`flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-xs outline-hidden transition-colors hover:bg-accent hover:text-accent-foreground`,r.value===e&&`bg-accent text-accent-foreground`),onClick:()=>{t(r.value),i(!1)},"data-testid":n?`${n}-${r.value}`:void 0,children:r.fallback},r.value))]},r.value)})})]})});function ui(){let e=U(e=>e.selectedProjectId),[t,n]=(0,W.useState)(null),[r,i]=(0,W.useState)(!0),a=(0,W.useRef)(void 0),o=(0,W.useRef)({}),s=(0,W.useRef)(null);(0,W.useEffect)(()=>{s.current=t?.id??null},[t?.id]);let c=(0,W.useCallback)(async()=>{if(!e)return;i(!0);let t=await P.listPipelines(e);if(t.isOk())if(t.value.length>0)n(t.value[0]);else{let t=await P.createPipeline({projectId:e,name:`Code Review`});t.isOk()&&n(t.value)}i(!1)},[e]);(0,W.useEffect)(()=>{c()},[c]);let l=(0,W.useCallback)(async()=>{let e=s.current,t={...o.current};!e||Object.keys(t).length===0||(o.current={},(await P.updatePipeline(e,t)).isErr()&&(z.error(`Failed to save pipeline setting`),c()))},[c]);(0,W.useEffect)(()=>()=>{clearTimeout(a.current);let e=s.current,t={...o.current};e&&Object.keys(t).length>0&&P.updatePipeline(e,t)},[]);let u=(0,W.useCallback)(e=>{s.current&&(n(t=>t&&{...t,...e}),Object.assign(o.current,e),clearTimeout(a.current),a.current=setTimeout(l,400))},[l]),d=(0,W.useCallback)(e=>u({precommitFixModel:e}),[u]),f=(0,W.useCallback)(e=>u({reviewModel:e}),[u]),p=(0,W.useCallback)(e=>u({fixModel:e}),[u]),m=(0,W.useCallback)(e=>u({testFixModel:e}),[u]),h=(e,n)=>{t&&n!==(t[e]??``)&&u({[e]:n||null})};return e?r||!t?(0,G.jsx)(H,{label:`Loading…`,className:`min-h-[40vh]`}):(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsx)(`div`,{className:`border-border/50 bg-muted/20 rounded-lg border px-4 py-3`,children:(0,G.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`The pipeline automatically reviews and fixes your code after each commit. Every successful commit triggers a Reviewer agent that analyzes the diff. If issues are found, a Corrector agent creates fixes in an isolated worktree.`})}),(0,G.jsxs)(`div`,{className:`settings-card mb-0`,children:[(0,G.jsxs)(`div`,{className:`bg-muted/30 flex items-center justify-between px-3 py-2`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:`Pre-commit Auto-fix`}),(0,G.jsx)(vt,{checked:!!t.precommitFixEnabled,onCheckedChange:e=>u({precommitFixEnabled:e}),"data-testid":`pipeline-precommit-toggle`})]}),!!t.precommitFixEnabled&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ht,{title:`Fixer Model`,description:`Model for auto-fixing lint errors`,children:(0,G.jsx)(li,{value:t.precommitFixModel||`sonnet`,onChange:d,testId:`pipeline-precommit-model`})}),(0,G.jsx)(Ht,{title:`Max Fix Attempts`,description:`Max retries before failing the commit`,children:(0,G.jsx)(V,{type:`number`,min:1,max:5,value:t.precommitFixMaxIterations??3,onChange:e=>u({precommitFixMaxIterations:parseInt(e.target.value,10)||3}),className:`h-8 w-16 text-center text-xs`,"data-testid":`pipeline-precommit-max`})})]})]}),(0,G.jsxs)(`div`,{className:`settings-card mb-0`,children:[(0,G.jsxs)(`div`,{className:`bg-muted/30 flex items-center justify-between px-3 py-2`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:`Post-commit Review`}),(0,G.jsx)(vt,{checked:!!t.enabled,onCheckedChange:e=>u({enabled:e}),"data-testid":`pipeline-review-toggle`})]}),!!t.enabled&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ht,{title:`Reviewer Model`,description:`Model for analyzing code (read-only)`,children:(0,G.jsx)(li,{value:t.reviewModel||`sonnet`,onChange:f,testId:`pipeline-review-model`})}),(0,G.jsx)(Ht,{title:`Corrector Model`,description:`Model for fixing issues (worktree)`,children:(0,G.jsx)(li,{value:t.fixModel||`sonnet`,onChange:p,testId:`pipeline-fix-model`})}),(0,G.jsx)(Ht,{title:`Max Iterations`,description:`Max review-fix cycles before giving up`,children:(0,G.jsx)(V,{type:`number`,min:1,max:20,value:t.maxIterations??10,onChange:e=>u({maxIterations:parseInt(e.target.value,10)||10}),className:`h-8 w-16 text-center text-xs`,"data-testid":`pipeline-max-iterations`})})]})]}),(0,G.jsxs)(`div`,{className:`settings-card mb-0`,children:[(0,G.jsxs)(`div`,{className:`bg-muted/30 flex items-center justify-between px-3 py-2`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:`Test Auto-Fix`}),(0,G.jsx)(vt,{checked:!!t.testEnabled,onCheckedChange:e=>u({testEnabled:e}),"data-testid":`pipeline-test-toggle`})]}),!!t.testEnabled&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ht,{title:`Test Command`,description:`Command to run tests (e.g. bun test)`,children:(0,G.jsx)(V,{type:`text`,value:t.testCommand??``,onChange:e=>u({testCommand:e.target.value}),placeholder:`bun test`,className:`h-8 w-40 text-xs`,"data-testid":`pipeline-test-command`})}),(0,G.jsx)(Ht,{title:`Auto-fix Failures`,description:`Spawn an agent to fix failing tests`,children:(0,G.jsx)(vt,{checked:!!t.testFixEnabled,onCheckedChange:e=>u({testFixEnabled:e}),"data-testid":`pipeline-test-fix-toggle`})}),!!t.testFixEnabled&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Ht,{title:`Fixer Model`,description:`Model for fixing test failures`,children:(0,G.jsx)(li,{value:t.testFixModel||`sonnet`,onChange:m,testId:`pipeline-test-fix-model`})}),(0,G.jsx)(Ht,{title:`Max Fix Attempts`,description:`Max test-fix cycles before giving up`,children:(0,G.jsx)(V,{type:`number`,min:1,max:10,value:t.testFixMaxIterations??3,onChange:e=>u({testFixMaxIterations:parseInt(e.target.value,10)||3}),className:`h-8 w-16 text-center text-xs`,"data-testid":`pipeline-test-fix-max`})})]})]})]}),(0,G.jsx)(Ge,{children:(0,G.jsxs)(`div`,{className:`settings-card mb-0`,children:[(0,G.jsxs)(kt,{className:`bg-muted/30 hover:bg-muted/50 flex w-full items-center justify-between px-3 py-2 transition-colors`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:`Custom Prompts`}),(0,G.jsx)(_,{className:`icon-sm text-muted-foreground transition-transform in-data-[state=open]:rotate-180`})]}),(0,G.jsx)(je,{children:(0,G.jsxs)(`div`,{className:`space-y-3 p-3`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground text-xs`,children:`Override default prompts for each pipeline stage. Leave empty to use built-in defaults.`}),(0,G.jsx)(di,{label:`Reviewer Prompt`,value:t.reviewerPrompt??``,onBlur:e=>h(`reviewerPrompt`,e),placeholder:`e.g. You are a code reviewer. Focus on security issues and performance...`,testId:`pipeline-reviewer-prompt`}),(0,G.jsx)(di,{label:`Corrector Prompt`,value:t.correctorPrompt??``,onBlur:e=>h(`correctorPrompt`,e),placeholder:`e.g. You are a code corrector. Fix the issues found by the reviewer...`,testId:`pipeline-corrector-prompt`}),(0,G.jsx)(di,{label:`Pre-commit Fixer Prompt`,value:t.precommitFixerPrompt??``,onBlur:e=>h(`precommitFixerPrompt`,e),placeholder:`e.g. Fix the issues reported by the pre-commit hook...`,testId:`pipeline-precommit-fixer-prompt`}),(0,G.jsx)(di,{label:`Commit Message Prompt`,value:t.commitMessagePrompt??``,onBlur:e=>h(`commitMessagePrompt`,e),placeholder:`e.g. Generate a commit message following our team conventions...`,testId:`pipeline-commit-message-prompt`}),(0,G.jsx)(di,{label:`Test Fixer Prompt`,value:t.testFixerPrompt??``,onBlur:e=>h(`testFixerPrompt`,e),placeholder:`e.g. Analyze test failures and fix the underlying code...`,testId:`pipeline-test-fixer-prompt`})]})})]})})]}):(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:`Select a project to manage pipeline settings.`})}function di({label:e,value:t,onBlur:n,placeholder:r,testId:i}){let[a,o]=(0,W.useState)(t),[s,c]=(0,W.useState)(t);return t!==s&&(c(t),o(t)),(0,G.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,G.jsx)(`label`,{className:`text-foreground text-xs font-medium`,children:e}),(0,G.jsx)(qe,{value:a,onChange:e=>o(e.target.value),onBlur:()=>n(a),placeholder:r,rows:3,className:`resize-y text-xs`,"data-testid":i})]})}function fi(){let{t:e}=M(),t=U(e=>e.selectedProjectId),[n,i]=(0,W.useState)({}),[a,o]=(0,W.useState)(!0),[s,c]=(0,W.useState)(``),[l,u]=(0,W.useState)(!1),[f,p]=(0,W.useState)(``),[m,h]=(0,W.useState)(``),[g,_]=(0,W.useState)(``),[v,b]=(0,W.useState)(``),x=(0,W.useCallback)(async()=>{if(!t)return;o(!0);let e=await P.getProjectConfig(t);e.isOk()&&i(e.value),o(!1)},[t]);(0,W.useEffect)(()=>{x()},[x]);let S=async n=>{t&&((await P.updateProjectConfig(t,n)).isOk()?(i(n),z.success(e(`projectConfig.saved`))):z.error(e(`projectConfig.saveError`)))},C=()=>{if(!s.trim())return;let e=[...n.envFiles??[],s.trim()];S({...n,envFiles:e}),c(``)},w=(e,t)=>{let r=[...n.envFiles??[]];t.trim()?r[e]=t.trim():r.splice(e,1),S({...n,envFiles:r})},T=e=>{let t=(n.envFiles??[]).filter((t,n)=>n!==e);S({...n,envFiles:t})},E=()=>{if(!f.trim()||!m.trim())return;let e={name:f.trim(),basePort:parseInt(m,10),envVars:[]},t=[...n.portGroups??[],e];S({...n,portGroups:t}),p(``),h(``),u(!1)},D=e=>{let t=(n.portGroups??[]).filter((t,n)=>n!==e);S({...n,portGroups:t})},ee=(e,t,r)=>{let i=[...n.portGroups??[]],a={...i[e]};if(t===`name`){if(!r.trim())return;a.name=r.trim()}else{let e=parseInt(r,10);if(isNaN(e))return;a.basePort=e}i[e]=a,S({...n,portGroups:i})},O=e=>{if(!g.trim())return;let t=[...n.portGroups??[]],r={...t[e]};r.envVars=[...r.envVars,g.trim()],t[e]=r,S({...n,portGroups:t}),_(``)},te=(e,t)=>{let r=[...n.portGroups??[]],i={...r[e]};i.envVars=i.envVars.filter((e,n)=>n!==t),r[e]=i,S({...n,portGroups:r})},ne=()=>{if(!v.trim())return;let e=[...n.postCreate??[],v.trim()];S({...n,postCreate:e}),b(``)},re=(e,t)=>{let r=[...n.postCreate??[]];t.trim()?r[e]=t.trim():r.splice(e,1),S({...n,postCreate:r})},k=e=>{let t=(n.postCreate??[]).filter((t,n)=>n!==e);S({...n,postCreate:t})};return t?a?(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`common.loading`)}):(0,G.jsxs)(`div`,{className:`space-y-6`,children:[(0,G.jsxs)(`section`,{children:[(0,G.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,G.jsx)(r,{className:`icon-base text-muted-foreground`}),(0,G.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`projectConfig.envFiles`)})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground mb-3 text-xs`,children:e(`projectConfig.envFilesDescription`)}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:(n.envFiles??[]).map((t,n)=>(0,G.jsxs)(`div`,{className:`group flex items-center gap-2`,"data-testid":`env-file-${n}`,children:[(0,G.jsx)(V,{className:`h-8 flex-1 font-mono text-sm`,defaultValue:t,onBlur:e=>w(n,e.target.value),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},"data-testid":`env-file-edit-${n}`}),(0,G.jsx)(Mt,{onClick:()=>T(n),className:`text-muted-foreground hover:text-status-error opacity-0 group-hover:opacity-100`,"data-testid":`env-file-remove-${n}`,tooltip:e(`common.delete`),children:(0,G.jsx)(y,{className:`icon-xs`})})]},n))}),(0,G.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,G.jsx)(V,{className:`h-8 flex-1 font-mono text-sm`,placeholder:e(`projectConfig.envFilePlaceholder`),value:s,onChange:e=>c(e.target.value),onKeyDown:e=>e.key===`Enter`&&C(),"data-testid":`env-file-input`}),(0,G.jsx)(R,{variant:`outline`,size:`sm`,className:`h-8`,onClick:C,"data-testid":`env-file-add`,children:(0,G.jsx)(d,{className:`icon-sm`})})]})]}),(0,G.jsx)(lt,{}),(0,G.jsxs)(`section`,{children:[(0,G.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,G.jsx)(ce,{className:`icon-base text-muted-foreground`}),(0,G.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`projectConfig.portGroups`)})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground mb-3 text-xs`,children:e(`projectConfig.portGroupsDescription`)}),(0,G.jsx)(`div`,{className:`space-y-3`,children:(n.portGroups??[]).map((t,n)=>(0,G.jsxs)(`div`,{className:`group border-border/50 bg-card rounded-lg border p-3`,"data-testid":`port-group-${n}`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(V,{size:`xs`,className:`w-32 text-sm font-medium`,defaultValue:t.name,onBlur:e=>ee(n,`name`,e.target.value),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},"data-testid":`port-group-${n}-name`}),(0,G.jsx)(V,{size:`xs`,className:`w-20 font-mono`,type:`number`,defaultValue:t.basePort,onBlur:e=>ee(n,`basePort`,e.target.value),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},"data-testid":`port-group-${n}-port`})]}),(0,G.jsx)(Mt,{onClick:()=>D(n),className:`text-muted-foreground hover:text-status-error opacity-0 group-hover:opacity-100`,"data-testid":`port-group-remove-${n}`,tooltip:e(`common.delete`),children:(0,G.jsx)(y,{className:`icon-xs`})})]}),(0,G.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5`,children:[t.envVars.map((e,t)=>(0,G.jsxs)(tt,{variant:`outline`,className:`hover:bg-destructive/10 hover:text-status-error cursor-pointer gap-1 font-mono text-xs`,onClick:()=>te(n,t),"data-testid":`port-group-${n}-var-${t}`,children:[e,(0,G.jsx)(y,{className:`icon-2xs`})]},t)),(0,G.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,G.jsx)(V,{className:`h-6 w-32 font-mono text-xs`,placeholder:e(`projectConfig.envVarPlaceholder`),value:g,onChange:e=>_(e.target.value),onKeyDown:e=>{e.key===`Enter`&&O(n)},"data-testid":`port-group-${n}-var-input`}),(0,G.jsx)(Mt,{onClick:()=>O(n),"data-testid":`port-group-${n}-var-add`,tooltip:e(`common.add`),children:(0,G.jsx)(d,{className:`icon-xs`})})]})]})]},n))}),l?(0,G.jsxs)(`div`,{className:`mt-3 flex items-center gap-2`,children:[(0,G.jsx)(V,{className:`h-8 flex-1 text-sm`,placeholder:e(`projectConfig.groupNamePlaceholder`),value:f,onChange:e=>p(e.target.value),"data-testid":`port-group-name-input`,autoFocus:!0}),(0,G.jsx)(V,{className:`h-8 w-24 font-mono text-sm`,type:`number`,placeholder:e(`projectConfig.portPlaceholder`),value:m,onChange:e=>h(e.target.value),onKeyDown:e=>e.key===`Enter`&&E(),"data-testid":`port-group-port-input`}),(0,G.jsx)(R,{variant:`outline`,size:`sm`,className:`h-8`,onClick:E,"data-testid":`port-group-add-confirm`,children:(0,G.jsx)(d,{className:`icon-sm`})}),(0,G.jsx)(R,{variant:`ghost`,size:`sm`,className:`h-8`,onClick:()=>{u(!1),p(``),h(``)},"data-testid":`port-group-add-cancel`,children:e(`common.cancel`)})]}):(0,G.jsxs)(R,{variant:`outline`,size:`sm`,className:`mt-3 gap-1.5`,onClick:()=>u(!0),"data-testid":`port-group-add`,children:[(0,G.jsx)(d,{className:`icon-sm`}),e(`projectConfig.addPortGroup`)]})]}),(0,G.jsx)(lt,{}),(0,G.jsxs)(`section`,{children:[(0,G.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,G.jsx)(ae,{className:`icon-base text-muted-foreground`}),(0,G.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`projectConfig.postCreate`)})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground mb-3 text-xs`,children:e(`projectConfig.postCreateDescription`)}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:(n.postCreate??[]).map((e,t)=>(0,G.jsxs)(`div`,{className:`group flex items-center gap-2`,"data-testid":`post-create-${t}`,children:[(0,G.jsx)(V,{className:`h-8 flex-1 font-mono text-sm`,defaultValue:e,onBlur:e=>re(t,e.target.value),onKeyDown:e=>{e.key===`Enter`&&e.target.blur()},"data-testid":`post-create-edit-${t}`}),(0,G.jsx)(R,{variant:`ghost`,size:`icon-xs`,onClick:()=>k(t),className:`text-muted-foreground hover:text-status-error opacity-0 group-hover:opacity-100`,"data-testid":`post-create-remove-${t}`,children:(0,G.jsx)(y,{className:`icon-xs`})})]},t))}),(0,G.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,G.jsx)(V,{className:`h-8 flex-1 font-mono text-sm`,placeholder:e(`projectConfig.postCreatePlaceholder`),value:v,onChange:e=>b(e.target.value),onKeyDown:e=>e.key===`Enter`&&ne(),"data-testid":`post-create-input`}),(0,G.jsx)(R,{variant:`outline`,size:`sm`,className:`h-8`,onClick:ne,"data-testid":`post-create-add`,children:(0,G.jsx)(d,{className:`icon-sm`})})]})]})]}):(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`projectConfig.noProject`)})}var pi=Ce(`project-collaborators`),mi={owner:`bg-purple-500/15 text-purple-700 dark:text-purple-400`,admin:`bg-blue-500/15 text-blue-700 dark:text-blue-400`,member:`bg-green-500/15 text-green-700 dark:text-green-400`,viewer:`bg-muted text-muted-foreground`},hi=[{value:`viewer`,label:`Viewer`,hint:`Read-only access to the project.`},{value:`member`,label:`Member`,hint:`Work in the project and run threads.`},{value:`admin`,label:`Admin`,hint:`Manage collaborators and project settings.`}];function gi(){let e=Ne(e=>e.selectedProjectId),n=Ne(e=>e.projects.find(t=>t.id===e.selectedProjectId)?.userId),r=we(e=>e.user?.id),[i,a]=(0,W.useState)([]),[o,s]=(0,W.useState)(!0),[c,l]=(0,W.useState)(``),[u,d]=(0,W.useState)([]),[f,p]=(0,W.useState)(!1),[m,h]=(0,W.useState)(`member`),g=(0,W.useRef)(0),_=(0,W.useCallback)(async()=>{if(!e)return;let t=await P.listProjectMembers(e);t.isOk()?a(t.value.members):pi.warn(`Failed to load project members`),s(!1)},[e]);(0,W.useEffect)(()=>{_()},[_]),(0,W.useEffect)(()=>{let e=c.trim();if(e.length<1){d([]);return}let t=++g.current;p(!0);let n=setTimeout(async()=>{let n=await P.searchUsers(e);t===g.current&&(n.isOk()&&d(n.value),p(!1))},250);return()=>clearTimeout(n)},[c]);let v=new Set(i.map(e=>e.userId)),b=(0,W.useCallback)(async t=>{e&&((await P.addProjectMember(e,t.id,m)).isOk()?(z.success(`Added ${t.username??t.name} as ${m}`),l(``),d([]),_()):z.error(`Failed to add collaborator`))},[e,m,_]),x=(0,W.useCallback)(async(t,n)=>{!e||t.role===n||((await P.addProjectMember(e,t.userId,n)).isOk()?(z.success(`Role updated`),_()):z.error(`Failed to update role`))},[e,_]),S=(0,W.useCallback)(async t=>{e&&((await P.removeProjectMember(e,t.userId)).isOk()?(z.success(`Collaborator removed`),_()):z.error(`Failed to remove collaborator`))},[e,_]);return o?(0,G.jsx)(H,{testId:`collaborators-loading`,label:`Loading collaborators…`}):(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsx)(`div`,{className:`px-1`,children:(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-sm`,children:`People with access to this project. Each collaborator works through their own runner — they’ll be prompted to connect one and set their local directory.`})}),(0,G.jsxs)(`div`,{className:`settings-card space-y-2 p-3`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsxs)(`div`,{className:`relative flex-1`,children:[(0,G.jsx)(t,{className:`text-muted-foreground absolute top-1/2 left-2.5 size-3.5 -translate-y-1/2`}),(0,G.jsx)(V,{value:c,onChange:e=>l(e.target.value),placeholder:`Search users by name, username or email…`,className:`pl-8 text-sm`,"data-testid":`collaborators-search`})]}),(0,G.jsxs)(Tt,{value:m,onValueChange:e=>h(e),children:[(0,G.jsx)(bt,{className:`w-32 shrink-0`,"data-testid":`collaborators-role-select`,children:(0,G.jsx)(ht,{})}),(0,G.jsx)(rt,{children:hi.map(e=>(0,G.jsx)(B,{value:e.value,"data-testid":`collaborators-role-opt-${e.value}`,children:e.label},e.value))})]})]}),(0,G.jsx)(`p`,{className:`text-muted-foreground text-[11px]`,children:hi.find(e=>e.value===m)?.hint}),c.trim().length>0&&(0,G.jsx)(`div`,{className:`border-border/50 divide-border/50 divide-y rounded-md border`,children:f&&u.length===0?(0,G.jsx)(`p`,{className:`text-muted-foreground px-3 py-2 text-xs`,children:`Searching…`}):u.length===0?(0,G.jsx)(`p`,{className:`text-muted-foreground px-3 py-2 text-xs`,children:`No users found.`}):u.map(e=>{let t=v.has(e.id);return(0,G.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2`,"data-testid":`collaborators-result-${e.id}`,children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`p`,{className:`text-foreground truncate text-sm`,children:e.name||e.username}),(0,G.jsxs)(`p`,{className:`text-muted-foreground truncate text-xs`,children:[`@`,e.username??e.email]})]}),(0,G.jsxs)(R,{size:`sm`,variant:`outline`,className:`h-7 shrink-0 text-xs`,disabled:t,onClick:()=>b(e),"data-testid":`collaborators-add-${e.id}`,children:[(0,G.jsx)(D,{className:`icon-xs mr-1`}),t?`Added`:`Add`]})]},e.id)})})]}),(0,G.jsx)(`div`,{className:`settings-card divide-border/50 divide-y`,children:i.length===0?(0,G.jsx)(`p`,{className:`text-muted-foreground px-4 py-6 text-center text-sm`,children:`No collaborators yet.`}):i.map(e=>{let t=e.userId===n,i=e.userId===r,a=e.user?.name||e.user?.username||e.userId;return(0,G.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2.5`,"data-testid":`collaborators-member-${e.userId}`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsxs)(`p`,{className:`text-foreground truncate text-sm font-medium`,children:[a,i&&(0,G.jsx)(`span`,{className:`text-muted-foreground ml-1 text-xs`,children:`(you)`})]}),t||i?(0,G.jsx)(tt,{variant:`secondary`,className:mi[t?`owner`:e.role]??``,children:t?`owner`:e.role}):(0,G.jsxs)(Tt,{value:[`viewer`,`member`,`admin`].includes(e.role)?e.role:`member`,onValueChange:t=>void x(e,t),children:[(0,G.jsx)(bt,{className:`h-6 w-24 text-xs`,"data-testid":`collaborators-role-${e.userId}`,children:(0,G.jsx)(ht,{})}),(0,G.jsx)(rt,{children:hi.map(e=>(0,G.jsx)(B,{value:e.value,className:`text-xs`,children:e.label},e.value))})]}),!e.localPath&&!t&&(0,G.jsx)(tt,{variant:`secondary`,className:`bg-amber-500/15 text-amber-700 dark:text-amber-400`,children:`needs setup`})]}),e.user?.username&&(0,G.jsxs)(`p`,{className:`text-muted-foreground truncate text-xs`,children:[`@`,e.user.username]})]}),!t&&!i&&(0,G.jsx)(R,{variant:`ghost`,size:`icon`,className:`text-muted-foreground hover:text-destructive size-7 shrink-0`,onClick:()=>S(e),"data-testid":`collaborators-remove-${e.userId}`,"aria-label":`Remove collaborator`,children:(0,G.jsx)(y,{className:`icon-sm`})})]},e.userId)})})]})}function _i({skill:e,onRemove:t,removing:n}){let{t:r}=M();return(0,G.jsxs)(`div`,{className:`border-border/50 bg-card flex items-center justify-between gap-3 rounded-md border px-3 py-2.5`,style:{borderLeftWidth:3,borderLeftColor:Pe(e.name)},children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,G.jsx)(T,{className:`icon-base text-status-warning shrink-0`}),(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.name})}),e.description&&(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 truncate text-xs`,children:e.description}),(0,G.jsxs)(`div`,{className:`mt-1 flex items-center gap-2`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground/70 text-xs`,children:e.source}),e.sourceUrl&&(0,G.jsx)(`a`,{href:e.sourceUrl,target:`_blank`,rel:`noopener noreferrer`,className:`text-muted-foreground/70 hover:text-foreground inline-flex items-center gap-0.5 text-xs`,children:(0,G.jsx)(le,{className:`icon-2xs`})}),e.installedAt&&(0,G.jsxs)(`span`,{className:`text-muted-foreground/70 text-xs`,children:[`installed `,new Date(e.installedAt).toLocaleDateString()]})]})]})]}),e.scope!==`project`&&(0,G.jsx)(Mt,{onClick:t,disabled:n,className:`text-muted-foreground hover:text-destructive shrink-0`,tooltip:r(`common.remove`),children:n?(0,G.jsx)(l,{className:`icon-sm animate-spin`}):(0,G.jsx)(y,{className:`icon-sm`})})]})}function vi({skill:e,installed:t,onInstall:n,installing:r}){let{t:i}=M();return(0,G.jsxs)(`div`,{className:`border-border/50 bg-card flex items-center justify-between gap-3 rounded-md border px-3 py-2.5`,style:{borderLeftWidth:3,borderLeftColor:Pe(e.name)},children:[(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,G.jsx)(`span`,{className:`text-sm font-medium`,children:e.name})}),(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 text-xs`,children:e.description}),(0,G.jsx)(`p`,{className:`text-muted-foreground/70 mt-0.5 font-mono text-xs`,children:e.identifier})]}),(0,G.jsxs)(R,{variant:t?`ghost`:`outline`,size:`sm`,onClick:n,disabled:t||r,className:`shrink-0`,children:[r?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):t?null:(0,G.jsx)(s,{className:`icon-xs mr-1`}),i(t?`skills.installed`:r?`skills.installing`:`skills.install`)]})]})}function yi({command:e}){return(0,G.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 text-xs`,children:[(0,G.jsxs)(`span`,{className:`text-foreground/80 font-mono`,children:[`/`,e.name]}),e.description&&(0,G.jsx)(`span`,{className:`text-muted-foreground/70 truncate`,children:e.description})]})}function bi({plugin:e}){let{t}=M(),[n,r]=(0,W.useState)(!1),i=e.commands.length>0;return(0,G.jsx)(Ge,{open:n,onOpenChange:r,children:(0,G.jsxs)(`div`,{className:`border-border/50 bg-card rounded-md border`,style:{borderLeftWidth:3,borderLeftColor:Pe(e.name)},children:[(0,G.jsx)(kt,{asChild:!0,children:(0,G.jsxs)(`button`,{className:`hover:bg-muted/30 flex w-full items-center justify-between gap-3 rounded-md px-3 py-2.5 text-left transition-colors`,disabled:!i,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,G.jsx)(g,{className:`icon-base shrink-0 text-purple-500`}),(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.name}),i&&(0,G.jsxs)(`span`,{className:`bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-xs font-medium`,children:[e.commands.length,` `,e.commands.length===1?t(`plugins.command`):t(`plugins.commands`)]})]}),e.description&&(0,G.jsx)(`p`,{className:`text-muted-foreground mt-0.5 truncate text-xs`,children:e.description}),(0,G.jsxs)(`div`,{className:`mt-1 flex items-center gap-2`,children:[e.author&&(0,G.jsxs)(`span`,{className:`text-muted-foreground/70 text-xs`,children:[t(`plugins.by`),` `,e.author]}),e.installedAt&&(0,G.jsxs)(`span`,{className:`text-muted-foreground/70 text-xs`,children:[`installed `,new Date(e.installedAt).toLocaleDateString()]})]})]})]}),i&&(0,G.jsx)(_,{className:I(`icon-sm text-muted-foreground transition-transform shrink-0`,n&&`rotate-180`)})]})}),i&&(0,G.jsx)(je,{children:(0,G.jsx)(`div`,{className:`border-border/50 border-t py-1`,children:e.commands.map(e=>(0,G.jsx)(yi,{command:e},e.name))})})]})})}function xi(){let{t:e}=M(),t=U(e=>e.projects),n=U(e=>e.selectedProjectId),[r,i]=(0,W.useState)([]),[a,o]=(0,W.useState)([]),[s,c]=(0,W.useState)([]),[u,f]=(0,W.useState)(!1),[p,m]=(0,W.useState)(!1),[h,g]=(0,W.useState)(null),[_,v]=(0,W.useState)(null),[y,b]=(0,W.useState)(!1),[x,S]=(0,W.useState)(``),[C,w]=(0,W.useState)(!1),T=n?t.find(e=>e.id===n)?.path??null:t[0]?.path??null,E=(0,W.useCallback)(async()=>{f(!0);let e=await P.listSkills(T||void 0);e.isOk()?i(e.value.skills):Ke(e.error),f(!1)},[T]),D=(0,W.useCallback)(async()=>{m(!0);let e=await P.listPlugins();e.isOk()&&o(e.value.plugins),m(!1)},[]),O=(0,W.useCallback)(async()=>{let e=await P.getRecommendedSkills();e.isOk()&&c(e.value.skills)},[]);(0,W.useEffect)(()=>{E()},[E]),(0,W.useEffect)(()=>{D()},[D]),(0,W.useEffect)(()=>{O()},[O]);let te=async e=>{g(e);let t=await P.removeSkill(e);t.isErr()?Ke(t.error):(await E(),z.success(`Skill "${e}" removed`)),g(null)},ne=async e=>{v(e.identifier);let t=await P.addSkill(e.identifier);t.isErr()?Ke(t.error):(await E(),z.success(`Skill "${e.name}" installed successfully`)),v(null)},re=async()=>{let e=x.trim();if(!e)return;w(!0);let t=await P.addSkill(e);t.isErr()?Ke(t.error):(await E(),z.success(`Skill "${e}" installed successfully`),S(``),b(!1)),w(!1)},k=r.filter(e=>e.scope===`project`),ie=r.filter(e=>e.scope!==`project`),ae=new Set(r.map(e=>e.name));return(0,G.jsxs)(`div`,{className:`space-y-6`,children:[k.length>0&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground mb-2 text-xs font-semibold tracking-wider uppercase`,children:e(`skills.projectSkills`)}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:k.map((e,t)=>(0,G.jsx)(_i,{skill:e,onRemove:()=>{},removing:!1},`project-${e.source}-${e.name}-${t}`))})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:e(`skills.globalSkills`)}),(0,G.jsxs)(R,{variant:`ghost`,size:`sm`,onClick:()=>b(!y),className:`px-2`,children:[y?(0,G.jsx)(ee,{className:`icon-xs mr-1`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(y?`skills.cancel`:`skills.addCustom`)]})]}),y&&(0,G.jsxs)(`div`,{className:`border-border/50 bg-muted/30 mb-3 space-y-2 rounded-lg border p-3`,children:[(0,G.jsxs)(`label`,{className:`text-muted-foreground block text-xs`,children:[e(`skills.skillIdentifier`),` (e.g.`,` `,(0,G.jsx)(`code`,{className:`bg-muted rounded px-1 py-0.5 text-xs`,children:`owner/repo@skill-name`}),`)`]}),(0,G.jsxs)(`div`,{className:`flex gap-2`,children:[(0,G.jsx)(V,{type:`text`,value:x,onChange:e=>S(e.target.value),placeholder:`vercel-labs/agent-skills@nextjs-best-practices`,className:`h-8 flex-1 px-2 font-mono text-xs`,onKeyDown:e=>e.key===`Enter`&&re()}),(0,G.jsxs)(R,{size:`sm`,onClick:re,disabled:!x.trim()||C,className:`h-8 text-xs`,children:[C?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(`skills.install`)]})]})]}),u?(0,G.jsx)(H,{fill:!1,layout:`inline`,className:`py-6`,testId:`skills-loading`,label:e(`skills.loadingSkills`)}):ie.length===0?(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`skills.noGlobalSkills`)}):(0,G.jsx)(`div`,{className:`space-y-1.5`,children:ie.map((e,t)=>(0,G.jsx)(_i,{skill:e,onRemove:()=>te(e.name),removing:h===e.name},`global-${e.source}-${e.name}-${t}`))})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:e(`plugins.installedPlugins`)}),(0,G.jsx)(`span`,{className:`text-muted-foreground/60 text-xs`,children:e(`plugins.managedByClaudeCode`)})]}),p?(0,G.jsx)(H,{fill:!1,layout:`inline`,className:`py-6`,testId:`skills-loading-plugins`,label:e(`plugins.loadingPlugins`)}):a.length===0?(0,G.jsx)(`div`,{className:`text-muted-foreground py-4 text-center text-sm`,children:e(`plugins.noPlugins`)}):(0,G.jsx)(`div`,{className:`space-y-1.5`,children:a.map(e=>(0,G.jsx)(bi,{plugin:e},e.name))})]}),s.length>0&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground mb-2 text-xs font-semibold tracking-wider uppercase`,children:e(`skills.recommendedSkills`)}),(0,G.jsx)(`div`,{className:`space-y-1.5`,children:s.map(e=>(0,G.jsx)(vi,{skill:e,installed:ae.has(e.name),onInstall:()=>ne(e),installing:_===e.identifier},e.identifier))})]})]})}var Si=/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|--?\w[\w-]*|\$\w+|&&|\|\||[|;]|(?:^|\s)(bun|bunx|npm|npx|node|git|oxlint|oxfmt|tsc|echo|exit|cd|mkdir|rm|cp|mv|cat|grep|sed|awk|curl|wget|make|cargo|docker|pytest|jest|vitest|secretlint|eslint|prettier)(?=\s|$))/g;function Ci({command:e}){let t=[],n=0;for(let r of e.matchAll(Si)){let i=r[0],a=r.index;if(a>n&&t.push((0,G.jsx)(`span`,{className:`text-foreground/80`,children:e.slice(n,a)},`t${n}`)),r[2]){let e=i.slice(0,i.indexOf(r[2]));e&&t.push((0,G.jsx)(`span`,{className:`text-foreground/80`,children:e},`p${a}`)),t.push((0,G.jsx)(`span`,{className:`text-[#e5c07b]`,children:r[2]},`c${a}`))}else i.startsWith(`"`)||i.startsWith(`'`)?t.push((0,G.jsx)(`span`,{className:`text-[#98c379]`,children:i},`s${a}`)):i.startsWith(`-`)?t.push((0,G.jsx)(`span`,{className:`text-[#61afef]`,children:i},`f${a}`)):i.startsWith(`$`)?t.push((0,G.jsx)(`span`,{className:`text-[#c678dd]`,children:i},`v${a}`)):t.push((0,G.jsx)(`span`,{className:`text-[#c678dd]`,children:i},`o${a}`));n=a+i.length}return n<e.length&&t.push((0,G.jsx)(`span`,{className:`text-foreground/80`,children:e.slice(n)},`e${n}`)),(0,G.jsx)(`div`,{className:`mt-0.5 min-w-0 truncate overflow-hidden rounded px-1.5 py-0.5 font-mono text-[11px]`,children:t.length>0?t:e})}function wi(){let{t:e}=M(),t=U(e=>e.selectedProjectId),r=Ne(e=>e.projects),[i,a]=(0,W.useState)([]),[o,s]=(0,W.useState)(!1),[c,u]=(0,W.useState)(null),[f,p]=(0,W.useState)(``),[m,h]=(0,W.useState)(``),g=(0,W.useCallback)(async()=>{if(!t)return;let e=await P.listCommands(t);e.isOk()&&a(e.value)},[t]);(0,W.useEffect)(()=>{g()},[g]);let _=Ve(e=>e.tabs),v=new Set;for(let e of _)e.commandId&&e.alive&&v.add(e.commandId);let b=async()=>{if(t){if(!f.trim()){z.error(e(`startup.labelRequired`));return}if(!m.trim()){z.error(e(`startup.commandRequired`));return}(await P.addCommand(t,f.trim(),m.trim())).isOk()?(ee(),s(!1),g(),z.success(e(`startup.commandAdded`))):z.error(e(`startup.commandAddError`))}},x=async n=>{if(t){if(!f.trim()){z.error(e(`startup.labelRequired`));return}if(!m.trim()){z.error(e(`startup.commandRequired`));return}(await P.updateCommand(t,n,f.trim(),m.trim())).isOk()?(u(null),ee(),g(),z.success(e(`startup.commandUpdated`))):z.error(e(`startup.commandUpdateError`))}},C=async n=>{t&&((await P.deleteCommand(t,n)).isOk()?(g(),z.success(e(`startup.commandDeleted`))):z.error(e(`startup.commandDeleteError`)))},T=e=>{if(!t)return;let n=r.find(e=>e.id===t);n&&Ve.getState().addTab({id:crypto.randomUUID(),label:e.label,cwd:n.path,alive:!0,commandId:e.id,projectId:t,type:`pty`,initialCommand:e.command})},E=e=>{let t=Ve.getState(),n=t.tabs.find(t=>t.commandId===e.id&&t.alive);if(n){let e=jt();e&&e.connected&&e.emit(`pty:kill`,{id:n.id}),t.removeTab(n.id)}},D=e=>{u(e.id),p(e.label),h(e.command),s(!1)},ee=()=>{p(``),h(``)},O=()=>{u(null),s(!1),ee()};return t?(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(i.length>0||o)&&(0,G.jsx)(`div`,{className:`flex items-center justify-end`,children:(0,G.jsxs)(R,{variant:`outline`,size:`sm`,className:`gap-1.5`,onClick:()=>{O(),s(!0)},children:[(0,G.jsx)(d,{className:`icon-sm`}),e(`startup.addCommand`)]})}),i.length===0&&!o&&(0,G.jsxs)(`div`,{className:`py-8 text-center`,children:[(0,G.jsx)(`p`,{className:`text-muted-foreground mb-3 text-sm`,children:e(`startup.noCommands`)}),(0,G.jsxs)(R,{variant:`outline`,size:`sm`,className:`gap-1.5`,onClick:()=>s(!0),children:[(0,G.jsx)(d,{className:`icon-sm`}),e(`startup.addFirst`)]})]}),i.map(t=>{let r=v.has(t.id);return c===t.id?(0,G.jsxs)(`div`,{className:`settings-form-panel`,children:[(0,G.jsxs)(`div`,{className:`grid grid-cols-4 gap-2`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`startup.label`)}),(0,G.jsx)(V,{className:`settings-form-input`,placeholder:e(`startup.label`),value:f,onChange:e=>p(e.target.value),autoFocus:!0})]}),(0,G.jsxs)(`div`,{className:`col-span-3`,children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`startup.command`)}),(0,G.jsx)(V,{className:`settings-form-input font-mono`,placeholder:e(`startup.command`),value:m,onChange:e=>h(e.target.value),onKeyDown:e=>{e.key===`Enter`&&x(t.id),e.key===`Escape`&&O()}})]})]}),(0,G.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-1`,children:[(0,G.jsxs)(R,{variant:`ghost`,size:`sm`,onClick:O,children:[(0,G.jsx)(w,{className:`icon-sm mr-1`}),e(`common.cancel`)]}),(0,G.jsxs)(R,{size:`sm`,onClick:()=>x(t.id),children:[(0,G.jsx)(se,{className:`icon-sm mr-1`}),e(`common.save`)]})]})]},t.id):(0,G.jsxs)(`div`,{className:`settings-item-card group flex items-center justify-between gap-3`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[r&&(0,G.jsx)(l,{className:`icon-sm text-status-success shrink-0 animate-spin`}),(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:t.label})]}),(0,G.jsx)(Ci,{command:t.command})]}),(0,G.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100`,children:[r?(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>E(t),className:`text-status-error hover:text-status-error/80`,children:(0,G.jsx)(n,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:e(`startup.stop`)})]}):(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>T(t),className:`text-status-success hover:text-status-success/80`,children:(0,G.jsx)(S,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:e(`startup.run`)})]}),(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>D(t),className:`text-muted-foreground`,children:(0,G.jsx)(te,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:e(`startup.edit`)})]}),(0,G.jsxs)(F,{children:[(0,G.jsx)(L,{asChild:!0,children:(0,G.jsx)(R,{variant:`ghost`,size:`icon-sm`,onClick:()=>C(t.id),className:`text-muted-foreground hover:text-status-error`,children:(0,G.jsx)(y,{className:`icon-sm`})})}),(0,G.jsx)(N,{children:e(`startup.delete`)})]})]})]},t.id)}),o&&(0,G.jsxs)(`div`,{className:`settings-form-panel`,children:[(0,G.jsxs)(`div`,{className:`grid grid-cols-4 gap-2`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`startup.label`)}),(0,G.jsx)(V,{className:`h-auto py-1.5`,placeholder:e(`startup.label`),value:f,onChange:e=>p(e.target.value),autoFocus:!0})]}),(0,G.jsxs)(`div`,{className:`col-span-3`,children:[(0,G.jsx)(`label`,{className:`settings-label`,children:e(`startup.command`)}),(0,G.jsx)(V,{className:`h-auto py-1.5 font-mono`,placeholder:e(`startup.commandPlaceholder`),value:m,onChange:e=>h(e.target.value),onKeyDown:e=>{e.key===`Enter`&&b(),e.key===`Escape`&&O()}})]})]}),(0,G.jsxs)(`div`,{className:`flex items-center justify-end gap-2 pt-1`,children:[(0,G.jsxs)(R,{variant:`ghost`,size:`sm`,onClick:O,children:[(0,G.jsx)(w,{className:`icon-sm mr-1`}),e(`common.cancel`)]}),(0,G.jsxs)(R,{size:`sm`,onClick:b,children:[(0,G.jsx)(se,{className:`icon-sm mr-1`}),e(`startup.addCommand`)]})]})]})]}):(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`startup.noCommands`)})}function Ti({worktree:e,onRemove:t,removing:n}){return(0,G.jsxs)(`div`,{className:`border-border/50 bg-card flex items-center justify-between gap-3 rounded-md border px-3 py-2.5`,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,G.jsx)(ie,{className:`icon-base text-status-info shrink-0`}),(0,G.jsxs)(`div`,{className:`min-w-0`,children:[(0,G.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,G.jsx)(`span`,{className:`truncate text-sm font-medium`,children:e.branch})}),(0,G.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2`,children:[(0,G.jsx)(oe,{className:`icon-xs text-muted-foreground/70 shrink-0`}),(0,G.jsx)(`span`,{className:`text-muted-foreground/70 truncate font-mono text-xs`,children:e.path})]}),e.commit&&(0,G.jsx)(`span`,{className:`text-muted-foreground/70 font-mono text-xs`,children:e.commit.slice(0,8)})]})]}),!e.isMain&&(0,G.jsx)(R,{variant:`ghost`,size:`icon-xs`,onClick:t,disabled:n,className:`text-muted-foreground hover:text-destructive shrink-0`,children:n?(0,G.jsx)(l,{className:`icon-sm animate-spin`}):(0,G.jsx)(y,{className:`icon-sm`})})]})}function Ei(){let{t:e}=M(),t=U(e=>e.projects),n=U(e=>e.selectedProjectId),[r,i]=(0,W.useState)([]),[a,o]=(0,W.useState)([]),[s,c]=(0,W.useState)(!1),[u,f]=(0,W.useState)(null),[p,m]=(0,W.useState)(null),[h,g]=(0,W.useState)(null),[_,v]=(0,W.useState)(!1),[y,b]=(0,W.useState)(``),[x,S]=(0,W.useState)(``),[w,T]=(0,W.useState)(!1),E=n?t.find(e=>e.id===n):t[0],D=(0,W.useCallback)(async()=>{if(!E)return;c(!0),f(null);let e=await P.listWorktrees(E.id);e.isOk()?i(e.value):f(e.error.message),c(!1)},[E?.id]),O=(0,W.useCallback)(async()=>{if(!E)return;let e=await P.listBranches(E.id);if(e.isOk()){let t=e.value;o(t.branches),t.branches.length>0&&S(e=>e||t.defaultBranch||t.branches[0])}else console.error(`Failed to load branches:`,e.error),f(e.error.message||`Failed to load branches`)},[E?.id]);(0,W.useEffect)(()=>{D(),O()},[D,O]);let te=async()=>{let e=x||a[0];if(!y.trim()||!E)return;if(!e){f(`No base branch available. Make sure the project has at least one commit.`);return}T(!0),f(null);let t=await P.createWorktree({projectId:E.id,branchName:y.trim(),baseBranch:e});t.isErr()?f(t.error.message):(await D(),b(``),v(!1)),T(!1)};return E?(0,G.jsxs)(`div`,{className:`space-y-6`,children:[u&&(0,G.jsxs)(`div`,{className:`bg-destructive/10 text-destructive flex items-center gap-2 rounded-md px-3 py-2 text-xs`,children:[(0,G.jsx)(C,{className:`icon-sm shrink-0`}),(0,G.jsx)(`span`,{children:u}),(0,G.jsx)(`button`,{onClick:()=>f(null),className:`ml-auto text-xs underline`,children:e(`worktreeSettings.dismiss`)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,G.jsx)(`h3`,{className:`text-muted-foreground text-xs font-semibold tracking-wider uppercase`,children:e(`worktreeSettings.worktrees`)}),(0,G.jsxs)(R,{variant:`ghost`,size:`sm`,onClick:()=>v(!_),className:`px-2`,children:[_?(0,G.jsx)(ee,{className:`icon-xs mr-1`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(_?`worktreeSettings.cancel`:`worktreeSettings.createWorktree`)]})]}),_&&(a.length===0?(0,G.jsxs)(`div`,{className:`bg-status-pending/10 text-status-pending/80 mb-3 flex items-center gap-2 rounded-md px-3 py-2 text-xs`,children:[(0,G.jsx)(C,{className:`icon-sm shrink-0`}),(0,G.jsx)(`span`,{children:`No branches found. Make sure the project has at least one commit.`})]}):(0,G.jsxs)(`div`,{className:`border-border/50 bg-muted/30 mb-3 space-y-3 rounded-lg border p-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`text-muted-foreground mb-1 block text-xs`,children:e(`worktreeSettings.branchName`)}),(0,G.jsx)(V,{type:`text`,value:y,onChange:e=>b(e.target.value),placeholder:`feature/my-new-branch`,className:`h-8 px-2 font-mono text-xs`,onKeyDown:e=>e.key===`Enter`&&te()})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`text-muted-foreground mb-1 block text-xs`,children:e(`worktreeSettings.baseBranch`)}),(0,G.jsx)(Bt,{branches:a,selected:x,onChange:S,triggerClassName:`flex h-8 w-full items-center gap-2 rounded-md border border-input bg-background px-3 text-xs transition-colors hover:bg-accent/50 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring/50`,side:`bottom`,align:`start`,showCopy:!1,placeholder:`main (default)`})]}),(0,G.jsxs)(R,{size:`sm`,onClick:te,disabled:!y.trim()||w,className:`w-full`,children:[w?(0,G.jsx)(l,{className:`icon-xs mr-1 animate-spin`}):(0,G.jsx)(d,{className:`icon-xs mr-1`}),e(w?`worktreeSettings.creating`:`worktreeSettings.createWorktree`)]})]})),s?(0,G.jsx)(H,{fill:!1,layout:`inline`,className:`py-6`,testId:`worktree-settings-loading`,label:e(`worktreeSettings.loadingWorktrees`)}):r.length===0?(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`worktreeSettings.noWorktrees`)}):(0,G.jsx)(`div`,{className:`space-y-1.5`,children:r.map(e=>(0,G.jsx)(Ti,{worktree:e,onRemove:()=>g(e),removing:p===e.path},e.path))})]}),(0,G.jsx)(wt,{open:!!h,onOpenChange:e=>{e||g(null)},title:e(`dialog.deleteWorktree`),description:e(`dialog.deleteWorktreeDesc`,{branch:h?.branch}),cancelLabel:e(`common.cancel`),confirmLabel:e(`common.delete`),onCancel:()=>g(null),onConfirm:async()=>{if(!E||!h)return;let{path:t,branch:n}=h;g(null),m(t);let r=await P.removeWorktree(E.id,t);r.isOk()?(await D(),z.success(e(`toast.worktreeDeleted`,{branch:n}))):z.error(e(`toast.worktreeDeleteFailed`,{message:r.error.message})),m(null)}})]}):(0,G.jsx)(`div`,{className:`text-muted-foreground py-6 text-center text-sm`,children:e(`worktreeSettings.noProject`)})}var Di=(0,W.lazy)(()=>de(()=>import(`./ProjectHooksSettings-Dz9pRWek.js`).then(e=>({default:e.ProjectHooksSettings})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29])));function Oi({page:e,label:t}){let{t:n}=M();switch(e){case`general`:return(0,G.jsx)(Ur,{});case`agent-resources`:return(0,G.jsx)(Jt,{});case`mcp-server`:return(0,G.jsx)(ci,{});case`skills`:return(0,G.jsx)(xi,{});case`worktrees`:return(0,G.jsx)(Ei,{});case`startup-commands`:return(0,G.jsx)(wi,{});case`project-config`:return(0,G.jsx)(fi,{});case`hooks`:return(0,G.jsx)(W.Suspense,{fallback:(0,G.jsx)(H,{label:`Loading…`,className:`min-h-[40vh]`}),children:(0,G.jsx)(Di,{})});case`automations`:return(0,G.jsx)(on,{});case`pipelines`:return(0,G.jsx)(ui,{});case`archived-threads`:return(0,G.jsx)($t,{});case`collaborators`:return(0,G.jsx)(gi,{});default:return(0,G.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:n(`settings.comingSoon`,{label:t})})}}export{Ci as n,Zt as r,Oi as t};