skill-creator 2.1.0 → 2.3.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 (64) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/README.md +13 -0
  3. package/dist/cli.js +8096 -3713
  4. package/dist/cli.js.map +4 -4
  5. package/dist/daemon.js +4694 -956
  6. package/dist/daemon.js.map +4 -4
  7. package/dist/package.json +1 -1
  8. package/dist/webui/_app/immutable/assets/0.Dbnkcm0y.css +2 -0
  9. package/dist/webui/_app/immutable/assets/ProviderView.BKgtsfqs.css +1 -0
  10. package/dist/webui/_app/immutable/chunks/1aUphu7Y.js +1 -0
  11. package/dist/webui/_app/immutable/chunks/8hp3I3ac.js +1 -0
  12. package/dist/webui/_app/immutable/chunks/{K56ab8zF.js → B0-OMyfG.js} +1 -1
  13. package/dist/webui/_app/immutable/chunks/B5sWuF6v.js +1 -0
  14. package/dist/webui/_app/immutable/chunks/BOPkZ98B.js +1 -0
  15. package/dist/webui/_app/immutable/chunks/BT2vrlul.js +1 -0
  16. package/dist/webui/_app/immutable/chunks/{QU8DIUJz.js → BdXWsCWd.js} +2 -2
  17. package/dist/webui/_app/immutable/chunks/BkjUgGsE.js +1 -0
  18. package/dist/webui/_app/immutable/chunks/{D-V0xBeS.js → Bl0jjuyR.js} +1 -1
  19. package/dist/webui/_app/immutable/chunks/ByW1yjUW.js +1 -0
  20. package/dist/webui/_app/immutable/chunks/{Bos6D7ir.js → C5MrAfWf.js} +2 -2
  21. package/dist/webui/_app/immutable/chunks/CI1OXbBG.js +1 -0
  22. package/dist/webui/_app/immutable/chunks/{BKjuWHgW.js → CPbfZBJo.js} +3 -3
  23. package/dist/webui/_app/immutable/chunks/{CY3MARMs.js → CgxChsUX.js} +1 -1
  24. package/dist/webui/_app/immutable/chunks/ChvFFUWR.js +1 -0
  25. package/dist/webui/_app/immutable/chunks/CpRvgjpe.js +1 -0
  26. package/dist/webui/_app/immutable/chunks/Cr5YUwJg.js +1 -0
  27. package/dist/webui/_app/immutable/chunks/{B0yogbIO.js → D3qCeXbe.js} +1 -1
  28. package/dist/webui/_app/immutable/chunks/{0umLG1IN.js → DApmS1g_.js} +1 -1
  29. package/dist/webui/_app/immutable/chunks/DKQHhdJ1.js +1 -0
  30. package/dist/webui/_app/immutable/chunks/{DFdxGYRu.js → DKepoBN5.js} +4 -4
  31. package/dist/webui/_app/immutable/chunks/DOjT7y5f.js +1 -0
  32. package/dist/webui/_app/immutable/chunks/DXKynIUR.js +1 -0
  33. package/dist/webui/_app/immutable/chunks/DiaaOubc.js +1 -0
  34. package/dist/webui/_app/immutable/chunks/DnPeA-9c.js +1 -0
  35. package/dist/webui/_app/immutable/chunks/DwIX6ZFE.js +1 -0
  36. package/dist/webui/_app/immutable/chunks/E8LHILEh.js +1 -0
  37. package/dist/webui/_app/immutable/chunks/F_BrNiaz.js +1 -0
  38. package/dist/webui/_app/immutable/chunks/HopcQwhZ.js +1 -0
  39. package/dist/webui/_app/immutable/chunks/j76fpbnQ.js +2 -0
  40. package/dist/webui/_app/immutable/chunks/myIHotqu.js +2 -0
  41. package/dist/webui/_app/immutable/chunks/{hrRIAQd7.js → oxP0dM6z.js} +1 -1
  42. package/dist/webui/_app/immutable/chunks/{Dl8eQ129.js → p_ObVaZi.js} +1 -1
  43. package/dist/webui/_app/immutable/entry/{app.CkIQoKd-.js → app.BQ4neDVJ.js} +2 -2
  44. package/dist/webui/_app/immutable/entry/start.BqwTCU7F.js +1 -0
  45. package/dist/webui/_app/immutable/nodes/{0.DY8kli0K.js → 0.uOFdFHyI.js} +119 -119
  46. package/dist/webui/_app/immutable/nodes/{1.DxOotYUD.js → 1.BhX-6aiQ.js} +1 -1
  47. package/dist/webui/_app/immutable/nodes/{2.BhwY9m4H.js → 2.C7Br-rQ1.js} +1 -1
  48. package/dist/webui/_app/version.json +1 -1
  49. package/dist/webui/index.html +28 -22
  50. package/package.json +10 -4
  51. package/dist/webui/_app/immutable/assets/0.BfQ9GZ7H.css +0 -2
  52. package/dist/webui/_app/immutable/assets/ProviderView.DEH95hqa.css +0 -1
  53. package/dist/webui/_app/immutable/chunks/9b6xLvUw.js +0 -1
  54. package/dist/webui/_app/immutable/chunks/BDe0K-12.js +0 -1
  55. package/dist/webui/_app/immutable/chunks/CIFG41pU.js +0 -1
  56. package/dist/webui/_app/immutable/chunks/CNPsST_i.js +0 -1
  57. package/dist/webui/_app/immutable/chunks/Ckw1quWt.js +0 -1
  58. package/dist/webui/_app/immutable/chunks/D-ihBChi.js +0 -1
  59. package/dist/webui/_app/immutable/chunks/D7i1h2eW.js +0 -2
  60. package/dist/webui/_app/immutable/chunks/DFDHkP9N.js +0 -1
  61. package/dist/webui/_app/immutable/chunks/Dbn_qXWm.js +0 -1
  62. package/dist/webui/_app/immutable/chunks/NO3Cfsmo.js +0 -1
  63. package/dist/webui/_app/immutable/chunks/UsOmL8ol.js +0 -1
  64. package/dist/webui/_app/immutable/entry/start.DG-jtr9O.js +0 -1
@@ -1,3 +1,3 @@
1
- import{A as e,At as t,B as n,Ct as r,D as i,F as a,G as o,Mt as s,N as c,R as l,St as u,U as d,W as f,X as p,_t as m,bt as h,ct as g,d as _,ft as v,gt as y,j as b,k as x,kt as S,lt as C,mt as w,nt as T,o as E,ot as D,rt as O,s as k,st as A,ut as j,wt as M,x as N,xt as P}from"./CmCJ0SKP.js";import{t as F}from"./DFDHkP9N.js";import"./xihTtKlq.js";import{t as I}from"./K56ab8zF.js";import"./D-ihBChi.js";import{t as L}from"./BkEnd9_Z.js";import{i as R,r as z}from"./hrRIAQd7.js";import{_ as B,a as ee,b as V,l as H,s as U,t as W,x as G}from"./BKjuWHgW.js";import{c as te,l as ne,s as re}from"./UsOmL8ol.js";import{n as ie,t as ae}from"./Dl8eQ129.js";import{a as K,i as q,n as J}from"./CNPsST_i.js";import{n as oe,r as se,t as Y}from"./Ckw1quWt.js";import{n as X,r as ce,t as le}from"./CQD9uzpA.js";import{t as ue}from"./BYNWtKcf.js";import{t as de}from"./s48N5eaK.js";import{t as Z}from"./CeR4do8T.js";var fe=new Set([`$$slots`,`$$events`,`$$legacy`]);function pe(e,t){let n=E(t,fe),r=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`}],[`path`,{d:`m9 11 3 3L22 4`}]];L(e,k({name:`circle-check-big`},()=>n,{get iconNode(){return r}}))}var me=new Set([`$$slots`,`$$events`,`$$legacy`]);function he(e,t){let n=E(t,me),r=[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`}],[`path`,{d:`M6.453 15h11.094`}],[`path`,{d:`M8.5 2h7`}]];L(e,k({name:`flask-conical`},()=>n,{get iconNode(){return r}}))}var ge=n(`<button><!> </button>`),_e=n(`<div class="flex shrink-0 items-center gap-1 border-b border-border px-2"></div>`);function ve(n,s){r(s,!0);let c=[{id:`file`,label:`File`,icon:oe},{id:`log`,label:`History`,icon:X},{id:`preview`,label:`Preview`,icon:le},{id:`validate`,label:`Validate`,icon:pe},{id:`test`,label:`Test`,icon:he}],d=R(),f=y(()=>d?.()?.subview??`file`);function m(e){let t=new URLSearchParams(I.url.search);t.set(`subview`,e),F(`${I.url.pathname}?${t.toString()}`)}var h=_e();e(h,21,()=>c,e=>e.id,(e,n)=>{var r=ge(),s=D(r);i(s,()=>p(n).icon,(e,t)=>{t(e,{class:`h-3.5 w-3.5`})});var c=C(s);t(r),T(()=>{N(r,1,`flex items-center gap-1.5 px-3 py-2 text-xs font-medium transition-colors ${p(f)===p(n).id?`border-b-2 border-primary text-primary`:`text-muted-foreground hover:text-foreground`}`),a(c,` ${p(n).label??``}`)}),o(`click`,r,()=>m(p(n).id)),l(e,r)}),t(h),l(n,h),u()}f([`click`]);function ye(e,t=``){return{mode:`new`,target:e,skillId:null,name:``,description:``,body:``,revision:null,extraFrontmatter:{},directoryName:t}}var be={workspaceId:G.parse(`~`),providerId:V.parse(`user`)};function xe(){return{mode:`new`,target:be,skillId:null,name:``,description:``,body:``,revision:null,extraFrontmatter:{},directoryName:``}}function Se(e,t){return{mode:`edit`,target:e,skillId:t,name:``,description:``,body:``,revision:null,extraFrontmatter:{},directoryName:``}}function Ce(e){return{...e.extraFrontmatter,name:e.name,description:e.description}}var we=Symbol(`skill-creator:creator-editor`);function Te(e){let t=j(e),n={get draft(){return t},hydrateFromDocument(e){t.skillId=e.skillId,t.name=String(e.frontmatter.name??``),t.description=String(e.frontmatter.description??``),t.body=e.body,t.revision=e.revision,t.directoryName=e.directoryName;let{name:n,description:r,...i}=e.frontmatter;t.extraFrontmatter=i},advanceRevision(e){t.revision=e}};return M(we,n),n}function Q(){if(!P(we))throw Error(`[creator-editor] useCreatorEditor 必须在 <CreatorWorkspace> 内调用`);return h(we)}function $(e,t,n){return e?`${t}:${e.workspaceId}/${e.providerId}${n===null?``:`/${n}`}`:null}var Ee=new Map,De=new Set;function Oe(e){return{...e,target:{...e.target},extraFrontmatter:{...e.extraFrontmatter}}}function ke(e,t){Ee.set(e,Oe(t))}function Ae(e){let t=Ee.get(e);return t===void 0?null:Oe(t)}function je(e){Ee.delete(e)}function Me(e){De.add(e)}function Ne(e){return De.has(e)}function Pe(e){De.delete(e)}var Fe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ie(e,t){let n=E(t,Fe),r=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]];L(e,k({name:`save`},()=>n,{get iconNode(){return r}}))}var Le=new Set([`$$slots`,`$$events`,`$$legacy`]);function Re(e,t){let n=E(t,Le),r=[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}]];L(e,k({name:`rotate-cw`},()=>n,{get iconNode(){return r}}))}var ze=n(`<!> Reload`,1),Be=n(`<!> <span class="hidden sm:inline">Delete</span>`,1),Ve=n(`<!> `,1),He=n(`<div class="flex flex-1 items-center justify-center gap-2 text-xs text-muted-foreground"><!> Loading…</div>`),Ue=n(`<div class="flex flex-1 flex-col items-center justify-center gap-2 px-8 text-center"><p class="text-xs text-destructive"> </p> <!></div>`),We=n(`<span class="text-[11px] text-destructive">Use lowercase letters, numbers, and hyphens.</span>`),Ge=n(`<label class="block space-y-1"><span class="text-[11px] font-medium text-muted-foreground">Directory name</span> <!> <!></label>`),Ke=n(`<div class="min-h-0 flex-1 space-y-3 overflow-y-auto p-4"><!> <label class="block space-y-1"><span class="text-[11px] font-medium text-muted-foreground">Name</span> <!></label> <label class="block space-y-1"><span class="text-[11px] font-medium text-muted-foreground">Description</span> <textarea rows="2" class="w-full resize-y rounded-md border border-input bg-input/20 px-2 py-1 text-xs leading-5 outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30" placeholder="What this skill does"></textarea></label> <label class="block flex min-h-0 flex-1 flex-col space-y-1"><span class="text-[11px] font-medium text-muted-foreground">Body (Markdown)</span> <textarea rows="16" class="w-full flex-1 resize-y rounded-md border border-input bg-input/20 px-2 py-1.5 font-mono text-xs leading-5 outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30" placeholder="## When to Use
1
+ import{A as e,At as t,B as n,Ct as r,D as i,F as a,G as o,Mt as s,N as c,R as l,St as u,U as d,W as f,X as p,_t as m,bt as h,ct as g,d as _,ft as v,gt as y,j as b,k as x,kt as S,lt as C,mt as w,nt as T,o as E,ot as D,rt as O,s as k,st as A,ut as j,wt as M,x as N,xt as P}from"./CmCJ0SKP.js";import{t as F}from"./8hp3I3ac.js";import"./xihTtKlq.js";import{t as I}from"./B0-OMyfG.js";import"./DXKynIUR.js";import{t as L}from"./BkEnd9_Z.js";import{i as R,r as z}from"./oxP0dM6z.js";import{_ as B,a as ee,b as V,l as H,s as U,t as W,x as G}from"./CPbfZBJo.js";import{g as te,h as ne,m as re}from"./BOPkZ98B.js";import{n as K}from"./1aUphu7Y.js";import{n as ie,t as ae}from"./p_ObVaZi.js";import{n as q,t as J}from"./DnPeA-9c.js";import{t as oe}from"./DOjT7y5f.js";import{n as se,t as Y}from"./ChvFFUWR.js";import{n as X,r as ce,t as le}from"./CQD9uzpA.js";import{t as ue}from"./BYNWtKcf.js";import{t as de}from"./s48N5eaK.js";import{t as Z}from"./CeR4do8T.js";var fe=new Set([`$$slots`,`$$events`,`$$legacy`]);function pe(e,t){let n=E(t,fe),r=[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`}],[`path`,{d:`m9 11 3 3L22 4`}]];L(e,k({name:`circle-check-big`},()=>n,{get iconNode(){return r}}))}var me=new Set([`$$slots`,`$$events`,`$$legacy`]);function he(e,t){let n=E(t,me),r=[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`}],[`path`,{d:`M6.453 15h11.094`}],[`path`,{d:`M8.5 2h7`}]];L(e,k({name:`flask-conical`},()=>n,{get iconNode(){return r}}))}var ge=n(`<button><!> </button>`),_e=n(`<div class="flex shrink-0 items-center gap-1 border-b border-border px-2"></div>`);function ve(n,s){r(s,!0);let c=[{id:`file`,label:`File`,icon:se},{id:`log`,label:`History`,icon:X},{id:`preview`,label:`Preview`,icon:le},{id:`validate`,label:`Validate`,icon:pe},{id:`test`,label:`Test`,icon:he}],d=R(),f=y(()=>d?.()?.subview??`file`);function m(e){let t=new URLSearchParams(I.url.search);t.set(`subview`,e),F(`${I.url.pathname}?${t.toString()}`)}var h=_e();e(h,21,()=>c,e=>e.id,(e,n)=>{var r=ge(),s=D(r);i(s,()=>p(n).icon,(e,t)=>{t(e,{class:`h-3.5 w-3.5`})});var c=C(s);t(r),T(()=>{N(r,1,`flex items-center gap-1.5 px-3 py-2 text-xs font-medium transition-colors ${p(f)===p(n).id?`border-b-2 border-primary text-primary`:`text-muted-foreground hover:text-foreground`}`),a(c,` ${p(n).label??``}`)}),o(`click`,r,()=>m(p(n).id)),l(e,r)}),t(h),l(n,h),u()}f([`click`]);function ye(e,t=``){return{mode:`new`,target:e,skillId:null,name:``,description:``,body:``,revision:null,extraFrontmatter:{},directoryName:t}}var be={workspaceId:G.parse(`~`),providerId:V.parse(`user`)};function xe(){return{mode:`new`,target:be,skillId:null,name:``,description:``,body:``,revision:null,extraFrontmatter:{},directoryName:``}}function Se(e,t){return{mode:`edit`,target:e,skillId:t,name:``,description:``,body:``,revision:null,extraFrontmatter:{},directoryName:``}}function Ce(e){return{...e.extraFrontmatter,name:e.name,description:e.description}}var we=Symbol(`skill-creator:creator-editor`);function Te(e){let t=j(e),n={get draft(){return t},hydrateFromDocument(e){t.skillId=e.skillId,t.name=String(e.frontmatter.name??``),t.description=String(e.frontmatter.description??``),t.body=e.body,t.revision=e.revision,t.directoryName=e.directoryName;let{name:n,description:r,...i}=e.frontmatter;t.extraFrontmatter=i},advanceRevision(e){t.revision=e}};return M(we,n),n}function Q(){if(!P(we))throw Error(`[creator-editor] useCreatorEditor 必须在 <CreatorWorkspace> 内调用`);return h(we)}function $(e,t,n){return e?`${t}:${e.workspaceId}/${e.providerId}${n===null?``:`/${n}`}`:null}var Ee=new Map,De=new Set;function Oe(e){return{...e,target:{...e.target},extraFrontmatter:{...e.extraFrontmatter}}}function ke(e,t){Ee.set(e,Oe(t))}function Ae(e){let t=Ee.get(e);return t===void 0?null:Oe(t)}function je(e){Ee.delete(e)}function Me(e){De.add(e)}function Ne(e){return De.has(e)}function Pe(e){De.delete(e)}var Fe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ie(e,t){let n=E(t,Fe),r=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]];L(e,k({name:`save`},()=>n,{get iconNode(){return r}}))}var Le=new Set([`$$slots`,`$$events`,`$$legacy`]);function Re(e,t){let n=E(t,Le),r=[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}]];L(e,k({name:`rotate-cw`},()=>n,{get iconNode(){return r}}))}var ze=n(`<!> Reload`,1),Be=n(`<!> <span class="hidden sm:inline">Delete</span>`,1),Ve=n(`<!> `,1),He=n(`<div class="flex flex-1 items-center justify-center gap-2 text-xs text-muted-foreground"><!> Loading…</div>`),Ue=n(`<div class="flex flex-1 flex-col items-center justify-center gap-2 px-8 text-center"><p class="text-xs text-destructive"> </p> <!></div>`),We=n(`<span class="text-[11px] text-destructive">Use lowercase letters, numbers, and hyphens.</span>`),Ge=n(`<label class="block space-y-1"><span class="text-[11px] font-medium text-muted-foreground">Directory name</span> <!> <!></label>`),Ke=n(`<div class="min-h-0 flex-1 space-y-3 overflow-y-auto p-4"><!> <label class="block space-y-1"><span class="text-[11px] font-medium text-muted-foreground">Name</span> <!></label> <label class="block space-y-1"><span class="text-[11px] font-medium text-muted-foreground">Description</span> <textarea rows="2" class="w-full resize-y rounded-md border border-input bg-input/20 px-2 py-1 text-xs leading-5 outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30" placeholder="What this skill does"></textarea></label> <label class="block flex min-h-0 flex-1 flex-col space-y-1"><span class="text-[11px] font-medium text-muted-foreground">Body (Markdown)</span> <textarea rows="16" class="w-full flex-1 resize-y rounded-md border border-input bg-input/20 px-2 py-1.5 font-mono text-xs leading-5 outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30" placeholder="## When to Use
2
2
 
3
- Describe when this skill should be invoked."></textarea></label></div>`),qe=n(`<div class="flex h-full flex-col"><div class="flex shrink-0 items-center justify-between border-b border-border px-4 py-2"><span class="text-xs font-medium"> </span> <div class="flex items-center gap-1.5"><!> <!> <!></div></div> <!></div> <!>`,1);function Je(e,n){r(n,!0);let i=Q(),o=i.draft,s=W(ee),f=w(!1),h=w(null),b=w(!1);O(()=>{if(o.mode!==`edit`||o.skillId===null)return;let e=$(o.target,`edit`,o.skillId);e!==null&&Ne(e)||x(o.target,o.skillId)});async function x(e,t){let n=s.issue();v(f,!0),v(h,null);try{let r=await re(e,t);if(!n.isCurrent())return;i.hydrateFromDocument(r);let a=$(e,`edit`,t);a!==null&&Me(a)}catch(e){if(!n.isCurrent())return;v(h,e instanceof Error?e.message:String(e),!0)}finally{n.isLatest()&&v(f,!1)}}function E(){if(o.mode===`edit`&&o.skillId){let e=$(o.target,`edit`,o.skillId);e!==null&&Pe(e),x(o.target,o.skillId)}}let k=y(()=>o.mode!==`new`||H.safeParse(o.directoryName).success),j=y(()=>!p(b)&&o.name.trim().length>0&&o.description.trim().length>0&&(o.mode===`edit`||p(k))&&o.revision!==null==(o.mode===`edit`));async function M(){if(o.mode===`edit`){if(o.skillId===null||o.revision===null)return;v(b,!0);try{let e=await ne({mode:`update`,workspaceId:o.target.workspaceId,providerId:o.target.providerId,skillId:o.skillId,expectedRevision:o.revision,frontmatter:Ce(o),body:o.body});i.advanceRevision(e.document.revision),J(`Saved.`)}catch(e){N(e)}finally{v(b,!1)}return}let e=H.safeParse(o.directoryName);if(!e.success){J(`Directory name must be lowercase letters, numbers, and hyphens.`);return}v(b,!0);try{let t=await ne({mode:`create`,workspaceId:o.target.workspaceId,providerId:o.target.providerId,directoryName:e.data,frontmatter:Ce(o),body:o.body});i.hydrateFromDocument(t.document);let n=$(o.target,`edit`,t.document.skillId);n!==null&&Me(n),J(`Skill created.`)}catch(e){N(e)}finally{v(b,!1)}}function N(e){if(e instanceof B&&e.code===`CONFLICT`){J(`This skill changed elsewhere. Reload to view the latest.`,{label:`Reload`,run:E});return}J(e instanceof Error?e.message:String(e))}let P=w(!1),I=w(!1),L=y(()=>o.mode===`edit`&&o.skillId!==null&&o.revision!==null);async function R(){if(!p(L)||p(I))return;let e=o.skillId,t=o.revision;if(e!==null&&t!==null){v(I,!0);try{await te({target:o.target,skillId:e,expectedRevision:t}),v(P,!1),J(`Skill deleted.`);let n=$(o.target,`edit`,e);n!==null&&(je(n),Pe(n)),await F(`/creator`)}catch(e){e instanceof B&&e.code===`CONFLICT`?(v(P,!1),J(`This skill changed elsewhere. Reload before deleting.`,{label:`Reload`,run:E})):J(e instanceof Error?e.message:String(e))}finally{v(I,!1)}}}var z=qe(),V=A(z),U=D(V),G=D(U),oe=g(G,!0),Y=C(G,2),X=D(Y),ce=e=>{K(e,{variant:`outline`,size:`sm`,class:`h-7 gap-1.5`,onclick:E,get disabled(){return p(f)},children:(e,t)=>{var n=ze();Re(A(n),{class:`h-3.5 w-3.5`}),S(),l(e,n)},$$slots:{default:!0}})};c(X,e=>{o.mode===`edit`&&o.skillId&&e(ce)});var le=C(X,2),ue=e=>{{let t=y(()=>!p(L)||p(I));K(e,{variant:`ghost`,size:`sm`,class:`h-7 gap-1.5 px-2 text-destructive hover:text-destructive`,title:`Delete this skill`,get disabled(){return p(t)},onclick:()=>v(P,!0),children:(e,t)=>{var n=Be(),r=A(n);ae(r,{class:`h-3.5 w-3.5`}),S(2),l(e,n)},$$slots:{default:!0}})}};c(le,e=>{o.mode===`edit`&&e(ue)});var de=C(le,2);{let e=y(()=>!p(j));K(de,{size:`sm`,class:`h-7 gap-1.5`,onclick:M,get disabled(){return p(e)},children:(e,t)=>{var n=Ve(),r=A(n),i=e=>{q(e,{class:`h-3.5 w-3.5 animate-spin`})},s=e=>{Ie(e,{class:`h-3.5 w-3.5`})};c(r,e=>{p(b)?e(i):e(s,-1)});var u=C(r);T(()=>a(u,` ${o.mode===`new`?`Create`:`Save`}`)),l(e,n)},$$slots:{default:!0}})}t(Y),t(U);var Z=C(U,2),fe=e=>{var n=He(),r=D(n);q(r,{class:`h-4 w-4 animate-spin`}),S(),t(n),l(e,n)},pe=e=>{var n=Ue(),r=D(n),i=g(r,!0),s=C(r,2),u=e=>{K(e,{variant:`outline`,size:`sm`,onclick:E,children:(e,t)=>{S();var n=d(`Retry`);l(e,n)},$$slots:{default:!0}})};c(s,e=>{o.mode===`edit`&&o.skillId&&e(u)}),t(n),T(()=>a(i,p(h))),l(e,n)},me=e=>{var n=Ke(),r=D(n),i=e=>{var n=Ge(),r=C(D(n),2);se(r,{class:`h-8 font-mono text-xs`,placeholder:`my-skill`,get value(){return o.directoryName},set value(e){o.directoryName=e}});var i=C(r,2),a=e=>{var t=We();l(e,t)};c(i,e=>{p(k)||e(a)}),t(n),l(e,n)};c(r,e=>{o.mode===`new`&&e(i)});var a=C(r,2),s=C(D(a),2);se(s,{class:`h-8 text-sm`,placeholder:`Skill name`,get value(){return o.name},set value(e){o.name=e}}),t(a);var u=C(a,2),d=C(D(u),2);m(d),t(u);var f=C(u,2),h=C(D(f),2);m(h),t(f),t(n),_(d,()=>o.description,e=>o.description=e),_(h,()=>o.body,e=>o.body=e),l(e,n)};c(Z,e=>{p(f)?e(fe):p(h)?e(pe,1):e(me,-1)}),t(V);var he=C(V,2);{let e=y(()=>`Delete this skill from ${o.target.providerId}? Its SKILL.md directory is removed from disk.`);ie(he,{title:`Delete skill`,get description(){return p(e)},confirmLabel:`Delete`,get busy(){return p(I)},onConfirm:()=>void R(),get open(){return p(P)},set open(e){v(P,e,!0)}})}T(()=>a(oe,o.mode===`new`?`New SKILL.md`:`SKILL.md`)),l(e,z),u()}var Ye=n(`<!> Refresh`,1),Xe=n(`<div class="flex flex-1 items-center justify-center px-8 text-center text-xs text-muted-foreground">Save the skill first to see its change history.</div>`),Ze=n(`<div class="flex flex-1 items-center justify-center gap-2 text-xs text-muted-foreground"><!> Loading history…</div>`),Qe=n(`<div class="flex flex-1 flex-col items-center justify-center gap-2 px-8 text-center"><p class="text-xs text-destructive"> </p> <!></div>`),$e=n(`<div class="flex flex-1 items-center justify-center px-8 text-center text-xs text-muted-foreground">No revisions recorded yet.</div>`),et=n(`<span class="rounded-sm bg-emerald-500/10 px-1.5 py-0.5 text-[10px] font-medium text-emerald-700 dark:text-emerald-300">latest</span>`),tt=n(`<span class="text-[10px] text-muted-foreground/70">snapshot pruned</span>`),nt=n(`<div><p class="mb-1 text-[10px] font-medium uppercase tracking-wide text-muted-foreground">Diff vs previous</p> <pre class="overflow-x-auto rounded-md border border-border bg-muted/30 p-2 font-mono text-[10px] leading-4"> </pre></div>`),rt=n(`<div><p class="mb-1 text-[10px] font-medium uppercase tracking-wide text-muted-foreground">Full snapshot</p> <pre class="max-h-72 overflow-auto rounded-md border border-border bg-muted/30 p-2 font-mono text-[10px] leading-4"> </pre></div>`),it=n(`<p class="text-[10px] text-muted-foreground/70">Initial revision — no diff and no persisted snapshot.</p>`),at=n(`<div class="mt-2 space-y-2 pl-5"><!> <!> <!></div>`),ot=n(`<li class="px-4 py-3"><button type="button" class="flex w-full items-start gap-2 text-left"><!> <div class="min-w-0 flex-1"><div class="flex items-center gap-2"><span class="text-xs font-medium"> </span> <!> <!></div> <p class="mt-0.5 truncate font-mono text-[10px] text-muted-foreground"> </p></div></button> <!></li>`),st=n(`<ol class="min-h-0 flex-1 divide-y divide-border overflow-y-auto"></ol>`),ct=n(`<div class="flex h-full flex-col"><div class="flex shrink-0 items-center justify-between border-b border-border px-4 py-2"><span class="text-xs font-medium">Change history</span> <!></div> <!></div>`);function lt(n,i){r(i,!0);let s=Q().draft,f=W(ee),m=w(!1),h=w(null),_=w(j([])),b=j({});O(()=>{s.mode===`edit`&&s.skillId!==null&&x(s.skillId)});async function x(e){let t=f.issue();v(m,!0),v(h,null);try{let n=await U().creator.revisions({workspaceId:s.target.workspaceId,providerId:s.target.providerId,skillId:e});if(!t.isCurrent())return;v(_,[...n.revisions].sort((e,t)=>t.timestamp-e.timestamp),!0)}catch(e){if(!t.isCurrent())return;v(h,e instanceof Error?e.message:String(e),!0)}finally{t.isLatest()&&v(m,!1)}}function E(e){b[e]=!b[e]}function k(){s.mode===`edit`&&s.skillId&&x(s.skillId)}function M(e){try{return new Date(e).toLocaleString()}catch{return String(e)}}var N=ct(),P=D(N),F=C(D(P),2),I=e=>{K(e,{variant:`outline`,size:`sm`,class:`h-7 gap-1.5`,onclick:k,get disabled(){return p(m)},children:(e,t)=>{var n=Ye();Re(A(n),{class:`h-3.5 w-3.5`}),S(),l(e,n)},$$slots:{default:!0}})};c(F,e=>{s.mode===`edit`&&s.skillId&&e(I)}),t(P);var L=C(P,2),R=e=>{var t=Xe();l(e,t)},z=e=>{var n=Ze(),r=D(n);q(r,{class:`h-4 w-4 animate-spin`}),S(),t(n),l(e,n)},B=e=>{var n=Qe(),r=D(n),i=g(r,!0),o=C(r,2),u=e=>{K(e,{variant:`outline`,size:`sm`,onclick:k,children:(e,t)=>{S();var n=d(`Retry`);l(e,n)},$$slots:{default:!0}})};c(o,e=>{s.skillId&&e(u)}),t(n),T(()=>a(i,p(h))),l(e,n)},V=e=>{var t=$e();l(e,t)},H=n=>{var r=st();e(r,23,()=>p(_),e=>e.revision,(e,n,r)=>{var i=ot(),s=D(i),u=D(s);{let e=y(()=>b[p(n).revision]?`rotate-90`:``);ce(u,{get class(){return`mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform ${p(e)??``}`}})}var d=C(u,2),f=D(d),m=D(f),h=g(m,!0),_=C(m,2),v=e=>{var t=et();l(e,t)};c(_,e=>{p(r)===0&&e(v)});var x=C(_,2),S=e=>{var t=tt();l(e,t)};c(x,e=>{p(n).content===null&&e(S)}),t(f);var w=C(f,2),O=g(w);t(d),t(s);var k=C(s,2),A=e=>{var r=at(),i=D(r),o=e=>{var r=nt(),i=C(D(r),2),o=g(i,!0);t(r),T(()=>a(o,p(n).diff)),l(e,r)};c(i,e=>{p(n).diff&&e(o)});var s=C(i,2),u=e=>{var r=rt(),i=C(D(r),2),o=g(i,!0);t(r),T(()=>a(o,p(n).content)),l(e,r)};c(s,e=>{p(n).content!==null&&e(u)});var d=C(s,2),f=e=>{var t=it();l(e,t)};c(d,e=>{p(n).diff===null&&p(n).content===null&&e(f)}),t(r),l(e,r)};c(k,e=>{b[p(n).revision]&&e(A)}),t(i),T((e,t)=>{a(h,e),a(O,`${t??``}…`)},[()=>M(p(n).timestamp),()=>p(n).revision.slice(0,16)]),o(`click`,s,()=>E(p(n).revision)),l(e,i)}),t(r),l(n,r)};c(L,e=>{s.mode===`new`?e(R):p(m)?e(z,1):p(h)?e(B,2):p(_).length===0?e(V,3):e(H,-1)}),t(N),l(n,N),u()}f([`click`]);var ut=n(`<p class="text-[11px] text-muted-foreground/70">Only name and description — no additional metadata.</p>`),dt=n(`<div><dt class="bg-muted/40 px-2 py-1 text-[11px] font-medium text-muted-foreground"> </dt> <dd class="break-words px-2 py-1 text-[11px]"> </dd></div>`),ft=n(`<dl class="overflow-x-auto rounded-md border border-border"></dl>`),pt=n(`<p class="text-xs text-muted-foreground/70">Nothing to preview yet.</p>`),mt=n(`<div class="prose prose-sm max-w-none overflow-x-auto"></div>`),ht=n(`<div class="flex h-full flex-col overflow-y-auto p-4"><section class="mb-4"><h1 class="text-base font-semibold"> </h1> <p class="mt-0.5 text-xs leading-5 text-muted-foreground"> </p></section> <section class="mb-4"><h2 class="mb-2 text-[11px] font-medium text-muted-foreground">Frontmatter</h2> <!></section> <section class="min-h-0 flex-1"><h2 class="mb-2 text-[11px] font-medium text-muted-foreground">Body</h2> <!></section></div>`);function gt(n,i){r(i,!0);let o=Q().draft,d=y(()=>Ce(o)),f=y(()=>de(o.body)),m=y(()=>Object.entries(p(d)).filter(([e])=>e!==`name`&&e!==`description`));var h=ht(),_=D(h),v=D(_),b=g(v,!0),S=C(v,2),w=g(S,!0);t(_);var E=C(_,2),O=C(D(E),2),k=e=>{var t=ut();l(e,t)},A=n=>{var r=ft();e(r,23,()=>p(m),([e,t])=>e,(e,n,r)=>{var i=y(()=>s(p(n),2));let o=()=>p(i)[0],c=()=>p(i)[1];var u=dt(),d=D(u),f=g(d,!0),m=C(d,2),h=g(m,!0);t(u),T(e=>{N(u,1,`grid grid-cols-[120px_minmax(0,1fr)] ${p(r)>0?`border-t border-border`:``}`),a(f,o()),a(h,e)},[()=>c()===null?`null`:String(c())]),l(e,u)}),t(r),l(n,r)};c(O,e=>{p(m).length===0?e(k):e(A,-1)}),t(E);var j=C(E,2),M=C(D(j),2),P=e=>{var t=pt();l(e,t)},F=y(()=>o.body.trim().length===0),I=e=>{var n=mt();x(n,()=>p(f),!0),t(n),l(e,n)};c(M,e=>{p(F)?e(P):e(I,-1)}),t(j),t(h),T(()=>{a(b,o.name||`Untitled skill`),a(w,o.description||`No description yet.`)}),l(n,h),u()}var _t=n(`<!> Re-validate`,1),vt=n(`<div class="flex flex-1 items-center justify-center px-8 text-center text-xs text-muted-foreground">Save the skill first to validate it.</div>`),yt=n(`<div class="flex flex-1 items-center justify-center gap-2 text-xs text-muted-foreground"><!> Validating…</div>`),bt=n(`<div class="flex flex-1 flex-col items-center justify-center gap-2 px-8 text-center"><p class="text-xs text-destructive"> </p> <!></div>`),xt=n(`<div class="flex items-center gap-2 text-xs text-emerald-700 dark:text-emerald-300"><!> Skill passes all checks.</div>`),St=n(`<li class="flex gap-2 rounded-md bg-destructive/10 px-2 py-1.5 text-xs text-destructive"><!> <span class="break-words"> </span></li>`),Ct=n(`<section><h3 class="mb-1.5 text-[11px] font-medium uppercase tracking-wide text-destructive"> </h3> <ul class="space-y-1"></ul></section>`),wt=n(`<li class="flex gap-2 rounded-md bg-amber-500/10 px-2 py-1.5 text-xs text-amber-700 dark:text-amber-300"><!> <span class="break-words"> </span></li>`),Tt=n(`<section><h3 class="mb-1.5 text-[11px] font-medium uppercase tracking-wide text-amber-700 dark:text-amber-300"> </h3> <ul class="space-y-1"></ul></section>`),Et=n(`<!> <!>`,1),Dt=n(`<div class="min-h-0 flex-1 space-y-3 overflow-y-auto p-4"><!></div>`),Ot=n(`<div class="flex h-full flex-col"><div class="flex shrink-0 items-center justify-between border-b border-border px-4 py-2"><span class="text-xs font-medium">Validation</span> <!></div> <!></div>`);function kt(n,i){r(i,!0);let o=Q().draft,s=W(ee),f=w(!1),m=w(null),h=w(null);O(()=>{o.mode===`edit`&&o.skillId!==null&&_(o.skillId)});async function _(e){let t=s.issue();v(f,!0),v(m,null);try{let n=await U().skills.validate({workspaceId:o.target.workspaceId,providerId:o.target.providerId,skillId:e});if(!t.isCurrent())return;v(h,n,!0)}catch(e){if(!t.isCurrent())return;v(m,e instanceof Error?e.message:String(e),!0),v(h,null)}finally{t.isLatest()&&v(f,!1)}}function y(){o.mode===`edit`&&o.skillId&&_(o.skillId)}var x=Ot(),E=D(x),k=C(D(E),2),j=e=>{K(e,{variant:`outline`,size:`sm`,class:`h-7 gap-1.5`,onclick:y,get disabled(){return p(f)},children:(e,t)=>{var n=_t(),r=A(n),i=e=>{q(e,{class:`h-3.5 w-3.5 animate-spin`})},a=e=>{Z(e,{class:`h-3.5 w-3.5`})};c(r,e=>{p(f)?e(i):e(a,-1)}),S(),l(e,n)},$$slots:{default:!0}})};c(k,e=>{o.mode===`edit`&&o.skillId&&e(j)}),t(E);var M=C(E,2),N=e=>{var t=vt();l(e,t)},P=e=>{var n=yt(),r=D(n);q(r,{class:`h-4 w-4 animate-spin`}),S(),t(n),l(e,n)},F=e=>{var n=bt(),r=D(n),i=g(r,!0),s=C(r,2),u=e=>{K(e,{variant:`outline`,size:`sm`,onclick:y,children:(e,t)=>{S();var n=d(`Retry`);l(e,n)},$$slots:{default:!0}})};c(s,e=>{o.skillId&&e(u)}),t(n),T(()=>a(i,p(m))),l(e,n)},I=n=>{var r=Dt(),i=D(r),o=e=>{var n=xt(),r=D(n);Y(r,{class:`h-4 w-4`}),S(),t(n),l(e,n)},s=n=>{var r=Et(),i=A(r),o=n=>{var r=Ct(),i=D(r),o=g(i),s=C(i,2);e(s,21,()=>p(h).errors,b,(e,n)=>{var r=St(),i=D(r);Z(i,{class:`mt-0.5 h-3.5 w-3.5 shrink-0`});var o=C(i,2),s=g(o,!0);t(r),T(()=>a(s,p(n))),l(e,r)}),t(s),t(r),T(()=>a(o,`Errors (${p(h).errors.length??``})`)),l(n,r)};c(i,e=>{p(h).errors.length>0&&e(o)});var s=C(i,2),u=n=>{var r=Tt(),i=D(r),o=g(i),s=C(i,2);e(s,21,()=>p(h).warnings,b,(e,n)=>{var r=wt(),i=D(r);Z(i,{class:`mt-0.5 h-3.5 w-3.5 shrink-0`});var o=C(i,2),s=g(o,!0);t(r),T(()=>a(s,p(n))),l(e,r)}),t(s),t(r),T(()=>a(o,`Warnings (${p(h).warnings.length??``})`)),l(n,r)};c(s,e=>{p(h).warnings.length>0&&e(u)}),l(n,r)};c(i,e=>{p(h).success&&p(h).errors.length===0&&p(h).warnings.length===0?e(o):e(s,-1)}),t(r),l(n,r)};c(M,e=>{o.mode===`new`?e(N):p(f)&&p(h)===null?e(P,1):p(m)?e(F,2):p(h)&&e(I,3)}),t(x),l(n,x),u()}var At=n(`<div class="flex flex-1 items-center justify-center p-4 text-center text-xs text-muted-foreground">Invalid workspace target.</div>`),jt=n(`<div class="flex h-full items-center justify-center p-6 text-center text-xs text-muted-foreground"><div class="space-y-1"><p class="font-medium text-foreground">Test run</p> <p>Exercising this skill inside the DSH-hosted agent session lands here.</p> <p class="text-muted-foreground/60">(Not yet implemented.)</p></div></div>`),Mt=n(`<!> <div class="min-h-0 flex-1 overflow-hidden"><!></div>`,1),Nt=n(`<div class="flex h-full flex-col overflow-hidden"><header class="flex shrink-0 items-center gap-2 border-b border-border px-4 py-2"><span class="text-sm font-medium"> </span> <span class="text-xs text-muted-foreground"> </span></header> <div class="flex min-h-0 flex-1 flex-col"><!></div></div>`);function Pt(e,n){r(n,!0);let i=z(),o=y(()=>i?.()),s=y(()=>p(o)?.mode),d=y(()=>p(o)?.wsId),f=y(()=>p(o)?.providerId),m=y(()=>p(o)?.skillId),h=R(),_=y(()=>h?.()??{}),v=y(()=>p(_).subview??`file`),b=y(()=>!p(d)||!p(f)?null:{workspaceId:p(d),providerId:p(f)}),x=y(()=>{if(!p(b))return xe();if(p(s)===`edit`&&p(m))return Se(p(b),p(m));let e=p(_).template?ue.find(e=>e.id===p(_).template):void 0,t=ye(p(b),e?e.name:``);return e&&(t.name=e.name,t.description=e.description,t.body=e.body),t}),S=Te(xe()),w=y(()=>$(p(b),p(s)===`edit`?`edit`:`new`,p(m)??null));O(()=>{let e=p(w),t=p(x),n=e===null?null:Ae(e),r=n??t;S.draft.mode=r.mode,S.draft.target=r.target,S.draft.skillId=r.skillId,S.draft.name=r.name,S.draft.description=r.description,S.draft.body=r.body,S.draft.revision=r.revision,S.draft.extraFrontmatter=r.extraFrontmatter,S.draft.directoryName=r.directoryName,n!==null&&e!==null&&Me(e)}),O(()=>()=>{let e=S.draft;if(e.target.workspaceId===`~`)return;let t=$(e.target,e.mode,e.skillId);t!==null&&ke(t,e)});var E=Nt(),k=D(E),j=D(k),M=g(j,!0),N=C(j,2),P=g(N);t(k);var F=C(k,2),I=D(F),L=e=>{var t=At();l(e,t)},B=e=>{var n=Mt(),r=A(n);ve(r,{});var i=C(r,2),a=D(i),o=e=>{Je(e,{})},s=e=>{lt(e,{})},u=e=>{gt(e,{})},d=e=>{kt(e,{})},f=e=>{var t=jt();l(e,t)},m=e=>{Je(e,{})};c(a,e=>{p(v)===`file`?e(o):p(v)===`log`?e(s,1):p(v)===`preview`?e(u,2):p(v)===`validate`?e(d,3):p(v)===`test`?e(f,4):e(m,-1)}),t(i),l(e,n)};c(I,e=>{p(b)?e(B,-1):e(L)}),t(F),t(E),T(e=>{a(M,e),a(P,`${p(d)??``} / ${p(f)??``}`)},[()=>p(s)===`new`?`New skill`:p(m)?`Edit: ${p(m).slice(0,12)}…`:`Editor`]),l(e,E),u()}export{Pt as default};
3
+ Describe when this skill should be invoked."></textarea></label></div>`),qe=n(`<div class="flex h-full flex-col"><div class="flex shrink-0 items-center justify-between border-b border-border px-4 py-2"><span class="text-xs font-medium"> </span> <div class="flex items-center gap-1.5"><!> <!> <!></div></div> <!></div> <!>`,1);function Je(e,n){r(n,!0);let i=Q(),o=i.draft,s=W(ee),f=w(!1),h=w(null),b=w(!1);O(()=>{if(o.mode!==`edit`||o.skillId===null)return;let e=$(o.target,`edit`,o.skillId);e!==null&&Ne(e)||x(o.target,o.skillId)});async function x(e,t){let n=s.issue();v(f,!0),v(h,null);try{let r=await re(e,t);if(!n.isCurrent())return;i.hydrateFromDocument(r);let a=$(e,`edit`,t);a!==null&&Me(a)}catch(e){if(!n.isCurrent())return;v(h,e instanceof Error?e.message:String(e),!0)}finally{n.isLatest()&&v(f,!1)}}function E(){if(o.mode===`edit`&&o.skillId){let e=$(o.target,`edit`,o.skillId);e!==null&&Pe(e),x(o.target,o.skillId)}}let k=y(()=>o.mode!==`new`||H.safeParse(o.directoryName).success),j=y(()=>!p(b)&&o.name.trim().length>0&&o.description.trim().length>0&&(o.mode===`edit`||p(k))&&o.revision!==null==(o.mode===`edit`));async function M(){if(o.mode===`edit`){if(o.skillId===null||o.revision===null)return;v(b,!0);try{let e=await te({mode:`update`,workspaceId:o.target.workspaceId,providerId:o.target.providerId,skillId:o.skillId,expectedRevision:o.revision,frontmatter:Ce(o),body:o.body});i.advanceRevision(e.document.revision),K(`Saved.`)}catch(e){N(e)}finally{v(b,!1)}return}let e=H.safeParse(o.directoryName);if(!e.success){K(`Directory name must be lowercase letters, numbers, and hyphens.`);return}v(b,!0);try{let t=await te({mode:`create`,workspaceId:o.target.workspaceId,providerId:o.target.providerId,directoryName:e.data,frontmatter:Ce(o),body:o.body});i.hydrateFromDocument(t.document);let n=$(o.target,`edit`,t.document.skillId);n!==null&&Me(n),K(`Skill created.`)}catch(e){N(e)}finally{v(b,!1)}}function N(e){if(e instanceof B&&e.code===`CONFLICT`){K(`This skill changed elsewhere. Reload to view the latest.`,{label:`Reload`,run:E});return}K(e instanceof Error?e.message:String(e))}let P=w(!1),I=w(!1),L=y(()=>o.mode===`edit`&&o.skillId!==null&&o.revision!==null);async function R(){if(!p(L)||p(I))return;let e=o.skillId,t=o.revision;if(e!==null&&t!==null){v(I,!0);try{await ne({target:o.target,skillId:e,expectedRevision:t}),v(P,!1),K(`Skill deleted.`);let n=$(o.target,`edit`,e);n!==null&&(je(n),Pe(n)),await F(`/creator`)}catch(e){e instanceof B&&e.code===`CONFLICT`?(v(P,!1),K(`This skill changed elsewhere. Reload before deleting.`,{label:`Reload`,run:E})):K(e instanceof Error?e.message:String(e))}finally{v(I,!1)}}}var z=qe(),V=A(z),U=D(V),G=D(U),se=g(G,!0),Y=C(G,2),X=D(Y),ce=e=>{q(e,{variant:`outline`,size:`sm`,class:`h-7 gap-1.5`,onclick:E,get disabled(){return p(f)},children:(e,t)=>{var n=ze();Re(A(n),{class:`h-3.5 w-3.5`}),S(),l(e,n)},$$slots:{default:!0}})};c(X,e=>{o.mode===`edit`&&o.skillId&&e(ce)});var le=C(X,2),ue=e=>{{let t=y(()=>!p(L)||p(I));q(e,{variant:`ghost`,size:`sm`,class:`h-7 gap-1.5 px-2 text-destructive hover:text-destructive`,title:`Delete this skill`,get disabled(){return p(t)},onclick:()=>v(P,!0),children:(e,t)=>{var n=Be(),r=A(n);ae(r,{class:`h-3.5 w-3.5`}),S(2),l(e,n)},$$slots:{default:!0}})}};c(le,e=>{o.mode===`edit`&&e(ue)});var de=C(le,2);{let e=y(()=>!p(j));q(de,{size:`sm`,class:`h-7 gap-1.5`,onclick:M,get disabled(){return p(e)},children:(e,t)=>{var n=Ve(),r=A(n),i=e=>{J(e,{class:`h-3.5 w-3.5 animate-spin`})},s=e=>{Ie(e,{class:`h-3.5 w-3.5`})};c(r,e=>{p(b)?e(i):e(s,-1)});var u=C(r);T(()=>a(u,` ${o.mode===`new`?`Create`:`Save`}`)),l(e,n)},$$slots:{default:!0}})}t(Y),t(U);var Z=C(U,2),fe=e=>{var n=He(),r=D(n);J(r,{class:`h-4 w-4 animate-spin`}),S(),t(n),l(e,n)},pe=e=>{var n=Ue(),r=D(n),i=g(r,!0),s=C(r,2),u=e=>{q(e,{variant:`outline`,size:`sm`,onclick:E,children:(e,t)=>{S();var n=d(`Retry`);l(e,n)},$$slots:{default:!0}})};c(s,e=>{o.mode===`edit`&&o.skillId&&e(u)}),t(n),T(()=>a(i,p(h))),l(e,n)},me=e=>{var n=Ke(),r=D(n),i=e=>{var n=Ge(),r=C(D(n),2);oe(r,{class:`h-8 font-mono text-xs`,placeholder:`my-skill`,get value(){return o.directoryName},set value(e){o.directoryName=e}});var i=C(r,2),a=e=>{var t=We();l(e,t)};c(i,e=>{p(k)||e(a)}),t(n),l(e,n)};c(r,e=>{o.mode===`new`&&e(i)});var a=C(r,2),s=C(D(a),2);oe(s,{class:`h-8 text-sm`,placeholder:`Skill name`,get value(){return o.name},set value(e){o.name=e}}),t(a);var u=C(a,2),d=C(D(u),2);m(d),t(u);var f=C(u,2),h=C(D(f),2);m(h),t(f),t(n),_(d,()=>o.description,e=>o.description=e),_(h,()=>o.body,e=>o.body=e),l(e,n)};c(Z,e=>{p(f)?e(fe):p(h)?e(pe,1):e(me,-1)}),t(V);var he=C(V,2);{let e=y(()=>`Delete this skill from ${o.target.providerId}? Its SKILL.md directory is removed from disk.`);ie(he,{title:`Delete skill`,get description(){return p(e)},confirmLabel:`Delete`,get busy(){return p(I)},onConfirm:()=>void R(),get open(){return p(P)},set open(e){v(P,e,!0)}})}T(()=>a(se,o.mode===`new`?`New SKILL.md`:`SKILL.md`)),l(e,z),u()}var Ye=n(`<!> Refresh`,1),Xe=n(`<div class="flex flex-1 items-center justify-center px-8 text-center text-xs text-muted-foreground">Save the skill first to see its change history.</div>`),Ze=n(`<div class="flex flex-1 items-center justify-center gap-2 text-xs text-muted-foreground"><!> Loading history…</div>`),Qe=n(`<div class="flex flex-1 flex-col items-center justify-center gap-2 px-8 text-center"><p class="text-xs text-destructive"> </p> <!></div>`),$e=n(`<div class="flex flex-1 items-center justify-center px-8 text-center text-xs text-muted-foreground">No revisions recorded yet.</div>`),et=n(`<span class="rounded-sm bg-emerald-500/10 px-1.5 py-0.5 text-[10px] font-medium text-emerald-700 dark:text-emerald-300">latest</span>`),tt=n(`<span class="text-[10px] text-muted-foreground/70">snapshot pruned</span>`),nt=n(`<div><p class="mb-1 text-[10px] font-medium uppercase tracking-wide text-muted-foreground">Diff vs previous</p> <pre class="overflow-x-auto rounded-md border border-border bg-muted/30 p-2 font-mono text-[10px] leading-4"> </pre></div>`),rt=n(`<div><p class="mb-1 text-[10px] font-medium uppercase tracking-wide text-muted-foreground">Full snapshot</p> <pre class="max-h-72 overflow-auto rounded-md border border-border bg-muted/30 p-2 font-mono text-[10px] leading-4"> </pre></div>`),it=n(`<p class="text-[10px] text-muted-foreground/70">Initial revision — no diff and no persisted snapshot.</p>`),at=n(`<div class="mt-2 space-y-2 pl-5"><!> <!> <!></div>`),ot=n(`<li class="px-4 py-3"><button type="button" class="flex w-full items-start gap-2 text-left"><!> <div class="min-w-0 flex-1"><div class="flex items-center gap-2"><span class="text-xs font-medium"> </span> <!> <!></div> <p class="mt-0.5 truncate font-mono text-[10px] text-muted-foreground"> </p></div></button> <!></li>`),st=n(`<ol class="min-h-0 flex-1 divide-y divide-border overflow-y-auto"></ol>`),ct=n(`<div class="flex h-full flex-col"><div class="flex shrink-0 items-center justify-between border-b border-border px-4 py-2"><span class="text-xs font-medium">Change history</span> <!></div> <!></div>`);function lt(n,i){r(i,!0);let s=Q().draft,f=W(ee),m=w(!1),h=w(null),_=w(j([])),b=j({});O(()=>{s.mode===`edit`&&s.skillId!==null&&x(s.skillId)});async function x(e){let t=f.issue();v(m,!0),v(h,null);try{let n=await U().creator.revisions({workspaceId:s.target.workspaceId,providerId:s.target.providerId,skillId:e});if(!t.isCurrent())return;v(_,[...n.revisions].sort((e,t)=>t.timestamp-e.timestamp),!0)}catch(e){if(!t.isCurrent())return;v(h,e instanceof Error?e.message:String(e),!0)}finally{t.isLatest()&&v(m,!1)}}function E(e){b[e]=!b[e]}function k(){s.mode===`edit`&&s.skillId&&x(s.skillId)}function M(e){try{return new Date(e).toLocaleString()}catch{return String(e)}}var N=ct(),P=D(N),F=C(D(P),2),I=e=>{q(e,{variant:`outline`,size:`sm`,class:`h-7 gap-1.5`,onclick:k,get disabled(){return p(m)},children:(e,t)=>{var n=Ye();Re(A(n),{class:`h-3.5 w-3.5`}),S(),l(e,n)},$$slots:{default:!0}})};c(F,e=>{s.mode===`edit`&&s.skillId&&e(I)}),t(P);var L=C(P,2),R=e=>{var t=Xe();l(e,t)},z=e=>{var n=Ze(),r=D(n);J(r,{class:`h-4 w-4 animate-spin`}),S(),t(n),l(e,n)},B=e=>{var n=Qe(),r=D(n),i=g(r,!0),o=C(r,2),u=e=>{q(e,{variant:`outline`,size:`sm`,onclick:k,children:(e,t)=>{S();var n=d(`Retry`);l(e,n)},$$slots:{default:!0}})};c(o,e=>{s.skillId&&e(u)}),t(n),T(()=>a(i,p(h))),l(e,n)},V=e=>{var t=$e();l(e,t)},H=n=>{var r=st();e(r,23,()=>p(_),e=>e.revision,(e,n,r)=>{var i=ot(),s=D(i),u=D(s);{let e=y(()=>b[p(n).revision]?`rotate-90`:``);ce(u,{get class(){return`mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform ${p(e)??``}`}})}var d=C(u,2),f=D(d),m=D(f),h=g(m,!0),_=C(m,2),v=e=>{var t=et();l(e,t)};c(_,e=>{p(r)===0&&e(v)});var x=C(_,2),S=e=>{var t=tt();l(e,t)};c(x,e=>{p(n).content===null&&e(S)}),t(f);var w=C(f,2),O=g(w);t(d),t(s);var k=C(s,2),A=e=>{var r=at(),i=D(r),o=e=>{var r=nt(),i=C(D(r),2),o=g(i,!0);t(r),T(()=>a(o,p(n).diff)),l(e,r)};c(i,e=>{p(n).diff&&e(o)});var s=C(i,2),u=e=>{var r=rt(),i=C(D(r),2),o=g(i,!0);t(r),T(()=>a(o,p(n).content)),l(e,r)};c(s,e=>{p(n).content!==null&&e(u)});var d=C(s,2),f=e=>{var t=it();l(e,t)};c(d,e=>{p(n).diff===null&&p(n).content===null&&e(f)}),t(r),l(e,r)};c(k,e=>{b[p(n).revision]&&e(A)}),t(i),T((e,t)=>{a(h,e),a(O,`${t??``}…`)},[()=>M(p(n).timestamp),()=>p(n).revision.slice(0,16)]),o(`click`,s,()=>E(p(n).revision)),l(e,i)}),t(r),l(n,r)};c(L,e=>{s.mode===`new`?e(R):p(m)?e(z,1):p(h)?e(B,2):p(_).length===0?e(V,3):e(H,-1)}),t(N),l(n,N),u()}f([`click`]);var ut=n(`<p class="text-[11px] text-muted-foreground/70">Only name and description — no additional metadata.</p>`),dt=n(`<div><dt class="bg-muted/40 px-2 py-1 text-[11px] font-medium text-muted-foreground"> </dt> <dd class="break-words px-2 py-1 text-[11px]"> </dd></div>`),ft=n(`<dl class="overflow-x-auto rounded-md border border-border"></dl>`),pt=n(`<p class="text-xs text-muted-foreground/70">Nothing to preview yet.</p>`),mt=n(`<div class="prose prose-sm max-w-none overflow-x-auto"></div>`),ht=n(`<div class="flex h-full flex-col overflow-y-auto p-4"><section class="mb-4"><h1 class="text-base font-semibold"> </h1> <p class="mt-0.5 text-xs leading-5 text-muted-foreground"> </p></section> <section class="mb-4"><h2 class="mb-2 text-[11px] font-medium text-muted-foreground">Frontmatter</h2> <!></section> <section class="min-h-0 flex-1"><h2 class="mb-2 text-[11px] font-medium text-muted-foreground">Body</h2> <!></section></div>`);function gt(n,i){r(i,!0);let o=Q().draft,d=y(()=>Ce(o)),f=y(()=>de(o.body)),m=y(()=>Object.entries(p(d)).filter(([e])=>e!==`name`&&e!==`description`));var h=ht(),_=D(h),v=D(_),b=g(v,!0),S=C(v,2),w=g(S,!0);t(_);var E=C(_,2),O=C(D(E),2),k=e=>{var t=ut();l(e,t)},A=n=>{var r=ft();e(r,23,()=>p(m),([e,t])=>e,(e,n,r)=>{var i=y(()=>s(p(n),2));let o=()=>p(i)[0],c=()=>p(i)[1];var u=dt(),d=D(u),f=g(d,!0),m=C(d,2),h=g(m,!0);t(u),T(e=>{N(u,1,`grid grid-cols-[120px_minmax(0,1fr)] ${p(r)>0?`border-t border-border`:``}`),a(f,o()),a(h,e)},[()=>c()===null?`null`:String(c())]),l(e,u)}),t(r),l(n,r)};c(O,e=>{p(m).length===0?e(k):e(A,-1)}),t(E);var j=C(E,2),M=C(D(j),2),P=e=>{var t=pt();l(e,t)},F=y(()=>o.body.trim().length===0),I=e=>{var n=mt();x(n,()=>p(f),!0),t(n),l(e,n)};c(M,e=>{p(F)?e(P):e(I,-1)}),t(j),t(h),T(()=>{a(b,o.name||`Untitled skill`),a(w,o.description||`No description yet.`)}),l(n,h),u()}var _t=n(`<!> Re-validate`,1),vt=n(`<div class="flex flex-1 items-center justify-center px-8 text-center text-xs text-muted-foreground">Save the skill first to validate it.</div>`),yt=n(`<div class="flex flex-1 items-center justify-center gap-2 text-xs text-muted-foreground"><!> Validating…</div>`),bt=n(`<div class="flex flex-1 flex-col items-center justify-center gap-2 px-8 text-center"><p class="text-xs text-destructive"> </p> <!></div>`),xt=n(`<div class="flex items-center gap-2 text-xs text-emerald-700 dark:text-emerald-300"><!> Skill passes all checks.</div>`),St=n(`<li class="flex gap-2 rounded-md bg-destructive/10 px-2 py-1.5 text-xs text-destructive"><!> <span class="break-words"> </span></li>`),Ct=n(`<section><h3 class="mb-1.5 text-[11px] font-medium uppercase tracking-wide text-destructive"> </h3> <ul class="space-y-1"></ul></section>`),wt=n(`<li class="flex gap-2 rounded-md bg-amber-500/10 px-2 py-1.5 text-xs text-amber-700 dark:text-amber-300"><!> <span class="break-words"> </span></li>`),Tt=n(`<section><h3 class="mb-1.5 text-[11px] font-medium uppercase tracking-wide text-amber-700 dark:text-amber-300"> </h3> <ul class="space-y-1"></ul></section>`),Et=n(`<!> <!>`,1),Dt=n(`<div class="min-h-0 flex-1 space-y-3 overflow-y-auto p-4"><!></div>`),Ot=n(`<div class="flex h-full flex-col"><div class="flex shrink-0 items-center justify-between border-b border-border px-4 py-2"><span class="text-xs font-medium">Validation</span> <!></div> <!></div>`);function kt(n,i){r(i,!0);let o=Q().draft,s=W(ee),f=w(!1),m=w(null),h=w(null);O(()=>{o.mode===`edit`&&o.skillId!==null&&_(o.skillId)});async function _(e){let t=s.issue();v(f,!0),v(m,null);try{let n=await U().skills.validate({workspaceId:o.target.workspaceId,providerId:o.target.providerId,skillId:e});if(!t.isCurrent())return;v(h,n,!0)}catch(e){if(!t.isCurrent())return;v(m,e instanceof Error?e.message:String(e),!0),v(h,null)}finally{t.isLatest()&&v(f,!1)}}function y(){o.mode===`edit`&&o.skillId&&_(o.skillId)}var x=Ot(),E=D(x),k=C(D(E),2),j=e=>{q(e,{variant:`outline`,size:`sm`,class:`h-7 gap-1.5`,onclick:y,get disabled(){return p(f)},children:(e,t)=>{var n=_t(),r=A(n),i=e=>{J(e,{class:`h-3.5 w-3.5 animate-spin`})},a=e=>{Z(e,{class:`h-3.5 w-3.5`})};c(r,e=>{p(f)?e(i):e(a,-1)}),S(),l(e,n)},$$slots:{default:!0}})};c(k,e=>{o.mode===`edit`&&o.skillId&&e(j)}),t(E);var M=C(E,2),N=e=>{var t=vt();l(e,t)},P=e=>{var n=yt(),r=D(n);J(r,{class:`h-4 w-4 animate-spin`}),S(),t(n),l(e,n)},F=e=>{var n=bt(),r=D(n),i=g(r,!0),s=C(r,2),u=e=>{q(e,{variant:`outline`,size:`sm`,onclick:y,children:(e,t)=>{S();var n=d(`Retry`);l(e,n)},$$slots:{default:!0}})};c(s,e=>{o.skillId&&e(u)}),t(n),T(()=>a(i,p(m))),l(e,n)},I=n=>{var r=Dt(),i=D(r),o=e=>{var n=xt(),r=D(n);Y(r,{class:`h-4 w-4`}),S(),t(n),l(e,n)},s=n=>{var r=Et(),i=A(r),o=n=>{var r=Ct(),i=D(r),o=g(i),s=C(i,2);e(s,21,()=>p(h).errors,b,(e,n)=>{var r=St(),i=D(r);Z(i,{class:`mt-0.5 h-3.5 w-3.5 shrink-0`});var o=C(i,2),s=g(o,!0);t(r),T(()=>a(s,p(n))),l(e,r)}),t(s),t(r),T(()=>a(o,`Errors (${p(h).errors.length??``})`)),l(n,r)};c(i,e=>{p(h).errors.length>0&&e(o)});var s=C(i,2),u=n=>{var r=Tt(),i=D(r),o=g(i),s=C(i,2);e(s,21,()=>p(h).warnings,b,(e,n)=>{var r=wt(),i=D(r);Z(i,{class:`mt-0.5 h-3.5 w-3.5 shrink-0`});var o=C(i,2),s=g(o,!0);t(r),T(()=>a(s,p(n))),l(e,r)}),t(s),t(r),T(()=>a(o,`Warnings (${p(h).warnings.length??``})`)),l(n,r)};c(s,e=>{p(h).warnings.length>0&&e(u)}),l(n,r)};c(i,e=>{p(h).success&&p(h).errors.length===0&&p(h).warnings.length===0?e(o):e(s,-1)}),t(r),l(n,r)};c(M,e=>{o.mode===`new`?e(N):p(f)&&p(h)===null?e(P,1):p(m)?e(F,2):p(h)&&e(I,3)}),t(x),l(n,x),u()}var At=n(`<div class="flex flex-1 items-center justify-center p-4 text-center text-xs text-muted-foreground">Invalid workspace target.</div>`),jt=n(`<div class="flex h-full items-center justify-center p-6 text-center text-xs text-muted-foreground"><div class="space-y-1"><p class="font-medium text-foreground">Test run</p> <p>Exercising this skill inside the DSH-hosted agent session lands here.</p> <p class="text-muted-foreground/60">(Not yet implemented.)</p></div></div>`),Mt=n(`<!> <div class="min-h-0 flex-1 overflow-hidden"><!></div>`,1),Nt=n(`<div class="flex h-full flex-col overflow-hidden"><header class="flex shrink-0 items-center gap-2 border-b border-border px-4 py-2"><span class="text-sm font-medium"> </span> <span class="text-xs text-muted-foreground"> </span></header> <div class="flex min-h-0 flex-1 flex-col"><!></div></div>`);function Pt(e,n){r(n,!0);let i=z(),o=y(()=>i?.()),s=y(()=>p(o)?.mode),d=y(()=>p(o)?.wsId),f=y(()=>p(o)?.providerId),m=y(()=>p(o)?.skillId),h=R(),_=y(()=>h?.()??{}),v=y(()=>p(_).subview??`file`),b=y(()=>!p(d)||!p(f)?null:{workspaceId:p(d),providerId:p(f)}),x=y(()=>{if(!p(b))return xe();if(p(s)===`edit`&&p(m))return Se(p(b),p(m));let e=p(_).template?ue.find(e=>e.id===p(_).template):void 0,t=ye(p(b),e?e.name:``);return e&&(t.name=e.name,t.description=e.description,t.body=e.body),t}),S=Te(xe()),w=y(()=>$(p(b),p(s)===`edit`?`edit`:`new`,p(m)??null));O(()=>{let e=p(w),t=p(x),n=e===null?null:Ae(e),r=n??t;S.draft.mode=r.mode,S.draft.target=r.target,S.draft.skillId=r.skillId,S.draft.name=r.name,S.draft.description=r.description,S.draft.body=r.body,S.draft.revision=r.revision,S.draft.extraFrontmatter=r.extraFrontmatter,S.draft.directoryName=r.directoryName,n!==null&&e!==null&&Me(e)}),O(()=>()=>{let e=S.draft;if(e.target.workspaceId===`~`)return;let t=$(e.target,e.mode,e.skillId);t!==null&&ke(t,e)});var E=Nt(),k=D(E),j=D(k),M=g(j,!0),N=C(j,2),P=g(N);t(k);var F=C(k,2),I=D(F),L=e=>{var t=At();l(e,t)},B=e=>{var n=Mt(),r=A(n);ve(r,{});var i=C(r,2),a=D(i),o=e=>{Je(e,{})},s=e=>{lt(e,{})},u=e=>{gt(e,{})},d=e=>{kt(e,{})},f=e=>{var t=jt();l(e,t)},m=e=>{Je(e,{})};c(a,e=>{p(v)===`file`?e(o):p(v)===`log`?e(s,1):p(v)===`preview`?e(u,2):p(v)===`validate`?e(d,3):p(v)===`test`?e(f,4):e(m,-1)}),t(i),l(e,n)};c(I,e=>{p(b)?e(B,-1):e(L)}),t(F),t(E),T(e=>{a(M,e),a(P,`${p(d)??``} / ${p(f)??``}`)},[()=>p(s)===`new`?`New skill`:p(m)?`Edit: ${p(m).slice(0,12)}…`:`Editor`]),l(e,E),u()}export{Pt as default};
@@ -0,0 +1 @@
1
+ import{A as e,At as t,B as n,Ct as r,F as i,G as a,N as o,R as s,St as c,U as l,W as u,X as d,ct as f,ft as p,gt as m,kt as h,l as g,lt as _,m as v,mt as y,nt as b,ot as x,rt as S,st as C,ut as w,z as T}from"./CmCJ0SKP.js";import{t as E}from"./8hp3I3ac.js";import"./xihTtKlq.js";import"./DXKynIUR.js";import{r as D}from"./oxP0dM6z.js";import{x as O}from"./CPbfZBJo.js";import{t as k}from"./BT2vrlul.js";import"./BOPkZ98B.js";import{a as ee}from"./D3qCeXbe.js";import{n as A}from"./1aUphu7Y.js";import{n as j,t as M}from"./DnPeA-9c.js";import{t as te}from"./BEPs9Z9s.js";import{t as ne}from"./DOjT7y5f.js";import{t as re}from"./E8LHILEh.js";import{t as ie}from"./BIfnT_mK.js";import{t as N}from"./HopcQwhZ.js";import{t as ae}from"./Bs27XW8_.js";import{a as oe,c as P,i as se,n as F,t as ce}from"./DiaaOubc.js";import{t as I}from"./Bl0jjuyR.js";import{t as le}from"./DKQHhdJ1.js";var ue=n(`<!> Add fragment`,1),de=n(`<!> Add to wiki`,1),fe=n(`<section aria-label="Add a fragment" class="rounded-lg border border-border bg-background p-4"><div class="flex items-center justify-between gap-2"><h2 class="text-sm font-medium">New fragment</h2> <!></div> <div class="mt-3 space-y-3"><label class="block space-y-1.5"><span class="text-xs font-medium text-muted-foreground">Title</span> <!></label> <label class="block space-y-1.5"><span class="text-xs font-medium text-muted-foreground">Note</span> <!></label> <div class="flex justify-end gap-2"><!> <!></div></div></section>`),pe=n(`<div class="flex items-start gap-3 rounded-lg border border-destructive/40 bg-destructive/10 p-4" role="alert"><!> <div class="min-w-0 flex-1"><p class="text-sm font-medium text-destructive">Couldn't load the wiki</p> <p class="mt-1 break-words text-xs text-destructive/90"> </p></div> <!></div>`),me=n(`<div class="space-y-3" aria-label="Loading wiki"><div class="h-16 animate-pulse rounded-lg border border-border bg-muted/50"></div> <div class="h-16 animate-pulse rounded-lg border border-border bg-muted/50"></div></div>`),he=n(`<!> Add the first fragment`,1),ge=n(`<div class="rounded-lg border border-dashed border-border p-8 text-center"><!> <p class="mt-3 text-sm font-medium">No fragments yet</p> <p class="mt-1 text-xs text-muted-foreground">Capture recurring insights here; they become the input for skill evolution.</p> <!></div>`),_e=n(`<p class="flex items-center gap-2 text-xs text-muted-foreground" role="status"><!> Loading…</p>`),ve=n(`<p class="text-xs text-destructive" role="alert"> </p>`),ye=n(`<pre class="max-h-72 overflow-y-auto whitespace-pre-wrap break-words rounded-md bg-muted/40 p-3 text-xs leading-relaxed"> </pre>`),be=n(`<div class="border-t border-border/60 px-3 py-2.5"><!></div>`),xe=n(`<li><button class="flex min-h-11 w-full items-center gap-2.5 px-3 py-2.5 text-left transition-colors hover:bg-muted/50"><span class="min-w-0 flex-1"><span class="block truncate text-sm font-medium"> </span> <span class="block truncate font-mono text-xs text-muted-foreground"> </span></span> <!> <span class="shrink-0 text-xs text-muted-foreground"> </span></button> <!></li>`),Se=n(`<li class="px-3 py-6 text-center text-xs text-muted-foreground"> </li>`),Ce=n(`<!> <ul class="divide-y divide-border rounded-lg border border-border"></ul>`,1),we=n(`<div class="flex h-full flex-col overflow-y-auto p-5"><header class="flex shrink-0 items-start justify-between gap-3 border-b border-border pb-4"><div class="min-w-0"><div class="flex items-center gap-2"><!> <h1 tabindex="-1" class="min-w-0 flex-1 truncate text-lg font-semibold outline-none"> </h1></div> <p class="mt-0.5 flex items-center gap-1.5 text-xs text-muted-foreground"><!> <span class="min-w-0"> </span></p></div> <div class="flex shrink-0 items-center gap-1.5"><!> <!></div></header> <div class="mx-auto mt-5 w-full max-w-3xl space-y-4"><!> <!></div></div>`);function L(n,u){r(u,!0);let L=D(),Te=m(()=>L?.()?.wsId),R=m(()=>O.parse(d(Te)??`~`)),z=m(()=>ee.workspaces.find(e=>e.id===d(R))?.label??(d(R)===`~`?`Global`:d(R))),B=y(``),V=y(!1),H=y(``),U=y(``),W=y(!1),G=y(w({})),K=y(null),Ee=m(()=>{let e=d(B).trim().toLowerCase();return e===``?P.patterns:P.patterns.filter(t=>t.title.toLowerCase().includes(e)||t.name.toLowerCase().includes(e))});S(()=>{F(d(R))}),S(()=>()=>oe()),S(()=>{d(K)?.focus()});async function q(){await F(d(R))}function J(){p(V,!0),p(H,``),p(U,``)}async function De(){let e=d(H).trim(),t=d(U);if(!(e===``||d(W))){p(W,!0);try{let n=await ce(d(R),{title:e,body:t});if(n===null)return;n.deduplicated?A(`Already captured as “${n.item.title}”.`):A(`Added “${n.item.title}” to the wiki.`),p(V,!1),p(H,``),p(U,``)}catch(e){A(e instanceof Error?e.message:String(e))}finally{p(W,!1)}}}async function Oe(e){if(d(G)[e.name]?.read){delete d(G)[e.name],p(G,{...d(G)},!0);return}p(G,{...d(G),[e.name]:{loading:!0,error:null,read:null}},!0);try{let t=await se(d(R),e.name);p(G,{...d(G),[e.name]:{loading:!1,error:null,read:t}},!0)}catch(t){p(G,{...d(G),[e.name]:{loading:!1,error:t instanceof Error?t.message:String(t),read:null}},!0)}}var Y=we(),X=x(Y),Z=x(X),Q=x(Z),$=x(Q);j($,{variant:`ghost`,size:`icon`,class:`h-8 w-8 shrink-0`,title:`Back to wiki scopes`,"aria-label":`Back to wiki scopes`,onclick:()=>void E(`/wiki`),children:(e,t)=>{le(e,{class:`h-4 w-4`})},$$slots:{default:!0}});var ke=_($,2),Ae=f(ke);g(ke,e=>p(K,e),()=>d(K)),t(Q);var je=_(Q,2),Me=x(je),Ne=e=>{I(e,{variant:`secondary`,class:`shrink-0`,children:(e,t)=>{h();var n=l(`~ global`);s(e,n)},$$slots:{default:!0}})},Pe=e=>{I(e,{variant:`secondary`,class:`shrink-0`,children:(e,t)=>{h();var n=l(`workspace`);s(e,n)},$$slots:{default:!0}})};o(Me,e=>{d(R)===`~`?e(Ne):e(Pe,-1)});var Fe=_(Me,2),Ie=f(Fe);t(je),t(Z);var Le=_(Z,2),Re=x(Le);j(Re,{variant:`ghost`,size:`icon`,class:`h-9 w-9`,title:`Refresh wiki`,"aria-label":`Refresh wiki`,get disabled(){return P.loading},onclick:()=>void q(),children:(e,t)=>{var n=T(),r=C(n),i=e=>{M(e,{class:`h-4 w-4 animate-spin`})},a=e=>{ie(e,{class:`h-4 w-4`})};o(r,e=>{P.loading?e(i):e(a,-1)}),s(e,n)},$$slots:{default:!0}});var ze=_(Re,2);j(ze,{size:`sm`,onclick:J,children:(e,t)=>{var n=ue(),r=C(n);N(r,{class:`h-4 w-4`}),h(),s(e,n)},$$slots:{default:!0}}),t(Le),t(X);var Be=_(X,2),Ve=x(Be),He=e=>{var n=fe(),r=x(n),i=_(x(r),2);j(i,{variant:`ghost`,size:`icon`,class:`h-8 w-8`,title:`Cancel`,"aria-label":`Cancel adding a fragment`,onclick:()=>p(V,!1),children:(e,t)=>{te(e,{class:`h-4 w-4`})},$$slots:{default:!0}}),t(r);var a=_(r,2),c=x(a),u=_(x(c),2);ne(u,{placeholder:`One-line insight, e.g. Pin exit codes`,maxlength:120,get value(){return d(H)},set value(e){p(H,e,!0)}}),t(c);var f=_(c,2),g=_(x(f),2);re(g,{rows:4,placeholder:`What should the agent remember next time?`,get value(){return d(U)},set value(e){p(U,e,!0)}}),t(f);var v=_(f,2),y=x(v);j(y,{variant:`outline`,size:`sm`,onclick:()=>p(V,!1),children:(e,t)=>{h();var n=l(`Cancel`);s(e,n)},$$slots:{default:!0}});var b=_(y,2);{let e=m(()=>d(H).trim()===``||d(W));j(b,{size:`sm`,get disabled(){return d(e)},onclick:()=>void De(),children:(e,t)=>{var n=de(),r=C(n),i=e=>{M(e,{class:`h-4 w-4 animate-spin`})};o(r,e=>{d(W)&&e(i)}),h(),s(e,n)},$$slots:{default:!0}})}t(v),t(a),t(n),s(e,n)};o(Ve,e=>{d(V)&&e(He)});var Ue=_(Ve,2),We=e=>{var n=pe(),r=x(n);ae(r,{class:`mt-0.5 h-4 w-4 shrink-0 text-destructive`});var a=_(r,2),o=_(x(a),2),c=f(o,!0);t(a);var u=_(a,2);j(u,{variant:`outline`,size:`sm`,onclick:()=>void q(),children:(e,t)=>{h();var n=l(`Retry`);s(e,n)},$$slots:{default:!0}}),t(n),b(()=>i(c,P.error)),s(e,n)},Ge=e=>{var t=me();s(e,t)},Ke=e=>{var n=ge(),r=x(n);k(r,{class:`mx-auto h-8 w-8 text-muted-foreground`});var i=_(r,6);j(i,{class:`mt-4`,size:`sm`,onclick:J,children:(e,t)=>{var n=he(),r=C(n);N(r,{class:`h-4 w-4`}),h(),s(e,n)},$$slots:{default:!0}}),t(n),s(e,n)},qe=n=>{var r=Ce(),c=C(r),u=e=>{ne(e,{placeholder:`Filter fragments…`,"aria-label":`Filter wiki fragments`,get value(){return d(B)},set value(e){p(B,e,!0)}})};o(c,e=>{P.patterns.length>0&&e(u)});var g=_(c,2);e(g,21,()=>d(Ee),e=>e.name,(e,n)=>{let r=m(()=>d(G)[d(n).name]);var c=xe(),u=x(c),p=x(u),g=x(p),y=f(g,!0),S=_(g,2),C=f(S,!0);t(p);var w=_(p,2),T=e=>{I(e,{variant:`outline`,class:`shrink-0 text-xs`,children:(e,t)=>{h();var n=l(`promoted`);s(e,n)},$$slots:{default:!0}})};o(w,e=>{d(n).promotedFrom&&e(T)});var E=_(w,2),D=f(E,!0);t(u);var O=_(u,2),k=e=>{var n=be(),a=x(n),c=e=>{var n=_e(),r=x(n);M(r,{class:`h-3.5 w-3.5 animate-spin`}),h(),t(n),s(e,n)},l=e=>{var t=ve(),n=f(t,!0);b(()=>i(n,d(r).error)),s(e,t)},u=e=>{var t=ye(),n=f(t,!0);b(e=>i(n,e),[()=>d(r).read.body.trim()]),s(e,t)};o(a,e=>{d(r).loading?e(c):d(r).error?e(l,1):d(r).read&&e(u,2)}),t(n),s(e,n)};o(O,e=>{d(r)&&e(k)}),t(c),b(e=>{v(u,`aria-expanded`,d(r)?.read!==null&&d(r)!==void 0),i(y,d(n).title),i(C,d(n).name),i(D,e)},[()=>d(n).updated.slice(0,10)]),a(`click`,u,()=>void Oe(d(n))),s(e,c)},e=>{var t=Se(),n=f(t);b(e=>i(n,`No fragments match “${e??``}”.`),[()=>d(B).trim()]),s(e,t)}),t(g),s(n,r)};o(Ue,e=>{P.error?e(We):P.loading&&P.patterns.length===0?e(Ge,1):P.patterns.length===0?e(Ke,2):e(qe,-1)}),t(Be),t(Y),b(()=>{i(Ae,`${d(z)??``} wiki`),i(Ie,`Persistent notes for ${d(z)??``} — fragments collected here feed skill evolution.`)}),s(n,Y),c()}u([`click`]);export{L as default};
@@ -1 +1 @@
1
- import{Ct as e,E as t,O as n,R as r,St as i,a,f as o,jt as s,l as c,o as l,st as u,z as d}from"./CmCJ0SKP.js";import"./xihTtKlq.js";import{o as f,s as p}from"./CNPsST_i.js";var m=f({base:`h-5 gap-1 rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-2.5! focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive group/badge inline-flex w-fit shrink-0 items-center justify-center overflow-hidden whitespace-nowrap transition-colors focus-visible:ring-[3px] [&>svg]:pointer-events-none`,variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/20 dark:bg-input/30`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}}),h=new Set([`$$slots`,`$$events`,`$$legacy`,`ref`,`href`,`class`,`variant`,`children`]);function g(f,g){e(g,!0);let _=a(g,`ref`,15,null),v=a(g,`variant`,3,`default`),y=l(g,h);var b=d(),x=u(b);t(x,()=>g.href?`a`:`span`,!1,(e,t)=>{c(e,e=>_(e),()=>_()),o(e,e=>({"data-slot":`badge`,href:g.href,class:e,...y}),[()=>p(m({variant:v()}),g.class)]);var i=d(),a=u(i);n(a,()=>g.children??s),r(t,i)}),r(f,b),i()}export{g as t};
1
+ import{Ct as e,E as t,O as n,R as r,St as i,a,f as o,jt as s,l as c,o as l,st as u,z as d}from"./CmCJ0SKP.js";import"./xihTtKlq.js";import{i as f,r as p}from"./DnPeA-9c.js";var m=p({base:`h-5 gap-1 rounded-full border border-transparent px-2 py-0.5 text-[0.625rem] font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-2.5! focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive group/badge inline-flex w-fit shrink-0 items-center justify-center overflow-hidden whitespace-nowrap transition-colors focus-visible:ring-[3px] [&>svg]:pointer-events-none`,variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/20 dark:bg-input/30`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}}),h=new Set([`$$slots`,`$$events`,`$$legacy`,`ref`,`href`,`class`,`variant`,`children`]);function g(p,g){e(g,!0);let _=a(g,`ref`,15,null),v=a(g,`variant`,3,`default`),y=l(g,h);var b=d(),x=u(b);t(x,()=>g.href?`a`:`span`,!1,(e,t)=>{c(e,e=>_(e),()=>_()),o(e,e=>({"data-slot":`badge`,href:g.href,class:e,...y}),[()=>f(m({variant:v()}),g.class)]);var i=d(),a=u(i);n(a,()=>g.children??s),r(t,i)}),r(p,b),i()}export{g as t};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,At as n,B as r,Ct as i,F as a,G as o,Mt as s,N as c,R as l,S as u,St as d,U as f,W as p,X as m,_t as h,a as g,ct as _,d as v,ft as y,g as b,gt as x,j as S,k as ee,kt as C,l as te,lt as w,m as T,mt as E,nt as D,o as O,ot as k,p as ne,rt as A,s as j,st as M,ut as re,x as ie,z as ae}from"./CmCJ0SKP.js";import"./xihTtKlq.js";import{t as N}from"./BkEnd9_Z.js";import{a as P,i as oe,r as se}from"./oxP0dM6z.js";import{_ as ce,a as le,b as ue,r as de,s as F,t as fe,u as pe,v as me,x as he}from"./CPbfZBJo.js";import{a as ge,c as I,d as L,f as _e,g as ve,i as R,l as ye,o as be,p as xe,r as Se,s as Ce,t as we,u as z}from"./BOPkZ98B.js";import{n as B}from"./1aUphu7Y.js";import{i as Te,n as V,t as H}from"./DnPeA-9c.js";import{t as Ee}from"./BEPs9Z9s.js";import{t as De}from"./DOjT7y5f.js";import{n as Oe,t as ke}from"./F_BrNiaz.js";import{n as Ae,t as je}from"./ChvFFUWR.js";import{n as Me,t as Ne}from"./s48N5eaK.js";import{t as U}from"./Bl0jjuyR.js";import{t as Pe}from"./DKQHhdJ1.js";import{t as Fe}from"./D8Der6oM.js";var Ie=fe(le),W=re({target:null,checking:!1,applying:!1,checkError:null,results:[],applyResults:null});async function Le(e,t){let n=Ie.issue(),r=()=>n.isCurrent()&&L(W.target,e);W.target=e,W.checking=!0,W.checkError=null,W.results=[],W.applyResults=null;try{let{results:n}=await F().skills.update.check({...e,skillIds:t});if(!r())return;W.results=n}catch(e){if(!r())return;W.checkError=e instanceof Error?e.message:String(e)}finally{n.isLatest()&&(W.checking=!1)}}async function Re(e,t){let n=Ie.issue(),r=()=>n.isCurrent()&&L(W.target,e);W.applying=!0;try{let{results:n}=await F().skills.update.apply({...e,skillIds:t});return r()?(W.applyResults=n,n):null}catch(e){if(!r())return null;throw e}finally{n.isLatest()&&(W.applying=!1)}}function ze(){Ie.invalidate(),W.results=[],W.applyResults=null,W.checkError=null}function Be(e){let t=0,n=0,r=0,i=0;for(let a of e)a.status===`updated`?t+=1:a.status===`already-current`?n+=1:a.status===`failed`?r+=1:i+=1;return{outdated:t,current:n,failed:r,unavailable:i}}function Ve(e){let t=0,n=0,r=0;for(let i of e)i.status===`updated`?t+=1:i.status===`already-current`?n+=1:r+=1;return{updated:t,current:n,failed:r}}var G=new Set([`$$slots`,`$$events`,`$$legacy`]);function He(e,t){let n=O(t,G),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`line`,{x1:`10`,x2:`10`,y1:`15`,y2:`9`}],[`line`,{x1:`14`,x2:`14`,y1:`15`,y2:`9`}]];N(e,j({name:`circle-pause`},()=>n,{get iconNode(){return r}}))}var Ue=new Set([`$$slots`,`$$events`,`$$legacy`]);function We(e,t){let n=O(t,Ue),r=[[`path`,{d:`M7 7h10v10`}],[`path`,{d:`M7 17 17 7`}]];N(e,j({name:`arrow-up-right`},()=>n,{get iconNode(){return r}}))}var K=r(`<span title="Disabled (paused)" class="shrink-0"><!></span>`),Ge=r(`<span class="shrink-0 text-xs uppercase tracking-wide text-amber-600 dark:text-amber-400">disabled</span>`),q=r(`<span class="inline-flex shrink-0 items-center gap-0.5 text-xs text-muted-foreground/80"><!> <span class="tabular-nums"> </span></span>`),Ke=r(`<span class="mt-0.5 line-clamp-2 text-xs leading-4"> </span>`),J=r(`<span class="mt-0.5 line-clamp-2 text-xs italic leading-4 text-muted-foreground/70">No description</span>`),qe=r(`<button type="button"><!> <span class="min-w-0 flex-1"><span class="flex items-center gap-2"><span class="truncate text-[13px] font-medium text-foreground"> </span> <!> <!></span> <!></span></button>`);function Je(e,t){i(t,!0);let r=g(t,`selected`,3,!1),s=g(t,`sameContentCount`,3,0),f=x(()=>`Same content as ${s()} other ${s()===1?`installation`:`installations`}`);var p=qe(),h=k(p),v=e=>{var t=K();He(k(t),{class:`mt-0.5 h-4 w-4 text-amber-600 dark:text-amber-400`}),n(t),l(e,t)},y=e=>{Ae(e,{class:`mt-0.5 h-4 w-4 shrink-0 text-muted-foreground`})};c(h,e=>{t.skill.disabled?e(v):e(y,-1)});var b=w(h,2),S=k(b),ee=k(S),C=_(ee,!0),te=w(ee,2),E=e=>{var t=Ge();l(e,t)};c(te,e=>{t.skill.disabled&&e(E)});var O=w(te,2),ne=e=>{var t=q(),r=k(t);We(r,{class:`h-3 w-3`,"aria-hidden":`true`});var i=w(r,2),o=_(i,!0);n(t),D(()=>{T(t,`title`,m(f)),a(o,s())}),l(e,t)};c(O,e=>{s()>0&&e(ne)}),n(S);var A=w(S,2),j=e=>{var n=Ke(),r=_(n,!0);D(()=>a(r,t.skill.description)),l(e,n)},M=e=>{var t=J();l(e,t)};c(A,e=>{t.skill.description?e(j):e(M,-1)}),n(b),n(p),D(e=>{T(p,`data-skill-id`,t.skill.id),T(p,`aria-pressed`,r()),ie(p,1,e),a(C,t.skill.name)},[()=>u(Te(`group flex min-h-14 w-full items-start gap-2.5 border-b border-border/70 px-3 py-2.5 text-left transition-colors`,r()?`bg-accent text-foreground`:`text-muted-foreground hover:bg-accent/60 hover:text-foreground`))]),o(`click`,p,function(...e){t.onclick?.apply(this,e)}),l(e,p),d()}p([`click`]);var Ye=new Set([`$$slots`,`$$events`,`$$legacy`]);function Xe(e,t){let n=O(t,Ye),r=[[`path`,{d:`M12 17V3`}],[`path`,{d:`m6 11 6 6 6-6`}],[`path`,{d:`M19 21H5`}]];N(e,j({name:`arrow-down-to-line`},()=>n,{get iconNode(){return r}}))}var Ze=new Set([`$$slots`,`$$events`,`$$legacy`]);function Qe(e,t){let n=O(t,Ze),r=[[`path`,{d:`M12 2v10`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`}]];N(e,j({name:`power`},()=>n,{get iconNode(){return r}}))}var $e=new Set([`$$slots`,`$$events`,`$$legacy`]);function et(e,t){let n=O(t,$e),r=[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}],[`path`,{d:`m9 12 2 2 4-4`}]];N(e,j({name:`shield-check`},()=>n,{get iconNode(){return r}}))}var tt=r(`<div class="flex shrink-0 items-start gap-2 border-b border-border px-4 py-2 text-xs text-destructive" role="alert" data-testid="search-fallback"><span class="min-w-0 flex-1 break-words"> </span> <button class="shrink-0 underline underline-offset-2">Retry</button></div>`),nt=r(`<p class="flex shrink-0 items-center gap-2 border-b border-border px-4 py-2 text-xs text-muted-foreground" role="status"><!> Checking upstream sources…</p>`),rt=r(`<div class="flex shrink-0 items-start gap-2 border-b border-border px-4 py-2 text-xs text-destructive" role="alert"><span class="min-w-0 flex-1 break-words"> </span> <button class="shrink-0 underline underline-offset-2">Retry</button></div>`),it=r(`<span class="text-muted-foreground"> </span>`),at=r(`<span class="text-destructive"> </span>`),ot=r(`<p class="min-w-0 flex-1 text-xs"><span class="font-medium">Applied</span> <!> <!> <!></p>`),st=r(`<span class="font-medium text-primary"> </span>`),ct=r(`<span class="font-medium">All current</span>`),lt=r(`<!> `,1),ut=r(`<p class="min-w-0 flex-1 text-xs"><!> <!> <!> <!></p> <!>`,1),dt=r(`<li class="pl-3 text-xs text-muted-foreground"> </li>`),ft=r(`<li class="flex items-baseline gap-1.5"><span class="min-w-0 flex-1 truncate"> </span> <!></li> <!>`,1),pt=r(`<ul class="mt-1.5 max-h-40 space-y-1 overflow-y-auto text-xs"></ul>`),mt=r(`<section class="shrink-0 border-b border-border px-4 py-2.5" aria-label="Update report" data-testid="update-report"><div class="flex items-center gap-2"><!> <button class="flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground" aria-label="Dismiss update report"><!></button></div> <!></section>`),ht=r(`<div class="flex flex-col items-start gap-2 px-4 py-6 text-xs text-destructive"><p class="break-words"> </p> <!></div>`),gt=r(`<button class="shrink-0 underline underline-offset-2">Retry</button>`),_t=r(`<div class="flex items-start gap-2 px-4 py-2.5 text-xs text-destructive" role="alert"><span class="min-w-0 flex-1 break-words"> </span> <!></div> <!>`,1),vt=r(`<div class="flex items-center gap-2 px-4 py-6 text-xs text-muted-foreground"><!> Loading skills…</div>`),yt=r(`<div class="flex items-center gap-2 px-4 py-6 text-xs text-muted-foreground" role="status" data-testid="search-loading"><!> Searching skills…</div>`),bt=r(`<p class="px-4 py-6 text-xs text-muted-foreground" data-testid="search-scoped-empty">No skills match in this provider. <button class="underline underline-offset-2">Search all workspaces (⌘K)</button></p>`),xt=r(`<p class="px-4 py-6 text-xs text-muted-foreground">No skills match.</p>`),St=r(`<span class="shrink-0 text-xs uppercase tracking-wide text-amber-600 dark:text-amber-400">disabled</span>`),Ct=r(`<span class="inline-flex shrink-0 items-center gap-0.5 text-xs text-muted-foreground/80"><!> <span class="tabular-nums"> </span></span>`),wt=r(`<button type="button"><!> <span class="min-w-0 flex-1"><span class="flex items-center gap-2"><span class="truncate text-[13px] font-medium text-foreground"> </span> <!> <!></span> <span class="mt-0.5 line-clamp-2 text-xs leading-4"> </span></span></button>`),Tt=r(`<div class="m-auto flex flex-col items-center justify-center gap-2 px-8 py-10 text-center text-muted-foreground"><!> <p class="text-sm font-medium text-foreground">Select a skill</p> <p class="max-w-xs text-xs">Inspect its frontmatter, rendered body, and validation status.</p></div>`),Et=r(`<div class="flex h-full items-center justify-center gap-2 text-xs text-muted-foreground"><!> Loading skill…</div>`),Dt=r(`<div class="flex h-full flex-col items-center justify-center gap-2 px-8 text-center"><p class="text-sm font-medium text-destructive">Skill not found</p> <p class="text-xs text-muted-foreground">This skill could not be loaded. It may have been moved, renamed, or deleted.</p> <p class="max-w-md break-all font-mono text-xs text-muted-foreground/70"> </p> <!></div>`),Ot=r(`<h2 class="truncate text-base font-semibold"> </h2>`),kt=r(`<textarea rows="2" class="mt-1 w-full resize-y rounded-md border border-input bg-input/20 px-2 py-1 text-xs leading-5 outline-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30" aria-label="Skill description"></textarea>`),At=r(`<p class="mt-0.5 text-xs leading-5 text-muted-foreground"> </p>`),jt=r(`<!> Save`,1),Mt=r(`<!> Validate`,1),Nt=r(`<!> Valid skill`,1),Pt=r(`<!> Validation issues`,1),Ft=r(`<p class="mt-1 text-xs text-destructive"> </p>`),It=r(`<p class="mt-1 text-xs text-amber-700 dark:text-amber-300"> </p>`),Lt=r(`<section class="mb-4 border-b border-border pb-3" aria-live="polite"><div class="flex items-center gap-2 text-xs font-medium"><!></div> <!> <!></section>`),Rt=r(`<div><dt class="bg-muted/40 px-2 py-1 text-xs font-medium text-muted-foreground"> </dt> <dd class="break-words px-2 py-1 text-xs"> </dd></div>`),zt=r(`<section class="mb-4"><h3 class="mb-2 text-xs font-medium text-muted-foreground">Frontmatter</h3> <dl class="overflow-x-auto rounded-md border border-border"></dl></section>`),Bt=r(`<div class="provider-detail-inner flex min-h-0 flex-1 flex-col svelte-9qjypz"><header tabindex="-1" class="detail-header shrink-0 border-b border-border px-4 py-3 focus:outline-none svelte-9qjypz"><div class="flex items-start gap-2"><button class="provider-back mt-0.5 hidden h-8 w-8 items-center justify-center svelte-9qjypz" aria-label="Back to skills"><!></button> <div class="min-w-0 flex-1"><!> <!></div> <div class="flex shrink-0 items-center gap-1.5"><!> <!> <!></div></div> <div class="mt-2 flex flex-wrap gap-1.5"><!> <!> <!></div></header> <div class="min-h-0 flex-1 overflow-y-auto px-4 py-3"><!> <!> <section><h3 class="mb-2 text-xs font-medium uppercase tracking-wide text-muted-foreground">SKILL.md</h3> <div class="prose prose-sm max-w-none overflow-x-auto"></div></section></div></div>`),Vt=r(`<div class="provider-surface flex h-full min-h-0 w-full min-w-0 svelte-9qjypz"><section aria-label="Skills"><header class="shrink-0 border-b border-border px-4 py-3"><div class="flex flex-wrap items-center gap-x-2 gap-y-1.5"><h1 class="min-w-0 truncate text-base font-semibold"> </h1> <!> <div class="ml-auto flex items-center gap-1"><!> <!></div></div> <div class="relative mt-2"><!> <input class="h-7 w-full rounded-md border border-input bg-input/20 pl-7 pr-8 text-xs outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30" placeholder="Filter skills" aria-label="Filter skills"/> <button type="button" class="absolute right-1 top-1/2 flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground" aria-label="Open search config" title="Open search config (search-config.toml)"><!></button></div></header> <!> <!> <div class="min-h-0 flex-1 overflow-y-auto"><!></div></section> <section aria-label="Skill detail"><!></section></div>`);function Ht(r,u){i(u,!0);let p=se(),g=oe(),O=x(()=>p?.()?.wsId),j=x(()=>p?.()?.providerId),N=x(()=>g?.()??{}),F=x(()=>m(N).skill),L=x(()=>m(N).q??``),Te=x(()=>m(N).view??`list`),Ie=fe(le),G=E(null),Ue=E(!1),K=E(null),Ge=E(!1),q=E(null),Ke=E(!1),J=E(!1),qe=E(``),Ye=E(``),Ze=E(null),$e=E(null),Ht=null,Y=x(()=>{if(!m(O)||!m(j))return null;let e=he.safeParse(m(O)),t=ue.safeParse(m(j));return!e.success||!t.success?null:{workspaceId:e.data,providerId:t.data}});A(()=>{m(Y)&&R(m(Y))}),A(()=>{let e=m(L).trim();if(!e)return;let t=setTimeout(()=>void Ce(e),150);return()=>clearTimeout(t)});let Ut=E(re(de.status));A(()=>{let t=de.status,n=e(()=>m(Ut));if(y(Ut,t,!0),n===`connected`||t!==`connected`)return;let r=e(()=>m(L).trim());r?Ce(r):z.target!==null&&z.skills.length===0&&!z.loading&&z.error!==null&&R(z.target)}),A(()=>()=>be());let Wt=!1;A(()=>{Wt||de.status!==`connected`||(Wt=!0,Se())});let Gt=x(()=>{let e=new Map;for(let t of ye.groups){let n=t.members.length-1;for(let r of t.members)e.set(r.id,n)}return e}),Kt=x(()=>I.query===m(L).trim()),qt=x(()=>{let e=m(Y);return e?I.results.filter(t=>t.installations.some(t=>t.workspaceId===e.workspaceId&&t.providerId===e.providerId)):[]}),X=x(()=>m(L).trim()?I.searching?{mode:`searching`}:m(Kt)&&I.error?{mode:`fallback`}:m(Kt)?{mode:`results`,rows:m(qt)}:{mode:`fallback`}:{mode:`full`}),Jt=x(()=>m(X).mode===`fallback`&&m(Kt)?I.error:null);A(()=>{let e=m(Y),t=m(F);if(!e||!t){y(G,null),y(K,null);return}Yt(e,t)});async function Yt(e,t){let n=Ie.issue(),r=me.safeParse(t);if(!r.success){y(G,null),y(K,`Invalid skill id in URL.`);return}y(Ue,!0),y(K,null),y(q,null);try{let t=await we(e,r.data);if(!n.isCurrent())return;y(G,t,!0);let{frontmatter:i}=Me(t.content),a=pe.safeParse(i);y(qe,a.success?a.data.name:t.name,!0),y(Ye,a.success?a.data.description:t.description,!0)}catch(e){if(!n.isCurrent())return;y(G,null),y(K,e instanceof Error?e.message:String(e),!0)}finally{n.isLatest()&&y(Ue,!1)}}let Xt=x(()=>{let e=m(L).trim().toLowerCase(),t=z.skills;return e?t.filter(t=>[t.name,t.description,t.provider].some(t=>t.toLowerCase().includes(e))):t}),Zt=x(()=>m(X).mode===`results`?m(X).rows.length:m(Xt).length),Z=x(()=>m(G)?Me(m(G).content):null),Qt=x(()=>m(Z)?Ne(m(Z).body):``),$t=x(()=>m(Y)!==null&&m(Y).workspaceId!==`~`);function en(e){m(O)&&m(j)&&P(`workspaces.provider`,{wsId:m(O),providerId:m(j)},{...m(N),skill:e,view:`detail`})}function tn(e){if(!m(O)||!m(j))return;let t=z.skills.find(t=>t.name===e);if(!t)return;let{q:n,...r}=m(N);P(`workspaces.provider`,{wsId:m(O),providerId:m(j)},{...r,skill:t.id,view:`detail`})}function nn(e){m(O)&&m(j)&&P(`workspaces.provider`,{wsId:m(O),providerId:m(j)},{...m(N),q:e||void 0},`REPLACE`)}function rn(){m(O)&&m(j)&&(Ht=m(F)??null,P(`workspaces.provider`,{wsId:m(O),providerId:m(j)},{...m(N),view:`list`}))}let an=`list`;A(()=>{let t=m(Te),n=e(()=>an),r=e(()=>Ht);an=t,t===`list`&&n===`detail`&&r&&(Ht=null,(document.querySelector(`button[data-skill-id="${CSS.escape(r)}"]`)??m($e))?.focus())}),A(()=>{m(Te)!==`detail`||m(Ue)||m(G)?.id!==void 0&&m(Ze)?.focus()});async function on(){let e=m(G);if(!e||!m(Y)||m(J))return;y(J,!0);let t=e.disabled?`enable`:`disable`;try{let n=await _e([e.id],t);if(!n)return;let r=n.results.find(t=>t.skillId===e.id);r&&(r.status===`conflict`?B(`${r.name}: ${t} conflict${r.error?` — ${r.error}`:`.`}`):r.status===`failed`?B(`${r.name}: ${t} failed — ${r.error??`unknown error`}`):r.status===`skipped`?B(`${r.name}: already ${t===`enable`?`enabled`:`disabled`}.`):B(`${r.name} ${r.status}.`)),await Yt(m(Y),e.id)}catch(e){B(e instanceof Error?e.message:String(e))}finally{y(J,!1)}}let sn=x(()=>W.results.filter(e=>e.status===`updated`).map(e=>e.skillId)),Q=x(()=>Be(W.results)),$=x(()=>W.applyResults?Ve(W.applyResults):null);A(()=>{m(Y)&&ze()});async function cn(){m(Y)&&!W.checking&&await Le(m(Y))}async function ln(){if(m(Y)&&!W.applying&&m(sn).length!==0)try{let e=await Re(m(Y),m(sn));if(!e)return;let t=Ve(e),n=[t.updated>0?`${t.updated} updated`:null,t.current>0?`${t.current} already current`:null,t.failed>0?`${t.failed} failed`:null].filter(e=>e!==null);B(n.length>0?n.join(` · `):`No changes applied.`),await R(m(Y))}catch(e){B(e instanceof Error?e.message:String(e))}}async function un(){if(m(G)&&m(Y)){y(Ge,!0),y(q,null);try{let e=await xe(m(G).id);e&&y(q,{success:e.success,errors:e.errors,warnings:e.warnings},!0)}catch(e){y(q,{success:!1,errors:[e instanceof Error?e.message:String(e)],warnings:[]},!0)}finally{y(Ge,!1)}}}async function dn(){let e=m(G),t=m(Y),n=m(Z)?.body;if(!e||!t||n===void 0)return;let r=m(qe).trim(),i=m(Ye).trim();if(!r||!i){B(`Name and description cannot be empty.`);return}y(Ke,!0);try{let a=m(Z)?m(Z).frontmatter:{},o=pe.safeParse({...a,name:r,description:i});if(!o.success){B(`Frontmatter is invalid after edit.`);return}let s=o.data,c=await ve({mode:`update`,workspaceId:t.workspaceId,providerId:t.providerId,skillId:e.id,expectedRevision:e.revision,frontmatter:s,body:n});y(G,{...e,revision:c.document.revision,name:r,description:i},!0),B(`Saved.`)}catch(e){e instanceof ce&&e.code===`CONFLICT`?B(`This skill changed elsewhere. Reload to view the latest.`,{label:`Reload`,run:()=>{t&&m(G)&&Yt(t,m(G).id)}}):B(e instanceof Error?e.message:String(e))}finally{y(Ke,!1)}}var fn=Vt(),pn=k(fn),mn=k(pn),hn=k(mn),gn=k(hn),_n=_(gn,!0),vn=w(gn,2),yn=e=>{H(e,{class:`h-3.5 w-3.5 shrink-0 animate-spin text-muted-foreground`,title:`Refreshing skills`})},bn=e=>{U(e,{variant:`secondary`,children:(e,t)=>{C();var n=f();D(()=>a(n,m(Zt))),l(e,n)},$$slots:{default:!0}})};c(vn,e=>{z.refreshing||m(X).mode===`searching`?e(yn):e(bn,-1)});var xn=w(vn,2),Sn=k(xn);V(Sn,{variant:`ghost`,size:`icon`,class:`h-7 w-7`,title:`Insights — read-only analysis: duplicates, conflicts, shared resources`,"aria-label":`Insights`,onclick:()=>{m(O)&&m(j)&&P(`workspaces.intelligence`,{wsId:m(O),providerId:m(j)},{})},children:(e,t)=>{Fe(e,{class:`h-3.5 w-3.5`})},$$slots:{default:!0}});var Cn=w(Sn,2);V(Cn,{variant:`ghost`,size:`icon`,class:`h-7 w-7`,title:`Updates — compare installed skills against their upstream sources`,"aria-label":`Updates`,get disabled(){return W.checking},onclick:()=>void cn(),children:(e,t)=>{var n=ae(),r=M(n),i=e=>{H(e,{class:`h-3.5 w-3.5 animate-spin`})},a=e=>{Xe(e,{class:`h-3.5 w-3.5`})};c(r,e=>{W.checking?e(i):e(a,-1)}),l(e,n)},$$slots:{default:!0}}),n(xn),n(hn);var wn=w(hn,2),Tn=k(wn);Oe(Tn,{class:`pointer-events-none absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground`});var En=w(Tn,2);ne(En),te(En,e=>y($e,e),()=>m($e));var Dn=w(En,2),On=k(Dn);ke(On,{class:`h-3.5 w-3.5`}),n(Dn),n(wn),n(mn);var kn=w(mn,2),An=e=>{var t=tt(),r=k(t),i=_(r),s=w(r,2);n(t),D(()=>a(i,`Search unavailable — filtering loaded skills. ${m(Jt)??``}`)),o(`click`,s,()=>void Ce(m(L).trim())),l(e,t)};c(kn,e=>{m(Jt)&&e(An)});var jn=w(kn,2),Mn=e=>{var t=nt(),r=k(t);H(r,{class:`h-3.5 w-3.5 animate-spin`}),C(),n(t),l(e,t)},Nn=e=>{var t=rt(),r=k(t),i=_(r,!0),s=w(r,2);n(t),D(()=>a(i,W.checkError)),o(`click`,s,()=>void cn()),l(e,t)},Pn=e=>{var r=mt(),i=k(r),s=k(i),u=e=>{var t=ot(),r=w(k(t),2),i=e=>{var t=it(),n=_(t);D(()=>a(n,`· ${m($).updated??``} updated`)),l(e,t)};c(r,e=>{m($).updated>0&&e(i)});var o=w(r,2),s=e=>{var t=it(),n=_(t);D(()=>a(n,`· ${m($).current??``} already current`)),l(e,t)};c(o,e=>{m($).current>0&&e(s)});var u=w(o,2),d=e=>{var t=at(),n=_(t);D(()=>a(n,`· ${m($).failed??``} failed`)),l(e,t)};c(u,e=>{m($).failed>0&&e(d)}),n(t),l(e,t)},d=e=>{var t=ut(),r=M(t),i=k(r),o=e=>{var t=st(),n=_(t);D(()=>a(n,`${m(Q).outdated??``} outdated`)),l(e,t)},s=e=>{var t=ct();l(e,t)};c(i,e=>{m(Q).outdated>0?e(o):e(s,-1)});var u=w(i,2),d=e=>{var t=it(),n=_(t);D(()=>a(n,`· ${m(Q).current??``} up to date`)),l(e,t)};c(u,e=>{m(Q).current>0&&e(d)});var f=w(u,2),p=e=>{var t=it(),n=_(t);D(()=>a(n,`· ${m(Q).unavailable??``} unavailable`)),l(e,t)};c(f,e=>{m(Q).unavailable>0&&e(p)});var h=w(f,2),g=e=>{var t=at(),n=_(t);D(()=>a(n,`· ${m(Q).failed??``} failed`)),l(e,t)};c(h,e=>{m(Q).failed>0&&e(g)}),n(r);var v=w(r,2),y=e=>{V(e,{size:`sm`,class:`h-7 gap-1.5 px-2 text-xs`,get disabled(){return W.applying},onclick:()=>void ln(),children:(e,t)=>{var n=lt(),r=M(n),i=e=>{H(e,{class:`h-3.5 w-3.5 animate-spin`})},o=e=>{Xe(e,{class:`h-3.5 w-3.5`})};c(r,e=>{W.applying?e(i):e(o,-1)});var s=w(r);D(()=>a(s,` Update ${m(sn).length??``}`)),l(e,n)},$$slots:{default:!0}})};c(v,e=>{m(sn).length>0&&e(y)}),l(e,t)};c(s,e=>{m($)?e(u):e(d,-1)});var p=w(s,2),h=k(p);Ee(h,{class:`h-3.5 w-3.5`}),n(p),n(i);var g=w(i,2),v=e=>{let r=x(()=>W.applyResults??W.results);var i=pt();t(i,21,()=>m(r),e=>e.skillId,(e,t)=>{var r=ft(),i=M(r),o=k(i),s=_(o,!0),u=w(o,2),d=e=>{U(e,{variant:`secondary`,class:`text-xs`,children:(e,t)=>{C();var n=f();D(()=>a(n,m($)?`reinstalled`:`outdated`)),l(e,n)},$$slots:{default:!0}})},p=e=>{U(e,{variant:`outline`,class:`text-xs`,children:(e,t)=>{C();var n=f(`current`);l(e,n)},$$slots:{default:!0}})},h=e=>{U(e,{variant:`destructive`,class:`text-xs`,children:(e,t)=>{C();var n=f(`failed`);l(e,n)},$$slots:{default:!0}})},g=e=>{U(e,{variant:`outline`,class:`text-xs`,children:(e,t)=>{C();var n=f(`unavailable`);l(e,n)},$$slots:{default:!0}})};c(u,e=>{m(t).status===`updated`?e(d):m(t).status===`already-current`?e(p,1):m(t).status===`failed`?e(h,2):e(g,-1)}),n(i);var v=w(i,2),y=e=>{var n=dt(),r=_(n,!0);D(()=>a(r,m(t).error)),l(e,n)};c(v,e=>{m(t).error&&e(y)}),D(()=>a(s,m(t).name)),l(e,r)}),n(i),l(e,i)};c(g,e=>{(W.applyResults??W.results)&&e(v)}),n(r),o(`click`,p,()=>ze()),l(e,r)};c(jn,e=>{W.checking?e(Mn):W.checkError?e(Nn,1):(W.results.length>0||W.applyResults)&&e(Pn,2)});var Fn=w(jn,2),In=k(Fn),Ln=e=>{var t=ht(),r=k(t),i=_(r,!0),o=w(r,2),s=e=>{V(e,{variant:`outline`,size:`sm`,class:`h-7 text-xs`,onclick:()=>void R(m(Y)),children:(e,t)=>{C();var n=f(`Retry`);l(e,n)},$$slots:{default:!0}})};c(o,e=>{m(Y)&&e(s)}),n(t),D(()=>a(i,z.error)),l(e,t)},Rn=e=>{var r=_t(),i=M(r),s=k(i),u=_(s,!0),d=w(s,2),f=e=>{var t=gt();o(`click`,t,()=>void R(m(Y))),l(e,t)};c(d,e=>{m(Y)&&e(f)}),n(i);var p=w(i,2);t(p,17,()=>m(Xt),e=>e.id,(e,t)=>{{let n=x(()=>m(t).id===m(F)),r=x(()=>m(Gt).get(m(t).id)??0);Je(e,{get skill(){return m(t)},get selected(){return m(n)},get sameContentCount(){return m(r)},onclick:()=>en(m(t).id)})}}),D(()=>a(u,z.error)),l(e,r)},zn=e=>{var t=vt(),r=k(t);H(r,{class:`h-3.5 w-3.5 animate-spin`}),C(),n(t),l(e,t)},Bn=e=>{var t=yt(),r=k(t);H(r,{class:`h-3.5 w-3.5 animate-spin`}),C(),n(t),l(e,t)},Vn=e=>{var t=ae(),r=M(t),i=e=>{var t=bt(),r=w(k(t));n(t),o(`click`,r,()=>globalThis.dispatchEvent(new KeyboardEvent(`keydown`,{key:`k`,metaKey:!0}))),l(e,t)},a=e=>{var t=xt();l(e,t)};c(r,e=>{I.results.length>0?e(i):e(a,-1)}),l(e,t)},Hn=e=>{var r=ae(),i=M(r);t(i,17,()=>m(X).rows,e=>e.id,(e,t)=>{var r=wt(),i=k(r),s=e=>{He(e,{class:`mt-0.5 h-4 w-4 shrink-0 text-amber-600 dark:text-amber-400`})},u=e=>{Ae(e,{class:`mt-0.5 h-4 w-4 shrink-0 text-muted-foreground`})};c(i,e=>{m(t).disabled?e(s):e(u,-1)});var d=w(i,2),f=k(d),p=k(f),h=_(p,!0),g=w(p,2),v=e=>{var t=St();l(e,t)};c(g,e=>{m(t).disabled&&e(v)});var y=w(g,2),b=e=>{var r=Ct(),i=k(r);We(i,{class:`h-3 w-3`,"aria-hidden":`true`});var o=w(i,2),s=_(o,!0);n(r),D(()=>{T(r,`title`,`Same content as ${m(t).duplicates.length??``} other installation${m(t).duplicates.length===1?``:`s`}`),a(s,m(t).duplicates.length)}),l(e,r)};c(y,e=>{m(t).duplicates.length>0&&e(b)}),n(f);var x=w(f,2),S=_(x,!0);n(d),n(r),D(()=>{T(r,`data-skill-id`,m(t).id),T(r,`aria-pressed`,m(t).id===m(F)),ie(r,1,`group flex min-h-14 w-full items-start gap-2.5 border-b border-border/70 px-3 py-2.5 text-left transition-colors ${m(t).id===m(F)?`bg-accent text-foreground`:`text-muted-foreground hover:bg-accent/60 hover:text-foreground`}`),a(h,m(t).name),a(S,m(t).description||`No description`)}),o(`click`,r,()=>tn(m(t).name)),l(e,r)}),l(e,r)},Un=e=>{var t=xt();l(e,t)},Wn=e=>{var n=ae(),r=M(n);t(r,17,()=>m(Xt),e=>e.id,(e,t)=>{{let n=x(()=>m(t).id===m(F)),r=x(()=>m(Gt).get(m(t).id)??0);Je(e,{get skill(){return m(t)},get selected(){return m(n)},get sameContentCount(){return m(r)},onclick:()=>en(m(t).id)})}}),l(e,n)};c(In,e=>{z.error&&z.skills.length===0?e(Ln):z.error?e(Rn,1):z.loading?e(zn,2):m(X).mode===`searching`?e(Bn,3):m(X).mode===`results`&&m(X).rows.length===0?e(Vn,4):m(X).mode===`results`?e(Hn,5):m(Xt).length===0?e(Un,6):e(Wn,-1)}),n(Fn),n(pn);var Gn=w(pn,2),Kn=k(Gn),qn=e=>{var t=Tt(),r=k(t);Ae(r,{class:`h-6 w-6`}),C(4),n(t),l(e,t)},Jn=e=>{var t=Et(),r=k(t);H(r,{class:`h-4 w-4 animate-spin`}),C(),n(t),l(e,t)},Yn=e=>{var t=Dt(),r=w(k(t),4),i=_(r,!0),o=w(r,2),s=e=>{V(e,{variant:`outline`,size:`sm`,onclick:()=>Yt(m(Y),m(F)),children:(e,t)=>{C();var n=f(`Retry`);l(e,n)},$$slots:{default:!0}})};c(o,e=>{m(Y)&&m(F)&&e(s)}),n(t),D(()=>a(i,m(K))),l(e,t)},Xn=e=>{let r=x(()=>m($t));var i=Bt(),u=k(i),d=k(u),p=k(d),g=k(p);Pe(g,{class:`h-4 w-4`}),n(p);var b=w(p,2),T=k(b),E=e=>{De(e,{class:`h-8 text-base font-semibold`,"aria-label":`Skill name`,get value(){return m(qe)},set value(e){y(qe,e,!0)}})},O=e=>{var t=Ot(),n=_(t,!0);D(()=>a(n,m(G).name)),l(e,t)};c(T,e=>{m(r)?e(E):e(O,-1)});var ne=w(T,2),A=e=>{var t=kt();h(t),v(t,()=>m(Ye),e=>y(Ye,e)),l(e,t)},j=e=>{var t=At(),n=_(t,!0);D(()=>a(n,m(G).description)),l(e,t)};c(ne,e=>{m(r)?e(A):e(j,-1)}),n(b);var re=w(b,2),N=k(re),P=e=>{V(e,{size:`sm`,class:`h-8 gap-1.5`,onclick:dn,get disabled(){return m(Ke)},children:(e,t)=>{var n=ae(),r=M(n),i=e=>{var t=jt(),n=M(t);H(n,{class:`h-3.5 w-3.5 animate-spin`}),C(),l(e,t)},a=e=>{var t=f(`Save`);l(e,t)};c(r,e=>{m(Ke)?e(i):e(a,-1)}),l(e,n)},$$slots:{default:!0}})};c(N,e=>{m(r)&&e(P)});var oe=w(N,2);V(oe,{variant:`outline`,size:`sm`,class:`h-8 gap-1.5`,onclick:un,get disabled(){return m(Ge)},children:(e,t)=>{var n=Mt(),r=M(n),i=e=>{H(e,{class:`h-3.5 w-3.5 animate-spin`})},a=e=>{et(e,{class:`h-3.5 w-3.5`})};c(r,e=>{m(Ge)?e(i):e(a,-1)}),C(),l(e,n)},$$slots:{default:!0}});var se=w(oe,2);{let e=x(()=>m(G).disabled?`default`:`outline`);V(se,{size:`sm`,get variant(){return m(e)},class:`h-8 gap-1.5`,get disabled(){return m(J)},onclick:on,children:(e,t)=>{var n=lt(),r=M(n),i=e=>{H(e,{class:`h-3.5 w-3.5 animate-spin`})},o=e=>{Qe(e,{class:`h-3.5 w-3.5`})};c(r,e=>{m(J)?e(i):e(o,-1)});var s=w(r);D(()=>a(s,` ${m(G).disabled?`Enable`:`Disable`}`)),l(e,n)},$$slots:{default:!0}})}n(re),n(d);var ce=w(d,2),le=k(ce);U(le,{variant:`secondary`,children:(e,t)=>{C();var n=f();D(()=>a(n,m(G).provider)),l(e,n)},$$slots:{default:!0}});var ue=w(le,2);U(ue,{variant:`outline`,children:(e,t)=>{C();var n=f();D(()=>a(n,m(G).directoryName)),l(e,n)},$$slots:{default:!0}});var de=w(ue,2),F=e=>{U(e,{variant:`outline`,class:`text-amber-700 dark:text-amber-300`,children:(e,t)=>{C();var n=f(`Disabled`);l(e,n)},$$slots:{default:!0}})};c(de,e=>{m(G).disabled&&e(F)}),n(ce),n(u),te(u,e=>y(Ze,e),()=>m(Ze));var fe=w(u,2),pe=k(fe),me=e=>{var r=Lt(),i=k(r),o=k(i),s=e=>{var t=Nt(),n=M(t);je(n,{class:`h-4 w-4 text-emerald-600`}),C(),l(e,t)},u=e=>{var t=Pt();et(M(t),{class:`h-4 w-4 text-destructive`}),C(),l(e,t)};c(o,e=>{m(q).success?e(s):e(u,-1)}),n(i);var d=w(i,2);t(d,17,()=>m(q).errors,S,(e,t)=>{var n=Ft(),r=_(n,!0);D(()=>a(r,m(t))),l(e,n)});var f=w(d,2);t(f,17,()=>m(q).warnings,S,(e,t)=>{var n=It(),r=_(n,!0);D(()=>a(r,m(t))),l(e,n)}),n(r),l(e,r)};c(pe,e=>{m(q)&&e(me)});var he=w(pe,2),ge=e=>{var r=zt(),i=w(k(r),2);t(i,21,()=>Object.entries(m(Z).frontmatter),S,(e,t,r)=>{var i=x(()=>s(m(t),2));let o=()=>m(i)[0],c=()=>m(i)[1];var u=Rt();ie(u,1,`grid grid-cols-[120px_minmax(0,1fr)] ${r>0?`border-t border-border`:``}`);var d=k(u),f=_(d,!0),p=w(d,2),h=_(p,!0);n(u),D(e=>{a(f,o()),a(h,e)},[()=>c()===null?`null`:String(c())]),l(e,u)}),n(i),n(r),l(e,r)};c(he,e=>{m(Z)&&e(ge)});var I=w(he,2),L=w(k(I),2);ee(L,()=>m(Qt),!0),n(L),n(I),n(fe),n(i),o(`click`,p,rn),l(e,i)};c(Kn,e=>{m(F)?m(Ue)?e(Jn,1):m(K)?e(Yn,2):m(G)&&e(Xn,3):e(qn)}),n(Gn),n(fn),D(()=>{ie(pn,1,`provider-list flex min-h-0 flex-col border-r border-border ${m(Te)===`detail`?`provider-list-hidden`:``}`,`svelte-9qjypz`),a(_n,m(j)??`—`),b(En,m(L)),ie(Gn,1,`provider-detail flex min-h-0 flex-col ${m(Te)===`list`?`provider-detail-hidden`:``}`,`svelte-9qjypz`)}),o(`input`,En,e=>nn(e.currentTarget.value)),o(`click`,Dn,()=>void ge()),l(r,fn),d()}p([`input`,`click`]);export{Ht as default};
@@ -1,2 +1,2 @@
1
- import{A as e,At as t,B as n,Ct as r,F as i,G as a,K as o,N as s,R as c,St as l,W as u,X as d,ct as f,d as p,ft as m,gt as h,h as ee,lt as g,m as te,mt as _,nt as v,ot as y,p as b,rt as x,st as S,ut as ne,x as re}from"./CmCJ0SKP.js";import{t as C}from"./DFDHkP9N.js";import"./xihTtKlq.js";import{t as w}from"./K56ab8zF.js";import"./D-ihBChi.js";import{a as ie,i as T,r as E}from"./hrRIAQd7.js";import{a as ae,c as D,l as oe,n as O,s as k,u as A}from"./B0yogbIO.js";import{a as j,r as se,s as ce}from"./CY3MARMs.js";var M=[{id:`anthropics-skills`,label:`Anthropic Skills`,gitUrl:`https://github.com/anthropics/skills.git`,description:`Anthropic 官方维护的 Agent skills 集合。`,homepage:`https://github.com/anthropics/skills`},{id:`vercel-labs-skills`,label:`Vercel Labs Skills`,gitUrl:`https://github.com/vercel-labs/skills.git`,description:`Vercel Labs 维护的社区 Agent skills 集合。`,homepage:`https://github.com/vercel-labs/skills`}];function N(e){return M.find(t=>t.id===e)}var le=n(`<p class="truncate font-mono text-[11px] text-muted-foreground"> </p>`),ue=n(`<span class="shrink-0 text-[11px] text-muted-foreground"> </span>`),de=n(`<div class="flex shrink-0 items-center gap-3 border-b border-amber-500/40 bg-amber-500/10 px-4 py-2.5 text-xs" role="alert" data-testid="session-expired"><span class="min-w-0 flex-1"><span class="font-medium">Scan session expired.</span> <span class="text-muted-foreground">The pinned commit is no longer held by the daemon. Rescan this repository to continue.</span></span> <button type="button" class="h-7 shrink-0 rounded-md border border-border bg-background px-3 text-[11px] font-medium transition-colors hover:bg-muted/50 disabled:opacity-50">Rescan</button></div>`),fe=n(`<p class="px-4 py-8 text-center text-xs text-muted-foreground">Scanning…</p>`),pe=n(`<div class="px-4 text-center"><button type="button" class="rounded-md border border-border px-3 py-1 text-xs hover:bg-muted/50">Retry scan</button></div>`),me=n(`<p class="px-4 py-8 text-center text-xs text-destructive"> </p> <!>`,1),he=n(`<p class="px-4 py-8 text-center text-xs text-muted-foreground">No scan yet.</p>`),ge=n(`<p class="px-4 py-8 text-center text-xs text-muted-foreground">No installable skills found in this repository.</p>`),_e=n(`<button type="button" class="hover:text-foreground">Clear</button>`),ve=n(`<span class="mt-0.5 block text-[10px] text-amber-600 dark:text-amber-400"> </span>`),ye=n(`<button type="button"><input type="checkbox" class="mt-0.5 h-3.5 w-3.5" aria-label="Select skill"/> <span class="min-w-0 flex-1"><span class="block truncate text-[13px] font-medium text-foreground"> </span> <span class="mt-0.5 line-clamp-2 block text-[11px] text-muted-foreground"> </span> <!></span></button>`),be=n(`<p class="mt-2 text-xs text-muted-foreground">Loading…</p>`),xe=n(`<pre class="mt-2 max-h-48 overflow-auto rounded bg-muted/50 p-2 text-[11px] leading-4"> </pre>`),Se=n(`<p class="mt-2 text-xs text-muted-foreground">Select a skill to preview.</p>`),Ce=n(`<p class="mt-2 text-xs text-muted-foreground">No writable workspace providers. Import a directory workspace first.</p>`),we=n(`<li><label class="flex items-center gap-2 text-xs"><input type="checkbox" class="h-3.5 w-3.5"/> <span class="truncate"> </span></label></li>`),Te=n(`<ul class="mt-2 space-y-1"></ul>`),Ee=n(`<p class="mt-2 break-words text-xs text-destructive"> </p>`),De=n(`<div class="p-3 text-xs"><h2 class="font-medium text-muted-foreground">Dry-run preview</h2> <p class="mt-1"> </p></div>`),Oe=n(`<div class="flex items-center justify-between gap-2 rounded border border-border px-2 py-1"><span class="truncate"> </span> <button type="button" class="shrink-0 rounded bg-primary/10 px-2 py-0.5 text-[10px] text-primary hover:bg-primary/20">View in Workspaces</button></div>`),ke=n(`<div class="mt-2 space-y-1"></div>`),Ae=n(`<div class="p-3 text-xs"><h2 class="font-medium text-muted-foreground"> </h2> <!></div>`),je=n(`<div class="flex min-h-0 flex-1"><section class="flex w-1/2 min-w-0 flex-col border-r border-border"><header class="flex shrink-0 items-center justify-between px-3 py-2 text-xs text-muted-foreground"><span> </span> <!></header> <div class="min-h-0 flex-1 overflow-y-auto"></div></section> <section class="flex w-1/2 min-w-0 flex-col overflow-y-auto"><div class="border-b border-border p-3"><h2 class="text-xs font-medium text-muted-foreground">Preview</h2> <!></div> <div class="border-b border-border p-3"><h2 class="text-xs font-medium text-muted-foreground"> </h2> <!> <div class="mt-2 flex gap-2"><button type="button" class="h-7 rounded-md border border-border px-2 text-[11px] hover:bg-muted/50 disabled:opacity-50">Dry-run</button> <button type="button" class="h-7 rounded-md bg-primary px-3 text-[11px] font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"> </button></div> <!></div> <!> <!></section></div>`),Me=n(`<div class="flex h-full flex-col overflow-hidden"><header class="flex shrink-0 items-center gap-3 border-b border-border px-4 py-3"><div class="min-w-0 flex-1"><h1 class="truncate text-sm font-semibold"> </h1> <!></div> <!> <form class="flex shrink-0 items-center gap-1"><input placeholder="branch / tag" title="Optional Git ref to scan (defaults to the repository default branch)" aria-label="Git ref for scanning" class="h-7 w-28 rounded-md border border-input bg-input/20 px-2 font-mono text-[11px] outline-none placeholder:text-muted-foreground focus-visible:border-ring"/> <button type="submit" class="h-7 rounded-md border border-border px-2 text-[11px] transition-colors hover:bg-muted/50 disabled:opacity-50"> </button></form> <button type="button" class="shrink-0 rounded-md border border-border px-2 py-1 text-[11px] hover:bg-muted/50">Discover</button></header> <!> <!></div>`);function P(n,u){r(u,!0);let M=E(),P=T(),F=h(()=>M?.()?.sourceId),Ne=h(()=>d(F)?N(d(F)):void 0),Pe=h(()=>d(F)?ce.user.find(e=>e.id===d(F)):void 0),Fe=h(()=>d(Ne)?.label??d(Pe)?.label??d(F)??`Repository`),I=h(()=>d(Ne)?.gitUrl??d(Pe)?.gitUrl),L=_(null),R=_(!1),z=_(null),B=_(null),V=_(!1),H=_(null),U=_(null),W=_(!1),G=_(null),K=_(``),Ie=h(()=>P?.()?.selected??``),q=h(()=>{let e=d(Ie).split(`,`).map(e=>e.trim()).filter(Boolean);return new Set(e)}),Le=h(()=>P?.()?.skill),J=_(ne([]));x(()=>{j()}),x(()=>{O()});let Re=h(ae),ze=_(null);x(()=>{d(F)&&d(I)&&(d(ze)===d(F)&&d(L)||(m(ze,d(F),!0),Y(d(I))))});async function Y(e,t){m(R,!0),m(z,null),m(L,null),m(B,null),m(H,null),m(U,null),m(G,null);let n=t?.trim()||void 0,{scan:r,error:i}=await A(e,n);m(L,r,!0),m(z,i,!0),r&&d(F)&&se(d(F),{skillCount:r.skills.length,commit:r.commit}),m(R,!1)}x(()=>{if(!d(L)||!d(Le)){m(B,null);return}let e=d(Le);if(!d(L).skills.some(t=>t.id===e)){m(B,null);return}Be(d(L).sessionId,e)});async function Be(e,t){m(V,!0),m(H,null);let{preview:n,error:r}=await oe(e,t);m(B,n,!0),m(H,r,!0),m(V,!1)}function Ve(e){let t=new Set(d(q));t.has(e.id)?t.delete(e.id):t.add(e.id),He(t)}function He(e){let t=[...e].join(`,`),n=new URLSearchParams(w.url.search);t?n.set(`selected`,t):n.delete(`selected`);let r=n.toString();C(`/repository/scan/${encodeURIComponent(d(F)??``)}${r?`?${r}`:``}`,{replaceState:!0})}function Ue(e){let t=new URLSearchParams(w.url.search);t.set(`skill`,e.id),C(`/repository/scan/${encodeURIComponent(d(F)??``)}?${t.toString()}`,{replaceState:!0})}function We(e){let t=d(J).some(t=>t.workspaceId===e.workspaceId&&t.providerId===e.providerId);m(J,t?d(J).filter(t=>t.workspaceId!==e.workspaceId||t.providerId!==e.providerId):[...d(J),e],!0)}function Ge(e){return d(J).some(t=>t.workspaceId===e.workspaceId&&t.providerId===e.providerId)}let Ke=h(()=>d(L)?d(L).skills.filter(e=>d(q).has(e.id)):[]),X=h(()=>d(Ke).filter(e=>e.installable));async function qe(e){if(!d(L)||d(X).length===0||d(J).length===0)return;m(W,!0),m(G,null),m(U,null);let t=d(X).map(e=>e.id),{result:n,error:r}=await k({sessionId:d(L).sessionId,skillIds:t,targets:d(J),dryRun:e});m(U,n,!0),m(G,r,!0),m(W,!1),n&&!e&&await O()}let Je=h(()=>D(d(H))||D(d(G))),Z=h(()=>d(U)?.kind===`result`?d(U):null),Ye=h(()=>d(Z)?d(Z).results.filter(e=>e.status===`installed`||e.status===`overwritten`):[]);function Xe(e,t,n){ie(`workspaces.provider`,{wsId:e,providerId:t},{skill:n})}var Ze=Me(),Qe=y(Ze),Q=y(Qe),$e=y(Q),et=f($e,!0),tt=g($e,2),nt=e=>{var t=le(),n=f(t,!0);v(()=>i(n,d(I))),c(e,t)};s(tt,e=>{d(I)&&e(nt)}),t(Q);var rt=g(Q,2),it=e=>{var t=ue(),n=f(t);v(e=>i(n,`${d(L).skills.length??``} skills · commit ${e??``}`),[()=>d(L).commit.slice(0,12)]),c(e,t)};s(rt,e=>{d(L)&&e(it)});var $=g(rt,2),at=y($);b(at);var ot=g(at,2),st=f(ot,!0);t($);var ct=g($,2);t(Qe);var lt=g(Qe,2),ut=e=>{var n=de(),r=g(y(n),2);t(n),v(()=>r.disabled=d(R)||!d(I)),a(`click`,r,()=>d(I)&&void Y(d(I),d(K))),c(e,n)};s(lt,e=>{d(Je)&&e(ut)});var dt=g(lt,2),ft=e=>{var t=fe();c(e,t)},pt=e=>{var t=me(),n=S(t),r=f(n,!0),o=g(n,2),l=e=>{var t=pe(),n=f(t);a(`click`,n,()=>Y(d(I))),c(e,t)};s(o,e=>{d(I)&&e(l)}),v(()=>i(r,d(z).message)),c(e,t)},mt=e=>{var t=he();c(e,t)},ht=e=>{var t=ge();c(e,t)},gt=n=>{var r=je(),o=y(r),l=y(o),u=y(l),p=f(u),m=g(u,2),h=e=>{var t=_e();a(`click`,t,()=>He(new Set)),c(e,t)};s(m,e=>{d(q).size>0&&e(h)}),t(l);var _=g(l,2);e(_,21,()=>d(L).skills,e=>e.id,(e,n)=>{var r=ye(),o=y(r);b(o);var l=g(o,2),u=y(l),p=f(u,!0),m=g(u,2),h=f(m,!0),_=g(m,2),x=e=>{var t=ve(),r=f(t,!0);v(e=>i(r,e),[()=>d(n).issues.join(` `)||`Not installable`]),c(e,t)};s(_,e=>{d(n).installable||e(x)}),t(l),t(r),v((e,t,a)=>{re(r,1,`flex w-full items-start gap-2 border-b border-border/70 px-3 py-2 text-left transition-colors ${e??``}`),te(r,`aria-pressed`,t),ee(o,a),i(p,d(n).name),i(h,d(n).description||`No description`)},[()=>d(q).has(d(n).id)?`bg-accent`:`hover:bg-accent/60`,()=>d(q).has(d(n).id),()=>d(q).has(d(n).id)]),a(`click`,r,()=>Ue(d(n))),a(`click`,o,e=>{e.stopPropagation(),Ve(d(n))}),c(e,r)}),t(_),t(o);var x=g(o,2),S=y(x),ne=g(y(S),2),C=e=>{var t=be();c(e,t)},w=e=>{var t=xe(),n=f(t,!0);v(()=>i(n,d(B).content)),c(e,t)},ie=e=>{var t=Se();c(e,t)};s(ne,e=>{d(V)?e(C):d(B)?e(w,1):e(ie,-1)}),t(S);var T=g(S,2),E=y(T),ae=f(E),D=g(E,2),oe=e=>{var t=Ce();c(e,t)},O=n=>{var r=Te();e(r,21,()=>d(Re),e=>e.target.workspaceId+`:`+e.target.providerId,(e,n)=>{var r=we(),o=y(r),s=y(o);b(s);var l=g(s,2),u=f(l,!0);t(o),t(r),v(e=>{ee(s,e),i(u,d(n).label)},[()=>Ge(d(n).target)]),a(`change`,s,()=>We(d(n).target)),c(e,r)}),t(r),c(n,r)};s(D,e=>{d(Re).length===0?e(oe):e(O,-1)});var k=g(D,2),A=y(k),j=g(A,2),se=f(j,!0);t(k);var ce=g(k,2),M=e=>{var t=Ee(),n=f(t,!0);v(()=>i(n,d(G).message)),c(e,t)};s(ce,e=>{d(G)&&!d(Je)&&e(M)}),t(T);var N=g(T,2),le=e=>{var n=De(),r=g(y(n),2),a=f(r);t(n),v(()=>i(a,`${d(U).totalInstalls??``} install(s) planned across ${d(U).destinations.length??``} destination(s).`)),c(e,n)};s(N,e=>{d(U)?.kind===`preview`&&e(le)});var ue=g(N,2),de=n=>{var r=Ae(),o=y(r),l=f(o),u=g(o,2),p=n=>{var r=ke();e(r,21,()=>d(Ye),e=>e.target.workspaceId+`:`+e.target.providerId+`:`+e.skillId,(e,n)=>{var r=Oe(),o=y(r),s=f(o),l=g(o,2);t(r),v(()=>i(s,`${d(n).skill??``} → ${d(n).target.workspaceId??``}/${d(n).target.providerId??``}`)),a(`click`,l,()=>Xe(d(n).target.workspaceId,d(n).target.providerId,d(n).skillId)),c(e,r)}),t(r),c(n,r)};s(u,e=>{d(Ye).length>0&&e(p)}),t(r),v(()=>i(l,`Installed ${d(Z).installed??``} · overwritten ${d(Z).overwritten??``} · skipped
2
- ${d(Z).skipped??``} · failed ${d(Z).failed??``}`)),c(n,r)};s(ue,e=>{d(Z)&&e(de)}),t(x),t(r),v(()=>{i(p,`${d(q).size??``} selected`),i(ae,`Install targets (${d(J).length??``})`),A.disabled=d(W)||d(X).length===0||d(J).length===0,j.disabled=d(W)||d(X).length===0||d(J).length===0,i(se,d(W)?`Installing…`:`Install`)}),a(`click`,A,()=>qe(!0)),a(`click`,j,()=>qe(!1)),c(n,r)};s(dt,e=>{d(R)?e(ft):d(z)?e(pt,1):d(L)?d(L).skills.length===0?e(ht,3):e(gt,-1):e(mt,2)}),t(Ze),v(()=>{i(et,d(Fe)),ot.disabled=d(R)||!d(I),i(st,d(R)?`Scanning…`:`Rescan`)}),o(`submit`,$,e=>{e.preventDefault(),d(I)&&Y(d(I),d(K))}),p(at,()=>d(K),e=>m(K,e)),a(`click`,ct,()=>C(`/repository`)),c(n,Ze),l()}u([`click`,`change`]);export{P as default};
1
+ import{A as e,At as t,B as n,Ct as r,F as i,G as a,K as o,N as s,R as c,St as l,W as u,X as d,ct as f,d as p,ft as m,gt as h,h as ee,lt as g,m as te,mt as _,nt as v,ot as y,p as b,rt as x,st as S,ut as ne,x as re}from"./CmCJ0SKP.js";import{t as C}from"./8hp3I3ac.js";import"./xihTtKlq.js";import{t as w}from"./B0-OMyfG.js";import"./DXKynIUR.js";import{a as ie,i as T,r as E}from"./oxP0dM6z.js";import{c as ae,d as D,l as O,n as k,o as A,u as j}from"./D3qCeXbe.js";import{a as M,r as oe,s as se}from"./CgxChsUX.js";var N=[{id:`anthropics-skills`,label:`Anthropic Skills`,gitUrl:`https://github.com/anthropics/skills.git`,description:`Anthropic 官方维护的 Agent skills 集合。`,homepage:`https://github.com/anthropics/skills`},{id:`vercel-labs-skills`,label:`Vercel Labs Skills`,gitUrl:`https://github.com/vercel-labs/skills.git`,description:`Vercel Labs 维护的社区 Agent skills 集合。`,homepage:`https://github.com/vercel-labs/skills`}];function ce(e){return N.find(t=>t.id===e)}var le=n(`<p class="truncate font-mono text-[11px] text-muted-foreground"> </p>`),ue=n(`<span class="shrink-0 text-[11px] text-muted-foreground"> </span>`),de=n(`<div class="flex shrink-0 items-center gap-3 border-b border-amber-500/40 bg-amber-500/10 px-4 py-2.5 text-xs" role="alert" data-testid="session-expired"><span class="min-w-0 flex-1"><span class="font-medium">Scan session expired.</span> <span class="text-muted-foreground">The pinned commit is no longer held by the daemon. Rescan this repository to continue.</span></span> <button type="button" class="h-7 shrink-0 rounded-md border border-border bg-background px-3 text-[11px] font-medium transition-colors hover:bg-muted/50 disabled:opacity-50">Rescan</button></div>`),fe=n(`<p class="px-4 py-8 text-center text-xs text-muted-foreground">Scanning…</p>`),pe=n(`<div class="px-4 text-center"><button type="button" class="rounded-md border border-border px-3 py-1 text-xs hover:bg-muted/50">Retry scan</button></div>`),me=n(`<p class="px-4 py-8 text-center text-xs text-destructive"> </p> <!>`,1),he=n(`<p class="px-4 py-8 text-center text-xs text-muted-foreground">No scan yet.</p>`),ge=n(`<p class="px-4 py-8 text-center text-xs text-muted-foreground">No installable skills found in this repository.</p>`),_e=n(`<button type="button" class="hover:text-foreground">Clear</button>`),ve=n(`<span class="mt-0.5 block text-[10px] text-amber-600 dark:text-amber-400"> </span>`),ye=n(`<button type="button"><input type="checkbox" class="mt-0.5 h-3.5 w-3.5" aria-label="Select skill"/> <span class="min-w-0 flex-1"><span class="block truncate text-[13px] font-medium text-foreground"> </span> <span class="mt-0.5 line-clamp-2 block text-[11px] text-muted-foreground"> </span> <!></span></button>`),be=n(`<p class="mt-2 text-xs text-muted-foreground">Loading…</p>`),xe=n(`<pre class="mt-2 max-h-48 overflow-auto rounded bg-muted/50 p-2 text-[11px] leading-4"> </pre>`),Se=n(`<p class="mt-2 text-xs text-muted-foreground">Select a skill to preview.</p>`),Ce=n(`<p class="mt-2 text-xs text-muted-foreground">No writable workspace providers. Import a directory workspace first.</p>`),we=n(`<li><label class="flex items-center gap-2 text-xs"><input type="checkbox" class="h-3.5 w-3.5"/> <span class="truncate"> </span></label></li>`),Te=n(`<ul class="mt-2 space-y-1"></ul>`),Ee=n(`<p class="mt-2 break-words text-xs text-destructive"> </p>`),De=n(`<div class="p-3 text-xs"><h2 class="font-medium text-muted-foreground">Dry-run preview</h2> <p class="mt-1"> </p></div>`),Oe=n(`<div class="flex items-center justify-between gap-2 rounded border border-border px-2 py-1"><span class="truncate"> </span> <button type="button" class="shrink-0 rounded bg-primary/10 px-2 py-0.5 text-[10px] text-primary hover:bg-primary/20">View in Workspaces</button></div>`),ke=n(`<div class="mt-2 space-y-1"></div>`),Ae=n(`<div class="p-3 text-xs"><h2 class="font-medium text-muted-foreground"> </h2> <!></div>`),je=n(`<div class="flex min-h-0 flex-1"><section class="flex w-1/2 min-w-0 flex-col border-r border-border"><header class="flex shrink-0 items-center justify-between px-3 py-2 text-xs text-muted-foreground"><span> </span> <!></header> <div class="min-h-0 flex-1 overflow-y-auto"></div></section> <section class="flex w-1/2 min-w-0 flex-col overflow-y-auto"><div class="border-b border-border p-3"><h2 class="text-xs font-medium text-muted-foreground">Preview</h2> <!></div> <div class="border-b border-border p-3"><h2 class="text-xs font-medium text-muted-foreground"> </h2> <!> <div class="mt-2 flex gap-2"><button type="button" class="h-7 rounded-md border border-border px-2 text-[11px] hover:bg-muted/50 disabled:opacity-50">Dry-run</button> <button type="button" class="h-7 rounded-md bg-primary px-3 text-[11px] font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"> </button></div> <!></div> <!> <!></section></div>`),Me=n(`<div class="flex h-full flex-col overflow-hidden"><header class="flex shrink-0 items-center gap-3 border-b border-border px-4 py-3"><div class="min-w-0 flex-1"><h1 class="truncate text-sm font-semibold"> </h1> <!></div> <!> <form class="flex shrink-0 items-center gap-1"><input placeholder="branch / tag" title="Optional Git ref to scan (defaults to the repository default branch)" aria-label="Git ref for scanning" class="h-7 w-28 rounded-md border border-input bg-input/20 px-2 font-mono text-[11px] outline-none placeholder:text-muted-foreground focus-visible:border-ring"/> <button type="submit" class="h-7 rounded-md border border-border px-2 text-[11px] transition-colors hover:bg-muted/50 disabled:opacity-50"> </button></form> <button type="button" class="shrink-0 rounded-md border border-border px-2 py-1 text-[11px] hover:bg-muted/50">Discover</button></header> <!> <!></div>`);function P(n,u){r(u,!0);let N=E(),P=T(),F=h(()=>N?.()?.sourceId),Ne=h(()=>d(F)?ce(d(F)):void 0),Pe=h(()=>d(F)?se.user.find(e=>e.id===d(F)):void 0),Fe=h(()=>d(Ne)?.label??d(Pe)?.label??d(F)??`Repository`),I=h(()=>d(Ne)?.gitUrl??d(Pe)?.gitUrl),L=_(null),R=_(!1),z=_(null),B=_(null),V=_(!1),H=_(null),U=_(null),W=_(!1),G=_(null),K=_(``),Ie=h(()=>P?.()?.selected??``),q=h(()=>{let e=d(Ie).split(`,`).map(e=>e.trim()).filter(Boolean);return new Set(e)}),Le=h(()=>P?.()?.skill),J=_(ne([]));x(()=>{M()}),x(()=>{k()});let Re=h(A),ze=_(null);x(()=>{d(F)&&d(I)&&(d(ze)===d(F)&&d(L)||(m(ze,d(F),!0),Y(d(I))))});async function Y(e,t){m(R,!0),m(z,null),m(L,null),m(B,null),m(H,null),m(U,null),m(G,null);let n=t?.trim()||void 0,{scan:r,error:i}=await D(e,n);m(L,r,!0),m(z,i,!0),r&&d(F)&&oe(d(F),{skillCount:r.skills.length,commit:r.commit}),m(R,!1)}x(()=>{if(!d(L)||!d(Le)){m(B,null);return}let e=d(Le);if(!d(L).skills.some(t=>t.id===e)){m(B,null);return}Be(d(L).sessionId,e)});async function Be(e,t){m(V,!0),m(H,null);let{preview:n,error:r}=await j(e,t);m(B,n,!0),m(H,r,!0),m(V,!1)}function Ve(e){let t=new Set(d(q));t.has(e.id)?t.delete(e.id):t.add(e.id),He(t)}function He(e){let t=[...e].join(`,`),n=new URLSearchParams(w.url.search);t?n.set(`selected`,t):n.delete(`selected`);let r=n.toString();C(`/repository/scan/${encodeURIComponent(d(F)??``)}${r?`?${r}`:``}`,{replaceState:!0})}function Ue(e){let t=new URLSearchParams(w.url.search);t.set(`skill`,e.id),C(`/repository/scan/${encodeURIComponent(d(F)??``)}?${t.toString()}`,{replaceState:!0})}function We(e){let t=d(J).some(t=>t.workspaceId===e.workspaceId&&t.providerId===e.providerId);m(J,t?d(J).filter(t=>t.workspaceId!==e.workspaceId||t.providerId!==e.providerId):[...d(J),e],!0)}function Ge(e){return d(J).some(t=>t.workspaceId===e.workspaceId&&t.providerId===e.providerId)}let Ke=h(()=>d(L)?d(L).skills.filter(e=>d(q).has(e.id)):[]),X=h(()=>d(Ke).filter(e=>e.installable));async function qe(e){if(!d(L)||d(X).length===0||d(J).length===0)return;m(W,!0),m(G,null),m(U,null);let t=d(X).map(e=>e.id),{result:n,error:r}=await ae({sessionId:d(L).sessionId,skillIds:t,targets:d(J),dryRun:e});m(U,n,!0),m(G,r,!0),m(W,!1),n&&!e&&await k()}let Je=h(()=>O(d(H))||O(d(G))),Z=h(()=>d(U)?.kind===`result`?d(U):null),Ye=h(()=>d(Z)?d(Z).results.filter(e=>e.status===`installed`||e.status===`overwritten`):[]);function Xe(e,t,n){ie(`workspaces.provider`,{wsId:e,providerId:t},{skill:n})}var Ze=Me(),Qe=y(Ze),Q=y(Qe),$e=y(Q),et=f($e,!0),tt=g($e,2),nt=e=>{var t=le(),n=f(t,!0);v(()=>i(n,d(I))),c(e,t)};s(tt,e=>{d(I)&&e(nt)}),t(Q);var rt=g(Q,2),it=e=>{var t=ue(),n=f(t);v(e=>i(n,`${d(L).skills.length??``} skills · commit ${e??``}`),[()=>d(L).commit.slice(0,12)]),c(e,t)};s(rt,e=>{d(L)&&e(it)});var $=g(rt,2),at=y($);b(at);var ot=g(at,2),st=f(ot,!0);t($);var ct=g($,2);t(Qe);var lt=g(Qe,2),ut=e=>{var n=de(),r=g(y(n),2);t(n),v(()=>r.disabled=d(R)||!d(I)),a(`click`,r,()=>d(I)&&void Y(d(I),d(K))),c(e,n)};s(lt,e=>{d(Je)&&e(ut)});var dt=g(lt,2),ft=e=>{var t=fe();c(e,t)},pt=e=>{var t=me(),n=S(t),r=f(n,!0),o=g(n,2),l=e=>{var t=pe(),n=f(t);a(`click`,n,()=>Y(d(I))),c(e,t)};s(o,e=>{d(I)&&e(l)}),v(()=>i(r,d(z).message)),c(e,t)},mt=e=>{var t=he();c(e,t)},ht=e=>{var t=ge();c(e,t)},gt=n=>{var r=je(),o=y(r),l=y(o),u=y(l),p=f(u),m=g(u,2),h=e=>{var t=_e();a(`click`,t,()=>He(new Set)),c(e,t)};s(m,e=>{d(q).size>0&&e(h)}),t(l);var _=g(l,2);e(_,21,()=>d(L).skills,e=>e.id,(e,n)=>{var r=ye(),o=y(r);b(o);var l=g(o,2),u=y(l),p=f(u,!0),m=g(u,2),h=f(m,!0),_=g(m,2),x=e=>{var t=ve(),r=f(t,!0);v(e=>i(r,e),[()=>d(n).issues.join(` `)||`Not installable`]),c(e,t)};s(_,e=>{d(n).installable||e(x)}),t(l),t(r),v((e,t,a)=>{re(r,1,`flex w-full items-start gap-2 border-b border-border/70 px-3 py-2 text-left transition-colors ${e??``}`),te(r,`aria-pressed`,t),ee(o,a),i(p,d(n).name),i(h,d(n).description||`No description`)},[()=>d(q).has(d(n).id)?`bg-accent`:`hover:bg-accent/60`,()=>d(q).has(d(n).id),()=>d(q).has(d(n).id)]),a(`click`,r,()=>Ue(d(n))),a(`click`,o,e=>{e.stopPropagation(),Ve(d(n))}),c(e,r)}),t(_),t(o);var x=g(o,2),S=y(x),ne=g(y(S),2),C=e=>{var t=be();c(e,t)},w=e=>{var t=xe(),n=f(t,!0);v(()=>i(n,d(B).content)),c(e,t)},ie=e=>{var t=Se();c(e,t)};s(ne,e=>{d(V)?e(C):d(B)?e(w,1):e(ie,-1)}),t(S);var T=g(S,2),E=y(T),ae=f(E),D=g(E,2),O=e=>{var t=Ce();c(e,t)},k=n=>{var r=Te();e(r,21,()=>d(Re),e=>e.target.workspaceId+`:`+e.target.providerId,(e,n)=>{var r=we(),o=y(r),s=y(o);b(s);var l=g(s,2),u=f(l,!0);t(o),t(r),v(e=>{ee(s,e),i(u,d(n).label)},[()=>Ge(d(n).target)]),a(`change`,s,()=>We(d(n).target)),c(e,r)}),t(r),c(n,r)};s(D,e=>{d(Re).length===0?e(O):e(k,-1)});var A=g(D,2),j=y(A),M=g(j,2),oe=f(M,!0);t(A);var se=g(A,2),N=e=>{var t=Ee(),n=f(t,!0);v(()=>i(n,d(G).message)),c(e,t)};s(se,e=>{d(G)&&!d(Je)&&e(N)}),t(T);var ce=g(T,2),le=e=>{var n=De(),r=g(y(n),2),a=f(r);t(n),v(()=>i(a,`${d(U).totalInstalls??``} install(s) planned across ${d(U).destinations.length??``} destination(s).`)),c(e,n)};s(ce,e=>{d(U)?.kind===`preview`&&e(le)});var ue=g(ce,2),de=n=>{var r=Ae(),o=y(r),l=f(o),u=g(o,2),p=n=>{var r=ke();e(r,21,()=>d(Ye),e=>e.target.workspaceId+`:`+e.target.providerId+`:`+e.skillId,(e,n)=>{var r=Oe(),o=y(r),s=f(o),l=g(o,2);t(r),v(()=>i(s,`${d(n).skill??``} → ${d(n).target.workspaceId??``}/${d(n).target.providerId??``}`)),a(`click`,l,()=>Xe(d(n).target.workspaceId,d(n).target.providerId,d(n).skillId)),c(e,r)}),t(r),c(n,r)};s(u,e=>{d(Ye).length>0&&e(p)}),t(r),v(()=>i(l,`Installed ${d(Z).installed??``} · overwritten ${d(Z).overwritten??``} · skipped
2
+ ${d(Z).skipped??``} · failed ${d(Z).failed??``}`)),c(n,r)};s(ue,e=>{d(Z)&&e(de)}),t(x),t(r),v(()=>{i(p,`${d(q).size??``} selected`),i(ae,`Install targets (${d(J).length??``})`),j.disabled=d(W)||d(X).length===0||d(J).length===0,M.disabled=d(W)||d(X).length===0||d(J).length===0,i(oe,d(W)?`Installing…`:`Install`)}),a(`click`,j,()=>qe(!0)),a(`click`,M,()=>qe(!1)),c(n,r)};s(dt,e=>{d(R)?e(ft):d(z)?e(pt,1):d(L)?d(L).skills.length===0?e(ht,3):e(gt,-1):e(mt,2)}),t(Ze),v(()=>{i(et,d(Fe)),ot.disabled=d(R)||!d(I),i(st,d(R)?`Scanning…`:`Rescan`)}),o(`submit`,$,e=>{e.preventDefault(),d(I)&&Y(d(I),d(K))}),p(at,()=>d(K),e=>m(K,e)),a(`click`,ct,()=>C(`/repository`)),c(n,Ze),l()}u([`click`,`change`]);export{P as default};
@@ -0,0 +1 @@
1
+ import{o as e,s as t}from"./CmCJ0SKP.js";import"./xihTtKlq.js";import{t as n}from"./BkEnd9_Z.js";var r=new Set([`$$slots`,`$$events`,`$$legacy`]);function i(i,a){let o=e(a,r),s=[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`}]];n(i,t({name:`folder`},()=>o,{get iconNode(){return s}}))}export{i as t};