@cleocode/cleo 2026.9.14 → 2026.9.15

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 (53) hide show
  1. package/dist/cli/index.js +117 -30
  2. package/package.json +13 -13
  3. package/scripts/generate-command-manifest.mjs +7 -2
  4. package/studio-dist/client/_app/immutable/chunks/COEVVgGn.js +3 -0
  5. package/studio-dist/client/_app/immutable/chunks/D2NG8h_r.js +1 -0
  6. package/studio-dist/client/_app/immutable/chunks/{BtywxRhM.js → DPdtI3wM.js} +1 -1
  7. package/studio-dist/client/_app/immutable/chunks/{D5Xqss9F.js → NUtQpztF.js} +1 -1
  8. package/studio-dist/client/_app/immutable/entry/{app.Bkyb9RRj.js → app.CRQDghR6.js} +2 -2
  9. package/studio-dist/client/_app/immutable/entry/start.6hSGg1uY.js +1 -0
  10. package/studio-dist/client/_app/immutable/nodes/{0.COhWnRZG.js → 0.DhjCtLlb.js} +1 -1
  11. package/studio-dist/client/_app/immutable/nodes/{1.DilOp_T3.js → 1.CGvtVpZ4.js} +1 -1
  12. package/studio-dist/client/_app/immutable/nodes/{15.Xj_SnhIh.js → 15.C0AVEmN4.js} +1 -1
  13. package/studio-dist/client/_app/immutable/nodes/{16.-k1fZVc8.js → 16.idTr0Sy-.js} +1 -1
  14. package/studio-dist/client/_app/immutable/nodes/{17.C3uJChOm.js → 17.D9U6A-tT.js} +1 -1
  15. package/studio-dist/client/_app/immutable/nodes/{18.CaBcMqg6.js → 18.BnNnIAxc.js} +1 -1
  16. package/studio-dist/client/_app/immutable/nodes/{20.PfLdXu4K.js → 20.DtrFty0x.js} +1 -1
  17. package/studio-dist/client/_app/immutable/nodes/{24.D6HMIXZo.js → 24.BNfALjyT.js} +1 -1
  18. package/studio-dist/client/_app/immutable/nodes/{25.PWd_97Ic.js → 25.Be5vwHso.js} +2 -2
  19. package/studio-dist/client/_app/immutable/nodes/{26.CpRQOhTF.js → 26.DT-XPIqy.js} +1 -1
  20. package/studio-dist/client/_app/immutable/nodes/{3.BUtKuhCE.js → 3.BKRmuaPu.js} +1 -1
  21. package/studio-dist/client/_app/version.json +1 -1
  22. package/studio-dist/server/chunks/{0-BQKYj7sI.js → 0-cy_QkDzp.js} +3 -3
  23. package/studio-dist/server/chunks/1-DfbAl5as.js +9 -0
  24. package/studio-dist/server/chunks/{15-eAvnWcqP.js → 15-U6I43v-2.js} +3 -3
  25. package/studio-dist/server/chunks/{16-BrkcPqWj.js → 16-DZakt8NC.js} +3 -3
  26. package/studio-dist/server/chunks/{17-DZOSccBm.js → 17-gxnXiGqH.js} +3 -3
  27. package/studio-dist/server/chunks/{18-CIM4TtZO.js → 18-9L7Ryi3g.js} +3 -3
  28. package/studio-dist/server/chunks/{20-BV2oDNxs.js → 20-DkxvN_jW.js} +3 -3
  29. package/studio-dist/server/chunks/{24-DiJrLGnm.js → 24-CaBX4lxL.js} +3 -3
  30. package/studio-dist/server/chunks/{25-KnPx5--u.js → 25-Dt9ulRzg.js} +3 -3
  31. package/studio-dist/server/chunks/{26-MjFmJWRl.js → 26-BqUum1sI.js} +3 -3
  32. package/studio-dist/server/chunks/{3-D0yOn-2j.js → 3-BRakm5hS.js} +3 -3
  33. package/studio-dist/server/chunks/{_layout.svelte-7fJASih5.js → _layout.svelte-uEMRkhN8.js} +4 -4
  34. package/studio-dist/server/chunks/{_page.svelte-DbavHIiA.js → _page.svelte-Blgw2ltS.js} +3 -3
  35. package/studio-dist/server/chunks/{_page.svelte-ByU0xsC0.js → _page.svelte-BoLHzEsv.js} +3 -3
  36. package/studio-dist/server/chunks/{_page.svelte-vKlMIP50.js → _page.svelte-Cis5CNOq.js} +3 -3
  37. package/studio-dist/server/chunks/{_page.svelte-BUR9tARI.js → _page.svelte-CsVeNF46.js} +3 -3
  38. package/studio-dist/server/chunks/{_page.svelte-Bsp6KMM1.js → _page.svelte-DSrhUYWP.js} +3 -3
  39. package/studio-dist/server/chunks/{_page.svelte-CkuJV8ec.js → _page.svelte-QIby5izo.js} +4 -4
  40. package/studio-dist/server/chunks/{_page.svelte-pt9J_PyJ.js → _page.svelte-ZeXhdWGu.js} +4 -4
  41. package/studio-dist/server/chunks/{_page.svelte-BBNuaLYp.js → _page.svelte-qgxzJx8X.js} +3 -3
  42. package/studio-dist/server/chunks/{_page.svelte-DmTQemvS.js → _page.svelte-wRQJ7LRt.js} +3 -3
  43. package/studio-dist/server/chunks/{_server.ts-DOTTU6mC.js → _server.ts-CXy1HT5W.js} +2 -2
  44. package/studio-dist/server/chunks/{client-DBHR0SaZ.js → client-BzjeEh5T.js} +2 -2
  45. package/studio-dist/server/chunks/{error.svelte-BiddeLMF.js → error.svelte-CQk9TrYg.js} +3 -3
  46. package/studio-dist/server/chunks/{internal-DMFWVQX-.js → internal-BjLvSp53.js} +2 -2
  47. package/studio-dist/server/chunks/{stores-CdM00jz_.js → stores-Bpyg4-QN.js} +2 -2
  48. package/studio-dist/server/index.js +1 -1
  49. package/studio-dist/server/manifest.js +13 -13
  50. package/studio-dist/client/_app/immutable/chunks/B7XMzKvO.js +0 -3
  51. package/studio-dist/client/_app/immutable/chunks/Dif6upEP.js +0 -1
  52. package/studio-dist/client/_app/immutable/entry/start.ChxXPWq_.js +0 -1
  53. package/studio-dist/server/chunks/1-Dhv54ORD.js +0 -9
@@ -1,2 +1,2 @@
1
- import{$ as e,A as t,D as n,E as r,F as i,H as a,I as o,J as s,K as c,M as l,N as u,O as d,P as f,Q as p,V as m,X as h,Y as g,Z as _,_ as v,at as y,d as b,et as x,k as S,lt as C,ot as w,s as ee,u as te,ut as T,v as E,w as D,x as O}from"../chunks/DGftG5oL.js";import{r as k}from"../chunks/B7XMzKvO.js";import"../chunks/B8WnZMYa.js";import{i as A,r as j}from"../chunks/DZrdToAH.js";import{a as ne,c as re,o as M,s as ie}from"../chunks/CTLGzgdN.js";import{a as ae,i as oe}from"../chunks/Cge6qiwc.js";import"../chunks/Dif6upEP.js";import{i as se,r as N,t as P}from"../chunks/BOnrCZaR.js";var ce=t(`<span class="arrow-mark svelte-1cjo1uu" aria-hidden="true">›</span>`),le=t(`<li><button type="button"><span aria-hidden="true"></span> <span class="legend-label"> </span> <!></button></li>`),ue=t(`<span class="hit-path svelte-1cjo1uu"> </span>`),de=t(`<li><button type="button" class="search-hit svelte-1cjo1uu"><span class="hit-label svelte-1cjo1uu"> </span> <span class="hit-meta svelte-1cjo1uu"><span class="hit-kind svelte-1cjo1uu"> </span> <!></span></button></li>`),fe=t(`<ul class="search-results svelte-1cjo1uu" role="listbox" aria-label="Search results"></ul>`),pe=t(`<p class="search-empty svelte-1cjo1uu"> </p>`),me=t(`<li><a class="community-row svelte-1cjo1uu"><span class="tick svelte-1cjo1uu" aria-hidden="true"></span> <span class="row-body svelte-1cjo1uu"><span class="row-label svelte-1cjo1uu"> </span> <span class="row-meta svelte-1cjo1uu"> </span></span> <span class="row-chev svelte-1cjo1uu" aria-hidden="true">→</span></a></li>`),he=t(`<span class="selected-meta svelte-1cjo1uu"> </span>`),ge=t(`<div class="panel-section selected svelte-1cjo1uu"><h2 class="panel-head svelte-1cjo1uu">Selected</h2> <div class="selected-card svelte-1cjo1uu"><span class="selected-label svelte-1cjo1uu"> </span> <span class="selected-kind svelte-1cjo1uu"> </span> <!></div></div>`),_e=t(`<div class="panel-stack svelte-1cjo1uu"><!> <!> <div class="panel-section svelte-1cjo1uu"><h2 class="panel-head svelte-1cjo1uu">Visible Labels</h2> <p class="panel-hint svelte-1cjo1uu">Toggles WHICH kinds may render a cluster caption — never leaf labels.</p> <!> <label class="toggle-row svelte-1cjo1uu"><input type="checkbox" class="svelte-1cjo1uu"/> <span>Show cluster captions</span></label></div> <div class="panel-section svelte-1cjo1uu"><h2 class="panel-head svelte-1cjo1uu">Visible Edges</h2> <p class="panel-hint svelte-1cjo1uu">Hides the kind entirely from the canvas.</p> <!></div> <div class="panel-section svelte-1cjo1uu"><h2 class="panel-head svelte-1cjo1uu">Top Communities</h2> <ul class="community-list svelte-1cjo1uu"></ul></div> <div class="panel-section svelte-1cjo1uu"><a href="/code/flows" class="flow-link svelte-1cjo1uu"><span class="flow-arrow svelte-1cjo1uu" aria-hidden="true">▸</span> <span class="flow-body svelte-1cjo1uu"><span class="flow-title svelte-1cjo1uu">Execution Flows</span> <span class="flow-sub svelte-1cjo1uu">Trace entry-points through the call graph</span></span></a></div> <!></div>`),ve=t(`<li><a class="svelte-1cjo1uu"><span class="kb-label svelte-1cjo1uu"> </span> <span class="kb-meta svelte-1cjo1uu"> </span></a></li>`),ye=t(`<div class="workbench svelte-1cjo1uu"><div class="stage svelte-1cjo1uu"><div class="stage-scanlines svelte-1cjo1uu" aria-hidden="true"></div> <!> <footer class="legend-dock svelte-1cjo1uu" aria-label="Edge legend"><span class="legend-eyebrow svelte-1cjo1uu">EDGE KINDS</span> <ul class="svelte-1cjo1uu"></ul></footer></div> <aside class="side-panel svelte-1cjo1uu" aria-label="Graph controls and details"><!> <div class="keyboard-list svelte-1cjo1uu" aria-label="Keyboard-accessible community list"><h2 class="panel-head sr-subhead svelte-1cjo1uu">All Communities</h2> <p class="panel-hint svelte-1cjo1uu">Keyboard-accessible mirror of the graph for screen readers and focus nav.</p> <ol class="svelte-1cjo1uu"></ol></div></aside></div> <p class="telemetry svelte-1cjo1uu" aria-hidden="true"> </p>`,1),be=t(`<section class="code-macro svelte-1cjo1uu" aria-labelledby="code-title"><header class="page-head svelte-1cjo1uu"><!> <div class="title-row svelte-1cjo1uu"><div class="title-block"><span class="eyebrow svelte-1cjo1uu">NEXUS · Macro</span> <h1 id="code-title" class="svelte-1cjo1uu">Code Intelligence</h1> <p class="subtitle svelte-1cjo1uu"><span class="stat-inline svelte-1cjo1uu"> </span> <span class="sep svelte-1cjo1uu" aria-hidden="true">·</span> <span class="stat-inline svelte-1cjo1uu"> </span> <span class="sep svelte-1cjo1uu" aria-hidden="true">·</span> <span class="stat-inline svelte-1cjo1uu"> </span></p></div> <div class="title-stats svelte-1cjo1uu" role="list" aria-label="Graph summary"><div class="stat-card svelte-1cjo1uu" role="listitem"><span class="stat-num svelte-1cjo1uu"> </span> <span class="stat-lbl svelte-1cjo1uu">Symbols</span></div> <div class="stat-card svelte-1cjo1uu" role="listitem"><span class="stat-num svelte-1cjo1uu"> </span> <span class="stat-lbl svelte-1cjo1uu">Relations</span></div> <div class="stat-card svelte-1cjo1uu" role="listitem"><span class="stat-num svelte-1cjo1uu"> </span> <span class="stat-lbl svelte-1cjo1uu">Communities</span></div></div></div></header> <!></section>`);function F(t,u){w(u,!0);let F=x(()=>P(u.data.communities.map(e=>({id:e.id,label:e.rawLabel,memberCount:e.size,topKind:e.topKind})),u.data.edges.map(e=>({source:e.source,target:e.target,kind:N(e.dominantType),weight:e.weight})))),xe=x(()=>o(F).nodes),Se=x(()=>o(F).edges),Ce=x(()=>o(F).clusters),I=[`contains`,`defines`,`imports`,`calls`,`extends`,`implements`,`has_method`,`has_property`,`member_of`,`accesses`,`references`,`relates_to`],L=[`community`,`folder`,`file`,`class`,`function`,`method`,`interface`,`enum`,`type_alias`],R=e(_(new Set(I))),z=e(_(new Set(L))),B=e(!0),V=e(null),H=e(null);function we(e){let t=new Set(o(R));t.has(e)?t.delete(e):t.add(e),p(R,t,!0)}function Te(e){let t=new Set(o(z));t.has(e)?t.delete(e):t.add(e),p(z,t,!0)}let U=e(``),W=e(_([])),G=null;function Ee(){G&&clearTimeout(G);let e=o(U).trim();if(e.length<2){p(W,[],!0);return}G=setTimeout(async()=>{try{let t=await fetch(`/api/nexus/search?q=${encodeURIComponent(e)}`);if(!t.ok){p(W,[],!0);return}p(W,await t.json(),!0)}catch{p(W,[],!0)}},180)}function De(e){k(`/code/symbol/${encodeURIComponent(e.label)}`)}function Oe(e){p(H,e,!0),e.kind===`community`&&k(`/code/community/${encodeURIComponent(e.id)}`)}let ke=x(()=>u.data.communities.slice(0,12));function K(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}let Ae=x(()=>u.data.edges.reduce((e,t)=>e+t.weight,0));var q=be();O(`1cjo1uu`,e=>{m(()=>{c.title=`Code Intelligence — CLEO Studio`})});var J=s(q),je=s(J);A(je,{items:[{label:`Studio`,href:`/`},{label:`Code`}]});var Me=h(je,2),Y=s(Me),Ne=h(s(Y),4),X=s(Ne),Pe=s(X);T(X);var Z=h(X,4),Fe=s(Z);T(Z);var Ie=h(Z,4),Le=s(Ie);T(Ie),T(Ne),T(Y);var Re=h(Y,2),Q=s(Re),ze=s(Q),Be=s(ze,!0);T(ze),C(2),T(Q);var $=h(Q,2),Ve=s($),He=s(Ve,!0);T(Ve),C(2),T($);var Ue=h($,2),We=s(Ue),Ge=s(We,!0);T(We),C(2),T(Ue),T(Re),T(Me),T(J);var Ke=h(J,2),qe=e=>{{let t=x(()=>u.data.emptyReason??`Run cleo nexus analyze to populate nexus.db.`);M(e,{title:`No code graph yet`,get subtitle(){return o(t)}})}},Je=e=>{var t=ye(),c=g(t),m=s(c),_=h(s(m),2);se(_,{get nodes(){return o(xe)},get edges(){return o(Se)},get clusters(){return o(Ce)},get visibleEdgeKinds(){return o(R)},get visibleNodeKinds(){return o(z)},get highlightNodeId(){return o(V)},get showClusterLabels(){return o(B)},onNodeClick:Oe,height:`calc(100vh - 220px)`,baseAlpha:.92});var y=h(_,2),w=h(s(y),2);D(w,20,()=>I,e=>e,(e,t)=>{let i=x(()=>oe[t]),c=x(()=>o(R).has(t));var l=le(),u=s(l);let p;var m=s(u);let g,_;var y=h(m,2),S=s(y,!0);T(y);var C=h(y,2),w=e=>{d(e,ce())};r(C,e=>{o(i).arrow&&e(w)}),T(u),T(l),a((e,r)=>{p=E(u,1,`legend-item svelte-1cjo1uu`,null,p,{active:o(c)}),b(u,`aria-pressed`,o(c)),b(u,`title`,e),g=E(m,1,`swatch svelte-1cjo1uu`,null,g,r),_=v(m,``,_,{background:o(i).color}),n(S,t)},[()=>ae(t),()=>({dashed:!!o(i).dash})]),f(`click`,u,()=>we(t)),d(e,l)}),T(w),T(y),T(m);var O=h(m,2),k=s(O);j(k,{elevation:1,padding:`cozy`,children:e=>{var t=_e(),c=s(t);ne(c,{type:`search`,label:`Search symbols`,placeholder:`Search symbols, classes, functions…`,oninput:Ee,get value(){return o(U)},set value(e){p(U,e,!0)}});var u=h(c,2),m=e=>{var t=fe();D(t,21,()=>o(W),e=>e.id,(e,t)=>{var i=de(),c=s(i),l=s(c),u=s(l,!0);T(l);var p=h(l,2),m=s(p),g=s(m,!0);T(m);var _=h(m,2),v=e=>{var r=ue(),i=s(r,!0);T(r),a(e=>n(i,e),[()=>o(t).filePath.split(`/`).slice(-2).join(`/`)]),d(e,r)};r(_,e=>{o(t).filePath&&e(v)}),T(p),T(c),T(i),a(()=>{n(u,o(t).label),n(g,o(t).kind)}),f(`click`,c,()=>De(o(t))),d(e,i)}),T(t),d(e,t)},_=e=>{var t=pe(),r=s(t);T(t),a(()=>n(r,`No matches for "${o(U)??``}"`)),d(e,t)},y=x(()=>o(U).trim().length>=2);r(u,e=>{o(W).length>0?e(m):o(y)&&e(_,1)});var w=h(u,2),E=h(s(w),4);ie(E,{children:e=>{var t=S();D(g(t),16,()=>L,e=>e,(e,t)=>{{let r=e=>{C();var r=l();a(()=>n(r,t)),d(e,r)},i=x(()=>o(z).has(t));re(e,{get active(){return o(i)},onclick:()=>Te(t),children:r,$$slots:{default:!0}})}}),d(e,t)},$$slots:{default:!0}});var O=h(E,2),k=s(O);te(k),C(2),T(O),T(w);var A=h(w,2);ie(h(s(A),4),{children:e=>{var t=S();D(g(t),16,()=>I,e=>e,(e,t)=>{{let r=e=>{C();var r=l();a(()=>n(r,t)),d(e,r)},i=x(()=>o(R).has(t));re(e,{get active(){return o(i)},onclick:()=>we(t),children:r,$$slots:{default:!0}})}}),d(e,t)},$$slots:{default:!0}}),T(A);var j=h(A,2),M=h(s(j),2);D(M,21,()=>o(ke),e=>e.id,(e,t)=>{var r=me(),c=s(r);let l;var u=h(s(c),2),f=s(u),m=s(f,!0);T(f);var g=h(f,2),_=s(g);T(g),T(u),C(2),T(c),T(r),a(e=>{b(c,`href`,e),l=v(c,``,l,{"--tint":o(t).color}),n(m,o(t).rawLabel),n(_,`${o(t).size??``} symbols · ${o(t).topKind??``}`)},[()=>`/code/community/${encodeURIComponent(o(t).id)}`]),i(`mouseenter`,c,()=>{p(V,o(t).id,!0)}),i(`focus`,c,()=>{p(V,o(t).id,!0)}),i(`mouseleave`,c,()=>{p(V,null)}),i(`blur`,c,()=>{p(V,null)}),d(e,r)}),T(M),T(j);var ae=h(j,4),oe=e=>{var t=ge(),i=h(s(t),2),c=s(i),l=s(c,!0);T(c);var u=h(c,2),f=s(u,!0);T(u);var p=h(u,2),m=e=>{var t=he(),r=s(t);T(t),a(()=>n(r,`${o(H).meta.memberCount??``} members`)),d(e,t)};r(p,e=>{typeof o(H).meta?.memberCount==`number`&&e(m)}),T(i),T(t),a(()=>{n(l,o(H).label),n(f,o(H).kind)}),d(e,t)};r(ae,e=>{o(H)&&e(oe)}),T(t),ee(k,()=>o(B),e=>p(B,e)),d(e,t)},$$slots:{default:!0}});var A=h(k,2),M=h(s(A),4);D(M,21,()=>u.data.communities,e=>e.id,(e,t)=>{var r=ve(),i=s(r),c=s(i),l=s(c,!0);T(c);var u=h(c,2),f=s(u);T(u),T(i),T(r),a(e=>{b(i,`href`,e),n(l,o(t).rawLabel),n(f,`${o(t).size??``} symbols · ${o(t).topKind??``}`)},[()=>`/code/community/${encodeURIComponent(o(t).id)}`]),d(e,r)}),T(M),T(A),T(O),T(c);var N=h(c,2),P=s(N);T(N),a(e=>n(P,`Aggregate cross-community relations: ${e??``} · Top-600 shown ·
1
+ import{$ as e,A as t,D as n,E as r,F as i,H as a,I as o,J as s,K as c,M as l,N as u,O as d,P as f,Q as p,V as m,X as h,Y as g,Z as _,_ as v,at as y,d as b,et as x,k as S,lt as C,ot as w,s as ee,u as te,ut as T,v as E,w as D,x as O}from"../chunks/DGftG5oL.js";import{r as k}from"../chunks/COEVVgGn.js";import"../chunks/B8WnZMYa.js";import{i as A,r as j}from"../chunks/DZrdToAH.js";import{a as ne,c as re,o as M,s as ie}from"../chunks/CTLGzgdN.js";import{a as ae,i as oe}from"../chunks/Cge6qiwc.js";import"../chunks/D2NG8h_r.js";import{i as se,r as N,t as P}from"../chunks/BOnrCZaR.js";var ce=t(`<span class="arrow-mark svelte-1cjo1uu" aria-hidden="true">›</span>`),le=t(`<li><button type="button"><span aria-hidden="true"></span> <span class="legend-label"> </span> <!></button></li>`),ue=t(`<span class="hit-path svelte-1cjo1uu"> </span>`),de=t(`<li><button type="button" class="search-hit svelte-1cjo1uu"><span class="hit-label svelte-1cjo1uu"> </span> <span class="hit-meta svelte-1cjo1uu"><span class="hit-kind svelte-1cjo1uu"> </span> <!></span></button></li>`),fe=t(`<ul class="search-results svelte-1cjo1uu" role="listbox" aria-label="Search results"></ul>`),pe=t(`<p class="search-empty svelte-1cjo1uu"> </p>`),me=t(`<li><a class="community-row svelte-1cjo1uu"><span class="tick svelte-1cjo1uu" aria-hidden="true"></span> <span class="row-body svelte-1cjo1uu"><span class="row-label svelte-1cjo1uu"> </span> <span class="row-meta svelte-1cjo1uu"> </span></span> <span class="row-chev svelte-1cjo1uu" aria-hidden="true">→</span></a></li>`),he=t(`<span class="selected-meta svelte-1cjo1uu"> </span>`),ge=t(`<div class="panel-section selected svelte-1cjo1uu"><h2 class="panel-head svelte-1cjo1uu">Selected</h2> <div class="selected-card svelte-1cjo1uu"><span class="selected-label svelte-1cjo1uu"> </span> <span class="selected-kind svelte-1cjo1uu"> </span> <!></div></div>`),_e=t(`<div class="panel-stack svelte-1cjo1uu"><!> <!> <div class="panel-section svelte-1cjo1uu"><h2 class="panel-head svelte-1cjo1uu">Visible Labels</h2> <p class="panel-hint svelte-1cjo1uu">Toggles WHICH kinds may render a cluster caption — never leaf labels.</p> <!> <label class="toggle-row svelte-1cjo1uu"><input type="checkbox" class="svelte-1cjo1uu"/> <span>Show cluster captions</span></label></div> <div class="panel-section svelte-1cjo1uu"><h2 class="panel-head svelte-1cjo1uu">Visible Edges</h2> <p class="panel-hint svelte-1cjo1uu">Hides the kind entirely from the canvas.</p> <!></div> <div class="panel-section svelte-1cjo1uu"><h2 class="panel-head svelte-1cjo1uu">Top Communities</h2> <ul class="community-list svelte-1cjo1uu"></ul></div> <div class="panel-section svelte-1cjo1uu"><a href="/code/flows" class="flow-link svelte-1cjo1uu"><span class="flow-arrow svelte-1cjo1uu" aria-hidden="true">▸</span> <span class="flow-body svelte-1cjo1uu"><span class="flow-title svelte-1cjo1uu">Execution Flows</span> <span class="flow-sub svelte-1cjo1uu">Trace entry-points through the call graph</span></span></a></div> <!></div>`),ve=t(`<li><a class="svelte-1cjo1uu"><span class="kb-label svelte-1cjo1uu"> </span> <span class="kb-meta svelte-1cjo1uu"> </span></a></li>`),ye=t(`<div class="workbench svelte-1cjo1uu"><div class="stage svelte-1cjo1uu"><div class="stage-scanlines svelte-1cjo1uu" aria-hidden="true"></div> <!> <footer class="legend-dock svelte-1cjo1uu" aria-label="Edge legend"><span class="legend-eyebrow svelte-1cjo1uu">EDGE KINDS</span> <ul class="svelte-1cjo1uu"></ul></footer></div> <aside class="side-panel svelte-1cjo1uu" aria-label="Graph controls and details"><!> <div class="keyboard-list svelte-1cjo1uu" aria-label="Keyboard-accessible community list"><h2 class="panel-head sr-subhead svelte-1cjo1uu">All Communities</h2> <p class="panel-hint svelte-1cjo1uu">Keyboard-accessible mirror of the graph for screen readers and focus nav.</p> <ol class="svelte-1cjo1uu"></ol></div></aside></div> <p class="telemetry svelte-1cjo1uu" aria-hidden="true"> </p>`,1),be=t(`<section class="code-macro svelte-1cjo1uu" aria-labelledby="code-title"><header class="page-head svelte-1cjo1uu"><!> <div class="title-row svelte-1cjo1uu"><div class="title-block"><span class="eyebrow svelte-1cjo1uu">NEXUS · Macro</span> <h1 id="code-title" class="svelte-1cjo1uu">Code Intelligence</h1> <p class="subtitle svelte-1cjo1uu"><span class="stat-inline svelte-1cjo1uu"> </span> <span class="sep svelte-1cjo1uu" aria-hidden="true">·</span> <span class="stat-inline svelte-1cjo1uu"> </span> <span class="sep svelte-1cjo1uu" aria-hidden="true">·</span> <span class="stat-inline svelte-1cjo1uu"> </span></p></div> <div class="title-stats svelte-1cjo1uu" role="list" aria-label="Graph summary"><div class="stat-card svelte-1cjo1uu" role="listitem"><span class="stat-num svelte-1cjo1uu"> </span> <span class="stat-lbl svelte-1cjo1uu">Symbols</span></div> <div class="stat-card svelte-1cjo1uu" role="listitem"><span class="stat-num svelte-1cjo1uu"> </span> <span class="stat-lbl svelte-1cjo1uu">Relations</span></div> <div class="stat-card svelte-1cjo1uu" role="listitem"><span class="stat-num svelte-1cjo1uu"> </span> <span class="stat-lbl svelte-1cjo1uu">Communities</span></div></div></div></header> <!></section>`);function F(t,u){w(u,!0);let F=x(()=>P(u.data.communities.map(e=>({id:e.id,label:e.rawLabel,memberCount:e.size,topKind:e.topKind})),u.data.edges.map(e=>({source:e.source,target:e.target,kind:N(e.dominantType),weight:e.weight})))),xe=x(()=>o(F).nodes),Se=x(()=>o(F).edges),Ce=x(()=>o(F).clusters),I=[`contains`,`defines`,`imports`,`calls`,`extends`,`implements`,`has_method`,`has_property`,`member_of`,`accesses`,`references`,`relates_to`],L=[`community`,`folder`,`file`,`class`,`function`,`method`,`interface`,`enum`,`type_alias`],R=e(_(new Set(I))),z=e(_(new Set(L))),B=e(!0),V=e(null),H=e(null);function we(e){let t=new Set(o(R));t.has(e)?t.delete(e):t.add(e),p(R,t,!0)}function Te(e){let t=new Set(o(z));t.has(e)?t.delete(e):t.add(e),p(z,t,!0)}let U=e(``),W=e(_([])),G=null;function Ee(){G&&clearTimeout(G);let e=o(U).trim();if(e.length<2){p(W,[],!0);return}G=setTimeout(async()=>{try{let t=await fetch(`/api/nexus/search?q=${encodeURIComponent(e)}`);if(!t.ok){p(W,[],!0);return}p(W,await t.json(),!0)}catch{p(W,[],!0)}},180)}function De(e){k(`/code/symbol/${encodeURIComponent(e.label)}`)}function Oe(e){p(H,e,!0),e.kind===`community`&&k(`/code/community/${encodeURIComponent(e.id)}`)}let ke=x(()=>u.data.communities.slice(0,12));function K(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}let Ae=x(()=>u.data.edges.reduce((e,t)=>e+t.weight,0));var q=be();O(`1cjo1uu`,e=>{m(()=>{c.title=`Code Intelligence — CLEO Studio`})});var J=s(q),je=s(J);A(je,{items:[{label:`Studio`,href:`/`},{label:`Code`}]});var Me=h(je,2),Y=s(Me),Ne=h(s(Y),4),X=s(Ne),Pe=s(X);T(X);var Z=h(X,4),Fe=s(Z);T(Z);var Ie=h(Z,4),Le=s(Ie);T(Ie),T(Ne),T(Y);var Re=h(Y,2),Q=s(Re),ze=s(Q),Be=s(ze,!0);T(ze),C(2),T(Q);var $=h(Q,2),Ve=s($),He=s(Ve,!0);T(Ve),C(2),T($);var Ue=h($,2),We=s(Ue),Ge=s(We,!0);T(We),C(2),T(Ue),T(Re),T(Me),T(J);var Ke=h(J,2),qe=e=>{{let t=x(()=>u.data.emptyReason??`Run cleo nexus analyze to populate nexus.db.`);M(e,{title:`No code graph yet`,get subtitle(){return o(t)}})}},Je=e=>{var t=ye(),c=g(t),m=s(c),_=h(s(m),2);se(_,{get nodes(){return o(xe)},get edges(){return o(Se)},get clusters(){return o(Ce)},get visibleEdgeKinds(){return o(R)},get visibleNodeKinds(){return o(z)},get highlightNodeId(){return o(V)},get showClusterLabels(){return o(B)},onNodeClick:Oe,height:`calc(100vh - 220px)`,baseAlpha:.92});var y=h(_,2),w=h(s(y),2);D(w,20,()=>I,e=>e,(e,t)=>{let i=x(()=>oe[t]),c=x(()=>o(R).has(t));var l=le(),u=s(l);let p;var m=s(u);let g,_;var y=h(m,2),S=s(y,!0);T(y);var C=h(y,2),w=e=>{d(e,ce())};r(C,e=>{o(i).arrow&&e(w)}),T(u),T(l),a((e,r)=>{p=E(u,1,`legend-item svelte-1cjo1uu`,null,p,{active:o(c)}),b(u,`aria-pressed`,o(c)),b(u,`title`,e),g=E(m,1,`swatch svelte-1cjo1uu`,null,g,r),_=v(m,``,_,{background:o(i).color}),n(S,t)},[()=>ae(t),()=>({dashed:!!o(i).dash})]),f(`click`,u,()=>we(t)),d(e,l)}),T(w),T(y),T(m);var O=h(m,2),k=s(O);j(k,{elevation:1,padding:`cozy`,children:e=>{var t=_e(),c=s(t);ne(c,{type:`search`,label:`Search symbols`,placeholder:`Search symbols, classes, functions…`,oninput:Ee,get value(){return o(U)},set value(e){p(U,e,!0)}});var u=h(c,2),m=e=>{var t=fe();D(t,21,()=>o(W),e=>e.id,(e,t)=>{var i=de(),c=s(i),l=s(c),u=s(l,!0);T(l);var p=h(l,2),m=s(p),g=s(m,!0);T(m);var _=h(m,2),v=e=>{var r=ue(),i=s(r,!0);T(r),a(e=>n(i,e),[()=>o(t).filePath.split(`/`).slice(-2).join(`/`)]),d(e,r)};r(_,e=>{o(t).filePath&&e(v)}),T(p),T(c),T(i),a(()=>{n(u,o(t).label),n(g,o(t).kind)}),f(`click`,c,()=>De(o(t))),d(e,i)}),T(t),d(e,t)},_=e=>{var t=pe(),r=s(t);T(t),a(()=>n(r,`No matches for "${o(U)??``}"`)),d(e,t)},y=x(()=>o(U).trim().length>=2);r(u,e=>{o(W).length>0?e(m):o(y)&&e(_,1)});var w=h(u,2),E=h(s(w),4);ie(E,{children:e=>{var t=S();D(g(t),16,()=>L,e=>e,(e,t)=>{{let r=e=>{C();var r=l();a(()=>n(r,t)),d(e,r)},i=x(()=>o(z).has(t));re(e,{get active(){return o(i)},onclick:()=>Te(t),children:r,$$slots:{default:!0}})}}),d(e,t)},$$slots:{default:!0}});var O=h(E,2),k=s(O);te(k),C(2),T(O),T(w);var A=h(w,2);ie(h(s(A),4),{children:e=>{var t=S();D(g(t),16,()=>I,e=>e,(e,t)=>{{let r=e=>{C();var r=l();a(()=>n(r,t)),d(e,r)},i=x(()=>o(R).has(t));re(e,{get active(){return o(i)},onclick:()=>we(t),children:r,$$slots:{default:!0}})}}),d(e,t)},$$slots:{default:!0}}),T(A);var j=h(A,2),M=h(s(j),2);D(M,21,()=>o(ke),e=>e.id,(e,t)=>{var r=me(),c=s(r);let l;var u=h(s(c),2),f=s(u),m=s(f,!0);T(f);var g=h(f,2),_=s(g);T(g),T(u),C(2),T(c),T(r),a(e=>{b(c,`href`,e),l=v(c,``,l,{"--tint":o(t).color}),n(m,o(t).rawLabel),n(_,`${o(t).size??``} symbols · ${o(t).topKind??``}`)},[()=>`/code/community/${encodeURIComponent(o(t).id)}`]),i(`mouseenter`,c,()=>{p(V,o(t).id,!0)}),i(`focus`,c,()=>{p(V,o(t).id,!0)}),i(`mouseleave`,c,()=>{p(V,null)}),i(`blur`,c,()=>{p(V,null)}),d(e,r)}),T(M),T(j);var ae=h(j,4),oe=e=>{var t=ge(),i=h(s(t),2),c=s(i),l=s(c,!0);T(c);var u=h(c,2),f=s(u,!0);T(u);var p=h(u,2),m=e=>{var t=he(),r=s(t);T(t),a(()=>n(r,`${o(H).meta.memberCount??``} members`)),d(e,t)};r(p,e=>{typeof o(H).meta?.memberCount==`number`&&e(m)}),T(i),T(t),a(()=>{n(l,o(H).label),n(f,o(H).kind)}),d(e,t)};r(ae,e=>{o(H)&&e(oe)}),T(t),ee(k,()=>o(B),e=>p(B,e)),d(e,t)},$$slots:{default:!0}});var A=h(k,2),M=h(s(A),4);D(M,21,()=>u.data.communities,e=>e.id,(e,t)=>{var r=ve(),i=s(r),c=s(i),l=s(c,!0);T(c);var u=h(c,2),f=s(u);T(u),T(i),T(r),a(e=>{b(i,`href`,e),n(l,o(t).rawLabel),n(f,`${o(t).size??``} symbols · ${o(t).topKind??``}`)},[()=>`/code/community/${encodeURIComponent(o(t).id)}`]),d(e,r)}),T(M),T(A),T(O),T(c);var N=h(c,2),P=s(N);T(N),a(e=>n(P,`Aggregate cross-community relations: ${e??``} · Top-600 shown ·
2
2
  Dominant-type preserved`),[()=>K(o(Ae))]),d(e,t)};r(Ke,e=>{u.data.empty?e(qe):e(Je,-1)}),T(q),a((e,t,r,i)=>{n(Pe,`${e??``} symbols`),n(Fe,`${t??``} relations`),n(Le,`${u.data.communities.length??``} communities`),n(Be,r),n(He,i),n(Ge,u.data.communities.length)},[()=>K(u.data.totalNodes),()=>K(u.data.totalRelations),()=>K(u.data.totalNodes),()=>K(u.data.totalRelations)]),d(t,q),y()}u([`click`]);export{F as component};
@@ -1 +1 @@
1
- import{$ as e,A as t,B as n,D as r,E as i,F as a,H as o,I as s,J as c,K as l,M as u,N as d,O as f,P as p,Q as m,X as h,Y as g,Z as _,_ as v,at as y,d as b,et as x,k as S,lt as C,ot as w,ut as T,v as E,w as D,x as ee}from"../chunks/DGftG5oL.js";import{r as te}from"../chunks/B7XMzKvO.js";import"../chunks/B8WnZMYa.js";import{i as ne,r as re}from"../chunks/DZrdToAH.js";import{c as ie,s as ae}from"../chunks/CTLGzgdN.js";import{a as oe,i as se}from"../chunks/Cge6qiwc.js";import"../chunks/Dif6upEP.js";import{i as ce,n as le}from"../chunks/BOnrCZaR.js";var ue=t(`<li><button type="button"><span aria-hidden="true"></span> <span class="legend-label"> </span> <span class="legend-count svelte-1ewb8aw"> </span></button></li>`),de=t(`<span class="member-path svelte-1ewb8aw"> </span>`),fe=t(`<li><a class="member-row svelte-1ewb8aw"><span class="member-label svelte-1ewb8aw"> </span> <span class="member-meta svelte-1ewb8aw"><span class="member-kind svelte-1ewb8aw"> </span> <!> <span class="member-count svelte-1ewb8aw"> </span></span></a></li>`),pe=t(`<span class="selected-meta svelte-1ewb8aw"> </span>`),me=t(`<div class="panel-section svelte-1ewb8aw"><h2 class="panel-head svelte-1ewb8aw">Selected</h2> <div class="selected-card svelte-1ewb8aw"><span class="selected-label svelte-1ewb8aw"> </span> <span class="selected-kind svelte-1ewb8aw"> </span> <!></div></div>`),he=t(`<div class="panel-stack svelte-1ewb8aw"><div class="panel-section svelte-1ewb8aw"><h2 class="panel-head svelte-1ewb8aw">Member kinds</h2> <!></div> <div class="panel-section svelte-1ewb8aw"><h2 class="panel-head svelte-1ewb8aw">Top by callers</h2> <ol class="member-list svelte-1ewb8aw"></ol></div> <!></div>`),ge=t(`<section class="community-view svelte-1ewb8aw" aria-labelledby="community-title"><header class="page-head svelte-1ewb8aw"><!> <div class="title-row svelte-1ewb8aw"><div><span class="eyebrow svelte-1ewb8aw">NEXUS · Community</span> <h1 id="community-title" class="svelte-1ewb8aw"> </h1> <p class="subtitle svelte-1ewb8aw"><span> </span> <span class="sep svelte-1ewb8aw" aria-hidden="true">·</span> <span> </span> <span class="sep svelte-1ewb8aw" aria-hidden="true">·</span> <span>top kind: <span class="kind-badge svelte-1ewb8aw"> </span></span></p></div></div></header> <div class="workbench svelte-1ewb8aw"><div class="stage svelte-1ewb8aw"><div class="stage-scanlines svelte-1ewb8aw" aria-hidden="true"></div> <!> <footer class="legend-dock svelte-1ewb8aw" aria-label="Edge legend"><span class="legend-eyebrow svelte-1ewb8aw"> </span> <ul class="svelte-1ewb8aw"></ul></footer></div> <aside class="side-panel svelte-1ewb8aw" aria-label="Community controls"><!></aside></div></section>`);function O(t,d){w(d,!0);let O=x(()=>le(d.data.nodes.map(e=>({id:e.id,label:e.label,kind:e.kind,filePath:e.filePath,callerCount:e.callerCount,communityId:d.data.communityId})),d.data.edges.map(e=>({source:e.source,target:e.target,type:e.type})))),k=x(()=>s(O).nodes),A=x(()=>s(O).edges),_e=x(()=>s(O).clusters),j=[`calls`,`extends`,`implements`,`has_method`,`has_property`,`defines`,`imports`,`accesses`,`references`],M=[`class`,`interface`,`function`,`method`,`enum`,`type_alias`,`file`],N=e(_(new Set(j))),P=e(_(new Set(M))),F=e(null),I=e(null);function ve(e){let t=new Set(s(N));t.has(e)?t.delete(e):t.add(e),m(N,t,!0)}function ye(e){let t=new Set(s(P));t.has(e)?t.delete(e):t.add(e),m(P,t,!0)}function be(e){m(I,e,!0),e.kind!==`community`&&te(`/code/symbol/${encodeURIComponent(e.label)}`)}let xe=x(()=>[...d.data.nodes].sort((e,t)=>t.callerCount-e.callerCount).slice(0,20));function Se(e){return e.split(`/`).slice(-2).join(`/`)}let Ce=x(()=>{let e=new Map;for(let t of s(A))e.set(t.kind,(e.get(t.kind)??0)+1);return e}),we=x(()=>{let e=new Map;for(let t of s(k))e.set(t.kind,(e.get(t.kind)??0)+1);return e});var L=ge();ee(`1ewb8aw`,e=>{n(()=>{l.title=`${d.data.communityLabel??``} — Code — CLEO Studio`})});var R=c(L),z=c(R);{let e=x(()=>[{label:`Studio`,href:`/`},{label:`Code`,href:`/code`},{label:d.data.communityLabel}]);ne(z,{get items(){return s(e)}})}var B=h(z,2),V=c(B),H=h(c(V),2),Te=c(H,!0);T(H);var U=h(H,2),W=c(U),Ee=c(W);T(W);var G=h(W,4),De=c(G);T(G);var K=h(G,4),q=h(c(K)),Oe=c(q,!0);T(q),T(K),T(U),T(V),T(B),T(R);var J=h(R,2),Y=c(J),X=h(c(Y),2);ce(X,{get nodes(){return s(k)},get edges(){return s(A)},get clusters(){return s(_e)},get visibleEdgeKinds(){return s(N)},get visibleNodeKinds(){return s(P)},get highlightNodeId(){return s(F)},showClusterLabels:!1,onNodeClick:be,height:`calc(100vh - 220px)`,baseAlpha:.92});var Z=h(X,2),Q=c(Z),ke=c(Q);T(Q);var Ae=h(Q,2);D(Ae,20,()=>j,e=>e,(e,t)=>{let n=x(()=>se[t]),i=x(()=>s(N).has(t)),a=x(()=>s(Ce).get(t)??0);var l=ue(),u=c(l);let d;var m=c(u);let g,_;var y=h(m,2),S=c(y,!0);T(y);var C=h(y,2),w=c(C,!0);T(C),T(u),T(l),o((e,o)=>{d=E(u,1,`legend-item svelte-1ewb8aw`,null,d,{active:s(i),disabled:s(a)===0}),u.disabled=s(a)===0,b(u,`aria-pressed`,s(i)),b(u,`title`,e),g=E(m,1,`swatch svelte-1ewb8aw`,null,g,o),_=v(m,``,_,{background:s(n).color}),r(S,t),r(w,s(a))},[()=>oe(t),()=>({dashed:!!s(n).dash})]),p(`click`,u,()=>ve(t)),f(e,l)}),T(Ae),T(Z),T(Y);var $=h(Y,2);re(c($),{elevation:1,padding:`cozy`,children:e=>{var t=he(),n=c(t);ae(h(c(n),2),{children:e=>{var t=S();D(g(t),16,()=>M,e=>e,(e,t)=>{let n=x(()=>s(we).get(t)??0);{let i=e=>{C();var n=u();o(()=>r(n,t)),f(e,n)},a=x(()=>s(P).has(t)),c=x(()=>s(n)===0);ie(e,{get active(){return s(a)},get disabled(){return s(c)},get count(){return s(n)},onclick:()=>ye(t),children:i,$$slots:{default:!0}})}}),f(e,t)},$$slots:{default:!0}}),T(n);var l=h(n,2),d=h(c(l),2);D(d,21,()=>s(xe),e=>e.id,(e,t)=>{var n=fe(),l=c(n),u=c(l),d=c(u,!0);T(u);var p=h(u,2),g=c(p),_=c(g,!0);T(g);var v=h(g,2),y=e=>{var n=de(),i=c(n,!0);T(n),o(e=>r(i,e),[()=>Se(s(t).filePath)]),f(e,n)};i(v,e=>{s(t).filePath&&e(y)});var x=h(v,2),S=c(x);T(x),T(p),T(l),T(n),o(e=>{b(l,`href`,`/code/symbol/${e??``}`),r(d,s(t).label),r(_,s(t).kind),r(S,`${s(t).callerCount??``}×`)},[()=>encodeURIComponent(s(t).label)]),a(`mouseenter`,l,()=>{m(F,s(t).id,!0)}),a(`mouseleave`,l,()=>{m(F,null)}),a(`focus`,l,()=>{m(F,s(t).id,!0)}),a(`blur`,l,()=>{m(F,null)}),f(e,n)}),T(d),T(l);var p=h(l,2),_=e=>{var t=me(),n=h(c(t),2),a=c(n),l=c(a,!0);T(a);var u=h(a,2),d=c(u,!0);T(u);var p=h(u,2),m=e=>{var t=pe(),n=c(t,!0);T(t),o(e=>r(n,e),[()=>Se(s(I).meta.filePath)]),f(e,t)};i(p,e=>{typeof s(I).meta?.filePath==`string`&&e(m)}),T(n),T(t),o(()=>{r(l,s(I).label),r(d,s(I).kind)}),f(e,t)};i(p,e=>{s(I)&&e(_)}),T(t),f(e,t)},$$slots:{default:!0}}),T($),T(J),T(L),o(()=>{r(Te,d.data.communityLabel),r(Ee,`${d.data.summary.memberCount??``} members`),r(De,`${d.data.summary.internalEdgeCount??``} internal edges`),r(Oe,d.data.summary.topKind),r(ke,`EDGES (${d.data.summary.internalEdgeCount??``})`)}),f(t,L),y()}d([`click`]);export{O as component};
1
+ import{$ as e,A as t,B as n,D as r,E as i,F as a,H as o,I as s,J as c,K as l,M as u,N as d,O as f,P as p,Q as m,X as h,Y as g,Z as _,_ as v,at as y,d as b,et as x,k as S,lt as C,ot as w,ut as T,v as E,w as D,x as ee}from"../chunks/DGftG5oL.js";import{r as te}from"../chunks/COEVVgGn.js";import"../chunks/B8WnZMYa.js";import{i as ne,r as re}from"../chunks/DZrdToAH.js";import{c as ie,s as ae}from"../chunks/CTLGzgdN.js";import{a as oe,i as se}from"../chunks/Cge6qiwc.js";import"../chunks/D2NG8h_r.js";import{i as ce,n as le}from"../chunks/BOnrCZaR.js";var ue=t(`<li><button type="button"><span aria-hidden="true"></span> <span class="legend-label"> </span> <span class="legend-count svelte-1ewb8aw"> </span></button></li>`),de=t(`<span class="member-path svelte-1ewb8aw"> </span>`),fe=t(`<li><a class="member-row svelte-1ewb8aw"><span class="member-label svelte-1ewb8aw"> </span> <span class="member-meta svelte-1ewb8aw"><span class="member-kind svelte-1ewb8aw"> </span> <!> <span class="member-count svelte-1ewb8aw"> </span></span></a></li>`),pe=t(`<span class="selected-meta svelte-1ewb8aw"> </span>`),me=t(`<div class="panel-section svelte-1ewb8aw"><h2 class="panel-head svelte-1ewb8aw">Selected</h2> <div class="selected-card svelte-1ewb8aw"><span class="selected-label svelte-1ewb8aw"> </span> <span class="selected-kind svelte-1ewb8aw"> </span> <!></div></div>`),he=t(`<div class="panel-stack svelte-1ewb8aw"><div class="panel-section svelte-1ewb8aw"><h2 class="panel-head svelte-1ewb8aw">Member kinds</h2> <!></div> <div class="panel-section svelte-1ewb8aw"><h2 class="panel-head svelte-1ewb8aw">Top by callers</h2> <ol class="member-list svelte-1ewb8aw"></ol></div> <!></div>`),ge=t(`<section class="community-view svelte-1ewb8aw" aria-labelledby="community-title"><header class="page-head svelte-1ewb8aw"><!> <div class="title-row svelte-1ewb8aw"><div><span class="eyebrow svelte-1ewb8aw">NEXUS · Community</span> <h1 id="community-title" class="svelte-1ewb8aw"> </h1> <p class="subtitle svelte-1ewb8aw"><span> </span> <span class="sep svelte-1ewb8aw" aria-hidden="true">·</span> <span> </span> <span class="sep svelte-1ewb8aw" aria-hidden="true">·</span> <span>top kind: <span class="kind-badge svelte-1ewb8aw"> </span></span></p></div></div></header> <div class="workbench svelte-1ewb8aw"><div class="stage svelte-1ewb8aw"><div class="stage-scanlines svelte-1ewb8aw" aria-hidden="true"></div> <!> <footer class="legend-dock svelte-1ewb8aw" aria-label="Edge legend"><span class="legend-eyebrow svelte-1ewb8aw"> </span> <ul class="svelte-1ewb8aw"></ul></footer></div> <aside class="side-panel svelte-1ewb8aw" aria-label="Community controls"><!></aside></div></section>`);function O(t,d){w(d,!0);let O=x(()=>le(d.data.nodes.map(e=>({id:e.id,label:e.label,kind:e.kind,filePath:e.filePath,callerCount:e.callerCount,communityId:d.data.communityId})),d.data.edges.map(e=>({source:e.source,target:e.target,type:e.type})))),k=x(()=>s(O).nodes),A=x(()=>s(O).edges),_e=x(()=>s(O).clusters),j=[`calls`,`extends`,`implements`,`has_method`,`has_property`,`defines`,`imports`,`accesses`,`references`],M=[`class`,`interface`,`function`,`method`,`enum`,`type_alias`,`file`],N=e(_(new Set(j))),P=e(_(new Set(M))),F=e(null),I=e(null);function ve(e){let t=new Set(s(N));t.has(e)?t.delete(e):t.add(e),m(N,t,!0)}function ye(e){let t=new Set(s(P));t.has(e)?t.delete(e):t.add(e),m(P,t,!0)}function be(e){m(I,e,!0),e.kind!==`community`&&te(`/code/symbol/${encodeURIComponent(e.label)}`)}let xe=x(()=>[...d.data.nodes].sort((e,t)=>t.callerCount-e.callerCount).slice(0,20));function Se(e){return e.split(`/`).slice(-2).join(`/`)}let Ce=x(()=>{let e=new Map;for(let t of s(A))e.set(t.kind,(e.get(t.kind)??0)+1);return e}),we=x(()=>{let e=new Map;for(let t of s(k))e.set(t.kind,(e.get(t.kind)??0)+1);return e});var L=ge();ee(`1ewb8aw`,e=>{n(()=>{l.title=`${d.data.communityLabel??``} — Code — CLEO Studio`})});var R=c(L),z=c(R);{let e=x(()=>[{label:`Studio`,href:`/`},{label:`Code`,href:`/code`},{label:d.data.communityLabel}]);ne(z,{get items(){return s(e)}})}var B=h(z,2),V=c(B),H=h(c(V),2),Te=c(H,!0);T(H);var U=h(H,2),W=c(U),Ee=c(W);T(W);var G=h(W,4),De=c(G);T(G);var K=h(G,4),q=h(c(K)),Oe=c(q,!0);T(q),T(K),T(U),T(V),T(B),T(R);var J=h(R,2),Y=c(J),X=h(c(Y),2);ce(X,{get nodes(){return s(k)},get edges(){return s(A)},get clusters(){return s(_e)},get visibleEdgeKinds(){return s(N)},get visibleNodeKinds(){return s(P)},get highlightNodeId(){return s(F)},showClusterLabels:!1,onNodeClick:be,height:`calc(100vh - 220px)`,baseAlpha:.92});var Z=h(X,2),Q=c(Z),ke=c(Q);T(Q);var Ae=h(Q,2);D(Ae,20,()=>j,e=>e,(e,t)=>{let n=x(()=>se[t]),i=x(()=>s(N).has(t)),a=x(()=>s(Ce).get(t)??0);var l=ue(),u=c(l);let d;var m=c(u);let g,_;var y=h(m,2),S=c(y,!0);T(y);var C=h(y,2),w=c(C,!0);T(C),T(u),T(l),o((e,o)=>{d=E(u,1,`legend-item svelte-1ewb8aw`,null,d,{active:s(i),disabled:s(a)===0}),u.disabled=s(a)===0,b(u,`aria-pressed`,s(i)),b(u,`title`,e),g=E(m,1,`swatch svelte-1ewb8aw`,null,g,o),_=v(m,``,_,{background:s(n).color}),r(S,t),r(w,s(a))},[()=>oe(t),()=>({dashed:!!s(n).dash})]),p(`click`,u,()=>ve(t)),f(e,l)}),T(Ae),T(Z),T(Y);var $=h(Y,2);re(c($),{elevation:1,padding:`cozy`,children:e=>{var t=he(),n=c(t);ae(h(c(n),2),{children:e=>{var t=S();D(g(t),16,()=>M,e=>e,(e,t)=>{let n=x(()=>s(we).get(t)??0);{let i=e=>{C();var n=u();o(()=>r(n,t)),f(e,n)},a=x(()=>s(P).has(t)),c=x(()=>s(n)===0);ie(e,{get active(){return s(a)},get disabled(){return s(c)},get count(){return s(n)},onclick:()=>ye(t),children:i,$$slots:{default:!0}})}}),f(e,t)},$$slots:{default:!0}}),T(n);var l=h(n,2),d=h(c(l),2);D(d,21,()=>s(xe),e=>e.id,(e,t)=>{var n=fe(),l=c(n),u=c(l),d=c(u,!0);T(u);var p=h(u,2),g=c(p),_=c(g,!0);T(g);var v=h(g,2),y=e=>{var n=de(),i=c(n,!0);T(n),o(e=>r(i,e),[()=>Se(s(t).filePath)]),f(e,n)};i(v,e=>{s(t).filePath&&e(y)});var x=h(v,2),S=c(x);T(x),T(p),T(l),T(n),o(e=>{b(l,`href`,`/code/symbol/${e??``}`),r(d,s(t).label),r(_,s(t).kind),r(S,`${s(t).callerCount??``}×`)},[()=>encodeURIComponent(s(t).label)]),a(`mouseenter`,l,()=>{m(F,s(t).id,!0)}),a(`mouseleave`,l,()=>{m(F,null)}),a(`focus`,l,()=>{m(F,s(t).id,!0)}),a(`blur`,l,()=>{m(F,null)}),f(e,n)}),T(d),T(l);var p=h(l,2),_=e=>{var t=me(),n=h(c(t),2),a=c(n),l=c(a,!0);T(a);var u=h(a,2),d=c(u,!0);T(u);var p=h(u,2),m=e=>{var t=pe(),n=c(t,!0);T(t),o(e=>r(n,e),[()=>Se(s(I).meta.filePath)]),f(e,t)};i(p,e=>{typeof s(I).meta?.filePath==`string`&&e(m)}),T(n),T(t),o(()=>{r(l,s(I).label),r(d,s(I).kind)}),f(e,t)};i(p,e=>{s(I)&&e(_)}),T(t),f(e,t)},$$slots:{default:!0}}),T($),T(J),T(L),o(()=>{r(Te,d.data.communityLabel),r(Ee,`${d.data.summary.memberCount??``} members`),r(De,`${d.data.summary.internalEdgeCount??``} internal edges`),r(Oe,d.data.summary.topKind),r(ke,`EDGES (${d.data.summary.internalEdgeCount??``})`)}),f(t,L),y()}d([`click`]);export{O as component};
@@ -1 +1 @@
1
- import{$ as e,A as t,D as n,E as r,H as i,I as a,J as o,K as s,N as c,O as l,P as u,Q as d,T as f,V as p,X as m,Y as h,at as g,et as _,ft as v,ot as y,ut as b,v as ee,w as x,x as S}from"../chunks/DGftG5oL.js";import{r as C}from"../chunks/B7XMzKvO.js";import"../chunks/B8WnZMYa.js";import{i as w,r as T}from"../chunks/DZrdToAH.js";import{o as E}from"../chunks/CTLGzgdN.js";import"../chunks/Dif6upEP.js";import{i as D,r as O}from"../chunks/BOnrCZaR.js";var k=t(`<span class="sep svelte-1c4j9m0" aria-hidden="true">·</span> <span class="flow-path svelte-1c4j9m0"> </span>`,1),A=t(`<li><button type="button"><span class="flow-label svelte-1c4j9m0"> </span> <span class="flow-sub svelte-1c4j9m0"><span> </span> <!></span></button></li>`),j=t(`<div class="group svelte-1c4j9m0"><h2 class="group-head svelte-1c4j9m0"><span class="kind-mark svelte-1c4j9m0" aria-hidden="true"></span> <span class="group-count svelte-1c4j9m0"> </span></h2> <ul class="svelte-1c4j9m0"></ul></div>`),M=t(`<div class="list-stack svelte-1c4j9m0"></div>`),N=t(`<div class="placeholder svelte-1c4j9m0">Select an entry-point to trace.</div>`),P=t(`<span class="group-count svelte-1c4j9m0"> </span>`),F=t('<p class="timeline-empty svelte-1c4j9m0">This flow has no explicit `step_in_process` ordering — the canvas above shows the BFS reach set instead.</p>'),I=t(`<li class="timeline-step svelte-1c4j9m0"><span class="step-idx svelte-1c4j9m0"> </span> <span class="step-arrow svelte-1c4j9m0" aria-hidden="true">→</span> <span class="step-body svelte-1c4j9m0"><span class="step-src svelte-1c4j9m0"> </span> <span class="step-sep svelte-1c4j9m0" aria-hidden="true">⟶</span> <span class="step-dst svelte-1c4j9m0"> </span> <span class="step-type svelte-1c4j9m0"> </span></span></li>`),L=t(`<ol class="timeline-list svelte-1c4j9m0"></ol>`),R=t(`<div class="workbench svelte-1c4j9m0"><aside class="flow-list svelte-1c4j9m0" aria-label="Entry-point list"><!></aside> <div class="flow-stage svelte-1c4j9m0"><div class="stage svelte-1c4j9m0" aria-label="Selected flow canvas"><div class="stage-scanlines svelte-1c4j9m0" aria-hidden="true"></div> <!></div> <div class="timeline svelte-1c4j9m0" aria-label="Step timeline"><h2 class="group-head svelte-1c4j9m0"><span class="kind-mark kind-mark-timeline svelte-1c4j9m0" aria-hidden="true"></span> Timeline <!></h2> <!></div></div></div>`),z=t(`<section class="flows-view svelte-1c4j9m0" aria-labelledby="flows-title"><header class="page-head svelte-1c4j9m0"><!> <div class="title-row svelte-1c4j9m0"><div><span class="eyebrow svelte-1c4j9m0">NEXUS · Flows</span> <h1 id="flows-title" class="svelte-1c4j9m0">Execution Flows</h1> <p class="subtitle svelte-1c4j9m0"> </p></div></div></header> <!></section>`);function B(t,c){y(c,!0);let B=e(null),V=_(()=>{let e=c.data.flows;if(e.length===0)return null;let t=a(B)??e[0].id;return e.find(e=>e.id===t)??e[0]}),H=_(()=>new Set(a(V)?.reachIds??[])),U=_(()=>a(V)?{nodes:c.data.nodes.filter(e=>a(H).has(e.id)).map(e=>({id:e.id,substrate:`nexus`,kind:e.kind||`symbol`,label:e.label,category:e.id===a(V).id?`entry`:`reached`,weight:e.id===a(V).id?1:.35,meta:{filePath:e.filePath}})),edges:c.data.edges.filter(e=>a(H).has(e.source)&&a(H).has(e.target)&&e.source!==e.target).map((e,t)=>({id:`flow-${t}-${e.source}-${e.target}`,source:e.source,target:e.target,kind:O(e.type),directional:!0}))}:{nodes:[],edges:[]}),W=_(()=>{if(!a(V))return[];let e=c.data.edges.filter(e=>a(H).has(e.source)&&a(H).has(e.target)&&typeof e.stepIndex==`number`).sort((e,t)=>(e.stepIndex??0)-(t.stepIndex??0)),t=e=>c.data.nodes.find(t=>t.id===e)?.label??e;return e.map(e=>({source:t(e.source),target:t(e.target),type:e.type,stepIndex:e.stepIndex??0}))}),G=_(()=>{let e=new Map;for(let t of c.data.flows){let n=t.kind||`other`,r=e.get(n)??[];r.push(t),e.set(n,r)}return[...e.entries()].sort((e,t)=>t[1].length-e[1].length)});function K(e){e.id!==a(V)?.id&&C(`/code/symbol/${encodeURIComponent(e.label)}`)}let q=new Set([`calls`,`defines`,`imports`,`extends`,`implements`,`references`,`has_method`]);var J=z();S(`1c4j9m0`,e=>{p(()=>{s.title=`Execution Flows — Code — CLEO Studio`})});var Y=o(J),X=o(Y);w(X,{items:[{label:`Studio`,href:`/`},{label:`Code`,href:`/code`},{label:`Flows`}]});var Z=m(X,2),Q=o(Z),$=m(o(Q),4),te=o($);b($),b(Q),b(Z),b(Y);var ne=m(Y,2),re=e=>{E(e,{title:`No flows yet`,subtitle:`Nexus hasn't captured any entry-points. Run cleo nexus analyze and ensure your project exposes entry-point symbols (functions with entry_point_of edges or high-out-degree call roots).`})},ie=e=>{var t=R(),s=o(t);T(o(s),{elevation:1,padding:`compact`,children:e=>{var t=M();x(t,21,()=>a(G),([e,t])=>e,(e,t)=>{var s=_(()=>v(a(t),2));let c=()=>a(s)[0],f=()=>a(s)[1];var p=j(),g=o(p),y=m(o(g)),S=m(y),C=o(S,!0);b(S),b(g);var w=m(g,2);x(w,21,f,e=>e.id,(e,t)=>{var s=A(),c=o(s);let f;var p=o(c),g=o(p,!0);b(p);var _=m(p,2),v=o(_),y=o(v);b(v);var x=m(v,2),S=e=>{var r=k(),s=m(h(r),2),c=o(s,!0);b(s),i(e=>n(c,e),[()=>a(t).filePath.split(`/`).slice(-2).join(`/`)]),l(e,r)};r(x,e=>{a(t).filePath&&e(S)}),b(_),b(c),b(s),i(()=>{f=ee(c,1,`flow-item svelte-1c4j9m0`,null,f,{active:a(B)===a(t).id}),n(g,a(t).label),n(y,`${a(t).reachIds.length-1} fanout`)}),u(`click`,c,()=>{d(B,a(t).id,!0)}),l(e,s)}),b(w),b(p),i(()=>{n(y,` ${c()??``} `),n(C,f().length)}),l(e,p)}),b(t),l(e,t)},$$slots:{default:!0}}),b(s);var c=m(s,2),p=o(c),g=m(o(p),2),y=e=>{D(e,{get nodes(){return a(U).nodes},get edges(){return a(U).edges},get visibleEdgeKinds(){return q},showClusterLabels:!1,onNodeClick:K,get highlightNodeId(){return a(V).id},height:`calc(100vh - 440px)`,baseAlpha:.92})},S=e=>{l(e,N())};r(g,e=>{a(V)?e(y):e(S,-1)}),b(p);var C=m(p,2),w=o(C),E=m(o(w),2),O=e=>{var t=P(),r=o(t,!0);b(t),i(()=>n(r,a(W).length)),l(e,t)};r(E,e=>{a(W).length>0&&e(O)}),b(w);var z=m(w,2),H=e=>{l(e,F())},J=e=>{var t=L();x(t,21,()=>a(W),f,(e,t)=>{var r=I(),s=o(r),c=o(s,!0);b(s);var u=m(s,4),d=o(u),f=o(d,!0);b(d);var p=m(d,4),h=o(p,!0);b(p);var g=m(p,2),_=o(g,!0);b(g),b(u),b(r),i(()=>{n(c,a(t).stepIndex),n(f,a(t).source),n(h,a(t).target),n(_,a(t).type)}),l(e,r)}),b(t),l(e,t)};r(z,e=>{a(W).length===0?e(H):e(J,-1)}),b(C),b(c),b(t),l(e,t)};r(ne,e=>{c.data.empty?e(re):e(ie,-1)}),b(J),i(()=>n(te,`${c.data.flows.length??``} entry-points · ${c.data.hasProcesses?`process-annotated`:`call-graph derived`}`)),l(t,J),g()}c([`click`]);export{B as component};
1
+ import{$ as e,A as t,D as n,E as r,H as i,I as a,J as o,K as s,N as c,O as l,P as u,Q as d,T as f,V as p,X as m,Y as h,at as g,et as _,ft as v,ot as y,ut as b,v as ee,w as x,x as S}from"../chunks/DGftG5oL.js";import{r as C}from"../chunks/COEVVgGn.js";import"../chunks/B8WnZMYa.js";import{i as w,r as T}from"../chunks/DZrdToAH.js";import{o as E}from"../chunks/CTLGzgdN.js";import"../chunks/D2NG8h_r.js";import{i as D,r as O}from"../chunks/BOnrCZaR.js";var k=t(`<span class="sep svelte-1c4j9m0" aria-hidden="true">·</span> <span class="flow-path svelte-1c4j9m0"> </span>`,1),A=t(`<li><button type="button"><span class="flow-label svelte-1c4j9m0"> </span> <span class="flow-sub svelte-1c4j9m0"><span> </span> <!></span></button></li>`),j=t(`<div class="group svelte-1c4j9m0"><h2 class="group-head svelte-1c4j9m0"><span class="kind-mark svelte-1c4j9m0" aria-hidden="true"></span> <span class="group-count svelte-1c4j9m0"> </span></h2> <ul class="svelte-1c4j9m0"></ul></div>`),M=t(`<div class="list-stack svelte-1c4j9m0"></div>`),N=t(`<div class="placeholder svelte-1c4j9m0">Select an entry-point to trace.</div>`),P=t(`<span class="group-count svelte-1c4j9m0"> </span>`),F=t('<p class="timeline-empty svelte-1c4j9m0">This flow has no explicit `step_in_process` ordering — the canvas above shows the BFS reach set instead.</p>'),I=t(`<li class="timeline-step svelte-1c4j9m0"><span class="step-idx svelte-1c4j9m0"> </span> <span class="step-arrow svelte-1c4j9m0" aria-hidden="true">→</span> <span class="step-body svelte-1c4j9m0"><span class="step-src svelte-1c4j9m0"> </span> <span class="step-sep svelte-1c4j9m0" aria-hidden="true">⟶</span> <span class="step-dst svelte-1c4j9m0"> </span> <span class="step-type svelte-1c4j9m0"> </span></span></li>`),L=t(`<ol class="timeline-list svelte-1c4j9m0"></ol>`),R=t(`<div class="workbench svelte-1c4j9m0"><aside class="flow-list svelte-1c4j9m0" aria-label="Entry-point list"><!></aside> <div class="flow-stage svelte-1c4j9m0"><div class="stage svelte-1c4j9m0" aria-label="Selected flow canvas"><div class="stage-scanlines svelte-1c4j9m0" aria-hidden="true"></div> <!></div> <div class="timeline svelte-1c4j9m0" aria-label="Step timeline"><h2 class="group-head svelte-1c4j9m0"><span class="kind-mark kind-mark-timeline svelte-1c4j9m0" aria-hidden="true"></span> Timeline <!></h2> <!></div></div></div>`),z=t(`<section class="flows-view svelte-1c4j9m0" aria-labelledby="flows-title"><header class="page-head svelte-1c4j9m0"><!> <div class="title-row svelte-1c4j9m0"><div><span class="eyebrow svelte-1c4j9m0">NEXUS · Flows</span> <h1 id="flows-title" class="svelte-1c4j9m0">Execution Flows</h1> <p class="subtitle svelte-1c4j9m0"> </p></div></div></header> <!></section>`);function B(t,c){y(c,!0);let B=e(null),V=_(()=>{let e=c.data.flows;if(e.length===0)return null;let t=a(B)??e[0].id;return e.find(e=>e.id===t)??e[0]}),H=_(()=>new Set(a(V)?.reachIds??[])),U=_(()=>a(V)?{nodes:c.data.nodes.filter(e=>a(H).has(e.id)).map(e=>({id:e.id,substrate:`nexus`,kind:e.kind||`symbol`,label:e.label,category:e.id===a(V).id?`entry`:`reached`,weight:e.id===a(V).id?1:.35,meta:{filePath:e.filePath}})),edges:c.data.edges.filter(e=>a(H).has(e.source)&&a(H).has(e.target)&&e.source!==e.target).map((e,t)=>({id:`flow-${t}-${e.source}-${e.target}`,source:e.source,target:e.target,kind:O(e.type),directional:!0}))}:{nodes:[],edges:[]}),W=_(()=>{if(!a(V))return[];let e=c.data.edges.filter(e=>a(H).has(e.source)&&a(H).has(e.target)&&typeof e.stepIndex==`number`).sort((e,t)=>(e.stepIndex??0)-(t.stepIndex??0)),t=e=>c.data.nodes.find(t=>t.id===e)?.label??e;return e.map(e=>({source:t(e.source),target:t(e.target),type:e.type,stepIndex:e.stepIndex??0}))}),G=_(()=>{let e=new Map;for(let t of c.data.flows){let n=t.kind||`other`,r=e.get(n)??[];r.push(t),e.set(n,r)}return[...e.entries()].sort((e,t)=>t[1].length-e[1].length)});function K(e){e.id!==a(V)?.id&&C(`/code/symbol/${encodeURIComponent(e.label)}`)}let q=new Set([`calls`,`defines`,`imports`,`extends`,`implements`,`references`,`has_method`]);var J=z();S(`1c4j9m0`,e=>{p(()=>{s.title=`Execution Flows — Code — CLEO Studio`})});var Y=o(J),X=o(Y);w(X,{items:[{label:`Studio`,href:`/`},{label:`Code`,href:`/code`},{label:`Flows`}]});var Z=m(X,2),Q=o(Z),$=m(o(Q),4),te=o($);b($),b(Q),b(Z),b(Y);var ne=m(Y,2),re=e=>{E(e,{title:`No flows yet`,subtitle:`Nexus hasn't captured any entry-points. Run cleo nexus analyze and ensure your project exposes entry-point symbols (functions with entry_point_of edges or high-out-degree call roots).`})},ie=e=>{var t=R(),s=o(t);T(o(s),{elevation:1,padding:`compact`,children:e=>{var t=M();x(t,21,()=>a(G),([e,t])=>e,(e,t)=>{var s=_(()=>v(a(t),2));let c=()=>a(s)[0],f=()=>a(s)[1];var p=j(),g=o(p),y=m(o(g)),S=m(y),C=o(S,!0);b(S),b(g);var w=m(g,2);x(w,21,f,e=>e.id,(e,t)=>{var s=A(),c=o(s);let f;var p=o(c),g=o(p,!0);b(p);var _=m(p,2),v=o(_),y=o(v);b(v);var x=m(v,2),S=e=>{var r=k(),s=m(h(r),2),c=o(s,!0);b(s),i(e=>n(c,e),[()=>a(t).filePath.split(`/`).slice(-2).join(`/`)]),l(e,r)};r(x,e=>{a(t).filePath&&e(S)}),b(_),b(c),b(s),i(()=>{f=ee(c,1,`flow-item svelte-1c4j9m0`,null,f,{active:a(B)===a(t).id}),n(g,a(t).label),n(y,`${a(t).reachIds.length-1} fanout`)}),u(`click`,c,()=>{d(B,a(t).id,!0)}),l(e,s)}),b(w),b(p),i(()=>{n(y,` ${c()??``} `),n(C,f().length)}),l(e,p)}),b(t),l(e,t)},$$slots:{default:!0}}),b(s);var c=m(s,2),p=o(c),g=m(o(p),2),y=e=>{D(e,{get nodes(){return a(U).nodes},get edges(){return a(U).edges},get visibleEdgeKinds(){return q},showClusterLabels:!1,onNodeClick:K,get highlightNodeId(){return a(V).id},height:`calc(100vh - 440px)`,baseAlpha:.92})},S=e=>{l(e,N())};r(g,e=>{a(V)?e(y):e(S,-1)}),b(p);var C=m(p,2),w=o(C),E=m(o(w),2),O=e=>{var t=P(),r=o(t,!0);b(t),i(()=>n(r,a(W).length)),l(e,t)};r(E,e=>{a(W).length>0&&e(O)}),b(w);var z=m(w,2),H=e=>{l(e,F())},J=e=>{var t=L();x(t,21,()=>a(W),f,(e,t)=>{var r=I(),s=o(r),c=o(s,!0);b(s);var u=m(s,4),d=o(u),f=o(d,!0);b(d);var p=m(d,4),h=o(p,!0);b(p);var g=m(p,2),_=o(g,!0);b(g),b(u),b(r),i(()=>{n(c,a(t).stepIndex),n(f,a(t).source),n(h,a(t).target),n(_,a(t).type)}),l(e,r)}),b(t),l(e,t)};r(z,e=>{a(W).length===0?e(H):e(J,-1)}),b(C),b(c),b(t),l(e,t)};r(ne,e=>{c.data.empty?e(re):e(ie,-1)}),b(J),i(()=>n(te,`${c.data.flows.length??``} entry-points · ${c.data.hasProcesses?`process-annotated`:`call-graph derived`}`)),l(t,J),g()}c([`click`]);export{B as component};
@@ -1 +1 @@
1
- import{$ as e,A as t,B as n,D as r,E as i,H as a,I as o,J as s,K as c,N as l,O as u,P as d,Q as f,X as p,Y as m,Z as h,_ as g,at as _,d as v,et as y,lt as b,ot as x,ut as S,v as C,w,x as T}from"../chunks/DGftG5oL.js";import{r as E}from"../chunks/B7XMzKvO.js";import"../chunks/B8WnZMYa.js";import{i as ee,r as te,t as ne}from"../chunks/DZrdToAH.js";import{n as re}from"../chunks/CTLGzgdN.js";import{a as ie,i as ae}from"../chunks/Cge6qiwc.js";import"../chunks/Dif6upEP.js";import{i as oe,r as se}from"../chunks/BOnrCZaR.js";var ce=t(`<span class="sep svelte-16icikf" aria-hidden="true">·</span> <span class="path svelte-16icikf"> </span>`,1),le=t(`<span class="kind-badge svelte-16icikf"> </span> <!>`,1),ue=t(`<div class="hop-rings svelte-16icikf" aria-hidden="true"><span class="ring ring-1 svelte-16icikf"></span> <span class="ring ring-2 svelte-16icikf"></span></div>`),de=t(`<li><button type="button"><span aria-hidden="true"></span> <span> </span> <span class="legend-count svelte-16icikf"> </span></button></li>`),fe=t(`<p class="panel-hint svelte-16icikf">Center = amber · hop-1 = blue · hop-2 = slate.</p>`),pe=t(`<p class="panel-hint svelte-16icikf">Substrate-native palette — matches macro + community views.</p>`),me=t(`<li><a class="chip chip-caller svelte-16icikf"><span class="chip-label svelte-16icikf"> </span> <span class="chip-kind svelte-16icikf"> </span></a></li>`),he=t(`<div class="panel-section svelte-16icikf"><h2 class="panel-head svelte-16icikf"><span class="dot dot-caller svelte-16icikf" aria-hidden="true"></span> </h2> <ul class="chip-list svelte-16icikf"></ul></div>`),ge=t(`<li><a class="chip chip-callee svelte-16icikf"><span class="chip-label svelte-16icikf"> </span> <span class="chip-kind svelte-16icikf"> </span></a></li>`),_e=t(`<div class="panel-section svelte-16icikf"><h2 class="panel-head svelte-16icikf"><span class="dot dot-callee svelte-16icikf" aria-hidden="true"></span> </h2> <ul class="chip-list svelte-16icikf"></ul></div>`),ve=t(`<div class="panel-section svelte-16icikf"><h2 class="panel-head svelte-16icikf">File</h2> <p class="file-path svelte-16icikf"> </p></div>`),ye=t(`<div class="panel-stack svelte-16icikf"><!> <!> <!> <!> <!> <!></div>`),be=t(`<section class="symbol-view svelte-16icikf" aria-labelledby="symbol-title"><header class="page-head svelte-16icikf"><!> <div class="title-row svelte-16icikf"><div><span class="eyebrow svelte-16icikf">NEXUS · Ego</span> <h1 id="symbol-title" class="sym-title svelte-16icikf"> </h1> <p class="subtitle svelte-16icikf"><!></p></div> <div class="stat-row svelte-16icikf"><div class="stat callers-stat svelte-16icikf"><span class="stat-num svelte-16icikf"> </span> <span class="stat-lbl svelte-16icikf">Callers</span></div> <div class="stat callees-stat svelte-16icikf"><span class="stat-num svelte-16icikf"> </span> <span class="stat-lbl svelte-16icikf">Callees</span></div> <div class="stat svelte-16icikf"><span class="stat-num svelte-16icikf"> </span> <span class="stat-lbl svelte-16icikf">Hop-2</span></div></div></div></header> <div class="workbench svelte-16icikf"><div><div class="stage-scanlines svelte-16icikf" aria-hidden="true"></div> <!> <!> <footer class="legend-dock svelte-16icikf" aria-label="Edge legend"><span class="legend-eyebrow svelte-16icikf">EDGES</span> <ul class="svelte-16icikf"></ul></footer></div> <aside class="side-panel svelte-16icikf" aria-label="Ego network details"><!></aside></div></section>`);function D(t,l){x(l,!0);let D=e(`hop`),xe={0:`var(--warning)`,1:`var(--info)`,2:`var(--text-faint)`},O=y(()=>{let e=l.data.nodes.map(e=>{let t=o(D)===`hop`?xe[e.hop]:void 0,n={hop:e.hop,filePath:e.filePath,callerCount:e.callerCount};return t&&(n.colorOverride=t),{id:e.id,substrate:`nexus`,kind:e.kind||`symbol`,label:e.label,category:e.communityId??null,weight:Math.min(1,Math.log10(e.callerCount+1)/3),meta:n}}),t=new Set(e.map(e=>e.id));return{nodes:e,edges:l.data.edges.filter(e=>t.has(e.source)&&t.has(e.target)&&e.source!==e.target).map((e,t)=>{let n=se(e.type);return{id:`ego-${t}-${e.source}-${e.target}-${n}`,source:e.source,target:e.target,kind:n,directional:!0}})}}),Se=y(()=>o(O).nodes),k=y(()=>o(O).edges),A=[`calls`,`extends`,`implements`,`defines`,`imports`,`has_method`,`has_property`,`accesses`,`references`],j=e(h(new Set(A)));function Ce(e){let t=new Set(o(j));t.has(e)?t.delete(e):t.add(e),f(j,t,!0)}let M=y(()=>l.data.nodes.filter(e=>e.hop===1?l.data.edges.some(t=>t.target===l.data.center?.id&&t.source===e.id):!1)),N=y(()=>l.data.nodes.filter(e=>e.hop===1?l.data.edges.some(t=>t.source===l.data.center?.id&&t.target===e.id):!1)),we=y(()=>l.data.nodes.filter(e=>e.hop===2).length);function Te(e){e.id!==l.data.center?.id&&E(`/code/symbol/${encodeURIComponent(e.label)}`)}let Ee=y(()=>{let e=new Map;for(let t of o(k))e.set(t.kind,(e.get(t.kind)??0)+1);return e});function De(e){return e.split(`/`).slice(-2).join(`/`)}let Oe=y(()=>[{label:`Studio`,href:`/`},{label:`Code`,href:`/code`},...l.data.center?.communityId&&l.data.communityLabel?[{label:l.data.communityLabel,href:`/code/community/${encodeURIComponent(l.data.center.communityId)}`}]:[],{label:l.data.symbolName}]);var P=be();T(`16icikf`,e=>{n(()=>{c.title=`${l.data.symbolName??``} — Code — CLEO Studio`})});var F=s(P),I=s(F);ee(I,{get items(){return o(Oe)}});var L=p(I,2),R=s(L),z=p(s(R),2),ke=s(z,!0);S(z);var B=p(z,2),Ae=s(B),je=e=>{var t=le(),n=m(t),o=s(n,!0);S(n);var c=p(n,2),d=e=>{var t=ce(),n=p(m(t),2),i=s(n,!0);S(n),a(()=>r(i,l.data.center.filePath)),u(e,t)};i(c,e=>{l.data.center.filePath&&e(d)}),a(()=>r(o,l.data.center.kind)),u(e,t)};i(Ae,e=>{l.data.center&&e(je)}),S(B),S(R);var V=p(R,2),H=s(V),U=s(H),Me=s(U,!0);S(U),b(2),S(H);var W=p(H,2),G=s(W),Ne=s(G,!0);S(G),b(2),S(W);var K=p(W,2),q=s(K),Pe=s(q,!0);S(q),b(2),S(K),S(V),S(L),S(F);var J=p(F,2),Y=s(J);let X;var Z=p(s(Y),2),Fe=e=>{u(e,ue())};i(Z,e=>{o(D)===`hop`&&e(Fe)});var Q=p(Z,2);oe(Q,{get nodes(){return o(Se)},get edges(){return o(k)},get visibleEdgeKinds(){return o(j)},onNodeClick:Te,showClusterLabels:!1,height:`calc(100vh - 220px)`,baseAlpha:.94});var Ie=p(Q,2),Le=p(s(Ie),2);w(Le,20,()=>A,e=>e,(e,t)=>{let n=y(()=>ae[t]),i=y(()=>o(j).has(t)),c=y(()=>o(Ee).get(t)??0);var l=de(),f=s(l);let m;var h=s(f);let _,b;var x=p(h,2),w=s(x,!0);S(x);var T=p(x,2),E=s(T,!0);S(T),S(f),S(l),a((e,a)=>{m=C(f,1,`legend-item svelte-16icikf`,null,m,{active:o(i),disabled:o(c)===0}),f.disabled=o(c)===0,v(f,`aria-pressed`,o(i)),v(f,`title`,e),_=C(h,1,`swatch svelte-16icikf`,null,_,a),b=g(h,``,b,{background:o(n).color}),r(w,t),r(E,o(c))},[()=>ie(t),()=>({dashed:!!o(n).dash})]),d(`click`,f,()=>Ce(t)),u(e,l)}),S(Le),S(Ie),S(Y);var $=p(Y,2);te(s($),{elevation:1,padding:`cozy`,children:e=>{var t=ye(),n=s(t);ne(n,{items:[{value:`hop`,label:`Hop coloring`},{value:`kind`,label:`Kind coloring`}],get value(){return o(D)},onchange:e=>{f(D,e===`kind`?`kind`:`hop`,!0)}});var c=p(n,2);re(c,{value:`hop`,get active(){return o(D)},children:e=>{u(e,fe())},$$slots:{default:!0}});var d=p(c,2);re(d,{value:`kind`,get active(){return o(D)},children:e=>{u(e,pe())},$$slots:{default:!0}});var m=p(d,2),h=e=>{var t=he(),n=s(t),i=p(s(n));S(n);var c=p(n,2);w(c,21,()=>o(M),e=>e.id,(e,t)=>{var n=me(),i=s(n),c=s(i),l=s(c,!0);S(c);var d=p(c,2),f=s(d,!0);S(d),S(i),S(n),a(e=>{v(i,`href`,e),r(l,o(t).label),r(f,o(t).kind)},[()=>`/code/symbol/${encodeURIComponent(o(t).label)}`]),u(e,n)}),S(c),S(t),a(()=>r(i,` Callers (${o(M).length??``})`)),u(e,t)};i(m,e=>{o(M).length>0&&e(h)});var g=p(m,2),_=e=>{var t=_e(),n=s(t),i=p(s(n));S(n);var c=p(n,2);w(c,21,()=>o(N),e=>e.id,(e,t)=>{var n=ge(),i=s(n),c=s(i),l=s(c,!0);S(c);var d=p(c,2),f=s(d,!0);S(d),S(i),S(n),a(e=>{v(i,`href`,e),r(l,o(t).label),r(f,o(t).kind)},[()=>`/code/symbol/${encodeURIComponent(o(t).label)}`]),u(e,n)}),S(c),S(t),a(()=>r(i,` Callees (${o(N).length??``})`)),u(e,t)};i(g,e=>{o(N).length>0&&e(_)});var y=p(g,2),b=e=>{var t=ve(),n=p(s(t),2),i=s(n,!0);S(n),S(t),a(e=>{v(n,`title`,l.data.center.filePath),r(i,e)},[()=>De(l.data.center.filePath)]),u(e,t)};i(y,e=>{l.data.center?.filePath&&e(b)}),S(t),u(e,t)},$$slots:{default:!0}}),S($),S(J),S(P),a(()=>{r(ke,l.data.symbolName),r(Me,o(M).length),r(Ne,o(N).length),r(Pe,o(we)),X=C(Y,1,`stage svelte-16icikf`,null,X,{"mode-hop":o(D)===`hop`})}),u(t,P),_()}l([`click`]);export{D as component};
1
+ import{$ as e,A as t,B as n,D as r,E as i,H as a,I as o,J as s,K as c,N as l,O as u,P as d,Q as f,X as p,Y as m,Z as h,_ as g,at as _,d as v,et as y,lt as b,ot as x,ut as S,v as C,w,x as T}from"../chunks/DGftG5oL.js";import{r as E}from"../chunks/COEVVgGn.js";import"../chunks/B8WnZMYa.js";import{i as ee,r as te,t as ne}from"../chunks/DZrdToAH.js";import{n as re}from"../chunks/CTLGzgdN.js";import{a as ie,i as ae}from"../chunks/Cge6qiwc.js";import"../chunks/D2NG8h_r.js";import{i as oe,r as se}from"../chunks/BOnrCZaR.js";var ce=t(`<span class="sep svelte-16icikf" aria-hidden="true">·</span> <span class="path svelte-16icikf"> </span>`,1),le=t(`<span class="kind-badge svelte-16icikf"> </span> <!>`,1),ue=t(`<div class="hop-rings svelte-16icikf" aria-hidden="true"><span class="ring ring-1 svelte-16icikf"></span> <span class="ring ring-2 svelte-16icikf"></span></div>`),de=t(`<li><button type="button"><span aria-hidden="true"></span> <span> </span> <span class="legend-count svelte-16icikf"> </span></button></li>`),fe=t(`<p class="panel-hint svelte-16icikf">Center = amber · hop-1 = blue · hop-2 = slate.</p>`),pe=t(`<p class="panel-hint svelte-16icikf">Substrate-native palette — matches macro + community views.</p>`),me=t(`<li><a class="chip chip-caller svelte-16icikf"><span class="chip-label svelte-16icikf"> </span> <span class="chip-kind svelte-16icikf"> </span></a></li>`),he=t(`<div class="panel-section svelte-16icikf"><h2 class="panel-head svelte-16icikf"><span class="dot dot-caller svelte-16icikf" aria-hidden="true"></span> </h2> <ul class="chip-list svelte-16icikf"></ul></div>`),ge=t(`<li><a class="chip chip-callee svelte-16icikf"><span class="chip-label svelte-16icikf"> </span> <span class="chip-kind svelte-16icikf"> </span></a></li>`),_e=t(`<div class="panel-section svelte-16icikf"><h2 class="panel-head svelte-16icikf"><span class="dot dot-callee svelte-16icikf" aria-hidden="true"></span> </h2> <ul class="chip-list svelte-16icikf"></ul></div>`),ve=t(`<div class="panel-section svelte-16icikf"><h2 class="panel-head svelte-16icikf">File</h2> <p class="file-path svelte-16icikf"> </p></div>`),ye=t(`<div class="panel-stack svelte-16icikf"><!> <!> <!> <!> <!> <!></div>`),be=t(`<section class="symbol-view svelte-16icikf" aria-labelledby="symbol-title"><header class="page-head svelte-16icikf"><!> <div class="title-row svelte-16icikf"><div><span class="eyebrow svelte-16icikf">NEXUS · Ego</span> <h1 id="symbol-title" class="sym-title svelte-16icikf"> </h1> <p class="subtitle svelte-16icikf"><!></p></div> <div class="stat-row svelte-16icikf"><div class="stat callers-stat svelte-16icikf"><span class="stat-num svelte-16icikf"> </span> <span class="stat-lbl svelte-16icikf">Callers</span></div> <div class="stat callees-stat svelte-16icikf"><span class="stat-num svelte-16icikf"> </span> <span class="stat-lbl svelte-16icikf">Callees</span></div> <div class="stat svelte-16icikf"><span class="stat-num svelte-16icikf"> </span> <span class="stat-lbl svelte-16icikf">Hop-2</span></div></div></div></header> <div class="workbench svelte-16icikf"><div><div class="stage-scanlines svelte-16icikf" aria-hidden="true"></div> <!> <!> <footer class="legend-dock svelte-16icikf" aria-label="Edge legend"><span class="legend-eyebrow svelte-16icikf">EDGES</span> <ul class="svelte-16icikf"></ul></footer></div> <aside class="side-panel svelte-16icikf" aria-label="Ego network details"><!></aside></div></section>`);function D(t,l){x(l,!0);let D=e(`hop`),xe={0:`var(--warning)`,1:`var(--info)`,2:`var(--text-faint)`},O=y(()=>{let e=l.data.nodes.map(e=>{let t=o(D)===`hop`?xe[e.hop]:void 0,n={hop:e.hop,filePath:e.filePath,callerCount:e.callerCount};return t&&(n.colorOverride=t),{id:e.id,substrate:`nexus`,kind:e.kind||`symbol`,label:e.label,category:e.communityId??null,weight:Math.min(1,Math.log10(e.callerCount+1)/3),meta:n}}),t=new Set(e.map(e=>e.id));return{nodes:e,edges:l.data.edges.filter(e=>t.has(e.source)&&t.has(e.target)&&e.source!==e.target).map((e,t)=>{let n=se(e.type);return{id:`ego-${t}-${e.source}-${e.target}-${n}`,source:e.source,target:e.target,kind:n,directional:!0}})}}),Se=y(()=>o(O).nodes),k=y(()=>o(O).edges),A=[`calls`,`extends`,`implements`,`defines`,`imports`,`has_method`,`has_property`,`accesses`,`references`],j=e(h(new Set(A)));function Ce(e){let t=new Set(o(j));t.has(e)?t.delete(e):t.add(e),f(j,t,!0)}let M=y(()=>l.data.nodes.filter(e=>e.hop===1?l.data.edges.some(t=>t.target===l.data.center?.id&&t.source===e.id):!1)),N=y(()=>l.data.nodes.filter(e=>e.hop===1?l.data.edges.some(t=>t.source===l.data.center?.id&&t.target===e.id):!1)),we=y(()=>l.data.nodes.filter(e=>e.hop===2).length);function Te(e){e.id!==l.data.center?.id&&E(`/code/symbol/${encodeURIComponent(e.label)}`)}let Ee=y(()=>{let e=new Map;for(let t of o(k))e.set(t.kind,(e.get(t.kind)??0)+1);return e});function De(e){return e.split(`/`).slice(-2).join(`/`)}let Oe=y(()=>[{label:`Studio`,href:`/`},{label:`Code`,href:`/code`},...l.data.center?.communityId&&l.data.communityLabel?[{label:l.data.communityLabel,href:`/code/community/${encodeURIComponent(l.data.center.communityId)}`}]:[],{label:l.data.symbolName}]);var P=be();T(`16icikf`,e=>{n(()=>{c.title=`${l.data.symbolName??``} — Code — CLEO Studio`})});var F=s(P),I=s(F);ee(I,{get items(){return o(Oe)}});var L=p(I,2),R=s(L),z=p(s(R),2),ke=s(z,!0);S(z);var B=p(z,2),Ae=s(B),je=e=>{var t=le(),n=m(t),o=s(n,!0);S(n);var c=p(n,2),d=e=>{var t=ce(),n=p(m(t),2),i=s(n,!0);S(n),a(()=>r(i,l.data.center.filePath)),u(e,t)};i(c,e=>{l.data.center.filePath&&e(d)}),a(()=>r(o,l.data.center.kind)),u(e,t)};i(Ae,e=>{l.data.center&&e(je)}),S(B),S(R);var V=p(R,2),H=s(V),U=s(H),Me=s(U,!0);S(U),b(2),S(H);var W=p(H,2),G=s(W),Ne=s(G,!0);S(G),b(2),S(W);var K=p(W,2),q=s(K),Pe=s(q,!0);S(q),b(2),S(K),S(V),S(L),S(F);var J=p(F,2),Y=s(J);let X;var Z=p(s(Y),2),Fe=e=>{u(e,ue())};i(Z,e=>{o(D)===`hop`&&e(Fe)});var Q=p(Z,2);oe(Q,{get nodes(){return o(Se)},get edges(){return o(k)},get visibleEdgeKinds(){return o(j)},onNodeClick:Te,showClusterLabels:!1,height:`calc(100vh - 220px)`,baseAlpha:.94});var Ie=p(Q,2),Le=p(s(Ie),2);w(Le,20,()=>A,e=>e,(e,t)=>{let n=y(()=>ae[t]),i=y(()=>o(j).has(t)),c=y(()=>o(Ee).get(t)??0);var l=de(),f=s(l);let m;var h=s(f);let _,b;var x=p(h,2),w=s(x,!0);S(x);var T=p(x,2),E=s(T,!0);S(T),S(f),S(l),a((e,a)=>{m=C(f,1,`legend-item svelte-16icikf`,null,m,{active:o(i),disabled:o(c)===0}),f.disabled=o(c)===0,v(f,`aria-pressed`,o(i)),v(f,`title`,e),_=C(h,1,`swatch svelte-16icikf`,null,_,a),b=g(h,``,b,{background:o(n).color}),r(w,t),r(E,o(c))},[()=>ie(t),()=>({dashed:!!o(n).dash})]),d(`click`,f,()=>Ce(t)),u(e,l)}),S(Le),S(Ie),S(Y);var $=p(Y,2);te(s($),{elevation:1,padding:`cozy`,children:e=>{var t=ye(),n=s(t);ne(n,{items:[{value:`hop`,label:`Hop coloring`},{value:`kind`,label:`Kind coloring`}],get value(){return o(D)},onchange:e=>{f(D,e===`kind`?`kind`:`hop`,!0)}});var c=p(n,2);re(c,{value:`hop`,get active(){return o(D)},children:e=>{u(e,fe())},$$slots:{default:!0}});var d=p(c,2);re(d,{value:`kind`,get active(){return o(D)},children:e=>{u(e,pe())},$$slots:{default:!0}});var m=p(d,2),h=e=>{var t=he(),n=s(t),i=p(s(n));S(n);var c=p(n,2);w(c,21,()=>o(M),e=>e.id,(e,t)=>{var n=me(),i=s(n),c=s(i),l=s(c,!0);S(c);var d=p(c,2),f=s(d,!0);S(d),S(i),S(n),a(e=>{v(i,`href`,e),r(l,o(t).label),r(f,o(t).kind)},[()=>`/code/symbol/${encodeURIComponent(o(t).label)}`]),u(e,n)}),S(c),S(t),a(()=>r(i,` Callers (${o(M).length??``})`)),u(e,t)};i(m,e=>{o(M).length>0&&e(h)});var g=p(m,2),_=e=>{var t=_e(),n=s(t),i=p(s(n));S(n);var c=p(n,2);w(c,21,()=>o(N),e=>e.id,(e,t)=>{var n=ge(),i=s(n),c=s(i),l=s(c,!0);S(c);var d=p(c,2),f=s(d,!0);S(d),S(i),S(n),a(e=>{v(i,`href`,e),r(l,o(t).label),r(f,o(t).kind)},[()=>`/code/symbol/${encodeURIComponent(o(t).label)}`]),u(e,n)}),S(c),S(t),a(()=>r(i,` Callees (${o(N).length??``})`)),u(e,t)};i(g,e=>{o(N).length>0&&e(_)});var y=p(g,2),b=e=>{var t=ve(),n=p(s(t),2),i=s(n,!0);S(n),S(t),a(e=>{v(n,`title`,l.data.center.filePath),r(i,e)},[()=>De(l.data.center.filePath)]),u(e,t)};i(y,e=>{l.data.center?.filePath&&e(b)}),S(t),u(e,t)},$$slots:{default:!0}}),S($),S(J),S(P),a(()=>{r(ke,l.data.symbolName),r(Me,o(M).length),r(Ne,o(N).length),r(Pe,o(we)),X=C(Y,1,`stage svelte-16icikf`,null,X,{"mode-hop":o(D)===`hop`})}),u(t,P),_()}l([`click`]);export{D as component};
@@ -1,4 +1,4 @@
1
- import{$ as e,A as t,D as n,E as r,H as i,I as a,J as o,K as s,M as c,N as l,O as u,P as d,Q as f,T as p,U as m,V as h,X as g,Y as _,Z as v,a as y,at as b,b as x,c as S,d as C,et as w,ft as T,lt as E,m as D,ot as O,s as k,u as A,ut as j,v as M,w as N,x as P}from"../chunks/DGftG5oL.js";import{f as F,i as I,n as L,t as R,u as z}from"../chunks/B7XMzKvO.js";import"../chunks/B8WnZMYa.js";import{t as B}from"../chunks/BB7zPpV2.js";import{a as V,r as H}from"../chunks/DZrdToAH.js";import{a as U,i as W,l as G}from"../chunks/CTLGzgdN.js";import"../chunks/Dif6upEP.js";function ee(e){let t=JSON.parse(e);return t.data&&=z(t.data,R.decoders),t}function K(e){return HTMLElement.prototype.cloneNode.call(e)}function te(e,t=F){let n=async({action:t,result:n,reset:r=!0,invalidateAll:i=!0})=>{n.type===`success`&&(r&&HTMLFormElement.prototype.reset.call(e),i&&await I()),(location.origin+location.pathname===t.origin+t.pathname||n.type===`redirect`||n.type===`error`)&&await L(n)};async function r(r){if((r.submitter?.hasAttribute(`formmethod`)?r.submitter.formMethod:K(e).method)!==`post`)return;r.preventDefault();let i=new URL(r.submitter?.hasAttribute(`formaction`)?r.submitter.formAction:K(e).action),a=r.submitter?.hasAttribute(`formenctype`)?r.submitter.formEnctype:K(e).enctype,o=new FormData(e,r.submitter),s=new AbortController,c=!1,l=await t({action:i,cancel:()=>c=!0,controller:s,formData:o,formElement:e,submitter:r.submitter})??n;if(c)return;let u;try{let e=new Headers({accept:`application/json`,"x-sveltekit-action":`true`});a!==`multipart/form-data`&&e.set(`Content-Type`,/^(:?application\/x-www-form-urlencoded|text\/plain)$/.test(a)?a:`application/x-www-form-urlencoded`);let t=a===`multipart/form-data`?o:new URLSearchParams(o),n=await fetch(i,{method:`POST`,headers:e,cache:`no-store`,body:t,signal:s.signal});u=ee(await n.text()),u.type===`error`&&(u.status=n.status)}catch(e){if(e?.name===`AbortError`)return;u={type:`error`,error:e}}await l({action:i,formData:o,formElement:e,update:e=>n({action:i,result:u,reset:e?.reset,invalidateAll:e?.invalidateAll}),result:u})}return HTMLFormElement.prototype.addEventListener.call(e,`submit`,r),{destroy(){HTMLFormElement.prototype.removeEventListener.call(e,`submit`,r)}}}var ne=t(`<span class="panel-count svelte-1fyimgn"> </span>`),re=t(`<div class="alert svelte-1fyimgn" role="alert"> </div>`),ie=t(`<p class="empty svelte-1fyimgn">No recorded admin actions yet.</p>`),ae=t(`<span class="target svelte-1fyimgn"> </span>`),oe=t(`<button type="button" class="expand-btn svelte-1fyimgn"> </button>`),se=t(`<p class="detail-text svelte-1fyimgn"> </p>`),q=t(`<pre class="meta svelte-1fyimgn"> </pre>`),J=t(`<div class="details svelte-1fyimgn"><!> <!></div>`),ce=t(`<li class="log-item svelte-1fyimgn"><div class="row svelte-1fyimgn"><time class="ts svelte-1fyimgn"> </time> <code class="action svelte-1fyimgn"> </code> <!> <!> <span class="actor svelte-1fyimgn"> </span> <!></div> <!></li>`),Y=t(`<ol class="log-list svelte-1fyimgn"></ol>`),le=t(`<section aria-label="Admin action audit log"><header class="panel-head svelte-1fyimgn"><h3 class="panel-title svelte-1fyimgn">Audit log <!></h3> <!></header> <!> <!></section>`);function ue(t,s){O(s,!0);let l=y(s,`initial`,19,()=>[]),p=y(s,`class`,3,``),h=l(),_=e(v(h)),x=e(!1),S=e(null),T=e(null);async function D(){f(x,!0),f(S,null);try{let e=await(await fetch(`/api/project/audit`)).json();e.success&&e.data?f(_,e.data.entries??[],!0):f(S,e.error?.message??`Unable to read audit log`,!0)}catch(e){f(S,e instanceof Error?e.message:`Unexpected error`,!0)}finally{f(x,!1)}}function k(e){return e===`success`?`success`:e===`failure`?`danger`:e===`dry-run`?`warning`:`info`}function A(e){try{return new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}catch{return e}}function P(e){f(T,a(T)===e?null:e,!0)}function F(e){return!!e.detail||!!(e.meta&&Object.keys(e.meta).length>0)}m(()=>{a(_).length===0&&!a(x)&&h.length===0&&D()});var I=le(),L=o(I),R=o(L),z=g(o(R)),B=e=>{var t=ne(),r=o(t,!0);j(t),i(()=>n(r,a(_).length)),u(e,t)};r(z,e=>{a(_).length>0&&e(B)}),j(R),G(g(R,2),{variant:`ghost`,size:`sm`,onclick:D,get loading(){return a(x)},children:(e,t)=>{E(),u(e,c(`Refresh`))},$$slots:{default:!0}}),j(L);var H=g(L,2),U=e=>{var t=re(),r=o(t,!0);j(t),i(()=>n(r,a(S))),u(e,t)};r(H,e=>{a(S)&&e(U)});var W=g(H,2),ee=e=>{u(e,ie())},K=e=>{var t=Y();N(t,23,()=>a(_),(e,t)=>e.timestamp+e.action+t,(e,t,s)=>{let l=w(()=>F(a(t)));var f=ce(),p=o(f),m=o(p),h=o(m,!0);j(m);var _=g(m,2),v=o(_,!0);j(_);var y=g(_,2);{let e=w(()=>k(a(t).result));V(y,{get tone(){return a(e)},size:`sm`,children:(e,r)=>{E();var o=c();i(()=>n(o,a(t).result)),u(e,o)},$$slots:{default:!0}})}var b=g(y,2),x=e=>{var r=ae(),s=o(r,!0);j(r),i(()=>n(s,a(t).target)),u(e,r)};r(b,e=>{a(t).target&&e(x)});var S=g(b,2),D=o(S,!0);j(S);var O=g(S,2),M=e=>{var t=oe(),r=o(t,!0);j(t),i(()=>{C(t,`aria-expanded`,a(T)===a(s)),C(t,`aria-label`,a(T)===a(s)?`Collapse entry`:`Expand entry`),n(r,a(T)===a(s)?`▾`:`▸`)}),d(`click`,t,()=>P(a(s))),u(e,t)};r(O,e=>{a(l)&&e(M)}),j(p);var N=g(p,2),I=e=>{var s=J(),c=o(s),l=e=>{var r=se(),s=o(r,!0);j(r),i(()=>n(s,a(t).detail)),u(e,r)};r(c,e=>{a(t).detail&&e(l)});var d=g(c,2),f=e=>{var r=q(),s=o(r,!0);j(r),i(e=>n(s,e),[()=>JSON.stringify(a(t).meta,null,2)]),u(e,r)};r(d,e=>{a(t).meta&&e(f)}),j(s),u(e,s)};r(N,e=>{a(T)===a(s)&&a(l)&&e(I)}),j(f),i(e=>{n(h,e),n(v,a(t).action),n(D,a(t).actor)},[()=>A(a(t).timestamp)]),u(e,f)}),j(t),u(e,t)};r(W,e=>{a(_).length===0&&!a(x)?e(ee):e(K,-1)}),j(I),i(()=>M(I,1,`audit-panel ${p()??``}`,`svelte-1fyimgn`)),u(t,I),b()}l([`click`]);var X=t(`<!> <!>`,1),de=t(`<div class="success svelte-bv3qg3" role="status"> </div>`),fe=t(`<div class="alert svelte-bv3qg3" role="alert"> </div>`),pe=t(`<code class="list-dir svelte-bv3qg3"> </code>`),me=t(`<p class="hint svelte-bv3qg3">Loading…</p>`),he=t(`<p class="hint svelte-bv3qg3">No snapshots yet. Create one above.</p>`),ge=t(`<li class="list-item svelte-bv3qg3"><!> <code class="list-name svelte-bv3qg3"> </code> <span class="list-size svelte-bv3qg3"> </span> <time class="list-time svelte-bv3qg3"> </time></li>`),_e=t(`<ul class="list svelte-bv3qg3"></ul>`),ve=t(`<div class="body svelte-bv3qg3"><section class="create"><h3 class="section-title svelte-bv3qg3">New snapshot</h3> <p class="description svelte-bv3qg3">Captures <code class="svelte-bv3qg3">tasks.db</code>, <code class="svelte-bv3qg3">brain.db</code>, <code class="svelte-bv3qg3">config.json</code>, and <code class="svelte-bv3qg3">project-info.json</code> via <code class="svelte-bv3qg3">cleo backup add</code>. Vacuums into a
1
+ import{$ as e,A as t,D as n,E as r,H as i,I as a,J as o,K as s,M as c,N as l,O as u,P as d,Q as f,T as p,U as m,V as h,X as g,Y as _,Z as v,a as y,at as b,b as x,c as S,d as C,et as w,ft as T,lt as E,m as D,ot as O,s as k,u as A,ut as j,v as M,w as N,x as P}from"../chunks/DGftG5oL.js";import{f as F,i as I,n as L,t as R,u as z}from"../chunks/COEVVgGn.js";import"../chunks/B8WnZMYa.js";import{t as B}from"../chunks/BB7zPpV2.js";import{a as V,r as H}from"../chunks/DZrdToAH.js";import{a as U,i as W,l as G}from"../chunks/CTLGzgdN.js";import"../chunks/D2NG8h_r.js";function ee(e){let t=JSON.parse(e);return t.data&&=z(t.data,R.decoders),t}function K(e){return HTMLElement.prototype.cloneNode.call(e)}function te(e,t=F){let n=async({action:t,result:n,reset:r=!0,invalidateAll:i=!0})=>{n.type===`success`&&(r&&HTMLFormElement.prototype.reset.call(e),i&&await I()),(location.origin+location.pathname===t.origin+t.pathname||n.type===`redirect`||n.type===`error`)&&await L(n)};async function r(r){if((r.submitter?.hasAttribute(`formmethod`)?r.submitter.formMethod:K(e).method)!==`post`)return;r.preventDefault();let i=new URL(r.submitter?.hasAttribute(`formaction`)?r.submitter.formAction:K(e).action),a=r.submitter?.hasAttribute(`formenctype`)?r.submitter.formEnctype:K(e).enctype,o=new FormData(e,r.submitter),s=new AbortController,c=!1,l=await t({action:i,cancel:()=>c=!0,controller:s,formData:o,formElement:e,submitter:r.submitter})??n;if(c)return;let u;try{let e=new Headers({accept:`application/json`,"x-sveltekit-action":`true`});a!==`multipart/form-data`&&e.set(`Content-Type`,/^(:?application\/x-www-form-urlencoded|text\/plain)$/.test(a)?a:`application/x-www-form-urlencoded`);let t=a===`multipart/form-data`?o:new URLSearchParams(o),n=await fetch(i,{method:`POST`,headers:e,cache:`no-store`,body:t,signal:s.signal});u=ee(await n.text()),u.type===`error`&&(u.status=n.status)}catch(e){if(e?.name===`AbortError`)return;u={type:`error`,error:e}}await l({action:i,formData:o,formElement:e,update:e=>n({action:i,result:u,reset:e?.reset,invalidateAll:e?.invalidateAll}),result:u})}return HTMLFormElement.prototype.addEventListener.call(e,`submit`,r),{destroy(){HTMLFormElement.prototype.removeEventListener.call(e,`submit`,r)}}}var ne=t(`<span class="panel-count svelte-1fyimgn"> </span>`),re=t(`<div class="alert svelte-1fyimgn" role="alert"> </div>`),ie=t(`<p class="empty svelte-1fyimgn">No recorded admin actions yet.</p>`),ae=t(`<span class="target svelte-1fyimgn"> </span>`),oe=t(`<button type="button" class="expand-btn svelte-1fyimgn"> </button>`),se=t(`<p class="detail-text svelte-1fyimgn"> </p>`),q=t(`<pre class="meta svelte-1fyimgn"> </pre>`),J=t(`<div class="details svelte-1fyimgn"><!> <!></div>`),ce=t(`<li class="log-item svelte-1fyimgn"><div class="row svelte-1fyimgn"><time class="ts svelte-1fyimgn"> </time> <code class="action svelte-1fyimgn"> </code> <!> <!> <span class="actor svelte-1fyimgn"> </span> <!></div> <!></li>`),Y=t(`<ol class="log-list svelte-1fyimgn"></ol>`),le=t(`<section aria-label="Admin action audit log"><header class="panel-head svelte-1fyimgn"><h3 class="panel-title svelte-1fyimgn">Audit log <!></h3> <!></header> <!> <!></section>`);function ue(t,s){O(s,!0);let l=y(s,`initial`,19,()=>[]),p=y(s,`class`,3,``),h=l(),_=e(v(h)),x=e(!1),S=e(null),T=e(null);async function D(){f(x,!0),f(S,null);try{let e=await(await fetch(`/api/project/audit`)).json();e.success&&e.data?f(_,e.data.entries??[],!0):f(S,e.error?.message??`Unable to read audit log`,!0)}catch(e){f(S,e instanceof Error?e.message:`Unexpected error`,!0)}finally{f(x,!1)}}function k(e){return e===`success`?`success`:e===`failure`?`danger`:e===`dry-run`?`warning`:`info`}function A(e){try{return new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}catch{return e}}function P(e){f(T,a(T)===e?null:e,!0)}function F(e){return!!e.detail||!!(e.meta&&Object.keys(e.meta).length>0)}m(()=>{a(_).length===0&&!a(x)&&h.length===0&&D()});var I=le(),L=o(I),R=o(L),z=g(o(R)),B=e=>{var t=ne(),r=o(t,!0);j(t),i(()=>n(r,a(_).length)),u(e,t)};r(z,e=>{a(_).length>0&&e(B)}),j(R),G(g(R,2),{variant:`ghost`,size:`sm`,onclick:D,get loading(){return a(x)},children:(e,t)=>{E(),u(e,c(`Refresh`))},$$slots:{default:!0}}),j(L);var H=g(L,2),U=e=>{var t=re(),r=o(t,!0);j(t),i(()=>n(r,a(S))),u(e,t)};r(H,e=>{a(S)&&e(U)});var W=g(H,2),ee=e=>{u(e,ie())},K=e=>{var t=Y();N(t,23,()=>a(_),(e,t)=>e.timestamp+e.action+t,(e,t,s)=>{let l=w(()=>F(a(t)));var f=ce(),p=o(f),m=o(p),h=o(m,!0);j(m);var _=g(m,2),v=o(_,!0);j(_);var y=g(_,2);{let e=w(()=>k(a(t).result));V(y,{get tone(){return a(e)},size:`sm`,children:(e,r)=>{E();var o=c();i(()=>n(o,a(t).result)),u(e,o)},$$slots:{default:!0}})}var b=g(y,2),x=e=>{var r=ae(),s=o(r,!0);j(r),i(()=>n(s,a(t).target)),u(e,r)};r(b,e=>{a(t).target&&e(x)});var S=g(b,2),D=o(S,!0);j(S);var O=g(S,2),M=e=>{var t=oe(),r=o(t,!0);j(t),i(()=>{C(t,`aria-expanded`,a(T)===a(s)),C(t,`aria-label`,a(T)===a(s)?`Collapse entry`:`Expand entry`),n(r,a(T)===a(s)?`▾`:`▸`)}),d(`click`,t,()=>P(a(s))),u(e,t)};r(O,e=>{a(l)&&e(M)}),j(p);var N=g(p,2),I=e=>{var s=J(),c=o(s),l=e=>{var r=se(),s=o(r,!0);j(r),i(()=>n(s,a(t).detail)),u(e,r)};r(c,e=>{a(t).detail&&e(l)});var d=g(c,2),f=e=>{var r=q(),s=o(r,!0);j(r),i(e=>n(s,e),[()=>JSON.stringify(a(t).meta,null,2)]),u(e,r)};r(d,e=>{a(t).meta&&e(f)}),j(s),u(e,s)};r(N,e=>{a(T)===a(s)&&a(l)&&e(I)}),j(f),i(e=>{n(h,e),n(v,a(t).action),n(D,a(t).actor)},[()=>A(a(t).timestamp)]),u(e,f)}),j(t),u(e,t)};r(W,e=>{a(_).length===0&&!a(x)?e(ee):e(K,-1)}),j(I),i(()=>M(I,1,`audit-panel ${p()??``}`,`svelte-1fyimgn`)),u(t,I),b()}l([`click`]);var X=t(`<!> <!>`,1),de=t(`<div class="success svelte-bv3qg3" role="status"> </div>`),fe=t(`<div class="alert svelte-bv3qg3" role="alert"> </div>`),pe=t(`<code class="list-dir svelte-bv3qg3"> </code>`),me=t(`<p class="hint svelte-bv3qg3">Loading…</p>`),he=t(`<p class="hint svelte-bv3qg3">No snapshots yet. Create one above.</p>`),ge=t(`<li class="list-item svelte-bv3qg3"><!> <code class="list-name svelte-bv3qg3"> </code> <span class="list-size svelte-bv3qg3"> </span> <time class="list-time svelte-bv3qg3"> </time></li>`),_e=t(`<ul class="list svelte-bv3qg3"></ul>`),ve=t(`<div class="body svelte-bv3qg3"><section class="create"><h3 class="section-title svelte-bv3qg3">New snapshot</h3> <p class="description svelte-bv3qg3">Captures <code class="svelte-bv3qg3">tasks.db</code>, <code class="svelte-bv3qg3">brain.db</code>, <code class="svelte-bv3qg3">config.json</code>, and <code class="svelte-bv3qg3">project-info.json</code> via <code class="svelte-bv3qg3">cleo backup add</code>. Vacuums into a
2
2
  timestamped <code class="svelte-bv3qg3">.cleo/backups/sqlite/</code> file.</p> <div class="create-row svelte-bv3qg3"><!> <!></div> <!> <!></section> <section class="list-section"><div class="list-head svelte-bv3qg3"><h3 class="section-title svelte-bv3qg3">Existing snapshots</h3> <!></div> <!> <p class="restore-hint svelte-bv3qg3">Restore via CLI: <code class="svelte-bv3qg3">cleo restore backup --file &lt;filename&gt;</code>.</p></section></div>`);function ye(t,s){O(s,!0);let l=y(s,`open`,15,!0),d=e(v([])),h=e(!1),x=e(!1),S=e(``),C=e(null),T=e(null),D=e(``);function k(){l(!1),s.onClose?.()}async function A(){f(h,!0),f(C,null);try{let e=await(await fetch(`/api/project/backup`)).json();e.success&&e.data?(f(d,e.data.backups??[],!0),f(D,e.data.dir??``,!0)):f(C,e.error?.message??`Unable to list backups`,!0)}catch(e){f(C,e instanceof Error?e.message:`Unexpected error`,!0)}finally{f(h,!1)}}async function M(){f(x,!0),f(C,null),f(T,null);try{let e=await(await fetch(`/api/project/backup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({note:a(S).trim()||void 0})})).json();e.success?(f(T,`Snapshot created`),f(S,``),await A()):f(C,e.error?.message??`Snapshot failed`,!0)}catch(e){f(C,e instanceof Error?e.message:`Unexpected error`,!0)}finally{f(x,!1)}}function P(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} kB`:e<1024*1024*1024?`${(e/1024/1024).toFixed(1)} MB`:`${(e/1024/1024/1024).toFixed(2)} GB`}function F(e){try{return new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}catch{return e}}function I(e){return e===`tasks`?`accent`:e===`brain`?`info`:e===`config`||e===`project-info`?`warning`:`neutral`}m(()=>{l()&&a(d).length===0&&!a(h)&&A()}),W(t,{title:`Project Backups`,maxWidth:44,onclose:k,get open(){return l()},set open(e){l(e)},footer:e=>{var t=X(),n=_(t);G(n,{variant:`ghost`,onclick:k,children:(e,t)=>{E(),u(e,c(`Close`))},$$slots:{default:!0}}),G(g(n,2),{variant:`secondary`,onclick:A,get loading(){return a(h)},children:(e,t)=>{E(),u(e,c(`Refresh`))},$$slots:{default:!0}}),u(e,t)},children:(e,t)=>{var s=ve(),l=o(s),m=g(o(l),4),_=o(m);U(_,{label:`Note`,placeholder:`e.g. pre-migration checkpoint`,get value(){return a(S)},set value(e){f(S,e,!0)}}),G(g(_,2),{variant:`primary`,onclick:M,get loading(){return a(x)},children:(e,t)=>{E();var r=c();i(()=>n(r,a(x)?`Creating`:`Create snapshot`)),u(e,r)},$$slots:{default:!0}}),j(m);var v=g(m,2),y=e=>{var t=de(),r=o(t,!0);j(t),i(()=>n(r,a(T))),u(e,t)};r(v,e=>{a(T)&&e(y)});var b=g(v,2),O=e=>{var t=fe(),r=o(t,!0);j(t),i(()=>n(r,a(C))),u(e,t)};r(b,e=>{a(C)&&e(O)}),j(l);var k=g(l,2),A=o(k),L=g(o(A),2),R=e=>{var t=pe(),r=o(t,!0);j(t),i(()=>n(r,a(D))),u(e,t)};r(L,e=>{a(D)&&e(R)}),j(A);var z=g(A,2),B=e=>{u(e,me())},H=e=>{u(e,he())},W=e=>{var t=_e();N(t,21,()=>a(d),p,(e,t)=>{var r=ge(),s=o(r);{let e=w(()=>I(a(t).kind));V(s,{get tone(){return a(e)},size:`sm`,children:(e,r)=>{E();var o=c();i(()=>n(o,a(t).kind)),u(e,o)},$$slots:{default:!0}})}var l=g(s,2),d=o(l,!0);j(l);var f=g(l,2),p=o(f,!0);j(f);var m=g(f,2),h=o(m,!0);j(m),j(r),i((e,r)=>{n(d,a(t).filename),n(p,e),n(h,r)},[()=>P(a(t).sizeBytes),()=>F(a(t).createdAt)]),u(e,r)}),j(t),u(e,t)};r(z,e=>{a(h)?e(B):a(d).length===0?e(H,1):e(W,-1)}),E(2),j(k),j(s),u(e,s)},$$slots:{footer:!0,default:!0}}),b()}var be=t(`<!> <!> <!>`,1),Z=t(`<div class="alert svelte-1bkgyl6" role="alert"> </div>`),xe=t(`<span class="tag tag-dry svelte-1bkgyl6">DRY RUN</span>`),Se=t(`<span class="tag tag-live svelte-1bkgyl6">PURGED</span>`),Ce=t(`<span class="result-summary svelte-1bkgyl6"> </span>`),we=t(`<li class="path svelte-1bkgyl6"> </li>`),Te=t(`<ul class="paths svelte-1bkgyl6"></ul>`),Ee=t(`<p class="empty svelte-1bkgyl6">No matching projects.</p>`),Q=t(`<div><div class="result-head svelte-1bkgyl6"><!> <!></div> <!></div>`),De=t(`<div class="clean-body svelte-1bkgyl6"><fieldset class="filters svelte-1bkgyl6"><legend class="legend svelte-1bkgyl6">Target filters</legend> <label class="row svelte-1bkgyl6"><input type="checkbox" class="check svelte-1bkgyl6"/> <span>Include <code class="svelte-1bkgyl6">.temp</code> paths</span></label> <label class="row svelte-1bkgyl6"><input type="checkbox" class="check svelte-1bkgyl6"/> <span>Include test / tmp / fixture / scratch / sandbox paths</span></label> <label class="row svelte-1bkgyl6"><input type="checkbox" class="check svelte-1bkgyl6"/> <span>Include unhealthy projects</span></label> <label class="row svelte-1bkgyl6"><input type="checkbox" class="check svelte-1bkgyl6"/> <span>Include never-indexed projects</span></label></fieldset> <!> <div class="purge-section svelte-1bkgyl6"><p class="purge-label svelte-1bkgyl6">Confirm destructive purge</p> <p class="purge-hint svelte-1bkgyl6">Type <strong class="purge-keyword svelte-1bkgyl6">PURGE</strong> to enable the red button.</p> <input type="text" class="purge-input svelte-1bkgyl6" placeholder="PURGE" autocomplete="off" spellcheck="false"/></div> <!> <!></div>`);function Oe(t,s){O(s,!0);let l=y(s,`open`,15,!0),d=e(!0),m=e(!1),h=e(!1),v=e(!1),x=e(``),C=e(``),T=w(()=>a(C)===`PURGE`),D=e(!1),P=e(null),F=e(null);function I(){l(!1),s.onClose?.()}async function L(e){f(D,!0),f(P,null),f(F,null);try{let t=await(await fetch(`/api/project/clean`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({includeTemp:a(d),includeTests:a(m),includeUnhealthy:a(h),includeNeverIndexed:a(v),pattern:a(x).trim()||void 0,dryRun:e})})).json();if(!t.success)f(F,t.error?.message??`Clean failed`,!0);else{let n=t.data??{};f(P,{removed:typeof n.removed==`number`?n.removed:void 0,dryRun:typeof n.dryRun==`boolean`?n.dryRun:e,paths:Array.isArray(n.paths)?n.paths.slice(0,50):void 0},!0),e||s.onSuccess?.()}}catch(e){f(F,e instanceof Error?e.message:`Unexpected error`,!0)}finally{f(D,!1)}}W(t,{title:`Clean Project Registry`,maxWidth:34,onclose:I,get open(){return l()},set open(e){l(e)},footer:e=>{var t=be(),n=_(t);G(n,{variant:`ghost`,onclick:I,children:(e,t)=>{E(),u(e,c(`Close`))},$$slots:{default:!0}});var r=g(n,2);G(r,{variant:`secondary`,get loading(){return a(D)},onclick:()=>L(!0),children:(e,t)=>{E(),u(e,c(`Preview`))},$$slots:{default:!0}});var i=g(r,2);{let e=w(()=>!a(T)||a(D));G(i,{variant:`danger`,get disabled(){return a(e)},get loading(){return a(D)},onclick:()=>L(!1),children:(e,t)=>{E(),u(e,c(`Purge`))},$$slots:{default:!0}})}u(e,t)},children:(e,t)=>{var s=De(),c=o(s),l=g(o(c),2),_=o(l);A(_),E(2),j(l);var y=g(l,2),b=o(y);A(b),E(2),j(y);var w=g(y,2),T=o(w);A(T),E(2),j(w);var D=g(w,2),O=o(D);A(O),E(2),j(D),j(c);var I=g(c,2);U(I,{label:`Pattern filter`,description:`Optional regex applied to project paths.`,placeholder:`e.g. /tmp/`,get value(){return a(x)},set value(e){f(x,e,!0)}});var L=g(I,2),R=g(o(L),4);A(R),j(L);var z=g(L,2),B=e=>{var t=Z(),r=o(t,!0);j(t),i(()=>n(r,a(F))),u(e,t)};r(z,e=>{a(F)&&e(B)});var V=g(z,2),H=e=>{var t=Q();let s;var c=o(t),l=o(c),d=e=>{u(e,xe())},f=e=>{u(e,Se())};r(l,e=>{a(P).dryRun?e(d):e(f,-1)});var m=g(l,2),h=e=>{var t=Ce(),r=o(t);j(t),i(()=>n(r,`${a(P).removed??``} project${a(P).removed===1?``:`s`}
3
3
  ${a(P).dryRun?`would be`:``} removed`)),u(e,t)};r(m,e=>{a(P).removed!==void 0&&e(h)}),j(c);var _=g(c,2),v=e=>{var t=Te();N(t,21,()=>a(P).paths,p,(e,t)=>{var r=we(),s=o(r,!0);j(r),i(()=>n(s,a(t))),u(e,r)}),j(t),u(e,t)},y=e=>{u(e,Ee())};r(_,e=>{a(P).paths&&a(P).paths.length>0?e(v):e(y,-1)}),j(t),i(()=>s=M(t,1,`result svelte-1bkgyl6`,null,s,{"is-dry-run":a(P).dryRun})),u(e,t)};r(V,e=>{a(P)!==null&&e(H)}),j(s),k(_,()=>a(d),e=>f(d,e)),k(b,()=>a(m),e=>f(m,e)),k(T,()=>a(h),e=>f(h,e)),k(O,()=>a(v),e=>f(v,e)),S(R,()=>a(C),e=>f(C,e)),u(e,s)},$$slots:{footer:!0,default:!0}}),b()}var ke=t(`<!> <!>`,1),Ae=t(`<div class="body svelte-15ygpq"><p class="warning svelte-15ygpq">This removes the project from the nexus registry. Files on disk are not touched.</p> <p class="hint svelte-15ygpq">Type <strong class="keyword svelte-15ygpq"> </strong> to confirm:</p> <input type="text" class="confirm-input svelte-15ygpq" autocomplete="off" spellcheck="false"/></div>`);function je(t,r){O(r,!0);let s=y(r,`open`,15,!0),l=e(``),d=w(()=>a(l)===r.projectName);function p(){s(!1),r.onClose?.()}function m(){a(d)&&r.onConfirm()}W(t,{title:`Delete project`,maxWidth:28,closeOnBackdrop:!1,onclose:p,get open(){return s()},set open(e){s(e)},footer:e=>{var t=ke(),n=_(t);G(n,{variant:`ghost`,onclick:p,children:(e,t)=>{E(),u(e,c(`Cancel`))},$$slots:{default:!0}});var r=g(n,2);{let e=w(()=>!a(d));G(r,{variant:`danger`,get disabled(){return a(e)},onclick:m,children:(e,t)=>{E(),u(e,c(`Delete`))},$$slots:{default:!0}})}u(e,t)},children:(e,t)=>{var s=Ae(),c=g(o(s),2),d=g(o(c)),p=o(d,!0);j(d),E(),j(c);var m=g(c,2);A(m),j(s),i(()=>{n(p,r.projectName),C(m,`placeholder`,r.projectName)}),S(m,()=>a(l),e=>f(l,e)),u(e,s)},$$slots:{footer:!0,default:!0}}),b()}var $=t(`<!> <!>`,1),Me=t(`<div class="state svelte-ef4fmo"><span class="spinner svelte-ef4fmo" aria-hidden="true"></span> <span>Running diagnostics…</span></div>`),Ne=t(`<div class="alert svelte-ef4fmo" role="alert"> </div>`),Pe=t(`<span class="result-time svelte-ef4fmo"> </span>`),Fe=t(`<div class="field svelte-ef4fmo"><span class="field-key svelte-ef4fmo"> </span> <pre class="field-value svelte-ef4fmo"> </pre></div>`),Ie=t(`<div class="result svelte-ef4fmo"><div class="result-head svelte-ef4fmo"><!> <!></div> <div class="fields svelte-ef4fmo"></div></div>`),Le=t(`<div class="body svelte-ef4fmo"><p class="description svelte-ef4fmo">Runs <code class="svelte-ef4fmo">cleo nexus doctor</code> against the active project. Reports schema versions, row
4
4
  counts, orphaned references, and broken links.</p> <!> <!> <!></div>`);function Re(t,s){O(s,!0);let l=y(s,`open`,15,!0),d=y(s,`projectId`,3,null),h=e(!1),v=e(null),x=e(null),S=e(null);function C(){l(!1),s.onClose?.()}async function D(){f(h,!0),f(v,null),f(x,null);try{let e=await(await fetch(`/api/project/doctor`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(d()?{projectId:d()}:{})})).json();e.success?(f(x,e.data??{},!0),f(S,new Date().toLocaleTimeString(),!0)):f(v,e.error?.message??`Doctor failed`,!0)}catch(e){f(v,e instanceof Error?e.message:`Unexpected error`,!0)}finally{f(h,!1)}}m(()=>{l()&&a(x)===null&&!a(h)&&D()});function k(e){if(e===null)return`null`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e,null,2)}catch{return String(e)}}function A(e){return Array.isArray(e)?e.length===0?`success`:e.length<5?`warning`:`danger`:`neutral`}W(t,{title:`Project Doctor`,maxWidth:48,onclose:C,get open(){return l()},set open(e){l(e)},footer:e=>{var t=$(),r=_(t);G(r,{variant:`ghost`,onclick:C,children:(e,t)=>{E(),u(e,c(`Close`))},$$slots:{default:!0}}),G(g(r,2),{variant:`secondary`,onclick:D,get loading(){return a(h)},children:(e,t)=>{E();var r=c();i(()=>n(r,a(h)?`Running`:`Re-run`)),u(e,r)},$$slots:{default:!0}}),u(e,t)},children:(e,t)=>{var s=Le(),l=g(o(s),2),d=e=>{u(e,Me())};r(l,e=>{a(h)&&e(d)});var f=g(l,2),m=e=>{var t=Ne(),r=o(t,!0);j(t),i(()=>n(r,a(v))),u(e,t)};r(f,e=>{a(v)&&e(m)});var _=g(f,2),y=e=>{var t=Ie(),s=o(t),l=o(s);{let e=w(()=>A(a(x).issues));V(l,{get tone(){return a(e)},children:(e,t)=>{E();var r=c();i(e=>n(r,e),[()=>Array.isArray(a(x).issues)&&a(x).issues.length===0?`healthy`:`issues`]),u(e,r)},$$slots:{default:!0}})}var d=g(l,2),f=e=>{var t=Pe(),r=o(t);j(t),i(()=>n(r,`checked at ${a(S)??``}`)),u(e,t)};r(d,e=>{a(S)&&e(f)}),j(s);var m=g(s,2);N(m,21,()=>Object.entries(a(x)),p,(e,t)=>{var r=w(()=>T(a(t),2));let s=()=>a(r)[0],c=()=>a(r)[1];var l=Fe(),d=o(l),f=o(d,!0);j(d);var p=g(d,2),m=o(p,!0);j(p),j(l),i(e=>{n(f,s()),n(m,e)},[()=>k(c())]),u(e,l)}),j(m),j(t),u(e,t)};r(_,e=>{a(x)&&e(y)}),j(s),u(e,s)},$$slots:{footer:!0,default:!0}}),b()}var ze=t(`<!> <!> <!>`,1),Be=t(`<div class="alert svelte-1o64xpr" role="alert"> </div>`),Ve=t(`<span class="tag tag-dry svelte-1o64xpr">DRY RUN</span>`),He=t(`<span class="tag tag-live svelte-1o64xpr">REMOVED</span>`),Ue=t(`<span class="result-summary svelte-1o64xpr"> </span>`),We=t(`<div><div class="result-head svelte-1o64xpr"><!> <!></div></div>`),Ge=t(`<div class="body svelte-1o64xpr"><p class="description svelte-1o64xpr">Removes orphaned nexus rows (dead edges, unreferenced symbols).
@@ -1 +1 @@
1
- import{$ as e,A as t,B as n,D as r,E as i,H as a,I as o,J as s,K as c,M as l,N as u,O as d,P as f,Q as p,U as m,X as h,Y as g,a as _,at as v,d as y,et as b,k as x,lt as S,nt as C,ot as w,tt as ee,ut as T,v as E,w as D,x as O,z as k}from"../chunks/DGftG5oL.js";import{r as A}from"../chunks/B7XMzKvO.js";import"../chunks/B8WnZMYa.js";import{t as j}from"../chunks/D5Xqss9F.js";import{a as te}from"../chunks/DZrdToAH.js";import"../chunks/CTLGzgdN.js";import{f as M,i as N,v as P,y as F}from"../chunks/EZwHPWle.js";import"../chunks/Dif6upEP.js";import{n as I,t as L}from"../chunks/C87Q3uxm.js";var R=t(`· scoped to <code class="svelte-1lzd0zi"> </code>`,1),z=t(`for <code class="svelte-1lzd0zi"> </code>`,1),B=t(`<div class="empty-state svelte-1lzd0zi"><p>No tasks in this workgraph <!>.</p></div>`),V=t(`<div class="workgraph-view svelte-1lzd0zi"><div class="workgraph-meta svelte-1lzd0zi"><span class="count svelte-1lzd0zi"><strong class="svelte-1lzd0zi"> </strong> nodes · <strong class="svelte-1lzd0zi"> </strong> edges <!></span> <span class="legend-hint svelte-1lzd0zi">containment · depends · blocks</span></div> <div class="workgraph-body svelte-1lzd0zi"><div class="graph-wrap svelte-1lzd0zi"><!></div> <!></div></div>`);function H(e,t){w(t,!0);let n=_(t,`sagaId`,3,null),c=_(t,`includeCancelled`,3,!1),l=_(t,`selectedId`,15,null),u=b(()=>F(t.tasks,t.deps,{epicScope:n(),includeCancelled:c(),includeArchived:!1})),f=new Set([`parent`,`blocks`,`depends`]),p=b(()=>new Map(t.tasks.map(e=>[e.id,e]))),m=b(()=>l()?o(p).get(l())??null:null),y=b(()=>{if(!o(m))return[];let e=[];for(let n of t.deps){if(n.taskId!==o(m).id)continue;let t=o(p).get(n.dependsOn);t&&e.push({id:t.id,title:t.title,status:t.status,priority:t.priority})}return e}),x=b(()=>{if(!o(m))return[];let e=[];for(let n of t.deps){if(n.dependsOn!==o(m).id)continue;let t=o(p).get(n.taskId);t&&e.push({id:t.id,title:t.title,status:t.status,priority:t.priority})}return e}),C=b(()=>{if(!o(m))return[];let e=[],t=o(m).parentId?o(p).get(o(m).parentId):void 0,n=new Set;for(;t&&!n.has(t.id);)n.add(t.id),e.unshift({id:t.id,title:t.title,type:t.type}),t=t.parentId?o(p).get(t.parentId):void 0;return e});function ee(e){l(e.id)}function E(){l(null)}function D(e){l(e)}var O=V(),k=s(O),A=s(k),j=s(A),te=s(j,!0);T(j);var N=h(j,2),I=s(N,!0);T(N);var L=h(N,2),H=e=>{var t=R(),i=h(g(t)),o=s(i,!0);T(i),a(()=>r(o,n())),d(e,t)};i(L,e=>{n()&&e(H)}),T(A),S(2),T(k);var U=h(k,2),W=s(U),G=s(W),K=e=>{var t=B(),o=s(t),c=h(s(o)),l=e=>{var t=z(),i=h(g(t)),o=s(i,!0);T(i),a(()=>r(o,n())),d(e,t)};i(c,e=>{n()&&e(l)}),S(),T(o),T(t),d(e,t)},q=e=>{P(e,{get nodes(){return o(u).nodes},get edges(){return o(u).edges},get clusters(){return o(u).clusters},get visibleEdgeKinds(){return f},get selectedNodeId(){return l()},onNodeClick:ee,showLabels:`id-only`,nodeRenderer:`pill`,showToolbar:!0,showLegend:!0,ariaLabel:`Saga workgraph — containment and dependency edges`})};i(G,e=>{o(u).nodes.length===0?e(K):e(q,-1)}),T(W);var J=h(W,2),Y=e=>{M(e,{get task(){return o(m)},get upstream(){return o(y)},get downstream(){return o(x)},get parentChain(){return o(C)},onClose:E,onSelectDep:D})};i(J,e=>{o(m)&&e(Y)}),T(U),T(O),a(()=>{r(te,o(u).nodes.length),r(I,o(u).edges.length)}),d(e,O),v()}var U=[`hermes`,`nous`,`bronze`,`slate`,`mono`],W={hermes:`Hermes`,nous:`Nous`,bronze:`Bronze`,slate:`Slate`,mono:`Mono`},G=`hermes`,K=`cleo-studio-theme`,q=`cleo-studio-theme-mode`;function J(e){return U.includes(e??``)?e:G}var Y=class{#e=e(G);#t=e(!1);constructor(e){e&&p(this.#e,e,!0)}get active(){return o(this.#e)}get light(){return o(this.#t)}get themes(){return U}hydrate(){typeof localStorage<`u`&&(p(this.#e,J(localStorage.getItem(K)),!0),p(this.#t,localStorage.getItem(q)===`light`)),this.apply()}set(e){p(this.#e,e,!0),typeof localStorage<`u`&&localStorage.setItem(K,e),this.apply()}toggleLight(){p(this.#t,!o(this.#t)),typeof localStorage<`u`&&localStorage.setItem(q,o(this.#t)?`light`:`dark`),this.apply()}apply(){if(typeof document>`u`)return;let e=document.documentElement;e.setAttribute(`data-theme`,o(this.#e)),e.classList.toggle(`light`,o(this.#t))}};function ne(e){return new Y(e)}var X=t(`<button type="button" role="radio"><span class="swatch svelte-2szurj" aria-hidden="true"></span> </button>`),Z=t(`<div class="theme-switcher svelte-2szurj" role="group" aria-label="Operator console theme"><div class="seg svelte-2szurj" role="radiogroup" aria-label="Theme palette"></div> <button type="button" class="mode-btn svelte-2szurj" title="Toggle light operator console"> </button></div>`);function re(e,t){w(t,!0);function n(e){t.theme.set(e)}var i=Z(),o=s(i);D(o,20,()=>t.theme.themes,e=>e,(e,i)=>{var o=X();let c;var l=s(o),u=h(l);T(o),a(()=>{c=E(o,1,`seg-btn svelte-2szurj`,null,c,{active:t.theme.active===i}),y(o,`aria-checked`,t.theme.active===i),y(o,`title`,`${W[i]} theme`),y(l,`data-theme`,i),r(u,` ${W[i]??``}`)}),f(`click`,o,()=>n(i)),d(e,o)}),T(o);var c=h(o,2),l=s(c,!0);T(c),T(i),a(()=>{y(c,`aria-pressed`,t.theme.light),r(l,t.theme.light?`Light`:`Dark`)}),f(`click`,c,()=>t.theme.toggleLight()),d(e,i),v()}u([`click`]);var Q=t(`<div class="empty-state svelte-62ic89"><p class="svelte-62ic89">No active cards in <code class="svelte-62ic89"> </code>.</p></div>`),ie=t(`<div class="board-host svelte-62ic89"><!></div>`),ae=t(`<div role="status" aria-live="polite"> </div>`),$=t(`<div class="saga-kanban-pane svelte-62ic89"><div class="pane-meta svelte-62ic89"><span class="count svelte-62ic89"><strong class="svelte-62ic89"> </strong> cards in saga</span> <span><span class="live-dot svelte-62ic89" aria-hidden="true"></span> </span></div> <!></div> <!> <!>`,1);function oe(t,n){w(n,!0);let c=L({root:k(()=>n.sagaId)}),l=e(!1);m(()=>(c.hydrate().then(()=>{p(l,!0)}),c.connect(),()=>c.disconnect()));let u=b(()=>c.lanes),f=b(()=>c.columns.flatMap(e=>e.cards.filter(e=>n.subtreeIds.has(e.id)).map(e=>({...e,__lane:e.lane}))));function _(e){return e.__lane??`backlog`}let y=e(null),x=b(()=>o(y)?o(f).find(e=>e.id===o(y))??null:null),C=b(()=>o(x)?{id:o(x).id,title:o(x).title,description:o(x).title,status:o(x).status,priority:o(x).priority,size:o(x).size??void 0,createdAt:new Date().toISOString()}:null);function ee(e){p(y,e,!0)}function D(){p(y,null)}let O=e(null),A=null;function j(e,t){p(O,{kind:e,message:t},!0),A&&clearTimeout(A),A=setTimeout(()=>{p(O,null)},4200)}async function te(e,t,n){let r=t,i=n,a=N(e,r,i);if(!a.ok){j(`err`,a.message);return}let o=await c.move(e,r,i);if(!o.ok){j(`err`,o.message);return}j(`ok`,a.plan.summary)}let P=b(()=>o(l)&&c.connected),F=b(()=>o(f).length);var R=$(),z=g(R),B=s(z),V=s(B),H=s(V),U=s(H,!0);T(H),S(),T(V);var W=h(V,2);let G;var K=h(s(W));T(W),T(B);var q=h(B,2),J=e=>{var t=Q(),i=s(t),o=h(s(i)),c=s(o,!0);T(o),S(),T(i),T(t),a(()=>r(c,n.sagaId)),d(e,t)},Y=e=>{var t=ie();I(s(t),{get lanes(){return o(u)},get cards(){return o(f)},laneResolver:_,onSelect:ee,onMove:te}),T(t),d(e,t)};i(q,e=>{o(l)&&o(F)===0?e(J):e(Y,-1)}),T(z);var ne=h(z,2),X=e=>{var t=ae();let n;var i=s(t,!0);T(t),a(()=>{n=E(t,1,`toast svelte-62ic89`,null,n,{err:o(O).kind===`err`}),r(i,o(O).message)}),d(e,t)};i(ne,e=>{o(O)&&e(X)});var Z=h(ne,2),re=e=>{M(e,{get task(){return o(C)},onClose:D})};i(Z,e=>{o(C)&&e(re)}),a(()=>{r(U,o(F)),G=E(W,1,`live svelte-62ic89`,null,G,{connected:o(P)}),r(K,` ${o(P)?`live`:`connecting…`}`)}),d(t,R),v()}var se=t(`<meta name="robots" content="noindex"/>`),ce=t(`<span class="crumb-title svelte-b7bs0"> </span>`),le=t(`<div class="shell-error svelte-b7bs0" role="alert"><p> </p></div>`),ue=t(`<div class="shell-error svelte-b7bs0" role="alert"><p>No workgraph bundle available for this saga.</p></div>`);t(`<div class="ssr-placeholder svelte-b7bs0"><p>Loading the live board…</p></div>`);var de=t(`<section class="saga-shell svelte-b7bs0"><header class="command-bar svelte-b7bs0"><nav class="crumbs svelte-b7bs0" aria-label="Breadcrumb"><a class="crumb svelte-b7bs0" href="/projects"> </a> <span class="sep svelte-b7bs0" aria-hidden="true">▸</span> <span class="crumb current svelte-b7bs0"><code class="svelte-b7bs0"> </code> <!></span> <!></nav> <div class="toggle svelte-b7bs0" role="tablist" aria-label="Saga view"><button type="button" role="tab">Workgraph</button> <button type="button" role="tab">Kanban</button></div> <div class="bar-right svelte-b7bs0"><!></div></header> <div class="canvas svelte-b7bs0"><!></div> <footer class="shell-foot svelte-b7bs0"><span class="hint svelte-b7bs0"> </span></footer></section>`);function fe(e,t){w(t,!0);let u=()=>C(j,`$page`,p),[p,_]=ee(),D=ne();m(()=>{D.hydrate()});let k=b(()=>u().url.searchParams.get(`view`)===`kanban`?`kanban`:`workgraph`);function M(e){let t=new URL(u().url);t.searchParams.set(`view`,e),A(t.pathname+t.search,{replaceState:!0,noScroll:!0,keepFocus:!0})}let N=b(()=>{let e=new Set([t.data.sagaId]),n=t.data.explorer?.tasks??[],r=!0;for(;r;){r=!1;for(let t of n)e.has(t.id)||t.parentId&&e.has(t.parentId)&&(e.add(t.id),r=!0)}return e}),P=b(()=>t.data.saga?.title??t.data.sagaId),F=b(()=>t.data.explorer?.tasks.length??0);var I=de();O(`b7bs0`,e=>{var r=se();n(()=>{c.title=`${t.data.sagaId??``} · ${t.data.projectName??``} — CLEO Studio`}),d(e,r)});var L=s(I),R=s(L),z=s(R),B=s(z,!0);T(z);var V=h(z,4),U=s(V),W=s(U,!0);T(U);var G=h(U,2),K=e=>{var n=ce(),i=s(n,!0);T(n),a(()=>r(i,t.data.saga.title)),d(e,n)};i(G,e=>{t.data.saga&&e(K)}),T(V);var q=h(V,2),J=e=>{te(e,{tone:`info`,size:`sm`,children:(e,n)=>{S();var i=l();a(()=>r(i,t.data.saga.type)),d(e,i)},$$slots:{default:!0}})};i(q,e=>{t.data.saga&&e(J)}),T(R);var Y=h(R,2),X=s(Y);let Z;var Q=h(X,2);let ie;T(Y);var ae=h(Y,2);re(s(ae),{get theme(){return D}}),T(ae),T(L);var $=h(L,2),fe=s($),pe=e=>{var n=le(),i=s(n),o=s(i,!0);T(i),T(n),a(()=>r(o,t.data.error)),d(e,n)},me=e=>{d(e,ue())},he=e=>{H(e,{get tasks(){return t.data.explorer.tasks},get deps(){return t.data.explorer.deps},get sagaId(){return t.data.sagaId}})},ge=e=>{var n=x(),r=g(n),a=e=>{oe(e,{get sagaId(){return t.data.sagaId},get subtreeIds(){return o(N)}})};i(r,e=>{e(a)}),d(e,n)};i(fe,e=>{t.data.error?e(pe):t.data.explorer?o(k)===`workgraph`?e(he,2):e(ge,-1):e(me,1)}),T($);var _e=h($,2),ve=s(_e),ye=s(ve);T(ve),T(_e),T(I),a(()=>{y(I,`data-view`,o(k)),r(B,t.data.projectName),y(V,`title`,o(P)),r(W,t.data.sagaId),Z=E(X,1,`toggle-btn svelte-b7bs0`,null,Z,{active:o(k)===`workgraph`}),y(X,`aria-selected`,o(k)===`workgraph`),ie=E(Q,1,`toggle-btn svelte-b7bs0`,null,ie,{active:o(k)===`kanban`}),y(Q,`aria-selected`,o(k)===`kanban`),r(ye,`${o(F)??``} tasks in bundle · containment + depends · operator console`)}),f(`click`,X,()=>M(`workgraph`)),f(`click`,Q,()=>M(`kanban`)),d(e,I),v(),_()}u([`click`]);export{fe as component};
1
+ import{$ as e,A as t,B as n,D as r,E as i,H as a,I as o,J as s,K as c,M as l,N as u,O as d,P as f,Q as p,U as m,X as h,Y as g,a as _,at as v,d as y,et as b,k as x,lt as S,nt as C,ot as w,tt as ee,ut as T,v as E,w as D,x as O,z as k}from"../chunks/DGftG5oL.js";import{r as A}from"../chunks/COEVVgGn.js";import"../chunks/B8WnZMYa.js";import{t as j}from"../chunks/NUtQpztF.js";import{a as te}from"../chunks/DZrdToAH.js";import"../chunks/CTLGzgdN.js";import{f as M,i as N,v as P,y as F}from"../chunks/EZwHPWle.js";import"../chunks/D2NG8h_r.js";import{n as I,t as L}from"../chunks/C87Q3uxm.js";var R=t(`· scoped to <code class="svelte-1lzd0zi"> </code>`,1),z=t(`for <code class="svelte-1lzd0zi"> </code>`,1),B=t(`<div class="empty-state svelte-1lzd0zi"><p>No tasks in this workgraph <!>.</p></div>`),V=t(`<div class="workgraph-view svelte-1lzd0zi"><div class="workgraph-meta svelte-1lzd0zi"><span class="count svelte-1lzd0zi"><strong class="svelte-1lzd0zi"> </strong> nodes · <strong class="svelte-1lzd0zi"> </strong> edges <!></span> <span class="legend-hint svelte-1lzd0zi">containment · depends · blocks</span></div> <div class="workgraph-body svelte-1lzd0zi"><div class="graph-wrap svelte-1lzd0zi"><!></div> <!></div></div>`);function H(e,t){w(t,!0);let n=_(t,`sagaId`,3,null),c=_(t,`includeCancelled`,3,!1),l=_(t,`selectedId`,15,null),u=b(()=>F(t.tasks,t.deps,{epicScope:n(),includeCancelled:c(),includeArchived:!1})),f=new Set([`parent`,`blocks`,`depends`]),p=b(()=>new Map(t.tasks.map(e=>[e.id,e]))),m=b(()=>l()?o(p).get(l())??null:null),y=b(()=>{if(!o(m))return[];let e=[];for(let n of t.deps){if(n.taskId!==o(m).id)continue;let t=o(p).get(n.dependsOn);t&&e.push({id:t.id,title:t.title,status:t.status,priority:t.priority})}return e}),x=b(()=>{if(!o(m))return[];let e=[];for(let n of t.deps){if(n.dependsOn!==o(m).id)continue;let t=o(p).get(n.taskId);t&&e.push({id:t.id,title:t.title,status:t.status,priority:t.priority})}return e}),C=b(()=>{if(!o(m))return[];let e=[],t=o(m).parentId?o(p).get(o(m).parentId):void 0,n=new Set;for(;t&&!n.has(t.id);)n.add(t.id),e.unshift({id:t.id,title:t.title,type:t.type}),t=t.parentId?o(p).get(t.parentId):void 0;return e});function ee(e){l(e.id)}function E(){l(null)}function D(e){l(e)}var O=V(),k=s(O),A=s(k),j=s(A),te=s(j,!0);T(j);var N=h(j,2),I=s(N,!0);T(N);var L=h(N,2),H=e=>{var t=R(),i=h(g(t)),o=s(i,!0);T(i),a(()=>r(o,n())),d(e,t)};i(L,e=>{n()&&e(H)}),T(A),S(2),T(k);var U=h(k,2),W=s(U),G=s(W),K=e=>{var t=B(),o=s(t),c=h(s(o)),l=e=>{var t=z(),i=h(g(t)),o=s(i,!0);T(i),a(()=>r(o,n())),d(e,t)};i(c,e=>{n()&&e(l)}),S(),T(o),T(t),d(e,t)},q=e=>{P(e,{get nodes(){return o(u).nodes},get edges(){return o(u).edges},get clusters(){return o(u).clusters},get visibleEdgeKinds(){return f},get selectedNodeId(){return l()},onNodeClick:ee,showLabels:`id-only`,nodeRenderer:`pill`,showToolbar:!0,showLegend:!0,ariaLabel:`Saga workgraph — containment and dependency edges`})};i(G,e=>{o(u).nodes.length===0?e(K):e(q,-1)}),T(W);var J=h(W,2),Y=e=>{M(e,{get task(){return o(m)},get upstream(){return o(y)},get downstream(){return o(x)},get parentChain(){return o(C)},onClose:E,onSelectDep:D})};i(J,e=>{o(m)&&e(Y)}),T(U),T(O),a(()=>{r(te,o(u).nodes.length),r(I,o(u).edges.length)}),d(e,O),v()}var U=[`hermes`,`nous`,`bronze`,`slate`,`mono`],W={hermes:`Hermes`,nous:`Nous`,bronze:`Bronze`,slate:`Slate`,mono:`Mono`},G=`hermes`,K=`cleo-studio-theme`,q=`cleo-studio-theme-mode`;function J(e){return U.includes(e??``)?e:G}var Y=class{#e=e(G);#t=e(!1);constructor(e){e&&p(this.#e,e,!0)}get active(){return o(this.#e)}get light(){return o(this.#t)}get themes(){return U}hydrate(){typeof localStorage<`u`&&(p(this.#e,J(localStorage.getItem(K)),!0),p(this.#t,localStorage.getItem(q)===`light`)),this.apply()}set(e){p(this.#e,e,!0),typeof localStorage<`u`&&localStorage.setItem(K,e),this.apply()}toggleLight(){p(this.#t,!o(this.#t)),typeof localStorage<`u`&&localStorage.setItem(q,o(this.#t)?`light`:`dark`),this.apply()}apply(){if(typeof document>`u`)return;let e=document.documentElement;e.setAttribute(`data-theme`,o(this.#e)),e.classList.toggle(`light`,o(this.#t))}};function ne(e){return new Y(e)}var X=t(`<button type="button" role="radio"><span class="swatch svelte-2szurj" aria-hidden="true"></span> </button>`),Z=t(`<div class="theme-switcher svelte-2szurj" role="group" aria-label="Operator console theme"><div class="seg svelte-2szurj" role="radiogroup" aria-label="Theme palette"></div> <button type="button" class="mode-btn svelte-2szurj" title="Toggle light operator console"> </button></div>`);function re(e,t){w(t,!0);function n(e){t.theme.set(e)}var i=Z(),o=s(i);D(o,20,()=>t.theme.themes,e=>e,(e,i)=>{var o=X();let c;var l=s(o),u=h(l);T(o),a(()=>{c=E(o,1,`seg-btn svelte-2szurj`,null,c,{active:t.theme.active===i}),y(o,`aria-checked`,t.theme.active===i),y(o,`title`,`${W[i]} theme`),y(l,`data-theme`,i),r(u,` ${W[i]??``}`)}),f(`click`,o,()=>n(i)),d(e,o)}),T(o);var c=h(o,2),l=s(c,!0);T(c),T(i),a(()=>{y(c,`aria-pressed`,t.theme.light),r(l,t.theme.light?`Light`:`Dark`)}),f(`click`,c,()=>t.theme.toggleLight()),d(e,i),v()}u([`click`]);var Q=t(`<div class="empty-state svelte-62ic89"><p class="svelte-62ic89">No active cards in <code class="svelte-62ic89"> </code>.</p></div>`),ie=t(`<div class="board-host svelte-62ic89"><!></div>`),ae=t(`<div role="status" aria-live="polite"> </div>`),$=t(`<div class="saga-kanban-pane svelte-62ic89"><div class="pane-meta svelte-62ic89"><span class="count svelte-62ic89"><strong class="svelte-62ic89"> </strong> cards in saga</span> <span><span class="live-dot svelte-62ic89" aria-hidden="true"></span> </span></div> <!></div> <!> <!>`,1);function oe(t,n){w(n,!0);let c=L({root:k(()=>n.sagaId)}),l=e(!1);m(()=>(c.hydrate().then(()=>{p(l,!0)}),c.connect(),()=>c.disconnect()));let u=b(()=>c.lanes),f=b(()=>c.columns.flatMap(e=>e.cards.filter(e=>n.subtreeIds.has(e.id)).map(e=>({...e,__lane:e.lane}))));function _(e){return e.__lane??`backlog`}let y=e(null),x=b(()=>o(y)?o(f).find(e=>e.id===o(y))??null:null),C=b(()=>o(x)?{id:o(x).id,title:o(x).title,description:o(x).title,status:o(x).status,priority:o(x).priority,size:o(x).size??void 0,createdAt:new Date().toISOString()}:null);function ee(e){p(y,e,!0)}function D(){p(y,null)}let O=e(null),A=null;function j(e,t){p(O,{kind:e,message:t},!0),A&&clearTimeout(A),A=setTimeout(()=>{p(O,null)},4200)}async function te(e,t,n){let r=t,i=n,a=N(e,r,i);if(!a.ok){j(`err`,a.message);return}let o=await c.move(e,r,i);if(!o.ok){j(`err`,o.message);return}j(`ok`,a.plan.summary)}let P=b(()=>o(l)&&c.connected),F=b(()=>o(f).length);var R=$(),z=g(R),B=s(z),V=s(B),H=s(V),U=s(H,!0);T(H),S(),T(V);var W=h(V,2);let G;var K=h(s(W));T(W),T(B);var q=h(B,2),J=e=>{var t=Q(),i=s(t),o=h(s(i)),c=s(o,!0);T(o),S(),T(i),T(t),a(()=>r(c,n.sagaId)),d(e,t)},Y=e=>{var t=ie();I(s(t),{get lanes(){return o(u)},get cards(){return o(f)},laneResolver:_,onSelect:ee,onMove:te}),T(t),d(e,t)};i(q,e=>{o(l)&&o(F)===0?e(J):e(Y,-1)}),T(z);var ne=h(z,2),X=e=>{var t=ae();let n;var i=s(t,!0);T(t),a(()=>{n=E(t,1,`toast svelte-62ic89`,null,n,{err:o(O).kind===`err`}),r(i,o(O).message)}),d(e,t)};i(ne,e=>{o(O)&&e(X)});var Z=h(ne,2),re=e=>{M(e,{get task(){return o(C)},onClose:D})};i(Z,e=>{o(C)&&e(re)}),a(()=>{r(U,o(F)),G=E(W,1,`live svelte-62ic89`,null,G,{connected:o(P)}),r(K,` ${o(P)?`live`:`connecting…`}`)}),d(t,R),v()}var se=t(`<meta name="robots" content="noindex"/>`),ce=t(`<span class="crumb-title svelte-b7bs0"> </span>`),le=t(`<div class="shell-error svelte-b7bs0" role="alert"><p> </p></div>`),ue=t(`<div class="shell-error svelte-b7bs0" role="alert"><p>No workgraph bundle available for this saga.</p></div>`);t(`<div class="ssr-placeholder svelte-b7bs0"><p>Loading the live board…</p></div>`);var de=t(`<section class="saga-shell svelte-b7bs0"><header class="command-bar svelte-b7bs0"><nav class="crumbs svelte-b7bs0" aria-label="Breadcrumb"><a class="crumb svelte-b7bs0" href="/projects"> </a> <span class="sep svelte-b7bs0" aria-hidden="true">▸</span> <span class="crumb current svelte-b7bs0"><code class="svelte-b7bs0"> </code> <!></span> <!></nav> <div class="toggle svelte-b7bs0" role="tablist" aria-label="Saga view"><button type="button" role="tab">Workgraph</button> <button type="button" role="tab">Kanban</button></div> <div class="bar-right svelte-b7bs0"><!></div></header> <div class="canvas svelte-b7bs0"><!></div> <footer class="shell-foot svelte-b7bs0"><span class="hint svelte-b7bs0"> </span></footer></section>`);function fe(e,t){w(t,!0);let u=()=>C(j,`$page`,p),[p,_]=ee(),D=ne();m(()=>{D.hydrate()});let k=b(()=>u().url.searchParams.get(`view`)===`kanban`?`kanban`:`workgraph`);function M(e){let t=new URL(u().url);t.searchParams.set(`view`,e),A(t.pathname+t.search,{replaceState:!0,noScroll:!0,keepFocus:!0})}let N=b(()=>{let e=new Set([t.data.sagaId]),n=t.data.explorer?.tasks??[],r=!0;for(;r;){r=!1;for(let t of n)e.has(t.id)||t.parentId&&e.has(t.parentId)&&(e.add(t.id),r=!0)}return e}),P=b(()=>t.data.saga?.title??t.data.sagaId),F=b(()=>t.data.explorer?.tasks.length??0);var I=de();O(`b7bs0`,e=>{var r=se();n(()=>{c.title=`${t.data.sagaId??``} · ${t.data.projectName??``} — CLEO Studio`}),d(e,r)});var L=s(I),R=s(L),z=s(R),B=s(z,!0);T(z);var V=h(z,4),U=s(V),W=s(U,!0);T(U);var G=h(U,2),K=e=>{var n=ce(),i=s(n,!0);T(n),a(()=>r(i,t.data.saga.title)),d(e,n)};i(G,e=>{t.data.saga&&e(K)}),T(V);var q=h(V,2),J=e=>{te(e,{tone:`info`,size:`sm`,children:(e,n)=>{S();var i=l();a(()=>r(i,t.data.saga.type)),d(e,i)},$$slots:{default:!0}})};i(q,e=>{t.data.saga&&e(J)}),T(R);var Y=h(R,2),X=s(Y);let Z;var Q=h(X,2);let ie;T(Y);var ae=h(Y,2);re(s(ae),{get theme(){return D}}),T(ae),T(L);var $=h(L,2),fe=s($),pe=e=>{var n=le(),i=s(n),o=s(i,!0);T(i),T(n),a(()=>r(o,t.data.error)),d(e,n)},me=e=>{d(e,ue())},he=e=>{H(e,{get tasks(){return t.data.explorer.tasks},get deps(){return t.data.explorer.deps},get sagaId(){return t.data.sagaId}})},ge=e=>{var n=x(),r=g(n),a=e=>{oe(e,{get sagaId(){return t.data.sagaId},get subtreeIds(){return o(N)}})};i(r,e=>{e(a)}),d(e,n)};i(fe,e=>{t.data.error?e(pe):t.data.explorer?o(k)===`workgraph`?e(he,2):e(ge,-1):e(me,1)}),T($);var _e=h($,2),ve=s(_e),ye=s(ve);T(ve),T(_e),T(I),a(()=>{y(I,`data-view`,o(k)),r(B,t.data.projectName),y(V,`title`,o(P)),r(W,t.data.sagaId),Z=E(X,1,`toggle-btn svelte-b7bs0`,null,Z,{active:o(k)===`workgraph`}),y(X,`aria-selected`,o(k)===`workgraph`),ie=E(Q,1,`toggle-btn svelte-b7bs0`,null,ie,{active:o(k)===`kanban`}),y(Q,`aria-selected`,o(k)===`kanban`),r(ye,`${o(F)??``} tasks in bundle · containment + depends · operator console`)}),f(`click`,X,()=>M(`workgraph`)),f(`click`,Q,()=>M(`kanban`)),d(e,I),v(),_()}u([`click`]);export{fe as component};