@directive-run/ai 1.13.0 → 1.14.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/anthropic.d.cts +1 -1
- package/dist/anthropic.d.ts +1 -1
- package/dist/{chunk-XV2QSBBE.cjs → chunk-2TD4ZSGZ.cjs} +7 -7
- package/dist/{chunk-XV2QSBBE.cjs.map → chunk-2TD4ZSGZ.cjs.map} +1 -1
- package/dist/chunk-5JQ2A3JK.js +2 -0
- package/dist/chunk-5JQ2A3JK.js.map +1 -0
- package/dist/chunk-A22KLB23.cjs +67 -0
- package/dist/chunk-A22KLB23.cjs.map +1 -0
- package/dist/chunk-A5K77UDX.cjs +4 -0
- package/dist/chunk-A5K77UDX.cjs.map +1 -0
- package/dist/chunk-DN5NAJM6.js +6 -0
- package/dist/chunk-DN5NAJM6.js.map +1 -0
- package/dist/chunk-FABDFT74.cjs +6 -0
- package/dist/chunk-FABDFT74.cjs.map +1 -0
- package/dist/chunk-FBT73WFY.js +2 -0
- package/dist/chunk-FBT73WFY.js.map +1 -0
- package/dist/chunk-FFRWQNK7.cjs +7 -0
- package/dist/chunk-FFRWQNK7.cjs.map +1 -0
- package/dist/chunk-IR3IHBVQ.cjs +2 -0
- package/dist/chunk-IR3IHBVQ.cjs.map +1 -0
- package/dist/chunk-IUGSMTBE.js +16 -0
- package/dist/{chunk-Q3PQLWBR.js.map → chunk-IUGSMTBE.js.map} +1 -1
- package/dist/chunk-J2Q5KKPN.js +37 -0
- package/dist/chunk-J2Q5KKPN.js.map +1 -0
- package/dist/chunk-K64WKZ22.cjs +2 -0
- package/dist/chunk-K64WKZ22.cjs.map +1 -0
- package/dist/chunk-LKY4K5TV.cjs +11 -0
- package/dist/chunk-LKY4K5TV.cjs.map +1 -0
- package/dist/chunk-LXUMJKGJ.js +67 -0
- package/dist/chunk-LXUMJKGJ.js.map +1 -0
- package/dist/chunk-NNAQ4ZH2.js +11 -0
- package/dist/chunk-NNAQ4ZH2.js.map +1 -0
- package/dist/chunk-PD772MSE.cjs +30 -0
- package/dist/chunk-PD772MSE.cjs.map +1 -0
- package/dist/chunk-POBEEJR6.js +30 -0
- package/dist/chunk-POBEEJR6.js.map +1 -0
- package/dist/chunk-QRXWLD6H.js +4 -0
- package/dist/chunk-QRXWLD6H.js.map +1 -0
- package/dist/chunk-UR4ZGO7V.js +7 -0
- package/dist/chunk-UR4ZGO7V.js.map +1 -0
- package/dist/chunk-UR5BMWEN.js +2 -0
- package/dist/chunk-UR5BMWEN.js.map +1 -0
- package/dist/chunk-WOFIBIPW.cjs +2 -0
- package/dist/chunk-WOFIBIPW.cjs.map +1 -0
- package/dist/chunk-XN5LUOVS.cjs +37 -0
- package/dist/chunk-XN5LUOVS.cjs.map +1 -0
- package/dist/debug-timeline-DpnRMnLU.d.cts +87 -0
- package/dist/debug-timeline-L13P-U2I.d.ts +87 -0
- package/dist/devtools.cjs +2 -0
- package/dist/devtools.cjs.map +1 -0
- package/dist/devtools.d.cts +354 -0
- package/dist/devtools.d.ts +354 -0
- package/dist/devtools.js +2 -0
- package/dist/devtools.js.map +1 -0
- package/dist/evals.cjs +2 -0
- package/dist/evals.cjs.map +1 -0
- package/dist/evals.d.cts +361 -0
- package/dist/evals.d.ts +361 -0
- package/dist/evals.js +2 -0
- package/dist/evals.js.map +1 -0
- package/dist/gemini.d.cts +1 -1
- package/dist/gemini.d.ts +1 -1
- package/dist/guardrails.cjs +2 -0
- package/dist/guardrails.cjs.map +1 -0
- package/dist/guardrails.d.cts +618 -0
- package/dist/guardrails.d.ts +618 -0
- package/dist/guardrails.js +2 -0
- package/dist/guardrails.js.map +1 -0
- package/dist/health-monitor-C6xoXrQz.d.cts +55 -0
- package/dist/health-monitor-qL9RNMH3.d.ts +55 -0
- package/dist/index.cjs +21 -99
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1197 -4735
- package/dist/index.d.ts +1197 -4735
- package/dist/index.js +21 -99
- package/dist/index.js.map +1 -1
- package/dist/mcp.cjs +2 -0
- package/dist/mcp.cjs.map +1 -0
- package/dist/mcp.d.cts +450 -0
- package/dist/mcp.d.ts +450 -0
- package/dist/mcp.js +2 -0
- package/dist/mcp.js.map +1 -0
- package/dist/multi-agent-orchestrator-QWWQKKGX.js +2 -0
- package/dist/{multi-agent-orchestrator-4PXNYRHB.js.map → multi-agent-orchestrator-QWWQKKGX.js.map} +1 -1
- package/dist/multi-agent-orchestrator-Y5U4JCFO.cjs +2 -0
- package/dist/{multi-agent-orchestrator-KFGTEGE5.cjs.map → multi-agent-orchestrator-Y5U4JCFO.cjs.map} +1 -1
- package/dist/multi-agent.cjs +2 -0
- package/dist/multi-agent.cjs.map +1 -0
- package/dist/multi-agent.d.cts +1429 -0
- package/dist/multi-agent.d.ts +1429 -0
- package/dist/multi-agent.js +2 -0
- package/dist/multi-agent.js.map +1 -0
- package/dist/ollama.d.cts +1 -1
- package/dist/ollama.d.ts +1 -1
- package/dist/openai.d.cts +2 -2
- package/dist/openai.d.ts +2 -2
- package/dist/{orchestrator-types-CTfIKk0W.d.ts → orchestrator-types-DGBhL6mc.d.ts} +5 -138
- package/dist/{orchestrator-types-Bh8r3_Sq.d.cts → orchestrator-types-DeIMRLR7.d.cts} +5 -138
- package/dist/predicate.cjs +2 -0
- package/dist/predicate.cjs.map +1 -0
- package/dist/predicate.d.cts +371 -0
- package/dist/predicate.d.ts +371 -0
- package/dist/predicate.js +2 -0
- package/dist/predicate.js.map +1 -0
- package/dist/{semantic-cache-nBpQqILc.d.cts → semantic-cache-DM7ev7NQ.d.cts} +1 -1
- package/dist/{semantic-cache-nBpQqILc.d.ts → semantic-cache-DM7ev7NQ.d.ts} +1 -1
- package/dist/testing.cjs +1 -1
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +4 -2
- package/dist/testing.d.ts +4 -2
- package/dist/testing.js +1 -1
- package/dist/testing.js.map +1 -1
- package/dist/{types-CRmwFnVk.d.cts → types-DJ09LjZX.d.cts} +1 -1
- package/dist/{types-CRmwFnVk.d.ts → types-DJ09LjZX.d.ts} +1 -1
- package/package.json +32 -2
- package/dist/chunk-Q3PQLWBR.js +0 -16
- package/dist/chunk-RW4R3O5P.js +0 -72
- package/dist/chunk-RW4R3O5P.js.map +0 -1
- package/dist/chunk-X3VQ5F7D.cjs +0 -72
- package/dist/chunk-X3VQ5F7D.cjs.map +0 -1
- package/dist/multi-agent-orchestrator-4PXNYRHB.js +0 -2
- package/dist/multi-agent-orchestrator-KFGTEGE5.cjs +0 -2
package/dist/index.cjs
CHANGED
|
@@ -1,119 +1,41 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkA5K77UDX_cjs=require('./chunk-A5K77UDX.cjs'),chunkIR3IHBVQ_cjs=require('./chunk-IR3IHBVQ.cjs'),chunkXN5LUOVS_cjs=require('./chunk-XN5LUOVS.cjs'),chunkLKY4K5TV_cjs=require('./chunk-LKY4K5TV.cjs'),chunk2TD4ZSGZ_cjs=require('./chunk-2TD4ZSGZ.cjs'),chunk3WO4MWJM_cjs=require('./chunk-3WO4MWJM.cjs'),chunkFABDFT74_cjs=require('./chunk-FABDFT74.cjs'),chunkA22KLB23_cjs=require('./chunk-A22KLB23.cjs'),chunkK64WKZ22_cjs=require('./chunk-K64WKZ22.cjs'),chunkWOFIBIPW_cjs=require('./chunk-WOFIBIPW.cjs'),chunkPD772MSE_cjs=require('./chunk-PD772MSE.cjs'),chunkFFRWQNK7_cjs=require('./chunk-FFRWQNK7.cjs'),plugins=require('@directive-run/core/plugins'),_=require('path');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ___default=/*#__PURE__*/_interopDefault(_);function Ur(r,...e){let t=r;for(let n of e)t=n(t);return t}function j(r,e){let t=typeof r.content=="string"?r.content:JSON.stringify(r.content);return Math.ceil(t.length/4)}function V(r,e){return r.reduce((t,n)=>t+j(n),0)}function X(r={}){return (e,t={})=>{let n={...r,...t},s=n.maxMessages??100,c=n.preserveRecentCount??5;if(e.length<=s)return {keep:[...e],toSummarize:[],estimatedTokens:V(e)};let a=e.slice(-c),u=e.slice(0,-c),o=Math.max(0,s-c),m=u.slice(-o),d=u.slice(0,-o||void 0),b=[...m,...a];return {keep:b,toSummarize:d.length>0?d:[],estimatedTokens:V(b)}}}function Y(r={}){return (e,t={})=>{let n={...r,...t},s=n.maxTokens??4e3,c=n.preserveRecentCount??5,a=n.countSystemMessages??true,u=e.slice(-c),o=e.slice(0,-c),m=u.reduce((p,f)=>!a&&f.role==="system"?p:p+j(f),0),d=[],b=[],y=m;for(let p=o.length-1;p>=0;p--){let f=o[p],C=!a&&f.role==="system"?0:j(f);if(y+C<=s)d.unshift(f),y+=C;else {b.push(...o.slice(0,p+1));break}}return {keep:[...d,...u],toSummarize:b,estimatedTokens:y}}}function Hr(r={}){let e=X(r),t=Y(r);return (n,s={})=>{let c={...r,...s},a=e(n,c),u=t(n,c);return a.keep.length<=u.keep.length?a:u}}function Vr(r){let{strategy:e,summarizer:t,strategyConfig:n={},autoManage:s=false,onMemoryManaged:c,onManageError:a,maxContextTokens:u}=r,o={messages:[],summaries:[],totalMessagesProcessed:0,estimatedTokens:0},m=false;async function d(){if(m)return {messagesBefore:o.messages.length,messagesAfter:o.messages.length,messagesSummarized:0,estimatedTokensBefore:o.estimatedTokens,estimatedTokensAfter:o.estimatedTokens};m=true;try{let y=o.messages.length,p=o.estimatedTokens,f=e(o.messages,n);if(f.toSummarize.length===0)return {messagesBefore:y,messagesAfter:y,messagesSummarized:0,estimatedTokensBefore:p,estimatedTokensAfter:f.estimatedTokens};let C;t&&f.toSummarize.length>0&&(C=await t(f.toSummarize),o.summaries.push({content:C,messagesCount:f.toSummarize.length,createdAt:Date.now()})),o.messages=f.keep,o.estimatedTokens=f.estimatedTokens;let E={messagesBefore:y,messagesAfter:o.messages.length,messagesSummarized:f.toSummarize.length,summary:C,estimatedTokensBefore:p,estimatedTokensAfter:f.estimatedTokens};return c?.(E),E}finally{m=false;}}function b(){if(m)return;e(o.messages,n).toSummarize.length>0&&d().catch(p=>{let f=p instanceof Error?p:new Error(String(p));a?a(f):console.error("[Directive Memory] Auto-manage error:",f);});}return {getState(){return {...o,messages:[...o.messages],summaries:o.summaries.map(y=>({...y}))}},addMessage(y){o.messages.push(y),o.totalMessagesProcessed++,o.estimatedTokens+=j(y),s&&b();},addMessages(y){for(let p of y)o.messages.push(p),o.totalMessagesProcessed++,o.estimatedTokens+=j(p);s&&b();},getContextMessages(){let y=[];if(o.summaries.length>0){let p=o.summaries.map(f=>f.content).join(`
|
|
2
2
|
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
`);
|
|
5
|
+
`);y.push({role:"system",content:`[Previous conversation summary]
|
|
6
6
|
|
|
7
|
-
${
|
|
8
|
-
`);return
|
|
9
|
-
[truncated]`}}function
|
|
7
|
+
${p}`});}if(y.push(...o.messages),u){let p=V(y);p>u&&console.warn(`[Directive Memory] Context messages (${p} tokens) exceed maxContextTokens (${u}). Consider calling manage() or reducing message count.`);}return y},manage:d,isManaging(){return m},clear(){o={messages:[],summaries:[],totalMessagesProcessed:0,estimatedTokens:0};},export(){return {...o,messages:[...o.messages],summaries:o.summaries.map(y=>({...y}))}},import(y){o={...y,messages:[...y.messages],summaries:y.summaries.map(p=>({...p}))};}}}function Kr(r=500){return async e=>{let t=e.filter(n=>n.role!=="system").map(n=>{let s=typeof n.content=="string"?n.content:JSON.stringify(n.content);return `${n.role}: ${s.slice(0,100)}${s.length>100?"...":""}`}).join(`
|
|
8
|
+
`);return t.length<=r?t:t.slice(0,r)+`
|
|
9
|
+
[truncated]`}}function Wr(){return async r=>{let e=[];for(let t of r)if(t.role==="user"){let s=(typeof t.content=="string"?t.content:JSON.stringify(t.content)).match(/[^.!?]*\?/g);s&&e.push(...s.map(c=>`Q: ${c.trim()}`));}return e.length===0?`[${r.length} messages processed - no key questions found]`:`Key topics discussed:
|
|
10
10
|
${e.join(`
|
|
11
|
-
`)}`}}function
|
|
11
|
+
`)}`}}function Jr(r,e={}){let{maxSummaryLength:t=500,preserveKeyFacts:n=true}=e;return async s=>{let c=s.filter(u=>u.role!=="system").map(u=>{let o=typeof u.content=="string"?u.content:JSON.stringify(u.content);return `${u.role.toUpperCase()}: ${o}`}).join(`
|
|
12
12
|
|
|
13
|
-
`),a=`Summarize the following conversation in ${
|
|
14
|
-
${
|
|
13
|
+
`),a=`Summarize the following conversation in ${t} characters or less.
|
|
14
|
+
${n?"Preserve key facts, decisions, and action items.":""}
|
|
15
15
|
Focus on information that would be useful context for continuing the conversation.
|
|
16
16
|
|
|
17
17
|
CONVERSATION:
|
|
18
|
-
${
|
|
18
|
+
${c}
|
|
19
19
|
|
|
20
|
-
SUMMARY:`;return
|
|
21
|
-
`)
|
|
22
|
-
|
|
23
|
-
`)
|
|
24
|
-
`}function Q(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function Jn(t={}){let{maxHistory:e=1e3,defaultTtlMs:n=36e5,maxPendingPerAgent:o=100,persistence:r,onDelivery:s,onDeliveryError:a}=t,c=new Map,i=[],u=new Map,l=new Map;function p(m,S){if(S.types&&!S.types.includes(m.type)||S.from&&!(Array.isArray(S.from)?S.from:[S.from]).includes(m.from))return false;if(S.topics){let h=m.topic;if(h&&!S.topics.includes(h))return false}return !(S.priority&&m.priority&&!S.priority.includes(m.priority)||S.custom&&!S.custom(m))}function d(m){return m.ttlMs?Date.now()-m.timestamp>m.ttlMs:false}function f(m){return m.to==="*"?Array.from(c.keys()):Array.isArray(m.to)?m.to:[m.to]}async function y(m){if(d(m))return;let S=f(m),h=[],g=[];for(let v of S){let w=c.get(v)??[];if(w.length===0){let M=l.get(v)??[];for(M.push(m);M.length>o;)M.shift();l.set(v,M);continue}for(let M of w)(!M.filter||p(m,M.filter))&&g.push(Promise.resolve(M.handler(m)).then(()=>{h.push(v);},x=>{a?.(m,x instanceof Error?x:new Error(String(x)));}));}g.length>0&&await Promise.allSettled(g),h.length>0&&s?.(m,h),r&&await r.save(m);}return {publish(m){let S={...m,id:Q(),timestamp:Date.now(),priority:m.priority??"normal",ttlMs:m.ttlMs??n};for(i.push(S),u.set(S.id,S);i.length>e;){let h=i.shift();h&&u.delete(h.id);}return y(S).catch(h=>{let g=h instanceof Error?h:new Error(String(h));a?a(S,g):console.error("[Directive MessageBus] Delivery error:",g);}),S.id},subscribe(m,S,h){let g=Q(),v={id:g,agentId:m,handler:S,filter:h,unsubscribe:()=>{let x=c.get(m)??[],P=x.findIndex(O=>O.id===g);P>=0&&x.splice(P,1);}},w=c.get(m)??[];w.push(v),c.set(m,w);let M=l.get(m)??[];l.delete(m);for(let x of M)if(!h||p(x,h)){let P=S(x);P instanceof Promise&&P.catch(O=>{let b=O instanceof Error?O:new Error(String(O));a?a(x,b):console.error("[Directive MessageBus] Pending delivery error:",b);});}return v},getHistory(m,S=100){let h=i.filter(g=>!d(g));return m&&(h=h.filter(g=>p(g,m))),h.slice(-S)},getMessage(m){let S=u.get(m);if(!(S&&d(S)))return S},getPending(m){return (l.get(m)??[]).filter(h=>!d(h))},clear(){i.length=0,u.clear(),l.clear();},destroy(){i.length=0,u.clear(),l.clear(),c.clear();}}}function Kn(t){let{bus:e,agents:n={},defaultTimeout:o=3e4,onAgentOnline:r,onAgentOffline:s}=t,a=new Map,c=new Map;for(let[u,l]of Object.entries(n))a.set(u,{...l,id:u,status:"offline",lastSeen:Date.now()});function i(u){if(u.type!=="RESPONSE"&&u.type!=="DELEGATION_RESULT")return;let l=u.correlationId??u.replyTo;if(!l)return;let p=c.get(l);p&&(clearTimeout(p.timer),c.delete(l),p.resolve(u));}return {register(u,l){let p=!a.has(u)||a.get(u)?.status==="offline";a.set(u,{...l,id:u,status:"online",lastSeen:Date.now()}),p&&r?.(u);},unregister(u){let l=a.get(u);l&&(l.status="offline",s?.(u));},getAgent(u){return a.get(u)},getAgents(){return Array.from(a.values())},findByCapability(u){return Array.from(a.values()).filter(l=>l.capabilities.includes(u)&&l.status==="online")},send(u,l,p){let d=a.get(u);return d&&(d.lastSeen=Date.now(),d.status="online"),e.publish({...p,from:u,to:l,type:p.type??"CUSTOM"})},async request(u,l,p,d,f=o){return new Promise((y,m)=>{let S=Q(),h=e.subscribe(u,v=>{(v.correlationId===S||v.replyTo===S)&&(h.unsubscribe(),i(v));},{types:["RESPONSE"]}),g=setTimeout(()=>{h.unsubscribe(),c.delete(S),m(new Error(`[Directive Communication] Request timeout after ${f}ms`));},f);c.set(S,{resolve:y,reject:m,timer:g}),e.publish({type:"REQUEST",from:u,to:l,action:p,payload:d,timeout:f,correlationId:S});})},async delegate(u,l,p,d){return new Promise((f,y)=>{let m=Q(),S=e.subscribe(u,g=>{(g.correlationId===m||g.replyTo===m)&&(S.unsubscribe(),i(g));},{types:["DELEGATION_RESULT"]}),h=setTimeout(()=>{S.unsubscribe(),c.delete(m),y(new Error(`[Directive Communication] Delegation timeout after ${o}ms`));},o);c.set(m,{resolve:f,reject:y,timer:h}),e.publish({type:"DELEGATION",from:u,to:l,task:p,context:d,correlationId:m});})},async query(u,l,p,d){return new Promise((f,y)=>{let m=Q(),S=e.subscribe(u,g=>{(g.correlationId===m||g.replyTo===m)&&(S.unsubscribe(),i(g));},{types:["RESPONSE"]}),h=setTimeout(()=>{S.unsubscribe(),c.delete(m),y(new Error(`[Directive Communication] Query timeout after ${o}ms`));},o);c.set(m,{resolve:f,reject:y,timer:h}),e.publish({type:"QUERY",from:u,to:l,question:p,context:d,correlationId:m});})},broadcast(u,l){return e.publish({...l,from:u,to:"*",type:l.type??"INFORM"})},listen(u,l,p){let d=a.get(u);return d&&(d.status="online",d.lastSeen=Date.now(),r?.(u)),e.subscribe(u,l,p)},getBus(){return e},destroy(){for(let[,u]of c)clearTimeout(u.timer);c.clear(),a.clear();}}}function Wn(t,e){let n=new Map,o=t.listen(e,async r=>{if(r.type==="REQUEST"){let s=r,a=n.get(s.action),c;if(a)try{let i=await a(s.payload);c={type:"RESPONSE",success:i.success,result:i.result,error:i.error};}catch(i){c={type:"RESPONSE",success:false,error:i instanceof Error?i.message:String(i)};}else c={type:"RESPONSE",success:false,error:`Unknown action: ${s.action}`};t.send(e,r.from,{...c,correlationId:r.correlationId??r.id,replyTo:r.correlationId??r.id});}},{types:["REQUEST"]});return {onRequest(r,s){n.set(r,s);},offRequest(r){n.delete(r);},destroy(){o.unsubscribe(),n.clear();}}}function Yn(t,e){let n=null,o=t.listen(e,async r=>{if(r.type==="DELEGATION"&&n){let s=r,a=Date.now(),c;try{let i=await n(s.task,s.context);c={type:"DELEGATION_RESULT",success:i.success,result:i.result,error:i.error,metrics:i.metrics??{durationMs:Date.now()-a}};}catch(i){c={type:"DELEGATION_RESULT",success:false,error:i instanceof Error?i.message:String(i),metrics:{durationMs:Date.now()-a}};}t.send(e,r.from,{...c,correlationId:r.correlationId??r.id,replyTo:r.correlationId??r.id});}},{types:["DELEGATION"]});return {onDelegation(r){n=r;},offDelegation(){n=null;},destroy(){o.unsubscribe(),n=null;}}}function Qn(t,e){let n=new Map,o=t.listen(e,r=>{if(r.type==="UPDATE"){let s=r,a=n.get(s.topic)??[];for(let c of a)c(s.content);}},{types:["UPDATE"]});return {subscribe(r,s){let a=new Map;for(let c of r){let i=n.get(c)??[],u=l=>s(c,l);a.set(c,u),i.push(u),n.set(c,i);}return t.broadcast(e,{type:"SUBSCRIBE",topics:r}),()=>{for(let[c,i]of a){let u=n.get(c);if(u){let l=u.indexOf(i);l>=0&&u.splice(l,1),u.length===0&&n.delete(c);}}a.clear(),t.broadcast(e,{type:"UNSUBSCRIBE",topics:r});}},publish(r,s){t.broadcast(e,{type:"UPDATE",topic:r,content:s});},destroy(){o.unsubscribe(),n.clear();}}}var Xn=[{type:"ssn",pattern:/\b(\d{3}[-\s]?\d{2}[-\s]?\d{4})\b/g,validate:t=>{let e=t.replace(/[-\s]/g,"");return !(e.startsWith("000")||e.startsWith("666")||e.startsWith("9")||e.slice(3,5)==="00"||e.slice(5)==="0000")},confidence:.95},{type:"credit_card",pattern:/\b((?:\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4})|\d{13,19})\b/g,validate:t=>{let e=t.replace(/[-\s]/g,"");if(e.length<13||e.length>19)return false;let n=0,o=false;for(let r=e.length-1;r>=0;r--){let s=e[r];if(!s)continue;let a=Number.parseInt(s,10);o&&(a*=2,a>9&&(a-=9)),n+=a,o=!o;}return n%10===0},confidence:.95},{type:"email",pattern:/\b([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,})\b/gi,confidence:.9},{type:"phone",pattern:/\b(\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4})\b/g,validate:t=>{let e=t.replace(/\D/g,"");return e.length>=10&&e.length<=11},confidence:.8},{type:"date_of_birth",pattern:/\b(born|dob|birth.?date|date.?of.?birth)[:.\s]+(\d{1,4}[-/]\d{1,2}[-/]\d{1,4})\b/gi,valueGroup:2,confidence:.85},{type:"ip_address",pattern:/\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b/g,validate:t=>{let n=t.split(".").map(s=>Number.parseInt(s,10));if(n.some(s=>Number.isNaN(s)||s<0||s>255))return false;let[o,r]=n;return !(o===10||o===172&&r>=16&&r<=31||o===192&&r===168||o===127||o===169&&r===254||t==="0.0.0.0"||t==="255.255.255.255")},confidence:.9},{type:"bank_account",pattern:/\b(account|acct)[\s#:]+(\d{8,17})\b/gi,valueGroup:2,confidence:.7},{type:"passport",pattern:/\b(passport)[\s#:]+([A-Z0-9]{6,9})\b/gi,valueGroup:2,confidence:.75},{type:"driver_license",pattern:/\b(driver'?s?\s*licen[cs]e|dl)[\s#:]+([A-Z0-9]{5,15})\b/gi,valueGroup:2,confidence:.7},{type:"medical_id",pattern:/\b(mrn|medical.?record|patient.?id)[\s#:]+([A-Z0-9-]{6,15})\b/gi,valueGroup:2,confidence:.7},{type:"national_id",pattern:/\b(national.?id|nin|identity.?number|identity.?card|id.?number)[\s#:]+([A-Z0-9-]{6,20})\b/gi,valueGroup:2,confidence:.85}];function Zn(t){let e=[],n="street|st|avenue|ave|road|rd|drive|dr|lane|ln|court|ct|way|boulevard|blvd|circle|cir|place|pl",o=new RegExp(`\\b(\\d{1,5}\\s+(?:\\w+\\s+){1,4}(?:${n})\\b[^\\n]{0,50}\\b[A-Z]{2}\\s+\\d{5}(?:-\\d{4})?)\\b`,"gi"),r;for(;(r=o.exec(t))!==null;)e.push({type:"address",value:r[0],position:{start:r.index,end:r.index+r[0].length},confidence:.7});return e}var Oe=["mr","mrs","ms","miss","dr","prof","sir","madam","name is","called","known as","signed by","from","dear","hi","hello","contact","recipient"];function er(t){let e=[],n=Oe.join("|"),o=new RegExp(`\\b(${n})[.,:]?\\s+([A-Z][a-z]{1,20}(?:\\s[A-Z][a-z]{1,20}){0,2})\\b`,"gi"),r;for(;(r=o.exec(t))!==null;){let s=r[2],a=r[1];s&&(s.split(/\s+/).length>=2||a&&Oe.some(c=>a.toLowerCase().includes(c)))&&e.push({type:"name",value:s,position:{start:r.index,end:r.index+r[0].length},confidence:.6,context:r[0]});}return e}var $e=1e5;function tr(t,e){let n=[],o=new RegExp(t.pattern.source,t.pattern.flags),r=t.valueGroup??1,s;for(;(s=o.exec(e))!==null;){let a=s[r]??s[0],c=s.index,i=s.index+s[0].length,u=e.slice(Math.max(0,c-20),i+20);t.validate&&!t.validate(a,u)||n.push({type:t.type,value:a,position:{start:c,end:i},confidence:t.confidence,context:u});}return n}var se={name:"regex",async detect(t,e){if(t.length>$e)throw new Error(`[Directive] Input exceeds maximum length of ${$e} characters for PII detection. Truncate input or process in chunks.`);let n=[],o=new Set(e);for(let r of Xn)o.has(r.type)&&n.push(...tr(r,t));return o.has("address")&&n.push(...Zn(t)),o.has("name")&&n.push(...er(t)),n}},nr=new Set(["ssn","credit_card","date_of_birth","medical_id","national_id","passport","driver_license","bank_account"]);function rr(t,e){let{start:n,end:o}=t.position;return Number.isInteger(n)&&Number.isInteger(o)&&n>=0&&n<o&&o<=e}function or(t,e){switch(e){case "placeholder":return "[REDACTED]";case "typed":return nr.has(t.type)?"[REDACTED]":`[${t.type.toUpperCase()}]`;case "masked":{if(t.type!=="credit_card")return "****";let n=t.value.replace(/\D/g,"");return `****${n.length>4?n.slice(-4):""}`}case "hashed":return `[HASH:${sr(t.value)}]`}}function X(t,e,n="typed"){let r=[...e.filter(i=>rr(i,t.length))].sort((i,u)=>{if(u.confidence!==i.confidence)return u.confidence-i.confidence;let l=i.position.end-i.position.start,p=u.position.end-u.position.start;return p!==l?p-l:i.position.start-u.position.start}),s=[];for(let i of r)s.some(l=>i.position.start<l.position.end&&l.position.start<i.position.end)||s.push(i);let a=s.sort((i,u)=>u.position.start-i.position.start),c=t;for(let i of a){let u=or(i,n);c=c.slice(0,i.position.start)+u+c.slice(i.position.end);}return c}function sr(t){let o=2166136261;for(let r=0;r<t.length;r++)o^=t.charCodeAt(r),o=Math.imul(o,16777619);return (o>>>0).toString(16).padStart(8,"0")}var Ne=["ssn","credit_card","email","phone","date_of_birth","bank_account"];function _e(t={}){let{types:e=Ne,detector:n="regex",redact:o=false,redactionStyle:r="typed",minConfidence:s=.7,onDetected:a,allowlist:c=[],minItemsToBlock:i=1,detectorTimeout:u=5e3}=t,l=n==="regex"?se:n,p=new Set(c.map(f=>f.toLowerCase().trim()));async function d(f,y){if(l===se)return l.detect(f,y);let m,S=l.detect(f,y),h=new Promise((g,v)=>{m=setTimeout(()=>v(new Error(`[Directive] PII detector '${l.name}' timed out after ${u}ms`)),u);});S.catch(()=>{}),h.catch(()=>{});try{return await Promise.race([S,h])}finally{clearTimeout(m);}}return async f=>{let m=(await d(f.input,e)).filter(S=>!(S.confidence<s||p.has(S.value.toLowerCase().trim())));if(m.length>0&&a?.(m),m.length>=i){if(o)return {passed:true,transformed:X(f.input,m,r)};let S={};for(let g of m)S[g.type]=(S[g.type]||0)+1;return {passed:false,reason:`PII detected (${Object.entries(S).map(([g,v])=>`${g}: ${v}`).join(", ")})`}}return {passed:true}}}function ar(t={}){let e=_e(t);return async(n,o)=>{let r=typeof n.output=="string"?n.output:JSON.stringify(n.output);return e({input:r,agentName:n.agentName},o)}}async function ae(t,e={}){let{types:n=Ne,detector:o="regex",minConfidence:r=.7,timeout:s=5e3}=e,a=o==="regex"?se:o,c;if(a===se)c=await a.detect(t,n);else {let l,p=a.detect(t,n),d=new Promise((f,y)=>{l=setTimeout(()=>y(new Error(`[Directive] PII detector '${a.name}' timed out after ${s}ms`)),s);});p.catch(()=>{}),d.catch(()=>{});try{c=await Promise.race([p,d]);}finally{clearTimeout(l);}}let i=c.filter(l=>l.confidence>=r),u={};for(let l of i)u[l.type]=(u[l.type]||0)+1;return {detected:i.length>0,items:i,typeCounts:u}}async function ir(t,e={}){let n=await ae(t,e);return n.detected?{...n,redactedText:X(t,n.items,e.style??"typed")}:{...n}}var cr=1e4,ur=10080*60*1e3,lr=6e4,je="0".repeat(64);function dr(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function pr(t){return new TextEncoder().encode(t)}function gr(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}async function Fe(t){let e=pr(t),n=await globalThis.crypto.subtle.digest("SHA-256",e);return gr(new Uint8Array(n))}function Ge(t){let{id:e,timestamp:n,eventType:o,previousHash:r,payload:s,actorId:a,sessionId:c}=t;return JSON.stringify({id:e,timestamp:n,eventType:o,previousHash:r,payload:s,actorId:a,sessionId:c})}function mr(t){return JSON.parse(JSON.stringify(t))}async function fr(t,e){let n=mr(t);async function o(r){if(typeof r=="string"){let s=await ae(r,{types:e.types,minConfidence:e.minConfidence??.7});if(s.detected){let a=e.allowlist?s.items.filter(c=>!e.allowlist.includes(c.value.toLowerCase())):s.items;if(a.length>0)return X(r,a,e.redactionStyle)}return r}if(Array.isArray(r))return Promise.all(r.map(o));if(r&&typeof r=="object"){let s={};for(let[a,c]of Object.entries(r))s[a]=await o(c);return s}return r}for(let[r,s]of Object.entries(n))n[r]=await o(s);return n}function yr(t={}){let{maxEntries:e=cr,retentionMs:n=ur,exportInterval:o=lr,exporter:r,piiMasking:s,signing:a,sessionId:c,actorId:i,events:u={}}=t,l=[],p=0,d=0,f=0,y=true,m;function S(){return l.length===0?je:l[l.length-1].hash}async function h(g,v,w){let M={id:dr(),timestamp:Date.now(),eventType:g,previousHash:S(),payload:v,actorId:i,sessionId:c};s?.enabled&&(M.maskedPayload=await fr(v,s));let x=Ge(M),P=await Fe(x),O={...M,hash:P};for(a&&(O.signature=await a.signFn(P)),l.push(O);l.length>e;)l.shift(),d++,p>0&&p--;return u.onEntryAdded?.(O),O}return r&&o>0&&(m=setInterval(async()=>{try{let g=l.slice(p);g.length>0&&(await r(g),f+=g.length,p=l.length);}catch(g){u.onExportError?.(g instanceof Error?g:new Error(String(g)),l.slice(p));}},o)),{getEntries(g){let v=[...l];if(g){if(g.eventTypes?.length){let w=new Set(g.eventTypes);v=v.filter(M=>w.has(M.eventType));}g.actorId&&(v=v.filter(w=>w.actorId===g.actorId)),g.sessionId&&(v=v.filter(w=>w.sessionId===g.sessionId)),g.since!==void 0&&(v=v.filter(w=>w.timestamp>=g.since)),g.until!==void 0&&(v=v.filter(w=>w.timestamp<=g.until)),g.offset!==void 0&&(v=v.slice(g.offset)),g.limit!==void 0&&(v=v.slice(0,g.limit));}return v},async verifyChain(){if(l.length===0)return {valid:true,entriesVerified:0,verifiedAt:Date.now()};l[0].previousHash;for(let v=0;v<l.length;v++){let w=l[v],M=Ge({id:w.id,timestamp:w.timestamp,eventType:w.eventType,previousHash:w.previousHash,payload:w.payload,actorId:w.actorId,sessionId:w.sessionId}),x=await Fe(M);if(w.hash!==x){y=false;let P={valid:false,entriesVerified:v,brokenAt:{index:v,entryId:w.id,expectedHash:x,actualHash:w.hash},verifiedAt:Date.now()};return u.onChainBroken?.(P),P}if(v>0){let P=l[v-1];if(w.previousHash!==P.hash){y=false;let O={valid:false,entriesVerified:v,brokenAt:{index:v,entryId:w.id,expectedHash:P.hash,actualHash:w.previousHash},verifiedAt:Date.now()};return u.onChainBroken?.(O),O}}if(a?.verifyFn&&w.signature&&!await a.verifyFn(w.hash,w.signature)){y=false;let O={valid:false,entriesVerified:v,brokenAt:{index:v,entryId:w.id,expectedHash:"signature-invalid",actualHash:w.signature},verifiedAt:Date.now()};return u.onChainBroken?.(O),O}}return y=true,{valid:true,entriesVerified:l.length,verifiedAt:Date.now()}},async export(g){let v=[...l];return g!==void 0&&(v=v.filter(w=>w.timestamp>=g)),r&&v.length>0&&(await r(v),f+=v.length),v},prune(){let g=Date.now()-n,v=l.length;for(;l.length>0&&l[0].timestamp<g;)l.shift(),p>0&&p--;let w=v-l.length;return d+=w,w},getStats(){let g={};for(let v of l)g[v.eventType]=(g[v.eventType]??0)+1;return {totalEntries:l.length,byEventType:g,oldestEntry:l[0]?.timestamp,newestEntry:l[l.length-1]?.timestamp,entriesPruned:d,entriesExported:f,chainIntegrity:y}},async destroy(){if(m&&(clearInterval(m),m=void 0),r)try{let g=l.slice(p);g.length>0&&(await r(g),f+=g.length);}catch(g){u.onExportError?.(g instanceof Error?g:new Error(String(g)),l.slice(p));}},addEntry(g,v){return h(g,v)},createPlugin(){return {name:"audit-trail",onFactSet:(g,v,w)=>{h("fact.set",{key:g,value:v,prev:w}).catch(console.error);},onFactsBatch:g=>{h("fact.batch",{changes:g.map(v=>({key:v.key,value:v.value,prev:v.prev}))}).catch(console.error);},onRequirementCreated:g=>{h("requirement.created",{id:g.id,type:g.requirement.type,payload:g.requirement}).catch(console.error);},onRequirementMet:(g,v)=>{h("requirement.met",{id:g.id,type:g.requirement.type,byResolver:v}).catch(console.error);},onResolverStart:(g,v)=>{h("resolver.start",{resolver:g,requirementId:v.id,requirementType:v.requirement.type}).catch(console.error);},onResolverComplete:(g,v,w)=>{h("resolver.complete",{resolver:g,requirementId:v.id,requirementType:v.requirement.type,duration:w}).catch(console.error);},onResolverError:(g,v,w)=>{h("resolver.error",{resolver:g,requirementId:v.id,requirementType:v.requirement.type,error:w instanceof Error?w.message:String(w)}).catch(console.error);},onError:g=>{h("error.occurred",{source:g.source,sourceId:g.sourceId,message:g.message,context:g.context}).catch(console.error);},onErrorRecovery:(g,v)=>{h("error.recovery",{source:g.source,message:g.message,strategy:v}).catch(console.error);}}}}}function hr(t){return {onAgentStart:(e,n)=>{t.addEntry("agent.run.start",{agentName:e,input:n});},onAgentComplete:(e,n,o,r)=>{t.addEntry("agent.run.complete",{agentName:e,output:n,tokens:o,cost:r});},onAgentError:(e,n)=>{t.addEntry("agent.run.error",{agentName:e,error:n.message,stack:n.stack});},onToolStart:(e,n,o)=>{t.addEntry("tool.call.start",{toolName:e,toolCallId:n,args:o});},onToolComplete:(e,n,o)=>{t.addEntry("tool.call.complete",{toolName:e,toolCallId:n,result:o});},onToolError:(e,n,o)=>{t.addEntry("tool.call.error",{toolName:e,toolCallId:n,error:o.message});},onApprovalRequested:(e,n,o)=>{t.addEntry("approval.requested",{toolName:e,toolCallId:n,args:o});},onApprovalGranted:(e,n)=>{t.addEntry("approval.granted",{toolName:e,toolCallId:n});},onApprovalDenied:(e,n,o)=>{t.addEntry("approval.denied",{toolName:e,toolCallId:n,reason:o});}}}var Z=[{pattern:/ignore\s+(all\s+)?(previous|prior|above|earlier)\s+(instructions?|prompts?|rules?|guidelines?)/i,name:"ignore-previous",severity:"critical",category:"instruction_override"},{pattern:/disregard\s+(all\s+)?(previous|prior|above|earlier)\s+(instructions?|prompts?)/i,name:"disregard-previous",severity:"critical",category:"instruction_override"},{pattern:/forget\s+(all\s+)?(previous|prior|above|earlier)\s+(instructions?|prompts?)/i,name:"forget-previous",severity:"critical",category:"instruction_override"},{pattern:/override\s+(the\s+)?(system|base)\s+(prompt|instructions?)/i,name:"override-system",severity:"critical",category:"instruction_override"},{pattern:/\bDAN\s+(mode|jailbreak)\b/i,name:"dan-mode",severity:"critical",category:"jailbreak"},{pattern:/\bjailbreak(ed)?\s*(mode)?\b/i,name:"jailbreak-keyword",severity:"high",category:"jailbreak"},{pattern:/developer\s+mode\s+(enabled|activated|on)/i,name:"developer-mode",severity:"critical",category:"jailbreak"},{pattern:/pretend\s+(you\s+)?(are|can|have)\s+(no\s+)?(restrictions?|limits?|boundaries?|ethics)/i,name:"pretend-no-restrictions",severity:"high",category:"jailbreak"},{pattern:/you\s+(now\s+)?have\s+no\s+(ethical\s+)?(restrictions?|guidelines?|boundaries?)/i,name:"no-restrictions",severity:"high",category:"jailbreak"},{pattern:/you\s+are\s+now\s+(a|an)\s+\w+\s+(that|who)\s+(can|will|must)/i,name:"role-assignment",severity:"medium",category:"role_manipulation"},{pattern:/from\s+now\s+on,?\s+(you\s+)?(will|must|should)\s+(only\s+)?/i,name:"from-now-on",severity:"medium",category:"role_manipulation"},{pattern:/^(system|assistant|user):\s*/im,name:"fake-role-marker",severity:"high",category:"context_manipulation"},{pattern:/<\|?(system|endofprompt|im_start|im_end)\|?>/i,name:"special-token-injection",severity:"critical",category:"context_manipulation"},{pattern:/```(system|assistant|instructions?)\n/i,name:"markdown-code-injection",severity:"medium",category:"delimiter_injection"},{pattern:/<system>|<\/system>|<instructions?>|<\/instructions?>/i,name:"xml-tag-injection",severity:"high",category:"delimiter_injection"},{pattern:/fetch\s+(content\s+)?(from|at)\s+(the\s+)?url/i,name:"url-fetch-instruction",severity:"medium",category:"indirect_injection"},{pattern:/execute\s+(the\s+)?(code|script|command)\s+(from|in|at)/i,name:"execute-from-source",severity:"high",category:"indirect_injection"}],ve=[...Z,{pattern:/act\s+as\s+(if\s+)?(you\s+)?(were|are|can)/i,name:"act-as",severity:"low",category:"role_manipulation"},{pattern:/new\s+instructions?:/i,name:"new-instructions",severity:"medium",category:"instruction_override"},{pattern:/\[system\]|\[admin\]|\[developer\]/i,name:"bracket-role-marker",severity:"medium",category:"context_manipulation"},{pattern:/base64|rot13|decode\s+(this|the)/i,name:"encoding-reference",severity:"low",category:"encoding_evasion"},{pattern:/\u200b|\u200c|\u200d|\u2060|\ufeff/,name:"zero-width-chars",severity:"medium",category:"encoding_evasion"}],Le=1e5;function Se(t,e=Z){if(t.length>Le)throw new Error(`[Directive] Input exceeds maximum length of ${Le} characters for injection detection. Truncate input or process in chunks.`);let n=[];for(let{pattern:a,name:c,severity:i,category:u}of e){let p=new RegExp(a.source,a.flags).exec(t);p&&n.push({name:c,category:u,severity:i,match:p[0],position:p.index});}let o={low:10,medium:25,high:50,critical:100},r=n.reduce((a,c)=>a+o[c.severity],0),s=Math.min(100,r);return {detected:n.length>0,patterns:n,riskScore:s}}function Be(t,e=Z){let n=t.replace(/\u200b|\u200c|\u200d|\u2060|\ufeff/g,""),o=e.map(u=>`(${u.pattern.source})`);if(o.length===0)return n;let r=e.some(u=>u.pattern.flags.includes("g")),s=e.some(u=>u.pattern.flags.includes("i")),a=e.some(u=>u.pattern.flags.includes("m")),c=`${r?"g":""}${s?"i":""}${a?"m":""}`,i=new RegExp(o.join("|"),c||"gi");return n=n.replace(i,"[REDACTED]"),n}function Ue(t={}){let{additionalPatterns:e=[],replacePatterns:n,strictMode:o=false,blockThreshold:r=50,sanitize:s=false,onBlocked:a,ignoreCategories:c=[]}=t,i;if(n?i=n:i=o?[...ve]:[...Z],i=[...i,...e],c.length>0){let u=new Set(c);i=i.filter(l=>!u.has(l.category));}return u=>{let l=Se(u.input,i);if(l.detected&&l.riskScore>=r){if(a?.(u.input,l),s)return {passed:true,transformed:Be(u.input,i)};let p=l.patterns.sort((d,f)=>{let y={critical:0,high:1,medium:2,low:3};return y[d.severity]-y[f.severity]}).slice(0,3).map(d=>d.name).join(", ");return {passed:false,reason:`Prompt injection detected (risk: ${l.riskScore}%, patterns: ${p})`}}return {passed:true}}}function br(t,e){return `[UNTRUSTED_CONTENT source="${e}"]
|
|
25
|
-
${t}
|
|
26
|
-
[/UNTRUSTED_CONTENT]`}function vr(t){let{baseGuardrail:e=Ue({strictMode:true,blockThreshold:25}),additionalPatterns:n=[]}=t,o=/\[UNTRUSTED_CONTENT source="([^"]+)"\]([\s\S]*?)\[\/UNTRUSTED_CONTENT\]/g;return async(r,s)=>{let a=await e(r,s);if(!a.passed)return a;let c=r.input.matchAll(o);for(let i of c){let[,u,l]=i;if(!l)continue;let p=Se(l,[...ve,...n]);if(p.detected&&p.riskScore>=25)return {passed:false,reason:`Untrusted content from "${u}" contains potential injection (risk: ${p.riskScore}%)`}}return {passed:true}}}function Sr(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function Er(t){return new TextEncoder().encode(t)}function wr(t){return Array.from(t).map(e=>e.toString(16).padStart(2,"0")).join("")}async function ze(t){let e=Er(t),n=await globalThis.crypto.subtle.digest("SHA-256",e);return wr(new Uint8Array(n))}function Rr(t){if(t.length===0)return "";let e=new Set;for(let r of t)for(let s of Object.keys(r))e.add(s);let n=Array.from(e),o=[n.join(",")];for(let r of t){let s=n.map(a=>{let c=r[a];if(c==null)return "";if(typeof c=="object")return JSON.stringify(c).replace(/"/g,'""');let i=String(c);return i.includes(",")||i.includes(`
|
|
27
|
-
`)||i.includes('"')?`"${i.replace(/"/g,'""')}"`:i});o.push(s.join(","));}return o.join(`
|
|
28
|
-
`)}function Cr(){let t=new Map,e=new Map,n=new Map;return {async getSubjectData(o,r){let s=[];for(let[a,c]of t){if(r&&!r.includes(a))continue;let i=c.get(o);i&&i.length>0&&s.push({category:a,records:[...i]});}return s},async deleteSubjectData(o,r){let s=0;for(let[a,c]of t){if(r&&!r.includes(a))continue;let i=c.get(o);i&&(s+=i.length,c.delete(o));}return s},async anonymizeSubjectData(o,r){let s=0;for(let[a,c]of t){if(r&&!r.includes(a))continue;let i=c.get(o);if(i)for(let u of i)u.data={...u.data,_anonymized:true,_anonymizedAt:Date.now()},s++;}return s},async getExpiredData(o,r){let s=[],a=t.get(o);if(a)for(let c of a.values())for(let i of c)i.createdAt<r&&s.push({id:i.id,createdAt:i.createdAt});return s},async deleteByIds(o){let r=new Set(o),s=0;for(let a of t.values())for(let[c,i]of a){let u=i.filter(l=>!r.has(l.id));u.length!==i.length&&(s+=i.length-u.length,u.length===0?a.delete(c):a.set(c,u));}return s},async storeConsent(o){e.set(`${o.subjectId}:${o.purpose}`,o);},async getConsent(o,r){return e.get(`${o}:${r}`)??null},async getConsentsBySubject(o){let r=[];for(let[s,a]of e)s.startsWith(`${o}:`)&&r.push(a);return r},async getConsentsByPurpose(o){let r=[];for(let[s,a]of e)s.endsWith(`:${o}`)&&r.push(a);return r},async storeDeletionCertificate(o){n.set(o.subjectId,o);}}}function Ar(t){let{storage:e,retention:n,exportExpirationMs:o=864e5,events:r={}}=t,s={async grant(a,c,i={}){let u={subjectId:a,purpose:c,granted:true,grantedAt:Date.now(),expiresAt:i.expiresAt,source:i.source,version:i.version};return await e.storeConsent(u),r.onConsentChange?.(u),u},async revoke(a,c){let i=await e.getConsent(a,c);if(!i)return null;let u={...i,granted:false,revokedAt:Date.now()};return await e.storeConsent(u),r.onConsentChange?.(u),u},async check(a,c){let i=await e.getConsent(a,c);return !(!i||!i.granted||i.expiresAt&&i.expiresAt<Date.now())},async getForSubject(a){return e.getConsentsBySubject(a)},async getForPurpose(a){return e.getConsentsByPurpose(a)}};return {async exportData(a){try{let c=await e.getSubjectData(a.subjectId,a.categories),i=[],u=[];for(let{category:f,records:y}of c){u.push(f);for(let m of y)i.push({category:f,...m});}if(a.includeAudit&&e.getAuditEntries){let f=await e.getAuditEntries(a.subjectId);u.push("audit");for(let y of f)i.push({category:"audit",id:y.id,data:y.payload,createdAt:y.timestamp});}let l;a.format==="csv"?l=Rr(i.map(f=>({category:f.category,id:f.id,createdAt:new Date(f.createdAt).toISOString(),...f.data}))):l=JSON.stringify({subjectId:a.subjectId,exportedAt:new Date().toISOString(),recordCount:i.length,categories:u,records:i},null,2);let p=await ze(l),d={success:!0,subjectId:a.subjectId,format:a.format,data:l,categories:u,recordCount:i.length,checksum:p,exportedAt:Date.now(),expiresAt:Date.now()+o};return r.onExport?.(d),d}catch(c){return {success:false,subjectId:a.subjectId,format:a.format,data:"",categories:[],recordCount:0,checksum:"",exportedAt:Date.now(),error:c instanceof Error?c.message:String(c)}}},async deleteData(a){try{let c=0,i=[];a.anonymize?c=await e.anonymizeSubjectData(a.subjectId,a.categories):c=await e.deleteSubjectData(a.subjectId,a.categories),a.categories?i.push(...a.categories):a.scope==="all"&&i.push("all");let u=JSON.stringify({subjectId:a.subjectId,type:a.anonymize?"anonymization":"hard",scope:a.scope,categories:i,recordCount:c,deletedAt:Date.now(),reason:a.reason}),l={id:Sr(),subjectId:a.subjectId,type:a.anonymize?"anonymization":"hard",scope:a.scope,categories:i,recordCount:c,deletedAt:Date.now(),reason:a.reason,hash:await ze(u)};await e.storeDeletionCertificate(l);let p={success:!0,subjectId:a.subjectId,scope:a.scope,anonymized:a.anonymize??!1,recordsAffected:c,categoriesAffected:i,certificate:l,deletedAt:Date.now()};return r.onDelete?.(p),p}catch(c){return {success:false,subjectId:a.subjectId,scope:a.scope,anonymized:a.anonymize??false,recordsAffected:0,categoriesAffected:[],certificate:{id:"error",subjectId:a.subjectId,type:"hard",scope:a.scope,categories:[],recordCount:0,deletedAt:Date.now(),hash:""},deletedAt:Date.now(),error:c instanceof Error?c.message:String(c)}}},consent:s,async enforceRetention(){if(!n)return 0;let a=0,c=Date.now(),i=new Set;if(n.categoryRetention)for(let u of Object.keys(n.categoryRetention))i.add(u);i.add("default");for(let u of i){let l=n.categoryRetention?.[u]??n.defaultRetentionMs,p=c-l,d=await e.getExpiredData(u,p);if(d.length>0){await n.onBeforeDelete?.({category:u,count:d.length});let f=await e.deleteByIds(d.map(y=>y.id));a+=f,n.onAfterDelete?.({category:u,count:f}),r.onRetentionEnforced?.(u,f);}}return a},createConsentGuardrail(a){return async c=>{let u=c.input.match(/user[_-]?id[:\s]*([a-zA-Z0-9-]+)/i)?.[1];return u?await s.check(u,a)?{passed:true}:{passed:false,reason:`No consent for '${a}' from subject ${u}`}:{passed:true}}},async getDeletionCertificate(a){return null}}}function J(t,e){if(t.length!==e.length)throw new Error(`Vector dimensions must match: ${t.length} vs ${e.length}`);let n=0,o=0,r=0;for(let s=0;s<t.length;s++){let a=t[s],c=e[s];n+=a*c,o+=a*a,r+=c*c;}return o=Math.sqrt(o),r=Math.sqrt(r),o===0||r===0?0:n/(o*r)}function xr(t,e,n,o){let r=null;for(let s of e){if(o&&s.agentName&&s.agentName!==o)continue;let a=J(t,s.queryEmbedding);a>=n&&(!r||a>r.similarity)&&(r={entry:s,similarity:a});}return r}function He(){let t=new Map;function e(n){let o=t.get(n);return o||(o=new Map,t.set(n,o)),o}return {async getEntries(n){return Array.from(e(n).values())},async addEntry(n,o){e(n).set(o.id,o);},async updateEntry(n,o,r){let s=e(n),a=s.get(o);a&&s.set(o,{...a,...r});},async removeEntry(n,o){e(n).delete(o);},async clear(n){t.delete(n);}}}function Mr(t){let{embedder:e,similarityThreshold:n=.9,maxCacheSize:o=1e3,ttlMs:r=36e5,namespace:s="default",storage:a=He(),onHit:c,onMiss:i,onError:u,perAgent:l=false}=t,p={totalEntries:0,totalHits:0,totalMisses:0,hitRate:0,avgSimilarityOnHit:0,oldestEntry:null,newestEntry:null},d=0;function f(m){if(p.totalEntries=m.length,p.hitRate=p.totalHits+p.totalMisses>0?p.totalHits/(p.totalHits+p.totalMisses):0,p.avgSimilarityOnHit=p.totalHits>0?d/p.totalHits:0,m.length>0){let S=m.map(h=>h.createdAt);p.oldestEntry=Math.min(...S),p.newestEntry=Math.max(...S);}else p.oldestEntry=null,p.newestEntry=null;}async function y(){let m=await a.getEntries(s),S=Date.now();for(let g of m)S-g.createdAt>r&&await a.removeEntry(s,g.id);let h=await a.getEntries(s);if(h.length>o){let v=h.sort((w,M)=>w.accessedAt-M.accessedAt).slice(0,h.length-o);for(let w of v)await a.removeEntry(s,w.id);}}return {async lookup(m,S){let h=Date.now();try{let g=await e(m),v=await a.getEntries(s),w=xr(g,v,n,l?S:void 0);return w?(await a.updateEntry(s,w.entry.id,{accessedAt:Date.now(),accessCount:w.entry.accessCount+1}),p.totalHits++,d+=w.similarity,f(v),c?.(w.entry,w.similarity),{hit:!0,entry:w.entry,similarity:w.similarity,latencyMs:Date.now()-h}):(p.totalMisses++,f(v),i?.(m),{hit:!1,latencyMs:Date.now()-h})}catch(g){return p.totalMisses++,u?.(g instanceof Error?g:new Error(String(g))),{hit:false,latencyMs:Date.now()-h}}},async store(m,S,h,g={}){let v=await e(m),w={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,query:m,queryEmbedding:v,response:S,metadata:g,createdAt:Date.now(),accessedAt:Date.now(),accessCount:0,agentName:l?h:void 0};await a.addEntry(s,w),await y();let M=await a.getEntries(s);f(M);},async invalidate(m){let S=await a.getEntries(s),h=0;for(let v of S)m(v)&&(await a.removeEntry(s,v.id),h++);let g=await a.getEntries(s);return f(g),h},async clear(){await a.clear(s),p={totalEntries:0,totalHits:0,totalMisses:0,hitRate:0,avgSimilarityOnHit:0,oldestEntry:null,newestEntry:null},d=0;},getStats(){return {...p}},async export(){return a.getEntries(s)},async import(m){for(let h of m)await a.addEntry(s,h);await y();let S=await a.getEntries(s);f(S);}}}function Tr(t){let{cache:e}=t;return async n=>{let o=await e.lookup(n.input,n.agentName);return o.hit&&o.entry?{passed:false,cacheHit:true,reason:`Cache hit (similarity: ${(o.similarity*100).toFixed(1)}%)`,cachedResponse:o.entry.response,similarity:o.similarity}:{passed:true,cacheHit:false}}}function Pr(t=128){return async e=>{let n=new Array(t).fill(0);for(let r=0;r<e.length;r++){let s=e.charCodeAt(r);n[r%t]+=s/256;}let o=Math.sqrt(n.reduce((r,s)=>r+s*s,0));if(o>0)for(let r=0;r<t;r++)n[r]/=o;return n}}function kr(t){let{batchSize:e=20,embedBatch:n,maxWaitMs:o=50}=t;if(e<1||!Number.isFinite(e))throw new Error(`[Directive SemanticCache] batchSize must be >= 1, got ${e}`);let r=[],s=null,a=false;async function c(){if(r.length===0)return;let i=r;r=[],s&&(clearTimeout(s),s=null);try{let u=i.map(p=>p.text),l=await n(u);if(l.length!==i.length)throw new Error(`[Directive SemanticCache] embedBatch returned ${l.length} embeddings for ${i.length} texts. The embedBatch function must return exactly one embedding per input text.`);for(let p=0;p<i.length;p++)i[p].resolve(l[p]);}catch(u){let l=u instanceof Error?u:new Error(String(u));for(let p of i)p.reject(l);}}return {async embed(i){if(a)throw new Error("BatchedEmbedder has been destroyed");return new Promise((u,l)=>{r.push({text:i,resolve:u,reject:l}),r.length>=e?c():s||(s=setTimeout(c,o));})},async flush(){await c();},destroy(){a=true,s&&(clearTimeout(s),s=null);let i=r;r=[];let u=new Error("BatchedEmbedder destroyed");for(let l of i)l.reject(u);}}}function Ir(){let t=new Map,e=null;function n(o){if(e===null)e=o.length;else if(o.length!==e)throw new Error(`[Directive ANNIndex] Dimension mismatch: expected ${e}, got ${o.length}`)}return {add(o,r){n(r),t.set(o,r);},remove(o){t.delete(o);},search(o,r,s=0){if(e!==null&&o.length!==e)throw new Error(`[Directive ANNIndex] Query dimension mismatch: expected ${e}, got ${o.length}`);let a=[];for(let[c,i]of t){let u=J(o,i);u>=s&&a.push({id:c,similarity:u});}return a.sort((c,i)=>i.similarity-c.similarity),a.slice(0,r)},rebuild(){},size(){return t.size},clear(){t.clear(),e=null;},needsRebuild(){return false}}}function qe(t,e){return 1-J(t,e)}function Ee(t,e){if(t.length===0)return null;let n=Math.floor(e()*t.length),o=t[n],r=t.filter((l,p)=>p!==n);if(r.length===0)return {id:o.id,embedding:o.embedding,mu:0,left:null,right:null};let s=r.map(l=>({item:l,distance:qe(o.embedding,l.embedding)}));s.sort((l,p)=>l.distance-p.distance);let a=Math.floor(s.length/2),c=s[a].distance,i=s.slice(0,a).map(l=>l.item),u=s.slice(a).map(l=>l.item);return {id:o.id,embedding:o.embedding,mu:c,left:Ee(i,e),right:Ee(u,e)}}function ee(t,e,n,o,r,s){if(!t)return;let a=qe(e,t.embedding),c=1-a;c>=o&&(r.push({id:t.id,similarity:c}),r.sort((i,u)=>u.similarity-i.similarity),r.length>n&&r.pop(),r.length===n&&(s.value=1-r[r.length-1].similarity)),a<t.mu?(ee(t.left,e,n,o,r,s),a+s.value>=t.mu&&ee(t.right,e,n,o,r,s)):(ee(t.right,e,n,o,r,s),a-s.value<=t.mu&&ee(t.left,e,n,o,r,s));}function Dr(t={}){let{random:e=Math.random}=t,n=new Map,o=null,r=false,s=null;function a(c){if(s===null)s=c.length;else if(c.length!==s)throw new Error(`[Directive ANNIndex] Dimension mismatch: expected ${s}, got ${c.length}`)}return {add(c,i){a(i),n.set(c,i),r=true;},remove(c){n.delete(c),r=true;},search(c,i,u=0){if(s!==null&&c.length!==s)throw new Error(`[Directive ANNIndex] Query dimension mismatch: expected ${s}, got ${c.length}`);if(r||!o){let d=[];for(let[f,y]of n){let m=J(c,y);m>=u&&d.push({id:f,similarity:m});}return d.sort((f,y)=>y.similarity-f.similarity),d.slice(0,i)}let l=[],p={value:Number.POSITIVE_INFINITY};return ee(o,c,i,u,l,p),l},rebuild(){let c=Array.from(n.entries()).map(([i,u])=>({id:i,embedding:u}));o=Ee(c,e),r=false;},size(){return n.size},clear(){n.clear(),o=null,r=false,s=null;},needsRebuild(){return r}}}function we(t={}){let{bufferSize:e=100}=t;if(e<1||!Number.isFinite(e))throw new Error(`[Directive StreamChannel] bufferSize must be >= 1, got ${e}`);let n=[],o="open",r=null,s=null,a=null,c=false;function i(f){if(s){let y=s;s=null,y.resolve({value:f,done:false});}}function u(){if(s){let f=s;s=null,f.resolve({value:void 0,done:true});}}function l(f){if(s){let y=s;s=null,c=false,y.reject(f);}}function p(){if(a){let f=a;a=null,f();}}return {async send(f){if(o!=="open")throw new Error(`[Directive StreamChannel] Cannot send to ${o} channel${t.name?` "${t.name}"`:""}`);if(s){i(f);return}if(n.length>=e){if(await new Promise(y=>{a=y;}),o!=="open")throw new Error(`[Directive StreamChannel] Cannot send to ${o} channel${t.name?` "${t.name}"`:""}`);if(s){i(f);return}}n.push(f);},end(){o==="open"&&(o="closed",u());},error(f){o==="open"&&(o="error",r=f,l(f),p());},getState(){return o},bufferedCount(){return n.length},[Symbol.asyncIterator](){if(c)throw new Error("[Directive StreamChannel] Channel only supports a single consumer. Create a separate channel for each consumer.");return c=true,{next(){if(o==="error"&&r)return c=false,Promise.reject(r);if(n.length>0){let f=n.shift();return p(),Promise.resolve({value:f,done:false})}return o==="closed"?(c=false,Promise.resolve({value:void 0,done:true})):new Promise((f,y)=>{s={resolve:f,reject:y};})},return(){return o="closed",n.length=0,c=false,p(),Promise.resolve({value:void 0,done:true})}}}}}function Or(t){let e=we(t),n=we(t);return {sideA:{send:o=>e.send(o),receive:n,close(){e.end(),n.end();}},sideB:{send:o=>n.send(o),receive:e,close(){e.end(),n.end();}}}}async function $r(t,e,n){try{for await(let o of t){let r=await n(o);await e.send(r);}e.end();}catch(o){e.error(o instanceof Error?o:new Error(String(o)));}}function Nr(...t){return {[Symbol.asyncIterator](){let n=[],o=0,r=null,s=null,a=false,c=false,i=[];function u(l){if(r){let p=r;return r=null,p(l),true}return false}for(let l of t){let p=l[Symbol.asyncIterator]();i.push(p),(async()=>{try{for(;!a;){let d=await p.next();if(d.done||a)break;u({value:d.value,done:!1})||(n.length<1e4?n.push(d.value):c||(c=!0,console.warn("[Directive mergeStreams] Buffer exceeded 10000 items. Values are being dropped. Ensure the consumer keeps up or use bounded StreamChannel sources.")));}}catch(d){a||(a=true,s=d instanceof Error?d:new Error(String(d)),u({value:void 0,done:true}));}o++,o>=t.length&&!a&&u({value:void 0,done:true});})();}return {next(){return s?Promise.reject(s):n.length>0?Promise.resolve({value:n.shift(),done:false}):o>=t.length?Promise.resolve({value:void 0,done:true}):new Promise(l=>{r=l;})},return(){a=true,n.length=0;for(let l of i)l.return?.({value:void 0,done:true});if(r){let l=r;r=null,l({value:void 0,done:true});}return Promise.resolve({value:void 0,done:true})}}}}}function _r(t,e){let n=t.metadata.title??"",o=t.metadata.section??"",r=t.metadata.url??"";return `${n&&o&&r?`[${n} \u2014 ${o}](${r})`:n||t.id}
|
|
29
|
-
${t.content}`}function jr(t,e){return t.length===0?"":`Relevant documentation context:
|
|
20
|
+
SUMMARY:`;return r(a)}}var qr=1e4,Qr=10080*60*1e3,Xr=6e4,Z="0".repeat(64);function Yr(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function Zr(r){return new TextEncoder().encode(r)}function en(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function ee(r){let e=Zr(r),t=await globalThis.crypto.subtle.digest("SHA-256",e);return en(new Uint8Array(t))}function te(r){let{id:e,timestamp:t,eventType:n,previousHash:s,payload:c,actorId:a,sessionId:u}=r;return JSON.stringify({id:e,timestamp:t,eventType:n,previousHash:s,payload:c,actorId:a,sessionId:u})}function tn(r){return JSON.parse(JSON.stringify(r))}async function rn(r,e){let t=tn(r);async function n(s){if(typeof s=="string"){let c=await chunkA5K77UDX_cjs.l(s,{types:e.types,minConfidence:e.minConfidence??.7});if(c.detected){let a=e.allowlist?c.items.filter(u=>!e.allowlist.includes(u.value.toLowerCase())):c.items;if(a.length>0)return chunkA5K77UDX_cjs.i(s,a,e.redactionStyle)}return s}if(Array.isArray(s))return Promise.all(s.map(n));if(s&&typeof s=="object"){let c={};for(let[a,u]of Object.entries(s))c[a]=await n(u);return c}return s}for(let[s,c]of Object.entries(t))t[s]=await n(c);return t}function nn(r={}){let{maxEntries:e=qr,retentionMs:t=Qr,exportInterval:n=Xr,exporter:s,piiMasking:c,signing:a,sessionId:u,actorId:o,events:m={}}=r,d=[],b=0,y=0,p=0,f=true,C;function E(){return d.length===0?Z:d[d.length-1].hash}async function v(l,g,S){let A={id:Yr(),timestamp:Date.now(),eventType:l,previousHash:E(),payload:g,actorId:o,sessionId:u};c?.enabled&&(A.maskedPayload=await rn(g,c));let x=te(A),w=await ee(x),P={...A,hash:w};for(a&&(P.signature=await a.signFn(w)),d.push(P);d.length>e;)d.shift(),y++,b>0&&b--;return m.onEntryAdded?.(P),P}return s&&n>0&&(C=setInterval(async()=>{try{let l=d.slice(b);l.length>0&&(await s(l),p+=l.length,b=d.length);}catch(l){m.onExportError?.(l instanceof Error?l:new Error(String(l)),d.slice(b));}},n)),{getEntries(l){let g=[...d];if(l){if(l.eventTypes?.length){let S=new Set(l.eventTypes);g=g.filter(A=>S.has(A.eventType));}l.actorId&&(g=g.filter(S=>S.actorId===l.actorId)),l.sessionId&&(g=g.filter(S=>S.sessionId===l.sessionId)),l.since!==void 0&&(g=g.filter(S=>S.timestamp>=l.since)),l.until!==void 0&&(g=g.filter(S=>S.timestamp<=l.until)),l.offset!==void 0&&(g=g.slice(l.offset)),l.limit!==void 0&&(g=g.slice(0,l.limit));}return g},async verifyChain(){if(d.length===0)return {valid:true,entriesVerified:0,verifiedAt:Date.now()};d[0].previousHash;for(let g=0;g<d.length;g++){let S=d[g],A=te({id:S.id,timestamp:S.timestamp,eventType:S.eventType,previousHash:S.previousHash,payload:S.payload,actorId:S.actorId,sessionId:S.sessionId}),x=await ee(A);if(S.hash!==x){f=false;let w={valid:false,entriesVerified:g,brokenAt:{index:g,entryId:S.id,expectedHash:x,actualHash:S.hash},verifiedAt:Date.now()};return m.onChainBroken?.(w),w}if(g>0){let w=d[g-1];if(S.previousHash!==w.hash){f=false;let P={valid:false,entriesVerified:g,brokenAt:{index:g,entryId:S.id,expectedHash:w.hash,actualHash:S.previousHash},verifiedAt:Date.now()};return m.onChainBroken?.(P),P}}if(a?.verifyFn&&S.signature&&!await a.verifyFn(S.hash,S.signature)){f=false;let P={valid:false,entriesVerified:g,brokenAt:{index:g,entryId:S.id,expectedHash:"signature-invalid",actualHash:S.signature},verifiedAt:Date.now()};return m.onChainBroken?.(P),P}}return f=true,{valid:true,entriesVerified:d.length,verifiedAt:Date.now()}},async export(l){let g=[...d];return l!==void 0&&(g=g.filter(S=>S.timestamp>=l)),s&&g.length>0&&(await s(g),p+=g.length),g},prune(){let l=Date.now()-t,g=d.length;for(;d.length>0&&d[0].timestamp<l;)d.shift(),b>0&&b--;let S=g-d.length;return y+=S,S},getStats(){let l={};for(let g of d)l[g.eventType]=(l[g.eventType]??0)+1;return {totalEntries:d.length,byEventType:l,oldestEntry:d[0]?.timestamp,newestEntry:d[d.length-1]?.timestamp,entriesPruned:y,entriesExported:p,chainIntegrity:f}},async destroy(){if(C&&(clearInterval(C),C=void 0),s)try{let l=d.slice(b);l.length>0&&(await s(l),p+=l.length);}catch(l){m.onExportError?.(l instanceof Error?l:new Error(String(l)),d.slice(b));}},addEntry(l,g){return v(l,g)},createPlugin(){return {name:"audit-trail",onFactSet:(l,g,S)=>{v("fact.set",{key:l,value:g,prev:S}).catch(console.error);},onFactsBatch:l=>{v("fact.batch",{changes:l.map(g=>({key:g.key,value:g.value,prev:g.prev}))}).catch(console.error);},onRequirementCreated:l=>{v("requirement.created",{id:l.id,type:l.requirement.type,payload:l.requirement}).catch(console.error);},onRequirementMet:(l,g)=>{v("requirement.met",{id:l.id,type:l.requirement.type,byResolver:g}).catch(console.error);},onResolverStart:(l,g)=>{v("resolver.start",{resolver:l,requirementId:g.id,requirementType:g.requirement.type}).catch(console.error);},onResolverComplete:(l,g,S)=>{v("resolver.complete",{resolver:l,requirementId:g.id,requirementType:g.requirement.type,duration:S}).catch(console.error);},onResolverError:(l,g,S)=>{v("resolver.error",{resolver:l,requirementId:g.id,requirementType:g.requirement.type,error:S instanceof Error?S.message:String(S)}).catch(console.error);},onError:l=>{v("error.occurred",{source:l.source,sourceId:l.sourceId,message:l.message,context:l.context}).catch(console.error);},onErrorRecovery:(l,g)=>{v("error.recovery",{source:l.source,message:l.message,strategy:g}).catch(console.error);}}}}}function on(r){return {onAgentStart:(e,t)=>{r.addEntry("agent.run.start",{agentName:e,input:t});},onAgentComplete:(e,t,n,s)=>{r.addEntry("agent.run.complete",{agentName:e,output:t,tokens:n,cost:s});},onAgentError:(e,t)=>{r.addEntry("agent.run.error",{agentName:e,error:t.message,stack:t.stack});},onToolStart:(e,t,n)=>{r.addEntry("tool.call.start",{toolName:e,toolCallId:t,args:n});},onToolComplete:(e,t,n)=>{r.addEntry("tool.call.complete",{toolName:e,toolCallId:t,result:n});},onToolError:(e,t,n)=>{r.addEntry("tool.call.error",{toolName:e,toolCallId:t,error:n.message});},onApprovalRequested:(e,t,n)=>{r.addEntry("approval.requested",{toolName:e,toolCallId:t,args:n});},onApprovalGranted:(e,t)=>{r.addEntry("approval.granted",{toolName:e,toolCallId:t});},onApprovalDenied:(e,t,n)=>{r.addEntry("approval.denied",{toolName:e,toolCallId:t,reason:n});}}}function an(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function sn(r){return new TextEncoder().encode(r)}function cn(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function re(r){let e=sn(r),t=await globalThis.crypto.subtle.digest("SHA-256",e);return cn(new Uint8Array(t))}function un(r){if(r.length===0)return "";let e=new Set;for(let s of r)for(let c of Object.keys(s))e.add(c);let t=Array.from(e),n=[t.join(",")];for(let s of r){let c=t.map(a=>{let u=s[a];if(u==null)return "";if(typeof u=="object")return JSON.stringify(u).replace(/"/g,'""');let o=String(u);return o.includes(",")||o.includes(`
|
|
21
|
+
`)||o.includes('"')?`"${o.replace(/"/g,'""')}"`:o});n.push(c.join(","));}return n.join(`
|
|
22
|
+
`)}function ln(){let r=new Map,e=new Map,t=new Map;return {async getSubjectData(n,s){let c=[];for(let[a,u]of r){if(s&&!s.includes(a))continue;let o=u.get(n);o&&o.length>0&&c.push({category:a,records:[...o]});}return c},async deleteSubjectData(n,s){let c=0;for(let[a,u]of r){if(s&&!s.includes(a))continue;let o=u.get(n);o&&(c+=o.length,u.delete(n));}return c},async anonymizeSubjectData(n,s){let c=0;for(let[a,u]of r){if(s&&!s.includes(a))continue;let o=u.get(n);if(o)for(let m of o)m.data={...m.data,_anonymized:true,_anonymizedAt:Date.now()},c++;}return c},async getExpiredData(n,s){let c=[],a=r.get(n);if(a)for(let u of a.values())for(let o of u)o.createdAt<s&&c.push({id:o.id,createdAt:o.createdAt});return c},async deleteByIds(n){let s=new Set(n),c=0;for(let a of r.values())for(let[u,o]of a){let m=o.filter(d=>!s.has(d.id));m.length!==o.length&&(c+=o.length-m.length,m.length===0?a.delete(u):a.set(u,m));}return c},async storeConsent(n){e.set(`${n.subjectId}:${n.purpose}`,n);},async getConsent(n,s){return e.get(`${n}:${s}`)??null},async getConsentsBySubject(n){let s=[];for(let[c,a]of e)c.startsWith(`${n}:`)&&s.push(a);return s},async getConsentsByPurpose(n){let s=[];for(let[c,a]of e)c.endsWith(`:${n}`)&&s.push(a);return s},async storeDeletionCertificate(n){t.set(n.subjectId,n);}}}function dn(r){let{storage:e,retention:t,exportExpirationMs:n=864e5,events:s={}}=r,c={async grant(a,u,o={}){let m={subjectId:a,purpose:u,granted:true,grantedAt:Date.now(),expiresAt:o.expiresAt,source:o.source,version:o.version};return await e.storeConsent(m),s.onConsentChange?.(m),m},async revoke(a,u){let o=await e.getConsent(a,u);if(!o)return null;let m={...o,granted:false,revokedAt:Date.now()};return await e.storeConsent(m),s.onConsentChange?.(m),m},async check(a,u){let o=await e.getConsent(a,u);return !(!o||!o.granted||o.expiresAt&&o.expiresAt<Date.now())},async getForSubject(a){return e.getConsentsBySubject(a)},async getForPurpose(a){return e.getConsentsByPurpose(a)}};return {async exportData(a){try{let u=await e.getSubjectData(a.subjectId,a.categories),o=[],m=[];for(let{category:p,records:f}of u){m.push(p);for(let C of f)o.push({category:p,...C});}if(a.includeAudit&&e.getAuditEntries){let p=await e.getAuditEntries(a.subjectId);m.push("audit");for(let f of p)o.push({category:"audit",id:f.id,data:f.payload,createdAt:f.timestamp});}let d;a.format==="csv"?d=un(o.map(p=>({category:p.category,id:p.id,createdAt:new Date(p.createdAt).toISOString(),...p.data}))):d=JSON.stringify({subjectId:a.subjectId,exportedAt:new Date().toISOString(),recordCount:o.length,categories:m,records:o},null,2);let b=await re(d),y={success:!0,subjectId:a.subjectId,format:a.format,data:d,categories:m,recordCount:o.length,checksum:b,exportedAt:Date.now(),expiresAt:Date.now()+n};return s.onExport?.(y),y}catch(u){return {success:false,subjectId:a.subjectId,format:a.format,data:"",categories:[],recordCount:0,checksum:"",exportedAt:Date.now(),error:u instanceof Error?u.message:String(u)}}},async deleteData(a){try{let u=0,o=[];a.anonymize?u=await e.anonymizeSubjectData(a.subjectId,a.categories):u=await e.deleteSubjectData(a.subjectId,a.categories),a.categories?o.push(...a.categories):a.scope==="all"&&o.push("all");let m=JSON.stringify({subjectId:a.subjectId,type:a.anonymize?"anonymization":"hard",scope:a.scope,categories:o,recordCount:u,deletedAt:Date.now(),reason:a.reason}),d={id:an(),subjectId:a.subjectId,type:a.anonymize?"anonymization":"hard",scope:a.scope,categories:o,recordCount:u,deletedAt:Date.now(),reason:a.reason,hash:await re(m)};await e.storeDeletionCertificate(d);let b={success:!0,subjectId:a.subjectId,scope:a.scope,anonymized:a.anonymize??!1,recordsAffected:u,categoriesAffected:o,certificate:d,deletedAt:Date.now()};return s.onDelete?.(b),b}catch(u){return {success:false,subjectId:a.subjectId,scope:a.scope,anonymized:a.anonymize??false,recordsAffected:0,categoriesAffected:[],certificate:{id:"error",subjectId:a.subjectId,type:"hard",scope:a.scope,categories:[],recordCount:0,deletedAt:Date.now(),hash:""},deletedAt:Date.now(),error:u instanceof Error?u.message:String(u)}}},consent:c,async enforceRetention(){if(!t)return 0;let a=0,u=Date.now(),o=new Set;if(t.categoryRetention)for(let m of Object.keys(t.categoryRetention))o.add(m);o.add("default");for(let m of o){let d=t.categoryRetention?.[m]??t.defaultRetentionMs,b=u-d,y=await e.getExpiredData(m,b);if(y.length>0){await t.onBeforeDelete?.({category:m,count:y.length});let p=await e.deleteByIds(y.map(f=>f.id));a+=p,t.onAfterDelete?.({category:m,count:p}),s.onRetentionEnforced?.(m,p);}}return a},createConsentGuardrail(a){return async u=>{let m=u.input.match(/user[_-]?id[:\s]*([a-zA-Z0-9-]+)/i)?.[1];return m?await c.check(m,a)?{passed:true}:{passed:false,reason:`No consent for '${a}' from subject ${m}`}:{passed:true}}},async getDeletionCertificate(a){return null}}}function K(r={}){let{bufferSize:e=100}=r;if(e<1||!Number.isFinite(e))throw new Error(`[Directive StreamChannel] bufferSize must be >= 1, got ${e}`);let t=[],n="open",s=null,c=null,a=null,u=false;function o(p){if(c){let f=c;c=null,f.resolve({value:p,done:false});}}function m(){if(c){let p=c;c=null,p.resolve({value:void 0,done:true});}}function d(p){if(c){let f=c;c=null,u=false,f.reject(p);}}function b(){if(a){let p=a;a=null,p();}}return {async send(p){if(n!=="open")throw new Error(`[Directive StreamChannel] Cannot send to ${n} channel${r.name?` "${r.name}"`:""}`);if(c){o(p);return}if(t.length>=e){if(await new Promise(f=>{a=f;}),n!=="open")throw new Error(`[Directive StreamChannel] Cannot send to ${n} channel${r.name?` "${r.name}"`:""}`);if(c){o(p);return}}t.push(p);},end(){n==="open"&&(n="closed",m());},error(p){n==="open"&&(n="error",s=p,d(p),b());},getState(){return n},bufferedCount(){return t.length},[Symbol.asyncIterator](){if(u)throw new Error("[Directive StreamChannel] Channel only supports a single consumer. Create a separate channel for each consumer.");return u=true,{next(){if(n==="error"&&s)return u=false,Promise.reject(s);if(t.length>0){let p=t.shift();return b(),Promise.resolve({value:p,done:false})}return n==="closed"?(u=false,Promise.resolve({value:void 0,done:true})):new Promise((p,f)=>{c={resolve:p,reject:f};})},return(){return n="closed",t.length=0,u=false,b(),Promise.resolve({value:void 0,done:true})}}}}}function pn(r){let e=K(r),t=K(r);return {sideA:{send:n=>e.send(n),receive:t,close(){e.end(),t.end();}},sideB:{send:n=>t.send(n),receive:e,close(){e.end(),t.end();}}}}async function gn(r,e,t){try{for await(let n of r){let s=await t(n);await e.send(s);}e.end();}catch(n){e.error(n instanceof Error?n:new Error(String(n)));}}function mn(...r){return {[Symbol.asyncIterator](){let t=[],n=0,s=null,c=null,a=false,u=false,o=[];function m(d){if(s){let b=s;return s=null,b(d),true}return false}for(let d of r){let b=d[Symbol.asyncIterator]();o.push(b),(async()=>{try{for(;!a;){let y=await b.next();if(y.done||a)break;m({value:y.value,done:!1})||(t.length<1e4?t.push(y.value):u||(u=!0,console.warn("[Directive mergeStreams] Buffer exceeded 10000 items. Values are being dropped. Ensure the consumer keeps up or use bounded StreamChannel sources.")));}}catch(y){a||(a=true,c=y instanceof Error?y:new Error(String(y)),m({value:void 0,done:true}));}n++,n>=r.length&&!a&&m({value:void 0,done:true});})();}return {next(){return c?Promise.reject(c):t.length>0?Promise.resolve({value:t.shift(),done:false}):n>=r.length?Promise.resolve({value:void 0,done:true}):new Promise(d=>{s=d;})},return(){a=true,t.length=0;for(let d of o)d.return?.({value:void 0,done:true});if(s){let d=s;s=null,d({value:void 0,done:true});}return Promise.resolve({value:void 0,done:true})}}}}}function fn(r,e){let t=r.metadata.title??"",n=r.metadata.section??"",s=r.metadata.url??"";return `${t&&n&&s?`[${t} \u2014 ${n}](${s})`:t||r.id}
|
|
23
|
+
${r.content}`}function yn(r,e){return r.length===0?"":`Relevant documentation context:
|
|
30
24
|
|
|
31
|
-
${
|
|
25
|
+
${r.join(`
|
|
32
26
|
|
|
33
|
-
`)}`}function
|
|
27
|
+
`)}`}function hn(r,e,t){return Math.max(e,Math.min(t,r))}function Sn(r){let{embedder:e,storage:t,topK:n=5,minSimilarity:s=.3,formatChunk:c=fn,formatContext:a=yn,onError:u}=r,o=hn(s,0,1);typeof process<"u"&&process.env?.NODE_ENV==="development"&&s!==o&&console.warn(`[Directive] RAG: minSimilarity ${s} clamped to ${o} (valid range: 0-1)`);async function m(b,y){let p=Math.max(1,Math.floor(y??n));if(t.search)return t.search(await e(b),p,o);let f=await e(b),E=(await t.getChunks()).map(v=>({...v,similarity:chunkA5K77UDX_cjs.u(f,v.embedding)}));return E.sort((v,l)=>l.similarity-v.similarity),E.filter(v=>v.similarity>=o).slice(0,p)}async function d(b,y={}){let{prefix:p,history:f,topK:C,filter:E}=y,v=[];try{v=await m(b,C);}catch(A){u?.(A instanceof Error?A:new Error(String(A)));}E&&(v=v.filter(A=>E(A)));let l=v.map(A=>c(A,A.similarity)),g=a(l,b),S=[];if(p&&S.push(p),g&&S.push(g),f&&f.length>0){let A=f.map(x=>`${x.role.charAt(0).toUpperCase()+x.role.slice(1)}: ${x.content}`).join(`
|
|
34
28
|
|
|
35
|
-
`);
|
|
36
|
-
${
|
|
29
|
+
`);S.push(`Previous conversation:
|
|
30
|
+
${A}`);}return S.push(b),S.join(`
|
|
37
31
|
|
|
38
32
|
---
|
|
39
33
|
|
|
40
|
-
`)}return {retrieve:
|
|
34
|
+
`)}return {retrieve:m,enrich:d}}function vn(r,e){let t=___default.default.resolve(r);if(t.split(___default.default.sep).includes(".."))throw new Error(`[Directive] File path escapes allowed directory: ${r}`);if(e){let s=___default.default.resolve(e)+___default.default.sep;if(!t.startsWith(s)&&t!==s.slice(0,-1))throw new Error(`[Directive] File path escapes allowed directory: ${r}`)}return t}function bn(r){let{filePath:e,mapEntry:t,ttlMs:n=0,baseDir:s}=r,c=vn(e,s),a=null,u=0;async function o(){if(a&&(n===0||Date.now()-u<n))return a;try{let d=await(await import('fs')).promises.readFile(c,"utf-8"),b=JSON.parse(d);return a=t?b.map(t):b,u=Date.now(),a}catch(m){return typeof process<"u"&&process.env?.NODE_ENV==="development"&&console.warn(`[Directive] JSONFileStore: failed to load ${c}:`,m),a=[],u=Date.now(),a}}return {async getChunks(){return o()},async size(){return (await o()).length},async reload(){a=null,u=0,await o();},destroy(){a=null,u=0;}}}var ne="AI service temporarily unavailable. Please try again.";function Cn(r={}){let{maxResponseChars:e=Number.POSITIVE_INFINITY,truncationMessage:t=`
|
|
41
35
|
|
|
42
|
-
*[Response truncated]*`,heartbeatIntervalMs:
|
|
36
|
+
*[Response truncated]*`,heartbeatIntervalMs:n=0,errorMessages:s,headers:c}=r;if(e<0)throw new RangeError("maxResponseChars must be non-negative");if(n<0)throw new RangeError("heartbeatIntervalMs must be non-negative");function a(m){if(typeof s=="function")try{return s(m)}catch{return ne}if(s&&typeof s=="object"){let d=m!=null&&typeof m=="object"&&"code"in m&&typeof m.code=="string"?m.code:void 0;if(d&&d in s)return s[d]}return ne}function u(m,d,b,y){let p=new TextEncoder;function f(C){return p.encode(`data: ${JSON.stringify(C)}
|
|
43
37
|
|
|
44
|
-
`)}return new ReadableStream({async start(
|
|
38
|
+
`)}return new ReadableStream({async start(C){let E=null,v=null;try{n>0&&(E=setInterval(()=>{try{C.enqueue(f({type:"heartbeat",timestamp:Date.now()}));}catch{}},n)),v=m.stream(d,b,{signal:y?.signal});let l=0,g=!1;for await(let S of v){if(l+=S.length,l>e){C.enqueue(f({type:"truncated",text:t})),C.enqueue(f({type:"done"})),g=!0,v.abort();break}C.enqueue(f({type:"text",text:S}));}try{await v.result;}catch{}g||C.enqueue(f({type:"done"}));}catch(l){let g=a(l);C.enqueue(f({type:"error",message:g}));}finally{E&&clearInterval(E),C.close();}}})}let o={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive",...c};return {toResponse(m,d,b,y){let p=u(m,d,b,y);return new Response(p,{headers:o})},toStream(m,d,b,y){return u(m,d,b,y)}}}var N=class extends Error{retryCount;lastError;constructor(e,t){super(`[Directive] All ${e} retries exhausted: ${t.message}`),this.name="RetryExhaustedError",this.retryCount=e,this.lastError=t,this.cause=t;}},Rn=new Set([400,401,403,404,422]);function W(r){let e=r;if(typeof e.status=="number"&&e.status>=100&&e.status<=599)return e.status;if(typeof e.statusCode=="number"&&e.statusCode>=100&&e.statusCode<=599)return e.statusCode;let n=(r.message.length>1e3?r.message.slice(0,1e3):r.message).match(/(?:failed|error|status|http)[:\s]+(\d{3})\b/i);if(!n)return null;let s=Number(n[1]);return s>=100&&s<=599?s:null}function oe(r){let e=r;if(typeof e.retryAfter=="number"&&e.retryAfter>0)return e.retryAfter*1e3;let n=(r.message.length>1e3?r.message.slice(0,1e3):r.message).match(/retry[- ]?after[:\s]+(\d+)/i);if(!n)return null;let s=Number(n[1]);return s>0?s*1e3:null}function En(r,e,t){let n=e*2**(r-1),s=Math.random()*e*.5,c=n+s;return Math.min(c,t)}function An(r,e,t,n){if(W(r)===429){let c=oe(r);if(c!==null)return Math.min(c,n)}return En(e,t,n)}function Tn(r){let e=W(r);return e===null?true:!Rn.has(e)}function wn(r,e={}){let{maxRetries:t=3,baseDelayMs:n=1e3,maxDelayMs:s=3e4,isRetryable:c,onRetry:a}=e;if(!Number.isFinite(t)||t<0)throw new Error("[Directive] withRetry: maxRetries must be a non-negative finite number.");if(!Number.isFinite(n)||n<0)throw new Error("[Directive] withRetry: baseDelayMs must be a non-negative finite number.");if(!Number.isFinite(s)||s<0)throw new Error("[Directive] withRetry: maxDelayMs must be a non-negative finite number.");return async(u,o,m)=>{let d;for(let b=0;b<=t;b++)try{return await r(u,o,m)}catch(y){if(d=y instanceof Error?y:new Error(String(y)),b>=t)break;if(c)try{if(!c(d))break}catch{break}if(!Tn(d))break;let p=An(d,b+1,n,s);try{a?.(b+1,d,p);}catch{}let f=m?.signal;if(f?.aborted)break;await new Promise((C,E)=>{let v=setTimeout(()=>{f?.removeEventListener("abort",l),C();},p);function l(){clearTimeout(v),E(f.reason??new Error("Aborted"));}f&&f.addEventListener("abort",l,{once:true});});}throw new N(t,d)}}var F=class extends Error{errors;constructor(e){let t=e.map((n,s)=>` [${s}] ${n.message}`).join(`
|
|
45
39
|
`);super(`[Directive] All ${e.length} providers failed:
|
|
46
|
-
${n}`),this.name="AllProvidersFailedError",this.errors=Object.freeze([...e]),e.length>0&&(this.cause=e[e.length-1]);}};function Kr(t,e={}){if(t.length===0)throw new Error("[Directive] withFallback requires at least one runner.");let{shouldFallback:n,onFallback:o}=e;return async(r,s,a)=>{let c=[];for(let i=0;i<t.length;i++)try{return await t[i](r,s,a)}catch(u){let l=u instanceof Error?u:new Error(String(u));if(c.push(l),i<t.length-1){if(n)try{if(!n(l))break}catch{break}try{o?.(i,i+1,l);}catch{}}}throw new ue(c)}}var te=class extends Error{estimated;remaining;window;constructor(e){super(`[Directive] Budget exceeded (${e.window}): estimated $${e.estimated.toFixed(4)}, remaining $${e.remaining.toFixed(4)}`),this.name="BudgetExceededError",this.estimated=e.estimated,this.remaining=e.remaining,this.window=e.window;}},le=class{entries=[];record(e){this.entries.push({timestamp:Date.now(),cost:e});}getCostInWindow(e){let n=Date.now()-e;this.prune(n);let o=0;for(let r of this.entries)r.timestamp>=n&&(o+=r.cost);return o}prune(e){let n=0;for(;n<this.entries.length&&this.entries[n].timestamp<e;)n++;n>0&&this.entries.splice(0,n);}clear(){this.entries=[];}},Ke={hour:3600*1e3,day:1440*60*1e3};function Wr(t,e){return Math.ceil(t.length/e)}function We(t,e){return t.inputTokens/1e6*e.inputPerMillion+t.outputTokens/1e6*e.outputPerMillion}function Ye(t,e,n=1){let o=Math.ceil(t*n);return t/1e6*e.inputPerMillion+o/1e6*e.outputPerMillion}function Yr(t,e){let{maxCostPerCall:n,budgets:o=[],pricing:r,charsPerToken:s=4,estimatedOutputMultiplier:a=1,onBudgetExceeded:c}=e;if(!Number.isFinite(s)||s<=0)throw new Error("[Directive] withBudget: charsPerToken must be a positive finite number.");if(n!=null&&(!Number.isFinite(n)||n<0))throw new Error("[Directive] withBudget: maxCostPerCall must be a non-negative finite number.");if(!Number.isFinite(a)||a<0)throw new Error("[Directive] withBudget: estimatedOutputMultiplier must be a non-negative finite number.");n!=null&&!r&&console.warn("[Directive] withBudget: maxCostPerCall has no effect without pricing. Provide a pricing config to enable per-call cost estimation.");for(let d of o)if(!Number.isFinite(d.maxCost)||d.maxCost<0)throw new Error(`[Directive] withBudget: budgets[${d.window}].maxCost must be a non-negative finite number.`);let i=new Map;for(let d of o)i.set(d.window,new le);let u=new le,l=async(d,f,y)=>{let m=Wr(f,s);if(n!=null&&r){let h=Ye(m,r,a);if(h>n){let g={estimated:h,remaining:n,window:"per-call"};try{c?.(g);}catch{}throw new te(g)}}for(let h of o){let g=Ke[h.window],w=i.get(h.window).getCostInWindow(g),M=h.maxCost-w,x=Ye(m,h.pricing,a);if(x>M){let P={estimated:x,remaining:Math.max(0,M),window:h.window};try{c?.(P);}catch{}throw new te(P)}}let S=await t(d,f,y);if(S.tokenUsage){for(let h of o){let g=i.get(h.window),v=We(S.tokenUsage,h.pricing);g.record(v);}if(r&&o.length===0){let h=We(S.tokenUsage,r);u.record(h);}}return S};function p(d){let f=i.get(d);if(!f)return 0;let y=Ke[d];return f.getCostInWindow(y)}return l.getSpent=p,l}function Qr(t,e){return {match:(n,o)=>o.length<=t,model:e}}function Xr(t,e){return {match:n=>n.name===t,model:e}}function Zr(t,e){return {match:(n,o)=>(t.lastIndex=0,t.test(o)),model:e}}function eo(t,e){let n=Array.isArray(e)?{rules:e}:e,{rules:o,onModelSelected:r}=n;return async(s,a,c)=>{let i=s.model;for(let l of o)try{if(l.match(s,a)){i=l.model;break}}catch{}try{r?.(s.model,i);}catch{}let u=i!==s.model?{...s,model:i}:s;return t(u,a,c)}}function oo(t){let e=5381;for(let n=0;n<t.length;n++)e=(e<<5)+e^t.charCodeAt(n);return (e>>>0).toString(16)}async function so(t){try{let e=globalThis.crypto?.subtle;if(e&&typeof e.digest=="function"){let n=new TextEncoder,o=await e.digest("SHA-256",n.encode(t)),r=new Uint8Array(o),s="";for(let a of r)s+=a.toString(16).padStart(2,"0");return s}}catch{}return oo(t)}var ne=class extends Error{constructor(n,o,r,s){super(n);this.attempts=o;this.errors=r;this.lastRawOutput=s;}name="PredicateFromIntentError"},ao=`You emit ONLY a JSON object describing a Directive FactPredicate \u2014 no prose, no markdown fences, no explanation.
|
|
47
|
-
|
|
48
|
-
A FactPredicate is a JSON tree of fact paths and operators:
|
|
49
|
-
- Object form (preferred): { "factName": { "$op": operand }, "otherFact": { "$op": operand } }
|
|
50
|
-
- Combinators: { "$all": [predicateA, predicateB] }, { "$any": [...] }, { "$not": predicate }
|
|
51
|
-
- Bare value (equality shortcut): { "factName": value }
|
|
52
|
-
|
|
53
|
-
Operator set (CLOSED \u2014 only these are valid):
|
|
54
|
-
$eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $exists, $between,
|
|
55
|
-
$matches, $startsWith, $endsWith, $contains, $changed
|
|
56
|
-
Combinators: $all, $any, $not
|
|
57
|
-
|
|
58
|
-
Each operator is only valid for certain kinds (see below). Emit ONLY operators valid for the fact's kind.
|
|
59
|
-
`;function H(t){let e=t.nullable?" (nullable)":"";switch(t.kind){case "literal":return `literal ${JSON.stringify(t.value)} (${t.primitive})${e}`;case "enum":return `enum ${JSON.stringify(t.values)} (${t.primitive})${e}`;case "array":return `array of ${H(t.element)}${e}`;case "tuple":return `tuple [${t.elements.map(H).join(", ")}]${e}`;case "object":return `object { ${Object.entries(t.shape).map(([n,o])=>`${n}: ${H(o)}`).join(", ")} }${e}`;case "record":return `record<string, ${H(t.value)}>${e}`;case "union":return `union (${t.members.map(H).join(" | ")})${e}`;case "branded":return `branded(${H(t.inner)})${e}`;default:return `${t.kind}${e}`}}function io(t,e){let n=[ao];n.push(`
|
|
60
|
-
Facts in this schema (path \u2192 kind \u2192 allowed operators):`);for(let[o,r]of t.entries()){if(e&&!o.startsWith(e))continue;let s=core.getOperatorsForKind(r);n.push(` ${o}: ${H(r)} \u2014 allowed: ${s.join(", ")}`);}return e&&n.push(`
|
|
61
|
-
The user intent will be over the namespace "${e}". Use only facts at or below that path.`),n.push(`
|
|
62
|
-
Respond with ONLY the JSON predicate object. No prose. No markdown fences. No "Here is...".`),n.join(`
|
|
63
|
-
`)}function co(t,e,n){let o=[];o.push("Your previous response was rejected. Original intent (still applies):"),o.push(` ${t}`);let r=null;if(typeof n=="string")o.push(`
|
|
64
|
-
Reason: ${n}`);else {o.push(`
|
|
65
|
-
Validation errors (fix every one):`),r=new Set;for(let s of n)o.push(` - path "${s.path}", op "${s.op}": ${s.reason}`),s.allowedOps&&s.allowedOps.length>0&&o.push(` \u2192 allowed operators for this fact: ${s.allowedOps.join(", ")}`),r.add(s.path);}if(o.push(`
|
|
66
|
-
Schema reminder:`),r&&r.size>0){let s=0;for(let c of r){let i=e.get(c);if(i){let u=core.getOperatorsForKind(i);o.push(` ${c}: ${H(i)} \u2014 allowed: ${u.join(", ")}`),s++;}else o.push(` ${c}: (not in schema \u2014 pick from the available facts below)`);}let a=e.size-s;a>0&&o.push(` \u2026and ${a} more fact(s) available \u2014 ask if you need the full list.`);}else for(let[s,a]of e.entries()){let c=core.getOperatorsForKind(a);o.push(` ${s}: ${H(a)} \u2014 allowed: ${c.join(", ")}`);}return o.push(`
|
|
67
|
-
Emit ONLY a corrected JSON FactPredicate object. No prose.`),o.join(`
|
|
68
|
-
`)}function uo(t,e,n){if(t.length>n.maxPredicateBytes)return {ok:false,reason:`Output exceeded maxPredicateBytes=${n.maxPredicateBytes} (got ${t.length}). Emit a smaller predicate.`};let o;try{o=chunkX3VQ5F7D_cjs.H(t);}catch(s){return {ok:false,reason:`Could not extract JSON from output: ${s instanceof Error?s.message:String(s)}`}}try{core.validatePredicate(o);}catch(s){return {ok:false,reason:`Structural validation failed: ${s instanceof Error?s.message:String(s)}`}}let r=core.validatePredicateAgainstSchema(o,e,{maxOperatorCount:n.maxOperatorCount,maxArrayOperandLength:n.maxArrayOperandLength});return r.ok?{ok:true,predicate:o}:{ok:false,reason:`Predicate has ${r.errors.length} schema-validation error(s).`,details:r.errors}}var lo=3,po=65536,go=256,mo=1e3;async function fo(t){let e=await Ce(t);if(e.predicate===null)throw new ne(`[Directive] predicateFromIntent: failed after ${e.attempts} attempt(s). Last error: ${e.errors[e.errors.length-1]?.reason??"unknown"}`,e.attempts,e.errors,e.lastRawOutput);return e.predicate}async function Ce(t){let{intent:e,schema:n,runner:o,agent:r,factPath:s,maxRetries:a=lo,maxPredicateBytes:c=po,maxOperatorCount:i=go,maxArrayOperandLength:u=mo,redact:l,signal:p}=t;if(typeof e!="string"||e.length===0)throw new Error("[Directive] predicateFromIntent: `intent` must be a non-empty string.");let d=l?l(e):e,f=core.getSchemaFieldKinds(n);if(f.size===0)throw new Error("[Directive] predicateFromIntent: schema has no introspectable facts. Pass a module schema or a bare facts record.");let y=io(f,s),m=r??{name:"predicate-emitter"},S={...m,instructions:`${m.instructions??""}
|
|
69
|
-
|
|
70
|
-
${y}`.trim()},h=[],g,v=0,w={maxPredicateBytes:c,maxOperatorCount:i,maxArrayOperandLength:u};for(;v<a+1;){if(p?.aborted)throw new Error("aborted");v++;let M=v===1?`Intent: ${d}
|
|
71
|
-
|
|
72
|
-
Emit the predicate now.`:co(d,f,h[h.length-1].details??h[h.length-1].reason),x;try{x=await o(S,M,{signal:p});}catch(b){if(p?.aborted)throw new Error("aborted");h.push({attempt:v,reason:`LLM runner threw: ${b instanceof Error?b.message:String(b)}`});continue}let P=typeof x.output=="string"?x.output:JSON.stringify(x.output);g=P;let O=uo(P,f,w);if(O.ok)return {predicate:O.predicate,attempts:v,errors:h,lastRawOutput:g};h.push({attempt:v,reason:O.reason,details:O.details});}return {predicate:null,attempts:v,errors:h,lastRawOutput:g}}function Xe(t,e){let n=core.getSchemaFieldKinds(t),o=[];for(let[r,s]of n.entries()){if(e&&!r.startsWith(e))continue;let a=core.getOperatorsForKind(s);o.push(`${r}: ${H(s)} \u2014 ops: ${a.join(", ")}`);}return o.join(`
|
|
73
|
-
`)}function Ze(t,e){return e??`Emit a Directive FactPredicate (JSON tree of facts and operators) matching the user's intent. Schema:
|
|
74
|
-
${t}`}function yo(t,e={}){let n=Xe(t,e.factPath),o=e.name??"emit_predicate",r=Ze(n,e.description);return {type:"function",function:{name:o,description:r,parameters:{type:"object",properties:{predicate:{type:"object"}},required:["predicate"]}},schemaSummary:n}}function et(t,e={}){let n=Xe(t,e.factPath),o=e.name??"emit_predicate",r=Ze(n,e.description);return {name:o,description:r,input_schema:{type:"object",properties:{predicate:{type:"object"}},required:["predicate"]},schemaSummary:n}}function ho(t,e={}){return et(t,e)}async function bo(t){let e=await Ce(t);if(e.predicate===null)throw new ne(`[Directive] predicateFromIntentWithProvenance: failed after ${e.attempts} attempt(s). Last error: ${e.errors[e.errors.length-1]?.reason??"unknown"}`,e.attempts,e.errors,e.lastRawOutput);let n=t.redact?t.redact(t.intent):t.intent,o=t.agent?.model??"unknown",r=core.predicateHash(e.predicate),s=await so(n),a=t.redactIntent?{model:o,intentHash:s,attemptCount:e.attempts,emittedAt:new Date().toISOString(),predicateHash:r}:{model:o,intent:n,intentHash:s,attemptCount:e.attempts,emittedAt:new Date().toISOString(),predicateHash:r};return {predicate:e.predicate,provenance:a}}function vo(t,e={}){let{maxBatchSize:n=20,maxWaitMs:o=5e3,concurrency:r=5}=e;if(!Number.isFinite(n)||n<1)throw new Error("[Directive] createBatchQueue: maxBatchSize must be a positive finite number (>= 1).");if(!Number.isFinite(o)||o<0)throw new Error("[Directive] createBatchQueue: maxWaitMs must be a non-negative finite number.");if(!Number.isFinite(r)||r<1)throw new Error("[Directive] createBatchQueue: concurrency must be a positive finite number (>= 1).");let s=[],a=null,c=false,i=null;function u(){a===null&&(a=setTimeout(()=>{a=null,d().catch(()=>{});},o));}function l(){a!==null&&(clearTimeout(a),a=null);}async function p(f){let y=0;async function m(){for(;y<f.length;){let h=y++,g=f[h];try{let v=await t(g.agent,g.input,g.options);g.resolve(v);}catch(v){g.reject(v instanceof Error?v:new Error(String(v)));}}}let S=Array.from({length:Math.min(r,f.length)},()=>m());await Promise.all(S);}async function d(){if(i&&await i,s.length===0)return;l();let f=s.splice(0);i=p(f).finally(()=>{i=null,s.length>0&&u();}),await i;}return {submit(f,y,m){return c?Promise.reject(new Error("[Directive] BatchQueue has been destroyed.")):new Promise((S,h)=>{s.push({agent:f,input:y,options:m,resolve:S,reject:h}),s.length>=n?(l(),d().catch(()=>{})):u();})},async flush(){await d();},get pending(){return s.length},async destroy(){c||(c=true,l(),s.length>0&&await d());}}}function tt(){return {callCount:0,errorCount:0,totalCost:0,avgLatencyMs:0,lastErrorAt:null}}function So(t,e){return !t||!e?0:t.inputTokens/1e6*e.inputPerMillion+t.outputTokens/1e6*e.outputPerMillion}function Eo(t){let{providers:e,defaultProvider:n,constraints:o=[],onProviderSelected:r,errorCooldownMs:s=3e4,preferCheapest:a=false}=t;if(!Number.isFinite(s)||s<0)throw new Error("[Directive] createConstraintRouter: errorCooldownMs must be a non-negative finite number.");let c=new Map;for(let y of e)c.set(y.name,y);if(!c.has(n))throw new Error(`[Directive] Default provider "${n}" not found in providers list.`);let i={totalCost:0,callCount:0,errorCount:0,lastProvider:null,avgLatencyMs:0,providers:Object.create(null)};for(let y of e)i.providers[y.name]=tt();let u=0,l=[...o].sort((y,m)=>(m.priority??0)-(y.priority??0));function p(){let y=Date.now();for(let S of l)try{if(S.when(i)){let h=c.get(S.provider);if(h)return {provider:h,reason:"constraint"}}}catch{}let m=e.filter(S=>{let h=i.providers[S.name];return h?!(h.lastErrorAt&&y-h.lastErrorAt<s):true});if(a&&m.length>0){let S=[...m].sort((h,g)=>{let v=h.pricing?h.pricing.inputPerMillion+h.pricing.outputPerMillion:Number.POSITIVE_INFINITY,w=g.pricing?g.pricing.inputPerMillion+g.pricing.outputPerMillion:Number.POSITIVE_INFINITY;return v!==w?v-w:h.name===n?-1:g.name===n?1:0});if(S[0]!==c.get(n))return {provider:S[0],reason:"cheapest"}}return m.length>0&&!m.some(S=>S.name===n)?{provider:m[0],reason:"default"}:{provider:c.get(n),reason:"default"}}function d(y,m,S,h,g){let v=i.providers[y]??tt();if(v.callCount++,i.callCount++,g)v.errorCount++,i.errorCount++,v.lastErrorAt=Date.now();else {let M=So(S,h);v.totalCost+=M,i.totalCost+=M;}u+=m,i.avgLatencyMs=u/i.callCount;let w=v.callCount>0?(v.avgLatencyMs*(v.callCount-1)+m)/v.callCount:m;v.avgLatencyMs=w,i.providers[y]=v,i.lastProvider=y;}let f=async(y,m,S)=>{let{provider:h,reason:g}=p();try{r?.(h.name,g);}catch{}let v=Date.now();try{let w=await h.runner(y,m,S),M=Date.now()-v;return d(h.name,M,w.tokenUsage,h.pricing),w}catch(w){let M=Date.now()-v,x=w instanceof Error?w:new Error(String(w));throw d(h.name,M,void 0,h.pricing,x),x}};return Object.defineProperty(f,"facts",{get:()=>{let y=Object.create(null);for(let m of Object.keys(i.providers))y[m]={...i.providers[m]};return {...i,providers:y}},enumerable:true}),f}function nt(t){let{transport:e,timeline:n,healthMonitor:o,getSnapshot:r,getBreakpointState:s,onResumeBreakpoint:a,onCancelBreakpoint:c,getScratchpadState:i,getDerivedState:u,onForkFromSnapshot:l,batchSize:p=1,batchIntervalMs:d=50,healthPushIntervalMs:f=0,authenticate:y}=t,m=t.maxClients??50,S=`devtools_${crypto.randomUUID()}`,h=new Set,g=new Set,v=[],w=null,M=null;function x(R,_){try{R.send(JSON.stringify(_));}catch{h.delete(R);}}function P(R){let _=JSON.stringify(R),k=[...h];for(let L of k)try{L.send(_);}catch{h.delete(L);}}function O(){v.length!==0&&(v.length===1?P({type:"event",event:v[0]}):P({type:"event_batch",events:v}),v=[]);}let b=n.subscribe(R=>{if(h.size!==0){if(p<=1){P({type:"event",event:R});return}v.push(R),v.length>=p&&O();}});p>1&&d>0&&(w=setInterval(O,d)),f>0&&o&&(M=setInterval(()=>{h.size>0&&P({type:"health",metrics:o.getAllMetrics()});},f));function C(R,_){let k;try{k=JSON.parse(_);}catch{x(R,{type:"error",code:"INVALID_JSON",message:"Could not parse message"});return}if(!k||typeof k!="object"||typeof k.type!="string"){x(R,{type:"error",code:"INVALID_MESSAGE",message:"Missing type field"});return}let L=Date.now(),G=T.get(R)??0;if(L-G<D){x(R,{type:"error",code:"RATE_LIMITED",message:"Too many requests"});return}if(T.set(R,L),k.type==="authenticate"){if(!y){x(R,{type:"error",code:"UNKNOWN_COMMAND",message:"Authentication not configured on this server"});return}if(!g.has(R)){x(R,{type:"error",code:"ALREADY_AUTHENTICATED",message:"Already authenticated"});return}if(typeof k.token!="string"){x(R,{type:"error",code:"AUTH_FAILED",message:"Missing token"}),R.close(),g.delete(R);return}let N=y(k.token),U=V=>{V?(g.delete(R),h.add(R),x(R,{type:"welcome",version:1,sessionId:S,timestamp:Date.now()})):(x(R,{type:"error",code:"AUTH_FAILED",message:"Invalid token"}),g.delete(R),R.close());};N instanceof Promise?N.then(U).catch(()=>{x(R,{type:"error",code:"AUTH_FAILED",message:"Authentication error"}),g.delete(R),R.close();}):U(N);return}if(g.has(R)){x(R,{type:"error",code:"AUTH_REQUIRED",message:"Authentication required"});return}switch(k.type){case "ping":x(R,{type:"pong",timestamp:Date.now()});break;case "request_snapshot":r?x(R,{type:"snapshot",data:r()}):x(R,{type:"error",code:"NO_SNAPSHOT",message:"Snapshot provider not configured"});break;case "request_health":o?x(R,{type:"health",metrics:o.getAllMetrics()}):x(R,{type:"error",code:"NO_HEALTH",message:"Health monitor not configured"});break;case "request_events":{let N=n.getEvents(),U=k.since,V=U!=null?N.filter(ge=>ge.id>U):N;x(R,{type:"event_batch",events:V});break}case "request_breakpoints":s?x(R,{type:"breakpoints",state:s()}):x(R,{type:"error",code:"NO_BREAKPOINTS",message:"Breakpoint provider not configured"});break;case "resume_breakpoint":if(a&&typeof k.breakpointId=="string"){let N=k.modifications?{input:k.modifications.input,skip:k.modifications.skip}:void 0;a(k.breakpointId,N);}else x(R,{type:"error",code:"NO_BREAKPOINTS",message:"Breakpoint resume not configured"});break;case "cancel_breakpoint":if(c&&typeof k.breakpointId=="string"){let N=typeof k.reason=="string"?k.reason:void 0;c(k.breakpointId,N);}else x(R,{type:"error",code:"NO_BREAKPOINTS",message:"Breakpoint cancel not configured"});break;case "export_session":x(R,{type:"event_batch",events:n.getEvents()});break;case "import_session":{if(typeof k.data!="string")x(R,{type:"error",code:"INVALID_DATA",message:"Missing data field for import"});else if(k.data.length>10485760)x(R,{type:"error",code:"IMPORT_TOO_LARGE",message:`Import data exceeds ${10485760/1024/1024} MB limit`});else try{n.import(k.data),x(R,{type:"event_batch",events:n.getEvents()});}catch(U){let V=U instanceof Error?U.message:String(U);x(R,{type:"error",code:"IMPORT_FAILED",message:V});}break}case "request_scratchpad":i?x(R,{type:"scratchpad_state",data:i()}):x(R,{type:"error",code:"NO_SCRATCHPAD",message:"Scratchpad provider not configured"});break;case "request_derived":u?x(R,{type:"derived_state",data:u()}):x(R,{type:"error",code:"NO_DERIVED",message:"Derived state provider not configured"});break;case "fork_from_snapshot":{if(l&&typeof k.eventId=="number")try{let N=l(k.eventId);x(R,{type:"fork_complete",eventId:k.eventId,newEventCount:N.newEventCount});}catch(N){let U=N instanceof Error?N.message:String(N);x(R,{type:"error",code:"FORK_FAILED",message:U});}else x(R,{type:"error",code:"NO_FORK",message:"Fork provider not configured"});break}default:x(R,{type:"error",code:"UNKNOWN_COMMAND",message:`Unknown message type: ${String(k.type).slice(0,100)}`});}}let T=new Map,D=50;return e.onConnection((R,_,k)=>{if(h.size+g.size>=m){try{let L={type:"error",code:"MAX_CLIENTS",message:"Connection limit reached"};R.send(JSON.stringify(L));}catch{}R.close();return}y?g.add(R):(h.add(R),x(R,{type:"welcome",version:1,sessionId:S,timestamp:Date.now()})),_(L=>C(R,L)),k(()=>{h.delete(R),g.delete(R),T.delete(R);});}),{get clientCount(){return h.size},broadcast(R){P(R);},pushHealth(){o&&h.size>0&&P({type:"health",metrics:o.getAllMetrics()});},pushBreakpoints(){s&&h.size>0&&P({type:"breakpoints",state:s()});},pushScratchpadUpdate(R,_){h.size>0&&P({type:"scratchpad_update",key:R,value:_});},pushDerivedUpdate(R,_){h.size>0&&P({type:"derived_update",id:R,value:_});},pushTokenStream(R,_,k){h.size>0&&P({type:"token_stream",agentId:R,tokens:_,tokenCount:k});},pushStreamDone(R,_){h.size>0&&P({type:"stream_done",agentId:R,totalTokens:_});},close(){b(),w&&(clearInterval(w),w=null),M&&(clearInterval(M),M=null),O();for(let R of h)try{R.close();}catch{}for(let R of g)try{R.close();}catch{}h.clear(),g.clear(),T.clear(),e.close();}}}async function wo(t,e={}){if(!t.timeline)throw new Error("[Directive DevTools] Orchestrator must have debug: true to use DevTools");let n=await rt({port:e.port??4040,host:e.host??"localhost"});return nt({transport:n,timeline:t.timeline,healthMonitor:t.healthMonitor,healthPushIntervalMs:e.healthPushIntervalMs??5e3,batchSize:e.batchSize,authenticate:e.authenticate,getSnapshot:t.getAllAgentStates?()=>{let o=t.getAllAgentStates();return {timestamp:Date.now(),agents:o,eventCount:t.timeline.getEvents().length}}:void 0,getBreakpointState:t.getPendingBreakpoints?()=>({pending:t.getPendingBreakpoints(),resolved:[],cancelled:[]}):void 0,onResumeBreakpoint:t.resumeBreakpoint,onCancelBreakpoint:t.cancelBreakpoint,getScratchpadState:t.getScratchpadState,getDerivedState:t.getDerivedState,onForkFromSnapshot:t.timeline?.forkFrom?o=>(t.timeline.forkFrom(o),{newEventCount:t.timeline.getEvents().length}):void 0})}async function rt(t={}){let e=t.port??4040,n=t.host??"localhost",{WebSocketServer:o}=await import('ws'),r=new o({port:e,host:n,maxPayload:t.maxPayloadBytes??1048576}),s=null;return r.on("connection",a=>{let c=null,i=null,u={send(l){a.readyState===a.OPEN&&a.send(l);},close(){a.close();}};a.on("message",l=>{c&&c(l.toString());}),a.on("close",()=>{i&&i();}),s?.(u,l=>{c=l;},l=>{i=l;});}),{onConnection(a){s=a;},close(){r.close();}}}function re(t){return Number.isFinite(t)?t:0}function Ae(t){let e=Object.keys(t),n=new Map;for(let[d,f]of Object.entries(t))for(let y of f.produces){if(n.has(y))throw new Error(`[Directive Goal] Fact key "${y}" is produced by both "${n.get(y)}" and "${d}". Each fact key must have exactly one producer.`);n.set(y,d);}let o=[],r=new Map,s=new Map;for(let d of e)r.set(d,0),s.set(d,[]);for(let[d,f]of Object.entries(t))for(let y of f.requires??[]){let m=n.get(y);m&&m!==d&&(o.push({from:m,to:d,factKey:y}),s.get(m).push(d),r.set(d,(r.get(d)??0)+1));}let a=[];for(let[d,f]of r)f===0&&a.push(d);let c=[],i=0;for(;i<a.length;){let d=a[i++];c.push(d);for(let f of s.get(d)??[]){let y=(r.get(f)??1)-1;r.set(f,y),y===0&&a.push(f);}}if(c.length!==e.length){let d=new Set(c),f=e.filter(y=>!d.has(y));throw new Error(`[Directive Goal] Circular dependency detected among agents: ${f.join(", ")}. Review their produces/requires declarations.`)}let u=c.filter(d=>(t[d].requires??[]).every(m=>!n.has(m)||n.get(m)===d)),l=new Set;for(let d of o)l.add(d.from);let p=e.filter(d=>!l.has(d));return {order:c,edges:o,roots:u,leaves:p,producers:n}}function Ro(t){let e=Ae(t);return {order:[...e.order],edges:[...e.edges],roots:[...e.roots],leaves:[...e.leaves],producers:new Map(e.producers)}}function Co(t){let e=[],n=[];Object.keys(t).length===0&&e.push("No agents declared");for(let[r,s]of Object.entries(t))s.produces.length===0&&n.push(`Agent "${r}" has no produces \u2014 it will never contribute`);let o=new Set;for(let r of Object.values(t))for(let s of r.produces)o.add(s);for(let[r,s]of Object.entries(t))for(let a of s.requires??[])o.has(a)||n.push(`Agent "${r}" requires "${a}" which no agent produces \u2014 must be in initial facts`);try{Ae(t);}catch(r){e.push(r instanceof Error?r.message:String(r));}return {valid:e.length===0,errors:e,warnings:n}}function Ao(t,e=[],n=50){let o=Ae(t),r=new Set;for(let l of Object.values(t))for(let p of l.produces)r.add(p);let s=[];for(let l of Object.values(t))for(let p of l.requires??[])r.has(p)||s.push(p);let a=new Set(e),c=new Set,i=[];for(let l=1;l<=n;l++){let p=o.order.filter(f=>c.has(f)?false:(t[f].requires??[]).every(S=>a.has(S)));if(p.length===0)break;let d=[];for(let f of p){c.add(f);for(let y of t[f].produces)a.has(y)||(d.push(y),a.add(y));}i.push({step:l,agents:p,availableFacts:[...a],producedFacts:d});}let u=Object.keys(t).filter(l=>!c.has(l));return {steps:i,unreachableAgents:u,externalDeps:[...new Set(s)],feasible:u.length===0}}function xo(t){let e=t.stepMetrics.map(u=>{let l=re(u.satisfaction),p=re(u.satisfactionDelta),d=u.nodesRun.join(", "),f=u.factsProduced.length>0?u.factsProduced.join(", "):"none",y=+re(l-p).toFixed(3),m=p>=0?`+${p.toFixed(3)}`:p.toFixed(3),S=`Step ${u.step}: Ran ${d}. Produced: ${f}. Satisfaction: ${y} \u2192 ${l.toFixed(3)} (${m}). ${u.tokensConsumed} tokens, ${u.durationMs}ms.`;return {step:u.step,agents:u.nodesRun,factsProduced:u.factsProduced,satisfaction:l,satisfactionDelta:p,durationMs:u.durationMs,tokensConsumed:u.tokensConsumed,description:S}}),n=t.relaxations.map(u=>{let l;switch(u.strategy){case "allow_rerun":l=`Step ${u.step}: Applied relaxation "${u.label}" \u2014 re-enabled completed nodes for another run.`;break;case "inject_facts":l=`Step ${u.step}: Applied relaxation "${u.label}" \u2014 injected fact values to unblock dependencies.`;break;case "accept_partial":l=`Step ${u.step}: Applied relaxation "${u.label}" \u2014 accepted current facts as partial result.`;break;case "alternative_nodes":l=`Step ${u.step}: Applied relaxation "${u.label}" \u2014 added alternative nodes to the graph.`;break;case "custom":l=`Step ${u.step}: Applied relaxation "${u.label}" \u2014 ran custom recovery logic.`;break;default:l=`Step ${u.step}: Applied relaxation "${u.label}" (${u.strategy}).`;}return {step:u.step,label:u.label,strategy:u.strategy,description:l}}),o=t.stepMetrics.length>0?re(t.stepMetrics[0].satisfaction-t.stepMetrics[0].satisfactionDelta).toFixed(3):"0",r=t.stepMetrics.length>0?re(t.stepMetrics[t.stepMetrics.length-1].satisfaction).toFixed(3):"0",s=t.achieved?"Goal achieved":"Goal not achieved",a=t.relaxations.length>0?` ${t.relaxations.length} relaxation(s) applied.`:"",c=t.error?` Error: ${t.error}`:"",i=`${s} in ${t.steps} step(s) (${t.totalTokens.toLocaleString()} tokens, ${t.durationMs}ms). Satisfaction: ${o} \u2192 ${r}.`+a+c;return {achieved:t.achieved,summary:i,steps:e,relaxations:n,totalTokens:t.totalTokens,durationMs:t.durationMs}}function Mo(t,e=false){let n=false,o=[],r=[],s=e?(a,...c)=>console.debug(`[MCP Stub] ${a}`,...c):()=>{};return {async connect(){s(`Connecting to ${t.name} (${t.transport})`),n=true;},async disconnect(){n=false;},isConnected(){return n},getCapabilities(){return {tools:true,resources:true,prompts:true}},async listTools(){return o},async callTool(a,c){return s(`Calling tool ${a}`,c),{content:[{type:"text",text:`Stub result for ${a}`}]}},async listResources(){return r},async readResource(a){return s(`Reading resource ${a}`),{contents:[{uri:a,text:`Stub content for ${a}`}]}},async listPrompts(){return []},async getPrompt(a){return {messages:[{role:"user",content:{type:"text",text:`Stub prompt ${a}`}}]}}}}function To(t,e,n){let o=Date.now(),r=t.get(e);return !r||o>r.resetTime?(t.set(e,{count:1,resetTime:o+6e4}),true):r.count>=n?false:(r.count++,true)}function Po(t){let{servers:e,toolConstraints:n={},resourceMappings:o=[],events:r={},autoConnect:s=false,autoReconnect:a=true,debug:c=false,allowDirectCalls:i=false}=t;!t.clientFactory&&(typeof process<"u"&&process.env?.NODE_ENV==="production"?console.warn(`[Directive MCP] WARNING: Using stub MCP client in production!
|
|
75
|
-
The stub client returns mock data and does not connect to real MCP servers.
|
|
76
|
-
Provide a real 'clientFactory' option to connect to actual MCP servers:
|
|
77
|
-
|
|
78
|
-
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
79
|
-
|
|
80
|
-
const adapter = createMCPAdapter({
|
|
81
|
-
servers: [...],
|
|
82
|
-
clientFactory: (config) => new Client(config),
|
|
83
|
-
});`):c&&console.debug("[Directive MCP] Using stub client for development. Provide 'clientFactory' for production use."));let l=t.clientFactory??(b=>Mo(b,c)),p=t.approvalTimeoutMs??3e5,d={servers:new Map,toolConstraints:new Map(Object.entries(n)),rateLimiters:new Map,pendingApprovals:new Map,approvedRequests:new Set,rejectedRequests:new Set},f=0,y=new Map,m=new Map;function S(b){return new Promise((C,T)=>{if(d.approvedRequests.has(b)){d.approvedRequests.delete(b),d.pendingApprovals.delete(b),r.onApprovalResolved?.(b,true),C();return}if(d.rejectedRequests.has(b)){d.rejectedRequests.delete(b),d.pendingApprovals.delete(b);let R=m.get(b);m.delete(b),r.onApprovalResolved?.(b,false),T(new Error(`[Directive MCP] Tool call request ${b} was rejected${R?`: ${R}`:""}`));return}let D=setTimeout(()=>{y.delete(b),d.pendingApprovals.delete(b),T(new Error(`[Directive MCP] Approval timeout: Request ${b} was not approved or rejected within ${p}ms. Call adapter.approve("${b}") or adapter.reject("${b}") to resolve.`));},p);y.set(b,{resolve:C,reject:T,timeoutId:D});})}function h(b,C,T){let D=y.get(b);D?(clearTimeout(D.timeoutId),y.delete(b),d.pendingApprovals.delete(b),r.onApprovalResolved?.(b,C),C?D.resolve():D.reject(new Error(`[Directive MCP] Tool call request ${b} was rejected${T?`: ${T}`:""}`))):(C?d.approvedRequests.add(b):(d.rejectedRequests.add(b),T&&m.set(b,T)),setTimeout(()=>{d.approvedRequests.delete(b),d.rejectedRequests.delete(b),m.delete(b),d.pendingApprovals.delete(b);},p));}let g=new Map;for(let b of e)d.servers.set(b.name,{config:b,client:null,tools:[],resources:[],status:"disconnected"}),g.set(b.name,{timer:null,attempts:0,maxAttempts:b.retry?.maxAttempts??10,baseDelay:b.retry?.backoffMs??5e3});function v(b){let C=/[;|&$`><]/;if(b.command&&C.test(b.command))throw new Error(`[Directive MCP] Stdio command for server '${b.name}' contains shell metacharacters: '${b.command}'. This may indicate a command injection vulnerability. Use 'args' for command arguments instead.`);if(b.args){for(let T of b.args)if(C.test(T))throw new Error(`[Directive MCP] Stdio argument for server '${b.name}' contains shell metacharacters: '${T}'. This may indicate a command injection vulnerability.`)}}async function w(b){let C=d.servers.get(b);if(!C)throw new Error(`Unknown MCP server: ${b}`);if(C.status!=="connected"){C.config.transport==="stdio"&&v(C.config),C.status="connecting";try{let T=l(C.config);await T.connect(),C.client=T,C.status="connected";let D=g.get(b);D&&(D.attempts=0,D.timer&&(clearTimeout(D.timer),D.timer=null)),T.getCapabilities().tools&&(C.tools=await T.listTools()),T.getCapabilities().resources&&(C.resources=await T.listResources()),C.lastSync=Date.now(),r.onConnect?.(b);}catch(T){if(C.status="error",C.error=T instanceof Error?T:new Error(String(T)),r.onError?.(b,C.error),a){let D=g.get(b);if(D&&D.attempts<D.maxAttempts){D.attempts++;let R=Math.min(D.baseDelay*2**(D.attempts-1)+Math.random()*1e3,6e4);D.timer=setTimeout(()=>{D.timer=null,w(b).catch(()=>{});},R);}else D&&console.error(`[Directive MCP] Max reconnect attempts (${D.maxAttempts}) reached for server '${b}'. Call adapter.connectServer("${b}") to retry manually.`);}throw C.error}}}async function M(b){let C=g.get(b);C?.timer&&(clearTimeout(C.timer),C.timer=null,C.attempts=0);let T=d.servers.get(b);if(!(!T||!T.client))try{await T.client.disconnect();}finally{T.status="disconnected",T.client=null,r.onDisconnect?.(b);}}async function x(b,C,T,D){let R=d.servers.get(b);if(!R)throw new Error(`[Directive MCP] Unknown server '${b}'. Available servers: ${Array.from(d.servers.keys()).join(", ")||"(none)"}`);if(!R.client)throw new Error(`[Directive MCP] Server '${b}' is not connected. Call 'adapter.connect()' or 'adapter.connectServer("${b}")' first.`);let _=`${b}.${C}`,k=d.toolConstraints.get(_);if(k){if(k.rateLimit){let G=d.rateLimiters.get(_);if(!To(d.rateLimiters,_,k.rateLimit)){let N=G?.resetTime?new Date(G.resetTime).toISOString():"unknown";throw new Error(`[Directive MCP] Rate limit exceeded for '${_}': ${G?.count??0}/${k.rateLimit} requests per minute. Resets at ${N}.`)}}if(k.maxArgSize){let G=JSON.stringify(T).length;if(G>k.maxArgSize)throw new Error(`Arguments exceed max size (${G} > ${k.maxArgSize})`)}if(k.when&&!await k.when(D,T))throw new Error(`Constraint not satisfied for ${_}`);if(k.requireApproval){let G=`approval-${++f}-${Date.now()}`,N={id:G,server:b,tool:C,args:T,requestedAt:Date.now()};d.pendingApprovals.set(G,N),r.onApprovalRequest?.(N),await S(G);}}r.onToolCall?.(b,C,T);let L=await Promise.race([R.client.callTool(C,T),new Promise((G,N)=>setTimeout(()=>N(new Error(`Tool call timeout: ${_}`)),k?.timeout??3e4))]);return r.onToolResult?.(b,C,L),L}let P={name:"mcp-adapter",onInit:async()=>{s&&await Promise.all(Array.from(d.servers.keys()).map(b=>w(b).catch(C=>console.error(`Failed to connect to ${b}:`,C))));},onDestroy:async()=>{for(let b of g.values())b.timer&&(clearTimeout(b.timer),b.timer=null);for(let[,b]of y)clearTimeout(b.timeoutId),b.reject(new Error("[Directive MCP] Adapter destroyed while awaiting approval"));y.clear(),await Promise.all(Array.from(d.servers.keys()).map(b=>M(b).catch(C=>console.error(`Failed to disconnect from ${b}:`,C))));}};async function O(b){for(let C of o)for(let[T,D]of d.servers)if(D.client){for(let R of D.resources)if(typeof C.pattern=="string"?Io(R.uri,C.pattern):C.pattern.test(R.uri))try{let k=await D.client.readResource(R.uri),L=k.contents[0]?.text??"",G=C.transform?C.transform(L):L;b[C.factKey]=G,r.onResourceUpdate?.(T,R.uri,k);}catch(k){console.error(`Failed to sync resource ${R.uri}:`,k);}}}return {plugin:P,async connect(){await Promise.all(Array.from(d.servers.keys()).map(w));},connectServer:w,async disconnect(){await Promise.all(Array.from(d.servers.keys()).map(M));},disconnectServer:M,getTools(){let b=new Map;for(let[C,T]of d.servers)b.set(C,T.tools);return b},getResources(){let b=new Map;for(let[C,T]of d.servers)b.set(C,T.resources);return b},async callTool(b,C,T,D){return x(b,C,T,D)},async callToolDirect(b,C,T){if(!i)throw new Error("[Directive] callToolDirect is disabled by default. Pass { allowDirectCalls: true } to enable unconstrained tool calls.");process.env.NODE_ENV!=="production"&&console.warn("[Directive] callToolDirect bypasses all constraints (rate limits, approvals, timeouts).");let D=d.servers.get(b);if(!D)throw new Error(`[Directive MCP] Unknown server '${b}'. Available servers: ${Array.from(d.servers.keys()).join(", ")||"(none)"}`);if(!D.client)throw new Error(`[Directive MCP] Server '${b}' is not connected. Call 'adapter.connect()' or 'adapter.connectServer("${b}")' first.`);r.onToolCall?.(b,C,T);let R=await D.client.callTool(C,T);return r.onToolResult?.(b,C,R),R},async readResource(b,C){let T=d.servers.get(b);if(!T)throw new Error(`[Directive MCP] Unknown server '${b}'. Available servers: ${Array.from(d.servers.keys()).join(", ")||"(none)"}`);if(!T.client)throw new Error(`[Directive MCP] Server '${b}' is not connected. Call 'adapter.connect()' or 'adapter.connectServer("${b}")' first.`);let D=await T.client.readResource(C);return r.onResourceUpdate?.(b,C,D),D},syncResources:O,getServerStatus(b){return d.servers.get(b)},getAllServerStatuses(){return new Map(d.servers)},approve(b){if(!d.pendingApprovals.get(b)&&!y.has(b))throw new Error(`[Directive MCP] No pending approval request with ID '${b}'. Pending requests: ${Array.from(d.pendingApprovals.keys()).join(", ")||"(none)"}`);h(b,true);},reject(b,C){if(!d.pendingApprovals.get(b)&&!y.has(b))throw new Error(`[Directive MCP] No pending approval request with ID '${b}'. Pending requests: ${Array.from(d.pendingApprovals.keys()).join(", ")||"(none)"}`);h(b,false,C);},getPendingApprovals(){return Array.from(d.pendingApprovals.values())},getRejectionReason(b){return m.get(b)}}}var oe=new Map,ko=200;function Io(t,e){let n=oe.get(e);if(!n){let o=e.replace(/\*\*/g,"\0GLOBSTAR\0").replace(/\*/g,"\0STAR\0").replace(/\?/g,"\0QUESTION\0").replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\0GLOBSTAR\0/g,".*").replace(/\0STAR\0/g,"[^/]*").replace(/\0QUESTION\0/g,".");if(n=new RegExp(`^${o}$`),oe.size>=ko){let r=oe.keys().next().value;r!==void 0&&oe.delete(r);}oe.set(e,n);}return n.test(t)}function Do(t){let e=[];for(let[n,o]of t)for(let r of o)e.push({type:"function",function:{name:`${n}.${r.name}`,description:r.description??`Tool: ${r.name}`,parameters:r.inputSchema}});return e}function Oo(t,e,n){return {type:"MCP_CALL_TOOL",server:t,tool:e,args:n}}function $o(t,e){return {type:"MCP_READ_RESOURCE",server:t,uri:e}}function No(t,e,n){return {type:"MCP_GET_PROMPT",server:t,prompt:e,args:n}}function _o(t,e){return {type:"MCP_SYNC_RESOURCES",server:t,pattern:e}}var xe=class{constructor(e){this.max=e;if(e<1)throw new Error(`[Directive Evals] concurrency must be >= 1, got ${e}`)}queue=[];active=0;async acquire(e){if(this.active<this.max){this.active++;return}return new Promise((n,o)=>{let r={resolve:n,reject:o};this.queue.push(r),e&&e.addEventListener("abort",()=>{let s=this.queue.indexOf(r);s!==-1&&(this.queue.splice(s,1),o(new Error("Semaphore acquire aborted")));},{once:true});})}release(){if(this.active<=0)return;this.active--;let e=this.queue.shift();e&&(this.active++,e.resolve());}};function jo(t,e){return typeof e=="function"?{name:t,fn:e,threshold:.5,weight:1}:{...e,name:t,threshold:e.threshold??.5,weight:e.weight??1}}function Fo(t,e){let n=0,o=0;for(let[r,s]of Object.entries(t)){let c=e[r]?.weight??1,i=Number.isFinite(s.score)?s.score:0;n+=i*c,o+=c;}return o===0?0:n/o}function Go(t,e){let n=0,o=0;for(let[r,s]of Object.entries(t)){let c=e[r]?.weight??1,i=Number.isFinite(s)?s:0;n+=i*c,o+=c;}return o===0?0:n/o}var ot={pii:[/\b\d{3}-\d{2}-\d{4}\b/,/\b(?:4\d{3}|5[1-5]\d{2}|6011)\d{12}\b/,/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/],violence:[/\b(kill|murder|attack|bomb|weapon|shoot|stab)\b/i],self_harm:[/\b(suicide|self[- ]harm|cut myself)\b/i],illegal:[/\b(hack into|break into|steal|counterfeit)\b/i]};function Lo(t){return {name:"cost",fn:e=>{let n=Date.now(),o=e.result.totalTokens,r=o/t.maxTokensPerRun,s;return r<=.5?s=1:r>=2?s=0:s=1-(r-.5)/1.5,{score:s,passed:o<=t.maxTokensPerRun,reason:`${o} tokens (budget: ${t.maxTokensPerRun})`,durationMs:Date.now()-n}},threshold:.5,weight:1}}function Bo(t){return {name:"latency",fn:e=>{let n=Date.now(),o=e.runDurationMs,r=o/t.maxMs,s;return r<=.5?s=1:r>=2?s=0:s=1-(r-.5)/1.5,{score:s,passed:o<=t.maxMs,reason:`${Math.round(o)}ms (max: ${t.maxMs}ms)`,durationMs:Date.now()-n}},threshold:.5,weight:1}}function Uo(t){if(t.minLength!==void 0&&t.maxLength!==void 0&&t.minLength>t.maxLength)throw new Error("[Directive Evals] evalOutputLength: minLength must be <= maxLength");return {name:"outputLength",fn:e=>{let n=Date.now(),r=String(e.result.output).length,s=t.minLength??0,a=t.maxLength??Number.POSITIVE_INFINITY,c=r>=s&&r<=a,i;return c?i=1:r<s?i=s>0?Math.max(0,r/s):0:i=a>0&&a!==Number.POSITIVE_INFINITY?Math.max(0,1-(r-a)/a):0,{score:i,passed:c,reason:`${r} chars (range: ${s}-${a===Number.POSITIVE_INFINITY?"\u221E":a})`,durationMs:Date.now()-n}},threshold:.5,weight:1}}function zo(t={}){let e;if(t.blockedPatterns)e=t.blockedPatterns;else if(t.categories&&t.categories.length>0){e=[];for(let n of t.categories){let o=ot[n];o&&e.push(...o);}}else {e=[];for(let n of Object.values(ot))e.push(...n);}return {name:"safety",fn:n=>{let o=Date.now(),r=String(n.result.output),s=[];for(let c of e)c.test(r)&&s.push(c.source);return {score:s.length===0?1:0,passed:s.length===0,reason:s.length===0?"No unsafe patterns detected":`Matched patterns: ${s.join(", ")}`,durationMs:Date.now()-o}},threshold:1,weight:2}}function Ho(t){return {name:"structure",fn:e=>{let n=Date.now(),o=e.result.output;if(t.type==="json")try{let s=typeof o=="string"?JSON.parse(o):o;if(!s||typeof s!="object"||Array.isArray(s))return {score:0,passed:!1,reason:"Output is not a valid JSON object",durationMs:Date.now()-n};if(t.requiredKeys&&s&&typeof s=="object"){let a=t.requiredKeys.filter(c=>!Object.hasOwn(s,c));if(a.length>0)return {score:1-a.length/t.requiredKeys.length,passed:!1,reason:`Missing keys: ${a.join(", ")}`,durationMs:Date.now()-n}}return {score:1,passed:!0,reason:"Valid JSON with all required keys",durationMs:Date.now()-n}}catch{return {score:0,passed:false,reason:"Output is not valid JSON",durationMs:Date.now()-n}}let r=String(o);return {score:r.length>0?1:0,passed:r.length>0,reason:r.length>0?"Non-empty output":"Empty output",durationMs:Date.now()-n}},threshold:.5,weight:1}}function qo(t){let e=t.promptTemplate??`You are evaluating an AI agent's output. Score it from 0.0 to 1.0.
|
|
84
|
-
|
|
85
|
-
Input: {{input}}
|
|
86
|
-
Expected: {{expected}}
|
|
87
|
-
Actual Output: {{output}}
|
|
88
|
-
|
|
89
|
-
Respond with ONLY a JSON object: {"score": <number>, "reason": "<brief explanation>"}`;return {name:"judge",fn:async n=>{let o=Date.now(),r=e.replaceAll("{{input}}",n.testCase.input).replaceAll("{{expected}}",n.testCase.expected??"N/A").replaceAll("{{output}}",String(n.result.output)),s=t.timeoutMs??3e4,a=new AbortController,c=setTimeout(()=>a.abort(),s),i=t.signal?chunk3WO4MWJM_cjs.e([t.signal,a.signal]):a.signal;try{let l=(await t.runner(t.judge,r,{signal:i})).output;if(typeof l!="string")return {score:0,passed:!1,reason:"Judge returned non-string output",durationMs:Date.now()-o};let p=JSON.parse(l),d=Math.max(0,Math.min(1,p.score));return {score:d,passed:d>=.5,reason:p.reason??`Judge score: ${d}`,durationMs:Date.now()-o}}catch(u){return {score:0,passed:false,reason:`Judge error: ${u instanceof Error?u.message:String(u)}`,durationMs:Date.now()-o}}finally{clearTimeout(c);}},threshold:.5,weight:1.5}}function Vo(t={}){let e=t.mode??"contains",n=t.caseInsensitive??true;return {name:"match",fn:o=>{let r=Date.now(),s=o.testCase.expected;if(!s)return {score:1,passed:true,reason:"No expected output to match",durationMs:Date.now()-r};let a=String(o.result.output),c=n?a.toLowerCase():a,i=n?s.toLowerCase():s,u=false;if(e==="exact")u=c===i;else if(e==="contains")u=c.includes(i);else if(e==="regex"){if(s.length>500)return {score:0,passed:false,reason:`Regex pattern too long (${s.length} chars, max 500)`,durationMs:Date.now()-r};if(/([+*}])\)([+*{])/.test(s)||/([+*}])\]([+*{])/.test(s))return {score:0,passed:false,reason:"Pattern contains dangerous nested quantifiers",durationMs:Date.now()-r};try{u=new RegExp(s,n?"i":"").test(a);}catch{return {score:0,passed:false,reason:`Invalid regex pattern: ${s}`,durationMs:Date.now()-r}}}return {score:u?1:0,passed:u,reason:u?`Output ${e} match`:`Output does not ${e} match expected`,durationMs:Date.now()-r}},threshold:1,weight:1}}var Jo=`You are evaluating an AI agent's output for faithfulness to the provided context.
|
|
90
|
-
|
|
91
|
-
Faithfulness measures whether all claims in the output are supported by the context.
|
|
92
|
-
Score 1.0 if every claim is grounded in the context.
|
|
93
|
-
Score 0.0 if the output contains fabricated information not in the context.
|
|
94
|
-
|
|
95
|
-
Context: {{context}}
|
|
96
|
-
Agent Output: {{output}}
|
|
97
|
-
|
|
98
|
-
Respond with ONLY a JSON object: {"score": <number 0.0-1.0>, "reason": "<brief explanation>"}`;function Ko(t){return {name:"faithfulness",fn:async e=>{let n=Date.now(),o=e.testCase.context??e.testCase.expected;if(!o)return {score:1,passed:true,reason:"No context provided for faithfulness check",durationMs:Date.now()-n};let r=Jo.replaceAll("{{context}}",o).replaceAll("{{output}}",String(e.result.output)),s=t.timeoutMs??3e4,a=new AbortController,c=setTimeout(()=>a.abort(),s),i=t.signal?chunk3WO4MWJM_cjs.e([t.signal,a.signal]):a.signal;try{let l=(await t.runner(t.judge,r,{signal:i})).output;if(typeof l!="string")return {score:0,passed:!1,reason:"Judge returned non-string output",durationMs:Date.now()-n};let p=JSON.parse(l),d=Math.max(0,Math.min(1,p.score));return {score:d,passed:d>=.7,reason:p.reason??`Faithfulness score: ${d}`,durationMs:Date.now()-n}}catch(u){return {score:0,passed:false,reason:`Faithfulness eval error: ${u instanceof Error?u.message:String(u)}`,durationMs:Date.now()-n}}finally{clearTimeout(c);}},threshold:.7,weight:1.5}}var Wo=`You are evaluating an AI agent's output for relevance to the user's question.
|
|
99
|
-
|
|
100
|
-
Relevance measures whether the output directly addresses the question asked.
|
|
101
|
-
Score 1.0 if the output fully and directly answers the question.
|
|
102
|
-
Score 0.0 if the output is completely off-topic or irrelevant.
|
|
103
|
-
|
|
104
|
-
User Question: {{input}}
|
|
105
|
-
Agent Output: {{output}}
|
|
106
|
-
|
|
107
|
-
Respond with ONLY a JSON object: {"score": <number 0.0-1.0>, "reason": "<brief explanation>"}`;function Yo(t){return {name:"relevance",fn:async e=>{let n=Date.now(),o=Wo.replaceAll("{{input}}",e.testCase.input).replaceAll("{{output}}",String(e.result.output)),r=t.timeoutMs??3e4,s=new AbortController,a=setTimeout(()=>s.abort(),r),c=t.signal?chunk3WO4MWJM_cjs.e([t.signal,s.signal]):s.signal;try{let u=(await t.runner(t.judge,o,{signal:c})).output;if(typeof u!="string")return {score:0,passed:!1,reason:"Judge returned non-string output",durationMs:Date.now()-n};let l=JSON.parse(u),p=Math.max(0,Math.min(1,l.score));return {score:p,passed:p>=.7,reason:l.reason??`Relevance score: ${p}`,durationMs:Date.now()-n}}catch(i){return {score:0,passed:false,reason:`Relevance eval error: ${i instanceof Error?i.message:String(i)}`,durationMs:Date.now()-n}}finally{clearTimeout(a);}},threshold:.7,weight:1.5}}var Qo=`You are evaluating an AI agent's output for coherence and logical consistency.
|
|
108
|
-
|
|
109
|
-
Coherence measures whether the output is well-structured, logically consistent,
|
|
110
|
-
and flows naturally. Check for contradictions, non-sequiturs, and clarity.
|
|
111
|
-
Score 1.0 if the output is perfectly coherent and well-organized.
|
|
112
|
-
Score 0.0 if the output is incoherent, contradictory, or disorganized.
|
|
113
|
-
|
|
114
|
-
Agent Output: {{output}}
|
|
115
|
-
|
|
116
|
-
Respond with ONLY a JSON object: {"score": <number 0.0-1.0>, "reason": "<brief explanation>"}`;function Xo(t){return {name:"coherence",fn:async e=>{let n=Date.now(),o=Qo.replaceAll("{{output}}",String(e.result.output)),r=t.timeoutMs??3e4,s=new AbortController,a=setTimeout(()=>s.abort(),r),c=t.signal?chunk3WO4MWJM_cjs.e([t.signal,s.signal]):s.signal;try{let u=(await t.runner(t.judge,o,{signal:c})).output;if(typeof u!="string")return {score:0,passed:!1,reason:"Judge returned non-string output",durationMs:Date.now()-n};let l=JSON.parse(u),p=Math.max(0,Math.min(1,l.score));return {score:p,passed:p>=.7,reason:l.reason??`Coherence score: ${p}`,durationMs:Date.now()-n}}catch(i){return {score:0,passed:false,reason:`Coherence eval error: ${i instanceof Error?i.message:String(i)}`,durationMs:Date.now()-n}}finally{clearTimeout(a);}},threshold:.7,weight:1}}function Zo(t){let{agents:e,runner:n,dataset:o,runOptions:r,concurrency:s=5,timeline:a,onCaseComplete:c,onAgentComplete:i,signal:u}=t;if(o.length===0)throw new Error("[Directive Evals] Dataset must contain at least one test case");let l=new xe(s),p={};for(let[y,m]of Object.entries(t.criteria))p[y]=jo(y,m);async function d(y,m){try{await l.acquire(u);}catch{let S={};for(let h of Object.keys(p))S[h]={score:0,passed:false,reason:"Evaluation aborted",durationMs:0};return {testCase:m,agentName:y.name,runResult:{output:"",messages:[],toolCalls:[],totalTokens:0},scores:S,overallScore:0,allPassed:false,runDurationMs:0}}try{let S=Date.now(),h;try{h=await n(y,m.input,{...r,signal:u});}catch(O){let b={output:"",messages:[],toolCalls:[],totalTokens:0},C={};for(let T of Object.keys(p))C[T]={score:0,passed:!1,reason:`Agent error: ${O instanceof Error?`${O.name}: ${O.message}`:String(O)}`,durationMs:0};return {testCase:m,agentName:y.name,runResult:b,scores:C,overallScore:0,allPassed:!1,runDurationMs:Date.now()-S}}let g=Date.now()-S,v={agent:y,testCase:m,result:h,runDurationMs:g},w={};for(let[O,b]of Object.entries(p))try{let C=await b.fn(v);w[O]={...C,passed:C.score>=(b.threshold??.5)};}catch(C){w[O]={score:0,passed:!1,reason:`Criterion error: ${C instanceof Error?`${C.name}: ${C.message}`:String(C)}`,durationMs:0};}let M=Fo(w,p),x=Object.values(w).every(O=>O.passed),P={testCase:m,agentName:y.name,runResult:h,scores:w,overallScore:M,allPassed:x,runDurationMs:g};return a&&a.record({type:"agent_complete",timestamp:Date.now(),agentId:`eval:${y.name}`,outputLength:String(h.output).length,totalTokens:h.totalTokens,durationMs:g,snapshotId:null}),c?.(P),P}finally{l.release();}}function f(y,m){let S={},h={},g=0,v=0,w=0;for(let b of Object.keys(p))S[b]=0,h[b]=0;for(let b of m){g+=b.runResult.totalTokens,v+=b.runDurationMs,b.allPassed&&w++;for(let[C,T]of Object.entries(b.scores))S[C]=(S[C]??0)+T.score,T.passed&&(h[C]=(h[C]??0)+1);}let M=m.length,x={},P={};for(let b of Object.keys(p))x[b]=M>0?(S[b]??0)/M:0,P[b]=M>0?(h[b]??0)/M:0;let O=M>0?Go(x,p):0;return {agentName:y,criterionAverages:x,criterionPassRates:P,overallScore:O,passRate:M>0?w/M:0,totalTokens:g,avgLatencyMs:M>0?v/M:0,totalCases:M,passedCases:w}}return {getAgents:()=>[...e],getCriteria:()=>Object.keys(p),getDataset:()=>[...o],async run(){let y=Date.now(),m=[],S={},h=e.map(async w=>{if(u?.aborted)return;let M=await Promise.all(o.map(x=>d(w,x)));return {agent:w,agentResults:M}}),g=await Promise.all(h);for(let w of g){if(!w)continue;m.push(...w.agentResults);let M=f(w.agent.name,w.agentResults);S[w.agent.name]=M,i?.(M);}let v=Date.now();return {summary:S,details:m,durationMs:v-y,totalTokens:m.reduce((w,M)=>w+M.runResult.totalTokens,0),startedAt:y,completedAt:v}},async runAgent(y){let m=e.find(g=>g.name===y);if(!m)throw new Error(`[Directive Evals] Unknown agent: "${y}"`);let S=await Promise.all(o.map(g=>d(m,g))),h=f(m.name,S);return i?.(h),h}}}function es(t,e){let n=[];for(let[o,r]of Object.entries(t.summary))if(e.minScore!==void 0&&r.overallScore<e.minScore&&n.push(`Agent "${o}" score ${r.overallScore.toFixed(3)} < minimum ${e.minScore}`),e.minPassRate!==void 0&&r.passRate<e.minPassRate&&n.push(`Agent "${o}" pass rate ${r.passRate.toFixed(3)} < minimum ${e.minPassRate}`),e.failOn)for(let s of e.failOn){let a=r.criterionPassRates[s];a!==void 0&&a<1&&n.push(`Agent "${o}" criterion "${s}" pass rate ${a.toFixed(3)} < 1.0 (failOn)`);}if(n.length>0)throw new Error(`[Directive Evals] Assertion failed:
|
|
117
|
-
${n.join(`
|
|
118
|
-
`)}`)}var B={UNSET:0,OK:1,ERROR:2},pe=class{constructor(e,n,o,r,s,a){this.name=e;this.spanId=n;this.traceId=o;this.parentSpanId=r;this.onEnd=a;if(this.startTime=Date.now(),s)for(let[c,i]of Object.entries(s))this.attributes[c]=i;}attributes=Object.create(null);spanEvents=[];status={code:B.UNSET};startTime;endTime=0;setAttribute(e,n){this.attributes[e]=n;}addEvent(e,n){this.spanEvents.push({name:e,attributes:n,timestamp:Date.now()});}setStatus(e){this.status=e;}end(){this.endTime=Date.now(),this.onEnd?.(this);}toSpanData(){return {name:this.name,traceId:this.traceId,spanId:this.spanId,parentSpanId:this.parentSpanId,attributes:{...this.attributes},events:[...this.spanEvents],status:{...this.status},startTime:this.startTime,endTime:this.endTime,durationMs:this.endTime-this.startTime}}},Me=class{spans=[];startSpan(e,n){let o=n?.spanId??`fallback-${crypto.randomUUID()}`,r=n?.traceId??`fallback-${crypto.randomUUID()}`,s=n?.parentSpanId;return new pe(e,o,r,s,n?.attributes,a=>{this.spans.push(a.toSpanData());})}clear(){this.spans.length=0;}};function ts(t){let e=t.spanPrefix??"directive.ai",n=t.instrumentEvents,o=t.spanTtlMs??3e5,r=!t.tracer,s=r?new Me:null,a=t.tracer??s,c=0;function i(){return `${Date.now().toString(36)}-${(c++).toString(36)}`}function u(){return `${Date.now().toString(36)}-${crypto.randomUUID().slice(0,8)}`}let l=new Map,p=0,d=new Map,f=[],y=null,m=false;function S(E){return n?n.has(E):true}function h(E,A){return `${E}:${A}:${p++}`}function g(E,A){let I=`${E}:${A}`,$=d.get(I);if($){for(let F=$.length-1;F>=0;F--){let q=l.get($[F]);if(q)return {key:$[F],entry:q}}d.delete(I);}return null}function v(E,A,I,$){let F=`${E}:${A}`;$.indexKey=F,l.set(I,$);let q=d.get(F);q?q.push(I):d.set(F,[I]);}function w(E){let A=l.get(E);l.delete(E);let I=A?.indexKey;if(I){let $=d.get(I);if($){let F=$.indexOf(E);F!==-1&&$.splice(F,1),$.length===0&&d.delete(I);}}}function M(){let E=Date.now();if(l.size<1e4){for(let[I,$]of l)E-$.startTime>o&&(b($,"directive.stale",true),T($,{code:B.ERROR,message:"Span TTL exceeded \u2014 cleaned up"}),P($),w(I),true);return void 0}for(let[A,I]of l)E-I.startTime>o&&(b(I,"directive.stale",true),T(I,{code:B.ERROR,message:"Span TTL exceeded \u2014 cleaned up"}),P(I),w(A));}function x(E,A,I){let $=i(),F=I?.traceId??u(),q=I?.spanId,K;r?K=a.startSpan(E,{attributes:A,spanId:$,traceId:F,parentSpanId:q}):K=a.startSpan(E,{attributes:A});let me={span:K,spanId:$,traceId:F,startTime:Date.now()};return r||(me.shadow={span:K,name:E,spanId:$,traceId:F,parentSpanId:q,attributes:{...A},events:[],status:{code:B.UNSET},startTime:me.startTime}),{span:K,entry:me}}function P(E){E.span.end(),t.onSpanEnd&&t.onSpanEnd(O(E));}function O(E){if(E.span instanceof pe)return E.span.toSpanData();if(E.shadow){let I=Date.now();return {name:E.shadow.name,traceId:E.shadow.traceId,spanId:E.shadow.spanId,parentSpanId:E.shadow.parentSpanId,attributes:{...E.shadow.attributes},events:[...E.shadow.events],status:{...E.shadow.status},startTime:E.shadow.startTime,endTime:I,durationMs:I-E.shadow.startTime}}let A=Date.now();return {name:"unknown",traceId:E.traceId,spanId:E.spanId,attributes:{},events:[],status:{code:B.UNSET},startTime:E.startTime,endTime:A,durationMs:A-E.startTime}}function b(E,A,I){E.span.setAttribute(A,I),E.shadow&&(E.shadow.attributes[A]=I);}function C(E,A,I){E.span.addEvent(A,I),E.shadow&&E.shadow.events.push({name:A,attributes:I,timestamp:Date.now()});}function T(E,A){E.span.setStatus(A),E.shadow&&(E.shadow.status={...A});}function D(E){if(S(E.type))switch(M(),E.type){case "agent_start":R(E);break;case "agent_complete":_(E);break;case "agent_error":k(E);break;case "guardrail_check":L(E);break;case "constraint_evaluate":G(E);break;case "resolver_start":N(E);break;case "resolver_complete":U(E);break;case "resolver_error":V(E);break;case "pattern_start":ge(E);break;case "pattern_complete":st(E);break;default:if(E.agentId){let A=g("agent",E.agentId);A&&C(A.entry,E.type,{"event.id":E.id,"event.timestamp":E.timestamp});}}}function R(E){let A=f.length>0?f[f.length-1]:null,{entry:I}=x(`${e}.agent.run`,{"directive.service":t.serviceName,"directive.agent.name":E.agentId,"directive.agent.input_length":E.inputLength,"gen_ai.operation.name":"agent.run","gen_ai.agent.name":E.agentId},A),$=h("agent",E.agentId);v("agent",E.agentId,$,I);}function _(E){let A=g("agent",E.agentId);A&&(b(A.entry,"directive.agent.output_length",E.outputLength),b(A.entry,"directive.agent.total_tokens",E.totalTokens),b(A.entry,"directive.agent.duration_ms",E.durationMs),b(A.entry,"gen_ai.usage.total_tokens",E.totalTokens),T(A.entry,{code:B.OK}),P(A.entry),w(A.key));}function k(E){let A=g("agent",E.agentId);A&&(b(A.entry,"directive.agent.duration_ms",E.durationMs),b(A.entry,"directive.agent.error",E.errorMessage),b(A.entry,"gen_ai.error.message",E.errorMessage),T(A.entry,{code:B.ERROR,message:E.errorMessage}),P(A.entry),w(A.key));}function L(E){let A=E.agentId?g("agent",E.agentId)?.entry??null:null,{entry:I}=x(`${e}.guardrail.check`,{"directive.service":t.serviceName,"directive.guardrail.name":E.guardrailName,"directive.guardrail.type":E.guardrailType,"directive.guardrail.passed":E.passed,"directive.guardrail.duration_ms":E.durationMs,"gen_ai.guardrail.name":E.guardrailName,"gen_ai.guardrail.type":E.guardrailType,"gen_ai.guardrail.passed":E.passed},A);E.reason&&b(I,"directive.guardrail.reason",E.reason),T(I,{code:E.passed?B.OK:B.ERROR,message:E.passed?void 0:E.reason}),P(I);}function G(E){if(E.agentId){let I=g("agent",E.agentId);if(I){C(I.entry,"constraint_evaluate",{"directive.constraint.id":E.constraintId,"directive.constraint.fired":E.fired});return}}let{entry:A}=x(`${e}.constraint.evaluate`,{"directive.service":t.serviceName,"directive.constraint.id":E.constraintId,"directive.constraint.fired":E.fired},null);T(A,{code:B.OK}),P(A);}function N(E){let I=(E.agentId?g("agent",E.agentId)?.entry??null:null)??(f.length>0?f[f.length-1]:null),{entry:$}=x(`${e}.resolver.execute`,{"directive.service":t.serviceName,"directive.resolver.id":E.resolverId,"directive.resolver.requirement_type":E.requirementType},I),F=h("resolver",E.resolverId);v("resolver",E.resolverId,F,$);}function U(E){let A=g("resolver",E.resolverId);A&&(b(A.entry,"directive.resolver.duration_ms",E.durationMs),T(A.entry,{code:B.OK}),P(A.entry),w(A.key));}function V(E){let A=g("resolver",E.resolverId);A&&(b(A.entry,"directive.resolver.duration_ms",E.durationMs),b(A.entry,"directive.resolver.error",E.errorMessage),T(A.entry,{code:B.ERROR,message:E.errorMessage}),P(A.entry),w(A.key));}function ge(E){let A=f.length>0?f[f.length-1]:null,{entry:I}=x(`${e}.pattern.${E.patternType}`,{"directive.service":t.serviceName,"directive.pattern.id":E.patternId,"directive.pattern.type":E.patternType},A),$=h("pattern",E.patternId);v("pattern",E.patternId,$,I),f.length<100&&f.push(I);}function st(E){let A=g("pattern",E.patternId);if(A){b(A.entry,"directive.pattern.duration_ms",E.durationMs),E.error?(b(A.entry,"directive.pattern.error",E.error),T(A.entry,{code:B.ERROR,message:E.error})):T(A.entry,{code:B.OK}),P(A.entry),w(A.key);let I=f.indexOf(A.entry);I!==-1&&f.splice(I,1);}}return {attach(E){if(y&&y!==E)throw new Error("[Directive OTEL] Plugin already attached to a different timeline. Create a new plugin instance.");y=E;let A=E.subscribe(D),I=setInterval(M,Math.min(o,6e4));return ()=>{A(),clearInterval(I),y=null;for(let[$,F]of l)b(F,"directive.detached",true),T(F,{code:B.ERROR,message:"Plugin detached while span was active"}),P(F);l.clear(),d.clear(),f.length=0;}},getSpans(){return s?[...s.spans]:(m||(m=true,typeof process<"u"&&process.env?.NODE_ENV!=="production"&&console.warn("[Directive OTEL] getSpans() returns [] when using an external tracer. Use the onSpanEnd callback to collect span data instead.")),[])},clearSpans(){s?.clear();},getTracer(){return a},getActiveSpanCount(){return l.size}}}Object.defineProperty(exports,"createAgentOrchestrator",{enumerable:true,get:function(){return chunkXV2QSBBE_cjs.a}});Object.defineProperty(exports,"createRunner",{enumerable:true,get:function(){return chunk3WO4MWJM_cjs.f}});Object.defineProperty(exports,"estimateCost",{enumerable:true,get:function(){return chunk3WO4MWJM_cjs.c}});Object.defineProperty(exports,"hasPendingApprovals",{enumerable:true,get:function(){return chunk3WO4MWJM_cjs.b}});Object.defineProperty(exports,"isAgentRunning",{enumerable:true,get:function(){return chunk3WO4MWJM_cjs.a}});Object.defineProperty(exports,"validateBaseURL",{enumerable:true,get:function(){return chunk3WO4MWJM_cjs.d}});Object.defineProperty(exports,"GuardrailError",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.a}});Object.defineProperty(exports,"InMemoryCheckpointStore",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.G}});Object.defineProperty(exports,"MAX_BREAKPOINT_HISTORY",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.A}});Object.defineProperty(exports,"ReflectionExhaustedError",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.W}});Object.defineProperty(exports,"Semaphore",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.Z}});Object.defineProperty(exports,"StructuredOutputError",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.J}});Object.defineProperty(exports,"adaptOutputGuardrail",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.P}});Object.defineProperty(exports,"aggregateTokens",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ua}});Object.defineProperty(exports,"allReadyStrategy",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ka}});Object.defineProperty(exports,"capabilityRoute",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.xa}});Object.defineProperty(exports,"collectOutputs",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ta}});Object.defineProperty(exports,"collectTokens",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.Q}});Object.defineProperty(exports,"combineStreamingGuardrails",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.O}});Object.defineProperty(exports,"composePatterns",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.va}});Object.defineProperty(exports,"concatResults",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ra}});Object.defineProperty(exports,"costEfficientStrategy",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ma}});Object.defineProperty(exports,"createBreakpointId",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.B}});Object.defineProperty(exports,"createCheckpointId",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.E}});Object.defineProperty(exports,"createDebugTimeline",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.i}});Object.defineProperty(exports,"createDebugTimelinePlugin",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.j}});Object.defineProperty(exports,"createHealthMonitor",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.V}});Object.defineProperty(exports,"createInitialBreakpointState",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.D}});Object.defineProperty(exports,"createLengthStreamingGuardrail",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.M}});Object.defineProperty(exports,"createMultiAgentOrchestrator",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.Da}});Object.defineProperty(exports,"createPatternStreamingGuardrail",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.N}});Object.defineProperty(exports,"createStreamingRunner",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.K}});Object.defineProperty(exports,"createToxicityStreamingGuardrail",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.L}});Object.defineProperty(exports,"dag",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ga}});Object.defineProperty(exports,"debate",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.za}});Object.defineProperty(exports,"derivedConstraint",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.Ba}});Object.defineProperty(exports,"diffCheckpoints",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.aa}});Object.defineProperty(exports,"extractJsonFromOutput",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.H}});Object.defineProperty(exports,"filterStream",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.S}});Object.defineProperty(exports,"findAgentsByCapability",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.wa}});Object.defineProperty(exports,"forkFromCheckpoint",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ba}});Object.defineProperty(exports,"formatSystemMeta",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.g}});Object.defineProperty(exports,"getCheckpointProgress",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.$}});Object.defineProperty(exports,"getPatternStep",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs._}});Object.defineProperty(exports,"goal",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ja}});Object.defineProperty(exports,"highestImpactStrategy",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.la}});Object.defineProperty(exports,"isGuardrailError",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.b}});Object.defineProperty(exports,"mapStream",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.T}});Object.defineProperty(exports,"matchBreakpoint",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.C}});Object.defineProperty(exports,"mergeTaggedStreams",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.U}});Object.defineProperty(exports,"parallel",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.da}});Object.defineProperty(exports,"patternFromJSON",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.oa}});Object.defineProperty(exports,"patternToJSON",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.na}});Object.defineProperty(exports,"pickBestResult",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.sa}});Object.defineProperty(exports,"race",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ia}});Object.defineProperty(exports,"reflect",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ha}});Object.defineProperty(exports,"runAgentRequirement",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.qa}});Object.defineProperty(exports,"runDebate",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.Aa}});Object.defineProperty(exports,"selectAgent",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.pa}});Object.defineProperty(exports,"sequential",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ea}});Object.defineProperty(exports,"spawnOnCondition",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.ya}});Object.defineProperty(exports,"spawnPool",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.Ca}});Object.defineProperty(exports,"supervisor",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.fa}});Object.defineProperty(exports,"tapStream",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.R}});Object.defineProperty(exports,"toAIContext",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.h}});Object.defineProperty(exports,"validateCheckpoint",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.F}});Object.defineProperty(exports,"withReflection",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.X}});Object.defineProperty(exports,"withStructuredOutput",{enumerable:true,get:function(){return chunkX3VQ5F7D_cjs.I}});Object.defineProperty(exports,"CircuitBreakerOpenError",{enumerable:true,get:function(){return plugins.CircuitBreakerOpenError}});Object.defineProperty(exports,"createCircuitBreaker",{enumerable:true,get:function(){return plugins.createCircuitBreaker}});Object.defineProperty(exports,"createOTLPExporter",{enumerable:true,get:function(){return plugins.createOTLPExporter}});exports.AllProvidersFailedError=ue;exports.BudgetExceededError=te;exports.DEFAULT_INJECTION_PATTERNS=Z;exports.OtelStatusCode=B;exports.PredicateFromIntentError=ne;exports.RetryExhaustedError=ce;exports.STRICT_INJECTION_PATTERNS=ve;exports.byAgentName=Xr;exports.byInputLength=Qr;exports.byPattern=Zr;exports.connectDevTools=wo;exports.convertToolsForLLM=Do;exports.createAgentAuditHandlers=hr;exports.createAgentMemory=Pn;exports.createAgentNetwork=Kn;exports.createAuditTrail=yr;exports.createBatchQueue=vo;exports.createBatchedEmbedder=kr;exports.createBidirectionalStream=Or;exports.createBruteForceIndex=Ir;exports.createCompliance=Ar;exports.createConstraintRouter=Eo;exports.createContentFilterGuardrail=xn;exports.createDelegator=Yn;exports.createDevToolsServer=nt;exports.createEnhancedPIIGuardrail=_e;exports.createEvalSuite=Zo;exports.createHybridStrategy=Tn;exports.createInMemoryComplianceStorage=Cr;exports.createInMemoryStorage=He;exports.createJSONFileStore=Br;exports.createKeyPointsSummarizer=In;exports.createLLMSummarizer=Dn;exports.createLengthGuardrail=An;exports.createMCPAdapter=Po;exports.createMessageBus=Jn;exports.createModerationGuardrail=Sn;exports.createOtelPlugin=ts;exports.createOutputPIIGuardrail=ar;exports.createOutputSchemaGuardrail=Rn;exports.createOutputTypeGuardrail=Cn;exports.createPIIGuardrail=vn;exports.createPromptInjectionGuardrail=Ue;exports.createPubSub=Qn;exports.createRAGEnricher=Gr;exports.createRateLimitGuardrail=En;exports.createResponder=Wn;exports.createSSETransport=Ur;exports.createSemanticCache=Mr;exports.createSemanticCacheGuardrail=Tr;exports.createSlidingWindowStrategy=ke;exports.createStreamChannel=we;exports.createTestEmbedder=Pr;exports.createTokenBasedStrategy=Ie;exports.createToolGuardrail=wn;exports.createTruncationSummarizer=kn;exports.createUntrustedContentGuardrail=vr;exports.createVPTreeIndex=Dr;exports.createWsTransport=rt;exports.detectAndRedactPII=ir;exports.detectPII=ae;exports.detectPromptInjection=Se;exports.evalAssert=es;exports.evalCoherence=Xo;exports.evalCost=Lo;exports.evalFaithfulness=Ko;exports.evalJudge=qo;exports.evalLatency=Bo;exports.evalMatch=Vo;exports.evalOutputLength=Uo;exports.evalRelevance=Yo;exports.evalSafety=zo;exports.evalStructure=Ho;exports.explainGoal=xo;exports.getDependencyGraph=Ro;exports.markUntrustedContent=br;exports.mcpCallTool=Oo;exports.mcpGetPrompt=No;exports.mcpReadResource=$o;exports.mcpSyncResources=_o;exports.mergeStreams=Nr;exports.parseHttpStatus=Re;exports.parseRetryAfter=Je;exports.patternToMermaid=Vn;exports.pipe=Mn;exports.pipeThrough=$r;exports.planGoal=Ao;exports.predicateFromIntent=fo;exports.predicateFromIntentRaw=Ce;exports.predicateFromIntentWithProvenance=bo;exports.predicateToolSpec=ho;exports.predicateToolSpecAnthropic=et;exports.predicateToolSpecOpenAI=yo;exports.redactPII=X;exports.sanitizeInjection=Be;exports.validateGoal=Co;exports.withBudget=Yr;exports.withFallback=Kr;exports.withModelSelection=eo;exports.withRetry=Jr;//# sourceMappingURL=index.cjs.map
|
|
40
|
+
${t}`),this.name="AllProvidersFailedError",this.errors=Object.freeze([...e]),e.length>0&&(this.cause=e[e.length-1]);}};function kn(r,e={}){if(r.length===0)throw new Error("[Directive] withFallback requires at least one runner.");let{shouldFallback:t,onFallback:n}=e;return async(s,c,a)=>{let u=[];for(let o=0;o<r.length;o++)try{return await r[o](s,c,a)}catch(m){let d=m instanceof Error?m:new Error(String(m));if(u.push(d),o<r.length-1){if(t)try{if(!t(d))break}catch{break}try{n?.(o,o+1,d);}catch{}}}throw new F(u)}}var G=class extends Error{estimated;remaining;window;constructor(e){super(`[Directive] Budget exceeded (${e.window}): estimated $${e.estimated.toFixed(4)}, remaining $${e.remaining.toFixed(4)}`),this.name="BudgetExceededError",this.estimated=e.estimated,this.remaining=e.remaining,this.window=e.window;}},$=class{entries=[];record(e){this.entries.push({timestamp:Date.now(),cost:e});}getCostInWindow(e){let t=Date.now()-e;this.prune(t);let n=0;for(let s of this.entries)s.timestamp>=t&&(n+=s.cost);return n}prune(e){let t=0;for(;t<this.entries.length&&this.entries[t].timestamp<e;)t++;t>0&&this.entries.splice(0,t);}clear(){this.entries=[];}},ae={hour:3600*1e3,day:1440*60*1e3};function xn(r,e){return Math.ceil(r.length/e)}function se(r,e){return r.inputTokens/1e6*e.inputPerMillion+r.outputTokens/1e6*e.outputPerMillion}function ie(r,e,t=1){let n=Math.ceil(r*t);return r/1e6*e.inputPerMillion+n/1e6*e.outputPerMillion}function Mn(r,e){let{maxCostPerCall:t,budgets:n=[],pricing:s,charsPerToken:c=4,estimatedOutputMultiplier:a=1,onBudgetExceeded:u}=e;if(!Number.isFinite(c)||c<=0)throw new Error("[Directive] withBudget: charsPerToken must be a positive finite number.");if(t!=null&&(!Number.isFinite(t)||t<0))throw new Error("[Directive] withBudget: maxCostPerCall must be a non-negative finite number.");if(!Number.isFinite(a)||a<0)throw new Error("[Directive] withBudget: estimatedOutputMultiplier must be a non-negative finite number.");t!=null&&!s&&console.warn("[Directive] withBudget: maxCostPerCall has no effect without pricing. Provide a pricing config to enable per-call cost estimation.");for(let y of n)if(!Number.isFinite(y.maxCost)||y.maxCost<0)throw new Error(`[Directive] withBudget: budgets[${y.window}].maxCost must be a non-negative finite number.`);let o=new Map;for(let y of n)o.set(y.window,new $);let m=new $,d=async(y,p,f)=>{let C=xn(p,c);if(t!=null&&s){let v=ie(C,s,a);if(v>t){let l={estimated:v,remaining:t,window:"per-call"};try{u?.(l);}catch{}throw new G(l)}}for(let v of n){let l=ae[v.window],S=o.get(v.window).getCostInWindow(l),A=v.maxCost-S,x=ie(C,v.pricing,a);if(x>A){let w={estimated:x,remaining:Math.max(0,A),window:v.window};try{u?.(w);}catch{}throw new G(w)}}let E=await r(y,p,f);if(E.tokenUsage){for(let v of n){let l=o.get(v.window),g=se(E.tokenUsage,v.pricing);l.record(g);}if(s&&n.length===0){let v=se(E.tokenUsage,s);m.record(v);}}return E};function b(y){let p=o.get(y);if(!p)return 0;let f=ae[y];return p.getCostInWindow(f)}return d.getSpent=b,d}function In(r,e){return {match:(t,n)=>n.length<=r,model:e}}function Pn(r,e){return {match:t=>t.name===r,model:e}}function Dn(r,e){return {match:(t,n)=>(r.lastIndex=0,r.test(n)),model:e}}function On(r,e){let t=Array.isArray(e)?{rules:e}:e,{rules:n,onModelSelected:s}=t;return async(c,a,u)=>{let o=c.model;for(let d of n)try{if(d.match(c,a)){o=d.model;break}}catch{}try{s?.(c.model,o);}catch{}let m=o!==c.model?{...c,model:o}:c;return r(m,a,u)}}function Bn(r,e={}){let{maxBatchSize:t=20,maxWaitMs:n=5e3,concurrency:s=5}=e;if(!Number.isFinite(t)||t<1)throw new Error("[Directive] createBatchQueue: maxBatchSize must be a positive finite number (>= 1).");if(!Number.isFinite(n)||n<0)throw new Error("[Directive] createBatchQueue: maxWaitMs must be a non-negative finite number.");if(!Number.isFinite(s)||s<1)throw new Error("[Directive] createBatchQueue: concurrency must be a positive finite number (>= 1).");let c=[],a=null,u=false,o=null;function m(){a===null&&(a=setTimeout(()=>{a=null,y().catch(()=>{});},n));}function d(){a!==null&&(clearTimeout(a),a=null);}async function b(p){let f=0;async function C(){for(;f<p.length;){let v=f++,l=p[v];try{let g=await r(l.agent,l.input,l.options);l.resolve(g);}catch(g){l.reject(g instanceof Error?g:new Error(String(g)));}}}let E=Array.from({length:Math.min(s,p.length)},()=>C());await Promise.all(E);}async function y(){if(o&&await o,c.length===0)return;d();let p=c.splice(0);o=b(p).finally(()=>{o=null,c.length>0&&m();}),await o;}return {submit(p,f,C){return u?Promise.reject(new Error("[Directive] BatchQueue has been destroyed.")):new Promise((E,v)=>{c.push({agent:p,input:f,options:C,resolve:E,reject:v}),c.length>=t?(d(),y().catch(()=>{})):m();})},async flush(){await y();},get pending(){return c.length},async destroy(){u||(u=true,d(),c.length>0&&await y());}}}function ce(){return {callCount:0,errorCount:0,totalCost:0,avgLatencyMs:0,lastErrorAt:null}}function jn(r,e){return !r||!e?0:r.inputTokens/1e6*e.inputPerMillion+r.outputTokens/1e6*e.outputPerMillion}function Gn(r){let{providers:e,defaultProvider:t,constraints:n=[],onProviderSelected:s,errorCooldownMs:c=3e4,preferCheapest:a=false}=r;if(!Number.isFinite(c)||c<0)throw new Error("[Directive] createConstraintRouter: errorCooldownMs must be a non-negative finite number.");let u=new Map;for(let f of e)u.set(f.name,f);if(!u.has(t))throw new Error(`[Directive] Default provider "${t}" not found in providers list.`);let o={totalCost:0,callCount:0,errorCount:0,lastProvider:null,avgLatencyMs:0,providers:Object.create(null)};for(let f of e)o.providers[f.name]=ce();let m=0,d=[...n].sort((f,C)=>(C.priority??0)-(f.priority??0));function b(){let f=Date.now();for(let E of d)try{if(E.when(o)){let v=u.get(E.provider);if(v)return {provider:v,reason:"constraint"}}}catch{}let C=e.filter(E=>{let v=o.providers[E.name];return v?!(v.lastErrorAt&&f-v.lastErrorAt<c):true});if(a&&C.length>0){let E=[...C].sort((v,l)=>{let g=v.pricing?v.pricing.inputPerMillion+v.pricing.outputPerMillion:Number.POSITIVE_INFINITY,S=l.pricing?l.pricing.inputPerMillion+l.pricing.outputPerMillion:Number.POSITIVE_INFINITY;return g!==S?g-S:v.name===t?-1:l.name===t?1:0});if(E[0]!==u.get(t))return {provider:E[0],reason:"cheapest"}}return C.length>0&&!C.some(E=>E.name===t)?{provider:C[0],reason:"default"}:{provider:u.get(t),reason:"default"}}function y(f,C,E,v,l){let g=o.providers[f]??ce();if(g.callCount++,o.callCount++,l)g.errorCount++,o.errorCount++,g.lastErrorAt=Date.now();else {let A=jn(E,v);g.totalCost+=A,o.totalCost+=A;}m+=C,o.avgLatencyMs=m/o.callCount;let S=g.callCount>0?(g.avgLatencyMs*(g.callCount-1)+C)/g.callCount:C;g.avgLatencyMs=S,o.providers[f]=g,o.lastProvider=f;}let p=async(f,C,E)=>{let{provider:v,reason:l}=b();try{s?.(v.name,l);}catch{}let g=Date.now();try{let S=await v.runner(f,C,E),A=Date.now()-g;return y(v.name,A,S.tokenUsage,v.pricing),S}catch(S){let A=Date.now()-g,x=S instanceof Error?S:new Error(String(S));throw y(v.name,A,void 0,v.pricing,x),x}};return Object.defineProperty(p,"facts",{get:()=>{let f=Object.create(null);for(let C of Object.keys(o.providers))f[C]={...o.providers[C]};return {...o,providers:f}},enumerable:true}),p}var I={UNSET:0,OK:1,ERROR:2},L=class{constructor(e,t,n,s,c,a){this.name=e;this.spanId=t;this.traceId=n;this.parentSpanId=s;this.onEnd=a;if(this.startTime=Date.now(),c)for(let[u,o]of Object.entries(c))this.attributes[u]=o;}attributes=Object.create(null);spanEvents=[];status={code:I.UNSET};startTime;endTime=0;setAttribute(e,t){this.attributes[e]=t;}addEvent(e,t){this.spanEvents.push({name:e,attributes:t,timestamp:Date.now()});}setStatus(e){this.status=e;}end(){this.endTime=Date.now(),this.onEnd?.(this);}toSpanData(){return {name:this.name,traceId:this.traceId,spanId:this.spanId,parentSpanId:this.parentSpanId,attributes:{...this.attributes},events:[...this.spanEvents],status:{...this.status},startTime:this.startTime,endTime:this.endTime,durationMs:this.endTime-this.startTime}}},J=class{spans=[];startSpan(e,t){let n=t?.spanId??`fallback-${crypto.randomUUID()}`,s=t?.traceId??`fallback-${crypto.randomUUID()}`,c=t?.parentSpanId;return new L(e,n,s,c,t?.attributes,a=>{this.spans.push(a.toSpanData());})}clear(){this.spans.length=0;}};function _n(r){let e=r.spanPrefix??"directive.ai",t=r.instrumentEvents,n=r.spanTtlMs??3e5,s=!r.tracer,c=s?new J:null,a=r.tracer??c,u=0;function o(){return `${Date.now().toString(36)}-${(u++).toString(36)}`}function m(){return `${Date.now().toString(36)}-${crypto.randomUUID().slice(0,8)}`}let d=new Map,b=0,y=new Map,p=[],f=null,C=false;function E(i){return t?t.has(i):true}function v(i,h){return `${i}:${h}:${b++}`}function l(i,h){let R=`${i}:${h}`,T=y.get(R);if(T){for(let k=T.length-1;k>=0;k--){let O=d.get(T[k]);if(O)return {key:T[k],entry:O}}y.delete(R);}return null}function g(i,h,R,T){let k=`${i}:${h}`;T.indexKey=k,d.set(R,T);let O=y.get(k);O?O.push(R):y.set(k,[R]);}function S(i){let h=d.get(i);d.delete(i);let R=h?.indexKey;if(R){let T=y.get(R);if(T){let k=T.indexOf(i);k!==-1&&T.splice(k,1),T.length===0&&y.delete(R);}}}function A(){let i=Date.now();if(d.size<1e4){for(let[R,T]of d)i-T.startTime>n&&(M(T,"directive.stale",true),D(T,{code:I.ERROR,message:"Span TTL exceeded \u2014 cleaned up"}),w(T),S(R),true);return void 0}for(let[h,R]of d)i-R.startTime>n&&(M(R,"directive.stale",true),D(R,{code:I.ERROR,message:"Span TTL exceeded \u2014 cleaned up"}),w(R),S(h));}function x(i,h,R){let T=o(),k=R?.traceId??m(),O=R?.spanId,B;s?B=a.startSpan(i,{attributes:h,spanId:T,traceId:k,parentSpanId:O}):B=a.startSpan(i,{attributes:h});let z={span:B,spanId:T,traceId:k,startTime:Date.now()};return s||(z.shadow={span:B,name:i,spanId:T,traceId:k,parentSpanId:O,attributes:{...h},events:[],status:{code:I.UNSET},startTime:z.startTime}),{span:B,entry:z}}function w(i){i.span.end(),r.onSpanEnd&&r.onSpanEnd(P(i));}function P(i){if(i.span instanceof L)return i.span.toSpanData();if(i.shadow){let R=Date.now();return {name:i.shadow.name,traceId:i.shadow.traceId,spanId:i.shadow.spanId,parentSpanId:i.shadow.parentSpanId,attributes:{...i.shadow.attributes},events:[...i.shadow.events],status:{...i.shadow.status},startTime:i.shadow.startTime,endTime:R,durationMs:R-i.shadow.startTime}}let h=Date.now();return {name:"unknown",traceId:i.traceId,spanId:i.spanId,attributes:{},events:[],status:{code:I.UNSET},startTime:i.startTime,endTime:h,durationMs:h-i.startTime}}function M(i,h,R){i.span.setAttribute(h,R),i.shadow&&(i.shadow.attributes[h]=R);}function q(i,h,R){i.span.addEvent(h,R),i.shadow&&i.shadow.events.push({name:h,attributes:R,timestamp:Date.now()});}function D(i,h){i.span.setStatus(h),i.shadow&&(i.shadow.status={...h});}function ue(i){if(E(i.type))switch(A(),i.type){case "agent_start":le(i);break;case "agent_complete":de(i);break;case "agent_error":pe(i);break;case "guardrail_check":ge(i);break;case "constraint_evaluate":me(i);break;case "resolver_start":fe(i);break;case "resolver_complete":ye(i);break;case "resolver_error":he(i);break;case "pattern_start":Se(i);break;case "pattern_complete":ve(i);break;default:if(i.agentId){let h=l("agent",i.agentId);h&&q(h.entry,i.type,{"event.id":i.id,"event.timestamp":i.timestamp});}}}function le(i){let h=p.length>0?p[p.length-1]:null,{entry:R}=x(`${e}.agent.run`,{"directive.service":r.serviceName,"directive.agent.name":i.agentId,"directive.agent.input_length":i.inputLength,"gen_ai.operation.name":"agent.run","gen_ai.agent.name":i.agentId},h),T=v("agent",i.agentId);g("agent",i.agentId,T,R);}function de(i){let h=l("agent",i.agentId);h&&(M(h.entry,"directive.agent.output_length",i.outputLength),M(h.entry,"directive.agent.total_tokens",i.totalTokens),M(h.entry,"directive.agent.duration_ms",i.durationMs),M(h.entry,"gen_ai.usage.total_tokens",i.totalTokens),D(h.entry,{code:I.OK}),w(h.entry),S(h.key));}function pe(i){let h=l("agent",i.agentId);h&&(M(h.entry,"directive.agent.duration_ms",i.durationMs),M(h.entry,"directive.agent.error",i.errorMessage),M(h.entry,"gen_ai.error.message",i.errorMessage),D(h.entry,{code:I.ERROR,message:i.errorMessage}),w(h.entry),S(h.key));}function ge(i){let h=i.agentId?l("agent",i.agentId)?.entry??null:null,{entry:R}=x(`${e}.guardrail.check`,{"directive.service":r.serviceName,"directive.guardrail.name":i.guardrailName,"directive.guardrail.type":i.guardrailType,"directive.guardrail.passed":i.passed,"directive.guardrail.duration_ms":i.durationMs,"gen_ai.guardrail.name":i.guardrailName,"gen_ai.guardrail.type":i.guardrailType,"gen_ai.guardrail.passed":i.passed},h);i.reason&&M(R,"directive.guardrail.reason",i.reason),D(R,{code:i.passed?I.OK:I.ERROR,message:i.passed?void 0:i.reason}),w(R);}function me(i){if(i.agentId){let R=l("agent",i.agentId);if(R){q(R.entry,"constraint_evaluate",{"directive.constraint.id":i.constraintId,"directive.constraint.fired":i.fired});return}}let{entry:h}=x(`${e}.constraint.evaluate`,{"directive.service":r.serviceName,"directive.constraint.id":i.constraintId,"directive.constraint.fired":i.fired},null);D(h,{code:I.OK}),w(h);}function fe(i){let R=(i.agentId?l("agent",i.agentId)?.entry??null:null)??(p.length>0?p[p.length-1]:null),{entry:T}=x(`${e}.resolver.execute`,{"directive.service":r.serviceName,"directive.resolver.id":i.resolverId,"directive.resolver.requirement_type":i.requirementType},R),k=v("resolver",i.resolverId);g("resolver",i.resolverId,k,T);}function ye(i){let h=l("resolver",i.resolverId);h&&(M(h.entry,"directive.resolver.duration_ms",i.durationMs),D(h.entry,{code:I.OK}),w(h.entry),S(h.key));}function he(i){let h=l("resolver",i.resolverId);h&&(M(h.entry,"directive.resolver.duration_ms",i.durationMs),M(h.entry,"directive.resolver.error",i.errorMessage),D(h.entry,{code:I.ERROR,message:i.errorMessage}),w(h.entry),S(h.key));}function Se(i){let h=p.length>0?p[p.length-1]:null,{entry:R}=x(`${e}.pattern.${i.patternType}`,{"directive.service":r.serviceName,"directive.pattern.id":i.patternId,"directive.pattern.type":i.patternType},h),T=v("pattern",i.patternId);g("pattern",i.patternId,T,R),p.length<100&&p.push(R);}function ve(i){let h=l("pattern",i.patternId);if(h){M(h.entry,"directive.pattern.duration_ms",i.durationMs),i.error?(M(h.entry,"directive.pattern.error",i.error),D(h.entry,{code:I.ERROR,message:i.error})):D(h.entry,{code:I.OK}),w(h.entry),S(h.key);let R=p.indexOf(h.entry);R!==-1&&p.splice(R,1);}}return {attach(i){if(f&&f!==i)throw new Error("[Directive OTEL] Plugin already attached to a different timeline. Create a new plugin instance.");f=i;let h=i.subscribe(ue),R=setInterval(A,Math.min(n,6e4));return ()=>{h(),clearInterval(R),f=null;for(let[T,k]of d)M(k,"directive.detached",true),D(k,{code:I.ERROR,message:"Plugin detached while span was active"}),w(k);d.clear(),y.clear(),p.length=0;}},getSpans(){return c?[...c.spans]:(C||(C=true,typeof process<"u"&&process.env?.NODE_ENV!=="production"&&console.warn("[Directive OTEL] getSpans() returns [] when using an external tracer. Use the onSpanEnd callback to collect span data instead.")),[])},clearSpans(){c?.clear();},getTracer(){return a},getActiveSpanCount(){return d.size}}}Object.defineProperty(exports,"DEFAULT_INJECTION_PATTERNS",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.n}});Object.defineProperty(exports,"STRICT_INJECTION_PATTERNS",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.o}});Object.defineProperty(exports,"createBatchedEmbedder",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.z}});Object.defineProperty(exports,"createBruteForceIndex",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.A}});Object.defineProperty(exports,"createContentFilterGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.h}});Object.defineProperty(exports,"createEnhancedPIIGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.j}});Object.defineProperty(exports,"createInMemoryStorage",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.v}});Object.defineProperty(exports,"createLengthGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.g}});Object.defineProperty(exports,"createModerationGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.b}});Object.defineProperty(exports,"createOutputPIIGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.k}});Object.defineProperty(exports,"createOutputSchemaGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.e}});Object.defineProperty(exports,"createOutputTypeGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.f}});Object.defineProperty(exports,"createPIIGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.a}});Object.defineProperty(exports,"createPromptInjectionGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.r}});Object.defineProperty(exports,"createRateLimitGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.c}});Object.defineProperty(exports,"createSemanticCache",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.w}});Object.defineProperty(exports,"createSemanticCacheGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.x}});Object.defineProperty(exports,"createTestEmbedder",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.y}});Object.defineProperty(exports,"createToolGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.d}});Object.defineProperty(exports,"createUntrustedContentGuardrail",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.t}});Object.defineProperty(exports,"createVPTreeIndex",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.B}});Object.defineProperty(exports,"detectAndRedactPII",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.m}});Object.defineProperty(exports,"detectPII",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.l}});Object.defineProperty(exports,"detectPromptInjection",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.p}});Object.defineProperty(exports,"markUntrustedContent",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.s}});Object.defineProperty(exports,"redactPII",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.i}});Object.defineProperty(exports,"sanitizeInjection",{enumerable:true,get:function(){return chunkA5K77UDX_cjs.q}});Object.defineProperty(exports,"connectDevTools",{enumerable:true,get:function(){return chunkIR3IHBVQ_cjs.b}});Object.defineProperty(exports,"createDevToolsServer",{enumerable:true,get:function(){return chunkIR3IHBVQ_cjs.a}});Object.defineProperty(exports,"createWsTransport",{enumerable:true,get:function(){return chunkIR3IHBVQ_cjs.c}});Object.defineProperty(exports,"createEvalSuite",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.k}});Object.defineProperty(exports,"evalAssert",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.l}});Object.defineProperty(exports,"evalCoherence",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.j}});Object.defineProperty(exports,"evalCost",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.a}});Object.defineProperty(exports,"evalFaithfulness",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.h}});Object.defineProperty(exports,"evalJudge",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.f}});Object.defineProperty(exports,"evalLatency",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.b}});Object.defineProperty(exports,"evalMatch",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.g}});Object.defineProperty(exports,"evalOutputLength",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.c}});Object.defineProperty(exports,"evalRelevance",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.i}});Object.defineProperty(exports,"evalSafety",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.d}});Object.defineProperty(exports,"evalStructure",{enumerable:true,get:function(){return chunkXN5LUOVS_cjs.e}});Object.defineProperty(exports,"convertToolsForLLM",{enumerable:true,get:function(){return chunkLKY4K5TV_cjs.b}});Object.defineProperty(exports,"createMCPAdapter",{enumerable:true,get:function(){return chunkLKY4K5TV_cjs.a}});Object.defineProperty(exports,"mcpCallTool",{enumerable:true,get:function(){return chunkLKY4K5TV_cjs.c}});Object.defineProperty(exports,"mcpGetPrompt",{enumerable:true,get:function(){return chunkLKY4K5TV_cjs.e}});Object.defineProperty(exports,"mcpReadResource",{enumerable:true,get:function(){return chunkLKY4K5TV_cjs.d}});Object.defineProperty(exports,"mcpSyncResources",{enumerable:true,get:function(){return chunkLKY4K5TV_cjs.f}});Object.defineProperty(exports,"createAgentOrchestrator",{enumerable:true,get:function(){return chunk2TD4ZSGZ_cjs.a}});Object.defineProperty(exports,"createRunner",{enumerable:true,get:function(){return chunk3WO4MWJM_cjs.f}});Object.defineProperty(exports,"estimateCost",{enumerable:true,get:function(){return chunk3WO4MWJM_cjs.c}});Object.defineProperty(exports,"hasPendingApprovals",{enumerable:true,get:function(){return chunk3WO4MWJM_cjs.b}});Object.defineProperty(exports,"isAgentRunning",{enumerable:true,get:function(){return chunk3WO4MWJM_cjs.a}});Object.defineProperty(exports,"validateBaseURL",{enumerable:true,get:function(){return chunk3WO4MWJM_cjs.d}});Object.defineProperty(exports,"createAgentNetwork",{enumerable:true,get:function(){return chunkFABDFT74_cjs.c}});Object.defineProperty(exports,"createDelegator",{enumerable:true,get:function(){return chunkFABDFT74_cjs.e}});Object.defineProperty(exports,"createMessageBus",{enumerable:true,get:function(){return chunkFABDFT74_cjs.b}});Object.defineProperty(exports,"createPubSub",{enumerable:true,get:function(){return chunkFABDFT74_cjs.f}});Object.defineProperty(exports,"createResponder",{enumerable:true,get:function(){return chunkFABDFT74_cjs.d}});Object.defineProperty(exports,"explainGoal",{enumerable:true,get:function(){return chunkFABDFT74_cjs.j}});Object.defineProperty(exports,"getDependencyGraph",{enumerable:true,get:function(){return chunkFABDFT74_cjs.g}});Object.defineProperty(exports,"patternToMermaid",{enumerable:true,get:function(){return chunkFABDFT74_cjs.a}});Object.defineProperty(exports,"planGoal",{enumerable:true,get:function(){return chunkFABDFT74_cjs.i}});Object.defineProperty(exports,"validateGoal",{enumerable:true,get:function(){return chunkFABDFT74_cjs.h}});Object.defineProperty(exports,"InMemoryCheckpointStore",{enumerable:true,get:function(){return chunkA22KLB23_cjs.y}});Object.defineProperty(exports,"MAX_BREAKPOINT_HISTORY",{enumerable:true,get:function(){return chunkA22KLB23_cjs.s}});Object.defineProperty(exports,"ReflectionExhaustedError",{enumerable:true,get:function(){return chunkA22KLB23_cjs.K}});Object.defineProperty(exports,"Semaphore",{enumerable:true,get:function(){return chunkA22KLB23_cjs.N}});Object.defineProperty(exports,"adaptOutputGuardrail",{enumerable:true,get:function(){return chunkA22KLB23_cjs.E}});Object.defineProperty(exports,"aggregateTokens",{enumerable:true,get:function(){return chunkA22KLB23_cjs.ia}});Object.defineProperty(exports,"allReadyStrategy",{enumerable:true,get:function(){return chunkA22KLB23_cjs._}});Object.defineProperty(exports,"capabilityRoute",{enumerable:true,get:function(){return chunkA22KLB23_cjs.la}});Object.defineProperty(exports,"collectOutputs",{enumerable:true,get:function(){return chunkA22KLB23_cjs.ha}});Object.defineProperty(exports,"collectTokens",{enumerable:true,get:function(){return chunkA22KLB23_cjs.F}});Object.defineProperty(exports,"combineStreamingGuardrails",{enumerable:true,get:function(){return chunkA22KLB23_cjs.D}});Object.defineProperty(exports,"composePatterns",{enumerable:true,get:function(){return chunkA22KLB23_cjs.ja}});Object.defineProperty(exports,"concatResults",{enumerable:true,get:function(){return chunkA22KLB23_cjs.fa}});Object.defineProperty(exports,"costEfficientStrategy",{enumerable:true,get:function(){return chunkA22KLB23_cjs.aa}});Object.defineProperty(exports,"createBreakpointId",{enumerable:true,get:function(){return chunkA22KLB23_cjs.t}});Object.defineProperty(exports,"createCheckpointId",{enumerable:true,get:function(){return chunkA22KLB23_cjs.w}});Object.defineProperty(exports,"createInitialBreakpointState",{enumerable:true,get:function(){return chunkA22KLB23_cjs.v}});Object.defineProperty(exports,"createLengthStreamingGuardrail",{enumerable:true,get:function(){return chunkA22KLB23_cjs.B}});Object.defineProperty(exports,"createMultiAgentOrchestrator",{enumerable:true,get:function(){return chunkA22KLB23_cjs.ra}});Object.defineProperty(exports,"createPatternStreamingGuardrail",{enumerable:true,get:function(){return chunkA22KLB23_cjs.C}});Object.defineProperty(exports,"createStreamingRunner",{enumerable:true,get:function(){return chunkA22KLB23_cjs.z}});Object.defineProperty(exports,"createToxicityStreamingGuardrail",{enumerable:true,get:function(){return chunkA22KLB23_cjs.A}});Object.defineProperty(exports,"dag",{enumerable:true,get:function(){return chunkA22KLB23_cjs.W}});Object.defineProperty(exports,"debate",{enumerable:true,get:function(){return chunkA22KLB23_cjs.na}});Object.defineProperty(exports,"derivedConstraint",{enumerable:true,get:function(){return chunkA22KLB23_cjs.pa}});Object.defineProperty(exports,"diffCheckpoints",{enumerable:true,get:function(){return chunkA22KLB23_cjs.Q}});Object.defineProperty(exports,"filterStream",{enumerable:true,get:function(){return chunkA22KLB23_cjs.H}});Object.defineProperty(exports,"findAgentsByCapability",{enumerable:true,get:function(){return chunkA22KLB23_cjs.ka}});Object.defineProperty(exports,"forkFromCheckpoint",{enumerable:true,get:function(){return chunkA22KLB23_cjs.R}});Object.defineProperty(exports,"formatSystemMeta",{enumerable:true,get:function(){return chunkA22KLB23_cjs.a}});Object.defineProperty(exports,"getCheckpointProgress",{enumerable:true,get:function(){return chunkA22KLB23_cjs.P}});Object.defineProperty(exports,"getPatternStep",{enumerable:true,get:function(){return chunkA22KLB23_cjs.O}});Object.defineProperty(exports,"goal",{enumerable:true,get:function(){return chunkA22KLB23_cjs.Z}});Object.defineProperty(exports,"highestImpactStrategy",{enumerable:true,get:function(){return chunkA22KLB23_cjs.$}});Object.defineProperty(exports,"mapStream",{enumerable:true,get:function(){return chunkA22KLB23_cjs.I}});Object.defineProperty(exports,"matchBreakpoint",{enumerable:true,get:function(){return chunkA22KLB23_cjs.u}});Object.defineProperty(exports,"mergeTaggedStreams",{enumerable:true,get:function(){return chunkA22KLB23_cjs.J}});Object.defineProperty(exports,"parallel",{enumerable:true,get:function(){return chunkA22KLB23_cjs.T}});Object.defineProperty(exports,"patternFromJSON",{enumerable:true,get:function(){return chunkA22KLB23_cjs.ca}});Object.defineProperty(exports,"patternToJSON",{enumerable:true,get:function(){return chunkA22KLB23_cjs.ba}});Object.defineProperty(exports,"pickBestResult",{enumerable:true,get:function(){return chunkA22KLB23_cjs.ga}});Object.defineProperty(exports,"race",{enumerable:true,get:function(){return chunkA22KLB23_cjs.Y}});Object.defineProperty(exports,"reflect",{enumerable:true,get:function(){return chunkA22KLB23_cjs.X}});Object.defineProperty(exports,"runAgentRequirement",{enumerable:true,get:function(){return chunkA22KLB23_cjs.ea}});Object.defineProperty(exports,"runDebate",{enumerable:true,get:function(){return chunkA22KLB23_cjs.oa}});Object.defineProperty(exports,"selectAgent",{enumerable:true,get:function(){return chunkA22KLB23_cjs.da}});Object.defineProperty(exports,"sequential",{enumerable:true,get:function(){return chunkA22KLB23_cjs.U}});Object.defineProperty(exports,"spawnOnCondition",{enumerable:true,get:function(){return chunkA22KLB23_cjs.ma}});Object.defineProperty(exports,"spawnPool",{enumerable:true,get:function(){return chunkA22KLB23_cjs.qa}});Object.defineProperty(exports,"supervisor",{enumerable:true,get:function(){return chunkA22KLB23_cjs.V}});Object.defineProperty(exports,"tapStream",{enumerable:true,get:function(){return chunkA22KLB23_cjs.G}});Object.defineProperty(exports,"toAIContext",{enumerable:true,get:function(){return chunkA22KLB23_cjs.b}});Object.defineProperty(exports,"validateCheckpoint",{enumerable:true,get:function(){return chunkA22KLB23_cjs.x}});Object.defineProperty(exports,"withReflection",{enumerable:true,get:function(){return chunkA22KLB23_cjs.L}});Object.defineProperty(exports,"GuardrailError",{enumerable:true,get:function(){return chunkK64WKZ22_cjs.a}});Object.defineProperty(exports,"isGuardrailError",{enumerable:true,get:function(){return chunkK64WKZ22_cjs.b}});Object.defineProperty(exports,"createDebugTimeline",{enumerable:true,get:function(){return chunkWOFIBIPW_cjs.a}});Object.defineProperty(exports,"createDebugTimelinePlugin",{enumerable:true,get:function(){return chunkWOFIBIPW_cjs.b}});Object.defineProperty(exports,"createHealthMonitor",{enumerable:true,get:function(){return chunkWOFIBIPW_cjs.c}});Object.defineProperty(exports,"PredicateFromIntentError",{enumerable:true,get:function(){return chunkPD772MSE_cjs.a}});Object.defineProperty(exports,"predicateFromIntent",{enumerable:true,get:function(){return chunkPD772MSE_cjs.b}});Object.defineProperty(exports,"predicateFromIntentRaw",{enumerable:true,get:function(){return chunkPD772MSE_cjs.c}});Object.defineProperty(exports,"predicateFromIntentWithProvenance",{enumerable:true,get:function(){return chunkPD772MSE_cjs.g}});Object.defineProperty(exports,"predicateToolSpec",{enumerable:true,get:function(){return chunkPD772MSE_cjs.f}});Object.defineProperty(exports,"predicateToolSpecAnthropic",{enumerable:true,get:function(){return chunkPD772MSE_cjs.e}});Object.defineProperty(exports,"predicateToolSpecOpenAI",{enumerable:true,get:function(){return chunkPD772MSE_cjs.d}});Object.defineProperty(exports,"StructuredOutputError",{enumerable:true,get:function(){return chunkFFRWQNK7_cjs.c}});Object.defineProperty(exports,"extractJsonFromOutput",{enumerable:true,get:function(){return chunkFFRWQNK7_cjs.a}});Object.defineProperty(exports,"withStructuredOutput",{enumerable:true,get:function(){return chunkFFRWQNK7_cjs.b}});Object.defineProperty(exports,"CircuitBreakerOpenError",{enumerable:true,get:function(){return plugins.CircuitBreakerOpenError}});Object.defineProperty(exports,"createCircuitBreaker",{enumerable:true,get:function(){return plugins.createCircuitBreaker}});Object.defineProperty(exports,"createOTLPExporter",{enumerable:true,get:function(){return plugins.createOTLPExporter}});exports.AllProvidersFailedError=F;exports.BudgetExceededError=G;exports.OtelStatusCode=I;exports.RetryExhaustedError=N;exports.byAgentName=Pn;exports.byInputLength=In;exports.byPattern=Dn;exports.createAgentAuditHandlers=on;exports.createAgentMemory=Vr;exports.createAuditTrail=nn;exports.createBatchQueue=Bn;exports.createBidirectionalStream=pn;exports.createCompliance=dn;exports.createConstraintRouter=Gn;exports.createHybridStrategy=Hr;exports.createInMemoryComplianceStorage=ln;exports.createJSONFileStore=bn;exports.createKeyPointsSummarizer=Wr;exports.createLLMSummarizer=Jr;exports.createOtelPlugin=_n;exports.createRAGEnricher=Sn;exports.createSSETransport=Cn;exports.createSlidingWindowStrategy=X;exports.createStreamChannel=K;exports.createTokenBasedStrategy=Y;exports.createTruncationSummarizer=Kr;exports.mergeStreams=mn;exports.parseHttpStatus=W;exports.parseRetryAfter=oe;exports.pipe=Ur;exports.pipeThrough=gn;exports.withBudget=Mn;exports.withFallback=kn;exports.withModelSelection=On;exports.withRetry=wn;//# sourceMappingURL=index.cjs.map
|
|
119
41
|
//# sourceMappingURL=index.cjs.map
|