@directive-run/ai 1.17.1 → 1.18.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.
- package/dist/{chunk-7DPTXZZI.cjs → chunk-7EJN6TYX.cjs} +4 -4
- package/dist/chunk-7EJN6TYX.cjs.map +1 -0
- package/dist/chunk-D72LIBH2.js +16 -0
- package/dist/chunk-D72LIBH2.js.map +1 -0
- package/dist/{chunk-FN4GUZAI.js → chunk-G7CRWJT7.js} +4 -4
- package/dist/chunk-G7CRWJT7.js.map +1 -0
- package/dist/{chunk-56LYSE63.js → chunk-RHJAMXLS.js} +3 -3
- package/dist/{chunk-56LYSE63.js.map → chunk-RHJAMXLS.js.map} +1 -1
- package/dist/chunk-UZKM276C.cjs +16 -0
- package/dist/chunk-UZKM276C.cjs.map +1 -0
- package/dist/{chunk-PB276BX2.cjs → chunk-XGHNOSXT.cjs} +4 -4
- package/dist/{chunk-PB276BX2.cjs.map → chunk-XGHNOSXT.cjs.map} +1 -1
- package/dist/index.cjs +15 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +85 -2
- package/dist/index.d.ts +85 -2
- package/dist/index.js +15 -15
- package/dist/index.js.map +1 -1
- package/dist/multi-agent-orchestrator-OX2TKD5Y.cjs +2 -0
- package/dist/{multi-agent-orchestrator-KFYIDKTF.cjs.map → multi-agent-orchestrator-OX2TKD5Y.cjs.map} +1 -1
- package/dist/{multi-agent-orchestrator-ZHSMWIKP.js → multi-agent-orchestrator-RMTLPKB4.js} +2 -2
- package/dist/{multi-agent-orchestrator-ZHSMWIKP.js.map → multi-agent-orchestrator-RMTLPKB4.js.map} +1 -1
- package/dist/multi-agent.cjs +1 -1
- package/dist/multi-agent.d.cts +2 -2
- package/dist/multi-agent.d.ts +2 -2
- package/dist/multi-agent.js +1 -1
- package/dist/{orchestrator-types-ZK9lv5Sm.d.ts → orchestrator-types-D5cFRt3s.d.ts} +115 -0
- package/dist/{orchestrator-types-CbNE7Rjp.d.cts → orchestrator-types-Dlfcvdxw.d.cts} +115 -0
- package/dist/testing.cjs +1 -1
- package/dist/testing.d.cts +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-7DPTXZZI.cjs.map +0 -1
- package/dist/chunk-D5APTMCT.cjs +0 -16
- package/dist/chunk-D5APTMCT.cjs.map +0 -1
- package/dist/chunk-FN4GUZAI.js.map +0 -1
- package/dist/chunk-YT4QN3KO.js +0 -16
- package/dist/chunk-YT4QN3KO.js.map +0 -1
- package/dist/multi-agent-orchestrator-KFYIDKTF.cjs +0 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {ba}from'./chunk-
|
|
1
|
+
import {ba}from'./chunk-G7CRWJT7.js';function w(s){return s.replace(/[^a-zA-Z0-9]/g,"_")}function N(s){return s.replace(/[\r\n]+/g," ").replace(/[[\](){}|<>"]/g,e=>`#${e.charCodeAt(0)};`)}var O={square:["[","]"],round:["(",")"],stadium:["([","])"],hexagon:["{{","}}"],circle:["((","))"]};function M(s,e,c,l){let n;c==="task"?n=l?.task??"hexagon":c==="agent"?n=l?.agent??"square":n=l?.virtual??"circle";let[o,a]=O[n];return `${s}${o}${N(e)}${a}`}function P(s){let e=new Map;for(let n of s)e.set(n,(e.get(n)??0)+1);let c=new Map,l=[];for(let n of s){let o=w(n);if(e.get(n)>1){let a=(c.get(n)??0)+1;c.set(n,a),l.push({id:`${o}_${a}`,label:`${n} #${a}`});}else l.push({id:o,label:n});}return l}function G(s){let e=new Map,c=new Map;for(let o of Object.keys(s))e.has(o)||e.set(o,0),c.has(o)||c.set(o,[]);for(let[o,a]of Object.entries(s))for(let r of a.deps??[])c.get(r).push(o),e.set(o,(e.get(o)??0)+1);let l=[];for(let[o,a]of e)a===0&&l.push(o);l.sort();let n=[];for(;l.length>0;){let o=l.shift();n.push(o);let a=c.get(o)??[];a.sort();for(let r of a){let g=e.get(r)-1;if(e.set(r,g),g===0){let t=l.findIndex(i=>i>r);t===-1?l.push(r):l.splice(t,0,r);}}}return n}function U(s){let e=s;if(e.type==="parallel"&&typeof e.merge=="function"||e.type==="sequential"&&typeof e.transform=="function"||e.type==="supervisor"&&typeof e.extract=="function"||e.type==="dag"&&typeof e.merge=="function"||e.type==="reflect"&&typeof e.parseEvaluation=="function"||e.type==="race"&&typeof e.extract=="function"||e.type==="debate"&&typeof e.extract=="function"||e.type==="goal"&&(typeof e.when=="function"||typeof e.satisfaction=="function"||typeof e.extract=="function"))return false;if(e.type==="dag"&&e.nodes)for(let c of Object.values(e.nodes)){let l=c;if(typeof l.when=="function"||typeof l.transform=="function")return false}if(e.type==="goal"&&e.nodes)for(let c of Object.values(e.nodes)){let l=c;if(typeof l.buildInput=="function"||typeof l.extractOutput=="function")return false}return true}function q(s,e){let c=[];return e&&c.push(`%%{init: {'theme': '${e}'}}%%`),c.push(`graph ${s}`),c.join(`
|
|
2
2
|
`)}var C=new Set(["parallel","sequential","supervisor","dag","reflect","race","debate","goal"]);function B(s,e,c){let l=P(s.handlers),n=M("__input","Input","virtual",e),o=M("__merge","Merge","virtual",e),a=[];for(let r of l){let g=c?.has(r.label)?"task":"agent",t=M(r.id,r.label,g,e);a.push(` ${n} --> ${t}`),a.push(` ${t} --> ${o}`);}return a}function L(s,e,c){return s.handlers.length===0?[]:[` ${s.handlers.map(o=>({id:w(o),label:o})).map(o=>M(o.id,o.label,c?.has(o.label)?"task":"agent",e)).join(" --> ")}`]}function j(s,e){let c=w(s.supervisor),l=M(c,s.supervisor,"agent",e),n=[];for(let o of s.workers){let a=w(o),r=M(a,o,"agent",e);n.push(` ${l} -->|delegate| ${r}`),n.push(` ${r} -->|result| ${l}`);}return n}function F(s,e,c){let l=G(s.nodes),n=[],o=new Set;for(let a of l){let r=s.nodes[a],g=w(a),t=r.handler,i=c?.has(r.handler)?"task":"agent";(!r.deps||r.deps.length===0)&&(o.has(g)||(n.push(` ${M(g,t,i,e)}`),o.add(g)));let f=[...r.deps??[]].sort();for(let u of f){let b=w(u),y=s.nodes[u],d=y.handler,p=c?.has(y.handler)?"task":"agent",h=M(b,d,p,e),m=M(g,t,i,e);n.push(` ${h} --> ${m}`),o.add(b),o.add(g);}}return n}function _(s,e,c){let l=P(s.handlers),n=M("__input","Input","virtual",e),o=M("__output","Output","virtual",e),a=[];for(let r of l){let g=c?.has(r.label)?"task":"agent",t=M(r.id,r.label,g,e);a.push(` ${n} --> ${t}`),a.push(` ${t} -.-> ${o}`);}return a}function z(s,e,c){let l=w(s.handler),n=w(s.evaluator),o=c?.has(s.handler)?"task":"agent",a=M(l,s.handler,o,e),r=M(n,s.evaluator,"agent",e),g=M("__output","Output","virtual",e);return [` ${a} --> ${r}`,` ${r} -->|feedback| ${a}`,` ${r} -->|pass| ${g}`]}function H(s,e,c){let l=Object.entries(s.nodes),n=[],o=new Map;for(let[t,i]of l)for(let f of i.produces)o.set(f,t);let a=new Set,r=new Set,g=[...l].sort(([t],[i])=>t.localeCompare(i));for(let[t,i]of g){let f=w(t),u=[...i.requires??[]].sort();if(u.length===0&&!a.has(f)){let b=c?.has(i.handler)?"task":"agent";n.push(` ${M(f,i.handler,b,e)}`),a.add(f);}for(let b of u){let y=o.get(b);if(y&&y!==t){let d=s.nodes[y];if(!d)continue;let p=`${y}->${t}`;if(!r.has(p)){let h=w(y),m=c?.has(d.handler)?"task":"agent",S=c?.has(i.handler)?"task":"agent",v=M(h,d.handler,m,e),A=M(f,i.handler,S,e);n.push(` ${v} -->|${N(b)}| ${A}`),a.add(h),a.add(f),r.add(p);}}}}for(let[t,i]of g){let f=w(t);if(!a.has(f)){let u=c?.has(i.handler)?"task":"agent";n.push(` ${M(f,i.handler,u,e)}`),a.add(f);}}return n}function Q(s,e,c){let l=P(s.handlers),n=w(s.evaluator),o=M(n,s.evaluator,"agent",e),a=M("__output","Output","virtual",e),r=[];for(let g of l){let t=c?.has(g.label)?"task":"agent",i=M(g.id,g.label,t,e);r.push(` ${i} --> ${o}`),r.push(` ${o} -->|next round| ${i}`);}return r.push(` ${o} --> ${a}`),r}function Y(s,e){let c=e?.direction??"LR",l=e?.shapes,n=e?.taskIds,o=U(s)?s:ba(s);if(!C.has(o.type))throw new Error(`[Directive] patternToMermaid: unknown pattern type "${o.type}"`);let a=q(c,e?.theme),r=[];switch(o.type){case "parallel":r=B(o,l,n);break;case "sequential":r=L(o,l,n);break;case "supervisor":r=j(o,l);break;case "dag":r=F(o,l,n);break;case "race":r=_(o,l,n);break;case "reflect":r=z(o,l,n);break;case "debate":r=Q(o,l,n);break;case "goal":r=H(o,l,n);break}return `${a}
|
|
3
3
|
${r.join(`
|
|
4
4
|
`)}
|
|
5
|
-
`}function k(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function V(s={}){let{maxHistory:e=1e3,defaultTtlMs:c=36e5,maxPendingPerAgent:l=100,persistence:n,onDelivery:o,onDeliveryError:a}=s,r=new Map,g=[],t=new Map,i=new Map;function f(d,p){if(p.types&&!p.types.includes(d.type)||p.from&&!(Array.isArray(p.from)?p.from:[p.from]).includes(d.from))return false;if(p.topics){let h=d.topic;if(h&&!p.topics.includes(h))return false}return !(p.priority&&d.priority&&!p.priority.includes(d.priority)||p.custom&&!p.custom(d))}function u(d){return d.ttlMs?Date.now()-d.timestamp>d.ttlMs:false}function b(d){return d.to==="*"?Array.from(r.keys()):Array.isArray(d.to)?d.to:[d.to]}async function y(d){if(u(d))return;let p=b(d),h=[],m=[];for(let S of p){let v=r.get(S)??[];if(v.length===0){let A=i.get(S)??[];for(A.push(d);A.length>l;)A.shift();i.set(S,A);continue}for(let A of v)(!A.filter||f(d,A.filter))&&m.push(Promise.resolve(A.handler(d)).then(()=>{h.push(S);},x=>{a?.(d,x instanceof Error?x:new Error(String(x)));}));}m.length>0&&await Promise.allSettled(m),h.length>0&&o?.(d,h),n&&await n.save(d);}return {publish(d){let p={...d,id:k(),timestamp:Date.now(),priority:d.priority??"normal",ttlMs:d.ttlMs??c};for(g.push(p),t.set(p.id,p);g.length>e;){let h=g.shift();h&&t.delete(h.id);}return y(p).catch(h=>{let m=h instanceof Error?h:new Error(String(h));a?a(p,m):console.error("[Directive MessageBus] Delivery error:",m);}),p.id},subscribe(d,p,h){let m=k(),S={id:m,agentId:d,handler:p,filter:h,unsubscribe:()=>{let x=r.get(d)??[],E=x.findIndex(R=>R.id===m);E>=0&&x.splice(E,1);}},v=r.get(d)??[];v.push(S),r.set(d,v);let A=i.get(d)??[];i.delete(d);for(let x of A)if(!h||f(x,h)){let E=p(x);E instanceof Promise&&E.catch(R=>{let D=R instanceof Error?R:new Error(String(R));a?a(x,D):console.error("[Directive MessageBus] Pending delivery error:",D);});}return S},getHistory(d,p=100){let h=g.filter(m=>!u(m));return d&&(h=h.filter(m=>f(m,d))),h.slice(-p)},getMessage(d){let p=t.get(d);if(!(p&&u(p)))return p},getPending(d){return (i.get(d)??[]).filter(h=>!u(h))},clear(){g.length=0,t.clear(),i.clear();},destroy(){g.length=0,t.clear(),i.clear(),r.clear();}}}function J(s){let{bus:e,agents:c={},defaultTimeout:l=3e4,onAgentOnline:n,onAgentOffline:o}=s,a=new Map,r=new Map;for(let[t,i]of Object.entries(c))a.set(t,{...i,id:t,status:"offline",lastSeen:Date.now()});function g(t){if(t.type!=="RESPONSE"&&t.type!=="DELEGATION_RESULT")return;let i=t.correlationId??t.replyTo;if(!i)return;let f=r.get(i);f&&(clearTimeout(f.timer),r.delete(i),f.resolve(t));}return {register(t,i){let f=!a.has(t)||a.get(t)?.status==="offline";a.set(t,{...i,id:t,status:"online",lastSeen:Date.now()}),f&&n?.(t);},unregister(t){let i=a.get(t);i&&(i.status="offline",o?.(t));},getAgent(t){return a.get(t)},getAgents(){return Array.from(a.values())},findByCapability(t){return Array.from(a.values()).filter(i=>i.capabilities.includes(t)&&i.status==="online")},send(t,i,f){let u=a.get(t);return u&&(u.lastSeen=Date.now(),u.status="online"),e.publish({...f,from:t,to:i,type:f.type??"CUSTOM"})},async request(t,i,f,u,b=l){return new Promise((y,d)=>{let p=k(),h=e.subscribe(t,S=>{(S.correlationId===p||S.replyTo===p)&&(h.unsubscribe(),g(S));},{types:["RESPONSE"]}),m=setTimeout(()=>{h.unsubscribe(),r.delete(p),d(new Error(`[Directive Communication] Request timeout after ${b}ms`));},b);r.set(p,{resolve:y,reject:d,timer:m}),e.publish({type:"REQUEST",from:t,to:i,action:f,payload:u,timeout:b,correlationId:p});})},async delegate(t,i,f,u){return new Promise((b,y)=>{let d=k(),p=e.subscribe(t,m=>{(m.correlationId===d||m.replyTo===d)&&(p.unsubscribe(),g(m));},{types:["DELEGATION_RESULT"]}),h=setTimeout(()=>{p.unsubscribe(),r.delete(d),y(new Error(`[Directive Communication] Delegation timeout after ${l}ms`));},l);r.set(d,{resolve:b,reject:y,timer:h}),e.publish({type:"DELEGATION",from:t,to:i,task:f,context:u,correlationId:d});})},async query(t,i,f,u){return new Promise((b,y)=>{let d=k(),p=e.subscribe(t,m=>{(m.correlationId===d||m.replyTo===d)&&(p.unsubscribe(),g(m));},{types:["RESPONSE"]}),h=setTimeout(()=>{p.unsubscribe(),r.delete(d),y(new Error(`[Directive Communication] Query timeout after ${l}ms`));},l);r.set(d,{resolve:b,reject:y,timer:h}),e.publish({type:"QUERY",from:t,to:i,question:f,context:u,correlationId:d});})},broadcast(t,i){return e.publish({...i,from:t,to:"*",type:i.type??"INFORM"})},listen(t,i,f){let u=a.get(t);return u&&(u.status="online",u.lastSeen=Date.now(),n?.(t)),e.subscribe(t,i,f)},getBus(){return e},destroy(){for(let[,t]of r)clearTimeout(t.timer);r.clear(),a.clear();}}}function Z(s,e){let c=new Map,l=s.listen(e,async n=>{if(n.type==="REQUEST"){let o=n,a=c.get(o.action),r;if(a)try{let g=await a(o.payload);r={type:"RESPONSE",success:g.success,result:g.result,error:g.error};}catch(g){r={type:"RESPONSE",success:false,error:g instanceof Error?g.message:String(g)};}else r={type:"RESPONSE",success:false,error:`Unknown action: ${o.action}`};s.send(e,n.from,{...r,correlationId:n.correlationId??n.id,replyTo:n.correlationId??n.id});}},{types:["REQUEST"]});return {onRequest(n,o){c.set(n,o);},offRequest(n){c.delete(n);},destroy(){l.unsubscribe(),c.clear();}}}function X(s,e){let c=null,l=s.listen(e,async n=>{if(n.type==="DELEGATION"&&c){let o=n,a=Date.now(),r;try{let g=await c(o.task,o.context);r={type:"DELEGATION_RESULT",success:g.success,result:g.result,error:g.error,metrics:g.metrics??{durationMs:Date.now()-a}};}catch(g){r={type:"DELEGATION_RESULT",success:false,error:g instanceof Error?g.message:String(g),metrics:{durationMs:Date.now()-a}};}s.send(e,n.from,{...r,correlationId:n.correlationId??n.id,replyTo:n.correlationId??n.id});}},{types:["DELEGATION"]});return {onDelegation(n){c=n;},offDelegation(){c=null;},destroy(){l.unsubscribe(),c=null;}}}function ee(s,e){let c=new Map,l=s.listen(e,n=>{if(n.type==="UPDATE"){let o=n,a=c.get(o.topic)??[];for(let r of a)r(o.content);}},{types:["UPDATE"]});return {subscribe(n,o){let a=new Map;for(let r of n){let g=c.get(r)??[],t=i=>o(r,i);a.set(r,t),g.push(t),c.set(r,g);}return s.broadcast(e,{type:"SUBSCRIBE",topics:n}),()=>{for(let[r,g]of a){let t=c.get(r);if(t){let i=t.indexOf(g);i>=0&&t.splice(i,1),t.length===0&&c.delete(r);}}a.clear(),s.broadcast(e,{type:"UNSUBSCRIBE",topics:n});}},publish(n,o){s.broadcast(e,{type:"UPDATE",topic:n,content:o});},destroy(){l.unsubscribe(),c.clear();}}}function T(s){return Number.isFinite(s)?s:0}function $(s){let e=Object.keys(s),c=new Map;for(let[u,b]of Object.entries(s))for(let y of b.produces){if(c.has(y))throw new Error(`[Directive Goal] Fact key "${y}" is produced by both "${c.get(y)}" and "${u}". Each fact key must have exactly one producer.`);c.set(y,u);}let l=[],n=new Map,o=new Map;for(let u of e)n.set(u,0),o.set(u,[]);for(let[u,b]of Object.entries(s))for(let y of b.requires??[]){let d=c.get(y);d&&d!==u&&(l.push({from:d,to:u,factKey:y}),o.get(d).push(u),n.set(u,(n.get(u)??0)+1));}let a=[];for(let[u,b]of n)b===0&&a.push(u);let r=[],g=0;for(;g<a.length;){let u=a[g++];r.push(u);for(let b of o.get(u)??[]){let y=(n.get(b)??1)-1;n.set(b,y),y===0&&a.push(b);}}if(r.length!==e.length){let u=new Set(r),b=e.filter(y=>!u.has(y));throw new Error(`[Directive Goal] Circular dependency detected among agents: ${b.join(", ")}. Review their produces/requires declarations.`)}let t=r.filter(u=>(s[u].requires??[]).every(d=>!c.has(d)||c.get(d)===u)),i=new Set;for(let u of l)i.add(u.from);let f=e.filter(u=>!i.has(u));return {order:r,edges:l,roots:t,leaves:f,producers:c}}function ne(s){let e=$(s);return {order:[...e.order],edges:[...e.edges],roots:[...e.roots],leaves:[...e.leaves],producers:new Map(e.producers)}}function se(s){let e=[],c=[];Object.keys(s).length===0&&e.push("No agents declared");for(let[n,o]of Object.entries(s))o.produces.length===0&&c.push(`Agent "${n}" has no produces \u2014 it will never contribute`);let l=new Set;for(let n of Object.values(s))for(let o of n.produces)l.add(o);for(let[n,o]of Object.entries(s))for(let a of o.requires??[])l.has(a)||c.push(`Agent "${n}" requires "${a}" which no agent produces \u2014 must be in initial facts`);try{$(s);}catch(n){e.push(n instanceof Error?n.message:String(n));}return {valid:e.length===0,errors:e,warnings:c}}function re(s,e=[],c=50){let l=$(s),n=new Set;for(let i of Object.values(s))for(let f of i.produces)n.add(f);let o=[];for(let i of Object.values(s))for(let f of i.requires??[])n.has(f)||o.push(f);let a=new Set(e),r=new Set,g=[];for(let i=1;i<=c;i++){let f=l.order.filter(b=>r.has(b)?false:(s[b].requires??[]).every(p=>a.has(p)));if(f.length===0)break;let u=[];for(let b of f){r.add(b);for(let y of s[b].produces)a.has(y)||(u.push(y),a.add(y));}g.push({step:i,agents:f,availableFacts:[...a],producedFacts:u});}let t=Object.keys(s).filter(i=>!r.has(i));return {steps:g,unreachableAgents:t,externalDeps:[...new Set(o)],feasible:t.length===0}}function oe(s){let e=s.stepMetrics.map(t=>{let i=T(t.satisfaction),f=T(t.satisfactionDelta),u=t.nodesRun.join(", "),b=t.factsProduced.length>0?t.factsProduced.join(", "):"none",y=+T(i-f).toFixed(3),d=f>=0?`+${f.toFixed(3)}`:f.toFixed(3),p=`Step ${t.step}: Ran ${u}. Produced: ${b}. Satisfaction: ${y} \u2192 ${i.toFixed(3)} (${d}). ${t.tokensConsumed} tokens, ${t.durationMs}ms.`;return {step:t.step,agents:t.nodesRun,factsProduced:t.factsProduced,satisfaction:i,satisfactionDelta:f,durationMs:t.durationMs,tokensConsumed:t.tokensConsumed,description:p}}),c=s.relaxations.map(t=>{let i;switch(t.strategy){case "allow_rerun":i=`Step ${t.step}: Applied relaxation "${t.label}" \u2014 re-enabled completed nodes for another run.`;break;case "inject_facts":i=`Step ${t.step}: Applied relaxation "${t.label}" \u2014 injected fact values to unblock dependencies.`;break;case "accept_partial":i=`Step ${t.step}: Applied relaxation "${t.label}" \u2014 accepted current facts as partial result.`;break;case "alternative_nodes":i=`Step ${t.step}: Applied relaxation "${t.label}" \u2014 added alternative nodes to the graph.`;break;case "custom":i=`Step ${t.step}: Applied relaxation "${t.label}" \u2014 ran custom recovery logic.`;break;default:i=`Step ${t.step}: Applied relaxation "${t.label}" (${t.strategy}).`;}return {step:t.step,label:t.label,strategy:t.strategy,description:i}}),l=s.stepMetrics.length>0?T(s.stepMetrics[0].satisfaction-s.stepMetrics[0].satisfactionDelta).toFixed(3):"0",n=s.stepMetrics.length>0?T(s.stepMetrics[s.stepMetrics.length-1].satisfaction).toFixed(3):"0",o=s.achieved?"Goal achieved":"Goal not achieved",a=s.relaxations.length>0?` ${s.relaxations.length} relaxation(s) applied.`:"",r=s.error?` Error: ${s.error}`:"",g=`${o} in ${s.steps} step(s) (${s.totalTokens.toLocaleString()} tokens, ${s.durationMs}ms). Satisfaction: ${l} \u2192 ${n}.${a}${r}`;return {achieved:s.achieved,summary:g,steps:e,relaxations:c,totalTokens:s.totalTokens,durationMs:s.durationMs}}export{Y as a,V as b,J as c,Z as d,X as e,ee as f,ne as g,se as h,re as i,oe as j};//# sourceMappingURL=chunk-56LYSE63.js.map
|
|
6
|
-
//# sourceMappingURL=chunk-
|
|
5
|
+
`}function k(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function V(s={}){let{maxHistory:e=1e3,defaultTtlMs:c=36e5,maxPendingPerAgent:l=100,persistence:n,onDelivery:o,onDeliveryError:a}=s,r=new Map,g=[],t=new Map,i=new Map;function f(d,p){if(p.types&&!p.types.includes(d.type)||p.from&&!(Array.isArray(p.from)?p.from:[p.from]).includes(d.from))return false;if(p.topics){let h=d.topic;if(h&&!p.topics.includes(h))return false}return !(p.priority&&d.priority&&!p.priority.includes(d.priority)||p.custom&&!p.custom(d))}function u(d){return d.ttlMs?Date.now()-d.timestamp>d.ttlMs:false}function b(d){return d.to==="*"?Array.from(r.keys()):Array.isArray(d.to)?d.to:[d.to]}async function y(d){if(u(d))return;let p=b(d),h=[],m=[];for(let S of p){let v=r.get(S)??[];if(v.length===0){let A=i.get(S)??[];for(A.push(d);A.length>l;)A.shift();i.set(S,A);continue}for(let A of v)(!A.filter||f(d,A.filter))&&m.push(Promise.resolve(A.handler(d)).then(()=>{h.push(S);},x=>{a?.(d,x instanceof Error?x:new Error(String(x)));}));}m.length>0&&await Promise.allSettled(m),h.length>0&&o?.(d,h),n&&await n.save(d);}return {publish(d){let p={...d,id:k(),timestamp:Date.now(),priority:d.priority??"normal",ttlMs:d.ttlMs??c};for(g.push(p),t.set(p.id,p);g.length>e;){let h=g.shift();h&&t.delete(h.id);}return y(p).catch(h=>{let m=h instanceof Error?h:new Error(String(h));a?a(p,m):console.error("[Directive MessageBus] Delivery error:",m);}),p.id},subscribe(d,p,h){let m=k(),S={id:m,agentId:d,handler:p,filter:h,unsubscribe:()=>{let x=r.get(d)??[],E=x.findIndex(R=>R.id===m);E>=0&&x.splice(E,1);}},v=r.get(d)??[];v.push(S),r.set(d,v);let A=i.get(d)??[];i.delete(d);for(let x of A)if(!h||f(x,h)){let E=p(x);E instanceof Promise&&E.catch(R=>{let D=R instanceof Error?R:new Error(String(R));a?a(x,D):console.error("[Directive MessageBus] Pending delivery error:",D);});}return S},getHistory(d,p=100){let h=g.filter(m=>!u(m));return d&&(h=h.filter(m=>f(m,d))),h.slice(-p)},getMessage(d){let p=t.get(d);if(!(p&&u(p)))return p},getPending(d){return (i.get(d)??[]).filter(h=>!u(h))},clear(){g.length=0,t.clear(),i.clear();},destroy(){g.length=0,t.clear(),i.clear(),r.clear();}}}function J(s){let{bus:e,agents:c={},defaultTimeout:l=3e4,onAgentOnline:n,onAgentOffline:o}=s,a=new Map,r=new Map;for(let[t,i]of Object.entries(c))a.set(t,{...i,id:t,status:"offline",lastSeen:Date.now()});function g(t){if(t.type!=="RESPONSE"&&t.type!=="DELEGATION_RESULT")return;let i=t.correlationId??t.replyTo;if(!i)return;let f=r.get(i);f&&(clearTimeout(f.timer),r.delete(i),f.resolve(t));}return {register(t,i){let f=!a.has(t)||a.get(t)?.status==="offline";a.set(t,{...i,id:t,status:"online",lastSeen:Date.now()}),f&&n?.(t);},unregister(t){let i=a.get(t);i&&(i.status="offline",o?.(t));},getAgent(t){return a.get(t)},getAgents(){return Array.from(a.values())},findByCapability(t){return Array.from(a.values()).filter(i=>i.capabilities.includes(t)&&i.status==="online")},send(t,i,f){let u=a.get(t);return u&&(u.lastSeen=Date.now(),u.status="online"),e.publish({...f,from:t,to:i,type:f.type??"CUSTOM"})},async request(t,i,f,u,b=l){return new Promise((y,d)=>{let p=k(),h=e.subscribe(t,S=>{(S.correlationId===p||S.replyTo===p)&&(h.unsubscribe(),g(S));},{types:["RESPONSE"]}),m=setTimeout(()=>{h.unsubscribe(),r.delete(p),d(new Error(`[Directive Communication] Request timeout after ${b}ms`));},b);r.set(p,{resolve:y,reject:d,timer:m}),e.publish({type:"REQUEST",from:t,to:i,action:f,payload:u,timeout:b,correlationId:p});})},async delegate(t,i,f,u){return new Promise((b,y)=>{let d=k(),p=e.subscribe(t,m=>{(m.correlationId===d||m.replyTo===d)&&(p.unsubscribe(),g(m));},{types:["DELEGATION_RESULT"]}),h=setTimeout(()=>{p.unsubscribe(),r.delete(d),y(new Error(`[Directive Communication] Delegation timeout after ${l}ms`));},l);r.set(d,{resolve:b,reject:y,timer:h}),e.publish({type:"DELEGATION",from:t,to:i,task:f,context:u,correlationId:d});})},async query(t,i,f,u){return new Promise((b,y)=>{let d=k(),p=e.subscribe(t,m=>{(m.correlationId===d||m.replyTo===d)&&(p.unsubscribe(),g(m));},{types:["RESPONSE"]}),h=setTimeout(()=>{p.unsubscribe(),r.delete(d),y(new Error(`[Directive Communication] Query timeout after ${l}ms`));},l);r.set(d,{resolve:b,reject:y,timer:h}),e.publish({type:"QUERY",from:t,to:i,question:f,context:u,correlationId:d});})},broadcast(t,i){return e.publish({...i,from:t,to:"*",type:i.type??"INFORM"})},listen(t,i,f){let u=a.get(t);return u&&(u.status="online",u.lastSeen=Date.now(),n?.(t)),e.subscribe(t,i,f)},getBus(){return e},destroy(){for(let[,t]of r)clearTimeout(t.timer);r.clear(),a.clear();}}}function Z(s,e){let c=new Map,l=s.listen(e,async n=>{if(n.type==="REQUEST"){let o=n,a=c.get(o.action),r;if(a)try{let g=await a(o.payload);r={type:"RESPONSE",success:g.success,result:g.result,error:g.error};}catch(g){r={type:"RESPONSE",success:false,error:g instanceof Error?g.message:String(g)};}else r={type:"RESPONSE",success:false,error:`Unknown action: ${o.action}`};s.send(e,n.from,{...r,correlationId:n.correlationId??n.id,replyTo:n.correlationId??n.id});}},{types:["REQUEST"]});return {onRequest(n,o){c.set(n,o);},offRequest(n){c.delete(n);},destroy(){l.unsubscribe(),c.clear();}}}function X(s,e){let c=null,l=s.listen(e,async n=>{if(n.type==="DELEGATION"&&c){let o=n,a=Date.now(),r;try{let g=await c(o.task,o.context);r={type:"DELEGATION_RESULT",success:g.success,result:g.result,error:g.error,metrics:g.metrics??{durationMs:Date.now()-a}};}catch(g){r={type:"DELEGATION_RESULT",success:false,error:g instanceof Error?g.message:String(g),metrics:{durationMs:Date.now()-a}};}s.send(e,n.from,{...r,correlationId:n.correlationId??n.id,replyTo:n.correlationId??n.id});}},{types:["DELEGATION"]});return {onDelegation(n){c=n;},offDelegation(){c=null;},destroy(){l.unsubscribe(),c=null;}}}function ee(s,e){let c=new Map,l=s.listen(e,n=>{if(n.type==="UPDATE"){let o=n,a=c.get(o.topic)??[];for(let r of a)r(o.content);}},{types:["UPDATE"]});return {subscribe(n,o){let a=new Map;for(let r of n){let g=c.get(r)??[],t=i=>o(r,i);a.set(r,t),g.push(t),c.set(r,g);}return s.broadcast(e,{type:"SUBSCRIBE",topics:n}),()=>{for(let[r,g]of a){let t=c.get(r);if(t){let i=t.indexOf(g);i>=0&&t.splice(i,1),t.length===0&&c.delete(r);}}a.clear(),s.broadcast(e,{type:"UNSUBSCRIBE",topics:n});}},publish(n,o){s.broadcast(e,{type:"UPDATE",topic:n,content:o});},destroy(){l.unsubscribe(),c.clear();}}}function T(s){return Number.isFinite(s)?s:0}function $(s){let e=Object.keys(s),c=new Map;for(let[u,b]of Object.entries(s))for(let y of b.produces){if(c.has(y))throw new Error(`[Directive Goal] Fact key "${y}" is produced by both "${c.get(y)}" and "${u}". Each fact key must have exactly one producer.`);c.set(y,u);}let l=[],n=new Map,o=new Map;for(let u of e)n.set(u,0),o.set(u,[]);for(let[u,b]of Object.entries(s))for(let y of b.requires??[]){let d=c.get(y);d&&d!==u&&(l.push({from:d,to:u,factKey:y}),o.get(d).push(u),n.set(u,(n.get(u)??0)+1));}let a=[];for(let[u,b]of n)b===0&&a.push(u);let r=[],g=0;for(;g<a.length;){let u=a[g++];r.push(u);for(let b of o.get(u)??[]){let y=(n.get(b)??1)-1;n.set(b,y),y===0&&a.push(b);}}if(r.length!==e.length){let u=new Set(r),b=e.filter(y=>!u.has(y));throw new Error(`[Directive Goal] Circular dependency detected among agents: ${b.join(", ")}. Review their produces/requires declarations.`)}let t=r.filter(u=>(s[u].requires??[]).every(d=>!c.has(d)||c.get(d)===u)),i=new Set;for(let u of l)i.add(u.from);let f=e.filter(u=>!i.has(u));return {order:r,edges:l,roots:t,leaves:f,producers:c}}function ne(s){let e=$(s);return {order:[...e.order],edges:[...e.edges],roots:[...e.roots],leaves:[...e.leaves],producers:new Map(e.producers)}}function se(s){let e=[],c=[];Object.keys(s).length===0&&e.push("No agents declared");for(let[n,o]of Object.entries(s))o.produces.length===0&&c.push(`Agent "${n}" has no produces \u2014 it will never contribute`);let l=new Set;for(let n of Object.values(s))for(let o of n.produces)l.add(o);for(let[n,o]of Object.entries(s))for(let a of o.requires??[])l.has(a)||c.push(`Agent "${n}" requires "${a}" which no agent produces \u2014 must be in initial facts`);try{$(s);}catch(n){e.push(n instanceof Error?n.message:String(n));}return {valid:e.length===0,errors:e,warnings:c}}function re(s,e=[],c=50){let l=$(s),n=new Set;for(let i of Object.values(s))for(let f of i.produces)n.add(f);let o=[];for(let i of Object.values(s))for(let f of i.requires??[])n.has(f)||o.push(f);let a=new Set(e),r=new Set,g=[];for(let i=1;i<=c;i++){let f=l.order.filter(b=>r.has(b)?false:(s[b].requires??[]).every(p=>a.has(p)));if(f.length===0)break;let u=[];for(let b of f){r.add(b);for(let y of s[b].produces)a.has(y)||(u.push(y),a.add(y));}g.push({step:i,agents:f,availableFacts:[...a],producedFacts:u});}let t=Object.keys(s).filter(i=>!r.has(i));return {steps:g,unreachableAgents:t,externalDeps:[...new Set(o)],feasible:t.length===0}}function oe(s){let e=s.stepMetrics.map(t=>{let i=T(t.satisfaction),f=T(t.satisfactionDelta),u=t.nodesRun.join(", "),b=t.factsProduced.length>0?t.factsProduced.join(", "):"none",y=+T(i-f).toFixed(3),d=f>=0?`+${f.toFixed(3)}`:f.toFixed(3),p=`Step ${t.step}: Ran ${u}. Produced: ${b}. Satisfaction: ${y} \u2192 ${i.toFixed(3)} (${d}). ${t.tokensConsumed} tokens, ${t.durationMs}ms.`;return {step:t.step,agents:t.nodesRun,factsProduced:t.factsProduced,satisfaction:i,satisfactionDelta:f,durationMs:t.durationMs,tokensConsumed:t.tokensConsumed,description:p}}),c=s.relaxations.map(t=>{let i;switch(t.strategy){case "allow_rerun":i=`Step ${t.step}: Applied relaxation "${t.label}" \u2014 re-enabled completed nodes for another run.`;break;case "inject_facts":i=`Step ${t.step}: Applied relaxation "${t.label}" \u2014 injected fact values to unblock dependencies.`;break;case "accept_partial":i=`Step ${t.step}: Applied relaxation "${t.label}" \u2014 accepted current facts as partial result.`;break;case "alternative_nodes":i=`Step ${t.step}: Applied relaxation "${t.label}" \u2014 added alternative nodes to the graph.`;break;case "custom":i=`Step ${t.step}: Applied relaxation "${t.label}" \u2014 ran custom recovery logic.`;break;default:i=`Step ${t.step}: Applied relaxation "${t.label}" (${t.strategy}).`;}return {step:t.step,label:t.label,strategy:t.strategy,description:i}}),l=s.stepMetrics.length>0?T(s.stepMetrics[0].satisfaction-s.stepMetrics[0].satisfactionDelta).toFixed(3):"0",n=s.stepMetrics.length>0?T(s.stepMetrics[s.stepMetrics.length-1].satisfaction).toFixed(3):"0",o=s.achieved?"Goal achieved":"Goal not achieved",a=s.relaxations.length>0?` ${s.relaxations.length} relaxation(s) applied.`:"",r=s.error?` Error: ${s.error}`:"",g=`${o} in ${s.steps} step(s) (${s.totalTokens.toLocaleString()} tokens, ${s.durationMs}ms). Satisfaction: ${l} \u2192 ${n}.${a}${r}`;return {achieved:s.achieved,summary:g,steps:e,relaxations:c,totalTokens:s.totalTokens,durationMs:s.durationMs}}export{Y as a,V as b,J as c,Z as d,X as e,ee as f,ne as g,se as h,re as i,oe as j};//# sourceMappingURL=chunk-RHJAMXLS.js.map
|
|
6
|
+
//# sourceMappingURL=chunk-RHJAMXLS.js.map
|