@vheins/local-memory-mcp 0.19.3 → 0.19.5
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/{chunk-R45NRES5.js → chunk-ZSGQQS5F.js} +58 -17
- package/dist/dashboard/public/assets/{index-BQArG0_h.js → index-Bl3hkhYk.js} +2 -2
- package/dist/dashboard/public/assets/{index-B1-RxLD9.css → index-iYrQr1US.css} +1 -1
- package/dist/dashboard/public/index.html +2 -2
- package/dist/dashboard/server.js +1 -1
- package/dist/mcp/server.js +87 -78
- package/package.json +1 -1
|
@@ -147,5 +147,5 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
147
147
|
`}}var tC={memories:`title,type,content,importance
|
|
148
148
|
Example Memory,fact,This is an example memory content,3`,tasks:`task_code,title,phase,description,status,priority
|
|
149
149
|
TSK-001,Example Task,Phase 1,Example task description,backlog,3`};function nC(e){let t=N(null),n=N([]),r=N([]),i=N(``),a=N(``),o=N(!1),s=N(!1);function c(){t.set(null),n.set([]),r.set([]),i.set(``),a.set(``),o.set(!1)}function l(){s.set(!1),c(),e.onClose&&e.onClose()}function u(){s.set(!0)}function d(e){let t=e.split(/\r?\n/).filter(e=>e.trim()!==``);if(t.length===0)return{headers:[],rows:[]};let n=e=>{let t=[],n=``,r=!1;for(let i=0;i<e.length;i++){let a=e[i];a===`"`&&e[i+1]===`"`?(n+=`"`,i++):a===`"`?r=!r:a===`,`&&!r?(t.push(n.trim()),n=``):n+=a}return t.push(n.trim()),t},r=n(t[0]).filter(e=>e!==``);return{headers:r,rows:t.slice(1).map(n).map(e=>{let t={};return r.forEach((n,r)=>{let i=n.toLowerCase().replace(/[^a-z0-9_]/g,`_`);t[i]=e[r]}),t})}}function f(e){if(a.set(``),!e.name.endsWith(`.csv`)){a.set(`Please select a valid .csv file.`);return}t.set(e),i.set(e.name);let o=new FileReader;o.onload=e=>{let t=e.target?.result,i=d(t);r.set(i.headers),n.set(i.rows),i.rows.length===0&&a.set(`CSV file appears to be empty or missing headers.`)},o.readAsText(e)}function p(e){let t=e.target.files?.[0];t&&f(t)}function m(e){e.preventDefault();let t=e.dataTransfer?.files?.[0];t&&f(t)}function h(){let t=tC[e.importTarget],n=new Blob([t],{type:`text/csv;charset=utf-8;`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.setAttribute(`href`,r),i.setAttribute(`download`,`example_${e.importTarget}.csv`),i.style.visibility=`hidden`,document.body.appendChild(i),i.click(),document.body.removeChild(i)}async function g(){let t=[];if(n.subscribe(e=>t=e)(),a.set(``),t.length===0){a.set(`No data to import.`);return}o.set(!0);try{let n=0;n=e.importTarget===`memories`?(await Ro.bulkImportMemories(e.repo,t)).count:(await Ro.bulkImportTasks(e.repo,t)).count,Ho(`Imported ${n} ${e.importTarget} successfully.`),e.onSuccess&&e.onSuccess(),l()}catch(e){a.set(e instanceof Error?e.message:`Import failed`)}finally{o.set(!1)}}return{file:t,csvData:n,headers:r,fileName:i,errorMsg:a,isSubmitting:o,isOpen:s,open:u,close:l,handleFileSelect:p,handleFileDrop:m,downloadExample:h,handleImport:g,setFile:e=>t.set(e),setCsvData:e=>n.set(e)}}var rC=K(`<div class="drop-zone svelte-lenod"><div class="drop-zone-content svelte-lenod"><div style="color: var(--color-text-muted)" class="svelte-lenod"><!></div> <p class="svelte-lenod">Drag and drop your <strong class="svelte-lenod">.csv</strong> file here</p> <span class="text-xs text-slate-500 mb-4 svelte-lenod">or click to browse from your computer</span> <label class="btn btn-primary btn-md cursor-pointer svelte-lenod">Select CSV File <input type="file" accept=".csv" class="hidden svelte-lenod"/></label></div></div> <div class="mt-6 flex flex-col items-center svelte-lenod"><p class="text-[0.8rem] text-slate-400 mb-2 svelte-lenod">Need a starting point?</p> <button class="btn btn-ghost btn-sm svelte-lenod"><!> </button></div>`,1),iC=K(`<th class="svelte-lenod"> </th>`),aC=K(`<td class="svelte-lenod"> </td>`),oC=K(`<tr class="svelte-lenod"></tr>`),sC=K(`<div class="file-info flex items-center justify-between p-3 bg-blue-500/5 border border-blue-500/20 rounded-lg mb-4 svelte-lenod"><div class="flex items-center gap-3 svelte-lenod"><div style="color: #0ea5e9; display: flex;" class="svelte-lenod"><!></div> <div class="svelte-lenod"><div class="text-sm font-semibold svelte-lenod"> </div> <div class="text-[0.7rem] text-slate-400 svelte-lenod"> </div></div></div> <button class="btn btn-ghost btn-sm text-red-500 svelte-lenod">Change File</button></div> <div class="preview-container svelte-lenod"><div class="preview-header svelte-lenod"><span class="svelte-lenod">Data Preview (First 5 rows)</span></div> <div class="table-wrapper svelte-lenod"><table class="svelte-lenod"><thead class="svelte-lenod"><tr class="svelte-lenod"></tr></thead><tbody class="svelte-lenod"></tbody></table></div></div>`,1),cC=K(`<div class="error-msg flex items-center gap-2 svelte-lenod"><!> <span class="svelte-lenod"> </span></div>`),lC=K(`<div class="spinner svelte-lenod"></div> Importing...`,1),uC=K(`<!> Start Import`,1),dC=K(`<div class="modal-backdrop svelte-lenod"><div class="modal-content svelte-lenod"><div class="modal-header svelte-lenod"><div class="flex items-center gap-2 svelte-lenod"><div class="header-icon svelte-lenod" style="color: #0ea5e9"><!></div> <h3 class="svelte-lenod"> </h3></div> <button class="btn btn-ghost btn-sm close-btn svelte-lenod"><!></button></div> <div class="modal-body svelte-lenod"><div class="p-6 svelte-lenod"><!> <!></div></div> <div class="modal-footer svelte-lenod"><button class="btn btn-ghost svelte-lenod">Cancel</button> <button class="btn btn-primary svelte-lenod"><!></button></div></div></div>`);function fC(e,t){rt(t,!1);let n=()=>F(H(d),`$file`,l),r=()=>F(H(f),`$csvData`,l),i=()=>F(H(p),`$headers`,l),a=()=>F(H(m),`$fileName`,l),o=()=>F(H(h),`$errorMsg`,l),s=()=>F(H(g),`$isSubmitting`,l),c=()=>F(H(_),`$composableIsOpen`,l),[l,u]=Et(),d=I(),f=I(),p=I(),m=I(),h=I(),g=I(),_=I(),v=I(),y=I(),b=I(),x=I(),S=I(),C=I(),w=I(),T=I(),E=I(),D=I(),O=I(),k=I(),ee=I(),te=Z(t,`repo`,8),ne=Z(t,`importTarget`,8,`memories`),re=Z(t,`isOpen`,12,!1),ie=Ya(),A=I();function ae(e){L(A,nC({repo:te(),importTarget:e,onSuccess:()=>ie(`success`),onClose:()=>{re(!1),ie(`close`)}}))}ae(ne()),ir(()=>W(ne()),()=>{ne()&&ae(ne())}),ir(()=>(H(A),W(re())),()=>{H(A).isOpen.set(re())}),ir(()=>H(A),()=>{wt(L(d,H(A).file),`$file`,l)}),ir(()=>H(A),()=>{wt(L(f,H(A).csvData),`$csvData`,l)}),ir(()=>H(A),()=>{wt(L(p,H(A).headers),`$headers`,l)}),ir(()=>H(A),()=>{wt(L(m,H(A).fileName),`$fileName`,l)}),ir(()=>H(A),()=>{wt(L(h,H(A).errorMsg),`$errorMsg`,l)}),ir(()=>H(A),()=>{wt(L(g,H(A).isSubmitting),`$isSubmitting`,l)}),ir(()=>H(A),()=>{wt(L(_,H(A).isOpen),`$composableIsOpen`,l)}),ir(()=>H(A),()=>{L(v,H(A).close)}),ir(()=>H(A),()=>{L(y,H(A).handleFileSelect)}),ir(()=>H(A),()=>{L(b,H(A).handleFileDrop)}),ir(()=>H(A),()=>{L(x,H(A).downloadExample)}),ir(()=>H(A),()=>{L(S,H(A).handleImport)}),ir(()=>H(A),()=>{L(C,H(A).setFile)}),ir(()=>H(A),()=>{L(w,H(A).setCsvData)}),ir(()=>n(),()=>{L(T,n())}),ir(()=>r(),()=>{L(E,r())}),ir(()=>i(),()=>{L(D,i())}),ir(()=>a(),()=>{L(O,a())}),ir(()=>o(),()=>{L(k,o())}),ir(()=>s(),()=>{L(ee,s())}),ar(),Ua();var oe=Ti(),se=z(oe),ce=e=>{var n=dC(),r=R(n),i=R(r),a=R(i),o=R(a);Q(R(o),{name:`upload-cloud`,size:18}),j(o);var s=B(o,2),c=R(s);j(s),j(a);var l=B(a,2);Q(R(l),{name:`x`,size:18,strokeWidth:2}),j(l),j(i);var u=B(i,2),d=R(u),f=R(d),p=e=>{var n=rC(),r=z(n),i=R(r),a=R(i);Q(R(a),{name:`file-up`,size:48,strokeWidth:1}),j(a);var o=B(a,6),s=B(R(o));j(o),j(i),j(r);var c=B(r,2),l=B(R(c),2),u=R(l);Q(u,{name:`download`,size:14,className:`mr-2`});var d=B(u);j(l),j(c),V(()=>J(d,` Download Example ${ne()===`memories`?`Memories`:`Tasks`} CSV`)),G(`change`,s,function(...e){H(y)?.apply(this,e)}),G(`dragover`,r,Ha(function(e){Ga.call(this,t,e)})),G(`drop`,r,function(...e){H(b)?.apply(this,e)}),G(`click`,l,function(...e){H(x)?.apply(this,e)}),q(e,n)},m=e=>{var t=sC(),n=z(t),r=R(n),i=R(r);Q(R(i),{name:`file-type-2`,size:24}),j(i);var a=B(i,2),o=R(a),s=R(o,!0);j(o);var c=B(o,2),l=R(c);j(c),j(a),j(r);var u=B(r,2);j(n);var d=B(n,2),f=B(R(d),2),p=R(f),m=R(p),h=R(m);X(h,5,()=>H(D),e=>e,(e,t)=>{var n=iC(),r=R(n,!0);j(n),V(()=>J(r,H(t))),q(e,n)}),j(h),j(m);var g=B(m);X(g,7,()=>(H(E),U(()=>H(E).slice(0,5))),(e,t)=>`${t}-${JSON.stringify(e)}`,(e,t)=>{var n=oC();X(n,5,()=>H(D),e=>e,(e,n)=>{var r=aC(),i=R(r,!0);j(r),V(e=>J(i,e),[()=>(H(t),H(n),U(()=>H(t)[H(n).toLowerCase().replace(/[^a-z0-9_]/g,`_`)]||``))]),q(e,r)}),j(n),q(e,n)}),j(g),j(p),j(f),j(d),V(()=>{J(s,H(O)),J(l,`${(H(E),U(()=>H(E).length))??``} rows found`)}),G(`click`,u,()=>{H(C)(null),H(w)([])}),q(e,t)};Y(f,e=>{H(T)?e(m,-1):e(p)});var h=B(f,2),g=e=>{var t=cC(),n=R(t);Q(n,{name:`triangle-alert`,size:16});var r=B(n,2),i=R(r,!0);j(r),j(t),V(()=>J(i,H(k))),q(e,t)};Y(h,e=>{H(k)&&e(g)}),j(d),j(u);var _=B(u,2),te=R(_),re=B(te,2),ie=R(re),A=e=>{var t=lC();M(),q(e,t)},ae=e=>{var t=uC();Q(z(t),{name:`check`,size:16,className:`mr-2`}),M(),q(e,t)};Y(ie,e=>{H(ee)?e(A):e(ae,-1)}),j(re),j(_),j(r),j(n),V(()=>{J(c,`Bulk Import ${ne()===`memories`?`Memories`:`Tasks`}`),te.disabled=H(ee),re.disabled=(H(ee),H(E),U(()=>H(ee)||H(E).length===0))}),G(`click`,l,function(...e){H(v)?.apply(this,e)}),G(`click`,te,function(...e){H(v)?.apply(this,e)}),G(`click`,re,function(...e){H(S)?.apply(this,e)}),Zi(3,r,()=>eC,()=>({duration:200,start:.95})),G(`click`,r,Va(function(e){Ga.call(this,t,e)})),Zi(3,n,()=>$S,()=>({duration:200})),G(`click`,n,function(...e){H(v)?.apply(this,e)}),q(e,n)};Y(se,e=>{c()&&e(ce)}),q(e,oe),it(),u()}var pC=K(`<option> </option>`),mC=K(`<option> </option>`),hC=K(`<div class="modal-backdrop svelte-l0ytfo" role="button" tabindex="-1" aria-label="Close modal"></div> <div class="modal-panel animate-fade-in svelte-l0ytfo" role="dialog" aria-modal="true" aria-labelledby="modal-title" tabindex="-1"><div class="modal-header svelte-l0ytfo"><div class="modal-header-icon svelte-l0ytfo"><!></div> <div><div id="modal-title" class="modal-title svelte-l0ytfo">New Task</div> <div class="modal-subtitle svelte-l0ytfo">Add a task to the current repository</div></div> <button class="modal-close-btn svelte-l0ytfo" aria-label="Close"><!></button></div> <div class="modal-body svelte-l0ytfo"><div class="field-grid-2 svelte-l0ytfo"><div class="field-group svelte-l0ytfo"><label class="field-label svelte-l0ytfo" for="new_task_code">Task Code <span class="required svelte-l0ytfo">*</span></label> <input id="new_task_code" class="form-input" placeholder="TASK-001"/></div> <div class="field-group svelte-l0ytfo"><label class="field-label svelte-l0ytfo" for="new_task_phase">Phase</label> <input id="new_task_phase" class="form-input" placeholder="Implementation"/></div></div> <div class="field-group svelte-l0ytfo"><label class="field-label svelte-l0ytfo" for="new_task_title">Title <span class="required svelte-l0ytfo">*</span> <span class="field-hint svelte-l0ytfo"> </span></label> <input id="new_task_title" class="form-input" placeholder="Short, descriptive task title" maxlength="80"/></div> <div class="field-group svelte-l0ytfo"><label class="field-label svelte-l0ytfo" for="new_task_description">Description</label> <textarea id="new_task_description" class="form-textarea modal-textarea svelte-l0ytfo" placeholder="What needs to be done? Include context, acceptance criteria, etc." rows="4"></textarea></div> <div class="field-grid-2 svelte-l0ytfo"><div class="field-group svelte-l0ytfo"><label class="field-label svelte-l0ytfo" for="new_task_status">Status</label> <select id="new_task_status" class="form-select"></select></div> <div class="field-group svelte-l0ytfo"><label class="field-label svelte-l0ytfo" for="new_task_priority">Priority</label> <select id="new_task_priority" class="form-select"></select></div></div></div> <div class="modal-footer svelte-l0ytfo"><button class="btn btn-ghost">Cancel</button> <button class="btn btn-primary modal-save-btn svelte-l0ytfo"><!> Create Task</button></div></div>`,1);function gC(e,t){rt(t,!1);let n=Z(t,`open`,8,!1),r=Z(t,`newTask`,12),i=Z(t,`onClose`,8,()=>{}),a=Z(t,`onSave`,8,()=>{});function o(e){e.key===`Escape`&&i()()}Ua();var s=Ti();G(`keydown`,An,o);var c=z(s),l=e=>{var t=hC(),n=z(t),o=B(n,2),s=R(o),c=R(s);Q(R(c),{name:`clipboard-list`,size:14,strokeWidth:2.2}),j(c);var l=B(c,4);Q(R(l),{name:`x`,size:14,strokeWidth:2.5}),j(l),j(s);var u=B(s,2),d=R(u),f=R(d),p=B(R(f),2);Ta(p),j(f);var m=B(f,2),h=B(R(m),2);Ta(h),j(m),j(d);var g=B(d,2),_=R(g),v=B(R(_),3),y=R(v);j(v),j(_);var b=B(_,2);Ta(b),j(g);var x=B(g,2),S=B(R(x),2);Un(S),j(x);var C=B(x,2),w=R(C),T=B(R(w),2);X(T,4,()=>[`backlog`,`pending`,`in_progress`],e=>e,(e,t)=>{var n=pC(),r=R(n,!0);j(n);var i={};V(e=>{J(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>(W(Zl),U(()=>Zl(t)))]),q(e,n)}),j(T),j(w);var E=B(w,2),D=B(R(E),2);X(D,4,()=>[1,2,3,4,5],e=>e,(e,t)=>{var n=mC(),r=R(n,!0);j(n);var i={};V(e=>{J(r,e),i!==(i=t)&&(n.value=(n.__value=t)??``)},[()=>(W(Ql),U(()=>Ql(t)))]),q(e,n)}),j(D),j(E),j(C),j(u);var O=B(u,2),k=R(O),ee=B(k,2);Q(R(ee),{name:`plus`,size:13,strokeWidth:2.5}),M(),j(ee),j(O),j(o),V(()=>{J(y,`${(W(r()),U(()=>(r().title??``).length))??``}/80`),ee.disabled=(W(r()),U(()=>!r().task_code||!r().title))}),G(`click`,n,function(...e){i()?.apply(this,e)}),G(`keydown`,n,e=>e.key===`Escape`&&i()()),G(`click`,l,function(...e){i()?.apply(this,e)}),Fa(p,()=>r().task_code,e=>(r(r().task_code=e,!0),wr(()=>{}))),Fa(h,()=>r().phase,e=>(r(r().phase=e,!0),wr(()=>{}))),Fa(b,()=>r().title,e=>(r(r().title=e,!0),wr(()=>{}))),Fa(S,()=>r().description,e=>(r(r().description=e,!0),wr(()=>{}))),ma(T,()=>r().status,e=>(r(r().status=e,!0),wr(()=>{}))),ma(D,()=>r().priority,e=>(r(r().priority=e,!0),wr(()=>{}))),G(`click`,k,function(...e){i()?.apply(this,e)}),G(`click`,ee,function(...e){a()?.apply(this,e)}),q(e,t)};Y(c,e=>{n()&&e(l)}),q(e,s),it()}var _C=K(`<span class="ref-total-badge svelte-w0wd5z"> </span>`),vC=K(`<button class="ref-clear-btn svelte-w0wd5z"><!></button>`),yC=K(`<button><!> <span> </span> <span class="ref-cat-count svelte-w0wd5z"> </span></button>`),bC=K(`<div style="padding:40px;text-align:center;"><div class="skeleton" style="height:60px;border-radius:12px;margin-bottom:10px;"></div> <div class="skeleton" style="height:60px;border-radius:12px;margin-bottom:10px;"></div> <div class="skeleton" style="height:60px;border-radius:12px;"></div></div>`),xC=K(`<div class="ref-card-desc svelte-w0wd5z"> </div>`),SC=K(`<code class="ref-param-tag svelte-w0wd5z"> </code>`),CC=K(`<code class="ref-param-tag ref-param-more svelte-w0wd5z"> </code>`),wC=K(`<div class="ref-params svelte-w0wd5z"><!> <!></div>`),TC=K(`<div class="ref-card ref-card-tool animate-fade-in svelte-w0wd5z" role="button" tabindex="0"><div class="ref-card-top svelte-w0wd5z"><span class="ref-type-badge ref-type-tool svelte-w0wd5z"><!> Tool</span></div> <div class="ref-card-name svelte-w0wd5z"> </div> <!> <!></div>`),EC=K(`<div class="ref-section-header svelte-w0wd5z"><!> <span>Tools</span> <span class="ref-section-count svelte-w0wd5z"> </span></div> <div class="ref-grid svelte-w0wd5z"></div>`,1),DC=K(`<div class="ref-card-desc svelte-w0wd5z"> </div>`),OC=K(`<div class="ref-card ref-card-prompt animate-fade-in svelte-w0wd5z" role="button" tabindex="0"><div class="ref-card-top svelte-w0wd5z"><span class="ref-type-badge ref-type-prompt svelte-w0wd5z"><!> Prompt</span></div> <div class="ref-card-name svelte-w0wd5z"> </div> <!></div>`),kC=K(`<div class="ref-section-header svelte-w0wd5z"><!> <span>Prompts</span> <span class="ref-section-count svelte-w0wd5z"> </span></div> <div class="ref-grid svelte-w0wd5z"></div>`,1),AC=K(`<div class="ref-card-desc svelte-w0wd5z"> </div>`),jC=K(`<div class="ref-params svelte-w0wd5z"><code class="ref-param-tag svelte-w0wd5z" style="background:var(--color-bg);border:1px solid var(--color-border);"> </code></div>`),MC=K(`<div class="ref-card ref-card-resource animate-fade-in svelte-w0wd5z" role="button" tabindex="0"><div class="ref-card-top svelte-w0wd5z"><span class="ref-type-badge ref-type-resource svelte-w0wd5z"><!> Resource</span></div> <div class="ref-card-name svelte-w0wd5z"> </div> <!> <!></div>`),NC=K(`<div class="ref-section-header svelte-w0wd5z"><!> <span>Resources</span> <span class="ref-section-count svelte-w0wd5z"> </span></div> <div class="ref-grid svelte-w0wd5z"></div>`,1),PC=K(`<div style="text-align:center;padding:48px 16px;color:var(--color-text-muted);"><!> <div style="font-size:0.82rem;margin-top:10px;"> </div></div>`),FC=K(`<a target="_blank" rel="noopener noreferrer" class="eco-card animate-fade-in svelte-w0wd5z"><div class="eco-card-icon svelte-w0wd5z"><!></div> <div class="eco-card-body svelte-w0wd5z"><div class="eco-card-name svelte-w0wd5z"> </div> <div class="eco-card-desc svelte-w0wd5z"> </div></div> <div class="eco-card-link svelte-w0wd5z"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg></div></a>`),IC=K(`<div class="eco-section svelte-w0wd5z"><div class="ref-section-header svelte-w0wd5z"><!> <span>Ecosystem</span></div> <div class="eco-grid svelte-w0wd5z"></div></div>`),LC=K(`<!> <!> <!> <!> <!>`,1),RC=K(`<div class="animate-fade-in"><div class="glass card" style="margin-bottom:16px;padding:14px 18px;"><div class="ref-header svelte-w0wd5z"><div class="flex items-center gap-2"><!> <span style="font-size:0.9rem;font-weight:800;color:var(--color-text);letter-spacing:-0.02em;">MCP Reference</span> <!></div> <div class="ref-search-wrap svelte-w0wd5z"><span class="ref-search-icon svelte-w0wd5z"><!></span> <input class="form-input ref-search-input svelte-w0wd5z" type="text" placeholder="Search tools & prompts…"/> <!></div></div></div> <div class="ref-body svelte-w0wd5z"><div class="glass ref-sidebar svelte-w0wd5z"><div class="ref-sidebar-label svelte-w0wd5z">Category</div> <!></div> <div class="ref-main svelte-w0wd5z"><!></div></div></div>`);function zC(e,t){rt(t,!1);let n=()=>F(p(),`$appState`,o),r=()=>F(m(),`$filteredTools`,o),i=()=>F(h(),`$filteredPrompts`,o),a=()=>F(g(),`$filteredResources`,o),[o,s]=Et(),c=I(),l=I(),u=I(),d=I(),f=Z(t,`handler`,8),p=Z(t,`appState`,8),m=Z(t,`filteredTools`,8),h=Z(t,`filteredPrompts`,8),g=Z(t,`filteredResources`,8);function _(e){return[{id:`all`,icon:`layers`,label:`All`,count:(e.capabilities?.tools?.length||0)+(e.capabilities?.prompts?.length||0)+(e.capabilities?.resources?.length||0)+v.length},{id:`tools`,icon:`tool`,label:`Tools`,count:e.capabilities?.tools?.length||0},{id:`prompts`,icon:`sparkle`,label:`Prompts`,count:e.capabilities?.prompts?.length||0},{id:`resources`,icon:`database`,label:`Resources`,count:e.capabilities?.resources?.length||0},{id:`ecosystem`,icon:`zap`,label:`Ecosystem`,count:v.length}]}let v=[{name:`DocuBook`,description:`AI-powered documentation generator that turns your codebase into beautiful, searchable docs.`,url:`https://www.docubook.pro/`,icon:`book-open`}];function y(e,t,n){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),f().openReferenceDrawer(t,n))}ir(()=>n(),()=>{L(c,n())}),ir(()=>r(),()=>{L(l,r())}),ir(()=>i(),()=>{L(u,i())}),ir(()=>a(),()=>{L(d,a())}),ar(),Ua();var b=RC(),x=R(b),S=R(x),C=R(S),w=R(C);Q(w,{name:`book-open`,size:15,strokeWidth:1.75});var E=B(w,4),D=e=>{var t=_C(),n=R(t);j(t),V(()=>J(n,`${(H(c),U(()=>(H(c).capabilities.tools?.length||0)+(H(c).capabilities.prompts?.length||0)))??``} items`)),q(e,t)};Y(E,e=>{H(c),U(()=>H(c).capabilities)&&e(D)}),j(C);var O=B(C,2),k=R(O);Q(R(k),{name:`search`,size:12,strokeWidth:2}),j(k);var ee=B(k,2);Ta(ee);var te=B(ee,2),ne=e=>{var t=vC();Q(R(t),{name:`x`,size:11,strokeWidth:2.5}),j(t),G(`click`,t,()=>f().setReferenceSearch(``)),q(e,t)};Y(te,e=>{H(c),U(()=>H(c).referenceSearch)&&e(ne)}),j(O),j(S),j(x);var re=B(x,2),ie=R(re);X(B(R(ie),2),1,()=>(H(c),U(()=>_(H(c)))),e=>e.id,(e,t)=>{var n=yC();let r;var i=R(n);Q(i,{get name(){return H(t),U(()=>H(t).icon)},size:13,strokeWidth:1.75});var a=B(i,2),o=R(a,!0);j(a);var s=B(a,2),l=R(s,!0);j(s),j(n),V(()=>{r=la(n,1,`ref-cat-btn svelte-w0wd5z`,null,r,{active:H(c).referenceFilter===H(t).id}),J(o,(H(t),U(()=>H(t).label))),J(l,(H(t),U(()=>H(t).count)))}),G(`click`,n,()=>f().setReferenceFilter(H(t).id)),q(e,n)}),j(ie);var A=B(ie,2),ae=R(A),oe=e=>{q(e,bC())},se=e=>{var t=LC(),n=z(t),r=e=>{var t=EC(),n=z(t),r=R(n);Q(r,{name:`tool`,size:13,strokeWidth:1.75});var i=B(r,4),a=R(i,!0);j(i),j(n);var o=B(n,2);X(o,5,()=>H(l),e=>e.data.name,(e,t)=>{var n=TC(),r=R(n),i=R(r);Q(R(i),{name:`tool`,size:10,strokeWidth:2}),M(),j(i),j(r);var a=B(r,2),o=R(a,!0);j(a);var s=B(a,2),c=e=>{var n=xC(),r=R(n,!0);j(n),V(()=>J(r,(H(t),U(()=>H(t).data.description)))),q(e,n)};Y(s,e=>{H(t),U(()=>H(t)?.data?.description)&&e(c)});var l=B(s,2),u=e=>{var n=wC(),r=R(n);X(r,1,()=>(H(t),U(()=>Object.entries(H(t).data.inputSchema.properties).slice(0,4))),([e])=>e,(e,t)=>{var n=un(()=>T(H(t),1));let r=()=>H(n)[0];var i=SC(),a=R(i,!0);j(i),V(()=>J(a,r())),q(e,i)});var i=B(r,2),a=e=>{var n=CC(),r=R(n);j(n),V(e=>J(r,`+${e??``}`),[()=>(H(t),U(()=>Object.keys(H(t).data.inputSchema.properties).length-4))]),q(e,n)},o=un(()=>(H(t),U(()=>Object.keys(H(t).data.inputSchema.properties).length>4)));Y(i,e=>{H(o)&&e(a)}),j(n),q(e,n)};Y(l,e=>{H(t),U(()=>H(t)?.data?.inputSchema?.properties)&&e(u)}),j(n),V(()=>J(o,(H(t),U(()=>H(t)?.data?.name||`Unknown Tool`)))),G(`click`,n,()=>f().openReferenceDrawer(`tool`,H(t).data)),G(`keydown`,n,e=>y(e,`tool`,H(t).data)),q(e,n)}),j(o),V(()=>J(a,(H(l),U(()=>H(l).length)))),q(e,t)};Y(n,e=>{H(l),U(()=>H(l).length>0)&&e(r)});var i=B(n,2),a=e=>{var t=kC(),n=z(t),r=R(n);Q(r,{name:`sparkle`,size:13,strokeWidth:1.75});var i=B(r,4),a=R(i,!0);j(i),j(n);var o=B(n,2);X(o,5,()=>H(u),e=>e.data.name,(e,t)=>{var n=OC(),r=R(n),i=R(r);Q(R(i),{name:`sparkle`,size:10,strokeWidth:2}),M(),j(i),j(r);var a=B(r,2),o=R(a,!0);j(a);var s=B(a,2),c=e=>{var n=DC(),r=R(n,!0);j(n),V(()=>J(r,(H(t),U(()=>H(t).data.description)))),q(e,n)};Y(s,e=>{H(t),U(()=>H(t)?.data?.description)&&e(c)}),j(n),V(()=>J(o,(H(t),U(()=>H(t)?.data?.name||`Unknown Prompt`)))),G(`click`,n,()=>f().openReferenceDrawer(`prompt`,H(t).data)),G(`keydown`,n,e=>y(e,`prompt`,H(t).data)),q(e,n)}),j(o),V(()=>{da(n,`margin-top:${(H(l),U(()=>H(l).length>0?`20px`:`0`))??``}`),J(a,(H(u),U(()=>H(u).length)))}),q(e,t)};Y(i,e=>{H(u),U(()=>H(u).length>0)&&e(a)});var o=B(i,2),s=e=>{var t=NC(),n=z(t),r=R(n);Q(r,{name:`database`,size:13,strokeWidth:1.75});var i=B(r,4),a=R(i,!0);j(i),j(n);var o=B(n,2);X(o,5,()=>H(d),e=>e.data.uri||e.data.name,(e,t)=>{var n=MC(),r=R(n),i=R(r);Q(R(i),{name:`database`,size:10,strokeWidth:2}),M(),j(i),j(r);var a=B(r,2),o=R(a,!0);j(a);var s=B(a,2),c=e=>{var n=AC(),r=R(n,!0);j(n),V(()=>J(r,(H(t),U(()=>H(t).data.description)))),q(e,n)};Y(s,e=>{H(t),U(()=>H(t)?.data?.description)&&e(c)});var l=B(s,2),u=e=>{var n=jC(),r=R(n),i=R(r,!0);j(r),j(n),V(()=>J(i,(H(t),U(()=>H(t).data.uri)))),q(e,n)};Y(l,e=>{H(t),U(()=>H(t)?.data?.uri)&&e(u)}),j(n),V(()=>J(o,(H(t),U(()=>H(t)?.data?.name||`Unknown Resource`)))),G(`click`,n,()=>f().openReferenceDrawer(`resource`,H(t).data)),G(`keydown`,n,e=>y(e,`resource`,H(t).data)),q(e,n)}),j(o),V(()=>{da(n,`margin-top:${(H(l),H(u),U(()=>H(l).length>0||H(u).length>0?`20px`:`0`))??``}`),J(a,(H(d),U(()=>H(d).length)))}),q(e,t)};Y(o,e=>{H(d),U(()=>H(d).length>0)&&e(s)});var p=B(o,2),m=e=>{var t=PC(),n=R(t);Q(n,{name:`search`,size:28,strokeWidth:1.25});var r=B(n,2),i=R(r);j(r),j(t),V(()=>J(i,`No results for "${(H(c),U(()=>H(c).referenceSearch))??``}"`)),q(e,t)};Y(p,e=>{H(l),H(u),H(d),H(c),U(()=>H(l).length===0&&H(u).length===0&&H(d).length===0&&H(c).referenceFilter!==`ecosystem`)&&e(m)});var h=B(p,2),g=e=>{var t=IC(),n=R(t);Q(R(n),{name:`zap`,size:13,strokeWidth:1.75}),M(2),j(n);var r=B(n,2);X(r,5,()=>v,e=>e.name,(e,t)=>{var n=FC(),r=R(n);Q(R(r),{get name(){return H(t),U(()=>H(t).icon)},size:18,strokeWidth:1.5}),j(r);var i=B(r,2),a=R(i),o=R(a,!0);j(a);var s=B(a,2),c=R(s,!0);j(s),j(i),M(2),j(n),V(()=>{ka(n,`href`,(H(t),U(()=>H(t).url))),J(o,(H(t),U(()=>H(t).name))),J(c,(H(t),U(()=>H(t).description)))}),q(e,n)}),j(r),j(t),q(e,t)};Y(h,e=>{H(c),U(()=>H(c).referenceFilter===`all`||H(c).referenceFilter===`ecosystem`)&&e(g)}),q(e,t)};Y(ae,e=>{H(c),U(()=>!H(c).capabilities)?e(oe):e(se,-1)}),j(A),j(re),j(b),Fa(ee,()=>n().referenceSearch,e=>Ot(p(),U(n).referenceSearch=e,U(n))),q(e,b),it(),s()}var BC=K(`<div class="popup-load-more svelte-x7gsaf"><!> <span class="svelte-x7gsaf">Loading older...</span></div>`),VC=K(`<div class="popup-empty svelte-x7gsaf"><!> <div class="svelte-x7gsaf">No activity yet</div> <div class="svelte-x7gsaf">Events appear here as they happen.</div></div>`),HC=K(`<div class="popup-action-sub svelte-x7gsaf"> </div>`),UC=K(`<button class="popup-read-more svelte-x7gsaf"> </button>`),WC=K(`<div class="popup-bubble-row popup-bubble-left svelte-x7gsaf"><div class="popup-bubble-wrap svelte-x7gsaf"><div class="popup-chat-bubble popup-chat-bubble-mcp svelte-x7gsaf"><div class="popup-mcp-sender svelte-x7gsaf">MCP</div> <div class="popup-markdown svelte-x7gsaf"><!></div> <!></div></div></div>`),GC=K(`<div class="popup-bubble-row popup-bubble-right svelte-x7gsaf"><div class="popup-bubble-wrap svelte-x7gsaf"><div class="popup-chat-bubble popup-chat-bubble-action svelte-x7gsaf"><div class="popup-action-badge svelte-x7gsaf"><!> <span class="svelte-x7gsaf"> </span></div> <div class="popup-action-main svelte-x7gsaf"> </div> <!></div></div></div> <!>`,1),KC=K(`<div class="popup-date-header svelte-x7gsaf"><span class="svelte-x7gsaf"> </span></div> <!>`,1),qC=K(`<div class="chat-backdrop svelte-x7gsaf" role="button" tabindex="-1" aria-label="Close"></div> <div class="chat-popup animate-fade-in-scale svelte-x7gsaf"><div class="chat-popup-header svelte-x7gsaf"><div class="chat-popup-title svelte-x7gsaf"><div class="chat-popup-avatar svelte-x7gsaf"><!></div> <div class="svelte-x7gsaf"><div class="chat-popup-name svelte-x7gsaf">Recent Activity</div> <div class="chat-popup-status svelte-x7gsaf"> </div></div></div> <button class="chat-popup-close svelte-x7gsaf" title="Close" aria-label="Close"><!></button></div> <div class="chat-popup-body svelte-x7gsaf"><!> <!></div> <div class="chat-popup-footer svelte-x7gsaf"><div class="chat-input-row svelte-x7gsaf"><input type="text" placeholder="Create a backlog task..." class="svelte-x7gsaf"/> <button class="chat-send-btn svelte-x7gsaf"><!></button></div></div></div>`,1),JC=K(`<button class="chat-fab svelte-x7gsaf" title="Open activity chat" aria-label="Open activity chat"><!></button>`);function YC(e,t){rt(t,!1);let n=()=>F(y,`$actionsPage`,c),r=()=>F(g,`$handler`,c),i=()=>F(v,`$actionsStore`,c),a=()=>F(no,`$currentRepo`,c),o=()=>F(wo,`$recentActionsTotalItems`,c),s=()=>F(_,`$groupedActions`,c),[c,l]=Et(),u=Z(t,`onRefresh`,8,()=>{}),d=I(!1),f=I(``),p=I(!1),m=I();async function h(e,t){let n=P(no);if(n)try{let r=await Ro.recentActions(n,e,25);t?Co.update(e=>[...e,...r.actions||[]]):Co.set(r.actions||[]),To.set(r.pagination?.page??e),wo.set(r.pagination?.totalItems??0)}catch(e){console.error(`Failed to load recent actions:`,e)}}let g=Tb(h),{groupedActions:_,recentActions:v,recentActionsPage:y}=g;Xa(()=>{let e=n();H(d)&&e<=1&&!r().isLoadingMore&&i().length>0&&g.scrollToBottom(H(m),`instant`)}),Ka(()=>()=>{Co.set([]),To.set(1)});function b(){L(d,!H(d)),H(d)&&(h(1),Xr().then(()=>g.scrollToBottom(H(m),`instant`)))}function x(e){e.key===`Escape`&&L(d,!1)}async function S(){let e=H(f).trim();if(!e||H(p))return;let t=P(no);if(t){L(p,!0);try{await au(e,t),L(f,``),await h(1),u()(),Xr().then(()=>g.scrollToBottom(H(m),`instant`))}catch(e){console.error(`Failed to create task:`,e)}finally{L(p,!1)}}}Ua();var C=Ti();G(`keydown`,An,x);var w=z(C),T=e=>{var t=Ti(),n=z(t),a=e=>{var t=qC(),n=z(t),a=B(n,2),c=R(a),l=R(c),u=R(l);Q(R(u),{name:`message-circle`,size:16,strokeWidth:2.2}),j(u);var h=B(u,2),_=B(R(h),2),v=R(_);j(_),j(h),j(l);var y=B(l,2);Q(R(y),{name:`x`,size:16,strokeWidth:2.5}),j(y),j(c);var b=B(c,2),x=R(b),C=e=>{var t=BC();Q(R(t),{name:`refresh-cw`,size:12,className:`animate-spin`}),M(2),j(t),q(e,t)};Y(x,e=>{r(),U(()=>r().isLoadingMore)&&e(C)});var w=B(x,2),T=e=>{var t=VC();Q(R(t),{name:`message-circle`,size:36,strokeWidth:1}),M(4),j(t),q(e,t)},E=e=>{var t=Ti();X(z(t),1,s,e=>e.date,(e,t)=>{var n=KC(),i=z(n),a=R(i),o=R(a,!0);j(a),j(i),X(B(i,2),1,()=>(H(t),U(()=>H(t).items)),e=>e.id,(e,t)=>{let n=dn(()=>(H(t),U(()=>g.getLabel(H(t))))),i=dn(()=>(H(t),U(()=>g.getConfig(H(t).action))));var a=GC(),o=z(a),s=R(o),c=R(s),l=R(c),u=R(l);Q(u,{get name(){return W(H(i)),U(()=>H(i).icon)},size:8,strokeWidth:2.5});var d=B(u,2),f=R(d,!0);j(d),j(l);var p=B(l,2),m=R(p,!0);j(p);var h=B(p,2),_=e=>{var t=HC(),r=R(t,!0);j(t),V(()=>J(r,(W(H(n)),U(()=>H(n).sub)))),q(e,t)};Y(h,e=>{W(H(n)),U(()=>H(n).sub)&&e(_)}),j(c),j(s),j(o);var v=B(o,2),y=e=>{let n=dn(()=>(H(t),U(()=>g.parseResponse(H(t).response)))),i=dn(()=>(r(),H(t),U(()=>r().expandedResponses.has(H(t).id))));var a=WC(),o=R(a),s=R(o),c=B(R(s),2);Xb(R(c),{get content(){return W(H(n)),U(()=>H(n).text)}}),j(c);var l=B(c,2),u=e=>{var n=UC(),r=R(n,!0);j(n),V(()=>J(r,H(i)?`Less`:`More`)),G(`click`,n,()=>g.toggleExpand(H(t).id)),q(e,n)};Y(l,e=>{W(H(n)),U(()=>H(n).isLong)&&e(u)}),j(s),j(o),j(a),V(()=>da(c,(W(H(i)),W(H(n)),U(()=>!H(i)&&H(n).isLong?`max-height:80px;overflow:hidden;mask-image:linear-gradient(to bottom,black 60%,transparent 100%);`:``)))),q(e,a)};Y(v,e=>{H(t),U(()=>H(t).response)&&e(y)}),V(()=>{da(l,`color:${(W(H(i)),U(()=>H(i).color))??``};background:${(W(H(i)),U(()=>H(i).bgAlpha))??``};`),J(f,(W(H(i)),U(()=>H(i).label))),J(m,(W(H(n)),U(()=>H(n).main)))}),q(e,a)}),V(()=>J(o,(H(t),U(()=>H(t).date)))),q(e,n)}),q(e,t)};Y(w,e=>{i(),U(()=>i().length===0)?e(T):e(E,-1)}),j(b),Ba(b,e=>L(m,e),()=>H(m));var D=B(b,2),O=R(D),k=R(O);Ta(k);var ee=B(k,2);Q(R(ee),{name:`send`,size:14,strokeWidth:2}),j(ee),j(O),j(D),j(a),V(e=>{J(v,`${o()??``} events`),Ea(k,H(f)),k.disabled=H(p),ee.disabled=e},[()=>(H(f),H(p),U(()=>!H(f).trim()||H(p)))]),G(`click`,n,()=>L(d,!1)),G(`keydown`,n,e=>e.key===`Enter`&&L(d,!1)),G(`click`,y,()=>L(d,!1)),G(`input`,k,e=>L(f,e.currentTarget.value)),G(`keydown`,k,e=>e.key===`Enter`&&!e.shiftKey&&S()),G(`click`,ee,S),q(e,t)},c=e=>{var t=JC();Q(R(t),{name:`message-circle`,size:22,strokeWidth:2.2}),j(t),G(`click`,t,b),q(e,t)};Y(n,e=>{H(d)?e(a):e(c,-1)}),q(e,t)};Y(w,e=>{a()&&e(T)}),q(e,C),it(),l()}var XC=K(`<div class="error-banner svelte-owkwhr"> </div>`),ZC=K(`<div class="notice-banner svelte-owkwhr"> </div>`),QC=K(`<tr><td colspan="7" class="mem-td svelte-owkwhr"><div class="skeleton" style="height:20px;border-radius:6px;"></div></td></tr>`),$C=K(`<tr><td colspan="7" class="mem-td svelte-owkwhr" style="padding:40px;text-align:center;color:var(--color-text-muted);"><!> <div style="margin-top:8px;">No standards found</div> <div style="font-size:0.78rem;margin-top:4px;">Adjust the filters or create a standard.</div></td></tr>`),ew=K(`<span style="font-size:0.6rem;background:rgba(99,102,241,0.1);color:#6366f1;padding:1px 5px;border-radius:9999px;"> </span>`),tw=K(`<div style="margin-top:3px;display:flex;gap:4px;flex-wrap:wrap;"></div>`),nw=K(`<tr class="mem-row svelte-owkwhr" role="button" tabindex="0"><td class="mem-td svelte-owkwhr" style="max-width:300px;"><div class="truncate font-semibold" style="font-size:0.82rem;color:var(--color-text);"> </div> <!></td><td class="mem-td svelte-owkwhr" style="font-size:0.78rem;color:var(--color-text);"> </td><td class="mem-td svelte-owkwhr" style="font-size:0.75rem;color:var(--color-text-muted);"> </td><td class="mem-td svelte-owkwhr" style="font-size:0.78rem;color:var(--color-text);"> </td><td class="mem-td svelte-owkwhr" style="font-size:0.75rem;color:var(--color-text-muted);white-space:nowrap;"> </td><td class="mem-td svelte-owkwhr"><span> </span></td><td class="mem-td row-actions svelte-owkwhr"><button class="row-action-btn edit-btn svelte-owkwhr" title="Edit / View" aria-label="Edit standard"><!></button> <button class="row-action-btn delete-btn svelte-owkwhr" title="Delete" aria-label="Delete standard"><!></button></td></tr>`),rw=K(`<button> </button>`),iw=K(`<div style="display:flex;align-items:center;justify-content:space-between;margin-top:12px;"><span style="font-size:0.75rem;color:var(--color-text-muted);"> </span> <div style="display:flex;gap:4px;"><button class="btn btn-ghost btn-sm">«</button> <button class="btn btn-ghost btn-sm">‹</button> <!> <button class="btn btn-ghost btn-sm">›</button> <button class="btn btn-ghost btn-sm">»</button></div></div>`),aw=K(`<div class="feature-shell animate-fade-in svelte-owkwhr"><div class="feature-toolbar glass card svelte-owkwhr"><div class="toolbar-title svelte-owkwhr"><!> <div><div class="section-label">CODING STANDARDS</div> <div class="toolbar-subtitle svelte-owkwhr">Rules the agents follow in this repo. Filter, inspect, import, or add one rule at a time.</div></div></div> <button class="btn btn-primary toolbar-action svelte-owkwhr"><!> Add Rule</button> <div class="toolbar-actions svelte-owkwhr"><button class="btn btn-ghost btn-sm"><!> </button> <button class="btn btn-ghost btn-sm"><!> </button> <input class="file-input svelte-owkwhr" type="file" accept="application/json,.json"/></div> <div class="toolbar-controls svelte-owkwhr"><input class="form-input" placeholder="Search standards..."/> <input class="form-input" placeholder="Language, e.g. typescript"/> <input class="form-input" placeholder="Stack tags, e.g. svelte, vite"/> <select class="form-select"><option>Repo + global</option><option>Global only</option><option>All standards</option></select></div></div> <div class="insight-strip svelte-owkwhr"><div class="insight-card svelte-owkwhr"><span class="svelte-owkwhr">Visible</span> <strong class="svelte-owkwhr"> </strong></div> <div class="insight-card svelte-owkwhr"><span class="svelte-owkwhr">Scope</span> <strong class="svelte-owkwhr"> </strong></div> <div class="insight-card svelte-owkwhr"><span class="svelte-owkwhr">Total</span> <strong class="svelte-owkwhr"> </strong></div> <div class="insight-card svelte-owkwhr"><span class="svelte-owkwhr">Page</span> <strong class="svelte-owkwhr"> </strong></div></div> <!> <!> <div class="mem-table-wrap svelte-owkwhr"><table class="mem-table svelte-owkwhr"><thead><tr class="mem-thead-row svelte-owkwhr"><th class="mem-th svelte-owkwhr" style="min-width:200px;">Title</th><th class="mem-th svelte-owkwhr">Context</th><th class="mem-th svelte-owkwhr">Version</th><th class="mem-th svelte-owkwhr">Language</th><th class="mem-th svelte-owkwhr">Updated</th><th class="mem-th svelte-owkwhr">Scope</th><th class="mem-th svelte-owkwhr" style="width:80px;"></th></tr></thead><tbody><!></tbody></table></div> <!></div> <!>`,1);function ow(e,t){rt(t,!1);let n=I(),r=I(),i=Z(t,`repo`,8,``),a=I([]),o=I(!1),s=I(``),c=I(``),l=I(``),u=I(``),d=I(``),f=I(`repo`),p=I(!1),m=I(!1),h=I(),g=I(1),_=I(0),v=I(1),y=I(null),b=I(!1);async function x(){if(i()){L(o,!0),L(s,``);try{let e=await Ro.standards({query:H(l)||void 0,language:H(u)||void 0,stack:H(d)||void 0,repo:H(f)===`repo`?i():void 0,is_global:H(f)===`global`?!0:void 0,page:H(g),pageSize:25});L(a,e.standards||[]),L(_,e.pagination?.totalItems||0),L(v,e.pagination?.totalPages||1)}catch(e){L(s,e instanceof Error?e.message:String(e))}finally{L(o,!1)}}}function S(){L(g,1),x()}function C(e){e<1||e>H(v)||(L(g,e),x())}function w(){L(y,null),L(b,!0)}function T(e){L(y,e),L(b,!0)}function E(){L(b,!1),L(y,null)}function D(e){x()}function O(e){x()}async function k(e){if(await Bo(`Delete coding standard "${e.title}"?`))try{await Ro.deleteStandard(e.id),x()}catch(e){L(s,e instanceof Error?e.message:String(e))}}async function ee(){L(m,!0),L(s,``),L(c,``);try{let e=H(f)===`global`||H(f)===`all`?H(f):`repo`,t=await Ro.exportStandards({repo:e===`repo`?i():void 0,scope:e}),n=new Blob([JSON.stringify(t,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),a=document.createElement(`a`);a.href=r,a.download=`standards-${i()?i().replace(/[^a-z0-9._-]+/gi,`-`):`all`}-${e}-${new Date().toISOString().slice(0,10)}.json`,a.click(),URL.revokeObjectURL(r)}catch(e){L(s,e instanceof Error?e.message:String(e))}finally{L(m,!1)}}async function te(e){let t=e.currentTarget,n=t.files?.[0];if(n){L(p,!0),L(s,``),L(c,``);try{let e=JSON.parse(await n.text()),t=Array.isArray(e?.standards)?e.standards.length:0,r=await Ro.importStandards({...e,refresh_vectors:t>0&&t<=500});x();let i=r.vectors_refreshed?``:` Vector refresh skipped for large import.`;L(c,`Imported ${r.imported} and updated ${r.updated} standard(s).${i}`)}catch(e){L(s,e instanceof Error?e.message:String(e))}finally{L(p,!1),t.value=``}}}Ka(()=>{x()}),ir(()=>W(i()),()=>{i()&&x()}),ir(()=>(H(g),H(v)),()=>{L(n,Math.max(1,Math.min(H(g)-2,H(v)-4)))}),ir(()=>(H(v),H(n)),()=>{L(r,Array.from({length:Math.min(5,H(v))},(e,t)=>H(n)+t))}),ar(),Ua();var ne=aw(),re=z(ne),ie=R(re),A=R(ie);Q(R(A),{name:`check`,size:16,strokeWidth:2}),M(2),j(A);var ae=B(A,2);Q(R(ae),{name:`plus`,size:14,strokeWidth:2}),M(),j(ae);var oe=B(ae,2),se=R(oe),ce=R(se);Q(ce,{name:`download`,size:14,strokeWidth:2});var le=B(ce);j(se);var ue=B(se,2),de=R(ue);Q(de,{name:`upload`,size:14,strokeWidth:2});var fe=B(de);j(ue);var pe=B(ue,2);Ba(pe,e=>L(h,e),()=>H(h)),j(oe);var me=B(oe,2),he=R(me);Ta(he);var ge=B(he,2);Ta(ge);var _e=B(ge,2);Ta(_e);var ve=B(_e,2),ye=R(ve);ye.value=ye.__value=`repo`;var be=B(ye);be.value=be.__value=`global`;var xe=B(be);xe.value=xe.__value=`all`,j(ve),j(me),j(ie);var Se=B(ie,2),Ce=R(Se),we=B(R(Ce),2),Te=R(we,!0);j(we),j(Ce);var Ee=B(Ce,2),De=B(R(Ee),2),Oe=R(De,!0);j(De),j(Ee);var ke=B(Ee,2),Ae=B(R(ke),2),je=R(Ae,!0);j(Ae),j(ke);var Me=B(ke,2),Ne=B(R(Me),2),Pe=R(Ne);j(Ne),j(Me),j(Se);var Fe=B(Se,2),Ie=e=>{var t=XC(),n=R(t,!0);j(t),V(()=>J(n,H(s))),q(e,t)};Y(Fe,e=>{H(s)&&e(Ie)});var Le=B(Fe,2),Re=e=>{var t=ZC(),n=R(t,!0);j(t),V(()=>J(n,H(c))),q(e,t)};Y(Le,e=>{H(c)&&e(Re)});var ze=B(Le,2),Be=R(ze),Ve=B(R(Be)),He=R(Ve),Ue=e=>{var t=Ti();X(z(t),0,()=>({length:5}),Ni,(e,t)=>{q(e,QC())}),q(e,t)},We=e=>{var t=$C(),n=R(t);Q(R(n),{name:`check`,size:22,strokeWidth:1.75}),M(4),j(n),j(t),q(e,t)},Ge=e=>{var n=Ti();X(z(n),1,()=>H(a),e=>e.id,(e,n)=>{var r=nw(),i=R(r),a=R(i),o=R(a,!0);j(a);var s=B(a,2),c=e=>{var t=tw();X(t,5,()=>(H(n),U(()=>H(n).tags.slice(0,4))),e=>e,(e,t)=>{var n=ew(),r=R(n,!0);j(n),V(()=>J(r,H(t))),q(e,n)}),j(t),q(e,t)};Y(s,e=>{H(n),U(()=>H(n).tags?.length)&&e(c)}),j(i);var l=B(i),u=R(l,!0);j(l);var d=B(l),f=R(d);j(d);var p=B(d),m=R(p,!0);j(p);var h=B(p),g=R(h,!0);j(h);var _=B(h),v=R(_);let y;var b=R(v,!0);j(v),j(_);var x=B(_),S=R(x);Q(R(S),{name:`edit`,size:13,strokeWidth:2}),j(S);var C=B(S,2);Q(R(C),{name:`trash`,size:13,strokeWidth:2}),j(C),j(x),j(r),V(e=>{J(o,(H(n),U(()=>H(n).title))),J(u,(H(n),U(()=>H(n).context||`—`))),J(f,`v${(H(n),U(()=>H(n).version))??``}`),J(m,(H(n),U(()=>H(n).language||`any`))),J(g,e),y=la(v,1,`scope-chip svelte-owkwhr`,null,y,{"scope-global":H(n).is_global,"scope-repo":!H(n).is_global}),J(b,(H(n),U(()=>H(n).is_global?`Global`:`Repo`)))},[()=>(W(ql),H(n),U(()=>ql(H(n).updated_at)))]),G(`click`,S,()=>T(H(n))),G(`click`,C,()=>k(H(n))),G(`click`,x,Va(function(e){Ga.call(this,t,e)})),G(`click`,r,()=>T(H(n))),G(`keydown`,r,e=>e.key===`Enter`&&T(H(n))),q(e,r)}),q(e,n)};Y(He,e=>{H(o)?e(Ue):(H(a),U(()=>H(a).length===0)?e(We,1):e(Ge,-1))}),j(Ve),j(Be),j(ze);var Ke=B(ze,2),qe=e=>{var t=iw(),n=R(t),i=R(n);j(n);var a=B(n,2),o=R(a),s=B(o,2),c=B(s,2);X(c,1,()=>H(r),e=>e,(e,t)=>{var n=rw();let r;var i=R(n,!0);j(n),V(()=>{r=la(n,1,`btn btn-sm`,null,r,{"btn-primary":H(t)===H(g),"btn-ghost":H(t)!==H(g)}),J(i,H(t))}),G(`click`,n,()=>C(H(t))),q(e,n)});var l=B(c,2),u=B(l,2);j(a),j(t),V(()=>{J(i,`Page ${H(g)??``} of ${H(v)??``}`),o.disabled=H(g)<=1,s.disabled=H(g)<=1,l.disabled=H(g)>=H(v),u.disabled=H(g)>=H(v)}),G(`click`,o,()=>C(1)),G(`click`,s,()=>C(H(g)-1)),G(`click`,l,()=>C(H(g)+1)),G(`click`,u,()=>C(H(v))),q(e,t)};Y(Ke,e=>{H(v)>1&&e(qe)}),j(re),cS(B(re,2),{drawerMode:`standard`,get standard(){return H(y)},get open(){return H(b)},onClose:E,onStandardUpdated:D,onStandardDeleted:O,get repo(){return i()}}),V(()=>{se.disabled=(H(m),H(a),U(()=>H(m)||H(a).length===0)),J(le,` ${H(m)?`Exporting...`:`Export`}`),ue.disabled=H(p),J(fe,` ${H(p)?`Importing...`:`Import`}`),J(Te,(H(a),U(()=>H(a).length))),J(Oe,H(f)===`repo`?`Repo + global`:H(f)===`global`?`Global only`:`All`),J(je,H(_)),J(Pe,`${H(g)??``} / ${H(v)??``}`)}),G(`click`,ae,w),G(`click`,se,ee),G(`click`,ue,()=>H(h)?.click()),G(`change`,pe,te),Fa(he,()=>H(l),e=>L(l,e)),G(`input`,he,S),Fa(ge,()=>H(u),e=>L(u,e)),G(`input`,ge,S),Fa(_e,()=>H(d),e=>L(d,e)),G(`input`,_e,S),ma(ve,()=>H(f),e=>L(f,e)),G(`change`,ve,S),q(e,ne),it()}var sw=K(`<div class="error-banner svelte-1ik2acm"> </div>`),cw=K(`<tr><td colspan="8" class="mem-td svelte-1ik2acm"><div class="skeleton" style="height:20px;border-radius:6px;"></div></td></tr>`),lw=K(`<tr><td colspan="8" class="mem-td svelte-1ik2acm" style="padding:40px;text-align:center;color:var(--color-text-muted);"><!> <div style="margin-top:8px;">No handoffs found</div> <div style="font-size:0.78rem;margin-top:4px;">Create a handoff when work needs context transfer between agents.</div></td></tr>`),uw=K(`<tr class="mem-row svelte-1ik2acm" role="button" tabindex="0"><td class="mem-td svelte-1ik2acm" style="font-size:0.82rem;color:var(--color-text);font-weight:600;"> </td><td class="mem-td svelte-1ik2acm" style="font-size:0.82rem;color:var(--color-text);"> </td><td class="mem-td svelte-1ik2acm" style="font-size:0.75rem;color:var(--color-text-muted);"> </td><td class="mem-td svelte-1ik2acm" style="max-width:300px;"><div class="truncate font-semibold" style="font-size:0.82rem;color:var(--color-text);"> </div></td><td class="mem-td svelte-1ik2acm"><span> </span></td><td class="mem-td svelte-1ik2acm" style="font-size:0.75rem;color:var(--color-text-muted);white-space:nowrap;"> </td><td class="mem-td svelte-1ik2acm" style="font-size:0.75rem;color:var(--color-text-muted);white-space:nowrap;"> </td><td class="mem-td row-actions svelte-1ik2acm"><button class="row-action-btn delete-btn svelte-1ik2acm" title="Expire" aria-label="Expire handoff"><!></button></td></tr>`),dw=K(`<div class="muted-state svelte-1ik2acm">Loading claims...</div>`),fw=K(`<div class="empty-claims svelte-1ik2acm"><!> <div class="empty-title svelte-1ik2acm">No active claims</div> <div class="empty-copy svelte-1ik2acm">Claimed tasks will appear here so you can inspect or release them.</div></div>`),pw=K(`<div class="claim-row svelte-1ik2acm"><div><div class="row-title svelte-1ik2acm"> </div> <div class="row-meta svelte-1ik2acm"><span> </span> <span> </span> <span> </span></div></div> <button class="btn btn-ghost btn-sm"> </button></div>`),mw=K(`<div class="claim-list svelte-1ik2acm"></div>`),hw=K(`<div class="feature-shell animate-fade-in svelte-1ik2acm"><div class="feature-toolbar glass card svelte-1ik2acm"><div class="toolbar-title svelte-1ik2acm"><!> <div><div class="section-label svelte-1ik2acm">HANDOFFS & CLAIMS</div> <div class="toolbar-subtitle svelte-1ik2acm">Handoffs transfer context between agents. Claims reserve a task for one owner.</div></div></div> <button class="btn btn-primary toolbar-action svelte-1ik2acm"><!> New Handoff</button> <div class="toolbar-controls svelte-1ik2acm"><select class="form-select"><option>All statuses</option><option>Pending</option><option>Accepted</option><option>Rejected</option><option>Expired</option></select> <input class="form-input" placeholder="To agent filter"/> <button class="btn btn-ghost"><!> Refresh</button></div></div> <div class="insight-strip svelte-1ik2acm"><div class="insight-card svelte-1ik2acm"><span class="svelte-1ik2acm">Pending</span> <strong class="svelte-1ik2acm"> </strong></div> <div class="insight-card svelte-1ik2acm"><span class="svelte-1ik2acm">Resolved</span> <strong class="svelte-1ik2acm"> </strong></div> <div class="insight-card svelte-1ik2acm"><span class="svelte-1ik2acm">Claims</span> <strong class="svelte-1ik2acm"> </strong></div> <div class="insight-card svelte-1ik2acm"><span class="svelte-1ik2acm">Total</span> <strong class="svelte-1ik2acm"> </strong></div></div> <!> <div class="mem-table-wrap svelte-1ik2acm"><table class="mem-table svelte-1ik2acm"><thead><tr class="mem-thead-row svelte-1ik2acm"><th class="mem-th svelte-1ik2acm" style="min-width:140px;">From</th><th class="mem-th svelte-1ik2acm" style="min-width:140px;">To</th><th class="mem-th svelte-1ik2acm" style="min-width:100px;">Task</th><th class="mem-th svelte-1ik2acm" style="min-width:200px;">Summary</th><th class="mem-th svelte-1ik2acm" style="width:100px;">Status</th><th class="mem-th svelte-1ik2acm" style="width:130px;">Created</th><th class="mem-th svelte-1ik2acm" style="width:130px;">Expires</th><th class="mem-th svelte-1ik2acm" style="width:60px;"></th></tr></thead><tbody><!></tbody></table></div> <div class="claims-section svelte-1ik2acm"><div class="claims-header svelte-1ik2acm"><div class="section-label svelte-1ik2acm">Active Claims</div> <span class="toolbar-subtitle svelte-1ik2acm"> </span></div> <!></div></div> <!>`,1);function gw(e,t){rt(t,!1);let n=I(),r=I(),i=Z(t,`repo`,8,``),a=I([]),o=I(!1),s=I(``),c=I(``),l=I(``),u=I([]),d=I(!1),f=I(null),p=I(null),m=I(!1);function h(e){return e?.structuredContent??null}function g(e,t){let n=Object.fromEntries(e.map((e,n)=>[e,t[n]]));return{id:String(n.id||``),repo:i(),from_agent:String(n.from_agent||``),to_agent:n.to_agent?String(n.to_agent):null,task_id:n.task_id?String(n.task_id):null,task_code:n.task_code?String(n.task_code):null,summary:String(n.summary||``),context:n.context&&typeof n.context==`object`&&!Array.isArray(n.context)?n.context:{},status:String(n.status||`pending`),created_at:String(n.created_at||``),updated_at:String(n.updated_at||n.created_at||``),expires_at:n.expires_at?String(n.expires_at):null}}async function _(){if(i()){L(d,!0);try{L(u,(await Ro.coordinationClaims({repo:i(),active_only:!0,pageSize:20})).claims||[])}catch(e){L(s,e instanceof Error?e.message:String(e))}finally{L(d,!1)}}}async function v(){if(i()){L(o,!0),L(s,``);try{let e={repo:i(),limit:50,structured:!0};H(c)&&(e.status=H(c)),H(l).trim()&&(e.to_agent=H(l).trim());let t=h(await Ro.callTool(`handoff-list`,e)),n=t?.handoffs?.columns||[];L(a,(t?.handoffs?.rows||[]).map(e=>g(n,e))),H(p)&&!H(a).some(e=>e.id===H(p)?.id)&&L(p,null)}catch(e){L(s,e instanceof Error?e.message:String(e))}finally{L(o,!1)}}}async function y(){await Promise.all([v(),_()])}function b(){L(p,null),L(m,!0)}function x(e){L(p,e),L(m,!0)}function S(){L(m,!1),L(p,null)}function C(){S(),y()}function w(){S(),y()}async function T(e){L(f,e.id),L(s,``);try{await Ro.releaseClaim({repo:i(),task_id:e.task_id,agent:e.agent}),await _()}catch(e){L(s,e instanceof Error?e.message:String(e))}finally{L(f,null)}}async function E(e){if(await Bo(`Expire handoff "${e.summary}"?`))try{await Ro.callTool(`handoff-update`,{id:e.id,status:`expired`,structured:!0}),y()}catch(e){L(s,e instanceof Error?e.message:String(e))}}Ka(()=>{y()}),ir(()=>W(i()),()=>{i()&&y()}),ir(()=>H(a),()=>{L(n,H(a).filter(e=>e.status===`pending`).length)}),ir(()=>H(a),()=>{L(r,H(a).filter(e=>e.status!==`pending`).length)}),ar(),Ua();var D=hw(),O=z(D),k=R(O),ee=R(k);Q(R(ee),{name:`git-branch`,size:16,strokeWidth:2}),M(2),j(ee);var te=B(ee,2);Q(R(te),{name:`plus`,size:14,strokeWidth:2}),M(),j(te);var ne=B(te,2),re=R(ne),ie=R(re);ie.value=ie.__value=``;var A=B(ie);A.value=A.__value=`pending`;var ae=B(A);ae.value=ae.__value=`accepted`;var oe=B(ae);oe.value=oe.__value=`rejected`;var se=B(oe);se.value=se.__value=`expired`,j(re);var ce=B(re,2);Ta(ce);var le=B(ce,2);Q(R(le),{name:`refresh-cw`,size:14,strokeWidth:2}),M(),j(le),j(ne),j(k);var ue=B(k,2),de=R(ue),fe=B(R(de),2),pe=R(fe,!0);j(fe),j(de);var me=B(de,2),he=B(R(me),2),ge=R(he,!0);j(he),j(me);var _e=B(me,2),ve=B(R(_e),2),ye=R(ve,!0);j(ve),j(_e);var be=B(_e,2),xe=B(R(be),2),Se=R(xe,!0);j(xe),j(be),j(ue);var Ce=B(ue,2),we=e=>{var t=sw(),n=R(t,!0);j(t),V(()=>J(n,H(s))),q(e,t)};Y(Ce,e=>{H(s)&&e(we)});var Te=B(Ce,2),Ee=R(Te),De=B(R(Ee)),Oe=R(De),ke=e=>{var t=Ti();X(z(t),0,()=>({length:5}),Ni,(e,t)=>{q(e,cw())}),q(e,t)},Ae=e=>{var t=lw(),n=R(t);Q(R(n),{name:`git-branch`,size:22,strokeWidth:1.75}),M(4),j(n),j(t),q(e,t)},je=e=>{var n=Ti();X(z(n),1,()=>H(a),e=>e.id,(e,n)=>{var r=uw(),i=R(r),a=R(i,!0);j(i);var o=B(i),s=R(o,!0);j(o);var c=B(o),l=R(c,!0);j(c);var u=B(c),d=R(u),f=R(d,!0);j(d),j(u);var p=B(u),m=R(p);let h;var g=R(m,!0);j(m),j(p);var _=B(p),v=R(_,!0);j(_);var y=B(_),b=R(y,!0);j(y);var S=B(y),C=R(S);Q(R(C),{name:`trash`,size:13,strokeWidth:2}),j(C),j(S),j(r),V((e,t,r)=>{J(a,(H(n),U(()=>H(n).from_agent))),J(s,(H(n),U(()=>H(n).to_agent||`—`))),J(l,e),J(f,(H(n),U(()=>H(n).summary))),h=la(m,1,`status-pill svelte-1ik2acm`,null,h,{"status-pending":H(n).status===`pending`,"status-accepted":H(n).status===`accepted`,"status-rejected":H(n).status===`rejected`,"status-expired":H(n).status===`expired`}),J(g,(H(n),U(()=>H(n).status))),J(v,t),J(b,r),C.disabled=(H(n),U(()=>H(n).status===`expired`))},[()=>(H(n),U(()=>H(n).task_code||H(n).task_id?.slice(0,8)||`—`)),()=>(W(ql),H(n),U(()=>ql(H(n).created_at))),()=>(H(n),W(ql),U(()=>H(n).expires_at?ql(H(n).expires_at):`—`))]),G(`click`,C,()=>E(H(n))),G(`click`,S,Va(function(e){Ga.call(this,t,e)})),G(`click`,r,()=>x(H(n))),G(`keydown`,r,e=>e.key===`Enter`&&x(H(n))),q(e,r)}),q(e,n)};Y(Oe,e=>{H(o)?e(ke):(H(a),U(()=>H(a).length===0)?e(Ae,1):e(je,-1))}),j(De),j(Ee),j(Te);var Me=B(Te,2),Ne=R(Me),Pe=B(R(Ne),2),Fe=R(Pe);j(Pe),j(Ne);var Ie=B(Ne,2),Le=e=>{q(e,dw())},Re=e=>{var t=fw();Q(R(t),{name:`check`,size:20,strokeWidth:1.75}),M(4),j(t),q(e,t)},ze=e=>{var t=mw();X(t,5,()=>H(u),e=>e.id,(e,t)=>{var n=pw(),r=R(n),i=R(r),a=R(i,!0);j(i);var o=B(i,2),s=R(o),c=R(s,!0);j(s);var l=B(s,2),u=R(l,!0);j(l);var d=B(l,2),p=R(d,!0);j(d),j(o),j(r);var m=B(r,2),h=R(m,!0);j(m),j(n),V(e=>{J(a,(H(t),U(()=>H(t).task_code||H(t).task_id))),J(c,(H(t),U(()=>H(t).agent))),J(u,(H(t),U(()=>H(t).role))),J(p,e),m.disabled=(H(f),H(t),U(()=>H(f)===H(t).id)),J(h,(H(f),H(t),U(()=>H(f)===H(t).id?`Releasing...`:`Release`)))},[()=>(W(ql),H(t),U(()=>ql(H(t).claimed_at)))]),G(`click`,m,()=>T(H(t))),q(e,n)}),j(t),q(e,t)};Y(Ie,e=>{H(d)?e(Le):(H(u),U(()=>H(u).length===0)?e(Re,1):e(ze,-1))}),j(Me),j(O);var Be=B(O,2);{let e=dn(()=>H(p)?`handoff`:`new-handoff`);cS(Be,{get drawerMode(){return H(e)},get handoff(){return H(p)},get open(){return H(m)},onClose:S,onHandoffCreated:C,onHandoffUpdated:w,get repo(){return i()}})}V(()=>{J(pe,H(n)),J(ge,H(r)),J(ye,(H(u),U(()=>H(u).length))),J(Se,(H(a),U(()=>H(a).length))),J(Fe,`${(H(u),U(()=>H(u).length))??``} active`)}),G(`click`,te,b),ma(re,()=>H(c),e=>L(c,e)),G(`change`,re,v),Fa(ce,()=>H(l),e=>L(l,e)),G(`input`,ce,v),G(`click`,le,y),q(e,D),it()}var _w={nodeRadius:18,repulsionStrength:4e3,attractionStrength:.005,centeringStrength:.01,damping:.85,minVelocity:.1,iterations:120,margin:30};function vw(e,t,n){let r=t/2,i=n/2,a=Math.min(t,n)*.35,o=e.length;return e.map((e,t)=>{let n=2*Math.PI*t/o+Math.random()*.2,s=a*(.3+Math.random()*.7);return{...e,x:r+Math.cos(n)*s,y:i+Math.sin(n)*s,vx:0,vy:0,pinned:!1}})}function yw(e,t,n,r){let i={maxVisibleNodes:240,margin:48,nodeGap:54,minCanvasWidth:108,minCanvasHeight:108,...r},a=e.slice(0,i.maxVisibleNodes),o=Math.max(i.minCanvasWidth,t),s=Math.max(i.minCanvasHeight,n),c=Math.min(i.margin,Math.max(0,(Math.min(o,s)-36)/2)),l=Math.max(i.nodeGap,o-c*2),u=Math.max(i.nodeGap,s-c*2),d=Math.max(1,Math.floor(l/i.nodeGap)),f=Math.max(1,Math.ceil(a.length/d)),p=Math.min(i.nodeGap,u/f),m=Math.min(d,a.length||1),h=Math.max(18,(o-(m-1)*i.nodeGap)/2),g=Math.max(18,Math.max(c,(s-(f-1)*p)/2));return a.map((e,t)=>{let n=t%d,r=Math.floor(t/d);return{...e,x:h+n*i.nodeGap,y:g+r*p,vx:0,vy:0,pinned:!1}})}function bw(e,t,n,r,i){if(e.length===0)return e;let a={..._w,...i},o=new Map;for(let t of e)o.set(t.id,t),o.set(t.name,t);for(let i=0;i<a.iterations;i++){let s=1-i/a.iterations;for(let t=0;t<e.length;t++)for(let n=t+1;n<e.length;n++){let r=e[t],i=e[n],o=r.x-i.x,c=r.y-i.y,l=Math.hypot(o,c);l<1&&(l=1);let u=a.repulsionStrength/(l*l),d=o/l*u*s,f=c/l*u*s;r.pinned||(r.vx+=d,r.vy+=f),i.pinned||(i.vx-=d,i.vy-=f)}for(let e of t){let t=o.get(e.source),n=o.get(e.target);if(!t||!n)continue;let r=n.x-t.x,i=n.y-t.y,c=Math.hypot(r,i);if(c<1)continue;let l=a.attractionStrength*c*s,u=r/c*l,d=i/c*l;t.pinned||(t.vx+=u,t.vy+=d),n.pinned||(n.vx-=u,n.vy-=d)}let c=n/2,l=r/2;for(let t of e)t.pinned||(t.vx+=(c-t.x)*a.centeringStrength*s,t.vy+=(l-t.y)*a.centeringStrength*s);for(let t of e)t.pinned||(t.vx*=a.damping,t.vy*=a.damping,Math.abs(t.vx)<a.minVelocity&&Math.abs(t.vy)<a.minVelocity&&(t.vx=0,t.vy=0),t.x+=t.vx,t.y+=t.vy,t.x<a.margin&&(t.x=a.margin,t.vx=0),t.x>n-a.margin&&(t.x=n-a.margin,t.vx=0),t.y<a.margin&&(t.y=a.margin,t.vy=0),t.y>r-a.margin&&(t.y=r-a.margin,t.vy=0))}return e}var xw={person:`#22c55e`,place:`#3b82f6`,organization:`#f97316`,concept:`#a855f7`,unknown:`#6b7280`},Sw={person:`rgba(34,197,94,0.35)`,place:`rgba(59,130,246,0.35)`,organization:`rgba(249,115,22,0.35)`,concept:`rgba(168,85,247,0.35)`,unknown:`rgba(107,114,128,0.25)`};function Cw(e){return xw[e]??xw.unknown}function ww(e){return Sw[e]??Sw.unknown}function Tw(e,t){let n=e.replace(`#`,``),r=parseInt(n.length===3?n[0]+n[0]+n[1]+n[1]+n[2]+n[2]:n,16);return`rgb(${Math.min(255,(r>>16&255)+t)},${Math.min(255,(r>>8&255)+t)},${Math.min(255,(r&255)+t)})`}function Ew(e){let t=e.parentElement?.getBoundingClientRect(),n=t?t.width:800,r=t?t.height:600,i=window.devicePixelRatio||1;e.width=n*i,e.height=r*i,e.style.width=n+`px`,e.style.height=r+`px`;let a=e.getContext(`2d`);return a.scale(i,i),{width:n,height:r,dpr:i,ctx:a}}function Dw(e,t,n,r,i,a){a=Math.min(a,r/2,i/2),e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+r-a,n),e.arcTo(t+r,n,t+r,n+a,a),e.lineTo(t+r,n+i-a),e.arcTo(t+r,n+i,t+r-a,n+i,a),e.lineTo(t+a,n+i),e.arcTo(t,n+i,t,n+i-a,a),e.lineTo(t,n+a),e.arcTo(t,n,t+a,n,a),e.closePath()}function Ow(e,t,n,r){e.strokeStyle=r?`rgba(255,255,255,0.03)`:`rgba(0,0,0,0.03)`,e.lineWidth=.5;for(let r=0;r<t;r+=30)e.beginPath(),e.moveTo(r,0),e.lineTo(r,n),e.stroke();for(let r=0;r<n;r+=30)e.beginPath(),e.moveTo(0,r),e.lineTo(t,r),e.stroke()}function kw(e,t,n,r,i,a){if(e.strokeStyle=i?`#f59e0b`:a?`rgba(148,163,184,0.4)`:`rgba(100,116,139,0.35)`,e.lineWidth=i?2.5:1.5,e.beginPath(),e.moveTo(n.x,n.y),e.lineTo(r.x,r.y),e.stroke(),t.relation_type){let i=(n.x+r.x)/2,o=(n.y+r.y)/2,s=t.relation_type;e.font=`9px system-ui,sans-serif`,e.textAlign=`center`,e.textBaseline=`bottom`;let c=e.measureText(s).width;e.fillStyle=a?`rgba(10,14,26,0.8)`:`rgba(240,244,255,0.85)`,e.fillRect(i-c/2-3,o-10,c+6,14),e.fillStyle=a?`rgba(148,163,184,0.8)`:`rgba(71,85,105,0.8)`,e.fillText(s,i,o)}}function Aw(e,t,n,r,i){let a=Cw(t.type),o=ww(t.type),s=n||r?22:18;(n||r)&&(e.shadowColor=o,e.shadowBlur=20);let c=e.createRadialGradient(t.x-4,t.y-4,2,t.x,t.y,s);if(c.addColorStop(0,i?Tw(a,40):Tw(a,60)),c.addColorStop(1,a),e.fillStyle=c,e.beginPath(),e.arc(t.x,t.y,s,0,Math.PI*2),e.fill(),e.shadowBlur=0,e.strokeStyle=r?`#f59e0b`:i?`rgba(255,255,255,0.15)`:`rgba(255,255,255,0.6)`,e.lineWidth=r?2.5:1.5,e.stroke(),t.memoryCount&&t.memoryCount>0&&(e.fillStyle=i?`#1e293b`:`#ffffff`,e.beginPath(),e.arc(t.x+s-6,t.y-s+6,9,0,Math.PI*2),e.fill(),e.fillStyle=Cw(t.type),e.font=`bold 8px system-ui,sans-serif`,e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(String(t.memoryCount),t.x+s-6,t.y-s+6)),e.fillStyle=i?`#e2e8f0`:`#1e293b`,e.font=`bold 11px system-ui,sans-serif`,e.textAlign=`center`,e.textBaseline=`top`,e.fillText(t.name,t.x,t.y+s+4),t.description){e.fillStyle=i?`rgba(148,163,184,0.6)`:`rgba(100,116,139,0.6)`,e.font=`8px system-ui,sans-serif`;let n=t.description.length>18?t.description.slice(0,18)+`...`:t.description;e.fillText(n,t.x,t.y+s+16)}}function jw(e,t,n,r,i,a){let o=[t.name,`Type: ${t.type}`,t.description??``,t.memoryCount==null?``:`Memories: ${t.memoryCount}`].filter(Boolean);e.font=`11px system-ui,sans-serif`;let s=Math.max(...o.map(t=>e.measureText(t).width))+20,c=o.length*16+20,l=n.x+12,u=n.y-12;l+s>r&&(l=n.x-s-12),u+c>i&&(u=i-c-4),u<4&&(u=4),e.fillStyle=a?`rgba(2,6,23,0.92)`:`rgba(255,255,255,0.95)`,e.shadowColor=`rgba(0,0,0,0.2)`,e.shadowBlur=12,Dw(e,l,u,s,c,8),e.fill(),e.shadowBlur=0,e.strokeStyle=a?`rgba(148,163,184,0.2)`:`rgba(0,0,0,0.08)`,e.lineWidth=1,Dw(e,l,u,s,c,8),e.stroke(),e.textAlign=`left`,e.textBaseline=`top`;for(let t=0;t<o.length;t++)e.font=t===0?`bold 12px system-ui,sans-serif`:`10px system-ui,sans-serif`,e.fillStyle=a?`#e2e8f0`:`#1e293b`,e.fillText(o[t],l+10,u+10+t*16)}function Mw(e,t,n,r){let i=`+${n} hidden`;e.font=`bold 11px system-ui,sans-serif`,e.textAlign=`right`,e.textBaseline=`top`;let a=e.measureText(i).width+20,o=Math.max(8,t-a-12);e.fillStyle=r?`rgba(15,23,42,0.88)`:`rgba(255,255,255,0.9)`,Dw(e,o,12,a,26,999),e.fill(),e.strokeStyle=r?`rgba(148,163,184,0.28)`:`rgba(59,130,246,0.22)`,e.lineWidth=1,Dw(e,o,12,a,26,999),e.stroke(),e.fillStyle=r?`#bfdbfe`:`#1d4ed8`,e.fillText(i,o+a-10,19)}function Nw(e,t,n,r,i,a){let o=document.documentElement.classList.contains(`dark`);e.clearRect(0,0,t,n),e.fillStyle=o?`#0a0e1a`:`#f0f4ff`,e.fillRect(0,0,t,n),Ow(e,t,n,o);let s=new Map;for(let e of r)s.set(e.id,e),s.set(e.name,e);for(let t of i){let n=s.get(t.source),r=s.get(t.target);!n||!r||kw(e,t,n,r,a.selectedEdge===t,o)}for(let t of r)Aw(e,t,a.hoveredNode===t,a.selectedNode===t,o);a.hiddenNodeCount&&a.hiddenNodeCount>0&&Mw(e,t,a.hiddenNodeCount,o),a.showTooltip&&a.selectedNode&&jw(e,a.selectedNode,a.tooltipPos,t,n,o)}var Pw=K(`<div class="kg-relation-hint svelte-fsq8sk" role="status" aria-live="polite"><!> <span> <!></span></div>`);function Fw(e,t){let n=Z(t,`visibleNodeCount`,8),r=Z(t,`totalNodeCount`,8),i=Z(t,`hiddenNodeCount`,8);var a=Pw(),o=R(a);Q(o,{name:`info`,size:14,strokeWidth:1.75});var s=B(o,2),c=R(s),l=B(c),u=e=>{var t=wi();V(()=>J(t,`${i()??``} entities are hidden from the canvas and marked in the overview badge to keep the dashboard responsive.`)),q(e,t)};Y(l,e=>{i()>0&&e(u)}),j(s),j(a),V(()=>J(c,`Showing a capped overview of ${n()??``} of ${r()??``} entities because this graph has no relations. Create
|
|
150
|
-
relations or run a relation backfill to enable the connected force graph. `)),q(e,a)}var Iw=K(`<div class="kg-error svelte-1ysja8i"><!> </div>`),Lw=K(`<div class="kg-toolbar svelte-1ysja8i"><div class="kg-toolbar-left svelte-1ysja8i"><span class="section-label" style="font-size:0.68rem;"><!> Knowledge Graph</span> <span class="kg-stats svelte-1ysja8i"> </span></div> <div class="kg-toolbar-right svelte-1ysja8i"><button class="btn btn-ghost btn-sm"><!> Add Entity</button> <button class="btn btn-ghost btn-sm"><!> Add Relation</button> <button class="btn btn-ghost btn-sm"><!> Refresh</button></div></div> <!> <!>`,1);function Rw(e,t){let n=Z(t,`nodeCount`,8),r=Z(t,`edgeCount`,8),i=Z(t,`isLoading`,8),a=Z(t,`errorMsg`,8),o=Z(t,`isZeroEdgeOverview`,8),s=Z(t,`visibleNodeCount`,8),c=Z(t,`hiddenNodeCount`,8),l=Z(t,`onAddEntity`,8),u=Z(t,`onAddRelation`,8),d=Z(t,`onRefresh`,8);var f=Lw(),p=z(f),m=R(p),h=R(m);Q(R(h),{name:`share-2`,size:12,strokeWidth:1.75}),M(),j(h);var g=B(h,2),_=R(g);j(g),j(m);var v=B(m,2),y=R(v);Q(R(y),{name:`plus`,size:12,strokeWidth:2}),M(),j(y);var b=B(y,2);Q(R(b),{name:`link`,size:12,strokeWidth:2}),M(),j(b);var x=B(b,2),S=R(x);{let e=dn(()=>i()?`animate-spin`:``);Q(S,{name:`refresh-cw`,size:12,strokeWidth:2,get className(){return H(e)}})}M(),j(x),j(v),j(p);var C=B(p,2),w=e=>{var t=Iw(),n=R(t);Q(n,{name:`triangle-alert`,size:14,strokeWidth:1.75});var r=B(n);j(t),V(()=>J(r,` ${a()??``}`)),q(e,t)};Y(C,e=>{a()&&e(w)});var T=B(C,2),E=e=>{Fw(e,{get visibleNodeCount(){return s()},get totalNodeCount(){return n()},get hiddenNodeCount(){return c()}})};Y(T,e=>{o()&&e(E)}),V(()=>{J(_,`${n()??``} nodes · ${r()??``} edges`),x.disabled=i()}),G(`click`,y,function(...e){l()?.apply(this,e)}),G(`click`,b,function(...e){u()?.apply(this,e)}),G(`click`,x,function(...e){d()?.apply(this,e)}),q(e,f)}var zw=K(`<div class="kg-container svelte-1esn54r"><!></div>`);function Bw(e,t){var n=zw();Hi(R(n),t,`default`,{},null),j(n),q(e,n)}var Vw=K(`<p>Are you sure you want to delete entity <strong> </strong>?</p>`),Hw=K(`<p>Are you sure you want to delete this relation?</p> <p style="font-size:0.8rem;color:var(--color-text-muted);margin-top:4px;"> </p>`,1),Uw=K(`<div class="modal-header svelte-18jfbxu"><!> <span>Confirm Delete</span></div> <div class="modal-body svelte-18jfbxu"><!></div> <div class="modal-footer svelte-18jfbxu"><button class="btn btn-ghost btn-sm">Cancel</button> <button class="btn btn-sm" style="background:var(--color-danger);color:white;border:none;">Delete</button></div>`,1),Ww=K(`<div class="modal-header svelte-18jfbxu"><!> <span>Add Entity</span></div> <div class="modal-body svelte-18jfbxu"><div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="entity-name">Name *</label> <input id="entity-name" class="form-input" type="text" placeholder="Entity name"/></div> <div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="entity-type">Type</label> <select id="entity-type" class="form-select"><option>Person</option><option>Place</option><option>Organization</option><option>Concept</option><option>Unknown</option></select></div> <div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="entity-desc">Description</label> <textarea id="entity-desc" class="form-textarea" placeholder="Optional description" rows="2"></textarea></div></div> <div class="modal-footer svelte-18jfbxu"><button class="btn btn-ghost btn-sm">Cancel</button> <button class="btn btn-primary btn-sm">Create</button></div>`,1),Gw=K(`<option> </option>`),Kw=K(`<option> </option>`),qw=K(`<div class="modal-header svelte-18jfbxu"><!> <span>Add Relation</span></div> <div class="modal-body svelte-18jfbxu"><div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="rel-from">From Entity *</label> <select id="rel-from" class="form-select"><option>Select entity...</option><!></select></div> <div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="rel-to">To Entity *</label> <select id="rel-to" class="form-select"><option>Select entity...</option><!></select></div> <div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="rel-type">Relation Type *</label> <input id="rel-type" class="form-input" type="text" placeholder="e.g., knows, located_in, works_at"/></div></div> <div class="modal-footer svelte-18jfbxu"><button class="btn btn-ghost btn-sm">Cancel</button> <button class="btn btn-primary btn-sm">Create</button></div>`,1),Jw=K(`<div class="modal-overlay svelte-18jfbxu" role="button" tabindex="0" aria-label="Close"></div> <div class="modal-panel animate-fade-in-scale svelte-18jfbxu" role="dialog"><!></div>`,1);function Yw(e,t){rt(t,!1);let n=Ya(),r=Z(t,`mode`,8,`addEntity`),i=Z(t,`show`,8,!1),a=Z(t,`entityNodes`,24,()=>[]),o=Z(t,`deleteTarget`,8,null),s=I(``),c=I(`concept`),l=I(``),u=I(``),d=I(``),f=I(``);function p(){n(`close`)}function m(){n(`close`)}function h(){H(s).trim()&&(n(`addEntity`,{name:H(s).trim(),type:H(c),description:H(l).trim()||void 0}),L(s,``),L(c,`concept`),L(l,``))}function g(){!H(u)||!H(d)||!H(f).trim()||(n(`addRelation`,{from_entity:H(u),to_entity:H(d),relation_type:H(f).trim()}),L(u,``),L(d,``),L(f,``))}function _(){n(`delete`)}Ua();var v=Ti(),y=z(v),b=e=>{var t=Jw(),n=z(t),i=B(n,2),v=R(i),y=e=>{var t=Uw(),n=z(t);Q(R(n),{name:`trash`,size:14,strokeWidth:1.75}),M(2),j(n);var r=B(n,2),i=R(r),a=e=>{var t=Vw(),n=B(R(t)),r=R(n,!0);j(n),M(),j(t),V(()=>J(r,(W(o()),U(()=>o().name)))),q(e,t)},s=e=>{var t=Hw(),n=B(z(t),2),r=R(n,!0);j(n),V(()=>J(r,(W(o()),U(()=>o()?.name)))),q(e,t)};Y(i,e=>{W(o()),U(()=>o()?.type===`node`)?e(a):e(s,-1)}),j(r);var c=B(r,2),l=R(c),u=B(l,2);j(c),G(`click`,l,m),G(`click`,u,_),q(e,t)},b=e=>{var t=Ww(),n=z(t);Q(R(n),{name:`plus`,size:14,strokeWidth:1.75}),M(2),j(n);var r=B(n,2),i=R(r),a=B(R(i),2);Ta(a),j(i);var o=B(i,2),u=B(R(o),2),d=R(u);d.value=d.__value=`person`;var f=B(d);f.value=f.__value=`place`;var p=B(f);p.value=p.__value=`organization`;var g=B(p);g.value=g.__value=`concept`;var _=B(g);_.value=_.__value=`unknown`,j(u),j(o);var v=B(o,2),y=B(R(v),2);Un(y),j(v),j(r);var b=B(r,2),x=R(b),S=B(x,2);j(b),V(e=>S.disabled=e,[()=>(H(s),U(()=>!H(s).trim()))]),Fa(a,()=>H(s),e=>L(s,e)),ma(u,()=>H(c),e=>L(c,e)),Fa(y,()=>H(l),e=>L(l,e)),G(`click`,x,m),G(`click`,S,h),q(e,t)},x=e=>{var t=qw(),n=z(t);Q(R(n),{name:`link`,size:14,strokeWidth:1.75}),M(2),j(n);var r=B(n,2),i=R(r),o=B(R(i),2),s=R(o);s.value=s.__value=``,X(B(s),1,a,e=>e.name,(e,t)=>{var n=Gw(),r=R(n,!0);j(n);var i={};V(()=>{J(r,(H(t),U(()=>H(t).name))),i!==(i=(H(t),U(()=>H(t).name)))&&(n.value=(n.__value=(H(t),U(()=>H(t).name)))??``)}),q(e,n)}),j(o),j(i);var c=B(i,2),l=B(R(c),2),p=R(l);p.value=p.__value=``,X(B(p),1,a,e=>e.name,(e,t)=>{var n=Kw(),r=R(n,!0);j(n);var i={};V(()=>{J(r,(H(t),U(()=>H(t).name))),i!==(i=(H(t),U(()=>H(t).name)))&&(n.value=(n.__value=(H(t),U(()=>H(t).name)))??``)}),q(e,n)}),j(l),j(c);var h=B(c,2),_=B(R(h),2);Ta(_),j(h),j(r);var v=B(r,2),y=R(v),b=B(y,2);j(v),V(e=>b.disabled=e,[()=>(H(u),H(d),H(f),U(()=>!H(u)||!H(d)||!H(f).trim()))]),ma(o,()=>H(u),e=>L(u,e)),ma(l,()=>H(d),e=>L(d,e)),Fa(_,()=>H(f),e=>L(f,e)),G(`click`,y,m),G(`click`,b,g),q(e,t)};Y(v,e=>{r()===`deleteConfirm`?e(y):r()===`addEntity`?e(b,1):r()===`addRelation`&&e(x,2)}),j(i),G(`click`,n,p),q(e,t)};Y(y,e=>{i()&&e(b)}),q(e,v),it()}var Xw=K(`<div class="kg-loading"><div class="animate-spin" style="width:24px;height:24px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;"></div> <span>Loading graph...</span></div>`),Zw=K(`<div class="kg-empty"><!> <div>No knowledge graph data found</div> <div class="text-xs" style="color:var(--color-text-muted);">Add entities and relations to build your graph.</div></div>`),Qw=K(`<div class="kg-canvas-wrap"><canvas tabindex="0"></canvas></div>`),$w=K(`<!> <!> <!> <!> <!>`,1);function eT(e,t){rt(t,!1);let n=Z(t,`repo`,8),r=I([]),i=I([]),a=I(!0),o=I(``),s=I(``),c=I(!1),l=I(0),u=I([]),d=[],f=new Map;function p(e){return f.get(e)}let m=I(),h,g=800,_=600,v={hoveredNode:null,selectedNode:null,selectedEdge:null,tooltipPos:{x:0,y:0},showTooltip:!1},y=I(!1),b=I(!1),x=I(!1),S=I(null),C=new Map;function w(e){let t=new Map;for(let n of e)t.set(n.id,n),t.set(n.name,n);return t}function T(){h&&Nw(h,g,_,H(u),d,{...v,hiddenNodeCount:H(l)})}async function E(e=!1){if(!n())return;let t=n();if(!(!e&&H(s)===t&&H(u).length>0)){L(a,!0),L(o,``),D();try{let e=await Ro.kgGraph(t);if(n()!==t)return;L(r,e.nodes||[]),L(i,e.edges||[]),L(s,t),O()}catch(e){if(n()!==t)return;L(s,``),L(o,e instanceof Error?e.message:`Failed to load graph`)}finally{n()===t&&L(a,!1)}}}function D(){L(r,[]),L(i,[]),L(u,[]),d=[],f=C,L(c,!1),L(l,0),v.selectedNode=null,v.selectedEdge=null,v.hoveredNode=null,v.showTooltip=!1,T()}function O(){if(h){if(L(c,H(i).length===0&&H(r).length>0),H(c)){let e=yw(H(r).map(e=>({id:e.id,name:e.name,type:e.type,description:e.description,memoryCount:e.memoryCount,x:0,y:0,vx:0,vy:0,pinned:!1})),g,_);L(u,e),L(l,Math.max(0,H(r).length-e.length)),d=[],f=w(H(u)),T();return}L(u,vw(H(r).map(e=>({id:e.id,name:e.name,type:e.type,description:e.description,memoryCount:e.memoryCount,x:0,y:0,vx:0,vy:0,pinned:!1})),g,_)),d=H(i).map(e=>({source:e.source,target:e.target,relation_type:e.relation_type})),L(l,0),f=w(H(u)),bw(H(u),d,g,_),T()}}function k(){if(!H(m))return;let e=Ew(H(m));if(g=e.width,_=e.height,h=e.ctx,H(u).length>0){if(H(c)){O();return}bw(H(u),d,g,_),T()}}function ee(e){let t=H(m).getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;for(let e of H(u)){let t=n-e.x,i=r-e.y;if(t*t+i*i<=484){v.selectedNode=e,v.selectedEdge=null,v.tooltipPos={x:n,y:r},v.showTooltip=!0,T();return}}for(let e of d){let t=p(e.source),i=p(e.target);if(!(!t||!i)&&ie(n,r,t.x,t.y,i.x,i.y)<10){v.selectedEdge=e,v.selectedNode=null,v.showTooltip=!1,T();return}}v.selectedNode=null,v.selectedEdge=null,v.showTooltip=!1,T()}function te(e){let t=H(m).getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;for(let e of H(u)){let t=n-e.x,i=r-e.y;if(t*t+i*i<=484){L(S,{type:`node`,name:e.name}),L(x,!0);return}}}function ne(e){e.preventDefault();let t=H(m).getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;for(let e of d){let t=p(e.source),i=p(e.target);if(!(!t||!i)&&ie(n,r,t.x,t.y,i.x,i.y)<10){L(S,{type:`edge`,name:`${e.source} → ${e.target} (${e.relation_type})`,edge:e}),v.selectedEdge=e,v.selectedNode=null,L(x,!0),T();return}}}function re(e){let t=H(m).getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,i=null;for(let e of H(u)){let t=n-e.x,a=r-e.y;if(t*t+a*a<=484){i=e;break}}i!==v.hoveredNode&&(v.hoveredNode=i,Sn(m,H(m).style.cursor=i?`pointer`:`default`),T())}function ie(e,t,n,r,i,a){let o=i-n,s=a-r,c=o*o+s*s;if(c===0)return Math.hypot(e-n,t-r);let l=((e-n)*o+(t-r)*s)/c;return l=Math.max(0,Math.min(1,l)),Math.hypot(e-(n+l*o),t-(r+l*s))}async function A(e){let{name:t,type:r,description:i}=e.detail;try{await Ro.kgCreateEntity({name:t,type:r,description:i,repo:n()}),L(y,!1),await E(!0)}catch(e){L(o,e instanceof Error?e.message:`Failed to create entity`)}}async function ae(e){let{from_entity:t,to_entity:r,relation_type:i}=e.detail;try{await Ro.kgCreateRelation({from_entity:t,to_entity:r,relation_type:i,repo:n()}),L(b,!1),await E(!0)}catch(e){L(o,e instanceof Error?e.message:`Failed to create relation`)}}async function oe(){if(H(S))try{if(H(S).type===`node`)await Ro.kgDeleteEntity(H(S).name);else if(H(S).type===`edge`){let e=H(S).edge;await Ro.kgDeleteRelation({from_entity:e.source,to_entity:e.target,relation_type:e.relation_type})}L(x,!1),L(S,null),v.selectedEdge=null,v.selectedNode=null,v.showTooltip=!1,await E(!0)}catch(e){L(o,e instanceof Error?e.message:`Failed to delete`)}}function se(){L(x,!1),L(S,null)}function ce(e){e.key===`Escape`&&(v.showTooltip=!1,v.selectedNode=null,v.selectedEdge=null,L(x,!1),L(y,!1),L(b,!1),T())}let le=null;Ka(()=>{if(H(m)){let e=Ew(H(m));g=e.width,_=e.height,h=e.ctx}n()&&E(),le=new ResizeObserver(()=>k()),H(m)?.parentElement&&le.observe(H(m).parentElement)}),qa(()=>{le?.disconnect()}),ir(()=>(W(n()),H(m),H(s),U),()=>{n()&&H(m)&&H(s)!==n()&&U(()=>E())}),ar(),Ua(),G(`keydown`,An,ce),Bw(e,{children:(e,t)=>{var n=$w(),s=z(n);Rw(s,{get nodeCount(){return H(r),U(()=>H(r).length)},get edgeCount(){return H(i),U(()=>H(i).length)},get isLoading(){return H(a)},get errorMsg(){return H(o)},get isZeroEdgeOverview(){return H(c)},get visibleNodeCount(){return H(u),U(()=>H(u).length)},get hiddenNodeCount(){return H(l)},onAddEntity:()=>L(y,!0),onAddRelation:()=>L(b,!0),onRefresh:()=>E(!0)});var d=B(s,2),f=e=>{q(e,Xw())},p=e=>{var t=Zw();Q(R(t),{name:`share-2`,size:32,strokeWidth:1.25,className:``}),M(4),j(t),q(e,t)},h=e=>{var t=Qw(),n=R(t);Ba(n,e=>L(m,e),()=>H(m)),j(t),V(()=>ka(n,`aria-label`,(H(c),H(u),H(r),U(()=>H(c)?`Knowledge Graph zero-relation overview showing ${H(u).length} of ${H(r).length} entities`:`Knowledge Graph visualization`)))),G(`click`,n,ee),G(`dblclick`,n,te),G(`contextmenu`,n,ne),G(`mousemove`,n,re),q(e,t)};Y(d,e=>{H(a)?e(f):(H(u),U(()=>H(u).length===0)?e(p,1):e(h,-1))});var g=B(d,2);Yw(g,{mode:`addEntity`,get show(){return H(y)},$$events:{addEntity:A,close:()=>L(y,!1)}});var _=B(g,2);Yw(_,{mode:`addRelation`,get show(){return H(b)},get entityNodes(){return H(u)},$$events:{addRelation:ae,close:()=>L(b,!1)}}),Yw(B(_,2),{mode:`deleteConfirm`,get show(){return H(x)},get deleteTarget(){return H(S)},$$events:{delete:oe,close:se}}),q(e,n)},$$slots:{default:!0}}),it()}var tT={backlog:`#64748b`,pending:`#0ea5e9`,in_progress:`#a855f7`,blocked:`#ef4444`,completed:`#10b981`,canceled:`#94a3b8`},nT={backlog:`backlog`,pending:`pending`,in_progress:`in_progress`,blocked:`blocked`,completed:`completed`,canceled:`canceled`},rT=[`#06b6d4`,`#f59e0b`,`#ec4899`,`#10b981`,`#3b82f6`,`#f97316`,`#14b8a6`,`#e11d48`,`#8b5cf6`,`#84cc16`],iT=16,aT=22,oT=28,sT=new Set([`in_progress`,`pending`]),cT=34,lT=54,uT=28,dT=58,fT=42;function pT(e,t,n){return Math.min(n,Math.max(t,e))}function mT(e,t){let n=Math.max(1,e.w-cT*2),r=Math.max(1,e.h-lT-uT),i=pT(Math.floor(n/dT)+1,1,3),a=Math.max(1,Math.floor(r/fT)+1),o=t%(i*a),s=o%i,c=Math.floor(o/i),l=i>1?n/(i-1):0,u=a>1?r/(a-1):0;return{x:e.x+cT+s*l,y:e.y+lT+c*u}}var hT=[`male_nurse`,`female_nurse`,`staff1`,`staff2`];function gT(e){return e%2==0?`wheelchair`:`stretcher`}function _T(e){return hT[(e>>>4)%hT.length]}function vT(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return t}function yT(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return rT[t%rT.length]}function bT(e,t){let n=e-32,r=t-32,i=Math.floor((r-16)/2),a=r-i-16,o=Math.floor((n-16)/2),s=Math.floor((n-32)/3);return[{id:`pending`,label:`Pending`,x:16,y:16,w:o,h:i,color:`#f59e0b`},{id:`in_progress`,label:`In Progress`,x:16+o+16,y:16,w:n-o-16,h:i,color:`#3b82f6`},{id:`backlog`,label:`Backlog`,x:16,y:16+i+16,w:s,h:a,color:`#8b5cf6`},{id:`blocked`,label:`Blocked`,x:16+s+16,y:16+i+16,w:s,h:a,color:`#ef4444`},{id:`burnout`,label:`Therapy Room`,x:16+s*2+32,y:16+i+16,w:n-s*2-32,h:a,color:`#14b8a6`}]}function xT(e,t){let n=new Map(t.map(e=>[e.id,e])),r=new Map;t.forEach(e=>r.set(e.id,[]));for(let t of e){let e=nT[t.status]??`pending`;if(!r.has(e))continue;let n=r.get(e);n.length<iT&&n.push(t)}let i=new Map;for(let[e,t]of r){let r=n.get(e);if(!r||t.length===0)continue;let a=r.w-aT*2,o=r.h-aT-oT,s=Math.max(1,Math.floor(a/65)),c=Math.ceil(t.length/s);for(;o/c<55&&s<t.length;)s++,c=Math.ceil(t.length/s);let l=a/s,u=Math.max(55,Math.min(75,o/c));t.forEach((e,t)=>{let n=t%s,a=Math.floor(t/s);i.set(e.id,{x:r.x+aT+n*l+l/2,y:r.y+oT+a*u+u/2})})}return i}function ST(e,t,n,r,i){let a=bT(i.canvasWidth,i.canvasHeight),o=xT(e,a),s=a.find(e=>e.id===`in_progress`)||a[0],c={agents:new Map,tasks:new Map,handoffs:[]};for(let t of e){let e=o.get(t.id);e&&c.tasks.set(t.id,{id:t.id,taskCode:t.task_code,title:t.title,repo:t.repo,status:t.status,priority:t.priority??3,x:e.x,y:e.y,claimedByAgentId:t.coordination?.active_claim_agent??null,hasPendingHandoff:(t.coordination?.pending_handoff_count??0)>0})}let l=new Map;for(let e of t){l.has(e.agent)||l.set(e.agent,{tasks:new Set,role:e.role,repos:new Set});let t=l.get(e.agent);t.tasks.add(e.task_id),t.repos.add(e.repo)}for(let t of e){let e=t.coordination?.active_claim_agent;if(!e)continue;l.has(e)||l.set(e,{tasks:new Set,role:t.coordination?.active_claim_role??`agent`,repos:new Set});let n=l.get(e);n.tasks.add(t.id),n.repos.add(t.repo)}Array.from(l.keys()).forEach((e,t)=>{let{tasks:n,role:i,repos:o}=l.get(e),u=r?.agents.get(e),d=s.x+s.w/2+(t%3-1)*30,f=s.y+s.h/2+(Math.floor(t/3)-1)*30,p=Array.from(n).find(e=>c.tasks.has(e)),m=p?c.tasks.get(p):null,h=Array.from(n).map(e=>c.tasks.get(e)).filter(e=>!!e).some(e=>sT.has(e.status)),g=m?m.x+20:d,_=m?m.y-18:f,v=Array.from(n).sort(),y=u?.claimedTaskIds.slice().sort()??[],b=!u||v.join(`,`)!==y.join(`,`),x=Date.now(),S=b?x:u?.lastUpdateTs??x,C=!h&&x-S>3e4,w=n.size>0?`processing`:`idle`;m&&m.status===`blocked`&&(w=`blocked`);let T=u?.handoffAnim??null;if(C){w=`burnout`;let n=mT(a.find(e=>e.id===`burnout`)||s,t);if(g=n.x,_=n.y,u?.state!==`burnout`&&!T){let t=vT(e),n=u?.x??d,r=u?.y??f;T={phase:`pickup`,vehicle:gT(t),helperVariant:_T(t),startX:n,startY:r,endX:g,endY:_,progress:0,phaseStartTs:performance.now(),wheelAngle:0,helperWalkPhase:0,helperFacing:`down`,stepBounce:0}}}else T=null;c.agents.set(e,{id:e,name:e,role:i,color:yT(e),x:u?.x??d,y:u?.y??f,targetX:g,targetY:_,vx:u?.vx??0,vy:u?.vy??0,walkPhase:u?.walkPhase??0,facing:u?.facing??`down`,state:w,claimedTaskIds:Array.from(n),repos:Array.from(o),lastUpdateTs:S,handoffAnim:T})});for(let e of n)e.status===`pending`&&c.handoffs.push({id:e.id,fromAgentId:e.from_agent,toAgentId:e.to_agent,taskId:e.task_id,summary:e.summary});return c}function CT(e){return e?.structuredContent??null}function wT(e,t,n){let r=Object.fromEntries(e.map((e,n)=>[e,t[n]]));return{id:String(r.id??``),repo:n,from_agent:String(r.from_agent??``),to_agent:r.to_agent?String(r.to_agent):null,task_id:r.task_id?String(r.task_id):null,task_code:r.task_code?String(r.task_code):null,summary:String(r.summary??``),context:r.context??{},status:String(r.status??`pending`),created_at:String(r.created_at??``),updated_at:String(r.updated_at??r.created_at??``),expires_at:r.expires_at?String(r.expires_at):null}}function TT(){let e=N({scene:null,loading:!1,error:null,lastUpdated:0,repoCount:0}),t=null,n=!1,r=null;async function i(){if(n||!r)return;let t=P(to).map(e=>e.repo);if(t.length===0){e.update(e=>({...e,loading:!1}));return}n=!0;try{let n=await Promise.allSettled(t.map(e=>Promise.allSettled([Ro.tasks({repo:e,status:`in_progress`,pageSize:10}),Ro.tasks({repo:e,status:`pending`,pageSize:8}),Ro.tasks({repo:e,status:`blocked`,pageSize:4}),Ro.coordinationClaims({repo:e,active_only:!0,pageSize:50}),Ro.callTool(`handoff-list`,{repo:e,status:`pending`,limit:10,structured:!0})]))),i=[],a=[],o=[];t.forEach((e,t)=>{let r=n[t];if(r.status===`rejected`)return;let[s,c,l,u,d]=r.value;if(s.status===`fulfilled`&&i.push(...s.value.tasks??[]),c.status===`fulfilled`&&i.push(...c.value.tasks??[]),l.status===`fulfilled`&&i.push(...l.value.tasks??[]),u.status===`fulfilled`&&a.push(...u.value.claims??[]),d.status===`fulfilled`){let t=CT(d.value),n=t?.handoffs?.columns??[],r=t?.handoffs?.rows??[];o.push(...r.map(t=>wT(n,t,e)))}});let s=Array.from(new Map(i.map(e=>[e.id,e])).values());e.update(e=>({...e,scene:ST(s,a,o,e.scene,r),loading:!1,error:null,lastUpdated:Date.now(),repoCount:t.length}))}catch(t){e.update(e=>({...e,loading:!1,error:t instanceof Error?t.message:`Failed to load arena data`}))}finally{n=!1}}function a(e){r=e}function o(n){r=n,e.update(e=>({...e,loading:!0})),i(),t!==null&&clearInterval(t),t=setInterval(()=>void i(),2500)}function s(){t!==null&&(clearInterval(t),t=null),n=!1}return{subscribe:e.subscribe,start:o,stop:s,setLayout:a,refresh:i}}var ET=85,DT=50,OT=6,kT=[2800,5e3],AT=[600,1600],jT=100,MT=800,NT=600;function PT(e){if(!e)return[0,0,0];let t=e.replace(`#`,``);t.length===3?t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]:t.length===8&&(t=t.slice(0,6));let n=parseInt(t,16);return[n>>16&255,n>>8&255,n&255]}function FT(e,t){let[n,r,i]=PT(e);return`rgb(${Math.min(255,n+t)},${Math.min(255,r+t)},${Math.min(255,i+t)})`}function IT(e,t){let[n,r,i]=PT(e);return`rgb(${Math.max(0,n-t)},${Math.max(0,r-t)},${Math.max(0,i-t)})`}function LT(e,t){let[n,r,i]=PT(e);return`rgba(${n},${r},${i},${t})`}function RT(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return t}function zT(e,t){return Math.abs(Math.sin(e*127.1+t*311.7)*43758.5453)%1}function $(e,t,n,r,i,a){a=Math.min(a,r/2,i/2),e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+r-a,n),e.arcTo(t+r,n,t+r,n+a,a),e.lineTo(t+r,n+i-a),e.arcTo(t+r,n+i,t+r-a,n+i,a),e.lineTo(t+a,n+i),e.arcTo(t,n+i,t,n+i-a,a),e.lineTo(t,n+a),e.arcTo(t,n,t+a,n,a),e.closePath()}var BT=[`#1a0a00`,`#2d1a00`,`#0f0f0f`,`#4a2d00`,`#8B4513`,`#d4a800`,`#c0392b`,`#7b2d8b`,`#1a3a5c`,`#2d4a1a`],VT=[`#f5c89a`,`#e8a870`,`#d4875a`,`#c06840`,`#8B5e3c`,`#6b3d28`],HT=[`#1e3a5f`,`#2d4a1a`,`#3d2a1a`,`#2a1a3d`,`#1a3d3d`,`#3d1a2a`,`#2a2a3d`],UT={male_nurse:`#1e6e9e`,female_nurse:`#2d8e6e`,staff1:`#5a3e8a`,staff2:`#8a5a3e`},WT={male_nurse:`#1a0a00`,female_nurse:`#4a2d00`,staff1:`#0f0f0f`,staff2:`#2d1a00`},GT={male_nurse:`#e8a870`,female_nurse:`#f5c89a`,staff1:`#d4875a`,staff2:`#c06840`},KT=class{canvas;ctx;scene=null;layout=null;isDark=!1;hoveredId=null;rafId=0;ts=0;prevTs=0;wander=new Map;constructor(e){this.canvas=e,this.ctx=e.getContext(`2d`)}update(e,t,n){this.scene=e,this.layout=t,this.isDark=n}setHovered(e){this.hoveredId=e}start(){this.rafId=requestAnimationFrame(this.loop)}stop(){cancelAnimationFrame(this.rafId)}hitTestAgent(e,t){if(!this.scene)return null;for(let n of this.scene.agents.values()){let r=e-n.x,i=t-n.y;if(r*r+i*i<=196)return n.id}return null}loop=e=>{let t=Math.min((e-this.prevTs)/1e3,.05);if(this.prevTs=e,this.ts=e,this.scene&&this.layout){let n=bT(this.layout.canvasWidth,this.layout.canvasHeight),r=n.find(e=>e.id===`in_progress`)||n[0];this.updateAgents(t,r,e)}this.render(),this.rafId=requestAnimationFrame(this.loop)};updateAgents(e,t,n){if(this.scene)for(let r of this.scene.agents.values()){if(r.handoffAnim){this.updateHandoffAnim(r,e,n);continue}if(r.state===`idle`){let e=this.wander.get(r.id);if(e||(e={nextPickAt:n},this.wander.set(r.id,e)),n>=e.nextPickAt){r.targetX=t.x+22+Math.random()*(t.w-44),r.targetY=t.y+26+22+Math.random()*(t.h-26-44);let i=AT[0]+Math.random()*(AT[1]-AT[0]),a=kT[0]+Math.random()*(kT[1]-kT[0]);e.nextPickAt=n+i+a}if(Math.random()<.005){let e=[`up`,`down`,`left`,`right`];r.facing=e[Math.floor(Math.random()*e.length)]}}else this.wander.delete(r.id);let i=r.targetX-r.x,a=r.targetY-r.y,o=Math.hypot(i,a);if(o<OT)r.vx*=.75,r.vy*=.75,Math.abs(r.vx)<.5&&(r.vx=0),Math.abs(r.vy)<.5&&(r.vy=0);else{let e=r.state===`idle`?DT:ET,t=o<50?o/50*e+8:e;r.vx+=(i/o*t-r.vx)*.1,r.vy+=(a/o*t-r.vy)*.1}r.x+=r.vx*e,r.y+=r.vy*e;let s=Math.hypot(r.vx,r.vy);s>5?(r.walkPhase=(r.walkPhase+e*s*.07)%(Math.PI*2),r.facing=Math.abs(r.vx)>Math.abs(r.vy)?r.vx>0?`right`:`left`:r.vy>0?`down`:`up`):r.walkPhase=r.walkPhase>.05?r.walkPhase*.85:0}}updateHandoffAnim(e,t,n){let r=e.handoffAnim,i=n-r.phaseStartTs;switch(r.phase){case`pickup`:e.vx=0,e.vy=0,e.walkPhase=0,i>=MT&&(r.phase=`moving`,r.phaseStartTs=n,r.progress=0);break;case`moving`:{let i=Math.hypot(r.endX-r.startX,r.endY-r.startY),a=i/jT;r.progress=Math.min(1,r.progress+t/a);let o=r.progress,s=o<.5?2*o*o:1-(-2*o+2)**2/2;e.x=r.startX+(r.endX-r.startX)*s,e.y=r.startY+(r.endY-r.startY)*s,e.vx=0,e.vy=0;let c=t/a*i;r.wheelAngle=(r.wheelAngle+c*.15)%(Math.PI*2),r.helperWalkPhase=(r.helperWalkPhase+t*jT*.08)%(Math.PI*2),r.stepBounce=Math.sin(r.helperWalkPhase*2)*1.5;let l=r.endX-r.startX,u=r.endY-r.startY;r.helperFacing=Math.abs(l)>Math.abs(u)?l>0?`right`:`left`:u>0?`down`:`up`,r.progress>=1&&(r.phase=`arrive`,r.phaseStartTs=n,e.x=r.endX,e.y=r.endY);break}case`arrive`:e.x=r.endX,e.y=r.endY,e.vx=0,e.vy=0,e.walkPhase=0,r.helperWalkPhase=r.helperWalkPhase>.05?r.helperWalkPhase*.92:0,i>=NT&&(r.phase=`resting`,r.phaseStartTs=n,e.targetX=r.endX,e.targetY=r.endY);break;case`resting`:e.x=r.endX,e.y=r.endY,e.vx=0,e.vy=0,e.walkPhase=0;break}}render(){let{canvas:e,ctx:t,scene:n,layout:r,isDark:i,ts:a}=this;if(!r)return;let o=bT(r.canvasWidth,r.canvasHeight);t.clearRect(0,0,e.width,e.height),this.drawGlobalFloor(i);for(let e of o)this.drawRoom(e,i);if(!n)return;let s=Array.from(n.tasks.values()).sort((e,t)=>e.y-t.y);for(let e of s)this.drawWorkstation(e,i,a);this.drawClaimLinks(n,a),this.drawHandoffBeams(n,a);for(let e of n.agents.values())e.handoffAnim&&this.drawHandoffTrail(e,i,a);let c=Array.from(n.agents.values()).sort((e,t)=>e.y-t.y||(e.id===this.hoveredId?1:-1));for(let e of c)e.handoffAnim?this.drawHandoffGroup(e,i,a):this.drawCharacter(e,i,a)}drawGlobalFloor(e){let{ctx:t,canvas:n}=this;t.fillStyle=e?`#0a0e1a`:`#dde3ed`,t.fillRect(0,0,n.width,n.height),t.strokeStyle=e?`rgba(255,255,255,0.02)`:`rgba(0,0,0,0.03)`,t.lineWidth=.5;for(let e=0;e<n.width;e+=24)t.beginPath(),t.moveTo(e,0),t.lineTo(e,n.height),t.stroke();for(let e=0;e<n.height;e+=24)t.beginPath(),t.moveTo(0,e),t.lineTo(n.width,e),t.stroke()}drawRoom(e,t){let{ctx:n}=this,{x:r,y:i,w:a,h:o,color:s,id:c}=e;switch(n.save(),$(n,r,i,a,o,10),n.clip(),c){case`in_progress`:this.drawPlazaFloor(n,r,i,a,o,t);break;case`backlog`:this.drawDirtFloor(n,r,i,a,o,`#5b3a6e`,t);break;case`pending`:this.drawDirtFloor(n,r,i,a,o,`#a68246`,t);break;case`blocked`:this.drawDirtFloor(n,r,i,a,o,`#8b2a2a`,t);break;case`burnout`:this.drawCleanTileFloor(n,r,i,a,o,t);break;case`completed`:this.drawGrassFloor(n,r,i,a,o,t);break;default:this.drawWoodPlankFloor(n,r,i,a,o,t);break}let l=r+a/2,u=i+o*.35,d=n.createRadialGradient(l,u,0,l,u,Math.max(a,o)*.85);d.addColorStop(0,LT(s,t?.12:.08)),d.addColorStop(1,`rgba(0,0,0,0)`),n.fillStyle=d,n.fillRect(r,i,a,o),n.restore(),this.drawWall(n,r,i,a,t,s),n.strokeStyle=LT(s,t?.45:.35),n.lineWidth=1.5,$(n,r,i,a,o,10),n.stroke(),this.drawRoomDecor(n,e,t),this.drawZoneLabel(n,e,t)}drawPlazaFloor(e,t,n,r,i,a){let o=a?`#2e3540`:`#b0b8c4`,s=a?`#262d36`:`#a0a8b4`;e.fillStyle=o,e.fillRect(t,n,r,i);for(let o=Math.floor(t/24)*24;o<t+r;o+=24)for(let t=Math.floor(n/24)*24;t<n+i;t+=24)Math.round(o/24)+Math.round(t/24)&1||(e.fillStyle=s,e.fillRect(o,t,24,24)),zT(o,t)>.8&&(e.strokeStyle=a?`rgba(0,0,0,0.3)`:`rgba(0,0,0,0.1)`,e.lineWidth=1,e.beginPath(),e.moveTo(o+2,t+2),e.lineTo(o+24/2,t+24/2),e.stroke())}drawDirtFloor(e,t,n,r,i,a,o){e.fillStyle=a,e.fillRect(t,n,r,i);for(let a=t;a<t+r;a+=16)for(let t=n;t<n+i;t+=16){let n=zT(a,t);n>.5&&(e.fillStyle=o?`rgba(0,0,0,0.15)`:`rgba(255,255,255,0.1)`,e.beginPath(),e.arc(a+n*10,t+n*10,2+n*2,0,Math.PI*2),e.fill())}}drawGrassFloor(e,t,n,r,i,a){e.fillStyle=a?`#1a4020`:`#4ade80`,e.fillRect(t,n,r,i),e.strokeStyle=a?`rgba(0,0,0,0.2)`:`rgba(0,0,0,0.1)`;for(let a=t;a<t+r;a+=12)for(let t=n;t<n+i;t+=12){let n=zT(a,t);n>.4&&(e.beginPath(),e.moveTo(a+n*5,t+8),e.lineTo(a+n*5+2,t+2),e.lineTo(a+n*5+4,t+8),e.stroke())}}drawWoodPlankFloor(e,t,n,r,i,a){let o=a?30:180,s=a?22:140,c=a?12:80;e.fillStyle=`rgb(${o},${s},${c})`,e.fillRect(t,n,r,i);for(let l=Math.floor(n/9)*9;l<n+i;l+=9){let n=Math.round(l/9),i=(zT(n,0)*30-15)*(a?.8:.6);e.fillStyle=`rgb(${Math.round(Math.min(255,Math.max(0,o+i)))},${Math.round(Math.min(255,Math.max(0,s+i)))},${Math.round(Math.min(255,Math.max(0,c+i)))})`,e.fillRect(t,l,r,9),e.strokeStyle=a?`rgba(0,0,0,0.2)`:`rgba(0,0,0,0.07)`,e.lineWidth=.5,e.beginPath(),e.moveTo(t,l),e.lineTo(t+r,l),e.stroke();let u=n%2*55+zT(n,1)*40;for(let i=t+u;i<t+r;i+=80+zT(n,i)*20)e.beginPath(),e.moveTo(i,l),e.lineTo(i,l+9),e.stroke()}}drawCarpetFloor(e,t,n,r,i,a,o){e.fillStyle=o?`#100d18`:`#1a1535`,e.fillRect(t,n,r,i),e.strokeStyle=LT(a,.06),e.lineWidth=1;for(let a=-i;a<r+i;a+=8)e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+a+i,n+i),e.stroke();e.strokeStyle=o?`rgba(255,255,255,0.025)`:`rgba(255,255,255,0.04)`,e.lineWidth=.5;for(let a=t;a<t+r;a+=12)e.beginPath(),e.moveTo(a,n),e.lineTo(a,n+i),e.stroke();for(let a=n;a<n+i;a+=12)e.beginPath(),e.moveTo(t,a),e.lineTo(t+r,a),e.stroke()}drawCrackedTileFloor(e,t,n,r,i,a){e.fillStyle=a?`#1c1410`:`#c8b89a`,e.fillRect(t,n,r,i);for(let o=Math.floor(t/18)*18;o<t+r;o+=18)for(let t=Math.floor(n/18)*18;t<n+i;t+=18){let n=zT(Math.round(o/18),Math.round(t/18)),r=(n*30-15)*(a?.7:.5);e.fillStyle=a?`rgba(255,${100+r},${50+r},0.04)`:`rgba(180,${140+r},${100+r},0.3)`,e.fillRect(o,t,18,18),n>.85&&(e.strokeStyle=a?`rgba(0,0,0,0.6)`:`rgba(100,80,60,0.5)`,e.lineWidth=.75,e.beginPath(),e.moveTo(o+n*18,t+2),e.lineTo(o+18/2+n*5,t+18/2),e.lineTo(o+18*.8,t+18-2),e.stroke())}e.strokeStyle=a?`rgba(0,0,0,0.5)`:`rgba(0,0,0,0.12)`,e.lineWidth=1;for(let a=Math.floor(t/18)*18;a<=t+r;a+=18)e.beginPath(),e.moveTo(a,n),e.lineTo(a,n+i),e.stroke();for(let a=Math.floor(n/18)*18;a<=n+i;a+=18)e.beginPath(),e.moveTo(t,a),e.lineTo(t+r,a),e.stroke()}drawCleanTileFloor(e,t,n,r,i,a){let o=a?`#1a2530`:`#f0f4f8`,s=a?`#1f2d3a`:`#e8eef4`;e.fillStyle=o,e.fillRect(t,n,r,i);for(let o=Math.floor(t/22)*22;o<t+r;o+=22)for(let t=Math.floor(n/22)*22;t<n+i;t+=22)Math.round(o/22)+Math.round(t/22)&1||(e.fillStyle=s,e.fillRect(o+1,t+1,20,20),e.fillStyle=a?`rgba(255,255,255,0.04)`:`rgba(255,255,255,0.6)`,e.fillRect(o+3,t+3,5,5));e.strokeStyle=a?`rgba(255,255,255,0.04)`:`rgba(0,0,0,0.06)`,e.lineWidth=.75;for(let a=Math.floor(t/22)*22;a<=t+r;a+=22)e.beginPath(),e.moveTo(a,n),e.lineTo(a,n+i),e.stroke();for(let a=Math.floor(n/22)*22;a<=n+i;a+=22)e.beginPath(),e.moveTo(t,a),e.lineTo(t+r,a),e.stroke()}drawConcreteFloor(e,t,n,r,i,a){e.fillStyle=a?`#141418`:`#b8bec8`,e.fillRect(t,n,r,i),e.strokeStyle=a?`rgba(255,255,255,0.03)`:`rgba(255,255,255,0.15)`,e.lineWidth=1;for(let a=n;a<n+i;a+=4)zT(0,Math.round(a))>.5&&(e.beginPath(),e.moveTo(t,a),e.lineTo(t+r,a),e.stroke());e.strokeStyle=a?`rgba(0,0,0,0.4)`:`rgba(0,0,0,0.1)`,e.lineWidth=1.5;for(let a=n+(80-(n%80||80));a<n+i;a+=80)e.beginPath(),e.moveTo(t,a),e.lineTo(t+r,a),e.stroke()}drawWall(e,t,n,r,i,a){e.fillStyle=i?`#1c2130`:`#c4cad6`,$(e,t,n,r,11,0),e.fill(),e.strokeStyle=i?`rgba(255,255,255,0.05)`:`rgba(0,0,0,0.06)`,e.lineWidth=.75;for(let i=t+24;i<t+r;i+=24)e.beginPath(),e.moveTo(i,n),e.lineTo(i,n+11),e.stroke();e.fillStyle=LT(a,.4),e.fillRect(t,n,r,2.5);let o=e.createLinearGradient(t,n+11,t,n+11+8);o.addColorStop(0,`rgba(0,0,0,0.28)`),o.addColorStop(1,`rgba(0,0,0,0)`),e.fillStyle=o,e.fillRect(t,n+11,r,8),e.fillStyle=i?`#253040`:`#b8bfc9`,e.fillRect(t,n,6,11),e.fillRect(t+r-6,n,6,11)}drawZoneLabel(e,t,n){let{x:r,y:i,w:a,color:o,label:s}=t,c=Math.min(a-16,92),l=r+9,u=i+3;e.fillStyle=LT(o,n?.25:.18),$(e,l,u,c,16,5),e.fill(),e.strokeStyle=LT(o,.6),e.lineWidth=.75,$(e,l,u,c,16,5),e.stroke(),e.fillStyle=o,e.font=`bold 8px system-ui,sans-serif`,e.textAlign=`left`,e.textBaseline=`middle`,e.fillText(s.toUpperCase(),l+6,u+16/2)}drawRoomDecor(e,t,n){let{x:r,y:i,w:a,h:o,id:s}=t;switch(s){case`in_progress`:this.decorWorkspace(e,r,i,a,o,n);break;case`backlog`:this.decorArchive(e,r,i,a,o,n);break;case`pending`:this.decorLobby(e,r,i,a,o,n);break;case`blocked`:this.decorIssues(e,r,i,a,o);break;case`burnout`:this.decorTherapy(e,r,i,a,o,n);break}}decorPlaza(e,t,n,r,i,a){let o=t+r/2,s=n+i/2;e.fillStyle=a?`#1e293b`:`#94a3b8`,e.beginPath(),e.arc(o,s,24,0,Math.PI*2),e.fill(),e.fillStyle=a?`#0ea5e9`:`#38bdf8`,e.beginPath(),e.arc(o,s,20,0,Math.PI*2),e.fill(),e.fillStyle=`rgba(255,255,255,0.4)`,e.beginPath(),e.arc(o,s,8,0,Math.PI*2),e.fill()}decorFence(e,t,n,r,i,a){e.strokeStyle=a?`#452b14`:`#8b5a2b`,e.lineWidth=4,e.strokeRect(t+4,n+4,r-8,i-8)}decorBlocked(e,t,n,r,i,a){this.decorFence(e,t,n,r,i,a),e.fillStyle=`#f97316`,[[t+20,n+i-20],[t+40,n+i-20]].forEach(([t,n])=>{e.beginPath(),e.moveTo(t,n-10),e.lineTo(t+6,n),e.lineTo(t-6,n),e.fill()})}decorGarden(e,t,n,r,i,a){e.fillStyle=a?`#064e3b`:`#166534`,e.fillRect(t+10,n+10,20,20),e.beginPath(),e.arc(t+r-20,n+i-20,15,0,Math.PI*2),e.fill()}decorLobby(e,t,n,r,i,a){let o=t+r/2-28,s=n+i-55;this.drawSofa(e,o,s,56,a),this.drawCoffeeTable(e,t+r/2-14,n+i-32,a),this.drawPotPlant(e,t+8,n+i-18,a),this.drawPotPlant(e,t+r-18,n+i-18,a),this.drawPotPlant(e,t+8,n+28,a);let c=Math.min(r-20,70);this.drawReceptionDesk(e,t+r/2-c/2,n+24,c,a),this.drawCeilingLamp(e,t+r/2,n+14,a,this.ts)}decorInbox(e,t,n,r,i,a){this.drawLetterSorter(e,t+r-28,n+20,a),this.drawClock(e,t+18,n+20,a)}decorWorkspace(e,t,n,r,i,a){this.drawPowerStrip(e,t+12,n+i-16,Math.min(r-24,60),a),this.drawWhiteboard(e,t+r-36,n+18,a),this.drawWaterDispenser(e,t+20,n+12,a),this.drawFlowerVase(e,t+r/2,n+24,a)}decorIssues(e,t,n,r,i){e.save(),e.globalAlpha=.25,e.strokeStyle=`#f59e0b`,e.lineWidth=4,e.setLineDash([8,8]),e.beginPath(),e.moveTo(t,n+i-8),e.lineTo(t+r,n+i-8),e.stroke(),e.setLineDash([]),e.restore(),this.drawHazardSign(e,t+r/2-10,n+16)}decorDone(e,t,n,r,i,a){this.drawTrophyShelf(e,t+10,n+20,a,this.ts),this.drawPotPlant(e,t+r-18,n+i-20,a)}decorArchive(e,t,n,r,i,a){for(let i=t+10;i<t+r-22;i+=26)this.drawFilingCabinet(e,i,n+18,a);this.drawPotPlant(e,t+r-15,n+i-20,a)}drawSofa(e,t,n,r,i){let a=i?`#2d3a4a`:`#8b9eb5`,o=i?`#3a4d62`:`#a8bdd4`,s=i?`#253040`:`#7b8ea5`;e.fillStyle=a,$(e,t,n,r,8,3),e.fill(),e.fillStyle=o,$(e,t,n+7,r,10,3),e.fill(),e.fillStyle=s,$(e,t-4,n,8,17,3),e.fill(),e.fillStyle=s,$(e,t+r-4,n,8,17,3),e.fill(),e.strokeStyle=i?`rgba(255,255,255,0.07)`:`rgba(0,0,0,0.08)`,e.lineWidth=1,e.beginPath(),e.moveTo(t+r/3,n+7),e.lineTo(t+r/3,n+17),e.stroke(),e.beginPath(),e.moveTo(t+r*2/3,n+7),e.lineTo(t+r*2/3,n+17),e.stroke(),e.fillStyle=i?`#1a2030`:`#6b7c90`,[[t+2,n+15],[t+r-6,n+15]].forEach(([t,n])=>e.fillRect(t,n,4,4))}drawCoffeeTable(e,t,n,r){e.fillStyle=`rgba(0,0,0,0.15)`,e.beginPath(),e.ellipse(t+14,n+6,16,7,0,0,Math.PI*2),e.fill(),e.fillStyle=r?`#2a3545`:`#93a8be`,e.beginPath(),e.ellipse(t+14,n+4,15,6,0,0,Math.PI*2),e.fill(),e.strokeStyle=r?`#3a4a5a`:`#7a96b0`,e.lineWidth=1,e.beginPath(),e.ellipse(t+14,n+4,15,6,0,0,Math.PI*2),e.stroke(),e.fillStyle=`rgba(255,255,255,0.1)`,e.beginPath(),e.ellipse(t+10,n+2,6,2,0,0,Math.PI*2),e.fill()}drawPotPlant(e,t,n,r){e.fillStyle=r?`#4a2d1a`:`#c4825a`,$(e,t-5,n-8,10,9,2),e.fill(),e.strokeStyle=r?`#6b4028`:`#a0643c`,e.lineWidth=.5,$(e,t-5,n-8,10,9,2),e.stroke(),e.fillStyle=r?`#2d1a0a`:`#6b4a28`,e.fillRect(t-4,n-9,8,3);let i=[`#16a34a`,`#15803d`,`#22c55e`,`#166534`];[[-5,-18,4,3,-.3],[-2,-20,4,3,0],[3,-18,4,3,.3],[-7,-14,3.5,2.5,-.5],[5,-14,3.5,2.5,.5]].forEach(([r,a,o,s,c],l)=>{e.save(),e.translate(t+r,n+a),e.rotate(c),e.fillStyle=i[l%i.length],e.beginPath(),e.ellipse(0,0,o,s,0,0,Math.PI*2),e.fill(),e.restore()})}drawReceptionDesk(e,t,n,r,i){e.fillStyle=i?`#1a2535`:`#9aafcc`,$(e,t,n,r,14,4),e.fill(),e.strokeStyle=i?`#2a3a50`:`#7a94b0`,e.lineWidth=1,$(e,t,n,r,14,4),e.stroke(),e.fillStyle=i?`rgba(255,255,255,0.05)`:`rgba(255,255,255,0.35)`,$(e,t+2,n+2,r-4,4,2),e.fill(),e.fillStyle=i?`#0f172a`:`#1e2535`,$(e,t+r/2-8,n-10,16,10,2),e.fill(),e.fillStyle=i?`#1e40af`:`#3b82f6`,$(e,t+r/2-7,n-9,14,8,1),e.fill()}drawCeilingLamp(e,t,n,r,i){e.strokeStyle=r?`#3a4555`:`#6b7a8a`,e.lineWidth=1,e.beginPath(),e.moveTo(t,n-8),e.lineTo(t,n+2),e.stroke(),e.fillStyle=r?`#2a3040`:`#e8d870`,e.beginPath(),e.moveTo(t-10,n+2),e.lineTo(t+10,n+2),e.lineTo(t+8,n+10),e.lineTo(t-8,n+10),e.closePath(),e.fill();let a=.5+.5*Math.sin(i*.0015),o=e.createRadialGradient(t,n+10,0,t,n+10,35+a*5);o.addColorStop(0,r?`rgba(255,240,180,${.15+a*.05})`:`rgba(255,240,180,${.2+a*.05})`),o.addColorStop(1,`rgba(0,0,0,0)`),e.fillStyle=o,e.fillRect(t-40,n+10,80,45)}drawLetterSorter(e,t,n,r){e.fillStyle=r?`#2d3a50`:`#8faac0`,$(e,t,n,22,28,2),e.fill(),e.strokeStyle=r?`#3a4a60`:`#7090a8`,e.lineWidth=.75,[0,7,14,21].forEach(r=>{e.beginPath(),e.moveTo(t+1,n+r),e.lineTo(t+21,n+r),e.stroke()}),[`#ef4444`,`#f59e0b`,`#3b82f6`,`#10b981`].forEach((r,i)=>{e.fillStyle=r+`aa`,$(e,t+2,n+i*7+1,18,5,1),e.fill()})}drawClock(e,t,n,r){e.fillStyle=r?`#1e2840`:`#f0f4fc`,e.beginPath(),e.arc(t,n,9,0,Math.PI*2),e.fill(),e.strokeStyle=r?`#3a4a60`:`#8898b0`,e.lineWidth=1,e.beginPath(),e.arc(t,n,9,0,Math.PI*2),e.stroke(),e.strokeStyle=r?`#5a6a80`:`#8898b0`,e.lineWidth=.75;for(let r=0;r<12;r++){let i=r*Math.PI/6,a=7.5;e.beginPath(),e.moveTo(t+Math.cos(i)*a,n+Math.sin(i)*a),e.lineTo(t+Math.cos(i)*(a-2),n+Math.sin(i)*(a-2)),e.stroke()}let i=new Date,a=i.getMinutes()/60*Math.PI*2-Math.PI/2,o=i.getHours()%12/12*Math.PI*2+i.getMinutes()/60*Math.PI/6-Math.PI/2;e.strokeStyle=r?`#e2e8f0`:`#1e2840`,e.lineWidth=1.5,e.lineCap=`round`,e.beginPath(),e.moveTo(t,n),e.lineTo(t+Math.cos(o)*5,n+Math.sin(o)*5),e.stroke(),e.lineWidth=1,e.beginPath(),e.moveTo(t,n),e.lineTo(t+Math.cos(a)*7,n+Math.sin(a)*7),e.stroke(),e.fillStyle=`#ef4444`,e.beginPath(),e.arc(t,n,1.5,0,Math.PI*2),e.fill()}drawPowerStrip(e,t,n,r,i){e.fillStyle=i?`#1a1a1a`:`#2d2d2d`,$(e,t,n,r,6,3),e.fill(),e.fillStyle=i?`#3a3a3a`:`#4a4a4a`;for(let i=6;i<r-4;i+=10)$(e,t+i,n+1,6,4,2),e.fill()}drawWhiteboard(e,t,n,r){e.fillStyle=r?`#1e2840`:`#f8fafc`,$(e,t,n,28,22,2),e.fill(),e.strokeStyle=r?`#3a4a60`:`#b0bac8`,e.lineWidth=1,$(e,t,n,28,22,2),e.stroke(),[r?`#4ade80`:`#16a34a`,r?`#60a5fa`:`#2563eb`,r?`#f472b6`:`#db2777`].forEach((r,i)=>{e.strokeStyle=r,e.lineWidth=.75,e.beginPath(),e.moveTo(t+3,n+5+i*5),e.lineTo(t+3+8+i*4,n+5+i*5),e.stroke()})}drawHazardSign(e,t,n){e.fillStyle=`#f59e0b`,e.beginPath(),e.moveTo(t+10,n),e.lineTo(t+20,n+16),e.lineTo(t,n+16),e.closePath(),e.fill(),e.strokeStyle=`#1a1a1a`,e.lineWidth=1,e.stroke(),e.fillStyle=`#1a1a1a`,e.font=`bold 9px system-ui`,e.textAlign=`center`,e.textBaseline=`bottom`,e.fillText(`!`,t+10,n+15)}drawTrophyShelf(e,t,n,r,i){e.fillStyle=r?`#2d1a08`:`#c4825a`,$(e,t,n+20,50,5,2),e.fill(),[[`#f59e0b`,t+5],[`#94a3b8`,t+20],[`#cd7f32`,t+35]].forEach(([t,r])=>{e.fillStyle=t,e.beginPath(),e.arc(r+5,n+13,5,Math.PI,0),e.fill(),e.fillRect(r+3,n+13,4,8),$(e,r,n+20,10,4,2),e.fill()}),e.fillStyle=`rgba(245,158,11,${.08+(.5+.5*Math.sin(i*.002))*.06})`,e.beginPath(),e.ellipse(t+10,n+18,12,6,0,0,Math.PI*2),e.fill()}drawFilingCabinet(e,t,n,r){e.fillStyle=r?`#1e2535`:`#9aaec0`,$(e,t,n,20,28,2),e.fill(),e.strokeStyle=r?`#2d3a50`:`#7a98b0`,e.lineWidth=.75,$(e,t,n,20,28,2),e.stroke(),[0,9,18].forEach(i=>{e.strokeStyle=r?`#3a4a60`:`#5a7898`,e.lineWidth=.5,e.beginPath(),e.moveTo(t+1,n+i+8),e.lineTo(t+19,n+i+8),e.stroke(),e.fillStyle=r?`#4a5a70`:`#4a6888`,$(e,t+7,n+i+3,6,3,2),e.fill()})}drawFlowerVase(e,t,n,r){e.fillStyle=r?`#2d1a08`:`#8b5a2b`,$(e,t-6,n-2,12,10,1),e.fill(),e.fillStyle=r?`#1e3a8a`:`#bfdbfe`,e.beginPath(),e.ellipse(t,n-6,4,6,0,0,Math.PI*2),e.fill();let i=[`#f43f5e`,`#ec4899`,`#d946ef`];[[-3,-12],[3,-11],[0,-14]].forEach(([r,a],o)=>{e.strokeStyle=`#16a34a`,e.lineWidth=1,e.beginPath(),e.moveTo(t,n-10),e.lineTo(t+r,n+a),e.stroke(),e.fillStyle=i[o],e.beginPath(),e.arc(t+r,n+a,2.5,0,Math.PI*2),e.fill()})}drawWaterDispenser(e,t,n,r){e.fillStyle=r?`#1e293b`:`#e2e8f0`,$(e,t,n,14,24,2),e.fill(),e.strokeStyle=r?`#334155`:`#cbd5e1`,e.lineWidth=1,$(e,t,n,14,24,2),e.stroke(),e.fillStyle=r?`#0ea5e955`:`#38bdf855`,$(e,t+2,n-12,10,12,3),e.fill(),e.fillStyle=`#ef4444`,e.fillRect(t+3,n+8,2,3),e.fillStyle=`#3b82f6`,e.fillRect(t+9,n+8,2,3),e.fillStyle=r?`#0f172a`:`#94a3b8`,$(e,t+2,n+14,10,3,1),e.fill()}drawHospitalBed(e,t,n,r){e.fillStyle=r?`#1e293b`:`#cbd5e1`,$(e,t-20,n-10,40,20,3),e.fill(),e.fillStyle=r?`#0f172a`:`#f8fafc`,$(e,t-18,n-8,36,16,2),e.fill(),e.fillStyle=r?`#1e1b4b`:`#e0e7ff`,$(e,t+10,n-6,8,12,2),e.fill(),e.fillStyle=r?`#172554`:`#bfdbfe`,$(e,t-18,n-8,20,16,2),e.fill(),e.strokeStyle=r?`#64748b`:`#94a3b8`,e.lineWidth=2,e.beginPath(),e.moveTo(t+16,n-10),e.lineTo(t+16,n-25),e.stroke(),e.fillStyle=r?`#0ea5e988`:`#38bdf888`,$(e,t+14,n-25,4,6,1),e.fill()}decorTherapy(e,t,n,r,i,a){let o={id:`burnout`,label:`Therapy Room`,x:t,y:n,w:r,h:i,color:`#14b8a6`};for(let t=0;t<6;t++){let n=mT(o,t);this.drawHospitalBed(e,n.x,n.y,a)}this.drawPotPlant(e,t+r-20,n+20,a),this.drawFlowerVase(e,t+20,n+20,a)}drawMonitorActivity(e,t,n,r,i,a,o,s){let{ctx:c}=this,l=!!e.claimedByAgentId,u=RT(e.id),d=s*.001+u%100*.01,f=n+i-6;if(c.save(),$(c,t,n,r,i,3),c.clip(),e.status===`blocked`){c.fillStyle=o?`#2a0f18`:`#3f111d`,c.fillRect(t,n,r,i),c.fillStyle=`rgba(239,68,68,0.45)`;for(let e=0;e<4;e++){let i=n+4+e*4;c.fillRect(t+4,i,r-8-(e+u)%9,1.6)}c.fillStyle=`rgba(255,255,255,${.25+Math.sin(d*5)*.12})`,c.fillRect(t+4,f-3,7,2),c.restore();return}if(l){c.fillStyle=o?`rgba(2,6,23,0.35)`:`rgba(15,23,42,0.22)`,$(c,t+3,n+3,r-6,f-n-4,2),c.fill(),c.fillStyle=`rgba(255,255,255,0.22)`,c.fillRect(t+5,n+5,r-10,1.4),c.fillStyle=`rgba(15,23,42,0.25)`,c.fillRect(t+5,n+8,7,f-n-10),c.fillStyle=`rgba(255,255,255,0.16)`,c.fillRect(t+15,n+8,r-20,f-n-10);let e=Math.floor(s/180)%6;for(let i=0;i<4;i++){let a=n+9+i*3,o=(u>>i)%9/10,s=Math.sin(d*2+i)*.5+.5,l=7+(r-25)*(.35+o*.35+s*.18);c.fillStyle=i===e%4?`rgba(255,255,255,0.78)`:`rgba(255,255,255,${.22+i*.08})`,c.fillRect(t+17,a,Math.min(r-22,l),1.4)}let i=t+18+(Math.floor(s/120)+u)%Math.max(1,r-25);Math.floor(s/300)%2==0&&(c.fillStyle=`#ffffff`,c.fillRect(i,n+17,1,4)),c.fillStyle=`rgba(255,255,255,0.2)`,c.fillRect(t+5,f-3,r-10,1.5),c.fillStyle=FT(a,55),c.fillRect(t+5,f-3,(Math.sin(d)*.5+.5)*(r-10)|0,1.5),c.restore();return}if(e.status===`pending`){c.fillStyle=o?`rgba(15,23,42,0.45)`:`rgba(255,255,255,0.16)`,$(c,t+4,n+4,r-8,f-n-5,2),c.fill(),c.fillStyle=`rgba(255,255,255,0.25)`,c.fillRect(t+6,n+6,r-12,2);for(let e=0;e<3;e++)c.fillStyle=`rgba(255,255,255,${.14+e*.06})`,c.fillRect(t+7,n+11+e*3,r-15-e*5,1.2);let e=n+9+(s*.018+u)%Math.max(1,f-n-12);c.fillStyle=`rgba(56,189,248,0.28)`,c.fillRect(t+5,e,r-10,1.2),c.restore();return}c.strokeStyle=o?`rgba(148,163,184,0.1)`:`rgba(255,255,255,0.08)`,c.lineWidth=.5;for(let e=t+5;e<t+r-4;e+=5)c.beginPath(),c.moveTo(e,n+4),c.lineTo(e,f-2),c.stroke();c.restore()}drawWorkstation(e,t,n){let{ctx:r}=this,{x:i,y:a,status:o,taskCode:s,title:c,claimedByAgentId:l,hasPendingHandoff:u,repo:d}=e,f=tT[o]??`#64748b`,p=!!l,m=a+14/2+4;r.fillStyle=t?`#1e2d3a`:`#7a98b5`,r.beginPath(),r.arc(i,m+3,8,0,Math.PI*2),r.fill(),r.fillStyle=t?`#162435`:`#6888a8`,r.fillRect(i-6,m-2,12,8),$(r,i-5,m-9,10,9,2),r.fill(),r.fillStyle=`rgba(0,0,0,0.18)`,$(r,i-50/2+3,a-14/2+5,50,16,4),r.fill();let h=r.createLinearGradient(i-50/2,a-14/2,i+50/2,a+14/2);h.addColorStop(0,t?`#1e2840`:`#d4dce8`),h.addColorStop(1,t?`#18202e`:`#c0ccd8`),r.fillStyle=h,$(r,i-50/2,a-14/2,50,14,4),r.fill(),r.strokeStyle=t?`#2d3a50`:`#a0b0c0`,r.lineWidth=1,$(r,i-50/2,a-14/2,50,14,4),r.stroke(),r.fillStyle=t?`#0d1520`:`#8090a8`,$(r,i-10,a-2,20,5,2),r.fill(),r.fillStyle=t?`rgba(255,255,255,0.05)`:`rgba(255,255,255,0.3)`,[[i-9,a-1,18,1.5],[i-8,a+1.5,16,1.5]].forEach(([e,t,n,i])=>{for(let a=0;a<5;a++)$(r,e+n/5*a+.5,t,n/5-1,i,.5),r.fill()}),r.fillStyle=t?`#0d1520`:`#8090a8`,r.beginPath(),r.ellipse(i+14,a,3,4,0,0,Math.PI*2),r.fill(),r.strokeStyle=t?`rgba(255,255,255,0.08)`:`rgba(0,0,0,0.1)`,r.lineWidth=.5,r.beginPath(),r.moveTo(i+14,a-2),r.lineTo(i+14,a+2),r.stroke(),r.fillStyle=t?`#2d3a50`:`#8090a8`,r.fillRect(i-1.5,a-14/2-7,3,8);let g=a-14/2-20-6;if(r.fillStyle=t?`#111827`:`#1f2937`,$(r,i-34/2-3,g-3,40,26,5),r.fill(),p){let e=r.createLinearGradient(i-34/2,g,i+34/2,g+20);e.addColorStop(0,FT(f,50)),e.addColorStop(1,f),r.fillStyle=e,p&&(r.shadowColor=f+`99`,r.shadowBlur=10)}else r.fillStyle=t?`#0f1929`:`#1e2d3a`;if($(r,i-34/2,g,34,20,3),r.fill(),r.shadowBlur=0,r.fillStyle=`rgba(255,255,255,0.12)`,$(r,i-34/2,g,34,20/2.5,3),r.fill(),this.drawMonitorActivity(e,i-34/2,g,34,20,f,t,n),r.fillStyle=p?`rgba(255,255,255,0.9)`:t?`#374151`:`#6b7280`,r.font=`bold 5.5px monospace`,r.textAlign=`center`,r.textBaseline=`bottom`,r.fillText(`${d.split(`/`).pop()?.slice(0,5)}·${s}`.slice(0,12),i,g+20-1),r.fillStyle=t?`rgba(148,163,184,0.65)`:`rgba(71,85,105,0.65)`,r.font=`5.5px system-ui,sans-serif`,r.textAlign=`center`,r.textBaseline=`top`,r.fillText(c.slice(0,12),i,a+14/2+2),u){let e=i+34/2,t=g-1;r.fillStyle=`#f59e0b`,r.shadowColor=`#f59e0b`,r.shadowBlur=8,r.beginPath(),r.arc(e,t,5,0,Math.PI*2),r.fill(),r.shadowBlur=0,r.strokeStyle=`#ffffff`,r.lineWidth=1.5,r.beginPath(),r.arc(e,t,5,0,Math.PI*2),r.stroke(),r.fillStyle=`#1a1a1a`,r.font=`bold 6.5px system-ui`,r.textAlign=`center`,r.textBaseline=`middle`,r.fillText(`!`,e,t)}}drawClaimLinks(e,t){let{ctx:n}=this;for(let r of e.agents.values())for(let i of r.claimedTaskIds){let a=e.tasks.get(i);if(!a)continue;let o=n.createLinearGradient(r.x,r.y,a.x,a.y);o.addColorStop(0,r.color+`cc`),o.addColorStop(1,(tT[a.status]??`#64748b`)+`44`),n.strokeStyle=o,n.lineWidth=1.5,n.setLineDash([5,5]),n.lineDashOffset=-(t*.022)%10,n.beginPath(),n.moveTo(r.x,r.y),n.lineTo(a.x,a.y),n.stroke()}n.setLineDash([]),n.lineDashOffset=0}drawHandoffBeams(e,t){let{ctx:n}=this;for(let r of e.handoffs){let i=e.agents.get(r.fromAgentId);if(!i)continue;let a,o;if(r.toAgentId){let t=e.agents.get(r.toAgentId);if(!t)continue;a=t.x,o=t.y}else if(r.taskId){let t=e.tasks.get(r.taskId);if(!t)continue;a=t.x,o=t.y}else continue;n.strokeStyle=`#f59e0b88`,n.lineWidth=2.5,n.setLineDash([8,5]),n.lineDashOffset=-(t*.07)%13,n.beginPath(),n.moveTo(i.x,i.y),n.lineTo(a,o),n.stroke(),n.setLineDash([]),n.lineDashOffset=0;let s=t%1600/1600,c=i.x+(a-i.x)*s,l=i.y+(o-i.y)*s;n.fillStyle=`#f59e0b`,n.shadowColor=`#f59e0b`,n.shadowBlur=8,n.beginPath(),n.arc(c,l,4,0,Math.PI*2),n.fill(),n.shadowBlur=0}}drawHandoffTrail(e,t,n){let{ctx:r}=this,i=e.handoffAnim;if(r.save(),r.strokeStyle=t?`rgba(20, 184, 166, 0.35)`:`rgba(20, 184, 166, 0.45)`,r.lineWidth=2,r.setLineDash([6,5]),r.lineDashOffset=-(n*.03)%11,r.beginPath(),r.moveTo(i.startX,i.startY),r.lineTo(i.endX,i.endY),r.stroke(),r.setLineDash([]),r.lineDashOffset=0,i.phase===`moving`){let e=n%2e3/2e3,t=i.startX+(i.endX-i.startX)*e,a=i.startY+(i.endY-i.startY)*e;r.fillStyle=`#14b8a6`,r.shadowColor=`#14b8a6`,r.shadowBlur=6,r.beginPath(),r.arc(t,a,3,0,Math.PI*2),r.fill(),r.shadowBlur=0}i.phase!==`arrive`&&(r.strokeStyle=`rgba(20, 184, 166, ${.4+.3*Math.sin(n*.004)})`,r.lineWidth=1,r.beginPath(),r.arc(i.endX,i.endY,8,0,Math.PI*2),r.stroke(),r.beginPath(),r.moveTo(i.endX-4,i.endY),r.lineTo(i.endX+4,i.endY),r.stroke(),r.beginPath(),r.moveTo(i.endX,i.endY-4),r.lineTo(i.endX,i.endY+4),r.stroke()),r.restore()}drawWheelchair(e,t,n,r,i){e.save(),e.translate(t,n),e.fillStyle=`rgba(0,0,0,0.2)`,e.beginPath(),e.ellipse(0,3,14,6,0,0,Math.PI*2),e.fill(),e.fillStyle=i?`#2d3a50`:`#7a8ea0`,$(e,-10,-12,20,18,3),e.fill(),e.strokeStyle=i?`#4a5a70`:`#5a7090`,e.lineWidth=1,$(e,-10,-12,20,18,3),e.stroke(),e.fillStyle=i?`#1e3a5f`:`#3b82f6`,$(e,-8,-6,16,10,2),e.fill(),e.fillStyle=i?`#1e3055`:`#2563eb`,$(e,-8,-12,16,7,2),e.fill(),e.fillStyle=i?`#3a4a60`:`#6a7a90`,$(e,-12,-10,3,14,1),e.fill(),$(e,9,-10,3,14,1),e.fill(),[-9,9].forEach(t=>{e.strokeStyle=i?`#1a1a2a`:`#333`,e.lineWidth=2.5,e.beginPath(),e.arc(t,4,5,0,Math.PI*2),e.stroke(),e.fillStyle=i?`#4a5a70`:`#aabbc0`,e.beginPath(),e.arc(t,4,3.5,0,Math.PI*2),e.fill(),e.strokeStyle=i?`#2a3a50`:`#7a8a9a`,e.lineWidth=.75;for(let n=0;n<4;n++){let i=r+n*Math.PI/2;e.beginPath(),e.moveTo(t,4),e.lineTo(t+Math.cos(i)*4,4+Math.sin(i)*4),e.stroke()}}),[-5,5].forEach(t=>{e.fillStyle=i?`#1a1a2a`:`#333`,e.beginPath(),e.arc(t,-13,2,0,Math.PI*2),e.fill(),e.fillStyle=i?`#4a5a70`:`#999`,e.beginPath(),e.arc(t,-13,1,0,Math.PI*2),e.fill()}),e.fillStyle=i?`#3a4a60`:`#5a7090`,$(e,-6,5,12,3,1),e.fill(),e.restore()}drawStretcher(e,t,n,r,i,a){e.save(),e.translate(t,n),e.fillStyle=`rgba(0,0,0,0.18)`,e.beginPath(),e.ellipse(0,4,20,7,0,0,Math.PI*2),e.fill(),e.fillStyle=a?`#2d3a50`:`#8899aa`,$(e,-18,-10,36,16,3),e.fill(),e.strokeStyle=a?`#4a5a70`:`#6a7a90`,e.lineWidth=1,$(e,-18,-10,36,16,3),e.stroke(),e.fillStyle=a?`#1a2535`:`#f0f4f8`,$(e,-16,-8,32,12,2),e.fill(),e.fillStyle=a?`#2a3a5a`:`#e0e7ff`,$(e,10,-6,6,8,2),e.fill();let o=Math.sin(i)*.8;e.fillStyle=a?`#1e3a5f`:`#bfdbfe`,$(e,-15,-7+o,22,10-o*.5,2),e.fill(),e.strokeStyle=a?`rgba(255,255,255,0.06)`:`rgba(0,0,0,0.08)`,e.lineWidth=.5,e.beginPath(),e.moveTo(-5,-7+o),e.lineTo(-5,3-o*.3),e.stroke(),[[-15,5],[15,5],[-15,-11],[15,-11]].forEach(([t,n])=>{e.fillStyle=a?`#1a1a2a`:`#333`,e.beginPath(),e.arc(t,n,3,0,Math.PI*2),e.fill(),e.fillStyle=a?`#4a5a70`:`#999`,e.beginPath(),e.arc(t,n,1.5,0,Math.PI*2),e.fill(),e.strokeStyle=a?`#3a4a5a`:`#777`,e.lineWidth=.5;let i=r;e.beginPath(),e.moveTo(t+Math.cos(i)*3*.5,n+Math.sin(i)*3*.5),e.lineTo(t-Math.cos(i)*3*.5,n-Math.sin(i)*3*.5),e.stroke()}),e.strokeStyle=a?`#5a6a80`:`#7a8a9a`,e.lineWidth=1.5,e.beginPath(),e.moveTo(-16,-10),e.lineTo(16,-10),e.stroke(),e.beginPath(),e.moveTo(-16,6),e.lineTo(16,6),e.stroke(),e.restore()}drawHelperCharacter(e,t,n,r,i,a,o){e.save(),e.translate(t,n),i===`left`&&e.scale(-1,1);let s=UT[r],c=WT[r],l=GT[r],u=a>.1,d=u?Math.sin(a)*4:0,f=u?Math.sin(a+Math.PI)*3:0,p=u?Math.sin(a*2)*.8:0;e.fillStyle=`rgba(0,0,0,0.18)`,e.beginPath(),e.ellipse(0,2,8,3.5,0,0,Math.PI*2),e.fill(),e.fillStyle=o?`#1a2535`:`#334155`,e.save(),e.translate(-2.5,0),e.rotate(d*.08),$(e,-2,-3,4,7,1.5),e.fill(),e.restore(),e.save(),e.translate(2.5,0),e.rotate(-d*.08),$(e,-2,-3,4,7,1.5),e.fill(),e.restore(),e.fillStyle=o?`#0f172a`:`#1e293b`,e.save(),e.translate(-2.5,d*.4),$(e,-2.5,3,5,3,1.5),e.fill(),e.restore(),e.save(),e.translate(2.5,-d*.4),$(e,-2.5,3,5,3,1.5),e.fill(),e.restore();let m=e.createLinearGradient(-5,-20,5,-10);m.addColorStop(0,FT(s,20)),m.addColorStop(1,s),e.fillStyle=m,$(e,-5,-20,10,11,2),e.fill(),(r===`male_nurse`||r===`female_nurse`)&&(e.fillStyle=`rgba(255,255,255,0.5)`,e.fillRect(-1,-17,2,5),e.fillRect(-2.5,-15.5,5,2)),e.save(),e.translate(-6.5,-19),e.rotate(f*.1),e.fillStyle=m,$(e,-1.5,0,3,7,1.5),e.fill(),e.fillStyle=l,e.beginPath(),e.ellipse(0,8,2,1.5,0,0,Math.PI*2),e.fill(),e.restore(),e.save(),e.translate(6.5,-19),e.rotate(-f*.1),e.fillStyle=m,$(e,-1.5,0,3,7,1.5),e.fill(),e.fillStyle=l,e.beginPath(),e.ellipse(0,8,2,1.5,0,0,Math.PI*2),e.fill(),e.restore(),e.fillStyle=l,e.fillRect(-2,-22,4,3);let h=-29+p;e.fillStyle=l,e.beginPath(),e.ellipse(0,h,6.5,7.5,0,0,Math.PI*2),e.fill(),e.fillStyle=c,e.beginPath(),e.ellipse(0,h,6.5,7.5,0,Math.PI,0),e.fill(),(r===`male_nurse`||r===`female_nurse`)&&(e.fillStyle=`#f0f0f0`,$(e,-5,h-8,10,5,2),e.fill(),e.fillStyle=`#ef4444`,e.fillRect(-1,h-7,2,3),e.fillRect(-2,h-6,4,1)),i!==`up`&&(e.fillStyle=`rgba(0,0,0,0.7)`,e.beginPath(),e.arc(-2,h-1,1,0,Math.PI*2),e.fill(),e.beginPath(),e.arc(2,h-1,1,0,Math.PI*2),e.fill(),e.strokeStyle=`rgba(0,0,0,0.4)`,e.lineWidth=.75,e.beginPath(),e.arc(0,h+1.5,2,.1,Math.PI-.1),e.stroke()),e.restore()}drawHandoffGroup(e,t,n){let{ctx:r}=this,i=e.handoffAnim,{x:a,y:o}=e,s=i.endX-i.startX,c=i.endY-i.startY,l=Math.hypot(s,c)||1,u=-s/l,d=-c/l,f=i.vehicle===`wheelchair`?18:22,p=a+u*f,m=o+d*f+i.stepBounce,h=1;if(i.phase===`pickup`){let e=n-i.phaseStartTs;h=Math.min(1,e/400)}else if(i.phase===`arrive`){let e=n-i.phaseStartTs;h=Math.max(0,1-e/NT)}else i.phase===`resting`&&(h=0);if(i.vehicle===`wheelchair`)this.drawWheelchair(r,a,o,i.wheelAngle,t);else{let e=n*.002;this.drawStretcher(r,a,o,i.wheelAngle,e,t)}this.drawPassiveAgent(e,t,n),h>.01&&(r.save(),r.globalAlpha=h,this.drawHelperCharacter(r,p,m,i.helperVariant,i.helperFacing,i.phase===`moving`?i.helperWalkPhase:0,t),r.restore()),r.fillStyle=t?`rgba(226,232,240,0.82)`:`rgba(15,23,42,0.7)`,r.font=`7px system-ui,sans-serif`,r.textAlign=`center`,r.textBaseline=`top`;let g=e.name.length>12?e.name.slice(0,12)+`…`:e.name;r.fillText(g,a,o+(i.vehicle===`stretcher`?14:12)),i.phase===`moving`&&this.drawRollingSFX(r,a,o,i.wheelAngle,i.vehicle,t,n)}drawPassiveAgent(e,t,n){let{ctx:r}=this,i=e.handoffAnim,{x:a,y:o,name:s,color:c}=e,l=RT(s||``),u=BT[l%BT.length]||`#000`,d=VT[(l>>>6)%VT.length]||`#f5c89a`;if(i.vehicle===`wheelchair`)r.save(),r.translate(a,o),r.fillStyle=c||`#64748b`,$(r,-5,-16,10,8,2),r.fill(),r.fillStyle=d,r.beginPath(),r.ellipse(0,-24,6,7,0,0,Math.PI*2),r.fill(),r.fillStyle=u,r.beginPath(),r.ellipse(0,-24,6,7,0,Math.PI,0),r.fill(),r.strokeStyle=`rgba(0,0,0,0.5)`,r.lineWidth=1,r.beginPath(),r.arc(-2,-24,1.5,0,Math.PI),r.stroke(),r.beginPath(),r.arc(2,-24,1.5,0,Math.PI),r.stroke(),r.fillStyle=d,r.beginPath(),r.ellipse(-10,-10,2,1.5,0,0,Math.PI*2),r.fill(),r.beginPath(),r.ellipse(10,-10,2,1.5,0,0,Math.PI*2),r.fill(),r.restore();else{r.save(),r.translate(a,o);let e=Math.sin(n*.002)*.5;r.fillStyle=d,r.beginPath(),r.ellipse(10,-1+e,5,6,0,0,Math.PI*2),r.fill(),r.fillStyle=u,r.beginPath(),r.ellipse(10,-1+e,5,6,0,Math.PI*.8,Math.PI*2.2),r.fill(),r.strokeStyle=`rgba(0,0,0,0.5)`,r.lineWidth=.75,r.beginPath(),r.arc(9,-2+e,1,0,Math.PI),r.stroke(),r.beginPath(),r.arc(12,-2+e,1,0,Math.PI),r.stroke(),r.restore()}}drawRollingSFX(e,t,n,r,i,a,o){e.save();let s=.15+.1*Math.sin(o*.01);e.strokeStyle=a?`rgba(148,163,184,${s})`:`rgba(71,85,105,${s})`,e.lineWidth=1,(i===`wheelchair`?[[-9,n+4],[9,n+4]]:[[-15,n+5],[15,n+5],[-15,n-11],[15,n-11]]).forEach(([n,i])=>{for(let a=0;a<2;a++){let o=(r+a*Math.PI)%(Math.PI*2),s=t+n-3-a*2,c=i+Math.sin(o)*2;e.beginPath(),e.moveTo(s,c-1),e.lineTo(s-3,c),e.stroke()}}),e.restore()}drawCharacter(e,t,n){let{ctx:r}=this,{walkPhase:i,facing:a,state:o,name:s,id:c}=e,{x:l,y:u}=e,d=e.color||`#64748b`,f=c===this.hoveredId,p=Math.hypot(e.vx,e.vy)>5,m=RT(s||``),h=BT[m%BT.length]||`#000`,g=HT[(m>>>3)%HT.length]||`#1e3a5f`,_=VT[(m>>>6)%VT.length]||`#f5c89a`,v=m%5,y=FT(d,30),b=o===`processing`&&!p,x=n*.018+m%20,S=p?Math.sin(i)*5:0,C=p?Math.sin(i+Math.PI)*4:0,w=p?Math.sin(i*2)*1.2:0;b&&(C=Math.sin(x)*5,w=Math.sin(x*.55)*.8,u+=Math.sin(x*.35)*.7),o===`blocked`?l+=Math.sin(n*.05)*1.5:o===`idle`&&!p&&(u+=Math.sin(n*.003+m)*1),r.fillStyle=`rgba(0,0,0,0.22)`,r.beginPath(),r.ellipse(l,u+3,11,5,0,0,Math.PI*2),r.fill(),f&&(r.strokeStyle=d,r.lineWidth=2,r.setLineDash([4,3]),r.beginPath(),r.arc(l,u-24+w,16,0,Math.PI*2),r.stroke(),r.setLineDash([])),r.save(),r.translate(l,u),o===`burnout`?(r.rotate(Math.PI/2),r.translate(0,15)):b?(r.rotate(Math.sin(x*.45)*.03),r.translate(0,1)):a===`left`&&r.scale(-1,1),r.fillStyle=g,r.save(),r.translate(-3.5,0),r.rotate(S*.1),$(r,-2.5,-4,5,9,2),r.fill(),r.restore(),r.save(),r.translate(3.5,0),r.rotate(-S*.1),$(r,-2.5,-4,5,9,2),r.fill(),r.restore(),r.fillStyle=IT(g,30),r.save(),r.translate(-3.5,S*.5),$(r,-3,4,7,4,2),r.fill(),r.restore(),r.save(),r.translate(3.5,-S*.5),$(r,-3,4,7,4,2),r.fill(),r.restore();let T=r.createLinearGradient(-7,-26,7,-13);T.addColorStop(0,y),T.addColorStop(1,d),r.fillStyle=T,$(r,-7,-26,14,14,3),r.fill(),r.fillStyle=FT(d,45),$(r,-3.5,-26,7,5,2),r.fill(),r.strokeStyle=`rgba(0,0,0,0.12)`,r.lineWidth=.75,r.beginPath(),r.moveTo(0,-26),r.lineTo(0,-13),r.stroke(),r.save(),r.translate(-9,-24),r.rotate(b?.55+Math.max(0,Math.sin(x))*.28:C*.12);let E=r.createLinearGradient(-2,0,2,10);E.addColorStop(0,y),E.addColorStop(1,d),r.fillStyle=E,$(r,-2,0,4,9,2),r.fill(),r.fillStyle=_,r.beginPath(),r.ellipse(0,10,2.5,2,0,0,Math.PI*2),r.fill(),r.restore(),r.save(),r.translate(9,-24),r.rotate(b?-.55-Math.max(0,Math.sin(x+Math.PI))*.28:-C*.12),r.fillStyle=E,$(r,-2,0,4,9,2),r.fill(),r.fillStyle=_,r.beginPath(),r.ellipse(0,10,2.5,2,0,0,Math.PI*2),r.fill(),r.restore(),r.fillStyle=_,r.fillRect(-2.5,-28,5,4);let D=-38+w;r.fillStyle=`rgba(0,0,0,0.15)`,r.beginPath(),r.ellipse(1,D+2,9,5,0,0,Math.PI*2),r.fill();let O=r.createRadialGradient(-3,D-3,2,0,D,10);if(O.addColorStop(0,FT(_,15)),O.addColorStop(1,_),r.fillStyle=O,r.beginPath(),r.ellipse(0,D,9,10,0,0,Math.PI*2),r.fill(),this.drawHair(r,0,D,h,v),a!==`up`&&this.drawFace(r,0,D,_,a,p,i,o,n,m),r.restore(),o!==`idle`&&o!==`burnout`){let e=o===`blocked`?`#ef4444`:o===`processing`?`#a855f7`:o===`claiming`?`#0ea5e9`:`#f59e0b`,t=l+(a===`left`?-10:10),n=u-48+w;r.fillStyle=e,r.shadowColor=e,r.shadowBlur=10,r.beginPath(),r.arc(t,n,5,0,Math.PI*2),r.fill(),r.shadowBlur=0,r.strokeStyle=`#ffffff`,r.lineWidth=2,r.beginPath(),r.arc(t,n,5,0,Math.PI*2),r.stroke(),r.strokeStyle=`rgba(0,0,0,0.5)`,r.lineWidth=1,r.beginPath(),r.arc(t,n,6,0,Math.PI*2),r.stroke()}if(o===`processing`){let e=.4+.6*Math.sin(n*.0028);if(r.strokeStyle=LT(d,.18+e*.14),r.lineWidth=1.5,r.beginPath(),r.arc(l,u-38+w,17+e*4,0,Math.PI*2),r.stroke(),b)for(let e=0;e<4;e++){let t=(x+e*.9)%(Math.PI*2),n=Math.max(0,Math.sin(t));n<.25||(r.fillStyle=LT(d,n*.75),r.beginPath(),r.arc(l-9+e*6,u-11-n*3,1.1+n*.9,0,Math.PI*2),r.fill())}for(let e=0;e<3;e++){let t=.3+.7*Math.sin(n*.004+e*1.1);r.fillStyle=LT(d,.5+t*.5),r.beginPath(),r.arc(l+(-5+e*5),u-54+w,1.5+t,0,Math.PI*2),r.fill()}}if(o===`burnout`){let e=n*.002%(Math.PI*2);for(let t=0;t<3;t++){let n=(e+t*(Math.PI*2/3))%(Math.PI*2),i=Math.max(0,Math.sin(n)),a=l+5+Math.cos(n)*5+n*2,o=u-10-n*8;r.fillStyle=`rgba(150, 150, 200, ${i})`,r.font=`bold ${8+n*1.5}px monospace`,r.fillText(`Z`,a,o)}}r.fillStyle=t?`rgba(226,232,240,0.82)`:`rgba(15,23,42,0.7)`,r.font=`7px system-ui,sans-serif`,r.textAlign=`center`,r.textBaseline=`top`;let k=s.length>12?s.slice(0,12)+`…`:s;r.fillText(k,l,u+12)}drawHair(e,t,n,r,i){switch(e.fillStyle=r,i){case 0:e.beginPath(),e.ellipse(t,n,9,10,0,Math.PI,0),e.fill(),e.fillRect(t-9,n-2,3,5),e.fillRect(t+6,n-2,3,5);break;case 1:for(let r=-2;r<=2;r++)e.beginPath(),e.moveTo(t+r*4-2,n-7),e.lineTo(t+r*4,n-14),e.lineTo(t+r*4+2,n-7),e.closePath(),e.fill();e.beginPath(),e.ellipse(t,n-5,9,4,0,0,Math.PI*2),e.fill();break;case 2:e.save(),e.translate(t,n),e.beginPath(),e.moveTo(-9,-2),e.bezierCurveTo(-11,-12,10,-16,11,-6),e.lineTo(9,0),e.bezierCurveTo(4,-8,-4,-10,-9,-2),e.closePath(),e.fill(),e.restore();break;case 3:e.beginPath(),e.arc(t,n,9.5,Math.PI,0),e.fill(),$(e,t-10,n,4,12,2),e.fill(),$(e,t+6,n,4,12,2),e.fill();break;case 4:e.fillStyle=IT(r,20),$(e,t-12,n-6,24,5,2),e.fill(),e.fillStyle=r,$(e,t-9,n-16,18,12,3),e.fill(),e.fillStyle=FT(r,40),$(e,t-3,n-11,6,4,1),e.fill();break}}drawFace(e,t,n,r,i,a,o,s,c,l){if(i===`right`)e.fillStyle=`rgba(0,0,0,0.7)`,e.beginPath(),e.ellipse(t+5,n-2,1.5,1.5,0,0,Math.PI*2),e.fill(),e.strokeStyle=`rgba(0,0,0,0.2)`,e.lineWidth=1,e.beginPath(),e.arc(t+9,n,3,-.5,.5),e.stroke();else if(s===`burnout`){if((l||0)%2==0){e.strokeStyle=`rgba(0,0,0,0.7)`,e.lineWidth=1;let r=(c||0)*.005%(Math.PI*2);e.save(),e.translate(t-3,n-2),e.rotate(r),e.beginPath(),e.moveTo(0,0);for(let t=0;t<15;t++){let n=t*.5,r=t*.15;e.lineTo(Math.cos(n)*r,Math.sin(n)*r)}e.stroke(),e.restore(),e.save(),e.translate(t+3,n-2),e.rotate(r),e.beginPath(),e.moveTo(0,0);for(let t=0;t<15;t++){let n=t*.5,r=t*.15;e.lineTo(Math.cos(n)*r,Math.sin(n)*r)}e.stroke(),e.restore()}else e.strokeStyle=`rgba(0,0,0,0.7)`,e.lineWidth=1.5,e.beginPath(),e.arc(t-3,n-2,2.5,0,Math.PI),e.stroke(),e.beginPath(),e.arc(t+3,n-2,2.5,0,Math.PI),e.stroke();e.strokeStyle=`rgba(0,0,0,0.5)`,e.lineWidth=1,e.beginPath(),e.arc(t,n+3,2,Math.PI,Math.PI*2),e.stroke()}else{e.fillStyle=`white`,e.beginPath(),e.ellipse(t-3,n-2,2.5,2,0,0,Math.PI*2),e.fill(),e.beginPath(),e.ellipse(t+3,n-2,2.5,2,0,0,Math.PI*2),e.fill(),e.fillStyle=`rgba(20,20,80,0.85)`,e.beginPath(),e.arc(t-3,n-2,1.3,0,Math.PI*2),e.fill(),e.beginPath(),e.arc(t+3,n-2,1.3,0,Math.PI*2),e.fill(),e.fillStyle=`white`,e.beginPath(),e.arc(t-3.5,n-2.5,.5,0,Math.PI*2),e.fill(),e.beginPath(),e.arc(t+2.5,n-2.5,.5,0,Math.PI*2),e.fill();let r=a&&Math.sin(o)>.5;e.strokeStyle=`rgba(0,0,0,0.5)`,e.lineWidth=1,r?(e.beginPath(),e.arc(t,n+2,2,0,Math.PI),e.stroke()):(e.beginPath(),e.moveTo(t-2.5,n+2.5),e.quadraticCurveTo(t,n+4,t+2.5,n+2.5),e.stroke())}}},qT=K(`<span class="badge loading svelte-1pykpun"><span class="animate-spin" style="display:inline-block;width:10px;height:10px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%"></span> Loading…</span>`),JT=K(`<span class="badge error svelte-1pykpun"><!> Error</span>`),YT=K(`<span class="badge live svelte-1pykpun"><span class="pulse-dot svelte-1pykpun"></span> Live · <strong> </strong> <strong> </strong> <!></span>`),XT=K(`<div class="tip-row svelte-1pykpun"><span class="tip-key svelte-1pykpun">Repos</span> <span class="tip-repos svelte-1pykpun"> </span></div>`),ZT=K(`<div class="agent-tip glass svelte-1pykpun"><div class="tip-name svelte-1pykpun"><span class="tip-dot svelte-1pykpun"></span> </div> <div class="tip-row svelte-1pykpun"><span class="tip-key svelte-1pykpun">Role</span><span> </span></div> <div class="tip-row svelte-1pykpun"><span class="tip-key svelte-1pykpun">State</span> <span> </span></div> <div class="tip-row svelte-1pykpun"><span class="tip-key svelte-1pykpun">Tasks</span><span> </span></div> <!></div>`),QT=K(`<div class="arena-empty svelte-1pykpun"><!> <div style="font-weight:700;font-size:0.9rem">No active agents</div> <div class="arena-empty-sub svelte-1pykpun">Agents appear here when they claim tasks across your repositories</div></div>`),$T=K(`<div class="arena-root glass card animate-fade-in svelte-1pykpun"><div class="arena-hdr svelte-1pykpun"><div class="arena-hdr-left svelte-1pykpun"><div class="arena-icon svelte-1pykpun"><!></div> <div><div class="section-label" style="margin:0">Agent Arena</div> <div class="arena-sub svelte-1pykpun">Live 2D view · all repositories</div></div></div> <div class="arena-hdr-right svelte-1pykpun"><!></div></div> <div class="arena-wrap svelte-1pykpun"><canvas class="arena-canvas svelte-1pykpun"></canvas> <!> <!></div> <div class="arena-footer svelte-1pykpun"><div class="legend-row svelte-1pykpun"><div class="legend-item svelte-1pykpun"><span class="lg-dot svelte-1pykpun" style="background:#8b5cf6"></span>Lobby (idle)</div> <div class="legend-item svelte-1pykpun"><span class="lg-dot svelte-1pykpun" style="background:#0ea5e9"></span>Inbox</div> <div class="legend-item svelte-1pykpun"><span class="lg-dot svelte-1pykpun" style="background:#a855f7"></span>Workspace</div> <div class="legend-item svelte-1pykpun"><span class="lg-dot svelte-1pykpun" style="background:#ef4444"></span>Issues</div> <div class="legend-item svelte-1pykpun"><span class="lg-dot svelte-1pykpun" style="background:#10b981"></span>Done</div></div> <div class="legend-row svelte-1pykpun"><div class="legend-item svelte-1pykpun"><span class="lg-bubble svelte-1pykpun"></span>Working agent</div> <div class="legend-item svelte-1pykpun"><span class="lg-dash svelte-1pykpun" style="border-color:#f59e0b"></span>Handoff beam</div> <div class="legend-item svelte-1pykpun"><span class="lg-dash svelte-1pykpun"></span>Claim link</div></div></div></div>`);function eE(e,t){rt(t,!1);let n=()=>F(p,`$arena`,i),r=()=>F(Qa,`$theme`,i),[i,a]=Et(),o=I(),s=I(),c=I(),l=I(null),u=I(null),d=I(null),f=I(null),p=TT();function m(){if(!H(s)||!H(c))return;let e=H(c).clientWidth||960,t=Math.max(520,Math.min(window.innerHeight-220,800));Sn(s,H(s).width=e),Sn(s,H(s).height=t),L(u,{canvasWidth:e,canvasHeight:t}),H(l)||(L(l,new KT(H(s))),H(l).start()),p.setLayout(H(u)),n().scene&&H(l).update(n().scene,H(u),r()===`dark`)}function h(e){if(!H(l)||!n().scene){L(d,null),L(f,null);return}let t=H(s).getBoundingClientRect(),r=H(s).width/t.width,i=H(s).height/t.height,a=(e.clientX-t.left)*r,o=(e.clientY-t.top)*i,c=H(l).hitTestAgent(a,o);c!==H(d)&&(L(d,c),H(l).setHovered(H(d))),L(f,H(d)?{x:e.clientX-t.left+14,y:e.clientY-t.top-10}:null)}function g(){L(d,null),L(f,null),H(l)?.setHovered(null)}Ka(()=>{let e=setTimeout(()=>{m(),H(u)&&p.start(H(u))},60),t=new ResizeObserver(()=>m());return t.observe(H(c)),()=>{clearTimeout(e),t.disconnect()}}),qa(()=>{p.stop(),H(l)?.stop()}),ir(()=>(H(l),n(),H(u),r()),()=>{H(l)&&n().scene&&H(u)&&H(l).update(n().scene,H(u),r()===`dark`)}),ir(()=>(H(d),n()),()=>{L(o,H(d)&&n().scene?n().scene.agents.get(H(d))??null:null)}),ar(),Ua();var _=$T(),v=R(_),y=R(v),b=R(y);Q(R(b),{name:`cpu`,size:16,strokeWidth:1.75}),j(b),M(2),j(y);var x=B(y,2),S=R(x),C=e=>{q(e,qT())},w=e=>{var t=JT();Q(R(t),{name:`alert-circle`,size:11}),M(),j(t),q(e,t)},T=e=>{var t=YT(),r=B(R(t),2),i=R(r,!0);j(r);var a=B(r),o=B(a),s=R(o,!0);j(o);var c=B(o),l=B(c),u=e=>{var t=wi();V(()=>J(t,` · ${(n(),U(()=>n().repoCount))??``} repos`)),q(e,t)};Y(l,e=>{n(),U(()=>n().repoCount>1)&&e(u)}),j(t),V(()=>{J(i,(n(),U(()=>n().scene.agents.size))),J(a,` ${(n(),U(()=>n().scene.agents.size===1?`agent`:`agents`))??``}
|
|
151
|
-
· `),J(s,(n(),U(()=>n().scene.tasks.size))),J(c,` ${(n(),U(()=>n().scene.tasks.size===1?`task`:`tasks`))??``} `)}),q(e,t)};Y(S,e=>{n(),U(()=>n().loading&&!n().scene)?e(C):(n(),U(()=>n().error)?e(w,1):(n(),U(()=>n().scene)&&e(T,2)))}),j(x),j(v);var E=B(v,2),D=R(E);Ba(D,e=>L(s,e),()=>H(s));var O=B(D,2),k=e=>{var t=ZT(),n=R(t),r=R(n),i=B(r);j(n);var a=B(n,2),s=B(R(a)),c=R(s,!0);j(s),j(a);var l=B(a,2),u=B(R(l),2),d=R(u,!0);j(u),j(l);var p=B(l,2),m=B(R(p)),h=R(m,!0);j(m),j(p);var g=B(p,2),_=e=>{var t=XT(),n=B(R(t),2),r=R(n,!0);j(n),j(t),V(e=>J(r,e),[()=>(H(o),U(()=>H(o).repos.map(e=>e.split(`/`).pop()).join(`, `)))]),q(e,t)};Y(g,e=>{H(o),U(()=>H(o).repos.length>0)&&e(_)}),j(t),V(e=>{da(t,`left:${(H(f),U(()=>H(f).x))??``}px;top:${(H(f),U(()=>H(f).y))??``}px`),da(r,`background:${(H(o),U(()=>H(o).color))??``}`),J(i,` ${(H(o),U(()=>H(o).name))??``}`),J(c,(H(o),U(()=>H(o).role||`—`))),la(u,1,`tip-state ${(H(o),U(()=>H(o).state))??``}`,`svelte-1pykpun`),J(d,e),J(h,(H(o),U(()=>H(o).claimedTaskIds.length)))},[()=>(H(o),U(()=>H(o).state.replace(/_/g,` `)))]),q(e,t)};Y(O,e=>{H(o)&&H(f)&&e(k)});var ee=B(O,2),te=e=>{var t=QT();Q(R(t),{name:`users`,size:30,strokeWidth:1.2}),M(4),j(t),q(e,t)};Y(ee,e=>{n(),U(()=>n().scene&&n().scene.agents.size===0&&!n().loading)&&e(te)}),j(E),Ba(E,e=>L(c,e),()=>H(c)),M(2),j(_),V(()=>da(D,`cursor:${H(d)?`pointer`:`default`}`)),G(`mousemove`,D,h),G(`mouseleave`,D,g),q(e,_),it(),a()}var tE=K(`<div class="repo-focus svelte-1eglegg"><!> <span> </span></div>`),nE=K(`<div class="summary-card svelte-1eglegg"><div class="summary-icon svelte-1eglegg"><!></div> <div class="summary-value svelte-1eglegg"> </div> <div class="summary-label svelte-1eglegg"> </div></div>`),rE=K(`<div class="mini-card svelte-1eglegg"><div class="mini-value svelte-1eglegg"> </div> <div class="mini-label svelte-1eglegg"> </div></div>`),iE=K(`<div class="mini-card svelte-1eglegg"><div class="mini-icon svelte-1eglegg"><!></div> <div class="mini-value svelte-1eglegg"> </div> <div class="mini-label svelte-1eglegg"> </div></div>`),aE=K(`<div class="empty-state svelte-1eglegg">No repository activity yet.</div>`),oE=K(`<span class="stat-chip stale svelte-1eglegg"> </span>`),sE=K(`<span class="stat-chip stale svelte-1eglegg"> </span>`),cE=K(`<div><div class="repo-main"><div class="repo-name svelte-1eglegg"> </div> <div class="repo-meta svelte-1eglegg"> </div></div> <div class="pressure-pill svelte-1eglegg"> </div> <div class="repo-stats svelte-1eglegg"><span class="stat-chip active svelte-1eglegg"> </span> <span class="stat-chip pending svelte-1eglegg"> </span> <span class="stat-chip blocked svelte-1eglegg"> </span> <span class="stat-chip backlog svelte-1eglegg"> </span></div> <div class="repo-stats svelte-1eglegg"><span class="stat-chip claim svelte-1eglegg"> </span> <span class="stat-chip handoff svelte-1eglegg"> </span> <!> <!></div> <div class="last-activity svelte-1eglegg"> </div></div>`),lE=K(`<div class="repo-table svelte-1eglegg"><div class="repo-table-head svelte-1eglegg"><span>Repository</span> <span>Pressure</span> <span>Workload</span> <span>Coordination</span> <span>Last Activity</span></div> <!></div>`),uE=K(`<div class="global-shell animate-fade-in svelte-1eglegg"><div class="glass card panel-card svelte-1eglegg"><div class="panel-header svelte-1eglegg"><div><div class="section-label">Global Command Center</div> <div class="panel-copy svelte-1eglegg">Cross-repository orchestration view for workload, coordination, and pressure.</div></div> <!></div> <div class="summary-grid svelte-1eglegg"></div></div> <div class="grid-two svelte-1eglegg"><div class="glass card panel-card svelte-1eglegg"><div class="subheading svelte-1eglegg">Coordination</div> <div class="mini-grid svelte-1eglegg"></div></div> <div class="glass card panel-card svelte-1eglegg"><div class="subheading svelte-1eglegg">Throughput</div> <div class="mini-grid svelte-1eglegg"></div></div></div> <div class="glass card panel-card svelte-1eglegg"><div class="panel-header svelte-1eglegg"><div><div class="subheading svelte-1eglegg">Attention Board</div> <div class="panel-copy svelte-1eglegg">Repos sorted by operational pressure: blocked work, active execution, pending queue, and coordination load.</div></div></div> <!></div></div>`);function dE(e,t){rt(t,!1);let n=()=>F(so,`$globalDashboardStats`,s),r=()=>F(no,`$currentRepo`,s),i=()=>F(d,`$summaryCards`,s),a=()=>F(f,`$coordinationCards`,s),o=()=>F(p,`$throughputCards`,s),[s,c]=Et(),l=I(),u=I(),d=bt(so,e=>[{label:`Repositories`,value:e?.repoCount??0,icon:`database`,color:`#0ea5e9`,tint:`rgba(14,165,233,0.12)`},{label:`Active Repos`,value:e?.activeRepoCount??0,icon:`activity`,color:`#8b5cf6`,tint:`rgba(139,92,246,0.12)`},{label:`Open Tasks`,value:(e?.taskStats?.pending??0)+(e?.taskStats?.in_progress??0)+(e?.taskStats?.blocked??0)+(e?.taskStats?.backlog??0),icon:`clipboard-list`,color:`#f59e0b`,tint:`rgba(245,158,11,0.12)`},{label:`Active Claims`,value:e?.coordination?.activeClaims??0,icon:`check`,color:`#10b981`,tint:`rgba(16,185,129,0.12)`},{label:`Pending Handoffs`,value:e?.coordination?.pendingHandoffs??0,icon:`git-branch`,color:`#6366f1`,tint:`rgba(99,102,241,0.12)`},{label:`Blocked Tasks`,value:e?.taskStats?.blocked??0,icon:`triangle-alert`,color:`#ef4444`,tint:`rgba(239,68,68,0.12)`}]),f=bt(so,e=>[{label:`Agents Claiming`,value:e?.coordination?.agentsClaiming??0,accent:`#10b981`},{label:`Unassigned Handoffs`,value:e?.coordination?.unassignedHandoffs??0,accent:`#f97316`},{label:`Stale Claims`,value:e?.coordination?.staleClaims??0,accent:`#ef4444`},{label:`Stale Handoffs`,value:e?.coordination?.staleHandoffs??0,accent:`#e11d48`}]),p=bt(lo,e=>[{label:`Today Done`,value:e?.daily?.completed??0,icon:`circle-check`,color:`#10b981`},{label:`Today Added`,value:e?.daily?.added??0,icon:`plus`,color:`#0ea5e9`},{label:`7d Done`,value:e?.weekly?.completed??0,icon:`bar-chart`,color:`#8b5cf6`},{label:`7d Tokens`,value:Jl(e?.weekly?.tokens),icon:`cpu`,color:`#f59e0b`}]);function m(e){return e.blockedCount*5+e.inProgressCount*3+e.pendingCount*2+e.pendingHandoffs*2+e.activeClaims}ir(()=>n(),()=>{L(l,(n()?.repos??[]).slice(0,8))}),ir(()=>(r(),H(l)),()=>{L(u,r()?H(l).find(e=>e.repo===r()):null)}),ar(),Ua();var h=uE(),g=R(h),_=R(g),v=B(R(_),2),y=e=>{var t=tE(),n=R(t);Q(n,{name:`pin`,size:12,strokeWidth:2});var i=B(n,2),a=R(i);j(i),j(t),V(()=>J(a,`Focused repo: ${r()??``}`)),q(e,t)};Y(v,e=>{H(u)&&e(y)}),j(_);var b=B(_,2);X(b,5,i,e=>e.label,(e,t)=>{var n=nE(),r=R(n);Q(R(r),{get name(){return H(t),U(()=>H(t).icon)},size:14,strokeWidth:1.9}),j(r);var i=B(r,2),a=R(i,!0);j(i);var o=B(i,2),s=R(o,!0);j(o),j(n),V(()=>{da(n,`background:${(H(t),U(()=>H(t).tint))??``};border-color:${(H(t),U(()=>H(t).tint))??``};`),da(r,`color:${(H(t),U(()=>H(t).color))??``};`),da(i,`color:${(H(t),U(()=>H(t).color))??``};`),J(a,(H(t),U(()=>H(t).value))),J(s,(H(t),U(()=>H(t).label)))}),q(e,n)}),j(b),j(g);var x=B(g,2),S=R(x),C=B(R(S),2);X(C,5,a,e=>e.label,(e,t)=>{var n=rE(),r=R(n),i=R(r,!0);j(r);var a=B(r,2),o=R(a,!0);j(a),j(n),V(()=>{da(r,`color:${(H(t),U(()=>H(t).accent))??``};`),J(i,(H(t),U(()=>H(t).value))),J(o,(H(t),U(()=>H(t).label)))}),q(e,n)}),j(C),j(S);var w=B(S,2),T=B(R(w),2);X(T,5,o,e=>e.label,(e,t)=>{var n=iE(),r=R(n);Q(R(r),{get name(){return H(t),U(()=>H(t).icon)},size:12,strokeWidth:2}),j(r);var i=B(r,2),a=R(i,!0);j(i);var o=B(i,2),s=R(o,!0);j(o),j(n),V(()=>{da(r,`color:${(H(t),U(()=>H(t).color))??``};`),da(i,`color:${(H(t),U(()=>H(t).color))??``};`),J(a,(H(t),U(()=>H(t).value))),J(s,(H(t),U(()=>H(t).label)))}),q(e,n)}),j(T),j(w),j(x);var E=B(x,2),D=B(R(E),2),O=e=>{q(e,aE())},k=e=>{var t=lE();X(B(R(t),2),1,()=>H(l),e=>e.repo,(e,t)=>{var n=cE();let i;var a=R(n),o=R(a),s=R(o,!0);j(o);var c=B(o,2),l=R(c);j(c),j(a);var u=B(a,2),d=R(u,!0);j(u);var f=B(u,2),p=R(f),h=R(p);j(p);var g=B(p,2),_=R(g);j(g);var v=B(g,2),y=R(v);j(v);var b=B(v,2),x=R(b);j(b),j(f);var S=B(f,2),C=R(S),w=R(C);j(C);var T=B(C,2),E=R(T);j(T);var D=B(T,2),O=e=>{var n=oE(),r=R(n);j(n),V(()=>J(r,`U ${(H(t),U(()=>H(t).unassignedHandoffs))??``}`)),q(e,n)};Y(D,e=>{H(t),U(()=>H(t).unassignedHandoffs>0)&&e(O)});var k=B(D,2),ee=e=>{var n=sE(),r=R(n);j(n),V(()=>J(r,`S ${(H(t),U(()=>H(t).staleClaims))??``}`)),q(e,n)};Y(k,e=>{H(t),U(()=>H(t).staleClaims>0)&&e(ee)}),j(S);var te=B(S,2),ne=R(te,!0);j(te),j(n),V((e,a)=>{i=la(n,1,`repo-table-row svelte-1eglegg`,null,i,{selected:r()===H(t).repo}),J(s,(H(t),U(()=>H(t).repo))),J(l,`${(H(t),U(()=>H(t).memoryCount))??``} memories • ${(H(t),U(()=>H(t).taskCount))??``} tasks`),J(d,e),J(h,`A ${(H(t),U(()=>H(t).inProgressCount))??``}`),J(_,`P ${(H(t),U(()=>H(t).pendingCount))??``}`),J(y,`B ${(H(t),U(()=>H(t).blockedCount))??``}`),J(x,`Q ${(H(t),U(()=>H(t).backlogCount))??``}`),J(w,`C ${(H(t),U(()=>H(t).activeClaims))??``}`),J(E,`H ${(H(t),U(()=>H(t).pendingHandoffs))??``}`),J(ne,a)},[()=>(H(t),U(()=>m(H(t)))),()=>(H(t),W(ql),U(()=>H(t).lastActivity?ql(H(t).lastActivity):`—`))]),q(e,n)}),j(t),q(e,t)};Y(D,e=>{H(l),U(()=>H(l).length===0)?e(O):e(k,-1)}),j(E),j(h),q(e,h),it(),c()}var fE=K(`<div class="drawer-overlay" style="z-index:38;" role="button" tabindex="0" aria-label="Close menu"></div> <div class="mobile-sidebar-shell"><!></div>`,1),pE=K(`<div class="empty-state animate-fade-in svelte-1m88iwd"><div class="empty-state-icon animate-float svelte-1m88iwd"><!></div> <div class="empty-state-title svelte-1m88iwd">No Repository Selected</div> <div class="empty-state-text svelte-1m88iwd">Select a repository from the sidebar to get started.</div></div>`),mE=K(`<div class="glass card hover-glow card-body"><div class="flex items-center justify-between card-section-title"><div class="section-label">Selected Repo Pulse</div> <div class="repo-badge svelte-1m88iwd"> </div></div> <div class="repo-pulse-grid svelte-1m88iwd" style="display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:12px;"><div class="glass card card-body"><div class="section-label card-section-title">Memory Overview</div> <!></div> <div class="glass card card-body"><div class="section-label card-section-title">Task Overview</div> <!></div></div></div> <!>`,1),hE=K(`<div class="glass card hover-glow card-body"><div class="section-label card-section-title">Per-Repository Pulse</div> <div class="muted-text svelte-1m88iwd">Select a repository from the sidebar to inspect repo-specific memory, task, and execution metrics.</div></div>`),gE=K(`<div style="display:grid;grid-template-columns:1fr;gap:12px;align-items:start;" class="dashboard-grid svelte-1m88iwd"><!> <div class="flex flex-col" style="gap:12px;"><!></div></div>`),_E=K(`<div class="glass card animate-fade-in" style="height:calc(100vh - 180px);display:flex;flex-direction:column;padding:0;overflow:hidden;border-radius:24px;"><div style="padding:16px 20px;border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,0.05);"><div class="flex items-center gap-3"><div style="width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-accent));display:flex;align-items:center;justify-content:center;color:white;box-shadow:0 4px 12px var(--glow-primary);"><!></div> <div><div style="font-size:0.95rem;font-weight:800;color:var(--color-text);letter-spacing:-0.01em;">Recent Activity</div> <div style="font-size:0.68rem;color:var(--color-text-muted);font-weight:600;"> </div></div></div></div> <!> <div class="chat-send-panel"><div class="chat-input-row"><input type="text" placeholder="Type a message to create a backlog task..."/> <button class="chat-send-btn"><!></button></div></div></div>`),vE=K(`<div class="glass card hover-glow animate-fade-in"><div class="flex items-center gap-2" style="margin-bottom:16px;"><!> <div class="section-label">Memory Explorer</div></div> <!></div>`),yE=K(`<div class="animate-fade-in"><div class="glass card hover-glow" style="margin-bottom:20px;"><div class="flex items-center gap-2" style="margin-bottom:16px;"><!> <div class="stat-label">Task Overview</div></div> <!></div></div>`),bE=K(`<div class="arena-fullwidth svelte-1m88iwd"><!></div>`),xE=K(`<div class="tabs-wrap"><div class="tab-nav" style="display:inline-flex;" role="tablist"><button id="tab-activity" role="tab"><!> <span>Activity</span></button> <button id="tab-memories" role="tab"><!> <span>Memories</span></button> <button id="tab-tasks" role="tab"><!> <span>Tasks</span></button> <button id="tab-handoffs" role="tab"><!> <span>Handoffs</span></button> <button id="tab-knowledge-graph" role="tab"><!> <span>Knowledge Graph</span></button></div></div> <!> <!> <!> <!> <!> <!> <!> <!> <!>`,1),SE=K(`<div class="app-layout"><!> <div><!> <!> <div id="dashboardShell" class="dashboard-shell" aria-live="polite"><!></div></div></div> <!> <!> <!> <!> <!> <!>`,1);function CE(e,t){rt(t,!1);let n=()=>F(eo,`$activeTab`,s),r=()=>F(y,`$sidebarCollapsed`,s),i=()=>F(h,`$appState`,s),a=()=>F(no,`$currentRepo`,s),o=()=>F(wo,`$recentActionsTotalItems`,s),[s,c]=Et(),l=I(),u=I(),d=I(``),f=I(!1);async function p(){let e=H(d).trim();if(!e||H(f))return;let t=P(no);if(t){L(f,!0);try{await au(e,t),L(d,``),await m.onRefresh()}catch(e){console.error(`Failed to create task from chat:`,e)}finally{L(f,!1)}}}let m=Ko({get kanbanBoard(){return H(l)},get memoryList(){return H(u)}}),h={subscribe:m.subscribe,set:m.set,update:m.update},{filteredTools:g,filteredPrompts:_,filteredResources:v,sidebarCollapsed:y}=m;Ka(async()=>{Fo(),await m.loadRepos(),await m.loadHealth(),await m.loadData()}),ir(()=>(n(),Ro),()=>{n()===`reference`&&(P(m).capabilities||Ro.capabilities().then(e=>m.update(t=>({...t,capabilities:e}))).catch(e=>console.error(`Failed to load capabilities:`,e)))}),ar(),Ua();var b=SE();G(`keydown`,An,function(...e){m.onKeyDown?.apply(this,e)});var x=z(b),S=R(x);Nu(S,{get onRepoSelect(){return U(()=>m.onRepoSelect)}});var C=B(S,2);let w;var T=R(C);qu(T,{get onRefresh(){return U(()=>m.onRefresh)},get onToggleMobileMenu(){return U(()=>m.toggleMobileMenu)},get onEcosystem(){return U(()=>m.onEcosystemClick)}});var E=B(T,2),D=e=>{var t=fE(),n=z(t),r=B(n,2);Nu(R(r),{get onRepoSelect(){return U(()=>m.onRepoSelect)}}),j(r),G(`click`,n,()=>m.toggleMobileMenu()),G(`keydown`,n,e=>e.key===`Escape`&&m.toggleMobileMenu()),q(e,t)};Y(E,e=>{i(),U(()=>i().mobileMenuOpen)&&e(D)});var O=B(E,2),k=R(O),ee=e=>{var t=pE(),n=R(t);Q(R(n),{name:`brain`,size:32,strokeWidth:1.5}),j(n),M(4),j(t),q(e,t)},te=e=>{var t=xE(),r=z(t),i=R(r),s=R(i);let c;Q(R(s),{name:`activity`,size:14,strokeWidth:1.75}),M(2),j(s);var y=B(s,2);let b;Q(R(y),{name:`brain`,size:14,strokeWidth:1.75}),M(2),j(y);var x=B(y,2);let S;Q(R(x),{name:`clipboard-list`,size:14,strokeWidth:1.75}),M(2),j(x);var C=B(x,2);let w;Q(R(C),{name:`git-branch`,size:14,strokeWidth:1.75}),M(2),j(C);var T=B(C,2);let E;Q(R(T),{name:`share-2`,size:14,strokeWidth:1.75}),M(2),j(T),j(i),j(r);var D=B(r,2),O=e=>{var t=gE(),n=R(t);dE(n,{});var r=B(n,2),i=R(r),o=e=>{var t=mE(),n=z(t),r=R(n),i=B(R(r),2),o=R(i,!0);j(i),j(r);var s=B(r,2),c=R(s);Md(B(R(c),2),{}),j(c);var l=B(c,2);Rd(B(R(l),2),{}),j(l),j(s),j(n),ib(B(n,2),{}),V(()=>J(o,a())),q(e,t)},s=e=>{q(e,hE())};Y(i,e=>{a()?e(o):e(s,-1)}),j(r),j(t),q(e,t)};Y(D,e=>{n()===`dashboard`&&e(O)});var k=B(D,2),ee=e=>{var t=_E(),n=R(t),r=R(n),i=R(r);Q(R(i),{name:`activity`,size:18,strokeWidth:2.2}),j(i);var a=B(i,2),s=B(R(a),2),c=R(s);j(s),j(a),j(r),j(n);var l=B(n,2);ax(l,{get onLoadPage(){return U(()=>m.loadRecentActions)}});var u=B(l,2),h=R(u),g=R(h);Ta(g);var _=B(g,2);Q(R(_),{name:`send`,size:16,strokeWidth:2}),j(_),j(h),j(u),j(t),V(e=>{J(c,`${o()??``} events tracked`),Ea(g,H(d)),g.disabled=H(f),_.disabled=e},[()=>(H(d),H(f),U(()=>!H(d).trim()||H(f)))]),G(`input`,g,e=>L(d,e.currentTarget.value)),G(`keydown`,g,e=>e.key===`Enter`&&!e.shiftKey&&p()),G(`click`,_,p),q(e,t)};Y(k,e=>{n()===`activity`&&e(ee)});var te=B(k,2),ne=e=>{var t=vE(),n=R(t);Q(R(n),{name:`brain`,size:14,strokeWidth:1.75}),M(2),j(n),Ba(wb(B(n,2),{get onMemoryClick(){return U(()=>m.openMemoryDrawer)},get onNewMemory(){return U(()=>m.openNewMemoryDrawer)},onBulkImport:()=>m.openBulkImport(`memories`),$$legacy:!0}),e=>L(u,e),()=>H(u)),j(t),q(e,t)};Y(te,e=>{n()===`memories`&&e(ne)});var re=B(te,2),ie=e=>{var t=yE(),n=R(t),r=R(n);Q(R(r),{name:`columns`,size:14,strokeWidth:1.75}),M(2),j(r),Ba(wd(B(r,2),{get onTaskClick(){return U(()=>m.openTaskDrawer)},onAddTask:()=>m.toggleAddTaskModal(!0),onBulkImport:()=>m.openBulkImport(`tasks`),$$legacy:!0}),e=>L(l,e),()=>H(l)),j(n),j(t),q(e,t)};Y(re,e=>{n()===`tasks`&&e(ie)});var A=B(re,2),ae=e=>{{let t=dn(()=>a()||``);ow(e,{get repo(){return H(t)}})}};Y(A,e=>{n()===`standards`&&e(ae)});var oe=B(A,2),se=e=>{{let t=dn(()=>a()||``);gw(e,{get repo(){return H(t)}})}};Y(oe,e=>{n()===`handoffs`&&e(se)});var ce=B(oe,2),le=e=>{{let t=dn(()=>a()||``);eT(e,{get repo(){return H(t)}})}};Y(ce,e=>{n()===`knowledge-graph`&&e(le)});var ue=B(ce,2),de=e=>{var t=bE();eE(R(t),{}),j(t),q(e,t)};Y(ue,e=>{n()===`arena`&&e(de)});var fe=B(ue,2),pe=e=>{zC(e,{get handler(){return m},get appState(){return h},get filteredTools(){return g},get filteredPrompts(){return _},get filteredResources(){return v}})};Y(fe,e=>{n()===`reference`&&e(pe)}),V(()=>{c=la(s,1,`tab-btn`,null,c,{active:n()===`activity`}),ka(s,`aria-selected`,n()===`activity`),b=la(y,1,`tab-btn`,null,b,{active:n()===`memories`}),ka(y,`aria-selected`,n()===`memories`),S=la(x,1,`tab-btn`,null,S,{active:n()===`tasks`}),ka(x,`aria-selected`,n()===`tasks`),w=la(C,1,`tab-btn`,null,w,{active:n()===`handoffs`}),ka(C,`aria-selected`,n()===`handoffs`),E=la(T,1,`tab-btn`,null,E,{active:n()===`knowledge-graph`}),ka(T,`aria-selected`,n()===`knowledge-graph`)}),G(`click`,s,()=>m.onTabChange(`activity`)),G(`click`,y,()=>m.onTabChange(`memories`)),G(`click`,x,()=>m.onTabChange(`tasks`)),G(`click`,C,()=>m.onTabChange(`handoffs`)),G(`click`,T,()=>m.onTabChange(`knowledge-graph`)),q(e,t)};Y(k,e=>{!a()&&n()!==`dashboard`&&n()!==`arena`?e(ee):e(te,-1)}),j(O),j(C),j(x);var ne=B(x,2);{let e=dn(()=>(i(),U(()=>i().selectedMemory?`memory`:`task`)));cS(ne,{get drawerMode(){return H(e)},get memory(){return i(),U(()=>i().selectedMemory)},get task(){return i(),U(()=>i().selectedTask)},get open(){return i(),U(()=>i().drawerOpen)},get onClose(){return U(()=>m.closeDrawer)},get onTaskUpdated(){return U(()=>m.handleTaskUpdated)},onTaskDeleted:()=>{a()&&H(l)?.loadTasks(a())}})}var re=B(ne,2);AS(re,{get item(){return i(),U(()=>i().selectedReference)},get open(){return i(),U(()=>i().referenceDrawerOpen)},onClose:()=>m.toggleReferenceDrawer(!1)});var ie=B(re,2);XS(ie,{get memory(){return i(),U(()=>i().memoryDrawerItem)},get open(){return i(),U(()=>i().memoryDrawerOpen)},onClose:()=>m.toggleMemoryDrawer(!1),get onSaved(){return U(()=>m.handleMemorySaved)},get onDeleted(){return U(()=>m.handleMemoryDeleted)}});var A=B(ie,2);gC(A,{get open(){return i(),U(()=>i().addTaskModalOpen)},get newTask(){return i(),U(()=>i().newTask)},onClose:()=>m.toggleAddTaskModal(!1),get onSave(){return U(()=>m.createTask)}});var ae=B(A,2);{let e=dn(()=>a()||``);fC(ae,{get repo(){return H(e)},get importTarget(){return i(),U(()=>i().bulkImportTarget)},get isOpen(){return i(),U(()=>i().bulkImportOpen)},$$events:{close:()=>m.toggleBulkImport(!1),success:()=>{i().bulkImportTarget===`memories`&&H(u)?.refresh(),i().bulkImportTarget===`tasks`&&a()&&H(l)?.loadTasks(a())}}})}YC(B(ae,2),{get onRefresh(){return U(()=>m.onRefresh)}}),V(()=>w=la(C,1,`main-content`,null,w,{"sidebar-collapsed":r()})),q(e,b),it(),c()}Oi(CE,{target:document.getElementById(`app`)});
|
|
150
|
+
relations or run a relation backfill to enable the connected force graph. `)),q(e,a)}var Iw=K(`<div class="kg-error svelte-1ysja8i"><!> </div>`),Lw=K(`<div class="kg-toolbar svelte-1ysja8i"><div class="kg-toolbar-left svelte-1ysja8i"><span class="section-label" style="font-size:0.68rem;"><!> Knowledge Graph</span> <span class="kg-stats svelte-1ysja8i"> </span></div> <div class="kg-toolbar-right svelte-1ysja8i"><button class="btn btn-ghost btn-sm"><!> Add Entity</button> <button class="btn btn-ghost btn-sm"><!> Add Relation</button> <button class="btn btn-ghost btn-sm"><!> Refresh</button></div></div> <!> <!>`,1);function Rw(e,t){let n=Z(t,`nodeCount`,8),r=Z(t,`edgeCount`,8),i=Z(t,`isLoading`,8),a=Z(t,`errorMsg`,8),o=Z(t,`isZeroEdgeOverview`,8),s=Z(t,`visibleNodeCount`,8),c=Z(t,`hiddenNodeCount`,8),l=Z(t,`onAddEntity`,8),u=Z(t,`onAddRelation`,8),d=Z(t,`onRefresh`,8);var f=Lw(),p=z(f),m=R(p),h=R(m);Q(R(h),{name:`share-2`,size:12,strokeWidth:1.75}),M(),j(h);var g=B(h,2),_=R(g);j(g),j(m);var v=B(m,2),y=R(v);Q(R(y),{name:`plus`,size:12,strokeWidth:2}),M(),j(y);var b=B(y,2);Q(R(b),{name:`link`,size:12,strokeWidth:2}),M(),j(b);var x=B(b,2),S=R(x);{let e=dn(()=>i()?`animate-spin`:``);Q(S,{name:`refresh-cw`,size:12,strokeWidth:2,get className(){return H(e)}})}M(),j(x),j(v),j(p);var C=B(p,2),w=e=>{var t=Iw(),n=R(t);Q(n,{name:`triangle-alert`,size:14,strokeWidth:1.75});var r=B(n);j(t),V(()=>J(r,` ${a()??``}`)),q(e,t)};Y(C,e=>{a()&&e(w)});var T=B(C,2),E=e=>{Fw(e,{get visibleNodeCount(){return s()},get totalNodeCount(){return n()},get hiddenNodeCount(){return c()}})};Y(T,e=>{o()&&e(E)}),V(()=>{J(_,`${n()??``} nodes · ${r()??``} edges`),x.disabled=i()}),G(`click`,y,function(...e){l()?.apply(this,e)}),G(`click`,b,function(...e){u()?.apply(this,e)}),G(`click`,x,function(...e){d()?.apply(this,e)}),q(e,f)}var zw=K(`<div class="kg-container svelte-1esn54r"><!></div>`);function Bw(e,t){var n=zw();Hi(R(n),t,`default`,{},null),j(n),q(e,n)}var Vw=K(`<p>Are you sure you want to delete entity <strong> </strong>?</p>`),Hw=K(`<p>Are you sure you want to delete this relation?</p> <p style="font-size:0.8rem;color:var(--color-text-muted);margin-top:4px;"> </p>`,1),Uw=K(`<div class="modal-header svelte-18jfbxu"><!> <span>Confirm Delete</span></div> <div class="modal-body svelte-18jfbxu"><!></div> <div class="modal-footer svelte-18jfbxu"><button class="btn btn-ghost btn-sm">Cancel</button> <button class="btn btn-sm" style="background:var(--color-danger);color:white;border:none;">Delete</button></div>`,1),Ww=K(`<div class="modal-header svelte-18jfbxu"><!> <span>Add Entity</span></div> <div class="modal-body svelte-18jfbxu"><div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="entity-name">Name *</label> <input id="entity-name" class="form-input" type="text" placeholder="Entity name"/></div> <div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="entity-type">Type</label> <select id="entity-type" class="form-select"><option>Person</option><option>Place</option><option>Organization</option><option>Concept</option><option>Unknown</option></select></div> <div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="entity-desc">Description</label> <textarea id="entity-desc" class="form-textarea" placeholder="Optional description" rows="2"></textarea></div></div> <div class="modal-footer svelte-18jfbxu"><button class="btn btn-ghost btn-sm">Cancel</button> <button class="btn btn-primary btn-sm">Create</button></div>`,1),Gw=K(`<option> </option>`),Kw=K(`<option> </option>`),qw=K(`<div class="modal-header svelte-18jfbxu"><!> <span>Add Relation</span></div> <div class="modal-body svelte-18jfbxu"><div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="rel-from">From Entity *</label> <select id="rel-from" class="form-select"><option>Select entity...</option><!></select></div> <div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="rel-to">To Entity *</label> <select id="rel-to" class="form-select"><option>Select entity...</option><!></select></div> <div class="form-group svelte-18jfbxu"><label class="form-label svelte-18jfbxu" for="rel-type">Relation Type *</label> <input id="rel-type" class="form-input" type="text" placeholder="e.g., knows, located_in, works_at"/></div></div> <div class="modal-footer svelte-18jfbxu"><button class="btn btn-ghost btn-sm">Cancel</button> <button class="btn btn-primary btn-sm">Create</button></div>`,1),Jw=K(`<div class="modal-overlay svelte-18jfbxu" role="button" tabindex="0" aria-label="Close"></div> <div class="modal-panel animate-fade-in-scale svelte-18jfbxu" role="dialog"><!></div>`,1);function Yw(e,t){rt(t,!1);let n=Ya(),r=Z(t,`mode`,8,`addEntity`),i=Z(t,`show`,8,!1),a=Z(t,`entityNodes`,24,()=>[]),o=Z(t,`deleteTarget`,8,null),s=I(``),c=I(`concept`),l=I(``),u=I(``),d=I(``),f=I(``);function p(){n(`close`)}function m(){n(`close`)}function h(){H(s).trim()&&(n(`addEntity`,{name:H(s).trim(),type:H(c),description:H(l).trim()||void 0}),L(s,``),L(c,`concept`),L(l,``))}function g(){!H(u)||!H(d)||!H(f).trim()||(n(`addRelation`,{from_entity:H(u),to_entity:H(d),relation_type:H(f).trim()}),L(u,``),L(d,``),L(f,``))}function _(){n(`delete`)}Ua();var v=Ti(),y=z(v),b=e=>{var t=Jw(),n=z(t),i=B(n,2),v=R(i),y=e=>{var t=Uw(),n=z(t);Q(R(n),{name:`trash`,size:14,strokeWidth:1.75}),M(2),j(n);var r=B(n,2),i=R(r),a=e=>{var t=Vw(),n=B(R(t)),r=R(n,!0);j(n),M(),j(t),V(()=>J(r,(W(o()),U(()=>o().name)))),q(e,t)},s=e=>{var t=Hw(),n=B(z(t),2),r=R(n,!0);j(n),V(()=>J(r,(W(o()),U(()=>o()?.name)))),q(e,t)};Y(i,e=>{W(o()),U(()=>o()?.type===`node`)?e(a):e(s,-1)}),j(r);var c=B(r,2),l=R(c),u=B(l,2);j(c),G(`click`,l,m),G(`click`,u,_),q(e,t)},b=e=>{var t=Ww(),n=z(t);Q(R(n),{name:`plus`,size:14,strokeWidth:1.75}),M(2),j(n);var r=B(n,2),i=R(r),a=B(R(i),2);Ta(a),j(i);var o=B(i,2),u=B(R(o),2),d=R(u);d.value=d.__value=`person`;var f=B(d);f.value=f.__value=`place`;var p=B(f);p.value=p.__value=`organization`;var g=B(p);g.value=g.__value=`concept`;var _=B(g);_.value=_.__value=`unknown`,j(u),j(o);var v=B(o,2),y=B(R(v),2);Un(y),j(v),j(r);var b=B(r,2),x=R(b),S=B(x,2);j(b),V(e=>S.disabled=e,[()=>(H(s),U(()=>!H(s).trim()))]),Fa(a,()=>H(s),e=>L(s,e)),ma(u,()=>H(c),e=>L(c,e)),Fa(y,()=>H(l),e=>L(l,e)),G(`click`,x,m),G(`click`,S,h),q(e,t)},x=e=>{var t=qw(),n=z(t);Q(R(n),{name:`link`,size:14,strokeWidth:1.75}),M(2),j(n);var r=B(n,2),i=R(r),o=B(R(i),2),s=R(o);s.value=s.__value=``,X(B(s),1,a,e=>e.name,(e,t)=>{var n=Gw(),r=R(n,!0);j(n);var i={};V(()=>{J(r,(H(t),U(()=>H(t).name))),i!==(i=(H(t),U(()=>H(t).name)))&&(n.value=(n.__value=(H(t),U(()=>H(t).name)))??``)}),q(e,n)}),j(o),j(i);var c=B(i,2),l=B(R(c),2),p=R(l);p.value=p.__value=``,X(B(p),1,a,e=>e.name,(e,t)=>{var n=Kw(),r=R(n,!0);j(n);var i={};V(()=>{J(r,(H(t),U(()=>H(t).name))),i!==(i=(H(t),U(()=>H(t).name)))&&(n.value=(n.__value=(H(t),U(()=>H(t).name)))??``)}),q(e,n)}),j(l),j(c);var h=B(c,2),_=B(R(h),2);Ta(_),j(h),j(r);var v=B(r,2),y=R(v),b=B(y,2);j(v),V(e=>b.disabled=e,[()=>(H(u),H(d),H(f),U(()=>!H(u)||!H(d)||!H(f).trim()))]),ma(o,()=>H(u),e=>L(u,e)),ma(l,()=>H(d),e=>L(d,e)),Fa(_,()=>H(f),e=>L(f,e)),G(`click`,y,m),G(`click`,b,g),q(e,t)};Y(v,e=>{r()===`deleteConfirm`?e(y):r()===`addEntity`?e(b,1):r()===`addRelation`&&e(x,2)}),j(i),G(`click`,n,p),q(e,t)};Y(y,e=>{i()&&e(b)}),q(e,v),it()}var Xw=K(`<div class="kg-loading"><div class="animate-spin" style="width:24px;height:24px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;"></div> <span>Loading graph...</span></div>`),Zw=K(`<div class="kg-empty"><!> <div>No knowledge graph data found</div> <div class="text-xs" style="color:var(--color-text-muted);">Add entities and relations to build your graph.</div></div>`),Qw=K(`<!> <!> <div><canvas tabindex="0"></canvas></div> <!> <!> <!>`,1);function $w(e,t){rt(t,!1);let n=Z(t,`repo`,8),r=I([]),i=I([]),a=I(!0),o=I(``),s=I(``),c=I(!1),l=I(0),u=I([]),d=[],f=new Map;function p(e){return f.get(e)}let m=I(),h,g=800,_=600,v={hoveredNode:null,selectedNode:null,selectedEdge:null,tooltipPos:{x:0,y:0},showTooltip:!1},y=I(!1),b=I(!1),x=I(!1),S=I(null),C=new Map;function w(e){let t=new Map;for(let n of e)t.set(n.id,n),t.set(n.name,n);return t}function T(){h&&Nw(h,g,_,H(u),d,{...v,hiddenNodeCount:H(l)})}async function E(e=!1){if(!n())return;let t=n();if(!(!e&&H(s)===t&&H(u).length>0)){L(a,!0),L(o,``),D();try{let e=await Ro.kgGraph(t);if(n()!==t)return;L(r,e.nodes||[]),L(i,e.edges||[]),L(s,t),O()}catch(e){if(n()!==t)return;L(s,``),L(o,e instanceof Error?e.message:`Failed to load graph`)}finally{n()===t&&L(a,!1)}}}function D(){L(r,[]),L(i,[]),L(u,[]),d=[],f=C,L(c,!1),L(l,0),v.selectedNode=null,v.selectedEdge=null,v.hoveredNode=null,v.showTooltip=!1,T()}function O(){if(!h)return;if(L(c,H(i).length===0&&H(r).length>0),H(c)){let e=yw(H(r).map(e=>({id:e.id,name:e.name,type:e.type,description:e.description,memoryCount:e.memoryCount,x:0,y:0,vx:0,vy:0,pinned:!1})),g,_);L(u,e),L(l,Math.max(0,H(r).length-e.length)),d=[],f=w(H(u)),T();return}let e=H(r).slice(0,300),t=new Set(e.map(e=>e.name));L(u,vw(e.map(e=>({id:e.id,name:e.name,type:e.type,description:e.description,memoryCount:e.memoryCount,x:0,y:0,vx:0,vy:0,pinned:!1})),g,_)),d=H(i).filter(e=>t.has(e.source)&&t.has(e.target)).map(e=>({source:e.source,target:e.target,relation_type:e.relation_type})),L(l,Math.max(0,H(r).length-e.length)),f=w(H(u)),bw(H(u),d,g,_),T()}function k(){if(!H(m))return;let e=Ew(H(m));if(g=e.width,_=e.height,h=e.ctx,H(u).length>0){if(H(c)){O();return}bw(H(u),d,g,_),T()}}function ee(e){let t=H(m).getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;for(let e of H(u)){let t=n-e.x,i=r-e.y;if(t*t+i*i<=484){v.selectedNode=e,v.selectedEdge=null,v.tooltipPos={x:n,y:r},v.showTooltip=!0,T();return}}for(let e of d){let t=p(e.source),i=p(e.target);if(!(!t||!i)&&ie(n,r,t.x,t.y,i.x,i.y)<10){v.selectedEdge=e,v.selectedNode=null,v.showTooltip=!1,T();return}}v.selectedNode=null,v.selectedEdge=null,v.showTooltip=!1,T()}function te(e){let t=H(m).getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;for(let e of H(u)){let t=n-e.x,i=r-e.y;if(t*t+i*i<=484){L(S,{type:`node`,name:e.name}),L(x,!0);return}}}function ne(e){e.preventDefault();let t=H(m).getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;for(let e of d){let t=p(e.source),i=p(e.target);if(!(!t||!i)&&ie(n,r,t.x,t.y,i.x,i.y)<10){L(S,{type:`edge`,name:`${e.source} → ${e.target} (${e.relation_type})`,edge:e}),v.selectedEdge=e,v.selectedNode=null,L(x,!0),T();return}}}function re(e){let t=H(m).getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,i=null;for(let e of H(u)){let t=n-e.x,a=r-e.y;if(t*t+a*a<=484){i=e;break}}i!==v.hoveredNode&&(v.hoveredNode=i,Sn(m,H(m).style.cursor=i?`pointer`:`default`),T())}function ie(e,t,n,r,i,a){let o=i-n,s=a-r,c=o*o+s*s;if(c===0)return Math.hypot(e-n,t-r);let l=((e-n)*o+(t-r)*s)/c;return l=Math.max(0,Math.min(1,l)),Math.hypot(e-(n+l*o),t-(r+l*s))}async function A(e){let{name:t,type:r,description:i}=e.detail;try{await Ro.kgCreateEntity({name:t,type:r,description:i,repo:n()}),L(y,!1),await E(!0)}catch(e){L(o,e instanceof Error?e.message:`Failed to create entity`)}}async function ae(e){let{from_entity:t,to_entity:r,relation_type:i}=e.detail;try{await Ro.kgCreateRelation({from_entity:t,to_entity:r,relation_type:i,repo:n()}),L(b,!1),await E(!0)}catch(e){L(o,e instanceof Error?e.message:`Failed to create relation`)}}async function oe(){if(H(S))try{if(H(S).type===`node`)await Ro.kgDeleteEntity(H(S).name);else if(H(S).type===`edge`){let e=H(S).edge;await Ro.kgDeleteRelation({from_entity:e.source,to_entity:e.target,relation_type:e.relation_type})}L(x,!1),L(S,null),v.selectedEdge=null,v.selectedNode=null,v.showTooltip=!1,await E(!0)}catch(e){L(o,e instanceof Error?e.message:`Failed to delete`)}}function se(){L(x,!1),L(S,null)}function ce(e){e.key===`Escape`&&(v.showTooltip=!1,v.selectedNode=null,v.selectedEdge=null,L(x,!1),L(y,!1),L(b,!1),T())}let le=null;Ka(()=>{if(H(m)){let e=Ew(H(m));g=e.width,_=e.height,h=e.ctx}n()&&E(),le=new ResizeObserver(()=>k()),H(m)?.parentElement&&le.observe(H(m).parentElement)}),qa(()=>{le?.disconnect()}),ir(()=>(W(n()),H(m),H(s),U),()=>{n()&&H(m)&&H(s)!==n()&&U(()=>E())}),ar(),Ua(),G(`keydown`,An,ce),Bw(e,{children:(e,t)=>{var n=Qw(),s=z(n);Rw(s,{get nodeCount(){return H(r),U(()=>H(r).length)},get edgeCount(){return H(i),U(()=>H(i).length)},get isLoading(){return H(a)},get errorMsg(){return H(o)},get isZeroEdgeOverview(){return H(c)},get visibleNodeCount(){return H(u),U(()=>H(u).length)},get hiddenNodeCount(){return H(l)},onAddEntity:()=>L(y,!0),onAddRelation:()=>L(b,!0),onRefresh:()=>E(!0)});var d=B(s,2),f=e=>{q(e,Xw())},p=e=>{var t=Zw();Q(R(t),{name:`share-2`,size:32,strokeWidth:1.25,className:``}),M(4),j(t),q(e,t)};Y(d,e=>{H(a)?e(f):(H(u),U(()=>H(u).length===0)&&e(p,1))});var h=B(d,2);let g;var _=R(h);Ba(_,e=>L(m,e),()=>H(m)),j(h);var v=B(h,2);Yw(v,{mode:`addEntity`,get show(){return H(y)},$$events:{addEntity:A,close:()=>L(y,!1)}});var C=B(v,2);Yw(C,{mode:`addRelation`,get show(){return H(b)},get entityNodes(){return H(u)},$$events:{addRelation:ae,close:()=>L(b,!1)}}),Yw(B(C,2),{mode:`deleteConfirm`,get show(){return H(x)},get deleteTarget(){return H(S)},$$events:{delete:oe,close:se}}),V(()=>{g=la(h,1,`kg-canvas-wrap`,null,g,{"kg-hidden":H(a)||H(u).length===0}),ka(_,`aria-label`,(H(c),H(u),H(r),U(()=>H(c)?`Knowledge Graph zero-relation overview showing ${H(u).length} of ${H(r).length} entities`:`Knowledge Graph visualization`)))}),G(`click`,_,ee),G(`dblclick`,_,te),G(`contextmenu`,_,ne),G(`mousemove`,_,re),q(e,n)},$$slots:{default:!0}}),it()}var eT={backlog:`#64748b`,pending:`#0ea5e9`,in_progress:`#a855f7`,blocked:`#ef4444`,completed:`#10b981`,canceled:`#94a3b8`},tT={backlog:`backlog`,pending:`pending`,in_progress:`in_progress`,blocked:`blocked`,completed:`completed`,canceled:`canceled`},nT=[`#06b6d4`,`#f59e0b`,`#ec4899`,`#10b981`,`#3b82f6`,`#f97316`,`#14b8a6`,`#e11d48`,`#8b5cf6`,`#84cc16`],rT=16,iT=22,aT=28,oT=new Set([`in_progress`,`pending`]),sT=34,cT=54,lT=28,uT=58,dT=42;function fT(e,t,n){return Math.min(n,Math.max(t,e))}function pT(e,t){let n=Math.max(1,e.w-sT*2),r=Math.max(1,e.h-cT-lT),i=fT(Math.floor(n/uT)+1,1,3),a=Math.max(1,Math.floor(r/dT)+1),o=t%(i*a),s=o%i,c=Math.floor(o/i),l=i>1?n/(i-1):0,u=a>1?r/(a-1):0;return{x:e.x+sT+s*l,y:e.y+cT+c*u}}var mT=[`male_nurse`,`female_nurse`,`staff1`,`staff2`];function hT(e){return e%2==0?`wheelchair`:`stretcher`}function gT(e){return mT[(e>>>4)%mT.length]}function _T(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return t}function vT(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return nT[t%nT.length]}function yT(e,t){let n=e-32,r=t-32,i=Math.floor((r-16)/2),a=r-i-16,o=Math.floor((n-16)/2),s=Math.floor((n-32)/3);return[{id:`pending`,label:`Pending`,x:16,y:16,w:o,h:i,color:`#f59e0b`},{id:`in_progress`,label:`In Progress`,x:16+o+16,y:16,w:n-o-16,h:i,color:`#3b82f6`},{id:`backlog`,label:`Backlog`,x:16,y:16+i+16,w:s,h:a,color:`#8b5cf6`},{id:`blocked`,label:`Blocked`,x:16+s+16,y:16+i+16,w:s,h:a,color:`#ef4444`},{id:`burnout`,label:`Therapy Room`,x:16+s*2+32,y:16+i+16,w:n-s*2-32,h:a,color:`#14b8a6`}]}function bT(e,t){let n=new Map(t.map(e=>[e.id,e])),r=new Map;t.forEach(e=>r.set(e.id,[]));for(let t of e){let e=tT[t.status]??`pending`;if(!r.has(e))continue;let n=r.get(e);n.length<rT&&n.push(t)}let i=new Map;for(let[e,t]of r){let r=n.get(e);if(!r||t.length===0)continue;let a=r.w-iT*2,o=r.h-iT-aT,s=Math.max(1,Math.floor(a/65)),c=Math.ceil(t.length/s);for(;o/c<55&&s<t.length;)s++,c=Math.ceil(t.length/s);let l=a/s,u=Math.max(55,Math.min(75,o/c));t.forEach((e,t)=>{let n=t%s,a=Math.floor(t/s);i.set(e.id,{x:r.x+iT+n*l+l/2,y:r.y+aT+a*u+u/2})})}return i}function xT(e,t,n,r,i){let a=yT(i.canvasWidth,i.canvasHeight),o=bT(e,a),s=a.find(e=>e.id===`in_progress`)||a[0],c={agents:new Map,tasks:new Map,handoffs:[]};for(let t of e){let e=o.get(t.id);e&&c.tasks.set(t.id,{id:t.id,taskCode:t.task_code,title:t.title,repo:t.repo,status:t.status,priority:t.priority??3,x:e.x,y:e.y,claimedByAgentId:t.coordination?.active_claim_agent??null,hasPendingHandoff:(t.coordination?.pending_handoff_count??0)>0})}let l=new Map;for(let e of t){l.has(e.agent)||l.set(e.agent,{tasks:new Set,role:e.role,repos:new Set});let t=l.get(e.agent);t.tasks.add(e.task_id),t.repos.add(e.repo)}for(let t of e){let e=t.coordination?.active_claim_agent;if(!e)continue;l.has(e)||l.set(e,{tasks:new Set,role:t.coordination?.active_claim_role??`agent`,repos:new Set});let n=l.get(e);n.tasks.add(t.id),n.repos.add(t.repo)}Array.from(l.keys()).forEach((e,t)=>{let{tasks:n,role:i,repos:o}=l.get(e),u=r?.agents.get(e),d=s.x+s.w/2+(t%3-1)*30,f=s.y+s.h/2+(Math.floor(t/3)-1)*30,p=Array.from(n).find(e=>c.tasks.has(e)),m=p?c.tasks.get(p):null,h=Array.from(n).map(e=>c.tasks.get(e)).filter(e=>!!e).some(e=>oT.has(e.status)),g=m?m.x+20:d,_=m?m.y-18:f,v=Array.from(n).sort(),y=u?.claimedTaskIds.slice().sort()??[],b=!u||v.join(`,`)!==y.join(`,`),x=Date.now(),S=b?x:u?.lastUpdateTs??x,C=!h&&x-S>3e4,w=n.size>0?`processing`:`idle`;m&&m.status===`blocked`&&(w=`blocked`);let T=u?.handoffAnim??null;if(C){w=`burnout`;let n=pT(a.find(e=>e.id===`burnout`)||s,t);if(g=n.x,_=n.y,u?.state!==`burnout`&&!T){let t=_T(e),n=u?.x??d,r=u?.y??f;T={phase:`pickup`,vehicle:hT(t),helperVariant:gT(t),startX:n,startY:r,endX:g,endY:_,progress:0,phaseStartTs:performance.now(),wheelAngle:0,helperWalkPhase:0,helperFacing:`down`,stepBounce:0}}}else T=null;c.agents.set(e,{id:e,name:e,role:i,color:vT(e),x:u?.x??d,y:u?.y??f,targetX:g,targetY:_,vx:u?.vx??0,vy:u?.vy??0,walkPhase:u?.walkPhase??0,facing:u?.facing??`down`,state:w,claimedTaskIds:Array.from(n),repos:Array.from(o),lastUpdateTs:S,handoffAnim:T})});for(let e of n)e.status===`pending`&&c.handoffs.push({id:e.id,fromAgentId:e.from_agent,toAgentId:e.to_agent,taskId:e.task_id,summary:e.summary});return c}function ST(e){return e?.structuredContent??null}function CT(e,t,n){let r=Object.fromEntries(e.map((e,n)=>[e,t[n]]));return{id:String(r.id??``),repo:n,from_agent:String(r.from_agent??``),to_agent:r.to_agent?String(r.to_agent):null,task_id:r.task_id?String(r.task_id):null,task_code:r.task_code?String(r.task_code):null,summary:String(r.summary??``),context:r.context??{},status:String(r.status??`pending`),created_at:String(r.created_at??``),updated_at:String(r.updated_at??r.created_at??``),expires_at:r.expires_at?String(r.expires_at):null}}function wT(){let e=N({scene:null,loading:!1,error:null,lastUpdated:0,repoCount:0}),t=null,n=!1,r=null;async function i(){if(n||!r)return;let t=P(to).map(e=>e.repo);if(t.length===0){e.update(e=>({...e,loading:!1}));return}n=!0;try{let n=await Promise.allSettled(t.map(e=>Promise.allSettled([Ro.tasks({repo:e,status:`in_progress`,pageSize:10}),Ro.tasks({repo:e,status:`pending`,pageSize:8}),Ro.tasks({repo:e,status:`blocked`,pageSize:4}),Ro.coordinationClaims({repo:e,active_only:!0,pageSize:50}),Ro.callTool(`handoff-list`,{repo:e,status:`pending`,limit:10,structured:!0})]))),i=[],a=[],o=[];t.forEach((e,t)=>{let r=n[t];if(r.status===`rejected`)return;let[s,c,l,u,d]=r.value;if(s.status===`fulfilled`&&i.push(...s.value.tasks??[]),c.status===`fulfilled`&&i.push(...c.value.tasks??[]),l.status===`fulfilled`&&i.push(...l.value.tasks??[]),u.status===`fulfilled`&&a.push(...u.value.claims??[]),d.status===`fulfilled`){let t=ST(d.value),n=t?.handoffs?.columns??[],r=t?.handoffs?.rows??[];o.push(...r.map(t=>CT(n,t,e)))}});let s=Array.from(new Map(i.map(e=>[e.id,e])).values());e.update(e=>({...e,scene:xT(s,a,o,e.scene,r),loading:!1,error:null,lastUpdated:Date.now(),repoCount:t.length}))}catch(t){e.update(e=>({...e,loading:!1,error:t instanceof Error?t.message:`Failed to load arena data`}))}finally{n=!1}}function a(e){r=e}function o(n){r=n,e.update(e=>({...e,loading:!0})),i(),t!==null&&clearInterval(t),t=setInterval(()=>void i(),2500)}function s(){t!==null&&(clearInterval(t),t=null),n=!1}return{subscribe:e.subscribe,start:o,stop:s,setLayout:a,refresh:i}}var TT=85,ET=50,DT=6,OT=[2800,5e3],kT=[600,1600],AT=100,jT=800,MT=600;function NT(e){if(!e)return[0,0,0];let t=e.replace(`#`,``);t.length===3?t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]:t.length===8&&(t=t.slice(0,6));let n=parseInt(t,16);return[n>>16&255,n>>8&255,n&255]}function PT(e,t){let[n,r,i]=NT(e);return`rgb(${Math.min(255,n+t)},${Math.min(255,r+t)},${Math.min(255,i+t)})`}function FT(e,t){let[n,r,i]=NT(e);return`rgb(${Math.max(0,n-t)},${Math.max(0,r-t)},${Math.max(0,i-t)})`}function IT(e,t){let[n,r,i]=NT(e);return`rgba(${n},${r},${i},${t})`}function LT(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return t}function RT(e,t){return Math.abs(Math.sin(e*127.1+t*311.7)*43758.5453)%1}function $(e,t,n,r,i,a){a=Math.min(a,r/2,i/2),e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+r-a,n),e.arcTo(t+r,n,t+r,n+a,a),e.lineTo(t+r,n+i-a),e.arcTo(t+r,n+i,t+r-a,n+i,a),e.lineTo(t+a,n+i),e.arcTo(t,n+i,t,n+i-a,a),e.lineTo(t,n+a),e.arcTo(t,n,t+a,n,a),e.closePath()}var zT=[`#1a0a00`,`#2d1a00`,`#0f0f0f`,`#4a2d00`,`#8B4513`,`#d4a800`,`#c0392b`,`#7b2d8b`,`#1a3a5c`,`#2d4a1a`],BT=[`#f5c89a`,`#e8a870`,`#d4875a`,`#c06840`,`#8B5e3c`,`#6b3d28`],VT=[`#1e3a5f`,`#2d4a1a`,`#3d2a1a`,`#2a1a3d`,`#1a3d3d`,`#3d1a2a`,`#2a2a3d`],HT={male_nurse:`#1e6e9e`,female_nurse:`#2d8e6e`,staff1:`#5a3e8a`,staff2:`#8a5a3e`},UT={male_nurse:`#1a0a00`,female_nurse:`#4a2d00`,staff1:`#0f0f0f`,staff2:`#2d1a00`},WT={male_nurse:`#e8a870`,female_nurse:`#f5c89a`,staff1:`#d4875a`,staff2:`#c06840`},GT=class{canvas;ctx;scene=null;layout=null;isDark=!1;hoveredId=null;rafId=0;ts=0;prevTs=0;wander=new Map;constructor(e){this.canvas=e,this.ctx=e.getContext(`2d`)}update(e,t,n){this.scene=e,this.layout=t,this.isDark=n}setHovered(e){this.hoveredId=e}start(){this.rafId=requestAnimationFrame(this.loop)}stop(){cancelAnimationFrame(this.rafId)}hitTestAgent(e,t){if(!this.scene)return null;for(let n of this.scene.agents.values()){let r=e-n.x,i=t-n.y;if(r*r+i*i<=196)return n.id}return null}loop=e=>{let t=Math.min((e-this.prevTs)/1e3,.05);if(this.prevTs=e,this.ts=e,this.scene&&this.layout){let n=yT(this.layout.canvasWidth,this.layout.canvasHeight),r=n.find(e=>e.id===`in_progress`)||n[0];this.updateAgents(t,r,e)}this.render(),this.rafId=requestAnimationFrame(this.loop)};updateAgents(e,t,n){if(this.scene)for(let r of this.scene.agents.values()){if(r.handoffAnim){this.updateHandoffAnim(r,e,n);continue}if(r.state===`idle`){let e=this.wander.get(r.id);if(e||(e={nextPickAt:n},this.wander.set(r.id,e)),n>=e.nextPickAt){r.targetX=t.x+22+Math.random()*(t.w-44),r.targetY=t.y+26+22+Math.random()*(t.h-26-44);let i=kT[0]+Math.random()*(kT[1]-kT[0]),a=OT[0]+Math.random()*(OT[1]-OT[0]);e.nextPickAt=n+i+a}if(Math.random()<.005){let e=[`up`,`down`,`left`,`right`];r.facing=e[Math.floor(Math.random()*e.length)]}}else this.wander.delete(r.id);let i=r.targetX-r.x,a=r.targetY-r.y,o=Math.hypot(i,a);if(o<DT)r.vx*=.75,r.vy*=.75,Math.abs(r.vx)<.5&&(r.vx=0),Math.abs(r.vy)<.5&&(r.vy=0);else{let e=r.state===`idle`?ET:TT,t=o<50?o/50*e+8:e;r.vx+=(i/o*t-r.vx)*.1,r.vy+=(a/o*t-r.vy)*.1}r.x+=r.vx*e,r.y+=r.vy*e;let s=Math.hypot(r.vx,r.vy);s>5?(r.walkPhase=(r.walkPhase+e*s*.07)%(Math.PI*2),r.facing=Math.abs(r.vx)>Math.abs(r.vy)?r.vx>0?`right`:`left`:r.vy>0?`down`:`up`):r.walkPhase=r.walkPhase>.05?r.walkPhase*.85:0}}updateHandoffAnim(e,t,n){let r=e.handoffAnim,i=n-r.phaseStartTs;switch(r.phase){case`pickup`:e.vx=0,e.vy=0,e.walkPhase=0,i>=jT&&(r.phase=`moving`,r.phaseStartTs=n,r.progress=0);break;case`moving`:{let i=Math.hypot(r.endX-r.startX,r.endY-r.startY),a=i/AT;r.progress=Math.min(1,r.progress+t/a);let o=r.progress,s=o<.5?2*o*o:1-(-2*o+2)**2/2;e.x=r.startX+(r.endX-r.startX)*s,e.y=r.startY+(r.endY-r.startY)*s,e.vx=0,e.vy=0;let c=t/a*i;r.wheelAngle=(r.wheelAngle+c*.15)%(Math.PI*2),r.helperWalkPhase=(r.helperWalkPhase+t*AT*.08)%(Math.PI*2),r.stepBounce=Math.sin(r.helperWalkPhase*2)*1.5;let l=r.endX-r.startX,u=r.endY-r.startY;r.helperFacing=Math.abs(l)>Math.abs(u)?l>0?`right`:`left`:u>0?`down`:`up`,r.progress>=1&&(r.phase=`arrive`,r.phaseStartTs=n,e.x=r.endX,e.y=r.endY);break}case`arrive`:e.x=r.endX,e.y=r.endY,e.vx=0,e.vy=0,e.walkPhase=0,r.helperWalkPhase=r.helperWalkPhase>.05?r.helperWalkPhase*.92:0,i>=MT&&(r.phase=`resting`,r.phaseStartTs=n,e.targetX=r.endX,e.targetY=r.endY);break;case`resting`:e.x=r.endX,e.y=r.endY,e.vx=0,e.vy=0,e.walkPhase=0;break}}render(){let{canvas:e,ctx:t,scene:n,layout:r,isDark:i,ts:a}=this;if(!r)return;let o=yT(r.canvasWidth,r.canvasHeight);t.clearRect(0,0,e.width,e.height),this.drawGlobalFloor(i);for(let e of o)this.drawRoom(e,i);if(!n)return;let s=Array.from(n.tasks.values()).sort((e,t)=>e.y-t.y);for(let e of s)this.drawWorkstation(e,i,a);this.drawClaimLinks(n,a),this.drawHandoffBeams(n,a);for(let e of n.agents.values())e.handoffAnim&&this.drawHandoffTrail(e,i,a);let c=Array.from(n.agents.values()).sort((e,t)=>e.y-t.y||(e.id===this.hoveredId?1:-1));for(let e of c)e.handoffAnim?this.drawHandoffGroup(e,i,a):this.drawCharacter(e,i,a)}drawGlobalFloor(e){let{ctx:t,canvas:n}=this;t.fillStyle=e?`#0a0e1a`:`#dde3ed`,t.fillRect(0,0,n.width,n.height),t.strokeStyle=e?`rgba(255,255,255,0.02)`:`rgba(0,0,0,0.03)`,t.lineWidth=.5;for(let e=0;e<n.width;e+=24)t.beginPath(),t.moveTo(e,0),t.lineTo(e,n.height),t.stroke();for(let e=0;e<n.height;e+=24)t.beginPath(),t.moveTo(0,e),t.lineTo(n.width,e),t.stroke()}drawRoom(e,t){let{ctx:n}=this,{x:r,y:i,w:a,h:o,color:s,id:c}=e;switch(n.save(),$(n,r,i,a,o,10),n.clip(),c){case`in_progress`:this.drawPlazaFloor(n,r,i,a,o,t);break;case`backlog`:this.drawDirtFloor(n,r,i,a,o,`#5b3a6e`,t);break;case`pending`:this.drawDirtFloor(n,r,i,a,o,`#a68246`,t);break;case`blocked`:this.drawDirtFloor(n,r,i,a,o,`#8b2a2a`,t);break;case`burnout`:this.drawCleanTileFloor(n,r,i,a,o,t);break;case`completed`:this.drawGrassFloor(n,r,i,a,o,t);break;default:this.drawWoodPlankFloor(n,r,i,a,o,t);break}let l=r+a/2,u=i+o*.35,d=n.createRadialGradient(l,u,0,l,u,Math.max(a,o)*.85);d.addColorStop(0,IT(s,t?.12:.08)),d.addColorStop(1,`rgba(0,0,0,0)`),n.fillStyle=d,n.fillRect(r,i,a,o),n.restore(),this.drawWall(n,r,i,a,t,s),n.strokeStyle=IT(s,t?.45:.35),n.lineWidth=1.5,$(n,r,i,a,o,10),n.stroke(),this.drawRoomDecor(n,e,t),this.drawZoneLabel(n,e,t)}drawPlazaFloor(e,t,n,r,i,a){let o=a?`#2e3540`:`#b0b8c4`,s=a?`#262d36`:`#a0a8b4`;e.fillStyle=o,e.fillRect(t,n,r,i);for(let o=Math.floor(t/24)*24;o<t+r;o+=24)for(let t=Math.floor(n/24)*24;t<n+i;t+=24)Math.round(o/24)+Math.round(t/24)&1||(e.fillStyle=s,e.fillRect(o,t,24,24)),RT(o,t)>.8&&(e.strokeStyle=a?`rgba(0,0,0,0.3)`:`rgba(0,0,0,0.1)`,e.lineWidth=1,e.beginPath(),e.moveTo(o+2,t+2),e.lineTo(o+24/2,t+24/2),e.stroke())}drawDirtFloor(e,t,n,r,i,a,o){e.fillStyle=a,e.fillRect(t,n,r,i);for(let a=t;a<t+r;a+=16)for(let t=n;t<n+i;t+=16){let n=RT(a,t);n>.5&&(e.fillStyle=o?`rgba(0,0,0,0.15)`:`rgba(255,255,255,0.1)`,e.beginPath(),e.arc(a+n*10,t+n*10,2+n*2,0,Math.PI*2),e.fill())}}drawGrassFloor(e,t,n,r,i,a){e.fillStyle=a?`#1a4020`:`#4ade80`,e.fillRect(t,n,r,i),e.strokeStyle=a?`rgba(0,0,0,0.2)`:`rgba(0,0,0,0.1)`;for(let a=t;a<t+r;a+=12)for(let t=n;t<n+i;t+=12){let n=RT(a,t);n>.4&&(e.beginPath(),e.moveTo(a+n*5,t+8),e.lineTo(a+n*5+2,t+2),e.lineTo(a+n*5+4,t+8),e.stroke())}}drawWoodPlankFloor(e,t,n,r,i,a){let o=a?30:180,s=a?22:140,c=a?12:80;e.fillStyle=`rgb(${o},${s},${c})`,e.fillRect(t,n,r,i);for(let l=Math.floor(n/9)*9;l<n+i;l+=9){let n=Math.round(l/9),i=(RT(n,0)*30-15)*(a?.8:.6);e.fillStyle=`rgb(${Math.round(Math.min(255,Math.max(0,o+i)))},${Math.round(Math.min(255,Math.max(0,s+i)))},${Math.round(Math.min(255,Math.max(0,c+i)))})`,e.fillRect(t,l,r,9),e.strokeStyle=a?`rgba(0,0,0,0.2)`:`rgba(0,0,0,0.07)`,e.lineWidth=.5,e.beginPath(),e.moveTo(t,l),e.lineTo(t+r,l),e.stroke();let u=n%2*55+RT(n,1)*40;for(let i=t+u;i<t+r;i+=80+RT(n,i)*20)e.beginPath(),e.moveTo(i,l),e.lineTo(i,l+9),e.stroke()}}drawCarpetFloor(e,t,n,r,i,a,o){e.fillStyle=o?`#100d18`:`#1a1535`,e.fillRect(t,n,r,i),e.strokeStyle=IT(a,.06),e.lineWidth=1;for(let a=-i;a<r+i;a+=8)e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+a+i,n+i),e.stroke();e.strokeStyle=o?`rgba(255,255,255,0.025)`:`rgba(255,255,255,0.04)`,e.lineWidth=.5;for(let a=t;a<t+r;a+=12)e.beginPath(),e.moveTo(a,n),e.lineTo(a,n+i),e.stroke();for(let a=n;a<n+i;a+=12)e.beginPath(),e.moveTo(t,a),e.lineTo(t+r,a),e.stroke()}drawCrackedTileFloor(e,t,n,r,i,a){e.fillStyle=a?`#1c1410`:`#c8b89a`,e.fillRect(t,n,r,i);for(let o=Math.floor(t/18)*18;o<t+r;o+=18)for(let t=Math.floor(n/18)*18;t<n+i;t+=18){let n=RT(Math.round(o/18),Math.round(t/18)),r=(n*30-15)*(a?.7:.5);e.fillStyle=a?`rgba(255,${100+r},${50+r},0.04)`:`rgba(180,${140+r},${100+r},0.3)`,e.fillRect(o,t,18,18),n>.85&&(e.strokeStyle=a?`rgba(0,0,0,0.6)`:`rgba(100,80,60,0.5)`,e.lineWidth=.75,e.beginPath(),e.moveTo(o+n*18,t+2),e.lineTo(o+18/2+n*5,t+18/2),e.lineTo(o+18*.8,t+18-2),e.stroke())}e.strokeStyle=a?`rgba(0,0,0,0.5)`:`rgba(0,0,0,0.12)`,e.lineWidth=1;for(let a=Math.floor(t/18)*18;a<=t+r;a+=18)e.beginPath(),e.moveTo(a,n),e.lineTo(a,n+i),e.stroke();for(let a=Math.floor(n/18)*18;a<=n+i;a+=18)e.beginPath(),e.moveTo(t,a),e.lineTo(t+r,a),e.stroke()}drawCleanTileFloor(e,t,n,r,i,a){let o=a?`#1a2530`:`#f0f4f8`,s=a?`#1f2d3a`:`#e8eef4`;e.fillStyle=o,e.fillRect(t,n,r,i);for(let o=Math.floor(t/22)*22;o<t+r;o+=22)for(let t=Math.floor(n/22)*22;t<n+i;t+=22)Math.round(o/22)+Math.round(t/22)&1||(e.fillStyle=s,e.fillRect(o+1,t+1,20,20),e.fillStyle=a?`rgba(255,255,255,0.04)`:`rgba(255,255,255,0.6)`,e.fillRect(o+3,t+3,5,5));e.strokeStyle=a?`rgba(255,255,255,0.04)`:`rgba(0,0,0,0.06)`,e.lineWidth=.75;for(let a=Math.floor(t/22)*22;a<=t+r;a+=22)e.beginPath(),e.moveTo(a,n),e.lineTo(a,n+i),e.stroke();for(let a=Math.floor(n/22)*22;a<=n+i;a+=22)e.beginPath(),e.moveTo(t,a),e.lineTo(t+r,a),e.stroke()}drawConcreteFloor(e,t,n,r,i,a){e.fillStyle=a?`#141418`:`#b8bec8`,e.fillRect(t,n,r,i),e.strokeStyle=a?`rgba(255,255,255,0.03)`:`rgba(255,255,255,0.15)`,e.lineWidth=1;for(let a=n;a<n+i;a+=4)RT(0,Math.round(a))>.5&&(e.beginPath(),e.moveTo(t,a),e.lineTo(t+r,a),e.stroke());e.strokeStyle=a?`rgba(0,0,0,0.4)`:`rgba(0,0,0,0.1)`,e.lineWidth=1.5;for(let a=n+(80-(n%80||80));a<n+i;a+=80)e.beginPath(),e.moveTo(t,a),e.lineTo(t+r,a),e.stroke()}drawWall(e,t,n,r,i,a){e.fillStyle=i?`#1c2130`:`#c4cad6`,$(e,t,n,r,11,0),e.fill(),e.strokeStyle=i?`rgba(255,255,255,0.05)`:`rgba(0,0,0,0.06)`,e.lineWidth=.75;for(let i=t+24;i<t+r;i+=24)e.beginPath(),e.moveTo(i,n),e.lineTo(i,n+11),e.stroke();e.fillStyle=IT(a,.4),e.fillRect(t,n,r,2.5);let o=e.createLinearGradient(t,n+11,t,n+11+8);o.addColorStop(0,`rgba(0,0,0,0.28)`),o.addColorStop(1,`rgba(0,0,0,0)`),e.fillStyle=o,e.fillRect(t,n+11,r,8),e.fillStyle=i?`#253040`:`#b8bfc9`,e.fillRect(t,n,6,11),e.fillRect(t+r-6,n,6,11)}drawZoneLabel(e,t,n){let{x:r,y:i,w:a,color:o,label:s}=t,c=Math.min(a-16,92),l=r+9,u=i+3;e.fillStyle=IT(o,n?.25:.18),$(e,l,u,c,16,5),e.fill(),e.strokeStyle=IT(o,.6),e.lineWidth=.75,$(e,l,u,c,16,5),e.stroke(),e.fillStyle=o,e.font=`bold 8px system-ui,sans-serif`,e.textAlign=`left`,e.textBaseline=`middle`,e.fillText(s.toUpperCase(),l+6,u+16/2)}drawRoomDecor(e,t,n){let{x:r,y:i,w:a,h:o,id:s}=t;switch(s){case`in_progress`:this.decorWorkspace(e,r,i,a,o,n);break;case`backlog`:this.decorArchive(e,r,i,a,o,n);break;case`pending`:this.decorLobby(e,r,i,a,o,n);break;case`blocked`:this.decorIssues(e,r,i,a,o);break;case`burnout`:this.decorTherapy(e,r,i,a,o,n);break}}decorPlaza(e,t,n,r,i,a){let o=t+r/2,s=n+i/2;e.fillStyle=a?`#1e293b`:`#94a3b8`,e.beginPath(),e.arc(o,s,24,0,Math.PI*2),e.fill(),e.fillStyle=a?`#0ea5e9`:`#38bdf8`,e.beginPath(),e.arc(o,s,20,0,Math.PI*2),e.fill(),e.fillStyle=`rgba(255,255,255,0.4)`,e.beginPath(),e.arc(o,s,8,0,Math.PI*2),e.fill()}decorFence(e,t,n,r,i,a){e.strokeStyle=a?`#452b14`:`#8b5a2b`,e.lineWidth=4,e.strokeRect(t+4,n+4,r-8,i-8)}decorBlocked(e,t,n,r,i,a){this.decorFence(e,t,n,r,i,a),e.fillStyle=`#f97316`,[[t+20,n+i-20],[t+40,n+i-20]].forEach(([t,n])=>{e.beginPath(),e.moveTo(t,n-10),e.lineTo(t+6,n),e.lineTo(t-6,n),e.fill()})}decorGarden(e,t,n,r,i,a){e.fillStyle=a?`#064e3b`:`#166534`,e.fillRect(t+10,n+10,20,20),e.beginPath(),e.arc(t+r-20,n+i-20,15,0,Math.PI*2),e.fill()}decorLobby(e,t,n,r,i,a){let o=t+r/2-28,s=n+i-55;this.drawSofa(e,o,s,56,a),this.drawCoffeeTable(e,t+r/2-14,n+i-32,a),this.drawPotPlant(e,t+8,n+i-18,a),this.drawPotPlant(e,t+r-18,n+i-18,a),this.drawPotPlant(e,t+8,n+28,a);let c=Math.min(r-20,70);this.drawReceptionDesk(e,t+r/2-c/2,n+24,c,a),this.drawCeilingLamp(e,t+r/2,n+14,a,this.ts)}decorInbox(e,t,n,r,i,a){this.drawLetterSorter(e,t+r-28,n+20,a),this.drawClock(e,t+18,n+20,a)}decorWorkspace(e,t,n,r,i,a){this.drawPowerStrip(e,t+12,n+i-16,Math.min(r-24,60),a),this.drawWhiteboard(e,t+r-36,n+18,a),this.drawWaterDispenser(e,t+20,n+12,a),this.drawFlowerVase(e,t+r/2,n+24,a)}decorIssues(e,t,n,r,i){e.save(),e.globalAlpha=.25,e.strokeStyle=`#f59e0b`,e.lineWidth=4,e.setLineDash([8,8]),e.beginPath(),e.moveTo(t,n+i-8),e.lineTo(t+r,n+i-8),e.stroke(),e.setLineDash([]),e.restore(),this.drawHazardSign(e,t+r/2-10,n+16)}decorDone(e,t,n,r,i,a){this.drawTrophyShelf(e,t+10,n+20,a,this.ts),this.drawPotPlant(e,t+r-18,n+i-20,a)}decorArchive(e,t,n,r,i,a){for(let i=t+10;i<t+r-22;i+=26)this.drawFilingCabinet(e,i,n+18,a);this.drawPotPlant(e,t+r-15,n+i-20,a)}drawSofa(e,t,n,r,i){let a=i?`#2d3a4a`:`#8b9eb5`,o=i?`#3a4d62`:`#a8bdd4`,s=i?`#253040`:`#7b8ea5`;e.fillStyle=a,$(e,t,n,r,8,3),e.fill(),e.fillStyle=o,$(e,t,n+7,r,10,3),e.fill(),e.fillStyle=s,$(e,t-4,n,8,17,3),e.fill(),e.fillStyle=s,$(e,t+r-4,n,8,17,3),e.fill(),e.strokeStyle=i?`rgba(255,255,255,0.07)`:`rgba(0,0,0,0.08)`,e.lineWidth=1,e.beginPath(),e.moveTo(t+r/3,n+7),e.lineTo(t+r/3,n+17),e.stroke(),e.beginPath(),e.moveTo(t+r*2/3,n+7),e.lineTo(t+r*2/3,n+17),e.stroke(),e.fillStyle=i?`#1a2030`:`#6b7c90`,[[t+2,n+15],[t+r-6,n+15]].forEach(([t,n])=>e.fillRect(t,n,4,4))}drawCoffeeTable(e,t,n,r){e.fillStyle=`rgba(0,0,0,0.15)`,e.beginPath(),e.ellipse(t+14,n+6,16,7,0,0,Math.PI*2),e.fill(),e.fillStyle=r?`#2a3545`:`#93a8be`,e.beginPath(),e.ellipse(t+14,n+4,15,6,0,0,Math.PI*2),e.fill(),e.strokeStyle=r?`#3a4a5a`:`#7a96b0`,e.lineWidth=1,e.beginPath(),e.ellipse(t+14,n+4,15,6,0,0,Math.PI*2),e.stroke(),e.fillStyle=`rgba(255,255,255,0.1)`,e.beginPath(),e.ellipse(t+10,n+2,6,2,0,0,Math.PI*2),e.fill()}drawPotPlant(e,t,n,r){e.fillStyle=r?`#4a2d1a`:`#c4825a`,$(e,t-5,n-8,10,9,2),e.fill(),e.strokeStyle=r?`#6b4028`:`#a0643c`,e.lineWidth=.5,$(e,t-5,n-8,10,9,2),e.stroke(),e.fillStyle=r?`#2d1a0a`:`#6b4a28`,e.fillRect(t-4,n-9,8,3);let i=[`#16a34a`,`#15803d`,`#22c55e`,`#166534`];[[-5,-18,4,3,-.3],[-2,-20,4,3,0],[3,-18,4,3,.3],[-7,-14,3.5,2.5,-.5],[5,-14,3.5,2.5,.5]].forEach(([r,a,o,s,c],l)=>{e.save(),e.translate(t+r,n+a),e.rotate(c),e.fillStyle=i[l%i.length],e.beginPath(),e.ellipse(0,0,o,s,0,0,Math.PI*2),e.fill(),e.restore()})}drawReceptionDesk(e,t,n,r,i){e.fillStyle=i?`#1a2535`:`#9aafcc`,$(e,t,n,r,14,4),e.fill(),e.strokeStyle=i?`#2a3a50`:`#7a94b0`,e.lineWidth=1,$(e,t,n,r,14,4),e.stroke(),e.fillStyle=i?`rgba(255,255,255,0.05)`:`rgba(255,255,255,0.35)`,$(e,t+2,n+2,r-4,4,2),e.fill(),e.fillStyle=i?`#0f172a`:`#1e2535`,$(e,t+r/2-8,n-10,16,10,2),e.fill(),e.fillStyle=i?`#1e40af`:`#3b82f6`,$(e,t+r/2-7,n-9,14,8,1),e.fill()}drawCeilingLamp(e,t,n,r,i){e.strokeStyle=r?`#3a4555`:`#6b7a8a`,e.lineWidth=1,e.beginPath(),e.moveTo(t,n-8),e.lineTo(t,n+2),e.stroke(),e.fillStyle=r?`#2a3040`:`#e8d870`,e.beginPath(),e.moveTo(t-10,n+2),e.lineTo(t+10,n+2),e.lineTo(t+8,n+10),e.lineTo(t-8,n+10),e.closePath(),e.fill();let a=.5+.5*Math.sin(i*.0015),o=e.createRadialGradient(t,n+10,0,t,n+10,35+a*5);o.addColorStop(0,r?`rgba(255,240,180,${.15+a*.05})`:`rgba(255,240,180,${.2+a*.05})`),o.addColorStop(1,`rgba(0,0,0,0)`),e.fillStyle=o,e.fillRect(t-40,n+10,80,45)}drawLetterSorter(e,t,n,r){e.fillStyle=r?`#2d3a50`:`#8faac0`,$(e,t,n,22,28,2),e.fill(),e.strokeStyle=r?`#3a4a60`:`#7090a8`,e.lineWidth=.75,[0,7,14,21].forEach(r=>{e.beginPath(),e.moveTo(t+1,n+r),e.lineTo(t+21,n+r),e.stroke()}),[`#ef4444`,`#f59e0b`,`#3b82f6`,`#10b981`].forEach((r,i)=>{e.fillStyle=r+`aa`,$(e,t+2,n+i*7+1,18,5,1),e.fill()})}drawClock(e,t,n,r){e.fillStyle=r?`#1e2840`:`#f0f4fc`,e.beginPath(),e.arc(t,n,9,0,Math.PI*2),e.fill(),e.strokeStyle=r?`#3a4a60`:`#8898b0`,e.lineWidth=1,e.beginPath(),e.arc(t,n,9,0,Math.PI*2),e.stroke(),e.strokeStyle=r?`#5a6a80`:`#8898b0`,e.lineWidth=.75;for(let r=0;r<12;r++){let i=r*Math.PI/6,a=7.5;e.beginPath(),e.moveTo(t+Math.cos(i)*a,n+Math.sin(i)*a),e.lineTo(t+Math.cos(i)*(a-2),n+Math.sin(i)*(a-2)),e.stroke()}let i=new Date,a=i.getMinutes()/60*Math.PI*2-Math.PI/2,o=i.getHours()%12/12*Math.PI*2+i.getMinutes()/60*Math.PI/6-Math.PI/2;e.strokeStyle=r?`#e2e8f0`:`#1e2840`,e.lineWidth=1.5,e.lineCap=`round`,e.beginPath(),e.moveTo(t,n),e.lineTo(t+Math.cos(o)*5,n+Math.sin(o)*5),e.stroke(),e.lineWidth=1,e.beginPath(),e.moveTo(t,n),e.lineTo(t+Math.cos(a)*7,n+Math.sin(a)*7),e.stroke(),e.fillStyle=`#ef4444`,e.beginPath(),e.arc(t,n,1.5,0,Math.PI*2),e.fill()}drawPowerStrip(e,t,n,r,i){e.fillStyle=i?`#1a1a1a`:`#2d2d2d`,$(e,t,n,r,6,3),e.fill(),e.fillStyle=i?`#3a3a3a`:`#4a4a4a`;for(let i=6;i<r-4;i+=10)$(e,t+i,n+1,6,4,2),e.fill()}drawWhiteboard(e,t,n,r){e.fillStyle=r?`#1e2840`:`#f8fafc`,$(e,t,n,28,22,2),e.fill(),e.strokeStyle=r?`#3a4a60`:`#b0bac8`,e.lineWidth=1,$(e,t,n,28,22,2),e.stroke(),[r?`#4ade80`:`#16a34a`,r?`#60a5fa`:`#2563eb`,r?`#f472b6`:`#db2777`].forEach((r,i)=>{e.strokeStyle=r,e.lineWidth=.75,e.beginPath(),e.moveTo(t+3,n+5+i*5),e.lineTo(t+3+8+i*4,n+5+i*5),e.stroke()})}drawHazardSign(e,t,n){e.fillStyle=`#f59e0b`,e.beginPath(),e.moveTo(t+10,n),e.lineTo(t+20,n+16),e.lineTo(t,n+16),e.closePath(),e.fill(),e.strokeStyle=`#1a1a1a`,e.lineWidth=1,e.stroke(),e.fillStyle=`#1a1a1a`,e.font=`bold 9px system-ui`,e.textAlign=`center`,e.textBaseline=`bottom`,e.fillText(`!`,t+10,n+15)}drawTrophyShelf(e,t,n,r,i){e.fillStyle=r?`#2d1a08`:`#c4825a`,$(e,t,n+20,50,5,2),e.fill(),[[`#f59e0b`,t+5],[`#94a3b8`,t+20],[`#cd7f32`,t+35]].forEach(([t,r])=>{e.fillStyle=t,e.beginPath(),e.arc(r+5,n+13,5,Math.PI,0),e.fill(),e.fillRect(r+3,n+13,4,8),$(e,r,n+20,10,4,2),e.fill()}),e.fillStyle=`rgba(245,158,11,${.08+(.5+.5*Math.sin(i*.002))*.06})`,e.beginPath(),e.ellipse(t+10,n+18,12,6,0,0,Math.PI*2),e.fill()}drawFilingCabinet(e,t,n,r){e.fillStyle=r?`#1e2535`:`#9aaec0`,$(e,t,n,20,28,2),e.fill(),e.strokeStyle=r?`#2d3a50`:`#7a98b0`,e.lineWidth=.75,$(e,t,n,20,28,2),e.stroke(),[0,9,18].forEach(i=>{e.strokeStyle=r?`#3a4a60`:`#5a7898`,e.lineWidth=.5,e.beginPath(),e.moveTo(t+1,n+i+8),e.lineTo(t+19,n+i+8),e.stroke(),e.fillStyle=r?`#4a5a70`:`#4a6888`,$(e,t+7,n+i+3,6,3,2),e.fill()})}drawFlowerVase(e,t,n,r){e.fillStyle=r?`#2d1a08`:`#8b5a2b`,$(e,t-6,n-2,12,10,1),e.fill(),e.fillStyle=r?`#1e3a8a`:`#bfdbfe`,e.beginPath(),e.ellipse(t,n-6,4,6,0,0,Math.PI*2),e.fill();let i=[`#f43f5e`,`#ec4899`,`#d946ef`];[[-3,-12],[3,-11],[0,-14]].forEach(([r,a],o)=>{e.strokeStyle=`#16a34a`,e.lineWidth=1,e.beginPath(),e.moveTo(t,n-10),e.lineTo(t+r,n+a),e.stroke(),e.fillStyle=i[o],e.beginPath(),e.arc(t+r,n+a,2.5,0,Math.PI*2),e.fill()})}drawWaterDispenser(e,t,n,r){e.fillStyle=r?`#1e293b`:`#e2e8f0`,$(e,t,n,14,24,2),e.fill(),e.strokeStyle=r?`#334155`:`#cbd5e1`,e.lineWidth=1,$(e,t,n,14,24,2),e.stroke(),e.fillStyle=r?`#0ea5e955`:`#38bdf855`,$(e,t+2,n-12,10,12,3),e.fill(),e.fillStyle=`#ef4444`,e.fillRect(t+3,n+8,2,3),e.fillStyle=`#3b82f6`,e.fillRect(t+9,n+8,2,3),e.fillStyle=r?`#0f172a`:`#94a3b8`,$(e,t+2,n+14,10,3,1),e.fill()}drawHospitalBed(e,t,n,r){e.fillStyle=r?`#1e293b`:`#cbd5e1`,$(e,t-20,n-10,40,20,3),e.fill(),e.fillStyle=r?`#0f172a`:`#f8fafc`,$(e,t-18,n-8,36,16,2),e.fill(),e.fillStyle=r?`#1e1b4b`:`#e0e7ff`,$(e,t+10,n-6,8,12,2),e.fill(),e.fillStyle=r?`#172554`:`#bfdbfe`,$(e,t-18,n-8,20,16,2),e.fill(),e.strokeStyle=r?`#64748b`:`#94a3b8`,e.lineWidth=2,e.beginPath(),e.moveTo(t+16,n-10),e.lineTo(t+16,n-25),e.stroke(),e.fillStyle=r?`#0ea5e988`:`#38bdf888`,$(e,t+14,n-25,4,6,1),e.fill()}decorTherapy(e,t,n,r,i,a){let o={id:`burnout`,label:`Therapy Room`,x:t,y:n,w:r,h:i,color:`#14b8a6`};for(let t=0;t<6;t++){let n=pT(o,t);this.drawHospitalBed(e,n.x,n.y,a)}this.drawPotPlant(e,t+r-20,n+20,a),this.drawFlowerVase(e,t+20,n+20,a)}drawMonitorActivity(e,t,n,r,i,a,o,s){let{ctx:c}=this,l=!!e.claimedByAgentId,u=LT(e.id),d=s*.001+u%100*.01,f=n+i-6;if(c.save(),$(c,t,n,r,i,3),c.clip(),e.status===`blocked`){c.fillStyle=o?`#2a0f18`:`#3f111d`,c.fillRect(t,n,r,i),c.fillStyle=`rgba(239,68,68,0.45)`;for(let e=0;e<4;e++){let i=n+4+e*4;c.fillRect(t+4,i,r-8-(e+u)%9,1.6)}c.fillStyle=`rgba(255,255,255,${.25+Math.sin(d*5)*.12})`,c.fillRect(t+4,f-3,7,2),c.restore();return}if(l){c.fillStyle=o?`rgba(2,6,23,0.35)`:`rgba(15,23,42,0.22)`,$(c,t+3,n+3,r-6,f-n-4,2),c.fill(),c.fillStyle=`rgba(255,255,255,0.22)`,c.fillRect(t+5,n+5,r-10,1.4),c.fillStyle=`rgba(15,23,42,0.25)`,c.fillRect(t+5,n+8,7,f-n-10),c.fillStyle=`rgba(255,255,255,0.16)`,c.fillRect(t+15,n+8,r-20,f-n-10);let e=Math.floor(s/180)%6;for(let i=0;i<4;i++){let a=n+9+i*3,o=(u>>i)%9/10,s=Math.sin(d*2+i)*.5+.5,l=7+(r-25)*(.35+o*.35+s*.18);c.fillStyle=i===e%4?`rgba(255,255,255,0.78)`:`rgba(255,255,255,${.22+i*.08})`,c.fillRect(t+17,a,Math.min(r-22,l),1.4)}let i=t+18+(Math.floor(s/120)+u)%Math.max(1,r-25);Math.floor(s/300)%2==0&&(c.fillStyle=`#ffffff`,c.fillRect(i,n+17,1,4)),c.fillStyle=`rgba(255,255,255,0.2)`,c.fillRect(t+5,f-3,r-10,1.5),c.fillStyle=PT(a,55),c.fillRect(t+5,f-3,(Math.sin(d)*.5+.5)*(r-10)|0,1.5),c.restore();return}if(e.status===`pending`){c.fillStyle=o?`rgba(15,23,42,0.45)`:`rgba(255,255,255,0.16)`,$(c,t+4,n+4,r-8,f-n-5,2),c.fill(),c.fillStyle=`rgba(255,255,255,0.25)`,c.fillRect(t+6,n+6,r-12,2);for(let e=0;e<3;e++)c.fillStyle=`rgba(255,255,255,${.14+e*.06})`,c.fillRect(t+7,n+11+e*3,r-15-e*5,1.2);let e=n+9+(s*.018+u)%Math.max(1,f-n-12);c.fillStyle=`rgba(56,189,248,0.28)`,c.fillRect(t+5,e,r-10,1.2),c.restore();return}c.strokeStyle=o?`rgba(148,163,184,0.1)`:`rgba(255,255,255,0.08)`,c.lineWidth=.5;for(let e=t+5;e<t+r-4;e+=5)c.beginPath(),c.moveTo(e,n+4),c.lineTo(e,f-2),c.stroke();c.restore()}drawWorkstation(e,t,n){let{ctx:r}=this,{x:i,y:a,status:o,taskCode:s,title:c,claimedByAgentId:l,hasPendingHandoff:u,repo:d}=e,f=eT[o]??`#64748b`,p=!!l,m=a+14/2+4;r.fillStyle=t?`#1e2d3a`:`#7a98b5`,r.beginPath(),r.arc(i,m+3,8,0,Math.PI*2),r.fill(),r.fillStyle=t?`#162435`:`#6888a8`,r.fillRect(i-6,m-2,12,8),$(r,i-5,m-9,10,9,2),r.fill(),r.fillStyle=`rgba(0,0,0,0.18)`,$(r,i-50/2+3,a-14/2+5,50,16,4),r.fill();let h=r.createLinearGradient(i-50/2,a-14/2,i+50/2,a+14/2);h.addColorStop(0,t?`#1e2840`:`#d4dce8`),h.addColorStop(1,t?`#18202e`:`#c0ccd8`),r.fillStyle=h,$(r,i-50/2,a-14/2,50,14,4),r.fill(),r.strokeStyle=t?`#2d3a50`:`#a0b0c0`,r.lineWidth=1,$(r,i-50/2,a-14/2,50,14,4),r.stroke(),r.fillStyle=t?`#0d1520`:`#8090a8`,$(r,i-10,a-2,20,5,2),r.fill(),r.fillStyle=t?`rgba(255,255,255,0.05)`:`rgba(255,255,255,0.3)`,[[i-9,a-1,18,1.5],[i-8,a+1.5,16,1.5]].forEach(([e,t,n,i])=>{for(let a=0;a<5;a++)$(r,e+n/5*a+.5,t,n/5-1,i,.5),r.fill()}),r.fillStyle=t?`#0d1520`:`#8090a8`,r.beginPath(),r.ellipse(i+14,a,3,4,0,0,Math.PI*2),r.fill(),r.strokeStyle=t?`rgba(255,255,255,0.08)`:`rgba(0,0,0,0.1)`,r.lineWidth=.5,r.beginPath(),r.moveTo(i+14,a-2),r.lineTo(i+14,a+2),r.stroke(),r.fillStyle=t?`#2d3a50`:`#8090a8`,r.fillRect(i-1.5,a-14/2-7,3,8);let g=a-14/2-20-6;if(r.fillStyle=t?`#111827`:`#1f2937`,$(r,i-34/2-3,g-3,40,26,5),r.fill(),p){let e=r.createLinearGradient(i-34/2,g,i+34/2,g+20);e.addColorStop(0,PT(f,50)),e.addColorStop(1,f),r.fillStyle=e,p&&(r.shadowColor=f+`99`,r.shadowBlur=10)}else r.fillStyle=t?`#0f1929`:`#1e2d3a`;if($(r,i-34/2,g,34,20,3),r.fill(),r.shadowBlur=0,r.fillStyle=`rgba(255,255,255,0.12)`,$(r,i-34/2,g,34,20/2.5,3),r.fill(),this.drawMonitorActivity(e,i-34/2,g,34,20,f,t,n),r.fillStyle=p?`rgba(255,255,255,0.9)`:t?`#374151`:`#6b7280`,r.font=`bold 5.5px monospace`,r.textAlign=`center`,r.textBaseline=`bottom`,r.fillText(`${d.split(`/`).pop()?.slice(0,5)}·${s}`.slice(0,12),i,g+20-1),r.fillStyle=t?`rgba(148,163,184,0.65)`:`rgba(71,85,105,0.65)`,r.font=`5.5px system-ui,sans-serif`,r.textAlign=`center`,r.textBaseline=`top`,r.fillText(c.slice(0,12),i,a+14/2+2),u){let e=i+34/2,t=g-1;r.fillStyle=`#f59e0b`,r.shadowColor=`#f59e0b`,r.shadowBlur=8,r.beginPath(),r.arc(e,t,5,0,Math.PI*2),r.fill(),r.shadowBlur=0,r.strokeStyle=`#ffffff`,r.lineWidth=1.5,r.beginPath(),r.arc(e,t,5,0,Math.PI*2),r.stroke(),r.fillStyle=`#1a1a1a`,r.font=`bold 6.5px system-ui`,r.textAlign=`center`,r.textBaseline=`middle`,r.fillText(`!`,e,t)}}drawClaimLinks(e,t){let{ctx:n}=this;for(let r of e.agents.values())for(let i of r.claimedTaskIds){let a=e.tasks.get(i);if(!a)continue;let o=n.createLinearGradient(r.x,r.y,a.x,a.y);o.addColorStop(0,r.color+`cc`),o.addColorStop(1,(eT[a.status]??`#64748b`)+`44`),n.strokeStyle=o,n.lineWidth=1.5,n.setLineDash([5,5]),n.lineDashOffset=-(t*.022)%10,n.beginPath(),n.moveTo(r.x,r.y),n.lineTo(a.x,a.y),n.stroke()}n.setLineDash([]),n.lineDashOffset=0}drawHandoffBeams(e,t){let{ctx:n}=this;for(let r of e.handoffs){let i=e.agents.get(r.fromAgentId);if(!i)continue;let a,o;if(r.toAgentId){let t=e.agents.get(r.toAgentId);if(!t)continue;a=t.x,o=t.y}else if(r.taskId){let t=e.tasks.get(r.taskId);if(!t)continue;a=t.x,o=t.y}else continue;n.strokeStyle=`#f59e0b88`,n.lineWidth=2.5,n.setLineDash([8,5]),n.lineDashOffset=-(t*.07)%13,n.beginPath(),n.moveTo(i.x,i.y),n.lineTo(a,o),n.stroke(),n.setLineDash([]),n.lineDashOffset=0;let s=t%1600/1600,c=i.x+(a-i.x)*s,l=i.y+(o-i.y)*s;n.fillStyle=`#f59e0b`,n.shadowColor=`#f59e0b`,n.shadowBlur=8,n.beginPath(),n.arc(c,l,4,0,Math.PI*2),n.fill(),n.shadowBlur=0}}drawHandoffTrail(e,t,n){let{ctx:r}=this,i=e.handoffAnim;if(r.save(),r.strokeStyle=t?`rgba(20, 184, 166, 0.35)`:`rgba(20, 184, 166, 0.45)`,r.lineWidth=2,r.setLineDash([6,5]),r.lineDashOffset=-(n*.03)%11,r.beginPath(),r.moveTo(i.startX,i.startY),r.lineTo(i.endX,i.endY),r.stroke(),r.setLineDash([]),r.lineDashOffset=0,i.phase===`moving`){let e=n%2e3/2e3,t=i.startX+(i.endX-i.startX)*e,a=i.startY+(i.endY-i.startY)*e;r.fillStyle=`#14b8a6`,r.shadowColor=`#14b8a6`,r.shadowBlur=6,r.beginPath(),r.arc(t,a,3,0,Math.PI*2),r.fill(),r.shadowBlur=0}i.phase!==`arrive`&&(r.strokeStyle=`rgba(20, 184, 166, ${.4+.3*Math.sin(n*.004)})`,r.lineWidth=1,r.beginPath(),r.arc(i.endX,i.endY,8,0,Math.PI*2),r.stroke(),r.beginPath(),r.moveTo(i.endX-4,i.endY),r.lineTo(i.endX+4,i.endY),r.stroke(),r.beginPath(),r.moveTo(i.endX,i.endY-4),r.lineTo(i.endX,i.endY+4),r.stroke()),r.restore()}drawWheelchair(e,t,n,r,i){e.save(),e.translate(t,n),e.fillStyle=`rgba(0,0,0,0.2)`,e.beginPath(),e.ellipse(0,3,14,6,0,0,Math.PI*2),e.fill(),e.fillStyle=i?`#2d3a50`:`#7a8ea0`,$(e,-10,-12,20,18,3),e.fill(),e.strokeStyle=i?`#4a5a70`:`#5a7090`,e.lineWidth=1,$(e,-10,-12,20,18,3),e.stroke(),e.fillStyle=i?`#1e3a5f`:`#3b82f6`,$(e,-8,-6,16,10,2),e.fill(),e.fillStyle=i?`#1e3055`:`#2563eb`,$(e,-8,-12,16,7,2),e.fill(),e.fillStyle=i?`#3a4a60`:`#6a7a90`,$(e,-12,-10,3,14,1),e.fill(),$(e,9,-10,3,14,1),e.fill(),[-9,9].forEach(t=>{e.strokeStyle=i?`#1a1a2a`:`#333`,e.lineWidth=2.5,e.beginPath(),e.arc(t,4,5,0,Math.PI*2),e.stroke(),e.fillStyle=i?`#4a5a70`:`#aabbc0`,e.beginPath(),e.arc(t,4,3.5,0,Math.PI*2),e.fill(),e.strokeStyle=i?`#2a3a50`:`#7a8a9a`,e.lineWidth=.75;for(let n=0;n<4;n++){let i=r+n*Math.PI/2;e.beginPath(),e.moveTo(t,4),e.lineTo(t+Math.cos(i)*4,4+Math.sin(i)*4),e.stroke()}}),[-5,5].forEach(t=>{e.fillStyle=i?`#1a1a2a`:`#333`,e.beginPath(),e.arc(t,-13,2,0,Math.PI*2),e.fill(),e.fillStyle=i?`#4a5a70`:`#999`,e.beginPath(),e.arc(t,-13,1,0,Math.PI*2),e.fill()}),e.fillStyle=i?`#3a4a60`:`#5a7090`,$(e,-6,5,12,3,1),e.fill(),e.restore()}drawStretcher(e,t,n,r,i,a){e.save(),e.translate(t,n),e.fillStyle=`rgba(0,0,0,0.18)`,e.beginPath(),e.ellipse(0,4,20,7,0,0,Math.PI*2),e.fill(),e.fillStyle=a?`#2d3a50`:`#8899aa`,$(e,-18,-10,36,16,3),e.fill(),e.strokeStyle=a?`#4a5a70`:`#6a7a90`,e.lineWidth=1,$(e,-18,-10,36,16,3),e.stroke(),e.fillStyle=a?`#1a2535`:`#f0f4f8`,$(e,-16,-8,32,12,2),e.fill(),e.fillStyle=a?`#2a3a5a`:`#e0e7ff`,$(e,10,-6,6,8,2),e.fill();let o=Math.sin(i)*.8;e.fillStyle=a?`#1e3a5f`:`#bfdbfe`,$(e,-15,-7+o,22,10-o*.5,2),e.fill(),e.strokeStyle=a?`rgba(255,255,255,0.06)`:`rgba(0,0,0,0.08)`,e.lineWidth=.5,e.beginPath(),e.moveTo(-5,-7+o),e.lineTo(-5,3-o*.3),e.stroke(),[[-15,5],[15,5],[-15,-11],[15,-11]].forEach(([t,n])=>{e.fillStyle=a?`#1a1a2a`:`#333`,e.beginPath(),e.arc(t,n,3,0,Math.PI*2),e.fill(),e.fillStyle=a?`#4a5a70`:`#999`,e.beginPath(),e.arc(t,n,1.5,0,Math.PI*2),e.fill(),e.strokeStyle=a?`#3a4a5a`:`#777`,e.lineWidth=.5;let i=r;e.beginPath(),e.moveTo(t+Math.cos(i)*3*.5,n+Math.sin(i)*3*.5),e.lineTo(t-Math.cos(i)*3*.5,n-Math.sin(i)*3*.5),e.stroke()}),e.strokeStyle=a?`#5a6a80`:`#7a8a9a`,e.lineWidth=1.5,e.beginPath(),e.moveTo(-16,-10),e.lineTo(16,-10),e.stroke(),e.beginPath(),e.moveTo(-16,6),e.lineTo(16,6),e.stroke(),e.restore()}drawHelperCharacter(e,t,n,r,i,a,o){e.save(),e.translate(t,n),i===`left`&&e.scale(-1,1);let s=HT[r],c=UT[r],l=WT[r],u=a>.1,d=u?Math.sin(a)*4:0,f=u?Math.sin(a+Math.PI)*3:0,p=u?Math.sin(a*2)*.8:0;e.fillStyle=`rgba(0,0,0,0.18)`,e.beginPath(),e.ellipse(0,2,8,3.5,0,0,Math.PI*2),e.fill(),e.fillStyle=o?`#1a2535`:`#334155`,e.save(),e.translate(-2.5,0),e.rotate(d*.08),$(e,-2,-3,4,7,1.5),e.fill(),e.restore(),e.save(),e.translate(2.5,0),e.rotate(-d*.08),$(e,-2,-3,4,7,1.5),e.fill(),e.restore(),e.fillStyle=o?`#0f172a`:`#1e293b`,e.save(),e.translate(-2.5,d*.4),$(e,-2.5,3,5,3,1.5),e.fill(),e.restore(),e.save(),e.translate(2.5,-d*.4),$(e,-2.5,3,5,3,1.5),e.fill(),e.restore();let m=e.createLinearGradient(-5,-20,5,-10);m.addColorStop(0,PT(s,20)),m.addColorStop(1,s),e.fillStyle=m,$(e,-5,-20,10,11,2),e.fill(),(r===`male_nurse`||r===`female_nurse`)&&(e.fillStyle=`rgba(255,255,255,0.5)`,e.fillRect(-1,-17,2,5),e.fillRect(-2.5,-15.5,5,2)),e.save(),e.translate(-6.5,-19),e.rotate(f*.1),e.fillStyle=m,$(e,-1.5,0,3,7,1.5),e.fill(),e.fillStyle=l,e.beginPath(),e.ellipse(0,8,2,1.5,0,0,Math.PI*2),e.fill(),e.restore(),e.save(),e.translate(6.5,-19),e.rotate(-f*.1),e.fillStyle=m,$(e,-1.5,0,3,7,1.5),e.fill(),e.fillStyle=l,e.beginPath(),e.ellipse(0,8,2,1.5,0,0,Math.PI*2),e.fill(),e.restore(),e.fillStyle=l,e.fillRect(-2,-22,4,3);let h=-29+p;e.fillStyle=l,e.beginPath(),e.ellipse(0,h,6.5,7.5,0,0,Math.PI*2),e.fill(),e.fillStyle=c,e.beginPath(),e.ellipse(0,h,6.5,7.5,0,Math.PI,0),e.fill(),(r===`male_nurse`||r===`female_nurse`)&&(e.fillStyle=`#f0f0f0`,$(e,-5,h-8,10,5,2),e.fill(),e.fillStyle=`#ef4444`,e.fillRect(-1,h-7,2,3),e.fillRect(-2,h-6,4,1)),i!==`up`&&(e.fillStyle=`rgba(0,0,0,0.7)`,e.beginPath(),e.arc(-2,h-1,1,0,Math.PI*2),e.fill(),e.beginPath(),e.arc(2,h-1,1,0,Math.PI*2),e.fill(),e.strokeStyle=`rgba(0,0,0,0.4)`,e.lineWidth=.75,e.beginPath(),e.arc(0,h+1.5,2,.1,Math.PI-.1),e.stroke()),e.restore()}drawHandoffGroup(e,t,n){let{ctx:r}=this,i=e.handoffAnim,{x:a,y:o}=e,s=i.endX-i.startX,c=i.endY-i.startY,l=Math.hypot(s,c)||1,u=-s/l,d=-c/l,f=i.vehicle===`wheelchair`?18:22,p=a+u*f,m=o+d*f+i.stepBounce,h=1;if(i.phase===`pickup`){let e=n-i.phaseStartTs;h=Math.min(1,e/400)}else if(i.phase===`arrive`){let e=n-i.phaseStartTs;h=Math.max(0,1-e/MT)}else i.phase===`resting`&&(h=0);if(i.vehicle===`wheelchair`)this.drawWheelchair(r,a,o,i.wheelAngle,t);else{let e=n*.002;this.drawStretcher(r,a,o,i.wheelAngle,e,t)}this.drawPassiveAgent(e,t,n),h>.01&&(r.save(),r.globalAlpha=h,this.drawHelperCharacter(r,p,m,i.helperVariant,i.helperFacing,i.phase===`moving`?i.helperWalkPhase:0,t),r.restore()),r.fillStyle=t?`rgba(226,232,240,0.82)`:`rgba(15,23,42,0.7)`,r.font=`7px system-ui,sans-serif`,r.textAlign=`center`,r.textBaseline=`top`;let g=e.name.length>12?e.name.slice(0,12)+`…`:e.name;r.fillText(g,a,o+(i.vehicle===`stretcher`?14:12)),i.phase===`moving`&&this.drawRollingSFX(r,a,o,i.wheelAngle,i.vehicle,t,n)}drawPassiveAgent(e,t,n){let{ctx:r}=this,i=e.handoffAnim,{x:a,y:o,name:s,color:c}=e,l=LT(s||``),u=zT[l%zT.length]||`#000`,d=BT[(l>>>6)%BT.length]||`#f5c89a`;if(i.vehicle===`wheelchair`)r.save(),r.translate(a,o),r.fillStyle=c||`#64748b`,$(r,-5,-16,10,8,2),r.fill(),r.fillStyle=d,r.beginPath(),r.ellipse(0,-24,6,7,0,0,Math.PI*2),r.fill(),r.fillStyle=u,r.beginPath(),r.ellipse(0,-24,6,7,0,Math.PI,0),r.fill(),r.strokeStyle=`rgba(0,0,0,0.5)`,r.lineWidth=1,r.beginPath(),r.arc(-2,-24,1.5,0,Math.PI),r.stroke(),r.beginPath(),r.arc(2,-24,1.5,0,Math.PI),r.stroke(),r.fillStyle=d,r.beginPath(),r.ellipse(-10,-10,2,1.5,0,0,Math.PI*2),r.fill(),r.beginPath(),r.ellipse(10,-10,2,1.5,0,0,Math.PI*2),r.fill(),r.restore();else{r.save(),r.translate(a,o);let e=Math.sin(n*.002)*.5;r.fillStyle=d,r.beginPath(),r.ellipse(10,-1+e,5,6,0,0,Math.PI*2),r.fill(),r.fillStyle=u,r.beginPath(),r.ellipse(10,-1+e,5,6,0,Math.PI*.8,Math.PI*2.2),r.fill(),r.strokeStyle=`rgba(0,0,0,0.5)`,r.lineWidth=.75,r.beginPath(),r.arc(9,-2+e,1,0,Math.PI),r.stroke(),r.beginPath(),r.arc(12,-2+e,1,0,Math.PI),r.stroke(),r.restore()}}drawRollingSFX(e,t,n,r,i,a,o){e.save();let s=.15+.1*Math.sin(o*.01);e.strokeStyle=a?`rgba(148,163,184,${s})`:`rgba(71,85,105,${s})`,e.lineWidth=1,(i===`wheelchair`?[[-9,n+4],[9,n+4]]:[[-15,n+5],[15,n+5],[-15,n-11],[15,n-11]]).forEach(([n,i])=>{for(let a=0;a<2;a++){let o=(r+a*Math.PI)%(Math.PI*2),s=t+n-3-a*2,c=i+Math.sin(o)*2;e.beginPath(),e.moveTo(s,c-1),e.lineTo(s-3,c),e.stroke()}}),e.restore()}drawCharacter(e,t,n){let{ctx:r}=this,{walkPhase:i,facing:a,state:o,name:s,id:c}=e,{x:l,y:u}=e,d=e.color||`#64748b`,f=c===this.hoveredId,p=Math.hypot(e.vx,e.vy)>5,m=LT(s||``),h=zT[m%zT.length]||`#000`,g=VT[(m>>>3)%VT.length]||`#1e3a5f`,_=BT[(m>>>6)%BT.length]||`#f5c89a`,v=m%5,y=PT(d,30),b=o===`processing`&&!p,x=n*.018+m%20,S=p?Math.sin(i)*5:0,C=p?Math.sin(i+Math.PI)*4:0,w=p?Math.sin(i*2)*1.2:0;b&&(C=Math.sin(x)*5,w=Math.sin(x*.55)*.8,u+=Math.sin(x*.35)*.7),o===`blocked`?l+=Math.sin(n*.05)*1.5:o===`idle`&&!p&&(u+=Math.sin(n*.003+m)*1),r.fillStyle=`rgba(0,0,0,0.22)`,r.beginPath(),r.ellipse(l,u+3,11,5,0,0,Math.PI*2),r.fill(),f&&(r.strokeStyle=d,r.lineWidth=2,r.setLineDash([4,3]),r.beginPath(),r.arc(l,u-24+w,16,0,Math.PI*2),r.stroke(),r.setLineDash([])),r.save(),r.translate(l,u),o===`burnout`?(r.rotate(Math.PI/2),r.translate(0,15)):b?(r.rotate(Math.sin(x*.45)*.03),r.translate(0,1)):a===`left`&&r.scale(-1,1),r.fillStyle=g,r.save(),r.translate(-3.5,0),r.rotate(S*.1),$(r,-2.5,-4,5,9,2),r.fill(),r.restore(),r.save(),r.translate(3.5,0),r.rotate(-S*.1),$(r,-2.5,-4,5,9,2),r.fill(),r.restore(),r.fillStyle=FT(g,30),r.save(),r.translate(-3.5,S*.5),$(r,-3,4,7,4,2),r.fill(),r.restore(),r.save(),r.translate(3.5,-S*.5),$(r,-3,4,7,4,2),r.fill(),r.restore();let T=r.createLinearGradient(-7,-26,7,-13);T.addColorStop(0,y),T.addColorStop(1,d),r.fillStyle=T,$(r,-7,-26,14,14,3),r.fill(),r.fillStyle=PT(d,45),$(r,-3.5,-26,7,5,2),r.fill(),r.strokeStyle=`rgba(0,0,0,0.12)`,r.lineWidth=.75,r.beginPath(),r.moveTo(0,-26),r.lineTo(0,-13),r.stroke(),r.save(),r.translate(-9,-24),r.rotate(b?.55+Math.max(0,Math.sin(x))*.28:C*.12);let E=r.createLinearGradient(-2,0,2,10);E.addColorStop(0,y),E.addColorStop(1,d),r.fillStyle=E,$(r,-2,0,4,9,2),r.fill(),r.fillStyle=_,r.beginPath(),r.ellipse(0,10,2.5,2,0,0,Math.PI*2),r.fill(),r.restore(),r.save(),r.translate(9,-24),r.rotate(b?-.55-Math.max(0,Math.sin(x+Math.PI))*.28:-C*.12),r.fillStyle=E,$(r,-2,0,4,9,2),r.fill(),r.fillStyle=_,r.beginPath(),r.ellipse(0,10,2.5,2,0,0,Math.PI*2),r.fill(),r.restore(),r.fillStyle=_,r.fillRect(-2.5,-28,5,4);let D=-38+w;r.fillStyle=`rgba(0,0,0,0.15)`,r.beginPath(),r.ellipse(1,D+2,9,5,0,0,Math.PI*2),r.fill();let O=r.createRadialGradient(-3,D-3,2,0,D,10);if(O.addColorStop(0,PT(_,15)),O.addColorStop(1,_),r.fillStyle=O,r.beginPath(),r.ellipse(0,D,9,10,0,0,Math.PI*2),r.fill(),this.drawHair(r,0,D,h,v),a!==`up`&&this.drawFace(r,0,D,_,a,p,i,o,n,m),r.restore(),o!==`idle`&&o!==`burnout`){let e=o===`blocked`?`#ef4444`:o===`processing`?`#a855f7`:o===`claiming`?`#0ea5e9`:`#f59e0b`,t=l+(a===`left`?-10:10),n=u-48+w;r.fillStyle=e,r.shadowColor=e,r.shadowBlur=10,r.beginPath(),r.arc(t,n,5,0,Math.PI*2),r.fill(),r.shadowBlur=0,r.strokeStyle=`#ffffff`,r.lineWidth=2,r.beginPath(),r.arc(t,n,5,0,Math.PI*2),r.stroke(),r.strokeStyle=`rgba(0,0,0,0.5)`,r.lineWidth=1,r.beginPath(),r.arc(t,n,6,0,Math.PI*2),r.stroke()}if(o===`processing`){let e=.4+.6*Math.sin(n*.0028);if(r.strokeStyle=IT(d,.18+e*.14),r.lineWidth=1.5,r.beginPath(),r.arc(l,u-38+w,17+e*4,0,Math.PI*2),r.stroke(),b)for(let e=0;e<4;e++){let t=(x+e*.9)%(Math.PI*2),n=Math.max(0,Math.sin(t));n<.25||(r.fillStyle=IT(d,n*.75),r.beginPath(),r.arc(l-9+e*6,u-11-n*3,1.1+n*.9,0,Math.PI*2),r.fill())}for(let e=0;e<3;e++){let t=.3+.7*Math.sin(n*.004+e*1.1);r.fillStyle=IT(d,.5+t*.5),r.beginPath(),r.arc(l+(-5+e*5),u-54+w,1.5+t,0,Math.PI*2),r.fill()}}if(o===`burnout`){let e=n*.002%(Math.PI*2);for(let t=0;t<3;t++){let n=(e+t*(Math.PI*2/3))%(Math.PI*2),i=Math.max(0,Math.sin(n)),a=l+5+Math.cos(n)*5+n*2,o=u-10-n*8;r.fillStyle=`rgba(150, 150, 200, ${i})`,r.font=`bold ${8+n*1.5}px monospace`,r.fillText(`Z`,a,o)}}r.fillStyle=t?`rgba(226,232,240,0.82)`:`rgba(15,23,42,0.7)`,r.font=`7px system-ui,sans-serif`,r.textAlign=`center`,r.textBaseline=`top`;let k=s.length>12?s.slice(0,12)+`…`:s;r.fillText(k,l,u+12)}drawHair(e,t,n,r,i){switch(e.fillStyle=r,i){case 0:e.beginPath(),e.ellipse(t,n,9,10,0,Math.PI,0),e.fill(),e.fillRect(t-9,n-2,3,5),e.fillRect(t+6,n-2,3,5);break;case 1:for(let r=-2;r<=2;r++)e.beginPath(),e.moveTo(t+r*4-2,n-7),e.lineTo(t+r*4,n-14),e.lineTo(t+r*4+2,n-7),e.closePath(),e.fill();e.beginPath(),e.ellipse(t,n-5,9,4,0,0,Math.PI*2),e.fill();break;case 2:e.save(),e.translate(t,n),e.beginPath(),e.moveTo(-9,-2),e.bezierCurveTo(-11,-12,10,-16,11,-6),e.lineTo(9,0),e.bezierCurveTo(4,-8,-4,-10,-9,-2),e.closePath(),e.fill(),e.restore();break;case 3:e.beginPath(),e.arc(t,n,9.5,Math.PI,0),e.fill(),$(e,t-10,n,4,12,2),e.fill(),$(e,t+6,n,4,12,2),e.fill();break;case 4:e.fillStyle=FT(r,20),$(e,t-12,n-6,24,5,2),e.fill(),e.fillStyle=r,$(e,t-9,n-16,18,12,3),e.fill(),e.fillStyle=PT(r,40),$(e,t-3,n-11,6,4,1),e.fill();break}}drawFace(e,t,n,r,i,a,o,s,c,l){if(i===`right`)e.fillStyle=`rgba(0,0,0,0.7)`,e.beginPath(),e.ellipse(t+5,n-2,1.5,1.5,0,0,Math.PI*2),e.fill(),e.strokeStyle=`rgba(0,0,0,0.2)`,e.lineWidth=1,e.beginPath(),e.arc(t+9,n,3,-.5,.5),e.stroke();else if(s===`burnout`){if((l||0)%2==0){e.strokeStyle=`rgba(0,0,0,0.7)`,e.lineWidth=1;let r=(c||0)*.005%(Math.PI*2);e.save(),e.translate(t-3,n-2),e.rotate(r),e.beginPath(),e.moveTo(0,0);for(let t=0;t<15;t++){let n=t*.5,r=t*.15;e.lineTo(Math.cos(n)*r,Math.sin(n)*r)}e.stroke(),e.restore(),e.save(),e.translate(t+3,n-2),e.rotate(r),e.beginPath(),e.moveTo(0,0);for(let t=0;t<15;t++){let n=t*.5,r=t*.15;e.lineTo(Math.cos(n)*r,Math.sin(n)*r)}e.stroke(),e.restore()}else e.strokeStyle=`rgba(0,0,0,0.7)`,e.lineWidth=1.5,e.beginPath(),e.arc(t-3,n-2,2.5,0,Math.PI),e.stroke(),e.beginPath(),e.arc(t+3,n-2,2.5,0,Math.PI),e.stroke();e.strokeStyle=`rgba(0,0,0,0.5)`,e.lineWidth=1,e.beginPath(),e.arc(t,n+3,2,Math.PI,Math.PI*2),e.stroke()}else{e.fillStyle=`white`,e.beginPath(),e.ellipse(t-3,n-2,2.5,2,0,0,Math.PI*2),e.fill(),e.beginPath(),e.ellipse(t+3,n-2,2.5,2,0,0,Math.PI*2),e.fill(),e.fillStyle=`rgba(20,20,80,0.85)`,e.beginPath(),e.arc(t-3,n-2,1.3,0,Math.PI*2),e.fill(),e.beginPath(),e.arc(t+3,n-2,1.3,0,Math.PI*2),e.fill(),e.fillStyle=`white`,e.beginPath(),e.arc(t-3.5,n-2.5,.5,0,Math.PI*2),e.fill(),e.beginPath(),e.arc(t+2.5,n-2.5,.5,0,Math.PI*2),e.fill();let r=a&&Math.sin(o)>.5;e.strokeStyle=`rgba(0,0,0,0.5)`,e.lineWidth=1,r?(e.beginPath(),e.arc(t,n+2,2,0,Math.PI),e.stroke()):(e.beginPath(),e.moveTo(t-2.5,n+2.5),e.quadraticCurveTo(t,n+4,t+2.5,n+2.5),e.stroke())}}},KT=K(`<span class="badge loading svelte-1pykpun"><span class="animate-spin" style="display:inline-block;width:10px;height:10px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%"></span> Loading…</span>`),qT=K(`<span class="badge error svelte-1pykpun"><!> Error</span>`),JT=K(`<span class="badge live svelte-1pykpun"><span class="pulse-dot svelte-1pykpun"></span> Live · <strong> </strong> <strong> </strong> <!></span>`),YT=K(`<div class="tip-row svelte-1pykpun"><span class="tip-key svelte-1pykpun">Repos</span> <span class="tip-repos svelte-1pykpun"> </span></div>`),XT=K(`<div class="agent-tip glass svelte-1pykpun"><div class="tip-name svelte-1pykpun"><span class="tip-dot svelte-1pykpun"></span> </div> <div class="tip-row svelte-1pykpun"><span class="tip-key svelte-1pykpun">Role</span><span> </span></div> <div class="tip-row svelte-1pykpun"><span class="tip-key svelte-1pykpun">State</span> <span> </span></div> <div class="tip-row svelte-1pykpun"><span class="tip-key svelte-1pykpun">Tasks</span><span> </span></div> <!></div>`),ZT=K(`<div class="arena-empty svelte-1pykpun"><!> <div style="font-weight:700;font-size:0.9rem">No active agents</div> <div class="arena-empty-sub svelte-1pykpun">Agents appear here when they claim tasks across your repositories</div></div>`),QT=K(`<div class="arena-root glass card animate-fade-in svelte-1pykpun"><div class="arena-hdr svelte-1pykpun"><div class="arena-hdr-left svelte-1pykpun"><div class="arena-icon svelte-1pykpun"><!></div> <div><div class="section-label" style="margin:0">Agent Arena</div> <div class="arena-sub svelte-1pykpun">Live 2D view · all repositories</div></div></div> <div class="arena-hdr-right svelte-1pykpun"><!></div></div> <div class="arena-wrap svelte-1pykpun"><canvas class="arena-canvas svelte-1pykpun"></canvas> <!> <!></div> <div class="arena-footer svelte-1pykpun"><div class="legend-row svelte-1pykpun"><div class="legend-item svelte-1pykpun"><span class="lg-dot svelte-1pykpun" style="background:#8b5cf6"></span>Lobby (idle)</div> <div class="legend-item svelte-1pykpun"><span class="lg-dot svelte-1pykpun" style="background:#0ea5e9"></span>Inbox</div> <div class="legend-item svelte-1pykpun"><span class="lg-dot svelte-1pykpun" style="background:#a855f7"></span>Workspace</div> <div class="legend-item svelte-1pykpun"><span class="lg-dot svelte-1pykpun" style="background:#ef4444"></span>Issues</div> <div class="legend-item svelte-1pykpun"><span class="lg-dot svelte-1pykpun" style="background:#10b981"></span>Done</div></div> <div class="legend-row svelte-1pykpun"><div class="legend-item svelte-1pykpun"><span class="lg-bubble svelte-1pykpun"></span>Working agent</div> <div class="legend-item svelte-1pykpun"><span class="lg-dash svelte-1pykpun" style="border-color:#f59e0b"></span>Handoff beam</div> <div class="legend-item svelte-1pykpun"><span class="lg-dash svelte-1pykpun"></span>Claim link</div></div></div></div>`);function $T(e,t){rt(t,!1);let n=()=>F(p,`$arena`,i),r=()=>F(Qa,`$theme`,i),[i,a]=Et(),o=I(),s=I(),c=I(),l=I(null),u=I(null),d=I(null),f=I(null),p=wT();function m(){if(!H(s)||!H(c))return;let e=H(c).clientWidth||960,t=Math.max(520,Math.min(window.innerHeight-220,800));Sn(s,H(s).width=e),Sn(s,H(s).height=t),L(u,{canvasWidth:e,canvasHeight:t}),H(l)||(L(l,new GT(H(s))),H(l).start()),p.setLayout(H(u)),n().scene&&H(l).update(n().scene,H(u),r()===`dark`)}function h(e){if(!H(l)||!n().scene){L(d,null),L(f,null);return}let t=H(s).getBoundingClientRect(),r=H(s).width/t.width,i=H(s).height/t.height,a=(e.clientX-t.left)*r,o=(e.clientY-t.top)*i,c=H(l).hitTestAgent(a,o);c!==H(d)&&(L(d,c),H(l).setHovered(H(d))),L(f,H(d)?{x:e.clientX-t.left+14,y:e.clientY-t.top-10}:null)}function g(){L(d,null),L(f,null),H(l)?.setHovered(null)}Ka(()=>{let e=setTimeout(()=>{m(),H(u)&&p.start(H(u))},60),t=new ResizeObserver(()=>m());return t.observe(H(c)),()=>{clearTimeout(e),t.disconnect()}}),qa(()=>{p.stop(),H(l)?.stop()}),ir(()=>(H(l),n(),H(u),r()),()=>{H(l)&&n().scene&&H(u)&&H(l).update(n().scene,H(u),r()===`dark`)}),ir(()=>(H(d),n()),()=>{L(o,H(d)&&n().scene?n().scene.agents.get(H(d))??null:null)}),ar(),Ua();var _=QT(),v=R(_),y=R(v),b=R(y);Q(R(b),{name:`cpu`,size:16,strokeWidth:1.75}),j(b),M(2),j(y);var x=B(y,2),S=R(x),C=e=>{q(e,KT())},w=e=>{var t=qT();Q(R(t),{name:`alert-circle`,size:11}),M(),j(t),q(e,t)},T=e=>{var t=JT(),r=B(R(t),2),i=R(r,!0);j(r);var a=B(r),o=B(a),s=R(o,!0);j(o);var c=B(o),l=B(c),u=e=>{var t=wi();V(()=>J(t,` · ${(n(),U(()=>n().repoCount))??``} repos`)),q(e,t)};Y(l,e=>{n(),U(()=>n().repoCount>1)&&e(u)}),j(t),V(()=>{J(i,(n(),U(()=>n().scene.agents.size))),J(a,` ${(n(),U(()=>n().scene.agents.size===1?`agent`:`agents`))??``}
|
|
151
|
+
· `),J(s,(n(),U(()=>n().scene.tasks.size))),J(c,` ${(n(),U(()=>n().scene.tasks.size===1?`task`:`tasks`))??``} `)}),q(e,t)};Y(S,e=>{n(),U(()=>n().loading&&!n().scene)?e(C):(n(),U(()=>n().error)?e(w,1):(n(),U(()=>n().scene)&&e(T,2)))}),j(x),j(v);var E=B(v,2),D=R(E);Ba(D,e=>L(s,e),()=>H(s));var O=B(D,2),k=e=>{var t=XT(),n=R(t),r=R(n),i=B(r);j(n);var a=B(n,2),s=B(R(a)),c=R(s,!0);j(s),j(a);var l=B(a,2),u=B(R(l),2),d=R(u,!0);j(u),j(l);var p=B(l,2),m=B(R(p)),h=R(m,!0);j(m),j(p);var g=B(p,2),_=e=>{var t=YT(),n=B(R(t),2),r=R(n,!0);j(n),j(t),V(e=>J(r,e),[()=>(H(o),U(()=>H(o).repos.map(e=>e.split(`/`).pop()).join(`, `)))]),q(e,t)};Y(g,e=>{H(o),U(()=>H(o).repos.length>0)&&e(_)}),j(t),V(e=>{da(t,`left:${(H(f),U(()=>H(f).x))??``}px;top:${(H(f),U(()=>H(f).y))??``}px`),da(r,`background:${(H(o),U(()=>H(o).color))??``}`),J(i,` ${(H(o),U(()=>H(o).name))??``}`),J(c,(H(o),U(()=>H(o).role||`—`))),la(u,1,`tip-state ${(H(o),U(()=>H(o).state))??``}`,`svelte-1pykpun`),J(d,e),J(h,(H(o),U(()=>H(o).claimedTaskIds.length)))},[()=>(H(o),U(()=>H(o).state.replace(/_/g,` `)))]),q(e,t)};Y(O,e=>{H(o)&&H(f)&&e(k)});var ee=B(O,2),te=e=>{var t=ZT();Q(R(t),{name:`users`,size:30,strokeWidth:1.2}),M(4),j(t),q(e,t)};Y(ee,e=>{n(),U(()=>n().scene&&n().scene.agents.size===0&&!n().loading)&&e(te)}),j(E),Ba(E,e=>L(c,e),()=>H(c)),M(2),j(_),V(()=>da(D,`cursor:${H(d)?`pointer`:`default`}`)),G(`mousemove`,D,h),G(`mouseleave`,D,g),q(e,_),it(),a()}var eE=K(`<div class="repo-focus svelte-1eglegg"><!> <span> </span></div>`),tE=K(`<div class="summary-card svelte-1eglegg"><div class="summary-icon svelte-1eglegg"><!></div> <div class="summary-value svelte-1eglegg"> </div> <div class="summary-label svelte-1eglegg"> </div></div>`),nE=K(`<div class="mini-card svelte-1eglegg"><div class="mini-value svelte-1eglegg"> </div> <div class="mini-label svelte-1eglegg"> </div></div>`),rE=K(`<div class="mini-card svelte-1eglegg"><div class="mini-icon svelte-1eglegg"><!></div> <div class="mini-value svelte-1eglegg"> </div> <div class="mini-label svelte-1eglegg"> </div></div>`),iE=K(`<div class="empty-state svelte-1eglegg">No repository activity yet.</div>`),aE=K(`<span class="stat-chip stale svelte-1eglegg"> </span>`),oE=K(`<span class="stat-chip stale svelte-1eglegg"> </span>`),sE=K(`<div><div class="repo-main"><div class="repo-name svelte-1eglegg"> </div> <div class="repo-meta svelte-1eglegg"> </div></div> <div class="pressure-pill svelte-1eglegg"> </div> <div class="repo-stats svelte-1eglegg"><span class="stat-chip active svelte-1eglegg"> </span> <span class="stat-chip pending svelte-1eglegg"> </span> <span class="stat-chip blocked svelte-1eglegg"> </span> <span class="stat-chip backlog svelte-1eglegg"> </span></div> <div class="repo-stats svelte-1eglegg"><span class="stat-chip claim svelte-1eglegg"> </span> <span class="stat-chip handoff svelte-1eglegg"> </span> <!> <!></div> <div class="last-activity svelte-1eglegg"> </div></div>`),cE=K(`<div class="repo-table svelte-1eglegg"><div class="repo-table-head svelte-1eglegg"><span>Repository</span> <span>Pressure</span> <span>Workload</span> <span>Coordination</span> <span>Last Activity</span></div> <!></div>`),lE=K(`<div class="global-shell animate-fade-in svelte-1eglegg"><div class="glass card panel-card svelte-1eglegg"><div class="panel-header svelte-1eglegg"><div><div class="section-label">Global Command Center</div> <div class="panel-copy svelte-1eglegg">Cross-repository orchestration view for workload, coordination, and pressure.</div></div> <!></div> <div class="summary-grid svelte-1eglegg"></div></div> <div class="grid-two svelte-1eglegg"><div class="glass card panel-card svelte-1eglegg"><div class="subheading svelte-1eglegg">Coordination</div> <div class="mini-grid svelte-1eglegg"></div></div> <div class="glass card panel-card svelte-1eglegg"><div class="subheading svelte-1eglegg">Throughput</div> <div class="mini-grid svelte-1eglegg"></div></div></div> <div class="glass card panel-card svelte-1eglegg"><div class="panel-header svelte-1eglegg"><div><div class="subheading svelte-1eglegg">Attention Board</div> <div class="panel-copy svelte-1eglegg">Repos sorted by operational pressure: blocked work, active execution, pending queue, and coordination load.</div></div></div> <!></div></div>`);function uE(e,t){rt(t,!1);let n=()=>F(so,`$globalDashboardStats`,s),r=()=>F(no,`$currentRepo`,s),i=()=>F(d,`$summaryCards`,s),a=()=>F(f,`$coordinationCards`,s),o=()=>F(p,`$throughputCards`,s),[s,c]=Et(),l=I(),u=I(),d=bt(so,e=>[{label:`Repositories`,value:e?.repoCount??0,icon:`database`,color:`#0ea5e9`,tint:`rgba(14,165,233,0.12)`},{label:`Active Repos`,value:e?.activeRepoCount??0,icon:`activity`,color:`#8b5cf6`,tint:`rgba(139,92,246,0.12)`},{label:`Open Tasks`,value:(e?.taskStats?.pending??0)+(e?.taskStats?.in_progress??0)+(e?.taskStats?.blocked??0)+(e?.taskStats?.backlog??0),icon:`clipboard-list`,color:`#f59e0b`,tint:`rgba(245,158,11,0.12)`},{label:`Active Claims`,value:e?.coordination?.activeClaims??0,icon:`check`,color:`#10b981`,tint:`rgba(16,185,129,0.12)`},{label:`Pending Handoffs`,value:e?.coordination?.pendingHandoffs??0,icon:`git-branch`,color:`#6366f1`,tint:`rgba(99,102,241,0.12)`},{label:`Blocked Tasks`,value:e?.taskStats?.blocked??0,icon:`triangle-alert`,color:`#ef4444`,tint:`rgba(239,68,68,0.12)`}]),f=bt(so,e=>[{label:`Agents Claiming`,value:e?.coordination?.agentsClaiming??0,accent:`#10b981`},{label:`Unassigned Handoffs`,value:e?.coordination?.unassignedHandoffs??0,accent:`#f97316`},{label:`Stale Claims`,value:e?.coordination?.staleClaims??0,accent:`#ef4444`},{label:`Stale Handoffs`,value:e?.coordination?.staleHandoffs??0,accent:`#e11d48`}]),p=bt(lo,e=>[{label:`Today Done`,value:e?.daily?.completed??0,icon:`circle-check`,color:`#10b981`},{label:`Today Added`,value:e?.daily?.added??0,icon:`plus`,color:`#0ea5e9`},{label:`7d Done`,value:e?.weekly?.completed??0,icon:`bar-chart`,color:`#8b5cf6`},{label:`7d Tokens`,value:Jl(e?.weekly?.tokens),icon:`cpu`,color:`#f59e0b`}]);function m(e){return e.blockedCount*5+e.inProgressCount*3+e.pendingCount*2+e.pendingHandoffs*2+e.activeClaims}ir(()=>n(),()=>{L(l,(n()?.repos??[]).slice(0,8))}),ir(()=>(r(),H(l)),()=>{L(u,r()?H(l).find(e=>e.repo===r()):null)}),ar(),Ua();var h=lE(),g=R(h),_=R(g),v=B(R(_),2),y=e=>{var t=eE(),n=R(t);Q(n,{name:`pin`,size:12,strokeWidth:2});var i=B(n,2),a=R(i);j(i),j(t),V(()=>J(a,`Focused repo: ${r()??``}`)),q(e,t)};Y(v,e=>{H(u)&&e(y)}),j(_);var b=B(_,2);X(b,5,i,e=>e.label,(e,t)=>{var n=tE(),r=R(n);Q(R(r),{get name(){return H(t),U(()=>H(t).icon)},size:14,strokeWidth:1.9}),j(r);var i=B(r,2),a=R(i,!0);j(i);var o=B(i,2),s=R(o,!0);j(o),j(n),V(()=>{da(n,`background:${(H(t),U(()=>H(t).tint))??``};border-color:${(H(t),U(()=>H(t).tint))??``};`),da(r,`color:${(H(t),U(()=>H(t).color))??``};`),da(i,`color:${(H(t),U(()=>H(t).color))??``};`),J(a,(H(t),U(()=>H(t).value))),J(s,(H(t),U(()=>H(t).label)))}),q(e,n)}),j(b),j(g);var x=B(g,2),S=R(x),C=B(R(S),2);X(C,5,a,e=>e.label,(e,t)=>{var n=nE(),r=R(n),i=R(r,!0);j(r);var a=B(r,2),o=R(a,!0);j(a),j(n),V(()=>{da(r,`color:${(H(t),U(()=>H(t).accent))??``};`),J(i,(H(t),U(()=>H(t).value))),J(o,(H(t),U(()=>H(t).label)))}),q(e,n)}),j(C),j(S);var w=B(S,2),T=B(R(w),2);X(T,5,o,e=>e.label,(e,t)=>{var n=rE(),r=R(n);Q(R(r),{get name(){return H(t),U(()=>H(t).icon)},size:12,strokeWidth:2}),j(r);var i=B(r,2),a=R(i,!0);j(i);var o=B(i,2),s=R(o,!0);j(o),j(n),V(()=>{da(r,`color:${(H(t),U(()=>H(t).color))??``};`),da(i,`color:${(H(t),U(()=>H(t).color))??``};`),J(a,(H(t),U(()=>H(t).value))),J(s,(H(t),U(()=>H(t).label)))}),q(e,n)}),j(T),j(w),j(x);var E=B(x,2),D=B(R(E),2),O=e=>{q(e,iE())},k=e=>{var t=cE();X(B(R(t),2),1,()=>H(l),e=>e.repo,(e,t)=>{var n=sE();let i;var a=R(n),o=R(a),s=R(o,!0);j(o);var c=B(o,2),l=R(c);j(c),j(a);var u=B(a,2),d=R(u,!0);j(u);var f=B(u,2),p=R(f),h=R(p);j(p);var g=B(p,2),_=R(g);j(g);var v=B(g,2),y=R(v);j(v);var b=B(v,2),x=R(b);j(b),j(f);var S=B(f,2),C=R(S),w=R(C);j(C);var T=B(C,2),E=R(T);j(T);var D=B(T,2),O=e=>{var n=aE(),r=R(n);j(n),V(()=>J(r,`U ${(H(t),U(()=>H(t).unassignedHandoffs))??``}`)),q(e,n)};Y(D,e=>{H(t),U(()=>H(t).unassignedHandoffs>0)&&e(O)});var k=B(D,2),ee=e=>{var n=oE(),r=R(n);j(n),V(()=>J(r,`S ${(H(t),U(()=>H(t).staleClaims))??``}`)),q(e,n)};Y(k,e=>{H(t),U(()=>H(t).staleClaims>0)&&e(ee)}),j(S);var te=B(S,2),ne=R(te,!0);j(te),j(n),V((e,a)=>{i=la(n,1,`repo-table-row svelte-1eglegg`,null,i,{selected:r()===H(t).repo}),J(s,(H(t),U(()=>H(t).repo))),J(l,`${(H(t),U(()=>H(t).memoryCount))??``} memories • ${(H(t),U(()=>H(t).taskCount))??``} tasks`),J(d,e),J(h,`A ${(H(t),U(()=>H(t).inProgressCount))??``}`),J(_,`P ${(H(t),U(()=>H(t).pendingCount))??``}`),J(y,`B ${(H(t),U(()=>H(t).blockedCount))??``}`),J(x,`Q ${(H(t),U(()=>H(t).backlogCount))??``}`),J(w,`C ${(H(t),U(()=>H(t).activeClaims))??``}`),J(E,`H ${(H(t),U(()=>H(t).pendingHandoffs))??``}`),J(ne,a)},[()=>(H(t),U(()=>m(H(t)))),()=>(H(t),W(ql),U(()=>H(t).lastActivity?ql(H(t).lastActivity):`—`))]),q(e,n)}),j(t),q(e,t)};Y(D,e=>{H(l),U(()=>H(l).length===0)?e(O):e(k,-1)}),j(E),j(h),q(e,h),it(),c()}var dE=K(`<div class="drawer-overlay" style="z-index:38;" role="button" tabindex="0" aria-label="Close menu"></div> <div class="mobile-sidebar-shell"><!></div>`,1),fE=K(`<div class="empty-state animate-fade-in svelte-1m88iwd"><div class="empty-state-icon animate-float svelte-1m88iwd"><!></div> <div class="empty-state-title svelte-1m88iwd">No Repository Selected</div> <div class="empty-state-text svelte-1m88iwd">Select a repository from the sidebar to get started.</div></div>`),pE=K(`<div class="glass card hover-glow card-body"><div class="flex items-center justify-between card-section-title"><div class="section-label">Selected Repo Pulse</div> <div class="repo-badge svelte-1m88iwd"> </div></div> <div class="repo-pulse-grid svelte-1m88iwd" style="display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:12px;"><div class="glass card card-body"><div class="section-label card-section-title">Memory Overview</div> <!></div> <div class="glass card card-body"><div class="section-label card-section-title">Task Overview</div> <!></div></div></div> <!>`,1),mE=K(`<div class="glass card hover-glow card-body"><div class="section-label card-section-title">Per-Repository Pulse</div> <div class="muted-text svelte-1m88iwd">Select a repository from the sidebar to inspect repo-specific memory, task, and execution metrics.</div></div>`),hE=K(`<div style="display:grid;grid-template-columns:1fr;gap:12px;align-items:start;" class="dashboard-grid svelte-1m88iwd"><!> <div class="flex flex-col" style="gap:12px;"><!></div></div>`),gE=K(`<div class="glass card animate-fade-in" style="height:calc(100vh - 180px);display:flex;flex-direction:column;padding:0;overflow:hidden;border-radius:24px;"><div style="padding:16px 20px;border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;background:rgba(255,255,255,0.05);"><div class="flex items-center gap-3"><div style="width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-accent));display:flex;align-items:center;justify-content:center;color:white;box-shadow:0 4px 12px var(--glow-primary);"><!></div> <div><div style="font-size:0.95rem;font-weight:800;color:var(--color-text);letter-spacing:-0.01em;">Recent Activity</div> <div style="font-size:0.68rem;color:var(--color-text-muted);font-weight:600;"> </div></div></div></div> <!> <div class="chat-send-panel"><div class="chat-input-row"><input type="text" placeholder="Type a message to create a backlog task..."/> <button class="chat-send-btn"><!></button></div></div></div>`),_E=K(`<div class="glass card hover-glow animate-fade-in"><div class="flex items-center gap-2" style="margin-bottom:16px;"><!> <div class="section-label">Memory Explorer</div></div> <!></div>`),vE=K(`<div class="animate-fade-in"><div class="glass card hover-glow" style="margin-bottom:20px;"><div class="flex items-center gap-2" style="margin-bottom:16px;"><!> <div class="stat-label">Task Overview</div></div> <!></div></div>`),yE=K(`<div class="arena-fullwidth svelte-1m88iwd"><!></div>`),bE=K(`<div class="tabs-wrap"><div class="tab-nav" style="display:inline-flex;" role="tablist"><button id="tab-activity" role="tab"><!> <span>Activity</span></button> <button id="tab-memories" role="tab"><!> <span>Memories</span></button> <button id="tab-tasks" role="tab"><!> <span>Tasks</span></button> <button id="tab-handoffs" role="tab"><!> <span>Handoffs</span></button> <button id="tab-knowledge-graph" role="tab"><!> <span>Knowledge Graph</span></button></div></div> <!> <!> <!> <!> <!> <!> <!> <!> <!>`,1),xE=K(`<div class="app-layout"><!> <div><!> <!> <div id="dashboardShell" class="dashboard-shell" aria-live="polite"><!></div></div></div> <!> <!> <!> <!> <!> <!>`,1);function SE(e,t){rt(t,!1);let n=()=>F(eo,`$activeTab`,s),r=()=>F(y,`$sidebarCollapsed`,s),i=()=>F(h,`$appState`,s),a=()=>F(no,`$currentRepo`,s),o=()=>F(wo,`$recentActionsTotalItems`,s),[s,c]=Et(),l=I(),u=I(),d=I(``),f=I(!1);async function p(){let e=H(d).trim();if(!e||H(f))return;let t=P(no);if(t){L(f,!0);try{await au(e,t),L(d,``),await m.onRefresh()}catch(e){console.error(`Failed to create task from chat:`,e)}finally{L(f,!1)}}}let m=Ko({get kanbanBoard(){return H(l)},get memoryList(){return H(u)}}),h={subscribe:m.subscribe,set:m.set,update:m.update},{filteredTools:g,filteredPrompts:_,filteredResources:v,sidebarCollapsed:y}=m;Ka(async()=>{Fo(),await m.loadRepos(),await m.loadHealth(),await m.loadData()}),ir(()=>(n(),Ro),()=>{n()===`reference`&&(P(m).capabilities||Ro.capabilities().then(e=>m.update(t=>({...t,capabilities:e}))).catch(e=>console.error(`Failed to load capabilities:`,e)))}),ar(),Ua();var b=xE();G(`keydown`,An,function(...e){m.onKeyDown?.apply(this,e)});var x=z(b),S=R(x);Nu(S,{get onRepoSelect(){return U(()=>m.onRepoSelect)}});var C=B(S,2);let w;var T=R(C);qu(T,{get onRefresh(){return U(()=>m.onRefresh)},get onToggleMobileMenu(){return U(()=>m.toggleMobileMenu)},get onEcosystem(){return U(()=>m.onEcosystemClick)}});var E=B(T,2),D=e=>{var t=dE(),n=z(t),r=B(n,2);Nu(R(r),{get onRepoSelect(){return U(()=>m.onRepoSelect)}}),j(r),G(`click`,n,()=>m.toggleMobileMenu()),G(`keydown`,n,e=>e.key===`Escape`&&m.toggleMobileMenu()),q(e,t)};Y(E,e=>{i(),U(()=>i().mobileMenuOpen)&&e(D)});var O=B(E,2),k=R(O),ee=e=>{var t=fE(),n=R(t);Q(R(n),{name:`brain`,size:32,strokeWidth:1.5}),j(n),M(4),j(t),q(e,t)},te=e=>{var t=bE(),r=z(t),i=R(r),s=R(i);let c;Q(R(s),{name:`activity`,size:14,strokeWidth:1.75}),M(2),j(s);var y=B(s,2);let b;Q(R(y),{name:`brain`,size:14,strokeWidth:1.75}),M(2),j(y);var x=B(y,2);let S;Q(R(x),{name:`clipboard-list`,size:14,strokeWidth:1.75}),M(2),j(x);var C=B(x,2);let w;Q(R(C),{name:`git-branch`,size:14,strokeWidth:1.75}),M(2),j(C);var T=B(C,2);let E;Q(R(T),{name:`share-2`,size:14,strokeWidth:1.75}),M(2),j(T),j(i),j(r);var D=B(r,2),O=e=>{var t=hE(),n=R(t);uE(n,{});var r=B(n,2),i=R(r),o=e=>{var t=pE(),n=z(t),r=R(n),i=B(R(r),2),o=R(i,!0);j(i),j(r);var s=B(r,2),c=R(s);Md(B(R(c),2),{}),j(c);var l=B(c,2);Rd(B(R(l),2),{}),j(l),j(s),j(n),ib(B(n,2),{}),V(()=>J(o,a())),q(e,t)},s=e=>{q(e,mE())};Y(i,e=>{a()?e(o):e(s,-1)}),j(r),j(t),q(e,t)};Y(D,e=>{n()===`dashboard`&&e(O)});var k=B(D,2),ee=e=>{var t=gE(),n=R(t),r=R(n),i=R(r);Q(R(i),{name:`activity`,size:18,strokeWidth:2.2}),j(i);var a=B(i,2),s=B(R(a),2),c=R(s);j(s),j(a),j(r),j(n);var l=B(n,2);ax(l,{get onLoadPage(){return U(()=>m.loadRecentActions)}});var u=B(l,2),h=R(u),g=R(h);Ta(g);var _=B(g,2);Q(R(_),{name:`send`,size:16,strokeWidth:2}),j(_),j(h),j(u),j(t),V(e=>{J(c,`${o()??``} events tracked`),Ea(g,H(d)),g.disabled=H(f),_.disabled=e},[()=>(H(d),H(f),U(()=>!H(d).trim()||H(f)))]),G(`input`,g,e=>L(d,e.currentTarget.value)),G(`keydown`,g,e=>e.key===`Enter`&&!e.shiftKey&&p()),G(`click`,_,p),q(e,t)};Y(k,e=>{n()===`activity`&&e(ee)});var te=B(k,2),ne=e=>{var t=_E(),n=R(t);Q(R(n),{name:`brain`,size:14,strokeWidth:1.75}),M(2),j(n),Ba(wb(B(n,2),{get onMemoryClick(){return U(()=>m.openMemoryDrawer)},get onNewMemory(){return U(()=>m.openNewMemoryDrawer)},onBulkImport:()=>m.openBulkImport(`memories`),$$legacy:!0}),e=>L(u,e),()=>H(u)),j(t),q(e,t)};Y(te,e=>{n()===`memories`&&e(ne)});var re=B(te,2),ie=e=>{var t=vE(),n=R(t),r=R(n);Q(R(r),{name:`columns`,size:14,strokeWidth:1.75}),M(2),j(r),Ba(wd(B(r,2),{get onTaskClick(){return U(()=>m.openTaskDrawer)},onAddTask:()=>m.toggleAddTaskModal(!0),onBulkImport:()=>m.openBulkImport(`tasks`),$$legacy:!0}),e=>L(l,e),()=>H(l)),j(n),j(t),q(e,t)};Y(re,e=>{n()===`tasks`&&e(ie)});var A=B(re,2),ae=e=>{{let t=dn(()=>a()||``);ow(e,{get repo(){return H(t)}})}};Y(A,e=>{n()===`standards`&&e(ae)});var oe=B(A,2),se=e=>{{let t=dn(()=>a()||``);gw(e,{get repo(){return H(t)}})}};Y(oe,e=>{n()===`handoffs`&&e(se)});var ce=B(oe,2),le=e=>{{let t=dn(()=>a()||``);$w(e,{get repo(){return H(t)}})}};Y(ce,e=>{n()===`knowledge-graph`&&e(le)});var ue=B(ce,2),de=e=>{var t=yE();$T(R(t),{}),j(t),q(e,t)};Y(ue,e=>{n()===`arena`&&e(de)});var fe=B(ue,2),pe=e=>{zC(e,{get handler(){return m},get appState(){return h},get filteredTools(){return g},get filteredPrompts(){return _},get filteredResources(){return v}})};Y(fe,e=>{n()===`reference`&&e(pe)}),V(()=>{c=la(s,1,`tab-btn`,null,c,{active:n()===`activity`}),ka(s,`aria-selected`,n()===`activity`),b=la(y,1,`tab-btn`,null,b,{active:n()===`memories`}),ka(y,`aria-selected`,n()===`memories`),S=la(x,1,`tab-btn`,null,S,{active:n()===`tasks`}),ka(x,`aria-selected`,n()===`tasks`),w=la(C,1,`tab-btn`,null,w,{active:n()===`handoffs`}),ka(C,`aria-selected`,n()===`handoffs`),E=la(T,1,`tab-btn`,null,E,{active:n()===`knowledge-graph`}),ka(T,`aria-selected`,n()===`knowledge-graph`)}),G(`click`,s,()=>m.onTabChange(`activity`)),G(`click`,y,()=>m.onTabChange(`memories`)),G(`click`,x,()=>m.onTabChange(`tasks`)),G(`click`,C,()=>m.onTabChange(`handoffs`)),G(`click`,T,()=>m.onTabChange(`knowledge-graph`)),q(e,t)};Y(k,e=>{!a()&&n()!==`dashboard`&&n()!==`arena`?e(ee):e(te,-1)}),j(O),j(C),j(x);var ne=B(x,2);{let e=dn(()=>(i(),U(()=>i().selectedMemory?`memory`:`task`)));cS(ne,{get drawerMode(){return H(e)},get memory(){return i(),U(()=>i().selectedMemory)},get task(){return i(),U(()=>i().selectedTask)},get open(){return i(),U(()=>i().drawerOpen)},get onClose(){return U(()=>m.closeDrawer)},get onTaskUpdated(){return U(()=>m.handleTaskUpdated)},onTaskDeleted:()=>{a()&&H(l)?.loadTasks(a())}})}var re=B(ne,2);AS(re,{get item(){return i(),U(()=>i().selectedReference)},get open(){return i(),U(()=>i().referenceDrawerOpen)},onClose:()=>m.toggleReferenceDrawer(!1)});var ie=B(re,2);XS(ie,{get memory(){return i(),U(()=>i().memoryDrawerItem)},get open(){return i(),U(()=>i().memoryDrawerOpen)},onClose:()=>m.toggleMemoryDrawer(!1),get onSaved(){return U(()=>m.handleMemorySaved)},get onDeleted(){return U(()=>m.handleMemoryDeleted)}});var A=B(ie,2);gC(A,{get open(){return i(),U(()=>i().addTaskModalOpen)},get newTask(){return i(),U(()=>i().newTask)},onClose:()=>m.toggleAddTaskModal(!1),get onSave(){return U(()=>m.createTask)}});var ae=B(A,2);{let e=dn(()=>a()||``);fC(ae,{get repo(){return H(e)},get importTarget(){return i(),U(()=>i().bulkImportTarget)},get isOpen(){return i(),U(()=>i().bulkImportOpen)},$$events:{close:()=>m.toggleBulkImport(!1),success:()=>{i().bulkImportTarget===`memories`&&H(u)?.refresh(),i().bulkImportTarget===`tasks`&&a()&&H(l)?.loadTasks(a())}}})}YC(B(ae,2),{get onRefresh(){return U(()=>m.onRefresh)}}),V(()=>w=la(C,1,`main-content`,null,w,{"sidebar-collapsed":r()})),q(e,b),it(),c()}Oi(SE,{target:document.getElementById(`app`)});
|