@directive-run/core 1.23.0 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/{chunk-WVP3GOY2.js → chunk-C3FW27S5.js} +2 -2
  2. package/dist/chunk-C3FW27S5.js.map +1 -0
  3. package/dist/{chunk-PJIIBQTK.js → chunk-QR2756CJ.js} +2 -2
  4. package/dist/{chunk-PJIIBQTK.js.map → chunk-QR2756CJ.js.map} +1 -1
  5. package/dist/{chunk-AFPLATPV.js → chunk-SERVIHA3.js} +3 -3
  6. package/dist/{chunk-AFPLATPV.js.map → chunk-SERVIHA3.js.map} +1 -1
  7. package/dist/{chunk-FCCJUQB2.cjs → chunk-UDSP7U54.cjs} +3 -3
  8. package/dist/{chunk-FCCJUQB2.cjs.map → chunk-UDSP7U54.cjs.map} +1 -1
  9. package/dist/{chunk-WKGNK4QK.cjs → chunk-UQZ2SMGS.cjs} +2 -2
  10. package/dist/{chunk-WKGNK4QK.cjs.map → chunk-UQZ2SMGS.cjs.map} +1 -1
  11. package/dist/{chunk-XKXTRVJF.cjs → chunk-WU4AXN3P.cjs} +2 -2
  12. package/dist/chunk-WU4AXN3P.cjs.map +1 -0
  13. package/dist/{index-n8oQmdOZ.d.ts → index-Bz6DOdDN.d.ts} +3 -3
  14. package/dist/{index-DpvgHVHR.d.cts → index-Cpgj4byM.d.cts} +3 -3
  15. package/dist/index.cjs +2 -2
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +3 -3
  18. package/dist/index.d.ts +3 -3
  19. package/dist/index.js +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/internals.cjs +1 -1
  22. package/dist/internals.js +1 -1
  23. package/dist/plugins/index.cjs +2 -2
  24. package/dist/plugins/index.d.cts +1 -1
  25. package/dist/plugins/index.d.ts +1 -1
  26. package/dist/plugins/index.js +1 -1
  27. package/dist/system-T6EZ6EYN.js +2 -0
  28. package/dist/{system-HOP37Z4V.js.map → system-T6EZ6EYN.js.map} +1 -1
  29. package/dist/system-V7B4YUIR.cjs +2 -0
  30. package/dist/{system-VZUHL56W.cjs.map → system-V7B4YUIR.cjs.map} +1 -1
  31. package/dist/testing.cjs +1 -1
  32. package/dist/testing.js +1 -1
  33. package/dist/worker.cjs +1 -1
  34. package/dist/worker.js +1 -1
  35. package/package.json +2 -2
  36. package/dist/chunk-WVP3GOY2.js.map +0 -1
  37. package/dist/chunk-XKXTRVJF.cjs.map +0 -1
  38. package/dist/system-HOP37Z4V.js +0 -2
  39. package/dist/system-VZUHL56W.cjs +0 -2
@@ -1,3 +1,3 @@
1
- import {g,b,e}from'../chunk-PJIIBQTK.js';export{i as createAuditLedger,h as memorySink}from'../chunk-PJIIBQTK.js';import'../chunk-LN5H74CU.js';import {g as g$1}from'../chunk-IZNOPHPL.js';var $e={debug:0,info:1,warn:2,error:3};function lt(e={}){let{level:i="info",filter:s=()=>true,logger:r=console,prefix:c="[Directive]"}=e,p=$e[i],l=(n,a,...o)=>{$e[n]<p||s(a)&&r[n](`${c} ${a}`,...o);};return {name:"logging",onInit:()=>l("debug","init"),onStart:()=>l("info","start"),onStop:()=>l("info","stop"),onDestroy:()=>l("debug","destroy"),onFactSet:(n,a,o)=>{l("debug","fact.set",{key:n,value:a,prev:o});},onFactDelete:(n,a)=>{l("debug","fact.delete",{key:n,prev:a});},onFactsBatch:n=>{l("debug","facts.batch",{count:n.length,changes:n});},onDerivationCompute:(n,a,o)=>{l("debug","derivation.compute",{id:n,value:a,deps:o});},onDerivationInvalidate:n=>{l("debug","derivation.invalidate",{id:n});},onReconcileStart:()=>{l("debug","reconcile.start");},onReconcileEnd:n=>{l("debug","reconcile.end",{unmet:n.unmet.length,inflight:n.inflight.length,completed:n.completed.length,canceled:n.canceled.length});},onConstraintEvaluate:(n,a,o)=>{if(o){let u=o.filter(h=>h.pass).length;l("debug","constraint.evaluate",{id:n,active:a,clauses:{total:o.length,passed:u}});return}l("debug","constraint.evaluate",{id:n,active:a});},onConstraintError:(n,a)=>{l("error","constraint.error",{id:n,error:a});},onRequirementCreated:n=>{l("debug","requirement.created",{id:n.id,type:n.requirement.type});},onRequirementMet:(n,a)=>{l("info","requirement.met",{id:n.id,byResolver:a});},onRequirementCanceled:n=>{l("debug","requirement.canceled",{id:n.id});},onResolverStart:(n,a)=>{l("debug","resolver.start",{resolver:n,requirementId:a.id});},onResolverComplete:(n,a,o)=>{l("info","resolver.complete",{resolver:n,requirementId:a.id,duration:o});},onResolverError:(n,a,o)=>{l("error","resolver.error",{resolver:n,requirementId:a.id,error:o});},onResolverRetry:(n,a,o)=>{l("warn","resolver.retry",{resolver:n,requirementId:a.id,attempt:o});},onResolverCancel:(n,a)=>{l("debug","resolver.cancel",{resolver:n,requirementId:a.id});},onResolverWriteRejected:n=>{l("warn","resolver.write.rejected",n.kind==="summary"?{kind:n.kind,resolver:n.resolver,requirementId:n.req.id,reason:n.reason,dropped:n.dropped}:{kind:n.kind,resolver:n.resolver,requirementId:n.req.id,reason:n.reason,fact:n.fact,expected:n.expected,actual:n.actual});},onEffectRun:n=>{l("debug","effect.run",{id:n});},onEffectError:(n,a)=>{l("error","effect.error",{id:n,error:a});},onSourceAttach:(n,a)=>{l("debug","source.attach",{id:n,moduleId:a});},onSourcePublish:(n,a,o)=>{l("debug","source.publish",{id:n,moduleId:a,eventName:o});},onSourceDetach:(n,a)=>{l("debug","source.detach",{id:n,moduleId:a});},onSourceError:(n,a,o,u)=>{l("error","source.error",{id:n,moduleId:a,phase:o,error:u});},onSnapshot:n=>{l("debug","timetravel.snapshot",{id:n.id,trigger:n.trigger});},onHistoryNavigate:(n,a)=>{l("info","timetravel.jump",{from:n,to:a});},onError:n=>{l("error","error",{source:n.source,sourceId:n.sourceId,message:n.message});},onErrorRecovery:(n,a)=>{l("warn","error.recovery",{source:n.source,sourceId:n.sourceId,strategy:a});},onDefinitionRegister:(n,a)=>{l("info","definition.register",{type:n,id:a});},onDefinitionAssign:(n,a)=>{l("info","definition.assign",{type:n,id:a});},onDefinitionUnregister:(n,a)=>{l("info","definition.unregister",{type:n,id:a});},onDefinitionCall:(n,a,o)=>{l("debug","definition.call",{type:n,id:a,props:o});},onTraceComplete:n=>{l("debug","trace.complete",{id:n.id,status:n.status,duration:n.duration,factChanges:n.factChanges.length,derivationsRecomputed:n.derivationsRecomputed.length,constraintsHit:n.constraintsHit.length,resolversStarted:n.resolversStarted.length,effectsRun:n.effectsRun.length});}}}var ue=class{constructor(i){this.capacity=i;this.buf=new Array(i);}buf;head=0;_size=0;get size(){return this._size}push(i){this.buf[this.head]=i,this.head=(this.head+1)%this.capacity,this._size<this.capacity&&this._size++;}toArray(){return this._size===0?[]:this._size<this.capacity?this.buf.slice(0,this._size):[...this.buf.slice(this.head),...this.buf.slice(0,this.head)]}clear(){this.buf=new Array(this.capacity),this.head=0,this._size=0;}};function ge(){try{if(typeof process<"u"&&process.env?.NODE_ENV==="production")return !1}catch{}try{if(typeof import.meta<"u"&&import.meta.env?.MODE==="production")return !1}catch{}return true}function be(e){try{if(e===void 0)return "undefined";if(e===null)return "null";if(typeof e=="bigint")return `${String(e)}n`;if(typeof e=="symbol")return String(e);if(typeof e=="object"){let i=JSON.stringify(e,(s,r)=>typeof r=="bigint"?`${String(r)}n`:typeof r=="symbol"?String(r):r);return i.length>120?`${i.slice(0,117)}...`:i}return String(e)}catch{return "<error>"}}function ee(e,i){return e.length<=i?e:`${e.slice(0,i-3)}...`}function ae(e){try{return e.inspect()}catch{return null}}function _e(e){try{return e==null||typeof e!="object"?e:JSON.parse(JSON.stringify(e))}catch{return null}}function Ne(e){return e===void 0?1e3:!Number.isFinite(e)||e<1?(ge()&&console.warn(`[directive:devtools] Invalid maxEvents value (${e}), using default 1000`),1e3):Math.floor(e)}function Be(){return {reconcileCount:0,reconcileTotalMs:0,resolverStats:new Map,effectRunCount:0,effectErrorCount:0,lastReconcileStartMs:0}}var dt=200,ce=340,le=16,de=80,xe=2,Ce=["#8b9aff","#4ade80","#fbbf24","#c084fc","#f472b6","#22d3ee"];function je(){return {entries:new ue(dt),inflight:new Map}}function qe(){return {derivationDeps:new Map,activeConstraints:new Set,recentlyChangedFacts:new Set,recentlyComputedDerivations:new Set,recentlyActiveConstraints:new Set,animationTimer:null}}var Fe=1e4,He=100;function Ve(){return {isRecording:false,recordedEvents:[],snapshots:[]}}var ze=50,we=200,y={bg:"#1a1a2e",text:"#e0e0e0",accent:"#8b9aff",muted:"#b0b0d0",border:"#333",rowBorder:"#2a2a4a",green:"#4ade80",yellow:"#fbbf24",red:"#f87171",closeBtn:"#aaa",font:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace"},Y={nodeW:90,nodeH:16,nodeGap:6,startY:16,colGap:20,fontSize:10,labelMaxChars:11};function Ge(e,i,s,r){let c=false,p={position:"fixed",zIndex:"99999",...i.includes("bottom")?{bottom:"12px"}:{top:"12px"},...i.includes("right")?{right:"12px"}:{left:"12px"}},l=document.createElement("style");l.textContent=`[data-directive-devtools] summary:focus-visible{outline:2px solid ${y.accent};outline-offset:2px;border-radius:2px}[data-directive-devtools] button:focus-visible{outline:2px solid ${y.accent};outline-offset:2px}`,document.head.appendChild(l);let n=document.createElement("button");n.setAttribute("aria-label","Open Directive DevTools"),n.setAttribute("aria-expanded",String(s)),n.title="Ctrl+Shift+D to toggle",Object.assign(n.style,{...p,background:y.bg,color:y.text,border:`1px solid ${y.border}`,borderRadius:"6px",padding:"10px 14px",minWidth:"44px",minHeight:"44px",cursor:"pointer",fontFamily:y.font,fontSize:"12px",display:s?"none":"block"}),n.textContent="Directive";let a=document.createElement("div");a.setAttribute("role","region"),a.setAttribute("aria-label","Directive DevTools"),a.setAttribute("data-directive-devtools",""),a.tabIndex=-1,Object.assign(a.style,{...p,background:y.bg,color:y.text,border:`1px solid ${y.border}`,borderRadius:"8px",padding:"12px",fontFamily:y.font,fontSize:"11px",maxWidth:"min(380px, calc(100vw - 24px))",maxHeight:"min(500px, calc(100vh - 24px))",overflow:"auto",boxShadow:"0 4px 20px rgba(0,0,0,0.5)",display:s?"block":"none"});let o=document.createElement("div");Object.assign(o.style,{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"8px"});let u=document.createElement("strong");u.style.color=y.accent,u.textContent=e==="default"?"Directive DevTools":`DevTools (${e})`;let h=document.createElement("button");h.setAttribute("aria-label","Close DevTools"),Object.assign(h.style,{background:"none",border:"none",color:y.closeBtn,cursor:"pointer",fontSize:"16px",padding:"8px 12px",minWidth:"44px",minHeight:"44px",lineHeight:"1",display:"flex",alignItems:"center",justifyContent:"center"}),h.textContent="\xD7",o.appendChild(u),o.appendChild(h),a.appendChild(o);let M=document.createElement("div");M.style.marginBottom="6px",M.setAttribute("aria-live","polite");let $=document.createElement("span");$.style.color=y.green,$.textContent="Settled",M.appendChild($),a.appendChild(M);let R=document.createElement("div");Object.assign(R.style,{display:"none",marginBottom:"8px",padding:"4px 8px",background:"#252545",borderRadius:"4px",alignItems:"center",gap:"6px"});let T=document.createElement("button");Object.assign(T.style,{background:"none",border:`1px solid ${y.border}`,color:y.text,cursor:"pointer",padding:"4px 10px",borderRadius:"3px",fontFamily:y.font,fontSize:"11px",minWidth:"44px",minHeight:"44px"}),T.textContent="\u25C0 Undo",T.disabled=true;let f=document.createElement("button");Object.assign(f.style,{background:"none",border:`1px solid ${y.border}`,color:y.text,cursor:"pointer",padding:"4px 10px",borderRadius:"3px",fontFamily:y.font,fontSize:"11px",minWidth:"44px",minHeight:"44px"}),f.textContent="Redo \u25B6",f.disabled=true;let g=document.createElement("span");g.style.color=y.muted,g.style.fontSize="10px",R.appendChild(T),R.appendChild(f),R.appendChild(g),a.appendChild(R);function C(U,G){let X=document.createElement("details");G&&(X.open=true),X.style.marginBottom="4px";let J=document.createElement("summary");Object.assign(J.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"});let Z=document.createElement("span");J.textContent=`${U} (`,J.appendChild(Z),J.appendChild(document.createTextNode(")")),Z.textContent="0",X.appendChild(J);let re=document.createElement("table");Object.assign(re.style,{width:"100%",borderCollapse:"collapse",fontSize:"11px"});let De=document.createElement("thead"),ke=document.createElement("tr");for(let it of ["Key","Value"]){let fe=document.createElement("th");fe.scope="col",Object.assign(fe.style,{textAlign:"left",padding:"2px 4px",color:y.accent}),fe.textContent=it,ke.appendChild(fe);}De.appendChild(ke),re.appendChild(De);let Oe=document.createElement("tbody");return re.appendChild(Oe),X.appendChild(re),{details:X,tbody:Oe,countSpan:Z}}function k(U,G){let X=document.createElement("details");X.style.marginBottom="4px";let J=document.createElement("summary");Object.assign(J.style,{cursor:"pointer",color:G,marginBottom:"4px"});let Z=document.createElement("span");J.textContent=`${U} (`,J.appendChild(Z),J.appendChild(document.createTextNode(")")),Z.textContent="0",X.appendChild(J);let re=document.createElement("ul");return Object.assign(re.style,{margin:"0",paddingLeft:"16px"}),X.appendChild(re),{details:X,list:re,countSpan:Z}}let _=C("Facts",true);a.appendChild(_.details);let F=C("Derivations",false);a.appendChild(F.details);let P=k("Inflight",y.yellow);a.appendChild(P.details);let K=k("Unmet",y.red);a.appendChild(K.details);let N=document.createElement("details");N.style.marginBottom="4px";let H=document.createElement("summary");Object.assign(H.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"}),H.textContent="Performance",N.appendChild(H);let j=document.createElement("div");j.style.fontSize="10px",j.style.color=y.muted,j.textContent="No data yet",N.appendChild(j),a.appendChild(N);let V=document.createElement("details");V.style.marginBottom="4px";let w=document.createElement("summary");Object.assign(w.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"}),w.textContent="Dependency Graph",V.appendChild(w);let A=document.createElementNS("http://www.w3.org/2000/svg","svg");A.setAttribute("width","100%"),A.setAttribute("height","120"),A.setAttribute("role","img"),A.setAttribute("aria-label","System dependency graph"),A.style.display="block",A.setAttribute("viewBox","0 0 460 120"),A.setAttribute("preserveAspectRatio","xMinYMin meet"),V.appendChild(A),a.appendChild(V);let D=document.createElement("details");D.style.marginBottom="4px";let z=document.createElement("summary");Object.assign(z.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"}),z.textContent="Timeline",D.appendChild(z);let q=document.createElementNS("http://www.w3.org/2000/svg","svg");q.setAttribute("width","100%"),q.setAttribute("height","60"),q.setAttribute("role","img"),q.setAttribute("aria-label","Resolver execution timeline"),q.style.display="block",q.setAttribute("viewBox",`0 0 ${ce} 60`),q.setAttribute("preserveAspectRatio","xMinYMin meet");let m=document.createElementNS("http://www.w3.org/2000/svg","text");m.setAttribute("x",String(ce/2)),m.setAttribute("y","30"),m.setAttribute("text-anchor","middle"),m.setAttribute("fill",y.muted),m.setAttribute("font-size","10"),m.setAttribute("font-family",y.font),m.textContent="No resolver activity yet",q.appendChild(m),D.appendChild(q),a.appendChild(D);let L=(()=>{let U=document.createElement("details");U.style.marginBottom="4px";let G=document.createElement("summary");Object.assign(G.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"});let X=document.createElement("span");X.textContent="0",G.textContent="Constraints (",G.appendChild(X),G.appendChild(document.createTextNode(")")),U.appendChild(G);let J=document.createElement("div");Object.assign(J.style,{fontSize:"11px"});let Z=document.createElement("div");return Z.style.color=y.muted,Z.style.padding="4px",Z.style.fontStyle="italic",Z.textContent="Waiting for first evaluation\u2026",Z.className="dt-constraints-empty",J.appendChild(Z),U.appendChild(J),a.appendChild(U),{details:U,body:J,countSpan:X}})(),E,I,b,v;if(r){let U=document.createElement("details");U.style.marginBottom="4px";let G=document.createElement("summary");Object.assign(G.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"}),b=document.createElement("span"),b.textContent="0",G.textContent="Events (",G.appendChild(b),G.appendChild(document.createTextNode(")")),U.appendChild(G),I=document.createElement("div"),Object.assign(I.style,{maxHeight:"150px",overflow:"auto",fontSize:"10px"}),I.setAttribute("role","log"),I.setAttribute("aria-live","polite"),I.tabIndex=0;let X=document.createElement("div");X.style.color=y.muted,X.style.padding="4px",X.textContent="Waiting for events...",X.className="dt-events-empty",I.appendChild(X),U.appendChild(I),a.appendChild(U),E=U,v=document.createElement("div");}else E=document.createElement("details"),I=document.createElement("div"),b=document.createElement("span"),v=document.createElement("div"),v.style.fontSize="10px",v.style.color=y.muted,v.style.marginTop="4px",v.style.fontStyle="italic",v.textContent="Enable trace: true for event log",a.appendChild(v);let x=document.createElement("div");Object.assign(x.style,{display:"flex",gap:"6px",marginTop:"6px"});let t=document.createElement("button");Object.assign(t.style,{background:"none",border:`1px solid ${y.border}`,color:y.text,cursor:"pointer",padding:"8px 12px",borderRadius:"3px",fontFamily:y.font,fontSize:"10px",minWidth:"44px",minHeight:"44px"}),t.textContent="\u23FA Record";let d=document.createElement("button");Object.assign(d.style,{background:"none",border:`1px solid ${y.border}`,color:y.text,cursor:"pointer",padding:"8px 12px",borderRadius:"3px",fontFamily:y.font,fontSize:"10px",minWidth:"44px",minHeight:"44px"}),d.textContent="\u2913 Export",x.appendChild(t),x.appendChild(d),a.appendChild(x),a.addEventListener("wheel",U=>{let G=a,X=G.scrollTop===0&&U.deltaY<0,J=G.scrollTop+G.clientHeight>=G.scrollHeight&&U.deltaY>0;(X||J)&&U.preventDefault();},{passive:false});let S=s,O=new Set;function B(){S=true,a.style.display="block",n.style.display="none",n.setAttribute("aria-expanded","true"),h.focus();}function W(){S=false,a.style.display="none",n.style.display="block",n.setAttribute("aria-expanded","false"),n.focus();}n.addEventListener("click",B),h.addEventListener("click",W);function Q(U){U.key==="Escape"&&S&&W();}a.addEventListener("keydown",Q);function ne(U){U.key==="d"&&U.shiftKey&&(U.ctrlKey||U.metaKey)&&(U.preventDefault(),S?W():B());}document.addEventListener("keydown",ne);function te(){c||(document.body.appendChild(n),document.body.appendChild(a));}document.body?te():document.addEventListener("DOMContentLoaded",te,{once:true});function se(){c=true,n.removeEventListener("click",B),h.removeEventListener("click",W),a.removeEventListener("keydown",Q),document.removeEventListener("keydown",ne),document.removeEventListener("DOMContentLoaded",te);for(let U of O)clearTimeout(U);O.clear(),n.remove(),a.remove(),l.remove();}return {refs:{container:a,toggleBtn:n,titleEl:u,statusEl:$,factsBody:_.tbody,factsCount:_.countSpan,derivBody:F.tbody,derivCount:F.countSpan,derivSection:F.details,inflightList:P.list,inflightSection:P.details,inflightCount:P.countSpan,unmetList:K.list,unmetSection:K.details,unmetCount:K.countSpan,perfSection:N,perfBody:j,historySection:R,historyLabel:g,undoBtn:T,redoBtn:f,flowSection:V,flowSvg:A,timelineSection:D,timelineSvg:q,eventsSection:E,eventsList:I,eventsCount:b,traceHint:v,recordBtn:t,exportBtn:d,constraintsSection:L.details,constraintsBody:L.body,constraintsCount:L.countSpan},destroy:se,isOpen:()=>S,flashTimers:O}}function me(e,i,s,r,c,p){let l=be(r),n=e.get(s);if(n){let a=n.cells;if(a[1]&&(a[1].textContent=l,c&&p)){let o=a[1];o.style.background="rgba(139, 154, 255, 0.25)";let u=setTimeout(()=>{o.style.background="",p.delete(u);},300);p.add(u);}}else {n=document.createElement("tr"),n.style.borderBottom=`1px solid ${y.rowBorder}`;let a=document.createElement("td");Object.assign(a.style,{padding:"2px 4px",color:y.muted}),a.textContent=s;let o=document.createElement("td");o.style.padding="2px 4px",o.textContent=l,n.appendChild(a),n.appendChild(o),i.appendChild(n),e.set(s,n);}}function Ke(e,i){let s=e.get(i);s&&(s.remove(),e.delete(i));}function ye(e,i,s){if(e.inflightList.replaceChildren(),e.inflightCount.textContent=String(i.length),i.length>0)for(let r of i){let c=document.createElement("li");c.style.fontSize="11px",c.textContent=`${r.resolverId} (${r.id})`,e.inflightList.appendChild(c);}else {let r=document.createElement("li");r.style.fontSize="10px",r.style.color=y.muted,r.textContent="None",e.inflightList.appendChild(r);}if(e.unmetList.replaceChildren(),e.unmetCount.textContent=String(s.length),s.length>0)for(let r of s){let c=document.createElement("li");c.style.fontSize="11px",c.textContent=`${r.requirement.type} from ${r.fromConstraint}`,e.unmetList.appendChild(c);}else {let r=document.createElement("li");r.style.fontSize="10px",r.style.color=y.muted,r.textContent="None",e.unmetList.appendChild(r);}}function ve(e,i,s){let r=i===0&&s===0;e.statusEl.style.color=r?y.green:y.yellow,e.statusEl.textContent=r?"Settled":"Working...",e.toggleBtn.textContent=r?"Directive":"Directive...",e.toggleBtn.setAttribute("aria-label",`Open Directive DevTools${r?"":" (system working)"}`);}function Ee(e,i,s,r){let c=Object.keys(s.derive);if(e.derivCount.textContent=String(c.length),c.length===0){i.clear(),e.derivBody.replaceChildren();let l=document.createElement("tr"),n=document.createElement("td");n.colSpan=2,n.style.color=y.muted,n.style.fontSize="10px",n.textContent="No derivations defined",l.appendChild(n),e.derivBody.appendChild(l);return}let p=new Set(c);for(let[l,n]of i)p.has(l)||(n.remove(),i.delete(l));for(let l of c){let n;try{n=be(s.read(l));}catch{n="<error>";}me(i,e.derivBody,l,n,true,r);}}function Ye(e,i,s,r){let c=e.eventsList.querySelector(".dt-events-empty");c&&c.remove();let p=document.createElement("div");Object.assign(p.style,{padding:"2px 4px",borderBottom:`1px solid ${y.rowBorder}`,fontFamily:"inherit"});let l=new Date,n=`${String(l.getHours()).padStart(2,"0")}:${String(l.getMinutes()).padStart(2,"0")}:${String(l.getSeconds()).padStart(2,"0")}.${String(l.getMilliseconds()).padStart(3,"0")}`,a;try{let M=JSON.stringify(s);a=ee(M,60);}catch{a="{}";}let o=document.createElement("span");o.style.color=y.closeBtn,o.textContent=n;let u=document.createElement("span");u.style.color=y.accent,u.textContent=` ${i} `;let h=document.createElement("span");for(h.style.color=y.muted,h.textContent=a,p.appendChild(o),p.appendChild(u),p.appendChild(h),e.eventsList.prepend(p);e.eventsList.childElementCount>ze;)e.eventsList.lastElementChild?.remove();e.eventsCount.textContent=String(r);}function Xe(e,i){e.perfBody.replaceChildren();let s=i.reconcileCount>0?(i.reconcileTotalMs/i.reconcileCount).toFixed(1):"\u2014",r=[`Reconciles: ${i.reconcileCount} (avg ${s}ms)`,`Effects: ${i.effectRunCount} run, ${i.effectErrorCount} errors`];for(let c of r){let p=document.createElement("div");p.style.marginBottom="2px",p.textContent=c,e.perfBody.appendChild(p);}if(i.resolverStats.size>0){let c=document.createElement("div");c.style.marginTop="4px",c.style.marginBottom="2px",c.style.color=y.accent,c.textContent="Resolvers:",e.perfBody.appendChild(c);let p=[...i.resolverStats.entries()].sort((l,n)=>n[1].totalMs-l[1].totalMs);for(let[l,n]of p){let a=n.count>0?(n.totalMs/n.count).toFixed(1):"0",o=document.createElement("div");o.style.paddingLeft="8px",o.textContent=`${l}: ${n.count}x, avg ${a}ms${n.errors>0?`, ${n.errors} err`:""}`,n.errors>0&&(o.style.color=y.red),e.perfBody.appendChild(o);}}}function Me(e,i){let s=i.history;if(!s){e.historySection.style.display="none";return}e.historySection.style.display="flex";let r=s.currentIndex,c=s.snapshots.length;e.historyLabel.textContent=c>0?`${r+1} / ${c}`:"0 snapshots";let p=r>0,l=r<c-1;e.undoBtn.disabled=!p,e.undoBtn.style.opacity=p?"1":"0.4",e.redoBtn.disabled=!l,e.redoBtn.style.opacity=l?"1":"0.4";}function Je(e,i){e.undoBtn.addEventListener("click",()=>{i.history&&i.history.currentIndex>0&&i.history.goBack(1);}),e.redoBtn.addEventListener("click",()=>{i.history&&i.history.currentIndex<i.history.snapshots.length-1&&i.history.goForward(1);});}var We=Object.assign(Object.create(null),{$eq:"=",$ne:"\u2260",$gt:">",$gte:"\u2265",$lt:"<",$lte:"\u2264",$in:"\u2208",$nin:"\u2209",$exists:"exists",$between:"in",$startsWith:"starts with",$endsWith:"ends with",$contains:"contains",$matches:"matches",$changed:"changed"});function ut(e){return Object.hasOwn(We,e)?We[e]:e}function Ue(e){return e instanceof RegExp?ee(String(e),40):be(e)}var mt=new Set(["$all","$any","$not"]);function Qe(e){let i=document.createElement("li"),s=e.pass?"\u2713":"\u2717";if(i.style.color=e.pass?y.green:y.red,i.style.listStyle="none",mt.has(e.op)){let r=e.path?` @ ${e.path}`:"";if(i.textContent=`${s} ${e.op}${r}`,e.children&&e.children.length>0){let c=document.createElement("ul");Object.assign(c.style,{margin:"0",paddingLeft:"14px",listStyle:"none"});for(let p of e.children)c.appendChild(Qe(p));i.appendChild(c);}}else {let r=ut(e.op),c=Ue(e.expected);if(e.pass)i.textContent=`${s} ${e.path} ${r} ${c}`;else {let p=Ue(e.actual);i.textContent=`${s} ${e.path} ${r} ${c} (actual: ${p})`;}}return i}function Ze(e,i,s){let r=i.get(s);if(r&&(r.remove(),i.delete(s),e.constraintsCount.textContent=String(i.size)),i.size===0&&!e.constraintsBody.querySelector(".dt-constraints-empty")){let c=document.createElement("div");c.style.color=y.muted,c.style.padding="4px",c.style.fontStyle="italic",c.textContent="Waiting for first evaluation\u2026",c.className="dt-constraints-empty",e.constraintsBody.appendChild(c);}}function et(e,i){let s=e.constraintsBody.querySelector(".dt-constraints-empty");s&&(s.textContent=i?"Waiting for first evaluation\u2026":"This system has no constraints");}function tt(e,i,s,r,c,p){let l=e.constraintsBody.querySelector(".dt-constraints-empty");l&&l.remove();let n=i.get(s);n||(n=document.createElement("div"),Object.assign(n.style,{marginBottom:"6px",paddingBottom:"4px",borderBottom:`1px solid ${y.rowBorder}`}),i.set(s,n),e.constraintsBody.appendChild(n),e.constraintsCount.textContent=String(i.size)),n.replaceChildren();let a=document.createElement("div");Object.assign(a.style,{fontWeight:"bold",color:r?y.green:y.muted});let o=r?"\u2713":"\u2717";if(a.textContent=p?`${o} ${s} (${p})`:`${o} ${s}`,n.appendChild(a),c&&c.length>0){let u=document.createElement("ul");Object.assign(u.style,{margin:"2px 0 0 0",paddingLeft:"14px",listStyle:"none"});for(let h of c)u.appendChild(Qe(h));n.appendChild(u);}else if(!c){let u=document.createElement("div");Object.assign(u.style,{color:y.muted,fontSize:"10px",fontStyle:"italic",paddingLeft:"14px"}),u.textContent="function-form when (no clause tree)",n.appendChild(u);}}var Te=new WeakMap;function pt(e,i,s,r,c,p){return [e.join(","),i.join(","),s.map(l=>`${l.id}:${l.active}`).join(","),[...r.entries()].map(([l,n])=>`${l}:${n.status}:${n.type}`).join(","),c.join(","),p.join(",")].join("|")}function ft(e,i,s,r,c){for(let p of s){let l=e.nodes.get(`0:${p}`);if(!l)continue;let n=i.recentlyChangedFacts.has(p);l.rect.setAttribute("fill",n?`${y.text}33`:"none"),l.rect.setAttribute("stroke-width",n?"2":"1");}for(let p of r){let l=e.nodes.get(`1:${p}`);if(!l)continue;let n=i.recentlyComputedDerivations.has(p);l.rect.setAttribute("fill",n?`${y.accent}33`:"none"),l.rect.setAttribute("stroke-width",n?"2":"1");}for(let p of c){let l=e.nodes.get(`2:${p}`);if(!l)continue;let n=i.recentlyActiveConstraints.has(p),a=l.rect.getAttribute("stroke")??y.muted;l.rect.setAttribute("fill",n?`${a}33`:"none"),l.rect.setAttribute("stroke-width",n?"2":"1");}}function Ae(e,i,s){let r=ae(i);if(!r)return;let c;try{c=Object.keys(i.facts.$store.toObject());}catch{c=[];}let p=Object.keys(i.derive),l=r.constraints,n=r.unmet,a=r.inflight,o=Object.keys(r.resolvers),u=new Map;for(let m of n)u.set(m.id,{type:m.requirement.type,fromConstraint:m.fromConstraint,status:"unmet"});for(let m of a)u.set(m.id,{type:m.resolverId,fromConstraint:"",status:"inflight"});if(c.length===0&&p.length===0&&l.length===0&&o.length===0){Te.delete(e.flowSvg),e.flowSvg.replaceChildren(),e.flowSvg.setAttribute("viewBox","0 0 460 40");let m=document.createElementNS("http://www.w3.org/2000/svg","text");m.setAttribute("x","230"),m.setAttribute("y","24"),m.setAttribute("text-anchor","middle"),m.setAttribute("fill",y.muted),m.setAttribute("font-size","10"),m.setAttribute("font-family",y.font),m.textContent="No system topology",e.flowSvg.appendChild(m);return}let h=a.map(m=>m.resolverId).sort(),M=pt(c,p,l,u,o,h),$=Te.get(e.flowSvg);if($&&$.fingerprint===M){ft($,s,c,p,l.map(m=>m.id));return}let R=Y.nodeW+Y.colGap,T=[5,5+R,5+R*2,5+R*3,5+R*4],f=T[4]+Y.nodeW+5;function g(m){let L=Y.startY+12;return m.map(E=>{let I={...E,y:L};return L+=Y.nodeH+Y.nodeGap,I})}let C=g(c.map(m=>{let L=r.facts.find(E=>E.key===m);return {id:m,label:ee(L?.meta?.label??m,Y.labelMaxChars)}})),k=g(p.map(m=>{let L=r.derivations.find(E=>E.id===m);return {id:m,label:ee(L?.meta?.label??m,Y.labelMaxChars)}})),_=g(l.map(m=>({id:m.id,label:ee(m.meta?.label??m.id,Y.labelMaxChars),active:m.active,priority:m.priority}))),F=g([...u.entries()].map(([m,L])=>({id:m,type:L.type,fromConstraint:L.fromConstraint,status:L.status}))),P=g(o.map(m=>{let L=r.resolverDefs.find(E=>E.id===m);return {id:m,label:ee(L?.meta?.label??m,Y.labelMaxChars)}})),K=Math.max(C.length,k.length,_.length,F.length,P.length,1),N=Y.startY+12+K*(Y.nodeH+Y.nodeGap)+8;e.flowSvg.replaceChildren(),e.flowSvg.setAttribute("viewBox",`0 0 ${f} ${N}`),e.flowSvg.setAttribute("aria-label",`Dependency graph: ${c.length} facts, ${p.length} derivations, ${l.length} constraints, ${u.size} requirements, ${o.length} resolvers`);let H=["Facts","Derivations","Constraints","Reqs","Resolvers"];for(let[m,L]of H.entries()){let E=document.createElementNS("http://www.w3.org/2000/svg","text");E.setAttribute("x",String(T[m]??0)),E.setAttribute("y","10"),E.setAttribute("fill",y.accent),E.setAttribute("font-size",String(Y.fontSize)),E.setAttribute("font-family",y.font),E.textContent=L,e.flowSvg.appendChild(E);}let j={fingerprint:M,nodes:new Map};function V(m,L,E,I,b,v,x,t,d){let S=document.createElementNS("http://www.w3.org/2000/svg","g");if(d){let W=document.createElementNS("http://www.w3.org/2000/svg","title");W.textContent=d,S.appendChild(W);}let O=document.createElementNS("http://www.w3.org/2000/svg","rect");O.setAttribute("x",String(L)),O.setAttribute("y",String(E-6)),O.setAttribute("width",String(Y.nodeW)),O.setAttribute("height",String(Y.nodeH)),O.setAttribute("rx","3"),O.setAttribute("fill",t?`${v}33`:"none"),O.setAttribute("stroke",v),O.setAttribute("stroke-width",t?"2":"1"),O.setAttribute("opacity",x?"0.35":"1"),S.appendChild(O);let B=document.createElementNS("http://www.w3.org/2000/svg","text");return B.setAttribute("x",String(L+4)),B.setAttribute("y",String(E+4)),B.setAttribute("fill",v),B.setAttribute("font-size",String(Y.fontSize)),B.setAttribute("font-family",y.font),B.setAttribute("opacity",x?"0.35":"1"),B.textContent=b,S.appendChild(B),e.flowSvg.appendChild(S),j.nodes.set(`${m}:${I}`,{g:S,rect:O,text:B}),{midX:L+Y.nodeW/2,midY:E}}function w(m,L,E,I,b,v){let x=document.createElementNS("http://www.w3.org/2000/svg","line");x.setAttribute("x1",String(m)),x.setAttribute("y1",String(L)),x.setAttribute("x2",String(E)),x.setAttribute("y2",String(I)),x.setAttribute("stroke",b),x.setAttribute("stroke-width","1"),x.setAttribute("stroke-dasharray","3,2"),x.setAttribute("opacity","0.7"),e.flowSvg.appendChild(x);}let A=new Map,D=new Map,z=new Map,q=new Map;for(let m of C){let L=s.recentlyChangedFacts.has(m.id),E=r.facts.find(b=>b.key===m.id)?.meta,I=V(0,T[0],m.y,m.id,m.label,y.text,false,L,E?.description);A.set(m.id,I);}for(let m of k){let L=s.recentlyComputedDerivations.has(m.id),E=r.derivations.find(b=>b.id===m.id)?.meta,I=V(1,T[1],m.y,m.id,m.label,y.accent,false,L,E?.description);D.set(m.id,I);}for(let m of _){let L=s.recentlyActiveConstraints.has(m.id),E=l.find(b=>b.id===m.id)?.meta,I=V(2,T[2],m.y,m.id,m.label,E?.color??(m.active?y.yellow:y.muted),!m.active,L,E?.description);z.set(m.id,I);}for(let m of F){let L=m.status==="unmet"?y.red:y.yellow,E=V(3,T[3],m.y,m.id,ee(m.type,Y.labelMaxChars),L,false,false);q.set(m.id,E);}for(let m of P){let L=a.some(I=>I.resolverId===m.id),E=r.resolverDefs.find(I=>I.id===m.id)?.meta;V(4,T[4],m.y,m.id,m.label,E?.color??(L?y.green:y.muted),!L,false,E?.description);}for(let m of k){let L=s.derivationDeps.get(m.id),E=D.get(m.id);if(L&&E)for(let I of L){let b=A.get(I);b&&w(b.midX+Y.nodeW/2,b.midY,E.midX-Y.nodeW/2,E.midY,y.accent);}}for(let m of F){let L=z.get(m.fromConstraint),E=q.get(m.id);L&&E&&w(L.midX+Y.nodeW/2,L.midY,E.midX-Y.nodeW/2,E.midY,y.muted);}for(let m of a){let L=q.get(m.id);if(L){let E=P.find(I=>I.id===m.resolverId);E&&w(L.midX+Y.nodeW/2,L.midY,T[4],E.y,y.green);}}Te.set(e.flowSvg,j);}function nt(e){e.animationTimer&&clearTimeout(e.animationTimer),e.animationTimer=setTimeout(()=>{e.recentlyChangedFacts.clear(),e.recentlyComputedDerivations.clear(),e.recentlyActiveConstraints.clear(),e.animationTimer=null;},600);}function rt(e,i){let s=i.entries.toArray();if(s.length===0)return;e.timelineSvg.replaceChildren();let r=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY;for(let R of s)R.startMs<r&&(r=R.startMs),R.endMs>c&&(c=R.endMs);let p=performance.now();for(let R of i.inflight.values())R<r&&(r=R),p>c&&(c=p);let l=c-r||1,n=ce-de-10,a=[],o=new Set;for(let R of s)o.has(R.resolver)||(o.add(R.resolver),a.push(R.resolver));for(let R of i.inflight.keys())o.has(R)||(o.add(R),a.push(R));let h=a.slice(-12),M=le*h.length+20;e.timelineSvg.setAttribute("viewBox",`0 0 ${ce} ${M}`),e.timelineSvg.setAttribute("height",String(Math.min(M,200)));let $=5;for(let R=0;R<=$;R++){let T=de+n*R/$,f=l*R/$,g=document.createElementNS("http://www.w3.org/2000/svg","text");g.setAttribute("x",String(T)),g.setAttribute("y","8"),g.setAttribute("fill",y.muted),g.setAttribute("font-size","6"),g.setAttribute("font-family",y.font),g.setAttribute("text-anchor","middle"),g.textContent=f<1e3?`${f.toFixed(0)}ms`:`${(f/1e3).toFixed(1)}s`,e.timelineSvg.appendChild(g);let C=document.createElementNS("http://www.w3.org/2000/svg","line");C.setAttribute("x1",String(T)),C.setAttribute("y1","10"),C.setAttribute("x2",String(T)),C.setAttribute("y2",String(M)),C.setAttribute("stroke",y.border),C.setAttribute("stroke-width","0.5"),e.timelineSvg.appendChild(C);}for(let R=0;R<h.length;R++){let T=h[R],f=12+R*le,g=R%Ce.length,C=Ce[g],k=document.createElementNS("http://www.w3.org/2000/svg","text");k.setAttribute("x",String(de-4)),k.setAttribute("y",String(f+le/2+3)),k.setAttribute("fill",y.muted),k.setAttribute("font-size","7"),k.setAttribute("font-family",y.font),k.setAttribute("text-anchor","end"),k.textContent=ee(T,12),e.timelineSvg.appendChild(k);let _=s.filter(P=>P.resolver===T);for(let P of _){let K=de+(P.startMs-r)/l*n,N=Math.max((P.endMs-P.startMs)/l*n,xe),H=document.createElementNS("http://www.w3.org/2000/svg","rect");H.setAttribute("x",String(K)),H.setAttribute("y",String(f+2)),H.setAttribute("width",String(N)),H.setAttribute("height",String(le-4)),H.setAttribute("rx","2"),H.setAttribute("fill",P.error?y.red:C),H.setAttribute("opacity","0.8");let j=document.createElementNS("http://www.w3.org/2000/svg","title"),V=P.endMs-P.startMs;j.textContent=`${T}: ${V.toFixed(1)}ms${P.error?" (error)":""}`,H.appendChild(j),e.timelineSvg.appendChild(H);}let F=i.inflight.get(T);if(F!==void 0){let P=de+(F-r)/l*n,K=Math.max((p-F)/l*n,xe),N=document.createElementNS("http://www.w3.org/2000/svg","rect");N.setAttribute("x",String(P)),N.setAttribute("y",String(f+2)),N.setAttribute("width",String(K)),N.setAttribute("height",String(le-4)),N.setAttribute("rx","2"),N.setAttribute("fill",C),N.setAttribute("opacity","0.4"),N.setAttribute("stroke",C),N.setAttribute("stroke-width","1"),N.setAttribute("stroke-dasharray","3,2");let H=document.createElementNS("http://www.w3.org/2000/svg","title");H.textContent=`${T}: inflight ${(p-F).toFixed(0)}ms`,N.appendChild(H),e.timelineSvg.appendChild(N);}}e.timelineSvg.setAttribute("aria-label",`Timeline: ${s.length} resolver executions across ${h.length} resolvers`);}function gt(){if(typeof window>"u")return {systems:new Map,getSystem:()=>null,getSystems:()=>[],inspect:()=>null,getEvents:()=>[],explain:()=>null,exportSession:()=>null,importSession:()=>false,clearEvents:()=>{},subscribe:()=>()=>{}};if(!window.__DIRECTIVE__){let e=new Map,i={systems:e,getSystem(s){return s?e.get(s)?.system??null:e.values().next().value?.system??null},getSystems(){return [...e.keys()]},inspect(s){let r=this.getSystem(s),c=s?e.get(s):e.values().next().value,p=r?.inspect()??null;return p&&c&&(p.resolverStats=c.resolverStats?Object.fromEntries(c.resolverStats):{}),p},getEvents(s){return s?e.get(s)?.events.toArray()??[]:e.values().next().value?.events.toArray()??[]},explain(s,r){return this.getSystem(r)?.explain(s)??null},subscribe(s,r){let c=r?e.get(r):e.values().next().value;if(!c){let p=false,n=setInterval(()=>{let o=r?e.get(r):e.values().next().value;o&&!p&&(p=true,o.subscribers.add(s));},100),a=setTimeout(()=>clearInterval(n),1e4);return ()=>{clearInterval(n),clearTimeout(a);for(let o of e.values())o.subscribers.delete(s);}}return c.subscribers.add(s),()=>{c.subscribers.delete(s);}},exportSession(s){let r=s?e.get(s):e.values().next().value;return r?JSON.stringify({version:1,name:s??e.keys().next().value??"default",exportedAt:Date.now(),events:r.events.toArray()}):null},importSession(s,r){try{if(s.length>10*1024*1024)return !1;let c=JSON.parse(s);if(!c||typeof c!="object"||Array.isArray(c)||!Array.isArray(c.events))return !1;let p=r?e.get(r):e.values().next().value;if(!p)return !1;let l=p.maxEvents,n=c.events,a=n.length>l?n.length-l:0;p.events.clear();for(let o=a;o<n.length;o++){let u=n[o];u&&typeof u=="object"&&!Array.isArray(u)&&typeof u.timestamp=="number"&&typeof u.type=="string"&&u.type!=="__proto__"&&u.type!=="constructor"&&u.type!=="prototype"&&p.events.push({timestamp:u.timestamp,type:u.type,data:u.data??null});}return !0}catch{return false}},clearEvents(s){let r=s?e.get(s):e.values().next().value;r&&r.events.clear();}};return Object.defineProperty(window,"__DIRECTIVE__",{value:i,writable:false,configurable:ge(),enumerable:true}),i}return window.__DIRECTIVE__}function bt(e={}){let{name:i="default",trace:s=false,maxEvents:r,panel:c=false,position:p="bottom-right",defaultOpen:l=false}=e,n=Ne(r),a=gt(),o={system:null,events:new ue(n),maxEvents:n,subscribers:new Set,resolverStats:new Map};a.systems.set(i,o);let u=(t,d)=>{let S={timestamp:Date.now(),type:t,data:d};s&&o.events.push(S);for(let O of o.subscribers)try{O(S);}catch{}},h=null,M=new Map,$=new Map,R=new Map,T=Be(),f=qe(),g=Ve(),C=je(),k=c&&typeof window<"u"&&typeof document<"u"&&ge(),_=null,F=0,P=1,K=2,N=4,H=8,j=16,V=32,w=64,A=128,D=256,z=new Map,q=new Set,m=new Map,L=new Set,E=null;function I(t){F|=t,_===null&&typeof requestAnimationFrame<"u"&&(_=requestAnimationFrame(b));}function b(){if(_=null,!h||!o.system){F=0;return}let t=h.refs,d=o.system,S=F;if(F=0,S&P){for(let O of q)Ke(M,O);q.clear();for(let[O,{value:B,flash:W}]of z)me(M,t.factsBody,O,B,W,h.flashTimers);z.clear(),t.factsCount.textContent=String(M.size);}if(S&K&&Ee(t,$,d,h.flashTimers),S&D){for(let O of L)Ze(t,R,O);L.clear();for(let[O,{active:B,whenExplain:W,label:Q}]of m)tt(t,R,O,B,W,Q);m.clear();}if(S&H)if(E)ve(t,E.inflight.length,E.unmet.length);else {let O=ae(d);O&&ve(t,O.inflight.length,O.unmet.length);}if(S&N)if(E)ye(t,E.inflight,E.unmet);else {let O=ae(d);O&&ye(t,O.inflight,O.unmet);}S&j&&Xe(t,T),S&V&&Ae(t,d,f),S&w&&Me(t,d),S&A&&rt(t,C);}function v(t,d){h&&s&&Ye(h.refs,t,d,o.events.size);}function x(t,d){g.isRecording&&g.recordedEvents.length<Fe&&g.recordedEvents.push({timestamp:Date.now(),type:t,data:_e(d)});}return {name:"devtools",onInit:t=>{if(o.system=t,u("init",{}),typeof window<"u"&&console.log(`%c[Directive Devtools]%c System "${i}" initialized. Access via window.__DIRECTIVE__`,"color: #7c3aed; font-weight: bold","color: inherit"),k){let d=o.system;h=Ge(i,p,l,s);let S=h.refs;try{let W=d.facts.$store.toObject();for(let[Q,ne]of Object.entries(W))me(M,S.factsBody,Q,ne,!1);S.factsCount.textContent=String(Object.keys(W).length);}catch{}Ee(S,$,d);let O=ae(d);O&&(ve(S,O.inflight.length,O.unmet.length),ye(S,O.inflight,O.unmet)),Me(S,d),Je(S,d),Ae(S,d,f);let B=(O?.constraints?.length??0)>0;et(S,B),S.recordBtn.addEventListener("click",()=>{if(g.isRecording=!g.isRecording,S.recordBtn.textContent=g.isRecording?"\u23F9 Stop":"\u23FA Record",S.recordBtn.style.color=g.isRecording?y.red:y.text,g.isRecording){g.recordedEvents=[],g.snapshots=[];try{g.snapshots.push({timestamp:Date.now(),facts:d.facts.$store.toObject()});}catch{}}}),S.exportBtn.addEventListener("click",()=>{let W=g.recordedEvents.length>0?g.recordedEvents:o.events.toArray(),Q=JSON.stringify({version:1,name:i,exportedAt:Date.now(),events:W,snapshots:g.snapshots},null,2),ne=new Blob([Q],{type:"application/json"}),te=URL.createObjectURL(ne),se=document.createElement("a");se.href=te,se.download=`directive-session-${i}-${Date.now()}.json`,se.click(),URL.revokeObjectURL(te);});}},onStart:t=>{u("start",{}),v("start",{}),x("start",{});},onStop:t=>{u("stop",{}),v("stop",{}),x("stop",{});},onDestroy:t=>{u("destroy",{}),a.systems.delete(i),_!==null&&typeof cancelAnimationFrame<"u"&&(cancelAnimationFrame(_),_=null),f.animationTimer&&clearTimeout(f.animationTimer),h&&(h.destroy(),h=null,M.clear(),$.clear(),R.clear());},onFactSet:(t,d,S)=>{u("fact.set",{key:t,value:d,prev:S}),x("fact.set",{key:t,value:d,prev:S}),f.recentlyChangedFacts.add(t),h&&o.system&&(z.set(t,{value:d,flash:true}),q.delete(t),I(P),v("fact.set",{key:t,value:d}));},onFactDelete:(t,d)=>{u("fact.delete",{key:t,prev:d}),x("fact.delete",{key:t,prev:d}),h&&(q.add(t),z.delete(t),I(P),v("fact.delete",{key:t}));},onFactsBatch:t=>{if(u("facts.batch",{changes:t}),x("facts.batch",{count:t.length}),h&&o.system){for(let d of t)d.type==="delete"?(q.add(d.key),z.delete(d.key)):(f.recentlyChangedFacts.add(d.key),z.set(d.key,{value:d.value,flash:true}),q.delete(d.key));I(P),v("facts.batch",{count:t.length});}},onDerivationCompute:(t,d,S)=>{u("derivation.compute",{id:t,value:d,deps:S}),x("derivation.compute",{id:t,deps:S}),f.derivationDeps.set(t,S),f.recentlyComputedDerivations.add(t),v("derivation.compute",{id:t,deps:S});},onDerivationInvalidate:t=>{u("derivation.invalidate",{id:t}),v("derivation.invalidate",{id:t});},onReconcileStart:t=>{u("reconcile.start",{}),T.lastReconcileStartMs=performance.now(),v("reconcile.start",{}),x("reconcile.start",{});},onReconcileEnd:t=>{if(u("reconcile.end",t),x("reconcile.end",{unmet:t.unmet.length,inflight:t.inflight.length,completed:t.completed.length}),T.lastReconcileStartMs>0){let d=performance.now()-T.lastReconcileStartMs;T.reconcileCount++,T.reconcileTotalMs+=d,T.lastReconcileStartMs=0;}if(g.isRecording&&o.system&&g.snapshots.length<He)try{g.snapshots.push({timestamp:Date.now(),facts:o.system.facts.$store.toObject()});}catch{}h&&o.system&&(E=t,nt(f),I(K|H|N|j|V|w),v("reconcile.end",{unmet:t.unmet.length,inflight:t.inflight.length}));},onConstraintEvaluate:(t,d,S)=>{let O=o.system?.meta?.constraint(t)?.label,B=O?{id:t,active:d,label:O}:{id:t,active:d},W=S?{...B,whenExplain:S}:B;u("constraint.evaluate",W),x("constraint.evaluate",W),d?(f.activeConstraints.add(t),f.recentlyActiveConstraints.add(t)):f.activeConstraints.delete(t),h&&(m.set(t,{active:d,whenExplain:S,label:O}),L.delete(t),I(D)),v("constraint.evaluate",{id:t,active:d});},onConstraintError:(t,d)=>{u("constraint.error",{id:t,error:String(d)}),v("constraint.error",{id:t,error:String(d)});},onRequirementCreated:t=>{u("requirement.created",{id:t.id,type:t.requirement.type}),x("requirement.created",{id:t.id,type:t.requirement.type}),v("requirement.created",{id:t.id,type:t.requirement.type});},onRequirementMet:(t,d)=>{u("requirement.met",{id:t.id,byResolver:d}),x("requirement.met",{id:t.id,byResolver:d}),v("requirement.met",{id:t.id,byResolver:d});},onRequirementCanceled:t=>{u("requirement.canceled",{id:t.id}),x("requirement.canceled",{id:t.id}),v("requirement.canceled",{id:t.id});},onResolverStart:(t,d)=>{let S=o.system?.meta?.resolver(t)?.label,O={resolver:t,requirementId:d.id},B=S?{...O,label:S}:O;u("resolver.start",B),x("resolver.start",B),C.inflight.set(t,performance.now()),h&&o.system&&(I(N|H|A),v("resolver.start",{resolver:t,requirementId:d.id}));},onResolverComplete:(t,d,S)=>{let O=o.system?.meta?.resolver(t)?.label;u("resolver.complete",{resolver:t,requirementId:d.id,duration:S,...O?{label:O}:{}}),x("resolver.complete",{resolver:t,requirementId:d.id,duration:S});let B=o.resolverStats.get(t)??{count:0,totalMs:0,errors:0};if(B.count++,B.totalMs+=S,o.resolverStats.set(t,B),o.resolverStats.size>we){let Q=o.resolverStats.keys().next().value;Q!==void 0&&o.resolverStats.delete(Q);}T.resolverStats.set(t,{...B});let W=C.inflight.get(t);C.inflight.delete(t),W!==void 0&&C.entries.push({resolver:t,startMs:W,endMs:performance.now(),error:false}),h&&o.system&&(I(N|H|j|A),v("resolver.complete",{resolver:t,duration:S}));},onResolverError:(t,d,S)=>{u("resolver.error",{resolver:t,requirementId:d.id,error:String(S)}),x("resolver.error",{resolver:t,requirementId:d.id,error:String(S)});let O=o.resolverStats.get(t)??{count:0,totalMs:0,errors:0};if(O.errors++,o.resolverStats.set(t,O),o.resolverStats.size>we){let W=o.resolverStats.keys().next().value;W!==void 0&&o.resolverStats.delete(W);}T.resolverStats.set(t,{...O});let B=C.inflight.get(t);C.inflight.delete(t),B!==void 0&&C.entries.push({resolver:t,startMs:B,endMs:performance.now(),error:true}),h&&o.system&&(I(N|H|j|A),v("resolver.error",{resolver:t,error:String(S)}));},onResolverRetry:(t,d,S)=>{u("resolver.retry",{resolver:t,requirementId:d.id,attempt:S}),x("resolver.retry",{resolver:t,requirementId:d.id,attempt:S}),v("resolver.retry",{resolver:t,attempt:S});},onResolverCancel:(t,d)=>{u("resolver.cancel",{resolver:t,requirementId:d.id}),x("resolver.cancel",{resolver:t,requirementId:d.id}),C.inflight.delete(t),v("resolver.cancel",{resolver:t});},onResolverWriteRejected:t=>{let d=t.kind==="summary"?{kind:t.kind,resolver:t.resolver,requirementId:t.req.id,reason:t.reason,dropped:t.dropped}:{kind:t.kind,resolver:t.resolver,requirementId:t.req.id,reason:t.reason,fact:t.fact,expected:t.expected,actual:t.actual};u("resolver.write.rejected",d),x("resolver.write.rejected",d),v("resolver.write.rejected",t.kind==="summary"?{resolver:t.resolver,dropped:t.dropped}:{resolver:t.resolver,fact:t.fact});},onEffectRun:t=>{let d=o.system?.meta?.effect(t)?.label,S=d?{id:t,label:d}:{id:t};u("effect.run",S),x("effect.run",S),T.effectRunCount++,v("effect.run",{id:t});},onEffectError:(t,d)=>{u("effect.error",{id:t,error:String(d)}),T.effectErrorCount++,v("effect.error",{id:t,error:String(d)});},onSnapshot:t=>{u("timetravel.snapshot",{id:t.id,trigger:t.trigger}),h&&o.system&&I(w),v("timetravel.snapshot",{id:t.id,trigger:t.trigger});},onHistoryNavigate:(t,d)=>{if(u("timetravel.jump",{from:t,to:d}),x("timetravel.jump",{from:t,to:d}),h&&o.system){let S=o.system;try{let O=S.facts.$store.toObject();M.clear(),h.refs.factsBody.replaceChildren();for(let[B,W]of Object.entries(O))me(M,h.refs.factsBody,B,W,!1);h.refs.factsCount.textContent=String(Object.keys(O).length);}catch{}$.clear(),f.derivationDeps.clear(),h.refs.derivBody.replaceChildren(),R.clear(),h.refs.constraintsBody.replaceChildren(),h.refs.constraintsCount.textContent="0",E=null,I(K|H|N|V|w),v("timetravel.jump",{from:t,to:d});}},onError:t=>{u("error",{source:t.source,sourceId:t.sourceId,message:t.message}),x("error",{source:t.source,message:t.message}),v("error",{source:t.source,message:t.message});},onErrorRecovery:(t,d)=>{u("error.recovery",{source:t.source,sourceId:t.sourceId,strategy:d}),v("error.recovery",{source:t.source,strategy:d});},onTraceComplete:t=>{u("trace.complete",{id:t.id,status:t.status,facts:t.factChanges.length,constraints:t.constraintsHit.length,requirements:t.requirementsAdded.length,resolvers:t.resolversStarted.length,effects:t.effectsRun.length}),v("trace.complete",{id:t.id});},onDefinitionRegister:(t,d)=>{u("definition.register",{type:t,id:d}),x("definition.register",{type:t,id:d}),v("definition.register",{type:t,id:d});},onDefinitionAssign:(t,d)=>{u("definition.assign",{type:t,id:d}),x("definition.assign",{type:t,id:d}),v("definition.assign",{type:t,id:d});},onDefinitionUnregister:(t,d)=>{u("definition.unregister",{type:t,id:d}),x("definition.unregister",{type:t,id:d}),v("definition.unregister",{type:t,id:d}),t==="constraint"&&h&&(L.add(d),m.delete(d),I(D));},onDefinitionCall:(t,d,S)=>{u("definition.call",{type:t,id:d,props:S}),x("definition.call",{type:t,id:d,props:S}),v("definition.call",{type:t,id:d,props:S});}}}var st="directive-devtools-event",ot=new Set(["__proto__","constructor","prototype"]),yt=Math.random().toString(36).slice(2,8);function vt(){if(typeof window<"u"){let e=`__DIRECTIVE_BRIDGE_ID_${yt}__`,i=window,s=i[e]??0;return i[e]=s+1,s+1}return 1}function ht(e){let i=false;for(let r of ot)if(r in e){i=true;break}if(!i)return e;let s=Object.create(null);for(let[r,c]of Object.entries(e))ot.has(r)||(s[r]=c);return s}function St(e){if(!(typeof window>"u"))try{let i=ht(e),s={id:vt(),timestamp:Date.now(),snapshotId:null,...i};window.dispatchEvent(new CustomEvent(st,{detail:s}));}catch{}}function xt(e){let{storage:i,key:s,include:r,exclude:c=[],debounce:p=100,onRestore:l,onSave:n,onError:a}=e,o=null,u=null,h=new Set,M=f=>c.includes(f)?false:r?r.includes(f):true,$=()=>{try{let f=i.getItem(s);if(!f)return null;let g=JSON.parse(f);return typeof g!="object"||g===null?null:g$1(g)?g:(a?.(new Error("Potential prototype pollution detected in stored data")),null)}catch(f){return a?.(f instanceof Error?f:new Error(String(f))),null}},R=()=>{if(u)try{let f={};for(let g of h)M(g)&&(f[g]=u.facts[g]);i.setItem(s,JSON.stringify(f)),n?.(f);}catch(f){a?.(f instanceof Error?f:new Error(String(f)));}},T=()=>{o&&clearTimeout(o),o=setTimeout(R,p);};return {name:"persistence",onInit:f=>{u=f;let g=$();g&&(u.facts.$store.batch(()=>{for(let[C,k]of Object.entries(g))M(C)&&(u.facts[C]=k,h.add(C));}),l?.(g));},onDestroy:()=>{o&&clearTimeout(o),R();},onFactSet:f=>{h.add(f),M(f)&&T();},onFactDelete:f=>{h.delete(f),M(f)&&T();},onFactsBatch:f=>{let g=false;for(let C of f)C.type==="set"?h.add(C.key):h.delete(C.key),M(C.key)&&(g=true);g&&T();}}}function Ct(e={}){let{onSlowConstraint:i,onSlowResolver:s,slowConstraintThresholdMs:r=16,slowResolverThresholdMs:c=1e3}=e,p=new Map,l=new Map,n=new Map,a={runs:0,totalDurationMs:0,avgDurationMs:0,maxDurationMs:0},o=0,u=0,h=0;function M(f){let g=p.get(f);return g||(g={evaluations:0,totalDurationMs:0,avgDurationMs:0,maxDurationMs:0,lastEvaluatedAt:0},p.set(f,g)),g}function $(f){let g=l.get(f);return g||(g={starts:0,completions:0,errors:0,retries:0,cancellations:0,totalDurationMs:0,avgDurationMs:0,maxDurationMs:0,lastCompletedAt:0},l.set(f,g)),g}function R(f){let g=n.get(f);return g||(g={runs:0,errors:0,lastRunAt:0},n.set(f,g)),g}let T={name:"performance",onStart(){o=Date.now();},onConstraintEvaluate(f,g){let C=performance.now(),k=M(f);if(k.evaluations++,k.lastEvaluatedAt=Date.now(),h>0){let _=C-h;k.totalDurationMs+=_;let F=k.evaluations;k.avgDurationMs=k.totalDurationMs/F,_>k.maxDurationMs&&(k.maxDurationMs=_),_>r&&i?.(f,_);}h=C;},onResolverStart(f,g){let C=$(f);C.starts++;},onResolverComplete(f,g,C){let k=$(f);k.completions++,k.totalDurationMs+=C,k.avgDurationMs=k.totalDurationMs/k.completions,C>k.maxDurationMs&&(k.maxDurationMs=C),k.lastCompletedAt=Date.now(),C>c&&s?.(f,C);},onResolverError(f,g,C){$(f).errors++;},onResolverRetry(f,g,C){$(f).retries++;},onResolverCancel(f,g){$(f).cancellations++;},onEffectRun(f){let g=R(f);g.runs++,g.lastRunAt=Date.now();},onEffectError(f,g){R(f).errors++;},onReconcileStart(){u=performance.now(),h=0;},onReconcileEnd(){let f=performance.now()-u;a.runs++,a.totalDurationMs+=f,a.avgDurationMs=a.totalDurationMs/a.runs,f>a.maxDurationMs&&(a.maxDurationMs=f);},onDestroy(){T.reset();},getSnapshot(){let f={};for(let[k,_]of p)f[k]={..._};let g={};for(let[k,_]of l)g[k]={..._};let C={};for(let[k,_]of n)C[k]={..._};return {constraints:f,resolvers:g,effects:C,reconcile:{...a},uptime:o?Date.now()-o:0}},reset(){p.clear(),l.clear(),n.clear(),a.runs=0,a.totalDurationMs=0,a.avgDurationMs=0,a.maxDurationMs=0,h=0;}};return T}function he(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function Re(e,i){if(e.length===0)return 0;let s=[...e].sort((c,p)=>c-p),r=Math.ceil(i/100*s.length)-1;return s[Math.max(0,r)]??0}function wt(e={}){let{serviceName:i="directive-agents",metrics:s={},tracing:r={},alerts:c=[],summaryMetrics:p={},events:l={}}=e,n={requests:p.requests??"agent.requests",errors:p.errors??"agent.errors",latency:p.latency??"agent.latency",tokens:p.tokens??"agent.tokens",cost:p.cost??"agent.cost"},{enabled:a=true,exportInterval:o,exporter:u,maxDataPoints:h=1e3}=s,{enabled:M=true,sampleRate:$=1,maxSpans:R=1e3,exporter:T}=r,f=Date.now(),g=new Map,C=new Map,k=[],_=[],F=new Map,P=new Map,K;o&&(u||T)&&(K=setInterval(async()=>{try{if(u&&a&&await u(Array.from(P.values())),T&&M){let w=k.splice(0,100);w.length>0&&await T(w);}}catch(w){console.error("[Directive Observability] Export error:",w);}},o));function N(w){if(!a)return;let A=`${w.name}:${JSON.stringify(Object.fromEntries(Object.entries(w.labels).sort()))}`,D=g.get(A);D||(D=[],g.set(A,D)),D.push(w),D.length>h&&D.shift(),H(w.name,D),l.onMetricRecorded?.(w),j(w.name);}function H(w,A){if(A.length===0)return;let D=A.map(E=>E.value),z=D.reduce((E,I)=>E+I,0),q=A[0],m=D[D.length-1],L={name:w,type:q.type,count:A.length,sum:z,min:Math.min(...D),max:Math.max(...D),avg:z/A.length,lastValue:m,lastUpdated:Date.now()};P.set(w,L);}function j(w){for(let A of c){if(A.metric!==w)continue;let D=P.get(w);if(!D)continue;let z=`${A.metric}:${A.threshold}`,q=F.get(z),m=A.cooldownMs??6e4;if(q&&Date.now()-q<m)continue;let L=A.operator??">",E=D.lastValue,I=A.threshold,b=false;switch(L){case ">":b=E>I;break;case "<":b=E<I;break;case ">=":b=E>=I;break;case "<=":b=E<=I;break;case "==":b=E===I;break}if(b){let v={alertId:he(),metric:w,currentValue:E,threshold:I,operator:L,action:A.action,timestamp:Date.now(),message:`Alert: ${w} ${L} ${I} (current: ${E})`};switch(_.push(v),_.length>1e3&&_.splice(0,_.length-1e3),F.set(z,Date.now()),l.onAlert?.(v),A.action){case "log":console.log(`[Observability] ${v.message}`);break;case "warn":console.warn(`[Observability] ${v.message}`);break;case "alert":console.error(`[Observability ALERT] ${v.message}`);break;case "callback":A.callback?.(D,I);break}}}}function V(w){let A=[];for(let[D,z]of g)if(D.startsWith(`${w}:`))for(let q of z)A.push(q.value);return A.length===0?{}:{p50:Re(A,50),p90:Re(A,90),p99:Re(A,99)}}return {incrementCounter(w,A={},D=1){N({name:w,type:"counter",value:D,labels:A,timestamp:Date.now()});},setGauge(w,A,D={}){N({name:w,type:"gauge",value:A,labels:D,timestamp:Date.now()});},observeHistogram(w,A,D={}){N({name:w,type:"histogram",value:A,labels:D,timestamp:Date.now()});},startSpan(w,A){if(Math.random()>$)return {traceId:"sampled-out",spanId:"sampled-out",operationName:w,serviceName:i,startTime:Date.now(),status:"ok",tags:{},logs:[]};let D={traceId:A?C.get(A)?.traceId??he():he(),spanId:he(),parentSpanId:A,operationName:w,serviceName:i,startTime:Date.now(),status:"ok",tags:{},logs:[]};return M&&(C.set(D.spanId,D),l.onSpanStart?.(D)),D},endSpan(w,A="ok"){if(w==="sampled-out")return;let D=C.get(w);if(D){for(D.endTime=Date.now(),D.duration=D.endTime-D.startTime,D.status=A,C.delete(w),k.push(D);k.length>R;)k.shift();N({name:`${D.operationName}.latency`,type:"histogram",value:D.duration,labels:{},timestamp:Date.now()}),A==="error"&&N({name:`${D.operationName}.errors`,type:"counter",value:1,labels:{},timestamp:Date.now()}),l.onSpanEnd?.(D);}},addSpanLog(w,A,D="info"){if(w==="sampled-out")return;let z=C.get(w);z&&z.logs.push({timestamp:Date.now(),message:A,level:D});},addSpanTag(w,A,D){if(w==="sampled-out")return;let z=C.get(w);z&&(z.tags[A]=D);},getDashboard(){let w=P.get(n.requests),A=P.get(n.errors),D=P.get(n.latency),z=P.get(n.tokens),q=P.get(n.cost),m=w?.sum??0,L=A?.sum??0,E=m>0?L/m:0,I=D?V(n.latency):{};return {service:{name:i,uptime:Date.now()-f,startTime:f},metrics:Object.fromEntries(P),traces:[...k].slice(-100),alerts:[..._].slice(-50),summary:{totalRequests:m,totalErrors:L,errorRate:E,avgLatency:D?.avg??0,p99Latency:I.p99??0,activeSpans:C.size,totalTokens:z?.sum??0,totalCost:q?.sum??0}}},getMetric(w){let A=P.get(w);if(!A)return;let D=V(w);return {...A,...D}},getTraces(w=100){return [...k].slice(-w)},getAlerts(){return [..._]},export(){return {metrics:Array.from(P.values()),traces:[...k],alerts:[..._]}},clear(){g.clear(),P.clear(),C.clear(),k.length=0,_.length=0,F.clear();},async destroy(){K&&(clearInterval(K),K=void 0);try{u&&a&&P.size>0&&await u(Array.from(P.values())),T&&M&&k.length>0&&await T([...k]);}catch(w){console.error("[Directive Observability] Error flushing data during destroy:",w);}g.clear(),P.clear(),C.clear(),k.length=0,_.length=0,F.clear();},getHealthStatus(){let w=P.get(n.requests),A=P.get(n.errors),D=w?.sum??0,z=A?.sum??0,q=D>0?z/D:0,m=_.filter(L=>Date.now()-L.timestamp<3e5).length;return {healthy:q<.1&&m===0,uptime:Date.now()-f,errorRate:q,activeAlerts:m}}}}function Et(e){return {trackRun(i,s){let r={agent:i};e.incrementCounter("agent.requests",r),s.success||e.incrementCounter("agent.errors",r),e.observeHistogram("agent.latency",s.latencyMs,r),s.inputTokens!==void 0&&(e.incrementCounter("agent.tokens.input",r,s.inputTokens),e.incrementCounter("agent.tokens",r,s.inputTokens)),s.outputTokens!==void 0&&(e.incrementCounter("agent.tokens.output",r,s.outputTokens),e.incrementCounter("agent.tokens",r,s.outputTokens)),s.cost!==void 0&&e.incrementCounter("agent.cost",r,s.cost),s.toolCalls!==void 0&&e.incrementCounter("agent.tool_calls",r,s.toolCalls);},trackGuardrail(i,s){let r={guardrail:i};e.incrementCounter("guardrail.checks",r),s.passed||e.incrementCounter("guardrail.failures",r),s.blocked&&e.incrementCounter("guardrail.blocks",r),e.observeHistogram("guardrail.latency",s.latencyMs,r);},trackApproval(i,s){let r={tool:i};e.incrementCounter("approval.requests",r),s.approved?e.incrementCounter("approval.approved",r):e.incrementCounter("approval.rejected",r),s.timedOut&&e.incrementCounter("approval.timeouts",r),e.observeHistogram("approval.wait_time",s.waitTimeMs,r);},trackHandoff(i,s,r){e.incrementCounter("handoff.count",{from:i,to:s}),e.observeHistogram("handoff.latency",r);}}}function Mt(e){let i=[{key:"service.name",value:{stringValue:e.serviceName??"directive-agents"}},{key:"telemetry.sdk.name",value:{stringValue:"@directive-run/core"}},{key:"telemetry.sdk.language",value:{stringValue:"typescript"}},{key:"telemetry.sdk.version",value:{stringValue:"1.20.2"}}];if(e.serviceVersion&&i.push({key:"service.version",value:{stringValue:e.serviceVersion}}),e.resourceAttributes)for(let[s,r]of Object.entries(e.resourceAttributes))i.push({key:s,value:{stringValue:r}});return {attributes:i}}function oe(e){return `${BigInt(e)*BigInt(1e6)}`}function Tt(e){switch(e){case "counter":return "sum";case "gauge":return "gauge";case "histogram":return "histogram";default:return "gauge"}}function At(e,i,s){let r=e.map(c=>{let p=c.lastUpdated-6e4,l=[{asInt:c.type==="counter"?c.sum:void 0,asDouble:c.type!=="counter"?c.lastValue:void 0,timeUnixNano:oe(c.lastUpdated),startTimeUnixNano:oe(p),attributes:[]}],n=Tt(c.type),a={name:c.name,unit:""};return n==="sum"?a.sum={dataPoints:l,aggregationTemporality:2,isMonotonic:true}:n==="histogram"?a.histogram={dataPoints:[{count:c.count,sum:c.sum,min:c.min,max:c.max,timeUnixNano:oe(c.lastUpdated),startTimeUnixNano:oe(p),attributes:[]}],aggregationTemporality:2}:a.gauge={dataPoints:l},a});return {resourceMetrics:[{resource:i,scopeMetrics:[{scope:{name:"directive",version:s},metrics:r}]}]}}function Rt(e,i,s){let r=e.map(c=>{let p=c.logs.map(a=>({timeUnixNano:oe(a.timestamp),name:a.level,attributes:[{key:"message",value:{stringValue:a.message}},{key:"level",value:{stringValue:a.level}}]})),l=Object.entries(c.tags).map(([a,o])=>({key:a,value:typeof o=="string"?{stringValue:o}:typeof o=="number"?{intValue:`${o}`}:{boolValue:o}})),n=c.status==="ok"?1:c.status==="error"?2:0;return {traceId:c.traceId.replace(/-/g,"").padEnd(32,"0").slice(0,32),spanId:c.spanId.replace(/-/g,"").padEnd(16,"0").slice(0,16),parentSpanId:c.parentSpanId?c.parentSpanId.replace(/-/g,"").padEnd(16,"0").slice(0,16):void 0,name:c.operationName,kind:1,startTimeUnixNano:oe(c.startTime),endTimeUnixNano:c.endTime?oe(c.endTime):oe(c.startTime),attributes:l,events:p,status:{code:n}}});return {resourceSpans:[{resource:i,scopeSpans:[{scope:{name:"directive",version:s},spans:r}]}]}}function Dt(e){let{endpoint:i,headers:s={},scopeVersion:r="0.1.0",timeoutMs:c=1e4,fetch:p=globalThis.fetch,onError:l}=e;try{let o=new URL(i);if(o.protocol!=="http:"&&o.protocol!=="https:")throw new Error("[Directive] Only http: and https: protocols are supported")}catch(o){throw new Error(`[Directive OTLP] Invalid endpoint URL "${i}": ${o instanceof Error?o.message:String(o)}`)}if(/\/v1\/(metrics|traces)/.test(i)&&console.warn(`[Directive OTLP] Endpoint "${i}" already contains a /v1/metrics or /v1/traces path. The exporter will append /v1/metrics or /v1/traces automatically. Use the base URL (e.g., "http://localhost:4318") instead.`),c<=0||!Number.isFinite(c))throw new Error(`[Directive OTLP] timeoutMs must be > 0, got ${c}`);let n=Mt(e);async function a(o,u,h){let M=`${i.replace(/\/$/,"")}${o}`,$=new AbortController,R=setTimeout(()=>$.abort(),c);try{let T=await p(M,{method:"POST",headers:{"Content-Type":"application/json",...s},body:JSON.stringify(u),signal:$.signal});if(!T.ok)throw new Error(`[Directive] OTLP export failed: ${T.status} ${T.statusText}`)}catch(T){let f=T instanceof Error?T:new Error(String(T));l?l(f,h):console.error(`[Directive OTLP] Export ${h} error:`,f.message);}finally{clearTimeout(R);}}return {async exportMetrics(o){if(o.length===0)return;let u=At(o,n,r);await a("/v1/metrics",u,"metrics");},async exportTraces(o){if(o.length===0)return;let u=Rt(o,n,r);await a("/v1/traces",u,"traces");}}}var pe=class extends Error{code="CIRCUIT_OPEN";retryAfterMs;state;constructor(i,s,r="OPEN",c){let p=c?`[Directive CircuitBreaker] Circuit "${i}" is ${r}. ${c}`:`[Directive CircuitBreaker] Circuit "${i}" is ${r}. Request rejected. Try again in ${Math.ceil(s/1e3)}s.`;super(p),this.name="CircuitBreakerOpenError",this.retryAfterMs=s,this.state=r;}};function kt(e={}){let{failureThreshold:i=5,recoveryTimeMs:s=3e4,halfOpenMaxRequests:r=3,failureWindowMs:c=6e4,observability:p,metricPrefix:l="circuit_breaker",name:n="default",isFailure:a=()=>true,onStateChange:o}=e;if(i<1||!Number.isFinite(i))throw new Error(`[Directive CircuitBreaker] failureThreshold must be >= 1, got ${i}`);if(s<=0||!Number.isFinite(s))throw new Error(`[Directive CircuitBreaker] recoveryTimeMs must be > 0, got ${s}`);if(r<1||!Number.isFinite(r))throw new Error(`[Directive CircuitBreaker] halfOpenMaxRequests must be >= 1, got ${r}`);if(c<=0||!Number.isFinite(c))throw new Error(`[Directive CircuitBreaker] failureWindowMs must be > 0, got ${c}`);let u="CLOSED",h=[],M=0,$=0,R=Date.now(),T=0,f=0,g=0,C=0,k=0,_=null,F=null;function P(j){if(u===j)return;let V=u;u=j,R=Date.now(),j==="OPEN"&&(T=Date.now()),j==="HALF_OPEN"&&(M=0,$=0),o?.(V,j),p&&p.incrementCounter(`${l}.state_change`,{name:n,from:V,to:j});}function K(){let j=Date.now()-c;return h=h.filter(V=>V>j),h.length}function N(){C++,F=Date.now(),p&&p.incrementCounter(`${l}.success`,{name:n}),u==="HALF_OPEN"&&($++,$>=r&&(P("CLOSED"),h=[]));}function H(j){if(!a(j)){N();return}g++,_=Date.now(),h.push(Date.now());let V=i*2;if(h.length>V&&(h=h.slice(-V)),p&&p.incrementCounter(`${l}.failure`,{name:n}),u==="HALF_OPEN"){P("OPEN");return}u==="CLOSED"&&K()>=i&&P("OPEN");}return {async execute(j){if(f++,p&&p.incrementCounter(`${l}.requests`,{name:n}),u==="OPEN")if(Date.now()-T>=s)P("HALF_OPEN");else throw k++,p&&p.incrementCounter(`${l}.rejected`,{name:n}),new pe(n,s-(Date.now()-T));if(u==="HALF_OPEN"){if(M>=r)throw k++,new pe(n,s,"HALF_OPEN",`Max trial requests (${r}) reached.`);M++;}let V=Date.now();try{let w=await j();return N(),p&&p.observeHistogram(`${l}.latency`,Date.now()-V,{name:n}),w}catch(w){let A=w instanceof Error?w:new Error(String(w));throw H(A),p&&p.observeHistogram(`${l}.latency`,Date.now()-V,{name:n}),w}},getState(){return u==="OPEN"&&Date.now()-T>=s&&P("HALF_OPEN"),u},getStats(){return {state:this.getState(),totalRequests:f,totalFailures:g,totalSuccesses:C,totalRejected:k,recentFailures:K(),lastFailureTime:_,lastSuccessTime:F,lastStateChange:R}},forceState(j){P(j);},reset(){let j=u;u="CLOSED",h=[],M=0,$=0,R=Date.now(),T=0,f=0,g=0,C=0,k=0,_=null,F=null,j!=="CLOSED"&&o?.(j,"CLOSED");},isAllowed(){return u==="CLOSED"?true:u==="OPEN"?Date.now()-T>=s:M<r}}}function Ot(e={}){let i=new Set(e.irreversibleTags??["money","pii","irreversible"]),s=new Set(e.irreversibleResolvers??[]),r=e.cooldownMs??0,c=e.onAlert??(o=>{console.error(`[Directive] CLOBBER on irreversible fact '${o.fact}' (tags: ${o.tags.join(", ")}) by resolver '${o.resolver}'`,{expected:o.expected,actual:o.actual});}),p=e.onSummary,l=null,n=new Map,a=new Set;return {name:"clobber-alert",onInit(o){l=o;},onDestroy(){l=null,n.clear(),a.clear();},onResolverWriteRejected(o){if(!l)return;if(o.kind==="summary"){if(!p)return;let g=s.has(o.resolver),C=a.has(o.resolver);if(!g&&!C)return;try{p({resolver:o.resolver,requirementId:o.req.id,dropped:o.dropped,matchedBy:g?"resolver-listed":"prior-irreversible-alert",timestamp:Date.now()});}catch(k){console.error(`[Directive] clobberAlertPlugin: onSummary callback threw for resolver '${o.resolver}'`,k);}return}let M=(l.meta.fact(o.fact)?.tags??[]).filter(g=>i.has(g)),$=M.length>0,R=s.has(o.resolver);if(!$&&!R)return;let T=$&&R?"both":$?"tag":"resolver",f=`${o.fact}::${o.resolver}`;if(r>0){let g=n.get(f)??0;if(Date.now()-g<r)return}try{if(c({fact:o.fact,tags:M,matchedBy:T,resolver:o.resolver,requirementId:o.req.id,expected:o.expected,actual:o.actual,timestamp:Date.now()}),r>0){if(n.size>=1e3){let g=n.keys().next().value;g!==void 0&&n.delete(g);}n.set(f,Date.now());}a.add(o.resolver);}catch(g){console.error(`[Directive] clobberAlertPlugin: onAlert callback threw for fact '${o.fact}'`,g);}}}}var ie={windowMs:1e3,threshold:5,cooldownMs:5e3,resolvedAfterMs:3e4,maxTrackedFacts:256,maxParticipantsPerFact:16,maxEmissionsPerSec:10};function Lt(e){let i=new Map;return {get(s){let r=i.get(s);return r!==void 0&&(i.delete(s),i.set(s,r)),r},set(s,r){if(i.has(s))i.delete(s);else if(i.size>=e){let c=i.keys().next().value;c!==void 0&&i.delete(c);}i.set(s,r);},delete(s){return i.delete(s)},size(){return i.size},keys(){return i.keys()},clear(){i.clear();}}}function Pt(e$1,i,s){if(!e$1||!i)return {verdict:"function-form-opaque",reason:"one-or-both-when-is-a-function",...{}};let r,c;try{r=b(e$1),c=b(i);}catch{return {verdict:"function-form-opaque",reason:"one-or-both-when-is-a-function"}}if(r.length===0||c.length===0)return {verdict:"function-form-opaque",reason:"one-or-both-when-is-a-function"};let p=M=>`${M.path}::${M.op}::${JSON.stringify(M.value)}`,l=new Set(r.map(p)),n=new Set(c.map(p));if(l.size===n.size&&[...l].every(M=>n.has(M)))return {verdict:"matched",coFireClauses:r,conflictingClauses:[]};let o=[],u=[],h=false;for(let M of r)for(let $ of c){if(M.path!==$.path)continue;let R=e(M,$);R&&(R.type==="direct"?u.push(M):(R.type==="subset"||R.type==="overlap")&&(o.push(M),R.reason.startsWith("Both rules touch")&&R.type==="overlap"&&(h=true)));}return h&&o.length>0?{verdict:"indeterminate",reason:"non-comparable-operator",coFireClauses:o}:o.length>0&&u.length===0?{verdict:"overlap",coFireClauses:o,conflictingClauses:[]}:o.length>0?{verdict:"overlap",coFireClauses:o,conflictingClauses:u}:{verdict:"function-form-opaque",reason:"one-or-both-when-is-a-function"}}function It(){try{return typeof process<"u"&&process.env?.NODE_ENV!=="production"}catch{return true}}function $t(e={}){let i=e.windowMs??ie.windowMs,s=e.threshold??ie.threshold,r=e.cooldownMs??ie.cooldownMs,c=e.resolvedAfterMs??ie.resolvedAfterMs,p=e.maxTrackedFacts??ie.maxTrackedFacts,l=e.maxParticipantsPerFact??ie.maxParticipantsPerFact,n=e.maxEmissionsPerSec??ie.maxEmissionsPerSec,a=e.capturePII??false,o=It(),u=e.onLoop??(b=>{let v=E(b);o?console.warn(v):console.error(v);}),h=e.onResolved,M=null,$=true,R=0,T=new Map,f=new Map,g$1=new Map,C=new Set,k=new Map,_=new Map,F=0,P=0,K=0,N=Lt(p);function H(){if(f.clear(),g$1.clear(),!!M)try{let b=M.inspect();for(let x of b.constraints)x.whenSpec!==void 0&&f.set(x.id,g(x.whenSpec,a,C));let v=M.$internal;if(v?.mergedConstraints)for(let[x,t]of Object.entries(v.mergedConstraints)){let d;if(typeof t.require=="function")try{d=t.require()?.type;}catch{}else t.require&&typeof t.require=="object"&&"type"in t.require&&(d=t.require.type);d&&g$1.set(d,x);}for(let x of b.resolverDefs){T.set(x.id,x.requirement);let t=x.meta?.moduleId??"";_.set(x.id,t);}}catch{}}function j(){if(C.clear(),k.clear(),!!M)try{let b=M.meta.byTag?.("pii")??[];for(let v of b)C.add(v.id);}catch{}}function V(b){let v=k.get(b);if(v)return v;let x=[];try{x=M?.meta.fact(b)?.tags??[];}catch{x=[];}return k.set(b,x),x}function w(b,v){for(;b.length>0&&b[0].timestamp<v-i;)b.shift();}function A(b){return b-K>=1e3&&(F=0,K=b),F>=n?(P+=1,false):(F+=1,true)}function D(b,v,x,t){let d=[...x].sort(),S=d.join("|"),O=v.cooldowns.get(S)??0;if(t-O<r||!A(t))return;let B=v.buffer.filter(G=>x.has(G.resolverId)),W=B[0]?.timestamp??t,Q=V(b),ne=Q.some(G=>C.has(b)||G==="pii"||G==="money")?"error":"warn",te=q(d),se=d.map(G=>_.get(G)??""),U={systemId:M?L(M):"",fact:b,participants:d,participantModules:se,count:B.length,windowMs:i,firstAt:W,lastAt:t,...te?{predicateOverlap:te}:{},severity:ne,factTags:Q,suppressedSinceLastEmit:P,rejectionSeqs:B.map(G=>G.seq)};P=0,v.cooldowns.set(S,t),v.activeLoop={participants:d,firstAt:W,lastClobberAt:t};try{M?.notify.clobberLoopDetected(z(U));}catch{}try{u(U);}catch(G){console.error(`[Directive] clobberLoopPlugin: onLoop callback threw for fact '${b}'`,G);}}function z(b){return {type:"resolver.clobber.loop.detected",systemId:b.systemId,fact:b.fact,participants:b.participants,participantModules:b.participantModules,count:b.count,windowMs:b.windowMs,firstAt:b.firstAt,lastAt:b.lastAt,...b.predicateOverlap?{predicateOverlap:b.predicateOverlap}:{},severity:b.severity,factTags:b.factTags,suppressedSinceLastEmit:b.suppressedSinceLastEmit,rejectionSeqs:b.rejectionSeqs}}function q(b){if(b.length<2)return;let[v,x]=b,t=v?T.get(v):void 0,d=x?T.get(x):void 0,S=t?g$1.get(t):void 0,O=d?g$1.get(d):void 0,B=S?f.get(S):void 0,W=O?f.get(O):void 0;return Pt(B,W)}function m(b){for(let v of [...N.keys()]){let x=N.get(v);if(!x?.activeLoop||b-x.activeLoop.lastClobberAt<c)continue;let t={systemId:M?L(M):"",fact:v,participants:x.activeLoop.participants,durationMs:b-x.activeLoop.firstAt,resolution:"no-recurrence-in-window"};x.activeLoop=null;try{M?.notify.clobberLoopResolved({type:"resolver.clobber.loop.resolved",systemId:t.systemId,fact:t.fact,participants:t.participants,durationMs:t.durationMs,resolution:t.resolution});}catch{}if(h)try{h(t);}catch(d){console.error(`[Directive] clobberLoopPlugin: onResolved callback threw for fact '${v}'`,d);}}}function L(b){try{return b.meta?.systemId??""}catch{return ""}}function E(b){let v=b.lastAt-b.firstAt,x=b.predicateOverlap?.verdict??"function-form-opaque",t=[`[directive] CLOBBER LOOP on \`${b.fact}\` (${b.count} clobbers in ${v}ms)`,` Participants: ${b.participants.join(", ")}`,` Predicate overlap: ${x}`];if((b.predicateOverlap?.verdict==="matched"||b.predicateOverlap?.verdict==="overlap")&&b.predicateOverlap.coFireClauses.length>0){t.push(" Both `when:` predicates fire when:");for(let d of b.predicateOverlap.coFireClauses.slice(0,5))t.push(` - ${d.path} ${d.op} ${JSON.stringify(d.value)}`);}return b.predicateOverlap?.verdict==="function-form-opaque"&&t.push(" (cannot prove overlap \u2014 at least one constraint uses function-form `when:`)"),b.predicateOverlap?.verdict==="indeterminate"&&t.push(" (cannot prove overlap \u2014 predicate uses non-comparable operator)"),t.push(" Suggested fix: add `priority:` to one, narrow `when:` to disjoint conditions, or merge into a single resolver."),t.join(`
1
+ import {g,b,e}from'../chunk-QR2756CJ.js';export{i as createAuditLedger,h as memorySink}from'../chunk-QR2756CJ.js';import'../chunk-LN5H74CU.js';import {g as g$1}from'../chunk-IZNOPHPL.js';var $e={debug:0,info:1,warn:2,error:3};function lt(e={}){let{level:i="info",filter:s=()=>true,logger:r=console,prefix:c="[Directive]"}=e,p=$e[i],l=(n,a,...o)=>{$e[n]<p||s(a)&&r[n](`${c} ${a}`,...o);};return {name:"logging",onInit:()=>l("debug","init"),onStart:()=>l("info","start"),onStop:()=>l("info","stop"),onDestroy:()=>l("debug","destroy"),onFactSet:(n,a,o)=>{l("debug","fact.set",{key:n,value:a,prev:o});},onFactDelete:(n,a)=>{l("debug","fact.delete",{key:n,prev:a});},onFactsBatch:n=>{l("debug","facts.batch",{count:n.length,changes:n});},onDerivationCompute:(n,a,o)=>{l("debug","derivation.compute",{id:n,value:a,deps:o});},onDerivationInvalidate:n=>{l("debug","derivation.invalidate",{id:n});},onReconcileStart:()=>{l("debug","reconcile.start");},onReconcileEnd:n=>{l("debug","reconcile.end",{unmet:n.unmet.length,inflight:n.inflight.length,completed:n.completed.length,canceled:n.canceled.length});},onConstraintEvaluate:(n,a,o)=>{if(o){let u=o.filter(h=>h.pass).length;l("debug","constraint.evaluate",{id:n,active:a,clauses:{total:o.length,passed:u}});return}l("debug","constraint.evaluate",{id:n,active:a});},onConstraintError:(n,a)=>{l("error","constraint.error",{id:n,error:a});},onRequirementCreated:n=>{l("debug","requirement.created",{id:n.id,type:n.requirement.type});},onRequirementMet:(n,a)=>{l("info","requirement.met",{id:n.id,byResolver:a});},onRequirementCanceled:n=>{l("debug","requirement.canceled",{id:n.id});},onResolverStart:(n,a)=>{l("debug","resolver.start",{resolver:n,requirementId:a.id});},onResolverComplete:(n,a,o)=>{l("info","resolver.complete",{resolver:n,requirementId:a.id,duration:o});},onResolverError:(n,a,o)=>{l("error","resolver.error",{resolver:n,requirementId:a.id,error:o});},onResolverRetry:(n,a,o)=>{l("warn","resolver.retry",{resolver:n,requirementId:a.id,attempt:o});},onResolverCancel:(n,a)=>{l("debug","resolver.cancel",{resolver:n,requirementId:a.id});},onResolverWriteRejected:n=>{l("warn","resolver.write.rejected",n.kind==="summary"?{kind:n.kind,resolver:n.resolver,requirementId:n.req.id,reason:n.reason,dropped:n.dropped}:{kind:n.kind,resolver:n.resolver,requirementId:n.req.id,reason:n.reason,fact:n.fact,expected:n.expected,actual:n.actual});},onEffectRun:n=>{l("debug","effect.run",{id:n});},onEffectError:(n,a)=>{l("error","effect.error",{id:n,error:a});},onSourceAttach:(n,a)=>{l("debug","source.attach",{id:n,moduleId:a});},onSourcePublish:(n,a,o)=>{l("debug","source.publish",{id:n,moduleId:a,eventName:o});},onSourceDetach:(n,a)=>{l("debug","source.detach",{id:n,moduleId:a});},onSourceError:(n,a,o,u)=>{l("error","source.error",{id:n,moduleId:a,phase:o,error:u});},onSnapshot:n=>{l("debug","timetravel.snapshot",{id:n.id,trigger:n.trigger});},onHistoryNavigate:(n,a)=>{l("info","timetravel.jump",{from:n,to:a});},onError:n=>{l("error","error",{source:n.source,sourceId:n.sourceId,message:n.message});},onErrorRecovery:(n,a)=>{l("warn","error.recovery",{source:n.source,sourceId:n.sourceId,strategy:a});},onDefinitionRegister:(n,a)=>{l("info","definition.register",{type:n,id:a});},onDefinitionAssign:(n,a)=>{l("info","definition.assign",{type:n,id:a});},onDefinitionUnregister:(n,a)=>{l("info","definition.unregister",{type:n,id:a});},onDefinitionCall:(n,a,o)=>{l("debug","definition.call",{type:n,id:a,props:o});},onTraceComplete:n=>{l("debug","trace.complete",{id:n.id,status:n.status,duration:n.duration,factChanges:n.factChanges.length,derivationsRecomputed:n.derivationsRecomputed.length,constraintsHit:n.constraintsHit.length,resolversStarted:n.resolversStarted.length,effectsRun:n.effectsRun.length});}}}var ue=class{constructor(i){this.capacity=i;this.buf=new Array(i);}buf;head=0;_size=0;get size(){return this._size}push(i){this.buf[this.head]=i,this.head=(this.head+1)%this.capacity,this._size<this.capacity&&this._size++;}toArray(){return this._size===0?[]:this._size<this.capacity?this.buf.slice(0,this._size):[...this.buf.slice(this.head),...this.buf.slice(0,this.head)]}clear(){this.buf=new Array(this.capacity),this.head=0,this._size=0;}};function ge(){try{if(typeof process<"u"&&process.env?.NODE_ENV==="production")return !1}catch{}try{if(typeof import.meta<"u"&&import.meta.env?.MODE==="production")return !1}catch{}return true}function be(e){try{if(e===void 0)return "undefined";if(e===null)return "null";if(typeof e=="bigint")return `${String(e)}n`;if(typeof e=="symbol")return String(e);if(typeof e=="object"){let i=JSON.stringify(e,(s,r)=>typeof r=="bigint"?`${String(r)}n`:typeof r=="symbol"?String(r):r);return i.length>120?`${i.slice(0,117)}...`:i}return String(e)}catch{return "<error>"}}function ee(e,i){return e.length<=i?e:`${e.slice(0,i-3)}...`}function ae(e){try{return e.inspect()}catch{return null}}function _e(e){try{return e==null||typeof e!="object"?e:JSON.parse(JSON.stringify(e))}catch{return null}}function Ne(e){return e===void 0?1e3:!Number.isFinite(e)||e<1?(ge()&&console.warn(`[directive:devtools] Invalid maxEvents value (${e}), using default 1000`),1e3):Math.floor(e)}function Be(){return {reconcileCount:0,reconcileTotalMs:0,resolverStats:new Map,effectRunCount:0,effectErrorCount:0,lastReconcileStartMs:0}}var dt=200,ce=340,le=16,de=80,xe=2,Ce=["#8b9aff","#4ade80","#fbbf24","#c084fc","#f472b6","#22d3ee"];function je(){return {entries:new ue(dt),inflight:new Map}}function qe(){return {derivationDeps:new Map,activeConstraints:new Set,recentlyChangedFacts:new Set,recentlyComputedDerivations:new Set,recentlyActiveConstraints:new Set,animationTimer:null}}var Fe=1e4,He=100;function Ve(){return {isRecording:false,recordedEvents:[],snapshots:[]}}var ze=50,we=200,y={bg:"#1a1a2e",text:"#e0e0e0",accent:"#8b9aff",muted:"#b0b0d0",border:"#333",rowBorder:"#2a2a4a",green:"#4ade80",yellow:"#fbbf24",red:"#f87171",closeBtn:"#aaa",font:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace"},Y={nodeW:90,nodeH:16,nodeGap:6,startY:16,colGap:20,fontSize:10,labelMaxChars:11};function Ge(e,i,s,r){let c=false,p={position:"fixed",zIndex:"99999",...i.includes("bottom")?{bottom:"12px"}:{top:"12px"},...i.includes("right")?{right:"12px"}:{left:"12px"}},l=document.createElement("style");l.textContent=`[data-directive-devtools] summary:focus-visible{outline:2px solid ${y.accent};outline-offset:2px;border-radius:2px}[data-directive-devtools] button:focus-visible{outline:2px solid ${y.accent};outline-offset:2px}`,document.head.appendChild(l);let n=document.createElement("button");n.setAttribute("aria-label","Open Directive DevTools"),n.setAttribute("aria-expanded",String(s)),n.title="Ctrl+Shift+D to toggle",Object.assign(n.style,{...p,background:y.bg,color:y.text,border:`1px solid ${y.border}`,borderRadius:"6px",padding:"10px 14px",minWidth:"44px",minHeight:"44px",cursor:"pointer",fontFamily:y.font,fontSize:"12px",display:s?"none":"block"}),n.textContent="Directive";let a=document.createElement("div");a.setAttribute("role","region"),a.setAttribute("aria-label","Directive DevTools"),a.setAttribute("data-directive-devtools",""),a.tabIndex=-1,Object.assign(a.style,{...p,background:y.bg,color:y.text,border:`1px solid ${y.border}`,borderRadius:"8px",padding:"12px",fontFamily:y.font,fontSize:"11px",maxWidth:"min(380px, calc(100vw - 24px))",maxHeight:"min(500px, calc(100vh - 24px))",overflow:"auto",boxShadow:"0 4px 20px rgba(0,0,0,0.5)",display:s?"block":"none"});let o=document.createElement("div");Object.assign(o.style,{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"8px"});let u=document.createElement("strong");u.style.color=y.accent,u.textContent=e==="default"?"Directive DevTools":`DevTools (${e})`;let h=document.createElement("button");h.setAttribute("aria-label","Close DevTools"),Object.assign(h.style,{background:"none",border:"none",color:y.closeBtn,cursor:"pointer",fontSize:"16px",padding:"8px 12px",minWidth:"44px",minHeight:"44px",lineHeight:"1",display:"flex",alignItems:"center",justifyContent:"center"}),h.textContent="\xD7",o.appendChild(u),o.appendChild(h),a.appendChild(o);let M=document.createElement("div");M.style.marginBottom="6px",M.setAttribute("aria-live","polite");let $=document.createElement("span");$.style.color=y.green,$.textContent="Settled",M.appendChild($),a.appendChild(M);let R=document.createElement("div");Object.assign(R.style,{display:"none",marginBottom:"8px",padding:"4px 8px",background:"#252545",borderRadius:"4px",alignItems:"center",gap:"6px"});let T=document.createElement("button");Object.assign(T.style,{background:"none",border:`1px solid ${y.border}`,color:y.text,cursor:"pointer",padding:"4px 10px",borderRadius:"3px",fontFamily:y.font,fontSize:"11px",minWidth:"44px",minHeight:"44px"}),T.textContent="\u25C0 Undo",T.disabled=true;let f=document.createElement("button");Object.assign(f.style,{background:"none",border:`1px solid ${y.border}`,color:y.text,cursor:"pointer",padding:"4px 10px",borderRadius:"3px",fontFamily:y.font,fontSize:"11px",minWidth:"44px",minHeight:"44px"}),f.textContent="Redo \u25B6",f.disabled=true;let g=document.createElement("span");g.style.color=y.muted,g.style.fontSize="10px",R.appendChild(T),R.appendChild(f),R.appendChild(g),a.appendChild(R);function C(U,G){let X=document.createElement("details");G&&(X.open=true),X.style.marginBottom="4px";let J=document.createElement("summary");Object.assign(J.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"});let Z=document.createElement("span");J.textContent=`${U} (`,J.appendChild(Z),J.appendChild(document.createTextNode(")")),Z.textContent="0",X.appendChild(J);let re=document.createElement("table");Object.assign(re.style,{width:"100%",borderCollapse:"collapse",fontSize:"11px"});let De=document.createElement("thead"),ke=document.createElement("tr");for(let it of ["Key","Value"]){let fe=document.createElement("th");fe.scope="col",Object.assign(fe.style,{textAlign:"left",padding:"2px 4px",color:y.accent}),fe.textContent=it,ke.appendChild(fe);}De.appendChild(ke),re.appendChild(De);let Oe=document.createElement("tbody");return re.appendChild(Oe),X.appendChild(re),{details:X,tbody:Oe,countSpan:Z}}function k(U,G){let X=document.createElement("details");X.style.marginBottom="4px";let J=document.createElement("summary");Object.assign(J.style,{cursor:"pointer",color:G,marginBottom:"4px"});let Z=document.createElement("span");J.textContent=`${U} (`,J.appendChild(Z),J.appendChild(document.createTextNode(")")),Z.textContent="0",X.appendChild(J);let re=document.createElement("ul");return Object.assign(re.style,{margin:"0",paddingLeft:"16px"}),X.appendChild(re),{details:X,list:re,countSpan:Z}}let _=C("Facts",true);a.appendChild(_.details);let F=C("Derivations",false);a.appendChild(F.details);let P=k("Inflight",y.yellow);a.appendChild(P.details);let K=k("Unmet",y.red);a.appendChild(K.details);let N=document.createElement("details");N.style.marginBottom="4px";let H=document.createElement("summary");Object.assign(H.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"}),H.textContent="Performance",N.appendChild(H);let j=document.createElement("div");j.style.fontSize="10px",j.style.color=y.muted,j.textContent="No data yet",N.appendChild(j),a.appendChild(N);let V=document.createElement("details");V.style.marginBottom="4px";let w=document.createElement("summary");Object.assign(w.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"}),w.textContent="Dependency Graph",V.appendChild(w);let A=document.createElementNS("http://www.w3.org/2000/svg","svg");A.setAttribute("width","100%"),A.setAttribute("height","120"),A.setAttribute("role","img"),A.setAttribute("aria-label","System dependency graph"),A.style.display="block",A.setAttribute("viewBox","0 0 460 120"),A.setAttribute("preserveAspectRatio","xMinYMin meet"),V.appendChild(A),a.appendChild(V);let D=document.createElement("details");D.style.marginBottom="4px";let z=document.createElement("summary");Object.assign(z.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"}),z.textContent="Timeline",D.appendChild(z);let q=document.createElementNS("http://www.w3.org/2000/svg","svg");q.setAttribute("width","100%"),q.setAttribute("height","60"),q.setAttribute("role","img"),q.setAttribute("aria-label","Resolver execution timeline"),q.style.display="block",q.setAttribute("viewBox",`0 0 ${ce} 60`),q.setAttribute("preserveAspectRatio","xMinYMin meet");let m=document.createElementNS("http://www.w3.org/2000/svg","text");m.setAttribute("x",String(ce/2)),m.setAttribute("y","30"),m.setAttribute("text-anchor","middle"),m.setAttribute("fill",y.muted),m.setAttribute("font-size","10"),m.setAttribute("font-family",y.font),m.textContent="No resolver activity yet",q.appendChild(m),D.appendChild(q),a.appendChild(D);let L=(()=>{let U=document.createElement("details");U.style.marginBottom="4px";let G=document.createElement("summary");Object.assign(G.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"});let X=document.createElement("span");X.textContent="0",G.textContent="Constraints (",G.appendChild(X),G.appendChild(document.createTextNode(")")),U.appendChild(G);let J=document.createElement("div");Object.assign(J.style,{fontSize:"11px"});let Z=document.createElement("div");return Z.style.color=y.muted,Z.style.padding="4px",Z.style.fontStyle="italic",Z.textContent="Waiting for first evaluation\u2026",Z.className="dt-constraints-empty",J.appendChild(Z),U.appendChild(J),a.appendChild(U),{details:U,body:J,countSpan:X}})(),E,I,b,v;if(r){let U=document.createElement("details");U.style.marginBottom="4px";let G=document.createElement("summary");Object.assign(G.style,{cursor:"pointer",color:y.accent,marginBottom:"4px"}),b=document.createElement("span"),b.textContent="0",G.textContent="Events (",G.appendChild(b),G.appendChild(document.createTextNode(")")),U.appendChild(G),I=document.createElement("div"),Object.assign(I.style,{maxHeight:"150px",overflow:"auto",fontSize:"10px"}),I.setAttribute("role","log"),I.setAttribute("aria-live","polite"),I.tabIndex=0;let X=document.createElement("div");X.style.color=y.muted,X.style.padding="4px",X.textContent="Waiting for events...",X.className="dt-events-empty",I.appendChild(X),U.appendChild(I),a.appendChild(U),E=U,v=document.createElement("div");}else E=document.createElement("details"),I=document.createElement("div"),b=document.createElement("span"),v=document.createElement("div"),v.style.fontSize="10px",v.style.color=y.muted,v.style.marginTop="4px",v.style.fontStyle="italic",v.textContent="Enable trace: true for event log",a.appendChild(v);let x=document.createElement("div");Object.assign(x.style,{display:"flex",gap:"6px",marginTop:"6px"});let t=document.createElement("button");Object.assign(t.style,{background:"none",border:`1px solid ${y.border}`,color:y.text,cursor:"pointer",padding:"8px 12px",borderRadius:"3px",fontFamily:y.font,fontSize:"10px",minWidth:"44px",minHeight:"44px"}),t.textContent="\u23FA Record";let d=document.createElement("button");Object.assign(d.style,{background:"none",border:`1px solid ${y.border}`,color:y.text,cursor:"pointer",padding:"8px 12px",borderRadius:"3px",fontFamily:y.font,fontSize:"10px",minWidth:"44px",minHeight:"44px"}),d.textContent="\u2913 Export",x.appendChild(t),x.appendChild(d),a.appendChild(x),a.addEventListener("wheel",U=>{let G=a,X=G.scrollTop===0&&U.deltaY<0,J=G.scrollTop+G.clientHeight>=G.scrollHeight&&U.deltaY>0;(X||J)&&U.preventDefault();},{passive:false});let S=s,O=new Set;function B(){S=true,a.style.display="block",n.style.display="none",n.setAttribute("aria-expanded","true"),h.focus();}function W(){S=false,a.style.display="none",n.style.display="block",n.setAttribute("aria-expanded","false"),n.focus();}n.addEventListener("click",B),h.addEventListener("click",W);function Q(U){U.key==="Escape"&&S&&W();}a.addEventListener("keydown",Q);function ne(U){U.key==="d"&&U.shiftKey&&(U.ctrlKey||U.metaKey)&&(U.preventDefault(),S?W():B());}document.addEventListener("keydown",ne);function te(){c||(document.body.appendChild(n),document.body.appendChild(a));}document.body?te():document.addEventListener("DOMContentLoaded",te,{once:true});function se(){c=true,n.removeEventListener("click",B),h.removeEventListener("click",W),a.removeEventListener("keydown",Q),document.removeEventListener("keydown",ne),document.removeEventListener("DOMContentLoaded",te);for(let U of O)clearTimeout(U);O.clear(),n.remove(),a.remove(),l.remove();}return {refs:{container:a,toggleBtn:n,titleEl:u,statusEl:$,factsBody:_.tbody,factsCount:_.countSpan,derivBody:F.tbody,derivCount:F.countSpan,derivSection:F.details,inflightList:P.list,inflightSection:P.details,inflightCount:P.countSpan,unmetList:K.list,unmetSection:K.details,unmetCount:K.countSpan,perfSection:N,perfBody:j,historySection:R,historyLabel:g,undoBtn:T,redoBtn:f,flowSection:V,flowSvg:A,timelineSection:D,timelineSvg:q,eventsSection:E,eventsList:I,eventsCount:b,traceHint:v,recordBtn:t,exportBtn:d,constraintsSection:L.details,constraintsBody:L.body,constraintsCount:L.countSpan},destroy:se,isOpen:()=>S,flashTimers:O}}function me(e,i,s,r,c,p){let l=be(r),n=e.get(s);if(n){let a=n.cells;if(a[1]&&(a[1].textContent=l,c&&p)){let o=a[1];o.style.background="rgba(139, 154, 255, 0.25)";let u=setTimeout(()=>{o.style.background="",p.delete(u);},300);p.add(u);}}else {n=document.createElement("tr"),n.style.borderBottom=`1px solid ${y.rowBorder}`;let a=document.createElement("td");Object.assign(a.style,{padding:"2px 4px",color:y.muted}),a.textContent=s;let o=document.createElement("td");o.style.padding="2px 4px",o.textContent=l,n.appendChild(a),n.appendChild(o),i.appendChild(n),e.set(s,n);}}function Ke(e,i){let s=e.get(i);s&&(s.remove(),e.delete(i));}function ye(e,i,s){if(e.inflightList.replaceChildren(),e.inflightCount.textContent=String(i.length),i.length>0)for(let r of i){let c=document.createElement("li");c.style.fontSize="11px",c.textContent=`${r.resolverId} (${r.id})`,e.inflightList.appendChild(c);}else {let r=document.createElement("li");r.style.fontSize="10px",r.style.color=y.muted,r.textContent="None",e.inflightList.appendChild(r);}if(e.unmetList.replaceChildren(),e.unmetCount.textContent=String(s.length),s.length>0)for(let r of s){let c=document.createElement("li");c.style.fontSize="11px",c.textContent=`${r.requirement.type} from ${r.fromConstraint}`,e.unmetList.appendChild(c);}else {let r=document.createElement("li");r.style.fontSize="10px",r.style.color=y.muted,r.textContent="None",e.unmetList.appendChild(r);}}function ve(e,i,s){let r=i===0&&s===0;e.statusEl.style.color=r?y.green:y.yellow,e.statusEl.textContent=r?"Settled":"Working...",e.toggleBtn.textContent=r?"Directive":"Directive...",e.toggleBtn.setAttribute("aria-label",`Open Directive DevTools${r?"":" (system working)"}`);}function Ee(e,i,s,r){let c=Object.keys(s.derive);if(e.derivCount.textContent=String(c.length),c.length===0){i.clear(),e.derivBody.replaceChildren();let l=document.createElement("tr"),n=document.createElement("td");n.colSpan=2,n.style.color=y.muted,n.style.fontSize="10px",n.textContent="No derivations defined",l.appendChild(n),e.derivBody.appendChild(l);return}let p=new Set(c);for(let[l,n]of i)p.has(l)||(n.remove(),i.delete(l));for(let l of c){let n;try{n=be(s.read(l));}catch{n="<error>";}me(i,e.derivBody,l,n,true,r);}}function Ye(e,i,s,r){let c=e.eventsList.querySelector(".dt-events-empty");c&&c.remove();let p=document.createElement("div");Object.assign(p.style,{padding:"2px 4px",borderBottom:`1px solid ${y.rowBorder}`,fontFamily:"inherit"});let l=new Date,n=`${String(l.getHours()).padStart(2,"0")}:${String(l.getMinutes()).padStart(2,"0")}:${String(l.getSeconds()).padStart(2,"0")}.${String(l.getMilliseconds()).padStart(3,"0")}`,a;try{let M=JSON.stringify(s);a=ee(M,60);}catch{a="{}";}let o=document.createElement("span");o.style.color=y.closeBtn,o.textContent=n;let u=document.createElement("span");u.style.color=y.accent,u.textContent=` ${i} `;let h=document.createElement("span");for(h.style.color=y.muted,h.textContent=a,p.appendChild(o),p.appendChild(u),p.appendChild(h),e.eventsList.prepend(p);e.eventsList.childElementCount>ze;)e.eventsList.lastElementChild?.remove();e.eventsCount.textContent=String(r);}function Xe(e,i){e.perfBody.replaceChildren();let s=i.reconcileCount>0?(i.reconcileTotalMs/i.reconcileCount).toFixed(1):"\u2014",r=[`Reconciles: ${i.reconcileCount} (avg ${s}ms)`,`Effects: ${i.effectRunCount} run, ${i.effectErrorCount} errors`];for(let c of r){let p=document.createElement("div");p.style.marginBottom="2px",p.textContent=c,e.perfBody.appendChild(p);}if(i.resolverStats.size>0){let c=document.createElement("div");c.style.marginTop="4px",c.style.marginBottom="2px",c.style.color=y.accent,c.textContent="Resolvers:",e.perfBody.appendChild(c);let p=[...i.resolverStats.entries()].sort((l,n)=>n[1].totalMs-l[1].totalMs);for(let[l,n]of p){let a=n.count>0?(n.totalMs/n.count).toFixed(1):"0",o=document.createElement("div");o.style.paddingLeft="8px",o.textContent=`${l}: ${n.count}x, avg ${a}ms${n.errors>0?`, ${n.errors} err`:""}`,n.errors>0&&(o.style.color=y.red),e.perfBody.appendChild(o);}}}function Me(e,i){let s=i.history;if(!s){e.historySection.style.display="none";return}e.historySection.style.display="flex";let r=s.currentIndex,c=s.snapshots.length;e.historyLabel.textContent=c>0?`${r+1} / ${c}`:"0 snapshots";let p=r>0,l=r<c-1;e.undoBtn.disabled=!p,e.undoBtn.style.opacity=p?"1":"0.4",e.redoBtn.disabled=!l,e.redoBtn.style.opacity=l?"1":"0.4";}function Je(e,i){e.undoBtn.addEventListener("click",()=>{i.history&&i.history.currentIndex>0&&i.history.goBack(1);}),e.redoBtn.addEventListener("click",()=>{i.history&&i.history.currentIndex<i.history.snapshots.length-1&&i.history.goForward(1);});}var We=Object.assign(Object.create(null),{$eq:"=",$ne:"\u2260",$gt:">",$gte:"\u2265",$lt:"<",$lte:"\u2264",$in:"\u2208",$nin:"\u2209",$exists:"exists",$between:"in",$startsWith:"starts with",$endsWith:"ends with",$contains:"contains",$matches:"matches",$changed:"changed"});function ut(e){return Object.hasOwn(We,e)?We[e]:e}function Ue(e){return e instanceof RegExp?ee(String(e),40):be(e)}var mt=new Set(["$all","$any","$not"]);function Qe(e){let i=document.createElement("li"),s=e.pass?"\u2713":"\u2717";if(i.style.color=e.pass?y.green:y.red,i.style.listStyle="none",mt.has(e.op)){let r=e.path?` @ ${e.path}`:"";if(i.textContent=`${s} ${e.op}${r}`,e.children&&e.children.length>0){let c=document.createElement("ul");Object.assign(c.style,{margin:"0",paddingLeft:"14px",listStyle:"none"});for(let p of e.children)c.appendChild(Qe(p));i.appendChild(c);}}else {let r=ut(e.op),c=Ue(e.expected);if(e.pass)i.textContent=`${s} ${e.path} ${r} ${c}`;else {let p=Ue(e.actual);i.textContent=`${s} ${e.path} ${r} ${c} (actual: ${p})`;}}return i}function Ze(e,i,s){let r=i.get(s);if(r&&(r.remove(),i.delete(s),e.constraintsCount.textContent=String(i.size)),i.size===0&&!e.constraintsBody.querySelector(".dt-constraints-empty")){let c=document.createElement("div");c.style.color=y.muted,c.style.padding="4px",c.style.fontStyle="italic",c.textContent="Waiting for first evaluation\u2026",c.className="dt-constraints-empty",e.constraintsBody.appendChild(c);}}function et(e,i){let s=e.constraintsBody.querySelector(".dt-constraints-empty");s&&(s.textContent=i?"Waiting for first evaluation\u2026":"This system has no constraints");}function tt(e,i,s,r,c,p){let l=e.constraintsBody.querySelector(".dt-constraints-empty");l&&l.remove();let n=i.get(s);n||(n=document.createElement("div"),Object.assign(n.style,{marginBottom:"6px",paddingBottom:"4px",borderBottom:`1px solid ${y.rowBorder}`}),i.set(s,n),e.constraintsBody.appendChild(n),e.constraintsCount.textContent=String(i.size)),n.replaceChildren();let a=document.createElement("div");Object.assign(a.style,{fontWeight:"bold",color:r?y.green:y.muted});let o=r?"\u2713":"\u2717";if(a.textContent=p?`${o} ${s} (${p})`:`${o} ${s}`,n.appendChild(a),c&&c.length>0){let u=document.createElement("ul");Object.assign(u.style,{margin:"2px 0 0 0",paddingLeft:"14px",listStyle:"none"});for(let h of c)u.appendChild(Qe(h));n.appendChild(u);}else if(!c){let u=document.createElement("div");Object.assign(u.style,{color:y.muted,fontSize:"10px",fontStyle:"italic",paddingLeft:"14px"}),u.textContent="function-form when (no clause tree)",n.appendChild(u);}}var Te=new WeakMap;function pt(e,i,s,r,c,p){return [e.join(","),i.join(","),s.map(l=>`${l.id}:${l.active}`).join(","),[...r.entries()].map(([l,n])=>`${l}:${n.status}:${n.type}`).join(","),c.join(","),p.join(",")].join("|")}function ft(e,i,s,r,c){for(let p of s){let l=e.nodes.get(`0:${p}`);if(!l)continue;let n=i.recentlyChangedFacts.has(p);l.rect.setAttribute("fill",n?`${y.text}33`:"none"),l.rect.setAttribute("stroke-width",n?"2":"1");}for(let p of r){let l=e.nodes.get(`1:${p}`);if(!l)continue;let n=i.recentlyComputedDerivations.has(p);l.rect.setAttribute("fill",n?`${y.accent}33`:"none"),l.rect.setAttribute("stroke-width",n?"2":"1");}for(let p of c){let l=e.nodes.get(`2:${p}`);if(!l)continue;let n=i.recentlyActiveConstraints.has(p),a=l.rect.getAttribute("stroke")??y.muted;l.rect.setAttribute("fill",n?`${a}33`:"none"),l.rect.setAttribute("stroke-width",n?"2":"1");}}function Ae(e,i,s){let r=ae(i);if(!r)return;let c;try{c=Object.keys(i.facts.$store.toObject());}catch{c=[];}let p=Object.keys(i.derive),l=r.constraints,n=r.unmet,a=r.inflight,o=Object.keys(r.resolvers),u=new Map;for(let m of n)u.set(m.id,{type:m.requirement.type,fromConstraint:m.fromConstraint,status:"unmet"});for(let m of a)u.set(m.id,{type:m.resolverId,fromConstraint:"",status:"inflight"});if(c.length===0&&p.length===0&&l.length===0&&o.length===0){Te.delete(e.flowSvg),e.flowSvg.replaceChildren(),e.flowSvg.setAttribute("viewBox","0 0 460 40");let m=document.createElementNS("http://www.w3.org/2000/svg","text");m.setAttribute("x","230"),m.setAttribute("y","24"),m.setAttribute("text-anchor","middle"),m.setAttribute("fill",y.muted),m.setAttribute("font-size","10"),m.setAttribute("font-family",y.font),m.textContent="No system topology",e.flowSvg.appendChild(m);return}let h=a.map(m=>m.resolverId).sort(),M=pt(c,p,l,u,o,h),$=Te.get(e.flowSvg);if($&&$.fingerprint===M){ft($,s,c,p,l.map(m=>m.id));return}let R=Y.nodeW+Y.colGap,T=[5,5+R,5+R*2,5+R*3,5+R*4],f=T[4]+Y.nodeW+5;function g(m){let L=Y.startY+12;return m.map(E=>{let I={...E,y:L};return L+=Y.nodeH+Y.nodeGap,I})}let C=g(c.map(m=>{let L=r.facts.find(E=>E.key===m);return {id:m,label:ee(L?.meta?.label??m,Y.labelMaxChars)}})),k=g(p.map(m=>{let L=r.derivations.find(E=>E.id===m);return {id:m,label:ee(L?.meta?.label??m,Y.labelMaxChars)}})),_=g(l.map(m=>({id:m.id,label:ee(m.meta?.label??m.id,Y.labelMaxChars),active:m.active,priority:m.priority}))),F=g([...u.entries()].map(([m,L])=>({id:m,type:L.type,fromConstraint:L.fromConstraint,status:L.status}))),P=g(o.map(m=>{let L=r.resolverDefs.find(E=>E.id===m);return {id:m,label:ee(L?.meta?.label??m,Y.labelMaxChars)}})),K=Math.max(C.length,k.length,_.length,F.length,P.length,1),N=Y.startY+12+K*(Y.nodeH+Y.nodeGap)+8;e.flowSvg.replaceChildren(),e.flowSvg.setAttribute("viewBox",`0 0 ${f} ${N}`),e.flowSvg.setAttribute("aria-label",`Dependency graph: ${c.length} facts, ${p.length} derivations, ${l.length} constraints, ${u.size} requirements, ${o.length} resolvers`);let H=["Facts","Derivations","Constraints","Reqs","Resolvers"];for(let[m,L]of H.entries()){let E=document.createElementNS("http://www.w3.org/2000/svg","text");E.setAttribute("x",String(T[m]??0)),E.setAttribute("y","10"),E.setAttribute("fill",y.accent),E.setAttribute("font-size",String(Y.fontSize)),E.setAttribute("font-family",y.font),E.textContent=L,e.flowSvg.appendChild(E);}let j={fingerprint:M,nodes:new Map};function V(m,L,E,I,b,v,x,t,d){let S=document.createElementNS("http://www.w3.org/2000/svg","g");if(d){let W=document.createElementNS("http://www.w3.org/2000/svg","title");W.textContent=d,S.appendChild(W);}let O=document.createElementNS("http://www.w3.org/2000/svg","rect");O.setAttribute("x",String(L)),O.setAttribute("y",String(E-6)),O.setAttribute("width",String(Y.nodeW)),O.setAttribute("height",String(Y.nodeH)),O.setAttribute("rx","3"),O.setAttribute("fill",t?`${v}33`:"none"),O.setAttribute("stroke",v),O.setAttribute("stroke-width",t?"2":"1"),O.setAttribute("opacity",x?"0.35":"1"),S.appendChild(O);let B=document.createElementNS("http://www.w3.org/2000/svg","text");return B.setAttribute("x",String(L+4)),B.setAttribute("y",String(E+4)),B.setAttribute("fill",v),B.setAttribute("font-size",String(Y.fontSize)),B.setAttribute("font-family",y.font),B.setAttribute("opacity",x?"0.35":"1"),B.textContent=b,S.appendChild(B),e.flowSvg.appendChild(S),j.nodes.set(`${m}:${I}`,{g:S,rect:O,text:B}),{midX:L+Y.nodeW/2,midY:E}}function w(m,L,E,I,b,v){let x=document.createElementNS("http://www.w3.org/2000/svg","line");x.setAttribute("x1",String(m)),x.setAttribute("y1",String(L)),x.setAttribute("x2",String(E)),x.setAttribute("y2",String(I)),x.setAttribute("stroke",b),x.setAttribute("stroke-width","1"),x.setAttribute("stroke-dasharray","3,2"),x.setAttribute("opacity","0.7"),e.flowSvg.appendChild(x);}let A=new Map,D=new Map,z=new Map,q=new Map;for(let m of C){let L=s.recentlyChangedFacts.has(m.id),E=r.facts.find(b=>b.key===m.id)?.meta,I=V(0,T[0],m.y,m.id,m.label,y.text,false,L,E?.description);A.set(m.id,I);}for(let m of k){let L=s.recentlyComputedDerivations.has(m.id),E=r.derivations.find(b=>b.id===m.id)?.meta,I=V(1,T[1],m.y,m.id,m.label,y.accent,false,L,E?.description);D.set(m.id,I);}for(let m of _){let L=s.recentlyActiveConstraints.has(m.id),E=l.find(b=>b.id===m.id)?.meta,I=V(2,T[2],m.y,m.id,m.label,E?.color??(m.active?y.yellow:y.muted),!m.active,L,E?.description);z.set(m.id,I);}for(let m of F){let L=m.status==="unmet"?y.red:y.yellow,E=V(3,T[3],m.y,m.id,ee(m.type,Y.labelMaxChars),L,false,false);q.set(m.id,E);}for(let m of P){let L=a.some(I=>I.resolverId===m.id),E=r.resolverDefs.find(I=>I.id===m.id)?.meta;V(4,T[4],m.y,m.id,m.label,E?.color??(L?y.green:y.muted),!L,false,E?.description);}for(let m of k){let L=s.derivationDeps.get(m.id),E=D.get(m.id);if(L&&E)for(let I of L){let b=A.get(I);b&&w(b.midX+Y.nodeW/2,b.midY,E.midX-Y.nodeW/2,E.midY,y.accent);}}for(let m of F){let L=z.get(m.fromConstraint),E=q.get(m.id);L&&E&&w(L.midX+Y.nodeW/2,L.midY,E.midX-Y.nodeW/2,E.midY,y.muted);}for(let m of a){let L=q.get(m.id);if(L){let E=P.find(I=>I.id===m.resolverId);E&&w(L.midX+Y.nodeW/2,L.midY,T[4],E.y,y.green);}}Te.set(e.flowSvg,j);}function nt(e){e.animationTimer&&clearTimeout(e.animationTimer),e.animationTimer=setTimeout(()=>{e.recentlyChangedFacts.clear(),e.recentlyComputedDerivations.clear(),e.recentlyActiveConstraints.clear(),e.animationTimer=null;},600);}function rt(e,i){let s=i.entries.toArray();if(s.length===0)return;e.timelineSvg.replaceChildren();let r=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY;for(let R of s)R.startMs<r&&(r=R.startMs),R.endMs>c&&(c=R.endMs);let p=performance.now();for(let R of i.inflight.values())R<r&&(r=R),p>c&&(c=p);let l=c-r||1,n=ce-de-10,a=[],o=new Set;for(let R of s)o.has(R.resolver)||(o.add(R.resolver),a.push(R.resolver));for(let R of i.inflight.keys())o.has(R)||(o.add(R),a.push(R));let h=a.slice(-12),M=le*h.length+20;e.timelineSvg.setAttribute("viewBox",`0 0 ${ce} ${M}`),e.timelineSvg.setAttribute("height",String(Math.min(M,200)));let $=5;for(let R=0;R<=$;R++){let T=de+n*R/$,f=l*R/$,g=document.createElementNS("http://www.w3.org/2000/svg","text");g.setAttribute("x",String(T)),g.setAttribute("y","8"),g.setAttribute("fill",y.muted),g.setAttribute("font-size","6"),g.setAttribute("font-family",y.font),g.setAttribute("text-anchor","middle"),g.textContent=f<1e3?`${f.toFixed(0)}ms`:`${(f/1e3).toFixed(1)}s`,e.timelineSvg.appendChild(g);let C=document.createElementNS("http://www.w3.org/2000/svg","line");C.setAttribute("x1",String(T)),C.setAttribute("y1","10"),C.setAttribute("x2",String(T)),C.setAttribute("y2",String(M)),C.setAttribute("stroke",y.border),C.setAttribute("stroke-width","0.5"),e.timelineSvg.appendChild(C);}for(let R=0;R<h.length;R++){let T=h[R],f=12+R*le,g=R%Ce.length,C=Ce[g],k=document.createElementNS("http://www.w3.org/2000/svg","text");k.setAttribute("x",String(de-4)),k.setAttribute("y",String(f+le/2+3)),k.setAttribute("fill",y.muted),k.setAttribute("font-size","7"),k.setAttribute("font-family",y.font),k.setAttribute("text-anchor","end"),k.textContent=ee(T,12),e.timelineSvg.appendChild(k);let _=s.filter(P=>P.resolver===T);for(let P of _){let K=de+(P.startMs-r)/l*n,N=Math.max((P.endMs-P.startMs)/l*n,xe),H=document.createElementNS("http://www.w3.org/2000/svg","rect");H.setAttribute("x",String(K)),H.setAttribute("y",String(f+2)),H.setAttribute("width",String(N)),H.setAttribute("height",String(le-4)),H.setAttribute("rx","2"),H.setAttribute("fill",P.error?y.red:C),H.setAttribute("opacity","0.8");let j=document.createElementNS("http://www.w3.org/2000/svg","title"),V=P.endMs-P.startMs;j.textContent=`${T}: ${V.toFixed(1)}ms${P.error?" (error)":""}`,H.appendChild(j),e.timelineSvg.appendChild(H);}let F=i.inflight.get(T);if(F!==void 0){let P=de+(F-r)/l*n,K=Math.max((p-F)/l*n,xe),N=document.createElementNS("http://www.w3.org/2000/svg","rect");N.setAttribute("x",String(P)),N.setAttribute("y",String(f+2)),N.setAttribute("width",String(K)),N.setAttribute("height",String(le-4)),N.setAttribute("rx","2"),N.setAttribute("fill",C),N.setAttribute("opacity","0.4"),N.setAttribute("stroke",C),N.setAttribute("stroke-width","1"),N.setAttribute("stroke-dasharray","3,2");let H=document.createElementNS("http://www.w3.org/2000/svg","title");H.textContent=`${T}: inflight ${(p-F).toFixed(0)}ms`,N.appendChild(H),e.timelineSvg.appendChild(N);}}e.timelineSvg.setAttribute("aria-label",`Timeline: ${s.length} resolver executions across ${h.length} resolvers`);}function gt(){if(typeof window>"u")return {systems:new Map,getSystem:()=>null,getSystems:()=>[],inspect:()=>null,getEvents:()=>[],explain:()=>null,exportSession:()=>null,importSession:()=>false,clearEvents:()=>{},subscribe:()=>()=>{}};if(!window.__DIRECTIVE__){let e=new Map,i={systems:e,getSystem(s){return s?e.get(s)?.system??null:e.values().next().value?.system??null},getSystems(){return [...e.keys()]},inspect(s){let r=this.getSystem(s),c=s?e.get(s):e.values().next().value,p=r?.inspect()??null;return p&&c&&(p.resolverStats=c.resolverStats?Object.fromEntries(c.resolverStats):{}),p},getEvents(s){return s?e.get(s)?.events.toArray()??[]:e.values().next().value?.events.toArray()??[]},explain(s,r){return this.getSystem(r)?.explain(s)??null},subscribe(s,r){let c=r?e.get(r):e.values().next().value;if(!c){let p=false,n=setInterval(()=>{let o=r?e.get(r):e.values().next().value;o&&!p&&(p=true,o.subscribers.add(s));},100),a=setTimeout(()=>clearInterval(n),1e4);return ()=>{clearInterval(n),clearTimeout(a);for(let o of e.values())o.subscribers.delete(s);}}return c.subscribers.add(s),()=>{c.subscribers.delete(s);}},exportSession(s){let r=s?e.get(s):e.values().next().value;return r?JSON.stringify({version:1,name:s??e.keys().next().value??"default",exportedAt:Date.now(),events:r.events.toArray()}):null},importSession(s,r){try{if(s.length>10*1024*1024)return !1;let c=JSON.parse(s);if(!c||typeof c!="object"||Array.isArray(c)||!Array.isArray(c.events))return !1;let p=r?e.get(r):e.values().next().value;if(!p)return !1;let l=p.maxEvents,n=c.events,a=n.length>l?n.length-l:0;p.events.clear();for(let o=a;o<n.length;o++){let u=n[o];u&&typeof u=="object"&&!Array.isArray(u)&&typeof u.timestamp=="number"&&typeof u.type=="string"&&u.type!=="__proto__"&&u.type!=="constructor"&&u.type!=="prototype"&&p.events.push({timestamp:u.timestamp,type:u.type,data:u.data??null});}return !0}catch{return false}},clearEvents(s){let r=s?e.get(s):e.values().next().value;r&&r.events.clear();}};return Object.defineProperty(window,"__DIRECTIVE__",{value:i,writable:false,configurable:ge(),enumerable:true}),i}return window.__DIRECTIVE__}function bt(e={}){let{name:i="default",trace:s=false,maxEvents:r,panel:c=false,position:p="bottom-right",defaultOpen:l=false}=e,n=Ne(r),a=gt(),o={system:null,events:new ue(n),maxEvents:n,subscribers:new Set,resolverStats:new Map};a.systems.set(i,o);let u=(t,d)=>{let S={timestamp:Date.now(),type:t,data:d};s&&o.events.push(S);for(let O of o.subscribers)try{O(S);}catch{}},h=null,M=new Map,$=new Map,R=new Map,T=Be(),f=qe(),g=Ve(),C=je(),k=c&&typeof window<"u"&&typeof document<"u"&&ge(),_=null,F=0,P=1,K=2,N=4,H=8,j=16,V=32,w=64,A=128,D=256,z=new Map,q=new Set,m=new Map,L=new Set,E=null;function I(t){F|=t,_===null&&typeof requestAnimationFrame<"u"&&(_=requestAnimationFrame(b));}function b(){if(_=null,!h||!o.system){F=0;return}let t=h.refs,d=o.system,S=F;if(F=0,S&P){for(let O of q)Ke(M,O);q.clear();for(let[O,{value:B,flash:W}]of z)me(M,t.factsBody,O,B,W,h.flashTimers);z.clear(),t.factsCount.textContent=String(M.size);}if(S&K&&Ee(t,$,d,h.flashTimers),S&D){for(let O of L)Ze(t,R,O);L.clear();for(let[O,{active:B,whenExplain:W,label:Q}]of m)tt(t,R,O,B,W,Q);m.clear();}if(S&H)if(E)ve(t,E.inflight.length,E.unmet.length);else {let O=ae(d);O&&ve(t,O.inflight.length,O.unmet.length);}if(S&N)if(E)ye(t,E.inflight,E.unmet);else {let O=ae(d);O&&ye(t,O.inflight,O.unmet);}S&j&&Xe(t,T),S&V&&Ae(t,d,f),S&w&&Me(t,d),S&A&&rt(t,C);}function v(t,d){h&&s&&Ye(h.refs,t,d,o.events.size);}function x(t,d){g.isRecording&&g.recordedEvents.length<Fe&&g.recordedEvents.push({timestamp:Date.now(),type:t,data:_e(d)});}return {name:"devtools",onInit:t=>{if(o.system=t,u("init",{}),typeof window<"u"&&console.log(`%c[Directive Devtools]%c System "${i}" initialized. Access via window.__DIRECTIVE__`,"color: #7c3aed; font-weight: bold","color: inherit"),k){let d=o.system;h=Ge(i,p,l,s);let S=h.refs;try{let W=d.facts.$store.toObject();for(let[Q,ne]of Object.entries(W))me(M,S.factsBody,Q,ne,!1);S.factsCount.textContent=String(Object.keys(W).length);}catch{}Ee(S,$,d);let O=ae(d);O&&(ve(S,O.inflight.length,O.unmet.length),ye(S,O.inflight,O.unmet)),Me(S,d),Je(S,d),Ae(S,d,f);let B=(O?.constraints?.length??0)>0;et(S,B),S.recordBtn.addEventListener("click",()=>{if(g.isRecording=!g.isRecording,S.recordBtn.textContent=g.isRecording?"\u23F9 Stop":"\u23FA Record",S.recordBtn.style.color=g.isRecording?y.red:y.text,g.isRecording){g.recordedEvents=[],g.snapshots=[];try{g.snapshots.push({timestamp:Date.now(),facts:d.facts.$store.toObject()});}catch{}}}),S.exportBtn.addEventListener("click",()=>{let W=g.recordedEvents.length>0?g.recordedEvents:o.events.toArray(),Q=JSON.stringify({version:1,name:i,exportedAt:Date.now(),events:W,snapshots:g.snapshots},null,2),ne=new Blob([Q],{type:"application/json"}),te=URL.createObjectURL(ne),se=document.createElement("a");se.href=te,se.download=`directive-session-${i}-${Date.now()}.json`,se.click(),URL.revokeObjectURL(te);});}},onStart:t=>{u("start",{}),v("start",{}),x("start",{});},onStop:t=>{u("stop",{}),v("stop",{}),x("stop",{});},onDestroy:t=>{u("destroy",{}),a.systems.delete(i),_!==null&&typeof cancelAnimationFrame<"u"&&(cancelAnimationFrame(_),_=null),f.animationTimer&&clearTimeout(f.animationTimer),h&&(h.destroy(),h=null,M.clear(),$.clear(),R.clear());},onFactSet:(t,d,S)=>{u("fact.set",{key:t,value:d,prev:S}),x("fact.set",{key:t,value:d,prev:S}),f.recentlyChangedFacts.add(t),h&&o.system&&(z.set(t,{value:d,flash:true}),q.delete(t),I(P),v("fact.set",{key:t,value:d}));},onFactDelete:(t,d)=>{u("fact.delete",{key:t,prev:d}),x("fact.delete",{key:t,prev:d}),h&&(q.add(t),z.delete(t),I(P),v("fact.delete",{key:t}));},onFactsBatch:t=>{if(u("facts.batch",{changes:t}),x("facts.batch",{count:t.length}),h&&o.system){for(let d of t)d.type==="delete"?(q.add(d.key),z.delete(d.key)):(f.recentlyChangedFacts.add(d.key),z.set(d.key,{value:d.value,flash:true}),q.delete(d.key));I(P),v("facts.batch",{count:t.length});}},onDerivationCompute:(t,d,S)=>{u("derivation.compute",{id:t,value:d,deps:S}),x("derivation.compute",{id:t,deps:S}),f.derivationDeps.set(t,S),f.recentlyComputedDerivations.add(t),v("derivation.compute",{id:t,deps:S});},onDerivationInvalidate:t=>{u("derivation.invalidate",{id:t}),v("derivation.invalidate",{id:t});},onReconcileStart:t=>{u("reconcile.start",{}),T.lastReconcileStartMs=performance.now(),v("reconcile.start",{}),x("reconcile.start",{});},onReconcileEnd:t=>{if(u("reconcile.end",t),x("reconcile.end",{unmet:t.unmet.length,inflight:t.inflight.length,completed:t.completed.length}),T.lastReconcileStartMs>0){let d=performance.now()-T.lastReconcileStartMs;T.reconcileCount++,T.reconcileTotalMs+=d,T.lastReconcileStartMs=0;}if(g.isRecording&&o.system&&g.snapshots.length<He)try{g.snapshots.push({timestamp:Date.now(),facts:o.system.facts.$store.toObject()});}catch{}h&&o.system&&(E=t,nt(f),I(K|H|N|j|V|w),v("reconcile.end",{unmet:t.unmet.length,inflight:t.inflight.length}));},onConstraintEvaluate:(t,d,S)=>{let O=o.system?.meta?.constraint(t)?.label,B=O?{id:t,active:d,label:O}:{id:t,active:d},W=S?{...B,whenExplain:S}:B;u("constraint.evaluate",W),x("constraint.evaluate",W),d?(f.activeConstraints.add(t),f.recentlyActiveConstraints.add(t)):f.activeConstraints.delete(t),h&&(m.set(t,{active:d,whenExplain:S,label:O}),L.delete(t),I(D)),v("constraint.evaluate",{id:t,active:d});},onConstraintError:(t,d)=>{u("constraint.error",{id:t,error:String(d)}),v("constraint.error",{id:t,error:String(d)});},onRequirementCreated:t=>{u("requirement.created",{id:t.id,type:t.requirement.type}),x("requirement.created",{id:t.id,type:t.requirement.type}),v("requirement.created",{id:t.id,type:t.requirement.type});},onRequirementMet:(t,d)=>{u("requirement.met",{id:t.id,byResolver:d}),x("requirement.met",{id:t.id,byResolver:d}),v("requirement.met",{id:t.id,byResolver:d});},onRequirementCanceled:t=>{u("requirement.canceled",{id:t.id}),x("requirement.canceled",{id:t.id}),v("requirement.canceled",{id:t.id});},onResolverStart:(t,d)=>{let S=o.system?.meta?.resolver(t)?.label,O={resolver:t,requirementId:d.id},B=S?{...O,label:S}:O;u("resolver.start",B),x("resolver.start",B),C.inflight.set(t,performance.now()),h&&o.system&&(I(N|H|A),v("resolver.start",{resolver:t,requirementId:d.id}));},onResolverComplete:(t,d,S)=>{let O=o.system?.meta?.resolver(t)?.label;u("resolver.complete",{resolver:t,requirementId:d.id,duration:S,...O?{label:O}:{}}),x("resolver.complete",{resolver:t,requirementId:d.id,duration:S});let B=o.resolverStats.get(t)??{count:0,totalMs:0,errors:0};if(B.count++,B.totalMs+=S,o.resolverStats.set(t,B),o.resolverStats.size>we){let Q=o.resolverStats.keys().next().value;Q!==void 0&&o.resolverStats.delete(Q);}T.resolverStats.set(t,{...B});let W=C.inflight.get(t);C.inflight.delete(t),W!==void 0&&C.entries.push({resolver:t,startMs:W,endMs:performance.now(),error:false}),h&&o.system&&(I(N|H|j|A),v("resolver.complete",{resolver:t,duration:S}));},onResolverError:(t,d,S)=>{u("resolver.error",{resolver:t,requirementId:d.id,error:String(S)}),x("resolver.error",{resolver:t,requirementId:d.id,error:String(S)});let O=o.resolverStats.get(t)??{count:0,totalMs:0,errors:0};if(O.errors++,o.resolverStats.set(t,O),o.resolverStats.size>we){let W=o.resolverStats.keys().next().value;W!==void 0&&o.resolverStats.delete(W);}T.resolverStats.set(t,{...O});let B=C.inflight.get(t);C.inflight.delete(t),B!==void 0&&C.entries.push({resolver:t,startMs:B,endMs:performance.now(),error:true}),h&&o.system&&(I(N|H|j|A),v("resolver.error",{resolver:t,error:String(S)}));},onResolverRetry:(t,d,S)=>{u("resolver.retry",{resolver:t,requirementId:d.id,attempt:S}),x("resolver.retry",{resolver:t,requirementId:d.id,attempt:S}),v("resolver.retry",{resolver:t,attempt:S});},onResolverCancel:(t,d)=>{u("resolver.cancel",{resolver:t,requirementId:d.id}),x("resolver.cancel",{resolver:t,requirementId:d.id}),C.inflight.delete(t),v("resolver.cancel",{resolver:t});},onResolverWriteRejected:t=>{let d=t.kind==="summary"?{kind:t.kind,resolver:t.resolver,requirementId:t.req.id,reason:t.reason,dropped:t.dropped}:{kind:t.kind,resolver:t.resolver,requirementId:t.req.id,reason:t.reason,fact:t.fact,expected:t.expected,actual:t.actual};u("resolver.write.rejected",d),x("resolver.write.rejected",d),v("resolver.write.rejected",t.kind==="summary"?{resolver:t.resolver,dropped:t.dropped}:{resolver:t.resolver,fact:t.fact});},onEffectRun:t=>{let d=o.system?.meta?.effect(t)?.label,S=d?{id:t,label:d}:{id:t};u("effect.run",S),x("effect.run",S),T.effectRunCount++,v("effect.run",{id:t});},onEffectError:(t,d)=>{u("effect.error",{id:t,error:String(d)}),T.effectErrorCount++,v("effect.error",{id:t,error:String(d)});},onSnapshot:t=>{u("timetravel.snapshot",{id:t.id,trigger:t.trigger}),h&&o.system&&I(w),v("timetravel.snapshot",{id:t.id,trigger:t.trigger});},onHistoryNavigate:(t,d)=>{if(u("timetravel.jump",{from:t,to:d}),x("timetravel.jump",{from:t,to:d}),h&&o.system){let S=o.system;try{let O=S.facts.$store.toObject();M.clear(),h.refs.factsBody.replaceChildren();for(let[B,W]of Object.entries(O))me(M,h.refs.factsBody,B,W,!1);h.refs.factsCount.textContent=String(Object.keys(O).length);}catch{}$.clear(),f.derivationDeps.clear(),h.refs.derivBody.replaceChildren(),R.clear(),h.refs.constraintsBody.replaceChildren(),h.refs.constraintsCount.textContent="0",E=null,I(K|H|N|V|w),v("timetravel.jump",{from:t,to:d});}},onError:t=>{u("error",{source:t.source,sourceId:t.sourceId,message:t.message}),x("error",{source:t.source,message:t.message}),v("error",{source:t.source,message:t.message});},onErrorRecovery:(t,d)=>{u("error.recovery",{source:t.source,sourceId:t.sourceId,strategy:d}),v("error.recovery",{source:t.source,strategy:d});},onTraceComplete:t=>{u("trace.complete",{id:t.id,status:t.status,facts:t.factChanges.length,constraints:t.constraintsHit.length,requirements:t.requirementsAdded.length,resolvers:t.resolversStarted.length,effects:t.effectsRun.length}),v("trace.complete",{id:t.id});},onDefinitionRegister:(t,d)=>{u("definition.register",{type:t,id:d}),x("definition.register",{type:t,id:d}),v("definition.register",{type:t,id:d});},onDefinitionAssign:(t,d)=>{u("definition.assign",{type:t,id:d}),x("definition.assign",{type:t,id:d}),v("definition.assign",{type:t,id:d});},onDefinitionUnregister:(t,d)=>{u("definition.unregister",{type:t,id:d}),x("definition.unregister",{type:t,id:d}),v("definition.unregister",{type:t,id:d}),t==="constraint"&&h&&(L.add(d),m.delete(d),I(D));},onDefinitionCall:(t,d,S)=>{u("definition.call",{type:t,id:d,props:S}),x("definition.call",{type:t,id:d,props:S}),v("definition.call",{type:t,id:d,props:S});}}}var st="directive-devtools-event",ot=new Set(["__proto__","constructor","prototype"]),yt=Math.random().toString(36).slice(2,8);function vt(){if(typeof window<"u"){let e=`__DIRECTIVE_BRIDGE_ID_${yt}__`,i=window,s=i[e]??0;return i[e]=s+1,s+1}return 1}function ht(e){let i=false;for(let r of ot)if(r in e){i=true;break}if(!i)return e;let s=Object.create(null);for(let[r,c]of Object.entries(e))ot.has(r)||(s[r]=c);return s}function St(e){if(!(typeof window>"u"))try{let i=ht(e),s={id:vt(),timestamp:Date.now(),snapshotId:null,...i};window.dispatchEvent(new CustomEvent(st,{detail:s}));}catch{}}function xt(e){let{storage:i,key:s,include:r,exclude:c=[],debounce:p=100,onRestore:l,onSave:n,onError:a}=e,o=null,u=null,h=new Set,M=f=>c.includes(f)?false:r?r.includes(f):true,$=()=>{try{let f=i.getItem(s);if(!f)return null;let g=JSON.parse(f);return typeof g!="object"||g===null?null:g$1(g)?g:(a?.(new Error("Potential prototype pollution detected in stored data")),null)}catch(f){return a?.(f instanceof Error?f:new Error(String(f))),null}},R=()=>{if(u)try{let f={};for(let g of h)M(g)&&(f[g]=u.facts[g]);i.setItem(s,JSON.stringify(f)),n?.(f);}catch(f){a?.(f instanceof Error?f:new Error(String(f)));}},T=()=>{o&&clearTimeout(o),o=setTimeout(R,p);};return {name:"persistence",onInit:f=>{u=f;let g=$();g&&(u.facts.$store.batch(()=>{for(let[C,k]of Object.entries(g))M(C)&&(u.facts[C]=k,h.add(C));}),l?.(g));},onDestroy:()=>{o&&clearTimeout(o),R();},onFactSet:f=>{h.add(f),M(f)&&T();},onFactDelete:f=>{h.delete(f),M(f)&&T();},onFactsBatch:f=>{let g=false;for(let C of f)C.type==="set"?h.add(C.key):h.delete(C.key),M(C.key)&&(g=true);g&&T();}}}function Ct(e={}){let{onSlowConstraint:i,onSlowResolver:s,slowConstraintThresholdMs:r=16,slowResolverThresholdMs:c=1e3}=e,p=new Map,l=new Map,n=new Map,a={runs:0,totalDurationMs:0,avgDurationMs:0,maxDurationMs:0},o=0,u=0,h=0;function M(f){let g=p.get(f);return g||(g={evaluations:0,totalDurationMs:0,avgDurationMs:0,maxDurationMs:0,lastEvaluatedAt:0},p.set(f,g)),g}function $(f){let g=l.get(f);return g||(g={starts:0,completions:0,errors:0,retries:0,cancellations:0,totalDurationMs:0,avgDurationMs:0,maxDurationMs:0,lastCompletedAt:0},l.set(f,g)),g}function R(f){let g=n.get(f);return g||(g={runs:0,errors:0,lastRunAt:0},n.set(f,g)),g}let T={name:"performance",onStart(){o=Date.now();},onConstraintEvaluate(f,g){let C=performance.now(),k=M(f);if(k.evaluations++,k.lastEvaluatedAt=Date.now(),h>0){let _=C-h;k.totalDurationMs+=_;let F=k.evaluations;k.avgDurationMs=k.totalDurationMs/F,_>k.maxDurationMs&&(k.maxDurationMs=_),_>r&&i?.(f,_);}h=C;},onResolverStart(f,g){let C=$(f);C.starts++;},onResolverComplete(f,g,C){let k=$(f);k.completions++,k.totalDurationMs+=C,k.avgDurationMs=k.totalDurationMs/k.completions,C>k.maxDurationMs&&(k.maxDurationMs=C),k.lastCompletedAt=Date.now(),C>c&&s?.(f,C);},onResolverError(f,g,C){$(f).errors++;},onResolverRetry(f,g,C){$(f).retries++;},onResolverCancel(f,g){$(f).cancellations++;},onEffectRun(f){let g=R(f);g.runs++,g.lastRunAt=Date.now();},onEffectError(f,g){R(f).errors++;},onReconcileStart(){u=performance.now(),h=0;},onReconcileEnd(){let f=performance.now()-u;a.runs++,a.totalDurationMs+=f,a.avgDurationMs=a.totalDurationMs/a.runs,f>a.maxDurationMs&&(a.maxDurationMs=f);},onDestroy(){T.reset();},getSnapshot(){let f={};for(let[k,_]of p)f[k]={..._};let g={};for(let[k,_]of l)g[k]={..._};let C={};for(let[k,_]of n)C[k]={..._};return {constraints:f,resolvers:g,effects:C,reconcile:{...a},uptime:o?Date.now()-o:0}},reset(){p.clear(),l.clear(),n.clear(),a.runs=0,a.totalDurationMs=0,a.avgDurationMs=0,a.maxDurationMs=0,h=0;}};return T}function he(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function Re(e,i){if(e.length===0)return 0;let s=[...e].sort((c,p)=>c-p),r=Math.ceil(i/100*s.length)-1;return s[Math.max(0,r)]??0}function wt(e={}){let{serviceName:i="directive-agents",metrics:s={},tracing:r={},alerts:c=[],summaryMetrics:p={},events:l={}}=e,n={requests:p.requests??"agent.requests",errors:p.errors??"agent.errors",latency:p.latency??"agent.latency",tokens:p.tokens??"agent.tokens",cost:p.cost??"agent.cost"},{enabled:a=true,exportInterval:o,exporter:u,maxDataPoints:h=1e3}=s,{enabled:M=true,sampleRate:$=1,maxSpans:R=1e3,exporter:T}=r,f=Date.now(),g=new Map,C=new Map,k=[],_=[],F=new Map,P=new Map,K;o&&(u||T)&&(K=setInterval(async()=>{try{if(u&&a&&await u(Array.from(P.values())),T&&M){let w=k.splice(0,100);w.length>0&&await T(w);}}catch(w){console.error("[Directive Observability] Export error:",w);}},o));function N(w){if(!a)return;let A=`${w.name}:${JSON.stringify(Object.fromEntries(Object.entries(w.labels).sort()))}`,D=g.get(A);D||(D=[],g.set(A,D)),D.push(w),D.length>h&&D.shift(),H(w.name,D),l.onMetricRecorded?.(w),j(w.name);}function H(w,A){if(A.length===0)return;let D=A.map(E=>E.value),z=D.reduce((E,I)=>E+I,0),q=A[0],m=D[D.length-1],L={name:w,type:q.type,count:A.length,sum:z,min:Math.min(...D),max:Math.max(...D),avg:z/A.length,lastValue:m,lastUpdated:Date.now()};P.set(w,L);}function j(w){for(let A of c){if(A.metric!==w)continue;let D=P.get(w);if(!D)continue;let z=`${A.metric}:${A.threshold}`,q=F.get(z),m=A.cooldownMs??6e4;if(q&&Date.now()-q<m)continue;let L=A.operator??">",E=D.lastValue,I=A.threshold,b=false;switch(L){case ">":b=E>I;break;case "<":b=E<I;break;case ">=":b=E>=I;break;case "<=":b=E<=I;break;case "==":b=E===I;break}if(b){let v={alertId:he(),metric:w,currentValue:E,threshold:I,operator:L,action:A.action,timestamp:Date.now(),message:`Alert: ${w} ${L} ${I} (current: ${E})`};switch(_.push(v),_.length>1e3&&_.splice(0,_.length-1e3),F.set(z,Date.now()),l.onAlert?.(v),A.action){case "log":console.log(`[Observability] ${v.message}`);break;case "warn":console.warn(`[Observability] ${v.message}`);break;case "alert":console.error(`[Observability ALERT] ${v.message}`);break;case "callback":A.callback?.(D,I);break}}}}function V(w){let A=[];for(let[D,z]of g)if(D.startsWith(`${w}:`))for(let q of z)A.push(q.value);return A.length===0?{}:{p50:Re(A,50),p90:Re(A,90),p99:Re(A,99)}}return {incrementCounter(w,A={},D=1){N({name:w,type:"counter",value:D,labels:A,timestamp:Date.now()});},setGauge(w,A,D={}){N({name:w,type:"gauge",value:A,labels:D,timestamp:Date.now()});},observeHistogram(w,A,D={}){N({name:w,type:"histogram",value:A,labels:D,timestamp:Date.now()});},startSpan(w,A){if(Math.random()>$)return {traceId:"sampled-out",spanId:"sampled-out",operationName:w,serviceName:i,startTime:Date.now(),status:"ok",tags:{},logs:[]};let D={traceId:A?C.get(A)?.traceId??he():he(),spanId:he(),parentSpanId:A,operationName:w,serviceName:i,startTime:Date.now(),status:"ok",tags:{},logs:[]};return M&&(C.set(D.spanId,D),l.onSpanStart?.(D)),D},endSpan(w,A="ok"){if(w==="sampled-out")return;let D=C.get(w);if(D){for(D.endTime=Date.now(),D.duration=D.endTime-D.startTime,D.status=A,C.delete(w),k.push(D);k.length>R;)k.shift();N({name:`${D.operationName}.latency`,type:"histogram",value:D.duration,labels:{},timestamp:Date.now()}),A==="error"&&N({name:`${D.operationName}.errors`,type:"counter",value:1,labels:{},timestamp:Date.now()}),l.onSpanEnd?.(D);}},addSpanLog(w,A,D="info"){if(w==="sampled-out")return;let z=C.get(w);z&&z.logs.push({timestamp:Date.now(),message:A,level:D});},addSpanTag(w,A,D){if(w==="sampled-out")return;let z=C.get(w);z&&(z.tags[A]=D);},getDashboard(){let w=P.get(n.requests),A=P.get(n.errors),D=P.get(n.latency),z=P.get(n.tokens),q=P.get(n.cost),m=w?.sum??0,L=A?.sum??0,E=m>0?L/m:0,I=D?V(n.latency):{};return {service:{name:i,uptime:Date.now()-f,startTime:f},metrics:Object.fromEntries(P),traces:[...k].slice(-100),alerts:[..._].slice(-50),summary:{totalRequests:m,totalErrors:L,errorRate:E,avgLatency:D?.avg??0,p99Latency:I.p99??0,activeSpans:C.size,totalTokens:z?.sum??0,totalCost:q?.sum??0}}},getMetric(w){let A=P.get(w);if(!A)return;let D=V(w);return {...A,...D}},getTraces(w=100){return [...k].slice(-w)},getAlerts(){return [..._]},export(){return {metrics:Array.from(P.values()),traces:[...k],alerts:[..._]}},clear(){g.clear(),P.clear(),C.clear(),k.length=0,_.length=0,F.clear();},async destroy(){K&&(clearInterval(K),K=void 0);try{u&&a&&P.size>0&&await u(Array.from(P.values())),T&&M&&k.length>0&&await T([...k]);}catch(w){console.error("[Directive Observability] Error flushing data during destroy:",w);}g.clear(),P.clear(),C.clear(),k.length=0,_.length=0,F.clear();},getHealthStatus(){let w=P.get(n.requests),A=P.get(n.errors),D=w?.sum??0,z=A?.sum??0,q=D>0?z/D:0,m=_.filter(L=>Date.now()-L.timestamp<3e5).length;return {healthy:q<.1&&m===0,uptime:Date.now()-f,errorRate:q,activeAlerts:m}}}}function Et(e){return {trackRun(i,s){let r={agent:i};e.incrementCounter("agent.requests",r),s.success||e.incrementCounter("agent.errors",r),e.observeHistogram("agent.latency",s.latencyMs,r),s.inputTokens!==void 0&&(e.incrementCounter("agent.tokens.input",r,s.inputTokens),e.incrementCounter("agent.tokens",r,s.inputTokens)),s.outputTokens!==void 0&&(e.incrementCounter("agent.tokens.output",r,s.outputTokens),e.incrementCounter("agent.tokens",r,s.outputTokens)),s.cost!==void 0&&e.incrementCounter("agent.cost",r,s.cost),s.toolCalls!==void 0&&e.incrementCounter("agent.tool_calls",r,s.toolCalls);},trackGuardrail(i,s){let r={guardrail:i};e.incrementCounter("guardrail.checks",r),s.passed||e.incrementCounter("guardrail.failures",r),s.blocked&&e.incrementCounter("guardrail.blocks",r),e.observeHistogram("guardrail.latency",s.latencyMs,r);},trackApproval(i,s){let r={tool:i};e.incrementCounter("approval.requests",r),s.approved?e.incrementCounter("approval.approved",r):e.incrementCounter("approval.rejected",r),s.timedOut&&e.incrementCounter("approval.timeouts",r),e.observeHistogram("approval.wait_time",s.waitTimeMs,r);},trackHandoff(i,s,r){e.incrementCounter("handoff.count",{from:i,to:s}),e.observeHistogram("handoff.latency",r);}}}function Mt(e){let i=[{key:"service.name",value:{stringValue:e.serviceName??"directive-agents"}},{key:"telemetry.sdk.name",value:{stringValue:"@directive-run/core"}},{key:"telemetry.sdk.language",value:{stringValue:"typescript"}},{key:"telemetry.sdk.version",value:{stringValue:"1.20.2"}}];if(e.serviceVersion&&i.push({key:"service.version",value:{stringValue:e.serviceVersion}}),e.resourceAttributes)for(let[s,r]of Object.entries(e.resourceAttributes))i.push({key:s,value:{stringValue:r}});return {attributes:i}}function oe(e){return `${BigInt(e)*BigInt(1e6)}`}function Tt(e){switch(e){case "counter":return "sum";case "gauge":return "gauge";case "histogram":return "histogram";default:return "gauge"}}function At(e,i,s){let r=e.map(c=>{let p=c.lastUpdated-6e4,l=[{asInt:c.type==="counter"?c.sum:void 0,asDouble:c.type!=="counter"?c.lastValue:void 0,timeUnixNano:oe(c.lastUpdated),startTimeUnixNano:oe(p),attributes:[]}],n=Tt(c.type),a={name:c.name,unit:""};return n==="sum"?a.sum={dataPoints:l,aggregationTemporality:2,isMonotonic:true}:n==="histogram"?a.histogram={dataPoints:[{count:c.count,sum:c.sum,min:c.min,max:c.max,timeUnixNano:oe(c.lastUpdated),startTimeUnixNano:oe(p),attributes:[]}],aggregationTemporality:2}:a.gauge={dataPoints:l},a});return {resourceMetrics:[{resource:i,scopeMetrics:[{scope:{name:"directive",version:s},metrics:r}]}]}}function Rt(e,i,s){let r=e.map(c=>{let p=c.logs.map(a=>({timeUnixNano:oe(a.timestamp),name:a.level,attributes:[{key:"message",value:{stringValue:a.message}},{key:"level",value:{stringValue:a.level}}]})),l=Object.entries(c.tags).map(([a,o])=>({key:a,value:typeof o=="string"?{stringValue:o}:typeof o=="number"?{intValue:`${o}`}:{boolValue:o}})),n=c.status==="ok"?1:c.status==="error"?2:0;return {traceId:c.traceId.replace(/-/g,"").padEnd(32,"0").slice(0,32),spanId:c.spanId.replace(/-/g,"").padEnd(16,"0").slice(0,16),parentSpanId:c.parentSpanId?c.parentSpanId.replace(/-/g,"").padEnd(16,"0").slice(0,16):void 0,name:c.operationName,kind:1,startTimeUnixNano:oe(c.startTime),endTimeUnixNano:c.endTime?oe(c.endTime):oe(c.startTime),attributes:l,events:p,status:{code:n}}});return {resourceSpans:[{resource:i,scopeSpans:[{scope:{name:"directive",version:s},spans:r}]}]}}function Dt(e){let{endpoint:i,headers:s={},scopeVersion:r="0.1.0",timeoutMs:c=1e4,fetch:p=globalThis.fetch,onError:l}=e;try{let o=new URL(i);if(o.protocol!=="http:"&&o.protocol!=="https:")throw new Error("[Directive] Only http: and https: protocols are supported")}catch(o){throw new Error(`[Directive OTLP] Invalid endpoint URL "${i}": ${o instanceof Error?o.message:String(o)}`)}if(/\/v1\/(metrics|traces)/.test(i)&&console.warn(`[Directive OTLP] Endpoint "${i}" already contains a /v1/metrics or /v1/traces path. The exporter will append /v1/metrics or /v1/traces automatically. Use the base URL (e.g., "http://localhost:4318") instead.`),c<=0||!Number.isFinite(c))throw new Error(`[Directive OTLP] timeoutMs must be > 0, got ${c}`);let n=Mt(e);async function a(o,u,h){let M=`${i.replace(/\/$/,"")}${o}`,$=new AbortController,R=setTimeout(()=>$.abort(),c);try{let T=await p(M,{method:"POST",headers:{"Content-Type":"application/json",...s},body:JSON.stringify(u),signal:$.signal});if(!T.ok)throw new Error(`[Directive] OTLP export failed: ${T.status} ${T.statusText}`)}catch(T){let f=T instanceof Error?T:new Error(String(T));l?l(f,h):console.error(`[Directive OTLP] Export ${h} error:`,f.message);}finally{clearTimeout(R);}}return {async exportMetrics(o){if(o.length===0)return;let u=At(o,n,r);await a("/v1/metrics",u,"metrics");},async exportTraces(o){if(o.length===0)return;let u=Rt(o,n,r);await a("/v1/traces",u,"traces");}}}var pe=class extends Error{code="CIRCUIT_OPEN";retryAfterMs;state;constructor(i,s,r="OPEN",c){let p=c?`[Directive CircuitBreaker] Circuit "${i}" is ${r}. ${c}`:`[Directive CircuitBreaker] Circuit "${i}" is ${r}. Request rejected. Try again in ${Math.ceil(s/1e3)}s.`;super(p),this.name="CircuitBreakerOpenError",this.retryAfterMs=s,this.state=r;}};function kt(e={}){let{failureThreshold:i=5,recoveryTimeMs:s=3e4,halfOpenMaxRequests:r=3,failureWindowMs:c=6e4,observability:p,metricPrefix:l="circuit_breaker",name:n="default",isFailure:a=()=>true,onStateChange:o}=e;if(i<1||!Number.isFinite(i))throw new Error(`[Directive CircuitBreaker] failureThreshold must be >= 1, got ${i}`);if(s<=0||!Number.isFinite(s))throw new Error(`[Directive CircuitBreaker] recoveryTimeMs must be > 0, got ${s}`);if(r<1||!Number.isFinite(r))throw new Error(`[Directive CircuitBreaker] halfOpenMaxRequests must be >= 1, got ${r}`);if(c<=0||!Number.isFinite(c))throw new Error(`[Directive CircuitBreaker] failureWindowMs must be > 0, got ${c}`);let u="CLOSED",h=[],M=0,$=0,R=Date.now(),T=0,f=0,g=0,C=0,k=0,_=null,F=null;function P(j){if(u===j)return;let V=u;u=j,R=Date.now(),j==="OPEN"&&(T=Date.now()),j==="HALF_OPEN"&&(M=0,$=0),o?.(V,j),p&&p.incrementCounter(`${l}.state_change`,{name:n,from:V,to:j});}function K(){let j=Date.now()-c;return h=h.filter(V=>V>j),h.length}function N(){C++,F=Date.now(),p&&p.incrementCounter(`${l}.success`,{name:n}),u==="HALF_OPEN"&&($++,$>=r&&(P("CLOSED"),h=[]));}function H(j){if(!a(j)){N();return}g++,_=Date.now(),h.push(Date.now());let V=i*2;if(h.length>V&&(h=h.slice(-V)),p&&p.incrementCounter(`${l}.failure`,{name:n}),u==="HALF_OPEN"){P("OPEN");return}u==="CLOSED"&&K()>=i&&P("OPEN");}return {async execute(j){if(f++,p&&p.incrementCounter(`${l}.requests`,{name:n}),u==="OPEN")if(Date.now()-T>=s)P("HALF_OPEN");else throw k++,p&&p.incrementCounter(`${l}.rejected`,{name:n}),new pe(n,s-(Date.now()-T));if(u==="HALF_OPEN"){if(M>=r)throw k++,new pe(n,s,"HALF_OPEN",`Max trial requests (${r}) reached.`);M++;}let V=Date.now();try{let w=await j();return N(),p&&p.observeHistogram(`${l}.latency`,Date.now()-V,{name:n}),w}catch(w){let A=w instanceof Error?w:new Error(String(w));throw H(A),p&&p.observeHistogram(`${l}.latency`,Date.now()-V,{name:n}),w}},getState(){return u==="OPEN"&&Date.now()-T>=s&&P("HALF_OPEN"),u},getStats(){return {state:this.getState(),totalRequests:f,totalFailures:g,totalSuccesses:C,totalRejected:k,recentFailures:K(),lastFailureTime:_,lastSuccessTime:F,lastStateChange:R}},forceState(j){P(j);},reset(){let j=u;u="CLOSED",h=[],M=0,$=0,R=Date.now(),T=0,f=0,g=0,C=0,k=0,_=null,F=null,j!=="CLOSED"&&o?.(j,"CLOSED");},isAllowed(){return u==="CLOSED"?true:u==="OPEN"?Date.now()-T>=s:M<r}}}function Ot(e={}){let i=new Set(e.irreversibleTags??["money","pii","irreversible"]),s=new Set(e.irreversibleResolvers??[]),r=e.cooldownMs??0,c=e.onAlert??(o=>{console.error(`[Directive] CLOBBER on irreversible fact '${o.fact}' (tags: ${o.tags.join(", ")}) by resolver '${o.resolver}'`,{expected:o.expected,actual:o.actual});}),p=e.onSummary,l=null,n=new Map,a=new Set;return {name:"clobber-alert",onInit(o){l=o;},onDestroy(){l=null,n.clear(),a.clear();},onResolverWriteRejected(o){if(!l)return;if(o.kind==="summary"){if(!p)return;let g=s.has(o.resolver),C=a.has(o.resolver);if(!g&&!C)return;try{p({resolver:o.resolver,requirementId:o.req.id,dropped:o.dropped,matchedBy:g?"resolver-listed":"prior-irreversible-alert",timestamp:Date.now()});}catch(k){console.error(`[Directive] clobberAlertPlugin: onSummary callback threw for resolver '${o.resolver}'`,k);}return}let M=(l.meta.fact(o.fact)?.tags??[]).filter(g=>i.has(g)),$=M.length>0,R=s.has(o.resolver);if(!$&&!R)return;let T=$&&R?"both":$?"tag":"resolver",f=`${o.fact}::${o.resolver}`;if(r>0){let g=n.get(f)??0;if(Date.now()-g<r)return}try{if(c({fact:o.fact,tags:M,matchedBy:T,resolver:o.resolver,requirementId:o.req.id,expected:o.expected,actual:o.actual,timestamp:Date.now()}),r>0){if(n.size>=1e3){let g=n.keys().next().value;g!==void 0&&n.delete(g);}n.set(f,Date.now());}a.add(o.resolver);}catch(g){console.error(`[Directive] clobberAlertPlugin: onAlert callback threw for fact '${o.fact}'`,g);}}}}var ie={windowMs:1e3,threshold:5,cooldownMs:5e3,resolvedAfterMs:3e4,maxTrackedFacts:256,maxParticipantsPerFact:16,maxEmissionsPerSec:10};function Lt(e){let i=new Map;return {get(s){let r=i.get(s);return r!==void 0&&(i.delete(s),i.set(s,r)),r},set(s,r){if(i.has(s))i.delete(s);else if(i.size>=e){let c=i.keys().next().value;c!==void 0&&i.delete(c);}i.set(s,r);},delete(s){return i.delete(s)},size(){return i.size},keys(){return i.keys()},clear(){i.clear();}}}function Pt(e$1,i,s){if(!e$1||!i)return {verdict:"function-form-opaque",reason:"one-or-both-when-is-a-function",...{}};let r,c;try{r=b(e$1),c=b(i);}catch{return {verdict:"function-form-opaque",reason:"one-or-both-when-is-a-function"}}if(r.length===0||c.length===0)return {verdict:"function-form-opaque",reason:"one-or-both-when-is-a-function"};let p=M=>`${M.path}::${M.op}::${JSON.stringify(M.value)}`,l=new Set(r.map(p)),n=new Set(c.map(p));if(l.size===n.size&&[...l].every(M=>n.has(M)))return {verdict:"matched",coFireClauses:r,conflictingClauses:[]};let o=[],u=[],h=false;for(let M of r)for(let $ of c){if(M.path!==$.path)continue;let R=e(M,$);R&&(R.type==="direct"?u.push(M):(R.type==="subset"||R.type==="overlap")&&(o.push(M),R.reason.startsWith("Both rules touch")&&R.type==="overlap"&&(h=true)));}return h&&o.length>0?{verdict:"indeterminate",reason:"non-comparable-operator",coFireClauses:o}:o.length>0&&u.length===0?{verdict:"overlap",coFireClauses:o,conflictingClauses:[]}:o.length>0?{verdict:"overlap",coFireClauses:o,conflictingClauses:u}:{verdict:"function-form-opaque",reason:"one-or-both-when-is-a-function"}}function It(){try{return typeof process<"u"&&process.env?.NODE_ENV!=="production"}catch{return true}}function $t(e={}){let i=e.windowMs??ie.windowMs,s=e.threshold??ie.threshold,r=e.cooldownMs??ie.cooldownMs,c=e.resolvedAfterMs??ie.resolvedAfterMs,p=e.maxTrackedFacts??ie.maxTrackedFacts,l=e.maxParticipantsPerFact??ie.maxParticipantsPerFact,n=e.maxEmissionsPerSec??ie.maxEmissionsPerSec,a=e.capturePII??false,o=It(),u=e.onLoop??(b=>{let v=E(b);o?console.warn(v):console.error(v);}),h=e.onResolved,M=null,$=true,R=0,T=new Map,f=new Map,g$1=new Map,C=new Set,k=new Map,_=new Map,F=0,P=0,K=0,N=Lt(p);function H(){if(f.clear(),g$1.clear(),!!M)try{let b=M.inspect();for(let x of b.constraints)x.whenSpec!==void 0&&f.set(x.id,g(x.whenSpec,a,C));let v=M.$internal;if(v?.mergedConstraints)for(let[x,t]of Object.entries(v.mergedConstraints)){let d;if(typeof t.require=="function")try{d=t.require()?.type;}catch{}else t.require&&typeof t.require=="object"&&"type"in t.require&&(d=t.require.type);d&&g$1.set(d,x);}for(let x of b.resolverDefs){T.set(x.id,x.requirement);let t=x.meta?.moduleId??"";_.set(x.id,t);}}catch{}}function j(){if(C.clear(),k.clear(),!!M)try{let b=M.meta.byTag?.("pii")??[];for(let v of b)C.add(v.id);}catch{}}function V(b){let v=k.get(b);if(v)return v;let x=[];try{x=M?.meta.fact(b)?.tags??[];}catch{x=[];}return k.set(b,x),x}function w(b,v){for(;b.length>0&&b[0].timestamp<v-i;)b.shift();}function A(b){return b-K>=1e3&&(F=0,K=b),F>=n?(P+=1,false):(F+=1,true)}function D(b,v,x,t){let d=[...x].sort(),S=d.join("|"),O=v.cooldowns.get(S)??0;if(t-O<r||!A(t))return;let B=v.buffer.filter(G=>x.has(G.resolverId)),W=B[0]?.timestamp??t,Q=V(b),ne=Q.some(G=>C.has(b)||G==="pii"||G==="money")?"error":"warn",te=q(d),se=d.map(G=>_.get(G)??""),U={systemId:M?L(M):"",fact:b,participants:d,participantModules:se,count:B.length,windowMs:i,firstAt:W,lastAt:t,...te?{predicateOverlap:te}:{},severity:ne,factTags:Q,suppressedSinceLastEmit:P,rejectionSeqs:B.map(G=>G.seq)};P=0,v.cooldowns.set(S,t),v.activeLoop={participants:d,firstAt:W,lastClobberAt:t};try{M?.notify.clobberLoopDetected(z(U));}catch{}try{u(U);}catch(G){console.error(`[Directive] clobberLoopPlugin: onLoop callback threw for fact '${b}'`,G);}}function z(b){return {type:"resolver.clobber.loop.detected",systemId:b.systemId,fact:b.fact,participants:b.participants,participantModules:b.participantModules,count:b.count,windowMs:b.windowMs,firstAt:b.firstAt,lastAt:b.lastAt,...b.predicateOverlap?{predicateOverlap:b.predicateOverlap}:{},severity:b.severity,factTags:b.factTags,suppressedSinceLastEmit:b.suppressedSinceLastEmit,rejectionSeqs:b.rejectionSeqs}}function q(b){if(b.length<2)return;let[v,x]=b,t=v?T.get(v):void 0,d=x?T.get(x):void 0,S=t?g$1.get(t):void 0,O=d?g$1.get(d):void 0,B=S?f.get(S):void 0,W=O?f.get(O):void 0;return Pt(B,W)}function m(b){for(let v of [...N.keys()]){let x=N.get(v);if(!x?.activeLoop||b-x.activeLoop.lastClobberAt<c)continue;let t={systemId:M?L(M):"",fact:v,participants:x.activeLoop.participants,durationMs:b-x.activeLoop.firstAt,resolution:"no-recurrence-in-window"};x.activeLoop=null;try{M?.notify.clobberLoopResolved({type:"resolver.clobber.loop.resolved",systemId:t.systemId,fact:t.fact,participants:t.participants,durationMs:t.durationMs,resolution:t.resolution});}catch{}if(h)try{h(t);}catch(d){console.error(`[Directive] clobberLoopPlugin: onResolved callback threw for fact '${v}'`,d);}}}function L(b){try{return b.meta?.systemId??""}catch{return ""}}function E(b){let v=b.lastAt-b.firstAt,x=b.predicateOverlap?.verdict??"function-form-opaque",t=[`[directive] CLOBBER LOOP on \`${b.fact}\` (${b.count} clobbers in ${v}ms)`,` Participants: ${b.participants.join(", ")}`,` Predicate overlap: ${x}`];if((b.predicateOverlap?.verdict==="matched"||b.predicateOverlap?.verdict==="overlap")&&b.predicateOverlap.coFireClauses.length>0){t.push(" Both `when:` predicates fire when:");for(let d of b.predicateOverlap.coFireClauses.slice(0,5))t.push(` - ${d.path} ${d.op} ${JSON.stringify(d.value)}`);}return b.predicateOverlap?.verdict==="function-form-opaque"&&t.push(" (cannot prove overlap \u2014 at least one constraint uses function-form `when:`)"),b.predicateOverlap?.verdict==="indeterminate"&&t.push(" (cannot prove overlap \u2014 predicate uses non-comparable operator)"),t.push(" Suggested fix: add `priority:` to one, narrow `when:` to disjoint conditions, or merge into a single resolver."),t.join(`
2
2
  `)}return {plugin:{name:"clobber-loop",onInit(b){M=b,K=Date.now(),j(),H();},onDestroy(){M=null,N.clear(),f.clear(),g$1.clear(),T.clear(),_.clear(),C.clear(),k.clear(),F=0,P=0;},onDefinitionRegister(b,v){H(),j();},onDefinitionAssign(b,v){H();},onDefinitionUnregister(b,v){H();},onResolverWriteRejected(b){if(!$||!M||b.kind!=="rejection")return;let v=Date.now(),x=b.fact,t=N.get(x);if(t||(t={buffer:[],participants:new Set,cooldowns:new Map,activeLoop:null},N.set(x,t)),t.participants.size>=l)return;let d={timestamp:v,requirementId:b.req.id,resolverId:b.resolver,seq:R++};t.buffer.push(d),t.participants.add(b.resolver),w(t.buffer,v),m(v),t.activeLoop?.participants.includes(b.resolver)&&(t.activeLoop={...t.activeLoop,lastClobberAt:v});let S=new Set,O=new Set;for(let B of t.buffer)S.add(B.requirementId),O.add(B.resolverId);S.size>=s&&O.size>=2&&D(x,t,O,v);}},disable(){$=false;},enable(){$=true;},isEnabled(){return $}}}export{pe as CircuitBreakerOpenError,st as DEVTOOLS_EVENT_NAME,Ot as clobberAlertPlugin,$t as clobberLoopPlugin,Et as createAgentMetrics,kt as createCircuitBreaker,Dt as createOTLPExporter,wt as createObservability,bt as devtoolsPlugin,St as emitDevToolsEvent,lt as loggingPlugin,Ct as performancePlugin,xt as persistencePlugin};//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ export{a as createSystem}from'./chunk-SERVIHA3.js';import'./chunk-C3FW27S5.js';import'./chunk-LN5H74CU.js';import'./chunk-WD47DB52.js';import'./chunk-IZNOPHPL.js';//# sourceMappingURL=system-T6EZ6EYN.js.map
2
+ //# sourceMappingURL=system-T6EZ6EYN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"system-HOP37Z4V.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"system-T6EZ6EYN.js"}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkUDSP7U54_cjs=require('./chunk-UDSP7U54.cjs');require('./chunk-WU4AXN3P.cjs'),require('./chunk-S6W6Y44G.cjs'),require('./chunk-RD2HO5NZ.cjs'),require('./chunk-PTT4MWNL.cjs');Object.defineProperty(exports,"createSystem",{enumerable:true,get:function(){return chunkUDSP7U54_cjs.a}});//# sourceMappingURL=system-V7B4YUIR.cjs.map
2
+ //# sourceMappingURL=system-V7B4YUIR.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"system-VZUHL56W.cjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"system-V7B4YUIR.cjs"}
package/dist/testing.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkFCCJUQB2_cjs=require('./chunk-FCCJUQB2.cjs');require('./chunk-XKXTRVJF.cjs'),require('./chunk-S6W6Y44G.cjs'),require('./chunk-RD2HO5NZ.cjs'),require('./chunk-PTT4MWNL.cjs');async function R(){for(let e=0;e<10;e++)await Promise.resolve();}async function T(){for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();}async function D(e,s,r={}){let{totalTime:o=5e3,stepSize:c=10,maxIterations:l=1e3}=r,m=0,d=0;for(;m<o&&d<l;){if(await R(),e.inspect().inflight.length===0){await R();return}s(c),m+=c,d++;}let v=e.inspect();if(v.inflight.length>0){let f=v.inflight.map(p=>p.resolverId).join(", ");throw new Error(`[Directive] settleWithFakeTimers did not settle after ${o}ms. ${v.inflight.length} resolvers still inflight: ${f}`)}}function C(){let e=0,s=[];return {async advance(r){let o=e+r;for(;s.length>0&&s[0].time<=o;){let c=s.shift();e=c.time,c.callback(),await Promise.resolve();}e=o;},async next(){if(s.length===0)return;let r=s.shift();e=r.time,r.callback(),await Promise.resolve();},async runAll(){for(;s.length>0;)await this.next();},now(){return e},reset(){e=0,s.length=0;}}}function b(e){let s=typeof e=="string"?{requirement:(o=>o.type===e)}:e,r=s.calls??[];return {requirement:s.requirement??(o=>true),async resolve(o,c){if(r.push(o),s.delay&&await new Promise(l=>setTimeout(l,s.delay)),s.error)throw typeof s.error=="string"?new Error(s.error):s.error;s.resolve&&await s.resolve(o,c);}}}function E(e){let s=[],r=[];return {...{get calls(){return s},get pending(){return r},resolve(l){let m=r.shift();m&&m.resolve(l);},reject(l){let m=r.shift();m&&m.reject(l);},resolveAll(l){for(;r.length>0;)this.resolve(l);},rejectAll(l){for(;r.length>0;)this.reject(l);},reset(){s.length=0,r.length=0;}},handler:(l,m)=>(s.push(l),new Promise((d,v)=>{r.push({requirement:l,resolve:f=>d(f),reject:v});}))}}function P(e){return "module"in e?x(e):M(e)}function x(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[i,t]of Object.entries(e.mocks.resolvers)){let n=[];r.set(i,n),l[i]=b({...t,calls:n});}let m={...e.module,resolvers:{...e.module.resolvers,...l}},v=chunkFCCJUQB2_cjs.a({...e,module:m,plugins:[{name:"__test-tracking__",onFactSet:(i,t,n)=>{c.push({key:i,fullKey:i,namespace:void 0,previousValue:n,newValue:t,timestamp:Date.now()});},onRequirementCreated:i=>{o.push(i);}},...e.plugins??[]]}),f=v.dispatch.bind(v);return v.dispatch=i=>{s.push(i),f(i);},{...v,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(i=5e3){let t=Date.now(),n=async()=>{await new Promise(u=>setTimeout(u,0));let a=v.inspect();if(a.inflight.length>0){if(Date.now()-t>i){let u=a.inflight.map(g=>g.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${i}ms. ${a.inflight.length} resolvers still inflight: ${u}`)}return await new Promise(u=>setTimeout(u,10)),n()}};return n()},assertRequirement(i){if(!o.some(n=>n.requirement.type===i))throw new Error(`[Directive] Expected requirement of type "${i}" but none found`)},assertResolverCalled(i,t){let n=r.get(i)??[];if(t!==void 0){if(n.length!==t)throw new Error(`[Directive] Expected resolver "${i}" to be called ${t} times but was called ${n.length} times`)}else if(n.length===0)throw new Error(`[Directive] Expected resolver "${i}" to be called but it was not`)},assertFactSet(i,t){let n=c.filter(a=>a.key===i);if(n.length===0)throw new Error(`[Directive] Expected fact "${i}" to be set but it was not`);if(t!==void 0&&!n.some(u=>u.newValue===t)){let u=n.map(g=>JSON.stringify(g.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${i}" to be set to ${JSON.stringify(t)} but got: ${u}`)}},assertFactChanges(i,t){let n=c.filter(a=>a.key===i);if(n.length!==t)throw new Error(`[Directive] Expected fact "${i}" to change ${t} times but it changed ${n.length} times`)}}}function M(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[t,n]of Object.entries(e.mocks.resolvers)){let a=[];r.set(t,a),l[t]=b({...n,calls:a});}let m={};for(let[t,n]of Object.entries(e.modules))m[t]={...n,resolvers:{...n.resolvers,...l}};let d=new Set(Object.keys(e.modules)),f=chunkFCCJUQB2_cjs.a({...e,modules:m,plugins:[{name:"__test-tracking__",onFactSet:(t,n,a)=>{let g=t.indexOf("::"),y,h;if(g>0){let S=t.substring(0,g);d.has(S)?(y=S,h=t.substring(g+2)):h=t;}else h=t;c.push({key:h,fullKey:t,namespace:y,previousValue:a,newValue:n,timestamp:Date.now()});},onRequirementCreated:t=>{o.push(t);}},...e.plugins??[]]}),p=f.dispatch.bind(f);return f.dispatch=t=>{s.push(t),p(t);},{...f,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(t=5e3){let n=Date.now(),a=async()=>{await new Promise(g=>setTimeout(g,0));let u=f.inspect();if(u.inflight.length>0){if(Date.now()-n>t){let g=u.inflight.map(y=>y.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${t}ms. ${u.inflight.length} resolvers still inflight: ${g}`)}return await new Promise(g=>setTimeout(g,10)),a()}};return a()},assertRequirement(t){if(!o.some(a=>a.requirement.type===t))throw new Error(`[Directive] Expected requirement of type "${t}" but none found`)},assertResolverCalled(t,n){let a=r.get(t)??[];if(n!==void 0){if(a.length!==n)throw new Error(`[Directive] Expected resolver "${t}" to be called ${n} times but was called ${a.length} times`)}else if(a.length===0)throw new Error(`[Directive] Expected resolver "${t}" to be called but it was not`)},assertFactSet(t,n){let a=c.filter(u=>u.key===t);if(a.length===0)throw new Error(`[Directive] Expected fact "${t}" to be set but it was not`);if(n!==void 0&&!a.some(g=>g.newValue===n)){let g=a.map(y=>JSON.stringify(y.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${t}" to be set to ${JSON.stringify(n)} but got: ${g}`)}},assertFactChanges(t,n){let a=c.filter(u=>u.key===t);if(a.length!==n)throw new Error(`[Directive] Expected fact "${t}" to change ${n} times but it changed ${a.length} times`)}}}function O(e,s,r){if(!k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to be dynamic, but it is not.`)}function $(e,s,r){if(k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to NOT be dynamic, but it is.`)}function k(e,s,r){switch(s){case "constraint":return e.constraints.isDynamic(r);case "resolver":return e.resolvers.isDynamic(r);case "derivation":return e.derive.isDynamic(r);case "effect":return e.effects.isDynamic(r)}}function F(e){let s=new Set,r=new Set,o=new Set,c=new Set,l=null;return {async run(m){l=e.observe(d=>{switch(d.type){case "constraint.evaluate":d.active&&s.add(d.id);break;case "resolver.start":r.add(d.resolver);break;case "effect.run":o.add(d.id);break;case "derivation.compute":c.add(d.id);break}});try{await m();}finally{l?.(),l=null;}},report(){let m=e.inspect(),d=new Set(m.constraints.map(i=>i.id)),v=new Set(m.resolverDefs.map(i=>i.id)),f=new Set;for(let i of d)s.has(i)||f.add(i);let p=new Set;for(let i of v)r.has(i)||p.add(i);return {constraintsHit:s,constraintsMissed:f,resolversRun:r,resolversMissed:p,effectsRun:o,derivationsComputed:c,constraintCoverage:d.size===0?1:s.size/d.size,resolverCoverage:v.size===0?1:r.size/v.size,effectCoverage:m.effects.length===0?1:o.size/m.effects.length,derivationCoverage:m.derivations.length===0?1:c.size/m.derivations.length}}}}function I(e){let s=[],r=e.observe(o=>s.push(o));return {events:s,ofType(o){return s.filter(c=>c.type===o)},clear(){s.length=0;},dispose(){r();}}}exports.assertDynamic=O;exports.assertNotDynamic=$;exports.createCoverageTracker=F;exports.createFakeTimers=C;exports.createMockResolver=b;exports.createTestObserver=I;exports.createTestSystem=P;exports.flushAsync=T;exports.flushMicrotasks=R;exports.mockResolver=E;exports.settleWithFakeTimers=D;//# sourceMappingURL=testing.cjs.map
1
+ 'use strict';var chunkUDSP7U54_cjs=require('./chunk-UDSP7U54.cjs');require('./chunk-WU4AXN3P.cjs'),require('./chunk-S6W6Y44G.cjs'),require('./chunk-RD2HO5NZ.cjs'),require('./chunk-PTT4MWNL.cjs');async function R(){for(let e=0;e<10;e++)await Promise.resolve();}async function T(){for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();}async function D(e,s,r={}){let{totalTime:o=5e3,stepSize:c=10,maxIterations:l=1e3}=r,m=0,d=0;for(;m<o&&d<l;){if(await R(),e.inspect().inflight.length===0){await R();return}s(c),m+=c,d++;}let v=e.inspect();if(v.inflight.length>0){let f=v.inflight.map(p=>p.resolverId).join(", ");throw new Error(`[Directive] settleWithFakeTimers did not settle after ${o}ms. ${v.inflight.length} resolvers still inflight: ${f}`)}}function C(){let e=0,s=[];return {async advance(r){let o=e+r;for(;s.length>0&&s[0].time<=o;){let c=s.shift();e=c.time,c.callback(),await Promise.resolve();}e=o;},async next(){if(s.length===0)return;let r=s.shift();e=r.time,r.callback(),await Promise.resolve();},async runAll(){for(;s.length>0;)await this.next();},now(){return e},reset(){e=0,s.length=0;}}}function b(e){let s=typeof e=="string"?{requirement:(o=>o.type===e)}:e,r=s.calls??[];return {requirement:s.requirement??(o=>true),async resolve(o,c){if(r.push(o),s.delay&&await new Promise(l=>setTimeout(l,s.delay)),s.error)throw typeof s.error=="string"?new Error(s.error):s.error;s.resolve&&await s.resolve(o,c);}}}function E(e){let s=[],r=[];return {...{get calls(){return s},get pending(){return r},resolve(l){let m=r.shift();m&&m.resolve(l);},reject(l){let m=r.shift();m&&m.reject(l);},resolveAll(l){for(;r.length>0;)this.resolve(l);},rejectAll(l){for(;r.length>0;)this.reject(l);},reset(){s.length=0,r.length=0;}},handler:(l,m)=>(s.push(l),new Promise((d,v)=>{r.push({requirement:l,resolve:f=>d(f),reject:v});}))}}function P(e){return "module"in e?x(e):M(e)}function x(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[i,t]of Object.entries(e.mocks.resolvers)){let n=[];r.set(i,n),l[i]=b({...t,calls:n});}let m={...e.module,resolvers:{...e.module.resolvers,...l}},v=chunkUDSP7U54_cjs.a({...e,module:m,plugins:[{name:"__test-tracking__",onFactSet:(i,t,n)=>{c.push({key:i,fullKey:i,namespace:void 0,previousValue:n,newValue:t,timestamp:Date.now()});},onRequirementCreated:i=>{o.push(i);}},...e.plugins??[]]}),f=v.dispatch.bind(v);return v.dispatch=i=>{s.push(i),f(i);},{...v,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(i=5e3){let t=Date.now(),n=async()=>{await new Promise(u=>setTimeout(u,0));let a=v.inspect();if(a.inflight.length>0){if(Date.now()-t>i){let u=a.inflight.map(g=>g.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${i}ms. ${a.inflight.length} resolvers still inflight: ${u}`)}return await new Promise(u=>setTimeout(u,10)),n()}};return n()},assertRequirement(i){if(!o.some(n=>n.requirement.type===i))throw new Error(`[Directive] Expected requirement of type "${i}" but none found`)},assertResolverCalled(i,t){let n=r.get(i)??[];if(t!==void 0){if(n.length!==t)throw new Error(`[Directive] Expected resolver "${i}" to be called ${t} times but was called ${n.length} times`)}else if(n.length===0)throw new Error(`[Directive] Expected resolver "${i}" to be called but it was not`)},assertFactSet(i,t){let n=c.filter(a=>a.key===i);if(n.length===0)throw new Error(`[Directive] Expected fact "${i}" to be set but it was not`);if(t!==void 0&&!n.some(u=>u.newValue===t)){let u=n.map(g=>JSON.stringify(g.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${i}" to be set to ${JSON.stringify(t)} but got: ${u}`)}},assertFactChanges(i,t){let n=c.filter(a=>a.key===i);if(n.length!==t)throw new Error(`[Directive] Expected fact "${i}" to change ${t} times but it changed ${n.length} times`)}}}function M(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[t,n]of Object.entries(e.mocks.resolvers)){let a=[];r.set(t,a),l[t]=b({...n,calls:a});}let m={};for(let[t,n]of Object.entries(e.modules))m[t]={...n,resolvers:{...n.resolvers,...l}};let d=new Set(Object.keys(e.modules)),f=chunkUDSP7U54_cjs.a({...e,modules:m,plugins:[{name:"__test-tracking__",onFactSet:(t,n,a)=>{let g=t.indexOf("::"),y,h;if(g>0){let S=t.substring(0,g);d.has(S)?(y=S,h=t.substring(g+2)):h=t;}else h=t;c.push({key:h,fullKey:t,namespace:y,previousValue:a,newValue:n,timestamp:Date.now()});},onRequirementCreated:t=>{o.push(t);}},...e.plugins??[]]}),p=f.dispatch.bind(f);return f.dispatch=t=>{s.push(t),p(t);},{...f,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(t=5e3){let n=Date.now(),a=async()=>{await new Promise(g=>setTimeout(g,0));let u=f.inspect();if(u.inflight.length>0){if(Date.now()-n>t){let g=u.inflight.map(y=>y.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${t}ms. ${u.inflight.length} resolvers still inflight: ${g}`)}return await new Promise(g=>setTimeout(g,10)),a()}};return a()},assertRequirement(t){if(!o.some(a=>a.requirement.type===t))throw new Error(`[Directive] Expected requirement of type "${t}" but none found`)},assertResolverCalled(t,n){let a=r.get(t)??[];if(n!==void 0){if(a.length!==n)throw new Error(`[Directive] Expected resolver "${t}" to be called ${n} times but was called ${a.length} times`)}else if(a.length===0)throw new Error(`[Directive] Expected resolver "${t}" to be called but it was not`)},assertFactSet(t,n){let a=c.filter(u=>u.key===t);if(a.length===0)throw new Error(`[Directive] Expected fact "${t}" to be set but it was not`);if(n!==void 0&&!a.some(g=>g.newValue===n)){let g=a.map(y=>JSON.stringify(y.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${t}" to be set to ${JSON.stringify(n)} but got: ${g}`)}},assertFactChanges(t,n){let a=c.filter(u=>u.key===t);if(a.length!==n)throw new Error(`[Directive] Expected fact "${t}" to change ${n} times but it changed ${a.length} times`)}}}function O(e,s,r){if(!k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to be dynamic, but it is not.`)}function $(e,s,r){if(k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to NOT be dynamic, but it is.`)}function k(e,s,r){switch(s){case "constraint":return e.constraints.isDynamic(r);case "resolver":return e.resolvers.isDynamic(r);case "derivation":return e.derive.isDynamic(r);case "effect":return e.effects.isDynamic(r)}}function F(e){let s=new Set,r=new Set,o=new Set,c=new Set,l=null;return {async run(m){l=e.observe(d=>{switch(d.type){case "constraint.evaluate":d.active&&s.add(d.id);break;case "resolver.start":r.add(d.resolver);break;case "effect.run":o.add(d.id);break;case "derivation.compute":c.add(d.id);break}});try{await m();}finally{l?.(),l=null;}},report(){let m=e.inspect(),d=new Set(m.constraints.map(i=>i.id)),v=new Set(m.resolverDefs.map(i=>i.id)),f=new Set;for(let i of d)s.has(i)||f.add(i);let p=new Set;for(let i of v)r.has(i)||p.add(i);return {constraintsHit:s,constraintsMissed:f,resolversRun:r,resolversMissed:p,effectsRun:o,derivationsComputed:c,constraintCoverage:d.size===0?1:s.size/d.size,resolverCoverage:v.size===0?1:r.size/v.size,effectCoverage:m.effects.length===0?1:o.size/m.effects.length,derivationCoverage:m.derivations.length===0?1:c.size/m.derivations.length}}}}function I(e){let s=[],r=e.observe(o=>s.push(o));return {events:s,ofType(o){return s.filter(c=>c.type===o)},clear(){s.length=0;},dispose(){r();}}}exports.assertDynamic=O;exports.assertNotDynamic=$;exports.createCoverageTracker=F;exports.createFakeTimers=C;exports.createMockResolver=b;exports.createTestObserver=I;exports.createTestSystem=P;exports.flushAsync=T;exports.flushMicrotasks=R;exports.mockResolver=E;exports.settleWithFakeTimers=D;//# sourceMappingURL=testing.cjs.map
2
2
  //# sourceMappingURL=testing.cjs.map
package/dist/testing.js CHANGED
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-AFPLATPV.js';import'./chunk-WVP3GOY2.js';import'./chunk-LN5H74CU.js';import'./chunk-WD47DB52.js';import'./chunk-IZNOPHPL.js';async function R(){for(let e=0;e<10;e++)await Promise.resolve();}async function T(){for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();}async function D(e,s,r={}){let{totalTime:o=5e3,stepSize:c=10,maxIterations:l=1e3}=r,m=0,d=0;for(;m<o&&d<l;){if(await R(),e.inspect().inflight.length===0){await R();return}s(c),m+=c,d++;}let v=e.inspect();if(v.inflight.length>0){let f=v.inflight.map(p=>p.resolverId).join(", ");throw new Error(`[Directive] settleWithFakeTimers did not settle after ${o}ms. ${v.inflight.length} resolvers still inflight: ${f}`)}}function C(){let e=0,s=[];return {async advance(r){let o=e+r;for(;s.length>0&&s[0].time<=o;){let c=s.shift();e=c.time,c.callback(),await Promise.resolve();}e=o;},async next(){if(s.length===0)return;let r=s.shift();e=r.time,r.callback(),await Promise.resolve();},async runAll(){for(;s.length>0;)await this.next();},now(){return e},reset(){e=0,s.length=0;}}}function b(e){let s=typeof e=="string"?{requirement:(o=>o.type===e)}:e,r=s.calls??[];return {requirement:s.requirement??(o=>true),async resolve(o,c){if(r.push(o),s.delay&&await new Promise(l=>setTimeout(l,s.delay)),s.error)throw typeof s.error=="string"?new Error(s.error):s.error;s.resolve&&await s.resolve(o,c);}}}function E(e){let s=[],r=[];return {...{get calls(){return s},get pending(){return r},resolve(l){let m=r.shift();m&&m.resolve(l);},reject(l){let m=r.shift();m&&m.reject(l);},resolveAll(l){for(;r.length>0;)this.resolve(l);},rejectAll(l){for(;r.length>0;)this.reject(l);},reset(){s.length=0,r.length=0;}},handler:(l,m)=>(s.push(l),new Promise((d,v)=>{r.push({requirement:l,resolve:f=>d(f),reject:v});}))}}function P(e){return "module"in e?x(e):M(e)}function x(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[i,t]of Object.entries(e.mocks.resolvers)){let n=[];r.set(i,n),l[i]=b({...t,calls:n});}let m={...e.module,resolvers:{...e.module.resolvers,...l}},v=a({...e,module:m,plugins:[{name:"__test-tracking__",onFactSet:(i,t,n)=>{c.push({key:i,fullKey:i,namespace:void 0,previousValue:n,newValue:t,timestamp:Date.now()});},onRequirementCreated:i=>{o.push(i);}},...e.plugins??[]]}),f=v.dispatch.bind(v);return v.dispatch=i=>{s.push(i),f(i);},{...v,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(i=5e3){let t=Date.now(),n=async()=>{await new Promise(u=>setTimeout(u,0));let a=v.inspect();if(a.inflight.length>0){if(Date.now()-t>i){let u=a.inflight.map(g=>g.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${i}ms. ${a.inflight.length} resolvers still inflight: ${u}`)}return await new Promise(u=>setTimeout(u,10)),n()}};return n()},assertRequirement(i){if(!o.some(n=>n.requirement.type===i))throw new Error(`[Directive] Expected requirement of type "${i}" but none found`)},assertResolverCalled(i,t){let n=r.get(i)??[];if(t!==void 0){if(n.length!==t)throw new Error(`[Directive] Expected resolver "${i}" to be called ${t} times but was called ${n.length} times`)}else if(n.length===0)throw new Error(`[Directive] Expected resolver "${i}" to be called but it was not`)},assertFactSet(i,t){let n=c.filter(a=>a.key===i);if(n.length===0)throw new Error(`[Directive] Expected fact "${i}" to be set but it was not`);if(t!==void 0&&!n.some(u=>u.newValue===t)){let u=n.map(g=>JSON.stringify(g.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${i}" to be set to ${JSON.stringify(t)} but got: ${u}`)}},assertFactChanges(i,t){let n=c.filter(a=>a.key===i);if(n.length!==t)throw new Error(`[Directive] Expected fact "${i}" to change ${t} times but it changed ${n.length} times`)}}}function M(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[t,n]of Object.entries(e.mocks.resolvers)){let a=[];r.set(t,a),l[t]=b({...n,calls:a});}let m={};for(let[t,n]of Object.entries(e.modules))m[t]={...n,resolvers:{...n.resolvers,...l}};let d=new Set(Object.keys(e.modules)),f=a({...e,modules:m,plugins:[{name:"__test-tracking__",onFactSet:(t,n,a)=>{let g=t.indexOf("::"),y,h;if(g>0){let S=t.substring(0,g);d.has(S)?(y=S,h=t.substring(g+2)):h=t;}else h=t;c.push({key:h,fullKey:t,namespace:y,previousValue:a,newValue:n,timestamp:Date.now()});},onRequirementCreated:t=>{o.push(t);}},...e.plugins??[]]}),p=f.dispatch.bind(f);return f.dispatch=t=>{s.push(t),p(t);},{...f,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(t=5e3){let n=Date.now(),a=async()=>{await new Promise(g=>setTimeout(g,0));let u=f.inspect();if(u.inflight.length>0){if(Date.now()-n>t){let g=u.inflight.map(y=>y.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${t}ms. ${u.inflight.length} resolvers still inflight: ${g}`)}return await new Promise(g=>setTimeout(g,10)),a()}};return a()},assertRequirement(t){if(!o.some(a=>a.requirement.type===t))throw new Error(`[Directive] Expected requirement of type "${t}" but none found`)},assertResolverCalled(t,n){let a=r.get(t)??[];if(n!==void 0){if(a.length!==n)throw new Error(`[Directive] Expected resolver "${t}" to be called ${n} times but was called ${a.length} times`)}else if(a.length===0)throw new Error(`[Directive] Expected resolver "${t}" to be called but it was not`)},assertFactSet(t,n){let a=c.filter(u=>u.key===t);if(a.length===0)throw new Error(`[Directive] Expected fact "${t}" to be set but it was not`);if(n!==void 0&&!a.some(g=>g.newValue===n)){let g=a.map(y=>JSON.stringify(y.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${t}" to be set to ${JSON.stringify(n)} but got: ${g}`)}},assertFactChanges(t,n){let a=c.filter(u=>u.key===t);if(a.length!==n)throw new Error(`[Directive] Expected fact "${t}" to change ${n} times but it changed ${a.length} times`)}}}function O(e,s,r){if(!k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to be dynamic, but it is not.`)}function $(e,s,r){if(k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to NOT be dynamic, but it is.`)}function k(e,s,r){switch(s){case "constraint":return e.constraints.isDynamic(r);case "resolver":return e.resolvers.isDynamic(r);case "derivation":return e.derive.isDynamic(r);case "effect":return e.effects.isDynamic(r)}}function F(e){let s=new Set,r=new Set,o=new Set,c=new Set,l=null;return {async run(m){l=e.observe(d=>{switch(d.type){case "constraint.evaluate":d.active&&s.add(d.id);break;case "resolver.start":r.add(d.resolver);break;case "effect.run":o.add(d.id);break;case "derivation.compute":c.add(d.id);break}});try{await m();}finally{l?.(),l=null;}},report(){let m=e.inspect(),d=new Set(m.constraints.map(i=>i.id)),v=new Set(m.resolverDefs.map(i=>i.id)),f=new Set;for(let i of d)s.has(i)||f.add(i);let p=new Set;for(let i of v)r.has(i)||p.add(i);return {constraintsHit:s,constraintsMissed:f,resolversRun:r,resolversMissed:p,effectsRun:o,derivationsComputed:c,constraintCoverage:d.size===0?1:s.size/d.size,resolverCoverage:v.size===0?1:r.size/v.size,effectCoverage:m.effects.length===0?1:o.size/m.effects.length,derivationCoverage:m.derivations.length===0?1:c.size/m.derivations.length}}}}function I(e){let s=[],r=e.observe(o=>s.push(o));return {events:s,ofType(o){return s.filter(c=>c.type===o)},clear(){s.length=0;},dispose(){r();}}}export{O as assertDynamic,$ as assertNotDynamic,F as createCoverageTracker,C as createFakeTimers,b as createMockResolver,I as createTestObserver,P as createTestSystem,T as flushAsync,R as flushMicrotasks,E as mockResolver,D as settleWithFakeTimers};//# sourceMappingURL=testing.js.map
1
+ import {a}from'./chunk-SERVIHA3.js';import'./chunk-C3FW27S5.js';import'./chunk-LN5H74CU.js';import'./chunk-WD47DB52.js';import'./chunk-IZNOPHPL.js';async function R(){for(let e=0;e<10;e++)await Promise.resolve();}async function T(){for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();await new Promise(e=>setTimeout(e,0));for(let e=0;e<10;e++)await Promise.resolve();}async function D(e,s,r={}){let{totalTime:o=5e3,stepSize:c=10,maxIterations:l=1e3}=r,m=0,d=0;for(;m<o&&d<l;){if(await R(),e.inspect().inflight.length===0){await R();return}s(c),m+=c,d++;}let v=e.inspect();if(v.inflight.length>0){let f=v.inflight.map(p=>p.resolverId).join(", ");throw new Error(`[Directive] settleWithFakeTimers did not settle after ${o}ms. ${v.inflight.length} resolvers still inflight: ${f}`)}}function C(){let e=0,s=[];return {async advance(r){let o=e+r;for(;s.length>0&&s[0].time<=o;){let c=s.shift();e=c.time,c.callback(),await Promise.resolve();}e=o;},async next(){if(s.length===0)return;let r=s.shift();e=r.time,r.callback(),await Promise.resolve();},async runAll(){for(;s.length>0;)await this.next();},now(){return e},reset(){e=0,s.length=0;}}}function b(e){let s=typeof e=="string"?{requirement:(o=>o.type===e)}:e,r=s.calls??[];return {requirement:s.requirement??(o=>true),async resolve(o,c){if(r.push(o),s.delay&&await new Promise(l=>setTimeout(l,s.delay)),s.error)throw typeof s.error=="string"?new Error(s.error):s.error;s.resolve&&await s.resolve(o,c);}}}function E(e){let s=[],r=[];return {...{get calls(){return s},get pending(){return r},resolve(l){let m=r.shift();m&&m.resolve(l);},reject(l){let m=r.shift();m&&m.reject(l);},resolveAll(l){for(;r.length>0;)this.resolve(l);},rejectAll(l){for(;r.length>0;)this.reject(l);},reset(){s.length=0,r.length=0;}},handler:(l,m)=>(s.push(l),new Promise((d,v)=>{r.push({requirement:l,resolve:f=>d(f),reject:v});}))}}function P(e){return "module"in e?x(e):M(e)}function x(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[i,t]of Object.entries(e.mocks.resolvers)){let n=[];r.set(i,n),l[i]=b({...t,calls:n});}let m={...e.module,resolvers:{...e.module.resolvers,...l}},v=a({...e,module:m,plugins:[{name:"__test-tracking__",onFactSet:(i,t,n)=>{c.push({key:i,fullKey:i,namespace:void 0,previousValue:n,newValue:t,timestamp:Date.now()});},onRequirementCreated:i=>{o.push(i);}},...e.plugins??[]]}),f=v.dispatch.bind(v);return v.dispatch=i=>{s.push(i),f(i);},{...v,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(i=5e3){let t=Date.now(),n=async()=>{await new Promise(u=>setTimeout(u,0));let a=v.inspect();if(a.inflight.length>0){if(Date.now()-t>i){let u=a.inflight.map(g=>g.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${i}ms. ${a.inflight.length} resolvers still inflight: ${u}`)}return await new Promise(u=>setTimeout(u,10)),n()}};return n()},assertRequirement(i){if(!o.some(n=>n.requirement.type===i))throw new Error(`[Directive] Expected requirement of type "${i}" but none found`)},assertResolverCalled(i,t){let n=r.get(i)??[];if(t!==void 0){if(n.length!==t)throw new Error(`[Directive] Expected resolver "${i}" to be called ${t} times but was called ${n.length} times`)}else if(n.length===0)throw new Error(`[Directive] Expected resolver "${i}" to be called but it was not`)},assertFactSet(i,t){let n=c.filter(a=>a.key===i);if(n.length===0)throw new Error(`[Directive] Expected fact "${i}" to be set but it was not`);if(t!==void 0&&!n.some(u=>u.newValue===t)){let u=n.map(g=>JSON.stringify(g.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${i}" to be set to ${JSON.stringify(t)} but got: ${u}`)}},assertFactChanges(i,t){let n=c.filter(a=>a.key===i);if(n.length!==t)throw new Error(`[Directive] Expected fact "${i}" to change ${t} times but it changed ${n.length} times`)}}}function M(e){let s=[],r=new Map,o=[],c=[],l={};if(e.mocks?.resolvers)for(let[t,n]of Object.entries(e.mocks.resolvers)){let a=[];r.set(t,a),l[t]=b({...n,calls:a});}let m={};for(let[t,n]of Object.entries(e.modules))m[t]={...n,resolvers:{...n.resolvers,...l}};let d=new Set(Object.keys(e.modules)),f=a({...e,modules:m,plugins:[{name:"__test-tracking__",onFactSet:(t,n,a)=>{let g=t.indexOf("::"),y,h;if(g>0){let S=t.substring(0,g);d.has(S)?(y=S,h=t.substring(g+2)):h=t;}else h=t;c.push({key:h,fullKey:t,namespace:y,previousValue:a,newValue:n,timestamp:Date.now()});},onRequirementCreated:t=>{o.push(t);}},...e.plugins??[]]}),p=f.dispatch.bind(f);return f.dispatch=t=>{s.push(t),p(t);},{...f,eventHistory:s,resolverCalls:r,get allRequirements(){return o},getFactsHistory(){return [...c]},resetFactsHistory(){c.length=0;},async waitForIdle(t=5e3){let n=Date.now(),a=async()=>{await new Promise(g=>setTimeout(g,0));let u=f.inspect();if(u.inflight.length>0){if(Date.now()-n>t){let g=u.inflight.map(y=>y.id).join(", ");throw new Error(`[Directive] waitForIdle timed out after ${t}ms. ${u.inflight.length} resolvers still inflight: ${g}`)}return await new Promise(g=>setTimeout(g,10)),a()}};return a()},assertRequirement(t){if(!o.some(a=>a.requirement.type===t))throw new Error(`[Directive] Expected requirement of type "${t}" but none found`)},assertResolverCalled(t,n){let a=r.get(t)??[];if(n!==void 0){if(a.length!==n)throw new Error(`[Directive] Expected resolver "${t}" to be called ${n} times but was called ${a.length} times`)}else if(a.length===0)throw new Error(`[Directive] Expected resolver "${t}" to be called but it was not`)},assertFactSet(t,n){let a=c.filter(u=>u.key===t);if(a.length===0)throw new Error(`[Directive] Expected fact "${t}" to be set but it was not`);if(n!==void 0&&!a.some(g=>g.newValue===n)){let g=a.map(y=>JSON.stringify(y.newValue)).join(", ");throw new Error(`[Directive] Expected fact "${t}" to be set to ${JSON.stringify(n)} but got: ${g}`)}},assertFactChanges(t,n){let a=c.filter(u=>u.key===t);if(a.length!==n)throw new Error(`[Directive] Expected fact "${t}" to change ${n} times but it changed ${a.length} times`)}}}function O(e,s,r){if(!k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to be dynamic, but it is not.`)}function $(e,s,r){if(k(e,s,r))throw new Error(`[Directive] Expected ${s} "${r}" to NOT be dynamic, but it is.`)}function k(e,s,r){switch(s){case "constraint":return e.constraints.isDynamic(r);case "resolver":return e.resolvers.isDynamic(r);case "derivation":return e.derive.isDynamic(r);case "effect":return e.effects.isDynamic(r)}}function F(e){let s=new Set,r=new Set,o=new Set,c=new Set,l=null;return {async run(m){l=e.observe(d=>{switch(d.type){case "constraint.evaluate":d.active&&s.add(d.id);break;case "resolver.start":r.add(d.resolver);break;case "effect.run":o.add(d.id);break;case "derivation.compute":c.add(d.id);break}});try{await m();}finally{l?.(),l=null;}},report(){let m=e.inspect(),d=new Set(m.constraints.map(i=>i.id)),v=new Set(m.resolverDefs.map(i=>i.id)),f=new Set;for(let i of d)s.has(i)||f.add(i);let p=new Set;for(let i of v)r.has(i)||p.add(i);return {constraintsHit:s,constraintsMissed:f,resolversRun:r,resolversMissed:p,effectsRun:o,derivationsComputed:c,constraintCoverage:d.size===0?1:s.size/d.size,resolverCoverage:v.size===0?1:r.size/v.size,effectCoverage:m.effects.length===0?1:o.size/m.effects.length,derivationCoverage:m.derivations.length===0?1:c.size/m.derivations.length}}}}function I(e){let s=[],r=e.observe(o=>s.push(o));return {events:s,ofType(o){return s.filter(c=>c.type===o)},clear(){s.length=0;},dispose(){r();}}}export{O as assertDynamic,$ as assertNotDynamic,F as createCoverageTracker,C as createFakeTimers,b as createMockResolver,I as createTestObserver,P as createTestSystem,T as flushAsync,R as flushMicrotasks,E as mockResolver,D as settleWithFakeTimers};//# sourceMappingURL=testing.js.map
2
2
  //# sourceMappingURL=testing.js.map
package/dist/worker.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';function H(o){let{worker:c,onFactChange:T,onDerivationChange:y,onRequirementCreated:g,onRequirementMet:u,onError:n}=o,s=new Map,a=0,t=3e4;function i(e){let r=s.get(e);r?.timeoutHandle!==void 0&&clearTimeout(r.timeoutHandle);}let d=null,S=null,f=null,v=null;function k(e){return e?.(),null}function M(e,r){let p=s.get(e);p&&(i(e),p.resolve(r),s.delete(e));}function h(){d=k(d);}function O(){S=k(S);}function W(){f=k(f);}function C(){v=k(v);}function w(e){T?.(e.key,e.value,e.prev);}function D(e){y?.(e.key,e.value);}function P(e){g?.(e.requirement);}function q(e){u?.(e.requirementId,e.resolverId);}function _(e){n?.(e.error,e.source);}function A(e){M(e.requestId,e.snapshot);}function N(e){M(e.requestId,e.inspection);}function x(e){let r=s.get(e.requestId);r&&(i(e.requestId),e.success?r.resolve(void 0):r.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let r=e.data;switch(r.type){case "READY":return h();case "STARTED":return O();case "STOPPED":return W();case "DESTROYED":return C();case "FACT_CHANGED":return w(r);case "DERIVATION_CHANGED":return D(r);case "REQUIREMENT_CREATED":return P(r);case "REQUIREMENT_MET":return q(r);case "ERROR":return _(r);case "SNAPSHOT_RESULT":return A(r);case "INSPECT_RESULT":return N(r);case "SETTLE_RESULT":return x(r)}},c.onerror=e=>{let r=e&&typeof e=="object"&&"message"in e?String(e.message??"unknown error"):"unknown error";if(s.size>0){let p=new Error(`[Directive] worker errored: ${r}`);for(let[,E]of s)E.timeoutHandle!==void 0&&clearTimeout(E.timeoutHandle),E.reject(p);s.clear();}n?.(r,"worker");};function l(e){c.postMessage(e);}function m(e,r=t){return new Promise((p,E)=>{let I={resolve:p,reject:E};Number.isFinite(r)&&r>0&&(I.timeoutHandle=setTimeout(()=>{s.has(e.requestId)&&(s.delete(e.requestId),E(new Error(`[Directive] worker request timed out after ${r}ms`)));},r)),s.set(e.requestId,I),l(e);})}return {init(e){return new Promise(r=>{d=r,l({type:"INIT",config:e});})},start(){return new Promise(e=>{S=e,l({type:"START"});})},stop(){return new Promise(e=>{f=e,l({type:"STOP"});})},destroy(){return new Promise(e=>{v=e,l({type:"DESTROY"});})},setFact(e,r){l({type:"SET_FACT",key:e,value:r});},setFacts(e){l({type:"SET_FACTS",facts:e});},dispatch(e){l({type:"DISPATCH",event:e});},getSnapshot(e,r){let p=`snapshot-${++a}`;return m({type:"GET_SNAPSHOT",options:e,requestId:p},r??t)},inspect(e){let r=`inspect-${++a}`;return m({type:"INSPECT",requestId:r},e??t)},settle(e,r){let p=`settle-${++a}`;return m({type:"SETTLE",timeout:e,requestId:p},r??t)},terminate(){c.terminate();}}}var R=null;function b(){return R||(R=new Map),R}function L(o,c){b().set(o,c);}function U(){let o=null;async function c(t){let i=await F(t.config);return postMessage({type:"READY"}),i}function T(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function g(t){t.destroy(),postMessage({type:"DESTROYED"});}function u(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function n(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function a(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":T(o);break;case "STOP":y(o);break;case "DESTROY":g(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":u(o,t);break;case "INSPECT":n(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await a(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function F(o){let{createSystem:c}=await import('./system-VZUHL56W.cjs'),T=b(),y={};for(let n of o.moduleNames){let s=T.get(n);if(!s)throw new Error(`[Directive Worker] Module "${n}" not registered. Call registerWorkerModule('${n}', module) before handling messages.`);y[n]=s;}let u=c({modules:y,plugins:[{name:"__worker-tracking__",onFactSet:(n,s,a)=>{postMessage({type:"FACT_CHANGED",key:n,value:s,prev:a});},onDerivationCompute:(n,s)=>{postMessage({type:"DERIVATION_CHANGED",key:n,value:s});},onRequirementCreated:n=>{postMessage({type:"REQUIREMENT_CREATED",requirement:{...n.requirement,id:n.id}});},onRequirementMet:(n,s)=>{postMessage({type:"REQUIREMENT_MET",requirementId:n.id,resolverId:s});}}],history:o.history});return {start:()=>u.start(),stop:()=>u.stop(),destroy:()=>u.destroy(),setFact:(n,s)=>{u.facts[n]=s;},setFacts:n=>{let s=u.facts;if(s.$store?.batch)s.$store.batch(()=>{for(let[a,t]of Object.entries(n))s[a]=t;});else for(let[a,t]of Object.entries(n))s[a]=t;},dispatch:n=>{u.dispatch(n);},getSnapshot:n=>u.getDistributableSnapshot(n),inspect:()=>u.inspect(),settle:n=>u.settle(n)}}exports.createWorkerClient=H;exports.getWorkerModuleRegistry=b;exports.handleWorkerMessages=U;exports.registerWorkerModule=L;//# sourceMappingURL=worker.cjs.map
1
+ 'use strict';function H(o){let{worker:c,onFactChange:T,onDerivationChange:y,onRequirementCreated:g,onRequirementMet:u,onError:n}=o,s=new Map,a=0,t=3e4;function i(e){let r=s.get(e);r?.timeoutHandle!==void 0&&clearTimeout(r.timeoutHandle);}let d=null,S=null,f=null,v=null;function k(e){return e?.(),null}function M(e,r){let p=s.get(e);p&&(i(e),p.resolve(r),s.delete(e));}function h(){d=k(d);}function O(){S=k(S);}function W(){f=k(f);}function C(){v=k(v);}function w(e){T?.(e.key,e.value,e.prev);}function D(e){y?.(e.key,e.value);}function P(e){g?.(e.requirement);}function q(e){u?.(e.requirementId,e.resolverId);}function _(e){n?.(e.error,e.source);}function A(e){M(e.requestId,e.snapshot);}function N(e){M(e.requestId,e.inspection);}function x(e){let r=s.get(e.requestId);r&&(i(e.requestId),e.success?r.resolve(void 0):r.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let r=e.data;switch(r.type){case "READY":return h();case "STARTED":return O();case "STOPPED":return W();case "DESTROYED":return C();case "FACT_CHANGED":return w(r);case "DERIVATION_CHANGED":return D(r);case "REQUIREMENT_CREATED":return P(r);case "REQUIREMENT_MET":return q(r);case "ERROR":return _(r);case "SNAPSHOT_RESULT":return A(r);case "INSPECT_RESULT":return N(r);case "SETTLE_RESULT":return x(r)}},c.onerror=e=>{let r=e&&typeof e=="object"&&"message"in e?String(e.message??"unknown error"):"unknown error";if(s.size>0){let p=new Error(`[Directive] worker errored: ${r}`);for(let[,E]of s)E.timeoutHandle!==void 0&&clearTimeout(E.timeoutHandle),E.reject(p);s.clear();}n?.(r,"worker");};function l(e){c.postMessage(e);}function m(e,r=t){return new Promise((p,E)=>{let I={resolve:p,reject:E};Number.isFinite(r)&&r>0&&(I.timeoutHandle=setTimeout(()=>{s.has(e.requestId)&&(s.delete(e.requestId),E(new Error(`[Directive] worker request timed out after ${r}ms`)));},r)),s.set(e.requestId,I),l(e);})}return {init(e){return new Promise(r=>{d=r,l({type:"INIT",config:e});})},start(){return new Promise(e=>{S=e,l({type:"START"});})},stop(){return new Promise(e=>{f=e,l({type:"STOP"});})},destroy(){return new Promise(e=>{v=e,l({type:"DESTROY"});})},setFact(e,r){l({type:"SET_FACT",key:e,value:r});},setFacts(e){l({type:"SET_FACTS",facts:e});},dispatch(e){l({type:"DISPATCH",event:e});},getSnapshot(e,r){let p=`snapshot-${++a}`;return m({type:"GET_SNAPSHOT",options:e,requestId:p},r??t)},inspect(e){let r=`inspect-${++a}`;return m({type:"INSPECT",requestId:r},e??t)},settle(e,r){let p=`settle-${++a}`;return m({type:"SETTLE",timeout:e,requestId:p},r??t)},terminate(){c.terminate();}}}var R=null;function b(){return R||(R=new Map),R}function L(o,c){b().set(o,c);}function U(){let o=null;async function c(t){let i=await F(t.config);return postMessage({type:"READY"}),i}function T(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function g(t){t.destroy(),postMessage({type:"DESTROYED"});}function u(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function n(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function a(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":T(o);break;case "STOP":y(o);break;case "DESTROY":g(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":u(o,t);break;case "INSPECT":n(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await a(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function F(o){let{createSystem:c}=await import('./system-V7B4YUIR.cjs'),T=b(),y={};for(let n of o.moduleNames){let s=T.get(n);if(!s)throw new Error(`[Directive Worker] Module "${n}" not registered. Call registerWorkerModule('${n}', module) before handling messages.`);y[n]=s;}let u=c({modules:y,plugins:[{name:"__worker-tracking__",onFactSet:(n,s,a)=>{postMessage({type:"FACT_CHANGED",key:n,value:s,prev:a});},onDerivationCompute:(n,s)=>{postMessage({type:"DERIVATION_CHANGED",key:n,value:s});},onRequirementCreated:n=>{postMessage({type:"REQUIREMENT_CREATED",requirement:{...n.requirement,id:n.id}});},onRequirementMet:(n,s)=>{postMessage({type:"REQUIREMENT_MET",requirementId:n.id,resolverId:s});}}],history:o.history});return {start:()=>u.start(),stop:()=>u.stop(),destroy:()=>u.destroy(),setFact:(n,s)=>{u.facts[n]=s;},setFacts:n=>{let s=u.facts;if(s.$store?.batch)s.$store.batch(()=>{for(let[a,t]of Object.entries(n))s[a]=t;});else for(let[a,t]of Object.entries(n))s[a]=t;},dispatch:n=>{u.dispatch(n);},getSnapshot:n=>u.getDistributableSnapshot(n),inspect:()=>u.inspect(),settle:n=>u.settle(n)}}exports.createWorkerClient=H;exports.getWorkerModuleRegistry=b;exports.handleWorkerMessages=U;exports.registerWorkerModule=L;//# sourceMappingURL=worker.cjs.map
2
2
  //# sourceMappingURL=worker.cjs.map
package/dist/worker.js CHANGED
@@ -1,2 +1,2 @@
1
- function H(o){let{worker:c,onFactChange:T,onDerivationChange:y,onRequirementCreated:g,onRequirementMet:u,onError:n}=o,s=new Map,a=0,t=3e4;function i(e){let r=s.get(e);r?.timeoutHandle!==void 0&&clearTimeout(r.timeoutHandle);}let d=null,S=null,f=null,v=null;function k(e){return e?.(),null}function M(e,r){let p=s.get(e);p&&(i(e),p.resolve(r),s.delete(e));}function h(){d=k(d);}function O(){S=k(S);}function W(){f=k(f);}function C(){v=k(v);}function w(e){T?.(e.key,e.value,e.prev);}function D(e){y?.(e.key,e.value);}function P(e){g?.(e.requirement);}function q(e){u?.(e.requirementId,e.resolverId);}function _(e){n?.(e.error,e.source);}function A(e){M(e.requestId,e.snapshot);}function N(e){M(e.requestId,e.inspection);}function x(e){let r=s.get(e.requestId);r&&(i(e.requestId),e.success?r.resolve(void 0):r.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let r=e.data;switch(r.type){case "READY":return h();case "STARTED":return O();case "STOPPED":return W();case "DESTROYED":return C();case "FACT_CHANGED":return w(r);case "DERIVATION_CHANGED":return D(r);case "REQUIREMENT_CREATED":return P(r);case "REQUIREMENT_MET":return q(r);case "ERROR":return _(r);case "SNAPSHOT_RESULT":return A(r);case "INSPECT_RESULT":return N(r);case "SETTLE_RESULT":return x(r)}},c.onerror=e=>{let r=e&&typeof e=="object"&&"message"in e?String(e.message??"unknown error"):"unknown error";if(s.size>0){let p=new Error(`[Directive] worker errored: ${r}`);for(let[,E]of s)E.timeoutHandle!==void 0&&clearTimeout(E.timeoutHandle),E.reject(p);s.clear();}n?.(r,"worker");};function l(e){c.postMessage(e);}function m(e,r=t){return new Promise((p,E)=>{let I={resolve:p,reject:E};Number.isFinite(r)&&r>0&&(I.timeoutHandle=setTimeout(()=>{s.has(e.requestId)&&(s.delete(e.requestId),E(new Error(`[Directive] worker request timed out after ${r}ms`)));},r)),s.set(e.requestId,I),l(e);})}return {init(e){return new Promise(r=>{d=r,l({type:"INIT",config:e});})},start(){return new Promise(e=>{S=e,l({type:"START"});})},stop(){return new Promise(e=>{f=e,l({type:"STOP"});})},destroy(){return new Promise(e=>{v=e,l({type:"DESTROY"});})},setFact(e,r){l({type:"SET_FACT",key:e,value:r});},setFacts(e){l({type:"SET_FACTS",facts:e});},dispatch(e){l({type:"DISPATCH",event:e});},getSnapshot(e,r){let p=`snapshot-${++a}`;return m({type:"GET_SNAPSHOT",options:e,requestId:p},r??t)},inspect(e){let r=`inspect-${++a}`;return m({type:"INSPECT",requestId:r},e??t)},settle(e,r){let p=`settle-${++a}`;return m({type:"SETTLE",timeout:e,requestId:p},r??t)},terminate(){c.terminate();}}}var R=null;function b(){return R||(R=new Map),R}function L(o,c){b().set(o,c);}function U(){let o=null;async function c(t){let i=await F(t.config);return postMessage({type:"READY"}),i}function T(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function g(t){t.destroy(),postMessage({type:"DESTROYED"});}function u(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function n(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function a(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":T(o);break;case "STOP":y(o);break;case "DESTROY":g(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":u(o,t);break;case "INSPECT":n(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await a(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function F(o){let{createSystem:c}=await import('./system-HOP37Z4V.js'),T=b(),y={};for(let n of o.moduleNames){let s=T.get(n);if(!s)throw new Error(`[Directive Worker] Module "${n}" not registered. Call registerWorkerModule('${n}', module) before handling messages.`);y[n]=s;}let u=c({modules:y,plugins:[{name:"__worker-tracking__",onFactSet:(n,s,a)=>{postMessage({type:"FACT_CHANGED",key:n,value:s,prev:a});},onDerivationCompute:(n,s)=>{postMessage({type:"DERIVATION_CHANGED",key:n,value:s});},onRequirementCreated:n=>{postMessage({type:"REQUIREMENT_CREATED",requirement:{...n.requirement,id:n.id}});},onRequirementMet:(n,s)=>{postMessage({type:"REQUIREMENT_MET",requirementId:n.id,resolverId:s});}}],history:o.history});return {start:()=>u.start(),stop:()=>u.stop(),destroy:()=>u.destroy(),setFact:(n,s)=>{u.facts[n]=s;},setFacts:n=>{let s=u.facts;if(s.$store?.batch)s.$store.batch(()=>{for(let[a,t]of Object.entries(n))s[a]=t;});else for(let[a,t]of Object.entries(n))s[a]=t;},dispatch:n=>{u.dispatch(n);},getSnapshot:n=>u.getDistributableSnapshot(n),inspect:()=>u.inspect(),settle:n=>u.settle(n)}}export{H as createWorkerClient,b as getWorkerModuleRegistry,U as handleWorkerMessages,L as registerWorkerModule};//# sourceMappingURL=worker.js.map
1
+ function H(o){let{worker:c,onFactChange:T,onDerivationChange:y,onRequirementCreated:g,onRequirementMet:u,onError:n}=o,s=new Map,a=0,t=3e4;function i(e){let r=s.get(e);r?.timeoutHandle!==void 0&&clearTimeout(r.timeoutHandle);}let d=null,S=null,f=null,v=null;function k(e){return e?.(),null}function M(e,r){let p=s.get(e);p&&(i(e),p.resolve(r),s.delete(e));}function h(){d=k(d);}function O(){S=k(S);}function W(){f=k(f);}function C(){v=k(v);}function w(e){T?.(e.key,e.value,e.prev);}function D(e){y?.(e.key,e.value);}function P(e){g?.(e.requirement);}function q(e){u?.(e.requirementId,e.resolverId);}function _(e){n?.(e.error,e.source);}function A(e){M(e.requestId,e.snapshot);}function N(e){M(e.requestId,e.inspection);}function x(e){let r=s.get(e.requestId);r&&(i(e.requestId),e.success?r.resolve(void 0):r.reject(new Error(e.error||"Settle failed")),s.delete(e.requestId));}c.onmessage=e=>{let r=e.data;switch(r.type){case "READY":return h();case "STARTED":return O();case "STOPPED":return W();case "DESTROYED":return C();case "FACT_CHANGED":return w(r);case "DERIVATION_CHANGED":return D(r);case "REQUIREMENT_CREATED":return P(r);case "REQUIREMENT_MET":return q(r);case "ERROR":return _(r);case "SNAPSHOT_RESULT":return A(r);case "INSPECT_RESULT":return N(r);case "SETTLE_RESULT":return x(r)}},c.onerror=e=>{let r=e&&typeof e=="object"&&"message"in e?String(e.message??"unknown error"):"unknown error";if(s.size>0){let p=new Error(`[Directive] worker errored: ${r}`);for(let[,E]of s)E.timeoutHandle!==void 0&&clearTimeout(E.timeoutHandle),E.reject(p);s.clear();}n?.(r,"worker");};function l(e){c.postMessage(e);}function m(e,r=t){return new Promise((p,E)=>{let I={resolve:p,reject:E};Number.isFinite(r)&&r>0&&(I.timeoutHandle=setTimeout(()=>{s.has(e.requestId)&&(s.delete(e.requestId),E(new Error(`[Directive] worker request timed out after ${r}ms`)));},r)),s.set(e.requestId,I),l(e);})}return {init(e){return new Promise(r=>{d=r,l({type:"INIT",config:e});})},start(){return new Promise(e=>{S=e,l({type:"START"});})},stop(){return new Promise(e=>{f=e,l({type:"STOP"});})},destroy(){return new Promise(e=>{v=e,l({type:"DESTROY"});})},setFact(e,r){l({type:"SET_FACT",key:e,value:r});},setFacts(e){l({type:"SET_FACTS",facts:e});},dispatch(e){l({type:"DISPATCH",event:e});},getSnapshot(e,r){let p=`snapshot-${++a}`;return m({type:"GET_SNAPSHOT",options:e,requestId:p},r??t)},inspect(e){let r=`inspect-${++a}`;return m({type:"INSPECT",requestId:r},e??t)},settle(e,r){let p=`settle-${++a}`;return m({type:"SETTLE",timeout:e,requestId:p},r??t)},terminate(){c.terminate();}}}var R=null;function b(){return R||(R=new Map),R}function L(o,c){b().set(o,c);}function U(){let o=null;async function c(t){let i=await F(t.config);return postMessage({type:"READY"}),i}function T(t){t.start(),postMessage({type:"STARTED"});}function y(t){t.stop(),postMessage({type:"STOPPED"});}function g(t){t.destroy(),postMessage({type:"DESTROYED"});}function u(t,i){let d=t.getSnapshot(i.options);postMessage({type:"SNAPSHOT_RESULT",requestId:i.requestId,snapshot:d});}function n(t,i){let d=t.inspect();postMessage({type:"INSPECT_RESULT",requestId:i.requestId,inspection:d});}async function s(t,i){try{await t.settle(i.timeout),postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:!0});}catch(d){postMessage({type:"SETTLE_RESULT",requestId:i.requestId,success:false,error:d instanceof Error?d.message:String(d)});}}async function a(t){if(t.type==="INIT"){o=await c(t);return}if(o)switch(t.type){case "START":T(o);break;case "STOP":y(o);break;case "DESTROY":g(o),o=null;break;case "SET_FACT":o.setFact(t.key,t.value);break;case "SET_FACTS":o.setFacts(t.facts);break;case "DISPATCH":o.dispatch(t.event);break;case "GET_SNAPSHOT":u(o,t);break;case "INSPECT":n(o,t);break;case "SETTLE":await s(o,t);break}}self.onmessage=async t=>{try{await a(t.data);}catch(i){postMessage({type:"ERROR",error:i instanceof Error?i.message:String(i),source:t.data.type});}};}async function F(o){let{createSystem:c}=await import('./system-T6EZ6EYN.js'),T=b(),y={};for(let n of o.moduleNames){let s=T.get(n);if(!s)throw new Error(`[Directive Worker] Module "${n}" not registered. Call registerWorkerModule('${n}', module) before handling messages.`);y[n]=s;}let u=c({modules:y,plugins:[{name:"__worker-tracking__",onFactSet:(n,s,a)=>{postMessage({type:"FACT_CHANGED",key:n,value:s,prev:a});},onDerivationCompute:(n,s)=>{postMessage({type:"DERIVATION_CHANGED",key:n,value:s});},onRequirementCreated:n=>{postMessage({type:"REQUIREMENT_CREATED",requirement:{...n.requirement,id:n.id}});},onRequirementMet:(n,s)=>{postMessage({type:"REQUIREMENT_MET",requirementId:n.id,resolverId:s});}}],history:o.history});return {start:()=>u.start(),stop:()=>u.stop(),destroy:()=>u.destroy(),setFact:(n,s)=>{u.facts[n]=s;},setFacts:n=>{let s=u.facts;if(s.$store?.batch)s.$store.batch(()=>{for(let[a,t]of Object.entries(n))s[a]=t;});else for(let[a,t]of Object.entries(n))s[a]=t;},dispatch:n=>{u.dispatch(n);},getSnapshot:n=>u.getDistributableSnapshot(n),inspect:()=>u.inspect(),settle:n=>u.settle(n)}}export{H as createWorkerClient,b as getWorkerModuleRegistry,U as handleWorkerMessages,L as registerWorkerModule};//# sourceMappingURL=worker.js.map
2
2
  //# sourceMappingURL=worker.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@directive-run/core",
3
- "version": "1.23.0",
3
+ "version": "1.24.0",
4
4
  "imports": {
5
5
  "#is-development": {
6
6
  "production": "./src/dev-false.ts",
@@ -93,7 +93,7 @@
93
93
  "scripts": {
94
94
  "build": "tsup",
95
95
  "dev": "tsup --watch",
96
- "test": "vitest run",
96
+ "test": "cd ../.. && vitest run packages/core/",
97
97
  "typecheck": "tsc --noEmit",
98
98
  "clean": "rm -rf dist"
99
99
  }