@directive-run/ai 1.19.7 → 1.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-PENISFE5.js +4 -0
- package/dist/chunk-PENISFE5.js.map +1 -0
- package/dist/chunk-ZCHBMZJZ.cjs +4 -0
- package/dist/chunk-ZCHBMZJZ.cjs.map +1 -0
- package/dist/guardrails.cjs +1 -1
- package/dist/guardrails.js +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-MASTXC6X.js +0 -4
- package/dist/chunk-MASTXC6X.js.map +0 -1
- package/dist/chunk-WP6UUPF2.cjs +0 -4
- package/dist/chunk-WP6UUPF2.cjs.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkZCHBMZJZ_cjs=require('./chunk-ZCHBMZJZ.cjs'),chunkIR3IHBVQ_cjs=require('./chunk-IR3IHBVQ.cjs'),chunkXN5LUOVS_cjs=require('./chunk-XN5LUOVS.cjs'),chunkC6MQ4WL6_cjs=require('./chunk-C6MQ4WL6.cjs'),chunk2C3R77ZW_cjs=require('./chunk-2C3R77ZW.cjs'),chunk3WO4MWJM_cjs=require('./chunk-3WO4MWJM.cjs'),chunkXGHNOSXT_cjs=require('./chunk-XGHNOSXT.cjs'),chunk7EJN6TYX_cjs=require('./chunk-7EJN6TYX.cjs'),chunkK64WKZ22_cjs=require('./chunk-K64WKZ22.cjs'),chunkWOFIBIPW_cjs=require('./chunk-WOFIBIPW.cjs'),chunkMDXDPECP_cjs=require('./chunk-MDXDPECP.cjs'),chunkWCQK3JOR_cjs=require('./chunk-WCQK3JOR.cjs'),plugins=require('@directive-run/core/plugins'),G=require('path');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var G__default=/*#__PURE__*/_interopDefault(G);function Hr(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 o=e.slice(-c),u=e.slice(0,-c),a=Math.max(0,s-c),y=u.slice(-a),p=u.slice(0,-a||void 0),h=[...y,...o];return {keep:h,toSummarize:p.length>0?p:[],estimatedTokens:V(h)}}}function Y(r={}){return (e,t={})=>{let n={...r,...t},s=n.maxTokens??4e3,c=n.preserveRecentCount??5,o=n.countSystemMessages??true,u=e.slice(-c),a=e.slice(0,-c),y=u.reduce((l,g)=>!o&&g.role==="system"?l:l+j(g),0),p=[],h=[],m=y;for(let l=a.length-1;l>=0;l--){let g=a[l],C=!o&&g.role==="system"?0:j(g);if(m+C<=s)p.unshift(g),m+=C;else {h.push(...a.slice(0,l+1));break}}return {keep:[...p,...u],toSummarize:h,estimatedTokens:m}}}function Vr(r={}){let e=X(r),t=Y(r);return (n,s={})=>{let c={...r,...s},o=e(n,c),u=t(n,c);return o.keep.length<=u.keep.length?o:u}}function Kr(r){let{strategy:e,summarizer:t,strategyConfig:n={},autoManage:s=false,onMemoryManaged:c,onManageError:o,maxContextTokens:u}=r,a={messages:[],summaries:[],totalMessagesProcessed:0,estimatedTokens:0},y=false;async function p(){if(y)return {messagesBefore:a.messages.length,messagesAfter:a.messages.length,messagesSummarized:0,estimatedTokensBefore:a.estimatedTokens,estimatedTokensAfter:a.estimatedTokens};y=true;try{let m=a.messages.length,l=a.estimatedTokens,g=e(a.messages,n);if(g.toSummarize.length===0)return {messagesBefore:m,messagesAfter:m,messagesSummarized:0,estimatedTokensBefore:l,estimatedTokensAfter:g.estimatedTokens};let C;t&&g.toSummarize.length>0&&(C=await t(g.toSummarize),a.summaries.push({content:C,messagesCount:g.toSummarize.length,createdAt:Date.now()})),a.messages=g.keep,a.estimatedTokens=g.estimatedTokens;let E={messagesBefore:m,messagesAfter:a.messages.length,messagesSummarized:g.toSummarize.length,summary:C,estimatedTokensBefore:l,estimatedTokensAfter:g.estimatedTokens};return c?.(E),E}finally{y=false;}}function h(){if(y)return;e(a.messages,n).toSummarize.length>0&&p().catch(l=>{let g=l instanceof Error?l:new Error(String(l));o?o(g):console.error("[Directive Memory] Auto-manage error:",g);});}return {getState(){return {...a,messages:[...a.messages],summaries:a.summaries.map(m=>({...m}))}},addMessage(m){a.messages.push(m),a.totalMessagesProcessed++,a.estimatedTokens+=j(m),s&&h();},addMessages(m){for(let l of m)a.messages.push(l),a.totalMessagesProcessed++,a.estimatedTokens+=j(l);s&&h();},getContextMessages(){let m=[];if(a.summaries.length>0){let l=a.summaries.map(g=>g.content).join(`
|
|
2
2
|
|
|
3
3
|
---
|
|
4
4
|
|
|
@@ -17,14 +17,14 @@ Focus on information that would be useful context for continuing the conversatio
|
|
|
17
17
|
CONVERSATION:
|
|
18
18
|
${c}
|
|
19
19
|
|
|
20
|
-
SUMMARY:`;return r(o)}}var Qr=1e4,Xr=10080*60*1e3,Yr=6e4,Z="0".repeat(64);function Zr(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function en(r){return new TextEncoder().encode(r)}function tn(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function ee(r){let e=en(r),t=await globalThis.crypto.subtle.digest("SHA-256",e);return tn(new Uint8Array(t))}function te(r){let{id:e,timestamp:t,eventType:n,previousHash:s,payload:c,actorId:o,sessionId:u}=r;return JSON.stringify({id:e,timestamp:t,eventType:n,previousHash:s,payload:c,actorId:o,sessionId:u})}function rn(r){return JSON.parse(JSON.stringify(r))}async function nn(r,e){let t=rn(r);async function n(s){if(typeof s=="string"){let c=await
|
|
20
|
+
SUMMARY:`;return r(o)}}var Qr=1e4,Xr=10080*60*1e3,Yr=6e4,Z="0".repeat(64);function Zr(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function en(r){return new TextEncoder().encode(r)}function tn(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function ee(r){let e=en(r),t=await globalThis.crypto.subtle.digest("SHA-256",e);return tn(new Uint8Array(t))}function te(r){let{id:e,timestamp:t,eventType:n,previousHash:s,payload:c,actorId:o,sessionId:u}=r;return JSON.stringify({id:e,timestamp:t,eventType:n,previousHash:s,payload:c,actorId:o,sessionId:u})}function rn(r){return JSON.parse(JSON.stringify(r))}async function nn(r,e){let t=rn(r);async function n(s){if(typeof s=="string"){let c=await chunkZCHBMZJZ_cjs.m(s,{types:e.types,minConfidence:e.minConfidence??.7});if(c.detected){let o=e.allowlist?c.items.filter(u=>!e.allowlist.includes(u.value.toLowerCase())):c.items;if(o.length>0)return chunkZCHBMZJZ_cjs.j(s,o,e.redactionStyle)}return s}if(Array.isArray(s))return Promise.all(s.map(n));if(s&&typeof s=="object"){let c={};for(let[o,u]of Object.entries(s))c[o]=await n(u);return c}return s}for(let[s,c]of Object.entries(t))t[s]=await n(c);return t}function on(r={}){let{maxEntries:e=Qr,retentionMs:t=Xr,exportInterval:n=Yr,exporter:s,piiMasking:c,signing:o,sessionId:u,actorId:a,events:y={}}=r,p=[],h=0,m=0,l=0,g=true,C;function E(){return p.length===0?Z:p[p.length-1].hash}async function S(d,f,b){let A={id:Zr(),timestamp:Date.now(),eventType:d,previousHash:E(),payload:f,actorId:a,sessionId:u};c?.enabled&&(A.maskedPayload=await nn(f,c));let x=te(A),w=await ee(x),P={...A,hash:w};for(o&&(P.signature=await o.signFn(w)),p.push(P);p.length>e;)p.shift(),m++,h>0&&h--;return y.onEntryAdded?.(P),P}return s&&n>0&&(C=setInterval(async()=>{try{let d=p.slice(h);d.length>0&&(await s(d),l+=d.length,h=p.length);}catch(d){y.onExportError?.(d instanceof Error?d:new Error(String(d)),p.slice(h));}},n)),{getEntries(d){let f=[...p];if(d){if(d.eventTypes?.length){let b=new Set(d.eventTypes);f=f.filter(A=>b.has(A.eventType));}d.actorId&&(f=f.filter(b=>b.actorId===d.actorId)),d.sessionId&&(f=f.filter(b=>b.sessionId===d.sessionId)),d.since!==void 0&&(f=f.filter(b=>b.timestamp>=d.since)),d.until!==void 0&&(f=f.filter(b=>b.timestamp<=d.until)),d.offset!==void 0&&(f=f.slice(d.offset)),d.limit!==void 0&&(f=f.slice(0,d.limit));}return f},async verifyChain(){if(p.length===0)return {valid:true,entriesVerified:0,verifiedAt:Date.now()};p[0].previousHash;for(let f=0;f<p.length;f++){let b=p[f],A=te({id:b.id,timestamp:b.timestamp,eventType:b.eventType,previousHash:b.previousHash,payload:b.payload,actorId:b.actorId,sessionId:b.sessionId}),x=await ee(A);if(b.hash!==x){g=false;let w={valid:false,entriesVerified:f,brokenAt:{index:f,entryId:b.id,expectedHash:x,actualHash:b.hash},verifiedAt:Date.now()};return y.onChainBroken?.(w),w}if(f>0){let w=p[f-1];if(b.previousHash!==w.hash){g=false;let P={valid:false,entriesVerified:f,brokenAt:{index:f,entryId:b.id,expectedHash:w.hash,actualHash:b.previousHash},verifiedAt:Date.now()};return y.onChainBroken?.(P),P}}if(o?.verifyFn&&b.signature&&!await o.verifyFn(b.hash,b.signature)){g=false;let P={valid:false,entriesVerified:f,brokenAt:{index:f,entryId:b.id,expectedHash:"signature-invalid",actualHash:b.signature},verifiedAt:Date.now()};return y.onChainBroken?.(P),P}}return g=true,{valid:true,entriesVerified:p.length,verifiedAt:Date.now()}},async export(d){let f=[...p];return d!==void 0&&(f=f.filter(b=>b.timestamp>=d)),s&&f.length>0&&(await s(f),l+=f.length),f},prune(){let d=Date.now()-t,f=p.length;for(;p.length>0&&p[0].timestamp<d;)p.shift(),h>0&&h--;let b=f-p.length;return m+=b,b},getStats(){let d={};for(let f of p)d[f.eventType]=(d[f.eventType]??0)+1;return {totalEntries:p.length,byEventType:d,oldestEntry:p[0]?.timestamp,newestEntry:p[p.length-1]?.timestamp,entriesPruned:m,entriesExported:l,chainIntegrity:g}},async destroy(){if(C&&(clearInterval(C),C=void 0),s)try{let d=p.slice(h);d.length>0&&(await s(d),l+=d.length);}catch(d){y.onExportError?.(d instanceof Error?d:new Error(String(d)),p.slice(h));}},addEntry(d,f){return S(d,f)},createPlugin(){return {name:"audit-trail",onFactSet:(d,f,b)=>{S("fact.set",{key:d,value:f,prev:b}).catch(console.error);},onFactsBatch:d=>{S("fact.batch",{changes:d.map(f=>({key:f.key,value:f.value,prev:f.prev}))}).catch(console.error);},onRequirementCreated:d=>{S("requirement.created",{id:d.id,type:d.requirement.type,payload:d.requirement}).catch(console.error);},onRequirementMet:(d,f)=>{S("requirement.met",{id:d.id,type:d.requirement.type,byResolver:f}).catch(console.error);},onResolverStart:(d,f)=>{S("resolver.start",{resolver:d,requirementId:f.id,requirementType:f.requirement.type}).catch(console.error);},onResolverComplete:(d,f,b)=>{S("resolver.complete",{resolver:d,requirementId:f.id,requirementType:f.requirement.type,duration:b}).catch(console.error);},onResolverError:(d,f,b)=>{S("resolver.error",{resolver:d,requirementId:f.id,requirementType:f.requirement.type,error:b instanceof Error?b.message:String(b)}).catch(console.error);},onError:d=>{S("error.occurred",{source:d.source,sourceId:d.sourceId,message:d.message,context:d.context}).catch(console.error);},onErrorRecovery:(d,f)=>{S("error.recovery",{source:d.source,message:d.message,strategy:f}).catch(console.error);}}}}}function an(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 sn(){return globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,11)}`}function cn(r){return new TextEncoder().encode(r)}function un(r){return Array.from(r).map(e=>e.toString(16).padStart(2,"0")).join("")}async function re(r){let e=cn(r),t=await globalThis.crypto.subtle.digest("SHA-256",e);return un(new Uint8Array(t))}function ln(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(o=>{let u=s[o];if(u==null)return "";if(typeof u=="object")return JSON.stringify(u).replace(/"/g,'""');let a=String(u);return a.includes(",")||a.includes(`
|
|
21
21
|
`)||a.includes('"')?`"${a.replace(/"/g,'""')}"`:a});n.push(c.join(","));}return n.join(`
|
|
22
22
|
`)}function dn(){let r=new Map,e=new Map,t=new Map;return {async getSubjectData(n,s){let c=[];for(let[o,u]of r){if(s&&!s.includes(o))continue;let a=u.get(n);a&&a.length>0&&c.push({category:o,records:[...a]});}return c},async deleteSubjectData(n,s){let c=0;for(let[o,u]of r){if(s&&!s.includes(o))continue;let a=u.get(n);a&&(c+=a.length,u.delete(n));}return c},async anonymizeSubjectData(n,s){let c=0;for(let[o,u]of r){if(s&&!s.includes(o))continue;let a=u.get(n);if(a)for(let y of a)y.data={...y.data,_anonymized:true,_anonymizedAt:Date.now()},c++;}return c},async getExpiredData(n,s){let c=[],o=r.get(n);if(o)for(let u of o.values())for(let a of u)a.createdAt<s&&c.push({id:a.id,createdAt:a.createdAt});return c},async deleteByIds(n){let s=new Set(n),c=0;for(let o of r.values())for(let[u,a]of o){let y=a.filter(p=>!s.has(p.id));y.length!==a.length&&(c+=a.length-y.length,y.length===0?o.delete(u):o.set(u,y));}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,o]of e)c.startsWith(`${n}:`)&&s.push(o);return s},async getConsentsByPurpose(n){let s=[];for(let[c,o]of e)c.endsWith(`:${n}`)&&s.push(o);return s},async storeDeletionCertificate(n){t.set(n.subjectId,n);}}}function pn(r){let{storage:e,retention:t,exportExpirationMs:n=864e5,events:s={}}=r,c={async grant(o,u,a={}){let y={subjectId:o,purpose:u,granted:true,grantedAt:Date.now(),expiresAt:a.expiresAt,source:a.source,version:a.version};return await e.storeConsent(y),s.onConsentChange?.(y),y},async revoke(o,u){let a=await e.getConsent(o,u);if(!a)return null;let y={...a,granted:false,revokedAt:Date.now()};return await e.storeConsent(y),s.onConsentChange?.(y),y},async check(o,u){let a=await e.getConsent(o,u);return !(!a||!a.granted||a.expiresAt&&a.expiresAt<Date.now())},async getForSubject(o){return e.getConsentsBySubject(o)},async getForPurpose(o){return e.getConsentsByPurpose(o)}};return {async exportData(o){try{let u=await e.getSubjectData(o.subjectId,o.categories),a=[],y=[];for(let{category:l,records:g}of u){y.push(l);for(let C of g)a.push({category:l,...C});}if(o.includeAudit&&e.getAuditEntries){let l=await e.getAuditEntries(o.subjectId);y.push("audit");for(let g of l)a.push({category:"audit",id:g.id,data:g.payload,createdAt:g.timestamp});}let p;o.format==="csv"?p=ln(a.map(l=>({category:l.category,id:l.id,createdAt:new Date(l.createdAt).toISOString(),...l.data}))):p=JSON.stringify({subjectId:o.subjectId,exportedAt:new Date().toISOString(),recordCount:a.length,categories:y,records:a},null,2);let h=await re(p),m={success:!0,subjectId:o.subjectId,format:o.format,data:p,categories:y,recordCount:a.length,checksum:h,exportedAt:Date.now(),expiresAt:Date.now()+n};return s.onExport?.(m),m}catch(u){return {success:false,subjectId:o.subjectId,format:o.format,data:"",categories:[],recordCount:0,checksum:"",exportedAt:Date.now(),error:u instanceof Error?u.message:String(u)}}},async deleteData(o){try{let u=0,a=[];o.anonymize?u=await e.anonymizeSubjectData(o.subjectId,o.categories):u=await e.deleteSubjectData(o.subjectId,o.categories),o.categories?a.push(...o.categories):o.scope==="all"&&a.push("all");let y=JSON.stringify({subjectId:o.subjectId,type:o.anonymize?"anonymization":"hard",scope:o.scope,categories:a,recordCount:u,deletedAt:Date.now(),reason:o.reason}),p={id:sn(),subjectId:o.subjectId,type:o.anonymize?"anonymization":"hard",scope:o.scope,categories:a,recordCount:u,deletedAt:Date.now(),reason:o.reason,hash:await re(y)};await e.storeDeletionCertificate(p);let h={success:!0,subjectId:o.subjectId,scope:o.scope,anonymized:o.anonymize??!1,recordsAffected:u,categoriesAffected:a,certificate:p,deletedAt:Date.now()};return s.onDelete?.(h),h}catch(u){return {success:false,subjectId:o.subjectId,scope:o.scope,anonymized:o.anonymize??false,recordsAffected:0,categoriesAffected:[],certificate:{id:"error",subjectId:o.subjectId,type:"hard",scope:o.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 o=0,u=Date.now(),a=new Set;if(t.categoryRetention)for(let y of Object.keys(t.categoryRetention))a.add(y);a.add("default");for(let y of a){let p=t.categoryRetention?.[y]??t.defaultRetentionMs,h=u-p,m=await e.getExpiredData(y,h);if(m.length>0){await t.onBeforeDelete?.({category:y,count:m.length});let l=await e.deleteByIds(m.map(g=>g.id));o+=l,t.onAfterDelete?.({category:y,count:l}),s.onRetentionEnforced?.(y,l);}}return o},createConsentGuardrail(o){return async u=>{let y=u.input.match(/user[_-]?id[:\s]*([a-zA-Z0-9-]+)/i)?.[1];return y?await c.check(y,o)?{passed:true}:{passed:false,reason:`No consent for '${o}' from subject ${y}`}:{passed:true}}},async getDeletionCertificate(o){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,o=null,u=false;function a(l){if(c){let g=c;c=null,g.resolve({value:l,done:false});}}function y(){if(c){let l=c;c=null,l.resolve({value:void 0,done:true});}}function p(l){if(c){let g=c;c=null,u=false,g.reject(l);}}function h(){if(o){let l=o;o=null,l();}}return {async send(l){if(n!=="open")throw new Error(`[Directive StreamChannel] Cannot send to ${n} channel${r.name?` "${r.name}"`:""}`);if(c){a(l);return}if(t.length>=e){if(await new Promise(g=>{o=g;}),n!=="open")throw new Error(`[Directive StreamChannel] Cannot send to ${n} channel${r.name?` "${r.name}"`:""}`);if(c){a(l);return}}t.push(l);},end(){n==="open"&&(n="closed",y());},error(l){n==="open"&&(n="error",s=l,p(l),h());},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 l=t.shift();return h(),Promise.resolve({value:l,done:false})}return n==="closed"?(u=false,Promise.resolve({value:void 0,done:true})):new Promise((l,g)=>{c={resolve:l,reject:g};})},return(){return n="closed",t.length=0,u=false,h(),Promise.resolve({value:void 0,done:true})}}}}}function gn(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 mn(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 fn(...r){return {[Symbol.asyncIterator](){let t=[],n=0,s=null,c=null,o=false,u=false,a=[];function y(p){if(s){let h=s;return s=null,h(p),true}return false}for(let p of r){let h=p[Symbol.asyncIterator]();a.push(h),(async()=>{try{for(;!o;){let m=await h.next();if(m.done||o)break;y({value:m.value,done:!1})||(t.length<1e4?t.push(m.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(m){o||(o=true,c=m instanceof Error?m:new Error(String(m)),y({value:void 0,done:true}));}n++,n>=r.length&&!o&&y({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(p=>{s=p;})},return(){o=true,t.length=0;for(let p of a)p.return?.({value:void 0,done:true});if(s){let p=s;s=null,p({value:void 0,done:true});}return Promise.resolve({value:void 0,done:true})}}}}}function yn(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
23
|
${r.content}`}function hn(r,e){return r.length===0?"":`Relevant documentation context:
|
|
24
24
|
|
|
25
25
|
${r.join(`
|
|
26
26
|
|
|
27
|
-
`)}`}function vn(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=yn,formatContext:o=hn,onError:u}=r,a=vn(s,0,1);typeof process<"u"&&process.env?.NODE_ENV==="development"&&s!==a&&console.warn(`[Directive] RAG: minSimilarity ${s} clamped to ${a} (valid range: 0-1)`);async function y(h,m){let l=Math.max(1,Math.floor(m??n));if(t.search)return t.search(await e(h),l,a);let g=await e(h),E=(await t.getChunks()).map(S=>({...S,similarity:
|
|
27
|
+
`)}`}function vn(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=yn,formatContext:o=hn,onError:u}=r,a=vn(s,0,1);typeof process<"u"&&process.env?.NODE_ENV==="development"&&s!==a&&console.warn(`[Directive] RAG: minSimilarity ${s} clamped to ${a} (valid range: 0-1)`);async function y(h,m){let l=Math.max(1,Math.floor(m??n));if(t.search)return t.search(await e(h),l,a);let g=await e(h),E=(await t.getChunks()).map(S=>({...S,similarity:chunkZCHBMZJZ_cjs.v(g,S.embedding)}));return E.sort((S,d)=>d.similarity-S.similarity),E.filter(S=>S.similarity>=a).slice(0,l)}async function p(h,m={}){let{prefix:l,history:g,topK:C,filter:E}=m,S=[];try{S=await y(h,C);}catch(A){u?.(A instanceof Error?A:new Error(String(A)));}E&&(S=S.filter(A=>E(A)));let d=S.map(A=>c(A,A.similarity)),f=o(d,h),b=[];if(l&&b.push(l),f&&b.push(f),g&&g.length>0){let A=g.map(x=>`${x.role.charAt(0).toUpperCase()+x.role.slice(1)}: ${x.content}`).join(`
|
|
28
28
|
|
|
29
29
|
`);b.push(`Previous conversation:
|
|
30
30
|
${A}`);}return b.push(h),b.join(`
|
|
@@ -37,5 +37,5 @@ ${A}`);}return b.push(h),b.join(`
|
|
|
37
37
|
|
|
38
38
|
`)}return new ReadableStream({async start(C){let E=null,S=null;try{n>0&&(E=setInterval(()=>{try{C.enqueue(g({type:"heartbeat",timestamp:Date.now()}));}catch{}},n)),S=y.stream(p,h,{signal:m?.signal});let d=0,f=!1;for await(let b of S){if(d+=b.length,d>e){C.enqueue(g({type:"truncated",text:t})),C.enqueue(g({type:"done"})),f=!0,S.abort();break}C.enqueue(g({type:"text",text:b}));}try{await S.result;}catch{}f||C.enqueue(g({type:"done"}));}catch(d){let f=o(d);C.enqueue(g({type:"error",message:f}));}finally{E&&clearInterval(E),C.close();}}})}let a={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive",...c};return {toResponse(y,p,h,m){let l=u(y,p,h,m);return new Response(l,{headers:a})},toStream(y,p,h,m){return u(y,p,h,m)}}}var _=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;}},En=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 An(r,e,t){let n=e*2**(r-1),s=Math.random()*e*.5,c=n+s;return Math.min(c,t)}function Tn(r,e,t,n){if(W(r)===429){let c=oe(r);if(c!==null)return Math.min(c,n)}return An(e,t,n)}function wn(r){let e=W(r);return e===null?true:!En.has(e)}function kn(r,e={}){let{maxRetries:t=3,baseDelayMs:n=1e3,maxDelayMs:s=3e4,isRetryable:c,onRetry:o}=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,a,y)=>{let p;for(let h=0;h<=t;h++)try{return await r(u,a,y)}catch(m){if(p=m instanceof Error?m:new Error(String(m)),h>=t)break;if(c)try{if(!c(p))break}catch{break}if(!wn(p))break;let l=Tn(p,h+1,n,s);try{o?.(h+1,p,l);}catch{}let g=y?.signal;if(g?.aborted)break;await new Promise((C,E)=>{let S=setTimeout(()=>{g?.removeEventListener("abort",d),C();},l);function d(){clearTimeout(S),E(g.reason??new Error("Aborted"));}g&&g.addEventListener("abort",d,{once:true});});}throw new _(t,p)}}var F=class extends Error{errors;constructor(e){let t=e.map((n,s)=>` [${s}] ${n.message}`).join(`
|
|
39
39
|
`);super(`[Directive] All ${e.length} providers failed:
|
|
40
|
-
${t}`),this.name="AllProvidersFailedError",this.errors=Object.freeze([...e]),e.length>0&&(this.cause=e[e.length-1]);}};function xn(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,o)=>{let u=[];for(let a=0;a<r.length;a++)try{return await r[a](s,c,o)}catch(y){let p=y instanceof Error?y:new Error(String(y));if(u.push(p),a<r.length-1){if(t)try{if(!t(p))break}catch{break}try{n?.(a,a+1,p);}catch{}}}throw new F(u)}}var N=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 In(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:o=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(o)||o<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 m of n)if(!Number.isFinite(m.maxCost)||m.maxCost<0)throw new Error(`[Directive] withBudget: budgets[${m.window}].maxCost must be a non-negative finite number.`);let a=new Map;for(let m of n)a.set(m.window,new $);let y=new $,p=async(m,l,g)=>{let C=In(l,c);if(t!=null&&s){let S=ie(C,s,o);if(S>t){let d={estimated:S,remaining:t,window:"per-call"};try{u?.(d);}catch{}throw new N(d)}}for(let S of n){let d=ae[S.window],b=a.get(S.window).getCostInWindow(d),A=S.maxCost-b,x=ie(C,S.pricing,o);if(x>A){let w={estimated:x,remaining:Math.max(0,A),window:S.window};try{u?.(w);}catch{}throw new N(w)}}let E=await r(m,l,g);if(E.tokenUsage){for(let S of n){let d=a.get(S.window),f=se(E.tokenUsage,S.pricing);d.record(f);}if(s&&n.length===0){let S=se(E.tokenUsage,s);y.record(S);}}return E};function h(m){let l=a.get(m);if(!l)return 0;let g=ae[m];return l.getCostInWindow(g)}return p.getSpent=h,p}function Pn(r,e){return {match:(t,n)=>n.length<=r,model:e}}function Dn(r,e){return {match:t=>t.name===r,model:e}}function On(r,e){return {match:(t,n)=>(r.lastIndex=0,r.test(n)),model:e}}function Bn(r,e){let t=Array.isArray(e)?{rules:e}:e,{rules:n,onModelSelected:s}=t;return async(c,o,u)=>{let a=c.model;for(let p of n)try{if(p.match(c,o)){a=p.model;break}}catch{}try{s?.(c.model,a);}catch{}let y=a!==c.model?{...c,model:a}:c;return r(y,o,u)}}function jn(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=[],o=null,u=false,a=null;function y(){o===null&&(o=setTimeout(()=>{o=null,m().catch(()=>{});},n));}function p(){o!==null&&(clearTimeout(o),o=null);}async function h(l){let g=0;async function C(){for(;g<l.length;){let S=g++,d=l[S];try{let f=await r(d.agent,d.input,d.options);d.resolve(f);}catch(f){d.reject(f instanceof Error?f:new Error(String(f)));}}}let E=Array.from({length:Math.min(s,l.length)},()=>C());await Promise.all(E);}async function m(){if(a&&await a,c.length===0)return;p();let l=c.splice(0);a=h(l).finally(()=>{a=null,c.length>0&&y();}),await a;}return {submit(l,g,C){return u?Promise.reject(new Error("[Directive] BatchQueue has been destroyed.")):new Promise((E,S)=>{c.push({agent:l,input:g,options:C,resolve:E,reject:S}),c.length>=t?(p(),m().catch(()=>{})):y();})},async flush(){await m();},get pending(){return c.length},async destroy(){u||(u=true,p(),c.length>0&&await m());}}}function ce(){return {callCount:0,errorCount:0,totalCost:0,avgLatencyMs:0,lastErrorAt:null}}function Nn(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:o=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 g of e)u.set(g.name,g);if(!u.has(t))throw new Error(`[Directive] Default provider "${t}" not found in providers list.`);let a={totalCost:0,callCount:0,errorCount:0,lastProvider:null,avgLatencyMs:0,providers:Object.create(null)};for(let g of e)a.providers[g.name]=ce();let y=0,p=[...n].sort((g,C)=>(C.priority??0)-(g.priority??0));function h(){let g=Date.now();for(let E of p)try{if(E.when(a)){let S=u.get(E.provider);if(S)return {provider:S,reason:"constraint"}}}catch{}let C=e.filter(E=>{let S=a.providers[E.name];return S?!(S.lastErrorAt&&g-S.lastErrorAt<c):true});if(o&&C.length>0){let E=[...C].sort((S,d)=>{let f=S.pricing?S.pricing.inputPerMillion+S.pricing.outputPerMillion:Number.POSITIVE_INFINITY,b=d.pricing?d.pricing.inputPerMillion+d.pricing.outputPerMillion:Number.POSITIVE_INFINITY;return f!==b?f-b:S.name===t?-1:d.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 m(g,C,E,S,d){let f=a.providers[g]??ce();if(f.callCount++,a.callCount++,d)f.errorCount++,a.errorCount++,f.lastErrorAt=Date.now();else {let A=Nn(E,S);f.totalCost+=A,a.totalCost+=A;}y+=C,a.avgLatencyMs=y/a.callCount;let b=f.callCount>0?(f.avgLatencyMs*(f.callCount-1)+C)/f.callCount:C;f.avgLatencyMs=b,a.providers[g]=f,a.lastProvider=g;}let l=async(g,C,E)=>{let{provider:S,reason:d}=h();try{s?.(S.name,d);}catch{}let f=Date.now();try{let b=await S.runner(g,C,E),A=Date.now()-f;return m(S.name,A,b.tokenUsage,S.pricing),b}catch(b){let A=Date.now()-f,x=b instanceof Error?b:new Error(String(b));throw m(S.name,A,void 0,S.pricing,x),x}};return Object.defineProperty(l,"facts",{get:()=>{let g=Object.create(null);for(let C of Object.keys(a.providers))g[C]={...a.providers[C]};return {...a,providers:g}},enumerable:true}),l}var I={UNSET:0,OK:1,ERROR:2},L=class{constructor(e,t,n,s,c,o){this.name=e;this.spanId=t;this.traceId=n;this.parentSpanId=s;this.onEnd=o;if(this.startTime=Date.now(),c)for(let[u,a]of Object.entries(c))this.attributes[u]=a;}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,o=>{this.spans.push(o.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,o=r.tracer??c,u=0;function a(){return `${Date.now().toString(36)}-${(u++).toString(36)}`}function y(){return `${Date.now().toString(36)}-${crypto.randomUUID().slice(0,8)}`}let p=new Map,h=0,m=new Map,l=[],g=null,C=false;function E(i){return t?t.has(i):true}function S(i,v){return `${i}:${v}:${h++}`}function d(i,v){let R=`${i}:${v}`,T=m.get(R);if(T){for(let k=T.length-1;k>=0;k--){let O=p.get(T[k]);if(O)return {key:T[k],entry:O}}m.delete(R);}return null}function f(i,v,R,T){let k=`${i}:${v}`;T.indexKey=k,p.set(R,T);let O=m.get(k);O?O.push(R):m.set(k,[R]);}function b(i){let v=p.get(i);p.delete(i);let R=v?.indexKey;if(R){let T=m.get(R);if(T){let k=T.indexOf(i);k!==-1&&T.splice(k,1),T.length===0&&m.delete(R);}}}function A(){let i=Date.now();if(p.size<1e4){for(let[R,T]of p)i-T.startTime>n&&(M(T,"directive.stale",true),D(T,{code:I.ERROR,message:"Span TTL exceeded \u2014 cleaned up"}),w(T),b(R),true);return void 0}for(let[v,R]of p)i-R.startTime>n&&(M(R,"directive.stale",true),D(R,{code:I.ERROR,message:"Span TTL exceeded \u2014 cleaned up"}),w(R),b(v));}function x(i,v,R){let T=a(),k=R?.traceId??y(),O=R?.spanId,B;s?B=o.startSpan(i,{attributes:v,spanId:T,traceId:k,parentSpanId:O}):B=o.startSpan(i,{attributes:v});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:{...v},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 v=Date.now();return {name:"unknown",traceId:i.traceId,spanId:i.spanId,attributes:{},events:[],status:{code:I.UNSET},startTime:i.startTime,endTime:v,durationMs:v-i.startTime}}function M(i,v,R){i.span.setAttribute(v,R),i.shadow&&(i.shadow.attributes[v]=R);}function q(i,v,R){i.span.addEvent(v,R),i.shadow&&i.shadow.events.push({name:v,attributes:R,timestamp:Date.now()});}function D(i,v){i.span.setStatus(v),i.shadow&&(i.shadow.status={...v});}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":ve(i);break;case "pattern_complete":Se(i);break;default:if(i.agentId){let v=d("agent",i.agentId);v&&q(v.entry,i.type,{"event.id":i.id,"event.timestamp":i.timestamp});}}}function le(i){let v=l.length>0?l[l.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},v),T=S("agent",i.agentId);f("agent",i.agentId,T,R);}function de(i){let v=d("agent",i.agentId);v&&(M(v.entry,"directive.agent.output_length",i.outputLength),M(v.entry,"directive.agent.total_tokens",i.totalTokens),M(v.entry,"directive.agent.duration_ms",i.durationMs),M(v.entry,"gen_ai.usage.total_tokens",i.totalTokens),D(v.entry,{code:I.OK}),w(v.entry),b(v.key));}function pe(i){let v=d("agent",i.agentId);v&&(M(v.entry,"directive.agent.duration_ms",i.durationMs),M(v.entry,"directive.agent.error",i.errorMessage),M(v.entry,"gen_ai.error.message",i.errorMessage),D(v.entry,{code:I.ERROR,message:i.errorMessage}),w(v.entry),b(v.key));}function ge(i){let v=i.agentId?d("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},v);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=d("agent",i.agentId);if(R){q(R.entry,"constraint_evaluate",{"directive.constraint.id":i.constraintId,"directive.constraint.fired":i.fired});return}}let{entry:v}=x(`${e}.constraint.evaluate`,{"directive.service":r.serviceName,"directive.constraint.id":i.constraintId,"directive.constraint.fired":i.fired},null);D(v,{code:I.OK}),w(v);}function fe(i){let R=(i.agentId?d("agent",i.agentId)?.entry??null:null)??(l.length>0?l[l.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=S("resolver",i.resolverId);f("resolver",i.resolverId,k,T);}function ye(i){let v=d("resolver",i.resolverId);v&&(M(v.entry,"directive.resolver.duration_ms",i.durationMs),D(v.entry,{code:I.OK}),w(v.entry),b(v.key));}function he(i){let v=d("resolver",i.resolverId);v&&(M(v.entry,"directive.resolver.duration_ms",i.durationMs),M(v.entry,"directive.resolver.error",i.errorMessage),D(v.entry,{code:I.ERROR,message:i.errorMessage}),w(v.entry),b(v.key));}function ve(i){let v=l.length>0?l[l.length-1]:null,{entry:R}=x(`${e}.pattern.${i.patternType}`,{"directive.service":r.serviceName,"directive.pattern.id":i.patternId,"directive.pattern.type":i.patternType},v),T=S("pattern",i.patternId);f("pattern",i.patternId,T,R),l.length<100&&l.push(R);}function Se(i){let v=d("pattern",i.patternId);if(v){M(v.entry,"directive.pattern.duration_ms",i.durationMs),i.error?(M(v.entry,"directive.pattern.error",i.error),D(v.entry,{code:I.ERROR,message:i.error})):D(v.entry,{code:I.OK}),w(v.entry),b(v.key);let R=l.indexOf(v.entry);R!==-1&&l.splice(R,1);}}return {attach(i){if(g&&g!==i)throw new Error("[Directive OTEL] Plugin already attached to a different timeline. Create a new plugin instance.");g=i;let v=i.subscribe(ue),R=setInterval(A,Math.min(n,6e4));return ()=>{v(),clearInterval(R),g=null;for(let[T,k]of p)M(k,"directive.detached",true),D(k,{code:I.ERROR,message:"Plugin detached while span was active"}),w(k);p.clear(),m.clear(),l.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 o},getActiveSpanCount(){return p.size}}}function Fn(r,e){let{tracer:t,serviceName:n,spanPrefix:s="directive.source",publishSampleRate:c=1}=e,o=new Map;function u(h,m){return `${m}::${h}`}function a(h,m){return {"service.name":n,"source.id":h,"source.module_id":m}}function y(h){switch(h.type){case "source.attach":{let m=h.id,l=h.moduleId,g=t.startSpan(`${s}.attached`,{attributes:{...a(m,l),"directive.attached":true}});o.set(u(m,l),{span:g,startedAt:Date.now()});break}case "source.publish":{if(c<1&&Math.random()>c)break;let m=h.id,l=h.moduleId,g=h.eventName,C=o.get(u(m,l));if(!C)break;C.span.addEvent("publish",{"source.event_name":g,"timestamp.ms":Date.now()});break}case "source.detach":{let m=h.id,l=h.moduleId,g=o.get(u(m,l));if(!g)break;g.span.setStatus({code:I.OK}),g.span.end(),o.delete(u(m,l));break}case "source.error":{let m=h.id,l=h.moduleId,g=h.phase,C=h.error,E=C instanceof Error?C.message:typeof C=="string"?C:String(C),S=t.startSpan(`${s}.error`,{attributes:{...a(m,l),"directive.phase":g,"error.message":E}});S.setStatus({code:I.ERROR,message:E}),S.end();let d=o.get(u(m,l));d&&d.span.addEvent("error",{"directive.phase":g,"error.message":E});break}}}let p=r.observe(y);return ()=>{p();for(let[,h]of o)h.span.setAttribute("directive.detached",true),h.span.setStatus({code:I.OK}),h.span.end();o.clear();}}Object.defineProperty(exports,"DEFAULT_INJECTION_PATTERNS",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.o}});Object.defineProperty(exports,"STRICT_INJECTION_PATTERNS",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.p}});Object.defineProperty(exports,"createBatchedEmbedder",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.A}});Object.defineProperty(exports,"createBruteForceIndex",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.B}});Object.defineProperty(exports,"createContentFilterGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.h}});Object.defineProperty(exports,"createEnhancedPIIGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.k}});Object.defineProperty(exports,"createFactPIIGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.i}});Object.defineProperty(exports,"createInMemoryStorage",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.w}});Object.defineProperty(exports,"createLengthGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.g}});Object.defineProperty(exports,"createModerationGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.b}});Object.defineProperty(exports,"createOutputPIIGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.l}});Object.defineProperty(exports,"createOutputSchemaGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.e}});Object.defineProperty(exports,"createOutputTypeGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.f}});Object.defineProperty(exports,"createPIIGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.a}});Object.defineProperty(exports,"createPromptInjectionGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.s}});Object.defineProperty(exports,"createRateLimitGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.c}});Object.defineProperty(exports,"createSemanticCache",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.x}});Object.defineProperty(exports,"createSemanticCacheGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.y}});Object.defineProperty(exports,"createTestEmbedder",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.z}});Object.defineProperty(exports,"createToolGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.d}});Object.defineProperty(exports,"createUntrustedContentGuardrail",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.u}});Object.defineProperty(exports,"createVPTreeIndex",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.C}});Object.defineProperty(exports,"detectAndRedactPII",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.n}});Object.defineProperty(exports,"detectPII",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.m}});Object.defineProperty(exports,"detectPromptInjection",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.q}});Object.defineProperty(exports,"markUntrustedContent",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.t}});Object.defineProperty(exports,"redactPII",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.j}});Object.defineProperty(exports,"sanitizeInjection",{enumerable:true,get:function(){return chunkWP6UUPF2_cjs.r}});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 chunkC6MQ4WL6_cjs.b}});Object.defineProperty(exports,"createMCPAdapter",{enumerable:true,get:function(){return chunkC6MQ4WL6_cjs.a}});Object.defineProperty(exports,"mcpCallTool",{enumerable:true,get:function(){return chunkC6MQ4WL6_cjs.c}});Object.defineProperty(exports,"mcpGetPrompt",{enumerable:true,get:function(){return chunkC6MQ4WL6_cjs.e}});Object.defineProperty(exports,"mcpReadResource",{enumerable:true,get:function(){return chunkC6MQ4WL6_cjs.d}});Object.defineProperty(exports,"mcpSyncResources",{enumerable:true,get:function(){return chunkC6MQ4WL6_cjs.f}});Object.defineProperty(exports,"createAgentOrchestrator",{enumerable:true,get:function(){return chunk2C3R77ZW_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 chunkXGHNOSXT_cjs.c}});Object.defineProperty(exports,"createDelegator",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.e}});Object.defineProperty(exports,"createMessageBus",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.b}});Object.defineProperty(exports,"createPubSub",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.f}});Object.defineProperty(exports,"createResponder",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.d}});Object.defineProperty(exports,"explainGoal",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.j}});Object.defineProperty(exports,"getDependencyGraph",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.g}});Object.defineProperty(exports,"patternToMermaid",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.a}});Object.defineProperty(exports,"planGoal",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.i}});Object.defineProperty(exports,"validateGoal",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.h}});Object.defineProperty(exports,"InMemoryCheckpointStore",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.y}});Object.defineProperty(exports,"MAX_BREAKPOINT_HISTORY",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.s}});Object.defineProperty(exports,"ReflectionExhaustedError",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.K}});Object.defineProperty(exports,"Semaphore",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.N}});Object.defineProperty(exports,"adaptOutputGuardrail",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.E}});Object.defineProperty(exports,"aggregateTokens",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ia}});Object.defineProperty(exports,"allReadyStrategy",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs._}});Object.defineProperty(exports,"capabilityRoute",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.la}});Object.defineProperty(exports,"collectOutputs",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ha}});Object.defineProperty(exports,"collectTokens",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.F}});Object.defineProperty(exports,"combineStreamingGuardrails",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.D}});Object.defineProperty(exports,"composePatterns",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ja}});Object.defineProperty(exports,"concatResults",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.fa}});Object.defineProperty(exports,"costEfficientStrategy",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.aa}});Object.defineProperty(exports,"createBreakpointId",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.t}});Object.defineProperty(exports,"createCheckpointId",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.w}});Object.defineProperty(exports,"createInitialBreakpointState",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.v}});Object.defineProperty(exports,"createLengthStreamingGuardrail",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.B}});Object.defineProperty(exports,"createMultiAgentOrchestrator",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ra}});Object.defineProperty(exports,"createPatternStreamingGuardrail",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.C}});Object.defineProperty(exports,"createStreamingRunner",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.z}});Object.defineProperty(exports,"createToxicityStreamingGuardrail",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.A}});Object.defineProperty(exports,"dag",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.W}});Object.defineProperty(exports,"debate",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.na}});Object.defineProperty(exports,"derivedConstraint",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.pa}});Object.defineProperty(exports,"diffCheckpoints",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.Q}});Object.defineProperty(exports,"filterStream",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.H}});Object.defineProperty(exports,"findAgentsByCapability",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ka}});Object.defineProperty(exports,"forkFromCheckpoint",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.R}});Object.defineProperty(exports,"formatSystemMeta",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.a}});Object.defineProperty(exports,"getCheckpointProgress",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.P}});Object.defineProperty(exports,"getPatternStep",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.O}});Object.defineProperty(exports,"goal",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.Z}});Object.defineProperty(exports,"highestImpactStrategy",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.$}});Object.defineProperty(exports,"mapStream",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.I}});Object.defineProperty(exports,"matchBreakpoint",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.u}});Object.defineProperty(exports,"mergeTaggedStreams",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.J}});Object.defineProperty(exports,"parallel",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.T}});Object.defineProperty(exports,"patternFromJSON",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ca}});Object.defineProperty(exports,"patternToJSON",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ba}});Object.defineProperty(exports,"pickBestResult",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ga}});Object.defineProperty(exports,"race",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.Y}});Object.defineProperty(exports,"reflect",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.X}});Object.defineProperty(exports,"runAgentRequirement",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ea}});Object.defineProperty(exports,"runDebate",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.oa}});Object.defineProperty(exports,"selectAgent",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.da}});Object.defineProperty(exports,"sequential",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.U}});Object.defineProperty(exports,"spawnOnCondition",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ma}});Object.defineProperty(exports,"spawnPool",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.qa}});Object.defineProperty(exports,"supervisor",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.V}});Object.defineProperty(exports,"tapStream",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.G}});Object.defineProperty(exports,"toAIContext",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.b}});Object.defineProperty(exports,"validateCheckpoint",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.x}});Object.defineProperty(exports,"withReflection",{enumerable:true,get:function(){return chunk7EJN6TYX_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 chunkMDXDPECP_cjs.a}});Object.defineProperty(exports,"predicateFromIntent",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.b}});Object.defineProperty(exports,"predicateFromIntentRaw",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.c}});Object.defineProperty(exports,"predicateFromIntentWithProvenance",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.g}});Object.defineProperty(exports,"predicateToolSpec",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.f}});Object.defineProperty(exports,"predicateToolSpecAnthropic",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.e}});Object.defineProperty(exports,"predicateToolSpecOpenAI",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.d}});Object.defineProperty(exports,"StructuredOutputError",{enumerable:true,get:function(){return chunkWCQK3JOR_cjs.c}});Object.defineProperty(exports,"extractJsonFromOutput",{enumerable:true,get:function(){return chunkWCQK3JOR_cjs.a}});Object.defineProperty(exports,"withStructuredOutput",{enumerable:true,get:function(){return chunkWCQK3JOR_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=N;exports.OtelStatusCode=I;exports.RetryExhaustedError=_;exports.attachSourcesToOtel=Fn;exports.byAgentName=Dn;exports.byInputLength=Pn;exports.byPattern=On;exports.createAgentAuditHandlers=an;exports.createAgentMemory=Kr;exports.createAuditTrail=on;exports.createBatchQueue=jn;exports.createBidirectionalStream=gn;exports.createCompliance=pn;exports.createConstraintRouter=Gn;exports.createHybridStrategy=Vr;exports.createInMemoryComplianceStorage=dn;exports.createJSONFileStore=Cn;exports.createKeyPointsSummarizer=Jr;exports.createLLMSummarizer=qr;exports.createOtelPlugin=_n;exports.createRAGEnricher=Sn;exports.createSSETransport=Rn;exports.createSlidingWindowStrategy=X;exports.createStreamChannel=K;exports.createTokenBasedStrategy=Y;exports.createTruncationSummarizer=Wr;exports.mergeStreams=fn;exports.parseHttpStatus=W;exports.parseRetryAfter=oe;exports.pipe=Hr;exports.pipeThrough=mn;exports.withBudget=Mn;exports.withFallback=xn;exports.withModelSelection=Bn;exports.withRetry=kn;//# sourceMappingURL=index.cjs.map
|
|
40
|
+
${t}`),this.name="AllProvidersFailedError",this.errors=Object.freeze([...e]),e.length>0&&(this.cause=e[e.length-1]);}};function xn(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,o)=>{let u=[];for(let a=0;a<r.length;a++)try{return await r[a](s,c,o)}catch(y){let p=y instanceof Error?y:new Error(String(y));if(u.push(p),a<r.length-1){if(t)try{if(!t(p))break}catch{break}try{n?.(a,a+1,p);}catch{}}}throw new F(u)}}var N=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 In(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:o=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(o)||o<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 m of n)if(!Number.isFinite(m.maxCost)||m.maxCost<0)throw new Error(`[Directive] withBudget: budgets[${m.window}].maxCost must be a non-negative finite number.`);let a=new Map;for(let m of n)a.set(m.window,new $);let y=new $,p=async(m,l,g)=>{let C=In(l,c);if(t!=null&&s){let S=ie(C,s,o);if(S>t){let d={estimated:S,remaining:t,window:"per-call"};try{u?.(d);}catch{}throw new N(d)}}for(let S of n){let d=ae[S.window],b=a.get(S.window).getCostInWindow(d),A=S.maxCost-b,x=ie(C,S.pricing,o);if(x>A){let w={estimated:x,remaining:Math.max(0,A),window:S.window};try{u?.(w);}catch{}throw new N(w)}}let E=await r(m,l,g);if(E.tokenUsage){for(let S of n){let d=a.get(S.window),f=se(E.tokenUsage,S.pricing);d.record(f);}if(s&&n.length===0){let S=se(E.tokenUsage,s);y.record(S);}}return E};function h(m){let l=a.get(m);if(!l)return 0;let g=ae[m];return l.getCostInWindow(g)}return p.getSpent=h,p}function Pn(r,e){return {match:(t,n)=>n.length<=r,model:e}}function Dn(r,e){return {match:t=>t.name===r,model:e}}function On(r,e){return {match:(t,n)=>(r.lastIndex=0,r.test(n)),model:e}}function Bn(r,e){let t=Array.isArray(e)?{rules:e}:e,{rules:n,onModelSelected:s}=t;return async(c,o,u)=>{let a=c.model;for(let p of n)try{if(p.match(c,o)){a=p.model;break}}catch{}try{s?.(c.model,a);}catch{}let y=a!==c.model?{...c,model:a}:c;return r(y,o,u)}}function jn(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=[],o=null,u=false,a=null;function y(){o===null&&(o=setTimeout(()=>{o=null,m().catch(()=>{});},n));}function p(){o!==null&&(clearTimeout(o),o=null);}async function h(l){let g=0;async function C(){for(;g<l.length;){let S=g++,d=l[S];try{let f=await r(d.agent,d.input,d.options);d.resolve(f);}catch(f){d.reject(f instanceof Error?f:new Error(String(f)));}}}let E=Array.from({length:Math.min(s,l.length)},()=>C());await Promise.all(E);}async function m(){if(a&&await a,c.length===0)return;p();let l=c.splice(0);a=h(l).finally(()=>{a=null,c.length>0&&y();}),await a;}return {submit(l,g,C){return u?Promise.reject(new Error("[Directive] BatchQueue has been destroyed.")):new Promise((E,S)=>{c.push({agent:l,input:g,options:C,resolve:E,reject:S}),c.length>=t?(p(),m().catch(()=>{})):y();})},async flush(){await m();},get pending(){return c.length},async destroy(){u||(u=true,p(),c.length>0&&await m());}}}function ce(){return {callCount:0,errorCount:0,totalCost:0,avgLatencyMs:0,lastErrorAt:null}}function Nn(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:o=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 g of e)u.set(g.name,g);if(!u.has(t))throw new Error(`[Directive] Default provider "${t}" not found in providers list.`);let a={totalCost:0,callCount:0,errorCount:0,lastProvider:null,avgLatencyMs:0,providers:Object.create(null)};for(let g of e)a.providers[g.name]=ce();let y=0,p=[...n].sort((g,C)=>(C.priority??0)-(g.priority??0));function h(){let g=Date.now();for(let E of p)try{if(E.when(a)){let S=u.get(E.provider);if(S)return {provider:S,reason:"constraint"}}}catch{}let C=e.filter(E=>{let S=a.providers[E.name];return S?!(S.lastErrorAt&&g-S.lastErrorAt<c):true});if(o&&C.length>0){let E=[...C].sort((S,d)=>{let f=S.pricing?S.pricing.inputPerMillion+S.pricing.outputPerMillion:Number.POSITIVE_INFINITY,b=d.pricing?d.pricing.inputPerMillion+d.pricing.outputPerMillion:Number.POSITIVE_INFINITY;return f!==b?f-b:S.name===t?-1:d.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 m(g,C,E,S,d){let f=a.providers[g]??ce();if(f.callCount++,a.callCount++,d)f.errorCount++,a.errorCount++,f.lastErrorAt=Date.now();else {let A=Nn(E,S);f.totalCost+=A,a.totalCost+=A;}y+=C,a.avgLatencyMs=y/a.callCount;let b=f.callCount>0?(f.avgLatencyMs*(f.callCount-1)+C)/f.callCount:C;f.avgLatencyMs=b,a.providers[g]=f,a.lastProvider=g;}let l=async(g,C,E)=>{let{provider:S,reason:d}=h();try{s?.(S.name,d);}catch{}let f=Date.now();try{let b=await S.runner(g,C,E),A=Date.now()-f;return m(S.name,A,b.tokenUsage,S.pricing),b}catch(b){let A=Date.now()-f,x=b instanceof Error?b:new Error(String(b));throw m(S.name,A,void 0,S.pricing,x),x}};return Object.defineProperty(l,"facts",{get:()=>{let g=Object.create(null);for(let C of Object.keys(a.providers))g[C]={...a.providers[C]};return {...a,providers:g}},enumerable:true}),l}var I={UNSET:0,OK:1,ERROR:2},L=class{constructor(e,t,n,s,c,o){this.name=e;this.spanId=t;this.traceId=n;this.parentSpanId=s;this.onEnd=o;if(this.startTime=Date.now(),c)for(let[u,a]of Object.entries(c))this.attributes[u]=a;}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,o=>{this.spans.push(o.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,o=r.tracer??c,u=0;function a(){return `${Date.now().toString(36)}-${(u++).toString(36)}`}function y(){return `${Date.now().toString(36)}-${crypto.randomUUID().slice(0,8)}`}let p=new Map,h=0,m=new Map,l=[],g=null,C=false;function E(i){return t?t.has(i):true}function S(i,v){return `${i}:${v}:${h++}`}function d(i,v){let R=`${i}:${v}`,T=m.get(R);if(T){for(let k=T.length-1;k>=0;k--){let O=p.get(T[k]);if(O)return {key:T[k],entry:O}}m.delete(R);}return null}function f(i,v,R,T){let k=`${i}:${v}`;T.indexKey=k,p.set(R,T);let O=m.get(k);O?O.push(R):m.set(k,[R]);}function b(i){let v=p.get(i);p.delete(i);let R=v?.indexKey;if(R){let T=m.get(R);if(T){let k=T.indexOf(i);k!==-1&&T.splice(k,1),T.length===0&&m.delete(R);}}}function A(){let i=Date.now();if(p.size<1e4){for(let[R,T]of p)i-T.startTime>n&&(M(T,"directive.stale",true),D(T,{code:I.ERROR,message:"Span TTL exceeded \u2014 cleaned up"}),w(T),b(R),true);return void 0}for(let[v,R]of p)i-R.startTime>n&&(M(R,"directive.stale",true),D(R,{code:I.ERROR,message:"Span TTL exceeded \u2014 cleaned up"}),w(R),b(v));}function x(i,v,R){let T=a(),k=R?.traceId??y(),O=R?.spanId,B;s?B=o.startSpan(i,{attributes:v,spanId:T,traceId:k,parentSpanId:O}):B=o.startSpan(i,{attributes:v});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:{...v},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 v=Date.now();return {name:"unknown",traceId:i.traceId,spanId:i.spanId,attributes:{},events:[],status:{code:I.UNSET},startTime:i.startTime,endTime:v,durationMs:v-i.startTime}}function M(i,v,R){i.span.setAttribute(v,R),i.shadow&&(i.shadow.attributes[v]=R);}function q(i,v,R){i.span.addEvent(v,R),i.shadow&&i.shadow.events.push({name:v,attributes:R,timestamp:Date.now()});}function D(i,v){i.span.setStatus(v),i.shadow&&(i.shadow.status={...v});}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":ve(i);break;case "pattern_complete":Se(i);break;default:if(i.agentId){let v=d("agent",i.agentId);v&&q(v.entry,i.type,{"event.id":i.id,"event.timestamp":i.timestamp});}}}function le(i){let v=l.length>0?l[l.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},v),T=S("agent",i.agentId);f("agent",i.agentId,T,R);}function de(i){let v=d("agent",i.agentId);v&&(M(v.entry,"directive.agent.output_length",i.outputLength),M(v.entry,"directive.agent.total_tokens",i.totalTokens),M(v.entry,"directive.agent.duration_ms",i.durationMs),M(v.entry,"gen_ai.usage.total_tokens",i.totalTokens),D(v.entry,{code:I.OK}),w(v.entry),b(v.key));}function pe(i){let v=d("agent",i.agentId);v&&(M(v.entry,"directive.agent.duration_ms",i.durationMs),M(v.entry,"directive.agent.error",i.errorMessage),M(v.entry,"gen_ai.error.message",i.errorMessage),D(v.entry,{code:I.ERROR,message:i.errorMessage}),w(v.entry),b(v.key));}function ge(i){let v=i.agentId?d("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},v);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=d("agent",i.agentId);if(R){q(R.entry,"constraint_evaluate",{"directive.constraint.id":i.constraintId,"directive.constraint.fired":i.fired});return}}let{entry:v}=x(`${e}.constraint.evaluate`,{"directive.service":r.serviceName,"directive.constraint.id":i.constraintId,"directive.constraint.fired":i.fired},null);D(v,{code:I.OK}),w(v);}function fe(i){let R=(i.agentId?d("agent",i.agentId)?.entry??null:null)??(l.length>0?l[l.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=S("resolver",i.resolverId);f("resolver",i.resolverId,k,T);}function ye(i){let v=d("resolver",i.resolverId);v&&(M(v.entry,"directive.resolver.duration_ms",i.durationMs),D(v.entry,{code:I.OK}),w(v.entry),b(v.key));}function he(i){let v=d("resolver",i.resolverId);v&&(M(v.entry,"directive.resolver.duration_ms",i.durationMs),M(v.entry,"directive.resolver.error",i.errorMessage),D(v.entry,{code:I.ERROR,message:i.errorMessage}),w(v.entry),b(v.key));}function ve(i){let v=l.length>0?l[l.length-1]:null,{entry:R}=x(`${e}.pattern.${i.patternType}`,{"directive.service":r.serviceName,"directive.pattern.id":i.patternId,"directive.pattern.type":i.patternType},v),T=S("pattern",i.patternId);f("pattern",i.patternId,T,R),l.length<100&&l.push(R);}function Se(i){let v=d("pattern",i.patternId);if(v){M(v.entry,"directive.pattern.duration_ms",i.durationMs),i.error?(M(v.entry,"directive.pattern.error",i.error),D(v.entry,{code:I.ERROR,message:i.error})):D(v.entry,{code:I.OK}),w(v.entry),b(v.key);let R=l.indexOf(v.entry);R!==-1&&l.splice(R,1);}}return {attach(i){if(g&&g!==i)throw new Error("[Directive OTEL] Plugin already attached to a different timeline. Create a new plugin instance.");g=i;let v=i.subscribe(ue),R=setInterval(A,Math.min(n,6e4));return ()=>{v(),clearInterval(R),g=null;for(let[T,k]of p)M(k,"directive.detached",true),D(k,{code:I.ERROR,message:"Plugin detached while span was active"}),w(k);p.clear(),m.clear(),l.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 o},getActiveSpanCount(){return p.size}}}function Fn(r,e){let{tracer:t,serviceName:n,spanPrefix:s="directive.source",publishSampleRate:c=1}=e,o=new Map;function u(h,m){return `${m}::${h}`}function a(h,m){return {"service.name":n,"source.id":h,"source.module_id":m}}function y(h){switch(h.type){case "source.attach":{let m=h.id,l=h.moduleId,g=t.startSpan(`${s}.attached`,{attributes:{...a(m,l),"directive.attached":true}});o.set(u(m,l),{span:g,startedAt:Date.now()});break}case "source.publish":{if(c<1&&Math.random()>c)break;let m=h.id,l=h.moduleId,g=h.eventName,C=o.get(u(m,l));if(!C)break;C.span.addEvent("publish",{"source.event_name":g,"timestamp.ms":Date.now()});break}case "source.detach":{let m=h.id,l=h.moduleId,g=o.get(u(m,l));if(!g)break;g.span.setStatus({code:I.OK}),g.span.end(),o.delete(u(m,l));break}case "source.error":{let m=h.id,l=h.moduleId,g=h.phase,C=h.error,E=C instanceof Error?C.message:typeof C=="string"?C:String(C),S=t.startSpan(`${s}.error`,{attributes:{...a(m,l),"directive.phase":g,"error.message":E}});S.setStatus({code:I.ERROR,message:E}),S.end();let d=o.get(u(m,l));d&&d.span.addEvent("error",{"directive.phase":g,"error.message":E});break}}}let p=r.observe(y);return ()=>{p();for(let[,h]of o)h.span.setAttribute("directive.detached",true),h.span.setStatus({code:I.OK}),h.span.end();o.clear();}}Object.defineProperty(exports,"DEFAULT_INJECTION_PATTERNS",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.o}});Object.defineProperty(exports,"STRICT_INJECTION_PATTERNS",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.p}});Object.defineProperty(exports,"createBatchedEmbedder",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.A}});Object.defineProperty(exports,"createBruteForceIndex",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.B}});Object.defineProperty(exports,"createContentFilterGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.h}});Object.defineProperty(exports,"createEnhancedPIIGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.k}});Object.defineProperty(exports,"createFactPIIGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.i}});Object.defineProperty(exports,"createInMemoryStorage",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.w}});Object.defineProperty(exports,"createLengthGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.g}});Object.defineProperty(exports,"createModerationGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.b}});Object.defineProperty(exports,"createOutputPIIGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.l}});Object.defineProperty(exports,"createOutputSchemaGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.e}});Object.defineProperty(exports,"createOutputTypeGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.f}});Object.defineProperty(exports,"createPIIGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.a}});Object.defineProperty(exports,"createPromptInjectionGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.s}});Object.defineProperty(exports,"createRateLimitGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.c}});Object.defineProperty(exports,"createSemanticCache",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.x}});Object.defineProperty(exports,"createSemanticCacheGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.y}});Object.defineProperty(exports,"createTestEmbedder",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.z}});Object.defineProperty(exports,"createToolGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.d}});Object.defineProperty(exports,"createUntrustedContentGuardrail",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.u}});Object.defineProperty(exports,"createVPTreeIndex",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.C}});Object.defineProperty(exports,"detectAndRedactPII",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.n}});Object.defineProperty(exports,"detectPII",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.m}});Object.defineProperty(exports,"detectPromptInjection",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.q}});Object.defineProperty(exports,"markUntrustedContent",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.t}});Object.defineProperty(exports,"redactPII",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.j}});Object.defineProperty(exports,"sanitizeInjection",{enumerable:true,get:function(){return chunkZCHBMZJZ_cjs.r}});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 chunkC6MQ4WL6_cjs.b}});Object.defineProperty(exports,"createMCPAdapter",{enumerable:true,get:function(){return chunkC6MQ4WL6_cjs.a}});Object.defineProperty(exports,"mcpCallTool",{enumerable:true,get:function(){return chunkC6MQ4WL6_cjs.c}});Object.defineProperty(exports,"mcpGetPrompt",{enumerable:true,get:function(){return chunkC6MQ4WL6_cjs.e}});Object.defineProperty(exports,"mcpReadResource",{enumerable:true,get:function(){return chunkC6MQ4WL6_cjs.d}});Object.defineProperty(exports,"mcpSyncResources",{enumerable:true,get:function(){return chunkC6MQ4WL6_cjs.f}});Object.defineProperty(exports,"createAgentOrchestrator",{enumerable:true,get:function(){return chunk2C3R77ZW_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 chunkXGHNOSXT_cjs.c}});Object.defineProperty(exports,"createDelegator",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.e}});Object.defineProperty(exports,"createMessageBus",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.b}});Object.defineProperty(exports,"createPubSub",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.f}});Object.defineProperty(exports,"createResponder",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.d}});Object.defineProperty(exports,"explainGoal",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.j}});Object.defineProperty(exports,"getDependencyGraph",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.g}});Object.defineProperty(exports,"patternToMermaid",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.a}});Object.defineProperty(exports,"planGoal",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.i}});Object.defineProperty(exports,"validateGoal",{enumerable:true,get:function(){return chunkXGHNOSXT_cjs.h}});Object.defineProperty(exports,"InMemoryCheckpointStore",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.y}});Object.defineProperty(exports,"MAX_BREAKPOINT_HISTORY",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.s}});Object.defineProperty(exports,"ReflectionExhaustedError",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.K}});Object.defineProperty(exports,"Semaphore",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.N}});Object.defineProperty(exports,"adaptOutputGuardrail",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.E}});Object.defineProperty(exports,"aggregateTokens",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ia}});Object.defineProperty(exports,"allReadyStrategy",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs._}});Object.defineProperty(exports,"capabilityRoute",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.la}});Object.defineProperty(exports,"collectOutputs",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ha}});Object.defineProperty(exports,"collectTokens",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.F}});Object.defineProperty(exports,"combineStreamingGuardrails",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.D}});Object.defineProperty(exports,"composePatterns",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ja}});Object.defineProperty(exports,"concatResults",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.fa}});Object.defineProperty(exports,"costEfficientStrategy",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.aa}});Object.defineProperty(exports,"createBreakpointId",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.t}});Object.defineProperty(exports,"createCheckpointId",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.w}});Object.defineProperty(exports,"createInitialBreakpointState",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.v}});Object.defineProperty(exports,"createLengthStreamingGuardrail",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.B}});Object.defineProperty(exports,"createMultiAgentOrchestrator",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ra}});Object.defineProperty(exports,"createPatternStreamingGuardrail",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.C}});Object.defineProperty(exports,"createStreamingRunner",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.z}});Object.defineProperty(exports,"createToxicityStreamingGuardrail",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.A}});Object.defineProperty(exports,"dag",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.W}});Object.defineProperty(exports,"debate",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.na}});Object.defineProperty(exports,"derivedConstraint",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.pa}});Object.defineProperty(exports,"diffCheckpoints",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.Q}});Object.defineProperty(exports,"filterStream",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.H}});Object.defineProperty(exports,"findAgentsByCapability",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ka}});Object.defineProperty(exports,"forkFromCheckpoint",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.R}});Object.defineProperty(exports,"formatSystemMeta",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.a}});Object.defineProperty(exports,"getCheckpointProgress",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.P}});Object.defineProperty(exports,"getPatternStep",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.O}});Object.defineProperty(exports,"goal",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.Z}});Object.defineProperty(exports,"highestImpactStrategy",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.$}});Object.defineProperty(exports,"mapStream",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.I}});Object.defineProperty(exports,"matchBreakpoint",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.u}});Object.defineProperty(exports,"mergeTaggedStreams",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.J}});Object.defineProperty(exports,"parallel",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.T}});Object.defineProperty(exports,"patternFromJSON",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ca}});Object.defineProperty(exports,"patternToJSON",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ba}});Object.defineProperty(exports,"pickBestResult",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ga}});Object.defineProperty(exports,"race",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.Y}});Object.defineProperty(exports,"reflect",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.X}});Object.defineProperty(exports,"runAgentRequirement",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ea}});Object.defineProperty(exports,"runDebate",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.oa}});Object.defineProperty(exports,"selectAgent",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.da}});Object.defineProperty(exports,"sequential",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.U}});Object.defineProperty(exports,"spawnOnCondition",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.ma}});Object.defineProperty(exports,"spawnPool",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.qa}});Object.defineProperty(exports,"supervisor",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.V}});Object.defineProperty(exports,"tapStream",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.G}});Object.defineProperty(exports,"toAIContext",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.b}});Object.defineProperty(exports,"validateCheckpoint",{enumerable:true,get:function(){return chunk7EJN6TYX_cjs.x}});Object.defineProperty(exports,"withReflection",{enumerable:true,get:function(){return chunk7EJN6TYX_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 chunkMDXDPECP_cjs.a}});Object.defineProperty(exports,"predicateFromIntent",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.b}});Object.defineProperty(exports,"predicateFromIntentRaw",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.c}});Object.defineProperty(exports,"predicateFromIntentWithProvenance",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.g}});Object.defineProperty(exports,"predicateToolSpec",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.f}});Object.defineProperty(exports,"predicateToolSpecAnthropic",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.e}});Object.defineProperty(exports,"predicateToolSpecOpenAI",{enumerable:true,get:function(){return chunkMDXDPECP_cjs.d}});Object.defineProperty(exports,"StructuredOutputError",{enumerable:true,get:function(){return chunkWCQK3JOR_cjs.c}});Object.defineProperty(exports,"extractJsonFromOutput",{enumerable:true,get:function(){return chunkWCQK3JOR_cjs.a}});Object.defineProperty(exports,"withStructuredOutput",{enumerable:true,get:function(){return chunkWCQK3JOR_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=N;exports.OtelStatusCode=I;exports.RetryExhaustedError=_;exports.attachSourcesToOtel=Fn;exports.byAgentName=Dn;exports.byInputLength=Pn;exports.byPattern=On;exports.createAgentAuditHandlers=an;exports.createAgentMemory=Kr;exports.createAuditTrail=on;exports.createBatchQueue=jn;exports.createBidirectionalStream=gn;exports.createCompliance=pn;exports.createConstraintRouter=Gn;exports.createHybridStrategy=Vr;exports.createInMemoryComplianceStorage=dn;exports.createJSONFileStore=Cn;exports.createKeyPointsSummarizer=Jr;exports.createLLMSummarizer=qr;exports.createOtelPlugin=_n;exports.createRAGEnricher=Sn;exports.createSSETransport=Rn;exports.createSlidingWindowStrategy=X;exports.createStreamChannel=K;exports.createTokenBasedStrategy=Y;exports.createTruncationSummarizer=Wr;exports.mergeStreams=fn;exports.parseHttpStatus=W;exports.parseRetryAfter=oe;exports.pipe=Hr;exports.pipeThrough=mn;exports.withBudget=Mn;exports.withFallback=xn;exports.withModelSelection=Bn;exports.withRetry=kn;//# sourceMappingURL=index.cjs.map
|
|
41
41
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {v,m,j as j$1}from'./chunk-
|
|
1
|
+
import {v,m,j as j$1}from'./chunk-PENISFE5.js';export{o as DEFAULT_INJECTION_PATTERNS,p as STRICT_INJECTION_PATTERNS,A as createBatchedEmbedder,B as createBruteForceIndex,h as createContentFilterGuardrail,k as createEnhancedPIIGuardrail,i as createFactPIIGuardrail,w as createInMemoryStorage,g as createLengthGuardrail,b as createModerationGuardrail,l as createOutputPIIGuardrail,e as createOutputSchemaGuardrail,f as createOutputTypeGuardrail,a as createPIIGuardrail,s as createPromptInjectionGuardrail,c as createRateLimitGuardrail,x as createSemanticCache,y as createSemanticCacheGuardrail,z as createTestEmbedder,d as createToolGuardrail,u as createUntrustedContentGuardrail,C as createVPTreeIndex,n as detectAndRedactPII,m as detectPII,q as detectPromptInjection,t as markUntrustedContent,j as redactPII,r as sanitizeInjection}from'./chunk-PENISFE5.js';export{b as connectDevTools,a as createDevToolsServer,c as createWsTransport}from'./chunk-5JQ2A3JK.js';export{k as createEvalSuite,l as evalAssert,j as evalCoherence,a as evalCost,h as evalFaithfulness,f as evalJudge,b as evalLatency,g as evalMatch,c as evalOutputLength,i as evalRelevance,d as evalSafety,e as evalStructure}from'./chunk-J2Q5KKPN.js';export{b as convertToolsForLLM,a as createMCPAdapter,c as mcpCallTool,e as mcpGetPrompt,d as mcpReadResource,f as mcpSyncResources}from'./chunk-V2FCPNPP.js';export{a as createAgentOrchestrator}from'./chunk-ARYO7BLK.js';export{f as createRunner,c as estimateCost,b as hasPendingApprovals,a as isAgentRunning,d as validateBaseURL}from'./chunk-ZFLHWJ56.js';export{c as createAgentNetwork,e as createDelegator,b as createMessageBus,f as createPubSub,d as createResponder,j as explainGoal,g as getDependencyGraph,a as patternToMermaid,i as planGoal,h as validateGoal}from'./chunk-RHJAMXLS.js';export{y as InMemoryCheckpointStore,s as MAX_BREAKPOINT_HISTORY,K as ReflectionExhaustedError,N as Semaphore,E as adaptOutputGuardrail,ia as aggregateTokens,_ as allReadyStrategy,la as capabilityRoute,ha as collectOutputs,F as collectTokens,D as combineStreamingGuardrails,ja as composePatterns,fa as concatResults,aa as costEfficientStrategy,t as createBreakpointId,w as createCheckpointId,v as createInitialBreakpointState,B as createLengthStreamingGuardrail,ra as createMultiAgentOrchestrator,C as createPatternStreamingGuardrail,z as createStreamingRunner,A as createToxicityStreamingGuardrail,W as dag,na as debate,pa as derivedConstraint,Q as diffCheckpoints,H as filterStream,ka as findAgentsByCapability,R as forkFromCheckpoint,a as formatSystemMeta,P as getCheckpointProgress,O as getPatternStep,Z as goal,$ as highestImpactStrategy,I as mapStream,u as matchBreakpoint,J as mergeTaggedStreams,T as parallel,ca as patternFromJSON,ba as patternToJSON,ga as pickBestResult,Y as race,X as reflect,ea as runAgentRequirement,oa as runDebate,da as selectAgent,U as sequential,ma as spawnOnCondition,qa as spawnPool,V as supervisor,G as tapStream,b as toAIContext,x as validateCheckpoint,L as withReflection}from'./chunk-G7CRWJT7.js';export{a as GuardrailError,b as isGuardrailError}from'./chunk-UR5BMWEN.js';export{a as createDebugTimeline,b as createDebugTimelinePlugin,c as createHealthMonitor}from'./chunk-FBT73WFY.js';export{a as PredicateFromIntentError,b as predicateFromIntent,c as predicateFromIntentRaw,g as predicateFromIntentWithProvenance,f as predicateToolSpec,e as predicateToolSpecAnthropic,d as predicateToolSpecOpenAI}from'./chunk-GTB6HTZV.js';export{c as StructuredOutputError,a as extractJsonFromOutput,b as withStructuredOutput}from'./chunk-HRR45JZX.js';export{CircuitBreakerOpenError,createCircuitBreaker,createOTLPExporter}from'@directive-run/core/plugins';import G from'path';function Hr(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 o=e.slice(-c),u=e.slice(0,-c),a=Math.max(0,s-c),y=u.slice(-a),p=u.slice(0,-a||void 0),h=[...y,...o];return {keep:h,toSummarize:p.length>0?p:[],estimatedTokens:V(h)}}}function Y(r={}){return (e,t={})=>{let n={...r,...t},s=n.maxTokens??4e3,c=n.preserveRecentCount??5,o=n.countSystemMessages??true,u=e.slice(-c),a=e.slice(0,-c),y=u.reduce((l,g)=>!o&&g.role==="system"?l:l+j(g),0),p=[],h=[],m=y;for(let l=a.length-1;l>=0;l--){let g=a[l],C=!o&&g.role==="system"?0:j(g);if(m+C<=s)p.unshift(g),m+=C;else {h.push(...a.slice(0,l+1));break}}return {keep:[...p,...u],toSummarize:h,estimatedTokens:m}}}function Vr(r={}){let e=X(r),t=Y(r);return (n,s={})=>{let c={...r,...s},o=e(n,c),u=t(n,c);return o.keep.length<=u.keep.length?o:u}}function Kr(r){let{strategy:e,summarizer:t,strategyConfig:n={},autoManage:s=false,onMemoryManaged:c,onManageError:o,maxContextTokens:u}=r,a={messages:[],summaries:[],totalMessagesProcessed:0,estimatedTokens:0},y=false;async function p(){if(y)return {messagesBefore:a.messages.length,messagesAfter:a.messages.length,messagesSummarized:0,estimatedTokensBefore:a.estimatedTokens,estimatedTokensAfter:a.estimatedTokens};y=true;try{let m=a.messages.length,l=a.estimatedTokens,g=e(a.messages,n);if(g.toSummarize.length===0)return {messagesBefore:m,messagesAfter:m,messagesSummarized:0,estimatedTokensBefore:l,estimatedTokensAfter:g.estimatedTokens};let C;t&&g.toSummarize.length>0&&(C=await t(g.toSummarize),a.summaries.push({content:C,messagesCount:g.toSummarize.length,createdAt:Date.now()})),a.messages=g.keep,a.estimatedTokens=g.estimatedTokens;let E={messagesBefore:m,messagesAfter:a.messages.length,messagesSummarized:g.toSummarize.length,summary:C,estimatedTokensBefore:l,estimatedTokensAfter:g.estimatedTokens};return c?.(E),E}finally{y=false;}}function h(){if(y)return;e(a.messages,n).toSummarize.length>0&&p().catch(l=>{let g=l instanceof Error?l:new Error(String(l));o?o(g):console.error("[Directive Memory] Auto-manage error:",g);});}return {getState(){return {...a,messages:[...a.messages],summaries:a.summaries.map(m=>({...m}))}},addMessage(m){a.messages.push(m),a.totalMessagesProcessed++,a.estimatedTokens+=j(m),s&&h();},addMessages(m){for(let l of m)a.messages.push(l),a.totalMessagesProcessed++,a.estimatedTokens+=j(l);s&&h();},getContextMessages(){let m=[];if(a.summaries.length>0){let l=a.summaries.map(g=>g.content).join(`
|
|
2
2
|
|
|
3
3
|
---
|
|
4
4
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@directive-run/ai",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.1",
|
|
4
4
|
"description": "AI guardrails and orchestration for Directive. Prompt injection, PII detection, cost tracking, multi-agent patterns.",
|
|
5
5
|
"license": "(MIT OR Apache-2.0)",
|
|
6
6
|
"author": "Jason Comes",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"@types/node": "^25.2.0",
|
|
116
116
|
"tsup": "^8.3.5",
|
|
117
117
|
"typescript": "^5.7.2",
|
|
118
|
-
"@directive-run/core": "1.
|
|
118
|
+
"@directive-run/core": "1.20.1"
|
|
119
119
|
},
|
|
120
120
|
"scripts": {
|
|
121
121
|
"build": "tsup",
|
package/dist/chunk-MASTXC6X.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import {c}from'./chunk-UR5BMWEN.js';import {safeStringify}from'@directive-run/core/internals';function ce(a){let{patterns:i=[/\b\d{3}-\d{2}-\d{4}\b/g,/\b\d{16}\b/g,/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi],redact:r=false,redactReplacement:t="[REDACTED]"}=a;return e=>{let n=e.input,s=false;for(let c of i)c.lastIndex=0,c.test(n)&&(s=true,r&&(c.lastIndex=0,n=n.replace(c,t)));return s&&!r?{passed:false,reason:"Input contains PII"}:{passed:true,transformed:r&&s?n:void 0}}}function de(a){let{checkFn:i,message:r="Content flagged by moderation"}=a;return async t=>{let e="output"in t?typeof t.output=="string"?t.output:JSON.stringify(t.output):t.input,n=await i(e);return {passed:!n,reason:n?r:void 0}}}function le(a){let{maxTokensPerMinute:i=1e5,maxRequestsPerMinute:r=60}=a,t=Math.max(r,1e3),e=[],n=[],s=6e4;function c$1(d,m){let u=0,h=d.length;for(;u<h;){let g=u+h>>>1;(d[g]??0)<m?u=g+1:h=g;}return u}let o=(d,m)=>{let u=Date.now(),h=u-s,g=c$1(e,h);g>0&&(e=e.slice(g));let v=c$1(n,h);v>0&&(n=n.slice(v));let x=m.facts[c]?.tokenUsage??0,E=e.length,l=n.length;return E+x>i?{passed:false,reason:"Token rate limit exceeded"}:l>=r?{passed:false,reason:"Request rate limit exceeded"}:(n.length<t&&n.push(u),e.length<t&&e.push(u),{passed:true})};return o.reset=()=>{e=[],n=[];},o}function ue(a){let{allowlist:i,denylist:r,caseSensitive:t=false}=a,e=i?.map(s=>t?s:s.toLowerCase()),n=r?.map(s=>t?s:s.toLowerCase());return s=>{let c=t?s.toolCall.name:s.toolCall.name.toLowerCase();return e&&!e.includes(c)?{passed:false,reason:`Tool "${s.toolCall.name}" not in allowlist`}:n?.includes(c)?{passed:false,reason:`Tool "${s.toolCall.name}" is blocked`}:{passed:true}}}function me(a){let{validate:i,errorPrefix:r="Output schema validation failed"}=a;return t=>{let e=i(t.output);return typeof e=="boolean"?{passed:e,reason:e?void 0:r}:e.valid?{passed:true}:{passed:false,reason:e.errors?.length?`${r}: ${e.errors.join("; ")}`:r}}}function fe(a){let{type:i,requiredFields:r=[],minLength:t,maxLength:e,minStringLength:n,maxStringLength:s}=a;return c=>{let o=c.output;switch(i){case "string":return typeof o!="string"?{passed:false,reason:`Expected string, got ${typeof o}`}:n!==void 0&&o.length<n?{passed:false,reason:`String too short: ${o.length} < ${n}`}:s!==void 0&&o.length>s?{passed:false,reason:`String too long: ${o.length} > ${s}`}:{passed:true};case "number":return typeof o!="number"||Number.isNaN(o)?{passed:false,reason:`Expected number, got ${typeof o}`}:{passed:true};case "boolean":return typeof o!="boolean"?{passed:false,reason:`Expected boolean, got ${typeof o}`}:{passed:true};case "object":if(typeof o!="object"||o===null||Array.isArray(o))return {passed:false,reason:`Expected object, got ${Array.isArray(o)?"array":typeof o}`};for(let d of r)if(!(d in o))return {passed:false,reason:`Missing required field: ${d}`};return {passed:true};case "array":return Array.isArray(o)?t!==void 0&&o.length<t?{passed:false,reason:`Array too short: ${o.length} < ${t}`}:e!==void 0&&o.length>e?{passed:false,reason:`Array too long: ${o.length} > ${e}`}:{passed:true}:{passed:false,reason:`Expected array, got ${typeof o}`};default:return {passed:false,reason:`Unknown type: ${i}`}}}}function pe(a){let{maxCharacters:i,maxTokens:r,estimateTokens:t=e=>Math.ceil(e.length/4)}=a;return e=>{let n=safeStringify(e.output);if(i!==void 0&&n.length>i)return {passed:false,reason:`Output too long: ${n.length} characters (max: ${i})`};if(r!==void 0){let s=t(n);if(s>r)return {passed:false,reason:`Output too long: ~${s} tokens (max: ${r})`}}return {passed:true}}}function ge(a){let{blockedPatterns:i,caseSensitive:r=false}=a;i.length===0&&console.warn("[Directive] createContentFilterGuardrail: blockedPatterns is empty \u2014 no content will be filtered");let t=i.map(e=>{if(e instanceof RegExp)return e;let n=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(n,r?"g":"gi")});return e=>{let n=safeStringify(e.output);for(let s of t)if(s.lastIndex=0,s.test(n))return {passed:false,reason:`Output contains blocked content matching: ${s.source}`};return {passed:true}}}function H(a){let i=a.replace(/[\s-]/g,"");if(i.length<13||i.length>19||!/^\d+$/.test(i))return false;let r=0,t=false;for(let e=i.length-1;e>=0;e--){let n=i[e];if(!n)continue;let s=Number.parseInt(n,10);t&&(s*=2,s>9&&(s-=9)),r+=s,t=!t;}return r%10===0}var V=[{type:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g,redactionToken:"[SSN]"},{type:"credit_card",regex:/\b((?:\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4})|\d{13,19})\b/g,validate:H,redactionToken:"[CREDIT_CARD]"},{type:"email",regex:/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi,redactionToken:"[EMAIL]"}];function U(a,i){let r=[];for(let t of V){if(!i.has(t.type))continue;t.regex.lastIndex=0;let e;for(;(e=t.regex.exec(a))!==null;)t.validate&&!t.validate(e[0])||r.push({type:t.type,value:e[0],start:e.index,end:e.index+e[0].length});}return r}function k(a,i){if(i.length===0)return a;let r=[...i].sort((n,s)=>s.start-n.start),t={ssn:"[SSN]",credit_card:"[CREDIT_CARD]",email:"[EMAIL]"},e=a;for(let n of r)e=e.slice(0,n.start)+t[n.type]+e.slice(n.end);return e}function he(a={}){let{mode:i="redact",types:r=["ssn","credit_card","email"],includeKeys:t=[],excludeKeys:e=[],onBlocked:n,customDetector:s,walkDepth:c=1}=a,o=new Set(r),d=new Set(t),m=new Set(e),u=Number.isFinite(c)?Math.max(1,Math.min(5,Math.floor(c))):1,h=1e4,g=false,v=null;function b(l){if(g)return;g=true,v=l;let f=l.meta?.byTag?.("pii");if(f)for(let p of f)p.type==="fact"&&p.id&&!m.has(p.id)&&d.add(p.id);}function I(l){let f=[];if(o.size>0)for(let p of U(l,o))f.push(p);if(s)for(let p of s(l))f.push(p);return f}function x(l,f=u){if(typeof l=="string"){let y=I(l);return y.length===0?{matched:false}:{matched:true,redacted:k(l,y),detected:y}}if(f<=0)return {matched:false};if(l===null||typeof l!="object")return {matched:false};let p=l;if(Array.isArray(l)){let y=l.length,P=Number.isFinite(y)&&y>0?Math.min(Math.floor(y),h):0;y>h&&console.warn(`[Directive] fact-pii walker truncated top-level array at ${h} elements before clone \u2014 pass a customDetector for larger payloads`);let S=new Array(P);for(let C=0;C<P;C++)S[C]=l[C];p=S;}let w;try{w=structuredClone(p);}catch(y){return console.warn("[Directive] fact-pii walker: value is not structured-cloneable \u2014 leaving it as-is and skipping inspection. Wire a customDetector for shapes containing functions, DOM nodes, cycles, or WeakMaps.",y instanceof Error?y.message:String(y)),{matched:false}}return E(w,f)}function E(l,f){if(typeof l=="string"){let p=I(l);return p.length===0?{matched:false}:{matched:true,redacted:k(l,p),detected:p}}if(f<=0)return {matched:false};if(Array.isArray(l)){l.length>h&&console.warn(`[Directive] fact-pii walker truncated array at ${h} elements \u2014 pass a customDetector for larger payloads`);let p=Math.min(l.length,h),w=null,y=[];for(let P=0;P<p;P++){let S=E(l[P],f-1);if(S.matched){w===null&&(w=[...l]),w[P]=S.redacted;for(let C of S.detected)y.push(C);}}return w===null?{matched:false}:{matched:true,redacted:w,detected:y}}if(l&&typeof l=="object"){if(l instanceof Map||l instanceof Set||l instanceof Date||l instanceof RegExp||l instanceof Error||ArrayBuffer.isView(l)||l instanceof ArrayBuffer||typeof Blob<"u"&&l instanceof Blob){if(l instanceof Error){let y=[];if(typeof l.message=="string")for(let P of I(l.message))y.push(P);if(typeof l.cause=="string")for(let P of I(l.cause))y.push(P);else if(l.cause instanceof Error&&f>1){let P=E(l.cause,f-1);if(P.matched)for(let S of P.detected)y.push(S);}if(typeof AggregateError<"u"&&l instanceof AggregateError&&Array.isArray(l.errors)&&f>1){for(let P of l.errors)if(typeof P=="string")for(let S of I(P))y.push(S);else if(P instanceof Error){let S=E(P,f-1);if(S.matched)for(let C of S.detected)y.push(C);}}if(y.length>0)return {matched:true,redacted:l,detected:y}}return {matched:false}}let p=null,w=[];for(let[y,P]of Object.entries(l))if(typeof P=="string"){let S=I(P);if(S.length===0)continue;p===null&&(p={...l}),p[y]=k(P,S);for(let C of S)w.push(C);}else if(f>1&&P&&typeof P=="object"){let S=E(P,f-1);if(!S.matched)continue;p===null&&(p={...l}),p[y]=S.redacted;for(let C of S.detected)w.push(C);}return p===null?{matched:false}:{matched:true,redacted:p,detected:w}}return {matched:false}}return {name:"fact-pii-guardrail",onInit(l){b(l);},onFactSet(l,f,p){if(!g||!d.has(l)||f===p&&(typeof f!="object"||f===null))return;let w=x(f);if(!w.matched||(n?.(l,w.detected,i),i==="alert")||w.redacted===f)return;let y=v?.facts;if(y?.$store?.set)try{y.$store.set(l,w.redacted);}catch{}},onFactsBatch(l){if(g)for(let f of l){if(f.type!=="set"||!d.has(f.key))continue;let p=f.prev;if(f.value===p&&(typeof f.value!="object"||f.value===null))continue;let w=x(f.value);if(!w.matched||(n?.(f.key,w.detected,i),i==="alert")||w.redacted===f.value)continue;try{f.value=w.redacted;}catch{}let y=v?.facts;if(y?.$store?.set)try{y.$store.set(f.key,w.redacted);}catch{}}}}}var Z=[{type:"ssn",pattern:/\b(\d{3}[-\s]?\d{2}[-\s]?\d{4})\b/g,validate:a=>{let i=a.replace(/[-\s]/g,"");return !(i.startsWith("000")||i.startsWith("666")||i.startsWith("9")||i.slice(3,5)==="00"||i.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:a=>{let i=a.replace(/[-\s]/g,"");if(i.length<13||i.length>19)return false;let r=0,t=false;for(let e=i.length-1;e>=0;e--){let n=i[e];if(!n)continue;let s=Number.parseInt(n,10);t&&(s*=2,s>9&&(s-=9)),r+=s,t=!t;}return r%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:a=>{let i=a.replace(/\D/g,"");return i.length>=10&&i.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:a=>{let r=a.split(".").map(n=>Number.parseInt(n,10));if(r.some(n=>Number.isNaN(n)||n<0||n>255))return false;let[t,e]=r;return !(t===10||t===172&&e>=16&&e<=31||t===192&&e===168||t===127||t===169&&e===254||a==="0.0.0.0"||a==="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 q(a){let i=[],r="street|st|avenue|ave|road|rd|drive|dr|lane|ln|court|ct|way|boulevard|blvd|circle|cir|place|pl",t=new RegExp(`\\b(\\d{1,5}\\s+(?:\\w+\\s+){1,4}(?:${r})\\b[^\\n]{0,50}\\b[A-Z]{2}\\s+\\d{5}(?:-\\d{4})?)\\b`,"gi"),e;for(;(e=t.exec(a))!==null;)i.push({type:"address",value:e[0],position:{start:e.index,end:e.index+e[0].length},confidence:.7});return i}var M=["mr","mrs","ms","miss","dr","prof","sir","madam","name is","called","known as","signed by","from","dear","hi","hello","contact","recipient"];function W(a){let i=[],r=M.join("|"),t=new RegExp(`\\b(${r})[.,:]?\\s+([A-Z][a-z]{1,20}(?:\\s[A-Z][a-z]{1,20}){0,2})\\b`,"gi"),e;for(;(e=t.exec(a))!==null;){let n=e[2],s=e[1];n&&(n.split(/\s+/).length>=2||s&&M.some(c=>s.toLowerCase().includes(c)))&&i.push({type:"name",value:n,position:{start:e.index,end:e.index+e[0].length},confidence:.6,context:e[0]});}return i}var $=1e5;function K(a,i){let r=[],t=new RegExp(a.pattern.source,a.pattern.flags),e=a.valueGroup??1,n;for(;(n=t.exec(i))!==null;){let s=n[e]??n[0],c=n.index,o=n.index+n[0].length,d=i.slice(Math.max(0,c-20),o+20);a.validate&&!a.validate(s,d)||r.push({type:a.type,value:s,position:{start:c,end:o},confidence:a.confidence,context:d});}return r}var D={name:"regex",async detect(a,i){if(a.length>$)throw new Error(`[Directive] Input exceeds maximum length of ${$} characters for PII detection. Truncate input or process in chunks.`);let r=[],t=new Set(i);for(let e of Z)t.has(e.type)&&r.push(...K(e,a));return t.has("address")&&r.push(...q(a)),t.has("name")&&r.push(...W(a)),r}},Y=new Set(["ssn","credit_card","date_of_birth","medical_id","national_id","passport","driver_license","bank_account"]);function J(a,i){let{start:r,end:t}=a.position;return Number.isInteger(r)&&Number.isInteger(t)&&r>=0&&r<t&&t<=i}function X(a,i){switch(i){case "placeholder":return "[REDACTED]";case "typed":return Y.has(a.type)?"[REDACTED]":`[${a.type.toUpperCase()}]`;case "masked":{if(a.type!=="credit_card")return "****";let r=a.value.replace(/\D/g,"");return `****${r.length>4?r.slice(-4):""}`}case "hashed":return `[HASH:${Q(a.value)}]`}}function F(a,i,r="typed"){let e=[...i.filter(o=>J(o,a.length))].sort((o,d)=>{if(d.confidence!==o.confidence)return d.confidence-o.confidence;let m=o.position.end-o.position.start,u=d.position.end-d.position.start;return u!==m?u-m:o.position.start-d.position.start}),n=[];for(let o of e)n.some(m=>o.position.start<m.position.end&&m.position.start<o.position.end)||n.push(o);let s=n.sort((o,d)=>d.position.start-o.position.start),c=a;for(let o of s){let d=X(o,r);c=c.slice(0,o.position.start)+d+c.slice(o.position.end);}return c}function Q(a){let t=2166136261;for(let e=0;e<a.length;e++)t^=a.charCodeAt(e),t=Math.imul(t,16777619);return (t>>>0).toString(16).padStart(8,"0")}var j=["ssn","credit_card","email","phone","date_of_birth","bank_account"];function ee(a={}){let{types:i=j,detector:r="regex",redact:t=false,redactionStyle:e="typed",minConfidence:n=.7,onDetected:s,allowlist:c=[],minItemsToBlock:o=1,detectorTimeout:d=5e3}=a,m=r==="regex"?D:r,u=new Set(c.map(g=>g.toLowerCase().trim()));async function h(g,v){if(m===D)return m.detect(g,v);let b,I=m.detect(g,v),x=new Promise((E,l)=>{b=setTimeout(()=>l(new Error(`[Directive] PII detector '${m.name}' timed out after ${d}ms`)),d);});I.catch(()=>{}),x.catch(()=>{});try{return await Promise.race([I,x])}finally{clearTimeout(b);}}return async g=>{let b=(await h(g.input,i)).filter(I=>!(I.confidence<n||u.has(I.value.toLowerCase().trim())));if(b.length>0&&s?.(b),b.length>=o){if(t)return {passed:true,transformed:F(g.input,b,e)};let I={};for(let E of b)I[E.type]=(I[E.type]||0)+1;return {passed:false,reason:`PII detected (${Object.entries(I).map(([E,l])=>`${E}: ${l}`).join(", ")})`}}return {passed:true}}}function Ie(a={}){let i=ee(a);return async(r,t)=>{let e=typeof r.output=="string"?r.output:JSON.stringify(r.output);return i({input:e,agentName:r.agentName},t)}}async function te(a,i={}){let{types:r=j,detector:t="regex",minConfidence:e=.7,timeout:n=5e3}=i,s=t==="regex"?D:t,c;if(s===D)c=await s.detect(a,r);else {let m,u=s.detect(a,r),h=new Promise((g,v)=>{m=setTimeout(()=>v(new Error(`[Directive] PII detector '${s.name}' timed out after ${n}ms`)),n);});u.catch(()=>{}),h.catch(()=>{});try{c=await Promise.race([u,h]);}finally{clearTimeout(m);}}let o=c.filter(m=>m.confidence>=e),d={};for(let m of o)d[m.type]=(d[m.type]||0)+1;return {detected:o.length>0,items:o,typeCounts:d}}async function Ee(a,i={}){let r=await te(a,i);return r.detected?{...r,redactedText:F(a,r.items,i.style??"typed")}:{...r}}var A=[{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"}],L=[...A,{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"}],O=1e5;function z(a,i=A){if(a.length>O)throw new Error(`[Directive] Input exceeds maximum length of ${O} characters for injection detection. Truncate input or process in chunks.`);let r=[];for(let{pattern:s,name:c,severity:o,category:d}of i){let u=new RegExp(s.source,s.flags).exec(a);u&&r.push({name:c,category:d,severity:o,match:u[0],position:u.index});}let t={low:10,medium:25,high:50,critical:100},e=r.reduce((s,c)=>s+t[c.severity],0),n=Math.min(100,e);return {detected:r.length>0,patterns:r,riskScore:n}}function ne(a,i=A){let r=a.replace(/\u200b|\u200c|\u200d|\u2060|\ufeff/g,""),t=i.map(d=>`(${d.pattern.source})`);if(t.length===0)return r;let e=i.some(d=>d.pattern.flags.includes("g")),n=i.some(d=>d.pattern.flags.includes("i")),s=i.some(d=>d.pattern.flags.includes("m")),c=`${e?"g":""}${n?"i":""}${s?"m":""}`,o=new RegExp(t.join("|"),c||"gi");return r=r.replace(o,"[REDACTED]"),r}function re(a={}){let{additionalPatterns:i=[],replacePatterns:r,strictMode:t=false,blockThreshold:e=50,sanitize:n=false,onBlocked:s,ignoreCategories:c=[]}=a,o;if(r?o=r:o=t?[...L]:[...A],o=[...o,...i],c.length>0){let d=new Set(c);o=o.filter(m=>!d.has(m.category));}return d=>{let m=z(d.input,o);if(m.detected&&m.riskScore>=e){if(s?.(d.input,m),n)return {passed:true,transformed:ne(d.input,o)};let u=m.patterns.sort((h,g)=>{let v={critical:0,high:1,medium:2,low:3};return v[h.severity]-v[g.severity]}).slice(0,3).map(h=>h.name).join(", ");return {passed:false,reason:`Prompt injection detected (risk: ${m.riskScore}%, patterns: ${u})`}}return {passed:true}}}function xe(a,i){return `[UNTRUSTED_CONTENT source="${i}"]
|
|
2
|
-
${a}
|
|
3
|
-
[/UNTRUSTED_CONTENT]`}function we(a){let{baseGuardrail:i=re({strictMode:true,blockThreshold:25}),additionalPatterns:r=[]}=a,t=/\[UNTRUSTED_CONTENT source="([^"]+)"\]([\s\S]*?)\[\/UNTRUSTED_CONTENT\]/g;return async(e,n)=>{let s=await i(e,n);if(!s.passed)return s;let c=e.input.matchAll(t);for(let o of c){let[,d,m]=o;if(!m)continue;let u=z(m,[...L,...r]);if(u.detected&&u.riskScore>=25)return {passed:false,reason:`Untrusted content from "${d}" contains potential injection (risk: ${u.riskScore}%)`}}return {passed:true}}}function T(a,i){if(a.length!==i.length)throw new Error(`Vector dimensions must match: ${a.length} vs ${i.length}`);let r=0,t=0,e=0;for(let n=0;n<a.length;n++){let s=a[n],c=i[n];r+=s*c,t+=s*s,e+=c*c;}return t=Math.sqrt(t),e=Math.sqrt(e),t===0||e===0?0:r/(t*e)}function ie(a,i,r,t){let e=null;for(let n of i){if(t&&n.agentName&&n.agentName!==t)continue;let s=T(a,n.queryEmbedding);s>=r&&(!e||s>e.similarity)&&(e={entry:n,similarity:s});}return e}function ae(){let a=new Map;function i(r){let t=a.get(r);return t||(t=new Map,a.set(r,t)),t}return {async getEntries(r){return Array.from(i(r).values())},async addEntry(r,t){i(r).set(t.id,t);},async updateEntry(r,t,e){let n=i(r),s=n.get(t);s&&n.set(t,{...s,...e});},async removeEntry(r,t){i(r).delete(t);},async clear(r){a.delete(r);}}}function Se(a){let{embedder:i,similarityThreshold:r=.9,maxCacheSize:t=1e3,ttlMs:e=36e5,namespace:n="default",storage:s=ae(),onHit:c,onMiss:o,onError:d,perAgent:m=false}=a,u={totalEntries:0,totalHits:0,totalMisses:0,hitRate:0,avgSimilarityOnHit:0,oldestEntry:null,newestEntry:null},h=0;function g(b){if(u.totalEntries=b.length,u.hitRate=u.totalHits+u.totalMisses>0?u.totalHits/(u.totalHits+u.totalMisses):0,u.avgSimilarityOnHit=u.totalHits>0?h/u.totalHits:0,b.length>0){let I=b.map(x=>x.createdAt);u.oldestEntry=Math.min(...I),u.newestEntry=Math.max(...I);}else u.oldestEntry=null,u.newestEntry=null;}async function v(){let b=await s.getEntries(n),I=Date.now();for(let E of b)I-E.createdAt>e&&await s.removeEntry(n,E.id);let x=await s.getEntries(n);if(x.length>t){let l=x.sort((f,p)=>f.accessedAt-p.accessedAt).slice(0,x.length-t);for(let f of l)await s.removeEntry(n,f.id);}}return {async lookup(b,I){let x=Date.now();try{let E=await i(b),l=await s.getEntries(n),f=ie(E,l,r,m?I:void 0);return f?(await s.updateEntry(n,f.entry.id,{accessedAt:Date.now(),accessCount:f.entry.accessCount+1}),u.totalHits++,h+=f.similarity,g(l),c?.(f.entry,f.similarity),{hit:!0,entry:f.entry,similarity:f.similarity,latencyMs:Date.now()-x}):(u.totalMisses++,g(l),o?.(b),{hit:!1,latencyMs:Date.now()-x})}catch(E){return u.totalMisses++,d?.(E instanceof Error?E:new Error(String(E))),{hit:false,latencyMs:Date.now()-x}}},async store(b,I,x,E={}){let l=await i(b),f={id:globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2,11)}`,query:b,queryEmbedding:l,response:I,metadata:E,createdAt:Date.now(),accessedAt:Date.now(),accessCount:0,agentName:m?x:void 0};await s.addEntry(n,f),await v();let p=await s.getEntries(n);g(p);},async invalidate(b){let I=await s.getEntries(n),x=0;for(let l of I)b(l)&&(await s.removeEntry(n,l.id),x++);let E=await s.getEntries(n);return g(E),x},async clear(){await s.clear(n),u={totalEntries:0,totalHits:0,totalMisses:0,hitRate:0,avgSimilarityOnHit:0,oldestEntry:null,newestEntry:null},h=0;},getStats(){return {...u}},async export(){return s.getEntries(n)},async import(b){for(let x of b)await s.addEntry(n,x);await v();let I=await s.getEntries(n);g(I);}}}function Ce(a){let{cache:i}=a;return async r=>{let t=await i.lookup(r.input,r.agentName);return t.hit&&t.entry?{passed:false,cacheHit:true,reason:`Cache hit (similarity: ${(t.similarity*100).toFixed(1)}%)`,cachedResponse:t.entry.response,similarity:t.similarity}:{passed:true,cacheHit:false}}}function Te(a=128){return async i=>{let r=new Array(a).fill(0);for(let e=0;e<i.length;e++){let n=i.charCodeAt(e);r[e%a]+=n/256;}let t=Math.sqrt(r.reduce((e,n)=>e+n*n,0));if(t>0)for(let e=0;e<a;e++)r[e]/=t;return r}}function Re(a){let{batchSize:i=20,embedBatch:r,maxWaitMs:t=50}=a;if(i<1||!Number.isFinite(i))throw new Error(`[Directive SemanticCache] batchSize must be >= 1, got ${i}`);let e=[],n=null,s=false;async function c(){if(e.length===0)return;let o=e;e=[],n&&(clearTimeout(n),n=null);try{let d=o.map(u=>u.text),m=await r(d);if(m.length!==o.length)throw new Error(`[Directive SemanticCache] embedBatch returned ${m.length} embeddings for ${o.length} texts. The embedBatch function must return exactly one embedding per input text.`);for(let u=0;u<o.length;u++)o[u].resolve(m[u]);}catch(d){let m=d instanceof Error?d:new Error(String(d));for(let u of o)u.reject(m);}}return {async embed(o){if(s)throw new Error("BatchedEmbedder has been destroyed");return new Promise((d,m)=>{e.push({text:o,resolve:d,reject:m}),e.length>=i?c():n||(n=setTimeout(c,t));})},async flush(){await c();},destroy(){s=true,n&&(clearTimeout(n),n=null);let o=e;e=[];let d=new Error("BatchedEmbedder destroyed");for(let m of o)m.reject(d);}}}function ke(){let a=new Map,i=null;function r(t){if(i===null)i=t.length;else if(t.length!==i)throw new Error(`[Directive ANNIndex] Dimension mismatch: expected ${i}, got ${t.length}`)}return {add(t,e){r(e),a.set(t,e);},remove(t){a.delete(t);},search(t,e,n=0){if(i!==null&&t.length!==i)throw new Error(`[Directive ANNIndex] Query dimension mismatch: expected ${i}, got ${t.length}`);let s=[];for(let[c,o]of a){let d=T(t,o);d>=n&&s.push({id:c,similarity:d});}return s.sort((c,o)=>o.similarity-c.similarity),s.slice(0,e)},rebuild(){},size(){return a.size},clear(){a.clear(),i=null;},needsRebuild(){return false}}}function B(a,i){return 1-T(a,i)}function N(a,i){if(a.length===0)return null;let r=Math.floor(i()*a.length),t=a[r],e=a.filter((m,u)=>u!==r);if(e.length===0)return {id:t.id,embedding:t.embedding,mu:0,left:null,right:null};let n=e.map(m=>({item:m,distance:B(t.embedding,m.embedding)}));n.sort((m,u)=>m.distance-u.distance);let s=Math.floor(n.length/2),c=n[s].distance,o=n.slice(0,s).map(m=>m.item),d=n.slice(s).map(m=>m.item);return {id:t.id,embedding:t.embedding,mu:c,left:N(o,i),right:N(d,i)}}function R(a,i,r,t,e,n){if(!a)return;let s=B(i,a.embedding),c=1-s;c>=t&&(e.push({id:a.id,similarity:c}),e.sort((o,d)=>d.similarity-o.similarity),e.length>r&&e.pop(),e.length===r&&(n.value=1-e[e.length-1].similarity)),s<a.mu?(R(a.left,i,r,t,e,n),s+n.value>=a.mu&&R(a.right,i,r,t,e,n)):(R(a.right,i,r,t,e,n),s-n.value<=a.mu&&R(a.left,i,r,t,e,n));}function Ne(a={}){let{random:i=Math.random}=a,r=new Map,t=null,e=false,n=null;function s(c){if(n===null)n=c.length;else if(c.length!==n)throw new Error(`[Directive ANNIndex] Dimension mismatch: expected ${n}, got ${c.length}`)}return {add(c,o){s(o),r.set(c,o),e=true;},remove(c){r.delete(c),e=true;},search(c,o,d=0){if(n!==null&&c.length!==n)throw new Error(`[Directive ANNIndex] Query dimension mismatch: expected ${n}, got ${c.length}`);if(e||!t){let h=[];for(let[g,v]of r){let b=T(c,v);b>=d&&h.push({id:g,similarity:b});}return h.sort((g,v)=>v.similarity-g.similarity),h.slice(0,o)}let m=[],u={value:Number.POSITIVE_INFINITY};return R(t,c,o,d,m,u),m},rebuild(){let c=Array.from(r.entries()).map(([o,d])=>({id:o,embedding:d}));t=N(c,i),e=false;},size(){return r.size},clear(){r.clear(),t=null,e=false,n=null;},needsRebuild(){return e}}}export{Re as A,ke as B,Ne as C,ce as a,de as b,le as c,ue as d,me as e,fe as f,pe as g,ge as h,he as i,F as j,ee as k,Ie as l,te as m,Ee as n,A as o,L as p,z as q,ne as r,re as s,xe as t,we as u,T as v,ae as w,Se as x,Ce as y,Te as z};//# sourceMappingURL=chunk-MASTXC6X.js.map
|
|
4
|
-
//# sourceMappingURL=chunk-MASTXC6X.js.map
|