vibe-forge 0.8.3 → 0.8.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/.claude/commands/clear-attention.md +63 -63
- package/.claude/commands/compact-context.md +52 -52
- package/.claude/commands/need-help.md +77 -77
- package/.claude/commands/update-status.md +64 -64
- package/.claude/commands/worker-loop.md +106 -106
- package/.claude/scripts/setup-worker-loop.sh +45 -45
- package/LICENSE +21 -21
- package/README.md +211 -211
- package/bin/cli.js +127 -33
- package/bin/dashboard/api/agents.js +333 -333
- package/bin/dashboard/api/dispatch.js +507 -507
- package/bin/dashboard/api/tasks.js +416 -416
- package/bin/dashboard/public/assets/index-Dm2PgE2m.js +2 -0
- package/bin/dashboard/public/index.html +13 -13
- package/bin/dashboard/server.js +574 -645
- package/config/agent-manifest.yaml +237 -237
- package/config/agents.json +207 -207
- package/config/task-types.yaml +111 -111
- package/context/agent-overrides/README.md +41 -41
- package/context/architecture.md +42 -42
- package/context/modern-conventions.md +129 -129
- package/docs/agents.md +473 -473
- package/docs/architecture.md +194 -194
- package/docs/commands.md +451 -451
- package/docs/security.md +195 -195
- package/package.json +2 -3
- package/bin/dashboard/public/assets/index-BpHfsx1r.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var va=Object.defineProperty;var hr=e=>{throw TypeError(e)};var pa=(e,t,n)=>t in e?va(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Re=(e,t,n)=>pa(e,typeof t!="symbol"?t+"":t,n),cs=(e,t,n)=>t.has(e)||hr("Cannot "+n);var p=(e,t,n)=>(cs(e,t,"read from private field"),n?n.call(e):t.get(e)),H=(e,t,n)=>t.has(e)?hr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),U=(e,t,n,s)=>(cs(e,t,"write to private field"),s?s.call(e,n):t.set(e,n),n),ie=(e,t,n)=>(cs(e,t,"access private method"),n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();const ha="5";var Nr;typeof window<"u"&&((Nr=window.__svelte??(window.__svelte={})).v??(Nr.v=new Set)).add(ha);let cn=!1,_a=!1;function ga(){cn=!0}ga();const ba=1,ma=2,Lr=4,ya=8,wa=16,ka=2,Ea=4,xa=8,Ta=1,Sa=2,ae=Symbol(),$a="http://www.w3.org/1999/xhtml",hs=!1;var Or=Array.isArray,Aa=Array.prototype.indexOf,ts=Array.from,Fr=Object.defineProperty,Ht=Object.getOwnPropertyDescriptor,Pr=Object.getOwnPropertyDescriptors,Ia=Object.prototype,Ca=Array.prototype,Bs=Object.getPrototypeOf,_r=Object.isExtensible;const dt=()=>{};function Da(e){return e()}function Vn(e){for(var t=0;t<e.length;t++)e[t]()}function Rr(){var e,t,n=new Promise((s,r)=>{e=s,t=r});return{promise:n,resolve:e,reject:t}}const ue=2,qn=4,En=8,Br=1<<24,st=16,rt=32,Lt=64,Us=128,Ne=512,le=1024,_e=2048,Xe=4096,Ae=8192,tt=16384,js=32768,en=65536,gr=1<<17,Ur=1<<18,un=1<<19,jr=1<<20,Qe=1<<25,Dt=32768,_s=1<<21,Hs=1<<22,vt=1<<23,$t=Symbol("$state"),Ma=Symbol("legacy props"),Na=Symbol(""),Bt=new class extends Error{constructor(){super(...arguments);Re(this,"name","StaleReactionError");Re(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};function Hr(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function La(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Oa(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Fa(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Pa(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Ra(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Ba(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Ua(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function ja(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Ha(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}function Va(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function Vr(e){return e===this.v}function qr(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function Gr(e){return!qr(e,this.v)}let Z=null;function tn(e){Z=e}function fe(e,t=!1,n){Z={p:Z,i:!1,c:null,e:null,s:e,x:null,l:cn&&!t?{s:null,u:null,$:[]}:null}}function de(e){var t=Z,n=t.e;if(n!==null){t.e=null;for(var s of n)ui(s)}return t.i=!0,Z=t.p,{}}function xn(){return!cn||Z!==null&&Z.l===null}let Ut=[];function qa(){var e=Ut;Ut=[],Vn(e)}function Tn(e){if(Ut.length===0){var t=Ut;queueMicrotask(()=>{t===Ut&&qa()})}Ut.push(e)}function Kr(e){var t=G;if(t===null)return R.f|=vt,e;if(t.f&js)nn(e,t);else{if(!(t.f&Us))throw e;t.b.error(e)}}function nn(e,t){for(;t!==null;){if(t.f&Us)try{t.b.error(e);return}catch(n){e=n}t=t.parent}throw e}const Ga=-7169;function ne(e,t){e.f=e.f&Ga|t}function Vs(e){e.f&Ne||e.deps===null?ne(e,le):ne(e,Xe)}function Yr(e){if(e!==null)for(const t of e)!(t.f&ue)||!(t.f&Dt)||(t.f^=Dt,Yr(t.deps))}function Wr(e,t,n){e.f&_e?t.add(e):e.f&Xe&&n.add(e),Yr(e.deps),ne(e,le)}const Dn=new Set;let X=null,oe=null,qe=[],qs=null,gs=!1;var Wt,zt,wt,kt,yn,Xt,Jt,Fe,bs,ms,zr,Xr;const Zn=class Zn{constructor(){H(this,Fe);Re(this,"committed",!1);Re(this,"current",new Map);Re(this,"previous",new Map);H(this,Wt,new Set);H(this,zt,new Set);H(this,wt,0);H(this,kt,0);H(this,yn,null);H(this,Xt,new Set);H(this,Jt,new Set);Re(this,"skipped_effects",new Set);Re(this,"is_fork",!1)}is_deferred(){return this.is_fork||p(this,kt)>0}process(t){var r;qe=[],this.apply();var n=[],s=[];for(const i of t)ie(this,Fe,bs).call(this,i,n,s);this.is_fork||ie(this,Fe,zr).call(this),this.is_deferred()?(ie(this,Fe,ms).call(this,s),ie(this,Fe,ms).call(this,n)):(X=null,br(s),br(n),(r=p(this,yn))==null||r.resolve()),oe=null}capture(t,n){n!==ae&&!this.previous.has(t)&&this.previous.set(t,n),t.f&vt||(this.current.set(t,t.v),oe==null||oe.set(t,t.v))}activate(){X=this,this.apply()}deactivate(){X===this&&(X=null,oe=null)}flush(){if(this.activate(),qe.length>0){if(Ka(),X!==null&&X!==this)return}else p(this,wt)===0&&this.process([]);this.deactivate()}discard(){for(const t of p(this,zt))t(this);p(this,zt).clear()}increment(t){U(this,wt,p(this,wt)+1),t&&U(this,kt,p(this,kt)+1)}decrement(t){U(this,wt,p(this,wt)-1),t&&U(this,kt,p(this,kt)-1),this.revive()}revive(){for(const t of p(this,Xt))p(this,Jt).delete(t),ne(t,_e),nt(t);for(const t of p(this,Jt))ne(t,Xe),nt(t);this.flush()}oncommit(t){p(this,Wt).add(t)}ondiscard(t){p(this,zt).add(t)}settled(){return(p(this,yn)??U(this,yn,Rr())).promise}static ensure(){if(X===null){const t=X=new Zn;Dn.add(X),Zn.enqueue(()=>{X===t&&t.flush()})}return X}static enqueue(t){Tn(t)}apply(){}};Wt=new WeakMap,zt=new WeakMap,wt=new WeakMap,kt=new WeakMap,yn=new WeakMap,Xt=new WeakMap,Jt=new WeakMap,Fe=new WeakSet,bs=function(t,n,s){t.f^=le;for(var r=t.first,i=null;r!==null;){var o=r.f,l=(o&(rt|Lt))!==0,a=l&&(o&le)!==0,c=a||(o&Ae)!==0||this.skipped_effects.has(r);if(!c&&r.fn!==null){l?r.f^=le:i!==null&&o&(qn|En|Br)?i.b.defer_effect(r):o&qn?n.push(r):fn(r)&&(o&st&&p(this,Xt).add(r),an(r));var u=r.first;if(u!==null){r=u;continue}}var g=r.parent;for(r=r.next;r===null&&g!==null;)g===i&&(i=null),r=g.next,g=g.parent}},ms=function(t){for(var n=0;n<t.length;n+=1)Wr(t[n],p(this,Xt),p(this,Jt))},zr=function(){if(p(this,kt)===0){for(const t of p(this,Wt))t();p(this,Wt).clear()}p(this,wt)===0&&ie(this,Fe,Xr).call(this)},Xr=function(){var r;if(Dn.size>1){this.previous.clear();var t=oe,n=!0;for(const i of Dn){if(i===this){n=!1;continue}const o=[];for(const[a,c]of this.current){if(i.current.has(a))if(n&&c!==i.current.get(a))i.current.set(a,c);else continue;o.push(a)}if(o.length===0)continue;const l=[...i.current.keys()].filter(a=>!this.current.has(a));if(l.length>0){var s=qe;qe=[];const a=new Set,c=new Map;for(const u of o)Jr(u,l,a,c);if(qe.length>0){X=i,i.apply();for(const u of qe)ie(r=i,Fe,bs).call(r,u,[],[]);i.deactivate()}qe=s}}X=null,oe=t}this.committed=!0,Dn.delete(this)};let et=Zn;function Ka(){var e=It;gs=!0;var t=null;try{var n=0;for(Kn(!0);qe.length>0;){var s=et.ensure();if(n++>1e3){var r,i;Ya()}s.process(qe),pt.clear()}}finally{gs=!1,Kn(e),qs=null}}function Ya(){try{Ra()}catch(e){nn(e,qs)}}let Be=null;function br(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var s=e[n++];if(!(s.f&(tt|Ae))&&fn(s)&&(Be=new Set,an(s),s.deps===null&&s.first===null&&s.nodes===null&&(s.teardown===null&&s.ac===null?vi(s):s.fn=null),(Be==null?void 0:Be.size)>0)){pt.clear();for(const r of Be){if(r.f&(tt|Ae))continue;const i=[r];let o=r.parent;for(;o!==null;)Be.has(o)&&(Be.delete(o),i.push(o)),o=o.parent;for(let l=i.length-1;l>=0;l--){const a=i[l];a.f&(tt|Ae)||an(a)}}Be.clear()}}Be=null}}function Jr(e,t,n,s){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(const r of e.reactions){const i=r.f;i&ue?Jr(r,t,n,s):i&(Hs|st)&&!(i&_e)&&Zr(r,t,s)&&(ne(r,_e),nt(r))}}function Zr(e,t,n){const s=n.get(e);if(s!==void 0)return s;if(e.deps!==null)for(const r of e.deps){if(t.includes(r))return!0;if(r.f&ue&&Zr(r,t,n))return n.set(r,!0),!0}return n.set(e,!1),!1}function nt(e){for(var t=qs=e;t.parent!==null;){t=t.parent;var n=t.f;if(gs&&t===G&&n&st&&!(n&Ur))return;if(n&(Lt|rt)){if(!(n&le))return;t.f^=le}}qe.push(t)}function Wa(e){let t=0,n=Mt(0),s;return()=>{Ws()&&(d(n),ns(()=>(t===0&&(s=N(()=>e(()=>hn(n)))),t+=1,()=>{Tn(()=>{t-=1,t===0&&(s==null||s(),s=void 0,hn(n))})})))}}var za=en|un|Us;function Xa(e,t,n){new Ja(e,t,n)}var Ce,Rs,Ge,Et,Ke,De,me,Ye,Ze,ct,xt,ut,Tt,Zt,Qt,ft,Qn,re,Za,Qa,ys,Ln,On,ws;class Ja{constructor(t,n,s){H(this,re);Re(this,"parent");Re(this,"is_pending",!1);H(this,Ce);H(this,Rs,null);H(this,Ge);H(this,Et);H(this,Ke);H(this,De,null);H(this,me,null);H(this,Ye,null);H(this,Ze,null);H(this,ct,null);H(this,xt,0);H(this,ut,0);H(this,Tt,!1);H(this,Zt,new Set);H(this,Qt,new Set);H(this,ft,null);H(this,Qn,Wa(()=>(U(this,ft,Mt(p(this,xt))),()=>{U(this,ft,null)})));U(this,Ce,t),U(this,Ge,n),U(this,Et,s),this.parent=G.b,this.is_pending=!!p(this,Ge).pending,U(this,Ke,zs(()=>{G.b=this;{var r=ie(this,re,ys).call(this);try{U(this,De,Me(()=>s(r)))}catch(i){this.error(i)}p(this,ut)>0?ie(this,re,On).call(this):this.is_pending=!1}return()=>{var i;(i=p(this,ct))==null||i.remove()}},za))}defer_effect(t){Wr(t,p(this,Zt),p(this,Qt))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!p(this,Ge).pending}update_pending_count(t){ie(this,re,ws).call(this,t),U(this,xt,p(this,xt)+t),p(this,ft)&&sn(p(this,ft),p(this,xt))}get_effect_pending(){return p(this,Qn).call(this),d(p(this,ft))}error(t){var n=p(this,Ge).onerror;let s=p(this,Ge).failed;if(p(this,Tt)||!n&&!s)throw t;p(this,De)&&(Ee(p(this,De)),U(this,De,null)),p(this,me)&&(Ee(p(this,me)),U(this,me,null)),p(this,Ye)&&(Ee(p(this,Ye)),U(this,Ye,null));var r=!1,i=!1;const o=()=>{if(r){Va();return}r=!0,i&&Ha(),et.ensure(),U(this,xt,0),p(this,Ye)!==null&&At(p(this,Ye),()=>{U(this,Ye,null)}),this.is_pending=this.has_pending_snippet(),U(this,De,ie(this,re,Ln).call(this,()=>(U(this,Tt,!1),Me(()=>p(this,Et).call(this,p(this,Ce)))))),p(this,ut)>0?ie(this,re,On).call(this):this.is_pending=!1};var l=R;try{we(null),i=!0,n==null||n(t,o),i=!1}catch(a){nn(a,p(this,Ke)&&p(this,Ke).parent)}finally{we(l)}s&&Tn(()=>{U(this,Ye,ie(this,re,Ln).call(this,()=>{et.ensure(),U(this,Tt,!0);try{return Me(()=>{s(p(this,Ce),()=>t,()=>o)})}catch(a){return nn(a,p(this,Ke).parent),null}finally{U(this,Tt,!1)}}))})}}Ce=new WeakMap,Rs=new WeakMap,Ge=new WeakMap,Et=new WeakMap,Ke=new WeakMap,De=new WeakMap,me=new WeakMap,Ye=new WeakMap,Ze=new WeakMap,ct=new WeakMap,xt=new WeakMap,ut=new WeakMap,Tt=new WeakMap,Zt=new WeakMap,Qt=new WeakMap,ft=new WeakMap,Qn=new WeakMap,re=new WeakSet,Za=function(){try{U(this,De,Me(()=>p(this,Et).call(this,p(this,Ce))))}catch(t){this.error(t)}},Qa=function(){const t=p(this,Ge).pending;t&&(U(this,me,Me(()=>t(p(this,Ce)))),et.enqueue(()=>{var n=ie(this,re,ys).call(this);U(this,De,ie(this,re,Ln).call(this,()=>(et.ensure(),Me(()=>p(this,Et).call(this,n))))),p(this,ut)>0?ie(this,re,On).call(this):(At(p(this,me),()=>{U(this,me,null)}),this.is_pending=!1)}))},ys=function(){var t=p(this,Ce);return this.is_pending&&(U(this,ct,ht()),p(this,Ce).before(p(this,ct)),t=p(this,ct)),t},Ln=function(t){var n=G,s=R,r=Z;ze(p(this,Ke)),we(p(this,Ke)),tn(p(this,Ke).ctx);try{return t()}catch(i){return Kr(i),null}finally{ze(n),we(s),tn(r)}},On=function(){const t=p(this,Ge).pending;p(this,De)!==null&&(U(this,Ze,document.createDocumentFragment()),p(this,Ze).append(p(this,ct)),_i(p(this,De),p(this,Ze))),p(this,me)===null&&U(this,me,Me(()=>t(p(this,Ce))))},ws=function(t){var n;if(!this.has_pending_snippet()){this.parent&&ie(n=this.parent,re,ws).call(n,t);return}if(U(this,ut,p(this,ut)+t),p(this,ut)===0){this.is_pending=!1;for(const s of p(this,Zt))ne(s,_e),nt(s);for(const s of p(this,Qt))ne(s,Xe),nt(s);p(this,Zt).clear(),p(this,Qt).clear(),p(this,me)&&At(p(this,me),()=>{U(this,me,null)}),p(this,Ze)&&(p(this,Ce).before(p(this,Ze)),U(this,Ze,null))}};function eo(e,t,n,s){const r=xn()?Gs:Ks;if(n.length===0&&e.length===0){s(t.map(r));return}var i=X,o=G,l=to();function a(){Promise.all(n.map(c=>no(c))).then(c=>{l();try{s([...t.map(r),...c])}catch(u){o.f&tt||nn(u,o)}i==null||i.deactivate(),Gn()}).catch(c=>{nn(c,o)})}e.length>0?Promise.all(e).then(()=>{l();try{return a()}finally{i==null||i.deactivate(),Gn()}}):a()}function to(){var e=G,t=R,n=Z,s=X;return function(i=!0){ze(e),we(t),tn(n),i&&(s==null||s.activate())}}function Gn(){ze(null),we(null),tn(null)}function Gs(e){var t=ue|_e,n=R!==null&&R.f&ue?R:null;return G!==null&&(G.f|=un),{ctx:Z,deps:null,effects:null,equals:Vr,f:t,fn:e,reactions:null,rv:0,v:ae,wv:0,parent:n??G,ac:null}}function no(e,t,n){let s=G;s===null&&La();var r=s.b,i=void 0,o=Mt(ae),l=!R,a=new Map;return fo(()=>{var v;var c=Rr();i=c.promise;try{Promise.resolve(e()).then(c.resolve,c.reject).then(()=>{u===X&&u.committed&&u.deactivate(),Gn()})}catch(y){c.reject(y),Gn()}var u=X;if(l){var g=r.is_rendered();r.update_pending_count(1),u.increment(g),(v=a.get(u))==null||v.reject(Bt),a.delete(u),a.set(u,c)}const f=(y,T=void 0)=>{if(u.activate(),T)T!==Bt&&(o.f|=vt,sn(o,T));else{o.f&vt&&(o.f^=vt),sn(o,y);for(const[_,k]of a){if(a.delete(_),_===u)break;k.reject(Bt)}}l&&(r.update_pending_count(-1),u.decrement(g))};c.promise.then(f,y=>f(null,y||"unknown"))}),ci(()=>{for(const c of a.values())c.reject(Bt)}),new Promise(c=>{function u(g){function f(){g===i?c(o):u(i)}g.then(f,f)}u(i)})}function Ks(e){const t=Gs(e);return t.equals=Gr,t}function Qr(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)Ee(t[n])}}function so(e){for(var t=e.parent;t!==null;){if(!(t.f&ue))return t.f&tt?null:t;t=t.parent}return null}function Ys(e){var t,n=G;ze(so(e));try{e.f&=~Dt,Qr(e),t=yi(e)}finally{ze(n)}return t}function ei(e){var t=Ys(e);if(!e.equals(t)&&(e.wv=bi(),(!(X!=null&&X.is_fork)||e.deps===null)&&(e.v=t,e.deps===null))){ne(e,le);return}gt||(oe!==null?(Ws()||X!=null&&X.is_fork)&&oe.set(e,t):Vs(e))}let ks=new Set;const pt=new Map;let ti=!1;function Mt(e,t){var n={f:0,v:e,reactions:null,equals:Vr,rv:0,wv:0};return n}function at(e,t){const n=Mt(e);return ho(n),n}function z(e,t=!1,n=!0){var r;const s=Mt(e);return t||(s.equals=Gr),cn&&n&&Z!==null&&Z.l!==null&&((r=Z.l).s??(r.s=[])).push(s),s}function B(e,t,n=!1){R!==null&&(!He||R.f&gr)&&xn()&&R.f&(ue|st|Hs|gr)&&!(he!=null&&he.includes(e))&&ja();let s=n?jt(t):t;return sn(e,s)}function sn(e,t){if(!e.equals(t)){var n=e.v;gt?pt.set(e,t):pt.set(e,n),e.v=t;var s=et.ensure();if(s.capture(e,n),e.f&ue){const r=e;e.f&_e&&Ys(r),Vs(r)}e.wv=bi(),ni(e,_e),xn()&&G!==null&&G.f&le&&!(G.f&(rt|Lt))&&(Ie===null?_o([e]):Ie.push(e)),!s.is_fork&&ks.size>0&&!ti&&ro()}return t}function ro(){ti=!1;var e=It;Kn(!0);const t=Array.from(ks);try{for(const n of t)n.f&le&&ne(n,Xe),fn(n)&&an(n)}finally{Kn(e)}ks.clear()}function hn(e){B(e,e.v+1)}function ni(e,t){var n=e.reactions;if(n!==null)for(var s=xn(),r=n.length,i=0;i<r;i++){var o=n[i],l=o.f;if(!(!s&&o===G)){var a=(l&_e)===0;if(a&&ne(o,t),l&ue){var c=o;oe==null||oe.delete(c),l&Dt||(l&Ne&&(o.f|=Dt),ni(c,Xe))}else a&&(l&st&&Be!==null&&Be.add(o),nt(o))}}}function jt(e){if(typeof e!="object"||e===null||$t in e)return e;const t=Bs(e);if(t!==Ia&&t!==Ca)return e;var n=new Map,s=Or(e),r=at(0),i=Ct,o=l=>{if(Ct===i)return l();var a=R,c=Ct;we(null),wr(i);var u=l();return we(a),wr(c),u};return s&&n.set("length",at(e.length)),new Proxy(e,{defineProperty(l,a,c){(!("value"in c)||c.configurable===!1||c.enumerable===!1||c.writable===!1)&&Ba();var u=n.get(a);return u===void 0?u=o(()=>{var g=at(c.value);return n.set(a,g),g}):B(u,c.value,!0),!0},deleteProperty(l,a){var c=n.get(a);if(c===void 0){if(a in l){const u=o(()=>at(ae));n.set(a,u),hn(r)}}else B(c,ae),hn(r);return!0},get(l,a,c){var v;if(a===$t)return e;var u=n.get(a),g=a in l;if(u===void 0&&(!g||(v=Ht(l,a))!=null&&v.writable)&&(u=o(()=>{var y=jt(g?l[a]:ae),T=at(y);return T}),n.set(a,u)),u!==void 0){var f=d(u);return f===ae?void 0:f}return Reflect.get(l,a,c)},getOwnPropertyDescriptor(l,a){var c=Reflect.getOwnPropertyDescriptor(l,a);if(c&&"value"in c){var u=n.get(a);u&&(c.value=d(u))}else if(c===void 0){var g=n.get(a),f=g==null?void 0:g.v;if(g!==void 0&&f!==ae)return{enumerable:!0,configurable:!0,value:f,writable:!0}}return c},has(l,a){var f;if(a===$t)return!0;var c=n.get(a),u=c!==void 0&&c.v!==ae||Reflect.has(l,a);if(c!==void 0||G!==null&&(!u||(f=Ht(l,a))!=null&&f.writable)){c===void 0&&(c=o(()=>{var v=u?jt(l[a]):ae,y=at(v);return y}),n.set(a,c));var g=d(c);if(g===ae)return!1}return u},set(l,a,c,u){var S;var g=n.get(a),f=a in l;if(s&&a==="length")for(var v=c;v<g.v;v+=1){var y=n.get(v+"");y!==void 0?B(y,ae):v in l&&(y=o(()=>at(ae)),n.set(v+"",y))}if(g===void 0)(!f||(S=Ht(l,a))!=null&&S.writable)&&(g=o(()=>at(void 0)),B(g,jt(c)),n.set(a,g));else{f=g.v!==ae;var T=o(()=>jt(c));B(g,T)}var _=Reflect.getOwnPropertyDescriptor(l,a);if(_!=null&&_.set&&_.set.call(u,c),!f){if(s&&typeof a=="string"){var k=n.get("length"),I=Number(a);Number.isInteger(I)&&I>=k.v&&B(k,I+1)}hn(r)}return!0},ownKeys(l){d(r);var a=Reflect.ownKeys(l).filter(g=>{var f=n.get(g);return f===void 0||f.v!==ae});for(var[c,u]of n)u.v!==ae&&!(c in l)&&a.push(c);return a},setPrototypeOf(){Ua()}})}var mr,si,ri,ii;function io(){if(mr===void 0){mr=window,si=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;ri=Ht(t,"firstChild").get,ii=Ht(t,"nextSibling").get,_r(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),_r(n)&&(n.__t=void 0)}}function ht(e=""){return document.createTextNode(e)}function rn(e){return ri.call(e)}function Sn(e){return ii.call(e)}function h(e,t){return rn(e)}function ce(e,t=!1){{var n=rn(e);return n instanceof Comment&&n.data===""?Sn(n):n}}function w(e,t=1,n=!1){let s=e;for(;t--;)s=Sn(s);return s}function ao(e){e.textContent=""}function ai(){return!1}function oi(e){var t=R,n=G;we(null),ze(null);try{return e()}finally{we(t),ze(n)}}function li(e){G===null&&(R===null&&Pa(),Fa()),gt&&Oa()}function oo(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Je(e,t,n){var s=G;s!==null&&s.f&Ae&&(e|=Ae);var r={ctx:Z,deps:null,nodes:null,f:e|_e|Ne,first:null,fn:t,last:null,next:null,parent:s,b:s&&s.b,prev:null,teardown:null,wv:0,ac:null};if(n)try{an(r),r.f|=js}catch(l){throw Ee(r),l}else t!==null&&nt(r);var i=r;if(n&&i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&un)&&(i=i.first,e&st&&e&en&&i!==null&&(i.f|=en)),i!==null&&(i.parent=s,s!==null&&oo(i,s),R!==null&&R.f&ue&&!(e&Lt))){var o=R;(o.effects??(o.effects=[])).push(i)}return r}function Ws(){return R!==null&&!He}function ci(e){const t=Je(En,null,!1);return ne(t,le),t.teardown=e,t}function Es(e){li();var t=G.f,n=!R&&(t&rt)!==0&&(t&js)===0;if(n){var s=Z;(s.e??(s.e=[])).push(e)}else return ui(e)}function ui(e){return Je(qn|jr,e,!1)}function lo(e){return li(),Je(En|jr,e,!0)}function co(e){et.ensure();const t=Je(Lt|un,e,!0);return(n={})=>new Promise(s=>{n.outro?At(t,()=>{Ee(t),s(void 0)}):(Ee(t),s(void 0))})}function uo(e){return Je(qn,e,!1)}function ee(e,t){var n=Z,s={effect:null,ran:!1,deps:e};n.l.$.push(s),s.effect=ns(()=>{e(),!s.ran&&(s.ran=!0,N(t))})}function Ot(){var e=Z;ns(()=>{for(var t of e.l.$){t.deps();var n=t.effect;n.f&le&&n.deps!==null&&ne(n,Xe),fn(n)&&an(n),t.ran=!1}})}function fo(e){return Je(Hs|un,e,!0)}function ns(e,t=0){return Je(En|t,e,!0)}function J(e,t=[],n=[],s=[]){eo(s,t,n,r=>{Je(En,()=>e(...r.map(d)),!0)})}function zs(e,t=0){var n=Je(st|t,e,!0);return n}function Me(e){return Je(rt|un,e,!0)}function fi(e){var t=e.teardown;if(t!==null){const n=gt,s=R;yr(!0),we(null);try{t.call(null)}finally{yr(n),we(s)}}}function di(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const r=n.ac;r!==null&&oi(()=>{r.abort(Bt)});var s=n.next;n.f&Lt?n.parent=null:Ee(n,t),n=s}}function vo(e){for(var t=e.first;t!==null;){var n=t.next;t.f&rt||Ee(t),t=n}}function Ee(e,t=!0){var n=!1;(t||e.f&Ur)&&e.nodes!==null&&e.nodes.end!==null&&(po(e.nodes.start,e.nodes.end),n=!0),di(e,t&&!n),Yn(e,0),ne(e,tt);var s=e.nodes&&e.nodes.t;if(s!==null)for(const i of s)i.stop();fi(e);var r=e.parent;r!==null&&r.first!==null&&vi(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function po(e,t){for(;e!==null;){var n=e===t?null:Sn(e);e.remove(),e=n}}function vi(e){var t=e.parent,n=e.prev,s=e.next;n!==null&&(n.next=s),s!==null&&(s.prev=n),t!==null&&(t.first===e&&(t.first=s),t.last===e&&(t.last=n))}function At(e,t,n=!0){var s=[];pi(e,s,!0);var r=()=>{n&&Ee(e),t&&t()},i=s.length;if(i>0){var o=()=>--i||r();for(var l of s)l.out(o)}else r()}function pi(e,t,n){if(!(e.f&Ae)){e.f^=Ae;var s=e.nodes&&e.nodes.t;if(s!==null)for(const l of s)(l.is_global||n)&&t.push(l);for(var r=e.first;r!==null;){var i=r.next,o=(r.f&en)!==0||(r.f&rt)!==0&&(e.f&st)!==0;pi(r,t,o?n:!1),r=i}}}function Xs(e){hi(e,!0)}function hi(e,t){if(e.f&Ae){e.f^=Ae,e.f&le||(ne(e,_e),nt(e));for(var n=e.first;n!==null;){var s=n.next,r=(n.f&en)!==0||(n.f&rt)!==0;hi(n,r?t:!1),n=s}var i=e.nodes&&e.nodes.t;if(i!==null)for(const o of i)(o.is_global||t)&&o.in()}}function _i(e,t){if(e.nodes)for(var n=e.nodes.start,s=e.nodes.end;n!==null;){var r=n===s?null:Sn(n);t.append(n),n=r}}let It=!1;function Kn(e){It=e}let gt=!1;function yr(e){gt=e}let R=null,He=!1;function we(e){R=e}let G=null;function ze(e){G=e}let he=null;function ho(e){R!==null&&(he===null?he=[e]:he.push(e))}let pe=null,Se=0,Ie=null;function _o(e){Ie=e}let gi=1,bn=0,Ct=bn;function wr(e){Ct=e}function bi(){return++gi}function fn(e){var t=e.f;if(t&_e)return!0;if(t&ue&&(e.f&=~Dt),t&Xe){for(var n=e.deps,s=n.length,r=0;r<s;r++){var i=n[r];if(fn(i)&&ei(i),i.wv>e.wv)return!0}t&Ne&&oe===null&&ne(e,le)}return!1}function mi(e,t,n=!0){var s=e.reactions;if(s!==null&&!(he!=null&&he.includes(e)))for(var r=0;r<s.length;r++){var i=s[r];i.f&ue?mi(i,t,!1):t===i&&(n?ne(i,_e):i.f&le&&ne(i,Xe),nt(i))}}function yi(e){var y;var t=pe,n=Se,s=Ie,r=R,i=he,o=Z,l=He,a=Ct,c=e.f;pe=null,Se=0,Ie=null,R=c&(rt|Lt)?null:e,he=null,tn(e.ctx),He=!1,Ct=++bn,e.ac!==null&&(oi(()=>{e.ac.abort(Bt)}),e.ac=null);try{e.f|=_s;var u=e.fn,g=u(),f=e.deps;if(pe!==null){var v;if(Yn(e,Se),f!==null&&Se>0)for(f.length=Se+pe.length,v=0;v<pe.length;v++)f[Se+v]=pe[v];else e.deps=f=pe;if(Ws()&&e.f&Ne)for(v=Se;v<f.length;v++)((y=f[v]).reactions??(y.reactions=[])).push(e)}else f!==null&&Se<f.length&&(Yn(e,Se),f.length=Se);if(xn()&&Ie!==null&&!He&&f!==null&&!(e.f&(ue|Xe|_e)))for(v=0;v<Ie.length;v++)mi(Ie[v],e);return r!==null&&r!==e&&(bn++,Ie!==null&&(s===null?s=Ie:s.push(...Ie))),e.f&vt&&(e.f^=vt),g}catch(T){return Kr(T)}finally{e.f^=_s,pe=t,Se=n,Ie=s,R=r,he=i,tn(o),He=l,Ct=a}}function go(e,t){let n=t.reactions;if(n!==null){var s=Aa.call(n,e);if(s!==-1){var r=n.length-1;r===0?n=t.reactions=null:(n[s]=n[r],n.pop())}}if(n===null&&t.f&ue&&(pe===null||!pe.includes(t))){var i=t;i.f&Ne&&(i.f^=Ne,i.f&=~Dt),Vs(i),Qr(i),Yn(i,0)}}function Yn(e,t){var n=e.deps;if(n!==null)for(var s=t;s<n.length;s++)go(e,n[s])}function an(e){var t=e.f;if(!(t&tt)){ne(e,le);var n=G,s=It;G=e,It=!0;try{t&(st|Br)?vo(e):di(e),fi(e);var r=yi(e);e.teardown=typeof r=="function"?r:null,e.wv=gi;var i;hs&&_a&&e.f&_e&&e.deps}finally{It=s,G=n}}}function d(e){var t=e.f,n=(t&ue)!==0;if(R!==null&&!He){var s=G!==null&&(G.f&tt)!==0;if(!s&&!(he!=null&&he.includes(e))){var r=R.deps;if(R.f&_s)e.rv<bn&&(e.rv=bn,pe===null&&r!==null&&r[Se]===e?Se++:pe===null?pe=[e]:pe.includes(e)||pe.push(e));else{(R.deps??(R.deps=[])).push(e);var i=e.reactions;i===null?e.reactions=[R]:i.includes(R)||i.push(R)}}}if(gt&&pt.has(e))return pt.get(e);if(n){var o=e;if(gt){var l=o.v;return(!(o.f&le)&&o.reactions!==null||ki(o))&&(l=Ys(o)),pt.set(o,l),l}var a=(o.f&Ne)===0&&!He&&R!==null&&(It||(R.f&Ne)!==0),c=o.deps===null;fn(o)&&(a&&(o.f|=Ne),ei(o)),a&&!c&&wi(o)}if(oe!=null&&oe.has(e))return oe.get(e);if(e.f&vt)throw e.v;return e.v}function wi(e){if(e.deps!==null){e.f|=Ne;for(const t of e.deps)(t.reactions??(t.reactions=[])).push(e),t.f&ue&&!(t.f&Ne)&&wi(t)}}function ki(e){if(e.v===ae)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(pt.has(t)||t.f&ue&&ki(t))return!0;return!1}function N(e){var t=He;try{return He=!0,e()}finally{He=t}}function F(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if($t in e)xs(e);else if(!Array.isArray(e))for(let t in e){const n=e[t];typeof n=="object"&&n&&$t in n&&xs(n)}}}function xs(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let s in e)try{xs(e[s],t)}catch{}const n=Bs(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){const s=Pr(n);for(let r in s){const i=s[r].get;if(i)try{i.call(e)}catch{}}}}}const Ei=new Set,Ts=new Set;function xe(e){for(var t=0;t<e.length;t++)Ei.add(e[t]);for(var n of Ts)n(e)}let kr=null;function Mn(e){var _;var t=this,n=t.ownerDocument,s=e.type,r=((_=e.composedPath)==null?void 0:_.call(e))||[],i=r[0]||e.target;kr=e;var o=0,l=kr===e&&e.__root;if(l){var a=r.indexOf(l);if(a!==-1&&(t===document||t===window)){e.__root=t;return}var c=r.indexOf(t);if(c===-1)return;a<=c&&(o=a)}if(i=r[o]||e.target,i!==t){Fr(e,"currentTarget",{configurable:!0,get(){return i||n}});var u=R,g=G;we(null),ze(null);try{for(var f,v=[];i!==null;){var y=i.assignedSlot||i.parentNode||i.host||null;try{var T=i["__"+s];T!=null&&(!i.disabled||e.target===i)&&T.call(i,e)}catch(k){f?v.push(k):f=k}if(e.cancelBubble||y===t||y===null)break;i=y}if(f){for(let k of v)queueMicrotask(()=>{throw k});throw f}}finally{e.__root=t,delete e.currentTarget,we(u),ze(g)}}}function xi(e){var t=document.createElement("template");return t.innerHTML=e.replaceAll("<!>","<!---->"),t.content}function Wn(e,t){var n=G;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function D(e,t){var n=(t&Ta)!==0,s=(t&Sa)!==0,r,i=!e.startsWith("<!>");return()=>{r===void 0&&(r=xi(i?e:"<!>"+e),n||(r=rn(r)));var o=s||si?document.importNode(r,!0):r.cloneNode(!0);if(n){var l=rn(o),a=o.lastChild;Wn(l,a)}else Wn(o,o);return o}}function bo(e,t,n="svg"){var s=!e.startsWith("<!>"),r=`<${n}>${s?e:"<!>"+e}</${n}>`,i;return()=>{if(!i){var o=xi(r),l=rn(o);i=rn(l)}var a=i.cloneNode(!0);return Wn(a,a),a}}function dn(e,t){return bo(e,t,"svg")}function Le(){var e=document.createDocumentFragment(),t=document.createComment(""),n=ht();return e.append(t,n),Wn(t,n),e}function $(e,t){e!==null&&e.before(t)}const mo=["touchstart","touchmove"];function yo(e){return mo.includes(e)}function O(e,t){var n=t==null?"":typeof t=="object"?t+"":t;n!==(e.__t??(e.__t=e.nodeValue))&&(e.__t=n,e.nodeValue=n+"")}function wo(e,t){return ko(e,t)}const Ft=new Map;function ko(e,{target:t,anchor:n,props:s={},events:r,context:i,intro:o=!0}){io();var l=new Set,a=g=>{for(var f=0;f<g.length;f++){var v=g[f];if(!l.has(v)){l.add(v);var y=yo(v);t.addEventListener(v,Mn,{passive:y});var T=Ft.get(v);T===void 0?(document.addEventListener(v,Mn,{passive:y}),Ft.set(v,1)):Ft.set(v,T+1)}}};a(ts(Ei)),Ts.add(a);var c=void 0,u=co(()=>{var g=n??t.appendChild(ht());return Xa(g,{pending:()=>{}},f=>{if(i){fe({});var v=Z;v.c=i}r&&(s.$$events=r),c=e(f,s)||{},i&&de()}),()=>{var y;for(var f of l){t.removeEventListener(f,Mn);var v=Ft.get(f);--v===0?(document.removeEventListener(f,Mn),Ft.delete(f)):Ft.set(f,v)}Ts.delete(a),g!==n&&((y=g.parentNode)==null||y.removeChild(g))}});return Eo.set(c,u),c}let Eo=new WeakMap;var Ue,We,$e,St,wn,kn,es;class xo{constructor(t,n=!0){Re(this,"anchor");H(this,Ue,new Map);H(this,We,new Map);H(this,$e,new Map);H(this,St,new Set);H(this,wn,!0);H(this,kn,()=>{var t=X;if(p(this,Ue).has(t)){var n=p(this,Ue).get(t),s=p(this,We).get(n);if(s)Xs(s),p(this,St).delete(n);else{var r=p(this,$e).get(n);r&&(p(this,We).set(n,r.effect),p(this,$e).delete(n),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),s=r.effect)}for(const[i,o]of p(this,Ue)){if(p(this,Ue).delete(i),i===t)break;const l=p(this,$e).get(o);l&&(Ee(l.effect),p(this,$e).delete(o))}for(const[i,o]of p(this,We)){if(i===n||p(this,St).has(i))continue;const l=()=>{if(Array.from(p(this,Ue).values()).includes(i)){var c=document.createDocumentFragment();_i(o,c),c.append(ht()),p(this,$e).set(i,{effect:o,fragment:c})}else Ee(o);p(this,St).delete(i),p(this,We).delete(i)};p(this,wn)||!s?(p(this,St).add(i),At(o,l,!1)):l()}}});H(this,es,t=>{p(this,Ue).delete(t);const n=Array.from(p(this,Ue).values());for(const[s,r]of p(this,$e))n.includes(s)||(Ee(r.effect),p(this,$e).delete(s))});this.anchor=t,U(this,wn,n)}ensure(t,n){var s=X,r=ai();if(n&&!p(this,We).has(t)&&!p(this,$e).has(t))if(r){var i=document.createDocumentFragment(),o=ht();i.append(o),p(this,$e).set(t,{effect:Me(()=>n(o)),fragment:i})}else p(this,We).set(t,Me(()=>n(this.anchor)));if(p(this,Ue).set(s,t),r){for(const[l,a]of p(this,We))l===t?s.skipped_effects.delete(a):s.skipped_effects.add(a);for(const[l,a]of p(this,$e))l===t?s.skipped_effects.delete(a.effect):s.skipped_effects.add(a.effect);s.oncommit(p(this,kn)),s.ondiscard(p(this,es))}else p(this,kn).call(this)}}Ue=new WeakMap,We=new WeakMap,$e=new WeakMap,St=new WeakMap,wn=new WeakMap,kn=new WeakMap,es=new WeakMap;function Js(e){Z===null&&Hr(),cn&&Z.l!==null?To(Z).m.push(e):Es(()=>{const t=N(e);if(typeof t=="function")return t})}function Zs(e){Z===null&&Hr(),Js(()=>()=>N(e))}function To(e){var t=e.l;return t.u??(t.u={a:[],b:[],m:[]})}function V(e,t,n=!1){var s=new xo(e),r=n?en:0;function i(o,l){s.ensure(o,l)}zs(()=>{var o=!1;t((l,a=!0)=>{o=!0,i(a,l)}),o||i(!1,null)},r)}function ss(e,t){return t}function So(e,t,n){for(var s=[],r=t.length,i,o=t.length,l=0;l<r;l++){let g=t[l];At(g,()=>{if(i){if(i.pending.delete(g),i.done.add(g),i.pending.size===0){var f=e.outrogroups;Ss(ts(i.done)),f.delete(i),f.size===0&&(e.outrogroups=null)}}else o-=1},!1)}if(o===0){var a=s.length===0&&n!==null;if(a){var c=n,u=c.parentNode;ao(u),u.append(c),e.items.clear()}Ss(t,!a)}else i={pending:new Set(t),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(i)}function Ss(e,t=!0){for(var n=0;n<e.length;n++)Ee(e[n],t)}var Er;function Oe(e,t,n,s,r,i=null){var o=e,l=new Map,a=(t&Lr)!==0;if(a){var c=e;o=c.appendChild(ht())}var u=null,g=Ks(()=>{var k=n();return Or(k)?k:k==null?[]:ts(k)}),f,v=!0;function y(){_.fallback=u,$o(_,f,o,t,s),u!==null&&(f.length===0?u.f&Qe?(u.f^=Qe,vn(u,null,o)):Xs(u):At(u,()=>{u=null}))}var T=zs(()=>{f=d(g);for(var k=f.length,I=new Set,S=X,E=ai(),x=0;x<k;x+=1){var b=f[x],m=s(b,x),A=v?null:l.get(m);A?(A.v&&sn(A.v,b),A.i&&sn(A.i,x),E&&S.skipped_effects.delete(A.e)):(A=Ao(l,v?o:Er??(Er=ht()),b,m,x,r,t,n),v||(A.e.f|=Qe),l.set(m,A)),I.add(m)}if(k===0&&i&&!u&&(v?u=Me(()=>i(o)):(u=Me(()=>i(Er??(Er=ht()))),u.f|=Qe)),!v)if(E){for(const[M,C]of l)I.has(M)||S.skipped_effects.add(C.e);S.oncommit(y),S.ondiscard(()=>{})}else y();d(g)}),_={effect:T,items:l,outrogroups:null,fallback:u};v=!1}function $o(e,t,n,s,r){var C,L,P,K,j,Y,Q,se,ge;var i=(s&ya)!==0,o=t.length,l=e.items,a=e.effect.first,c,u=null,g,f=[],v=[],y,T,_,k;if(i)for(k=0;k<o;k+=1)y=t[k],T=r(y,k),_=l.get(T).e,_.f&Qe||((L=(C=_.nodes)==null?void 0:C.a)==null||L.measure(),(g??(g=new Set)).add(_));for(k=0;k<o;k+=1){if(y=t[k],T=r(y,k),_=l.get(T).e,e.outrogroups!==null)for(const Te of e.outrogroups)Te.pending.delete(_),Te.done.delete(_);if(_.f&Qe)if(_.f^=Qe,_===a)vn(_,null,n);else{var I=u?u.next:a;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),ot(e,u,_),ot(e,_,I),vn(_,I,n),u=_,f=[],v=[],a=u.next;continue}if(_.f&Ae&&(Xs(_),i&&((K=(P=_.nodes)==null?void 0:P.a)==null||K.unfix(),(g??(g=new Set)).delete(_))),_!==a){if(c!==void 0&&c.has(_)){if(f.length<v.length){var S=v[0],E;u=S.prev;var x=f[0],b=f[f.length-1];for(E=0;E<f.length;E+=1)vn(f[E],S,n);for(E=0;E<v.length;E+=1)c.delete(v[E]);ot(e,x.prev,b.next),ot(e,u,x),ot(e,b,S),a=S,u=b,k-=1,f=[],v=[]}else c.delete(_),vn(_,a,n),ot(e,_.prev,_.next),ot(e,_,u===null?e.effect.first:u.next),ot(e,u,_),u=_;continue}for(f=[],v=[];a!==null&&a!==_;)(c??(c=new Set)).add(a),v.push(a),a=a.next;if(a===null)continue}_.f&Qe||f.push(_),u=_,a=_.next}if(e.outrogroups!==null){for(const Te of e.outrogroups)Te.pending.size===0&&(Ss(ts(Te.done)),(j=e.outrogroups)==null||j.delete(Te));e.outrogroups.size===0&&(e.outrogroups=null)}if(a!==null||c!==void 0){var m=[];if(c!==void 0)for(_ of c)_.f&Ae||m.push(_);for(;a!==null;)!(a.f&Ae)&&a!==e.fallback&&m.push(a),a=a.next;var A=m.length;if(A>0){var M=s&Lr&&o===0?n:null;if(i){for(k=0;k<A;k+=1)(Q=(Y=m[k].nodes)==null?void 0:Y.a)==null||Q.measure();for(k=0;k<A;k+=1)(ge=(se=m[k].nodes)==null?void 0:se.a)==null||ge.fix()}So(e,m,M)}}i&&Tn(()=>{var Te,In;if(g!==void 0)for(_ of g)(In=(Te=_.nodes)==null?void 0:Te.a)==null||In.apply()})}function Ao(e,t,n,s,r,i,o,l){var a=o&ba?o&wa?Mt(n):z(n,!1,!1):null,c=o&ma?Mt(r):null;return{v:a,i:c,e:Me(()=>(i(t,a??n,c??r,l),()=>{e.delete(s)}))}}function vn(e,t,n){if(e.nodes)for(var s=e.nodes.start,r=e.nodes.end,i=t&&!(t.f&Qe)?t.nodes.start:n;s!==null;){var o=Sn(s);if(i.before(s),s===r)return;s=o}}function ot(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}const xr=[...`
|
|
2
|
+
\r\f \v\uFEFF`];function Io(e,t,n){var s=e==null?"":""+e;if(t&&(s=s?s+" "+t:t),n){for(var r in n)if(n[r])s=s?s+" "+r:r;else if(s.length)for(var i=r.length,o=0;(o=s.indexOf(r,o))>=0;){var l=o+i;(o===0||xr.includes(s[o-1]))&&(l===s.length||xr.includes(s[l]))?s=(o===0?"":s.substring(0,o))+s.substring(l+1):o=l}}return s===""?null:s}function Co(e,t){return e==null?null:String(e)}function te(e,t,n,s,r,i){var o=e.__className;if(o!==n||o===void 0){var l=Io(n,s,i);l==null?e.removeAttribute("class"):e.className=l,e.__className=n}else if(i&&r!==i)for(var a in i){var c=!!i[a];(r==null||c!==!!r[a])&&e.classList.toggle(a,c)}return i}function Do(e,t,n,s){var r=e.__style;if(r!==t){var i=Co(t);i==null?e.removeAttribute("style"):e.style.cssText=i,e.__style=t}return s}const Mo=Symbol("is custom element"),No=Symbol("is html");function ke(e,t,n,s){var r=Lo(e);r[t]!==(r[t]=n)&&(t==="loading"&&(e[Na]=n),n==null?e.removeAttribute(t):typeof n!="string"&&Oo(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function Lo(e){return e.__attributes??(e.__attributes={[Mo]:e.nodeName.includes("-"),[No]:e.namespaceURI===$a})}var Tr=new Map;function Oo(e){var t=e.getAttribute("is")||e.nodeName,n=Tr.get(t);if(n)return n;Tr.set(t,n=[]);for(var s,r=e,i=Element.prototype;i!==r;){s=Pr(r);for(var o in s)s[o].set&&n.push(o);r=Bs(r)}return n}function Sr(e,t){return e===t||(e==null?void 0:e[$t])===t}function Ti(e={},t,n,s){return uo(()=>{var r,i;return ns(()=>{r=i,i=[],N(()=>{e!==n(...i)&&(t(e,...i),r&&Sr(n(...r),e)&&t(null,...r))})}),()=>{Tn(()=>{i&&Sr(n(...i),e)&&t(null,...i)})}}),e}function ve(e=!1){const t=Z,n=t.l.u;if(!n)return;let s=()=>F(t.s);if(e){let r=0,i={};const o=Gs(()=>{let l=!1;const a=t.s;for(const c in a)a[c]!==i[c]&&(i[c]=a[c],l=!0);return l&&r++,r});s=()=>d(o)}n.b.length&&lo(()=>{$r(t,s),Vn(n.b)}),Es(()=>{const r=N(()=>n.m.map(Da));return()=>{for(const i of r)typeof i=="function"&&i()}}),n.a.length&&Es(()=>{$r(t,s),Vn(n.a)})}function $r(e,t){if(e.l.s)for(const n of e.l.s)d(n);t()}function Qs(e,t,n){if(e==null)return t(void 0),n&&n(void 0),dt;const s=N(()=>e.subscribe(t,n));return s.unsubscribe?()=>s.unsubscribe():s}const Pt=[];function Fo(e,t){return{subscribe:q(e,t).subscribe}}function q(e,t=dt){let n=null;const s=new Set;function r(l){if(qr(e,l)&&(e=l,n)){const a=!Pt.length;for(const c of s)c[1](),Pt.push(c,e);if(a){for(let c=0;c<Pt.length;c+=2)Pt[c][0](Pt[c+1]);Pt.length=0}}}function i(l){r(l(e))}function o(l,a=dt){const c=[l,a];return s.add(c),s.size===1&&(n=t(r,i)||dt),l(e),()=>{s.delete(c),s.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:o}}function er(e,t,n){const s=!Array.isArray(e),r=s?[e]:e;if(!r.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const i=t.length<2;return Fo(n,(o,l)=>{let a=!1;const c=[];let u=0,g=dt;const f=()=>{if(u)return;g();const y=t(s?c[0]:c,o,l);i?o(y):g=typeof y=="function"?y:dt},v=r.map((y,T)=>Qs(y,_=>{c[T]=_,u&=~(1<<T),a&&f()},()=>{u|=1<<T}));return a=!0,f(),function(){Vn(v),g(),a=!1}})}function je(e){let t;return Qs(e,n=>t=n)(),t}let Nn=!1,$s=Symbol();function W(e,t,n){const s=n[t]??(n[t]={store:null,source:z(void 0),unsubscribe:dt});if(s.store!==e&&!($s in n))if(s.unsubscribe(),s.store=e??null,e==null)s.source.v=void 0,s.unsubscribe=dt;else{var r=!0;s.unsubscribe=Qs(e,i=>{r?s.source.v=i:B(s.source,i)}),r=!1}return e&&$s in n?je(e):d(s.source)}function Pe(){const e={};function t(){ci(()=>{for(var n in e)e[n].unsubscribe();Fr(e,$s,{enumerable:!1,value:!0})})}return[e,t]}function Po(e){var t=Nn;try{return Nn=!1,[e(),Nn]}finally{Nn=t}}function rs(e,t,n,s){var I;var r=!cn||(n&ka)!==0,i=(n&xa)!==0,o=s,l=!0,a=()=>(l&&(l=!1,o=s),o),c;{var u=$t in e||Ma in e;c=((I=Ht(e,t))==null?void 0:I.set)??(u&&t in e?S=>e[t]=S:void 0)}var g,f=!1;[g,f]=Po(()=>e[t]);var v;if(r?v=()=>{var S=e[t];return S===void 0?a():(l=!0,S)}:v=()=>{var S=e[t];return S!==void 0&&(o=void 0),S===void 0?o:S},r&&!(n&Ea))return v;if(c){var y=e.$$legacy;return function(S,E){return arguments.length>0?((!r||!E||y||f)&&c(E?v():S),S):v()}}var T=!1,_=Ks(()=>(T=!1,v()));d(_);var k=G;return function(S,E){if(arguments.length>0){const x=E?d(_):r&&i?jt(S):S;return B(_,x),T=!0,o!==void 0&&(o=x),S}return gt&&T||k.f&tt?_.v:d(_)}}const Si="vibe-forge-theme";function $i(){return typeof localStorage<"u"&&localStorage.getItem(Si)||"dark"}const Ai=q($i());function Ro(){const e=$i();document.documentElement.setAttribute("data-theme",e),Ai.set(e)}function Fn(){Ai.update(e=>{const t=e==="dark"?"light":"dark";return document.documentElement.setAttribute("data-theme",t),typeof localStorage<"u"&&localStorage.setItem(Si,t),t})}const zn=q([]),Pn=q(!0),As=q(null),tr=q("pending"),nr=q(null),Ii=q(new Date().toISOString()),Bo=er([zn,tr,Ii],([e,t,n])=>e.filter(s=>{const r=(s.status||"").toLowerCase().replace(/[_\s]/g,"-");if(t==="pending")return r==="pending"||!r;if(t==="in-progress")return r==="in-progress"||r==="working";if(t==="review")return r==="review"||r==="in-review"||r==="needs-review";if(t==="done"){if(!(r==="done"||r==="completed"))return!1;const i=s.completed_at||s.modifiedAt||s.created_at;return!n||!i||i>=n}return!0})),Uo=er([zn,Ii],([e,t])=>{const n={pending:0,"in-progress":0,review:0,done:0};return e.forEach(s=>{const r=(s.status||"").toLowerCase().replace(/[_\s]/g,"-");if(r==="pending"||!r)n.pending++;else if(r==="in-progress"||r==="working")n["in-progress"]++;else if(r==="review"||r==="in-review"||r==="needs-review")n.review++;else if(r==="done"||r==="completed"){const i=s.completed_at||s.modifiedAt||s.created_at;(!t||!i||i>=t)&&n.done++}}),n});function jo(e){tr.set(e)}function Is(e){nr.update(t=>t===e?null:e)}function Ho(){nr.set(null)}const Ci=q([]),Rn=q(!0),Cs=q(null),Vo={"planning-hub":{name:"Planning Hub",short:"Hub",icon:"H",color:"hub"},hub:{name:"Planning Hub",short:"Hub",icon:"H",color:"hub"},anvil:{name:"Anvil",short:"Anvil",icon:"A",color:"anvil"},furnace:{name:"Furnace",short:"Furnace",icon:"F",color:"furnace"},crucible:{name:"Crucible",short:"Crucible",icon:"C",color:"crucible"},scribe:{name:"Scribe",short:"Scribe",icon:"S",color:"scribe"},temper:{name:"Temper",short:"Temper",icon:"T",color:"temper"},ember:{name:"Ember",short:"Ember",icon:"E",color:"ember"},architect:{name:"Architect",short:"Arch",icon:"Ar",color:"architect"},aegis:{name:"Aegis",short:"Aegis",icon:"Ae",color:"aegis"},pixel:{name:"Pixel",short:"Pixel",icon:"P",color:"pixel"},oracle:{name:"Oracle",short:"Oracle",icon:"O",color:"oracle"},loki:{name:"Loki",short:"Loki",icon:"L",color:"loki"}};function Vt(e){return e?Vo[e.toLowerCase()]||{name:e,short:e.charAt(0).toUpperCase(),icon:e.charAt(0).toUpperCase(),color:""}:null}const is=q([]),Bn=q(!0),Ds=q(null),Di=q(!1),as=q(null),Un=q(!1),_n=q(null),Ar={doc:{label:"DOC",icon:"D",agent:"scribe",priority:"medium"},test:{label:"TEST",icon:"T",agent:"crucible",priority:"high"},sec:{label:"SEC",icon:"S",agent:"aegis",priority:"critical"},cov:{label:"COV",icon:"C",agent:"crucible",priority:"medium"},todo:{label:"TODO",icon:"TD",agent:null,priority:"low"},review:{label:"REVIEW",icon:"R",agent:"sentinel",priority:"high"}};function Ms(e){return Ar[e]||Ar.todo}function Ir(){const e=Date.now().toString(36),t=Math.random().toString(36).slice(2,6);return`AUTO-${e}-${t}`}function Mi(e){as.set(e),_n.set(null)}function Ve(){as.set(null),Un.set(!1),_n.set(null)}function us(){Di.update(e=>!e)}function qo(e){is.update(t=>t.filter(n=>n.id!==e))}const Ni=q([]),Ns=q(!1),Cr=q(null),$n=q([]),Go=er($n,e=>{const t=new Date().toDateString(),n=new Date(Date.now()-864e5).toDateString(),s={today:[],yesterday:[],older:[]};return e.forEach(r=>{const i=new Date(r.timestamp||r.created_at).toDateString();i===t?s.today.push(r):i===n?s.yesterday.push(r):s.older.push(r)}),s});function fs(e){const t={id:`notif-${Date.now()}`,timestamp:new Date().toISOString(),...e};$n.update(n=>[t,...n].slice(0,50))}function Dr(e){$n.update(t=>t.filter(n=>n.id!==e))}function ds(){$n.set([])}const Li=window.location.origin;let Xn=null;async function Ko(){try{const e=await fetch(`${Li}/api/token`);e.ok&&(Xn=(await e.json()).token)}catch{console.warn("Could not fetch session token")}}async function An(e,t={}){const n={"Content-Type":"application/json",...t.headers};Xn&&(n["X-Forge-Token"]=Xn);const s=await fetch(`${Li}${e}`,{headers:n,...t});if(!s.ok){const r=new Error(`HTTP ${s.status}`);r.status=s.status;try{r.data=await s.json()}catch{r.data=null}throw r}return s.json()}function Yo(){return Xn}async function Wo(){return An("/api/tasks")}async function zo(){return An("/api/agents")}async function Xo(){try{return await An("/api/issues")}catch{return{issues:[{id:"issue-1",category:"doc",title:"Stale Docs: README.md",target:"README.md",details:"Last updated 45 days ago",meta:"Threshold: 30 days | Severity: Medium",agent:"scribe",priority:"medium"},{id:"issue-2",category:"test",title:"Failing Test: auth.test.js",target:"auth.test.js",details:"2 tests failing: testLogin, testLogout",meta:"First failed: yesterday 3:45 PM",agent:"crucible",priority:"high"},{id:"issue-3",category:"sec",title:"Security: lodash vulnerability",target:"package.json",details:"CVE-2021-23337 (high severity)",meta:"Affects: lodash < 4.17.21",agent:"aegis",priority:"critical"},{id:"issue-4",category:"cov",title:"Low Coverage: utils.js",target:"src/utils.js",details:"34% coverage (threshold: 80%)",meta:"Missing: 12 uncovered functions",agent:"crucible",priority:"medium"}]}}}async function Jo(e=50){return An(`/api/activity?limit=${e}`)}async function Zo(e){return An("/api/dispatch",{method:"POST",body:JSON.stringify({type:e.category,target:e.target,agent:e.agent,context:{title:e.title,details:e.details,priority:e.priority}})})}const Oi="vibe-forge-voice-enabled",Fi="vibe-forge-voice-overridden";function Pi(){return typeof localStorage>"u"?!1:localStorage.getItem(Fi)==="true"?localStorage.getItem(Oi)==="true":null}const on=q(Pi()??!1),Jn=q(!1);on.subscribe(e=>{typeof localStorage<"u"&&localStorage.setItem(Oi,String(e))});typeof window<"u"&&Pi()===null&&fetch("/api/config").then(e=>e.ok?e.json():null).catch(()=>null).then(e=>{(e==null?void 0:e.dashboard_voice)===!0&&on.set(!0)});const Ri={"planning-hub":{gender:"male",pitch:.8,rate:.88},"planning-hub":{gender:"male",pitch:.8,rate:.88},oracle:{gender:"female",pitch:1,rate:.92},architect:{gender:"male",pitch:.85,rate:.85},aegis:{gender:"female",pitch:1.1,rate:1.15},pixel:{gender:"female",pitch:1.18,rate:1.05},ember:{gender:"male",pitch:.92,rate:1.02},anvil:{gender:"male",pitch:1,rate:1.05},furnace:{gender:"male",pitch:.88,rate:1},crucible:{gender:"female",pitch:1.02,rate:.98},temper:{gender:"male",pitch:.95,rate:.9},scribe:{gender:"female",pitch:1.05,rate:.88},herald:{gender:"male",pitch:1,rate:1.12},loki:{gender:"male",pitch:1.12,rate:1.08},"crucible-x":{gender:"male",pitch:.78,rate:1.1},system:{gender:"female",pitch:1,rate:1}},Qo={gender:"male",pitch:1,rate:1};let mt=[],yt=[],Bi=!1;const el=/female|zira|samantha|victoria|fiona|kate|moira|veena|tessa|karen|susan|linda|heather|allison|ava|nicky|sandy|shelley/i,tl=/\bmale\b|david|mark|alex|daniel|james|richard|george|thomas|reed|fred|ralph|bruce|lee/i;function Ls(){if(!("speechSynthesis"in window))return;const e=window.speechSynthesis.getVoices();if(e.length===0)return;const t=e.filter(s=>s.lang.startsWith("en")),n=t.length>0?t:e;yt=n.filter(s=>el.test(s.name)),mt=n.filter(s=>tl.test(s.name)),yt.length===0&&mt.length===0?(mt=n.filter((s,r)=>r%2===0),yt=n.filter((s,r)=>r%2===1)):(yt.length===0&&(yt=mt),mt.length===0&&(mt=yt)),Bi=!0}function nl(e,t){const n=t==="female"?yt:mt;if(n.length===0)return null;let s=0;for(const r of e)s=s*31+r.charCodeAt(0)&4294967295;return n[Math.abs(s)%n.length]}let qt=[],jn=!1;function Ui(){if(jn||qt.length===0)return;const e=qt.shift();jn=!0,Jn.set(!0);const t=()=>{jn=!1,Jn.set(qt.length>0),Ui()};e.utt.onend=t,e.utt.onerror=t,window.speechSynthesis.speak(e.utt)}function ji(){qt=[],"speechSynthesis"in window&&window.speechSynthesis.cancel(),jn=!1,Jn.set(!1)}function lt(e,t="system",n=!1){if(!je(on)||!e||!e.trim()||!("speechSynthesis"in window)||(n&&ji(),qt.length>=4))return;Bi||Ls();const s=t.toLowerCase(),r=Ri[s]||Qo,i=nl(s,r.gender),o=new SpeechSynthesisUtterance(e);o.pitch=r.pitch,o.rate=r.rate,o.volume=1,i&&(o.voice=i),qt.push({utt:o}),Ui()}function sl(){ji()}function rl(){on.update(e=>{e&&sl();const t=!e;return typeof localStorage<"u"&&localStorage.setItem(Fi,"true"),t})}const il=Object.keys(Ri);function al(e){if(e!=null&&e.agent)return e.agent.toLowerCase();const t=`${(e==null?void 0:e.title)||""} ${(e==null?void 0:e.message)||""}`.toLowerCase();for(const n of il)if(t.includes(n))return n;return"system"}typeof window<"u"&&"speechSynthesis"in window&&(window.speechSynthesis.getVoices().length>0?Ls():window.speechSynthesis.addEventListener("voiceschanged",Ls,{once:!0}));const bt={RECONNECT_DELAY:3e3,RECONNECT_MAX_DELAY:3e4,MIN_LOADING_TIME:300},Gt=q(!1),Hi=q(null),sr=q(!1);let ye=null,Kt=0,_t=null;function ol(){const e=window.location.protocol==="https:"?"wss":"ws",t=Yo(),n=t?`?token=${t}`:"";return`${e}://${window.location.host}/ws${n}`}function rr(){ye&&ye.readyState===WebSocket.OPEN||(ye=new WebSocket(ol()),ye.onopen=()=>{Gt.set(!0),Kt=0,sr.set(!1),Yt()},ye.onmessage=e=>{try{const t=JSON.parse(e.data);cl(t)}catch(t){console.error("Failed to parse WebSocket message:",t)}},ye.onclose=()=>{Gt.set(!1),ll()},ye.onerror=e=>{console.error("WebSocket error:",e),Gt.set(!1)})}function ll(){_t&&clearTimeout(_t);const e=Math.min(bt.RECONNECT_DELAY*Math.pow(2,Kt),bt.RECONNECT_MAX_DELAY);Kt++,Kt>3&&sr.set(!0),_t=setTimeout(rr,e)}function cl(e){var t,n;switch(e.event||e.type){case"task-created":case"task-updated":case"task-status-changed":Nt(),e.task&&(fs({type:"info",title:"Task Updated",message:`${e.task.id}: ${e.task.title||"Status changed"}`}),lt(`Task updated. ${e.task.title||e.task.id}`,"planning-hub"));break;case"agent-status-changed":os(),qi(),e.agent&&e.status&<(`${e.agent} is now ${e.status}.`,e.agent);break;case"issue-detected":mn(),fs({type:"warning",title:"New Issue Detected",message:((t=e.issue)==null?void 0:t.title)||"Check the Issues panel"}),lt(`Issue detected. ${((n=e.issue)==null?void 0:n.title)||"Check the issues panel."}`,"aegis");break;case"dispatch-success":Nt(),mn(),lt("Task dispatched.","planning-hub");break;case"notification":{const s=e.notification;fs(s);const r=al(s);lt((s==null?void 0:s.message)||(s==null?void 0:s.title)||"",r);break}case"heartbeat":Vi();break}}function Vi(){Hi.set(new Date().toISOString())}function vs(){Kt=0,_t&&clearTimeout(_t),rr()}async function Nt(){const e=Date.now();Pn.set(!0),As.set(null);try{const t=await Wo(),n=Date.now()-e;if(n<bt.MIN_LOADING_TIME&&await new Promise(s=>setTimeout(s,bt.MIN_LOADING_TIME-n)),t&&(t.pending||t["in-progress"]||t.review||t.completed)){const s=[...(t.pending||[]).map(r=>({...r,status:r.status==="unknown"?"pending":r.status})),...(t["in-progress"]||[]).map(r=>({...r,status:r.status==="unknown"?"in-progress":r.status})),...(t.review||[]).map(r=>({...r,status:r.status==="unknown"?"review":r.status})),...(t.completed||[]).map(r=>({...r,status:r.status==="unknown"?"completed":r.status}))];zn.set(s)}else zn.set(t.tasks||t||[]);Pn.set(!1)}catch(t){console.error("Failed to fetch tasks:",t),As.set(t.message),Pn.set(!1)}}async function os(){const e=Date.now();Rn.set(!0),Cs.set(null);try{const t=await zo(),n=Date.now()-e;n<bt.MIN_LOADING_TIME&&await new Promise(s=>setTimeout(s,bt.MIN_LOADING_TIME-n)),Ci.set(t.agents||t||[]),Rn.set(!1)}catch(t){console.error("Failed to fetch agents:",t),Cs.set(t.message),Rn.set(!1)}}async function mn(){const e=Date.now();Bn.set(!0),Ds.set(null);try{const t=await Xo(),n=Date.now()-e;n<bt.MIN_LOADING_TIME&&await new Promise(s=>setTimeout(s,bt.MIN_LOADING_TIME-n)),is.set(t.issues||t||[]),Bn.set(!1)}catch(t){console.error("Failed to fetch issues:",t),Ds.set(t.message),Bn.set(!1)}}async function qi(){Ns.set(!0),Cr.set(null);try{const e=await Jo(50);Ni.set(e.events||[])}catch(e){console.error("Failed to fetch activity:",e),Cr.set(e.message)}Ns.set(!1)}async function Yt(){await Promise.all([Nt(),os(),mn(),qi()]),Vi()}let gn=null;function ul(){gn||(gn=setInterval(()=>{je(Gt)?Nt():Yt()},1e4))}function fl(){gn&&(clearInterval(gn),gn=null)}function dl(){_t&&(clearTimeout(_t),_t=null),fl(),ye&&(ye.onclose=null,ye.onerror=null,ye.onmessage=null,ye.onopen=null,ye.close(),ye=null),Gt.set(!1),Kt=0}const pn=q(null),Os=q(-1),Gi=q("tasks"),ls=q(!1);function vl(e){pn.set(e),Os.set(-1)}function Ki(e){Gi.set(e)}function Hn(){ls.set(!0)}function Rt(){ls.set(!1)}var pl=dn('<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M15.54 8.46a5 5 0 0 1 0 7.07"></path><path d="M19.07 4.93a10 10 0 0 1 0 14.14"></path></svg>'),hl=dn('<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><line x1="23" y1="9" x2="17" y2="15"></line><line x1="17" y1="9" x2="23" y2="15"></line></svg>'),_l=D('<header class="header" role="banner"><div class="header-left"><button class="logo-btn" aria-label="Refresh dashboard"><span class="logo-icon" aria-hidden="true">⚒</span> <span class="logo-text">VIBE FORGE DASHBOARD</span></button></div> <div class="header-right"><button id="voice-toggle"><!></button> <button id="theme-toggle" class="header-btn" aria-label="Toggle dark/light mode" title="Toggle theme (t)"><svg class="icon sun-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg> <svg class="icon moon-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg></button></div></header>');function gl(e,t){fe(t,!1);const n=()=>W(on,"$voiceEnabled",r),s=()=>W(Jn,"$voiceSpeaking",r),[r,i]=Pe();let o=!1;function l(){je(on)&&!o&&(o=!0,lt("Forge team online. Ready.","planning-hub"))}Js(()=>{const S=()=>{l(),document.removeEventListener("click",S,{capture:!0})};return document.addEventListener("click",S,{capture:!0}),()=>document.removeEventListener("click",S,{capture:!0})});function a(){rl(),n()&&!o&&(o=!0,setTimeout(()=>lt("Forge team online. Ready.","planning-hub"),50))}ve();var c=_l(),u=h(c),g=h(u);g.__click=function(...S){Yt==null||Yt.apply(this,S)};var f=w(u,2),v=h(f);let y;v.__click=a;var T=h(v);{var _=S=>{var E=pl();$(S,E)},k=S=>{var E=hl();$(S,E)};V(T,S=>{n()?S(_):S(k,!1)})}var I=w(v,2);I.__click=function(...S){Fn==null||Fn.apply(this,S)},J(()=>{y=te(v,1,"header-btn",null,y,{active:n(),speaking:s()}),ke(v,"aria-label",n()?"Disable agent voices":"Enable agent voices"),ke(v,"title",n()?"Agent voices on (click to mute)":"Enable agent voices")}),$(e,c),de(),i()}xe(["click"]);function ln(e){if(!e)return"--";const t=new Date(e),s=new Date-t,r=Math.floor(s/1e3),i=Math.floor(r/60),o=Math.floor(i/60),l=Math.floor(o/24);return r<60?"just now":i<60?`${i} min ago`:o<24?`${o}h ago`:l===1?"Yesterday":l<7?`${l} days ago`:t.toLocaleDateString()}function Mr(e,t=30){return!e||e.length<=t?e:e.slice(0,t)+"..."}function Yi(e){return e?String(e).replace(/[^a-zA-Z0-9-_]/g,""):""}function Fs(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}var bl=D('<div class="connection-banner" role="alert" aria-live="assertive"><span class="banner-icon">!</span> <span class="banner-text">Connection Lost - Dashboard cannot reach the forge server. Check if the daemon is running.</span> <button class="banner-retry">Retry</button></div>'),ml=D('<!> <footer class="footer" role="contentinfo"><div class="footer-left"><span class="connection-status"><span aria-hidden="true"></span> <span> </span></span> <span class="separator">|</span> <span> </span></div> <div class="footer-right"><span>Vibe Forge v0.1.0</span> <button class="keyboard-help-btn" aria-label="Keyboard shortcuts (?)">?</button></div></footer>',1);function yl(e,t){fe(t,!1);const n=()=>W(Gt,"$wsConnected",i),s=()=>W(Hi,"$lastUpdated",i),r=()=>W(sr,"$showConnectionBanner",i),[i,o]=Pe(),l=z(),a=z();ee(()=>n(),()=>{B(l,n()?"Connected":"Disconnected")}),ee(()=>(s(),ln),()=>{B(a,s()?ln(s()):"--")}),Ot(),ve();var c=ml(),u=ce(c);{var g=m=>{var A=bl(),M=w(h(A),4);M.__click=function(...C){vs==null||vs.apply(this,C)},$(m,A)};V(u,m=>{r()&&m(g)})}var f=w(u,2),v=h(f),y=h(v),T=h(y);let _;var k=w(T,2),I=h(k),S=w(y,4),E=h(S),x=w(v,2),b=w(h(x),2);b.__click=function(...m){Hn==null||Hn.apply(this,m)},J(()=>{_=te(T,1,"status-dot",null,_,{connected:n(),disconnected:!n()}),O(I,d(l)),O(E,`Last updated: ${d(a)??""}`)}),$(e,c),de(),o()}xe(["click"]);const wl=5e3,ir=q([]);function Wi({type:e="info",title:t,message:n,actions:s=[],duration:r=wl}){const i=`toast-${Date.now()}`,o={id:i,type:e,title:t,message:n,actions:s};return ir.update(l=>[...l,o]),r>0&&setTimeout(()=>{Ps(i)},r),i}function Ps(e){ir.update(t=>t.filter(n=>n.id!==e))}var kl=D('<span class="task-agent"><span> </span></span>'),El=D('<div tabindex="0" role="button"><div class="task-card-header"><span></span> <span class="task-id"> </span></div> <div class="task-title"> </div> <div class="task-meta"><!> <span class="task-time"> </span></div> <div class="task-expanded-content"><div class="task-description"> </div> <div class="task-actions"><button class="btn btn-secondary task-view-btn">View File</button></div></div></div>');function xl(e,t){fe(t,!1);const n=()=>W(nr,"$selectedTaskId",s),[s,r]=Pe(),i=z(),o=z(),l=z();let a=rs(t,"task",8);function c(){Is(a().id)}function u(j){(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),Is(a().id))}function g(j){j.stopPropagation(),Wi({type:"info",title:"View Task",message:`Open tasks/pending/${a().id}.md in your editor`})}ee(()=>F(a()),()=>{B(i,Yi((a().priority||"medium").toLowerCase()))}),ee(()=>F(a()),()=>{B(o,Vt(a().assigned_to||a().assignee))}),ee(()=>(n(),F(a())),()=>{B(l,n()===a().id)}),Ot(),ve();var f=El();let v;f.__click=c,f.__keydown=u;var y=h(f),T=h(y),_=w(T,2),k=h(_),I=w(y,2),S=h(I),E=w(I,2),x=h(E);{var b=j=>{var Y=kl(),Q=h(Y),se=h(Q);J(ge=>{te(Q,1,`agent-badge ${d(o),N(()=>d(o).color)??""}`),O(se,`@${ge??""}`)},[()=>(d(o),N(()=>d(o).short.toLowerCase()))]),$(j,Y)};V(x,j=>{d(o)&&j(b)})}var m=w(x,2),A=h(m),M=w(E,2),C=h(M),L=h(C),P=w(C,2),K=h(P);K.__click=g,J((j,Y)=>{v=te(f,1,"card task-card",null,v,{expanded:d(l)}),ke(f,"data-task-id",(F(a()),N(()=>a().id))),ke(f,"aria-expanded",d(l)),te(T,1,`priority-dot ${d(i)??""}`),ke(T,"title",`${F(a()),N(()=>a().priority||"medium")??""} priority`),O(k,(F(a()),N(()=>a().id))),ke(I,"title",(F(a()),N(()=>a().title))),O(S,j),O(A,Y),O(L,(F(a()),N(()=>a().description||"No description provided.")))},[()=>(F(Mr),F(a()),N(()=>Mr(a().title,40))),()=>(F(ln),F(a()),N(()=>ln(a().updated_at||a().created_at)))]),$(e,f),de(),r()}xe(["click","keydown"]);var Tl=D('<button role="tab"> <span class="filter-count"> </span></button>'),Sl=D('<div class="loading-state"><div class="skeleton-card"></div> <div class="skeleton-card"></div> <div class="skeleton-card"></div></div>'),$l=D('<div class="error-state"><div class="error-icon" aria-hidden="true">!</div> <p class="error-title">Failed to load tasks</p> <p class="error-message"> </p> <button class="btn btn-secondary">Retry</button></div>'),Al=D('<div class="empty-state"><div class="empty-icon" aria-hidden="true">✓</div> <p class="empty-title">All caught up!</p> <p class="empty-subtitle">No pending tasks</p></div>'),Il=D('<div id="tasks-list" class="panel-content tasks-list" role="tabpanel" aria-busy="false"></div>'),Cl=D('<section id="tasks-panel" class="panel tasks-panel" aria-labelledby="tasks-heading" tabindex="-1"><div class="panel-header"><h2 id="tasks-heading" class="panel-title">TASKS</h2> <button aria-label="Refresh tasks"><svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 4v6h-6M1 20v-6h6"></path><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path></svg></button></div> <div class="tasks-filters" role="tablist" aria-label="Task status filters"></div> <!></section>');function Dl(e,t){fe(t,!1);const n=()=>W(tr,"$currentTaskFilter",l),s=()=>W(Uo,"$taskCounts",l),r=()=>W(Pn,"$tasksLoading",l),i=()=>W(As,"$tasksError",l),o=()=>W(Bo,"$filteredTasks",l),[l,a]=Pe();let c=z(!1);async function u(){B(c,!0),await Nt(),B(c,!1)}function g(x){jo(x)}const f=[{id:"pending",label:"Pending",countKey:"pending"},{id:"in-progress",label:"Progress",countKey:"in-progress"},{id:"review",label:"Review",countKey:"review"},{id:"done",label:"Done",countKey:"done"}];ve();var v=Cl(),y=h(v),T=w(h(y),2);let _;T.__click=u;var k=w(y,2);Oe(k,5,()=>f,ss,(x,b)=>{var m=Tl();let A;m.__click=()=>g(d(b).id);var M=h(m),C=w(M),L=h(C);J(()=>{A=te(m,1,"filter-tab",null,A,{active:n()===d(b).id}),ke(m,"aria-selected",n()===d(b).id),ke(m,"data-filter",d(b).id),O(M,`${d(b).label??""} `),O(L,s()[d(b).countKey])}),$(x,m)});var I=w(k,2);{var S=x=>{var b=Sl();$(x,b)},E=x=>{var b=Le(),m=ce(b);{var A=C=>{var L=$l(),P=w(h(L),4),K=h(P),j=w(P,2);j.__click=u,J(()=>O(K,i())),$(C,L)},M=C=>{var L=Le(),P=ce(L);{var K=Y=>{var Q=Al();$(Y,Q)},j=Y=>{var Q=Il();Oe(Q,5,o,se=>se.id,(se,ge)=>{xl(se,{get task(){return d(ge)}})}),$(Y,Q)};V(P,Y=>{o().length===0?Y(K):Y(j,!1)},!0)}$(C,L)};V(m,C=>{i()?C(A):C(M,!1)},!0)}$(x,b)};V(I,x=>{r()?x(S):x(E,!1)})}J(()=>_=te(T,1,"panel-refresh",null,_,{loading:d(c)})),$(e,v),de(),a()}xe(["click"]);var Ml=D('<div class="agent-task"> </div>'),Nl=D('<div class="agent-progress"><div class="agent-progress-bar"></div></div>'),Ll=D('<div class="card agent-card" tabindex="0" role="button"><div> </div> <div class="agent-info"><div class="agent-name"> </div> <div class="agent-status"><span></span> <span> </span></div> <!> <!></div></div>');function Ol(e,t){fe(t,!1);const n=z(),s=z(),r=z();let i=rs(t,"agent",8);const o={"planning-hub":"Planning Hub online. The forge council is assembled — what needs building today?",oracle:"Oracle here. Before we build anything, let's make sure we're solving the right problem.",architect:"Architect online. Systems designed, patterns ready — what are we building?",aegis:"Aegis is here. What needs securing?",pixel:"Pixel reporting in. Let's make something people actually enjoy using.",ember:"Ember online. Infrastructure's ready — what needs shipping?",anvil:"Anvil here. Give me a component and I'll build it.",furnace:"Furnace is online. Backend's fired up — what are we building?",crucible:"Crucible here. I'll find the bugs before your users do. What are we testing?",temper:"Temper here. Send the PR when it's ready — I'll review it.",scribe:"Scribe online. What needs documenting?",herald:"Herald here. Ready to cut a release — what are we shipping?","planning-hub":"Planning Hub online. All systems go — what's on the anvil?",loki:"Loki here. So... are you sure you're solving the right problem?"};function l(){const b=(i().agent||i().name||i().id||"").toLowerCase(),m=o[b]||`${i().displayName||b} online.`;lt(m,b,!0)}ee(()=>F(i()),()=>{B(n,Vt(i().agent||i().name||i().id))}),ee(()=>F(i()),()=>{B(s,(i().status||"offline").toLowerCase())}),ee(()=>d(s),()=>{B(r,Fs(d(s)))}),Ot(),ve();var a=Ll();a.__click=l,a.__keydown=b=>(b.key==="Enter"||b.key===" ")&&l();var c=h(a),u=h(c),g=w(c,2),f=h(g),v=h(f),y=w(f,2),T=h(y),_=w(T,2),k=h(_),I=w(y,2);{var S=b=>{var m=Ml(),A=h(m);J(()=>O(A,(F(i()),N(()=>i().task)))),$(b,m)};V(I,b=>{F(i()),N(()=>i().task)&&b(S)})}var E=w(I,2);{var x=b=>{var m=Nl(),A=h(m);J(()=>Do(A,`width: ${F(i()),N(()=>i().progress)??""}%`)),$(b,m)};V(E,b=>{F(i()),N(()=>i().progress!==void 0)&&b(x)})}J(()=>{ke(a,"aria-label",`Hear ${F(i()),N(()=>i().displayName||i().agent)??""} greeting`),te(c,1,`agent-avatar ${d(n),N(()=>{var b;return((b=d(n))==null?void 0:b.color)||""})??""}`),O(u,(F(i()),d(n),N(()=>{var b;return i().icon||((b=d(n))==null?void 0:b.icon)||"?"}))),O(v,(F(i()),d(n),N(()=>{var b;return i().displayName||((b=d(n))==null?void 0:b.name)||i().name||i().id||"Unknown"}))),te(T,1,`status-indicator ${d(s)??""}`),O(k,d(r))}),$(e,a),de()}xe(["click","keydown"]);var Fl=D('<div class="loading-state"><div class="skeleton-card"></div> <div class="skeleton-card"></div> <div class="skeleton-card"></div></div>'),Pl=D('<div class="error-state"><div class="error-icon" aria-hidden="true">!</div> <p class="error-title">Failed to load agents</p> <p class="error-message"> </p> <button class="btn btn-secondary">Retry</button></div>'),Rl=D('<div class="empty-state"><div class="empty-icon" aria-hidden="true">☽</div> <p class="empty-title">All agents idle</p> <p class="empty-subtitle">Ready when you are</p></div>'),Bl=D('<div id="agents-list" class="panel-content agents-list" aria-busy="false"></div>'),Ul=D('<section id="agents-panel" class="panel agents-panel" aria-labelledby="agents-heading" tabindex="-1"><div class="panel-header"><h2 id="agents-heading" class="panel-title">AGENTS</h2> <button aria-label="Refresh agents"><svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 4v6h-6M1 20v-6h6"></path><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path></svg></button></div> <!></section>');function jl(e,t){fe(t,!1);const n=()=>W(Rn,"$agentsLoading",i),s=()=>W(Cs,"$agentsError",i),r=()=>W(Ci,"$agents",i),[i,o]=Pe();let l=z(!1);async function a(){B(l,!0),await os(),B(l,!1)}ve();var c=Ul(),u=h(c),g=w(h(u),2);let f;g.__click=a;var v=w(u,2);{var y=_=>{var k=Fl();$(_,k)},T=_=>{var k=Le(),I=ce(k);{var S=x=>{var b=Pl(),m=w(h(b),4),A=h(m),M=w(m,2);M.__click=a,J(()=>O(A,s())),$(x,b)},E=x=>{var b=Le(),m=ce(b);{var A=C=>{var L=Rl();$(C,L)},M=C=>{var L=Bl();Oe(L,5,r,P=>P.id||P.name,(P,K)=>{Ol(P,{get agent(){return d(K)}})}),$(C,L)};V(m,C=>{r().length===0?C(A):C(M,!1)},!0)}$(x,b)};V(I,x=>{s()?x(S):x(E,!1)},!0)}$(_,k)};V(v,_=>{n()?_(y):_(T,!1)})}J(()=>f=te(g,1,"panel-refresh",null,f,{loading:d(l)})),$(e,c),de(),o()}xe(["click"]);var Hl=D('<div class="notification-desc"> </div>'),Vl=D('<button class="btn btn-secondary"> </button>'),ql=D('<div class="notification-actions"></div>'),Gl=D('<div class="card notification-card" tabindex="0"><div> </div> <div class="notification-content"><div class="notification-title"> </div> <!> <div class="notification-time"> </div> <!></div> <button class="notification-dismiss" aria-label="Dismiss notification">×</button></div>');function ps(e,t){fe(t,!1);const n=z(),s=z(),r=z();let i=rs(t,"notification",8);const o={success:"✓",info:"i",warning:"!",attention:"🔔",error:"✗"};function l(b){b.stopPropagation(),Dr(i().id)}function a(b,m,A){b.stopPropagation(),console.log("Notification action:",m,i().id),Dr(i().id)}ee(()=>F(i()),()=>{B(n,i().type||"info")}),ee(()=>d(n),()=>{B(s,Yi(d(n)))}),ee(()=>d(n),()=>{B(r,o[d(n)]||"i")}),Ot(),ve();var c=Gl(),u=h(c),g=h(u),f=w(u,2),v=h(f),y=h(v),T=w(v,2);{var _=b=>{var m=Hl(),A=h(m);J(()=>O(A,(F(i()),N(()=>i().message)))),$(b,m)};V(T,b=>{F(i()),N(()=>i().message)&&b(_)})}var k=w(T,2),I=h(k),S=w(k,2);{var E=b=>{var m=ql();Oe(m,5,()=>(F(i()),N(()=>i().actions)),ss,(A,M,C)=>{var L=Vl();L.__click=K=>a(K,d(M).action);var P=h(L);J(()=>O(P,(d(M),N(()=>d(M).label)))),$(A,L)}),$(b,m)};V(S,b=>{F(i()),N(()=>i().actions&&i().actions.length>0)&&b(E)})}var x=w(f,2);x.__click=l,J(b=>{ke(c,"data-notification-id",(F(i()),N(()=>i().id))),te(u,1,`notification-icon ${d(s)??""}`),O(g,d(r)),O(y,(F(i()),N(()=>i().title))),O(I,b)},[()=>(F(ln),F(i()),N(()=>ln(i().timestamp||i().created_at)))]),$(e,c),de()}xe(["click"]);var Kl=D('<div class="empty-state"><div class="empty-icon" aria-hidden="true">🔔</div> <p class="empty-title">Quiet day!</p> <p class="empty-subtitle">No notifications</p></div>'),Yl=D('<div class="notification-group-header">Today</div> <!>',1),Wl=D('<div class="notification-group-header">Yesterday</div> <!>',1),zl=D('<div class="notification-group-header">Earlier</div> <!>',1),Xl=D('<div id="notifications-list" class="panel-content notifications-list" role="log" aria-live="polite" aria-busy="false"><!> <!> <!></div>'),Jl=D('<section id="notifications-panel" class="panel notifications-panel" aria-labelledby="notifications-heading" tabindex="-1"><div class="panel-header"><h2 id="notifications-heading" class="panel-title">NOTIFICATIONS</h2> <button class="panel-clear" aria-label="Clear all notifications">Clear</button></div> <!></section>');function Zl(e,t){fe(t,!1);const n=()=>W($n,"$notifications",r),s=()=>W(Go,"$groupedNotifications",r),[r,i]=Pe();ve();var o=Jl(),l=h(o),a=w(h(l),2);a.__click=function(...f){ds==null||ds.apply(this,f)};var c=w(l,2);{var u=f=>{var v=Kl();$(f,v)},g=f=>{var v=Xl(),y=h(v);{var T=E=>{var x=Yl(),b=w(ce(x),2);Oe(b,1,()=>s().today,m=>m.id,(m,A)=>{ps(m,{get notification(){return d(A)}})}),$(E,x)};V(y,E=>{s().today.length>0&&E(T)})}var _=w(y,2);{var k=E=>{var x=Wl(),b=w(ce(x),2);Oe(b,1,()=>s().yesterday,m=>m.id,(m,A)=>{ps(m,{get notification(){return d(A)}})}),$(E,x)};V(_,E=>{s().yesterday.length>0&&E(k)})}var I=w(_,2);{var S=E=>{var x=zl(),b=w(ce(x),2);Oe(b,1,()=>s().older,m=>m.id,(m,A)=>{ps(m,{get notification(){return d(A)}})}),$(E,x)};V(I,E=>{s().older.length>0&&E(S)})}$(f,v)};V(c,f=>{n().length===0?f(u):f(g,!1)})}$(e,o),de(),i()}xe(["click"]);var Ql=D('<div class="card issue-card" tabindex="0"><div> </div> <div class="issue-content"><div class="issue-header"><span> </span> <span class="issue-title"> </span></div> <div class="issue-details"> </div> <div class="issue-meta"> </div></div> <div class="issue-dispatch"><button class="btn btn-dispatch"><span class="btn-text"> </span> <span class="btn-arrow">»</span></button></div></div>');function ec(e,t){fe(t,!1);const n=z(),s=z();let r=rs(t,"issue",8);function i(m){m.stopPropagation(),Mi(r())}ee(()=>F(r()),()=>{B(n,Ms(r().category))}),ee(()=>F(r()),()=>{B(s,Vt(r().agent))}),Ot(),ve();var o=Ql(),l=h(o),a=h(l),c=w(l,2),u=h(c),g=h(u),f=h(g),v=w(g,2),y=h(v),T=w(u,2),_=h(T),k=w(T,2),I=h(k),S=w(c,2),E=h(S);E.__click=i;var x=h(E),b=h(x);J(()=>{ke(o,"data-issue-id",(F(r()),N(()=>r().id))),te(l,1,`issue-category ${F(r()),N(()=>r().category)??""}`),O(a,(d(n),N(()=>d(n).icon))),te(g,1,`issue-badge ${F(r()),N(()=>r().category)??""}`),O(f,(d(n),N(()=>d(n).label))),O(y,(F(r()),N(()=>r().title))),O(_,(F(r()),N(()=>r().details))),O(I,(F(r()),N(()=>r().meta))),O(b,`Dispatch ${d(s),N(()=>d(s)?d(s).short:"Agent")??""}`)}),$(e,o),de()}xe(["click"]);var tc=D('<div class="loading-state"><div class="skeleton-issue"></div> <div class="skeleton-issue"></div></div>'),nc=D('<div class="error-state"><div class="error-icon" aria-hidden="true">!</div> <p class="error-title">Failed to load issues</p> <p class="error-message"> </p> <button class="btn btn-secondary">Retry</button></div>'),sc=D('<div class="empty-state celebration"><div class="empty-icon" aria-hidden="true">🎉</div> <p class="empty-title">Everything looks great!</p> <p class="empty-subtitle">No stale docs, failing tests, or security issues</p></div>'),rc=D('<div id="issues-list" class="panel-content issues-list" aria-busy="false"></div>'),ic=D('<section id="issues-panel" aria-labelledby="issues-heading" tabindex="-1"><div class="panel-header"><h2 id="issues-heading" class="panel-title">ISSUES <span class="panel-subtitle">(Actionable)</span></h2> <div class="panel-actions"><button aria-label="Refresh issues"><svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M23 4v6h-6M1 20v-6h6"></path><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path></svg></button> <button class="panel-collapse" aria-label="Collapse issues panel"><svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="18 15 12 9 6 15"></polyline></svg></button></div></div> <!></section>');function ac(e,t){fe(t,!1);const n=()=>W(Di,"$issuesCollapsed",o),s=()=>W(Bn,"$issuesLoading",o),r=()=>W(Ds,"$issuesError",o),i=()=>W(is,"$issues",o),[o,l]=Pe();let a=z(!1);async function c(){B(a,!0),await mn(),B(a,!1)}ve();var u=ic();let g;var f=h(u),v=w(h(f),2),y=h(v);let T;y.__click=c;var _=w(y,2);_.__click=function(...E){us==null||us.apply(this,E)};var k=w(f,2);{var I=E=>{var x=tc();$(E,x)},S=E=>{var x=Le(),b=ce(x);{var m=M=>{var C=nc(),L=w(h(C),4),P=h(L),K=w(L,2);K.__click=c,J(()=>O(P,r())),$(M,C)},A=M=>{var C=Le(),L=ce(C);{var P=j=>{var Y=sc();$(j,Y)},K=j=>{var Y=rc();Oe(Y,5,i,Q=>Q.id,(Q,se)=>{ec(Q,{get issue(){return d(se)}})}),$(j,Y)};V(L,j=>{i().length===0?j(P):j(K,!1)},!0)}$(M,C)};V(b,M=>{r()?M(m):M(A,!1)},!0)}$(E,x)};V(k,E=>{s()?E(I):E(S,!1)})}J(()=>{g=te(u,1,"panel issues-panel",null,g,{collapsed:n()}),T=te(y,1,"panel-refresh",null,T,{loading:d(a)})}),$(e,u),de(),l()}xe(["click"]);var oc=D('<div class="empty-state"><p class="empty-subtitle">Loading...</p></div>'),lc=D('<div class="empty-state"><div class="empty-icon" aria-hidden="true">📊</div> <p class="empty-title">No activity yet</p> <p class="empty-subtitle">Events appear when agents change status</p></div>'),cc=D('<span class="activity-task svelte-93r9wd"> </span>'),uc=D('<div class="activity-event svelte-93r9wd"><span class="activity-icon svelte-93r9wd" aria-hidden="true"> </span> <span class="activity-agent svelte-93r9wd"> </span> <span class="activity-status svelte-93r9wd"> </span> <!> <span class="activity-time svelte-93r9wd"> </span></div>'),fc=D('<div class="panel-content activity-list svelte-93r9wd" role="log" aria-live="polite"></div>'),dc=D('<section id="activity-panel" class="panel activity-panel svelte-93r9wd" aria-labelledby="activity-heading" tabindex="-1"><div class="panel-header"><h2 id="activity-heading" class="panel-title">ACTIVITY</h2></div> <!></section>');function vc(e,t){fe(t,!1);const n=()=>W(Ns,"$activityLoading",r),s=()=>W(Ni,"$activityEvents",r),[r,i]=Pe(),o={working:"🔨",idle:"💤",blocked:"🚫",testing:"🧪",reviewing:"👁️",waiting:"⏳",review:"📋",merged:"✅"};function l(v){return o[v]||"📌"}function a(v){if(!v)return"";const y=new Date(v),_=new Date-y,k=Math.floor(_/6e4);if(k<1)return"just now";if(k<60)return`${k}m ago`;const I=Math.floor(k/60);return I<24?`${I}h ago`:y.toLocaleDateString()}ve();var c=dc(),u=w(h(c),2);{var g=v=>{var y=oc();$(v,y)},f=v=>{var y=Le(),T=ce(y);{var _=I=>{var S=lc();$(I,S)},k=I=>{var S=fc();Oe(S,5,s,E=>E.id,(E,x)=>{var b=uc(),m=h(b),A=h(m),M=w(m,2),C=h(M),L=w(M,2),P=h(L),K=w(L,2);{var j=se=>{var ge=cc(),Te=h(ge);J(()=>O(Te,d(x).task)),$(se,ge)};V(K,se=>{d(x).task&&se(j)})}var Y=w(K,2),Q=h(Y);J((se,ge)=>{O(A,se),O(C,d(x).agent),O(P,d(x).status),O(Q,ge)},[()=>l(d(x).status),()=>a(d(x).recorded_at)]),$(E,b)}),$(I,S)};V(T,I=>{s().length===0?I(_):I(k,!1)},!0)}$(v,y)};V(u,v=>{n()?v(g):v(f,!1)})}$(e,c),de(),i()}var pc=D('<div class="modal-error"><span class="error-icon">!</span> <span class="error-text"> </span></div>'),hc=D('<div class="modal" role="dialog" aria-labelledby="dispatch-modal-title" aria-modal="true"><div class="modal-backdrop"></div> <div class="modal-content"><div class="modal-header"><h3 id="dispatch-modal-title" class="modal-title">Dispatch Task to <span> </span></h3> <button class="modal-close" aria-label="Close modal">×</button></div> <div class="modal-body"><div class="dispatch-info"><div class="info-row"><span class="info-label">Issue:</span> <span class="info-value"> </span></div> <div class="info-row"><span class="info-label">Target:</span> <span class="info-value"> </span></div> <div class="info-row"><span class="info-label">Reason:</span> <span class="info-value"> </span></div></div> <div class="dispatch-preview"><p class="preview-label">This will create a new task:</p> <div class="task-preview"><div class="preview-id"> </div> <div class="preview-title"> </div> <div class="preview-meta"><span>Assigned to: <strong> </strong></span> <span>Priority: <strong> </strong></span></div></div></div></div> <div class="modal-footer"><button class="btn btn-secondary">Cancel</button> <button><span>Confirm Dispatch</span> <span></span></button></div> <!></div></div>');function _c(e,t){fe(t,!1);const n=()=>W(as,"$pendingDispatch",i),s=()=>W(Un,"$dispatchLoading",i),r=()=>W(_n,"$dispatchError",i),[i,o]=Pe(),l=z(),a=z(),c=z(),u=z(),g=z();let f=z(),v=z(null);async function y(){var E;if(d(l)){Un.set(!0),_n.set(null);try{const x=await Zo(d(l)),b=d(l).id,m=d(l).agent;Ve(),qo(b),Wi({type:"success",title:"Task dispatched!",message:`${x.taskId||"Task"} assigned to ${((E=Vt(m))==null?void 0:E.name)||"agent"}`}),Nt()}catch(x){Un.set(!1),_n.set("Failed to dispatch task. Please try again."),console.error("Dispatch error:",x)}}}function T(){Ve()}function _(E){if(E.key==="Escape"&&Ve(),E.key==="Tab"&&d(f)){const x=d(f).querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(x.length===0){E.preventDefault();return}const b=x[0],m=x[x.length-1];E.shiftKey?document.activeElement===b&&(E.preventDefault(),m.focus()):document.activeElement===m&&(E.preventDefault(),b.focus())}}Zs(()=>{d(v)&&d(v).focus()}),ee(()=>n(),()=>{B(l,n())}),ee(()=>(d(l),Vt),()=>{B(a,d(l)?Vt(d(l).agent):null)}),ee(()=>(d(l),Ms),()=>{B(c,d(l)?Ms(d(l).category):null)}),ee(()=>(d(l),Ir),()=>{B(u,d(l)?Ir():"")}),ee(()=>d(l),()=>{B(g,d(l)?`Fix: ${d(l).title}`:"")}),ee(()=>(d(l),d(f)),()=>{d(l)&&d(f)&&(B(v,document.activeElement),setTimeout(()=>{var x;const E=(x=d(f))==null?void 0:x.querySelector(".btn-secondary");E==null||E.focus()},100))}),Ot(),ve();var k=Le(),I=ce(k);{var S=E=>{var x=hc();x.__keydown=_;var b=h(x);b.__click=T;var m=w(b,2),A=h(m),M=h(A),C=w(h(M)),L=h(C),P=w(M,2);P.__click=function(...be){Ve==null||Ve.apply(this,be)};var K=w(A,2),j=h(K),Y=h(j),Q=w(h(Y),2),se=h(Q),ge=w(Y,2),Te=w(h(ge),2),In=h(Te),zi=w(ge,2),Xi=w(h(zi),2),Ji=h(Xi),Zi=w(j,2),Qi=w(h(Zi),2),ar=h(Qi),ea=h(ar),or=w(ar,2),ta=h(or),na=w(or,2),lr=h(na),sa=w(h(lr)),ra=h(sa),ia=w(lr,2),aa=w(h(ia)),oa=h(aa),cr=w(K,2),ur=h(cr);ur.__click=function(...be){Ve==null||Ve.apply(this,be)};var Cn=w(ur,2);let fr;Cn.__click=y;var dr=h(Cn);let vr;var la=w(dr,2);let pr;var ca=w(cr,2);{var ua=be=>{var it=pc(),fa=w(h(it),2),da=h(fa);J(()=>O(da,r())),$(be,it)};V(ca,be=>{r()&&be(ua)})}Ti(x,be=>B(f,be),()=>d(f)),J(be=>{O(L,(d(a),N(()=>{var it;return((it=d(a))==null?void 0:it.name)||"Agent"}))),O(se,(d(l),N(()=>d(l).title))),O(In,(d(l),N(()=>d(l).target))),O(Ji,(d(l),N(()=>d(l).details))),O(ea,d(u)),O(ta,d(g)),O(ra,(d(a),N(()=>{var it;return((it=d(a))==null?void 0:it.name)||"Agent"}))),O(oa,be),fr=te(Cn,1,"btn btn-primary",null,fr,{loading:s()}),Cn.disabled=s(),vr=te(dr,1,"btn-text svelte-p4t6ev",null,vr,{hidden:s()}),pr=te(la,1,"btn-spinner svelte-p4t6ev",null,pr,{hidden:!s()})},[()=>(F(Fs),d(c),N(()=>{var be;return Fs(((be=d(c))==null?void 0:be.priority)||"medium")}))]),$(E,x)};V(I,E=>{d(l)&&E(S)})}$(e,k),de(),o()}xe(["keydown","click"]);var gc=D('<div class="modal" role="dialog" aria-labelledby="keyboard-modal-title" aria-modal="true"><div class="modal-backdrop"></div> <div class="modal-content keyboard-help"><div class="modal-header"><h3 id="keyboard-modal-title" class="modal-title">Keyboard Shortcuts</h3> <button class="modal-close" aria-label="Close modal">×</button></div> <div class="modal-body"><div class="shortcut-section"><h4>Navigation</h4> <div class="shortcut-list"><div class="shortcut"><kbd>1</kbd> <kbd>2</kbd> <kbd>3</kbd> <kbd>4</kbd> <span>Focus panels (Tasks, Agents, Notifications, Issues)</span></div> <div class="shortcut"><kbd>j</kbd> / <kbd>k</kbd> <span>Move down / up in list</span></div> <div class="shortcut"><kbd>Enter</kbd> <span>Expand / select item</span></div> <div class="shortcut"><kbd>Escape</kbd> <span>Close / deselect</span></div></div></div> <div class="shortcut-section"><h4>Actions</h4> <div class="shortcut-list"><div class="shortcut"><kbd>d</kbd> <span>Dispatch (on issue)</span></div> <div class="shortcut"><kbd>r</kbd> <span>Refresh current panel</span></div> <div class="shortcut"><kbd>t</kbd> <span>Toggle theme</span></div></div></div> <div class="shortcut-section"><h4>General</h4> <div class="shortcut-list"><div class="shortcut"><kbd>?</kbd> <span>Show this help</span></div> <div class="shortcut"><kbd>Tab</kbd> <span>Next element</span></div> <div class="shortcut"><kbd>Shift</kbd>+<kbd>Tab</kbd> <span>Previous element</span></div></div></div></div></div></div>');function bc(e,t){fe(t,!1);const n=()=>W(ls,"$showKeyboardHelp",s),[s,r]=Pe();let i=z(),o=z(null);function l(){Rt()}function a(f){if(f.key==="Escape"&&Rt(),f.key==="Tab"&&d(i)){const v=d(i).querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(v.length===0){f.preventDefault();return}const y=v[0],T=v[v.length-1];f.shiftKey?document.activeElement===y&&(f.preventDefault(),T.focus()):document.activeElement===T&&(f.preventDefault(),y.focus())}}Zs(()=>{d(o)&&d(o).focus()}),ee(()=>(n(),d(i)),()=>{n()&&d(i)&&(B(o,document.activeElement),setTimeout(()=>{var v;const f=(v=d(i))==null?void 0:v.querySelector(".modal-close");f==null||f.focus()},100))}),Ot(),ve();var c=Le(),u=ce(c);{var g=f=>{var v=gc();v.__keydown=a;var y=h(v);y.__click=l;var T=w(y,2),_=h(T),k=w(h(_),2);k.__click=function(...I){Rt==null||Rt.apply(this,I)},Ti(v,I=>B(i,I),()=>d(i)),$(f,v)};V(u,f=>{n()&&f(g)})}$(e,c),de(),r()}xe(["keydown","click"]);var mc=D('<div class="toast-message"> </div>'),yc=D('<button class="toast-action"> </button>'),wc=D('<div class="toast-actions"></div>'),kc=D('<div><div class="toast-icon"> </div> <div class="toast-content"><div class="toast-title"> </div> <!> <!></div> <button class="toast-close" aria-label="Dismiss">×</button></div>'),Ec=D('<div id="toast-container" class="toast-container" role="status" aria-live="polite" aria-atomic="true"></div>');function xc(e,t){fe(t,!1);const n=()=>W(ir,"$toasts",s),[s,r]=Pe(),i={success:"✓",error:"✗",info:"i",warning:"!"};function o(c,u,g){u.action&&u.action(),Ps(c.id)}function l(c){Ps(c)}ve();var a=Ec();Oe(a,5,n,c=>c.id,(c,u)=>{var g=kc(),f=h(g),v=h(f),y=w(f,2),T=h(y),_=h(T),k=w(T,2);{var I=b=>{var m=mc(),A=h(m);J(()=>O(A,d(u).message)),$(b,m)};V(k,b=>{d(u).message&&b(I)})}var S=w(k,2);{var E=b=>{var m=wc();Oe(m,5,()=>d(u).actions,ss,(A,M,C)=>{var L=yc();L.__click=()=>o(d(u),d(M));var P=h(L);J(()=>O(P,d(M).label)),$(A,L)}),$(b,m)};V(S,b=>{d(u).actions&&d(u).actions.length>0&&b(E)})}var x=w(y,2);x.__click=()=>l(d(u).id),J(()=>{te(g,1,`toast ${d(u).type??""}`),ke(g,"id",d(u).id),O(v,i[d(u).type]||"i"),O(_,d(u).title)}),$(c,g)}),$(e,a),de(),r()}xe(["click"]);var Tc=dn('<svg class="tab-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 11l3 3L22 4"></path><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path></svg>'),Sc=dn('<svg class="tab-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="8" r="5"></circle><path d="M20 21a8 8 0 0 0-16 0"></path></svg>'),$c=dn('<svg class="tab-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path></svg>'),Ac=dn('<svg class="tab-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>'),Ic=D('<button role="tab"><!> <span> </span></button>'),Cc=D('<nav class="mobile-tabs" role="tablist" aria-label="Panel navigation"></nav>');function Dc(e,t){fe(t,!1);const n=()=>W(Gi,"$mobileActivePanel",s),[s,r]=Pe(),i=[{id:"tasks",label:"Tasks",icon:"M9 11l3 3L22 4M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"},{id:"agents",label:"Agents",icon:"M12 8a5 5 0 1 0 0-10 5 5 0 0 0 0 10zM20 21a8 8 0 0 0-16 0"},{id:"notifications",label:"Notif",icon:"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0"},{id:"issues",label:"Issues",icon:"M12 12a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 8v4M12 16h.01"}];function o(a){Ki(a)}ve();var l=Cc();Oe(l,5,()=>i,ss,(a,c)=>{var u=Ic();let g;u.__click=()=>o(d(c).id);var f=h(u);{var v=k=>{var I=Tc();$(k,I)},y=k=>{var I=Le(),S=ce(I);{var E=b=>{var m=Sc();$(b,m)},x=b=>{var m=Le(),A=ce(m);{var M=L=>{var P=$c();$(L,P)},C=L=>{var P=Le(),K=ce(P);{var j=Y=>{var Q=Ac();$(Y,Q)};V(K,Y=>{d(c).id==="issues"&&Y(j)},!0)}$(L,P)};V(A,L=>{d(c).id==="notifications"?L(M):L(C,!1)},!0)}$(b,m)};V(S,b=>{d(c).id==="agents"?b(E):b(x,!1)},!0)}$(k,I)};V(f,k=>{d(c).id==="tasks"?k(v):k(y,!1)})}var T=w(f,2),_=h(T);J(()=>{g=te(u,1,"mobile-tab",null,g,{active:n()===d(c).id}),ke(u,"aria-selected",n()===d(c).id),ke(u,"data-panel",d(c).id),O(_,d(c).label)}),$(a,u)}),$(e,l),de(),r()}xe(["click"]);var Mc=D('<a href="#main-content" class="skip-link">Skip to main content</a> <a href="#tasks-panel" class="skip-link">Skip to tasks</a> <a href="#issues-panel" class="skip-link">Skip to issues</a> <!> <main id="main-content" class="main" role="main"><div class="panels-top"><!> <!> <!></div> <div class="panels-bottom"><!> <!></div></main> <!> <!> <!> <!> <!>',1);function Nc(e,t){fe(t,!1),Js(()=>{Ro(),rr(),ul(),document.addEventListener("keydown",n)}),Zs(()=>{dl(),document.removeEventListener("keydown",n)});function n(m){if(m.target.matches("input, textarea, select"))return;const A=je(as)!==null,M=je(ls),C=A||M;if(m.key==="Escape"){if(A){Ve();return}if(M){Rt();return}Ho();return}if(!C)switch(m.key){case"1":s("tasks");break;case"2":s("agents");break;case"3":s("notifications");break;case"4":s("issues");break;case"j":case"ArrowDown":r("down"),m.preventDefault();break;case"k":case"ArrowUp":r("up"),m.preventDefault();break;case"Enter":i();break;case"d":o();break;case"r":l();break;case"t":Fn();break;case"?":Hn(),m.preventDefault();break}}function s(m){vl(m),Os.set(-1);const A=document.getElementById(`${m}-panel`);A==null||A.focus(),window.innerWidth<768&&Ki(m)}function r(m){var L,P;const A=je(pn);if(!A){s("tasks");return}const M=document.getElementById(`${A}-panel`),C=M==null?void 0:M.querySelectorAll(".card");!C||C.length===0||(m==="down"?currentFocusedItemIndex=Math.min(currentFocusedItemIndex+1,C.length-1):currentFocusedItemIndex=Math.max(currentFocusedItemIndex-1,0),Os.set(currentFocusedItemIndex),C.forEach((K,j)=>{K.classList.toggle("selected",j===currentFocusedItemIndex)}),(L=C[currentFocusedItemIndex])==null||L.scrollIntoView({block:"nearest"}),(P=C[currentFocusedItemIndex])==null||P.focus())}function i(){const m=je(pn);if(m==="tasks"&¤tFocusedItemIndex>=0){const M=document.querySelectorAll("#tasks-list .task-card")[currentFocusedItemIndex];if(M){const C=M.dataset.taskId;Is(C)}}else m==="issues"&¤tFocusedItemIndex>=0&&o()}function o(){if(je(pn)!=="issues")return;const M=document.querySelectorAll("#issues-list .issue-card")[currentFocusedItemIndex];if(M){const C=M.dataset.issueId,P=je(is).find(K=>K.id===C);P&&Mi(P)}}function l(){switch(je(pn)){case"tasks":Nt();break;case"agents":os();break;case"issues":mn();break;default:Yt()}}ve();var a=Mc(),c=w(ce(a),6);gl(c,{});var u=w(c,2),g=h(u),f=h(g);Dl(f,{});var v=w(f,2);jl(v,{});var y=w(v,2);Zl(y,{});var T=w(g,2),_=h(T);ac(_,{});var k=w(_,2);vc(k,{});var I=w(u,2);yl(I,{});var S=w(I,2);_c(S,{});var E=w(S,2);bc(E,{});var x=w(E,2);xc(x,{});var b=w(x,2);Dc(b,{}),$(e,a),de()}Ko().then(()=>{wo(Nc,{target:document.getElementById("app")})});
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" data-theme="dark">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🔥</text></svg>">
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<title>Vibe Forge Dashboard</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-theme="dark">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🔥</text></svg>">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>Vibe Forge Dashboard</title>
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-Dm2PgE2m.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-QODv4Zn9.css">
|
|
10
|
-
</head>
|
|
11
|
-
<body>
|
|
12
|
-
<div id="app"></div>
|
|
13
|
-
</body>
|
|
14
|
-
</html>
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<div id="app"></div>
|
|
13
|
+
</body>
|
|
14
|
+
</html>
|