skill-creator 2.3.0 → 2.4.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 (57) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/cli.js +35809 -12291
  3. package/dist/cli.js.map +4 -4
  4. package/dist/daemon.js +23461 -2818
  5. package/dist/daemon.js.map +4 -4
  6. package/dist/package.json +1 -1
  7. package/dist/webui/_app/immutable/assets/0.B4ZC2KQW.css +2 -0
  8. package/dist/webui/_app/immutable/assets/SettingsPage.DclbL_Wf.css +1 -0
  9. package/dist/webui/_app/immutable/chunks/{8hp3I3ac.js → B0stYqX9.js} +1 -1
  10. package/dist/webui/_app/immutable/chunks/{DiaaOubc.js → BTuMeN4z.js} +1 -1
  11. package/dist/webui/_app/immutable/chunks/B_gnhZ39.js +1 -0
  12. package/dist/webui/_app/immutable/chunks/{DKepoBN5.js → BcvferwH.js} +1 -1
  13. package/dist/webui/_app/immutable/chunks/{j76fpbnQ.js → Bd1_Ly7G.js} +1 -1
  14. package/dist/webui/_app/immutable/chunks/{D3qCeXbe.js → BgJCuTDs.js} +1 -1
  15. package/dist/webui/_app/immutable/chunks/C67g-p2T.js +1 -0
  16. package/dist/webui/_app/immutable/chunks/{ByW1yjUW.js → CBFLFfGb.js} +1 -1
  17. package/dist/webui/_app/immutable/chunks/CD-NpLjk.js +6 -0
  18. package/dist/webui/_app/immutable/chunks/{DwIX6ZFE.js → CIxXWvxF.js} +1 -1
  19. package/dist/webui/_app/immutable/chunks/COXgCOd9.js +2 -0
  20. package/dist/webui/_app/immutable/chunks/Ccj5eiVa.js +1 -0
  21. package/dist/webui/_app/immutable/chunks/{BOPkZ98B.js → CdjBDc_u.js} +1 -1
  22. package/dist/webui/_app/immutable/chunks/Cp0lquqA.js +1 -0
  23. package/dist/webui/_app/immutable/chunks/Crg8KRap.js +5 -0
  24. package/dist/webui/_app/immutable/chunks/{B0-OMyfG.js → CvO5eq4f.js} +1 -1
  25. package/dist/webui/_app/immutable/chunks/{Cr5YUwJg.js → D6s79OPW.js} +1 -1
  26. package/dist/webui/_app/immutable/chunks/{oxP0dM6z.js → D7DTLcps.js} +1 -1
  27. package/dist/webui/_app/immutable/chunks/{C5MrAfWf.js → DGJ9QIPN.js} +1 -1
  28. package/dist/webui/_app/immutable/chunks/Dcf0klrH.js +5 -0
  29. package/dist/webui/_app/immutable/chunks/{CPbfZBJo.js → DlsPNMHX.js} +4 -4
  30. package/dist/webui/_app/immutable/chunks/Do_MDwCJ.js +1 -0
  31. package/dist/webui/_app/immutable/chunks/DovL68qD.js +1 -0
  32. package/dist/webui/_app/immutable/chunks/{CgxChsUX.js → Du6-3Tbt.js} +1 -1
  33. package/dist/webui/_app/immutable/chunks/M-b0y9AQ.js +1 -0
  34. package/dist/webui/_app/immutable/chunks/hIGXQE4_.js +1 -0
  35. package/dist/webui/_app/immutable/chunks/oJ4aK8PG.js +1 -0
  36. package/dist/webui/_app/immutable/chunks/vry1W47_.js +7 -0
  37. package/dist/webui/_app/immutable/entry/{app.BQ4neDVJ.js → app.SX0t6ojk.js} +2 -2
  38. package/dist/webui/_app/immutable/entry/start.gejSBBnR.js +1 -0
  39. package/dist/webui/_app/immutable/nodes/0.BTXc1wYu.js +229 -0
  40. package/dist/webui/_app/immutable/nodes/{1.BhX-6aiQ.js → 1.BY0DmHLP.js} +1 -1
  41. package/dist/webui/_app/immutable/nodes/{2.C7Br-rQ1.js → 2._osi8D6m.js} +1 -1
  42. package/dist/webui/_app/version.json +1 -1
  43. package/dist/webui/index.html +24 -21
  44. package/package.json +7 -5
  45. package/skills/skill-creator-v2/SKILL.md +50 -0
  46. package/skills/skill-creator-v2/references/tools.md +161 -0
  47. package/dist/webui/_app/immutable/assets/0.Dbnkcm0y.css +0 -2
  48. package/dist/webui/_app/immutable/chunks/B5sWuF6v.js +0 -1
  49. package/dist/webui/_app/immutable/chunks/BdXWsCWd.js +0 -3
  50. package/dist/webui/_app/immutable/chunks/BkjUgGsE.js +0 -1
  51. package/dist/webui/_app/immutable/chunks/CQD9uzpA.js +0 -1
  52. package/dist/webui/_app/immutable/chunks/DXKynIUR.js +0 -1
  53. package/dist/webui/_app/immutable/chunks/E8LHILEh.js +0 -1
  54. package/dist/webui/_app/immutable/chunks/myIHotqu.js +0 -2
  55. package/dist/webui/_app/immutable/chunks/p_ObVaZi.js +0 -5
  56. package/dist/webui/_app/immutable/entry/start.BqwTCU7F.js +0 -1
  57. package/dist/webui/_app/immutable/nodes/0.uOFdFHyI.js +0 -234
@@ -1,4 +1,4 @@
1
- import{$ as e,A as t,At as n,B as r,Ct as i,F as a,G as o,N as s,R as c,S as l,St as u,U as d,V as f,W as p,X as m,ct as h,ft as g,gt as _,j as v,kt as y,lt as b,m as x,mt as S,nt as C,o as w,ot as T,rt as E,s as D,st as O,ut as k,x as ee,z as A}from"./CmCJ0SKP.js";import"./xihTtKlq.js";import{t as j}from"./BkEnd9_Z.js";import{a as M,i as te,r as ne}from"./oxP0dM6z.js";import{a as N,b as re,s as P,t as F,v as ie,x as ae}from"./CPbfZBJo.js";import{i as oe,t as se,u as I}from"./BOPkZ98B.js";import{n as L}from"./1aUphu7Y.js";import{n as R,t as z}from"./DnPeA-9c.js";import{t as ce}from"./UeEccMjN.js";import{t as le}from"./BIfnT_mK.js";import{t as ue}from"./Bs27XW8_.js";import{t as de}from"./CeR4do8T.js";import{t as B}from"./Bl0jjuyR.js";import{t as fe}from"./D8Der6oM.js";var pe=F(N),V=F(N),H=F(N),U=F(N),W=F(N);async function me(e){let t=pe.issue();try{let n=await P().skillIntelligence.analyze({selections:e});return t.isCurrent()?{report:n.report,failures:n.failures,error:null}:{report:null,failures:[],error:null}}catch(e){return t.isCurrent()?{report:null,failures:[],error:e instanceof Error?e.message:String(e)}:{report:null,failures:[],error:null}}}async function he(e){let t=V.issue();try{let n=await P().skillIntelligence.propose(e);return t.isCurrent()?{proposal:n.proposal,error:null}:{proposal:null,error:null}}catch(e){return t.isCurrent()?{proposal:null,error:e instanceof Error?e.message:String(e)}:{proposal:null,error:null}}}async function ge(){let e=H.issue();try{let t=await P().skillIntelligence.list({});return e.isCurrent()?{proposals:t.proposals,error:null}:{proposals:null,error:null}}catch(t){return e.isCurrent()?{proposals:null,error:t instanceof Error?t.message:String(t)}:{proposals:null,error:null}}}async function _e(e){let t=U.issue();try{return await P().skillIntelligence.reject({proposalId:e}),t.isCurrent()?{rejected:!0,error:null}:{rejected:!1,error:null}}catch(e){return t.isCurrent()?{rejected:!1,error:e instanceof Error?e.message:String(e)}:{rejected:!1,error:null}}}async function ve(e){let t=W.issue();try{let n=await P().skillIntelligence.approve({proposalId:e});return t.isCurrent()?{result:n,error:null}:{result:null,error:null}}catch(e){return t.isCurrent()?{result:null,error:e instanceof Error?e.message:String(e)}:{result:null,error:null}}}var G=new Set([`$$slots`,`$$events`,`$$legacy`]);function ye(e,t){let n=w(t,G),r=[[`circle`,{cx:`18`,cy:`18`,r:`3`}],[`circle`,{cx:`6`,cy:`6`,r:`3`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`}]];j(e,D({name:`git-merge`},()=>n,{get iconNode(){return r}}))}var K=new Set([`$$slots`,`$$events`,`$$legacy`]);function be(e,t){let n=w(t,K),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]];j(e,D({name:`info`},()=>n,{get iconNode(){return r}}))}var q=new Set([`$$slots`,`$$events`,`$$legacy`]);function xe(e,t){let n=w(t,q),r=[[`path`,{d:`M18.36 6.64A9 9 0 0 1 20.77 15`}],[`path`,{d:`M6.16 6.16a9 9 0 1 0 12.68 12.68`}],[`path`,{d:`M12 2v4`}],[`path`,{d:`m2 2 20 20`}]];j(e,D({name:`power-off`},()=>n,{get iconNode(){return r}}))}var Se=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ce(e,t){let n=w(t,Se),r=[[`circle`,{cx:`6`,cy:`6`,r:`3`}],[`path`,{d:`M8.12 8.12 12 12`}],[`path`,{d:`M20 4 8.12 15.88`}],[`circle`,{cx:`6`,cy:`18`,r:`3`}],[`path`,{d:`M14.8 14.8 20 20`}]];j(e,D({name:`scissors`},()=>n,{get iconNode(){return r}}))}var we=r(`<!> Analyzing…`,1),Te=r(`<!> `,1),Ee=r(`<div class="flex items-center gap-2 py-6 text-xs text-muted-foreground"><!> Loading skills…</div>`),De=r(`<div class="flex flex-col items-start gap-2 py-6 text-xs text-destructive"><p class="break-words"> </p> <!></div>`),Oe=r(`<div class="flex flex-col items-center gap-2 py-16 text-center text-muted-foreground"><!> <p class="text-sm font-medium text-foreground">No report yet</p> <p class="max-w-xs text-xs">Run a read-only analysis to surface duplicates, conflicts, shared resources, and
1
+ import{$ as e,A as t,At as n,B as r,Ct as i,F as a,G as o,N as s,R as c,S as l,St as u,U as d,V as f,W as p,X as m,ct as h,ft as g,gt as _,j as v,kt as y,lt as b,m as x,mt as S,nt as C,o as w,ot as T,rt as E,s as D,st as O,ut as k,x as ee,z as A}from"./CmCJ0SKP.js";import"./xihTtKlq.js";import{t as j}from"./BkEnd9_Z.js";import{a as M,i as te,r as ne}from"./D7DTLcps.js";import{a as N,b as re,s as P,t as F,v as ie,x as ae}from"./DlsPNMHX.js";import{i as oe,t as se,u as I}from"./CdjBDc_u.js";import{n as L}from"./1aUphu7Y.js";import{n as R,t as z}from"./DnPeA-9c.js";import{t as ce}from"./UeEccMjN.js";import{t as le}from"./BIfnT_mK.js";import{t as ue}from"./Bs27XW8_.js";import{t as de}from"./CeR4do8T.js";import{t as B}from"./Bl0jjuyR.js";import{t as fe}from"./D8Der6oM.js";var pe=F(N),V=F(N),H=F(N),U=F(N),W=F(N);async function me(e){let t=pe.issue();try{let n=await P().skillIntelligence.analyze({selections:e});return t.isCurrent()?{report:n.report,failures:n.failures,error:null}:{report:null,failures:[],error:null}}catch(e){return t.isCurrent()?{report:null,failures:[],error:e instanceof Error?e.message:String(e)}:{report:null,failures:[],error:null}}}async function he(e){let t=V.issue();try{let n=await P().skillIntelligence.propose(e);return t.isCurrent()?{proposal:n.proposal,error:null}:{proposal:null,error:null}}catch(e){return t.isCurrent()?{proposal:null,error:e instanceof Error?e.message:String(e)}:{proposal:null,error:null}}}async function ge(){let e=H.issue();try{let t=await P().skillIntelligence.list({});return e.isCurrent()?{proposals:t.proposals,error:null}:{proposals:null,error:null}}catch(t){return e.isCurrent()?{proposals:null,error:t instanceof Error?t.message:String(t)}:{proposals:null,error:null}}}async function _e(e){let t=U.issue();try{return await P().skillIntelligence.reject({proposalId:e}),t.isCurrent()?{rejected:!0,error:null}:{rejected:!1,error:null}}catch(e){return t.isCurrent()?{rejected:!1,error:e instanceof Error?e.message:String(e)}:{rejected:!1,error:null}}}async function ve(e){let t=W.issue();try{let n=await P().skillIntelligence.approve({proposalId:e});return t.isCurrent()?{result:n,error:null}:{result:null,error:null}}catch(e){return t.isCurrent()?{result:null,error:e instanceof Error?e.message:String(e)}:{result:null,error:null}}}var G=new Set([`$$slots`,`$$events`,`$$legacy`]);function ye(e,t){let n=w(t,G),r=[[`circle`,{cx:`18`,cy:`18`,r:`3`}],[`circle`,{cx:`6`,cy:`6`,r:`3`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`}]];j(e,D({name:`git-merge`},()=>n,{get iconNode(){return r}}))}var K=new Set([`$$slots`,`$$events`,`$$legacy`]);function be(e,t){let n=w(t,K),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]];j(e,D({name:`info`},()=>n,{get iconNode(){return r}}))}var q=new Set([`$$slots`,`$$events`,`$$legacy`]);function xe(e,t){let n=w(t,q),r=[[`path`,{d:`M18.36 6.64A9 9 0 0 1 20.77 15`}],[`path`,{d:`M6.16 6.16a9 9 0 1 0 12.68 12.68`}],[`path`,{d:`M12 2v4`}],[`path`,{d:`m2 2 20 20`}]];j(e,D({name:`power-off`},()=>n,{get iconNode(){return r}}))}var Se=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ce(e,t){let n=w(t,Se),r=[[`circle`,{cx:`6`,cy:`6`,r:`3`}],[`path`,{d:`M8.12 8.12 12 12`}],[`path`,{d:`M20 4 8.12 15.88`}],[`circle`,{cx:`6`,cy:`18`,r:`3`}],[`path`,{d:`M14.8 14.8 20 20`}]];j(e,D({name:`scissors`},()=>n,{get iconNode(){return r}}))}var we=r(`<!> Analyzing…`,1),Te=r(`<!> `,1),Ee=r(`<div class="flex items-center gap-2 py-6 text-xs text-muted-foreground"><!> Loading skills…</div>`),De=r(`<div class="flex flex-col items-start gap-2 py-6 text-xs text-destructive"><p class="break-words"> </p> <!></div>`),Oe=r(`<div class="flex flex-col items-center gap-2 py-16 text-center text-muted-foreground"><!> <p class="text-sm font-medium text-foreground">No report yet</p> <p class="max-w-xs text-xs">Run a read-only analysis to surface duplicates, conflicts, shared resources, and
2
2
  structural findings with evidence.</p></div>`),ke=r(`<li class="text-muted-foreground"> </li>`),Ae=r(`<section class="mb-4 rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-xs" aria-label="Analysis failures"><p class="font-medium text-destructive">Some skills could not be analyzed:</p> <ul class="mt-1 space-y-0.5"></ul></section>`),je=f(`<line></line>`),Me=f(`<g class="cursor-pointer" role="button" tabindex="0"><title> </title><circle r="16" fill="var(--background, white)" stroke="var(--border, gray)"></circle><text text-anchor="middle" font-size="9" fill="var(--foreground, black)"> </text></g>`),Ne=r(`<section class="mb-4" aria-label="Skill relations graph"><h2 class="mb-2 text-xs font-medium text-muted-foreground">Relations</h2> <div class="overflow-x-auto rounded-md border border-border bg-muted/20"><svg role="img" aria-label="Skill relation graph" class="mx-auto block"><!><!></svg></div> <p class="mt-1 text-[10px] text-muted-foreground">Solid red = conflict · solid blue = overlap · dashed gray = shared resource. Click a
3
3
  node to open its detail.</p></section>`),Pe=r(`<p class="py-6 text-xs text-muted-foreground">No findings at this severity.</p>`),Fe=r(`<li class="text-[11px] leading-4"><span class="font-medium text-muted-foreground"> </span> <code class="break-words rounded bg-muted/60 px-1 py-0.5 text-[10px]"> </code></li>`),Ie=r(`<button type="button" class="text-[11px] text-primary underline-offset-2 hover:underline"> </button>`),Le=r(`<!> Propose edit`,1),Re=r(`<!> Propose disable`,1),ze=r(`<li class="rounded-md border border-border"><div class="flex flex-wrap items-center gap-2 border-b border-border/60 px-3 py-2"><!> <span class="min-w-0 flex-1 text-xs"> </span> <!></div> <div class="space-y-1.5 px-3 py-2"><ul class="space-y-1"></ul> <div class="flex flex-wrap items-center gap-1.5 pt-1"><!> <span class="flex-1"></span> <!> <!></div></div></li>`),Be=r(`<ul class="space-y-2"></ul>`),Ve=r(`<!> Refresh`,1),He=r(`<p class="py-4 text-xs text-muted-foreground">No pending proposals. Propose a fix from any finding above; nothing is applied until you
4
4
  approve it here.</p>`),Ue=r(`<!> Reject`,1),We=r(`<!> Approve`,1),Ge=r(`<p> </p>`),Ke=r(`<p class="mt-1 text-destructive">This proposal is stale. Re-analyze, then create a fresh proposal.</p>`),qe=r(`<div class="border-b border-border/60 px-3 py-2 text-[11px]"><!> <!></div>`),Je=r(`<li class="flex flex-wrap items-baseline gap-1"><button type="button" class="text-primary underline-offset-2 hover:underline"> </button> <code class="break-all text-[10px] text-muted-foreground"> </code></li>`),Ye=r(`<p class="leading-4 text-muted-foreground"> </p>`),Xe=r(`<p class="text-muted-foreground">Loading current document…</p>`),Ze=r(`<div class="grid gap-2 md:grid-cols-2"><div class="rounded border border-border bg-muted/20 p-2"><p class="mb-1 font-medium">Before</p> <!></div> <div class="rounded border border-border bg-muted/20 p-2"><p class="mb-1 font-medium">After (proposal)</p> <p class="leading-4 text-muted-foreground"> </p></div></div> <details><summary class="cursor-pointer text-muted-foreground">Preview body</summary> <pre class="mt-1 max-h-48 overflow-auto rounded bg-muted/40 p-2 text-[10px] whitespace-pre-wrap"> </pre></details>`,1),Qe=r(`<p class="rounded border border-border bg-muted/20 p-2 leading-4"> </p>`),$e=r(`<li><span class="font-medium"> </span> <span class="text-muted-foreground"> </span></li>`),et=r(`<ul class="space-y-1"></ul>`),tt=r(`<p><span class="font-medium"> </span> <span class="text-muted-foreground"> </span></p> <p class="text-muted-foreground"> </p>`,1),nt=r(`<div class="space-y-2 px-3 py-2 text-[11px]"><p class="text-muted-foreground"> </p> <p class="text-muted-foreground"> </p> <ul class="space-y-1"></ul> <!></div>`),rt=r(`<li class="rounded-md border border-border"><div class="flex flex-wrap items-center gap-2 border-b border-border/60 px-3 py-2"><!> <button type="button" class="min-w-0 flex-1 truncate text-left text-xs font-medium"> </button> <!> <!></div> <!> <!></li>`),it=r(`<section class="mb-4 flex flex-wrap items-center gap-2 text-xs" aria-label="Report summary"><!> <!> <!> <!> <!> <span class="flex-1"></span> <div class="flex items-center gap-1" role="group" aria-label="Severity filter"></div></section> <!> <!> <section aria-label="Findings"><h2 class="mb-2 text-xs font-medium text-muted-foreground">Findings</h2> <!></section> <section class="mt-6" aria-label="Proposal review"><div class="mb-2 flex items-center gap-2"><h2 class="text-xs font-medium text-muted-foreground">Proposals</h2> <!> <span class="flex-1"></span> <!></div> <!></section>`,1),at=r(`<div class="flex h-full min-h-0 flex-col overflow-y-auto"><header class="shrink-0 border-b border-border px-5 py-4"><div class="flex flex-wrap items-center gap-3"><!> <div class="min-w-0 flex-1"><h1 class="truncate text-base font-semibold">Skill Intelligence</h1> <p class="mt-0.5 text-xs text-muted-foreground"> </p></div> <!></div></header> <div class="min-h-0 flex-1 px-5 py-4"><!></div></div>`);function ot(r,f){i(f,!0);let p=ne(),w=te(),D=_(()=>p?.()?.wsId),j=_(()=>p?.()?.providerId),P=_(()=>w?.()??{}),pe=_(()=>m(P).severity??`all`),V=_(()=>{if(!m(D)||!m(j))return null;let e=ae.safeParse(m(D)),t=re.safeParse(m(j));return!e.success||!t.success?null:{workspaceId:e.data,providerId:t.data}}),H=S(null),U=S(k([])),W=S(!1),G=S(null);F(N),E(()=>{m(V)&&oe(m(V))});async function K(){let t=m(V);if(!t||m(W))return;let n=e(()=>I.skills);if(n.length===0){L(`No skills discovered in this provider.`);return}g(W,!0),g(G,null);try{let e=await me(n.map(e=>({...t,skillId:e.id})));if(!e.report&&!e.error)return;if(g(H,e.report,!0),g(U,e.failures,!0),g(G,e.error,!0),e.report){let t=q(e.report.findings);L(`Analyzed ${e.report.snapshots.length} skills · ${t.error} errors · ${t.warning} warnings.`)}}finally{g(W,!1)}}function q(e){return{error:e.filter(e=>e.severity===`error`).length,warning:e.filter(e=>e.severity===`warning`).length,info:e.filter(e=>e.severity===`info`).length}}let Se=_(()=>m(H)?m(pe)===`all`?m(H).findings:m(H).findings.filter(e=>e.severity===m(pe)):[]);function ot(e){m(D)&&m(j)&&M(`workspaces.intelligence`,{wsId:m(D),providerId:m(j)},{severity:e===`all`?void 0:e},`REPLACE`)}let st=_(()=>{let e=new Map;for(let t of m(H)?.snapshots??[])e.set(t.skillId,t.name);return t=>e.get(t)??t});function ct(e){m(D)&&m(j)&&M(`workspaces.provider`,{wsId:m(D),providerId:m(j)},{skill:e,view:`detail`})}let lt=S(k([])),ut=S(!1),J=S(!1),Y=S(null),X=S(null),dt=S(null),ft=S(k({})),Z=S(null);E(()=>{Q()});async function Q(){g(ut,!0);try{let e=await ge();e.proposals&&g(lt,e.proposals,!0)}finally{g(ut,!1)}}async function pt(e){if(g(Z,m(Z)===e.id?null:e.id,!0),m(Z)===e.id&&e.payload.kind===`edit`)for(let t of e.payload.edits){let e=ie.safeParse(t.selection.skillId);if(e.success)try{let n=await se(t.selection,e.data);g(ft,{...m(ft),[t.selection.skillId]:n},!0)}catch{}}}async function mt(e){if(!m(Y)){g(Y,e.id,!0);try{let{result:t,error:n}=await ve(e.id);if(n){L(n);return}if(!t)return;g(dt,{proposalId:e.id,result:t},!0),t.conflicts>0?L(`${t.conflicts} conflict(s): skill changed after the proposal. Re-analyze.`,{label:`Re-analyze`,run:()=>void K()}):t.failed>0?L(`Applied with ${t.failed} failure(s).`):L(`Applied ${t.applied} change(s).`),await Q(),await ht()}finally{g(Y,null)}}}async function ht(){let e=m(V);e&&await oe(e)}async function gt(e){if(!m(X)){g(X,e.id,!0);try{let{error:t}=await _e(e.id);t&&L(t),await Q()}finally{g(X,null)}}}async function _t(e){let t=m(V);if(t&&!m(J)){g(J,!0);try{let{proposal:n,error:r}=await he({payload:{kind:`disable`,selections:e.skillIds.map(e=>({...t,skillId:e})),reason:e.message},findingIds:[e.id],rationale:`Address "${e.kind}": ${e.message}`});r&&L(r),n&&(L(`Disable proposal drafted for review.`),await Q())}finally{g(J,!1)}}}async function vt(e){let t=m(V);if(t&&!m(J)&&e.skillIds.length===1){g(J,!0);try{let n=ie.safeParse(e.skillIds[0]);if(!n.success)return;let r=await se(t,n.data),{frontmatter:i,body:a}=yt(r.content),o=`${i.description??``} Reviewed via skill intelligence (${e.kind}).`.trim(),{proposal:s,error:c}=await he({payload:{kind:`edit`,edits:[{selection:{...t,skillId:n.data},frontmatter:{...i,name:r.name,description:o},body:a}]},findingIds:[e.id],rationale:`Address "${e.kind}": ${e.message}`});c&&L(c),s&&(L(`Edit proposal drafted for review.`),await Q())}catch(e){L(e instanceof Error?e.message:String(e))}finally{g(J,!1)}}}function yt(e){let t=e.replace(/\r\n/g,`
@@ -1,2 +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"./8hp3I3ac.js";import"./xihTtKlq.js";import"./DXKynIUR.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"./DiaaOubc.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??``}
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"./B0stYqX9.js";import"./xihTtKlq.js";import"./oJ4aK8PG.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"./BTuMeN4z.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
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};
@@ -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"./CPbfZBJo.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"./DlsPNMHX.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};
@@ -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{$ 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
+ 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"./D7DTLcps.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"./DlsPNMHX.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"./CdjBDc_u.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};
@@ -0,0 +1,6 @@
1
+ import{A as e,At as t,B as n,Ct as r,D as i,F as a,G as o,K as s,M as c,Mt as l,N as u,Q as d,R as f,St as p,U as m,W as h,X as g,_,a as v,at as y,b,ct as x,d as S,ft as C,gt as w,j as T,kt as E,l as D,lt as O,m as k,mt as A,nt as j,o as M,ot as N,p as P,rt as F,s as I,st as L,ut as R,v as z,x as B,z as ee}from"./CmCJ0SKP.js";import{t as V}from"./B0stYqX9.js";import"./xihTtKlq.js";import"./oJ4aK8PG.js";import{t as H}from"./BkEnd9_Z.js";import{r as U}from"./D7DTLcps.js";import{A as W,C as G,D as K,a as q,f as J,g as Y,o as X,p as te,r as Z,t as ne,w as re}from"./DlsPNMHX.js";import{a as ie,c as ae,d as oe,i as Q,l as se,n as ce,o as le,s as ue,t as de,u as fe}from"./B_gnhZ39.js";import"./CdjBDc_u.js";import{n as pe}from"./1aUphu7Y.js";import{n as me}from"./DnPeA-9c.js";import{t as he}from"./DOjT7y5f.js";import{C as ge,L as _e,T as ve,V as ye,a as be,f as xe,l as Se,p as Ce,r as $,u as we,v as Te}from"./Ccj5eiVa.js";import{n as Ee,t as De}from"./DovL68qD.js";import{n as Oe,t as ke}from"./hIGXQE4_.js";var Ae=n(`<button><span class="flex items-center gap-1 font-medium"> </span> <span class="mt-0.5 block text-[10px] leading-snug text-muted-foreground"> </span></button>`),je=n(`<button> </button>`),Me=n(`<button> <span class="ml-1 text-[9px] text-muted-foreground"> </span></button>`),Ne=n(`<section class="space-y-1.5" aria-label="Default mode"><span class="text-[11px] font-medium text-muted-foreground">Default mode</span> <div class="grid grid-cols-2 gap-1.5"></div></section> <section class="space-y-1.5" aria-label="Behavior"><span class="text-[11px] font-medium text-muted-foreground">Behavior</span> <div class="space-y-1"><span class="text-[10px] text-muted-foreground">LLM preset</span> <div class="flex gap-1.5"></div></div> <div class="space-y-1"><span class="text-[10px] text-muted-foreground">Approval policy</span> <div class="flex gap-1.5"></div></div> <div class="space-y-1" aria-label="Busy Enter"><span class="text-[10px] text-muted-foreground">Busy Enter — what a plain Enter does while the agent is working</span> <div class="flex gap-1.5"></div></div></section>`,1),Pe=n(`<div class="text-xs text-muted-foreground">Loading…</div>`),Fe=n(`<div class="flex items-center justify-between gap-2 text-xs text-muted-foreground">Agent settings unavailable <!></div>`),Ie=n(`<div class="text-xs text-destructive" role="alert"> </div>`),Le=n(`<div class="space-y-4"><div><h3 class="text-sm font-medium">Agent</h3> <p class="mt-0.5 text-[11px] text-muted-foreground">Defaults for new sessions; the panel header switches an existing session's mode.</p></div> <!> <!></div>`);function Re(n,i){r(i,!0);let s=A(null),c=[`deterministic`,`live`],l=[`ask`,`never`],d=[{mode:`queue`,label:`Queue`,hint:`after the current turn`},{mode:`steer`,label:`Steer`,hint:`into the current turn`}],h=w(()=>$.view);async function _(e){let t=await ve(e);t&&(t.outcome===`rejected`?C(s,`${t.code}: ${t.detail}`):t.outcome===`error`?C(s,t.message,!0):C(s,null))}var v=Le(),y=O(N(v),2),b=n=>{var r=Ne(),i=L(r),s=O(N(i),2);e(s,21,()=>J,e=>e.id,(e,n)=>{var r=Ae(),i=N(r),s=x(i,!0),c=O(i,2),l=x(c,!0);t(r),j(()=>{B(r,1,`rounded-md border p-2 text-left transition-colors ${g(h).settings.defaultMode===g(n).id?`border-primary bg-primary/10`:`border-border hover:bg-muted`}`),k(r,`aria-pressed`,g(h).settings.defaultMode===g(n).id),r.disabled=$.updating,a(s,g(n).label),a(l,g(n).description)}),o(`click`,r,()=>void _({defaultMode:g(n).id})),f(e,r)}),t(s),t(i);var u=O(i,2),p=O(N(u),2),m=O(N(p),2);e(m,20,()=>c,e=>e,(e,t)=>{var n=je(),r=x(n,!0);j(()=>{B(n,1,`flex-1 rounded-md border px-2 py-1 transition-colors ${g(h).settings.preset===t?`border-primary bg-primary/10 text-primary`:`border-border hover:bg-muted`}`),k(n,`aria-pressed`,g(h).settings.preset===t),n.disabled=$.updating,a(r,t)}),o(`click`,n,()=>void _({preset:t})),f(e,n)}),t(m),t(p);var v=O(p,2),y=O(N(v),2);e(y,20,()=>l,e=>e,(e,t)=>{var n=je(),r=x(n,!0);j(()=>{B(n,1,`flex-1 rounded-md border px-2 py-1 transition-colors ${g(h).settings.permissions.approvalPolicy===t?`border-primary bg-primary/10 text-primary`:`border-border hover:bg-muted`}`),k(n,`aria-pressed`,g(h).settings.permissions.approvalPolicy===t),n.disabled=$.updating,a(r,t)}),o(`click`,n,()=>void _({permissions:{approvalPolicy:t}})),f(e,n)}),t(y),t(v);var b=O(v,2),S=O(N(b),2);e(S,21,()=>d,e=>e.mode,(e,n)=>{var r=Me(),i=N(r),s=O(i),c=x(s,!0);t(r),j(()=>{B(r,1,`flex-1 rounded-md border px-2 py-1 transition-colors ${_e.mode===g(n).mode?`border-primary bg-primary/10 text-primary`:`border-border hover:bg-muted`}`),k(r,`aria-pressed`,_e.mode===g(n).mode),a(i,`${g(n).label??``} `),a(c,g(n).hint)}),o(`click`,r,()=>ye(g(n).mode)),f(e,r)}),t(S),t(b),t(u),f(n,r)},S=e=>{var t=Pe();f(e,t)},T=e=>{var n=Fe(),r=O(N(n));me(r,{size:`sm`,class:`h-7 px-2.5 text-xs`,onclick:()=>void Ce(),children:(e,t)=>{E();var n=m(`Retry`);f(e,n)},$$slots:{default:!0}}),t(n),f(e,n)};u(y,e=>{g(h)?e(b):$.loading?e(S,1):e(T,-1)});var D=O(y,2),M=e=>{var t=Ie(),n=x(t,!0);j(()=>a(n,g(s))),f(e,t)};u(D,e=>{g(s)&&e(M)}),t(v),f(n,v),p()}h([`click`]);var ze=new Set([`$$slots`,`$$events`,`$$legacy`]);function Be(e,t){let n=M(t,ze),r=[[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`}],[`path`,{d:`m2 22 3-3`}],[`path`,{d:`M7.5 13.5 10 11`}],[`path`,{d:`M10.5 16.5 13 14`}],[`path`,{d:`m18 3-4 4h6l-4 4`}]];H(e,I({name:`plug-zap`},()=>n,{get iconNode(){return r}}))}var Ve=new Set([`$$slots`,`$$events`,`$$legacy`]);function He(e,t){let n=M(t,Ve),r=[[`path`,{d:`M12 22v-5`}],[`path`,{d:`M15 8V2`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`}],[`path`,{d:`M9 8V2`}]];H(e,I({name:`plug`},()=>n,{get iconNode(){return r}}))}var Ue=n(`<p class="text-[10px] text-destructive" role="alert"> </p>`),We=n(`<p class="text-[10px] text-muted-foreground">The panel reconnects automatically; keep the daemon running via the tray or the <code class="rounded bg-muted px-1 font-mono">skill-creator start</code> command.</p>`),Ge=n(`<div class="space-y-4"><div><h3 class="text-sm font-medium">General</h3> <p class="mt-0.5 text-[11px] text-muted-foreground">Shell-level state of this Skill Creator instance.</p></div> <section class="space-y-1.5" aria-label="Daemon connection"><span class="text-[11px] font-medium text-muted-foreground">Daemon connection</span> <div class="flex items-center gap-2 rounded-md border border-border bg-background/60 p-2.5"><!> <span> </span></div> <!></section></div>`);function Ke(e,n){r(n,!0);let i=w(()=>{switch(Z.status){case`connected`:return`Connected`;case`connecting`:return`Connecting…`;case`disconnected`:return`Disconnected`;default:return`Idle`}});var o=Ge(),s=O(N(o),2),c=O(N(s),2),l=N(c),d=e=>{Be(e,{class:`h-4 w-4 text-primary`})},m=e=>{{let t=w(()=>Z.status===`disconnected`?`text-destructive`:`text-muted-foreground`);He(e,{get class(){return`h-4 w-4 ${g(t)??``}`}})}};u(l,e=>{Z.status===`connected`?e(d):e(m,-1)});var h=O(l,2),_=x(h,!0);t(c);var v=O(c,2),y=e=>{var t=Ue(),n=x(t,!0);j(()=>a(n,Z.error)),f(e,t)},b=e=>{var t=We();f(e,t)};u(v,e=>{Z.status===`disconnected`?e(y):e(b,-1)}),t(s),t(o),j(()=>{B(h,1,`text-xs ${Z.status===`connected`?`text-primary`:Z.status===`disconnected`?`text-destructive`:`text-muted-foreground`}`),a(_,g(i))}),f(e,o),p()}var qe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Je(e,t){let n=M(t,qe),r=[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`}],[`path`,{d:`m2 2 20 20`}]];H(e,I({name:`eye-off`},()=>n,{get iconNode(){return r}}))}var Ye=new Set([`$$slots`,`$$events`,`$$legacy`]);function Xe(e,t){let n=M(t,Ye),r=[[`path`,{d:`M12 3v12`}],[`path`,{d:`m17 8-5-5-5 5`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}]];H(e,I({name:`upload`},()=>n,{get iconNode(){return r}}))}var Ze=n(`<img alt=""/>`),Qe=n(`<span class="flex h-5 w-5 items-center justify-center rounded text-[10px] font-semibold text-white" aria-hidden="true"> </span>`),$e=n(`<span class="flex h-12 w-12 shrink-0 items-center justify-center rounded-md text-base font-semibold text-white" aria-hidden="true"> </span>`),et=n(`<button type="button"><span class="flex h-4 w-4 items-center justify-center rounded" aria-hidden="true"><img alt="" class="h-3.5 w-3.5 object-contain dark:invert"/></span></button>`),tt=n(`<p class="text-[9px] text-muted-foreground">Duplicate catalog icons are merged; hover shows sharing providers.</p>`),nt=n(`<div class="space-y-1"><span class="text-[10px] font-medium text-muted-foreground">Icon</span> <div class="grid grid-cols-7 place-items-center gap-1"><button type="button" title="No icon — letter avatar with the color below (suppresses the catalog icon)" aria-label="No icon (letter avatar)"><span class="flex h-4 w-4 items-center justify-center rounded text-[8px] font-semibold text-white" aria-hidden="true"> </span></button> <!></div> <!></div>`),rt=n(`<button type="button" title="No icon — letter avatar with the color below" aria-label="No icon (letter avatar)"><span class="flex h-4 w-4 shrink-0 items-center justify-center rounded text-[8px] font-semibold text-white" aria-hidden="true"> </span> No icon — use the letter avatar</button>`),it=n(`<button type="button"><span class="h-4 w-4 rounded" aria-hidden="true"></span></button>`),at=n(`<span class="text-[9px] text-destructive" role="alert">invalid hex</span>`),ot=n(`<div class="space-y-1 border-t border-border pt-1.5"><span class="text-[10px] font-medium text-muted-foreground">Avatar color</span> <div class="flex flex-wrap items-center gap-1"><button type="button" title="Auto — deterministic hue from the route name" aria-label="Auto avatar color"><span class="flex h-4 w-4 items-center justify-center rounded text-[8px] font-semibold text-white" aria-hidden="true"> </span></button> <!></div> <div class="flex items-center gap-1"><input aria-label="Avatar color hex" placeholder="#3b82f6"/> <!></div></div>`),st=n(`<div class="space-y-1 border-t border-border pt-1.5"><span class="text-[10px] font-medium text-muted-foreground">Letter</span> <div class="flex items-center gap-1.5"><input class="h-6 w-12 rounded border border-border bg-background px-1.5 text-center text-[11px] font-semibold uppercase outline-none focus:border-primary/60" aria-label="Avatar letter" maxlength="2"/> <button type="button" class="rounded px-1.5 py-0.5 text-[10px] text-muted-foreground transition-colors hover:bg-muted hover:text-foreground" title="Reset to the first letter of the display name">Reset</button></div></div>`),ct=n(`<div class="absolute left-0 top-[calc(100%+4px)] z-30 w-[280px] space-y-2 rounded-lg border border-border bg-popover p-2 text-popover-foreground shadow-md" role="dialog" aria-label="Route icon and avatar choices"><div class="flex items-center gap-2"><!> <div class="min-w-0"><p class="truncate text-xs font-medium"> </p> <p class="text-[10px] text-muted-foreground"> </p></div></div> <!> <div class="flex items-center justify-between gap-2 border-t border-border pt-1.5"><span class="text-[10px] text-muted-foreground">Custom image · ≤64 KiB</span> <button type="button" class="flex h-6 items-center gap-1 rounded px-1.5 text-[10px] hover:bg-muted"><!> Upload</button></div> <input type="file" accept=".svg,.png,.webp" class="hidden" aria-label="Upload custom icon"/> <!> <!></div>`),lt=n(`<div class="relative shrink-0"><button type="button" aria-label="Change route icon"><!> <span class="absolute bottom-0 right-0 hidden bg-background p-px text-foreground group-hover:block" aria-hidden="true"><!></span></button> <!></div>`);function ut(n,i){r(i,!0);let c=v(i,`icon`,3,null),l=v(i,`label`,3,``),d=v(i,`catalogIcons`,19,()=>[]),m=v(i,`disabled`,3,!1),h=[`#ef4444`,`#f59e0b`,`#10b981`,`#06b6d4`,`#3b82f6`,`#8b5cf6`,`#f43f5e`,`#64748b`],_=/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i,T=A(!1),M=A(null),I=A(null),L=A(``),R=A(``),z=A(!1);F(()=>{C(L,i.letter,!0)});let ee=w(()=>{let e=new Map;for(let t of d()){let n=e.get(t.icon);n?n.providers.push(t.provider):e.set(t.icon,{icon:t.icon,providers:[t.provider]})}let t=[...e.values()];return t.sort((e,t)=>+!e.providers.includes(i.provider)-!t.providers.includes(i.provider)||e.providers[0].localeCompare(t.providers[0])),t}),V=w(()=>d().some(e=>e.provider===i.provider));function H(e){m()||(i.onPick(e),C(T,!1))}function U(){if(i.onLetter===void 0||m())return;let e=g(L).trim();if(e.length===0||e===i.letter){C(L,i.letter,!0);return}i.onLetter(e.slice(0,2))}function W(){i.onLetter===void 0||m()||(i.onLetter(void 0),C(L,i.letter,!0))}function G(){if(i.onColor===void 0||m())return;let e=g(R).trim();if(e.length===0){C(z,!1);return}if(!_.test(e)){C(z,!0);return}C(z,!1),C(R,``),i.onColor(e.toLowerCase())}function K(e){let t=e.currentTarget;if(!(t instanceof HTMLInputElement))return;let n=t.files?.[0];if(t.value=``,!n)return;let r=n.name.split(`.`).pop()?.toLowerCase()??``,i=ce[r]??``;if(i.length===0){pe(`Unsupported icon type “${n.type||r||n.name}” — use .svg, .png or .webp.`);return}let a=new FileReader;a.onerror=()=>{pe(`Could not read “${n.name}” — try another file.`)},a.onload=()=>{let e=typeof a.result==`string`?a.result:``;if(e.length===0){pe(`Could not read “${n.name}” — try another file.`);return}let t=e.startsWith(`data:${i}`)?e:se(e,i);if(t===null){pe(`Could not read “${n.name}” as an image.`);return}if(t.length>65536){pe(`Icon too large — pick an image under 64 KiB.`);return}H(t)},a.readAsDataURL(n)}var q=lt();s(`keydown`,y,e=>{g(T)&&e.key===`Escape`&&C(T,!1)}),s(`pointerdown`,y,e=>{g(T)&&g(M)&&!g(M).contains(e.target)&&C(T,!1)});var J=N(q),Y=N(J),X=e=>{var t=Ze();j(e=>{k(t,`src`,c()),B(t,1,`h-5 w-5 object-contain ${e??``}`)},[()=>ie(c())?``:`dark:invert`]),f(e,t)},te=e=>{var t=Qe(),n=x(t,!0);j(()=>{b(t,`background: ${i.color??``}`),a(n,i.letter)}),f(e,t)};u(Y,e=>{c()?e(X):e(te,-1)});var Z=O(Y,2),ne=N(Z);de(ne,{class:`h-2.5 w-2.5`}),t(Z),t(J);var re=O(J,2),ae=n=>{var r=ct(),d=N(r),p=N(d),_=e=>{var t=Ze();j(e=>{k(t,`src`,c()),B(t,1,`h-12 w-12 shrink-0 object-contain ${e??``}`)},[()=>ie(c())?``:`dark:invert`]),f(e,t)},v=e=>{var t=$e(),n=x(t,!0);j(()=>{b(t,`background: ${i.color??``}`),a(n,i.letter)}),f(e,t)};u(p,e=>{c()?e(_):e(v,-1)});var y=O(p,2),w=N(y),A=x(w,!0),M=O(w,2),F=x(M,!0);t(y),t(d);var q=O(d,2),J=n=>{var r=nt(),s=O(N(r),2),l=N(s),d=N(l),p=x(d,!0);t(l);var m=O(l,2);e(m,17,()=>g(ee),e=>e.icon,(e,n)=>{var r=et(),a=N(r),s=x(a);t(r),j((e,t)=>{B(r,1,`flex h-6 w-6 items-center justify-center rounded ${c()===g(n).icon?`border border-primary/60 bg-primary/5`:`hover:bg-muted`}`),k(r,`title`,e),k(r,`aria-label`,`Use icon shared by ${t??``}`),b(a,`background: color-mix(in srgb, ${i.color??``} 18%, transparent)`),k(s,`src`,g(n).icon)},[()=>g(n).providers.join(`, `),()=>g(n).providers.length>1?g(n).providers.join(`, `):g(n).providers[0]]),o(`click`,r,()=>H(g(n).icon)),f(e,r)}),t(s);var h=O(s,2),_=e=>{var t=tt();f(e,t)};u(h,e=>{g(V)&&e(_)}),t(r),j(e=>{B(l,1,`flex h-6 w-6 items-center justify-center rounded border ${c()===null?`border-primary/50 bg-primary/5`:`border-border hover:bg-muted`}`),b(d,`background: ${i.color??``}`),a(p,e)},[()=>i.letter.slice(0,1)]),o(`click`,l,()=>{if(i.onSuppress!==void 0){i.onSuppress(),C(T,!1);return}H(void 0)}),f(n,r)},Y=e=>{var n=rt(),r=N(n),s=x(r,!0);E(),t(n),j(e=>{B(n,1,`flex w-full items-center gap-2 rounded px-1 py-0.5 text-[10px] transition-colors hover:bg-muted ${c()===null?`text-primary`:`text-muted-foreground`}`),b(r,`background: ${i.color??``}`),a(s,e)},[()=>i.letter.slice(0,1)]),o(`click`,n,()=>H(void 0)),f(e,n)};u(q,e=>{g(ee).length>0?e(J):e(Y,-1)});var X=O(q,2),te=O(N(X),2);Xe(N(te),{class:`h-3 w-3`}),E(),t(te),t(X);var Z=O(X,2);D(Z,e=>C(I,e),()=>g(I));var ne=O(Z,2),re=n=>{var r=ot(),c=O(N(r),2),l=N(c),d=N(l),p=x(d,!0);t(l);var _=O(l,2);e(_,16,()=>h,e=>e,(e,t)=>{var n=it(),r=x(n);j(e=>{B(n,1,`flex h-6 w-6 items-center justify-center rounded border ${e??``}`),k(n,`title`,t),k(n,`aria-label`,`Avatar color ${t??``}`),b(r,`background: ${t??``}`)},[()=>i.color.toLowerCase()===t?`border-primary/60 bg-primary/5`:`border-border hover:bg-muted`]),o(`click`,n,()=>i.onColor?.(t)),f(e,n)}),t(c);var v=O(c,2),y=N(v);P(y);var w=O(y,2),T=e=>{var t=at();f(e,t)};u(w,e=>{g(z)&&e(T)}),t(v),t(r),j((e,t,n)=>{B(l,1,`flex h-6 w-6 items-center justify-center rounded border ${e??``}`),b(d,`background: ${t??``}`),a(p,n),B(y,1,`h-6 w-24 rounded border bg-background px-1.5 font-mono text-[10px] outline-none focus:border-primary/60 ${g(z)?`border-destructive`:`border-border`}`),y.disabled=m()},[()=>i.color===Q(i.provider)?`border-primary/50 bg-primary/5`:`border-border hover:bg-muted`,()=>Q(i.provider),()=>i.letter.slice(0,1)]),o(`click`,l,()=>i.onColor?.(void 0)),s(`blur`,y,()=>G()),o(`keydown`,y,e=>{e.key===`Enter`&&G()}),S(y,()=>g(R),e=>C(R,e)),f(n,r)};u(ne,e=>{i.onColor!==void 0&&e(re)});var ae=O(ne,2),oe=e=>{var n=st(),r=O(N(n),2),i=N(r);P(i);var a=O(i,2);t(r),t(n),j(()=>i.disabled=m()),s(`blur`,i,()=>U()),o(`keydown`,i,e=>{e.key===`Enter`&&U()}),S(i,()=>g(L),e=>C(L,e)),o(`click`,a,W),f(e,n)};u(ae,e=>{i.onLetter!==void 0&&e(oe)}),t(r),j(e=>{a(A,l()||i.provider),a(F,e)},[()=>c()?ie(c())?`Legacy letter avatar`:`Icon override`:`Letter avatar`]),o(`click`,te,()=>g(I)?.click()),o(`change`,Z,K),f(n,r)};u(re,e=>{g(T)&&e(ae)}),t(q),D(q,e=>C(M,e),()=>g(M)),j(()=>{B(J,1,`group relative flex h-7 w-7 items-center justify-center overflow-hidden rounded-md border border-border bg-background transition-colors hover:border-primary/50 ${m()?`pointer-events-none opacity-50`:``}`),k(J,`aria-expanded`,g(T)),J.disabled=m()}),o(`click`,J,()=>C(T,!g(T))),f(n,q),p()}h([`click`,`change`,`keydown`]);var dt=n(`<span class="flex items-center gap-1 rounded bg-muted px-1.5 py-0.5 text-[10px]"> <button type="button" class="rounded px-0.5 text-muted-foreground hover:text-destructive">×</button></span>`),ft=n(`<span class="shrink-0 rounded bg-primary/10 px-1 text-[9px] text-primary">vision</span>`),pt=n(`<li><button role="option"><span class="min-w-0 flex-1 truncate"> <span class="text-muted-foreground"> </span></span> <!></button></li>`),mt=n(`<ul class="absolute z-10 mt-1 max-h-44 w-full overflow-y-auto rounded-md border border-border bg-popover p-1 text-xs shadow-md" role="listbox" aria-label="Model suggestions"></ul>`),ht=n(`<div class="relative"><div class="flex min-h-8 flex-wrap items-center gap-1 rounded-md border border-border bg-background px-1.5 py-1 text-xs focus-within:border-primary/60" role="group" aria-label="Model ids"><input class="order-last h-6 min-w-24 flex-1 bg-transparent text-xs outline-none"/> <!></div> <!></div>`);function gt(n,i){r(i,!0);let c=v(i,`placeholder`,3,`Add model…`),l=v(i,`disabled`,3,!1),d=A(``),m=A(!1),h=A(0),_=w(()=>{let e=g(d).trim().toLowerCase(),t=i.candidates.filter(e=>!i.selected.includes(e.id));return e.length===0?t.slice(0,8):t.filter(t=>t.id.toLowerCase().includes(e)||(t.name??``).toLowerCase().includes(e)).slice(0,8)});function y(e){let t=e.trim();if(t.length===0||i.selected.includes(t)){C(d,``);return}i.onchange([...i.selected,t]),C(d,``),C(m,!1)}function b(e){i.onchange(i.selected.filter(t=>t!==e))}function T(e){if(e.key===`Escape`){C(m,!1);return}if(e.key===`ArrowDown`&&g(_).length>0){e.preventDefault(),C(m,!0),C(h,Math.min(g(h)+1,g(_).length-1),!0);return}if(e.key===`ArrowUp`&&g(_).length>0){e.preventDefault(),C(h,Math.max(g(h)-1,0),!0);return}if(e.key===`Enter`||e.key===`,`){e.preventDefault(),g(m)&&g(_)[g(h)]&&g(d).trim().length>0?y(g(_)[g(h)].id):g(d).trim().length>0&&y(g(d));return}e.key===`Backspace`&&g(d).length===0&&i.selected.length>0&&i.onchange(i.selected.slice(0,-1))}var E=ht(),D=N(E),M=N(D);P(M);var F=O(M,2);e(F,16,()=>i.selected,e=>e,(e,n)=>{var r=dt(),i=N(r),s=O(i);t(r),j(()=>{a(i,`${n??``} `),k(s,`aria-label`,`Remove ${n??``}`),s.disabled=l()}),o(`click`,s,()=>b(n)),f(e,r)}),t(D);var I=O(D,2),L=n=>{var r=mt();e(r,23,()=>g(_),e=>e.id,(e,n,r)=>{var i=pt(),c=N(i),l=N(c),d=N(l),p=O(d),m=x(p);t(l);var _=O(l,2),v=e=>{var t=ft();f(e,t)};u(_,e=>{g(n).image&&e(v)}),t(c),t(i),j(()=>{B(c,1,`flex w-full items-center gap-2 rounded px-1.5 py-1 text-left ${g(r)===g(h)?`bg-accent`:``} hover:bg-accent`),k(c,`aria-selected`,g(r)===g(h)),a(d,`${g(n).name??g(n).id??``} `),a(m,`(${g(n).id??``})`)}),o(`mousedown`,c,e=>e.preventDefault()),o(`click`,c,()=>y(g(n).id)),s(`focus`,c,()=>C(h,g(r),!0)),f(e,i)}),t(r),f(n,r)};u(I,e=>{g(m)&&g(_).length>0&&e(L)}),t(E),j(()=>{k(M,`placeholder`,c()),M.disabled=l()}),o(`keydown`,M,T),s(`focus`,M,()=>{C(m,!0),C(h,0)}),o(`input`,M,()=>{C(m,!0),C(h,0)}),s(`blur`,M,()=>setTimeout(()=>C(m,!1),120)),S(M,()=>g(d),e=>C(d,e)),f(n,E),p()}h([`keydown`,`input`,`click`,`mousedown`]);function _t(e){return e.split(/[-_]+/).filter(e=>e.length>0).map(e=>/^[a-z]{1,3}$/.test(e)?e.toUpperCase():e.slice(0,1).toUpperCase()+e.slice(1)).join(` `)}function vt(e){if(!Number.isSafeInteger(e)||e<=0)return String(e);if(e%1048576==0)return`${e/1048576}M`;if(e>=1024){let t=e/1024;return`${Number.isInteger(t)?t.toString():t.toFixed(1)}k`}return String(e)}function yt(e){return e.includes(`/`)||e.includes(`@`)}function bt(e){return{id:e.id,...e.name===void 0?{}:{name:e.name},image:e.image,...e.contextWindow===void 0?{}:{contextWindow:e.contextWindow},...e.supportsReasoningEffort===void 0?{}:{supportsReasoningEffort:e.supportsReasoningEffort},...e.inputTypes===void 0?{}:{inputTypes:[...e.inputTypes]},...e.maxOutputTokens===void 0?{}:{maxOutputTokens:e.maxOutputTokens},...e.effortTiers===void 0?{}:{effortTiers:[...e.effortTiers]}}}var xt=(e,t)=>e.id<t.id?-1:+(e.id>t.id);function St(e,t=``){let n=new Map,r=new Map;for(let i of e?.providers??[]){let e=i.provider===t;for(let t of i.models)if(e)n.has(t.id)||n.set(t.id,bt(t)),r.delete(t.id);else if(!n.has(t.id)&&!r.has(t.id)){if(yt(t.id))continue;r.set(t.id,bt(t))}}return[...n.values()].sort(xt).concat([...r.values()].sort(xt))}var Ct=[`minimal`,`low`,`medium`,`high`,`xhigh`,`max`],wt=[`low`,`high`,`max`],Tt=`Catalog marks this model as not supporting reasoning effort`;function Et(e,t){if(t?.supportsReasoningEffort===!1)return{candidates:[],hint:Tt};let n=new Set(Ct);for(let e of t?.effortTiers??[]){let t=e.trim();t.length>0&&n.add(t)}for(let t of e)for(let e of t.efforts??[]){let t=e.trim();t.length>0&&n.add(t)}return{candidates:[...n].sort((e,t)=>e<t?-1:+(e>t)),hint:null}}function Dt(e){return{id:e.id,...e.name===void 0?{}:{name:e.name},...e.contextWindow===void 0?{}:{contextWindow:e.contextWindow},...e.maxOutputTokens===void 0?{}:{maxOutputTokens:e.maxOutputTokens},inputTypes:e.inputTypes??(e.image?[`text`,`image`]:[`text`]),outputTypes:[`text`],efforts:[...wt]}}var Ot=n(`<span class="h-1.5 w-1.5 shrink-0 rounded-full bg-amber-500" title="Unsaved changes" aria-label="Unsaved changes"></span>`),kt=n(`<span data-header-status="true"><!></span>`),At=n(`<option> </option>`),jt=n(`<p class="text-[10px] text-muted-foreground" role="note"> </p>`),Mt=n(`<p class="text-[10px] text-destructive" role="alert">Invalid token value — use numbers, or shorthand like 253k / 0.5M.</p>`),Nt=n(`<button type="button"> </button>`),Pt=n(`<div class="grid grid-cols-2 gap-1.5"><label class="min-w-0 space-y-0.5"><span class="text-[10px] text-muted-foreground">Model id</span> <!> <datalist></datalist></label> <label class="min-w-0 space-y-0.5"><span class="text-[10px] text-muted-foreground">Name</span> <!></label></div> <div class="block space-y-0.5"><span class="text-[10px] text-muted-foreground">Efforts</span> <!> <!></div> <div class="grid grid-cols-2 gap-1.5"><label class="min-w-0 space-y-0.5"><span class="text-[10px] text-muted-foreground">Context window</span> <!></label> <label class="min-w-0 space-y-0.5"><span class="text-[10px] text-muted-foreground">Max output tokens</span> <!></label></div> <!> <div class="flex flex-wrap items-center justify-between gap-2"><div class="flex flex-wrap items-center gap-1"><span class="text-[10px] text-muted-foreground">Inputs:</span> <span class="rounded bg-primary px-1.5 py-0.5 text-[10px] font-medium text-primary-foreground" title="Text is always required" data-input-chip="text">text</span> <!></div> <div class="flex items-center gap-1"><span class="text-[10px] text-muted-foreground">Outputs:</span> <span class="rounded bg-primary px-1.5 py-0.5 text-[10px] font-medium text-primary-foreground" title="Text output is always required" data-output-chip="text">text</span> <button type="button" title="Image output (image-generation models)" data-output-chip="image">image</button></div></div> <div class="flex items-center justify-between gap-2 border-t border-border pt-1.5"><span data-form-status="true"><!></span> <span class="flex shrink-0 items-center gap-1.5"><!> <!></span></div>`,1),Ft=n(`<div class="space-y-1.5 rounded-md border border-border p-2"><div class="flex items-center justify-between gap-2"><div class="flex min-w-0 flex-1 items-center gap-1.5"><!> <span class="min-w-0 truncate text-xs font-medium" data-header-name="true"> </span> <!></div> <div class="flex shrink-0 items-center"><button type="button" class="flex h-11 w-11 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-50"><!></button> <button type="button" class="flex h-11 w-11 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-50"><!></button> <button type="button" class="flex h-11 w-11 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-destructive disabled:pointer-events-none disabled:opacity-50" title="Remove model"><!></button></div></div> <!></div>`);function It(n,i){r(i,!0);let s=v(i,`routeModels`,19,()=>[]),c=v(i,`provider`,3,``),l=v(i,`formKey`,3,``),d=v(i,`disabled`,3,!1),h=v(i,`dirty`,3,!1),_=v(i,`initialExpanded`,3,!1),y=w(()=>l().trim().length>0),b=[`image`,`video`,`pdf`],S=`model-id-candidates-${crypto.randomUUID()}`,T=A(R(i.model.id)),D=A(R(i.model.name??_t(i.model.id))),M=A(R(i.model.contextWindow===void 0?``:vt(i.model.contextWindow))),P=A(R(i.model.maxOutputTokens===void 0?``:vt(i.model.maxOutputTokens))),I=A(!1),z=A(!1),ee=A(R((i.model.outputTypes??[]).includes(`image`))),V=A(!1),H=A(!1),U=A(!1),W=A(!1),G=A(!1),K=A(!1),q=A(null),J=A(R(i.model.id)),X=A(``),te=A(R(_())),Z=w(()=>g(T).trim().length>0),ne=w(()=>g(Z)&&!g(W)&&!g(G)),re=w(()=>new Set(i.model.inputTypes??[`text`])),ie=w(()=>i.candidates.find(e=>e.id===g(T).trim())??null),ae=w(()=>Et(s(),g(ie))),oe=w(()=>g(X).trim()),Q=w(()=>i.model.name??(i.model.id.length>0?_t(i.model.id):`New model`)),se=w(()=>d()||!g(Z)||g(K)||i.api.length===0||i.baseURL.length===0||!g(y)&&!i.apiKeyConfigured&&g(oe).length===0);F(()=>{i.onvalidity(g(ne))});function ce(e){i.onchange({...i.model,...e})}function le(e){C(T,e,!0);let t=e.trim(),n=i.candidates.find(e=>e.id===t),r={id:t};n===void 0?(C(J,null),g(I)||(C(D,_t(t),!0),i.model.name!==void 0&&(r.name=void 0)),!g(V)&&i.model.contextWindow!==void 0&&(C(M,``),r.contextWindow=void 0),!g(H)&&i.model.maxOutputTokens!==void 0&&(C(P,``),r.maxOutputTokens=void 0),!g(z)&&i.model.inputTypes!==void 0&&(r.inputTypes=void 0),!g(ee)&&i.model.outputTypes!==void 0&&(r.outputTypes=void 0)):(t!==g(J)&&(C(I,!1),C(V,!1),C(H,!1),C(z,!1),C(ee,!1),C(U,!1),C(J,t,!0)),g(I)||(C(D,n.name??_t(n.id),!0),r.name=g(D)),g(V)||(n.contextWindow===void 0?i.model.contextWindow!==void 0&&(C(M,``),r.contextWindow=void 0):(C(M,vt(n.contextWindow),!0),r.contextWindow=n.contextWindow)),g(H)||(n.maxOutputTokens===void 0?i.model.maxOutputTokens!==void 0&&(C(P,``),r.maxOutputTokens=void 0):(C(P,vt(n.maxOutputTokens),!0),r.maxOutputTokens=n.maxOutputTokens)),g(z)||(r.inputTypes=n.inputTypes??(n.image?[`text`,`image`]:[`text`])),g(ee)||(r.outputTypes=[`text`]),!g(U)&&i.model.efforts===void 0&&(r.efforts=[...wt])),ce(r)}function ue(e){C(D,e,!0),C(I,!0),ce(e.trim().length>0?{name:e.trim()}:{name:void 0})}function fe(e){let t=g(e===`contextWindow`?M:P).trim(),n=t=>{C(e===`contextWindow`?W:G,t,!0)};if(t.length===0){n(!1),ce(e===`contextWindow`?{contextWindow:void 0}:{maxOutputTokens:void 0});return}let r=Y(t);if(r===null){n(!0);return}n(!1),e===`contextWindow`?(C(M,vt(r),!0),C(V,!0)):(C(P,vt(r),!0),C(H,!0)),ce(e===`contextWindow`?{contextWindow:r}:{maxOutputTokens:r})}function pe(e){C(z,!0);let t=new Set(g(re));t.has(e)?t.delete(e):t.add(e),t.add(`text`),ce({inputTypes:[`text`,...b.filter(e=>t.has(e))]})}let _e=w(()=>new Set(i.model.outputTypes??[`text`]));function ve(e){C(ee,!0);let t=new Set(g(_e));t.has(e)?t.delete(e):t.add(e),t.add(`text`),ce({outputTypes:[`text`,`image`].filter(e=>t.has(e))})}async function ye(){if(g(K)||!g(Z)||!g(y)&&!i.apiKeyConfigured&&g(oe).length===0)return;let e=g(y)?l().trim():i.apiKeyConfigured?null:g(oe);C(K,!0),C(q,null);let t=await ge({api:i.api,baseURL:i.baseURL,modelId:g(T).trim(),...e===null?c().length>0?{provider:c()}:{}:{apiKey:e}});C(K,!1),t!==null&&C(q,t,!0)}var be=Ft(),xe=N(be),Se=N(xe),Ce=N(Se),$=e=>{var t=Ot();f(e,t)};u(Ce,e=>{h()&&e($)});var we=O(Ce,2),Te=x(we,!0),Ee=O(we,2),De=e=>{var n=kt(),r=N(n),i=e=>{var t=m(`testing…`);f(e,t)},o=e=>{var t=m();j(()=>a(t,`ok · ${g(q).latencyMs??``} ms`)),f(e,t)},s=e=>{var t=m();j(()=>a(t,`failed · ${g(q).detail??``}`)),f(e,t)};u(r,e=>{g(K)?e(i):g(q)?.outcome===`ok`?e(o,1):g(q)?.outcome===`failed`&&e(s,2)}),t(n),j(()=>B(n,1,`min-w-0 shrink-0 truncate text-[10px] ${g(q)?.outcome===`ok`?`text-primary`:g(q)?.outcome===`failed`?`text-destructive`:`text-muted-foreground`}`)),f(e,n)};u(Ee,e=>{g(te)||e(De)}),t(Se);var Oe=O(Se,2),Ae=N(Oe);Be(N(Ae),{class:`h-4 w-4`,"aria-hidden":`true`}),t(Ae);var je=O(Ae,2),Me=N(je);de(Me,{class:`h-4 w-4`,"aria-hidden":`true`}),t(je);var Ne=O(je,2),Pe=N(Ne);ke(Pe,{class:`h-4 w-4`,"aria-hidden":`true`}),t(Ne),t(Oe),t(xe);var Fe=O(xe,2),Ie=n=>{var r=Pt(),s=L(r),c=N(s),l=O(N(c),2);he(l,{class:`h-8 font-mono text-xs`,"aria-label":`Model id`,placeholder:`glm-5.3-flash`,get list(){return S},get disabled(){return d()},oninput:e=>le(e.currentTarget.value),get value(){return g(T)},set value(e){C(T,e,!0)}});var p=O(l,2);e(p,21,()=>i.candidates.slice(0,200),e=>e.id,(e,t)=>{var n=At(),r=x(n,!0),i={};j(()=>{a(r,g(t).name??``),i!==(i=g(t).id)&&(n.value=(n.__value=i)??``)}),f(e,n)}),t(p),t(c);var h=O(c,2),_=O(N(h),2);{let e=w(()=>_t(g(T).trim()||i.model.id));he(_,{class:`h-8 text-xs`,"aria-label":`Model name`,get placeholder(){return g(e)},get disabled(){return d()},oninput:e=>ue(e.currentTarget.value),get value(){return g(D)},set value(e){C(D,e,!0)}})}t(h),t(s);var v=O(s,2),A=O(N(v),2);{let e=w(()=>i.model.efforts??[]),t=w(()=>g(ae).candidates.map(e=>({id:e})));gt(A,{get selected(){return g(e)},get candidates(){return g(t)},placeholder:`Add effort (e.g. low)…`,get disabled(){return d()},onchange:e=>{C(U,!0),ce(e.length>0?{efforts:e}:{efforts:void 0})}})}var F=O(A,2),I=e=>{var t=jt(),n=x(t,!0);j(()=>a(n,g(ae).hint)),f(e,t)};u(F,e=>{g(ae).hint!==null&&e(I)}),t(v);var R=O(v,2),z=N(R),ee=O(N(z),2);{let e=w(()=>g(W)?`border-destructive focus-visible:ring-destructive`:``);he(ee,{get class(){return`h-8 text-xs ${g(e)??``}`},"aria-label":`Context window (tokens)`,placeholder:`200k / 0.5M / 131072`,get disabled(){return d()},onblur:()=>fe(`contextWindow`),onkeydown:e=>{e.key===`Enter`&&fe(`contextWindow`)},get value(){return g(M)},set value(e){C(M,e,!0)}})}t(z);var V=O(z,2),H=O(N(V),2);{let e=w(()=>g(G)?`border-destructive focus-visible:ring-destructive`:``);he(H,{get class(){return`h-8 text-xs ${g(e)??``}`},"aria-label":`Max output tokens`,placeholder:`32k / 131072`,get disabled(){return d()},onblur:()=>fe(`maxOutputTokens`),onkeydown:e=>{e.key===`Enter`&&fe(`maxOutputTokens`)},get value(){return g(P)},set value(e){C(P,e,!0)}})}t(V),t(R);var J=O(R,2),Y=e=>{var t=Mt();f(e,t)};u(J,e=>{(g(W)||g(G))&&e(Y)});var te=O(J,2),Z=N(te),ne=O(N(Z),4);e(ne,16,()=>b,e=>e,(e,t)=>{var n=Nt(),r=x(n,!0);j((e,i)=>{B(n,1,`rounded border px-1.5 py-0.5 text-[10px] transition-colors ${e??``}`),k(n,`aria-pressed`,i),n.disabled=d(),a(r,t)},[()=>g(re).has(t)?`border-primary bg-primary text-primary-foreground`:`border-border bg-background text-muted-foreground hover:bg-muted`,()=>g(re).has(t)]),o(`click`,n,()=>pe(t)),f(e,n)}),t(Z);var ie=O(Z,2),oe=O(N(ie),4);t(ie),t(te);var Q=O(te,2),de=N(Q),ge=N(de),be=e=>{var t=m();j(()=>a(t,`ok · ${g(q).latencyMs??``} ms`)),f(e,t)},xe=e=>{var t=m();j(()=>a(t,`failed · ${g(q).detail??``}`)),f(e,t)},Se=e=>{var t=m(`Probing with the route key above (saved on add).`);f(e,t)},Ce=e=>{var t=m(`No saved key for this route — paste one to test (never stored).`);f(e,t)},$=e=>{var t=m(`Probe this endpoint with a minimal request.`);f(e,t)};u(ge,e=>{g(q)?.outcome===`ok`?e(be):g(q)?.outcome===`failed`?e(xe,1):g(y)?e(Se,2):i.apiKeyConfigured?e($,-1):e(Ce,3)}),t(de);var we=O(de,2),Te=N(we),Ee=e=>{he(e,{type:`password`,class:`h-6 w-44 font-mono text-[10px]`,"aria-label":`API key (test only)`,placeholder:`API key (test only)`,autocomplete:`off`,get disabled(){return d()},get value(){return g(X)},set value(e){C(X,e,!0)}})};u(Te,e=>{!i.apiKeyConfigured&&!g(y)&&e(Ee)});var De=O(Te,2);{let e=w(()=>g(y)?`Send a minimal probe with the route key above (saved on add)`:i.apiKeyConfigured?`Send a minimal probe request`:`Send a minimal probe with the pasted key (not saved)`);me(De,{size:`sm`,variant:`outline`,class:`h-6 shrink-0 px-2 text-[10px]`,get disabled(){return g(se)},get title(){return g(e)},onclick:()=>void ye(),children:(e,t)=>{E();var n=m();j(()=>a(n,g(K)?`Testing…`:`Test connection`)),f(e,n)},$$slots:{default:!0}})}t(we),t(Q),j((e,t)=>{k(p,`id`,S),B(oe,1,`rounded border px-1.5 py-0.5 text-[10px] transition-colors ${e??``}`),k(oe,`aria-pressed`,t),oe.disabled=d(),B(de,1,`min-w-0 truncate text-[10px] ${g(q)?.outcome===`ok`?`text-primary`:g(q)?.outcome===`failed`?`text-destructive`:`text-muted-foreground`}`)},[()=>g(_e).has(`image`)?`border-primary bg-primary text-primary-foreground`:`border-border bg-background text-muted-foreground hover:bg-muted`,()=>g(_e).has(`image`)]),o(`click`,oe,()=>ve(`image`)),f(n,r)};u(Fe,e=>{g(te)&&e(Ie)}),t(be),j(()=>{k(be,`aria-label`,`Model ${i.model.id??``}`),k(we,`title`,i.model.id),a(Te,g(Q)),k(Ae,`aria-label`,`Test connection for ${(i.model.id||`new model`)??``}`),k(Ae,`title`,g(y)?`Send a minimal probe with the route key (saved on add)`:i.apiKeyConfigured?`Send a minimal probe request`:`Expand and paste a key to test (not saved)`),Ae.disabled=g(se),k(je,`aria-label`,`Edit model ${(i.model.id||`new model`)??``}`),k(je,`title`,g(te)?`Collapse model form`:`Edit model fields`),je.disabled=d(),k(Ne,`aria-label`,`Remove model ${i.model.id??``}`),Ne.disabled=d()}),o(`click`,Ae,()=>void ye()),o(`click`,je,()=>C(te,!g(te))),o(`click`,Ne,()=>i.onremove()),f(n,be),p()}h([`click`]);var Lt=/^(.*)-(\d+)$/;function Rt(e,t){let n=new Set(t.map(e=>e.provider));if(!n.has(e))return e;let r=1;for(let t of n){if(t===e)continue;let n=Lt.exec(t);if(n===null||n[1]!==e)continue;let i=Number(n[2]);Number.isInteger(i)&&i>r&&(r=i)}return`${e}-${r+1}`}function zt(e){let t=Lt.exec(e);if(t===null)return null;let n=Number(t[2]);return!Number.isInteger(n)||n<2?null:{base:t[1],n}}function Bt(e,t){let n=zt(e.provider);if(n!==null){let e=t?.providers.find(e=>e.provider===n.base);if(e)return`${e.label} (${n.n-1})`}return t?.providers.find(t=>t.provider===e.provider)?.label??e.provider}var Vt=`skill-creator.providerPresets.v1`,Ht=K({provider:W().min(1),label:W().min(1),api:W().min(1).optional(),baseURL:W().min(1),models:G(W().min(1)).min(1),icon:W().min(1).optional(),iconLetter:W().min(1).max(2).optional(),iconColor:W().min(1).optional(),iconSuppressed:re().optional()}),Ut=R({list:[]});function Wt(){if(typeof localStorage>`u`)return[];let e=null;try{e=localStorage.getItem(Vt)}catch{return[]}if(e===null)return[];let t;try{t=JSON.parse(e)}catch{return[]}if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=Ht.safeParse(e);t.success&&n.push(t.data)}return n}function Gt(e){if(!(typeof localStorage>`u`))try{localStorage.setItem(Vt,JSON.stringify(e))}catch{}}function Kt(){return Ut.list=Wt(),Ut.list}function qt(e){let t=Ut.list.filter(t=>t.provider!==e);Ut.list=t,Gt(t)}var Jt=n(`<p class="text-xs text-destructive" role="alert"> </p>`),Yt=n(`<p class="text-[10px] text-destructive" role="alert"> </p>`),Xt=n(`<p class="py-3 text-center text-[10px] text-muted-foreground"> </p>`),Zt=n(`<img alt="" class="h-7 w-7 shrink-0 rounded-md bg-background object-contain p-0.5 dark:invert"/>`),Qt=n(`<span class="flex h-7 w-7 shrink-0 items-center justify-center rounded-md text-[11px] font-semibold text-white" aria-hidden="true"> </span>`),$t=n(`<div class="group relative"><button type="button" class="flex w-full items-center gap-2 rounded-md border border-border p-2 text-left transition-colors hover:border-primary/50 hover:bg-primary/5"><!> <span class="min-w-0 flex-1"><span class="block truncate text-xs font-medium"> </span> <span class="block truncate text-[10px] text-muted-foreground"> </span></span> <span class="mr-0.5 shrink-0 rounded bg-muted px-1 text-[9px] text-muted-foreground"> </span></button> <button type="button" class="absolute right-1 top-1 hidden rounded bg-popover/80 p-0.5 text-muted-foreground hover:text-destructive group-hover:block">×</button></div>`),en=n(`<div class="space-y-1"><span class="text-[10px] font-medium text-muted-foreground">Your presets</span> <div class="grid grid-cols-1 gap-1.5 min-[520px]:grid-cols-2"></div></div>`),tn=n(`<span class="rounded bg-primary/10 px-1 text-[9px] text-primary"> </span>`),nn=n(`<button type="button" class="flex w-full items-center gap-2 rounded-md border border-border p-2 text-left transition-colors hover:border-primary/50 hover:bg-primary/5"><!> <span class="min-w-0 flex-1"><span class="block truncate text-xs font-medium"> </span> <span class="block truncate text-[10px] text-muted-foreground"> </span></span> <span class="mr-0.5 flex shrink-0 items-center gap-1"><!> <span class="rounded bg-muted px-1 text-[9px] text-muted-foreground"> </span></span></button>`),rn=n(`<p class="col-span-full py-3 text-center text-[10px] text-muted-foreground"> </p>`),an=n(`<div class="space-y-2"><!> <div class="space-y-1"><span class="text-[10px] font-medium text-muted-foreground"> </span> <div class="grid grid-cols-1 gap-1.5 min-[520px]:grid-cols-2"><!> <!></div></div></div>`),on=n(`<div class="space-y-2"><div class="flex items-center gap-2"><!> <!> <!></div> <!> <!></div>`),sn=n(`<p class="text-[10px] text-amber-700" role="alert"> </p>`),cn=n(`<p class="text-[10px] text-amber-700" role="alert">Custom route needs a name.</p>`),ln=n(`<p class="text-[10px] text-amber-700" role="alert">Custom route needs an http(s) base URL.</p>`),un=n(`<option> </option>`),dn=n(`<p class="rounded-md border border-dashed p-2 text-center text-[10px] text-muted-foreground">No models yet — add one to enable the route.</p>`),fn=n(`<div class="space-y-3"><div class="flex items-center gap-2"><!> <label class="min-w-0 flex-1 space-y-0.5"><span class="text-[10px] text-muted-foreground">Route name</span> <!></label></div> <!> <label class="block space-y-0.5"><span class="text-[10px] text-muted-foreground">Base URL</span> <!></label> <!> <label class="block space-y-0.5"><span class="text-[10px] text-muted-foreground">API protocol</span> <select class="h-8 w-full rounded-md border border-border bg-background px-2 text-xs" aria-label="API protocol"></select></label> <div class="block space-y-0.5"><span class="text-[10px] text-muted-foreground">API key</span> <div class="relative"><!> <button type="button" class="absolute right-1.5 top-1/2 flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded text-muted-foreground transition-colors after:absolute after:-inset-2.5 after:content-[''] hover:text-foreground disabled:pointer-events-none disabled:opacity-50"><!></button></div></div> <div class="space-y-1.5"><div class="flex items-center justify-between"><span class="text-[10px] font-medium text-muted-foreground">Models</span> <!></div> <!> <div class="space-y-1.5"></div></div> <!> <div class="flex items-center justify-between border-t border-border pt-2"><!> <!></div></div>`);function pn(n,i){r(i,!0);let s=v(i,`seed`,3,null),c=`anthropic-messages`,l=A(R(i.initialMode)),d=A(``),h=A(R(s()?.provider??``)),y=A(void 0),S=A(void 0),D=A(void 0),M=A(void 0),P=A(``),I=A(``),B=A(!1),V=w(()=>g(I).trim()),H=A(c),U=A(R(s()?.models?s().models.map(e=>be(e)):[])),W=A(R(s()?.models?s().models.map(()=>!0):[])),G=A(!1),K=A(!1),q=A(null),J=w(()=>$.view),Y=w(()=>g(J)?.settings.modelRoutes??[]),X=w(()=>(i.catalog?.providers??[]).flatMap(e=>e.icon?[{provider:e.provider,icon:e.icon}]:[])),Z=w(()=>g(h).trim()),ne=w(()=>St(i.catalog,zt(g(Z))?.base??g(Z))),re=w(()=>Bt({provider:g(Z)},i.catalog)),ie=w(()=>ae({provider:g(Z),iconLetter:g(D)},g(re))),oe=w(()=>g(S)??Q(g(Z)||`route`)),se=w(()=>{if(g(M)===!0)return null;if(g(y)!==void 0)return g(y);let e=zt(g(Z))?.base??g(Z);return i.catalog?.providers.find(t=>t.provider===e)?.icon??null}),ce=w(()=>[...g(Y).flatMap(e=>e.models),...g(U)]),le=w(()=>g(Z).length>0&&g(Y).some(e=>e.provider===g(Z))),ue=w(()=>/^https?:\/\//.test(g(P).trim())),de=w(()=>g(W).length===g(U).length&&g(W).every(e=>e)),fe=w(()=>g(Z).length>0&&!g(le)&&g(ue)&&g(U).length>0&&g(de)&&!$.updating),pe=w(()=>g(J)?.providers.some(e=>e.provider===g(Z)&&e.configured)??!1),ge=w(()=>{let e=g(d).trim().toLowerCase(),t=i.catalog?.providers??[];return e.length===0?t:t.filter(t=>t.label.toLowerCase().includes(e)||t.provider.toLowerCase().includes(e)||t.baseURL.toLowerCase().includes(e))}),_e=w(()=>{let e=g(d).trim().toLowerCase();return e.length===0?Ut.list:Ut.list.filter(t=>t.label.toLowerCase().includes(e)||t.provider.toLowerCase().includes(e)||t.baseURL.toLowerCase().includes(e))});function ye(e){return g(Y).filter(t=>t.provider===e||zt(t.provider)?.base===e).length}function be(e){let t=zt(s()?.provider??``)?.base??s()?.provider??``,n=i.catalog?.providers.find(e=>e.provider===t)?.models.find(t=>t.id===e);return n===void 0?{id:e,efforts:[...wt]}:Dt(n)}Kt(),F(()=>{g(l)});function xe(){C(h,``),C(y,void 0),C(S,void 0),C(D,void 0),C(M,void 0),C(P,``),C(H,c),C(U,[],!0),C(W,[],!0),C(l,`form`),C(G,!1),C(K,!1),C(q,null)}async function Se(e){let t=await ve({modelRoutes:[...g(Y),e]});if(t){if(t.outcome===`rejected`){C(q,`${t.code}: ${t.detail}`);return}if(t.outcome===`error`){C(q,t.message,!0);return}i.onadded(e.provider)}}async function Ce(e){$.updating||await Se({provider:Rt(e.provider,g(Y)),baseURL:e.baseURL,api:e.api,models:[...e.models].sort((e,t)=>Number(t.image)-Number(e.image)).slice(0,4).map(e=>Dt(e)),...e.icon?{icon:e.icon}:{}})}async function we(e){$.updating||await Se({provider:Rt(e.provider,g(Y)),baseURL:e.baseURL,api:e.api??c,models:e.models.map(e=>({id:e,efforts:[...wt]})),...e.icon?{icon:e.icon}:{},...e.iconColor?{iconColor:e.iconColor}:{},...e.iconLetter?{iconLetter:e.iconLetter}:{},...e.iconSuppressed?{iconSuppressed:!0}:{}})}function Ee(e,t){C(U,g(U).map((n,r)=>r===e?t:n),!0)}function Oe(e,t){g(W)[e]!==t&&C(W,g(W).map((n,r)=>r===e?t:n),!0)}function ke(e){C(U,g(U).filter((t,n)=>n!==e),!0),C(W,g(W).filter((t,n)=>n!==e),!0)}function Ae(){C(U,[...g(U),{id:``,efforts:[...wt]}],!0),C(W,[...g(W),!1],!0)}async function je(){if(g(fe)){if(g(V).length>0){let e=await Te(g(Z),g(V));if(e==null||e.outcome===`rejected`){C(q,e==null?`Could not save the API key — connection unavailable. The route was not created.`:`${e.code}: ${e.detail}`,!0);return}}await Se({provider:g(Z),baseURL:g(P).trim(),api:g(H),models:g(U).map(e=>({...e})),...g(y)?{icon:g(y)}:{},...g(S)?{iconColor:g(S)}:{},...g(D)?{iconLetter:g(D)}:{},...g(M)?{iconSuppressed:!0}:{}})}}var Me=ee(),Ne=L(Me),Pe=n=>{var r=on(),s=N(r),c=N(s);he(c,{class:`h-8 flex-1 text-xs`,"aria-label":`Search providers`,placeholder:`Search providers…`,ref:null,get value(){return g(d)},set value(e){C(d,e,!0)}});var l=O(c,2),p=e=>{me(e,{size:`sm`,variant:`ghost`,class:`h-8 shrink-0 px-2 text-[11px]`,onclick:()=>i.onclose?.(),children:(e,t)=>{E();var n=m(`Cancel`);f(e,n)},$$slots:{default:!0}})};u(l,e=>{g(Y).length===0&&i.onclose&&e(p)});var h=O(l,2);me(h,{size:`sm`,variant:`ghost`,class:`h-8 shrink-0 px-2 text-[11px]`,onclick:xe,children:(e,t)=>{E();var n=m(`Start from scratch →`);f(e,n)},$$slots:{default:!0}}),t(s);var _=O(s,2),v=e=>{var t=Jt(),n=x(t,!0);j(()=>a(n,g(q))),f(e,t)};u(_,e=>{g(q)&&e(v)});var y=O(_,2),S=e=>{var t=Yt(),n=x(t,!0);j(()=>a(n,i.catalogError)),f(e,t)},T=e=>{var t=Xt(),n=x(t,!0);j(()=>a(n,i.catalogLoading?`Loading catalog…`:`Catalog unavailable.`)),f(e,t)},D=n=>{var r=an(),s=N(r),c=n=>{var r=en(),i=O(N(r),2);e(i,21,()=>g(_e),e=>e.provider,(e,n)=>{var r=$t(),i=N(r),s=N(i),c=e=>{var t=Zt();j(()=>k(t,`src`,g(n).icon)),f(e,t)},l=e=>{var t=Qt(),r=x(t,!0);j((e,n)=>{b(t,`background: ${e??``}`),a(r,n)},[()=>g(n).iconColor??Q(g(n).provider),()=>ae({provider:g(n).provider,iconLetter:g(n).iconLetter},g(n).label)]),f(e,t)};u(s,e=>{g(n).icon?e(c):e(l,-1)});var d=O(s,2),p=N(d),m=x(p,!0),h=O(p,2),_=x(h,!0);t(d);var v=O(d,2),y=x(v,!0);t(i);var S=O(i,2);t(r),j(e=>{k(i,`title`,g(n).baseURL),i.disabled=$.updating,a(m,g(n).label),a(_,e),k(v,`title`,`${g(n).models.length??``} saved models`),a(y,g(n).models.length),k(S,`aria-label`,`Delete preset ${g(n).label??``}`)},[()=>g(n).baseURL.replace(/^https?:\/\//,``)]),o(`click`,i,()=>void we(g(n))),o(`click`,S,()=>qt(g(n).provider)),f(e,r)}),t(i),t(r),f(n,r)};u(s,e=>{g(_e).length>0&&e(c)});var l=O(s,2),p=N(l),m=x(p),h=O(p,2),_=N(h);e(_,17,()=>g(ge),e=>e.provider,(e,n)=>{let r=w(()=>ye(g(n).provider)),i=w(()=>g(r)>0?`${g(n).baseURL} · ${g(n).api} · ${g(r)} copies added — click to add another`:`${g(n).baseURL} · ${g(n).api}`);var s=nn(),c=N(s),l=e=>{var t=Zt();j(()=>k(t,`src`,g(n).icon)),f(e,t)},d=e=>{var t=Qt(),r=x(t,!0);j((e,n)=>{b(t,`background: ${e??``}`),a(r,n)},[()=>Q(g(n).provider),()=>g(n).label.slice(0,1).toUpperCase()]),f(e,t)};u(c,e=>{g(n).icon?e(l):e(d,-1)});var p=O(c,2),m=N(p),h=x(m,!0),_=O(m,2),v=x(_,!0);t(p);var y=O(p,2),S=N(y),C=e=>{var t=tn(),n=x(t);j(()=>{k(t,`title`,`${g(r)??``} cop${g(r)===1?`y`:`ies`} of this provider already added — you can add another`),a(n,`Added ✓${g(r)>1?` ×${g(r)}`:``}`)}),f(e,t)};u(S,e=>{g(r)>0&&e(C)});var T=O(S,2),E=x(T,!0);t(y),t(s),j(e=>{k(s,`title`,g(i)),s.disabled=$.updating,a(h,g(n).label),a(v,e),k(T,`title`,`${g(n).models.length??``} models in catalog`),a(E,g(n).models.length)},[()=>g(n).baseURL.replace(/^https?:\/\//,``)]),o(`click`,s,()=>void Ce(g(n))),f(e,s)});var v=O(_,2),y=e=>{var t=rn(),n=x(t);j(()=>a(n,`No providers match “${g(d)??``}”.`)),f(e,t)};u(v,e=>{g(ge).length===0&&e(y)}),t(h),t(l),t(r),j(()=>a(m,`Catalog (${i.catalog.providers.length??``} providers, from zcode Registry)`)),f(n,r)};u(y,e=>{i.catalogError?e(S):i.catalog===null?e(T,1):e(D,-1)}),t(r),f(n,r)},Fe=n=>{var r=fn(),i=N(r),s=N(i);{let e=w(()=>g(Z)||`route`);ut(s,{get icon(){return g(se)},get letter(){return g(ie)},get color(){return g(oe)},get provider(){return g(e)},get label(){return g(re)},get catalogIcons(){return g(X)},get disabled(){return $.updating},onPick:e=>{C(y,e,!0),C(M,void 0)},onSuppress:()=>C(M,!0),onColor:e=>C(S,e,!0),onLetter:e=>C(D,e,!0)})}var c=O(s,2),d=O(N(c),2);he(d,{class:`h-8 text-xs`,"aria-label":`Route name`,placeholder:`my-provider`,get disabled(){return $.updating},onblur:()=>C(K,!0),get value(){return g(h)},set value(e){C(h,e,!0)}}),t(c),t(i);var p=O(i,2),v=e=>{var t=sn(),n=x(t);j(()=>a(n,`Route “${g(Z)??``}” already exists.`)),f(e,t)},b=e=>{var t=cn();f(e,t)};u(p,e=>{g(le)?e(v):g(K)&&g(Z).length===0&&e(b,1)});var A=O(p,2),F=O(N(A),2);he(F,{class:`h-8 font-mono text-xs`,"aria-label":`Base URL`,placeholder:`https://api.example.com/v1`,get disabled(){return $.updating},onblur:()=>C(G,!0),get value(){return g(P)},set value(e){C(P,e,!0)}}),t(A);var L=O(A,2),R=e=>{var t=ln();f(e,t)};u(L,e=>{g(G)&&!g(ue)&&e(R)});var ee=O(L,2),W=O(N(ee),2);e(W,20,()=>te,e=>e,(e,t)=>{var n=un(),r=x(n,!0),i={};j(()=>{a(r,t),i!==(i=t)&&(n.value=(n.__value=i)??``)}),f(e,n)}),t(W),z(W),t(ee);var J=O(ee,2),Y=O(N(J),2),ae=N(Y);{let e=w(()=>g(B)?`text`:`password`),t=w(()=>g(pe)?`stored — this key overrides for add & test`:`API key`);he(ae,{class:`h-8 pr-9 text-xs`,get type(){return g(e)},autocomplete:`off`,"aria-label":`API key`,get placeholder(){return g(t)},get disabled(){return $.updating},get value(){return g(I)},set value(e){C(I,e,!0)}})}var Q=O(ae,2),de=N(Q),ge=e=>{Je(e,{class:`h-3.5 w-3.5`,"aria-hidden":`true`})},_e=e=>{De(e,{class:`h-3.5 w-3.5`,"aria-hidden":`true`})};u(de,e=>{g(B)?e(ge):e(_e,-1)}),t(Q),t(Y),t(J);var ve=O(J,2),ye=N(ve),be=O(N(ye),2);me(be,{size:`sm`,variant:`ghost`,class:`h-6 px-2 text-[11px]`,get disabled(){return $.updating},onclick:Ae,children:(e,t)=>{E();var n=m(`+ Add model`);f(e,n)},$$slots:{default:!0}}),t(ye);var xe=O(ye,2),Se=e=>{var t=dn();f(e,t)};u(xe,e=>{g(U).length===0&&e(Se)});var Ce=O(xe,2);e(Ce,21,()=>g(U),T,(e,t,n)=>{{let r=w(()=>g(P).trim()),i=w(()=>g(t).id===``);It(e,{get model(){return g(t)},get candidates(){return g(ne)},get routeModels(){return g(ce)},get api(){return g(H)},get baseURL(){return g(r)},get provider(){return g(Z)},get apiKeyConfigured(){return g(pe)},get formKey(){return g(V)},get disabled(){return $.updating},get initialExpanded(){return g(i)},onchange:e=>Ee(n,e),onremove:()=>ke(n),onvalidity:e=>Oe(n,e)})}}),t(Ce),t(ve);var we=O(ve,2),Te=e=>{var t=Jt(),n=x(t,!0);j(()=>a(n,g(q))),f(e,t)};u(we,e=>{g(q)&&e(Te)});var Me=O(we,2),Ne=N(Me);me(Ne,{size:`sm`,variant:`ghost`,class:`h-7 px-2 text-xs`,onclick:()=>C(l,`pick`),children:(e,t)=>{E();var n=m(`Back`);f(e,n)},$$slots:{default:!0}});var Pe=O(Ne,2);{let e=w(()=>!g(fe));me(Pe,{size:`sm`,class:`h-7 px-2.5 text-xs`,get disabled(){return g(e)},onclick:()=>void je(),children:(e,t)=>{E();var n=m(`Create route`);f(e,n)},$$slots:{default:!0}})}t(Me),t(r),j(()=>{W.disabled=$.updating,k(Q,`aria-label`,g(B)?`Hide API key`:`Show API key`),k(Q,`aria-pressed`,g(B)),k(Q,`title`,g(B)?`Hide API key`:`Show API key`),Q.disabled=$.updating}),_(W,()=>g(H),e=>C(H,e)),o(`mousedown`,Q,e=>e.preventDefault()),o(`click`,Q,()=>C(B,!g(B))),f(n,r)};u(Ne,e=>{g(l)===`pick`?e(Pe):e(Fe,-1)}),f(n,Me),p()}h([`click`,`mousedown`]);var mn=n(`<option> </option>`),hn=n(`<p class="text-[11px] font-medium text-primary"> </p>`),gn=n(`<span class="text-[10px] text-amber-700">A route needs at least one model id.</span>`),_n=n(`<div><!></div>`),vn=n(`<p class="text-xs text-destructive" role="alert"> </p>`),yn=n(`<div class="space-y-3"><div class="flex items-start gap-2"><!> <div class="flex min-w-0 flex-1 items-center justify-between gap-2.5" data-route-titlebar="true"><div class="min-w-0"><p class="truncate text-sm font-semibold"> </p> <p class="mt-0.5 truncate text-[10px] text-muted-foreground"> </p></div> <div class="flex shrink-0 items-center gap-2.5"><button type="button" class="relative flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors after:absolute after:-inset-2 after:content-[''] hover:bg-destructive/10 hover:text-destructive disabled:pointer-events-none disabled:opacity-50" aria-label="Remove route" title="Remove route"><!></button> <!></div></div></div> <section class="space-y-1.5 rounded-md border border-border p-2" aria-label="Endpoint"><span class="text-[11px] font-medium text-muted-foreground">Endpoint</span> <div class="flex gap-1.5"><!></div> <label class="block space-y-0.5"><span class="text-[10px] text-muted-foreground">API protocol</span> <select class="h-8 w-full rounded-md border border-border bg-background px-2 text-xs" aria-label="API protocol"></select></label></section> <section class="space-y-1.5 rounded-md border border-border p-2" aria-label="Credential"><!> <div class="flex gap-1.5"><div class="relative min-w-0 flex-1"><!> <button type="button" class="absolute right-1.5 top-1/2 flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded text-muted-foreground transition-colors after:absolute after:-inset-2.5 after:content-[''] hover:text-foreground disabled:pointer-events-none disabled:opacity-50"><!></button></div> <!></div> <span class="text-[10px] text-muted-foreground">Stored locally (0600), shown as typed (password-masked), applies on blur/Enter.</span></section> <section class="space-y-1.5" aria-label="Models"><div class="flex items-center justify-between"><span class="text-[11px] font-medium text-muted-foreground">Models</span> <div class="flex items-center gap-1.5"><!> <!></div></div> <div class="space-y-1.5"></div></section> <!></div>`);function bn(n,i){r(i,!0);let s=v(i,`autoFocusCredential`,3,!1),c=`anthropic-messages`,l=w(()=>$.view),h=w(()=>g(l)?.settings.modelRoutes??[]),y=w(()=>g(h).flatMap(e=>e.models.map(e=>({id:e.id,efforts:e.efforts})))),b=w(()=>i.catalog?.providers.find(e=>e.provider===i.route.provider)),S=w(()=>(i.catalog?.providers??[]).flatMap(e=>e.icon?[{provider:e.provider,icon:e.icon}]:[])),M=w(()=>St(i.catalog,zt(i.route.provider)?.base??i.route.provider)),P=w(()=>le(i.route,g(b))),I=w(()=>Bt(i.route,i.catalog)),L=w(()=>ae(i.route,g(I))),B=w(()=>ue(i.route)),ee=w(()=>g(l)?.providers.some(e=>e.provider===i.route.provider&&e.configured)??!1),V=A(R(i.route.baseURL)),H=A(R(i.route.api??g(b)?.api??c)),U=A(R(i.route.models.map(e=>({...e})))),W=A(R(i.route.models.map(()=>!0))),G=w(()=>g(l)?.providers.find(e=>e.provider===i.route.provider)?.apiKey??null),K=A(R(g(G)??``)),q=A(!1),J=A(R(s())),Y=A(null),X=A(null),Z=A(!1),ne=null,re=[],ie=w(()=>g(V).trim()!==i.route.baseURL||g(H)!==(i.route.api??g(b)?.api??c)),oe=w(()=>JSON.stringify(g(U))!==JSON.stringify(i.route.models)),Q=w(()=>g(W).every(e=>e)),se=w(()=>!(g(ie)||g(oe))||!g(Q)||g(U).length===0||$.updating);F(()=>{s()&&g(Y)!==null&&(g(Y).focus(),i.onCredentialFocused?.())}),F(()=>()=>{ne!==null&&clearTimeout(ne)});async function ce(e){if(g(l)===null)return!1;let t=await ve({modelRoutes:g(h).map(t=>t.provider===i.route.provider?e:t)});return t?t.outcome===`rejected`?(C(X,`${t.code}: ${t.detail}`),!1):t.outcome===`error`?(C(X,t.message,!0),!1):(C(X,null),!0):!1}async function de(e){await ce({...i.route,...e})}async function fe(){let e=g(V).trim();if(!/^https?:\/\//.test(e)){C(X,`Custom route needs an http(s) base URL.`);return}await ce({...i.route,baseURL:e,api:g(H),models:g(U).map(e=>({...e}))})&&(C(Z,!0),ne!==null&&clearTimeout(ne),ne=setTimeout(()=>C(Z,!1),1500))}function pe(e,t){C(U,g(U).map((n,r)=>r===e?t:n),!0)}function ge(e,t){g(W)[e]!==t&&C(W,g(W).map((n,r)=>r===e?t:n),!0)}function _e(e){C(U,g(U).filter((t,n)=>n!==e),!0),C(W,g(W).filter((t,n)=>n!==e),!0)}function ye(e){let t=g(U)[e],n=i.route.models[e];return t===void 0||n===void 0||JSON.stringify(t)!==JSON.stringify(n)}async function be(){C(U,[...g(U),{id:``,efforts:[...wt]}],!0),C(W,[...g(W),!1],!0),await d(),re[re.length-1]?.scrollIntoView({block:`nearest`,behavior:`smooth`})}async function xe(){let e=g(K).trim();if(e.length===0)return;let t=await Te(i.route.provider,e);if(t){if(t.outcome===`rejected`){C(X,`${t.code}: ${t.detail}`);return}C(X,null),C(J,!1)}}async function Se(){await we(i.route.provider),C(K,``)}var Ce=yn(),Ee=N(Ce),Oe=N(Ee);ut(Oe,{get icon(){return g(P)},get letter(){return g(L)},get color(){return g(B)},get provider(){return i.route.provider},get label(){return g(I)},get catalogIcons(){return g(S)},get disabled(){return $.updating},onPick:e=>void de({icon:e,iconSuppressed:!1}),onSuppress:()=>void de({icon:void 0,iconSuppressed:!0}),onColor:e=>void de({iconColor:e}),onLetter:e=>void de({iconLetter:e})});var Ae=O(Oe,2),je=N(Ae),Me=N(je),Ne=x(Me,!0),Pe=O(Me,2),Fe=x(Pe);t(je);var Ie=O(je,2),Le=N(Ie),Re=N(Le);ke(Re,{class:`h-4 w-4`,"aria-hidden":`true`}),t(Le);var ze=O(Le,2);me(ze,{size:`sm`,class:`relative h-9 px-3 text-xs after:absolute after:-top-1 after:-bottom-1 after:left-0 after:right-0 after:content-[''] disabled:opacity-100 disabled:bg-muted disabled:text-muted-foreground`,"data-route-save":`true`,get disabled(){return g(se)},onclick:()=>void fe(),children:(e,t)=>{E();var n=m();j(()=>a(n,g(Z)?`Saved ✓`:`Save`)),f(e,n)},$$slots:{default:!0}}),t(Ie),t(Ae),t(Ee);var Be=O(Ee,2),Ve=O(N(Be),2),He=N(Ve);he(He,{class:`h-8 flex-1 font-mono text-xs`,"aria-label":`Base URL`,placeholder:`https://api.example.com/v1`,get disabled(){return $.updating},get value(){return g(V)},set value(e){C(V,e,!0)}}),t(Ve);var Ue=O(Ve,2),We=O(N(Ue),2);e(We,20,()=>te,e=>e,(e,t)=>{var n=mn(),r=x(n,!0),i={};j(()=>{a(r,t),i!==(i=t)&&(n.value=(n.__value=i)??``)}),f(e,n)}),t(We),z(We),t(Ue),t(Be);var Ge=O(Be,2),Ke=N(Ge),qe=e=>{var t=hn(),n=x(t);j(()=>a(n,`Route “${i.route.provider??``}” added — paste its API key to finish connecting.`)),f(e,t)};u(Ke,e=>{g(J)&&e(qe)});var Ye=O(Ke,2),Xe=N(Ye),Ze=N(Xe);{let e=w(()=>g(q)?`text`:`password`);he(Ze,{class:`h-8 pr-9 font-mono text-xs`,get type(){return g(e)},autocomplete:`off`,"aria-label":`API key`,placeholder:`API key`,get disabled(){return $.updating},onblur:()=>void xe(),onkeydown:e=>{e.key===`Enter`&&(e.preventDefault(),xe())},get ref(){return g(Y)},set ref(e){C(Y,e,!0)},get value(){return g(K)},set value(e){C(K,e,!0)}})}var Qe=O(Ze,2),$e=N(Qe),et=e=>{Je(e,{class:`h-3.5 w-3.5`,"aria-hidden":`true`})},tt=e=>{De(e,{class:`h-3.5 w-3.5`,"aria-hidden":`true`})};u($e,e=>{g(q)?e(et):e(tt,-1)}),t(Qe),t(Xe);var nt=O(Xe,2),rt=e=>{me(e,{size:`sm`,variant:`outline`,class:`relative h-9 px-2.5 text-xs after:absolute after:-top-1 after:-bottom-1 after:left-0 after:right-0 after:content-['']`,get disabled(){return $.updating},onclick:()=>void Se(),children:(e,t)=>{E();var n=m(`Clear`);f(e,n)},$$slots:{default:!0}})};u(nt,e=>{g(ee)&&e(rt)}),t(Ye),E(2),t(Ge);var it=O(Ge,2),at=N(it),ot=O(N(at),2),st=N(ot),ct=e=>{var t=gn();f(e,t)};u(st,e=>{g(U).length===0&&e(ct)});var lt=O(st,2);me(lt,{size:`sm`,variant:`ghost`,class:`h-6 px-2 text-[11px]`,get disabled(){return $.updating},onclick:()=>void be(),children:(e,t)=>{E();var n=m(`+ Add model`);f(e,n)},$$slots:{default:!0}}),t(ot),t(at);var dt=O(at,2);e(dt,21,()=>g(U),T,(e,n,r)=>{var a=_n(),o=N(a);{let e=w(()=>g(V).trim()),t=w(()=>ye(r)),a=w(()=>g(n).id===``);It(o,{get model(){return g(n)},get candidates(){return g(M)},get routeModels(){return g(y)},get api(){return g(H)},get baseURL(){return g(e)},get provider(){return i.route.provider},get apiKeyConfigured(){return g(ee)},get disabled(){return $.updating},get dirty(){return g(t)},get initialExpanded(){return g(a)},onchange:e=>pe(r,e),onremove:()=>_e(r),onvalidity:e=>ge(r,e)})}t(a),D(a,(e,t)=>re[t]=e,e=>re?.[e],()=>[r]),f(e,a)}),t(dt),t(it);var ft=O(it,2),pt=e=>{var t=vn(),n=x(t,!0);j(()=>a(n,g(X))),f(e,t)};u(ft,e=>{g(X)&&e(pt)}),t(Ce),j(e=>{k(Me,`title`,`${g(I)??``} (${i.route.provider??``}) — route name keys the credential mapping; duplicate this route to rename it.`),a(Ne,g(I)),k(Pe,`title`,i.route.baseURL),a(Fe,`${i.route.provider??``} · ${e??``} · ${i.route.models.length??``}
2
+ ${i.route.models.length===1?`model`:`models`}`),Le.disabled=$.updating,We.disabled=$.updating,k(Qe,`aria-label`,g(q)?`Hide API key`:`Show API key`),k(Qe,`aria-pressed`,g(q)),k(Qe,`title`,g(q)?`Hide API key`:`Show API key`),Qe.disabled=$.updating},[()=>i.route.baseURL.replace(/^https?:\/\//,``)]),o(`click`,Le,()=>i.onremove?.()),_(We,()=>g(H),e=>C(H,e)),o(`mousedown`,Qe,e=>e.preventDefault()),o(`click`,Qe,()=>C(q,!g(q))),f(n,Ce),p()}h([`click`,`mousedown`]);var xn=n(`<button type="button" class="mt-0.5 shrink-0 rounded bg-amber-500/15 px-1.5 py-0.5 text-[10px] text-amber-700 transition-colors hover:bg-amber-500/25">active outside tabs</button>`),Sn=n(`<p class="text-[10px] text-amber-700"> </p>`),Cn=n(`<span class="absolute -right-1 -top-0.5 h-1 w-1 rounded-full bg-amber-500" title="API key missing"></span>`),wn=n(`<span class="relative inline-flex shrink-0"><span class="flex h-4 w-4 items-center justify-center rounded" aria-hidden="true"><img alt=""/></span> <!></span>`),Tn=n(`<span class="relative inline-flex h-4 w-4 shrink-0 items-center justify-center rounded text-[8px] font-semibold text-white" aria-hidden="true"> <!></span>`),En=n(`<span class="rounded bg-primary/10 px-1 py-px text-[9px] font-medium leading-tight text-primary" title="Active model's route">active</span>`),Dn=n(`<button type="button" role="tab"><!> <span class="max-w-[120px] truncate"> </span> <!></button>`),On=n(`<span class="pointer-events-none absolute inset-y-0 left-0 w-2 bg-gradient-to-r from-background to-transparent" aria-hidden="true"></span>`),kn=n(`<span class="pointer-events-none absolute inset-y-0 right-0 w-2 bg-gradient-to-l from-background to-transparent" aria-hidden="true"></span>`),An=n(`<div class="flex flex-col items-center gap-2.5 rounded-md border border-dashed p-6 text-center"><p class="text-xs font-medium">Add your first model route</p> <p class="max-w-[320px] text-[10px] leading-snug text-muted-foreground">Pick a provider from the catalog (zcode Registry) with its models, or point at any
3
+ custom OpenAI/Anthropic-compatible endpoint.</p> <div class="mt-1 flex gap-2"><!> <!></div></div>`),jn=n(`<div class="flex items-stretch gap-1 border-b border-border"><div class="relative min-w-0 flex-1"><div class="tab-scroll flex h-9 items-stretch overflow-x-auto svelte-1bhnjqt" role="tablist" aria-label="Model routes"></div> <!> <!></div> <button type="button">+ New</button></div> <div class="min-h-0 flex-1 overflow-y-auto pr-0.5"><!></div>`,1),Mn=n(`<div class="text-xs text-muted-foreground">Loading…</div>`),Nn=n(`<div class="text-xs text-muted-foreground">Model settings unavailable</div>`),Pn=n(`<div class="text-xs text-destructive" role="alert"> </div>`),Fn=n(`<div class="flex h-full min-h-0 flex-col space-y-3"><div class="flex items-start justify-between gap-2"><div><h3 class="text-sm font-medium">Model</h3> <p class="mt-0.5 text-[11px] text-muted-foreground">Changes apply immediately to your agent sessions — no restart needed.</p></div> <!></div> <!> <!> <!> <!></div> <!>`,1);function In(n,i){r(i,!0);let l=A(null),h=A(!1),_=A(`pick`),v=A(null),y=A(0),S=A(null),T=A(null),M=A(!1),P=A(!1),I=A(null),z=A(null),V=A(null),H=A(!1),U=ne(q),W=w(()=>$.view),G=w(()=>g(W)?.settings.modelRoutes??[]),K=w(()=>g(G).find(e=>e.provider===g(l))),J=w(()=>g(W)!==null&&!g(G).some(e=>e.provider===g(W).settings.model.provider));F(()=>{g(h)||(g(l)!==null&&!g(G).some(e=>e.provider===g(l))&&C(l,null),g(l)===null&&g(G).length>0&&C(l,g(G)[0].provider,!0))}),F(()=>{g(z)===null&&g(V)===null&&!g(H)&&Y()});async function Y(){let e=U.issue();C(H,!0);try{let t=X();if(!t){C(V,`daemon not connected`);return}let n=await t.agent.models.catalog({});if(!e.isCurrent())return;C(z,n,!0),C(V,null)}catch(t){if(!e.isCurrent())return;C(V,t instanceof Error?t.message:String(t),!0)}finally{e.isCurrent()&&C(H,!1)}}async function te(e){let t=await ve(e);return t?t.outcome===`rejected`?(C(I,`${t.code}: ${t.detail}`),!1):t.outcome===`error`?(C(I,t.message,!0),!1):(C(I,null),!0):!1}function Z(e,t=null){C(v,t,!0),C(_,e,!0),C(y,g(y)+1),C(h,!0),C(l,null)}async function re(e){C(h,!1),C(l,e,!0),C(S,e,!0),await d(),pe[e]?.scrollIntoView({block:`nearest`,inline:`nearest`,behavior:`smooth`})}function oe(){g(W)&&Z(`form`,{provider:g(W).settings.model.provider,models:[g(W).settings.model.model]})}function Q(e){e&&(C(T,e,!0),C(M,!0))}async function se(){let e=g(T);if(e===null)return;C(P,!0);let t=await te({modelRoutes:g(G).filter(t=>t.provider!==e)});C(P,!1),t&&(C(M,!1),C(T,null))}let ce=A(null),de=A(!1),fe=A(!1),pe=R({});function he(){let e=g(ce);if(!e){C(de,!1),C(fe,!1);return}C(de,e.scrollLeft>0),C(fe,e.scrollLeft+e.clientWidth<e.scrollWidth-1)}F(()=>{let e=g(ce);if(!e)return;let t=t=>{Math.abs(t.deltaY)<=Math.abs(t.deltaX)||e.scrollWidth<=e.clientWidth||(e.scrollLeft+=t.deltaY,t.preventDefault())};e.addEventListener(`wheel`,t,{passive:!1});let n=new ResizeObserver(()=>he());return n.observe(e),he(),()=>{e.removeEventListener(`wheel`,t),n.disconnect()}}),F(()=>{g(G).length,g(z),he()});function ge(e,t){if(g(G).length!==0){if(e.key===`ArrowLeft`||e.key===`ArrowRight`){e.preventDefault();let n=(t+(e.key===`ArrowLeft`?-1:1)+g(G).length)%g(G).length;pe[g(G)[n].provider]?.focus()}else e.key===`Delete`&&(e.preventDefault(),Q(g(G)[t]?.provider))}}var _e=Fn(),ye=L(_e),be=N(ye),xe=O(N(be),2),Se=e=>{var t=xn();j(()=>k(t,`title`,`The active model (${g(W).settings.model.provider??``}) rides an env-provided route with no tab — click to add it as a route.`)),o(`click`,t,oe),f(e,t)};u(xe,e=>{g(J)&&g(W)&&e(Se)}),t(be);var Ce=O(be,2),we=e=>{var t=Sn(),n=x(t);j(()=>a(n,`${g(W).settings.model.provider??``} · ${g(W).settings.model.model??``} (outside Routes) — env-provided; add
4
+ it as a route to manage it here.`)),f(e,t)};u(Ce,e=>{g(J)&&g(W)&&e(we)});var Te=O(Ce,2),Ee=n=>{var r=jn(),i=L(r),d=N(i),p=N(d);e(p,23,()=>g(G),e=>e.provider,(e,n,r)=>{let i=w(()=>g(z)?.providers.find(e=>e.provider===g(n).provider)),s=w(()=>le(g(n),g(i))),c=w(()=>Bt(g(n),g(z))),d=w(()=>ae(g(n),g(c))),p=w(()=>g(W).providers.some(e=>e.provider===g(n).provider&&e.configured)),m=w(()=>g(W).settings.model.provider===g(n).provider);var _=Dn(),v=N(_),y=e=>{var r=wn(),i=N(r),a=x(i),o=O(i,2),c=e=>{var t=Cn();f(e,t)};u(o,e=>{g(p)||e(c)}),t(r),j((e,t)=>{b(i,`background: color-mix(in srgb, ${e??``} 18%, transparent)`),k(a,`src`,g(s)),B(a,1,`h-3.5 w-3.5 object-contain ${t??``}`)},[()=>ue(g(n)),()=>ie(g(s))?``:`dark:invert`]),f(e,r)},S=e=>{var r=Tn(),i=N(r),o=O(i),s=e=>{var t=Cn();f(e,t)};u(o,e=>{g(p)||e(s)}),t(r),j(e=>{b(r,`background: ${e??``}`),a(i,`${g(d)??``} `)},[()=>ue(g(n))]),f(e,r)};u(v,e=>{g(s)?e(y):e(S,-1)});var T=O(v,2),E=x(T,!0),A=O(T,2),M=e=>{var t=En();f(e,t)};u(A,e=>{g(m)&&e(M)}),t(_),D(_,(e,t)=>pe[t.provider]=e,e=>pe?.[e.provider],()=>[g(n)]),j(()=>{k(_,`aria-selected`,!g(h)&&g(l)===g(n).provider),B(_,1,`relative flex h-9 shrink-0 items-center gap-1.5 px-2 text-xs font-medium transition-colors hover:bg-muted/50 ${!g(h)&&g(l)===g(n).provider?`text-foreground`:`text-muted-foreground hover:text-foreground`}`),k(_,`title`,`${g(c)??``} (${g(n).provider??``})${g(m)?` · active route`:``}`),a(E,g(c))}),o(`click`,_,()=>{C(l,g(n).provider,!0),C(h,!1)}),o(`keydown`,_,e=>ge(e,g(r))),f(e,_)}),t(p),D(p,e=>C(ce,e),()=>g(ce));var T=O(p,2),A=e=>{var t=On();f(e,t)};u(T,e=>{g(de)&&e(A)});var M=O(T,2),P=e=>{var t=kn();f(e,t)};u(M,e=>{g(fe)&&e(P)}),t(d);var F=O(d,2);t(i);var I=O(i,2),R=N(I),U=e=>{var t=ee(),n=L(t);c(n,()=>g(y),e=>{pn(e,{get catalog(){return g(z)},get catalogError(){return g(V)},get catalogLoading(){return g(H)},get initialMode(){return g(_)},get seed(){return g(v)},onadded:re,onclose:()=>C(h,!1)})}),f(e,t)},q=e=>{var t=ee(),n=L(t);c(n,()=>g(K).provider,e=>{{let t=w(()=>g(S)===g(K).provider);bn(e,{get route(){return g(K)},get catalog(){return g(z)},get autoFocusCredential(){return g(t)},onCredentialFocused:()=>C(S,null),onremove:()=>Q(g(K)?.provider)})}}),f(e,t)},J=e=>{var n=An(),r=O(N(n),4),i=N(r);me(i,{size:`sm`,variant:`outline`,class:`h-8 px-3 text-xs`,onclick:()=>Z(`pick`),children:(e,t)=>{E();var n=m(`Browse providers`);f(e,n)},$$slots:{default:!0}});var a=O(i,2);me(a,{size:`sm`,class:`h-8 px-3 text-xs`,onclick:()=>Z(`form`),children:(e,t)=>{E();var n=m(`Custom endpoint`);f(e,n)},$$slots:{default:!0}}),t(r),t(n),f(e,n)};u(R,e=>{g(h)?e(U):g(K)?e(q,1):e(J,-1)}),t(I),j(()=>B(F,1,`h-7 shrink-0 self-center rounded px-2 text-[11px] font-medium transition-colors ${g(h)?`bg-primary/10 text-primary`:`text-muted-foreground hover:bg-muted hover:text-foreground`}`)),s(`scroll`,p,he),o(`click`,F,()=>g(G).length===0?Z(`form`):Z(`pick`)),f(n,r)},De=e=>{var t=Mn();f(e,t)},ke=e=>{var t=Nn();f(e,t)};u(Te,e=>{g(W)?e(Ee):$.loading?e(De,1):e(ke,-1)});var Ae=O(Te,2),je=e=>{var t=Pn(),n=x(t,!0);j(()=>a(n,$.error)),f(e,t)};u(Ae,e=>{$.error&&e(je)});var Me=O(Ae,2),Ne=e=>{var t=Pn(),n=x(t,!0);j(()=>a(n,g(I))),f(e,t)};u(Me,e=>{g(I)&&e(Ne)}),t(ye);var Pe=O(ye,2);{let e=w(()=>g(T)??``);Oe(Pe,{title:`Remove route`,get description(){return`Remove the “${g(e)??``}” route? Its stored key is kept; if it held the active model, that reference is left outside Routes.`},get busy(){return g(P)},onConfirm:()=>void se(),get open(){return g(M)},set open(e){C(M,e,!0)}})}f(n,_e),p()}h([`click`,`keydown`]);var Ln=n(`<p class="text-[10px] text-destructive" role="alert"> </p>`),Rn=n(`<p class="text-[10px] text-primary" role="status"> </p>`),zn=n(`<div class="text-xs text-muted-foreground">Loading…</div>`),Bn=n(`<div class="flex items-center justify-between gap-2 text-xs text-muted-foreground"><span class="text-destructive" role="alert"> </span> <!></div>`),Vn=n(`<p class="rounded-md border border-dashed border-border p-3 text-xs text-muted-foreground">No sessions yet. Sessions you start from the agent panel are listed here and can be reviewed
5
+ or removed individually.</p>`),Hn=n(`<span class="shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground" title="Kernel/steward session without a product transcript — managed by the kernel, not deletable here">kernel-only</span>`),Un=n(`<li class="flex items-center gap-2 rounded-md border border-border bg-background/60 px-2.5 py-1.5"><span class="min-w-0 flex-1 truncate text-xs"> </span> <span class="shrink-0 text-[10px] tabular-nums text-muted-foreground"> </span> <span class="shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground"> </span> <span> </span> <!> <!></li>`),Wn=n(`<div class="space-y-1"><span class="text-[10px] font-medium text-muted-foreground"> </span> <ul class="space-y-1"></ul></div>`),Gn=n(`<div class="text-xs text-destructive" role="alert"> </div>`),Kn=n(`<div class="space-y-4"><div><h3 class="text-sm font-medium">Sessions</h3> <p class="mt-0.5 text-[11px] text-muted-foreground">Manage agent panel sessions and transcript retention.</p></div> <section class="space-y-1.5" aria-label="Cleanup policy"><span class="text-[11px] font-medium text-muted-foreground">Cleanup policy</span> <div class="flex items-end gap-1.5"><label class="flex-1 space-y-1"><span class="block text-[10px] text-muted-foreground">Delete transcripts older than (days)</span> <!></label> <!></div> <p class="text-[10px] text-muted-foreground">Sessions older than this are cleaned automatically when the daemon starts (default 30 days).
6
+ Kernel-side session logs are not touched.</p> <!></section> <section class="space-y-1.5" aria-label="Session list"><div class="flex items-center justify-between"><span class="text-[11px] font-medium text-muted-foreground">Session list</span> <!></div> <!> <!></section> <!></div> <!>`,1);function qn(n,i){r(i,!0);let o=A(30),s=A(!1),c=A(!1),d=A(null),h=A(null),_=A(null),v=A(!1),y=A(!1),b=A(null),S=A(!1),T=!1;F(()=>{T||(T=!0,xe())}),F(()=>{let e=$.view?.settings.session.sessionCleanupDays;e!==void 0&&!g(s)&&C(o,e,!0)});let D=w(()=>{let e=[...be.sessions].sort((e,t)=>e.createdAt<t.createdAt?1:-1),t=new Map;for(let n of e){let e=M(n.createdAt),r=t.get(e)??[];r.push(n),t.set(e,r)}return[...t.entries()]});function M(e){let t=new Date(e);return Number.isNaN(t.getTime())?`Unknown date`:`${String(t.getFullYear()).padStart(4,`0`)}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}`}function P(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function I(e){return J.find(t=>t.id===e)?.label??e}function R(){let e=Number(g(o));return!Number.isInteger(e)||e<1||e>365?null:e}async function z(){let e=R();if(e===null){C(d,`Retention must be a whole number of days between 1 and 365.`);return}C(d,null),C(c,!0);try{let t=await ve({session:{sessionCleanupDays:e}});if(!t)return;t.outcome===`rejected`?C(h,`${t.code}: ${t.detail}`):t.outcome===`error`?C(h,t.message,!0):(C(h,null),C(s,!1))}finally{C(c,!1)}}async function V(){let e=R();if(e===null){C(d,`Retention must be a whole number of days between 1 and 365.`);return}C(d,null),C(v,!0),C(_,null);try{let t=await Se({beforeDays:e});if(!t)return;if(`error`in t){C(h,t.error,!0);return}C(h,null),C(_,`Deleted ${t.deleted} session${t.deleted===1?``:`s`} · kept ${t.kept}`)}finally{C(v,!1)}}function H(e){C(b,e,!0),C(y,!0)}async function U(){let e=g(b);if(e){C(S,!0);try{let t=await Se({sessionIds:[e.sessionId]});if(!t)return;if(`error`in t){C(h,t.error,!0);return}C(h,null),t.deleted===0&&C(h,`Session ${e.sessionId} was not removed (running or already gone).`),C(y,!1)}finally{C(S,!1)}}}var W=Kn(),G=L(W),K=O(N(G),2),q=O(N(K),2),Y=N(q),X=O(N(Y),2);he(X,{type:`number`,min:1,max:365,step:1,oninput:()=>C(s,!0),get disabled(){return g(c)},"aria-label":`Session retention days`,get value(){return g(o)},set value(e){C(o,e,!0)}}),t(Y);var te=O(Y,2);{let e=w(()=>g(c)||!g(s)||R()===null);me(te,{size:`sm`,class:`h-8 px-2.5 text-xs`,get disabled(){return g(e)},onclick:()=>void z(),children:(e,t)=>{E();var n=m();j(()=>a(n,g(c)?`Saving…`:`Save`)),f(e,n)},$$slots:{default:!0}})}t(q);var Z=O(q,4),ne=e=>{var t=Ln(),n=x(t,!0);j(()=>a(n,g(d))),f(e,t)};u(Z,e=>{g(d)&&e(ne)}),t(K);var re=O(K,2),ie=N(re),ae=O(N(ie),2);{let e=w(()=>g(v)||R()===null);me(ae,{size:`sm`,variant:`outline`,class:`h-7 px-2.5 text-xs`,get disabled(){return g(e)},onclick:()=>void V(),children:(e,t)=>{E();var n=m();j(()=>a(n,g(v)?`Cleaning…`:`Clean now`)),f(e,n)},$$slots:{default:!0}})}t(ie);var oe=O(ie,2),Q=e=>{var t=Rn(),n=x(t,!0);j(()=>a(n,g(_))),f(e,t)};u(oe,e=>{g(_)&&e(Q)});var se=O(oe,2),ce=e=>{var t=zn();f(e,t)},le=e=>{var n=Bn(),r=N(n),i=x(r,!0),o=O(r,2);me(o,{size:`sm`,class:`h-7 px-2.5 text-xs`,onclick:()=>void xe(),children:(e,t)=>{E();var n=m(`Retry`);f(e,n)},$$slots:{default:!0}}),t(n),j(()=>a(i,be.error)),f(e,n)},ue=e=>{var t=Vn();f(e,t)},de=n=>{var r=ee(),i=L(r);e(i,17,()=>g(D),([e,t])=>e,(n,r)=>{var i=w(()=>l(g(r),2));let o=()=>g(i)[0],s=()=>g(i)[1];var c=Wn(),d=N(c),p=x(d,!0),m=O(d,2);e(m,21,s,e=>e.sessionId,(e,n)=>{var r=Un(),i=N(r),o=x(i,!0),s=O(i,2),c=x(s,!0),l=O(s,2),d=x(l,!0),p=O(l,2),m=x(p,!0),h=O(p,2),_=e=>{var t=Hn();f(e,t)};u(h,e=>{g(n).hasTranscript===!1&&e(_)});var v=O(h,2);{let e=w(()=>g(n).title||g(n).sessionId),t=w(()=>g(n).status===`running`?`Running sessions cannot be deleted`:g(n).hasTranscript===!1?`Kernel-only session — nothing to clean in the product layer`:`Delete session`),r=w(()=>g(n).status===`running`||g(n).hasTranscript===!1||g(S));me(v,{size:`icon`,variant:`ghost`,class:`h-6 w-6 shrink-0`,get"aria-label"(){return`Delete session ${g(e)??``}`},get title(){return g(t)},get disabled(){return g(r)},onclick:()=>H(g(n)),children:(e,t)=>{ke(e,{class:`h-3.5 w-3.5`})},$$slots:{default:!0}})}t(r),j((e,t)=>{k(i,`title`,g(n).title||g(n).sessionId),a(o,g(n).title||`Untitled session`),a(c,e),a(d,t),B(p,1,`shrink-0 text-[10px] ${g(n).status===`running`?`text-primary`:`text-muted-foreground`}`),a(m,g(n).status)},[()=>P(g(n).createdAt),()=>I(g(n).mode)]),f(e,r)}),t(m),t(c),j(()=>a(p,o())),f(n,c)}),f(n,r)};u(se,e=>{be.loading&&!be.loaded?e(ce):be.error?e(le,1):g(D).length===0?e(ue,2):e(de,-1)}),t(re);var fe=O(re,2),pe=e=>{var t=Gn(),n=x(t,!0);j(()=>a(n,g(h))),f(e,t)};u(fe,e=>{g(h)&&e(pe)}),t(G);var ge=O(G,2);{let e=w(()=>g(b)?.title||(g(b)?.sessionId??``));Oe(ge,{title:`Delete session`,get description(){return`Delete the transcript of “${g(e)??``}”? This cannot be undone.`},get busy(){return g(S)},onConfirm:()=>void U(),get open(){return g(y)},set open(e){C(y,e,!0)}})}f(n,W),p()}var Jn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Yn(e,t){let n=M(t,Jn),r=[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]];H(e,I({name:`settings-2`},()=>n,{get iconNode(){return r}}))}var Xn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Zn(e,t){let n=M(t,Xn),r=[[`path`,{d:`M12 20v2`}],[`path`,{d:`M12 2v2`}],[`path`,{d:`M17 20v2`}],[`path`,{d:`M17 2v2`}],[`path`,{d:`M2 12h2`}],[`path`,{d:`M2 17h2`}],[`path`,{d:`M2 7h2`}],[`path`,{d:`M20 12h2`}],[`path`,{d:`M20 17h2`}],[`path`,{d:`M20 7h2`}],[`path`,{d:`M7 20v2`}],[`path`,{d:`M7 2v2`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`}]];H(e,I({name:`cpu`},()=>n,{get iconNode(){return r}}))}var Qn=n(`<button><!> </button>`),$n=n(`<div class="flex h-full min-h-0 flex-col"><header class="flex shrink-0 items-start justify-between gap-3 border-b border-border px-5 pb-4 pt-5"><div><h1 class="text-lg font-semibold">Settings</h1> <p class="mt-0.5 text-xs text-muted-foreground">General, model routes, agent defaults, and session retention.</p></div></header> <div class="grid min-h-0 flex-1 grid-cols-[176px_1fr] max-[720px]:grid-cols-1 max-[720px]:grid-rows-[auto_minmax(0,1fr)]"><div class="flex min-h-0 flex-col border-r border-border bg-muted/30 max-[720px]:min-h-0 max-[720px]:border-r-0 max-[720px]:border-b"><nav class="no-scrollbar flex flex-col gap-0.5 p-2 max-[720px]:flex-row max-[720px]:gap-1 max-[720px]:overflow-x-auto max-[720px]:[mask-image:linear-gradient(to_right,black_calc(100%-14px),transparent)]" aria-label="Settings sections"></nav></div> <div><!></div></div></div>`);function er(n,s){r(s,!0);let c=[{id:`general`,label:`General`,icon:Yn},{id:`model`,label:`Model`,icon:Zn},{id:`agent`,label:`Agent`,icon:fe},{id:`sessions`,label:`Sessions`,icon:Ee}],l=U(),d=w(()=>{let e=l?.()?.section;return oe.includes(e)?e:`general`});F(()=>{Ce()});function m(e){V(`/settings/${e}`)}var h=$n(),_=O(N(h),2),v=N(_),y=N(v);e(y,21,()=>c,e=>e.id,(e,n)=>{let r=w(()=>g(n).icon);var s=Qn(),c=N(s);i(c,()=>g(r),(e,t)=>{t(e,{class:`h-3.5 w-3.5`})});var l=O(c);t(s),j(()=>{B(s,1,`flex h-8 items-center gap-2 rounded-md px-2 text-xs transition-colors max-[720px]:h-11 max-[720px]:shrink-0 max-[720px]:px-3 ${g(d)===g(n).id?`bg-primary/10 text-primary`:`text-muted-foreground hover:bg-muted hover:text-foreground`}`),k(s,`aria-label`,g(n).label),k(s,`aria-current`,g(d)===g(n).id?`true`:void 0),a(l,` ${g(n).label??``}`)}),o(`click`,s,()=>m(g(n).id)),f(e,s)}),t(y),t(v);var b=O(v,2),x=N(b),S=e=>{Ke(e,{})},C=e=>{In(e,{})},T=e=>{qn(e,{})},E=e=>{Re(e,{})};u(x,e=>{g(d)===`general`?e(S):g(d)===`model`?e(C,1):g(d)===`sessions`?e(T,2):e(E,-1)}),t(b),t(_),t(h),j(()=>B(b,1,`min-w-0 p-4 ${g(d)===`model`?`overflow-hidden`:`overflow-y-auto`}`)),f(n,h),p()}h([`click`]);export{er as default};
@@ -1 +1 @@
1
- import{A as e,At as t,B as n,Ct as r,D as i,F as a,G as o,N as s,R as c,St as l,W as u,X as d,ct as f,gt as p,kt as m,lt as h,nt as g,o as _,ot as v,s as y,st as b,z as x}from"./CmCJ0SKP.js";import{t as S}from"./8hp3I3ac.js";import"./xihTtKlq.js";import"./DXKynIUR.js";import{t as C}from"./BkEnd9_Z.js";import"./BOPkZ98B.js";import{o as w}from"./D3qCeXbe.js";import{t as T}from"./DApmS1g_.js";import{t as E}from"./HopcQwhZ.js";import{n as D,t as O}from"./BYNWtKcf.js";var k=new Set([`$$slots`,`$$events`,`$$legacy`]);function A(e,t){let n=_(t,k),r=[[`path`,{d:`m16 18 6-6-6-6`}],[`path`,{d:`m8 6-6 6 6 6`}]];C(e,y({name:`code`},()=>n,{get iconNode(){return r}}))}var j=new Set([`$$slots`,`$$events`,`$$legacy`]);function M(e,t){let n=_(t,j),r=[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}]];C(e,y({name:`pen`},()=>n,{get iconNode(){return r}}))}var N=new Set([`$$slots`,`$$events`,`$$legacy`]);function P(e,t){let n=_(t,N),r=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]];C(e,y({name:`database`},()=>n,{get iconNode(){return r}}))}var F=new Set([`$$slots`,`$$events`,`$$legacy`]);function I(e,t){let n=_(t,F),r=[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]];C(e,y({name:`palette`},()=>n,{get iconNode(){return r}}))}var L=new Set([`$$slots`,`$$events`,`$$legacy`]);function R(e,t){let n=_(t,L),r=[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`}]];C(e,y({name:`server`},()=>n,{get iconNode(){return r}}))}var z=new Set([`$$slots`,`$$events`,`$$legacy`]);function B(e,t){let n=_(t,z),r=[[`path`,{d:`M12 3v18`}],[`path`,{d:`m19 8 3 8a5 5 0 0 1-6 0zV7`}],[`path`,{d:`M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1`}],[`path`,{d:`m5 8 3 8a5 5 0 0 1-6 0zV7`}],[`path`,{d:`M7 21h10`}]];C(e,y({name:`scale`},()=>n,{get iconNode(){return r}}))}var V=new Set([`$$slots`,`$$events`,`$$legacy`]);function H(e,t){let n=_(t,V),r=[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`}],[`path`,{d:`M12 22V12`}]];C(e,y({name:`box`},()=>n,{get iconNode(){return r}}))}var U=n(`<button class="rounded-lg border border-border p-3 text-left transition-colors hover:bg-muted/50"><div class="text-sm font-medium"> </div> <p class="mt-1 text-xs text-muted-foreground line-clamp-2"> </p></button>`),W=n(`<section><div class="mb-2 flex items-center gap-2"><!> <h2 class="text-sm font-medium"> </h2></div> <div class="grid grid-cols-1 gap-2 sm:grid-cols-2 lg:grid-cols-3"></div></section>`),G=n(`<div class="flex h-full flex-col overflow-y-auto"><header class="shrink-0 border-b border-border px-5 py-4"><h1 class="text-lg font-semibold">Creator</h1> <p class="mt-0.5 text-xs text-muted-foreground">Write skills with AI assistance, test them in context, and iterate.</p></header> <div class="mx-auto w-full max-w-4xl space-y-6 p-5"><div class="flex gap-3"><button class="flex items-center gap-2 rounded-lg border border-border px-4 py-2 text-sm font-medium transition-colors hover:bg-muted/50"><!> New skill</button> <button class="flex items-center gap-2 rounded-lg border border-border px-4 py-2 text-sm font-medium transition-colors hover:bg-muted/50"><!> Open existing</button></div> <div class="space-y-5"></div></div></div>`);function K(n,u){r(u,!0);let _={coding:A,writing:M,data:P,design:I,devops:R,legal:B,general:H},y=p(()=>Object.entries(D).map(([e,t])=>({category:e,label:t.label,icon:_[e]??H,templates:O.filter(t=>t.category===e)}))),C=p(w);function k(e){let t=d(C)[0];if(!t){S(`/workspaces`);return}S(`/creator/new/${t.target.workspaceId}/${t.target.providerId}?template=${e}`)}function j(){let e=d(C)[0];if(!e){S(`/workspaces`);return}S(`/creator/new/${e.target.workspaceId}/${e.target.providerId}`)}var N=G(),F=h(v(N),2),L=v(F),z=v(L),V=v(z);E(V,{class:`h-4 w-4`}),m(),t(z);var K=h(z,2),q=v(K);T(q,{class:`h-4 w-4`}),m(),t(K),t(L);var J=h(L,2);e(J,21,()=>d(y),e=>e.category,(n,r)=>{var l=x(),u=b(l),p=n=>{var s=W(),l=v(s),u=v(l);i(u,()=>d(r).icon,(e,t)=>{t(e,{class:`h-4 w-4 text-muted-foreground`})});var p=h(u,2),m=f(p,!0);t(l);var _=h(l,2);e(_,21,()=>d(r).templates,e=>e.id,(e,n)=>{var r=U(),i=v(r),s=f(i,!0),l=h(i,2),u=f(l,!0);t(r),g(()=>{a(s,d(n).name),a(u,d(n).description)}),o(`click`,r,()=>k(d(n).id)),c(e,r)}),t(_),t(s),g(()=>a(m,d(r).label)),c(n,s)};s(u,e=>{d(r).templates.length>0&&e(p)}),c(n,l)}),t(J),t(F),t(N),o(`click`,z,j),o(`click`,K,()=>void S(`/workspaces`)),c(n,N),l()}u([`click`]);export{K as default};
1
+ import{A as e,At as t,B as n,Ct as r,D as i,F as a,G as o,N as s,R as c,St as l,W as u,X as d,ct as f,gt as p,kt as m,lt as h,nt as g,o as _,ot as v,s as y,st as b,z as x}from"./CmCJ0SKP.js";import{t as S}from"./B0stYqX9.js";import"./xihTtKlq.js";import"./oJ4aK8PG.js";import{t as C}from"./BkEnd9_Z.js";import"./CdjBDc_u.js";import{o as w}from"./BgJCuTDs.js";import{t as T}from"./DApmS1g_.js";import{t as E}from"./HopcQwhZ.js";import{n as D,t as O}from"./BYNWtKcf.js";var k=new Set([`$$slots`,`$$events`,`$$legacy`]);function A(e,t){let n=_(t,k),r=[[`path`,{d:`m16 18 6-6-6-6`}],[`path`,{d:`m8 6-6 6 6 6`}]];C(e,y({name:`code`},()=>n,{get iconNode(){return r}}))}var j=new Set([`$$slots`,`$$events`,`$$legacy`]);function M(e,t){let n=_(t,j),r=[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}]];C(e,y({name:`pen`},()=>n,{get iconNode(){return r}}))}var N=new Set([`$$slots`,`$$events`,`$$legacy`]);function P(e,t){let n=_(t,N),r=[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]];C(e,y({name:`database`},()=>n,{get iconNode(){return r}}))}var F=new Set([`$$slots`,`$$events`,`$$legacy`]);function I(e,t){let n=_(t,F),r=[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]];C(e,y({name:`palette`},()=>n,{get iconNode(){return r}}))}var L=new Set([`$$slots`,`$$events`,`$$legacy`]);function R(e,t){let n=_(t,L),r=[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`}]];C(e,y({name:`server`},()=>n,{get iconNode(){return r}}))}var z=new Set([`$$slots`,`$$events`,`$$legacy`]);function B(e,t){let n=_(t,z),r=[[`path`,{d:`M12 3v18`}],[`path`,{d:`m19 8 3 8a5 5 0 0 1-6 0zV7`}],[`path`,{d:`M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1`}],[`path`,{d:`m5 8 3 8a5 5 0 0 1-6 0zV7`}],[`path`,{d:`M7 21h10`}]];C(e,y({name:`scale`},()=>n,{get iconNode(){return r}}))}var V=new Set([`$$slots`,`$$events`,`$$legacy`]);function H(e,t){let n=_(t,V),r=[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`}],[`path`,{d:`M12 22V12`}]];C(e,y({name:`box`},()=>n,{get iconNode(){return r}}))}var U=n(`<button class="rounded-lg border border-border p-3 text-left transition-colors hover:bg-muted/50"><div class="text-sm font-medium"> </div> <p class="mt-1 text-xs text-muted-foreground line-clamp-2"> </p></button>`),W=n(`<section><div class="mb-2 flex items-center gap-2"><!> <h2 class="text-sm font-medium"> </h2></div> <div class="grid grid-cols-1 gap-2 sm:grid-cols-2 lg:grid-cols-3"></div></section>`),G=n(`<div class="flex h-full flex-col overflow-y-auto"><header class="shrink-0 border-b border-border px-5 py-4"><h1 class="text-lg font-semibold">Creator</h1> <p class="mt-0.5 text-xs text-muted-foreground">Write skills with AI assistance, test them in context, and iterate.</p></header> <div class="mx-auto w-full max-w-4xl space-y-6 p-5"><div class="flex gap-3"><button class="flex items-center gap-2 rounded-lg border border-border px-4 py-2 text-sm font-medium transition-colors hover:bg-muted/50"><!> New skill</button> <button class="flex items-center gap-2 rounded-lg border border-border px-4 py-2 text-sm font-medium transition-colors hover:bg-muted/50"><!> Open existing</button></div> <div class="space-y-5"></div></div></div>`);function K(n,u){r(u,!0);let _={coding:A,writing:M,data:P,design:I,devops:R,legal:B,general:H},y=p(()=>Object.entries(D).map(([e,t])=>({category:e,label:t.label,icon:_[e]??H,templates:O.filter(t=>t.category===e)}))),C=p(w);function k(e){let t=d(C)[0];if(!t){S(`/workspaces`);return}S(`/creator/new/${t.target.workspaceId}/${t.target.providerId}?template=${e}`)}function j(){let e=d(C)[0];if(!e){S(`/workspaces`);return}S(`/creator/new/${e.target.workspaceId}/${e.target.providerId}`)}var N=G(),F=h(v(N),2),L=v(F),z=v(L),V=v(z);E(V,{class:`h-4 w-4`}),m(),t(z);var K=h(z,2),q=v(K);T(q,{class:`h-4 w-4`}),m(),t(K),t(L);var J=h(L,2);e(J,21,()=>d(y),e=>e.category,(n,r)=>{var l=x(),u=b(l),p=n=>{var s=W(),l=v(s),u=v(l);i(u,()=>d(r).icon,(e,t)=>{t(e,{class:`h-4 w-4 text-muted-foreground`})});var p=h(u,2),m=f(p,!0);t(l);var _=h(l,2);e(_,21,()=>d(r).templates,e=>e.id,(e,n)=>{var r=U(),i=v(r),s=f(i,!0),l=h(i,2),u=f(l,!0);t(r),g(()=>{a(s,d(n).name),a(u,d(n).description)}),o(`click`,r,()=>k(d(n).id)),c(e,r)}),t(_),t(s),g(()=>a(m,d(r).label)),c(n,s)};s(u,e=>{d(r).templates.length>0&&e(p)}),c(n,l)}),t(J),t(F),t(N),o(`click`,z,j),o(`click`,K,()=>void S(`/workspaces`)),c(n,N),l()}u([`click`]);export{K as default};
@@ -0,0 +1,2 @@
1
+ import{A as e,At as t,B as n,Ct as r,D as i,Dt as a,F as o,G as s,H as c,N as l,O as u,R as d,St as f,U as p,W as m,X as h,a as g,c as _,ct as v,d as y,f as b,ft as x,gt as S,jt as C,kt as w,lt as T,m as E,mt as D,nt as O,o as k,ot as A,rt as j,s as M,st as N,x as ee,z as P}from"./CmCJ0SKP.js";import{t as F}from"./B0stYqX9.js";import"./xihTtKlq.js";import"./oJ4aK8PG.js";import{t as I}from"./BkEnd9_Z.js";import{d as te,i as ne,l as re,n as ie,o as ae,r as oe,s as L,t as se,u as R}from"./Cp0lquqA.js";import{t as ce}from"./BT2vrlul.js";import"./CdjBDc_u.js";import{a as z,i as le,n as ue,s as de}from"./BgJCuTDs.js";import{n as B}from"./1aUphu7Y.js";import{C as fe,F as V,G as H,I as pe,L as me,N as he,P as U,T as ge,U as W,W as G,Y as K}from"./Crg8KRap.js";import"./DZ_Kltd5.js";import{i as q,n as J,t as _e}from"./DnPeA-9c.js";import{t as Y}from"./M-b0y9AQ.js";import{t as ve}from"./CpRvgjpe.js";import{t as ye}from"./BIfnT_mK.js";import{S as be,a as xe,f as Se,g as Ce,y as we}from"./Ccj5eiVa.js";import{t as Te}from"./Bs27XW8_.js";import{n as Ee,t as De}from"./hIGXQE4_.js";import{t as X}from"./Bl0jjuyR.js";import{t as Oe}from"./CI1OXbBG.js";var Z=V({component:`checkbox`,parts:[`root`,`group`,`group-label`,`input`]}),ke=new G(`Checkbox.Group`),Q=new G(`Checkbox.Root`),Ae=class e{static create(t,n=null){return Q.set(new e(t,n))}opts;group;#e=S(()=>this.group&&this.group.opts.name.current?this.group.opts.name.current:this.opts.name.current);get trueName(){return h(this.#e)}set trueName(e){x(this.#e,e)}#t=S(()=>this.group&&this.group.opts.required.current?!0:this.opts.required.current);get trueRequired(){return h(this.#t)}set trueRequired(e){x(this.#t,e)}#n=S(()=>this.group&&this.group.opts.disabled.current?!0:this.opts.disabled.current);get trueDisabled(){return h(this.#n)}set trueDisabled(e){x(this.#n,e)}#r=S(()=>this.group&&this.group.opts.readonly.current?!0:this.opts.readonly.current);get trueReadonly(){return h(this.#r)}set trueReadonly(e){x(this.#r,e)}attachment;constructor(e,t){this.opts=e,this.group=t,this.attachment=me(this.opts.ref),this.onkeydown=this.onkeydown.bind(this),this.onclick=this.onclick.bind(this),W.pre([()=>a(this.group?.opts.value.current),()=>this.opts.value.current],([e,t])=>{e&&t&&(this.opts.checked.current=e.includes(t))}),W.pre(()=>this.opts.checked.current,e=>{this.group&&(e?this.group?.addValue(this.opts.value.current):this.group?.removeValue(this.opts.value.current))})}onkeydown(e){if(!(this.trueDisabled||this.trueReadonly)){if(e.key===`Enter`){e.preventDefault(),this.opts.type.current===`submit`&&e.currentTarget.closest(`form`)?.requestSubmit();return}e.key===` `&&(e.preventDefault(),this.#i())}}#i(){this.opts.indeterminate.current?(this.opts.indeterminate.current=!1,this.opts.checked.current=!0):this.opts.checked.current=!this.opts.checked.current}onclick(e){if(!(this.trueDisabled||this.trueReadonly)){if(this.opts.type.current===`submit`){this.#i();return}e.preventDefault(),this.#i()}}#a=S(()=>({checked:this.opts.checked.current,indeterminate:this.opts.indeterminate.current}));get snippetProps(){return h(this.#a)}set snippetProps(e){x(this.#a,e)}#o=S(()=>({id:this.opts.id.current,role:`checkbox`,type:this.opts.type.current,disabled:this.trueDisabled,"aria-checked":pe(this.opts.checked.current,this.opts.indeterminate.current),"aria-required":U(this.trueRequired),"aria-readonly":U(this.trueReadonly),"data-disabled":he(this.trueDisabled),"data-readonly":he(this.trueReadonly),"data-state":Me(this.opts.checked.current,this.opts.indeterminate.current),[Z.root]:``,onclick:this.onclick,onkeydown:this.onkeydown,...this.attachment}));get props(){return h(this.#o)}set props(e){x(this.#o,e)}},je=class e{static create(){return new e(Q.get())}root;#e=S(()=>this.root.group?!!(this.root.opts.value.current!==void 0&&this.root.group.opts.value.current.includes(this.root.opts.value.current)):this.root.opts.checked.current);get trueChecked(){return h(this.#e)}set trueChecked(e){x(this.#e,e)}#t=S(()=>!!this.root.trueName);get shouldRender(){return h(this.#t)}set shouldRender(e){x(this.#t,e)}constructor(e){this.root=e,this.onfocus=this.onfocus.bind(this)}onfocus(e){ge(this.root.opts.ref.current)&&this.root.opts.ref.current.focus()}#n=S(()=>({type:`checkbox`,checked:this.root.opts.checked.current===!0,disabled:this.root.trueDisabled,required:this.root.trueRequired,name:this.root.trueName,form:this.root.opts.form.current,value:this.root.opts.value.current,readonly:this.root.trueReadonly,onfocus:this.onfocus}));get props(){return h(this.#n)}set props(e){x(this.#n,e)}};function Me(e,t){return t?`indeterminate`:e?`checked`:`unchecked`}var Ne=new Set([`$$slots`,`$$events`,`$$legacy`,`value`]),$=n(`<input/>`);function Pe(e,t){r(t,!0);let n=g(t,`value`,15),i=k(t,Ne),a=S(()=>H(i,{"aria-hidden":`true`,tabindex:-1,style:{...ne,position:`absolute`,top:`0`,left:`0`}}));var o=P(),s=N(o),c=e=>{var t=$();b(t,()=>({...h(a),value:n()}),void 0,void 0,void 0,void 0,!0),d(e,t)},u=e=>{var t=$();b(t,()=>({...h(a)}),void 0,void 0,void 0,void 0,!0),y(t,n),d(e,t)};l(s,e=>{h(a).type===`checkbox`?e(c):e(u,-1)}),d(e,o),f()}function Fe(e,t){r(t,!1);let n=je.create();_();var i=P(),a=N(i),o=e=>{Pe(e,M(()=>n.props))};l(a,e=>{n.shouldRender&&e(o)}),d(e,i),f()}var Ie=new Set([`$$slots`,`$$events`,`$$legacy`,`checked`,`ref`,`onCheckedChange`,`children`,`disabled`,`required`,`name`,`form`,`value`,`id`,`indeterminate`,`onIndeterminateChange`,`child`,`type`,`readonly`]),Le=n(`<button><!></button>`),Re=n(`<!> <!>`,1);function ze(e,n){let i=c();r(n,!0);let a=g(n,`checked`,15,!1),o=g(n,`ref`,15,null),s=g(n,`disabled`,3,!1),p=g(n,`required`,3,!1),m=g(n,`name`,3,void 0),_=g(n,`form`,3,void 0),v=g(n,`value`,3,`on`),y=g(n,`id`,19,()=>fe(i)),x=g(n,`indeterminate`,15,!1),w=g(n,`type`,3,`button`),E=k(n,Ie),D=ke.getOr(null);D&&v()&&(D.opts.value.current.includes(v())?a(!0):a(!1)),W.pre(()=>v(),()=>{D&&v()&&(D.opts.value.current.includes(v())?a(!0):a(!1))});let O=Ae.create({checked:K(()=>a(),e=>{a(e),n.onCheckedChange?.(e)}),disabled:K(()=>s()??!1),required:K(()=>p()),name:K(()=>m()),form:K(()=>_()),value:K(()=>v()),id:K(()=>y()),ref:K(()=>o(),e=>o(e)),indeterminate:K(()=>x(),e=>{x(e),n.onIndeterminateChange?.(e)}),type:K(()=>w()),readonly:K(()=>!!n.readonly)},D),j=S(()=>H({...E},O.props));var M=Re(),ee=N(M),F=e=>{var t=P(),r=N(t);{let e=S(()=>({props:h(j),...O.snippetProps}));u(r,()=>n.child,()=>h(e))}d(e,t)},I=e=>{var r=Le();b(r,()=>({...h(j)}));var i=A(r);u(i,()=>n.children??C,()=>O.snippetProps),t(r),d(e,r)};l(ee,e=>{n.child?e(F):e(I,-1)}),Fe(T(ee,2),{}),d(e,M),f()}var Be=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ve(e,t){let n=k(t,Be),r=[[`path`,{d:`M5 12h14`}]];I(e,M({name:`minus`},()=>n,{get iconNode(){return r}}))}var He=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ue(e,t){let n=k(t,He),r=[[`path`,{d:`M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5`}],[`path`,{d:`M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27`}]];I(e,M({name:`heart-pulse`},()=>n,{get iconNode(){return r}}))}var We=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ge(e,t){let n=k(t,We),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z`}]];I(e,M({name:`compass`},()=>n,{get iconNode(){return r}}))}var Ke=new Set([`$$slots`,`$$events`,`$$legacy`,`ref`,`checked`,`indeterminate`,`class`]),qe=n(`<div data-slot="checkbox-indicator" class="[&amp;>svg]:size-3.5 grid place-content-center text-current transition-none"><!></div>`);function Je(e,n){r(n,!0);let a=g(n,`ref`,15,null),o=g(n,`checked`,15,!1),s=g(n,`indeterminate`,15,!1),c=k(n,Ke);var u=P(),p=N(u);{let e=(e,n)=>{let r=()=>(n?.()).checked,i=()=>(n?.()).indeterminate;var a=qe(),o=A(a),s=e=>{Y(e,{})},c=e=>{Ve(e,{})};l(o,e=>{r()?e(s):i()&&e(c,1)}),t(a),d(e,a)},r=S(()=>q(`border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-[4px] border transition-shadow group-has-disabled/field:opacity-50 focus-visible:ring-2 aria-invalid:ring-2 peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50`,n.class));i(p,()=>ze,(t,n)=>{n(t,M({"data-slot":`checkbox`,get class(){return h(r)}},()=>c,{get ref(){return a()},set ref(e){a(e)},get checked(){return o()},set checked(e){o(e)},get indeterminate(){return s()},set indeterminate(e){s(e)},children:e,$$slots:{default:!0}}))})}d(e,u),f()}var Ye=n(`<label class="flex cursor-pointer items-center gap-2 text-xs text-muted-foreground"><!> Back up the existing directory first (<code>~/.agents/skills-backup/…</code>)</label>`),Xe=n(`<div class="mb-4 flex items-start gap-2.5 rounded-md border border-amber-500/40 bg-amber-500/10 p-3 text-sm" role="alert"><!> <div class="min-w-0 flex-1 space-y-2.5"><p class="leading-relaxed"><span class="font-medium">Self skill conflict.</span> <code class="rounded bg-muted px-1 py-0.5 text-xs"> </code> </p> <!> <div class="flex flex-wrap items-center gap-2"><!> <!></div></div></div>`);function Ze(e,n){r(n,!0);let i=S(()=>R.status?.state===`conflict`?R.status.conflict:null),a=D(!0),s=D(!1),c=D(!1),u=S(()=>h(i)?h(i).kind===`user-directory`?`a directory you maintain`:h(i).kind===`foreign-link`?`a link to ${h(i).targetPath??`an external location`}`:`a foreign entry`:``);async function m(){if(!h(i)||h(s))return;x(s,!0);let e=await re(h(a)&&h(i).backupAvailable);x(s,!1),e.ok?B(e.backupPath?`Self skill installed; previous version backed up to ${e.backupPath}`:`Self skill installed.`):B(`Self skill install failed: ${e.reason}`)}async function g(){if(!h(i)||h(c))return;x(c,!0);let e=await L();x(c,!1),B(e.ok?`Kept your version; we will remind you again only if the entry changes.`:`Keep failed: ${e.reason}`)}var _=P(),y=N(_),b=e=>{var n=Xe(),r=A(n);Te(r,{class:`mt-0.5 h-4 w-4 shrink-0 text-amber-500`,"aria-hidden":`true`});var f=T(r,2),_=A(f),y=T(A(_),2),b=v(y,!0),C=T(y);t(_);var E=T(_,2),D=e=>{var n=Ye();Je(A(n),{id:`self-skill-backup`,get checked(){return h(a)},set checked(e){x(a,e,!0)}}),w(3),t(n),d(e,n)};l(E,e=>{h(i).backupAvailable&&e(D)});var k=T(E,2),j=A(k);{let e=S(()=>h(s)||h(c));J(j,{size:`sm`,onclick:()=>void m(),get disabled(){return h(e)},children:(e,t)=>{w();var n=p();O(()=>o(n,h(s)?`Installing…`:`Install product version`)),d(e,n)},$$slots:{default:!0}})}var M=T(j,2);{let e=S(()=>h(s)||h(c));J(M,{size:`sm`,variant:`ghost`,onclick:()=>void g(),get disabled(){return h(e)},children:(e,t)=>{w();var n=p();O(()=>o(n,h(c)?`Keeping…`:`Keep my version`)),d(e,n)},$$slots:{default:!0}})}t(k),t(f),t(n),O(()=>{o(b,h(i).entryPath),o(C,` is ${h(u)??``}, not linked to this Skill Creator install.`)}),d(e,n)};l(y,e=>{h(i)&&e(b)}),d(e,_),f()}var Qe=n(`<!> Import`,1),$e=n(`<button class="flex w-full items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-muted/50"><!> <span class="min-w-0 flex-1 truncate text-xs"> </span> <span class="shrink-0 rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground"> </span> <span class="shrink-0 text-xs text-muted-foreground"> </span></button>`),et=n(`<section aria-label="Recent agent sessions" class="space-y-1.5"><h2 class="text-xs font-medium uppercase tracking-wide text-muted-foreground">Continue</h2> <div class="divide-y divide-border rounded-lg border border-border"></div></section>`),tt=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 workspaces</p> <p class="mt-1 break-words text-xs text-destructive/90"> </p></div> <!></div>`),nt=n(`<div class="space-y-3" aria-label="Loading workspaces"><div class="h-24 animate-pulse rounded-lg border border-border bg-muted/50"></div> <div class="h-24 animate-pulse rounded-lg border border-border bg-muted/50"></div></div>`),rt=n(`<!> Import workspace`,1),it=n(`<div class="rounded-lg border border-dashed border-border p-8 text-center"><!> <p class="mt-3 text-sm font-medium">No skill locations yet</p> <p class="mt-1 text-xs text-muted-foreground">Import a directory to manage its skills, or browse the global agent locations.</p> <!></div>`),at=n(`<p class="flex items-center gap-2 text-xs text-muted-foreground" role="status"><!> Updating…</p>`),ot=n(`<span class="text-xs text-muted-foreground">Not found on disk</span>`),st=n(`<span class="block truncate font-mono text-xs text-muted-foreground"> </span>`),ct=n(`<li><button class="flex min-h-11 w-full items-center justify-between gap-2 rounded-md bg-muted/40 px-3 py-2 text-left transition-colors hover:bg-muted/70 disabled:pointer-events-none disabled:opacity-50"><span class="min-w-0"><span class="block truncate text-xs font-medium"> </span> <!></span> <!></button></li>`),lt=n(`<section class="rounded-lg border border-border"><div class="flex items-center gap-2.5 border-b border-border px-4 py-3"><!> <div class="min-w-0 flex-1"><div class="flex items-center gap-2"><h2 class="truncate text-sm font-medium"> </h2> <!></div> <p class="mt-0.5 text-xs text-muted-foreground"> </p></div> <!></div> <ul class="grid grid-cols-1 gap-2 p-3 sm:grid-cols-2"></ul></section>`),ut=n(`<!> Missing`,1),dt=n(`<!> <!>`,1),ft=n(`<li><button class="flex min-h-9 items-center gap-1.5 rounded-full border border-border/60 px-2.5 py-1 text-xs transition-colors hover:bg-muted/50 disabled:pointer-events-none disabled:opacity-50"> <span class="tabular-nums text-muted-foreground"> </span></button></li>`),pt=n(`<ul class="flex flex-wrap gap-1.5 border-t border-border/60 px-4 py-2.5"></ul>`),mt=n(`<li><div class="flex items-center gap-2.5 px-4 py-3"><button class="flex min-h-11 min-w-0 flex-1 items-center gap-2.5 text-left"><!> <span class="min-w-0 flex-1"><span class="flex items-center gap-2"><span class="truncate text-sm font-medium"> </span> <!></span> <span class="mt-0.5 block truncate font-mono text-xs text-muted-foreground"> </span></span> <!></button> <!></div> <!></li>`),ht=n(`<section><h2 class="mb-2 text-xs font-medium uppercase tracking-wide text-muted-foreground">Imported workspaces</h2> <ul class="space-y-2"></ul></section>`),gt=n(`<!> <!> <!>`,1),_t=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">Workspaces</h1> <p class="mt-0.5 text-xs text-muted-foreground">Your skill library, agent sessions, and quick ways to put both to work.</p></div> <div class="flex shrink-0 items-center gap-1.5"><!> <!></div></header> <!> <div class="mx-auto mt-5 w-full max-w-5xl space-y-6"><section aria-label="Quick actions" class="grid grid-cols-1 gap-2 min-[560px]:grid-cols-2"><button class="flex items-start gap-2.5 rounded-lg border border-border bg-background p-3 text-left transition-colors hover:border-foreground/20 hover:bg-muted/50"><!> <span class="min-w-0"><span class="block text-sm font-medium">Create a skill</span> <span class="block text-xs text-muted-foreground">Describe the task; the agent drafts the SKILL.md with best practices.</span></span></button> <button class="flex items-start gap-2.5 rounded-lg border border-border bg-background p-3 text-left transition-colors hover:border-foreground/20 hover:bg-muted/50"><!> <span class="min-w-0"><span class="block text-sm font-medium">Health check my library</span> <span class="block text-xs text-muted-foreground">Duplicates, vague descriptions, stale skills — with proposed fixes.</span></span></button> <button class="flex items-start gap-2.5 rounded-lg border border-border bg-background p-3 text-left transition-colors hover:border-foreground/20 hover:bg-muted/50"><!> <span class="min-w-0"><span class="block text-sm font-medium">Explore skill sources</span> <span class="block text-xs text-muted-foreground">Discover curated Git sources and analyze candidate skills.</span></span></button> <button class="flex items-start gap-2.5 rounded-lg border border-border bg-background p-3 text-left transition-colors hover:border-foreground/20 hover:bg-muted/50"><!> <span class="min-w-0"><span class="block text-sm font-medium">Browse the library</span> <span class="block text-xs text-muted-foreground"> </span></span></button></section> <!> <div id="library-index" class="space-y-6"><!></div></div></div> <!>`,1);function vt(n,i){r(i,!0);function a(e){return`/wiki/${e===`~`?`%7E`:e}`}let c=S(()=>z.workspaces.filter(e=>e.kind===`global`)),u=S(()=>z.workspaces.filter(e=>e.kind===`directory`)),m=S(()=>z.workspaces.length>0),g=S(()=>z.loading&&h(m)),_=D(null),y=D(!1),b=D(!1);j(()=>{ue()}),j(()=>{!xe.loaded&&!xe.loading&&Se()});let C=S(()=>{let e=0,t=0;for(let n of z.workspaces)for(let r of n.providers)t+=1,e+=r.skillCount??0;return{skills:e,providers:t,imported:z.workspaces.filter(e=>e.kind===`directory`).length}}),k=S(()=>xe.sessions.slice(0,3));function M(e){Ce(e),we(!0)}function I(e){let t=Date.now()-new Date(e).getTime();if(!Number.isFinite(t))return``;let n=Math.floor(t/6e4);if(n<1)return`just now`;if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}function ne(e){x(_,e,!0),x(y,!0)}j(()=>{h(y)||x(_,null)});async function re(){await ue()}function L(e,t){return`/workspaces/${e.id===`~`?`%7E`:e.id}/${t.id}`}async function R(){let e=h(_);if(e){x(b,!0);try{await le(e.id)&&(x(y,!1),B(`Removed ${e.label}. Files remain on disk.`))}catch(e){B(e instanceof Error?e.message:String(e))}finally{x(b,!1)}}}var fe=_t(),V=N(fe),H=A(V),pe=T(A(H),2),me=A(pe);J(me,{variant:`ghost`,size:`icon`,class:`h-9 w-9`,title:`Refresh workspaces`,"aria-label":`Refresh workspaces`,get disabled(){return z.loading},onclick:()=>void re(),children:(e,t)=>{var n=P(),r=N(n),i=e=>{_e(e,{class:`h-4 w-4 animate-spin`})},a=e=>{ye(e,{class:`h-4 w-4`})};l(r,e=>{z.loading?e(i):e(a,-1)}),d(e,n)},$$slots:{default:!0}});var he=T(me,2);J(he,{size:`sm`,onclick:()=>ae(),children:(e,t)=>{var n=Qe(),r=N(n);oe(r,{class:`h-4 w-4`}),w(),d(e,n)},$$slots:{default:!0}}),t(pe),t(H);var U=T(H,2);Ze(U,{});var ge=T(U,2),W=A(ge),G=A(W),K=A(G);se(K,{class:`mt-0.5 h-4 w-4 shrink-0 text-foreground/70`}),w(2),t(G);var q=T(G,2);Ue(A(q),{class:`mt-0.5 h-4 w-4 shrink-0 text-foreground/70`}),w(2),t(q);var Y=T(q,2);Ge(A(Y),{class:`mt-0.5 h-4 w-4 shrink-0 text-foreground/70`}),w(2),t(Y);var Z=T(Y,2),ke=A(Z);te(ke,{class:`mt-0.5 h-4 w-4 shrink-0 text-foreground/70`});var Q=T(ke,2),Ae=T(A(Q),2),je=v(Ae);t(Q),t(Z),t(W);var Me=T(W,2),Ne=n=>{var r=et(),i=T(A(r),2);e(i,21,()=>h(k),e=>e.sessionId,(e,n)=>{var r=$e(),i=A(r);ie(i,{class:`h-3.5 w-3.5 shrink-0 text-muted-foreground`});var a=T(i,2),c=v(a,!0),l=T(a,2),u=v(l,!0),f=T(l,2),p=v(f,!0);t(r),O(e=>{o(c,h(n).title||`Untitled session`),o(u,h(n).mode),o(p,e)},[()=>I(h(n).createdAt)]),s(`click`,r,()=>M(h(n).sessionId)),d(e,r)}),t(i),t(r),d(n,r)};l(Me,e=>{h(k).length>0&&e(Ne)});var $=T(Me,2),Pe=A($),Fe=e=>{var n=tt(),r=A(n);Te(r,{class:`mt-0.5 h-4 w-4 shrink-0 text-destructive`});var i=T(r,2),a=T(A(i),2),s=v(a,!0);t(i);var c=T(i,2);J(c,{variant:`outline`,size:`sm`,onclick:()=>void re(),children:(e,t)=>{w();var n=p(`Retry`);d(e,n)},$$slots:{default:!0}}),t(n),O(()=>o(s,z.error)),d(e,n)},Ie=e=>{var t=nt();d(e,t)},Le=e=>{var n=it(),r=A(n);Oe(r,{class:`mx-auto h-8 w-8 text-muted-foreground`});var i=T(r,6);J(i,{class:`mt-4`,size:`sm`,onclick:()=>ae(),children:(e,t)=>{var n=rt(),r=N(n);oe(r,{class:`h-4 w-4`}),w(),d(e,n)},$$slots:{default:!0}}),t(n),d(e,n)},Re=n=>{var r=gt(),i=N(r),f=e=>{var n=at(),r=A(n);_e(r,{class:`h-3.5 w-3.5 animate-spin`}),w(),t(n),d(e,n)};l(i,e=>{h(g)&&e(f)});var m=T(i,2);e(m,17,()=>h(c),e=>e.id,(n,r)=>{let i=S(()=>h(r).available?h(r):null);var c=lt(),u=A(c),f=A(u);ve(f,{class:`h-4 w-4 shrink-0 text-primary`});var m=T(f,2),g=A(m),_=A(g),y=v(_,!0),b=T(_,2);X(b,{variant:`secondary`,class:`text-xs`,children:(e,t)=>{w();var n=p(`~ global`);d(e,n)},$$slots:{default:!0}}),t(g);var x=T(g,2),C=v(x);t(m);var D=T(m,2);J(D,{variant:`ghost`,size:`icon`,class:`h-9 w-9 shrink-0`,title:`Open the global wiki`,"aria-label":`Open the global wiki`,onclick:()=>void F(a(h(r).id)),children:(e,t)=>{ce(e,{class:`h-4 w-4`})},$$slots:{default:!0}}),t(u);var k=T(u,2);e(k,21,()=>h(r).providers,e=>e.id,(e,n)=>{var a=ct(),c=A(a),u=A(c),f=A(u),m=v(f,!0),g=T(f,2),_=e=>{var t=ot();d(e,t)},y=e=>{var t=st(),r=v(t,!0);O(()=>o(r,h(n).path)),d(e,t)};l(g,e=>{h(n).available?h(n).path&&e(y,1):e(_)}),t(u);var b=T(u,2);X(b,{variant:`secondary`,class:`shrink-0 tabular-nums`,children:(e,t)=>{w();var r=p();O(()=>o(r,h(n).skillCount)),d(e,r)},$$slots:{default:!0}}),t(c),t(a),O(()=>{c.disabled=!h(i)||!h(n).available,E(c,`title`,h(n).path??h(n).label),o(m,h(n).label)}),s(`click`,c,()=>h(i)&&void F(L(h(r),h(n)))),d(e,a)}),t(k),t(c),O(()=>{o(y,h(r).label),o(C,`${h(r).skillCount??``} skill${h(r).skillCount===1?``:`s`} across ${h(r).providers.length??``}
2
+ agent location${h(r).providers.length===1?``:`s`}`)}),d(n,c)});var _=T(m,2),y=n=>{var r=ht(),i=T(A(r),2);e(i,21,()=>h(u),e=>e.id,(n,r)=>{let i=S(()=>h(r).kind===`directory`?h(r):null);var c=mt(),u=A(c),f=A(u),m=A(f);{let e=S(()=>h(r).available?`text-primary`:`text-destructive`);Oe(m,{get class(){return`h-4 w-4 shrink-0 ${h(e)??``}`}})}var g=T(m,2),_=A(g),y=A(_),b=v(y,!0),x=T(y,2),C=e=>{X(e,{variant:`destructive`,class:`text-xs`,children:(e,t)=>{var n=ut(),r=N(n);Te(r,{class:`h-3 w-3`}),w(),d(e,n)},$$slots:{default:!0}})};l(x,e=>{h(r).available||e(C)}),t(_);var D=T(_,2),k=v(D,!0);t(g);var j=T(g,2);X(j,{variant:`secondary`,class:`shrink-0 tabular-nums`,children:(e,t)=>{w();var n=p();O(()=>o(n,h(r).skillCount)),d(e,n)},$$slots:{default:!0}}),t(f);var M=T(f,2),P=e=>{var t=dt(),n=N(t);{let e=S(()=>`Open the wiki for ${h(r).label}`),t=S(()=>`Open the wiki for ${h(r).label}`),i=S(()=>!h(r).available);J(n,{variant:`ghost`,size:`icon`,class:`h-11 w-11 shrink-0 text-muted-foreground hover:text-foreground`,get title(){return h(e)},get"aria-label"(){return h(t)},get disabled(){return h(i)},onclick:()=>h(r).available&&void F(a(h(r).id)),children:(e,t)=>{ce(e,{class:`h-4 w-4`})},$$slots:{default:!0}})}var o=T(n,2);{let e=S(()=>`Remove ${h(r).label} registration`),t=S(()=>`Remove ${h(r).label}`);J(o,{variant:`ghost`,size:`icon`,class:`h-11 w-11 shrink-0 text-muted-foreground hover:text-destructive`,get title(){return h(e)},get"aria-label"(){return h(t)},onclick:()=>ne(h(i)),children:(e,t)=>{De(e,{class:`h-4 w-4`})},$$slots:{default:!0}})}d(e,t)};l(M,e=>{h(i)&&e(P)}),t(u);var I=T(u,2),te=n=>{var i=pt();e(i,21,()=>h(r).providers,e=>e.id,(e,n)=>{var i=ft(),a=A(i),c=A(a),l=T(c),u=v(l,!0);t(a),t(i),O(()=>{a.disabled=!h(r).available||!h(n).available,o(c,`${h(n).label??``} `),o(u,h(n).skillCount)}),s(`click`,a,()=>h(r).available&&void F(L(h(r),h(n)))),d(e,i)}),t(i),O(()=>E(i,`aria-label`,`Providers in ${h(r).label??``}`)),d(n,i)};l(I,e=>{h(r).providers.length>0&&e(te)}),t(c),O(()=>{ee(c,1,`rounded-lg border border-border transition-colors ${h(r).available?`hover:border-foreground/20`:`border-destructive/40`}`),f.disabled=!h(r).available,o(b,h(r).label),o(k,h(r).path)}),s(`click`,f,()=>h(r).available&&void F(de(h(r)))),d(n,c)}),t(i),t(r),d(n,r)};l(_,e=>{h(u).length>0&&e(y)}),d(n,r)};l(Pe,e=>{z.error?e(Fe):z.loading&&!h(m)?e(Ie,1):h(m)?e(Re,-1):e(Le,2)}),t($),t(ge),t(V);var ze=T(V,2);{let e=S(()=>h(_)?`Remove ${h(_).label} from Skill Creator? Its files stay on disk; only the registration is deleted.`:``);Ee(ze,{title:`Remove workspace registration`,get description(){return h(e)},confirmLabel:`Remove`,get busy(){return h(b)},onConfirm:()=>void R(),get open(){return h(y)},set open(e){x(y,e,!0)}})}O(()=>o(je,`${h(C).skills??``} skills across ${h(C).providers??``} agent locations.`)),s(`click`,G,()=>be(`create`,`I want to create a new skill. It should help me `)),s(`click`,q,()=>be(`manage`,`Audit my skill library: find duplicates, vague descriptions, and stale skills, then propose concrete fixes.`)),s(`click`,Y,()=>void F(`/repository`)),s(`click`,Z,()=>document.getElementById(`library-index`)?.scrollIntoView({behavior:`smooth`})),d(n,fe),f()}m([`click`]);export{vt as default};