@shadowclone/cli 0.0.21 → 0.0.23
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.
- package/dist/_.._/web/client/index.html +1 -1
- package/dist/shadowclone.js +249 -191
- package/dist/web/{index-3mf7t8r9.js → index-xsq72pnc.js} +1 -1
- package/package.json +1 -1
- package/plugins/shadowclone/.claude-plugin/plugin.json +1 -1
- package/plugins/shadowclone/.codex-plugin/plugin.json +1 -1
- package/plugins/shadowclone/plugin.json +1 -1
|
@@ -63,7 +63,7 @@ description: ${JSON.stringify(e.description)}
|
|
|
63
63
|
|
|
64
64
|
${e.body}
|
|
65
65
|
`,kind:"skill",category:null,section:null,axis:null,owner:"managed"}),b.view)b.view.constellation=Ua({constellation:b.view.constellation,item:{id:t,name:e.name,title:e.name.replaceAll("-"," "),description:e.description,category:null}});Re("custom-dialog").close(),J("custom-name").value="",me("custom-body").value=""}var nn={"design-deep-modules":{title:"Deep modules",summary:"Keep interfaces small and useful. Put complexity behind a clear boundary so callers have less to understand."},"typescript-type-safety":{title:"Explicit types",summary:"Represent valid states in the type system. Narrow uncertain values and keep unsafe assertions out of the implementation."},"verify-review-findings":{title:"Check review findings",summary:"Check each review comment against the code at the pull request head, and report a verdict before any change or reply."},"plan-with-review-page":{title:"Plan first",summary:"Read the code, ask one round of decisions with a recommendation, and share one plan with a review page before any edit."},"write-plain-english":{title:"Plain English",summary:"Write short sentences with one idea each and no dashes, in the user's voice. A checker reports long sentences and dashes."},"choose-by-consequence":{title:"Fail loudly",summary:"Compare each shortcut by what it does to the user's files and output. Pick the option that fails loudly and keeps counts true."},"scope-confirmed-changes":{title:"Reproduce, then fix",summary:"Reproduce the bug before any fix, then run the same reproduction after it. Keep the change to confirmed behavior."},"diagnose-before-editing":{title:"Find the cause",summary:"Reproduce the failure, make it smaller, and test one cause at a time until one cause predicts the symptom."},"tests-that-catch-bugs":{title:"Tests that catch bugs",summary:"Write a few tests that each name the bug they catch, check what the user sees, and fail when the fix is removed."},"verify-and-review":{title:"Verify the real outcome",summary:"Run what the user runs, read every count and exit code, and label each claim as measured, inferred, or not verified."},"research-primary-sources":{title:"Go to the source",summary:"Check authoritative documentation and original evidence when a technical decision depends on facts that need verification."},"planning-first":{title:"Plan the change",summary:"Establish the approach before implementation so the scope, decisions, and intended outcome are clear."},"planning-when-costly":{title:"Plan when it matters",summary:"Move directly on straightforward tasks. Pause for a plan when the cost, uncertainty, or consequences call for one."},"questions-autonomous":{title:"Keep moving",summary:"Use judgment to resolve routine choices. Ask when missing information changes the outcome or an action needs authorization."},"questions-early":{title:"Ask early",summary:"Resolve meaningful uncertainty with the user before investing in an implementation built on the wrong assumption."},"resolve-conflicts-by-intent":{title:"Preserve intent",summary:"Understand what both sides of a merge are trying to achieve. Resolve the conflict and verify the combined behavior."},"dependencies-existing":{title:"Know your tools",summary:"Look for a solution in the existing stack before adding another dependency."},"dependencies-mature":{title:"Choose proven tools",summary:"Use established, focused packages when they provide substantial reusable logic and justify the dependency."},"refactor-boundaries":{title:"Improve boundaries",summary:"Make a refactor when it improves responsibilities and simplifies the change. Keep its purpose connected to the task."},"refactor-preserve":{title:"Respect the structure",summary:"Work within the current structure and preserve unrelated code while making the requested change."}};function $e(e){return nn[e.id]?.title??e.title}function Ga(e){let t=nn[e.item.id];if(t&&e.editedText===void 0&&e.item.owner==="packaged")return t.summary;let r=(e.editedText??e.item.text).replace(/^---\r?\n[\s\S]*?\r?\n---\r?\n/,"").split(`
|
|
66
|
-
`).filter((n)=>n.trim()&&!n.startsWith("#")&&!n.startsWith("```")).slice(0,2).join(" ").replace(/\*\*/g,"");return r.length>320?`${r.slice(0,317).trimEnd()}…`:r}function Jl(e){let t=g({tag:"details",className:"editor"});t.append(g({tag:"summary",text:"Edit instructions"}));let r=g({tag:"textarea"});r.value=b.input.edits[e.item.id]??e.item.text,r.maxLength=48000,r.setAttribute("aria-label",`Instructions for ${e.item.title}`);let n=g({tag:"button",className:"quiet-button",text:"Save to draft"});return n.addEventListener("click",()=>{if(!D(e.item))Me(e.item);b.input.edits[e.item.id]=r.value,b.input.choices[e.item.id]=!0,b.dirty=!0,ee({message:"Instructions added to your draft. Review the changes before applying.",success:!0}),e.rerender()}),t.append(r,n),t}function Ja(e){let t=_("detail"),r=b.view?.items.find((a)=>a.id===b.activeId);if(t.replaceChildren(),!r){t.append(g({tag:"h2",text:"Choose a skill."})),t.append(g({tag:"p",className:"detail-description",text:"Inspect a star to see what it teaches your agent."}));return}t.append(g({tag:"p",className:"eyebrow",text:`${(r.category??"CUSTOM").replaceAll("-"," ").toUpperCase()} / ${r.kind.toUpperCase()}`}),g({tag:"h2",text:$e(r)}),g({tag:"p",className:"detail-description",text:r.description}));let n=g({tag:"div",className:"behavior"});n.append(g({tag:"p",className:"eyebrow",text:"YOUR AGENT WILL"}),g({tag:"p",text:Ga({item:r,editedText:b.input.edits[r.id]})})),t.append(n);let o=r.owner==="provider",i=b.view?.locked[r.id]!==void 0;if(t.append(g({tag:"p",className:"skill-status",text:i?"◇ Shared requirement":o?"◇ Managed by its provider":"◇ Workflow guidance"})),i){t.append(g({tag:"p",className:"owner-note",text:"This choice belongs to the shared repository build. Switch to shared scope to propose a reviewed change."}));return}let s=g({tag:"button",className:"primary-button",text:o?"Create a local companion":D(r)?"Unequip skill":"Equip skill"});if(s.addEventListener("click",()=>{if(o){e.companion(r);return}Me(r),e.rerender()}),t.append(s),o)t.append(g({tag:"p",className:"owner-note",text:"Enable or disable this package in its harness. A companion adds your own instructions without changing the package."}));else t.append(Jl({item:r,rerender:e.rerender}))}var Kl=O({title:y().min(1).max(48),profile:y().min(1).max(420),abilities:j(O({skill:y().min(1).max(120),text:y().min(1).max(200)})).min(1).max(3),tradeoff:y().min(1).max(240)}),Ka=O({name:Kl,destination:y()});function Wa(e){let t=new Map,r={status:"empty"},n=null,o=null,i=null,s=(u)=>{r=u,e.onChange(u)},a=()=>{if(o)e.cancel(o.handle);o=null,i?.abort(),i=null},c=()=>{let u=n;if(o=null,!u?.key)return;let l=u.key,d=new AbortController;i?.abort(),i=d,s({status:"loading"}),e.fetchName({input:structuredClone(u.input),signal:d.signal}).then((p)=>{if(t.set(l,p),!d.signal.aborted&&n?.key===l)s({status:"ready",result:p})}).catch((p)=>{if(!d.signal.aborted&&n?.key===l)s({status:"failed",error:p instanceof Error?p.message:"The build could not be named."})}).finally(()=>{if(i===d)i=null})};return{state:()=>r,update(u){let l=n;if(n=u,!u.enabled){if(a(),r.status!=="off")s({status:"off"});return}if(l?.key===u.key&&l.enabled&&r.status!=="off")return;if(a(),u.key===null){s({status:"empty"});return}let d=t.get(u.key);if(d){s({status:"ready",result:d});return}if(!u.changed){s({status:"unnamed"});return}s({status:"waiting"}),o={handle:e.schedule({run:c,delayMilliseconds:5000})}},retry(){a(),c()}}}var on="shadowclone-build-naming";function Ha(){try{return localStorage.getItem(on)!=="off"}catch{return!0}}function Wl(e){try{if(e)localStorage.removeItem(on);else localStorage.setItem(on,"off")}catch{return}}var Hl={empty:"Choose the instincts you want your agent to bring to work.",off:"Build naming is off. Turn it on to name your build with your fast model.",unnamed:"Name this build now, or change a skill and it gets a name 5 seconds later.",waiting:"Your build gets a name 5 seconds after your last change.",loading:"Naming your build…"};function Ya(e){let t=_("identity"),r=_("abilities"),n=_("tradeoff"),o=e.status==="ready"?e.result:null;t.dataset.naming=e.status,t.setAttribute("aria-busy",String(e.status==="loading")),_("identity-title").textContent=o?.name.title??"An open canvas",_("identity-description").textContent=e.status==="ready"?e.result.name.profile:e.status==="failed"?e.error:Hl[e.status],r.replaceChildren(...(o?.name.abilities??[]).map((a)=>{let c=g({tag:"li"});return c.append(g({tag:"strong",text:a.skill}),g({tag:"span",text:a.text})),c})),n.hidden=!o,n.textContent=o?`Tradeoff: ${o.name.tradeoff}`:"",_("naming-source").textContent=o?`Named by ${o.destination}`:"";let i=_("retry-name");i.hidden=e.status!=="failed"&&e.status!=="unnamed",i.textContent=e.status==="unnamed"?"Name my build":"Retry";let s=_("toggle-naming");s.textContent=e.status==="off"?"Turn naming on":"Turn naming off",s.setAttribute("aria-pressed",String(e.status!=="off"))}var sn=Wa({schedule:({run:e,delayMilliseconds:t})=>window.setTimeout(e,t),cancel:(e)=>window.clearTimeout(e),fetchName:({input:e,signal:t})=>E({path:"/api/build-name",schema:Ka,body:e,signal:t}),onChange:Ya});function Xa(){return b.view?.items.filter((e)=>e.owner!=="provider"&&D(e))??[]}function Qa(){let e=Xa();sn.update({key:e.length?JSON.stringify([b.input.scope,e.map((t)=>t.id).sort(),b.input.custom]):null,input:b.input,enabled:Ha(),changed:b.dirty})}function ec(){_("retry-name").addEventListener("click",()=>sn.retry()),_("toggle-naming").addEventListener("click",()=>{Wl(!Ha()),Qa()}),Ya(sn.state())}function tc(){let e=Xa();_("equipped-count").textContent=`${e.length} ${e.length===1?"skill":"skills"} equipped${b.dirty?" · unsaved changes":""}`,Qa();let t=_("requirements");if(t.replaceChildren(),t.hidden=!b.view?.requirements.length,b.view?.requirements.length){t.append(g({tag:"h3",text:"◇ Repository requirements"}));for(let r of b.view.requirements)t.append(g({tag:"p",text:r}))}}var Ut=null;async function rc(){if(b.view===null)throw Error("Wait for your skills to load before reviewing the build.");let e=await E({path:"/api/preview",schema:Fa,body:b.input});Ut=e;let t=_("review-content");t.replaceChildren(),t.append(g({tag:"p",className:"review-message",text:`${e.changes.length} local files will change. Review the instructions and destinations below.`}));for(let r of e.warnings)t.append(g({tag:"p",className:"review-warning",text:r}));for(let r of e.changes){let n=g({tag:"details",className:"file-change"});if(n.append(g({tag:"summary",text:r.path})),r.internal)n.append(g({tag:"p",text:"Local configuration or supporting resource. Its previous version is retained for undo."}));else n.append(g({tag:"h4",text:"Before"}),g({tag:"pre",text:r.before??"New file"}),g({tag:"h4",text:"After"}),g({tag:"pre",text:r.after??"Remove managed file"}));t.append(n)}Re("review-dialog").showModal()}async function nc(){if(Ut===null)throw Error("Review your build before applying it.");await E({path:"/api/apply",schema:Xr,body:{previewId:Ut.id}}),Ut=null,Re("review-dialog").close(),ee({message:"Build equipped. Start a fresh agent session to use your updated skills.",success:!0})}async function oc(){let e=b.view?.revisionId;if(!e||!window.confirm("Restore the files from before the last apply? Later edits will be preserved if they conflict."))return;await E({path:"/api/undo",schema:Xr,body:{revisionId:e}}),ee({message:"Restored the previous build.",success:!0})}function Yl(e){let t=e.map((r)=>b.view?.items.find((n)=>n.id===r)).filter((r)=>r!==void 0);return t.find(D)??t[0]}function Xl(e){return`${$e(e)} ${e.description}`.toLowerCase().includes(b.search.toLowerCase())}function ic(e){let t=_("constellation-list");t.replaceChildren();let r=new Map(e.constellation.hubs.map((n)=>[n.id,n.parentId]));for(let n of e.constellation.hubs.filter((o)=>o.parentId===null)){let o=g({tag:"section",className:"skill-list-group"});o.append(g({tag:"h3",text:n.title}));for(let i of e.constellation.leaves.filter((s)=>{let a=s.parentId;while(a){if(a===n.id)return!0;a=r.get(a)??null}return!1})){let s=Yl(i.itemIds);if(!s||!Xl(s))continue;let a=g({tag:"button",className:"skill-list-item",text:$e(s)});a.classList.toggle("equipped",D(s)),a.addEventListener("click",()=>e.inspect(s.id)),o.append(a)}if(o.childElementCount>1)t.append(o)}}var A={padding:32,rootX:56,sourceX:176,categoryX:296,cellWidth:120,cellHeight:96,groupGap:12,sourceGap:28,labelWidth:108,jitterX:4,jitterY:5};function sc(e){let t=2166136261;for(let r of e.key)t=Math.imul(t^(r.codePointAt(0)??0),16777619);return(t>>>0)/4294967295*e.range*2-e.range}function an(e){let t=e-A.categoryX-A.padding+A.cellWidth/2;return Math.max(2,Math.floor(t/A.cellWidth))}function qt(e){return{id:`${e.from.id}:${e.to.id}`,sourceX:e.from.x,sourceY:e.from.y,targetX:e.to.x,targetY:e.to.y,sibling:e.sibling??!1}}function Ql(e){let t=[],r=e.cells;for(let n of e.blocks){if(r+1+n.columns>e.cells)t.push([]),r=0;t.at(-1)?.push(n),r+=1+n.columns}return t}function ac(e){let t=an(e.width),{hubs:r,leaves:n}=e.constellation,o=[],i=[],s=[],a=e.collapsed??new Set,c=A.padding;for(let p of r.filter((m)=>m.parentId===null)){let m=[],h=[],x=r.filter((z)=>z.parentId===p.id),w=a.has(p.id),S=(w?[]:x).map((z)=>{let k=n.filter((K)=>K.parentId===z.id),Z=a.has(z.id)?[]:k;return{category:z,members:Z,hidden:k.length-Z.length,columns:Math.max(1,Math.min(Z.length,t-1))}});for(let z of Ql({blocks:S,cells:t})){let k=0,Z=1,K=null;for(let F of z){let X=A.categoryX+k*A.cellWidth,le={id:F.category.id,title:F.category.title,itemIds:[],kind:"category",parentId:p.id,x:X,y:c+A.cellHeight/2,hidden:F.hidden},at=le;if(m.push(le),K)i.push(qt({from:K,to:le,sibling:!0}));else h.push(le);for(let[ct,ut]of F.members.entries()){let yn=ct%F.columns,Yt={id:ut.id,title:"",itemIds:ut.itemIds,kind:"skill",parentId:F.category.id,hidden:0,x:X+(yn+1)*A.cellWidth+sc({key:ut.id,range:A.jitterX}),y:c+Math.floor(ct/F.columns)*A.cellHeight+A.cellHeight/2+sc({key:`${ut.id}:y`,range:A.jitterY})};i.push(qt({from:yn===0?le:at,to:Yt})),o.push(Yt),at=Yt}Z=Math.max(Z,Math.ceil(F.members.length/F.columns)),k+=1+F.columns,K=le}c+=Z*A.cellHeight+A.groupGap}let P=m[0],L=m.at(-1),V={id:p.id,title:p.title,itemIds:[],kind:"source",parentId:"constellation-root",x:A.sourceX,y:P&&L?(P.y+L.y)/2:c+A.cellHeight/2,hidden:w?n.filter((z)=>x.some((k)=>k.id===z.parentId)).length:0};if(w)c+=A.cellHeight;s.push(V),o.push(V,...m),i.push(...h.map((z)=>qt({from:V,to:z}))),c+=A.sourceGap}let u=s[0],l=s.at(-1),d={id:"constellation-root",title:"Shadowclone",itemIds:[],kind:"root",parentId:null,hidden:0,x:A.rootX,y:u&&l?(u.y+l.y)/2:A.padding+A.cellHeight/2};return i.push(...s.map((p)=>qt({from:d,to:p}))),{nodes:[d,...o],links:i,height:Math.max(c+A.padding,A.cellHeight*2)}}var ed={modules:"M4 4h6v6H4ZM14 4h6v6h-6ZM4 14h6v6H4ZM14 14h6v6h-6Z",code:"m8 5-6 7 6 7m8-14 6 7-6 7m-3-16-2 18",focus:"M8 3H4v4m12-4h4v4M4 17v4h4m12-4v4h-4M8 9h8v6H8Z",bug:"M9 5 7 2m8 3 2-3M8 9V7a4 4 0 0 1 8 0v2M6 9h12v6a6 6 0 0 1-12 0Zm6 0v12M2 10h4m12 0h4M2 15h4m12 0h4M4 21l3-3m10 0 3 3",flask:"M9 3h6m-5 0v7l-6 9q-1 2 2 2h12q3 0 2-2l-6-9V3M7 15h10",check:"m2 12 5 5L19 5M12 17l10-10",route:"M7 5h10a3 3 0 0 1 0 6H7a3 3 0 0 0 0 6h10M7 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6m10 12a3 3 0 1 0 0 6 3 3 0 0 0 0-6",compass:"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20m-3 7 8-2-2 8-8 2Z",flag:"M5 22V3q4-3 8 0t7 0v10q-3 3-7 0t-8 0",merge:"M6 2v8q0 5 6 5h6m-4-4 4 4-4 4M6 18v4M18 2v5",layers:"m12 2 10 6-10 6L2 8Zm-9 11 9 5 9-5M3 17l9 5 9-5",link:"m9 15 6-6m-7 4-2 2a4 4 0 0 0 6 6l3-3m1-5 2-2a4 4 0 0 0-6-6L9 8",shield:"m12 2 8 3v7q0 6-8 10-8-4-8-10V5Zm-4 9 3 3 5-6",question:"M8 7a4 4 0 1 1 6 4q-2 1-2 4m0 4v1M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20",spark:"m12 2 3 7 7 3-7 3-3 7-3-7-7-3 7-3Z",search:"M10 3a7 7 0 1 0 0 14 7 7 0 0 0 0-14m5 12 6 6"},td={"design-deep-modules":"modules","typescript-type-safety":"code","scope-confirmed-changes":"focus","choose-by-consequence":"compass","write-plain-english":"spark","plan-with-review-page":"route","verify-review-findings":"search","refactor-boundaries":"layers","refactor-preserve":"shield","dependencies-existing":"link","dependencies-mature":"layers","diagnose-before-editing":"bug","tests-that-catch-bugs":"flask","research-primary-sources":"search","verify-and-review":"check","planning-first":"route","planning-when-costly":"compass","questions-autonomous":"flag","questions-early":"question","resolve-conflicts-by-intent":"merge"};function cc(e){let t=document.createElementNS("http://www.w3.org/2000/svg","svg"),r=document.createElementNS("http://www.w3.org/2000/svg","path");return t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","1.25"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),t.setAttribute("aria-hidden","true"),r.setAttribute("d",ed[e]),t.append(r),t}function uc(e){return cc(td[e.id]??"spark")}function lc(e){let t=e.toLowerCase(),n=Object.entries({engineering:"code",architecture:"modules",typescript:"code",workflow:"route",dependenc:"layers",testing:"flask",communication:"question",debugging:"bug",planning:"compass",research:"search",review:"check",setup:"spark"}).find(([o])=>t.includes(o))?.[1]??"compass";return cc(n)}var rd="http://www.w3.org/2000/svg",pc="shadowclone-collapsed-groups";function nd(){try{let e=JSON.parse(localStorage.getItem(pc)??"[]");return new Set(Array.isArray(e)?e.filter((t)=>typeof t==="string"):[])}catch{return new Set}}var Se=nd();function cn(){return Se}function fc(e){if(Se=new Set(Se),!Se.delete(e))Se.add(e);try{localStorage.setItem(pc,JSON.stringify([...Se]))}catch{return}}function rt(e){return document.createElementNS(rd,e)}function dc(e){e.target.addEventListener("click",(t)=>{t.stopPropagation(),e.action()}),e.target.addEventListener("keydown",(t)=>{if(t.key==="Enter"||t.key===" ")t.preventDefault(),t.stopPropagation(),e.action()})}function mc(e){let{container:t,node:r}=e,n=!Se.has(r.id),o=rt("g"),i=rt("circle"),s=rt("path");if(o.setAttribute("class","map-collapse"),o.setAttribute("transform","translate(36 0)"),o.setAttribute("role","button"),o.setAttribute("tabindex","0"),o.setAttribute("aria-expanded",String(n)),o.setAttribute("aria-label",`${n?"Collapse":"Expand"} ${r.title}`),i.setAttribute("r","12"),s.setAttribute("d",n?"M-4 -2L0 2L4 -2":"M-2 -4L2 0L-2 4"),o.append(i,s),dc({target:o,action:()=>e.toggle(r.id)}),t.append(o),r.hidden>0){let c=rt("text");c.setAttribute("class","map-hidden-count"),c.setAttribute("x","54"),c.setAttribute("y","4"),c.textContent=`${r.hidden} hidden`,t.append(c)}if(r.kind!=="category")return;let a=rt("rect");for(let[c,u]of Object.entries({x:"-26",y:"-26",width:"52",height:"52",class:"map-node-hit"}))a.setAttribute(c,u);t.prepend(a),t.setAttribute("role","button"),t.setAttribute("tabindex","0"),dc({target:t,action:()=>e.equipAll(r.id)})}function hc(e){if(e.node.kind!=="category")return;let t=tn(e.items),r=t.length>0&&t.every(D);e.element.classList.toggle("equipped",r),e.element.classList.toggle("partial",!r&&t.some(D)),e.element.setAttribute("aria-pressed",String(r)),e.element.setAttribute("aria-disabled",String(t.length===0)),e.element.setAttribute("aria-label",t.length===0?`${e.node.title}, managed by plugins`:`${r?"Unequip":"Equip"} all ${t.length} skills in ${e.node.title}`)}var od="http://www.w3.org/2000/svg",nt=()=>{return},Gt=()=>{return},gc="",un=new Map,ln=new Map,dn=new Map;function oe(e){return document.createElementNS(od,e)}function ot(e){let t=e.itemIds.map((r)=>un.get(r)).filter((r)=>r!==void 0);return t.find(D)??t[0]}function yc(e){return(b.view?.constellation.leaves??[]).filter((t)=>t.parentId===e).flatMap((t)=>{let r=t.itemIds.map((o)=>un.get(o)).filter((o)=>o!==void 0),n=r.find(D)??r[0];return n?[n]:[]})}function Vt(e){let t=ot(e);return t?$e(t):e.title}function id(e){let t=ot(e);return!b.search||`${Vt(e)} ${t?.description??""}`.toLowerCase().includes(b.search.toLowerCase())}function sd(e){let t=[""];for(let r of e.split(/\s+/)){let n=t.at(-1)??"";if(n&&n.length+r.length>=16)t.push(r);else t[t.length-1]=`${n} ${r}`.trim()}return t.slice(0,2).map((r,n)=>`${r.slice(0,17)}${n===1&&t.length>2||r.length>17?"…":""}`)}function ad(e){let{node:t}=e,r=ot(t),n=oe("g"),o=t.kind==="skill"?26:t.kind==="root"?0:32,i=oe("text");if(n.setAttribute("class",`map-node map-node-${t.kind}`),n.setAttribute("transform",`translate(${t.x} ${t.y})`),n.dataset.nodeId=t.id,t.kind==="skill"){let a=oe("rect");for(let[c,u]of Object.entries({x:"-26",y:"-26",width:"52",height:"52",class:"map-node-hit"}))a.setAttribute(c,u);n.append(a),n.setAttribute("role","button"),n.setAttribute("tabindex","0")}if(t.kind==="root"){let a=oe("circle");a.setAttribute("r","26"),n.append(a)}else{let a=oe("rect");for(let[c,u]of Object.entries({x:String(-o/2),y:String(-o/2),width:String(o),height:String(o),rx:"6",transform:"rotate(45)",class:"map-node-gem"}))a.setAttribute(c,u);n.append(a)}i.setAttribute("text-anchor","middle");for(let[a,c]of sd(Vt(t)).entries()){let u=oe("tspan");u.setAttribute("x","0"),u.setAttribute("y",String((t.kind==="skill"?34:44)+a*16)),u.textContent=c,i.append(u)}let s=oe("title");if(s.textContent=Vt(t),n.append(s,i),t.kind==="root"){let a=document.querySelector(".brand-mark");if(a instanceof HTMLImageElement){let c=oe("image");for(let[u,l]of Object.entries({href:a.src,x:"-16",y:"-16",width:"32",height:"32"}))c.setAttribute(u,l);n.append(c)}}else{let a=oe("foreignObject"),c=g({tag:"span",className:"map-node-icon"});for(let[u,l]of Object.entries({x:"-9",y:"-9",width:"18",height:"18"}))a.setAttribute(u,l);c.append(r?uc(r):lc(t.title)),a.append(c),n.append(a)}if(t.kind==="category"||t.kind==="source")mc({container:n,node:t,toggle:(a)=>{fc(a),ld(),document.querySelector(`[data-node-id="${CSS.escape(a)}"] .map-collapse`)?.focus()},equipAll:(a)=>Gt(yc(a))}),dn.set(t.id,{node:t,element:n});if(t.kind==="skill"&&r){let a=()=>nt(ot(t)??r);n.addEventListener("click",a),n.addEventListener("keydown",(c)=>{if(c.key==="Enter"||c.key===" ")c.preventDefault(),a()}),ln.set(t.id,{node:t,element:n})}e.group.append(n)}function cd(e){if(!e.sibling)return`M${e.sourceX} ${e.sourceY}L${e.targetX} ${e.targetY}`;let t=(e.sourceX+e.targetX)/2;return`M${e.sourceX} ${e.sourceY-18}Q${t} ${e.sourceY-60} ${e.targetX} ${e.targetY-18}`}function ud(){for(let{node:e,element:t}of dn.values())hc({element:t,node:e,items:yc(e.id)});for(let{node:e,element:t}of ln.values()){let r=ot(e),n=r?D(r):!1;t.classList.toggle("equipped",n),t.classList.toggle("active",r?.id===b.activeId),t.classList.toggle("search-miss",!id(e)),t.setAttribute("aria-pressed",String(n)),t.setAttribute("aria-label",`${Vt(e)}${r?.owner==="provider"?", managed by its plugin":n?", equipped":""}`)}}function Jt(e){nt=e.choose,Gt=e.chooseGroup;let t=en("constellation-map"),r=b.view;if(!r)return;ic({constellation:r.constellation,inspect:(i)=>{let s=r.items.find((a)=>a.id===i);if(s)nt(s)}});let n=t.getBoundingClientRect().width;if(n<=0)return;un=new Map(r.items.map((i)=>[i.id,i]));let o=JSON.stringify([an(n),r.constellation,[...cn()]]);if(o!==gc){let i=ac({constellation:r.constellation,width:n,collapsed:cn()}),s=oe("g");gc=o,ln.clear(),dn.clear(),t.setAttribute("viewBox",`0 0 ${Math.round(n)} ${Math.round(i.height)}`),t.style.height=`${Math.round(i.height)}px`,t.replaceChildren(s);for(let a of i.links){let c=oe("path");c.setAttribute("class",a.sibling?"map-link sibling":"map-link"),c.setAttribute("d",cd(a)),s.append(c)}for(let a of i.nodes)ad({group:s,node:a})}ud()}function bc(){let e=en("constellation-map"),t=0;new ResizeObserver(()=>{let n=e.getBoundingClientRect().width;if(Math.round(n)!==Math.round(t))t=n,Jt({choose:nt,chooseGroup:Gt})}).observe(e);let r=_("toggle-constellation-view");r.addEventListener("click",()=>{let n=_("constellation").classList.toggle("list-view");r.setAttribute("aria-pressed",String(n))})}function ld(){Jt({choose:nt,chooseGroup:Gt})}var pn={squarePixelsPerStar:9000,maximumStars:600,attemptsPerStar:30};function xc(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let r=Math.imul(t^t>>>15,t|1);return r^=r+Math.imul(r^r>>>7,r|61),((r^r>>>14)>>>0)/4294967296}}function vc(e){return Math.min(pn.maximumStars,Math.round(Math.max(0,e.width)*Math.max(0,e.height)/pn.squarePixelsPerStar))}function dd(e){let t=Math.max(1,vc(e));return Math.sqrt(e.width*e.height/t)*0.55}function q(e){return e.low+e.random()*(e.high-e.low)}function pd(e){let{random:t}=e,r=t()<0.08,n=t()*Math.PI*2,o=q({random:t,low:4,high:14});return{id:e.id,x:e.x,y:e.y,radius:r?q({random:t,low:1.4,high:1.9}):q({random:t,low:0.5,high:1.2}),brightness:q({random:t,low:0.35,high:1}),twinkleSeconds:q({random:t,low:3.5,high:14}),delaySeconds:-q({random:t,low:0,high:14}),driftX:Math.cos(n)*o,driftY:Math.sin(n)*o,driftSeconds:q({random:t,low:18,high:60}),sparkle:r}}function wc(e){let t=vc(e),r=dd(e),n=e.existing.filter((l)=>l.x>=0&&l.x<=e.width&&l.y>=0&&l.y<=e.height).slice(0,t),o=[...n],i=r/Math.SQRT2,s=new Map,a=(l)=>`${Math.floor(l.x/i)}:${Math.floor(l.y/i)}`,c=(l)=>{let d=Math.floor(l.x/i),p=Math.floor(l.y/i);for(let m=-2;m<=2;m+=1)for(let h=-2;h<=2;h+=1){let x=s.get(`${d+m}:${p+h}`);if(x&&Math.hypot(x.x-l.x,x.y-l.y)<r)return!0}return!1},u=Math.max(0,...o.map((l)=>l.id+1));for(let l of n)s.set(a(l),l);for(let l=0;o.length<t&&l<t*pn.attemptsPerStar;l+=1){let d={x:e.random()*e.width,y:e.random()*e.height};if(c(d))continue;let p=pd({id:u,...d,random:e.random});u+=1,o.push(p),s.set(a(p),p)}return o}function _c(e){if(e.reducedMotion||e.width<=0||e.height<=0)return null;let{random:t}=e;return{waitMilliseconds:q({random:t,low:9000,high:28000}),star:{x:q({random:t,low:e.width*0.1,high:e.width*0.9}),y:q({random:t,low:0,high:Math.min(e.height*0.5,600)}),angle:t()<0.5?q({random:t,low:20,high:40}):q({random:t,low:140,high:160}),length:q({random:t,low:70,high:140}),travel:q({random:t,low:220,high:380}),seconds:q({random:t,low:0.7,high:1.3})}}}var Kt="http://www.w3.org/2000/svg";function kc(e){for(let[t,r]of Object.entries(e.properties))e.element.style.setProperty(t,r)}function fd(e){let t=document.createElementNS(Kt,"g"),r=document.createElementNS(Kt,"circle");if(t.setAttribute("class",e.sparkle?"star sparkle":"star"),t.setAttribute("transform",`translate(${e.x.toFixed(1)} ${e.y.toFixed(1)})`),r.setAttribute("r",e.radius.toFixed(2)),kc({element:t,properties:{"--brightness":e.brightness.toFixed(2),"--twinkle":`${e.twinkleSeconds.toFixed(2)}s`,"--delay":`${e.delaySeconds.toFixed(2)}s`,"--drift-x":`${e.driftX.toFixed(1)}px`,"--drift-y":`${e.driftY.toFixed(1)}px`,"--drift":`${e.driftSeconds.toFixed(1)}s`}}),t.append(r),e.sparkle){let n=document.createElementNS(Kt,"path");n.setAttribute("d","M-4 0h8M0 -4v8"),n.setAttribute("class","star-rays"),t.append(n)}return t}function zc(){let e=_("starfield"),t=xc(crypto.getRandomValues(new Uint32Array(1))[0]??Date.now()),r=window.matchMedia("(prefers-reduced-motion: reduce)"),n=new Map,o=[],i={width:0,height:0},s=!1,a=()=>{let l=e.getBoundingClientRect(),d=Math.max(1,Math.round(l.width)),p=Math.max(1,Math.round(l.height));if(d===i.width&&p===i.height)return;i={width:d,height:p},e.setAttribute("viewBox",`0 0 ${d} ${p}`),o=wc({width:d,height:p,existing:o,random:t});let m=new Set(o.map((h)=>h.id));for(let[h,x]of n)if(!m.has(h))x.remove(),n.delete(h);for(let h of o){if(n.has(h.id))continue;let x=fd(h);n.set(h.id,x),e.append(x)}},c=()=>{let l=s?null:_c({...i,random:t,reducedMotion:r.matches});if(!l)return;s=!0,window.setTimeout(()=>{if(s=!1,!document.hidden&&!r.matches){let d=document.createElementNS(Kt,"line");d.setAttribute("class","shooting-star"),d.setAttribute("x2",l.star.travel.toFixed(0)),d.setAttribute("transform",`translate(${l.star.x.toFixed(0)} ${l.star.y.toFixed(0)}) rotate(${l.star.angle.toFixed(0)})`),kc({element:d,properties:{"--shoot":`${l.star.seconds.toFixed(2)}s`,"--length":`${l.star.length.toFixed(0)}px`,"--travel":`${l.star.travel.toFixed(0)}px`}}),d.addEventListener("animationend",()=>d.remove()),e.append(d)}c()},l.waitMilliseconds)},u=()=>{e.classList.toggle("paused",document.hidden)};document.addEventListener("visibilitychange",u),r.addEventListener("change",c),new ResizeObserver(a).observe(e),a(),u(),c()}var Ch=O({name:y().trim().max(48),description:y().trim().max(300),body:y().trim().min(1).max(24000)}),$c=O({id:Bt(),destination:y(),payload:y(),limits:y(),cached:Te.nullable()}),Sc=O({skill:Te});function Wt(e){let t=!1,r=(n)=>{let o=e.getBoundingClientRect();return n.target===e&&(n.clientX<o.left||n.clientX>o.right||n.clientY<o.top||n.clientY>o.bottom)};e.addEventListener("pointerdown",(n)=>{t=r(n)}),e.addEventListener("click",(n)=>{if(t&&r(n))e.close();t=!1})}function Pc(e){let t=g({tag:"dialog"}),r=g({tag:"div",className:"dialog-heading"}),n=g({tag:"button",className:"quiet-button",text:"✕"}),o=g({tag:"details",className:"file-change"}),i=g({tag:"div",className:"dialog-actions"}),s=g({tag:"p",className:"review-message"}),a=g({tag:"button",className:"quiet-button",text:"Keep editing"}),c=g({tag:"button",className:"primary-button",text:e.confirm}),u=new AbortController;t.setAttribute("aria-label",e.title),n.setAttribute("aria-label","Close model request"),s.setAttribute("role","status"),n.addEventListener("click",()=>t.close()),Wt(t),r.append(g({tag:"h2",text:e.title}),n),o.append(g({tag:"summary",text:"Exact payload sent to the model"}),g({tag:"pre",text:e.review.payload})),a.addEventListener("click",()=>t.close()),t.addEventListener("close",()=>{u.abort(),t.remove()});async function l(){if(c.disabled)return;c.disabled=!0,c.textContent="Generating…",a.textContent="Cancel generation",s.textContent="Your model is working. You can cancel and keep your original draft.";try{let d=await E({path:e.path,schema:e.schema,body:{previewId:e.review.id},signal:u.signal});if(!u.signal.aborted)e.accept(d),t.close()}catch(d){if(u.signal.aborted)return;s.className="review-warning",s.textContent=d instanceof Error?d.message:"Generation failed. Your draft is unchanged.",c.textContent="Request ended",a.textContent="Back to editing"}}c.addEventListener("click",()=>{l().catch(()=>{s.textContent="Generation failed. Return to editing to try again."})}),i.append(a,c),t.append(r,g({tag:"p",className:"review-message",text:`Destination: ${e.review.destination}`}),g({tag:"p",className:"review-message",text:e.review.limits}),g({tag:"p",className:"review-message",text:e.explanation}),o,s,i),document.body.append(t),t.showModal()}function Pe(e){_("custom-status").textContent=e}async function md(){let e=me("custom-body").value;if(!e.trim()){Pe("Describe what your agent should do, then use AI to shape it into a skill."),me("custom-body").focus();return}let t=await E({path:"/api/skill/preview",schema:$c,body:{name:J("custom-name").value,description:J("custom-description").value,body:e}});Pc({review:t,title:"Draft your skill with AI.",explanation:"Only the form fields below are sent. The result fills this form for you to edit; adding and applying it remain your choice.",confirm:"Send and draft",path:"/api/skill/generate",schema:Sc,accept:({skill:r})=>{J("custom-name").value=r.name,J("custom-description").value=r.description,me("custom-body").value=r.body,Pe("AI draft ready. Edit the instructions before adding the skill to your build."),me("custom-body").focus()}})}function Zc(){let e=_("custom-ai");if(!(e instanceof HTMLButtonElement))return;e.addEventListener("click",()=>{if(e.disabled)return;e.disabled=!0,Pe("Preparing your model request…"),md().catch((t)=>{Pe(t instanceof Error?t.message:"Could not prepare an AI draft. Your text is unchanged.")}).finally(()=>{if(e.disabled=!1,_("custom-status").textContent==="Preparing your model request…")Pe("")})})}var fn=!1;async function Le(e){if(fn)return;fn=!0;let t=document.querySelectorAll("button, input, select, textarea"),r=Array.from(t,(n)=>({control:n,disabled:n.disabled}));for(let{control:n}of r)n.disabled=!0;try{await e()}finally{for(let{control:n,disabled:o}of r)n.disabled=o;fn=!1}}function Ze(e){_(e.id).addEventListener("click",()=>Le(e.action).catch(he))}function Ic(){let e=document.createElement("template");e.innerHTML=`
|
|
66
|
+
`).filter((n)=>n.trim()&&!n.startsWith("#")&&!n.startsWith("```")).slice(0,2).join(" ").replace(/\*\*/g,"");return r.length>320?`${r.slice(0,317).trimEnd()}…`:r}function Jl(e){let t=g({tag:"details",className:"editor"});t.append(g({tag:"summary",text:"Edit instructions"}));let r=g({tag:"textarea"});r.value=b.input.edits[e.item.id]??e.item.text,r.maxLength=48000,r.setAttribute("aria-label",`Instructions for ${e.item.title}`);let n=g({tag:"button",className:"quiet-button",text:"Save to draft"});return n.addEventListener("click",()=>{if(!D(e.item))Me(e.item);b.input.edits[e.item.id]=r.value,b.input.choices[e.item.id]=!0,b.dirty=!0,ee({message:"Instructions added to your draft. Review the changes before applying.",success:!0}),e.rerender()}),t.append(r,n),t}function Ja(e){let t=_("detail"),r=b.view?.items.find((a)=>a.id===b.activeId);if(t.replaceChildren(),!r){t.append(g({tag:"h2",text:"Choose a skill."})),t.append(g({tag:"p",className:"detail-description",text:"Inspect a star to see what it teaches your agent."}));return}t.append(g({tag:"p",className:"eyebrow",text:`${(r.category??"CUSTOM").replaceAll("-"," ").toUpperCase()} / ${r.kind.toUpperCase()}`}),g({tag:"h2",text:$e(r)}),g({tag:"p",className:"detail-description",text:r.description}));let n=g({tag:"div",className:"behavior"});n.append(g({tag:"p",className:"eyebrow",text:"YOUR AGENT WILL"}),g({tag:"p",text:Ga({item:r,editedText:b.input.edits[r.id]})})),t.append(n);let o=r.owner==="provider",i=b.view?.locked[r.id]!==void 0;if(t.append(g({tag:"p",className:"skill-status",text:i?"◇ Shared requirement":o?"◇ Managed by its provider":"◇ Workflow guidance"})),i){t.append(g({tag:"p",className:"owner-note",text:"This choice belongs to the shared repository build. Switch to shared scope to propose a reviewed change."}));return}let s=g({tag:"button",className:"primary-button",text:o?"Create a local companion":D(r)?"Unequip skill":"Equip skill"});if(s.addEventListener("click",()=>{if(o){e.companion(r);return}Me(r),e.rerender()}),t.append(s),o)t.append(g({tag:"p",className:"owner-note",text:"Enable or disable this package in its harness. A companion adds your own instructions without changing the package."}));else t.append(Jl({item:r,rerender:e.rerender}))}var Kl=O({title:y().min(1).max(48),profile:y().min(1).max(420),abilities:j(O({skill:y().min(1).max(120),text:y().min(1).max(200)})).min(1).max(3),tradeoff:y().min(1).max(240)}),Ka=O({name:Kl,destination:y()});function Wa(e){let t=new Map,r={status:"empty"},n=null,o=null,i=null,s=(u)=>{r=u,e.onChange(u)},a=()=>{if(o)e.cancel(o.handle);o=null,i?.abort(),i=null},c=()=>{let u=n;if(o=null,!u?.key)return;let l=u.key,d=new AbortController;i?.abort(),i=d,s({status:"loading"}),e.fetchName({input:structuredClone(u.input),signal:d.signal}).then((p)=>{if(t.set(l,p),!d.signal.aborted&&n?.key===l)s({status:"ready",result:p})}).catch((p)=>{if(!d.signal.aborted&&n?.key===l)s({status:"failed",error:p instanceof Error?p.message:"The build could not be named."})}).finally(()=>{if(i===d)i=null})};return{state:()=>r,update(u){let l=n;if(n=u,!u.enabled){if(a(),r.status!=="off")s({status:"off"});return}if(l?.key===u.key&&l.enabled&&r.status!=="off")return;if(a(),u.key===null){s({status:"empty"});return}let d=t.get(u.key);if(d){s({status:"ready",result:d});return}if(!u.changed){s({status:"unnamed"});return}s({status:"waiting"}),o={handle:e.schedule({run:c,delayMilliseconds:5000})}},retry(){a(),c()}}}var on="shadowclone-build-naming";function Ha(){try{return localStorage.getItem(on)!=="off"}catch{return!0}}function Wl(e){try{if(e)localStorage.removeItem(on);else localStorage.setItem(on,"off")}catch{return}}var Hl={empty:"Choose the instincts you want your agent to bring to work.",off:"Build naming is off. Turn it on to name your build with your fast model.",unnamed:"Name this build now, or change a skill and it gets a name 5 seconds later.",waiting:"Your build gets a name 5 seconds after your last change.",loading:"Naming your build…"};function Ya(e){let t=_("identity"),r=_("abilities"),n=_("tradeoff"),o=e.status==="ready"?e.result:null;t.dataset.naming=e.status,t.setAttribute("aria-busy",String(e.status==="loading")),_("identity-title").textContent=o?.name.title??"An open canvas",_("identity-description").textContent=e.status==="ready"?e.result.name.profile:e.status==="failed"?e.error:Hl[e.status],r.replaceChildren(...(o?.name.abilities??[]).map((a)=>{let c=g({tag:"li"});return c.append(g({tag:"strong",text:a.skill}),g({tag:"span",text:a.text})),c})),n.hidden=!o,n.textContent=o?`Tradeoff: ${o.name.tradeoff}`:"",_("naming-source").textContent=o?`Named by ${o.destination}`:"";let i=_("retry-name");i.hidden=e.status!=="failed"&&e.status!=="unnamed",i.textContent=e.status==="unnamed"?"Name my build":"Retry";let s=_("toggle-naming");s.textContent=e.status==="off"?"Turn naming on":"Turn naming off",s.setAttribute("aria-pressed",String(e.status!=="off"))}var sn=Wa({schedule:({run:e,delayMilliseconds:t})=>window.setTimeout(e,t),cancel:(e)=>window.clearTimeout(e),fetchName:({input:e,signal:t})=>E({path:"/api/build-name",schema:Ka,body:e,signal:t}),onChange:Ya});function Xa(){return b.view?.items.filter((e)=>e.owner!=="provider"&&D(e))??[]}function Qa(){let e=Xa();sn.update({key:e.length?JSON.stringify([b.input.scope,e.map((t)=>t.id).sort(),b.input.custom]):null,input:b.input,enabled:Ha(),changed:b.dirty})}function ec(){_("retry-name").addEventListener("click",()=>sn.retry()),_("toggle-naming").addEventListener("click",()=>{Wl(!Ha()),Qa()}),Ya(sn.state())}function tc(){let e=Xa();_("equipped-count").textContent=`${e.length} ${e.length===1?"skill":"skills"} equipped${b.dirty?" · unsaved changes":""}`,Qa();let t=_("requirements");if(t.replaceChildren(),t.hidden=!b.view?.requirements.length,b.view?.requirements.length){t.append(g({tag:"h3",text:"◇ Repository requirements"}));for(let r of b.view.requirements)t.append(g({tag:"p",text:r}))}}var Ut=null;async function rc(){if(b.view===null)throw Error("Wait for your skills to load before reviewing the build.");let e=await E({path:"/api/preview",schema:Fa,body:b.input});Ut=e;let t=_("review-content");t.replaceChildren(),t.append(g({tag:"p",className:"review-message",text:`${e.changes.length} local files will change. Review the instructions and destinations below.`}));for(let r of e.warnings)t.append(g({tag:"p",className:"review-warning",text:r}));for(let r of e.changes){let n=g({tag:"details",className:"file-change"});if(n.append(g({tag:"summary",text:r.path})),r.internal)n.append(g({tag:"p",text:"Local configuration or supporting resource. Its previous version is retained for undo."}));else n.append(g({tag:"h4",text:"Before"}),g({tag:"pre",text:r.before??"New file"}),g({tag:"h4",text:"After"}),g({tag:"pre",text:r.after??"Remove managed file"}));t.append(n)}Re("review-dialog").showModal()}async function nc(){if(Ut===null)throw Error("Review your build before applying it.");await E({path:"/api/apply",schema:Xr,body:{previewId:Ut.id}}),Ut=null,Re("review-dialog").close(),ee({message:"Build equipped. Start a fresh agent session to use your updated skills.",success:!0})}async function oc(){let e=b.view?.revisionId;if(!e||!window.confirm("Restore the files from before the last apply? Later edits will be preserved if they conflict."))return;await E({path:"/api/undo",schema:Xr,body:{revisionId:e}}),ee({message:"Restored the previous build.",success:!0})}function Yl(e){let t=e.map((r)=>b.view?.items.find((n)=>n.id===r)).filter((r)=>r!==void 0);return t.find(D)??t[0]}function Xl(e){return`${$e(e)} ${e.description}`.toLowerCase().includes(b.search.toLowerCase())}function ic(e){let t=_("constellation-list");t.replaceChildren();let r=new Map(e.constellation.hubs.map((n)=>[n.id,n.parentId]));for(let n of e.constellation.hubs.filter((o)=>o.parentId===null)){let o=g({tag:"section",className:"skill-list-group"});o.append(g({tag:"h3",text:n.title}));for(let i of e.constellation.leaves.filter((s)=>{let a=s.parentId;while(a){if(a===n.id)return!0;a=r.get(a)??null}return!1})){let s=Yl(i.itemIds);if(!s||!Xl(s))continue;let a=g({tag:"button",className:"skill-list-item",text:$e(s)});a.classList.toggle("equipped",D(s)),a.addEventListener("click",()=>e.inspect(s.id)),o.append(a)}if(o.childElementCount>1)t.append(o)}}var A={padding:32,rootX:56,sourceX:176,categoryX:296,cellWidth:120,cellHeight:96,groupGap:12,sourceGap:28,labelWidth:108,jitterX:4,jitterY:5};function sc(e){let t=2166136261;for(let r of e.key)t=Math.imul(t^(r.codePointAt(0)??0),16777619);return(t>>>0)/4294967295*e.range*2-e.range}function an(e){let t=e-A.categoryX-A.padding+A.cellWidth/2;return Math.max(2,Math.floor(t/A.cellWidth))}function qt(e){return{id:`${e.from.id}:${e.to.id}`,sourceX:e.from.x,sourceY:e.from.y,targetX:e.to.x,targetY:e.to.y,sibling:e.sibling??!1}}function Ql(e){let t=[],r=e.cells;for(let n of e.blocks){if(r+1+n.columns>e.cells)t.push([]),r=0;t.at(-1)?.push(n),r+=1+n.columns}return t}function ac(e){let t=an(e.width),{hubs:r,leaves:n}=e.constellation,o=[],i=[],s=[],a=e.collapsed??new Set,c=A.padding;for(let p of r.filter((m)=>m.parentId===null)){let m=[],h=[],x=r.filter((z)=>z.parentId===p.id),w=a.has(p.id),S=(w?[]:x).map((z)=>{let k=n.filter((K)=>K.parentId===z.id),Z=a.has(z.id)?[]:k;return{category:z,members:Z,hidden:k.length-Z.length,columns:Math.max(1,Math.min(Z.length,t-1))}});for(let z of Ql({blocks:S,cells:t})){let k=0,Z=1,K=null;for(let F of z){let X=A.categoryX+k*A.cellWidth,le={id:F.category.id,title:F.category.title,itemIds:[],kind:"category",parentId:p.id,x:X,y:c+A.cellHeight/2,hidden:F.hidden},at=le;if(m.push(le),K)i.push(qt({from:K,to:le,sibling:!0}));else h.push(le);for(let[ct,ut]of F.members.entries()){let yn=ct%F.columns,Yt={id:ut.id,title:"",itemIds:ut.itemIds,kind:"skill",parentId:F.category.id,hidden:0,x:X+(yn+1)*A.cellWidth+sc({key:ut.id,range:A.jitterX}),y:c+Math.floor(ct/F.columns)*A.cellHeight+A.cellHeight/2+sc({key:`${ut.id}:y`,range:A.jitterY})};i.push(qt({from:yn===0?le:at,to:Yt})),o.push(Yt),at=Yt}Z=Math.max(Z,Math.ceil(F.members.length/F.columns)),k+=1+F.columns,K=le}c+=Z*A.cellHeight+A.groupGap}let P=m[0],L=m.at(-1),V={id:p.id,title:p.title,itemIds:[],kind:"source",parentId:"constellation-root",x:A.sourceX,y:P&&L?(P.y+L.y)/2:c+A.cellHeight/2,hidden:w?n.filter((z)=>x.some((k)=>k.id===z.parentId)).length:0};if(w)c+=A.cellHeight;s.push(V),o.push(V,...m),i.push(...h.map((z)=>qt({from:V,to:z}))),c+=A.sourceGap}let u=s[0],l=s.at(-1),d={id:"constellation-root",title:"Shadowclone",itemIds:[],kind:"root",parentId:null,hidden:0,x:A.rootX,y:u&&l?(u.y+l.y)/2:A.padding+A.cellHeight/2};return i.push(...s.map((p)=>qt({from:d,to:p}))),{nodes:[d,...o],links:i,height:Math.max(c+A.padding,A.cellHeight*2)}}var ed={modules:"M4 4h6v6H4ZM14 4h6v6h-6ZM4 14h6v6H4ZM14 14h6v6h-6Z",code:"m8 5-6 7 6 7m8-14 6 7-6 7m-3-16-2 18",focus:"M8 3H4v4m12-4h4v4M4 17v4h4m12-4v4h-4M8 9h8v6H8Z",bug:"M9 5 7 2m8 3 2-3M8 9V7a4 4 0 0 1 8 0v2M6 9h12v6a6 6 0 0 1-12 0Zm6 0v12M2 10h4m12 0h4M2 15h4m12 0h4M4 21l3-3m10 0 3 3",flask:"M9 3h6m-5 0v7l-6 9q-1 2 2 2h12q3 0 2-2l-6-9V3M7 15h10",check:"m2 12 5 5L19 5M12 17l10-10",route:"M7 5h10a3 3 0 0 1 0 6H7a3 3 0 0 0 0 6h10M7 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6m10 12a3 3 0 1 0 0 6 3 3 0 0 0 0-6",compass:"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20m-3 7 8-2-2 8-8 2Z",flag:"M5 22V3q4-3 8 0t7 0v10q-3 3-7 0t-8 0",merge:"M6 2v8q0 5 6 5h6m-4-4 4 4-4 4M6 18v4M18 2v5",layers:"m12 2 10 6-10 6L2 8Zm-9 11 9 5 9-5M3 17l9 5 9-5",link:"m9 15 6-6m-7 4-2 2a4 4 0 0 0 6 6l3-3m1-5 2-2a4 4 0 0 0-6-6L9 8",shield:"m12 2 8 3v7q0 6-8 10-8-4-8-10V5Zm-4 9 3 3 5-6",question:"M8 7a4 4 0 1 1 6 4q-2 1-2 4m0 4v1M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20",spark:"m12 2 3 7 7 3-7 3-3 7-3-7-7-3 7-3Z",search:"M10 3a7 7 0 1 0 0 14 7 7 0 0 0 0-14m5 12 6 6"},td={"design-deep-modules":"modules","typescript-type-safety":"code","scope-confirmed-changes":"focus","choose-by-consequence":"compass","write-plain-english":"spark","plan-with-review-page":"route","verify-review-findings":"search","refactor-boundaries":"layers","refactor-preserve":"shield","dependencies-existing":"link","dependencies-mature":"layers","diagnose-before-editing":"bug","tests-that-catch-bugs":"flask","research-primary-sources":"search","verify-and-review":"check","planning-first":"route","planning-when-costly":"compass","questions-autonomous":"flag","questions-early":"question","resolve-conflicts-by-intent":"merge"};function cc(e){let t=document.createElementNS("http://www.w3.org/2000/svg","svg"),r=document.createElementNS("http://www.w3.org/2000/svg","path");return t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","1.25"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),t.setAttribute("aria-hidden","true"),r.setAttribute("d",ed[e]),t.append(r),t}function uc(e){return cc(td[e.id]??"spark")}function lc(e){let t=e.toLowerCase(),n=Object.entries({engineering:"code",architecture:"modules",typescript:"code",workflow:"route",dependenc:"layers",testing:"flask",communication:"question",debugging:"bug",planning:"compass",research:"search",review:"check",setup:"spark"}).find(([o])=>t.includes(o))?.[1]??"compass";return cc(n)}var rd="http://www.w3.org/2000/svg",pc="shadowclone-collapsed-groups";function nd(){try{let e=JSON.parse(localStorage.getItem(pc)??"[]");return new Set(Array.isArray(e)?e.filter((t)=>typeof t==="string"):[])}catch{return new Set}}var Se=nd();function cn(){return Se}function fc(e){if(Se=new Set(Se),!Se.delete(e))Se.add(e);try{localStorage.setItem(pc,JSON.stringify([...Se]))}catch{return}}function rt(e){return document.createElementNS(rd,e)}function dc(e){e.target.addEventListener("click",(t)=>{t.stopPropagation(),e.action()}),e.target.addEventListener("keydown",(t)=>{if(t.key==="Enter"||t.key===" ")t.preventDefault(),t.stopPropagation(),e.action()})}function mc(e){let{container:t,node:r}=e,n=!Se.has(r.id),o=rt("g"),i=rt("circle"),s=rt("path");if(o.setAttribute("class","map-collapse"),o.setAttribute("transform","translate(36 0)"),o.setAttribute("role","button"),o.setAttribute("tabindex","0"),o.setAttribute("aria-expanded",String(n)),o.setAttribute("aria-label",`${n?"Collapse":"Expand"} ${r.title}`),i.setAttribute("r","12"),s.setAttribute("d",n?"M2 -4L-2 0L2 4":"M-2 -4L2 0L-2 4"),o.append(i,s),dc({target:o,action:()=>e.toggle(r.id)}),t.append(o),r.hidden>0){let c=rt("text");c.setAttribute("class","map-hidden-count"),c.setAttribute("x","54"),c.setAttribute("y","4"),c.textContent=`${r.hidden} hidden`,t.append(c)}if(r.kind!=="category")return;let a=rt("rect");for(let[c,u]of Object.entries({x:"-26",y:"-26",width:"52",height:"52",class:"map-node-hit"}))a.setAttribute(c,u);t.prepend(a),t.setAttribute("role","button"),t.setAttribute("tabindex","0"),dc({target:t,action:()=>e.equipAll(r.id)})}function hc(e){if(e.node.kind!=="category")return;let t=tn(e.items),r=t.length>0&&t.every(D);e.element.classList.toggle("equipped",r),e.element.classList.toggle("partial",!r&&t.some(D)),e.element.setAttribute("aria-pressed",String(r)),e.element.setAttribute("aria-disabled",String(t.length===0)),e.element.setAttribute("aria-label",t.length===0?`${e.node.title}, managed by plugins`:`${r?"Unequip":"Equip"} all ${t.length} skills in ${e.node.title}`)}var od="http://www.w3.org/2000/svg",nt=()=>{return},Gt=()=>{return},gc="",un=new Map,ln=new Map,dn=new Map;function oe(e){return document.createElementNS(od,e)}function ot(e){let t=e.itemIds.map((r)=>un.get(r)).filter((r)=>r!==void 0);return t.find(D)??t[0]}function yc(e){return(b.view?.constellation.leaves??[]).filter((t)=>t.parentId===e).flatMap((t)=>{let r=t.itemIds.map((o)=>un.get(o)).filter((o)=>o!==void 0),n=r.find(D)??r[0];return n?[n]:[]})}function Vt(e){let t=ot(e);return t?$e(t):e.title}function id(e){let t=ot(e);return!b.search||`${Vt(e)} ${t?.description??""}`.toLowerCase().includes(b.search.toLowerCase())}function sd(e){let t=[""];for(let r of e.split(/\s+/)){let n=t.at(-1)??"";if(n&&n.length+r.length>=16)t.push(r);else t[t.length-1]=`${n} ${r}`.trim()}return t.slice(0,2).map((r,n)=>`${r.slice(0,17)}${n===1&&t.length>2||r.length>17?"…":""}`)}function ad(e){let{node:t}=e,r=ot(t),n=oe("g"),o=t.kind==="skill"?26:t.kind==="root"?0:32,i=oe("text");if(n.setAttribute("class",`map-node map-node-${t.kind}`),n.setAttribute("transform",`translate(${t.x} ${t.y})`),n.dataset.nodeId=t.id,t.kind==="skill"){let a=oe("rect");for(let[c,u]of Object.entries({x:"-26",y:"-26",width:"52",height:"52",class:"map-node-hit"}))a.setAttribute(c,u);n.append(a),n.setAttribute("role","button"),n.setAttribute("tabindex","0")}if(t.kind==="root"){let a=oe("circle");a.setAttribute("r","26"),n.append(a)}else{let a=oe("rect");for(let[c,u]of Object.entries({x:String(-o/2),y:String(-o/2),width:String(o),height:String(o),rx:"6",transform:"rotate(45)",class:"map-node-gem"}))a.setAttribute(c,u);n.append(a)}i.setAttribute("text-anchor","middle");for(let[a,c]of sd(Vt(t)).entries()){let u=oe("tspan");u.setAttribute("x","0"),u.setAttribute("y",String((t.kind==="skill"?34:44)+a*16)),u.textContent=c,i.append(u)}let s=oe("title");if(s.textContent=Vt(t),n.append(s,i),t.kind==="root"){let a=document.querySelector(".brand-mark");if(a instanceof HTMLImageElement){let c=oe("image");for(let[u,l]of Object.entries({href:a.src,x:"-16",y:"-16",width:"32",height:"32"}))c.setAttribute(u,l);n.append(c)}}else{let a=oe("foreignObject"),c=g({tag:"span",className:"map-node-icon"});for(let[u,l]of Object.entries({x:"-9",y:"-9",width:"18",height:"18"}))a.setAttribute(u,l);c.append(r?uc(r):lc(t.title)),a.append(c),n.append(a)}if(t.kind==="category"||t.kind==="source")mc({container:n,node:t,toggle:(a)=>{fc(a),ld(),document.querySelector(`[data-node-id="${CSS.escape(a)}"] .map-collapse`)?.focus()},equipAll:(a)=>Gt(yc(a))}),dn.set(t.id,{node:t,element:n});if(t.kind==="skill"&&r){let a=()=>nt(ot(t)??r);n.addEventListener("click",a),n.addEventListener("keydown",(c)=>{if(c.key==="Enter"||c.key===" ")c.preventDefault(),a()}),ln.set(t.id,{node:t,element:n})}e.group.append(n)}function cd(e){if(!e.sibling)return`M${e.sourceX} ${e.sourceY}L${e.targetX} ${e.targetY}`;let t=(e.sourceX+e.targetX)/2;return`M${e.sourceX} ${e.sourceY-18}Q${t} ${e.sourceY-60} ${e.targetX} ${e.targetY-18}`}function ud(){for(let{node:e,element:t}of dn.values())hc({element:t,node:e,items:yc(e.id)});for(let{node:e,element:t}of ln.values()){let r=ot(e),n=r?D(r):!1;t.classList.toggle("equipped",n),t.classList.toggle("active",r?.id===b.activeId),t.classList.toggle("search-miss",!id(e)),t.setAttribute("aria-pressed",String(n)),t.setAttribute("aria-label",`${Vt(e)}${r?.owner==="provider"?", managed by its plugin":n?", equipped":""}`)}}function Jt(e){nt=e.choose,Gt=e.chooseGroup;let t=en("constellation-map"),r=b.view;if(!r)return;ic({constellation:r.constellation,inspect:(i)=>{let s=r.items.find((a)=>a.id===i);if(s)nt(s)}});let n=t.getBoundingClientRect().width;if(n<=0)return;un=new Map(r.items.map((i)=>[i.id,i]));let o=JSON.stringify([an(n),r.constellation,[...cn()]]);if(o!==gc){let i=ac({constellation:r.constellation,width:n,collapsed:cn()}),s=oe("g");gc=o,ln.clear(),dn.clear(),t.setAttribute("viewBox",`0 0 ${Math.round(n)} ${Math.round(i.height)}`),t.style.height=`${Math.round(i.height)}px`,t.replaceChildren(s);for(let a of i.links){let c=oe("path");c.setAttribute("class",a.sibling?"map-link sibling":"map-link"),c.setAttribute("d",cd(a)),s.append(c)}for(let a of i.nodes)ad({group:s,node:a})}ud()}function bc(){let e=en("constellation-map"),t=0;new ResizeObserver(()=>{let n=e.getBoundingClientRect().width;if(Math.round(n)!==Math.round(t))t=n,Jt({choose:nt,chooseGroup:Gt})}).observe(e);let r=_("toggle-constellation-view");r.addEventListener("click",()=>{let n=_("constellation").classList.toggle("list-view");r.setAttribute("aria-pressed",String(n))})}function ld(){Jt({choose:nt,chooseGroup:Gt})}var pn={squarePixelsPerStar:9000,maximumStars:600,attemptsPerStar:30};function xc(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let r=Math.imul(t^t>>>15,t|1);return r^=r+Math.imul(r^r>>>7,r|61),((r^r>>>14)>>>0)/4294967296}}function vc(e){return Math.min(pn.maximumStars,Math.round(Math.max(0,e.width)*Math.max(0,e.height)/pn.squarePixelsPerStar))}function dd(e){let t=Math.max(1,vc(e));return Math.sqrt(e.width*e.height/t)*0.55}function q(e){return e.low+e.random()*(e.high-e.low)}function pd(e){let{random:t}=e,r=t()<0.08,n=t()*Math.PI*2,o=q({random:t,low:4,high:14});return{id:e.id,x:e.x,y:e.y,radius:r?q({random:t,low:1.4,high:1.9}):q({random:t,low:0.5,high:1.2}),brightness:q({random:t,low:0.35,high:1}),twinkleSeconds:q({random:t,low:3.5,high:14}),delaySeconds:-q({random:t,low:0,high:14}),driftX:Math.cos(n)*o,driftY:Math.sin(n)*o,driftSeconds:q({random:t,low:18,high:60}),sparkle:r}}function wc(e){let t=vc(e),r=dd(e),n=e.existing.filter((l)=>l.x>=0&&l.x<=e.width&&l.y>=0&&l.y<=e.height).slice(0,t),o=[...n],i=r/Math.SQRT2,s=new Map,a=(l)=>`${Math.floor(l.x/i)}:${Math.floor(l.y/i)}`,c=(l)=>{let d=Math.floor(l.x/i),p=Math.floor(l.y/i);for(let m=-2;m<=2;m+=1)for(let h=-2;h<=2;h+=1){let x=s.get(`${d+m}:${p+h}`);if(x&&Math.hypot(x.x-l.x,x.y-l.y)<r)return!0}return!1},u=Math.max(0,...o.map((l)=>l.id+1));for(let l of n)s.set(a(l),l);for(let l=0;o.length<t&&l<t*pn.attemptsPerStar;l+=1){let d={x:e.random()*e.width,y:e.random()*e.height};if(c(d))continue;let p=pd({id:u,...d,random:e.random});u+=1,o.push(p),s.set(a(p),p)}return o}function _c(e){if(e.reducedMotion||e.width<=0||e.height<=0)return null;let{random:t}=e;return{waitMilliseconds:q({random:t,low:9000,high:28000}),star:{x:q({random:t,low:e.width*0.1,high:e.width*0.9}),y:q({random:t,low:0,high:Math.min(e.height*0.5,600)}),angle:t()<0.5?q({random:t,low:20,high:40}):q({random:t,low:140,high:160}),length:q({random:t,low:70,high:140}),travel:q({random:t,low:220,high:380}),seconds:q({random:t,low:0.7,high:1.3})}}}var Kt="http://www.w3.org/2000/svg";function kc(e){for(let[t,r]of Object.entries(e.properties))e.element.style.setProperty(t,r)}function fd(e){let t=document.createElementNS(Kt,"g"),r=document.createElementNS(Kt,"circle");if(t.setAttribute("class",e.sparkle?"star sparkle":"star"),t.setAttribute("transform",`translate(${e.x.toFixed(1)} ${e.y.toFixed(1)})`),r.setAttribute("r",e.radius.toFixed(2)),kc({element:t,properties:{"--brightness":e.brightness.toFixed(2),"--twinkle":`${e.twinkleSeconds.toFixed(2)}s`,"--delay":`${e.delaySeconds.toFixed(2)}s`,"--drift-x":`${e.driftX.toFixed(1)}px`,"--drift-y":`${e.driftY.toFixed(1)}px`,"--drift":`${e.driftSeconds.toFixed(1)}s`}}),t.append(r),e.sparkle){let n=document.createElementNS(Kt,"path");n.setAttribute("d","M-4 0h8M0 -4v8"),n.setAttribute("class","star-rays"),t.append(n)}return t}function zc(){let e=_("starfield"),t=xc(crypto.getRandomValues(new Uint32Array(1))[0]??Date.now()),r=window.matchMedia("(prefers-reduced-motion: reduce)"),n=new Map,o=[],i={width:0,height:0},s=!1,a=()=>{let l=e.getBoundingClientRect(),d=Math.max(1,Math.round(l.width)),p=Math.max(1,Math.round(l.height));if(d===i.width&&p===i.height)return;i={width:d,height:p},e.setAttribute("viewBox",`0 0 ${d} ${p}`),o=wc({width:d,height:p,existing:o,random:t});let m=new Set(o.map((h)=>h.id));for(let[h,x]of n)if(!m.has(h))x.remove(),n.delete(h);for(let h of o){if(n.has(h.id))continue;let x=fd(h);n.set(h.id,x),e.append(x)}},c=()=>{let l=s?null:_c({...i,random:t,reducedMotion:r.matches});if(!l)return;s=!0,window.setTimeout(()=>{if(s=!1,!document.hidden&&!r.matches){let d=document.createElementNS(Kt,"line");d.setAttribute("class","shooting-star"),d.setAttribute("x2",l.star.travel.toFixed(0)),d.setAttribute("transform",`translate(${l.star.x.toFixed(0)} ${l.star.y.toFixed(0)}) rotate(${l.star.angle.toFixed(0)})`),kc({element:d,properties:{"--shoot":`${l.star.seconds.toFixed(2)}s`,"--length":`${l.star.length.toFixed(0)}px`,"--travel":`${l.star.travel.toFixed(0)}px`}}),d.addEventListener("animationend",()=>d.remove()),e.append(d)}c()},l.waitMilliseconds)},u=()=>{e.classList.toggle("paused",document.hidden)};document.addEventListener("visibilitychange",u),r.addEventListener("change",c),new ResizeObserver(a).observe(e),a(),u(),c()}var Ch=O({name:y().trim().max(48),description:y().trim().max(300),body:y().trim().min(1).max(24000)}),$c=O({id:Bt(),destination:y(),payload:y(),limits:y(),cached:Te.nullable()}),Sc=O({skill:Te});function Wt(e){let t=!1,r=(n)=>{let o=e.getBoundingClientRect();return n.target===e&&(n.clientX<o.left||n.clientX>o.right||n.clientY<o.top||n.clientY>o.bottom)};e.addEventListener("pointerdown",(n)=>{t=r(n)}),e.addEventListener("click",(n)=>{if(t&&r(n))e.close();t=!1})}function Pc(e){let t=g({tag:"dialog"}),r=g({tag:"div",className:"dialog-heading"}),n=g({tag:"button",className:"quiet-button",text:"✕"}),o=g({tag:"details",className:"file-change"}),i=g({tag:"div",className:"dialog-actions"}),s=g({tag:"p",className:"review-message"}),a=g({tag:"button",className:"quiet-button",text:"Keep editing"}),c=g({tag:"button",className:"primary-button",text:e.confirm}),u=new AbortController;t.setAttribute("aria-label",e.title),n.setAttribute("aria-label","Close model request"),s.setAttribute("role","status"),n.addEventListener("click",()=>t.close()),Wt(t),r.append(g({tag:"h2",text:e.title}),n),o.append(g({tag:"summary",text:"Exact payload sent to the model"}),g({tag:"pre",text:e.review.payload})),a.addEventListener("click",()=>t.close()),t.addEventListener("close",()=>{u.abort(),t.remove()});async function l(){if(c.disabled)return;c.disabled=!0,c.textContent="Generating…",a.textContent="Cancel generation",s.textContent="Your model is working. You can cancel and keep your original draft.";try{let d=await E({path:e.path,schema:e.schema,body:{previewId:e.review.id},signal:u.signal});if(!u.signal.aborted)e.accept(d),t.close()}catch(d){if(u.signal.aborted)return;s.className="review-warning",s.textContent=d instanceof Error?d.message:"Generation failed. Your draft is unchanged.",c.textContent="Request ended",a.textContent="Back to editing"}}c.addEventListener("click",()=>{l().catch(()=>{s.textContent="Generation failed. Return to editing to try again."})}),i.append(a,c),t.append(r,g({tag:"p",className:"review-message",text:`Destination: ${e.review.destination}`}),g({tag:"p",className:"review-message",text:e.review.limits}),g({tag:"p",className:"review-message",text:e.explanation}),o,s,i),document.body.append(t),t.showModal()}function Pe(e){_("custom-status").textContent=e}async function md(){let e=me("custom-body").value;if(!e.trim()){Pe("Describe what your agent should do, then use AI to shape it into a skill."),me("custom-body").focus();return}let t=await E({path:"/api/skill/preview",schema:$c,body:{name:J("custom-name").value,description:J("custom-description").value,body:e}});Pc({review:t,title:"Draft your skill with AI.",explanation:"Only the form fields below are sent. The result fills this form for you to edit; adding and applying it remain your choice.",confirm:"Send and draft",path:"/api/skill/generate",schema:Sc,accept:({skill:r})=>{J("custom-name").value=r.name,J("custom-description").value=r.description,me("custom-body").value=r.body,Pe("AI draft ready. Edit the instructions before adding the skill to your build."),me("custom-body").focus()}})}function Zc(){let e=_("custom-ai");if(!(e instanceof HTMLButtonElement))return;e.addEventListener("click",()=>{if(e.disabled)return;e.disabled=!0,Pe("Preparing your model request…"),md().catch((t)=>{Pe(t instanceof Error?t.message:"Could not prepare an AI draft. Your text is unchanged.")}).finally(()=>{if(e.disabled=!1,_("custom-status").textContent==="Preparing your model request…")Pe("")})})}var fn=!1;async function Le(e){if(fn)return;fn=!0;let t=document.querySelectorAll("button, input, select, textarea"),r=Array.from(t,(n)=>({control:n,disabled:n.disabled}));for(let{control:n}of r)n.disabled=!0;try{await e()}finally{for(let{control:n,disabled:o}of r)n.disabled=o;fn=!1}}function Ze(e){_(e.id).addEventListener("click",()=>Le(e.action).catch(he))}function Ic(){let e=document.createElement("template");e.innerHTML=`
|
|
67
67
|
<dialog id="review-dialog" aria-labelledby="review-title">
|
|
68
68
|
<div class="dialog-heading">
|
|
69
69
|
<div>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "shadowclone",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.23",
|
|
5
5
|
"description": "Set up and maintain portable coding-agent skills with explicit local consent.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Shadowclone",
|