@cleocode/cleo 2026.9.23 → 2026.9.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +1385 -347
- package/package.json +13 -13
- package/studio-dist/client/_app/immutable/chunks/{VqMa-FR_.js → BeSHW-PI.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/BmmibeAn.js +1 -0
- package/studio-dist/client/_app/immutable/chunks/{DJ4ceMnt.js → CqxUYDwj.js} +1 -1
- package/studio-dist/client/_app/immutable/chunks/{DlnXUEcN.js → iXXfYtUd.js} +1 -1
- package/studio-dist/client/_app/immutable/entry/{app.CXLixB0X.js → app.D0MhB1gq.js} +2 -2
- package/studio-dist/client/_app/immutable/entry/start.Z2uJ5V0K.js +1 -0
- package/studio-dist/client/_app/immutable/nodes/{0.D34GfsBr.js → 0.CPm_3d_8.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{1.COzO-K-Z.js → 1.kD8K_ebT.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{15.CkLwS1y2.js → 15.WEaAYVEy.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{16.C2MFh329.js → 16.SxplBCYx.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{17.CLdLJ6ju.js → 17.HawOwgFr.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{18.ClGsX0an.js → 18.CU1uc6aV.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{20.vQtazQa0.js → 20.Dj3In1mD.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{24.DLwR4-7S.js → 24.BABzil92.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{25.DUuYls4x.js → 25.K9V1t9FS.js} +2 -2
- package/studio-dist/client/_app/immutable/nodes/{26.BZ-Sb3tl.js → 26.Ber4zDmK.js} +1 -1
- package/studio-dist/client/_app/immutable/nodes/{3.CYwLXdQ4.js → 3.CDH1-JKn.js} +1 -1
- package/studio-dist/client/_app/version.json +1 -1
- package/studio-dist/server/chunks/{0-BlM3YDpC.js → 0-CzucydBz.js} +5 -4
- package/studio-dist/server/chunks/1-BgfY0ktP.js +9 -0
- package/studio-dist/server/chunks/{15-D4Y9me2S.js → 15-B36yiClS.js} +3 -3
- package/studio-dist/server/chunks/{16-BNVAfz5X.js → 16-TEN2Xs7g.js} +3 -3
- package/studio-dist/server/chunks/{17-ByJg8VAI.js → 17-CDqPwV0A.js} +3 -3
- package/studio-dist/server/chunks/{18-mcGKywiH.js → 18-C9SojWQi.js} +3 -3
- package/studio-dist/server/chunks/{20-D4RXMRdA.js → 20-D2rDiJCy.js} +5 -4
- package/studio-dist/server/chunks/{23-D2H9OSJf.js → 23-D194DGVi.js} +3 -2
- package/studio-dist/server/chunks/{24-BZesRs_l.js → 24-DFin4XEU.js} +5 -4
- package/studio-dist/server/chunks/{25-BPtkcHWk.js → 25-byalahiX.js} +4 -4
- package/studio-dist/server/chunks/{26-D7qW4CZ3.js → 26-BctSc53D.js} +3 -3
- package/studio-dist/server/chunks/{3-Csrn9tNa.js → 3-u3g5-V70.js} +5 -5
- package/studio-dist/server/chunks/{_layout.svelte-DtqTR50-.js → _layout.svelte-BkWa8zMq.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-CyGNoYGs.js → _page.svelte-Balyz5No.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-DESqb1iT.js → _page.svelte-CEoJA3np.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-C9lhMoUX.js → _page.svelte-ClYQv-J6.js} +5 -5
- package/studio-dist/server/chunks/{_page.svelte-Dj05GrDh.js → _page.svelte-D1GgG_0J.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-DTqKOclg.js → _page.svelte-D1ImKwNa.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-BkrxW4NS.js → _page.svelte-DdRs2eQU.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-Ce2_fPzl.js → _page.svelte-DdieDDqt.js} +4 -4
- package/studio-dist/server/chunks/{_page.svelte-BlDOqWK_.js → _page.svelte-Nf_2u2sG.js} +3 -3
- package/studio-dist/server/chunks/{_page.svelte-DxctlP-t.js → _page.svelte-SpNaTPY3.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-B23PRUg6.js → _server.ts-10Z9UtEP.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-BPzV5a4O.js → _server.ts-BF8dYynr.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-BtgcmXG8.js → _server.ts-BFAKIrzM.js} +2 -2
- package/studio-dist/server/chunks/{_server.ts-BLEs7rDo.js → _server.ts-BNaQ_u-J.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-BhoAYR43.js → _server.ts-CFMss8Ec.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-CyXruf03.js → _server.ts-CUDHRtqK.js} +2 -2
- package/studio-dist/server/chunks/{_server.ts-BCPpAOST.js → _server.ts-CVQlKiss.js} +3 -2
- package/studio-dist/server/chunks/{_server.ts-DUgUi5r_.js → _server.ts-CmOf90SL.js} +2 -2
- package/studio-dist/server/chunks/{_server.ts-D7JwQTun.js → _server.ts-DRFQht0c.js} +3 -2
- package/studio-dist/server/chunks/{_server.ts-D64WqH4h.js → _server.ts-DfzvMeMr.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-D9JYb9Nh.js → _server.ts-DrRXPeYo.js} +3 -3
- package/studio-dist/server/chunks/{_server.ts-CjJYkLJH.js → _server.ts-YrmdROs2.js} +3 -2
- package/studio-dist/server/chunks/{_server.ts-ChoGyX5C.js → _server.ts-ZCA_Uz1x.js} +3 -2
- package/studio-dist/server/chunks/{_server.ts-5euivmMj.js → _server.ts-mGj6h26U.js} +3 -2
- package/studio-dist/server/chunks/{brain-DLXOLooR.js → brain-4-tWVd6k.js} +2 -2
- package/studio-dist/server/chunks/{client-D4Rhd5ed.js → client-NfsjQdjU.js} +2 -2
- package/studio-dist/server/chunks/{dist-DafBXQH9.js → dist-b2dqLZbk.js} +178 -23
- package/studio-dist/server/chunks/{error.svelte-BLd3ZRbJ.js → error.svelte-xf-NkEuU.js} +3 -3
- package/studio-dist/server/chunks/{hooks.server-CWBRp8NI.js → hooks.server-D2qbf3Zp.js} +3 -2
- package/studio-dist/server/chunks/{http-C-8-8Oq_.js → http-C8NM9yzE.js} +2 -2
- package/studio-dist/server/chunks/{internal-DxboZxyS.js → internal-OCcHamz2.js} +3 -3
- package/studio-dist/server/chunks/{project-context-BAXQmgch.js → project-context-CX-nfwL2.js} +7 -5
- package/studio-dist/server/chunks/{src-RK_h29uK.js → src-CeLZUrEE.js} +218 -24
- package/studio-dist/server/chunks/{stores-DFVE4LvP.js → stores-Dyo9kN1m.js} +2 -2
- package/studio-dist/server/index.js +1 -1
- package/studio-dist/server/manifest.js +27 -27
- package/studio-dist/client/_app/immutable/chunks/CyNL2FJl.js +0 -1
- package/studio-dist/client/_app/immutable/entry/start.C_VLyotS.js +0 -1
- package/studio-dist/server/chunks/1-DROdkBtZ.js +0 -9
|
@@ -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/
|
|
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/CqxUYDwj.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/BmmibeAn.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 <filename></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/DJ4ceMnt.js";import"../chunks/B8WnZMYa.js";import{t as j}from"../chunks/VqMa-FR_.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/CyNL2FJl.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/CqxUYDwj.js";import"../chunks/B8WnZMYa.js";import{t as j}from"../chunks/BeSHW-PI.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/BmmibeAn.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};
|