codemini-cli 0.6.3 → 0.6.4

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 (48) hide show
  1. package/codemini-web/dist/assets/{AboutDialog-jgqGjQgl.js → AboutDialog-MRopwNIL.js} +2 -2
  2. package/codemini-web/dist/assets/CodeWikiPanel-UpK5xGE3.js +1 -0
  3. package/codemini-web/dist/assets/ConfigDialog-CNl28wsj.js +1 -0
  4. package/codemini-web/dist/assets/GitDiffDialog-gSysUg2J.js +3 -0
  5. package/codemini-web/dist/assets/{MemoryDialog-BhxQgG0I.js → MemoryDialog-DFUmo3Kl.js} +3 -3
  6. package/codemini-web/dist/assets/MessageBubble-CGnnViv0.js +12 -0
  7. package/codemini-web/dist/assets/PatchDiff-B8rwvEg5.js +230 -0
  8. package/codemini-web/dist/assets/ProjectSelector-BF59M1zb.js +1 -0
  9. package/codemini-web/dist/assets/{SkillDialog-DxS43NpR.js → SkillDialog-CQTjbSiw.js} +4 -4
  10. package/codemini-web/dist/assets/SoulDialog-BLjUGqqB.js +1 -0
  11. package/codemini-web/dist/assets/chevron-right--85xg7qk.js +1 -0
  12. package/codemini-web/dist/assets/{chunk-BO2N2NFS-Budy_hfO.js → chunk-BO2N2NFS-6uELoidu.js} +6 -6
  13. package/codemini-web/dist/assets/{highlighted-body-OFNGDK62-CQS1PAvD.js → highlighted-body-OFNGDK62-gb1UMBZ5.js} +1 -1
  14. package/codemini-web/dist/assets/index-1xqD0R5t.css +2 -0
  15. package/codemini-web/dist/assets/index-CDXQGwPs.js +65 -0
  16. package/codemini-web/dist/assets/{input-CNQgbKe6.js → input-Ca8O_061.js} +1 -1
  17. package/codemini-web/dist/assets/lib-BXWizt13.js +1 -0
  18. package/codemini-web/dist/assets/mermaid-GHXKKRXX-ROliF8Yd.js +1 -0
  19. package/codemini-web/dist/assets/{pencil-Ce_LFiEh.js → pencil-BhT11Ztp.js} +1 -1
  20. package/codemini-web/dist/assets/{refresh-cw-BKL-AZu5.js → refresh-cw-D7R5Lth6.js} +1 -1
  21. package/codemini-web/dist/assets/select-DBvcHBzs.js +1 -0
  22. package/codemini-web/dist/assets/{trash-2-KmAlCwXd.js → trash-2-BfNZcWfX.js} +1 -1
  23. package/codemini-web/dist/index.html +2 -2
  24. package/codemini-web/lib/runtime-bridge.js +325 -296
  25. package/codemini-web/server.js +310 -243
  26. package/package.json +1 -1
  27. package/src/core/agent-loop.js +188 -97
  28. package/src/core/chat-runtime.js +674 -571
  29. package/src/core/config-store.js +11 -3
  30. package/src/core/git-oplog-change-tracker.js +387 -0
  31. package/src/core/non-git-backup.js +116 -0
  32. package/src/core/paths.js +123 -123
  33. package/src/core/session-store.js +148 -99
  34. package/src/core/tools.js +499 -456
  35. package/src/tui/chat-app.js +196 -56
  36. package/codemini-web/dist/assets/CodeWikiPanel-EPuoerNv.js +0 -1
  37. package/codemini-web/dist/assets/ConfigDialog-B5IGZCc9.js +0 -1
  38. package/codemini-web/dist/assets/GitDiffDialog-Bb_Tw5ZK.js +0 -222
  39. package/codemini-web/dist/assets/MessageBubble-wUff4GP4.js +0 -6
  40. package/codemini-web/dist/assets/ProjectSelector-C0leTf6f.js +0 -1
  41. package/codemini-web/dist/assets/SoulDialog-XDTEGWvH.js +0 -1
  42. package/codemini-web/dist/assets/chevron-right-Dbzw7YzA.js +0 -1
  43. package/codemini-web/dist/assets/index-D0EGtNPr.js +0 -65
  44. package/codemini-web/dist/assets/index-wOUf3WkN.css +0 -2
  45. package/codemini-web/dist/assets/lib-BOngVP_M.js +0 -11
  46. package/codemini-web/dist/assets/lib-DrOTTm_N.js +0 -1
  47. package/codemini-web/dist/assets/mermaid-GHXKKRXX-DrBu5KyC.js +0 -1
  48. package/codemini-web/dist/assets/select-BZXfigic.js +0 -1
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{a as t,r as n}from"./bundle-mjs-C44PrJ2C.js";import{a as r,i,n as a,o,r as s,s as c,t as l}from"./select-DBvcHBzs.js";import{At as u,Et as d,I as f,Mt as p,Ot as m,Pt as h,c as g,ct as _,d as v,f as y,ft as b,k as x,kt as S,q as C,s as w,u as T,wt as E}from"./index-CDXQGwPs.js";import{t as D}from"./input-Ca8O_061.js";var O=e(t(),1),k=n();function A(e,t){return O.useReducer((e,n)=>t[e][n]??e,e)}var j=`ScrollArea`,[M,N]=u(j),[P,F]=M(j),I=O.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:r=`hover`,dir:i,scrollHideDelay:a=600,...o}=e,[s,l]=O.useState(null),[u,d]=O.useState(null),[f,m]=O.useState(null),[g,_]=O.useState(null),[v,y]=O.useState(null),[b,x]=O.useState(0),[S,C]=O.useState(0),[w,T]=O.useState(!1),[E,D]=O.useState(!1),A=h(t,e=>l(e)),j=c(i);return(0,k.jsx)(P,{scope:n,type:r,dir:j,scrollHideDelay:a,scrollArea:s,viewport:u,onViewportChange:d,content:f,onContentChange:m,scrollbarX:g,onScrollbarXChange:_,scrollbarXEnabled:w,onScrollbarXEnabledChange:T,scrollbarY:v,onScrollbarYChange:y,scrollbarYEnabled:E,onScrollbarYEnabledChange:D,onCornerWidthChange:x,onCornerHeightChange:C,children:(0,k.jsx)(p.div,{dir:j,...o,ref:A,style:{position:`relative`,"--radix-scroll-area-corner-width":b+`px`,"--radix-scroll-area-corner-height":S+`px`,...e.style}})})});I.displayName=j;var L=`ScrollAreaViewport`,R=O.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:i,...a}=e,o=F(L,n),s=h(t,O.useRef(null),o.onViewportChange);return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:i}),(0,k.jsx)(p.div,{"data-radix-scroll-area-viewport":``,...a,ref:s,style:{overflowX:o.scrollbarXEnabled?`scroll`:`hidden`,overflowY:o.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,k.jsx)(`div`,{ref:o.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});R.displayName=L;var z=`ScrollAreaScrollbar`,B=O.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=F(z,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return O.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,k.jsx)(ee,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,k.jsx)(te,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,k.jsx)(V,{...r,ref:t,forceMount:n}):i.type===`always`?(0,k.jsx)(H,{...r,ref:t}):null});B.displayName=z;var ee=O.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=F(z,e.__scopeScrollArea),[a,o]=O.useState(!1);return O.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let n=()=>{window.clearTimeout(t),o(!0)},r=()=>{t=window.setTimeout(()=>o(!1),i.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[i.scrollArea,i.scrollHideDelay]),(0,k.jsx)(d,{present:n||a,children:(0,k.jsx)(V,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),te=O.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=F(z,e.__scopeScrollArea),a=e.orientation===`horizontal`,o=Z(()=>c(`SCROLL_END`),100),[s,c]=A(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return O.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),O.useEffect(()=>{let e=i.viewport,t=a?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(c(`SCROLL`),o()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[i.viewport,a,c,o]),(0,k.jsx)(d,{present:n||s!==`hidden`,children:(0,k.jsx)(H,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:S(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:S(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})}),V=O.forwardRef((e,t)=>{let n=F(z,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=O.useState(!1),s=e.orientation===`horizontal`,c=Z(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;o(s?e:t)}},10);return Q(n.viewport,c),Q(n.content,c),(0,k.jsx)(d,{present:r||a,children:(0,k.jsx)(H,{"data-state":a?`visible`:`hidden`,...i,ref:t})})}),H=O.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=F(z,e.__scopeScrollArea),a=O.useRef(null),o=O.useRef(0),[s,c]=O.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=se(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>a.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function d(e,t){return ce(e,o.current,s,t)}return n===`horizontal`?(0,k.jsx)(ne,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=le(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===`vertical`?(0,k.jsx)(re,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=le(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}),ne=O.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=F(z,e.__scopeScrollArea),[o,s]=O.useState(),c=O.useRef(null),l=h(t,c,a.onScrollbarXChange);return O.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,k.jsx)(W,{"data-orientation":`horizontal`,...i,ref:l,sizes:n,style:{bottom:0,left:a.dir===`rtl`?`var(--radix-scroll-area-corner-width)`:0,right:a.dir===`ltr`?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":X(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),de(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:Y(o.paddingLeft),paddingEnd:Y(o.paddingRight)}})}})}),re=O.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=F(z,e.__scopeScrollArea),[o,s]=O.useState(),c=O.useRef(null),l=h(t,c,a.onScrollbarYChange);return O.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,k.jsx)(W,{"data-orientation":`vertical`,...i,ref:l,sizes:n,style:{top:0,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":X(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),de(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:Y(o.paddingTop),paddingEnd:Y(o.paddingBottom)}})}})}),[ie,U]=M(z),W=O.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:a,onThumbPointerUp:o,onThumbPointerDown:s,onThumbPositionChange:c,onDragScroll:l,onWheelScroll:u,onResize:d,...f}=e,m=F(z,n),[g,_]=O.useState(null),v=h(t,e=>_(e)),y=O.useRef(null),b=O.useRef(``),x=m.viewport,C=r.content-r.viewport,w=E(u),T=E(c),D=Z(d,10);function A(e){y.current&&l({x:e.clientX-y.current.left,y:e.clientY-y.current.top})}return O.useEffect(()=>{let e=e=>{let t=e.target;g?.contains(t)&&w(e,C)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[x,g,C,w]),O.useEffect(T,[r,T]),Q(g,D),Q(m.content,D),(0,k.jsx)(ie,{scope:n,scrollbar:g,hasThumb:i,onThumbChange:E(a),onThumbPointerUp:E(o),onThumbPositionChange:T,onThumbPointerDown:E(s),children:(0,k.jsx)(p.div,{...f,ref:v,style:{position:`absolute`,...f.style},onPointerDown:S(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),y.current=g.getBoundingClientRect(),b.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,m.viewport&&(m.viewport.style.scrollBehavior=`auto`),A(e))}),onPointerMove:S(e.onPointerMove,A),onPointerUp:S(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=b.current,m.viewport&&(m.viewport.style.scrollBehavior=``),y.current=null})})})}),G=`ScrollAreaThumb`,K=O.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=U(G,e.__scopeScrollArea);return(0,k.jsx)(d,{present:n||i.hasThumb,children:(0,k.jsx)(ae,{ref:t,...r})})}),ae=O.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...i}=e,a=F(G,n),o=U(G,n),{onThumbPositionChange:s}=o,c=h(t,e=>o.onThumbChange(e)),l=O.useRef(void 0),u=Z(()=>{l.current&&=(l.current(),void 0)},100);return O.useEffect(()=>{let e=a.viewport;if(e){let t=()=>{u(),l.current||(l.current=fe(e,s),s())};return s(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,u,s]),(0,k.jsx)(p.div,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:c,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:S(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;o.onThumbPointerDown({x:n,y:r})}),onPointerUp:S(e.onPointerUp,o.onThumbPointerUp)})});K.displayName=G;var q=`ScrollAreaCorner`,J=O.forwardRef((e,t)=>{let n=F(q,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,k.jsx)(oe,{...e,ref:t}):null});J.displayName=q;var oe=O.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=F(q,n),[a,o]=O.useState(0),[s,c]=O.useState(0),l=!!(a&&s);return Q(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),c(e)}),Q(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),l?(0,k.jsx)(p.div,{...r,ref:t,style:{width:a,height:s,position:`absolute`,right:i.dir===`ltr`?0:void 0,left:i.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function Y(e){return e?parseInt(e,10):0}function se(e,t){let n=e/t;return isNaN(n)?0:n}function X(e){let t=se(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function ce(e,t,n,r=`ltr`){let i=X(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return ue([c,l],d)(e)}function le(e,t,n=`ltr`){let r=X(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,s=t.content-t.viewport,c=a-r,l=o(e,n===`ltr`?[0,s]:[s*-1,0]);return ue([0,s],[0,c])(l)}function ue(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 de(e,t){return e>0&&e<t}var fe=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)};function Z(e,t){let n=E(e),r=O.useRef(0);return O.useEffect(()=>()=>window.clearTimeout(r.current),[]),O.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function Q(e,t){let n=E(t);m(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var pe=I,me=R,he=J;function ge({className:e,children:t,...n}){return(0,k.jsxs)(pe,{"data-slot":`scroll-area`,className:b(`relative`,e),...n,children:[(0,k.jsx)(me,{"data-slot":`scroll-area-viewport`,className:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1`,children:t}),(0,k.jsx)(_e,{}),(0,k.jsx)(he,{})]})}function _e({className:e,orientation:t=`vertical`,...n}){return(0,k.jsx)(B,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:b(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent`,e),...n,children:(0,k.jsx)(K,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}var ve=`__codemini_general__`,$=[{value:`general`,label:_(`generalChat`)},{value:`project`,label:_(`projectTask`)}];function ye({open:e,onOpenChange:t,onOpenProject:n}){let[o,c]=(0,O.useState)(`project`),[u,d]=(0,O.useState)(!1),[p,m]=(0,O.useState)(``),[h,S]=(0,O.useState)(null),[E,A]=(0,O.useState)(``);(0,O.useEffect)(()=>{e&&C().then(e=>{let t=e.cwd||``;e.isGeneral?(c(`general`),m(``),A(``),j(``)):(c(`project`),m(t),A(t||``),j(t||``))}).catch(()=>{})},[e]);let j=async e=>{try{let t=await f(e),n=!e&&!t.path&&t.roots?.[0]?.path;if(n){let e=await f(n);S(e),A(e.path??n),m(e.path??n);return}S(t),A(t.path??e)}catch{}},M=()=>{if(o===`general`){t(!1),n(ve);return}let e=p.trim();e&&(t(!1),n(e))},N=(E||``).replace(/\\/g,`/`),P=/^[A-Za-z]:($|\/)/.test(N),F=N.startsWith(`/`)||P,I=N.split(`/`).filter(Boolean),L=e=>e.length?/^[A-Za-z]:$/.test(e[0])?e.length===1?`${e[0]}/`:`${e[0]}/${e.slice(1).join(`/`)}`:`${F?`/`:``}${e.join(`/`)}`:``,R=h?.roots||[],z=e=>String(e||``).replace(/\\/g,`/`).toLowerCase(),B=R.slice().sort((e,t)=>z(t.path).length-z(e.path).length).find(e=>{let t=z(e.path),n=z(E||p);return t&&(n===t||n.startsWith(t.endsWith(`/`)?t:`${t}/`))}),ee=$.find(e=>e.value===o)||$[1];return(0,k.jsx)(w,{open:e,onOpenChange:t,children:(0,k.jsxs)(g,{className:`sm:max-w-lg`,children:[(0,k.jsx)(T,{children:(0,k.jsx)(v,{children:_(`selectProject`)})}),(0,k.jsxs)(`div`,{className:`relative`,children:[(0,k.jsxs)(`button`,{type:`button`,onClick:()=>d(!u),className:`w-full flex items-center justify-between h-9 px-3 rounded-lg border border-(--border-default) bg-(--bg-input) text-[13px] text-(--text-primary) cursor-pointer hover:bg-(--bg-hover)`,children:[(0,k.jsx)(`span`,{className:`font-medium`,children:ee.label}),(0,k.jsx)(x,{size:14,className:`text-(--text-muted)`})]}),u&&(0,k.jsx)(`div`,{className:`absolute top-full left-0 right-0 mt-1 rounded-lg border border-(--border-default) bg-(--bg-primary) shadow-lg z-50 p-1`,children:$.map(e=>(0,k.jsx)(`button`,{className:b(`w-full text-left px-3 py-2 my-1 text-[13px] rounded-md cursor-pointer border-0`,o===e.value?`bg-(--bg-active) text-(--text-primary) font-medium`:`bg-transparent text-(--text-secondary) hover:bg-(--bg-hover)`),onClick:()=>{c(e.value),d(!1)},children:e.label},e.value))})]}),o===`general`?(0,k.jsxs)(`div`,{className:`flex flex-col items-center gap-4 py-8 text-(--text-muted) text-[13px]`,children:[(0,k.jsx)(`span`,{children:_(`generalChatDesc`)}),(0,k.jsx)(y,{onClick:M,className:`text-[13px] h-8`,children:_(`enterGeneral`)})]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`div`,{className:`flex gap-2`,children:[R.length>0&&(0,k.jsxs)(l,{value:B?.path||R[0]?.path,onValueChange:e=>{m(e),j(e)},children:[(0,k.jsx)(i,{className:`w-[132px] h-8 bg-(--bg-input) text-(--text-primary)`,children:(0,k.jsx)(r,{})}),(0,k.jsx)(a,{align:`start`,children:R.map(e=>(0,k.jsxs)(s,{value:e.path,children:[(0,k.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,k.jsx)(`span`,{className:`text-(--text-muted) truncate`,children:e.path})]},e.path))})]}),(0,k.jsx)(D,{value:p,onChange:e=>m(e.target.value),placeholder:_(`enterOrBrowse`),onKeyDown:e=>e.key===`Enter`&&M(),className:`flex-1 h-8 text-[13px]`}),(0,k.jsx)(y,{onClick:M,className:`text-[13px] h-8`,children:_(`select`)})]}),(0,k.jsxs)(`div`,{className:`border border-(--border-default) rounded-lg overflow-hidden`,children:[(0,k.jsx)(`div`,{className:`flex items-center gap-1 text-[12px] px-3 py-2 border-b border-(--border-default) bg-(--bg-secondary) flex-wrap text-(--text-secondary)`,children:I.map((e,t)=>{let n=L(I.slice(0,t+1));return(0,k.jsxs)(`span`,{className:`flex items-center gap-1`,children:[t>0&&(0,k.jsx)(`span`,{className:`text-(--text-muted)`,children:`/`}),(0,k.jsx)(`button`,{onClick:()=>{m(n),j(n)},className:b(`hover:underline cursor-pointer border-0 bg-transparent`,t===I.length-1?`text-(--text-primary) font-medium`:`text-(--accent-blue)`),children:e})]},t)})}),(0,k.jsx)(ge,{className:`h-[240px]`,children:h&&(0,k.jsxs)(`div`,{className:`p-2`,children:[I.length>0&&(0,k.jsx)(`button`,{className:`w-full text-left px-2 py-1.5 text-[13px] hover:bg-(--bg-hover) rounded cursor-pointer flex items-center gap-2 border-0 bg-transparent text-(--text-secondary)`,onClick:()=>{let e=L(I.slice(0,-1));m(e),j(e)},children:(0,k.jsx)(`span`,{children:`..`})}),(h.dirs||[]).map(e=>(0,k.jsxs)(`button`,{className:`w-full text-left px-2 py-1.5 text-[13px] hover:bg-(--bg-hover) rounded cursor-pointer flex items-center gap-2 border-0 bg-transparent text-(--text-secondary)`,onClick:()=>{m(e.path),j(e.path)},children:[(0,k.jsx)(`span`,{className:`flex-1 truncate`,children:e.name}),e.isGit&&(0,k.jsx)(`span`,{className:`text-[11px] text-(--text-muted) bg-(--bg-tertiary) px-1.5 py-0.5 rounded`,children:`git`})]},e.path)),!(h.roots||[]).length&&!(h.dirs||[]).length&&!h.error&&(0,k.jsx)(`div`,{className:`text-center text-[12px] text-(--text-muted) py-4`,children:_(`noSubDirs`)})]})})]})]})]})})}export{ye as ProjectSelector};
@@ -1,8 +1,8 @@
1
- import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{a as t,r as n}from"./bundle-mjs-C44PrJ2C.js";import{a as r,i,n as a,r as o,t as s}from"./select-BZXfigic.js";import{t as c}from"./chevron-right-Dbzw7YzA.js";import{n as l,t as u}from"./pencil-Ce_LFiEh.js";import{n as d,t as f}from"./trash-2-KmAlCwXd.js";import{C as p,F as m,K as h,M as g,O as _,Q as v,R as y,at as b,c as x,d as S,f as C,g as w,l as T,lt as E,n as D,nt as O,q as k,r as A,rt as j,s as M,tt as N,u as P,y as F}from"./index-D0EGtNPr.js";import{t as I}from"./input-CNQgbKe6.js";var ee=g(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),te=g(`file-code-corner`,[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]]),L=g(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),R=e(t(),1),z=n(),ne=[`all`,`enabled`,`builtin`,`custom`],B=[`always`,`auto_attach`,`agent_requested`,`manual`];function V({checked:e,onClick:t,title:n}){return(0,z.jsx)(`button`,{type:`button`,onClick:t,title:n,"aria-pressed":e,className:E(`relative h-5 w-9 rounded-full border shadow-inner transition-colors`,e?`border-(--text-primary) bg-(--text-primary)`:`border-(--border-strong) bg-(--bg-hover)`),children:(0,z.jsx)(`span`,{className:E(`absolute left-0.5 top-0.5 size-3.5 rounded-full transition-transform`,e?`bg-(--bg-primary)`:`bg-(--text-muted)`,e?`translate-x-4`:`translate-x-0`)})})}function H(e){return b(e===`builtin`?`builtin`:e===`global`?`globalScope`:`projectScope`)}function U(e){return`${e?.scope||`unknown`}:${e?.projectDir||``}:${e?.name||``}`}function W(e){return e===`__codemini_general__`?b(`generalChat`):e}function re(e=[]){return Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(Boolean).join(`
2
- `):``}function G(e){return e?.scope===`builtin`}function K(e){return e?.enabled!==!1}function q({skill:e,onSave:t,onCancel:n}){let[c,l]=(0,R.useState)(e?.name||``),[u,d]=(0,R.useState)(e?.description||``),[f,p]=(0,R.useState)(e?.scope||`project`),[g,_]=(0,R.useState)(e?.mode||`agent_requested`),[v,y]=(0,R.useState)((e?.triggers||[]).join(`, `)),[x,S]=(0,R.useState)(e?.priority??50),[w,T]=(0,R.useState)(K(e)),[E,k]=(0,R.useState)(``),[M,N]=(0,R.useState)(!1),P=!e,F=G(e);return(0,R.useEffect)(()=>{if(l(e?.name||``),d(e?.description||``),p(e?.scope||`project`),_(e?.mode||`agent_requested`),y((e?.triggers||[]).join(`, `)),S(e?.priority??50),T(K(e)),!e){k(``);return}N(!0),h(e.name,e.projectDir).then(e=>k(e.content||``)).catch(()=>{}).finally(()=>N(!1))},[e]),(0,z.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,z.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto pr-1`,children:[(0,z.jsxs)(`div`,{className:`mb-3 flex items-start justify-between gap-3`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`div`,{className:`text-[13px] font-medium text-(--text-primary)`,children:b(P?`newSkill`:`editSkill`)}),(0,z.jsx)(`div`,{className:`mt-0.5 text-[11px] text-(--text-muted)`,children:b(`skillEditorHint`)})]}),(0,z.jsx)(A,{variant:`outline`,className:`rounded-md px-1.5 py-0 text-[10px]`,children:H(f)})]}),(0,z.jsxs)(`div`,{className:`grid gap-3`,children:[(P||!G(e))&&(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:b(`skillScope`)}),(0,z.jsxs)(s,{value:f,onValueChange:p,children:[(0,z.jsx)(i,{className:`h-8 w-full bg-(--bg-primary) text-[13px]`,children:(0,z.jsx)(r,{})}),(0,z.jsxs)(a,{align:`start`,children:[(0,z.jsx)(o,{value:`project`,children:b(`projectScope`)}),(0,z.jsx)(o,{value:`global`,children:b(`globalScope`)})]})]})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:b(`name`)}),(0,z.jsx)(I,{value:c,onChange:e=>l(e.target.value),disabled:!P,placeholder:`my-skill`,className:`h-8 text-[13px]`})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:b(`description`)}),(0,z.jsx)(I,{value:u,onChange:e=>d(e.target.value),placeholder:b(`skillDescriptionPlaceholder`),className:`h-8 text-[13px]`})]}),(0,z.jsxs)(`div`,{className:`rounded-md border border-(--border-default) bg-(--bg-secondary) p-3`,children:[(0,z.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 text-[12px] font-medium text-(--text-primary)`,children:[(0,z.jsx)(L,{size:13}),b(`skillRoutingSettings`)]}),(0,z.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:b(`skillMode`)}),(0,z.jsxs)(s,{value:g,onValueChange:_,children:[(0,z.jsx)(i,{className:`h-8 w-full bg-(--bg-primary) text-[13px]`,children:(0,z.jsx)(r,{})}),(0,z.jsx)(a,{align:`start`,children:B.map(e=>(0,z.jsx)(o,{value:e,children:b(`skillMode_${e}`)},e))})]})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:b(`skillPriority`)}),(0,z.jsx)(I,{type:`number`,min:`0`,max:`100`,value:x,onChange:e=>S(e.target.value),className:`h-8 text-[13px]`})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5 sm:col-span-2`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:b(`skillTriggers`)}),(0,z.jsx)(I,{value:v,onChange:e=>y(e.target.value),placeholder:`after_edit, before_final`,className:`h-8 text-[13px]`})]}),(0,z.jsxs)(`div`,{className:`flex items-center justify-between rounded-md border border-(--border-default) bg-(--bg-primary) px-2 py-1.5 sm:col-span-2`,children:[(0,z.jsx)(`span`,{className:`text-[12px] text-(--text-muted)`,children:b(w?`enabled`:`disabled`)}),(0,z.jsx)(V,{checked:w,onClick:()=>T(e=>!e),title:b(w?`disable`:`enable`)})]})]})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:b(`skillContent`)}),M?(0,z.jsxs)(`div`,{className:`rounded-md border border-(--border-default) py-8 text-center text-[12px] text-(--text-muted)`,children:[b(`loading`),`...`]}):(0,z.jsx)(D,{value:E,onChange:e=>k(e.target.value),disabled:F,className:`min-h-[360px] resize-y text-[13px] font-mono leading-5`,placeholder:`---
1
+ import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{a as t,r as n}from"./bundle-mjs-C44PrJ2C.js";import{a as r,i,n as a,r as o,t as s}from"./select-DBvcHBzs.js";import{t as c}from"./chevron-right--85xg7qk.js";import{n as l,t as u}from"./pencil-BhT11Ztp.js";import{n as d,t as f}from"./trash-2-BfNZcWfX.js";import{B as p,J as m,L as h,P as g,Y as _,at as v,b as y,c as b,ct as x,d as S,et as C,f as w,ft as T,g as E,k as D,l as O,n as k,ot as A,r as j,rt as M,s as N,u as P,w as F}from"./index-CDXQGwPs.js";import{t as I}from"./input-Ca8O_061.js";var ee=g(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),te=g(`file-code-corner`,[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]]),L=g(`sliders-horizontal`,[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]),R=e(t(),1),z=n(),ne=[`all`,`enabled`,`builtin`,`custom`],B=[`always`,`auto_attach`,`agent_requested`,`manual`];function V({checked:e,onClick:t,title:n}){return(0,z.jsx)(`button`,{type:`button`,onClick:t,title:n,"aria-pressed":e,className:T(`relative h-5 w-9 rounded-full border shadow-inner transition-colors`,e?`border-(--text-primary) bg-(--text-primary)`:`border-(--border-strong) bg-(--bg-hover)`),children:(0,z.jsx)(`span`,{className:T(`absolute left-0.5 top-0.5 size-3.5 rounded-full transition-transform`,e?`bg-(--bg-primary)`:`bg-(--text-muted)`,e?`translate-x-4`:`translate-x-0`)})})}function H(e){return x(e===`builtin`?`builtin`:e===`global`?`globalScope`:`projectScope`)}function U(e){return`${e?.scope||`unknown`}:${e?.projectDir||``}:${e?.name||``}`}function W(e){return e===`__codemini_general__`?x(`generalChat`):e}function re(e=[]){return Array.isArray(e)?e.map(e=>String(e||``).trim()).filter(Boolean).join(`
2
+ `):``}function G(e){return e?.scope===`builtin`}function K(e){return e?.enabled!==!1}function q({skill:e,onSave:t,onCancel:n}){let[c,l]=(0,R.useState)(e?.name||``),[u,d]=(0,R.useState)(e?.description||``),[f,p]=(0,R.useState)(e?.scope||`project`),[g,_]=(0,R.useState)(e?.mode||`agent_requested`),[y,b]=(0,R.useState)((e?.triggers||[]).join(`, `)),[S,C]=(0,R.useState)(e?.priority??50),[T,E]=(0,R.useState)(K(e)),[D,O]=(0,R.useState)(``),[M,N]=(0,R.useState)(!1),P=!e,F=G(e);return(0,R.useEffect)(()=>{if(l(e?.name||``),d(e?.description||``),p(e?.scope||`project`),_(e?.mode||`agent_requested`),b((e?.triggers||[]).join(`, `)),C(e?.priority??50),E(K(e)),!e){O(``);return}N(!0),m(e.name,e.projectDir).then(e=>O(e.content||``)).catch(()=>{}).finally(()=>N(!1))},[e]),(0,z.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,z.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto pr-1`,children:[(0,z.jsxs)(`div`,{className:`mb-3 flex items-start justify-between gap-3`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`div`,{className:`text-[13px] font-medium text-(--text-primary)`,children:x(P?`newSkill`:`editSkill`)}),(0,z.jsx)(`div`,{className:`mt-0.5 text-[11px] text-(--text-muted)`,children:x(`skillEditorHint`)})]}),(0,z.jsx)(j,{variant:`outline`,className:`rounded-md px-1.5 py-0 text-[10px]`,children:H(f)})]}),(0,z.jsxs)(`div`,{className:`grid gap-3`,children:[(P||!G(e))&&(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:x(`skillScope`)}),(0,z.jsxs)(s,{value:f,onValueChange:p,children:[(0,z.jsx)(i,{className:`h-8 w-full bg-(--bg-primary) text-[13px]`,children:(0,z.jsx)(r,{})}),(0,z.jsxs)(a,{align:`start`,children:[(0,z.jsx)(o,{value:`project`,children:x(`projectScope`)}),(0,z.jsx)(o,{value:`global`,children:x(`globalScope`)})]})]})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:x(`name`)}),(0,z.jsx)(I,{value:c,onChange:e=>l(e.target.value),disabled:!P,placeholder:`my-skill`,className:`h-8 text-[13px]`})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:x(`description`)}),(0,z.jsx)(I,{value:u,onChange:e=>d(e.target.value),placeholder:x(`skillDescriptionPlaceholder`),className:`h-8 text-[13px]`})]}),(0,z.jsxs)(`div`,{className:`rounded-md border border-(--border-default) bg-(--bg-secondary) p-3`,children:[(0,z.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 text-[12px] font-medium text-(--text-primary)`,children:[(0,z.jsx)(L,{size:13}),x(`skillRoutingSettings`)]}),(0,z.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:x(`skillMode`)}),(0,z.jsxs)(s,{value:g,onValueChange:_,children:[(0,z.jsx)(i,{className:`h-8 w-full bg-(--bg-primary) text-[13px]`,children:(0,z.jsx)(r,{})}),(0,z.jsx)(a,{align:`start`,children:B.map(e=>(0,z.jsx)(o,{value:e,children:x(`skillMode_${e}`)},e))})]})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:x(`skillPriority`)}),(0,z.jsx)(I,{type:`number`,min:`0`,max:`100`,value:S,onChange:e=>C(e.target.value),className:`h-8 text-[13px]`})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5 sm:col-span-2`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:x(`skillTriggers`)}),(0,z.jsx)(I,{value:y,onChange:e=>b(e.target.value),placeholder:`after_edit, before_final`,className:`h-8 text-[13px]`})]}),(0,z.jsxs)(`div`,{className:`flex items-center justify-between rounded-md border border-(--border-default) bg-(--bg-primary) px-2 py-1.5 sm:col-span-2`,children:[(0,z.jsx)(`span`,{className:`text-[12px] text-(--text-muted)`,children:x(T?`enabled`:`disabled`)}),(0,z.jsx)(V,{checked:T,onClick:()=>E(e=>!e),title:x(T?`disable`:`enable`)})]})]})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:x(`skillContent`)}),M?(0,z.jsxs)(`div`,{className:`rounded-md border border-(--border-default) py-8 text-center text-[12px] text-(--text-muted)`,children:[x(`loading`),`...`]}):(0,z.jsx)(k,{value:D,onChange:e=>O(e.target.value),disabled:F,className:`min-h-[360px] resize-y text-[13px] font-mono leading-5`,placeholder:`---
3
3
  name: my-skill
4
4
  description: ...
5
5
  ---
6
6
 
7
- Skill instructions...`})]})]})]}),(0,z.jsxs)(`div`,{className:`mt-3 flex shrink-0 justify-end gap-2 border-t border-(--border-default) bg-(--bg-primary) pt-3`,children:[(0,z.jsx)(C,{variant:`outline`,onClick:n,size:`sm`,children:b(`cancel`)}),(0,z.jsx)(C,{onClick:async()=>{let n={description:u,scope:f,mode:g,triggers:v.split(`,`).map(e=>e.trim()).filter(Boolean),enabled:w,priority:Number(x)||0};P?(await m({name:c,description:u,content:E,scope:f}),await j(c,n)):(await j(e.name,n,e.projectDir),F||await O(e.name,E,e.projectDir)),t()},disabled:M||!F&&!E.trim()||P&&!c.trim(),size:`sm`,children:b(P?`create`:`save`)})]})]})}function ie({skill:e,open:t,onSave:n,onOpenChange:r}){return(0,z.jsx)(M,{open:t,onOpenChange:r,children:(0,z.jsxs)(x,{className:`sm:max-w-[760px] h-[86vh] max-h-[86vh] flex flex-col overflow-hidden`,children:[(0,z.jsx)(P,{className:`shrink-0`,children:(0,z.jsx)(S,{children:b(e?`editSkill`:`newSkill`)})}),(0,z.jsx)(q,{skill:e,onSave:n,onCancel:()=>r(!1)})]})})}function ae({skill:e,open:t,onOpenChange:n}){let[r,i]=(0,R.useState)(``),[a,o]=(0,R.useState)(!1);return(0,R.useEffect)(()=>{!t||!e||(o(!0),h(e.name,e.projectDir).then(e=>i(e.content||``)).catch(()=>{}).finally(()=>o(!1)))},[t,e]),(0,z.jsx)(M,{open:t,onOpenChange:n,children:(0,z.jsxs)(x,{className:`sm:max-w-[720px] max-h-[82vh] flex flex-col overflow-hidden`,children:[(0,z.jsx)(P,{className:`shrink-0`,children:(0,z.jsxs)(S,{children:[e?.name,` `,b(`contentPreview`)]})}),(0,z.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0 pr-1`,children:a?(0,z.jsxs)(`div`,{className:`py-8 text-center text-[12px] text-(--text-muted)`,children:[b(`loading`),`...`]}):(0,z.jsx)(`pre`,{className:`rounded-lg bg-(--bg-secondary) p-3 text-[13px] whitespace-pre-wrap break-words font-mono leading-5`,children:r})}),(0,z.jsx)(T,{className:`shrink-0`,children:(0,z.jsx)(C,{variant:`outline`,onClick:()=>n(!1),size:`sm`,children:b(`close`)})})]})})}function J({skill:e,onView:t,onToggle:n,onEdit:r,onDelete:i}){let a=K(e);return(0,z.jsx)(`div`,{className:E(`rounded-lg border p-3 transition-colors`,a?`border-(--border-default) bg-(--bg-primary) hover:bg-(--bg-hover)`:`border-(--border-default) bg-(--bg-secondary) opacity-75`),children:(0,z.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,z.jsx)(`span`,{className:`truncate text-[13px] font-medium text-(--text-primary)`,children:e.name}),(0,z.jsx)(A,{variant:G(e)?`secondary`:`outline`,className:`h-4 rounded-md px-1.5 py-0 text-[10px]`,children:H(e.scope)}),(0,z.jsx)(A,{variant:a?`outline`:`secondary`,className:`h-4 rounded-md px-1.5 py-0 text-[10px]`,children:b(a?`enabled`:`disabled`)}),e.version&&e.version!==`0.0.0`&&(0,z.jsxs)(`span`,{className:`text-[10px] text-(--text-muted)`,children:[`v`,e.version]}),e.mode&&(0,z.jsx)(A,{variant:`outline`,className:`h-4 rounded-md px-1.5 py-0 text-[10px]`,children:b(`skillMode_${e.mode}`)})]}),(0,z.jsx)(`div`,{className:`mt-1 line-clamp-2 text-[11px] leading-4 text-(--text-muted)`,children:e.description||b(`noDescription`)}),e.triggers?.length>0&&(0,z.jsxs)(`div`,{className:`mt-1 truncate text-[10px] text-(--text-muted)`,children:[b(`skillTriggers`),`: `,e.triggers.join(`, `)]})]}),(0,z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,z.jsx)(C,{variant:`ghost`,size:`icon-xs`,onClick:()=>t(e),title:b(`view`),children:(0,z.jsx)(l,{size:13})}),(0,z.jsx)(V,{checked:a,onClick:()=>n(e,!a),title:b(a?`disable`:`enable`)}),(0,z.jsx)(C,{variant:`ghost`,size:`icon-xs`,onClick:()=>r(e),title:G(e)?b(`skillRoutingSettings`):b(`edit`),children:G(e)?(0,z.jsx)(L,{size:13}):(0,z.jsx)(u,{size:13})}),!G(e)&&(0,z.jsx)(C,{variant:`ghost`,size:`icon-xs`,onClick:()=>{confirm(b(`confirmDeleteSkill`).replace(`{{name}}`,e.name))&&i(e)},title:b(`delete`),className:`text-(--accent-red) hover:text-(--accent-red)`,children:(0,z.jsx)(f,{size:13})})]})]})})}function Y({projectDirs:e=[]}){let[t,n]=(0,R.useState)([]),[l,u]=(0,R.useState)(!0),[f,m]=(0,R.useState)(null),[h,g]=(0,R.useState)(null),[x,S]=(0,R.useState)(()=>new Set),[T,E]=(0,R.useState)(``),[D,O]=(0,R.useState)(`all`),[A,j]=(0,R.useState)(``),[M,P]=(0,R.useState)(`project`),[L,B]=(0,R.useState)(!1),[V,H]=(0,R.useState)(``),q=re(e),Y=(0,R.useMemo)(()=>q?q.split(`
8
- `):[],[q]),X=(0,R.useCallback)(async()=>{u(!0);try{let e=await k(Y);n(Array.isArray(e)?e:[])}catch{}u(!1)},[Y]);(0,R.useEffect)(()=>{X()},[X]);let Z=async(e,t)=>{n(n=>n.map(n=>n.name===e.name&&n.projectDir===e.projectDir?{...n,enabled:t}:n));try{await N(e.name,t,e.projectDir)}catch{n(n=>n.map(n=>n.name===e.name&&n.projectDir===e.projectDir?{...n,enabled:!t}:n))}try{let e=await k(Y);n(Array.isArray(e)?e:[])}catch{}},Q=async e=>{await y(e.name,e.projectDir),X()},oe=()=>{m(null),X()},se=async()=>{let e=A.trim();if(e){B(!0),H(``);try{let t=await v({source:e,scope:M});if(t?.error)throw Error(t.message||`Install failed`);j(``),await X()}catch(e){H(e.message||`Install failed`)}finally{B(!1)}}};t.filter(K).length,t.filter(e=>!G(e)).length;let $=(0,R.useMemo)(()=>{let e=T.trim().toLowerCase();return t.filter(t=>D===`enabled`&&!K(t)||D===`builtin`&&t.scope!==`builtin`||D===`custom`&&t.scope===`builtin`?!1:e?t.name.toLowerCase().includes(e)||String(W(t.projectName||``)).toLowerCase().includes(e):!0)},[t,T,D]),ce=(0,R.useMemo)(()=>{let e=[],t=[],n=new Map;for(let r of $){if(r.scope!==`project`){e.push(r);continue}let i=r.projectDir||`__current_project__`;if(!n.has(i)){let e={key:i,name:W(r.projectName||b(`projectScope`)),items:[]};n.set(i,e),t.push(e)}n.get(i).items.push(r)}return{regular:e,projectGroups:t}},[$]),le=(0,R.useCallback)(e=>{S(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return l?(0,z.jsxs)(`div`,{className:`py-8 text-center text-[12px] text-(--text-muted)`,children:[b(`loading`),`...`]}):(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsx)(`div`,{className:`rounded-lg border border-(--border-default) bg-(--bg-secondary) p-3`,children:(0,z.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,z.jsxs)(`div`,{className:`min-w-0`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(te,{size:14,className:`text-(--text-muted)`}),(0,z.jsx)(`span`,{className:`text-[13px] font-medium text-(--text-primary)`,children:b(`skillLibrary`)})]}),(0,z.jsx)(`div`,{className:`mt-1 text-[11px] text-(--text-muted)`,children:b(`skillPanelHint`)})]}),(0,z.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:(0,z.jsxs)(C,{onClick:()=>m(`new`),size:`sm`,children:[(0,z.jsx)(F,{size:13}),b(`addSkill`)]})})]})}),(0,z.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[1fr_auto_auto] sm:items-center`,children:[(0,z.jsx)(I,{value:A,onChange:e=>j(e.target.value),placeholder:b(`skillInstallPlaceholder`),className:`h-8 text-[13px]`}),(0,z.jsxs)(s,{value:M,onValueChange:P,children:[(0,z.jsx)(i,{className:`h-8 w-full bg-(--bg-primary) text-[13px] sm:w-[104px]`,children:(0,z.jsx)(r,{})}),(0,z.jsxs)(a,{align:`start`,children:[(0,z.jsx)(o,{value:`project`,children:b(`projectScope`)}),(0,z.jsx)(o,{value:`global`,children:b(`globalScope`)})]})]}),(0,z.jsxs)(C,{onClick:se,disabled:L||!A.trim(),size:`sm`,children:[(0,z.jsx)(ee,{size:13}),b(L?`installing`:`installSkill`)]})]}),V&&(0,z.jsx)(`div`,{className:`mt-2 text-[11px] text-(--accent-red)`,children:V}),(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center`,children:[(0,z.jsxs)(`div`,{className:`relative flex-1`,children:[(0,z.jsx)(d,{size:13,className:`pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-(--text-muted)`}),(0,z.jsx)(I,{value:T,onChange:e=>E(e.target.value),placeholder:b(`searchSkills`),className:`h-8 pl-8 text-[13px]`})]}),(0,z.jsx)(`div`,{className:`flex shrink-0 rounded-md border border-(--border-default) p-0.5 gap-0.5`,children:ne.map(e=>(0,z.jsx)(C,{type:`button`,variant:D===e?`secondary`:`ghost`,size:`xs`,onClick:()=>O(e),className:`px-2`,children:b(`filter_${e}`)},e))})]}),(0,z.jsx)(w,{className:`bg-(--border-default)`}),t.length===0&&!f&&(0,z.jsxs)(`div`,{className:`rounded-lg border border-dashed border-(--border-default) py-8 text-center`,children:[(0,z.jsx)(`div`,{className:`text-[13px] text-(--text-primary)`,children:b(`noSkills`)}),(0,z.jsx)(`div`,{className:`mt-1 text-[11px] text-(--text-muted)`,children:b(`noSkillsHint`)})]}),t.length>0&&$.length===0&&(0,z.jsx)(`div`,{className:`py-8 text-center text-[12px] text-(--text-muted)`,children:b(`noMatches`)}),(0,z.jsxs)(`div`,{className:`grid max-h-[420px] gap-2 overflow-y-auto pr-1`,children:[ce.regular.map(e=>(0,z.jsx)(J,{skill:e,onView:g,onToggle:Z,onEdit:m,onDelete:Q},U(e))),ce.projectGroups.map(e=>{let t=x.has(e.key);return(0,z.jsxs)(`div`,{className:`grid gap-1`,children:[(0,z.jsxs)(`button`,{type:`button`,onClick:()=>le(e.key),className:`flex h-8 w-full items-center gap-2 rounded-md border-0 bg-transparent px-2 text-left text-[12px] font-medium text-(--text-primary) hover:bg-(--bg-hover)`,title:e.key,children:[(0,z.jsx)(p,{size:14,className:`shrink-0 text-(--text-muted)`}),(0,z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name}),(0,z.jsx)(`span`,{className:`shrink-0 text-[12px] font-medium text-(--text-accent)`,children:e.items.length}),t?(0,z.jsx)(c,{size:13,className:`shrink-0 text-(--text-muted)`}):(0,z.jsx)(_,{size:13,className:`shrink-0 text-(--text-muted)`})]}),!t&&(0,z.jsx)(`div`,{className:`grid gap-2 pl-6`,children:e.items.map(e=>(0,z.jsx)(J,{skill:e,onView:g,onToggle:Z,onEdit:m,onDelete:Q},U(e)))})]},e.key)})]}),(0,z.jsx)(ae,{skill:h,open:!!h,onOpenChange:e=>{e||g(null)}}),(0,z.jsx)(ie,{skill:f===`new`?null:f,open:!!f,onSave:oe,onOpenChange:e=>{e||m(null)}})]})}function X({open:e,onOpenChange:t,projectDirs:n=[]}){return(0,z.jsx)(M,{open:e,onOpenChange:t,children:(0,z.jsxs)(x,{className:`sm:max-w-[800px] max-h-[86vh] overflow-hidden flex flex-col`,children:[(0,z.jsx)(P,{children:(0,z.jsx)(S,{children:b(`skills`)})}),(0,z.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0 pr-1`,children:(0,z.jsx)(Y,{projectDirs:n})})]})})}export{X as SkillDialog};
7
+ Skill instructions...`})]})]})]}),(0,z.jsxs)(`div`,{className:`mt-3 flex shrink-0 justify-end gap-2 border-t border-(--border-default) bg-(--bg-primary) pt-3`,children:[(0,z.jsx)(w,{variant:`outline`,onClick:n,size:`sm`,children:x(`cancel`)}),(0,z.jsx)(w,{onClick:async()=>{let n={description:u,scope:f,mode:g,triggers:y.split(`,`).map(e=>e.trim()).filter(Boolean),enabled:T,priority:Number(S)||0};P?(await h({name:c,description:u,content:D,scope:f}),await A(c,n)):(await A(e.name,n,e.projectDir),F||await v(e.name,D,e.projectDir)),t()},disabled:M||!F&&!D.trim()||P&&!c.trim(),size:`sm`,children:x(P?`create`:`save`)})]})]})}function ie({skill:e,open:t,onSave:n,onOpenChange:r}){return(0,z.jsx)(N,{open:t,onOpenChange:r,children:(0,z.jsxs)(b,{className:`sm:max-w-[760px] h-[86vh] max-h-[86vh] flex flex-col overflow-hidden`,children:[(0,z.jsx)(P,{className:`shrink-0`,children:(0,z.jsx)(S,{children:x(e?`editSkill`:`newSkill`)})}),(0,z.jsx)(q,{skill:e,onSave:n,onCancel:()=>r(!1)})]})})}function ae({skill:e,open:t,onOpenChange:n}){let[r,i]=(0,R.useState)(``),[a,o]=(0,R.useState)(!1);return(0,R.useEffect)(()=>{!t||!e||(o(!0),m(e.name,e.projectDir).then(e=>i(e.content||``)).catch(()=>{}).finally(()=>o(!1)))},[t,e]),(0,z.jsx)(N,{open:t,onOpenChange:n,children:(0,z.jsxs)(b,{className:`sm:max-w-[720px] max-h-[82vh] flex flex-col overflow-hidden`,children:[(0,z.jsx)(P,{className:`shrink-0`,children:(0,z.jsxs)(S,{children:[e?.name,` `,x(`contentPreview`)]})}),(0,z.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0 pr-1`,children:a?(0,z.jsxs)(`div`,{className:`py-8 text-center text-[12px] text-(--text-muted)`,children:[x(`loading`),`...`]}):(0,z.jsx)(`pre`,{className:`rounded-lg bg-(--bg-secondary) p-3 text-[13px] whitespace-pre-wrap break-words font-mono leading-5`,children:r})}),(0,z.jsx)(O,{className:`shrink-0`,children:(0,z.jsx)(w,{variant:`outline`,onClick:()=>n(!1),size:`sm`,children:x(`close`)})})]})})}function J({skill:e,onView:t,onToggle:n,onEdit:r,onDelete:i}){let a=K(e);return(0,z.jsx)(`div`,{className:T(`rounded-lg border p-3 transition-colors`,a?`border-(--border-default) bg-(--bg-primary) hover:bg-(--bg-hover)`:`border-(--border-default) bg-(--bg-secondary) opacity-75`),children:(0,z.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,z.jsx)(`span`,{className:`truncate text-[13px] font-medium text-(--text-primary)`,children:e.name}),(0,z.jsx)(j,{variant:G(e)?`secondary`:`outline`,className:`h-4 rounded-md px-1.5 py-0 text-[10px]`,children:H(e.scope)}),(0,z.jsx)(j,{variant:a?`outline`:`secondary`,className:`h-4 rounded-md px-1.5 py-0 text-[10px]`,children:x(a?`enabled`:`disabled`)}),e.version&&e.version!==`0.0.0`&&(0,z.jsxs)(`span`,{className:`text-[10px] text-(--text-muted)`,children:[`v`,e.version]}),e.mode&&(0,z.jsx)(j,{variant:`outline`,className:`h-4 rounded-md px-1.5 py-0 text-[10px]`,children:x(`skillMode_${e.mode}`)})]}),(0,z.jsx)(`div`,{className:`mt-1 line-clamp-2 text-[11px] leading-4 text-(--text-muted)`,children:e.description||x(`noDescription`)}),e.triggers?.length>0&&(0,z.jsxs)(`div`,{className:`mt-1 truncate text-[10px] text-(--text-muted)`,children:[x(`skillTriggers`),`: `,e.triggers.join(`, `)]})]}),(0,z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,z.jsx)(w,{variant:`ghost`,size:`icon-xs`,onClick:()=>t(e),title:x(`view`),children:(0,z.jsx)(l,{size:13})}),(0,z.jsx)(V,{checked:a,onClick:()=>n(e,!a),title:x(a?`disable`:`enable`)}),(0,z.jsx)(w,{variant:`ghost`,size:`icon-xs`,onClick:()=>r(e),title:G(e)?x(`skillRoutingSettings`):x(`edit`),children:G(e)?(0,z.jsx)(L,{size:13}):(0,z.jsx)(u,{size:13})}),!G(e)&&(0,z.jsx)(w,{variant:`ghost`,size:`icon-xs`,onClick:()=>{confirm(x(`confirmDeleteSkill`).replace(`{{name}}`,e.name))&&i(e)},title:x(`delete`),className:`text-(--accent-red) hover:text-(--accent-red)`,children:(0,z.jsx)(f,{size:13})})]})]})})}function Y({projectDirs:e=[]}){let[t,n]=(0,R.useState)([]),[l,u]=(0,R.useState)(!0),[f,m]=(0,R.useState)(null),[h,g]=(0,R.useState)(null),[v,b]=(0,R.useState)(()=>new Set),[S,T]=(0,R.useState)(``),[O,k]=(0,R.useState)(`all`),[A,j]=(0,R.useState)(``),[N,P]=(0,R.useState)(`project`),[L,B]=(0,R.useState)(!1),[V,H]=(0,R.useState)(``),q=re(e),Y=(0,R.useMemo)(()=>q?q.split(`
8
+ `):[],[q]),X=(0,R.useCallback)(async()=>{u(!0);try{let e=await _(Y);n(Array.isArray(e)?e:[])}catch{}u(!1)},[Y]);(0,R.useEffect)(()=>{X()},[X]);let Z=async(e,t)=>{n(n=>n.map(n=>n.name===e.name&&n.projectDir===e.projectDir?{...n,enabled:t}:n));try{await M(e.name,t,e.projectDir)}catch{n(n=>n.map(n=>n.name===e.name&&n.projectDir===e.projectDir?{...n,enabled:!t}:n))}try{let e=await _(Y);n(Array.isArray(e)?e:[])}catch{}},Q=async e=>{await p(e.name,e.projectDir),X()},oe=()=>{m(null),X()},se=async()=>{let e=A.trim();if(e){B(!0),H(``);try{let t=await C({source:e,scope:N});if(t?.error)throw Error(t.message||`Install failed`);j(``),await X()}catch(e){H(e.message||`Install failed`)}finally{B(!1)}}};t.filter(K).length,t.filter(e=>!G(e)).length;let $=(0,R.useMemo)(()=>{let e=S.trim().toLowerCase();return t.filter(t=>O===`enabled`&&!K(t)||O===`builtin`&&t.scope!==`builtin`||O===`custom`&&t.scope===`builtin`?!1:e?t.name.toLowerCase().includes(e)||String(W(t.projectName||``)).toLowerCase().includes(e):!0)},[t,S,O]),ce=(0,R.useMemo)(()=>{let e=[],t=[],n=new Map;for(let r of $){if(r.scope!==`project`){e.push(r);continue}let i=r.projectDir||`__current_project__`;if(!n.has(i)){let e={key:i,name:W(r.projectName||x(`projectScope`)),items:[]};n.set(i,e),t.push(e)}n.get(i).items.push(r)}return{regular:e,projectGroups:t}},[$]),le=(0,R.useCallback)(e=>{b(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return l?(0,z.jsxs)(`div`,{className:`py-8 text-center text-[12px] text-(--text-muted)`,children:[x(`loading`),`...`]}):(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsx)(`div`,{className:`rounded-lg border border-(--border-default) bg-(--bg-secondary) p-3`,children:(0,z.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,z.jsxs)(`div`,{className:`min-w-0`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(te,{size:14,className:`text-(--text-muted)`}),(0,z.jsx)(`span`,{className:`text-[13px] font-medium text-(--text-primary)`,children:x(`skillLibrary`)})]}),(0,z.jsx)(`div`,{className:`mt-1 text-[11px] text-(--text-muted)`,children:x(`skillPanelHint`)})]}),(0,z.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:(0,z.jsxs)(w,{onClick:()=>m(`new`),size:`sm`,children:[(0,z.jsx)(y,{size:13}),x(`addSkill`)]})})]})}),(0,z.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[1fr_auto_auto] sm:items-center`,children:[(0,z.jsx)(I,{value:A,onChange:e=>j(e.target.value),placeholder:x(`skillInstallPlaceholder`),className:`h-8 text-[13px]`}),(0,z.jsxs)(s,{value:N,onValueChange:P,children:[(0,z.jsx)(i,{className:`h-8 w-full bg-(--bg-primary) text-[13px] sm:w-[104px]`,children:(0,z.jsx)(r,{})}),(0,z.jsxs)(a,{align:`start`,children:[(0,z.jsx)(o,{value:`project`,children:x(`projectScope`)}),(0,z.jsx)(o,{value:`global`,children:x(`globalScope`)})]})]}),(0,z.jsxs)(w,{onClick:se,disabled:L||!A.trim(),size:`sm`,children:[(0,z.jsx)(ee,{size:13}),x(L?`installing`:`installSkill`)]})]}),V&&(0,z.jsx)(`div`,{className:`mt-2 text-[11px] text-(--accent-red)`,children:V}),(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center`,children:[(0,z.jsxs)(`div`,{className:`relative flex-1`,children:[(0,z.jsx)(d,{size:13,className:`pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-(--text-muted)`}),(0,z.jsx)(I,{value:S,onChange:e=>T(e.target.value),placeholder:x(`searchSkills`),className:`h-8 pl-8 text-[13px]`})]}),(0,z.jsx)(`div`,{className:`flex shrink-0 rounded-md border border-(--border-default) p-0.5 gap-0.5`,children:ne.map(e=>(0,z.jsx)(w,{type:`button`,variant:O===e?`secondary`:`ghost`,size:`xs`,onClick:()=>k(e),className:`px-2`,children:x(`filter_${e}`)},e))})]}),(0,z.jsx)(E,{className:`bg-(--border-default)`}),t.length===0&&!f&&(0,z.jsxs)(`div`,{className:`rounded-lg border border-dashed border-(--border-default) py-8 text-center`,children:[(0,z.jsx)(`div`,{className:`text-[13px] text-(--text-primary)`,children:x(`noSkills`)}),(0,z.jsx)(`div`,{className:`mt-1 text-[11px] text-(--text-muted)`,children:x(`noSkillsHint`)})]}),t.length>0&&$.length===0&&(0,z.jsx)(`div`,{className:`py-8 text-center text-[12px] text-(--text-muted)`,children:x(`noMatches`)}),(0,z.jsxs)(`div`,{className:`grid max-h-[420px] gap-2 overflow-y-auto pr-1`,children:[ce.regular.map(e=>(0,z.jsx)(J,{skill:e,onView:g,onToggle:Z,onEdit:m,onDelete:Q},U(e))),ce.projectGroups.map(e=>{let t=v.has(e.key);return(0,z.jsxs)(`div`,{className:`grid gap-1`,children:[(0,z.jsxs)(`button`,{type:`button`,onClick:()=>le(e.key),className:`flex h-8 w-full items-center gap-2 rounded-md border-0 bg-transparent px-2 text-left text-[12px] font-medium text-(--text-primary) hover:bg-(--bg-hover)`,title:e.key,children:[(0,z.jsx)(F,{size:14,className:`shrink-0 text-(--text-muted)`}),(0,z.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name}),(0,z.jsx)(`span`,{className:`shrink-0 text-[12px] font-medium text-(--text-accent)`,children:e.items.length}),t?(0,z.jsx)(c,{size:13,className:`shrink-0 text-(--text-muted)`}):(0,z.jsx)(D,{size:13,className:`shrink-0 text-(--text-muted)`})]}),!t&&(0,z.jsx)(`div`,{className:`grid gap-2 pl-6`,children:e.items.map(e=>(0,z.jsx)(J,{skill:e,onView:g,onToggle:Z,onEdit:m,onDelete:Q},U(e)))})]},e.key)})]}),(0,z.jsx)(ae,{skill:h,open:!!h,onOpenChange:e=>{e||g(null)}}),(0,z.jsx)(ie,{skill:f===`new`?null:f,open:!!f,onSave:oe,onOpenChange:e=>{e||m(null)}})]})}function X({open:e,onOpenChange:t,projectDirs:n=[]}){return(0,z.jsx)(N,{open:e,onOpenChange:t,children:(0,z.jsxs)(b,{className:`sm:max-w-[800px] max-h-[86vh] overflow-hidden flex flex-col`,children:[(0,z.jsx)(P,{children:(0,z.jsx)(S,{children:x(`skills`)})}),(0,z.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0 pr-1`,children:(0,z.jsx)(Y,{projectDirs:n})})]})})}export{X as SkillDialog};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-S-ySWqyJ.js";import{a as t,r as n}from"./bundle-mjs-C44PrJ2C.js";import{n as r,t as i}from"./pencil-BhT11Ztp.js";import{n as a,t as o}from"./trash-2-BfNZcWfX.js";import{E as s,F as c,R as l,V as u,X as d,Z as f,b as p,c as m,ct as h,d as g,f as _,ft as v,g as y,l as b,n as x,r as S,s as C,st as w,u as T}from"./index-CDXQGwPs.js";import{t as E}from"./input-Ca8O_061.js";var D=e(t(),1),O=n(),k=[`all`,`builtin`,`custom`];function A({checked:e,onClick:t,title:n}){return(0,O.jsx)(`button`,{type:`button`,onClick:t,title:n,"aria-pressed":e,className:v(`relative h-5 w-9 rounded-full border shadow-inner transition-colors`,e?`border-(--text-primary) bg-(--text-primary)`:`border-(--border-strong) bg-(--bg-hover)`),children:(0,O.jsx)(`span`,{className:v(`absolute left-0.5 top-0.5 size-3.5 rounded-full transition-transform`,e?`bg-(--bg-primary)`:`bg-(--text-muted)`,e?`translate-x-4`:`translate-x-0`)})})}function j(e){return h(e===`builtin`?`builtin`:`custom`)}function M({soul:e,onSave:t,onCancel:n}){let[r,i]=(0,D.useState)(e?.name||``),[a,o]=(0,D.useState)(``),[s,c]=(0,D.useState)(!1),u=!e;return(0,D.useEffect)(()=>{if(i(e?.name||``),!e){o(``);return}c(!0),d(e.name).then(e=>o(e.content||``)).catch(()=>{}).finally(()=>c(!1))},[e]),(0,O.jsxs)(`div`,{className:`space-y-3`,children:[(0,O.jsxs)(`div`,{className:`mb-3 flex items-start justify-between gap-3`,children:[(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`div`,{className:`text-[13px] font-medium text-(--text-primary)`,children:h(u?`newSoul`:`editSoul`)}),(0,O.jsx)(`div`,{className:`mt-0.5 text-[11px] text-(--text-muted)`,children:h(`soulEditorHint`)})]}),(0,O.jsx)(S,{variant:`outline`,className:`rounded-md px-1.5 py-0 text-[10px]`,children:u?h(`custom`):j(e.scope)})]}),(0,O.jsxs)(`div`,{className:`grid gap-3`,children:[(0,O.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,O.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:h(`name`)}),(0,O.jsx)(E,{value:r,onChange:e=>i(e.target.value),disabled:!u,placeholder:`my-soul`,className:`h-8 text-[13px]`})]}),(0,O.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,O.jsx)(`label`,{className:`text-[12px] text-(--text-muted)`,children:h(`soulContent`)}),s?(0,O.jsxs)(`div`,{className:`rounded-md border border-(--border-default) py-8 text-center text-[12px] text-(--text-muted)`,children:[h(`loading`),`...`]}):(0,O.jsx)(x,{value:a,onChange:e=>o(e.target.value),className:`min-h-[220px] resize-y text-[13px] font-mono leading-5`,placeholder:h(`soulPlaceholder`)})]})]}),(0,O.jsxs)(`div`,{className:`mt-3 flex justify-end gap-2`,children:[(0,O.jsx)(_,{variant:`outline`,onClick:n,size:`sm`,children:h(`cancel`)}),(0,O.jsx)(_,{onClick:async()=>{u?await l({name:r,content:a}):await w(e.name,a),t()},disabled:s||!a.trim()||u&&!r.trim(),size:`sm`,children:h(u?`create`:`save`)})]})]})}function N({soul:e,open:t,onSave:n,onOpenChange:r}){return(0,O.jsx)(C,{open:t,onOpenChange:r,children:(0,O.jsxs)(m,{className:`sm:max-w-[720px] max-h-[86vh] flex flex-col overflow-hidden`,children:[(0,O.jsx)(T,{className:`shrink-0`,children:(0,O.jsx)(g,{children:h(e?`editSoul`:`newSoul`)})}),(0,O.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0 pr-1`,children:(0,O.jsx)(M,{soul:e,onSave:n,onCancel:()=>r(!1)})})]})})}function P({soul:e,open:t,onOpenChange:n}){let[r,i]=(0,D.useState)(``),[a,o]=(0,D.useState)(!1);return(0,D.useEffect)(()=>{!t||!e||(o(!0),d(e.name).then(e=>i(e.content||``)).catch(()=>{}).finally(()=>o(!1)))},[t,e]),(0,O.jsx)(C,{open:t,onOpenChange:n,children:(0,O.jsxs)(m,{className:`sm:max-w-[680px] max-h-[82vh] flex flex-col overflow-hidden`,children:[(0,O.jsx)(T,{className:`shrink-0`,children:(0,O.jsxs)(g,{children:[e?.name,` `,h(`contentPreview`)]})}),(0,O.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0 pr-1`,children:a?(0,O.jsxs)(`div`,{className:`py-8 text-center text-[12px] text-(--text-muted)`,children:[h(`loading`),`...`]}):(0,O.jsx)(`pre`,{className:`rounded-lg bg-(--bg-secondary) p-3 text-[13px] whitespace-pre-wrap break-words font-mono leading-5`,children:r})}),(0,O.jsx)(b,{className:`shrink-0`,children:(0,O.jsx)(_,{variant:`outline`,onClick:()=>n(!1),size:`sm`,children:h(`close`)})})]})})}function F(){let[e,t]=(0,D.useState)([]),[n,l]=(0,D.useState)(!0),[d,m]=(0,D.useState)(null),[g,b]=(0,D.useState)(null),[x,C]=(0,D.useState)(``),[w,T]=(0,D.useState)(`all`),M=(0,D.useCallback)(async()=>{l(!0);try{let e=await f();t(Array.isArray(e)?e:[])}catch{}l(!1)},[]);(0,D.useEffect)(()=>{M()},[M]);let F=e.find(e=>e.active);e.filter(e=>e.scope!==`builtin`).length;let I=(0,D.useMemo)(()=>{let t=x.trim().toLowerCase();return e.filter(e=>w!==`all`&&e.scope!==w?!1:t?e.name.toLowerCase().includes(t):!0)},[e,x,w]),L=async e=>{await c(e),M()},R=async e=>{await u(e),M()};return n?(0,O.jsxs)(`div`,{className:`py-8 text-center text-[12px] text-(--text-muted)`,children:[h(`loading`),`...`]}):(0,O.jsxs)(`div`,{className:`space-y-3`,children:[(0,O.jsx)(`div`,{className:`rounded-lg border border-(--border-default) bg-(--bg-secondary) p-3`,children:(0,O.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,O.jsx)(s,{size:14,className:`text-(--text-muted)`}),(0,O.jsx)(`span`,{className:`text-[13px] font-medium text-(--text-primary)`,children:F?.name||h(`noActiveSoul`)}),F&&(0,O.jsx)(S,{className:`h-4 rounded-md border-0 bg-(--text-primary) px-1.5 py-0 text-[10px] text-(--bg-primary)`,children:h(`current`)})]}),(0,O.jsx)(`div`,{className:`mt-1 text-[11px] text-(--text-muted)`,children:h(`soulPanelHint`)})]}),(0,O.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,O.jsxs)(_,{onClick:()=>m(`new`),size:`sm`,children:[(0,O.jsx)(p,{size:13}),h(`addSoul`)]})})]})}),(0,O.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center`,children:[(0,O.jsxs)(`div`,{className:`relative flex-1`,children:[(0,O.jsx)(a,{size:13,className:`pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-(--text-muted)`}),(0,O.jsx)(E,{value:x,onChange:e=>C(e.target.value),placeholder:h(`searchSouls`),className:`h-8 pl-8 text-[13px]`})]}),(0,O.jsx)(`div`,{className:`flex shrink-0 rounded-md border border-(--border-default) p-0.5 gap-0.5`,children:k.map(e=>(0,O.jsx)(_,{type:`button`,variant:w===e?`secondary`:`ghost`,size:`xs`,onClick:()=>T(e),className:`px-2`,children:h(`filter_${e}`)},e))})]}),(0,O.jsx)(y,{className:`bg-(--border-default)`}),e.length===0&&!d&&(0,O.jsxs)(`div`,{className:`rounded-lg border border-dashed border-(--border-default) py-8 text-center`,children:[(0,O.jsx)(`div`,{className:`text-[13px] text-(--text-primary)`,children:h(`noSouls`)}),(0,O.jsx)(`div`,{className:`mt-1 text-[11px] text-(--text-muted)`,children:h(`noSoulsHint`)})]}),e.length>0&&I.length===0&&(0,O.jsx)(`div`,{className:`py-8 text-center text-[12px] text-(--text-muted)`,children:h(`noMatches`)}),(0,O.jsx)(`div`,{className:`grid max-h-[420px] gap-2 overflow-y-auto pr-1`,children:I.map(e=>(0,O.jsx)(`div`,{className:v(`rounded-lg border p-3 transition-colors`,e.active?`border-(--border-strong) bg-(--bg-active)`:`border-(--border-default) bg-(--bg-primary) hover:bg-(--bg-hover)`),children:(0,O.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,O.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,O.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,O.jsx)(`span`,{className:`truncate text-[13px] font-medium text-(--text-primary)`,children:e.name}),(0,O.jsx)(S,{variant:`outline`,className:`h-4 rounded-md px-1.5 py-0 text-[10px]`,children:j(e.scope)}),e.active&&(0,O.jsx)(S,{className:`h-4 rounded-md border-0 bg-(--text-primary) px-1.5 py-0 text-[10px] text-(--bg-primary)`,children:h(`current`)})]}),(0,O.jsx)(`div`,{className:`mt-1 line-clamp-2 text-[11px] leading-4 text-(--text-muted)`,children:e.preview||h(`noPreview`)})]}),(0,O.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,O.jsx)(_,{variant:`ghost`,size:`icon-xs`,onClick:()=>b(e),title:h(`view`),children:(0,O.jsx)(r,{size:13})}),(0,O.jsx)(A,{checked:!!e.active,onClick:()=>{e.active||L(e.name)},title:e.active?h(`current`):h(`activate`)}),e.scope!==`builtin`&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(_,{variant:`ghost`,size:`icon-xs`,onClick:()=>m(e),title:h(`edit`),children:(0,O.jsx)(i,{size:13})}),(0,O.jsx)(_,{variant:`ghost`,size:`icon-xs`,onClick:()=>{confirm(h(`confirmDeleteSoul`).replace(`{{name}}`,e.name))&&R(e.name)},title:h(`delete`),className:`text-(--accent-red) hover:text-(--accent-red)`,children:(0,O.jsx)(o,{size:13})})]})]})]})},`${e.scope}-${e.name}`))}),(0,O.jsx)(P,{soul:g,open:!!g,onOpenChange:e=>{e||b(null)}}),(0,O.jsx)(N,{soul:d===`new`?null:d,open:!!d,onSave:()=>{m(null),M()},onOpenChange:e=>{e||m(null)}})]})}function I({open:e,onOpenChange:t}){return(0,O.jsx)(C,{open:e,onOpenChange:t,children:(0,O.jsxs)(m,{className:`sm:max-w-[760px] max-h-[86vh] overflow-hidden flex flex-col`,children:[(0,O.jsx)(T,{children:(0,O.jsx)(g,{children:h(`souls`)})}),(0,O.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0 pr-1`,children:(0,O.jsx)(F,{})})]})})}export{I as SoulDialog};
@@ -0,0 +1 @@
1
+ import{P as e}from"./index-CDXQGwPs.js";var t=e(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]);export{t};