agent-relay-server 0.42.0 → 0.44.0

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 (97) hide show
  1. package/docs/openapi.json +85 -1
  2. package/package.json +2 -2
  3. package/public/assets/{activity-G6l1nOLj.js → activity-Dkzmef0Z.js} +2 -2
  4. package/public/assets/{activity-G6l1nOLj.js.map → activity-Dkzmef0Z.js.map} +1 -1
  5. package/public/assets/{agent-profiles-BWKpVoNw.js → agent-profiles-DQYHMAyu.js} +2 -2
  6. package/public/assets/{agent-profiles-BWKpVoNw.js.map → agent-profiles-DQYHMAyu.js.map} +1 -1
  7. package/public/assets/{agents-DBuCRS5A.js → agents-atr6HZ1e.js} +2 -2
  8. package/public/assets/{agents-DBuCRS5A.js.map → agents-atr6HZ1e.js.map} +1 -1
  9. package/public/assets/{analytics-BhwMtd0_.js → analytics-azFfAy4R.js} +2 -2
  10. package/public/assets/{analytics-BhwMtd0_.js.map → analytics-azFfAy4R.js.map} +1 -1
  11. package/public/assets/{automation-B7jnsYhH.js → automation-Bk4umHIm.js} +2 -2
  12. package/public/assets/{automation-B7jnsYhH.js.map → automation-Bk4umHIm.js.map} +1 -1
  13. package/public/assets/{branch-state-badge-dN2mQ2gs.js → branch-state-badge-DymObp8d.js} +2 -2
  14. package/public/assets/{branch-state-badge-dN2mQ2gs.js.map → branch-state-badge-DymObp8d.js.map} +1 -1
  15. package/public/assets/channels-B_0wDy0s.js +2 -0
  16. package/public/assets/{channels-CQy-JL7o.js.map → channels-B_0wDy0s.js.map} +1 -1
  17. package/public/assets/chat-DxV4MyYF.js +2 -0
  18. package/public/assets/chat-DxV4MyYF.js.map +1 -0
  19. package/public/assets/{connectors-ByNxzq2k.js → connectors-DLqYF2_3.js} +2 -2
  20. package/public/assets/{connectors-ByNxzq2k.js.map → connectors-DLqYF2_3.js.map} +1 -1
  21. package/public/assets/display-ConJ9cJB.js.map +1 -1
  22. package/public/assets/{formatted-body-impl-BXuR2gfL.js → formatted-body-impl-LK0QcFLC.js} +2 -2
  23. package/public/assets/{formatted-body-impl-BXuR2gfL.js.map → formatted-body-impl-LK0QcFLC.js.map} +1 -1
  24. package/public/assets/{index-CAnJGSBl.js → index-CT10XH5Y.js} +8 -8
  25. package/public/assets/{index-CAnJGSBl.js.map → index-CT10XH5Y.js.map} +1 -1
  26. package/public/assets/index-Ryvn1efN.css +2 -0
  27. package/public/assets/{integrations-BBmL-PnQ.js → integrations-CdeQuRSQ.js} +2 -2
  28. package/public/assets/{integrations-BBmL-PnQ.js.map → integrations-CdeQuRSQ.js.map} +1 -1
  29. package/public/assets/{maintenance-B1bX9ety.js → maintenance-DbqSE_ps.js} +2 -2
  30. package/public/assets/{maintenance-B1bX9ety.js.map → maintenance-DbqSE_ps.js.map} +1 -1
  31. package/public/assets/{managed-agents-D12-nGKd.js → managed-agents-BxhRiBVn.js} +2 -2
  32. package/public/assets/{managed-agents-D12-nGKd.js.map → managed-agents-BxhRiBVn.js.map} +1 -1
  33. package/public/assets/{markdown-preview-impl-BWd3swt8.js → markdown-preview-impl-Dz2Spmat.js} +2 -2
  34. package/public/assets/{markdown-preview-impl-BWd3swt8.js.map → markdown-preview-impl-Dz2Spmat.js.map} +1 -1
  35. package/public/assets/{memory-4ERBFJBZ.js → memory-BTjUKTyA.js} +2 -2
  36. package/public/assets/{memory-4ERBFJBZ.js.map → memory-BTjUKTyA.js.map} +1 -1
  37. package/public/assets/{messages-B3ZES72c.js → messages-C8z05Y3O.js} +2 -2
  38. package/public/assets/{messages-B3ZES72c.js.map → messages-C8z05Y3O.js.map} +1 -1
  39. package/public/assets/{orchestrators-qKPntM-a.js → orchestrators-DQqtYryc.js} +2 -2
  40. package/public/assets/{orchestrators-qKPntM-a.js.map → orchestrators-DQqtYryc.js.map} +1 -1
  41. package/public/assets/{overview-ekmeyPaO.js → overview-CGYu6qQr.js} +2 -2
  42. package/public/assets/{overview-ekmeyPaO.js.map → overview-CGYu6qQr.js.map} +1 -1
  43. package/public/assets/pairs-BgqXzCto.js +2 -0
  44. package/public/assets/{pairs-B2QdTF0M.js.map → pairs-BgqXzCto.js.map} +1 -1
  45. package/public/assets/{security-WkMkEhb7.js → security-BqfRVw-p.js} +2 -2
  46. package/public/assets/{security-WkMkEhb7.js.map → security-BqfRVw-p.js.map} +1 -1
  47. package/public/assets/{settings-C5aXX3od.js → settings-63whklIq.js} +3 -3
  48. package/public/assets/{settings-C5aXX3od.js.map → settings-63whklIq.js.map} +1 -1
  49. package/public/assets/store-B6qT5_de.js +9 -0
  50. package/public/assets/store-B6qT5_de.js.map +1 -0
  51. package/public/assets/tasks-DiZ_4TYW.js +2 -0
  52. package/public/assets/{tasks-ppuVeXkO.js.map → tasks-DiZ_4TYW.js.map} +1 -1
  53. package/public/assets/{terminal-viewer-impl-DXycIJKe.js → terminal-viewer-impl-D3T1F77z.js} +2 -2
  54. package/public/assets/{terminal-viewer-impl-DXycIJKe.js.map → terminal-viewer-impl-D3T1F77z.js.map} +1 -1
  55. package/public/assets/work-queue-C1p2Hybt.js +2 -0
  56. package/public/assets/{work-queue-C8UzeekT.js.map → work-queue-C1p2Hybt.js.map} +1 -1
  57. package/public/assets/{workspaces-BD1P6J21.js → workspaces-DqVr0uN7.js} +2 -2
  58. package/public/assets/{workspaces-BD1P6J21.js.map → workspaces-DqVr0uN7.js.map} +1 -1
  59. package/public/index.html +3 -3
  60. package/src/agent-ref.ts +7 -4
  61. package/src/channel-target.ts +1 -0
  62. package/src/db/agent-search.ts +6 -0
  63. package/src/db/agents.ts +11 -2
  64. package/src/db/channels.ts +2 -1
  65. package/src/db/delivery.ts +4 -1
  66. package/src/db/index.ts +1 -0
  67. package/src/db/mappers.ts +1 -1
  68. package/src/db/message-reads.ts +10 -1
  69. package/src/db/migrations.ts +54 -2
  70. package/src/db/plans.ts +17 -2
  71. package/src/db/schema.ts +24 -3
  72. package/src/db/teams.ts +151 -0
  73. package/src/mcp-plan-tools.ts +7 -3
  74. package/src/mcp-team-tools.ts +87 -0
  75. package/src/mcp.ts +6 -1
  76. package/src/routes/index.ts +4 -0
  77. package/src/routes/integrations.ts +2 -1
  78. package/src/routes/messages.ts +1 -1
  79. package/src/routes/plans.ts +9 -3
  80. package/src/routes/teams.ts +60 -0
  81. package/src/runtime-tokens.ts +9 -3
  82. package/src/security.ts +7 -1
  83. package/src/services/plan-graph.ts +17 -3
  84. package/src/services/register-agent.ts +3 -1
  85. package/src/services/spawn-agent.ts +4 -1
  86. package/src/services/team.ts +69 -0
  87. package/src/token-db.ts +3 -3
  88. package/src/validation.ts +2 -0
  89. package/public/assets/channels-CQy-JL7o.js +0 -2
  90. package/public/assets/chat-KaK5_x65.js +0 -2
  91. package/public/assets/chat-KaK5_x65.js.map +0 -1
  92. package/public/assets/index-DzRKGPXS.css +0 -2
  93. package/public/assets/pairs-B2QdTF0M.js +0 -2
  94. package/public/assets/store-CtKmqMfx.js +0 -9
  95. package/public/assets/store-CtKmqMfx.js.map +0 -1
  96. package/public/assets/tasks-ppuVeXkO.js +0 -2
  97. package/public/assets/work-queue-C8UzeekT.js +0 -2
@@ -1,10 +1,10 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{Mn as t,O as n,Un as r,an as i,c as a,fn as o,g as s,h as c,in as l,jn as u,kn as d,tn as f,vt as p,wt as m}from"./lucide-react-ChOGD4vc.js";import{t as h}from"./react-dom-DgWuIw1o.js";import{l as g,s as _,t as v}from"./store-CtKmqMfx.js";import{o as y,r as b}from"./dist-CSISzAHD.js";import{t as x}from"./dist-DvLO--_O.js";import{i as S,n as C,t as w}from"./dist-MdPDPcyo.js";import{t as T}from"./dist-Dvspm7RE.js";import{t as E}from"./dist-BiVJ8IWp.js";import{a as ee,i as D,n as te,o as O,r as ne,s as re,t as ie}from"./es2015-Cu7l1536.js";import{t as ae}from"./dist-BkDVLgYg.js";import{t as k}from"./dist-D5y1HX8f.js";import{n as A,t as oe}from"./switch-Bp64beKV.js";import{a as j,i as M,n as se,r as N,t as P}from"./dist-svixSeDF.js";import{t as ce}from"./dist-D33pM1xy.js";import{t as F}from"./button-BuTu0MHx.js";import{t as I}from"./input-CawU8wfc.js";import{W as le,r as L}from"./index-CAnJGSBl.js";var R=e(r(),1),ue=e(h(),1),z=u(),de=[` `,`Enter`,`ArrowUp`,`ArrowDown`],fe=[` `,`Enter`],B=`Select`,[pe,me,he]=T(B),[V,ge]=S(B,[he,j]),_e=j(),[ve,H]=V(B),[ye,be]=V(B),xe=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:u,autoComplete:d,disabled:f,required:p,form:m}=e,h=_e(t),[g,_]=R.useState(null),[v,y]=R.useState(null),[b,x]=R.useState(!1),S=ae(l),[C,w]=E({prop:r,defaultProp:i??!1,onChange:a,caller:B}),[T,ee]=E({prop:o,defaultProp:s,onChange:c,caller:B}),D=R.useRef(null),te=g?m||!!g.closest(`form`):!0,[O,ne]=R.useState(new Set),ie=Array.from(O).map(e=>e.props.value).join(`;`);return(0,z.jsx)(M,{...h,children:(0,z.jsxs)(ve,{required:p,scope:t,trigger:g,onTriggerChange:_,valueNode:v,onValueNodeChange:y,valueNodeHasChildren:b,onValueNodeHasChildrenChange:x,contentId:re(),value:T,onValueChange:ee,open:C,onOpenChange:w,dir:S,triggerPointerDownPosRef:D,disabled:f,children:[(0,z.jsx)(pe.Provider,{scope:t,children:(0,z.jsx)(ye,{scope:e.__scopeSelect,onNativeOptionAdd:R.useCallback(e=>{ne(t=>new Set(t).add(e))},[]),onNativeOptionRemove:R.useCallback(e=>{ne(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),te?(0,z.jsxs)(ft,{"aria-hidden":!0,required:p,tabIndex:-1,name:u,autoComplete:d,value:T,onChange:e=>ee(e.target.value),disabled:f,form:m,children:[T===void 0?(0,z.jsx)(`option`,{value:``}):null,Array.from(O)]},ie):null]})})};xe.displayName=B;var Se=`SelectTrigger`,Ce=R.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=_e(n),o=H(Se,n),s=o.disabled||r,c=y(t,o.onTriggerChange),l=me(n),u=R.useRef(`touch`),[d,f,p]=mt(e=>{let t=l().filter(e=>!e.disabled),n=ht(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),m=e=>{s||(o.onOpenChange(!0),p()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,z.jsx)(P,{asChild:!0,...a,children:(0,z.jsx)(x.button,{type:`button`,role:`combobox`,"aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:s,"data-disabled":s?``:void 0,"data-placeholder":pt(o.value)?``:void 0,...i,ref:c,onClick:C(i.onClick,e=>{e.currentTarget.focus(),u.current!==`mouse`&&m(e)}),onPointerDown:C(i.onPointerDown,e=>{u.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(m(e),e.preventDefault())}),onKeyDown:C(i.onKeyDown,e=>{let t=d.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&f(e.key),!(t&&e.key===` `)&&de.includes(e.key)&&(m(),e.preventDefault())})})})});Ce.displayName=Se;var we=`SelectValue`,Te=R.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...s}=e,c=H(we,n),{onValueNodeHasChildrenChange:l}=c,u=a!==void 0,d=y(t,c.onValueNodeChange);return w(()=>{l(u)},[l,u]),(0,z.jsx)(x.span,{...s,ref:d,style:{pointerEvents:`none`},children:pt(c.value)?(0,z.jsx)(z.Fragment,{children:o}):a})});Te.displayName=we;var Ee=`SelectIcon`,De=R.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,z.jsx)(x.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});De.displayName=Ee;var Oe=`SelectPortal`,ke=e=>(0,z.jsx)(D,{asChild:!0,...e});ke.displayName=Oe;var U=`SelectContent`,Ae=R.forwardRef((e,t)=>{let n=H(U,e.__scopeSelect),[r,i]=R.useState();if(w(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?ue.createPortal((0,z.jsx)(je,{scope:e.__scopeSelect,children:(0,z.jsx)(pe.Slot,{scope:e.__scopeSelect,children:(0,z.jsx)(`div`,{children:e.children})})}),t):null}return(0,z.jsx)(Pe,{...e,ref:t})});Ae.displayName=U;var W=10,[je,G]=V(U),Me=`SelectContentImpl`,Ne=b(`SelectContent.RemoveScroll`),Pe=R.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g,..._}=e,v=H(U,n),[b,x]=R.useState(null),[S,w]=R.useState(null),T=y(t,e=>x(e)),[E,D]=R.useState(null),[re,ae]=R.useState(null),k=me(n),[A,oe]=R.useState(!1),j=R.useRef(!1);R.useEffect(()=>{if(b)return ie(b)},[b]),ne();let M=R.useCallback(e=>{let[t,...n]=k().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&S&&(S.scrollTop=0),n===r&&S&&(S.scrollTop=S.scrollHeight),n?.focus(),document.activeElement!==i))return},[k,S]),se=R.useCallback(()=>M([E,b]),[M,E,b]);R.useEffect(()=>{A&&se()},[A,se]);let{onOpenChange:N,triggerPointerDownPosRef:P}=v;R.useEffect(()=>{if(b){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(P.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(P.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():b.contains(n.target)||N(!1),document.removeEventListener(`pointermove`,t),P.current=null};return P.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[b,N,P]),R.useEffect(()=>{let e=()=>N(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[N]);let[ce,F]=mt(e=>{let t=k().filter(e=>!e.disabled),n=ht(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),I=R.useCallback((e,t,n)=>{let r=!j.current&&!n;(v.value!==void 0&&v.value===t||r)&&(D(e),r&&(j.current=!0))},[v.value]),le=R.useCallback(()=>b?.focus(),[b]),L=R.useCallback((e,t,n)=>{let r=!j.current&&!n;(v.value!==void 0&&v.value===t||r)&&ae(e)},[v.value]),ue=r===`popper`?Re:Ie,de=ue===Re?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g}:{};return(0,z.jsx)(je,{scope:n,content:b,viewport:S,onViewportChange:w,itemRefCallback:I,selectedItem:E,onItemLeave:le,itemTextRefCallback:L,focusSelectedItem:se,selectedItemText:re,position:r,isPositioned:A,searchRef:ce,children:(0,z.jsx)(te,{as:Ne,allowPinchZoom:!0,children:(0,z.jsx)(ee,{asChild:!0,trapped:v.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:C(i,e=>{v.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,z.jsx)(O,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>v.onOpenChange(!1),children:(0,z.jsx)(ue,{role:`listbox`,id:v.contentId,"data-state":v.open?`open`:`closed`,dir:v.dir,onContextMenu:e=>e.preventDefault(),..._,...de,onPlaced:()=>oe(!0),ref:T,style:{display:`flex`,flexDirection:`column`,outline:`none`,..._.style},onKeyDown:C(_.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&F(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=k().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>M(t)),e.preventDefault()}})})})})})})});Pe.displayName=Me;var Fe=`SelectItemAlignedPosition`,Ie=R.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=H(U,n),o=G(U,n),[s,c]=R.useState(null),[l,u]=R.useState(null),d=y(t,e=>u(e)),f=me(n),p=R.useRef(!1),m=R.useRef(!0),{viewport:h,selectedItem:g,selectedItemText:_,focusSelectedItem:v}=o,b=R.useCallback(()=>{if(a.trigger&&a.valueNode&&s&&l&&h&&g&&_){let e=a.trigger.getBoundingClientRect(),t=l.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=_.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-W,d=ce(a,[W,Math.max(W,u-l)]);s.style.minWidth=c+`px`,s.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-W,d=ce(a,[W,Math.max(W,u-l)]);s.style.minWidth=c+`px`,s.style.right=d+`px`}let o=f(),c=window.innerHeight-W*2,u=h.scrollHeight,d=window.getComputedStyle(l),m=parseInt(d.borderTopWidth,10),v=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=m+v+u+b+y,S=Math.min(g.offsetHeight*5,x),C=window.getComputedStyle(h),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-W,ee=c-E,D=g.offsetHeight/2,te=g.offsetTop+D,O=m+v+te,ne=x-O;if(O<=E){let e=o.length>0&&g===o[o.length-1].ref.current;s.style.bottom=`0px`;let t=l.clientHeight-h.offsetTop-h.offsetHeight,n=O+Math.max(ee,D+(e?T:0)+t+y);s.style.height=n+`px`}else{let e=o.length>0&&g===o[0].ref.current;s.style.top=`0px`;let t=Math.max(E,m+h.offsetTop+(e?w:0)+D)+ne;s.style.height=t+`px`,h.scrollTop=O-E+h.offsetTop}s.style.margin=`${W}px 0`,s.style.minHeight=S+`px`,s.style.maxHeight=c+`px`,r?.(),requestAnimationFrame(()=>p.current=!0)}},[f,a.trigger,a.valueNode,s,l,h,g,_,a.dir,r]);w(()=>b(),[b]);let[S,C]=R.useState();return w(()=>{l&&C(window.getComputedStyle(l).zIndex)},[l]),(0,z.jsx)(ze,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:p,onScrollButtonChange:R.useCallback(e=>{e&&m.current===!0&&(b(),v?.(),m.current=!1)},[b,v]),children:(0,z.jsx)(`div`,{ref:c,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:S},children:(0,z.jsx)(x.div,{...i,ref:d,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});Ie.displayName=Fe;var Le=`SelectPopperPosition`,Re=R.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=W,...a}=e,o=_e(n);return(0,z.jsx)(N,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});Re.displayName=Le;var[ze,Be]=V(U,{}),Ve=`SelectViewport`,He=R.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=G(Ve,n),o=Be(Ve,n),s=y(t,a.onViewportChange),c=R.useRef(0);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,z.jsx)(pe.Slot,{scope:n,children:(0,z.jsx)(x.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:s,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:C(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(c.current-t.scrollTop);if(e>0){let r=window.innerHeight-W*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}c.current=t.scrollTop})})})]})});He.displayName=Ve;var Ue=`SelectGroup`,[We,Ge]=V(Ue),Ke=R.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=re();return(0,z.jsx)(We,{scope:n,id:i,children:(0,z.jsx)(x.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});Ke.displayName=Ue;var qe=`SelectLabel`,Je=R.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Ge(qe,n);return(0,z.jsx)(x.div,{id:i.id,...r,ref:t})});Je.displayName=qe;var Ye=`SelectItem`,[Xe,Ze]=V(Ye),Qe=R.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,s=H(Ye,n),c=G(Ye,n),l=s.value===r,[u,d]=R.useState(a??``),[f,p]=R.useState(!1),m=y(t,e=>c.itemRefCallback?.(e,r,i)),h=re(),g=R.useRef(`touch`),_=()=>{i||(s.onValueChange(r),s.onOpenChange(!1))};if(r===``)throw Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,z.jsx)(Xe,{scope:n,value:r,disabled:i,textId:h,isSelected:l,onItemTextChange:R.useCallback(e=>{d(t=>t||(e?.textContent??``).trim())},[]),children:(0,z.jsx)(pe.ItemSlot,{scope:n,value:r,disabled:i,textValue:u,children:(0,z.jsx)(x.div,{role:`option`,"aria-labelledby":h,"data-highlighted":f?``:void 0,"aria-selected":l&&f,"data-state":l?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:m,onFocus:C(o.onFocus,()=>p(!0)),onBlur:C(o.onBlur,()=>p(!1)),onClick:C(o.onClick,()=>{g.current!==`mouse`&&_()}),onPointerUp:C(o.onPointerUp,()=>{g.current===`mouse`&&_()}),onPointerDown:C(o.onPointerDown,e=>{g.current=e.pointerType}),onPointerMove:C(o.onPointerMove,e=>{g.current=e.pointerType,i?c.onItemLeave?.():g.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:C(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:C(o.onKeyDown,e=>{c.searchRef?.current!==``&&e.key===` `||(fe.includes(e.key)&&_(),e.key===` `&&e.preventDefault())})})})})});Qe.displayName=Ye;var K=`SelectItemText`,$e=R.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=H(K,n),s=G(K,n),c=Ze(K,n),l=be(K,n),[u,d]=R.useState(null),f=y(t,e=>d(e),c.onItemTextChange,e=>s.itemTextRefCallback?.(e,c.value,c.disabled)),p=u?.textContent,m=R.useMemo(()=>(0,z.jsx)(`option`,{value:c.value,disabled:c.disabled,children:p},c.value),[c.disabled,c.value,p]),{onNativeOptionAdd:h,onNativeOptionRemove:g}=l;return w(()=>(h(m),()=>g(m)),[h,g,m]),(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(x.span,{id:c.textId,...a,ref:f}),c.isSelected&&o.valueNode&&!o.valueNodeHasChildren?ue.createPortal(a.children,o.valueNode):null]})});$e.displayName=K;var et=`SelectItemIndicator`,tt=R.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return Ze(et,n).isSelected?(0,z.jsx)(x.span,{"aria-hidden":!0,...r,ref:t}):null});tt.displayName=et;var nt=`SelectScrollUpButton`,rt=R.forwardRef((e,t)=>{let n=G(nt,e.__scopeSelect),r=Be(nt,e.__scopeSelect),[i,a]=R.useState(!1),o=y(t,r.onScrollButtonChange);return w(()=>{if(n.viewport&&n.isPositioned){let e=function(){a(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,z.jsx)(ot,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});rt.displayName=nt;var it=`SelectScrollDownButton`,at=R.forwardRef((e,t)=>{let n=G(it,e.__scopeSelect),r=Be(it,e.__scopeSelect),[i,a]=R.useState(!1),o=y(t,r.onScrollButtonChange);return w(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)<e)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,z.jsx)(ot,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});at.displayName=it;var ot=R.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=G(`SelectScrollButton`,n),o=R.useRef(null),s=me(n),c=R.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return R.useEffect(()=>()=>c(),[c]),w(()=>{s().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[s]),(0,z.jsx)(x.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:C(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:C(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:C(i.onPointerLeave,()=>{c()})})}),st=`SelectSeparator`,ct=R.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,z.jsx)(x.div,{"aria-hidden":!0,...r,ref:t})});ct.displayName=st;var lt=`SelectArrow`,ut=R.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=_e(n),a=H(lt,n),o=G(lt,n);return a.open&&o.position===`popper`?(0,z.jsx)(se,{...i,...r,ref:t}):null});ut.displayName=lt;var dt=`SelectBubbleInput`,ft=R.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=R.useRef(null),a=y(r,i),o=A(t);return R.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(o!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,z.jsx)(x.select,{...n,style:{...le,...n.style},ref:a,defaultValue:t})});ft.displayName=dt;function pt(e){return e===``||e===void 0}function mt(e){let t=k(e),n=R.useRef(``),r=R.useRef(0),i=R.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=R.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return R.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function ht(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=gt(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function gt(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var _t=xe,vt=Ce,yt=Te,bt=De,xt=ke,St=Ae,Ct=He,wt=Qe,Tt=$e,Et=tt,Dt=rt,Ot=at;function q({...e}){return(0,z.jsx)(_t,{"data-slot":`select`,...e})}function J({...e}){return(0,z.jsx)(yt,{"data-slot":`select-value`,...e})}function Y({className:e,size:t=`default`,children:n,...r}){return(0,z.jsxs)(vt,{"data-slot":`select-trigger`,"data-size":t,className:d(`flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r,children:[n,(0,z.jsx)(bt,{asChild:!0,children:(0,z.jsx)(l,{className:`pointer-events-none size-4 text-muted-foreground`})})]})}function X({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){return(0,z.jsx)(xt,{children:(0,z.jsxs)(St,{"data-slot":`select-content`,"data-align-trigger":n===`item-aligned`,className:d(`relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:r,...i,children:[(0,z.jsx)(kt,{}),(0,z.jsx)(Ct,{"data-position":n,className:d(`data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)`,n===`popper`&&``),children:t}),(0,z.jsx)(At,{})]})})}function Z({className:e,children:t,...n}){return(0,z.jsxs)(wt,{"data-slot":`select-item`,className:d(`relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,z.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex size-4 items-center justify-center`,children:(0,z.jsx)(Et,{children:(0,z.jsx)(i,{className:`pointer-events-none`})})}),(0,z.jsx)(Tt,{children:t})]})}function kt({className:e,...t}){return(0,z.jsx)(Dt,{"data-slot":`select-scroll-up-button`,className:d(`z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4`,e),...t,children:(0,z.jsx)(f,{})})}function At({className:e,...t}){return(0,z.jsx)(Ot,{"data-slot":`select-scroll-down-button`,className:d(`z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4`,e),...t,children:(0,z.jsx)(l,{})})}var jt=[`claude`,`codex`];function Mt(){let[e,r]=(0,R.useState)({}),[i,a]=(0,R.useState)(`claude`),[o,l]=(0,R.useState)(``);(0,R.useEffect)(()=>{t(`GET`,`/providers/config`).then(r).catch(e=>l(e.message))},[]);let u=e[i],d=t=>{u&&r({...e,[i]:{...u,...t}})};async function f(){if(!u)return;let n=await t(`PUT`,`/providers/${i}/config`,u);r({...e,[i]:n}),l(`${i} saved`)}async function p(){let e=await t(`POST`,`/providers/${i}/config/test`);l(e.ok?`${i} command: ${e.path||`found`}`:e.error||`command not found`)}return(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h1`,{className:`text-xl font-semibold`,children:`Settings`}),(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Provider runner configuration`})]}),(0,z.jsx)(`div`,{className:`flex gap-2`,children:jt.map(e=>(0,z.jsxs)(F,{variant:i===e?`default`:`outline`,onClick:()=>a(e),children:[(0,z.jsx)(s,{className:`w-4 h-4`}),e]},e))})]}),u&&(0,z.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-[minmax(0,1fr)_minmax(280px,360px)]`,children:[(0,z.jsxs)(`section`,{className:`space-y-3`,children:[(0,z.jsx)(Q,{label:`Command`,children:(0,z.jsx)(I,{value:u.command,onChange:e=>d({command:e.target.value})})}),(0,z.jsx)(Q,{label:`Default arguments`,children:(0,z.jsx)(L,{rows:3,value:u.defaultArgs.join(`
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{Mn as t,O as n,Un as r,an as i,c as a,fn as o,g as s,h as c,in as l,jn as u,kn as d,tn as f,vt as p,wt as m}from"./lucide-react-ChOGD4vc.js";import{t as h}from"./react-dom-DgWuIw1o.js";import{c as g,t as _,u as v}from"./store-B6qT5_de.js";import{o as y,r as b}from"./dist-CSISzAHD.js";import{t as x}from"./dist-DvLO--_O.js";import{i as S,n as C,t as w}from"./dist-MdPDPcyo.js";import{t as T}from"./dist-Dvspm7RE.js";import{t as E}from"./dist-BiVJ8IWp.js";import{a as ee,i as D,n as te,o as O,r as ne,s as re,t as ie}from"./es2015-Cu7l1536.js";import{t as ae}from"./dist-BkDVLgYg.js";import{t as k}from"./dist-D5y1HX8f.js";import{n as A,t as oe}from"./switch-Bp64beKV.js";import{a as j,i as M,n as se,r as N,t as P}from"./dist-svixSeDF.js";import{t as ce}from"./dist-D33pM1xy.js";import{t as F}from"./button-BuTu0MHx.js";import{t as I}from"./input-CawU8wfc.js";import{W as le,r as L}from"./index-CT10XH5Y.js";var R=e(r(),1),ue=e(h(),1),z=u(),de=[` `,`Enter`,`ArrowUp`,`ArrowDown`],fe=[` `,`Enter`],B=`Select`,[pe,me,he]=T(B),[V,ge]=S(B,[he,j]),_e=j(),[ve,H]=V(B),[ye,be]=V(B),xe=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:u,autoComplete:d,disabled:f,required:p,form:m}=e,h=_e(t),[g,_]=R.useState(null),[v,y]=R.useState(null),[b,x]=R.useState(!1),S=ae(l),[C,w]=E({prop:r,defaultProp:i??!1,onChange:a,caller:B}),[T,ee]=E({prop:o,defaultProp:s,onChange:c,caller:B}),D=R.useRef(null),te=g?m||!!g.closest(`form`):!0,[O,ne]=R.useState(new Set),ie=Array.from(O).map(e=>e.props.value).join(`;`);return(0,z.jsx)(M,{...h,children:(0,z.jsxs)(ve,{required:p,scope:t,trigger:g,onTriggerChange:_,valueNode:v,onValueNodeChange:y,valueNodeHasChildren:b,onValueNodeHasChildrenChange:x,contentId:re(),value:T,onValueChange:ee,open:C,onOpenChange:w,dir:S,triggerPointerDownPosRef:D,disabled:f,children:[(0,z.jsx)(pe.Provider,{scope:t,children:(0,z.jsx)(ye,{scope:e.__scopeSelect,onNativeOptionAdd:R.useCallback(e=>{ne(t=>new Set(t).add(e))},[]),onNativeOptionRemove:R.useCallback(e=>{ne(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),te?(0,z.jsxs)(ft,{"aria-hidden":!0,required:p,tabIndex:-1,name:u,autoComplete:d,value:T,onChange:e=>ee(e.target.value),disabled:f,form:m,children:[T===void 0?(0,z.jsx)(`option`,{value:``}):null,Array.from(O)]},ie):null]})})};xe.displayName=B;var Se=`SelectTrigger`,Ce=R.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=_e(n),o=H(Se,n),s=o.disabled||r,c=y(t,o.onTriggerChange),l=me(n),u=R.useRef(`touch`),[d,f,p]=mt(e=>{let t=l().filter(e=>!e.disabled),n=ht(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),m=e=>{s||(o.onOpenChange(!0),p()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,z.jsx)(P,{asChild:!0,...a,children:(0,z.jsx)(x.button,{type:`button`,role:`combobox`,"aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:s,"data-disabled":s?``:void 0,"data-placeholder":pt(o.value)?``:void 0,...i,ref:c,onClick:C(i.onClick,e=>{e.currentTarget.focus(),u.current!==`mouse`&&m(e)}),onPointerDown:C(i.onPointerDown,e=>{u.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(m(e),e.preventDefault())}),onKeyDown:C(i.onKeyDown,e=>{let t=d.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&f(e.key),!(t&&e.key===` `)&&de.includes(e.key)&&(m(),e.preventDefault())})})})});Ce.displayName=Se;var we=`SelectValue`,Te=R.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...s}=e,c=H(we,n),{onValueNodeHasChildrenChange:l}=c,u=a!==void 0,d=y(t,c.onValueNodeChange);return w(()=>{l(u)},[l,u]),(0,z.jsx)(x.span,{...s,ref:d,style:{pointerEvents:`none`},children:pt(c.value)?(0,z.jsx)(z.Fragment,{children:o}):a})});Te.displayName=we;var Ee=`SelectIcon`,De=R.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,z.jsx)(x.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});De.displayName=Ee;var Oe=`SelectPortal`,ke=e=>(0,z.jsx)(D,{asChild:!0,...e});ke.displayName=Oe;var U=`SelectContent`,Ae=R.forwardRef((e,t)=>{let n=H(U,e.__scopeSelect),[r,i]=R.useState();if(w(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?ue.createPortal((0,z.jsx)(je,{scope:e.__scopeSelect,children:(0,z.jsx)(pe.Slot,{scope:e.__scopeSelect,children:(0,z.jsx)(`div`,{children:e.children})})}),t):null}return(0,z.jsx)(Pe,{...e,ref:t})});Ae.displayName=U;var W=10,[je,G]=V(U),Me=`SelectContentImpl`,Ne=b(`SelectContent.RemoveScroll`),Pe=R.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g,..._}=e,v=H(U,n),[b,x]=R.useState(null),[S,w]=R.useState(null),T=y(t,e=>x(e)),[E,D]=R.useState(null),[re,ae]=R.useState(null),k=me(n),[A,oe]=R.useState(!1),j=R.useRef(!1);R.useEffect(()=>{if(b)return ie(b)},[b]),ne();let M=R.useCallback(e=>{let[t,...n]=k().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&S&&(S.scrollTop=0),n===r&&S&&(S.scrollTop=S.scrollHeight),n?.focus(),document.activeElement!==i))return},[k,S]),se=R.useCallback(()=>M([E,b]),[M,E,b]);R.useEffect(()=>{A&&se()},[A,se]);let{onOpenChange:N,triggerPointerDownPosRef:P}=v;R.useEffect(()=>{if(b){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(P.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(P.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():b.contains(n.target)||N(!1),document.removeEventListener(`pointermove`,t),P.current=null};return P.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[b,N,P]),R.useEffect(()=>{let e=()=>N(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[N]);let[ce,F]=mt(e=>{let t=k().filter(e=>!e.disabled),n=ht(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),I=R.useCallback((e,t,n)=>{let r=!j.current&&!n;(v.value!==void 0&&v.value===t||r)&&(D(e),r&&(j.current=!0))},[v.value]),le=R.useCallback(()=>b?.focus(),[b]),L=R.useCallback((e,t,n)=>{let r=!j.current&&!n;(v.value!==void 0&&v.value===t||r)&&ae(e)},[v.value]),ue=r===`popper`?Re:Ie,de=ue===Re?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g}:{};return(0,z.jsx)(je,{scope:n,content:b,viewport:S,onViewportChange:w,itemRefCallback:I,selectedItem:E,onItemLeave:le,itemTextRefCallback:L,focusSelectedItem:se,selectedItemText:re,position:r,isPositioned:A,searchRef:ce,children:(0,z.jsx)(te,{as:Ne,allowPinchZoom:!0,children:(0,z.jsx)(ee,{asChild:!0,trapped:v.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:C(i,e=>{v.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,z.jsx)(O,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>v.onOpenChange(!1),children:(0,z.jsx)(ue,{role:`listbox`,id:v.contentId,"data-state":v.open?`open`:`closed`,dir:v.dir,onContextMenu:e=>e.preventDefault(),..._,...de,onPlaced:()=>oe(!0),ref:T,style:{display:`flex`,flexDirection:`column`,outline:`none`,..._.style},onKeyDown:C(_.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&F(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=k().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>M(t)),e.preventDefault()}})})})})})})});Pe.displayName=Me;var Fe=`SelectItemAlignedPosition`,Ie=R.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=H(U,n),o=G(U,n),[s,c]=R.useState(null),[l,u]=R.useState(null),d=y(t,e=>u(e)),f=me(n),p=R.useRef(!1),m=R.useRef(!0),{viewport:h,selectedItem:g,selectedItemText:_,focusSelectedItem:v}=o,b=R.useCallback(()=>{if(a.trigger&&a.valueNode&&s&&l&&h&&g&&_){let e=a.trigger.getBoundingClientRect(),t=l.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=_.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-W,d=ce(a,[W,Math.max(W,u-l)]);s.style.minWidth=c+`px`,s.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-W,d=ce(a,[W,Math.max(W,u-l)]);s.style.minWidth=c+`px`,s.style.right=d+`px`}let o=f(),c=window.innerHeight-W*2,u=h.scrollHeight,d=window.getComputedStyle(l),m=parseInt(d.borderTopWidth,10),v=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=m+v+u+b+y,S=Math.min(g.offsetHeight*5,x),C=window.getComputedStyle(h),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-W,ee=c-E,D=g.offsetHeight/2,te=g.offsetTop+D,O=m+v+te,ne=x-O;if(O<=E){let e=o.length>0&&g===o[o.length-1].ref.current;s.style.bottom=`0px`;let t=l.clientHeight-h.offsetTop-h.offsetHeight,n=O+Math.max(ee,D+(e?T:0)+t+y);s.style.height=n+`px`}else{let e=o.length>0&&g===o[0].ref.current;s.style.top=`0px`;let t=Math.max(E,m+h.offsetTop+(e?w:0)+D)+ne;s.style.height=t+`px`,h.scrollTop=O-E+h.offsetTop}s.style.margin=`${W}px 0`,s.style.minHeight=S+`px`,s.style.maxHeight=c+`px`,r?.(),requestAnimationFrame(()=>p.current=!0)}},[f,a.trigger,a.valueNode,s,l,h,g,_,a.dir,r]);w(()=>b(),[b]);let[S,C]=R.useState();return w(()=>{l&&C(window.getComputedStyle(l).zIndex)},[l]),(0,z.jsx)(ze,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:p,onScrollButtonChange:R.useCallback(e=>{e&&m.current===!0&&(b(),v?.(),m.current=!1)},[b,v]),children:(0,z.jsx)(`div`,{ref:c,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:S},children:(0,z.jsx)(x.div,{...i,ref:d,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});Ie.displayName=Fe;var Le=`SelectPopperPosition`,Re=R.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=W,...a}=e,o=_e(n);return(0,z.jsx)(N,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});Re.displayName=Le;var[ze,Be]=V(U,{}),Ve=`SelectViewport`,He=R.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=G(Ve,n),o=Be(Ve,n),s=y(t,a.onViewportChange),c=R.useRef(0);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,z.jsx)(pe.Slot,{scope:n,children:(0,z.jsx)(x.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:s,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:C(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(c.current-t.scrollTop);if(e>0){let r=window.innerHeight-W*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}c.current=t.scrollTop})})})]})});He.displayName=Ve;var Ue=`SelectGroup`,[We,Ge]=V(Ue),Ke=R.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=re();return(0,z.jsx)(We,{scope:n,id:i,children:(0,z.jsx)(x.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});Ke.displayName=Ue;var qe=`SelectLabel`,Je=R.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Ge(qe,n);return(0,z.jsx)(x.div,{id:i.id,...r,ref:t})});Je.displayName=qe;var Ye=`SelectItem`,[Xe,Ze]=V(Ye),Qe=R.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,s=H(Ye,n),c=G(Ye,n),l=s.value===r,[u,d]=R.useState(a??``),[f,p]=R.useState(!1),m=y(t,e=>c.itemRefCallback?.(e,r,i)),h=re(),g=R.useRef(`touch`),_=()=>{i||(s.onValueChange(r),s.onOpenChange(!1))};if(r===``)throw Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,z.jsx)(Xe,{scope:n,value:r,disabled:i,textId:h,isSelected:l,onItemTextChange:R.useCallback(e=>{d(t=>t||(e?.textContent??``).trim())},[]),children:(0,z.jsx)(pe.ItemSlot,{scope:n,value:r,disabled:i,textValue:u,children:(0,z.jsx)(x.div,{role:`option`,"aria-labelledby":h,"data-highlighted":f?``:void 0,"aria-selected":l&&f,"data-state":l?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:m,onFocus:C(o.onFocus,()=>p(!0)),onBlur:C(o.onBlur,()=>p(!1)),onClick:C(o.onClick,()=>{g.current!==`mouse`&&_()}),onPointerUp:C(o.onPointerUp,()=>{g.current===`mouse`&&_()}),onPointerDown:C(o.onPointerDown,e=>{g.current=e.pointerType}),onPointerMove:C(o.onPointerMove,e=>{g.current=e.pointerType,i?c.onItemLeave?.():g.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:C(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:C(o.onKeyDown,e=>{c.searchRef?.current!==``&&e.key===` `||(fe.includes(e.key)&&_(),e.key===` `&&e.preventDefault())})})})})});Qe.displayName=Ye;var K=`SelectItemText`,$e=R.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=H(K,n),s=G(K,n),c=Ze(K,n),l=be(K,n),[u,d]=R.useState(null),f=y(t,e=>d(e),c.onItemTextChange,e=>s.itemTextRefCallback?.(e,c.value,c.disabled)),p=u?.textContent,m=R.useMemo(()=>(0,z.jsx)(`option`,{value:c.value,disabled:c.disabled,children:p},c.value),[c.disabled,c.value,p]),{onNativeOptionAdd:h,onNativeOptionRemove:g}=l;return w(()=>(h(m),()=>g(m)),[h,g,m]),(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(x.span,{id:c.textId,...a,ref:f}),c.isSelected&&o.valueNode&&!o.valueNodeHasChildren?ue.createPortal(a.children,o.valueNode):null]})});$e.displayName=K;var et=`SelectItemIndicator`,tt=R.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return Ze(et,n).isSelected?(0,z.jsx)(x.span,{"aria-hidden":!0,...r,ref:t}):null});tt.displayName=et;var nt=`SelectScrollUpButton`,rt=R.forwardRef((e,t)=>{let n=G(nt,e.__scopeSelect),r=Be(nt,e.__scopeSelect),[i,a]=R.useState(!1),o=y(t,r.onScrollButtonChange);return w(()=>{if(n.viewport&&n.isPositioned){let e=function(){a(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,z.jsx)(ot,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});rt.displayName=nt;var it=`SelectScrollDownButton`,at=R.forwardRef((e,t)=>{let n=G(it,e.__scopeSelect),r=Be(it,e.__scopeSelect),[i,a]=R.useState(!1),o=y(t,r.onScrollButtonChange);return w(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)<e)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,z.jsx)(ot,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});at.displayName=it;var ot=R.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=G(`SelectScrollButton`,n),o=R.useRef(null),s=me(n),c=R.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return R.useEffect(()=>()=>c(),[c]),w(()=>{s().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[s]),(0,z.jsx)(x.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:C(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:C(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:C(i.onPointerLeave,()=>{c()})})}),st=`SelectSeparator`,ct=R.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,z.jsx)(x.div,{"aria-hidden":!0,...r,ref:t})});ct.displayName=st;var lt=`SelectArrow`,ut=R.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=_e(n),a=H(lt,n),o=G(lt,n);return a.open&&o.position===`popper`?(0,z.jsx)(se,{...i,...r,ref:t}):null});ut.displayName=lt;var dt=`SelectBubbleInput`,ft=R.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=R.useRef(null),a=y(r,i),o=A(t);return R.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(o!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,z.jsx)(x.select,{...n,style:{...le,...n.style},ref:a,defaultValue:t})});ft.displayName=dt;function pt(e){return e===``||e===void 0}function mt(e){let t=k(e),n=R.useRef(``),r=R.useRef(0),i=R.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=R.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return R.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function ht(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=gt(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function gt(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var _t=xe,vt=Ce,yt=Te,bt=De,xt=ke,St=Ae,Ct=He,wt=Qe,Tt=$e,Et=tt,Dt=rt,Ot=at;function q({...e}){return(0,z.jsx)(_t,{"data-slot":`select`,...e})}function J({...e}){return(0,z.jsx)(yt,{"data-slot":`select-value`,...e})}function Y({className:e,size:t=`default`,children:n,...r}){return(0,z.jsxs)(vt,{"data-slot":`select-trigger`,"data-size":t,className:d(`flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r,children:[n,(0,z.jsx)(bt,{asChild:!0,children:(0,z.jsx)(l,{className:`pointer-events-none size-4 text-muted-foreground`})})]})}function X({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){return(0,z.jsx)(xt,{children:(0,z.jsxs)(St,{"data-slot":`select-content`,"data-align-trigger":n===`item-aligned`,className:d(`relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:r,...i,children:[(0,z.jsx)(kt,{}),(0,z.jsx)(Ct,{"data-position":n,className:d(`data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)`,n===`popper`&&``),children:t}),(0,z.jsx)(At,{})]})})}function Z({className:e,children:t,...n}){return(0,z.jsxs)(wt,{"data-slot":`select-item`,className:d(`relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,z.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex size-4 items-center justify-center`,children:(0,z.jsx)(Et,{children:(0,z.jsx)(i,{className:`pointer-events-none`})})}),(0,z.jsx)(Tt,{children:t})]})}function kt({className:e,...t}){return(0,z.jsx)(Dt,{"data-slot":`select-scroll-up-button`,className:d(`z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4`,e),...t,children:(0,z.jsx)(f,{})})}function At({className:e,...t}){return(0,z.jsx)(Ot,{"data-slot":`select-scroll-down-button`,className:d(`z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4`,e),...t,children:(0,z.jsx)(l,{})})}var jt=[`claude`,`codex`];function Mt(){let[e,r]=(0,R.useState)({}),[i,a]=(0,R.useState)(`claude`),[o,l]=(0,R.useState)(``);(0,R.useEffect)(()=>{t(`GET`,`/providers/config`).then(r).catch(e=>l(e.message))},[]);let u=e[i],d=t=>{u&&r({...e,[i]:{...u,...t}})};async function f(){if(!u)return;let n=await t(`PUT`,`/providers/${i}/config`,u);r({...e,[i]:n}),l(`${i} saved`)}async function p(){let e=await t(`POST`,`/providers/${i}/config/test`);l(e.ok?`${i} command: ${e.path||`found`}`:e.error||`command not found`)}return(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h1`,{className:`text-xl font-semibold`,children:`Settings`}),(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Provider runner configuration`})]}),(0,z.jsx)(`div`,{className:`flex gap-2`,children:jt.map(e=>(0,z.jsxs)(F,{variant:i===e?`default`:`outline`,onClick:()=>a(e),children:[(0,z.jsx)(s,{className:`w-4 h-4`}),e]},e))})]}),u&&(0,z.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-[minmax(0,1fr)_minmax(280px,360px)]`,children:[(0,z.jsxs)(`section`,{className:`space-y-3`,children:[(0,z.jsx)(Q,{label:`Command`,children:(0,z.jsx)(I,{value:u.command,onChange:e=>d({command:e.target.value})})}),(0,z.jsx)(Q,{label:`Default arguments`,children:(0,z.jsx)(L,{rows:3,value:u.defaultArgs.join(`
2
2
  `),onChange:e=>d({defaultArgs:$(e.target.value)})})}),(0,z.jsx)(Q,{label:`Plugin directories`,children:(0,z.jsx)(L,{rows:3,value:u.pluginDirs.join(`
3
3
  `),onChange:e=>d({pluginDirs:$(e.target.value)})})}),(0,z.jsx)(Q,{label:`Environment`,children:(0,z.jsx)(L,{rows:5,value:Bt(u.env),onChange:e=>d({env:Vt(e.target.value)})})})]}),(0,z.jsxs)(`section`,{className:`space-y-3`,children:[(0,z.jsx)(Q,{label:`Capabilities`,children:(0,z.jsx)(L,{rows:3,value:u.defaultCapabilities.join(`
4
4
  `),onChange:e=>d({defaultCapabilities:$(e.target.value)})})}),(0,z.jsx)(Q,{label:`Tags`,children:(0,z.jsx)(L,{rows:3,value:u.defaultTags.join(`
5
5
  `),onChange:e=>d({defaultTags:$(e.target.value)})})}),(0,z.jsx)(Q,{label:`Approval mode`,children:(0,z.jsx)(I,{value:u.defaultApprovalMode,onChange:e=>d({defaultApprovalMode:e.target.value})})}),(0,z.jsx)(Q,{label:`Chat capture mode`,children:(0,z.jsxs)(q,{value:u.chatCaptureMode??`final`,onValueChange:e=>d({chatCaptureMode:e}),children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsxs)(X,{children:[(0,z.jsx)(Z,{value:`final`,children:`Final response only`}),(0,z.jsx)(Z,{value:`full`,children:`Full turn (intermediate messages)`})]})]})}),(0,z.jsx)(Q,{label:`tmux prefix`,children:(0,z.jsx)(I,{value:u.headless.tmuxPrefix,onChange:e=>d({headless:{...u.headless,tmuxPrefix:e.target.value}})})}),(0,z.jsx)(Q,{label:`Shutdown timeout`,children:(0,z.jsx)(I,{type:`number`,value:u.headless.shutdownTimeoutMs,onChange:e=>d({headless:{...u.headless,shutdownTimeoutMs:Number(e.target.value)||1e4}})})}),(0,z.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,z.jsxs)(F,{onClick:f,children:[(0,z.jsx)(n,{className:`w-4 h-4`}),`Save`]}),(0,z.jsxs)(F,{variant:`outline`,onClick:p,children:[(0,z.jsx)(c,{className:`w-4 h-4`}),`Test`]})]}),o&&(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o})]})]}),(0,z.jsx)(Ft,{}),(0,z.jsx)(Pt,{}),(0,z.jsx)(zt,{}),(0,z.jsx)(It,{})]})}var Nt={symlinkPaths:[]};function Pt(){let[e,r]=(0,R.useState)(Nt),[i,a]=(0,R.useState)(``);(0,R.useEffect)(()=>{t(`GET`,`/workspace-config`).then(e=>r({...Nt,...e.value})).catch(e=>a(e.message))},[]);async function o(){try{let n=await t(`PUT`,`/workspace-config`,e);r({...Nt,...n.value}),a(`Workspace config saved`)}catch(e){a(e.message)}}return(0,z.jsxs)(`section`,{className:`space-y-3 rounded-lg border p-4`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(m,{className:`w-4 h-4`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Isolated worktree symlinks`}),(0,z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Untracked files or filename patterns symlinked from main into each isolated worktree (the "Workspace" spawn option), one per line. Plain names like `,(0,z.jsx)(`code`,{children:`AGENTS.md`}),` or `,(0,z.jsx)(`code`,{children:`.claude-rig`}),` match files and directories; entries with `,(0,z.jsxs)(`code`,{children:[`*?[]`,`{}`]}),` are expanded as globs. A path is only linked if it exists in main.`]})]})]}),(0,z.jsx)(Q,{label:`Paths / patterns`,children:(0,z.jsx)(L,{rows:5,placeholder:`AGENTS.md
6
6
  .claude-rig`,value:e.symlinkPaths.join(`
7
- `),onChange:t=>r({...e,symlinkPaths:$(t.target.value)})})}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,z.jsxs)(F,{onClick:o,children:[(0,z.jsx)(n,{className:`w-4 h-4`}),`Save`]}),i&&(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:i})]})]})}function Ft(){let e=v(e=>e.showReasoning),t=v(e=>e.set);return(0,z.jsx)(`section`,{className:`space-y-3 rounded-lg border p-4`,children:(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(o,{className:`w-4 h-4`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Show reasoning details`}),(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Show the agent's internal thinking inline in chat, alongside its narration and tool steps. Off by default — narration is always shown either way.`})]})]}),(0,z.jsx)(oe,{checked:e,onCheckedChange:e=>t({showReasoning:e})})]})})}function It(){let e=v(e=>e.voiceTtsEnabled),t=v(e=>e.setVoiceTtsEnabled),n=v(e=>e.voiceTtsMode),r=v(e=>e.setVoiceTtsMode),i=v(e=>e.voiceTtsKokoroVoice),o=v(e=>e.setVoiceTtsKokoroVoice),s=v(e=>e.voiceTtsBrowserVoice),c=v(e=>e.setVoiceTtsBrowserVoice),l=v(e=>e.voiceInputMode),u=v(e=>e.setVoiceInputMode),[d,f]=(0,R.useState)(()=>g());(0,R.useEffect)(()=>{if(typeof window>`u`||!(`speechSynthesis`in window))return;let e=()=>f(g());return e(),window.speechSynthesis.addEventListener?.(`voiceschanged`,e),()=>window.speechSynthesis.removeEventListener?.(`voiceschanged`,e)},[]);let p=_.some(e=>e.id===i)?_:[..._,{id:i,label:i}];return(0,z.jsxs)(`section`,{className:`space-y-3 rounded-lg border p-4`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(a,{className:`w-4 h-4`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Voice`}),(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Speak agent responses aloud in the active chat, and how push-to-talk behaves.`})]})]}),(0,z.jsx)(oe,{checked:e,onCheckedChange:t})]}),(0,z.jsx)(Q,{label:`Speech engine`,children:(0,z.jsxs)(q,{value:n,onValueChange:e=>r(e),children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsxs)(X,{children:[(0,z.jsx)(Z,{value:`kokoro`,children:`Kokoro (server, natural — falls back to browser)`}),(0,z.jsx)(Z,{value:`browser`,children:`Browser (Web Speech API)`})]})]})}),(0,z.jsx)(Q,{label:`Kokoro voice`,children:(0,z.jsxs)(q,{value:i,onValueChange:o,children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsx)(X,{children:p.map(e=>(0,z.jsx)(Z,{value:e.id,children:e.label},e.id))})]})}),(0,z.jsx)(Q,{label:`Browser voice`,children:(0,z.jsxs)(q,{value:s||`__default__`,onValueChange:e=>c(e===`__default__`?``:e),children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsxs)(X,{children:[(0,z.jsx)(Z,{value:`__default__`,children:`System default`}),d.map(e=>(0,z.jsx)(Z,{value:e.uri,children:e.label},e.uri))]})]})}),(0,z.jsx)(Q,{label:`Push-to-talk input`,children:(0,z.jsxs)(q,{value:l,onValueChange:e=>u(e),children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsxs)(X,{children:[(0,z.jsx)(Z,{value:`compose`,children:`Fill the message box (review, then Enter)`}),(0,z.jsx)(Z,{value:`autosend`,children:`Send immediately (speak-and-send)`})]})]})})]})}var Lt=[`low`,`medium`,`high`,`xhigh`,`max`],Rt={enabled:!1,provider:`claude`,permissionMode:`open`,keepaliveSeconds:300};function zt(){let[e,r]=(0,R.useState)(Rt),[i,a]=(0,R.useState)(``);(0,R.useEffect)(()=>{t(`GET`,`/steward-config`).then(e=>r({...Rt,...e.value})).catch(e=>a(e.message))},[]);let o=e=>r(t=>({...t,...e}));async function s(){try{let n=await t(`PUT`,`/steward-config`,e);r({...Rt,...n.value}),a(`Steward config saved`)}catch(e){a(e.message)}}return(0,z.jsxs)(`section`,{className:`space-y-3 rounded-lg border p-4`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(p,{className:`w-4 h-4`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Stewards`}),(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Auto-resolve merge conflicts & diverged branches across all repos. Provider-independent — applies to every repo's steward.`})]})]}),(0,z.jsx)(oe,{checked:e.enabled,onCheckedChange:e=>o({enabled:e})})]}),(0,z.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,z.jsx)(Q,{label:`Provider`,children:(0,z.jsxs)(q,{value:e.provider,onValueChange:e=>o({provider:e}),children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsx)(X,{children:jt.map(e=>(0,z.jsx)(Z,{value:e,children:e},e))})]})}),(0,z.jsx)(Q,{label:`Model (optional)`,children:(0,z.jsx)(I,{value:e.model??``,placeholder:`e.g. gpt-5.5`,onChange:e=>o({model:e.target.value.trim()||void 0})})}),(0,z.jsx)(Q,{label:`Effort`,children:(0,z.jsxs)(q,{value:e.effort??`default`,onValueChange:e=>o({effort:e===`default`?void 0:e}),children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsxs)(X,{children:[(0,z.jsx)(Z,{value:`default`,children:`Provider default`}),Lt.map(e=>(0,z.jsx)(Z,{value:e,children:e},e))]})]})}),(0,z.jsx)(Q,{label:`Idle timeout (seconds)`,children:(0,z.jsx)(I,{type:`number`,value:e.keepaliveSeconds,onChange:e=>o({keepaliveSeconds:Number(e.target.value)||300})})})]}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,z.jsxs)(F,{onClick:s,children:[(0,z.jsx)(n,{className:`w-4 h-4`}),`Save`]}),i&&(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:i})]})]})}function Q({label:e,children:t}){return(0,z.jsxs)(`label`,{className:`block space-y-1.5 text-sm`,children:[(0,z.jsx)(`span`,{className:`text-muted-foreground`,children:e}),t]})}function $(e){return e.split(`
7
+ `),onChange:t=>r({...e,symlinkPaths:$(t.target.value)})})}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,z.jsxs)(F,{onClick:o,children:[(0,z.jsx)(n,{className:`w-4 h-4`}),`Save`]}),i&&(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:i})]})]})}function Ft(){let e=_(e=>e.showReasoning),t=_(e=>e.set);return(0,z.jsx)(`section`,{className:`space-y-3 rounded-lg border p-4`,children:(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(o,{className:`w-4 h-4`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Show reasoning details`}),(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Show the agent's internal thinking inline in chat, alongside its narration and tool steps. Off by default — narration is always shown either way.`})]})]}),(0,z.jsx)(oe,{checked:e,onCheckedChange:e=>t({showReasoning:e})})]})})}function It(){let e=_(e=>e.voiceTtsEnabled),t=_(e=>e.setVoiceTtsEnabled),n=_(e=>e.voiceTtsMode),r=_(e=>e.setVoiceTtsMode),i=_(e=>e.voiceTtsKokoroVoice),o=_(e=>e.setVoiceTtsKokoroVoice),s=_(e=>e.voiceTtsBrowserVoice),c=_(e=>e.setVoiceTtsBrowserVoice),l=_(e=>e.voiceInputMode),u=_(e=>e.setVoiceInputMode),[d,f]=(0,R.useState)(()=>v());(0,R.useEffect)(()=>{if(typeof window>`u`||!(`speechSynthesis`in window))return;let e=()=>f(v());return e(),window.speechSynthesis.addEventListener?.(`voiceschanged`,e),()=>window.speechSynthesis.removeEventListener?.(`voiceschanged`,e)},[]);let p=g.some(e=>e.id===i)?g:[...g,{id:i,label:i}];return(0,z.jsxs)(`section`,{className:`space-y-3 rounded-lg border p-4`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(a,{className:`w-4 h-4`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Voice`}),(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Speak agent responses aloud in the active chat, and how push-to-talk behaves.`})]})]}),(0,z.jsx)(oe,{checked:e,onCheckedChange:t})]}),(0,z.jsx)(Q,{label:`Speech engine`,children:(0,z.jsxs)(q,{value:n,onValueChange:e=>r(e),children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsxs)(X,{children:[(0,z.jsx)(Z,{value:`kokoro`,children:`Kokoro (server, natural — falls back to browser)`}),(0,z.jsx)(Z,{value:`browser`,children:`Browser (Web Speech API)`})]})]})}),(0,z.jsx)(Q,{label:`Kokoro voice`,children:(0,z.jsxs)(q,{value:i,onValueChange:o,children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsx)(X,{children:p.map(e=>(0,z.jsx)(Z,{value:e.id,children:e.label},e.id))})]})}),(0,z.jsx)(Q,{label:`Browser voice`,children:(0,z.jsxs)(q,{value:s||`__default__`,onValueChange:e=>c(e===`__default__`?``:e),children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsxs)(X,{children:[(0,z.jsx)(Z,{value:`__default__`,children:`System default`}),d.map(e=>(0,z.jsx)(Z,{value:e.uri,children:e.label},e.uri))]})]})}),(0,z.jsx)(Q,{label:`Push-to-talk input`,children:(0,z.jsxs)(q,{value:l,onValueChange:e=>u(e),children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsxs)(X,{children:[(0,z.jsx)(Z,{value:`compose`,children:`Fill the message box (review, then Enter)`}),(0,z.jsx)(Z,{value:`autosend`,children:`Send immediately (speak-and-send)`})]})]})})]})}var Lt=[`low`,`medium`,`high`,`xhigh`,`max`],Rt={enabled:!1,provider:`claude`,permissionMode:`open`,keepaliveSeconds:300};function zt(){let[e,r]=(0,R.useState)(Rt),[i,a]=(0,R.useState)(``);(0,R.useEffect)(()=>{t(`GET`,`/steward-config`).then(e=>r({...Rt,...e.value})).catch(e=>a(e.message))},[]);let o=e=>r(t=>({...t,...e}));async function s(){try{let n=await t(`PUT`,`/steward-config`,e);r({...Rt,...n.value}),a(`Steward config saved`)}catch(e){a(e.message)}}return(0,z.jsxs)(`section`,{className:`space-y-3 rounded-lg border p-4`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(p,{className:`w-4 h-4`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Stewards`}),(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Auto-resolve merge conflicts & diverged branches across all repos. Provider-independent — applies to every repo's steward.`})]})]}),(0,z.jsx)(oe,{checked:e.enabled,onCheckedChange:e=>o({enabled:e})})]}),(0,z.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,z.jsx)(Q,{label:`Provider`,children:(0,z.jsxs)(q,{value:e.provider,onValueChange:e=>o({provider:e}),children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsx)(X,{children:jt.map(e=>(0,z.jsx)(Z,{value:e,children:e},e))})]})}),(0,z.jsx)(Q,{label:`Model (optional)`,children:(0,z.jsx)(I,{value:e.model??``,placeholder:`e.g. gpt-5.5`,onChange:e=>o({model:e.target.value.trim()||void 0})})}),(0,z.jsx)(Q,{label:`Effort`,children:(0,z.jsxs)(q,{value:e.effort??`default`,onValueChange:e=>o({effort:e===`default`?void 0:e}),children:[(0,z.jsx)(Y,{children:(0,z.jsx)(J,{})}),(0,z.jsxs)(X,{children:[(0,z.jsx)(Z,{value:`default`,children:`Provider default`}),Lt.map(e=>(0,z.jsx)(Z,{value:e,children:e},e))]})]})}),(0,z.jsx)(Q,{label:`Idle timeout (seconds)`,children:(0,z.jsx)(I,{type:`number`,value:e.keepaliveSeconds,onChange:e=>o({keepaliveSeconds:Number(e.target.value)||300})})})]}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,z.jsxs)(F,{onClick:s,children:[(0,z.jsx)(n,{className:`w-4 h-4`}),`Save`]}),i&&(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:i})]})]})}function Q({label:e,children:t}){return(0,z.jsxs)(`label`,{className:`block space-y-1.5 text-sm`,children:[(0,z.jsx)(`span`,{className:`text-muted-foreground`,children:e}),t]})}function $(e){return e.split(`
8
8
  `).map(e=>e.trim()).filter(Boolean)}function Bt(e){return Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`
9
9
  `)}function Vt(e){return Object.fromEntries($(e).map(e=>{let t=e.indexOf(`=`);return t>=0?[e.slice(0,t).trim(),e.slice(t+1)]:[e,``]}))}export{Mt as SettingsView};
10
- //# sourceMappingURL=settings-C5aXX3od.js.map
10
+ //# sourceMappingURL=settings-63whklIq.js.map