skill-creator 2.2.0 → 2.3.1

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 (79) hide show
  1. package/CHANGELOG.md +51 -2
  2. package/dist/cli.js +12238 -3293
  3. package/dist/cli.js.map +4 -4
  4. package/dist/daemon.js +9263 -2540
  5. package/dist/daemon.js.map +4 -4
  6. package/dist/package.json +1 -1
  7. package/dist/webui/_app/immutable/assets/0.Ce1ZW9xU.css +2 -0
  8. package/dist/webui/_app/immutable/assets/SettingsPage.DclbL_Wf.css +1 -0
  9. package/dist/webui/_app/immutable/chunks/1aUphu7Y.js +1 -0
  10. package/dist/webui/_app/immutable/chunks/{BpM7GQdD.js → 1vzbRbJ2.js} +3 -3
  11. package/dist/webui/_app/immutable/chunks/3x7J55ll.js +2 -0
  12. package/dist/webui/_app/immutable/chunks/825uWMzf.js +5 -0
  13. package/dist/webui/_app/immutable/chunks/B1KITIB4.js +1 -0
  14. package/dist/webui/_app/immutable/chunks/B3Ni2QLt.js +1 -0
  15. package/dist/webui/_app/immutable/chunks/{C4d-joyd.js → BEPs9Z9s.js} +1 -1
  16. package/dist/webui/_app/immutable/chunks/{CX1CHr5A.js → BHJkoxm8.js} +1 -1
  17. package/dist/webui/_app/immutable/chunks/{DAvb_BTz.js → BIfnT_mK.js} +1 -1
  18. package/dist/webui/_app/immutable/chunks/BNaxFL8-.js +3 -0
  19. package/dist/webui/_app/immutable/chunks/BT2vrlul.js +1 -0
  20. package/dist/webui/_app/immutable/chunks/Bbl7uOhW.js +5 -0
  21. package/dist/webui/_app/immutable/chunks/BkEnd9_Z.js +1 -0
  22. package/dist/webui/_app/immutable/chunks/{DsOfMPqr.js → Bl0jjuyR.js} +1 -1
  23. package/dist/webui/_app/immutable/chunks/{BXwUnloU.js → Bs27XW8_.js} +1 -1
  24. package/dist/webui/_app/immutable/chunks/Bs7CGcv2.js +1 -0
  25. package/dist/webui/_app/immutable/chunks/{b00Wice3.js → C-AVEJqG.js} +1 -1
  26. package/dist/webui/_app/immutable/chunks/C67g-p2T.js +1 -0
  27. package/dist/webui/_app/immutable/chunks/{CRrxCnau.js → C8EbtR4g.js} +1 -1
  28. package/dist/webui/_app/immutable/chunks/CI1OXbBG.js +1 -0
  29. package/dist/webui/_app/immutable/chunks/{BpPdtmVY.js → CeR4do8T.js} +1 -1
  30. package/dist/webui/_app/immutable/chunks/ChvFFUWR.js +1 -0
  31. package/dist/webui/_app/immutable/chunks/{DYphEAOV.js → CoasO80Q.js} +1 -1
  32. package/dist/webui/_app/immutable/chunks/CpRvgjpe.js +1 -0
  33. package/dist/webui/_app/immutable/chunks/CsxdqaKQ.js +1 -0
  34. package/dist/webui/_app/immutable/chunks/{xHmEZGe9.js → D-2QBE8y.js} +1 -1
  35. package/dist/webui/_app/immutable/chunks/{y5ROg0gY.js → D8Der6oM.js} +1 -1
  36. package/dist/webui/_app/immutable/chunks/D8zgcaSD.js +2 -0
  37. package/dist/webui/_app/immutable/chunks/DApmS1g_.js +1 -0
  38. package/dist/webui/_app/immutable/chunks/DKQHhdJ1.js +1 -0
  39. package/dist/webui/_app/immutable/chunks/DOjT7y5f.js +1 -0
  40. package/dist/webui/_app/immutable/chunks/D_Wlt2rL.js +1 -0
  41. package/dist/webui/_app/immutable/chunks/Dga0ODor.js +1 -0
  42. package/dist/webui/_app/immutable/chunks/DgfWqxEz.js +1 -0
  43. package/dist/webui/_app/immutable/chunks/{BZOx0Qre.js → DnPeA-9c.js} +1 -1
  44. package/dist/webui/_app/immutable/chunks/Do5hAkYk.js +1 -0
  45. package/dist/webui/_app/immutable/chunks/DovL68qD.js +1 -0
  46. package/dist/webui/_app/immutable/chunks/{DxUS3G9A.js → F_BrNiaz.js} +1 -1
  47. package/dist/webui/_app/immutable/chunks/HAi-5CYL.js +6 -0
  48. package/dist/webui/_app/immutable/chunks/HopcQwhZ.js +1 -0
  49. package/dist/webui/_app/immutable/chunks/KjcaLSMo.js +1 -0
  50. package/dist/webui/_app/immutable/chunks/N4Ne5qCB.js +1 -0
  51. package/dist/webui/_app/immutable/chunks/{CmWHiR19.js → UeEccMjN.js} +1 -1
  52. package/dist/webui/_app/immutable/chunks/{BfKHhAfw.js → _g2_n9ND.js} +1 -1
  53. package/dist/webui/_app/immutable/chunks/iz1cEkZC.js +1 -0
  54. package/dist/webui/_app/immutable/chunks/nznK1lJN.js +8 -0
  55. package/dist/webui/_app/immutable/entry/{app.wmUVPoAL.js → app.BbnICwcR.js} +2 -2
  56. package/dist/webui/_app/immutable/entry/start.BCFPuXD4.js +1 -0
  57. package/dist/webui/_app/immutable/nodes/0.C0a-_hPX.js +229 -0
  58. package/dist/webui/_app/immutable/nodes/{1.DmFrzXB8.js → 1.CY3UBo6A.js} +1 -1
  59. package/dist/webui/_app/immutable/nodes/{2.C5_mWJeB.js → 2.BfHkaxce.js} +1 -1
  60. package/dist/webui/_app/version.json +1 -1
  61. package/dist/webui/index.html +34 -26
  62. package/package.json +10 -6
  63. package/dist/webui/_app/immutable/assets/0.CT0Z92yp.css +0 -2
  64. package/dist/webui/_app/immutable/chunks/0k4S-8Dm.js +0 -1
  65. package/dist/webui/_app/immutable/chunks/BD8KMBgQ.js +0 -1
  66. package/dist/webui/_app/immutable/chunks/BLKqTz4e.js +0 -1
  67. package/dist/webui/_app/immutable/chunks/BTdzDCtA.js +0 -1
  68. package/dist/webui/_app/immutable/chunks/Bm81ovyU.js +0 -8
  69. package/dist/webui/_app/immutable/chunks/CUkgSGd5.js +0 -1
  70. package/dist/webui/_app/immutable/chunks/CaRy05kX.js +0 -1
  71. package/dist/webui/_app/immutable/chunks/CokLx9SK.js +0 -3
  72. package/dist/webui/_app/immutable/chunks/D-GGMKF5.js +0 -1
  73. package/dist/webui/_app/immutable/chunks/D00gXCrF.js +0 -2
  74. package/dist/webui/_app/immutable/chunks/DlRJa6Rp.js +0 -1
  75. package/dist/webui/_app/immutable/chunks/LKyxHDTu.js +0 -1
  76. package/dist/webui/_app/immutable/chunks/WSgbVOcX.js +0 -5
  77. package/dist/webui/_app/immutable/chunks/n3HFLfXO.js +0 -1
  78. package/dist/webui/_app/immutable/entry/start.DeqHj237.js +0 -1
  79. package/dist/webui/_app/immutable/nodes/0.B1MRgs82.js +0 -234
@@ -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"./BfKHhAfw.js";import"./xihTtKlq.js";import{t as w}from"./CRrxCnau.js";import"./CaRy05kX.js";import{a as ie,i as T,r as E}from"./CX1CHr5A.js";import{c as ae,d as D,l as O,n as k,o as A,u as j}from"./xHmEZGe9.js";import{a as M,r as oe,s as se}from"./DYphEAOV.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
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"./_g2_n9ND.js";import"./xihTtKlq.js";import{t as w}from"./C8EbtR4g.js";import"./D_Wlt2rL.js";import{a as ie,i as T,r as E}from"./BHJkoxm8.js";import{c as ae,d as D,l as O,n as k,o as A,u as j}from"./D-2QBE8y.js";import{a as M,r as oe,s as se}from"./CoasO80Q.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
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:`m9 18 6-6-6-6`}]];n(i,t({name:`chevron-right`},()=>o,{get iconNode(){return s}}))}export{i as t};
@@ -1 +1 @@
1
- import"./CmCJ0SKP.js";import{a as e}from"./BfKHhAfw.js";var t={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};export{t};
1
+ import"./CmCJ0SKP.js";import{a as e}from"./_g2_n9ND.js";var t={get data(){return e.data},get error(){return e.error},get form(){return e.form},get params(){return e.params},get route(){return e.route},get state(){return e.state},get status(){return e.status},get url(){return e.url}};export{t};
@@ -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};
@@ -1 +1 @@
1
- import{o as e,s as t}from"./CmCJ0SKP.js";import"./xihTtKlq.js";import{i as n}from"./0k4S-8Dm.js";var r=new Set([`$$slots`,`$$events`,`$$legacy`]);function i(i,a){let o=e(a,r),s=[[`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:`M12 8v4`}],[`path`,{d:`M12 16h.01`}]];n(i,t({name:`shield-alert`},()=>o,{get iconNode(){return s}}))}export{i as t};
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 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:`M12 8v4`}],[`path`,{d:`M12 16h.01`}]];n(i,t({name:`shield-alert`},()=>o,{get iconNode(){return s}}))}export{i as t};
@@ -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:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`}],[`path`,{d:`M10 9H8`}],[`path`,{d:`M16 13H8`}],[`path`,{d:`M16 17H8`}]];n(i,t({name:`file-text`},()=>o,{get iconNode(){return s}}))}var a=new Set([`$$slots`,`$$events`,`$$legacy`]);function o(r,i){let o=e(i,a),s=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m16 9-5.5 5.5L8 12`}]];n(r,t({name:`circle-check`},()=>o,{get iconNode(){return s}}))}export{i as n,o as t};
@@ -1 +1 @@
1
- import{ut as e}from"./CmCJ0SKP.js";import{a as t,o as n,t as r}from"./BpM7GQdD.js";var i=r(t),a=r(t),o=e({builtIn:[],user:[],loading:!1,error:null});async function s(){let e=i.issue(),t=n();if(!t)return e.isLatest()&&(o.loading=!1),`failed`;o.loading=!0,o.error=null;try{let{builtIn:n,user:r}=await t.repository.sources.list({});return e.isCurrent()?(o.builtIn=n,o.user=r,`loaded`):`superseded`}catch(t){return e.isCurrent()?(o.error=t instanceof Error?t.message:String(t),`failed`):`superseded`}finally{e.isLatest()&&(o.loading=!1)}}async function c(e){let t=a.issue(),n;try{({source:n}=await u().repository.sources.add(e))}catch(e){if(!t.isCurrent())return null;throw e}return t.isCurrent()?(await s(),t.isCurrent()?n:null):null}async function l(e){let t=a.issue();try{await u().repository.sources.remove({id:e})}catch(e){if(!t.isCurrent())return!1;throw e}return t.isCurrent()?(await s(),t.isCurrent()):!1}function u(){let e=n();if(!e)throw Error(`The Skill Creator daemon is not connected.`);return e}var d=3e5,f=e(new Map);function p(e){return f.get(e)}function m(e,t){f.set(e,{skillCount:t.skillCount,commitPrefix:t.commit.slice(0,12),scannedAt:Date.now()})}function h(e){return e?Date.now()-e.scannedAt>d:!1}export{s as a,c as i,h as n,l as o,m as r,o as s,p as t};
1
+ import{ut as e}from"./CmCJ0SKP.js";import{a as t,o as n,t as r}from"./1vzbRbJ2.js";var i=r(t),a=r(t),o=e({builtIn:[],user:[],loading:!1,error:null});async function s(){let e=i.issue(),t=n();if(!t)return e.isLatest()&&(o.loading=!1),`failed`;o.loading=!0,o.error=null;try{let{builtIn:n,user:r}=await t.repository.sources.list({});return e.isCurrent()?(o.builtIn=n,o.user=r,`loaded`):`superseded`}catch(t){return e.isCurrent()?(o.error=t instanceof Error?t.message:String(t),`failed`):`superseded`}finally{e.isLatest()&&(o.loading=!1)}}async function c(e){let t=a.issue(),n;try{({source:n}=await u().repository.sources.add(e))}catch(e){if(!t.isCurrent())return null;throw e}return t.isCurrent()?(await s(),t.isCurrent()?n:null):null}async function l(e){let t=a.issue();try{await u().repository.sources.remove({id:e})}catch(e){if(!t.isCurrent())return!1;throw e}return t.isCurrent()?(await s(),t.isCurrent()):!1}function u(){let e=n();if(!e)throw Error(`The Skill Creator daemon is not connected.`);return e}var d=3e5,f=e(new Map);function p(e){return f.get(e)}function m(e,t){f.set(e,{skillCount:t.skillCount,commitPrefix:t.commit.slice(0,12),scannedAt:Date.now()})}function h(e){return e?Date.now()-e.scannedAt>d:!1}export{s as a,c as i,h as n,l as o,m as r,o as s,p as t};
@@ -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=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`}],[`path`,{d:`M2 12h20`}]];n(i,t({name:`globe`},()=>o,{get iconNode(){return s}}))}export{i as t};
@@ -0,0 +1 @@
1
+ import{$ as e,ut as t}from"./CmCJ0SKP.js";import{a as n,s as r,t as i}from"./1vzbRbJ2.js";import{a}from"./D-2QBE8y.js";import{n as o}from"./1aUphu7Y.js";function s(e){return r().creator.save(e)}function c(e,t){return r().creator.load({...e,skillId:t})}async function l(e){await r().creator.remove({workspaceId:e.target.workspaceId,providerId:e.target.providerId,skillId:e.skillId,expectedRevision:e.expectedRevision})}var u=i(n),d=i(n),f=i(n),p=i(n),m=i(n),h=t({target:null,skills:[],selected:null,loading:!1,refreshing:!1,error:null,query:``});async function g(t){let n=u.issue(),i=()=>n.isCurrent()&&x(h.target,t),a=e(()=>!x(h.target,t)),o=e(()=>h.skills.length>0);a&&(d.invalidate(),h.target=t,h.skills=[],h.selected=null),h.loading=!o,h.refreshing=o,h.error=null;try{let{skills:e}=await r().skills.list({...t,includeDisabled:!0});if(!i())return;h.skills=e,h.selected&&!e.some(e=>e.id===h.selected?.id)&&(h.selected=null)}catch(e){if(!i())return;h.error=e instanceof Error?e.message:String(e)}finally{n.isLatest()&&(h.loading=!1,h.refreshing=!1)}}async function _(e){let t=h.target;if(!t)return;let n=d.issue(),i=()=>n.isCurrent()&&x(h.target,t);h.error=null;try{let n=await r().skills.info({...t,skillId:e,includeDisabled:!0});i()&&(h.selected=n)}catch(e){if(!i())return;h.error=e instanceof Error?e.message:String(e)}}async function v(e,t){let n=h.target;if(!n)return null;let i=f.issue(),a=()=>i.isCurrent()&&x(h.target,n),o;try{o=await r().skills.toggle({...n,skillIds:e,mode:t})}catch(e){if(!a())return null;throw e}return!a()||(await g(n),!a())?null:(h.selected&&e.includes(h.selected.id)&&await _(h.selected.id),a()?o:null)}async function y(e){let t=h.target;if(!t)return null;let n=p.issue(),i=()=>n.isCurrent()&&x(h.target,t);try{let n=await r().skills.validate({...t,skillId:e});return i()?n:null}catch(e){if(!i())return null;throw e}}function b(e,t){return r().skills.info({...e,skillId:t,includeDisabled:!0})}function x(e,t){return e?.workspaceId===t?.workspaceId&&e?.providerId===t?.providerId}var S=t({query:``,results:[],searching:!1,error:null});async function C(e,t=20){let n=e.trim();if(!n){E();return}let i=m.issue();S.query=n,S.searching=!0;try{let{results:e}=await r().skills.search({query:n,limit:t});if(!i.isCurrent())return;S.results=e,S.error=null}catch(e){if(!i.isCurrent())return;S.error=e instanceof Error?e.message:String(e),console.debug(`[skill-search] search failed`,S.error)}finally{i.isLatest()&&(S.searching=!1)}}var w=!1;async function T(){if(!w){w=!0;try{await r().skills.searchConfig.open({})}catch(e){o(e instanceof Error?e.message:String(e))}finally{w=!1}}}function E(){m.invalidate(),S.query=``,S.results=[],S.searching=!1,S.error=null}function D(e,t){let n=a.workspaces.find(t=>t.id===e);if(!n)return`${e} / ${t}`;let r=n.providers.find(e=>e.id===t);return`${n.label} / ${r?.label??t}`}var O=t({groups:[],loading:!1,error:null}),k=i(n);async function A(){let e=k.issue();O.loading=!0,O.error=null;try{let{groups:t}=await r().skills.duplicates({});if(!e.isCurrent())return;O.groups=t}catch(t){if(!e.isCurrent())return;O.error=t instanceof Error?t.message:String(t),console.debug(`[skill-search] duplicates load failed`,O.error)}finally{e.isLatest()&&(O.loading=!1)}}export{T as a,S as c,x as d,v as f,s as g,l as h,g as i,O as l,c as m,D as n,E as o,y as p,A as r,C as s,b as t,h as u};
@@ -1 +1 @@
1
- import{ut as e}from"./CmCJ0SKP.js";import{_ as t,a as n,o as r,s as i,t as a,y as o}from"./BpM7GQdD.js";function s(e){return e?.code===`UNAVAILABLE`&&e.message.includes(`session expired`)}function c(e){return e instanceof t?{message:e.message,code:String(e.code)}:{message:e instanceof Error?e.message:String(e)}}function l(){let e=a(n);return{issue:()=>({isCurrent:e.issue().isCurrent})}}async function u(e,t){let n=l().issue();try{let r=await i().repository.scan({source:e,ref:t});return n.isCurrent()?{scan:r,error:null}:{scan:null,error:null}}catch(e){return n.isCurrent()?{scan:null,error:c(e)}:{scan:null,error:null}}}async function d(e,t){let n=l().issue();try{let r=await i().repository.preview({sessionId:e,skillId:t});return n.isCurrent()?{preview:r,error:null}:{preview:null,error:null}}catch(e){return n.isCurrent()?{preview:null,error:c(e)}:{preview:null,error:null}}}async function f(e){let t=l().issue();try{let n=await i().repository.install(e);return t.isCurrent()?{result:n,error:null}:{result:null,error:null}}catch(e){return t.isCurrent()?{result:null,error:c(e)}:{result:null,error:null}}}function p(e){let t=[];for(let n of e)if(n.kind===`directory`&&n.available)for(let e of n.providers)e.writable&&t.push({target:{workspaceId:n.id,providerId:e.id},workspace:n,provider:e,label:`${n.label} / ${e.label}`});return t}function m(e){if(e.kind===`directory`&&e.providers.length>0){let t=e.providers[0];return t?`/workspaces/${encodeURIComponent(e.id)}/${encodeURIComponent(t.id)}`:`/workspaces`}return`/workspaces`}var h=a(n),g=a(n),_=null,v=e({workspaces:[],activeId:`~`,loading:!0,error:null});async function y(e=!1){let t=n(),r=_!==null&&_.generation===t?_.promise:null;if(!e&&r!==null)return r;let i=b().finally(()=>{_?.promise===i&&(_=null)});return _={generation:t,promise:i},i}async function b(){let e=h.issue(),t=r();if(!t)return e.isLatest()&&(v.loading=!1),`failed`;v.loading=!0,v.error=null;try{let{workspaces:n}=await t.workspace.list({});return e.isCurrent()?(v.workspaces=n,v.activeId=n.find(e=>e.active)?.id??`~`,`loaded`):`superseded`}catch(t){return e.isCurrent()?(v.error=t instanceof Error?t.message:String(t),`failed`):`superseded`}finally{e.isLatest()&&(v.loading=!1)}}async function x(e,t){let n=g.issue(),r;try{({workspace:r}=await i().workspace.add({path:e,label:t}))}catch(e){if(!n.isCurrent())return null;throw e}return n.isCurrent()?(await y(!0),r):(await y(!0),null)}async function S(e){let t=o.parse(e),n=g.issue(),r;try{({activeId:r}=await i().workspace.remove({id:t}))}catch(e){if(!n.isCurrent())return!1;throw e}return n.isCurrent()?(v.activeId=r,await y(!0),n.isCurrent()):!1}function C(){return p(v.workspaces)}var w=null;function T(){return w===null&&(w=(async()=>i().workspace.pickDirectory({}))().finally(()=>{w=null})),w}export{v as a,f as c,u as d,S as i,s as l,y as n,C as o,T as r,m as s,x as t,d as u};
1
+ import{ut as e}from"./CmCJ0SKP.js";import{_ as t,a as n,o as r,s as i,t as a,y as o}from"./1vzbRbJ2.js";function s(e){return e?.code===`UNAVAILABLE`&&e.message.includes(`session expired`)}function c(e){return e instanceof t?{message:e.message,code:String(e.code)}:{message:e instanceof Error?e.message:String(e)}}function l(){let e=a(n);return{issue:()=>({isCurrent:e.issue().isCurrent})}}async function u(e,t){let n=l().issue();try{let r=await i().repository.scan({source:e,ref:t});return n.isCurrent()?{scan:r,error:null}:{scan:null,error:null}}catch(e){return n.isCurrent()?{scan:null,error:c(e)}:{scan:null,error:null}}}async function d(e,t){let n=l().issue();try{let r=await i().repository.preview({sessionId:e,skillId:t});return n.isCurrent()?{preview:r,error:null}:{preview:null,error:null}}catch(e){return n.isCurrent()?{preview:null,error:c(e)}:{preview:null,error:null}}}async function f(e){let t=l().issue();try{let n=await i().repository.install(e);return t.isCurrent()?{result:n,error:null}:{result:null,error:null}}catch(e){return t.isCurrent()?{result:null,error:c(e)}:{result:null,error:null}}}function p(e){let t=[];for(let n of e)if(n.kind===`directory`&&n.available)for(let e of n.providers)e.writable&&t.push({target:{workspaceId:n.id,providerId:e.id},workspace:n,provider:e,label:`${n.label} / ${e.label}`});return t}function m(e){if(e.kind===`directory`&&e.providers.length>0){let t=e.providers[0];return t?`/workspaces/${encodeURIComponent(e.id)}/${encodeURIComponent(t.id)}`:`/workspaces`}return`/workspaces`}var h=a(n),g=a(n),_=null,v=e({workspaces:[],activeId:`~`,loading:!0,error:null});async function y(e=!1){let t=n(),r=_!==null&&_.generation===t?_.promise:null;if(!e&&r!==null)return r;let i=b().finally(()=>{_?.promise===i&&(_=null)});return _={generation:t,promise:i},i}async function b(){let e=h.issue(),t=r();if(!t)return e.isLatest()&&(v.loading=!1),`failed`;v.loading=!0,v.error=null;try{let{workspaces:n}=await t.workspace.list({});return e.isCurrent()?(v.workspaces=n,v.activeId=n.find(e=>e.active)?.id??`~`,`loaded`):`superseded`}catch(t){return e.isCurrent()?(v.error=t instanceof Error?t.message:String(t),`failed`):`superseded`}finally{e.isLatest()&&(v.loading=!1)}}async function x(e,t){let n=g.issue(),r;try{({workspace:r}=await i().workspace.add({path:e,label:t}))}catch(e){if(!n.isCurrent())return null;throw e}return n.isCurrent()?(await y(!0),r):(await y(!0),null)}async function S(e){let t=o.parse(e),n=g.issue(),r;try{({activeId:r}=await i().workspace.remove({id:t}))}catch(e){if(!n.isCurrent())return!1;throw e}return n.isCurrent()?(v.activeId=r,await y(!0),n.isCurrent()):!1}function C(){return p(v.workspaces)}var w=null;function T(){return w===null&&(w=(async()=>i().workspace.pickDirectory({}))().finally(()=>{w=null})),w}export{v as a,f as c,u as d,S as i,s as l,y as n,C as o,T as r,m as s,x as t,d as u};
@@ -1 +1 @@
1
- import{o as e,s as t}from"./CmCJ0SKP.js";import"./xihTtKlq.js";import{i as n}from"./0k4S-8Dm.js";var r=new Set([`$$slots`,`$$events`,`$$legacy`]);function i(i,a){let o=e(a,r),s=[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`}],[`path`,{d:`M12 12V8`}]];n(i,t({name:`network`},()=>o,{get iconNode(){return s}}))}export{i as t};
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=[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`}],[`path`,{d:`M12 12V8`}]];n(i,t({name:`network`},()=>o,{get iconNode(){return s}}))}export{i as t};
@@ -0,0 +1,2 @@
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,gt as p,kt as m,lt as h,m as g,nt as _,ot as v,rt as y,st as b,z as x}from"./CmCJ0SKP.js";import{t as S}from"./_g2_n9ND.js";import"./xihTtKlq.js";import"./D_Wlt2rL.js";import{t as C}from"./BT2vrlul.js";import{n as w,t as T}from"./DnPeA-9c.js";import{t as E}from"./CpRvgjpe.js";import{t as D}from"./BIfnT_mK.js";import{t as O}from"./Bs27XW8_.js";import{o as k,r as A,s as j}from"./iz1cEkZC.js";import{t as M}from"./Bl0jjuyR.js";import{t as N}from"./CI1OXbBG.js";var P=null,F=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 wiki scopes</p> <p class="mt-1 break-words text-xs text-destructive/90"> </p></div> <!></div>`),I=n(`<div class="space-y-3" aria-label="Loading wiki scopes"><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>`),L=n(`<div class="rounded-lg border border-dashed border-border p-8 text-center"><!> <p class="mt-3 text-sm font-medium">No wiki scopes yet</p> <p class="mt-1 text-xs text-muted-foreground">The global wiki appears once the daemon is reachable.</p></div>`),R=n(`<p class="flex items-center gap-2 text-xs text-muted-foreground" role="status"><!> Updating…</p>`),z=n(`<span class="block truncate text-xs text-muted-foreground"> <!></span>`),B=n(`<span class="block truncate text-xs text-muted-foreground/80">Not initialized — opens empty, first fragment creates it</span>`),V=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="flex items-center gap-2"><span class="truncate text-sm font-medium"> </span> <!></span> <!></span> <!></button></li>`),H=n(`<!> <ul class="divide-y divide-border rounded-lg border border-border"></ul>`,1),U=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><h1 class="text-lg font-semibold">Wiki</h1> <p class="mt-0.5 text-xs text-muted-foreground">Fragment insights collected per wiki — global notes and workspace-local knowledge.</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 W(n,u){r(u,!0);function W(e){return`/wiki/${e.id===`~`?`%7E`:e.id}`}function G(e){P=e.id,S(W(e))}async function K(){await A()}y(()=>{A()}),y(()=>()=>k()),y(()=>{let e=P;e&&(P=null,document.querySelector(`button[data-scope-id="${CSS.escape(e)}"]`)?.focus())});var q=U(),J=v(q),Y=h(v(J),2),X=v(Y);w(X,{variant:`ghost`,size:`icon`,class:`h-9 w-9`,title:`Refresh wiki scopes`,"aria-label":`Refresh wiki scopes`,get disabled(){return j.loading},onclick:()=>void K(),children:(e,t)=>{var n=x(),r=b(n),i=e=>{T(e,{class:`h-4 w-4 animate-spin`})},a=e=>{D(e,{class:`h-4 w-4`})};o(r,e=>{j.loading?e(i):e(a,-1)}),s(e,n)},$$slots:{default:!0}}),t(Y),t(J);var Z=h(J,2),Q=v(Z),$=e=>{var n=F(),r=v(n);O(r,{class:`mt-0.5 h-4 w-4 shrink-0 text-destructive`});var a=h(r,2),o=h(v(a),2),c=f(o,!0);t(a);var u=h(a,2);w(u,{variant:`outline`,size:`sm`,onclick:()=>void K(),children:(e,t)=>{m();var n=l(`Retry`);s(e,n)},$$slots:{default:!0}}),t(n),_(()=>i(c,j.error)),s(e,n)},ee=e=>{var t=I();s(e,t)},te=e=>{var n=L(),r=v(n);C(r,{class:`mx-auto h-8 w-8 text-muted-foreground`}),m(4),t(n),s(e,n)},ne=n=>{var r=H(),c=b(r),u=e=>{var n=R(),r=v(n);T(r,{class:`h-3.5 w-3.5 animate-spin`}),m(),t(n),s(e,n)};o(c,e=>{j.loading&&e(u)});var y=h(c,2);e(y,21,()=>j.scopes,e=>e.id,(e,n)=>{var r=V(),c=v(r),u=v(c),y=e=>{E(e,{class:`h-4 w-4 shrink-0 text-primary`})},b=e=>{N(e,{class:`h-4 w-4 shrink-0 text-muted-foreground`})};o(u,e=>{d(n).id===`~`?e(y):e(b,-1)});var x=h(u,2),S=v(x),C=v(S),w=f(C,!0),T=h(C,2),D=e=>{M(e,{variant:`secondary`,class:`shrink-0 text-xs`,children:(e,t)=>{m();var n=l(`~ global`);s(e,n)},$$slots:{default:!0}})};o(T,e=>{d(n).id===`~`&&e(D)}),t(S);var O=h(S,2),k=e=>{var r=z(),a=v(r),c=h(a),u=e=>{var t=l();_(e=>i(t,`· updated ${e??``}`),[()=>d(n).lastUpdated.slice(0,10)]),s(e,t)};o(c,e=>{d(n).lastUpdated&&e(u)}),t(r),_(()=>i(a,`${d(n).patternCount??``}
2
+ ${d(n).patternCount===1?`fragment`:`fragments`} captured`)),s(e,r)},A=e=>{var t=B();s(e,t)};o(O,e=>{d(n).exists?e(k):e(A,-1)}),t(x);var j=h(x,2);{let e=p(()=>d(n).exists?`secondary`:`outline`);M(j,{get variant(){return d(e)},class:`shrink-0 tabular-nums`,children:(e,t)=>{m();var r=l();_(()=>i(r,d(n).patternCount)),s(e,r)},$$slots:{default:!0}})}t(c),t(r),_(()=>{g(c,`data-scope-id`,d(n).id),i(w,d(n).label)}),a(`click`,c,()=>G(d(n))),s(e,r)}),t(y),s(n,r)};o(Q,e=>{j.error?e($):j.loading&&j.scopes.length===0?e(ee,1):j.scopes.length===0?e(te,2):e(ne,-1)}),t(Z),t(q),s(n,q),c()}u([`click`]);export{W 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:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`}]];n(i,t({name:`folder-open`},()=>o,{get iconNode(){return s}}))}export{i as t};
@@ -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:`m12 19-7-7 7-7`}],[`path`,{d:`M19 12H5`}]];n(i,t({name:`arrow-left`},()=>o,{get iconNode(){return s}}))}export{i as t};
@@ -0,0 +1 @@
1
+ import{B as e,Ct as t,N as n,R as r,St as i,a,d as o,f as s,l as c,o as l,st as u,u as d,z as f}from"./CmCJ0SKP.js";import"./xihTtKlq.js";import{i as p}from"./DnPeA-9c.js";var m=new Set([`$$slots`,`$$events`,`$$legacy`,`ref`,`value`,`type`,`files`,`class`,`data-slot`]),h=e(`<input/>`);function g(e,g){t(g,!0);let _=a(g,`ref`,15,null),v=a(g,`value`,15),y=a(g,`files`,15),b=a(g,`data-slot`,3,`input`),x=l(g,m);var S=f(),C=u(S),w=e=>{var t=h();s(t,e=>({"data-slot":b(),class:e,type:`file`,...x}),[()=>p(`bg-input/20 dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-7 rounded-md border px-2 py-0.5 text-sm transition-colors file:h-6 file:text-xs/relaxed file:font-medium focus-visible:ring-2 aria-invalid:ring-2 md:text-xs/relaxed file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,g.class)],void 0,void 0,void 0,!0),c(t,e=>_(e),()=>_()),d(t,y),o(t,v),r(e,t)},T=e=>{var t=h();s(t,e=>({"data-slot":b(),class:e,type:g.type,...x}),[()=>p(`bg-input/20 dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-7 rounded-md border px-2 py-0.5 text-sm transition-colors file:h-6 file:text-xs/relaxed file:font-medium focus-visible:ring-2 aria-invalid:ring-2 md:text-xs/relaxed file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,g.class)],void 0,void 0,void 0,!0),c(t,e=>_(e),()=>_()),o(t,v),r(e,t)};n(C,e=>{g.type===`file`?e(w):e(T,-1)}),r(e,S),i()}export{g as t};
@@ -0,0 +1 @@
1
+ import"./_g2_n9ND.js";
@@ -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,S as c,St as l,W as u,X as d,ct as f,d as p,ft as m,gt as h,kt as g,lt as _,m as v,mt as y,nt as b,o as x,ot as S,p as C,rt as w,s as T,st as E,x as D}from"./CmCJ0SKP.js";import{t as O}from"./_g2_n9ND.js";import"./xihTtKlq.js";import"./D_Wlt2rL.js";import{t as k}from"./BkEnd9_Z.js";import{i as ee}from"./BHJkoxm8.js";import{n as A}from"./1aUphu7Y.js";import{i as j}from"./DnPeA-9c.js";import{n as M,t as N}from"./KjcaLSMo.js";import{a as P,i as F,n as I,o as te,s as L,t as R}from"./CoasO80Q.js";var z=new Set([`$$slots`,`$$events`,`$$legacy`]);function B(e,t){let n=x(t,z),r=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`M10 14 21 3`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}]];k(e,T({name:`external-link`},()=>n,{get iconNode(){return r}}))}var V=n(`<span class="text-amber-600 dark:text-amber-400">stale · rescan for latest</span>`),H=n(`<span> </span> <span class="font-mono"> </span> <!>`,1),U=n(`<span class="italic">Not scanned yet</span>`),W=n(`<a target="_blank" rel="noreferrer noopener" class="inline-flex h-7 items-center gap-1 rounded-md border border-border px-2 text-[11px] text-muted-foreground transition-colors hover:bg-muted/50"><!> Home</a>`),G=n(`<button type="button" class="ml-auto inline-flex h-7 items-center gap-1 rounded-md px-2 text-[11px] text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive"><!></button>`),ne=n(`<article class="flex h-full flex-col gap-2 rounded-lg border border-border bg-card p-3 text-left transition-colors hover:border-primary/40"><header class="flex items-start gap-2"><div class="min-w-0 flex-1"><div class="flex items-center gap-1.5"><h3 class="truncate text-sm font-medium text-foreground"> </h3> <span> </span></div> <p class="mt-0.5 line-clamp-2 text-[11px] leading-4 text-muted-foreground"> </p></div></header> <dl class="mt-auto flex flex-wrap items-center gap-x-3 gap-y-0.5 text-[11px] text-muted-foreground"><!></dl> <footer class="flex shrink-0 items-center gap-2"><button type="button" class="inline-flex h-7 items-center rounded-md bg-primary px-2.5 text-[11px] font-medium text-primary-foreground transition-colors hover:bg-primary/90">Scan</button> <!> <!></footer></article>`);function re(e,n){r(n,!0);var u=ne(),d=S(u),p=S(d),m=S(p),h=S(m),y=f(h,!0),x=_(h,2),C=f(x,!0);t(m);var w=_(m,2),T=f(w,!0);t(p),t(d);var O=_(d,2),k=S(O),ee=e=>{var t=H(),r=E(t),a=f(r),c=_(r,2),l=f(c,!0),u=_(c,2),d=e=>{var t=V();s(e,t)};o(u,e=>{n.stale&&e(d)}),b(()=>{i(a,`${n.scanSummary.skillCount??``} skills`),i(l,n.scanSummary.commitPrefix)}),s(e,t)},A=e=>{var t=U();s(e,t)};o(k,e=>{n.scanSummary?e(ee):e(A,-1)}),t(O);var M=_(O,2),P=S(M),F=_(P,2),I=e=>{var r=W();B(S(r),{class:`h-3 w-3`}),g(),t(r),b(()=>{v(r,`href`,n.homepage),v(r,`aria-label`,`Open ${n.label} homepage`)}),s(e,r)};o(F,e=>{n.homepage&&e(I)});var te=_(F,2),L=e=>{var r=G(),i=S(r);N(i,{class:`h-3.5 w-3.5`}),t(r),b(()=>v(r,`aria-label`,`Remove ${n.label}`)),a(`click`,r,function(...e){n.onremove?.apply(this,e)}),s(e,r)};o(te,e=>{!n.builtIn&&n.onremove&&e(L)}),t(M),t(u),b(e=>{i(y,n.label),D(x,1,e),i(C,n.builtIn?`Built-in`:`Custom`),i(T,n.description||n.gitUrl)},[()=>c(j(`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium`,n.builtIn?`bg-primary/10 text-primary`:`bg-muted text-muted-foreground`))]),a(`click`,P,function(...e){n.onscan?.apply(this,e)}),s(e,u),l()}u([`click`]);var ie=n(`<p class="py-8 text-center text-xs text-muted-foreground">Loading sources…</p>`),ae=n(`<p class="py-8 text-center text-xs text-destructive"> </p>`),oe=n(`<p class="py-8 text-center text-xs text-muted-foreground"> </p>`),se=n(`<div class="grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"></div>`),ce=n(`<li><button type="button" class="flex w-full items-center justify-between rounded px-2 py-1 text-left text-xs transition-colors hover:bg-muted/60"><span class="truncate font-medium text-foreground"> </span> <span class="ml-2 shrink-0 text-muted-foreground"> </span></button></li>`),le=n(`<section class="rounded-lg border border-border bg-muted/20 p-3"><h2 class="text-xs font-medium text-muted-foreground">Recent scans</h2> <ul class="mt-2 space-y-1"></ul></section>`),ue=n(`<p class="text-xs text-destructive"> </p>`),de=n(`<div class="fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4"><div class="w-full max-w-md rounded-lg border border-border bg-background p-4 shadow-lg"><h2 class="text-sm font-semibold">Add custom source</h2> <p class="mt-0.5 text-xs text-muted-foreground">Paste an <code class="font-mono">https</code> Git URL. It persists across restarts.</p> <div class="mt-3 space-y-2"><label class="block text-xs"><span class="text-muted-foreground">Label</span> <input class="mt-1 h-8 w-full rounded-md border border-border bg-background px-2 text-sm" placeholder="My skills repo"/></label> <label class="block text-xs"><span class="text-muted-foreground">Git URL (https only)</span> <input class="mt-1 h-8 w-full rounded-md border border-border bg-background px-2 font-mono text-xs" placeholder="https://github.com/me/skills.git"/></label> <label class="block text-xs"><span class="text-muted-foreground">Description (optional)</span> <input class="mt-1 h-8 w-full rounded-md border border-border bg-background px-2 text-sm" placeholder="What kind of skills?"/></label> <!></div> <div class="mt-4 flex justify-end gap-2"><button type="button" class="h-8 rounded-md border border-border px-3 text-xs hover:bg-muted/50">Cancel</button> <button type="button" class="h-8 rounded-md bg-primary px-3 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50"> </button></div></div></div>`),fe=n(`<div class="flex h-full flex-col overflow-y-auto p-5"><header class="flex shrink-0 items-center gap-3 border-b border-border pb-4"><div class="min-w-0 flex-1"><h1 class="text-lg font-semibold">Discover skills</h1> <p class="mt-0.5 text-xs text-muted-foreground">Browse curated and custom skill repositories, then scan to install.</p></div> <button type="button" class="inline-flex h-8 shrink-0 items-center rounded-md border border-border px-3 text-xs font-medium transition-colors hover:bg-muted/50">Add source</button></header> <div class="mx-auto mt-4 w-full max-w-4xl flex-1 space-y-4"><div class="flex items-center gap-2"><input type="search" placeholder="Filter sources by name or description…" class="h-9 w-full rounded-md border border-border bg-background px-3 text-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring" aria-label="Filter sources"/></div> <!> <!></div></div> <!> <!>`,1);function K(n,c){r(c,!0);let u=ee(),g=h(()=>u?.()?.q?.trim()??``),v=y(``);w(()=>{m(v,d(g),!0)}),w(()=>{P()});let x=h(()=>[...L.builtIn.map(e=>({id:e.id,label:e.label,description:e.description,gitUrl:e.gitUrl,homepage:e.homepage,builtIn:!0})),...L.user.map(e=>({id:e.id,label:e.label,description:e.description,gitUrl:e.gitUrl,homepage:void 0,builtIn:!1}))]),T=h(()=>{let e=d(g).toLowerCase();return e?d(x).filter(t=>t.label.toLowerCase().includes(e)||t.description.toLowerCase().includes(e)):d(x)}),D=h(()=>{let e=[];for(let t of d(x)){let n=R(t.id);n&&e.push({id:t.id,label:t.label,summary:n})}return e.sort((e,t)=>(t.summary?.scannedAt??0)-(e.summary?.scannedAt??0)),e.slice(0,5)}),k=y(!1),j=y(``),N=y(``),z=y(``),B=y(null),V=y(!1);function H(e){let t=e.trim(),n=`/repository${t?`?q=${encodeURIComponent(t)}`:``}`;O(n,{replaceState:!0})}function U(){let e=d(v).trim(),t=e?`?q=${encodeURIComponent(e)}`:``;O(`/repository${t}`)}function W(e){O(`/repository/scan/${encodeURIComponent(e)}`)}function G(){m(k,!0),m(j,``),m(N,``),m(z,``),m(B,null)}async function ne(){let e=d(j).trim(),t=d(N).trim();if(!e||!t){m(B,`Label and Git URL are required.`);return}m(V,!0),m(B,null);try{await F({label:e,gitUrl:t,description:d(z).trim()||void 0})&&m(k,!1)}catch(e){m(B,e instanceof Error?e.message:String(e),!0)}finally{m(V,!1)}}let K=y(null),q=y(!1),J=y(!1);function pe(e,t){m(K,{id:e,label:t},!0),m(q,!0)}w(()=>{d(q)||m(K,null)});async function me(){let e=d(K);if(e){m(J,!0);try{await te(e.id)&&(m(q,!1),A(`Removed source ${e.label}.`))}catch(e){A(e instanceof Error?e.message:String(e))}finally{m(J,!1)}}}var Y=fe(),X=E(Y),Z=S(X),he=_(S(Z),2);t(Z);var ge=_(Z,2),Q=S(ge),$=S(Q);C($),t(Q);var _e=_(Q,2),ve=e=>{var t=ie();s(e,t)},ye=e=>{var t=ae(),n=f(t,!0);b(()=>i(n,L.error)),s(e,t)},be=e=>{var t=oe(),n=f(t);b(()=>i(n,`No sources match “${d(g)??``}”.`)),s(e,t)},xe=n=>{var r=se();e(r,21,()=>d(T),e=>e.id,(e,t)=>{{let n=h(()=>R(d(t).id)),r=h(()=>I(R(d(t).id))),i=h(()=>d(t).builtIn?void 0:()=>pe(d(t).id,d(t).label));re(e,{get label(){return d(t).label},get description(){return d(t).description},get gitUrl(){return d(t).gitUrl},get homepage(){return d(t).homepage},get builtIn(){return d(t).builtIn},get scanSummary(){return d(n)},get stale(){return d(r)},onscan:()=>W(d(t).id),get onremove(){return d(i)}})}}),t(r),s(n,r)};o(_e,e=>{L.loading?e(ve):L.error?e(ye,1):d(T).length===0?e(be,2):e(xe,-1)});var Se=_(_e,2),Ce=n=>{var r=le(),o=_(S(r),2);e(o,21,()=>d(D),e=>e.id,(e,n)=>{var r=ce(),o=S(r),c=S(o),l=f(c,!0),u=_(c,2),p=f(u);t(o),t(r),b(()=>{i(l,d(n).label),i(p,`${d(n).summary?.skillCount??0??``} skills`)}),a(`click`,o,()=>W(d(n).id)),s(e,r)}),t(o),t(r),s(n,r)};o(Se,e=>{d(D).length>0&&e(Ce)}),t(ge),t(X);var we=_(X,2),Te=e=>{var n=de(),r=S(n),c=_(S(r),4),l=S(c),u=_(S(l),2);C(u),t(l);var h=_(l,2),g=_(S(h),2);C(g),t(h);var v=_(h,2),y=_(S(v),2);C(y),t(v);var x=_(v,2),w=e=>{var t=ue(),n=f(t,!0);b(()=>i(n,d(B))),s(e,t)};o(x,e=>{d(B)&&e(w)}),t(c);var T=_(c,2),E=S(T),D=_(E,2),O=f(D,!0);t(T),t(r),t(n),b(()=>{D.disabled=d(V),i(O,d(V)?`Adding…`:`Add`)}),p(u,()=>d(j),e=>m(j,e)),p(g,()=>d(N),e=>m(N,e)),p(y,()=>d(z),e=>m(z,e)),a(`click`,E,()=>m(k,!1)),a(`click`,D,ne),s(e,n)};o(we,e=>{d(k)&&e(Te)});var Ee=_(we,2);{let e=h(()=>d(K)?`Remove ${d(K).label} from your Discover feed? Installed skills stay on disk.`:``);M(Ee,{title:`Remove custom source`,get description(){return d(e)},confirmLabel:`Remove`,get busy(){return d(J)},onConfirm:()=>void me(),get open(){return d(q)},set open(e){m(q,e,!0)}})}a(`click`,he,G),a(`input`,$,()=>H(d(v))),a(`keydown`,$,e=>{e.key===`Enter`&&U()}),p($,()=>d(v),e=>m(v,e)),s(n,Y),l()}u([`click`,`input`,`keydown`]);export{K as default};
@@ -0,0 +1 @@
1
+ import{At as e,B as t,Ct as n,F as r,N as i,R as a,St as o,U as s,X as c,_t as l,a as u,ct as d,d as f,f as p,ft as m,gt as h,kt as g,l as _,lt as v,mt as y,nt as b,o as x,ot as S,s as C}from"./CmCJ0SKP.js";import"./xihTtKlq.js";import{t as w}from"./BkEnd9_Z.js";import{s as T}from"./1vzbRbJ2.js";import{n as E}from"./1aUphu7Y.js";import{i as D,n as O}from"./DnPeA-9c.js";var k=new Set([`$$slots`,`$$events`,`$$legacy`]);function A(e,t){let n=x(t,k),r=[[`path`,{d:`M20 6 9 17l-5-5`}]];w(e,C({name:`check`},()=>n,{get iconNode(){return r}}))}var j=new Set([`$$slots`,`$$events`,`$$legacy`,`ref`,`value`,`class`,`data-slot`]),M=t(`<textarea></textarea>`);function N(e,t){n(t,!0);let r=u(t,`ref`,15,null),i=u(t,`value`,15),s=u(t,`data-slot`,3,`textarea`),c=x(t,j);var d=M();l(d),p(d,e=>({"data-slot":s(),class:e,...c}),[()=>D(`border-input bg-input/20 dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-md border px-2 py-2 text-sm transition-colors focus-visible:ring-2 aria-invalid:ring-2 md:text-xs/relaxed placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50`,t.class)]),_(d,e=>r(e),()=>r()),f(d,i),a(e,d),o()}var P=t(`<div class="mt-2 flex justify-end gap-1.5"><!> <!></div>`),F=t(`<div class="rounded-lg border border-amber-500/40 bg-amber-500/5 px-3 py-2.5 text-xs" role="group" aria-label="Mutation proposal"><div class="mb-1.5 flex items-center gap-1.5 font-medium text-amber-600 dark:text-amber-400"> </div> <div class="font-mono text-[11px]"> </div> <pre class="mt-1 max-h-32 overflow-auto rounded bg-muted/40 p-1.5 font-mono text-[10px] whitespace-pre-wrap"> </pre> <!></div>`);function I(t,l){n(l,!0);let u=y(!1),f=y(null),p=h(()=>c(f)??l.status),_=h(()=>{try{return JSON.stringify(l.input,null,2)}catch{return String(l.input)}});async function x(e){m(u,!0);try{let t=T(),n=e===`approve`?await t.agent.proposals.approve({proposalId:l.proposalId}):await t.agent.proposals.reject({proposalId:l.proposalId});m(f,n.proposal.status,!0),E(e===`approve`?c(p)===`executed`?`Proposal executed: ${l.capability}`:`Proposal failed: ${l.capability}`:`Proposal rejected: ${l.capability}`)}catch(e){E(e instanceof Error?e.message:String(e))}finally{m(u,!1)}}var C=F(),w=S(C),D=d(w),k=v(w,2),A=d(k,!0),j=v(k,2),M=d(j,!0),N=v(j,2),I=t=>{var n=P(),r=S(n);O(r,{size:`sm`,variant:`outline`,get disabled(){return c(u)},onclick:()=>void x(`reject`),children:(e,t)=>{g();var n=s(`Reject`);a(e,n)},$$slots:{default:!0}});var i=v(r,2);O(i,{size:`sm`,get disabled(){return c(u)},onclick:()=>void x(`approve`),children:(e,t)=>{g();var n=s(`Approve`);a(e,n)},$$slots:{default:!0}}),e(n),a(t,n)};i(N,e=>{c(p)===`pending`&&e(I)}),e(C),b(()=>{r(D,`Proposal — ${c(p)??``}`),r(A,l.capability),r(M,c(_))}),a(t,C),o()}export{N as n,A as r,I as t};