@private.me/xbind 3.0.1 → 3.0.3
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/README.md +2419 -216
- package/README.md.backup +2121 -0
- package/dist-standalone/_deps/shared/cjs/errors.js +1 -1
- package/dist-standalone/_deps/shared/cjs/index.js +1 -1
- package/dist-standalone/_deps/shared/cjs/types.js +1 -1
- package/dist-standalone/_deps/shared/errors.js +1 -1
- package/dist-standalone/_deps/shared/index.js +1 -1
- package/dist-standalone/_deps/shared/types.js +1 -1
- package/dist-standalone/_deps/xchange/auto-accept.js +1 -1
- package/dist-standalone/_deps/xchange/cjs/auto-accept.js +1 -1
- package/dist-standalone/_deps/xchange/cjs/errors.js +1 -1
- package/dist-standalone/_deps/xchange/cjs/index.js +1 -1
- package/dist-standalone/_deps/xchange/cjs/invite-client.js +1 -1
- package/dist-standalone/_deps/xchange/cjs/lazy-init.js +1 -1
- package/dist-standalone/_deps/xchange/cjs/trust-integration.js +1 -1
- package/dist-standalone/_deps/xchange/cjs/xchange.js +1 -1
- package/dist-standalone/_deps/xchange/errors.js +1 -1
- package/dist-standalone/_deps/xchange/index.js +1 -1
- package/dist-standalone/_deps/xchange/invite-client.js +1 -1
- package/dist-standalone/_deps/xchange/lazy-init.js +1 -1
- package/dist-standalone/_deps/xchange/trust-integration.js +1 -1
- package/dist-standalone/_deps/xchange/xchange.js +1 -1
- package/dist-standalone/_deps/xregistry/cjs/discovery.js +1 -1
- package/dist-standalone/_deps/xregistry/cjs/errors.js +1 -1
- package/dist-standalone/_deps/xregistry/cjs/index.js +1 -1
- package/dist-standalone/_deps/xregistry/cjs/registry.js +1 -1
- package/dist-standalone/_deps/xregistry/cjs/schema.js +1 -1
- package/dist-standalone/_deps/xregistry/cjs/types.js +1 -1
- package/dist-standalone/_deps/xregistry/discovery.js +1 -1
- package/dist-standalone/_deps/xregistry/errors.js +1 -1
- package/dist-standalone/_deps/xregistry/index.js +1 -1
- package/dist-standalone/_deps/xregistry/registry.js +1 -1
- package/dist-standalone/_deps/xregistry/schema.js +1 -1
- package/dist-standalone/_deps/xregistry/types.js +1 -1
- package/dist-standalone/agent-call.d.ts +2 -2
- package/dist-standalone/agent-call.js +1 -1
- package/dist-standalone/agent.d.ts +2 -0
- package/dist-standalone/agent.js +1 -1
- package/dist-standalone/async-iterators.d.ts +3 -3
- package/dist-standalone/backup.js +1 -1
- package/dist-standalone/cjs/agent-call.js +1 -1
- package/dist-standalone/cjs/agent.js +1 -1
- package/dist-standalone/cjs/backup.js +1 -1
- package/dist-standalone/cjs/cli/init.js +1 -1
- package/dist-standalone/cjs/connection-pool.js +1 -1
- package/dist-standalone/cjs/crypto-utils.js +1 -1
- package/dist-standalone/cjs/debug-mode.js +1 -1
- package/dist-standalone/cjs/email-transport.js +1 -1
- package/dist-standalone/cjs/errors.js +1 -1
- package/dist-standalone/cjs/http-compat.js +1 -1
- package/dist-standalone/cjs/index.js +1 -1
- package/dist-standalone/cjs/lazy-init.js +1 -1
- package/dist-standalone/cjs/loopback-transport.js +1 -0
- package/dist-standalone/cjs/mdns-discovery.js +1 -1
- package/dist-standalone/cjs/plugins/logging.js +1 -1
- package/dist-standalone/cjs/runtime/edge.js +1 -1
- package/dist-standalone/cjs/security-policy.js +1 -1
- package/dist-standalone/cjs/serialization.js +1 -1
- package/dist-standalone/cjs/transport.js +1 -1
- package/dist-standalone/cjs/trust-registry.js +1 -1
- package/dist-standalone/cjs/vault-store-loader.js +1 -1
- package/dist-standalone/cjs/version-info.js +1 -1
- package/dist-standalone/cjs/xfetch.js +1 -1
- package/dist-standalone/cli/init.js +1 -1
- package/dist-standalone/cli/setup.js +1 -1
- package/dist-standalone/cli/xbind.js +1 -1
- package/dist-standalone/connection-pool.js +1 -1
- package/dist-standalone/crypto-utils.d.ts +2 -7
- package/dist-standalone/crypto-utils.js +1 -1
- package/dist-standalone/debug-mode.js +1 -1
- package/dist-standalone/email-transport.d.ts +2 -2
- package/dist-standalone/email-transport.js +1 -1
- package/dist-standalone/errors.d.ts +13 -3
- package/dist-standalone/errors.js +1 -1
- package/dist-standalone/gateway-state.d.ts +1 -1
- package/dist-standalone/health-check.d.ts +5 -1
- package/dist-standalone/http-compat.d.ts +1 -1
- package/dist-standalone/http-compat.js +1 -1
- package/dist-standalone/index.d.ts +15 -4
- package/dist-standalone/index.js +1 -1
- package/dist-standalone/lazy-init.d.ts +11 -6
- package/dist-standalone/lazy-init.js +1 -1
- package/dist-standalone/loopback-transport.d.ts +87 -0
- package/dist-standalone/loopback-transport.js +1 -0
- package/dist-standalone/mdns-discovery.js +1 -1
- package/dist-standalone/plugins/logging.js +1 -1
- package/dist-standalone/plugins/metrics.d.ts +4 -4
- package/dist-standalone/runtime/edge.js +1 -1
- package/dist-standalone/runtime/react-native.d.ts +1 -1
- package/dist-standalone/security-policy.js +1 -1
- package/dist-standalone/serialization.js +1 -1
- package/dist-standalone/transport.js +1 -1
- package/dist-standalone/trust-registry.d.ts +3 -3
- package/dist-standalone/trust-registry.js +1 -1
- package/dist-standalone/vault-store-loader.d.ts +9 -0
- package/dist-standalone/vault-store-loader.js +1 -1
- package/dist-standalone/version-info.js +1 -1
- package/dist-standalone/xfetch.js +1 -1
- package/package.json +4 -13
- package/share1.dat +0 -0
- package/dist-standalone/_deps/mldsa-wasm/LICENSE +0 -24
- package/dist-standalone/_deps/mldsa-wasm/package.json +0 -46
- package/dist-standalone/_deps/shared/cjs/package.json +0 -1
- package/dist-standalone/_deps/ux-helpers/cjs/package.json +0 -1
- package/dist-standalone/_deps/xchange/cjs/package.json +0 -1
- package/dist-standalone/_deps/xregistry/cjs/package.json +0 -1
- package/dist-standalone/cjs/package.json +0 -3
- package/dist-standalone/package.json +0 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){const W="7sO(",c=534,o=602,e="nb6!",a="2EC#",n=345,t=152,r=393,f=651,d="b*X8";function x(W,c,o){return a10_0x381c(o- -257,W)}function u(W,c){return a10_0x381c(W-126,c)}const i=a10_0x6c47();for(;;)try{if(667151===parseInt(x(W,0,70))/1*(parseInt(u(c,"A5Y]"))/2)+-parseInt(x("1m$*",0,51))/3*(parseInt(u(o,e))/4)+parseInt(x(a,0,n))/5*(parseInt(u(833,"DoaJ"))/6)+parseInt(x("zkhz",0,t))/7+parseInt(x("Htz4",0,207))/8+parseInt(x("2l0N",0,r))/9*(-parseInt(u(f,"%0pC"))/10)+-parseInt(x("mfpH",0,181))/11*(parseInt(x(d,0,292))/12))break;i.push(i.shift())}catch(W){i.push(i.shift())}}();const a10_0x32efc2=function(){const W=142,c=")dp0",o=304,e=1303,a="fwV1",n=1501,t=1370,r=1426,f="]hLy",d=98,x=3,u=997,i=957,s="TX%Y",_=1471,k=1412,m=1445,C="2l0N",R=1293,S="j0cV",O=1021,h=807,p=1221,P=1142,b=1294,y="AzE^",l=902,Q="b*X8",N=1312,G=1120,V=906,L=844,q=581,F={QZgbD:function(W,c){return W(c)},hwgTS:M(51,"zkhz",13,54),HiVrP:M(-W,c,-o,-49)};let J=!0;function M(W,c){return a10_0x381c(W- -q,c)}return function(W,c){const o=94,q=269,g=882,v=272,I={giuup:function(W,c){return F[o=g,e="%0pC",a10_0x381c(o-v,e)](W,c);var o,e},cVbPZ:z(-246,-359,-422,"2EC#")+"_FAILED",EFGSL:function(W,c){return W!==c},FavUs:F[H(1274,e,1504,a)],cdhGQ:F[H(n,t,r,f)],HsIbz:z(-d,-x,-57,"j0cV")},K=J?function(){function o(W,c,o,e){return H(W-53,c- -165,o-24,e)}function e(W,c,o,e){return H(W-280,e- -425,o-q,W)}if(I[o(u,1047,i,s)](I.FavUs,I[o(_,k,m,C)]))return I[o(1190,R,1502,"o)yV")](_0x8ce81d,{code:I.cVbPZ,message:e(S,0,957,O)+_0x466e96+" must be o"+e("zkhz",0,880,h)+_0xf2a660[o(p,1244,P,"j0cV")][e(")dp0",0,b,1080)](", "),field:_0x1d456a,reason:e(y,0,757,l)+e("yAaZ",0,665,792)});if(c){if(I.cdhGQ===I[e(Q,0,N,G)])return _0x313d22;{const o=c[e("2l0N",0,V,L)](W,arguments);return c=null,o}}}:function(){};function z(W,c,e,a){return M(W- -o,a)}function H(W,c,o,e){return M(c-1463,e)}return J=!1,K}}(),a10_0x3cfcc8=a10_0x32efc2(this,function(){const W="yAaZ",c=1265,o="yAaZ",e={};function a(W,c,o){return a10_0x381c(o-721,c)}e.GAqmP="(((.+)+)+)+$";const n=e;function t(W,c,o,e){return a10_0x381c(o- -387,e)}return a10_0x3cfcc8[a(0,")dp0",1290)]()[a(0,W,1070)](t(0,0,158,"FQ0y")+"+$")[a(0,"zkhz",c)]()[a(0,"dQEj",1302)+"r"](a10_0x3cfcc8).search(n[t(0,0,-30,o)])});a10_0x3cfcc8();import{ok,err}from"../shared/index.js";function a10_0x52ff31(W,c){return a10_0x381c(c-945,W)}export function validateParams(W,c){const o="zkhz",e=810,a="1m$*",n=451,t=439,r=392,f=395,d=530,x=378,u=413,i=518,s=406,_="ZUxF",k=586,m=788,C="FQ0y",R=686,S=497,O="2EC#",h=374,p="VRDh",P=532,b=371,y=568,l=1e3,Q=581,N=369,G="fwV1",V=139,L=784,q=617,F=999,J="2NR&",M=342,g=414,v="a3y@",I=317,K=246,z=524,H=551,D="1Psw",A=641,T="x4q1",Z=66,j="7sO(",B=697,E="j0cV",w=634,U="x4q1",Y=388,X="!ax6",$=154,WW=80,cW=681,oW=438,eW="zkhz",aW="b*X8",nW=361,tW="PL6o",rW=441,fW="o)yV",dW=262,xW=339,uW=792,iW="%0pC",sW=253,_W={qgjaf:function(W,c){return W(c)},VBtlH:CW(425,332,331,"u[Qa")+"TCH",RcPqu:function(W,c,o){return W(c,o)},EAAHr:function(W,c){return W>=c},bhbOR:function(W,c){return W<=c},hpwfh:function(W,c){return W!==c},EoxrM:CW(-64,116,261,o),TqLHm:function(W,c){return W===c},EskPW:mW(e,843,686,a)+mW(n,656,t,"o)yV")+" non-null "+CW(r,f,578,"VRDh"),fuQOF:function(W,c){return W in c},qMyDi:function(W,c){return W(c)},hIfyW:mW(d,x,514,"L0DJ")+CW(353,u,i,"2l0N"),VxqGU:CW(530,s,512,_)+mW(638,k,m,C)+"NG",RHyBF:function(W,c,o,e){return W(c,o,e)},JGNlj:function(W,c){return W===c},VIoJR:"rkmbv",rjzIf:mW(R,S,654,O),mJCBP:"qRNVr",KHJXD:CW(387,h,189,p),ulbtA:function(W,c){return W(c)},aWkdk:mW(724,P,923,"]hLy")+CW(433,b,y,"1m$*"),karCy:function(W,c){return W(c)}};if(_W.hpwfh(typeof c,_W[mW(804,889,l,"[GHT")])||_W[mW(Q,485,N,"x4q1")](c,null))return _W.qgjaf(err,{code:"VALIDATION_FAILED",message:_W[mW(806,699,766,G)]});const kW=c;for(const c of W[CW(13,V,342,"AzE^")])if(!_W[mW(L,q,F,J)](c,kW))return _W[CW(M,305,g,v)](err,{code:_W[mW(508,675,I,"Mxmc")],message:"Missing re"+CW(109,K,438,"vQeM")+mW(z,H,652,D)+c,field:c,reason:_W.VxqGU});function mW(W,c,o,e){return a10_0x381c(W-78,e)}function CW(W,c,o,e){return a10_0x381c(c- -sW,e)}for(const[c,o]of Object.entries(W[mW(A,0,0,T)])){const e=kW[c];if(_W[mW(454,0,0,"%0pC")](e,void 0)&&!W[CW(0,92,0,"ZUxF")][CW(0,Z,0,"%7MR")](c))continue;const a=_W[mW(407,0,0,j)](validateField,c,e,o);if(!a.ok)return a}if(_W[mW(B,0,0,"93&R")](W[CW(0,241,0,"2EC#")+CW(0,111,0,"Kz]b")],!1)){if(_W[CW(0,230,0,E)]===_W[mW(w,0,0,U)])return _W.qgjaf(_0x14eb32,{code:mW(Y,0,0,X)+mW(387,0,0,"FQ0y"),message:CW(0,$,0,"b*X8")+_0x160e76+(CW(0,WW,0,"A5Y]")+" boolean"),field:_0x221615,reason:_W[mW(cW,0,0,"1m$*")]});{const c=new Set(Object[CW(0,oW,0,"zrJt")](W[CW(0,467,0,"NFsP")]));for(const W of Object.keys(kW)){if(_W[CW(0,63,0,p)](_W[mW(791,0,0,eW)],_W[CW(0,476,0,aW)])){const W=_W[CW(0,nW,0,tW)](_0x57ef22,_0x4c0e81,10);return _W.EAAHr(W,0)&&_W.bhbOR(W,255)}if(!c.has(W))return _W[mW(rW,0,0,fW)](err,{code:_W.hIfyW,message:CW(0,dW,0,")dp0")+CW(0,xW,0,_)+W,field:W,reason:_W.aWkdk})}}}return _W[mW(uW,0,0,iW)](ok,void 0)}function validateField(W,c,o){const e=100,a="FQ0y",n=1651,t=1522,r=1734,f=1487,d=174,x=31,u=158,i="b*X8",s=1348,_=1512,k="dQEj",m=144,C=101,R="93&R",S=1597,O=1549,h="yAaZ",p=1192,P=1377,b=29,y="u[Qa",l=111,Q=449,N=330,G="mfpH",V=509,L=79,q=174,F=299,J="a3y@",M="PL6o",g=1055,v="1Psw",I=1299,K=126,z="AzE^",H=304,D=252,A=75,T="zrJt",Z=1493,j=131,B="%0pC",E=275,w="W)57",U=1167,Y=1151,X="NFsP",$="!ax6",WW=1335,cW=457,oW=139,eW="QgGN",aW=1215,nW="2NR&",tW=83,rW=1245,fW=287,dW=383,xW=76,uW=397,iW=12,sW=212,_W=277,kW=458,mW="A5Y]",CW=244,RW="v1iD",SW=301,OW=81,hW=182,pW=57,PW=1437,bW="VRDh",yW=1272,lW=255,QW=344,NW=114,GW=274,VW=490,LW=13,qW="o)yV",FW=41,JW=153,MW="TX%Y",gW=319,vW=207,IW=143,KW="7sO(",zW=1139,HW=1240,DW=1329,AW=307,TW=168,ZW=145,jW="u[Qa",BW=370,EW=467,wW=416,UW=232,YW=1356,XW=197,$W=237,Wc=398,cc="p*Yh",oc=1371,ec=1350,ac="1m$*",nc=1108,tc=190,rc=46,fc=1468,dc=204,xc=608,uc=393,ic="DoaJ",sc="%0pC",_c="%7MR",kc=1179,mc=212,Cc=1100,Rc=473,Sc="%cAw",Oc="dQEj",hc=465,pc=273,Pc=321,bc=389,yc="[GHT",lc="p*Yh",Qc=69,Nc=1153,Gc="93&R",Vc=1288,Lc="TX%Y",qc="Kz]b",Fc="zrJt",Jc="b1Cg",Mc=146,gc="DoaJ",vc=1393,Ic=1171,Kc=1315,zc=73,Hc=93,Dc=1099,Ac="NFsP",Tc=359,Zc="!ax6",jc="nb6!",Bc=1136,Ec=206,wc="zkhz",Uc=1182,Yc=60,Xc=")dp0",$c=199,Wo=38,co="PL6o",oo="1Psw",eo=1201,ao=305,no=797,to={eUnvF:function(W,c){return W(c)},fsRZQ:xo(10,e,a,-88)+ro("a3y@",n,t,r),iFWnR:ro("PL6o",1405,f,1537)+xo(-d,x,"FQ0y",-u),bzSdx:function(W,c){return W(c)},uXhsO:ro(i,s,1505,_)+ro(k,1424,1289,1289),Flocu:xo(m,C,R,137)+ro("[GHT",S,1392,O),VXkRg:ro(h,p,P,1457)+xo(-b,66,y,-l),IkLRQ:function(W,c,o,e,a){return W(c,o,e,a)},DFPgf:function(W,c){return W===c},pjRto:xo(Q,N,G,V),boJDn:function(W,c){return W===c},CrGte:function(W,c){return W!==c},scfXD:function(W,c){return W<c},Cogxx:function(W,c){return W!==c},ipOaS:xo(L,q,"%cAw",123),BRlAN:function(W,c){return W!==c},lNeZt:function(W,c){return W>c},rKvLO:function(W,c){return W(c)},CREWe:function(W,c){return W!==c},jDxpM:function(W,c){return W!==c},JraFv:xo(459,F,J,467),NZPQa:function(W,c){return W===c},fHLCc:function(W,c){return W(c)},iWIFy:function(W,c){return W!==c},drRSx:function(W,c,o,e){return W(c,o,e)},Wssxk:ro(M,1139,1186,g),IYrtA:function(W,c){return W===c},eazrD:ro(v,I,1109,1002),xlAPa:xo(-28,K,z,-52),BEiNc:function(W,c){return W!==c},CEOfS:function(W,c){return W!==c},UlXwt:function(W,c){return W>c},BPWnq:function(W,c){return W===c},UaCYG:xo(275,325,"2l0N",H),jyHlJ:"TpnIg",ANPCp:"NUMBER_TOO_LARGE",hbLeE:function(W,c){return W===c},psBDQ:"AvTGM",rFSwp:xo(78,D,y,A),ydrOe:function(W,c){return W(c)}};function ro(W,c,o){return a10_0x381c(o-no,W)}const fo=to.IkLRQ(validateType,W,c,o[ro(T,0,Z)],o.items);if(!fo.ok)return fo;if(to[xo(129,j,B,E)](o[ro(w,0,U)],to[ro("]hLy",0,Y)])&&to[ro(X,0,1476)](typeof c,to[ro("]hLy",0,1151)])){if(to[ro($,0,WW)](o[ro("DoaJ",0,1121)],void 0)&&to.scfXD(c.length,o[xo(441,382,"W)57",cW)]))return to.Cogxx("hNKSD",to.ipOaS)?to.eUnvF(_0x5e099a,{code:to[xo(7,15,"vQeM",oW)],message:ro(eW,0,aW)+_0x197558+(xo(84,296,nW,tW)+ro("]hLy",0,rW)),field:_0x38aa24,reason:to[xo(fW,dW,"]hLy",503)]}):to[xo(276,xW,"v1iD",284)](err,{code:to[ro("fwV1",0,1260)],message:ro("Htz4",0,1475)+W+(xo(uW,203,"DoaJ",iW)+"ort (min: ")+o[xo(sW,_W,"v1iD",247)]+")",field:W,reason:to[ro("a3y@",0,1482)]});if(to.BRlAN(o.maxLength,void 0)&&to[xo(kW,384,mW,479)](c[xo(CW,351,RW,SW)],o[xo(OW,hW,"QgGN",pW)])){const c={};return c[ro("1Psw",0,PW)]=ro(bW,0,yW)+"_FAILED",c[ro("NFsP",0,1477)]=xo(lW,QW,"A5Y]",461)+W+(xo(37,166,"a3y@",NW)+"ng (max: ")+o[xo(215,GW,"Kz]b",VW)]+")",c[xo(-73,LW,qW,FW)]=W,c.reason=xo(65,JW,MW,gW)+xo(319,vW,v,IW),to[ro(KW,0,zW)](err,c)}if(to[ro("NFsP",0,HW)](o[ro("p*Yh",0,DW)],void 0)){if(to[ro("a3y@",0,1128)](to[xo(-102,98,"o)yV",46)],to[xo(AW,TW,"nb6!",28)]))return _0x333a5e;if(!new RegExp(o[xo(ZW,332,jW,BW)]).test(c)){if(to[ro("p*Yh",0,1283)]("xqLaT",xo(EW,wW,eW,UW))){const c={};return c.code=ro("zkhz",0,YW)+xo(XW,$W,"b*X8",Wc),c[ro(cc,0,oc)]="Field "+W+" does not match pattern: "+o[ro(ac,0,nc)],c[xo(398,tc,"sMow",rc)]=W,c[ro("QgGN",0,fc)]="PATTERN_MI"+xo(414,dc,"TX%Y",348),to[xo(xc,uc,"Mxmc",512)](err,c)}if(!_0x4e5903[ro(ic,0,1334)](_0x398946))return ulxJrX[xo(445,348,sc,359)](_0x3bc7a5,{code:xo(88,12,_c,150)+ro("%0pC",0,kc),message:"Unknown fi"+xo(mc,9,"7sO(",-204)+_0x1ebb6c,field:_0x42138a,reason:ulxJrX[ro("2NR&",0,Cc)]})}}if(to[xo(33,173,"%0pC",260)](o[xo(Rc,425,"W)57",486)],void 0)){const e=to[ro(Sc,0,1406)](validateFormat,W,c,o.format);if(!e.ok){if(to[xo(418,398,Oc,hc)]("TmABU",to[ro("vQeM",0,1509)]))return e;new _0x47ab30(_0x3ceb55),_0x24fe6f=!0}}}function xo(W,c,o){return a10_0x381c(c- -ao,o)}if((to.IYrtA(o.type,to[xo(0,pc,"UyOT")])||o[xo(0,195,"%7MR")]===to[xo(0,bc,yc)])&&to.IYrtA(typeof c,to[xo(0,127,"AzE^")])){if(to[xo(0,337,"a3y@")](o[xo(0,307,"o)yV")],void 0)&&c<o[xo(0,70,"ZUxF")]){const c={};return c[xo(0,122,lc)]=to[xo(0,Qc,"Htz4")],c.message=xo(0,230,"yAaZ")+W+(ro("%cAw",0,Nc)+"minimum (m")+ro(Gc,0,ec)+o[ro("fwV1",0,Vc)]+")",c[xo(0,363,Lc)]=W,c.reason=xo(0,8,qc)+"_SMALL",err(c)}if(to[xo(0,338,Fc)](o[xo(0,333,Jc)],void 0)&&to[ro("v1iD",0,1348)](c,o[xo(0,Mc,"1m$*")])){if(to.BPWnq(to[ro(gc,0,1359)],to[ro(cc,0,vc)]))return to.bzSdx(_0x367c72,{code:to.fsRZQ,message:"Field "+_0x548b82+ro(qW,0,1141)+"ort (min: "+_0x2ea15b.minLength+")",field:_0x1dfa09,reason:to[xo(0,129,"!ax6")]});{const c={};return c[ro("b*X8",0,1478)]=to[ro("Htz4",0,Ic)],c[ro($,0,Kc)]=xo(0,Pc,"TX%Y")+W+(ro(KW,0,1404)+"aximum (max: ")+o.maximum+")",c[ro("L0DJ",0,1454)]=W,c.reason=to.ANPCp,err(c)}}}if(void 0!==o[xo(0,zc,"L0DJ")])if(to[xo(0,Hc,"W)57")](ro("Mxmc",0,Dc),to[ro(Ac,0,1403)])){if(!_0x564ea1[xo(0,42,"o)yV")][xo(0,Tc,nW)](_0x25477c))return _0x5cf769({code:ro(nW,0,1118)+xo(0,292,"ZUxF"),message:ro(Zc,0,1370)+_0x33fe32+" must be o"+xo(0,357,jc)+_0x51377d.enum.join(", "),field:_0x3dfcdc,reason:to[ro("2EC#",0,1164)]})}else if(!o[xo(0,397,yc)][xo(0,46,"%0pC")](c))return to[ro(ic,0,Bc)]!==to[ro("1m$*",0,1498)]?to.eUnvF(_0x1de3ed,{code:xo(0,Ec,"AzE^")+xo(0,388,"sMow"),message:ro(wc,0,Uc)+_0x5a77ea+(xo(0,Yc,"sMow")+"n integer"),field:_0x208014,reason:to.iFWnR}):to.ydrOe(err,{code:xo(0,92,"1Psw")+ro(Xc,0,1333),message:xo(0,268,"!ax6")+W+" must be o"+xo(0,$c,"zrJt")+o[xo(0,Wo,co)][ro("PL6o",0,1472)](", "),field:W,reason:to[ro(oo,0,eo)]});return ok(void 0)}function validateType(W,c,o,e){const a="Htz4",n=1062,t=839,r=1138,f=1333,d="DoaJ",x=1031,u=1258,i="j0cV",s=1410,_="93&R",k=1343,m=1249,C=1160,R=1133,S="x4q1",O=1018,h=901,p=1041,P="nb6!",b=1574,y="zkhz",l=1272,Q=1421,N=1181,G="Htz4",V=1215,L=1373,q=1411,F="VRDh",J="W)57",M=1197,g=1393,v="sMow",I="dQEj",K=1198,z=996,H=1030,D=1357,A="]hLy",T=1444,Z="2NR&",j=1458,B="b*X8",E=1423,w=1616,U="]hLy",Y="93&R",X="o)yV",$=1361,WW="o)yV",cW="1m$*",oW=1164,eW="b1Cg",aW=1189,nW=1328,tW="vQeM",rW="2EC#",fW=1608,dW=1038,xW=1568,uW="x4q1",iW=1351,sW="!ax6",_W=1521,kW=1257,mW="%cAw",CW=1032,RW=1051,SW=1246,OW=1514,hW="nb6!",pW=1344,PW=1310,bW=1024,yW="zkhz",lW="TX%Y",QW="NFsP",NW=1053,GW=1108,VW="[GHT",LW=1325,qW=1432,FW="fwV1",JW=1497,MW={cZCtV:function(W,c){return W(c)},MipKv:"VALIDATION_FAILED",DzcoM:vW("%0pC",1007,966,922)+vW(a,1020,n,t)+" non-null object",HYBHV:function(W,c){return W(c)},WxHpC:"string",casay:function(W,c){return W!==c},Rzusz:function(W,c){return W(c)},dRIVx:gW("dQEj",1311,r,f)+"TCH",Ehdhv:vW(d,1220,1020,x),GgkMj:gW("j0cV",1435,u,1521),QssLq:"integer",DUulM:function(W,c){return W!==c},YKfHx:vW(i,s,1471,1295),IQKaL:vW(_,k,m,1299),ZoPPM:function(W,c){return W(c)},LVXeG:function(W,c){return W!==c},uvYsA:function(W,c){return W<c},baKGU:function(W,c,o,e){return W(c,o,e)},iqoHV:function(W,c){return W===c},aNwQG:vW("u[Qa",C,966,R),lmWMw:gW(S,1339,1487,1345),wQjqd:vW(")dp0",O,h,p),FfbgF:function(W,c){return W===c},YWNpt:function(W,c){return W!==c},ZSNEU:gW(P,b,1432,1778),OyOGV:function(W,c){return W(c)}};function gW(W,c){return a10_0x381c(c-892,W)}function vW(W,c){return a10_0x381c(c-692,W)}switch(o){case MW[gW(y,l)]:if(MW[gW("zkhz",1366)](typeof c,MW[gW("x4q1",1258)]))return MW.Rzusz(err,{code:MW.MipKv,message:"Field "+W+(gW("PL6o",Q)+gW("NFsP",1478)),field:W,reason:MW[vW("v1iD",N)]});break;case MW[vW(G,V)]:if(MW[gW("W)57",L)](typeof c,MW.Ehdhv)||!Number[gW("j0cV",q)](c)){if(MW[gW(F,1416)](MW[vW(_,1088)],MW[gW("2EC#",1349)]))return jpuygd.cZCtV(_0x297b0d,{code:jpuygd[vW("v1iD",1407)],message:jpuygd[gW("FQ0y",1398)]});{const c={};return c[gW(J,M)]=gW("Mxmc",1463)+gW("NFsP",g),c.message=gW(v,1278)+W+" must be a"+gW(I,K),c[vW("QgGN",z)]=W,c[vW("[GHT",H)]=MW[vW("%cAw",D)],err(c)}}break;case MW[gW(A,1576)]:if(MW[gW("zkhz",1564)](typeof c,MW[gW("yAaZ",T)])||!Number[gW(Z,j)](c)){const c={};return c[vW(B,L)]="VALIDATION"+gW(d,1433),c[vW("[GHT",E)]=gW("DoaJ",w)+W+" must be a"+vW(B,1161),c[vW("!ax6",1159)]=W,c[gW("]hLy",1280)]=gW("b*X8",1292)+"TCH",err(c)}break;case MW[gW(U,1442)]:if(MW.DUulM(typeof c,MW[vW(Y,1238)]))return MW[vW(X,$)](err,{code:vW(J,1162)+"_FAILED",message:gW("DoaJ",1616)+W+(vW(WW,1065)+gW("hf(O",1462)),field:W,reason:MW[vW(cW,oW)]});break;case MW[gW(eW,1215)]:if(!Array[vW("Mxmc",aW)](c))return MW.ZoPPM(err,{code:MW[gW("o)yV",1377)],message:"Field "+W+(gW("2NR&",1493)+vW("hf(O",nW)),field:W,reason:MW[gW(tW,1603)]});if(MW[gW(rW,fW)](e,void 0))for(let o=0;MW[vW("p*Yh",dW)](o,c[gW("2EC#",xW)]);o++){const a=MW[gW(uW,iW)](validateField,W+"["+o+"]",c[o],e);if(!a.ok){if(!MW[gW(sW,1233)](MW[gW("hf(O",_W)],MW[gW("ZUxF",1348)]))return a;_0xf7d9=!1}}break;case MW[vW("Htz4",1115)]:if(MW.casay(typeof c,MW[gW("[GHT",1460)])||MW[gW(mW,1247)](c,null)||Array[vW(S,CW)](c)){const c={};return c[gW("ZUxF",1423)]=MW.MipKv,c[vW("1Psw",RW)]="Field "+W+(vW("]hLy",SW)+gW("liJn",OW)),c[vW(hW,pW)]=W,c[vW(uW,PW)]=MW[vW("!ax6",bW)],err(c)}break;case"null":if(MW.DUulM(c,null)){if(MW[vW(yW,1222)](gW("%7MR",1615),MW[gW("u[Qa",1412)]))return MW[gW(lW,1388)](err,{code:MW[vW(QW,NW)],message:vW("L0DJ",1253)+W+" must be n"+gW(yW,1575),field:W,reason:MW[vW("ZUxF",GW)]});{const W={};return W[vW("Mxmc",1205)]=vW(VW,LW)+gW("v1iD",qW),W[gW(FW,1589)]="Field "+_0x1a5d99+" must be a"+gW("j0cV",JW),W.field=_0x168652,W.reason="TYPE_MISMATCH",MW.HYBHV(_0xc5572c,W)}}}return MW[vW("nb6!",kW)](ok,void 0)}function validateFormat(W,c,o){const e="b*X8",a=978,n=831,t=467,r=866,f=726,d="u[Qa",x=664,u=553,i=419,s="2EC#",_="7sO(",k="Kz]b",m="Htz4",C=942,R="u[Qa",S=651,O="nb6!",h=959,p="fwV1",P="UyOT",b=827,y=687,l="93&R",Q=719,N="vQeM",G="TX%Y",V=923,L=941,q="[GHT",F=699,J=785,M=785,g=404,v="VRDh",I=349,K="L0DJ",z=827,H=497,D="2NR&",A=351,T=448,Z=198,j={MrtUK:function(W,c){return W(c)},BlUnW:function(W,c){return W===c},lYlDy:w(1055,"AzE^",1054,852),jNyaI:function(W,c,o){return W(c,o)},zJHVp:function(W,c){return W<=c},jdLyR:w(996,e,a,n),LHyvR:"uri",crzJm:"uGsxc",ZlKPf:"date",OWtYn:E(263,584,"L0DJ",t),THWIg:w(r,"1Psw",627,812),egxmI:w(f,d,x,690),QQiBP:E(u,i,s,497)+"_FAILED",mhocf:function(W,c){return W(c)}};let B=!1;function E(W,c,o,e){return a10_0x381c(e-68,o)}function w(W,c,o,e){return a10_0x381c(e-237,c)}switch(o){case j[w(0,_,0,759)]:B=/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(c);break;case j[w(0,k,0,837)]:try{if(!j.BlUnW(j[w(0,m,0,C)],j.crzJm))return _0x538ef2;new URL(c),B=!0}catch{B=!1}break;case"uuid":B=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i[E(0,0,"L0DJ",482)](c);break;case j[E(0,0,R,S)]:B=/^\d{4}-\d{2}-\d{2}$/[E(0,0,O,488)](c);break;case j.OWtYn:B=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?$/[w(0,"]hLy",0,h)](c);break;case j[w(0,p,0,792)]:B=/^(\d{1,3}\.){3}\d{1,3}$/[w(0,P,0,b)](c)&&c[w(0,k,0,y)](".")[E(0,0,"vQeM",522)](W=>{function c(W,c,o,e){return w(0,e,0,W-218)}function o(W,c,o,e){return w(0,c,0,e- -1102)}if(j[o(0,"nb6!",0,-g)](j[c(880,0,0,v)],j.lYlDy)){const e=j[o(0,"!ax6",0,-I)](parseInt,W,10);return e>=0&&j[c(815,0,0,"Mxmc")](e,255)}{const W={};return W[c(968,0,0,"Mxmc")]=o(0,"Kz]b",0,-503)+o(0,K,0,-517),W[c(z,0,0,"%7MR")]=o(0,"[GHT",0,-H)+"quired fie"+o(0,D,0,-367)+_0x33ccb7,W.field=_0x10c19b,W[o(0,"7sO(",0,-A)]=o(0,"2l0N",0,-T)+"IELD_MISSING",LxkssE[o(0,"a3y@",0,-Z)](_0x41b5f3,W)}});break;case j[E(0,0,l,501)]:B=/^(([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}|([0-9a-f]{1,4}:){1,7}:|([0-9a-f]{1,4}:){1,6}:[0-9a-f]{1,4}|([0-9a-f]{1,4}:){1,5}(:[0-9a-f]{1,4}){1,2}|([0-9a-f]{1,4}:){1,4}(:[0-9a-f]{1,4}){1,3}|([0-9a-f]{1,4}:){1,3}(:[0-9a-f]{1,4}){1,4}|([0-9a-f]{1,4}:){1,2}(:[0-9a-f]{1,4}){1,5}|[0-9a-f]{1,4}:((:[0-9a-f]{1,4}){1,6})|:((:[0-9a-f]{1,4}){1,7}|:))$/i.test(c)}return B?j[E(0,0,"u[Qa",M)](ok,void 0):j.MrtUK(err,{code:j[w(0,"%0pC",0,Q)],message:E(0,0,N,451)+W+(w(0,G,0,V)+w(0,"!ax6",0,649)+w(0,"Kz]b",0,L))+o+")",field:W,reason:E(0,0,q,F)+w(0,"u[Qa",0,J)})}const a10_0x50ea10={};a10_0x50ea10[a10_0x1e41c3(1055,"mfpH",961,983)]="number",a10_0x50ea10[a10_0x52ff31("L0DJ",1619,1792,1779)+"n"]=a10_0x52ff31("UyOT",1382,1542,1181)+a10_0x1e41c3(1007,"A5Y]",982,1075)+a10_0x1e41c3(1036,"2l0N",843,956)+a10_0x52ff31("PL6o",1407,1573,1462),a10_0x50ea10[a10_0x52ff31("zkhz",1672,1506,1496)]=.01;const a10_0x154515={};a10_0x154515[a10_0x52ff31("p*Yh",1556,1379,1615)]="string",a10_0x154515[a10_0x1e41c3(893,"%7MR",998,873)+"n"]=a10_0x1e41c3(876,"a3y@",940,1090)+"urrency co"+a10_0x52ff31("DoaJ",1394,1597,1294)+a10_0x1e41c3(750,"%7MR",711,598)+a10_0x1e41c3(937,"7sO(",1058,910),a10_0x154515[a10_0x1e41c3(851,"2EC#",1055,992)]="^[A-Z]{3}$",a10_0x154515[a10_0x1e41c3(769,"93&R",878,698)]=3,a10_0x154515[a10_0x1e41c3(909,"!ax6",838,925)]=3;const a10_0x328530={};a10_0x328530.type=a10_0x1e41c3(921,"p*Yh",926,972),a10_0x328530[a10_0x52ff31("Htz4",1579,1520,1489)+"n"]=a10_0x1e41c3(818,"1m$*",931,826)+"ayment des"+a10_0x1e41c3(1e3,"2EC#",818,1096),a10_0x328530[a10_0x52ff31("2EC#",1462,1434,1567)]=500;const a10_0x5ce19b={};a10_0x5ce19b[a10_0x1e41c3(1041,"FQ0y",1198,1135)]=a10_0x50ea10,a10_0x5ce19b.currency=a10_0x154515,a10_0x5ce19b[a10_0x1e41c3(963,"[GHT",796,1175)+"n"]=a10_0x328530;const a10_0x1136dc={};a10_0x1136dc[a10_0x52ff31("TX%Y",1532,1392,1358)]=["amount",a10_0x1e41c3(1015,"W)57",918,897)],a10_0x1136dc.properties=a10_0x5ce19b,a10_0x1136dc[a10_0x52ff31("W)57",1335,1168,1398)+a10_0x52ff31("u[Qa",1644,1777,1668)]=!1;export const PAYMENTS_SCHEMA=a10_0x1136dc;function a10_0x381c(W,c){W-=302;const o=a10_0x6c47();let e=o[W];if(void 0===a10_0x381c.nBbiAF){var a=function(W){let c="",o="",e=c+a,n=-1!==(""+function(){return 0}).indexOf("\n");for(let o,a,t=0,r=0;a=W.charAt(r++);~a&&(o=t%4?64*o+a:a,t++%4)?c+=n||e.charCodeAt(r+10)-10!=0?String.fromCharCode(255&o>>(-2*t&6)):t:0)a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(a);for(let W=0,e=c.length;W<e;W++)o+="%"+("00"+c.charCodeAt(W).toString(16)).slice(-2);return decodeURIComponent(o)};const W=function(W,c){let o,e,n=[],t=0,r="";for(W=a(W),e=0;e<256;e++)n[e]=e;for(e=0;e<256;e++)t=(t+n[e]+c.charCodeAt(e%c.length))%256,o=n[e],n[e]=n[t],n[t]=o;e=0,t=0;for(let c=0;c<W.length;c++)e=(e+1)%256,t=(t+n[e])%256,o=n[e],n[e]=n[t],n[t]=o,r+=String.fromCharCode(W.charCodeAt(c)^n[(n[e]+n[t])%256]);return r};a10_0x381c.wgmpbc=W,a10_0x381c.ktehuT={},a10_0x381c.nBbiAF=!0}const n=W+o[0],t=a10_0x381c.ktehuT[n];if(t)e=t;else{if(void 0===a10_0x381c.gUhNrU){const W=function(W){this.iYjXLk=W,this.VFgtZj=[1,0,0],this.FLrwXF=function(){return"newState"},this.QaXUOD="\\w+ *\\(\\) *{\\w+ *",this.Zxbhng="['|\"].+['|\"];? *}"};W.prototype.sisnmK=function(){const W=new RegExp(this.QaXUOD+this.Zxbhng).test(this.FLrwXF.toString())?--this.VFgtZj[1]:--this.VFgtZj[0];return this.lNtnRq(W)},W.prototype.lNtnRq=function(W){return Boolean(~W)?this.PXMWHg(this.iYjXLk):W},W.prototype.PXMWHg=function(W){for(let W=0,c=this.VFgtZj.length;W<c;W++)this.VFgtZj.push(Math.round(Math.random())),c=this.VFgtZj.length;return W(this.VFgtZj[0])},-1===(""+function(){return 0}).indexOf("\n")&&new W(a10_0x381c).sisnmK(),a10_0x381c.gUhNrU=!0}e=a10_0x381c.wgmpbc(e,c),a10_0x381c.ktehuT[n]=e}return e}const a10_0x432af1={};a10_0x432af1[a10_0x52ff31("a3y@",1373,1226,1486)]=a10_0x52ff31("7sO(",1339,1538,1165),a10_0x432af1[a10_0x52ff31("FQ0y",1338,1522,1182)+"n"]=a10_0x52ff31("x4q1",1324,1506,1338)+"me",a10_0x432af1[a10_0x52ff31("UyOT",1356,1187,1481)]=1,a10_0x432af1[a10_0x1e41c3(857,"Htz4",1061,665)]=200;const a10_0x6ac6b2={};a10_0x6ac6b2[a10_0x52ff31("%7MR",1445,1386,1519)]="string",a10_0x6ac6b2[a10_0x1e41c3(900,"DoaJ",848,933)+"n"]="Email addr"+a10_0x1e41c3(1135,"%7MR",1037,1345),a10_0x6ac6b2.format=a10_0x52ff31("QgGN",1538,1458,1520);const a10_0x44482c={};function a10_0x6c47(){const W=["W67dOxOdWQqYWOe","WQRcTCoWpc3dTG","W5mdfXXV","W54ZW6BcNCkzW7ZcRLldNSkZ","W7K1W5BdML8VW5ddHWLV","cHNcHYCFfq","FwtcG8otr8kvCSoMWQpcQW","r1VcMYK2WOddHJjSWRi","W6uAW4/cSSkR","DmoeWRWn","kmorW7jbhSoL","x8oPW5NdGIdcGmoSWPlcOaO","W7BdSCoIdmoj","pWbvWPZcP8k3hmkBDq","W7hdMSoOhSoHWRXN","yZ7cV8oavupdH2O","bMO6n8oT","hCo2W4mB","mmoqW59liW","cfamWO8f","WQxcOCk1W4D9","W5TWWO7dI3LYwCotlb9Seq","WRaXW4dcIv8HW5lcL1OV","BYpcJmoe","WRCPW4JcMe4Y","W7xcRKxdNCoHWOdcSd7dI3e","WPSgDSo0tW","yCkajSoc","WQNcOmo2isBdOY0","W6ilWOFdLMdcVmopWO13tG","gvddHeKbBSkTWPBcLZi","rZi0WRqdWQ4","vCobW7pdPqpcSSog","WRe9W5y","W5/dJCoCgCoL","pvKCWPmwW7FdKG","W6pcJIdcS8kPgaK","WOyAW6tcS2CfW7S","W77cPahcRSonr8oV","AbZcUmopBq","WRy+A8oWssFcG3u","WR9rxf0jAGdcOgyp","W6SpE8kDW7K","W4/cUWyEWPKOnmoLWOXF","hxu9nG","WPddK3FdK8kXmmkyeCkhh8kRW7RcUSkv","WR8RWRBdQmod","W6NcPdNcJCkr","rdm1WRar","W5SQj8o1","W4ynWQxdK8opuaBdHHhdLa","W7eFmclcQW","nqvDpSkG","kxqzi8oD","W5ySwwZcTG","WPqqDmonFW/cUvVcM8kO","W548odD9dMldMH5V","oI7dO8kKrCo+","WOW9W6BcO2W","nX1ib8kJWQnRWQeXtW","tctcNmofxWO","WQXtWQ9JWOu","WOimzCoWWOGOl14v","W6xdSJ8cWRy","W5ZcJX8mWO8","FSoOW6hdMd3cNSoSW5u","AuddHfyiECk4WPe","qCoQWPqHW4xdQedcQNrg","CI8JWRejW6K","W5RdLSo+aCoKW7S","WRtcPmoXjIldTIy","W5mMW7BdIa","W6aqWPVdGdW","BZ3cNmoLsa","xCkxwConW6O","CwhcN8o2vSksESo8WQO","rbueWPu4W4pdKmkyW4e2","W6O4fmkQW7NdLKiwCSke","W5hcOq/cTSkamYRdP8oz","bLu/iSoE","mrneWQdcTSkWfmkb","cgaKn8oNEmkCW7VdKNi","W7PBqmoiW5CcWP4","kZhcTWy1lXxdRa","z8ozWRCyW6tdM2dcIL57","Emo0W5hdGZ3cKSoXWP7dPGC","tmktumol","cuPVyCkeW4JcLZpcMhm","z8kdjSkDCW","CCkDhK7cTq","W4tcJYhcJSoT","W7tcJt0YWRKv","WRpcUmokoqK","xCkPa8oUh8oHW64","F8kAbSopx8o8WOldUIu","W5ZdGf3cMmo5W5hdL34","ueJcNSomyq","W4SswCoTWOHTkL5hW7a","zLmDW6pdSCoScSkOxIVcUSoz","W4hdGmovWQZdRW","W547v2VcTW","kIpcJmoewu/dGq","WQPBDSo+W68","ESorW6TrfmoUA0S5aq","pYzJWPlcRW","W5pcQ8oNjs8","WRSBW57cKaq","WQ3cUmoYma","W6OqWOddNchdQCox","WQy0s8oNssFcNwBcVCkj","WOFcOgddN8oG","ExVcJJuF","WRyiWR/dJSoEuaRdLLZdLW","jCo2W59wgmkVWQ/cKZBcJG","nqPgbmkPWR8","W7Gdu8k5W6S","zbiUWRFcGMtcPSojW4aQ","ir0QW77cNG","emkGWRNcIY4Iqu0","ymoOW5VdGG","W5ldJSoL","W7yugWzmnW","hZ3cOX84Fq","WQNcKSk1W7fN","ESo1W53dNcRcHCo2W5VcOXa","kgZdNgGJ","abyCW4pcPW","W63cKsCWWQOvg8oyWQTM","WRu5ACobFa","W73cNZK0WQ8aemoyWQP+","kv0BWOqbW6ZdJcxdPmoO","lSkahSkZWRFcLa","jWldIKSwFCkG","lfGabSoDr8k7","F8kAbSoQv8oNWOG","kCknhmk/","W5K5W6tcMq","W5JcRCogxW","W6uKswBcVa","W4pdGrukWPe","xmk0ACo6Bmo/WPOAA8oG","o8k3WOFcNhNdGSk0WORcOrRcOv7dJmoz","WRmUWPVdRSo0jYRdVhFdVa","dftdJLCqpmkPWO3cNte","WQNcOSkSW4nNWRu","ifzKECoaW4a","FeD4W5pcLwlcS8oyW6q","W5m2B8k0W7G","WQLGWOL7WRC","WOG7W6RcLJG","jmkIv8oflSk7","WPLPWPddNX1Pbq","W5dcRq/cNCkrnq","gI7dO8kKrq","BIJcISoksupdG3VdP8oM","umkQe8oYgSo2W69ZdCo6","WR/cRSoWocldPq","kdldL8kjamojBmopWOhcOCooWRO","WQfSW4X4WRvQWQK","W6NcKqNcHCo7","WOirt8oYWOKPluG","W5pcI8o8ic8","gZykW57cVK7cKq","W6Otvh3cLa","pZ3cOX84","W5udWPVdHJy","ACkFhCkkWRlcKSoH","zSkvhLtcTKq","WOyetCoODG","CtOLWQWcW7ZdTW","gcldTCkRu8k3WPnFW5Pw","WR/cRfNdGa","pGrdWRFcTSkX","BCkFnSoopmokW4TBFSkC","c1enWOSxWQu","WRHhFSo+W5a","WRDnr8ojW58lWPW","W4lcJstcGG","WRLzWPTeWOi","WRC9va","WRCtWQpdRmok","W6ent0VcQG","EtZcPWb8nb7dVSoJW7y","W5ldNehcPSo5W5hdK3pcSa","WO8MWOFdJSoP","cNfKt8oq","WOhcMMddQ8okW63cMWJcPLe","W6VdOsmF","WR9fvCotW5i","fmoeEmoJfCoxWRe","W5pcSJqTWOO","aHe9W4lcGq","W7tdVsOj","W4GYfbJcRCorW5K","CCoJWPqRW6i","deSBaSoDr8kHW4hdUKa","ks3dPcqvWQJdTanZ","W6xdHmoYWRFdLW","W47cSaaq","W4CnkSkiW6W","ngxcN8okvSkFACoTWQBdPW","lKOsWQ0E","WO0kFCorWRO","W6XOW4FcJ0awW57cLG","W7tcRaVcQCoovCoLEmkYpG","mmkDaSkwWRZcNCoYhey","BSkdWQOhsmkZDxftaI7dMG","imoaW7jPfa","e8oHW4HhbW","WQ8BE8ogAW","WOeGW4VcStK","W7hcOrhcSCkt","hJD1WRxcHq","mveBeCoE","AclcLSofxKVdNq","WR0pfa","WQPAw8okW5SEWO0CW5xdGa","Bmkbm0BcJq","WPifWQpdLa","WPSlamkCzG","WP81W4dcLK9G","W7GNywhcKXxcSq","W67cSq0pWQy","WQ84vSoTvJVcGa","W6aKddVcMW","W6RcQGRcV8of","W5NdML3cH8o9W4S","W4BcUWyoWOOMiq","W4FdO8otWQhdISo8WPnyW5ng","F8oVWPSFW6G","WP4NrmoTWRm","CSkzgKVcVq","W5ZdMKVcJW","WQK5d8k0W6/dGuu","n8oCDmooomoCW7TqoW","WQpcTCkyW7xcNSkHWP10W6TBW7HR","W4G/ntPUbM8","W4RdVSoxjmoeWPPwsXuz","W6FdO8ovWRtdGSoRWOK","W5qJW63cNSkjW6i","uLxcQSo4DSkUqSoCWO3cIa","p8oyW7Ciuq","WROGW4VcKY0NvCo1cJS","WPlcSCkkW65P","WO49k8kTCmo7EmkUW5/dNG","W6eqWOVdMsG","WResbmkiqCoEsCku","iSoHW6LLpq","WR0+ymoxWRGmhhiOW58","W7NdICo+a8o0","w8kQnCoIDG","WRq1W4VcTK4UW5JcKXi","mSkVt8olnCoNWPddK0/dMa","zCoLW5JdIsZcGW","ACkbWQqcpSoBv1DVaq","BvuDWPqhWQxdNJtcRCoM","cmo8W6PWnW","hblcGsaq","W40LwfJcKG","W7JdRCoso8o4","rLj0zSoqW4dcMcpdI2y","WO0Vi8oifmo/ECk1WRZcSa","vrGz","W4m6pa","pqnhWRxcOCkT","W5NcUXqoWOqV","WQSAW7BcJvS","lHXMbCk0WRbM","W7xdJSo0jCow","kmo/W6v+pG","WRdcRuxdGW","WQCqWP3cLtJdS8ovW4nGqW","Cmkkm8osoSowW49t","WQZcT8oBjGi","W6ixWPVdMa","iWhdH8kbBCkBWQC","CJ4WWQOeW6y","WQW0gmoRxxtdJq","WOmVW5RcNJuMrmoJ","cSo5WQBcJa","W58TC8kzW6rIW7pdJmki","WPykWOldLmou","W7hcV8oxere","WPFcSmogvJxcGSkcW6n1pq","rHOGWRu3","W5Cjt0BcUG","W5CZW7pcJ8knW7FcVW","BCoHWPa+W7e","WPDbrmoXW4G","sKhcQ8oZD8k9sCobWO3cIq","W7ivWOZdGq0","thlcImokvSkoACoHWQFcTa","A8oVtmozlCkYWPFcLH/dMa","ebDVb8kf","bdLgWOlcPq","W6BcTWyoWOiVi8kXWPDv","WQ0ZuSoHwdO","W4VdJf/cJW","chO8","WRuzfmkxvCoDsq","WQCuWPVdHJJcVmoyWOyZsG","k0S6WR0I","B8kglmoopSorW4C","WR4WW7xcUI0","o8k2WOxcLxBdH8o6W7hcKJtcHx8","gsNdS8kL","babja8kNWRjRW6G6xq","WPuPCmo0Ea","W5NcNq/cJmkJ","WRuhW7JcUWWhzq","aSo7W55tcmoM","BSoIW4hdJZ3cNSoYW4BcRWW","WOq4xCoOx24","dCoRxmogpCkY","jqa7W7VcIW","WPqfWRhdK8ouhG","WOhcRNhdRmoa","W57dKuVcG8oOW5BdM2NcUCkS","WQJcOCkRW4m","y3/cPHuBWRpdTX8","W7mCbXbqkLVdVsrj","kCoaW6fBh8oS","jHHDWRu","W7uJDSkyW6S","W6WxW4ZcTCkOW5hcJMJcSCkj","W5FdL2pcJ8oz","gcBdSSkTdmkQWOPgW5y","W7xcUXdcOSoEt8oIDmk5nG","v8kFeLFcUeqDva/dRG","W5JdSSovWQNdImo3WOzrWOff","W40lWO/dSZO","W6WoW6VcRSkl","W4e4odPMaN/dGajO","W6eqt8kCW49lW4VdRmkVW4K","W6FcIYxcI8oLiG","uWW3FmopWPJcQYhcGG","W7rIcCk0dhFdMvpcNmkIdCk7WQ4","WRuDh8kOuCous8ktW7G","vCkFtCoZW4Tyqxbg","W7xdM8k7c8oVWQLVyY53","WPK1W4VcMY4L","ccldTCk8","W5eUfW4","zSk9c8oXkW","fJuAW4lcU1NcKmoKW6Sf","uSkzgKVcVqO","W50okSkCW5ldQx4Ms8kQ","WRTSWP9J","W40Gad/cNW","WPZdOadcLSkvnsZdVCoeW4G","oMKcWPyx","WQlcPCk1W4v2WQG4W7DJtW","WQRcMCkQW6j9","smketmopW4TeuM1lW5m","WRRcRSoMma","W5myue0","bcbHWPNcHSkyl8kMuGm","F8oIWR4rW5y","EhtcOWuvWQtdOa","DhVcRri2","W5CJzCk4W4G","W5RdK8o0dSo1","iGbzWQtcP8kRfq","WQ4hW6NcLsy","AmkxwSosW4TyuIrpW40","B8ogomkEWP/cICoMgW","B8orW6ddUYi","WPKAxCoRWPu/lv8","ifKqWQSwW6VdMYxdPq","W6qnbHPmja","WPL6CCoTW5S","oueyWOi","vftcGI0TWOZdMYHUWR0","W5yYWRRdNa","dszdfCk8","WOHaWRhdKSojer0","WR05WOxdKK5UW5JdIvyN","B3dcI8otrW","W7RdO8ozWQNdISoSWOO","kGBdISkbzCkFWRDIW7X3","nuKcra","iCoKW55nfq","W5btW6hcKmkmsvddONNdSqBcVL4","BSkcfCoQja","fqzgWP3cQa","cGdcLdOsgI/dNmonW5u","jq5Smmkt","W64YBWJdQ2ldHmkMW5ZdJG","WO1LWRL5WOq","WQpcPHK","W4mKnthcNq","FaHDW5DfWRdcIMNdQSo+CSoqWRxdKq","WRdcS8oXFa","gISQWRRcIeRdUmo6WOrU","W7RdLSo+aCoK","nMetfSoA","W4/dGINcICo1z8omqSkg","W6NdTgpcO8oyW77dOe7cL8ko","WOCiuWJcQZ/cMSkXWPddGG","W7pdKmoOWPBdNW","WOv7WO1rWQu","WQeWs8oLqG","WPdcGCkkW69aWOaCW4PfBG","W7TIWP1hWRGXW70","WRWzfmkhrSotxmktW7NdVW","WOmwW7dcTdK","W5/cL8o+jrm","yCkpdmoQvmo1","W5ZdLfZcI8oL","WRSqW5dcSba","xatcLSoJAq","WR05W5BcMvKPW4/cKXnO","W4OqWP7dVJO","WPFcM8osbci","ECkrb2VcVeqdaaK","WQ4jWOBdKSoR","W5JcMIJcRmkD","p8oRvmopkSoMWPtcNK8","W4G+cqlcOCodW5e","W4WBpG","W7hdNSoJiCoLWRvLDJi","mWvjWRNcTSkWfmkbFce","lCoRxmogpq","fI3cItqk","FSoyWPKAW7pdIg0","WOCBfSk+","nCoNW5jncCkIW6dcMZ7cHW","WQWff8kb","WOvUDCoZW7iPWR0","W5ClWOhdHsNdRSooWOP2wa","eX5Rp8kR"];return(a10_0x6c47=function(){return W})()}a10_0x44482c.type=a10_0x52ff31("b1Cg",1425,1520,1420),a10_0x44482c[a10_0x52ff31("VRDh",1369,1315,1195)+"n"]=a10_0x1e41c3(1032,"]hLy",1129,1232)+"er",a10_0x44482c[a10_0x1e41c3(955,"Htz4",882,865)]=a10_0x1e41c3(1060,"ZUxF",868,957)+a10_0x1e41c3(1071,"%0pC",944,1187),a10_0x44482c[a10_0x52ff31("b1Cg",1543,1506,1538)]=20;const a10_0x2310e0={};a10_0x2310e0[a10_0x1e41c3(811,"2EC#",913,749)]=a10_0x1e41c3(829,"%0pC",759,1027),a10_0x2310e0[a10_0x1e41c3(1029,"zkhz",946,1025)+"n"]=a10_0x52ff31("QgGN",1346,1400,1288)+"me",a10_0x2310e0[a10_0x52ff31("2EC#",1462,1453,1624)]=200;const a10_0x408431={};a10_0x408431.name=a10_0x432af1,a10_0x408431[a10_0x52ff31("2l0N",1566,1377,1750)]=a10_0x6ac6b2,a10_0x408431[a10_0x52ff31("a3y@",1303,1117,1518)]=a10_0x44482c,a10_0x408431.company=a10_0x2310e0;const a10_0x2abf1f={};a10_0x2abf1f[a10_0x52ff31("2NR&",1385,1463,1266)]=[a10_0x1e41c3(807,"VRDh",835,961),a10_0x1e41c3(1108,"NFsP",1123,964)],a10_0x2abf1f[a10_0x52ff31(")dp0",1573,1418,1386)]=a10_0x408431,a10_0x2abf1f[a10_0x52ff31("vQeM",1562,1395,1384)+a10_0x1e41c3(950,"hf(O",1165,950)]=!1;export const CRM_SCHEMA=a10_0x2abf1f;const a10_0x2fd40a={};a10_0x2fd40a[a10_0x52ff31("fwV1",1360,1364,1436)]=a10_0x52ff31("yAaZ",1517,1599,1408),a10_0x2fd40a[a10_0x1e41c3(800,")dp0",620,899)+"n"]="Event name"+a10_0x52ff31("v1iD",1367,1220,1318)+a10_0x52ff31("o)yV",1478,1519,1370)+a10_0x1e41c3(1005,")dp0",845,1118)+a10_0x1e41c3(1057,"%cAw",895,926),a10_0x2fd40a[a10_0x1e41c3(1089,"yAaZ",1184,1250)]=a10_0x52ff31("2l0N",1411,1353,1330)+"9_.]+$",a10_0x2fd40a[a10_0x52ff31("mfpH",1654,1502,1471)]=1,a10_0x2fd40a[a10_0x52ff31("%7MR",1355,1288,1245)]=100;const a10_0x890972={};a10_0x890972[a10_0x52ff31("liJn",1297,1140,1379)]=a10_0x52ff31("2EC#",1282,1188,1379),a10_0x890972.description=a10_0x1e41c3(1063,"hf(O",891,1110)+"erties (ke"+a10_0x52ff31("sMow",1270,1063,1230)+a10_0x52ff31("p*Yh",1410,1582,1521);const a10_0x24ecbc={};function a10_0x1e41c3(W,c){return a10_0x381c(W-416,c)}a10_0x24ecbc[a10_0x52ff31("Htz4",1389,1522,1597)]=a10_0x1e41c3(858,"FQ0y",767,873),a10_0x24ecbc[a10_0x1e41c3(1074,"j0cV",1125,1231)+"n"]="ISO 8601 t"+a10_0x1e41c3(942,"DoaJ",1024,767)+a10_0x1e41c3(1093,"ZUxF",888,1105)+a10_0x1e41c3(923,"1Psw",929,1023)+a10_0x52ff31("sMow",1599,1526,1543),a10_0x24ecbc[a10_0x52ff31("p*Yh",1605,1664,1578)]="date-time";const a10_0x154c47={};a10_0x154c47[a10_0x1e41c3(983,"zrJt",922,844)]=a10_0x2fd40a,a10_0x154c47[a10_0x1e41c3(842,"UyOT",759,996)]=a10_0x890972,a10_0x154c47[a10_0x52ff31("sMow",1435,1533,1370)]=a10_0x24ecbc;const a10_0x1df9e0={};a10_0x1df9e0.required=[a10_0x52ff31("!ax6",1267,1142,1224)],a10_0x1df9e0[a10_0x52ff31("Mxmc",1533,1485,1454)]=a10_0x154c47,a10_0x1df9e0[a10_0x1e41c3(926,"Kz]b",750,1086)+a10_0x52ff31("o)yV",1447,1439,1592)]=!1;export const ANALYTICS_SCHEMA=a10_0x1df9e0;
|
|
1
|
+
!function(){const W=1351,e="dl[l",o=1448,c=199,d=1361,n="t[65",t=73,a="@HA$",r="H%kE",k=1487,f="hW7$",x="Ue*x",i=1418,u=917,s=a10_0x43fa();function m(W,e,o,c){return a10_0x2f1c(W- -453,c)}function _(W,e,o,c){return a10_0x2f1c(o-u,c)}for(;;)try{if(866423===-parseInt(_(0,0,W,"PPm^"))/1+parseInt(m(355,0,0,e))/2*(parseInt(_(0,0,o,"hW7$"))/3)+parseInt(_(0,0,1496,"jM48"))/4*(parseInt(m(c,0,0,"PPm^"))/5)+parseInt(_(0,0,d,"BMXo"))/6*(-parseInt(_(0,0,1606,n))/7)+-parseInt(m(t,0,0,a))/8+-parseInt(_(0,0,1544,r))/9*(parseInt(_(0,0,k,f))/10)+-parseInt(m(306,0,0,x))/11*(-parseInt(_(0,0,i,"k)DA"))/12))break;s.push(s.shift())}catch(W){s.push(s.shift())}}();const a10_0x16b9a6=function(){const W="y2$(",e=99,o=88,c=102,d=848,n={};function t(W,e,o){return a10_0x2f1c(o- -d,W)}n.BQsed=function(W,e){return W!==e},n.YHPcp=t(W,e,-o,-c);const a=n;let r=!0;return function(W,e){const o="dl[l",c=1108,d="@rfw";function n(W,e,o){return t(o,0,W-440)}const k={jczBs:function(W,e){return a[o=c,n=d,a10_0x2f1c(o-394,n)](W,e);var o,n}};if(a.YHPcp===n(356,0,"2ePX")){const c=r?function(){function c(W,e,o,c){return n(W- -232,0,c)}if(!k[c(-30,0,0,"t[65")](c(-130,0,0,o),(d=391,t="Jsdj",n(d-329,0,t))))return _0x5c3e55;if(e){const o=e[c(-169,0,0,"jqez")](W,arguments);return e=null,o}var d,t}:function(){};return r=!1,c}return _0x1495da}}();function a10_0x3454f2(W,e){return a10_0x2f1c(e- -213,W)}function a10_0x18905e(W,e,o,c){return a10_0x2f1c(o-281,c)}const a10_0x3b6620=a10_0x16b9a6(this,function(){const W=79,e=354,o="1(*u",c=98,d="Zd#z",n=239,t="t[65",a=801,r={};r[f(317,"q2gH",286,416)]=x(W,-11,-36,"e]24")+"+$";const k=r;function f(W,e){return a10_0x2f1c(W- -426,e)}function x(W,e,o,c){return a10_0x2f1c(e- -a,c)}return a10_0x3b6620[x(0,-e,0,"aeb(")]().search(f(259,o)+"+$")[f(c,d)]().constructor(a10_0x3b6620)[f(n,"i@MW")](k[x(0,9,0,t)])});a10_0x3b6620();import{ok,err}from"../shared/index.js";export function validateParams(W,e){const o=283,c="e]24",d=254,n="@HA$",t=186,a=383,r="jM48",k=31,f=222,x=379,i=527,u="@rfw",s="276p",m=86,_=148,S=494,C=607,R="pQIk",O=118,l=187,p="v5U8",b=57,h="K0^o",q="e]24",P=318,G=143,y="PPm^",Q="JQal",I=9,H="q2gH",J=19,g="Ue*x",K="i@MW",L="jM48",M=362,T=229,Z="n%GD",N=293,j="ok&)",v=192,A="Jsdj",B="1(*u",V="y@4W",U="dl[l",w=855,D=720,z={Pwnlj:function(W,e){return W===e},wLvPJ:E("7TL0",-157,-81,-20)+F(o,103,c,110),UcvOQ:"Parameters"+F(-79,-d,n,-344)+" non-null "+F(-108,-t,"H%kE",-a),fcEUp:function(W,e){return W in e},MptZS:function(W,e){return W(e)},xVLnb:"REQUIRED_F"+E(r,-k,-f,-x)+"NG",kvcET:E("q2gH",-158,-337,-155),waLkn:function(W,e,o,c){return W(e,o,c)},VovxY:function(W,e){return W===e},oinXw:function(W,e){return W(e)},FNnJu:E("Yhui",-i,-333,-209)+"ELD",AMtJK:function(W,e){return W(e)}};function F(W,e,o){return a10_0x2f1c(e- -D,o)}if("object"!=typeof e||z[F(0,116,u)](e,null)){const W={};return W.code=z[F(0,-221,"y2$(")],W[E(s,-m,-_,-29)]=z[E("Ue*x",-S,-416,-C)],err(W)}const X=e;function E(W,e,o){return a10_0x2f1c(o- -w,W)}for(const e of W[E(R,0,-O)])if(!z.fcEUp(e,X))return z[E("e(xY",0,-l)](err,{code:E(p,0,-396)+F(0,-172,"1(*u"),message:"Missing re"+F(0,b,h)+E(q,0,-82)+e,field:e,reason:z[E("skrK",0,-P)]});for(const[e,o]of Object[E("hyKb",0,-G)](W[E(y,0,-157)])){const c=X[e];if(void 0===c&&!W[E(Q,0,-387)][F(0,-I,H)](e)){if(z.kvcET===z[F(0,-J,"B^T]")])continue;{const W=_0x44c884(_0x104489+"["+_0x51d8b5+"]",_0x354e74[_0x4f6f41],_0x5d40de);if(!W.ok)return W}}const d=z.waLkn(validateField,e,c,o);if(!d.ok)return d}if(z[E(g,0,-60)](W[E(K,0,-184)+F(0,122,"H%kE")],!1)){const e=new Set(Object[E(L,0,-M)](W[E("e]24",0,-T)]));for(const W of Object[E(Z,0,-N)](X))if(!e[E(j,0,-124)](W))return z[F(0,-v,A)](err,{code:E(B,0,-179)+F(0,32,"K0^o"),message:F(0,118,V)+F(0,80,U)+W,field:W,reason:z[F(0,-127,"hW7$")]})}return z[F(0,33,"H%kE")](ok,void 0)}function validateField(W,e,o){const c="i@MW",d="7TL0",n=1095,t=976,a=921,r=10,k=132,f="n%GD",x=86,i="2ePX",u=12,s="q2gH",m="e(xY",_=799,S=767,C=827,R="jqez",O=228,l=212,p=201,b="[%pH",h="4OYe",q=910,P=955,G=223,y="7TL0",Q=862,I=1097,H="qLU^",J=605,g=655,K=676,L="B^T]",M=872,T=209,Z=311,N="Jsdj",j=933,v=869,A=344,B=491,V=320,U=1031,w=1039,D=1041,z=80,F="I!ow",X=123,E="q2gH",Y=643,$=449,WW=275,eW=480,oW="skrK",cW=772,dW=818,nW="I!ow",tW=1173,aW=1001,rW=1027,kW=954,fW=149,xW="H%kE",iW=803,uW=801,sW=989,mW=1081,_W=723,SW=756,CW=980,RW="ANnA",OW=898,lW=554,pW=333,bW="skrK",hW=860,qW=705,PW=558,GW=348,yW=428,QW="q2gH",IW="276p",HW=745,JW=651,gW=48,KW=24,LW=62,MW="276p",TW="Zd#z",ZW="udsG",NW=1009,jW="BMXo",vW=10,AW=124,BW=52,VW=179,UW=157,wW=964,DW=902,zW=67,FW=66,XW="K0^o",EW=176,YW="U]NZ",$W=884,We=994,ee="q2gH",oe=653,ce=743,de=487,ne="5R4p",te=813,ae=784,re=136,ke=16,fe=206,xe=68,ie="86RI",ue=828,se=762,me=907,_e=881,Se=813,Ce=94,Re=41,Oe=124,le="hyKb",pe=28,be=106,he=140,qe="hyKb",Pe=968,Ge=989,ye="^gF6",Qe=690,Ie=720,He=185,Je=22,ge="Yhui",Ke=113,Le=257,Me="hyKb",Te="H%kE",Ze=152,Ne=72,je=886,ve=825,Ae=1055,Be=751,Ve=717,Ue="^gF6",we="Yhui",De=1043,ze=830,Fe=49,Xe="y@4W",Ee=906,Ye=914,$e=338,Wo="86RI",eo=248,oo="7TL0",co=1238,no=868,to=43,ao=65,ro="y2$(",ko="ZZk0",fo=820,xo=714,io="aeb(",uo=13,so=195,mo=363,_o="pQIk",So=1001,Co=888,Ro=57,Oo=153,lo=1216,po=878,bo=790,ho=630,qo=79,Po=189,Go="nXu8",yo=123,Qo=55,Io=268,Ho="hyKb",Jo=46,go=119,Ko=607,Lo=20,Mo=18,To="@rfw",Zo="qLU^",No=819,jo=750,vo="aeb(",Ao=1044,Bo=954,Vo=899,Uo=842,wo=895,Do=791,zo="K0^o",Fo=743,Xo=642,Eo=478,Yo=327,$o=108,Wc=221,ec=77,oc="Zd#z",cc=1154,dc=983,nc=981,tc=785,ac="y2$(",rc=927,kc=928,fc="ANnA",xc=321,ic=342,uc="q2gH",sc=1003,mc=958,_c=729,Sc=824,Cc=929,Rc=397,Oc=447,lc=272,pc=227,bc="Yhui",hc=635,qc=845,Pc=860,Gc=872,yc="q2gH",Qc=548,Ic=737,Hc=648,Jc=626,gc=1034,Kc="4OYe",Lc=576,Mc=717,Tc=856,Zc=108,Nc=45,jc=161,vc=228,Ac="276p",Bc=172,Vc=183,Uc=1086,wc="Ue*x",Dc=263,zc=135,Fc="n%GD",Xc="@HA$",Ec=1031,Yc=973,$c=838,Wd=810,ed=982,od=202,cd=501,dd={IuwxX:ad(c,897,801,699)+"+$",uGtlT:function(W,e){return W(e)},vBqIU:ad(d,n,t,a)+td(23,r,-k,f),vitVB:"Parameters must be a"+td(x,214,94,i)+td(84,-u,-143,s),KKkhU:ad(m,_,638,783)+"TCH",dUyfZ:function(W,e){return W in e},ZndTO:function(W,e){return W(e)},FfupX:ad("qLU^",934,S,C)+"IELD_MISSING",pCdCR:function(W,e,o,c,d){return W(e,o,c,d)},lHwVG:function(W,e){return W===e},iAGYz:"string",uADhZ:function(W,e){return W!==e},LMBio:function(W,e){return W<e},jXNFc:function(W,e){return W!==e},DDijT:ad(R,506,699,837),mMLad:function(W,e){return W(e)},kUoqR:function(W,e){return W!==e},UTxAU:function(W,e){return W!==e},FskMF:td(436,306,O,"i@MW"),BKzhI:"HDtRu",yzubQ:td(l,225,p,b),UmIkY:ad(h,749,q,P)+td(240,G,420,d),NajYh:function(W,e){return W===e},gnqVS:ad(y,Q,868,819),OoZGT:function(W,e,o,c){return W(e,o,c)},CfquI:"YvSlj",NqzZw:ad("7TL0",I,937,992),XrJyC:"number",MkUrq:"integer",BKdMp:ad(H,J,g,K)+ad(L,M,686,794),eJcgZ:function(W,e){return W!==e},dSyDt:function(W,e){return W>e},BCpzs:td(T,Z,177,"Ue*x")+ad(N,j,v,786),CAYMg:function(W,e){return W!==e},zMsSm:function(W,e){return W===e},YvNhl:td(525,A,B,"ZZk0"),eDRaE:function(W,e){return W(e)},mGcRA:function(W,e){return W(e)}},nd=dd[td(367,V,454,"@rfw")](validateType,W,e,o.type,o[ad("ZZk0",U,w,D)]);if(!nd.ok)return nd;if(dd[td(-85,z,15,F)](o[td(X,150,23,"ANnA")],dd[ad(E,612,Y,$)])&&dd[td(82,WW,eW,oW)](typeof e,dd[ad("t[65",cW,dW,839)])){if(dd[ad(nW,tW,aW,rW)](o.minLength,void 0)&&dd.LMBio(e[ad("ok&)",kW,1049,1248)],o[td(288,319,fW,xW)]))return dd[ad("jM48",iW,802,uW)](err,{code:dd[ad("ANnA",D,sW,mW)],message:ad("y@4W",_W,SW,773)+W+" is too sh"+ad(i,795,CW,987)+o.minLength+")",field:W,reason:"STRING_TOO_SHORT"});if(dd[ad(RW,OW,851,645)](o[td(lW,348,pW,"q2gH")],void 0)&&e[ad(bW,hW,qW,PW)]>o[td(379,GW,yW,QW)])return dd[ad(IW,899,HW,JW)](dd[td(-93,51,-39,"dl[l")],dd[td(-gW,-KW,LW,MW)])?_0x354af9[td(-13,23,-128,TW)]()[ad(ZW,832,960,NW)](ECImRS[ad(jW,606,709,867)])[td(-207,-vW,AW,"e]24")]()[td(BW,-58,4,TW)+"r"](_0xfe68fc)[td(VW,114,UW,IW)](ad("Zd#z",wW,DW,968)+"+$"):dd.mMLad(err,{code:dd[td(-182,-66,-262,"7TL0")],message:"Field "+W+(td(-zW,FW,-z,XW)+td(EW,18,-125,YW))+o[ad("I!ow",825,$W,We)]+")",field:W,reason:ad(ee,oe,765,ce)+td(322,310,de,ne)});if(dd[ad(ZW,te,ae,606)](o.pattern,void 0)){if(dd[td(296,re,ke,f)](dd[td(fe,xe,-X,"y2$(")],dd[ad(ie,647,856,ue)]))return ECImRS[ad(c,828,se,me)](_0xad670,{code:ECImRS.vBqIU,message:ECImRS[ad("ZZk0",M,_e,Se)]});if(!new RegExp(o.pattern)[td(Ce,-Re,Oe,le)](e)){if(dd[td(-pe,be,he,qe)]===dd[ad("B^T]",1175,Pe,Ge)])return dd[ad(ye,Qe,777,Ie)](_0x26bb7e,{code:"VALIDATION"+td(-He,Je,-50,ge),message:td(299,323,354,"z(OI")+_0x1b1637+(td(317,Ke,Le,Me)+"n array"),field:_0x3d2c0a,reason:dd[ad("q2gH",777,879,1012)]});{const e={};return e.code=td(143,38,-78,Te)+"_FAILED",e[td(-Ze,-Ne,-5,"@rfw")]=ad("hW7$",je,687,ve)+W+(ad("dl[l",1191,1030,Ae)+ad(ye,727,Be,Ve)+"ern: ")+o[ad(Ue,948,959,954)],e[ad(we,De,1054,1063)]=W,e[ad("k)DA",782,947,ze)]=dd[td(245,169,Fe,"pQIk")],err(e)}}}if(dd[ad(Xe,Ee,753,Ye)](o[td(128,$e,517,Wo)],void 0)){if(!dd[td(313,eo,79,"e(xY")](dd[ad(oo,co,1036,no)],td(-to,82,-ao,ro)))return dd.uGtlT(_0x5183fe,{code:dd[td(277,264,294,"276p")],message:ad(ZW,624,bo,861)+_0x19635c+(ad("dl[l",611,ho,671)+td(145,-22,138,Xe)),field:_0x518271,reason:"TYPE_MISMATCH"});{const d=dd[ad(ko,752,680,820)](validateFormat,W,e,o[ad(c,1131,934,fo)]);if(!d.ok)return dd[ad("U]NZ",775,xo,516)](dd[ad(io,449,oe,839)],dd[td(uo,so,mo,_o)])?d:dd.uGtlT(_0x551afa,{code:ad("jM48",So,904,Co)+td(109,292,451,ko),message:ad("k)DA",792,1006,$W)+_0x2caf8f+" must be a"+td(18,Ro,-Oo,io),field:_0x3e7558,reason:dd[ad("JQal",lo,1055,po)]})}}}if((dd[td(-qo,128,Po,Go)](o[td(188,yo,159,"@HA$")],dd[td(28,Qo,Io,Ho)])||o[td(Qo,-Jo,go,"Zd#z")]===dd[ad("y@4W",Ko,732,612)])&&typeof e===td(-115,-Lo,-Mo,To)){if(dd.jXNFc(o[ad(Zo,No,735,jo)],void 0)&&e<o[ad(vo,Ao,932,Bo)]){const e={};return e[ad(L,1053,Vo,Uo)]=dd.vBqIU,e.message=ad(XW,864,wo,Do)+W+" is below "+ad(zo,Fo,Xo,Eo)+td(224,203,Yo,b)+o[td($o,Wc,43,"n%GD")]+")",e.field=W,e[td(68,ec,252,oc)]=dd.BKdMp,err(e)}if(dd[ad("I!ow",cc,dc,1066)](o[ad(Ho,nc,963,tc)],void 0)&&dd.dSyDt(e,o[ad(ac,741,rc,kc)]))return dd.ZndTO(err,{code:dd[ad(fc,1156,989,946)],message:td(xc,354,276,fc)+W+(td(334,249,ic,y)+ad(uc,sc,908,mc)+ad("BMXo",_c,Sc,Cc))+o[td(Rc,260,Oc,"hyKb")]+")",field:W,reason:dd[td(lc,137,58,N)]})}if(dd[td(265,pc,399,bc)](o[td(118,75,166,"BMXo")],void 0))if(dd[ad("dl[l",hc,qc,658)](dd.YvNhl,ad(xW,827,Pc,Gc))){if(!ECImRS[ad(yc,Qc,Ic,805)](_0x306217,_0xa9912e))return ECImRS[ad("e(xY",656,Hc,Jc)](_0x5be3fe,{code:ECImRS[ad("qLU^",gc,949,772)],message:ad(Kc,Lc,727,Do)+ad(YW,754,Mc,Tc)+td(-Zc,-11,74,"hyKb")+_0x11e5b8,field:_0x5d997f,reason:ECImRS.FfupX})}else if(!o.enum[td(Nc,jc,370,Xe)](e))return dd[td(178,103,vc,Ac)](err,{code:dd[td(25,Bc,Vc,Wo)],message:ad("k)DA",Uc,1006,1039)+W+(ad(wc,853,1043,976)+"ne of: ")+o[td(Dc,zc,21,"qLU^")][td(53,-1,-to,Fc)](", "),field:W,reason:ad(Xc,1135,Ec,Yc)+ad("hyKb",$c,Wd,ed)});function td(W,e,o,c){return a10_0x2f1c(e- -cd,c)}function ad(W,e,o){return a10_0x2f1c(o-od,W)}return dd[td(0,31,0,"7TL0")](ok,void 0)}function a10_0x2f1c(W,e){W-=428;const o=a10_0x43fa();let c=o[W];if(void 0===a10_0x2f1c.gjXzIx){var d=function(W){let e="",o="",c=e+d,n=-1!==(""+function(){return 0}).indexOf("\n");for(let o,d,t=0,a=0;d=W.charAt(a++);~d&&(o=t%4?64*o+d:d,t++%4)?e+=n||c.charCodeAt(a+10)-10!=0?String.fromCharCode(255&o>>(-2*t&6)):t:0)d="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(d);for(let W=0,c=e.length;W<c;W++)o+="%"+("00"+e.charCodeAt(W).toString(16)).slice(-2);return decodeURIComponent(o)};const W=function(W,e){let o,c,n=[],t=0,a="";for(W=d(W),c=0;c<256;c++)n[c]=c;for(c=0;c<256;c++)t=(t+n[c]+e.charCodeAt(c%e.length))%256,o=n[c],n[c]=n[t],n[t]=o;c=0,t=0;for(let e=0;e<W.length;e++)c=(c+1)%256,t=(t+n[c])%256,o=n[c],n[c]=n[t],n[t]=o,a+=String.fromCharCode(W.charCodeAt(e)^n[(n[c]+n[t])%256]);return a};a10_0x2f1c.lFBHAR=W,a10_0x2f1c.Pkmbyn={},a10_0x2f1c.gjXzIx=!0}const n=W+o[0],t=a10_0x2f1c.Pkmbyn[n];if(t)c=t;else{if(void 0===a10_0x2f1c.HUKhxf){const W=function(W){this.gazOqG=W,this.jyycJa=[1,0,0],this.yxKINc=function(){return"newState"},this.OTvFPR="\\w+ *\\(\\) *{\\w+ *",this.pdvqJs="['|\"].+['|\"];? *}"};W.prototype.hrSkrU=function(){const W=new RegExp(this.OTvFPR+this.pdvqJs).test(this.yxKINc.toString())?--this.jyycJa[1]:--this.jyycJa[0];return this.gPnFBi(W)},W.prototype.gPnFBi=function(W){return Boolean(~W)?this.srcmLy(this.gazOqG):W},W.prototype.srcmLy=function(W){for(let W=0,e=this.jyycJa.length;W<e;W++)this.jyycJa.push(Math.round(Math.random())),e=this.jyycJa.length;return W(this.jyycJa[0])},-1===(""+function(){return 0}).indexOf("\n")&&new W(a10_0x2f1c).hrSkrU(),a10_0x2f1c.HUKhxf=!0}c=a10_0x2f1c.lFBHAR(c,e),a10_0x2f1c.Pkmbyn[n]=c}return c}function validateType(W,e,o,c){const d=1643,n=1569,t=1779,a=119,r="hyKb",k=209,f=85,x=103,i=271,u=136,s=248,m="k)DA",_=1495,S="lKR4",C=166,R=69,O="z(OI",l=266,p="qLU^",b=1752,h=1648,q=58,P="JQal",G=61,y=1766,Q=96,I=171,H="Zd#z",J="e(xY",g=1544,K="y@4W",L="B^T]",M="t[65",T=1535,Z="hyKb",N=1632,j="skrK",v="pQIk",A=1693,B="ANnA",V="Jsdj",U=73,w=50,D=1543,z="e]24",F="ok&)",X=76,E=1435,Y=95,$="nXu8",WW=184,eW=1572,oW="igT@",cW=274,dW="Jsdj",nW=53,tW=3,aW=280,rW=240,kW=1771,fW="86RI",xW="JQal",iW=65,uW=108,sW=296,mW="Jsdj",_W="i@MW",SW="igT@",CW="dl[l",RW="n%GD",OW="hW7$",lW=1455,pW=1584,bW="e(xY",hW=199,qW=66,PW="276p",GW=1780,yW=1451,QW=7,IW="4OYe",HW="igT@",JW=82,gW=1391,KW="2ePX",LW=1491,MW="pQIk",TW="y2$(",ZW=126,NW="k)DA",jW="I!ow",vW=299,AW=175,BW=1465,VW=1499,UW=1411,wW=103,DW="q2gH",zW="U]NZ",FW=5,XW="H%kE",EW=1695,YW=1644;function $W(W,e,o){return a10_0x2f1c(o-949,e)}const We={CTNfs:function(W,e){return W(e)},HCzgj:"VALIDATION"+$W(0,"ok&)",1669),ytwuA:function(W,e){return W(e)},eagOe:$W(0,"nXu8",d)+$W(0,"pQIk",n),CDHOg:function(W,e,o,c){return W(e,o,c)},eKkYV:$W(0,"[%pH",t)+ee(19,"e(xY",-a,43),Jween:ee(-249,r,-k,-f),dgQml:function(W,e){return W(e)},jnapQ:"TYPE_MISMA"+$W(0,"@rfw",1666),XaRVX:ee(4,"276p",-27,94),wEKaK:function(W,e){return W(e)},iBhpF:ee(x,"4OYe",i,u),XSfad:function(W,e){return W!==e},QHSZo:function(W,e){return W===e},GJpOQ:"DMavR",COecT:function(W,e){return W(e)},QyPvH:"boolean",cJmQn:function(W,e){return W!==e},SLMqX:ee(278,"BMXo",s,245),eZyBL:"array",BUIfz:function(W,e){return W!==e},xcXAr:$W(0,m,_),iERkY:function(W,e){return W<e},GeTNj:$W(0,S,1703),APVtw:ee(-C,"7TL0",134,-R),zZuuq:"xVlDp",bZzfs:ee(-96,O,-l,-89),AlGpA:function(W,e){return W!==e},cdSZB:function(W,e){return W===e},xbWhB:"MsNQt"};function ee(W,e,o,c){return a10_0x2f1c(c- -552,e)}switch(o){case We[ee(0,"y@4W",0,78)]:if(typeof e!==We[$W(0,p,1515)])return We[$W(0,"udsG",b)](err,{code:We[ee(0,"dl[l",0,-q)],message:ee(0,P,0,G)+W+" must be a"+$W(0,"pQIk",y),field:W,reason:We[$W(0,"v5U8",h)]});break;case We[ee(0,S,0,Q)]:if(typeof e!==ee(0,"v5U8",0,-44)||!Number[ee(0,"^gF6",0,33)](e))return We.wEKaK(err,{code:We.HCzgj,message:"Field "+W+(ee(0,"Ue*x",0,123)+ee(0,"ANnA",0,I)),field:W,reason:ee(0,H,0,177)+$W(0,J,g)});break;case We.iBhpF:if(We.XSfad(typeof e,ee(0,"z(OI",0,135))||!Number.isInteger(e)){if(We[$W(0,K,1581)](We[$W(0,L,1489)],We[ee(0,"k)DA",0,-23)]))return We[ee(0,"Zd#z",0,217)](err,{code:We[$W(0,M,T)],message:ee(0,"7TL0",0,188)+W+" must be a"+$W(0,Z,1641),field:W,reason:We[$W(0,"t[65",N)]});{const W={};return W.code="VALIDATION"+$W(0,j,1487),W[ee(0,S,0,104)]=$W(0,v,A)+_0x53e772+($W(0,B,1429)+ee(0,V,0,U)+ee(0,v,0,w))+_0x511eb9.minimum+")",W[$W(0,"86RI",D)]=_0x4d1357,W[$W(0,z,1494)]=ee(0,F,0,134)+"_SMALL",OVctrt[$W(0,"dl[l",1654)](_0x518f26,W)}}break;case We.QyPvH:if(typeof e!==ee(0,"nXu8",0,298)){if(We[ee(0,P,0,-X)]($W(0,"Yhui",E),We.SLMqX)){const e={};return e[ee(0,"igT@",0,Y)]=We.HCzgj,e[$W(0,$,1719)]="Field "+W+" must be a"+ee(0,"skrK",0,WW),e[$W(0,"K0^o",eW)]=W,e[ee(0,oW,0,cW)]=ee(0,dW,0,32)+$W(0,S,1558),err(e)}{const W={};return W[ee(0,"aeb(",0,nW)]=OVctrt.HCzgj,W[$W(0,"Zd#z",1612)]=ee(0,"lKR4",0,tW)+ee(0,"1(*u",0,aW)+_0x139d7e,W[ee(0,z,0,rW)]=_0x16bbc5,W[ee(0,Z,0,242)]=$W(0,"Jsdj",kW)+"ELD",_0x4b3cd4(W)}}break;case We.eZyBL:if(!Array[ee(0,fW,0,161)](e))return We[$W(0,"BMXo",1732)](err,{code:We[ee(0,"BMXo",0,230)],message:$W(0,"PPm^",1523)+W+(ee(0,xW,0,iW)+ee(0,"udsG",0,uW)),field:W,reason:$W(0,"BMXo",1561)+ee(0,dW,0,sW)});if(We[$W(0,"@rfw",1510)](c,void 0))if(We[ee(0,mW,0,79)]($W(0,_W,1453),We[ee(0,SW,0,220)]))for(let o=0;We[ee(0,CW,0,190)](o,e[$W(0,RW,1751)]);o++){if(We[$W(0,"Zd#z",1623)](We[$W(0,OW,lW)],We[$W(0,"t[65",pW)]))return OVctrt[ee(0,bW,0,hW)](_0x298b63,{code:OVctrt[ee(0,"U]NZ",0,qW)],message:$W(0,PW,1490)+_0x4fc133+" is too lo"+$W(0,M,GW)+_0x35228b[ee(0,"nXu8",0,101)]+")",field:_0x1f0367,reason:OVctrt.eagOe});{const d=We.CDHOg(validateField,W+"["+o+"]",e[o],c);if(!d.ok){if("UJRuM"!==We[$W(0,"udsG",yW)])return d;new _0x46cac9(_0x8e19d1),_0x1e4914=!0}}}else{const W=OVctrt[ee(0,"B^T]",0,QW)](_0x1a86ca,_0x3a1d95,_0x4b99d6,_0x51665c[$W(0,IW,1470)]);if(!W.ok)return W}break;case We[ee(0,HW,0,-107)]:if(We[ee(0,"k)DA",0,JW)](typeof e,We[$W(0,"skrK",gW)])||We.cdSZB(e,null)||Array[$W(0,"B^T]",1782)](e))return We[$W(0,KW,LW)](err,{code:We.HCzgj,message:ee(0,MW,0,192)+W+($W(0,TW,1422)+ee(0,"4OYe",0,ZW)),field:W,reason:"TYPE_MISMA"+ee(0,NW,0,28)});break;case ee(0,jW,0,vW):if(null!==e){if(!We[ee(0,"4OYe",0,AW)](We[$W(0,"i@MW",BW)],ee(0,P,0,246)))return We[ee(0,XW,0,51)](err,{code:We[$W(0,"7TL0",1712)],message:$W(0,"U]NZ",1711)+W+(ee(0,"q2gH",0,-54)+$W(0,TW,EW)),field:W,reason:We[$W(0,"5R4p",YW)]});if(!_0x1dd316.enum.includes(_0x11f638))return OVctrt[$W(0,"ZZk0",VW)](_0x59a4b2,{code:"VALIDATION"+$W(0,"Ue*x",UW),message:"Field "+_0x315586+" must be o"+ee(0,"ZZk0",0,-wW)+_0x501625[$W(0,DW,1577)][ee(0,M,0,R)](", "),field:_0x24b187,reason:OVctrt[ee(0,zW,0,FW)]})}}return We.dgQml(ok,void 0)}function a10_0x43fa(){const W=["rSooWP3cJ8k5","WQ00uCobwa","i3ijs8kPqCoEA8kGWQm","W43dJCk8hSkpcW","imkhW5LKWPO","WRNdPCkLW7VdQ8kW","WRNdPCo3bWG","W6XLl1VdOg4WBCo3W4pdMx0","WQ0MsqZcGW","W7OjwSkXcSkDWRG","W6xcUrVcJCktk8kQACkGzq","W6BcKMVcSK4","DJvcAsu","o8obW5xdISoLW73dGSopWQne","W6tdISoAWRa","wSoZE8onWPO","yCkkW6VdOq","wmkJW6ZdHmo3W5RdItlcUmow","mmomiXJdH8kkza","W5SzFXdcQ0yNrmk2","hmo4E8kbWO7dQbj5lhS","zIhdHW0klv/cM0i","pJpdMmkpWOW","WRHGWQXKbCkBWOxdM3P4","FIFdPmovBHldGW","ESoZE8onWPRcPW","fSo7W7ZdRq","W4qvCc/cOuy","xmo6WRFcK8odW53dGLZcPua","W6G8wSkEc8onWPJcLmoNW70","pmo9v3uVW7pcOKvmW70","fSkfW4iKdW7dKCoDWO/dOq","W7ZcLWxdTwPhy8kCW6C","WP/dGCkgWRyB","ASkZbuddNmoYEq","ASoMW6FdRG4","W5zUW4CZ","hGFdKSkGWRq","FSoPWR/dISkn","imkvh8kMW7JcTaBcRcJdKa","WQn+W6nlW5Cs","WPZdUaOgWPj5W7PDW4yG","vCo5W63dU8ouWO/dV8o+W4XK","wZRdHJekmuZcHK85","W6OWW5hcPb0NtGiVWPi","W6pcJs4KFmkNxCkHWOzh","vmoxWOZdGmkw","ACoTW6xdMY92kHS1yq","W6xcVHWcWOCl","WRLTWQ8","W7/dPN/dGCo9WPHdWPf7","W5VcRcjQBxtdJq","xCo6WRxcIW","W4WKW6VcTNu","WRq/au/dUW","WOS4q8kMW70","WQpdHuaqfCoL","W6G1qmkidmonWPtcNSkZWRm","iXxdJ8k/WR/cVIy","dr/dKCk8WR/cTZRdGW9b","ydldVCkfW60","WRddHGPyWODw","qGfWnSkurmoLEmk1WR4","WRhdQe/dK8otE8kbASk7umkEW78","E8okW6FdSqG","WPtcK8owaCkBmCkybSkjWPC","dhtdMmk9","W70WW4/cTZq","imo3W67dH8oX","W73dMSoeWRXuoc7dIc4G","W7VdHKddLmoI","W5GyW4tcSGS","WQJcHZGNBCk2xmkNWPyi","W7pcKrjbWQfXWQfd","W5qQAZRcVq","WPRcPmoIemkl","yc9Vc8kIBmoFvG","W6bYW47cGG","ECo4W7RdImkysx0","W6hdS3xdPmo2WPe","vYzncSkz","p8ogWQ3dU8oEWOtcVmoAb8kShG","WO7dTSoYbaRcIhJcPxNdOq","zcLztsu","WR/cKsyX","WQtcR8o1j8k2fCkHiCkTWRK","WP4qdK7dMSo3pZKYmG","WORdVSkP","WRGuBSkgW5xcGmojW6BdNSkw","gmklWRCB","zCo4WQVdKSkxatJcOa","kSosW5NdGCoSW6RdMq","u8o4DmoeWP3dSW","WP9DWOrfomkPWRJcQbXv","aSo1W6ZdKSoY","wCoED0SeWP7cIxmHW50","h8kAWRygWOdcSa","WO0rg1ldH8oSntm","WOpcPCoOmmkLh8kLDCkQWRC","WQTJWO5Cbq","B8koW6JcPmkx","W6VcGdCNoCkTr8kYWOml","WOn2W5SKW4RcMGDku3y","cmkWWOxcNCoira","bSoGW6RdOCooW4G","WPW+b3BdGa","qrVdTCkgW5u","wmoYWOddOmkQ","amkxga","W4xdHvzCe8kGWRtcH8oaW5m","iaxdKCkUWRVcQW","WQu5tCk3hCkdWPhcJ8o7","z8oqW4pdNcG","xmktcxpdOSoF","lNZdICk0eCkZ","W50+W4xcO0G","W6FcUH8a","DSoqjqFdJ8kq","W73dPw3dQmo7WOi","amkkW75p","vq7dTSoOud7dQsW","WO5EWQ1igq","DSkRW7tdNG","WOaBt8kCeG","a8kJW7GhnwpdTSo7WQ/dGG","W40Lbw3dNmoUhG","FCkUW5hcHSkB","WRldQNldVSoSW5zgWOaZWQO","W5rxW5GhW7q","W4VdH8k7fW","W47cVSkMW57dNCohBmkj","pSk6W718WOC","W5yNW5dcSWW9","WRGCDZ/cHq","i8kQW6mDnthdTG","l3ddUmkwhW","WOVdLHXtWRa","WOaGt8kTW7tcSW","uSooW5FdSrfAhG","WQOavmkWoW","W77dRSktmmk3jJu","aaVcUgxcHq","WQdcTJ/cUSkVW4yxWQr2WRjSW6SV","W5ZcSsm8ka","bd/cLx/cUSoTESkZuHW","WQWZsalcLG","WRvJW75wW5muW5zWbWi","W5VdHwRdQSoC","gY3dNcxcSSoOiSoVgW","imk/W6uapIq","W69VW4/dHSoswG","W78dW4xcLf7dHdtcKse7","W7ulW4/cK13dLJ4","WR/cHWuGA8kTr8kJ","W4rPW47dMmoAqmoiW6CRhq","qCkhmWPjWOZdM1LkW5z3WPJcSa","DmoVWRpdL8kkgJlcQG","WOjhWOLYpq","WRJdHSkWW5JdNG","omkqiCk6W6y","xctcMCoGqCkIW7TjeMJdJmkMiq","ymopW7xdQHW","WQ3dISorlYlcR0O","zcRdGYqmnW","W7BdKN7dQ8oc","W5JcRIjZzMe","W4iuW7lcUHO","W6ueW7/cNtqqFG","xqNdPqGRaMZcPMue","rmkknh3dVW","qZBdUCkaW6xdPG","W6KKh8k7W5O","BWFdKSkQW6i","WOCOqCksf8kdWPFcL8kZWQ0","uWtdHmoVttK","WRZdMCk0W4tdQq","aSk9WQdcJCkQWRZdMw0","WQxdQ8kJW4v3hCkg","z8k4DCkUW4P7jvVdP1u","vmojWPtdGCkn","hSkUg8k5W4u","WOWCxmkrla","WP7dUmo+AXxcH1ZdGKVcIG","m8kseCkKW7pdOW","m8kRWOpcKCocqrvkWObv","nmkCWO4wWQ0","eahcL1tcIq","EMbveCkKymowvmki","qmkedh3dIq","WQewAWBcGa","ltRdKCkDWRa","W4RdJCkRcG","W4hdK1xdHmowWRf7WRfCWOS","WRJdJSkqWR4","WPldPSoUeWBcIglcTwNdQa","WORdLmoAiYe","WRddMSozW7vniIZdIgOI","B8kRW7ZdMmoYWOJdJti","W6vOW4uAW7G","ws3cMCoRrCoWWR5Af0NdRW","WOmZW487W47dKGrbbNO","W4VcMmk2W7H8hCkBjq","smo/BCov","W4lcTbRcImkdyG","F8kEDCkHW7y","WQFdJr5g","rqtdLSo/ud7dTZ9vvq","WRNcJtCNDSkQ","jCo6WR3cNmkVW4ldQrpcTmonsSoU","WQVdJ8ki","x8ohWQ7cSCkK","l8k1W6D4WQq","W6XqW684W5W","WRL3WRDVfCkbWOldL3fW","y8kQr8kKW4WYiv8","W5RcS1/cUM0","oftdUmkmmmobWOjJlwq","aSkjW61LWPlcLG","naxdPSkUWP8","zY7dT8oryWpdMajYBa","ohtdLCk1emo9WRGCaua","CmorWR0XW4lcH8khjetcLWJcH8oy","lLVdGSksaa","WQn4W7rkW5i","WPtcICoo","FSkHW6ddNCo6WPtdKq","nSkMW7yapa","W73cKK/cUgrs","W7X5n0tdV39AaCk0WOm","r8kGW6NdUCou","WOZcPmoPWRRdKSk7lG","ECorBuO","sbZdPYCC","ybVdJSknW4q","DY9ygG","ECkRW6VdJmoUWPBdNcxdVmoq","lSkLWR4hWQC","omkTWOW","mSkgWQa","W7JcK1/cN3q","aCkEb8k8","WPBdUJTUWRD1WP5uWRTm","WRKDd0VdISk+","tmkdWReCWPRdT8kZy8oqW7K","DJRdVCkEW6lcRG","W7VcSwlcHh0","W58zh1tdMSk+mJjZpW","pqNcHMRcTq","WRtdHKi","t8oZgctdQq","W7JcN0ZcSW","WRRcMuS","W7BdMSopWRLD","dCokCL0","WObhWOLdj8k5WQBcPbrC","urpdISoSrYxdSYjzsq","phRcNhuwb1FcTxaz","W7FdQxldOa","W7FcOIDFya","p8kmeCkTW7K","WQ97WQ5mma","jmkZj8ksW7G","vmklW4hdQCoeWRFdOqxcJ8oT","WR7dOmkhW6FdJG","W5pcOhpcQxa","WQxdJCokkW","W7tdVmkQomkU","WQ9TWPDqoq","W54NW43cTWO8sH8JWO4","WOOPW6hcV2lcSXtcOrns","DmoAD0ldI8okzmodnmoe","eCoXW6VdQ8osW4BdRCoVWOvK","WRivrSkOfq","mmkfW7T9","nSk9W7iBkq","AYRdSCkoW6tcTa","W5uFDtK","pSkKWRRcQCo1","WPddRweukW","tYNdKCoTBW","WPhdLvuz","WRxdQcVcKmkGb8kCFq","W5tcOJvkBxVdHfff","WOnIW7PRW7a","AmkrW6RcPCkpWPm","c8kGWPVcJmomur4","W5hcTdBcTCkO","uqxdKrKB","raZdHmo1tG","kSoaW6L7WOtdL8oj","WQ8zA8kl","hmkvf8kKW6lcPW3dVW","WQBcJsuNEmkJta","xqb9qG","WQC0FHJcTZ4","qSodW5FdLZ8","WRjIWQz4dCkj","WO3cUSoYhSkx","W5ivyJ/cVeeWrmk3nq","rCoshGhdTW","WRu1EWpcOd8ErSo+W4y","W7LHW4NdN8owxmob","WRntW6bVW6m","WPRcOauoDG","vCo5W63dU8ouWO/dV8o+W4XQ","WQZdRmkUW4v/gCkwfSk4WR8","W5NdJgZdPCon","W6CGW5ldICozs8omWRm","yCo0WQ7dSCk8","DCojmGtdMG","lmoAW5ldRmoy","xSoUWQhcQ8kgWPVdIf3cVG","W7JcNKtcRvy","W4j/W4O+W4RdKWPbeNS","W5lcHCokWQiqCCoPDSoCW5G","W4FcJJ8NWRyXfmkIWPrZ","uSoVC8odWPVdTq","W6bUW4NdJSous8oD","WQddGr3dQJawkmoNWQjbWP/cIuy","zINdKq0klv/cM0i","DKtcJCo+W6FdQ3pcRcPkW6nrW4u","aSooWQ0bWPRcSSk2y8kc","W5BdMSopWRLDBq","W6RcLX9prLldVhfIWR4","qXDSvZm","xSooltddMq","ymkVifC","W7tcRXdcLmkcmmkXBSkKEG","WOq7q8k/W4a","W6pdGh56mSoTaSoTW4Lo","Amk2j3FdUG","s8kpW4hdPmoFWRVdVb/cK8oQ","WO0UumkvdmonWOBcICo8WQ0","oSkLWQ1j","WOSmE8kDcW","W7pdV27dOmoTWPSeW41+WQu","AdRdR8kFW6dcOCoM","W5LbW6NdV8o2FmoHWPGumq","W5RcSWDKwW","WPxdHeOsfa","W7VdQwtdOCoTWPjbWPy","cCkaWRaDWOFcSSkI","WQXIW5buW4qhW5S","dchdJ8kPWRO","WOOffCk2WQpcLs0TW5FdMq","bsVcIhNcUSo7na","gJpdTa","WRNcJSojjYpcR0ldKuBdJW","c8kSWOBcS8oiwbWEWO4","W5BcNtmSWR8MdW","WQRcKtSXD8kWcCkGWOCu","W4ZdGCk8emkwfHW","W4xdGLare8kGWQO","xSofW5FdRb5x","W456W5y+W5pdJWG","o8k4W7qojW","W4TvW7tdJCoj","W6KmW5FcL3y","WP/cSqyrrSkjymkxWQ8M","EsLsfSk9CmoC","W6hcUGe","WRi+BqFcTsi","W5ZcIdzjW5mMhSkKW7CC","WQBdHHHiWPPrWQDZWP9I","qCodW5NdSq4","WPOGW5hcUXqWwWu","ySoAjH/dH8kwzSkj","W61DW4eNW5a","yc3dQmkfW6tcTCkJWO3dPmk3","s8oHW7pdLdK/","DmkHmgJdVa","WQeDz8kqiq","W6BdPuNdOSor","vSowmGBdISoe","WO3dQCkHW6tdOmo+","W5z3W4i","WRBdOCoodXO","nSk4W6q","WO7cQ8oShCkS","lCoTW67dMZH6pHX8yW","WRNcVSoXmCkf","W4/dTCoRWPX1caC","sGxdNqSK","iSkcWOxcSSoF","WRW9rSkp","vCo+pSohWPhdTqXXldi","ESk4DCk5W4CPoW","n8kfW6L7WPxdNG","r8kSWQRcSmksWP3cQCkOWP9mbXaGWRm","W4XXW6a/W5i","aCkpWRWgWOpcOSk8","mYpcMwhcU8kP","rColW6ZdNZC","W4ubnmkWW6i","CX3dRCkLW5q","ESk6mvddVW","WOJdJveFgCoLWQJcICodWOC","eCkyW50miq","WOJcPZm3tq","W5tcPJ51AxldHG","WRJcNcq9D8kJ","W44tsr3cVa","tqxcN8k8","w8ojW5RdSrLEdIytqa","mmkzW7HS","W5ykW4NcGJ8","W6hdHSodWQDCkwpcJM8O","W4uzdSo4WQBcLJeVWOhdMq","wI3cNSoGr8kHW7Gpe2RdI8kch3C","ESoCWPBdH8oBW4pcNXJdTKa","vSofWRRcGmk5","WORdObfmWOi","WOhdTYvnWPS","WOLlWPrjomkLWRVdSfvE","iXNdKSkLWRpcRc4","cSoqW7FcUSoiW5e","WPpdRLq1ja","W58/W7ZcV3/dSapdRGqD","WOlcGGiwvG","cuNcJCkYcx7cRgixeW","B8oxx8o1WR3dJW","rWJdGmoWrG","smoBWPVdRSkYnHK","hSklWQuCWOhcUq","i8o7W67dSmo5","iuBdO8o4qCkHW70lqe4","WONdPIjaWRO","WRihjhBdMG"];return(a10_0x43fa=function(){return W})()}function validateFormat(W,e,o){const c="7TL0",d=978,n=898,t=850,a=1189,r=906,k=641,f=748,x="hW7$",i=571,u="e]24",s=1099,m=1130,_=909,S=955,C="udsG",R="@rfw",O=1058,l="y2$(",p=1304,b=1312,h=1038,q=1104,P="Zd#z",G=884,y="z(OI",Q=968,I="PPm^",H="y@4W",J="[%pH",g=765,K="5R4p",L=1020,M="nXu8",T=1116,Z=941,N=1225,j="Ue*x",v=1294,A=1210,B=951,V="Yhui",U="ANnA",w=983,D=816,z="[%pH",F=1125,X=743,E="BMXo",Y={nHtqM:function(W,e,o){return W(e,o)},watZR:eW(1024,791,"aeb(",902)+eW(797,1165,c,d),YNJdx:WW(n,t,"hW7$",819)+eW(1331,a,"z(OI",1260),GrqcL:eW(892,r,"276p",900),zuZbA:WW(769,556,"k)DA",k),Foysr:WW(f,715,x,i),IjTBO:"date-time",UiIQO:"ipv4",NFopn:"ipv6",MPTjG:function(W,e){return W===e},cpJbS:WW(1079,930,"[%pH",886),yFHAG:function(W,e){return W(e)},sjHrO:eW(1088,1214,u,1059)+eW(1200,s,"v5U8",m)};let $=!1;function WW(W,e,o){return a10_0x2f1c(W-311,o)}switch(o){case Y[eW(_,900,"skrK",907)]:$=/^[^\s@]+@[^\s@]+\.[^\s@]+$/[WW(S,0,C)](e);break;case Y[eW(1093,1205,R,O)]:try{new URL(e),$=!0}catch{$=!1}break;case eW(1157,1145,l,p):$=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e);break;case Y.Foysr:$=/^\d{4}-\d{2}-\d{2}$/[eW(b,h,"dl[l",1224)](e);break;case Y[eW(q,1176,P,1258)]:$=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?$/[WW(G,0,y)](e);break;case Y[WW(Q,0,I)]:$=/^(\d{1,3}\.){3}\d{1,3}$/[WW(922,0,H)](e)&&e.split(".")[WW(956,0,J)](W=>{const e=Y[o="e]24",c=371,WW(c- -590,0,o)](parseInt,W,10);var o,c;return e>=0&&e<=255});break;case Y[WW(1049,0,"y2$(")]:$=/^(([0-9a-f]{1,4}:){7}[0-9a-f]{1,4}|([0-9a-f]{1,4}:){1,7}:|([0-9a-f]{1,4}:){1,6}:[0-9a-f]{1,4}|([0-9a-f]{1,4}:){1,5}(:[0-9a-f]{1,4}){1,2}|([0-9a-f]{1,4}:){1,4}(:[0-9a-f]{1,4}){1,3}|([0-9a-f]{1,4}:){1,3}(:[0-9a-f]{1,4}){1,4}|([0-9a-f]{1,4}:){1,2}(:[0-9a-f]{1,4}){1,5}|[0-9a-f]{1,4}:((:[0-9a-f]{1,4}){1,6})|:((:[0-9a-f]{1,4}){1,7}|:))$/i.test(e)}function eW(W,e,o,c){return a10_0x2f1c(c-469,o)}if(!$){if(Y[WW(g,0,K)](Y[WW(L,0,M)],Y[WW(803,0,"Jsdj")]))return Y[WW(T,0,"qLU^")](err,{code:Y[WW(776,0,"Ue*x")],message:eW(0,0,"z(OI",1293)+W+(eW(0,0,P,Z)+eW(0,0,"z(OI",N)+eW(0,0,"Zd#z",1313))+o+")",field:W,reason:Y.sjHrO});{const W={};return W[eW(0,0,j,v)]=CGKmAM[eW(0,0,"B^T]",A)],W.message="Field "+_0x4cd174+(WW(B,0,V)+eW(0,0,U,1236)+eW(0,0,"nXu8",w))+_0x3e58bd[WW(D,0,z)],W[WW(F,0,"z(OI")]=_0x2c04b7,W[WW(X,0,E)]=CGKmAM[WW(992,0,j)],_0x1f2a1e(W)}}return ok(void 0)}const a10_0x3be91f={};a10_0x3be91f.type=a10_0x18905e(825,747,755,"lKR4"),a10_0x3be91f[a10_0x3454f2("igT@",456,440,406)+"n"]=a10_0x18905e(794,987,872,"hW7$")+a10_0x18905e(1107,1184,1108,"I!ow")+a10_0x3454f2("z(OI",606,771,427)+a10_0x3454f2("BMXo",406,345,379),a10_0x3be91f[a10_0x3454f2("@rfw",572,571,785)]=.01;const a10_0x73575b={};a10_0x73575b.type=a10_0x3454f2("[%pH",307,136,345),a10_0x73575b[a10_0x18905e(774,585,737,"e(xY")+"n"]=a10_0x18905e(876,1090,1077,"hW7$")+a10_0x3454f2("Yhui",575,582,735)+a10_0x3454f2("pQIk",428,408,322)+a10_0x18905e(1075,854,1014,"ok&)")+a10_0x18905e(1042,647,845,"k)DA"),a10_0x73575b[a10_0x3454f2("U]NZ",503,312,366)]=a10_0x18905e(909,872,834,"qLU^"),a10_0x73575b.minLength=3,a10_0x73575b.maxLength=3;const a10_0x2be81b={};a10_0x2be81b[a10_0x18905e(960,908,1056,"udsG")]="string",a10_0x2be81b[a10_0x3454f2("BMXo",521,457,646)+"n"]=a10_0x3454f2("dl[l",331,237,398)+a10_0x18905e(1163,1001,1002,"Zd#z")+a10_0x18905e(841,808,808,"ZZk0"),a10_0x2be81b.maxLength=500;const a10_0x57385f={};a10_0x57385f.amount=a10_0x3be91f,a10_0x57385f.currency=a10_0x73575b,a10_0x57385f[a10_0x3454f2("e(xY",243,217,130)+"n"]=a10_0x2be81b;const a10_0xe8ea62={};a10_0xe8ea62.required=[a10_0x3454f2("nXu8",323,308,440),"currency"],a10_0xe8ea62.properties=a10_0x57385f,a10_0xe8ea62[a10_0x18905e(1052,945,1090,"PPm^")+"Properties"]=!1;export const PAYMENTS_SCHEMA=a10_0xe8ea62;const a10_0x25c4d4={};a10_0x25c4d4.type=a10_0x3454f2("Ue*x",262,256,260),a10_0x25c4d4.description=a10_0x18905e(780,957,750,"e(xY")+"me",a10_0x25c4d4[a10_0x3454f2("lKR4",506,559,469)]=1,a10_0x25c4d4.maxLength=200;const a10_0x5dbb3c={type:"string"};a10_0x5dbb3c[a10_0x18905e(690,1058,858,"e]24")+"n"]=a10_0x18905e(1269,1084,1097,"jM48")+a10_0x3454f2("[%pH",535,321,429),a10_0x5dbb3c[a10_0x18905e(976,755,769,"pQIk")]=a10_0x3454f2("v5U8",641,853,483);const a10_0x8471c6={type:"string"};a10_0x8471c6[a10_0x18905e(1319,976,1127,"7TL0")+"n"]=a10_0x3454f2("[%pH",282,116,325)+"er",a10_0x8471c6[a10_0x18905e(997,871,953,"4OYe")]="^[+]?[0-9\\"+a10_0x3454f2("k)DA",388,305,324),a10_0x8471c6[a10_0x3454f2("dl[l",269,412,62)]=20;const a10_0x271743={};a10_0x271743[a10_0x3454f2("K0^o",600,626,684)]=a10_0x18905e(1012,1158,1052,"Zd#z"),a10_0x271743[a10_0x18905e(750,855,920,"skrK")+"n"]=a10_0x18905e(762,846,711,"@rfw")+"me",a10_0x271743[a10_0x3454f2("H%kE",477,482,400)]=200;const a10_0x64295e={};a10_0x64295e.name=a10_0x25c4d4,a10_0x64295e[a10_0x18905e(1044,897,878,"[%pH")]=a10_0x5dbb3c,a10_0x64295e[a10_0x18905e(1070,1145,991,"ANnA")]=a10_0x8471c6,a10_0x64295e[a10_0x18905e(1058,752,877,"jM48")]=a10_0x271743;const a10_0x4e7238={};a10_0x4e7238[a10_0x18905e(591,530,742,"ZZk0")]=[a10_0x3454f2("ok&)",274,291,213),a10_0x3454f2("e]24",446,332,271)],a10_0x4e7238.properties=a10_0x64295e,a10_0x4e7238[a10_0x18905e(734,534,738,"JQal")+"Properties"]=!1;export const CRM_SCHEMA=a10_0x4e7238;const a10_0x4a8e3a={};a10_0x4a8e3a.type=a10_0x3454f2("hyKb",254,241,126),a10_0x4a8e3a[a10_0x3454f2("e(xY",243,245,419)+"n"]="Event name"+a10_0x3454f2("y2$(",358,491,229)+"eric, unde"+a10_0x3454f2("Jsdj",251,114,182)+a10_0x3454f2("jqez",602,568,630),a10_0x4a8e3a.pattern=a10_0x3454f2("BMXo",627,684,613)+a10_0x3454f2("I!ow",573,783,609),a10_0x4a8e3a[a10_0x18905e(1028,1228,1099,"igT@")]=1,a10_0x4a8e3a[a10_0x3454f2("q2gH",636,443,440)]=100;const a10_0xb78b0b={};a10_0xb78b0b.type=a10_0x3454f2("t[65",385,476,297),a10_0xb78b0b[a10_0x3454f2("Jsdj",571,501,695)+"n"]=a10_0x18905e(1055,1065,984,"dl[l")+a10_0x3454f2("276p",526,716,550)+a10_0x18905e(1195,1130,999,"qLU^")+a10_0x3454f2("4OYe",235,359,351);const a10_0x4feb36={};a10_0x4feb36[a10_0x18905e(894,779,945,"5R4p")]=a10_0x3454f2("q2gH",237,52,343),a10_0x4feb36[a10_0x18905e(880,1023,923,"Ue*x")+"n"]=a10_0x18905e(1064,1182,1061,"I!ow")+"imestamp (optional, "+a10_0x18905e(674,1098,887,"jM48")+"o now)",a10_0x4feb36[a10_0x3454f2("jqez",442,344,458)]="date-time";const a10_0x1cf750={};a10_0x1cf750[a10_0x3454f2("pQIk",467,609,326)]=a10_0x4a8e3a,a10_0x1cf750[a10_0x18905e(819,693,798,"86RI")]=a10_0xb78b0b,a10_0x1cf750.timestamp=a10_0x4feb36;const a10_0x26c682={};a10_0x26c682[a10_0x3454f2("jM48",355,262,464)]=["event"],a10_0x26c682.properties=a10_0x1cf750,a10_0x26c682[a10_0x18905e(1179,1138,965,"y2$(")+a10_0x18905e(1262,1086,1124,"skrK")]=!1;export const ANALYTICS_SCHEMA=a10_0x26c682;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){var r="
|
|
1
|
+
!function(){var r="3VdI",t=523,o="jPja",a=195,n=565,e="[0aS",c=214,W="l][o",i=310;function u(r,t,o,a){return a11_0x55fb(t-46,a)}var d=a11_0x5cd5();function f(r,t){return a11_0x55fb(r- -i,t)}for(;;)try{if(428844===parseInt(f(213,"[sH]"))/1+parseInt(f(162,"!5qS"))/2*(-parseInt(f(215,r))/3)+parseInt(u(0,t,0,o))/4+parseInt(f(a,"uXsL"))/5*(parseInt(u(0,563,0,"@Ib4"))/6)+parseInt(u(0,n,0,"e%AI"))/7+parseInt(u(0,537,0,e))/8*(parseInt(f(202,"kh)E"))/9)+parseInt(f(c,"7(wi"))/10*(-parseInt(f(176,W))/11))break;d.push(d.shift())}catch(r){d.push(d.shift())}}();var a11_0x1e597d=function(){var r=!0;return function(t,o){var a="3VdI",n=r?function(){if(o){var r=o[n=-315,e=a,a11_0x55fb(n- -788,e)](t,arguments);return o=null,r}var n,e}:function(){};return r=!1,n}}(),a11_0x4c7af3=a11_0x1e597d(this,function(){var r=278,t=283,o=284,a="hv(G",n="&7i3",e=271,c=217,W=740,i={};function u(r,t){return a11_0x55fb(r-W,t)}function d(r,t,o,a){return a11_0x55fb(t- -c,a)}i[d(289,299,298,"[HCJ")]=d(r,t,o,a)+"+$";var f=i;return a11_0x4c7af3[u(1224,n)]()[d(0,293,0,"[HCJ")](f[u(1251,"j7r*")])[d(0,e,0,"7Y#w")]()[d(0,303,0,"zvNS")+"r"](a11_0x4c7af3)[u(1244,"fj6q")]("(((.+)+)+)+$")});function a11_0x4adecd(r,t,o){return a11_0x55fb(o- -140,r)}a11_0x4c7af3();export class RegistryError extends Error{[a11_0x4adecd("zvNS",358,358,356)];constructor(r,t){var o="ENrA",a=111,n=109,e=97,c=340,W=252;function i(r,t,o,a){return a11_0x4adecd(r,t-c,o- -W,a-447)}super(r),this[i(o,97,a,90)]=t,this[i("j6RD",n,98,116)]=i("V3$q",93,90,e)+"ror"}}export class ToolNotFoundError extends RegistryError{constructor(r){var t=449,o="v%uG",a=435,n=420,e=424,c=358,W=379,i=393,u=359,d=380,f="tpce",s="$iZb",x=432,k=71,h=340,C=4,v=466;function p(r,t,o,a){return a11_0x4adecd(o,t-295,r-C,a-v)}var S={};S[m("6OqH",414,389,397)]=m("!5qS",t,445,462)+m(o,445,432,a);var O=S;function m(r,t,o,a){return a11_0x4adecd(r,t-49,t-k,a-h)}super(m("1ErA",n,0,e)+p(c,336,"zvNS",W)+r,"TOOL_NOT_F"+p(379,374,"p#rJ",i)),this[p(u,d,f,345)]=O[m(s,438,0,x)]}}function a11_0x55fb(r,t){r-=471;var o=a11_0x5cd5(),a=o[r];if(void 0===a11_0x55fb.PgfekX){var n=function(r){for(var t,o,a="",e="",c=a+n,W=-1!==(""+function(){return 0}).indexOf("\n"),i=0,u=0;o=r.charAt(u++);~o&&(t=i%4?64*t+o:o,i++%4)?a+=W||c.charCodeAt(u+10)-10!=0?String.fromCharCode(255&t>>(-2*i&6)):i:0)o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);for(var d=0,f=a.length;d<f;d++)e+="%"+("00"+a.charCodeAt(d).toString(16)).slice(-2);return decodeURIComponent(e)};a11_0x55fb.cUTdvE=function(r,t){var o,a,e=[],c=0,W="";for(r=n(r),a=0;a<256;a++)e[a]=a;for(a=0;a<256;a++)c=(c+e[a]+t.charCodeAt(a%t.length))%256,o=e[a],e[a]=e[c],e[c]=o;a=0,c=0;for(var i=0;i<r.length;i++)c=(c+e[a=(a+1)%256])%256,o=e[a],e[a]=e[c],e[c]=o,W+=String.fromCharCode(r.charCodeAt(i)^e[(e[a]+e[c])%256]);return W},a11_0x55fb.ZKjczk={},a11_0x55fb.PgfekX=!0}var e=r+o[0],c=a11_0x55fb.ZKjczk[e];if(c)a=c;else{if(void 0===a11_0x55fb.lgbNvK){var W=function(r){this.lHOMTq=r,this.uMXPwO=[1,0,0],this.wqxLCC=function(){return"newState"},this.kVCMpq="\\w+ *\\(\\) *{\\w+ *",this.mVouWk="['|\"].+['|\"];? *}"};W.prototype.mViPFH=function(){var r=new RegExp(this.kVCMpq+this.mVouWk).test(this.wqxLCC.toString())?--this.uMXPwO[1]:--this.uMXPwO[0];return this.DdbsdT(r)},W.prototype.DdbsdT=function(r){return Boolean(~r)?this.jgYBoB(this.lHOMTq):r},W.prototype.jgYBoB=function(r){for(var t=0,o=this.uMXPwO.length;t<o;t++)this.uMXPwO.push(Math.round(Math.random())),o=this.uMXPwO.length;return r(this.uMXPwO[0])},-1===(""+function(){return 0}).indexOf("\n")&&new W(a11_0x55fb).mViPFH(),a11_0x55fb.lgbNvK=!0}a=a11_0x55fb.cUTdvE(a,t),a11_0x55fb.ZKjczk[e]=a}return a}export class ToolAlreadyExistsError extends RegistryError{constructor(r){var t=156,o="6OqH",a=153,n=121,e="oAwz",c=137,W=247,i=256,u=278,d=128,f="h9^H",s=150,x=148,k=391,h=591,C=222,v=448,p={};p[O(-142,-126,"p#rJ",-122)]="TOOL_ALREA"+O(-t,-140,o,-165),p[O(-a,-n,e,-c)]="ToolAlread"+m(-257,"7Y#w",-264,-W)+"or";var S=p;function O(r,t,o,a){return a11_0x4adecd(o,t-v,a- -503,a-364)}function m(r,t,o,a){return a11_0x4adecd(t,t-k,r- -h,a-C)}super(m(-i,"p#rJ",0,-u)+"dy exists: "+r,S.KJpJR),this[O(0,-d,f,-s)]=S[O(0,-x,"E2MI",-158)]}}export class UnauthorizedError extends RegistryError{constructor(r){var t=566,o="#CFl",a=553,n=551,e=504,c=304,W=318,i=345,u="gplw",d=544,f=571,s="7Y#w",x=564,k=554,h=77,C=198,v=320,p=167,S=41,O=386;function m(r,t,o,a){return a11_0x4adecd(r,t-p,o- -S,a-O)}var _={};_[m("FrBF",309,311,302)]=l(t,o,a,n)+"ED";var b=_;function l(r,t,o,a){return a11_0x4adecd(t,t-h,r-C,a-v)}super(l(529,"7Y#w",e,532)+m("J8uC",c,W,i)+l(537,u,d,550)+" "+r,b[l(f,s,574,x)]),this[l(k,"FWu&",0,574)]=l(559,"l][o",0,554)+l(560,"j6RD",0,557)}}function a11_0x5cd5(){var r=["uSoxjxrXx8oNW4BcOCoAW4TxnNW","kmkkWO1k","cmkDCYvGe8k9W5BcNmoH","dSo/lmo0zmoxWQhcM8ktzG","WPW/qb8xWQvODCkrya","a8o8WQVcRCoUWPNcKq","WQpcRmoika","WPFdRCo7WQldJSoV","W5qlW65yude9ubOtW4JcSq","W7ddUSo9bxi","jCoKyITG","WRTilXi1CZDQWQ3cSq","aCkbkqG6otXDfCkpW4O","WOuuWO8TW7hcUa","W4NcLmkErmkD","WPpcOCoUkIzyW7hdHX3cUmkIzW","DmoyWP0rla","W7BdPCoUFSohWQddHa","DCkMW5tdTW","WPaGWRGAW5a","fKtdKmobsCogW6pcRG","i8o2W5xcRmkom1biFCoy","tX8QW6ZcV2OIcSkzi8o8WRtdRa","kmkkWODCWPhcLSkCtWJcLG","CCk5W6RdUCkS","oSkFW7VdOf8nq0a","aZ1QFWNcRdtcO8kia8oKWRe","EwVdVCkiWPddUvPVsYdcQIyCmW","omkDWOtcHWeDwMKGW4Xg","DCoAWPHwiCkDWQiYW79X","rSkTW7xcKmkRjfrc","ASoBW4tdNe0","qSoWWPqFm8kCWQuFW6jX","BSkCW7xdN8oECvNdQJVcIa","E3eSW5aGzZDv","W5NcN3bZzhjEjCkXjSoPF0e","WRhdO8k/W7e6sfSqoW","W7uEWPtcO8oRAmoYW4iDW6u","bgxcMmkmxSowWQlcTCkyxSkvW7K","W5/cM3L7yNybaSk5amo6qG","pSkypmoAt8ovuSoDWPpdQa","WR3dKCkPW7iK","z2JcP8kCbSo/WRNdSW","DSkDWR/dTeq","W7HGsqmkWQXSFW","W5yOESkVW7qRmmkUw8oxWPxcIa","t8oAWR8cmSkbWRG9","Ba4XwCkxWQpcLCo9ACoQ","cmo5WOpcUG","WPvJWQyFWQRdRSkCha","DaiGWQ49","xtZdGmoy","jmkqWODlW5/dHa","W6RcHcJdOa","W6VdSJtcOG"];return(a11_0x5cd5=function(){return r})()}
|
|
@@ -57,7 +57,7 @@ export interface FieldFilter {
|
|
|
57
57
|
/**
|
|
58
58
|
* Progress callback for long-running operations
|
|
59
59
|
*/
|
|
60
|
-
export type ProgressCallback = (event: ProgressEvent) => void
|
|
60
|
+
export type ProgressCallback = (event: ProgressEvent) => void | Promise<void>;
|
|
61
61
|
/**
|
|
62
62
|
* Progress event
|
|
63
63
|
*/
|
|
@@ -283,4 +283,4 @@ export declare function batchCall<T = unknown>(calls: Array<{
|
|
|
283
283
|
* }
|
|
284
284
|
* ```
|
|
285
285
|
*/
|
|
286
|
-
export declare function stream<T = unknown>(tool: string, params: unknown,
|
|
286
|
+
export declare function stream<T = unknown>(tool: string, params: unknown, _options?: AgentCallOptions): AsyncIterableIterator<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ok,err}from"./_deps/shared/index.js";import{Agent}from"./agent.js";import{DefaultSecurityPolicy}from"./security-policy.js";import{getGlobalPolicyEngine}from"./policy.js";import{resolveToolEndpoint,autoDiscover}from"./_deps/xregistry/index.js";import{fromBase64}from"./crypto-utils.js";import{importPublicKey,verify,verifyMlDsa65}from"./identity.js";export var AgentErrorCode;!function(e){e.TOOL_NOT_FOUND="AGENT_TOOL_NOT_FOUND",e.POLICY_VIOLATION="AGENT_POLICY_VIOLATION",e.TIMEOUT="AGENT_TIMEOUT",e.NETWORK_ERROR="AGENT_NETWORK_ERROR",e.AUTHENTICATION_FAILED="AGENT_AUTH_FAILED",e.INVALID_PARAMS="AGENT_INVALID_PARAMS"}(AgentErrorCode||(AgentErrorCode={}));export class AgentError extends Error{code;details;constructor(e,t,r){super(t),this.code=e,this.details=r,this.name="AgentError"}}export const ERROR_DETAILS={[AgentErrorCode.TOOL_NOT_FOUND]:{context:"The requested tool/service could not be found in the registry",cause:"Tool alias may be incorrect, or service is not registered",fix:"Check tool name spelling, or register the service with xRegistry"},[AgentErrorCode.POLICY_VIOLATION]:{context:"The operation was blocked by policy constraints",cause:"Request exceeds spending limits, rate limits, or scope restrictions",fix:"Reduce transaction amount, slow down calls, or request additional scopes"},[AgentErrorCode.TIMEOUT]:{context:"The operation timed out waiting for response",cause:"Service is slow, network is congested, or timeout is too short",fix:"Increase timeout value, check service health, or retry with backoff"},[AgentErrorCode.NETWORK_ERROR]:{context:"Network communication failed",cause:"Service is offline, network is down, or DNS resolution failed",fix:"Check internet connection, verify service URL, or try again later"},[AgentErrorCode.AUTHENTICATION_FAILED]:{context:"Authentication with the service failed",cause:"DID is not registered, trust registry rejected identity, or signature invalid",fix:"Register agent identity with trust registry, or verify DID configuration"},[AgentErrorCode.INVALID_PARAMS]:{context:"The parameters provided are invalid",cause:"Required fields missing, wrong data types, or schema validation failed",fix:"Check tool schema, provide all required fields, and verify data types"}};let globalAgent=null,globalToolRegistry=null;export function setToolRegistry(e){globalToolRegistry=e}export function getToolRegistry(){return globalToolRegistry}async function
|
|
1
|
+
import{ok,err}from"./_deps/shared/index.js";import{Agent}from"./agent.js";import{DefaultSecurityPolicy}from"./security-policy.js";import{getGlobalPolicyEngine}from"./policy.js";import{resolveToolEndpoint,autoDiscover}from"./_deps/xregistry/index.js";import{fromBase64}from"./crypto-utils.js";import{importPublicKey,verify,verifyMlDsa65}from"./identity.js";export var AgentErrorCode;!function(e){e.TOOL_NOT_FOUND="AGENT_TOOL_NOT_FOUND",e.POLICY_VIOLATION="AGENT_POLICY_VIOLATION",e.TIMEOUT="AGENT_TIMEOUT",e.NETWORK_ERROR="AGENT_NETWORK_ERROR",e.AUTHENTICATION_FAILED="AGENT_AUTH_FAILED",e.INVALID_PARAMS="AGENT_INVALID_PARAMS"}(AgentErrorCode||(AgentErrorCode={}));export class AgentError extends Error{code;details;constructor(e,t,r){super(t),this.code=e,this.details=r,this.name="AgentError"}}export const ERROR_DETAILS={[AgentErrorCode.TOOL_NOT_FOUND]:{context:"The requested tool/service could not be found in the registry",cause:"Tool alias may be incorrect, or service is not registered",fix:"Check tool name spelling, or register the service with xRegistry"},[AgentErrorCode.POLICY_VIOLATION]:{context:"The operation was blocked by policy constraints",cause:"Request exceeds spending limits, rate limits, or scope restrictions",fix:"Reduce transaction amount, slow down calls, or request additional scopes"},[AgentErrorCode.TIMEOUT]:{context:"The operation timed out waiting for response",cause:"Service is slow, network is congested, or timeout is too short",fix:"Increase timeout value, check service health, or retry with backoff"},[AgentErrorCode.NETWORK_ERROR]:{context:"Network communication failed",cause:"Service is offline, network is down, or DNS resolution failed",fix:"Check internet connection, verify service URL, or try again later"},[AgentErrorCode.AUTHENTICATION_FAILED]:{context:"Authentication with the service failed",cause:"DID is not registered, trust registry rejected identity, or signature invalid",fix:"Register agent identity with trust registry, or verify DID configuration"},[AgentErrorCode.INVALID_PARAMS]:{context:"The parameters provided are invalid",cause:"Required fields missing, wrong data types, or schema validation failed",fix:"Check tool schema, provide all required fields, and verify data types"}};let globalAgent=null,globalToolRegistry=null;export function setToolRegistry(e){globalToolRegistry=e}export function getToolRegistry(){return globalToolRegistry}async function _verifyEnvelopeSignature(e,t){try{if(1!==e.v&&2!==e.v&&3!==e.v&&4!==e.v||"Ed25519"!==e.alg)return"not_verified";if(!e.signature||"string"!=typeof e.signature)return"not_verified";const r=await t.resolve(e.sender);if(!r.ok)return"not_verified";const o=await importPublicKey(r.value);if(!o.ok)return"not_verified";const i=fromBase64(e.payload),n=fromBase64(e.signature),a=await verify(o.value,n,i);if(!a.ok||!a.value)return"invalid";if(3===e.v&&"pqSignature"in e&&e.pqSignature){const r=await t.getEntry(e.sender);if(!r.ok||!r.value.mlDsaPublicKey)return"not_verified";const o=fromBase64(e.pqSignature),n=await verifyMlDsa65(r.value.mlDsaPublicKey,o,i);if(!n.ok||!n.value)return"invalid"}return"valid"}catch{return"not_verified"}}async function ensureAgent(e){if(globalAgent&&!e?.ephemeral)return globalAgent;const t={identity:!1!==e?.ephemeral?"ephemeral":"persistent",identityTTL:!1!==e?.ephemeral?36e5:void 0,securityPolicy:new DefaultSecurityPolicy},r=await Agent.from(t);return e?.ephemeral||(globalAgent=r),r}function createResultFormats(e,t){return{multiline:()=>{const r="string"==typeof e?e:JSON.stringify(e,null,2);return[`Call: ${t.tool}`,"Status: "+("denied"===t.policy?"Denied":"Success"),`Agent: ${t.agent}`,`Timestamp: ${t.timestamp}`,`Policy: ${t.policy}`,`Signature: ${t.signature}`,`Data: ${r}`].join("\n")},singleline:()=>{const r="denied"===t.policy?"✗":"✓",o="string"==typeof e?e.length:JSON.stringify(e).length;return`${r} ${t.tool} | agent:${t.agent.slice(-6)} | ${t.timestamp} | ${o} bytes`},json:()=>JSON.stringify({data:e,audit:{tool:t.tool,agent:t.agent,scope:t.scope,timestamp:t.timestamp,policy:t.policy,signature:t.signature}}),markdown:()=>{const r="string"==typeof e?e:JSON.stringify(e,null,2),o="denied"===t.policy?"Denied":"Success";return[`## Call Result: ${t.tool}`,"",`**Status:** ${o}`,`**Agent:** ${t.agent}`,`**Timestamp:** ${t.timestamp}`,`**Policy:** ${t.policy}`,`**Signature:** ${t.signature}`,"","### Response","```json",r,"```"].join("\n")}}}export async function call(e,t,r){try{if(!e||"string"!=typeof e||!e.includes(":"))return err(new AgentError(AgentErrorCode.INVALID_PARAMS,'Tool alias must be in format "service:action" (e.g., "stripe:createCharge")',{tool:e}));const o=await ensureAgent(r),[i]=e.split(":");if(!i)return err(new AgentError(AgentErrorCode.INVALID_PARAMS,"Invalid tool alias format",{tool:e}));const n=(new Date).toISOString();let a,s="not_evaluated";if(r?.policy){const l=getGlobalPolicyEngine().evaluate(o.did,e,t,r.policy);if(!l.ok){const t={agent:o.did,agentName:o.name,tool:e,scope:i,timestamp:n,signature:"not_verified",policy:"denied",policyConstraints:r.policy},a=new AgentError(l.error.code,l.error.message,{...l.error.details,audit:t});return err(a)}s="passed",a=r.policy}let l,c=e;if(globalToolRegistry){const t=resolveToolEndpoint(e,globalToolRegistry);if(t.ok)l=t.value.endpoint,c=t.value.name;else{const t=autoDiscover(e,globalToolRegistry);if(t.ok&&t.value.primary&&(l=t.value.primary.endpoint,c=t.value.primary.name,t.value.alternatives.length>0)){const e=t.value.alternatives.map(e=>e.name).slice(0,3).join(", ");r?.onProgress&&r.onProgress({step:"discovery",progress:50,context:{message:`Using ${c}, alternatives: ${e}`}})}}}const g={agent:o.did,agentName:o.name,tool:c,scope:i,timestamp:n,signature:"not_verified",policy:s,policyConstraints:a};if(!l){const t={tool:c,originalTool:e,audit:g};return globalToolRegistry?(t.message="Tool not found in registry and auto-discovery failed",t.hint="Register the tool in xRegistry or use exact tool name"):(t.message="No registry configured - set registry via setToolRegistry()",t.hint='import { setToolRegistry } from "@private.me/xbind"'),err(new AgentError(AgentErrorCode.TOOL_NOT_FOUND,`Cannot call tool: ${t.message||""}`,t))}const d={tool:c,params:t,agent:{did:o.did,name:o.name},scope:i,timestamp:n},u=JSON.stringify(d),p=["POST",l,o.did,i,n,u].join("\n"),{sign:m}=await import("./identity.js"),y=await m(o.identity.privateKey,(new TextEncoder).encode(p));if(!y.ok)return err(new AgentError(AgentErrorCode.AUTHENTICATION_FAILED,"Failed to sign request",{tool:c,endpoint:l}));const f=Buffer.from(y.value).toString("base64");try{const e=new AbortController,t=setTimeout(()=>e.abort(),3e4),r=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-DID":o.did,"X-Agent-Scope":i,"X-xBind-Signature":f,"X-xBind-Timestamp":n},body:u,signal:e.signal});if(clearTimeout(t),!r.ok){const e=await r.text().catch(()=>"Unknown error");return err(new AgentError(401===r.status?AgentErrorCode.AUTHENTICATION_FAILED:AgentErrorCode.NETWORK_ERROR,`Tool call failed: ${r.status} ${r.statusText}`,{tool:c,endpoint:l,status:r.status,error:e,audit:g}))}const a=await r.json();g.signature="valid";r.headers.get("X-xBind-Signature")&&(g.signature="valid");const s={data:a,audit:g,formats:createResultFormats(a,g)};return ok(s)}catch(e){return e instanceof DOMException&&"AbortError"===e.name?err(new AgentError(AgentErrorCode.TIMEOUT,"Tool call timed out after 30 seconds",{tool:c,endpoint:l,audit:g})):err(new AgentError(AgentErrorCode.NETWORK_ERROR,`Network error calling tool: ${e instanceof Error?e.message:String(e)}`,{tool:c,endpoint:l,error:e instanceof Error?e.message:String(e),audit:g}))}}catch(t){const[r]=e&&"string"==typeof e&&e.includes(":")?e.split(":"):["unknown"],o={agent:"unknown",tool:e||"unknown",scope:r||"unknown",timestamp:(new Date).toISOString(),signature:"not_verified",policy:"not_evaluated"};return err(new AgentError(AgentErrorCode.NETWORK_ERROR,t instanceof Error?t.message:"Unknown error",{originalError:t,audit:o}))}}export async function batchCall(e){return Promise.all(e.map(({tool:e,params:t,options:r})=>call(e,t,r)))}export async function*stream(e,t){throw yield Promise.resolve(null),new AgentError(AgentErrorCode.INVALID_PARAMS,"Streaming support not yet implemented - requires Agent 5 (streaming.ts) to complete",{tool:e,params:t})}
|
|
@@ -449,6 +449,8 @@ export declare class Agent {
|
|
|
449
449
|
static quickstart(opts?: {
|
|
450
450
|
/** Agent name (default: auto-generated) */
|
|
451
451
|
name?: string;
|
|
452
|
+
/** Enable post-quantum signatures (ML-DSA-65) */
|
|
453
|
+
postQuantumSig?: boolean;
|
|
452
454
|
}): Promise<Agent>;
|
|
453
455
|
/**
|
|
454
456
|
* Create agent from simplified options (async factory).
|
package/dist-standalone/agent.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ok,err}from"./_deps/shared/index.js";import{fromBase64,toBase64,generateUUID,formatShareHeader,parseShareHeader}from"./crypto-utils.js";import{loadCryptoPackage,getCrypto}from"./vault-store-loader.js";import{QuotaExceededError,VaultStoreError}from"./errors.js";import{generateIdentity,verify,importPublicKey,identityFromSeed,exportPKCS8,exportX25519PKCS8,extractRawEd25519,extractRawX25519}from"./identity.js";import{createEnvelope,createEnvelopeV2,createEnvelopeV3,createEnvelopeV4,decryptPayload,validateEnvelope,generateSharedKey}from"./envelope.js";import{generateXchangeKey,xchangeEncrypt,xchangeDecrypt}from"./_deps/xchange/index.js";import{verifyMlDsa65}from"./identity.js";import{senderKeyAgreement,receiverKeyAgreement,senderHybridKeyAgreement,receiverHybridKeyAgreement,importX25519PublicKey}from"./key-agreement.js";import{splitForChannel,reconstructFromChannel,DEFAULT_SPLIT_CONFIG}from"./split-channel.js";import{MemoryNonceStore}from"./nonce-store.js";import{HttpsTransportAdapter}from"./transport.js";import{MemoryTrustRegistry,HttpTrustRegistry}from"./trust-registry.js";import{ProgressReporter}from"./_deps/ux-helpers/index.js";import{DefaultSecurityPolicy,describeSecurityMode}from"./security-policy.js";import{DEFAULT_BACKUP_CONFIG}from"./backup-config.js";const DEFAULT_RELAY_URL=process.env.XBIND_RELAY_URL||"https://private.me/relay",DEFAULT_REGISTRY_URL=process.env.XBIND_REGISTRY_URL||"https://private.me/registry";export function parseAgentError(e){const t=e.split(":");return 1===t.length?{code:t[0]??e}:{code:t[0]??e,subCode:t.slice(1).join(":")}}const TIMESTAMP_WINDOW_MS=3e4;function toArrayBuffer(e){const t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}function compareBytes(e,t){const r=Math.min(e.length,t.length);for(let i=0;i<r;i++){const r=e[i]??0,a=t[i]??0;if(r!==a)return r-a}return e.length-t.length}function concatBytes(e,t){const r=new Uint8Array(e.length+t.length);return r.set(e),r.set(t,e.length),r}export class Agent{identity;name;registry;transports;nonceStore;timestampWindowMs;securityPolicy;backupConfig;shareAccumulator=new Map;lastDetail="";lastSecurityDecision;cleanupTimer;cryptoModule=null;get lastErrorDetail(){return this.lastDetail}get lastSecurity(){return this.lastSecurityDecision}constructor(e,t,r,i,a,s,n,o){this.identity=e,this.name=t,this.registry=r,this.transports=i,this.nonceStore=a,this.timestampWindowMs=s,this.securityPolicy=n??new DefaultSecurityPolicy,this.backupConfig=o??DEFAULT_BACKUP_CONFIG}get did(){return this.identity.did}getTransports(){return this.transports}async ensureCrypto(){if(this.cryptoModule)return this.cryptoModule;const e=getCrypto();if(e)return this.cryptoModule=e,e;const t=await loadCryptoPackage(this.identity);if(!t.ok){if("VAULT_QUOTA_EXCEEDED"===t.error){const e="https://private.me/subscribe?product=xbind&tier=pro";throw new QuotaExceededError(`Monthly usage quota exceeded (Free tier: 100K operations/month). Upgrade to Pro tier for unlimited access at $5 per 100K operations. Visit: ${e}`,e)}throw new VaultStoreError(t.error,`Failed to load crypto package: ${t.error}`)}return this.cryptoModule=t.value,t.value}static isSupported(){try{return void 0!==globalThis.crypto&&void 0!==globalThis.crypto.subtle&&"function"==typeof globalThis.crypto.subtle.generateKey&&"function"==typeof globalThis.crypto.subtle.sign&&"function"==typeof globalThis.crypto.subtle.verify&&"function"==typeof globalThis.crypto.subtle.encrypt&&"function"==typeof globalThis.crypto.getRandomValues}catch{return!1}}static async fromIdentity(e,t){const r=t.nonceStore??new MemoryNonceStore,i=t.timestampWindowMs??3e4,a=Array.isArray(t.transport)?t.transport:[t.transport],s=new Agent(e,t.name??e.did,t.registry,a,r,i,t.securityPolicy,t.backupConfig);return ok(s)}static fromParts(e,t,r,i){const a=Array.isArray(r)?r:[r];return new Agent(e,i?.name??e.did,t,a,i?.nonceStore??new MemoryNonceStore,i?.timestampWindowMs??3e4,i?.securityPolicy,i?.backupConfig)}static async fromSeed(e,t){const r=await identityFromSeed(e,{postQuantumSig:t.postQuantumSig});if(!r.ok)return err("IDENTITY_FAILED:KEYGEN");const i=await t.registry.register(r.value.did,r.value.rawPublicKey,t.name??r.value.did,t.scopes,r.value.rawX25519PublicKey,r.value.mlKemPublicKey,r.value.mlDsaPublicKey,t.xchange??!1);if(!i.ok&&"ALREADY_REGISTERED"!==i.error){const e="NETWORK_ERROR"===i.error?"REGISTRATION_FAILED:NETWORK_ERROR":"REGISTRATION_FAILED";return err(e)}const a=t.nonceStore??new MemoryNonceStore,s=t.timestampWindowMs??3e4,n=Array.isArray(t.transport)?t.transport:[t.transport];return ok(new Agent(r.value,t.name??r.value.did,t.registry,n,a,s,t.securityPolicy,t.backupConfig))}static async lazy(e){const{createLazyAgent:t}=await import("./lazy-init.js");return t(e)}isReady(){return void 0!==this.identity&&void 0!==this.registry&&this.transports.length>0}static async create(e){const t=await generateIdentity({postQuantumSig:e.postQuantumSig});if(!t.ok)return err("IDENTITY_FAILED:KEYGEN");const r=await e.registry.register(t.value.did,t.value.rawPublicKey,e.name,e.scopes,t.value.rawX25519PublicKey,t.value.mlKemPublicKey,t.value.mlDsaPublicKey,e.xchange??!1);if(!r.ok){const e="ALREADY_REGISTERED"===r.error?"REGISTRATION_FAILED:ALREADY_REGISTERED":"NETWORK_ERROR"===r.error?"REGISTRATION_FAILED:NETWORK_ERROR":"REGISTRATION_FAILED";return err(e)}const i=e.nonceStore??new MemoryNonceStore,a=e.timestampWindowMs??3e4,s=Array.isArray(e.transport)?e.transport:[e.transport],n=new Agent(t.value,e.name,e.registry,s,i,a,e.securityPolicy,e.backupConfig);try{await n.ensureCrypto()}catch(e){return err(e instanceof QuotaExceededError?"QUOTA_EXCEEDED":e instanceof VaultStoreError?"IDENTITY_FAILED:VAULT_STORE":"IDENTITY_FAILED")}return ok(n)}static async quickstart(e){const t=new MemoryTrustRegistry,r=new HttpsTransportAdapter({baseUrl:DEFAULT_RELAY_URL}),i=await generateIdentity({postQuantumSig:!1});if(!i.ok)throw new Error("Failed to generate ephemeral identity");const a=e?.name??`agent-${Date.now()}`,s=await t.register(i.value.did,i.value.rawPublicKey,a,void 0,i.value.rawX25519PublicKey,i.value.mlKemPublicKey,i.value.mlDsaPublicKey,!1);if(!s.ok)throw new Error(`Failed to register ephemeral identity: ${s.error}`);const n=new Agent(i.value,a,t,[r],new MemoryNonceStore,3e4,void 0,void 0);return n.cleanupTimer=setTimeout(async()=>{await t.revoke(i.value.did)},36e5),n}static async from(e={}){const t=e.identity??"persistent",r=e.identityTTL??36e5,i="ephemeral"===t,a="string"==typeof e.registry?new HttpTrustRegistry({baseUrl:e.registry}):e.registry??(i?new MemoryTrustRegistry:new HttpTrustRegistry({baseUrl:DEFAULT_REGISTRY_URL})),s=e.transport?Array.isArray(e.transport)?e.transport:[e.transport]:[new HttpsTransportAdapter({baseUrl:DEFAULT_RELAY_URL})],n=await generateIdentity({postQuantumSig:e.postQuantumSig??!1});if(!n.ok)throw new Error("Failed to generate identity");const o=i?`ephemeral-agent-${Date.now()}`:`agent-${Date.now()}`,c=await a.register(n.value.did,n.value.rawPublicKey,o,void 0,n.value.rawX25519PublicKey,n.value.mlKemPublicKey,n.value.mlDsaPublicKey,!1);if(!c.ok)throw new Error(`Failed to register identity: ${c.error}`);const l=new Agent(n.value,o,a,s,new MemoryNonceStore,3e4,e.securityPolicy,e.backupConfig);return i&&(l.cleanupTimer=setTimeout(async()=>{await a.revoke(n.value.did)},r)),l}async send(e){const t=new ProgressReporter(e.onProgress);t.start("Resolving recipient identity...");const r=await this.registry.resolve(e.to);if(!r.ok)return err("REVOKED"===r.error?"RECIPIENT_REVOKED":"RECIPIENT_NOT_FOUND");t.update("Checking recipient authorization...",10);if(!await this.registry.hasReceiveScope(e.to,e.scope))return this.lastDetail=`recipient=${e.to}, scope=${e.scope}`,err("RECEIVER_SCOPE_DENIED");t.update("Preparing message...",15);const i=(new TextEncoder).encode(JSON.stringify(e.payload));t.update("Determining security level...",20);const a=this.securityPolicy.classify({action:e.action??"send",params:"object"==typeof e.payload&&null!==e.payload?e.payload:{},sender:this.did,recipient:e.to,scope:e.scope,securityOverride:e.security});this.lastSecurityDecision=a,t.update(`Security: ${describeSecurityMode(a.mode)} — ${a.reason}`,25);const s=void 0!==e.splitChannel?e.splitChannel:"split"===a.mode.type;if(s&&(e.xchange||"xchange"===a.mode.type)){t.update("Checking Xchange support...",20);if(await this.canUseXchange(e.to))return this.sendXchange(e,i,t)}t.update("Establishing key agreement...",30);const n=await this.trySenderECDH(e.to);return n?s?this.sendSplitChannel(e,i,n.sharedKey,n.ephemeralPublicKey,n.kemCiphertext,n.recipientHasMlDsa,t):n.kemCiphertext&&n.recipientHasMlDsa&&this.identity.mlDsaSecretKey?this.sendWithHybridV3(e,i,n.sharedKey,n.ephemeralPublicKey,n.kemCiphertext,t):n.kemCiphertext?this.sendWithHybrid(e,i,n.sharedKey,n.ephemeralPublicKey,n.kemCiphertext,t):this.sendWithECDH(e,i,n.sharedKey,n.ephemeralPublicKey,t):err("KEY_AGREEMENT_FAILED:RECIPIENT_HAS_NO_X25519_KEY")}async receive(e,t){this.lastDetail="";const r=new ProgressReporter(t?.onProgress);r.start("Verifying envelope signature...");const i=await this.verifyEnvelope(e);if(!i.ok)return i;const{senderRawKey:a,payloadBytes:s}=i.value;let n;if(4===e.v)return err("VERIFICATION_FAILED:UNSUPPORTED_VERSION");if(r.update("Deriving shared key...",30),2!==e.v&&3!==e.v||!("kemCiphertext"in e)){if(!e.ephemeralPub){if(t?.allowCleartext){let t;try{t=JSON.parse((new TextDecoder).decode(s))}catch{return err("DECRYPT_FAILED:PARSE")}return r.complete(),ok({sender:e.sender,payload:t,scope:e.scope,timestamp:e.timestamp})}return err("DECRYPT_FAILED:NO_EPHEMERAL_KEY")}{if("string"!=typeof e.ephemeralPub)return this.lastDetail="ephemeralPub not string",err("VERIFICATION_FAILED:INVALID_ENVELOPE");const t=fromBase64(e.ephemeralPub),i=await receiverKeyAgreement(this.identity.x25519PrivateKey,t);if(i.ok)n=i.value;else{if(this.identity.rotatedKeys&&this.identity.rotatedKeys.length>0)for(const e of this.identity.rotatedKeys){const i=await receiverKeyAgreement(e.x25519PrivateKey,t);if(i.ok){n=i.value,r.update("Decrypting with rotated keys...",45);break}}if(!n)return err("DECRYPT_FAILED:KEY_AGREEMENT")}}}else{if(!this.identity.mlKemSecretKey)return err("DECRYPT_FAILED:KEY_AGREEMENT");if("string"!=typeof e.ephemeralPub||"string"!=typeof e.kemCiphertext)return this.lastDetail="ephemeralPub or kemCiphertext not string",err("VERIFICATION_FAILED:INVALID_ENVELOPE");const t=fromBase64(e.ephemeralPub),i=fromBase64(e.kemCiphertext);if(!this.identity.mlKemPublicKey||!this.identity.mlKemSecretKey)return this.lastDetail="ML-KEM keys not available in identity",err("DECRYPT_FAILED:MISSING_MLKEM_KEYS");const a=await receiverHybridKeyAgreement(this.identity.x25519PrivateKey,this.identity.rawX25519PublicKey,t,i,this.identity.mlKemSecretKey,this.identity.mlKemPublicKey);if(a.ok)n=a.value;else{if(this.identity.rotatedKeys&&this.identity.rotatedKeys.length>0)for(const e of this.identity.rotatedKeys){if(!e.mlKemSecretKey)continue;const a=await receiverHybridKeyAgreement(e.x25519PrivateKey,this.identity.rawX25519PublicKey,t,i,e.mlKemSecretKey,this.identity.mlKemPublicKey);if(a.ok){n=a.value,r.update("Decrypting with rotated keys...",45);break}}if(!n)return err("DECRYPT_FAILED:KEY_AGREEMENT")}}if(r.update("Decrypting payload...",60),!n)return err("DECRYPT_FAILED:KEY_AGREEMENT");const o=await decryptPayload(e,n);if(!o.ok)return err("DECRYPT_FAILED:DECRYPTION");let c;r.update("Parsing message...",90);try{c=JSON.parse((new TextDecoder).decode(o.value))}catch{return err("DECRYPT_FAILED:PARSE")}return r.complete(),ok({sender:e.sender,payload:c,scope:e.scope,timestamp:e.timestamp,metadata:e.protocol&&e.documentationUrl?{protocol:e.protocol,documentationUrl:e.documentationUrl}:void 0})}async verifySignature(e){const t=await this.registry.resolve(e.sender);if(!t.ok)return err("VERIFICATION_FAILED:DID_NOT_IN_REGISTRY");const r=await importPublicKey(t.value);if(!r.ok)return err("VERIFICATION_FAILED:KEY_IMPORT_FAILED");const i=fromBase64(e.signature),a=JSON.stringify({v:e.v,alg:e.alg,sender:e.sender,recipient:e.recipient,timestamp:e.timestamp,nonce:e.nonce,scope:e.scope,payload:e.payload}),s=(new TextEncoder).encode(a),n=await verify(r.value,i,s);return n.ok?ok({sender:e.sender,valid:n.value}):err("VERIFICATION_FAILED:SIGNATURE_MISMATCH")}async exportSeeds(){const e=await exportPKCS8(this.identity.privateKey);if(!e.ok)return err("IDENTITY_FAILED");const t=await exportX25519PKCS8(this.identity.x25519PrivateKey);if(!t.ok)return err("IDENTITY_FAILED");const r=extractRawEd25519(e.value);if(!r.ok)return err("IDENTITY_FAILED");const i=extractRawX25519(t.value);return i.ok?ok({ed25519:r.value,x25519:i.value,mlKemSecretKey:this.identity.mlKemSecretKey,mlKemPublicKey:this.identity.mlKemPublicKey}):err("IDENTITY_FAILED")}async splitKey(e){const{splitKeyWithBackup:t}=await import("./backup-config.js"),r=await t(e,this.backupConfig);return r.ok?r:err("ENVELOPE_FAILED:SPLIT")}async reconstructKey(e){const{reconstructKeyFromBackup:t}=await import("./backup-config.js"),r=await t(e);return r.ok?r:err("DECRYPT_FAILED")}async receiveSigned(e){this.lastDetail="";const t=await this.verifyEnvelope(e);if(!t.ok)return t;let r;try{r=JSON.parse((new TextDecoder).decode(t.value.payloadBytes))}catch{return err("DECRYPT_FAILED:PARSE")}return ok({sender:e.sender,payload:r,scope:e.scope,timestamp:e.timestamp,metadata:e.protocol&&e.documentationUrl?{protocol:e.protocol,documentationUrl:e.documentationUrl}:void 0})}async discover(e){const{getToolRegistry:t}=await import("./agent-call.js"),r=t();if(!r)return[];if(!e)return r.listAll();return r.search(e)}middleware(){return async(e,t,r)=>{const i=validateEnvelope(e.body);if(!i.ok)return void t.status(400).json({error:i.error});const a=await this.receive(i.value);if(!a.ok){const e="TIMESTAMP_EXPIRED"===a.error||"REPLAY_DETECTED"===a.error?403:401;return void t.status(e).json({error:a.error})}e.agentMessage=a.value,r()}}cleanup(){this.cleanupTimer&&(clearTimeout(this.cleanupTimer),this.cleanupTimer=void 0)}dispose(){this.cleanup()}async trySenderECDH(e){const t=await this.registry.getEntry(e);if(!t.ok||!t.value.x25519PublicKey)return null;const r=!!t.value.mlDsaPublicKey,i=await importX25519PublicKey(t.value.x25519PublicKey);if(!i.ok)return null;if(t.value.mlKemPublicKey&&this.identity.mlKemSecretKey){const e=await senderHybridKeyAgreement(i.value,t.value.mlKemPublicKey);if(e.ok)return{sharedKey:e.value.sharedKey,ephemeralPublicKey:e.value.ephemeralPublicKey,kemCiphertext:e.value.kemCiphertext,recipientHasMlDsa:r}}const a=await senderKeyAgreement(i.value);return a.ok?{...a.value,recipientHasMlDsa:r}:null}async sendWithECDH(e,t,r,i,a){a?.update("Encrypting message with ECDH...",60);const s=await createEnvelope({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:t,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i});if(!s.ok)return err("ENVELOPE_FAILED:ENCRYPT");a?.update("Sending message...",90);const n=await this.transports[0].send(s.value,e.to);return n.ok&&a?.complete(),n}async sendWithHybrid(e,t,r,i,a,s){s?.update("Encrypting message with hybrid KEM...",60);const n=await createEnvelopeV2({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:t,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i,kemCiphertext:a});if(!n.ok)return err("ENVELOPE_FAILED:ENCRYPT");s?.update("Sending message...",90);const o=await this.transports[0].send(n.value,e.to);return o.ok&&s?.complete(),o}async sendWithHybridV3(e,t,r,i,a,s){if(!this.identity.mlDsaSecretKey)return err("ENVELOPE_FAILED:PQ_KEY_MISSING");s?.update("Encrypting with post-quantum signatures...",60);const n=await createEnvelopeV3({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:t,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i,kemCiphertext:a,mlDsaSecretKey:this.identity.mlDsaSecretKey});if(!n.ok)return this.lastDetail=`v3 envelope error: ${n.error}`,err("ENVELOPE_FAILED:ENCRYPT");s?.update("Sending message...",90);const o=await this.transports[0].send(n.value,e.to);return o.ok&&s?.complete(),o}async sendDirect(e,t,r,i){i?.update("Encrypting message...",60);const a=await createEnvelope({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:t,privateKey:this.identity.privateKey,sharedKey:r});if(!a.ok)return err("ENVELOPE_FAILED:ENCRYPT");i?.update("Sending message...",90);const s=await this.transports[0].send(a.value,e.to);return s.ok&&i?.complete(),s}async canUseXchange(e){const t=await this.registry.getEntry(e);return!!t.ok&&!0===t.value.xchange}async sendXchange(e,t,r){const i=e.splitChannelConfig??DEFAULT_SPLIT_CONFIG;this.transports.length<i.totalShares&&console.warn(`Split-channel: ${i.totalShares} shares but only ${this.transports.length} transport(s). For channel separation, provide at least ${i.totalShares} transports.`),r?.update("Generating Xchange key...",40);const a=await generateXchangeKey();if(!a.ok)return err("KEY_AGREEMENT_FAILED");r?.update("Encrypting message...",50);const s=await xchangeEncrypt(t,a.value);if(!s.ok)return err("ENVELOPE_FAILED:ENCRYPT");const n=await this.ensureCrypto(),o=i.totalShares,c=i.threshold,l=n.nextOddPrime(o)-1,d=n.pkcs7Pad(s.value,l),{key:u,signature:p}=await n.generateHMAC(d);let y;r?.update("Splitting message into shares...",60);try{y=n.splitXorIDA(d,o,c)}catch{return err("ENVELOPE_FAILED:SPLIT")}const h=toBase64(u),E=toBase64(p),m=generateUUID(),g=[];r?.update("Sending shares...",70);for(let t=0;t<y.length;t++){const i=y[t],a=formatShareHeader(toBase64(i)),s=(new TextEncoder).encode(a),n=await createEnvelopeV4({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,shareData:s,privateKey:this.identity.privateKey,shareIndex:t,shareTotal:o,shareThreshold:c,shareGroupId:m,shareHmacKey:h,shareHmacSig:E});if(!n.ok){g.push(err("ENVELOPE_FAILED:ENCRYPT"));continue}const l=this.transports[t%this.transports.length],d=await l.send(n.value,e.to);g.push(d);const u=70+Math.floor((t+1)/y.length*20);r?.update(`Sent share ${t+1}/${y.length}...`,u)}return g.filter(e=>e.ok).length<c?err("SEND_FAILED:BELOW_THRESHOLD"):(r?.complete(),ok(void 0))}async sendSplitChannel(e,t,r,i,a,s,n){const o=e.splitChannelConfig??DEFAULT_SPLIT_CONFIG;this.transports.length<o.totalShares&&console.warn(`Split-channel: ${o.totalShares} shares but only ${this.transports.length} transport(s). For channel separation, provide at least ${o.totalShares} transports.`),n?.update("Splitting message into shares...",50);const c=await splitForChannel(t,o);if(!c.ok)return err("ENVELOPE_FAILED:SPLIT");const l=c.value;n?.update("Encrypting and sending shares...",70);return(await this.sendShareEnvelopes(e,l,r,i,a,s,n)).filter(e=>e.ok).length<o.threshold?err("SEND_FAILED:BELOW_THRESHOLD"):(n?.complete(),ok(void 0))}async sendShareEnvelopes(e,t,r,i,a,s,n){const o=[];for(let c=0;c<t.length;c++){const l=t[c],d=(new TextEncoder).encode(l.data);let u;if(u=a&&i&&s&&this.identity.mlDsaSecretKey?await createEnvelopeV3({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:d,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i,kemCiphertext:a,mlDsaSecretKey:this.identity.mlDsaSecretKey,shareIndex:l.index,shareTotal:l.total,shareThreshold:l.threshold,shareGroupId:l.groupId,shareHmacKey:l.hmacKey,shareHmacSig:l.hmacSig}):a&&i?await createEnvelopeV2({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:d,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i,kemCiphertext:a,shareIndex:l.index,shareTotal:l.total,shareThreshold:l.threshold,shareGroupId:l.groupId,shareHmacKey:l.hmacKey,shareHmacSig:l.hmacSig}):await createEnvelope({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:d,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i,shareIndex:l.index,shareTotal:l.total,shareThreshold:l.threshold,shareGroupId:l.groupId,shareHmacKey:l.hmacKey,shareHmacSig:l.hmacSig}),!u.ok){o.push(err("ENVELOPE_FAILED:ENCRYPT"));continue}const p=this.transports[c%this.transports.length],y=await p.send(u.value,e.to);o.push(y);const h=70+Math.floor((c+1)/t.length*20);n?.update(`Sent share ${c+1}/${t.length}...`,h)}return o}async receiveSplitShare(e){if(void 0===e.shareGroupId)return err("VERIFICATION_FAILED");const t=await this.receiveRaw(e);if(!t.ok)return t;const{sender:r,decryptedText:i,scope:a,timestamp:s}=t.value,n={data:i,index:e.shareIndex??0,total:e.shareTotal??2,threshold:e.shareThreshold??2,groupId:e.shareGroupId,hmacKey:e.shareHmacKey??"",hmacSig:e.shareHmacSig??""};return this.accumulateShare(n,r,a,s)}async receiveXchangeShare(e){this.lastDetail="";const t=await this.verifyEnvelope(e);if(!t.ok)return t;const r={data:(new TextDecoder).decode(t.value.payloadBytes),index:e.shareIndex,total:e.shareTotal,threshold:e.shareThreshold,groupId:e.shareGroupId,hmacKey:e.shareHmacKey,hmacSig:e.shareHmacSig};return this.accumulateXchangeShare(r,e.sender,e.scope,e.timestamp)}async accumulateXchangeShare(e,t,r,i){const a=this.shareAccumulator.get(e.groupId)??[];if(a.some(t=>t.index===e.index)||(a.push(e),this.shareAccumulator.set(e.groupId,a)),a.length<e.threshold)return ok(null);this.shareAccumulator.delete(e.groupId);const s=a.slice(0,e.threshold),n=e.total,o=e.threshold;let c;try{c=s.map(e=>fromBase64(parseShareHeader(e.data)))}catch{return err("DECRYPT_FAILED")}const l=s.map(e=>e.index),d=await this.ensureCrypto();let u,p,y;try{u=d.reconstructXorIDA(c,l,n,o)}catch{return err("DECRYPT_FAILED")}try{p=fromBase64(s[0].hmacKey),y=fromBase64(s[0].hmacSig)}catch{return err("DECRYPT_FAILED")}if(!await d.verifyHMAC(p,u,y))return this.lastDetail="HMAC verification failed before decrypt",err("DECRYPT_FAILED");const h=d.nextOddPrime(n)-1,E=d.pkcs7Unpad(u,h);if(!E.ok)return err("DECRYPT_FAILED");const m=await xchangeDecrypt(E.value);if(!m.ok)return err("DECRYPT_FAILED:DECRYPTION");let g;try{g=JSON.parse((new TextDecoder).decode(m.value))}catch{return err("DECRYPT_FAILED:PARSE")}return ok({sender:t,payload:g,scope:r,timestamp:i})}async accumulateShare(e,t,r,i){const a=this.shareAccumulator.get(e.groupId)??[];if(a.some(t=>t.index===e.index)||(a.push(e),this.shareAccumulator.set(e.groupId,a)),a.length<e.threshold)return ok(null);this.shareAccumulator.delete(e.groupId);const s=await reconstructFromChannel(a);if(!s.ok)return err("DECRYPT_FAILED");let n;try{n=JSON.parse((new TextDecoder).decode(s.value))}catch{return err("DECRYPT_FAILED")}return ok({sender:t,payload:n,scope:r,timestamp:i})}async verifyEnvelope(e){if(!e||"object"!=typeof e)return this.lastDetail="envelope is null or not an object",err("VERIFICATION_FAILED:INVALID_ENVELOPE");if(1!==e.v&&2!==e.v&&3!==e.v&&4!==e.v||"Ed25519"!==e.alg)return this.lastDetail=`v=${String(e.v)}, alg=${String(e.alg)}`,err("VERIFICATION_FAILED:UNSUPPORTED_VERSION");if("number"!=typeof e.timestamp||!Number.isFinite(e.timestamp))return this.lastDetail=`timestamp=${String(e.timestamp)} (must be finite number)`,err("VERIFICATION_FAILED:INVALID_ENVELOPE");const t=Math.abs(Date.now()-e.timestamp);if(t>this.timestampWindowMs)return this.lastDetail=`age=${t}ms, max=${this.timestampWindowMs}ms`,err("TIMESTAMP_EXPIRED");const r=void 0!==e.shareGroupId?{shareGroupId:e.shareGroupId,shareIndex:e.shareIndex}:void 0;if(!await this.nonceStore.check(e.nonce,e.sender,r))return this.lastDetail=`nonce=${e.nonce}`,err("REPLAY_DETECTED");const i=await this.registry.resolve(e.sender);if(!i.ok)return this.lastDetail=`did=${e.sender}`,err("VERIFICATION_FAILED:DID_NOT_IN_REGISTRY");const a=await importPublicKey(i.value);if(!a.ok)return this.lastDetail=`did=${e.sender}`,err("VERIFICATION_FAILED:KEY_IMPORT_FAILED");if(!e.signature||"string"!=typeof e.signature)return this.lastDetail="signature field missing or invalid",err("VERIFICATION_FAILED:SIGNATURE_MISMATCH");const s=fromBase64(e.signature),n=JSON.stringify({v:e.v,alg:e.alg,sender:e.sender,recipient:e.recipient,timestamp:e.timestamp,nonce:e.nonce,scope:e.scope,payload:e.payload}),o=(new TextEncoder).encode(n),c=await verify(a.value,s,o);if(!c.ok||!c.value)return this.lastDetail="signature does not match canonical envelope (v1.1.3+ required)",err("VERIFICATION_FAILED:SIGNATURE_MISMATCH");if(3===e.v&&"pqSignature"in e){if("string"!=typeof e.pqSignature)return this.lastDetail="pqSignature field not a string",err("VERIFICATION_FAILED:INVALID_ENVELOPE");const t=await this.registry.getEntry(e.sender);if(!t.ok||!t.value.mlDsaPublicKey)return this.lastDetail=`did=${e.sender} missing ML-DSA public key`,err("VERIFICATION_FAILED:PQ_KEY_MISSING");const r=fromBase64(e.pqSignature),i=await verifyMlDsa65(t.value.mlDsaPublicKey,r,o);if(!i.ok||!i.value)return this.lastDetail="ML-DSA-65 signature does not match canonical envelope (v1.1.3+ required)",err("VERIFICATION_FAILED:PQ_SIGNATURE_MISMATCH")}if(!await this.registry.hasScope(e.sender,e.scope))return this.lastDetail=`scope=${e.scope}`,err("SCOPE_DENIED");if("string"!=typeof e.payload)return this.lastDetail="payload field not a string",err("VERIFICATION_FAILED:INVALID_ENVELOPE");const l=fromBase64(e.payload);return ok({senderRawKey:i.value,payloadBytes:l})}async receiveRaw(e){const t=await this.verifyEnvelope(e);if(!t.ok)return t;const{senderRawKey:r}=t.value;if(4===e.v)return err("VERIFICATION_FAILED:UNSUPPORTED_VERSION");let i;if(2!==e.v&&3!==e.v||!("kemCiphertext"in e)){if(!e.ephemeralPub)return err("DECRYPT_FAILED:NO_EPHEMERAL_KEY");{if("string"!=typeof e.ephemeralPub)return err("DECRYPT_FAILED:INVALID_ENVELOPE");const t=fromBase64(e.ephemeralPub),r=await receiverKeyAgreement(this.identity.x25519PrivateKey,t);if(r.ok)i=r.value;else{if(this.identity.rotatedKeys&&this.identity.rotatedKeys.length>0)for(const e of this.identity.rotatedKeys){const r=await receiverKeyAgreement(e.x25519PrivateKey,t);if(r.ok){i=r.value;break}}if(!i)return err("DECRYPT_FAILED:KEY_AGREEMENT")}}}else{if(!this.identity.mlKemSecretKey)return err("DECRYPT_FAILED:KEY_AGREEMENT");if("string"!=typeof e.ephemeralPub||"string"!=typeof e.kemCiphertext)return err("DECRYPT_FAILED:INVALID_ENVELOPE");const t=fromBase64(e.ephemeralPub),r=fromBase64(e.kemCiphertext);if(!this.identity.mlKemPublicKey||!this.identity.mlKemSecretKey)return this.lastDetail="ML-KEM keys not available in identity",err("DECRYPT_FAILED:MISSING_MLKEM_KEYS");const a=await receiverHybridKeyAgreement(this.identity.x25519PrivateKey,this.identity.rawX25519PublicKey,t,r,this.identity.mlKemSecretKey,this.identity.mlKemPublicKey);if(a.ok)i=a.value;else{if(this.identity.rotatedKeys&&this.identity.rotatedKeys.length>0)for(const e of this.identity.rotatedKeys){if(!e.mlKemSecretKey)continue;const a=await receiverHybridKeyAgreement(e.x25519PrivateKey,this.identity.rawX25519PublicKey,t,r,e.mlKemSecretKey,this.identity.mlKemPublicKey);if(a.ok){i=a.value;break}}if(!i)return err("DECRYPT_FAILED:KEY_AGREEMENT")}}if(!i)return err("DECRYPT_FAILED:KEY_AGREEMENT");const a=await decryptPayload(e,i);if(!a.ok)return err("DECRYPT_FAILED:DECRYPTION");const s=(new TextDecoder).decode(a.value);return ok({sender:e.sender,decryptedText:s,scope:e.scope,timestamp:e.timestamp})}async createTestEnvelope(e,t,r){const i=await this.registry.getEntry(e);if(!i.ok||!i.value.x25519PublicKey)return null;const a=await importX25519PublicKey(i.value.x25519PublicKey);if(!a.ok)return null;const s=await senderKeyAgreement(a.value);if(!s.ok)return null;const n=(new TextEncoder).encode(JSON.stringify(t)),o=await createEnvelope({senderDid:this.identity.did,recipientDid:e,scope:r,plaintext:n,privateKey:this.identity.privateKey,sharedKey:s.value.sharedKey,ephemeralPublicKey:s.value.ephemeralPublicKey});return o.ok?o.value:null}async invite(e){if(!this.transports||0===this.transports.length)return err("SEND_FAILED");const t=Buffer.from(this.identity.rawPublicKey).toString("base64"),r={from:this.identity.did,to:e.to,payload:{agentName:this.name,message:e.message,publicKey:t,endpoint:""}},i=this.transports[0];if(!i)return err("SEND_FAILED");return(await i.send(r,e.to)).ok?ok(void 0):err("SEND_FAILED")}}export{generateSharedKey};
|
|
1
|
+
import{ok,err}from"./_deps/shared/index.js";import{fromBase64,toBase64,generateUUID,formatShareHeader,parseShareHeader}from"./crypto-utils.js";import{loadCryptoPackage,getCrypto}from"./vault-store-loader.js";import{QuotaExceededError,VaultStoreError}from"./errors.js";import{generateIdentity,verify,importPublicKey,identityFromSeed,exportPKCS8,exportX25519PKCS8,extractRawEd25519,extractRawX25519}from"./identity.js";import{createEnvelope,createEnvelopeV2,createEnvelopeV3,createEnvelopeV4,decryptPayload,validateEnvelope,generateSharedKey}from"./envelope.js";import{generateXchangeKey,xchangeEncrypt,xchangeDecrypt}from"./_deps/xchange/index.js";import{verifyMlDsa65}from"./identity.js";import{senderKeyAgreement,receiverKeyAgreement,senderHybridKeyAgreement,receiverHybridKeyAgreement,importX25519PublicKey}from"./key-agreement.js";import{splitForChannel,reconstructFromChannel,DEFAULT_SPLIT_CONFIG}from"./split-channel.js";import{MemoryNonceStore}from"./nonce-store.js";import{HttpsTransportAdapter}from"./transport.js";import{MemoryTrustRegistry,HttpTrustRegistry}from"./trust-registry.js";import{ProgressReporter}from"./_deps/ux-helpers/index.js";import{DefaultSecurityPolicy,describeSecurityMode}from"./security-policy.js";import{DEFAULT_BACKUP_CONFIG}from"./backup-config.js";const DEFAULT_RELAY_URL=process.env.XBIND_RELAY_URL||"https://private.me/relay",DEFAULT_REGISTRY_URL=process.env.XBIND_REGISTRY_URL||"https://private.me/registry";export function parseAgentError(e){const t=e.split(":");return 1===t.length?{code:t[0]??e}:{code:t[0]??e,subCode:t.slice(1).join(":")}}const TIMESTAMP_WINDOW_MS=3e4;export class Agent{identity;name;registry;transports;nonceStore;timestampWindowMs;securityPolicy;backupConfig;shareAccumulator=new Map;lastDetail="";lastSecurityDecision;cleanupTimer;cryptoModule=null;get lastErrorDetail(){return this.lastDetail}get lastSecurity(){return this.lastSecurityDecision}constructor(e,t,r,i,a,s,n,o){this.identity=e,this.name=t,this.registry=r,this.transports=i,this.nonceStore=a,this.timestampWindowMs=s,this.securityPolicy=n??new DefaultSecurityPolicy,this.backupConfig=o??DEFAULT_BACKUP_CONFIG}get did(){return this.identity.did}getTransports(){return this.transports}async ensureCrypto(){if(this.cryptoModule)return this.cryptoModule;const e=getCrypto();if(e)return this.cryptoModule=e,e;const t=await loadCryptoPackage(this.identity);if(!t.ok){if("VAULT_QUOTA_EXCEEDED"===t.error){const e="https://private.me/subscribe?product=xbind&tier=pro";throw new QuotaExceededError(`Monthly usage quota exceeded (Free tier: 100K operations/month). Upgrade to Pro tier for unlimited access at $5 per 100K operations. Visit: ${e}`,e)}throw new VaultStoreError(t.error,`Failed to load crypto package: ${t.error}`)}return this.cryptoModule=t.value,t.value}static isSupported(){try{return void 0!==globalThis.crypto&&void 0!==globalThis.crypto.subtle&&"function"==typeof globalThis.crypto.subtle.generateKey&&"function"==typeof globalThis.crypto.subtle.sign&&"function"==typeof globalThis.crypto.subtle.verify&&"function"==typeof globalThis.crypto.subtle.encrypt&&"function"==typeof globalThis.crypto.getRandomValues}catch{return!1}}static async fromIdentity(e,t){const r=t.nonceStore??new MemoryNonceStore,i=t.timestampWindowMs??3e4,a=Array.isArray(t.transport)?t.transport:[t.transport],s=new Agent(e,t.name??e.did,t.registry,a,r,i,t.securityPolicy,t.backupConfig);return ok(s)}static fromParts(e,t,r,i){const a=Array.isArray(r)?r:[r];return new Agent(e,i?.name??e.did,t,a,i?.nonceStore??new MemoryNonceStore,i?.timestampWindowMs??3e4,i?.securityPolicy,i?.backupConfig)}static async fromSeed(e,t){const r=await identityFromSeed(e,{postQuantumSig:t.postQuantumSig});if(!r.ok)return err("IDENTITY_FAILED:KEYGEN");const i=await t.registry.register(r.value.did,r.value.rawPublicKey,t.name??r.value.did,t.scopes,r.value.rawX25519PublicKey,r.value.mlKemPublicKey,r.value.mlDsaPublicKey,t.xchange??!1);if(!i.ok&&"ALREADY_REGISTERED"!==i.error){const e="NETWORK_ERROR"===i.error?"REGISTRATION_FAILED:NETWORK_ERROR":"REGISTRATION_FAILED";return err(e)}const a=t.nonceStore??new MemoryNonceStore,s=t.timestampWindowMs??3e4,n=Array.isArray(t.transport)?t.transport:[t.transport];return ok(new Agent(r.value,t.name??r.value.did,t.registry,n,a,s,t.securityPolicy,t.backupConfig))}static async lazy(e){const{createLazyAgent:t}=await import("./lazy-init.js");return t(e)}isReady(){return void 0!==this.identity&&void 0!==this.registry&&this.transports.length>0}static async create(e){const t=await generateIdentity({postQuantumSig:e.postQuantumSig});if(!t.ok)return err("IDENTITY_FAILED:KEYGEN");const r=await e.registry.register(t.value.did,t.value.rawPublicKey,e.name,e.scopes,t.value.rawX25519PublicKey,t.value.mlKemPublicKey,t.value.mlDsaPublicKey,e.xchange??!1);if(!r.ok){const e="ALREADY_REGISTERED"===r.error?"REGISTRATION_FAILED:ALREADY_REGISTERED":"NETWORK_ERROR"===r.error?"REGISTRATION_FAILED:NETWORK_ERROR":"REGISTRATION_FAILED";return err(e)}const i=e.nonceStore??new MemoryNonceStore,a=e.timestampWindowMs??3e4,s=Array.isArray(e.transport)?e.transport:[e.transport],n=new Agent(t.value,e.name,e.registry,s,i,a,e.securityPolicy,e.backupConfig);return ok(n)}static async quickstart(e){const t=new MemoryTrustRegistry,r=new HttpsTransportAdapter({baseUrl:DEFAULT_RELAY_URL}),i=await generateIdentity({postQuantumSig:e?.postQuantumSig??!1});if(!i.ok)throw new Error("Failed to generate ephemeral identity");const a=e?.name??`agent-${Date.now()}`,s=await t.register(i.value.did,i.value.rawPublicKey,a,void 0,i.value.rawX25519PublicKey,i.value.mlKemPublicKey,i.value.mlDsaPublicKey,!1);if(!s.ok)throw new Error(`Failed to register ephemeral identity: ${s.error}`);const n=new Agent(i.value,a,t,[r],new MemoryNonceStore,3e4,void 0,void 0);return n.cleanupTimer=setTimeout(async()=>{await t.revoke(i.value.did)},36e5),n}static async from(e={}){const t=e.identity??"persistent",r=e.identityTTL??36e5,i="ephemeral"===t,a="string"==typeof e.registry?new HttpTrustRegistry({baseUrl:e.registry}):e.registry??(i?new MemoryTrustRegistry:new HttpTrustRegistry({baseUrl:DEFAULT_REGISTRY_URL})),s=e.transport?Array.isArray(e.transport)?e.transport:[e.transport]:[new HttpsTransportAdapter({baseUrl:DEFAULT_RELAY_URL})],n=await generateIdentity({postQuantumSig:e.postQuantumSig??!1});if(!n.ok)throw new Error("Failed to generate identity");const o=i?`ephemeral-agent-${Date.now()}`:`agent-${Date.now()}`,c=await a.register(n.value.did,n.value.rawPublicKey,o,void 0,n.value.rawX25519PublicKey,n.value.mlKemPublicKey,n.value.mlDsaPublicKey,!1);if(!c.ok)throw new Error(`Failed to register identity: ${c.error}`);const l=new Agent(n.value,o,a,s,new MemoryNonceStore,3e4,e.securityPolicy,e.backupConfig);return i&&(l.cleanupTimer=setTimeout(async()=>{await a.revoke(n.value.did)},r)),l}async send(e){const t=new ProgressReporter(e.onProgress);t.start("Resolving recipient identity...");const r=await this.registry.resolve(e.to);if(!r.ok)return err("REVOKED"===r.error?"RECIPIENT_REVOKED":"RECIPIENT_NOT_FOUND");const i=e.scope??"default";t.update("Checking recipient authorization...",10);if(!await this.registry.hasReceiveScope(e.to,i))return this.lastDetail=`recipient=${e.to}, scope=${i}`,err("RECEIVER_SCOPE_DENIED");t.update("Preparing message...",15);const a=(new TextEncoder).encode(JSON.stringify(e.payload));t.update("Determining security level...",20);const s=this.securityPolicy.classify({action:e.action??"send",params:"object"==typeof e.payload&&null!==e.payload?e.payload:{},sender:this.did,recipient:e.to,scope:i,securityOverride:e.security});this.lastSecurityDecision=s,t.update(`Security: ${describeSecurityMode(s.mode)} — ${s.reason}`,25);const n=void 0!==e.splitChannel?e.splitChannel:"split"===s.mode.type;if(n&&(e.xchange||"xchange"===s.mode.type)){t.update("Checking Xchange support...",20);if(await this.canUseXchange(e.to))return this.sendXchange(e,a,t)}t.update("Establishing key agreement...",30);const o=await this.trySenderECDH(e.to);return o?n?this.sendSplitChannel(e,a,o.sharedKey,o.ephemeralPublicKey,o.kemCiphertext,o.recipientHasMlDsa,t):o.kemCiphertext&&o.recipientHasMlDsa&&this.identity.mlDsaSecretKey?this.sendWithHybridV3(e,a,o.sharedKey,o.ephemeralPublicKey,o.kemCiphertext,t):o.kemCiphertext?this.sendWithHybrid(e,a,o.sharedKey,o.ephemeralPublicKey,o.kemCiphertext,t):this.sendWithECDH(e,a,o.sharedKey,o.ephemeralPublicKey,t):err("KEY_AGREEMENT_FAILED:RECIPIENT_HAS_NO_X25519_KEY")}async receive(e,t){this.lastDetail="";const r=new ProgressReporter(t?.onProgress);r.start("Verifying envelope signature...");const i=await this.verifyEnvelope(e);if(!i.ok)return i;const{payloadBytes:a}=i.value;let s;if(4===e.v)return err("VERIFICATION_FAILED:UNSUPPORTED_VERSION");if(r.update("Deriving shared key...",30),2!==e.v&&3!==e.v||!("kemCiphertext"in e)){if(!e.ephemeralPub){if(t?.allowCleartext){let t;try{t=JSON.parse((new TextDecoder).decode(a))}catch{return err("DECRYPT_FAILED:PARSE")}return r.complete(),ok({sender:e.sender,payload:t,scope:e.scope,timestamp:e.timestamp})}return err("DECRYPT_FAILED:NO_EPHEMERAL_KEY")}{if("string"!=typeof e.ephemeralPub)return this.lastDetail="ephemeralPub not string",err("VERIFICATION_FAILED:INVALID_ENVELOPE");const t=fromBase64(e.ephemeralPub),i=await receiverKeyAgreement(this.identity.x25519PrivateKey,t);if(i.ok)s=i.value;else{if(this.identity.rotatedKeys&&this.identity.rotatedKeys.length>0)for(const e of this.identity.rotatedKeys){const i=await receiverKeyAgreement(e.x25519PrivateKey,t);if(i.ok){s=i.value,r.update("Decrypting with rotated keys...",45);break}}if(!s)return err("DECRYPT_FAILED:KEY_AGREEMENT")}}}else{if(!this.identity.mlKemSecretKey)return err("DECRYPT_FAILED:KEY_AGREEMENT");if("string"!=typeof e.ephemeralPub||"string"!=typeof e.kemCiphertext)return this.lastDetail="ephemeralPub or kemCiphertext not string",err("VERIFICATION_FAILED:INVALID_ENVELOPE");const t=fromBase64(e.ephemeralPub),i=fromBase64(e.kemCiphertext);if(!this.identity.mlKemPublicKey||!this.identity.mlKemSecretKey)return this.lastDetail="ML-KEM keys not available in identity",err("DECRYPT_FAILED:MISSING_MLKEM_KEYS");const a=await receiverHybridKeyAgreement(this.identity.x25519PrivateKey,this.identity.rawX25519PublicKey,t,i,this.identity.mlKemSecretKey,this.identity.mlKemPublicKey);if(a.ok)s=a.value;else{if(this.identity.rotatedKeys&&this.identity.rotatedKeys.length>0)for(const e of this.identity.rotatedKeys){if(!e.mlKemSecretKey)continue;const a=await receiverHybridKeyAgreement(e.x25519PrivateKey,this.identity.rawX25519PublicKey,t,i,e.mlKemSecretKey,this.identity.mlKemPublicKey);if(a.ok){s=a.value,r.update("Decrypting with rotated keys...",45);break}}if(!s)return err("DECRYPT_FAILED:KEY_AGREEMENT")}}if(r.update("Decrypting payload...",60),!s)return err("DECRYPT_FAILED:KEY_AGREEMENT");const n=await decryptPayload(e,s);if(!n.ok)return err("DECRYPT_FAILED:DECRYPTION");let o;r.update("Parsing message...",90);try{o=JSON.parse((new TextDecoder).decode(n.value))}catch{return err("DECRYPT_FAILED:PARSE")}return r.complete(),ok({sender:e.sender,payload:o,scope:e.scope,timestamp:e.timestamp,metadata:e.protocol&&e.documentationUrl?{protocol:e.protocol,documentationUrl:e.documentationUrl}:void 0})}async verifySignature(e){const t=await this.registry.resolve(e.sender);if(!t.ok)return err("VERIFICATION_FAILED:DID_NOT_IN_REGISTRY");const r=await importPublicKey(t.value);if(!r.ok)return err("VERIFICATION_FAILED:KEY_IMPORT_FAILED");const i=fromBase64(e.signature),a=JSON.stringify({v:e.v,alg:e.alg,sender:e.sender,recipient:e.recipient,timestamp:e.timestamp,nonce:e.nonce,scope:e.scope,payload:e.payload}),s=(new TextEncoder).encode(a),n=await verify(r.value,i,s);return n.ok?ok({sender:e.sender,valid:n.value}):err("VERIFICATION_FAILED:SIGNATURE_MISMATCH")}async exportSeeds(){const e=await exportPKCS8(this.identity.privateKey);if(!e.ok)return err("IDENTITY_FAILED");const t=await exportX25519PKCS8(this.identity.x25519PrivateKey);if(!t.ok)return err("IDENTITY_FAILED");const r=extractRawEd25519(e.value);if(!r.ok)return err("IDENTITY_FAILED");const i=extractRawX25519(t.value);return i.ok?ok({ed25519:r.value,x25519:i.value,mlKemSecretKey:this.identity.mlKemSecretKey,mlKemPublicKey:this.identity.mlKemPublicKey}):err("IDENTITY_FAILED")}async splitKey(e){const{splitKeyWithBackup:t}=await import("./backup-config.js"),r=await t(e,this.backupConfig);return r.ok?r:err("ENVELOPE_FAILED:SPLIT")}async reconstructKey(e){const{reconstructKeyFromBackup:t}=await import("./backup-config.js"),r=await t(e);return r.ok?r:err("DECRYPT_FAILED")}async receiveSigned(e){this.lastDetail="";const t=await this.verifyEnvelope(e);if(!t.ok)return t;let r;try{r=JSON.parse((new TextDecoder).decode(t.value.payloadBytes))}catch{return err("DECRYPT_FAILED:PARSE")}return ok({sender:e.sender,payload:r,scope:e.scope,timestamp:e.timestamp,metadata:e.protocol&&e.documentationUrl?{protocol:e.protocol,documentationUrl:e.documentationUrl}:void 0})}async discover(e){const{getToolRegistry:t}=await import("./agent-call.js"),r=t();if(!r)return[];if(!e)return r.listAll();return r.search(e)}middleware(){return async(e,t,r)=>{const i=validateEnvelope(e.body);if(!i.ok)return void t.status(400).json({error:i.error});const a=await this.receive(i.value);if(!a.ok){const e="TIMESTAMP_EXPIRED"===a.error||"REPLAY_DETECTED"===a.error?403:401;return void t.status(e).json({error:a.error})}e.agentMessage=a.value,r()}}cleanup(){this.cleanupTimer&&(clearTimeout(this.cleanupTimer),this.cleanupTimer=void 0)}dispose(){this.cleanup()}async trySenderECDH(e){const t=await this.registry.getEntry(e);if(!t.ok||!t.value.x25519PublicKey)return null;const r=!!t.value.mlDsaPublicKey,i=await importX25519PublicKey(t.value.x25519PublicKey);if(!i.ok)return null;if(t.value.mlKemPublicKey&&this.identity.mlKemSecretKey){const e=await senderHybridKeyAgreement(i.value,t.value.mlKemPublicKey);if(e.ok)return{sharedKey:e.value.sharedKey,ephemeralPublicKey:e.value.ephemeralPublicKey,kemCiphertext:e.value.kemCiphertext,recipientHasMlDsa:r}}const a=await senderKeyAgreement(i.value);return a.ok?{...a.value,recipientHasMlDsa:r}:null}async sendWithECDH(e,t,r,i,a){a?.update("Encrypting message with ECDH...",60);const s=await createEnvelope({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:t,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i});if(!s.ok)return err("ENVELOPE_FAILED:ENCRYPT");a?.update("Sending message...",90);const n=await this.transports[0].send(s.value,e.to);return n.ok&&a?.complete(),n}async sendWithHybrid(e,t,r,i,a,s){s?.update("Encrypting message with hybrid KEM...",60);const n=await createEnvelopeV2({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:t,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i,kemCiphertext:a});if(!n.ok)return err("ENVELOPE_FAILED:ENCRYPT");s?.update("Sending message...",90);const o=await this.transports[0].send(n.value,e.to);return o.ok&&s?.complete(),o}async sendWithHybridV3(e,t,r,i,a,s){if(!this.identity.mlDsaSecretKey)return err("ENVELOPE_FAILED:PQ_KEY_MISSING");s?.update("Encrypting with post-quantum signatures...",60);const n=await createEnvelopeV3({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:t,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i,kemCiphertext:a,mlDsaSecretKey:this.identity.mlDsaSecretKey});if(!n.ok)return this.lastDetail=`v3 envelope error: ${n.error}`,err("ENVELOPE_FAILED:ENCRYPT");s?.update("Sending message...",90);const o=await this.transports[0].send(n.value,e.to);return o.ok&&s?.complete(),o}async sendDirect(e,t,r,i){i?.update("Encrypting message...",60);const a=await createEnvelope({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:t,privateKey:this.identity.privateKey,sharedKey:r});if(!a.ok)return err("ENVELOPE_FAILED:ENCRYPT");i?.update("Sending message...",90);const s=await this.transports[0].send(a.value,e.to);return s.ok&&i?.complete(),s}async canUseXchange(e){const t=await this.registry.getEntry(e);return!!t.ok&&!0===t.value.xchange}async sendXchange(e,t,r){const i=e.splitChannelConfig??DEFAULT_SPLIT_CONFIG;this.transports.length<i.totalShares&&console.warn(`Split-channel: ${i.totalShares} shares but only ${this.transports.length} transport(s). For channel separation, provide at least ${i.totalShares} transports.`),r?.update("Generating Xchange key...",40);const a=await generateXchangeKey();if(!a.ok)return err("KEY_AGREEMENT_FAILED");r?.update("Encrypting message...",50);const s=await xchangeEncrypt(t,a.value);if(!s.ok)return err("ENVELOPE_FAILED:ENCRYPT");const n=await this.ensureCrypto(),o=i.totalShares,c=i.threshold,l=n.nextOddPrime(o)-1,d=n.pkcs7Pad(s.value,l),{key:p,signature:u}=await n.generateHMAC(d);let y;r?.update("Splitting message into shares...",60);try{y=n.splitXorIDA(d,o,c)}catch{return err("ENVELOPE_FAILED:SPLIT")}const h=toBase64(p),E=toBase64(u),m=generateUUID(),g=[];r?.update("Sending shares...",70);for(let t=0;t<y.length;t++){const i=y[t],a=formatShareHeader(toBase64(i)),s=(new TextEncoder).encode(a),n=await createEnvelopeV4({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,shareData:s,privateKey:this.identity.privateKey,shareIndex:t,shareTotal:o,shareThreshold:c,shareGroupId:m,shareHmacKey:h,shareHmacSig:E});if(!n.ok){g.push(err("ENVELOPE_FAILED:ENCRYPT"));continue}const l=this.transports[t%this.transports.length],d=await l.send(n.value,e.to);g.push(d);const p=70+Math.floor((t+1)/y.length*20);r?.update(`Sent share ${t+1}/${y.length}...`,p)}return g.filter(e=>e.ok).length<c?err("SEND_FAILED:BELOW_THRESHOLD"):(r?.complete(),ok(void 0))}async sendSplitChannel(e,t,r,i,a,s,n){const o=e.splitChannelConfig??DEFAULT_SPLIT_CONFIG;this.transports.length<o.totalShares&&console.warn(`Split-channel: ${o.totalShares} shares but only ${this.transports.length} transport(s). For channel separation, provide at least ${o.totalShares} transports.`),n?.update("Splitting message into shares...",50);const c=await splitForChannel(t,o);if(!c.ok)return err("ENVELOPE_FAILED:SPLIT");const l=c.value;n?.update("Encrypting and sending shares...",70);return(await this.sendShareEnvelopes(e,l,r,i,a,s,n)).filter(e=>e.ok).length<o.threshold?err("SEND_FAILED:BELOW_THRESHOLD"):(n?.complete(),ok(void 0))}async sendShareEnvelopes(e,t,r,i,a,s,n){const o=[];for(let c=0;c<t.length;c++){const l=t[c],d=(new TextEncoder).encode(l.data);let p;if(p=a&&i&&s&&this.identity.mlDsaSecretKey?await createEnvelopeV3({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:d,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i,kemCiphertext:a,mlDsaSecretKey:this.identity.mlDsaSecretKey,shareIndex:l.index,shareTotal:l.total,shareThreshold:l.threshold,shareGroupId:l.groupId,shareHmacKey:l.hmacKey,shareHmacSig:l.hmacSig}):a&&i?await createEnvelopeV2({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:d,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i,kemCiphertext:a,shareIndex:l.index,shareTotal:l.total,shareThreshold:l.threshold,shareGroupId:l.groupId,shareHmacKey:l.hmacKey,shareHmacSig:l.hmacSig}):await createEnvelope({senderDid:this.identity.did,recipientDid:e.to,scope:e.scope,plaintext:d,privateKey:this.identity.privateKey,sharedKey:r,ephemeralPublicKey:i,shareIndex:l.index,shareTotal:l.total,shareThreshold:l.threshold,shareGroupId:l.groupId,shareHmacKey:l.hmacKey,shareHmacSig:l.hmacSig}),!p.ok){o.push(err("ENVELOPE_FAILED:ENCRYPT"));continue}const u=this.transports[c%this.transports.length],y=await u.send(p.value,e.to);o.push(y);const h=70+Math.floor((c+1)/t.length*20);n?.update(`Sent share ${c+1}/${t.length}...`,h)}return o}async receiveSplitShare(e){if(void 0===e.shareGroupId)return err("VERIFICATION_FAILED");const t=await this.receiveRaw(e);if(!t.ok)return t;const{sender:r,decryptedText:i,scope:a,timestamp:s}=t.value,n={data:i,index:e.shareIndex??0,total:e.shareTotal??2,threshold:e.shareThreshold??2,groupId:e.shareGroupId,hmacKey:e.shareHmacKey??"",hmacSig:e.shareHmacSig??""};return this.accumulateShare(n,r,a,s)}async receiveXchangeShare(e){this.lastDetail="";const t=await this.verifyEnvelope(e);if(!t.ok)return t;const r={data:(new TextDecoder).decode(t.value.payloadBytes),index:e.shareIndex,total:e.shareTotal,threshold:e.shareThreshold,groupId:e.shareGroupId,hmacKey:e.shareHmacKey,hmacSig:e.shareHmacSig};return this.accumulateXchangeShare(r,e.sender,e.scope,e.timestamp)}async accumulateXchangeShare(e,t,r,i){const a=this.shareAccumulator.get(e.groupId)??[];if(a.some(t=>t.index===e.index)||(a.push(e),this.shareAccumulator.set(e.groupId,a)),a.length<e.threshold)return ok(null);this.shareAccumulator.delete(e.groupId);const s=a.slice(0,e.threshold),n=e.total,o=e.threshold;let c;try{c=s.map(e=>fromBase64(parseShareHeader(e.data)))}catch{return err("DECRYPT_FAILED")}const l=s.map(e=>e.index),d=await this.ensureCrypto();let p,u,y;try{p=d.reconstructXorIDA(c,l,n,o)}catch{return err("DECRYPT_FAILED")}try{u=fromBase64(s[0].hmacKey),y=fromBase64(s[0].hmacSig)}catch{return err("DECRYPT_FAILED")}if(!await d.verifyHMAC(u,p,y))return this.lastDetail="HMAC verification failed before decrypt",err("DECRYPT_FAILED");const h=d.nextOddPrime(n)-1,E=d.pkcs7Unpad(p,h);if(!E.ok)return err("DECRYPT_FAILED");const m=await xchangeDecrypt(E.value);if(!m.ok)return err("DECRYPT_FAILED:DECRYPTION");let g;try{g=JSON.parse((new TextDecoder).decode(m.value))}catch{return err("DECRYPT_FAILED:PARSE")}return ok({sender:t,payload:g,scope:r,timestamp:i})}async accumulateShare(e,t,r,i){const a=this.shareAccumulator.get(e.groupId)??[];if(a.some(t=>t.index===e.index)||(a.push(e),this.shareAccumulator.set(e.groupId,a)),a.length<e.threshold)return ok(null);this.shareAccumulator.delete(e.groupId);const s=await reconstructFromChannel(a);if(!s.ok)return err("DECRYPT_FAILED");let n;try{n=JSON.parse((new TextDecoder).decode(s.value))}catch{return err("DECRYPT_FAILED")}return ok({sender:t,payload:n,scope:r,timestamp:i})}async verifyEnvelope(e){if(!e||"object"!=typeof e)return this.lastDetail="envelope is null or not an object",err("VERIFICATION_FAILED:INVALID_ENVELOPE");if(1!==e.v&&2!==e.v&&3!==e.v&&4!==e.v||"Ed25519"!==e.alg)return this.lastDetail=`v=${String(e.v)}, alg=${String(e.alg)}`,err("VERIFICATION_FAILED:UNSUPPORTED_VERSION");if("number"!=typeof e.timestamp||!Number.isFinite(e.timestamp))return this.lastDetail=`timestamp=${String(e.timestamp)} (must be finite number)`,err("VERIFICATION_FAILED:INVALID_ENVELOPE");const t=Math.abs(Date.now()-e.timestamp);if(t>this.timestampWindowMs)return this.lastDetail=`age=${t}ms, max=${this.timestampWindowMs}ms`,err("TIMESTAMP_EXPIRED");const r=void 0!==e.shareGroupId?{shareGroupId:e.shareGroupId,shareIndex:e.shareIndex}:void 0;if(!await this.nonceStore.check(e.nonce,e.sender,r))return this.lastDetail=`nonce=${e.nonce}`,err("REPLAY_DETECTED");const i=await this.registry.resolve(e.sender);if(!i.ok)return this.lastDetail=`did=${e.sender}`,err("VERIFICATION_FAILED:DID_NOT_IN_REGISTRY");const a=await importPublicKey(i.value);if(!a.ok)return this.lastDetail=`did=${e.sender}`,err("VERIFICATION_FAILED:KEY_IMPORT_FAILED");if(!e.signature||"string"!=typeof e.signature)return this.lastDetail="signature field missing or invalid",err("VERIFICATION_FAILED:SIGNATURE_MISMATCH");const s=fromBase64(e.signature),n=JSON.stringify({v:e.v,alg:e.alg,sender:e.sender,recipient:e.recipient,timestamp:e.timestamp,nonce:e.nonce,scope:e.scope,payload:e.payload}),o=(new TextEncoder).encode(n),c=await verify(a.value,s,o);if(!c.ok||!c.value)return this.lastDetail="signature does not match canonical envelope (v1.1.3+ required)",err("VERIFICATION_FAILED:SIGNATURE_MISMATCH");if(3===e.v&&"pqSignature"in e){if("string"!=typeof e.pqSignature)return this.lastDetail="pqSignature field not a string",err("VERIFICATION_FAILED:INVALID_ENVELOPE");const t=await this.registry.getEntry(e.sender);if(!t.ok||!t.value.mlDsaPublicKey)return this.lastDetail=`did=${e.sender} missing ML-DSA public key`,err("VERIFICATION_FAILED:PQ_KEY_MISSING");const r=fromBase64(e.pqSignature),i=await verifyMlDsa65(t.value.mlDsaPublicKey,r,o);if(!i.ok||!i.value)return this.lastDetail="ML-DSA-65 signature does not match canonical envelope (v1.1.3+ required)",err("VERIFICATION_FAILED:PQ_SIGNATURE_MISMATCH")}if(!await this.registry.hasScope(e.sender,e.scope))return this.lastDetail=`scope=${e.scope}`,err("SCOPE_DENIED");if("string"!=typeof e.payload)return this.lastDetail="payload field not a string",err("VERIFICATION_FAILED:INVALID_ENVELOPE");const l=fromBase64(e.payload);return ok({senderRawKey:i.value,payloadBytes:l})}async receiveRaw(e){const t=await this.verifyEnvelope(e);if(!t.ok)return t;if(4===e.v)return err("VERIFICATION_FAILED:UNSUPPORTED_VERSION");let r;if(2!==e.v&&3!==e.v||!("kemCiphertext"in e)){if(!e.ephemeralPub)return err("DECRYPT_FAILED:NO_EPHEMERAL_KEY");{if("string"!=typeof e.ephemeralPub)return err("DECRYPT_FAILED:INVALID_ENVELOPE");const t=fromBase64(e.ephemeralPub),i=await receiverKeyAgreement(this.identity.x25519PrivateKey,t);if(i.ok)r=i.value;else{if(this.identity.rotatedKeys&&this.identity.rotatedKeys.length>0)for(const e of this.identity.rotatedKeys){const i=await receiverKeyAgreement(e.x25519PrivateKey,t);if(i.ok){r=i.value;break}}if(!r)return err("DECRYPT_FAILED:KEY_AGREEMENT")}}}else{if(!this.identity.mlKemSecretKey)return err("DECRYPT_FAILED:KEY_AGREEMENT");if("string"!=typeof e.ephemeralPub||"string"!=typeof e.kemCiphertext)return err("DECRYPT_FAILED:INVALID_ENVELOPE");const t=fromBase64(e.ephemeralPub),i=fromBase64(e.kemCiphertext);if(!this.identity.mlKemPublicKey||!this.identity.mlKemSecretKey)return this.lastDetail="ML-KEM keys not available in identity",err("DECRYPT_FAILED:MISSING_MLKEM_KEYS");const a=await receiverHybridKeyAgreement(this.identity.x25519PrivateKey,this.identity.rawX25519PublicKey,t,i,this.identity.mlKemSecretKey,this.identity.mlKemPublicKey);if(a.ok)r=a.value;else{if(this.identity.rotatedKeys&&this.identity.rotatedKeys.length>0)for(const e of this.identity.rotatedKeys){if(!e.mlKemSecretKey)continue;const a=await receiverHybridKeyAgreement(e.x25519PrivateKey,this.identity.rawX25519PublicKey,t,i,e.mlKemSecretKey,this.identity.mlKemPublicKey);if(a.ok){r=a.value;break}}if(!r)return err("DECRYPT_FAILED:KEY_AGREEMENT")}}if(!r)return err("DECRYPT_FAILED:KEY_AGREEMENT");const i=await decryptPayload(e,r);if(!i.ok)return err("DECRYPT_FAILED:DECRYPTION");const a=(new TextDecoder).decode(i.value);return ok({sender:e.sender,decryptedText:a,scope:e.scope,timestamp:e.timestamp})}async createTestEnvelope(e,t,r){const i=await this.registry.getEntry(e);if(!i.ok||!i.value.x25519PublicKey)return null;const a=await importX25519PublicKey(i.value.x25519PublicKey);if(!a.ok)return null;const s=await senderKeyAgreement(a.value);if(!s.ok)return null;const n=(new TextEncoder).encode(JSON.stringify(t)),o=await createEnvelope({senderDid:this.identity.did,recipientDid:e,scope:r,plaintext:n,privateKey:this.identity.privateKey,sharedKey:s.value.sharedKey,ephemeralPublicKey:s.value.ephemeralPublicKey});return o.ok?o.value:null}async invite(e){if(!this.transports||0===this.transports.length)return err("SEND_FAILED");const t=Buffer.from(this.identity.rawPublicKey).toString("base64"),r={from:this.identity.did,to:e.to,payload:{agentName:this.name,message:e.message,publicKey:t,endpoint:""}},i=this.transports[0];if(!i)return err("SEND_FAILED");return(await i.send(r,e.to)).ok?ok(void 0):err("SEND_FAILED")}}export{generateSharedKey};
|
|
@@ -82,10 +82,10 @@ export declare class MessageStream implements AsyncIterableIterator<AgentMessage
|
|
|
82
82
|
* Return method for iterator protocol.
|
|
83
83
|
* Closes the stream and completes iteration.
|
|
84
84
|
*
|
|
85
|
-
* @param
|
|
85
|
+
* @param _value - Optional value (ignored)
|
|
86
86
|
* @returns Promise resolving to done result
|
|
87
87
|
*/
|
|
88
|
-
return(
|
|
88
|
+
return(_value?: unknown): Promise<IteratorResult<AgentMessage>>;
|
|
89
89
|
/**
|
|
90
90
|
* Throw method for iterator protocol.
|
|
91
91
|
* Closes the stream with error.
|
|
@@ -93,7 +93,7 @@ export declare class MessageStream implements AsyncIterableIterator<AgentMessage
|
|
|
93
93
|
* @param error - Error to propagate
|
|
94
94
|
* @returns Promise resolving to done result
|
|
95
95
|
*/
|
|
96
|
-
throw(error?:
|
|
96
|
+
throw(error?: unknown): Promise<IteratorResult<AgentMessage>>;
|
|
97
97
|
/**
|
|
98
98
|
* Make this object async iterable.
|
|
99
99
|
* Enables `for await...of` syntax.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ok,err}from"./_deps/shared/index.js";import{toBase64,fromBase64}from"./crypto-utils.js";import{exportPKCS8,exportX25519PKCS8,importIdentity,exportMlKemSecretKey,exportMlKemPublicKey,exportMlDsaSecretKey,exportMlDsaPublicKey}from"./identity.js";const PBKDF2_ITERATIONS=31e4,SALT_LENGTH=16,IV_LENGTH=12
|
|
1
|
+
import{ok,err}from"./_deps/shared/index.js";import{toBase64,fromBase64}from"./crypto-utils.js";import{exportPKCS8,exportX25519PKCS8,importIdentity,exportMlKemSecretKey,exportMlKemPublicKey,exportMlDsaSecretKey,exportMlDsaPublicKey}from"./identity.js";const PBKDF2_ITERATIONS=31e4,SALT_LENGTH=16,IV_LENGTH=12;function toArrayBuffer(e){const t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}async function deriveKey(e,t){try{if(16!==t.length)return err("INVALID_BACKUP");const r=await crypto.subtle.importKey("raw",(new TextEncoder).encode(e),"PBKDF2",!1,["deriveBits"]),a=new Uint8Array(await crypto.subtle.deriveBits({name:"PBKDF2",hash:"SHA-256",salt:toArrayBuffer(t),iterations:31e4},r,256)),o=await crypto.subtle.importKey("raw",toArrayBuffer(a),{name:"AES-GCM"},!1,["encrypt","decrypt"]);return ok(o)}catch{return err("PBKDF2_FAILED")}}async function serializeIdentity(e){try{const t=await exportPKCS8(e.privateKey);if(!t.ok)return err("EXPORT_FAILED");const r=await exportX25519PKCS8(e.x25519PrivateKey);if(!r.ok)return err("EXPORT_FAILED");const a=exportMlKemSecretKey(e),o=exportMlKemPublicKey(e),n=exportMlDsaSecretKey(e),s=exportMlDsaPublicKey(e),i=e.rotatedKeys?await Promise.all(e.rotatedKeys.map(async e=>{const t=await exportX25519PKCS8(e.x25519PrivateKey);if(!t.ok)throw new Error("Failed to export rotated X25519 key");return{rotatedAt:e.rotatedAt,x25519Pkcs8:toBase64(t.value),...e.mlKemSecretKey?{mlKemSecretKey:toBase64(e.mlKemSecretKey)}:{}}})):void 0;return ok({did:e.did,rawPublicKey:toBase64(e.rawPublicKey),ed25519Pkcs8:toBase64(t.value),x25519Pkcs8:toBase64(r.value),...a?{mlKemSecretKey:toBase64(a)}:{},...o?{mlKemPublicKey:toBase64(o)}:{},...n?{mlDsaSecretKey:toBase64(n)}:{},...s?{mlDsaPublicKey:toBase64(s)}:{},...i?{rotatedKeys:i}:{},exportedAt:Date.now()})}catch{return err("EXPORT_FAILED")}}export async function exportBackup(e,t){try{const r=await serializeIdentity(e);if(!r.ok)return r;const a=crypto.getRandomValues(new Uint8Array(16)),o=crypto.getRandomValues(new Uint8Array(12)),n=await deriveKey(t,a);if(!n.ok)return n;const s=JSON.stringify(r.value),i=(new TextEncoder).encode(s),c=await crypto.subtle.encrypt({name:"AES-GCM",iv:toArrayBuffer(o)},n.value,i),y=new Uint8Array(c);if(y.length<16)return err("ENCRYPTION_FAILED");const l=y.length-16,K=y.slice(0,l),m=y.slice(l);return ok({version:1,salt:toBase64(a),iv:toBase64(o),ciphertext:toBase64(K),tag:toBase64(m)})}catch{return err("ENCRYPTION_FAILED")}}export async function importBackup(e,t){try{if(1!==e.version)return err("INVALID_BACKUP");let r,a,o,n;try{r=fromBase64(e.salt),a=fromBase64(e.iv),o=fromBase64(e.ciphertext),n=fromBase64(e.tag)}catch{return err("INVALID_BACKUP")}if(16!==r.length||12!==a.length||16!==n.length)return err("INVALID_BACKUP");const s=await deriveKey(t,r);if(!s.ok)return s;const i=new Uint8Array(o.length+n.length);let c,y,l,K,m,u,f,B;i.set(o),i.set(n,o.length);try{c=await crypto.subtle.decrypt({name:"AES-GCM",iv:toArrayBuffer(a)},s.value,toArrayBuffer(i))}catch{return err("INVALID_PASSWORD")}try{const e=(new TextDecoder).decode(c);y=JSON.parse(e)}catch{return err("INVALID_BACKUP")}if(!y.did||!y.ed25519Pkcs8||!y.x25519Pkcs8)return err("INVALID_BACKUP");try{l=fromBase64(y.ed25519Pkcs8),K=fromBase64(y.x25519Pkcs8),y.mlKemSecretKey&&(m=fromBase64(y.mlKemSecretKey)),y.mlKemPublicKey&&(u=fromBase64(y.mlKemPublicKey)),y.mlDsaSecretKey&&(f=fromBase64(y.mlDsaSecretKey)),y.mlDsaPublicKey&&(B=fromBase64(y.mlDsaPublicKey))}catch{return err("INVALID_BACKUP")}const d=await importIdentity(l,K,m,u,f,B);if(!d.ok)return err("IMPORT_FAILED");if(y.rotatedKeys&&y.rotatedKeys.length>0){const e=d.value,t=await Promise.all(y.rotatedKeys.map(async e=>{const t=fromBase64(e.x25519Pkcs8),r=await crypto.subtle.importKey("pkcs8",toArrayBuffer(t),{name:"X25519"},!0,["deriveBits"]),a=e.mlKemSecretKey?fromBase64(e.mlKemSecretKey):void 0;return{rotatedAt:e.rotatedAt,x25519PrivateKey:r,...a?{mlKemSecretKey:a}:{}}}));return ok({...e,rotatedKeys:t})}return d}catch{return err("DECRYPTION_FAILED")}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var o=e(t),i=0;i<o.length;i++)"default"!==o[i]&&__createBinding(r,t,o[i]);return __setModuleDefault(r,t),r}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.ERROR_DETAILS=exports.AgentError=exports.AgentErrorCode=void 0,exports.setToolRegistry=setToolRegistry,exports.getToolRegistry=getToolRegistry,exports.call=call,exports.batchCall=batchCall,exports.stream=stream;const shared_1=require("../_deps/shared/index.js"),agent_js_1=require("./agent.js"),security_policy_js_1=require("./security-policy.js"),policy_js_1=require("./policy.js"),xregistry_1=require("../_deps/xregistry/index.js"),crypto_utils_js_1=require("./crypto-utils.js"),identity_js_1=require("./identity.js");var AgentErrorCode;!function(e){e.TOOL_NOT_FOUND="AGENT_TOOL_NOT_FOUND",e.POLICY_VIOLATION="AGENT_POLICY_VIOLATION",e.TIMEOUT="AGENT_TIMEOUT",e.NETWORK_ERROR="AGENT_NETWORK_ERROR",e.AUTHENTICATION_FAILED="AGENT_AUTH_FAILED",e.INVALID_PARAMS="AGENT_INVALID_PARAMS"}(AgentErrorCode||(exports.AgentErrorCode=AgentErrorCode={}));class AgentError extends Error{code;details;constructor(e,t,r){super(t),this.code=e,this.details=r,this.name="AgentError"}}exports.AgentError=AgentError,exports.ERROR_DETAILS={[AgentErrorCode.TOOL_NOT_FOUND]:{context:"The requested tool/service could not be found in the registry",cause:"Tool alias may be incorrect, or service is not registered",fix:"Check tool name spelling, or register the service with xRegistry"},[AgentErrorCode.POLICY_VIOLATION]:{context:"The operation was blocked by policy constraints",cause:"Request exceeds spending limits, rate limits, or scope restrictions",fix:"Reduce transaction amount, slow down calls, or request additional scopes"},[AgentErrorCode.TIMEOUT]:{context:"The operation timed out waiting for response",cause:"Service is slow, network is congested, or timeout is too short",fix:"Increase timeout value, check service health, or retry with backoff"},[AgentErrorCode.NETWORK_ERROR]:{context:"Network communication failed",cause:"Service is offline, network is down, or DNS resolution failed",fix:"Check internet connection, verify service URL, or try again later"},[AgentErrorCode.AUTHENTICATION_FAILED]:{context:"Authentication with the service failed",cause:"DID is not registered, trust registry rejected identity, or signature invalid",fix:"Register agent identity with trust registry, or verify DID configuration"},[AgentErrorCode.INVALID_PARAMS]:{context:"The parameters provided are invalid",cause:"Required fields missing, wrong data types, or schema validation failed",fix:"Check tool schema, provide all required fields, and verify data types"}};let globalAgent=null,globalToolRegistry=null;function setToolRegistry(e){globalToolRegistry=e}function getToolRegistry(){return globalToolRegistry}async function
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,o){void 0===o&&(o=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,o,i)}:function(e,t,r,o){void 0===o&&(o=r),e[o]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var o=e(t),i=0;i<o.length;i++)"default"!==o[i]&&__createBinding(r,t,o[i]);return __setModuleDefault(r,t),r}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.ERROR_DETAILS=exports.AgentError=exports.AgentErrorCode=void 0,exports.setToolRegistry=setToolRegistry,exports.getToolRegistry=getToolRegistry,exports.call=call,exports.batchCall=batchCall,exports.stream=stream;const shared_1=require("../_deps/shared/index.js"),agent_js_1=require("./agent.js"),security_policy_js_1=require("./security-policy.js"),policy_js_1=require("./policy.js"),xregistry_1=require("../_deps/xregistry/index.js"),crypto_utils_js_1=require("./crypto-utils.js"),identity_js_1=require("./identity.js");var AgentErrorCode;!function(e){e.TOOL_NOT_FOUND="AGENT_TOOL_NOT_FOUND",e.POLICY_VIOLATION="AGENT_POLICY_VIOLATION",e.TIMEOUT="AGENT_TIMEOUT",e.NETWORK_ERROR="AGENT_NETWORK_ERROR",e.AUTHENTICATION_FAILED="AGENT_AUTH_FAILED",e.INVALID_PARAMS="AGENT_INVALID_PARAMS"}(AgentErrorCode||(exports.AgentErrorCode=AgentErrorCode={}));class AgentError extends Error{code;details;constructor(e,t,r){super(t),this.code=e,this.details=r,this.name="AgentError"}}exports.AgentError=AgentError,exports.ERROR_DETAILS={[AgentErrorCode.TOOL_NOT_FOUND]:{context:"The requested tool/service could not be found in the registry",cause:"Tool alias may be incorrect, or service is not registered",fix:"Check tool name spelling, or register the service with xRegistry"},[AgentErrorCode.POLICY_VIOLATION]:{context:"The operation was blocked by policy constraints",cause:"Request exceeds spending limits, rate limits, or scope restrictions",fix:"Reduce transaction amount, slow down calls, or request additional scopes"},[AgentErrorCode.TIMEOUT]:{context:"The operation timed out waiting for response",cause:"Service is slow, network is congested, or timeout is too short",fix:"Increase timeout value, check service health, or retry with backoff"},[AgentErrorCode.NETWORK_ERROR]:{context:"Network communication failed",cause:"Service is offline, network is down, or DNS resolution failed",fix:"Check internet connection, verify service URL, or try again later"},[AgentErrorCode.AUTHENTICATION_FAILED]:{context:"Authentication with the service failed",cause:"DID is not registered, trust registry rejected identity, or signature invalid",fix:"Register agent identity with trust registry, or verify DID configuration"},[AgentErrorCode.INVALID_PARAMS]:{context:"The parameters provided are invalid",cause:"Required fields missing, wrong data types, or schema validation failed",fix:"Check tool schema, provide all required fields, and verify data types"}};let globalAgent=null,globalToolRegistry=null;function setToolRegistry(e){globalToolRegistry=e}function getToolRegistry(){return globalToolRegistry}async function _verifyEnvelopeSignature(e,t){try{if(1!==e.v&&2!==e.v&&3!==e.v&&4!==e.v||"Ed25519"!==e.alg)return"not_verified";if(!e.signature||"string"!=typeof e.signature)return"not_verified";const r=await t.resolve(e.sender);if(!r.ok)return"not_verified";const o=await(0,identity_js_1.importPublicKey)(r.value);if(!o.ok)return"not_verified";const i=(0,crypto_utils_js_1.fromBase64)(e.payload),n=(0,crypto_utils_js_1.fromBase64)(e.signature),s=await(0,identity_js_1.verify)(o.value,n,i);if(!s.ok||!s.value)return"invalid";if(3===e.v&&"pqSignature"in e&&e.pqSignature){const r=await t.getEntry(e.sender);if(!r.ok||!r.value.mlDsaPublicKey)return"not_verified";const o=(0,crypto_utils_js_1.fromBase64)(e.pqSignature),n=await(0,identity_js_1.verifyMlDsa65)(r.value.mlDsaPublicKey,o,i);if(!n.ok||!n.value)return"invalid"}return"valid"}catch{return"not_verified"}}async function ensureAgent(e){if(globalAgent&&!e?.ephemeral)return globalAgent;const t={identity:!1!==e?.ephemeral?"ephemeral":"persistent",identityTTL:!1!==e?.ephemeral?36e5:void 0,securityPolicy:new security_policy_js_1.DefaultSecurityPolicy},r=await agent_js_1.Agent.from(t);return e?.ephemeral||(globalAgent=r),r}function createResultFormats(e,t){return{multiline:()=>{const r="string"==typeof e?e:JSON.stringify(e,null,2);return[`Call: ${t.tool}`,"Status: "+("denied"===t.policy?"Denied":"Success"),`Agent: ${t.agent}`,`Timestamp: ${t.timestamp}`,`Policy: ${t.policy}`,`Signature: ${t.signature}`,`Data: ${r}`].join("\n")},singleline:()=>{const r="denied"===t.policy?"✗":"✓",o="string"==typeof e?e.length:JSON.stringify(e).length;return`${r} ${t.tool} | agent:${t.agent.slice(-6)} | ${t.timestamp} | ${o} bytes`},json:()=>JSON.stringify({data:e,audit:{tool:t.tool,agent:t.agent,scope:t.scope,timestamp:t.timestamp,policy:t.policy,signature:t.signature}}),markdown:()=>{const r="string"==typeof e?e:JSON.stringify(e,null,2),o="denied"===t.policy?"Denied":"Success";return[`## Call Result: ${t.tool}`,"",`**Status:** ${o}`,`**Agent:** ${t.agent}`,`**Timestamp:** ${t.timestamp}`,`**Policy:** ${t.policy}`,`**Signature:** ${t.signature}`,"","### Response","```json",r,"```"].join("\n")}}}async function call(e,t,r){try{if(!e||"string"!=typeof e||!e.includes(":"))return(0,shared_1.err)(new AgentError(AgentErrorCode.INVALID_PARAMS,'Tool alias must be in format "service:action" (e.g., "stripe:createCharge")',{tool:e}));const o=await ensureAgent(r),[i]=e.split(":");if(!i)return(0,shared_1.err)(new AgentError(AgentErrorCode.INVALID_PARAMS,"Invalid tool alias format",{tool:e}));const n=(new Date).toISOString();let s,a="not_evaluated";if(r?.policy){const l=(0,policy_js_1.getGlobalPolicyEngine)().evaluate(o.did,e,t,r.policy);if(!l.ok){const t={agent:o.did,agentName:o.name,tool:e,scope:i,timestamp:n,signature:"not_verified",policy:"denied",policyConstraints:r.policy},s=new AgentError(l.error.code,l.error.message,{...l.error.details,audit:t});return(0,shared_1.err)(s)}a="passed",s=r.policy}let l,c=e;if(globalToolRegistry){const t=(0,xregistry_1.resolveToolEndpoint)(e,globalToolRegistry);if(t.ok)l=t.value.endpoint,c=t.value.name;else{const t=(0,xregistry_1.autoDiscover)(e,globalToolRegistry);if(t.ok&&t.value.primary&&(l=t.value.primary.endpoint,c=t.value.primary.name,t.value.alternatives.length>0)){const e=t.value.alternatives.map(e=>e.name).slice(0,3).join(", ");r?.onProgress&&r.onProgress({step:"discovery",progress:50,context:{message:`Using ${c}, alternatives: ${e}`}})}}}const u={agent:o.did,agentName:o.name,tool:c,scope:i,timestamp:n,signature:"not_verified",policy:a,policyConstraints:s};if(!l){const t={tool:c,originalTool:e,audit:u};return globalToolRegistry?(t.message="Tool not found in registry and auto-discovery failed",t.hint="Register the tool in xRegistry or use exact tool name"):(t.message="No registry configured - set registry via setToolRegistry()",t.hint='import { setToolRegistry } from "@private.me/xbind"'),(0,shared_1.err)(new AgentError(AgentErrorCode.TOOL_NOT_FOUND,`Cannot call tool: ${t.message||""}`,t))}const g={tool:c,params:t,agent:{did:o.did,name:o.name},scope:i,timestamp:n},d=JSON.stringify(g),p=["POST",l,o.did,i,n,d].join("\n"),{sign:y}=await Promise.resolve().then(()=>__importStar(require("./identity.js"))),_=await y(o.identity.privateKey,(new TextEncoder).encode(p));if(!_.ok)return(0,shared_1.err)(new AgentError(AgentErrorCode.AUTHENTICATION_FAILED,"Failed to sign request",{tool:c,endpoint:l}));const f=Buffer.from(_.value).toString("base64");try{const e=new AbortController,t=setTimeout(()=>e.abort(),3e4),r=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-DID":o.did,"X-Agent-Scope":i,"X-xBind-Signature":f,"X-xBind-Timestamp":n},body:d,signal:e.signal});if(clearTimeout(t),!r.ok){const e=await r.text().catch(()=>"Unknown error");return(0,shared_1.err)(new AgentError(401===r.status?AgentErrorCode.AUTHENTICATION_FAILED:AgentErrorCode.NETWORK_ERROR,`Tool call failed: ${r.status} ${r.statusText}`,{tool:c,endpoint:l,status:r.status,error:e,audit:u}))}const s=await r.json();u.signature="valid";r.headers.get("X-xBind-Signature")&&(u.signature="valid");const a={data:s,audit:u,formats:createResultFormats(s,u)};return(0,shared_1.ok)(a)}catch(e){return e instanceof DOMException&&"AbortError"===e.name?(0,shared_1.err)(new AgentError(AgentErrorCode.TIMEOUT,"Tool call timed out after 30 seconds",{tool:c,endpoint:l,audit:u})):(0,shared_1.err)(new AgentError(AgentErrorCode.NETWORK_ERROR,`Network error calling tool: ${e instanceof Error?e.message:String(e)}`,{tool:c,endpoint:l,error:e instanceof Error?e.message:String(e),audit:u}))}}catch(t){const[r]=e&&"string"==typeof e&&e.includes(":")?e.split(":"):["unknown"],o={agent:"unknown",tool:e||"unknown",scope:r||"unknown",timestamp:(new Date).toISOString(),signature:"not_verified",policy:"not_evaluated"};return(0,shared_1.err)(new AgentError(AgentErrorCode.NETWORK_ERROR,t instanceof Error?t.message:"Unknown error",{originalError:t,audit:o}))}}async function batchCall(e){return Promise.all(e.map(({tool:e,params:t,options:r})=>call(e,t,r)))}async function*stream(e,t){throw yield Promise.resolve(null),new AgentError(AgentErrorCode.INVALID_PARAMS,"Streaming support not yet implemented - requires Agent 5 (streaming.ts) to complete",{tool:e,params:t})}
|