@ax-llm/ax 19.0.43 → 19.0.44
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/index.cjs +40 -40
- package/index.cjs.map +1 -1
- package/index.global.js +40 -40
- package/index.global.js.map +1 -1
- package/index.js +41 -41
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/ax-agent-optimize.md +1 -1
- package/skills/ax-agent.md +1 -1
- package/skills/ax-ai.md +1 -1
- package/skills/ax-flow.md +1 -1
- package/skills/ax-gen.md +1 -1
- package/skills/ax-gepa.md +1 -1
- package/skills/ax-learn.md +1 -1
- package/skills/ax-llm.md +1 -1
- package/skills/ax-signature.md +1 -1
package/index.global.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
"use strict";var ax=(()=>{var zm=Object.create;var Lo=Object.defineProperty;var qm=Object.getOwnPropertyDescriptor;var Hm=Object.getOwnPropertyNames;var Wm=Object.getPrototypeOf,Vm=Object.prototype.hasOwnProperty;var Km=(o=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(o,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):o)(function(o){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});var $o=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),Jm=(o,e)=>{for(var t in e)Lo(o,t,{get:e[t],enumerable:!0})},Zc=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Hm(e))!Vm.call(o,r)&&r!==t&&Lo(o,r,{get:()=>e[r],enumerable:!(n=qm(e,r))||n.enumerable});return o};var Er=(o,e,t)=>(t=o!=null?zm(Wm(o)):{},Zc(e||!o||!o.__esModule?Lo(t,"default",{value:o,enumerable:!0}):t,o)),Qm=o=>Zc(Lo({},"__esModule",{value:!0}),o);var Kl=$o((Oa,Ea)=>{"use strict";(function(o,e){typeof Oa=="object"&&typeof Ea<"u"?Ea.exports=e():typeof define=="function"&&define.amd?define(e):(o=typeof globalThis<"u"?globalThis:o||self).dayjs=e()})(Oa,function(){"use strict";var o=1e3,e=6e4,t=36e5,n="millisecond",r="second",s="minute",i="hour",a="day",c="week",u="month",l="quarter",p="year",d="date",g="Invalid Date",m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,f=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,h={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(E){var O=["th","st","nd","rd"],S=E%100;return"["+E+(O[(S-20)%10]||O[S]||O[0])+"]"}},x=function(E,O,S){var k=String(E);return!k||k.length>=O?E:""+Array(O+1-k.length).join(S)+E},A={s:x,z:function(E){var O=-E.utcOffset(),S=Math.abs(O),k=Math.floor(S/60),_=S%60;return(O<=0?"+":"-")+x(k,2,"0")+":"+x(_,2,"0")},m:function E(O,S){if(O.date()<S.date())return-E(S,O);var k=12*(S.year()-O.year())+(S.month()-O.month()),_=O.clone().add(k,u),$=S-_<0,B=O.clone().add(k+($?-1:1),u);return+(-(k+(S-_)/($?_-B:B-_))||0)},a:function(E){return E<0?Math.ceil(E)||0:Math.floor(E)},p:function(E){return{M:u,y:p,w:c,d:a,D:d,h:i,m:s,s:r,ms:n,Q:l}[E]||String(E||"").toLowerCase().replace(/s$/,"")},u:function(E){return E===void 0}},y="en",C={};C[y]=h;var R="$isDayjsObject",I=function(E){return E instanceof N||!(!E||!E[R])},M=function E(O,S,k){var _;if(!O)return y;if(typeof O=="string"){var $=O.toLowerCase();C[$]&&(_=$),S&&(C[$]=S,_=$);var B=O.split("-");if(!_&&B.length>1)return E(B[0])}else{var U=O.name;C[U]=O,_=U}return!k&&_&&(y=_),_||!k&&y},F=function(E,O){if(I(E))return E.clone();var S=typeof O=="object"?O:{};return S.date=E,S.args=arguments,new N(S)},P=A;P.l=M,P.i=I,P.w=function(E,O){return F(E,{locale:O.$L,utc:O.$u,x:O.$x,$offset:O.$offset})};var N=function(){function E(S){this.$L=M(S.locale,null,!0),this.parse(S),this.$x=this.$x||S.x||{},this[R]=!0}var O=E.prototype;return O.parse=function(S){this.$d=function(k){var _=k.date,$=k.utc;if(_===null)return new Date(NaN);if(P.u(_))return new Date;if(_ instanceof Date)return new Date(_);if(typeof _=="string"&&!/Z$/i.test(_)){var B=_.match(m);if(B){var U=B[2]-1||0,ee=(B[7]||"0").substring(0,3);return $?new Date(Date.UTC(B[1],U,B[3]||1,B[4]||0,B[5]||0,B[6]||0,ee)):new Date(B[1],U,B[3]||1,B[4]||0,B[5]||0,B[6]||0,ee)}}return new Date(_)}(S),this.init()},O.init=function(){var S=this.$d;this.$y=S.getFullYear(),this.$M=S.getMonth(),this.$D=S.getDate(),this.$W=S.getDay(),this.$H=S.getHours(),this.$m=S.getMinutes(),this.$s=S.getSeconds(),this.$ms=S.getMilliseconds()},O.$utils=function(){return P},O.isValid=function(){return this.$d.toString()!==g},O.isSame=function(S,k){var _=F(S);return this.startOf(k)<=_&&_<=this.endOf(k)},O.isAfter=function(S,k){return F(S)<this.startOf(k)},O.isBefore=function(S,k){return this.endOf(k)<F(S)},O.$g=function(S,k,_){return P.u(S)?this[k]:this.set(_,S)},O.unix=function(){return Math.floor(this.valueOf()/1e3)},O.valueOf=function(){return this.$d.getTime()},O.startOf=function(S,k){var _=this,$=!!P.u(k)||k,B=P.p(S),U=function(X,oe){var K=P.w(_.$u?Date.UTC(_.$y,oe,X):new Date(_.$y,oe,X),_);return $?K:K.endOf(a)},ee=function(X,oe){return P.w(_.toDate()[X].apply(_.toDate("s"),($?[0,0,0,0]:[23,59,59,999]).slice(oe)),_)},D=this.$W,ne=this.$M,J=this.$D,q="set"+(this.$u?"UTC":"");switch(B){case p:return $?U(1,0):U(31,11);case u:return $?U(1,ne):U(0,ne+1);case c:var z=this.$locale().weekStart||0,j=(D<z?D+7:D)-z;return U($?J-j:J+(6-j),ne);case a:case d:return ee(q+"Hours",0);case i:return ee(q+"Minutes",1);case s:return ee(q+"Seconds",2);case r:return ee(q+"Milliseconds",3);default:return this.clone()}},O.endOf=function(S){return this.startOf(S,!1)},O.$set=function(S,k){var _,$=P.p(S),B="set"+(this.$u?"UTC":""),U=(_={},_[a]=B+"Date",_[d]=B+"Date",_[u]=B+"Month",_[p]=B+"FullYear",_[i]=B+"Hours",_[s]=B+"Minutes",_[r]=B+"Seconds",_[n]=B+"Milliseconds",_)[$],ee=$===a?this.$D+(k-this.$W):k;if($===u||$===p){var D=this.clone().set(d,1);D.$d[U](ee),D.init(),this.$d=D.set(d,Math.min(this.$D,D.daysInMonth())).$d}else U&&this.$d[U](ee);return this.init(),this},O.set=function(S,k){return this.clone().$set(S,k)},O.get=function(S){return this[P.p(S)]()},O.add=function(S,k){var _,$=this;S=Number(S);var B=P.p(k),U=function(ne){var J=F($);return P.w(J.date(J.date()+Math.round(ne*S)),$)};if(B===u)return this.set(u,this.$M+S);if(B===p)return this.set(p,this.$y+S);if(B===a)return U(1);if(B===c)return U(7);var ee=(_={},_[s]=e,_[i]=t,_[r]=o,_)[B]||1,D=this.$d.getTime()+S*ee;return P.w(D,this)},O.subtract=function(S,k){return this.add(-1*S,k)},O.format=function(S){var k=this,_=this.$locale();if(!this.isValid())return _.invalidDate||g;var $=S||"YYYY-MM-DDTHH:mm:ssZ",B=P.z(this),U=this.$H,ee=this.$m,D=this.$M,ne=_.weekdays,J=_.months,q=_.meridiem,z=function(oe,K,le,Se){return oe&&(oe[K]||oe(k,$))||le[K].slice(0,Se)},j=function(oe){return P.s(U%12||12,oe,"0")},X=q||function(oe,K,le){var Se=oe<12?"AM":"PM";return le?Se.toLowerCase():Se};return $.replace(f,function(oe,K){return K||function(le){switch(le){case"YY":return String(k.$y).slice(-2);case"YYYY":return P.s(k.$y,4,"0");case"M":return D+1;case"MM":return P.s(D+1,2,"0");case"MMM":return z(_.monthsShort,D,J,3);case"MMMM":return z(J,D);case"D":return k.$D;case"DD":return P.s(k.$D,2,"0");case"d":return String(k.$W);case"dd":return z(_.weekdaysMin,k.$W,ne,2);case"ddd":return z(_.weekdaysShort,k.$W,ne,3);case"dddd":return ne[k.$W];case"H":return String(U);case"HH":return P.s(U,2,"0");case"h":return j(1);case"hh":return j(2);case"a":return X(U,ee,!0);case"A":return X(U,ee,!1);case"m":return String(ee);case"mm":return P.s(ee,2,"0");case"s":return String(k.$s);case"ss":return P.s(k.$s,2,"0");case"SSS":return P.s(k.$ms,3,"0");case"Z":return B}return null}(oe)||B.replace(":","")})},O.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},O.diff=function(S,k,_){var $,B=this,U=P.p(k),ee=F(S),D=(ee.utcOffset()-this.utcOffset())*e,ne=this-ee,J=function(){return P.m(B,ee)};switch(U){case p:$=J()/12;break;case u:$=J();break;case l:$=J()/3;break;case c:$=(ne-D)/6048e5;break;case a:$=(ne-D)/864e5;break;case i:$=ne/t;break;case s:$=ne/e;break;case r:$=ne/o;break;default:$=ne}return _?$:P.a($)},O.daysInMonth=function(){return this.endOf(u).$D},O.$locale=function(){return C[this.$L]},O.locale=function(S,k){if(!S)return this.$L;var _=this.clone(),$=M(S,k,!0);return $&&(_.$L=$),_},O.clone=function(){return P.w(this.$d,this)},O.toDate=function(){return new Date(this.valueOf())},O.toJSON=function(){return this.isValid()?this.toISOString():null},O.toISOString=function(){return this.$d.toISOString()},O.toString=function(){return this.$d.toUTCString()},E}(),T=N.prototype;return F.prototype=T,[["$ms",n],["$s",r],["$m",s],["$H",i],["$W",a],["$M",u],["$y",p],["$D",d]].forEach(function(E){T[E[1]]=function(O){return this.$g(O,E[0],E[1])}}),F.extend=function(E,O){return E.$i||(E(O,N,F),E.$i=!0),F},F.locale=M,F.isDayjs=I,F.unix=function(E){return F(1e3*E)},F.en=C[y],F.Ls=C,F.p={},F})});var Jl=$o((Ma,Pa)=>{"use strict";(function(o,e){typeof Ma=="object"&&typeof Pa<"u"?Pa.exports=e():typeof define=="function"&&define.amd?define(e):(o=typeof globalThis<"u"?globalThis:o||self).dayjs_plugin_customParseFormat=e()})(Ma,function(){"use strict";var o={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,t=/\d/,n=/\d\d/,r=/\d\d?/,s=/\d*[^-_:/,()\s\d]+/,i={},a=function(m){return(m=+m)+(m>68?1900:2e3)},c=function(m){return function(f){this[m]=+f}},u=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(f){if(!f||f==="Z")return 0;var h=f.match(/([+-]|\d\d)/g),x=60*h[1]+(+h[2]||0);return x===0?0:h[0]==="+"?-x:x}(m)}],l=function(m){var f=i[m];return f&&(f.indexOf?f:f.s.concat(f.f))},p=function(m,f){var h,x=i.meridiem;if(x){for(var A=1;A<=24;A+=1)if(m.indexOf(x(A,0,f))>-1){h=A>12;break}}else h=m===(f?"pm":"PM");return h},d={A:[s,function(m){this.afternoon=p(m,!1)}],a:[s,function(m){this.afternoon=p(m,!0)}],Q:[t,function(m){this.month=3*(m-1)+1}],S:[t,function(m){this.milliseconds=100*+m}],SS:[n,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[r,c("seconds")],ss:[r,c("seconds")],m:[r,c("minutes")],mm:[r,c("minutes")],H:[r,c("hours")],h:[r,c("hours")],HH:[r,c("hours")],hh:[r,c("hours")],D:[r,c("day")],DD:[n,c("day")],Do:[s,function(m){var f=i.ordinal,h=m.match(/\d+/);if(this.day=h[0],f)for(var x=1;x<=31;x+=1)f(x).replace(/\[|\]/g,"")===m&&(this.day=x)}],w:[r,c("week")],ww:[n,c("week")],M:[r,c("month")],MM:[n,c("month")],MMM:[s,function(m){var f=l("months"),h=(l("monthsShort")||f.map(function(x){return x.slice(0,3)})).indexOf(m)+1;if(h<1)throw new Error;this.month=h%12||h}],MMMM:[s,function(m){var f=l("months").indexOf(m)+1;if(f<1)throw new Error;this.month=f%12||f}],Y:[/[+-]?\d+/,c("year")],YY:[n,function(m){this.year=a(m)}],YYYY:[/\d{4}/,c("year")],Z:u,ZZ:u};function g(m){var f,h;f=m,h=i&&i.formats;for(var x=(m=f.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(F,P,N){var T=N&&N.toUpperCase();return P||h[N]||o[N]||h[T].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(E,O,S){return O||S.slice(1)})})).match(e),A=x.length,y=0;y<A;y+=1){var C=x[y],R=d[C],I=R&&R[0],M=R&&R[1];x[y]=M?{regex:I,parser:M}:C.replace(/^\[|\]$/g,"")}return function(F){for(var P={},N=0,T=0;N<A;N+=1){var E=x[N];if(typeof E=="string")T+=E.length;else{var O=E.regex,S=E.parser,k=F.slice(T),_=O.exec(k)[0];S.call(P,_),F=F.replace(_,"")}}return function($){var B=$.afternoon;if(B!==void 0){var U=$.hours;B?U<12&&($.hours+=12):U===12&&($.hours=0),delete $.afternoon}}(P),P}}return function(m,f,h){h.p.customParseFormat=!0,m&&m.parseTwoDigitYear&&(a=m.parseTwoDigitYear);var x=f.prototype,A=x.parse;x.parse=function(y){var C=y.date,R=y.utc,I=y.args;this.$u=R;var M=I[1];if(typeof M=="string"){var F=I[2]===!0,P=I[3]===!0,N=F||P,T=I[2];P&&(T=I[2]),i=this.$locale(),!F&&T&&(i=h.Ls[T]),this.$d=function(k,_,$,B){try{if(["x","X"].indexOf(_)>-1)return new Date((_==="X"?1e3:1)*k);var U=g(_)(k),ee=U.year,D=U.month,ne=U.day,J=U.hours,q=U.minutes,z=U.seconds,j=U.milliseconds,X=U.zone,oe=U.week,K=new Date,le=ne||(ee||D?1:K.getDate()),Se=ee||K.getFullYear(),Oe=0;ee&&!D||(Oe=D>0?D-1:K.getMonth());var te,pe=J||0,xe=q||0,se=z||0,Ee=j||0;return X?new Date(Date.UTC(Se,Oe,le,pe,xe,se,Ee+60*X.offset*1e3)):$?new Date(Date.UTC(Se,Oe,le,pe,xe,se,Ee)):(te=new Date(Se,Oe,le,pe,xe,se,Ee),oe&&(te=B(te).week(oe).toDate()),te)}catch{return new Date("")}}(C,M,R,h),this.init(),T&&T!==!0&&(this.$L=this.locale(T).$L),N&&C!=this.format(M)&&(this.$d=new Date("")),i={}}else if(M instanceof Array)for(var E=M.length,O=1;O<=E;O+=1){I[1]=M[O-1];var S=h.apply(this,I);if(S.isValid()){this.$d=S.$d,this.$L=S.$L,this.init();break}O===E&&(this.$d=new Date(""))}else A.call(this,y)}}})});var Ql=$o((Fa,_a)=>{"use strict";(function(o,e){typeof Fa=="object"&&typeof _a<"u"?_a.exports=e():typeof define=="function"&&define.amd?define(e):(o=typeof globalThis<"u"?globalThis:o||self).dayjs_plugin_timezone=e()})(Fa,function(){"use strict";var o={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(t,n,r){var s,i=function(l,p,d){d===void 0&&(d={});var g=new Date(l),m=function(f,h){h===void 0&&(h={});var x=h.timeZoneName||"short",A=f+"|"+x,y=e[A];return y||(y=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:f,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:x}),e[A]=y),y}(p,d);return m.formatToParts(g)},a=function(l,p){for(var d=i(l,p),g=[],m=0;m<d.length;m+=1){var f=d[m],h=f.type,x=f.value,A=o[h];A>=0&&(g[A]=parseInt(x,10))}var y=g[3],C=y===24?0:y,R=g[0]+"-"+g[1]+"-"+g[2]+" "+C+":"+g[4]+":"+g[5]+":000",I=+l;return(r.utc(R).valueOf()-(I-=I%1e3))/6e4},c=n.prototype;c.tz=function(l,p){l===void 0&&(l=s);var d,g=this.utcOffset(),m=this.toDate(),f=m.toLocaleString("en-US",{timeZone:l}),h=Math.round((m-new Date(f))/1e3/60),x=15*-Math.round(m.getTimezoneOffset()/15)-h;if(!Number(x))d=this.utcOffset(0,p);else if(d=r(f,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(x,!0),p){var A=d.utcOffset();d=d.add(g-A,"minute")}return d.$x.$timezone=l,d},c.offsetName=function(l){var p=this.$x.$timezone||r.tz.guess(),d=i(this.valueOf(),p,{timeZoneName:l}).find(function(g){return g.type.toLowerCase()==="timezonename"});return d&&d.value};var u=c.startOf;c.startOf=function(l,p){if(!this.$x||!this.$x.$timezone)return u.call(this,l,p);var d=r(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return u.call(d,l,p).tz(this.$x.$timezone,!0)},r.tz=function(l,p,d){var g=d&&p,m=d||p||s,f=a(+r(),m);if(typeof l!="string")return r(l).tz(m);var h=function(C,R,I){var M=C-60*R*1e3,F=a(M,I);if(R===F)return[M,R];var P=a(M-=60*(F-R)*1e3,I);return F===P?[M,F]:[C-60*Math.min(F,P)*1e3,Math.max(F,P)]}(r.utc(l,g).valueOf(),f,m),x=h[0],A=h[1],y=r(x).utcOffset(A);return y.$x.$timezone=m,y},r.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},r.tz.setDefault=function(l){s=l}}})});var Yl=$o((Na,La)=>{"use strict";(function(o,e){typeof Na=="object"&&typeof La<"u"?La.exports=e():typeof define=="function"&&define.amd?define(e):(o=typeof globalThis<"u"?globalThis:o||self).dayjs_plugin_utc=e()})(Na,function(){"use strict";var o="minute",e=/[+-]\d\d(?::?\d\d)?/g,t=/([+-]|\d\d)/g;return function(n,r,s){var i=r.prototype;s.utc=function(g){var m={date:g,utc:!0,args:arguments};return new r(m)},i.utc=function(g){var m=s(this.toDate(),{locale:this.$L,utc:!0});return g?m.add(this.utcOffset(),o):m},i.local=function(){return s(this.toDate(),{locale:this.$L,utc:!1})};var a=i.parse;i.parse=function(g){g.utc&&(this.$u=!0),this.$utils().u(g.$offset)||(this.$offset=g.$offset),a.call(this,g)};var c=i.init;i.init=function(){if(this.$u){var g=this.$d;this.$y=g.getUTCFullYear(),this.$M=g.getUTCMonth(),this.$D=g.getUTCDate(),this.$W=g.getUTCDay(),this.$H=g.getUTCHours(),this.$m=g.getUTCMinutes(),this.$s=g.getUTCSeconds(),this.$ms=g.getUTCMilliseconds()}else c.call(this)};var u=i.utcOffset;i.utcOffset=function(g,m){var f=this.$utils().u;if(f(g))return this.$u?0:f(this.$offset)?u.call(this):this.$offset;if(typeof g=="string"&&(g=function(y){y===void 0&&(y="");var C=y.match(e);if(!C)return null;var R=(""+C[0]).match(t)||["-",0,0],I=R[0],M=60*+R[1]+ +R[2];return M===0?0:I==="+"?M:-M}(g),g===null))return this;var h=Math.abs(g)<=16?60*g:g,x=this;if(m)return x.$offset=h,x.$u=g===0,x;if(g!==0){var A=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(x=this.local().add(h+A,o)).$offset=h,x.$x.$localOffset=A}else x=this.utc();return x};var l=i.format;i.format=function(g){var m=g||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return l.call(this,m)},i.valueOf=function(){var g=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*g},i.isUTC=function(){return!!this.$u},i.toISOString=function(){return this.toDate().toISOString()},i.toString=function(){return this.toDate().toUTCString()};var p=i.toDate;i.toDate=function(g){return g==="s"&&this.$offset?s(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():p.call(this)};var d=i.diff;i.diff=function(g,m,f){if(g&&this.$u===g.$u)return d.call(this,g,m,f);var h=this.local(),x=s(g).local();return d.call(h,x,m,f)}}})});var jx={};Jm(jx,{AxACE:()=>mr,AxACEOptimizedProgram:()=>fo,AxAI:()=>to,AxAIAnthropic:()=>Mn,AxAIAnthropicModel:()=>Dr,AxAIAnthropicVertexModel:()=>Ur,AxAIAzureOpenAI:()=>Ln,AxAICohere:()=>$n,AxAICohereEmbedModel:()=>zr,AxAICohereModel:()=>jr,AxAIDeepSeek:()=>Dn,AxAIDeepSeekModel:()=>qr,AxAIGoogleGemini:()=>Gn,AxAIGoogleGeminiEmbedModel:()=>Hr,AxAIGoogleGeminiEmbedTypes:()=>sa,AxAIGoogleGeminiModel:()=>Un,AxAIGoogleGeminiSafetyCategory:()=>ss,AxAIGoogleGeminiSafetyThreshold:()=>is,AxAIGrok:()=>Xn,AxAIGrokEmbedModels:()=>ya,AxAIGrokModel:()=>eo,AxAIGroq:()=>jn,AxAIGroqModel:()=>Wr,AxAIHuggingFace:()=>zn,AxAIHuggingFaceModel:()=>ps,AxAIMistral:()=>qn,AxAIMistralEmbedModels:()=>pa,AxAIMistralModel:()=>Vr,AxAIOllama:()=>Hn,AxAIOpenAI:()=>Nn,AxAIOpenAIBase:()=>Qe,AxAIOpenAIEmbedModel:()=>Pn,AxAIOpenAIModel:()=>Br,AxAIOpenAIResponses:()=>Vn,AxAIOpenAIResponsesBase:()=>Kr,AxAIOpenAIResponsesImpl:()=>Wn,AxAIOpenAIResponsesModel:()=>Fn,AxAIOpenRouter:()=>Kn,AxAIRefusalError:()=>We,AxAIReka:()=>Jn,AxAIRekaModel:()=>Qr,AxAIServiceAbortedError:()=>Ge,AxAIServiceAuthenticationError:()=>Wt,AxAIServiceError:()=>at,AxAIServiceNetworkError:()=>nt,AxAIServiceResponseError:()=>Ht,AxAIServiceStatusError:()=>pt,AxAIServiceStreamTerminatedError:()=>It,AxAIServiceTimeoutError:()=>bt,AxAITogether:()=>Qn,AxAITogetherModel:()=>Xr,AxAIWebLLM:()=>Yn,AxAIWebLLMModel:()=>Zr,AxAgent:()=>Fo,AxAgentClarificationError:()=>ut,AxAgentProtocolCompletionSignal:()=>ft,AxApacheTika:()=>Hs,AxAssertionError:()=>Ut,AxBalancer:()=>es,AxBaseAI:()=>Xe,AxBaseOptimizer:()=>Ot,AxBootstrapFewShot:()=>hr,AxContentProcessingError:()=>Mt,AxDB:()=>Rs,AxDBBase:()=>wt,AxDBCloudflare:()=>Zn,AxDBManager:()=>ws,AxDBMemory:()=>rn,AxDBPinecone:()=>er,AxDBWeaviate:()=>tr,AxDefaultCostTracker:()=>go,AxDefaultResultReranker:()=>qs,AxDockerSession:()=>si,AxEmbeddingAdapter:()=>ii,AxEvalUtil:()=>Np,AxFlow:()=>Ao,AxFlowDependencyAnalyzer:()=>xr,AxFlowExecutionPlanner:()=>yr,AxFlowSubContextImpl:()=>Tr,AxFlowTypedSubContextImpl:()=>ri,AxFluentFieldType:()=>et,AxFunctionError:()=>ao,AxFunctionProcessor:()=>uo,AxGEPA:()=>un,AxGen:()=>Be,AxGenerateError:()=>po,AxHFDataLoader:()=>ei,AxInstanceRegistry:()=>ar,AxJSRuntime:()=>Tn,AxJSRuntimePermission:()=>Cc,AxLLMRequestTypeValues:()=>Gi,AxLearn:()=>Zs,AxMCPClient:()=>ui,AxMCPHTTPSSETransport:()=>di,AxMCPStreambleHTTPTransport:()=>pi,AxMediaNotSupportedError:()=>Rt,AxMemory:()=>nr,AxMiPRO:()=>ni,AxMockAIService:()=>gs,AxMultiServiceRouter:()=>fs,AxOptimizedProgramImpl:()=>kt,AxProgram:()=>an,AxPromptTemplate:()=>cn,AxProviderRouter:()=>ys,AxRateLimiterTokenUsage:()=>Bn,AxSignature:()=>Ve,AxSignatureBuilder:()=>lo,AxSimpleClassifier:()=>Vs,AxSimpleClassifierClass:()=>Ws,AxSpanKindValues:()=>Bi,AxStepContextImpl:()=>pr,AxStopFunctionCallException:()=>fn,AxStringUtil:()=>zs,AxSynth:()=>fr,AxTestPrompt:()=>Ks,AxTokenLimitError:()=>Mr,AxTraceLogger:()=>dr,agent:()=>Gm,ai:()=>kl,ax:()=>gt,axAIAnthropicDefaultConfig:()=>Xi,axAIAnthropicVertexDefaultConfig:()=>tl,axAIAzureOpenAIBestConfig:()=>sl,axAIAzureOpenAICreativeConfig:()=>rl,axAIAzureOpenAIDefaultConfig:()=>ea,axAIAzureOpenAIFastConfig:()=>ol,axAICohereCreativeConfig:()=>ll,axAICohereDefaultConfig:()=>ra,axAIDeepSeekCodeConfig:()=>pl,axAIDeepSeekDefaultConfig:()=>oa,axAIGoogleGeminiDefaultConfig:()=>ca,axAIGoogleGeminiDefaultCreativeConfig:()=>fl,axAIGrokBestConfig:()=>Sl,axAIGrokDefaultConfig:()=>Is,axAIHuggingFaceCreativeConfig:()=>hl,axAIHuggingFaceDefaultConfig:()=>la,axAIMistralBestConfig:()=>xl,axAIMistralDefaultConfig:()=>ms,axAIOllamaDefaultConfig:()=>da,axAIOllamaDefaultCreativeConfig:()=>Al,axAIOpenAIBestConfig:()=>Yo,axAIOpenAICreativeConfig:()=>Xo,axAIOpenAIDefaultConfig:()=>dn,axAIOpenAIFastConfig:()=>Zo,axAIOpenAIResponsesBestConfig:()=>yl,axAIOpenAIResponsesCreativeConfig:()=>bl,axAIOpenAIResponsesDefaultConfig:()=>Jr,axAIOpenRouterDefaultConfig:()=>ga,axAIRekaBestConfig:()=>Il,axAIRekaCreativeConfig:()=>Rl,axAIRekaDefaultConfig:()=>Yr,axAIRekaFastConfig:()=>wl,axAITogetherDefaultConfig:()=>ha,axAIWebLLMCreativeConfig:()=>vl,axAIWebLLMDefaultConfig:()=>Aa,axAnalyzeChatPromptRequirements:()=>Cl,axAnalyzeRequestRequirements:()=>mn,axBaseAIDefaultConfig:()=>Le,axBaseAIDefaultCreativeConfig:()=>Ze,axBuildActorDefinition:()=>To,axBuildResponderDefinition:()=>hi,axCheckMetricsHealth:()=>Ol,axCreateDefaultColorLogger:()=>Ui,axCreateDefaultOptimizerColorLogger:()=>oc,axCreateDefaultOptimizerTextLogger:()=>Up,axCreateDefaultTextLogger:()=>Iu,axCreateFlowColorLogger:()=>xo,axCreateFlowTextLogger:()=>Kp,axCreateJSRuntime:()=>ud,axDefaultFlowLogger:()=>Jp,axDefaultMetricsConfig:()=>Ia,axDefaultOptimizerLogger:()=>mo,axDefaultOptimizerMetricsConfig:()=>sc,axGetCompatibilityReport:()=>il,axGetFormatCompatibility:()=>cl,axGetMetricsConfig:()=>Ml,axGetOptimizerMetricsConfig:()=>Bp,axGetProvidersWithMediaSupport:()=>al,axGlobals:()=>ke,axModelInfoAnthropic:()=>Gr,axModelInfoCohere:()=>rs,axModelInfoDeepSeek:()=>os,axModelInfoGoogleGemini:()=>as,axModelInfoGrok:()=>Ts,axModelInfoGroq:()=>us,axModelInfoHuggingFace:()=>ls,axModelInfoMistral:()=>ds,axModelInfoOpenAI:()=>_n,axModelInfoOpenAIResponses:()=>Qo,axModelInfoReka:()=>As,axModelInfoTogether:()=>bs,axModelInfoWebLLM:()=>Cs,axProcessContentForProvider:()=>xs,axRAG:()=>Bm,axScoreProvidersForRequest:()=>ts,axSelectOptimalProvider:()=>ns,axSpanAttributes:()=>ve,axSpanEvents:()=>Pt,axUpdateMetricsConfig:()=>El,axUpdateOptimizerMetricsConfig:()=>Gp,axValidateChatRequestMessage:()=>En,axValidateChatResponseResult:()=>Jo,axValidateProviderCapabilities:()=>ta,axWorkerRuntime:()=>ai,f:()=>V,flow:()=>oi,fn:()=>bp,s:()=>$p});function Tt({model:o,modelInfo:e,models:t}){let n=t?.find(u=>u.key===o),r=n&&"model"in n?n.model:o,s=e.find(u=>u.name===o);if(s)return s;let i=e.find(u=>u.name===r);if(i)return i;let a=r.replace(/^(anthropic\.|openai\.)/,"").replace(/-latest$/,"").replace(/-\d{8}$/,"").replace(/-v\d+:\d+$/,"").replace(/@\d{8}$/,"").replace(/-\d{2,}(-[a-zA-Z0-9-]+)?$/,"").replace(/-v\d+@\d{8}$/,"").replace(/-v\d+$/,""),c=e.find(u=>u.name===a);return c||null}var Oi=(()=>{if(globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function")return globalThis.crypto;throw new Error("Web Crypto API with randomUUID support not available. Requires Node.js 16+ or modern browser.")})();function it(){return Oi.randomUUID()}async function Ym(o){let e=new TextEncoder,t=typeof o=="string"?e.encode(o):o,n=await Oi.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(n)).map(i=>i.toString(16).padStart(2,"0")).join("")}var ki=class{data="";update(e){return this.data+=e,this}digest(e){if(e!=="hex")throw new Error("Only hex encoding is supported");let n=new TextEncoder().encode(this.data),r=0;for(let s=0;s<n.length;s++){let i=n[s];r=(r<<5)-r+i,r=r&r}return Math.abs(r).toString(16).padStart(8,"0")}async digestAsync(){return Ym(this.data)}};function yt(o){if(o!=="sha256")throw new Error("Only SHA-256 algorithm is supported");return new ki}function eu(){return Oi}var Do=class extends TransformStream{buffer="";currentEvent={rawData:""};dataParser;onError;constructor(e={}){super({transform:(t,n)=>this.handleChunk(t,n),flush:t=>this.handleFlush(t)}),this.dataParser=e.dataParser||JSON.parse,this.onError=e.onError||((t,n)=>{console.warn("Failed to parse event data:",t),console.log("Raw data that failed to parse:",n)})}handleChunk(e,t){this.buffer+=e,this.processBuffer(t)}handleFlush(e){this.processBuffer(e),this.currentEvent.rawData&&this.processEvent(e)}processBuffer(e){let n=this.buffer.replace(/\r\n|\r/g,`
|
|
1
|
+
"use strict";var ax=(()=>{var zm=Object.create;var Lo=Object.defineProperty;var qm=Object.getOwnPropertyDescriptor;var Hm=Object.getOwnPropertyNames;var Wm=Object.getPrototypeOf,Vm=Object.prototype.hasOwnProperty;var Km=(o=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(o,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):o)(function(o){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});var $o=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),Jm=(o,e)=>{for(var t in e)Lo(o,t,{get:e[t],enumerable:!0})},Zc=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Hm(e))!Vm.call(o,r)&&r!==t&&Lo(o,r,{get:()=>e[r],enumerable:!(n=qm(e,r))||n.enumerable});return o};var Er=(o,e,t)=>(t=o!=null?zm(Wm(o)):{},Zc(e||!o||!o.__esModule?Lo(t,"default",{value:o,enumerable:!0}):t,o)),Qm=o=>Zc(Lo({},"__esModule",{value:!0}),o);var Kl=$o((Oa,Ea)=>{"use strict";(function(o,e){typeof Oa=="object"&&typeof Ea<"u"?Ea.exports=e():typeof define=="function"&&define.amd?define(e):(o=typeof globalThis<"u"?globalThis:o||self).dayjs=e()})(Oa,function(){"use strict";var o=1e3,e=6e4,t=36e5,n="millisecond",r="second",s="minute",i="hour",a="day",c="week",u="month",l="quarter",p="year",d="date",g="Invalid Date",m=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,f=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,h={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(E){var O=["th","st","nd","rd"],S=E%100;return"["+E+(O[(S-20)%10]||O[S]||O[0])+"]"}},x=function(E,O,S){var k=String(E);return!k||k.length>=O?E:""+Array(O+1-k.length).join(S)+E},A={s:x,z:function(E){var O=-E.utcOffset(),S=Math.abs(O),k=Math.floor(S/60),_=S%60;return(O<=0?"+":"-")+x(k,2,"0")+":"+x(_,2,"0")},m:function E(O,S){if(O.date()<S.date())return-E(S,O);var k=12*(S.year()-O.year())+(S.month()-O.month()),_=O.clone().add(k,u),$=S-_<0,B=O.clone().add(k+($?-1:1),u);return+(-(k+(S-_)/($?_-B:B-_))||0)},a:function(E){return E<0?Math.ceil(E)||0:Math.floor(E)},p:function(E){return{M:u,y:p,w:c,d:a,D:d,h:i,m:s,s:r,ms:n,Q:l}[E]||String(E||"").toLowerCase().replace(/s$/,"")},u:function(E){return E===void 0}},y="en",C={};C[y]=h;var R="$isDayjsObject",I=function(E){return E instanceof N||!(!E||!E[R])},M=function E(O,S,k){var _;if(!O)return y;if(typeof O=="string"){var $=O.toLowerCase();C[$]&&(_=$),S&&(C[$]=S,_=$);var B=O.split("-");if(!_&&B.length>1)return E(B[0])}else{var U=O.name;C[U]=O,_=U}return!k&&_&&(y=_),_||!k&&y},F=function(E,O){if(I(E))return E.clone();var S=typeof O=="object"?O:{};return S.date=E,S.args=arguments,new N(S)},P=A;P.l=M,P.i=I,P.w=function(E,O){return F(E,{locale:O.$L,utc:O.$u,x:O.$x,$offset:O.$offset})};var N=function(){function E(S){this.$L=M(S.locale,null,!0),this.parse(S),this.$x=this.$x||S.x||{},this[R]=!0}var O=E.prototype;return O.parse=function(S){this.$d=function(k){var _=k.date,$=k.utc;if(_===null)return new Date(NaN);if(P.u(_))return new Date;if(_ instanceof Date)return new Date(_);if(typeof _=="string"&&!/Z$/i.test(_)){var B=_.match(m);if(B){var U=B[2]-1||0,ee=(B[7]||"0").substring(0,3);return $?new Date(Date.UTC(B[1],U,B[3]||1,B[4]||0,B[5]||0,B[6]||0,ee)):new Date(B[1],U,B[3]||1,B[4]||0,B[5]||0,B[6]||0,ee)}}return new Date(_)}(S),this.init()},O.init=function(){var S=this.$d;this.$y=S.getFullYear(),this.$M=S.getMonth(),this.$D=S.getDate(),this.$W=S.getDay(),this.$H=S.getHours(),this.$m=S.getMinutes(),this.$s=S.getSeconds(),this.$ms=S.getMilliseconds()},O.$utils=function(){return P},O.isValid=function(){return this.$d.toString()!==g},O.isSame=function(S,k){var _=F(S);return this.startOf(k)<=_&&_<=this.endOf(k)},O.isAfter=function(S,k){return F(S)<this.startOf(k)},O.isBefore=function(S,k){return this.endOf(k)<F(S)},O.$g=function(S,k,_){return P.u(S)?this[k]:this.set(_,S)},O.unix=function(){return Math.floor(this.valueOf()/1e3)},O.valueOf=function(){return this.$d.getTime()},O.startOf=function(S,k){var _=this,$=!!P.u(k)||k,B=P.p(S),U=function(X,oe){var K=P.w(_.$u?Date.UTC(_.$y,oe,X):new Date(_.$y,oe,X),_);return $?K:K.endOf(a)},ee=function(X,oe){return P.w(_.toDate()[X].apply(_.toDate("s"),($?[0,0,0,0]:[23,59,59,999]).slice(oe)),_)},D=this.$W,ne=this.$M,J=this.$D,q="set"+(this.$u?"UTC":"");switch(B){case p:return $?U(1,0):U(31,11);case u:return $?U(1,ne):U(0,ne+1);case c:var z=this.$locale().weekStart||0,j=(D<z?D+7:D)-z;return U($?J-j:J+(6-j),ne);case a:case d:return ee(q+"Hours",0);case i:return ee(q+"Minutes",1);case s:return ee(q+"Seconds",2);case r:return ee(q+"Milliseconds",3);default:return this.clone()}},O.endOf=function(S){return this.startOf(S,!1)},O.$set=function(S,k){var _,$=P.p(S),B="set"+(this.$u?"UTC":""),U=(_={},_[a]=B+"Date",_[d]=B+"Date",_[u]=B+"Month",_[p]=B+"FullYear",_[i]=B+"Hours",_[s]=B+"Minutes",_[r]=B+"Seconds",_[n]=B+"Milliseconds",_)[$],ee=$===a?this.$D+(k-this.$W):k;if($===u||$===p){var D=this.clone().set(d,1);D.$d[U](ee),D.init(),this.$d=D.set(d,Math.min(this.$D,D.daysInMonth())).$d}else U&&this.$d[U](ee);return this.init(),this},O.set=function(S,k){return this.clone().$set(S,k)},O.get=function(S){return this[P.p(S)]()},O.add=function(S,k){var _,$=this;S=Number(S);var B=P.p(k),U=function(ne){var J=F($);return P.w(J.date(J.date()+Math.round(ne*S)),$)};if(B===u)return this.set(u,this.$M+S);if(B===p)return this.set(p,this.$y+S);if(B===a)return U(1);if(B===c)return U(7);var ee=(_={},_[s]=e,_[i]=t,_[r]=o,_)[B]||1,D=this.$d.getTime()+S*ee;return P.w(D,this)},O.subtract=function(S,k){return this.add(-1*S,k)},O.format=function(S){var k=this,_=this.$locale();if(!this.isValid())return _.invalidDate||g;var $=S||"YYYY-MM-DDTHH:mm:ssZ",B=P.z(this),U=this.$H,ee=this.$m,D=this.$M,ne=_.weekdays,J=_.months,q=_.meridiem,z=function(oe,K,le,Se){return oe&&(oe[K]||oe(k,$))||le[K].slice(0,Se)},j=function(oe){return P.s(U%12||12,oe,"0")},X=q||function(oe,K,le){var Se=oe<12?"AM":"PM";return le?Se.toLowerCase():Se};return $.replace(f,function(oe,K){return K||function(le){switch(le){case"YY":return String(k.$y).slice(-2);case"YYYY":return P.s(k.$y,4,"0");case"M":return D+1;case"MM":return P.s(D+1,2,"0");case"MMM":return z(_.monthsShort,D,J,3);case"MMMM":return z(J,D);case"D":return k.$D;case"DD":return P.s(k.$D,2,"0");case"d":return String(k.$W);case"dd":return z(_.weekdaysMin,k.$W,ne,2);case"ddd":return z(_.weekdaysShort,k.$W,ne,3);case"dddd":return ne[k.$W];case"H":return String(U);case"HH":return P.s(U,2,"0");case"h":return j(1);case"hh":return j(2);case"a":return X(U,ee,!0);case"A":return X(U,ee,!1);case"m":return String(ee);case"mm":return P.s(ee,2,"0");case"s":return String(k.$s);case"ss":return P.s(k.$s,2,"0");case"SSS":return P.s(k.$ms,3,"0");case"Z":return B}return null}(oe)||B.replace(":","")})},O.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},O.diff=function(S,k,_){var $,B=this,U=P.p(k),ee=F(S),D=(ee.utcOffset()-this.utcOffset())*e,ne=this-ee,J=function(){return P.m(B,ee)};switch(U){case p:$=J()/12;break;case u:$=J();break;case l:$=J()/3;break;case c:$=(ne-D)/6048e5;break;case a:$=(ne-D)/864e5;break;case i:$=ne/t;break;case s:$=ne/e;break;case r:$=ne/o;break;default:$=ne}return _?$:P.a($)},O.daysInMonth=function(){return this.endOf(u).$D},O.$locale=function(){return C[this.$L]},O.locale=function(S,k){if(!S)return this.$L;var _=this.clone(),$=M(S,k,!0);return $&&(_.$L=$),_},O.clone=function(){return P.w(this.$d,this)},O.toDate=function(){return new Date(this.valueOf())},O.toJSON=function(){return this.isValid()?this.toISOString():null},O.toISOString=function(){return this.$d.toISOString()},O.toString=function(){return this.$d.toUTCString()},E}(),T=N.prototype;return F.prototype=T,[["$ms",n],["$s",r],["$m",s],["$H",i],["$W",a],["$M",u],["$y",p],["$D",d]].forEach(function(E){T[E[1]]=function(O){return this.$g(O,E[0],E[1])}}),F.extend=function(E,O){return E.$i||(E(O,N,F),E.$i=!0),F},F.locale=M,F.isDayjs=I,F.unix=function(E){return F(1e3*E)},F.en=C[y],F.Ls=C,F.p={},F})});var Jl=$o((Ma,Pa)=>{"use strict";(function(o,e){typeof Ma=="object"&&typeof Pa<"u"?Pa.exports=e():typeof define=="function"&&define.amd?define(e):(o=typeof globalThis<"u"?globalThis:o||self).dayjs_plugin_customParseFormat=e()})(Ma,function(){"use strict";var o={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,t=/\d/,n=/\d\d/,r=/\d\d?/,s=/\d*[^-_:/,()\s\d]+/,i={},a=function(m){return(m=+m)+(m>68?1900:2e3)},c=function(m){return function(f){this[m]=+f}},u=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(f){if(!f||f==="Z")return 0;var h=f.match(/([+-]|\d\d)/g),x=60*h[1]+(+h[2]||0);return x===0?0:h[0]==="+"?-x:x}(m)}],l=function(m){var f=i[m];return f&&(f.indexOf?f:f.s.concat(f.f))},p=function(m,f){var h,x=i.meridiem;if(x){for(var A=1;A<=24;A+=1)if(m.indexOf(x(A,0,f))>-1){h=A>12;break}}else h=m===(f?"pm":"PM");return h},d={A:[s,function(m){this.afternoon=p(m,!1)}],a:[s,function(m){this.afternoon=p(m,!0)}],Q:[t,function(m){this.month=3*(m-1)+1}],S:[t,function(m){this.milliseconds=100*+m}],SS:[n,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[r,c("seconds")],ss:[r,c("seconds")],m:[r,c("minutes")],mm:[r,c("minutes")],H:[r,c("hours")],h:[r,c("hours")],HH:[r,c("hours")],hh:[r,c("hours")],D:[r,c("day")],DD:[n,c("day")],Do:[s,function(m){var f=i.ordinal,h=m.match(/\d+/);if(this.day=h[0],f)for(var x=1;x<=31;x+=1)f(x).replace(/\[|\]/g,"")===m&&(this.day=x)}],w:[r,c("week")],ww:[n,c("week")],M:[r,c("month")],MM:[n,c("month")],MMM:[s,function(m){var f=l("months"),h=(l("monthsShort")||f.map(function(x){return x.slice(0,3)})).indexOf(m)+1;if(h<1)throw new Error;this.month=h%12||h}],MMMM:[s,function(m){var f=l("months").indexOf(m)+1;if(f<1)throw new Error;this.month=f%12||f}],Y:[/[+-]?\d+/,c("year")],YY:[n,function(m){this.year=a(m)}],YYYY:[/\d{4}/,c("year")],Z:u,ZZ:u};function g(m){var f,h;f=m,h=i&&i.formats;for(var x=(m=f.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(F,P,N){var T=N&&N.toUpperCase();return P||h[N]||o[N]||h[T].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(E,O,S){return O||S.slice(1)})})).match(e),A=x.length,y=0;y<A;y+=1){var C=x[y],R=d[C],I=R&&R[0],M=R&&R[1];x[y]=M?{regex:I,parser:M}:C.replace(/^\[|\]$/g,"")}return function(F){for(var P={},N=0,T=0;N<A;N+=1){var E=x[N];if(typeof E=="string")T+=E.length;else{var O=E.regex,S=E.parser,k=F.slice(T),_=O.exec(k)[0];S.call(P,_),F=F.replace(_,"")}}return function($){var B=$.afternoon;if(B!==void 0){var U=$.hours;B?U<12&&($.hours+=12):U===12&&($.hours=0),delete $.afternoon}}(P),P}}return function(m,f,h){h.p.customParseFormat=!0,m&&m.parseTwoDigitYear&&(a=m.parseTwoDigitYear);var x=f.prototype,A=x.parse;x.parse=function(y){var C=y.date,R=y.utc,I=y.args;this.$u=R;var M=I[1];if(typeof M=="string"){var F=I[2]===!0,P=I[3]===!0,N=F||P,T=I[2];P&&(T=I[2]),i=this.$locale(),!F&&T&&(i=h.Ls[T]),this.$d=function(k,_,$,B){try{if(["x","X"].indexOf(_)>-1)return new Date((_==="X"?1e3:1)*k);var U=g(_)(k),ee=U.year,D=U.month,ne=U.day,J=U.hours,q=U.minutes,z=U.seconds,j=U.milliseconds,X=U.zone,oe=U.week,K=new Date,le=ne||(ee||D?1:K.getDate()),Se=ee||K.getFullYear(),Oe=0;ee&&!D||(Oe=D>0?D-1:K.getMonth());var te,pe=J||0,xe=q||0,se=z||0,Ee=j||0;return X?new Date(Date.UTC(Se,Oe,le,pe,xe,se,Ee+60*X.offset*1e3)):$?new Date(Date.UTC(Se,Oe,le,pe,xe,se,Ee)):(te=new Date(Se,Oe,le,pe,xe,se,Ee),oe&&(te=B(te).week(oe).toDate()),te)}catch{return new Date("")}}(C,M,R,h),this.init(),T&&T!==!0&&(this.$L=this.locale(T).$L),N&&C!=this.format(M)&&(this.$d=new Date("")),i={}}else if(M instanceof Array)for(var E=M.length,O=1;O<=E;O+=1){I[1]=M[O-1];var S=h.apply(this,I);if(S.isValid()){this.$d=S.$d,this.$L=S.$L,this.init();break}O===E&&(this.$d=new Date(""))}else A.call(this,y)}}})});var Ql=$o((Fa,_a)=>{"use strict";(function(o,e){typeof Fa=="object"&&typeof _a<"u"?_a.exports=e():typeof define=="function"&&define.amd?define(e):(o=typeof globalThis<"u"?globalThis:o||self).dayjs_plugin_timezone=e()})(Fa,function(){"use strict";var o={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(t,n,r){var s,i=function(l,p,d){d===void 0&&(d={});var g=new Date(l),m=function(f,h){h===void 0&&(h={});var x=h.timeZoneName||"short",A=f+"|"+x,y=e[A];return y||(y=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:f,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:x}),e[A]=y),y}(p,d);return m.formatToParts(g)},a=function(l,p){for(var d=i(l,p),g=[],m=0;m<d.length;m+=1){var f=d[m],h=f.type,x=f.value,A=o[h];A>=0&&(g[A]=parseInt(x,10))}var y=g[3],C=y===24?0:y,R=g[0]+"-"+g[1]+"-"+g[2]+" "+C+":"+g[4]+":"+g[5]+":000",I=+l;return(r.utc(R).valueOf()-(I-=I%1e3))/6e4},c=n.prototype;c.tz=function(l,p){l===void 0&&(l=s);var d,g=this.utcOffset(),m=this.toDate(),f=m.toLocaleString("en-US",{timeZone:l}),h=Math.round((m-new Date(f))/1e3/60),x=15*-Math.round(m.getTimezoneOffset()/15)-h;if(!Number(x))d=this.utcOffset(0,p);else if(d=r(f,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(x,!0),p){var A=d.utcOffset();d=d.add(g-A,"minute")}return d.$x.$timezone=l,d},c.offsetName=function(l){var p=this.$x.$timezone||r.tz.guess(),d=i(this.valueOf(),p,{timeZoneName:l}).find(function(g){return g.type.toLowerCase()==="timezonename"});return d&&d.value};var u=c.startOf;c.startOf=function(l,p){if(!this.$x||!this.$x.$timezone)return u.call(this,l,p);var d=r(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return u.call(d,l,p).tz(this.$x.$timezone,!0)},r.tz=function(l,p,d){var g=d&&p,m=d||p||s,f=a(+r(),m);if(typeof l!="string")return r(l).tz(m);var h=function(C,R,I){var M=C-60*R*1e3,F=a(M,I);if(R===F)return[M,R];var P=a(M-=60*(F-R)*1e3,I);return F===P?[M,F]:[C-60*Math.min(F,P)*1e3,Math.max(F,P)]}(r.utc(l,g).valueOf(),f,m),x=h[0],A=h[1],y=r(x).utcOffset(A);return y.$x.$timezone=m,y},r.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},r.tz.setDefault=function(l){s=l}}})});var Yl=$o((Na,La)=>{"use strict";(function(o,e){typeof Na=="object"&&typeof La<"u"?La.exports=e():typeof define=="function"&&define.amd?define(e):(o=typeof globalThis<"u"?globalThis:o||self).dayjs_plugin_utc=e()})(Na,function(){"use strict";var o="minute",e=/[+-]\d\d(?::?\d\d)?/g,t=/([+-]|\d\d)/g;return function(n,r,s){var i=r.prototype;s.utc=function(g){var m={date:g,utc:!0,args:arguments};return new r(m)},i.utc=function(g){var m=s(this.toDate(),{locale:this.$L,utc:!0});return g?m.add(this.utcOffset(),o):m},i.local=function(){return s(this.toDate(),{locale:this.$L,utc:!1})};var a=i.parse;i.parse=function(g){g.utc&&(this.$u=!0),this.$utils().u(g.$offset)||(this.$offset=g.$offset),a.call(this,g)};var c=i.init;i.init=function(){if(this.$u){var g=this.$d;this.$y=g.getUTCFullYear(),this.$M=g.getUTCMonth(),this.$D=g.getUTCDate(),this.$W=g.getUTCDay(),this.$H=g.getUTCHours(),this.$m=g.getUTCMinutes(),this.$s=g.getUTCSeconds(),this.$ms=g.getUTCMilliseconds()}else c.call(this)};var u=i.utcOffset;i.utcOffset=function(g,m){var f=this.$utils().u;if(f(g))return this.$u?0:f(this.$offset)?u.call(this):this.$offset;if(typeof g=="string"&&(g=function(y){y===void 0&&(y="");var C=y.match(e);if(!C)return null;var R=(""+C[0]).match(t)||["-",0,0],I=R[0],M=60*+R[1]+ +R[2];return M===0?0:I==="+"?M:-M}(g),g===null))return this;var h=Math.abs(g)<=16?60*g:g,x=this;if(m)return x.$offset=h,x.$u=g===0,x;if(g!==0){var A=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(x=this.local().add(h+A,o)).$offset=h,x.$x.$localOffset=A}else x=this.utc();return x};var l=i.format;i.format=function(g){var m=g||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return l.call(this,m)},i.valueOf=function(){var g=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*g},i.isUTC=function(){return!!this.$u},i.toISOString=function(){return this.toDate().toISOString()},i.toString=function(){return this.toDate().toUTCString()};var p=i.toDate;i.toDate=function(g){return g==="s"&&this.$offset?s(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():p.call(this)};var d=i.diff;i.diff=function(g,m,f){if(g&&this.$u===g.$u)return d.call(this,g,m,f);var h=this.local(),x=s(g).local();return d.call(h,x,m,f)}}})});var jx={};Jm(jx,{AxACE:()=>mr,AxACEOptimizedProgram:()=>fo,AxAI:()=>to,AxAIAnthropic:()=>Mn,AxAIAnthropicModel:()=>Dr,AxAIAnthropicVertexModel:()=>Ur,AxAIAzureOpenAI:()=>Ln,AxAICohere:()=>$n,AxAICohereEmbedModel:()=>zr,AxAICohereModel:()=>jr,AxAIDeepSeek:()=>Dn,AxAIDeepSeekModel:()=>qr,AxAIGoogleGemini:()=>Gn,AxAIGoogleGeminiEmbedModel:()=>Hr,AxAIGoogleGeminiEmbedTypes:()=>sa,AxAIGoogleGeminiModel:()=>Un,AxAIGoogleGeminiSafetyCategory:()=>ss,AxAIGoogleGeminiSafetyThreshold:()=>is,AxAIGrok:()=>Xn,AxAIGrokEmbedModels:()=>ya,AxAIGrokModel:()=>eo,AxAIGroq:()=>jn,AxAIGroqModel:()=>Wr,AxAIHuggingFace:()=>zn,AxAIHuggingFaceModel:()=>ps,AxAIMistral:()=>qn,AxAIMistralEmbedModels:()=>pa,AxAIMistralModel:()=>Vr,AxAIOllama:()=>Hn,AxAIOpenAI:()=>Nn,AxAIOpenAIBase:()=>Qe,AxAIOpenAIEmbedModel:()=>Pn,AxAIOpenAIModel:()=>Br,AxAIOpenAIResponses:()=>Vn,AxAIOpenAIResponsesBase:()=>Kr,AxAIOpenAIResponsesImpl:()=>Wn,AxAIOpenAIResponsesModel:()=>Fn,AxAIOpenRouter:()=>Kn,AxAIRefusalError:()=>We,AxAIReka:()=>Jn,AxAIRekaModel:()=>Qr,AxAIServiceAbortedError:()=>Ge,AxAIServiceAuthenticationError:()=>Wt,AxAIServiceError:()=>ct,AxAIServiceNetworkError:()=>nt,AxAIServiceResponseError:()=>Ht,AxAIServiceStatusError:()=>dt,AxAIServiceStreamTerminatedError:()=>It,AxAIServiceTimeoutError:()=>Ct,AxAITogether:()=>Qn,AxAITogetherModel:()=>Xr,AxAIWebLLM:()=>Yn,AxAIWebLLMModel:()=>Zr,AxAgent:()=>Fo,AxAgentClarificationError:()=>lt,AxAgentProtocolCompletionSignal:()=>ht,AxApacheTika:()=>Hs,AxAssertionError:()=>Ut,AxBalancer:()=>es,AxBaseAI:()=>Xe,AxBaseOptimizer:()=>Ot,AxBootstrapFewShot:()=>hr,AxContentProcessingError:()=>Mt,AxDB:()=>Rs,AxDBBase:()=>wt,AxDBCloudflare:()=>Zn,AxDBManager:()=>ws,AxDBMemory:()=>rn,AxDBPinecone:()=>er,AxDBWeaviate:()=>tr,AxDefaultCostTracker:()=>go,AxDefaultResultReranker:()=>qs,AxDockerSession:()=>si,AxEmbeddingAdapter:()=>ii,AxEvalUtil:()=>Np,AxFlow:()=>Ao,AxFlowDependencyAnalyzer:()=>xr,AxFlowExecutionPlanner:()=>yr,AxFlowSubContextImpl:()=>Tr,AxFlowTypedSubContextImpl:()=>ri,AxFluentFieldType:()=>et,AxFunctionError:()=>ao,AxFunctionProcessor:()=>uo,AxGEPA:()=>un,AxGen:()=>Be,AxGenerateError:()=>po,AxHFDataLoader:()=>ei,AxInstanceRegistry:()=>ar,AxJSRuntime:()=>Tn,AxJSRuntimePermission:()=>Cc,AxLLMRequestTypeValues:()=>Gi,AxLearn:()=>Zs,AxMCPClient:()=>ui,AxMCPHTTPSSETransport:()=>di,AxMCPStreambleHTTPTransport:()=>pi,AxMediaNotSupportedError:()=>Rt,AxMemory:()=>nr,AxMiPRO:()=>ni,AxMockAIService:()=>gs,AxMultiServiceRouter:()=>fs,AxOptimizedProgramImpl:()=>kt,AxProgram:()=>an,AxPromptTemplate:()=>cn,AxProviderRouter:()=>ys,AxRateLimiterTokenUsage:()=>Bn,AxSignature:()=>Ve,AxSignatureBuilder:()=>lo,AxSimpleClassifier:()=>Vs,AxSimpleClassifierClass:()=>Ws,AxSpanKindValues:()=>Bi,AxStepContextImpl:()=>pr,AxStopFunctionCallException:()=>fn,AxStringUtil:()=>zs,AxSynth:()=>fr,AxTestPrompt:()=>Ks,AxTokenLimitError:()=>Mr,AxTraceLogger:()=>dr,agent:()=>Gm,ai:()=>kl,ax:()=>ft,axAIAnthropicDefaultConfig:()=>Xi,axAIAnthropicVertexDefaultConfig:()=>tl,axAIAzureOpenAIBestConfig:()=>sl,axAIAzureOpenAICreativeConfig:()=>rl,axAIAzureOpenAIDefaultConfig:()=>ea,axAIAzureOpenAIFastConfig:()=>ol,axAICohereCreativeConfig:()=>ll,axAICohereDefaultConfig:()=>ra,axAIDeepSeekCodeConfig:()=>pl,axAIDeepSeekDefaultConfig:()=>oa,axAIGoogleGeminiDefaultConfig:()=>ca,axAIGoogleGeminiDefaultCreativeConfig:()=>fl,axAIGrokBestConfig:()=>Sl,axAIGrokDefaultConfig:()=>Is,axAIHuggingFaceCreativeConfig:()=>hl,axAIHuggingFaceDefaultConfig:()=>la,axAIMistralBestConfig:()=>xl,axAIMistralDefaultConfig:()=>ms,axAIOllamaDefaultConfig:()=>da,axAIOllamaDefaultCreativeConfig:()=>Al,axAIOpenAIBestConfig:()=>Yo,axAIOpenAICreativeConfig:()=>Xo,axAIOpenAIDefaultConfig:()=>dn,axAIOpenAIFastConfig:()=>Zo,axAIOpenAIResponsesBestConfig:()=>yl,axAIOpenAIResponsesCreativeConfig:()=>bl,axAIOpenAIResponsesDefaultConfig:()=>Jr,axAIOpenRouterDefaultConfig:()=>ga,axAIRekaBestConfig:()=>Il,axAIRekaCreativeConfig:()=>Rl,axAIRekaDefaultConfig:()=>Yr,axAIRekaFastConfig:()=>wl,axAITogetherDefaultConfig:()=>ha,axAIWebLLMCreativeConfig:()=>vl,axAIWebLLMDefaultConfig:()=>Aa,axAnalyzeChatPromptRequirements:()=>Cl,axAnalyzeRequestRequirements:()=>mn,axBaseAIDefaultConfig:()=>Le,axBaseAIDefaultCreativeConfig:()=>Ze,axBuildActorDefinition:()=>To,axBuildResponderDefinition:()=>hi,axCheckMetricsHealth:()=>Ol,axCreateDefaultColorLogger:()=>Ui,axCreateDefaultOptimizerColorLogger:()=>oc,axCreateDefaultOptimizerTextLogger:()=>Up,axCreateDefaultTextLogger:()=>Iu,axCreateFlowColorLogger:()=>xo,axCreateFlowTextLogger:()=>Kp,axCreateJSRuntime:()=>ud,axDefaultFlowLogger:()=>Jp,axDefaultMetricsConfig:()=>Ia,axDefaultOptimizerLogger:()=>mo,axDefaultOptimizerMetricsConfig:()=>sc,axGetCompatibilityReport:()=>il,axGetFormatCompatibility:()=>cl,axGetMetricsConfig:()=>Ml,axGetOptimizerMetricsConfig:()=>Bp,axGetProvidersWithMediaSupport:()=>al,axGlobals:()=>ke,axModelInfoAnthropic:()=>Gr,axModelInfoCohere:()=>rs,axModelInfoDeepSeek:()=>os,axModelInfoGoogleGemini:()=>as,axModelInfoGrok:()=>Ts,axModelInfoGroq:()=>us,axModelInfoHuggingFace:()=>ls,axModelInfoMistral:()=>ds,axModelInfoOpenAI:()=>_n,axModelInfoOpenAIResponses:()=>Qo,axModelInfoReka:()=>As,axModelInfoTogether:()=>bs,axModelInfoWebLLM:()=>Cs,axProcessContentForProvider:()=>xs,axRAG:()=>Bm,axScoreProvidersForRequest:()=>ts,axSelectOptimalProvider:()=>ns,axSpanAttributes:()=>ve,axSpanEvents:()=>Pt,axUpdateMetricsConfig:()=>El,axUpdateOptimizerMetricsConfig:()=>Gp,axValidateChatRequestMessage:()=>En,axValidateChatResponseResult:()=>Jo,axValidateProviderCapabilities:()=>ta,axWorkerRuntime:()=>ai,f:()=>V,flow:()=>oi,fn:()=>bp,s:()=>$p});function it({model:o,modelInfo:e,models:t}){let n=t?.find(u=>u.key===o),r=n&&"model"in n?n.model:o,s=e.find(u=>u.name===o);if(s)return s;let i=e.find(u=>u.name===r);if(i)return i;let a=r.replace(/^(anthropic\.|openai\.)/,"").replace(/-latest$/,"").replace(/-\d{8}$/,"").replace(/-v\d+:\d+$/,"").replace(/@\d{8}$/,"").replace(/-\d{2,}(-[a-zA-Z0-9-]+)?$/,"").replace(/-v\d+@\d{8}$/,"").replace(/-v\d+$/,""),c=e.find(u=>u.name===a);return c||null}var Oi=(()=>{if(globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function")return globalThis.crypto;throw new Error("Web Crypto API with randomUUID support not available. Requires Node.js 16+ or modern browser.")})();function at(){return Oi.randomUUID()}async function Ym(o){let e=new TextEncoder,t=typeof o=="string"?e.encode(o):o,n=await Oi.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(n)).map(i=>i.toString(16).padStart(2,"0")).join("")}var ki=class{data="";update(e){return this.data+=e,this}digest(e){if(e!=="hex")throw new Error("Only hex encoding is supported");let n=new TextEncoder().encode(this.data),r=0;for(let s=0;s<n.length;s++){let i=n[s];r=(r<<5)-r+i,r=r&r}return Math.abs(r).toString(16).padStart(8,"0")}async digestAsync(){return Ym(this.data)}};function bt(o){if(o!=="sha256")throw new Error("Only SHA-256 algorithm is supported");return new ki}function eu(){return Oi}var Do=class extends TransformStream{buffer="";currentEvent={rawData:""};dataParser;onError;constructor(e={}){super({transform:(t,n)=>this.handleChunk(t,n),flush:t=>this.handleFlush(t)}),this.dataParser=e.dataParser||JSON.parse,this.onError=e.onError||((t,n)=>{console.warn("Failed to parse event data:",t),console.log("Raw data that failed to parse:",n)})}handleChunk(e,t){this.buffer+=e,this.processBuffer(t)}handleFlush(e){this.processBuffer(e),this.currentEvent.rawData&&this.processEvent(e)}processBuffer(e){let n=this.buffer.replace(/\r\n|\r/g,`
|
|
2
2
|
`).split(`
|
|
3
3
|
`);this.buffer=n.pop()||"";for(let r of n)r===""?this.processEvent(e):this.parseLine(r)}parseLine(e){if(e.startsWith(":"))return;let t=e.indexOf(":");if(t===-1){this.currentEvent.rawData+=(this.currentEvent.rawData&&!this.currentEvent.rawData.endsWith(`
|
|
4
4
|
`)?`
|
|
5
5
|
`:"")+e.trim();return}let n=e.slice(0,t).trim(),r=e.slice(t+1).trim();switch(n){case"event":this.currentEvent.event=r;break;case"data":this.currentEvent.rawData+=(this.currentEvent.rawData&&!this.currentEvent.rawData.endsWith(`
|
|
6
6
|
`)?`
|
|
7
|
-
`:"")+r;break;case"id":this.currentEvent.id=r;break;case"retry":{let s=Number.parseInt(r,10);Number.isNaN(s)||(this.currentEvent.retry=s);break}}}processEvent(e){if(this.currentEvent.rawData){if(this.currentEvent.event||(this.currentEvent.event="message"),this.currentEvent.rawData.trim()==="[DONE]"){this.currentEvent={rawData:""};return}try{let t=this.dataParser(this.currentEvent.rawData);e.enqueue(t)}catch(t){this.onError(t,this.currentEvent.rawData)}this.currentEvent={rawData:""}}}};var Ei=class{decoder;constructor(){this.decoder=new TextDecoder}transform(e,t){if(!(e instanceof ArrayBuffer||ArrayBuffer.isView(e)))throw new TypeError("Input data must be a BufferSource");let n=this.decoder.decode(e,{stream:!0});n.length!==0&&t.enqueue(n)}flush(e){let t=this.decoder.decode();t.length!==0&&e.enqueue(t)}},Uo=class extends TransformStream{constructor(){super(new Ei)}};var Xm={maxRetries:3,initialDelayMs:1e3,maxDelayMs:6e4,backoffFactor:2,retryableStatusCodes:[500,408,429,502,503,504]},Zm=globalThis.TextDecoderStream??Uo,
|
|
8
|
-
`)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}},
|
|
9
|
-
`)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}},Rt=class extends Error{constructor(t,n,r=!1){super(`${t} not supported by ${n}${r?" (fallback available)":""}`);this.mediaType=t;this.provider=n;this.fallbackAvailable=r;this.name="AxMediaNotSupportedError",this.timestamp=new Date().toISOString(),this.errorId=
|
|
10
|
-
`)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}},Mt=class extends Error{constructor(t,n,r){super(`Failed to process ${n} during ${r}: ${t.message}`);this.originalError=t;this.contentType=n;this.processingStep=r;this.name="AxContentProcessingError",this.timestamp=new Date().toISOString(),this.errorId=
|
|
11
|
-
`)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}};async function Mi(o){try{return o.headers.get("content-type")?.includes("application/json")?await o.json():await o.clone().text()}catch(e){return`[ReadableStream - read failed: ${e.message}]`}}function tu(o,e){return Math.min(e.maxDelayMs,e.initialDelayMs*e.backoffFactor**o)*(.75+Math.random()*.5)}function eg(o){if(!o)return;let e=Number(o);if(!Number.isNaN(e))return e*1e3;let t=Date.parse(o);if(!Number.isNaN(t)){let n=t-Date.now();return Math.max(0,n)}}function tg(){return{startTime:Date.now(),retryCount:0}}function nu(o){o.retryCount++,o.lastRetryTime=Date.now()}function ru(o,e,t,n){return t>=n.maxRetries?!1:e&&n.retryableStatusCodes.includes(e)?!0:o instanceof nt&&!(o instanceof Wt)}var
|
|
7
|
+
`:"")+r;break;case"id":this.currentEvent.id=r;break;case"retry":{let s=Number.parseInt(r,10);Number.isNaN(s)||(this.currentEvent.retry=s);break}}}processEvent(e){if(this.currentEvent.rawData){if(this.currentEvent.event||(this.currentEvent.event="message"),this.currentEvent.rawData.trim()==="[DONE]"){this.currentEvent={rawData:""};return}try{let t=this.dataParser(this.currentEvent.rawData);e.enqueue(t)}catch(t){this.onError(t,this.currentEvent.rawData)}this.currentEvent={rawData:""}}}};var Ei=class{decoder;constructor(){this.decoder=new TextDecoder}transform(e,t){if(!(e instanceof ArrayBuffer||ArrayBuffer.isView(e)))throw new TypeError("Input data must be a BufferSource");let n=this.decoder.decode(e,{stream:!0});n.length!==0&&t.enqueue(n)}flush(e){let t=this.decoder.decode();t.length!==0&&e.enqueue(t)}},Uo=class extends TransformStream{constructor(){super(new Ei)}};var Xm={maxRetries:3,initialDelayMs:1e3,maxDelayMs:6e4,backoffFactor:2,retryableStatusCodes:[500,408,429,502,503,504]},Zm=globalThis.TextDecoderStream??Uo,ct=class extends Error{constructor(t,n,r,s,i={},a=!0){super(t);this.url=n;this.requestBody=r;this.responseBody=s;this.name="AxAIServiceError",this.timestamp=new Date().toISOString(),this.errorId=at(),this.context=i,this.includeRequestBodyInErrors=a,this.stack=this.toString()}timestamp;errorId;context;includeRequestBodyInErrors;toString(){let t=[`${this.name}: ${this.message}`,`URL: ${this.url}`];return this.includeRequestBodyInErrors&&t.push(`Request Body: ${JSON.stringify(this.requestBody,null,2)}`),t.push(`Response Body: ${JSON.stringify(this.responseBody,null,2)}`,`Context: ${JSON.stringify(this.context,null,2)}`,`Timestamp: ${this.timestamp}`,`Error ID: ${this.errorId}`),t.join(`
|
|
8
|
+
`)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}},dt=class extends ct{constructor(t,n,r,s,i,a,c,u=!0){let l=c?` (after ${c} retries)`:"";super(`HTTP ${t} - ${n}${l}`,r,s,{httpStatus:t,httpStatusText:n,responseBody:i,...a},{},u);this.status=t;this.statusText=n;this.name="AxAIServiceStatusError"}},nt=class extends ct{constructor(t,n,r,s,i,a=!0){super(`Network Error: ${t.message}`,n,r,s,{originalErrorName:t.name,originalErrorStack:t.stack,...i},a);this.originalError=t;this.name="AxAIServiceNetworkError",this.stack=t.stack}},Ht=class extends ct{constructor(e,t,n,r,s=!0){super(e,t,n,void 0,r,s),this.name="AxAIServiceResponseError"}},It=class extends ct{constructor(t,n,r,s,i=!0){super("Stream terminated unexpectedly by remote host",t,n,void 0,{lastChunk:r,...s},i);this.lastChunk=r;this.name="AxAIServiceStreamTerminatedError"}},Ct=class extends ct{constructor(e,t,n,r,s=!0){super(`Request timed out after ${t}ms`,e,n,void 0,{timeoutMs:t,...r},s),this.name="AxAIServiceTimeoutError"}},Mr=class extends dt{constructor(e,t,n,r,s,i,a=!0){super(e,t,n,r,s,i,void 0,a),this.name="AxTokenLimitError"}},Ge=class extends ct{constructor(e,t,n,r,s=!0){super(`Request aborted${t?`: ${t}`:""}`,e,n,void 0,{abortReason:t,...r},s),this.name="AxAIServiceAbortedError"}},Wt=class extends ct{constructor(e,t,n,r,s=!0){super("Authentication failed",e,t,n,r,s),this.name="AxAIServiceAuthenticationError"}},We=class extends Error{constructor(t,n,r){super(`Model refused to fulfill request: ${t}`);this.refusalMessage=t;this.model=n;this.requestId=r;this.name="AxAIRefusalError",this.timestamp=new Date().toISOString(),this.errorId=at()}timestamp;errorId;toString(){return[`${this.name}: ${this.message}`,`Refusal: ${this.refusalMessage}`,this.model?`Model: ${this.model}`:"",this.requestId?`Request ID: ${this.requestId}`:"",`Timestamp: ${this.timestamp}`,`Error ID: ${this.errorId}`].filter(Boolean).join(`
|
|
9
|
+
`)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}},Rt=class extends Error{constructor(t,n,r=!1){super(`${t} not supported by ${n}${r?" (fallback available)":""}`);this.mediaType=t;this.provider=n;this.fallbackAvailable=r;this.name="AxMediaNotSupportedError",this.timestamp=new Date().toISOString(),this.errorId=at()}timestamp;errorId;toString(){return[`${this.name}: ${this.message}`,`Media Type: ${this.mediaType}`,`Provider: ${this.provider}`,`Fallback Available: ${this.fallbackAvailable}`,`Timestamp: ${this.timestamp}`,`Error ID: ${this.errorId}`].join(`
|
|
10
|
+
`)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}},Mt=class extends Error{constructor(t,n,r){super(`Failed to process ${n} during ${r}: ${t.message}`);this.originalError=t;this.contentType=n;this.processingStep=r;this.name="AxContentProcessingError",this.timestamp=new Date().toISOString(),this.errorId=at()}timestamp;errorId;toString(){return[`${this.name}: ${this.message}`,`Content Type: ${this.contentType}`,`Processing Step: ${this.processingStep}`,`Original Error: ${this.originalError.message}`,`Timestamp: ${this.timestamp}`,`Error ID: ${this.errorId}`].join(`
|
|
11
|
+
`)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}};async function Mi(o){try{return o.headers.get("content-type")?.includes("application/json")?await o.json():await o.clone().text()}catch(e){return`[ReadableStream - read failed: ${e.message}]`}}function tu(o,e){return Math.min(e.maxDelayMs,e.initialDelayMs*e.backoffFactor**o)*(.75+Math.random()*.5)}function eg(o){if(!o)return;let e=Number(o);if(!Number.isNaN(e))return e*1e3;let t=Date.parse(o);if(!Number.isNaN(t)){let n=t-Date.now();return Math.max(0,n)}}function tg(){return{startTime:Date.now(),retryCount:0}}function nu(o){o.retryCount++,o.lastRetryTime=Date.now()}function ru(o,e,t,n){return t>=n.maxRetries?!1:e&&n.retryableStatusCodes.includes(e)?!0:o instanceof nt&&!(o instanceof Wt)}var ut=async(o,e)=>{if(o.localCall)return await o.localCall(e,o.stream);if(!o.url)throw new Error("API URL is required when localCall is not provided");let t={...Xm,...o.retry},n=o.timeout,r=tg(),s=o.verbose??!1,i=o.includeRequestBodyInErrors??!0,a,c=new URL(o.url),u=`${[c.pathname,o.name].filter(Boolean).join("/").replace(/\/+/g,"/")}${c.search}`,l=new URL(u,c);if(o.corsProxy){let g=l.href;l=new URL(`${o.corsProxy}?url=${encodeURIComponent(g)}`)}let p=at();if(o.validateRequest&&!await o.validateRequest(e))throw new Ht("Invalid request data",l.href,e,{validation:"request"},i);o.span?.setAttributes({"http.request.method":o.put?"PUT":"POST","url.full":l.href,"request.id":p,"request.startTime":r.startTime});let d=0;for(;;){let g=new AbortController;if(o.abortSignal){if(o.abortSignal.aborted)throw new Ge(l.href,o.abortSignal.reason,e,{metrics:r},i);let m=()=>{g.abort(o.abortSignal.reason||"User aborted request")};o.abortSignal.addEventListener("abort",m,{once:!0});let f=g.abort.bind(g);g.abort=h=>{o.abortSignal.removeEventListener("abort",m),f(h)}}n&&(a=setTimeout(()=>{g.abort("Request timeout")},n));try{s&&console.log(`
|
|
12
12
|
--- [AxAI API Request] ---
|
|
13
13
|
`,`URL: ${l.href}
|
|
14
14
|
`,`Method: ${o.put?"PUT":"POST"}
|
|
15
15
|
`,"Headers:",JSON.stringify({"Content-Type":"application/json","X-Request-ID":p,"X-Retry-Count":d.toString(),...o.headers},null,2),`
|
|
16
16
|
Body:`,JSON.stringify(e,null,2),`
|
|
17
17
|
------------------------
|
|
18
|
-
`);let m=await(o.fetch??fetch)(l,{method:o.put?"PUT":"POST",headers:{"Content-Type":"application/json","X-Request-ID":p,"X-Retry-Count":d.toString(),...o.headers},body:JSON.stringify(e),signal:g.signal});if(a&&clearTimeout(a),m.status===401||m.status===403){let C=await Mi(m);throw new Wt(l.href,e,C,{metrics:r},i)}if(m.status===400){let C=await Mi(m),R=C,I=!1;if(R?.error?.code==="context_length_exceeded")I=!0;else if(R?.type==="invalid_request_error"&&(R?.error?.message?.includes("prompt is too long")||R?.error?.message?.includes("max_tokens")||R?.error?.message?.includes("token limit")))I=!0;else if(R?.error?.code===400&&R?.error?.status==="INVALID_ARGUMENT"&&(R?.error?.message?.includes("token")||R?.error?.message?.includes("limit")))I=!0;else{let M=JSON.stringify(C).toLowerCase();(M.includes("token")&&M.includes("limit")||M.includes("context length")||M.includes("prompt is too long"))&&(I=!0)}if(I)throw new Mr(m.status,m.statusText,l.href,e,C,{metrics:r},i)}if(m.status>=400&&ru(new Error,m.status,d,t)){let C=tu(d,t),R=eg(m.headers.get("Retry-After"));R!==void 0&&R<=t.maxDelayMs&&(C=R,s&&console.log(`[AxAI] Respecting Retry-After header: ${C}ms`)),d++,nu(r),o.span?.addEvent("retry",{attempt:d,delay:C,status:m.status,"metrics.startTime":r.startTime,"metrics.retryCount":r.retryCount,"metrics.lastRetryTime":r.lastRetryTime}),await new Promise(I=>setTimeout(I,C));continue}if(m.status>=400){let C=await Mi(m);throw new
|
|
18
|
+
`);let m=await(o.fetch??fetch)(l,{method:o.put?"PUT":"POST",headers:{"Content-Type":"application/json","X-Request-ID":p,"X-Retry-Count":d.toString(),...o.headers},body:JSON.stringify(e),signal:g.signal});if(a&&clearTimeout(a),m.status===401||m.status===403){let C=await Mi(m);throw new Wt(l.href,e,C,{metrics:r},i)}if(m.status===400){let C=await Mi(m),R=C,I=!1;if(R?.error?.code==="context_length_exceeded")I=!0;else if(R?.type==="invalid_request_error"&&(R?.error?.message?.includes("prompt is too long")||R?.error?.message?.includes("max_tokens")||R?.error?.message?.includes("token limit")))I=!0;else if(R?.error?.code===400&&R?.error?.status==="INVALID_ARGUMENT"&&(R?.error?.message?.includes("token")||R?.error?.message?.includes("limit")))I=!0;else{let M=JSON.stringify(C).toLowerCase();(M.includes("token")&&M.includes("limit")||M.includes("context length")||M.includes("prompt is too long"))&&(I=!0)}if(I)throw new Mr(m.status,m.statusText,l.href,e,C,{metrics:r},i)}if(m.status>=400&&ru(new Error,m.status,d,t)){let C=tu(d,t),R=eg(m.headers.get("Retry-After"));R!==void 0&&R<=t.maxDelayMs&&(C=R,s&&console.log(`[AxAI] Respecting Retry-After header: ${C}ms`)),d++,nu(r),o.span?.addEvent("retry",{attempt:d,delay:C,status:m.status,"metrics.startTime":r.startTime,"metrics.retryCount":r.retryCount,"metrics.lastRetryTime":r.lastRetryTime}),await new Promise(I=>setTimeout(I,C));continue}if(m.status>=400){let C=await Mi(m);throw new dt(m.status,m.statusText,l.href,e,C,{metrics:r},d>0?d:void 0,i)}if(!o.stream){let C=await m.json();if(s&&console.log(`
|
|
19
19
|
--- [AxAI API Response] ---
|
|
20
20
|
`,`Status: ${m.status} ${m.statusText}
|
|
21
21
|
`,"Body:",JSON.stringify(C,null,2),`
|
|
@@ -28,7 +28,7 @@ Body:`,JSON.stringify(e,null,2),`
|
|
|
28
28
|
`),!m.body)throw new Ht("Response body is null",l.href,e,{metrics:r},i);let f,h=0;if(typeof window<"u"&&typeof EventSource<"u")return new ReadableStream({start(C){let R=m.body.getReader(),I=new TextDecoder,M="";async function F(){try{for(;;){let{done:P,value:N}=await R.read();if(P){y=!0,C.close();break}M+=I.decode(N,{stream:!0});let T=M.split(`
|
|
29
29
|
|
|
30
30
|
`);M=T.pop()||"";for(let E of T){if(!E.trim())continue;let O=E.split(`
|
|
31
|
-
`),S="",k="message";for(let _ of O)_.startsWith("data: ")?S=_.slice(6):_.startsWith("event: ")&&(k=_.slice(7));if(S){if(S==="[DONE]"){C.close();return}try{let _=JSON.parse(S);f=_,h++,r.streamChunks=h,r.lastChunkTime=Date.now(),C.enqueue(_),o.span?.addEvent("stream.chunk",{"stream.chunks":h,"stream.duration":Date.now()-r.startTime,"response.retries":r.retryCount,"sse.event.type":k})}catch(_){s&&console.warn("Skipping non-JSON SSE data:",S,_)}}}}}catch(P){let N=P,T={...r,streamDuration:Date.now()-r.startTime};N.name==="AbortError"||N.message?.includes("aborted")?C.error(new It(l.href,e,f,{streamMetrics:T},i)):C.error(new nt(N,l.href,e,"[ReadableStream - consumed during streaming]",{streamMetrics:T},i))}finally{R.releaseLock()}}F()}});let A=new TransformStream({transform(C,R){f=C,h++,r.streamChunks=h,r.lastChunkTime=Date.now(),R.enqueue(C),o.span?.addEvent("stream.chunk",{"stream.chunks":h,"stream.duration":Date.now()-r.startTime,"response.retries":r.retryCount})}}),y=!1;return new ReadableStream({start(C){let R=m.body.pipeThrough(new Zm).pipeThrough(new Do).pipeThrough(A).getReader();async function I(){try{for(;;){let{done:M,value:F}=await R.read();if(M){y||(y=!0,C.close());break}if(y)break;C.enqueue(F)}}catch(M){let F=M,P={...r,streamDuration:Date.now()-r.startTime};throw F.name==="AbortError"||F.message?.includes("aborted")?C.error(new It(l.href,e,f,{streamMetrics:P},i)):F instanceof TypeError&&F.message.includes("cancelled")?C.error(new It(l.href,e,f,{streamMetrics:P,cancelReason:"Stream cancelled by client"},i)):C.error(new nt(F,l.href,e,"[ReadableStream - consumed during streaming]",{streamMetrics:P},i)),F}finally{a&&clearTimeout(a),R.releaseLock()}}I()},cancel(){y=!0}})}catch(m){if(m instanceof Error&&m.name==="AbortError")throw o.abortSignal?.aborted?new Ge(l.href,o.abortSignal.reason,e,{metrics:r},i):new bt(l.href,n||0,e,{metrics:r},i);let f=m;if(!(m instanceof at)&&m instanceof Error&&(f=new nt(m,l.href,e,void 0,{metrics:r},i)),o.span?.isRecording()&&(o.span.recordException(f),o.span.setAttributes({"error.time":Date.now()-r.startTime,"error.retries":r.retryCount})),f instanceof nt&&ru(f,void 0,d,t)){let h=tu(d,t);d++,nu(r),o.span?.addEvent("retry",{attempt:d,delay:h,error:f.message,"metrics.startTime":r.startTime,"metrics.retryCount":r.retryCount,"metrics.lastRetryTime":r.lastRetryTime}),await new Promise(x=>setTimeout(x,h));continue}throw f instanceof at&&(f.context.metrics=r),f}finally{a!==void 0&&clearTimeout(a)}}};var ou=typeof globalThis=="object"?globalThis:global;var Vt="1.9.0";var su=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function ng(o){var e=new Set([o]),t=new Set,n=o.match(su);if(!n)return function(){return!1};var r={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(r.prerelease!=null)return function(c){return c===o};function s(a){return t.add(a),!1}function i(a){return e.add(a),!0}return function(c){if(e.has(c))return!0;if(t.has(c))return!1;var u=c.match(su);if(!u)return s(c);var l={major:+u[1],minor:+u[2],patch:+u[3],prerelease:u[4]};return l.prerelease!=null||r.major!==l.major?s(c):r.major===0?r.minor===l.minor&&r.patch<=l.patch?i(c):s(c):r.minor<=l.minor?i(c):s(c)}}var iu=ng(Vt);var rg=Vt.split(".")[0],Pr=Symbol.for("opentelemetry.js.api."+rg),Fr=ou;function wn(o,e,t,n){var r;n===void 0&&(n=!1);var s=Fr[Pr]=(r=Fr[Pr])!==null&&r!==void 0?r:{version:Vt};if(!n&&s[o]){var i=new Error("@opentelemetry/api: Attempted duplicate registration of API: "+o);return t.error(i.stack||i.message),!1}if(s.version!==Vt){var i=new Error("@opentelemetry/api: Registration of version v"+s.version+" for "+o+" does not match previously registered API v"+Vt);return t.error(i.stack||i.message),!1}return s[o]=e,t.debug("@opentelemetry/api: Registered a global for "+o+" v"+Vt+"."),!0}function Kt(o){var e,t,n=(e=Fr[Pr])===null||e===void 0?void 0:e.version;if(!(!n||!iu(n)))return(t=Fr[Pr])===null||t===void 0?void 0:t[o]}function vn(o,e){e.debug("@opentelemetry/api: Unregistering a global for "+o+" v"+Vt+".");var t=Fr[Pr];t&&delete t[o]}var og=function(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var n=t.call(o),r,s=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(a){i={error:a}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(i)throw i.error}}return s},sg=function(o,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,s;n<r;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return o.concat(s||Array.prototype.slice.call(e))},au=function(){function o(e){this._namespace=e.namespace||"DiagComponentLogger"}return o.prototype.debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return _r("debug",this._namespace,e)},o.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return _r("error",this._namespace,e)},o.prototype.info=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return _r("info",this._namespace,e)},o.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return _r("warn",this._namespace,e)},o.prototype.verbose=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return _r("verbose",this._namespace,e)},o}();function _r(o,e,t){var n=Kt("diag");if(n)return t.unshift(e),n[o].apply(n,sg([],og(t),!1))}var dt;(function(o){o[o.NONE=0]="NONE",o[o.ERROR=30]="ERROR",o[o.WARN=50]="WARN",o[o.INFO=60]="INFO",o[o.DEBUG=70]="DEBUG",o[o.VERBOSE=80]="VERBOSE",o[o.ALL=9999]="ALL"})(dt||(dt={}));function cu(o,e){o<dt.NONE?o=dt.NONE:o>dt.ALL&&(o=dt.ALL),e=e||{};function t(n,r){var s=e[n];return typeof s=="function"&&o>=r?s.bind(e):function(){}}return{error:t("error",dt.ERROR),warn:t("warn",dt.WARN),info:t("info",dt.INFO),debug:t("debug",dt.DEBUG),verbose:t("verbose",dt.VERBOSE)}}var ig=function(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var n=t.call(o),r,s=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(a){i={error:a}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(i)throw i.error}}return s},ag=function(o,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,s;n<r;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return o.concat(s||Array.prototype.slice.call(e))},cg="diag",Sn=function(){function o(){function e(r){return function(){for(var s=[],i=0;i<arguments.length;i++)s[i]=arguments[i];var a=Kt("diag");if(a)return a[r].apply(a,ag([],ig(s),!1))}}var t=this,n=function(r,s){var i,a,c;if(s===void 0&&(s={logLevel:dt.INFO}),r===t){var u=new Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return t.error((i=u.stack)!==null&&i!==void 0?i:u.message),!1}typeof s=="number"&&(s={logLevel:s});var l=Kt("diag"),p=cu((a=s.logLevel)!==null&&a!==void 0?a:dt.INFO,r);if(l&&!s.suppressOverrideMessage){var d=(c=new Error().stack)!==null&&c!==void 0?c:"<failed to generate stacktrace>";l.warn("Current logger will be overwritten from "+d),p.warn("Current logger will overwrite one already registered from "+d)}return wn("diag",p,t,!0)};t.setLogger=n,t.disable=function(){vn(cg,t)},t.createComponentLogger=function(r){return new au(r)},t.verbose=e("verbose"),t.debug=e("debug"),t.info=e("info"),t.warn=e("warn"),t.error=e("error")}return o.instance=function(){return this._instance||(this._instance=new o),this._instance},o}();function uu(o){return Symbol.for(o)}var ug=function(){function o(e){var t=this;t._currentContext=e?new Map(e):new Map,t.getValue=function(n){return t._currentContext.get(n)},t.setValue=function(n,r){var s=new o(t._currentContext);return s._currentContext.set(n,r),s},t.deleteValue=function(n){var r=new o(t._currentContext);return r._currentContext.delete(n),r}}return o}(),lu=new ug;var lg=function(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var n=t.call(o),r,s=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(a){i={error:a}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(i)throw i.error}}return s},pg=function(o,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,s;n<r;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return o.concat(s||Array.prototype.slice.call(e))},pu=function(){function o(){}return o.prototype.active=function(){return lu},o.prototype.with=function(e,t,n){for(var r=[],s=3;s<arguments.length;s++)r[s-3]=arguments[s];return t.call.apply(t,pg([n],lg(r),!1))},o.prototype.bind=function(e,t){return t},o.prototype.enable=function(){return this},o.prototype.disable=function(){return this},o}();var dg=function(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var n=t.call(o),r,s=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(a){i={error:a}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(i)throw i.error}}return s},mg=function(o,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,s;n<r;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return o.concat(s||Array.prototype.slice.call(e))},Pi="context",gg=new pu,kn=function(){function o(){}return o.getInstance=function(){return this._instance||(this._instance=new o),this._instance},o.prototype.setGlobalContextManager=function(e){return wn(Pi,e,Sn.instance())},o.prototype.active=function(){return this._getContextManager().active()},o.prototype.with=function(e,t,n){for(var r,s=[],i=3;i<arguments.length;i++)s[i-3]=arguments[i];return(r=this._getContextManager()).with.apply(r,mg([e,t,n],dg(s),!1))},o.prototype.bind=function(e,t){return this._getContextManager().bind(e,t)},o.prototype._getContextManager=function(){return Kt(Pi)||gg},o.prototype.disable=function(){this._getContextManager().disable(),vn(Pi,Sn.instance())},o}();var Go;(function(o){o[o.NONE=0]="NONE",o[o.SAMPLED=1]="SAMPLED"})(Go||(Go={}));var Fi="0000000000000000",_i="00000000000000000000000000000000",du={traceId:_i,spanId:Fi,traceFlags:Go.NONE};var en=function(){function o(e){e===void 0&&(e=du),this._spanContext=e}return o.prototype.spanContext=function(){return this._spanContext},o.prototype.setAttribute=function(e,t){return this},o.prototype.setAttributes=function(e){return this},o.prototype.addEvent=function(e,t){return this},o.prototype.addLink=function(e){return this},o.prototype.addLinks=function(e){return this},o.prototype.setStatus=function(e){return this},o.prototype.updateName=function(e){return this},o.prototype.end=function(e){},o.prototype.isRecording=function(){return!1},o.prototype.recordException=function(e,t){},o}();var Ni=uu("OpenTelemetry Context Key SPAN");function Bo(o){return o.getValue(Ni)||void 0}function mu(){return Bo(kn.getInstance().active())}function Nr(o,e){return o.setValue(Ni,e)}function gu(o){return o.deleteValue(Ni)}function fu(o,e){return Nr(o,new en(e))}function jo(o){var e;return(e=Bo(o))===null||e===void 0?void 0:e.spanContext()}var fg=/^([0-9a-f]{32})$/i,hg=/^[0-9a-f]{16}$/i;function xg(o){return fg.test(o)&&o!==_i}function Ag(o){return hg.test(o)&&o!==Fi}function zo(o){return xg(o.traceId)&&Ag(o.spanId)}function hu(o){return new en(o)}var Li=kn.getInstance(),qo=function(){function o(){}return o.prototype.startSpan=function(e,t,n){n===void 0&&(n=Li.active());var r=!!t?.root;if(r)return new en;var s=n&&jo(n);return yg(s)&&zo(s)?new en(s):new en},o.prototype.startActiveSpan=function(e,t,n,r){var s,i,a;if(!(arguments.length<2)){arguments.length===2?a=t:arguments.length===3?(s=t,a=n):(s=t,i=n,a=r);var c=i??Li.active(),u=this.startSpan(e,s,c),l=Nr(c,u);return Li.with(l,a,void 0,u)}},o}();function yg(o){return typeof o=="object"&&typeof o.spanId=="string"&&typeof o.traceId=="string"&&typeof o.traceFlags=="number"}var bg=new qo,xu=function(){function o(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}return o.prototype.startSpan=function(e,t,n){return this._getTracer().startSpan(e,t,n)},o.prototype.startActiveSpan=function(e,t,n,r){var s=this._getTracer();return Reflect.apply(s.startActiveSpan,s,arguments)},o.prototype._getTracer=function(){if(this._delegate)return this._delegate;var e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):bg},o}();var Au=function(){function o(){}return o.prototype.getTracer=function(e,t,n){return new qo},o}();var Cg=new Au,$i=function(){function o(){}return o.prototype.getTracer=function(e,t,n){var r;return(r=this.getDelegateTracer(e,t,n))!==null&&r!==void 0?r:new xu(this,e,t,n)},o.prototype.getDelegate=function(){var e;return(e=this._delegate)!==null&&e!==void 0?e:Cg},o.prototype.setDelegate=function(e){this._delegate=e},o.prototype.getDelegateTracer=function(e,t,n){var r;return(r=this._delegate)===null||r===void 0?void 0:r.getTracer(e,t,n)},o}();var ht;(function(o){o[o.INTERNAL=0]="INTERNAL",o[o.SERVER=1]="SERVER",o[o.CLIENT=2]="CLIENT",o[o.PRODUCER=3]="PRODUCER",o[o.CONSUMER=4]="CONSUMER"})(ht||(ht={}));var tn=kn.getInstance();var Di="trace",yu=function(){function o(){this._proxyTracerProvider=new $i,this.wrapSpanContext=hu,this.isSpanContextValid=zo,this.deleteSpan=gu,this.getSpan=Bo,this.getActiveSpan=mu,this.getSpanContext=jo,this.setSpan=Nr,this.setSpanContext=fu}return o.getInstance=function(){return this._instance||(this._instance=new o),this._instance},o.prototype.setGlobalTracerProvider=function(e){var t=wn(Di,this._proxyTracerProvider,Sn.instance());return t&&this._proxyTracerProvider.setDelegate(e),t},o.prototype.getTracerProvider=function(){return Kt(Di)||this._proxyTracerProvider},o.prototype.getTracer=function(e,t){return this.getTracerProvider().getTracer(e,t)},o.prototype.disable=function(){vn(Di,Sn.instance()),this._proxyTracerProvider=new $i},o}();var Lr=yu.getInstance();var ke={signatureStrict:!0,tracer:void 0,meter:void 0,logger:void 0,optimizerLogger:void 0,debug:void 0,abortSignal:void 0,customLabels:void 0,cachingFunction:void 0,functionResultFormatter:o=>typeof o=="string"?o:o==null?"":JSON.stringify(o,null,2)};var mt=class{ANSI_WHITE_BRIGHT="\x1B[97m";ANSI_GREEN_BRIGHT="\x1B[92m";ANSI_BLUE_BRIGHT="\x1B[94m";ANSI_RED_BRIGHT="\x1B[91m";ANSI_YELLOW_BRIGHT="\x1B[93m";ANSI_YELLOW="\x1B[93m";ANSI_RED="\x1B[91m";ANSI_RESET="\x1B[0m";ANSI_ORANGE="\x1B[38;5;208m";ANSI_WHITE="\x1B[37m";ANSI_CYAN_BRIGHT="\x1B[96m";ANSI_MAGENTA_BRIGHT="\x1B[95m";ANSI_GRAY="\x1B[90m";ANSI_GREEN="\x1B[32m";ANSI_CYAN="\x1B[36m";ANSI_MAGENTA="\x1B[35m";ANSI_BLUE="\x1B[34m";ANSI_YELLOW_DIM="\x1B[33m";colorize(e,t){return`${t}${e}${this.ANSI_RESET}`}whiteBright(e){return this.colorize(e,this.ANSI_WHITE_BRIGHT)}greenBright(e){return this.colorize(e,this.ANSI_GREEN_BRIGHT)}blueBright(e){return this.colorize(e,this.ANSI_BLUE_BRIGHT)}redBright(e){return this.colorize(e,this.ANSI_RED_BRIGHT)}white(e){return this.colorize(e,this.ANSI_WHITE)}yellow(e){return this.colorize(e,this.ANSI_YELLOW)}yellowBright(e){return this.colorize(e,this.ANSI_YELLOW_BRIGHT)}red(e){return this.colorize(e,this.ANSI_RED)}orange(e){return this.colorize(e,this.ANSI_ORANGE)}cyanBright(e){return this.colorize(e,this.ANSI_CYAN_BRIGHT)}magentaBright(e){return this.colorize(e,this.ANSI_MAGENTA_BRIGHT)}gray(e){return this.colorize(e,this.ANSI_GRAY)}green(e){return this.colorize(e,this.ANSI_GREEN)}cyan(e){return this.colorize(e,this.ANSI_CYAN)}magenta(e){return this.colorize(e,this.ANSI_MAGENTA)}blue(e){return this.colorize(e,this.ANSI_BLUE)}yellowDim(e){return this.colorize(e,this.ANSI_YELLOW_DIM)}};var dy=new mt,bu=o=>{console.log(o)},Cu=(o,e,t)=>{let n=(r,s)=>t&&s&&s in t?t[s](r):r;switch(o.role){case"system":return`${n("[ SYSTEM ]","magentaBright")}
|
|
31
|
+
`),S="",k="message";for(let _ of O)_.startsWith("data: ")?S=_.slice(6):_.startsWith("event: ")&&(k=_.slice(7));if(S){if(S==="[DONE]"){C.close();return}try{let _=JSON.parse(S);f=_,h++,r.streamChunks=h,r.lastChunkTime=Date.now(),C.enqueue(_),o.span?.addEvent("stream.chunk",{"stream.chunks":h,"stream.duration":Date.now()-r.startTime,"response.retries":r.retryCount,"sse.event.type":k})}catch(_){s&&console.warn("Skipping non-JSON SSE data:",S,_)}}}}}catch(P){let N=P,T={...r,streamDuration:Date.now()-r.startTime};N.name==="AbortError"||N.message?.includes("aborted")?C.error(new It(l.href,e,f,{streamMetrics:T},i)):C.error(new nt(N,l.href,e,"[ReadableStream - consumed during streaming]",{streamMetrics:T},i))}finally{R.releaseLock()}}F()}});let A=new TransformStream({transform(C,R){f=C,h++,r.streamChunks=h,r.lastChunkTime=Date.now(),R.enqueue(C),o.span?.addEvent("stream.chunk",{"stream.chunks":h,"stream.duration":Date.now()-r.startTime,"response.retries":r.retryCount})}}),y=!1;return new ReadableStream({start(C){let R=m.body.pipeThrough(new Zm).pipeThrough(new Do).pipeThrough(A).getReader();async function I(){try{for(;;){let{done:M,value:F}=await R.read();if(M){y||(y=!0,C.close());break}if(y)break;C.enqueue(F)}}catch(M){let F=M,P={...r,streamDuration:Date.now()-r.startTime};throw F.name==="AbortError"||F.message?.includes("aborted")?C.error(new It(l.href,e,f,{streamMetrics:P},i)):F instanceof TypeError&&F.message.includes("cancelled")?C.error(new It(l.href,e,f,{streamMetrics:P,cancelReason:"Stream cancelled by client"},i)):C.error(new nt(F,l.href,e,"[ReadableStream - consumed during streaming]",{streamMetrics:P},i)),F}finally{a&&clearTimeout(a),R.releaseLock()}}I()},cancel(){y=!0}})}catch(m){if(m instanceof Error&&m.name==="AbortError")throw o.abortSignal?.aborted?new Ge(l.href,o.abortSignal.reason,e,{metrics:r},i):new Ct(l.href,n||0,e,{metrics:r},i);let f=m;if(!(m instanceof ct)&&m instanceof Error&&(f=new nt(m,l.href,e,void 0,{metrics:r},i)),o.span?.isRecording()&&(o.span.recordException(f),o.span.setAttributes({"error.time":Date.now()-r.startTime,"error.retries":r.retryCount})),f instanceof nt&&ru(f,void 0,d,t)){let h=tu(d,t);d++,nu(r),o.span?.addEvent("retry",{attempt:d,delay:h,error:f.message,"metrics.startTime":r.startTime,"metrics.retryCount":r.retryCount,"metrics.lastRetryTime":r.lastRetryTime}),await new Promise(x=>setTimeout(x,h));continue}throw f instanceof ct&&(f.context.metrics=r),f}finally{a!==void 0&&clearTimeout(a)}}};var ou=typeof globalThis=="object"?globalThis:global;var Vt="1.9.0";var su=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function ng(o){var e=new Set([o]),t=new Set,n=o.match(su);if(!n)return function(){return!1};var r={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(r.prerelease!=null)return function(c){return c===o};function s(a){return t.add(a),!1}function i(a){return e.add(a),!0}return function(c){if(e.has(c))return!0;if(t.has(c))return!1;var u=c.match(su);if(!u)return s(c);var l={major:+u[1],minor:+u[2],patch:+u[3],prerelease:u[4]};return l.prerelease!=null||r.major!==l.major?s(c):r.major===0?r.minor===l.minor&&r.patch<=l.patch?i(c):s(c):r.minor<=l.minor?i(c):s(c)}}var iu=ng(Vt);var rg=Vt.split(".")[0],Pr=Symbol.for("opentelemetry.js.api."+rg),Fr=ou;function wn(o,e,t,n){var r;n===void 0&&(n=!1);var s=Fr[Pr]=(r=Fr[Pr])!==null&&r!==void 0?r:{version:Vt};if(!n&&s[o]){var i=new Error("@opentelemetry/api: Attempted duplicate registration of API: "+o);return t.error(i.stack||i.message),!1}if(s.version!==Vt){var i=new Error("@opentelemetry/api: Registration of version v"+s.version+" for "+o+" does not match previously registered API v"+Vt);return t.error(i.stack||i.message),!1}return s[o]=e,t.debug("@opentelemetry/api: Registered a global for "+o+" v"+Vt+"."),!0}function Kt(o){var e,t,n=(e=Fr[Pr])===null||e===void 0?void 0:e.version;if(!(!n||!iu(n)))return(t=Fr[Pr])===null||t===void 0?void 0:t[o]}function vn(o,e){e.debug("@opentelemetry/api: Unregistering a global for "+o+" v"+Vt+".");var t=Fr[Pr];t&&delete t[o]}var og=function(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var n=t.call(o),r,s=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(a){i={error:a}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(i)throw i.error}}return s},sg=function(o,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,s;n<r;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return o.concat(s||Array.prototype.slice.call(e))},au=function(){function o(e){this._namespace=e.namespace||"DiagComponentLogger"}return o.prototype.debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return _r("debug",this._namespace,e)},o.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return _r("error",this._namespace,e)},o.prototype.info=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return _r("info",this._namespace,e)},o.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return _r("warn",this._namespace,e)},o.prototype.verbose=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return _r("verbose",this._namespace,e)},o}();function _r(o,e,t){var n=Kt("diag");if(n)return t.unshift(e),n[o].apply(n,sg([],og(t),!1))}var mt;(function(o){o[o.NONE=0]="NONE",o[o.ERROR=30]="ERROR",o[o.WARN=50]="WARN",o[o.INFO=60]="INFO",o[o.DEBUG=70]="DEBUG",o[o.VERBOSE=80]="VERBOSE",o[o.ALL=9999]="ALL"})(mt||(mt={}));function cu(o,e){o<mt.NONE?o=mt.NONE:o>mt.ALL&&(o=mt.ALL),e=e||{};function t(n,r){var s=e[n];return typeof s=="function"&&o>=r?s.bind(e):function(){}}return{error:t("error",mt.ERROR),warn:t("warn",mt.WARN),info:t("info",mt.INFO),debug:t("debug",mt.DEBUG),verbose:t("verbose",mt.VERBOSE)}}var ig=function(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var n=t.call(o),r,s=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(a){i={error:a}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(i)throw i.error}}return s},ag=function(o,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,s;n<r;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return o.concat(s||Array.prototype.slice.call(e))},cg="diag",Sn=function(){function o(){function e(r){return function(){for(var s=[],i=0;i<arguments.length;i++)s[i]=arguments[i];var a=Kt("diag");if(a)return a[r].apply(a,ag([],ig(s),!1))}}var t=this,n=function(r,s){var i,a,c;if(s===void 0&&(s={logLevel:mt.INFO}),r===t){var u=new Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return t.error((i=u.stack)!==null&&i!==void 0?i:u.message),!1}typeof s=="number"&&(s={logLevel:s});var l=Kt("diag"),p=cu((a=s.logLevel)!==null&&a!==void 0?a:mt.INFO,r);if(l&&!s.suppressOverrideMessage){var d=(c=new Error().stack)!==null&&c!==void 0?c:"<failed to generate stacktrace>";l.warn("Current logger will be overwritten from "+d),p.warn("Current logger will overwrite one already registered from "+d)}return wn("diag",p,t,!0)};t.setLogger=n,t.disable=function(){vn(cg,t)},t.createComponentLogger=function(r){return new au(r)},t.verbose=e("verbose"),t.debug=e("debug"),t.info=e("info"),t.warn=e("warn"),t.error=e("error")}return o.instance=function(){return this._instance||(this._instance=new o),this._instance},o}();function uu(o){return Symbol.for(o)}var ug=function(){function o(e){var t=this;t._currentContext=e?new Map(e):new Map,t.getValue=function(n){return t._currentContext.get(n)},t.setValue=function(n,r){var s=new o(t._currentContext);return s._currentContext.set(n,r),s},t.deleteValue=function(n){var r=new o(t._currentContext);return r._currentContext.delete(n),r}}return o}(),lu=new ug;var lg=function(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var n=t.call(o),r,s=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(a){i={error:a}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(i)throw i.error}}return s},pg=function(o,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,s;n<r;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return o.concat(s||Array.prototype.slice.call(e))},pu=function(){function o(){}return o.prototype.active=function(){return lu},o.prototype.with=function(e,t,n){for(var r=[],s=3;s<arguments.length;s++)r[s-3]=arguments[s];return t.call.apply(t,pg([n],lg(r),!1))},o.prototype.bind=function(e,t){return t},o.prototype.enable=function(){return this},o.prototype.disable=function(){return this},o}();var dg=function(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var n=t.call(o),r,s=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(a){i={error:a}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(i)throw i.error}}return s},mg=function(o,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,s;n<r;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return o.concat(s||Array.prototype.slice.call(e))},Pi="context",gg=new pu,kn=function(){function o(){}return o.getInstance=function(){return this._instance||(this._instance=new o),this._instance},o.prototype.setGlobalContextManager=function(e){return wn(Pi,e,Sn.instance())},o.prototype.active=function(){return this._getContextManager().active()},o.prototype.with=function(e,t,n){for(var r,s=[],i=3;i<arguments.length;i++)s[i-3]=arguments[i];return(r=this._getContextManager()).with.apply(r,mg([e,t,n],dg(s),!1))},o.prototype.bind=function(e,t){return this._getContextManager().bind(e,t)},o.prototype._getContextManager=function(){return Kt(Pi)||gg},o.prototype.disable=function(){this._getContextManager().disable(),vn(Pi,Sn.instance())},o}();var Go;(function(o){o[o.NONE=0]="NONE",o[o.SAMPLED=1]="SAMPLED"})(Go||(Go={}));var Fi="0000000000000000",_i="00000000000000000000000000000000",du={traceId:_i,spanId:Fi,traceFlags:Go.NONE};var en=function(){function o(e){e===void 0&&(e=du),this._spanContext=e}return o.prototype.spanContext=function(){return this._spanContext},o.prototype.setAttribute=function(e,t){return this},o.prototype.setAttributes=function(e){return this},o.prototype.addEvent=function(e,t){return this},o.prototype.addLink=function(e){return this},o.prototype.addLinks=function(e){return this},o.prototype.setStatus=function(e){return this},o.prototype.updateName=function(e){return this},o.prototype.end=function(e){},o.prototype.isRecording=function(){return!1},o.prototype.recordException=function(e,t){},o}();var Ni=uu("OpenTelemetry Context Key SPAN");function Bo(o){return o.getValue(Ni)||void 0}function mu(){return Bo(kn.getInstance().active())}function Nr(o,e){return o.setValue(Ni,e)}function gu(o){return o.deleteValue(Ni)}function fu(o,e){return Nr(o,new en(e))}function jo(o){var e;return(e=Bo(o))===null||e===void 0?void 0:e.spanContext()}var fg=/^([0-9a-f]{32})$/i,hg=/^[0-9a-f]{16}$/i;function xg(o){return fg.test(o)&&o!==_i}function Ag(o){return hg.test(o)&&o!==Fi}function zo(o){return xg(o.traceId)&&Ag(o.spanId)}function hu(o){return new en(o)}var Li=kn.getInstance(),qo=function(){function o(){}return o.prototype.startSpan=function(e,t,n){n===void 0&&(n=Li.active());var r=!!t?.root;if(r)return new en;var s=n&&jo(n);return yg(s)&&zo(s)?new en(s):new en},o.prototype.startActiveSpan=function(e,t,n,r){var s,i,a;if(!(arguments.length<2)){arguments.length===2?a=t:arguments.length===3?(s=t,a=n):(s=t,i=n,a=r);var c=i??Li.active(),u=this.startSpan(e,s,c),l=Nr(c,u);return Li.with(l,a,void 0,u)}},o}();function yg(o){return typeof o=="object"&&typeof o.spanId=="string"&&typeof o.traceId=="string"&&typeof o.traceFlags=="number"}var bg=new qo,xu=function(){function o(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}return o.prototype.startSpan=function(e,t,n){return this._getTracer().startSpan(e,t,n)},o.prototype.startActiveSpan=function(e,t,n,r){var s=this._getTracer();return Reflect.apply(s.startActiveSpan,s,arguments)},o.prototype._getTracer=function(){if(this._delegate)return this._delegate;var e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):bg},o}();var Au=function(){function o(){}return o.prototype.getTracer=function(e,t,n){return new qo},o}();var Cg=new Au,$i=function(){function o(){}return o.prototype.getTracer=function(e,t,n){var r;return(r=this.getDelegateTracer(e,t,n))!==null&&r!==void 0?r:new xu(this,e,t,n)},o.prototype.getDelegate=function(){var e;return(e=this._delegate)!==null&&e!==void 0?e:Cg},o.prototype.setDelegate=function(e){this._delegate=e},o.prototype.getDelegateTracer=function(e,t,n){var r;return(r=this._delegate)===null||r===void 0?void 0:r.getTracer(e,t,n)},o}();var xt;(function(o){o[o.INTERNAL=0]="INTERNAL",o[o.SERVER=1]="SERVER",o[o.CLIENT=2]="CLIENT",o[o.PRODUCER=3]="PRODUCER",o[o.CONSUMER=4]="CONSUMER"})(xt||(xt={}));var tn=kn.getInstance();var Di="trace",yu=function(){function o(){this._proxyTracerProvider=new $i,this.wrapSpanContext=hu,this.isSpanContextValid=zo,this.deleteSpan=gu,this.getSpan=Bo,this.getActiveSpan=mu,this.getSpanContext=jo,this.setSpan=Nr,this.setSpanContext=fu}return o.getInstance=function(){return this._instance||(this._instance=new o),this._instance},o.prototype.setGlobalTracerProvider=function(e){var t=wn(Di,this._proxyTracerProvider,Sn.instance());return t&&this._proxyTracerProvider.setDelegate(e),t},o.prototype.getTracerProvider=function(){return Kt(Di)||this._proxyTracerProvider},o.prototype.getTracer=function(e,t){return this.getTracerProvider().getTracer(e,t)},o.prototype.disable=function(){vn(Di,Sn.instance()),this._proxyTracerProvider=new $i},o}();var Lr=yu.getInstance();var ke={signatureStrict:!0,tracer:void 0,meter:void 0,logger:void 0,optimizerLogger:void 0,debug:void 0,abortSignal:void 0,customLabels:void 0,cachingFunction:void 0,functionResultFormatter:o=>typeof o=="string"?o:o==null?"":JSON.stringify(o,null,2)};var gt=class{ANSI_WHITE_BRIGHT="\x1B[97m";ANSI_GREEN_BRIGHT="\x1B[92m";ANSI_BLUE_BRIGHT="\x1B[94m";ANSI_RED_BRIGHT="\x1B[91m";ANSI_YELLOW_BRIGHT="\x1B[93m";ANSI_YELLOW="\x1B[93m";ANSI_RED="\x1B[91m";ANSI_RESET="\x1B[0m";ANSI_ORANGE="\x1B[38;5;208m";ANSI_WHITE="\x1B[37m";ANSI_CYAN_BRIGHT="\x1B[96m";ANSI_MAGENTA_BRIGHT="\x1B[95m";ANSI_GRAY="\x1B[90m";ANSI_GREEN="\x1B[32m";ANSI_CYAN="\x1B[36m";ANSI_MAGENTA="\x1B[35m";ANSI_BLUE="\x1B[34m";ANSI_YELLOW_DIM="\x1B[33m";colorize(e,t){return`${t}${e}${this.ANSI_RESET}`}whiteBright(e){return this.colorize(e,this.ANSI_WHITE_BRIGHT)}greenBright(e){return this.colorize(e,this.ANSI_GREEN_BRIGHT)}blueBright(e){return this.colorize(e,this.ANSI_BLUE_BRIGHT)}redBright(e){return this.colorize(e,this.ANSI_RED_BRIGHT)}white(e){return this.colorize(e,this.ANSI_WHITE)}yellow(e){return this.colorize(e,this.ANSI_YELLOW)}yellowBright(e){return this.colorize(e,this.ANSI_YELLOW_BRIGHT)}red(e){return this.colorize(e,this.ANSI_RED)}orange(e){return this.colorize(e,this.ANSI_ORANGE)}cyanBright(e){return this.colorize(e,this.ANSI_CYAN_BRIGHT)}magentaBright(e){return this.colorize(e,this.ANSI_MAGENTA_BRIGHT)}gray(e){return this.colorize(e,this.ANSI_GRAY)}green(e){return this.colorize(e,this.ANSI_GREEN)}cyan(e){return this.colorize(e,this.ANSI_CYAN)}magenta(e){return this.colorize(e,this.ANSI_MAGENTA)}blue(e){return this.colorize(e,this.ANSI_BLUE)}yellowDim(e){return this.colorize(e,this.ANSI_YELLOW_DIM)}};var dy=new gt,bu=o=>{console.log(o)},Cu=(o,e,t)=>{let n=(r,s)=>t&&s&&s in t?t[s](r):r;switch(o.role){case"system":return`${n("[ SYSTEM ]","magentaBright")}
|
|
32
32
|
${n(o.content,"magenta")}`;case"function":return`${n("[ FUNCTION RESULT ]","yellow")}
|
|
33
33
|
${n(o.result??"[No result]","yellowDim")}`;case"user":{let r=`${n("[ USER ]","greenBright")}
|
|
34
34
|
`;if(typeof o.content=="string")return r+n(o.content,"green");let s=o.content.map(i=>{if(i.type==="text")return n(i.text,"green");if(i.type==="image"){let a=e?"[Image]":`[Image: ${i.image}]`;return n(a,"green")}if(i.type==="audio"){let a=e?"[Audio]":`[Audio: ${i.data}]`;return n(a,"green")}return n("[Unknown content type]","gray")});return r+s.join(`
|
|
@@ -38,7 +38,7 @@ ${n(o.result??"[No result]","yellowDim")}`;case"user":{let r=`${n("[ USER ]","gr
|
|
|
38
38
|
`,o.functionCalls.forEach((i,a)=>{let c=typeof i.function.params=="string"?i.function.params:JSON.stringify(i.function.params,null,2);s+=n(`${a+1}. ${i.function.name}(${c}) [id: ${i.id}]`,"yellowDim"),a<(o.functionCalls?.length??0)-1&&(s+=`
|
|
39
39
|
`)}),s+=`
|
|
40
40
|
`),!o.content&&(!o.functionCalls||o.functionCalls.length===0)&&(s+=n("[No content]","gray")),s}default:return`${n("[ UNKNOWN ]","redBright")}
|
|
41
|
-
${n(JSON.stringify(o),"gray")}`}},Ui=(o=bu)=>{let e=new
|
|
41
|
+
${n(JSON.stringify(o),"gray")}`}},Ui=(o=bu)=>{let e=new gt,t=e.gray(`${"\u2500".repeat(60)}
|
|
42
42
|
`);return n=>{let r=n,s="";switch(r.name){case"ChatRequestChatPrompt":s=`
|
|
43
43
|
${e.blueBright(`[ CHAT REQUEST Step ${r.step} ]`)}
|
|
44
44
|
${t}
|
|
@@ -177,22 +177,22 @@ ${e}
|
|
|
177
177
|
`,s.description&&(r+=` ${s.description}
|
|
178
178
|
`)}),r+=`${e}
|
|
179
179
|
`;break}default:r=JSON.stringify(n,null,2)}o(r)}};var ve={LLM_SYSTEM:"gen_ai.system",LLM_OPERATION_NAME:"gen_ai.operation.name",LLM_REQUEST_MODEL:"gen_ai.request.model",LLM_REQUEST_MAX_TOKENS:"gen_ai.request.max_tokens",LLM_REQUEST_TEMPERATURE:"gen_ai.request.temperature",LLM_REQUEST_TOP_K:"gen_ai.request.top_k",LLM_REQUEST_FREQUENCY_PENALTY:"gen_ai.request.frequency_penalty",LLM_REQUEST_PRESENCE_PENALTY:"gen_ai.request.presence_penalty",LLM_REQUEST_STOP_SEQUENCES:"gen_ai.request.stop_sequences",LLM_REQUEST_LLM_IS_STREAMING:"gen_ai.request.llm_is_streaming",LLM_REQUEST_TOP_P:"gen_ai.request.top_p",LLM_USAGE_INPUT_TOKENS:"gen_ai.usage.input_tokens",LLM_USAGE_OUTPUT_TOKENS:"gen_ai.usage.output_tokens",LLM_USAGE_TOTAL_TOKENS:"gen_ai.usage.total_tokens",LLM_USAGE_THOUGHTS_TOKENS:"gen_ai.usage.thoughts_tokens",DB_SYSTEM:"db.system",DB_TABLE:"db.table",DB_NAMESPACE:"db.namespace",DB_ID:"db.id",DB_QUERY_TEXT:"db.query.text",DB_VECTOR:"db.vector",DB_OPERATION_NAME:"db.operation.name",DB_VECTOR_QUERY_TOP_K:"db.vector.query.top_k",DB_QUERY_EMBEDDINGS:"db.query.embeddings",DB_QUERY_RESULT:"db.query.result",DB_QUERY_EMBEDDINGS_VECTOR:"db.query.embeddings.vector",DB_QUERY_RESULT_ID:"db.query.result.id",DB_QUERY_RESULT_SCORE:"db.query.result.score",DB_QUERY_RESULT_DISTANCE:"db.query.result.distance",DB_QUERY_RESULT_METADATA:"db.query.result.metadata",DB_QUERY_RESULT_VECTOR:"db.query.result.vector",DB_QUERY_RESULT_DOCUMENT:"db.query.result.document"},Pt={GEN_AI_USER_MESSAGE:"gen_ai.user.message",GEN_AI_SYSTEM_MESSAGE:"gen_ai.system.message",GEN_AI_ASSISTANT_MESSAGE:"gen_ai.assistant.message",GEN_AI_TOOL_MESSAGE:"gen_ai.tool.message",GEN_AI_CHOICE:"gen_ai.choice",GEN_AI_USAGE:"gen_ai.usage"},Gi=(r=>(r.COMPLETION="completion",r.CHAT="chat",r.RERANK="rerank",r.UNKNOWN="unknown",r))(Gi||{}),Bi=(s=>(s.WORKFLOW="workflow",s.TASK="task",s.AGENT="agent",s.TOOL="tool",s.UNKNOWN="unknown",s))(Bi||{});var ji=class{buffer;doneCallback;transformFn;constructor(e,t){this.transformFn=e,this.doneCallback=t,this.buffer=t?[]:void 0}async transform(e,t){let n=this.transformFn(e);n&&(t.enqueue(n),this.buffer?.push(n))}async flush(e){await this.doneCallback?.(this.buffer??[]),e.terminate()}},Ho=class extends TransformStream{constructor(e,t){super(new ji(e,t))}};function Wo(o,e){for(let t of e){let n=o.find(r=>r.id===t.id);n?(typeof t.function.name=="string"&&t.function.name.length>0&&(n.function.name+=t.function.name),typeof t.function.params=="string"&&t.function.params.length>0&&(n.function.params+=t.function.params),typeof t.function.params=="object"&&(n.function.params=t.function.params)):o.push(t)}}var Ru=(o,e,t,n)=>{let r=n?o.filter(i=>i.role!=="system"):[...o];t({name:"ChatRequestChatPrompt",step:e,value:r})};var wu=(o,e)=>{if(!o.results)return;let t={name:"ChatResponseResults",value:o.results};e(t)};function vu(o,e){let t=new Map;for(let n of o)for(let r of n.results){if(!r)continue;let s=t.get(r.index);s?(r.content&&(s.content=(s.content??"")+r.content),r.thought&&(s.thought=(s.thought??"")+r.thought),r.finishReason&&(s.finishReason=r.finishReason),r.functionCalls&&(s.functionCalls?Wo(s.functionCalls,structuredClone(r.functionCalls)):s.functionCalls=structuredClone(r.functionCalls))):(s=structuredClone(r),t.set(r.index,s))}for(let n of t.values()){let r={name:"ChatResponseStreamingDoneResult",index:n.index,value:n};e(r)}}var Su=(o,e)=>{e({name:"FunctionResults",value:o})},zi=(o,e,t,n)=>{n({name:"FunctionError",index:e,fixingInstructions:t,error:o})},ku=(o,e,t,n)=>{n({name:"ValidationError",index:e,fixingInstructions:t,error:o})},Ou=(o,e,t,n)=>{n({name:"AssertionError",index:e,fixingInstructions:t,error:o})},Eu=(o,e,t)=>{t({name:"RefusalError",index:e,error:o})};var Mu=(o,e,t)=>{t({name:"EmbedRequest",embedModel:e,value:o})},Pu=(o,e)=>{let t=o.slice(0,3).map(r=>({length:r.length,sample:r.slice(0,5),truncated:r.length>5})),n={name:"EmbedResponse",totalEmbeddings:o.length,value:t};e(n)},Fu=(o,e,t,n)=>{n({name:"ResultPickerUsed",sampleCount:o,selectedIndex:e,latency:t})};var Ko=o=>{let e={};for(let[t,n]of Object.entries(o))if(n!=null){let r=String(n);e[t]=r.length>100?r.substring(0,100):r}return e},pn=(...o)=>{let e={};for(let t of o)t&&Object.assign(e,t);return e},Vo,_u=o=>{if(Vo)return Vo;if(o)return Vo=Tg(o),Vo};var Tg=o=>({latencyHistogram:o.createHistogram("ax_llm_request_duration_ms",{description:"Duration of LLM requests in milliseconds",unit:"ms"}),errorCounter:o.createCounter("ax_llm_errors_total",{description:"Total number of LLM request errors"}),requestCounter:o.createCounter("ax_llm_requests_total",{description:"Total number of LLM requests"}),tokenCounter:o.createCounter("ax_llm_tokens_total",{description:"Total number of LLM tokens consumed"}),inputTokenCounter:o.createCounter("ax_llm_input_tokens_total",{description:"Total number of input/prompt tokens consumed"}),outputTokenCounter:o.createCounter("ax_llm_output_tokens_total",{description:"Total number of output/completion tokens generated"}),errorRateGauge:o.createGauge("ax_llm_error_rate",{description:"Current error rate as a percentage (0-100)"}),meanLatencyGauge:o.createGauge("ax_llm_mean_latency_ms",{description:"Mean latency of LLM requests in milliseconds",unit:"ms"}),p95LatencyGauge:o.createGauge("ax_llm_p95_latency_ms",{description:"95th percentile latency of LLM requests in milliseconds",unit:"ms"}),p99LatencyGauge:o.createGauge("ax_llm_p99_latency_ms",{description:"99th percentile latency of LLM requests in milliseconds",unit:"ms"}),streamingRequestsCounter:o.createCounter("ax_llm_streaming_requests_total",{description:"Total number of streaming LLM requests"}),functionCallsCounter:o.createCounter("ax_llm_function_calls_total",{description:"Total number of function/tool calls made"}),functionCallLatencyHistogram:o.createHistogram("ax_llm_function_call_latency_ms",{description:"Latency of function calls in milliseconds",unit:"ms"}),requestSizeHistogram:o.createHistogram("ax_llm_request_size_bytes",{description:"Size of LLM request payloads in bytes",unit:"By"}),responseSizeHistogram:o.createHistogram("ax_llm_response_size_bytes",{description:"Size of LLM response payloads in bytes",unit:"By"}),temperatureGauge:o.createGauge("ax_llm_temperature_gauge",{description:"Temperature setting used for LLM requests"}),maxTokensGauge:o.createGauge("ax_llm_max_tokens_gauge",{description:"Maximum tokens setting used for LLM requests"}),estimatedCostCounter:o.createCounter("ax_llm_estimated_cost_total",{description:"Estimated cost of LLM requests in USD",unit:"$"}),promptLengthHistogram:o.createHistogram("ax_llm_prompt_length_chars",{description:"Length of prompts in characters"}),contextWindowUsageGauge:o.createGauge("ax_llm_context_window_usage_ratio",{description:"Context window utilization ratio (0-1)"}),timeoutsCounter:o.createCounter("ax_llm_timeouts_total",{description:"Total number of timed out LLM requests"}),abortsCounter:o.createCounter("ax_llm_aborts_total",{description:"Total number of aborted LLM requests"}),thinkingBudgetUsageCounter:o.createCounter("ax_llm_thinking_budget_usage_total",{description:"Total thinking budget tokens used"}),multimodalRequestsCounter:o.createCounter("ax_llm_multimodal_requests_total",{description:"Total number of multimodal requests (with images/audio)"}),cacheReadTokensCounter:o.createCounter("ax_llm_cache_read_tokens_total",{description:"Total number of tokens read from cache (prompt caching)"}),cacheWriteTokensCounter:o.createCounter("ax_llm_cache_write_tokens_total",{description:"Total number of tokens written to cache (prompt caching)"})}),Nu=(o,e,t,n,r,s)=>{try{if(o.latencyHistogram){let i=Ko({operation:e,ai_service:n,...r?{model:r}:{},...s});o.latencyHistogram.record(t,i)}}catch(i){console.warn("Failed to record latency metric:",i)}},Lu=(o,e,t,n,r,s,i,a)=>{let c={operation:e,ai_service:s,...i?{model:i}:{},...a};o.meanLatencyGauge&&o.meanLatencyGauge.record(t,c),o.p95LatencyGauge&&o.p95LatencyGauge.record(n,c),o.p99LatencyGauge&&o.p99LatencyGauge.record(r,c)},$u=(o,e,t,n,r)=>{try{if(o.errorCounter){let s=Ko({operation:e,ai_service:t,...n?{model:n}:{},...r});o.errorCounter.add(1,s)}}catch(s){console.warn("Failed to record error metric:",s)}},Du=(o,e,t,n,r,s)=>{o.errorRateGauge&&o.errorRateGauge.record(t*100,{operation:e,ai_service:n,...r?{model:r}:{},...s})},Uu=(o,e,t,n,r)=>{o.requestCounter&&o.requestCounter.add(1,{operation:e,ai_service:t,...n?{model:n}:{},...r})},$r=(o,e,t,n,r,s)=>{try{let i=Ko({ai_service:n,...r?{model:r}:{},...s});o.tokenCounter&&o.tokenCounter.add(t,{token_type:e,...i}),e==="input"&&o.inputTokenCounter&&o.inputTokenCounter.add(t,i),e==="output"&&o.outputTokenCounter&&o.outputTokenCounter.add(t,i)}catch(i){console.warn("Failed to record token metric:",i)}},Gu=(o,e,t,n,r,s)=>{t&&o.streamingRequestsCounter&&o.streamingRequestsCounter.add(1,{operation:e,ai_service:n,...r?{model:r}:{},...s})},Bu=(o,e,t,n,r,s)=>{let i={function_name:e,...n?{ai_service:n}:{},...r?{model:r}:{},...s};o.functionCallsCounter&&o.functionCallsCounter.add(1,i),t&&o.functionCallLatencyHistogram&&o.functionCallLatencyHistogram.record(t,i)},qi=(o,e,t,n,r,s)=>{o.requestSizeHistogram&&o.requestSizeHistogram.record(t,{operation:e,ai_service:n,...r?{model:r}:{},...s})},Hi=(o,e,t,n,r,s)=>{o.responseSizeHistogram&&o.responseSizeHistogram.record(t,{operation:e,ai_service:n,...r?{model:r}:{},...s})},ju=(o,e,t,n,r,s)=>{let i={...n?{ai_service:n}:{},...r?{model:r}:{},...s};e!==void 0&&o.temperatureGauge&&o.temperatureGauge.record(e,i),t!==void 0&&o.maxTokensGauge&&o.maxTokensGauge.record(t,i)},zu=(o,e,t,n,r,s)=>{o.estimatedCostCounter&&o.estimatedCostCounter.add(t,{operation:e,ai_service:n,...r?{model:r}:{},...s})},qu=(o,e,t,n,r)=>{o.promptLengthHistogram&&o.promptLengthHistogram.record(e,{ai_service:t,...n?{model:n}:{},...r})},Hu=(o,e,t,n,r)=>{o.contextWindowUsageGauge&&o.contextWindowUsageGauge.record(e,{ai_service:t,...n?{model:n}:{},...r})},Wu=(o,e,t,n,r)=>{o.timeoutsCounter&&o.timeoutsCounter.add(1,{operation:e,ai_service:t,...n?{model:n}:{},...r})},Vu=(o,e,t,n,r)=>{o.abortsCounter&&o.abortsCounter.add(1,{operation:e,ai_service:t,...n?{model:n}:{},...r})},Ku=(o,e,t,n,r)=>{o.thinkingBudgetUsageCounter&&o.thinkingBudgetUsageCounter.add(e,{ai_service:t,...n?{model:n}:{},...r})},Ju=(o,e,t,n,r,s)=>{(e||t)&&o.multimodalRequestsCounter&&o.multimodalRequestsCounter.add(1,{ai_service:n,has_images:e.toString(),has_audio:t.toString(),...r?{model:r}:{},...s})},Wi=(o,e,t,n,r,s)=>{try{if(t<=0)return;let i=Ko({ai_service:n,...r?{model:r}:{},...s});e==="read"&&o.cacheReadTokensCounter&&o.cacheReadTokensCounter.add(t,i),e==="write"&&o.cacheWriteTokensCounter&&o.cacheWriteTokensCounter.add(t,i)}catch(i){console.warn("Failed to record cache token metric:",i)}};function ze(o){if(!o||!Array.isArray(o))return 0;let e=0;for(let t of o)switch(t.role){case"system":case"assistant":typeof t.content=="string"&&(e+=t.content.length);break;case"user":if(typeof t.content=="string"){e+=t.content.length;break}if(Array.isArray(t.content))for(let n of t.content)n.type==="text"&&(e+=n.text.length);break;case"function":typeof t.result=="string"&&(e+=t.result.length);break}return e}function On(o,e,t){let n=e+t;return{systemPromptCharacters:o,exampleChatContextCharacters:e,mutableChatContextCharacters:t,chatContextCharacters:n,totalPromptCharacters:o+n}}function Qu(o){try{return JSON.stringify(o,null,2)}catch{return String(o)}}function Ft(o,e={}){let t=[o];throw e.fieldPath!==void 0&&t.push(`Field: ${e.fieldPath}`),e.value!==void 0&&t.push(`Value: ${Qu(e.value)}`),e.note&&t.push(`Note: ${e.note}`),e.item!==void 0&&t.push(`Chat item: ${Qu(e.item)}`),new Error(t.join(`
|
|
180
|
-
`))}function En(o){let e=n=>JSON.stringify(n,null,2);if(!o)throw new Error(`Chat request message item cannot be null or undefined, received: ${e(o)}`);let t=typeof o=="object"&&o!==null&&"role"in o&&typeof o.role=="string"?o.role:void 0;if(!t)throw new Error(`Chat request message must have a role, received: ${e(t)}`);switch(t){case"system":{let n=typeof o=="object"&&o!==null&&"content"in o&&typeof o.content=="string"?o.content:void 0;if(!n||n.trim()==="")throw new Error(`System message content cannot be empty or whitespace-only, received: ${e(n)}`);break}case"user":{let n=typeof o=="object"&&o!==null&&"content"in o?o.content:void 0;if(n===void 0)throw new Error(`User message content cannot be undefined, received: ${e(n)}`);if(typeof n=="string"){if(n.trim()==="")throw new Error(`User message content cannot be empty or whitespace-only, received: ${e(n)}`)}else if(Array.isArray(n)){if(n.length===0)throw new Error(`User message content array cannot be empty, received: ${e(n)}`);for(let r=0;r<n.length;r++){let s=n[r];if(!s||typeof s!="object")throw new Error(`User message content item at index ${r} must be an object, received: ${e(s)}`);let i=typeof s=="object"&&s!==null&&"type"in s&&typeof s.type=="string"?s.type:void 0;if(!i)throw new Error(`User message content item at index ${r} must have a type, received: ${e(i)}`);switch(i){case"text":{let a="text"in s&&typeof s.text=="string"?s.text:void 0;if(!a||a.trim()==="")throw new Error(`User message text content at index ${r} cannot be empty or whitespace-only, received: ${e(a)}`);break}case"image":{let a="image"in s&&typeof s.image=="string"?s.image:void 0,c="mimeType"in s&&typeof s.mimeType=="string"?s.mimeType:void 0;if(!a||a.trim()==="")throw new Error(`User message image content at index ${r} cannot be empty, received: ${e(a)}`);if(!c||c.trim()==="")throw new Error(`User message image content at index ${r} must have a mimeType, received: ${e(c)}`);break}case"audio":{let a="data"in s&&typeof s.data=="string"?s.data:void 0;if(!a||a.trim()==="")throw new Error(`User message audio content at index ${r} cannot be empty, received: ${e(a)}`);break}case"file":{let a="fileUri"in s&&typeof s.fileUri=="string",c="data"in s&&typeof s.data=="string";if(!a&&!c)throw new Error(`User message file content at index ${r} must have either 'data' or 'fileUri', received: ${e(s)}`);if(a&&c)throw new Error(`User message file content at index ${r} cannot have both 'data' and 'fileUri', received: ${e(s)}`);if(a){let l=s.fileUri;if(!l||l.trim()==="")throw new Error(`User message file content at index ${r} fileUri cannot be empty, received: ${e(l)}`)}if(c){let l=s.data;if(!l||l.trim()==="")throw new Error(`User message file content at index ${r} data cannot be empty, received: ${e(l)}`)}let u="mimeType"in s&&typeof s.mimeType=="string"?s.mimeType:null;if(!u||u.trim()==="")throw new Error(`User message file content at index ${r} must have a mimeType, received: ${e(u)}`);break}case"url":{let a="url"in s&&typeof s.url=="string"?s.url:void 0;if(!a||a.trim()==="")throw new Error(`User message url content at index ${r} cannot be empty, received: ${e(a)}`);break}default:throw new Error(`User message content item at index ${r} has unsupported type: ${e(i)}`)}}}else throw new Error(`User message content must be a string or array of content objects, received: ${e(n)}`);break}case"assistant":{let n=typeof o=="object"&&o!==null&&"content"in o?o.content:void 0,r=typeof o=="object"&&o!==null&&"functionCalls"in o?o.functionCalls:void 0,s=typeof o=="object"&&o!==null&&"thoughtBlocks"in o?o.thoughtBlocks:void 0,i=typeof n=="string"&&n.trim()!=="",a=Array.isArray(r)&&r.length>0,c=Array.isArray(s)&&s.length>0;if(!i&&!a&&!c&&Ft("Assistant message must include non-empty content, at least one function call, or thought blocks",{fieldPath:"content | functionCalls | thoughtBlocks",value:{content:n,functionCalls:r,thoughtBlocks:s},item:o}),n!==void 0&&typeof n!="string"&&Ft("Assistant message content must be a string",{fieldPath:"content",value:n,item:o}),r!==void 0&&!Array.isArray(r)&&Ft("Assistant message functionCalls must be an array when provided",{fieldPath:"functionCalls",value:r,item:o}),Array.isArray(r))for(let u=0;u<r.length;u++){let l=r[u];if((!l||typeof l!="object")&&Ft("functionCalls entry must be an object",{fieldPath:`functionCalls[${u}]`,value:l,item:o}),(!("id"in l)||typeof l.id!="string"||l.id.trim()==="")&&Ft("functionCalls entry must include a non-empty string id",{fieldPath:`functionCalls[${u}].id`,value:l.id,item:o}),(!("type"in l)||l.type!=="function")&&Ft("functionCalls entry must have type 'function'",{fieldPath:`functionCalls[${u}].type`,value:l.type,item:o}),!("function"in l)||!l.function)Ft("functionCalls entry must include a function object",{fieldPath:`functionCalls[${u}].function`,value:l.function,item:o});else{let p=l.function;(!("name"in p)||typeof p.name!="string"||p.name.trim()==="")&&Ft("functionCalls entry must include a non-empty function name",{fieldPath:`functionCalls[${u}].function.name`,value:p?.name,item:o}),p.params!==void 0&&typeof p.params!="string"&&typeof p.params!="object"&&Ft("functionCalls entry params must be a string or object when provided",{fieldPath:`functionCalls[${u}].function.params`,value:p.params,item:o})}}if(o.name!==void 0){let u=o.name;(typeof u!="string"||u.trim()==="")&&Ft("Assistant message name must be a non-empty string when provided",{fieldPath:"name",value:u,item:o})}break}case"function":{let n=typeof o=="object"&&o!==null&&"functionId"in o&&typeof o.functionId=="string"?o.functionId:void 0,r=typeof o=="object"&&o!==null&&"result"in o?o.result:void 0;if(!n||n.trim()==="")throw new Error(`Function message must have a non-empty functionId, received: ${e(n)}`);if(r==null)throw new Error(`Function message must have a result, received: ${e(r)}`);if(typeof r!="string")throw new Error(`Function message result must be a string, received: ${e(r)}`);o.isError!==void 0&&typeof o.isError!="boolean"&&Ft("Function message isError must be a boolean when provided",{fieldPath:"isError",value:o.isError,item:o});break}default:throw new Error(`Unsupported message role: ${e(t)}`)}}function Jo(o){let e=n=>JSON.stringify(n,null,2),t=Array.isArray(o)?o:[o];if(t.length===0)throw new Error(`Chat response results cannot be empty, received: ${e(t)}`);for(let n=0;n<t.length;n++){let r=t[n];if(!r)throw new Error(`Chat response result at index ${n} cannot be null or undefined, received: ${e(r)}`);if(typeof r.index!="number")throw new Error(`Chat response result at index ${n} must have a numeric index, received: ${e(r.index)}`);if(r.index<0)throw new Error(`Chat response result at index ${n} must have a non-negative index, received: ${e(r.index)}`);if(!r.content&&!r.thought&&(!r.thoughtBlocks||r.thoughtBlocks.length===0)&&!r.functionCalls&&!r.finishReason)throw new Error(`Chat response result at index ${n} must have at least one of: content, thought, thoughtBlocks, functionCalls, or finishReason, received: ${e({content:r.content,thought:r.thought,thoughtBlocks:r.thoughtBlocks,functionCalls:r.functionCalls,finishReason:r.finishReason})}`);if(r.content!==void 0&&typeof r.content!="string")throw new Error(`Chat response result content at index ${n} must be a string, received: ${e(r.content)}`);if(r.thought!==void 0&&typeof r.thought!="string")throw new Error(`Chat response result thought at index ${n} must be a string, received: ${e(r.thought)}`);if(r.thoughtBlocks!==void 0){if(!Array.isArray(r.thoughtBlocks))throw new Error(`Chat response result thoughtBlocks at index ${n} must be an array, received: ${e(r.thoughtBlocks)}`);for(let s=0;s<r.thoughtBlocks.length;s++){let i=r.thoughtBlocks[s];if(typeof i!="object"||i===null)throw new Error(`Chat response result thoughtBlocks[${s}] at index ${n} must be an object, received: ${e(i)}`);if(typeof i.data!="string")throw new Error(`Chat response result thoughtBlocks[${s}].data at index ${n} must be a string, received: ${e(i.data)}`);if(typeof i.encrypted!="boolean")throw new Error(`Chat response result thoughtBlocks[${s}].encrypted at index ${n} must be a boolean, received: ${e(i.encrypted)}`);if(i.signature!==void 0&&typeof i.signature!="string")throw new Error(`Chat response result thoughtBlocks[${s}].signature at index ${n} must be a string when provided, received: ${e(i.signature)}`)}}if(r.name!==void 0){if(typeof r.name!="string")throw new Error(`Chat response result name at index ${n} must be a string, received: ${e(r.name)}`);if(r.name.trim()==="")throw new Error(`Chat response result name at index ${n} cannot be empty or whitespace-only, received: ${e(r.name)}`)}if(r.annotations!==void 0){if(!Array.isArray(r.annotations))throw new Error(`Chat response result annotations at index ${n} must be an array, received: ${e(r.annotations)}`);for(let s=0;s<r.annotations.length;s++){let i=r.annotations[s];if(!i||typeof i!="object")throw new Error(`Chat response result annotation at index ${n}[${s}] must be an object, received: ${e(i)}`);if(i.type!=="url_citation")throw new Error(`Chat response result annotation at index ${n}[${s}] must have type 'url_citation', received: ${e(i.type)}`);if(!i.url_citation||typeof i.url_citation!="object")throw new Error(`Chat response result annotation at index ${n}[${s}] must have a valid url_citation object, received: ${e(i.url_citation)}`);if(typeof i.url_citation.url!="string")throw new Error(`Chat response result annotation at index ${n}[${s}] url_citation.url must be a string, received: ${e(i.url_citation.url)}`)}}if(r.id!==void 0){if(typeof r.id!="string")throw new Error(`Chat response result id at index ${n} must be a string, received: ${e(r.id)}`);if(r.id.trim()==="")throw new Error(`Chat response result id at index ${n} cannot be empty or whitespace-only, received: ${e(r.id)}`)}if(r.functionCalls!==void 0){if(!Array.isArray(r.functionCalls))throw new Error(`Chat response result functionCalls at index ${n} must be an array, received: ${e(r.functionCalls)}`);for(let s=0;s<r.functionCalls.length;s++){let i=r.functionCalls[s];if(!i)throw new Error(`Function call at index ${s} in result ${n} cannot be null or undefined, received: ${e(i)}`);if(!i.id||typeof i.id!="string"||i.id.trim()==="")throw new Error(`Function call at index ${s} in result ${n} must have a non-empty string id, received: ${e(i.id)}`);if(i.type!=="function")throw new Error(`Function call at index ${s} in result ${n} must have type 'function', received: ${e(i.type)}`);if(!i.function)throw new Error(`Function call at index ${s} in result ${n} must have a function object, received: ${e(i.function)}`);if(!i.function.name||typeof i.function.name!="string"||i.function.name.trim()==="")throw new Error(`Function call at index ${s} in result ${n} must have a non-empty function name, received: ${e(i.function.name)}`);if(i.function.params!==void 0&&typeof i.function.params!="string"&&typeof i.function.params!="object")throw new Error(`Function call params at index ${s} in result ${n} must be a string or object, received: ${e(i.function.params)}`)}}if(r.finishReason!==void 0){let s=["stop","length","function_call","content_filter","error"];if(!s.includes(r.finishReason))throw new Error(`Chat response result finishReason at index ${n} must be one of: ${s.join(", ")}, received: ${e(r.finishReason)}`)}}}var Vi=new Map;function Ig(o){return`${o.providerName}:${o.model}:${o.contentHash}`}function Ki(o){return Array.isArray(o)?o.map(e=>Ki(e)):o&&typeof o=="object"?Object.fromEntries(Object.entries(o).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,Ki(t)])):o}function Ji(o){return JSON.stringify(Ki(o))}function Zu(o){return typeof o=="string"?o:Ji(o)}function Rg(o){return o.functions?.some(e=>e.cache)??!1}function wg(o){if(Rg(o))return{functions:o.functions?.map(({cache:e,...t})=>t),functionCall:o.functionCall}}function vg(o,e){e.type==="text"?o.update(`text:${e.text}`):e.type==="image"?o.update(`image:${e.mimeType}:${e.image.slice(0,100)}`):e.type==="audio"?o.update(`audio:${e.format}:${e.data.slice(0,100)}`):e.type==="file"&&("fileUri"in e?o.update(`file:${e.mimeType}:${e.fileUri}`):o.update(`file:${e.mimeType}:${e.data.slice(0,100)}`))}function Sg(o,e){let t=yt("sha256"),{chatPrompt:n}=o,r=-1;for(let s=n.length-1;s>=0;s--){let i=n[s];if("cache"in i&&i.cache){r=s;break}}for(let s=0;s<n.length;s++){let i=n[s];if(i.role==="system"){t.update(`system:${i.content}`);continue}if(r>=0&&s<=r)if(i.role==="user"){if(typeof i.content=="string")t.update(`user:${i.content}`);else if(Array.isArray(i.content))for(let a of i.content)vg(t,a)}else if(i.role==="assistant"){if(i.content&&t.update(`assistant:${i.content}`),i.functionCalls)for(let a of i.functionCalls)t.update(`assistant_function:${a.function.name}:${Zu(a.function.params)}`)}else i.role==="function"&&t.update(`function:${i.functionId}:${i.result}`)}return e&&t.update(`tools:${Ji(e)}`),t.digest("hex")}var Le=()=>structuredClone({temperature:0}),Ze=()=>structuredClone({temperature:.4,frequencyPenalty:.2}),Xe=class{constructor(e,{name:t,apiURL:n,headers:r,modelInfo:s,defaults:i,options:a={},supportFor:c,models:u}){this.aiImpl=e;this.name=t,this.apiURL=n||"",this.headers=r,this.supportFor=c,this.tracer=a.tracer??ke.tracer,this.meter=a.meter??ke.meter,this.modelInfo=s,this.models=u,this.id=it();let l=this.getModel(i.model)??i.model,p=this.getEmbedModel(i.embedModel)??i.embedModel;if(this.defaults={model:l,embedModel:p},!i.model||typeof i.model!="string"||i.model==="")throw new Error("No model defined");this.setOptions(a),u&&kg(u)}#e=!1;#t=!1;rt;fetch;tracer;meter;timeout;excludeContentFromTrace;models;abortSignal;logger=ke.logger??Tu;corsProxy;retry;customLabels;contextCache;noBeta;modelInfo;modelUsage;embedModelUsage;defaults;lastUsedModelConfig;lastUsedChatModel;lastUsedEmbedModel;apiURL;name;id;headers;supportFor;metrics={latency:{chat:{mean:0,p95:0,p99:0,samples:[]},embed:{mean:0,p95:0,p99:0,samples:[]}},errors:{chat:{count:0,rate:0,total:0},embed:{count:0,rate:0,total:0}}};getMetricsInstruments(){return _u(this.meter)}setName(e){this.name=e}getId(){return this.id}setAPIURL(e){this.apiURL=e}setHeaders(e){this.headers=e}get debug(){return this.#e}setOptions(e){this.#e=e.debug??ke.debug??!1,this.#t=e.verbose??!1,this.rt=e.rateLimiter,this.fetch=e.fetch,this.timeout=e.timeout,this.tracer=e.tracer??ke.tracer,this.meter=e.meter??ke.meter,this.excludeContentFromTrace=e.excludeContentFromTrace,this.abortSignal=e.abortSignal,this.logger=e.logger??ke.logger??this.logger,this.corsProxy=e.corsProxy,this.retry=e.retry,this.customLabels=e.customLabels,this.contextCache=e.contextCache,this.noBeta=e.noBeta}getOptions(){return{debug:this.#e,verbose:this.#t,rateLimiter:this.rt,fetch:this.fetch,tracer:this.tracer,meter:this.meter,timeout:this.timeout,excludeContentFromTrace:this.excludeContentFromTrace,abortSignal:this.abortSignal,logger:this.logger,corsProxy:this.corsProxy,retry:this.retry,customLabels:this.customLabels,contextCache:this.contextCache,noBeta:this.noBeta}}getLogger(){return this.logger}getMergedCustomLabels(e){return pn(ke.customLabels,this.customLabels,e)}getModelList(){let e=[];for(let t of this.models??[])t.isInternal||("model"in t&&t.model&&e.push({key:t.key,description:t.description,model:t.model}),"embedModel"in t&&t.embedModel&&e.push({key:t.key,description:t.description,embedModel:t.embedModel}));return e}getName(){return this.name}getFeatures(e){return typeof this.supportFor=="function"?this.supportFor(e??this.defaults.model):this.supportFor}getLastUsedChatModel(){return this.lastUsedChatModel}getLastUsedEmbedModel(){return this.lastUsedEmbedModel}getLastUsedModelConfig(){return this.lastUsedModelConfig}calculatePercentile(e,t){if(e.length===0)return 0;let n=[...e].sort((s,i)=>s-i),r=Math.ceil(t/100*n.length)-1;return n[r]??0}updateLatencyMetrics(e,t,n){let r=this.metrics.latency[e];r.samples.push(t),r.samples.length>1e3&&r.samples.shift(),r.mean=r.samples.reduce((i,a)=>i+a,0)/r.samples.length,r.p95=this.calculatePercentile(r.samples,95),r.p99=this.calculatePercentile(r.samples,99);let s=this.getMetricsInstruments();if(s){let i=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel,a=this.getMergedCustomLabels(n);Nu(s,e,t,this.name,i,a),Lu(s,e,r.mean,r.p95,r.p99,this.name,i,a)}}updateErrorMetrics(e,t,n){let r=this.metrics.errors[e];r.total++,t&&r.count++,r.rate=r.count/r.total;let s=this.getMetricsInstruments();if(s){let i=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel,a=this.getMergedCustomLabels(n);Uu(s,e,this.name,i,a),t&&$u(s,e,this.name,i,a),Du(s,e,r.rate,this.name,i,a)}}recordTokenUsage(e,t,n){let r=this.getMetricsInstruments();if(r&&e?.tokens){let{promptTokens:s,completionTokens:i,totalTokens:a,thoughtsTokens:c,cacheReadTokens:u,cacheCreationTokens:l}=e.tokens,p=this.getMergedCustomLabels(t);if(s&&$r(r,"input",s,this.name,e.model,p),i&&$r(r,"output",i,this.name,e.model,p),a&&$r(r,"total",a,this.name,e.model,p),c&&$r(r,"thoughts",c,this.name,e.model,p),u&&Wi(r,"read",u,this.name,e.model,p),l&&Wi(r,"write",l,this.name,e.model,p),n){let d=this.estimateCostByName(e.model,e);d>0&&zu(r,n,d,this.name,e.model,p)}}}calculateRequestSize(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}calculateResponseSize(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}detectMultimodalContent(e){let t=!1,n=!1;if(e.chatPrompt&&Array.isArray(e.chatPrompt)){for(let r of e.chatPrompt)if(r.role==="user"&&Array.isArray(r.content))for(let s of r.content)s.type==="image"?t=!0:s.type==="audio"&&(n=!0)}return{hasImages:t,hasAudio:n}}calculateContextWindowUsage(e,t){if(!t?.tokens?.promptTokens)return 0;let n=this.modelInfo.find(r=>r.name===e);return n?.contextWindow?t.tokens.promptTokens/n.contextWindow:0}estimateCostByName(e,t){if(!t?.tokens)return 0;let n=this.modelInfo.find(h=>h.name===e);if(!n||!n.promptTokenCostPer1M&&!n.completionTokenCostPer1M)return 0;let{promptTokens:r=0,completionTokens:s=0,thoughtsTokens:i=0,cacheReadTokens:a=0,cacheCreationTokens:c=0}=t.tokens,u=r+a,l=n.longContextThreshold!==void 0&&u>n.longContextThreshold,p=l?n.longContextPromptTokenCostPer1M??n.promptTokenCostPer1M??0:n.promptTokenCostPer1M??0,d=l?n.longContextCompletionTokenCostPer1M??n.completionTokenCostPer1M??0:n.completionTokenCostPer1M??0,g=l?n.longContextCacheReadTokenCostPer1M??n.cacheReadTokenCostPer1M??p:n.cacheReadTokenCostPer1M??p,m=n.cacheWriteTokenCostPer1M??p,f=s+i;return r*p/1e6+f*d/1e6+a*g/1e6+c*m/1e6}recordFunctionCallMetrics(e,t,n){let r=this.getMetricsInstruments();if(!(!r||!e))for(let s of e)s&&typeof s=="object"&&"function"in s&&s.function&&typeof s.function=="object"&&"name"in s.function&&Bu(r,s.function.name,void 0,this.name,t,this.getMergedCustomLabels(n))}recordTimeoutMetric(e,t){let n=this.getMetricsInstruments();if(n){let r=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel;Wu(n,e,this.name,r,this.getMergedCustomLabels(t))}}recordAbortMetric(e,t){let n=this.getMetricsInstruments();if(n){let r=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel;Vu(n,e,this.name,r,this.getMergedCustomLabels(t))}}recordChatMetrics(e,t,n){let r=this.getMetricsInstruments();if(!r)return;let s=this.lastUsedChatModel,i=this.lastUsedModelConfig,a=this.getMergedCustomLabels(t?.customLabels),c=i?.stream??!1;Gu(r,"chat",c,this.name,s,a);let{hasImages:u,hasAudio:l}=this.detectMultimodalContent(e);Ju(r,u,l,this.name,s,a);let p=ze(e.chatPrompt);qu(r,p,this.name,s,a),ju(r,i?.temperature,i?.maxTokens,this.name,s,a),t?.thinkingTokenBudget&&this.modelUsage?.tokens?.thoughtsTokens&&Ku(r,this.modelUsage.tokens.thoughtsTokens,this.name,s,a);let d=this.calculateRequestSize(e);if(qi(r,"chat",d,this.name,s,a),n&&!c){let g=n,m=this.calculateResponseSize(g);if(Hi(r,"chat",m,this.name,s,a),g.results)for(let h of g.results)h.functionCalls&&this.recordFunctionCallMetrics(h.functionCalls,this.lastUsedChatModel,a);let f=this.calculateContextWindowUsage(this.lastUsedChatModel,g.modelUsage);f>0&&Hu(r,f,this.name,s,a)}}recordEmbedMetrics(e,t,n){let r=this.getMetricsInstruments();if(!r)return;let s=this.lastUsedEmbedModel,i=this.getMergedCustomLabels(n?.customLabels),a=this.calculateRequestSize(e);qi(r,"embed",a,this.name,s,i);let c=this.calculateResponseSize(t);Hi(r,"embed",c,this.name,s,i)}getMetrics(){return structuredClone(this.metrics)}getEstimatedCost(e){return e?this.estimateCostByName(e.model,e):0}async chat(e,t){let n=performance.now(),r=!1,s,i=this.getModelByKey(e.model),a=i?i.thinkingTokenBudget:void 0,c={...this.noBeta!==void 0?{noBeta:this.noBeta}:void 0,...i?{thinkingTokenBudget:a,showThoughts:i.showThoughts,stream:i.stream,debug:i.debug,useExpensiveModel:i.useExpensiveModel,noBeta:i.noBeta}:void 0,...Object.fromEntries(Object.entries(t??{}).filter(([,u])=>u!==void 0))};try{return s=await this._chat1(e,c),s}catch(u){throw r=!0,u instanceof Error&&(u.message.includes("timeout")||u.name==="TimeoutError"?this.recordTimeoutMetric("chat",c?.customLabels):(u.message.includes("abort")||u.name==="AbortError")&&this.recordAbortMetric("chat",c?.customLabels)),u}finally{let u=performance.now()-n;this.updateLatencyMetrics("chat",u,c?.customLabels),this.updateErrorMetrics("chat",r,c?.customLabels),r||this.recordChatMetrics(e,c,s)}}async _chat1(e,t){let n=this.getModel(e.model)??e.model??this.defaults.model;if(Array.isArray(e.chatPrompt))for(let u of e.chatPrompt)En(u);let r=this.getModelByKey(e.model),s={...this.aiImpl.getModelConfig(),...r?r.modelConfig:void 0,...e.modelConfig},i=this.modelInfo.find(u=>u.name===n);if(i?.notSupported?.temperature&&"temperature"in s&&delete s.temperature,i?.notSupported?.topP&&"topP"in s&&delete s.topP,this.modelInfo.find(u=>u.name===n)?.isExpensive&&t?.useExpensiveModel!=="yes")throw new Error(`Model ${n} is marked as expensive and requires explicit confirmation. Set useExpensiveModel: "yes" to proceed.`);return s.stream=(t?.stream!==void 0?t.stream:s.stream)??!0,this.getFeatures(n).streaming||(s.stream=!1),this.tracer?await this.tracer.startActiveSpan("AI Chat Request",{kind:ht.SERVER,attributes:{[ve.LLM_SYSTEM]:this.name,[ve.LLM_OPERATION_NAME]:"chat",[ve.LLM_REQUEST_MODEL]:n,[ve.LLM_REQUEST_MAX_TOKENS]:s.maxTokens??"Not set",[ve.LLM_REQUEST_TEMPERATURE]:s.temperature,[ve.LLM_REQUEST_TOP_P]:s.topP??"Not set",[ve.LLM_REQUEST_TOP_K]:s.topK??"Not set",[ve.LLM_REQUEST_FREQUENCY_PENALTY]:s.frequencyPenalty??"Not set",[ve.LLM_REQUEST_PRESENCE_PENALTY]:s.presencePenalty??"Not set",[ve.LLM_REQUEST_STOP_SEQUENCES]:s.stopSequences?.join(", ")??"Not set",[ve.LLM_REQUEST_LLM_IS_STREAMING]:s.stream??"Not set"}},t?.traceContext??tn.active(),async u=>await this._chat2(n,s,e,t,u)):await this._chat2(n,s,e,t)}cleanupFunctionSchema(e){let t={...e};if(t.parameters){let n={...t.parameters};Array.isArray(n.required)&&n.required.length===0&&delete n.required,n.properties&&Object.keys(n.properties).length===0&&delete n.properties,Object.keys(n).length===0||Object.keys(n).length===1&&n.type==="object"?delete t.parameters:t.parameters=n}return t}async _chat2(e,t,n,r,s){if(!this.aiImpl.createChatReq)throw new Error("createChatReq not implemented");let i=r?.debug??this.#e,a=r?.verbose??this.#t,c;n.functions&&n.functions.length>0&&(c=n.functions.map(y=>this.cleanupFunctionSchema(y)));let u={...n,model:e,functions:c,modelConfig:t};this.lastUsedChatModel=e,this.lastUsedModelConfig=t,i&&Ru(u.chatPrompt,r?.stepIndex??0,r?.logger??this.logger,r?.debugHideSystemPrompt);let l=this.getFeatures(e).functions,p=r?.functionCallMode??"auto",g=p==="prompt"||p==="auto"&&!l?{...u,chatPrompt:u.chatPrompt.map(y=>{if(y.role==="assistant"){let{content:C,name:R,cache:I}=y;return{role:"assistant",content:C,name:R,cache:I}}return y.role==="function"?{role:"user",content:y.result}:y}),functions:[]}:u,m=await this.handleContextCaching(e,g,r,s),f=async()=>{if(m?.preparedRequest){let{apiConfig:I,request:M}=m.preparedRequest;return s?.isRecording()&&Yu(n,s,this.excludeContentFromTrace),await ct({name:I.name,url:I.url??this.apiURL,localCall:I.localCall,headers:await this.buildHeaders(I.headers),stream:t.stream,timeout:this.timeout,verbose:a,fetch:this.fetch,span:s,abortSignal:r?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:r?.retry??this.retry},M)}let[y,C]=await this.aiImpl.createChatReq(g,r);return s?.isRecording()&&Yu(n,s,this.excludeContentFromTrace),await ct({name:y.name,url:y.url??this.apiURL,localCall:y.localCall,headers:await this.buildHeaders(y.headers),stream:t.stream,timeout:this.timeout,verbose:a,fetch:this.fetch,span:s,abortSignal:r?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:r?.retry??this.retry},C)},h=r?.rateLimiter??this.rt,x=h?await h(f,{modelUsage:this.modelUsage}):await f();if(t.stream){if(!this.aiImpl.createChatStreamResp)throw new Error("createChatStreamResp not implemented");let y=this.aiImpl.createChatStreamResp.bind(this),C=F=>P=>{let N=y(P,F);if(N.sessionId=r?.sessionId,!N.modelUsage){let T=this.aiImpl.getTokenUsage();T&&(N.modelUsage={ai:this.name,model:e,tokens:T})}return this.modelUsage=N.modelUsage,this.recordTokenUsage(N.modelUsage,r?.customLabels,"chat"),s?.isRecording()&&Xu(N,s,this.excludeContentFromTrace),N},R=async F=>{s?.isRecording()&&s.end(),i&&vu(F,r?.logger??this.logger)};if(typeof window<"u"){let F=x,P={},N=[],T=r?.abortSignal??this.abortSignal;return new ReadableStream({start:E=>{let O=F.getReader(),S=()=>{try{O.cancel().catch(()=>{})}catch{}try{this.recordAbortMetric("chat",r?.customLabels)}catch{}try{s?.isRecording()&&s.end()}catch{}try{E.error(new DOMException("Aborted","AbortError"))}catch{E.error(new Error("Aborted"))}};if(T){if(T.aborted){S();return}T.addEventListener("abort",S,{once:!0})}async function k(){try{for(;;){let{done:_,value:$}=await O.read();if(_){R&&await R(N),E.close();break}let B=C(P)($);B&&(N.push(B),E.enqueue(B))}}catch(_){if(E.error(_),s?.isRecording())try{s.end()}catch{}}finally{if(O.releaseLock(),T)try{T.removeEventListener("abort",S)}catch{}}}k()}})}return x.pipeThrough(new Ho(C({}),R))}if(!this.aiImpl.createChatResp)throw new Error("createChatResp not implemented");let A=this.aiImpl.createChatResp(x);if(A.sessionId=r?.sessionId,!A.modelUsage){let y=this.aiImpl.getTokenUsage();y&&(A.modelUsage={ai:this.name,model:e,tokens:y})}return A.modelUsage&&(this.modelUsage=A.modelUsage,this.recordTokenUsage(A.modelUsage,r?.customLabels,"chat")),s?.isRecording()&&(Xu(A,s,this.excludeContentFromTrace),s.end()),i&&wu(A,r?.logger??this.logger),A}async embed(e,t){let n=performance.now(),r=!1,s,i=this.getModelByKey(e.embedModel),a={...this.noBeta!==void 0?{noBeta:this.noBeta}:void 0,...i?{thinkingTokenBudget:i.thinkingTokenBudget,showThoughts:i.showThoughts,stream:i.stream,debug:i.debug,useExpensiveModel:i.useExpensiveModel,noBeta:i.noBeta}:void 0,...t};try{return s=await this._embed1(e,a),s}catch(c){throw r=!0,c instanceof Error&&(c.message.includes("timeout")||c.name==="TimeoutError"?this.recordTimeoutMetric("embed",a?.customLabels):(c.message.includes("abort")||c.name==="AbortError")&&this.recordAbortMetric("embed",a?.customLabels)),c}finally{let c=performance.now()-n;this.updateLatencyMetrics("embed",c,a?.customLabels),this.updateErrorMetrics("embed",r,a?.customLabels),!r&&s&&this.recordEmbedMetrics(e,s,a)}}async _embed1(e,t){let n=this.getEmbedModel(e.embedModel)??e.embedModel??this.defaults.embedModel;if(!n)throw new Error("No embed model defined");return this.tracer?await this.tracer.startActiveSpan("AI Embed Request",{kind:ht.SERVER,attributes:{[ve.LLM_SYSTEM]:this.name,[ve.LLM_OPERATION_NAME]:"embeddings",[ve.LLM_REQUEST_MODEL]:n}},t?.traceContext??tn.active(),async r=>await this._embed2(n,e,t,r)):await this._embed2(n,e,t)}async _embed2(e,t,n,r){if(!this.aiImpl.createEmbedReq)throw new Error("createEmbedReq not implemented");if(!this.aiImpl.createEmbedResp)throw new Error("createEmbedResp not implemented");let s=this.aiImpl.createEmbedReq.bind(this.aiImpl),i=n?.debug??this.#e,a=n?.verbose??this.#t,c={...t,embedModel:e};this.lastUsedEmbedModel=e,i&&Mu(c.texts??[],e,n?.logger??this.logger);let u=async()=>{let[g,m]=await s(c,n);return await ct({name:g.name,url:g.url??this.apiURL,localCall:g.localCall,headers:await this.buildHeaders(g.headers),verbose:a,fetch:this.fetch,timeout:this.timeout,span:r,abortSignal:n?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:n?.retry??this.retry},m)},l=n?.rateLimiter??this.rt,p=l?await l(u,{modelUsage:this.embedModelUsage}):await u(),d=this.aiImpl.createEmbedResp?.(p);if(d.sessionId=n?.sessionId,!d.modelUsage){let g=this.aiImpl.getTokenUsage();g&&(d.modelUsage={ai:this.name,model:e,tokens:g})}return this.embedModelUsage=d.modelUsage,this.recordTokenUsage(d.modelUsage,n?.customLabels,"embed"),r?.isRecording()&&d.modelUsage?.tokens&&r.addEvent(Pt.GEN_AI_USAGE,{[ve.LLM_USAGE_INPUT_TOKENS]:d.modelUsage.tokens.promptTokens,[ve.LLM_USAGE_OUTPUT_TOKENS]:d.modelUsage.tokens.completionTokens??0,[ve.LLM_USAGE_TOTAL_TOKENS]:d.modelUsage.tokens.totalTokens}),i&&Pu(d.embeddings,n?.logger??this.logger),r?.end(),d}async buildHeaders(e={}){return{...e,...await this.headers()}}getModelByKey(e){return e?this.models?.find(n=>n.key===e):void 0}getModel(e){let t=this.getModelByKey(e);return t&&"model"in t?t.model:void 0}getEmbedModel(e){let t=this.getModelByKey(e);return t&&"embedModel"in t?t.embedModel:void 0}async handleContextCaching(e,t,n,r){let s=n?.contextCache;if(!s)return null;let i=this.aiImpl.supportsContextCache?.(e)??!1,a=this.aiImpl.supportsImplicitCaching?.(e)??!1;if(!i&&!a)throw new Error(`Context caching is not supported by this provider/model (${this.getName()}/${e}). Remove the contextCache option or use a provider that supports caching.`);if(!i)return null;let c=s.ttlSeconds??3600,u=s.refreshWindowSeconds??300,l=s.minTokens??2048;if(s.name)return this.useCacheByName(e,t,s.name,n,r);let p=this.getContextCacheToolState(t,s),d=Sg(t,p);if(!d||d===yt("sha256").digest("hex"))return null;let g={providerName:this.getName(),model:String(e),contentHash:d},m=Ig(g),f=Date.now(),h=s.registry,x=h?await h.get(m):Vi.get(m);if(x&&x.expiresAt>f){if(x.expiresAt-f<u*1e3&&this.aiImpl.buildCacheUpdateTTLOp){await this.executeCacheOperation(this.aiImpl.buildCacheUpdateTTLOp(x.cacheName,c,t.model,n?.noBeta),n,r);let R={cacheName:x.cacheName,expiresAt:f+c*1e3,tokenCount:x.tokenCount};h?await h.set(m,R):Vi.set(m,{...R,contentHash:d,lastTouchedAt:f})}return this.useCacheByName(e,t,x.cacheName,n,r)}if(this.estimateCacheableTokens(t,p)<l)return null;let y=this.aiImpl.buildCacheCreateOp?.(t,n);if(y){let C=await this.executeCacheOperation(y,n,r);if(C){let R={cacheName:C.name,expiresAt:new Date(C.expiresAt).getTime(),tokenCount:C.tokenCount};return h?await h.set(m,R):Vi.set(m,{...R,contentHash:d,lastTouchedAt:f}),this.useCacheByName(e,t,C.name,n,r)}}return null}async useCacheByName(e,t,n,r,s){if(this.aiImpl.prepareCachedChatReq){let i=await this.aiImpl.prepareCachedChatReq(t,r??{},n);return{preparedRequest:{apiConfig:i.apiConfig,request:i.request}}}return null}getContextCacheToolState(e,t){if(t)return this.aiImpl.getContextCacheToolState?.(e,{contextCache:t})??wg(e)}async executeCacheOperation(e,t,n){let r=t?.verbose??this.#t;try{n?.addEvent("context_cache.operation",{type:e.type,endpoint:e.apiConfig.name});let s=await ct({name:e.apiConfig.name,url:e.apiConfig.url??this.apiURL,localCall:e.apiConfig.localCall,headers:await this.buildHeaders(e.apiConfig.headers),stream:!1,timeout:this.timeout,verbose:r,fetch:this.fetch,span:n,abortSignal:t?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:t?.retry??this.retry},e.request);return e.parseResponse(s)}catch(s){n?.addEvent("context_cache.error",{type:e.type,error:s instanceof Error?s.message:String(s)});return}}estimateCacheableTokens(e,t){let{chatPrompt:n}=e,r=0;for(let s of n){if(s.role==="system"){r+=s.content.length;continue}if("cache"in s&&s.cache)if(s.role==="user"){if(typeof s.content=="string")r+=s.content.length;else if(Array.isArray(s.content))for(let i of s.content)"cache"in i&&i.cache&&(i.type==="text"?r+=i.text.length:i.type==="image"?r+=1e3:i.type==="audio"?r+=2e3:i.type==="file"&&(r+=500))}else if(s.role==="assistant"){if(s.content&&(r+=s.content.length),s.functionCalls)for(let i of s.functionCalls)r+=i.function.name.length,r+=Zu(i.function.params).length}else s.role==="function"&&(r+=s.functionId.length,r+=s.result.length)}return t&&(r+=Ji(t).length),Math.ceil(r/4)}};function Yu(o,e,t){let n=[];if(o.chatPrompt&&Array.isArray(o.chatPrompt)&&o.chatPrompt.length>0)for(let s of o.chatPrompt)switch(s.role){case"system":if(s.content){let i={};t||(i.content=s.content),e.addEvent(Pt.GEN_AI_SYSTEM_MESSAGE,i)}break;case"user":if(typeof s.content=="string")n.push(s.content);else if(Array.isArray(s.content))for(let i of s.content)i.type==="text"&&n.push(i.text);break;case"assistant":{let i=s.functionCalls?.map(a=>({id:a.id,type:a.type,function:a.function.name,arguments:a.function.params}));if(i&&i.length>0){let a={function_calls:JSON.stringify(i,null,2)};!t&&s.content&&(a.content=s.content),e.addEvent(Pt.GEN_AI_ASSISTANT_MESSAGE,a)}else if(s.content){let a={};t||(a.content=s.content),e.addEvent(Pt.GEN_AI_ASSISTANT_MESSAGE,a)}break}case"function":{let i={id:s.functionId};t||(i.content=s.result),e.addEvent(Pt.GEN_AI_TOOL_MESSAGE,i);break}}let r={};t||(r.content=n.join(`
|
|
181
|
-
`)),e.addEvent(Pt.GEN_AI_USER_MESSAGE,r)}function Xu(o,e,t){if(o.modelUsage?.tokens){let n=o.modelUsage.tokens.thoughtsTokens?{[ve.LLM_USAGE_THOUGHTS_TOKENS]:o.modelUsage.tokens.thoughtsTokens}:{};e.addEvent(Pt.GEN_AI_USAGE,{[ve.LLM_USAGE_INPUT_TOKENS]:o.modelUsage.tokens.promptTokens,[ve.LLM_USAGE_OUTPUT_TOKENS]:o.modelUsage.tokens.completionTokens??0,[ve.LLM_USAGE_TOTAL_TOKENS]:o.modelUsage.tokens.totalTokens,...n})}if(o.results)for(let n=0;n<o.results.length;n++){let r=o.results[n];if(!r||!r.content&&!r.thought&&!r.functionCalls?.length&&!r.finishReason)continue;let s=r.functionCalls?.map(a=>({id:a.id,type:a.type,function:a.function.name,arguments:a.function.params})),i={};s&&s.length>0?(t||(i.content=r.content),i.tool_calls=s):t||(i.content=r.content??""),e.addEvent(Pt.GEN_AI_CHOICE,{finish_reason:r.finishReason,index:n,message:JSON.stringify(i,null,2)})}}function Qi(o){let e=0;for(let t of o){if(!t||typeof t!="object")throw new Error(`AxMessage array validation failed: Item at index ${e} is not a valid message object`);if(t.role!=="user"&&t.role!=="assistant")throw new Error(`AxMessage array validation failed: Item at index ${e} has invalid role: ${t.role}`);e++}}function kg(o){let e=new Set;for(let t of o){if(e.has(t.key))throw new Error(`Duplicate model key detected: "${t.key}". Each model key must be unique.`);e.add(t.key)}}var Dr=(h=>(h.Claude46Opus="claude-opus-4-6",h.Claude46Sonnet="claude-sonnet-4-6",h.Claude45Opus="claude-opus-4-5-20251101",h.Claude41Opus="claude-opus-4-1-20250805",h.Claude4Opus="claude-opus-4-20250514",h.Claude4Sonnet="claude-sonnet-4-20250514",h.Claude45Sonnet="claude-sonnet-4-5-20250929",h.Claude45Haiku="claude-haiku-4-5",h.Claude37Sonnet="claude-3-7-sonnet-latest",h.Claude35Sonnet="claude-3-5-sonnet-latest",h.Claude35Haiku="claude-3-5-haiku-latest",h.Claude3Opus="claude-3-opus-latest",h.Claude3Sonnet="claude-3-sonnet-20240229",h.Claude3Haiku="claude-3-haiku-20240307",h.Claude21="claude-2.1",h.ClaudeInstant12="claude-instant-1.2",h))(Dr||{}),Ur=(m=>(m.Claude46Opus="claude-opus-4-6",m.Claude46Sonnet="claude-sonnet-4-6",m.Claude45Opus="claude-opus-4-5@20251101",m.Claude41Opus="claude-opus-4-1@20250805",m.Claude4Opus="claude-opus-4@20250514",m.Claude45Sonnet="claude-sonnet-4-5@20250929",m.Claude4Sonnet="claude-sonnet-4@20250514",m.Claude37Sonnet="claude-3-7-sonnet@20250219",m.Claude35SonnetV2="claude-3-5-sonnet-v2@20241022",m.Claude45Haiku="claude-haiku-4-5@20251001",m.Claude35Haiku="claude-3-5-haiku@20241022",m.Claude35Sonnet="claude-3-5-sonnet@20240620",m.Claude3Opus="claude-3-opus@20240229",m.Claude3Haiku="claude-3-haiku@20240307",m))(Ur||{});var Gr=[{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:128e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:128e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5-20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5@20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5-20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5@20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-haiku-4-5",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-haiku-4-5@20251001",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-opus-4-1-20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-1@20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4@20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4@20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet@20250219",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet@20240620",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet-v2@20241022",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-haiku-latest",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:4,cacheReadTokenCostPer1M:.08,cacheWriteTokenCostPer1M:1,maxTokens:8192},{name:"claude-3-5-haiku@20241022",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:8192},{name:"claude-3-opus-latest",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-opus@20240229",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-sonnet-20240229",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-haiku-20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,maxTokens:4096},{name:"claude-3-haiku@20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,maxTokens:4096},{name:"claude-2.1",currency:"usd",promptTokenCostPer1M:8,completionTokenCostPer1M:25,maxTokens:4096},{name:"claude-instant-1.2",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:2.24,maxTokens:4096}];var nn=o=>{if(!o||typeof o!="object")return o;let e={...o};if(e.type==="object"||Array.isArray(e.type)&&e.type.includes("object")){if(!e.properties||Object.keys(e.properties).length===0)return e;e.additionalProperties===void 0&&(e.additionalProperties=!1)}return delete e.optional,e.properties&&typeof e.properties=="object"&&(e.properties=Object.fromEntries(Object.entries(e.properties).map(([n,r])=>[n,nn(r)]))),e.items&&(e.items=nn(e.items)),Array.isArray(e.anyOf)&&(e.anyOf=e.anyOf.map(n=>nn(n))),Array.isArray(e.allOf)&&(e.allOf=e.allOf.map(n=>nn(n))),Array.isArray(e.oneOf)&&(e.oneOf=e.oneOf.map(n=>nn(n))),e},Xi=()=>structuredClone({model:"claude-3-7-sonnet-latest",maxTokens:4e4,thinkingTokenBudgetLevels:{minimal:1024,low:5e3,medium:1e4,high:2e4,highest:32e3},effortLevelMapping:{minimal:"low",low:"low",medium:"medium",high:"high",highest:"max"},...Le()}),tl=()=>structuredClone({model:"claude-3-7-sonnet@20250219",maxTokens:4e4,thinkingTokenBudgetLevels:{minimal:1024,low:5e3,medium:1e4,high:2e4,highest:32e3},effortLevelMapping:{minimal:"low",low:"low",medium:"medium",high:"high",highest:"max"},...Le()}),Yi=class{constructor(e,t){this.config=e;this.isVertex=t}tokensUsed;currentPromptConfig;usedStructuredOutput=!1;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens??4096,temperature:e.temperature,topP:e.topP,topK:e.topK,stream:e.stream,stopSequences:e.stopSequences,endSequences:e.endSequences,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,n:e.n}}createChatReq=async(e,t)=>{this.currentPromptConfig=t;let n=e.model,r=e.modelConfig?.stream??this.config.stream,s;this.isVertex?s={name:r?`/models/${n}:streamRawPredict?alt=sse`:`/models/${n}:rawPredict`}:s={name:"/messages"};let i;if(e.functionCall&&e.functions&&e.functions.length>0)if(typeof e.functionCall=="string")switch(e.functionCall){case"auto":i={tool_choice:{type:"auto"}};break;case"required":i={tool_choice:{type:"any"}};break;case"none":throw new Error("functionCall none not supported")}else if("function"in e.functionCall)i={tool_choice:{type:"tool",name:e.functionCall.function.name}};else throw new Error("Invalid function call type, must be string or object");let a=e.chatPrompt.some(k=>"cache"in k&&k.cache)||e.functions?.some(k=>k.cache),c=e.chatPrompt.filter(k=>k.role==="system"),u=c.map((k,_)=>({type:"text",text:k.content,...k.cache||a&&_===c.length-1?{cache_control:{type:"ephemeral"}}:{}})),l=e.chatPrompt.filter(k=>k.role!=="system"),p=e.functions?.map((k,_,$)=>{let B={type:"object",properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]},U=k.parameters?nn(k.parameters):void 0;return U===void 0||U&&typeof U=="object"&&Object.keys(U).length===0?U={...B}:U&&typeof U=="object"&&U.type==="object"&&(!("properties"in U)||!U.properties||Object.keys(U.properties).length===0)&&(U={...U,properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]}),{name:k.name,description:k.description,input_schema:U,...k.cache||a&&_===$.length-1?{cache_control:{type:"ephemeral"}}:{}}}),g=(this.config.tools??[]).map(k=>k&&typeof k=="object"&&"type"in k?k:{name:k.name,description:k.description,input_schema:k.input_schema?nn(k.input_schema):void 0,...k.cache_control?{cache_control:k.cache_control}:{}}),m=[...p??[],...g];m.length===0&&(m=void 0);let f=e.modelConfig?.maxTokens??this.config.maxTokens,h=e.modelConfig?.stopSequences??this.config.stopSequences,x=e.modelConfig?.temperature,A=e.modelConfig?.topP,y=e.modelConfig?.topK??this.config.topK,C=e.modelConfig?.n??this.config.n;if(C&&C>1)throw new Error("Anthropic does not support sampling (n > 1)");let R=k=>k.includes("claude-opus-4-6"),I=k=>k.includes("claude-opus-4-5"),M,F,P=n;if(t?.thinkingTokenBudget){let k=this.config.thinkingTokenBudgetLevels,_=this.config.effortLevelMapping;if(t.thinkingTokenBudget==="none")M=void 0,F=void 0;else{let $=t.thinkingTokenBudget;if(R(P))M={type:"adaptive"},F={effort:_?.[$]??"medium"};else if(I(P)){M={type:"enabled",budget_tokens:k?.[$]??1e4};let U=_?.[$]??"medium";U==="max"&&(U="high"),F={effort:U}}else M={type:"enabled",budget_tokens:k?.[$]??1e4}}}let T=Og(l,!!M);T.some(k=>k.role==="assistant"&&Array.isArray(k.content)&&k.content.length>0&&k.content[0]?.type==="tool_use")&&(M=void 0,F=void 0);let O;if(this.usedStructuredOutput=!1,e.responseFormat&&e.responseFormat.type==="json_schema"&&e.responseFormat.schema){let k=e.responseFormat.schema.schema||e.responseFormat.schema;O={type:"json_schema",schema:nn(k)},this.usedStructuredOutput=!0}let S={...this.isVertex?{anthropic_version:"vertex-2023-10-16"}:{model:n},...f?{max_tokens:f}:{},...h&&h.length>0?{stop_sequences:h}:{},...x!==void 0&&!M?{temperature:x}:{},...A!==void 0&&(!M||A>=.95)?{top_p:A}:{},...y&&!M?{top_k:y}:{},...i,...m?{tools:m}:{},...r?{stream:!0}:{},...u?{system:u}:{},...M?{thinking:M}:{},...F?{output_config:F}:{},...O?{output_format:O}:{},messages:T};return[s,S]};createChatResp=e=>{if(e.type==="error")throw new We(e.error.message,void 0,void 0);let t=el(e.stop_reason),n=this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1,r="",s=[],i=[],a=[];for(let l of e.content)switch(l.type){case"text":if(r+=l.text??"",Array.isArray(l.citations))for(let p of l.citations)p?.url&&a.push({url:String(p.url),title:typeof p.title=="string"?p.title:void 0,snippet:typeof p.cited_text=="string"?p.cited_text:void 0});break;case"thinking":if(n){let p=l.thinking??"",d=l.signature;i.push({data:p,encrypted:!1,...typeof d=="string"?{signature:d}:{}})}break;case"redacted_thinking":if(n){let p=l.data??"",d=l.signature;i.push({data:p,encrypted:!0,...typeof d=="string"?{signature:d}:{}})}break;case"tool_use":s.push({id:l.id,type:"function",function:{name:l.name,params:l.input}});break}let c={index:0,id:e.id,finishReason:t};r&&(c.content=r),i.length>0&&(c.thoughtBlocks=i,c.thought=i.map(l=>l.data).join("")),s.length>0&&(c.functionCalls=s),a.length>0&&(c.citations=a);let u=[c];return this.tokensUsed={promptTokens:e.usage.input_tokens,completionTokens:e.usage.output_tokens,totalTokens:e.usage.input_tokens+e.usage.output_tokens+(e.usage.cache_creation_input_tokens||0)+(e.usage.cache_read_input_tokens||0),cacheCreationTokens:e.usage.cache_creation_input_tokens,cacheReadTokens:e.usage.cache_read_input_tokens},{results:u,remoteId:e.id}};createChatStreamResp=(e,t)=>{if(!("type"in e))throw new Error("Invalid Anthropic streaming event");let n=t;if(n.indexIdMap||(n.indexIdMap={}),e.type==="error"){let{error:s}=e;throw new We(s.message,void 0,void 0)}let r=0;if(e.type==="message_start"){let{message:s}=e,i=[{index:r,content:"",id:s.id}];return this.tokensUsed={promptTokens:s.usage?.input_tokens??0,completionTokens:s.usage?.output_tokens??0,totalTokens:(s.usage?.input_tokens??0)+(s.usage?.output_tokens??0)+(s.usage?.cache_creation_input_tokens??0)+(s.usage?.cache_read_input_tokens??0),cacheCreationTokens:s.usage?.cache_creation_input_tokens,cacheReadTokens:s.usage?.cache_read_input_tokens},{results:i}}if(e.type==="content_block_start"){let{content_block:s}=e;if(s.type==="text"){let i=[];if(Array.isArray(s.citations))for(let a of s.citations)a?.url&&i.push({url:String(a.url),title:typeof a.title=="string"?a.title:void 0,snippet:typeof a.cited_text=="string"?a.cited_text:void 0});return{results:[{index:r,content:s.text,...i.length?{citations:i}:{}}]}}if(s.type==="thinking")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:r,thought:s.thinking,thoughtBlocks:[{data:s.thinking,encrypted:!1}]}]}:{results:[{index:r,content:""}]};if(s.type==="tool_use"&&typeof s.id=="string"&&typeof e.index=="number"&&!n.indexIdMap[e.index]){n.indexIdMap[e.index]=s.id;let i=[{id:s.id,type:"function",function:{name:s.name,params:""}}];return{results:[{index:r,functionCalls:i}]}}if(s.type==="web_search_tool_result"||s.type==="server_tool_use")return{results:[{index:r,content:""}]}}if(e.type==="content_block_delta"){let{delta:s}=e;if(s.type==="citations_delta"){let i=s.citation;if(i&&typeof i.url=="string"&&i.url.length>0){let a=[{url:String(i.url),title:typeof i.title=="string"?i.title:void 0,snippet:typeof i.cited_text=="string"?i.cited_text:void 0}];return{results:[{index:r,content:"",citations:a}]}}return{results:[{index:r,content:""}]}}if(s.type==="text_delta"){let i=[];if(Array.isArray(s.citations))for(let a of s.citations)a?.url&&i.push({url:String(a.url),title:typeof a.title=="string"?a.title:void 0,snippet:typeof a.cited_text=="string"?a.cited_text:void 0});return{results:[{index:r,content:s.text,...i.length?{citations:i}:{}}]}}if(s.type==="thinking_delta")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:r,thought:s.thinking,thoughtBlocks:[{data:s.thinking,encrypted:!1}]}]}:{results:[{index:r,content:""}]};if(s.type==="signature_delta")return{results:[{index:r,thoughtBlocks:[{data:"",encrypted:!1,signature:s.signature}]}]};if(s.type==="input_json_delta"){let i=n.indexIdMap[e.index];if(!i)return{results:[{index:r,content:""}]};let a=[{id:i,type:"function",function:{name:"",params:s.partial_json}}];return{results:[{index:r,functionCalls:a}]}}}if(e.type==="message_delta"){let{delta:s,usage:i}=e;return this.tokensUsed={promptTokens:this.tokensUsed?.promptTokens??0,completionTokens:i.output_tokens,totalTokens:(this.tokensUsed?.promptTokens??0)+i.output_tokens+(this.tokensUsed?.cacheCreationTokens??0)+(this.tokensUsed?.cacheReadTokens??0),cacheCreationTokens:this.tokensUsed?.cacheCreationTokens,cacheReadTokens:this.tokensUsed?.cacheReadTokens},{results:[{index:r,content:"",finishReason:el(s.stop_reason)}]}}return{results:[{index:r,content:""}]}};supportsImplicitCaching=()=>!0},Mn=class o extends Xe{static create(e){return new o(e)}constructor({apiKey:e,projectId:t,region:n,config:r,options:s,models:i}){let a=t!==void 0&&n!==void 0,c,u;if(a){if(!e)throw new Error("Anthropic Vertex API key not set");if(typeof e!="function")throw new Error("Anthropic Vertex API key must be a function for token-based authentication");c=`https://${n==="global"?"aiplatform":`${n}-aiplatform`}.googleapis.com/v1/projects/${t}/locations/${n}/publishers/anthropic/`,u=async()=>({Authorization:`Bearer ${await e()}`,"anthropic-beta":"web-search-2025-03-05"})}else{if(!e)throw new Error("Anthropic API key not set");c="https://api.anthropic.com/v1",u=async()=>({"anthropic-version":"2023-06-01","anthropic-beta":"structured-outputs-2025-11-13, web-search-2025-03-05","x-api-key":typeof e=="function"?await e():e})}let l={...Xi(),...r},p=new Yi(l,a),d=m=>{let f=Tt({model:m,modelInfo:Gr,models:i});return{functions:!0,streaming:!0,hasThinkingBudget:f?.supported?.thinkingBudget??!1,hasShowThoughts:f?.supported?.showThoughts??!1,structuredOutputs:f?.supported?.structuredOutputs??!1,functionCot:!0,media:{images:{supported:!0,formats:["image/jpeg","image/png","image/gif","image/webp"],maxSize:5*1024*1024,detailLevels:["high","low","auto"]},audio:{supported:!1,formats:[],maxDuration:0},files:{supported:!1,formats:[],maxSize:0,uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!0,types:["ephemeral"],cacheBreakpoints:!1},thinking:f?.supported?.thinkingBudget??!1,multiTurn:!0}},g=i?.map(m=>{let f=m,h=f?.config;if(!h)return m;let x={};h.maxTokens!==void 0&&(x.maxTokens=h.maxTokens),h.temperature!==void 0&&(x.temperature=h.temperature),h.topP!==void 0&&(x.topP=h.topP),h.topK!==void 0&&(x.topK=h.topK),h.presencePenalty!==void 0&&(x.presencePenalty=h.presencePenalty),h.frequencyPenalty!==void 0&&(x.frequencyPenalty=h.frequencyPenalty),h.stopSequences!==void 0&&(x.stopSequences=h.stopSequences),h.endSequences!==void 0&&(x.endSequences=h.endSequences),h.stream!==void 0&&(x.stream=h.stream),h.n!==void 0&&(x.n=h.n);let A={...f};Object.keys(x).length>0&&(A.modelConfig={...f.modelConfig??{},...x});let y=h.thinking?.thinkingTokenBudget;if(typeof y=="number"){let C=l.thinkingTokenBudgetLevels,R=[["minimal",C?.minimal??1024],["low",C?.low??5e3],["medium",C?.medium??1e4],["high",C?.high??2e4],["highest",C?.highest??32e3]],I="minimal",M=Number.POSITIVE_INFINITY;for(let[F,P]of R){let N=Math.abs(y-P);N<M&&(M=N,I=F)}A.thinkingTokenBudget=I}return h.thinking?.includeThoughts!==void 0&&(A.showThoughts=!!h.thinking.includeThoughts),A});super(p,{name:"Anthropic",apiURL:c,headers:u,modelInfo:Gr,defaults:{model:l.model},options:s,supportFor:d,models:g??i})}};function Og(o,e){let t=o.map(r=>{switch(r.role){case"function":return{role:"user",content:[{type:"tool_result",content:r.result,tool_use_id:r.functionId,...r.isError?{is_error:!0}:{},...r.cache?{cache:{type:"ephemeral"}}:{}}]};case"user":return typeof r.content=="string"?{role:"user",content:r.content,...r.cache?{cache_control:{type:"ephemeral"}}:{}}:{role:"user",content:r.content.map(i=>{switch(i.type){case"text":return{type:"text",text:i.text,...i.cache?{cache_control:{type:"ephemeral"}}:{}};case"image":return{type:"image",source:{type:"base64",media_type:i.mimeType,data:i.image},...i.cache?{cache_control:{type:"ephemeral"}}:{}};default:throw new Error("Invalid content type")}})};case"assistant":{let s="",i=[],a=r.thoughtBlocks;if(Array.isArray(a)&&a.length>0)for(let c of a)c.encrypted?i.push(c.signature?{type:"redacted_thinking",data:c.data,signature:c.signature}:{type:"redacted_thinking",data:c.data}):i.push(c.signature?{type:"thinking",thinking:c.data,signature:c.signature}:{type:"thinking",thinking:c.data});if(typeof r.content=="string"&&(i.length>0?s=[...i,{type:"text",text:r.content}]:s=r.content),typeof r.functionCalls<"u"&&(s=r.functionCalls.map(c=>{let u={};if(typeof c.function.params=="string"){let l=c.function.params;if(l.trim().length===0)u={};else try{u=JSON.parse(l)}catch{throw new Error(`Failed to parse function params JSON: ${l}`)}}else typeof c.function.params=="object"&&(u=c.function.params);return{type:"tool_use",id:c.id,name:c.function.name,input:u,...r.cache?{cache_control:{type:"ephemeral"}}:{}}}),Array.isArray(s)&&i.length>0&&(s=[...i,...s])),r.cache){if(typeof s=="string")s=[{type:"text",text:s,cache_control:{type:"ephemeral"}}];else if(Array.isArray(s)&&s.length>0){let c=s.length-1,u=s[c];u&&u.type==="text"&&(s[c]={...u,cache_control:{type:"ephemeral"}})}}return{role:"assistant",content:s}}default:throw new Error("Invalid role")}}),n=Eg(t);return Mg(n)}function Eg(o){let e=[];for(let[t,n]of o.entries()){if(n.role!=="assistant"){e.push(n);continue}if(t>0&&o.at(t-1)?.role==="assistant"){let r=e.pop();e.push({...r||{},...n})}else e.push(n)}return e}function Mg(o){return o.map(e=>e.role==="assistant"&&typeof e.content=="string"?{...e,content:e.content.replace(/\s+$/,"")}:e)}function el(o){if(o)switch(o){case"stop_sequence":return"stop";case"max_tokens":return"length";case"tool_use":return"function_call";case"end_turn":return"stop";default:return"stop"}}var Br=(D=>(D.GPT4="gpt-4",D.GPT41="gpt-4.1",D.GPT41Mini="gpt-4.1-mini",D.GPT41Nano="gpt-4.1-nano",D.GPT4O="gpt-4o",D.GPT4OMini="gpt-4o-mini",D.GPT4ChatGPT4O="chatgpt-4o-latest",D.GPT4Turbo="gpt-4-turbo",D.GPT35Turbo="gpt-3.5-turbo",D.GPT35TurboInstruct="gpt-3.5-turbo-instruct",D.GPT35TextDavinci002="text-davinci-002",D.GPT3TextBabbage002="text-babbage-002",D.GPT3TextAda001="text-ada-001",D.GPT5="gpt-5",D.GPT5Nano="gpt-5-nano",D.GPT5Mini="gpt-5-mini",D.GPT5Chat="gpt-5-chat",D.GPT5ChatLatest="gpt-5-chat-latest",D.GPT5Codex="gpt-5-codex",D.GPT5Pro="gpt-5-pro",D.GPT51="gpt-5.1",D.GPT51ChatLatest="gpt-5.1-chat-latest",D.GPT51Codex="gpt-5.1-codex",D.GPT51CodexMini="gpt-5.1-codex-mini",D.GPT51CodexMax="gpt-5.1-codex-max",D.GPT52="gpt-5.2",D.GPT52ChatLatest="gpt-5.2-chat-latest",D.GPT52Codex="gpt-5.2-codex",D.GPT52Pro="gpt-5.2-pro",D.GPT54="gpt-5.4",D.GPT54Mini="gpt-5.4-mini",D.GPT54Nano="gpt-5.4-nano",D.O1="o1",D.O1Mini="o1-mini",D.O3="o3",D.O3Mini="o3-mini",D.O4Mini="o4-mini",D))(Br||{}),Pn=(n=>(n.TextEmbeddingAda002="text-embedding-ada-002",n.TextEmbedding3Small="text-embedding-3-small",n.TextEmbedding3Large="text-embedding-3-large",n))(Pn||{});var Fn=(J=>(J.GPT4="gpt-4",J.GPT41="gpt-4.1",J.GPT41Mini="gpt-4.1-mini",J.GPT41Nano="gpt-4.1-nano",J.GPT4O="gpt-4o",J.GPT4OMini="gpt-4o-mini",J.GPT4ChatGPT4O="chatgpt-4o-latest",J.GPT4Turbo="gpt-4-turbo",J.GPT35Turbo="gpt-3.5-turbo",J.GPT35TurboInstruct="gpt-3.5-turbo-instruct",J.GPT35TextDavinci002="text-davinci-002",J.GPT3TextBabbage002="text-babbage-002",J.GPT3TextAda001="text-ada-001",J.GPT5="gpt-5",J.GPT5Nano="gpt-5-nano",J.GPT5Mini="gpt-5-mini",J.GPT5Chat="gpt-5-chat",J.GPT5ChatLatest="gpt-5-chat-latest",J.GPT5Codex="gpt-5-codex",J.GPT5Pro="gpt-5-pro",J.GPT51="gpt-5.1",J.GPT51ChatLatest="gpt-5.1-chat-latest",J.GPT51Codex="gpt-5.1-codex",J.GPT51CodexMini="gpt-5.1-codex-mini",J.GPT51CodexMax="gpt-5.1-codex-max",J.GPT52="gpt-5.2",J.GPT52ChatLatest="gpt-5.2-chat-latest",J.GPT52Codex="gpt-5.2-codex",J.GPT52Pro="gpt-5.2-pro",J.GPT54="gpt-5.4",J.GPT54Mini="gpt-5.4-mini",J.GPT54Nano="gpt-5.4-nano",J.O1Pro="o1-pro",J.O1="o1",J.O1Mini="o1-mini",J.O3Pro="o3-pro",J.O3="o3",J.O3Mini="o3-mini",J.O4Mini="o4-mini",J))(Fn||{});var _n=[{name:"gpt-4",currency:"usd",promptTokenCostPer1M:30,completionTokenCostPer1M:60},{name:"gpt-4.1",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,supported:{structuredOutputs:!0}},{name:"gpt-4.1-mini",currency:"usd",promptTokenCostPer1M:.4,completionTokenCostPer1M:1.6,supported:{structuredOutputs:!0}},{name:"gpt-4.1-nano",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,supported:{structuredOutputs:!0}},{name:"gpt-4o",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:15,supported:{structuredOutputs:!0}},{name:"gpt-4o-mini",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:.6,supported:{structuredOutputs:!0}},{name:"chatgpt-4o-latest",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:15,supported:{structuredOutputs:!0}},{name:"gpt-4-turbo",currency:"usd",promptTokenCostPer1M:10,completionTokenCostPer1M:30,supported:{structuredOutputs:!0}},{name:"gpt-3.5-turbo",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5},{name:"gpt-5-nano",currency:"usd",promptTokenCostPer1M:.05,completionTokenCostPer1M:.4,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-chat",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-pro",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:120,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-codex",currency:"usd",promptTokenCostPer1M:10,completionTokenCostPer1M:40,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-codex",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-codex-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-codex-max",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:20,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2-chat-latest",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2-codex",currency:"usd",promptTokenCostPer1M:1.5,completionTokenCostPer1M:6,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2-pro",currency:"usd",promptTokenCostPer1M:20,completionTokenCostPer1M:160,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.4",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:15,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.4-mini",currency:"usd",promptTokenCostPer1M:.75,completionTokenCostPer1M:4.5,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.4-nano",currency:"usd",promptTokenCostPer1M:.2,completionTokenCostPer1M:1.25,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"o1",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:60,supported:{structuredOutputs:!0}},{name:"o1-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:14.4,supported:{structuredOutputs:!0}},{name:"o3",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:60,supported:{structuredOutputs:!0}},{name:"o4-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:4.4,supported:{structuredOutputs:!0}},{name:"text-embedding-ada-002",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.1},{name:"text-embedding-3-small",currency:"usd",promptTokenCostPer1M:.02,completionTokenCostPer1M:.02},{name:"text-embedding-3-large",currency:"usd",promptTokenCostPer1M:.13,completionTokenCostPer1M:.13}],Qo=[{name:"gpt-4",currency:"usd",promptTokenCostPer1M:30,completionTokenCostPer1M:60},{name:"gpt-4.1",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,supported:{structuredOutputs:!0}},{name:"gpt-4.1-mini",currency:"usd",promptTokenCostPer1M:.4,completionTokenCostPer1M:1.6,supported:{structuredOutputs:!0}},{name:"gpt-4.1-nano",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,supported:{structuredOutputs:!0}},{name:"gpt-4o",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:15,supported:{structuredOutputs:!0}},{name:"gpt-4o-mini",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:.6,supported:{structuredOutputs:!0}},{name:"chatgpt-4o-latest",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:15,supported:{structuredOutputs:!0}},{name:"gpt-4-turbo",currency:"usd",promptTokenCostPer1M:10,completionTokenCostPer1M:30,supported:{structuredOutputs:!0}},{name:"gpt-3.5-turbo",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5},{name:"gpt-5-nano",currency:"usd",promptTokenCostPer1M:.05,completionTokenCostPer1M:.4,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-chat",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-pro",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:120,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-codex",currency:"usd",promptTokenCostPer1M:10,completionTokenCostPer1M:40,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-codex",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-codex-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-codex-max",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:20,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2-chat-latest",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2-codex",currency:"usd",promptTokenCostPer1M:1.5,completionTokenCostPer1M:6,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2-pro",currency:"usd",promptTokenCostPer1M:20,completionTokenCostPer1M:160,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.4",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:15,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.4-mini",currency:"usd",promptTokenCostPer1M:.75,completionTokenCostPer1M:4.5,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.4-nano",currency:"usd",promptTokenCostPer1M:.2,completionTokenCostPer1M:1.25,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o1-pro",currency:"usd",promptTokenCostPer1M:150,completionTokenCostPer1M:600,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0},isExpensive:!0},{name:"o1",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:60,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o3-pro",currency:"usd",promptTokenCostPer1M:20,completionTokenCostPer1M:80,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0},isExpensive:!0},{name:"o3",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:60,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o3-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:4.4,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o4-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:4.4,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}}];var Pg=o=>{let e=["o1","o1-mini","o3","o3-mini","o4-mini","o1-pro","o3-pro"];return e.includes(o)||e.includes(o)},dn=()=>structuredClone({model:"gpt-5-mini",embedModel:"text-embedding-3-small",...Le()}),Yo=()=>structuredClone({...dn(),model:"gpt-5"}),Xo=()=>structuredClone({model:"gpt-5-mini",embedModel:"text-embedding-3-small",...Ze()}),Zo=()=>({...dn(),model:"gpt-5-nano"}),Zi=class{constructor(e,t,n,r,s){this.config=e;this.streamingUsage=t;this.chatReqUpdater=n;this.chatRespProcessor=r;this.chatStreamRespProcessor=s}tokensUsed;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,endSequences:e.endSequences,topP:e.topP,n:e.n,stream:e.stream}}createChatReq=(e,t)=>{let n=e.model;if(!e.chatPrompt||e.chatPrompt.length===0)throw new Error("Chat prompt is empty");let r={name:"/chat/completions"},s=e.functions?.map(g=>({type:"function",function:{name:g.name,description:g.description,parameters:g.parameters}})),i=!e.functionCall&&e.functions&&e.functions.length>0?"auto":e.functionCall,a=Fg(e),c=e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,u=e.modelConfig?.stream??this.config.stream,l=this.config.store,p=Pg(n),d={model:n,messages:a,...e.responseFormat?{response_format:e.responseFormat.type==="json_schema"?{type:"json_schema",json_schema:e.responseFormat.schema}:e.responseFormat}:this.config?.responseFormat?{response_format:{type:this.config.responseFormat}}:{},...s?{tools:s}:{},...i?{tool_choice:i}:{},...p?{}:{...(e.modelConfig?.maxTokens??this.config.maxTokens)!==void 0?{max_completion_tokens:e.modelConfig?.maxTokens??this.config.maxTokens}:{},...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},...e.modelConfig?.topP!==void 0?{top_p:e.modelConfig.topP}:{},...(e.modelConfig?.n??this.config.n)!==void 0?{n:e.modelConfig?.n??this.config.n}:{},...(e.modelConfig?.presencePenalty??this.config.presencePenalty)!==void 0?{presence_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty}:{},...c!==void 0?{frequency_penalty:c}:{}},...(e.modelConfig?.stopSequences??this.config.stop)&&(e.modelConfig?.stopSequences??this.config.stop).length>0?{stop:e.modelConfig?.stopSequences??this.config.stop}:{},...this.config.logitBias!==void 0?{logit_bias:this.config.logitBias}:{},...u&&this.streamingUsage?{stream:!0,stream_options:{include_usage:!0}}:{},...l?{store:l}:{},...this.config.serviceTier?{service_tier:this.config.serviceTier}:{},...this.config.user?{user:this.config.user}:{}};if(this.config.reasoningEffort&&(d.reasoning_effort=this.config.reasoningEffort),this.config.webSearchOptions&&(d.web_search_options={...this.config.webSearchOptions.searchContextSize&&{search_context_size:this.config.webSearchOptions.searchContextSize},...this.config.webSearchOptions.userLocation&&{user_location:{approximate:{type:"approximate",...this.config.webSearchOptions.userLocation.approximate.city&&{city:this.config.webSearchOptions.userLocation.approximate.city},...this.config.webSearchOptions.userLocation.approximate.country&&{country:this.config.webSearchOptions.userLocation.approximate.country},...this.config.webSearchOptions.userLocation.approximate.region&&{region:this.config.webSearchOptions.userLocation.approximate.region},...this.config.webSearchOptions.userLocation.approximate.timezone&&{timezone:this.config.webSearchOptions.userLocation.approximate.timezone}}}}}),t?.thinkingTokenBudget)switch(t.thinkingTokenBudget){case"none":d.reasoning_effort=void 0;break;case"minimal":d.reasoning_effort="minimal";break;case"low":d.reasoning_effort="medium";break;case"medium":d.reasoning_effort="high";break;case"high":d.reasoning_effort="high";break;case"highest":d.reasoning_effort="high";break}if(!d.reasoning_effort&&t?.thinkingTokenBudget)switch(t.thinkingTokenBudget){case"minimal":d.reasoning_effort="minimal";break;case"low":d.reasoning_effort="medium";break;case"medium":case"high":case"highest":d.reasoning_effort="high";break}return this.chatReqUpdater&&(d=this.chatReqUpdater(d,t)),[r,d]};createEmbedReq=e=>{let t=e.embedModel;if(!t)throw new Error("Embed model not set");if(!e.texts||e.texts.length===0)throw new Error("Embed texts is empty");let n={name:"/embeddings"},r={model:t,input:e.texts,dimensions:this.config.dimensions};return[n,r]};createChatResp(e){let{id:t,usage:n,choices:r,error:s}=e;if(s)throw s;this.tokensUsed=n?{promptTokens:n.prompt_tokens,completionTokens:n.completion_tokens,totalTokens:n.total_tokens}:void 0;let a={results:r.map(c=>{if(c.message.refusal)throw new We(c.message.refusal,e.model,e.id);let u=nl(c.finish_reason),l=c.message.tool_calls?.map(({id:p,function:{arguments:d,name:g}})=>({id:p,type:"function",function:{name:g,params:d}}));return{index:c.index,id:`${c.index}`,content:c.message.content??void 0,thought:c.message.reasoning_content,citations:c.message.annotations?.filter(p=>p?.type==="url_citation"&&p.url_citation).map(p=>({url:p.url_citation?.url,title:p.url_citation?.title,description:p.url_citation?.description})),functionCalls:l,finishReason:u}}),remoteId:t};return this.chatRespProcessor?this.chatRespProcessor(a):a}createChatStreamResp=(e,t)=>{let{id:n,usage:r,choices:s}=e;this.tokensUsed=r?{promptTokens:r.prompt_tokens,completionTokens:r.completion_tokens,totalTokens:r.total_tokens}:void 0;let i=t;i.indexIdMap||(i.indexIdMap={});let c={results:s.map(({index:u,delta:{content:l,role:p,refusal:d,tool_calls:g,reasoning_content:m,annotations:f},finish_reason:h})=>{if(d)throw new We(d,void 0,n);let x=nl(h),A=g?.map(({id:y,index:C,function:{name:R,arguments:I}})=>{typeof y=="string"&&typeof C=="number"&&!i.indexIdMap[C]&&(i.indexIdMap[C]=y);let M=i.indexIdMap[C];return M?{id:M,type:"function",function:{name:R,params:I}}:null}).filter(y=>y!==null);return{index:u,content:l??void 0,role:p,thought:m,citations:f?.filter(y=>y?.type==="url_citation"&&y.url_citation).map(y=>({url:y.url_citation?.url,title:y.url_citation?.title,description:y.url_citation?.description})),functionCalls:A,finishReason:x,id:n}})};return this.chatStreamRespProcessor?this.chatStreamRespProcessor(c,t):c};createEmbedResp(e){let{data:t,usage:n}=e;return this.tokensUsed=n?{promptTokens:n.prompt_tokens,completionTokens:n.completion_tokens,totalTokens:n.total_tokens}:void 0,{embeddings:t.map(r=>r.embedding)}}},nl=o=>{switch(o){case"stop":return"stop";case"length":return"length";case"content_filter":return"error";case"tool_calls":return"function_call"}};function Fg(o){return o.chatPrompt.map(t=>{switch(t.role){case"system":return{role:"system",content:t.content};case"user":{let n=Array.isArray(t.content)?t.content.map(r=>{switch(r.type){case"text":return{type:"text",text:r.text};case"image":return{type:"image_url",image_url:{url:`data:${r.mimeType};base64,${r.image}`,details:r.details??"auto"}};case"audio":return{type:"input_audio",input_audio:{data:r.data,format:r.format==="wav"?"wav":void 0}};default:throw new Error("Invalid content type")}}):t.content;return{role:"user",...t.name?{name:t.name}:{},content:n}}case"assistant":{let n=t.functionCalls?.map(r=>({id:r.id,type:"function",function:{name:r.function.name,arguments:typeof r.function.params=="object"?JSON.stringify(r.function.params):r.function.params}}));if(n&&n.length>0)return{role:"assistant",...t.content?{content:t.content}:{},name:t.name,tool_calls:n};if(t.content===void 0)throw new Error("Assistant content is required when no tool calls are provided");return{role:"assistant",content:t.content,...t.name?{name:t.name}:{}}}case"function":return{role:"tool",content:t.result,tool_call_id:t.functionId};default:throw new Error("Invalid role")}})}var Qe=class extends Xe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:s,models:i,chatReqUpdater:a,chatRespProcessor:c,chatStreamRespProcessor:u,supportFor:l}){if(!e||e==="")throw new Error("OpenAI API key not set");let p=new Zi(t,n?.streamingUsage??!0,a,c,u);super(p,{name:"OpenAI",apiURL:r||"https://api.openai.com/v1",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:s,defaults:{model:t.model,embedModel:t.embedModel},options:n,supportFor:l,models:i})}},Nn=class extends Qe{constructor({apiKey:e,apiURL:t,config:n,options:r,models:s,modelInfo:i}){if(!e||e==="")throw new Error("OpenAI API key not set");i=[..._n,...i??[]];let a=u=>{let l=Tt({model:u,modelInfo:i,models:s});return{functions:!0,streaming:!0,hasThinkingBudget:l?.supported?.thinkingBudget??!1,hasShowThoughts:l?.supported?.showThoughts??!1,structuredOutputs:l?.supported?.structuredOutputs??!1,media:{images:{supported:!0,formats:["image/jpeg","image/png","image/gif","image/webp"],maxSize:20*1024*1024,detailLevels:["high","low","auto"]},audio:{supported:!0,formats:["wav","mp3","ogg"],maxDuration:25*60},files:{supported:!0,formats:["text/plain","application/pdf","image/jpeg","image/png"],maxSize:512*1024*1024,uploadMethod:"upload"},urls:{supported:!1,webSearch:!0,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:l?.supported?.thinkingBudget??!1,multiTurn:!0}},c=s?.map(u=>{let l=u,p=l?.config;if(!p)return u;let d={};p.maxTokens!==void 0&&(d.maxTokens=p.maxTokens),p.temperature!==void 0&&(d.temperature=p.temperature),p.topP!==void 0&&(d.topP=p.topP),p.presencePenalty!==void 0&&(d.presencePenalty=p.presencePenalty),p.frequencyPenalty!==void 0&&(d.frequencyPenalty=p.frequencyPenalty);let g=p.stopSequences??p.stop;g!==void 0&&(d.stopSequences=g),p.n!==void 0&&(d.n=p.n),p.stream!==void 0&&(d.stream=p.stream);let m={...l};Object.keys(d).length>0&&(m.modelConfig={...l.modelConfig??{},...d});let f=p?.thinking?.thinkingTokenBudget;if(typeof f=="number"){let h=[["minimal",200],["low",800],["medium",5e3],["high",1e4],["highest",24500]],x="minimal",A=Number.POSITIVE_INFINITY;for(let[y,C]of h){let R=Math.abs(f-C);R<A&&(A=R,x=y)}m.thinkingTokenBudget=x}return p?.thinking?.includeThoughts!==void 0&&(m.showThoughts=!!p.thinking.includeThoughts),m});super({apiKey:e,apiURL:t,config:{...dn(),...n},options:r,modelInfo:i,models:c??s,supportFor:a}),super.setName("OpenAI")}};var _g=o=>{let e=o.trim();if(!e)return e;if(e.includes("api-version=")){let t=e.indexOf("api-version="),n=e.slice(t);return new URLSearchParams(n).get("api-version")??e}return e},Ng=o=>{let e=o.match(/^(\d{4}-\d{2}-\d{2})/);return e?e[1]>="2024-08-01":!1},ea=dn,rl=Xo,ol=Zo,sl=Yo,Ln=class extends Qe{constructor({apiKey:e,resourceName:t,deploymentName:n,version:r="api-version=2024-02-15-preview",config:s,options:i,models:a,modelInfo:c,chatReqUpdater:u}){if(!e||e==="")throw new Error("Azure OpenAPI API key not set");if(!t||t==="")throw new Error("Azure OpenAPI resource name not set");if(!n||n==="")throw new Error("Azure OpenAPI deployment id not set");let l={...ea(),...s},p=_g(r),d=Ng(p);c=[..._n,...c??[]];let g=f=>{let h=Tt({model:f,modelInfo:c,models:a});return{functions:!0,streaming:!0,hasThinkingBudget:h?.supported?.thinkingBudget??!1,hasShowThoughts:h?.supported?.showThoughts??!1,structuredOutputs:d&&(h?.supported?.structuredOutputs??!1),functionCot:!1,media:{images:{supported:!0,formats:["image/jpeg","image/png","image/gif","image/webp"],maxSize:20*1024*1024,detailLevels:["high","low","auto"]},audio:{supported:!1,formats:[],maxDuration:0},files:{supported:!1,formats:[],maxSize:0,uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:h?.supported?.thinkingBudget??!1,multiTurn:!0}};super({apiKey:e,config:l,options:i,models:a,modelInfo:c,supportFor:g,chatReqUpdater:u});let m=t.includes("://")?t:`https://${t}.openai.azure.com/`;super.setName("Azure OpenAI"),super.setAPIURL(new URL(`/openai/deployments/${n}?api-version=${p}`,m).href),super.setHeaders(async()=>({"api-key":e}))}};var es=class o{services;currentServiceIndex=0;currentService;debug;initialBackoffMs;maxBackoffMs;maxRetries;serviceFailures=new Map;constructor(e,t){if(e.length===0)throw new Error("No AI services provided.");Lg(e),this.services=[...e].sort(t?.comparator??o.metricComparator);let n=this.services[this.currentServiceIndex];if(n===void 0)throw new Error("Error initializing the AI services.");this.currentService=n,this.debug=t?.debug??!0,this.initialBackoffMs=t?.initialBackoffMs??1e3,this.maxBackoffMs=t?.maxBackoffMs??32e3,this.maxRetries=t?.maxRetries??3}static create(e,t){return new o(e,t)}getLastUsedChatModel(){return this.currentService.getLastUsedChatModel()}getLastUsedEmbedModel(){return this.currentService.getLastUsedEmbedModel()}getLastUsedModelConfig(){return this.currentService.getLastUsedModelConfig()}static inputOrderComparator=()=>0;static metricComparator=(e,t)=>{let n=e.getMetrics(),r=t.getMetrics();return n.latency.chat.mean-r.latency.chat.mean};getModelList(){for(let e of this.services){let t=e.getModelList();if(t)return t}}getNextService(e,t){let n=t+1,r=e[n];return r===void 0?{service:void 0,index:n}:{service:r,index:n}}reset(){this.currentServiceIndex=0;let e=this.services[this.currentServiceIndex];if(e===void 0)throw new Error("No AI services provided.");this.currentService=e}getName(){return this.currentService.getName()}getId(){return this.currentService.getId()}getFeatures(e){let t={functions:!1,streaming:!1,thinking:!1,multiTurn:!1,structuredOutputs:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]}};for(let n of this.services){let r=n.getFeatures(e);r.functions&&(t.functions=!0),r.streaming&&(t.streaming=!0),r.thinking&&(t.thinking=!0),r.multiTurn&&(t.multiTurn=!0),r.structuredOutputs&&(t.structuredOutputs=!0),r.functionCot&&(t.functionCot=!0),r.hasThinkingBudget&&(t.hasThinkingBudget=!0),r.hasShowThoughts&&(t.hasShowThoughts=!0),r.media.images.supported&&(t.media.images.supported=!0),t.media.images.formats=Array.from(new Set([...t.media.images.formats,...r.media.images.formats])),r.media.audio.supported&&(t.media.audio.supported=!0),t.media.audio.formats=Array.from(new Set([...t.media.audio.formats,...r.media.audio.formats])),r.media.files.supported&&(t.media.files.supported=!0),t.media.files.formats=Array.from(new Set([...t.media.files.formats,...r.media.files.formats])),r.media.files.uploadMethod!=="none"&&(t.media.files.uploadMethod=r.media.files.uploadMethod),r.media.urls.supported&&(t.media.urls.supported=!0),r.media.urls.webSearch&&(t.media.urls.webSearch=!0),r.media.urls.contextFetching&&(t.media.urls.contextFetching=!0),r.caching.supported&&(t.caching.supported=!0),t.caching.types=Array.from(new Set([...t.caching.types,...r.caching.types]))}return t}getMetrics(){let e={latency:{chat:{mean:0,p95:0,p99:0,samples:[]},embed:{mean:0,p95:0,p99:0,samples:[]}},errors:{chat:{count:0,rate:0,total:0},embed:{count:0,rate:0,total:0}}},t=0,n=0,r=0,s=0;for(let i of this.services){let a=i.getMetrics();e.errors.chat.count+=a.errors.chat.count,e.errors.chat.total+=a.errors.chat.total,e.errors.embed.count+=a.errors.embed.count,e.errors.embed.total+=a.errors.embed.total;let c=a.latency.chat.samples.length;c>0&&(t+=a.latency.chat.mean*c,n+=c);let u=a.latency.embed.samples.length;u>0&&(r+=a.latency.embed.mean*u,s+=u)}e.errors.chat.total>0&&(e.errors.chat.rate=e.errors.chat.count/e.errors.chat.total),e.errors.embed.total>0&&(e.errors.embed.rate=e.errors.embed.count/e.errors.embed.total),n>0&&(e.latency.chat.mean=t/n),s>0&&(e.latency.embed.mean=r/s);for(let i of this.services){let a=i.getMetrics();e.latency.chat.p95=Math.max(e.latency.chat.p95,a.latency.chat.p95),e.latency.chat.p99=Math.max(e.latency.chat.p99,a.latency.chat.p99),e.latency.embed.p95=Math.max(e.latency.embed.p95,a.latency.embed.p95),e.latency.embed.p99=Math.max(e.latency.embed.p99,a.latency.embed.p99)}return e}getEstimatedCost(e){return this.currentService.getEstimatedCost(e)}canRetryService(e){let t=this.serviceFailures.get(e.getId());if(!t)return!0;let{retries:n,lastFailureTime:r}=t,s=Date.now()-r,i=Math.min(this.initialBackoffMs*2**n,this.maxBackoffMs);return s>=i}handleFailure(e,t){let r=(this.serviceFailures.get(e.getId())?.retries??0)+1;this.serviceFailures.set(e.getId(),{retries:r,lastFailureTime:Date.now()}),this.debug&&console.warn(`AxBalancer: Service ${e.getName()} failed (retry ${r}/${this.maxRetries})`,t)}handleSuccess(e){this.serviceFailures.delete(e.getId())}async chat(e,t){let n=e.responseFormat?.type==="json_schema",r=e.capabilities,s=r?.requiresImages,i=r?.requiresAudio,a=this.services,c=e.model;if((n||s||i)&&(a=this.services.filter(p=>{let d=p.getFeatures(c);return!(n&&!d.structuredOutputs||s&&!d.media.images.supported||i&&!d.media.audio.supported)}),a.length===0)){let p=[];throw n&&p.push("structured outputs"),s&&p.push("images"),i&&p.push("audio"),new Error(`No services available that support required capabilities: ${p.join(", ")}.`)}let u=0,l=a[u];if(!l)throw new Error("No matching AI services available for request.");for(this.currentService=l;;){if(!this.canRetryService(l)){let p=this.getNextService(a,u);if(!p.service)throw new Error(`All candidate services exhausted (tried ${a.length} service(s))`);l=p.service,u=p.index,this.currentService=l;continue}try{let p=await l.chat(e,t);return this.handleSuccess(l),p}catch(p){if(!(p instanceof at))throw p;switch(p.constructor){case Wt:throw p;case pt:{if(![408,429,500,502,503,504].includes(p.status))throw p;break}case nt:break;case Ht:break;case It:break;case bt:break;default:throw p}if(this.handleFailure(l,p),(this.serviceFailures.get(l.getId())?.retries??0)>=this.maxRetries){let g=this.getNextService(a,u);if(this.debug&&console.warn(`AxBalancer: Switching to service ${g.service?.getName()??"none"}`,p),!g.service)throw p;l=g.service,u=g.index,this.currentService=l}}}}async embed(e,t){this.reset();let n=this.currentServiceIndex;for(;;){if(!this.canRetryService(this.currentService)){let r=this.getNextService(this.services,n);if(!r.service)throw new Error(`All services exhausted (tried ${this.services.length} service(s))`);this.currentService=r.service,n=r.index,this.currentServiceIndex=n;continue}try{let r=await this.currentService.embed(e,t);return this.handleSuccess(this.currentService),r}catch(r){if(!(r instanceof at)||r instanceof pt&&![408,429,500,502,503,504].includes(r.status)||r instanceof Wt)throw r;if(this.handleFailure(this.currentService,r),(this.serviceFailures.get(this.currentService.getId())?.retries??0)>=this.maxRetries){let i=this.getNextService(this.services,n);if(!i.service)throw r;this.currentService=i.service,n=i.index,this.currentServiceIndex=n}}}}setOptions(e){for(let t of this.services)t.setOptions(e);this.currentService.setOptions(e),this.debug=e.debug??this.debug}getOptions(){return this.currentService.getOptions()}getLogger(){return this.currentService.getLogger()}};function Lg(o){let e=o.find(r=>r.getModelList()!==void 0);if(!e)return;let t=e.getModelList();if(!t)throw new Error("No model list found in any service.");let n=new Set(t.map(r=>r.key));for(let r=0;r<o.length;r++){let s=o[r];if(!s)throw new Error(`Service at index ${r} is undefined`);let i=s.getModelList();if(!i)throw new Error(`Service at index ${r} (${s.getName()}) has no model list while another service does.`);let a=new Set(i.map(c=>c.key));for(let c of n)if(!a.has(c))throw new Error(`Service at index ${r} (${s.getName()}) is missing model "${c}"`);for(let c of a)if(!n.has(c))throw new Error(`Service at index ${r} (${s.getName()}) has extra model "${c}"`)}}function mn(o){let e=!1,t=!1,n=!1,r=!1,s=!1,i=!1,a=!1,c=new Set,u=0;if(o.chatPrompt&&Array.isArray(o.chatPrompt))for(let l of o.chatPrompt){if(l.role==="user"&&Array.isArray(l.content))for(let p of l.content)switch(c.add(p.type),p.type){case"image":e=!0,p.cache&&(a=!0),u+=85;break;case"audio":t=!0,p.cache&&(a=!0),u+=p.duration||60;break;case"file":n=!0,p.cache&&(a=!0),u+=Math.ceil((p.extractedText?.length||1e3)/4);break;case"url":r=!0,p.cache&&(a=!0),u+=Math.ceil((p.cachedContent?.length||2e3)/4);break;case"text":p.cache&&(a=!0),u+=Math.ceil(p.text.length/4);break}else"content"in l&&typeof l.content=="string"&&(u+=Math.ceil(l.content.length/4));"cache"in l&&l.cache&&(a=!0)}return o.functions&&o.functions.length>0&&(s=!0),o.modelConfig?.stream===!0&&(i=!0),o.capabilities&&(o.capabilities.requiresImages&&(e=!0),o.capabilities.requiresAudio&&(t=!0),o.capabilities.requiresFiles&&(n=!0),o.capabilities.requiresWebSearch&&(r=!0)),{hasImages:e,hasAudio:t,hasFiles:n,hasUrls:r,requiresFunctions:s,requiresStreaming:i,requiresCaching:a,contentTypes:c,estimatedTokens:u}}function ta(o,e){let t=o.getFeatures(),n=[],r=[],s=[];if(e.hasImages&&!t.media.images.supported&&(n.push("Image support"),s.push("Use altText for images or imageToText service")),e.hasAudio&&!t.media.audio.supported&&(n.push("Audio support"),s.push("Pre-transcribe audio or use transcription field")),e.hasFiles&&!t.media.files.supported&&(n.push("File support"),s.push("Pre-extract text content or use extractedText field")),e.hasUrls&&!t.media.urls.supported&&(n.push("URL/Web search support"),s.push("Pre-fetch content or use cachedContent field")),e.requiresFunctions&&!t.functions&&n.push("Function calling"),e.requiresStreaming&&!t.streaming&&(n.push("Streaming responses"),s.push("Use non-streaming mode")),e.requiresCaching&&!t.caching.supported&&(n.push("Content caching"),s.push("Repeated content will not be cached")),e.hasImages&&t.media.images.supported){let a=t.media.images.maxSize;a&&a<10*1024*1024&&r.push(`Image size limit is ${Math.round(a/(1024*1024))}MB`)}if(e.hasAudio&&t.media.audio.supported){let a=t.media.audio.maxDuration;a&&a<600&&r.push(`Audio duration limit is ${Math.round(a/60)} minutes`)}return{isSupported:n.length===0,missingCapabilities:n,warnings:r,alternatives:s}}function ts(o,e){return o.map(t=>{let n=t.getFeatures(),r=ta(t,e),s=0,i=[];return s+=10,e.hasImages&&n.media.images.supported&&(s+=25,i.push("Images"),n.media.images.detailLevels?.includes("high")&&(s+=5),n.media.images.maxSize&&n.media.images.maxSize>10*1024*1024&&(s+=3)),e.hasAudio&&n.media.audio.supported&&(s+=25,i.push("Audio"),n.media.audio.maxDuration&&n.media.audio.maxDuration>600&&(s+=5)),e.hasFiles&&n.media.files.supported&&(s+=25,i.push("Files"),n.media.files.uploadMethod==="cloud"&&(s+=3)),e.hasUrls&&n.media.urls.supported&&(s+=25,i.push("URLs"),n.media.urls.webSearch&&(s+=5)),e.requiresFunctions&&n.functions&&(s+=15,i.push("Functions"),n.functionCot&&(s+=3)),e.requiresStreaming&&n.streaming&&(s+=10,i.push("Streaming")),e.requiresCaching&&n.caching.supported&&(s+=8,i.push("Caching"),n.caching.types.includes("persistent")&&(s+=3)),n.thinking&&(s+=2),n.multiTurn&&(s+=2),n.hasThinkingBudget&&(s+=1),n.hasShowThoughts&&(s+=1),s-=r.missingCapabilities.length*10,{provider:t,score:s,missingCapabilities:r.missingCapabilities,supportedCapabilities:i}}).sort((t,n)=>n.score-t.score)}function ns(o,e,t={}){if(e.length===0)throw new Error("No providers available");let n=mn(o),r=ts(e,n);if(t.requireExactMatch){let s=r.filter(i=>i.missingCapabilities.length===0);if(s.length===0)throw new Error(`No providers fully support the request requirements: ${r[0]?.missingCapabilities.join(", ")||"unknown requirements"}`);return s[0].provider}if(!t.allowDegradation){let s=r[0];if(s.missingCapabilities.length>0)throw new Error(`Best available provider (${s.provider.getName()}) is missing: ${s.missingCapabilities.join(", ")}`)}return r[0].provider}function il(o,e){let t=mn(o),n=ts(e,t),r=n[0]?.provider||null,s=[t.hasImages&&"images",t.hasAudio&&"audio",t.hasFiles&&"files",t.hasUrls&&"URLs",t.requiresFunctions&&"functions",t.requiresStreaming&&"streaming",t.requiresCaching&&"caching"].filter(Boolean).length,i=r?n[0].supportedCapabilities.length:0,a=r?`${r.getName()} supports ${i}/${s} requirements (${Math.round(i/Math.max(s,1)*100)}% compatibility)`:"No suitable providers found";return{requirements:t,providerScores:n,recommendedProvider:r,summary:a}}function al(o,e){return o.filter(t=>t.getFeatures().media[e].supported)}function cl(o,e){let t={};for(let n of o){let s=n.getFeatures().media[e];if(s.supported)for(let i of s.formats)t[i]||(t[i]=[]),t[i].push(n)}return t}var jr=(r=>(r.CommandRPlus="command-r-plus",r.CommandR="command-r",r.Command="command",r.CommandLight="command-light",r))(jr||{}),zr=(r=>(r.EmbedEnglishV30="embed-english-v3.0",r.EmbedEnglishLightV30="embed-english-light-v3.0",r.EmbedMultiLingualV30="embed-multilingual-v3.0",r.EmbedMultiLingualLightV30="embed-multilingual-light-v3.0",r))(zr||{});var rs=[{name:"command-r-plus",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15},{name:"command-r",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5},{name:"command",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5},{name:"command-light",currency:"usd",promptTokenCostPer1M:.3,completionTokenCostPer1M:.6},{name:"embed-english-light-v3.0",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.1},{name:"embed-english-v3.0",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.1},{name:"embed-multilingual-v3.0",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.1},{name:"embed-multilingual-light-v3.0",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.1}];function $g(o){if(Array.isArray(o)){let t=["string","number","integer","boolean","object","array"].find(n=>o.includes(n));return t||(o.find(n=>n!=="null")??o[0]??"string")}return typeof o=="string"?o:"string"}var ra=()=>structuredClone({model:"command-r-plus",embedModel:"embed-english-v3.0",...Le()}),ll=()=>structuredClone({model:"command-r",embedModel:"embed-english-v3.0",...Ze()}),na=class{constructor(e){this.config=e}tokensUsed;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,frequencyPenalty:e.frequencyPenalty,presencePenalty:e.presencePenalty,endSequences:e.endSequences,stopSequences:e.stopSequences,stream:e.stream,n:e.n}}createChatReq(e){let t=e.model,n=e.chatPrompt.at(-1),r=e.chatPrompt.slice(0,-1),s;n&&n.role==="user"&&typeof n.content=="string"&&(s=n?.content);let i=Dg(r),a=e.functions?.map(p=>{let d={};if(p.parameters?.properties)for(let[g,m]of Object.entries(p.parameters.properties))d[g]={description:m.description,type:$g(m.type),required:p.parameters.required?.includes(g)??!1};return{name:p.name,description:p.description,parameter_definitions:d}}),c=e.chatPrompt.filter(p=>p.role==="function").map(p=>{let d=a?.find(g=>g.name===p.functionId);if(!d)throw new Error("Function not found");return{call:{name:d.name,parameters:d.parameter_definitions},outputs:[{result:p.result??""}]}}),u={name:"/chat"},l={message:s,model:t,tools:a,...c&&!s?{tool_results:c}:{},chat_history:i,max_tokens:e.modelConfig?.maxTokens??this.config.maxTokens,...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},k:e.modelConfig?.topK??this.config.topK,...e.modelConfig?.topP!==void 0?{p:e.modelConfig.topP}:{},frequency_penalty:e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,presence_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty,end_sequences:this.config.endSequences,stop_sequences:e.modelConfig?.stopSequences??this.config.stopSequences};return[u,l]}createEmbedReq=e=>{let t=e.embedModel;if(!t)throw new Error("Embed model not set");if(!e.texts||e.texts.length===0)throw new Error("Embed texts is empty");let n={name:"/embed"},r={model:t,texts:e.texts??[],input_type:"classification",truncate:""};return[n,r]};createChatResp=e=>{this.tokensUsed=e.meta.billed_units?{promptTokens:e.meta.billed_units.input_tokens,completionTokens:e.meta.billed_units.output_tokens,totalTokens:e.meta.billed_units.input_tokens+e.meta.billed_units.output_tokens}:void 0;let t;if("finish_reason"in e)switch(e.finish_reason){case"COMPLETE":t="stop";break;case"MAX_TOKENS":t="length";break;case"ERROR":throw new Error("Finish reason: ERROR");case"ERROR_TOXIC":throw new Error("Finish reason: CONTENT_FILTER");default:t="stop";break}let n;return"tool_calls"in e&&(n=e.tool_calls?.map(s=>({id:s.name,type:"function",function:{name:s.name,params:s.parameters}}))),{results:[{index:0,id:e.generation_id,content:e.text,functionCalls:n,finishReason:t}],remoteId:e.response_id}};createChatStreamResp=(e,t)=>{let n=t;e.event_type==="stream-start"&&(n.generation_id=e.generation_id),this.tokensUsed={promptTokens:0,completionTokens:e.meta.billed_units?.output_tokens??0,totalTokens:e.meta.billed_units?.output_tokens??0};let{results:r}=this.createChatResp(e),s=r[0];if(!s)throw new Error("No result");return s.id=n.generation_id??"",{results:r}};createEmbedResp(e){return{remoteId:e.id,embeddings:e.embeddings}}},$n=class extends Xe{constructor({apiKey:e,config:t,options:n,models:r}){if(!e||e==="")throw new Error("Cohere API key not set");let s={...ra(),...t},i=new na(s),a=r?.map(c=>{let u=c,l=u?.config;if(!l)return c;let p={};l.maxTokens!==void 0&&(p.maxTokens=l.maxTokens),l.temperature!==void 0&&(p.temperature=l.temperature),l.topP!==void 0&&(p.topP=l.topP),l.topK!==void 0&&(p.topK=l.topK),l.presencePenalty!==void 0&&(p.presencePenalty=l.presencePenalty),l.frequencyPenalty!==void 0&&(p.frequencyPenalty=l.frequencyPenalty),l.stopSequences!==void 0&&(p.stopSequences=l.stopSequences),l.endSequences!==void 0&&(p.endSequences=l.endSequences),l.stream!==void 0&&(p.stream=l.stream),l.n!==void 0&&(p.n=l.n);let d={...u};return Object.keys(p).length>0&&(d.modelConfig={...u.modelConfig??{},...p}),d});super(i,{name:"Cohere",apiURL:"https://api.cohere.ai/v1",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:rs,defaults:{model:s.model},supportFor:{functions:!0,streaming:!0,media:{images:{supported:!1,formats:[],maxSize:0,detailLevels:[]},audio:{supported:!1,formats:[],maxDuration:0},files:{supported:!1,formats:[],maxSize:0,uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},options:n,models:a??r})}};function Dg(o){return o.map(e=>{let t="";if(e.role==="system"||e.role==="assistant"||e.role==="user")if(typeof e.content=="string")t=e.content;else throw new Error("Multi-modal content not supported");switch(e.role){case"user":return{role:"USER",message:t};case"system":return{role:"SYSTEM",message:t};case"assistant":{let n=ul(e.functionCalls);return{role:"CHATBOT",message:t,tool_calls:n}}case"function":{let n=o.map(i=>{if(i.role==="assistant")return i.functionCalls?.find(a=>a.id===e.functionId)}).filter(i=>i!==void 0),r=ul(n)?.at(0);if(!r)throw new Error("Function call not found");let s=[{result:e.result}];return{role:"TOOL",tool_results:[{call:r,outputs:s}]}}default:throw new Error("Unknown role")}})}function ul(o){return o?.map(e=>{let t;if(typeof e.function.params=="string"){let n=e.function.params;if(n.trim().length===0)t={};else try{t=JSON.parse(n)}catch{throw new Error(`Failed to parse function params JSON: ${n}`)}}else t=e.function.params;return{name:e.function.name,parameters:t}})}var qr=(n=>(n.DeepSeekChat="deepseek-chat",n.DeepSeekCoder="deepseek-coder",n.DeepSeekReasoner="deepseek-reasoner",n))(qr||{});var os=[{name:"deepseek-chat",currency:"USD",promptTokenCostPer1M:.27,completionTokenCostPer1M:1.1},{name:"deepseek-reasoner",currency:"USD",promptTokenCostPer1M:.55,completionTokenCostPer1M:2.19}];var oa=()=>structuredClone({model:"deepseek-chat",...Le()}),pl=()=>structuredClone({model:"deepseek-coder",...Ze()}),Dn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("DeepSeek API key not set");let i={...oa(),...t};s=[...os,...s??[]],super({apiKey:e,config:i,options:n,apiURL:"https://api.deepseek.com",modelInfo:s,supportFor:{functions:!0,streaming:!0,hasThinkingBudget:!1,hasShowThoughts:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},models:r}),super.setName("DeepSeek")}};var Un=(C=>(C.Gemini31Pro="gemini-3.1-pro-preview",C.Gemini3FlashLite="gemini-3.1-flash-lite-preview",C.Gemini3Flash="gemini-3-flash-preview",C.Gemini3Pro="gemini-3.1-pro-preview",C.Gemini3ProImage="gemini-3-pro-image-preview",C.Gemini25Pro="gemini-2.5-pro",C.Gemini25Flash="gemini-2.5-flash",C.Gemini25FlashLite="gemini-2.5-flash-lite",C.Gemini20Flash="gemini-2.0-flash",C.Gemini20FlashLite="gemini-2.0-flash-lite",C.Gemini20ProExp="gemini-2.0-pro-exp-02-05",C.Gemini20FlashThinkingExp="gemini-2.0-flash-thinking-exp-01-21",C.Gemini1Pro="gemini-1.0-pro",C.Gemini15Flash="gemini-1.5-flash",C.Gemini15Flash002="gemini-1.5-flash-002",C.Gemini15Flash8B="gemini-1.5-flash-8b",C.Gemini15Pro="gemini-1.5-pro",C.GeminiFlashLatest="gemini-flash-latest",C.GeminiFlashLiteLatest="gemini-flash-lite-latest",C.GeminiProLatest="gemini-pro-latest",C))(Un||{}),Hr=(s=>(s.GeminiEmbedding001="gemini-embedding-001",s.GeminiEmbedding="gemini-embedding-exp",s.TextEmbeddingLarge="text-embedding-large-exp-03-07",s.TextEmbedding004="text-embedding-004",s.TextEmbedding005="text-embedding-005",s))(Hr||{}),ss=(r=>(r.HarmCategoryHarassment="HARM_CATEGORY_HARASSMENT",r.HarmCategoryHateSpeech="HARM_CATEGORY_HATE_SPEECH",r.HarmCategorySexuallyExplicit="HARM_CATEGORY_SEXUALLY_EXPLICIT",r.HarmCategoryDangerousContent="HARM_CATEGORY_DANGEROUS_CONTENT",r))(ss||{}),is=(s=>(s.BlockNone="BLOCK_NONE",s.BlockOnlyHigh="BLOCK_ONLY_HIGH",s.BlockMediumAndAbove="BLOCK_MEDIUM_AND_ABOVE",s.BlockLowAndAbove="BLOCK_LOW_AND_ABOVE",s.BlockDefault="HARM_BLOCK_THRESHOLD_UNSPECIFIED",s))(is||{}),sa=(c=>(c.SemanticSimilarity="SEMANTIC_SIMILARITY",c.Classification="CLASSIFICATION",c.Clustering="CLUSTERING",c.RetrievalDocument="RETRIEVAL_DOCUMENT",c.RetrievalQuery="RETRIEVAL_QUERY",c.QuestionAnswering="QUESTION_ANSWERING",c.FactVerification="FACT_VERIFICATION",c.CodeRetrievalQuery="CODE_RETRIEVAL_QUERY",c))(sa||{}),dl=["gemini-3.1-pro-preview","gemini-3.1-pro-preview-customtools","gemini-3.1-flash-lite-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash","gemini-2.0-flash-lite","gemini-flash-latest","gemini-flash-lite-latest"];var as=[{name:"gemini-3.1-pro-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:2,completionTokenCostPer1M:12,cacheReadTokenCostPer1M:.2,cacheWriteTokenCostPer1M:2,longContextThreshold:2e5,longContextPromptTokenCostPer1M:4,longContextCompletionTokenCostPer1M:18,longContextCacheReadTokenCostPer1M:.4,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-3-flash-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.5,completionTokenCostPer1M:3,cacheReadTokenCostPer1M:.05,cacheWriteTokenCostPer1M:.5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-3.1-flash-lite-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.25,completionTokenCostPer1M:1.5,cacheReadTokenCostPer1M:.025,cacheWriteTokenCostPer1M:.25,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-3-pro-image-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:2,completionTokenCostPer1M:.134,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.5-pro",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,cacheReadTokenCostPer1M:.125,cacheWriteTokenCostPer1M:1.25,longContextThreshold:2e5,longContextPromptTokenCostPer1M:2.5,longContextCompletionTokenCostPer1M:15,longContextCacheReadTokenCostPer1M:.25,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.0-pro-exp-02-05",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:0,completionTokenCostPer1M:0,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.0-flash-thinking-exp-01-21",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:0,completionTokenCostPer1M:0,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.5-flash",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.3,completionTokenCostPer1M:2.5,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.5-flash-lite",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,cacheReadTokenCostPer1M:.01,cacheWriteTokenCostPer1M:.1,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.0-flash",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,cacheReadTokenCostPer1M:.025,cacheWriteTokenCostPer1M:.1,supported:{structuredOutputs:!0}},{name:"gemini-2.0-flash-lite",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.075,completionTokenCostPer1M:.3,supported:{structuredOutputs:!0}},{name:"gemini-1.5-flash",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.075,completionTokenCostPer1M:.3,supported:{structuredOutputs:!0}},{name:"gemini-1.5-flash-8b",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.0375,completionTokenCostPer1M:.15,supported:{structuredOutputs:!0}},{name:"gemini-1.5-pro",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:1.25,completionTokenCostPer1M:5,supported:{structuredOutputs:!0}},{name:"gemini-1.0-pro",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5,supported:{structuredOutputs:!0}},{name:"gemini-flash-latest",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.3,completionTokenCostPer1M:2.5,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-flash-lite-latest",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,cacheReadTokenCostPer1M:.01,cacheWriteTokenCostPer1M:.1,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-pro-latest",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,cacheReadTokenCostPer1M:.125,cacheWriteTokenCostPer1M:1.25,longContextThreshold:2e5,longContextPromptTokenCostPer1M:2.5,longContextCompletionTokenCostPer1M:15,longContextCacheReadTokenCostPer1M:.25,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}}];var gn=o=>o.includes("gemini-3"),ml=o=>o.includes("gemini-3")&&o.includes("pro"),Ug=new Set([...Object.values(Un).filter(o=>!o.startsWith("gemini-3")),...Object.values(Hr),"gemini-2.0-flash-001","gemini-2.0-flash-lite-001"]),Gg=(o,e)=>e||Ug.has(o)?"v1":"v1beta1",cs=o=>{if(!o||typeof o!="object")return o;let e={...o};return delete e.additionalProperties,delete e.default,delete e.optional,delete e.maximum,delete e.oneOf,delete e.anyOf,Array.isArray(e.type)&&(e.type=e.type.includes("object")?"object":e.type[0]??"string"),e.properties&&typeof e.properties=="object"&&(e.properties=Object.fromEntries(Object.entries(e.properties).map(([t,n])=>[t,cs(n)]))),e.items&&(e.items=cs(e.items)),e},ia=(o,e,t)=>{for(let n=e-1;n>=0;n--){let r=o[n];if(r?.role!=="assistant"||!r.functionCalls)continue;let s=r.functionCalls.find(i=>i.id===t);if(s?.function?.name)return s.function.name}return t},gl=[{category:"HARM_CATEGORY_HARASSMENT",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_HATE_SPEECH",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_SEXUALLY_EXPLICIT",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_DANGEROUS_CONTENT",threshold:"BLOCK_NONE"}],ca=()=>structuredClone({model:"gemini-2.5-flash",embedModel:"text-embedding-005",safetySettings:gl,thinkingTokenBudgetLevels:{minimal:200,low:800,medium:5e3,high:1e4,highest:24500},thinkingLevelMapping:{minimal:"minimal",low:"low",medium:"medium",high:"high",highest:"high"},...Le()}),fl=()=>structuredClone({model:"gemini-2.0-flash",embedModel:"text-embedding-005",safetySettings:gl,thinkingTokenBudgetLevels:{minimal:200,low:800,medium:5e3,high:1e4,highest:24500},thinkingLevelMapping:{minimal:"minimal",low:"low",medium:"medium",high:"high",highest:"high"},...Ze()}),aa=class{constructor(e,t,n,r,s,i){this.config=e;this.isVertex=t;this.endpointId=n;this.apiKey=r;this.options=s;this.vertexApiURLForModel=i;if(!this.isVertex&&this.config.autoTruncate)throw new Error("Auto truncate is not supported for GoogleGemini");let a=this.config.model;if(gn(a)){if(this.config.thinking?.thinkingTokenBudget!==void 0&&typeof this.config.thinking.thinkingTokenBudget=="number")throw new Error(`Gemini 3 models (${a}) do not support numeric thinkingTokenBudget. Use thinkingLevel ('low', 'medium', 'high') instead, or pass thinkingTokenBudget as a string level via options.`);if(ml(a)&&this.config.thinking?.thinkingLevel){let c=this.config.thinking.thinkingLevel;if(c!=="low"&&c!=="high")throw new Error(`Gemini 3 Pro (${a}) only supports thinkingLevel 'low' or 'high', got '${c}'. Use 'low' for less thinking or 'high' for more thinking.`)}}}tokensUsed;models;setModels(e){this.models=e}getEffectiveMappings(e){let t=this.models?.find(n=>n.model===e);return{thinkingLevelMapping:{...this.config.thinkingLevelMapping,...t?.thinkingLevelMapping??{}},thinkingTokenBudgetLevels:{...this.config.thinkingTokenBudgetLevels,...t?.thinkingTokenBudgetLevels??{}}}}getTokenUsage(){return this.tokensUsed}getVertexApiURL(e,t){return this.isVertex?this.vertexApiURLForModel?.(e,t):void 0}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,endSequences:e.endSequences,stream:e.stream,n:e.n}}hasProviderDeclaredTools(){return!!(this.options?.codeExecution||this.options?.googleSearchRetrieval||this.options?.googleSearch||this.options?.googleMaps||this.options?.urlContext)}buildToolState(e,t){let n=[];if(e.functions&&e.functions.length>0){let u=e.functions.map(l=>{let p={type:"object",properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]},d=l.parameters?cs(l.parameters):void 0;return d===void 0||d&&typeof d=="object"&&Object.keys(d).length===0?d={...p}:d&&typeof d=="object"&&d.type==="object"&&(!("properties"in d)||!d.properties||Object.keys(d.properties).length===0)&&(d={...d,properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]}),{name:l.name,description:l.description,parameters:d}});n.push({function_declarations:u})}if(this.options?.codeExecution&&n.push({code_execution:{}}),this.options?.googleSearchRetrieval&&n.push({google_search_retrieval:{dynamic_retrieval_config:this.options.googleSearchRetrieval}}),this.options?.googleSearch&&n.push({google_search:{}}),this.options?.googleMaps){let u=this.options.googleMaps,l=u?.enableWidget!==void 0?{enableWidget:u.enableWidget}:{};n.push({google_maps:l})}this.options?.urlContext&&n.push({url_context:{}}),n.length===0&&(n=void 0);let r,s=Array.isArray(n)?n.some(u=>u&&Array.isArray(u.function_declarations)&&u.function_declarations.length>0):!1;if(e.functionCall)if(e.functionCall==="none")r={function_calling_config:{mode:"NONE"}};else if(e.functionCall==="auto")r={function_calling_config:{mode:"AUTO"}};else if(e.functionCall==="required")r={function_calling_config:{mode:"ANY"}};else{let u=e.functionCall.function?.name?{allowedFunctionNames:[e.functionCall.function.name]}:{};r={function_calling_config:{mode:"ANY"},...u}}else s&&(r={function_calling_config:{mode:"AUTO"}});this.options?.retrievalConfig&&(r={...r??{},retrievalConfig:{...this.options.retrievalConfig.latLng?{latLng:this.options.retrievalConfig.latLng}:{}}});let i=e.functions?.some(u=>u.cache)??!1,a=!!(n&&n.length>0)||!!r,c=!!t?.contextCache&&a;return{tools:n,toolConfig:r,cacheableTools:i||c}}createChatReq=async(e,t)=>{let n=e.model,r=e.modelConfig?.stream??this.config.stream;if(!e.chatPrompt||e.chatPrompt.length===0)throw new Error("Chat prompt is empty");let s;if(this.endpointId?s={name:r?`/${this.endpointId}:streamGenerateContent?alt=sse`:`/${this.endpointId}:generateContent`}:s={name:r?`/models/${n}:streamGenerateContent?alt=sse`:`/models/${n}:generateContent`},this.isVertex&&(s.url=this.getVertexApiURL(n,t?.noBeta)),!this.isVertex){let x=r?"&":"?",A=typeof this.apiKey=="function"?await this.apiKey():this.apiKey;s.name+=`${x}key=${A}`}let i=e.chatPrompt.filter(x=>x.role==="system").map(x=>x.content),a=i.length>0?{role:"user",parts:[{text:i.join(" ")}]}:void 0,c=[],u=e.chatPrompt.filter(x=>x.role!=="system");for(let x=0;x<u.length;x++){let A=u[x];switch(A.role){case"user":{let y=Array.isArray(A.content)?A.content.map((C,R)=>{switch(C.type){case"text":return{text:C.text};case"image":return{inlineData:{mimeType:C.mimeType,data:C.image}};case"audio":return{inlineData:{mimeType:`audio/${C.format??"mp3"}`,data:C.data}};case"file":return"fileUri"in C?{fileData:{mimeType:C.mimeType,fileUri:C.fileUri}}:{inlineData:{mimeType:C.mimeType,data:C.data}};default:throw new Error(`Chat prompt content type not supported (index: ${R})`)}}):[{text:A.content}];c.push({role:"user",parts:y});break}case"assistant":{let y=[],C=A.thoughtBlocks,R=A.functionCalls&&A.functionCalls.length>0,I=C?.[0],M=C?.map(P=>P.data).join("")??"",F=I?.signature;if(M&&y.push({...R?{}:{thought:!0},text:M,...F&&!R?{thought_signature:F}:{}}),A.functionCalls){let P=A.functionCalls.map((N,T)=>{let E;if(typeof N.function.params=="string"){let S=N.function.params;if(S.trim().length===0)E={};else try{E=JSON.parse(S)}catch{throw new Error(`Failed to parse function params JSON: ${S}`)}}else E=N.function.params;let O={functionCall:{name:N.function.name,args:E}};return F&&T===0&&(O.thought_signature=F),O});y.push(...P)}if(A.content&&y.push({text:A.content}),y.length===0)throw new Error("Assistant content is empty");c.push({role:"model",parts:y});break}case"function":{let y=[],C=A,R=x;for(;;){if(!("functionId"in C))throw new Error(`Chat prompt functionId is empty (index: ${R})`);if(y.push({functionResponse:{name:ia(u,R,C.functionId),response:{result:C.result}}}),R+1<u.length&&u[R+1].role==="function")R++,C=u[R];else break}x=R,c.push({role:"user",parts:y});break}default:throw new Error(`Invalid role: ${JSON.stringify(A)} (index: ${x})`)}}let{tools:l,toolConfig:p}=this.buildToolState(e,t),d={};if(this.config.thinking?.includeThoughts&&(d.includeThoughts=!0),this.config.thinking?.thinkingTokenBudget&&(d.thinkingBudget=this.config.thinking.thinkingTokenBudget),this.config.thinking?.thinkingLevel&&gn(n)&&(d.thinkingLevel=this.config.thinking.thinkingLevel),t?.thinkingTokenBudget){let x=this.getEffectiveMappings(n),A=x.thinkingTokenBudgetLevels;if(gn(n)){let C=ml(n),R=x.thinkingLevelMapping;if(t.thinkingTokenBudget==="none")d.thinkingLevel=R?.minimal??"minimal";else{let I=t.thinkingTokenBudget,M=R?.[I];M||(M=I==="highest"?"high":I),d.thinkingLevel=M}if(C&&d.thinkingLevel){let I=d.thinkingLevel;I!=="low"&&I!=="high"&&(d.thinkingLevel=I==="minimal"?"low":"high")}}else switch(t.thinkingTokenBudget){case"none":d.thinkingBudget=0,d.includeThoughts=!1,delete d.thinkingLevel;break;case"minimal":d.thinkingBudget=A?.minimal??200;break;case"low":d.thinkingBudget=A?.low??800;break;case"medium":d.thinkingBudget=A?.medium??5e3;break;case"high":d.thinkingBudget=A?.high??1e4;break;case"highest":d.thinkingBudget=A?.highest??24500;break}}d.thinkingLevel&&delete d.thinkingBudget,gn(n)||delete d.thinkingLevel,gn(n)&&delete d.thinkingBudget;let g=e.modelConfig?.maxTokens??this.config.maxTokens;if(d.thinkingLevel&&g!==void 0)throw new Error("Cannot set maxTokens when using thinkingLevel with Gemini models. When thinking is enabled, the model manages output tokens automatically. Remove the maxTokens setting or disable thinking.");t?.showThoughts!==void 0&&t?.thinkingTokenBudget!=="none"&&(d.includeThoughts=t.showThoughts);let m={maxOutputTokens:e.modelConfig?.maxTokens??this.config.maxTokens,temperature:e.modelConfig?.temperature??this.config.temperature,...e.modelConfig?.topP!==void 0?{topP:e.modelConfig.topP}:{},topK:e.modelConfig?.topK??this.config.topK,frequencyPenalty:e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,candidateCount:1,stopSequences:e.modelConfig?.stopSequences??this.config.stopSequences,responseMimeType:"text/plain",...Object.keys(d).length>0?{thinkingConfig:d}:{}};if(gn(n)&&(m.temperature===void 0||m.temperature<1)&&(m.temperature=1),e.responseFormat){if(m.responseMimeType="application/json",e.responseFormat.type==="json_schema"&&e.responseFormat.schema){let x=e.responseFormat.schema.schema||e.responseFormat.schema;m.responseSchema=cs(x)}}else this.config.responseFormat&&this.config.responseFormat==="json_object"&&(m.responseMimeType="application/json");let f=this.config.safetySettings;return[s,{contents:c,tools:l,toolConfig:p,systemInstruction:a,generationConfig:m,safetySettings:f}]};createEmbedReq=async(e,t)=>{let n=e.embedModel;if(!n)throw new Error("Embed model not set");if(!e.texts||e.texts.length===0)throw new Error("Embed texts is empty");let r,s;if(this.isVertex)this.endpointId?r={name:`/${this.endpointId}:predict`}:r={name:`/models/${n}:predict`},r.url=this.getVertexApiURL(n,t?.noBeta),s={instances:e.texts.map(i=>({content:i,...this.config.embedType&&{taskType:this.config.embedType}})),parameters:{autoTruncate:this.config.autoTruncate,outputDimensionality:this.config.dimensions}};else{let i=typeof this.apiKey=="function"?this.apiKey():this.apiKey;r={name:`/models/${n}:batchEmbedContents?key=${i}`},s={requests:e.texts.map(a=>({model:`models/${n}`,content:{parts:[{text:a}]},outputDimensionality:this.config.dimensions,...this.config.embedType&&{taskType:this.config.embedType}}))}}return[r,s]};createChatResp=e=>{let t,n=e.candidates?.map(s=>{let i={index:0};switch(s.finishReason){case"MAX_TOKENS":i.finishReason="length";break;case"STOP":i.finishReason="stop";break;case"SAFETY":throw new We("Content was blocked due to safety settings",void 0,void 0);case"RECITATION":throw new We("Content was blocked due to recitation policy",void 0,void 0);case"MALFORMED_FUNCTION_CALL":throw new We("Function call was malformed and blocked",void 0,void 0);case"UNEXPECTED_TOOL_CALL":throw new We("Unexpected tool call",void 0,void 0);case"FINISH_REASON_UNSPECIFIED":throw new We("Finish reason unspecified",void 0,void 0);case"BLOCKLIST":throw new We("Content was blocked due to blocklist",void 0,void 0);case"PROHIBITED_CONTENT":throw new We("Content was blocked due to prohibited content",void 0,void 0);case"SPII":throw new We("Content was blocked due to SPII",void 0,void 0);case"OTHER":throw new We("Other finish reason",void 0,void 0)}if(!s.content||!s.content.parts)return i;for(let u of s.content.parts){if("text"in u){if("thought"in u&&u.thought||u.thought===!0){i.thought=u.text;let l=u.thoughtSignature||u.thought_signature;i.thoughtBlocks||(i.thoughtBlocks=[]),i.thoughtBlocks.push({data:u.text,encrypted:!1,...l?{signature:l}:{}})}else i.content=u.text;continue}if("functionCall"in u){let l=u.thoughtSignature||u.thought_signature;if(l)if(!i.thoughtBlocks||i.thoughtBlocks.length===0)i.thoughtBlocks=[{data:"",encrypted:!1,signature:l}];else{let p=i.thoughtBlocks[i.thoughtBlocks.length-1];p&&!p.signature&&(p.signature=l)}i.functionCalls=[...i.functionCalls??[],{id:it(),type:"function",function:{name:u.functionCall.name,params:u.functionCall.args}}]}}let a=s.citationMetadata?.citations;if(Array.isArray(a)&&a.length){let u=l=>l?`${l.year}-${String(l.month).padStart(2,"0")}-${String(l.day).padStart(2,"0")}`:void 0;i.citations=a.filter(l=>typeof l?.uri=="string").map(l=>({url:l.uri,title:l.title,license:l.license,publicationDate:u(l.publicationDate)}))}let c=s.groundingMetadata;if(c){if(Array.isArray(c.groundingChunks)){let u=c.groundingChunks.map(l=>l?.maps).filter(l=>l&&typeof l.uri=="string").map(l=>({url:l.uri,title:l.title}));u.length&&(i.citations=[...i.citations??[],...u])}typeof c.googleMapsWidgetContextToken=="string"&&(t=c.googleMapsWidgetContextToken)}return i});if(e.usageMetadata){let s=e.usageMetadata.cachedContentTokenCount??0;this.tokensUsed={totalTokens:e.usageMetadata.totalTokenCount,promptTokens:e.usageMetadata.promptTokenCount-s,completionTokens:e.usageMetadata.candidatesTokenCount,thoughtsTokens:e.usageMetadata.thoughtsTokenCount,...s>0?{cacheReadTokens:s}:{}}}let r={results:n};return t&&(r.providerMetadata={...r.providerMetadata,google:{...r.providerMetadata?.google??{},mapsWidgetContextToken:t}}),r};createChatStreamResp=e=>this.createChatResp(e);createEmbedResp=e=>{let t;return this.isVertex?t=e.predictions.map(n=>n.embeddings.values):t=e.embeddings.map(n=>n.values),{embeddings:t}};supportsContextCache=e=>{let t=e;return dl.some(n=>t.includes(n)||n.includes(t))};buildCacheCreateOp=(e,t)=>{let n=e.model,r=t.contextCache?.ttlSeconds??3600,{tools:s,toolConfig:i,cacheableTools:a}=this.buildToolState(e,t),{systemInstruction:c,contents:u}=this.extractCacheableContent(e.chatPrompt);if(!c&&(!u||u.length===0)&&!a)return;let l={model:this.isVertex?n:`models/${n}`,ttl:`${r}s`,displayName:`ax-cache-${Date.now()}`};c&&(l.systemInstruction=c),u&&u.length>0&&(l.contents=u),a&&(s&&s.length>0&&(l.tools=s),i&&(l.toolConfig=i));let p;if(this.isVertex)p="/cachedContents";else{p="/cachedContents";let d=typeof this.apiKey=="function"?"ASYNC_KEY":this.apiKey;p+=`?key=${d}`}return{type:"create",apiConfig:{name:p,...this.isVertex?{url:this.getVertexApiURL(n,t?.noBeta)}:{}},request:l,parseResponse:d=>{let g=d;if(g?.name)return{name:g.name,expiresAt:g.expireTime,tokenCount:g.usageMetadata?.totalTokenCount}}}};getContextCacheToolState=(e,t)=>{let{tools:n,toolConfig:r,cacheableTools:s}=this.buildToolState(e,t);if(!s)return;let i=e.functions?.map(({cache:c,...u})=>u);if(!!(i&&i.length>0)||!!e.functionCall)return{functions:i,functionCall:e.functionCall};if(n||r)return{functions:[{name:"__gemini_tool_state__",description:JSON.stringify({tools:n,toolConfig:r})}]}};buildCacheUpdateTTLOp=(e,t,n,r)=>{let s={ttl:`${t}s`},i=`/${e}`;if(!this.isVertex&&this.apiKey){let a=typeof this.apiKey=="function"?"ASYNC_KEY":this.apiKey;i+=`?key=${a}`}return{type:"update",apiConfig:{name:i,headers:{"Content-Type":"application/json"},...this.isVertex&&n?{url:this.getVertexApiURL(n,r)}:{}},request:s,parseResponse:a=>{let c=a;if(c?.name)return{name:c.name,expiresAt:c.expireTime,tokenCount:c.usageMetadata?.totalTokenCount}}}};buildCacheDeleteOp=e=>{let t=`/${e}`;if(!this.isVertex&&this.apiKey){let n=typeof this.apiKey=="function"?"ASYNC_KEY":this.apiKey;t+=`?key=${n}`}return{type:"delete",apiConfig:{name:t,headers:{"Content-Type":"application/json"}},request:{},parseResponse:()=>{}}};prepareCachedChatReq=async(e,t,n)=>{let r=e.model,s=e.modelConfig?.stream??this.config.stream,{tools:i,toolConfig:a,cacheableTools:c}=this.buildToolState(e,t),{dynamicContents:u,dynamicSystemInstruction:l}=this.extractDynamicContent(e.chatPrompt),p;if(this.endpointId?p={name:s?`/${this.endpointId}:streamGenerateContent?alt=sse`:`/${this.endpointId}:generateContent`}:p={name:s?`/models/${r}:streamGenerateContent?alt=sse`:`/models/${r}:generateContent`},!this.isVertex){let f=s?"&":"?",h=typeof this.apiKey=="function"?await this.apiKey():this.apiKey;p.name+=`${f}key=${h}`}let d={maxOutputTokens:e.modelConfig?.maxTokens??this.config.maxTokens,temperature:e.modelConfig?.temperature??this.config.temperature,...e.modelConfig?.topP!==void 0?{topP:e.modelConfig.topP}:{},topK:e.modelConfig?.topK??this.config.topK,frequencyPenalty:e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,candidateCount:1,stopSequences:e.modelConfig?.stopSequences??this.config.stopSequences,responseMimeType:"text/plain"};gn(r)&&(d.temperature===void 0||d.temperature<1)&&(d.temperature=1);let g=this.config.safetySettings,m={contents:u,cachedContent:n,generationConfig:d,safetySettings:g};return c||(i&&i.length>0&&(m.tools=i),a&&(m.toolConfig=a)),l&&(m.systemInstruction=l),{apiConfig:p,request:m}};extractCacheableContent(e){let t,n=[],r=-1;for(let s=e.length-1;s>=0;s--){let i=e[s];if("cache"in i&&i.cache){r=s;break}}for(let s=0;s<e.length;s++){let i=e[s];if(i.role==="system"){t={role:"user",parts:[{text:i.content}]};continue}if(r>=0&&s<=r)if(i.role==="user"){let a=[];if(typeof i.content=="string")a.push({text:i.content});else if(Array.isArray(i.content))for(let c of i.content)switch(c.type){case"text":a.push({text:c.text});break;case"image":a.push({inlineData:{mimeType:c.mimeType,data:c.image}});break;case"audio":a.push({inlineData:{mimeType:`audio/${c.format??"mp3"}`,data:c.data}});break;case"file":"fileUri"in c?a.push({fileData:{mimeType:c.mimeType,fileUri:c.fileUri}}):a.push({inlineData:{mimeType:c.mimeType,data:c.data}});break}a.length>0&&n.push({role:"user",parts:a})}else if(i.role==="assistant"){let a=[],c=i.thoughtBlocks,u=i.functionCalls&&i.functionCalls.length>0,l=c?.[0]?.signature,p=c?.map(d=>d.data).join("")??"";if(p&&a.push({...u?{}:{thought:!0},text:p,...l&&!u?{thought_signature:l}:{}}),i.functionCalls)for(let[d,g]of i.functionCalls.entries()){let m;if(typeof g.function.params=="string")try{m=JSON.parse(g.function.params)}catch{m={}}else m=g.function.params??{};let f={functionCall:{name:g.function.name,args:m}};l&&d===0&&(f.thought_signature=l),a.push(f)}i.content&&a.push({text:i.content}),a.length>0&&n.push({role:"model",parts:a})}else i.role==="function"&&n.push({role:"user",parts:[{functionResponse:{name:ia(e,s,i.functionId),response:{result:i.result}}}]})}return{systemInstruction:t,contents:n}}extractDynamicContent(e){let n=[],r=-1;for(let s=e.length-1;s>=0;s--){let i=e[s];if("cache"in i&&i.cache){r=s;break}}for(let s=0;s<e.length;s++){let i=e[s];if(i.role!=="system"&&!(r>=0&&s<=r))if(i.role==="user"){let a=[];if(typeof i.content=="string")a.push({text:i.content});else if(Array.isArray(i.content)){for(let c of i.content)if(!("cache"in c&&c.cache))switch(c.type){case"text":a.push({text:c.text});break;case"image":a.push({inlineData:{mimeType:c.mimeType,data:c.image}});break;case"audio":a.push({inlineData:{mimeType:`audio/${c.format??"mp3"}`,data:c.data}});break;case"file":"fileUri"in c?a.push({fileData:{mimeType:c.mimeType,fileUri:c.fileUri}}):a.push({inlineData:{mimeType:c.mimeType,data:c.data}});break}}a.length>0&&n.push({role:"user",parts:a})}else if(i.role==="assistant"){let a=[],c=i.thoughtBlocks,u=i.functionCalls&&i.functionCalls.length>0,l=c?.[0]?.signature,p=c?.map(d=>d.data).join("")??"";if(p&&a.push({...u?{}:{thought:!0},text:p,...l&&!u?{thought_signature:l}:{}}),i.functionCalls)for(let[d,g]of i.functionCalls.entries()){let m;if(typeof g.function.params=="string")try{m=JSON.parse(g.function.params)}catch{m={}}else m=g.function.params??{};let f={functionCall:{name:g.function.name,args:m}};l&&d===0&&(f.thought_signature=l),a.push(f)}i.content&&a.push({text:i.content}),a.length>0&&n.push({role:"model",parts:a})}else i.role==="function"&&n.push({role:"user",parts:[{functionResponse:{name:ia(e,s,i.functionId),response:{result:i.result}}}]})}return{dynamicContents:n,dynamicSystemInstruction:void 0}}},Gn=class o extends Xe{static create(e){return new o(e)}constructor({apiKey:e,projectId:t,region:n,endpointId:r,config:s,options:i,models:a,modelInfo:c}){let u=t!==void 0&&n!==void 0,l={...ca(),...s},p,d,g;if(u){if(!e)throw new Error("GoogleGemini Vertex API key not set");if(typeof e!="function")throw new Error("GoogleGemini Vertex API key must be a function for token-based authentication");let x;r?x="endpoints":x="publishers/google";let A=n==="global"?"aiplatform":`${n}-aiplatform`;g=(y,C)=>`https://${A}.googleapis.com/${Gg(y,C)}/projects/${t}/locations/${n}/${x}`,p=g(l.model),d=async()=>({Authorization:`Bearer ${typeof e=="function"?await e():e}`})}else{if(!e)throw new Error("GoogleGemini AI API key not set");p="https://generativelanguage.googleapis.com/v1beta",d=async()=>({})}let m=new aa(l,u,r,e,i,g);c=[...as,...c??[]];let f=x=>{let A=Tt({model:x,modelInfo:c,models:a});return{functions:!0,streaming:!0,hasThinkingBudget:A?.supported?.thinkingBudget??!1,hasShowThoughts:A?.supported?.showThoughts??!1,structuredOutputs:A?.supported?.structuredOutputs??!1,media:{images:{supported:!0,formats:["image/jpeg","image/png","image/gif","image/webp"],maxSize:20*1024*1024,detailLevels:["high","low","auto"]},audio:{supported:!0,formats:["wav","mp3","aac","ogg"],maxDuration:9.5*60},files:{supported:!0,formats:["application/pdf","text/plain","text/csv","text/html","text/xml"],maxSize:2*1024*1024*1024,uploadMethod:"cloud"},urls:{supported:!0,webSearch:!0,contextFetching:!0}},caching:{supported:m.supportsContextCache(x),types:["persistent"]},thinking:A?.supported?.thinkingBudget??!1,multiTurn:!0}},h=a?.map(x=>{let A=x,y=A?.config;if(!y)return x;let C={};y.maxTokens!==void 0&&(C.maxTokens=y.maxTokens),y.temperature!==void 0&&(C.temperature=y.temperature),y.topP!==void 0&&(C.topP=y.topP),y.topK!==void 0&&(C.topK=y.topK),y.presencePenalty!==void 0&&(C.presencePenalty=y.presencePenalty),y.frequencyPenalty!==void 0&&(C.frequencyPenalty=y.frequencyPenalty),y.stopSequences!==void 0&&(C.stopSequences=y.stopSequences),y.endSequences!==void 0&&(C.endSequences=y.endSequences),y.stream!==void 0&&(C.stream=y.stream),y.n!==void 0&&(C.n=y.n);let R={...A};Object.keys(C).length>0&&(R.modelConfig={...A.modelConfig??{},...C});let I=y.thinking?.thinkingTokenBudget;if(typeof I=="number"){let M=l.thinkingTokenBudgetLevels,F=[["minimal",M?.minimal??200],["low",M?.low??800],["medium",M?.medium??5e3],["high",M?.high??1e4],["highest",M?.highest??24500]],P="minimal",N=Number.POSITIVE_INFINITY;for(let[T,E]of F){let O=Math.abs(I-E);O<N&&(N=O,P=T)}R.thinkingTokenBudget=P}return y.thinking?.includeThoughts!==void 0&&(R.showThoughts=!!y.thinking.includeThoughts),y.thinkingLevelMapping&&(R.thinkingLevelMapping=y.thinkingLevelMapping),y.thinkingTokenBudgetLevels&&(R.thinkingTokenBudgetLevels=y.thinkingTokenBudgetLevels),R});h?m.setModels(h):a&&m.setModels(a),super(m,{name:"GoogleGeminiAI",apiURL:p,headers:d,modelInfo:c,defaults:{model:l.model,embedModel:l.embedModel},options:i,supportFor:f,models:h??a})}};var Bg=new mt,Bn=class{options;maxTokens;refillRate;currentTokens;lastRefillTime;constructor(e,t,n){this.maxTokens=e,this.refillRate=t,this.currentTokens=e,this.lastRefillTime=Date.now(),this.options=n}refillTokens(){let e=Date.now(),n=(e-this.lastRefillTime)/1e3*this.refillRate;this.currentTokens=Math.min(this.maxTokens,this.currentTokens+n),this.lastRefillTime=e}async waitUntilTokensAvailable(e){if(this.refillTokens(),this.currentTokens>=e){this.currentTokens-=e;return}return this.options?.debug&&console.log(Bg.red(`Rate limiter: Waiting for ${e-this.currentTokens} tokens`)),await new Promise(t=>setTimeout(t,100)),this.waitUntilTokensAvailable(e)}async acquire(e){await this.waitUntilTokensAvailable(e)}};var Wr=(r=>(r.Llama3_8B="llama3-8b-8192",r.Llama33_70B="llama-3.3-70b-versatile",r.Mixtral_8x7B="mixtral-8x7b-32768",r.Gemma2_9B="gemma2-9b-it",r))(Wr||{});var us=[{name:"gemma2-9b-it",currency:"usd",characterIsToken:!0,promptTokenCostPer1M:.2,completionTokenCostPer1M:.2},{name:"llama-3.3-70b-versatile",currency:"usd",characterIsToken:!0,promptTokenCostPer1M:.59,completionTokenCostPer1M:.79},{name:"llama3-8b-8192",currency:"usd",characterIsToken:!0,promptTokenCostPer1M:.05,completionTokenCostPer1M:.08},{name:"mixtral-8x7b-32768",currency:"usd",characterIsToken:!0,promptTokenCostPer1M:.24,completionTokenCostPer1M:.24}];var jg=()=>structuredClone({model:"llama-3.3-70b-versatile",...Le()}),jn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("Groq API key not set");let i={...jg(),...t},a={...n,streamingUsage:!1};s=[...us,...s??[]];let c={functions:!0,streaming:!0,hasThinkingBudget:!1,hasShowThoughts:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0};super({apiKey:e,config:i,options:a,modelInfo:s,apiURL:"https://api.groq.com/openai/v1",models:r,supportFor:c}),super.setName("Groq"),this.setOptions(a)}setOptions=e=>{let t=this.newRateLimiter(e);super.setOptions({...e,rateLimiter:t})};newRateLimiter=e=>{if(e?.rateLimiter)return e.rateLimiter;let t=e?.tokensPerMinute??4800,n=new Bn(t,t/60,{debug:e?.debug});return async(s,i)=>{let a=i.modelUsage?.tokens?.totalTokens||0;return await n.acquire(a),await s()}}};var ls=[];var ps=(e=>(e.MetaLlama270BChatHF="meta-llama/Llama-2-70b-chat-hf",e))(ps||{});var la=()=>structuredClone({model:"meta-llama/Llama-2-70b-chat-hf",...Le()}),hl=()=>structuredClone({model:"meta-llama/Llama-2-70b-chat-hf",...Ze()}),ua=class{constructor(e){this.config=e}tokensUsed;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,n:e.n,presencePenalty:e.presencePenalty}}createChatReq=e=>{let t=e.model,n=e.functions?`Functions:
|
|
180
|
+
`))}function En(o){let e=n=>JSON.stringify(n,null,2);if(!o)throw new Error(`Chat request message item cannot be null or undefined, received: ${e(o)}`);let t=typeof o=="object"&&o!==null&&"role"in o&&typeof o.role=="string"?o.role:void 0;if(!t)throw new Error(`Chat request message must have a role, received: ${e(t)}`);switch(t){case"system":{let n=typeof o=="object"&&o!==null&&"content"in o&&typeof o.content=="string"?o.content:void 0;if(!n||n.trim()==="")throw new Error(`System message content cannot be empty or whitespace-only, received: ${e(n)}`);break}case"user":{let n=typeof o=="object"&&o!==null&&"content"in o?o.content:void 0;if(n===void 0)throw new Error(`User message content cannot be undefined, received: ${e(n)}`);if(typeof n=="string"){if(n.trim()==="")throw new Error(`User message content cannot be empty or whitespace-only, received: ${e(n)}`)}else if(Array.isArray(n)){if(n.length===0)throw new Error(`User message content array cannot be empty, received: ${e(n)}`);for(let r=0;r<n.length;r++){let s=n[r];if(!s||typeof s!="object")throw new Error(`User message content item at index ${r} must be an object, received: ${e(s)}`);let i=typeof s=="object"&&s!==null&&"type"in s&&typeof s.type=="string"?s.type:void 0;if(!i)throw new Error(`User message content item at index ${r} must have a type, received: ${e(i)}`);switch(i){case"text":{let a="text"in s&&typeof s.text=="string"?s.text:void 0;if(!a||a.trim()==="")throw new Error(`User message text content at index ${r} cannot be empty or whitespace-only, received: ${e(a)}`);break}case"image":{let a="image"in s&&typeof s.image=="string"?s.image:void 0,c="mimeType"in s&&typeof s.mimeType=="string"?s.mimeType:void 0;if(!a||a.trim()==="")throw new Error(`User message image content at index ${r} cannot be empty, received: ${e(a)}`);if(!c||c.trim()==="")throw new Error(`User message image content at index ${r} must have a mimeType, received: ${e(c)}`);break}case"audio":{let a="data"in s&&typeof s.data=="string"?s.data:void 0;if(!a||a.trim()==="")throw new Error(`User message audio content at index ${r} cannot be empty, received: ${e(a)}`);break}case"file":{let a="fileUri"in s&&typeof s.fileUri=="string",c="data"in s&&typeof s.data=="string";if(!a&&!c)throw new Error(`User message file content at index ${r} must have either 'data' or 'fileUri', received: ${e(s)}`);if(a&&c)throw new Error(`User message file content at index ${r} cannot have both 'data' and 'fileUri', received: ${e(s)}`);if(a){let l=s.fileUri;if(!l||l.trim()==="")throw new Error(`User message file content at index ${r} fileUri cannot be empty, received: ${e(l)}`)}if(c){let l=s.data;if(!l||l.trim()==="")throw new Error(`User message file content at index ${r} data cannot be empty, received: ${e(l)}`)}let u="mimeType"in s&&typeof s.mimeType=="string"?s.mimeType:null;if(!u||u.trim()==="")throw new Error(`User message file content at index ${r} must have a mimeType, received: ${e(u)}`);break}case"url":{let a="url"in s&&typeof s.url=="string"?s.url:void 0;if(!a||a.trim()==="")throw new Error(`User message url content at index ${r} cannot be empty, received: ${e(a)}`);break}default:throw new Error(`User message content item at index ${r} has unsupported type: ${e(i)}`)}}}else throw new Error(`User message content must be a string or array of content objects, received: ${e(n)}`);break}case"assistant":{let n=typeof o=="object"&&o!==null&&"content"in o?o.content:void 0,r=typeof o=="object"&&o!==null&&"functionCalls"in o?o.functionCalls:void 0,s=typeof o=="object"&&o!==null&&"thoughtBlocks"in o?o.thoughtBlocks:void 0,i=typeof n=="string"&&n.trim()!=="",a=Array.isArray(r)&&r.length>0,c=Array.isArray(s)&&s.length>0;if(!i&&!a&&!c&&Ft("Assistant message must include non-empty content, at least one function call, or thought blocks",{fieldPath:"content | functionCalls | thoughtBlocks",value:{content:n,functionCalls:r,thoughtBlocks:s},item:o}),n!==void 0&&typeof n!="string"&&Ft("Assistant message content must be a string",{fieldPath:"content",value:n,item:o}),r!==void 0&&!Array.isArray(r)&&Ft("Assistant message functionCalls must be an array when provided",{fieldPath:"functionCalls",value:r,item:o}),Array.isArray(r))for(let u=0;u<r.length;u++){let l=r[u];if((!l||typeof l!="object")&&Ft("functionCalls entry must be an object",{fieldPath:`functionCalls[${u}]`,value:l,item:o}),(!("id"in l)||typeof l.id!="string"||l.id.trim()==="")&&Ft("functionCalls entry must include a non-empty string id",{fieldPath:`functionCalls[${u}].id`,value:l.id,item:o}),(!("type"in l)||l.type!=="function")&&Ft("functionCalls entry must have type 'function'",{fieldPath:`functionCalls[${u}].type`,value:l.type,item:o}),!("function"in l)||!l.function)Ft("functionCalls entry must include a function object",{fieldPath:`functionCalls[${u}].function`,value:l.function,item:o});else{let p=l.function;(!("name"in p)||typeof p.name!="string"||p.name.trim()==="")&&Ft("functionCalls entry must include a non-empty function name",{fieldPath:`functionCalls[${u}].function.name`,value:p?.name,item:o}),p.params!==void 0&&typeof p.params!="string"&&typeof p.params!="object"&&Ft("functionCalls entry params must be a string or object when provided",{fieldPath:`functionCalls[${u}].function.params`,value:p.params,item:o})}}if(o.name!==void 0){let u=o.name;(typeof u!="string"||u.trim()==="")&&Ft("Assistant message name must be a non-empty string when provided",{fieldPath:"name",value:u,item:o})}break}case"function":{let n=typeof o=="object"&&o!==null&&"functionId"in o&&typeof o.functionId=="string"?o.functionId:void 0,r=typeof o=="object"&&o!==null&&"result"in o?o.result:void 0;if(!n||n.trim()==="")throw new Error(`Function message must have a non-empty functionId, received: ${e(n)}`);if(r==null)throw new Error(`Function message must have a result, received: ${e(r)}`);if(typeof r!="string")throw new Error(`Function message result must be a string, received: ${e(r)}`);o.isError!==void 0&&typeof o.isError!="boolean"&&Ft("Function message isError must be a boolean when provided",{fieldPath:"isError",value:o.isError,item:o});break}default:throw new Error(`Unsupported message role: ${e(t)}`)}}function Jo(o){let e=n=>JSON.stringify(n,null,2),t=Array.isArray(o)?o:[o];if(t.length===0)throw new Error(`Chat response results cannot be empty, received: ${e(t)}`);for(let n=0;n<t.length;n++){let r=t[n];if(!r)throw new Error(`Chat response result at index ${n} cannot be null or undefined, received: ${e(r)}`);if(typeof r.index!="number")throw new Error(`Chat response result at index ${n} must have a numeric index, received: ${e(r.index)}`);if(r.index<0)throw new Error(`Chat response result at index ${n} must have a non-negative index, received: ${e(r.index)}`);if(!r.content&&!r.thought&&(!r.thoughtBlocks||r.thoughtBlocks.length===0)&&!r.functionCalls&&!r.finishReason)throw new Error(`Chat response result at index ${n} must have at least one of: content, thought, thoughtBlocks, functionCalls, or finishReason, received: ${e({content:r.content,thought:r.thought,thoughtBlocks:r.thoughtBlocks,functionCalls:r.functionCalls,finishReason:r.finishReason})}`);if(r.content!==void 0&&typeof r.content!="string")throw new Error(`Chat response result content at index ${n} must be a string, received: ${e(r.content)}`);if(r.thought!==void 0&&typeof r.thought!="string")throw new Error(`Chat response result thought at index ${n} must be a string, received: ${e(r.thought)}`);if(r.thoughtBlocks!==void 0){if(!Array.isArray(r.thoughtBlocks))throw new Error(`Chat response result thoughtBlocks at index ${n} must be an array, received: ${e(r.thoughtBlocks)}`);for(let s=0;s<r.thoughtBlocks.length;s++){let i=r.thoughtBlocks[s];if(typeof i!="object"||i===null)throw new Error(`Chat response result thoughtBlocks[${s}] at index ${n} must be an object, received: ${e(i)}`);if(typeof i.data!="string")throw new Error(`Chat response result thoughtBlocks[${s}].data at index ${n} must be a string, received: ${e(i.data)}`);if(typeof i.encrypted!="boolean")throw new Error(`Chat response result thoughtBlocks[${s}].encrypted at index ${n} must be a boolean, received: ${e(i.encrypted)}`);if(i.signature!==void 0&&typeof i.signature!="string")throw new Error(`Chat response result thoughtBlocks[${s}].signature at index ${n} must be a string when provided, received: ${e(i.signature)}`)}}if(r.name!==void 0){if(typeof r.name!="string")throw new Error(`Chat response result name at index ${n} must be a string, received: ${e(r.name)}`);if(r.name.trim()==="")throw new Error(`Chat response result name at index ${n} cannot be empty or whitespace-only, received: ${e(r.name)}`)}if(r.annotations!==void 0){if(!Array.isArray(r.annotations))throw new Error(`Chat response result annotations at index ${n} must be an array, received: ${e(r.annotations)}`);for(let s=0;s<r.annotations.length;s++){let i=r.annotations[s];if(!i||typeof i!="object")throw new Error(`Chat response result annotation at index ${n}[${s}] must be an object, received: ${e(i)}`);if(i.type!=="url_citation")throw new Error(`Chat response result annotation at index ${n}[${s}] must have type 'url_citation', received: ${e(i.type)}`);if(!i.url_citation||typeof i.url_citation!="object")throw new Error(`Chat response result annotation at index ${n}[${s}] must have a valid url_citation object, received: ${e(i.url_citation)}`);if(typeof i.url_citation.url!="string")throw new Error(`Chat response result annotation at index ${n}[${s}] url_citation.url must be a string, received: ${e(i.url_citation.url)}`)}}if(r.id!==void 0){if(typeof r.id!="string")throw new Error(`Chat response result id at index ${n} must be a string, received: ${e(r.id)}`);if(r.id.trim()==="")throw new Error(`Chat response result id at index ${n} cannot be empty or whitespace-only, received: ${e(r.id)}`)}if(r.functionCalls!==void 0){if(!Array.isArray(r.functionCalls))throw new Error(`Chat response result functionCalls at index ${n} must be an array, received: ${e(r.functionCalls)}`);for(let s=0;s<r.functionCalls.length;s++){let i=r.functionCalls[s];if(!i)throw new Error(`Function call at index ${s} in result ${n} cannot be null or undefined, received: ${e(i)}`);if(!i.id||typeof i.id!="string"||i.id.trim()==="")throw new Error(`Function call at index ${s} in result ${n} must have a non-empty string id, received: ${e(i.id)}`);if(i.type!=="function")throw new Error(`Function call at index ${s} in result ${n} must have type 'function', received: ${e(i.type)}`);if(!i.function)throw new Error(`Function call at index ${s} in result ${n} must have a function object, received: ${e(i.function)}`);if(!i.function.name||typeof i.function.name!="string"||i.function.name.trim()==="")throw new Error(`Function call at index ${s} in result ${n} must have a non-empty function name, received: ${e(i.function.name)}`);if(i.function.params!==void 0&&typeof i.function.params!="string"&&typeof i.function.params!="object")throw new Error(`Function call params at index ${s} in result ${n} must be a string or object, received: ${e(i.function.params)}`)}}if(r.finishReason!==void 0){let s=["stop","length","function_call","content_filter","error"];if(!s.includes(r.finishReason))throw new Error(`Chat response result finishReason at index ${n} must be one of: ${s.join(", ")}, received: ${e(r.finishReason)}`)}}}var Vi=new Map;function Ig(o){return`${o.providerName}:${o.model}:${o.contentHash}`}function Ki(o){return Array.isArray(o)?o.map(e=>Ki(e)):o&&typeof o=="object"?Object.fromEntries(Object.entries(o).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,Ki(t)])):o}function Ji(o){return JSON.stringify(Ki(o))}function Zu(o){return typeof o=="string"?o:Ji(o)}function Rg(o){return o.functions?.some(e=>e.cache)??!1}function wg(o){if(Rg(o))return{functions:o.functions?.map(({cache:e,...t})=>t),functionCall:o.functionCall}}function vg(o,e){e.type==="text"?o.update(`text:${e.text}`):e.type==="image"?o.update(`image:${e.mimeType}:${e.image.slice(0,100)}`):e.type==="audio"?o.update(`audio:${e.format}:${e.data.slice(0,100)}`):e.type==="file"&&("fileUri"in e?o.update(`file:${e.mimeType}:${e.fileUri}`):o.update(`file:${e.mimeType}:${e.data.slice(0,100)}`))}function Sg(o,e){let t=bt("sha256"),{chatPrompt:n}=o,r=-1;for(let s=n.length-1;s>=0;s--){let i=n[s];if("cache"in i&&i.cache){r=s;break}}for(let s=0;s<n.length;s++){let i=n[s];if(i.role==="system"){t.update(`system:${i.content}`);continue}if(r>=0&&s<=r)if(i.role==="user"){if(typeof i.content=="string")t.update(`user:${i.content}`);else if(Array.isArray(i.content))for(let a of i.content)vg(t,a)}else if(i.role==="assistant"){if(i.content&&t.update(`assistant:${i.content}`),i.functionCalls)for(let a of i.functionCalls)t.update(`assistant_function:${a.function.name}:${Zu(a.function.params)}`)}else i.role==="function"&&t.update(`function:${i.functionId}:${i.result}`)}return e&&t.update(`tools:${Ji(e)}`),t.digest("hex")}var Le=()=>structuredClone({temperature:0}),Ze=()=>structuredClone({temperature:.4,frequencyPenalty:.2}),Xe=class{constructor(e,{name:t,apiURL:n,headers:r,modelInfo:s,defaults:i,options:a={},supportFor:c,models:u}){this.aiImpl=e;this.name=t,this.apiURL=n||"",this.headers=r,this.supportFor=c,this.tracer=a.tracer??ke.tracer,this.meter=a.meter??ke.meter,this.modelInfo=s,this.models=u,this.id=at();let l=this.getModel(i.model)??i.model,p=this.getEmbedModel(i.embedModel)??i.embedModel;if(this.defaults={model:l,embedModel:p},!i.model||typeof i.model!="string"||i.model==="")throw new Error("No model defined");this.setOptions(a),u&&kg(u)}#e=!1;#t=!1;rt;fetch;tracer;meter;timeout;excludeContentFromTrace;models;abortSignal;logger=ke.logger??Tu;corsProxy;retry;customLabels;contextCache;noBeta;modelInfo;modelUsage;embedModelUsage;defaults;lastUsedModelConfig;lastUsedChatModel;lastUsedEmbedModel;apiURL;name;id;headers;supportFor;metrics={latency:{chat:{mean:0,p95:0,p99:0,samples:[]},embed:{mean:0,p95:0,p99:0,samples:[]}},errors:{chat:{count:0,rate:0,total:0},embed:{count:0,rate:0,total:0}}};getMetricsInstruments(){return _u(this.meter)}setName(e){this.name=e}getId(){return this.id}setAPIURL(e){this.apiURL=e}setHeaders(e){this.headers=e}get debug(){return this.#e}setOptions(e){this.#e=e.debug??ke.debug??!1,this.#t=e.verbose??!1,this.rt=e.rateLimiter,this.fetch=e.fetch,this.timeout=e.timeout,this.tracer=e.tracer??ke.tracer,this.meter=e.meter??ke.meter,this.excludeContentFromTrace=e.excludeContentFromTrace,this.abortSignal=e.abortSignal,this.logger=e.logger??ke.logger??this.logger,this.corsProxy=e.corsProxy,this.retry=e.retry,this.customLabels=e.customLabels,this.contextCache=e.contextCache,this.noBeta=e.noBeta}getOptions(){return{debug:this.#e,verbose:this.#t,rateLimiter:this.rt,fetch:this.fetch,tracer:this.tracer,meter:this.meter,timeout:this.timeout,excludeContentFromTrace:this.excludeContentFromTrace,abortSignal:this.abortSignal,logger:this.logger,corsProxy:this.corsProxy,retry:this.retry,customLabels:this.customLabels,contextCache:this.contextCache,noBeta:this.noBeta}}getLogger(){return this.logger}getMergedCustomLabels(e){return pn(ke.customLabels,this.customLabels,e)}getModelList(){let e=[];for(let t of this.models??[])t.isInternal||("model"in t&&t.model&&e.push({key:t.key,description:t.description,model:t.model}),"embedModel"in t&&t.embedModel&&e.push({key:t.key,description:t.description,embedModel:t.embedModel}));return e}getName(){return this.name}getFeatures(e){return typeof this.supportFor=="function"?this.supportFor(e??this.defaults.model):this.supportFor}getLastUsedChatModel(){return this.lastUsedChatModel}getLastUsedEmbedModel(){return this.lastUsedEmbedModel}getLastUsedModelConfig(){return this.lastUsedModelConfig}calculatePercentile(e,t){if(e.length===0)return 0;let n=[...e].sort((s,i)=>s-i),r=Math.ceil(t/100*n.length)-1;return n[r]??0}updateLatencyMetrics(e,t,n){let r=this.metrics.latency[e];r.samples.push(t),r.samples.length>1e3&&r.samples.shift(),r.mean=r.samples.reduce((i,a)=>i+a,0)/r.samples.length,r.p95=this.calculatePercentile(r.samples,95),r.p99=this.calculatePercentile(r.samples,99);let s=this.getMetricsInstruments();if(s){let i=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel,a=this.getMergedCustomLabels(n);Nu(s,e,t,this.name,i,a),Lu(s,e,r.mean,r.p95,r.p99,this.name,i,a)}}updateErrorMetrics(e,t,n){let r=this.metrics.errors[e];r.total++,t&&r.count++,r.rate=r.count/r.total;let s=this.getMetricsInstruments();if(s){let i=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel,a=this.getMergedCustomLabels(n);Uu(s,e,this.name,i,a),t&&$u(s,e,this.name,i,a),Du(s,e,r.rate,this.name,i,a)}}recordTokenUsage(e,t,n){let r=this.getMetricsInstruments();if(r&&e?.tokens){let{promptTokens:s,completionTokens:i,totalTokens:a,thoughtsTokens:c,cacheReadTokens:u,cacheCreationTokens:l}=e.tokens,p=this.getMergedCustomLabels(t);if(s&&$r(r,"input",s,this.name,e.model,p),i&&$r(r,"output",i,this.name,e.model,p),a&&$r(r,"total",a,this.name,e.model,p),c&&$r(r,"thoughts",c,this.name,e.model,p),u&&Wi(r,"read",u,this.name,e.model,p),l&&Wi(r,"write",l,this.name,e.model,p),n){let d=this.estimateCostByName(e.model,e);d>0&&zu(r,n,d,this.name,e.model,p)}}}calculateRequestSize(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}calculateResponseSize(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}detectMultimodalContent(e){let t=!1,n=!1;if(e.chatPrompt&&Array.isArray(e.chatPrompt)){for(let r of e.chatPrompt)if(r.role==="user"&&Array.isArray(r.content))for(let s of r.content)s.type==="image"?t=!0:s.type==="audio"&&(n=!0)}return{hasImages:t,hasAudio:n}}calculateContextWindowUsage(e,t){if(!t?.tokens?.promptTokens)return 0;let n=it({model:e,modelInfo:this.modelInfo});return n?.contextWindow?t.tokens.promptTokens/n.contextWindow:0}estimateCostByName(e,t){if(!t?.tokens)return 0;let n=it({model:e,modelInfo:this.modelInfo});if(!n||!n.promptTokenCostPer1M&&!n.completionTokenCostPer1M)return 0;let{promptTokens:r=0,completionTokens:s=0,thoughtsTokens:i=0,cacheReadTokens:a=0,cacheCreationTokens:c=0}=t.tokens,u=r+a,l=n.longContextThreshold!==void 0&&u>n.longContextThreshold,p=l?n.longContextPromptTokenCostPer1M??n.promptTokenCostPer1M??0:n.promptTokenCostPer1M??0,d=l?n.longContextCompletionTokenCostPer1M??n.completionTokenCostPer1M??0:n.completionTokenCostPer1M??0,g=l?n.longContextCacheReadTokenCostPer1M??n.cacheReadTokenCostPer1M??p:n.cacheReadTokenCostPer1M??p,m=n.cacheWriteTokenCostPer1M??p,f=s+i;return r*p/1e6+f*d/1e6+a*g/1e6+c*m/1e6}recordFunctionCallMetrics(e,t,n){let r=this.getMetricsInstruments();if(!(!r||!e))for(let s of e)s&&typeof s=="object"&&"function"in s&&s.function&&typeof s.function=="object"&&"name"in s.function&&Bu(r,s.function.name,void 0,this.name,t,this.getMergedCustomLabels(n))}recordTimeoutMetric(e,t){let n=this.getMetricsInstruments();if(n){let r=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel;Wu(n,e,this.name,r,this.getMergedCustomLabels(t))}}recordAbortMetric(e,t){let n=this.getMetricsInstruments();if(n){let r=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel;Vu(n,e,this.name,r,this.getMergedCustomLabels(t))}}recordChatMetrics(e,t,n){let r=this.getMetricsInstruments();if(!r)return;let s=this.lastUsedChatModel,i=this.lastUsedModelConfig,a=this.getMergedCustomLabels(t?.customLabels),c=i?.stream??!1;Gu(r,"chat",c,this.name,s,a);let{hasImages:u,hasAudio:l}=this.detectMultimodalContent(e);Ju(r,u,l,this.name,s,a);let p=ze(e.chatPrompt);qu(r,p,this.name,s,a),ju(r,i?.temperature,i?.maxTokens,this.name,s,a),t?.thinkingTokenBudget&&this.modelUsage?.tokens?.thoughtsTokens&&Ku(r,this.modelUsage.tokens.thoughtsTokens,this.name,s,a);let d=this.calculateRequestSize(e);if(qi(r,"chat",d,this.name,s,a),n&&!c){let g=n,m=this.calculateResponseSize(g);if(Hi(r,"chat",m,this.name,s,a),g.results)for(let h of g.results)h.functionCalls&&this.recordFunctionCallMetrics(h.functionCalls,this.lastUsedChatModel,a);let f=this.calculateContextWindowUsage(this.lastUsedChatModel,g.modelUsage);f>0&&Hu(r,f,this.name,s,a)}}recordEmbedMetrics(e,t,n){let r=this.getMetricsInstruments();if(!r)return;let s=this.lastUsedEmbedModel,i=this.getMergedCustomLabels(n?.customLabels),a=this.calculateRequestSize(e);qi(r,"embed",a,this.name,s,i);let c=this.calculateResponseSize(t);Hi(r,"embed",c,this.name,s,i)}getMetrics(){return structuredClone(this.metrics)}getEstimatedCost(e){return e?this.estimateCostByName(e.model,e):0}async chat(e,t){let n=performance.now(),r=!1,s,i=this.getModelByKey(e.model),a=i?i.thinkingTokenBudget:void 0,c={...this.noBeta!==void 0?{noBeta:this.noBeta}:void 0,...i?{thinkingTokenBudget:a,showThoughts:i.showThoughts,stream:i.stream,debug:i.debug,useExpensiveModel:i.useExpensiveModel,noBeta:i.noBeta}:void 0,...Object.fromEntries(Object.entries(t??{}).filter(([,u])=>u!==void 0))};try{return s=await this._chat1(e,c),s}catch(u){throw r=!0,u instanceof Error&&(u.message.includes("timeout")||u.name==="TimeoutError"?this.recordTimeoutMetric("chat",c?.customLabels):(u.message.includes("abort")||u.name==="AbortError")&&this.recordAbortMetric("chat",c?.customLabels)),u}finally{let u=performance.now()-n;this.updateLatencyMetrics("chat",u,c?.customLabels),this.updateErrorMetrics("chat",r,c?.customLabels),r||this.recordChatMetrics(e,c,s)}}async _chat1(e,t){let n=this.getModel(e.model)??e.model??this.defaults.model;if(Array.isArray(e.chatPrompt))for(let c of e.chatPrompt)En(c);let r=this.getModelByKey(e.model),s={...this.aiImpl.getModelConfig(),...r?r.modelConfig:void 0,...e.modelConfig},i=it({model:n,modelInfo:this.modelInfo});if(i?.notSupported?.temperature&&"temperature"in s&&delete s.temperature,i?.notSupported?.topP&&"topP"in s&&delete s.topP,i?.isExpensive&&t?.useExpensiveModel!=="yes")throw new Error(`Model ${n} is marked as expensive and requires explicit confirmation. Set useExpensiveModel: "yes" to proceed.`);return s.stream=(t?.stream!==void 0?t.stream:s.stream)??!0,this.getFeatures(n).streaming||(s.stream=!1),this.tracer?await this.tracer.startActiveSpan("AI Chat Request",{kind:xt.SERVER,attributes:{[ve.LLM_SYSTEM]:this.name,[ve.LLM_OPERATION_NAME]:"chat",[ve.LLM_REQUEST_MODEL]:n,[ve.LLM_REQUEST_MAX_TOKENS]:s.maxTokens??"Not set",[ve.LLM_REQUEST_TEMPERATURE]:s.temperature,[ve.LLM_REQUEST_TOP_P]:s.topP??"Not set",[ve.LLM_REQUEST_TOP_K]:s.topK??"Not set",[ve.LLM_REQUEST_FREQUENCY_PENALTY]:s.frequencyPenalty??"Not set",[ve.LLM_REQUEST_PRESENCE_PENALTY]:s.presencePenalty??"Not set",[ve.LLM_REQUEST_STOP_SEQUENCES]:s.stopSequences?.join(", ")??"Not set",[ve.LLM_REQUEST_LLM_IS_STREAMING]:s.stream??"Not set"}},t?.traceContext??tn.active(),async c=>await this._chat2(n,s,e,t,c)):await this._chat2(n,s,e,t)}cleanupFunctionSchema(e){let t={...e};if(t.parameters){let n={...t.parameters};Array.isArray(n.required)&&n.required.length===0&&delete n.required,n.properties&&Object.keys(n.properties).length===0&&delete n.properties,Object.keys(n).length===0||Object.keys(n).length===1&&n.type==="object"?delete t.parameters:t.parameters=n}return t}async _chat2(e,t,n,r,s){if(!this.aiImpl.createChatReq)throw new Error("createChatReq not implemented");let i=r?.debug??this.#e,a=r?.verbose??this.#t,c;n.functions&&n.functions.length>0&&(c=n.functions.map(y=>this.cleanupFunctionSchema(y)));let u={...n,model:e,functions:c,modelConfig:t};this.lastUsedChatModel=e,this.lastUsedModelConfig=t,i&&Ru(u.chatPrompt,r?.stepIndex??0,r?.logger??this.logger,r?.debugHideSystemPrompt);let l=this.getFeatures(e).functions,p=r?.functionCallMode??"auto",g=p==="prompt"||p==="auto"&&!l?{...u,chatPrompt:u.chatPrompt.map(y=>{if(y.role==="assistant"){let{content:C,name:R,cache:I}=y;return{role:"assistant",content:C,name:R,cache:I}}return y.role==="function"?{role:"user",content:y.result}:y}),functions:[]}:u,m=await this.handleContextCaching(e,g,r,s),f=async()=>{if(m?.preparedRequest){let{apiConfig:I,request:M}=m.preparedRequest;return s?.isRecording()&&Yu(n,s,this.excludeContentFromTrace),await ut({name:I.name,url:I.url??this.apiURL,localCall:I.localCall,headers:await this.buildHeaders(I.headers),stream:t.stream,timeout:this.timeout,verbose:a,fetch:this.fetch,span:s,abortSignal:r?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:r?.retry??this.retry},M)}let[y,C]=await this.aiImpl.createChatReq(g,r);return s?.isRecording()&&Yu(n,s,this.excludeContentFromTrace),await ut({name:y.name,url:y.url??this.apiURL,localCall:y.localCall,headers:await this.buildHeaders(y.headers),stream:t.stream,timeout:this.timeout,verbose:a,fetch:this.fetch,span:s,abortSignal:r?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:r?.retry??this.retry},C)},h=r?.rateLimiter??this.rt,x=h?await h(f,{modelUsage:this.modelUsage}):await f();if(t.stream){if(!this.aiImpl.createChatStreamResp)throw new Error("createChatStreamResp not implemented");let y=this.aiImpl.createChatStreamResp.bind(this),C=F=>P=>{let N=y(P,F);if(N.sessionId=r?.sessionId,!N.modelUsage){let T=this.aiImpl.getTokenUsage();T&&(N.modelUsage={ai:this.name,model:e,tokens:T})}return this.modelUsage=N.modelUsage,this.recordTokenUsage(N.modelUsage,r?.customLabels,"chat"),s?.isRecording()&&Xu(N,s,this.excludeContentFromTrace),N},R=async F=>{s?.isRecording()&&s.end(),i&&vu(F,r?.logger??this.logger)};if(typeof window<"u"){let F=x,P={},N=[],T=r?.abortSignal??this.abortSignal;return new ReadableStream({start:E=>{let O=F.getReader(),S=()=>{try{O.cancel().catch(()=>{})}catch{}try{this.recordAbortMetric("chat",r?.customLabels)}catch{}try{s?.isRecording()&&s.end()}catch{}try{E.error(new DOMException("Aborted","AbortError"))}catch{E.error(new Error("Aborted"))}};if(T){if(T.aborted){S();return}T.addEventListener("abort",S,{once:!0})}async function k(){try{for(;;){let{done:_,value:$}=await O.read();if(_){R&&await R(N),E.close();break}let B=C(P)($);B&&(N.push(B),E.enqueue(B))}}catch(_){if(E.error(_),s?.isRecording())try{s.end()}catch{}}finally{if(O.releaseLock(),T)try{T.removeEventListener("abort",S)}catch{}}}k()}})}return x.pipeThrough(new Ho(C({}),R))}if(!this.aiImpl.createChatResp)throw new Error("createChatResp not implemented");let A=this.aiImpl.createChatResp(x);if(A.sessionId=r?.sessionId,!A.modelUsage){let y=this.aiImpl.getTokenUsage();y&&(A.modelUsage={ai:this.name,model:e,tokens:y})}return A.modelUsage&&(this.modelUsage=A.modelUsage,this.recordTokenUsage(A.modelUsage,r?.customLabels,"chat")),s?.isRecording()&&(Xu(A,s,this.excludeContentFromTrace),s.end()),i&&wu(A,r?.logger??this.logger),A}async embed(e,t){let n=performance.now(),r=!1,s,i=this.getModelByKey(e.embedModel),a={...this.noBeta!==void 0?{noBeta:this.noBeta}:void 0,...i?{thinkingTokenBudget:i.thinkingTokenBudget,showThoughts:i.showThoughts,stream:i.stream,debug:i.debug,useExpensiveModel:i.useExpensiveModel,noBeta:i.noBeta}:void 0,...t};try{return s=await this._embed1(e,a),s}catch(c){throw r=!0,c instanceof Error&&(c.message.includes("timeout")||c.name==="TimeoutError"?this.recordTimeoutMetric("embed",a?.customLabels):(c.message.includes("abort")||c.name==="AbortError")&&this.recordAbortMetric("embed",a?.customLabels)),c}finally{let c=performance.now()-n;this.updateLatencyMetrics("embed",c,a?.customLabels),this.updateErrorMetrics("embed",r,a?.customLabels),!r&&s&&this.recordEmbedMetrics(e,s,a)}}async _embed1(e,t){let n=this.getEmbedModel(e.embedModel)??e.embedModel??this.defaults.embedModel;if(!n)throw new Error("No embed model defined");return this.tracer?await this.tracer.startActiveSpan("AI Embed Request",{kind:xt.SERVER,attributes:{[ve.LLM_SYSTEM]:this.name,[ve.LLM_OPERATION_NAME]:"embeddings",[ve.LLM_REQUEST_MODEL]:n}},t?.traceContext??tn.active(),async r=>await this._embed2(n,e,t,r)):await this._embed2(n,e,t)}async _embed2(e,t,n,r){if(!this.aiImpl.createEmbedReq)throw new Error("createEmbedReq not implemented");if(!this.aiImpl.createEmbedResp)throw new Error("createEmbedResp not implemented");let s=this.aiImpl.createEmbedReq.bind(this.aiImpl),i=n?.debug??this.#e,a=n?.verbose??this.#t,c={...t,embedModel:e};this.lastUsedEmbedModel=e,i&&Mu(c.texts??[],e,n?.logger??this.logger);let u=async()=>{let[g,m]=await s(c,n);return await ut({name:g.name,url:g.url??this.apiURL,localCall:g.localCall,headers:await this.buildHeaders(g.headers),verbose:a,fetch:this.fetch,timeout:this.timeout,span:r,abortSignal:n?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:n?.retry??this.retry},m)},l=n?.rateLimiter??this.rt,p=l?await l(u,{modelUsage:this.embedModelUsage}):await u(),d=this.aiImpl.createEmbedResp?.(p);if(d.sessionId=n?.sessionId,!d.modelUsage){let g=this.aiImpl.getTokenUsage();g&&(d.modelUsage={ai:this.name,model:e,tokens:g})}return this.embedModelUsage=d.modelUsage,this.recordTokenUsage(d.modelUsage,n?.customLabels,"embed"),r?.isRecording()&&d.modelUsage?.tokens&&r.addEvent(Pt.GEN_AI_USAGE,{[ve.LLM_USAGE_INPUT_TOKENS]:d.modelUsage.tokens.promptTokens,[ve.LLM_USAGE_OUTPUT_TOKENS]:d.modelUsage.tokens.completionTokens??0,[ve.LLM_USAGE_TOTAL_TOKENS]:d.modelUsage.tokens.totalTokens}),i&&Pu(d.embeddings,n?.logger??this.logger),r?.end(),d}async buildHeaders(e={}){return{...e,...await this.headers()}}getModelByKey(e){return e?this.models?.find(n=>n.key===e):void 0}getModel(e){let t=this.getModelByKey(e);return t&&"model"in t?t.model:void 0}getEmbedModel(e){let t=this.getModelByKey(e);return t&&"embedModel"in t?t.embedModel:void 0}async handleContextCaching(e,t,n,r){let s=n?.contextCache;if(!s)return null;let i=this.aiImpl.supportsContextCache?.(e)??!1,a=this.aiImpl.supportsImplicitCaching?.(e)??!1;if(!i&&!a)throw new Error(`Context caching is not supported by this provider/model (${this.getName()}/${e}). Remove the contextCache option or use a provider that supports caching.`);if(!i)return null;let c=s.ttlSeconds??3600,u=s.refreshWindowSeconds??300,l=s.minTokens??2048;if(s.name)return this.useCacheByName(e,t,s.name,n,r);let p=this.getContextCacheToolState(t,s),d=Sg(t,p);if(!d||d===bt("sha256").digest("hex"))return null;let g={providerName:this.getName(),model:String(e),contentHash:d},m=Ig(g),f=Date.now(),h=s.registry,x=h?await h.get(m):Vi.get(m);if(x&&x.expiresAt>f){if(x.expiresAt-f<u*1e3&&this.aiImpl.buildCacheUpdateTTLOp){await this.executeCacheOperation(this.aiImpl.buildCacheUpdateTTLOp(x.cacheName,c,t.model,n?.noBeta),n,r);let R={cacheName:x.cacheName,expiresAt:f+c*1e3,tokenCount:x.tokenCount};h?await h.set(m,R):Vi.set(m,{...R,contentHash:d,lastTouchedAt:f})}return this.useCacheByName(e,t,x.cacheName,n,r)}if(this.estimateCacheableTokens(t,p)<l)return null;let y=this.aiImpl.buildCacheCreateOp?.(t,n);if(y){let C=await this.executeCacheOperation(y,n,r);if(C){let R={cacheName:C.name,expiresAt:new Date(C.expiresAt).getTime(),tokenCount:C.tokenCount};return h?await h.set(m,R):Vi.set(m,{...R,contentHash:d,lastTouchedAt:f}),this.useCacheByName(e,t,C.name,n,r)}}return null}async useCacheByName(e,t,n,r,s){if(this.aiImpl.prepareCachedChatReq){let i=await this.aiImpl.prepareCachedChatReq(t,r??{},n);return{preparedRequest:{apiConfig:i.apiConfig,request:i.request}}}return null}getContextCacheToolState(e,t){if(t)return this.aiImpl.getContextCacheToolState?.(e,{contextCache:t})??wg(e)}async executeCacheOperation(e,t,n){let r=t?.verbose??this.#t;try{n?.addEvent("context_cache.operation",{type:e.type,endpoint:e.apiConfig.name});let s=await ut({name:e.apiConfig.name,url:e.apiConfig.url??this.apiURL,localCall:e.apiConfig.localCall,headers:await this.buildHeaders(e.apiConfig.headers),stream:!1,timeout:this.timeout,verbose:r,fetch:this.fetch,span:n,abortSignal:t?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:t?.retry??this.retry},e.request);return e.parseResponse(s)}catch(s){n?.addEvent("context_cache.error",{type:e.type,error:s instanceof Error?s.message:String(s)});return}}estimateCacheableTokens(e,t){let{chatPrompt:n}=e,r=0;for(let s of n){if(s.role==="system"){r+=s.content.length;continue}if("cache"in s&&s.cache)if(s.role==="user"){if(typeof s.content=="string")r+=s.content.length;else if(Array.isArray(s.content))for(let i of s.content)"cache"in i&&i.cache&&(i.type==="text"?r+=i.text.length:i.type==="image"?r+=1e3:i.type==="audio"?r+=2e3:i.type==="file"&&(r+=500))}else if(s.role==="assistant"){if(s.content&&(r+=s.content.length),s.functionCalls)for(let i of s.functionCalls)r+=i.function.name.length,r+=Zu(i.function.params).length}else s.role==="function"&&(r+=s.functionId.length,r+=s.result.length)}return t&&(r+=Ji(t).length),Math.ceil(r/4)}};function Yu(o,e,t){let n=[];if(o.chatPrompt&&Array.isArray(o.chatPrompt)&&o.chatPrompt.length>0)for(let s of o.chatPrompt)switch(s.role){case"system":if(s.content){let i={};t||(i.content=s.content),e.addEvent(Pt.GEN_AI_SYSTEM_MESSAGE,i)}break;case"user":if(typeof s.content=="string")n.push(s.content);else if(Array.isArray(s.content))for(let i of s.content)i.type==="text"&&n.push(i.text);break;case"assistant":{let i=s.functionCalls?.map(a=>({id:a.id,type:a.type,function:a.function.name,arguments:a.function.params}));if(i&&i.length>0){let a={function_calls:JSON.stringify(i,null,2)};!t&&s.content&&(a.content=s.content),e.addEvent(Pt.GEN_AI_ASSISTANT_MESSAGE,a)}else if(s.content){let a={};t||(a.content=s.content),e.addEvent(Pt.GEN_AI_ASSISTANT_MESSAGE,a)}break}case"function":{let i={id:s.functionId};t||(i.content=s.result),e.addEvent(Pt.GEN_AI_TOOL_MESSAGE,i);break}}let r={};t||(r.content=n.join(`
|
|
181
|
+
`)),e.addEvent(Pt.GEN_AI_USER_MESSAGE,r)}function Xu(o,e,t){if(o.modelUsage?.tokens){let n=o.modelUsage.tokens.thoughtsTokens?{[ve.LLM_USAGE_THOUGHTS_TOKENS]:o.modelUsage.tokens.thoughtsTokens}:{};e.addEvent(Pt.GEN_AI_USAGE,{[ve.LLM_USAGE_INPUT_TOKENS]:o.modelUsage.tokens.promptTokens,[ve.LLM_USAGE_OUTPUT_TOKENS]:o.modelUsage.tokens.completionTokens??0,[ve.LLM_USAGE_TOTAL_TOKENS]:o.modelUsage.tokens.totalTokens,...n})}if(o.results)for(let n=0;n<o.results.length;n++){let r=o.results[n];if(!r||!r.content&&!r.thought&&!r.functionCalls?.length&&!r.finishReason)continue;let s=r.functionCalls?.map(a=>({id:a.id,type:a.type,function:a.function.name,arguments:a.function.params})),i={};s&&s.length>0?(t||(i.content=r.content),i.tool_calls=s):t||(i.content=r.content??""),e.addEvent(Pt.GEN_AI_CHOICE,{finish_reason:r.finishReason,index:n,message:JSON.stringify(i,null,2)})}}function Qi(o){let e=0;for(let t of o){if(!t||typeof t!="object")throw new Error(`AxMessage array validation failed: Item at index ${e} is not a valid message object`);if(t.role!=="user"&&t.role!=="assistant")throw new Error(`AxMessage array validation failed: Item at index ${e} has invalid role: ${t.role}`);e++}}function kg(o){let e=new Set;for(let t of o){if(e.has(t.key))throw new Error(`Duplicate model key detected: "${t.key}". Each model key must be unique.`);e.add(t.key)}}var Dr=(h=>(h.Claude46Opus="claude-opus-4-6",h.Claude46Sonnet="claude-sonnet-4-6",h.Claude45Opus="claude-opus-4-5-20251101",h.Claude41Opus="claude-opus-4-1-20250805",h.Claude4Opus="claude-opus-4-20250514",h.Claude4Sonnet="claude-sonnet-4-20250514",h.Claude45Sonnet="claude-sonnet-4-5-20250929",h.Claude45Haiku="claude-haiku-4-5",h.Claude37Sonnet="claude-3-7-sonnet-latest",h.Claude35Sonnet="claude-3-5-sonnet-latest",h.Claude35Haiku="claude-3-5-haiku-latest",h.Claude3Opus="claude-3-opus-latest",h.Claude3Sonnet="claude-3-sonnet-20240229",h.Claude3Haiku="claude-3-haiku-20240307",h.Claude21="claude-2.1",h.ClaudeInstant12="claude-instant-1.2",h))(Dr||{}),Ur=(m=>(m.Claude46Opus="claude-opus-4-6",m.Claude46Sonnet="claude-sonnet-4-6",m.Claude45Opus="claude-opus-4-5@20251101",m.Claude41Opus="claude-opus-4-1@20250805",m.Claude4Opus="claude-opus-4@20250514",m.Claude45Sonnet="claude-sonnet-4-5@20250929",m.Claude4Sonnet="claude-sonnet-4@20250514",m.Claude37Sonnet="claude-3-7-sonnet@20250219",m.Claude35SonnetV2="claude-3-5-sonnet-v2@20241022",m.Claude45Haiku="claude-haiku-4-5@20251001",m.Claude35Haiku="claude-3-5-haiku@20241022",m.Claude35Sonnet="claude-3-5-sonnet@20240620",m.Claude3Opus="claude-3-opus@20240229",m.Claude3Haiku="claude-3-haiku@20240307",m))(Ur||{});var Gr=[{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:128e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:128e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5-20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5@20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5-20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5@20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-haiku-4-5",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-haiku-4-5@20251001",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-opus-4-1-20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-1@20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4@20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4@20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet@20250219",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet@20240620",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet-v2@20241022",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-haiku-latest",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:4,cacheReadTokenCostPer1M:.08,cacheWriteTokenCostPer1M:1,maxTokens:8192},{name:"claude-3-5-haiku@20241022",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:8192},{name:"claude-3-opus-latest",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-opus@20240229",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-sonnet-20240229",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-haiku-20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,maxTokens:4096},{name:"claude-3-haiku@20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,maxTokens:4096},{name:"claude-2.1",currency:"usd",promptTokenCostPer1M:8,completionTokenCostPer1M:25,maxTokens:4096},{name:"claude-instant-1.2",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:2.24,maxTokens:4096}];var nn=o=>{if(!o||typeof o!="object")return o;let e={...o};if(e.type==="object"||Array.isArray(e.type)&&e.type.includes("object")){if(!e.properties||Object.keys(e.properties).length===0)return e;e.additionalProperties===void 0&&(e.additionalProperties=!1)}return delete e.optional,e.properties&&typeof e.properties=="object"&&(e.properties=Object.fromEntries(Object.entries(e.properties).map(([n,r])=>[n,nn(r)]))),e.items&&(e.items=nn(e.items)),Array.isArray(e.anyOf)&&(e.anyOf=e.anyOf.map(n=>nn(n))),Array.isArray(e.allOf)&&(e.allOf=e.allOf.map(n=>nn(n))),Array.isArray(e.oneOf)&&(e.oneOf=e.oneOf.map(n=>nn(n))),e},Xi=()=>structuredClone({model:"claude-3-7-sonnet-latest",maxTokens:4e4,thinkingTokenBudgetLevels:{minimal:1024,low:5e3,medium:1e4,high:2e4,highest:32e3},effortLevelMapping:{minimal:"low",low:"low",medium:"medium",high:"high",highest:"max"},...Le()}),tl=()=>structuredClone({model:"claude-3-7-sonnet@20250219",maxTokens:4e4,thinkingTokenBudgetLevels:{minimal:1024,low:5e3,medium:1e4,high:2e4,highest:32e3},effortLevelMapping:{minimal:"low",low:"low",medium:"medium",high:"high",highest:"max"},...Le()}),Yi=class{constructor(e,t){this.config=e;this.isVertex=t}tokensUsed;currentPromptConfig;usedStructuredOutput=!1;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens??4096,temperature:e.temperature,topP:e.topP,topK:e.topK,stream:e.stream,stopSequences:e.stopSequences,endSequences:e.endSequences,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,n:e.n}}createChatReq=async(e,t)=>{this.currentPromptConfig=t;let n=e.model,r=e.modelConfig?.stream??this.config.stream,s;this.isVertex?s={name:r?`/models/${n}:streamRawPredict?alt=sse`:`/models/${n}:rawPredict`}:s={name:"/messages"};let i;if(e.functionCall&&e.functions&&e.functions.length>0)if(typeof e.functionCall=="string")switch(e.functionCall){case"auto":i={tool_choice:{type:"auto"}};break;case"required":i={tool_choice:{type:"any"}};break;case"none":throw new Error("functionCall none not supported")}else if("function"in e.functionCall)i={tool_choice:{type:"tool",name:e.functionCall.function.name}};else throw new Error("Invalid function call type, must be string or object");let a=e.chatPrompt.some(k=>"cache"in k&&k.cache)||e.functions?.some(k=>k.cache),c=e.chatPrompt.filter(k=>k.role==="system"),u=c.map((k,_)=>({type:"text",text:k.content,...k.cache||a&&_===c.length-1?{cache_control:{type:"ephemeral"}}:{}})),l=e.chatPrompt.filter(k=>k.role!=="system"),p=e.functions?.map((k,_,$)=>{let B={type:"object",properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]},U=k.parameters?nn(k.parameters):void 0;return U===void 0||U&&typeof U=="object"&&Object.keys(U).length===0?U={...B}:U&&typeof U=="object"&&U.type==="object"&&(!("properties"in U)||!U.properties||Object.keys(U.properties).length===0)&&(U={...U,properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]}),{name:k.name,description:k.description,input_schema:U,...k.cache||a&&_===$.length-1?{cache_control:{type:"ephemeral"}}:{}}}),g=(this.config.tools??[]).map(k=>k&&typeof k=="object"&&"type"in k?k:{name:k.name,description:k.description,input_schema:k.input_schema?nn(k.input_schema):void 0,...k.cache_control?{cache_control:k.cache_control}:{}}),m=[...p??[],...g];m.length===0&&(m=void 0);let f=e.modelConfig?.maxTokens??this.config.maxTokens,h=e.modelConfig?.stopSequences??this.config.stopSequences,x=e.modelConfig?.temperature,A=e.modelConfig?.topP,y=e.modelConfig?.topK??this.config.topK,C=e.modelConfig?.n??this.config.n;if(C&&C>1)throw new Error("Anthropic does not support sampling (n > 1)");let R=k=>k.includes("claude-opus-4-6"),I=k=>k.includes("claude-opus-4-5"),M,F,P=n;if(t?.thinkingTokenBudget){let k=this.config.thinkingTokenBudgetLevels,_=this.config.effortLevelMapping;if(t.thinkingTokenBudget==="none")M=void 0,F=void 0;else{let $=t.thinkingTokenBudget;if(R(P))M={type:"adaptive"},F={effort:_?.[$]??"medium"};else if(I(P)){M={type:"enabled",budget_tokens:k?.[$]??1e4};let U=_?.[$]??"medium";U==="max"&&(U="high"),F={effort:U}}else M={type:"enabled",budget_tokens:k?.[$]??1e4}}}let T=Og(l,!!M);T.some(k=>k.role==="assistant"&&Array.isArray(k.content)&&k.content.length>0&&k.content[0]?.type==="tool_use")&&(M=void 0,F=void 0);let O;if(this.usedStructuredOutput=!1,e.responseFormat&&e.responseFormat.type==="json_schema"&&e.responseFormat.schema){let k=e.responseFormat.schema.schema||e.responseFormat.schema;O={type:"json_schema",schema:nn(k)},this.usedStructuredOutput=!0}let S={...this.isVertex?{anthropic_version:"vertex-2023-10-16"}:{model:n},...f?{max_tokens:f}:{},...h&&h.length>0?{stop_sequences:h}:{},...x!==void 0&&!M?{temperature:x}:{},...A!==void 0&&(!M||A>=.95)?{top_p:A}:{},...y&&!M?{top_k:y}:{},...i,...m?{tools:m}:{},...r?{stream:!0}:{},...u?{system:u}:{},...M?{thinking:M}:{},...F?{output_config:F}:{},...O?{output_format:O}:{},messages:T};return[s,S]};createChatResp=e=>{if(e.type==="error")throw new We(e.error.message,void 0,void 0);let t=el(e.stop_reason),n=this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1,r="",s=[],i=[],a=[];for(let l of e.content)switch(l.type){case"text":if(r+=l.text??"",Array.isArray(l.citations))for(let p of l.citations)p?.url&&a.push({url:String(p.url),title:typeof p.title=="string"?p.title:void 0,snippet:typeof p.cited_text=="string"?p.cited_text:void 0});break;case"thinking":if(n){let p=l.thinking??"",d=l.signature;i.push({data:p,encrypted:!1,...typeof d=="string"?{signature:d}:{}})}break;case"redacted_thinking":if(n){let p=l.data??"",d=l.signature;i.push({data:p,encrypted:!0,...typeof d=="string"?{signature:d}:{}})}break;case"tool_use":s.push({id:l.id,type:"function",function:{name:l.name,params:l.input}});break}let c={index:0,id:e.id,finishReason:t};r&&(c.content=r),i.length>0&&(c.thoughtBlocks=i,c.thought=i.map(l=>l.data).join("")),s.length>0&&(c.functionCalls=s),a.length>0&&(c.citations=a);let u=[c];return this.tokensUsed={promptTokens:e.usage.input_tokens,completionTokens:e.usage.output_tokens,totalTokens:e.usage.input_tokens+e.usage.output_tokens+(e.usage.cache_creation_input_tokens||0)+(e.usage.cache_read_input_tokens||0),cacheCreationTokens:e.usage.cache_creation_input_tokens,cacheReadTokens:e.usage.cache_read_input_tokens},{results:u,remoteId:e.id}};createChatStreamResp=(e,t)=>{if(!("type"in e))throw new Error("Invalid Anthropic streaming event");let n=t;if(n.indexIdMap||(n.indexIdMap={}),e.type==="error"){let{error:s}=e;throw new We(s.message,void 0,void 0)}let r=0;if(e.type==="message_start"){let{message:s}=e,i=[{index:r,content:"",id:s.id}];return this.tokensUsed={promptTokens:s.usage?.input_tokens??0,completionTokens:s.usage?.output_tokens??0,totalTokens:(s.usage?.input_tokens??0)+(s.usage?.output_tokens??0)+(s.usage?.cache_creation_input_tokens??0)+(s.usage?.cache_read_input_tokens??0),cacheCreationTokens:s.usage?.cache_creation_input_tokens,cacheReadTokens:s.usage?.cache_read_input_tokens},{results:i}}if(e.type==="content_block_start"){let{content_block:s}=e;if(s.type==="text"){let i=[];if(Array.isArray(s.citations))for(let a of s.citations)a?.url&&i.push({url:String(a.url),title:typeof a.title=="string"?a.title:void 0,snippet:typeof a.cited_text=="string"?a.cited_text:void 0});return{results:[{index:r,content:s.text,...i.length?{citations:i}:{}}]}}if(s.type==="thinking")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:r,thought:s.thinking,thoughtBlocks:[{data:s.thinking,encrypted:!1}]}]}:{results:[{index:r,content:""}]};if(s.type==="tool_use"&&typeof s.id=="string"&&typeof e.index=="number"&&!n.indexIdMap[e.index]){n.indexIdMap[e.index]=s.id;let i=[{id:s.id,type:"function",function:{name:s.name,params:""}}];return{results:[{index:r,functionCalls:i}]}}if(s.type==="web_search_tool_result"||s.type==="server_tool_use")return{results:[{index:r,content:""}]}}if(e.type==="content_block_delta"){let{delta:s}=e;if(s.type==="citations_delta"){let i=s.citation;if(i&&typeof i.url=="string"&&i.url.length>0){let a=[{url:String(i.url),title:typeof i.title=="string"?i.title:void 0,snippet:typeof i.cited_text=="string"?i.cited_text:void 0}];return{results:[{index:r,content:"",citations:a}]}}return{results:[{index:r,content:""}]}}if(s.type==="text_delta"){let i=[];if(Array.isArray(s.citations))for(let a of s.citations)a?.url&&i.push({url:String(a.url),title:typeof a.title=="string"?a.title:void 0,snippet:typeof a.cited_text=="string"?a.cited_text:void 0});return{results:[{index:r,content:s.text,...i.length?{citations:i}:{}}]}}if(s.type==="thinking_delta")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:r,thought:s.thinking,thoughtBlocks:[{data:s.thinking,encrypted:!1}]}]}:{results:[{index:r,content:""}]};if(s.type==="signature_delta")return{results:[{index:r,thoughtBlocks:[{data:"",encrypted:!1,signature:s.signature}]}]};if(s.type==="input_json_delta"){let i=n.indexIdMap[e.index];if(!i)return{results:[{index:r,content:""}]};let a=[{id:i,type:"function",function:{name:"",params:s.partial_json}}];return{results:[{index:r,functionCalls:a}]}}}if(e.type==="message_delta"){let{delta:s,usage:i}=e;return this.tokensUsed={promptTokens:this.tokensUsed?.promptTokens??0,completionTokens:i.output_tokens,totalTokens:(this.tokensUsed?.promptTokens??0)+i.output_tokens+(this.tokensUsed?.cacheCreationTokens??0)+(this.tokensUsed?.cacheReadTokens??0),cacheCreationTokens:this.tokensUsed?.cacheCreationTokens,cacheReadTokens:this.tokensUsed?.cacheReadTokens},{results:[{index:r,content:"",finishReason:el(s.stop_reason)}]}}return{results:[{index:r,content:""}]}};supportsImplicitCaching=()=>!0},Mn=class o extends Xe{static create(e){return new o(e)}constructor({apiKey:e,projectId:t,region:n,config:r,options:s,models:i}){let a=t!==void 0&&n!==void 0,c,u;if(a){if(!e)throw new Error("Anthropic Vertex API key not set");if(typeof e!="function")throw new Error("Anthropic Vertex API key must be a function for token-based authentication");c=`https://${n==="global"?"aiplatform":`${n}-aiplatform`}.googleapis.com/v1/projects/${t}/locations/${n}/publishers/anthropic/`,u=async()=>({Authorization:`Bearer ${await e()}`,"anthropic-beta":"web-search-2025-03-05"})}else{if(!e)throw new Error("Anthropic API key not set");c="https://api.anthropic.com/v1",u=async()=>({"anthropic-version":"2023-06-01","anthropic-beta":"structured-outputs-2025-11-13, web-search-2025-03-05","x-api-key":typeof e=="function"?await e():e})}let l={...Xi(),...r},p=new Yi(l,a),d=m=>{let f=it({model:m,modelInfo:Gr,models:i});return{functions:!0,streaming:!0,hasThinkingBudget:f?.supported?.thinkingBudget??!1,hasShowThoughts:f?.supported?.showThoughts??!1,structuredOutputs:f?.supported?.structuredOutputs??!1,functionCot:!0,media:{images:{supported:!0,formats:["image/jpeg","image/png","image/gif","image/webp"],maxSize:5*1024*1024,detailLevels:["high","low","auto"]},audio:{supported:!1,formats:[],maxDuration:0},files:{supported:!1,formats:[],maxSize:0,uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!0,types:["ephemeral"],cacheBreakpoints:!1},thinking:f?.supported?.thinkingBudget??!1,multiTurn:!0}},g=i?.map(m=>{let f=m,h=f?.config;if(!h)return m;let x={};h.maxTokens!==void 0&&(x.maxTokens=h.maxTokens),h.temperature!==void 0&&(x.temperature=h.temperature),h.topP!==void 0&&(x.topP=h.topP),h.topK!==void 0&&(x.topK=h.topK),h.presencePenalty!==void 0&&(x.presencePenalty=h.presencePenalty),h.frequencyPenalty!==void 0&&(x.frequencyPenalty=h.frequencyPenalty),h.stopSequences!==void 0&&(x.stopSequences=h.stopSequences),h.endSequences!==void 0&&(x.endSequences=h.endSequences),h.stream!==void 0&&(x.stream=h.stream),h.n!==void 0&&(x.n=h.n);let A={...f};Object.keys(x).length>0&&(A.modelConfig={...f.modelConfig??{},...x});let y=h.thinking?.thinkingTokenBudget;if(typeof y=="number"){let C=l.thinkingTokenBudgetLevels,R=[["minimal",C?.minimal??1024],["low",C?.low??5e3],["medium",C?.medium??1e4],["high",C?.high??2e4],["highest",C?.highest??32e3]],I="minimal",M=Number.POSITIVE_INFINITY;for(let[F,P]of R){let N=Math.abs(y-P);N<M&&(M=N,I=F)}A.thinkingTokenBudget=I}return h.thinking?.includeThoughts!==void 0&&(A.showThoughts=!!h.thinking.includeThoughts),A});super(p,{name:"Anthropic",apiURL:c,headers:u,modelInfo:Gr,defaults:{model:l.model},options:s,supportFor:d,models:g??i})}};function Og(o,e){let t=o.map(r=>{switch(r.role){case"function":return{role:"user",content:[{type:"tool_result",content:r.result,tool_use_id:r.functionId,...r.isError?{is_error:!0}:{},...r.cache?{cache:{type:"ephemeral"}}:{}}]};case"user":return typeof r.content=="string"?{role:"user",content:r.content,...r.cache?{cache_control:{type:"ephemeral"}}:{}}:{role:"user",content:r.content.map(i=>{switch(i.type){case"text":return{type:"text",text:i.text,...i.cache?{cache_control:{type:"ephemeral"}}:{}};case"image":return{type:"image",source:{type:"base64",media_type:i.mimeType,data:i.image},...i.cache?{cache_control:{type:"ephemeral"}}:{}};default:throw new Error("Invalid content type")}})};case"assistant":{let s="",i=[],a=r.thoughtBlocks;if(Array.isArray(a)&&a.length>0)for(let c of a)c.encrypted?i.push(c.signature?{type:"redacted_thinking",data:c.data,signature:c.signature}:{type:"redacted_thinking",data:c.data}):i.push(c.signature?{type:"thinking",thinking:c.data,signature:c.signature}:{type:"thinking",thinking:c.data});if(typeof r.content=="string"&&(i.length>0?s=[...i,{type:"text",text:r.content}]:s=r.content),typeof r.functionCalls<"u"&&(s=r.functionCalls.map(c=>{let u={};if(typeof c.function.params=="string"){let l=c.function.params;if(l.trim().length===0)u={};else try{u=JSON.parse(l)}catch{throw new Error(`Failed to parse function params JSON: ${l}`)}}else typeof c.function.params=="object"&&(u=c.function.params);return{type:"tool_use",id:c.id,name:c.function.name,input:u,...r.cache?{cache_control:{type:"ephemeral"}}:{}}}),Array.isArray(s)&&i.length>0&&(s=[...i,...s])),r.cache){if(typeof s=="string")s=[{type:"text",text:s,cache_control:{type:"ephemeral"}}];else if(Array.isArray(s)&&s.length>0){let c=s.length-1,u=s[c];u&&u.type==="text"&&(s[c]={...u,cache_control:{type:"ephemeral"}})}}return{role:"assistant",content:s}}default:throw new Error("Invalid role")}}),n=Eg(t);return Mg(n)}function Eg(o){let e=[];for(let[t,n]of o.entries()){if(n.role!=="assistant"){e.push(n);continue}if(t>0&&o.at(t-1)?.role==="assistant"){let r=e.pop();e.push({...r||{},...n})}else e.push(n)}return e}function Mg(o){return o.map(e=>e.role==="assistant"&&typeof e.content=="string"?{...e,content:e.content.replace(/\s+$/,"")}:e)}function el(o){if(o)switch(o){case"stop_sequence":return"stop";case"max_tokens":return"length";case"tool_use":return"function_call";case"end_turn":return"stop";default:return"stop"}}var Br=(D=>(D.GPT4="gpt-4",D.GPT41="gpt-4.1",D.GPT41Mini="gpt-4.1-mini",D.GPT41Nano="gpt-4.1-nano",D.GPT4O="gpt-4o",D.GPT4OMini="gpt-4o-mini",D.GPT4ChatGPT4O="chatgpt-4o-latest",D.GPT4Turbo="gpt-4-turbo",D.GPT35Turbo="gpt-3.5-turbo",D.GPT35TurboInstruct="gpt-3.5-turbo-instruct",D.GPT35TextDavinci002="text-davinci-002",D.GPT3TextBabbage002="text-babbage-002",D.GPT3TextAda001="text-ada-001",D.GPT5="gpt-5",D.GPT5Nano="gpt-5-nano",D.GPT5Mini="gpt-5-mini",D.GPT5Chat="gpt-5-chat",D.GPT5ChatLatest="gpt-5-chat-latest",D.GPT5Codex="gpt-5-codex",D.GPT5Pro="gpt-5-pro",D.GPT51="gpt-5.1",D.GPT51ChatLatest="gpt-5.1-chat-latest",D.GPT51Codex="gpt-5.1-codex",D.GPT51CodexMini="gpt-5.1-codex-mini",D.GPT51CodexMax="gpt-5.1-codex-max",D.GPT52="gpt-5.2",D.GPT52ChatLatest="gpt-5.2-chat-latest",D.GPT52Codex="gpt-5.2-codex",D.GPT52Pro="gpt-5.2-pro",D.GPT54="gpt-5.4",D.GPT54Mini="gpt-5.4-mini",D.GPT54Nano="gpt-5.4-nano",D.O1="o1",D.O1Mini="o1-mini",D.O3="o3",D.O3Mini="o3-mini",D.O4Mini="o4-mini",D))(Br||{}),Pn=(n=>(n.TextEmbeddingAda002="text-embedding-ada-002",n.TextEmbedding3Small="text-embedding-3-small",n.TextEmbedding3Large="text-embedding-3-large",n))(Pn||{});var Fn=(J=>(J.GPT4="gpt-4",J.GPT41="gpt-4.1",J.GPT41Mini="gpt-4.1-mini",J.GPT41Nano="gpt-4.1-nano",J.GPT4O="gpt-4o",J.GPT4OMini="gpt-4o-mini",J.GPT4ChatGPT4O="chatgpt-4o-latest",J.GPT4Turbo="gpt-4-turbo",J.GPT35Turbo="gpt-3.5-turbo",J.GPT35TurboInstruct="gpt-3.5-turbo-instruct",J.GPT35TextDavinci002="text-davinci-002",J.GPT3TextBabbage002="text-babbage-002",J.GPT3TextAda001="text-ada-001",J.GPT5="gpt-5",J.GPT5Nano="gpt-5-nano",J.GPT5Mini="gpt-5-mini",J.GPT5Chat="gpt-5-chat",J.GPT5ChatLatest="gpt-5-chat-latest",J.GPT5Codex="gpt-5-codex",J.GPT5Pro="gpt-5-pro",J.GPT51="gpt-5.1",J.GPT51ChatLatest="gpt-5.1-chat-latest",J.GPT51Codex="gpt-5.1-codex",J.GPT51CodexMini="gpt-5.1-codex-mini",J.GPT51CodexMax="gpt-5.1-codex-max",J.GPT52="gpt-5.2",J.GPT52ChatLatest="gpt-5.2-chat-latest",J.GPT52Codex="gpt-5.2-codex",J.GPT52Pro="gpt-5.2-pro",J.GPT54="gpt-5.4",J.GPT54Mini="gpt-5.4-mini",J.GPT54Nano="gpt-5.4-nano",J.O1Pro="o1-pro",J.O1="o1",J.O1Mini="o1-mini",J.O3Pro="o3-pro",J.O3="o3",J.O3Mini="o3-mini",J.O4Mini="o4-mini",J))(Fn||{});var _n=[{name:"gpt-4",currency:"usd",promptTokenCostPer1M:30,completionTokenCostPer1M:60},{name:"gpt-4.1",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,supported:{structuredOutputs:!0}},{name:"gpt-4.1-mini",currency:"usd",promptTokenCostPer1M:.4,completionTokenCostPer1M:1.6,supported:{structuredOutputs:!0}},{name:"gpt-4.1-nano",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,supported:{structuredOutputs:!0}},{name:"gpt-4o",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:15,supported:{structuredOutputs:!0}},{name:"gpt-4o-mini",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:.6,supported:{structuredOutputs:!0}},{name:"chatgpt-4o-latest",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:15,supported:{structuredOutputs:!0}},{name:"gpt-4-turbo",currency:"usd",promptTokenCostPer1M:10,completionTokenCostPer1M:30,supported:{structuredOutputs:!0}},{name:"gpt-3.5-turbo",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5},{name:"gpt-5-nano",currency:"usd",promptTokenCostPer1M:.05,completionTokenCostPer1M:.4,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-chat",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-pro",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:120,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-codex",currency:"usd",promptTokenCostPer1M:10,completionTokenCostPer1M:40,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-codex",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-codex-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-codex-max",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:20,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2-chat-latest",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2-codex",currency:"usd",promptTokenCostPer1M:1.5,completionTokenCostPer1M:6,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2-pro",currency:"usd",promptTokenCostPer1M:20,completionTokenCostPer1M:160,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.4",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:15,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.4-mini",currency:"usd",promptTokenCostPer1M:.75,completionTokenCostPer1M:4.5,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.4-nano",currency:"usd",promptTokenCostPer1M:.2,completionTokenCostPer1M:1.25,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"o1",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:60,supported:{structuredOutputs:!0}},{name:"o1-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:14.4,supported:{structuredOutputs:!0}},{name:"o3",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:60,supported:{structuredOutputs:!0}},{name:"o4-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:4.4,supported:{structuredOutputs:!0}},{name:"text-embedding-ada-002",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.1},{name:"text-embedding-3-small",currency:"usd",promptTokenCostPer1M:.02,completionTokenCostPer1M:.02},{name:"text-embedding-3-large",currency:"usd",promptTokenCostPer1M:.13,completionTokenCostPer1M:.13}],Qo=[{name:"gpt-4",currency:"usd",promptTokenCostPer1M:30,completionTokenCostPer1M:60},{name:"gpt-4.1",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,supported:{structuredOutputs:!0}},{name:"gpt-4.1-mini",currency:"usd",promptTokenCostPer1M:.4,completionTokenCostPer1M:1.6,supported:{structuredOutputs:!0}},{name:"gpt-4.1-nano",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,supported:{structuredOutputs:!0}},{name:"gpt-4o",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:15,supported:{structuredOutputs:!0}},{name:"gpt-4o-mini",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:.6,supported:{structuredOutputs:!0}},{name:"chatgpt-4o-latest",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:15,supported:{structuredOutputs:!0}},{name:"gpt-4-turbo",currency:"usd",promptTokenCostPer1M:10,completionTokenCostPer1M:30,supported:{structuredOutputs:!0}},{name:"gpt-3.5-turbo",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5},{name:"gpt-5-nano",currency:"usd",promptTokenCostPer1M:.05,completionTokenCostPer1M:.4,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-chat",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-pro",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:120,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-codex",currency:"usd",promptTokenCostPer1M:10,completionTokenCostPer1M:40,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-codex",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-codex-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-codex-max",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:20,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2-chat-latest",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2-codex",currency:"usd",promptTokenCostPer1M:1.5,completionTokenCostPer1M:6,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2-pro",currency:"usd",promptTokenCostPer1M:20,completionTokenCostPer1M:160,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.4",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:15,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.4-mini",currency:"usd",promptTokenCostPer1M:.75,completionTokenCostPer1M:4.5,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.4-nano",currency:"usd",promptTokenCostPer1M:.2,completionTokenCostPer1M:1.25,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o1-pro",currency:"usd",promptTokenCostPer1M:150,completionTokenCostPer1M:600,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0},isExpensive:!0},{name:"o1",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:60,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o3-pro",currency:"usd",promptTokenCostPer1M:20,completionTokenCostPer1M:80,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0},isExpensive:!0},{name:"o3",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:60,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o3-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:4.4,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o4-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:4.4,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}}];var Pg=o=>{let e=["o1","o1-mini","o3","o3-mini","o4-mini","o1-pro","o3-pro"];return e.includes(o)||e.includes(o)},dn=()=>structuredClone({model:"gpt-5-mini",embedModel:"text-embedding-3-small",...Le()}),Yo=()=>structuredClone({...dn(),model:"gpt-5"}),Xo=()=>structuredClone({model:"gpt-5-mini",embedModel:"text-embedding-3-small",...Ze()}),Zo=()=>({...dn(),model:"gpt-5-nano"}),Zi=class{constructor(e,t,n,r,s){this.config=e;this.streamingUsage=t;this.chatReqUpdater=n;this.chatRespProcessor=r;this.chatStreamRespProcessor=s}tokensUsed;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,endSequences:e.endSequences,topP:e.topP,n:e.n,stream:e.stream}}createChatReq=(e,t)=>{let n=e.model;if(!e.chatPrompt||e.chatPrompt.length===0)throw new Error("Chat prompt is empty");let r={name:"/chat/completions"},s=e.functions?.map(g=>({type:"function",function:{name:g.name,description:g.description,parameters:g.parameters}})),i=!e.functionCall&&e.functions&&e.functions.length>0?"auto":e.functionCall,a=Fg(e),c=e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,u=e.modelConfig?.stream??this.config.stream,l=this.config.store,p=Pg(n),d={model:n,messages:a,...e.responseFormat?{response_format:e.responseFormat.type==="json_schema"?{type:"json_schema",json_schema:e.responseFormat.schema}:e.responseFormat}:this.config?.responseFormat?{response_format:{type:this.config.responseFormat}}:{},...s?{tools:s}:{},...i?{tool_choice:i}:{},...p?{}:{...(e.modelConfig?.maxTokens??this.config.maxTokens)!==void 0?{max_completion_tokens:e.modelConfig?.maxTokens??this.config.maxTokens}:{},...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},...e.modelConfig?.topP!==void 0?{top_p:e.modelConfig.topP}:{},...(e.modelConfig?.n??this.config.n)!==void 0?{n:e.modelConfig?.n??this.config.n}:{},...(e.modelConfig?.presencePenalty??this.config.presencePenalty)!==void 0?{presence_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty}:{},...c!==void 0?{frequency_penalty:c}:{}},...(e.modelConfig?.stopSequences??this.config.stop)&&(e.modelConfig?.stopSequences??this.config.stop).length>0?{stop:e.modelConfig?.stopSequences??this.config.stop}:{},...this.config.logitBias!==void 0?{logit_bias:this.config.logitBias}:{},...u&&this.streamingUsage?{stream:!0,stream_options:{include_usage:!0}}:{},...l?{store:l}:{},...this.config.serviceTier?{service_tier:this.config.serviceTier}:{},...this.config.user?{user:this.config.user}:{}};if(this.config.reasoningEffort&&(d.reasoning_effort=this.config.reasoningEffort),this.config.webSearchOptions&&(d.web_search_options={...this.config.webSearchOptions.searchContextSize&&{search_context_size:this.config.webSearchOptions.searchContextSize},...this.config.webSearchOptions.userLocation&&{user_location:{approximate:{type:"approximate",...this.config.webSearchOptions.userLocation.approximate.city&&{city:this.config.webSearchOptions.userLocation.approximate.city},...this.config.webSearchOptions.userLocation.approximate.country&&{country:this.config.webSearchOptions.userLocation.approximate.country},...this.config.webSearchOptions.userLocation.approximate.region&&{region:this.config.webSearchOptions.userLocation.approximate.region},...this.config.webSearchOptions.userLocation.approximate.timezone&&{timezone:this.config.webSearchOptions.userLocation.approximate.timezone}}}}}),t?.thinkingTokenBudget)switch(t.thinkingTokenBudget){case"none":d.reasoning_effort=void 0;break;case"minimal":d.reasoning_effort="minimal";break;case"low":d.reasoning_effort="medium";break;case"medium":d.reasoning_effort="high";break;case"high":d.reasoning_effort="high";break;case"highest":d.reasoning_effort="high";break}if(!d.reasoning_effort&&t?.thinkingTokenBudget)switch(t.thinkingTokenBudget){case"minimal":d.reasoning_effort="minimal";break;case"low":d.reasoning_effort="medium";break;case"medium":case"high":case"highest":d.reasoning_effort="high";break}return this.chatReqUpdater&&(d=this.chatReqUpdater(d,t)),[r,d]};createEmbedReq=e=>{let t=e.embedModel;if(!t)throw new Error("Embed model not set");if(!e.texts||e.texts.length===0)throw new Error("Embed texts is empty");let n={name:"/embeddings"},r={model:t,input:e.texts,dimensions:this.config.dimensions};return[n,r]};createChatResp(e){let{id:t,usage:n,choices:r,error:s}=e;if(s)throw s;this.tokensUsed=n?{promptTokens:n.prompt_tokens,completionTokens:n.completion_tokens,totalTokens:n.total_tokens}:void 0;let a={results:r.map(c=>{if(c.message.refusal)throw new We(c.message.refusal,e.model,e.id);let u=nl(c.finish_reason),l=c.message.tool_calls?.map(({id:p,function:{arguments:d,name:g}})=>({id:p,type:"function",function:{name:g,params:d}}));return{index:c.index,id:`${c.index}`,content:c.message.content??void 0,thought:c.message.reasoning_content,citations:c.message.annotations?.filter(p=>p?.type==="url_citation"&&p.url_citation).map(p=>({url:p.url_citation?.url,title:p.url_citation?.title,description:p.url_citation?.description})),functionCalls:l,finishReason:u}}),remoteId:t};return this.chatRespProcessor?this.chatRespProcessor(a):a}createChatStreamResp=(e,t)=>{let{id:n,usage:r,choices:s}=e;this.tokensUsed=r?{promptTokens:r.prompt_tokens,completionTokens:r.completion_tokens,totalTokens:r.total_tokens}:void 0;let i=t;i.indexIdMap||(i.indexIdMap={});let c={results:s.map(({index:u,delta:{content:l,role:p,refusal:d,tool_calls:g,reasoning_content:m,annotations:f},finish_reason:h})=>{if(d)throw new We(d,void 0,n);let x=nl(h),A=g?.map(({id:y,index:C,function:{name:R,arguments:I}})=>{typeof y=="string"&&typeof C=="number"&&!i.indexIdMap[C]&&(i.indexIdMap[C]=y);let M=i.indexIdMap[C];return M?{id:M,type:"function",function:{name:R,params:I}}:null}).filter(y=>y!==null);return{index:u,content:l??void 0,role:p,thought:m,citations:f?.filter(y=>y?.type==="url_citation"&&y.url_citation).map(y=>({url:y.url_citation?.url,title:y.url_citation?.title,description:y.url_citation?.description})),functionCalls:A,finishReason:x,id:n}})};return this.chatStreamRespProcessor?this.chatStreamRespProcessor(c,t):c};createEmbedResp(e){let{data:t,usage:n}=e;return this.tokensUsed=n?{promptTokens:n.prompt_tokens,completionTokens:n.completion_tokens,totalTokens:n.total_tokens}:void 0,{embeddings:t.map(r=>r.embedding)}}},nl=o=>{switch(o){case"stop":return"stop";case"length":return"length";case"content_filter":return"error";case"tool_calls":return"function_call"}};function Fg(o){return o.chatPrompt.map(t=>{switch(t.role){case"system":return{role:"system",content:t.content};case"user":{let n=Array.isArray(t.content)?t.content.map(r=>{switch(r.type){case"text":return{type:"text",text:r.text};case"image":return{type:"image_url",image_url:{url:`data:${r.mimeType};base64,${r.image}`,details:r.details??"auto"}};case"audio":return{type:"input_audio",input_audio:{data:r.data,format:r.format==="wav"?"wav":void 0}};default:throw new Error("Invalid content type")}}):t.content;return{role:"user",...t.name?{name:t.name}:{},content:n}}case"assistant":{let n=t.functionCalls?.map(r=>({id:r.id,type:"function",function:{name:r.function.name,arguments:typeof r.function.params=="object"?JSON.stringify(r.function.params):r.function.params}}));if(n&&n.length>0)return{role:"assistant",...t.content?{content:t.content}:{},name:t.name,tool_calls:n};if(t.content===void 0)throw new Error("Assistant content is required when no tool calls are provided");return{role:"assistant",content:t.content,...t.name?{name:t.name}:{}}}case"function":return{role:"tool",content:t.result,tool_call_id:t.functionId};default:throw new Error("Invalid role")}})}var Qe=class extends Xe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:s,models:i,chatReqUpdater:a,chatRespProcessor:c,chatStreamRespProcessor:u,supportFor:l}){if(!e||e==="")throw new Error("OpenAI API key not set");let p=new Zi(t,n?.streamingUsage??!0,a,c,u);super(p,{name:"OpenAI",apiURL:r||"https://api.openai.com/v1",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:s,defaults:{model:t.model,embedModel:t.embedModel},options:n,supportFor:l,models:i})}},Nn=class extends Qe{constructor({apiKey:e,apiURL:t,config:n,options:r,models:s,modelInfo:i}){if(!e||e==="")throw new Error("OpenAI API key not set");i=[..._n,...i??[]];let a=u=>{let l=it({model:u,modelInfo:i,models:s});return{functions:!0,streaming:!0,hasThinkingBudget:l?.supported?.thinkingBudget??!1,hasShowThoughts:l?.supported?.showThoughts??!1,structuredOutputs:l?.supported?.structuredOutputs??!1,media:{images:{supported:!0,formats:["image/jpeg","image/png","image/gif","image/webp"],maxSize:20*1024*1024,detailLevels:["high","low","auto"]},audio:{supported:!0,formats:["wav","mp3","ogg"],maxDuration:25*60},files:{supported:!0,formats:["text/plain","application/pdf","image/jpeg","image/png"],maxSize:512*1024*1024,uploadMethod:"upload"},urls:{supported:!1,webSearch:!0,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:l?.supported?.thinkingBudget??!1,multiTurn:!0}},c=s?.map(u=>{let l=u,p=l?.config;if(!p)return u;let d={};p.maxTokens!==void 0&&(d.maxTokens=p.maxTokens),p.temperature!==void 0&&(d.temperature=p.temperature),p.topP!==void 0&&(d.topP=p.topP),p.presencePenalty!==void 0&&(d.presencePenalty=p.presencePenalty),p.frequencyPenalty!==void 0&&(d.frequencyPenalty=p.frequencyPenalty);let g=p.stopSequences??p.stop;g!==void 0&&(d.stopSequences=g),p.n!==void 0&&(d.n=p.n),p.stream!==void 0&&(d.stream=p.stream);let m={...l};Object.keys(d).length>0&&(m.modelConfig={...l.modelConfig??{},...d});let f=p?.thinking?.thinkingTokenBudget;if(typeof f=="number"){let h=[["minimal",200],["low",800],["medium",5e3],["high",1e4],["highest",24500]],x="minimal",A=Number.POSITIVE_INFINITY;for(let[y,C]of h){let R=Math.abs(f-C);R<A&&(A=R,x=y)}m.thinkingTokenBudget=x}return p?.thinking?.includeThoughts!==void 0&&(m.showThoughts=!!p.thinking.includeThoughts),m});super({apiKey:e,apiURL:t,config:{...dn(),...n},options:r,modelInfo:i,models:c??s,supportFor:a}),super.setName("OpenAI")}};var _g=o=>{let e=o.trim();if(!e)return e;if(e.includes("api-version=")){let t=e.indexOf("api-version="),n=e.slice(t);return new URLSearchParams(n).get("api-version")??e}return e},Ng=o=>{let e=o.match(/^(\d{4}-\d{2}-\d{2})/);return e?e[1]>="2024-08-01":!1},ea=dn,rl=Xo,ol=Zo,sl=Yo,Ln=class extends Qe{constructor({apiKey:e,resourceName:t,deploymentName:n,version:r="api-version=2024-02-15-preview",config:s,options:i,models:a,modelInfo:c,chatReqUpdater:u}){if(!e||e==="")throw new Error("Azure OpenAPI API key not set");if(!t||t==="")throw new Error("Azure OpenAPI resource name not set");if(!n||n==="")throw new Error("Azure OpenAPI deployment id not set");let l={...ea(),...s},p=_g(r),d=Ng(p);c=[..._n,...c??[]];let g=f=>{let h=it({model:f,modelInfo:c,models:a});return{functions:!0,streaming:!0,hasThinkingBudget:h?.supported?.thinkingBudget??!1,hasShowThoughts:h?.supported?.showThoughts??!1,structuredOutputs:d&&(h?.supported?.structuredOutputs??!1),functionCot:!1,media:{images:{supported:!0,formats:["image/jpeg","image/png","image/gif","image/webp"],maxSize:20*1024*1024,detailLevels:["high","low","auto"]},audio:{supported:!1,formats:[],maxDuration:0},files:{supported:!1,formats:[],maxSize:0,uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:h?.supported?.thinkingBudget??!1,multiTurn:!0}};super({apiKey:e,config:l,options:i,models:a,modelInfo:c,supportFor:g,chatReqUpdater:u});let m=t.includes("://")?t:`https://${t}.openai.azure.com/`;super.setName("Azure OpenAI"),super.setAPIURL(new URL(`/openai/deployments/${n}?api-version=${p}`,m).href),super.setHeaders(async()=>({"api-key":e}))}};var es=class o{services;currentServiceIndex=0;currentService;debug;initialBackoffMs;maxBackoffMs;maxRetries;serviceFailures=new Map;constructor(e,t){if(e.length===0)throw new Error("No AI services provided.");Lg(e),this.services=[...e].sort(t?.comparator??o.metricComparator);let n=this.services[this.currentServiceIndex];if(n===void 0)throw new Error("Error initializing the AI services.");this.currentService=n,this.debug=t?.debug??!0,this.initialBackoffMs=t?.initialBackoffMs??1e3,this.maxBackoffMs=t?.maxBackoffMs??32e3,this.maxRetries=t?.maxRetries??3}static create(e,t){return new o(e,t)}getLastUsedChatModel(){return this.currentService.getLastUsedChatModel()}getLastUsedEmbedModel(){return this.currentService.getLastUsedEmbedModel()}getLastUsedModelConfig(){return this.currentService.getLastUsedModelConfig()}static inputOrderComparator=()=>0;static metricComparator=(e,t)=>{let n=e.getMetrics(),r=t.getMetrics();return n.latency.chat.mean-r.latency.chat.mean};getModelList(){for(let e of this.services){let t=e.getModelList();if(t)return t}}getNextService(e,t){let n=t+1,r=e[n];return r===void 0?{service:void 0,index:n}:{service:r,index:n}}reset(){this.currentServiceIndex=0;let e=this.services[this.currentServiceIndex];if(e===void 0)throw new Error("No AI services provided.");this.currentService=e}getName(){return this.currentService.getName()}getId(){return this.currentService.getId()}getFeatures(e){let t={functions:!1,streaming:!1,thinking:!1,multiTurn:!1,structuredOutputs:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]}};for(let n of this.services){let r=n.getFeatures(e);r.functions&&(t.functions=!0),r.streaming&&(t.streaming=!0),r.thinking&&(t.thinking=!0),r.multiTurn&&(t.multiTurn=!0),r.structuredOutputs&&(t.structuredOutputs=!0),r.functionCot&&(t.functionCot=!0),r.hasThinkingBudget&&(t.hasThinkingBudget=!0),r.hasShowThoughts&&(t.hasShowThoughts=!0),r.media.images.supported&&(t.media.images.supported=!0),t.media.images.formats=Array.from(new Set([...t.media.images.formats,...r.media.images.formats])),r.media.audio.supported&&(t.media.audio.supported=!0),t.media.audio.formats=Array.from(new Set([...t.media.audio.formats,...r.media.audio.formats])),r.media.files.supported&&(t.media.files.supported=!0),t.media.files.formats=Array.from(new Set([...t.media.files.formats,...r.media.files.formats])),r.media.files.uploadMethod!=="none"&&(t.media.files.uploadMethod=r.media.files.uploadMethod),r.media.urls.supported&&(t.media.urls.supported=!0),r.media.urls.webSearch&&(t.media.urls.webSearch=!0),r.media.urls.contextFetching&&(t.media.urls.contextFetching=!0),r.caching.supported&&(t.caching.supported=!0),t.caching.types=Array.from(new Set([...t.caching.types,...r.caching.types]))}return t}getMetrics(){let e={latency:{chat:{mean:0,p95:0,p99:0,samples:[]},embed:{mean:0,p95:0,p99:0,samples:[]}},errors:{chat:{count:0,rate:0,total:0},embed:{count:0,rate:0,total:0}}},t=0,n=0,r=0,s=0;for(let i of this.services){let a=i.getMetrics();e.errors.chat.count+=a.errors.chat.count,e.errors.chat.total+=a.errors.chat.total,e.errors.embed.count+=a.errors.embed.count,e.errors.embed.total+=a.errors.embed.total;let c=a.latency.chat.samples.length;c>0&&(t+=a.latency.chat.mean*c,n+=c);let u=a.latency.embed.samples.length;u>0&&(r+=a.latency.embed.mean*u,s+=u)}e.errors.chat.total>0&&(e.errors.chat.rate=e.errors.chat.count/e.errors.chat.total),e.errors.embed.total>0&&(e.errors.embed.rate=e.errors.embed.count/e.errors.embed.total),n>0&&(e.latency.chat.mean=t/n),s>0&&(e.latency.embed.mean=r/s);for(let i of this.services){let a=i.getMetrics();e.latency.chat.p95=Math.max(e.latency.chat.p95,a.latency.chat.p95),e.latency.chat.p99=Math.max(e.latency.chat.p99,a.latency.chat.p99),e.latency.embed.p95=Math.max(e.latency.embed.p95,a.latency.embed.p95),e.latency.embed.p99=Math.max(e.latency.embed.p99,a.latency.embed.p99)}return e}getEstimatedCost(e){return this.currentService.getEstimatedCost(e)}canRetryService(e){let t=this.serviceFailures.get(e.getId());if(!t)return!0;let{retries:n,lastFailureTime:r}=t,s=Date.now()-r,i=Math.min(this.initialBackoffMs*2**n,this.maxBackoffMs);return s>=i}handleFailure(e,t){let r=(this.serviceFailures.get(e.getId())?.retries??0)+1;this.serviceFailures.set(e.getId(),{retries:r,lastFailureTime:Date.now()}),this.debug&&console.warn(`AxBalancer: Service ${e.getName()} failed (retry ${r}/${this.maxRetries})`,t)}handleSuccess(e){this.serviceFailures.delete(e.getId())}async chat(e,t){let n=e.responseFormat?.type==="json_schema",r=e.capabilities,s=r?.requiresImages,i=r?.requiresAudio,a=this.services,c=e.model;if((n||s||i)&&(a=this.services.filter(p=>{let d=p.getFeatures(c);return!(n&&!d.structuredOutputs||s&&!d.media.images.supported||i&&!d.media.audio.supported)}),a.length===0)){let p=[];throw n&&p.push("structured outputs"),s&&p.push("images"),i&&p.push("audio"),new Error(`No services available that support required capabilities: ${p.join(", ")}.`)}let u=0,l=a[u];if(!l)throw new Error("No matching AI services available for request.");for(this.currentService=l;;){if(!this.canRetryService(l)){let p=this.getNextService(a,u);if(!p.service)throw new Error(`All candidate services exhausted (tried ${a.length} service(s))`);l=p.service,u=p.index,this.currentService=l;continue}try{let p=await l.chat(e,t);return this.handleSuccess(l),p}catch(p){if(!(p instanceof ct))throw p;switch(p.constructor){case Wt:throw p;case dt:{if(![408,429,500,502,503,504].includes(p.status))throw p;break}case nt:break;case Ht:break;case It:break;case Ct:break;default:throw p}if(this.handleFailure(l,p),(this.serviceFailures.get(l.getId())?.retries??0)>=this.maxRetries){let g=this.getNextService(a,u);if(this.debug&&console.warn(`AxBalancer: Switching to service ${g.service?.getName()??"none"}`,p),!g.service)throw p;l=g.service,u=g.index,this.currentService=l}}}}async embed(e,t){this.reset();let n=this.currentServiceIndex;for(;;){if(!this.canRetryService(this.currentService)){let r=this.getNextService(this.services,n);if(!r.service)throw new Error(`All services exhausted (tried ${this.services.length} service(s))`);this.currentService=r.service,n=r.index,this.currentServiceIndex=n;continue}try{let r=await this.currentService.embed(e,t);return this.handleSuccess(this.currentService),r}catch(r){if(!(r instanceof ct)||r instanceof dt&&![408,429,500,502,503,504].includes(r.status)||r instanceof Wt)throw r;if(this.handleFailure(this.currentService,r),(this.serviceFailures.get(this.currentService.getId())?.retries??0)>=this.maxRetries){let i=this.getNextService(this.services,n);if(!i.service)throw r;this.currentService=i.service,n=i.index,this.currentServiceIndex=n}}}}setOptions(e){for(let t of this.services)t.setOptions(e);this.currentService.setOptions(e),this.debug=e.debug??this.debug}getOptions(){return this.currentService.getOptions()}getLogger(){return this.currentService.getLogger()}};function Lg(o){let e=o.find(r=>r.getModelList()!==void 0);if(!e)return;let t=e.getModelList();if(!t)throw new Error("No model list found in any service.");let n=new Set(t.map(r=>r.key));for(let r=0;r<o.length;r++){let s=o[r];if(!s)throw new Error(`Service at index ${r} is undefined`);let i=s.getModelList();if(!i)throw new Error(`Service at index ${r} (${s.getName()}) has no model list while another service does.`);let a=new Set(i.map(c=>c.key));for(let c of n)if(!a.has(c))throw new Error(`Service at index ${r} (${s.getName()}) is missing model "${c}"`);for(let c of a)if(!n.has(c))throw new Error(`Service at index ${r} (${s.getName()}) has extra model "${c}"`)}}function mn(o){let e=!1,t=!1,n=!1,r=!1,s=!1,i=!1,a=!1,c=new Set,u=0;if(o.chatPrompt&&Array.isArray(o.chatPrompt))for(let l of o.chatPrompt){if(l.role==="user"&&Array.isArray(l.content))for(let p of l.content)switch(c.add(p.type),p.type){case"image":e=!0,p.cache&&(a=!0),u+=85;break;case"audio":t=!0,p.cache&&(a=!0),u+=p.duration||60;break;case"file":n=!0,p.cache&&(a=!0),u+=Math.ceil((p.extractedText?.length||1e3)/4);break;case"url":r=!0,p.cache&&(a=!0),u+=Math.ceil((p.cachedContent?.length||2e3)/4);break;case"text":p.cache&&(a=!0),u+=Math.ceil(p.text.length/4);break}else"content"in l&&typeof l.content=="string"&&(u+=Math.ceil(l.content.length/4));"cache"in l&&l.cache&&(a=!0)}return o.functions&&o.functions.length>0&&(s=!0),o.modelConfig?.stream===!0&&(i=!0),o.capabilities&&(o.capabilities.requiresImages&&(e=!0),o.capabilities.requiresAudio&&(t=!0),o.capabilities.requiresFiles&&(n=!0),o.capabilities.requiresWebSearch&&(r=!0)),{hasImages:e,hasAudio:t,hasFiles:n,hasUrls:r,requiresFunctions:s,requiresStreaming:i,requiresCaching:a,contentTypes:c,estimatedTokens:u}}function ta(o,e){let t=o.getFeatures(),n=[],r=[],s=[];if(e.hasImages&&!t.media.images.supported&&(n.push("Image support"),s.push("Use altText for images or imageToText service")),e.hasAudio&&!t.media.audio.supported&&(n.push("Audio support"),s.push("Pre-transcribe audio or use transcription field")),e.hasFiles&&!t.media.files.supported&&(n.push("File support"),s.push("Pre-extract text content or use extractedText field")),e.hasUrls&&!t.media.urls.supported&&(n.push("URL/Web search support"),s.push("Pre-fetch content or use cachedContent field")),e.requiresFunctions&&!t.functions&&n.push("Function calling"),e.requiresStreaming&&!t.streaming&&(n.push("Streaming responses"),s.push("Use non-streaming mode")),e.requiresCaching&&!t.caching.supported&&(n.push("Content caching"),s.push("Repeated content will not be cached")),e.hasImages&&t.media.images.supported){let a=t.media.images.maxSize;a&&a<10*1024*1024&&r.push(`Image size limit is ${Math.round(a/(1024*1024))}MB`)}if(e.hasAudio&&t.media.audio.supported){let a=t.media.audio.maxDuration;a&&a<600&&r.push(`Audio duration limit is ${Math.round(a/60)} minutes`)}return{isSupported:n.length===0,missingCapabilities:n,warnings:r,alternatives:s}}function ts(o,e){return o.map(t=>{let n=t.getFeatures(),r=ta(t,e),s=0,i=[];return s+=10,e.hasImages&&n.media.images.supported&&(s+=25,i.push("Images"),n.media.images.detailLevels?.includes("high")&&(s+=5),n.media.images.maxSize&&n.media.images.maxSize>10*1024*1024&&(s+=3)),e.hasAudio&&n.media.audio.supported&&(s+=25,i.push("Audio"),n.media.audio.maxDuration&&n.media.audio.maxDuration>600&&(s+=5)),e.hasFiles&&n.media.files.supported&&(s+=25,i.push("Files"),n.media.files.uploadMethod==="cloud"&&(s+=3)),e.hasUrls&&n.media.urls.supported&&(s+=25,i.push("URLs"),n.media.urls.webSearch&&(s+=5)),e.requiresFunctions&&n.functions&&(s+=15,i.push("Functions"),n.functionCot&&(s+=3)),e.requiresStreaming&&n.streaming&&(s+=10,i.push("Streaming")),e.requiresCaching&&n.caching.supported&&(s+=8,i.push("Caching"),n.caching.types.includes("persistent")&&(s+=3)),n.thinking&&(s+=2),n.multiTurn&&(s+=2),n.hasThinkingBudget&&(s+=1),n.hasShowThoughts&&(s+=1),s-=r.missingCapabilities.length*10,{provider:t,score:s,missingCapabilities:r.missingCapabilities,supportedCapabilities:i}}).sort((t,n)=>n.score-t.score)}function ns(o,e,t={}){if(e.length===0)throw new Error("No providers available");let n=mn(o),r=ts(e,n);if(t.requireExactMatch){let s=r.filter(i=>i.missingCapabilities.length===0);if(s.length===0)throw new Error(`No providers fully support the request requirements: ${r[0]?.missingCapabilities.join(", ")||"unknown requirements"}`);return s[0].provider}if(!t.allowDegradation){let s=r[0];if(s.missingCapabilities.length>0)throw new Error(`Best available provider (${s.provider.getName()}) is missing: ${s.missingCapabilities.join(", ")}`)}return r[0].provider}function il(o,e){let t=mn(o),n=ts(e,t),r=n[0]?.provider||null,s=[t.hasImages&&"images",t.hasAudio&&"audio",t.hasFiles&&"files",t.hasUrls&&"URLs",t.requiresFunctions&&"functions",t.requiresStreaming&&"streaming",t.requiresCaching&&"caching"].filter(Boolean).length,i=r?n[0].supportedCapabilities.length:0,a=r?`${r.getName()} supports ${i}/${s} requirements (${Math.round(i/Math.max(s,1)*100)}% compatibility)`:"No suitable providers found";return{requirements:t,providerScores:n,recommendedProvider:r,summary:a}}function al(o,e){return o.filter(t=>t.getFeatures().media[e].supported)}function cl(o,e){let t={};for(let n of o){let s=n.getFeatures().media[e];if(s.supported)for(let i of s.formats)t[i]||(t[i]=[]),t[i].push(n)}return t}var jr=(r=>(r.CommandRPlus="command-r-plus",r.CommandR="command-r",r.Command="command",r.CommandLight="command-light",r))(jr||{}),zr=(r=>(r.EmbedEnglishV30="embed-english-v3.0",r.EmbedEnglishLightV30="embed-english-light-v3.0",r.EmbedMultiLingualV30="embed-multilingual-v3.0",r.EmbedMultiLingualLightV30="embed-multilingual-light-v3.0",r))(zr||{});var rs=[{name:"command-r-plus",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15},{name:"command-r",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5},{name:"command",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5},{name:"command-light",currency:"usd",promptTokenCostPer1M:.3,completionTokenCostPer1M:.6},{name:"embed-english-light-v3.0",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.1},{name:"embed-english-v3.0",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.1},{name:"embed-multilingual-v3.0",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.1},{name:"embed-multilingual-light-v3.0",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.1}];function $g(o){if(Array.isArray(o)){let t=["string","number","integer","boolean","object","array"].find(n=>o.includes(n));return t||(o.find(n=>n!=="null")??o[0]??"string")}return typeof o=="string"?o:"string"}var ra=()=>structuredClone({model:"command-r-plus",embedModel:"embed-english-v3.0",...Le()}),ll=()=>structuredClone({model:"command-r",embedModel:"embed-english-v3.0",...Ze()}),na=class{constructor(e){this.config=e}tokensUsed;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,frequencyPenalty:e.frequencyPenalty,presencePenalty:e.presencePenalty,endSequences:e.endSequences,stopSequences:e.stopSequences,stream:e.stream,n:e.n}}createChatReq(e){let t=e.model,n=e.chatPrompt.at(-1),r=e.chatPrompt.slice(0,-1),s;n&&n.role==="user"&&typeof n.content=="string"&&(s=n?.content);let i=Dg(r),a=e.functions?.map(p=>{let d={};if(p.parameters?.properties)for(let[g,m]of Object.entries(p.parameters.properties))d[g]={description:m.description,type:$g(m.type),required:p.parameters.required?.includes(g)??!1};return{name:p.name,description:p.description,parameter_definitions:d}}),c=e.chatPrompt.filter(p=>p.role==="function").map(p=>{let d=a?.find(g=>g.name===p.functionId);if(!d)throw new Error("Function not found");return{call:{name:d.name,parameters:d.parameter_definitions},outputs:[{result:p.result??""}]}}),u={name:"/chat"},l={message:s,model:t,tools:a,...c&&!s?{tool_results:c}:{},chat_history:i,max_tokens:e.modelConfig?.maxTokens??this.config.maxTokens,...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},k:e.modelConfig?.topK??this.config.topK,...e.modelConfig?.topP!==void 0?{p:e.modelConfig.topP}:{},frequency_penalty:e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,presence_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty,end_sequences:this.config.endSequences,stop_sequences:e.modelConfig?.stopSequences??this.config.stopSequences};return[u,l]}createEmbedReq=e=>{let t=e.embedModel;if(!t)throw new Error("Embed model not set");if(!e.texts||e.texts.length===0)throw new Error("Embed texts is empty");let n={name:"/embed"},r={model:t,texts:e.texts??[],input_type:"classification",truncate:""};return[n,r]};createChatResp=e=>{this.tokensUsed=e.meta.billed_units?{promptTokens:e.meta.billed_units.input_tokens,completionTokens:e.meta.billed_units.output_tokens,totalTokens:e.meta.billed_units.input_tokens+e.meta.billed_units.output_tokens}:void 0;let t;if("finish_reason"in e)switch(e.finish_reason){case"COMPLETE":t="stop";break;case"MAX_TOKENS":t="length";break;case"ERROR":throw new Error("Finish reason: ERROR");case"ERROR_TOXIC":throw new Error("Finish reason: CONTENT_FILTER");default:t="stop";break}let n;return"tool_calls"in e&&(n=e.tool_calls?.map(s=>({id:s.name,type:"function",function:{name:s.name,params:s.parameters}}))),{results:[{index:0,id:e.generation_id,content:e.text,functionCalls:n,finishReason:t}],remoteId:e.response_id}};createChatStreamResp=(e,t)=>{let n=t;e.event_type==="stream-start"&&(n.generation_id=e.generation_id),this.tokensUsed={promptTokens:0,completionTokens:e.meta.billed_units?.output_tokens??0,totalTokens:e.meta.billed_units?.output_tokens??0};let{results:r}=this.createChatResp(e),s=r[0];if(!s)throw new Error("No result");return s.id=n.generation_id??"",{results:r}};createEmbedResp(e){return{remoteId:e.id,embeddings:e.embeddings}}},$n=class extends Xe{constructor({apiKey:e,config:t,options:n,models:r}){if(!e||e==="")throw new Error("Cohere API key not set");let s={...ra(),...t},i=new na(s),a=r?.map(c=>{let u=c,l=u?.config;if(!l)return c;let p={};l.maxTokens!==void 0&&(p.maxTokens=l.maxTokens),l.temperature!==void 0&&(p.temperature=l.temperature),l.topP!==void 0&&(p.topP=l.topP),l.topK!==void 0&&(p.topK=l.topK),l.presencePenalty!==void 0&&(p.presencePenalty=l.presencePenalty),l.frequencyPenalty!==void 0&&(p.frequencyPenalty=l.frequencyPenalty),l.stopSequences!==void 0&&(p.stopSequences=l.stopSequences),l.endSequences!==void 0&&(p.endSequences=l.endSequences),l.stream!==void 0&&(p.stream=l.stream),l.n!==void 0&&(p.n=l.n);let d={...u};return Object.keys(p).length>0&&(d.modelConfig={...u.modelConfig??{},...p}),d});super(i,{name:"Cohere",apiURL:"https://api.cohere.ai/v1",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:rs,defaults:{model:s.model},supportFor:{functions:!0,streaming:!0,media:{images:{supported:!1,formats:[],maxSize:0,detailLevels:[]},audio:{supported:!1,formats:[],maxDuration:0},files:{supported:!1,formats:[],maxSize:0,uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},options:n,models:a??r})}};function Dg(o){return o.map(e=>{let t="";if(e.role==="system"||e.role==="assistant"||e.role==="user")if(typeof e.content=="string")t=e.content;else throw new Error("Multi-modal content not supported");switch(e.role){case"user":return{role:"USER",message:t};case"system":return{role:"SYSTEM",message:t};case"assistant":{let n=ul(e.functionCalls);return{role:"CHATBOT",message:t,tool_calls:n}}case"function":{let n=o.map(i=>{if(i.role==="assistant")return i.functionCalls?.find(a=>a.id===e.functionId)}).filter(i=>i!==void 0),r=ul(n)?.at(0);if(!r)throw new Error("Function call not found");let s=[{result:e.result}];return{role:"TOOL",tool_results:[{call:r,outputs:s}]}}default:throw new Error("Unknown role")}})}function ul(o){return o?.map(e=>{let t;if(typeof e.function.params=="string"){let n=e.function.params;if(n.trim().length===0)t={};else try{t=JSON.parse(n)}catch{throw new Error(`Failed to parse function params JSON: ${n}`)}}else t=e.function.params;return{name:e.function.name,parameters:t}})}var qr=(n=>(n.DeepSeekChat="deepseek-chat",n.DeepSeekCoder="deepseek-coder",n.DeepSeekReasoner="deepseek-reasoner",n))(qr||{});var os=[{name:"deepseek-chat",currency:"USD",promptTokenCostPer1M:.27,completionTokenCostPer1M:1.1},{name:"deepseek-reasoner",currency:"USD",promptTokenCostPer1M:.55,completionTokenCostPer1M:2.19}];var oa=()=>structuredClone({model:"deepseek-chat",...Le()}),pl=()=>structuredClone({model:"deepseek-coder",...Ze()}),Dn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("DeepSeek API key not set");let i={...oa(),...t};s=[...os,...s??[]],super({apiKey:e,config:i,options:n,apiURL:"https://api.deepseek.com",modelInfo:s,supportFor:{functions:!0,streaming:!0,hasThinkingBudget:!1,hasShowThoughts:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},models:r}),super.setName("DeepSeek")}};var Un=(C=>(C.Gemini31Pro="gemini-3.1-pro-preview",C.Gemini3FlashLite="gemini-3.1-flash-lite-preview",C.Gemini3Flash="gemini-3-flash-preview",C.Gemini3Pro="gemini-3.1-pro-preview",C.Gemini3ProImage="gemini-3-pro-image-preview",C.Gemini25Pro="gemini-2.5-pro",C.Gemini25Flash="gemini-2.5-flash",C.Gemini25FlashLite="gemini-2.5-flash-lite",C.Gemini20Flash="gemini-2.0-flash",C.Gemini20FlashLite="gemini-2.0-flash-lite",C.Gemini20ProExp="gemini-2.0-pro-exp-02-05",C.Gemini20FlashThinkingExp="gemini-2.0-flash-thinking-exp-01-21",C.Gemini1Pro="gemini-1.0-pro",C.Gemini15Flash="gemini-1.5-flash",C.Gemini15Flash002="gemini-1.5-flash-002",C.Gemini15Flash8B="gemini-1.5-flash-8b",C.Gemini15Pro="gemini-1.5-pro",C.GeminiFlashLatest="gemini-flash-latest",C.GeminiFlashLiteLatest="gemini-flash-lite-latest",C.GeminiProLatest="gemini-pro-latest",C))(Un||{}),Hr=(s=>(s.GeminiEmbedding001="gemini-embedding-001",s.GeminiEmbedding="gemini-embedding-exp",s.TextEmbeddingLarge="text-embedding-large-exp-03-07",s.TextEmbedding004="text-embedding-004",s.TextEmbedding005="text-embedding-005",s))(Hr||{}),ss=(r=>(r.HarmCategoryHarassment="HARM_CATEGORY_HARASSMENT",r.HarmCategoryHateSpeech="HARM_CATEGORY_HATE_SPEECH",r.HarmCategorySexuallyExplicit="HARM_CATEGORY_SEXUALLY_EXPLICIT",r.HarmCategoryDangerousContent="HARM_CATEGORY_DANGEROUS_CONTENT",r))(ss||{}),is=(s=>(s.BlockNone="BLOCK_NONE",s.BlockOnlyHigh="BLOCK_ONLY_HIGH",s.BlockMediumAndAbove="BLOCK_MEDIUM_AND_ABOVE",s.BlockLowAndAbove="BLOCK_LOW_AND_ABOVE",s.BlockDefault="HARM_BLOCK_THRESHOLD_UNSPECIFIED",s))(is||{}),sa=(c=>(c.SemanticSimilarity="SEMANTIC_SIMILARITY",c.Classification="CLASSIFICATION",c.Clustering="CLUSTERING",c.RetrievalDocument="RETRIEVAL_DOCUMENT",c.RetrievalQuery="RETRIEVAL_QUERY",c.QuestionAnswering="QUESTION_ANSWERING",c.FactVerification="FACT_VERIFICATION",c.CodeRetrievalQuery="CODE_RETRIEVAL_QUERY",c))(sa||{}),dl=["gemini-3.1-pro-preview","gemini-3.1-pro-preview-customtools","gemini-3.1-flash-lite-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash","gemini-2.0-flash-lite","gemini-flash-latest","gemini-flash-lite-latest"];var as=[{name:"gemini-3.1-pro-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:2,completionTokenCostPer1M:12,cacheReadTokenCostPer1M:.2,cacheWriteTokenCostPer1M:2,longContextThreshold:2e5,longContextPromptTokenCostPer1M:4,longContextCompletionTokenCostPer1M:18,longContextCacheReadTokenCostPer1M:.4,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-3-flash-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.5,completionTokenCostPer1M:3,cacheReadTokenCostPer1M:.05,cacheWriteTokenCostPer1M:.5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-3.1-flash-lite-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.25,completionTokenCostPer1M:1.5,cacheReadTokenCostPer1M:.025,cacheWriteTokenCostPer1M:.25,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-3-pro-image-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:2,completionTokenCostPer1M:.134,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.5-pro",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,cacheReadTokenCostPer1M:.125,cacheWriteTokenCostPer1M:1.25,longContextThreshold:2e5,longContextPromptTokenCostPer1M:2.5,longContextCompletionTokenCostPer1M:15,longContextCacheReadTokenCostPer1M:.25,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.0-pro-exp-02-05",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:0,completionTokenCostPer1M:0,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.0-flash-thinking-exp-01-21",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:0,completionTokenCostPer1M:0,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.5-flash",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.3,completionTokenCostPer1M:2.5,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.5-flash-lite",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,cacheReadTokenCostPer1M:.01,cacheWriteTokenCostPer1M:.1,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.0-flash",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,cacheReadTokenCostPer1M:.025,cacheWriteTokenCostPer1M:.1,supported:{structuredOutputs:!0}},{name:"gemini-2.0-flash-lite",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.075,completionTokenCostPer1M:.3,supported:{structuredOutputs:!0}},{name:"gemini-1.5-flash",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.075,completionTokenCostPer1M:.3,supported:{structuredOutputs:!0}},{name:"gemini-1.5-flash-8b",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.0375,completionTokenCostPer1M:.15,supported:{structuredOutputs:!0}},{name:"gemini-1.5-pro",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:1.25,completionTokenCostPer1M:5,supported:{structuredOutputs:!0}},{name:"gemini-1.0-pro",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5,supported:{structuredOutputs:!0}},{name:"gemini-flash-latest",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.3,completionTokenCostPer1M:2.5,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-flash-lite-latest",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,cacheReadTokenCostPer1M:.01,cacheWriteTokenCostPer1M:.1,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-pro-latest",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,cacheReadTokenCostPer1M:.125,cacheWriteTokenCostPer1M:1.25,longContextThreshold:2e5,longContextPromptTokenCostPer1M:2.5,longContextCompletionTokenCostPer1M:15,longContextCacheReadTokenCostPer1M:.25,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}}];var gn=o=>o.includes("gemini-3"),ml=o=>o.includes("gemini-3")&&o.includes("pro"),Ug=new Set([...Object.values(Un).filter(o=>!o.startsWith("gemini-3")),...Object.values(Hr),"gemini-2.0-flash-001","gemini-2.0-flash-lite-001"]),Gg=(o,e)=>e||Ug.has(o)?"v1":"v1beta1",cs=o=>{if(!o||typeof o!="object")return o;let e={...o};return delete e.additionalProperties,delete e.default,delete e.optional,delete e.maximum,delete e.oneOf,delete e.anyOf,Array.isArray(e.type)&&(e.type=e.type.includes("object")?"object":e.type[0]??"string"),e.properties&&typeof e.properties=="object"&&(e.properties=Object.fromEntries(Object.entries(e.properties).map(([t,n])=>[t,cs(n)]))),e.items&&(e.items=cs(e.items)),e},ia=(o,e,t)=>{for(let n=e-1;n>=0;n--){let r=o[n];if(r?.role!=="assistant"||!r.functionCalls)continue;let s=r.functionCalls.find(i=>i.id===t);if(s?.function?.name)return s.function.name}return t},gl=[{category:"HARM_CATEGORY_HARASSMENT",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_HATE_SPEECH",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_SEXUALLY_EXPLICIT",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_DANGEROUS_CONTENT",threshold:"BLOCK_NONE"}],ca=()=>structuredClone({model:"gemini-2.5-flash",embedModel:"text-embedding-005",safetySettings:gl,thinkingTokenBudgetLevels:{minimal:200,low:800,medium:5e3,high:1e4,highest:24500},thinkingLevelMapping:{minimal:"minimal",low:"low",medium:"medium",high:"high",highest:"high"},...Le()}),fl=()=>structuredClone({model:"gemini-2.0-flash",embedModel:"text-embedding-005",safetySettings:gl,thinkingTokenBudgetLevels:{minimal:200,low:800,medium:5e3,high:1e4,highest:24500},thinkingLevelMapping:{minimal:"minimal",low:"low",medium:"medium",high:"high",highest:"high"},...Ze()}),aa=class{constructor(e,t,n,r,s,i){this.config=e;this.isVertex=t;this.endpointId=n;this.apiKey=r;this.options=s;this.vertexApiURLForModel=i;if(!this.isVertex&&this.config.autoTruncate)throw new Error("Auto truncate is not supported for GoogleGemini");let a=this.config.model;if(gn(a)){if(this.config.thinking?.thinkingTokenBudget!==void 0&&typeof this.config.thinking.thinkingTokenBudget=="number")throw new Error(`Gemini 3 models (${a}) do not support numeric thinkingTokenBudget. Use thinkingLevel ('low', 'medium', 'high') instead, or pass thinkingTokenBudget as a string level via options.`);if(ml(a)&&this.config.thinking?.thinkingLevel){let c=this.config.thinking.thinkingLevel;if(c!=="low"&&c!=="high")throw new Error(`Gemini 3 Pro (${a}) only supports thinkingLevel 'low' or 'high', got '${c}'. Use 'low' for less thinking or 'high' for more thinking.`)}}}tokensUsed;models;setModels(e){this.models=e}getEffectiveMappings(e){let t=this.models?.find(n=>n.model===e);return{thinkingLevelMapping:{...this.config.thinkingLevelMapping,...t?.thinkingLevelMapping??{}},thinkingTokenBudgetLevels:{...this.config.thinkingTokenBudgetLevels,...t?.thinkingTokenBudgetLevels??{}}}}getTokenUsage(){return this.tokensUsed}getVertexApiURL(e,t){return this.isVertex?this.vertexApiURLForModel?.(e,t):void 0}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,endSequences:e.endSequences,stream:e.stream,n:e.n}}hasProviderDeclaredTools(){return!!(this.options?.codeExecution||this.options?.googleSearchRetrieval||this.options?.googleSearch||this.options?.googleMaps||this.options?.urlContext)}buildToolState(e,t){let n=[];if(e.functions&&e.functions.length>0){let u=e.functions.map(l=>{let p={type:"object",properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]},d=l.parameters?cs(l.parameters):void 0;return d===void 0||d&&typeof d=="object"&&Object.keys(d).length===0?d={...p}:d&&typeof d=="object"&&d.type==="object"&&(!("properties"in d)||!d.properties||Object.keys(d.properties).length===0)&&(d={...d,properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]}),{name:l.name,description:l.description,parameters:d}});n.push({function_declarations:u})}if(this.options?.codeExecution&&n.push({code_execution:{}}),this.options?.googleSearchRetrieval&&n.push({google_search_retrieval:{dynamic_retrieval_config:this.options.googleSearchRetrieval}}),this.options?.googleSearch&&n.push({google_search:{}}),this.options?.googleMaps){let u=this.options.googleMaps,l=u?.enableWidget!==void 0?{enableWidget:u.enableWidget}:{};n.push({google_maps:l})}this.options?.urlContext&&n.push({url_context:{}}),n.length===0&&(n=void 0);let r,s=Array.isArray(n)?n.some(u=>u&&Array.isArray(u.function_declarations)&&u.function_declarations.length>0):!1;if(e.functionCall)if(e.functionCall==="none")r={function_calling_config:{mode:"NONE"}};else if(e.functionCall==="auto")r={function_calling_config:{mode:"AUTO"}};else if(e.functionCall==="required")r={function_calling_config:{mode:"ANY"}};else{let u=e.functionCall.function?.name?{allowedFunctionNames:[e.functionCall.function.name]}:{};r={function_calling_config:{mode:"ANY"},...u}}else s&&(r={function_calling_config:{mode:"AUTO"}});this.options?.retrievalConfig&&(r={...r??{},retrievalConfig:{...this.options.retrievalConfig.latLng?{latLng:this.options.retrievalConfig.latLng}:{}}});let i=e.functions?.some(u=>u.cache)??!1,a=!!(n&&n.length>0)||!!r,c=!!t?.contextCache&&a;return{tools:n,toolConfig:r,cacheableTools:i||c}}createChatReq=async(e,t)=>{let n=e.model,r=e.modelConfig?.stream??this.config.stream;if(!e.chatPrompt||e.chatPrompt.length===0)throw new Error("Chat prompt is empty");let s;if(this.endpointId?s={name:r?`/${this.endpointId}:streamGenerateContent?alt=sse`:`/${this.endpointId}:generateContent`}:s={name:r?`/models/${n}:streamGenerateContent?alt=sse`:`/models/${n}:generateContent`},this.isVertex&&(s.url=this.getVertexApiURL(n,t?.noBeta)),!this.isVertex){let x=r?"&":"?",A=typeof this.apiKey=="function"?await this.apiKey():this.apiKey;s.name+=`${x}key=${A}`}let i=e.chatPrompt.filter(x=>x.role==="system").map(x=>x.content),a=i.length>0?{role:"user",parts:[{text:i.join(" ")}]}:void 0,c=[],u=e.chatPrompt.filter(x=>x.role!=="system");for(let x=0;x<u.length;x++){let A=u[x];switch(A.role){case"user":{let y=Array.isArray(A.content)?A.content.map((C,R)=>{switch(C.type){case"text":return{text:C.text};case"image":return{inlineData:{mimeType:C.mimeType,data:C.image}};case"audio":return{inlineData:{mimeType:`audio/${C.format??"mp3"}`,data:C.data}};case"file":return"fileUri"in C?{fileData:{mimeType:C.mimeType,fileUri:C.fileUri}}:{inlineData:{mimeType:C.mimeType,data:C.data}};default:throw new Error(`Chat prompt content type not supported (index: ${R})`)}}):[{text:A.content}];c.push({role:"user",parts:y});break}case"assistant":{let y=[],C=A.thoughtBlocks,R=A.functionCalls&&A.functionCalls.length>0,I=C?.[0],M=C?.map(P=>P.data).join("")??"",F=I?.signature;if(M&&y.push({...R?{}:{thought:!0},text:M,...F&&!R?{thought_signature:F}:{}}),A.functionCalls){let P=A.functionCalls.map((N,T)=>{let E;if(typeof N.function.params=="string"){let S=N.function.params;if(S.trim().length===0)E={};else try{E=JSON.parse(S)}catch{throw new Error(`Failed to parse function params JSON: ${S}`)}}else E=N.function.params;let O={functionCall:{name:N.function.name,args:E}};return F&&T===0&&(O.thought_signature=F),O});y.push(...P)}if(A.content&&y.push({text:A.content}),y.length===0)throw new Error("Assistant content is empty");c.push({role:"model",parts:y});break}case"function":{let y=[],C=A,R=x;for(;;){if(!("functionId"in C))throw new Error(`Chat prompt functionId is empty (index: ${R})`);if(y.push({functionResponse:{name:ia(u,R,C.functionId),response:{result:C.result}}}),R+1<u.length&&u[R+1].role==="function")R++,C=u[R];else break}x=R,c.push({role:"user",parts:y});break}default:throw new Error(`Invalid role: ${JSON.stringify(A)} (index: ${x})`)}}let{tools:l,toolConfig:p}=this.buildToolState(e,t),d={};if(this.config.thinking?.includeThoughts&&(d.includeThoughts=!0),this.config.thinking?.thinkingTokenBudget&&(d.thinkingBudget=this.config.thinking.thinkingTokenBudget),this.config.thinking?.thinkingLevel&&gn(n)&&(d.thinkingLevel=this.config.thinking.thinkingLevel),t?.thinkingTokenBudget){let x=this.getEffectiveMappings(n),A=x.thinkingTokenBudgetLevels;if(gn(n)){let C=ml(n),R=x.thinkingLevelMapping;if(t.thinkingTokenBudget==="none")d.thinkingLevel=R?.minimal??"minimal";else{let I=t.thinkingTokenBudget,M=R?.[I];M||(M=I==="highest"?"high":I),d.thinkingLevel=M}if(C&&d.thinkingLevel){let I=d.thinkingLevel;I!=="low"&&I!=="high"&&(d.thinkingLevel=I==="minimal"?"low":"high")}}else switch(t.thinkingTokenBudget){case"none":d.thinkingBudget=0,d.includeThoughts=!1,delete d.thinkingLevel;break;case"minimal":d.thinkingBudget=A?.minimal??200;break;case"low":d.thinkingBudget=A?.low??800;break;case"medium":d.thinkingBudget=A?.medium??5e3;break;case"high":d.thinkingBudget=A?.high??1e4;break;case"highest":d.thinkingBudget=A?.highest??24500;break}}d.thinkingLevel&&delete d.thinkingBudget,gn(n)||delete d.thinkingLevel,gn(n)&&delete d.thinkingBudget;let g=e.modelConfig?.maxTokens??this.config.maxTokens;if(d.thinkingLevel&&g!==void 0)throw new Error("Cannot set maxTokens when using thinkingLevel with Gemini models. When thinking is enabled, the model manages output tokens automatically. Remove the maxTokens setting or disable thinking.");t?.showThoughts!==void 0&&t?.thinkingTokenBudget!=="none"&&(d.includeThoughts=t.showThoughts);let m={maxOutputTokens:e.modelConfig?.maxTokens??this.config.maxTokens,temperature:e.modelConfig?.temperature??this.config.temperature,...e.modelConfig?.topP!==void 0?{topP:e.modelConfig.topP}:{},topK:e.modelConfig?.topK??this.config.topK,frequencyPenalty:e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,candidateCount:1,stopSequences:e.modelConfig?.stopSequences??this.config.stopSequences,responseMimeType:"text/plain",...Object.keys(d).length>0?{thinkingConfig:d}:{}};if(gn(n)&&(m.temperature===void 0||m.temperature<1)&&(m.temperature=1),e.responseFormat){if(m.responseMimeType="application/json",e.responseFormat.type==="json_schema"&&e.responseFormat.schema){let x=e.responseFormat.schema.schema||e.responseFormat.schema;m.responseSchema=cs(x)}}else this.config.responseFormat&&this.config.responseFormat==="json_object"&&(m.responseMimeType="application/json");let f=this.config.safetySettings;return[s,{contents:c,tools:l,toolConfig:p,systemInstruction:a,generationConfig:m,safetySettings:f}]};createEmbedReq=async(e,t)=>{let n=e.embedModel;if(!n)throw new Error("Embed model not set");if(!e.texts||e.texts.length===0)throw new Error("Embed texts is empty");let r,s;if(this.isVertex)this.endpointId?r={name:`/${this.endpointId}:predict`}:r={name:`/models/${n}:predict`},r.url=this.getVertexApiURL(n,t?.noBeta),s={instances:e.texts.map(i=>({content:i,...this.config.embedType&&{taskType:this.config.embedType}})),parameters:{autoTruncate:this.config.autoTruncate,outputDimensionality:this.config.dimensions}};else{let i=typeof this.apiKey=="function"?this.apiKey():this.apiKey;r={name:`/models/${n}:batchEmbedContents?key=${i}`},s={requests:e.texts.map(a=>({model:`models/${n}`,content:{parts:[{text:a}]},outputDimensionality:this.config.dimensions,...this.config.embedType&&{taskType:this.config.embedType}}))}}return[r,s]};createChatResp=e=>{let t,n=e.candidates?.map(s=>{let i={index:0};switch(s.finishReason){case"MAX_TOKENS":i.finishReason="length";break;case"STOP":i.finishReason="stop";break;case"SAFETY":throw new We("Content was blocked due to safety settings",void 0,void 0);case"RECITATION":throw new We("Content was blocked due to recitation policy",void 0,void 0);case"MALFORMED_FUNCTION_CALL":throw new We("Function call was malformed and blocked",void 0,void 0);case"UNEXPECTED_TOOL_CALL":throw new We("Unexpected tool call",void 0,void 0);case"FINISH_REASON_UNSPECIFIED":throw new We("Finish reason unspecified",void 0,void 0);case"BLOCKLIST":throw new We("Content was blocked due to blocklist",void 0,void 0);case"PROHIBITED_CONTENT":throw new We("Content was blocked due to prohibited content",void 0,void 0);case"SPII":throw new We("Content was blocked due to SPII",void 0,void 0);case"OTHER":throw new We("Other finish reason",void 0,void 0)}if(!s.content||!s.content.parts)return i;for(let u of s.content.parts){if("text"in u){if("thought"in u&&u.thought||u.thought===!0){i.thought=u.text;let l=u.thoughtSignature||u.thought_signature;i.thoughtBlocks||(i.thoughtBlocks=[]),i.thoughtBlocks.push({data:u.text,encrypted:!1,...l?{signature:l}:{}})}else i.content=u.text;continue}if("functionCall"in u){let l=u.thoughtSignature||u.thought_signature;if(l)if(!i.thoughtBlocks||i.thoughtBlocks.length===0)i.thoughtBlocks=[{data:"",encrypted:!1,signature:l}];else{let p=i.thoughtBlocks[i.thoughtBlocks.length-1];p&&!p.signature&&(p.signature=l)}i.functionCalls=[...i.functionCalls??[],{id:at(),type:"function",function:{name:u.functionCall.name,params:u.functionCall.args}}]}}let a=s.citationMetadata?.citations;if(Array.isArray(a)&&a.length){let u=l=>l?`${l.year}-${String(l.month).padStart(2,"0")}-${String(l.day).padStart(2,"0")}`:void 0;i.citations=a.filter(l=>typeof l?.uri=="string").map(l=>({url:l.uri,title:l.title,license:l.license,publicationDate:u(l.publicationDate)}))}let c=s.groundingMetadata;if(c){if(Array.isArray(c.groundingChunks)){let u=c.groundingChunks.map(l=>l?.maps).filter(l=>l&&typeof l.uri=="string").map(l=>({url:l.uri,title:l.title}));u.length&&(i.citations=[...i.citations??[],...u])}typeof c.googleMapsWidgetContextToken=="string"&&(t=c.googleMapsWidgetContextToken)}return i});if(e.usageMetadata){let s=e.usageMetadata.cachedContentTokenCount??0;this.tokensUsed={totalTokens:e.usageMetadata.totalTokenCount,promptTokens:e.usageMetadata.promptTokenCount-s,completionTokens:e.usageMetadata.candidatesTokenCount,thoughtsTokens:e.usageMetadata.thoughtsTokenCount,...s>0?{cacheReadTokens:s}:{}}}let r={results:n};return t&&(r.providerMetadata={...r.providerMetadata,google:{...r.providerMetadata?.google??{},mapsWidgetContextToken:t}}),r};createChatStreamResp=e=>this.createChatResp(e);createEmbedResp=e=>{let t;return this.isVertex?t=e.predictions.map(n=>n.embeddings.values):t=e.embeddings.map(n=>n.values),{embeddings:t}};supportsContextCache=e=>{let t=e;return dl.some(n=>t.includes(n)||n.includes(t))};buildCacheCreateOp=(e,t)=>{let n=e.model,r=t.contextCache?.ttlSeconds??3600,{tools:s,toolConfig:i,cacheableTools:a}=this.buildToolState(e,t),{systemInstruction:c,contents:u}=this.extractCacheableContent(e.chatPrompt);if(!c&&(!u||u.length===0)&&!a)return;let l={model:this.isVertex?n:`models/${n}`,ttl:`${r}s`,displayName:`ax-cache-${Date.now()}`};c&&(l.systemInstruction=c),u&&u.length>0&&(l.contents=u),a&&(s&&s.length>0&&(l.tools=s),i&&(l.toolConfig=i));let p;if(this.isVertex)p="/cachedContents";else{p="/cachedContents";let d=typeof this.apiKey=="function"?"ASYNC_KEY":this.apiKey;p+=`?key=${d}`}return{type:"create",apiConfig:{name:p,...this.isVertex?{url:this.getVertexApiURL(n,t?.noBeta)}:{}},request:l,parseResponse:d=>{let g=d;if(g?.name)return{name:g.name,expiresAt:g.expireTime,tokenCount:g.usageMetadata?.totalTokenCount}}}};getContextCacheToolState=(e,t)=>{let{tools:n,toolConfig:r,cacheableTools:s}=this.buildToolState(e,t);if(!s)return;let i=e.functions?.map(({cache:c,...u})=>u);if(!!(i&&i.length>0)||!!e.functionCall)return{functions:i,functionCall:e.functionCall};if(n||r)return{functions:[{name:"__gemini_tool_state__",description:JSON.stringify({tools:n,toolConfig:r})}]}};buildCacheUpdateTTLOp=(e,t,n,r)=>{let s={ttl:`${t}s`},i=`/${e}`;if(!this.isVertex&&this.apiKey){let a=typeof this.apiKey=="function"?"ASYNC_KEY":this.apiKey;i+=`?key=${a}`}return{type:"update",apiConfig:{name:i,headers:{"Content-Type":"application/json"},...this.isVertex&&n?{url:this.getVertexApiURL(n,r)}:{}},request:s,parseResponse:a=>{let c=a;if(c?.name)return{name:c.name,expiresAt:c.expireTime,tokenCount:c.usageMetadata?.totalTokenCount}}}};buildCacheDeleteOp=e=>{let t=`/${e}`;if(!this.isVertex&&this.apiKey){let n=typeof this.apiKey=="function"?"ASYNC_KEY":this.apiKey;t+=`?key=${n}`}return{type:"delete",apiConfig:{name:t,headers:{"Content-Type":"application/json"}},request:{},parseResponse:()=>{}}};prepareCachedChatReq=async(e,t,n)=>{let r=e.model,s=e.modelConfig?.stream??this.config.stream,{tools:i,toolConfig:a,cacheableTools:c}=this.buildToolState(e,t),{dynamicContents:u,dynamicSystemInstruction:l}=this.extractDynamicContent(e.chatPrompt),p;if(this.endpointId?p={name:s?`/${this.endpointId}:streamGenerateContent?alt=sse`:`/${this.endpointId}:generateContent`}:p={name:s?`/models/${r}:streamGenerateContent?alt=sse`:`/models/${r}:generateContent`},!this.isVertex){let f=s?"&":"?",h=typeof this.apiKey=="function"?await this.apiKey():this.apiKey;p.name+=`${f}key=${h}`}let d={maxOutputTokens:e.modelConfig?.maxTokens??this.config.maxTokens,temperature:e.modelConfig?.temperature??this.config.temperature,...e.modelConfig?.topP!==void 0?{topP:e.modelConfig.topP}:{},topK:e.modelConfig?.topK??this.config.topK,frequencyPenalty:e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,candidateCount:1,stopSequences:e.modelConfig?.stopSequences??this.config.stopSequences,responseMimeType:"text/plain"};gn(r)&&(d.temperature===void 0||d.temperature<1)&&(d.temperature=1);let g=this.config.safetySettings,m={contents:u,cachedContent:n,generationConfig:d,safetySettings:g};return c||(i&&i.length>0&&(m.tools=i),a&&(m.toolConfig=a)),l&&(m.systemInstruction=l),{apiConfig:p,request:m}};extractCacheableContent(e){let t,n=[],r=-1;for(let s=e.length-1;s>=0;s--){let i=e[s];if("cache"in i&&i.cache){r=s;break}}for(let s=0;s<e.length;s++){let i=e[s];if(i.role==="system"){t={role:"user",parts:[{text:i.content}]};continue}if(r>=0&&s<=r)if(i.role==="user"){let a=[];if(typeof i.content=="string")a.push({text:i.content});else if(Array.isArray(i.content))for(let c of i.content)switch(c.type){case"text":a.push({text:c.text});break;case"image":a.push({inlineData:{mimeType:c.mimeType,data:c.image}});break;case"audio":a.push({inlineData:{mimeType:`audio/${c.format??"mp3"}`,data:c.data}});break;case"file":"fileUri"in c?a.push({fileData:{mimeType:c.mimeType,fileUri:c.fileUri}}):a.push({inlineData:{mimeType:c.mimeType,data:c.data}});break}a.length>0&&n.push({role:"user",parts:a})}else if(i.role==="assistant"){let a=[],c=i.thoughtBlocks,u=i.functionCalls&&i.functionCalls.length>0,l=c?.[0]?.signature,p=c?.map(d=>d.data).join("")??"";if(p&&a.push({...u?{}:{thought:!0},text:p,...l&&!u?{thought_signature:l}:{}}),i.functionCalls)for(let[d,g]of i.functionCalls.entries()){let m;if(typeof g.function.params=="string")try{m=JSON.parse(g.function.params)}catch{m={}}else m=g.function.params??{};let f={functionCall:{name:g.function.name,args:m}};l&&d===0&&(f.thought_signature=l),a.push(f)}i.content&&a.push({text:i.content}),a.length>0&&n.push({role:"model",parts:a})}else i.role==="function"&&n.push({role:"user",parts:[{functionResponse:{name:ia(e,s,i.functionId),response:{result:i.result}}}]})}return{systemInstruction:t,contents:n}}extractDynamicContent(e){let n=[],r=-1;for(let s=e.length-1;s>=0;s--){let i=e[s];if("cache"in i&&i.cache){r=s;break}}for(let s=0;s<e.length;s++){let i=e[s];if(i.role!=="system"&&!(r>=0&&s<=r))if(i.role==="user"){let a=[];if(typeof i.content=="string")a.push({text:i.content});else if(Array.isArray(i.content)){for(let c of i.content)if(!("cache"in c&&c.cache))switch(c.type){case"text":a.push({text:c.text});break;case"image":a.push({inlineData:{mimeType:c.mimeType,data:c.image}});break;case"audio":a.push({inlineData:{mimeType:`audio/${c.format??"mp3"}`,data:c.data}});break;case"file":"fileUri"in c?a.push({fileData:{mimeType:c.mimeType,fileUri:c.fileUri}}):a.push({inlineData:{mimeType:c.mimeType,data:c.data}});break}}a.length>0&&n.push({role:"user",parts:a})}else if(i.role==="assistant"){let a=[],c=i.thoughtBlocks,u=i.functionCalls&&i.functionCalls.length>0,l=c?.[0]?.signature,p=c?.map(d=>d.data).join("")??"";if(p&&a.push({...u?{}:{thought:!0},text:p,...l&&!u?{thought_signature:l}:{}}),i.functionCalls)for(let[d,g]of i.functionCalls.entries()){let m;if(typeof g.function.params=="string")try{m=JSON.parse(g.function.params)}catch{m={}}else m=g.function.params??{};let f={functionCall:{name:g.function.name,args:m}};l&&d===0&&(f.thought_signature=l),a.push(f)}i.content&&a.push({text:i.content}),a.length>0&&n.push({role:"model",parts:a})}else i.role==="function"&&n.push({role:"user",parts:[{functionResponse:{name:ia(e,s,i.functionId),response:{result:i.result}}}]})}return{dynamicContents:n,dynamicSystemInstruction:void 0}}},Gn=class o extends Xe{static create(e){return new o(e)}constructor({apiKey:e,projectId:t,region:n,endpointId:r,config:s,options:i,models:a,modelInfo:c}){let u=t!==void 0&&n!==void 0,l={...ca(),...s},p,d,g;if(u){if(!e)throw new Error("GoogleGemini Vertex API key not set");if(typeof e!="function")throw new Error("GoogleGemini Vertex API key must be a function for token-based authentication");let x;r?x="endpoints":x="publishers/google";let A=n==="global"?"aiplatform":`${n}-aiplatform`;g=(y,C)=>`https://${A}.googleapis.com/${Gg(y,C)}/projects/${t}/locations/${n}/${x}`,p=g(l.model),d=async()=>({Authorization:`Bearer ${typeof e=="function"?await e():e}`})}else{if(!e)throw new Error("GoogleGemini AI API key not set");p="https://generativelanguage.googleapis.com/v1beta",d=async()=>({})}let m=new aa(l,u,r,e,i,g);c=[...as,...c??[]];let f=x=>{let A=it({model:x,modelInfo:c,models:a});return{functions:!0,streaming:!0,hasThinkingBudget:A?.supported?.thinkingBudget??!1,hasShowThoughts:A?.supported?.showThoughts??!1,structuredOutputs:A?.supported?.structuredOutputs??!1,media:{images:{supported:!0,formats:["image/jpeg","image/png","image/gif","image/webp"],maxSize:20*1024*1024,detailLevels:["high","low","auto"]},audio:{supported:!0,formats:["wav","mp3","aac","ogg"],maxDuration:9.5*60},files:{supported:!0,formats:["application/pdf","text/plain","text/csv","text/html","text/xml"],maxSize:2*1024*1024*1024,uploadMethod:"cloud"},urls:{supported:!0,webSearch:!0,contextFetching:!0}},caching:{supported:m.supportsContextCache(x),types:["persistent"]},thinking:A?.supported?.thinkingBudget??!1,multiTurn:!0}},h=a?.map(x=>{let A=x,y=A?.config;if(!y)return x;let C={};y.maxTokens!==void 0&&(C.maxTokens=y.maxTokens),y.temperature!==void 0&&(C.temperature=y.temperature),y.topP!==void 0&&(C.topP=y.topP),y.topK!==void 0&&(C.topK=y.topK),y.presencePenalty!==void 0&&(C.presencePenalty=y.presencePenalty),y.frequencyPenalty!==void 0&&(C.frequencyPenalty=y.frequencyPenalty),y.stopSequences!==void 0&&(C.stopSequences=y.stopSequences),y.endSequences!==void 0&&(C.endSequences=y.endSequences),y.stream!==void 0&&(C.stream=y.stream),y.n!==void 0&&(C.n=y.n);let R={...A};Object.keys(C).length>0&&(R.modelConfig={...A.modelConfig??{},...C});let I=y.thinking?.thinkingTokenBudget;if(typeof I=="number"){let M=l.thinkingTokenBudgetLevels,F=[["minimal",M?.minimal??200],["low",M?.low??800],["medium",M?.medium??5e3],["high",M?.high??1e4],["highest",M?.highest??24500]],P="minimal",N=Number.POSITIVE_INFINITY;for(let[T,E]of F){let O=Math.abs(I-E);O<N&&(N=O,P=T)}R.thinkingTokenBudget=P}return y.thinking?.includeThoughts!==void 0&&(R.showThoughts=!!y.thinking.includeThoughts),y.thinkingLevelMapping&&(R.thinkingLevelMapping=y.thinkingLevelMapping),y.thinkingTokenBudgetLevels&&(R.thinkingTokenBudgetLevels=y.thinkingTokenBudgetLevels),R});h?m.setModels(h):a&&m.setModels(a),super(m,{name:"GoogleGeminiAI",apiURL:p,headers:d,modelInfo:c,defaults:{model:l.model,embedModel:l.embedModel},options:i,supportFor:f,models:h??a})}};var Bg=new gt,Bn=class{options;maxTokens;refillRate;currentTokens;lastRefillTime;constructor(e,t,n){this.maxTokens=e,this.refillRate=t,this.currentTokens=e,this.lastRefillTime=Date.now(),this.options=n}refillTokens(){let e=Date.now(),n=(e-this.lastRefillTime)/1e3*this.refillRate;this.currentTokens=Math.min(this.maxTokens,this.currentTokens+n),this.lastRefillTime=e}async waitUntilTokensAvailable(e){if(this.refillTokens(),this.currentTokens>=e){this.currentTokens-=e;return}return this.options?.debug&&console.log(Bg.red(`Rate limiter: Waiting for ${e-this.currentTokens} tokens`)),await new Promise(t=>setTimeout(t,100)),this.waitUntilTokensAvailable(e)}async acquire(e){await this.waitUntilTokensAvailable(e)}};var Wr=(r=>(r.Llama3_8B="llama3-8b-8192",r.Llama33_70B="llama-3.3-70b-versatile",r.Mixtral_8x7B="mixtral-8x7b-32768",r.Gemma2_9B="gemma2-9b-it",r))(Wr||{});var us=[{name:"gemma2-9b-it",currency:"usd",characterIsToken:!0,promptTokenCostPer1M:.2,completionTokenCostPer1M:.2},{name:"llama-3.3-70b-versatile",currency:"usd",characterIsToken:!0,promptTokenCostPer1M:.59,completionTokenCostPer1M:.79},{name:"llama3-8b-8192",currency:"usd",characterIsToken:!0,promptTokenCostPer1M:.05,completionTokenCostPer1M:.08},{name:"mixtral-8x7b-32768",currency:"usd",characterIsToken:!0,promptTokenCostPer1M:.24,completionTokenCostPer1M:.24}];var jg=()=>structuredClone({model:"llama-3.3-70b-versatile",...Le()}),jn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("Groq API key not set");let i={...jg(),...t},a={...n,streamingUsage:!1};s=[...us,...s??[]];let c={functions:!0,streaming:!0,hasThinkingBudget:!1,hasShowThoughts:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0};super({apiKey:e,config:i,options:a,modelInfo:s,apiURL:"https://api.groq.com/openai/v1",models:r,supportFor:c}),super.setName("Groq"),this.setOptions(a)}setOptions=e=>{let t=this.newRateLimiter(e);super.setOptions({...e,rateLimiter:t})};newRateLimiter=e=>{if(e?.rateLimiter)return e.rateLimiter;let t=e?.tokensPerMinute??4800,n=new Bn(t,t/60,{debug:e?.debug});return async(s,i)=>{let a=i.modelUsage?.tokens?.totalTokens||0;return await n.acquire(a),await s()}}};var ls=[];var ps=(e=>(e.MetaLlama270BChatHF="meta-llama/Llama-2-70b-chat-hf",e))(ps||{});var la=()=>structuredClone({model:"meta-llama/Llama-2-70b-chat-hf",...Le()}),hl=()=>structuredClone({model:"meta-llama/Llama-2-70b-chat-hf",...Ze()}),ua=class{constructor(e){this.config=e}tokensUsed;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,n:e.n,presencePenalty:e.presencePenalty}}createChatReq=e=>{let t=e.model,n=e.functions?`Functions:
|
|
182
182
|
${JSON.stringify(e.functions,null,2)}
|
|
183
183
|
`:"",r=e.chatPrompt?.map(c=>{switch(c.role){case"user":return`User: ${c.content}`;case"system":return`System: ${c.content}`;case"function":return`Function Result: ${c.result}`;case"assistant":{let u=c.functionCalls?.map(l=>{let p=typeof l.function.params=="string"?l.function.params:JSON.stringify(l.function.params);return`${l.function.name}(${p})`}).join(`
|
|
184
184
|
`);return u?`Assistant: ${c.content}
|
|
185
185
|
Functions:
|
|
186
186
|
${u}`:`Assistant: ${c.content}`}default:throw new Error("Unknown role")}}).join(`
|
|
187
|
-
`),s=`${n} ${r}`.trim(),i={name:"/models"},a={model:t,inputs:s,parameters:{max_new_tokens:e.modelConfig?.maxTokens??this.config.maxTokens,repetition_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty,...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},...e.modelConfig?.topP!==void 0?{top_p:e.modelConfig.topP}:{},top_k:e.modelConfig?.topK??this.config.topK,return_full_text:this.config.returnFullText,num_return_sequences:this.config.n,do_sample:this.config.doSample,max_time:this.config.maxTime},options:{use_cache:this.config.useCache,wait_for_model:this.config.waitForModel}};return[i,a]};createChatResp=e=>({results:[{index:0,content:e.generated_text}]})},zn=class extends Xe{constructor({apiKey:e,config:t,options:n,models:r}){if(!e||e==="")throw new Error("HuggingFace API key not set");let s={...la(),...t},i=new ua(s);super(i,{name:"HuggingFace",apiURL:"https://api-inference.huggingface.co",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:ls,defaults:{model:s.model},options:n,supportFor:{functions:!1,streaming:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},models:r})}};var Vr=(c=>(c.Mistral7B="open-mistral-7b",c.Mistral8x7B="open-mixtral-8x7b",c.MistralSmall="mistral-small-latest",c.MistralNemo="mistral-nemo-latest",c.MistralLarge="mistral-large-latest",c.Codestral="codestral-latest",c.OpenCodestralMamba="open-codestral-mamba",c.OpenMistralNemo="open-mistral-nemo-latest",c))(Vr||{}),pa=(e=>(e.MistralEmbed="mistral-embed",e))(pa||{});var ds=[{name:"open-mistral-7b",currency:"USD",promptTokenCostPer1M:.25,completionTokenCostPer1M:.25},{name:"open-mixtral-8x7b",currency:"USD",promptTokenCostPer1M:.7,completionTokenCostPer1M:.7},{name:"mistral-nemo-latest",currency:"USD",promptTokenCostPer1M:.15,completionTokenCostPer1M:.15},{name:"mistral-small-latest",currency:"USD",promptTokenCostPer1M:.2,completionTokenCostPer1M:.6},{name:"mistral-large-latest",currency:"USD",promptTokenCostPer1M:2,completionTokenCostPer1M:6},{name:"codestral-latest",currency:"USD",promptTokenCostPer1M:.2,completionTokenCostPer1M:.6},{name:"open-codestral-mamba",currency:"USD",promptTokenCostPer1M:.25,completionTokenCostPer1M:.25},{name:"open-mistral-nemo-latest",currency:"USD",promptTokenCostPer1M:.3,completionTokenCostPer1M:.3}];var ms=()=>structuredClone({model:"mistral-small-latest",...Le(),topP:1}),xl=()=>structuredClone({...ms(),model:"mistral-large-latest"}),qn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("Mistral API key not set");let i={...ms(),...t};s=[...ds,...s??[]];let a={functions:!0,streaming:!0,hasThinkingBudget:!1,hasShowThoughts:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},c=(u,l)=>{let{max_completion_tokens:p,messages:d,...g}=u;return{...g,messages:this.updateMessages(d),max_tokens:p}};super({apiKey:e,config:i,options:n,apiURL:"https://api.mistral.ai/v1",modelInfo:s,models:r,supportFor:a,chatReqUpdater:c}),super.setName("Mistral")}updateMessages(e){let t=[];if(!Array.isArray(e))return e;for(let n of e)if(n.role==="user"&&Array.isArray(n.content)){let r=n.content.map(s=>typeof s=="object"&&s!==null&&"image_url"in s?{type:"image_url",image_url:{url:s.image_url?.url}}:s);t.push({...n,content:r})}else t.push(n);return t}};var gs=class{constructor(e={}){this.config=e;this.config.id=this.config.id??it()}metrics={latency:{chat:{mean:0,p95:0,p99:0,samples:[]},embed:{mean:0,p95:0,p99:0,samples:[]}},errors:{chat:{count:0,rate:0,total:0},embed:{count:0,rate:0,total:0}}};getLastUsedChatModel(){return this.config.modelInfo?.name??"mock-model"}getLastUsedEmbedModel(){return this.config.embedModelInfo?.name??"mock-embed-model"}getLastUsedModelConfig(){return this.config.modelInfo?{maxTokens:this.config.modelInfo.maxTokens,temperature:.7,stream:this.config.features?.streaming??!1}:void 0}getName(){return this.config.name??"mock-ai-service"}getId(){return this.config.id??"mock-ai-service-id"}getFeatures(e){let t=this.config.features?.media;return{functions:this.config.features?.functions??!1,streaming:this.config.features?.streaming??!1,structuredOutputs:this.config.features?.structuredOutputs??!1,media:{images:{supported:t?.images?.supported??!1,formats:t?.images?.formats??[]},audio:{supported:t?.audio?.supported??!1,formats:t?.audio?.formats??[]},files:{supported:t?.files?.supported??!1,formats:t?.files?.formats??[],uploadMethod:t?.files?.uploadMethod??"none"},urls:{supported:t?.urls?.supported??!1,webSearch:t?.urls?.webSearch??!1,contextFetching:t?.urls?.contextFetching??!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}}getModelList(){return this.config.models}getMetrics(){return this.metrics}getEstimatedCost(){return 0}async chat(e,t){if(this.config.latencyMs&&await new Promise(n=>setTimeout(n,this.config.latencyMs)),this.config.shouldError)throw new Error(this.config.errorMessage??"Mock chat error");return this.updateMetrics("chat"),typeof this.config.chatResponse=="function"?await this.config.chatResponse(e):this.config.chatResponse??{results:[{index:0,content:"Mock response",finishReason:"stop"}],modelUsage:{ai:this.getName(),model:"mock-model",tokens:{promptTokens:10,completionTokens:5,totalTokens:15}}}}async embed(e,t){if(this.config.latencyMs&&await new Promise(n=>setTimeout(n,this.config.latencyMs)),this.config.shouldError)throw new Error(this.config.errorMessage??"Mock embed error");return this.updateMetrics("embed"),typeof this.config.embedResponse=="function"?this.config.embedResponse(e):this.config.embedResponse??{embeddings:[[.1,.2,.3]],modelUsage:{ai:this.getName(),model:"mock-model",tokens:{promptTokens:5,completionTokens:0,totalTokens:5}}}}setOptions(e){this.config.options=e}getOptions(){return this.config.options??{}}getLogger(){return this.config.options?.logger??(e=>{console.log(e)})}updateMetrics(e){let t=this.config.latencyMs??0;this.metrics.latency[e].samples.push(t);let n=this.metrics.latency[e].samples;if(this.metrics.latency[e].mean=n.reduce((r,s)=>r+s,0)/n.length,n.length>0){let r=[...n].sort((a,c)=>a-c),s=Math.max(0,Math.floor(r.length*.95)-1);this.metrics.latency[e].p95=r[s]??t;let i=Math.max(0,Math.floor(r.length*.99)-1);this.metrics.latency[e].p99=r[i]??t}if(this.config.shouldError){this.metrics.errors[e].count++,this.metrics.errors[e].total++;let r=this.metrics.latency[e].samples.length;this.metrics.errors[e].rate=r>0?this.metrics.errors[e].count/r:0}}};var fs=class o{options;lastUsedService;services=new Map;constructor(e){if(e.length===0)throw new Error("No AI services provided.");for(let[t,n]of e.entries())if("key"in n){if(this.services.has(n.key))throw new Error(`Duplicate model key: ${n.key}`);let{service:s,description:i,isInternal:a}=n;this.services.set(n.key,{service:s,description:i,isInternal:a})}else{let s=n.getModelList();if(!s)throw new Error(`Service ${t} \`${n.getName()}\` has no model list.`);for(let i of s){if(this.services.has(i.key)){let a=this.services.get(i.key)?.service;throw new Error(`Service ${t} \`${n.getName()}\` has duplicate model key: ${i.key} as service ${a?.getName()}`)}if("model"in i&&typeof i.model)this.services.set(i.key,{description:i.description,service:n,model:i.model});else if("embedModel"in i&&i.embedModel)this.services.set(i.key,{description:i.description,service:n,embedModel:i.embedModel});else throw new Error(`Key ${i.key} in model list for service ${t} \`${n.getName()}\` is missing a model or embedModel property.`)}}}static create(e){return new o(e)}getLastUsedChatModel(){return this.lastUsedService?.getLastUsedChatModel()}getLastUsedEmbedModel(){return this.lastUsedService?.getLastUsedEmbedModel()}getLastUsedModelConfig(){return this.lastUsedService?.getLastUsedModelConfig()}async chat(e,t){let n=e.model;if(!n)throw new Error("Model key must be specified for multi-service");let r=this.services.get(n);if(!r)throw new Error(`No service found for model key: ${n}`);if(this.lastUsedService=r.service,!r.model){let{model:s,...i}=e;return await r.service.chat(i,t)}return await r.service.chat({model:n,...e},t)}async embed(e,t){let n=e.embedModel;if(!n)throw new Error("Embed model key must be specified for multi-service");let r=this.services.get(n);if(!r)throw new Error(`No service found for embed model key: ${n}`);if(this.lastUsedService=r.service,!r.model){let{embedModel:s,...i}=e;return await r.service.embed(i,t)}return await r.service.embed({embedModel:n,...e},t)}getId(){return`MultiServiceRouter:${Array.from(this.services.values()).map(e=>e.service.getId()).join(",")}`}getName(){return"MultiServiceRouter"}getModelList(){return Array.from(this.services).filter(([,e])=>!e.isInternal).map(([e,t])=>{if(t.model)return{key:e,description:t.description,model:t.model};if(t.embedModel)return{key:e,description:t.description,embedModel:t.embedModel};throw new Error(`Service ${e} has no model or embedModel`)})}getFeatures(e){if(e){let t=this.services.get(e);if(t)return t.service.getFeatures(e)}return{functions:!1,streaming:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}}getMetrics(){let e=this.lastUsedService;if(!e){let t=this.services.values().next().value;t&&(e="service"in t?t.service:t)}if(!e)throw new Error("No service available to get metrics.");return e.getMetrics()}getEstimatedCost(e){return this.lastUsedService?.getEstimatedCost(e)??0}setOptions(e){for(let t of this.services.values())t.service.setOptions(e);this.options=e}getOptions(){return this.options??{}}getLogger(){let e=this.lastUsedService;if(!e){let t=this.services.values().next().value;t&&(e=t.service)}if(!e)throw new Error("No service available to get logger.");return e.getLogger()}setServiceEntry(e,t){this.services.set(e,t)}};function zg(o){let e=o.match(/^<think>([\s\S]*?)<\/think>\n?([\s\S]*)$/);return e?{thought:e[1]||void 0,content:e[2]||void 0}:{content:o}}function qg(o,e){if(!o)return{};if(!e.ollamaInThink&&!o.includes("<think>"))return{content:o};let t=o,n="",r="";if(!e.ollamaInThink&&t.includes("<think>")){let s=t.indexOf("<think>");r+=t.slice(0,s),t=t.slice(s+7),e.ollamaInThink=!0}if(e.ollamaInThink)if(t.includes("</think>")){let s=t.indexOf("</think>");n+=t.slice(0,s),t=t.slice(s+8).replace(/^\n/,""),e.ollamaInThink=!1,r+=t}else n+=t;return{content:r||void 0,thought:n||void 0}}var da=()=>structuredClone({...Le(),model:"nous-hermes2",embedModel:"all-minilm"}),Al=()=>structuredClone({...Ze(),model:"nous-hermes2",embedModel:"all-minilm"}),Hn=class extends Qe{constructor({apiKey:e="not-set",url:t="http://localhost:11434/v1",config:n,options:r,models:s}){let i={...da(),...n},a=(l,p)=>p.thinkingTokenBudget?{...l,think:p.thinkingTokenBudget!=="none"}:l,c=l=>({...l,results:l.results.map(p=>{if(!p.content)return p;let d=zg(p.content);return{...p,thought:d.thought??p.thought,content:d.content}})}),u=(l,p)=>({...l,results:l.results.map(d=>{let{content:g,thought:m}=qg(d.content,p);return{...d,content:g,thought:m??d.thought}})});super({apiKey:e,options:r,config:i,apiURL:t,models:s,modelInfo:[],chatReqUpdater:a,chatRespProcessor:c,chatStreamRespProcessor:u,supportFor:{functions:!0,streaming:!0,hasThinkingBudget:!0,hasShowThoughts:!0,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!0,multiTurn:!0}}),super.setName("Ollama")}};var Hg=o=>["o1","o1-mini","o1-pro","o3","o3-mini","o3-pro","o4-mini"].includes(o),Wn=class{constructor(e,t,n){this.config=e;this.streamingUsage=t;this.responsesReqUpdater=n}tokensUsed;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,stopSequences:e.stopSequences,topP:e.topP,stream:e.stream}}mapInternalContentToResponsesInput(e,t){let n=[];for(let r of e){if(r.type==="text"){t==="assistant"?n.push({type:"output_text",text:r.text}):n.push({type:"input_text",text:r.text});continue}if(t==="assistant")continue;if(r.type==="image"){let i=`data:${r.mimeType};base64,${r.image}`;n.push({type:"input_image",image_url:{url:i,details:r.details??"auto"}});continue}if(r.type==="audio"){n.push({type:"input_audio",input_audio:{data:r.data,format:r.format==="wav"?"wav":void 0}});continue}let s=r;throw new Error(`Unsupported content part: ${JSON.stringify(s)}`)}return n}createResponsesReqInternalInput(e,t=!1){let n=[];for(let r of e){if(t&&r.role==="system")continue;let s;if(r.role==="system"||r.role==="user"||r.role==="assistant"&&r.content)if(typeof r.content=="string")r.role==="system"?s=r.content:r.role==="assistant"?s=[{type:"output_text",text:r.content}]:s=[{type:"input_text",text:r.content}];else if(Array.isArray(r.content))s=this.mapInternalContentToResponsesInput(r.content,r.role==="assistant"?"assistant":"user");else{if(!(r.role==="assistant"&&!r.content&&r.functionCalls))throw new Error(`Invalid content type for role ${r.role}`);s=""}else r.role,s="";switch(r.role){case"system":n.push({type:"message",role:"system",content:s});break;case"user":n.push({type:"message",role:"user",content:s,name:r.name});break;case"assistant":if(r.content||r.functionCalls){let i={type:"message",role:"assistant",content:""};if(r.content&&(i.content=s),r.name&&(i.name=r.name),r.content&&n.push(i),r.functionCalls)for(let a of r.functionCalls)n.push({type:"function_call",call_id:a.id,name:a.function.name,arguments:typeof a.function.params=="object"?JSON.stringify(a.function.params):a.function.params||""})}break;case"function":n.push({type:"function_call_output",call_id:r.functionId,output:r.result});break;default:{let i=r.role;throw new Error(`Invalid role in chat prompt: ${i}`)}}}return n}createChatReq(e,t){let n=e.model,r={name:"/responses"},s=null,i=!1;if(e.chatPrompt){for(let x of e.chatPrompt)if(x.role==="system"&&typeof x.content=="string"){s=x.content,i=!0;break}}let a=s??this.config.systemPrompt??null,c=e.functions?.map(x=>({type:"function",name:x.name,description:x.description,parameters:x.parameters??{}})),u=[],l=Hg(n),p=this.config.reasoningSummary;t?.showThoughts?p||(p="auto"):p=void 0;let d=this.config.reasoningEffort;if(t?.thinkingTokenBudget)switch(t.thinkingTokenBudget){case"none":d=void 0;break;case"minimal":d="minimal";break;case"low":d="medium";break;case"medium":case"high":case"highest":d="high";break}let g={model:n,input:"",instructions:a,tools:c?.length?c:void 0,tool_choice:e.functionCall==="none"||e.functionCall==="auto"||e.functionCall==="required"?e.functionCall:typeof e.functionCall=="object"&&e.functionCall.function?{type:"function",name:e.functionCall.function.name}:void 0,...l?{max_output_tokens:e.modelConfig?.maxTokens??this.config.maxTokens??void 0}:{...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},...e.modelConfig?.topP!==void 0?{top_p:e.modelConfig.topP}:{},presence_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty??void 0,frequency_penalty:e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty??void 0,max_output_tokens:e.modelConfig?.maxTokens??this.config.maxTokens??void 0},stream:e.modelConfig?.stream??this.config.stream??!1,background:void 0,include:u.length>0?u:void 0,metadata:void 0,parallel_tool_calls:this.config.parallelToolCalls,previous_response_id:void 0,...d?{reasoning:{effort:d,summary:p}}:{},service_tier:this.config.serviceTier,store:this.config.store,text:void 0,truncation:void 0,user:this.config.user,seed:this.config.seed};this.config.user&&(g.user=this.config.user),this.config.parallelToolCalls!==void 0&&(g.parallel_tool_calls=this.config.parallelToolCalls),e.responseFormat?g.text={format:e.responseFormat.type==="json_schema"?{type:"json_schema",json_schema:e.responseFormat.schema}:{type:e.responseFormat.type}}:this.config.responseFormat&&(g.text={format:{type:this.config.responseFormat}}),this.config.seed&&(g.seed=this.config.seed);let m=e.chatPrompt?this.createResponsesReqInternalInput(e.chatPrompt,i):[];if(m.length>0)g.input=m;else if(e.chatPrompt&&e.chatPrompt.length===1&&e.chatPrompt[0]?.role==="user"&&e.chatPrompt[0]?.content&&typeof e.chatPrompt[0].content=="string"&&!a)g.input=e.chatPrompt[0].content;else if(m.length===0&&!a)throw new Error("Responses API request must have input or instructions.");let f=g.reasoning??{};if(this.config.reasoningEffort&&(f={...f,effort:this.config.reasoningEffort}),t?.thinkingTokenBudget)switch(t.thinkingTokenBudget){case"none":f={};break;case"minimal":f={...f,effort:"minimal"};break;case"low":f={...f,effort:"medium"};break;case"medium":case"high":case"highest":f={...f,effort:"high"};break}Object.keys(f).length>0&&f.effort?g.reasoning=f:g.reasoning=void 0;let h=g;return this.responsesReqUpdater&&(h=this.responsesReqUpdater(h)),[r,h]}createChatResp(e){let{id:t,output:n,usage:r}=e;r&&(this.tokensUsed={promptTokens:r.prompt_tokens,completionTokens:r.completion_tokens??r.output_tokens??0,totalTokens:r.total_tokens});let s={};for(let i of n??[])switch(i.type){case"message":s.id=i.id,s.content=ma(i.content,t),s.finishReason=i.status==="completed"?"stop":"content_filter",s.citations=hs(i.content);break;case"reasoning":s.id=i.id,i.encrypted_content?s.thought=i.encrypted_content:s.thought=i.summary.map(a=>typeof a=="object"?JSON.stringify(a):a).join(`
|
|
187
|
+
`),s=`${n} ${r}`.trim(),i={name:"/models"},a={model:t,inputs:s,parameters:{max_new_tokens:e.modelConfig?.maxTokens??this.config.maxTokens,repetition_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty,...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},...e.modelConfig?.topP!==void 0?{top_p:e.modelConfig.topP}:{},top_k:e.modelConfig?.topK??this.config.topK,return_full_text:this.config.returnFullText,num_return_sequences:this.config.n,do_sample:this.config.doSample,max_time:this.config.maxTime},options:{use_cache:this.config.useCache,wait_for_model:this.config.waitForModel}};return[i,a]};createChatResp=e=>({results:[{index:0,content:e.generated_text}]})},zn=class extends Xe{constructor({apiKey:e,config:t,options:n,models:r}){if(!e||e==="")throw new Error("HuggingFace API key not set");let s={...la(),...t},i=new ua(s);super(i,{name:"HuggingFace",apiURL:"https://api-inference.huggingface.co",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:ls,defaults:{model:s.model},options:n,supportFor:{functions:!1,streaming:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},models:r})}};var Vr=(c=>(c.Mistral7B="open-mistral-7b",c.Mistral8x7B="open-mixtral-8x7b",c.MistralSmall="mistral-small-latest",c.MistralNemo="mistral-nemo-latest",c.MistralLarge="mistral-large-latest",c.Codestral="codestral-latest",c.OpenCodestralMamba="open-codestral-mamba",c.OpenMistralNemo="open-mistral-nemo-latest",c))(Vr||{}),pa=(e=>(e.MistralEmbed="mistral-embed",e))(pa||{});var ds=[{name:"open-mistral-7b",currency:"USD",promptTokenCostPer1M:.25,completionTokenCostPer1M:.25},{name:"open-mixtral-8x7b",currency:"USD",promptTokenCostPer1M:.7,completionTokenCostPer1M:.7},{name:"mistral-nemo-latest",currency:"USD",promptTokenCostPer1M:.15,completionTokenCostPer1M:.15},{name:"mistral-small-latest",currency:"USD",promptTokenCostPer1M:.2,completionTokenCostPer1M:.6},{name:"mistral-large-latest",currency:"USD",promptTokenCostPer1M:2,completionTokenCostPer1M:6},{name:"codestral-latest",currency:"USD",promptTokenCostPer1M:.2,completionTokenCostPer1M:.6},{name:"open-codestral-mamba",currency:"USD",promptTokenCostPer1M:.25,completionTokenCostPer1M:.25},{name:"open-mistral-nemo-latest",currency:"USD",promptTokenCostPer1M:.3,completionTokenCostPer1M:.3}];var ms=()=>structuredClone({model:"mistral-small-latest",...Le(),topP:1}),xl=()=>structuredClone({...ms(),model:"mistral-large-latest"}),qn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("Mistral API key not set");let i={...ms(),...t};s=[...ds,...s??[]];let a={functions:!0,streaming:!0,hasThinkingBudget:!1,hasShowThoughts:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},c=(u,l)=>{let{max_completion_tokens:p,messages:d,...g}=u;return{...g,messages:this.updateMessages(d),max_tokens:p}};super({apiKey:e,config:i,options:n,apiURL:"https://api.mistral.ai/v1",modelInfo:s,models:r,supportFor:a,chatReqUpdater:c}),super.setName("Mistral")}updateMessages(e){let t=[];if(!Array.isArray(e))return e;for(let n of e)if(n.role==="user"&&Array.isArray(n.content)){let r=n.content.map(s=>typeof s=="object"&&s!==null&&"image_url"in s?{type:"image_url",image_url:{url:s.image_url?.url}}:s);t.push({...n,content:r})}else t.push(n);return t}};var gs=class{constructor(e={}){this.config=e;this.config.id=this.config.id??at()}metrics={latency:{chat:{mean:0,p95:0,p99:0,samples:[]},embed:{mean:0,p95:0,p99:0,samples:[]}},errors:{chat:{count:0,rate:0,total:0},embed:{count:0,rate:0,total:0}}};getLastUsedChatModel(){return this.config.modelInfo?.name??"mock-model"}getLastUsedEmbedModel(){return this.config.embedModelInfo?.name??"mock-embed-model"}getLastUsedModelConfig(){return this.config.modelInfo?{maxTokens:this.config.modelInfo.maxTokens,temperature:.7,stream:this.config.features?.streaming??!1}:void 0}getName(){return this.config.name??"mock-ai-service"}getId(){return this.config.id??"mock-ai-service-id"}getFeatures(e){let t=this.config.features?.media;return{functions:this.config.features?.functions??!1,streaming:this.config.features?.streaming??!1,structuredOutputs:this.config.features?.structuredOutputs??!1,media:{images:{supported:t?.images?.supported??!1,formats:t?.images?.formats??[]},audio:{supported:t?.audio?.supported??!1,formats:t?.audio?.formats??[]},files:{supported:t?.files?.supported??!1,formats:t?.files?.formats??[],uploadMethod:t?.files?.uploadMethod??"none"},urls:{supported:t?.urls?.supported??!1,webSearch:t?.urls?.webSearch??!1,contextFetching:t?.urls?.contextFetching??!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}}getModelList(){return this.config.models}getMetrics(){return this.metrics}getEstimatedCost(){return 0}async chat(e,t){if(this.config.latencyMs&&await new Promise(n=>setTimeout(n,this.config.latencyMs)),this.config.shouldError)throw new Error(this.config.errorMessage??"Mock chat error");return this.updateMetrics("chat"),typeof this.config.chatResponse=="function"?await this.config.chatResponse(e):this.config.chatResponse??{results:[{index:0,content:"Mock response",finishReason:"stop"}],modelUsage:{ai:this.getName(),model:"mock-model",tokens:{promptTokens:10,completionTokens:5,totalTokens:15}}}}async embed(e,t){if(this.config.latencyMs&&await new Promise(n=>setTimeout(n,this.config.latencyMs)),this.config.shouldError)throw new Error(this.config.errorMessage??"Mock embed error");return this.updateMetrics("embed"),typeof this.config.embedResponse=="function"?this.config.embedResponse(e):this.config.embedResponse??{embeddings:[[.1,.2,.3]],modelUsage:{ai:this.getName(),model:"mock-model",tokens:{promptTokens:5,completionTokens:0,totalTokens:5}}}}setOptions(e){this.config.options=e}getOptions(){return this.config.options??{}}getLogger(){return this.config.options?.logger??(e=>{console.log(e)})}updateMetrics(e){let t=this.config.latencyMs??0;this.metrics.latency[e].samples.push(t);let n=this.metrics.latency[e].samples;if(this.metrics.latency[e].mean=n.reduce((r,s)=>r+s,0)/n.length,n.length>0){let r=[...n].sort((a,c)=>a-c),s=Math.max(0,Math.floor(r.length*.95)-1);this.metrics.latency[e].p95=r[s]??t;let i=Math.max(0,Math.floor(r.length*.99)-1);this.metrics.latency[e].p99=r[i]??t}if(this.config.shouldError){this.metrics.errors[e].count++,this.metrics.errors[e].total++;let r=this.metrics.latency[e].samples.length;this.metrics.errors[e].rate=r>0?this.metrics.errors[e].count/r:0}}};var fs=class o{options;lastUsedService;services=new Map;constructor(e){if(e.length===0)throw new Error("No AI services provided.");for(let[t,n]of e.entries())if("key"in n){if(this.services.has(n.key))throw new Error(`Duplicate model key: ${n.key}`);let{service:s,description:i,isInternal:a}=n;this.services.set(n.key,{service:s,description:i,isInternal:a})}else{let s=n.getModelList();if(!s)throw new Error(`Service ${t} \`${n.getName()}\` has no model list.`);for(let i of s){if(this.services.has(i.key)){let a=this.services.get(i.key)?.service;throw new Error(`Service ${t} \`${n.getName()}\` has duplicate model key: ${i.key} as service ${a?.getName()}`)}if("model"in i&&typeof i.model)this.services.set(i.key,{description:i.description,service:n,model:i.model});else if("embedModel"in i&&i.embedModel)this.services.set(i.key,{description:i.description,service:n,embedModel:i.embedModel});else throw new Error(`Key ${i.key} in model list for service ${t} \`${n.getName()}\` is missing a model or embedModel property.`)}}}static create(e){return new o(e)}getLastUsedChatModel(){return this.lastUsedService?.getLastUsedChatModel()}getLastUsedEmbedModel(){return this.lastUsedService?.getLastUsedEmbedModel()}getLastUsedModelConfig(){return this.lastUsedService?.getLastUsedModelConfig()}async chat(e,t){let n=e.model;if(!n)throw new Error("Model key must be specified for multi-service");let r=this.services.get(n);if(!r)throw new Error(`No service found for model key: ${n}`);if(this.lastUsedService=r.service,!r.model){let{model:s,...i}=e;return await r.service.chat(i,t)}return await r.service.chat({model:n,...e},t)}async embed(e,t){let n=e.embedModel;if(!n)throw new Error("Embed model key must be specified for multi-service");let r=this.services.get(n);if(!r)throw new Error(`No service found for embed model key: ${n}`);if(this.lastUsedService=r.service,!r.model){let{embedModel:s,...i}=e;return await r.service.embed(i,t)}return await r.service.embed({embedModel:n,...e},t)}getId(){return`MultiServiceRouter:${Array.from(this.services.values()).map(e=>e.service.getId()).join(",")}`}getName(){return"MultiServiceRouter"}getModelList(){return Array.from(this.services).filter(([,e])=>!e.isInternal).map(([e,t])=>{if(t.model)return{key:e,description:t.description,model:t.model};if(t.embedModel)return{key:e,description:t.description,embedModel:t.embedModel};throw new Error(`Service ${e} has no model or embedModel`)})}getFeatures(e){if(e){let t=this.services.get(e);if(t)return t.service.getFeatures(e)}return{functions:!1,streaming:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}}getMetrics(){let e=this.lastUsedService;if(!e){let t=this.services.values().next().value;t&&(e="service"in t?t.service:t)}if(!e)throw new Error("No service available to get metrics.");return e.getMetrics()}getEstimatedCost(e){return this.lastUsedService?.getEstimatedCost(e)??0}setOptions(e){for(let t of this.services.values())t.service.setOptions(e);this.options=e}getOptions(){return this.options??{}}getLogger(){let e=this.lastUsedService;if(!e){let t=this.services.values().next().value;t&&(e=t.service)}if(!e)throw new Error("No service available to get logger.");return e.getLogger()}setServiceEntry(e,t){this.services.set(e,t)}};function zg(o){let e=o.match(/^<think>([\s\S]*?)<\/think>\n?([\s\S]*)$/);return e?{thought:e[1]||void 0,content:e[2]||void 0}:{content:o}}function qg(o,e){if(!o)return{};if(!e.ollamaInThink&&!o.includes("<think>"))return{content:o};let t=o,n="",r="";if(!e.ollamaInThink&&t.includes("<think>")){let s=t.indexOf("<think>");r+=t.slice(0,s),t=t.slice(s+7),e.ollamaInThink=!0}if(e.ollamaInThink)if(t.includes("</think>")){let s=t.indexOf("</think>");n+=t.slice(0,s),t=t.slice(s+8).replace(/^\n/,""),e.ollamaInThink=!1,r+=t}else n+=t;return{content:r||void 0,thought:n||void 0}}var da=()=>structuredClone({...Le(),model:"nous-hermes2",embedModel:"all-minilm"}),Al=()=>structuredClone({...Ze(),model:"nous-hermes2",embedModel:"all-minilm"}),Hn=class extends Qe{constructor({apiKey:e="not-set",url:t="http://localhost:11434/v1",config:n,options:r,models:s}){let i={...da(),...n},a=(l,p)=>p.thinkingTokenBudget?{...l,think:p.thinkingTokenBudget!=="none"}:l,c=l=>({...l,results:l.results.map(p=>{if(!p.content)return p;let d=zg(p.content);return{...p,thought:d.thought??p.thought,content:d.content}})}),u=(l,p)=>({...l,results:l.results.map(d=>{let{content:g,thought:m}=qg(d.content,p);return{...d,content:g,thought:m??d.thought}})});super({apiKey:e,options:r,config:i,apiURL:t,models:s,modelInfo:[],chatReqUpdater:a,chatRespProcessor:c,chatStreamRespProcessor:u,supportFor:{functions:!0,streaming:!0,hasThinkingBudget:!0,hasShowThoughts:!0,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!0,multiTurn:!0}}),super.setName("Ollama")}};var Hg=o=>["o1","o1-mini","o1-pro","o3","o3-mini","o3-pro","o4-mini"].includes(o),Wn=class{constructor(e,t,n){this.config=e;this.streamingUsage=t;this.responsesReqUpdater=n}tokensUsed;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,stopSequences:e.stopSequences,topP:e.topP,stream:e.stream}}mapInternalContentToResponsesInput(e,t){let n=[];for(let r of e){if(r.type==="text"){t==="assistant"?n.push({type:"output_text",text:r.text}):n.push({type:"input_text",text:r.text});continue}if(t==="assistant")continue;if(r.type==="image"){let i=`data:${r.mimeType};base64,${r.image}`;n.push({type:"input_image",image_url:{url:i,details:r.details??"auto"}});continue}if(r.type==="audio"){n.push({type:"input_audio",input_audio:{data:r.data,format:r.format==="wav"?"wav":void 0}});continue}let s=r;throw new Error(`Unsupported content part: ${JSON.stringify(s)}`)}return n}createResponsesReqInternalInput(e,t=!1){let n=[];for(let r of e){if(t&&r.role==="system")continue;let s;if(r.role==="system"||r.role==="user"||r.role==="assistant"&&r.content)if(typeof r.content=="string")r.role==="system"?s=r.content:r.role==="assistant"?s=[{type:"output_text",text:r.content}]:s=[{type:"input_text",text:r.content}];else if(Array.isArray(r.content))s=this.mapInternalContentToResponsesInput(r.content,r.role==="assistant"?"assistant":"user");else{if(!(r.role==="assistant"&&!r.content&&r.functionCalls))throw new Error(`Invalid content type for role ${r.role}`);s=""}else r.role,s="";switch(r.role){case"system":n.push({type:"message",role:"system",content:s});break;case"user":n.push({type:"message",role:"user",content:s,name:r.name});break;case"assistant":if(r.content||r.functionCalls){let i={type:"message",role:"assistant",content:""};if(r.content&&(i.content=s),r.name&&(i.name=r.name),r.content&&n.push(i),r.functionCalls)for(let a of r.functionCalls)n.push({type:"function_call",call_id:a.id,name:a.function.name,arguments:typeof a.function.params=="object"?JSON.stringify(a.function.params):a.function.params||""})}break;case"function":n.push({type:"function_call_output",call_id:r.functionId,output:r.result});break;default:{let i=r.role;throw new Error(`Invalid role in chat prompt: ${i}`)}}}return n}createChatReq(e,t){let n=e.model,r={name:"/responses"},s=null,i=!1;if(e.chatPrompt){for(let x of e.chatPrompt)if(x.role==="system"&&typeof x.content=="string"){s=x.content,i=!0;break}}let a=s??this.config.systemPrompt??null,c=e.functions?.map(x=>({type:"function",name:x.name,description:x.description,parameters:x.parameters??{}})),u=[],l=Hg(n),p=this.config.reasoningSummary;t?.showThoughts?p||(p="auto"):p=void 0;let d=this.config.reasoningEffort;if(t?.thinkingTokenBudget)switch(t.thinkingTokenBudget){case"none":d=void 0;break;case"minimal":d="minimal";break;case"low":d="medium";break;case"medium":case"high":case"highest":d="high";break}let g={model:n,input:"",instructions:a,tools:c?.length?c:void 0,tool_choice:e.functionCall==="none"||e.functionCall==="auto"||e.functionCall==="required"?e.functionCall:typeof e.functionCall=="object"&&e.functionCall.function?{type:"function",name:e.functionCall.function.name}:void 0,...l?{max_output_tokens:e.modelConfig?.maxTokens??this.config.maxTokens??void 0}:{...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},...e.modelConfig?.topP!==void 0?{top_p:e.modelConfig.topP}:{},presence_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty??void 0,frequency_penalty:e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty??void 0,max_output_tokens:e.modelConfig?.maxTokens??this.config.maxTokens??void 0},stream:e.modelConfig?.stream??this.config.stream??!1,background:void 0,include:u.length>0?u:void 0,metadata:void 0,parallel_tool_calls:this.config.parallelToolCalls,previous_response_id:void 0,...d?{reasoning:{effort:d,summary:p}}:{},service_tier:this.config.serviceTier,store:this.config.store,text:void 0,truncation:void 0,user:this.config.user,seed:this.config.seed};this.config.user&&(g.user=this.config.user),this.config.parallelToolCalls!==void 0&&(g.parallel_tool_calls=this.config.parallelToolCalls),e.responseFormat?g.text={format:e.responseFormat.type==="json_schema"?{type:"json_schema",json_schema:e.responseFormat.schema}:{type:e.responseFormat.type}}:this.config.responseFormat&&(g.text={format:{type:this.config.responseFormat}}),this.config.seed&&(g.seed=this.config.seed);let m=e.chatPrompt?this.createResponsesReqInternalInput(e.chatPrompt,i):[];if(m.length>0)g.input=m;else if(e.chatPrompt&&e.chatPrompt.length===1&&e.chatPrompt[0]?.role==="user"&&e.chatPrompt[0]?.content&&typeof e.chatPrompt[0].content=="string"&&!a)g.input=e.chatPrompt[0].content;else if(m.length===0&&!a)throw new Error("Responses API request must have input or instructions.");let f=g.reasoning??{};if(this.config.reasoningEffort&&(f={...f,effort:this.config.reasoningEffort}),t?.thinkingTokenBudget)switch(t.thinkingTokenBudget){case"none":f={};break;case"minimal":f={...f,effort:"minimal"};break;case"low":f={...f,effort:"medium"};break;case"medium":case"high":case"highest":f={...f,effort:"high"};break}Object.keys(f).length>0&&f.effort?g.reasoning=f:g.reasoning=void 0;let h=g;return this.responsesReqUpdater&&(h=this.responsesReqUpdater(h)),[r,h]}createChatResp(e){let{id:t,output:n,usage:r}=e;r&&(this.tokensUsed={promptTokens:r.prompt_tokens,completionTokens:r.completion_tokens??r.output_tokens??0,totalTokens:r.total_tokens});let s={};for(let i of n??[])switch(i.type){case"message":s.id=i.id,s.content=ma(i.content,t),s.finishReason=i.status==="completed"?"stop":"content_filter",s.citations=hs(i.content);break;case"reasoning":s.id=i.id,i.encrypted_content?s.thought=i.encrypted_content:s.thought=i.summary.map(a=>typeof a=="object"?JSON.stringify(a):a).join(`
|
|
188
188
|
`);break;case"file_search_call":s.id=i.id,s.functionCalls=[{id:i.id,type:"function",function:{name:"file_search",params:{queries:i.queries,results:i.results}}}],s.finishReason="function_call";break;case"web_search_call":s.id=i.id,s.functionCalls=[{id:i.id,type:"function",function:{name:"web_search",params:{queries:i.queries}}}],s.finishReason="function_call";break;case"computer_call":s.id=i.id,s.functionCalls=[{id:i.id,type:"function",function:{name:"computer_use",params:{action:i.action}}}],s.finishReason="function_call";break;case"code_interpreter_call":s.id=i.id,s.functionCalls=[{id:i.id,type:"function",function:{name:"code_interpreter",params:{code:i.code,results:i.results}}}],s.finishReason="function_call";break;case"image_generation_call":s.id=i.id,s.functionCalls=[{id:i.id,type:"function",function:{name:"image_generation",params:{result:i.result}}}],s.finishReason="function_call";break;case"local_shell_call":s.id=i.id,s.functionCalls=[{id:i.id,type:"function",function:{name:"local_shell",params:{action:i.action}}}],s.finishReason="function_call";break;case"mcp_call":s.id=i.id,s.functionCalls=[{id:i.id,type:"function",function:{name:"mcp",params:{name:i.name,args:i.args,serverLabel:i.server_label,output:i.output,error:i.error}}}],s.finishReason="function_call";break;case"function_call":s.id=i.id,s.functionCalls=[{id:i.id,type:"function",function:{name:i.name,params:i.arguments}}],s.finishReason="function_call";break}return{results:[{...s,index:0}],remoteId:t}}createChatStreamResp=e=>{let t=e,n={index:0,id:"",content:"",finishReason:"stop"},r;switch(t.type){case"response.created":case"response.in_progress":case"response.queued":r=t.response.id,n.id=`${t.response.id}_res_0`;break;case"response.output_item.added":switch(t.item.type){case"message":n.id=t.item.id,n.content=ma(t.item.content,t.item.id),n.citations=hs(t.item.content);break;case"function_call":n.id=t.item.id,n.functionCalls=[{id:t.item.id,type:"function",function:{name:t.item.name,params:t.item.arguments}}];break;case"file_search_call":{let s=t.item;n.id=t.item.id,n.functionCalls=[{id:s.id,type:"function",function:{name:"file_search",params:{queries:s.queries||[],results:s.results?.map(i=>({fileId:i.file_id,filename:i.filename,score:i.score,text:i.text,attributes:i.attributes}))}}}]}break;case"web_search_call":{let s=t.item;n.id=t.item.id,n.functionCalls=[{id:s.id,type:"function",function:{name:"web_search",params:{queries:s.queries||[]}}}]}break;case"computer_call":{let s=t.item;n.id=t.item.id,n.functionCalls=[{id:s.id,type:"function",function:{name:"computer_use",params:{action:s.action||{}}}}]}break;case"code_interpreter_call":{let s=t.item;n.id=t.item.id,n.functionCalls=[{id:s.id,type:"function",function:{name:"code_interpreter",params:{code:s.code||"",results:s.results}}}]}break;case"image_generation_call":{let s=t.item;n.id=t.item.id,n.functionCalls=[{id:s.id,type:"function",function:{name:"image_generation",params:{result:s.result}}}]}break;case"local_shell_call":{let s=t.item;n.id=t.item.id,n.functionCalls=[{id:s.id,type:"function",function:{name:"local_shell",params:{action:s.action||{}}}}]}break;case"mcp_call":{let s=t.item;n.id=t.item.id,n.functionCalls=[{id:s.id,type:"function",function:{name:"mcp",params:{name:s.name||"",args:s.args||"",serverLabel:s.server_label||"",output:s.output,error:s.error}}}]}break}break;case"response.content_part.added":n.id=t.item_id,n.content=ma([t.part],t.item_id),n.citations=hs([t.part]);break;case"response.output_text.delta":n.id=t.item_id,n.content=t.delta;break;case"response.output_text.done":break;case"response.function_call_arguments.delta":n.id=t.item_id,n.functionCalls=[{id:t.item_id,type:"function",function:{name:"",params:t.delta}}];break;case"response.reasoning_summary_text.delta":n.id=t.item_id,n.thought=t.delta;break;case"response.file_search_call.in_progress":case"response.file_search_call.searching":n.id=t.item_id,n.finishReason="function_call";break;case"response.file_search_call.completed":n.id=t.item_id,n.finishReason="function_call";break;case"response.web_search_call.in_progress":case"response.web_search_call.searching":n.id=t.item_id,n.finishReason="function_call";break;case"response.web_search_call.completed":n.id=t.item_id,n.finishReason="function_call";break;case"response.image_generation_call.in_progress":case"response.image_generation_call.generating":n.id=t.item_id,n.finishReason="function_call";break;case"response.image_generation_call.completed":n.id=t.item_id,n.finishReason="function_call";break;case"response.image_generation_call.partial_image":n.id=t.item_id,n.finishReason="function_call";break;case"response.mcp_call.in_progress":n.id=t.item_id,n.finishReason="function_call";break;case"response.mcp_call.arguments.delta":n.id=t.item_id,n.functionCalls=[{id:t.item_id,type:"function",function:{name:"",params:t.delta}}];break;case"response.mcp_call.arguments.done":n.id=t.item_id,n.functionCalls=[{id:t.item_id,type:"function",function:{name:"",params:t.arguments}}];break;case"response.mcp_call.completed":case"response.mcp_call.failed":n.id="mcp_call_event",n.finishReason="function_call";break;case"response.mcp_list_tools.in_progress":case"response.mcp_list_tools.completed":case"response.mcp_list_tools.failed":n.id="mcp_list_tools_event",n.finishReason="function_call";break;case"response.output_item.done":switch(t.item.type){case"message":if(n.id=t.item.id,n.finishReason=t.item.status==="completed"?"stop":"error",!n.citations||n.citations.length===0){let s=hs(t.item.content||[]);s&&(n.citations=s)}break;case"function_call":case"file_search_call":case"web_search_call":case"computer_call":case"code_interpreter_call":case"image_generation_call":case"local_shell_call":case"mcp_call":n.id=t.item.id,n.finishReason="function_call";break}break;case"response.completed":t.response.usage&&(this.tokensUsed={promptTokens:t.response.usage.prompt_tokens,completionTokens:t.response.usage.completion_tokens??t.response.usage.output_tokens??0,totalTokens:t.response.usage.total_tokens}),r=t.response.id,n.id=`${t.response.id}_completed`,n.finishReason="stop";break;case"response.failed":r=t.response.id,n.id=`${t.response.id}_failed`,n.finishReason="error";break;case"response.incomplete":r=t.response.id,n.id=`${t.response.id}_incomplete`,n.finishReason="length";break;case"error":n.id="error",n.content=`Error: ${t.message}`,n.finishReason="error";break;default:n.id="unknown";break}return{results:[n],remoteId:r}};createEmbedReq(e){let t=e.embedModel;if(!t)throw new Error("Embed model not set");if(!e.texts||e.texts.length===0)throw new Error("Embed texts is empty");let n={name:"/embeddings"},r={model:t,input:e.texts,dimensions:this.config.dimensions};return[n,r]}},ma=(o,e)=>{let t=o.filter(n=>n.type==="refusal");if(t.length>0){let n=t.map(r=>r.refusal).join(`
|
|
189
189
|
`);throw new We(n,void 0,e)}return o.filter(n=>n.type==="output_text").map(n=>n.text).join(`
|
|
190
|
-
`)};function hs(o){let e=[];for(let t of o??[])if(t?.type==="output_text"&&Array.isArray(t.annotations))for(let n of t.annotations)n&&n.type==="url_citation"&&typeof n.url=="string"&&e.push({url:n.url,title:n.title,description:n.description});return e.length?e:void 0}var Jr=()=>({model:"gpt-4o",embedModel:"text-embedding-ada-002",temperature:.7,topP:1,stream:!0}),yl=()=>({...Jr(),model:"gpt-4o",temperature:.5}),bl=()=>({...Jr(),model:"gpt-4o",temperature:.9}),Kr=class extends Xe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:s=[],models:i,responsesReqUpdater:a,supportFor:c={functions:!0,streaming:!0,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}}){if(!e||e==="")throw new Error("OpenAI API key not set");let u=new Wn(t,n?.streamingUsage??!0,a),l=i?.map(p=>{let d=p,g=d?.config;if(!g)return p;let m={};g.maxTokens!==void 0&&(m.maxTokens=g.maxTokens),g.temperature!==void 0&&(m.temperature=g.temperature),g.topP!==void 0&&(m.topP=g.topP),g.presencePenalty!==void 0&&(m.presencePenalty=g.presencePenalty),g.frequencyPenalty!==void 0&&(m.frequencyPenalty=g.frequencyPenalty);let f=g.stopSequences??g.stop;f!==void 0&&(m.stopSequences=f),g.n!==void 0&&(m.n=g.n),g.stream!==void 0&&(m.stream=g.stream);let h={...d};Object.keys(m).length>0&&(h.modelConfig={...d.modelConfig??{},...m});let x=g?.thinking?.thinkingTokenBudget;if(typeof x=="number"){let A=[["minimal",200],["low",800],["medium",5e3],["high",1e4],["highest",24500]],y="minimal",C=Number.POSITIVE_INFINITY;for(let[R,I]of A){let M=Math.abs(x-I);M<C&&(C=M,y=R)}h.thinkingTokenBudget=y}return g?.thinking?.includeThoughts!==void 0&&(h.showThoughts=!!g.thinking.includeThoughts),h});super(u,{name:"OpenAI",apiURL:r||"https://api.openai.com/v1",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:s,defaults:{model:t.model??"gpt-4o",embedModel:t.embedModel??"text-embedding-ada-002"},options:n,supportFor:c,models:l??i})}},Vn=class extends Kr{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("OpenAI API key not set");s=[...Qo,...s??[]];let i=a=>{let c=Tt({model:a,modelInfo:s,models:r});return{functions:!0,streaming:!0,hasThinkingBudget:c?.supported?.thinkingBudget??!1,hasShowThoughts:c?.supported?.showThoughts??!1,structuredOutputs:c?.supported?.structuredOutputs??!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}};super({apiKey:e,config:{...Jr(),...t},options:n,modelInfo:s,models:r,supportFor:i})}};var ga=()=>structuredClone({model:"openrouter/auto",...Le()}),Kn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s,referer:i,title:a}){if(!e||e==="")throw new Error("OpenRouter API key not set");let c={...ga(),...t},u={functions:!0,streaming:!0,hasThinkingBudget:!1,hasShowThoughts:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},l=s??[];super({apiKey:e,config:c,options:n,apiURL:"https://openrouter.ai/api/v1",modelInfo:l,models:r,supportFor:u}),super.setName("OpenRouter"),super.setHeaders(async()=>{let p={Authorization:`Bearer ${e}`};return i&&(p["HTTP-Referer"]=i),a&&(p["X-Title"]=a),p})}};async function xs(o,e,t={}){if(typeof o=="string")return[{type:"text",text:o}];if(!Array.isArray(o))return[{type:"text",text:String(o)}];let n=e.getFeatures(),r=[];for(let s of o)try{switch(s.type){case"text":r.push({type:"text",text:s.text});break;case"image":if(n.media.images.supported)s.altText?r.push({type:"text",text:`[Image: ${s.altText}]`}):r.push({type:"text",text:"[Image content]"});else if(s.altText)r.push({type:"text",text:s.altText});else if(t.imageToText)try{let i=await t.imageToText(s.image);r.push({type:"text",text:i})}catch(i){throw new Mt(i,"image","vision analysis")}else switch(t.fallbackBehavior){case"error":throw new Rt("Images",e.getName(),!1);case"skip":continue;default:r.push({type:"text",text:"[Image content not supported by this provider]"})}break;case"audio":if(n.media.audio.supported)s.transcription?r.push({type:"text",text:s.transcription}):r.push({type:"text",text:"[Audio content]"});else if(s.transcription)r.push({type:"text",text:s.transcription});else if(t.audioToText)try{let i=await t.audioToText(s.data,s.format);r.push({type:"text",text:i})}catch(i){throw new Mt(i,"audio","transcription")}else switch(t.fallbackBehavior){case"error":throw new Rt("Audio",e.getName(),!1);case"skip":continue;case"degrade":r.push({type:"text",text:"[Audio content not supported by this provider]"})}break;case"file":if(n.media.files.supported)s.extractedText?r.push({type:"text",text:s.extractedText}):r.push({type:"text",text:`[File: ${s.filename}]`});else if(s.extractedText)r.push({type:"text",text:s.extractedText});else if(t.fileToText)try{let i=await t.fileToText(s.data,s.mimeType);r.push({type:"text",text:i})}catch(i){throw new Mt(i,"file","text extraction")}else switch(t.fallbackBehavior){case"error":throw new Rt("Files",e.getName(),!1);case"skip":continue;default:r.push({type:"text",text:`[File: ${s.filename} - content not accessible by this provider]`})}break;case"url":if(n.media.urls.supported)s.cachedContent?r.push({type:"text",text:s.cachedContent}):r.push({type:"text",text:`[Link: ${s.url}${s.title?` - ${s.title}`:""}]`});else if(s.cachedContent)r.push({type:"text",text:s.cachedContent});else if(t.urlToText)try{let i=await t.urlToText(s.url);r.push({type:"text",text:i})}catch(i){throw new Mt(i,"url","content fetching")}else switch(t.fallbackBehavior){case"error":throw new Rt("URLs",e.getName(),!1);case"skip":continue;case"degrade":r.push({type:"text",text:`[Link: ${s.url}${s.title?` - ${s.title}`:""}]`})}break;default:typeof s=="object"&&s.text?r.push({type:"text",text:s.text}):r.push({type:"text",text:String(s)})}}catch(i){throw i instanceof Rt||i instanceof Mt?i:new Mt(i,s.type||"unknown","content processing")}return r}function Cl(o){let e=!1,t=!1,n=!1,r=!1;for(let s of o)if(s.role==="user"&&Array.isArray(s.content))for(let i of s.content)switch(i.type){case"image":e=!0;break;case"audio":t=!0;break;case"file":n=!0;break;case"url":r=!0;break}return{hasImages:e,hasAudio:t,hasFiles:n,hasUrls:r}}var Qr=(n=>(n.RekaCore="reka-core",n.RekaFlash="reka-flash",n.RekaEdge="reka-edge",n))(Qr||{});var As=[{name:"reka-core",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15},{name:"reka-flash",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:2},{name:"reka-edge",currency:"usd",promptTokenCostPer1M:.4,completionTokenCostPer1M:1}];var Yr=()=>structuredClone({model:"reka-core",...Le()}),Il=()=>structuredClone({...Yr(),model:"reka-core"}),Rl=()=>structuredClone({model:"reka-core",...Ze()}),wl=()=>({...Yr(),model:"reka-flash"}),fa=class{constructor(e){this.config=e}tokensUsed;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,topP:e.topP,n:e.n,stream:e.stream}}createChatReq=e=>{let t=e.model;if(!e.chatPrompt||e.chatPrompt.length===0)throw new Error("Chat prompt is empty");let n={name:"/chat/completions"},r=Wg(e),s=e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,i=e.modelConfig?.stream??this.config.stream,a={model:t,messages:r,max_tokens:e.modelConfig?.maxTokens??this.config.maxTokens,...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},top_k:e.modelConfig?.n??this.config.n,...e.modelConfig?.topP!==void 0?{top_p:e.modelConfig.topP}:{},stop:e.modelConfig?.stopSequences??this.config.stop,presence_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty,...s?{frequency_penalty:s}:{},...i?{stream:!0}:{}};return[n,a]};createChatResp=e=>{let{id:t,usage:n,responses:r}=e;return this.tokensUsed=n?{promptTokens:n.input_tokens,completionTokens:n.output_tokens,totalTokens:n.input_tokens+n.output_tokens}:void 0,{results:r.map((i,a)=>{let c=Tl(i.finish_reason),u;return typeof i.message.content=="string"?u=i.message.content:u=i.message.content.text,{index:a,id:`${t}`,content:u,finishReason:c}}),remoteId:t}};createChatStreamResp=e=>{let{id:t,usage:n,responses:r}=e;return this.tokensUsed=n?{promptTokens:n.input_tokens,completionTokens:n.output_tokens,totalTokens:n.input_tokens+n.output_tokens}:void 0,{results:r.map((i,a)=>{let c=Tl(i.finish_reason),u;return typeof i.chunk.content=="string"?u=i.chunk.content:u=i.chunk.content.text,{index:a,id:`${t}`,content:u,finishReason:c}})}}},Tl=o=>{switch(o){case"stop":return"stop";case"context":return"length";case"length":return"length"}};function Wg(o){return o.chatPrompt.map(e=>{switch(e.role){case"system":return{role:"user",content:e.content};case"user":return Array.isArray(e.content)?{role:"user",content:e.content.map(t=>{switch(t.type){case"text":return{type:"text",text:t.text};case"image":throw new Error("Image type not supported");default:throw new Error("Invalid content type")}})}:{role:"user",content:e.content};case"assistant":if(Array.isArray(e.content))return{role:"assistant",content:e.content.map(t=>{switch(t.type){case"text":return{type:"text",text:t.text};case"image":throw new Error("Image type not supported");default:throw new Error("Invalid content type")}})};if(!e.content)throw new Error("Assistant content is empty");return{role:"user",content:e.content};default:throw new Error("Invalid role")}})}var Jn=class extends Xe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:s=As,models:i}){if(!e||e==="")throw new Error("Reka API key not set");let a={...Yr(),...t},c=new fa(a);super(c,{name:"Reka",apiURL:r||"https://api.reka.ai/v1/chat",headers:async()=>({"X-Api-Key":e}),modelInfo:s,defaults:{model:a.model},options:n,supportFor:{functions:!0,streaming:!0,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},models:i})}};var ys=class{providers;processingServices;config;constructor(e){this.providers=[e.providers.primary,...e.providers.alternatives],this.processingServices=e.processing,this.config=e.routing}async chat(e,t={}){let n=await this.selectProviderWithDegradation(e,t.routingOptions||{}),r=await this.preprocessRequest(e,n.provider,t.processingOptions);try{return{response:await n.provider.chat(r,t),routing:n}}catch(s){if(s instanceof Rt&&t.fallbackProviders?.length)return await this.tryFallbackProviders(e,t.fallbackProviders,t);throw s}}async preprocessRequest(e,t,n){let r={...n,fallbackBehavior:n?.fallbackBehavior||"degrade",imageToText:n?.imageToText||this.processingServices.imageToText,audioToText:n?.audioToText||this.processingServices.audioToText,fileToText:n?.fileToText||this.processingServices.fileToText,urlToText:n?.urlToText||this.processingServices.urlToText},s=[];for(let i of e.chatPrompt)if(i.role==="user"&&Array.isArray(i.content)){let a=await xs(i.content,t,r);a.every(u=>u.type==="text")&&a.length===1?s.push({...i,content:a[0].text}):s.push({...i,content:a.map(u=>({type:"text",text:u.text}))})}else s.push(i);return{...e,chatPrompt:s}}async selectProviderWithDegradation(e,t){let n=mn(e),r=[],s=[],i=[];try{let a=ns(e,this.providers,{requireExactMatch:t.requireExactMatch??this.config.capability.requireExactMatch,allowDegradation:t.allowDegradation??this.config.capability.allowDegradation}),c=a.getFeatures();return n.hasImages&&!c.media.images.supported&&(s.push("Images will be converted to text descriptions"),r.push("Image-to-text conversion")),n.hasAudio&&!c.media.audio.supported&&(s.push("Audio will be transcribed to text"),r.push("Audio-to-text transcription")),n.hasFiles&&!c.media.files.supported&&(s.push("File content will be extracted to text"),r.push("File-to-text extraction")),n.hasUrls&&!c.media.urls.supported&&(s.push("URL content will be pre-fetched"),r.push("URL content fetching")),n.requiresStreaming&&!c.streaming&&i.push("Streaming not supported - will use non-streaming mode"),n.requiresCaching&&!c.caching.supported&&i.push("Content caching not supported"),{provider:a,processingApplied:r,degradations:s,warnings:i}}catch(a){throw new Error(`Provider selection failed: ${a instanceof Error?a.message:"Unknown error"}`)}}async tryFallbackProviders(e,t,n){for(let r of t)try{let s={provider:r,processingApplied:["Fallback provider selection"],degradations:["Using fallback provider due to primary provider failure"],warnings:[]},i=await this.preprocessRequest(e,r,{fallbackBehavior:"degrade"});return{response:await r.chat(i,n),routing:s}}catch{}throw new Error("All fallback providers failed")}async getRoutingRecommendation(e){return await this.selectProviderWithDegradation(e,{})}async validateRequest(e){let t=mn(e),n=[],r=[];try{let s=await this.selectProviderWithDegradation(e,{});return s.degradations.length>0&&(n.push(...s.degradations),r.push("Consider using a provider that natively supports all media types")),s.warnings.length>0&&n.push(...s.warnings),t.hasImages&&this.processingServices.imageToText===void 0&&(this.providers.some(a=>a.getFeatures().media.images.supported)||(n.push("No image processing service available and no providers support images"),r.push("Add imageToText processing service or use image-capable provider"))),t.hasAudio&&this.processingServices.audioToText===void 0&&(this.providers.some(a=>a.getFeatures().media.audio.supported)||(n.push("No audio processing service available and no providers support audio"),r.push("Add audioToText processing service or use audio-capable provider"))),{canHandle:n.length===0||s.degradations.length>0,issues:n,recommendations:r}}catch(s){return{canHandle:!1,issues:[`Cannot route request: ${s instanceof Error?s.message:"Unknown error"}`],recommendations:["Add more providers or processing services to handle this request"]}}}getRoutingStats(){let e={};for(let t of this.providers){let n=t.getFeatures(),r=t.getName();n.functions&&(e.Functions=e.Functions||[],e.Functions.push(r)),n.streaming&&(e.Streaming=e.Streaming||[],e.Streaming.push(r)),n.media.images.supported&&(e.Images=e.Images||[],e.Images.push(r)),n.media.audio.supported&&(e.Audio=e.Audio||[],e.Audio.push(r)),n.media.files.supported&&(e.Files=e.Files||[],e.Files.push(r)),n.media.urls.supported&&(e.URLs=e.URLs||[],e.URLs.push(r)),n.caching.supported&&(e.Caching=e.Caching||[],e.Caching.push(r))}return{totalProviders:this.providers.length,capabilityMatrix:e,recommendedProvider:this.providers[0]?.getName()||"None"}}};var Xr=(A=>(A.KimiK25="moonshotai/Kimi-K2.5",A.KimiK2Instruct0905="moonshotai/Kimi-K2-Instruct-0905",A.KimiK2Thinking="moonshotai/Kimi-K2-Thinking",A.DeepSeekV31="deepseek-ai/DeepSeek-V3.1",A.DeepSeekR1="deepseek-ai/DeepSeek-R1",A.GPTOSS120B="openai/gpt-oss-120b",A.GPTOSS20B="openai/gpt-oss-20b",A.Qwen35_397B="Qwen/Qwen3.5-397B-A17B",A.Qwen3CoderNext="Qwen/Qwen3-Coder-Next-FP8",A.Qwen3Coder480B="Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",A.Qwen3_235BInstruct2507="Qwen/Qwen3-235B-A22B-Instruct-2507-tput",A.Qwen3_235BThinking2507="Qwen/Qwen3-235B-A22B-Thinking-2507",A.Qwen3Next80BInstruct="Qwen/Qwen3-Next-80B-A3B-Instruct",A.Qwen3Next80BThinking="Qwen/Qwen3-Next-80B-A3B-Thinking",A.GLM5="zai-org/GLM-5",A.GLM47="zai-org/GLM-4.7",A.Llama4Maverick="meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",A.Llama33_70B="meta-llama/Llama-3.3-70B-Instruct-Turbo",A))(Xr||{});var bs=[{name:"moonshotai/Kimi-K2.5",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:2.8},{name:"moonshotai/Kimi-K2-Instruct-0905",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:3},{name:"moonshotai/Kimi-K2-Thinking",currency:"usd",promptTokenCostPer1M:1.2,completionTokenCostPer1M:4},{name:"deepseek-ai/DeepSeek-V3.1",currency:"usd",promptTokenCostPer1M:.6,completionTokenCostPer1M:1.7},{name:"deepseek-ai/DeepSeek-R1",currency:"usd",promptTokenCostPer1M:1.4,completionTokenCostPer1M:2.2},{name:"openai/gpt-oss-120b",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:.6},{name:"openai/gpt-oss-20b",currency:"usd",promptTokenCostPer1M:.05,completionTokenCostPer1M:.2},{name:"Qwen/Qwen3.5-397B-A17B",currency:"usd",promptTokenCostPer1M:.6,completionTokenCostPer1M:3.6},{name:"Qwen/Qwen3-Coder-Next-FP8",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.2},{name:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:2},{name:"Qwen/Qwen3-235B-A22B-Instruct-2507-tput",currency:"usd",promptTokenCostPer1M:.2,completionTokenCostPer1M:.6},{name:"Qwen/Qwen3-235B-A22B-Thinking-2507",currency:"usd",promptTokenCostPer1M:.65,completionTokenCostPer1M:3},{name:"Qwen/Qwen3-Next-80B-A3B-Instruct",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:1.5},{name:"Qwen/Qwen3-Next-80B-A3B-Thinking",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:1.5},{name:"zai-org/GLM-5",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:3.2},{name:"zai-org/GLM-4.7",currency:"usd",promptTokenCostPer1M:.45,completionTokenCostPer1M:2},{name:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",currency:"usd",promptTokenCostPer1M:.27,completionTokenCostPer1M:.85},{name:"meta-llama/Llama-3.3-70B-Instruct-Turbo",currency:"usd",promptTokenCostPer1M:.88,completionTokenCostPer1M:.88}];var ha=()=>structuredClone({model:"meta-llama/Llama-3.3-70B-Instruct-Turbo",...Le()}),Qn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("Together API key not set");let i={...ha(),...t};s=[...bs,...s??[]];let a={functions:!0,streaming:!0,hasThinkingBudget:!1,hasShowThoughts:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0};super({apiKey:e,config:i,options:n,apiURL:"https://api.together.xyz/v1",modelInfo:s,models:r,supportFor:a}),super.setName("Together")}};var Zr=(d=>(d.Llama31_8B_Instruct="Llama-3.1-8B-Instruct-q4f32_1-MLC",d.Llama31_70B_Instruct="Llama-3.1-70B-Instruct-q4f16_1-MLC",d.Llama32_1B_Instruct="Llama-3.2-1B-Instruct-q4f32_1-MLC",d.Llama32_3B_Instruct="Llama-3.2-3B-Instruct-q4f32_1-MLC",d.Mistral7B_Instruct="Mistral-7B-Instruct-v0.3-q4f32_1-MLC",d.Phi35_Mini_Instruct="Phi-3.5-mini-instruct-q4f32_1-MLC",d.Gemma2_2B_Instruct="gemma-2-2b-it-q4f32_1-MLC",d.Gemma2_9B_Instruct="gemma-2-9b-it-q4f32_1-MLC",d.Qwen2_5_0_5B_Instruct="Qwen2.5-0.5B-Instruct-q4f32_1-MLC",d.Qwen2_5_1_5B_Instruct="Qwen2.5-1.5B-Instruct-q4f32_1-MLC",d.Qwen2_5_3B_Instruct="Qwen2.5-3B-Instruct-q4f32_1-MLC",d.Qwen2_5_7B_Instruct="Qwen2.5-7B-Instruct-q4f32_1-MLC",d))(Zr||{});var Cs=[{name:"Llama-3.1-8B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:128e3,maxTokens:4096},{name:"Llama-3.1-70B-Instruct-q4f16_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:128e3,maxTokens:4096,isExpensive:!0},{name:"Llama-3.2-1B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:128e3,maxTokens:2048},{name:"Llama-3.2-3B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:128e3,maxTokens:2048},{name:"Mistral-7B-Instruct-v0.3-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:32768,maxTokens:4096},{name:"Phi-3.5-mini-instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:128e3,maxTokens:4096},{name:"gemma-2-2b-it-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:8192,maxTokens:2048},{name:"gemma-2-9b-it-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:8192,maxTokens:2048},{name:"Qwen2.5-0.5B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:32768,maxTokens:2048},{name:"Qwen2.5-1.5B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:32768,maxTokens:2048},{name:"Qwen2.5-3B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:32768,maxTokens:2048},{name:"Qwen2.5-7B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:32768,maxTokens:4096}];var Aa=()=>structuredClone({model:"Llama-3.2-3B-Instruct-q4f32_1-MLC",...Le()}),vl=()=>structuredClone({model:"Llama-3.2-3B-Instruct-q4f32_1-MLC",...Ze()}),xa=class{constructor(e,t){this.config=e;this.engine=t}tokensUsed;engine;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,endSequences:e.endSequences,stream:e.stream,n:e.n}}createChatReq(e){let t=e.model,n=e.chatPrompt.map(a=>{if(a.role==="function")return{role:"function",name:a.functionId,content:typeof a.result=="string"?a.result:JSON.stringify(a.result)};let c="";typeof a.content=="string"?c=a.content:Array.isArray(a.content)&&(c=a.content.filter(l=>l.type==="text").map(l=>l.text).join(`
|
|
191
|
-
`));let u={role:a.role,content:c};return a.role==="assistant"&&a.functionCalls?.length?{...u,tool_calls:a.functionCalls.map(l=>({id:l.id,type:"function",function:{name:l.function.name,arguments:typeof l.function.params=="string"?l.function.params:JSON.stringify(l.function.params||{})}}))}:u}),r=e.functions?.map(a=>({type:"function",function:{name:a.name,description:a.description,parameters:a.parameters||{type:"object",properties:{}}}})),s={name:"/chat/completions",localCall:async(a,c)=>{try{let u=await this.engine.chat.completions.create({...a,stream:c||!1});return c?new ReadableStream({async start(l){try{for await(let p of u)l.enqueue(p);l.close()}catch(p){l.error(p)}}}):u}catch(u){throw new Error(`WebLLM API error: ${u}`)}}},i={model:t,messages:n,...r?.length?{tools:r}:{},max_tokens:e.modelConfig?.maxTokens??this.config.maxTokens,...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},...e.modelConfig?.topP!==void 0?{top_p:e.modelConfig.topP}:{},presence_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty,frequency_penalty:e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,stop:e.modelConfig?.stopSequences??this.config.stopSequences,stream:e.modelConfig?.stream??this.config.stream,n:e.modelConfig?.n??this.config.n};return[s,i]}createEmbedReq=e=>{throw new Error("WebLLM does not support embeddings")};createChatResp=e=>(this.tokensUsed={promptTokens:e.usage?.prompt_tokens??0,completionTokens:e.usage?.completion_tokens??0,totalTokens:e.usage?.total_tokens??0},{results:e.choices.map((n,r)=>{let s="stop";switch(n.finish_reason){case"stop":s="stop";break;case"length":s="length";break;case"tool_calls":s="function_call";break;case"content_filter":s="content_filter";break;default:s="stop";break}let i=n.message.tool_calls?.map(a=>({id:a.id,type:"function",function:{name:a.function.name,params:a.function.arguments}}));return{index:r,id:e.id,content:n.message.content||"",functionCalls:i,finishReason:s}}),remoteId:e.id});createChatStreamResp=(e,t)=>{let n=t,r=e.choices[0];if(!r)throw new Error("No choice in WebLLM stream response");if(r.delta.content&&(n.content=(n.content||"")+r.delta.content),r.delta.tool_calls){n.toolCalls||(n.toolCalls=[]);for(let c of r.delta.tool_calls){let u=n.toolCalls[c.index];u?c.function?.arguments&&(u.function.arguments=(u.function?.arguments||"")+c.function.arguments):n.toolCalls[c.index]={id:c.id,type:c.type,function:{name:c.function?.name,arguments:c.function?.arguments||""}}}}e.usage&&(this.tokensUsed={promptTokens:e.usage.prompt_tokens,completionTokens:e.usage.completion_tokens,totalTokens:e.usage.total_tokens});let s;if(r.finish_reason)switch(r.finish_reason){case"stop":s="stop";break;case"length":s="length";break;case"tool_calls":s="function_call";break;case"content_filter":s="content_filter";break;default:s="stop";break}let i=n.toolCalls?.map(c=>({id:c.id||"",type:"function",function:{name:c.function?.name||"",params:c.function?.arguments||""}}));return{results:[{index:0,id:e.id,content:n.content||"",functionCalls:i,finishReason:s}],remoteId:e.id}};createEmbedResp(e){throw new Error("WebLLM does not support embeddings")}},Yn=class extends Xe{constructor({engine:e,config:t,options:n,models:r}){if(!e)throw new Error("WebLLM engine instance is required");let s={...Aa(),...t},i=new xa(s,e);super(i,{name:"WebLLM",apiURL:void 0,headers:async()=>({}),modelInfo:Cs,defaults:{model:s.model},supportFor:a=>({functions:!0,streaming:!0,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}),options:n,models:r})}};var eo=(r=>(r.Grok3="grok-3",r.Grok3Mini="grok-3-mini",r.Grok3Fast="grok-3-fast",r.Grok3MiniFast="grok-3-mini-fast",r))(eo||{}),ya=(e=>(e.GrokEmbedSmall="grok-embed-small",e))(ya||{});var Ts=[{name:"grok-3",currency:"USD",promptTokenCostPer1M:3,completionTokenCostPer1M:15},{name:"grok-3-mini",currency:"USD",promptTokenCostPer1M:.3,completionTokenCostPer1M:.5,supported:{thinkingBudget:!0}},{name:"grok-3-fast",currency:"USD",promptTokenCostPer1M:5,completionTokenCostPer1M:25},{name:"grok-3-mini-fast",currency:"USD",promptTokenCostPer1M:.6,completionTokenCostPer1M:4,supported:{thinkingBudget:!0}}];var Is=()=>structuredClone({model:"grok-3-mini",...Le()}),Sl=()=>structuredClone({...Is(),model:"grok-3"}),Xn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("Grok API key not set");let i={...Is(),...t};s=[...Ts,...s??[]];let a=u=>{let l=Tt({model:u,modelInfo:s,models:r});return{functions:!0,streaming:!0,hasThinkingBudget:l?.supported?.thinkingBudget??!1,hasShowThoughts:l?.supported?.showThoughts??!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}},c=(u,l)=>{if(n?.searchParameters){let p=n.searchParameters;return{...u,search_parameters:{mode:p.mode,return_citations:p.returnCitations,from_date:p.fromDate,to_date:p.toDate,max_search_results:p.maxSearchResults,sources:p.sources?.map(d=>({type:d.type,country:d.country,excluded_websites:d.excludedWebsites,allowed_websites:d.allowedWebsites,safe_search:d.safeSearch,x_handles:d.xHandles,links:d.links}))}}}return u};super({apiKey:e,config:i,options:n,apiURL:"https://api.x.ai/v1",modelInfo:s,models:r,supportFor:a,chatReqUpdater:c}),super.setName("Grok")}};function kl(o){return to.create(o)}var to=class o{ai;static create(e){return new o(e)}constructor(e){switch(e.name){case"openai":this.ai=new Nn(e);break;case"openai-responses":this.ai=new Vn(e);break;case"azure-openai":this.ai=new Ln(e);break;case"grok":this.ai=new Xn(e);break;case"huggingface":this.ai=new zn(e);break;case"groq":this.ai=new jn(e);break;case"together":this.ai=new Qn(e);break;case"openrouter":this.ai=new Kn(e);break;case"cohere":this.ai=new $n(e);break;case"google-gemini":this.ai=new Gn(e);break;case"anthropic":this.ai=new Mn(e);break;case"mistral":this.ai=new qn(e);break;case"deepseek":this.ai=new Dn(e);break;case"ollama":this.ai=new Hn(e);break;case"reka":this.ai=new Jn(e);break;case"webllm":this.ai=new Yn(e);break;default:throw new Error("Unknown AI")}}getName(){return this.ai.getName()}getId(){return this.ai.getId()}getFeatures(e){return this.ai.getFeatures(e)}getModelList(){return this.ai.getModelList()}getLastUsedChatModel(){return this.ai.getLastUsedChatModel()}getLastUsedEmbedModel(){return this.ai.getLastUsedEmbedModel()}getLastUsedModelConfig(){return this.ai.getLastUsedModelConfig()}getMetrics(){return this.ai.getMetrics()}getEstimatedCost(e){return this.ai.getEstimatedCost(e)}async chat(e,t){return await this.ai.chat(e,t)}async embed(e,t){return await this.ai.embed(e,t)}setOptions(e){this.ai.setOptions(e)}getOptions(){return this.ai.getOptions()}getLogger(){return this.ai.getLogger()}};var wt=class{name;fetch;tracer;_upsert;_batchUpsert;_query;constructor({name:e,fetch:t,tracer:n}){this.name=e,this.fetch=t,this.tracer=n}async upsert(e,t){if(!this._upsert)throw new Error("upsert() not implemented");return this.tracer?await this.tracer.startActiveSpan("DB Upsert Request",{kind:ht.SERVER,attributes:{[ve.DB_SYSTEM]:this.name,[ve.DB_OPERATION_NAME]:"upsert",[ve.DB_TABLE]:e.table,[ve.DB_NAMESPACE]:e.namespace,[ve.DB_OPERATION_NAME]:t?"update":"insert"}},async n=>{try{return await this._upsert(e,t,{span:n})}finally{n.end()}}):await this._upsert(e,t)}async batchUpsert(e,t){if(!this._batchUpsert)throw new Error("batchUpsert() not implemented");if(e.length===0)throw new Error("Batch request is empty");if(!e[0])throw new Error("Batch request is invalid first element is undefined");return this.tracer?await this.tracer.startActiveSpan("DB Batch Upsert Request",{kind:ht.SERVER,attributes:{[ve.DB_SYSTEM]:this.name,[ve.DB_OPERATION_NAME]:"upsert",[ve.DB_TABLE]:e[0].table,[ve.DB_NAMESPACE]:e[0].namespace,[ve.DB_OPERATION_NAME]:t?"update":"insert"}},async n=>{try{return await this._batchUpsert(e,t,{span:n})}finally{n.end()}}):await this._batchUpsert(e,t)}async query(e){if(!this._query)throw new Error("query() not implemented");return this.tracer?await this.tracer.startActiveSpan("DB Query Request",{kind:ht.SERVER,attributes:{[ve.DB_SYSTEM]:this.name,[ve.DB_OPERATION_NAME]:"upsert",[ve.DB_TABLE]:e.table,[ve.DB_NAMESPACE]:e.namespace,[ve.DB_OPERATION_NAME]:"query"}},async t=>{try{return await this._query(e,{span:t})}finally{t.end()}}):await this._query(e)}};var ba="https://api.cloudflare.com/client/v4/accounts/",Zn=class extends wt{apiKey;accountId;constructor({apiKey:e,accountId:t,fetch:n,tracer:r}){if(!e||!t)throw new Error("Cloudflare credentials not set");super({name:"Cloudflare",fetch:n,tracer:r}),this.apiKey=e,this.accountId=t}_upsert=async(e,t,n)=>{let r=await ct({url:new URL(`${this.accountId}/vectorize/indexes/${e.table}/upsert`,ba),headers:{"X-Auth-Key":this.apiKey},fetch:this.fetch,span:n?.span},{id:e.id,values:e.values,namespace:e.namespace,metadata:e.metadata});if(r.errors)throw new Error(`Cloudflare upsert failed: ${r.errors.map(({message:s})=>s).join(", ")}`);return{ids:r.result.ids}};batchUpsert=async(e,t,n)=>{if(t)throw new Error("Weaviate does not support batch update");if(e.length<1)throw new Error("Batch request is empty");if(!e[0]||!e[0].table)throw new Error("Table name is empty");let r=e[0].table,s=await ct({url:new URL(`${this.accountId}/vectorize/indexes/${r}/upsert`,ba),headers:{"X-Auth-Key":this.apiKey},fetch:this.fetch,span:n?.span},e.map(i=>({id:i.id,values:i.values,namespace:i.namespace,metadata:i.metadata})));if(s.errors)throw new Error(`Cloudflare batch upsert failed: ${s.errors.map(({message:i})=>i).join(", ")}`);return{ids:s.result.ids}};query=async(e,t)=>{let n=await ct({url:new URL(`${this.accountId}/vectorize/indexes/${e.table}/query`,ba),headers:{"X-Auth-Key":this.apiKey},fetch:this.fetch,span:t?.span},{vector:e.values,topK:e.limit||10,returnValues:!0});if(n.errors)throw new Error(`Cloudflare query failed: ${n.errors.map(({message:s})=>s).join(", ")}`);return{matches:n.result.matches.map(({id:s,score:i,values:a,metadata:c})=>({id:s,score:i,values:a,metadata:c}))}}};var rn=class extends wt{state;constructor({tracer:e}={}){super({name:"Memory",tracer:e}),this.state={}}_upsert=async(e,t,n)=>{if(!this.state[e.table])this.state[e.table]={[e.id]:e};else{let r=this.state[e.table];if(!r)throw new Error(`Table not found: ${e.table}`);r[e.id]=e}return{ids:[e.id]}};_batchUpsert=async(e,t,n)=>{let r=[];for(let s of e){let i=await this.upsert(s,t);r.push(...i.ids)}return{ids:r}};_query=async(e,t)=>{let n=this.state[e.table];if(!n)return{matches:[]};let r=[];return Object.entries(n).forEach(([s,i])=>{if(e.values&&i.values){let a=Vg(e.values,i.values);r.push({id:s,score:a,metadata:i.metadata})}}),r.sort((s,i)=>s.score-i.score),e.limit&&(r.length=e.limit),{matches:r}};getDB=()=>structuredClone(this.state);setDB=e=>{this.state=structuredClone(e)};clearDB=()=>{this.state={}}},Vg=(o,e)=>{if(o.length!==e.length)throw new Error("Vectors must be of the same length.");let t=0,n=0,r=0,s=!0,i=!0,a=new Float64Array(o),c=new Float64Array(e);for(let d=0;d<a.length;d++)t+=a[d]*c[d],n+=a[d]*a[d],r+=c[d]*c[d],a[d]!==0&&(s=!1),c[d]!==0&&(i=!1);if(s||i)return 1;let u=Math.sqrt(n),l=Math.sqrt(r);return 1-t/(u*l)};var Kg=o=>({namespace:o.namespace,topK:o.limit||10,filter:{},includeValues:!0,includeMetadata:!0,vector:o.values??[],id:o.id}),er=class extends wt{apiKey;apiURL;constructor({apiKey:e,host:t,fetch:n,tracer:r}){if(!e||e==="")throw new Error("Pinecone API key not set");super({name:"Pinecone",fetch:n,tracer:r}),this.apiKey=e,this.apiURL=t}_upsert=async(e,t,n)=>(await this._batchUpsert([e],t,n),{ids:[e.id]});_batchUpsert=async(e,t,n)=>{if(e.length===0)throw new Error("Batch request is empty");return await ct({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/vectors/upsert",fetch:this.fetch,span:n?.span},e.map(({id:r,values:s=[],metadata:i})=>({id:r,values:s,metadata:i}))),{ids:e.map(({id:r})=>r)}};query=async(e,t)=>{if(e.text)throw new Error("Pinecone does not support text");return{matches:(await ct({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/query",fetch:this.fetch,span:t?.span},Kg(e))).matches.map(({id:s,score:i,values:a,metadata:c})=>({id:s,score:i,metadata:c,values:a}))}}};var tr=class extends wt{apiKey;apiURL;constructor({apiKey:e,host:t,fetch:n,tracer:r}){if(!e||e==="")throw new Error("Weaviate API key not set");super({name:"Weaviate",fetch:n,tracer:r}),this.apiKey=e,this.apiURL=t}_upsert=async(e,t,n)=>{let r=await ct({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:`/v1/objects/${e.table}/${e.id}`,put:!!t,fetch:this.fetch,span:n?.span},{id:e.id,class:e.table,tenant:e.namespace,vector:e.values,properties:e.metadata??{}});if(r?.result?.errors)throw new Error(`Weaviate upsert failed: ${r.result.errors.error.map(({message:s})=>s).join(", ")}`);return{ids:[r.id]}};_batchUpsert=async(e,t,n)=>{if(t)throw new Error("Weaviate does not support batch update");if(e.length===0)throw new Error("Batch request is empty");let r=e.map(i=>({id:i.id,class:i.table,tenant:i.namespace,vector:i.values,properties:i.metadata??{}})),s=await ct({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/v1/batch/objects",fetch:this.fetch,span:n?.span},{objects:r});if(s?.some(({result:i})=>i?.errors))throw new Error(`Weaviate batch upsert failed: ${s.map(({result:i})=>i?.errors?.error.map(({message:a})=>a).join(", ")).join(", ")}`);return{ids:s.map(({id:i})=>i)}};_query=async(e,t)=>{let n="";if(e.columns&&e.columns.length===0)throw new Error("Weaviate requires at least one column");if(e.values)n=`nearVector: {
|
|
190
|
+
`)};function hs(o){let e=[];for(let t of o??[])if(t?.type==="output_text"&&Array.isArray(t.annotations))for(let n of t.annotations)n&&n.type==="url_citation"&&typeof n.url=="string"&&e.push({url:n.url,title:n.title,description:n.description});return e.length?e:void 0}var Jr=()=>({model:"gpt-4o",embedModel:"text-embedding-ada-002",temperature:.7,topP:1,stream:!0}),yl=()=>({...Jr(),model:"gpt-4o",temperature:.5}),bl=()=>({...Jr(),model:"gpt-4o",temperature:.9}),Kr=class extends Xe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:s=[],models:i,responsesReqUpdater:a,supportFor:c={functions:!0,streaming:!0,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}}){if(!e||e==="")throw new Error("OpenAI API key not set");let u=new Wn(t,n?.streamingUsage??!0,a),l=i?.map(p=>{let d=p,g=d?.config;if(!g)return p;let m={};g.maxTokens!==void 0&&(m.maxTokens=g.maxTokens),g.temperature!==void 0&&(m.temperature=g.temperature),g.topP!==void 0&&(m.topP=g.topP),g.presencePenalty!==void 0&&(m.presencePenalty=g.presencePenalty),g.frequencyPenalty!==void 0&&(m.frequencyPenalty=g.frequencyPenalty);let f=g.stopSequences??g.stop;f!==void 0&&(m.stopSequences=f),g.n!==void 0&&(m.n=g.n),g.stream!==void 0&&(m.stream=g.stream);let h={...d};Object.keys(m).length>0&&(h.modelConfig={...d.modelConfig??{},...m});let x=g?.thinking?.thinkingTokenBudget;if(typeof x=="number"){let A=[["minimal",200],["low",800],["medium",5e3],["high",1e4],["highest",24500]],y="minimal",C=Number.POSITIVE_INFINITY;for(let[R,I]of A){let M=Math.abs(x-I);M<C&&(C=M,y=R)}h.thinkingTokenBudget=y}return g?.thinking?.includeThoughts!==void 0&&(h.showThoughts=!!g.thinking.includeThoughts),h});super(u,{name:"OpenAI",apiURL:r||"https://api.openai.com/v1",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:s,defaults:{model:t.model??"gpt-4o",embedModel:t.embedModel??"text-embedding-ada-002"},options:n,supportFor:c,models:l??i})}},Vn=class extends Kr{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("OpenAI API key not set");s=[...Qo,...s??[]];let i=a=>{let c=it({model:a,modelInfo:s,models:r});return{functions:!0,streaming:!0,hasThinkingBudget:c?.supported?.thinkingBudget??!1,hasShowThoughts:c?.supported?.showThoughts??!1,structuredOutputs:c?.supported?.structuredOutputs??!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}};super({apiKey:e,config:{...Jr(),...t},options:n,modelInfo:s,models:r,supportFor:i})}};var ga=()=>structuredClone({model:"openrouter/auto",...Le()}),Kn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s,referer:i,title:a}){if(!e||e==="")throw new Error("OpenRouter API key not set");let c={...ga(),...t},u={functions:!0,streaming:!0,hasThinkingBudget:!1,hasShowThoughts:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},l=s??[];super({apiKey:e,config:c,options:n,apiURL:"https://openrouter.ai/api/v1",modelInfo:l,models:r,supportFor:u}),super.setName("OpenRouter"),super.setHeaders(async()=>{let p={Authorization:`Bearer ${e}`};return i&&(p["HTTP-Referer"]=i),a&&(p["X-Title"]=a),p})}};async function xs(o,e,t={}){if(typeof o=="string")return[{type:"text",text:o}];if(!Array.isArray(o))return[{type:"text",text:String(o)}];let n=e.getFeatures(),r=[];for(let s of o)try{switch(s.type){case"text":r.push({type:"text",text:s.text});break;case"image":if(n.media.images.supported)s.altText?r.push({type:"text",text:`[Image: ${s.altText}]`}):r.push({type:"text",text:"[Image content]"});else if(s.altText)r.push({type:"text",text:s.altText});else if(t.imageToText)try{let i=await t.imageToText(s.image);r.push({type:"text",text:i})}catch(i){throw new Mt(i,"image","vision analysis")}else switch(t.fallbackBehavior){case"error":throw new Rt("Images",e.getName(),!1);case"skip":continue;default:r.push({type:"text",text:"[Image content not supported by this provider]"})}break;case"audio":if(n.media.audio.supported)s.transcription?r.push({type:"text",text:s.transcription}):r.push({type:"text",text:"[Audio content]"});else if(s.transcription)r.push({type:"text",text:s.transcription});else if(t.audioToText)try{let i=await t.audioToText(s.data,s.format);r.push({type:"text",text:i})}catch(i){throw new Mt(i,"audio","transcription")}else switch(t.fallbackBehavior){case"error":throw new Rt("Audio",e.getName(),!1);case"skip":continue;case"degrade":r.push({type:"text",text:"[Audio content not supported by this provider]"})}break;case"file":if(n.media.files.supported)s.extractedText?r.push({type:"text",text:s.extractedText}):r.push({type:"text",text:`[File: ${s.filename}]`});else if(s.extractedText)r.push({type:"text",text:s.extractedText});else if(t.fileToText)try{let i=await t.fileToText(s.data,s.mimeType);r.push({type:"text",text:i})}catch(i){throw new Mt(i,"file","text extraction")}else switch(t.fallbackBehavior){case"error":throw new Rt("Files",e.getName(),!1);case"skip":continue;default:r.push({type:"text",text:`[File: ${s.filename} - content not accessible by this provider]`})}break;case"url":if(n.media.urls.supported)s.cachedContent?r.push({type:"text",text:s.cachedContent}):r.push({type:"text",text:`[Link: ${s.url}${s.title?` - ${s.title}`:""}]`});else if(s.cachedContent)r.push({type:"text",text:s.cachedContent});else if(t.urlToText)try{let i=await t.urlToText(s.url);r.push({type:"text",text:i})}catch(i){throw new Mt(i,"url","content fetching")}else switch(t.fallbackBehavior){case"error":throw new Rt("URLs",e.getName(),!1);case"skip":continue;case"degrade":r.push({type:"text",text:`[Link: ${s.url}${s.title?` - ${s.title}`:""}]`})}break;default:typeof s=="object"&&s.text?r.push({type:"text",text:s.text}):r.push({type:"text",text:String(s)})}}catch(i){throw i instanceof Rt||i instanceof Mt?i:new Mt(i,s.type||"unknown","content processing")}return r}function Cl(o){let e=!1,t=!1,n=!1,r=!1;for(let s of o)if(s.role==="user"&&Array.isArray(s.content))for(let i of s.content)switch(i.type){case"image":e=!0;break;case"audio":t=!0;break;case"file":n=!0;break;case"url":r=!0;break}return{hasImages:e,hasAudio:t,hasFiles:n,hasUrls:r}}var Qr=(n=>(n.RekaCore="reka-core",n.RekaFlash="reka-flash",n.RekaEdge="reka-edge",n))(Qr||{});var As=[{name:"reka-core",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15},{name:"reka-flash",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:2},{name:"reka-edge",currency:"usd",promptTokenCostPer1M:.4,completionTokenCostPer1M:1}];var Yr=()=>structuredClone({model:"reka-core",...Le()}),Il=()=>structuredClone({...Yr(),model:"reka-core"}),Rl=()=>structuredClone({model:"reka-core",...Ze()}),wl=()=>({...Yr(),model:"reka-flash"}),fa=class{constructor(e){this.config=e}tokensUsed;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,topP:e.topP,n:e.n,stream:e.stream}}createChatReq=e=>{let t=e.model;if(!e.chatPrompt||e.chatPrompt.length===0)throw new Error("Chat prompt is empty");let n={name:"/chat/completions"},r=Wg(e),s=e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,i=e.modelConfig?.stream??this.config.stream,a={model:t,messages:r,max_tokens:e.modelConfig?.maxTokens??this.config.maxTokens,...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},top_k:e.modelConfig?.n??this.config.n,...e.modelConfig?.topP!==void 0?{top_p:e.modelConfig.topP}:{},stop:e.modelConfig?.stopSequences??this.config.stop,presence_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty,...s?{frequency_penalty:s}:{},...i?{stream:!0}:{}};return[n,a]};createChatResp=e=>{let{id:t,usage:n,responses:r}=e;return this.tokensUsed=n?{promptTokens:n.input_tokens,completionTokens:n.output_tokens,totalTokens:n.input_tokens+n.output_tokens}:void 0,{results:r.map((i,a)=>{let c=Tl(i.finish_reason),u;return typeof i.message.content=="string"?u=i.message.content:u=i.message.content.text,{index:a,id:`${t}`,content:u,finishReason:c}}),remoteId:t}};createChatStreamResp=e=>{let{id:t,usage:n,responses:r}=e;return this.tokensUsed=n?{promptTokens:n.input_tokens,completionTokens:n.output_tokens,totalTokens:n.input_tokens+n.output_tokens}:void 0,{results:r.map((i,a)=>{let c=Tl(i.finish_reason),u;return typeof i.chunk.content=="string"?u=i.chunk.content:u=i.chunk.content.text,{index:a,id:`${t}`,content:u,finishReason:c}})}}},Tl=o=>{switch(o){case"stop":return"stop";case"context":return"length";case"length":return"length"}};function Wg(o){return o.chatPrompt.map(e=>{switch(e.role){case"system":return{role:"user",content:e.content};case"user":return Array.isArray(e.content)?{role:"user",content:e.content.map(t=>{switch(t.type){case"text":return{type:"text",text:t.text};case"image":throw new Error("Image type not supported");default:throw new Error("Invalid content type")}})}:{role:"user",content:e.content};case"assistant":if(Array.isArray(e.content))return{role:"assistant",content:e.content.map(t=>{switch(t.type){case"text":return{type:"text",text:t.text};case"image":throw new Error("Image type not supported");default:throw new Error("Invalid content type")}})};if(!e.content)throw new Error("Assistant content is empty");return{role:"user",content:e.content};default:throw new Error("Invalid role")}})}var Jn=class extends Xe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:s=As,models:i}){if(!e||e==="")throw new Error("Reka API key not set");let a={...Yr(),...t},c=new fa(a);super(c,{name:"Reka",apiURL:r||"https://api.reka.ai/v1/chat",headers:async()=>({"X-Api-Key":e}),modelInfo:s,defaults:{model:a.model},options:n,supportFor:{functions:!0,streaming:!0,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0},models:i})}};var ys=class{providers;processingServices;config;constructor(e){this.providers=[e.providers.primary,...e.providers.alternatives],this.processingServices=e.processing,this.config=e.routing}async chat(e,t={}){let n=await this.selectProviderWithDegradation(e,t.routingOptions||{}),r=await this.preprocessRequest(e,n.provider,t.processingOptions);try{return{response:await n.provider.chat(r,t),routing:n}}catch(s){if(s instanceof Rt&&t.fallbackProviders?.length)return await this.tryFallbackProviders(e,t.fallbackProviders,t);throw s}}async preprocessRequest(e,t,n){let r={...n,fallbackBehavior:n?.fallbackBehavior||"degrade",imageToText:n?.imageToText||this.processingServices.imageToText,audioToText:n?.audioToText||this.processingServices.audioToText,fileToText:n?.fileToText||this.processingServices.fileToText,urlToText:n?.urlToText||this.processingServices.urlToText},s=[];for(let i of e.chatPrompt)if(i.role==="user"&&Array.isArray(i.content)){let a=await xs(i.content,t,r);a.every(u=>u.type==="text")&&a.length===1?s.push({...i,content:a[0].text}):s.push({...i,content:a.map(u=>({type:"text",text:u.text}))})}else s.push(i);return{...e,chatPrompt:s}}async selectProviderWithDegradation(e,t){let n=mn(e),r=[],s=[],i=[];try{let a=ns(e,this.providers,{requireExactMatch:t.requireExactMatch??this.config.capability.requireExactMatch,allowDegradation:t.allowDegradation??this.config.capability.allowDegradation}),c=a.getFeatures();return n.hasImages&&!c.media.images.supported&&(s.push("Images will be converted to text descriptions"),r.push("Image-to-text conversion")),n.hasAudio&&!c.media.audio.supported&&(s.push("Audio will be transcribed to text"),r.push("Audio-to-text transcription")),n.hasFiles&&!c.media.files.supported&&(s.push("File content will be extracted to text"),r.push("File-to-text extraction")),n.hasUrls&&!c.media.urls.supported&&(s.push("URL content will be pre-fetched"),r.push("URL content fetching")),n.requiresStreaming&&!c.streaming&&i.push("Streaming not supported - will use non-streaming mode"),n.requiresCaching&&!c.caching.supported&&i.push("Content caching not supported"),{provider:a,processingApplied:r,degradations:s,warnings:i}}catch(a){throw new Error(`Provider selection failed: ${a instanceof Error?a.message:"Unknown error"}`)}}async tryFallbackProviders(e,t,n){for(let r of t)try{let s={provider:r,processingApplied:["Fallback provider selection"],degradations:["Using fallback provider due to primary provider failure"],warnings:[]},i=await this.preprocessRequest(e,r,{fallbackBehavior:"degrade"});return{response:await r.chat(i,n),routing:s}}catch{}throw new Error("All fallback providers failed")}async getRoutingRecommendation(e){return await this.selectProviderWithDegradation(e,{})}async validateRequest(e){let t=mn(e),n=[],r=[];try{let s=await this.selectProviderWithDegradation(e,{});return s.degradations.length>0&&(n.push(...s.degradations),r.push("Consider using a provider that natively supports all media types")),s.warnings.length>0&&n.push(...s.warnings),t.hasImages&&this.processingServices.imageToText===void 0&&(this.providers.some(a=>a.getFeatures().media.images.supported)||(n.push("No image processing service available and no providers support images"),r.push("Add imageToText processing service or use image-capable provider"))),t.hasAudio&&this.processingServices.audioToText===void 0&&(this.providers.some(a=>a.getFeatures().media.audio.supported)||(n.push("No audio processing service available and no providers support audio"),r.push("Add audioToText processing service or use audio-capable provider"))),{canHandle:n.length===0||s.degradations.length>0,issues:n,recommendations:r}}catch(s){return{canHandle:!1,issues:[`Cannot route request: ${s instanceof Error?s.message:"Unknown error"}`],recommendations:["Add more providers or processing services to handle this request"]}}}getRoutingStats(){let e={};for(let t of this.providers){let n=t.getFeatures(),r=t.getName();n.functions&&(e.Functions=e.Functions||[],e.Functions.push(r)),n.streaming&&(e.Streaming=e.Streaming||[],e.Streaming.push(r)),n.media.images.supported&&(e.Images=e.Images||[],e.Images.push(r)),n.media.audio.supported&&(e.Audio=e.Audio||[],e.Audio.push(r)),n.media.files.supported&&(e.Files=e.Files||[],e.Files.push(r)),n.media.urls.supported&&(e.URLs=e.URLs||[],e.URLs.push(r)),n.caching.supported&&(e.Caching=e.Caching||[],e.Caching.push(r))}return{totalProviders:this.providers.length,capabilityMatrix:e,recommendedProvider:this.providers[0]?.getName()||"None"}}};var Xr=(A=>(A.KimiK25="moonshotai/Kimi-K2.5",A.KimiK2Instruct0905="moonshotai/Kimi-K2-Instruct-0905",A.KimiK2Thinking="moonshotai/Kimi-K2-Thinking",A.DeepSeekV31="deepseek-ai/DeepSeek-V3.1",A.DeepSeekR1="deepseek-ai/DeepSeek-R1",A.GPTOSS120B="openai/gpt-oss-120b",A.GPTOSS20B="openai/gpt-oss-20b",A.Qwen35_397B="Qwen/Qwen3.5-397B-A17B",A.Qwen3CoderNext="Qwen/Qwen3-Coder-Next-FP8",A.Qwen3Coder480B="Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",A.Qwen3_235BInstruct2507="Qwen/Qwen3-235B-A22B-Instruct-2507-tput",A.Qwen3_235BThinking2507="Qwen/Qwen3-235B-A22B-Thinking-2507",A.Qwen3Next80BInstruct="Qwen/Qwen3-Next-80B-A3B-Instruct",A.Qwen3Next80BThinking="Qwen/Qwen3-Next-80B-A3B-Thinking",A.GLM5="zai-org/GLM-5",A.GLM47="zai-org/GLM-4.7",A.Llama4Maverick="meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",A.Llama33_70B="meta-llama/Llama-3.3-70B-Instruct-Turbo",A))(Xr||{});var bs=[{name:"moonshotai/Kimi-K2.5",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:2.8},{name:"moonshotai/Kimi-K2-Instruct-0905",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:3},{name:"moonshotai/Kimi-K2-Thinking",currency:"usd",promptTokenCostPer1M:1.2,completionTokenCostPer1M:4},{name:"deepseek-ai/DeepSeek-V3.1",currency:"usd",promptTokenCostPer1M:.6,completionTokenCostPer1M:1.7},{name:"deepseek-ai/DeepSeek-R1",currency:"usd",promptTokenCostPer1M:1.4,completionTokenCostPer1M:2.2},{name:"openai/gpt-oss-120b",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:.6},{name:"openai/gpt-oss-20b",currency:"usd",promptTokenCostPer1M:.05,completionTokenCostPer1M:.2},{name:"Qwen/Qwen3.5-397B-A17B",currency:"usd",promptTokenCostPer1M:.6,completionTokenCostPer1M:3.6},{name:"Qwen/Qwen3-Coder-Next-FP8",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.2},{name:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:2},{name:"Qwen/Qwen3-235B-A22B-Instruct-2507-tput",currency:"usd",promptTokenCostPer1M:.2,completionTokenCostPer1M:.6},{name:"Qwen/Qwen3-235B-A22B-Thinking-2507",currency:"usd",promptTokenCostPer1M:.65,completionTokenCostPer1M:3},{name:"Qwen/Qwen3-Next-80B-A3B-Instruct",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:1.5},{name:"Qwen/Qwen3-Next-80B-A3B-Thinking",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:1.5},{name:"zai-org/GLM-5",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:3.2},{name:"zai-org/GLM-4.7",currency:"usd",promptTokenCostPer1M:.45,completionTokenCostPer1M:2},{name:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",currency:"usd",promptTokenCostPer1M:.27,completionTokenCostPer1M:.85},{name:"meta-llama/Llama-3.3-70B-Instruct-Turbo",currency:"usd",promptTokenCostPer1M:.88,completionTokenCostPer1M:.88}];var ha=()=>structuredClone({model:"meta-llama/Llama-3.3-70B-Instruct-Turbo",...Le()}),Qn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("Together API key not set");let i={...ha(),...t};s=[...bs,...s??[]];let a={functions:!0,streaming:!0,hasThinkingBudget:!1,hasShowThoughts:!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0};super({apiKey:e,config:i,options:n,apiURL:"https://api.together.xyz/v1",modelInfo:s,models:r,supportFor:a}),super.setName("Together")}};var Zr=(d=>(d.Llama31_8B_Instruct="Llama-3.1-8B-Instruct-q4f32_1-MLC",d.Llama31_70B_Instruct="Llama-3.1-70B-Instruct-q4f16_1-MLC",d.Llama32_1B_Instruct="Llama-3.2-1B-Instruct-q4f32_1-MLC",d.Llama32_3B_Instruct="Llama-3.2-3B-Instruct-q4f32_1-MLC",d.Mistral7B_Instruct="Mistral-7B-Instruct-v0.3-q4f32_1-MLC",d.Phi35_Mini_Instruct="Phi-3.5-mini-instruct-q4f32_1-MLC",d.Gemma2_2B_Instruct="gemma-2-2b-it-q4f32_1-MLC",d.Gemma2_9B_Instruct="gemma-2-9b-it-q4f32_1-MLC",d.Qwen2_5_0_5B_Instruct="Qwen2.5-0.5B-Instruct-q4f32_1-MLC",d.Qwen2_5_1_5B_Instruct="Qwen2.5-1.5B-Instruct-q4f32_1-MLC",d.Qwen2_5_3B_Instruct="Qwen2.5-3B-Instruct-q4f32_1-MLC",d.Qwen2_5_7B_Instruct="Qwen2.5-7B-Instruct-q4f32_1-MLC",d))(Zr||{});var Cs=[{name:"Llama-3.1-8B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:128e3,maxTokens:4096},{name:"Llama-3.1-70B-Instruct-q4f16_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:128e3,maxTokens:4096,isExpensive:!0},{name:"Llama-3.2-1B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:128e3,maxTokens:2048},{name:"Llama-3.2-3B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:128e3,maxTokens:2048},{name:"Mistral-7B-Instruct-v0.3-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:32768,maxTokens:4096},{name:"Phi-3.5-mini-instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:128e3,maxTokens:4096},{name:"gemma-2-2b-it-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:8192,maxTokens:2048},{name:"gemma-2-9b-it-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:8192,maxTokens:2048},{name:"Qwen2.5-0.5B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:32768,maxTokens:2048},{name:"Qwen2.5-1.5B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:32768,maxTokens:2048},{name:"Qwen2.5-3B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:32768,maxTokens:2048},{name:"Qwen2.5-7B-Instruct-q4f32_1-MLC",currency:"usd",promptTokenCostPer1M:0,completionTokenCostPer1M:0,contextWindow:32768,maxTokens:4096}];var Aa=()=>structuredClone({model:"Llama-3.2-3B-Instruct-q4f32_1-MLC",...Le()}),vl=()=>structuredClone({model:"Llama-3.2-3B-Instruct-q4f32_1-MLC",...Ze()}),xa=class{constructor(e,t){this.config=e;this.engine=t}tokensUsed;engine;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,endSequences:e.endSequences,stream:e.stream,n:e.n}}createChatReq(e){let t=e.model,n=e.chatPrompt.map(a=>{if(a.role==="function")return{role:"function",name:a.functionId,content:typeof a.result=="string"?a.result:JSON.stringify(a.result)};let c="";typeof a.content=="string"?c=a.content:Array.isArray(a.content)&&(c=a.content.filter(l=>l.type==="text").map(l=>l.text).join(`
|
|
191
|
+
`));let u={role:a.role,content:c};return a.role==="assistant"&&a.functionCalls?.length?{...u,tool_calls:a.functionCalls.map(l=>({id:l.id,type:"function",function:{name:l.function.name,arguments:typeof l.function.params=="string"?l.function.params:JSON.stringify(l.function.params||{})}}))}:u}),r=e.functions?.map(a=>({type:"function",function:{name:a.name,description:a.description,parameters:a.parameters||{type:"object",properties:{}}}})),s={name:"/chat/completions",localCall:async(a,c)=>{try{let u=await this.engine.chat.completions.create({...a,stream:c||!1});return c?new ReadableStream({async start(l){try{for await(let p of u)l.enqueue(p);l.close()}catch(p){l.error(p)}}}):u}catch(u){throw new Error(`WebLLM API error: ${u}`)}}},i={model:t,messages:n,...r?.length?{tools:r}:{},max_tokens:e.modelConfig?.maxTokens??this.config.maxTokens,...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},...e.modelConfig?.topP!==void 0?{top_p:e.modelConfig.topP}:{},presence_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty,frequency_penalty:e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,stop:e.modelConfig?.stopSequences??this.config.stopSequences,stream:e.modelConfig?.stream??this.config.stream,n:e.modelConfig?.n??this.config.n};return[s,i]}createEmbedReq=e=>{throw new Error("WebLLM does not support embeddings")};createChatResp=e=>(this.tokensUsed={promptTokens:e.usage?.prompt_tokens??0,completionTokens:e.usage?.completion_tokens??0,totalTokens:e.usage?.total_tokens??0},{results:e.choices.map((n,r)=>{let s="stop";switch(n.finish_reason){case"stop":s="stop";break;case"length":s="length";break;case"tool_calls":s="function_call";break;case"content_filter":s="content_filter";break;default:s="stop";break}let i=n.message.tool_calls?.map(a=>({id:a.id,type:"function",function:{name:a.function.name,params:a.function.arguments}}));return{index:r,id:e.id,content:n.message.content||"",functionCalls:i,finishReason:s}}),remoteId:e.id});createChatStreamResp=(e,t)=>{let n=t,r=e.choices[0];if(!r)throw new Error("No choice in WebLLM stream response");if(r.delta.content&&(n.content=(n.content||"")+r.delta.content),r.delta.tool_calls){n.toolCalls||(n.toolCalls=[]);for(let c of r.delta.tool_calls){let u=n.toolCalls[c.index];u?c.function?.arguments&&(u.function.arguments=(u.function?.arguments||"")+c.function.arguments):n.toolCalls[c.index]={id:c.id,type:c.type,function:{name:c.function?.name,arguments:c.function?.arguments||""}}}}e.usage&&(this.tokensUsed={promptTokens:e.usage.prompt_tokens,completionTokens:e.usage.completion_tokens,totalTokens:e.usage.total_tokens});let s;if(r.finish_reason)switch(r.finish_reason){case"stop":s="stop";break;case"length":s="length";break;case"tool_calls":s="function_call";break;case"content_filter":s="content_filter";break;default:s="stop";break}let i=n.toolCalls?.map(c=>({id:c.id||"",type:"function",function:{name:c.function?.name||"",params:c.function?.arguments||""}}));return{results:[{index:0,id:e.id,content:n.content||"",functionCalls:i,finishReason:s}],remoteId:e.id}};createEmbedResp(e){throw new Error("WebLLM does not support embeddings")}},Yn=class extends Xe{constructor({engine:e,config:t,options:n,models:r}){if(!e)throw new Error("WebLLM engine instance is required");let s={...Aa(),...t},i=new xa(s,e);super(i,{name:"WebLLM",apiURL:void 0,headers:async()=>({}),modelInfo:Cs,defaults:{model:s.model},supportFor:a=>({functions:!0,streaming:!0,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}),options:n,models:r})}};var eo=(r=>(r.Grok3="grok-3",r.Grok3Mini="grok-3-mini",r.Grok3Fast="grok-3-fast",r.Grok3MiniFast="grok-3-mini-fast",r))(eo||{}),ya=(e=>(e.GrokEmbedSmall="grok-embed-small",e))(ya||{});var Ts=[{name:"grok-3",currency:"USD",promptTokenCostPer1M:3,completionTokenCostPer1M:15},{name:"grok-3-mini",currency:"USD",promptTokenCostPer1M:.3,completionTokenCostPer1M:.5,supported:{thinkingBudget:!0}},{name:"grok-3-fast",currency:"USD",promptTokenCostPer1M:5,completionTokenCostPer1M:25},{name:"grok-3-mini-fast",currency:"USD",promptTokenCostPer1M:.6,completionTokenCostPer1M:4,supported:{thinkingBudget:!0}}];var Is=()=>structuredClone({model:"grok-3-mini",...Le()}),Sl=()=>structuredClone({...Is(),model:"grok-3"}),Xn=class extends Qe{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:s}){if(!e||e==="")throw new Error("Grok API key not set");let i={...Is(),...t};s=[...Ts,...s??[]];let a=u=>{let l=it({model:u,modelInfo:s,models:r});return{functions:!0,streaming:!0,hasThinkingBudget:l?.supported?.thinkingBudget??!1,hasShowThoughts:l?.supported?.showThoughts??!1,media:{images:{supported:!1,formats:[]},audio:{supported:!1,formats:[]},files:{supported:!1,formats:[],uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!1,types:[]},thinking:!1,multiTurn:!0}},c=(u,l)=>{if(n?.searchParameters){let p=n.searchParameters;return{...u,search_parameters:{mode:p.mode,return_citations:p.returnCitations,from_date:p.fromDate,to_date:p.toDate,max_search_results:p.maxSearchResults,sources:p.sources?.map(d=>({type:d.type,country:d.country,excluded_websites:d.excludedWebsites,allowed_websites:d.allowedWebsites,safe_search:d.safeSearch,x_handles:d.xHandles,links:d.links}))}}}return u};super({apiKey:e,config:i,options:n,apiURL:"https://api.x.ai/v1",modelInfo:s,models:r,supportFor:a,chatReqUpdater:c}),super.setName("Grok")}};function kl(o){return to.create(o)}var to=class o{ai;static create(e){return new o(e)}constructor(e){switch(e.name){case"openai":this.ai=new Nn(e);break;case"openai-responses":this.ai=new Vn(e);break;case"azure-openai":this.ai=new Ln(e);break;case"grok":this.ai=new Xn(e);break;case"huggingface":this.ai=new zn(e);break;case"groq":this.ai=new jn(e);break;case"together":this.ai=new Qn(e);break;case"openrouter":this.ai=new Kn(e);break;case"cohere":this.ai=new $n(e);break;case"google-gemini":this.ai=new Gn(e);break;case"anthropic":this.ai=new Mn(e);break;case"mistral":this.ai=new qn(e);break;case"deepseek":this.ai=new Dn(e);break;case"ollama":this.ai=new Hn(e);break;case"reka":this.ai=new Jn(e);break;case"webllm":this.ai=new Yn(e);break;default:throw new Error("Unknown AI")}}getName(){return this.ai.getName()}getId(){return this.ai.getId()}getFeatures(e){return this.ai.getFeatures(e)}getModelList(){return this.ai.getModelList()}getLastUsedChatModel(){return this.ai.getLastUsedChatModel()}getLastUsedEmbedModel(){return this.ai.getLastUsedEmbedModel()}getLastUsedModelConfig(){return this.ai.getLastUsedModelConfig()}getMetrics(){return this.ai.getMetrics()}getEstimatedCost(e){return this.ai.getEstimatedCost(e)}async chat(e,t){return await this.ai.chat(e,t)}async embed(e,t){return await this.ai.embed(e,t)}setOptions(e){this.ai.setOptions(e)}getOptions(){return this.ai.getOptions()}getLogger(){return this.ai.getLogger()}};var wt=class{name;fetch;tracer;_upsert;_batchUpsert;_query;constructor({name:e,fetch:t,tracer:n}){this.name=e,this.fetch=t,this.tracer=n}async upsert(e,t){if(!this._upsert)throw new Error("upsert() not implemented");return this.tracer?await this.tracer.startActiveSpan("DB Upsert Request",{kind:xt.SERVER,attributes:{[ve.DB_SYSTEM]:this.name,[ve.DB_OPERATION_NAME]:"upsert",[ve.DB_TABLE]:e.table,[ve.DB_NAMESPACE]:e.namespace,[ve.DB_OPERATION_NAME]:t?"update":"insert"}},async n=>{try{return await this._upsert(e,t,{span:n})}finally{n.end()}}):await this._upsert(e,t)}async batchUpsert(e,t){if(!this._batchUpsert)throw new Error("batchUpsert() not implemented");if(e.length===0)throw new Error("Batch request is empty");if(!e[0])throw new Error("Batch request is invalid first element is undefined");return this.tracer?await this.tracer.startActiveSpan("DB Batch Upsert Request",{kind:xt.SERVER,attributes:{[ve.DB_SYSTEM]:this.name,[ve.DB_OPERATION_NAME]:"upsert",[ve.DB_TABLE]:e[0].table,[ve.DB_NAMESPACE]:e[0].namespace,[ve.DB_OPERATION_NAME]:t?"update":"insert"}},async n=>{try{return await this._batchUpsert(e,t,{span:n})}finally{n.end()}}):await this._batchUpsert(e,t)}async query(e){if(!this._query)throw new Error("query() not implemented");return this.tracer?await this.tracer.startActiveSpan("DB Query Request",{kind:xt.SERVER,attributes:{[ve.DB_SYSTEM]:this.name,[ve.DB_OPERATION_NAME]:"upsert",[ve.DB_TABLE]:e.table,[ve.DB_NAMESPACE]:e.namespace,[ve.DB_OPERATION_NAME]:"query"}},async t=>{try{return await this._query(e,{span:t})}finally{t.end()}}):await this._query(e)}};var ba="https://api.cloudflare.com/client/v4/accounts/",Zn=class extends wt{apiKey;accountId;constructor({apiKey:e,accountId:t,fetch:n,tracer:r}){if(!e||!t)throw new Error("Cloudflare credentials not set");super({name:"Cloudflare",fetch:n,tracer:r}),this.apiKey=e,this.accountId=t}_upsert=async(e,t,n)=>{let r=await ut({url:new URL(`${this.accountId}/vectorize/indexes/${e.table}/upsert`,ba),headers:{"X-Auth-Key":this.apiKey},fetch:this.fetch,span:n?.span},{id:e.id,values:e.values,namespace:e.namespace,metadata:e.metadata});if(r.errors)throw new Error(`Cloudflare upsert failed: ${r.errors.map(({message:s})=>s).join(", ")}`);return{ids:r.result.ids}};batchUpsert=async(e,t,n)=>{if(t)throw new Error("Weaviate does not support batch update");if(e.length<1)throw new Error("Batch request is empty");if(!e[0]||!e[0].table)throw new Error("Table name is empty");let r=e[0].table,s=await ut({url:new URL(`${this.accountId}/vectorize/indexes/${r}/upsert`,ba),headers:{"X-Auth-Key":this.apiKey},fetch:this.fetch,span:n?.span},e.map(i=>({id:i.id,values:i.values,namespace:i.namespace,metadata:i.metadata})));if(s.errors)throw new Error(`Cloudflare batch upsert failed: ${s.errors.map(({message:i})=>i).join(", ")}`);return{ids:s.result.ids}};query=async(e,t)=>{let n=await ut({url:new URL(`${this.accountId}/vectorize/indexes/${e.table}/query`,ba),headers:{"X-Auth-Key":this.apiKey},fetch:this.fetch,span:t?.span},{vector:e.values,topK:e.limit||10,returnValues:!0});if(n.errors)throw new Error(`Cloudflare query failed: ${n.errors.map(({message:s})=>s).join(", ")}`);return{matches:n.result.matches.map(({id:s,score:i,values:a,metadata:c})=>({id:s,score:i,values:a,metadata:c}))}}};var rn=class extends wt{state;constructor({tracer:e}={}){super({name:"Memory",tracer:e}),this.state={}}_upsert=async(e,t,n)=>{if(!this.state[e.table])this.state[e.table]={[e.id]:e};else{let r=this.state[e.table];if(!r)throw new Error(`Table not found: ${e.table}`);r[e.id]=e}return{ids:[e.id]}};_batchUpsert=async(e,t,n)=>{let r=[];for(let s of e){let i=await this.upsert(s,t);r.push(...i.ids)}return{ids:r}};_query=async(e,t)=>{let n=this.state[e.table];if(!n)return{matches:[]};let r=[];return Object.entries(n).forEach(([s,i])=>{if(e.values&&i.values){let a=Vg(e.values,i.values);r.push({id:s,score:a,metadata:i.metadata})}}),r.sort((s,i)=>s.score-i.score),e.limit&&(r.length=e.limit),{matches:r}};getDB=()=>structuredClone(this.state);setDB=e=>{this.state=structuredClone(e)};clearDB=()=>{this.state={}}},Vg=(o,e)=>{if(o.length!==e.length)throw new Error("Vectors must be of the same length.");let t=0,n=0,r=0,s=!0,i=!0,a=new Float64Array(o),c=new Float64Array(e);for(let d=0;d<a.length;d++)t+=a[d]*c[d],n+=a[d]*a[d],r+=c[d]*c[d],a[d]!==0&&(s=!1),c[d]!==0&&(i=!1);if(s||i)return 1;let u=Math.sqrt(n),l=Math.sqrt(r);return 1-t/(u*l)};var Kg=o=>({namespace:o.namespace,topK:o.limit||10,filter:{},includeValues:!0,includeMetadata:!0,vector:o.values??[],id:o.id}),er=class extends wt{apiKey;apiURL;constructor({apiKey:e,host:t,fetch:n,tracer:r}){if(!e||e==="")throw new Error("Pinecone API key not set");super({name:"Pinecone",fetch:n,tracer:r}),this.apiKey=e,this.apiURL=t}_upsert=async(e,t,n)=>(await this._batchUpsert([e],t,n),{ids:[e.id]});_batchUpsert=async(e,t,n)=>{if(e.length===0)throw new Error("Batch request is empty");return await ut({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/vectors/upsert",fetch:this.fetch,span:n?.span},e.map(({id:r,values:s=[],metadata:i})=>({id:r,values:s,metadata:i}))),{ids:e.map(({id:r})=>r)}};query=async(e,t)=>{if(e.text)throw new Error("Pinecone does not support text");return{matches:(await ut({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/query",fetch:this.fetch,span:t?.span},Kg(e))).matches.map(({id:s,score:i,values:a,metadata:c})=>({id:s,score:i,metadata:c,values:a}))}}};var tr=class extends wt{apiKey;apiURL;constructor({apiKey:e,host:t,fetch:n,tracer:r}){if(!e||e==="")throw new Error("Weaviate API key not set");super({name:"Weaviate",fetch:n,tracer:r}),this.apiKey=e,this.apiURL=t}_upsert=async(e,t,n)=>{let r=await ut({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:`/v1/objects/${e.table}/${e.id}`,put:!!t,fetch:this.fetch,span:n?.span},{id:e.id,class:e.table,tenant:e.namespace,vector:e.values,properties:e.metadata??{}});if(r?.result?.errors)throw new Error(`Weaviate upsert failed: ${r.result.errors.error.map(({message:s})=>s).join(", ")}`);return{ids:[r.id]}};_batchUpsert=async(e,t,n)=>{if(t)throw new Error("Weaviate does not support batch update");if(e.length===0)throw new Error("Batch request is empty");let r=e.map(i=>({id:i.id,class:i.table,tenant:i.namespace,vector:i.values,properties:i.metadata??{}})),s=await ut({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/v1/batch/objects",fetch:this.fetch,span:n?.span},{objects:r});if(s?.some(({result:i})=>i?.errors))throw new Error(`Weaviate batch upsert failed: ${s.map(({result:i})=>i?.errors?.error.map(({message:a})=>a).join(", ")).join(", ")}`);return{ids:s.map(({id:i})=>i)}};_query=async(e,t)=>{let n="";if(e.columns&&e.columns.length===0)throw new Error("Weaviate requires at least one column");if(e.values)n=`nearVector: {
|
|
192
192
|
vector: [${e.values.join(",")}],
|
|
193
193
|
}`;else if(e.text)n=`nearText: {
|
|
194
194
|
concepts: ['${e.text}'],
|
|
195
|
-
}`;else throw new Error("Weaviate requires either text or values");let r=await
|
|
195
|
+
}`;else throw new Error("Weaviate requires either text or values");let r=await ut({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/v1/graphql",fetch:this.fetch,span:t?.span},{query:`{
|
|
196
196
|
Get {
|
|
197
197
|
${e.table} (
|
|
198
198
|
limit: ${e.limit||10},
|
|
@@ -212,7 +212,7 @@ ${u}`:`Assistant: ${c.content}`}default:throw new Error("Unknown role")}}).join(
|
|
|
212
212
|
|
|
213
213
|
`,s+=u.length)}else r=`${i}
|
|
214
214
|
|
|
215
|
-
`,s=c}),(s>t||n.length===0)&&n.push(r.trim()),n},Qg=(o,e=.1)=>{let t=[...o].sort((r,s)=>r.score-s.score),n=Math.ceil(t.length*e);return t.slice(0,n)};var no=class{data=[];seenTags=new Set;addRequest(e,t){this.data.push(...e.map(n=>{let r=structuredClone(n);return{role:n.role,chat:[{index:t,value:r}]}}))}addFunctionResults(e){let t=e.map(({index:r,...s})=>({index:r,value:structuredClone(s)})),n=this.getLast();n?.role==="function"?n.chat.push(...t):this.data.push({role:"function",chat:t})}addResponse(e){let t=e.map(({index:n,...r})=>({index:n,value:structuredClone(r)}));this.data.push({role:"assistant",chat:t})}updateResult({content:e,name:t,functionCalls:n,thought:r,thoughtBlocks:s,index:i}){let a=this.data.at(-1);if(!a||a.role!=="assistant"||a.role==="assistant"&&!a.updatable){this.data.push({role:"assistant",updatable:!0,chat:[{index:i,value:structuredClone({content:e,name:t,functionCalls:n,thought:r,thoughtBlocks:s})}]});return}let c=a.chat.find(u=>u.index===i);if(!c){a.chat.push({index:i,value:structuredClone({content:e,name:t,functionCalls:n,thought:r,thoughtBlocks:s})});return}if(typeof e=="string"&&e.trim()!==""&&(c.value.content=e),typeof t=="string"&&t.trim()!==""&&(c.value.name=t),Array.isArray(n)&&n.length>0&&(c.value.functionCalls=n),typeof r=="string"&&r.trim()!==""){let u=c.value.thought;c.value.thought=typeof u=="string"?u+r:r}if(Array.isArray(s)&&s.length>0){let u=c.value.thoughtBlocks??[];for(let l of s){let p=u.length>0?u[u.length-1]:void 0;!l.signature&&l.data?p&&!p.signature?(p.data=(p.data??"")+l.data,l.encrypted&&(p.encrypted=!0)):u.push(structuredClone(l)):l.signature?p&&!p.signature?(p.data=(p.data??"")+l.data,p.signature=l.signature,l.encrypted&&(p.encrypted=!0)):u.push(structuredClone(l)):u.length===0&&u.push(structuredClone(l))}c.value.thoughtBlocks=u,u.length>0&&(c.value.thought=u.map(l=>l.data).join(""))}}addTag(e){let t=this.data.at(-1);t&&(t.tags||(t.tags=[]),t.tags.includes(e)||t.tags.push(e),this.seenTags.add(e))}rewindToTag(e){let t=this.data.findIndex(n=>n.tags?.includes(e));if(t===-1){if(!this.seenTags.has(e))throw new Error(`Tag "${e}" not found`);return[]}return this.data.splice(t)}removeByTag(e){let t=this.data.reduce((n,r,s)=>(r.tags?.includes(e)&&n.push(s),n),[]);return t.length===0?[]:t.reverse().map(n=>this.data.splice(n,1).at(0)).filter(n=>n!==void 0).reverse()}history(e){let t=[];for(let{role:n,chat:r}of this.data){let s;n==="function"?s=r.filter(i=>i.index===e).map(i=>i.value):s=r.find(i=>i.index===e)?.value,Array.isArray(s)&&s.length>0?t.push(...s.map(i=>({...i,role:n}))):typeof s=="object"&&s!==null&&t.push({...s,role:n})}return t}getLast(){return this.data.at(-1)}reset(){this.data=[],this.seenTags=new Set}},nr=class{memories=new Map;defaultMemory;constructor(){this.defaultMemory=new no}getMemory(e){return e?(this.memories.has(e)||this.memories.set(e,new no),this.memories.get(e)):this.defaultMemory}addRequest(e,t){for(let n of e)En(n);this.getMemory(t).addRequest(e,0)}addResponse(e,t){Jo(e),this.getMemory(t).addResponse(e)}addFunctionResults(e,t){this.getMemory(t).addFunctionResults(e)}updateResult(e,t){this.getMemory(t).updateResult(e)}addTag(e,t){this.getMemory(t).addTag(e)}rewindToTag(e,t){return this.getMemory(t).rewindToTag(e)}removeByTag(e,t){return this.getMemory(t).removeByTag(e)}history(e,t){return this.getMemory(t).history(e)}getLast(e){return this.getMemory(e).getLast()}reset(e){e?this.memories.set(e,new no):this.defaultMemory.reset()}};function _t(o,e){if(!o&&!e)return;if(!o)return e;if(!e||o===e||o.aborted)return o;if(e.aborted)return e;if(typeof AbortSignal.any=="function")return AbortSignal.any([o,e]);let t=new AbortController,n=()=>{t.abort(o.aborted?o.reason:e.reason),r()},r=()=>{o.removeEventListener("abort",n),e.removeEventListener("abort",n)};return o.addEventListener("abort",n,{once:!0}),e.addEventListener("abort",n,{once:!0}),t.signal}var Ut=class extends Error{constructor({message:e}){super(e),this.name="AxAssertionError"}getFixingInstructions=()=>{let e=[],t=this.message.trim();return e.push({name:"error",title:"Follow these instructions",description:t+(t.endsWith(".")?"":".")}),e};toString(){return`${this.name}: ${this.message}`}[Symbol.for("nodejs.util.inspect.custom")](e,t){return this.toString()}},rr=async(o,e)=>{for(let t of o){let{fn:n,message:r}=t,s=await n(e);if(s!==void 0){if(typeof s=="string")throw new Ut({message:s});if(!s)throw r?new Ut({message:r}):new Error("Assertion Failed: No message provided for assertion")}}},Ta=async(o,e,t,n=!1)=>{if(!e.currField||e.s===-1||!o||o.length===0)return;let r=o.filter(i=>i.fieldName===e.currField?.name);if(r.length===0)return;let s=t.substring(e.s);for(let i of r){let{message:a,fn:c}=i,u=await c(s,n);if(u!==void 0){if(typeof u=="string")throw new Ut({message:u});if(!u&&a)throw new Ut({message:a})}}};var Ia={enabled:!0,enabledCategories:["generation","streaming","functions","errors","performance"],maxLabelLength:100,samplingRate:1},ro,Ra=o=>{if(ro)return ro;let e=o??ke.meter;if(e)return ro=Yg(e),ro};var Ol=()=>{let o=[];return ke.meter||o.push("Global meter not initialized"),!ro&&ke.meter&&o.push("Metrics instruments not created despite available meter"),{healthy:o.length===0,issues:o}},Yg=o=>({generationLatencyHistogram:o.createHistogram("ax_gen_generation_duration_ms",{description:"End-to-end duration of AxGen generation requests",unit:"ms"}),generationRequestsCounter:o.createCounter("ax_gen_generation_requests_total",{description:"Total number of AxGen generation requests"}),generationErrorsCounter:o.createCounter("ax_gen_generation_errors_total",{description:"Total number of failed AxGen generations"}),multiStepGenerationsCounter:o.createCounter("ax_gen_multistep_generations_total",{description:"Total number of generations that required multiple steps"}),stepsPerGenerationHistogram:o.createHistogram("ax_gen_steps_per_generation",{description:"Number of steps taken per generation"}),maxStepsReachedCounter:o.createCounter("ax_gen_max_steps_reached_total",{description:"Total number of generations that hit max steps limit"}),validationErrorsCounter:o.createCounter("ax_gen_validation_errors_total",{description:"Total number of validation errors encountered"}),assertionErrorsCounter:o.createCounter("ax_gen_assertion_errors_total",{description:"Total number of assertion errors encountered"}),errorCorrectionAttemptsHistogram:o.createHistogram("ax_gen_error_correction_attempts",{description:"Number of error correction attempts per generation"}),errorCorrectionSuccessCounter:o.createCounter("ax_gen_error_correction_success_total",{description:"Total number of successful error corrections"}),errorCorrectionFailureCounter:o.createCounter("ax_gen_error_correction_failure_total",{description:"Total number of failed error corrections"}),maxRetriesReachedCounter:o.createCounter("ax_gen_max_retries_reached_total",{description:"Total number of generations that hit max retries limit"}),functionsEnabledGenerationsCounter:o.createCounter("ax_gen_functions_enabled_generations_total",{description:"Total number of generations with functions enabled"}),functionCallStepsCounter:o.createCounter("ax_gen_function_call_steps_total",{description:"Total number of steps that included function calls"}),functionsExecutedPerGenerationHistogram:o.createHistogram("ax_gen_functions_executed_per_generation",{description:"Number of unique functions executed per generation"}),functionErrorCorrectionCounter:o.createCounter("ax_gen_function_error_correction_total",{description:"Total number of function-related error corrections"}),fieldProcessorsExecutedCounter:o.createCounter("ax_gen_field_processors_executed_total",{description:"Total number of field processors executed"}),streamingFieldProcessorsExecutedCounter:o.createCounter("ax_gen_streaming_field_processors_executed_total",{description:"Total number of streaming field processors executed"}),streamingGenerationsCounter:o.createCounter("ax_gen_streaming_generations_total",{description:"Total number of streaming generations"}),streamingDeltasEmittedCounter:o.createCounter("ax_gen_streaming_deltas_emitted_total",{description:"Total number of streaming deltas emitted"}),streamingFinalizationLatencyHistogram:o.createHistogram("ax_gen_streaming_finalization_duration_ms",{description:"Duration of streaming response finalization",unit:"ms"}),samplesGeneratedHistogram:o.createHistogram("ax_gen_samples_generated",{description:"Number of samples generated per request"}),resultPickerUsageCounter:o.createCounter("ax_gen_result_picker_usage_total",{description:"Total number of times result picker was used"}),resultPickerLatencyHistogram:o.createHistogram("ax_gen_result_picker_duration_ms",{description:"Duration of result picker execution",unit:"ms"}),inputFieldsGauge:o.createGauge("ax_gen_input_fields",{description:"Number of input fields in signature"}),outputFieldsGauge:o.createGauge("ax_gen_output_fields",{description:"Number of output fields in signature"}),examplesUsedGauge:o.createGauge("ax_gen_examples_used",{description:"Number of examples used in generation"}),demosUsedGauge:o.createGauge("ax_gen_demos_used",{description:"Number of demos used in generation"}),promptRenderLatencyHistogram:o.createHistogram("ax_gen_prompt_render_duration_ms",{description:"Duration of prompt template rendering",unit:"ms"}),extractionLatencyHistogram:o.createHistogram("ax_gen_extraction_duration_ms",{description:"Duration of value extraction from responses",unit:"ms"}),assertionLatencyHistogram:o.createHistogram("ax_gen_assertion_duration_ms",{description:"Duration of assertion checking",unit:"ms"}),stateCreationLatencyHistogram:o.createHistogram("ax_gen_state_creation_duration_ms",{description:"Duration of state creation for multiple samples",unit:"ms"}),memoryUpdateLatencyHistogram:o.createHistogram("ax_gen_memory_update_duration_ms",{description:"Duration of memory updates during generation",unit:"ms"})}),vs=Ia,El=o=>{vs={...vs,...o}},Ml=()=>({...vs}),Nt=o=>{let e={};for(let[t,n]of Object.entries(o))if(n!=null){let r=String(n),s=vs.maxLabelLength;e[t]=r.length>s?r.substring(0,s):r}return e};var Pl=(o,e,t,n,r,s,i)=>{try{let a=Nt({success:t.toString(),...n?{signature:n}:{},...r?{ai_service:r}:{},...s?{model:s}:{},...i});o.generationLatencyHistogram&&o.generationLatencyHistogram.record(e,a),o.generationRequestsCounter&&o.generationRequestsCounter.add(1,a),!t&&o.generationErrorsCounter&&o.generationErrorsCounter.add(1,a)}catch(a){console.warn("Failed to record generation metric:",a)}},Ss=(o,e,t,n,r)=>{try{let s=Nt({...n?{signature:n}:{},...r});e>1&&o.multiStepGenerationsCounter&&o.multiStepGenerationsCounter.add(1,s),o.stepsPerGenerationHistogram&&o.stepsPerGenerationHistogram.record(e,s),e>=t&&o.maxStepsReachedCounter&&o.maxStepsReachedCounter.add(1,s)}catch(s){console.warn("Failed to record multi-step metric:",s)}},wa=(o,e,t,n)=>{try{let r=Nt({error_type:e,...t?{signature:t}:{},...n});e==="validation"&&o.validationErrorsCounter&&o.validationErrorsCounter.add(1,r),e==="assertion"&&o.assertionErrorsCounter&&o.assertionErrorsCounter.add(1,r)}catch(r){console.warn("Failed to record validation error metric:",r)}},Fl=(o,e,t)=>{try{let n=Nt({error_type:"refusal",...e?{signature:e}:{},...t});o.validationErrorsCounter&&o.validationErrorsCounter.add(1,n)}catch(n){console.warn("Failed to record refusal error metric:",n)}},va=(o,e,t,n,r,s)=>{try{let i=Nt({success:t.toString(),...r?{signature:r}:{},...s});o.errorCorrectionAttemptsHistogram&&o.errorCorrectionAttemptsHistogram.record(e,i),t&&o.errorCorrectionSuccessCounter&&o.errorCorrectionSuccessCounter.add(1,i),t||(o.errorCorrectionFailureCounter&&o.errorCorrectionFailureCounter.add(1,i),e>=n&&o.maxRetriesReachedCounter&&o.maxRetriesReachedCounter.add(1,i))}catch(i){console.warn("Failed to record error correction metric:",i)}},_l=(o,e,t,n,r=!1,s,i)=>{try{let a=Nt({functions_enabled:e.toString(),had_function_calls:n.toString(),...s?{signature:s}:{},...i});e&&o.functionsEnabledGenerationsCounter&&o.functionsEnabledGenerationsCounter.add(1,a),n&&o.functionCallStepsCounter&&o.functionCallStepsCounter.add(1,a),t>0&&o.functionsExecutedPerGenerationHistogram&&o.functionsExecutedPerGenerationHistogram.record(t,a),r&&o.functionErrorCorrectionCounter&&o.functionErrorCorrectionCounter.add(1,a)}catch(a){console.warn("Failed to record function calling metric:",a)}},Nl=(o,e,t,n,r)=>{try{let s=Nt({...n?{signature:n}:{},...r});e>0&&o.fieldProcessorsExecutedCounter&&o.fieldProcessorsExecutedCounter.add(e,s),t>0&&o.streamingFieldProcessorsExecutedCounter&&o.streamingFieldProcessorsExecutedCounter.add(t,s)}catch(s){console.warn("Failed to record field processing metric:",s)}},Ll=(o,e,t,n,r,s)=>{try{let i=Nt({is_streaming:e.toString(),...r?{signature:r}:{},...s});e&&o.streamingGenerationsCounter&&o.streamingGenerationsCounter.add(1,i),t>0&&o.streamingDeltasEmittedCounter&&o.streamingDeltasEmittedCounter.add(t,i),n&&o.streamingFinalizationLatencyHistogram&&o.streamingFinalizationLatencyHistogram.record(n,i)}catch(i){console.warn("Failed to record streaming metric:",i)}},$l=(o,e,t,n,r,s)=>{try{let i=Nt({result_picker_used:t.toString(),...r?{signature:r}:{},...s});o.samplesGeneratedHistogram&&o.samplesGeneratedHistogram.record(e,i),t&&o.resultPickerUsageCounter&&o.resultPickerUsageCounter.add(1,i),n&&o.resultPickerLatencyHistogram&&o.resultPickerLatencyHistogram.record(n,i)}catch(i){console.warn("Failed to record samples metric:",i)}},Dl=(o,e,t,n,r,s,i)=>{try{let a=Nt({...s?{signature:s}:{},...i});o.inputFieldsGauge&&o.inputFieldsGauge.record(e,a),o.outputFieldsGauge&&o.outputFieldsGauge.record(t,a),o.examplesUsedGauge&&o.examplesUsedGauge.record(n,a),o.demosUsedGauge&&o.demosUsedGauge.record(r,a)}catch(a){console.warn("Failed to record signature complexity metrics:",a)}},ks=(o,e,t,n,r)=>{try{let s=Nt({metric_type:e,...n?{signature:n}:{},...r});switch(e){case"prompt_render":o.promptRenderLatencyHistogram&&o.promptRenderLatencyHistogram.record(t,s);break;case"extraction":o.extractionLatencyHistogram&&o.extractionLatencyHistogram.record(t,s);break;case"assertion":o.assertionLatencyHistogram&&o.assertionLatencyHistogram.record(t,s);break;case"state_creation":o.stateCreationLatencyHistogram&&o.stateCreationLatencyHistogram.record(t,s);break;case"memory_update":o.memoryUpdateLatencyHistogram&&o.memoryUpdateLatencyHistogram.record(t,s);break}}catch(s){console.warn("Failed to record performance metric:",s)}};var or=o=>{let e=(()=>{switch(o?.name){case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"date":return'date ("YYYY-MM-DD" format)';case"datetime":return'date time ("YYYY-MM-DD HH:mm Timezone" format)';case"json":return"JSON object";case"class":return"classification class";case"code":return"code";case"object":return"object";default:return"string"}})();return o?.isArray?`array of ${e}s`:e},rt=class extends Error{constructor(e){super(e),this.name="ValidationError"}getFixingInstructions=()=>[{name:"outputError",title:"Invalid Field",description:this.message}];toString(){return`${this.name}: ${this.message}`}[Symbol.for("nodejs.util.inspect.custom")](e,t){return this.toString()}},Ul=o=>{let t=o.map(n=>`'${n.title}' (${or(n.type)})`).join(", ");return new rt(`Required field not found: ${t}. Add a line starting with the exact label followed by a colon (e.g., "${o[0]?.title}:") and then provide a valid ${or(o[0]?.type)} value. Keep the output concise and avoid unrelated text.`)},Os=o=>new rt(`Expected (Required) field not found: '${o.title}'. Begin a new section with "${o.title}:" and then provide a valid ${or(o.type)} value directly after.`);var Es=o=>new rt(`Required field is missing: '${o.title}'. After the "${o.title}:" label, provide a non-empty ${or(o.type)}. Do not use null, undefined, or leave it blank.`),Gl=(o,e)=>new rt(`Invalid JSON: ${e} in field '${o.title}'. Return only valid JSON. Prefer a fenced code block containing a single JSON object or array with no trailing text.`),Bl=(o,e)=>new rt(`Invalid Array: ${e} for '${o.title}'. Provide a JSON array of ${or(o.type)} items (e.g., [ ... ]). Markdown lists are also accepted if each item is on its own line starting with a hyphen.`),jl=(o,e,t)=>new rt(`Field '${o.title}' has an invalid value '${e}': ${t}. Provide a ${or(o.type)}. Ensure formatting exactly matches the expected type.`),zl=(o,e,t)=>new rt(`Invalid date for '${o.title}': ${t}. Use the exact format YYYY-MM-DD (e.g., 2024-05-09). You provided: ${e}.`),ql=(o,e,t)=>new rt(`Invalid date/time for '${o.title}': ${t}. Use the format YYYY-MM-DD HH:mm or YYYY-MM-DD HH:mm:ss followed by a valid timezone (e.g., America/New_York). You provided: ${e}.`),Sa=(o,e,t)=>new rt(`Invalid URL for '${o.title}': ${t}. Use a valid URL format (e.g., https://example.com). You provided: ${e}.`),sr=(o,e,t,n)=>{let r=`Field '${o.title}' failed validation: `;return t==="minLength"?r+=`String must be at least ${n} characters long. You provided: "${e}" (${e.length} characters).`:t==="maxLength"?r+=`String must be at most ${n} characters long. You provided: "${e}" (${e.length} characters).`:t==="pattern"?r+=`String must match pattern /${n}/. You provided: "${e}".`:t==="format"&&(r+=`String must be a ${n}. You provided: "${e}".`),new rt(r)},ka=(o,e,t,n)=>{let r=`Field '${o.title}' failed validation: `;return t==="minimum"?r+=`Number must be at least ${n}. You provided: ${e}.`:t==="maximum"&&(r+=`Number must be at most ${n}. You provided: ${e}.`),new rt(r)};var Hl=({error:o,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:s,span:i,customLabels:a})=>{let c=o.getFixingInstructions();if(t&&n){let u=c?.map(l=>l.title).join(", ")??"";ku(o,e,u,n)}return r&&wa(r,"validation",s,a),i&&i.addEvent("validation.error",{message:o.toString(),fixing_instructions:c?.map(u=>u.title).join(", ")??""}),c},Wl=({error:o,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:s,span:i,customLabels:a})=>{let c=o.getFixingInstructions();if(t&&n){let u=c?.map(l=>l.title).join(", ")??"";Ou(o,e,u,n)}return r&&wa(r,"assertion",s,a),i&&i.addEvent("assertion.error",{message:o.toString(),fixing_instructions:c?.map(u=>u.title).join(", ")??""}),c},Vl=({error:o,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:s,span:i,customLabels:a})=>{t&&n&&Eu(o,e,n),r&&Fl(r,s,a),i&&i.addEvent("refusal.error",{message:o.toString()})};var on=Er(Kl(),1),Xl=Er(Jl(),1),Zl=Er(Ql(),1),ep=Er(Yl(),1);on.default.extend(ep.default);on.default.extend(Zl.default);on.default.extend(Xl.default);function tp(o,e,t=!1){try{return Xg(e)}catch(n){if(o.isOptional&&!t)return;let r=n.message;throw zl(o,e,r)}}function Xg(o){if(!(0,on.default)(o,"YYYY-MM-DD",!0).isValid())throw new Error('Invalid date format. Please provide the date in "YYYY-MM-DD" format.');return on.default.utc(o,"YYYY-MM-DD").startOf("day").toDate()}function np(o,e,t=!1){try{return Zg(e)}catch(n){if(o.isOptional&&!t)return;let r=n.message;throw ql(o,e,r)}}function Zg(o){let e=/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}(?::\d{2})?) (.+)$/,t=o.match(e);if(!t)throw new Error('Invalid date and time format. Please provide the date and time in "YYYY-MM-DD HH:mm" or "YYYY-MM-DD HH:mm:ss" format, followed by the timezone.');let[,n,r]=t;if(!n||!r)throw new Error('Invalid date and time format. Please provide the date and time in "YYYY-MM-DD HH:mm" or "YYYY-MM-DD HH:mm:ss" format, followed by the timezone.');try{let s=n.includes(":")&&n.split(":").length===3?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm",i=on.default.tz(n,s,r);if(!i.isValid())throw new Error("Invalid date and time values. Please ensure all components are correct.");return i.utc().toDate()}catch{throw new Error(`Unrecognized time zone ${r}. Please provide a valid time zone name, abbreviation, or offset. For example, "America/New_York", or "EST".`)}}var rp=o=>(0,on.default)(o).utc().format("YYYY-MM-DD HH:mm:ss [UTC]");var nI=new mt,oo=(o,e)=>{let t=o.type??{name:"string",isArray:!1},n=(u,l)=>{switch(u){case"class":return typeof l=="string";case"code":return typeof l=="string";case"string":return typeof l=="string";case"number":return typeof l=="number";case"boolean":return typeof l=="boolean";case"date":return l instanceof Date||typeof l=="string";case"datetime":return l instanceof Date||typeof l=="string";case"json":return typeof l=="object"||typeof l=="string";case"object":return typeof l=="object";default:return!1}},r=u=>!(!u||typeof u!="object"||!("mimeType"in u)||!("data"in u));if(o.type?.name==="image"){let u;if(Array.isArray(e)){for(let l of e)if(!r(l)){u="object ({ mimeType: string; data: string })";break}}else r(e)||(u="object ({ mimeType: string; data: string })");if(u)throw new Error(`Validation failed: Expected '${o.name}' to be type '${u}' instead got '${e}'`);return}let s=u=>!(!u||typeof u!="object"||!("data"in u));if(o.type?.name==="audio"){let u;if(Array.isArray(e)){for(let l of e)if(!s(l)){u="object ({ data: string; format?: string })";break}}else s(e)||(u="object ({ data: string; format?: string })");if(u)throw new Error(`Validation failed: Expected '${o.name}' to be type '${u}' instead got '${e}'`);return}let i=u=>{if(!u||typeof u!="object"||!("mimeType"in u))return!1;let l="data"in u,p="fileUri"in u;return!(!l&&!p||l&&p)};if(o.type?.name==="file"){let u;if(Array.isArray(e)){for(let l of e)if(!i(l)){u="object ({ mimeType: string; data: string } | { mimeType: string; fileUri: string })";break}}else i(e)||(u="object ({ mimeType: string; data: string } | { mimeType: string; fileUri: string })");if(u)throw new Error(`Validation failed: Expected '${o.name}' to be type '${u}' instead got '${e}'`);return}let a=u=>typeof u=="string"?!0:!(!u||typeof u!="object"||!("url"in u));if(o.type?.name==="url"){let u;if(Array.isArray(e)){for(let l of e)if(!a(l)){u="string or object ({ url: string; title?: string; description?: string })";break}}else a(e)||(u="string or object ({ url: string; title?: string; description?: string })");if(u)throw new Error(`Validation failed: Expected '${o.name}' to be type '${u}' instead got '${e}'`);return}let c=!0;if(t.isArray){if(!Array.isArray(e))c=!1;else for(let u of e)if(!n(t.name,u)){c=!1;break}}else c=n(t.name,e);if(!c){let u=Array.isArray(e)?"array":typeof e;throw new Error(`Validation failed: Expected '${o.name}' to be a ${o.type?.isArray?"an array of ":""}${t.name} instead got '${u}' (${JSON.stringify(e)})`)}};function so(o){let e={};for(let t of o){let n=`${t.ai}:${t.model}`;if(!e[n]){e[n]={...t};continue}let r=e[n];if(r){let s=r.tokens??{promptTokens:0,completionTokens:0,totalTokens:0};s.promptTokens+=t?.tokens?.promptTokens??0,s.completionTokens+=t?.tokens?.completionTokens??0,s.totalTokens+=t?.tokens?.totalTokens??0,r.tokens=s;let i=r.citations??[],a=t.citations??[];if(a.length){let c=new Set(i.map(u=>u.url));for(let u of a)u?.url&&!c.has(u.url)&&(i.push(u),c.add(u.url));r.citations=i}}}return Object.values(e)}var op=o=>{if(!o.trim())return[];let e=new Set(["-","*","+"]),t=/^\d+[\s]*[.)\]]\s*/,n=o.split(`
|
|
215
|
+
`,s=c}),(s>t||n.length===0)&&n.push(r.trim()),n},Qg=(o,e=.1)=>{let t=[...o].sort((r,s)=>r.score-s.score),n=Math.ceil(t.length*e);return t.slice(0,n)};var no=class{data=[];seenTags=new Set;addRequest(e,t){this.data.push(...e.map(n=>{let r=structuredClone(n);return{role:n.role,chat:[{index:t,value:r}]}}))}addFunctionResults(e){let t=e.map(({index:r,...s})=>({index:r,value:structuredClone(s)})),n=this.getLast();n?.role==="function"?n.chat.push(...t):this.data.push({role:"function",chat:t})}addResponse(e){let t=e.map(({index:n,...r})=>({index:n,value:structuredClone(r)}));this.data.push({role:"assistant",chat:t})}updateResult({content:e,name:t,functionCalls:n,thought:r,thoughtBlocks:s,index:i}){let a=this.data.at(-1);if(!a||a.role!=="assistant"||a.role==="assistant"&&!a.updatable){this.data.push({role:"assistant",updatable:!0,chat:[{index:i,value:structuredClone({content:e,name:t,functionCalls:n,thought:r,thoughtBlocks:s})}]});return}let c=a.chat.find(u=>u.index===i);if(!c){a.chat.push({index:i,value:structuredClone({content:e,name:t,functionCalls:n,thought:r,thoughtBlocks:s})});return}if(typeof e=="string"&&e.trim()!==""&&(c.value.content=e),typeof t=="string"&&t.trim()!==""&&(c.value.name=t),Array.isArray(n)&&n.length>0&&(c.value.functionCalls=n),typeof r=="string"&&r.trim()!==""){let u=c.value.thought;c.value.thought=typeof u=="string"?u+r:r}if(Array.isArray(s)&&s.length>0){let u=c.value.thoughtBlocks??[];for(let l of s){let p=u.length>0?u[u.length-1]:void 0;!l.signature&&l.data?p&&!p.signature?(p.data=(p.data??"")+l.data,l.encrypted&&(p.encrypted=!0)):u.push(structuredClone(l)):l.signature?p&&!p.signature?(p.data=(p.data??"")+l.data,p.signature=l.signature,l.encrypted&&(p.encrypted=!0)):u.push(structuredClone(l)):u.length===0&&u.push(structuredClone(l))}c.value.thoughtBlocks=u,u.length>0&&(c.value.thought=u.map(l=>l.data).join(""))}}addTag(e){let t=this.data.at(-1);t&&(t.tags||(t.tags=[]),t.tags.includes(e)||t.tags.push(e),this.seenTags.add(e))}rewindToTag(e){let t=this.data.findIndex(n=>n.tags?.includes(e));if(t===-1){if(!this.seenTags.has(e))throw new Error(`Tag "${e}" not found`);return[]}return this.data.splice(t)}removeByTag(e){let t=this.data.reduce((n,r,s)=>(r.tags?.includes(e)&&n.push(s),n),[]);return t.length===0?[]:t.reverse().map(n=>this.data.splice(n,1).at(0)).filter(n=>n!==void 0).reverse()}history(e){let t=[];for(let{role:n,chat:r}of this.data){let s;n==="function"?s=r.filter(i=>i.index===e).map(i=>i.value):s=r.find(i=>i.index===e)?.value,Array.isArray(s)&&s.length>0?t.push(...s.map(i=>({...i,role:n}))):typeof s=="object"&&s!==null&&t.push({...s,role:n})}return t}getLast(){return this.data.at(-1)}reset(){this.data=[],this.seenTags=new Set}},nr=class{memories=new Map;defaultMemory;constructor(){this.defaultMemory=new no}getMemory(e){return e?(this.memories.has(e)||this.memories.set(e,new no),this.memories.get(e)):this.defaultMemory}addRequest(e,t){for(let n of e)En(n);this.getMemory(t).addRequest(e,0)}addResponse(e,t){Jo(e),this.getMemory(t).addResponse(e)}addFunctionResults(e,t){this.getMemory(t).addFunctionResults(e)}updateResult(e,t){this.getMemory(t).updateResult(e)}addTag(e,t){this.getMemory(t).addTag(e)}rewindToTag(e,t){return this.getMemory(t).rewindToTag(e)}removeByTag(e,t){return this.getMemory(t).removeByTag(e)}history(e,t){return this.getMemory(t).history(e)}getLast(e){return this.getMemory(e).getLast()}reset(e){e?this.memories.set(e,new no):this.defaultMemory.reset()}};function _t(o,e){if(!o&&!e)return;if(!o)return e;if(!e||o===e||o.aborted)return o;if(e.aborted)return e;if(typeof AbortSignal.any=="function")return AbortSignal.any([o,e]);let t=new AbortController,n=()=>{t.abort(o.aborted?o.reason:e.reason),r()},r=()=>{o.removeEventListener("abort",n),e.removeEventListener("abort",n)};return o.addEventListener("abort",n,{once:!0}),e.addEventListener("abort",n,{once:!0}),t.signal}var Ut=class extends Error{constructor({message:e}){super(e),this.name="AxAssertionError"}getFixingInstructions=()=>{let e=[],t=this.message.trim();return e.push({name:"error",title:"Follow these instructions",description:t+(t.endsWith(".")?"":".")}),e};toString(){return`${this.name}: ${this.message}`}[Symbol.for("nodejs.util.inspect.custom")](e,t){return this.toString()}},rr=async(o,e)=>{for(let t of o){let{fn:n,message:r}=t,s=await n(e);if(s!==void 0){if(typeof s=="string")throw new Ut({message:s});if(!s)throw r?new Ut({message:r}):new Error("Assertion Failed: No message provided for assertion")}}},Ta=async(o,e,t,n=!1)=>{if(!e.currField||e.s===-1||!o||o.length===0)return;let r=o.filter(i=>i.fieldName===e.currField?.name);if(r.length===0)return;let s=t.substring(e.s);for(let i of r){let{message:a,fn:c}=i,u=await c(s,n);if(u!==void 0){if(typeof u=="string")throw new Ut({message:u});if(!u&&a)throw new Ut({message:a})}}};var Ia={enabled:!0,enabledCategories:["generation","streaming","functions","errors","performance"],maxLabelLength:100,samplingRate:1},ro,Ra=o=>{if(ro)return ro;let e=o??ke.meter;if(e)return ro=Yg(e),ro};var Ol=()=>{let o=[];return ke.meter||o.push("Global meter not initialized"),!ro&&ke.meter&&o.push("Metrics instruments not created despite available meter"),{healthy:o.length===0,issues:o}},Yg=o=>({generationLatencyHistogram:o.createHistogram("ax_gen_generation_duration_ms",{description:"End-to-end duration of AxGen generation requests",unit:"ms"}),generationRequestsCounter:o.createCounter("ax_gen_generation_requests_total",{description:"Total number of AxGen generation requests"}),generationErrorsCounter:o.createCounter("ax_gen_generation_errors_total",{description:"Total number of failed AxGen generations"}),multiStepGenerationsCounter:o.createCounter("ax_gen_multistep_generations_total",{description:"Total number of generations that required multiple steps"}),stepsPerGenerationHistogram:o.createHistogram("ax_gen_steps_per_generation",{description:"Number of steps taken per generation"}),maxStepsReachedCounter:o.createCounter("ax_gen_max_steps_reached_total",{description:"Total number of generations that hit max steps limit"}),validationErrorsCounter:o.createCounter("ax_gen_validation_errors_total",{description:"Total number of validation errors encountered"}),assertionErrorsCounter:o.createCounter("ax_gen_assertion_errors_total",{description:"Total number of assertion errors encountered"}),errorCorrectionAttemptsHistogram:o.createHistogram("ax_gen_error_correction_attempts",{description:"Number of error correction attempts per generation"}),errorCorrectionSuccessCounter:o.createCounter("ax_gen_error_correction_success_total",{description:"Total number of successful error corrections"}),errorCorrectionFailureCounter:o.createCounter("ax_gen_error_correction_failure_total",{description:"Total number of failed error corrections"}),maxRetriesReachedCounter:o.createCounter("ax_gen_max_retries_reached_total",{description:"Total number of generations that hit max retries limit"}),functionsEnabledGenerationsCounter:o.createCounter("ax_gen_functions_enabled_generations_total",{description:"Total number of generations with functions enabled"}),functionCallStepsCounter:o.createCounter("ax_gen_function_call_steps_total",{description:"Total number of steps that included function calls"}),functionsExecutedPerGenerationHistogram:o.createHistogram("ax_gen_functions_executed_per_generation",{description:"Number of unique functions executed per generation"}),functionErrorCorrectionCounter:o.createCounter("ax_gen_function_error_correction_total",{description:"Total number of function-related error corrections"}),fieldProcessorsExecutedCounter:o.createCounter("ax_gen_field_processors_executed_total",{description:"Total number of field processors executed"}),streamingFieldProcessorsExecutedCounter:o.createCounter("ax_gen_streaming_field_processors_executed_total",{description:"Total number of streaming field processors executed"}),streamingGenerationsCounter:o.createCounter("ax_gen_streaming_generations_total",{description:"Total number of streaming generations"}),streamingDeltasEmittedCounter:o.createCounter("ax_gen_streaming_deltas_emitted_total",{description:"Total number of streaming deltas emitted"}),streamingFinalizationLatencyHistogram:o.createHistogram("ax_gen_streaming_finalization_duration_ms",{description:"Duration of streaming response finalization",unit:"ms"}),samplesGeneratedHistogram:o.createHistogram("ax_gen_samples_generated",{description:"Number of samples generated per request"}),resultPickerUsageCounter:o.createCounter("ax_gen_result_picker_usage_total",{description:"Total number of times result picker was used"}),resultPickerLatencyHistogram:o.createHistogram("ax_gen_result_picker_duration_ms",{description:"Duration of result picker execution",unit:"ms"}),inputFieldsGauge:o.createGauge("ax_gen_input_fields",{description:"Number of input fields in signature"}),outputFieldsGauge:o.createGauge("ax_gen_output_fields",{description:"Number of output fields in signature"}),examplesUsedGauge:o.createGauge("ax_gen_examples_used",{description:"Number of examples used in generation"}),demosUsedGauge:o.createGauge("ax_gen_demos_used",{description:"Number of demos used in generation"}),promptRenderLatencyHistogram:o.createHistogram("ax_gen_prompt_render_duration_ms",{description:"Duration of prompt template rendering",unit:"ms"}),extractionLatencyHistogram:o.createHistogram("ax_gen_extraction_duration_ms",{description:"Duration of value extraction from responses",unit:"ms"}),assertionLatencyHistogram:o.createHistogram("ax_gen_assertion_duration_ms",{description:"Duration of assertion checking",unit:"ms"}),stateCreationLatencyHistogram:o.createHistogram("ax_gen_state_creation_duration_ms",{description:"Duration of state creation for multiple samples",unit:"ms"}),memoryUpdateLatencyHistogram:o.createHistogram("ax_gen_memory_update_duration_ms",{description:"Duration of memory updates during generation",unit:"ms"})}),vs=Ia,El=o=>{vs={...vs,...o}},Ml=()=>({...vs}),Nt=o=>{let e={};for(let[t,n]of Object.entries(o))if(n!=null){let r=String(n),s=vs.maxLabelLength;e[t]=r.length>s?r.substring(0,s):r}return e};var Pl=(o,e,t,n,r,s,i)=>{try{let a=Nt({success:t.toString(),...n?{signature:n}:{},...r?{ai_service:r}:{},...s?{model:s}:{},...i});o.generationLatencyHistogram&&o.generationLatencyHistogram.record(e,a),o.generationRequestsCounter&&o.generationRequestsCounter.add(1,a),!t&&o.generationErrorsCounter&&o.generationErrorsCounter.add(1,a)}catch(a){console.warn("Failed to record generation metric:",a)}},Ss=(o,e,t,n,r)=>{try{let s=Nt({...n?{signature:n}:{},...r});e>1&&o.multiStepGenerationsCounter&&o.multiStepGenerationsCounter.add(1,s),o.stepsPerGenerationHistogram&&o.stepsPerGenerationHistogram.record(e,s),e>=t&&o.maxStepsReachedCounter&&o.maxStepsReachedCounter.add(1,s)}catch(s){console.warn("Failed to record multi-step metric:",s)}},wa=(o,e,t,n)=>{try{let r=Nt({error_type:e,...t?{signature:t}:{},...n});e==="validation"&&o.validationErrorsCounter&&o.validationErrorsCounter.add(1,r),e==="assertion"&&o.assertionErrorsCounter&&o.assertionErrorsCounter.add(1,r)}catch(r){console.warn("Failed to record validation error metric:",r)}},Fl=(o,e,t)=>{try{let n=Nt({error_type:"refusal",...e?{signature:e}:{},...t});o.validationErrorsCounter&&o.validationErrorsCounter.add(1,n)}catch(n){console.warn("Failed to record refusal error metric:",n)}},va=(o,e,t,n,r,s)=>{try{let i=Nt({success:t.toString(),...r?{signature:r}:{},...s});o.errorCorrectionAttemptsHistogram&&o.errorCorrectionAttemptsHistogram.record(e,i),t&&o.errorCorrectionSuccessCounter&&o.errorCorrectionSuccessCounter.add(1,i),t||(o.errorCorrectionFailureCounter&&o.errorCorrectionFailureCounter.add(1,i),e>=n&&o.maxRetriesReachedCounter&&o.maxRetriesReachedCounter.add(1,i))}catch(i){console.warn("Failed to record error correction metric:",i)}},_l=(o,e,t,n,r=!1,s,i)=>{try{let a=Nt({functions_enabled:e.toString(),had_function_calls:n.toString(),...s?{signature:s}:{},...i});e&&o.functionsEnabledGenerationsCounter&&o.functionsEnabledGenerationsCounter.add(1,a),n&&o.functionCallStepsCounter&&o.functionCallStepsCounter.add(1,a),t>0&&o.functionsExecutedPerGenerationHistogram&&o.functionsExecutedPerGenerationHistogram.record(t,a),r&&o.functionErrorCorrectionCounter&&o.functionErrorCorrectionCounter.add(1,a)}catch(a){console.warn("Failed to record function calling metric:",a)}},Nl=(o,e,t,n,r)=>{try{let s=Nt({...n?{signature:n}:{},...r});e>0&&o.fieldProcessorsExecutedCounter&&o.fieldProcessorsExecutedCounter.add(e,s),t>0&&o.streamingFieldProcessorsExecutedCounter&&o.streamingFieldProcessorsExecutedCounter.add(t,s)}catch(s){console.warn("Failed to record field processing metric:",s)}},Ll=(o,e,t,n,r,s)=>{try{let i=Nt({is_streaming:e.toString(),...r?{signature:r}:{},...s});e&&o.streamingGenerationsCounter&&o.streamingGenerationsCounter.add(1,i),t>0&&o.streamingDeltasEmittedCounter&&o.streamingDeltasEmittedCounter.add(t,i),n&&o.streamingFinalizationLatencyHistogram&&o.streamingFinalizationLatencyHistogram.record(n,i)}catch(i){console.warn("Failed to record streaming metric:",i)}},$l=(o,e,t,n,r,s)=>{try{let i=Nt({result_picker_used:t.toString(),...r?{signature:r}:{},...s});o.samplesGeneratedHistogram&&o.samplesGeneratedHistogram.record(e,i),t&&o.resultPickerUsageCounter&&o.resultPickerUsageCounter.add(1,i),n&&o.resultPickerLatencyHistogram&&o.resultPickerLatencyHistogram.record(n,i)}catch(i){console.warn("Failed to record samples metric:",i)}},Dl=(o,e,t,n,r,s,i)=>{try{let a=Nt({...s?{signature:s}:{},...i});o.inputFieldsGauge&&o.inputFieldsGauge.record(e,a),o.outputFieldsGauge&&o.outputFieldsGauge.record(t,a),o.examplesUsedGauge&&o.examplesUsedGauge.record(n,a),o.demosUsedGauge&&o.demosUsedGauge.record(r,a)}catch(a){console.warn("Failed to record signature complexity metrics:",a)}},ks=(o,e,t,n,r)=>{try{let s=Nt({metric_type:e,...n?{signature:n}:{},...r});switch(e){case"prompt_render":o.promptRenderLatencyHistogram&&o.promptRenderLatencyHistogram.record(t,s);break;case"extraction":o.extractionLatencyHistogram&&o.extractionLatencyHistogram.record(t,s);break;case"assertion":o.assertionLatencyHistogram&&o.assertionLatencyHistogram.record(t,s);break;case"state_creation":o.stateCreationLatencyHistogram&&o.stateCreationLatencyHistogram.record(t,s);break;case"memory_update":o.memoryUpdateLatencyHistogram&&o.memoryUpdateLatencyHistogram.record(t,s);break}}catch(s){console.warn("Failed to record performance metric:",s)}};var or=o=>{let e=(()=>{switch(o?.name){case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"date":return'date ("YYYY-MM-DD" format)';case"datetime":return'date time ("YYYY-MM-DD HH:mm Timezone" format)';case"json":return"JSON object";case"class":return"classification class";case"code":return"code";case"object":return"object";default:return"string"}})();return o?.isArray?`array of ${e}s`:e},rt=class extends Error{constructor(e){super(e),this.name="ValidationError"}getFixingInstructions=()=>[{name:"outputError",title:"Invalid Field",description:this.message}];toString(){return`${this.name}: ${this.message}`}[Symbol.for("nodejs.util.inspect.custom")](e,t){return this.toString()}},Ul=o=>{let t=o.map(n=>`'${n.title}' (${or(n.type)})`).join(", ");return new rt(`Required field not found: ${t}. Add a line starting with the exact label followed by a colon (e.g., "${o[0]?.title}:") and then provide a valid ${or(o[0]?.type)} value. Keep the output concise and avoid unrelated text.`)},Os=o=>new rt(`Expected (Required) field not found: '${o.title}'. Begin a new section with "${o.title}:" and then provide a valid ${or(o.type)} value directly after.`);var Es=o=>new rt(`Required field is missing: '${o.title}'. After the "${o.title}:" label, provide a non-empty ${or(o.type)}. Do not use null, undefined, or leave it blank.`),Gl=(o,e)=>new rt(`Invalid JSON: ${e} in field '${o.title}'. Return only valid JSON. Prefer a fenced code block containing a single JSON object or array with no trailing text.`),Bl=(o,e)=>new rt(`Invalid Array: ${e} for '${o.title}'. Provide a JSON array of ${or(o.type)} items (e.g., [ ... ]). Markdown lists are also accepted if each item is on its own line starting with a hyphen.`),jl=(o,e,t)=>new rt(`Field '${o.title}' has an invalid value '${e}': ${t}. Provide a ${or(o.type)}. Ensure formatting exactly matches the expected type.`),zl=(o,e,t)=>new rt(`Invalid date for '${o.title}': ${t}. Use the exact format YYYY-MM-DD (e.g., 2024-05-09). You provided: ${e}.`),ql=(o,e,t)=>new rt(`Invalid date/time for '${o.title}': ${t}. Use the format YYYY-MM-DD HH:mm or YYYY-MM-DD HH:mm:ss followed by a valid timezone (e.g., America/New_York). You provided: ${e}.`),Sa=(o,e,t)=>new rt(`Invalid URL for '${o.title}': ${t}. Use a valid URL format (e.g., https://example.com). You provided: ${e}.`),sr=(o,e,t,n)=>{let r=`Field '${o.title}' failed validation: `;return t==="minLength"?r+=`String must be at least ${n} characters long. You provided: "${e}" (${e.length} characters).`:t==="maxLength"?r+=`String must be at most ${n} characters long. You provided: "${e}" (${e.length} characters).`:t==="pattern"?r+=`String must match pattern /${n}/. You provided: "${e}".`:t==="format"&&(r+=`String must be a ${n}. You provided: "${e}".`),new rt(r)},ka=(o,e,t,n)=>{let r=`Field '${o.title}' failed validation: `;return t==="minimum"?r+=`Number must be at least ${n}. You provided: ${e}.`:t==="maximum"&&(r+=`Number must be at most ${n}. You provided: ${e}.`),new rt(r)};var Hl=({error:o,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:s,span:i,customLabels:a})=>{let c=o.getFixingInstructions();if(t&&n){let u=c?.map(l=>l.title).join(", ")??"";ku(o,e,u,n)}return r&&wa(r,"validation",s,a),i&&i.addEvent("validation.error",{message:o.toString(),fixing_instructions:c?.map(u=>u.title).join(", ")??""}),c},Wl=({error:o,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:s,span:i,customLabels:a})=>{let c=o.getFixingInstructions();if(t&&n){let u=c?.map(l=>l.title).join(", ")??"";Ou(o,e,u,n)}return r&&wa(r,"assertion",s,a),i&&i.addEvent("assertion.error",{message:o.toString(),fixing_instructions:c?.map(u=>u.title).join(", ")??""}),c},Vl=({error:o,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:s,span:i,customLabels:a})=>{t&&n&&Eu(o,e,n),r&&Fl(r,s,a),i&&i.addEvent("refusal.error",{message:o.toString()})};var on=Er(Kl(),1),Xl=Er(Jl(),1),Zl=Er(Ql(),1),ep=Er(Yl(),1);on.default.extend(ep.default);on.default.extend(Zl.default);on.default.extend(Xl.default);function tp(o,e,t=!1){try{return Xg(e)}catch(n){if(o.isOptional&&!t)return;let r=n.message;throw zl(o,e,r)}}function Xg(o){if(!(0,on.default)(o,"YYYY-MM-DD",!0).isValid())throw new Error('Invalid date format. Please provide the date in "YYYY-MM-DD" format.');return on.default.utc(o,"YYYY-MM-DD").startOf("day").toDate()}function np(o,e,t=!1){try{return Zg(e)}catch(n){if(o.isOptional&&!t)return;let r=n.message;throw ql(o,e,r)}}function Zg(o){let e=/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}(?::\d{2})?) (.+)$/,t=o.match(e);if(!t)throw new Error('Invalid date and time format. Please provide the date and time in "YYYY-MM-DD HH:mm" or "YYYY-MM-DD HH:mm:ss" format, followed by the timezone.');let[,n,r]=t;if(!n||!r)throw new Error('Invalid date and time format. Please provide the date and time in "YYYY-MM-DD HH:mm" or "YYYY-MM-DD HH:mm:ss" format, followed by the timezone.');try{let s=n.includes(":")&&n.split(":").length===3?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm",i=on.default.tz(n,s,r);if(!i.isValid())throw new Error("Invalid date and time values. Please ensure all components are correct.");return i.utc().toDate()}catch{throw new Error(`Unrecognized time zone ${r}. Please provide a valid time zone name, abbreviation, or offset. For example, "America/New_York", or "EST".`)}}var rp=o=>(0,on.default)(o).utc().format("YYYY-MM-DD HH:mm:ss [UTC]");var rI=new gt,oo=(o,e)=>{let t=o.type??{name:"string",isArray:!1},n=(u,l)=>{switch(u){case"class":return typeof l=="string";case"code":return typeof l=="string";case"string":return typeof l=="string";case"number":return typeof l=="number";case"boolean":return typeof l=="boolean";case"date":return l instanceof Date||typeof l=="string";case"datetime":return l instanceof Date||typeof l=="string";case"json":return typeof l=="object"||typeof l=="string";case"object":return typeof l=="object";default:return!1}},r=u=>!(!u||typeof u!="object"||!("mimeType"in u)||!("data"in u));if(o.type?.name==="image"){let u;if(Array.isArray(e)){for(let l of e)if(!r(l)){u="object ({ mimeType: string; data: string })";break}}else r(e)||(u="object ({ mimeType: string; data: string })");if(u)throw new Error(`Validation failed: Expected '${o.name}' to be type '${u}' instead got '${e}'`);return}let s=u=>!(!u||typeof u!="object"||!("data"in u));if(o.type?.name==="audio"){let u;if(Array.isArray(e)){for(let l of e)if(!s(l)){u="object ({ data: string; format?: string })";break}}else s(e)||(u="object ({ data: string; format?: string })");if(u)throw new Error(`Validation failed: Expected '${o.name}' to be type '${u}' instead got '${e}'`);return}let i=u=>{if(!u||typeof u!="object"||!("mimeType"in u))return!1;let l="data"in u,p="fileUri"in u;return!(!l&&!p||l&&p)};if(o.type?.name==="file"){let u;if(Array.isArray(e)){for(let l of e)if(!i(l)){u="object ({ mimeType: string; data: string } | { mimeType: string; fileUri: string })";break}}else i(e)||(u="object ({ mimeType: string; data: string } | { mimeType: string; fileUri: string })");if(u)throw new Error(`Validation failed: Expected '${o.name}' to be type '${u}' instead got '${e}'`);return}let a=u=>typeof u=="string"?!0:!(!u||typeof u!="object"||!("url"in u));if(o.type?.name==="url"){let u;if(Array.isArray(e)){for(let l of e)if(!a(l)){u="string or object ({ url: string; title?: string; description?: string })";break}}else a(e)||(u="string or object ({ url: string; title?: string; description?: string })");if(u)throw new Error(`Validation failed: Expected '${o.name}' to be type '${u}' instead got '${e}'`);return}let c=!0;if(t.isArray){if(!Array.isArray(e))c=!1;else for(let u of e)if(!n(t.name,u)){c=!1;break}}else c=n(t.name,e);if(!c){let u=Array.isArray(e)?"array":typeof e;throw new Error(`Validation failed: Expected '${o.name}' to be a ${o.type?.isArray?"an array of ":""}${t.name} instead got '${u}' (${JSON.stringify(e)})`)}};function so(o){let e={};for(let t of o){let n=`${t.ai}:${t.model}`;if(!e[n]){e[n]={...t};continue}let r=e[n];if(r){let s=r.tokens??{promptTokens:0,completionTokens:0,totalTokens:0};s.promptTokens+=t?.tokens?.promptTokens??0,s.completionTokens+=t?.tokens?.completionTokens??0,s.totalTokens+=t?.tokens?.totalTokens??0,r.tokens=s;let i=r.citations??[],a=t.citations??[];if(a.length){let c=new Set(i.map(u=>u.url));for(let u of a)u?.url&&!c.has(u.url)&&(i.push(u),c.add(u.url));r.citations=i}}}return Object.values(e)}var op=o=>{if(!o.trim())return[];let e=new Set(["-","*","+"]),t=/^\d+[\s]*[.)\]]\s*/,n=o.split(`
|
|
216
216
|
`),r=[];for(let s of n){let i=s.trim();if(i){if(i[0]&&e.has(i[0]))r.push(i.slice(1).trim());else if(t.test(i))r.push(i.replace(t,"").trim());else if(r.length!==0)throw new Error("Could not parse markdown list: mixed content detected")}}if(r.length===0)throw new Error("Could not parse markdown list: no valid list items found");return r};function Da(o,e){let{index:t,delta:n,version:r}=e,s=o.find(a=>a.index===t)?.delta;if(!s)return o.push({index:t,delta:n,version:r}),o;for(let a of Object.keys(n)){let c=s[a],u=n[a];c===void 0&&Array.isArray(u)?s[a]=[...u]:Array.isArray(c)&&Array.isArray(u)?s[a]=[...c,...u]:(c===void 0||typeof c=="string")&&typeof u=="string"?s[a]=`${c??""}${u}`:s[a]=u}let i=o.find(a=>a.index===t);return i&&(i.version=r),o}var $a=class{cache=new Map;maxSize;constructor(e){this.maxSize=e}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.maxSize){let n=this.cache.keys().next().value;n&&this.cache.delete(n)}this.cache.set(e,t)}},ef=new $a(500);function sp(o,e,t=0,n=ef){if(/^```[a-zA-Z]*\s*$/.test(o))return-4;if(/^[\s`]*$/.test(o))return-3;let r=o.indexOf(e,t);if(r!==-1)return r;let s=n.get(e)??Array.from({length:e.length},(a,c)=>e.slice(0,c+1));n.get(e)||n.set(e,s);let i=-1;for(let a=s.length-1;a>=0;a--){let c=s[a];if(o.endsWith(c)){i=a;break}}return i>=0?-2:-1}function sn(o,e){if(typeof o!="string")throw Sa(e,String(o),"URL must be a string");try{new URL(o)}catch{throw Sa(e,o,"Invalid URL format. Expected a valid URL like https://example.com")}}function vt(o,e){if(typeof o!="string")return;let t=e.type;if(t){if(t.minLength!==void 0&&o.length<t.minLength)throw sr(e,o,"minLength",t.minLength);if(t.maxLength!==void 0&&o.length>t.maxLength)throw sr(e,o,"maxLength",t.maxLength);if(t.pattern!==void 0&&!new RegExp(t.pattern).test(o))throw sr(e,o,"pattern",t.pattern);if(t.format==="email"&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(o))throw sr(e,o,"format","valid email address");if(t.format==="uri"||t.format==="url")try{new URL(o)}catch{throw sr(e,o,"format","valid URL")}}}function St(o,e){if(typeof o!="number")return;let t=e.type;if(t){if(t.minimum!==void 0&&o<t.minimum)throw ka(e,o,"minimum",t.minimum);if(t.maximum!==void 0&&o>t.maximum)throw ka(e,o,"maximum",t.maximum)}}var Fs=(o,e,t,n)=>{let r=n?.strictMode??!1,s=n?.treatAllFieldsOptional??!1,i=n?.treatAllFieldsOptional??!1,a={extractedFields:[],streamedIndex:{},s:-1};Ba(o,e,a,t,{strictMode:r,skipEarlyFail:i,treatAllFieldsOptional:s}),ja(o,e,a,t,{strictMode:r,treatAllFieldsOptional:s,forceFinalize:!0});for(let c of o.getOutputFields())c.isInternal&&delete e[c.name]},Ua=(o,e,t)=>{let n=[];for(let r of t)r&&!r.isOptional&&e[r.name]===void 0&&n.push(r);if(n.length>0)throw Ul(n)},Ba=(o,e,t,n,{strictMode:r,skipEarlyFail:s}={})=>{let i=o.getOutputFields(),a;for(;;){let c=new Set;t.currFieldIndex!==void 0&&!t.inAssumedField&&c.add(t.currFieldIndex);let u=i.map((m,f)=>({field:m,index:f})).filter(({index:m})=>!c.has(m)),l,p,d=-1,g=0;for(let{index:m,field:f}of u){let x=`${(t.extractedFields.length===0?"":`
|
|
217
217
|
`)+f.title}:`,A=sp(n,x,t.s);if(A===-2||A===-3)return!0;if(A===-4)return t.inBlock=!0,!0;A>=0&&(d===-1||A<d)&&(d=A,g=x.length,l=m,p=f)}if(d===-1){if(s)return;if(!r&&t.currField===void 0&&t.extractedFields.length===0&&i.length===1){t.inAssumedField=!0,t.currField=i[0],t.currFieldIndex=0,t.s=0,t.extractedFields.includes(i[0])||t.extractedFields.push(i[0]),t.streamedIndex[i[0].name]===void 0&&(t.streamedIndex[i[0].name]=0);return}if(r&&t.currField===void 0&&t.extractedFields.length===0){let m=i.find(f=>!f.isOptional);if(m)throw Os(m)}break}if(a&&p&&a.name!==p.name)throw Os(a);if(t.currField!==void 0&&t.inAssumedField&&(t.inAssumedField=!1,t.streamedIndex[t.currField.name]=0,t.currField=void 0),t.currField){let m=n.substring(t.s,d).trim(),f=Ms(t.currField,m);f!==void 0&&(e[t.currField.name]=f),t.prevFields?t.prevFields?.push({field:t.currField,s:t.s,e:d}):t.prevFields=[{field:t.currField,s:t.s,e:d}]}t.s=d+g,p!==void 0&&l!==void 0&&(t.currField=p,t.currFieldIndex=l),p&&!t.extractedFields.includes(p)&&t.extractedFields.push(p),p&&t.streamedIndex[p.name]===void 0&&(t.streamedIndex[p.name]=0)}},ja=(o,e,t,n,r)=>{let s=r?.strictMode??!1,i=r?.treatAllFieldsOptional??!1,a=r?.deferRequiredCheckForStreaming??!1,c=r?.forceFinalize??!1;if(t.currField){let u=n.length,l=o.getOutputFields();for(let g of l){if(g.name===t.currField.name)continue;let m=`
|
|
218
218
|
${g.title}:`,f=n.indexOf(m,t.s);f!==-1&&f<u&&(u=f)}let p=n.substring(t.s,u).trim(),d=Ms(t.currField,p);d!==void 0&&(e[t.currField.name]=d)}if(s&&!t.currField&&t.extractedFields.length===0&&n.trim()){let p=o.getOutputFields().find(d=>!d.isOptional);if(p)throw Os(p)}if(tf(o,e,n,t),!i){let u=t.currField!==void 0||(t.extractedFields?.length??0)>0;s||c?Ua(t,e,o.getOutputFields()):u||Ua(t,e,o.getOutputFields())}},tf=(o,e,t,n)=>{let r=o.getOutputFields();if(r.length===1){let i=r[0];if(i){let a=`${i.title}:`,c=t.indexOf(a);if(c!==-1){let u=c+a.length,l=`
|
|
@@ -226,7 +226,7 @@ ${r.message}
|
|
|
226
226
|
Tip: Arrays must include an "items" schema (e.g., { items: { type: "string" } } or items: { type: "object", properties: { ... } }).`,{cause:r}):r}return[...e??[],...t]},Ls=async({ai:o,functionList:e,functionCalls:t,mem:n,sessionId:r,traceId:s,span:i,excludeContentFromTrace:a,index:c,functionResultFormatter:u,logger:l,debug:p,stopFunctionNames:d,step:g,abortSignal:m})=>{let f=new uo(e),h=new Set,x=[],A=I=>{let M=N=>N.replace(/[^a-zA-Z0-9]/g,"").toLowerCase(),F=M(I),P=e.find(N=>N.name===I);return P||(P=e.find(N=>M(N.name)===F)),P},y=t.map(I=>{if(!I.id)throw new Error(`Function ${I.name} did not return an ID`);let M=o.getOptions().tracer??ke.tracer;return M?M.startActiveSpan(`Tool: ${I.name}`,async F=>{try{F?.setAttributes?.({"tool.name":I.name,"tool.mode":"native","function.id":I.id,"session.id":r??""});let{formatted:P,rawResult:N,parsedArgs:T}=await f.executeWithDetails(I,{sessionId:r,ai:o,functionResultFormatter:u,traceId:F?.spanContext?.().traceId??s,stopFunctionNames:d,step:g,abortSignal:m});if(h.add(I.name.toLowerCase()),g?._recordFunctionCall(I.name,T,N),d?.includes(I.name.toLowerCase())){let E=A(I.name);E&&x.push({func:E,args:T,result:N})}if(a?F.addEvent("gen_ai.tool.message",{name:I.name}):F.addEvent("gen_ai.tool.message",{name:I.name,args:I.args,result:P??""}),i){let E={name:I.name};a||(E.args=I.args,E.result=P??""),i.addEvent("function.call",E)}return{result:P??"",role:"function",functionId:I.id,index:c}}catch(P){if(F?.recordException?.(P),P instanceof co){let N=P.getFixingInstructions(),T={name:I.name,message:P.toString()};return a||(T.args=I.args,T.fixing_instructions=N),F?.addEvent?.("function.error",T),p&&zi(P,c,N,l),{functionId:I.id,isError:!0,index:c,result:N,role:"function"}}throw P}finally{F?.end?.()}}):f.executeWithDetails(I,{sessionId:r,ai:o,functionResultFormatter:u,traceId:s,stopFunctionNames:d,step:g,abortSignal:m}).then(({formatted:F,rawResult:P,parsedArgs:N})=>{if(h.add(I.name.toLowerCase()),g?._recordFunctionCall(I.name,N,P),d?.includes(I.name.toLowerCase())){let T=A(I.name);T&&x.push({func:T,args:N,result:P})}if(i){let T={name:I.name};a||(T.args=I.args,T.result=F??""),i.addEvent("function.call",T)}return{result:F??"",role:"function",functionId:I.id,index:c}}).catch(F=>{if(!(F instanceof co))throw F;let P=F.getFixingInstructions();if(i){let N={name:I.name,message:F.toString()};a||(N.args=I.args,N.fixing_instructions=P),i.addEvent("function.error",N)}return p&&zi(F,c,P,l),{functionId:I.id,isError:!0,index:c,result:P,role:"function"}})}),R=(await Promise.all(y)).map(I=>I.result===void 0||I.result===""?{...I,result:"done"}:I);if(n.addFunctionResults(R,r),p){let I=R.filter(M=>!M.isError);I.length>0&&Su(I,l)}if(x.length>0)throw new fn(x);return h};function Ha(o,e,t,n){if(!e||e.length===0)return;if(!o.getFeatures(n).functions)throw new Error("Functions are not supported by the AI service");return e.map(s=>({id:s.id,name:s.function.name,args:s.function.params}))}function pp(o,e,t,n){let r=e;return!t&&(r==="required"||typeof r=="function")?{functions:[],functionCall:void 0}:o?{functions:o.map(i=>"toFunction"in i?i.toFunction():i).flat(),functionCall:r}:{functions:[],functionCall:r}}function nf(o){let e=0,t=!1,n=!1,r=!1,s=!1,i=[];for(let a=0;a<o.length;a++){let c=o[a];if(n){n=!1;continue}if(c==="\\"){n=!0;continue}if(c==='"'){t=!t;continue}t||(c==="{"?(i.push("{"),e++):c==="["?(i.push("["),e++):c==="}"?i.length>0&&i[i.length-1]==="{"&&(i.pop(),e--):c==="]"&&i.length>0&&i[i.length-1]==="["&&(i.pop(),e--))}if(i.length>0){let a=i[i.length-1];r=a==="[",s=a==="{"}return{nestingLevel:e,inString:t,inArray:r,inObject:s}}function dp(o){if(!o.trim())return{parsed:null,partialMarker:null};try{return{parsed:JSON.parse(o),partialMarker:null}}catch{}let e=nf(o),t=rf(o);try{return{parsed:JSON.parse(t),partialMarker:e}}catch{return{parsed:null,partialMarker:e}}}function rf(o){let e=o.trim();for(e.endsWith(",")&&(e=e.slice(0,-1)),e.match(/,\s*"[^"]*"\s*:\s*$/)?e=e.replace(/,\s*"[^"]*"\s*:\s*$/,""):e.match(/\{\s*"[^"]*"\s*:\s*$/)&&(e=e.replace(/"[^"]*"\s*:\s*$/,""));e.match(/[0-9][eE.+-]$/)||e.match(/[eE][+-]$/);)e=e.slice(0,-1);e=e.replace(/,(\s*[}\]])/g,"$1"),e.match(/t(r(u(e)?)?)?$/)&&!e.endsWith('"')&&!e.endsWith("true")&&e.match(/[:[,]\s*t(r(u(e)?)?)?$/)&&(e=e.replace(/t(r(u(e)?)?)?$/,"true")),e.match(/f(a(l(s(e)?)?)?)?$/)&&!e.endsWith('"')&&!e.endsWith("false")&&e.match(/[:[,]\s*f(a(l(s(e)?)?)?)?$/)&&(e=e.replace(/f(a(l(s(e)?)?)?)?$/,"false")),e.match(/n(u(l(l)?)?)?$/)&&!e.endsWith('"')&&!e.endsWith("null")&&e.match(/[:[,]\s*n(u(l(l)?)?)?$/)&&(e=e.replace(/n(u(l(l)?)?)?$/,"null"));let t=[],n=!1,r=!1;for(let s=0;s<e.length;s++){let i=e[s];if(r){r=!1;continue}if(i==="\\"){r=!0;continue}if(i==='"'){n=!n;continue}n||(i==="{"?t.push("}"):i==="["?t.push("]"):i==="}"?t.length>0&&t[t.length-1]==="}"&&t.pop():i==="]"&&t.length>0&&t[t.length-1]==="]"&&t.pop())}for(r&&(e=e.slice(0,-1)),n&&(e+='"'),t.length>0&&t[t.length-1]==="}"&&e.match(/,\s*"[^"]*"\s*$/)&&(e=e.replace(/,\s*"[^"]*"\s*$/,""));t.length>0;)e+=t.pop();return e}async function*mp({res:o,usage:e,states:t,debug:n,stepContext:r,...s}){let i=(s.ai.getFeatures().functionCot??!1)&&s.functions!==void 0&&s.functions.length>0,a,c=[],u=o.getReader();try{for(;;){let{done:l,value:p}=await u.read();if(l)break;let d=p;d.modelUsage&&(a=d.modelUsage);for(let g of d.results){if(Array.isArray(g.citations))for(let f of g.citations)f?.url&&c.push({url:f.url,title:f.title,description:f.description,license:f.license,publicationDate:f.publicationDate,snippet:f.snippet});if((!g.content||g.content==="")&&(!g.thought||g.thought==="")&&(!g.thoughtBlocks||g.thoughtBlocks.length===0)&&(!g.functionCalls||g.functionCalls.length===0))continue;let m=t.find(f=>f.index===g.index);if(!m)throw new Error(`No state found for result (index: ${g.index})`);yield*of({...s,result:g,skipEarlyFail:i,state:m,debug:n})}}}finally{u.releaseLock()}for(let l of t)yield*sf({...s,state:l,debug:n,stepContext:r});if(a){if(c.length){let l=Array.from(new Map(c.filter(p=>p.url).map(p=>[p.url,p])).values());a.citations=l}if(e.push(a),n&&s.logger){let l=structuredClone(a);delete l.citations,s.debugPromptMetrics&&(l.systemPromptCharacters=s.debugPromptMetrics.systemPromptCharacters,l.exampleChatContextCharacters=s.debugPromptMetrics.exampleChatContextCharacters,l.mutableChatContextCharacters=s.debugPromptMetrics.mutableChatContextCharacters,l.chatContextCharacters=s.debugPromptMetrics.chatContextCharacters,l.totalPromptCharacters=s.debugPromptMetrics.totalPromptCharacters);let p=s.ai.getEstimatedCost(a);p>0&&(l.estimatedCost=p),s.logger({name:"ChatResponseUsage",value:l}),a.citations&&a.citations.length>0&&s.logger({name:"ChatResponseCitations",value:a.citations})}}}async function*of({result:o,mem:e,sessionId:t,strictMode:n,skipEarlyFail:r,treatAllFieldsOptional:s,state:i,signature:a,streamingFieldProcessors:c,thoughtFieldName:u,streamingAsserts:l,asserts:p}){if(o.thought&&o.thought.length>0&&(i.values[u]=(i.values[u]??"")+o.thought,yield{index:o.index,delta:{[u]:o.thought}}),o.functionCalls&&o.functionCalls.length>0)Wo(i.functionCalls,o.functionCalls),e.updateResult({name:o.name,content:o.content,functionCalls:i.functionCalls,thoughtBlocks:o.thoughtBlocks,delta:o.functionCalls?.[0]?.function?.params,index:o.index},t);else if(o.content&&o.content.length>0){i.content+=o.content,e.updateResult({name:o.name,content:i.content,thoughtBlocks:o.thoughtBlocks,delta:o.content,index:o.index},t);let d=a.getOutputFields();if(a.hasComplexFields()){let{parsed:f,partialMarker:h}=dp(i.content);if(f&&typeof f=="object"){let x={},A={};for(let y of Object.keys(f))if(d.some(C=>C.name===y)){let C=f[y],R=i.values[y];if(Array.isArray(C)&&C.length>0&&af(C,h)&&(C=C.slice(0,-1)),A[y]=C,typeof C=="string"&&typeof R=="string"&&C.startsWith(R)){let I=C.slice(R.length);I&&(x[y]=I)}else Array.isArray(C)&&Array.isArray(R)?C.length>R.length&&(x[y]=C.slice(R.length)):JSON.stringify(C)!==JSON.stringify(R)&&(Array.isArray(C)||(x[y]=C))}try{ir(a,A,{allowMissingRequired:!0})}catch{}Object.assign(i.values,A),Object.keys(x).length>0&&(yield{index:o.index,delta:x});return}}if(Ba(a,i.values,i.xstate,i.content,{strictMode:n,skipEarlyFail:r,treatAllFieldsOptional:s}))return;l.length!==0&&await Ta(l,i.xstate,i.content),c.length!==0&&await qa(c,i.content,i.xstate,e,i.values,t),yield*za(a,i.content,i.values,i.xstate,o.index),await rr(p,i.values)}else o.thought&&o.thought.length>0?e.updateResult({name:o.name,content:i.content,delta:"",index:o.index,thought:o.thought,thoughtBlocks:o.thoughtBlocks},t):o.thoughtBlocks&&o.thoughtBlocks.length>0&&e.updateResult({name:o.name,content:i.content,delta:"",index:o.index,thoughtBlocks:o.thoughtBlocks},t);if(o.finishReason==="length")throw new Error(`Max tokens reached before completion
|
|
227
227
|
Content: ${i.content}`)}async function*sf({state:o,signature:e,ai:t,model:n,functions:r,mem:s,sessionId:i,traceId:a,span:c,strictMode:u,excludeContentFromTrace:l,streamingAsserts:p,asserts:d,fieldProcessors:g,streamingFieldProcessors:m,functionResultFormatter:f,signatureToolCallingManager:h,logger:x,debug:A,stopFunctionNames:y,stepContext:C,abortSignal:R}){let I=h?void 0:Ha(t,o.functionCalls,o.values,n);if(I){if(!r)throw new Error("Functions are not defined");let M=await Ls({ai:t,functionList:r,functionCalls:I,mem:s,sessionId:i,traceId:a,span:c,index:o.index,excludeContentFromTrace:l,functionResultFormatter:f,logger:x,debug:A,stopFunctionNames:y,step:C,abortSignal:R});o.functionsExecuted=new Set([...o.functionsExecuted,...M]),o.functionCalls=[]}else{let M=e.getOutputFields(),F=e.hasComplexFields(),P=!1;if(F)try{let N=JSON.parse(o.content),T={};for(let E of Object.keys(N))if(M.some(O=>O.name===E)){let O=N[E],S=o.values[E];if(typeof O=="string"&&typeof S=="string"&&O.startsWith(S)){let k=O.slice(S.length);k&&(T[E]=k)}else Array.isArray(O)&&Array.isArray(S)?O.length>S.length&&(T[E]=O.slice(S.length)):JSON.stringify(O)!==JSON.stringify(S)&&(Array.isArray(O)||(T[E]=O))}try{ir(e,T,{allowMissingRequired:!0})}catch(E){let O=(E.message||"").toLowerCase();if(O.includes("at least")||O.includes("at most")||O.includes("must match pattern")||O.includes("invalid url")||O.includes("required")||O.includes("missing")||O.includes("valid email")||O.includes("number must be"))throw E}for(let E of Object.keys(N))M.some(O=>O.name===E)&&(o.values[E]=N[E]);yield{index:o.index,delta:T},P=!0}catch(N){let T=(N.message||"").toLowerCase();if(T.includes("at least")||T.includes("at most")||T.includes("must match pattern")||T.includes("invalid url")||T.includes("required")||T.includes("missing")||T.includes("valid email")||T.includes("number must be"))throw N}if(!P){let N=h!==void 0;ja(e,o.values,o.xstate,o.content,{strictMode:u,treatAllFieldsOptional:N,deferRequiredCheckForStreaming:!0,forceFinalize:!0})}if(h){let N=await h.processResults(o.values);if(N&&N.length>0){if(!r)throw new Error("Functions are not defined");let T=await Ls({ai:t,functionList:r,functionCalls:N,mem:s,sessionId:i,traceId:a,span:c,index:o.index,excludeContentFromTrace:l,functionResultFormatter:f,logger:x,debug:A,stopFunctionNames:y,step:C,abortSignal:R});o.functionsExecuted=new Set([...o.functionsExecuted,...T]),s.updateResult({name:void 0,content:o.content,functionCalls:N.map(E=>({id:E.id,type:"function",function:{name:E.name,params:E.args}})),index:o.index},i);return}}await Ta(p,o.xstate,o.content,!0),await rr(d,o.values),g.length&&await io(g,o.values,s,i),m.length!==0&&await qa(m,o.content,o.xstate,s,o.values,i,!0),yield*za(e,o.content,o.values,o.xstate,o.index)}}async function*gp({ai:o,res:e,mem:t,sessionId:n,traceId:r,functions:s,span:i,strictMode:a,states:c,usage:u,excludeContentFromTrace:l,asserts:p,fieldProcessors:d,thoughtFieldName:g,signature:m,debugPromptMetrics:f,functionResultFormatter:h,logger:x,debug:A,signatureToolCallingManager:y,stopFunctionNames:C,disableMemoryCleanup:R,stepContext:I,abortSignal:M}){let F=e.results??[],P=y!==void 0;t.addResponse(F,n);let N=[];for(let S of F)if(Array.isArray(S?.citations))for(let k of S.citations)k?.url&&N.push({url:k.url,title:k.title,description:k.description,license:k.license,publicationDate:k.publicationDate,snippet:k.snippet});for(let S of F){let k=c[S.index];if(!k)throw new Error(`No state found for result (index: ${S.index})`);if(e.modelUsage){let _=Array.from(new Map(N.filter(B=>B.url).map(B=>[B.url,B])).values()),$={...e.modelUsage,..._.length?{citations:_}:{}};if(u.push($),A&&x){let B=structuredClone($);delete B.citations;let U=B;f&&(U.systemPromptCharacters=f.systemPromptCharacters,U.exampleChatContextCharacters=f.exampleChatContextCharacters,U.mutableChatContextCharacters=f.mutableChatContextCharacters,U.chatContextCharacters=f.chatContextCharacters,U.totalPromptCharacters=f.totalPromptCharacters);let ee=o.getEstimatedCost(e.modelUsage);ee>0&&(U.estimatedCost=ee),x({name:"ChatResponseUsage",value:U}),$.citations&&$.citations.length>0&&x({name:"ChatResponseCitations",value:$.citations})}}if(y&&S.content){S.thought&&S.thought.length>0&&(k.values[g]=S.thought),Fs(m,k.values,S.content,{strictMode:a,treatAllFieldsOptional:P});let $=(await y.processResults(k.values))?.map(B=>({id:B.id,type:"function",function:{name:B.name,params:B.args}}));$&&$.length>0&&t.updateResult({name:S.name,content:S.content,functionCalls:$,index:S.index},n)}if(S.thought&&S.thought.length>0&&(k.values[g]=S.thought),S.functionCalls?.length){let _=Ha(o,S.functionCalls,k.values);if(_&&_.length>0){if(!s)throw new Error("Functions are not defined");let $;try{$=await Ls({ai:o,functionList:s,functionCalls:_,mem:t,sessionId:n,traceId:r,span:i,excludeContentFromTrace:l,index:S.index,functionResultFormatter:h,logger:x,debug:A,stopFunctionNames:C,step:I,abortSignal:M})}catch(B){throw t.addRequest([{role:"user",content:"The previous tool call failed. Fix arguments and try again, ensuring required fields match schema."}],n),t.addTag("correction",n),B}k.functionsExecuted=new Set([...k.functionsExecuted,...$])}}else if(S.content){let _=m.getOutputFields();if(m.hasComplexFields())try{let B=JSON.parse(S.content),U={};for(let ee of Object.keys(B))_.some(D=>D.name===ee)&&(U[ee]=B[ee]);ir(m,U),Object.assign(k.values,U)}catch(B){let U=B instanceof SyntaxError;if((B.name?.includes("ValidationError")||B.name?.includes("Error"))&&!U){let D=(B.message||"").toLowerCase();if(D.includes("at least")||D.includes("at most")||D.includes("must match pattern")||D.includes("invalid url")||D.includes("required")||D.includes("missing")||D.includes("valid email")||D.includes("number must be"))throw B}if(U)Fs(m,k.values,S.content,{strictMode:a,treatAllFieldsOptional:P});else throw B}else Fs(m,k.values,S.content,{strictMode:a,treatAllFieldsOptional:P})}if(await rr(p,k.values),R||(t.removeByTag("correction",n),t.removeByTag("error",n)),d.length&&await io(d,k.values,t,n),S.finishReason==="length")throw new Error(`Max tokens reached before completion
|
|
228
228
|
Content: ${S.content}`)}let T=c.map(S=>S.values);for(let S of T)for(let k of m.getOutputFields())k.isInternal&&delete S[k.name];let E=m.getOutputFields(),O=T.map((S,k)=>{let _={};for(let $ of E)$.isInternal||(_[$.name]=S[$.name]);return S[g]!==void 0&&(_[g]=S[g]),{index:k,delta:_}});for(let S of O)yield S}function af(o,e){return e?!!(e.nestingLevel>0||e.inArray||e.inObject):!1}function fp(o,e,t,n){let r=o.getLast(n);if(!r)return!0;for(let[s,i]of t.entries()){let a=e?Array.from(e).some(p=>i.functionsExecuted.has(p)):!1;if(!r.chat[s])throw new Error(`No chat message found for result (index: ${s})`);let u=r.role==="function",l=r.tags?r.tags.some(p=>p==="processor"):!1;if(u&&e&&a||!(u||l))return!1}return!0}var ar=class{reg;constructor(){this.reg=new Set}register(e){this.reg.add(e)}*[Symbol.iterator](){let e=Array.from(this.reg);for(let t=0;t<e.length;t++)yield e[t]}};var Ce=class extends Error{constructor(t,n,r,s){super(t);this.position=n;this.context=r;this.suggestion=s;this.name="SignatureValidationError"}},Wa=class{input;position;currentFieldName=null;currentSection="description";constructor(e){if(this.input=e.trim(),this.position=0,!this.input)throw new Ce("Empty signature provided",0,"",'A signature must contain at least input and output fields separated by "->". Example: "userQuery:string -> aiResponse:string"')}parse(){try{this.skipWhitespace();let e=this.parseParsedString();this.skipWhitespace(),this.currentSection="inputs";let t=this.parseFieldList(this.parseInputField.bind(this),"input");if(this.skipWhitespace(),this.position>=this.input.length)throw new Ce("Incomplete signature: Missing output section",this.position,this.getErrorContext(),'Add "->" followed by output fields. Example: "-> responseText:string"');if(this.expectArrow(),this.skipWhitespace(),this.position>=this.input.length)throw new Ce('Incomplete signature: No output fields specified after "->"',this.position,this.getErrorContext(),'Add at least one output field. Example: "-> responseText:string"');this.currentSection="outputs";let n=this.parseFieldList(this.parseOutputField.bind(this),"output");if(this.skipWhitespace(),this.position<this.input.length){let r=this.input.slice(this.position);throw new Ce(`Unexpected content after signature: "${r}"`,this.position,this.getErrorContext(),"Remove any extra content after the output fields")}return this.validateParsedSignature({desc:e?.trim(),inputs:t,outputs:n}),{desc:e?.trim(),inputs:t,outputs:n}}catch(e){if(e instanceof Ce)throw e;let t=e instanceof Error?e.message:"Unknown error";throw new Ce(t,this.position,this.getErrorContext())}}validateParsedSignature(e){let t=new Set;for(let r of e.inputs){if(t.has(r.name))throw new Ce(`Duplicate input field name: "${r.name}"`,0,"","Each field name must be unique within the signature");t.add(r.name)}let n=new Set;for(let r of e.outputs){if(n.has(r.name))throw new Ce(`Duplicate output field name: "${r.name}"`,0,"","Each field name must be unique within the signature");n.add(r.name)}for(let r of e.outputs)if(t.has(r.name))throw new Ce(`Field name "${r.name}" appears in both inputs and outputs`,0,"","Use different names for input and output fields to avoid confusion");if(e.inputs.length===0)throw new Ce("Signature must have at least one input field",0,"",'Add an input field before "->". Example: "userInput:string -> ..."');if(e.outputs.length===0)throw new Ce("Signature must have at least one output field",0,"",'Add an output field after "->". Example: "... -> responseText:string"')}getErrorContext(){let e=Math.max(0,this.position-25),t=Math.min(this.input.length,this.position+25),n=this.input.slice(e,this.position),r=this.input.slice(this.position,t),s=`${" ".repeat(n.length)}^`;return[`Position ${this.position} in signature:`,`"${n}${r}"`,` ${s}`].join(`
|
|
229
|
-
`)}parseFieldList(e,t){let n=[];if(this.skipWhitespace(),this.position>=this.input.length)throw new Ce(`Empty ${t} section: Expected at least one field`,this.position,this.getErrorContext(),`Add a ${t} field. Example: ${t==="input"?"userInput:string":"responseText:string"}`);try{n.push(e())}catch(r){throw r instanceof Ce?r:new Ce(`Invalid first ${t} field: ${r instanceof Error?r.message:"Unknown error"}`,this.position,this.getErrorContext())}for(this.skipWhitespace();this.position<this.input.length&&!(this.input[this.position]==="-"&&this.position+1<this.input.length&&this.input[this.position+1]===">");)if(this.match(",")){if(this.skipWhitespace(),this.position>=this.input.length)throw new Ce(`Unexpected end of input after comma in ${t} section`,this.position,this.getErrorContext(),`Add another ${t} field after the comma`);try{n.push(e())}catch(r){throw r instanceof Ce?r:new Ce(`Invalid ${t} field after comma: ${r instanceof Error?r.message:"Unknown error"}`,this.position,this.getErrorContext())}this.skipWhitespace()}else break;return n}parseInputField(){this.skipWhitespace();let e=this.parseParsedIdentifier();this.currentFieldName=e,this.validateFieldName(e,"input");let t;for(;;){if(this.match("?")){t=!0;continue}if(this.match("!"))throw new Ce(`Input field "${e}" cannot use the internal marker "!"`,this.position-1,this.getErrorContext(),"Internal markers (!) are only allowed on output fields");break}let n;if(this.skipWhitespace(),this.match(":")){if(this.skipWhitespace(),/^class\b/.test(this.input.slice(this.position)))throw new Ce(`Input field "${e}" cannot use the "class" type`,this.position,this.getErrorContext(),'Class types are only allowed on output fields. Use "string" type for input classifications');try{let s=this.parseTypeNotClass(),i=this.match("[]");n={name:s,isArray:i}}catch(s){throw s instanceof Ce?s:new Ce(`Input field "${e}": ${s instanceof Error?s.message:"Unknown error"}`,this.position,this.getErrorContext())}}this.skipWhitespace();let r=this.parseParsedString();return{name:e,desc:r?.trim(),type:n,isOptional:t}}parseOutputField(){this.skipWhitespace();let e=this.parseParsedIdentifier();this.currentFieldName=e,this.validateFieldName(e,"output");let t=!1,n=!1;for(;;){if(this.match("?")){t=!0;continue}if(this.match("!")){n=!0;continue}break}let r;if(this.skipWhitespace(),this.match(":"))if(this.skipWhitespace(),this.match("class")){let i=this.match("[]");this.skipWhitespace();let a=this.parseParsedString();if(!a)throw new Ce(`Output field "${e}": Missing class options after "class" type`,this.position,this.getErrorContext(),'Add class names in quotes. Example: class "positive, negative, neutral"');let c=a.split(/[,|]/).map(u=>u.trim()).filter(u=>u.length>0);if(c.length===0)throw new Ce(`Output field "${e}": Empty class list provided`,this.position,this.getErrorContext(),'Provide at least one class option. Example: "positive, negative"');r={name:"class",isArray:i,options:c}}else try{let i=this.parseTypeNotClass(),a=this.match("[]");if(r={name:i,isArray:a},i==="image"&&a)throw new Ce(`Output field "${e}": Arrays of images are not supported`,this.position,this.getErrorContext(),'Use a single image type instead: "image"');if(i==="audio"&&a)throw new Ce(`Output field "${e}": Arrays of audio are not supported`,this.position,this.getErrorContext(),'Use a single audio type instead: "audio"');if(i==="image")throw new Ce(`Output field "${e}": Image type is not supported in output fields`,this.position,this.getErrorContext(),"Image types can only be used in input fields");if(i==="audio")throw new Ce(`Output field "${e}": Audio type is not supported in output fields`,this.position,this.getErrorContext(),"Audio types can only be used in input fields")}catch(i){throw i instanceof Ce?i:new Ce(`Output field "${e}": ${i instanceof Error?i.message:"Unknown error"}`,this.position,this.getErrorContext())}this.skipWhitespace();let s=this.parseParsedString();return{name:e,desc:s?.trim(),type:r,isOptional:t,isInternal:n}}validateFieldName(e,t){if(ke.signatureStrict&&["text","object","image","string","number","boolean","json","array","datetime","date","time","type","class","input","output","data","value","result","response","request","item","element"].includes(e.toLowerCase())){let i=t==="input"?["userInput","questionText","documentContent","messageText"]:["responseText","analysisResult","categoryType","summaryText"];throw new Ce(`Field name "${e}" is too generic`,this.position,this.getErrorContext(),`Use a more descriptive name. Examples: ${i.join(", ")}`)}let n=/^[a-z][a-zA-Z0-9]*$/,r=/^[a-z]+(_[a-z0-9]+)*$/;if(!n.test(e)&&!r.test(e))throw new Ce(`Invalid field name "${e}"`,this.position,this.getErrorContext(),'Field names must be in camelCase (e.g., "userInput") or snake_case (e.g., "user_input")');if(e.length<2)throw new Ce(`Field name "${e}" is too short`,this.position,this.getErrorContext(),"Field names must be at least 2 characters long");if(e.length>50)throw new Ce(`Field name "${e}" is too long (${e.length} characters)`,this.position,this.getErrorContext(),"Field names should be 50 characters or less")}parseTypeNotClass(){let e=["string","number","boolean","json","image","audio","file","url","datetime","date","code","object"],t=e.find(n=>this.match(n));if(!t){let n=this.input.slice(this.position).match(/^\w+/)?.[0]||"",r=this.suggestType(n),s=`Invalid type "${n||"empty"}"`,i=r?`. Did you mean "${r}"?`:"",a=`${s}${i}`;throw new Ce(a,this.position,this.getErrorContext(),`Expected one of: ${e.join(", ")}`)}return t}suggestType(e){return{str:"string",text:"string",int:"number",integer:"number",float:"number",double:"number",bool:"boolean",object:"json",dict:"json",timestamp:"datetime",time:"datetime",img:"image",picture:"image",sound:"audio",voice:"audio",classification:"class",category:"class"}[e.toLowerCase()]||null}parseParsedIdentifier(){this.skipWhitespace();let e=/^[a-zA-Z_][a-zA-Z_0-9]*/.exec(this.input.slice(this.position));if(e)return this.position+=e[0].length,e[0];let t=/^\S+/.exec(this.input.slice(this.position)),n=t?t[0]:"";throw n===""?new Ce("Expected field name but found end of input",this.position,this.getErrorContext(),"Add a field name. Field names must start with a letter or underscore"):/^\d/.test(n)?new Ce(`Invalid field name "${n}" - cannot start with a number`,this.position,this.getErrorContext(),'Field names must start with a letter or underscore. Example: "userInput" or "_internal"'):new Ce(`Invalid field name "${n}"`,this.position,this.getErrorContext(),"Field names must start with a letter or underscore and contain only letters, numbers, or underscores")}parseParsedString(){let e=["'",'"'];for(let t of e)if(this.match(t)){let n="",r=!1,s=this.position-1;for(;this.position<this.input.length;){let a=this.input[this.position];if(this.position++,r)n+=a,r=!1;else if(a==="\\")r=!0;else{if(a===t)return n;n+=a}}let i=this.input.slice(s,Math.min(this.position,s+20));throw new Ce(`Unterminated string starting at position ${s}`,s,this.getErrorContext(),`Add closing ${t} to complete the string: ${i}${t}`)}}skipWhitespace(){let e=/^[\s\t\r\n]+/.exec(this.input.slice(this.position));e&&(this.position+=e[0].length)}match(e){let t;if(typeof e=="string"){if(this.input.startsWith(e,this.position))return this.position+=e.length,!0}else if(t=e.exec(this.input.slice(this.position)),t)return this.position+=t[0].length,!0;return!1}expectArrow(){if(!this.match("->")){let e=this.input.slice(this.position,this.position+10),t=e.includes(">")?'Use "->" (dash followed by greater-than)':e.includes("-")?'Add ">" after the dash':'Add "->" to separate input and output fields';throw new Ce(`Expected "->" but found "${e}..."`,this.position,this.getErrorContext(),t)}}};function hp(o){return new Wa(o).parse()}var lo=class{inputFields=[];outputFields=[];desc;input(e,t,n=!1){let r={name:e,type:{name:t.type,isArray:t.isArray||void 0,options:t.options?[...t.options]:void 0,minLength:t.minLength,maxLength:t.maxLength,minimum:t.minimum,maximum:t.maximum,pattern:t.pattern,patternDescription:t.patternDescription,format:t.format,description:t.itemDescription,fields:t.fields?Object.fromEntries(Object.entries(t.fields).map(([s,i])=>[s,Ds(i)])):void 0},description:t.description,isOptional:t.isOptional||void 0,isInternal:t.isInternal||void 0,isCached:t.isCached||void 0};return n?this.inputFields.unshift(r):this.inputFields.push(r),this}output(e,t,n=!1){let r={name:e,type:{name:t.type,isArray:t.isArray||void 0,options:t.options?[...t.options]:void 0,minLength:t.minLength,maxLength:t.maxLength,minimum:t.minimum,maximum:t.maximum,pattern:t.pattern,patternDescription:t.patternDescription,format:t.format,description:t.itemDescription,fields:t.fields?Object.fromEntries(Object.entries(t.fields).map(([s,i])=>[s,Ds(i)])):void 0},description:t.description,isOptional:t.isOptional||void 0,isInternal:t.isInternal||void 0};return n?this.outputFields.unshift(r):this.outputFields.push(r),this}addInputFields(e){for(let t of e)this.inputFields.push(t);return this}addOutputFields(e){for(let t of e)this.outputFields.push(t);return this}description(e){return this.desc=e,this}useStructured(){return this._useStructuredOutputs=!0,this}build(){let e={description:this.desc,inputs:this.inputFields,outputs:this.outputFields},t=new Ve(e);return this._useStructuredOutputs&&(t._forceComplexFields=!0,t._hasComplexFields=void 0),t}},et=class o{type;isArray;options;description;isOptional;isInternal;isCached;fields;minLength;maxLength;minimum;maximum;pattern;patternDescription;format;itemDescription;constructor(e){this.type=e.type,this.isArray=e.isArray,this.options=e.options,this.description=e.description,this.itemDescription=e.itemDescription,this.isOptional=e.isOptional,this.isInternal=e.isInternal,this.isCached=e.isCached,this.fields=e.fields,this.minLength=e.minLength,this.maxLength=e.maxLength,this.minimum=e.minimum,this.maximum=e.maximum,this.pattern=e.pattern,this.patternDescription=e.patternDescription,this.format=e.format}optional(){return new o({...this,isOptional:!0})}array(e){return new o({...this,isArray:!0,description:e||this.description,itemDescription:e?this.description:void 0})}internal(){return new o({...this,isInternal:!0})}cache(){return new o({...this,isCached:!0})}min(e){return this.type==="string"?new o({...this,minLength:e}):this.type==="number"?new o({...this,minimum:e}):this}max(e){return this.type==="string"?new o({...this,maxLength:e}):this.type==="number"?new o({...this,maximum:e}):this}email(){return this.type==="string"?new o({...this,format:"email"}):this}url(){return this.type==="string"?new o({...this,format:"uri"}):this}regex(e,t){return this.type==="string"?new o({...this,pattern:e,patternDescription:t}):this}date(){return this.type==="string"?new o({...this,format:"date"}):this}datetime(){return this.type==="string"?new o({...this,format:"date-time"}):this}},V=Object.assign(()=>new lo,{string:o=>new et({type:"string",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),number:o=>new et({type:"number",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),boolean:o=>new et({type:"boolean",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),json:o=>new et({type:"json",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),datetime:o=>new et({type:"datetime",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),date:o=>new et({type:"date",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),class:(o,e)=>new et({type:"class",isArray:!1,options:o,description:e,isOptional:!1,isInternal:!1,isCached:!1}),image:o=>new et({type:"image",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),audio:o=>new et({type:"audio",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),file:o=>new et({type:"file",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),url:o=>new et({type:"url",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),email:o=>new et({type:"string",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1,format:"email"}),code:(o,e)=>new et({type:"code",isArray:!1,description:e||o,isOptional:!1,isInternal:!1,isCached:!1}),object:(o,e)=>new et({type:"object",isArray:!1,fields:o,description:e,isOptional:!1,isInternal:!1,isCached:!1})});function Ds(o){return{type:o.type,isArray:o.isArray,options:o.options,description:o.description,isOptional:o.isOptional,isInternal:o.isInternal,minLength:o.minLength,maxLength:o.maxLength,minimum:o.minimum,maximum:o.maximum,pattern:o.pattern,patternDescription:o.patternDescription,format:o.format,fields:o.fields?Object.fromEntries(Object.entries(o.fields).map(([e,t])=>[e,Ds(t)])):void 0}}function $s(o){return{type:{name:o.type,isArray:o.isArray,options:o.options?[...o.options]:void 0,fields:o.fields},description:o.description,isOptional:o.isOptional,isInternal:o.isInternal}}function Va(o,e){return{name:o,type:{name:e.type,isArray:e.isArray||void 0,options:e.options?[...e.options]:void 0,minLength:e.minLength,maxLength:e.maxLength,minimum:e.minimum,maximum:e.maximum,pattern:e.pattern,patternDescription:e.patternDescription,format:e.format,description:e.itemDescription,fields:e.fields?Object.fromEntries(Object.entries(e.fields).map(([t,n])=>[t,Ds(n)])):void 0},description:e.description,isOptional:e.isOptional||void 0,isInternal:e.isInternal||void 0,isCached:e.isCached||void 0}}function xp(o){return o.length===0?{type:"object",properties:{}}:Jt(o,"Schema")}function cf(o){let e=Va("__value",o);return Jt([e],"Schema").properties?.__value??{type:"json"}}var Ka=class{name;desc;ns;argFields=[];returnFields=[];returnFieldType;returnMode;fnHandler;fnExamples=[];constructor(e){this.name=e}description(e){return this.desc=e,this}namespace(e){return this.ns=e,this}arg(e,t){return this.argFields.push(Va(e,t)),this}args(e,t){return this.arg(e,t)}returns(e){if(this.returnMode==="fields")throw new Error("Cannot use fn().returns(...) after fn().returnsField(...); choose exactly one return schema style");return this.returnMode="single",this.returnFieldType=e,this}returnsField(e,t){if(this.returnMode==="single")throw new Error("Cannot use fn().returnsField(...) after fn().returns(...); choose exactly one return schema style");return this.returnMode="fields",this.returnFields.push(Va(e,t)),this}example(e){return this.fnExamples.push(e),this}examples(e){return this.fnExamples.push(...e),this}handler(e){return this.fnHandler=e,this}build(){let e=this.name.trim(),t=this.desc?.trim(),n=this.ns?.trim();if(!e)throw new Error("fn() requires a non-empty function name");if(!t)throw new Error(`Function "${e}" must define a non-empty description`);if(!this.fnHandler)throw new Error(`Function "${e}" must define a handler`);if(this.fnExamples.some(s=>!s.code.trim()))throw new Error(`Function "${e}" examples must define non-empty code`);return{name:e,description:t,...n?{namespace:n}:{},parameters:xp(this.argFields),...this.returnMode==="single"&&this.returnFieldType?{returns:cf(this.returnFieldType)}:this.returnMode==="fields"?{returns:xp(this.returnFields)}:{},...this.fnExamples.length>0?{examples:this.fnExamples.map(s=>({...s}))}:{},func:this.fnHandler}}},bp=o=>new Ka(o),ue=class extends Error{constructor(t,n,r){super(t);this.fieldName=n;this.suggestion=r;this.name="AxSignatureValidationError"}},Ve=class o{description;inputFields;outputFields;sigHash;sigString;validatedAtHash;constructor(e){if(!e){this.inputFields=[],this.outputFields=[],this.sigHash="",this.sigString="";return}if(typeof e=="string"){let t;try{t=hp(e)}catch(n){if(n instanceof Error){let r="suggestion"in n&&typeof n.suggestion=="string"?n.suggestion:'Please check the signature format. Example: "userInput:string -> responseText:string"';throw new ue(`Invalid Signature: ${n.message}`,void 0,r)}throw new ue(`Invalid Signature: ${e}`,void 0,'Please check the signature format. Example: "userInput:string -> responseText:string"')}this.description=t.desc,this.inputFields=t.inputs.map(n=>this.parseParsedField(n)),this.outputFields=t.outputs.map(n=>this.parseParsedField(n)),[this.sigHash,this.sigString]=this.updateHash()}else if(e instanceof o)this.description=e.getDescription(),this.inputFields=structuredClone(e.getInputFields()),this.outputFields=structuredClone(e.getOutputFields()),this.sigHash=e.hash(),this.sigString=e.toString(),e.validatedAtHash===this.sigHash&&(this.validatedAtHash=this.sigHash),this._forceComplexFields=e._forceComplexFields,this._hasComplexFields=e._hasComplexFields;else if(typeof e=="object"&&e!==null){if(!("inputs"in e)||!("outputs"in e))throw new ue("Invalid signature object: missing inputs or outputs",void 0,'Signature object must have "inputs" and "outputs" arrays. Example: { inputs: [...], outputs: [...] }');if(!Array.isArray(e.inputs)||!Array.isArray(e.outputs))throw new ue("Invalid signature object: inputs and outputs must be arrays",void 0,'Both "inputs" and "outputs" must be arrays of AxField objects');try{this.description=e.description,this.inputFields=e.inputs.map(t=>this.parseField(t)),this.outputFields=e.outputs.map(t=>this.parseField(t)),[this.sigHash,this.sigString]=this.updateHash()}catch(t){throw t instanceof ue?t:new ue(`Failed to create signature from object: ${t instanceof Error?t.message:"Unknown error"}`,void 0,"Check that all fields in inputs and outputs arrays are valid AxField objects")}}else throw new ue("Invalid signature argument type",void 0,"Signature must be a string, another AxSignature instance, or an object with inputs and outputs arrays")}static create(e){return new o(e)}parseParsedField=e=>{if(!e.name||e.name.length===0)throw new ue("Field name is required",e.name,'Every field must have a descriptive name. Example: "userInput", "responseText"');let t=this.toTitle(e.name);return{name:e.name,title:t,description:"desc"in e?e.desc:void 0,type:e.type??{name:"string",isArray:!1},..."isInternal"in e?{isInternal:e.isInternal}:{},..."isOptional"in e?{isOptional:e.isOptional}:{}}};parseField=e=>{let t=!e.title||e.title.length===0?this.toTitle(e.name):e.title;if(e.type&&(!e.type.name||e.type.name.length===0))throw new ue("Field type name is required",e.name,"Specify a valid type. Available types: string, number, boolean, json, image, audio, file, url, date, datetime, class, code");return{...e,title:t}};setDescription=e=>{if(typeof e!="string")throw new ue("Description must be a string",void 0,"Provide a string description for the signature");this.description=e,this.invalidateValidationCache(),this.updateHashLight()};addInputField=e=>{try{let t=this.parseField(e);Gt(t,"input");for(let n of this.inputFields)if(n.name===t.name)throw new ue(`Duplicate input field name: "${t.name}"`,t.name,"Each field name must be unique within the signature");for(let n of this.outputFields)if(n.name===t.name)throw new ue(`Field name "${t.name}" appears in both inputs and outputs`,t.name,"Use different names for input and output fields to avoid confusion");this.inputFields.push(t),this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ue?t:new ue(`Failed to add input field "${e.name}": ${t instanceof Error?t.message:"Unknown error"}`,e.name)}};addOutputField=e=>{try{let t=this.parseField(e);Gt(t,"output");for(let n of this.outputFields)if(n.name===t.name)throw new ue(`Duplicate output field name: "${t.name}"`,t.name,"Each field name must be unique within the signature");for(let n of this.inputFields)if(n.name===t.name)throw new ue(`Field name "${t.name}" appears in both inputs and outputs`,t.name,"Use different names for input and output fields to avoid confusion");this.outputFields.push(t),this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ue?t:new ue(`Failed to add output field "${e.name}": ${t instanceof Error?t.message:"Unknown error"}`,e.name)}};setInputFields=e=>{if(!Array.isArray(e))throw new ue("Input fields must be an array",void 0,"Provide an array of field objects");try{let t=e.map(n=>{let r=this.parseField(n);return Gt(r,"input"),r});this.inputFields=t,this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ue?t:new ue(`Failed to set input fields: ${t instanceof Error?t.message:"Unknown error"}`)}};setOutputFields=e=>{if(!Array.isArray(e))throw new ue("Output fields must be an array",void 0,"Provide an array of field objects");try{let t=e.map(n=>{let r=this.parseField(n);return Gt(r,"output"),r});this.outputFields=t,this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ue?t:new ue(`Failed to set output fields: ${t instanceof Error?t.message:"Unknown error"}`)}};getInputFields=()=>this.inputFields;getOutputFields=()=>this.outputFields;getDescription=()=>this.description;appendInputField=(e,t)=>{let n=new o(this);return n.addInputField({name:e,...$s(t)}),n};prependInputField=(e,t)=>{let n=new o(this),r={name:e,...$s(t)},s=n.parseField(r);Gt(s,"input");for(let i of n.inputFields)if(i.name===s.name)throw new ue(`Duplicate input field name: "${s.name}"`,s.name,"Each field name must be unique within the signature");for(let i of n.outputFields)if(i.name===s.name)throw new ue(`Field name "${s.name}" appears in both inputs and outputs`,s.name,"Use different names for input and output fields to avoid confusion");return n.inputFields.unshift(s),n.invalidateValidationCache(),n.updateHashLight(),n};appendOutputField=(e,t)=>{let n=new o(this);return n.addOutputField({name:e,...$s(t)}),n};prependOutputField=(e,t)=>{let n=new o(this),r={name:e,...$s(t)},s=n.parseField(r);Gt(s,"output");for(let i of n.outputFields)if(i.name===s.name)throw new ue(`Duplicate output field name: "${s.name}"`,s.name,"Each field name must be unique within the signature");for(let i of n.inputFields)if(i.name===s.name)throw new ue(`Field name "${s.name}" appears in both inputs and outputs`,s.name,"Use different names for input and output fields to avoid confusion");return n.outputFields.unshift(s),n.invalidateValidationCache(),n.updateHashLight(),n};invalidateValidationCache=()=>{this.validatedAtHash=void 0,this._hasComplexFields=void 0};toTitle=e=>{let t=e.replace(/_/g," ");return t=t.replace(/([A-Z]|[0-9]+)/g," $1").trim(),t.charAt(0).toUpperCase()+t.slice(1)};updateHashLight=()=>{try{return this.getInputFields().forEach(e=>{Gt(e,"input")}),this.getOutputFields().forEach(e=>{Gt(e,"output")}),this.sigHash=yt("sha256").update(JSON.stringify(this.inputFields)).update(JSON.stringify(this.outputFields)).digest("hex"),this.sigString=yp(this.description,this.inputFields,this.outputFields),this._hasComplexFields=this.computeHasComplexFields(),[this.sigHash,this.sigString]}catch(e){throw e instanceof ue?e:new ue(`Signature validation failed: ${e instanceof Error?e.message:"Unknown error"}`)}};updateHash=()=>{try{return this.getInputFields().forEach(e=>{Gt(e,"input")}),this.getOutputFields().forEach(e=>{Gt(e,"output")}),this.validateSignatureConsistency(),this.sigHash=yt("sha256").update(this.description??"").update(JSON.stringify(this.inputFields)).update(JSON.stringify(this.outputFields)).digest("hex"),this.sigString=yp(this.description,this.inputFields,this.outputFields),this._hasComplexFields=this.computeHasComplexFields(),[this.sigHash,this.sigString]}catch(e){throw e instanceof ue?e:new ue(`Signature validation failed: ${e instanceof Error?e.message:"Unknown error"}`)}};validateSignatureConsistency(){let e=new Set;for(let n of this.inputFields){if(e.has(n.name))throw new ue(`Duplicate input field name: "${n.name}"`,n.name,"Each field name must be unique within the signature");e.add(n.name)}let t=new Set;for(let n of this.outputFields){if(t.has(n.name))throw new ue(`Duplicate output field name: "${n.name}"`,n.name,"Each field name must be unique within the signature");t.add(n.name)}for(let n of this.outputFields)if(e.has(n.name))throw new ue(`Field name "${n.name}" appears in both inputs and outputs`,n.name,"Use different names for input and output fields to avoid confusion");if(this.inputFields.length===0)throw new ue("Signature must have at least one input field",void 0,'Add an input field. Example: "userInput:string -> ..."');if(this.outputFields.length===0)throw new ue("Signature must have at least one output field",void 0,'Add an output field. Example: "... -> responseText:string"')}_forceComplexFields=!1;_hasComplexFields;hasComplexFields=()=>this._hasComplexFields!==void 0?this._hasComplexFields:(this._hasComplexFields=this.computeHasComplexFields(),this._hasComplexFields);computeHasComplexFields=()=>this._forceComplexFields?!0:this.outputFields.some(e=>e.type?.name==="object"||e.type?.isArray&&e.type.fields!==void 0);validate=()=>{if(this.validatedAtHash===this.sigHash)return!0;try{return this.updateHash(),this.validatedAtHash=this.sigHash,!0}catch(e){throw this.validatedAtHash=void 0,e}};hash=()=>this.sigHash;toString=()=>this.sigString;toJSON=()=>({id:this.hash(),description:this.description,inputFields:this.inputFields,outputFields:this.outputFields});toJSONSchema=()=>{let e=[...this.inputFields,...this.outputFields];return Jt(e,this.description??"Schema")};toInputJSONSchema=()=>Jt(this.inputFields,this.description??"Schema")};function Ap(o){let e=o.name;return o.isOptional&&(e+="?"),o.isInternal&&(e+="!"),o.type&&(e+=`:${o.type.name}`,o.type.isArray&&(e+="[]"),o.type.name==="class"&&o.type.options&&(e+=` "${o.type.options.join(" | ")}"`)),o.description&&o.type?.name!=="class"&&(e+=` "${o.description}"`),e}function yp(o,e,t){let n=o?`"${o}" `:"",r=e.map(Ap).join(", "),s=t.map(Ap).join(", ");return`${n}${r} -> ${s}`}function uf(o){let e=/^[a-z][a-zA-Z0-9]*$/,t=/^[a-z]+(_[a-z0-9]+)*$/;return e.test(o)||t.test(o)}function Gt(o,e){if(!o.name||o.name.length===0)throw new ue("Field name cannot be blank",o.name,"Every field must have a descriptive name");if(!uf(o.name))throw new ue(`Invalid field name '${o.name}' - must be camelCase or snake_case`,o.name,'Use camelCase (e.g., "userInput") or snake_case (e.g., "user_input")');if(ke.signatureStrict&&["text","object","image","string","number","boolean","json","array","datetime","date","time","type","class","input","output","data","value","result","response","request","item","element"].includes(o.name.toLowerCase())){let n=e==="input"?["userInput","questionText","documentContent","messageText","queryString"]:["responseText","analysisResult","categoryType","summaryText","outputData"];throw new ue(`Field name '${o.name}' is too generic`,o.name,`Use a more descriptive name. Examples for ${e} fields: ${n.join(", ")}`)}if(o.name.length<2)throw new ue(`Field name '${o.name}' is too short`,o.name,"Field names must be at least 2 characters long");if(o.name.length>50)throw new ue(`Field name '${o.name}' is too long (${o.name.length} characters)`,o.name,"Field names should be 50 characters or less");o.type&&lf(o,e)}function lf(o,e){if(!o.type)return;let{type:t}=o;if((t.name==="image"||t.name==="audio"||t.name==="file")&&e==="output")throw new ue(`${t.name} type is not supported in output fields`,o.name,`${t.name} types can only be used in input fields`);if(t.name==="class"){if(e==="input")throw new ue("Class type is not supported in input fields",o.name,'Class types are only allowed on output fields. Use "string" type for input classifications');if(!t.options||t.options.length===0)throw new ue("Class type requires options",o.name,'Provide class options. Example: class "positive, negative, neutral"');for(let r of t.options){if(!r||r.trim().length===0)throw new ue("Empty class option found",o.name,"All class options must be non-empty strings");let s=r.trim();if(s.includes(",")||s.includes("|"))throw new ue(`Invalid class option "${s}"`,o.name,"Class options cannot contain commas (,) or pipes (|) as they are used to separate options")}if(new Set(t.options.map(r=>r.trim().toLowerCase())).size!==t.options.length)throw new ue("Duplicate class options found",o.name,"Each class option must be unique (case-insensitive)")}if(t.name==="code"&&t.isArray)throw new ue("Arrays of code are not commonly supported",o.name,"Consider using a single code field or an array of strings instead");if(o.isInternal&&e==="input")throw new ue("Internal marker (!) is not allowed on input fields",o.name,"Internal markers are only allowed on output fields");t.name==="object"&&t.fields&&Ja(t.fields,o.name,e)}function Ja(o,e,t,n=1){for(let[r,s]of Object.entries(o)){let i=`${e}.${r}`;if(s.type==="image"||s.type==="audio"||s.type==="file")throw new ue(`${s.type} type is not allowed in nested object fields`,i,`Media types (image, audio, file) can only be used as top-level input fields, not within objects. Found at depth ${n}.`);s.type==="object"&&s.fields&&Ja(s.fields,i,t,n+1),s.isArray&&s.fields&&Ja(s.fields,`${i}[]`,t,n+1)}}var an=class o{signature;sigHash;examples;examplesOptions;demos;trace;usage=[];traceLabel;key;children;childNames=new Map;childCount=0;constructor(e,t){this.signature=new Ve(e),t?.description&&this.signature.setDescription(t.description),t?.traceLabel&&(this.traceLabel=t.traceLabel),e&&this.signature.validate(),this.sigHash=this.signature?.hash(),this.children=new ar,this.key={id:"root"}}getSignature(){return new Ve(this.signature)}setSignature(e){this.signature=new Ve(e),e&&this.signature.validate(),this.updateSignatureHash()}setDescription(e){this.signature.setDescription(e),this.updateSignatureHash()}updateSignatureHash(){this.sigHash=this.signature.hash()}getId(){return this.key.id}register(e,t){let n=t??`p${this.childCount}`;this.childCount++,e.setId([this.key.id,n].join(".")),this.childNames.set(e,n),this.children.register(e)}setId(e){this.key={id:e,custom:!0};for(let[t,n]of this.childNames)t.setId([e,n].join("."))}setExamples(e,t){let n=[];if("programId"in e&&e.programId===this.key.id&&(n=e.traces),Array.isArray(e)&&(n=e),n){this.examplesOptions=t;let r=this.signature,s=[...r.getInputFields(),...r.getOutputFields()];this.examples=n.map(i=>{let a={};for(let c of s){let u=i[c.name];u!==void 0&&(oo(c,u),a[c.name]=u)}return a})}}getTraces(){let e=[];this.trace&&e.push({trace:this.trace,programId:this.key.id});for(let t of Array.from(this.children)){let n=t?.getTraces();e=[...e,...n??[]]}return e}getUsage(){let e=[...this.usage??[]];for(let t of Array.from(this.children)){let n=t?.getUsage();if(n){let r=Array.isArray(n)?n:[...n.actor,...n.responder];e=[...e,...r]}}return so(e)}resetUsage(){this.usage=[];for(let e of Array.from(this.children))e?.resetUsage()}static _propagating=!1;setDemos(e,t){if(!o._propagating&&e.length>0){let u=new Set(this.namedPrograms().map(p=>p.id)),l=[...new Set(e.map(p=>p.programId))].filter(p=>!u.has(p));if(l.length>0){let p=[...u].join(", ");throw new Error(`Unknown program ID(s) in demos: ${l.join(", ")}. Valid IDs: ${p}. Use namedPrograms() to discover available IDs.`)}}let n=e.filter(u=>u.programId===this.key.id).map(u=>u.traces).flat(),r=this.signature,s=[...r.getInputFields(),...r.getOutputFields()],i=new Set(r.getInputFields().map(u=>u.name)),a=new Set(r.getOutputFields().map(u=>u.name));this.demos=n.map((u,l)=>{let p={};for(let m of s){let f=u[m.name];f!==void 0&&(oo(m,f),p[m.name]=f)}let d=Object.keys(p).some(m=>i.has(m));if(!Object.keys(p).some(m=>a.has(m)))throw new Error(`Demo trace[${l}] for '${this.key.id}' has no output field values. Expected at least one of: ${[...a].join(", ")}`);if(!d)throw new Error(`Demo trace[${l}] for '${this.key.id}' has no input field values. Expected at least one of: ${[...i].join(", ")}. Provide input context so the demo renders as a complete few-shot example.`);return p}),t?.modelConfig&&(this._optimizedModelConfig=t.modelConfig);let c=o._propagating;o._propagating=!0;try{for(let u of Array.from(this.children))u?.setDemos(e,t)}finally{o._propagating=c}}namedPrograms(){let e=[];[...this.signature.getInputFields(),...this.signature.getOutputFields()].length>0&&e.push({id:this.key.id,signature:this.signature.toString()});for(let n of Array.from(this.children))n&&"namedPrograms"in n&&typeof n.namedPrograms=="function"?e.push(...n.namedPrograms()):n&&e.push({id:n.getId()});return e}namedProgramInstances(){let e=[];[...this.signature.getInputFields(),...this.signature.getOutputFields()].length>0&&e.push({id:this.key.id,program:this,signature:this.signature.toString()});for(let n of Array.from(this.children))n&&"namedProgramInstances"in n&&typeof n.namedProgramInstances=="function"?e.push(...n.namedProgramInstances()):n&&e.push({id:n.getId(),program:n});return e}applyOptimization(e){let t=e.demos!==void 0,n=e.modelConfig!==void 0;(t||n)&&this.setDemos(e.demos??[],{modelConfig:e.modelConfig});let r=this;if(typeof r.setInstruction=="function"){let i=e.instructionMap?.[this.key.id],a=typeof i=="string"?i:e.instruction;typeof a=="string"&&a.length>0&&r.setInstruction(a)}let s={...e,...t?{demos:void 0}:{},...n?{modelConfig:void 0}:{}};for(let i of Array.from(this.children))i?.applyOptimization(s)}};var Cp={"dsp/dspy.md":`<identity>
|
|
229
|
+
`)}parseFieldList(e,t){let n=[];if(this.skipWhitespace(),this.position>=this.input.length)throw new Ce(`Empty ${t} section: Expected at least one field`,this.position,this.getErrorContext(),`Add a ${t} field. Example: ${t==="input"?"userInput:string":"responseText:string"}`);try{n.push(e())}catch(r){throw r instanceof Ce?r:new Ce(`Invalid first ${t} field: ${r instanceof Error?r.message:"Unknown error"}`,this.position,this.getErrorContext())}for(this.skipWhitespace();this.position<this.input.length&&!(this.input[this.position]==="-"&&this.position+1<this.input.length&&this.input[this.position+1]===">");)if(this.match(",")){if(this.skipWhitespace(),this.position>=this.input.length)throw new Ce(`Unexpected end of input after comma in ${t} section`,this.position,this.getErrorContext(),`Add another ${t} field after the comma`);try{n.push(e())}catch(r){throw r instanceof Ce?r:new Ce(`Invalid ${t} field after comma: ${r instanceof Error?r.message:"Unknown error"}`,this.position,this.getErrorContext())}this.skipWhitespace()}else break;return n}parseInputField(){this.skipWhitespace();let e=this.parseParsedIdentifier();this.currentFieldName=e,this.validateFieldName(e,"input");let t;for(;;){if(this.match("?")){t=!0;continue}if(this.match("!"))throw new Ce(`Input field "${e}" cannot use the internal marker "!"`,this.position-1,this.getErrorContext(),"Internal markers (!) are only allowed on output fields");break}let n;if(this.skipWhitespace(),this.match(":")){if(this.skipWhitespace(),/^class\b/.test(this.input.slice(this.position)))throw new Ce(`Input field "${e}" cannot use the "class" type`,this.position,this.getErrorContext(),'Class types are only allowed on output fields. Use "string" type for input classifications');try{let s=this.parseTypeNotClass(),i=this.match("[]");n={name:s,isArray:i}}catch(s){throw s instanceof Ce?s:new Ce(`Input field "${e}": ${s instanceof Error?s.message:"Unknown error"}`,this.position,this.getErrorContext())}}this.skipWhitespace();let r=this.parseParsedString();return{name:e,desc:r?.trim(),type:n,isOptional:t}}parseOutputField(){this.skipWhitespace();let e=this.parseParsedIdentifier();this.currentFieldName=e,this.validateFieldName(e,"output");let t=!1,n=!1;for(;;){if(this.match("?")){t=!0;continue}if(this.match("!")){n=!0;continue}break}let r;if(this.skipWhitespace(),this.match(":"))if(this.skipWhitespace(),this.match("class")){let i=this.match("[]");this.skipWhitespace();let a=this.parseParsedString();if(!a)throw new Ce(`Output field "${e}": Missing class options after "class" type`,this.position,this.getErrorContext(),'Add class names in quotes. Example: class "positive, negative, neutral"');let c=a.split(/[,|]/).map(u=>u.trim()).filter(u=>u.length>0);if(c.length===0)throw new Ce(`Output field "${e}": Empty class list provided`,this.position,this.getErrorContext(),'Provide at least one class option. Example: "positive, negative"');r={name:"class",isArray:i,options:c}}else try{let i=this.parseTypeNotClass(),a=this.match("[]");if(r={name:i,isArray:a},i==="image"&&a)throw new Ce(`Output field "${e}": Arrays of images are not supported`,this.position,this.getErrorContext(),'Use a single image type instead: "image"');if(i==="audio"&&a)throw new Ce(`Output field "${e}": Arrays of audio are not supported`,this.position,this.getErrorContext(),'Use a single audio type instead: "audio"');if(i==="image")throw new Ce(`Output field "${e}": Image type is not supported in output fields`,this.position,this.getErrorContext(),"Image types can only be used in input fields");if(i==="audio")throw new Ce(`Output field "${e}": Audio type is not supported in output fields`,this.position,this.getErrorContext(),"Audio types can only be used in input fields")}catch(i){throw i instanceof Ce?i:new Ce(`Output field "${e}": ${i instanceof Error?i.message:"Unknown error"}`,this.position,this.getErrorContext())}this.skipWhitespace();let s=this.parseParsedString();return{name:e,desc:s?.trim(),type:r,isOptional:t,isInternal:n}}validateFieldName(e,t){if(ke.signatureStrict&&["text","object","image","string","number","boolean","json","array","datetime","date","time","type","class","input","output","data","value","result","response","request","item","element"].includes(e.toLowerCase())){let i=t==="input"?["userInput","questionText","documentContent","messageText"]:["responseText","analysisResult","categoryType","summaryText"];throw new Ce(`Field name "${e}" is too generic`,this.position,this.getErrorContext(),`Use a more descriptive name. Examples: ${i.join(", ")}`)}let n=/^[a-z][a-zA-Z0-9]*$/,r=/^[a-z]+(_[a-z0-9]+)*$/;if(!n.test(e)&&!r.test(e))throw new Ce(`Invalid field name "${e}"`,this.position,this.getErrorContext(),'Field names must be in camelCase (e.g., "userInput") or snake_case (e.g., "user_input")');if(e.length<2)throw new Ce(`Field name "${e}" is too short`,this.position,this.getErrorContext(),"Field names must be at least 2 characters long");if(e.length>50)throw new Ce(`Field name "${e}" is too long (${e.length} characters)`,this.position,this.getErrorContext(),"Field names should be 50 characters or less")}parseTypeNotClass(){let e=["string","number","boolean","json","image","audio","file","url","datetime","date","code","object"],t=e.find(n=>this.match(n));if(!t){let n=this.input.slice(this.position).match(/^\w+/)?.[0]||"",r=this.suggestType(n),s=`Invalid type "${n||"empty"}"`,i=r?`. Did you mean "${r}"?`:"",a=`${s}${i}`;throw new Ce(a,this.position,this.getErrorContext(),`Expected one of: ${e.join(", ")}`)}return t}suggestType(e){return{str:"string",text:"string",int:"number",integer:"number",float:"number",double:"number",bool:"boolean",object:"json",dict:"json",timestamp:"datetime",time:"datetime",img:"image",picture:"image",sound:"audio",voice:"audio",classification:"class",category:"class"}[e.toLowerCase()]||null}parseParsedIdentifier(){this.skipWhitespace();let e=/^[a-zA-Z_][a-zA-Z_0-9]*/.exec(this.input.slice(this.position));if(e)return this.position+=e[0].length,e[0];let t=/^\S+/.exec(this.input.slice(this.position)),n=t?t[0]:"";throw n===""?new Ce("Expected field name but found end of input",this.position,this.getErrorContext(),"Add a field name. Field names must start with a letter or underscore"):/^\d/.test(n)?new Ce(`Invalid field name "${n}" - cannot start with a number`,this.position,this.getErrorContext(),'Field names must start with a letter or underscore. Example: "userInput" or "_internal"'):new Ce(`Invalid field name "${n}"`,this.position,this.getErrorContext(),"Field names must start with a letter or underscore and contain only letters, numbers, or underscores")}parseParsedString(){let e=["'",'"'];for(let t of e)if(this.match(t)){let n="",r=!1,s=this.position-1;for(;this.position<this.input.length;){let a=this.input[this.position];if(this.position++,r)n+=a,r=!1;else if(a==="\\")r=!0;else{if(a===t)return n;n+=a}}let i=this.input.slice(s,Math.min(this.position,s+20));throw new Ce(`Unterminated string starting at position ${s}`,s,this.getErrorContext(),`Add closing ${t} to complete the string: ${i}${t}`)}}skipWhitespace(){let e=/^[\s\t\r\n]+/.exec(this.input.slice(this.position));e&&(this.position+=e[0].length)}match(e){let t;if(typeof e=="string"){if(this.input.startsWith(e,this.position))return this.position+=e.length,!0}else if(t=e.exec(this.input.slice(this.position)),t)return this.position+=t[0].length,!0;return!1}expectArrow(){if(!this.match("->")){let e=this.input.slice(this.position,this.position+10),t=e.includes(">")?'Use "->" (dash followed by greater-than)':e.includes("-")?'Add ">" after the dash':'Add "->" to separate input and output fields';throw new Ce(`Expected "->" but found "${e}..."`,this.position,this.getErrorContext(),t)}}};function hp(o){return new Wa(o).parse()}var lo=class{inputFields=[];outputFields=[];desc;input(e,t,n=!1){let r={name:e,type:{name:t.type,isArray:t.isArray||void 0,options:t.options?[...t.options]:void 0,minLength:t.minLength,maxLength:t.maxLength,minimum:t.minimum,maximum:t.maximum,pattern:t.pattern,patternDescription:t.patternDescription,format:t.format,description:t.itemDescription,fields:t.fields?Object.fromEntries(Object.entries(t.fields).map(([s,i])=>[s,Ds(i)])):void 0},description:t.description,isOptional:t.isOptional||void 0,isInternal:t.isInternal||void 0,isCached:t.isCached||void 0};return n?this.inputFields.unshift(r):this.inputFields.push(r),this}output(e,t,n=!1){let r={name:e,type:{name:t.type,isArray:t.isArray||void 0,options:t.options?[...t.options]:void 0,minLength:t.minLength,maxLength:t.maxLength,minimum:t.minimum,maximum:t.maximum,pattern:t.pattern,patternDescription:t.patternDescription,format:t.format,description:t.itemDescription,fields:t.fields?Object.fromEntries(Object.entries(t.fields).map(([s,i])=>[s,Ds(i)])):void 0},description:t.description,isOptional:t.isOptional||void 0,isInternal:t.isInternal||void 0};return n?this.outputFields.unshift(r):this.outputFields.push(r),this}addInputFields(e){for(let t of e)this.inputFields.push(t);return this}addOutputFields(e){for(let t of e)this.outputFields.push(t);return this}description(e){return this.desc=e,this}useStructured(){return this._useStructuredOutputs=!0,this}build(){let e={description:this.desc,inputs:this.inputFields,outputs:this.outputFields},t=new Ve(e);return this._useStructuredOutputs&&(t._forceComplexFields=!0,t._hasComplexFields=void 0),t}},et=class o{type;isArray;options;description;isOptional;isInternal;isCached;fields;minLength;maxLength;minimum;maximum;pattern;patternDescription;format;itemDescription;constructor(e){this.type=e.type,this.isArray=e.isArray,this.options=e.options,this.description=e.description,this.itemDescription=e.itemDescription,this.isOptional=e.isOptional,this.isInternal=e.isInternal,this.isCached=e.isCached,this.fields=e.fields,this.minLength=e.minLength,this.maxLength=e.maxLength,this.minimum=e.minimum,this.maximum=e.maximum,this.pattern=e.pattern,this.patternDescription=e.patternDescription,this.format=e.format}optional(){return new o({...this,isOptional:!0})}array(e){return new o({...this,isArray:!0,description:e||this.description,itemDescription:e?this.description:void 0})}internal(){return new o({...this,isInternal:!0})}cache(){return new o({...this,isCached:!0})}min(e){return this.type==="string"?new o({...this,minLength:e}):this.type==="number"?new o({...this,minimum:e}):this}max(e){return this.type==="string"?new o({...this,maxLength:e}):this.type==="number"?new o({...this,maximum:e}):this}email(){return this.type==="string"?new o({...this,format:"email"}):this}url(){return this.type==="string"?new o({...this,format:"uri"}):this}regex(e,t){return this.type==="string"?new o({...this,pattern:e,patternDescription:t}):this}date(){return this.type==="string"?new o({...this,format:"date"}):this}datetime(){return this.type==="string"?new o({...this,format:"date-time"}):this}},V=Object.assign(()=>new lo,{string:o=>new et({type:"string",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),number:o=>new et({type:"number",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),boolean:o=>new et({type:"boolean",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),json:o=>new et({type:"json",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),datetime:o=>new et({type:"datetime",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),date:o=>new et({type:"date",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),class:(o,e)=>new et({type:"class",isArray:!1,options:o,description:e,isOptional:!1,isInternal:!1,isCached:!1}),image:o=>new et({type:"image",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),audio:o=>new et({type:"audio",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),file:o=>new et({type:"file",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),url:o=>new et({type:"url",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1}),email:o=>new et({type:"string",isArray:!1,description:o,isOptional:!1,isInternal:!1,isCached:!1,format:"email"}),code:(o,e)=>new et({type:"code",isArray:!1,description:e||o,isOptional:!1,isInternal:!1,isCached:!1}),object:(o,e)=>new et({type:"object",isArray:!1,fields:o,description:e,isOptional:!1,isInternal:!1,isCached:!1})});function Ds(o){return{type:o.type,isArray:o.isArray,options:o.options,description:o.description,isOptional:o.isOptional,isInternal:o.isInternal,minLength:o.minLength,maxLength:o.maxLength,minimum:o.minimum,maximum:o.maximum,pattern:o.pattern,patternDescription:o.patternDescription,format:o.format,fields:o.fields?Object.fromEntries(Object.entries(o.fields).map(([e,t])=>[e,Ds(t)])):void 0}}function $s(o){return{type:{name:o.type,isArray:o.isArray,options:o.options?[...o.options]:void 0,fields:o.fields},description:o.description,isOptional:o.isOptional,isInternal:o.isInternal}}function Va(o,e){return{name:o,type:{name:e.type,isArray:e.isArray||void 0,options:e.options?[...e.options]:void 0,minLength:e.minLength,maxLength:e.maxLength,minimum:e.minimum,maximum:e.maximum,pattern:e.pattern,patternDescription:e.patternDescription,format:e.format,description:e.itemDescription,fields:e.fields?Object.fromEntries(Object.entries(e.fields).map(([t,n])=>[t,Ds(n)])):void 0},description:e.description,isOptional:e.isOptional||void 0,isInternal:e.isInternal||void 0,isCached:e.isCached||void 0}}function xp(o){return o.length===0?{type:"object",properties:{}}:Jt(o,"Schema")}function cf(o){let e=Va("__value",o);return Jt([e],"Schema").properties?.__value??{type:"json"}}var Ka=class{name;desc;ns;argFields=[];returnFields=[];returnFieldType;returnMode;fnHandler;fnExamples=[];constructor(e){this.name=e}description(e){return this.desc=e,this}namespace(e){return this.ns=e,this}arg(e,t){return this.argFields.push(Va(e,t)),this}args(e,t){return this.arg(e,t)}returns(e){if(this.returnMode==="fields")throw new Error("Cannot use fn().returns(...) after fn().returnsField(...); choose exactly one return schema style");return this.returnMode="single",this.returnFieldType=e,this}returnsField(e,t){if(this.returnMode==="single")throw new Error("Cannot use fn().returnsField(...) after fn().returns(...); choose exactly one return schema style");return this.returnMode="fields",this.returnFields.push(Va(e,t)),this}example(e){return this.fnExamples.push(e),this}examples(e){return this.fnExamples.push(...e),this}handler(e){return this.fnHandler=e,this}build(){let e=this.name.trim(),t=this.desc?.trim(),n=this.ns?.trim();if(!e)throw new Error("fn() requires a non-empty function name");if(!t)throw new Error(`Function "${e}" must define a non-empty description`);if(!this.fnHandler)throw new Error(`Function "${e}" must define a handler`);if(this.fnExamples.some(s=>!s.code.trim()))throw new Error(`Function "${e}" examples must define non-empty code`);return{name:e,description:t,...n?{namespace:n}:{},parameters:xp(this.argFields),...this.returnMode==="single"&&this.returnFieldType?{returns:cf(this.returnFieldType)}:this.returnMode==="fields"?{returns:xp(this.returnFields)}:{},...this.fnExamples.length>0?{examples:this.fnExamples.map(s=>({...s}))}:{},func:this.fnHandler}}},bp=o=>new Ka(o),ue=class extends Error{constructor(t,n,r){super(t);this.fieldName=n;this.suggestion=r;this.name="AxSignatureValidationError"}},Ve=class o{description;inputFields;outputFields;sigHash;sigString;validatedAtHash;constructor(e){if(!e){this.inputFields=[],this.outputFields=[],this.sigHash="",this.sigString="";return}if(typeof e=="string"){let t;try{t=hp(e)}catch(n){if(n instanceof Error){let r="suggestion"in n&&typeof n.suggestion=="string"?n.suggestion:'Please check the signature format. Example: "userInput:string -> responseText:string"';throw new ue(`Invalid Signature: ${n.message}`,void 0,r)}throw new ue(`Invalid Signature: ${e}`,void 0,'Please check the signature format. Example: "userInput:string -> responseText:string"')}this.description=t.desc,this.inputFields=t.inputs.map(n=>this.parseParsedField(n)),this.outputFields=t.outputs.map(n=>this.parseParsedField(n)),[this.sigHash,this.sigString]=this.updateHash()}else if(e instanceof o)this.description=e.getDescription(),this.inputFields=structuredClone(e.getInputFields()),this.outputFields=structuredClone(e.getOutputFields()),this.sigHash=e.hash(),this.sigString=e.toString(),e.validatedAtHash===this.sigHash&&(this.validatedAtHash=this.sigHash),this._forceComplexFields=e._forceComplexFields,this._hasComplexFields=e._hasComplexFields;else if(typeof e=="object"&&e!==null){if(!("inputs"in e)||!("outputs"in e))throw new ue("Invalid signature object: missing inputs or outputs",void 0,'Signature object must have "inputs" and "outputs" arrays. Example: { inputs: [...], outputs: [...] }');if(!Array.isArray(e.inputs)||!Array.isArray(e.outputs))throw new ue("Invalid signature object: inputs and outputs must be arrays",void 0,'Both "inputs" and "outputs" must be arrays of AxField objects');try{this.description=e.description,this.inputFields=e.inputs.map(t=>this.parseField(t)),this.outputFields=e.outputs.map(t=>this.parseField(t)),[this.sigHash,this.sigString]=this.updateHash()}catch(t){throw t instanceof ue?t:new ue(`Failed to create signature from object: ${t instanceof Error?t.message:"Unknown error"}`,void 0,"Check that all fields in inputs and outputs arrays are valid AxField objects")}}else throw new ue("Invalid signature argument type",void 0,"Signature must be a string, another AxSignature instance, or an object with inputs and outputs arrays")}static create(e){return new o(e)}parseParsedField=e=>{if(!e.name||e.name.length===0)throw new ue("Field name is required",e.name,'Every field must have a descriptive name. Example: "userInput", "responseText"');let t=this.toTitle(e.name);return{name:e.name,title:t,description:"desc"in e?e.desc:void 0,type:e.type??{name:"string",isArray:!1},..."isInternal"in e?{isInternal:e.isInternal}:{},..."isOptional"in e?{isOptional:e.isOptional}:{}}};parseField=e=>{let t=!e.title||e.title.length===0?this.toTitle(e.name):e.title;if(e.type&&(!e.type.name||e.type.name.length===0))throw new ue("Field type name is required",e.name,"Specify a valid type. Available types: string, number, boolean, json, image, audio, file, url, date, datetime, class, code");return{...e,title:t}};setDescription=e=>{if(typeof e!="string")throw new ue("Description must be a string",void 0,"Provide a string description for the signature");this.description=e,this.invalidateValidationCache(),this.updateHashLight()};addInputField=e=>{try{let t=this.parseField(e);Gt(t,"input");for(let n of this.inputFields)if(n.name===t.name)throw new ue(`Duplicate input field name: "${t.name}"`,t.name,"Each field name must be unique within the signature");for(let n of this.outputFields)if(n.name===t.name)throw new ue(`Field name "${t.name}" appears in both inputs and outputs`,t.name,"Use different names for input and output fields to avoid confusion");this.inputFields.push(t),this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ue?t:new ue(`Failed to add input field "${e.name}": ${t instanceof Error?t.message:"Unknown error"}`,e.name)}};addOutputField=e=>{try{let t=this.parseField(e);Gt(t,"output");for(let n of this.outputFields)if(n.name===t.name)throw new ue(`Duplicate output field name: "${t.name}"`,t.name,"Each field name must be unique within the signature");for(let n of this.inputFields)if(n.name===t.name)throw new ue(`Field name "${t.name}" appears in both inputs and outputs`,t.name,"Use different names for input and output fields to avoid confusion");this.outputFields.push(t),this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ue?t:new ue(`Failed to add output field "${e.name}": ${t instanceof Error?t.message:"Unknown error"}`,e.name)}};setInputFields=e=>{if(!Array.isArray(e))throw new ue("Input fields must be an array",void 0,"Provide an array of field objects");try{let t=e.map(n=>{let r=this.parseField(n);return Gt(r,"input"),r});this.inputFields=t,this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ue?t:new ue(`Failed to set input fields: ${t instanceof Error?t.message:"Unknown error"}`)}};setOutputFields=e=>{if(!Array.isArray(e))throw new ue("Output fields must be an array",void 0,"Provide an array of field objects");try{let t=e.map(n=>{let r=this.parseField(n);return Gt(r,"output"),r});this.outputFields=t,this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ue?t:new ue(`Failed to set output fields: ${t instanceof Error?t.message:"Unknown error"}`)}};getInputFields=()=>this.inputFields;getOutputFields=()=>this.outputFields;getDescription=()=>this.description;appendInputField=(e,t)=>{let n=new o(this);return n.addInputField({name:e,...$s(t)}),n};prependInputField=(e,t)=>{let n=new o(this),r={name:e,...$s(t)},s=n.parseField(r);Gt(s,"input");for(let i of n.inputFields)if(i.name===s.name)throw new ue(`Duplicate input field name: "${s.name}"`,s.name,"Each field name must be unique within the signature");for(let i of n.outputFields)if(i.name===s.name)throw new ue(`Field name "${s.name}" appears in both inputs and outputs`,s.name,"Use different names for input and output fields to avoid confusion");return n.inputFields.unshift(s),n.invalidateValidationCache(),n.updateHashLight(),n};appendOutputField=(e,t)=>{let n=new o(this);return n.addOutputField({name:e,...$s(t)}),n};prependOutputField=(e,t)=>{let n=new o(this),r={name:e,...$s(t)},s=n.parseField(r);Gt(s,"output");for(let i of n.outputFields)if(i.name===s.name)throw new ue(`Duplicate output field name: "${s.name}"`,s.name,"Each field name must be unique within the signature");for(let i of n.inputFields)if(i.name===s.name)throw new ue(`Field name "${s.name}" appears in both inputs and outputs`,s.name,"Use different names for input and output fields to avoid confusion");return n.outputFields.unshift(s),n.invalidateValidationCache(),n.updateHashLight(),n};invalidateValidationCache=()=>{this.validatedAtHash=void 0,this._hasComplexFields=void 0};toTitle=e=>{let t=e.replace(/_/g," ");return t=t.replace(/([A-Z]|[0-9]+)/g," $1").trim(),t.charAt(0).toUpperCase()+t.slice(1)};updateHashLight=()=>{try{return this.getInputFields().forEach(e=>{Gt(e,"input")}),this.getOutputFields().forEach(e=>{Gt(e,"output")}),this.sigHash=bt("sha256").update(JSON.stringify(this.inputFields)).update(JSON.stringify(this.outputFields)).digest("hex"),this.sigString=yp(this.description,this.inputFields,this.outputFields),this._hasComplexFields=this.computeHasComplexFields(),[this.sigHash,this.sigString]}catch(e){throw e instanceof ue?e:new ue(`Signature validation failed: ${e instanceof Error?e.message:"Unknown error"}`)}};updateHash=()=>{try{return this.getInputFields().forEach(e=>{Gt(e,"input")}),this.getOutputFields().forEach(e=>{Gt(e,"output")}),this.validateSignatureConsistency(),this.sigHash=bt("sha256").update(this.description??"").update(JSON.stringify(this.inputFields)).update(JSON.stringify(this.outputFields)).digest("hex"),this.sigString=yp(this.description,this.inputFields,this.outputFields),this._hasComplexFields=this.computeHasComplexFields(),[this.sigHash,this.sigString]}catch(e){throw e instanceof ue?e:new ue(`Signature validation failed: ${e instanceof Error?e.message:"Unknown error"}`)}};validateSignatureConsistency(){let e=new Set;for(let n of this.inputFields){if(e.has(n.name))throw new ue(`Duplicate input field name: "${n.name}"`,n.name,"Each field name must be unique within the signature");e.add(n.name)}let t=new Set;for(let n of this.outputFields){if(t.has(n.name))throw new ue(`Duplicate output field name: "${n.name}"`,n.name,"Each field name must be unique within the signature");t.add(n.name)}for(let n of this.outputFields)if(e.has(n.name))throw new ue(`Field name "${n.name}" appears in both inputs and outputs`,n.name,"Use different names for input and output fields to avoid confusion");if(this.inputFields.length===0)throw new ue("Signature must have at least one input field",void 0,'Add an input field. Example: "userInput:string -> ..."');if(this.outputFields.length===0)throw new ue("Signature must have at least one output field",void 0,'Add an output field. Example: "... -> responseText:string"')}_forceComplexFields=!1;_hasComplexFields;hasComplexFields=()=>this._hasComplexFields!==void 0?this._hasComplexFields:(this._hasComplexFields=this.computeHasComplexFields(),this._hasComplexFields);computeHasComplexFields=()=>this._forceComplexFields?!0:this.outputFields.some(e=>e.type?.name==="object"||e.type?.isArray&&e.type.fields!==void 0);validate=()=>{if(this.validatedAtHash===this.sigHash)return!0;try{return this.updateHash(),this.validatedAtHash=this.sigHash,!0}catch(e){throw this.validatedAtHash=void 0,e}};hash=()=>this.sigHash;toString=()=>this.sigString;toJSON=()=>({id:this.hash(),description:this.description,inputFields:this.inputFields,outputFields:this.outputFields});toJSONSchema=()=>{let e=[...this.inputFields,...this.outputFields];return Jt(e,this.description??"Schema")};toInputJSONSchema=()=>Jt(this.inputFields,this.description??"Schema")};function Ap(o){let e=o.name;return o.isOptional&&(e+="?"),o.isInternal&&(e+="!"),o.type&&(e+=`:${o.type.name}`,o.type.isArray&&(e+="[]"),o.type.name==="class"&&o.type.options&&(e+=` "${o.type.options.join(" | ")}"`)),o.description&&o.type?.name!=="class"&&(e+=` "${o.description}"`),e}function yp(o,e,t){let n=o?`"${o}" `:"",r=e.map(Ap).join(", "),s=t.map(Ap).join(", ");return`${n}${r} -> ${s}`}function uf(o){let e=/^[a-z][a-zA-Z0-9]*$/,t=/^[a-z]+(_[a-z0-9]+)*$/;return e.test(o)||t.test(o)}function Gt(o,e){if(!o.name||o.name.length===0)throw new ue("Field name cannot be blank",o.name,"Every field must have a descriptive name");if(!uf(o.name))throw new ue(`Invalid field name '${o.name}' - must be camelCase or snake_case`,o.name,'Use camelCase (e.g., "userInput") or snake_case (e.g., "user_input")');if(ke.signatureStrict&&["text","object","image","string","number","boolean","json","array","datetime","date","time","type","class","input","output","data","value","result","response","request","item","element"].includes(o.name.toLowerCase())){let n=e==="input"?["userInput","questionText","documentContent","messageText","queryString"]:["responseText","analysisResult","categoryType","summaryText","outputData"];throw new ue(`Field name '${o.name}' is too generic`,o.name,`Use a more descriptive name. Examples for ${e} fields: ${n.join(", ")}`)}if(o.name.length<2)throw new ue(`Field name '${o.name}' is too short`,o.name,"Field names must be at least 2 characters long");if(o.name.length>50)throw new ue(`Field name '${o.name}' is too long (${o.name.length} characters)`,o.name,"Field names should be 50 characters or less");o.type&&lf(o,e)}function lf(o,e){if(!o.type)return;let{type:t}=o;if((t.name==="image"||t.name==="audio"||t.name==="file")&&e==="output")throw new ue(`${t.name} type is not supported in output fields`,o.name,`${t.name} types can only be used in input fields`);if(t.name==="class"){if(e==="input")throw new ue("Class type is not supported in input fields",o.name,'Class types are only allowed on output fields. Use "string" type for input classifications');if(!t.options||t.options.length===0)throw new ue("Class type requires options",o.name,'Provide class options. Example: class "positive, negative, neutral"');for(let r of t.options){if(!r||r.trim().length===0)throw new ue("Empty class option found",o.name,"All class options must be non-empty strings");let s=r.trim();if(s.includes(",")||s.includes("|"))throw new ue(`Invalid class option "${s}"`,o.name,"Class options cannot contain commas (,) or pipes (|) as they are used to separate options")}if(new Set(t.options.map(r=>r.trim().toLowerCase())).size!==t.options.length)throw new ue("Duplicate class options found",o.name,"Each class option must be unique (case-insensitive)")}if(t.name==="code"&&t.isArray)throw new ue("Arrays of code are not commonly supported",o.name,"Consider using a single code field or an array of strings instead");if(o.isInternal&&e==="input")throw new ue("Internal marker (!) is not allowed on input fields",o.name,"Internal markers are only allowed on output fields");t.name==="object"&&t.fields&&Ja(t.fields,o.name,e)}function Ja(o,e,t,n=1){for(let[r,s]of Object.entries(o)){let i=`${e}.${r}`;if(s.type==="image"||s.type==="audio"||s.type==="file")throw new ue(`${s.type} type is not allowed in nested object fields`,i,`Media types (image, audio, file) can only be used as top-level input fields, not within objects. Found at depth ${n}.`);s.type==="object"&&s.fields&&Ja(s.fields,i,t,n+1),s.isArray&&s.fields&&Ja(s.fields,`${i}[]`,t,n+1)}}var an=class o{signature;sigHash;examples;examplesOptions;demos;trace;usage=[];traceLabel;key;children;childNames=new Map;childCount=0;constructor(e,t){this.signature=new Ve(e),t?.description&&this.signature.setDescription(t.description),t?.traceLabel&&(this.traceLabel=t.traceLabel),e&&this.signature.validate(),this.sigHash=this.signature?.hash(),this.children=new ar,this.key={id:"root"}}getSignature(){return new Ve(this.signature)}setSignature(e){this.signature=new Ve(e),e&&this.signature.validate(),this.updateSignatureHash()}setDescription(e){this.signature.setDescription(e),this.updateSignatureHash()}updateSignatureHash(){this.sigHash=this.signature.hash()}getId(){return this.key.id}register(e,t){let n=t??`p${this.childCount}`;this.childCount++,e.setId([this.key.id,n].join(".")),this.childNames.set(e,n),this.children.register(e)}setId(e){this.key={id:e,custom:!0};for(let[t,n]of this.childNames)t.setId([e,n].join("."))}setExamples(e,t){let n=[];if("programId"in e&&e.programId===this.key.id&&(n=e.traces),Array.isArray(e)&&(n=e),n){this.examplesOptions=t;let r=this.signature,s=[...r.getInputFields(),...r.getOutputFields()];this.examples=n.map(i=>{let a={};for(let c of s){let u=i[c.name];u!==void 0&&(oo(c,u),a[c.name]=u)}return a})}}getTraces(){let e=[];this.trace&&e.push({trace:this.trace,programId:this.key.id});for(let t of Array.from(this.children)){let n=t?.getTraces();e=[...e,...n??[]]}return e}getUsage(){let e=[...this.usage??[]];for(let t of Array.from(this.children)){let n=t?.getUsage();if(n){let r=Array.isArray(n)?n:[...n.actor,...n.responder];e=[...e,...r]}}return so(e)}resetUsage(){this.usage=[];for(let e of Array.from(this.children))e?.resetUsage()}static _propagating=!1;setDemos(e,t){if(!o._propagating&&e.length>0){let u=new Set(this.namedPrograms().map(p=>p.id)),l=[...new Set(e.map(p=>p.programId))].filter(p=>!u.has(p));if(l.length>0){let p=[...u].join(", ");throw new Error(`Unknown program ID(s) in demos: ${l.join(", ")}. Valid IDs: ${p}. Use namedPrograms() to discover available IDs.`)}}let n=e.filter(u=>u.programId===this.key.id).map(u=>u.traces).flat(),r=this.signature,s=[...r.getInputFields(),...r.getOutputFields()],i=new Set(r.getInputFields().map(u=>u.name)),a=new Set(r.getOutputFields().map(u=>u.name));this.demos=n.map((u,l)=>{let p={};for(let m of s){let f=u[m.name];f!==void 0&&(oo(m,f),p[m.name]=f)}let d=Object.keys(p).some(m=>i.has(m));if(!Object.keys(p).some(m=>a.has(m)))throw new Error(`Demo trace[${l}] for '${this.key.id}' has no output field values. Expected at least one of: ${[...a].join(", ")}`);if(!d)throw new Error(`Demo trace[${l}] for '${this.key.id}' has no input field values. Expected at least one of: ${[...i].join(", ")}. Provide input context so the demo renders as a complete few-shot example.`);return p}),t?.modelConfig&&(this._optimizedModelConfig=t.modelConfig);let c=o._propagating;o._propagating=!0;try{for(let u of Array.from(this.children))u?.setDemos(e,t)}finally{o._propagating=c}}namedPrograms(){let e=[];[...this.signature.getInputFields(),...this.signature.getOutputFields()].length>0&&e.push({id:this.key.id,signature:this.signature.toString()});for(let n of Array.from(this.children))n&&"namedPrograms"in n&&typeof n.namedPrograms=="function"?e.push(...n.namedPrograms()):n&&e.push({id:n.getId()});return e}namedProgramInstances(){let e=[];[...this.signature.getInputFields(),...this.signature.getOutputFields()].length>0&&e.push({id:this.key.id,program:this,signature:this.signature.toString()});for(let n of Array.from(this.children))n&&"namedProgramInstances"in n&&typeof n.namedProgramInstances=="function"?e.push(...n.namedProgramInstances()):n&&e.push({id:n.getId(),program:n});return e}applyOptimization(e){let t=e.demos!==void 0,n=e.modelConfig!==void 0;(t||n)&&this.setDemos(e.demos??[],{modelConfig:e.modelConfig});let r=this;if(typeof r.setInstruction=="function"){let i=e.instructionMap?.[this.key.id],a=typeof i=="string"?i:e.instruction;typeof a=="string"&&a.length>0&&r.setInstruction(a)}let s={...e,...t?{demos:void 0}:{},...n?{modelConfig:void 0}:{}};for(let i of Array.from(this.children))i?.applyOptimization(s)}};var Cp={"dsp/dspy.md":`<identity>
|
|
230
230
|
{{ identityText }}
|
|
231
231
|
</identity>{{ if hasFunctions }}
|
|
232
232
|
|
|
@@ -517,15 +517,15 @@ ${JSON.stringify(c)}
|
|
|
517
517
|
`),e.content&&(t+=e.content),e.functionCalls?.length)for(let n of e.functionCalls){let r={name:n.function.name,arguments:n.function.params??{}};t+=`
|
|
518
518
|
<tool_call>
|
|
519
519
|
${JSON.stringify(r)}
|
|
520
|
-
</tool_call>`}return{role:"assistant",content:t.trim()}}async forwardSendRequest({ai:e,values:t,mem:n,options:r,traceContext:s,functions:i,functionCall:a,stepIndex:c}){let{sessionId:u,model:l,rateLimiter:p,stream:d,thinkingTokenBudget:g,showThoughts:m}=r??{},f=await ec(n,u,{resultPicker:r?.resultPicker}),{prompt:h,promptMetrics:x}=await this.renderPromptWithMetricsForInternalUse(e,t,{...r,sessionId:u},i),A=n?.history(f,u)??h;if(A!==h&&A.length>0&&h.length>0){let D=h.find(ne=>ne.role==="system");if(D){let ne=A.findIndex(J=>J.role==="system");ne!==-1&&(A[ne]=D)}}if(A.length===0)throw new Error("No chat prompt found");let y={...r?.modelConfig,...r?.sampleCount?{n:r.sampleCount}:{},...r?.sampleCount&&r?.modelConfig?.temperature===1?{temperature:.8}:{}},C=this.isDebug(e,r),R=c===0,I=this.getLogger(e,r),M=C?(()=>{if(!x){let z=ze(A.filter(j=>j.role!=="system"));return{systemPromptCharacters:ze(A.filter(j=>j.role==="system")),exampleChatContextCharacters:0,mutableChatContextCharacters:z,chatContextCharacters:z,totalPromptCharacters:ze(A)}}let D=A.slice(h.length),ne=ze(D),J=x.mutableChatContextCharacters+ne,q=x.exampleChatContextCharacters+J;return{systemPromptCharacters:x.systemPromptCharacters,exampleChatContextCharacters:x.exampleChatContextCharacters,mutableChatContextCharacters:J,chatContextCharacters:q,totalPromptCharacters:x.systemPromptCharacters+q}})():void 0,F=i.filter(D=>D.name!==Qt);i=this.signatureToolCallingManager?[]:i;let P,N=this.signature.getOutputFields();if(this.signature.hasComplexFields()&&!this.structuredOutputFunctionFallback){if(!e.getFeatures(l)?.structuredOutputs)throw new Error(`Complex structured outputs (object/array types) require a provider that supports structured outputs. Current provider/model (${l}) does not support this feature. Supported providers: OpenAI (GPT-4o, GPT-4.1+), Google Gemini, Anthropic (Sonnet/Opus).`);P={type:"json_schema",schema:{name:"output",strict:!0,schema:Jt(N)}}}let E=this.getEffectiveContextCache(e,r),O=E?.cacheBreakpoint??"after-examples",S=e.getFeatures?.(l)?.caching?.cacheBreakpoints===!1,k=!!E&&e.getName()==="GoogleGeminiAI"&&e.getFeatures?.(l)?.caching?.supported===!0,_=E&&(k||S||O==="after-functions"||O==="after-examples"),$=i?.length&&_?i.map((D,ne)=>({...D,cache:ne===i.length-1})):i,B=await e.chat({chatPrompt:A,functions:$,functionCall:a,modelConfig:y,model:l,responseFormat:P},{sessionId:u,rateLimiter:p,stream:d,debug:C,debugHideSystemPrompt:r?.debugHideSystemPrompt??this.options?.debugHideSystemPrompt??!R,thinkingTokenBudget:g,showThoughts:m,traceContext:s,abortSignal:r?.abortSignal??ke.abortSignal,stepIndex:c,logger:I,functionCallMode:r?.functionCallMode??this.options?.functionCallMode??"auto",contextCache:E,retry:r?.retry??this.options?.retry,customLabels:r?.customLabels}),U=this.normalizeChatMessages(A,F),ee=String(l??e.getLastUsedChatModel?.()??"");if(B instanceof ReadableStream)this.chatLog.push({model:ee,messages:U});else{for(let D of B.results)U.push(this.buildAssistantLogMessage(D));this.chatLog.push({model:ee,messages:U,modelUsage:B.modelUsage})}return{res:B,debugPromptMetrics:M}}async*forwardCore({ai:e,values:t,mem:n,options:r,stepIndex:s,span:i,traceContext:a,states:c,stopFunctionNames:u,stepContext:l}){let{sessionId:p,functions:d}=r??{},g=r?.functionResultFormatter??this.options?.functionResultFormatter,m=r?.functionCall??this.options?.functionCall,f=this.signatureToolCallingManager,h=r?.strictMode??!1,x=r.model,A=this.usage,y=s===0,C=this.isDebug(e,r),R=this.getLogger(e,r),{functions:I,functionCall:M}=pp(d,m,y,r);this.structuredOutputFunctionFallback&&I.filter(T=>T.name!==Qt).length===0&&(M={type:"function",function:{name:Qt}});let{res:F,debugPromptMetrics:P}=await this.forwardSendRequest({ai:e,values:t,mem:n,options:r,traceContext:a,functions:I,functionCall:M,stepIndex:s});if(F instanceof ReadableStream){yield*mp({ai:e,model:x,res:F,mem:n,sessionId:p,traceId:i?i.spanContext?.().traceId:void 0,functions:I,strictMode:h,span:i,states:c,usage:A,asserts:this.asserts,streamingAsserts:this.streamingAsserts,fieldProcessors:this.fieldProcessors,streamingFieldProcessors:this.streamingFieldProcessors,thoughtFieldName:this.thoughtFieldName,excludeContentFromTrace:this.excludeContentFromTrace,signature:this.signature,logger:R,debugPromptMetrics:P,debug:C,functionResultFormatter:g,signatureToolCallingManager:f,stopFunctionNames:u,disableMemoryCleanup:r.disableMemoryCleanup,stepContext:l,abortSignal:r.abortSignal});let N=this.chatLog[this.chatLog.length-1];if(N){for(let T of c)N.messages.push(this.buildAssistantLogMessage({index:T.index,content:T.content||void 0,functionCalls:T.functionCalls.length>0?T.functionCalls:void 0}));this.usage.length>0&&(N.modelUsage=this.usage[this.usage.length-1])}}else yield*gp({ai:e,model:x,res:F,mem:n,sessionId:p,traceId:i?i.spanContext?.().traceId:void 0,functions:I,span:i,strictMode:h,states:c,usage:A,asserts:this.asserts,fieldProcessors:this.fieldProcessors,thoughtFieldName:this.thoughtFieldName,excludeContentFromTrace:this.excludeContentFromTrace,signature:this.signature,logger:R,debugPromptMetrics:P,debug:C,functionResultFormatter:g,signatureToolCallingManager:f,stopFunctionNames:u,disableMemoryCleanup:r.disableMemoryCleanup,stepContext:l,abortSignal:r.abortSignal})}async*_forward2(e,t,n,r,s,i){this.signatureToolCallingManager=void 0,this.chatLog=[];let a=r?.stopFunction??this.options?.stopFunction,c=Array.isArray(a)?a.map(ne=>ne.toLowerCase()):a?[a.toLowerCase()]:void 0,u=r.maxRetries??this.options?.maxRetries??3,l=r.maxSteps??this.options?.maxSteps??25,p=r.mem??this.options?.mem??new nr,d=r.functions?hn(r.functions):[...this.functions],g=new pr(l),m;if(r.selfTuning){if(m=r.selfTuning===!0?{model:!0,thinkingBudget:!0}:r.selfTuning,m.model!==!1){let q=e.getModelList()?.filter(z=>"model"in z);if(!q||q.length<2)throw new Error("Self-tuning with model selection requires the AI service to have a `models` list with at least 2 chat models. Either configure models on your AI service or disable model selection with `selfTuning: { model: false }`.")}let ne=tc(e,m,r.model?String(r.model):void 0);d.push(ne)}let f={...r},h=r.stepHooks,x=d&&d.length>0,A=r.functionCallMode??this.options?.functionCallMode??"auto";x&&A==="prompt"&&(this.signatureToolCallingManager=new An(d)),x&&A==="auto"&&!e.getFeatures(r.model).functions&&(this.signatureToolCallingManager=new An(d));let y,C,R=this.options?.promptTemplate??cn;this.signatureToolCallingManager&&(this.signature=this.signatureToolCallingManager.processSignature(this.signature),this.setSignature(this.signature));let I=this.signature.hasComplexFields(),M=e.getFeatures?.(r.model),F=r.structuredOutputMode??this.options?.structuredOutputMode??"auto";if(this.structuredOutputFunctionFallback=I&&(F==="function"||F==="auto"&&!M?.structuredOutputs),this.structuredOutputFunctionFallback){let ne={name:Qt,description:"Return the final result. Call this function with the complete output data.",parameters:Jt(this.signature.getOutputFields()),func:async()=>"done"};d.push(ne),c=[...c??[],Qt.toLowerCase()]}let P=e.getFeatures?.(r.model)?.caching?.cacheBreakpoints===!1,N=this.getEffectiveContextCache(e,r),T={functions:this.signatureToolCallingManager?[]:d,thoughtFieldName:this.thoughtFieldName,contextCache:N,examplesInSystem:r.examplesInSystem,ignoreBreakpoints:P,structuredOutputFunctionName:this.structuredOutputFunctionFallback?Qt:void 0,customTemplate:r.customTemplate??this.options?.customTemplate};this.promptTemplate=new R(this.signature,T);let E,O=performance.now();Array.isArray(t)?(Qi(t),E=this.promptTemplate.render(t,{examples:this.examples,demos:this.demos})):E=this.promptTemplate.render(t,{examples:this.examples,demos:this.demos});let S=performance.now()-O,k=this.getMetricsInstruments(),_=this.getMergedCustomLabels(e,r);k&&ks(k,"prompt_render",S,this.getSignatureName(),_);let $=performance.now();p.addRequest(E,r.sessionId);let B=performance.now()-$;k&&ks(k,"memory_update",B,this.getSignatureName(),_);let U=new Map;n.forEach(ne=>{U.set(ne.index,{})});let ee=()=>{let ne=g._consumePendingOptions();if(ne){let{modelConfig:z,...j}=ne;f={...f,...j},z&&(f.modelConfig={...f.modelConfig,...z})}let J=g._consumeFunctionsToAdd();if(J){let z=hn(J);for(let j of z)d.some(X=>X.name===j.name)||d.push(j)}let q=g._consumeFunctionsToRemove();if(q){let z=new Set(q.map(j=>j.toLowerCase()));for(let j=d.length-1;j>=0;j--)z.has(d[j].name.toLowerCase())&&d.splice(j,1)}},D=r?.abortSignal??ke.abortSignal;e:for(let ne=0;ne<l;ne++){if(g._beginStep(ne),ee(),m&&m.model!==!1){let q=d.findIndex(z=>z.name==="adjustGeneration");if(q!==-1){let z=f.model?String(f.model):void 0;d[q]=tc(e,m,z)}}if(g._isStopRequested)break;if(D?.aborted)throw new Ge("between-steps",D.reason??"Aborted between steps");if(h?.beforeStep&&(await h.beforeStep(g),ee(),g._isStopRequested))break;let J=u;for(let q=0;q<=J;q++)try{let z=u+1;for(let X=0;X<z;X++){n.forEach(K=>{K.content="",K.values={},K.functionCalls=[],K.functionsExecuted=new Set,K.xstate={extractedFields:[],streamedIndex:{},s:-1}}),X>0&&U.forEach((K,le)=>{U.set(le,{})});let oe=new Map;n.forEach(K=>{oe.set(K.index,{})});try{let K=this.forwardCore({options:{...f,functions:d},ai:e,values:t,mem:p,stepIndex:ne,span:s,traceContext:i,states:n,stopFunctionNames:c,stepContext:g}),le=!1;try{for await(let pe of K)if(pe!==void 0){let xe=pe.index,se=pe.delta,Ee=oe.get(xe)??{},Te=U.get(xe)??{},$e={},me=!1;for(let De of Object.keys(se)){let Ae=se[De],Pe=Ee[De],Ie;typeof Ae=="string"&&(typeof Pe=="string"||Pe===void 0)?Ie=(Pe??"")+Ae:Array.isArray(Ae)&&(Array.isArray(Pe)||Pe===void 0)?Ie=[...Pe??[],...Ae]:Ie=Ae,Ee[De]=Ie;let ye=Ie,ce=Te[De];if(typeof ye=="string"&&typeof ce=="string")if(ye.startsWith(ce)){let _e=ye.slice(ce.length);_e&&($e[De]=_e,me=!0,Te[De]=ye)}else ce.startsWith(ye)||ye!==ce&&($e[De]=ye,me=!0,Te[De]=ye);else if(Array.isArray(ye)&&Array.isArray(ce)){if(ye.length>ce.length){let _e=ye.slice(ce.length);$e[De]=_e,me=!0,Te[De]=ye}}else JSON.stringify(ye)!==JSON.stringify(ce)&&($e[De]=ye,me=!0,Te[De]=ye)}me&&(yield{version:X,index:pe.index,delta:$e})}}catch(pe){if(pe instanceof fn){if(le=!0,this.structuredOutputFunctionFallback){let xe=pe.calls.find(se=>se.func.name===Qt);if(xe?.args){let se=xe.args;ir(this.signature,se);let Ee=this.signature.getOutputFields();for(let Te of n){let $e={};for(let me of Ee)me.name in se&&!me.isInternal&&($e[me.name]=se[me.name],Te.values[me.name]=se[me.name]);yield{version:X,index:Te.index,delta:$e}}for(let Te of n)await rr(this.asserts,Te.values);if(this.fieldProcessors.length>0)for(let Te of n)await io(this.fieldProcessors,Te.values,p,r.sessionId)}}}else throw pe}if(this.usage.length>0){let pe=this.usage[this.usage.length-1];pe?.tokens&&g._addUsage(pe.tokens.promptTokens??0,pe.tokens.completionTokens??0,pe.tokens.totalTokens??0)}n.some(pe=>pe.functionsExecuted.size>0)&&h?.afterFunctionExecution&&(await h.afterFunctionExecution(g),ee());let Oe=le||g._isStopRequested?!1:fp(p,c,n,f?.sessionId);if(h?.afterStep&&(await h.afterStep(g),ee()),Oe&&!g._isStopRequested&&!D?.aborted){let pe=this.getMetricsInstruments();pe&&Ss(pe,ne+1,l,this.getSignatureName(),_);continue e}if(D?.aborted)throw new Ge("mid-step",D.reason??"Aborted");r?.disableMemoryCleanup||(p.removeByTag("invalid-assistant",r.sessionId),p.removeByTag("correction",r.sessionId),p.removeByTag("error",r.sessionId));let te=this.getMetricsInstruments();if(te){Ss(te,ne+1,l,this.getSignatureName(),_);let pe=new Set;n.forEach(xe=>{xe.functionsExecuted.forEach(se=>pe.add(se))}),pe.size>0&&_l(te,!0,pe.size,!0,!1,this.getSignatureName(),_),Nl(te,this.fieldProcessors.length,this.streamingFieldProcessors.length,this.getSignatureName(),_)}return}catch(K){if(K instanceof Ge)throw K;C=K;let le,Se=this.isDebug(e,r),Oe=this.getLogger(e,r),te=this.getMetricsInstruments(),pe=this.getSignatureName(),xe={error:K,errCount:X,logger:Oe,metricsInstruments:te,signatureName:pe,span:s,debug:Se,customLabels:_};if(s?.recordException(K),K instanceof rt)le=Hl(xe),y=K;else if(K instanceof Ut)le=Wl(xe),y=K;else if(K instanceof We)Vl(xe);else{if(K instanceof It)throw K;{let se=K,Ee=se instanceof pt&&se.status>=500&&se.status<600,Te=se instanceof nt,$e=se instanceof bt;throw Ee||Te||$e?K:rc(K,e,this.signature)}}if(le&&(p.addTag("error",r.sessionId),p.addRequest([{role:"user",content:this.promptTemplate.renderExtraFields(le)}],r.sessionId),p.addTag("correction",r.sessionId),this.signature.hasComplexFields()))for(let Ee of n)Ee.content="",Ee.values={},Ee.xstate={extractedFields:[],streamedIndex:{},s:-1}}}let j=this.getMetricsInstruments();throw j&&va(j,u,!1,u,this.getSignatureName(),_),rc(new Error(`Unable to fix validation error: ${(y??C)?.message??(y??C)?.toString()??"unknown error"}
|
|
520
|
+
</tool_call>`}return{role:"assistant",content:t.trim()}}async forwardSendRequest({ai:e,values:t,mem:n,options:r,traceContext:s,functions:i,functionCall:a,stepIndex:c}){let{sessionId:u,model:l,rateLimiter:p,stream:d,thinkingTokenBudget:g,showThoughts:m}=r??{},f=await ec(n,u,{resultPicker:r?.resultPicker}),{prompt:h,promptMetrics:x}=await this.renderPromptWithMetricsForInternalUse(e,t,{...r,sessionId:u},i),A=n?.history(f,u)??h;if(A!==h&&A.length>0&&h.length>0){let D=h.find(ne=>ne.role==="system");if(D){let ne=A.findIndex(J=>J.role==="system");ne!==-1&&(A[ne]=D)}}if(A.length===0)throw new Error("No chat prompt found");let y={...r?.modelConfig,...r?.sampleCount?{n:r.sampleCount}:{},...r?.sampleCount&&r?.modelConfig?.temperature===1?{temperature:.8}:{}},C=this.isDebug(e,r),R=c===0,I=this.getLogger(e,r),M=C?(()=>{if(!x){let z=ze(A.filter(j=>j.role!=="system"));return{systemPromptCharacters:ze(A.filter(j=>j.role==="system")),exampleChatContextCharacters:0,mutableChatContextCharacters:z,chatContextCharacters:z,totalPromptCharacters:ze(A)}}let D=A.slice(h.length),ne=ze(D),J=x.mutableChatContextCharacters+ne,q=x.exampleChatContextCharacters+J;return{systemPromptCharacters:x.systemPromptCharacters,exampleChatContextCharacters:x.exampleChatContextCharacters,mutableChatContextCharacters:J,chatContextCharacters:q,totalPromptCharacters:x.systemPromptCharacters+q}})():void 0,F=i.filter(D=>D.name!==Qt);i=this.signatureToolCallingManager?[]:i;let P,N=this.signature.getOutputFields();if(this.signature.hasComplexFields()&&!this.structuredOutputFunctionFallback){if(!e.getFeatures(l)?.structuredOutputs)throw new Error(`Complex structured outputs (object/array types) require a provider that supports structured outputs. Current provider/model (${l}) does not support this feature. Supported providers: OpenAI (GPT-4o, GPT-4.1+), Google Gemini, Anthropic (Sonnet/Opus).`);P={type:"json_schema",schema:{name:"output",strict:!0,schema:Jt(N)}}}let E=this.getEffectiveContextCache(e,r),O=E?.cacheBreakpoint??"after-examples",S=e.getFeatures?.(l)?.caching?.cacheBreakpoints===!1,k=!!E&&e.getName()==="GoogleGeminiAI"&&e.getFeatures?.(l)?.caching?.supported===!0,_=E&&(k||S||O==="after-functions"||O==="after-examples"),$=i?.length&&_?i.map((D,ne)=>({...D,cache:ne===i.length-1})):i,B=await e.chat({chatPrompt:A,functions:$,functionCall:a,modelConfig:y,model:l,responseFormat:P},{sessionId:u,rateLimiter:p,stream:d,debug:C,debugHideSystemPrompt:r?.debugHideSystemPrompt??this.options?.debugHideSystemPrompt??!R,thinkingTokenBudget:g,showThoughts:m,traceContext:s,abortSignal:r?.abortSignal??ke.abortSignal,stepIndex:c,logger:I,functionCallMode:r?.functionCallMode??this.options?.functionCallMode??"auto",contextCache:E,retry:r?.retry??this.options?.retry,customLabels:r?.customLabels}),U=this.normalizeChatMessages(A,F),ee=String(l??e.getLastUsedChatModel?.()??"");if(B instanceof ReadableStream)this.chatLog.push({model:ee,messages:U});else{for(let D of B.results)U.push(this.buildAssistantLogMessage(D));this.chatLog.push({model:ee,messages:U,modelUsage:B.modelUsage})}return{res:B,debugPromptMetrics:M}}async*forwardCore({ai:e,values:t,mem:n,options:r,stepIndex:s,span:i,traceContext:a,states:c,stopFunctionNames:u,stepContext:l}){let{sessionId:p,functions:d}=r??{},g=r?.functionResultFormatter??this.options?.functionResultFormatter,m=r?.functionCall??this.options?.functionCall,f=this.signatureToolCallingManager,h=r?.strictMode??!1,x=r.model,A=this.usage,y=s===0,C=this.isDebug(e,r),R=this.getLogger(e,r),{functions:I,functionCall:M}=pp(d,m,y,r);this.structuredOutputFunctionFallback&&I.filter(T=>T.name!==Qt).length===0&&(M={type:"function",function:{name:Qt}});let{res:F,debugPromptMetrics:P}=await this.forwardSendRequest({ai:e,values:t,mem:n,options:r,traceContext:a,functions:I,functionCall:M,stepIndex:s});if(F instanceof ReadableStream){yield*mp({ai:e,model:x,res:F,mem:n,sessionId:p,traceId:i?i.spanContext?.().traceId:void 0,functions:I,strictMode:h,span:i,states:c,usage:A,asserts:this.asserts,streamingAsserts:this.streamingAsserts,fieldProcessors:this.fieldProcessors,streamingFieldProcessors:this.streamingFieldProcessors,thoughtFieldName:this.thoughtFieldName,excludeContentFromTrace:this.excludeContentFromTrace,signature:this.signature,logger:R,debugPromptMetrics:P,debug:C,functionResultFormatter:g,signatureToolCallingManager:f,stopFunctionNames:u,disableMemoryCleanup:r.disableMemoryCleanup,stepContext:l,abortSignal:r.abortSignal});let N=this.chatLog[this.chatLog.length-1];if(N){for(let T of c)N.messages.push(this.buildAssistantLogMessage({index:T.index,content:T.content||void 0,functionCalls:T.functionCalls.length>0?T.functionCalls:void 0}));this.usage.length>0&&(N.modelUsage=this.usage[this.usage.length-1])}}else yield*gp({ai:e,model:x,res:F,mem:n,sessionId:p,traceId:i?i.spanContext?.().traceId:void 0,functions:I,span:i,strictMode:h,states:c,usage:A,asserts:this.asserts,fieldProcessors:this.fieldProcessors,thoughtFieldName:this.thoughtFieldName,excludeContentFromTrace:this.excludeContentFromTrace,signature:this.signature,logger:R,debugPromptMetrics:P,debug:C,functionResultFormatter:g,signatureToolCallingManager:f,stopFunctionNames:u,disableMemoryCleanup:r.disableMemoryCleanup,stepContext:l,abortSignal:r.abortSignal})}async*_forward2(e,t,n,r,s,i){this.signatureToolCallingManager=void 0,this.chatLog=[];let a=r?.stopFunction??this.options?.stopFunction,c=Array.isArray(a)?a.map(ne=>ne.toLowerCase()):a?[a.toLowerCase()]:void 0,u=r.maxRetries??this.options?.maxRetries??3,l=r.maxSteps??this.options?.maxSteps??25,p=r.mem??this.options?.mem??new nr,d=r.functions?hn(r.functions):[...this.functions],g=new pr(l),m;if(r.selfTuning){if(m=r.selfTuning===!0?{model:!0,thinkingBudget:!0}:r.selfTuning,m.model!==!1){let q=e.getModelList()?.filter(z=>"model"in z);if(!q||q.length<2)throw new Error("Self-tuning with model selection requires the AI service to have a `models` list with at least 2 chat models. Either configure models on your AI service or disable model selection with `selfTuning: { model: false }`.")}let ne=tc(e,m,r.model?String(r.model):void 0);d.push(ne)}let f={...r},h=r.stepHooks,x=d&&d.length>0,A=r.functionCallMode??this.options?.functionCallMode??"auto";x&&A==="prompt"&&(this.signatureToolCallingManager=new An(d)),x&&A==="auto"&&!e.getFeatures(r.model).functions&&(this.signatureToolCallingManager=new An(d));let y,C,R=this.options?.promptTemplate??cn;this.signatureToolCallingManager&&(this.signature=this.signatureToolCallingManager.processSignature(this.signature),this.setSignature(this.signature));let I=this.signature.hasComplexFields(),M=e.getFeatures?.(r.model),F=r.structuredOutputMode??this.options?.structuredOutputMode??"auto";if(this.structuredOutputFunctionFallback=I&&(F==="function"||F==="auto"&&!M?.structuredOutputs),this.structuredOutputFunctionFallback){let ne={name:Qt,description:"Return the final result. Call this function with the complete output data.",parameters:Jt(this.signature.getOutputFields()),func:async()=>"done"};d.push(ne),c=[...c??[],Qt.toLowerCase()]}let P=e.getFeatures?.(r.model)?.caching?.cacheBreakpoints===!1,N=this.getEffectiveContextCache(e,r),T={functions:this.signatureToolCallingManager?[]:d,thoughtFieldName:this.thoughtFieldName,contextCache:N,examplesInSystem:r.examplesInSystem,ignoreBreakpoints:P,structuredOutputFunctionName:this.structuredOutputFunctionFallback?Qt:void 0,customTemplate:r.customTemplate??this.options?.customTemplate};this.promptTemplate=new R(this.signature,T);let E,O=performance.now();Array.isArray(t)?(Qi(t),E=this.promptTemplate.render(t,{examples:this.examples,demos:this.demos})):E=this.promptTemplate.render(t,{examples:this.examples,demos:this.demos});let S=performance.now()-O,k=this.getMetricsInstruments(),_=this.getMergedCustomLabels(e,r);k&&ks(k,"prompt_render",S,this.getSignatureName(),_);let $=performance.now();p.addRequest(E,r.sessionId);let B=performance.now()-$;k&&ks(k,"memory_update",B,this.getSignatureName(),_);let U=new Map;n.forEach(ne=>{U.set(ne.index,{})});let ee=()=>{let ne=g._consumePendingOptions();if(ne){let{modelConfig:z,...j}=ne;f={...f,...j},z&&(f.modelConfig={...f.modelConfig,...z})}let J=g._consumeFunctionsToAdd();if(J){let z=hn(J);for(let j of z)d.some(X=>X.name===j.name)||d.push(j)}let q=g._consumeFunctionsToRemove();if(q){let z=new Set(q.map(j=>j.toLowerCase()));for(let j=d.length-1;j>=0;j--)z.has(d[j].name.toLowerCase())&&d.splice(j,1)}},D=r?.abortSignal??ke.abortSignal;e:for(let ne=0;ne<l;ne++){if(g._beginStep(ne),ee(),m&&m.model!==!1){let q=d.findIndex(z=>z.name==="adjustGeneration");if(q!==-1){let z=f.model?String(f.model):void 0;d[q]=tc(e,m,z)}}if(g._isStopRequested)break;if(D?.aborted)throw new Ge("between-steps",D.reason??"Aborted between steps");if(h?.beforeStep&&(await h.beforeStep(g),ee(),g._isStopRequested))break;let J=u;for(let q=0;q<=J;q++)try{let z=u+1;for(let X=0;X<z;X++){n.forEach(K=>{K.content="",K.values={},K.functionCalls=[],K.functionsExecuted=new Set,K.xstate={extractedFields:[],streamedIndex:{},s:-1}}),X>0&&U.forEach((K,le)=>{U.set(le,{})});let oe=new Map;n.forEach(K=>{oe.set(K.index,{})});try{let K=this.forwardCore({options:{...f,functions:d},ai:e,values:t,mem:p,stepIndex:ne,span:s,traceContext:i,states:n,stopFunctionNames:c,stepContext:g}),le=!1;try{for await(let pe of K)if(pe!==void 0){let xe=pe.index,se=pe.delta,Ee=oe.get(xe)??{},Te=U.get(xe)??{},$e={},me=!1;for(let De of Object.keys(se)){let Ae=se[De],Pe=Ee[De],Ie;typeof Ae=="string"&&(typeof Pe=="string"||Pe===void 0)?Ie=(Pe??"")+Ae:Array.isArray(Ae)&&(Array.isArray(Pe)||Pe===void 0)?Ie=[...Pe??[],...Ae]:Ie=Ae,Ee[De]=Ie;let ye=Ie,ce=Te[De];if(typeof ye=="string"&&typeof ce=="string")if(ye.startsWith(ce)){let _e=ye.slice(ce.length);_e&&($e[De]=_e,me=!0,Te[De]=ye)}else ce.startsWith(ye)||ye!==ce&&($e[De]=ye,me=!0,Te[De]=ye);else if(Array.isArray(ye)&&Array.isArray(ce)){if(ye.length>ce.length){let _e=ye.slice(ce.length);$e[De]=_e,me=!0,Te[De]=ye}}else JSON.stringify(ye)!==JSON.stringify(ce)&&($e[De]=ye,me=!0,Te[De]=ye)}me&&(yield{version:X,index:pe.index,delta:$e})}}catch(pe){if(pe instanceof fn){if(le=!0,this.structuredOutputFunctionFallback){let xe=pe.calls.find(se=>se.func.name===Qt);if(xe?.args){let se=xe.args;ir(this.signature,se);let Ee=this.signature.getOutputFields();for(let Te of n){let $e={};for(let me of Ee)me.name in se&&!me.isInternal&&($e[me.name]=se[me.name],Te.values[me.name]=se[me.name]);yield{version:X,index:Te.index,delta:$e}}for(let Te of n)await rr(this.asserts,Te.values);if(this.fieldProcessors.length>0)for(let Te of n)await io(this.fieldProcessors,Te.values,p,r.sessionId)}}}else throw pe}if(this.usage.length>0){let pe=this.usage[this.usage.length-1];pe?.tokens&&g._addUsage(pe.tokens.promptTokens??0,pe.tokens.completionTokens??0,pe.tokens.totalTokens??0)}n.some(pe=>pe.functionsExecuted.size>0)&&h?.afterFunctionExecution&&(await h.afterFunctionExecution(g),ee());let Oe=le||g._isStopRequested?!1:fp(p,c,n,f?.sessionId);if(h?.afterStep&&(await h.afterStep(g),ee()),Oe&&!g._isStopRequested&&!D?.aborted){let pe=this.getMetricsInstruments();pe&&Ss(pe,ne+1,l,this.getSignatureName(),_);continue e}if(D?.aborted)throw new Ge("mid-step",D.reason??"Aborted");r?.disableMemoryCleanup||(p.removeByTag("invalid-assistant",r.sessionId),p.removeByTag("correction",r.sessionId),p.removeByTag("error",r.sessionId));let te=this.getMetricsInstruments();if(te){Ss(te,ne+1,l,this.getSignatureName(),_);let pe=new Set;n.forEach(xe=>{xe.functionsExecuted.forEach(se=>pe.add(se))}),pe.size>0&&_l(te,!0,pe.size,!0,!1,this.getSignatureName(),_),Nl(te,this.fieldProcessors.length,this.streamingFieldProcessors.length,this.getSignatureName(),_)}return}catch(K){if(K instanceof Ge)throw K;C=K;let le,Se=this.isDebug(e,r),Oe=this.getLogger(e,r),te=this.getMetricsInstruments(),pe=this.getSignatureName(),xe={error:K,errCount:X,logger:Oe,metricsInstruments:te,signatureName:pe,span:s,debug:Se,customLabels:_};if(s?.recordException(K),K instanceof rt)le=Hl(xe),y=K;else if(K instanceof Ut)le=Wl(xe),y=K;else if(K instanceof We)Vl(xe);else{if(K instanceof It)throw K;{let se=K,Ee=se instanceof dt&&se.status>=500&&se.status<600,Te=se instanceof nt,$e=se instanceof Ct;throw Ee||Te||$e?K:rc(K,e,this.signature)}}if(le&&(p.addTag("error",r.sessionId),p.addRequest([{role:"user",content:this.promptTemplate.renderExtraFields(le)}],r.sessionId),p.addTag("correction",r.sessionId),this.signature.hasComplexFields()))for(let Ee of n)Ee.content="",Ee.values={},Ee.xstate={extractedFields:[],streamedIndex:{},s:-1}}}let j=this.getMetricsInstruments();throw j&&va(j,u,!1,u,this.getSignatureName(),_),rc(new Error(`Unable to fix validation error: ${(y??C)?.message??(y??C)?.toString()??"unknown error"}
|
|
521
521
|
|
|
522
522
|
LLM Output:
|
|
523
523
|
${n.map(X=>X.content).join(`
|
|
524
524
|
---
|
|
525
|
-
`)}`),e,this.signature)}catch(z){let j=z,X=j instanceof
|
|
526
|
-
query: string, items: string[] -> rankedItems: string[] "list of id, 5-words Rationale, relevance score"`,e)}forward=async(e,t,n)=>{let{rankedItems:r}=await super.forward(e,t,n),s=r.map(a=>{let{id:c}=zs.extractIdAndText(a);return c});return{rankedItems:t.items.map((a,c)=>{let u=s[c];return u!==void 0?t.items[u]:void 0}).filter(a=>a!==void 0)}}};var Hs=class{tikaUrl;fetch;constructor(e){let t=e??{url:"http://localhost:9998/"};this.tikaUrl=new URL("/tika",t.url),this.fetch=t.fetch}async _convert(e,t){if(!e)throw new Error("Failed to read file data");let n=t?.format==="html"?"text/html":"text/plain";try{let r={body:e,headers:{Accept:n},method:"PUT"};typeof window>"u"&&typeof process<"u"&&(r.duplex="half");let s=await(this.fetch??fetch)(this.tikaUrl,r);if(!s.ok)throw new Error(`Failed to upload file: ${s.statusText}`);return await s.text()}catch(r){throw new Error(`Error converting file: ${r}`)}}async convert(e,t){let n=[],r=t?.batchSize??10;for(let s=0;s<e.length;s+=r){let a=e.slice(s,s+r).map(u=>this._convert(u,{format:t?.format})),c=await Promise.all(a);n.push(...c)}return n}};var LR=new mt,Ws=class{name;context;constructor(e,t){this.name=e,this.context=t}getName(){return this.name}getContext(){return this.context}},Vs=class{ai;db;debug;constructor(e){this.db=new rn,this.ai=e}getState(){return this.db.getDB()}setState(e){this.db.setDB(e)}setClasses=async(e,t)=>{for(let n of e){let r=await this.ai.embed({texts:n.getContext()},{abortSignal:t?.abortSignal});await this.db.upsert({id:n.getName(),table:"classes",values:r.embeddings[0]})}};async forward(e,t){let{embeddings:n}=await this.ai.embed({texts:[e]},{abortSignal:t?.abortSignal}),s=(await this.db.query({table:"classes",values:n[0]})).matches;if(typeof t?.cutoff=="number"){let{cutoff:a}=t;s=s.filter(c=>c.score<=a)}let i=s.at(0);return i?i.id:""}setOptions(e){typeof e.debug=="boolean"&&(this.debug=e.debug)}};var Pp=new Set(["0o","0s","3a","3b","3d","6b","6o","a","a1","a2","a3","a4","ab","able","about","above","abst","ac","accordance","according","accordingly","across","act","actually","ad","added","adj","ae","af","affected","affecting","affects","after","afterwards","ag","again","against","ah","ain","ain't","aj","al","all","allow","allows","almost","alone","along","already","also","although","always","am","among","amongst","amoungst","amount","an","and","announce","another","any","anybody","anyhow","anymore","anyone","anything","anyway","anyways","anywhere","ao","ap","apart","apparently","appear","appreciate","appropriate","approximately","ar","are","aren","arent","aren't","arise","around","as","a's","aside","ask","asking","associated","at","au","auth","av","available","aw","away","awfully","ax","ay","az","b","b1","b2","b3","ba","back","bc","bd","be","became","because","become","becomes","becoming","been","before","beforehand","begin","beginning","beginnings","begins","behind","being","believe","below","beside","besides","best","better","between","beyond","bi","bill","biol","bj","bk","bl","bn","both","bottom","bp","br","brief","briefly","bs","bt","bu","but","bx","by","c","c1","c2","c3","ca","call","came","can","cannot","cant","can't","cause","causes","cc","cd","ce","certain","certainly","cf","cg","ch","changes","ci","cit","cj","cl","clearly","cm","c'mon","cn","co","com","come","comes","con","concerning","consequently","consider","considering","contain","containing","contains","corresponding","could","couldn","couldnt","couldn't","course","cp","cq","cr","cry","cs","c's","ct","cu","currently","cv","cx","cy","cz","d","d2","da","date","dc","dd","de","definitely","describe","described","despite","detail","df","di","did","didn","didn't","different","dj","dk","dl","do","does","doesn","doesn't","doing","don","done","don't","down","downwards","dp","dr","ds","dt","du","due","during","dx","dy","e","e2","e3","ea","each","ec","ed","edu","ee","ef","effect","eg","ei","eight","eighty","either","ej","el","eleven","else","elsewhere","em","empty","en","end","ending","enough","entirely","eo","ep","eq","er","es","especially","est","et","et-al","etc","eu","ev","even","ever","every","everybody","everyone","everything","everywhere","ex","exactly","example","except","ey","f","f2","fa","far","fc","few","ff","fi","fifteen","fifth","fify","fill","find","fire","first","five","fix","fj","fl","fn","fo","followed","following","follows","for","former","formerly","forth","forty","found","four","fr","from","front","ft","fu","full","further","furthermore","fy","g","ga","gave","ge","get","gets","getting","gi","give","given","gives","giving","gj","gl","go","goes","going","gone","got","gotten","gr","greetings","gs","gy","h","h2","h3","had","hadn","hadn't","happens","hardly","has","hasn","hasnt","hasn't","have","haven","haven't","having","he","hed","he'd","he'll","hello","help","hence","her","here","hereafter","hereby","herein","heres","here's","hereupon","hers","herself","hes","he's","hh","hi","hid","him","himself","his","hither","hj","ho","home","hopefully","how","howbeit","however","how's","hr","hs","http","hu","hundred","hy","i","i2","i3","i4","i6","i7","i8","ia","ib","ibid","ic","id","i'd","ie","if","ig","ignored","ih","ii","ij","il","i'll","im","i'm","immediate","immediately","importance","important","in","inasmuch","inc","indeed","index","indicate","indicated","indicates","information","inner","insofar","instead","interest","into","invention","inward","io","ip","iq","ir","is","isn","isn't","it","itd","it'd","it'll","its","it's","itself","iv","i've","ix","iy","iz","j","jj","jr","js","jt","ju","just","k","ke","keep","keeps","kept","kg","kj","km","know","known","knows","ko","l","l2","la","largely","last","lately","later","latter","latterly","lb","lc","le","least","les","less","lest","let","lets","let's","lf","like","liked","likely","line","little","lj","ll","ll","ln","lo","look","looking","looks","los","lr","ls","lt","ltd","m","m2","ma","made","mainly","make","makes","many","may","maybe","me","mean","means","meantime","meanwhile","merely","mg","might","mightn","mightn't","mill","million","mine","miss","ml","mn","mo","more","moreover","most","mostly","move","mr","mrs","ms","mt","mu","much","mug","must","mustn","mustn't","my","myself","model","n","n2","na","name","namely","nay","nc","nd","ne","near","nearly","necessarily","necessary","need","needn","needn't","needs","neither","never","nevertheless","new","next","ng","ni","nine","ninety","nj","nl","nn","no","nobody","non","none","nonetheless","noone","nor","normally","nos","not","noted","nothing","novel","now","nowhere","nr","ns","nt","ny","o","oa","ob","obtain","obtained","obviously","oc","od","of","off","often","og","oh","oi","oj","ok","okay","ol","old","om","omitted","on","once","one","ones","only","onto","oo","op","oq","or","ord","os","ot","other","others","otherwise","ou","ought","our","ours","ourselves","out","outside","over","overall","ow","owing","own","ox","oz","p","p1","p2","p3","page","pagecount","pages","par","part","particular","particularly","pas","past","pc","pd","pe","per","perhaps","pf","ph","pi","pj","pk","pl","placed","please","plus","pm","pn","po","poorly","possible","possibly","potentially","pp","pq","pr","predominantly","present","presumably","previously","primarily","probably","promptly","proud","provides","ps","pt","pu","put","py","q","qj","qu","que","quickly","quite","qv","r","r2","ra","ran","rather","rc","rd","re","readily","really","reasonably","recent","recently","ref","refs","regarding","regardless","regards","related","relatively","research","research-articl","respectively","resulted","resulting","results","rf","rh","ri","right","rj","rl","rm","rn","ro","rq","rr","rs","rt","ru","run","rv","ry","s","s2","sa","said","same","saw","say","saying","says","sc","sd","se","sec","second","secondly","section","see","seeing","seem","seemed","seeming","seems","seen","self","selves","sensible","sent","serious","seriously","seven","several","sf","shall","shan","shan't","she","shed","she'd","she'll","shes","she's","should","shouldn","shouldn't","should've","show","showed","shown","showns","shows","si","side","significant","significantly","similar","similarly","since","sincere","six","sixty","sj","sl","slightly","sm","sn","so","some","somebody","somehow","someone","somethan","something","sometime","sometimes","somewhat","somewhere","soon","sorry","sp","specifically","specified","specify","specifying","sq","sr","ss","st","still","stop","strongly","sub","substantially","successfully","such","sufficiently","suggest","sup","sure","sy","system","sz","t","t1","t2","t3","take","taken","taking","tb","tc","td","te","tell","ten","tends","tf","th","than","thank","thanks","thanx","that","that'll","thats","that's","that've","the","their","theirs","them","themselves","then","thence","there","thereafter","thereby","thered","therefore","therein","there'll","thereof","therere","theres","there's","thereto","thereupon","there've","these","they","theyd","they'd","they'll","theyre","they're","they've","thickv","thin","think","third","this","thorough","thoroughly","those","thou","though","thoughh","thousand","three","throug","through","throughout","thru","thus","ti","til","tip","tj","tl","tm","tn","to","together","too","took","top","toward","towards","tp","tq","tr","tried","tries","truly","try","trying","ts","t's","tt","tv","twelve","twenty","twice","two","tx","u","u201d","ue","ui","uj","uk","um","un","under","unfortunately","unless","unlike","unlikely","until","unto","uo","up","upon","ups","ur","us","use","used","useful","usefully","usefulness","uses","using","usually","ut","v","va","value","various","vd","ve","ve","very","via","viz","vj","vo","vol","vols","volumtype","vq","vs","vt","vu","w","wa","want","wants","was","wasn","wasnt","wasn't","way","we","wed","we'd","welcome","well","we'll","well-b","went","were","we're","weren","werent","weren't","we've","what","whatever","what'll","whats","what's","when","whence","whenever","when's","where","whereafter","whereas","whereby","wherein","wheres","where's","whereupon","wherever","whether","which","while","whim","whither","who","whod","whoever","whole","who'll","whom","whomever","whos","who's","whose","why","why's","wi","widely","will","willing","wish","with","within","without","wo","won","wonder","wont","won't","words","world","would","wouldn","wouldnt","wouldn't","www","x","x1","x2","x3","xf","xi","xj","xk","xl","xn","xo","xs","xt","xv","xx","y","y2","yes","yet","yj","yl","you","youd","you'd","you'll","your","youre","you're","yours","yourself","yourselves","you've","yr","ys","yt","z","zero","zi","zz","task"]);function Fp(o,e){return o.filter(t=>!e.has(t))}function _p(o){let e={};for(let t of o)e[t]=(e[t]||0)+1;return e}function yn(o){let e=o.normalize("NFD");return e=e.replace(/\b(a|an|the)\b/g," "),e=e.split(/\s+/).join(" "),e=e.replace(/[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/g,""),e.toLowerCase()}function Nf(o,e){return yn(o)===yn(e)?1:0}function Lf(o,e){let t=yn(o).split(" "),n=yn(e).split(" "),r=_p(t),s=_p(n),i=0;for(let u in r){let l=r[u]??0,p=s[u]??0;i+=Math.min(l,p)}if(i===0)return 0;let a=i/t.length,c=i/n.length;return 2*a*c/(a+c)}function $f(o,e,t,n=!1){let r=yn(o).split(" "),s=yn(e).split(" "),i=yn(t).split(" "),a=new Set([...Pp,...r]);s=Fp(s,a),i=Fp(i,a);let c=0,u=c/s.length,l=c/i.length,p=2*u*l/(u+l);return n?l:p}var Np={emScore:Nf,f1Score:Lf,novelF1ScoreOptimized:$f};var Ks=class{ai;program;examples;constructor({ai:e,program:t,examples:n=[]}){if(n.length===0)throw new Error("No examples found");this.ai=e,this.program=t,this.examples=n}async run(e){let t=Date.now(),n=this.examples.length,r=0;for(let i=0;i<n;i++){let a=this.examples[i];if(!a)throw new Error("Invalid example");try{let c=await this.program.forward(this.ai,a,{maxRetries:1}),u=await e({prediction:c,example:a});r+=u}catch(c){console.warn(`Program evaluation failed for example ${i}: ${c instanceof Error?c.message:"Unknown error"}`)}}let s=n>0?r/n:0;this.ai.getOptions().debug&&console.log(`
|
|
525
|
+
`)}`),e,this.signature)}catch(z){let j=z,X=j instanceof dt&&j.status>=500&&j.status<600,oe=j instanceof nt,K=j instanceof Ct,le=j instanceof It;if((X||oe||K||le)&&q<J){let Oe=this.isDebug(e,r),te=this.getLogger(e,r),se=Math.min(6e4,1e3*Math.pow(2,q));Oe&&te&&te({name:"Notification",id:"infrastructure-retry",value:`Infrastructure error (attempt ${q+1}/${J+1}): ${j.message}. Retrying in ${se}ms...`}),s?.addEvent("infrastructure.retry",{attempt:q+1,maxRetries:J,delay:se,errorType:j instanceof dt?"status_error":j instanceof nt?"network_error":j instanceof Ct?"timeout_error":"stream_terminated",errorMessage:j.message}),await new Promise((Ee,Te)=>{let $e=!1,me,De=()=>{D&&me&&D.removeEventListener("abort",me)},Pe=setTimeout(()=>{$e||($e=!0,De(),Ee())},se);if(D){if(me=()=>{$e||($e=!0,clearTimeout(Pe),De(),Te(new Ge("infrastructure-retry-backoff",D.reason?String(D.reason):"Aborted during retry backoff")))},D.aborted){me();return}D.addEventListener("abort",me,{once:!0})}});continue}throw z}}throw k&&Ss(k,l,l,this.getSignatureName(),_),rc(new Error(`Max steps reached: ${l}`),e,this.signature)}validateInputs(e){let t=this.signature.getInputFields();for(let n of t){if(n.isInternal)continue;let r=e[n.name];if(n.isOptional&&r===void 0)continue;let s=n.type;if(s&&(s.name==="url"&&sn(r,n),s.name,s.name,(s.name==="string"||s.name==="code")&&vt(r,n),s.name==="number"&&St(r,n),s.name==="object"&&s.fields&&typeof r=="object"&&r!==null&&this.validateObjectFields(r,s.fields,n.name),s.isArray&&Array.isArray(r)))for(let i=0;i<r.length;i++){let a=r[i];s.name==="string"||s.name==="code"?vt(a,n):s.name==="number"?St(a,n):s.fields&&typeof a=="object"&&a!==null&&this.validateObjectFields(a,s.fields,`${n.name}[${i}]`)}}}validateObjectFields(e,t,n){for(let[r,s]of Object.entries(t)){let i=e[r];if(s.isOptional&&i===void 0)continue;let a={name:`${n}.${r}`,type:{name:s.type,isArray:s.isArray,options:s.options?[...s.options]:void 0,fields:s.fields,minLength:s.minLength,maxLength:s.maxLength,minimum:s.minimum,maximum:s.maximum,pattern:s.pattern,format:s.format},description:s.description,isOptional:s.isOptional};if(s.type==="string"||s.type==="code"?vt(i,a):s.type==="number"?St(i,a):s.type==="object"&&s.fields&&typeof i=="object"&&i!==null&&this.validateObjectFields(i,s.fields,a.name),s.isArray&&Array.isArray(i))for(let c=0;c<i.length;c++){let u=i[c];s.type==="string"||s.type==="code"?vt(u,a):s.type==="number"?St(u,a):s.fields&&typeof u=="object"&&u!==null&&this.validateObjectFields(u,s.fields,`${a.name}[${c}]`)}}}async*_forward1(e,t,n){(!Array.isArray(t)||!t.every(a=>"role"in a))&&this.validateInputs(t);let r=new AbortController;this.activeAbortControllers.add(r),this._stopRequested&&r.abort("Stopped by user (pre-forward)");let s=_t(r.signal,n?.abortSignal??ke.abortSignal),i=s?{...n,abortSignal:s}:n;try{let a=performance.now(),c=this.createStates(n.sampleCount??1),u=performance.now()-a,l=this.getMetricsInstruments(),p=this.getMergedCustomLabels(e,n);l&&ks(l,"state_creation",u,this.getSignatureName(),p);let d=n?.tracer??this.options?.tracer??e.getOptions().tracer,g=this.functions;if(n?.functions&&(g=hn(n.functions,this.functions)),!d){yield*this._forward2(e,t,c,{...i,functions:g});return}let m=g?.map(R=>R.name).join(","),f={signature:JSON.stringify(this.signature.toJSON(),null,2),...this.examples?{examples:JSON.stringify(this.examples,null,2)}:{},...m?{provided_functions:m}:{},...n?.model?{model:n.model}:{},...n?.thinkingTokenBudget?{thinking_token_budget:n.thinkingTokenBudget}:{},...n?.showThoughts?{show_thoughts:n.showThoughts}:{},...n?.maxSteps?{max_steps:n.maxSteps}:{},...n?.maxRetries?{max_retries:n.maxRetries}:{}},h=this.traceLabel&&n.traceLabel?`${this.traceLabel} > ${n.traceLabel}`:n.traceLabel??this.traceLabel,x=h?`AxGen > ${h}`:"AxGen",A=d.startSpan(x,{kind:xt.SERVER,attributes:f}),y=tn.active(),C=Lr.setSpan(y,A);try{if(this.excludeContentFromTrace||A.addEvent("input",{content:JSON.stringify(t,null,2)}),yield*this._forward2(e,t,c,{...i,functions:g},A,C),!this.excludeContentFromTrace){let R=c.map(M=>M.values),I=R.length===1?R[0]:R;A.addEvent("output",{content:JSON.stringify(I,null,2)})}}finally{A.end()}}finally{this.activeAbortControllers.delete(r),this._stopRequested=!1}}async forward(e,t,n){let r=n?.cachingFunction??this.options?.cachingFunction??ke.cachingFunction,s=(()=>{if(!r)return;let d=this.signature.getInputFields().map(g=>g.name);return this.computeCacheKey(t,d)})();if(r&&s){let d=await r(s);if(d!==void 0)return d}let i=performance.now(),a=this.getSignatureName(),c=n?.stream??!1,u=!1,l=0,p=!1;try{let d=this.getMetricsInstruments(),g=this.getMergedCustomLabels(e,n);d&&Dl(d,this.signature.getInputFields().length,this.signature.getOutputFields().length,this.examples?.length??0,this.demos?.length??0,a,g);let m=this._forward1(e,t,n??{}),f=[],h=0,x=0;for await(let F of m)F.version!==h&&(f=[]),h=F.version,f=Da(f,F),x++;l=h;let A=performance.now();p=!!n?.resultPicker;let y=await Bs(f,{resultPicker:n?.resultPicker},n?.mem,n?.sessionId),C=performance.now()-A,I=f[y]?.delta??{},M=Array.isArray(t)?{}:t??{};if(this.trace={...M,...I},p&&this.isDebug(e,n)){let F=this.getLogger(e,n);Fu(f.length,y,C,F)}if(u=!0,d&&($l(d,f.length,p,p?C:void 0,a,g),Ll(d,c,x,void 0,a,g)),r&&s)try{await r(s,I)}catch{}return I}catch(d){throw u=!1,d}finally{let d=performance.now()-i,g=this.getMetricsInstruments(),m=this.getMergedCustomLabels(e,n);g&&(Pl(g,d,u,a,e.getName(),n?.model?String(n.model):void 0,m),l>0&&va(g,l,u,n?.maxRetries??this.options?.maxRetries??3,a,m))}}async*streamingForward(e,t,n){let r=n?.cachingFunction??this.options?.cachingFunction??ke.cachingFunction,s=(()=>{if(!r)return;let p=this.signature.getInputFields().map(d=>d.name);return this.computeCacheKey(t,p)})();if(r&&s){let p;try{p=await r(s)}catch{}if(p!==void 0){yield{version:0,index:0,delta:p};return}}if(!n?.resultPicker){yield*this._forward1(e,t,{...n,stream:!0});return}let i=this._forward1(e,t,{...n,stream:!0}),a=[],c=0;for await(let p of i)p.version!==c&&(a=[]),c=p.version,a=Da(a,p);let u=await Bs(a,{resultPicker:n?.resultPicker},n?.mem,n?.sessionId),l=a[u];if(l){if(r&&s)try{await r(s,l.delta)}catch{}yield{version:c,index:u,delta:l.delta}}}setExamples(e,t){super.setExamples(e,t)}isDebug(e,t){return t?.debug??this.options?.debug??ke.debug??e.getOptions().debug??!1}getLogger(e,t){return t?.logger??this.options?.logger??ke.logger??e.getLogger()}computeCacheKey(e,t){let n=bt("sha256");n.update(this.signature.hash()??"");let r=s=>{let i=typeof s;if(n.update(`|${i}|`),s==null){n.update("null");return}if(i==="string"||i==="number"||i==="boolean"){n.update(String(s));return}if(Array.isArray(s)){n.update("[");for(let a of s)r(a);n.update("]");return}if(typeof s=="object"&&s!==null&&"mimeType"in s&&"data"in s){let a=s;n.update(a.mimeType??"");let c=bt("sha256").update(a.data??"").digest("hex");n.update(c);return}if(typeof s=="object"){let a=s,c=Object.keys(a).sort();for(let u of c)n.update(`{${u}}`),r(a[u]);return}n.update(String(s))};if(Array.isArray(e))for(let s of e){n.update(`role:${s.role}`);let i=t.map(a=>s.values?.[a]);for(let a of i)r(a)}else{let s=t.map(i=>e?.[i]);for(let i of s)r(i)}return n.digest("hex")}},po=class extends Error{details;constructor(e,t,n){super(e),this.name="AxGenerateError",this.details=t,n?.cause&&(this.cause=n.cause)}toJSON(){let e=this.cause;return{name:this.name,message:this.message,details:this.details,cause:e?{name:e.name,message:e.message,stack:e.stack}:void 0,stack:this.stack}}};function rc(o,e,t){let n=o instanceof Error?o:new Error(String(o));if(n instanceof Ge)return n;let r=(n.message||"").toLowerCase();if(r.includes("at least")||r.includes("at most")||r.includes("must match pattern")||r.includes("invalid url")||r.includes("required")||r.includes("missing")||r.includes("valid email")||r.includes("number must be")||n.name==="ValidationError"||n.name==="AssertionError"||n.name==="AxAssertionError"||n.stack?.includes("asserts.ts"))return n;let i=e.getLastUsedChatModel(),a=e.getLastUsedModelConfig(),c={model:i,maxTokens:a?.maxTokens,streaming:a?.stream??!1,signature:{input:t.getInputFields(),output:t.getOutputFields(),description:t.getDescription()}};return new po(`Generate failed: ${n.message}`,c,{cause:n})}var Of=o=>o.replace(/^\W+|\W+$/g,""),Ef=(o,e)=>{let t=o.search(e);if(t===-1)return[o];let n=o.match(e);if(!n)throw new Error("Match failed unexpectedly.");let r=o.substring(0,t),s=o.substring(t+n[0].length);return[r,s]},Mf=o=>{let e=new Set,t=[];for(let n of o)e.has(n)||(e.add(n),t.push(n));return t},Pf=o=>{let e=o.match(/^(\d+)[.,\s]+(.*)$/);if(!e||e.length<3)throw new Error('line must start with a number, a dot and then text. e.g. "1. hello"');let t=Number.parseInt(e[1],10),n=e[2].trim();return{id:t,text:n}},Ff=o=>{let e=o.match(/^(\d+)[.,\s]+(.*)$/);return e&&e[2]!==void 0?e[2].trim():o},_f=(o,e)=>{let t=[];for(let n=0;n<o.length;n+=e)t.push(o.slice(n,n+e));return t},zs={trimNonAlphaNum:Of,splitIntoTwo:Ef,dedup:Mf,extractIdAndText:Pf,extractIndexPrefixedText:Ff,batchArray:_f};var qs=class extends Be{constructor(e){super(`"You are a re-ranker assistant tasked with evaluating a set of content items in relation to a specific question. Your role involves critically analyzing each content item to determine its relevance to the question and re-ranking them accordingly. This process includes assigning a relevance score from 0 to 10 to each content item based on how well it answers the question, its coverage of the topic, and the reliability of its information. This re-ranked list should start with the content item that is most relevant to the question and end with the least relevant. Output only the list."
|
|
526
|
+
query: string, items: string[] -> rankedItems: string[] "list of id, 5-words Rationale, relevance score"`,e)}forward=async(e,t,n)=>{let{rankedItems:r}=await super.forward(e,t,n),s=r.map(a=>{let{id:c}=zs.extractIdAndText(a);return c});return{rankedItems:t.items.map((a,c)=>{let u=s[c];return u!==void 0?t.items[u]:void 0}).filter(a=>a!==void 0)}}};var Hs=class{tikaUrl;fetch;constructor(e){let t=e??{url:"http://localhost:9998/"};this.tikaUrl=new URL("/tika",t.url),this.fetch=t.fetch}async _convert(e,t){if(!e)throw new Error("Failed to read file data");let n=t?.format==="html"?"text/html":"text/plain";try{let r={body:e,headers:{Accept:n},method:"PUT"};typeof window>"u"&&typeof process<"u"&&(r.duplex="half");let s=await(this.fetch??fetch)(this.tikaUrl,r);if(!s.ok)throw new Error(`Failed to upload file: ${s.statusText}`);return await s.text()}catch(r){throw new Error(`Error converting file: ${r}`)}}async convert(e,t){let n=[],r=t?.batchSize??10;for(let s=0;s<e.length;s+=r){let a=e.slice(s,s+r).map(u=>this._convert(u,{format:t?.format})),c=await Promise.all(a);n.push(...c)}return n}};var $R=new gt,Ws=class{name;context;constructor(e,t){this.name=e,this.context=t}getName(){return this.name}getContext(){return this.context}},Vs=class{ai;db;debug;constructor(e){this.db=new rn,this.ai=e}getState(){return this.db.getDB()}setState(e){this.db.setDB(e)}setClasses=async(e,t)=>{for(let n of e){let r=await this.ai.embed({texts:n.getContext()},{abortSignal:t?.abortSignal});await this.db.upsert({id:n.getName(),table:"classes",values:r.embeddings[0]})}};async forward(e,t){let{embeddings:n}=await this.ai.embed({texts:[e]},{abortSignal:t?.abortSignal}),s=(await this.db.query({table:"classes",values:n[0]})).matches;if(typeof t?.cutoff=="number"){let{cutoff:a}=t;s=s.filter(c=>c.score<=a)}let i=s.at(0);return i?i.id:""}setOptions(e){typeof e.debug=="boolean"&&(this.debug=e.debug)}};var Pp=new Set(["0o","0s","3a","3b","3d","6b","6o","a","a1","a2","a3","a4","ab","able","about","above","abst","ac","accordance","according","accordingly","across","act","actually","ad","added","adj","ae","af","affected","affecting","affects","after","afterwards","ag","again","against","ah","ain","ain't","aj","al","all","allow","allows","almost","alone","along","already","also","although","always","am","among","amongst","amoungst","amount","an","and","announce","another","any","anybody","anyhow","anymore","anyone","anything","anyway","anyways","anywhere","ao","ap","apart","apparently","appear","appreciate","appropriate","approximately","ar","are","aren","arent","aren't","arise","around","as","a's","aside","ask","asking","associated","at","au","auth","av","available","aw","away","awfully","ax","ay","az","b","b1","b2","b3","ba","back","bc","bd","be","became","because","become","becomes","becoming","been","before","beforehand","begin","beginning","beginnings","begins","behind","being","believe","below","beside","besides","best","better","between","beyond","bi","bill","biol","bj","bk","bl","bn","both","bottom","bp","br","brief","briefly","bs","bt","bu","but","bx","by","c","c1","c2","c3","ca","call","came","can","cannot","cant","can't","cause","causes","cc","cd","ce","certain","certainly","cf","cg","ch","changes","ci","cit","cj","cl","clearly","cm","c'mon","cn","co","com","come","comes","con","concerning","consequently","consider","considering","contain","containing","contains","corresponding","could","couldn","couldnt","couldn't","course","cp","cq","cr","cry","cs","c's","ct","cu","currently","cv","cx","cy","cz","d","d2","da","date","dc","dd","de","definitely","describe","described","despite","detail","df","di","did","didn","didn't","different","dj","dk","dl","do","does","doesn","doesn't","doing","don","done","don't","down","downwards","dp","dr","ds","dt","du","due","during","dx","dy","e","e2","e3","ea","each","ec","ed","edu","ee","ef","effect","eg","ei","eight","eighty","either","ej","el","eleven","else","elsewhere","em","empty","en","end","ending","enough","entirely","eo","ep","eq","er","es","especially","est","et","et-al","etc","eu","ev","even","ever","every","everybody","everyone","everything","everywhere","ex","exactly","example","except","ey","f","f2","fa","far","fc","few","ff","fi","fifteen","fifth","fify","fill","find","fire","first","five","fix","fj","fl","fn","fo","followed","following","follows","for","former","formerly","forth","forty","found","four","fr","from","front","ft","fu","full","further","furthermore","fy","g","ga","gave","ge","get","gets","getting","gi","give","given","gives","giving","gj","gl","go","goes","going","gone","got","gotten","gr","greetings","gs","gy","h","h2","h3","had","hadn","hadn't","happens","hardly","has","hasn","hasnt","hasn't","have","haven","haven't","having","he","hed","he'd","he'll","hello","help","hence","her","here","hereafter","hereby","herein","heres","here's","hereupon","hers","herself","hes","he's","hh","hi","hid","him","himself","his","hither","hj","ho","home","hopefully","how","howbeit","however","how's","hr","hs","http","hu","hundred","hy","i","i2","i3","i4","i6","i7","i8","ia","ib","ibid","ic","id","i'd","ie","if","ig","ignored","ih","ii","ij","il","i'll","im","i'm","immediate","immediately","importance","important","in","inasmuch","inc","indeed","index","indicate","indicated","indicates","information","inner","insofar","instead","interest","into","invention","inward","io","ip","iq","ir","is","isn","isn't","it","itd","it'd","it'll","its","it's","itself","iv","i've","ix","iy","iz","j","jj","jr","js","jt","ju","just","k","ke","keep","keeps","kept","kg","kj","km","know","known","knows","ko","l","l2","la","largely","last","lately","later","latter","latterly","lb","lc","le","least","les","less","lest","let","lets","let's","lf","like","liked","likely","line","little","lj","ll","ll","ln","lo","look","looking","looks","los","lr","ls","lt","ltd","m","m2","ma","made","mainly","make","makes","many","may","maybe","me","mean","means","meantime","meanwhile","merely","mg","might","mightn","mightn't","mill","million","mine","miss","ml","mn","mo","more","moreover","most","mostly","move","mr","mrs","ms","mt","mu","much","mug","must","mustn","mustn't","my","myself","model","n","n2","na","name","namely","nay","nc","nd","ne","near","nearly","necessarily","necessary","need","needn","needn't","needs","neither","never","nevertheless","new","next","ng","ni","nine","ninety","nj","nl","nn","no","nobody","non","none","nonetheless","noone","nor","normally","nos","not","noted","nothing","novel","now","nowhere","nr","ns","nt","ny","o","oa","ob","obtain","obtained","obviously","oc","od","of","off","often","og","oh","oi","oj","ok","okay","ol","old","om","omitted","on","once","one","ones","only","onto","oo","op","oq","or","ord","os","ot","other","others","otherwise","ou","ought","our","ours","ourselves","out","outside","over","overall","ow","owing","own","ox","oz","p","p1","p2","p3","page","pagecount","pages","par","part","particular","particularly","pas","past","pc","pd","pe","per","perhaps","pf","ph","pi","pj","pk","pl","placed","please","plus","pm","pn","po","poorly","possible","possibly","potentially","pp","pq","pr","predominantly","present","presumably","previously","primarily","probably","promptly","proud","provides","ps","pt","pu","put","py","q","qj","qu","que","quickly","quite","qv","r","r2","ra","ran","rather","rc","rd","re","readily","really","reasonably","recent","recently","ref","refs","regarding","regardless","regards","related","relatively","research","research-articl","respectively","resulted","resulting","results","rf","rh","ri","right","rj","rl","rm","rn","ro","rq","rr","rs","rt","ru","run","rv","ry","s","s2","sa","said","same","saw","say","saying","says","sc","sd","se","sec","second","secondly","section","see","seeing","seem","seemed","seeming","seems","seen","self","selves","sensible","sent","serious","seriously","seven","several","sf","shall","shan","shan't","she","shed","she'd","she'll","shes","she's","should","shouldn","shouldn't","should've","show","showed","shown","showns","shows","si","side","significant","significantly","similar","similarly","since","sincere","six","sixty","sj","sl","slightly","sm","sn","so","some","somebody","somehow","someone","somethan","something","sometime","sometimes","somewhat","somewhere","soon","sorry","sp","specifically","specified","specify","specifying","sq","sr","ss","st","still","stop","strongly","sub","substantially","successfully","such","sufficiently","suggest","sup","sure","sy","system","sz","t","t1","t2","t3","take","taken","taking","tb","tc","td","te","tell","ten","tends","tf","th","than","thank","thanks","thanx","that","that'll","thats","that's","that've","the","their","theirs","them","themselves","then","thence","there","thereafter","thereby","thered","therefore","therein","there'll","thereof","therere","theres","there's","thereto","thereupon","there've","these","they","theyd","they'd","they'll","theyre","they're","they've","thickv","thin","think","third","this","thorough","thoroughly","those","thou","though","thoughh","thousand","three","throug","through","throughout","thru","thus","ti","til","tip","tj","tl","tm","tn","to","together","too","took","top","toward","towards","tp","tq","tr","tried","tries","truly","try","trying","ts","t's","tt","tv","twelve","twenty","twice","two","tx","u","u201d","ue","ui","uj","uk","um","un","under","unfortunately","unless","unlike","unlikely","until","unto","uo","up","upon","ups","ur","us","use","used","useful","usefully","usefulness","uses","using","usually","ut","v","va","value","various","vd","ve","ve","very","via","viz","vj","vo","vol","vols","volumtype","vq","vs","vt","vu","w","wa","want","wants","was","wasn","wasnt","wasn't","way","we","wed","we'd","welcome","well","we'll","well-b","went","were","we're","weren","werent","weren't","we've","what","whatever","what'll","whats","what's","when","whence","whenever","when's","where","whereafter","whereas","whereby","wherein","wheres","where's","whereupon","wherever","whether","which","while","whim","whither","who","whod","whoever","whole","who'll","whom","whomever","whos","who's","whose","why","why's","wi","widely","will","willing","wish","with","within","without","wo","won","wonder","wont","won't","words","world","would","wouldn","wouldnt","wouldn't","www","x","x1","x2","x3","xf","xi","xj","xk","xl","xn","xo","xs","xt","xv","xx","y","y2","yes","yet","yj","yl","you","youd","you'd","you'll","your","youre","you're","yours","yourself","yourselves","you've","yr","ys","yt","z","zero","zi","zz","task"]);function Fp(o,e){return o.filter(t=>!e.has(t))}function _p(o){let e={};for(let t of o)e[t]=(e[t]||0)+1;return e}function yn(o){let e=o.normalize("NFD");return e=e.replace(/\b(a|an|the)\b/g," "),e=e.split(/\s+/).join(" "),e=e.replace(/[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/g,""),e.toLowerCase()}function Nf(o,e){return yn(o)===yn(e)?1:0}function Lf(o,e){let t=yn(o).split(" "),n=yn(e).split(" "),r=_p(t),s=_p(n),i=0;for(let u in r){let l=r[u]??0,p=s[u]??0;i+=Math.min(l,p)}if(i===0)return 0;let a=i/t.length,c=i/n.length;return 2*a*c/(a+c)}function $f(o,e,t,n=!1){let r=yn(o).split(" "),s=yn(e).split(" "),i=yn(t).split(" "),a=new Set([...Pp,...r]);s=Fp(s,a),i=Fp(i,a);let c=0,u=c/s.length,l=c/i.length,p=2*u*l/(u+l);return n?l:p}var Np={emScore:Nf,f1Score:Lf,novelF1ScoreOptimized:$f};var Ks=class{ai;program;examples;constructor({ai:e,program:t,examples:n=[]}){if(n.length===0)throw new Error("No examples found");this.ai=e,this.program=t,this.examples=n}async run(e){let t=Date.now(),n=this.examples.length,r=0;for(let i=0;i<n;i++){let a=this.examples[i];if(!a)throw new Error("Invalid example");try{let c=await this.program.forward(this.ai,a,{maxRetries:1}),u=await e({prediction:c,example:a});r+=u}catch(c){console.warn(`Program evaluation failed for example ${i}: ${c instanceof Error?c.message:"Unknown error"}`)}}let s=n>0?r/n:0;this.ai.getOptions().debug&&console.log(`
|
|
527
527
|
Performance: `,r,"/",n,"Average Score: ",s,`
|
|
528
|
-
`)}};function Lp(){let o=Date.now().toString(36),e=Math.random().toString(36).substring(2,8);return`trace-${o}-${e}`}var dr=class o{gen;options;constructor(e,t){this.gen=e,this.options={name:t.name,storage:t.storage,logInputs:t.logInputs??!0,logOutputs:t.logOutputs??!0,metadata:t.metadata,onTrace:t.onTrace,throwOnError:t.throwOnError??!1}}async*streamingForward(e,t,n){let r=Lp(),s=new Date,i,a;try{let c=this.gen.streamingForward(e,t,n);for await(let u of c)u.partial?i=u.partial:u.delta,yield u}catch(c){throw a=c instanceof Error?c.message:String(c),c}finally{let c=new Date,u=c.getTime()-s.getTime(),l={type:"trace",id:r,name:this.options.name,input:this.options.logInputs?t:{},output:this.options.logOutputs&&i?i:{},startTime:s,endTime:c,durationMs:u,model:n?.model??void 0,metadata:this.options.metadata,error:a};this.saveTrace(l)}}async forward(e,t,n){let r=Lp(),s=new Date,i,a;try{return i=await this.gen.forward(e,t,n),i}catch(c){throw a=c instanceof Error?c.message:String(c),c}finally{let c=new Date,u=c.getTime()-s.getTime(),l={type:"trace",id:r,name:this.options.name,input:this.options.logInputs?t:{},output:this.options.logOutputs&&i?i:{},startTime:s,endTime:c,durationMs:u,model:n?.model??void 0,metadata:this.options.metadata,error:a};this.saveTrace(l)}}async saveTrace(e){try{await this.options.storage.save(this.options.name,e),this.options.onTrace&&this.options.onTrace(e)}catch(t){if(this.options.throwOnError)throw t;console.warn("AxTraceLogger: Failed to save trace:",t)}}getGen(){return this.gen}getName(){return this.options.name}getStorage(){return this.options.storage}setMetadata(e){this.options.metadata=e}clone(e){return new o(e??this.gen.clone(),{name:this.options.name,storage:this.options.storage,logInputs:this.options.logInputs,logOutputs:this.options.logOutputs,metadata:this.options.metadata,onTrace:this.options.onTrace,throwOnError:this.options.throwOnError})}};function $p(o){return Ve.create(o)}function
|
|
528
|
+
`)}};function Lp(){let o=Date.now().toString(36),e=Math.random().toString(36).substring(2,8);return`trace-${o}-${e}`}var dr=class o{gen;options;constructor(e,t){this.gen=e,this.options={name:t.name,storage:t.storage,logInputs:t.logInputs??!0,logOutputs:t.logOutputs??!0,metadata:t.metadata,onTrace:t.onTrace,throwOnError:t.throwOnError??!1}}async*streamingForward(e,t,n){let r=Lp(),s=new Date,i,a;try{let c=this.gen.streamingForward(e,t,n);for await(let u of c)u.partial?i=u.partial:u.delta,yield u}catch(c){throw a=c instanceof Error?c.message:String(c),c}finally{let c=new Date,u=c.getTime()-s.getTime(),l={type:"trace",id:r,name:this.options.name,input:this.options.logInputs?t:{},output:this.options.logOutputs&&i?i:{},startTime:s,endTime:c,durationMs:u,model:n?.model??void 0,metadata:this.options.metadata,error:a};this.saveTrace(l)}}async forward(e,t,n){let r=Lp(),s=new Date,i,a;try{return i=await this.gen.forward(e,t,n),i}catch(c){throw a=c instanceof Error?c.message:String(c),c}finally{let c=new Date,u=c.getTime()-s.getTime(),l={type:"trace",id:r,name:this.options.name,input:this.options.logInputs?t:{},output:this.options.logOutputs&&i?i:{},startTime:s,endTime:c,durationMs:u,model:n?.model??void 0,metadata:this.options.metadata,error:a};this.saveTrace(l)}}async saveTrace(e){try{await this.options.storage.save(this.options.name,e),this.options.onTrace&&this.options.onTrace(e)}catch(t){if(this.options.throwOnError)throw t;console.warn("AxTraceLogger: Failed to save trace:",t)}}getGen(){return this.gen}getName(){return this.options.name}getStorage(){return this.options.storage}setMetadata(e){this.options.metadata=e}clone(e){return new o(e??this.gen.clone(),{name:this.options.name,storage:this.options.storage,logInputs:this.options.logInputs,logOutputs:this.options.logOutputs,metadata:this.options.metadata,onTrace:this.options.onTrace,throwOnError:this.options.throwOnError})}};function $p(o){return Ve.create(o)}function ft(o,e){let t=typeof o=="string"?Ve.create(o):o;return new Be(t,e)}var Dp=o=>{console.log(o)},oc=(o=Dp)=>{let e=new gt,t=e.gray("\u2500".repeat(50)),n=e.gray("\u2501".repeat(50));return r=>{let s="";switch(r.name){case"OptimizationStart":s=`
|
|
529
529
|
${e.blueBright("\u25CF ")}${e.whiteBright("Optimization Started")}
|
|
530
530
|
${t}
|
|
531
531
|
${e.white("Optimizer:")} ${e.cyan(r.value.optimizerType)}
|
|
@@ -607,7 +607,7 @@ ${t}`.trim()}function Xf(o){let e=o.toLowerCase().replace(/[^a-z0-9]+/g,"-").rep
|
|
|
607
607
|
|
|
608
608
|
`);e.setDescription(r)}},mr=class extends Ot{aceConfig;playbook;baseInstruction;generatorHistory=[];deltaHistory=[];reflectorProgram;curatorProgram;program;constructor(e,t){super(e),this.aceConfig={...eh,...t},this.playbook=t?.initialPlaybook!==void 0?$t(t.initialPlaybook):Ys()}reset(){super.reset(),this.playbook=this.aceConfig.initialPlaybook!==void 0?$t(this.aceConfig.initialPlaybook):Ys(),this.baseInstruction=void 0,this.generatorHistory=[],this.deltaHistory=[]}hydrate(e,t){this.program=e,this.baseInstruction=t?.baseInstruction??e.getSignature().getDescription()??void 0,this.playbook=t?.playbook!==void 0?$t(t.playbook):this.aceConfig.initialPlaybook!==void 0?$t(this.aceConfig.initialPlaybook):Ys(),this.generatorHistory=[...t?.artifact?.feedback??[]],this.deltaHistory=[...t?.artifact?.history??[]]}getPlaybook(){return $t(this.playbook)}getBaseInstruction(){return this.baseInstruction}getArtifact(){return{playbook:$t(this.playbook),feedback:[...this.generatorHistory],history:[...this.deltaHistory]}}applyCurrentState(e){let t=e??this.program;if(!t)throw new Error("AxACE: no program available to apply playbook state");let n=this.baseInstruction??t.getSignature().getDescription()??"";t.setDescription?.(this.composeInstruction(n,this.playbook))}configureAuto(e){switch(e){case"light":this.aceConfig.maxEpochs=1,this.aceConfig.maxReflectorRounds=1;break;case"medium":this.aceConfig.maxEpochs=2,this.aceConfig.maxReflectorRounds=2;break;case"heavy":this.aceConfig.maxEpochs=3,this.aceConfig.maxReflectorRounds=3;break}}async compile(e,t,n,r){let s=r?.aceOptions;s&&(Object.assign(this.aceConfig,{maxEpochs:s.maxEpochs??this.aceConfig.maxEpochs,maxReflectorRounds:s.maxReflectorRounds??this.aceConfig.maxReflectorRounds,maxSectionSize:s.maxSectionSize??this.aceConfig.maxSectionSize,similarityThreshold:s.similarityThreshold??this.aceConfig.similarityThreshold,allowDynamicSections:s.allowDynamicSections??this.aceConfig.allowDynamicSections}),s.initialPlaybook&&(this.playbook=$t(s.initialPlaybook)));let i=Date.now();this.validateExamples(t),this.program=e;let a=await this.extractProgramInstruction(e),c=e.getSignature().getDescription()??"";this.baseInstruction=a??c,this.generatorHistory=[],this.deltaHistory=[];let u=Number.NEGATIVE_INFINITY,l=0,p=Math.max(this.aceConfig.maxEpochs,1),d=p*t.length;try{for(let x=0;x<p;x++)for(let A=0;A<t.length;A++){let y=t[A],C=this.composeInstruction(a??c,this.playbook);e.setDescription?.(C);let R=await e.forward(this.studentAI,y);this.stats.totalCalls+=1;let I=await n({prediction:R,example:y});typeof I=="number"&&(this.stats.bestScore=Math.max(this.stats.bestScore,I),u=Math.max(u,I));let M=R?.severity,F=y?.severity,P=this.createGeneratorOutput(R,y),N=F&&M&&F!==M,T=await this.runReflectionRounds({example:y,generatorOutput:P,feedback:F&&M&&F!==M?`Expected severity "${F}" but model predicted "${M}".`:void 0}),E=await this.runCurator({program:e,example:y,reflection:T,playbook:this.playbook}),O=this.normalizeCuratorOperations(E?.operations);O.length===0&&N&&(O=this.inferOperationsFromReflection(T)),O=this.resolveCuratorOperationTargets(O,this.playbook,T,P);let S=E||O.length>0?{...E??{},operations:O}:void 0,k=[];if(O.length>0){let ee=this.collectProtectedBulletIds(O),D=ic(this.playbook,O,{maxSectionSize:this.aceConfig.maxSectionSize,allowDynamicSections:this.aceConfig.allowDynamicSections,enableAutoPrune:!0,protectedBulletIds:ee});k=D.updatedBulletIds,D.autoRemoved.length>0&&(O.push(...D.autoRemoved),S&&(S.operations=O))}if(T?.bulletTags)for(let ee of T.bulletTags)ac(this.playbook,ee.id,ee.tag);O.length>0&&k.length>0&&cc(this.playbook,this.aceConfig.similarityThreshold);let _={example:y,prediction:R,score:typeof I=="number"?I:0,generatorOutput:P,reflection:T,curator:S,timestamp:new Date().toISOString()};this.generatorHistory.push(_),k.length>0&&S?.operations?.length&&this.deltaHistory.push({epoch:x,exampleIndex:A,operations:S.operations}),l+=1,this.currentRound=l;let $=typeof I=="number"&&Number.isFinite(I)?I:0,B=Number.isFinite(u)?u:$,U={...r??{},maxIterations:d};await this.updateOptimizationProgress(l,$,{epoch:x,exampleIndex:A,playbookBullets:this.playbook.stats.bulletCount},"ACE",{epochs:p,totalRounds:d},B,{playbookBullets:this.playbook.stats.bulletCount},void 0,U),this.stats.convergenceInfo.finalImprovement=Math.max(this.stats.convergenceInfo.finalImprovement,$)}}finally{e.setDescription?.(c)}let g=Date.now()-i;this.stats.resourceUsage.totalTime=g,this.stats.convergenceInfo.converged=!0,this.stats.bestScore=Number.isFinite(u)?u:0;let m={playbook:$t(this.playbook),feedback:[...this.generatorHistory],history:[...this.deltaHistory]},f=new fo({baseInstruction:a??c,playbook:this.playbook,artifact:m,bestScore:Number.isFinite(u)?u:0,stats:this.stats,optimizerType:"ACE",optimizationTime:g,totalRounds:l,converged:this.stats.convergenceInfo.converged});return{stats:this.stats,bestScore:Number.isFinite(u)?u:0,finalConfiguration:{strategy:"ace",epochs:p},optimizedProgram:f,playbook:$t(this.playbook),artifact:m}}async applyOnlineUpdate(e){if(!this.program)throw new Error("AxACE: `compile` must be run before `applyOnlineUpdate`");let t=this.createGeneratorOutput(e.prediction,e.example),n=e.prediction?.severity,r=e.example?.severity,s=await this.runReflectionRounds({example:e.example,generatorOutput:t,feedback:e.feedback??(r&&n&&r!==n?`Expected severity "${r}" but model predicted "${n}".`:void 0)}),i=await this.runCurator({program:this.program,example:e.example,reflection:s,playbook:this.playbook}),a=this.normalizeCuratorOperations(i?.operations),c=r&&n&&r!==n;a.length===0&&c&&(a=this.inferOperationsFromReflection(s)),a=this.resolveCuratorOperationTargets(a,this.playbook,s,t);let u=i||a.length>0?{...i??{},operations:a}:void 0;if(s?.bulletTags)for(let p of s.bulletTags)ac(this.playbook,p.id,p.tag);if(a.length>0){let p=this.collectProtectedBulletIds(a),d=ic(this.playbook,a,{maxSectionSize:this.aceConfig.maxSectionSize,allowDynamicSections:this.aceConfig.allowDynamicSections,enableAutoPrune:!0,protectedBulletIds:p});d.autoRemoved.length>0&&(a.push(...d.autoRemoved),u&&(u.operations=a)),cc(this.playbook,this.aceConfig.similarityThreshold)}let l={example:e.example,prediction:e.prediction,score:0,generatorOutput:t,reflection:s,curator:u,timestamp:new Date().toISOString()};return this.generatorHistory.push(l),u}composeInstruction(e,t){return[e.trim(),"",bn(t)].filter(r=>r.trim().length>0).join(`
|
|
609
609
|
|
|
610
|
-
`)}async extractProgramInstruction(e){try{return e.getSignature().getDescription()??void 0}catch{return}}createGeneratorOutput(e,t){let n=e?.thought?.toString()??"",r=Array.isArray(e?.bullet_ids)?e?.bullet_ids:[];return{reasoning:n,answer:e,bulletIds:r,trajectory:JSON.stringify({example:t,prediction:e}),metadata:{predictedSeverity:e?.severity,expectedSeverity:t?.severity}}}resolveCuratorOperationTargets(e,t,n,r){if(!e.length)return e;let s=[],i=new Set(e.map(l=>l.bulletId).filter(l=>typeof l=="string")),a=new Map,c=(l,p)=>{if(i.has(l))return;let d=this.locateBullet(t,l);if(!d)return;let g=a.get(d.section)??{harmful:[],primary:[],generator:[]};g[p].push(d.id),a.set(d.section,g)};for(let l of n?.bulletTags??[]){let p=l.tag==="harmful"?"harmful":"primary";c(l.id,p)}if(r?.bulletIds)for(let l of r.bulletIds)c(l,"generator");let u=l=>{let p=a.get(l);if(!p)return this.locateFallbackBullet(t,l,i);let d=m=>{for(;m.length>0;){let f=m.shift();if(!i.has(f))return f}},g=d(p.harmful)??d(p.primary)??d(p.generator);return g||this.locateFallbackBullet(t,l,i)};for(let l of e){if((l.type==="UPDATE"||l.type==="REMOVE")&&!l.bulletId){let p=u(l.section);p&&(l.bulletId=p,i.add(p))}(l.type==="UPDATE"||l.type==="REMOVE")&&!l.bulletId||s.push(l)}return s}locateBullet(e,t){for(let n of Object.values(e.sections)){let r=n.find(s=>s.id===t);if(r)return r}}locateFallbackBullet(e,t,n){let r=e.sections[t]??[];for(let s of r)if(!n.has(s.id))return s.id}collectProtectedBulletIds(e){let t=new Set;for(let n of e)n.type==="UPDATE"&&n.bulletId&&t.add(n.bulletId);return t}normalizeCuratorOperations(e){if(!e)return[];if(Array.isArray(e)){let t=[],n=new Set;for(let r of e){if(!r||typeof r!="object")continue;let s=r.type??"ADD",i=typeof s=="string"?s.toUpperCase():"ADD",a=i==="UPDATE"?"UPDATE":i==="REMOVE"?"REMOVE":"ADD",c=r.section??"Guidelines",u=typeof c=="string"&&c.trim().length>0?c.trim():"Guidelines",l=r.content??"",p=typeof l=="string"?l.trim():"";if(a!=="REMOVE"&&p.length===0)continue;let d=r.bulletId??r.id,g=typeof d=="string"&&d.trim().length>0?d.trim():void 0,f=[a,u,p,g??""].join(":");if(n.has(f))continue;n.add(f);let h={type:a,section:u};a!=="REMOVE"&&(h.content=p),g&&(h.bulletId=g);let x=r.metadata;x&&typeof x=="object"&&(h.metadata={...x}),t.push(h)}return t}if(typeof e=="string")try{let t=JSON.parse(e);return this.normalizeCuratorOperations(t)}catch{return[]}if(typeof e=="object"){let t=e;if(t&&Array.isArray(t.operations))return this.normalizeCuratorOperations(t.operations);if(t&&typeof t.operations=="string")try{let n=JSON.parse(t.operations);return this.normalizeCuratorOperations(n)}catch{return[]}return[]}return[]}inferOperationsFromReflection(e){if(!e)return[];let t=[],n=new Set,r=(s,i)=>{if(!i)return;let a=i.trim();if(!a||a.toLowerCase().startsWith("no error"))return;let u=`${s}:${a}`;n.has(u)||(n.add(u),t.push({type:"ADD",section:s,content:a}))};return r("Guidelines",e.keyInsight),r("Response Strategies",e.correctApproach),r("Common Pitfalls",e.errorIdentification),r("Root Cause Notes",e.rootCauseAnalysis),t}async runReflectionRounds({example:e,generatorOutput:t,feedback:n}){let r=Math.max(this.aceConfig.maxReflectorRounds,1),s;for(let i=0;i<r;i++){let a=await this.runReflector({example:e,generatorOutput:t,feedback:n,previousReflection:s});if(!a)break;s=a;let c=a.errorIdentification?.toLowerCase().trim()??"";if(a.metadata?.resolved===!0||c.length===0||c.startsWith("no error")||c.startsWith("resolved"))break}return s}async runReflector({example:e,generatorOutput:t,feedback:n,previousReflection:r}){let s=this.getOrCreateReflectorProgram(),i=this.teacherAI??this.studentAI;try{let a={severity:e?.severity,policyHint:e?.policyHint},l=(this.program?.getSignature()?.getInputFields()??[]).reduce((d,g)=>(g.name in e&&(d[g.name]=e[g.name]),d),{});return await s.forward(i,{question:JSON.stringify(l),generator_answer:JSON.stringify(t.answer),generator_reasoning:t.reasoning,playbook:JSON.stringify({markdown:bn(this.playbook),structured:this.playbook}),expected_answer:a.severity||a.policyHint?JSON.stringify(a):void 0,feedback:n,previous_reflection:r?JSON.stringify(r):void 0})}catch(a){this.verbose&&console.warn("[AxACE] Reflector error:",a instanceof Error?a.message:a);return}}async runCurator({program:e,example:t,reflection:n,playbook:r}){if(!n)return;let s=this.getOrCreateCuratorProgram(),i=this.teacherAI??this.studentAI,u=e.getSignature().getInputFields().reduce((l,p)=>(p.name in t&&(l[p.name]=t[p.name]),l),{});try{return await s.forward(i,{playbook:JSON.stringify({markdown:bn(r),structured:r}),reflection:JSON.stringify(n),question_context:JSON.stringify(u),token_budget:1024})}catch(l){this.verbose&&console.warn("[AxACE] Curator error:",l instanceof Error?l.message:l);return}}getOrCreateReflectorProgram(){if(!this.reflectorProgram){let e=V().input("question",V.string("Original task input serialized as JSON")).input("generator_answer",V.string("Generator output serialized as JSON")).input("generator_reasoning",V.string("Generator reasoning trace").optional()).input("playbook",V.string("Current context playbook rendered as markdown")).input("expected_answer",V.string("Expected output when ground truth is available").optional()).input("feedback",V.string("External feedback or reward signal").optional()).input("previous_reflection",V.string("Most recent reflection JSON when running multi-round refinement").optional()).output("reasoning",V.string("Step-by-step analysis of generator performance")).output("errorIdentification",V.string("Specific mistakes detected")).output("rootCauseAnalysis",V.string("Underlying cause of the error")).output("correctApproach",V.string("What the generator should do differently")).output("keyInsight",V.string("Reusable insight to remember")).output("bulletTags",V.json("Array of {id, tag} entries referencing playbook bullets")).build();this.reflectorProgram=gt(e)}return this.reflectorProgram}getOrCreateCuratorProgram(){if(!this.curatorProgram){let e=V().input("playbook",V.string("Current playbook serialized as JSON")).input("reflection",V.string("Latest reflection output serialized as JSON")).input("question_context",V.string("Original task input serialized as JSON")).input("token_budget",V.number("Approximate token budget for curator response").optional()).output("reasoning",V.string("Justification for the proposed updates")).output("operations",V.json("List of operations with type/section/content fields")).build();this.curatorProgram=gt(e)}return this.curatorProgram}};function zp(o,e,t=0){let n=new Set([...Object.keys(o),...Object.keys(e)]),r=!0,s=!1;for(let i of n){let a=o[i]??0,c=e[i]??0;if(a+t<c){r=!1;break}a>c+t&&(s=!0)}return r&&s}function ho(o,e=0){let t=[];for(let n=0;n<o.length;n++){let r=0,s=!1;for(let i=0;i<o.length;i++)if(n!==i){if(zp(o[i].scores,o[n].scores,e)){s=!0;break}zp(o[n].scores,o[i].scores,e)&&r++}s||t.push({idx:o[n].idx,scores:o[n].scores,dominated:r})}return t}function gr(o){if(o.length===0)return;let e=Object.keys(o[0]??{});if(e.length!==2)return;let[t,n]=e,r=[...o].sort((a,c)=>(c[t]??0)-(a[t]??0)),s=0,i=0;for(let a of r){let c=a[t]??0,u=a[n]??0,l=Math.max(u-i,0);s+=c*l,i=Math.max(i,u)}return s}function lc(o){if(o.length===0)return 0;let e=0;for(let t of o)e+=t;return e/o.length}function qp(o){let e={},t={};for(let r of o)for(let[s,i]of Object.entries(r))e[s]=(e[s]||0)+(typeof i=="number"?i:0),t[s]=(t[s]||0)+1;let n={};for(let[r,s]of Object.entries(e))n[r]=s/Math.max(t[r]||1,1);return n}function pc(o,e){let t=new Set;for(let l of o)for(let p of l)t.add(p);let r=[...Array.from(t)].sort((l,p)=>(e[l]??0)-(e[p]??0)),s=new Set,i=(l,p)=>{for(let d of o){if(!d.has(l))continue;let g=!1;for(let m of p)if(d.has(m)){g=!0;break}if(!g)return!1}return!0},a=!0;for(;a;){a=!1;for(let l of r){if(s.has(l))continue;let p=new Set(r.filter(d=>d!==l&&!s.has(d)));if(i(l,p)){s.add(l),a=!0;break}}}let c=r.filter(l=>!s.has(l)),u=new Set(c);return o.map(l=>{let p=new Set;for(let d of l)u.has(d)&&p.add(d);return p})}function Hp(o,e,t){let n=pc(o,e),r={};for(let c of n)for(let u of c)r[u]=(r[u]||0)+1;let s=[];for(let[c,u]of Object.entries(r)){let l=Number(c);for(let p=0;p<u;p++)s.push(l)}if(s.length===0)return 0;let i=typeof t=="function"?t():Math.random(),a=Math.floor(i*s.length);return s[a]}function th(o){return o.size===0?{score:0}:Object.fromEntries([...o].map(e=>[e,0]))}function Xs(o,e=800){if(typeof o=="string"){let t=o.trim();return t.length<=e?t:`${t.slice(0,Math.max(0,e-3))}...`}try{let t=JSON.stringify(o,null,2).trim();return t.length<=e?t:`${t.slice(0,Math.max(0,e-3))}...`}catch{let t=String(o).trim();return t.length<=e?t:`${t.slice(0,Math.max(0,e-3))}...`}}var un=class o extends Ot{numTrials;minibatch;minibatchSize;earlyStoppingTrials;minImprovementThreshold;sampleCount;paretoSetSize;crossoverEvery;tieEpsilon;feedbackMemorySize;feedbackMemory=[];mergeMax;mergesUsed=0;mergesDue=0;totalMergesTested=0;lastIterFoundNewProgram=!1;mergeAttemptKeys=new Set;mergeCompositionKeys=new Set;static REFLECTION_PROMPT_TEMPLATE="I provided an assistant with the following instructions to perform a task for me:\n```\n<curr_instructions>\n```\n\nThe following are examples of different task inputs provided to the assistant along with the assistant's response for each of them, and some feedback on how the assistant's response could be better:\n```\n<inputs_outputs_feedback>\n```\n\nYour task is to write a new instruction for the assistant. Read the inputs carefully and identify the input format and infer detailed task description about the task I wish to solve with the assistant. Read all the assistant responses and the corresponding feedback. Identify all niche and domain specific factual information about the task and include it in the instruction, as a lot of it may not be available to the assistant in the future. The assistant may have utilized a generalizable strategy to solve the task, if so, include that in the instruction as well. Provide the new instructions within ``` blocks.";rngState=123456789;samplerState={epoch:-1,shuffled:[],freq:new Map};localScoreHistory=[];localConfigurationHistory=[];constructor(e){super(e);let t=e?.seed,n=Number.isFinite(t)?Math.floor(Number(t)):0;this.rngState=n&&n!==0?n:123456789,this.numTrials=e.numTrials??30,this.minibatch=e.minibatch??!0,this.minibatchSize=e.minibatchSize??20,this.earlyStoppingTrials=e.earlyStoppingTrials??5,this.minImprovementThreshold=e.minImprovementThreshold??0,this.sampleCount=e.sampleCount??1;let r=e?.paretoSetSize;this.paretoSetSize=r&&r>0?Math.min(1e3,Math.max(5,Math.floor(r))):Math.max(10,Math.min(200,this.minibatchSize*3));let s=e?.crossoverEvery;this.crossoverEvery=Math.max(0,Math.floor(s??Math.max(3,Math.floor(this.numTrials/4))));let i=e?.tieEpsilon;this.tieEpsilon=Number.isFinite(i)?i:0;let a=e?.feedbackMemorySize;this.feedbackMemorySize=Math.max(0,Math.floor(a??4));let c=e?.mergeMax;this.mergeMax=Math.max(0,Math.floor(c??5)),this.mergesUsed=0,this.stats.convergenceInfo.convergenceThreshold=this.minImprovementThreshold}reset(){super.reset(),this.stats.convergenceInfo.convergenceThreshold=this.minImprovementThreshold,this.localScoreHistory=[],this.localConfigurationHistory=[],this.feedbackMemory=[],this.mergesUsed=0,this.mergesDue=0,this.totalMergesTested=0,this.lastIterFoundNewProgram=!1,this.mergeAttemptKeys.clear(),this.mergeCompositionKeys.clear(),this.samplerState.epoch=-1,this.samplerState.shuffled=[],this.samplerState.freq.clear()}async compile(e,t,n,r){let s=Date.now();this.validateExamples(t),r?.auto&&this.configureAuto(r.auto);let i=r?.maxMetricCalls;if(!Number.isFinite(i)||i<=0)throw new Error("AxGEPA: options.maxMetricCalls must be set to a positive integer");let a=Math.floor(i),c=r?.validationExamples,u=r?.feedbackExamples,l=(c&&c.length>0?c:t).slice(0,this.paretoSetSize),p=q=>{let z=Object.keys(q).sort().reduce((j,X)=>(j[X]=q[X],j),{});return JSON.stringify(z)},d=new Set(t.map(q=>p(q))),g=u&&u.length>0?u.filter(q=>d.has(p(q))):t,m=g.length>0?g:t,f=this.getInstructionTargets(e);if(f.length===0)throw new Error("AxGEPA: program has no instruction-bearing nodes to optimize");let h=f.map(q=>q.id),x=q=>{for(let z of f){let j=q[z.id];typeof j=="string"&&z.program.setInstruction?.(j)}},A=async(q,z)=>{let j=await n({prediction:q,example:z});if(typeof j=="number")return Number.isFinite(j)?{score:j}:{};if(!j||typeof j!="object")return{};let X={};for(let[oe,K]of Object.entries(j))typeof K=="number"&&Number.isFinite(K)&&(X[oe]=K);return X},y=q=>{let z=r?.paretoMetricKey,j=r?.paretoScalarize;if(typeof j=="function")return j(q);if(z)return Number.isFinite(q[z])?q[z]:0;let X=Object.values(q);return X.length?X.reduce((oe,K)=>oe+K,0)/X.length:0},C=this.getOptimizerLogger(r),R=r?.verbose??this.verbose?q=>console.log(`[GEPA] ${q}`):q=>{},I=new Set,M=async(q,z,j,X=!1)=>{let oe=z.length;if(this.stats.totalCalls+oe>a){if(X)throw new Error(`AxGEPA: options.maxMetricCalls=${a} is too small to evaluate the initial Pareto set; need at least ${oe} metric calls`);return}let K=[];R(`${j}: evaluating ${z.length} example${z.length===1?"":"s"}`);for(let[le,Se]of z.entries()){x(q);let Oe,te;try{Oe=await e.forward(this.studentAI,Se,{sampleCount:this.sampleCount}),te=await A(Oe,Se);for(let xe of Object.keys(te))I.add(xe)}catch(xe){let se=xe instanceof Error?xe.message:String(xe);Oe={error:se},te=th(I),R(`Evaluation failed during ${j}; scoring this example as zero. Error: ${se}`)}this.stats.totalCalls+=1;let pe=y(te);K.push({input:Se,prediction:Oe,scores:te,scalar:pe}),R(`${j}: completed ${le+1}/${z.length} (score=${pe.toFixed(3)})`)}return{rows:K,avg:qp(K.map(le=>le.scores)),scalars:K.map(le=>le.scalar),sum:K.reduce((le,Se)=>le+Se.scalar,0)}},F={};for(let q of f)F[q.id]=await this.getBaseInstruction(q.program);let P=await M(F,l,"initial Pareto evaluation",!0),N=[{cfg:{...F},parent:void 0,scores:P.avg}],T=[P.scalars];C?.({name:"OptimizationStart",value:{optimizerType:"GEPA",exampleCount:t.length,validationCount:l.length,config:{numTrials:this.numTrials,minibatch:this.minibatch,mergeMax:this.mergeMax,tunableCount:f.length}}}),R(`Starting GEPA optimization: ${t.length} train, ${l.length} validation, maxCalls=${a}`);let E=0,O=new Set,S=ho(N.map((q,z)=>({idx:z,scores:q.scores})),this.tieEpsilon).map(q=>q.idx),k;for(let q=0;q<this.numTrials&&!(a!==void 0&&this.stats.totalCalls>=Math.max(1,Math.floor(a)));q++){let z=T[0]?.length??0,j=[];for(let ce=0;ce<z;ce++){let _e=Number.NEGATIVE_INFINITY,Ye=new Set;for(let Ke=0;Ke<T.length;Ke++){let tt=T[Ke][ce];tt>_e+this.tieEpsilon?(_e=tt,Ye.clear(),Ye.add(Ke)):Math.abs(tt-_e)<=this.tieEpsilon&&Ye.add(Ke)}j.push(Ye)}let X=T.map(ce=>lc(ce));if(this.mergeMax>0&&this.mergesDue>0&&this.lastIterFoundNewProgram){let ce=Ne=>{let b=[],w=Ne;for(;w!==void 0;)b.push(w),w=N[w]?.parent;return b},_e=Ne=>Ne.length?Ne[Math.floor(this.rand()*Ne.length)]:void 0,Ye=pc(j,X),Ke=new Set;for(let Ne of Ye)for(let b of Ne)Ke.add(b);let tt=Array.from(Ke),ge;for(let Ne=0;Ne<10&&!ge&&!(tt.length<2);Ne++){let b=_e(tt),w=_e(tt);if(b===w)continue;w<b&&([b,w]=[w,b]);let L=new Set(ce(b)),v=new Set(ce(w));if(L.has(w)||v.has(b))continue;let H=[...L].filter(be=>v.has(be));if(H.length===0)continue;let Y=[];for(let be of H){let Ue=N[be].cfg,qe=N[b].cfg,He=N[w].cfg,Je=!1,G=new Set([...Object.keys(Ue),...Object.keys(qe),...Object.keys(He)]);for(let Z of G){let ae=Ue[Z],Re=qe[Z],W=He[Z];if(Re===ae&&W!==Re||W===ae&&Re!==W){Je=!0;break}}Je&&Y.push(be)}if(Y.length===0)continue;let Q=Y.map(be=>Math.max(1e-9,X[be])),re=this.rand()*Q.reduce((be,Ue)=>be+Ue,0),fe=Y[Y.length-1];for(let be=0;be<Y.length;be++){if(re<Q[be]){fe=Y[be];break}re-=Q[be]}ge={i:b,j:w,a:fe}}if(this.lastIterFoundNewProgram=!1,ge){let Ne=!1,{i:b,j:w,a:L}=ge,v=X[L],H=X[b],Y=X[w];if(v>Math.min(H,Y))continue;let Q=`${b}|${w}|${L}`;if(this.mergeAttemptKeys.has(Q)||(this.mergeAttemptKeys.add(Q),O.has(Q)))continue;let{cfg:re,descSig:fe}=this.systemAwareMergeWithSig(N,b,w,(we,je)=>X[we]>=X[je]?we:je),be=`${Math.min(b,w)}|${Math.max(b,w)}|${fe}`;if(this.mergeCompositionKeys.has(be))continue;this.mergeCompositionKeys.add(be);let Ue=T[b],qe=T[w],He=Array.from({length:Ue.length},(we,je)=>je),Je=He.filter(we=>(Ue[we]??0)>(qe[we]??0)),G=He.filter(we=>(qe[we]??0)>(Ue[we]??0)),Z=He.filter(we=>!(Je.includes(we)||G.includes(we))),ae=5,Re=Math.ceil(ae/3),W=(we,je)=>{if(je<=0||we.length===0)return[];if(we.length<=je)return[...we];let lt=[],Zt=new Set;for(;lt.length<je;){let At=Math.floor(this.rand()*we.length);Zt.has(At)||(Zt.add(At),lt.push(we[At]))}return lt},ie=[];ie.push(...W(Je,Math.min(Re,Je.length))),ie.push(...W(G,Math.min(Re,G.length)));let de=ae-ie.length;ie.push(...W(Z,Math.max(0,de)));let Fe=ae-ie.length;if(Fe>0){let we=He.filter(je=>!ie.includes(je));ie.push(...W(we,Math.min(Fe,we.length)))}let Me=ie.slice(0,Math.min(ae,He.length)),Ct=Me.map(we=>l[we]),qt=await M(re,Ct,"merge subsample");if(!qt)break;let st=qt.sum,_o=Me.reduce((we,je)=>we+(Ue[je]??0),0),No=Me.reduce((we,je)=>we+(qe[je]??0),0);if(st>=Math.max(_o,No)+this.minImprovementThreshold){R(`Iteration ${q+1}: Merge accepted (programs ${b} + ${w} via ancestor ${L})`);let we=await M(re,l,"merge validation");if(!we)break;N.push({cfg:{...re},parent:L,scores:we.avg}),T.push(we.scalars);let je=S.length,lt=gr(S.map(At=>N[At].scores))??0;S=ho(N.map((At,Rn)=>({idx:Rn,scores:At.scores})),this.tieEpsilon).map(At=>At.idx);let Zt=gr(S.map(At=>N[At].scores))??0;(S.length>je||Zt>lt+1e-6)&&(E=0),this.mergesDue-=1,this.totalMergesTested+=1,O.add(Q),Ne=!0}if(Ne)continue}}let oe=Hp(j,X,()=>this.rand());this.lastIterFoundNewProgram=!1;let K=this.minibatch?this.nextMinibatchIndices(m.length,q).map(ce=>m[ce]):m,le=await M(N[oe].cfg,K,"parent minibatch");if(!le)break;if(r?.skipPerfectScore??!0){let ce=Number(r?.perfectScore??1);if(le.scalars.length>0&&le.scalars.every(_e=>_e>=ce))continue}let Se={...N[oe].cfg},Oe="reflective_mutation",te,pe,xe=f[q%f.length],se=N[oe].cfg[xe.id],Ee=r?.gepaAdapter,Te,$e=le.rows.map(ce=>({input:ce.input,prediction:ce.prediction,score:ce.scalar}));if(Ee)try{let ce=await Ee.evaluate(K,{...N[oe].cfg},!0);te=Array.isArray(ce?.scores)?ce.scores.reduce((tt,ge)=>tt+(Number(ge)||0),0):void 0;let _e=Ee.make_reflective_dataset({...N[oe].cfg},ce,[xe.id]),Ye=await Ee.propose_new_texts?.({...N[oe].cfg},_e,[xe.id]),Ke=Ye?.[xe.id]??(Ye?Object.values(Ye)[0]:void 0);typeof Ke=="string"&&Ke.length>0&&(Te=Ke)}catch{}if(Te||(Te=await this.reflectTargetInstruction(xe.id,se,e,x,{...N[oe].cfg},K,async({prediction:ce,example:_e})=>y(await A(ce,_e)),r,$e)),Se[xe.id]=Te,Ee&&te!==void 0)try{let ce=await Ee.evaluate(K,Se,!1);pe=Array.isArray(ce?.scores)?ce.scores.reduce((_e,Ye)=>_e+(Number(Ye)||0),0):void 0}catch{}let me=await M(Se,K,"child minibatch");if(!me)break;if(this.currentRound=q+1,await this.updateOptimizationProgress(this.currentRound,me.sum,{instructionLen:Te.length,target:xe.id,parent:oe,totalRounds:this.numTrials},"GEPA",{strategy:Oe,paretoSetSize:l.length,tunableCount:f.length},me.sum,{instructionLen:se.length,idx:oe},{...r??{},maxIterations:this.numTrials}),!(me.sum>le.sum+this.minImprovementThreshold&&(te===void 0||pe===void 0||pe>te+this.minImprovementThreshold))){if(R(`Iteration ${q+1}: Rejected (child=${me.sum.toFixed(3)} <= parent=${le.sum.toFixed(3)})`),++E>=this.earlyStoppingTrials){R(`Early stopping: ${E} iterations without improvement`);break}continue}R(`Iteration ${q+1}: Accepted (child=${me.sum.toFixed(3)} > parent=${le.sum.toFixed(3)})`);let Ae=await M(Se,l,"validation evaluation");if(!Ae)break;N.push({cfg:{...Se},parent:oe,scores:Ae.avg}),T.push(Ae.scalars);let Pe=S.length,Ie=gr(S.map(ce=>N[ce].scores))??0;S=ho(N.map((ce,_e)=>({idx:_e,scores:ce.scores})),this.tieEpsilon).map(ce=>ce.idx);let ye=gr(S.map(ce=>N[ce].scores))??0;if(S.length>Pe||ye>Ie+1e-6)E=0,R(`Iteration ${q+1}: Archive improved (size=${S.length}, hv=${ye.toFixed(4)})`);else if(E++,R(`Iteration ${q+1}: Archive unchanged (stagnation=${E}/${this.earlyStoppingTrials})`),E>=this.earlyStoppingTrials){R(`Early stopping: ${E} iterations without archive improvement`);break}this.lastIterFoundNewProgram=!0,this.mergeMax>0&&this.totalMergesTested<this.mergeMax&&(this.mergesDue+=1)}let _=ho(N.map((q,z)=>({idx:z,scores:q.scores})),this.tieEpsilon),$=_.length>0?Math.max(..._.map(q=>y(q.scores))):0,B;if(_.length>0){let q=Number.NEGATIVE_INFINITY;for(let z of _){let j=y(z.scores);j>q&&(q=j,B=z.idx)}}let U=gr(_.map(q=>q.scores));this.stats.convergenceInfo.converged=!0;let ee=this.getMergedCustomLabels(r);this.recordParetoMetrics(_.length,N.length,"GEPA",U,ee);let D=Date.now()-s,ne=typeof B=="number"?new kt({bestScore:$,stats:this.stats,instruction:f.length===1?N[B].cfg[h[0]]:void 0,instructionMap:{...N[B].cfg},demos:[],examples:t,modelConfig:void 0,optimizerType:"GEPA",optimizationTime:D,totalRounds:this.numTrials,converged:this.stats.convergenceInfo.converged}):void 0,J=this.generateOptimizationReport(_,U,$,N.length);return{demos:[],stats:this.stats,bestScore:$,paretoFront:_.map(q=>({demos:[],scores:q.scores,configuration:{candidate:q.idx,instructionMap:{...N[q.idx].cfg},...f.length===1?{instruction:N[q.idx].cfg[h[0]]}:{}},dominatedSolutions:q.dominated})),paretoFrontSize:_.length,hypervolume:U,finalConfiguration:{strategy:"gepa",candidates:N.length,tunables:f.length},optimizedProgram:ne,report:J}}configureAuto(e){switch(e){case"light":this.numTrials=10,this.minibatch=!0,this.minibatchSize=15;break;case"medium":this.numTrials=20,this.minibatch=!0,this.minibatchSize=25;break;case"heavy":this.numTrials=35,this.minibatch=!0,this.minibatchSize=35;break}}async getBaseInstruction(e){let t=e.getInstruction?.();if(t&&t.length>0)return t;let r=e.getSignature?.()?.getDescription?.();return r&&r.length>0?r:"Follow the task precisely. Be concise, correct, and consistent."}getInstructionTargets(e){let t=new Set,n=[],r=(s,i)=>{let a=i;!s||t.has(s)||typeof a?.setInstruction!="function"||(t.add(s),n.push({id:s,program:a,signature:a.getSignature?.()?.toString?.()}))};if("namedProgramInstances"in e&&typeof e.namedProgramInstances=="function"){let s=e.namedProgramInstances()??[];for(let i of s)r(i?.id,i?.program)}return r(e.getId?.(),e),n}async evaluateOnSet(e,t,n,r){let s=[];for(let i of n){let a=await this.evaluateOne(e,t,i,r);s.push(a)}return s}async evaluateAvg(e,t,n,r){let s=await this.evaluateOnSet(e,t,n,r);return s.length>0?lc(s):0}async evaluateOne(e,t,n,r){try{e.setInstruction?.(t);let s=await e.forward(this.studentAI,n,{sampleCount:this.sampleCount});this.stats.totalCalls+=1;let i=await r({prediction:s,example:n});if(typeof i=="number"&&!Number.isNaN(i)){let a=typeof this.targetScore=="number"?this.targetScore:.5;return i>=a&&(this.stats.successfulDemos+=1),i}return 0}catch(s){return this.getLogger()?.({name:"Notification",id:"gepa_eval",value:String(s)}),0}}async reflectTargetInstruction(e,t,n,r,s,i,a,c,u){let l=u?[...u]:[];if(l.length===0)for(let A of i)try{s[e]=t,r(s);let y=await n.forward(this.studentAI,A,{sampleCount:this.sampleCount});this.stats.totalCalls+=1;let C=await a({prediction:y,example:A});l.push({input:A,prediction:y,score:typeof C=="number"?C:0})}catch{l.push({input:A,prediction:{},score:0})}let p=c?.overrideTeacherAI??this.teacherAI??this.studentAI,d=gt('targetId:string "Target program ID", minibatch:json "Array of {input,prediction,score}", evalFeedback?:string[] "Evaluator feedback when available" -> feedbackSummary:string "Concise program-focused feedback"'),m=[...(c?.feedbackNotes??[]).filter(A=>typeof A=="string"&&A.trim().length>0)],f=c?.feedbackFn;if(typeof f=="function")for(let A of l){let y=f({prediction:A.prediction,example:A.input,componentId:e});y&&(Array.isArray(y)?m.push(...y):m.push(y))}let h="";try{h=(await d.forward(p,{targetId:e,minibatch:l,evalFeedback:m}))?.feedbackSummary?.trim()||""}catch{}let x=gt('targetId:string "Target program ID", currentInstruction:string "Current instruction", feedbackSummary?:string "Summarized feedback", minibatch:json "Array of {input,prediction,score}" -> newInstruction:string "Improved instruction (1-6 sentences) for the target program"');try{let y=(await x.forward(p,{targetId:e,currentInstruction:t,feedbackSummary:h,minibatch:l}))?.newInstruction?.trim();if(y&&y.length>16)return y}catch{}return`${t.trim()} Focus on step-by-step, target-specific reasoning and factual grounding.`.slice(0,2e3)}async reflectInstruction(e,t,n,r,s,i){let a=i??[];if(a.length===0)for(let f of n)try{t.setInstruction?.(e);let h=await t.forward(this.studentAI,f,{sampleCount:this.sampleCount});this.stats.totalCalls+=1;let x=await r({prediction:h,example:f});a.push({input:f,prediction:h,score:typeof x=="number"?x:0})}catch{a.push({input:f,prediction:{},score:0})}let c=s?.overrideTeacherAI??this.teacherAI??this.studentAI,u=typeof t?.getId=="function"?t.getId():void 0,l=s?.feedbackFn,p=(s?.feedbackNotes??[]).filter(f=>typeof f=="string"&&f.trim().length>0),d=()=>{let f=[];for(let x=0;x<a.length;x++){let A=a[x],y=`# Example ${x+1}
|
|
610
|
+
`)}async extractProgramInstruction(e){try{return e.getSignature().getDescription()??void 0}catch{return}}createGeneratorOutput(e,t){let n=e?.thought?.toString()??"",r=Array.isArray(e?.bullet_ids)?e?.bullet_ids:[];return{reasoning:n,answer:e,bulletIds:r,trajectory:JSON.stringify({example:t,prediction:e}),metadata:{predictedSeverity:e?.severity,expectedSeverity:t?.severity}}}resolveCuratorOperationTargets(e,t,n,r){if(!e.length)return e;let s=[],i=new Set(e.map(l=>l.bulletId).filter(l=>typeof l=="string")),a=new Map,c=(l,p)=>{if(i.has(l))return;let d=this.locateBullet(t,l);if(!d)return;let g=a.get(d.section)??{harmful:[],primary:[],generator:[]};g[p].push(d.id),a.set(d.section,g)};for(let l of n?.bulletTags??[]){let p=l.tag==="harmful"?"harmful":"primary";c(l.id,p)}if(r?.bulletIds)for(let l of r.bulletIds)c(l,"generator");let u=l=>{let p=a.get(l);if(!p)return this.locateFallbackBullet(t,l,i);let d=m=>{for(;m.length>0;){let f=m.shift();if(!i.has(f))return f}},g=d(p.harmful)??d(p.primary)??d(p.generator);return g||this.locateFallbackBullet(t,l,i)};for(let l of e){if((l.type==="UPDATE"||l.type==="REMOVE")&&!l.bulletId){let p=u(l.section);p&&(l.bulletId=p,i.add(p))}(l.type==="UPDATE"||l.type==="REMOVE")&&!l.bulletId||s.push(l)}return s}locateBullet(e,t){for(let n of Object.values(e.sections)){let r=n.find(s=>s.id===t);if(r)return r}}locateFallbackBullet(e,t,n){let r=e.sections[t]??[];for(let s of r)if(!n.has(s.id))return s.id}collectProtectedBulletIds(e){let t=new Set;for(let n of e)n.type==="UPDATE"&&n.bulletId&&t.add(n.bulletId);return t}normalizeCuratorOperations(e){if(!e)return[];if(Array.isArray(e)){let t=[],n=new Set;for(let r of e){if(!r||typeof r!="object")continue;let s=r.type??"ADD",i=typeof s=="string"?s.toUpperCase():"ADD",a=i==="UPDATE"?"UPDATE":i==="REMOVE"?"REMOVE":"ADD",c=r.section??"Guidelines",u=typeof c=="string"&&c.trim().length>0?c.trim():"Guidelines",l=r.content??"",p=typeof l=="string"?l.trim():"";if(a!=="REMOVE"&&p.length===0)continue;let d=r.bulletId??r.id,g=typeof d=="string"&&d.trim().length>0?d.trim():void 0,f=[a,u,p,g??""].join(":");if(n.has(f))continue;n.add(f);let h={type:a,section:u};a!=="REMOVE"&&(h.content=p),g&&(h.bulletId=g);let x=r.metadata;x&&typeof x=="object"&&(h.metadata={...x}),t.push(h)}return t}if(typeof e=="string")try{let t=JSON.parse(e);return this.normalizeCuratorOperations(t)}catch{return[]}if(typeof e=="object"){let t=e;if(t&&Array.isArray(t.operations))return this.normalizeCuratorOperations(t.operations);if(t&&typeof t.operations=="string")try{let n=JSON.parse(t.operations);return this.normalizeCuratorOperations(n)}catch{return[]}return[]}return[]}inferOperationsFromReflection(e){if(!e)return[];let t=[],n=new Set,r=(s,i)=>{if(!i)return;let a=i.trim();if(!a||a.toLowerCase().startsWith("no error"))return;let u=`${s}:${a}`;n.has(u)||(n.add(u),t.push({type:"ADD",section:s,content:a}))};return r("Guidelines",e.keyInsight),r("Response Strategies",e.correctApproach),r("Common Pitfalls",e.errorIdentification),r("Root Cause Notes",e.rootCauseAnalysis),t}async runReflectionRounds({example:e,generatorOutput:t,feedback:n}){let r=Math.max(this.aceConfig.maxReflectorRounds,1),s;for(let i=0;i<r;i++){let a=await this.runReflector({example:e,generatorOutput:t,feedback:n,previousReflection:s});if(!a)break;s=a;let c=a.errorIdentification?.toLowerCase().trim()??"";if(a.metadata?.resolved===!0||c.length===0||c.startsWith("no error")||c.startsWith("resolved"))break}return s}async runReflector({example:e,generatorOutput:t,feedback:n,previousReflection:r}){let s=this.getOrCreateReflectorProgram(),i=this.teacherAI??this.studentAI;try{let a={severity:e?.severity,policyHint:e?.policyHint},l=(this.program?.getSignature()?.getInputFields()??[]).reduce((d,g)=>(g.name in e&&(d[g.name]=e[g.name]),d),{});return await s.forward(i,{question:JSON.stringify(l),generator_answer:JSON.stringify(t.answer),generator_reasoning:t.reasoning,playbook:JSON.stringify({markdown:bn(this.playbook),structured:this.playbook}),expected_answer:a.severity||a.policyHint?JSON.stringify(a):void 0,feedback:n,previous_reflection:r?JSON.stringify(r):void 0})}catch(a){this.verbose&&console.warn("[AxACE] Reflector error:",a instanceof Error?a.message:a);return}}async runCurator({program:e,example:t,reflection:n,playbook:r}){if(!n)return;let s=this.getOrCreateCuratorProgram(),i=this.teacherAI??this.studentAI,u=e.getSignature().getInputFields().reduce((l,p)=>(p.name in t&&(l[p.name]=t[p.name]),l),{});try{return await s.forward(i,{playbook:JSON.stringify({markdown:bn(r),structured:r}),reflection:JSON.stringify(n),question_context:JSON.stringify(u),token_budget:1024})}catch(l){this.verbose&&console.warn("[AxACE] Curator error:",l instanceof Error?l.message:l);return}}getOrCreateReflectorProgram(){if(!this.reflectorProgram){let e=V().input("question",V.string("Original task input serialized as JSON")).input("generator_answer",V.string("Generator output serialized as JSON")).input("generator_reasoning",V.string("Generator reasoning trace").optional()).input("playbook",V.string("Current context playbook rendered as markdown")).input("expected_answer",V.string("Expected output when ground truth is available").optional()).input("feedback",V.string("External feedback or reward signal").optional()).input("previous_reflection",V.string("Most recent reflection JSON when running multi-round refinement").optional()).output("reasoning",V.string("Step-by-step analysis of generator performance")).output("errorIdentification",V.string("Specific mistakes detected")).output("rootCauseAnalysis",V.string("Underlying cause of the error")).output("correctApproach",V.string("What the generator should do differently")).output("keyInsight",V.string("Reusable insight to remember")).output("bulletTags",V.json("Array of {id, tag} entries referencing playbook bullets")).build();this.reflectorProgram=ft(e)}return this.reflectorProgram}getOrCreateCuratorProgram(){if(!this.curatorProgram){let e=V().input("playbook",V.string("Current playbook serialized as JSON")).input("reflection",V.string("Latest reflection output serialized as JSON")).input("question_context",V.string("Original task input serialized as JSON")).input("token_budget",V.number("Approximate token budget for curator response").optional()).output("reasoning",V.string("Justification for the proposed updates")).output("operations",V.json("List of operations with type/section/content fields")).build();this.curatorProgram=ft(e)}return this.curatorProgram}};function zp(o,e,t=0){let n=new Set([...Object.keys(o),...Object.keys(e)]),r=!0,s=!1;for(let i of n){let a=o[i]??0,c=e[i]??0;if(a+t<c){r=!1;break}a>c+t&&(s=!0)}return r&&s}function ho(o,e=0){let t=[];for(let n=0;n<o.length;n++){let r=0,s=!1;for(let i=0;i<o.length;i++)if(n!==i){if(zp(o[i].scores,o[n].scores,e)){s=!0;break}zp(o[n].scores,o[i].scores,e)&&r++}s||t.push({idx:o[n].idx,scores:o[n].scores,dominated:r})}return t}function gr(o){if(o.length===0)return;let e=Object.keys(o[0]??{});if(e.length!==2)return;let[t,n]=e,r=[...o].sort((a,c)=>(c[t]??0)-(a[t]??0)),s=0,i=0;for(let a of r){let c=a[t]??0,u=a[n]??0,l=Math.max(u-i,0);s+=c*l,i=Math.max(i,u)}return s}function lc(o){if(o.length===0)return 0;let e=0;for(let t of o)e+=t;return e/o.length}function qp(o){let e={},t={};for(let r of o)for(let[s,i]of Object.entries(r))e[s]=(e[s]||0)+(typeof i=="number"?i:0),t[s]=(t[s]||0)+1;let n={};for(let[r,s]of Object.entries(e))n[r]=s/Math.max(t[r]||1,1);return n}function pc(o,e){let t=new Set;for(let l of o)for(let p of l)t.add(p);let r=[...Array.from(t)].sort((l,p)=>(e[l]??0)-(e[p]??0)),s=new Set,i=(l,p)=>{for(let d of o){if(!d.has(l))continue;let g=!1;for(let m of p)if(d.has(m)){g=!0;break}if(!g)return!1}return!0},a=!0;for(;a;){a=!1;for(let l of r){if(s.has(l))continue;let p=new Set(r.filter(d=>d!==l&&!s.has(d)));if(i(l,p)){s.add(l),a=!0;break}}}let c=r.filter(l=>!s.has(l)),u=new Set(c);return o.map(l=>{let p=new Set;for(let d of l)u.has(d)&&p.add(d);return p})}function Hp(o,e,t){let n=pc(o,e),r={};for(let c of n)for(let u of c)r[u]=(r[u]||0)+1;let s=[];for(let[c,u]of Object.entries(r)){let l=Number(c);for(let p=0;p<u;p++)s.push(l)}if(s.length===0)return 0;let i=typeof t=="function"?t():Math.random(),a=Math.floor(i*s.length);return s[a]}function th(o){return o.size===0?{score:0}:Object.fromEntries([...o].map(e=>[e,0]))}function Xs(o,e=800){if(typeof o=="string"){let t=o.trim();return t.length<=e?t:`${t.slice(0,Math.max(0,e-3))}...`}try{let t=JSON.stringify(o,null,2).trim();return t.length<=e?t:`${t.slice(0,Math.max(0,e-3))}...`}catch{let t=String(o).trim();return t.length<=e?t:`${t.slice(0,Math.max(0,e-3))}...`}}var un=class o extends Ot{numTrials;minibatch;minibatchSize;earlyStoppingTrials;minImprovementThreshold;sampleCount;paretoSetSize;crossoverEvery;tieEpsilon;feedbackMemorySize;feedbackMemory=[];mergeMax;mergesUsed=0;mergesDue=0;totalMergesTested=0;lastIterFoundNewProgram=!1;mergeAttemptKeys=new Set;mergeCompositionKeys=new Set;static REFLECTION_PROMPT_TEMPLATE="I provided an assistant with the following instructions to perform a task for me:\n```\n<curr_instructions>\n```\n\nThe following are examples of different task inputs provided to the assistant along with the assistant's response for each of them, and some feedback on how the assistant's response could be better:\n```\n<inputs_outputs_feedback>\n```\n\nYour task is to write a new instruction for the assistant. Read the inputs carefully and identify the input format and infer detailed task description about the task I wish to solve with the assistant. Read all the assistant responses and the corresponding feedback. Identify all niche and domain specific factual information about the task and include it in the instruction, as a lot of it may not be available to the assistant in the future. The assistant may have utilized a generalizable strategy to solve the task, if so, include that in the instruction as well. Provide the new instructions within ``` blocks.";rngState=123456789;samplerState={epoch:-1,shuffled:[],freq:new Map};localScoreHistory=[];localConfigurationHistory=[];constructor(e){super(e);let t=e?.seed,n=Number.isFinite(t)?Math.floor(Number(t)):0;this.rngState=n&&n!==0?n:123456789,this.numTrials=e.numTrials??30,this.minibatch=e.minibatch??!0,this.minibatchSize=e.minibatchSize??20,this.earlyStoppingTrials=e.earlyStoppingTrials??5,this.minImprovementThreshold=e.minImprovementThreshold??0,this.sampleCount=e.sampleCount??1;let r=e?.paretoSetSize;this.paretoSetSize=r&&r>0?Math.min(1e3,Math.max(5,Math.floor(r))):Math.max(10,Math.min(200,this.minibatchSize*3));let s=e?.crossoverEvery;this.crossoverEvery=Math.max(0,Math.floor(s??Math.max(3,Math.floor(this.numTrials/4))));let i=e?.tieEpsilon;this.tieEpsilon=Number.isFinite(i)?i:0;let a=e?.feedbackMemorySize;this.feedbackMemorySize=Math.max(0,Math.floor(a??4));let c=e?.mergeMax;this.mergeMax=Math.max(0,Math.floor(c??5)),this.mergesUsed=0,this.stats.convergenceInfo.convergenceThreshold=this.minImprovementThreshold}reset(){super.reset(),this.stats.convergenceInfo.convergenceThreshold=this.minImprovementThreshold,this.localScoreHistory=[],this.localConfigurationHistory=[],this.feedbackMemory=[],this.mergesUsed=0,this.mergesDue=0,this.totalMergesTested=0,this.lastIterFoundNewProgram=!1,this.mergeAttemptKeys.clear(),this.mergeCompositionKeys.clear(),this.samplerState.epoch=-1,this.samplerState.shuffled=[],this.samplerState.freq.clear()}async compile(e,t,n,r){let s=Date.now();this.validateExamples(t),r?.auto&&this.configureAuto(r.auto);let i=r?.maxMetricCalls;if(!Number.isFinite(i)||i<=0)throw new Error("AxGEPA: options.maxMetricCalls must be set to a positive integer");let a=Math.floor(i),c=r?.validationExamples,u=r?.feedbackExamples,l=(c&&c.length>0?c:t).slice(0,this.paretoSetSize),p=q=>{let z=Object.keys(q).sort().reduce((j,X)=>(j[X]=q[X],j),{});return JSON.stringify(z)},d=new Set(t.map(q=>p(q))),g=u&&u.length>0?u.filter(q=>d.has(p(q))):t,m=g.length>0?g:t,f=this.getInstructionTargets(e);if(f.length===0)throw new Error("AxGEPA: program has no instruction-bearing nodes to optimize");let h=f.map(q=>q.id),x=q=>{for(let z of f){let j=q[z.id];typeof j=="string"&&z.program.setInstruction?.(j)}},A=async(q,z)=>{let j=await n({prediction:q,example:z});if(typeof j=="number")return Number.isFinite(j)?{score:j}:{};if(!j||typeof j!="object")return{};let X={};for(let[oe,K]of Object.entries(j))typeof K=="number"&&Number.isFinite(K)&&(X[oe]=K);return X},y=q=>{let z=r?.paretoMetricKey,j=r?.paretoScalarize;if(typeof j=="function")return j(q);if(z)return Number.isFinite(q[z])?q[z]:0;let X=Object.values(q);return X.length?X.reduce((oe,K)=>oe+K,0)/X.length:0},C=this.getOptimizerLogger(r),R=r?.verbose??this.verbose?q=>console.log(`[GEPA] ${q}`):q=>{},I=new Set,M=async(q,z,j,X=!1)=>{let oe=z.length;if(this.stats.totalCalls+oe>a){if(X)throw new Error(`AxGEPA: options.maxMetricCalls=${a} is too small to evaluate the initial Pareto set; need at least ${oe} metric calls`);return}let K=[];R(`${j}: evaluating ${z.length} example${z.length===1?"":"s"}`);for(let[le,Se]of z.entries()){x(q);let Oe,te;try{Oe=await e.forward(this.studentAI,Se,{sampleCount:this.sampleCount}),te=await A(Oe,Se);for(let xe of Object.keys(te))I.add(xe)}catch(xe){let se=xe instanceof Error?xe.message:String(xe);Oe={error:se},te=th(I),R(`Evaluation failed during ${j}; scoring this example as zero. Error: ${se}`)}this.stats.totalCalls+=1;let pe=y(te);K.push({input:Se,prediction:Oe,scores:te,scalar:pe}),R(`${j}: completed ${le+1}/${z.length} (score=${pe.toFixed(3)})`)}return{rows:K,avg:qp(K.map(le=>le.scores)),scalars:K.map(le=>le.scalar),sum:K.reduce((le,Se)=>le+Se.scalar,0)}},F={};for(let q of f)F[q.id]=await this.getBaseInstruction(q.program);let P=await M(F,l,"initial Pareto evaluation",!0),N=[{cfg:{...F},parent:void 0,scores:P.avg}],T=[P.scalars];C?.({name:"OptimizationStart",value:{optimizerType:"GEPA",exampleCount:t.length,validationCount:l.length,config:{numTrials:this.numTrials,minibatch:this.minibatch,mergeMax:this.mergeMax,tunableCount:f.length}}}),R(`Starting GEPA optimization: ${t.length} train, ${l.length} validation, maxCalls=${a}`);let E=0,O=new Set,S=ho(N.map((q,z)=>({idx:z,scores:q.scores})),this.tieEpsilon).map(q=>q.idx),k;for(let q=0;q<this.numTrials&&!(a!==void 0&&this.stats.totalCalls>=Math.max(1,Math.floor(a)));q++){let z=T[0]?.length??0,j=[];for(let ce=0;ce<z;ce++){let _e=Number.NEGATIVE_INFINITY,Ye=new Set;for(let Ke=0;Ke<T.length;Ke++){let tt=T[Ke][ce];tt>_e+this.tieEpsilon?(_e=tt,Ye.clear(),Ye.add(Ke)):Math.abs(tt-_e)<=this.tieEpsilon&&Ye.add(Ke)}j.push(Ye)}let X=T.map(ce=>lc(ce));if(this.mergeMax>0&&this.mergesDue>0&&this.lastIterFoundNewProgram){let ce=Ne=>{let b=[],w=Ne;for(;w!==void 0;)b.push(w),w=N[w]?.parent;return b},_e=Ne=>Ne.length?Ne[Math.floor(this.rand()*Ne.length)]:void 0,Ye=pc(j,X),Ke=new Set;for(let Ne of Ye)for(let b of Ne)Ke.add(b);let tt=Array.from(Ke),ge;for(let Ne=0;Ne<10&&!ge&&!(tt.length<2);Ne++){let b=_e(tt),w=_e(tt);if(b===w)continue;w<b&&([b,w]=[w,b]);let L=new Set(ce(b)),v=new Set(ce(w));if(L.has(w)||v.has(b))continue;let H=[...L].filter(be=>v.has(be));if(H.length===0)continue;let Y=[];for(let be of H){let Ue=N[be].cfg,qe=N[b].cfg,He=N[w].cfg,Je=!1,G=new Set([...Object.keys(Ue),...Object.keys(qe),...Object.keys(He)]);for(let Z of G){let ae=Ue[Z],Re=qe[Z],W=He[Z];if(Re===ae&&W!==Re||W===ae&&Re!==W){Je=!0;break}}Je&&Y.push(be)}if(Y.length===0)continue;let Q=Y.map(be=>Math.max(1e-9,X[be])),re=this.rand()*Q.reduce((be,Ue)=>be+Ue,0),fe=Y[Y.length-1];for(let be=0;be<Y.length;be++){if(re<Q[be]){fe=Y[be];break}re-=Q[be]}ge={i:b,j:w,a:fe}}if(this.lastIterFoundNewProgram=!1,ge){let Ne=!1,{i:b,j:w,a:L}=ge,v=X[L],H=X[b],Y=X[w];if(v>Math.min(H,Y))continue;let Q=`${b}|${w}|${L}`;if(this.mergeAttemptKeys.has(Q)||(this.mergeAttemptKeys.add(Q),O.has(Q)))continue;let{cfg:re,descSig:fe}=this.systemAwareMergeWithSig(N,b,w,(we,je)=>X[we]>=X[je]?we:je),be=`${Math.min(b,w)}|${Math.max(b,w)}|${fe}`;if(this.mergeCompositionKeys.has(be))continue;this.mergeCompositionKeys.add(be);let Ue=T[b],qe=T[w],He=Array.from({length:Ue.length},(we,je)=>je),Je=He.filter(we=>(Ue[we]??0)>(qe[we]??0)),G=He.filter(we=>(qe[we]??0)>(Ue[we]??0)),Z=He.filter(we=>!(Je.includes(we)||G.includes(we))),ae=5,Re=Math.ceil(ae/3),W=(we,je)=>{if(je<=0||we.length===0)return[];if(we.length<=je)return[...we];let pt=[],Zt=new Set;for(;pt.length<je;){let yt=Math.floor(this.rand()*we.length);Zt.has(yt)||(Zt.add(yt),pt.push(we[yt]))}return pt},ie=[];ie.push(...W(Je,Math.min(Re,Je.length))),ie.push(...W(G,Math.min(Re,G.length)));let de=ae-ie.length;ie.push(...W(Z,Math.max(0,de)));let Fe=ae-ie.length;if(Fe>0){let we=He.filter(je=>!ie.includes(je));ie.push(...W(we,Math.min(Fe,we.length)))}let Me=ie.slice(0,Math.min(ae,He.length)),Tt=Me.map(we=>l[we]),qt=await M(re,Tt,"merge subsample");if(!qt)break;let st=qt.sum,_o=Me.reduce((we,je)=>we+(Ue[je]??0),0),No=Me.reduce((we,je)=>we+(qe[je]??0),0);if(st>=Math.max(_o,No)+this.minImprovementThreshold){R(`Iteration ${q+1}: Merge accepted (programs ${b} + ${w} via ancestor ${L})`);let we=await M(re,l,"merge validation");if(!we)break;N.push({cfg:{...re},parent:L,scores:we.avg}),T.push(we.scalars);let je=S.length,pt=gr(S.map(yt=>N[yt].scores))??0;S=ho(N.map((yt,Rn)=>({idx:Rn,scores:yt.scores})),this.tieEpsilon).map(yt=>yt.idx);let Zt=gr(S.map(yt=>N[yt].scores))??0;(S.length>je||Zt>pt+1e-6)&&(E=0),this.mergesDue-=1,this.totalMergesTested+=1,O.add(Q),Ne=!0}if(Ne)continue}}let oe=Hp(j,X,()=>this.rand());this.lastIterFoundNewProgram=!1;let K=this.minibatch?this.nextMinibatchIndices(m.length,q).map(ce=>m[ce]):m,le=await M(N[oe].cfg,K,"parent minibatch");if(!le)break;if(r?.skipPerfectScore??!0){let ce=Number(r?.perfectScore??1);if(le.scalars.length>0&&le.scalars.every(_e=>_e>=ce))continue}let Se={...N[oe].cfg},Oe="reflective_mutation",te,pe,xe=f[q%f.length],se=N[oe].cfg[xe.id],Ee=r?.gepaAdapter,Te,$e=le.rows.map(ce=>({input:ce.input,prediction:ce.prediction,score:ce.scalar}));if(Ee)try{let ce=await Ee.evaluate(K,{...N[oe].cfg},!0);te=Array.isArray(ce?.scores)?ce.scores.reduce((tt,ge)=>tt+(Number(ge)||0),0):void 0;let _e=Ee.make_reflective_dataset({...N[oe].cfg},ce,[xe.id]),Ye=await Ee.propose_new_texts?.({...N[oe].cfg},_e,[xe.id]),Ke=Ye?.[xe.id]??(Ye?Object.values(Ye)[0]:void 0);typeof Ke=="string"&&Ke.length>0&&(Te=Ke)}catch{}if(Te||(Te=await this.reflectTargetInstruction(xe.id,se,e,x,{...N[oe].cfg},K,async({prediction:ce,example:_e})=>y(await A(ce,_e)),r,$e)),Se[xe.id]=Te,Ee&&te!==void 0)try{let ce=await Ee.evaluate(K,Se,!1);pe=Array.isArray(ce?.scores)?ce.scores.reduce((_e,Ye)=>_e+(Number(Ye)||0),0):void 0}catch{}let me=await M(Se,K,"child minibatch");if(!me)break;if(this.currentRound=q+1,await this.updateOptimizationProgress(this.currentRound,me.sum,{instructionLen:Te.length,target:xe.id,parent:oe,totalRounds:this.numTrials},"GEPA",{strategy:Oe,paretoSetSize:l.length,tunableCount:f.length},me.sum,{instructionLen:se.length,idx:oe},{...r??{},maxIterations:this.numTrials}),!(me.sum>le.sum+this.minImprovementThreshold&&(te===void 0||pe===void 0||pe>te+this.minImprovementThreshold))){if(R(`Iteration ${q+1}: Rejected (child=${me.sum.toFixed(3)} <= parent=${le.sum.toFixed(3)})`),++E>=this.earlyStoppingTrials){R(`Early stopping: ${E} iterations without improvement`);break}continue}R(`Iteration ${q+1}: Accepted (child=${me.sum.toFixed(3)} > parent=${le.sum.toFixed(3)})`);let Ae=await M(Se,l,"validation evaluation");if(!Ae)break;N.push({cfg:{...Se},parent:oe,scores:Ae.avg}),T.push(Ae.scalars);let Pe=S.length,Ie=gr(S.map(ce=>N[ce].scores))??0;S=ho(N.map((ce,_e)=>({idx:_e,scores:ce.scores})),this.tieEpsilon).map(ce=>ce.idx);let ye=gr(S.map(ce=>N[ce].scores))??0;if(S.length>Pe||ye>Ie+1e-6)E=0,R(`Iteration ${q+1}: Archive improved (size=${S.length}, hv=${ye.toFixed(4)})`);else if(E++,R(`Iteration ${q+1}: Archive unchanged (stagnation=${E}/${this.earlyStoppingTrials})`),E>=this.earlyStoppingTrials){R(`Early stopping: ${E} iterations without archive improvement`);break}this.lastIterFoundNewProgram=!0,this.mergeMax>0&&this.totalMergesTested<this.mergeMax&&(this.mergesDue+=1)}let _=ho(N.map((q,z)=>({idx:z,scores:q.scores})),this.tieEpsilon),$=_.length>0?Math.max(..._.map(q=>y(q.scores))):0,B;if(_.length>0){let q=Number.NEGATIVE_INFINITY;for(let z of _){let j=y(z.scores);j>q&&(q=j,B=z.idx)}}let U=gr(_.map(q=>q.scores));this.stats.convergenceInfo.converged=!0;let ee=this.getMergedCustomLabels(r);this.recordParetoMetrics(_.length,N.length,"GEPA",U,ee);let D=Date.now()-s,ne=typeof B=="number"?new kt({bestScore:$,stats:this.stats,instruction:f.length===1?N[B].cfg[h[0]]:void 0,instructionMap:{...N[B].cfg},demos:[],examples:t,modelConfig:void 0,optimizerType:"GEPA",optimizationTime:D,totalRounds:this.numTrials,converged:this.stats.convergenceInfo.converged}):void 0,J=this.generateOptimizationReport(_,U,$,N.length);return{demos:[],stats:this.stats,bestScore:$,paretoFront:_.map(q=>({demos:[],scores:q.scores,configuration:{candidate:q.idx,instructionMap:{...N[q.idx].cfg},...f.length===1?{instruction:N[q.idx].cfg[h[0]]}:{}},dominatedSolutions:q.dominated})),paretoFrontSize:_.length,hypervolume:U,finalConfiguration:{strategy:"gepa",candidates:N.length,tunables:f.length},optimizedProgram:ne,report:J}}configureAuto(e){switch(e){case"light":this.numTrials=10,this.minibatch=!0,this.minibatchSize=15;break;case"medium":this.numTrials=20,this.minibatch=!0,this.minibatchSize=25;break;case"heavy":this.numTrials=35,this.minibatch=!0,this.minibatchSize=35;break}}async getBaseInstruction(e){let t=e.getInstruction?.();if(t&&t.length>0)return t;let r=e.getSignature?.()?.getDescription?.();return r&&r.length>0?r:"Follow the task precisely. Be concise, correct, and consistent."}getInstructionTargets(e){let t=new Set,n=[],r=(s,i)=>{let a=i;!s||t.has(s)||typeof a?.setInstruction!="function"||(t.add(s),n.push({id:s,program:a,signature:a.getSignature?.()?.toString?.()}))};if("namedProgramInstances"in e&&typeof e.namedProgramInstances=="function"){let s=e.namedProgramInstances()??[];for(let i of s)r(i?.id,i?.program)}return r(e.getId?.(),e),n}async evaluateOnSet(e,t,n,r){let s=[];for(let i of n){let a=await this.evaluateOne(e,t,i,r);s.push(a)}return s}async evaluateAvg(e,t,n,r){let s=await this.evaluateOnSet(e,t,n,r);return s.length>0?lc(s):0}async evaluateOne(e,t,n,r){try{e.setInstruction?.(t);let s=await e.forward(this.studentAI,n,{sampleCount:this.sampleCount});this.stats.totalCalls+=1;let i=await r({prediction:s,example:n});if(typeof i=="number"&&!Number.isNaN(i)){let a=typeof this.targetScore=="number"?this.targetScore:.5;return i>=a&&(this.stats.successfulDemos+=1),i}return 0}catch(s){return this.getLogger()?.({name:"Notification",id:"gepa_eval",value:String(s)}),0}}async reflectTargetInstruction(e,t,n,r,s,i,a,c,u){let l=u?[...u]:[];if(l.length===0)for(let A of i)try{s[e]=t,r(s);let y=await n.forward(this.studentAI,A,{sampleCount:this.sampleCount});this.stats.totalCalls+=1;let C=await a({prediction:y,example:A});l.push({input:A,prediction:y,score:typeof C=="number"?C:0})}catch{l.push({input:A,prediction:{},score:0})}let p=c?.overrideTeacherAI??this.teacherAI??this.studentAI,d=ft('targetId:string "Target program ID", minibatch:json "Array of {input,prediction,score}", evalFeedback?:string[] "Evaluator feedback when available" -> feedbackSummary:string "Concise program-focused feedback"'),m=[...(c?.feedbackNotes??[]).filter(A=>typeof A=="string"&&A.trim().length>0)],f=c?.feedbackFn;if(typeof f=="function")for(let A of l){let y=f({prediction:A.prediction,example:A.input,componentId:e});y&&(Array.isArray(y)?m.push(...y):m.push(y))}let h="";try{h=(await d.forward(p,{targetId:e,minibatch:l,evalFeedback:m}))?.feedbackSummary?.trim()||""}catch{}let x=ft('targetId:string "Target program ID", currentInstruction:string "Current instruction", feedbackSummary?:string "Summarized feedback", minibatch:json "Array of {input,prediction,score}" -> newInstruction:string "Improved instruction (1-6 sentences) for the target program"');try{let y=(await x.forward(p,{targetId:e,currentInstruction:t,feedbackSummary:h,minibatch:l}))?.newInstruction?.trim();if(y&&y.length>16)return y}catch{}return`${t.trim()} Focus on step-by-step, target-specific reasoning and factual grounding.`.slice(0,2e3)}async reflectInstruction(e,t,n,r,s,i){let a=i??[];if(a.length===0)for(let f of n)try{t.setInstruction?.(e);let h=await t.forward(this.studentAI,f,{sampleCount:this.sampleCount});this.stats.totalCalls+=1;let x=await r({prediction:h,example:f});a.push({input:f,prediction:h,score:typeof x=="number"?x:0})}catch{a.push({input:f,prediction:{},score:0})}let c=s?.overrideTeacherAI??this.teacherAI??this.studentAI,u=typeof t?.getId=="function"?t.getId():void 0,l=s?.feedbackFn,p=(s?.feedbackNotes??[]).filter(f=>typeof f=="string"&&f.trim().length>0),d=()=>{let f=[];for(let x=0;x<a.length;x++){let A=a[x],y=`# Example ${x+1}
|
|
611
611
|
`;if(y+=`## Inputs
|
|
612
612
|
`,typeof A.input=="object"&&A.input!==null)for(let[R,I]of Object.entries(A.input))y+=`### ${R}
|
|
613
613
|
${Xs(I)}
|
|
@@ -626,7 +626,7 @@ ${Xs(I)}
|
|
|
626
626
|
`,f.push(y)}return[...p.map((x,A)=>`# Additional Feedback ${A+1}
|
|
627
627
|
${x}`),...f].join(`
|
|
628
628
|
|
|
629
|
-
`)},g=o.REFLECTION_PROMPT_TEMPLATE.replace("<curr_instructions>",e).replace("<inputs_outputs_feedback>",d());try{let f=await c.chat({chatPrompt:[{role:"user",content:g}],model:s?.reflectionModel},{stream:!1});if(typeof f.getReader=="function")throw new Error("Streaming response not expected for reflection");let x=f.results?.[0]?.content;if(typeof x=="string"){let A=this.extractInstructionFromBackticks(x);if(A&&A.length>16){let y=`Iteration feedback: ${a.map(C=>`score=${C.score.toFixed(2)}`).join(", ")}`;return this.feedbackMemory.unshift(y),this.feedbackMemory.length>this.feedbackMemorySize&&this.feedbackMemory.pop(),A}}}catch{}let m=
|
|
629
|
+
`)},g=o.REFLECTION_PROMPT_TEMPLATE.replace("<curr_instructions>",e).replace("<inputs_outputs_feedback>",d());try{let f=await c.chat({chatPrompt:[{role:"user",content:g}],model:s?.reflectionModel},{stream:!1});if(typeof f.getReader=="function")throw new Error("Streaming response not expected for reflection");let x=f.results?.[0]?.content;if(typeof x=="string"){let A=this.extractInstructionFromBackticks(x);if(A&&A.length>16){let y=`Iteration feedback: ${a.map(C=>`score=${C.score.toFixed(2)}`).join(", ")}`;return this.feedbackMemory.unshift(y),this.feedbackMemory.length>this.feedbackMemorySize&&this.feedbackMemory.pop(),A}}}catch{}let m=ft('currentInstruction:string "Current instruction", feedbackSummary?:string "Summarized feedback", recentFeedback?:string[] "Past feedback memory", minibatch:json "Array of {input,prediction,score}" -> newInstruction:string "Improved instruction within 1-6 sentences."');try{let h=(await m.forward(c,{currentInstruction:e,feedbackSummary:this.feedbackMemory[0]||"",recentFeedback:this.feedbackMemory,minibatch:a}))?.newInstruction?.trim();if(h&&h.length>16)return h}catch{}return`${e.trim()} Focus on step-by-step evidence-based reasoning. Avoid hallucinations.`.slice(0,2e3)}extractInstructionFromBackticks(e){let t=e.indexOf("```")+3,n=e.lastIndexOf("```");if(t>=n){let i=e.trim();if(i.startsWith("```")){let a=i.match(/^```\S*\n?/);if(a)return i.slice(a[0].length).trim()}else if(i.endsWith("```"))return i.slice(0,-3).trim();return i}let r=e.slice(t,n),s=r.match(/^\S*\n/);return s&&(r=r.slice(s[0].length)),r.trim()}updateSamplerShuffled(e){let t=Array.from({length:e},(c,u)=>u);for(let c=t.length-1;c>0;c--){let u=Math.floor(this.rand()*(c+1));[t[c],t[u]]=[t[u],t[c]]}for(let c of t)this.samplerState.freq.set(c,(this.samplerState.freq.get(c)??0)+1);let n=this.minibatchSize,r=e%n,s=r===0?0:n-r,i=Array.from({length:e},(c,u)=>u).sort((c,u)=>(this.samplerState.freq.get(c)??0)-(this.samplerState.freq.get(u)??0)),a=[...t];for(let c=0;c<s;c++){let u=i[c%i.length];a.push(u),this.samplerState.freq.set(u,(this.samplerState.freq.get(u)??0)+1)}this.samplerState.shuffled=a,this.samplerState.epoch+=1}nextMinibatchIndices(e,t){this.samplerState.epoch===-1&&(this.samplerState.epoch=0,this.updateSamplerShuffled(e));let n=this.minibatchSize,r=Math.max(1,Math.floor(this.samplerState.shuffled.length/n)),s=Math.floor(t/r);for(;s>=this.samplerState.epoch;)this.updateSamplerShuffled(e);let i=t*n%this.samplerState.shuffled.length;return this.samplerState.shuffled.slice(i,i+n)}rand(){return this.rngState^=this.rngState<<13,this.rngState^=this.rngState>>>17,this.rngState^=this.rngState<<5,(this.rngState>>>0)/4294967296}systemAwareMergeWithSig(e,t,n,r){let s=h=>{let x=[],A=h;for(;A!==void 0;)x.push(A),A=e[A]?.parent;return x},i=s(t),a=s(n),u=i.find(h=>a.includes(h))??t,l=e[u].cfg,p=e[t].cfg,d=e[n].cfg,g={},m=[],f=Array.from(new Set([...Object.keys(l),...Object.keys(p),...Object.keys(d)])).sort();for(let h of f){let x=l[h],A=p[h],y=d[h];if(A===x&&y!==A)g[h]=y,m.push("j");else if(y===x&&A!==y)g[h]=A,m.push("i");else if(A!==y&&A!==x&&y!==x){let C=r(t,n);g[h]=C===t?A:y,m.push(C===t?"i":"j")}else g[h]=A??y??x,m.push("i")}return{cfg:g,descSig:m.join("|")}}generateOptimizationReport(e,t,n,r){let s=e.length>0?e.reduce((l,p)=>{let d=Object.values(l.scores).reduce((m,f)=>m+f,0);return Object.values(p.scores).reduce((m,f)=>m+f,0)>d?p:l}):void 0,i={};if(s)for(let[l,p]of Object.entries(s.scores))i[l]={value:p,percentage:p*100};let a=[];if(e.length>1){let l=[...e].sort((p,d)=>d.dominated-p.dominated).slice(0,3);for(let p of l)a.push({...p.scores})}let c="good",u=[];if(e.length===1)c="single",u.push("Increase numTrials (current seems low)"),u.push("Add more training examples"),u.push("Adjust earlyStoppingTrials");else if(e.length<3)c="limited",u.push("More optimization trials"),u.push("Larger validation set");else{c="good";let l=Object.keys(e[0]?.scores||{});for(let p of l)u.push(`High ${p}: Choose solution with best ${p} score`);u.push("Balanced: Use provided bestScore (average)")}return this.stats.totalCalls<50&&(u.push("Quick run detected - use numTrials: 30+ for production"),u.push("Provide 50+ training examples"),u.push("Use 20+ validation examples")),{summary:"GEPA Multi-Objective Optimization Complete",bestSolution:{overallScore:n??0,objectives:i},paretoFrontier:{solutionCount:e.length,objectiveSpaceCoverage:(t??0)*100,hypervolume:t??0,tradeoffs:a.length>0?a:void 0},statistics:{totalEvaluations:this.stats.totalCalls,candidatesExplored:r,converged:this.stats.convergenceInfo?.converged??!1},recommendations:{status:c,suggestions:u}}}async mergeInstructions(e,t,n){let r=n?.overrideTeacherAI??this.teacherAI??this.studentAI,s=ft(`instructionA:string "Parent A instruction",
|
|
630
630
|
instructionB:string "Parent B instruction",
|
|
631
631
|
recentFeedback?:string[] "Past feedback memory"
|
|
632
632
|
-> mergedInstruction:string "Merged instruction (1-6 sentences) combining strengths, fixing weaknesses"`);try{let a=(await s.forward(r,{instructionA:e,instructionB:t,recentFeedback:this.feedbackMemory}))?.mergedInstruction?.trim();if(a&&a.length>16)return a}catch{}return(e.length>=t.length?e:t).slice(0,2e3)}};function Wp(o){return o.map(e=>{let t=e.type?.name??"string",n=e.type?.isArray?"[]":"",r=e.isOptional?" (optional)":"",s=e.description?`: ${e.description}`:"";return`- ${e.name}: ${t}${n}${r}${s}`}).join(`
|
|
@@ -721,12 +721,12 @@ Requirements:
|
|
|
721
721
|
5. Keep it concise but comprehensive
|
|
722
722
|
|
|
723
723
|
Generate a single, well-crafted instruction:
|
|
724
|
-
Instruction:`;try{let g=(await
|
|
724
|
+
Instruction:`;try{let g=(await ft('programSummary?:string "Program context" , datasetSummary?:string "Dataset context" , tip?:string "Generation tip" -> instructionText:string "Well-crafted instruction for the program"').forward(n,{programSummary:r??"",datasetSummary:s??"",tip:e??""})).instructionText;if(g&&g.trim().length>10)return g.trim()}catch{}let u=["Analyze the input systematically and provide a precise, well-reasoned response.","Think through this step-by-step, considering all relevant factors before responding.","Examine the input carefully and generate an accurate, detailed answer.","Process the information methodically and deliver a clear, comprehensive response.","Consider the context thoroughly and provide a thoughtful, accurate answer."],l=u[t%u.length]||u[0];return e&&(l=`${l} ${e}`),l}async proposeInstructionCandidates(e,t,n=[]){let r=[],s=this.getTeacherOrStudentAI(t),i,a;this.programAwareProposer&&(i=await this.generateProgramSummary(e,s)),this.dataAwareProposer&&(a=await this.generateDatasetSummary([...n],s));let c=this.tipAwareProposer?this.generateTips():[];for(let u=0;u<this.numCandidates;u++){let l=c.length>0?u%c.length:-1,p=l>=0?c[l]:void 0,d=await this.generateInstruction({tip:p,candidateIndex:u,ai:s,programSummary:i,datasetSummary:a,previousInstructions:r});r.push(d)}return r}async bootstrapFewShotExamples(e,t,n){return(await new hr({studentAI:this.studentAI,options:{maxDemos:this.maxBootstrappedDemos,maxRounds:3,verboseMode:this.verbose??!1}}).compile(e,n,t,{maxDemos:this.maxBootstrappedDemos})).demos||[]}selectLabeledExamples(e){let t=[],n=new Set;for(;n.size<this.maxLabeledDemos&&n.size<e.length;){let r=Math.floor(Math.random()*e.length);if(!n.has(r)){n.add(r);let s=e[r];s&&t.push(s)}}return t}applyConfigToProgram(e,t,n,r){if(e.setInstruction&&e.setInstruction(t.instruction),e.setDemos){let s=[...n.slice(0,t.bootstrappedDemos)];if(t.labeledExamples>0&&e.getId){let i=e.getId();s.push({traces:r.slice(0,t.labeledExamples),programId:i})}s.length>0&&e.setDemos(s)}}async compile(e,t,n,r){let s=Date.now();if(this.validateExamples(t),this.setupRandomSeed(),r?.auto&&this.configureAuto(r.auto),!this.pythonClient)throw new Error("AxMiPRO v2 requires the Python optimizer service. Please configure optimizerEndpoint.");if(!await this.pythonClient.healthCheck())throw new Error("Python optimizer service is not available or unhealthy");return await this.compilePython(e,t,n,r)}applyConfigToAxGen(e,t,n,r){"setInstruction"in e&&typeof e.setInstruction=="function"&&e.setInstruction(t.instruction);let s=[...n.slice(0,t.bootstrappedDemos)];if(t.labeledExamples>0){let i=e.getId();s.push({traces:r.slice(0,t.labeledExamples),programId:i})}s.length>0&&e.setDemos(s)}getConfiguration(){return{numCandidates:this.numCandidates,initTemperature:this.initTemperature,maxBootstrappedDemos:this.maxBootstrappedDemos,maxLabeledDemos:this.maxLabeledDemos,numTrials:this.numTrials,minibatch:this.minibatch,minibatchSize:this.minibatchSize,minibatchFullEvalSteps:this.minibatchFullEvalSteps,programAwareProposer:this.programAwareProposer,dataAwareProposer:this.dataAwareProposer,tipAwareProposer:this.tipAwareProposer,fewshotAwareProposer:this.fewshotAwareProposer,earlyStoppingTrials:this.earlyStoppingTrials,minImprovementThreshold:this.minImprovementThreshold,bayesianOptimization:this.bayesianOptimization,acquisitionFunction:this.acquisitionFunction,explorationWeight:this.explorationWeight,sampleCount:this.sampleCount}}updateConfiguration(e){e.numCandidates!==void 0&&(this.numCandidates=e.numCandidates),e.initTemperature!==void 0&&(this.initTemperature=e.initTemperature),e.maxBootstrappedDemos!==void 0&&(this.maxBootstrappedDemos=e.maxBootstrappedDemos),e.maxLabeledDemos!==void 0&&(this.maxLabeledDemos=e.maxLabeledDemos),e.numTrials!==void 0&&(this.numTrials=e.numTrials),e.minibatch!==void 0&&(this.minibatch=e.minibatch),e.minibatchSize!==void 0&&(this.minibatchSize=e.minibatchSize),e.earlyStoppingTrials!==void 0&&(this.earlyStoppingTrials=e.earlyStoppingTrials),e.minImprovementThreshold!==void 0&&(this.minImprovementThreshold=e.minImprovementThreshold),e.sampleCount!==void 0&&(this.sampleCount=e.sampleCount)}reset(){super.reset(),this.stats.convergenceInfo.convergenceThreshold=this.minImprovementThreshold}validateProgram(e){let t=[],n=[];return{isValid:t.length===0,issues:t,suggestions:n}}async compilePython(e,t,n,r){if(!this.pythonClient)throw new Error("Python client not initialized");let s=Date.now();this.localScoreHistory=[],this.localConfigurationHistory=[];let i=await this.proposeInstructionCandidates(e,r,t),a=`mipro_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,c={study_name:a,parameters:[{name:"temperature",type:"float",low:.1,high:2},{name:"bootstrappedDemos",type:"int",low:0,high:this.maxBootstrappedDemos},{name:"instruction",type:"categorical",choices:i},{name:"labeledExamples",type:"int",low:0,high:this.maxLabeledDemos},...this.optimizeTopP?[{name:"topP",type:"float",low:.7,high:1}]:[]],objective:{name:"score",direction:"maximize"},n_trials:this.numTrials,sampler:"TPESampler",pruner:this.minibatch?"MedianPruner":void 0},u=await this.pythonClient.createOptimizationJob(c);this.getOptimizerLogger()?.({name:"OptimizationStart",value:{optimizerType:"MiPRO (Python)",exampleCount:t.length,validationCount:0,config:{jobId:u.job_id,numTrials:this.numTrials}}});let p=Number.NEGATIVE_INFINITY,d,g=0,m=0;for(let I=0;I<this.numTrials;I++)try{let M=await this.pythonClient.suggestParameters(a),F=M.params.temperature,P=M.params.bootstrappedDemos,N=M.params.instruction,T=M.params.labeledExamples,E=this.optimizeTopP?M.params.topP:void 0;if(F===void 0)throw new Error(`Missing temperature parameter in suggestion: ${JSON.stringify(M)}`);if(P===void 0)throw new Error(`Missing bootstrappedDemos parameter in suggestion: ${JSON.stringify(M)}`);if(N===void 0)throw new Error(`Missing instruction parameter in suggestion: ${JSON.stringify(M)}`);if(T===void 0)throw new Error(`Missing labeledExamples parameter in suggestion: ${JSON.stringify(M)}`);let O=e.clone();O.setInstruction(N);let S=O.getId();O.setDemos([{traces:this.selectLabeledExamples(t).slice(0,T),programId:S}]);let _=!this.minibatch||this.minibatchFullEvalSteps>0&&I%this.minibatchFullEvalSteps===this.minibatchFullEvalSteps-1?[...t]:(()=>{let U=Math.min(this.minibatchSize,t.length),ee=new Set;for(;ee.size<U;)ee.add(Math.floor(Math.random()*t.length));return Array.from(ee).map(D=>t[D])})(),$=await this.evaluateConfiguration(O,n,{temperature:F,bootstrappedDemos:P,topP:E},_);g++,await this.pythonClient.evaluateTrial({study_name:a,trial_number:M.trial_number,value:$}),$>p+this.minImprovementThreshold?(p=$,d={temperature:F,bootstrappedDemos:P,...E!==void 0?{topP:E}:{},trialNumber:M.trial_number},m=0):m+=1,this.currentRound=I+1;let B={temperature:F,bootstrappedDemos:P,...E!==void 0?{topP:E}:{},trialNumber:M.trial_number};if(this.localScoreHistory.push($),this.localConfigurationHistory.push(B),await this.updateOptimizationProgress(this.currentRound,$,B,"MiPRO (Python)",{sampler:"TPESampler"},p,d),this.onProgress?.({round:I+1,totalRounds:this.numTrials,currentScore:$,bestScore:p,tokensUsed:this.stats.estimatedTokenUsage,timeElapsed:Date.now()-s,successfulExamples:g,totalExamples:t.length}),this.earlyStoppingTrials>0&&m>=this.earlyStoppingTrials){this.getOptimizerLogger()?.({name:"EarlyStopping",value:{reason:`No improvement \u2265 ${this.minImprovementThreshold} for ${this.earlyStoppingTrials} trials`,finalScore:p,round:this.currentRound}}),this.onEarlyStop?.(`No improvement for ${this.earlyStoppingTrials} trials`,this.stats);break}}catch{}let f=p,h={},x=[];try{let I=await this.pythonClient.getStudyResults(a);if(f=I.best_value||p,h=I.best_params||{},h&&Object.keys(h).length>0){let M=h.bootstrappedDemos||0;M>0&&(x=await this.bootstrapFewShotExamples(e,n,t.slice(0,Math.floor(t.length*.8))),x=x.slice(0,M))}}catch{}let A;try{let M=await ft('optimizerType:string "Optimizer name" , bestScore:number "Final best score" , totalCalls:number "Total eval calls" , successfulDemos:number "Successful evals" , bestConfig:json "Best configuration" -> humanExplanation:string "Readable summary", recommendations:string[] "Next steps", performanceAssessment:string "Performance notes"').forward(this.studentAI,{optimizerType:"MiPRO (Python)",bestScore:f,totalCalls:this.stats.totalCalls,successfulDemos:this.stats.successfulDemos,bestConfig:h||{}});A={humanExplanation:M.humanExplanation??"",recommendations:M.recommendations??[],performanceAssessment:M.performanceAssessment??""}}catch{}await this.logOptimizationComplete("MiPRO (Python)",f,h,r,A);try{await this.pythonClient.deleteStudy(a)}catch{}this.stats.bestScore=f;let y=new Be(e.getSignature());h.instruction&&y.setInstruction(h.instruction);let C=h.temperature?{temperature:h.temperature}:void 0;y.setDemos(x,{modelConfig:C});let R=new kt({bestScore:f,stats:this.stats,instruction:h.instruction,demos:x,examples:[],modelConfig:{temperature:h.temperature},optimizerType:"MiPRO (Python)",optimizationTime:Date.now()-s,totalRounds:this.numTrials,converged:this.stats.convergenceInfo.converged,scoreHistory:[...this.localScoreHistory],configurationHistory:[...this.localConfigurationHistory]});return this.generateOptimizationReport(f,x.length),{bestScore:f,demos:x,stats:this.stats,optimizedGen:y,optimizedProgram:R,finalConfiguration:{temperature:h.temperature,bootstrappedDemos:h.bootstrappedDemos||0,...h}}}generateOptimizationReport(e,t){console.log(`
|
|
725
725
|
\u{1F389} MiPRO Optimization Complete!
|
|
726
726
|
`),console.log("\u2705 Improvements:"),e!==void 0&&e>0&&console.log(`\u2022 Best score achieved: ${e.toFixed(3)}`),t>0&&console.log(`\u2022 Generated ${t} optimized demonstrations`),console.log("\u2022 Systematic prompt and example optimization"),console.log(`\u2022 Automated instruction refinement process
|
|
727
727
|
`),console.log("\u26A0\uFE0F Limitations:"),this.stats.totalCalls<50&&console.log("\u2022 Relatively few optimization trials performed"),t<5&&console.log("\u2022 Limited number of demonstrations generated"),console.log("\u2022 Results depend on teacher model quality"),console.log(`\u2022 Optimization time increases with example complexity
|
|
728
728
|
`),console.log("\u{1F50D} Key Issues:"),e!==void 0&&e<.7&&console.log("\u2022 Final performance may still have room for improvement"),this.stats.convergenceInfo?.converged===!1&&console.log("\u2022 Optimization may not have fully converged"),console.log("\u2022 Evaluation metrics may need domain-specific tuning"),console.log(`\u2022 Bootstrap quality depends on initial examples
|
|
729
|
-
`),console.log("\u{1F4A1} What This Means:"),console.log("\u2022 MiPRO successfully automated prompt engineering"),console.log("\u2022 Optimized instructions and examples improve model performance"),console.log("\u2022 Framework reduces manual prompt engineering effort"),console.log("\u2022 More training data and iterations would likely improve results")}async evaluateConfiguration(e,t,n,r){let s=0,i=0,a=0,c=r;for(let u of c)try{let l=await e.forward(this.studentAI,u,{modelConfig:{temperature:n.temperature,...n.topP!==void 0?{topP:n.topP}:{}},sampleCount:this.sampleCount,resultPicker:this.sampleCount>1?this.customResultPicker??this.defaultResultPicker:void 0});this.stats.totalCalls+=1;let p=await t({prediction:l,example:u});if(typeof p=="number"&&!Number.isNaN(p)){s+=p,i++;let d=typeof this.targetScore=="number"?this.targetScore:.5;p>=d&&a++}}catch(l){this.getLogger()?.({name:"Notification",id:"mipro_evaluate",value:typeof l=="string"?l:String(l)})}return this.stats.successfulDemos+=a,i>0?s/i:0}};var xr=class{analyzeMappingDependencies(e,t){if(!e||typeof e!="function")return[];let n=[];try{let r=e.toString(),s=Array.from(r.matchAll(/state\.(\w+)/g));for(let i of s)i[1]&&!n.includes(i[1])&&n.push(i[1]);if(n.length===0)try{let i=this.createDependencyTracker(n);e(i)}catch{}}catch(r){console.debug("Dependency analysis failed:",r)}return n}createTrackingProxy(e,t){let n=this;return new Proxy(e,{get(r,s){typeof s=="string"&&!t.includes(s)&&t.push(s);let i=r[s];return i&&typeof i=="object"?n.createTrackingProxy(i,t):i},has(r,s){return typeof s=="string"&&!t.includes(s)&&t.push(s),s in r}})}parseStaticDependencies(e){let t=[];try{let n=Array.from(e.matchAll(/state\.(\w+)/g));for(let i of n)i[1]&&!t.includes(i[1])&&t.push(i[1]);let r=Array.from(e.matchAll(/\$\{state\.(\w+)\}/g));for(let i of r)i[1]&&!t.includes(i[1])&&t.push(i[1]);let s=Array.from(e.matchAll(/\{\s*(\w+)(?:\s*,\s*(\w+))*\s*\}\s*=\s*state/g));for(let i of s)for(let a=1;a<i.length;a++)i[a]&&!t.includes(i[a])&&t.push(i[a])}catch(n){console.debug("Static dependency parsing failed:",n)}return t}createDependencyTracker(e){return new Proxy({},{get(t,n){return typeof n=="string"&&!e.includes(n)&&e.push(n),new Proxy({},{get:()=>{}})}})}};async function Ar(o,e,t){if(!t||t<=0||t>=o.length){let r=o.map((s,i)=>e(s,i));return Promise.all(r)}let n=new Array(o.length);for(let r=0;r<o.length;r+=t){let i=o.slice(r,r+t).map((c,u)=>{let l=r+u;return e(c,l).then(p=>({result:p,originalIndex:l}))}),a=await Promise.all(i);for(let{result:c,originalIndex:u}of a)n[u]=c}return n}var yr=class{steps=[];parallelGroups=[];analyzer=new xr;initialFields=new Set;addExecutionStep(e,t,n,r,s,i,a){let c=[],u=[],l=r||"map";if(t&&n)l="execute",c=this.analyzer.analyzeMappingDependencies(n,t),u=[`${t}Result`];else if(l==="map"&&s)u=this.analyzeMapTransformation(s),c=this.getAllProducedFields();else if(l==="parallel-map"){if(Array.isArray(s)){let d=new Set;for(let g of s)this.analyzeMapTransformation(g).forEach(f=>d.add(f));u=Array.from(d)}else s?u=this.analyzeMapTransformation(s):u=["_parallelMapResult"];c=this.getAllProducedFields()}else if(l==="merge"){if(i?.resultKey)u=[i.resultKey];else{let g=this.analyzeBranchMergeFields();u=g.length>0?g:["_mergedResult"]}e.toString().includes("_parallelResults")?c=["_parallelResults"]:c=this.getAllProducedFields()}else if(l==="parallel")u=["_parallelResults"],c=this.getAllProducedFields();else if(l==="derive")if(a?.outputFieldName&&a?.inputFieldName){u=[a.outputFieldName];let d=s?this.analyzer.analyzeMappingDependencies(s,"derive"):[];c=[a.inputFieldName,...d].filter((g,m,f)=>f.indexOf(g)===m)}else u=["_deriveResult"],c=this.getAllProducedFields();else e.toString().includes("transform(")?(l="map",c=this.getAllProducedFields(),u=["_mapResult"]):e.toString().includes("_parallelResults")&&(u=["_parallelResults"],c=this.getAllProducedFields());for(let d of c)this.getAllProducedFields().includes(d)||this.initialFields.add(d);let p={type:l,nodeName:t,dependencies:c,produces:u,stepFunction:e,stepIndex:this.steps.length};this.steps.push(p)}analyzeStepFunctionProduction(e){try{let t=this.analyzeStepFunctionSource(e);if(t.length>0&&!t.includes("_stepResult"))return t}catch(t){console.debug("Step function source analysis failed:",t)}try{let t=this.createMockState(),n=Object.keys(t),s=e(t,{mainAi:{getOptions:()=>({trace:!1}),forward:()=>Promise.resolve({text:"mock"})},mainOptions:void 0});if(s&&typeof s=="object"&&"then"in s)return this.analyzeStepFunctionSource(e);if(s&&typeof s=="object"&&!Array.isArray(s)){let a=Object.keys(s).filter(c=>!n.includes(c));if(a.length>0)return a}}catch(t){console.debug("Step function dynamic analysis failed:",t)}return this.analyzeStepFunctionSource(e)}analyzeStepFunctionSource(e){try{let t=e.toString(),n=t.match(/\{\s*\.\.\.state\s*,\s*(\w+)\s*:/g);if(n){let s=n.map(i=>{let a=i.match(/(\w+)\s*:/);return a?a[1]:null}).filter(Boolean);if(s.length>0)return s}let r=t.match(/state\.(\w+)\s*=/g);if(r){let s=r.map(i=>{let a=i.match(/state\.(\w+)\s*=/);return a?a[1]:null}).filter(Boolean);if(s.length>0)return s}}catch(t){console.debug("Step function source analysis failed:",t)}return["_stepResult"]}analyzeMapTransformation(e){try{let n=e.toString().split(/\{[\s\S]*?\}/).flatMap(()=>[])}catch{}return["_mapResult"]}createMockState(){let e={};for(let t of this.initialFields)e[t]=this.createMockValue(t);for(let t of this.steps)for(let n of t.produces)n.endsWith("Result")?e[n]={text:"mockText",value:"mockValue",result:"mockResult",data:"mockData",processedText:"mockProcessedText",sentimentValue:"mockSentiment",confidenceScore:.8,isComplex:!1,mockValue:"mockValue",responseText:"mockResponseText",inputText:"mockInputText"}:e[n]=this.createMockValue(n);return e}createMockValue(e){return e.includes("List")||e.includes("Array")||e.endsWith("s")?["mockItem1","mockItem2"]:e.includes("count")||e.includes("Count")||e.includes("index")||e.includes("Index")?0:e.includes("is")||e.includes("has")||e.includes("can")?!1:"mockValue"}analyzeBranchMergeFields(){let e=this.steps.slice(-5).filter(t=>t.type==="execute"&&t.nodeName).flatMap(t=>t.produces);return e.length>0?e:this.steps.filter(t=>t.type==="execute"&&t.nodeName).flatMap(t=>t.produces)}setInitialFields(e){this.initialFields=new Set(e),this.rebuildParallelGroups()}rebuildParallelGroups(){this.parallelGroups=[];let e=new Set,t=new Set(this.initialFields),n=0;for(;e.size<this.steps.length;){let r=[];for(let s of this.steps){if(e.has(s.stepIndex))continue;if(s.dependencies.length===0||s.dependencies.every(a=>t.has(a))){if(s.type==="merge"&&r.length>0)continue;if(r.push(s),e.add(s.stepIndex),s.type==="merge")break}}if(r.length>0){for(let s of r)s.produces.forEach(i=>t.add(i));this.parallelGroups.push({level:n,steps:r}),n++}else{let s=this.steps.filter(i=>!e.has(i.stepIndex));if(s.length>0){let i=s[0];e.add(i.stepIndex),i.produces.forEach(a=>t.add(a)),this.parallelGroups.push({level:n,steps:[i]}),n++}else break}}}getAllProducedFields(){let e=[];for(let t of this.steps)e.push(...t.produces);return e}createOptimizedExecution(e){let t=[];for(let n of this.parallelGroups)if(n.steps.length===1){let r=n.steps[0];r&&t.push(r.stepFunction)}else if(n.steps.length>1){let r=async(s,i)=>{let a=await Ar(n.steps,async l=>await l.stepFunction(s,i),e);if(a.some(l=>l&&typeof l=="object"&&"_parallelResults"in l)){let l=a.find(p=>p&&typeof p=="object"&&"_parallelResults"in p);return l||s}let u=s;for(let l of a)u={...u,...l};return u};t.push(r)}return t}getOptimizedExecutionSteps(){return this.parallelGroups.length===0&&this.steps.length>0&&this.rebuildParallelGroups(),this.createOptimizedExecution()}getExecutionPlan(){return this.parallelGroups.length===0&&this.steps.length>0&&this.rebuildParallelGroups(),{totalSteps:this.steps.length,parallelGroups:this.parallelGroups.length,maxParallelism:this.steps.length===0?1:Math.max(...this.parallelGroups.map(e=>e.steps.length),0),steps:this.steps,groups:this.parallelGroups}}};var Vp=o=>{console.log(o)},br=(o,e=!1)=>{if(e)return"[State hidden]";let t={};for(let[n,r]of Object.entries(o))if(typeof r=="string"&&r.length>100)t[n]=`${r.substring(0,100)}...`;else if(Array.isArray(r)&&r.length>3)t[n]=[...r.slice(0,3),`... (${r.length-3} more)`];else if(typeof r=="object"&&r!==null){let s=JSON.stringify(r);s.length>200?t[n]=`${s.substring(0,200)}...`:t[n]=r}else t[n]=r;return JSON.stringify(t,null,2)},Cr=o=>o<1e3?`${o.toFixed(1)}ms`:o<6e4?`${(o/1e3).toFixed(2)}s`:`${(o/6e4).toFixed(2)}min`,xo=(o=Vp)=>{let e=new
|
|
729
|
+
`),console.log("\u{1F4A1} What This Means:"),console.log("\u2022 MiPRO successfully automated prompt engineering"),console.log("\u2022 Optimized instructions and examples improve model performance"),console.log("\u2022 Framework reduces manual prompt engineering effort"),console.log("\u2022 More training data and iterations would likely improve results")}async evaluateConfiguration(e,t,n,r){let s=0,i=0,a=0,c=r;for(let u of c)try{let l=await e.forward(this.studentAI,u,{modelConfig:{temperature:n.temperature,...n.topP!==void 0?{topP:n.topP}:{}},sampleCount:this.sampleCount,resultPicker:this.sampleCount>1?this.customResultPicker??this.defaultResultPicker:void 0});this.stats.totalCalls+=1;let p=await t({prediction:l,example:u});if(typeof p=="number"&&!Number.isNaN(p)){s+=p,i++;let d=typeof this.targetScore=="number"?this.targetScore:.5;p>=d&&a++}}catch(l){this.getLogger()?.({name:"Notification",id:"mipro_evaluate",value:typeof l=="string"?l:String(l)})}return this.stats.successfulDemos+=a,i>0?s/i:0}};var xr=class{analyzeMappingDependencies(e,t){if(!e||typeof e!="function")return[];let n=[];try{let r=e.toString(),s=Array.from(r.matchAll(/state\.(\w+)/g));for(let i of s)i[1]&&!n.includes(i[1])&&n.push(i[1]);if(n.length===0)try{let i=this.createDependencyTracker(n);e(i)}catch{}}catch(r){console.debug("Dependency analysis failed:",r)}return n}createTrackingProxy(e,t){let n=this;return new Proxy(e,{get(r,s){typeof s=="string"&&!t.includes(s)&&t.push(s);let i=r[s];return i&&typeof i=="object"?n.createTrackingProxy(i,t):i},has(r,s){return typeof s=="string"&&!t.includes(s)&&t.push(s),s in r}})}parseStaticDependencies(e){let t=[];try{let n=Array.from(e.matchAll(/state\.(\w+)/g));for(let i of n)i[1]&&!t.includes(i[1])&&t.push(i[1]);let r=Array.from(e.matchAll(/\$\{state\.(\w+)\}/g));for(let i of r)i[1]&&!t.includes(i[1])&&t.push(i[1]);let s=Array.from(e.matchAll(/\{\s*(\w+)(?:\s*,\s*(\w+))*\s*\}\s*=\s*state/g));for(let i of s)for(let a=1;a<i.length;a++)i[a]&&!t.includes(i[a])&&t.push(i[a])}catch(n){console.debug("Static dependency parsing failed:",n)}return t}createDependencyTracker(e){return new Proxy({},{get(t,n){return typeof n=="string"&&!e.includes(n)&&e.push(n),new Proxy({},{get:()=>{}})}})}};async function Ar(o,e,t){if(!t||t<=0||t>=o.length){let r=o.map((s,i)=>e(s,i));return Promise.all(r)}let n=new Array(o.length);for(let r=0;r<o.length;r+=t){let i=o.slice(r,r+t).map((c,u)=>{let l=r+u;return e(c,l).then(p=>({result:p,originalIndex:l}))}),a=await Promise.all(i);for(let{result:c,originalIndex:u}of a)n[u]=c}return n}var yr=class{steps=[];parallelGroups=[];analyzer=new xr;initialFields=new Set;addExecutionStep(e,t,n,r,s,i,a){let c=[],u=[],l=r||"map";if(t&&n)l="execute",c=this.analyzer.analyzeMappingDependencies(n,t),u=[`${t}Result`];else if(l==="map"&&s)u=this.analyzeMapTransformation(s),c=this.getAllProducedFields();else if(l==="parallel-map"){if(Array.isArray(s)){let d=new Set;for(let g of s)this.analyzeMapTransformation(g).forEach(f=>d.add(f));u=Array.from(d)}else s?u=this.analyzeMapTransformation(s):u=["_parallelMapResult"];c=this.getAllProducedFields()}else if(l==="merge"){if(i?.resultKey)u=[i.resultKey];else{let g=this.analyzeBranchMergeFields();u=g.length>0?g:["_mergedResult"]}e.toString().includes("_parallelResults")?c=["_parallelResults"]:c=this.getAllProducedFields()}else if(l==="parallel")u=["_parallelResults"],c=this.getAllProducedFields();else if(l==="derive")if(a?.outputFieldName&&a?.inputFieldName){u=[a.outputFieldName];let d=s?this.analyzer.analyzeMappingDependencies(s,"derive"):[];c=[a.inputFieldName,...d].filter((g,m,f)=>f.indexOf(g)===m)}else u=["_deriveResult"],c=this.getAllProducedFields();else e.toString().includes("transform(")?(l="map",c=this.getAllProducedFields(),u=["_mapResult"]):e.toString().includes("_parallelResults")&&(u=["_parallelResults"],c=this.getAllProducedFields());for(let d of c)this.getAllProducedFields().includes(d)||this.initialFields.add(d);let p={type:l,nodeName:t,dependencies:c,produces:u,stepFunction:e,stepIndex:this.steps.length};this.steps.push(p)}analyzeStepFunctionProduction(e){try{let t=this.analyzeStepFunctionSource(e);if(t.length>0&&!t.includes("_stepResult"))return t}catch(t){console.debug("Step function source analysis failed:",t)}try{let t=this.createMockState(),n=Object.keys(t),s=e(t,{mainAi:{getOptions:()=>({trace:!1}),forward:()=>Promise.resolve({text:"mock"})},mainOptions:void 0});if(s&&typeof s=="object"&&"then"in s)return this.analyzeStepFunctionSource(e);if(s&&typeof s=="object"&&!Array.isArray(s)){let a=Object.keys(s).filter(c=>!n.includes(c));if(a.length>0)return a}}catch(t){console.debug("Step function dynamic analysis failed:",t)}return this.analyzeStepFunctionSource(e)}analyzeStepFunctionSource(e){try{let t=e.toString(),n=t.match(/\{\s*\.\.\.state\s*,\s*(\w+)\s*:/g);if(n){let s=n.map(i=>{let a=i.match(/(\w+)\s*:/);return a?a[1]:null}).filter(Boolean);if(s.length>0)return s}let r=t.match(/state\.(\w+)\s*=/g);if(r){let s=r.map(i=>{let a=i.match(/state\.(\w+)\s*=/);return a?a[1]:null}).filter(Boolean);if(s.length>0)return s}}catch(t){console.debug("Step function source analysis failed:",t)}return["_stepResult"]}analyzeMapTransformation(e){try{let n=e.toString().split(/\{[\s\S]*?\}/).flatMap(()=>[])}catch{}return["_mapResult"]}createMockState(){let e={};for(let t of this.initialFields)e[t]=this.createMockValue(t);for(let t of this.steps)for(let n of t.produces)n.endsWith("Result")?e[n]={text:"mockText",value:"mockValue",result:"mockResult",data:"mockData",processedText:"mockProcessedText",sentimentValue:"mockSentiment",confidenceScore:.8,isComplex:!1,mockValue:"mockValue",responseText:"mockResponseText",inputText:"mockInputText"}:e[n]=this.createMockValue(n);return e}createMockValue(e){return e.includes("List")||e.includes("Array")||e.endsWith("s")?["mockItem1","mockItem2"]:e.includes("count")||e.includes("Count")||e.includes("index")||e.includes("Index")?0:e.includes("is")||e.includes("has")||e.includes("can")?!1:"mockValue"}analyzeBranchMergeFields(){let e=this.steps.slice(-5).filter(t=>t.type==="execute"&&t.nodeName).flatMap(t=>t.produces);return e.length>0?e:this.steps.filter(t=>t.type==="execute"&&t.nodeName).flatMap(t=>t.produces)}setInitialFields(e){this.initialFields=new Set(e),this.rebuildParallelGroups()}rebuildParallelGroups(){this.parallelGroups=[];let e=new Set,t=new Set(this.initialFields),n=0;for(;e.size<this.steps.length;){let r=[];for(let s of this.steps){if(e.has(s.stepIndex))continue;if(s.dependencies.length===0||s.dependencies.every(a=>t.has(a))){if(s.type==="merge"&&r.length>0)continue;if(r.push(s),e.add(s.stepIndex),s.type==="merge")break}}if(r.length>0){for(let s of r)s.produces.forEach(i=>t.add(i));this.parallelGroups.push({level:n,steps:r}),n++}else{let s=this.steps.filter(i=>!e.has(i.stepIndex));if(s.length>0){let i=s[0];e.add(i.stepIndex),i.produces.forEach(a=>t.add(a)),this.parallelGroups.push({level:n,steps:[i]}),n++}else break}}}getAllProducedFields(){let e=[];for(let t of this.steps)e.push(...t.produces);return e}createOptimizedExecution(e){let t=[];for(let n of this.parallelGroups)if(n.steps.length===1){let r=n.steps[0];r&&t.push(r.stepFunction)}else if(n.steps.length>1){let r=async(s,i)=>{let a=await Ar(n.steps,async l=>await l.stepFunction(s,i),e);if(a.some(l=>l&&typeof l=="object"&&"_parallelResults"in l)){let l=a.find(p=>p&&typeof p=="object"&&"_parallelResults"in p);return l||s}let u=s;for(let l of a)u={...u,...l};return u};t.push(r)}return t}getOptimizedExecutionSteps(){return this.parallelGroups.length===0&&this.steps.length>0&&this.rebuildParallelGroups(),this.createOptimizedExecution()}getExecutionPlan(){return this.parallelGroups.length===0&&this.steps.length>0&&this.rebuildParallelGroups(),{totalSteps:this.steps.length,parallelGroups:this.parallelGroups.length,maxParallelism:this.steps.length===0?1:Math.max(...this.parallelGroups.map(e=>e.steps.length),0),steps:this.steps,groups:this.parallelGroups}}};var Vp=o=>{console.log(o)},br=(o,e=!1)=>{if(e)return"[State hidden]";let t={};for(let[n,r]of Object.entries(o))if(typeof r=="string"&&r.length>100)t[n]=`${r.substring(0,100)}...`;else if(Array.isArray(r)&&r.length>3)t[n]=[...r.slice(0,3),`... (${r.length-3} more)`];else if(typeof r=="object"&&r!==null){let s=JSON.stringify(r);s.length>200?t[n]=`${s.substring(0,200)}...`:t[n]=r}else t[n]=r;return JSON.stringify(t,null,2)},Cr=o=>o<1e3?`${o.toFixed(1)}ms`:o<6e4?`${(o/1e3).toFixed(2)}s`:`${(o/6e4).toFixed(2)}min`,xo=(o=Vp)=>{let e=new gt,t=e.gray(`${"\u2501".repeat(80)}
|
|
730
730
|
`),n=e.gray(`${"\u2500".repeat(40)}
|
|
731
731
|
`);return r=>{let s="";switch(r.name){case"FlowStart":s=`
|
|
732
732
|
${e.blueBright("\u{1F504} [ AXFLOW START ]")}
|
|
@@ -805,9 +805,9 @@ ${e}
|
|
|
805
805
|
`),r+=`Error: ${n.error}
|
|
806
806
|
`,n.state&&(r+=`State: ${br(n.state,!0)}
|
|
807
807
|
`),r+=`${e}
|
|
808
|
-
`;break;default:r=JSON.stringify(n,null,2)}o(r)}},Jp=xo(),Qp=o=>{let e=new Map;return{logger:o,startTiming:t=>{e.set(t,Date.now())},endTiming:t=>{let n=e.get(t);if(!n)return 0;let r=Date.now()-n;return e.delete(t),r},getCurrentTime:()=>Date.now()}};var Tr=class{constructor(e){this.nodeGenerators=e}steps=[];execute(e,t,n){let r=this.nodeGenerators.get(e);if(!r)throw new Error(`Node program for '${e}' not found.`);return this.steps.push(async(s,i)=>{let a=n?.ai??i.mainAi,c=n?.options??i.mainOptions,u=t(s),l=c?.traceLabel?`Node:${e} (${c.traceLabel})`:`Node:${e}`,p;if("forward"in r&&typeof r.forward=="function")p=await r.forward(a,u,{...c,traceLabel:l});else throw new Error(`Node program for '${e}' does not have a forward method`);return{...s,[`${e}Result`]:p}}),this}map(e){return this.steps.push(t=>e(t)),this}async executeSteps(e,t){let n=e;for(let r of this.steps)n=await r(n,t);return n}},ri=class{constructor(e){this.nodeGenerators=e}steps=[];execute(e,t,n){let r=this.nodeGenerators.get(e);if(!r)throw new Error(`Node program for '${e}' not found.`);return this.steps.push(async(s,i)=>{let a=n?.ai??i.mainAi,c=n?.options??i.mainOptions,u=t(s),l=c?.traceLabel?`Node:${e} (${c.traceLabel})`:`Node:${e}`,p;if("forward"in r&&typeof r.forward=="function")p=await r.forward(a,u,{...c,traceLabel:l});else throw new Error(`Node program for '${e}' does not have a forward method`);return{...s,[`${e}Result`]:p}}),this}map(e){return this.steps.push(t=>e(t)),this}async executeSteps(e,t){let n=e;for(let r of this.steps)n=await r(n,t);return n}};var Ao=class o{static _ctorWarned=!1;nodes=new Map;flowDefinition=[];nodeGenerators=new Map;loopStack=[];stepLabels=new Map;branchContext=null;autoParallelConfig;executionPlanner=new yr;program;flowName;nodeUsage=new Map;nodeTraces=new Map;flowLogger;timingLogger;defaultAIOptions;activeAbortControllers=new Set;_stopRequested=!1;toCamelCase(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}stop(){this._stopRequested=!0;for(let e of this.activeAbortControllers)e.abort("Stopped by user")}extractInputValues(e){if(!Array.isArray(e))return e;let t=e.filter(n=>n.role==="user").pop();if(!t)throw new Error("No user message found in values array");return t.values}getCacheKey(e,t){if(!t)return;this.ensureProgram();let n=this.program.getSignature(),r=n.getInputFields().map(c=>c.name),s=this.extractInputValues(e),i=
|
|
808
|
+
`;break;default:r=JSON.stringify(n,null,2)}o(r)}},Jp=xo(),Qp=o=>{let e=new Map;return{logger:o,startTiming:t=>{e.set(t,Date.now())},endTiming:t=>{let n=e.get(t);if(!n)return 0;let r=Date.now()-n;return e.delete(t),r},getCurrentTime:()=>Date.now()}};var Tr=class{constructor(e){this.nodeGenerators=e}steps=[];execute(e,t,n){let r=this.nodeGenerators.get(e);if(!r)throw new Error(`Node program for '${e}' not found.`);return this.steps.push(async(s,i)=>{let a=n?.ai??i.mainAi,c=n?.options??i.mainOptions,u=t(s),l=c?.traceLabel?`Node:${e} (${c.traceLabel})`:`Node:${e}`,p;if("forward"in r&&typeof r.forward=="function")p=await r.forward(a,u,{...c,traceLabel:l});else throw new Error(`Node program for '${e}' does not have a forward method`);return{...s,[`${e}Result`]:p}}),this}map(e){return this.steps.push(t=>e(t)),this}async executeSteps(e,t){let n=e;for(let r of this.steps)n=await r(n,t);return n}},ri=class{constructor(e){this.nodeGenerators=e}steps=[];execute(e,t,n){let r=this.nodeGenerators.get(e);if(!r)throw new Error(`Node program for '${e}' not found.`);return this.steps.push(async(s,i)=>{let a=n?.ai??i.mainAi,c=n?.options??i.mainOptions,u=t(s),l=c?.traceLabel?`Node:${e} (${c.traceLabel})`:`Node:${e}`,p;if("forward"in r&&typeof r.forward=="function")p=await r.forward(a,u,{...c,traceLabel:l});else throw new Error(`Node program for '${e}' does not have a forward method`);return{...s,[`${e}Result`]:p}}),this}map(e){return this.steps.push(t=>e(t)),this}async executeSteps(e,t){let n=e;for(let r of this.steps)n=await r(n,t);return n}};var Ao=class o{static _ctorWarned=!1;nodes=new Map;flowDefinition=[];nodeGenerators=new Map;loopStack=[];stepLabels=new Map;branchContext=null;autoParallelConfig;executionPlanner=new yr;program;flowName;nodeUsage=new Map;nodeTraces=new Map;flowLogger;timingLogger;defaultAIOptions;activeAbortControllers=new Set;_stopRequested=!1;toCamelCase(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}stop(){this._stopRequested=!0;for(let e of this.activeAbortControllers)e.abort("Stopped by user")}extractInputValues(e){if(!Array.isArray(e))return e;let t=e.filter(n=>n.role==="user").pop();if(!t)throw new Error("No user message found in values array");return t.values}getCacheKey(e,t){if(!t)return;this.ensureProgram();let n=this.program.getSignature(),r=n.getInputFields().map(c=>c.name),s=this.extractInputValues(e),i=bt("sha256");i.update(n.hash()??"");let a=c=>{let u=typeof c;if(i.update(`|${u}|`),c==null){i.update("null");return}if(u==="string"||u==="number"||u==="boolean"){i.update(String(c));return}if(Array.isArray(c)){i.update("[");for(let l of c)a(l);i.update("]");return}if(typeof c=="object"&&c!==null&&"mimeType"in c&&"data"in c){let l=c;i.update(l.mimeType??"");let p=bt("sha256").update(l.data??"").digest("hex");i.update(p);return}if(typeof c=="object"){let l=c,p=Object.keys(l).sort();for(let d of p)i.update(`{${d}}`),a(l[d]);return}i.update(String(c))};for(let c of r)a(s?.[c]);return i.digest("hex")}async executeStepsWithLogging(e,t,n,r){let s={...t},i=0;for(let a=0;a<e.length;a++){let c=e[a];if(!c)continue;let u=n.mainOptions?.abortSignal;if(u?.aborted)throw new Ge("flow-between-steps",u.reason??"Flow aborted between steps");let l=this.getStepType(c,a),p=this.getStepMetadata(c,a),d=Object.keys(s);this.flowLogger&&this.flowLogger({name:"StepStart",timestamp:Date.now(),stepIndex:a,stepType:l,nodeName:p.nodeName,dependencies:p.dependencies,produces:p.produces,state:{...s}});let g=Date.now();this.timingLogger?.startTiming(`step-${a}`);try{s=await c(s,n),i++;let f=this.timingLogger?.endTiming(`step-${a}`)??Date.now()-g,x=Object.keys(s).filter(y=>!d.includes(y)),A;if(l==="execute"&&p.nodeName&&x.length>0){let y=`${p.nodeName}Result`;A=s[y]}this.flowLogger&&this.flowLogger({name:"StepComplete",timestamp:Date.now(),stepIndex:a,stepType:l,nodeName:p.nodeName,executionTime:f,state:{...s},newFields:x,result:A})}catch(m){throw this.flowLogger&&this.flowLogger({name:"FlowError",timestamp:Date.now(),error:m instanceof Error?m.message:String(m),stepIndex:a,stepType:l,nodeName:p.nodeName,state:{...s}}),m}}return{finalState:s,stepsExecuted:i}}getStepType(e,t){let n=this.executionPlanner.getExecutionPlan().steps.find(s=>s.stepIndex===t);if(n)return n.type;let r=e.toString();return r.includes("nodeName")||r.includes("nodeProgram")?"execute":r.includes("_parallelResults")||r.includes("processBatches")?"parallel":r.includes("branchValue")||r.includes("branches.get")||r.includes("mergeFunction")?"merge":r.includes("transform(")||r.includes("...state,")?"map":r.includes("inputValue")&&r.includes("transformFn")?"derive":r.includes("condition(")&&r.includes("iterations")?r.includes("while")?"while":"feedback":r.includes("branchSteps")||r.includes("currentState")?"branch":"other"}getStepMetadata(e,t){let r=this.executionPlanner.getExecutionPlan().steps.find(a=>a.stepIndex===t);if(r)return{nodeName:r.nodeName,dependencies:r.dependencies,produces:r.produces};let s=e.toString();return{nodeName:this.extractNodeNameFromSource(s),dependencies:[],produces:[]}}extractNodeNameFromSource(e){let t=e.match(/nodeName['"]?\s*[=:]\s*['"](\w+)['"]/);if(t)return t[1];let n=e.match(/nodeProgram\.get\(['"](\w+)['"]\)/);if(n)return n[1]}inferSignatureFromFlow(){let e=this.executionPlanner.getExecutionPlan();if(this.nodeGenerators.size===0&&e.steps.length===0)return V().input("userInput",V.string("User input to the flow")).output("flowOutput",V.string("Output from the flow")).build();let t=new Set,n=new Set;for(let l of e.steps)l.produces.forEach(p=>t.add(p)),l.dependencies.forEach(p=>n.add(p));let r=new Set;for(let l of Array.from(n))t.has(l)||r.add(l);let s=new Set,i=e.steps[e.steps.length-1];if(i&&(i.type==="map"||i.type==="merge")){if(i.produces.forEach(l=>{l.startsWith("_")||s.add(l)}),i.type==="merge"&&i.produces.includes("_mergedResult"))for(let l of e.steps)l.type==="execute"&&l.produces.length>0&&l.produces.forEach(p=>s.add(p))}else for(let l of Array.from(t)){let p=!1;for(let d of e.steps)if(d.dependencies.includes(l)){p=!0;break}if(!p)if(l.endsWith("Result")){let d=l.replace("Result",""),g=this.nodeGenerators.get(d);if(g){let f=g.getSignature().getOutputFields();for(let h of f)s.add(h.name)}else s.add(l)}else s.add(l)}if(r.size===0&&s.size===0){let l=[],p=[];for(let[g,m]of Array.from(this.nodeGenerators)){let f=m.getSignature();for(let h of f.getInputFields()){let x=this.toCamelCase(`${g}_${h.name}`);l.push({name:x,type:h.type,description:h.description,isOptional:h.isOptional,isInternal:h.isInternal})}for(let h of f.getOutputFields()){let x=this.toCamelCase(`${g}_${h.name}`);p.push({name:x,type:h.type,description:h.description,isOptional:h.isOptional,isInternal:h.isInternal})}}let d=new Ve;return l.length>0?d.setInputFields(l):d.addInputField({name:"userInput",type:{name:"string"},description:"User input to the flow"}),p.length>0?d.setOutputFields(p):d.addOutputField({name:"flowOutput",type:{name:"string"},description:"Output from the flow"}),d}let a=new Ve,c=[];for(let l of Array.from(r))c.push({name:l,type:{name:"string"},description:`Input field: ${l}`});c.length===0&&c.push({name:"userInput",type:{name:"string"},description:"User input to the flow"});let u=[];for(let l of Array.from(s))l.startsWith("_")||u.push({name:l,type:{name:"string"},description:`Output field: ${l}`});return u.length===0&&u.push({name:"flowOutput",type:{name:"string"},description:"Output from the flow"}),a.setInputFields(c),a.setOutputFields(u),a}constructor(e){o._ctorWarned||(console.warn("[AxFlow] new AxFlow() is deprecated. Use flow() factory instead."),o._ctorWarned=!0),this.autoParallelConfig={enabled:e?.autoParallel!==!1,batchSize:e?.batchSize||10},e?.logger?this.flowLogger=e.logger:e?.debug===!0?this.flowLogger=xo():this.flowLogger=void 0,this.timingLogger=this.flowLogger?Qp(this.flowLogger):void 0,(e?.tracer||e?.meter)&&(this.defaultAIOptions={tracer:e.tracer,meter:e.meter})}static create(e){return new o(e)}ensureProgram(){let e=this.inferSignatureFromFlow();if(!this.program){this.program=new an(e);for(let[t,n]of Array.from(this.nodeGenerators))this.program.register(n,t);return}this.program.setSignature(e)}getId(){return this.ensureProgram(),this.program.getId()}setId(e){this.ensureProgram(),this.program.setId(e)}namedPrograms(){return this.ensureProgram(),this.program.namedPrograms()}namedProgramInstances(){return this.ensureProgram(),this.program.namedProgramInstances()}getTraces(){let e=[];for(let[t,n]of Array.from(this.nodeTraces))e.push(...n);return e}setDemos(e,t){this.ensureProgram(),this.program.setDemos(e,t)}description(e,t){return this.ensureProgram(),this.flowName=e,this.program.setDescription(t),this}toFunction(){this.ensureProgram();let e=this.program.getSignature(),n=(this.flowName??(e.getDescription()?.trim().split(`
|
|
809
809
|
`)[0]||"axFlow")).replace(/\s+/g,"_"),r=this.toCamelCase(n),s=async(i,a)=>{let c=a?.ai;if(!c)throw new Error("AI service is required to run the flow");let u=await this.forward(c,i??{}),l=e.getOutputFields(),p=u??{};return Object.keys(p).map(d=>{let g=l.find(m=>m.name===d);return g&&g.title?`${g.title}: ${p[d]}`:`${d}: ${p[d]}`}).join(`
|
|
810
|
-
`)};return{name:r,description:e.getDescription()??"Execute this AxFlow",parameters:e.toJSONSchema(),func:s}}getUsage(){let e=[];for(let[t,n]of Array.from(this.nodeUsage))e.push(...n);return so(e)}resetUsage(){this.nodeUsage.clear();for(let[e,t]of Array.from(this.nodeGenerators))t&&"resetUsage"in t&&t.resetUsage()}resetTraces(){this.nodeTraces.clear()}getUsageReport(){let e={};for(let[t,n]of Array.from(this.nodeUsage))e[t]=so(n);return e}getNodePrograms(){return Array.from(this.nodeGenerators).map(([e,t])=>({name:e,program:t}))}setNodeInstruction(e,t){let n=this.nodeGenerators.get(e);if(!n)return!1;let r=n;if(typeof r.setInstruction=="function")try{return r.setInstruction(t),!0}catch{return!1}return!1}setAllNodeInstructions(e){for(let[t,n]of Object.entries(e))this.setNodeInstruction(t,n)}getTracesReport(){let e={};for(let[t,n]of Array.from(this.nodeTraces))e[t]=n;return e}async*streamingForward(e,t,n){let r=n?.cachingFunction??ke.cachingFunction,s=this.getCacheKey(t,r);if(r&&s){let a;try{a=await r(s)}catch{}if(a!==void 0){yield{version:0,index:0,delta:a};return}}let i=await this.forward(e,t,n);if(r&&s)try{await r(s,i)}catch{}yield{version:1,index:0,delta:i}}async forward(e,t,n){let r=n?.cachingFunction??ke.cachingFunction,s=this.getCacheKey(t,r);if(r&&s){let l;try{l=await r(s)}catch{}if(l!==void 0)return l}let i=Date.now();this.timingLogger?.startTiming("flow-execution");let a={},c,u;try{this.resetUsage(),this.resetTraces();let l=this.extractInputValues(t);if(this.nodeGenerators.size>0&&this.ensureProgram(),a={...l},this.flowLogger){let y=this.getExecutionPlan();this.flowLogger({name:"FlowStart",timestamp:i,inputFields:Object.keys(l),totalSteps:y.totalSteps,parallelGroups:y.parallelGroups,maxParallelism:y.maxParallelism,autoParallelEnabled:y.autoParallelEnabled})}let p=n?.tracer??this.defaultAIOptions?.tracer,d=n?.traceContext,g=d;if(p){let y=this.getExecutionPlan(),C=n?.traceLabel?`AxFlow > ${n.traceLabel}`:"AxFlow";c=p.startSpan(C,{kind:ht.INTERNAL,attributes:{total_steps:y.totalSteps,parallel_groups:y.parallelGroups,max_parallelism:y.maxParallelism,auto_parallel_enabled:y.autoParallelEnabled}});let R=d??tn.active();g=Lr.setSpan(R,c)}u=new AbortController,this.activeAbortControllers.add(u),this._stopRequested&&u.abort("Stopped by user (pre-forward)");let m=_t(n?.abortSignal,n?.abortController?.signal),f=_t(u.signal,_t(m,ke.abortSignal)),h={mainAi:e,mainOptions:(()=>{let y={...this.defaultAIOptions??{},...n};return n?.model&&(y.model=String(n.model)),p&&(y.tracer=p),g&&(y.traceContext=g),f&&(y.abortSignal=f),Object.keys(y).length>0?y:void 0})()},x=n?.autoParallel!==!1&&this.autoParallelConfig.enabled,A=0;if(x){this.executionPlanner.setInitialFields(Object.keys(l));let y=this.executionPlanner.createOptimizedExecution(this.autoParallelConfig.batchSize),C=await this.executeStepsWithLogging(y,a,h,!0);a=C.finalState,A=C.stepsExecuted}else{let y=await this.executeStepsWithLogging(this.flowDefinition,a,h,!1);a=y.finalState,A=y.stepsExecuted}if(this.flowLogger){let y=this.timingLogger?.endTiming("flow-execution")??Date.now()-i;this.flowLogger({name:"FlowComplete",timestamp:Date.now(),totalExecutionTime:y,finalState:a,outputFields:Object.keys(a),stepsExecuted:A})}if(r&&s)try{await r(s,a)}catch{}return a}catch(l){throw this.flowLogger&&this.flowLogger({name:"FlowError",timestamp:Date.now(),error:l instanceof Error?l.message:String(l),state:a}),l}finally{c&&c.end(),u&&this.activeAbortControllers.delete(u),this._stopRequested=!1}}node(e,t){if(this.nodes.has(e)||this.nodeGenerators.has(e))throw new Error(`Node '${e}' is already defined. Use a unique node name in this flow.`);if(typeof t=="string"||t instanceof Ve){let n=t;if(!n)throw new Error(`Invalid signature for node '${e}': signature cannot be empty`);this.nodes.set(e,{inputs:{},outputs:{}});let r=gt(n);this.nodeGenerators.set(e,r),this.ensureProgram(),this.program.register(r,e)}else if(typeof t=="function"){this.nodes.set(e,{inputs:{},outputs:{}});let n=new t;this.nodeGenerators.set(e,n),this.ensureProgram(),this.program.register(n,e)}else if(t&&typeof t=="object"&&"forward"in t){this.nodes.set(e,{inputs:{},outputs:{}});let n=t;this.nodeGenerators.set(e,n),this.ensureProgram(),this.program.register(n,e)}else throw new Error(`Invalid second argument for node '${e}': expected string, AxSignature, AxProgrammable instance, or constructor function`);return this}n(e,t){return this.node(e,t)}map(e,t){if(t?.parallel){let n=Array.isArray(e)?e:[e],r=async s=>(await Ar(n,async(c,u)=>{let l=c(s);return Promise.resolve(l)},this.autoParallelConfig.batchSize)).reduce((c,u)=>({...c,...u}),s);if(this.branchContext?.currentBranchValue!==void 0){let s=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];s.push(r),this.branchContext.branches.set(this.branchContext.currentBranchValue,s)}else this.flowDefinition.push(r),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(r,void 0,void 0,"parallel-map",n)}else{let n=async r=>{if(Array.isArray(e))throw new Error("Array of transforms requires parallel: true option");let s=e(r);return Promise.resolve(s)};if(this.branchContext?.currentBranchValue!==void 0){let r=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];r.push(n),this.branchContext.branches.set(this.branchContext.currentBranchValue,r)}else this.flowDefinition.push(n),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(n,void 0,void 0,"map",e)}return this.nodeGenerators.size>0&&this.ensureProgram(),this}m(e,t){return this.map(e,t)}returns(e){let t=async n=>{let r=e(n);return Promise.resolve(r)};if(this.branchContext?.currentBranchValue!==void 0){let n=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];n.push(t),this.branchContext.branches.set(this.branchContext.currentBranchValue,n)}else this.flowDefinition.push(t),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(t,void 0,void 0,"map",e);return this.nodeGenerators.size>0&&this.ensureProgram(),this}r(e){return this.returns(e)}label(e){if(this.branchContext?.currentBranchValue!==void 0)throw new Error("Cannot create labels inside branch blocks");return this.stepLabels.set(e,this.flowDefinition.length),this}l(e){return this.label(e)}execute(e,t,n){if(!this.nodes.has(e))throw new Error(`Node '${e}' not found. Make sure to define it with .node() first.`);let r=this.nodeGenerators.get(e);if(!r)throw new Error(`Node program for '${e}' not found.`);let s=async(i,a)=>{let c=n?.ai??a.mainAi,u={...a.mainOptions??{},...n?.options??{}},l=t(i),p=u?.traceLabel?`Node:${e} (${u.traceLabel})`:`Node:${e}`,d;if("forward"in r&&typeof r.forward=="function"){if(d=await r.forward(c,l,{...u,traceLabel:p}),"getUsage"in r&&typeof r.getUsage=="function"){let g=r.getUsage(),m=Array.isArray(g)?g:[...g.actor,...g.responder];if(m.length>0){let f=this.nodeUsage.get(e)||[];this.nodeUsage.set(e,[...f,...m])}}if("getTraces"in r&&typeof r.getTraces=="function"){let g=r.getTraces();if(g&&g.length>0){let m=this.nodeTraces.get(e)||[];this.nodeTraces.set(e,[...m,...g])}}}else throw new Error(`Node program for '${e}' does not have a forward method`);return{...i,[`${e}Result`]:d}};if(this.branchContext?.currentBranchValue!==void 0){let i=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];i.push(s),this.branchContext.branches.set(this.branchContext.currentBranchValue,i)}else this.flowDefinition.push(s),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(s,e,t);return this.ensureProgram(),this}applyOptimization(e){this.program&&"applyOptimization"in this.program&&this.program.applyOptimization(e)}e(e,t,n){return this.execute(e,t,n)}branch(e){if(this.branchContext)throw new Error("Nested branches are not supported");return this.branchContext={predicate:t=>e(t),branches:new Map,currentBranchValue:void 0},this}b(e){return this.branch(e)}when(e){if(!this.branchContext)throw new Error("when() called without matching branch()");return this.branchContext.currentBranchValue=e,this.branchContext.branches.set(e,[]),this}w(e){return this.when(e)}merge(){if(!this.branchContext)throw new Error("merge() called without matching branch()");let e=this.branchContext;this.branchContext=null;let t=async(n,r)=>{let s=e.predicate(n),i=e.branches.get(s);if(this.flowLogger&&this.flowLogger({name:"BranchEvaluation",timestamp:Date.now(),branchValue:s,hasMatchingBranch:!!i,branchStepsCount:i?.length??0}),!i)return n;let a=n;for(let c of i)a=await c(a,r);return a};return this.flowDefinition.push(t),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(t,void 0,void 0,"merge"),this.ensureProgram(),this}mg(){return this.merge()}parallel(e){let t=async(n,r)=>{let s=await Ar(e,async(i,a)=>{let c=new Tr(this.nodeGenerators);return await i(c).executeSteps(n,r)},this.autoParallelConfig.batchSize);return{...n,_parallelResults:s}};return this.flowDefinition.push(t),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(t,void 0,void 0,"parallel",void 0,void 0),this.ensureProgram(),{merge:(n,r)=>{let s=i=>{let a=i._parallelResults;if(!Array.isArray(a))throw new Error("No parallel results found for merge");let c=r(...a),u={...i};return delete u._parallelResults,u[n]=c,u};return this.flowDefinition.push(s),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(s,void 0,void 0,"merge",void 0,{resultKey:n,mergeFunction:r}),this.ensureProgram(),this}}}p(e){return this.parallel(e)}feedback(e,t,n=10){if(!this.stepLabels.has(t))throw new Error(`Label '${t}' not found. Make sure to define it with .label() before the feedback point.`);let r=this.stepLabels.get(t),s=this.flowDefinition.length;return this.flowDefinition.push(async(i,a)=>{let c=i,u=1,l=`_feedback_${t}_iterations`;for(typeof c[l]!="number"&&(c={...c,[l]:1});e(c)&&u<n;){u++,c={...c,[l]:u};for(let p=r;p<s;p++){let d=this.flowDefinition[p];d&&(c=await d(c,a))}}return c}),this.nodeGenerators.size>0&&this.ensureProgram(),this}fb(e,t,n=10){return this.feedback(e,t,n)}while(e,t=100){let n=this.flowDefinition.length;this.loopStack.push(n);let r=Object.assign(s=>s,{_condition:e,_maxIterations:t,_isLoopStart:!0});return this.flowDefinition.push(r),this.nodeGenerators.size>0&&this.ensureProgram(),this}wh(e,t=100){return this.while(e,t)}endWhile(){if(this.loopStack.length===0)throw new Error("endWhile() called without matching while()");let e=this.loopStack.pop(),t=this.flowDefinition[e];if(!t||!("_isLoopStart"in t))throw new Error("Loop start step not found or invalid");let n=t._condition,r=t._maxIterations,s=this.flowDefinition.splice(e+1);return this.flowDefinition[e]=async(i,a)=>{let c=i,u=0;for(;n(c)&&u<r;){u++;for(let l of s)c=await l(c,a)}if(u>=r&&n(c))throw new Error(`While loop exceeded maximum iterations (${r}). Consider increasing maxIterations or ensuring the loop condition eventually becomes false.`);return c},this.nodeGenerators.size>0&&this.ensureProgram(),this}end(){return this.endWhile()}derive(e,t,n,r){let s=async i=>{let a=i[t];if(a===void 0)throw new Error(`Input field '${t}' not found in state`);let c;if(Array.isArray(a))if(this.autoParallelConfig.enabled){let u=r?.batchSize||this.autoParallelConfig.batchSize;c=await Ar(a,async(l,p)=>n(l,p,i),u)}else c=a.map((u,l)=>n(u,l,i));else c=n(a,void 0,i);return{...i,[e]:c}};if(this.branchContext?.currentBranchValue!==void 0){let i=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];i.push(s),this.branchContext.branches.set(this.branchContext.currentBranchValue,i)}else this.flowDefinition.push(s),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(s,void 0,void 0,"derive",n,void 0,{inputFieldName:t,outputFieldName:e,batchSize:r?.batchSize});return this.ensureProgram(),this}getExecutionPlan(){let e=this.executionPlanner.getExecutionPlan();return{totalSteps:e.totalSteps,parallelGroups:e.parallelGroups,maxParallelism:e.maxParallelism,autoParallelEnabled:this.autoParallelConfig.enabled,steps:e.steps,groups:e.groups}}getSignature(){return this.ensureProgram(),this.program.getSignature()}nodeExtended(e,t,n){let s=typeof t=="string"?Ve.create(t):t;if(n.prependInputs)for(let i of n.prependInputs)s=s.prependInputField(i.name,i.type);if(n.appendInputs)for(let i of n.appendInputs)s=s.appendInputField(i.name,i.type);if(n.prependOutputs)for(let i of n.prependOutputs)s=s.prependOutputField(i.name,i.type);if(n.appendOutputs)for(let i of n.appendOutputs)s=s.appendOutputField(i.name,i.type);return this.node(e,s)}nx(e,t,n){return this.nodeExtended(e,t,n)}mapOutput(e){let t=async n=>{let r=e(n);return{...n,...r}};if(this.branchContext?.currentBranchValue!==void 0){let n=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];n.push(t),this.branchContext.branches.set(this.branchContext.currentBranchValue,n)}else this.flowDefinition.push(t),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(t,void 0,void 0,"map",e);return this.nodeGenerators.size>0&&this.ensureProgram(),this}mo(e){return this.mapOutput(e)}};function oi(o){return Ao.create(o)}var si=class{apiUrl;containerId=null;constructor(e="http://localhost:2375"){this.apiUrl=e}async pullImage(e){let t=await this.fetchDockerAPI(`/images/create?fromImage=${encodeURIComponent(e)}`,{method:"POST"});if(!t.ok)throw new Error(`Failed to pull image: ${t.statusText}`);await t.text()}async createContainer({imageName:e,volumes:t=[],doNotPullImage:n,tag:r}){let s=t.map(u=>`${u.hostPath}:${u.containerPath}`);n||await this.pullImage(e);let i={Image:e,Tty:!0,OpenStdin:!1,AttachStdin:!1,AttachStdout:!1,AttachStderr:!1,HostConfig:{Binds:s},Labels:{}};r&&(i.Labels["com.example.tag"]=r);let a=await this.fetchDockerAPI("/containers/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(!a.ok)throw new Error(`Failed to create container: ${a.statusText}`);let c=await a.json();return this.containerId=c.Id,c}async findOrCreateContainer({imageName:e,volumes:t=[],doNotPullImage:n,tag:r}){let i=(await this.listContainers(!0)).filter(c=>c.Labels&&c.Labels["com.example.tag"]===r);if(i&&i.length>0){let c=Math.floor(Math.random()*i.length),u=i[c];if(u)return await this.connectToContainer(u.Id),{Id:u.Id,isNew:!1}}return{Id:(await this.createContainer({imageName:e,volumes:t,doNotPullImage:n,tag:r})).Id,isNew:!0}}async startContainer(){if(!this.containerId)throw new Error("No container created or connected");let e=await this.fetchDockerAPI(`/containers/${this.containerId}/start`,{method:"POST"});if(!e.ok)throw new Error(`Failed to start container: ${e.statusText}`)}async connectToContainer(e){let t=await this.fetchDockerAPI(`/containers/${e}/json`);if(!t.ok)throw new Error(`Failed to connect to container: ${t.statusText}`);this.containerId=e}async stopContainers({tag:e,remove:t,timeout:n=10}){let r=[],s=await this.listContainers(!0),i=e?s.filter(a=>a.Labels["com.example.tag"]===e):s;for(let a of i){if(a.State.Status==="running"){let c=await this.fetchDockerAPI(`/containers/${a.Id}/stop?t=${n}`,{method:"POST"});if(!c.ok){console.warn(`Failed to stop container ${a.Id}: ${c.statusText}`);continue}r.push({Id:a.Id,Action:"stopped"})}if(t){let c=await this.fetchDockerAPI(`/containers/${a.Id}`,{method:"DELETE"});if(!c.ok){console.warn(`Failed to remove container ${a.Id}: ${c.statusText}`);continue}r.push({Id:a.Id,Action:"removed"})}}return r}async listContainers(e=!1){return(await this.fetchDockerAPI(`/containers/json?all=${e}`,{method:"GET"})).json()}async getContainerLogs(){if(!this.containerId)throw new Error("No container created or connected");return(await this.fetchDockerAPI(`/containers/${this.containerId}/logs?stdout=true&stderr=true`,{method:"GET"})).text()}async executeCommand(e){if(!this.containerId)throw new Error("No container created or connected");(await this.getContainerInfo(this.containerId)).State.Status!=="running"&&(await this.startContainer(),await this.waitForContainerToBeRunning(this.containerId));let n=await this.fetchDockerAPI(`/containers/${this.containerId}/exec`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({Cmd:["sh","-c",e],AttachStdout:!0,AttachStderr:!0})});if(!n.ok)throw new Error(`Failed to create exec instance: ${n.statusText}`);let r=await n.json(),s=await this.fetchDockerAPI(`/exec/${r.Id}/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({Detach:!1,Tty:!1})});if(!s.ok)throw new Error(`Failed to start exec instance: ${s.statusText}`);return await s.text()}async getContainerInfo(e){let t=await this.fetchDockerAPI(`/containers/${e}/json`);if(!t.ok)throw new Error(`Failed to get container info: ${t.statusText}`);return t.json()}async waitForContainerToBeRunning(e,t=3e4){let n=Date.now();for(;Date.now()-n<t;){if((await this.getContainerInfo(e)).State.Status==="running")return;await new Promise(s=>setTimeout(s,1e3))}throw new Error("Timeout waiting for container to start")}async fetchDockerAPI(e,t){let n=new URL(e,this.apiUrl).toString();return await fetch(n,t)}toFunction(){return{name:"commandExecution",description:"Use this function to execute shell commands, scripts, and programs. This function enables interaction with the file system, running system utilities, and performing tasks that require a shell interface.",parameters:{type:"object",properties:{command:{type:"string",description:'Shell command to execute. eg. `ls -l` or `echo "Hello, World!"`.'}},required:["command"]},func:async({command:e})=>await this.executeCommand(e)}}};var ii=class{aiService;info;func;constructor({ai:e,info:t,func:n}){this.aiService=e,this.info=t,this.func=n}async embedAdapter(e,t){let r=(await this.aiService.embed({texts:[e]},{sessionId:t?.sessionId,abortSignal:t?.abortSignal})).embeddings.at(0);if(!r)throw new Error("Failed to embed text");return this.func.length===2?this.func(r,t):this.func(r)}toFunction(){return{name:this.info.name,description:this.info.description,parameters:{type:"object",properties:{text:{type:"string",description:this.info.argumentDescription}},required:["text"]},func:({text:e},t)=>this.embedAdapter(e,t)}}};function Cn(o){return!!o&&/[A-Za-z0-9_$]/.test(o)}function Yp(o){return!!o&&/[A-Za-z_$]/.test(o)}function Yt(o){let e="",t=0,n="normal",r=!1;for(;t<o.length;){let s=o[t]??"",i=o[t+1]??"";if(n==="lineComment"){s===`
|
|
810
|
+
`)};return{name:r,description:e.getDescription()??"Execute this AxFlow",parameters:e.toJSONSchema(),func:s}}getUsage(){let e=[];for(let[t,n]of Array.from(this.nodeUsage))e.push(...n);return so(e)}resetUsage(){this.nodeUsage.clear();for(let[e,t]of Array.from(this.nodeGenerators))t&&"resetUsage"in t&&t.resetUsage()}resetTraces(){this.nodeTraces.clear()}getUsageReport(){let e={};for(let[t,n]of Array.from(this.nodeUsage))e[t]=so(n);return e}getNodePrograms(){return Array.from(this.nodeGenerators).map(([e,t])=>({name:e,program:t}))}setNodeInstruction(e,t){let n=this.nodeGenerators.get(e);if(!n)return!1;let r=n;if(typeof r.setInstruction=="function")try{return r.setInstruction(t),!0}catch{return!1}return!1}setAllNodeInstructions(e){for(let[t,n]of Object.entries(e))this.setNodeInstruction(t,n)}getTracesReport(){let e={};for(let[t,n]of Array.from(this.nodeTraces))e[t]=n;return e}async*streamingForward(e,t,n){let r=n?.cachingFunction??ke.cachingFunction,s=this.getCacheKey(t,r);if(r&&s){let a;try{a=await r(s)}catch{}if(a!==void 0){yield{version:0,index:0,delta:a};return}}let i=await this.forward(e,t,n);if(r&&s)try{await r(s,i)}catch{}yield{version:1,index:0,delta:i}}async forward(e,t,n){let r=n?.cachingFunction??ke.cachingFunction,s=this.getCacheKey(t,r);if(r&&s){let l;try{l=await r(s)}catch{}if(l!==void 0)return l}let i=Date.now();this.timingLogger?.startTiming("flow-execution");let a={},c,u;try{this.resetUsage(),this.resetTraces();let l=this.extractInputValues(t);if(this.nodeGenerators.size>0&&this.ensureProgram(),a={...l},this.flowLogger){let y=this.getExecutionPlan();this.flowLogger({name:"FlowStart",timestamp:i,inputFields:Object.keys(l),totalSteps:y.totalSteps,parallelGroups:y.parallelGroups,maxParallelism:y.maxParallelism,autoParallelEnabled:y.autoParallelEnabled})}let p=n?.tracer??this.defaultAIOptions?.tracer,d=n?.traceContext,g=d;if(p){let y=this.getExecutionPlan(),C=n?.traceLabel?`AxFlow > ${n.traceLabel}`:"AxFlow";c=p.startSpan(C,{kind:xt.INTERNAL,attributes:{total_steps:y.totalSteps,parallel_groups:y.parallelGroups,max_parallelism:y.maxParallelism,auto_parallel_enabled:y.autoParallelEnabled}});let R=d??tn.active();g=Lr.setSpan(R,c)}u=new AbortController,this.activeAbortControllers.add(u),this._stopRequested&&u.abort("Stopped by user (pre-forward)");let m=_t(n?.abortSignal,n?.abortController?.signal),f=_t(u.signal,_t(m,ke.abortSignal)),h={mainAi:e,mainOptions:(()=>{let y={...this.defaultAIOptions??{},...n};return n?.model&&(y.model=String(n.model)),p&&(y.tracer=p),g&&(y.traceContext=g),f&&(y.abortSignal=f),Object.keys(y).length>0?y:void 0})()},x=n?.autoParallel!==!1&&this.autoParallelConfig.enabled,A=0;if(x){this.executionPlanner.setInitialFields(Object.keys(l));let y=this.executionPlanner.createOptimizedExecution(this.autoParallelConfig.batchSize),C=await this.executeStepsWithLogging(y,a,h,!0);a=C.finalState,A=C.stepsExecuted}else{let y=await this.executeStepsWithLogging(this.flowDefinition,a,h,!1);a=y.finalState,A=y.stepsExecuted}if(this.flowLogger){let y=this.timingLogger?.endTiming("flow-execution")??Date.now()-i;this.flowLogger({name:"FlowComplete",timestamp:Date.now(),totalExecutionTime:y,finalState:a,outputFields:Object.keys(a),stepsExecuted:A})}if(r&&s)try{await r(s,a)}catch{}return a}catch(l){throw this.flowLogger&&this.flowLogger({name:"FlowError",timestamp:Date.now(),error:l instanceof Error?l.message:String(l),state:a}),l}finally{c&&c.end(),u&&this.activeAbortControllers.delete(u),this._stopRequested=!1}}node(e,t){if(this.nodes.has(e)||this.nodeGenerators.has(e))throw new Error(`Node '${e}' is already defined. Use a unique node name in this flow.`);if(typeof t=="string"||t instanceof Ve){let n=t;if(!n)throw new Error(`Invalid signature for node '${e}': signature cannot be empty`);this.nodes.set(e,{inputs:{},outputs:{}});let r=ft(n);this.nodeGenerators.set(e,r),this.ensureProgram(),this.program.register(r,e)}else if(typeof t=="function"){this.nodes.set(e,{inputs:{},outputs:{}});let n=new t;this.nodeGenerators.set(e,n),this.ensureProgram(),this.program.register(n,e)}else if(t&&typeof t=="object"&&"forward"in t){this.nodes.set(e,{inputs:{},outputs:{}});let n=t;this.nodeGenerators.set(e,n),this.ensureProgram(),this.program.register(n,e)}else throw new Error(`Invalid second argument for node '${e}': expected string, AxSignature, AxProgrammable instance, or constructor function`);return this}n(e,t){return this.node(e,t)}map(e,t){if(t?.parallel){let n=Array.isArray(e)?e:[e],r=async s=>(await Ar(n,async(c,u)=>{let l=c(s);return Promise.resolve(l)},this.autoParallelConfig.batchSize)).reduce((c,u)=>({...c,...u}),s);if(this.branchContext?.currentBranchValue!==void 0){let s=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];s.push(r),this.branchContext.branches.set(this.branchContext.currentBranchValue,s)}else this.flowDefinition.push(r),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(r,void 0,void 0,"parallel-map",n)}else{let n=async r=>{if(Array.isArray(e))throw new Error("Array of transforms requires parallel: true option");let s=e(r);return Promise.resolve(s)};if(this.branchContext?.currentBranchValue!==void 0){let r=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];r.push(n),this.branchContext.branches.set(this.branchContext.currentBranchValue,r)}else this.flowDefinition.push(n),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(n,void 0,void 0,"map",e)}return this.nodeGenerators.size>0&&this.ensureProgram(),this}m(e,t){return this.map(e,t)}returns(e){let t=async n=>{let r=e(n);return Promise.resolve(r)};if(this.branchContext?.currentBranchValue!==void 0){let n=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];n.push(t),this.branchContext.branches.set(this.branchContext.currentBranchValue,n)}else this.flowDefinition.push(t),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(t,void 0,void 0,"map",e);return this.nodeGenerators.size>0&&this.ensureProgram(),this}r(e){return this.returns(e)}label(e){if(this.branchContext?.currentBranchValue!==void 0)throw new Error("Cannot create labels inside branch blocks");return this.stepLabels.set(e,this.flowDefinition.length),this}l(e){return this.label(e)}execute(e,t,n){if(!this.nodes.has(e))throw new Error(`Node '${e}' not found. Make sure to define it with .node() first.`);let r=this.nodeGenerators.get(e);if(!r)throw new Error(`Node program for '${e}' not found.`);let s=async(i,a)=>{let c=n?.ai??a.mainAi,u={...a.mainOptions??{},...n?.options??{}},l=t(i),p=u?.traceLabel?`Node:${e} (${u.traceLabel})`:`Node:${e}`,d;if("forward"in r&&typeof r.forward=="function"){if(d=await r.forward(c,l,{...u,traceLabel:p}),"getUsage"in r&&typeof r.getUsage=="function"){let g=r.getUsage(),m=Array.isArray(g)?g:[...g.actor,...g.responder];if(m.length>0){let f=this.nodeUsage.get(e)||[];this.nodeUsage.set(e,[...f,...m])}}if("getTraces"in r&&typeof r.getTraces=="function"){let g=r.getTraces();if(g&&g.length>0){let m=this.nodeTraces.get(e)||[];this.nodeTraces.set(e,[...m,...g])}}}else throw new Error(`Node program for '${e}' does not have a forward method`);return{...i,[`${e}Result`]:d}};if(this.branchContext?.currentBranchValue!==void 0){let i=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];i.push(s),this.branchContext.branches.set(this.branchContext.currentBranchValue,i)}else this.flowDefinition.push(s),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(s,e,t);return this.ensureProgram(),this}applyOptimization(e){this.program&&"applyOptimization"in this.program&&this.program.applyOptimization(e)}e(e,t,n){return this.execute(e,t,n)}branch(e){if(this.branchContext)throw new Error("Nested branches are not supported");return this.branchContext={predicate:t=>e(t),branches:new Map,currentBranchValue:void 0},this}b(e){return this.branch(e)}when(e){if(!this.branchContext)throw new Error("when() called without matching branch()");return this.branchContext.currentBranchValue=e,this.branchContext.branches.set(e,[]),this}w(e){return this.when(e)}merge(){if(!this.branchContext)throw new Error("merge() called without matching branch()");let e=this.branchContext;this.branchContext=null;let t=async(n,r)=>{let s=e.predicate(n),i=e.branches.get(s);if(this.flowLogger&&this.flowLogger({name:"BranchEvaluation",timestamp:Date.now(),branchValue:s,hasMatchingBranch:!!i,branchStepsCount:i?.length??0}),!i)return n;let a=n;for(let c of i)a=await c(a,r);return a};return this.flowDefinition.push(t),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(t,void 0,void 0,"merge"),this.ensureProgram(),this}mg(){return this.merge()}parallel(e){let t=async(n,r)=>{let s=await Ar(e,async(i,a)=>{let c=new Tr(this.nodeGenerators);return await i(c).executeSteps(n,r)},this.autoParallelConfig.batchSize);return{...n,_parallelResults:s}};return this.flowDefinition.push(t),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(t,void 0,void 0,"parallel",void 0,void 0),this.ensureProgram(),{merge:(n,r)=>{let s=i=>{let a=i._parallelResults;if(!Array.isArray(a))throw new Error("No parallel results found for merge");let c=r(...a),u={...i};return delete u._parallelResults,u[n]=c,u};return this.flowDefinition.push(s),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(s,void 0,void 0,"merge",void 0,{resultKey:n,mergeFunction:r}),this.ensureProgram(),this}}}p(e){return this.parallel(e)}feedback(e,t,n=10){if(!this.stepLabels.has(t))throw new Error(`Label '${t}' not found. Make sure to define it with .label() before the feedback point.`);let r=this.stepLabels.get(t),s=this.flowDefinition.length;return this.flowDefinition.push(async(i,a)=>{let c=i,u=1,l=`_feedback_${t}_iterations`;for(typeof c[l]!="number"&&(c={...c,[l]:1});e(c)&&u<n;){u++,c={...c,[l]:u};for(let p=r;p<s;p++){let d=this.flowDefinition[p];d&&(c=await d(c,a))}}return c}),this.nodeGenerators.size>0&&this.ensureProgram(),this}fb(e,t,n=10){return this.feedback(e,t,n)}while(e,t=100){let n=this.flowDefinition.length;this.loopStack.push(n);let r=Object.assign(s=>s,{_condition:e,_maxIterations:t,_isLoopStart:!0});return this.flowDefinition.push(r),this.nodeGenerators.size>0&&this.ensureProgram(),this}wh(e,t=100){return this.while(e,t)}endWhile(){if(this.loopStack.length===0)throw new Error("endWhile() called without matching while()");let e=this.loopStack.pop(),t=this.flowDefinition[e];if(!t||!("_isLoopStart"in t))throw new Error("Loop start step not found or invalid");let n=t._condition,r=t._maxIterations,s=this.flowDefinition.splice(e+1);return this.flowDefinition[e]=async(i,a)=>{let c=i,u=0;for(;n(c)&&u<r;){u++;for(let l of s)c=await l(c,a)}if(u>=r&&n(c))throw new Error(`While loop exceeded maximum iterations (${r}). Consider increasing maxIterations or ensuring the loop condition eventually becomes false.`);return c},this.nodeGenerators.size>0&&this.ensureProgram(),this}end(){return this.endWhile()}derive(e,t,n,r){let s=async i=>{let a=i[t];if(a===void 0)throw new Error(`Input field '${t}' not found in state`);let c;if(Array.isArray(a))if(this.autoParallelConfig.enabled){let u=r?.batchSize||this.autoParallelConfig.batchSize;c=await Ar(a,async(l,p)=>n(l,p,i),u)}else c=a.map((u,l)=>n(u,l,i));else c=n(a,void 0,i);return{...i,[e]:c}};if(this.branchContext?.currentBranchValue!==void 0){let i=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];i.push(s),this.branchContext.branches.set(this.branchContext.currentBranchValue,i)}else this.flowDefinition.push(s),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(s,void 0,void 0,"derive",n,void 0,{inputFieldName:t,outputFieldName:e,batchSize:r?.batchSize});return this.ensureProgram(),this}getExecutionPlan(){let e=this.executionPlanner.getExecutionPlan();return{totalSteps:e.totalSteps,parallelGroups:e.parallelGroups,maxParallelism:e.maxParallelism,autoParallelEnabled:this.autoParallelConfig.enabled,steps:e.steps,groups:e.groups}}getSignature(){return this.ensureProgram(),this.program.getSignature()}nodeExtended(e,t,n){let s=typeof t=="string"?Ve.create(t):t;if(n.prependInputs)for(let i of n.prependInputs)s=s.prependInputField(i.name,i.type);if(n.appendInputs)for(let i of n.appendInputs)s=s.appendInputField(i.name,i.type);if(n.prependOutputs)for(let i of n.prependOutputs)s=s.prependOutputField(i.name,i.type);if(n.appendOutputs)for(let i of n.appendOutputs)s=s.appendOutputField(i.name,i.type);return this.node(e,s)}nx(e,t,n){return this.nodeExtended(e,t,n)}mapOutput(e){let t=async n=>{let r=e(n);return{...n,...r}};if(this.branchContext?.currentBranchValue!==void 0){let n=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];n.push(t),this.branchContext.branches.set(this.branchContext.currentBranchValue,n)}else this.flowDefinition.push(t),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(t,void 0,void 0,"map",e);return this.nodeGenerators.size>0&&this.ensureProgram(),this}mo(e){return this.mapOutput(e)}};function oi(o){return Ao.create(o)}var si=class{apiUrl;containerId=null;constructor(e="http://localhost:2375"){this.apiUrl=e}async pullImage(e){let t=await this.fetchDockerAPI(`/images/create?fromImage=${encodeURIComponent(e)}`,{method:"POST"});if(!t.ok)throw new Error(`Failed to pull image: ${t.statusText}`);await t.text()}async createContainer({imageName:e,volumes:t=[],doNotPullImage:n,tag:r}){let s=t.map(u=>`${u.hostPath}:${u.containerPath}`);n||await this.pullImage(e);let i={Image:e,Tty:!0,OpenStdin:!1,AttachStdin:!1,AttachStdout:!1,AttachStderr:!1,HostConfig:{Binds:s},Labels:{}};r&&(i.Labels["com.example.tag"]=r);let a=await this.fetchDockerAPI("/containers/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(!a.ok)throw new Error(`Failed to create container: ${a.statusText}`);let c=await a.json();return this.containerId=c.Id,c}async findOrCreateContainer({imageName:e,volumes:t=[],doNotPullImage:n,tag:r}){let i=(await this.listContainers(!0)).filter(c=>c.Labels&&c.Labels["com.example.tag"]===r);if(i&&i.length>0){let c=Math.floor(Math.random()*i.length),u=i[c];if(u)return await this.connectToContainer(u.Id),{Id:u.Id,isNew:!1}}return{Id:(await this.createContainer({imageName:e,volumes:t,doNotPullImage:n,tag:r})).Id,isNew:!0}}async startContainer(){if(!this.containerId)throw new Error("No container created or connected");let e=await this.fetchDockerAPI(`/containers/${this.containerId}/start`,{method:"POST"});if(!e.ok)throw new Error(`Failed to start container: ${e.statusText}`)}async connectToContainer(e){let t=await this.fetchDockerAPI(`/containers/${e}/json`);if(!t.ok)throw new Error(`Failed to connect to container: ${t.statusText}`);this.containerId=e}async stopContainers({tag:e,remove:t,timeout:n=10}){let r=[],s=await this.listContainers(!0),i=e?s.filter(a=>a.Labels["com.example.tag"]===e):s;for(let a of i){if(a.State.Status==="running"){let c=await this.fetchDockerAPI(`/containers/${a.Id}/stop?t=${n}`,{method:"POST"});if(!c.ok){console.warn(`Failed to stop container ${a.Id}: ${c.statusText}`);continue}r.push({Id:a.Id,Action:"stopped"})}if(t){let c=await this.fetchDockerAPI(`/containers/${a.Id}`,{method:"DELETE"});if(!c.ok){console.warn(`Failed to remove container ${a.Id}: ${c.statusText}`);continue}r.push({Id:a.Id,Action:"removed"})}}return r}async listContainers(e=!1){return(await this.fetchDockerAPI(`/containers/json?all=${e}`,{method:"GET"})).json()}async getContainerLogs(){if(!this.containerId)throw new Error("No container created or connected");return(await this.fetchDockerAPI(`/containers/${this.containerId}/logs?stdout=true&stderr=true`,{method:"GET"})).text()}async executeCommand(e){if(!this.containerId)throw new Error("No container created or connected");(await this.getContainerInfo(this.containerId)).State.Status!=="running"&&(await this.startContainer(),await this.waitForContainerToBeRunning(this.containerId));let n=await this.fetchDockerAPI(`/containers/${this.containerId}/exec`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({Cmd:["sh","-c",e],AttachStdout:!0,AttachStderr:!0})});if(!n.ok)throw new Error(`Failed to create exec instance: ${n.statusText}`);let r=await n.json(),s=await this.fetchDockerAPI(`/exec/${r.Id}/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({Detach:!1,Tty:!1})});if(!s.ok)throw new Error(`Failed to start exec instance: ${s.statusText}`);return await s.text()}async getContainerInfo(e){let t=await this.fetchDockerAPI(`/containers/${e}/json`);if(!t.ok)throw new Error(`Failed to get container info: ${t.statusText}`);return t.json()}async waitForContainerToBeRunning(e,t=3e4){let n=Date.now();for(;Date.now()-n<t;){if((await this.getContainerInfo(e)).State.Status==="running")return;await new Promise(s=>setTimeout(s,1e3))}throw new Error("Timeout waiting for container to start")}async fetchDockerAPI(e,t){let n=new URL(e,this.apiUrl).toString();return await fetch(n,t)}toFunction(){return{name:"commandExecution",description:"Use this function to execute shell commands, scripts, and programs. This function enables interaction with the file system, running system utilities, and performing tasks that require a shell interface.",parameters:{type:"object",properties:{command:{type:"string",description:'Shell command to execute. eg. `ls -l` or `echo "Hello, World!"`.'}},required:["command"]},func:async({command:e})=>await this.executeCommand(e)}}};var ii=class{aiService;info;func;constructor({ai:e,info:t,func:n}){this.aiService=e,this.info=t,this.func=n}async embedAdapter(e,t){let r=(await this.aiService.embed({texts:[e]},{sessionId:t?.sessionId,abortSignal:t?.abortSignal})).embeddings.at(0);if(!r)throw new Error("Failed to embed text");return this.func.length===2?this.func(r,t):this.func(r)}toFunction(){return{name:this.info.name,description:this.info.description,parameters:{type:"object",properties:{text:{type:"string",description:this.info.argumentDescription}},required:["text"]},func:({text:e},t)=>this.embedAdapter(e,t)}}};function Cn(o){return!!o&&/[A-Za-z0-9_$]/.test(o)}function Yp(o){return!!o&&/[A-Za-z_$]/.test(o)}function Yt(o){let e="",t=0,n="normal",r=!1;for(;t<o.length;){let s=o[t]??"",i=o[t+1]??"";if(n==="lineComment"){s===`
|
|
811
811
|
`?(e+=`
|
|
812
812
|
`,n="normal"):e+=" ",t++;continue}if(n==="blockComment"){s==="*"&&i==="/"?(e+=" ",t+=2,n="normal"):(e+=s===`
|
|
813
813
|
`?`
|
|
@@ -839,7 +839,7 @@ ${H}
|
|
|
839
839
|
);`},I=b=>{try{return new n(b),!0}catch{return!1}},M=b=>{let w=b.split(`
|
|
840
840
|
`),L=A(w);if(L<0)return b;let v=new Set;for(let H=L;H>=0;H-=1){let Y=w[H]??"";if(!Y.trim()||x(Y))continue;let Q=R(w,H,L);if(Q&&!v.has(Q)&&(v.add(Q),I(Q)))return Q}return b},F=b=>{let w=c.exec(b);return w&&(w[1]||"").trim()||b},P=b=>{let w=[],L=b.length,v=0,H=0,Y=0,Q=W=>W>="a"&&W<="z"||W>="A"&&W<="Z"||W>="0"&&W<="9"||W==="_"||W==="$",re=W=>{if(v++,W==="`"){let ie=0;for(;v<L;){let de=b[v];if(de==="\\"){v+=2;continue}if(ie>0){de==="{"?ie++:de==="}"&&ie--,v++;continue}if(de==="$"&&v+1<L&&b[v+1]==="{"){ie++,v+=2;continue}if(de==="`"){v++;return}v++}}else for(;v<L;){let ie=b[v];if(ie==="\\"){v+=2;continue}if(ie===W){v++;return}v++}},fe=()=>{for(v+=2;v<L&&b[v]!==`
|
|
841
841
|
`;)v++},be=()=>{for(v+=2;v<L;){if(b[v]==="*"&&v+1<L&&b[v+1]==="/"){v+=2;return}v++}},Ue=()=>{let W=v;for(;v<L&&Q(b[v]);)v++;return b.slice(W,v)},qe=()=>{let W=v;for(;v<L;){let ie=b[v];if(ie===" "||ie===" "||ie===`
|
|
842
|
-
`||ie==="\r"){v++;continue}if(ie==="/"&&v+1<L){if(b[v+1]==="/"){fe();continue}if(b[v+1]==="*"){be();continue}}break}return v>W},He=W=>{let ie=1;for(;v<L&&ie>0;){if(qe(),v>=L)return;let de=b[v];if(de===W){ie--,v++;continue}if(de==="{"||de==="["){let Fe=de==="{"?"}":"]";v++,ie++,v--,ie--,v++,He(Fe);continue}if(de==="."&&v+2<L&&b[v+1]==="."&&b[v+2]==="."){if(v+=3,qe(),v<L&&Q(b[v])){let Fe=Ue();Fe&&w.push(Fe)}continue}if(de===","){v++;continue}if(de==="="){v++;let Fe=0;for(;v<L;){let Me=b[v];if(Me==="'"||Me==='"'||Me==="`"){re(Me);continue}if(Me==="("||Me==="["||Me==="{"){Fe++,v++;continue}if(Me===")"||Me==="]"||Me==="}"){if(Fe>0){Fe--,v++;continue}break}if(Me===","&&Fe===0)break;v++}continue}if(Q(de)){let Fe=Ue();if(qe(),v<L&&b[v]===":"){if(v++,qe(),v<L){let Me=b[v];if(Me==="{"||Me==="["){let
|
|
842
|
+
`||ie==="\r"){v++;continue}if(ie==="/"&&v+1<L){if(b[v+1]==="/"){fe();continue}if(b[v+1]==="*"){be();continue}}break}return v>W},He=W=>{let ie=1;for(;v<L&&ie>0;){if(qe(),v>=L)return;let de=b[v];if(de===W){ie--,v++;continue}if(de==="{"||de==="["){let Fe=de==="{"?"}":"]";v++,ie++,v--,ie--,v++,He(Fe);continue}if(de==="."&&v+2<L&&b[v+1]==="."&&b[v+2]==="."){if(v+=3,qe(),v<L&&Q(b[v])){let Fe=Ue();Fe&&w.push(Fe)}continue}if(de===","){v++;continue}if(de==="="){v++;let Fe=0;for(;v<L;){let Me=b[v];if(Me==="'"||Me==='"'||Me==="`"){re(Me);continue}if(Me==="("||Me==="["||Me==="{"){Fe++,v++;continue}if(Me===")"||Me==="]"||Me==="}"){if(Fe>0){Fe--,v++;continue}break}if(Me===","&&Fe===0)break;v++}continue}if(Q(de)){let Fe=Ue();if(qe(),v<L&&b[v]===":"){if(v++,qe(),v<L){let Me=b[v];if(Me==="{"||Me==="["){let Tt=Me==="{"?"}":"]";v++,He(Tt)}else if(Q(Me)){let Tt=Ue();Tt&&w.push(Tt)}}}else Fe&&w.push(Fe);continue}v++}},Je=()=>{let W=0;for(;v<L;){let ie=b[v];if(ie==="'"||ie==='"'||ie==="`"){re(ie);continue}if(ie==="/"&&v+1<L){if(b[v+1]==="/"){fe();continue}if(b[v+1]==="*"){be();continue}}if(ie==="("||ie==="["||ie==="{"){W++,v++;continue}if(ie===")"||ie==="]"||ie==="}"){if(W>0){W--,v++;continue}return!1}if(ie===","&&W===0)return v++,!0;if(ie===";"&&W===0)return v++,!1;if(ie===`
|
|
843
843
|
`&&W===0){let de=v;return v++,qe(),v<L&&b[v]===","?(v++,!0):(v=de,!1)}v++}return!1},G=()=>{for(;v<L;){if(qe(),v>=L)return;let W=b[v];if(W==="{"){if(v++,He("}"),!Je())return;continue}if(W==="["){if(v++,He("]"),!Je())return;continue}if(Q(W)){let ie=Ue();if(ie&&w.push(ie),!Je())return;continue}return}},Z=W=>{if(W===0)return!0;let ie=W-1;for(;ie>=0;){let de=b[ie];if(de===" "||de===" "||de==="\r"){ie--;continue}return de===`
|
|
844
844
|
`||de===";"||de==="{"||de==="}"}return!0};for(;v<L;){let W=b[v];if(W==="'"||W==='"'||W==="`"){re(W);continue}if(W==="/"&&v+1<L){if(b[v+1]==="/"){fe();continue}if(b[v+1]==="*"){be();continue}}if(W==="{"){H++,v++;continue}if(W==="}"){H--,v++;continue}if(W==="("){Y++,v++;continue}if(W===")"){Y--,v++;continue}if(H===0&&Y===0&&Q(W)){let ie=v,de=Ue();if((de==="var"||de==="let"||de==="const")&&v<L&&(b[v]===" "||b[v]===" "||b[v]===`
|
|
845
845
|
`)&&Z(ie)){G();continue}continue}v++}let ae=new Set,Re=[];for(let W of w)ae.has(W)||(ae.add(W),Re.push(W));return Re},N=b=>b.length===0?"":`
|
|
@@ -858,7 +858,7 @@ return (`);fe!==-1?Y=H.slice(0,fe)+v+H.slice(fe):Y=H+v}let Q=I(Y)?Y:I(H)?H:w;ret
|
|
|
858
858
|
`)}createSession(e,t){let n=ed(),r=ci()?Ch(n,this.nodeWorkerPoolSize):null;r&&this.debugNodeWorkerPool&&console.debug(`[AxJSRuntime] Node worker pool size: ${this.nodeWorkerPoolSize}`),r?.warm();let s=null,i=null,a=null,c=!1,u=this.timeout,l=0,p=t?.shouldBubbleError,d=null,{serializableGlobals:g,fnMap:m}=sd(e,{nextFnId:()=>++l});id(g);let f=new Map,h=0,x=[],A=null,y=T=>{let E=T.data;if(!E||typeof E!="object"||!("type"in E)||E.type===void 0)return;let O=E;if(O.type==="result"){if(typeof O.id!="number")return;let S=f.get(O.id);if(S)if(f.delete(O.id),O.error!==void 0)if(d){let k=d;d=null,S.reject(k)}else S.reject(cd(O.error));else S.resolve(O.value);return}if(O.type==="fn-call"){if(typeof O.id!="number"||typeof O.name!="string")return;let S=m.get(O.name);if(!S){s?.postMessage({type:"fn-result",id:O.id,error:`Function "${O.name}" not found`});return}Promise.resolve().then(()=>S(...O.args??[])).then(k=>{try{s?.postMessage({type:"fn-result",id:O.id,value:k})}catch{s?.postMessage({type:"fn-result",id:O.id,value:String(k)})}}).catch(k=>{p?.(k)&&(d=k),s?.postMessage({type:"fn-result",id:O.id,error:ad(k)})})}},C=()=>{s&&(i==="node"&&r?r.release(s):s.terminate(),s=null,i=null),a=null},R=()=>{c=!0,C();for(let T of x)!T.started&&!T.settled&&(T.settled=!0,T.signal&&T.onAbort&&T.signal.removeEventListener("abort",T.onAbort),T.reject(new Error("Worker terminated")));x.length=0;for(let T of f.values())T.reject(new Error("Worker terminated"));f.clear()},I=T=>{C();for(let E of f.values())E.reject(T);f.clear()},M=T=>{T.postMessage({type:"init",globals:g,fnNames:[...m.keys()],permissions:[...this.permissions],allowUnsafeNodeHostAccess:this.allowUnsafeNodeHostAccess,outputMode:this.outputMode,captureConsole:this.captureConsole})};if(td()){s=rd(n,this.permissions),i="browser",s.onmessage=y,s.onerror=I;try{M(s)}catch(T){throw R(),T}}let F=async()=>{if(!s){if(c)throw new Error("Session is closed");if(td()){s=rd(n,this.permissions),i="browser",s.onmessage=y,s.onerror=I;try{M(s)}catch(T){throw R(),T}return}if(!ci())throw new Error("No worker runtime available: Web Worker is unavailable in this environment");a||(a=(r?r.acquire():yc(n)).then(T=>{if(c)throw r?r.release(T):T.terminate(),new Error("Session is closed");s=T,i="node",s.onmessage=y,s.onerror=I;try{M(s)}catch(E){throw r?r.release(T):T.terminate(),s=null,i=null,E}})),await a}},P=(T,E)=>{if(c)return Promise.reject(new Error("Session is closed"));let O=E.signal;if(O?.aborted)return Promise.reject(new Error(`Aborted: ${O.reason??"execution aborted"}`));let S=++h;return new Promise((k,_)=>{let $=k,B=_,U,ee=()=>{};if(f.set(S,{resolve:D=>{U&&clearTimeout(U),ee(),$(D)},reject:D=>{U&&clearTimeout(U),ee(),B(D)}}),O){let D=()=>{clearTimeout(U),f.delete(S),R(),B(new Error(`Aborted: ${O.reason??"execution aborted"}`))};O.addEventListener("abort",D,{once:!0}),ee=()=>{O.removeEventListener("abort",D)}}F().then(()=>{if(!s)throw new Error("Worker unavailable");U=setTimeout(()=>{f.delete(S),C();for(let D of f.values())D.reject(new Error("Worker terminated"));f.clear(),_(new Error(E.timeoutMessage))},u),s.postMessage({...T,id:S})}).catch(D=>{f.get(S)&&(f.delete(S),clearTimeout(U),ee(),B(D))})})},N=(T,E)=>c?Promise.reject(new Error("Session is closed")):T?.aborted?Promise.reject(new Error(`Aborted: ${T.reason??"execution aborted"}`)):new Promise((O,S)=>{let k={started:!1,settled:!1,signal:T,resolve:O,reject:S,operation:E};if(T){let $=()=>{if(k.settled)return;k.settled=!0;let B=x.indexOf(k);B!==-1&&x.splice(B,1),T.removeEventListener("abort",$),S(new Error(`Aborted: ${T.reason??"execution aborted"}`))};k.onAbort=$,T.addEventListener("abort",$,{once:!0})}x.push(k);let _=()=>{if(A)return;let $=x.find(U=>!U.started&&!U.settled);if(!$)return;let B=()=>{A=null,_()};A=(async()=>{if(!$.settled){if(c){$.settled=!0,$.signal&&$.onAbort&&$.signal.removeEventListener("abort",$.onAbort),$.reject(new Error("Worker terminated"));return}if($.signal?.aborted){$.settled=!0,$.onAbort&&$.signal.removeEventListener("abort",$.onAbort),$.reject(new Error(`Aborted: ${$.signal.reason??"execution aborted"}`));return}$.started=!0;try{let U=await $.operation();if($.settled)return;$.settled=!0,$.signal&&$.onAbort&&$.signal.removeEventListener("abort",$.onAbort),$.resolve(U)}catch(U){if($.settled)return;$.settled=!0,$.signal&&$.onAbort&&$.signal.removeEventListener("abort",$.onAbort),$.reject(U)}finally{let U=x.indexOf($);U!==-1&&x.splice(U,1),B()}}})().catch(()=>{B()})};_()});return{execute(T,E){if(c)return Promise.reject(new Error("Session is closed"));if(/['"]use strict['"]/.test(T))return Promise.resolve('[ERROR] "use strict" is not allowed in the runtime session. Remove it and try again.');let O=E?.reservedNames;if(O){let S=Th(T,O);if(S)return Promise.resolve(`[ERROR] Cannot assign to, redeclare, or shadow reserved runtime variable '${S}'. Use a different local variable name (for example: \`ctx\`) or access the original via \`inputs.${S}\`.`)}return N(E?.signal,()=>P({type:"execute",code:T},{signal:E?.signal,timeoutMessage:"Execution timed out"}))},inspectGlobals(T){return c?Promise.reject(new Error("Session is closed")):N(T?.signal,()=>P({type:"inspect-globals",reservedNames:T?.reservedNames},{signal:T?.signal,timeoutMessage:"Global inspection timed out"}).then(E=>typeof E=="string"?E:E===void 0?"":JSON.stringify(E)))},snapshotGlobals(T){return c?Promise.reject(new Error("Session is closed")):N(T?.signal,()=>P({type:"snapshot-globals",reservedNames:T?.reservedNames},{signal:T?.signal,timeoutMessage:"Global snapshot timed out"}).then(Rh))},async patchGlobals(T,E){if(!T||typeof T!="object"||Array.isArray(T))throw new Error("patchGlobals expects an object");let{serializableGlobals:O,fnMap:S}=sd(T,{nextFnId:()=>++l});if(id(O),Object.keys(O).length!==0){await N(E?.signal,()=>P({type:"update-globals",globals:O},{signal:E?.signal,timeoutMessage:"Global patch timed out"}));for(let[k,_]of Object.entries(O))g[k]=_;for(let[k,_]of S.entries())m.set(k,_)}},close(){R()}}}toFunction(){return{name:"javascriptInterpreter",description:"Execute JavaScript code in a persistent session and return output.",parameters:{type:"object",properties:{code:{type:"string",description:"JavaScript code to execute."}},required:["code"]},func:async({code:e},t)=>{let n=this.createSession();try{return await n.execute(e,{signal:t?.abortSignal})}finally{n.close()}}}}};function ud(o){return new Tn(o)}var ui=class{constructor(e,t={}){this.transport=e;this.options=t;this.logger=t.logger??(n=>{console.log(typeof n=="string"?n:JSON.stringify(n,null,2))})}functions=[];promptFunctions=[];resourceFunctions=[];activeRequests=new Map;capabilities={};logger;async init(){"connect"in this.transport&&await this.transport.connect?.();let{result:e}=await this.sendRequest("initialize",{protocolVersion:"2024-11-05",capabilities:{roots:{listChanged:!0},sampling:{}},clientInfo:{name:"AxMCPClient",version:"1.0.0"}}),t="2024-11-05";if(e.protocolVersion!==t)throw new Error(`Protocol version mismatch. Expected ${t} but got ${e.protocolVersion}`);e.capabilities.tools&&(this.capabilities.tools=!0),e.capabilities.resources&&(this.capabilities.resources=!0),e.capabilities.prompts&&(this.capabilities.prompts=!0),await this.sendNotification("notifications/initialized"),this.capabilities.tools&&await this.discoverFunctions(),this.capabilities.prompts&&await this.discoverPromptFunctions(),this.capabilities.resources&&await this.discoverResourceFunctions()}async discoverFunctions(){let{result:e}=await this.sendRequest("tools/list");this.functions=e.tools.map(t=>{let n=this.options.functionOverrides?.find(s=>s.name===t.name),r=t.inputSchema.properties?{properties:t.inputSchema.properties,required:t.inputSchema.required??[],type:t.inputSchema.type}:void 0;return{name:n?.updates.name??t.name,description:n?.updates.description??t.description,parameters:r,func:async s=>{let{result:i}=await this.sendRequest("tools/call",{name:t.name,arguments:s});return i}}})}async discoverPromptFunctions(){let e;do{let t=await this.listPrompts(e);for(let n of t.prompts??[])this.promptFunctions.push(this.promptToFunction(n));e=t.nextCursor}while(e)}async discoverResourceFunctions(){let e;do{let t=await this.listResources(e);for(let n of t.resources??[])this.resourceFunctions.push(this.resourceToFunction(n));e=t.nextCursor}while(e);e=void 0;do{let t=await this.listResourceTemplates(e);for(let n of t.resourceTemplates??[])this.resourceFunctions.push(this.resourceTemplateToFunction(n));e=t.nextCursor}while(e)}promptToFunction(e){let t=`prompt_${e.name}`,n=this.options.functionOverrides?.find(s=>s.name===t),r=e.arguments?.length?{type:"object",properties:Object.fromEntries(e.arguments.map(s=>[s.name,{type:"string",description:s.description??""}])),required:e.arguments.filter(s=>s.required).map(s=>s.name)}:void 0;return{name:n?.updates.name??t,description:n?.updates.description??e.description??`Get the ${e.name} prompt`,parameters:r,func:async s=>{let i=await this.getPrompt(e.name,s);return this.formatPromptMessages(i.messages)}}}resourceToFunction(e){let t=`resource_${this.sanitizeName(e.name)}`,n=this.options.functionOverrides?.find(r=>r.name===t);return{name:n?.updates.name??t,description:n?.updates.description??e.description??`Read ${e.name}`,parameters:void 0,func:async()=>{let r=await this.readResource(e.uri);return this.formatResourceContents(r.contents)}}}resourceTemplateToFunction(e){let t=`resource_${this.sanitizeName(e.name)}`,n=this.options.functionOverrides?.find(s=>s.name===t),r=this.parseUriTemplate(e.uriTemplate);return{name:n?.updates.name??t,description:n?.updates.description??e.description??`Read ${e.name}`,parameters:r.length?{type:"object",properties:Object.fromEntries(r.map(s=>[s,{type:"string",description:`Value for ${s}`}])),required:r}:void 0,func:async s=>{let i=this.expandUriTemplate(e.uriTemplate,s??{}),a=await this.readResource(i);return this.formatResourceContents(a.contents)}}}formatPromptMessages(e){return e.map(t=>{let n=t.role==="user"?"User":"Assistant",r=this.extractContent(t.content);return`${n}: ${r}`}).join(`
|
|
859
859
|
|
|
860
860
|
`)}extractContent(e){if(e.type==="text")return e.text;if(e.type==="image")return`[Image: ${e.mimeType}]`;if(e.type==="resource"){let t=e.resource;return"text"in t?t.text:`[Binary: ${t.uri}]`}return""}formatResourceContents(e){return e.map(t=>"text"in t?t.text:`[Binary: ${t.uri}]`).join(`
|
|
861
|
-
`)}sanitizeName(e){return e.replace(/[^a-zA-Z0-9_]/g,"_")}parseUriTemplate(e){return(e.match(/\{([^}]+)\}/g)??[]).map(n=>n.slice(1,-1))}expandUriTemplate(e,t){return e.replace(/\{([^}]+)\}/g,(n,r)=>t[r]??"")}async ping(e=3e3){let t=this.sendRequest("ping"),n=new Promise((i,a)=>setTimeout(()=>a(new Error("Ping response timeout exceeded")),e)),r=await Promise.race([t,n]),{result:s}=r;if(typeof s!="object"||s===null||Object.keys(s).length!==0)throw new Error(`Unexpected ping response: ${JSON.stringify(s)}`)}toFunction(){return[...this.functions,...this.promptFunctions,...this.resourceFunctions]}getCapabilities(){return{tools:this.capabilities.tools??!1,resources:this.capabilities.resources??!1,prompts:this.capabilities.prompts??!1}}hasToolsCapability(){return this.capabilities.tools??!1}hasPromptsCapability(){return this.capabilities.prompts??!1}hasResourcesCapability(){return this.capabilities.resources??!1}async listPrompts(e){if(!this.capabilities.prompts)throw new Error("Prompts are not supported");let t=e?{cursor:e}:void 0,{result:n}=await this.sendRequest("prompts/list",t);return n}async getPrompt(e,t){if(!this.capabilities.prompts)throw new Error("Prompts are not supported");let{result:n}=await this.sendRequest("prompts/get",{name:e,arguments:t});return n}async listResources(e){if(!this.capabilities.resources)throw new Error("Resources are not supported");let t=e?{cursor:e}:void 0,{result:n}=await this.sendRequest("resources/list",t);return n}async listResourceTemplates(e){if(!this.capabilities.resources)throw new Error("Resources are not supported");let t=e?{cursor:e}:void 0,{result:n}=await this.sendRequest("resources/templates/list",t);return n}async readResource(e){if(!this.capabilities.resources)throw new Error("Resources are not supported");let{result:t}=await this.sendRequest("resources/read",{uri:e});return t}async subscribeResource(e){if(!this.capabilities.resources)throw new Error("Resources are not supported");await this.sendRequest("resources/subscribe",{uri:e})}async unsubscribeResource(e){if(!this.capabilities.resources)throw new Error("Resources are not supported");await this.sendRequest("resources/unsubscribe",{uri:e})}cancelRequest(e){if(this.activeRequests.has(e)){this.sendNotification("notifications/cancelled",{requestId:e,reason:"Client cancelled request"});let t=this.activeRequests.get(e);t&&t.reject(new Error(`Request ${e} cancelled`)),this.activeRequests.delete(e)}}async sendRequest(e,t={}){let n=it(),r={jsonrpc:"2.0",id:n,method:e,params:t},s=new Promise((a,c)=>{this.activeRequests.set(n,{reject:c}),this.transport.send(r).then(u=>{if(this.activeRequests.delete(n),u!==null&&typeof u=="object"&&"error"in u){let l=u;c(new Error(`RPC Error ${l.error.code}: ${l.error.message}`))}else u!==null&&typeof u=="object"&&"result"in u?a({result:u.result}):c(new Error("Invalid response no result or error"))}).catch(u=>{this.activeRequests.delete(n),c(u)})}),{result:i}=await s;return{id:n,result:i}}async sendNotification(e,t={}){let n={jsonrpc:"2.0",method:e,params:t},{debug:r}=this.options;if(r){let s={name:"Notification",id:"mcp_notification",value:`Sending notification: ${JSON.stringify(n,null,2)}`};this.logger(s)}await this.transport.sendNotification(n)}};function ld(o){if(typeof Buffer<"u")return Buffer.from(o).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"");let e="";for(let n=0;n<o.length;n++)e+=String.fromCharCode(o[n]);return(typeof btoa=="function"?btoa(e):"").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}async function pd(o){let t=new TextEncoder().encode(o),n=await eu().subtle.digest("SHA-256",t);return new Uint8Array(n)}async function Tc(){return ld(await pd(it()+Math.random().toString(36)))}async function dd(o){return ld(await pd(o))}async function li(o,e){let t=await fetch(o,{headers:e});if(!t.ok)throw new Error(`HTTP ${t.status} fetching ${o}: ${t.statusText}`);return await t.json()}function md(o){let e=new URLSearchParams;for(let[t,n]of Object.entries(o))n!==void 0&&e.set(t,n);return e.toString()}function bo(o){return o.endsWith("/")?o.slice(0,-1):o}function wh(o){if(!o)return null;let e=o.match(/resource_metadata\s*=\s*"([^"]+)"/i)||o.match(/resource_metadata\s*=\s*([^,\s]+)/i);return e?e[1]:null}async function gd(o,e){let t=wh(e);if(t){let a=await li(t),c=bo(new URL(o).toString().split("?")[0]),u=bo(a.resource??"");if(!u||u!==c)throw new Error(`Protected resource metadata 'resource' mismatch. Expected ${c} but got ${u}`);let l=Array.isArray(a.authorization_servers)?a.authorization_servers:[];if(l.length===0)throw new Error("No authorization_servers advertised by protected resource");return{resource:c,issuers:l}}let n=new URL(o),r=n.pathname.replace(/\/+$/,""),s=[];r&&r!=="/"&&s.push({url:`${n.origin}/.well-known/oauth-protected-resource${r}`,expected:`${n.origin}${r}`}),s.push({url:`${n.origin}/.well-known/oauth-protected-resource`,expected:`${n.origin}`});let i;for(let a of s)try{let c=await li(a.url),u=bo(c.resource??""),l=bo(a.expected);if(!u||u!==l)throw new Error(`Protected resource metadata 'resource' mismatch. Expected ${l} but got ${u}`);let p=Array.isArray(c.authorization_servers)?c.authorization_servers:[];if(p.length===0)throw new Error("No authorization_servers advertised by protected resource");return{resource:l,issuers:p}}catch(c){i=c}throw new Error(`Failed to resolve protected resource metadata via well-known endpoints. Last error: ${String(i)}`)}async function fd(o){let e=new URL(o),t=e.pathname.replace(/^\/+/,""),n=[];t?(n.push(`${e.origin}/.well-known/oauth-authorization-server/${t}`),n.push(`${e.origin}/.well-known/openid-configuration/${t}`),n.push(`${e.origin}/${t.replace(/\/+$/,"")}/.well-known/openid-configuration`)):(n.push(`${e.origin}/.well-known/oauth-authorization-server`),n.push(`${e.origin}/.well-known/openid-configuration`));let r;for(let s of n)try{let i=await li(s);if(!i.authorization_endpoint||!i.token_endpoint)throw new Error("AS metadata missing endpoints");let a=i.code_challenge_methods_supported;if(!a||!a.includes("S256"))throw new Error("Authorization server does not advertise PKCE S256 support");return i}catch(i){r=i}throw new Error(`Failed to discover AS metadata for ${o}: ${String(r)}`)}var Ir=class{constructor(e){this.oauth=e}tokenCache=new Map;asMetaCache=new Map;key(e,t){return`${e}::${t}`}async getStoredToken(e,t){let n=this.key(e,t);if(this.tokenCache.has(n))return this.tokenCache.get(n);let r=await this.oauth?.tokenStore?.getToken?.(n);return r&&this.tokenCache.set(n,r),r??null}async setStoredToken(e,t,n){let r=this.key(e,t);this.tokenCache.set(r,n),await this.oauth?.tokenStore?.setToken?.(r,n)}async clearStoredToken(e,t){let n=this.key(e,t);this.tokenCache.delete(n),await this.oauth?.tokenStore?.clearToken?.(n)}isExpired(e){return e?Date.now()>e-6e4:!1}async getASMeta(e){if(this.asMetaCache.has(e))return this.asMetaCache.get(e);let t=await fd(e);return this.asMetaCache.set(e,t),t}async ensureAccessToken(e){if(!this.oauth)return null;let{resource:t,issuers:n}=await gd(e.requestedUrl,e.wwwAuthenticate),r=this.oauth.selectAuthorizationServer?await this.oauth.selectAuthorizationServer(n,{}):n[0],s=await this.getASMeta(r),i=e.currentToken??await this.getStoredToken(t,r);if(i?.accessToken&&!this.isExpired(i.expiresAt))return{token:i,issuer:r,asMeta:s,resource:t};if(i?.refreshToken)try{let A=await this.refreshToken(i.refreshToken,t,r,s);return await this.setStoredToken(t,r,A),{token:A,issuer:r,asMeta:s,resource:t}}catch{await this.clearStoredToken(t,r)}let a=this.oauth.redirectUri??"http://localhost:8787/callback",c=this.oauth.clientId?{client_id:this.oauth.clientId,client_secret:this.oauth.clientSecret}:await this.dynamicClientRegistration(s,a),u=await Tc(),l=await dd(u),p=await Tc(),d=this.oauth.scopes?.join(" "),g=`${s.authorization_endpoint}?${md({response_type:"code",client_id:c.client_id,redirect_uri:a,scope:d,state:p,code_challenge:l,code_challenge_method:"S256",resource:t})}`;if(!this.oauth.onAuthCode)throw new Error(`Authorization required. Provide oauth.onAuthCode to complete the flow. Navigate to: ${g}`);let{code:m,redirectUri:f}=await this.oauth.onAuthCode(g),h=f??a,x=await this.exchangeCodeForToken({asMeta:s,code:m,codeVerifier:u,client:c,redirectUri:h,resource:t});return await this.setStoredToken(t,r,x),{token:x,issuer:r,asMeta:s,resource:t}}async dynamicClientRegistration(e,t){if(!e.registration_endpoint)throw new Error("Authorization server does not support dynamic client registration and no clientId was provided.");let r={application_type:t.startsWith("http://localhost")?"native":"web",client_name:"Ax MCP Client",redirect_uris:[t],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"none"},s=await fetch(e.registration_endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!s.ok)throw new Error(`Dynamic client registration failed: ${s.status} ${s.statusText}`);let i=await s.json();if(!i.client_id)throw new Error("Dynamic client registration did not return client_id");return i}async exchangeCodeForToken(e){let t=new URLSearchParams;t.set("grant_type","authorization_code"),t.set("code",e.code),t.set("redirect_uri",e.redirectUri),t.set("client_id",e.client.client_id),t.set("code_verifier",e.codeVerifier),t.set("resource",e.resource),e.client.client_secret&&t.set("client_secret",e.client.client_secret);let n=await fetch(e.asMeta.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t.toString()});if(!n.ok)throw new Error(`Token exchange failed: ${n.status} ${n.statusText}`);let r=await n.json();if(!r.access_token)throw new Error("No access_token in token response");let s=r.expires_in?Date.now()+r.expires_in*1e3:void 0;return{accessToken:r.access_token,refreshToken:r.refresh_token,expiresAt:s}}async refreshToken(e,t,n,r){let s=new URLSearchParams;s.set("grant_type","refresh_token"),s.set("refresh_token",e),s.set("resource",t),this.oauth?.clientId&&s.set("client_id",this.oauth.clientId),this.oauth?.clientSecret&&s.set("client_secret",this.oauth.clientSecret);let i=await fetch(r.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()});if(!i.ok)throw new Error(`Token refresh failed: ${i.status} ${i.statusText}`);let a=await i.json();if(!a.access_token)throw new Error("No access_token in refresh response");let c=a.expires_in?Date.now()+a.expires_in*1e3:void 0;return{accessToken:a.access_token,refreshToken:a.refresh_token??e,expiresAt:c}}};var pi=class{mcpEndpoint;sessionId;eventSource;pendingRequests=new Map;messageHandler;customHeaders;oauthHelper;currentToken;currentIssuer;constructor(e,t){this.mcpEndpoint=e,this.customHeaders={...t?.headers??{}},t?.authorization&&(this.customHeaders.Authorization=t.authorization),this.oauthHelper=new Ir(t?.oauth)}setHeaders(e){this.customHeaders={...e}}setAuthorization(e){this.customHeaders.Authorization=e}getHeaders(){return{...this.customHeaders}}buildHeaders(e){let t={...this.customHeaders,...e};return this.sessionId&&(t["Mcp-Session-Id"]=this.sessionId),t}setMessageHandler(e){this.messageHandler=e}async connect(){return Promise.resolve()}async openListeningStream(){return new Promise((e,t)=>{let n=this.buildHeaders({Accept:"text/event-stream"}),r=new URL(this.mcpEndpoint);if(Object.keys(this.customHeaders).length>0){this.openListeningStreamWithFetch(n).then(e).catch(t);return}this.eventSource=new EventSource(r.toString()),this.eventSource.onopen=()=>e(),this.eventSource.onmessage=s=>{try{let i=JSON.parse(s.data);this.messageHandler&&this.messageHandler(i)}catch(i){console.error("Failed to parse SSE message:",i)}},this.eventSource.onerror=()=>t(new Error("Failed to establish SSE connection"))})}async openListeningStreamWithFetch(e){let t=await fetch(this.mcpEndpoint,{method:"GET",headers:e});if(t.status===401){let a=t.headers.get("WWW-Authenticate"),c=await this.oauthHelper.ensureAccessToken({requestedUrl:this.mcpEndpoint,wwwAuthenticate:a,currentToken:null});if(!c)throw new Error("HTTP 401: Unauthorized");return this.customHeaders.Authorization=`Bearer ${c.token.accessToken}`,this.openListeningStreamWithFetch(this.buildHeaders({Accept:"text/event-stream"}))}if(!t.ok)throw new Error(`Failed to open SSE stream: ${t.status} ${t.statusText}`);if(!t.body)throw new Error("No response body available for SSE stream");let n=t.body.getReader(),r=new TextDecoder,s="",i=async()=>{try{let{done:a,value:c}=await n.read();if(a){n.releaseLock();return}s+=r.decode(c,{stream:!0});let u=s.split(`
|
|
861
|
+
`)}sanitizeName(e){return e.replace(/[^a-zA-Z0-9_]/g,"_")}parseUriTemplate(e){return(e.match(/\{([^}]+)\}/g)??[]).map(n=>n.slice(1,-1))}expandUriTemplate(e,t){return e.replace(/\{([^}]+)\}/g,(n,r)=>t[r]??"")}async ping(e=3e3){let t=this.sendRequest("ping"),n=new Promise((i,a)=>setTimeout(()=>a(new Error("Ping response timeout exceeded")),e)),r=await Promise.race([t,n]),{result:s}=r;if(typeof s!="object"||s===null||Object.keys(s).length!==0)throw new Error(`Unexpected ping response: ${JSON.stringify(s)}`)}toFunction(){return[...this.functions,...this.promptFunctions,...this.resourceFunctions]}getCapabilities(){return{tools:this.capabilities.tools??!1,resources:this.capabilities.resources??!1,prompts:this.capabilities.prompts??!1}}hasToolsCapability(){return this.capabilities.tools??!1}hasPromptsCapability(){return this.capabilities.prompts??!1}hasResourcesCapability(){return this.capabilities.resources??!1}async listPrompts(e){if(!this.capabilities.prompts)throw new Error("Prompts are not supported");let t=e?{cursor:e}:void 0,{result:n}=await this.sendRequest("prompts/list",t);return n}async getPrompt(e,t){if(!this.capabilities.prompts)throw new Error("Prompts are not supported");let{result:n}=await this.sendRequest("prompts/get",{name:e,arguments:t});return n}async listResources(e){if(!this.capabilities.resources)throw new Error("Resources are not supported");let t=e?{cursor:e}:void 0,{result:n}=await this.sendRequest("resources/list",t);return n}async listResourceTemplates(e){if(!this.capabilities.resources)throw new Error("Resources are not supported");let t=e?{cursor:e}:void 0,{result:n}=await this.sendRequest("resources/templates/list",t);return n}async readResource(e){if(!this.capabilities.resources)throw new Error("Resources are not supported");let{result:t}=await this.sendRequest("resources/read",{uri:e});return t}async subscribeResource(e){if(!this.capabilities.resources)throw new Error("Resources are not supported");await this.sendRequest("resources/subscribe",{uri:e})}async unsubscribeResource(e){if(!this.capabilities.resources)throw new Error("Resources are not supported");await this.sendRequest("resources/unsubscribe",{uri:e})}cancelRequest(e){if(this.activeRequests.has(e)){this.sendNotification("notifications/cancelled",{requestId:e,reason:"Client cancelled request"});let t=this.activeRequests.get(e);t&&t.reject(new Error(`Request ${e} cancelled`)),this.activeRequests.delete(e)}}async sendRequest(e,t={}){let n=at(),r={jsonrpc:"2.0",id:n,method:e,params:t},s=new Promise((a,c)=>{this.activeRequests.set(n,{reject:c}),this.transport.send(r).then(u=>{if(this.activeRequests.delete(n),u!==null&&typeof u=="object"&&"error"in u){let l=u;c(new Error(`RPC Error ${l.error.code}: ${l.error.message}`))}else u!==null&&typeof u=="object"&&"result"in u?a({result:u.result}):c(new Error("Invalid response no result or error"))}).catch(u=>{this.activeRequests.delete(n),c(u)})}),{result:i}=await s;return{id:n,result:i}}async sendNotification(e,t={}){let n={jsonrpc:"2.0",method:e,params:t},{debug:r}=this.options;if(r){let s={name:"Notification",id:"mcp_notification",value:`Sending notification: ${JSON.stringify(n,null,2)}`};this.logger(s)}await this.transport.sendNotification(n)}};function ld(o){if(typeof Buffer<"u")return Buffer.from(o).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"");let e="";for(let n=0;n<o.length;n++)e+=String.fromCharCode(o[n]);return(typeof btoa=="function"?btoa(e):"").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}async function pd(o){let t=new TextEncoder().encode(o),n=await eu().subtle.digest("SHA-256",t);return new Uint8Array(n)}async function Tc(){return ld(await pd(at()+Math.random().toString(36)))}async function dd(o){return ld(await pd(o))}async function li(o,e){let t=await fetch(o,{headers:e});if(!t.ok)throw new Error(`HTTP ${t.status} fetching ${o}: ${t.statusText}`);return await t.json()}function md(o){let e=new URLSearchParams;for(let[t,n]of Object.entries(o))n!==void 0&&e.set(t,n);return e.toString()}function bo(o){return o.endsWith("/")?o.slice(0,-1):o}function wh(o){if(!o)return null;let e=o.match(/resource_metadata\s*=\s*"([^"]+)"/i)||o.match(/resource_metadata\s*=\s*([^,\s]+)/i);return e?e[1]:null}async function gd(o,e){let t=wh(e);if(t){let a=await li(t),c=bo(new URL(o).toString().split("?")[0]),u=bo(a.resource??"");if(!u||u!==c)throw new Error(`Protected resource metadata 'resource' mismatch. Expected ${c} but got ${u}`);let l=Array.isArray(a.authorization_servers)?a.authorization_servers:[];if(l.length===0)throw new Error("No authorization_servers advertised by protected resource");return{resource:c,issuers:l}}let n=new URL(o),r=n.pathname.replace(/\/+$/,""),s=[];r&&r!=="/"&&s.push({url:`${n.origin}/.well-known/oauth-protected-resource${r}`,expected:`${n.origin}${r}`}),s.push({url:`${n.origin}/.well-known/oauth-protected-resource`,expected:`${n.origin}`});let i;for(let a of s)try{let c=await li(a.url),u=bo(c.resource??""),l=bo(a.expected);if(!u||u!==l)throw new Error(`Protected resource metadata 'resource' mismatch. Expected ${l} but got ${u}`);let p=Array.isArray(c.authorization_servers)?c.authorization_servers:[];if(p.length===0)throw new Error("No authorization_servers advertised by protected resource");return{resource:l,issuers:p}}catch(c){i=c}throw new Error(`Failed to resolve protected resource metadata via well-known endpoints. Last error: ${String(i)}`)}async function fd(o){let e=new URL(o),t=e.pathname.replace(/^\/+/,""),n=[];t?(n.push(`${e.origin}/.well-known/oauth-authorization-server/${t}`),n.push(`${e.origin}/.well-known/openid-configuration/${t}`),n.push(`${e.origin}/${t.replace(/\/+$/,"")}/.well-known/openid-configuration`)):(n.push(`${e.origin}/.well-known/oauth-authorization-server`),n.push(`${e.origin}/.well-known/openid-configuration`));let r;for(let s of n)try{let i=await li(s);if(!i.authorization_endpoint||!i.token_endpoint)throw new Error("AS metadata missing endpoints");let a=i.code_challenge_methods_supported;if(!a||!a.includes("S256"))throw new Error("Authorization server does not advertise PKCE S256 support");return i}catch(i){r=i}throw new Error(`Failed to discover AS metadata for ${o}: ${String(r)}`)}var Ir=class{constructor(e){this.oauth=e}tokenCache=new Map;asMetaCache=new Map;key(e,t){return`${e}::${t}`}async getStoredToken(e,t){let n=this.key(e,t);if(this.tokenCache.has(n))return this.tokenCache.get(n);let r=await this.oauth?.tokenStore?.getToken?.(n);return r&&this.tokenCache.set(n,r),r??null}async setStoredToken(e,t,n){let r=this.key(e,t);this.tokenCache.set(r,n),await this.oauth?.tokenStore?.setToken?.(r,n)}async clearStoredToken(e,t){let n=this.key(e,t);this.tokenCache.delete(n),await this.oauth?.tokenStore?.clearToken?.(n)}isExpired(e){return e?Date.now()>e-6e4:!1}async getASMeta(e){if(this.asMetaCache.has(e))return this.asMetaCache.get(e);let t=await fd(e);return this.asMetaCache.set(e,t),t}async ensureAccessToken(e){if(!this.oauth)return null;let{resource:t,issuers:n}=await gd(e.requestedUrl,e.wwwAuthenticate),r=this.oauth.selectAuthorizationServer?await this.oauth.selectAuthorizationServer(n,{}):n[0],s=await this.getASMeta(r),i=e.currentToken??await this.getStoredToken(t,r);if(i?.accessToken&&!this.isExpired(i.expiresAt))return{token:i,issuer:r,asMeta:s,resource:t};if(i?.refreshToken)try{let A=await this.refreshToken(i.refreshToken,t,r,s);return await this.setStoredToken(t,r,A),{token:A,issuer:r,asMeta:s,resource:t}}catch{await this.clearStoredToken(t,r)}let a=this.oauth.redirectUri??"http://localhost:8787/callback",c=this.oauth.clientId?{client_id:this.oauth.clientId,client_secret:this.oauth.clientSecret}:await this.dynamicClientRegistration(s,a),u=await Tc(),l=await dd(u),p=await Tc(),d=this.oauth.scopes?.join(" "),g=`${s.authorization_endpoint}?${md({response_type:"code",client_id:c.client_id,redirect_uri:a,scope:d,state:p,code_challenge:l,code_challenge_method:"S256",resource:t})}`;if(!this.oauth.onAuthCode)throw new Error(`Authorization required. Provide oauth.onAuthCode to complete the flow. Navigate to: ${g}`);let{code:m,redirectUri:f}=await this.oauth.onAuthCode(g),h=f??a,x=await this.exchangeCodeForToken({asMeta:s,code:m,codeVerifier:u,client:c,redirectUri:h,resource:t});return await this.setStoredToken(t,r,x),{token:x,issuer:r,asMeta:s,resource:t}}async dynamicClientRegistration(e,t){if(!e.registration_endpoint)throw new Error("Authorization server does not support dynamic client registration and no clientId was provided.");let r={application_type:t.startsWith("http://localhost")?"native":"web",client_name:"Ax MCP Client",redirect_uris:[t],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"none"},s=await fetch(e.registration_endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!s.ok)throw new Error(`Dynamic client registration failed: ${s.status} ${s.statusText}`);let i=await s.json();if(!i.client_id)throw new Error("Dynamic client registration did not return client_id");return i}async exchangeCodeForToken(e){let t=new URLSearchParams;t.set("grant_type","authorization_code"),t.set("code",e.code),t.set("redirect_uri",e.redirectUri),t.set("client_id",e.client.client_id),t.set("code_verifier",e.codeVerifier),t.set("resource",e.resource),e.client.client_secret&&t.set("client_secret",e.client.client_secret);let n=await fetch(e.asMeta.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t.toString()});if(!n.ok)throw new Error(`Token exchange failed: ${n.status} ${n.statusText}`);let r=await n.json();if(!r.access_token)throw new Error("No access_token in token response");let s=r.expires_in?Date.now()+r.expires_in*1e3:void 0;return{accessToken:r.access_token,refreshToken:r.refresh_token,expiresAt:s}}async refreshToken(e,t,n,r){let s=new URLSearchParams;s.set("grant_type","refresh_token"),s.set("refresh_token",e),s.set("resource",t),this.oauth?.clientId&&s.set("client_id",this.oauth.clientId),this.oauth?.clientSecret&&s.set("client_secret",this.oauth.clientSecret);let i=await fetch(r.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()});if(!i.ok)throw new Error(`Token refresh failed: ${i.status} ${i.statusText}`);let a=await i.json();if(!a.access_token)throw new Error("No access_token in refresh response");let c=a.expires_in?Date.now()+a.expires_in*1e3:void 0;return{accessToken:a.access_token,refreshToken:a.refresh_token??e,expiresAt:c}}};var pi=class{mcpEndpoint;sessionId;eventSource;pendingRequests=new Map;messageHandler;customHeaders;oauthHelper;currentToken;currentIssuer;constructor(e,t){this.mcpEndpoint=e,this.customHeaders={...t?.headers??{}},t?.authorization&&(this.customHeaders.Authorization=t.authorization),this.oauthHelper=new Ir(t?.oauth)}setHeaders(e){this.customHeaders={...e}}setAuthorization(e){this.customHeaders.Authorization=e}getHeaders(){return{...this.customHeaders}}buildHeaders(e){let t={...this.customHeaders,...e};return this.sessionId&&(t["Mcp-Session-Id"]=this.sessionId),t}setMessageHandler(e){this.messageHandler=e}async connect(){return Promise.resolve()}async openListeningStream(){return new Promise((e,t)=>{let n=this.buildHeaders({Accept:"text/event-stream"}),r=new URL(this.mcpEndpoint);if(Object.keys(this.customHeaders).length>0){this.openListeningStreamWithFetch(n).then(e).catch(t);return}this.eventSource=new EventSource(r.toString()),this.eventSource.onopen=()=>e(),this.eventSource.onmessage=s=>{try{let i=JSON.parse(s.data);this.messageHandler&&this.messageHandler(i)}catch(i){console.error("Failed to parse SSE message:",i)}},this.eventSource.onerror=()=>t(new Error("Failed to establish SSE connection"))})}async openListeningStreamWithFetch(e){let t=await fetch(this.mcpEndpoint,{method:"GET",headers:e});if(t.status===401){let a=t.headers.get("WWW-Authenticate"),c=await this.oauthHelper.ensureAccessToken({requestedUrl:this.mcpEndpoint,wwwAuthenticate:a,currentToken:null});if(!c)throw new Error("HTTP 401: Unauthorized");return this.customHeaders.Authorization=`Bearer ${c.token.accessToken}`,this.openListeningStreamWithFetch(this.buildHeaders({Accept:"text/event-stream"}))}if(!t.ok)throw new Error(`Failed to open SSE stream: ${t.status} ${t.statusText}`);if(!t.body)throw new Error("No response body available for SSE stream");let n=t.body.getReader(),r=new TextDecoder,s="",i=async()=>{try{let{done:a,value:c}=await n.read();if(a){n.releaseLock();return}s+=r.decode(c,{stream:!0});let u=s.split(`
|
|
862
862
|
`);s=u.pop()||"";for(let l of u)if(l.startsWith("data: ")){let p=l.slice(6);if(p==="[DONE]")return;try{let d=JSON.parse(p);this.messageHandler&&this.messageHandler(d)}catch(d){console.error("Failed to parse SSE data:",d)}}await i()}catch(a){throw n.releaseLock(),a}};await i()}async send(e){let t=this.buildHeaders({"Content-Type":"application/json",Accept:"application/json, text/event-stream"}),n=JSON.stringify(e),r=await fetch(this.mcpEndpoint,{method:"POST",headers:t,body:n});if(r.status===401){let a=r.headers.get("WWW-Authenticate"),c=await this.oauthHelper.ensureAccessToken({requestedUrl:this.mcpEndpoint,wwwAuthenticate:a,currentToken:null});if(!c)throw new Error("HTTP 401: Unauthorized");this.customHeaders.Authorization=`Bearer ${c.token.accessToken}`,r=await fetch(this.mcpEndpoint,{method:"POST",headers:this.buildHeaders({"Content-Type":"application/json",Accept:"application/json, text/event-stream"}),body:n})}if(!r.ok)throw r.status===404&&this.sessionId?(this.sessionId=void 0,new Error("Session expired. Please reinitialize.")):new Error(`HTTP error ${r.status}: ${r.statusText}`);let s=r.headers.get("Mcp-Session-Id");s&&(this.sessionId=s);let i=r.headers.get("Content-Type");if(i?.includes("text/event-stream"))return this.handleSSEResponse(r,e.id);if(i?.includes("application/json"))return r.json();throw new Error(`Unexpected content type: ${i}`)}async handleSSEResponse(e,t){return new Promise((n,r)=>{let s=e.body?.getReader();if(!s){r(new Error("No response body reader available"));return}let i=new TextDecoder,a="",c=async()=>{try{let{done:u,value:l}=await s.read();if(u){s.releaseLock();return}a+=i.decode(l,{stream:!0});let p=a.split(`
|
|
863
863
|
`);a=p.pop()||"";for(let d of p)if(d.startsWith("data: ")){let g=d.slice(6);if(g==="[DONE]")return;try{let m=JSON.parse(g);if("id"in m&&m.id===t){n(m);return}this.messageHandler&&this.messageHandler(m)}catch(m){console.error("Failed to parse SSE data:",m)}}await c()}catch(u){s.releaseLock(),r(u)}};c().catch(r)})}async sendNotification(e){let t=this.buildHeaders({"Content-Type":"application/json",Accept:"application/json, text/event-stream"}),n=JSON.stringify(e),r=await fetch(this.mcpEndpoint,{method:"POST",headers:t,body:n});if(r.status===401){let s=r.headers.get("WWW-Authenticate"),i=await this.oauthHelper.ensureAccessToken({requestedUrl:this.mcpEndpoint,wwwAuthenticate:s,currentToken:null});if(!i)throw new Error("HTTP 401: Unauthorized");this.customHeaders.Authorization=`Bearer ${i.token.accessToken}`,r=await fetch(this.mcpEndpoint,{method:"POST",headers:this.buildHeaders({"Content-Type":"application/json",Accept:"application/json, text/event-stream"}),body:n})}if(!r.ok)throw r.status===404&&this.sessionId?(this.sessionId=void 0,new Error("Session expired. Please reinitialize.")):new Error(`HTTP error ${r.status}: ${r.statusText}`);r.status!==202&&console.warn(`Unexpected status for notification: ${r.status}`)}async terminateSession(){if(this.sessionId)try{let e=this.buildHeaders({});(await fetch(this.mcpEndpoint,{method:"DELETE",headers:e})).status===405&&console.info("Server does not support explicit session termination")}catch(e){console.error("Failed to terminate session:",e)}finally{this.sessionId=void 0}}close(){this.eventSource&&(this.eventSource.close(),this.eventSource=void 0)}};var di=class{endpoint=null;sseUrl;eventSource;customHeaders={};oauthHelper;currentToken;currentIssuer;sseAbort;pendingRequests=new Map;messageHandler;endpointReady;constructor(e,t){this.sseUrl=e,this.customHeaders={...t?.headers??{}},t?.authorization&&(this.customHeaders.Authorization=t.authorization),this.oauthHelper=new Ir(t?.oauth)}buildHeaders(e){return{...this.customHeaders,...e}}async openSSEWithFetch(e){let t=new AbortController;this.sseAbort=t;let n=await fetch(this.sseUrl,{method:"GET",headers:e,signal:t.signal});if(n.status===401){let s=n.headers.get("WWW-Authenticate"),i=await this.oauthHelper.ensureAccessToken({requestedUrl:this.sseUrl,wwwAuthenticate:s,currentToken:null});if(!i)throw new Error("HTTP 401: Unauthorized");return this.customHeaders.Authorization=`Bearer ${i.token.accessToken}`,this.openSSEWithFetch(this.buildHeaders({Accept:"text/event-stream"}))}if(!n.ok)throw new Error("Failed to establish SSE connection");let r=this.createEndpointReady();this.consumeSSEStream(n),await r}createEndpointReady(){if(!this.endpointReady){let e,t=new Promise(n=>{e=n});this.endpointReady={resolve:e,promise:t}}return this.endpointReady.promise}async consumeSSEStream(e){if(!e.body)throw new Error("No response body available for SSE stream");let t=e.body.getReader(),n=new TextDecoder,r="",s=null;for(;;){let{done:i,value:a}=await t.read();if(i)break;r+=n.decode(a,{stream:!0});let c=r.split(`
|
|
864
864
|
`);r=c.pop()||"";for(let u of c)if(u.startsWith("event: "))s=u.slice(7).trim();else if(u.startsWith("data: ")){let l=u.slice(6);if(s==="endpoint"){let p=l.trim(),d;try{let g=JSON.parse(p);typeof g=="string"?d=g:g&&typeof g=="object"&&"uri"in g&&(d=g.uri)}catch{d=p}if(!d)throw new Error("Endpoint URI missing in SSE event data");/^https?:\/\//i.test(d)||(d=new URL(this.sseUrl).origin+(d.startsWith("/")?d:`/${d}`)),this.endpoint=d,this.endpointReady&&(this.endpointReady.resolve(),this.endpointReady=void 0)}else{let p=l.trim();try{let d=JSON.parse(p);if(d&&typeof d=="object"&&"id"in d){let g=d.id,m=this.pendingRequests.get(g);m?(m.resolve(d),this.pendingRequests.delete(g)):this.messageHandler&&this.messageHandler(d)}else this.messageHandler&&this.messageHandler(d)}catch{}}}else u.trim()===""&&(s=null)}}async connect(){let e=this.buildHeaders({Accept:"text/event-stream"});await this.openSSEWithFetch(e)}async send(e){if(!this.endpoint)throw new Error("HTTPTransport endpoint is not initialized. Call connect() first.");let t=this.buildHeaders({"Content-Type":"application/json"}),n=JSON.stringify(e),r=new Promise((a,c)=>{this.pendingRequests.set(e.id,{resolve:a,reject:c})}),s=await fetch(this.endpoint,{method:"POST",headers:t,body:n});if(s.status===401){let a=s.headers.get("WWW-Authenticate"),c=await this.oauthHelper.ensureAccessToken({requestedUrl:this.sseUrl,wwwAuthenticate:a,currentToken:null});if(!c)throw new Error("HTTP 401: Unauthorized");this.customHeaders.Authorization=`Bearer ${c.token.accessToken}`,s=await fetch(this.endpoint,{method:"POST",headers:this.buildHeaders({"Content-Type":"application/json"}),body:n})}if(!s.ok)throw this.pendingRequests.delete(e.id),new Error(`HTTP error ${s.status}: ${s.statusText}`);if(s.headers.get("Content-Type")?.includes("application/json")){let a=await s.json();return this.pendingRequests.delete(e.id),a}return r}async sendNotification(e){if(!this.endpoint)throw new Error("HTTPTransport endpoint is not initialized. Call connect() first.");let t=this.buildHeaders({"Content-Type":"application/json"}),n=JSON.stringify(e),r=await fetch(this.endpoint,{method:"POST",headers:t,body:n});if(r.status===401){let s=r.headers.get("WWW-Authenticate"),i=await this.oauthHelper.ensureAccessToken({requestedUrl:this.sseUrl,wwwAuthenticate:s,currentToken:null});if(!i)throw new Error("HTTP 401: Unauthorized");this.customHeaders.Authorization=`Bearer ${i.token.accessToken}`,r=await fetch(this.endpoint,{method:"POST",headers:this.buildHeaders({"Content-Type":"application/json"}),body:n})}if(!r.ok)throw new Error(`HTTP error ${r.status}: ${r.statusText}`);r.status!==202&&console.warn(`Unexpected status for notification: ${r.status}`)}close(){this.eventSource&&(this.eventSource.close(),this.eventSource=void 0),this.sseAbort&&(this.sseAbort.abort(),this.sseAbort=void 0)}};function Ic(o){return o.match(/^(\w+Error:\s*.{0,60})/m)?.[1]??o.slice(0,80)}function Ad(o){return yo(o)}function vh(o){return Xp(o)}var Sh=new Set(["var","let","const","function","return","if","else","for","while","do","switch","case","break","continue","try","catch","finally","throw","new","delete","typeof","void","in","of","instanceof","this","class","extends","super","import","export","default","from","as","async","await","yield","true","false","null","undefined","console","log"]);function yd(o){let e=Yt(o),t=/\b([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,n=new Set,r=t.exec(e);for(;r!==null;)r[1]&&!Sh.has(r[1])&&n.add(r[1]),r=t.exec(e);return n}function bd(o){let e=yd(o);for(let t of Ad(o))e.delete(t);return e}var kh=new Set(["dead-end","foundational","pivot","superseded"]);function Dt(o,e=120){let t=o.replace(/\s+/g," ").trim();return t.length<=e?t:`${t.slice(0,e-3)}...`}function Oh(o){return/\b(final|askClarification)\s*\(/.test(o)}function Eh(o){return o.tags.includes("error")?"error":Oh(o.code)?"finalize":/\b(llmQuery|discoverModules|discoverFunctions)\s*\(/.test(o.code)?"query":(o.producedVars?.length??0)>0?"transform":"explore"}function Mh(o){let e=o.producedVars??[];if(e.length>0)return`Updated live runtime values: ${e.join(", ")}`;switch(o.stepKind){case"query":return"Gathered external or semantic evidence without creating durable runtime values";case"finalize":return"Prepared completion payload for the responder";case"error":return"Did not produce a durable runtime state update";default:return"Inspected runtime state without creating durable runtime values"}}function vc(o){if(o.tombstone)return o.tombstone;let e=o.stepKind==="error"?"Error step":o.stepKind==="query"?"Query step":o.stepKind==="transform"?"Transform step":o.stepKind==="finalize"?"Finalize step":"Explore step",t=Dt(o.output||"(no output)"),n=Dt(o.actorFieldsOutput.replace(/^Actor fields:\s*/i,""),80),r=o.stateDelta??"No durable runtime state update",s=n?` Actor fields: ${n}.`:"";return`[SUMMARY]: ${e}. ${r}. Result: ${t}.${s}`}function Ph(o){o.rank=void 0,o.tags=o.tags.filter(e=>!kh.has(e))}function jt(o){o.producedVars||(o.producedVars=vh(o.code)),o.referencedVars||(o.referencedVars=[...yd(o.code)]),o.stepKind||(o.stepKind=Eh(o)),o.stateDelta||(o.stateDelta=Mh(o)),o.summary||(o.summary=vc(o))}function Fh(o){let e=Yt(o),t=new Set,n=/\b([a-zA-Z_$][a-zA-Z0-9_$]*)\.([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/g,r=n.exec(e);for(;r;){let s=r[1],i=r[2];s&&i&&t.add(`${s}.${i}`),r=n.exec(e)}return[...t]}function mi(o){o._directQualifiedCalls||(o._directQualifiedCalls=Fh(o.code))}function _h(o){return mi(o),o._directQualifiedCalls?.find(Boolean)}function gi(o){let e=new Map;for(let t of o){let n=t;jt(n);let r=_h(n);for(let i of n.producedVars??[])e.set(i,{createdTurn:n.turn,stepKind:n.stepKind,source:r,code:n.code});let s=bd(n.code);for(let i of s){let a=e.get(i);a&&(a.lastReadTurn=Math.max(a.lastReadTurn??a.createdTurn,n.turn))}}return e}function fi(o){return[...o]}function Nh(o){let e=Array.from({length:o.length},()=>new Set),t=new Set;for(let n=o.length-1;n>=0;n--){e[n]=new Set(t);for(let r of o[n]?.referencedVars??[])t.add(r)}return e}function Lh(o,e){let t=e.actionReplay??"full",n=Math.max(e.recentFullActions??1,0),r=t==="checkpointed"&&((e.checkpointTurns?.length??0)>0||!!e.checkpointSummary);for(let a of o)jt(a);let s=Nh(o),i=Math.max(o.length-n,0);o.forEach((a,c)=>{if(a.tombstone){a.replayMode="full";return}if(t==="full"){a.replayMode="full";return}if(t==="checkpointed"&&!r){a.replayMode="full";return}let u=c>=i,l=a.tags.includes("error"),p=a.output.startsWith("[POLICY]"),d=s[c]??new Set,m=(a.producedVars??[]).some(f=>d.has(f));if(u||l||p){a.replayMode="full";return}if(t==="adaptive"&&m){a.replayMode="full";return}a.replayMode="omit"})}function $h(o,e){jt(o),jt(e),Ph(o);let t=o.tags.includes("error"),n=e.tags.includes("error");if(t&&!n){o.rank=0,Co(o,"dead-end");return}if(t&&n){let r=Ic(o.output),s=Ic(e.output);r!==s?(o.rank=3,Co(o,"pivot")):(o.rank=0,Co(o,"dead-end"));return}if(!t&&!n){let r=o.producedVars??Ad(o.code);if(r.length===0||o.stepKind==="explore"||o.stepKind==="query")return;let s=bd(e.code);if(r.filter(a=>s.has(a)).length>0){o.rank=5,Co(o,"foundational");return}o.stepKind==="transform"&&(o.rank=1,Co(o,"superseded"));return}}function Co(o,e){o.tags.includes(e)||o.tags.push(e)}function Rc(o,e){let t=o.output.split(`
|
|
@@ -1055,7 +1055,7 @@ ${o}`:p}function hi(o,e){let t=e.length>0?e.map(r=>{let s=lr(r.type),i=r.isOptio
|
|
|
1055
1055
|
${o}`:n}var Io="ax-agent-recursive-slots-v1",he={shared:"root.actor.shared",root:"root.actor.root",recursive:"root.actor.recursive",terminal:"root.actor.terminal",responder:"root.responder"},Yh=()=>({promptTokens:0,completionTokens:0,totalTokens:0}),ln=o=>{let e=Math.max(0,Math.floor(o?.promptTokens??0)),t=Math.max(0,Math.floor(o?.completionTokens??0)),n=Math.max(0,Math.floor(o?.totalTokens??0)),r=Math.max(n,e+t);return{promptTokens:e,completionTokens:t,totalTokens:r}},Ro=(o,e)=>{let t=ln(o),n=ln(e);return{promptTokens:t.promptTokens+n.promptTokens,completionTokens:t.completionTokens+n.completionTokens,totalTokens:t.totalTokens+n.totalTokens}},Ed=(o,e)=>{let t=ln(o),n=ln(e);return ln({promptTokens:Math.max(0,t.promptTokens-n.promptTokens),completionTokens:Math.max(0,t.completionTokens-n.completionTokens),totalTokens:Math.max(0,t.totalTokens-n.totalTokens)})},xi=o=>(o??[]).reduce((e,t)=>Ro(e,{promptTokens:t.tokens?.promptTokens??0,completionTokens:t.tokens?.completionTokens??0,totalTokens:t.tokens?.totalTokens??0}),Yh()),zt=(o,e=240)=>{if(o===void 0)return;let t;if(typeof o=="string")t=o;else try{t=JSON.stringify(o)}catch{t=String(o)}let n=t.replace(/\s+/g," ").trim();if(n)return n.length<=e?n:`${n.slice(0,Math.max(0,e-3))}...`};var Ai=(o,e)=>{let t=e?.maxCodeChars??220,n=e?.maxOutputChars??220,r=e?.maxTaskChars??220,s=e?.maxContextChars??220,i=e?.maxToolErrors??12,a=e?.maxFunctionCalls??12,c=e?.maxChildren??Number.POSITIVE_INFINITY,u=o.children.slice(0,c).map(d=>Ai(d,e)),l=ln(o.localUsage),p=u.reduce((d,g)=>Ro(d,g.cumulativeUsage),l);return{nodeId:o.nodeId,parentId:o.parentId,depth:o.depth,role:o.role,taskDigest:zt(o.taskDigest,r),contextDigest:zt(o.contextDigest,s),completionType:o.completionType,turnCount:o.turnCount,childCount:u.length,actorTurns:o.actorTurns.map(d=>({turn:d.turn,code:zt(d.code,t)??"",output:zt(d.output,n)??"",isError:d.isError,thought:zt(d.thought,n)})),functionCalls:o.functionCalls.slice(0,a).map(d=>({qualifiedName:d.qualifiedName,name:d.name,error:zt(d.error,n)})),toolErrors:o.toolErrors.slice(0,i).map(d=>zt(d,n)??""),localUsage:l,cumulativeUsage:p,children:u}},Ec=o=>{let e=0,t=0,n=0,r=0,s=0,i=0,a=0,c=0,u=0,l=[],p=d=>{e++,n=Math.max(n,d.depth),d.depth>0&&r++,d.children.length===0&&t++,d.children.length>1&&s++,d.completionType==="askClarification"&&i++,(d.toolErrors.length>0||d.functionCalls.some(m=>!!m.error)||d.actorTurns.some(m=>m.isError))&&a++,d.completionType==="final"&&(d.children.length>0?u++:c++),l.push({nodeId:d.nodeId,role:d.role,depth:d.depth,taskDigest:d.taskDigest,totalTokens:d.cumulativeUsage.totalTokens});for(let m of d.children)p(m)};return p(o),{nodeCount:e,leafCount:t,maxDepth:n,recursiveCallCount:r,batchedFanOutCount:s,clarificationCount:i,errorCount:a,directAnswerCount:c,delegatedAnswerCount:u,rootLocalUsage:ln(o.localUsage),rootCumulativeUsage:ln(o.cumulativeUsage),topExpensiveNodes:l.sort((d,g)=>g.totalTokens-d.totalTokens).slice(0,5)}},Mc=(o,e)=>{let t=[`Trace nodes=${e.nodeCount}, leaves=${e.leafCount}, maxDepth=${e.maxDepth}, recursiveCalls=${e.recursiveCallCount}, batchedFanOuts=${e.batchedFanOutCount}.`,`Final answers direct=${e.directAnswerCount}, delegated=${e.delegatedAnswerCount}, clarifications=${e.clarificationCount}, errorNodes=${e.errorCount}.`,`Root role=${o.role}, root local tokens=${e.rootLocalUsage.totalTokens}, root cumulative tokens=${e.rootCumulativeUsage.totalTokens}.`];if(e.topExpensiveNodes.length>0){let n=e.topExpensiveNodes.map(r=>{let s=r.taskDigest&&r.taskDigest.length>0?` (${r.taskDigest})`:"";return`${r.nodeId}:${r.totalTokens}${s}`}).join("; ");t.push(`Most expensive nodes: ${n}.`)}return t.join(`
|
|
1056
1056
|
`)},Md=(o,e)=>{let t=new Map;for(let n of o.children){let r=n.taskDigest?.trim();r&&t.set(r,(t.get(r)??0)+1)}for(let[n,r]of t)r>1&&e.push(n);for(let n of o.children)Md(n,e)},Xh=o=>{let e=[],t=n=>{e.push(n);for(let r of n.children)t(r)};return t(o),e},Pd=o=>{let e=o.prediction.recursiveTrace,t=o.prediction.recursiveStats;if(!e||!t)return;let n=[],r=[];Md(e,r);let s=Xh(e),i=s.filter(u=>u.role==="recursive"),a=s.filter(u=>u.role==="terminal"),c=t.rootLocalUsage.totalTokens>0?t.rootCumulativeUsage.totalTokens/t.rootLocalUsage.totalTokens:t.rootCumulativeUsage.totalTokens>0?Number.POSITIVE_INFINITY:1;switch(o.componentId){case he.root:{e.childCount>=4&&n.push(`Root decomposition fanned out into ${e.childCount} subtasks. Delegate fewer, higher-leverage branches.`),e.childCount>0&&t.rootCumulativeUsage.totalTokens>=8e3&&c>=3&&n.push(`Root decomposition consumed ${t.rootCumulativeUsage.totalTokens} total tokens versus ${t.rootLocalUsage.totalTokens} local tokens. Prefer solving directly when a shallow answer is viable.`),r.length>0&&n.push(`Sibling subtasks overlap in scope (${[...new Set(r)].slice(0,2).join("; ")}). Make delegated tasks more distinct.`);break}case he.recursive:{let u=i.filter(p=>p.childCount===1&&p.cumulativeUsage.totalTokens>=2e3);u.length>0&&n.push(`Mid-tree branches repeatedly delegated one child at a time (${u.length} such nodes). Collapse serial delegation when the current branch can finish locally.`);let l=i.filter(p=>p.cumulativeUsage.totalTokens>=3e3).sort((p,d)=>d.cumulativeUsage.totalTokens-p.cumulativeUsage.totalTokens);l.length>0&&n.push(`Recursive branches are expensive (${l[0].cumulativeUsage.totalTokens} tokens on ${l[0].nodeId}). Narrow context and avoid redundant child work.`);break}case he.terminal:{let u=a.filter(p=>p.toolErrors.length>0||p.functionCalls.some(d=>!!d.error)||p.actorTurns.some(d=>d.isError));u.length>0&&n.push(`Terminal-depth nodes still hit avoidable errors (${u.length} nodes). Terminal instructions should prefer direct, minimal answers from already available context.`);let l=a.filter(p=>p.localUsage.totalTokens>=2e3||p.turnCount>=3);l.length>0&&n.push(`Terminal-depth nodes spent too much effort before answering (${l.length} nodes over budget). Encourage concise direct answers at max depth.`);break}case he.shared:{t.errorCount>0&&n.push(`The trace contains ${t.errorCount} error-producing nodes. Reinforce careful tool use, argument validation, and earlier stopping when the answer is already sufficient.`),t.rootCumulativeUsage.totalTokens>=1e4&&t.recursiveCallCount>=3&&n.push(`Tree-wide behavior is expensive (${t.rootCumulativeUsage.totalTokens} cumulative tokens across ${t.recursiveCallCount} recursive calls). Add stronger cost-awareness before delegating.`),t.delegatedAnswerCount>0&&t.directAnswerCount===0&&t.recursiveCallCount>=2&&n.push("The agent delegated every successful branch. Add a general rule to answer directly whenever the task can be completed without further recursion.");break}default:{t.errorCount>0&&n.push(`The recursive trace contains ${t.errorCount} error-producing nodes.`);break}}return n.length>0?n:void 0};var Rr=o=>({[he.shared]:o?.trim()??"",[he.root]:"At the root, decide whether to solve directly or decompose. Delegate only when it clearly improves accuracy or reduces risk.",[he.recursive]:"Within recursive branches, avoid redundant delegation. Narrow context, keep sibling tasks distinct, and finish locally when further fan-out is unnecessary.",[he.terminal]:"At terminal depth, answer directly from the available context. Do not spend extra turns or imitate deeper delegation.",[he.responder]:""}),Fd=(o,e)=>{let t=[e[he.shared]?.trim(),o==="root"?e[he.root]?.trim():o==="recursive"?e[he.recursive]?.trim():e[he.terminal]?.trim()].filter(n=>!!n);if(t.length!==0)return t.join(`
|
|
1057
1057
|
|
|
1058
|
-
`)};var wo="agents";function Pc(o,e,t=3e4,n=.25){if(t<=0)return Math.floor(o*n);let r=Math.max(n,Math.min(1,1-e/t));return Math.floor(o*r)}var _d="actorModelPolicy now expects an ordered array of { model, namespaces?, aboveErrorTurns? } entries. Manage prompt pressure with contextPolicy.budget instead of abovePromptChars.",Zh="contextPolicy now only supports { preset?, budget? }. Use contextPolicy.budget instead of contextPolicy.state.*, contextPolicy.checkpoints.*, or other manual cutoff options.",ex="contextPolicy.summarizerOptions has moved to top-level summarizerOptions.";function tx(o,e){if(typeof o!="string"||o.trim().length===0)throw new Error(`${e} must be a non-empty string`);return o.trim()}function Nd(o,e){if(o!==void 0){if(typeof o!="number"||!Number.isFinite(o)||o<0)throw new Error(`${e} must be a finite number >= 0`);return o}}function Ld(o,e){if(o===void 0)return;if(!Array.isArray(o))throw new Error(`${e} must be a string[]`);if(!o.every(n=>typeof n=="string"))throw new Error(`${e} must contain only strings`);let t=o.map(n=>n.trim()).filter(n=>n.length>0);if(t.length===0)throw new Error(`${e} must contain at least one non-empty string`);return[...new Set(t)]}function $d(o){if(o!==void 0){if(!Array.isArray(o))throw new Error(_d);if(o.length===0)throw new Error("actorModelPolicy must contain at least one entry");return o.map((e,t)=>{if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`actorModelPolicy[${t}] must be an object`);let n=e;if("escalatedModel"in n||"baseModel"in n||"abovePromptChars"in n||"escalateAtPromptChars"in n||"escalateAtPromptCharsWhenCheckpointed"in n||"recentErrorWindowTurns"in n||"recentErrorThreshold"in n||"discoveryStallTurns"in n||"deescalateBelowPromptChars"in n||"stableTurnsBeforeDeescalate"in n||"minEscalatedTurns"in n)throw new Error(_d);let r=Nd(n.aboveErrorTurns,`actorModelPolicy[${t}].aboveErrorTurns`),s=Ld(n.namespaces,`actorModelPolicy[${t}].namespaces`);if(r!==void 0&&!Number.isInteger(r))throw new Error(`actorModelPolicy[${t}].aboveErrorTurns must be an integer >= 0`);if(r===void 0&&s===void 0)throw new Error(`actorModelPolicy[${t}] must define at least one of aboveErrorTurns or namespaces`);return{model:tx(n.model,`actorModelPolicy[${t}].model`),...r!==void 0?{aboveErrorTurns:r}:{},...s!==void 0?{namespaces:s}:{}}})}}function yi(o,e=void 0,t=void 0){let n=o;if(n){let u=new Set(["preset","budget"]),l=Object.keys(n).find(p=>!u.has(p));if(l)throw l==="state"?new Error("contextPolicy.state.* has been removed. Use contextPolicy.budget instead."):l==="checkpoints"?new Error("contextPolicy.checkpoints.* has been removed. Use contextPolicy.budget instead."):l==="summarizerOptions"?new Error(ex):new Error(Zh)}let r=o?.preset??"checkpointed",s=o?.budget??"balanced",i=nx(s),a=rx(r,i),c=Nd(t,"maxRuntimeChars")??3e3;return{preset:r,budget:s,summarizerOptions:e,actionReplay:a.actionReplay,recentFullActions:Math.max(a.recentFullActions,0),errorPruning:a.errorPruning,hindsightEvaluation:a.hindsight,pruneRank:a.pruneRank,rankPruneGraceTurns:2,tombstoning:void 0,stateSummary:{enabled:a.stateSummary,maxEntries:a.maxEntries,maxChars:1200},stateInspection:{enabled:a.inspect,contextThreshold:i.inspectThreshold},checkpoints:{enabled:a.checkpointsEnabled,triggerChars:a.checkpointTriggerChars},targetPromptChars:i.targetPromptChars,maxRuntimeChars:c}}function nx(o){switch(o){case"compact":return{targetPromptChars:12e3,inspectThreshold:10200};case"expanded":return{targetPromptChars:2e4,inspectThreshold:17e3};default:return{targetPromptChars:16e3,inspectThreshold:13600}}}function rx(o,e){switch(o){case"adaptive":return{actionReplay:"adaptive",recentFullActions:e.targetPromptChars>=2e4?3:e.targetPromptChars>=16e3?2:1,errorPruning:!0,hindsight:!1,pruneRank:2,stateSummary:!0,inspect:!0,maxEntries:8,checkpointsEnabled:!0,checkpointTriggerChars:Math.floor(e.targetPromptChars*.75)};case"lean":return{actionReplay:"minimal",recentFullActions:e.targetPromptChars>=2e4?2:1,errorPruning:!0,hindsight:!1,pruneRank:2,stateSummary:!0,inspect:!0,maxEntries:4,checkpointsEnabled:!0,checkpointTriggerChars:Math.floor(e.targetPromptChars*.6)};case"checkpointed":return{actionReplay:"checkpointed",recentFullActions:e.targetPromptChars>=2e4?4:e.targetPromptChars>=16e3?3:2,errorPruning:!1,hindsight:!1,pruneRank:2,stateSummary:!0,inspect:!1,maxEntries:8,checkpointsEnabled:!0,checkpointTriggerChars:e.targetPromptChars};default:return{actionReplay:"full",recentFullActions:1,errorPruning:!1,hindsight:!1,pruneRank:2,stateSummary:!1,inspect:!1,maxEntries:void 0,checkpointsEnabled:!1,checkpointTriggerChars:void 0}}}function bi(o){return o?.consecutiveErrorTurns??0}function Xt(o){let e=o?.matchedNamespaces;return Array.isArray(e)?[...new Set(e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(Boolean))]:[]}function Fc(o){let e=Xt(o);return{consecutiveErrorTurns:0,...e.length>0?{matchedNamespaces:e}:{}}}function Dd(o){if(!o||typeof o!="object"||Array.isArray(o))return;let e=o,t=e.consecutiveErrorTurns,n=Ld(e.matchedNamespaces,"actorModelState.matchedNamespaces")??[];if(typeof t=="number"&&Number.isFinite(t)&&t>=0)return{consecutiveErrorTurns:Math.floor(t),...n.length>0?{matchedNamespaces:n}:{}};if("escalated"in e||"escalatedTurns"in e||"stableBelowThresholdTurns"in e)return Fc({consecutiveErrorTurns:0,...n.length>0?{matchedNamespaces:n}:{}})}function Ud(o,e){let t=Xt(o);return{consecutiveErrorTurns:e?bi(o)+1:0,...t.length>0?{matchedNamespaces:t}:{}}}function Gd(o,e){let t=[...new Set([...Xt(o),...e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(Boolean)])];return{consecutiveErrorTurns:bi(o),...t.length>0?{matchedNamespaces:t}:{}}}function Bd(o,e,t=[]){let n,r=new Set(t);for(let s of o){let i=s.aboveErrorTurns!==void 0&&e>=s.aboveErrorTurns,a=s.namespaces?.some(c=>r.has(c));(i||a)&&(n=s.model)}return n}var ft=class extends Error{constructor(t){super(`AxAgent protocol completion: ${t}`);this.type=t;this.name="AxAgentProtocolCompletionSignal"}};function Nc(o,e){let t="Usage: final(message: string) or final(outputGenerationTask: string, context: object).",n='Usage: askClarification(question: string) or askClarification({ question: string, type?: "text" | "date" | "number" | "single_choice" | "multiple_choice", choices?: string[] })',r=(...u)=>{throw u.length===0?new Error(`final() requires at least one argument. ${t}`):typeof u[0]!="string"||u[0].trim().length===0?new Error(`final() first argument must be a non-empty string. ${t}`):u.length===1?(o(vo("final",u)),new ft("final")):u.length===2?u[1]===null||typeof u[1]!="object"||Array.isArray(u[1])?new Error(`final() second argument must be a context object. ${t}`):(o(vo("final",u)),new ft("final")):new Error(`final() accepts at most 2 arguments, got ${u.length}. ${t}`)},s=(...u)=>{throw u.length===0?new Error(`askClarification() requires exactly one argument. ${n}`):u.length>1?new Error(`askClarification() requires exactly one argument, got ${u.length}. ${n}`):(o(vo("askClarification",u)),new ft("askClarification"))},i=async u=>{await e?.(u,"success")},a=async u=>{await e?.(u,"failed")},c=u=>({final:(...l)=>{throw o(vo("final",l)),new ft("final")},askClarification:(...l)=>{throw o(vo("askClarification",l)),new ft("askClarification")},guideAgent:(...l)=>{throw o(ox(l,u)),new ft("guide_agent")},success:i,failed:a});return{finalFunction:r,askClarificationFunction:s,protocol:c(),protocolForTrigger:c}}function vo(o,e){if(e.length===0)throw new Error(`${o}() requires at least one argument`);if(o==="askClarification"){if(e.length!==1)throw new Error("askClarification() requires exactly one argument");return{type:o,args:[zd(e[0])]}}return{type:o,args:e}}function ox(o,e){if(o.length!==1)throw new Error("guideAgent() requires exactly one argument");if(!wr(o[0]))throw new Error("guideAgent() requires a non-empty string guidance");return{type:"guide_agent",guidance:o[0],...e?{triggeredBy:e}:{}}}function jd(o){return!!o&&typeof o=="object"&&!Array.isArray(o)&&Object.getPrototypeOf(o)===Object.prototype}function wr(o){return typeof o=="string"&&o.trim().length>0}function sx(o){if(wr(o))return o;if(!jd(o))throw new Error("askClarification() choice entries must be non-empty strings or objects with a non-empty label");if(!wr(o.label))throw new Error("askClarification() choice objects require a non-empty label");if(o.value!==void 0&&!wr(o.value))throw new Error("askClarification() choice object values must be non-empty strings");return{label:o.label,...o.value!==void 0?{value:o.value}:{}}}function Ci(o){let e=o?` ${o}`:"";return new Error('askClarification() with type "multiple_choice" must include at least two valid choices. Use a non-empty string question plus choices like ["Option A", "Option B"], or switch to "single_choice" / a plain question if there is only one option.'+e)}function _c(o,e){let{choices:t,...n}=o;if(e?.dropType){let{type:r,...s}=n;return{...s,question:o.question}}return{...n,question:o.question}}function zd(o){if(wr(o))return o;if(!jd(o))throw new Error("askClarification() requires a non-empty string or an object payload");if(!wr(o.question))throw new Error("askClarification() object payload requires a non-empty question");let e=new Set(["text","number","date","single_choice","multiple_choice"]),t;if(o.type===void 0)t=Array.isArray(o.choices)&&o.choices.length>0?"single_choice":void 0;else{if(typeof o.type!="string"||!e.has(o.type))throw new Error("askClarification() object payload type must be one of: text, number, date, single_choice, multiple_choice");t=o.type}let n=t==="single_choice"||t==="multiple_choice",r=o.choices,s;if(r!==void 0){if(!Array.isArray(r)||r.length===0){if(t==="multiple_choice")throw Ci();return _c(o,{dropType:t==="single_choice"})}try{s=r.map(sx)}catch(i){if(t==="multiple_choice"){let a=i instanceof Error?`Fix the choices so each option is a non-empty string or an object with a non-empty label. ${i.message}`:void 0;throw Ci(a)}return _c(o,{dropType:t==="single_choice"})}}else if(n){if(t==="multiple_choice")throw Ci();return _c(o,{dropType:!0})}if(t==="multiple_choice"&&(!s||s.length<2))throw Ci();return{...o,question:o.question,...t?{type:t}:{},...s?{choices:s}:{}}}function Lc(o){let e=zd(o);return typeof e=="string"?{question:e}:e}var Hd=100,Pv=V().input("taskInput",V.json("The structured task input passed to the agent")).input("criteria",V.string("Task-specific success criteria")).input("expectedOutput",V.json("Optional expected final output").optional()).input("expectedActions",V.string("Optional function names that should appear in the run").array().optional()).input("forbiddenActions",V.string("Optional function names that should not appear in the run").array().optional()).input("metadata",V.json("Optional task metadata").optional()).output("completionType",V.string("How the agent completed the run")).output("clarification",V.json("Structured clarification payload when the agent asked for more information").optional()).output("finalOutput",V.json("The final structured output returned by the agent when it completed normally").optional()).output("guidanceLog",V.string("Chronological guidance log shown to the actor loop when runtime guidance was issued").optional()).output("actionLog",V.string("Chronological action log produced by the actor loop")).output("functionCalls",V.json("Ordered function call records with names, arguments, results, and errors").optional()).output("toolErrors",V.string("Function-call errors observed during the run").array().optional()).output("turnCount",V.number("Number of actor turns executed")).output("usage",V.json("Optional usage summary for the run").optional()).output("recursiveTrace",V.json("Optional structured recursive trace projection for advanced recursive llmQuery runs").optional()).output("recursiveStats",V.json("Optional deterministic recursive trace statistics for advanced recursive llmQuery runs").optional()).build(),Wd=V().input("taskInput",V.json("The structured task input passed to the agent")).input("criteria",V.string("Task-specific success criteria")).input("expectedOutput",V.json("Optional expected final output").optional()).input("expectedActions",V.string("Optional function names that should appear in the run").array().optional()).input("forbiddenActions",V.string("Optional function names that should not appear in the run").array().optional()).input("metadata",V.json("Optional task metadata").optional()).input("completionType",V.string("How the agent completed the run")).input("clarification",V.json("Structured clarification payload when the agent asked for more information").optional()).input("finalOutput",V.json("The final structured output returned by the agent when it completed normally").optional()).input("guidanceLog",V.string("Chronological guidance log shown to the actor loop when runtime guidance was issued").optional()).input("actionLog",V.string("Chronological action log produced by the actor loop")).input("functionCalls",V.json("Ordered function call records with names, arguments, results, and errors").optional()).input("toolErrors",V.string("Function-call errors observed during the run").array().optional()).input("turnCount",V.number("Number of actor turns executed")).input("usage",V.json("Optional usage summary for the run").optional()).input("recursiveTrace",V.json("Optional structured recursive trace projection for advanced recursive llmQuery runs").optional()).input("recursiveStats",V.json("Optional deterministic recursive trace statistics for advanced recursive llmQuery runs").optional()).output("reasoning",V.string("Short explanation of the run quality")).output("quality",V.class(["excellent","good","acceptable","poor","unacceptable"],"Overall run quality tier")).build(),Vd=V().input("taskRecord",V.json("Full optimization task record, including the agent input and evaluation criteria")).output("agentRunReport",V.json("Agent run report containing completion type, clarification or final output, guidance log, action log, function calls, errors, and turn count")).build();function Kd(o){return"train"in o?{train:o.train,validation:o.validation}:{train:o}}function ot(o){if(o!==void 0){if(o===null)return null;if(typeof o=="string"||typeof o=="number"||typeof o=="boolean")return o;if(Array.isArray(o))try{return JSON.parse(JSON.stringify(o))}catch{return o.map(e=>ot(e))}if(typeof o=="object")try{return JSON.parse(JSON.stringify(o))}catch{return String(o)}return String(o)}}function Jd(o){let e=o.trim();e=e.replace(/<think>[\s\S]*?<\/think>/g,"").trim(),e=e.replace(/[^\n]*<\/think>/g,"").trim();let t=e.match(/```(?:[A-Za-z0-9_-]+)?[ \t]*\r?\n([\s\S]*?)\r?\n?```/);for(t?.[1]!==void 0&&(e=t[1].trim());;){let n=e;if(e=e.replace(/^```(?:[A-Za-z0-9_-]+)?[ \t]*\r?\n/,""),e=e.replace(/\r?\n?```[ \t]*$/,""),e=e.trim(),e===n)return e}}function Qd(o){let e=`
|
|
1058
|
+
`)};var wo="agents";function Pc(o,e,t=3e4,n=.25){if(t<=0)return Math.floor(o*n);let r=Math.max(n,Math.min(1,1-e/t));return Math.floor(o*r)}var _d="actorModelPolicy now expects an ordered array of { model, namespaces?, aboveErrorTurns? } entries. Manage prompt pressure with contextPolicy.budget instead of abovePromptChars.",Zh="contextPolicy now only supports { preset?, budget? }. Use contextPolicy.budget instead of contextPolicy.state.*, contextPolicy.checkpoints.*, or other manual cutoff options.",ex="contextPolicy.summarizerOptions has moved to top-level summarizerOptions.";function tx(o,e){if(typeof o!="string"||o.trim().length===0)throw new Error(`${e} must be a non-empty string`);return o.trim()}function Nd(o,e){if(o!==void 0){if(typeof o!="number"||!Number.isFinite(o)||o<0)throw new Error(`${e} must be a finite number >= 0`);return o}}function Ld(o,e){if(o===void 0)return;if(!Array.isArray(o))throw new Error(`${e} must be a string[]`);if(!o.every(n=>typeof n=="string"))throw new Error(`${e} must contain only strings`);let t=o.map(n=>n.trim()).filter(n=>n.length>0);if(t.length===0)throw new Error(`${e} must contain at least one non-empty string`);return[...new Set(t)]}function $d(o){if(o!==void 0){if(!Array.isArray(o))throw new Error(_d);if(o.length===0)throw new Error("actorModelPolicy must contain at least one entry");return o.map((e,t)=>{if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`actorModelPolicy[${t}] must be an object`);let n=e;if("escalatedModel"in n||"baseModel"in n||"abovePromptChars"in n||"escalateAtPromptChars"in n||"escalateAtPromptCharsWhenCheckpointed"in n||"recentErrorWindowTurns"in n||"recentErrorThreshold"in n||"discoveryStallTurns"in n||"deescalateBelowPromptChars"in n||"stableTurnsBeforeDeescalate"in n||"minEscalatedTurns"in n)throw new Error(_d);let r=Nd(n.aboveErrorTurns,`actorModelPolicy[${t}].aboveErrorTurns`),s=Ld(n.namespaces,`actorModelPolicy[${t}].namespaces`);if(r!==void 0&&!Number.isInteger(r))throw new Error(`actorModelPolicy[${t}].aboveErrorTurns must be an integer >= 0`);if(r===void 0&&s===void 0)throw new Error(`actorModelPolicy[${t}] must define at least one of aboveErrorTurns or namespaces`);return{model:tx(n.model,`actorModelPolicy[${t}].model`),...r!==void 0?{aboveErrorTurns:r}:{},...s!==void 0?{namespaces:s}:{}}})}}function yi(o,e=void 0,t=void 0){let n=o;if(n){let u=new Set(["preset","budget"]),l=Object.keys(n).find(p=>!u.has(p));if(l)throw l==="state"?new Error("contextPolicy.state.* has been removed. Use contextPolicy.budget instead."):l==="checkpoints"?new Error("contextPolicy.checkpoints.* has been removed. Use contextPolicy.budget instead."):l==="summarizerOptions"?new Error(ex):new Error(Zh)}let r=o?.preset??"checkpointed",s=o?.budget??"balanced",i=nx(s),a=rx(r,i),c=Nd(t,"maxRuntimeChars")??3e3;return{preset:r,budget:s,summarizerOptions:e,actionReplay:a.actionReplay,recentFullActions:Math.max(a.recentFullActions,0),errorPruning:a.errorPruning,hindsightEvaluation:a.hindsight,pruneRank:a.pruneRank,rankPruneGraceTurns:2,tombstoning:void 0,stateSummary:{enabled:a.stateSummary,maxEntries:a.maxEntries,maxChars:1200},stateInspection:{enabled:a.inspect,contextThreshold:i.inspectThreshold},checkpoints:{enabled:a.checkpointsEnabled,triggerChars:a.checkpointTriggerChars},targetPromptChars:i.targetPromptChars,maxRuntimeChars:c}}function nx(o){switch(o){case"compact":return{targetPromptChars:12e3,inspectThreshold:10200};case"expanded":return{targetPromptChars:2e4,inspectThreshold:17e3};default:return{targetPromptChars:16e3,inspectThreshold:13600}}}function rx(o,e){switch(o){case"adaptive":return{actionReplay:"adaptive",recentFullActions:e.targetPromptChars>=2e4?3:e.targetPromptChars>=16e3?2:1,errorPruning:!0,hindsight:!1,pruneRank:2,stateSummary:!0,inspect:!0,maxEntries:8,checkpointsEnabled:!0,checkpointTriggerChars:Math.floor(e.targetPromptChars*.75)};case"lean":return{actionReplay:"minimal",recentFullActions:e.targetPromptChars>=2e4?2:1,errorPruning:!0,hindsight:!1,pruneRank:2,stateSummary:!0,inspect:!0,maxEntries:4,checkpointsEnabled:!0,checkpointTriggerChars:Math.floor(e.targetPromptChars*.6)};case"checkpointed":return{actionReplay:"checkpointed",recentFullActions:e.targetPromptChars>=2e4?4:e.targetPromptChars>=16e3?3:2,errorPruning:!1,hindsight:!1,pruneRank:2,stateSummary:!0,inspect:!1,maxEntries:8,checkpointsEnabled:!0,checkpointTriggerChars:e.targetPromptChars};default:return{actionReplay:"full",recentFullActions:1,errorPruning:!1,hindsight:!1,pruneRank:2,stateSummary:!1,inspect:!1,maxEntries:void 0,checkpointsEnabled:!1,checkpointTriggerChars:void 0}}}function bi(o){return o?.consecutiveErrorTurns??0}function Xt(o){let e=o?.matchedNamespaces;return Array.isArray(e)?[...new Set(e.filter(t=>typeof t=="string").map(t=>t.trim()).filter(Boolean))]:[]}function Fc(o){let e=Xt(o);return{consecutiveErrorTurns:0,...e.length>0?{matchedNamespaces:e}:{}}}function Dd(o){if(!o||typeof o!="object"||Array.isArray(o))return;let e=o,t=e.consecutiveErrorTurns,n=Ld(e.matchedNamespaces,"actorModelState.matchedNamespaces")??[];if(typeof t=="number"&&Number.isFinite(t)&&t>=0)return{consecutiveErrorTurns:Math.floor(t),...n.length>0?{matchedNamespaces:n}:{}};if("escalated"in e||"escalatedTurns"in e||"stableBelowThresholdTurns"in e)return Fc({consecutiveErrorTurns:0,...n.length>0?{matchedNamespaces:n}:{}})}function Ud(o,e){let t=Xt(o);return{consecutiveErrorTurns:e?bi(o)+1:0,...t.length>0?{matchedNamespaces:t}:{}}}function Gd(o,e){let t=[...new Set([...Xt(o),...e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(Boolean)])];return{consecutiveErrorTurns:bi(o),...t.length>0?{matchedNamespaces:t}:{}}}function Bd(o,e,t=[]){let n,r=new Set(t);for(let s of o){let i=s.aboveErrorTurns!==void 0&&e>=s.aboveErrorTurns,a=s.namespaces?.some(c=>r.has(c));(i||a)&&(n=s.model)}return n}var ht=class extends Error{constructor(t){super(`AxAgent protocol completion: ${t}`);this.type=t;this.name="AxAgentProtocolCompletionSignal"}};function Nc(o,e){let t="Usage: final(message: string) or final(outputGenerationTask: string, context: object).",n='Usage: askClarification(question: string) or askClarification({ question: string, type?: "text" | "date" | "number" | "single_choice" | "multiple_choice", choices?: string[] })',r=(...u)=>{throw u.length===0?new Error(`final() requires at least one argument. ${t}`):typeof u[0]!="string"||u[0].trim().length===0?new Error(`final() first argument must be a non-empty string. ${t}`):u.length===1?(o(vo("final",u)),new ht("final")):u.length===2?u[1]===null||typeof u[1]!="object"||Array.isArray(u[1])?new Error(`final() second argument must be a context object. ${t}`):(o(vo("final",u)),new ht("final")):new Error(`final() accepts at most 2 arguments, got ${u.length}. ${t}`)},s=(...u)=>{throw u.length===0?new Error(`askClarification() requires exactly one argument. ${n}`):u.length>1?new Error(`askClarification() requires exactly one argument, got ${u.length}. ${n}`):(o(vo("askClarification",u)),new ht("askClarification"))},i=async u=>{await e?.(u,"success")},a=async u=>{await e?.(u,"failed")},c=u=>({final:(...l)=>{throw o(vo("final",l)),new ht("final")},askClarification:(...l)=>{throw o(vo("askClarification",l)),new ht("askClarification")},guideAgent:(...l)=>{throw o(ox(l,u)),new ht("guide_agent")},success:i,failed:a});return{finalFunction:r,askClarificationFunction:s,protocol:c(),protocolForTrigger:c}}function vo(o,e){if(e.length===0)throw new Error(`${o}() requires at least one argument`);if(o==="askClarification"){if(e.length!==1)throw new Error("askClarification() requires exactly one argument");return{type:o,args:[zd(e[0])]}}return{type:o,args:e}}function ox(o,e){if(o.length!==1)throw new Error("guideAgent() requires exactly one argument");if(!wr(o[0]))throw new Error("guideAgent() requires a non-empty string guidance");return{type:"guide_agent",guidance:o[0],...e?{triggeredBy:e}:{}}}function jd(o){return!!o&&typeof o=="object"&&!Array.isArray(o)&&Object.getPrototypeOf(o)===Object.prototype}function wr(o){return typeof o=="string"&&o.trim().length>0}function sx(o){if(wr(o))return o;if(!jd(o))throw new Error("askClarification() choice entries must be non-empty strings or objects with a non-empty label");if(!wr(o.label))throw new Error("askClarification() choice objects require a non-empty label");if(o.value!==void 0&&!wr(o.value))throw new Error("askClarification() choice object values must be non-empty strings");return{label:o.label,...o.value!==void 0?{value:o.value}:{}}}function Ci(o){let e=o?` ${o}`:"";return new Error('askClarification() with type "multiple_choice" must include at least two valid choices. Use a non-empty string question plus choices like ["Option A", "Option B"], or switch to "single_choice" / a plain question if there is only one option.'+e)}function _c(o,e){let{choices:t,...n}=o;if(e?.dropType){let{type:r,...s}=n;return{...s,question:o.question}}return{...n,question:o.question}}function zd(o){if(wr(o))return o;if(!jd(o))throw new Error("askClarification() requires a non-empty string or an object payload");if(!wr(o.question))throw new Error("askClarification() object payload requires a non-empty question");let e=new Set(["text","number","date","single_choice","multiple_choice"]),t;if(o.type===void 0)t=Array.isArray(o.choices)&&o.choices.length>0?"single_choice":void 0;else{if(typeof o.type!="string"||!e.has(o.type))throw new Error("askClarification() object payload type must be one of: text, number, date, single_choice, multiple_choice");t=o.type}let n=t==="single_choice"||t==="multiple_choice",r=o.choices,s;if(r!==void 0){if(!Array.isArray(r)||r.length===0){if(t==="multiple_choice")throw Ci();return _c(o,{dropType:t==="single_choice"})}try{s=r.map(sx)}catch(i){if(t==="multiple_choice"){let a=i instanceof Error?`Fix the choices so each option is a non-empty string or an object with a non-empty label. ${i.message}`:void 0;throw Ci(a)}return _c(o,{dropType:t==="single_choice"})}}else if(n){if(t==="multiple_choice")throw Ci();return _c(o,{dropType:!0})}if(t==="multiple_choice"&&(!s||s.length<2))throw Ci();return{...o,question:o.question,...t?{type:t}:{},...s?{choices:s}:{}}}function Lc(o){let e=zd(o);return typeof e=="string"?{question:e}:e}var Hd=100,Fv=V().input("taskInput",V.json("The structured task input passed to the agent")).input("criteria",V.string("Task-specific success criteria")).input("expectedOutput",V.json("Optional expected final output").optional()).input("expectedActions",V.string("Optional function names that should appear in the run").array().optional()).input("forbiddenActions",V.string("Optional function names that should not appear in the run").array().optional()).input("metadata",V.json("Optional task metadata").optional()).output("completionType",V.string("How the agent completed the run")).output("clarification",V.json("Structured clarification payload when the agent asked for more information").optional()).output("finalOutput",V.json("The final structured output returned by the agent when it completed normally").optional()).output("guidanceLog",V.string("Chronological guidance log shown to the actor loop when runtime guidance was issued").optional()).output("actionLog",V.string("Chronological action log produced by the actor loop")).output("functionCalls",V.json("Ordered function call records with names, arguments, results, and errors").optional()).output("toolErrors",V.string("Function-call errors observed during the run").array().optional()).output("turnCount",V.number("Number of actor turns executed")).output("usage",V.json("Optional usage summary for the run").optional()).output("recursiveTrace",V.json("Optional structured recursive trace projection for advanced recursive llmQuery runs").optional()).output("recursiveStats",V.json("Optional deterministic recursive trace statistics for advanced recursive llmQuery runs").optional()).build(),Wd=V().input("taskInput",V.json("The structured task input passed to the agent")).input("criteria",V.string("Task-specific success criteria")).input("expectedOutput",V.json("Optional expected final output").optional()).input("expectedActions",V.string("Optional function names that should appear in the run").array().optional()).input("forbiddenActions",V.string("Optional function names that should not appear in the run").array().optional()).input("metadata",V.json("Optional task metadata").optional()).input("completionType",V.string("How the agent completed the run")).input("clarification",V.json("Structured clarification payload when the agent asked for more information").optional()).input("finalOutput",V.json("The final structured output returned by the agent when it completed normally").optional()).input("guidanceLog",V.string("Chronological guidance log shown to the actor loop when runtime guidance was issued").optional()).input("actionLog",V.string("Chronological action log produced by the actor loop")).input("functionCalls",V.json("Ordered function call records with names, arguments, results, and errors").optional()).input("toolErrors",V.string("Function-call errors observed during the run").array().optional()).input("turnCount",V.number("Number of actor turns executed")).input("usage",V.json("Optional usage summary for the run").optional()).input("recursiveTrace",V.json("Optional structured recursive trace projection for advanced recursive llmQuery runs").optional()).input("recursiveStats",V.json("Optional deterministic recursive trace statistics for advanced recursive llmQuery runs").optional()).output("reasoning",V.string("Short explanation of the run quality")).output("quality",V.class(["excellent","good","acceptable","poor","unacceptable"],"Overall run quality tier")).build(),Vd=V().input("taskRecord",V.json("Full optimization task record, including the agent input and evaluation criteria")).output("agentRunReport",V.json("Agent run report containing completion type, clarification or final output, guidance log, action log, function calls, errors, and turn count")).build();function Kd(o){return"train"in o?{train:o.train,validation:o.validation}:{train:o}}function ot(o){if(o!==void 0){if(o===null)return null;if(typeof o=="string"||typeof o=="number"||typeof o=="boolean")return o;if(Array.isArray(o))try{return JSON.parse(JSON.stringify(o))}catch{return o.map(e=>ot(e))}if(typeof o=="object")try{return JSON.parse(JSON.stringify(o))}catch{return String(o)}return String(o)}}function Jd(o){let e=o.trim();e=e.replace(/<think>[\s\S]*?<\/think>/g,"").trim(),e=e.replace(/[^\n]*<\/think>/g,"").trim();let t=e.match(/```(?:[A-Za-z0-9_-]+)?[ \t]*\r?\n([\s\S]*?)\r?\n?```/);for(t?.[1]!==void 0&&(e=t[1].trim());;){let n=e;if(e=e.replace(/^```(?:[A-Za-z0-9_-]+)?[ \t]*\r?\n/,""),e=e.replace(/\r?\n?```[ \t]*$/,""),e=e.trim(),e===n)return e}}function Qd(o){let e=`
|
|
1059
1059
|
Use the input field named "criteria" as the task-specific rubric for success.
|
|
1060
1060
|
- Reward actual task completion over polished wording.
|
|
1061
1061
|
- Reward correct tool choice and correct arguments.
|
|
@@ -1080,12 +1080,12 @@ ${t}`:e}function Yd(o){let{criteria:e,description:t,randomizeOrder:n,...r}=o;ret
|
|
|
1080
1080
|
`)}
|
|
1081
1081
|
]`}function om(o,e){let t=new WeakSet,n=r=>(s,i)=>{if(i===null||typeof i!="object")return i;if(t.has(i))return"[Circular]";if(t.add(i),r>=e)return Array.isArray(i)?`[Array(${i.length})]`:"[Object]";if(Array.isArray(i))return i.map((c,u)=>n(r+1)(String(u),c));let a={};for(let[c,u]of Object.entries(i))a[c]=n(r+1)(c,u);return a};try{let r=n(0)("",o);return JSON.stringify(r,null,2)}catch{return String(o)}}function tm(o){try{return JSON.stringify(o)}catch{return String(o)}}var lx=/^[$A-Z_a-z][$0-9A-Z_a-z]*$/,px=new Set(["context","__proto__","prototype","constructor","globalThis","global","self","window","console","JSON","Math","Reflect","Atomics","Array","Object","String","Number","Boolean","BigInt","Symbol","Date","RegExp","Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","AggregateError","Map","Set","WeakMap","WeakSet","Promise","Proxy","Function","Intl","URL","URLSearchParams","TextEncoder","TextDecoder","AbortController","AbortSignal","parseInt","parseFloat","isNaN","isFinite","eval","undefined","Infinity","NaN","await","break","case","catch","class","const","continue","debugger","default","delete","do","else","enum","export","extends","false","finally","for","function","if","import","in","instanceof","new","null","return","super","switch","this","throw","true","try","typeof","var","void","while","with","yield","let","static","implements","interface","package","private","protected","public"]),vr="discoverModules",Sr="discoverFunctions",cm="AI service is required to use llmQuery(...) in AxAgent.test(). Pass options.ai or configure ai on the agent.",Oo="[The JavaScript runtime was restarted; all global state was lost and must be recreated if needed.]";function um(o,e,t){return{model:o?.model,modelConfig:o?.modelConfig,debug:e,verbose:o?.verbose,rateLimiter:o?.rateLimiter,fetch:o?.fetch,tracer:o?.tracer,meter:o?.meter,timeout:o?.timeout,excludeContentFromTrace:o?.excludeContentFromTrace,abortSignal:t,logger:o?.logger,sessionId:o?.sessionId,debugHideSystemPrompt:o?.debugHideSystemPrompt,traceContext:o?.traceContext,thinkingTokenBudget:o?.thinkingTokenBudget,showThoughts:o?.showThoughts,useExpensiveModel:o?.useExpensiveModel,corsProxy:o?.corsProxy,retry:o?.retry,contextCache:o?.contextCache,examplesInSystem:o?.examplesInSystem,customLabels:o?.customLabels}}function dx(o){return!!o&&typeof o=="object"&&!Array.isArray(o)&&Object.getPrototypeOf(o)===Object.prototype}function mx(o,e){return!e.has(o)&&!px.has(o)&&lx.test(o)}function lm(o,e){if(o===void 0)return{};let t={context:o};if(!dx(o))return t;for(let[n,r]of Object.entries(o))mx(n,e)&&(t[n]=r);return t}function gx(o){if(o===null)return{type:"null"};if(Array.isArray(o))return{type:"array",ctor:"Array"};if(o instanceof Map)return{type:"map",ctor:"Map"};if(o instanceof Set)return{type:"set",ctor:"Set"};if(o instanceof Date)return{type:"date",ctor:"Date"};if(o instanceof Error)return{type:"error",ctor:typeof o.name=="string"&&o.name.trim()?o.name:"Error"};let e=typeof o;return e!=="object"?{type:e}:{type:"object",ctor:o&&o.constructor&&typeof o.constructor?.name=="string"?o.constructor?.name:void 0}}function So(o){if(o===null)return"null";if(o===void 0)return"undefined";let e=typeof o;if(e==="string")return JSON.stringify(Bc(o,40));if(e==="number"||e==="boolean"||e==="bigint"||e==="symbol")return String(o);if(e==="function")return`[function ${o.name||"anonymous"}]`;if(Array.isArray(o))return`[array(${o.length})]`;if(o instanceof Date)return Number.isFinite(o.getTime())?o.toISOString():String(o);if(o instanceof Error)return`${o.name||"Error"}: ${o.message||""}`;if(o instanceof Map)return`[map(${o.size})]`;if(o instanceof Set)return`[set(${o.size})]`;let t=o&&o.constructor&&typeof o.constructor?.name=="string"?o.constructor?.name:"";return t&&t!=="Object"?`[${t}]`:"[object]"}function fx(o,e,t){if(e==="array"&&Array.isArray(o))return`[${o.slice(0,3).map(r=>So(r)).join(", ")}${o.length>3?", ...":""}]`;if(e==="map"&&o instanceof Map){let n=[...o.entries()].slice(0,3).map(([r,s])=>`${So(r)} => ${So(s)}`);return`Map(${o.size}) {${n.join(", ")}${o.size>3?", ...":""}}`}if(e==="set"&&o instanceof Set){let n=[...o.values()].slice(0,5).map(r=>So(r));return`Set(${o.size}) {${n.join(", ")}${o.size>5?", ...":""}}`}if(e==="object"&&o&&typeof o=="object"){let n=Object.keys(o),r=n.slice(0,4);return`${t&&t!=="Object"?`${t} `:""}{${r.join(", ")}${n.length>r.length?", ...":""}}`}return So(o)}function hx(o,e){if(e==="string"&&typeof o=="string")return`${o.length} chars`;if(e==="array"&&Array.isArray(o))return`${o.length} items`;if((e==="map"||e==="set")&&o instanceof Map)return`${o.size} items`;if((e==="map"||e==="set")&&o instanceof Set)return`${o.size} items`;if(e==="object"&&o&&typeof o=="object")return`${Object.keys(o).length} keys`}function xx(o){if(o.length===0)return;let e=o[0];if(e&&typeof e=="object"&&!Array.isArray(e)){let t=Object.keys(e).slice(0,8);if(t.length>0)return t.join(", ")}}function Ax(o){return Object.entries(o).map(([e,t])=>{try{let n=gx(t),r=hx(t,n.type),s=fx(t,n.type,n.ctor),i;n.type==="array"&&Array.isArray(t)&&(i=xx(t));let a=s?Bc(s,40):void 0,c=i?a?`${a} \u2014 element keys: ${i}`:`element keys: ${i}`:a;return{name:e,type:n.type,...n.ctor?{ctor:n.ctor}:{},...r?{size:r}:{},...c?{preview:c}:{}}}catch{return{name:e,type:"unknown",preview:"[unavailable]"}}})}function pm(o,e){let t=Ax(o),n=Ii(t,new Map,e),r=e?.budgetRemaining!==void 0&&e?.budgetTotal!==void 0?`
|
|
1082
1082
|
Sub-query budget: ${e.budgetRemaining}/${e.budgetTotal} remaining`:"";return`Explore with code \u2014 do not assume values from these previews.
|
|
1083
|
-
${n}${r}`}function Gc(o,e){return o instanceof
|
|
1083
|
+
${n}${r}`}function Gc(o,e){return o instanceof lt?At(`[CLARIFICATION] ${o.question}`,e):kr(o,e)}function dm(o){return o instanceof dt&&o.status>=500&&o.status<600?!0:o instanceof nt||o instanceof Ct}function At(o,e){return o.length<=e?o:`${o.slice(0,e)}
|
|
1084
1084
|
...[truncated ${o.length-e} chars]`}function Bc(o,e){return e<=0?"":o.length<=e?o:e<=3?o.slice(0,e):`${o.slice(0,e-3)}...`}function yx(o){if(!o||typeof o!="object")return!1;let e=o;return typeof e.name=="string"&&typeof e.type=="string"&&(e.ctor===void 0||typeof e.ctor=="string")&&(e.size===void 0||typeof e.size=="string")&&(e.preview===void 0||typeof e.preview=="string")&&(e.restorable===void 0||typeof e.restorable=="boolean")}function mm(o){let e=o.trim();if(!(!e||e[0]!=="{"&&e[0]!=="["))try{let t=JSON.parse(e),n=Array.isArray(t)?t:t&&typeof t=="object"&&Array.isArray(t.entries)?t.entries:void 0;return n?n.filter(yx):void 0}catch{return}}function gm(o,e){let t=e?.maxEntries&&e.maxEntries>0?e.maxEntries:void 0,n=e?.maxChars&&e.maxChars>0?e.maxChars:void 0,r=t?o.slice(0,t):[...o];if(!n)return r.join(`
|
|
1085
1085
|
`);let s=[],i=0;for(let a of r){let c=s.length>0?1:0,u=n-i-c;if(u<=0)break;if(a.length<=u){s.push(a),i+=c+a.length;continue}s.push(Bc(a,u)),i=n;break}return s.join(`
|
|
1086
1086
|
`)}function fm(o,e){let t=o.split(`
|
|
1087
|
-
`).map(n=>n.trim()).filter(Boolean);return gm(t,e)}function sm(o,e){let t=0;return e&&(t+=1e6,t+=e.createdTurn*100,t+=(e.lastReadTurn??e.createdTurn)*1e4,e.source&&(t+=25)),o.type==="accessor"?t-=100:o.type==="function"&&(t-=10),t}function bx(o){let e=o.type;return o.type==="object"&&o.ctor&&o.ctor!=="Object"?e=`object<${o.ctor}>`:o.type==="error"&&o.ctor&&o.ctor!=="Error"&&(e=`error<${o.ctor}>`),o.size&&(e+=` (${o.size})`),e}function Cx(o){if(!o)return"";let e=[`from t${o.createdTurn}${o.source?` via ${o.source}`:""}`];return o.lastReadTurn!==void 0&&o.lastReadTurn>o.createdTurn&&e.push(`read t${o.lastReadTurn}`),` [${e.join("; ")}]`}function Ii(o,e,t){let n=[...o].sort((r,s)=>{let i=sm(r,e.get(r.name));return sm(s,e.get(s.name))-i||r.name.localeCompare(s.name)}).map(r=>{let s=r.preview?` = ${r.preview}`:"",i=Cx(e.get(r.name)),a="restorable"in r&&r.restorable===!1?" [snapshot only]":"";return`${r.name}: ${bx(r)}${s}${i}${a}`});return n.length===0?"(no user variables)":gm(n,t)}function Eo(o,e){if(o===void 0)return"(no output)";if(typeof o=="string")return
|
|
1088
|
-
`)};s.push(`Caused by: ${i(t.cause,1)}`)}return
|
|
1087
|
+
`).map(n=>n.trim()).filter(Boolean);return gm(t,e)}function sm(o,e){let t=0;return e&&(t+=1e6,t+=e.createdTurn*100,t+=(e.lastReadTurn??e.createdTurn)*1e4,e.source&&(t+=25)),o.type==="accessor"?t-=100:o.type==="function"&&(t-=10),t}function bx(o){let e=o.type;return o.type==="object"&&o.ctor&&o.ctor!=="Object"?e=`object<${o.ctor}>`:o.type==="error"&&o.ctor&&o.ctor!=="Error"&&(e=`error<${o.ctor}>`),o.size&&(e+=` (${o.size})`),e}function Cx(o){if(!o)return"";let e=[`from t${o.createdTurn}${o.source?` via ${o.source}`:""}`];return o.lastReadTurn!==void 0&&o.lastReadTurn>o.createdTurn&&e.push(`read t${o.lastReadTurn}`),` [${e.join("; ")}]`}function Ii(o,e,t){let n=[...o].sort((r,s)=>{let i=sm(r,e.get(r.name));return sm(s,e.get(s.name))-i||r.name.localeCompare(s.name)}).map(r=>{let s=r.preview?` = ${r.preview}`:"",i=Cx(e.get(r.name)),a="restorable"in r&&r.restorable===!1?" [snapshot only]":"";return`${r.name}: ${bx(r)}${s}${i}${a}`});return n.length===0?"(no user variables)":gm(n,t)}function Eo(o,e){if(o===void 0)return"(no output)";if(typeof o=="string")return At(o||"(no output)",e);try{return At(rm(o,e),e)}catch{return At(String(o),e)}}function kr(o,e){let t=o,n=t?.name??"Error",r=t?.message??String(o),s=[`${n}: ${r}`];if(t?.data!==void 0)try{s.push(`Data: ${JSON.stringify(t.data,null,2)}`)}catch{s.push(`Data: ${String(t.data)}`)}if(t?.cause!==void 0){let i=(a,c)=>{if(c>4)return"[cause chain truncated]";let u=a,l=u?.name??"Error",p=u?.message??String(a),d=[`${l}: ${p}`];if(u?.data!==void 0)try{d.push(`Data: ${JSON.stringify(u.data,null,2)}`)}catch{d.push(`Data: ${String(u.data)}`)}return u?.cause!==void 0&&d.push(`Caused by: ${i(u.cause,c+1)}`),d.join(`
|
|
1088
|
+
`)};s.push(`Caused by: ${i(t.cause,1)}`)}return At(s.join(`
|
|
1089
1089
|
`),e)}function Ri(o){let e=Yt(o);return/\bfinal\s*\(/.test(e)||/\baskClarification\s*\(/.test(e)}function jc(o){return o&&(typeof o=="object"||typeof o=="function")&&"then"in o&&typeof o.then=="function"?!0:typeof o=="string"&&o.trim()==="[object Promise]"}function zc(o){return o instanceof Error&&o.message==="Session is closed"}function hm(o){return o instanceof Error&&o.message==="Execution timed out"}function xm(o){return o.startsWith("[ERROR]")||o.startsWith(Oo)?!0:/^(AggregateError|Error|EvalError|RangeError|ReferenceError|SyntaxError|TypeError|URIError): /.test(o)}function Am(o,e){if(e.kind==="threshold")return Ix(o)<=e.promptMaxChars?o:void 0;if(typeof o!="string")return;let t=e.keepInPromptChars;if(o.length<=t)return o;let n=o.length-t;if(e.reverseTruncate){let s=t>0?o.slice(-t):"";return`[truncated ${n} chars]...${s}`}return`${t>0?o.slice(0,t):""}...[truncated ${n} chars]`}function Tx(o,e,t){return e.kind==="threshold"?t?`inline (<=${e.promptMaxChars} chars)`:`runtime-only (>${e.promptMaxChars} chars)`:typeof o!="string"?"runtime-only (keepInPromptChars requires string)":t?o.length<=e.keepInPromptChars?`inline (<=${e.keepInPromptChars} chars)`:e.reverseTruncate?`inline-truncated(last ${e.keepInPromptChars} chars of ${o.length})`:`inline-truncated(first ${e.keepInPromptChars} chars of ${o.length})`:"runtime-only"}function Ix(o){if(typeof o=="string")return o.length;try{return JSON.stringify(o).length}catch{return String(o).length}}function ym(o,e,t){let n=new Set(e.map(a=>a.name)),r=new Set,s=[],i=new Map;for(let a of o){let c=typeof a=="string"?a:a.field;if(!n.has(c))throw new Error(`RLM contextField "${c}" not found in signature`);if(r.has(c))throw new Error(`Duplicate contextField "${c}"`);if(r.add(c),s.push(c),typeof a!="string"){let u=a.keepInPromptChars!==void 0,l=a.promptMaxChars!==void 0;if(u&&l)throw new Error(`contextField "${c}" cannot set both promptMaxChars and keepInPromptChars`);if("reverseTruncate"in a&&!u)throw new Error(`contextField "${c}" reverseTruncate requires keepInPromptChars`);if(u){let d=a.keepInPromptChars;if(!Number.isFinite(d)||d===void 0||d<0)throw new Error(`contextField "${c}" keepInPromptChars must be a finite number >= 0`);i.set(c,{kind:"truncate",keepInPromptChars:d,reverseTruncate:a.reverseTruncate===!0});continue}let p=a.promptMaxChars??t;if(!Number.isFinite(p)||p<0)throw new Error(`contextField "${c}" promptMaxChars must be a finite number >= 0`);i.set(c,{kind:"threshold",promptMaxChars:p})}}return{contextFieldNames:s,promptConfigByField:i}}function bm(o,e){let t=[];for(let[n,r]of Object.entries(o)){let s=Array.isArray(r)?"array":typeof r,i=typeof r=="string"?`${r.length} chars`:Array.isArray(r)?`${r.length} items`:r&&typeof r=="object"?`${Object.keys(r).length} keys`:"n/a",a=e?.promptConfigByField?.get(n),c=a===void 0?"runtime-only":Tx(r,a,e?.inlinedFields?.has(n)===!0);t.push(`- ${n}: type=${s}, size=${i}, prompt=${c}`)}return t.join(`
|
|
1090
1090
|
`)}async function Cm(o,e,t,n){if(o.length===0)return[];let r=new Array(o.length),s=0,i=Math.max(1,Math.min(e,o.length)),a=Array.from({length:i},async()=>{for(;;){if(n?.aborted)return;let c=s++;if(c>=o.length)return;let u=o[c];if(u===void 0)return;r[c]=await t(u,c)}});return await Promise.all(a),r}function Tm(o){return o.includes("console.log")}function Im(o){let e=Yt(o),t=Ti(e),n=t.findIndex(d=>Ri(d)),s=(n>=0?t.slice(0,n+1):t).join(`;
|
|
1091
1091
|
`),i=/\bconsole\s*\.\s*log\s*\(/.test(s),a=Ti(o),c=n>=0?t.slice(0,n).join(`;
|
|
@@ -1106,7 +1106,7 @@ ${n}${r}`}function Gc(o,e){return o instanceof ut?xt(`[CLARIFICATION] ${o.questi
|
|
|
1106
1106
|
- Not found.`}).join(`
|
|
1107
1107
|
|
|
1108
1108
|
`)}function Vc(o){let e=o.trim().split(/[^A-Za-z0-9_$]+/).map(t=>t.trim()).filter(Boolean);return e.length===0?"":e.map((t,n)=>{let r=t.toLowerCase();return n===0?r:r.charAt(0).toUpperCase()+r.slice(1)}).join("")}function Mx(o){return typeof structuredClone=="function"?structuredClone(o):JSON.parse(JSON.stringify(o))}function In(o){return Mx(o)}function Em(o){return o.map(e=>({turn:e.turn,code:e.code,output:e.output,actorFieldsOutput:e.actorFieldsOutput,tags:[...e.tags],...e.summary?{summary:e.summary}:{},...e.producedVars?{producedVars:[...e.producedVars]}:{},...e.referencedVars?{referencedVars:[...e.referencedVars]}:{},...e.stateDelta?{stateDelta:e.stateDelta}:{},...e.stepKind?{stepKind:e.stepKind}:{},...e.replayMode?{replayMode:e.replayMode}:{},...e.rank!==void 0?{rank:e.rank}:{},...e.tombstone?{tombstone:e.tombstone}:{}}))}function Mm(o){return(o??[]).map(e=>({turn:e.turn,code:e.code,output:e.output,actorFieldsOutput:e.actorFieldsOutput,tags:[...e.tags],...e.summary?{summary:e.summary}:{},...e.producedVars?{producedVars:[...e.producedVars]}:{},...e.referencedVars?{referencedVars:[...e.referencedVars]}:{},...e.stateDelta?{stateDelta:e.stateDelta}:{},...e.stepKind?{stepKind:e.stepKind}:{},...e.replayMode?{replayMode:e.replayMode}:{},...e.rank!==void 0?{rank:e.rank}:{},...e.tombstone?{tombstone:e.tombstone}:{}}))}function Pm(o){return Object.fromEntries([...o.entries()].map(([e,t])=>[e,{...t}]))}function Fm(o,e){let t=o.filter(r=>r.restorable===!1).length,n=["Runtime Restore:","- Runtime state was restored from a previous call.","- Continue from restored values unless recomputation is actually needed."];return e?.includeLiveRuntimeState!==!1&&n.splice(2,0,"- The liveRuntimeState field reflects the restored bindings."),t>0&&n.push(`- ${t} prior value${t===1?" was":"s were"} snapshot-only and could not be restored.`),n.join(`
|
|
1109
|
-
`)}function _m(o){return new Map(Object.entries(o??{}).map(([e,t])=>[e,{...t}]))}function Nm(o,e){let t=new Map;for(let[n,r]of o.entries())t.set(n,{...r});for(let[n,r]of e.entries())t.set(n,{...r});return t}var
|
|
1109
|
+
`)}function _m(o){return new Map(Object.entries(o??{}).map(([e,t])=>[e,{...t}]))}function Nm(o,e){let t=new Map;for(let[n,r]of o.entries())t.set(n,{...r});for(let[n,r]of e.entries())t.set(n,{...r});return t}var lt=class extends Error{question;clarification;stateSnapshot;stateErrorMessage;constructor(e,t){let n=Lc(e);super(n.question),this.name="AxAgentClarificationError",this.question=n.question,this.clarification=n,this.stateSnapshot=t?.state?In(t.state):void 0,this.stateErrorMessage=t?.stateError}getState(){if(this.stateErrorMessage)throw new Error(this.stateErrorMessage);return this.stateSnapshot?In(this.stateSnapshot):void 0}};function Nx(o){let e=[];for(let t of o)for(let n of t.messages)n.role!=="tool"&&e.push({role:n.role,content:n.content});return e}function Jc(o){if(o.length!==0)return o.map(e=>`- ${e.triggeredBy??"(unknown function)"}, ${e.guidance.replace(/\s+/g," ").trim()}`).join(`
|
|
1110
1110
|
`)}function Dm(o){return`Execution stopped at \`${o.triggeredBy??"(unknown function)"}\`. Guidance recorded in \`guidanceLog\`.`}function Lx(o){return`await ${o.triggeredBy??"(unknown function)"}(...)`}function Qc(){return{modules:new Map,functions:new Map}}function Po(o){let e=Qc();for(let t of o?.modules??[])t&&typeof t.module=="string"&&t.module.trim()&&typeof t.text=="string"&&t.text.trim()&&e.modules.set(t.module.trim(),t.text.trim());for(let t of o?.functions??[])t&&typeof t.qualifiedName=="string"&&t.qualifiedName.trim()&&typeof t.text=="string"&&t.text.trim()&&e.functions.set(Mo(t.qualifiedName),t.text.trim());return e}function Si(o){let e=[...o.modules.entries()].sort(([n],[r])=>Et(n,r)).map(([n,r])=>({module:n,text:r})),t=[...o.functions.entries()].sort(([n],[r])=>Et(n,r)).map(([n,r])=>({qualifiedName:n,text:r}));if(!(e.length===0&&t.length===0))return{...e.length>0?{modules:e}:{},...t.length>0?{functions:t}:{}}}function $x(o){let e=[...o.modules.entries()].sort(([r],[s])=>Et(r,s)).map(([,r])=>r),t=[...o.functions.entries()].sort(([r],[s])=>Et(r,s)).map(([,r])=>r);return[...e,...t].filter(Boolean).join(`
|
|
1111
1111
|
|
|
1112
1112
|
`)||void 0}function Um(){return{modules:new Set,functions:new Set,texts:new Set}}function Dx(o){let e=[],t=[...o.modules].sort(Et),n=[...o.functions].sort(Et);return t.length>0&&e.push(`Discovery docs now available for modules: ${t.join(", ")}`),n.length>0&&e.push(`Discovery docs now available for functions: ${n.join(", ")}`),e.join(`
|
|
@@ -1120,13 +1120,13 @@ ${e}`:e}function Bx(){let o=new Map,e={nextNodeOrdinal:1,nodesById:o,rootNode:vo
|
|
|
1120
1120
|
|
|
1121
1121
|
Additional Judge Guidance:
|
|
1122
1122
|
${s}`:n);let i=Yd(t);return async({example:a,prediction:c})=>{let u=a,l=c,p={taskInput:ot(u.input),criteria:u.criteria,expectedOutput:u.expectedOutput,expectedActions:u.expectedActions,forbiddenActions:u.forbiddenActions,metadata:u.metadata},d={completionType:l.completionType,clarification:ot(l.clarification),finalOutput:ot(l.output),actionLog:l.actionLog,guidanceLog:l.guidanceLog,functionCalls:ot(l.functionCalls),toolErrors:l.toolErrors,turnCount:l.turnCount,usage:ot(l.usage??[]),recursiveTrace:ot(l.recursiveTrace),recursiveStats:ot(l.recursiveStats)},g=await r.forward(e,{...p,...d},i);return Zd(Xd(g.quality),u,l)}}async _forwardForEvaluation(e,t,n){let r=this.state?In(this.state):void 0,s=this.stateError,i=Si(this.currentDiscoveryPromptState);this.state=void 0,this.stateError=void 0,this.currentDiscoveryPromptState=Qc();let a=new AbortController;this._stopRequested&&a.abort("Stopped by user (pre-forward)");let c=_t(a.signal,n?.abortSignal);this.activeAbortControllers.add(a);let u=this._ensureLlmQueryBudgetState(),l=this.recursiveEvalContext,p=this.currentRecursiveTraceNodeId,d=this._supportsRecursiveActorSlotOptimization()?Bx():void 0;this.recursiveEvalContext=d?{collector:d,depth:0}:void 0,this.currentRecursiveTraceNodeId=void 0;try{let g=this.ai??e,m=n?.debug??this.debug??g?.getOptions()?.debug??!1,f=[],h=[],{node:x,usageBefore:A}=this._beginRecursiveTraceCapture(t.input),{nonContextValues:y,actorResult:C,actorFieldValues:R,guidanceLog:I,actionLog:M,turnCount:F}=await this._runActorLoop(g,t.input,n,c,f,h),P=f.filter(k=>!!k.error).map(k=>`${k.qualifiedName}: ${k.error??"unknown error"}`);if(C.type==="askClarification"){this._finalizeRecursiveTraceCapture(x,A,h,f,C);let k=d?.rootNode?Ai(Yc(d.rootNode)):void 0,_=k?Ec(k):void 0,$=k&&_?Mc(k,_):void 0;return{completionType:"askClarification",clarification:Lc(C.args[0]),guidanceLog:I,actionLog:M,functionCalls:f,toolErrors:P,turnCount:F,recursiveTrace:k,recursiveStats:_,recursiveSummary:$}}let N={...this._genOptions,...this.responderForwardOptions,...n,debug:m,abortSignal:c,maxSteps:1},T=await this.responderProgram.forward(g,{...y,contextData:C},N);this._finalizeRecursiveTraceCapture(x,A,h,f,C);let E=d?.rootNode?Ai(Yc(d.rootNode)):void 0,O=E?Ec(E):void 0,S=E&&O?Mc(E,O):void 0;return{completionType:"final",output:{...T,...R},guidanceLog:I,actionLog:M,functionCalls:f,toolErrors:P,turnCount:F,recursiveTrace:E,recursiveStats:O,recursiveSummary:S}}finally{this.state=r?In(r):void 0,this.stateError=s,this.currentDiscoveryPromptState=Po(i),this.recursiveEvalContext=l,this.currentRecursiveTraceNodeId=p,u&&(this.llmQueryBudgetState=void 0),this.activeAbortControllers.delete(a),this._stopRequested=!1}}getFunction(){if(!this.func)throw new Error("getFunction() requires agentIdentity to be set in the constructor");let e=this.forward.bind(this);return{...this.func,func:async(r,s)=>{let i=this.ai??s?.ai;if(!i)throw new Error("AI service is required to run the agent");let a=await e(i,r,s),u=this.program.getSignature().getOutputFields();return Object.keys(a).map(p=>{let d=u.find(g=>g.name===p);return d?`${d.title}: ${a[p]}`:`${p}: ${a[p]}`}).join(`
|
|
1123
|
-
`)}}}getExcludedSharedFields(){return this.excludedSharedFields}_getBypassedSharedFieldNames(){let e=new Set([...this.sharedFieldNames,...this.globalSharedFieldNames]);for(let t of this.localFieldNames)e.delete(t);return e}_createRuntimeInputState(e,t){let n;Array.isArray(e)?n=e.filter(h=>h.role==="user").reduce((h,x)=>({...h,...x.values}),{}):n=e;let r=t?.allowedFieldNames?new Set(t.allowedFieldNames):void 0;if(r&&t?.validateInputKeys){for(let h of Object.keys(n))if(!r.has(h))throw new Error(`AxAgent.test() only accepts context field values. "${h}" is not configured in contextFields.`)}let s={...n},i=r?new Set(r):new Set(this.program.getSignature().getInputFields().map(h=>h.name)),a=[...this.sharedFieldNames,...this.globalSharedFieldNames],c=this._getBypassedSharedFieldNames(),u={},l={},p={},d={},g,m=new Set(this.program.getSignature().getInputFields().filter(h=>this.rlmConfig.contextFields.includes(h.name)&&h.isOptional).map(h=>h.name));return{currentInputs:s,signatureInputFieldNames:i,sharedFieldValues:u,recomputeTurnInputs:h=>{let x={},A={};for(let[C,R]of Object.entries(s))this.rlmConfig.contextFields.includes(C)?x[C]=R:c.has(C)||(A[C]=R);if(h){for(let C of this.rlmConfig.contextFields)if(!m.has(C)&&(!(C in x)||x[C]===void 0))throw new Error(`RLM contextField "${C}" is missing from input values`)}let y={};for(let[C,R]of this.contextPromptConfigByField){if(c.has(C)||!(C in x))continue;let I=Am(x[C],R);I!==void 0&&(y[C]=I)}l=x,p=A,d=y;for(let C of Object.keys(u))delete u[C];for(let C of a)C in s&&(u[C]=s[C]),C in l&&(u[C]=l[C]);g=bm(l,{promptConfigByField:this.contextPromptConfigByField,inlinedFields:new Set(Object.keys(d))})||void 0},getNonContextValues:()=>p,getActorInlineContextValues:()=>d,getContextMetadata:()=>g}}_ensureLlmQueryBudgetState(){if(this.llmQueryBudgetState)return!1;let e=this.rlmConfig.maxSubAgentCalls??100;return this.llmQueryBudgetState={global:{used:0},globalMax:e,localUsed:0,localMax:e},!0}_createRuntimeExecutionContext({ai:e,inputState:t,options:n,effectiveAbortSignal:r,debug:s,completionState:i,guidanceState:a,completionBindings:c,actionLogEntries:u,functionCallRecorder:l}){let p=this.rlmConfig,d=this.runtime,g=p.maxSubAgentCalls??100,m=p.maxSubAgentCallsPerChild??50,f=Math.max(1,p.maxBatchedLlmQueryConcurrency??8),h=this.recursionForwardOptions?.maxDepth??2,x=Math.max(0,h),A=yi(p.contextPolicy,p.summarizerOptions,p.maxRuntimeChars),y=A.maxRuntimeChars,C=()=>nm(u??[],A.targetPromptChars,y),R=this.llmQueryBudgetState??{global:{used:0},globalMax:g,localUsed:0,localMax:g},I=new Set,M=Math.floor(R.localMax*.8),{maxDepth:F,...P}=this.recursionForwardOptions??{},{description:N,mem:T,sessionId:E,...O}=n??{},S={...this.recursionForwardOptions??{},maxDepth:Math.max(0,x-1)},k=V().input("task",V.string("Task for recursive analysis")).output("answer",V.string("Answer from recursive analysis")).build(),_=V().input("task",V.string("Task for recursive analysis")).input("context",V.json("Optional context for the recursive task").optional()).output("answer",V.string("Answer from recursive analysis")).build(),B=(p.mode??"simple")==="advanced"&&x>0,U=()=>(()=>{let G=new o({agentModuleNamespace:this.agentModuleNamespace,signature:k},{debug:s,...p,agents:{local:this.agents},functions:{local:this.agentFunctions,discovery:this.functionDiscoveryEnabled},contextFields:[],actorFields:void 0,actorModelPolicy:this.options?.actorModelPolicy,bubbleErrors:this.bubbleErrors,recursionOptions:S,actorOptions:{...this.actorForwardOptions},responderOptions:this.responderForwardOptions});return G.recursiveInstructionRoleOverride=S.maxDepth&&S.maxDepth>0?"recursive":"terminal",this._copyRecursiveOptimizationStateTo(G),G})(),ee=G=>{if(G.llmQueryBudgetState={global:R.global,globalMax:R.globalMax,localUsed:0,localMax:m},S.inheritDiscovery!==!1){let Z=Si(this.currentDiscoveryPromptState);Z&&(G.currentDiscoveryPromptState=Po(Z))}return this.recursiveEvalContext&&(G.recursiveEvalContext={collector:this.recursiveEvalContext.collector,parentNodeId:this.currentRecursiveTraceNodeId,depth:this.recursiveEvalContext.depth+1}),G},D=()=>{for(let G of[...I])G.stop()},ne=()=>new Be(_,S),J=async(G,Z)=>{if(!Array.isArray(G)&&typeof G=="object"&&G!==null&&"query"in G)return J(G.query,G.context??Z);if(r?.aborted)throw new Ge("rlm-llm-query",r.reason?String(r.reason):"Aborted");if(!e)throw new Error(cm);let ae=G,Re=de=>{if(de==null)return"";let Fe=C();if(typeof de=="string")return
|
|
1124
|
-
[WARNING] ${R.localUsed}/${R.localMax} sub-queries used (${de} remaining). Consolidate remaining work.`}return ie},q=new Set,z=Um(),j=G=>{for(let Z of G){let ae=Z.trim();ae&&q.add(ae)}},X=(G,Z)=>{for(let ae of G){let Re=ae.trim(),W=Z[ae]??Z[Re];W&&(this.currentDiscoveryPromptState.modules.set(Re,W),z.modules.add(Re),z.texts.add(W))}},oe=(G,Z)=>{for(let ae of G){let Re=Mo(ae),W=Z[ae]??Z[Re];W&&(this.currentDiscoveryPromptState.functions.set(Re,W),z.functions.add(Re),z.texts.add(W))}},K=()=>{let G=Dx(z),Z=[...z.texts];return z=Um(),{...G?{summary:G}:{},texts:Z}},le=this.buildRuntimeGlobals(r,t.sharedFieldValues,e,c.protocolForTrigger,l,j,X,oe),Se=[...new Set(this.agentFunctions.map(G=>G.namespace??"utils"))],Oe={...t.currentInputs},te=new Set(["inputs","llmQuery",wo,this.agentModuleNamespace,"final","askClarification",...this.agentStatusCallback?["success","failed"]:[],...Se,...A.stateInspection.enabled?["inspect_runtime"]:[],...Object.keys(le)]),pe=[...new Set([...Object.keys(Oe),...t.signatureInputFieldNames])].filter(G=>!te.has(G)),xe={};for(let G of pe)xe[G]=Oe[G];let se=()=>{for(let G of Object.keys(Oe))delete Oe[G];for(let[G,Z]of Object.entries(t.currentInputs))Oe[G]=Z;for(let G of pe)xe[G]=t.currentInputs[G]},Ee=[...te],Te=[...te,...pe],$e=new Set(Te),me=this.runtimeBootstrapContext;this.runtimeBootstrapContext=void 0;let De=lm(me,$e),Ae=new Set(Object.keys(De)),Pe=u??[],Ie,ye,ce=G=>typeof G.inspectGlobals=="function"?G:void 0,_e=async()=>{try{let G=await Ie.execute(Sd(),{signal:r,reservedNames:Te});if(typeof G!="string")return[];let Z=JSON.parse(G);return Array.isArray(Z)?Z.filter(ae=>typeof ae=="string"&&!Ae.has(ae)):[]}catch{return[]}},Ye=async()=>(ye||(ye=await _e()),ye),Ke=async()=>{try{let G=ce(Ie);if(G?.inspectGlobals)return await G.inspectGlobals({signal:r,reservedNames:Te});let Z=await Ye(),ae=vd(Te,Z),Re=await Ie.execute(ae,{signal:r,reservedNames:Te});return typeof Re=="string"?Re:String(Re)}catch(G){return`[inspect_runtime error: ${G instanceof Error?G.message:String(G)}]`}},tt=(G,Z)=>{let ae=mm(G);if(!ae)return fm(G,Z);let Re=gi(Pe);return Ii(ae,Re,Z)},ge=A.stateInspection.enabled?async()=>tt(await Ke()):void 0,Ne=()=>(ye=void 0,d.createSession({...xe,inputs:Oe,...De,llmQuery:J,final:c.finalFunction,askClarification:c.askClarificationFunction,...ge?{inspect_runtime:ge}:{},...this.agentStatusCallback?{success:async G=>{await this.agentStatusCallback(G,"success")},failed:async G=>{await this.agentStatusCallback(G,"failed")}}:{},...le},{shouldBubbleError:G=>G instanceof
|
|
1125
|
-
${kr(ae,W)}`,W),isError:!0}}if(zc(ae))try{Ie=Ne(),i.payload=void 0;let W=await Ie.execute(G,{signal:r,reservedNames:Ee}),ie=C();return{result:W,output:
|
|
1126
|
-
${Eo(W,ie)}`,ie),isError:!1}}catch(W){if(W instanceof
|
|
1127
|
-
${kr(W,ie)}`,ie),isError:!0}}let Re=C();return{result:void 0,output:
|
|
1123
|
+
`)}}}getExcludedSharedFields(){return this.excludedSharedFields}_getBypassedSharedFieldNames(){let e=new Set([...this.sharedFieldNames,...this.globalSharedFieldNames]);for(let t of this.localFieldNames)e.delete(t);return e}_createRuntimeInputState(e,t){let n;Array.isArray(e)?n=e.filter(h=>h.role==="user").reduce((h,x)=>({...h,...x.values}),{}):n=e;let r=t?.allowedFieldNames?new Set(t.allowedFieldNames):void 0;if(r&&t?.validateInputKeys){for(let h of Object.keys(n))if(!r.has(h))throw new Error(`AxAgent.test() only accepts context field values. "${h}" is not configured in contextFields.`)}let s={...n},i=r?new Set(r):new Set(this.program.getSignature().getInputFields().map(h=>h.name)),a=[...this.sharedFieldNames,...this.globalSharedFieldNames],c=this._getBypassedSharedFieldNames(),u={},l={},p={},d={},g,m=new Set(this.program.getSignature().getInputFields().filter(h=>this.rlmConfig.contextFields.includes(h.name)&&h.isOptional).map(h=>h.name));return{currentInputs:s,signatureInputFieldNames:i,sharedFieldValues:u,recomputeTurnInputs:h=>{let x={},A={};for(let[C,R]of Object.entries(s))this.rlmConfig.contextFields.includes(C)?x[C]=R:c.has(C)||(A[C]=R);if(h){for(let C of this.rlmConfig.contextFields)if(!m.has(C)&&(!(C in x)||x[C]===void 0))throw new Error(`RLM contextField "${C}" is missing from input values`)}let y={};for(let[C,R]of this.contextPromptConfigByField){if(c.has(C)||!(C in x))continue;let I=Am(x[C],R);I!==void 0&&(y[C]=I)}l=x,p=A,d=y;for(let C of Object.keys(u))delete u[C];for(let C of a)C in s&&(u[C]=s[C]),C in l&&(u[C]=l[C]);g=bm(l,{promptConfigByField:this.contextPromptConfigByField,inlinedFields:new Set(Object.keys(d))})||void 0},getNonContextValues:()=>p,getActorInlineContextValues:()=>d,getContextMetadata:()=>g}}_ensureLlmQueryBudgetState(){if(this.llmQueryBudgetState)return!1;let e=this.rlmConfig.maxSubAgentCalls??100;return this.llmQueryBudgetState={global:{used:0},globalMax:e,localUsed:0,localMax:e},!0}_createRuntimeExecutionContext({ai:e,inputState:t,options:n,effectiveAbortSignal:r,debug:s,completionState:i,guidanceState:a,completionBindings:c,actionLogEntries:u,functionCallRecorder:l}){let p=this.rlmConfig,d=this.runtime,g=p.maxSubAgentCalls??100,m=p.maxSubAgentCallsPerChild??50,f=Math.max(1,p.maxBatchedLlmQueryConcurrency??8),h=this.recursionForwardOptions?.maxDepth??2,x=Math.max(0,h),A=yi(p.contextPolicy,p.summarizerOptions,p.maxRuntimeChars),y=A.maxRuntimeChars,C=()=>nm(u??[],A.targetPromptChars,y),R=this.llmQueryBudgetState??{global:{used:0},globalMax:g,localUsed:0,localMax:g},I=new Set,M=Math.floor(R.localMax*.8),{maxDepth:F,...P}=this.recursionForwardOptions??{},{description:N,mem:T,sessionId:E,...O}=n??{},S={...this.recursionForwardOptions??{},maxDepth:Math.max(0,x-1)},k=V().input("task",V.string("Task for recursive analysis")).output("answer",V.string("Answer from recursive analysis")).build(),_=V().input("task",V.string("Task for recursive analysis")).input("context",V.json("Optional context for the recursive task").optional()).output("answer",V.string("Answer from recursive analysis")).build(),B=(p.mode??"simple")==="advanced"&&x>0,U=()=>(()=>{let G=new o({agentModuleNamespace:this.agentModuleNamespace,signature:k},{debug:s,...p,agents:{local:this.agents},functions:{local:this.agentFunctions,discovery:this.functionDiscoveryEnabled},contextFields:[],actorFields:void 0,actorModelPolicy:this.options?.actorModelPolicy,bubbleErrors:this.bubbleErrors,recursionOptions:S,actorOptions:{...this.actorForwardOptions},responderOptions:this.responderForwardOptions});return G.recursiveInstructionRoleOverride=S.maxDepth&&S.maxDepth>0?"recursive":"terminal",this._copyRecursiveOptimizationStateTo(G),G})(),ee=G=>{if(G.llmQueryBudgetState={global:R.global,globalMax:R.globalMax,localUsed:0,localMax:m},S.inheritDiscovery!==!1){let Z=Si(this.currentDiscoveryPromptState);Z&&(G.currentDiscoveryPromptState=Po(Z))}return this.recursiveEvalContext&&(G.recursiveEvalContext={collector:this.recursiveEvalContext.collector,parentNodeId:this.currentRecursiveTraceNodeId,depth:this.recursiveEvalContext.depth+1}),G},D=()=>{for(let G of[...I])G.stop()},ne=()=>new Be(_,S),J=async(G,Z)=>{if(!Array.isArray(G)&&typeof G=="object"&&G!==null&&"query"in G)return J(G.query,G.context??Z);if(r?.aborted)throw new Ge("rlm-llm-query",r.reason?String(r.reason):"Aborted");if(!e)throw new Error(cm);let ae=G,Re=de=>{if(de==null)return"";let Fe=C();if(typeof de=="string")return At(de,Fe);try{return At(JSON.stringify(de),Fe)}catch{return At(String(de),Fe)}},W=async(de,Fe,Me=r)=>{if(Me?.aborted)throw new Ge("rlm-llm-query",Me.reason?String(Me.reason):"Aborted");let Tt=Fe!==void 0&&(Fe===null||typeof Fe=="string"&&!Fe.trim()||typeof Fe=="object"&&Object.keys(Fe).length===0),qt=Fe===void 0||Tt?void 0:typeof Fe=="string"?At(Fe,C()):Fe;if(R.global.used>=R.globalMax)return`[ERROR] Global sub-query budget exhausted (${R.globalMax}/${R.globalMax}). Complete the task using data already gathered or handle remaining work directly in JS.`;if(R.localUsed>=R.localMax)return`[ERROR] Per-agent sub-query budget exhausted (${R.localMax}/${R.localMax}). Complete the task using data already gathered or handle remaining work directly in JS.`;R.global.used++,R.localUsed++;let st=3,_o,No=we=>`[ERROR] ${we instanceof Error?we.message:String(we)}. Retry with a simpler query, handle in JS, or proceed with data already gathered.`;for(let we=0;we<st;we++)try{if(!B||Tt){let pt=ne(),Zt=await pt.forward(e,{task:de,...qt!==void 0?{context:qt}:{}},{...O,...P,abortSignal:Me,debug:s});return this._recordEphemeralRecursiveUsage(xi(pt.getUsage())),Re(Zt.answer)}let je=await(()=>{let pt=ee(U());return I.add(pt),pt.runtimeBootstrapContext=qt,pt.forward(e,{task:de},{...O,...P,abortSignal:Me,debug:s}).finally(()=>{I.delete(pt)})})();return Re(je.answer)}catch(je){if(je instanceof Ge||je instanceof lt||this.shouldBubbleUserError(je))throw je;if(_o=je,!dm(je)||we>=st-1)return No(je);let pt=Math.min(6e4,1e3*Math.pow(2,we));await new Promise((Zt,yt)=>{let Rn=!1,Or,Xc=()=>{Me&&Or&&Me.removeEventListener("abort",Or)},jm=setTimeout(()=>{Rn||(Rn=!0,Xc(),Zt())},pt);if(Me){if(Or=()=>{Rn||(Rn=!0,clearTimeout(jm),Xc(),yt(new Ge("rlm-llm-query-retry-backoff",Me.reason?String(Me.reason):"Aborted during retry backoff")))},Me.aborted){Or();return}Me.addEventListener("abort",Or,{once:!0})}})}return No(_o)};if(Array.isArray(G)){let de=new AbortController,Fe=_t(r,de.signal)??de.signal,Me,Tt=()=>{D()};Fe.addEventListener("abort",Tt,{once:!0});try{return await Cm(G,f,async qt=>{try{return await W(qt.query,qt.context,Fe)}catch(st){if(st instanceof Ge||st instanceof lt)throw(st instanceof lt||!Me)&&(Me=st),de.signal.aborted||de.abort(st instanceof lt?"Child clarification":st.message),Me;if(this.shouldBubbleUserError(st))throw de.signal.aborted||de.abort("User bubble error"),st;return`[ERROR] ${st instanceof Error?st.message:String(st)}`}},Fe)}finally{Fe.removeEventListener("abort",Tt)}}let ie=await W(ae,Z);if(R.localUsed===M){let de=R.localMax-R.localUsed;return`${ie}
|
|
1124
|
+
[WARNING] ${R.localUsed}/${R.localMax} sub-queries used (${de} remaining). Consolidate remaining work.`}return ie},q=new Set,z=Um(),j=G=>{for(let Z of G){let ae=Z.trim();ae&&q.add(ae)}},X=(G,Z)=>{for(let ae of G){let Re=ae.trim(),W=Z[ae]??Z[Re];W&&(this.currentDiscoveryPromptState.modules.set(Re,W),z.modules.add(Re),z.texts.add(W))}},oe=(G,Z)=>{for(let ae of G){let Re=Mo(ae),W=Z[ae]??Z[Re];W&&(this.currentDiscoveryPromptState.functions.set(Re,W),z.functions.add(Re),z.texts.add(W))}},K=()=>{let G=Dx(z),Z=[...z.texts];return z=Um(),{...G?{summary:G}:{},texts:Z}},le=this.buildRuntimeGlobals(r,t.sharedFieldValues,e,c.protocolForTrigger,l,j,X,oe),Se=[...new Set(this.agentFunctions.map(G=>G.namespace??"utils"))],Oe={...t.currentInputs},te=new Set(["inputs","llmQuery",wo,this.agentModuleNamespace,"final","askClarification",...this.agentStatusCallback?["success","failed"]:[],...Se,...A.stateInspection.enabled?["inspect_runtime"]:[],...Object.keys(le)]),pe=[...new Set([...Object.keys(Oe),...t.signatureInputFieldNames])].filter(G=>!te.has(G)),xe={};for(let G of pe)xe[G]=Oe[G];let se=()=>{for(let G of Object.keys(Oe))delete Oe[G];for(let[G,Z]of Object.entries(t.currentInputs))Oe[G]=Z;for(let G of pe)xe[G]=t.currentInputs[G]},Ee=[...te],Te=[...te,...pe],$e=new Set(Te),me=this.runtimeBootstrapContext;this.runtimeBootstrapContext=void 0;let De=lm(me,$e),Ae=new Set(Object.keys(De)),Pe=u??[],Ie,ye,ce=G=>typeof G.inspectGlobals=="function"?G:void 0,_e=async()=>{try{let G=await Ie.execute(Sd(),{signal:r,reservedNames:Te});if(typeof G!="string")return[];let Z=JSON.parse(G);return Array.isArray(Z)?Z.filter(ae=>typeof ae=="string"&&!Ae.has(ae)):[]}catch{return[]}},Ye=async()=>(ye||(ye=await _e()),ye),Ke=async()=>{try{let G=ce(Ie);if(G?.inspectGlobals)return await G.inspectGlobals({signal:r,reservedNames:Te});let Z=await Ye(),ae=vd(Te,Z),Re=await Ie.execute(ae,{signal:r,reservedNames:Te});return typeof Re=="string"?Re:String(Re)}catch(G){return`[inspect_runtime error: ${G instanceof Error?G.message:String(G)}]`}},tt=(G,Z)=>{let ae=mm(G);if(!ae)return fm(G,Z);let Re=gi(Pe);return Ii(ae,Re,Z)},ge=A.stateInspection.enabled?async()=>tt(await Ke()):void 0,Ne=()=>(ye=void 0,d.createSession({...xe,inputs:Oe,...De,llmQuery:J,final:c.finalFunction,askClarification:c.askClarificationFunction,...ge?{inspect_runtime:ge}:{},...this.agentStatusCallback?{success:async G=>{await this.agentStatusCallback(G,"success")},failed:async G=>{await this.agentStatusCallback(G,"failed")}}:{},...le},{shouldBubbleError:G=>G instanceof lt||G instanceof Ge||this.shouldBubbleUserError(G)}));Ie=Ne();let b=()=>({maxEntries:A.stateSummary.maxEntries&&A.stateSummary.maxEntries>0?A.stateSummary.maxEntries:8,maxChars:A.stateSummary.maxChars&&A.stateSummary.maxChars>0?A.stateSummary.maxChars:void 0}),w=()=>({maxEntries:A.stateSummary.maxEntries&&A.stateSummary.maxEntries>0?A.stateSummary.maxEntries:6,maxChars:A.stateSummary.maxChars&&A.stateSummary.maxChars>0?A.stateSummary.maxChars:Math.min(y,1200)}),L=Object.keys(De).length>0?pm(De,{...w(),budgetRemaining:Math.max(0,R.localMax-R.localUsed),budgetTotal:R.localMax}):void 0,v=async()=>{if(!i.payload)for(let G=0;G<3&&!i.payload;G++)await new Promise(Z=>{setTimeout(Z,0)})},H=async()=>{if(!A.stateSummary.enabled)return;let G=await Ke();return tt(G,b())||"(no user variables)"},Y=G=>{if(typeof G.patchGlobals!="function")throw new Error("AxCodeSession.patchGlobals() is required when restoring AxAgent state or using inputUpdateCallback");return G},Q=G=>{if(typeof G.snapshotGlobals!="function")throw new Error("AxCodeSession.snapshotGlobals() is required to export AxAgent state");return G},re=G=>{let Z=new Set(Te),ae={};for(let[W,ie]of Object.entries(G.runtimeBindings??{}))Z.has(W)||(ae[W]=ie);let Re=(G.runtimeEntries??[]).filter(W=>!Z.has(W.name));return{runtimeBindings:ae,runtimeEntries:Re,actionLogEntries:Mm(G.actionLogEntries),guidanceLogEntries:(G.guidanceLogEntries??[]).map(W=>({turn:W.turn,guidance:W.guidance,...W.triggeredBy?{triggeredBy:W.triggeredBy}:{}})),checkpointState:G.checkpointState,discoveryPromptState:G.discoveryPromptState,provenance:{...G.provenance??{}},actorModelState:Dd(G.actorModelState)}};return{effectiveContextConfig:A,bootstrapContextSummary:L,applyBootstrapRuntimeContext:async()=>{if(Object.keys(De).length===0||!A.stateSummary.enabled)return;let G=await Ke();return tt(G,b())||"(no user variables)"},captureRuntimeStateSummary:H,consumeDiscoveryTurnArtifacts:K,getActorModelMatchedNamespaces:()=>[...q],exportRuntimeState:async()=>{let Z=await Q(Ie).snapshotGlobals({signal:r,reservedNames:Te}),ae=gi(Pe);return{version:1,runtimeBindings:Z.bindings,runtimeEntries:Z.entries,actionLogEntries:Em(Pe),...a.entries.length>0?{guidanceLogEntries:a.entries.map(Re=>({turn:Re.turn,guidance:Re.guidance,...Re.triggeredBy?{triggeredBy:Re.triggeredBy}:{}}))}:{},...Si(this.currentDiscoveryPromptState)?{discoveryPromptState:Si(this.currentDiscoveryPromptState)}:{},provenance:Pm(ae)}},restoreRuntimeState:async G=>{let Z=re(G);return await Y(Ie).patchGlobals(Z.runtimeBindings,{signal:r}),this.currentDiscoveryPromptState=Po(Z.discoveryPromptState),Z},syncRuntimeInputsToSession:async()=>{se();let G=async Z=>{await Y(Z).patchGlobals({inputs:{...Oe},...xe},{signal:r})};try{await G(Ie)}catch(Z){if(r?.aborted)throw new Ge("rlm-session",r.reason??"Aborted");if(Z instanceof Error&&(Z.name==="AbortError"||Z.message.startsWith("Aborted")))throw Z;if(zc(Z)){Ie=Ne(),await G(Ie);return}throw new Error(`Failed to sync runtime inputs: ${kr(Z,C())}`)}},executeActorCode:async G=>{let Z={result:void 0,output:Eo(void 0,C()),isError:!1};try{let ae=await Ie.execute(G,{signal:r,reservedNames:Ee});return i.payload||Ri(G)&&jc(ae)&&(await v(),i.payload)?Z:{result:ae,output:Eo(ae,C()),isError:!1}}catch(ae){if(ae instanceof ht||i.payload)return Z;if(ae instanceof lt||ae instanceof Ge||this.shouldBubbleUserError(ae))throw ae;if(r?.aborted)throw new Ge("rlm-session",r.reason??"Aborted");if(ae instanceof Error&&(ae.name==="AbortError"||ae.message.startsWith("Aborted")))throw ae;if(hm(ae)){let W=C();return{result:void 0,output:At(`${Oo}
|
|
1125
|
+
${kr(ae,W)}`,W),isError:!0}}if(zc(ae))try{Ie=Ne(),i.payload=void 0;let W=await Ie.execute(G,{signal:r,reservedNames:Ee}),ie=C();return{result:W,output:At(`${Oo}
|
|
1126
|
+
${Eo(W,ie)}`,ie),isError:!1}}catch(W){if(W instanceof lt||W instanceof Ge||this.shouldBubbleUserError(W))throw W;let ie=C();return{result:void 0,output:At(`${Oo}
|
|
1127
|
+
${kr(W,ie)}`,ie),isError:!0}}let Re=C();return{result:void 0,output:At(kr(ae,Re),Re),isError:!0}}},executeTestCode:async G=>{let Z=()=>{if(!i.payload)throw new Error("Expected completion payload");return i.payload.type==="guide_agent"?Dm(i.payload):i.payload};try{let ae=await Ie.execute(G,{signal:r,reservedNames:Ee});if(Ri(G)&&jc(ae)&&await v(),i.payload)return Z();let Re=Eo(ae,C());if(xm(Re))throw new Error(Re);return Re}catch(ae){if((ae instanceof ht||i.payload)&&i.payload)return Z();throw ae}},close:()=>{Ie.close()}}}getExcludedAgents(){return this.excludedAgents}getExcludedAgentFunctions(){return this.excludedAgentFunctions}getSignature(){return this.program.getSignature()}async test(e,t,n){let r=this.ai??n?.ai,s=n?.debug??this.debug??r?.getOptions()?.debug??!1,i=this._createRuntimeInputState(t??{},{allowedFieldNames:this.rlmConfig.contextFields,validateInputKeys:!0});i.recomputeTurnInputs(!1),this.currentDiscoveryPromptState=Po(this.state?.discoveryPromptState);let a={payload:void 0},c={entries:[]},u=Nc(d=>{a.payload=d},this.agentStatusCallback),l=this._ensureLlmQueryBudgetState(),p=this._createRuntimeExecutionContext({ai:r,inputState:i,options:void 0,effectiveAbortSignal:n?.abortSignal,debug:s,completionState:a,guidanceState:c,completionBindings:u,actionLogEntries:[]});try{return await p.executeTestCode(e)}finally{this.currentRecursiveTraceNodeId=void 0,l&&(this.llmQueryBudgetState=void 0),p.close()}}setSignature(e){let t=new Ve(e);this._validateConfiguredSignature(t);let n=this.program.getSignature();try{this.program.setSignature(t),this._buildSplitPrograms(),this.func&&(this.func.parameters=this._buildFuncParameters())}catch(r){throw this.program.setSignature(n),this._buildSplitPrograms(),this.func&&(this.func.parameters=this._buildFuncParameters()),r}}applyOptimization(e){let t=e?.instructionSchema,n=e?.artifactFormatVersion;if(t&&t!==Io)throw new Error(`AxAgent.applyOptimization(): unsupported instruction schema "${t}".`);if(t===Io&&n!==void 0&&n!==1)throw new Error(`AxAgent.applyOptimization(): unsupported recursive artifact format version "${String(n)}".`);let r=e?.instructionMap??{},s=[he.shared,he.root,he.recursive,he.terminal].some(i=>typeof r[i]=="string");if(t===Io){if(!this._supportsRecursiveActorSlotOptimization())throw new Error('AxAgent.applyOptimization(): recursive-slot artifacts require mode "advanced" with recursion enabled.');(e?.demos||e?.modelConfig)&&this.program.setDemos(e.demos??[],{modelConfig:e.modelConfig}),this.recursiveInstructionSlots=Rr(this.actorDescription);for(let a of[he.shared,he.root,he.recursive,he.terminal])typeof r[a]=="string"&&(this.recursiveInstructionSlots[a]=r[a]??"");this._applyRecursiveActorInstruction();let i=r[he.responder];typeof i=="string"&&this.responderProgram.setInstruction(i);return}if(this._supportsRecursiveActorSlotOptimization()&&!s){(e?.demos||e?.modelConfig)&&this.program.setDemos(e.demos??[],{modelConfig:e.modelConfig}),this.recursiveInstructionSlots=Rr(this.actorDescription);let i=r["root.actor"]??e?.instruction;typeof i=="string"&&(this.recursiveInstructionSlots[he.shared]=i),this._applyRecursiveActorInstruction();let a=r["root.responder"];typeof a=="string"?this.responderProgram.setInstruction(a):typeof e?.instruction=="string"&&this.responderProgram.setInstruction(e.instruction);return}if(s){if(!this._supportsRecursiveActorSlotOptimization())throw new Error('AxAgent.applyOptimization(): recursive-slot instruction maps require mode "advanced" with recursion enabled.');this.recursiveInstructionSlots=Rr(this.actorDescription);for(let a of[he.shared,he.root,he.recursive,he.terminal])typeof r[a]=="string"&&(this.recursiveInstructionSlots[a]=r[a]??"");this._applyRecursiveActorInstruction();let i=r[he.responder];typeof i=="string"&&this.responderProgram.setInstruction(i),(e?.demos||e?.modelConfig)&&this.program.setDemos(e.demos??[],{modelConfig:e.modelConfig});return}this.program.applyOptimization?.(e)}async _runActorLoop(e,t,n,r,s,i){let a=this.rlmConfig,c=n?.debug??this.debug??e?.getOptions()?.debug??!1,u=a.maxTurns??8,l=this._createRuntimeInputState(t);l.recomputeTurnInputs(!1);let p={payload:void 0},d={entries:(this.state?.guidanceLogEntries??[]).map(z=>({turn:z.turn,guidance:z.guidance,...z.triggeredBy?{triggeredBy:z.triggeredBy}:{}}))},g=Nc(z=>{p.payload=z},this.agentStatusCallback),m=[],f,h=this._createRuntimeExecutionContext({ai:e,inputState:l,options:n,effectiveAbortSignal:r,debug:c,completionState:p,guidanceState:d,completionBindings:g,actionLogEntries:m,functionCallRecorder:s?z=>{s.push(z)}:void 0}),x=h.effectiveContextConfig.stateSummary.enabled?void 0:h.bootstrapContextSummary,A=async()=>{if(!this.inputUpdateCallback)return;let z=await this.inputUpdateCallback({...l.currentInputs});if(z!==void 0){if(!z||typeof z!="object"||Array.isArray(z))throw new Error("inputUpdateCallback must return an object patch or undefined");for(let[j,X]of Object.entries(z))l.signatureInputFieldNames.has(j)&&(l.currentInputs[j]=X)}},y={...this._genOptions,...this.actorForwardOptions,...n,debug:c,abortSignal:r},C=[n,this.actorForwardOptions,this._genOptions].find(z=>z!==void 0&&Object.hasOwn(z,"debugHideSystemPrompt"))?.debugHideSystemPrompt,R={},I=h.effectiveContextConfig.stateInspection.enabled?h.effectiveContextConfig.stateInspection.contextThreshold:void 0,M=um(n,c,r),F,P,N,T,E=h.effectiveContextConfig.actionReplay==="checkpointed"?"minimal":h.effectiveContextConfig.actionReplay,O=h.effectiveContextConfig.actionReplay==="checkpointed"?"full":h.effectiveContextConfig.actionReplay,S=()=>fi(m),k=()=>{let z=this._buildActorInstruction();return this.actorProgram.setDescription(z),this.actorProgram.clearInstruction(),z},_=(z,j,X)=>{let oe={...l.getNonContextValues(),...l.getActorInlineContextValues(),actionLog:z},K=l.getContextMetadata();return K&&(oe.contextMetadata=K),j&&(oe.guidanceLog=j),X&&(oe.liveRuntimeState=X),oe},$=(z,j,X)=>(k(),this.actorProgram._measurePromptCharsForInternalUse(e,_(z,j,X),y)),B=(z,j,X)=>Rd(S(),{actionReplay:z,recentFullActions:h.effectiveContextConfig.recentFullActions,restoreNotice:N,delegatedContextSummary:x,checkpointSummary:j,checkpointTurns:X})||"(no actions yet)",U=()=>B(h.effectiveContextConfig.actionReplay,F?.summary,F?.turns),ee=()=>{!this.actorModelPolicy&&!P||(P=Fc(P))},D=z=>{!this.actorModelPolicy&&!P||(P=Ud(P,z))},ne=()=>{let z=h.getActorModelMatchedNamespaces();z.length!==0&&(P=Gd(P,z))},J=async()=>{let z=te=>{let pe=(F?.fingerprint??null)!==(te?.fingerprint??null);return F=te,pe};if(!h.effectiveContextConfig.checkpoints.enabled)return z(void 0);let j=h.effectiveContextConfig.checkpoints.triggerChars,X=B(O),oe=await $(X,Jc(d.entries),f),K=oe.systemPromptCharacters+oe.exampleChatContextCharacters;if(!j||oe.mutableChatContextCharacters<=Pc(j,K))return z(void 0);let Se=kc(m,{actionReplay:E,recentFullActions:h.effectiveContextConfig.recentFullActions}).checkpointEntries;if(Se.length===0)return z(void 0);let Oe=JSON.stringify(Se.map(te=>({turn:te.turn,code:te.code,output:te.output,actorFieldsOutput:te.actorFieldsOutput,tags:te.tags,tombstone:te.tombstone})));return F?.fingerprint===Oe?!1:z({fingerprint:Oe,turns:Se.map(te=>te.turn),summary:await Id(e,h.effectiveContextConfig.summarizerOptions,M,Se)})};try{if(this.state){let j=await h.restoreRuntimeState(this.state),X=h.effectiveContextConfig.stateSummary.enabled;m.push(...j.actionLogEntries),F=j.checkpointState?{fingerprint:j.checkpointState.fingerprint,turns:[...j.checkpointState.turns],summary:j.checkpointState.summary}:void 0,P=j.actorModelState?{consecutiveErrorTurns:j.actorModelState.consecutiveErrorTurns,...Xt(j.actorModelState).length>0?{matchedNamespaces:Xt(j.actorModelState)}:{}}:void 0,d.entries=j.guidanceLogEntries.map(K=>({turn:K.turn,guidance:K.guidance,...K.triggeredBy?{triggeredBy:K.triggeredBy}:{}}));let oe=Nm(gi(m),_m(j.provenance));f=X?Ii(j.runtimeEntries,oe,{maxEntries:h.effectiveContextConfig.stateSummary.maxEntries&&h.effectiveContextConfig.stateSummary.maxEntries>0?h.effectiveContextConfig.stateSummary.maxEntries:8,maxChars:h.effectiveContextConfig.stateSummary.maxChars&&h.effectiveContextConfig.stateSummary.maxChars>0?h.effectiveContextConfig.stateSummary.maxChars:1200})||"(no user variables)":void 0,N=Fm(j.runtimeEntries,{includeLiveRuntimeState:X})}let z=await h.applyBootstrapRuntimeContext();z!==void 0&&(f=z);for(let j=0;j<u;j++){let X=k();await A(),l.recomputeTurnInputs(!0),await J()&&ee();let K=U(),le=Jc(d.entries),Se=await $(K,le,f),Oe=Se.systemPromptCharacters+Se.exampleChatContextCharacters;I&&Se.mutableChatContextCharacters>Pc(I,Oe)&&(K+="\n\n[HINT: Actor prompt is large. Call `const state = await inspect_runtime()` for a compact snapshot of current variables instead of re-reading old outputs.]");let te=y;if(this.actorModelPolicy){ne();let ge=Bd(this.actorModelPolicy,bi(P),Xt(P));te=ge!==void 0?{...y,model:ge}:y}let pe=C??(j>0&&X===T);te={...te,debugHideSystemPrompt:pe};let xe=this.actorProgram.getUsage()?.length??0,se=await this.actorProgram.forward(e,_(K,le,f),te);pe||(T=X);let Ee=a.actorTurnCallback?this.actorProgram.getUsage()?.slice(xe):void 0,Te=te.model!==void 0?String(te.model):void 0,$e=a.actorTurnCallback?Nx(this.actorProgram.getChatLog()):void 0;j===0&&(N=void 0);let me=se.javascriptCode,De=me?.trim();if(!me||!De)break;me=Jd(De),se.javascriptCode=me;for(let ge of this.actorFieldNames)ge in se&&(R[ge]=se[ge]);let Ae="";if(this.actorFieldNames.length>0){let ge=this.actorFieldNames.filter(Ne=>Ne in se).map(Ne=>`${Ne}: ${se[Ne]}`).join(`
|
|
1128
1128
|
`);ge&&(Ae=`
|
|
1129
1129
|
Actor fields:
|
|
1130
|
-
${ge}`)}if(p.payload=void 0,this.enforceIncrementalConsoleTurns){let ge=Im(me);if(ge?.autoSplitDiscoveryCode&&await h.executeActorCode(ge.autoSplitDiscoveryCode),ge?.violation){let Ne=ge.violation,b=m.length+1;m.push({turn:b,code:me,output:Ne,actorFieldsOutput:Ae,tags:["error"]}),i?.push({turn:b,code:me,output:Ne,isError:!0,thought:typeof se.thought=="string"?se.thought:void 0}),a.actorTurnCallback&&await a.actorTurnCallback({turn:b,actionLogEntryCount:m.length,guidanceLogEntryCount:d.entries.length,actorResult:se,code:me,result:void 0,output:Ne,isError:!0,thought:typeof se.thought=="string"?se.thought:void 0,usage:Ee,model:Te,chatLogMessages:$e}),await Sc(m,m.length-1,h.effectiveContextConfig,e,M),D(!0),await J()&&ee();continue}}this.inputUpdateCallback&&await h.syncRuntimeInputsToSession();let Pe,Ie,ye;try{let ge=await h.executeActorCode(me);Pe=ge.result,Ie=ge.output,ye=ge.isError}catch(ge){if(ge instanceof ut||ge instanceof Ge||this.shouldBubbleUserError(ge)){let Ne=ge instanceof Error?ge:new Error(String(ge));i?.push({turn:m.length+1,code:me,output:Gc(Ne,h.effectiveContextConfig.maxRuntimeChars),isError:ge instanceof Ge||this.shouldBubbleUserError(ge),thought:typeof se.thought=="string"?se.thought:void 0}),a.actorTurnCallback&&await a.actorTurnCallback({turn:m.length+1,actionLogEntryCount:m.length,guidanceLogEntryCount:d.entries.length,actorResult:se,code:me,result:void 0,output:Gc(Ne,h.effectiveContextConfig.maxRuntimeChars),isError:ge instanceof Ge||this.shouldBubbleUserError(ge),thought:typeof se.thought=="string"?se.thought:void 0,usage:Ee,model:Te,chatLogMessages:$e})}throw ge}let ce=p.payload,_e=ce?.type==="guide_agent"?ce:void 0;if(_e){let ge=m.length+1;d.entries.push({turn:ge,guidance:_e.guidance,..._e.triggeredBy?{triggeredBy:_e.triggeredBy}:{}}),Pe=void 0,Ie=Dm(_e),ye=!1}let Ye=h.consumeDiscoveryTurnArtifacts();ye||(Ie=Ux(Ie,Ye.texts),Ie=Gx(Ie,Ye.summary));let Ke=m.length+1,tt=_e?Lx(_e):me;if(m.push({turn:Ke,code:tt,output:Ie,actorFieldsOutput:Ae,tags:ye?["error"]:[]}),i?.push({turn:Ke,code:me,output:Ie,isError:ye,thought:typeof se.thought=="string"?se.thought:void 0}),a.actorTurnCallback&&await a.actorTurnCallback({turn:Ke,actionLogEntryCount:m.length,guidanceLogEntryCount:d.entries.length,actorResult:se,code:me,result:Pe,output:Ie,isError:ye,thought:typeof se.thought=="string"?se.thought:void 0,usage:Ee,model:Te,chatLogMessages:$e}),await Sc(m,m.length-1,h.effectiveContextConfig,e,M),ye||(f=await h.captureRuntimeStateSummary()),D(ye),await J()&&ee(),p.payload&&"guidance"in p.payload){p.payload=void 0;continue}if(p.payload)break}await J()&&ee();try{ne();let j=await h.exportRuntimeState();j.checkpointState=F?{fingerprint:F.fingerprint,turns:[...F.turns],summary:F.summary}:void 0,j.actorModelState=P?{consecutiveErrorTurns:P.consecutiveErrorTurns,...Xt(P).length>0?{matchedNamespaces:Xt(P)}:{}}:void 0,this.state=j,this.stateError=void 0}catch(j){this.state=void 0,this.stateError=j instanceof Error?j.message:`Failed to export AxAgent state: ${String(j)}`}}finally{try{h.close()}catch{}}let q=p.payload&&"args"in p.payload?p.payload:{type:"final",args:[wd(m,{stateSummary:f,checkpointSummary:F?.summary,checkpointTurns:F?.turns})]};return{nonContextValues:l.getNonContextValues(),contextMetadata:l.getContextMetadata(),guidanceLog:Jc(d.entries),actionLog:U(),actorResult:q,actorFieldValues:R,turnCount:m.length}}async forward(e,t,n){let r=new AbortController;this._stopRequested&&r.abort("Stopped by user (pre-forward)");let s=_t(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);let i=this._ensureLlmQueryBudgetState();try{let a=this.ai??e,c=n?.debug??this.debug??a?.getOptions()?.debug??!1,u=[],l=[],{node:p,usageBefore:d}=this._beginRecursiveTraceCapture(t),{nonContextValues:g,actorResult:m,actorFieldValues:f}=await this._runActorLoop(a,t,n,s,u,l);if(m.type==="askClarification")throw this._finalizeRecursiveTraceCapture(p,d,l,u,m),new ut(m.args[0],{state:this.state,stateError:this.stateError});let h={...this._genOptions,...this.responderForwardOptions,...n,debug:c,abortSignal:s,maxSteps:1},x=await this.responderProgram.forward(a,{...g,contextData:m},h);return this._finalizeRecursiveTraceCapture(p,d,l,u,m),{...x,...f}}finally{i&&(this.llmQueryBudgetState=void 0),this.activeAbortControllers.delete(r),this._stopRequested=!1}}async*streamingForward(e,t,n){let r=new AbortController;this._stopRequested&&r.abort("Stopped by user (pre-forward)");let s=_t(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);let i=this._ensureLlmQueryBudgetState();try{let a=this.ai??e,c=n?.debug??this.debug??a?.getOptions()?.debug??!1,{nonContextValues:u,actorResult:l,actorFieldValues:p}=await this._runActorLoop(a,t,n,s);if(l.type==="askClarification")throw new ut(l.args[0],{state:this.state,stateError:this.stateError});let d={...this._genOptions,...this.responderForwardOptions,...n,debug:c,abortSignal:s,maxSteps:1};for await(let g of this.responderProgram.streamingForward(a,{...u,contextData:l},d))yield g;Object.keys(p).length>0&&(yield{version:1,index:0,delta:p})}finally{i&&(this.llmQueryBudgetState=void 0),this.activeAbortControllers.delete(r),this._stopRequested=!1}}static wrapFunction(e,t,n,r,s,i){return async(...a)=>{let c;if(a.length===1&&typeof a[0]=="object"&&a[0]!==null&&!Array.isArray(a[0]))c=a[0];else{let p=e.parameters?.properties?Object.keys(e.parameters.properties):[];c={},p.forEach((d,g)=>{g<a.length&&(c[d]=a[g])})}let u=s??e.name,l=r?.(u);try{let p=await e.func(c,{abortSignal:t,ai:n,protocol:l});return i?.({qualifiedName:u,name:e.name,arguments:ot(c),result:ot(p)}),p}catch(p){throw p instanceof ft?(i?.({qualifiedName:u,name:e.name,arguments:ot(c)}),p):(i?.({qualifiedName:u,name:e.name,arguments:ot(c),error:p instanceof Error?p.message:String(p)}),p)}}}static wrapFunctionWithSharedFields(e,t,n,r,s,i,a){return typeof n!="function"&&(!n||Object.keys(n).length===0)?o.wrapFunction(e,t,r,s,i,a):async(...c)=>{let u;if(c.length===1&&typeof c[0]=="object"&&c[0]!==null&&!Array.isArray(c[0]))u=c[0];else{let m=e.parameters?.properties?Object.keys(e.parameters.properties):[];u={},m.forEach((f,h)=>{h<c.length&&(u[f]=c[h])})}let l=typeof n=="function"?n():n,p=l?{...l,...u}:u,d=i??e.name,g=s?.(d);try{let m=await e.func(p,{abortSignal:t,ai:r,protocol:g});return a?.({qualifiedName:d,name:e.name,arguments:ot(p),result:ot(m)}),m}catch(m){throw m instanceof ft?(a?.({qualifiedName:d,name:e.name,arguments:ot(p)}),m):(a?.({qualifiedName:d,name:e.name,arguments:ot(p),error:m instanceof Error?m.message:String(m)}),m)}}}buildRuntimeGlobals(e,t,n,r,s,i,a,c){let u={},l=new Map,p=new Map,d=new Map;for(let[m,f]of this.agentFunctionModuleMetadata)d.set(m,f);let g=(m,f)=>{l.set(f,m),p.has(m.module)||p.set(m.module,[]),p.get(m.module)?.push(f)};for(let m of this.agentFunctions){let f=m.namespace??"utils";(!u[f]||typeof u[f]!="object")&&(u[f]={});let h=`${f}.${m.name}`;u[f][m.name]=o.wrapFunction(m,e,n,r,h,s),g({module:f,name:m.name,description:m.description,parameters:m.parameters,returns:m.returns,examples:m.examples},h)}if(this.agents&&this.agents.length>0){let m={};for(let f of this.agents){let h=f.getFunction(),x=new Set(f.getExcludedSharedFields?.()??[]),A=()=>{let C={};if(t)for(let[R,I]of Object.entries(t))x.has(R)||(C[R]=I);return C},y=`${this.agentModuleNamespace}.${h.name}`;m[h.name]=o.wrapFunctionWithSharedFields(h,e,A,n,r,y,s),g({module:this.agentModuleNamespace,name:h.name,description:h.description,parameters:h.parameters},y)}u[this.agentModuleNamespace]=m}return this.functionDiscoveryEnabled&&(u[vr]=async m=>{let f=Hc(qc(m,"modules")),h=Object.fromEntries(f.map(x=>[x,km([x],p,d)]));a?.(f,h)},u[Sr]=async m=>{let f=Wc(qc(m,"functions")),h=vm(f,l);h.length>0&&i?.(h);let x=Object.fromEntries(f.map(A=>[A,Om([A],l)]));c?.(f,x)}),u}get _genOptions(){if(!this.options)return{};let{agents:e,fields:t,functions:n,judgeOptions:r,inputUpdateCallback:s,...i}=this.options;return i}_buildFuncParameters(){let e=this.program.getSignature().toInputJSONSchema();return this._parentSharedFields.size>0?Rm(e,this._parentSharedFields):e}};function Gm(o,e){let t=typeof o=="string"?Ve.create(o):o,{ai:n,judgeAI:r,agentIdentity:s,...i}=e;return new Fo({ai:n,judgeAI:r,agentIdentity:s,signature:t},{contextFields:[],...i})}var Bm=(o,e)=>{let t=e?.maxHops??3,n=e?.qualityThreshold??.8,r=e?.maxIterations??2,s=e?.qualityTarget??.85,i=e?.disableQualityHealing??!1;return oi({logger:e?.logger,debug:e?.debug}).node("queryGenerator","originalQuestion:string, previousContext?:string -> searchQuery:string, queryReasoning:string").node("contextualizer","retrievedDocument:string, accumulatedContext?:string -> enhancedContext:string").node("qualityAssessor","currentContext:string, originalQuestion:string -> completenessScore:number, missingAspects:string[]").node("questionDecomposer","complexQuestion:string -> subQuestions:string[], decompositionReason:string").node("evidenceSynthesizer","collectedEvidence:string[], originalQuestion:string -> synthesizedEvidence:string, evidenceGaps:string[]").node("gapAnalyzer","synthesizedEvidence:string, evidenceGaps:string[], originalQuestion:string -> needsMoreInfo:boolean, focusedQueries:string[]").node("answerGenerator","finalContext:string, originalQuestion:string -> comprehensiveAnswer:string, confidenceLevel:number").node("queryRefiner","originalQuestion:string, currentContext:string, missingAspects:string[] -> refinedQuery:string").node("qualityValidator","generatedAnswer:string, userQuery:string -> qualityScore:number, issues:string[]").node("answerHealer","originalAnswer:string, healingDocument:string, issues?:string[] -> healedAnswer:string").map(a=>({...a,maxHops:t,qualityThreshold:n,maxIterations:r,qualityTarget:s,disableQualityHealing:i,currentHop:0,accumulatedContext:"",retrievedContexts:[],completenessScore:0,searchQuery:a.originalQuestion,shouldContinue:!0,iteration:0,allEvidence:[],evidenceSources:[],needsMoreInfo:!0,healingAttempts:0,currentQuality:0,shouldContinueHealing:!0,currentAnswer:"",currentIssues:[]})).while(a=>a.currentHop<a.maxHops&&a.completenessScore<a.qualityThreshold&&a.shouldContinue).map(a=>({...a,currentHop:a.currentHop+1})).execute("queryGenerator",a=>({originalQuestion:a.originalQuestion,previousContext:a.accumulatedContext||void 0})).map(async a=>{let c=a.queryGeneratorResult?.searchQuery||a.searchQuery||a.originalQuestion,u=await o(c);return{...a,retrievalResult:{retrievedDocument:u,retrievalConfidence:.9}}}).execute("contextualizer",a=>({retrievedDocument:a.retrievalResult.retrievedDocument,accumulatedContext:a.accumulatedContext||void 0})).execute("qualityAssessor",a=>({currentContext:a.contextualizerResult.enhancedContext,originalQuestion:a.originalQuestion})).map(a=>({...a,accumulatedContext:a.contextualizerResult.enhancedContext,retrievedContexts:[...a.retrievedContexts,a.retrievalResult.retrievedDocument],completenessScore:a.qualityAssessorResult.completenessScore,searchQuery:a.queryGeneratorResult.searchQuery,shouldContinue:a.qualityAssessorResult.completenessScore<a.qualityThreshold})).branch(a=>a.shouldContinue&&a.currentHop<a.maxHops).when(!0).execute("queryRefiner",a=>({originalQuestion:a.originalQuestion,currentContext:a.accumulatedContext,missingAspects:a.qualityAssessorResult.missingAspects})).map(a=>({...a,searchQuery:a.queryRefinerResult?.refinedQuery||a.searchQuery})).when(!1).map(a=>a).merge().endWhile().map(a=>({...a,allEvidence:a.retrievedContexts.length>0?a.retrievedContexts:[]})).while(a=>a.iteration<a.maxIterations&&a.needsMoreInfo).map(a=>({...a,iteration:a.iteration+1})).branch(a=>a.iteration===1).when(!0).execute("questionDecomposer",a=>({complexQuestion:a.originalQuestion})).map(a=>({...a,currentQueries:a.questionDecomposerResult.subQuestions})).when(!1).map(a=>({...a,currentQueries:a.gapAnalyzerResult?.focusedQueries||[]})).merge().map(async a=>{let c=a.currentQueries||[],u=c.length>0?await Promise.all(c.filter(Boolean).map(l=>o(l))):[];return{...a,retrievalResults:u}}).execute("evidenceSynthesizer",a=>{let c=Array.isArray(a.allEvidence)?a.allEvidence:[],u=Array.isArray(a.retrievalResults)?a.retrievalResults:[],l=[...c,...u].filter(Boolean);return{collectedEvidence:l.length>0?l:["No evidence collected yet"],originalQuestion:a.originalQuestion}}).execute("gapAnalyzer",a=>({synthesizedEvidence:a.evidenceSynthesizerResult.synthesizedEvidence,evidenceGaps:a.evidenceSynthesizerResult.evidenceGaps,originalQuestion:a.originalQuestion})).map(a=>({...a,allEvidence:[...Array.isArray(a.allEvidence)?a.allEvidence:[],...Array.isArray(a.retrievalResults)?a.retrievalResults:[]],evidenceSources:[...Array.isArray(a.evidenceSources)?a.evidenceSources:[],`Iteration ${a.iteration} sources`],needsMoreInfo:a.gapAnalyzerResult.needsMoreInfo,synthesizedEvidence:a.evidenceSynthesizerResult.synthesizedEvidence})).endWhile().execute("answerGenerator",a=>({finalContext:(()=>{let c=(a.accumulatedContext||"").toString().trim();if(c.length>0)return c;let u=(a.synthesizedEvidence||"").toString().trim();if(u.length>0)return u;let p=(Array.isArray(a.allEvidence)?a.allEvidence.filter(Boolean).join(`
|
|
1130
|
+
${ge}`)}if(p.payload=void 0,this.enforceIncrementalConsoleTurns){let ge=Im(me);if(ge?.autoSplitDiscoveryCode&&await h.executeActorCode(ge.autoSplitDiscoveryCode),ge?.violation){let Ne=ge.violation,b=m.length+1;m.push({turn:b,code:me,output:Ne,actorFieldsOutput:Ae,tags:["error"]}),i?.push({turn:b,code:me,output:Ne,isError:!0,thought:typeof se.thought=="string"?se.thought:void 0}),a.actorTurnCallback&&await a.actorTurnCallback({turn:b,actionLogEntryCount:m.length,guidanceLogEntryCount:d.entries.length,actorResult:se,code:me,result:void 0,output:Ne,isError:!0,thought:typeof se.thought=="string"?se.thought:void 0,usage:Ee,model:Te,chatLogMessages:$e}),await Sc(m,m.length-1,h.effectiveContextConfig,e,M),D(!0),await J()&&ee();continue}}this.inputUpdateCallback&&await h.syncRuntimeInputsToSession();let Pe,Ie,ye;try{let ge=await h.executeActorCode(me);Pe=ge.result,Ie=ge.output,ye=ge.isError}catch(ge){if(ge instanceof lt||ge instanceof Ge||this.shouldBubbleUserError(ge)){let Ne=ge instanceof Error?ge:new Error(String(ge));i?.push({turn:m.length+1,code:me,output:Gc(Ne,h.effectiveContextConfig.maxRuntimeChars),isError:ge instanceof Ge||this.shouldBubbleUserError(ge),thought:typeof se.thought=="string"?se.thought:void 0}),a.actorTurnCallback&&await a.actorTurnCallback({turn:m.length+1,actionLogEntryCount:m.length,guidanceLogEntryCount:d.entries.length,actorResult:se,code:me,result:void 0,output:Gc(Ne,h.effectiveContextConfig.maxRuntimeChars),isError:ge instanceof Ge||this.shouldBubbleUserError(ge),thought:typeof se.thought=="string"?se.thought:void 0,usage:Ee,model:Te,chatLogMessages:$e})}throw ge}let ce=p.payload,_e=ce?.type==="guide_agent"?ce:void 0;if(_e){let ge=m.length+1;d.entries.push({turn:ge,guidance:_e.guidance,..._e.triggeredBy?{triggeredBy:_e.triggeredBy}:{}}),Pe=void 0,Ie=Dm(_e),ye=!1}let Ye=h.consumeDiscoveryTurnArtifacts();ye||(Ie=Ux(Ie,Ye.texts),Ie=Gx(Ie,Ye.summary));let Ke=m.length+1,tt=_e?Lx(_e):me;if(m.push({turn:Ke,code:tt,output:Ie,actorFieldsOutput:Ae,tags:ye?["error"]:[]}),i?.push({turn:Ke,code:me,output:Ie,isError:ye,thought:typeof se.thought=="string"?se.thought:void 0}),a.actorTurnCallback&&await a.actorTurnCallback({turn:Ke,actionLogEntryCount:m.length,guidanceLogEntryCount:d.entries.length,actorResult:se,code:me,result:Pe,output:Ie,isError:ye,thought:typeof se.thought=="string"?se.thought:void 0,usage:Ee,model:Te,chatLogMessages:$e}),await Sc(m,m.length-1,h.effectiveContextConfig,e,M),ye||(f=await h.captureRuntimeStateSummary()),D(ye),await J()&&ee(),p.payload&&"guidance"in p.payload){p.payload=void 0;continue}if(p.payload)break}await J()&&ee();try{ne();let j=await h.exportRuntimeState();j.checkpointState=F?{fingerprint:F.fingerprint,turns:[...F.turns],summary:F.summary}:void 0,j.actorModelState=P?{consecutiveErrorTurns:P.consecutiveErrorTurns,...Xt(P).length>0?{matchedNamespaces:Xt(P)}:{}}:void 0,this.state=j,this.stateError=void 0}catch(j){this.state=void 0,this.stateError=j instanceof Error?j.message:`Failed to export AxAgent state: ${String(j)}`}}finally{try{h.close()}catch{}}let q=p.payload&&"args"in p.payload?p.payload:{type:"final",args:[wd(m,{stateSummary:f,checkpointSummary:F?.summary,checkpointTurns:F?.turns})]};return{nonContextValues:l.getNonContextValues(),contextMetadata:l.getContextMetadata(),guidanceLog:Jc(d.entries),actionLog:U(),actorResult:q,actorFieldValues:R,turnCount:m.length}}async forward(e,t,n){let r=new AbortController;this._stopRequested&&r.abort("Stopped by user (pre-forward)");let s=_t(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);let i=this._ensureLlmQueryBudgetState();try{let a=this.ai??e,c=n?.debug??this.debug??a?.getOptions()?.debug??!1,u=[],l=[],{node:p,usageBefore:d}=this._beginRecursiveTraceCapture(t),{nonContextValues:g,actorResult:m,actorFieldValues:f}=await this._runActorLoop(a,t,n,s,u,l);if(m.type==="askClarification")throw this._finalizeRecursiveTraceCapture(p,d,l,u,m),new lt(m.args[0],{state:this.state,stateError:this.stateError});let h={...this._genOptions,...this.responderForwardOptions,...n,debug:c,abortSignal:s,maxSteps:1},x=await this.responderProgram.forward(a,{...g,contextData:m},h);return this._finalizeRecursiveTraceCapture(p,d,l,u,m),{...x,...f}}finally{i&&(this.llmQueryBudgetState=void 0),this.activeAbortControllers.delete(r),this._stopRequested=!1}}async*streamingForward(e,t,n){let r=new AbortController;this._stopRequested&&r.abort("Stopped by user (pre-forward)");let s=_t(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);let i=this._ensureLlmQueryBudgetState();try{let a=this.ai??e,c=n?.debug??this.debug??a?.getOptions()?.debug??!1,{nonContextValues:u,actorResult:l,actorFieldValues:p}=await this._runActorLoop(a,t,n,s);if(l.type==="askClarification")throw new lt(l.args[0],{state:this.state,stateError:this.stateError});let d={...this._genOptions,...this.responderForwardOptions,...n,debug:c,abortSignal:s,maxSteps:1};for await(let g of this.responderProgram.streamingForward(a,{...u,contextData:l},d))yield g;Object.keys(p).length>0&&(yield{version:1,index:0,delta:p})}finally{i&&(this.llmQueryBudgetState=void 0),this.activeAbortControllers.delete(r),this._stopRequested=!1}}static wrapFunction(e,t,n,r,s,i){return async(...a)=>{let c;if(a.length===1&&typeof a[0]=="object"&&a[0]!==null&&!Array.isArray(a[0]))c=a[0];else{let p=e.parameters?.properties?Object.keys(e.parameters.properties):[];c={},p.forEach((d,g)=>{g<a.length&&(c[d]=a[g])})}let u=s??e.name,l=r?.(u);try{let p=await e.func(c,{abortSignal:t,ai:n,protocol:l});return i?.({qualifiedName:u,name:e.name,arguments:ot(c),result:ot(p)}),p}catch(p){throw p instanceof ht?(i?.({qualifiedName:u,name:e.name,arguments:ot(c)}),p):(i?.({qualifiedName:u,name:e.name,arguments:ot(c),error:p instanceof Error?p.message:String(p)}),p)}}}static wrapFunctionWithSharedFields(e,t,n,r,s,i,a){return typeof n!="function"&&(!n||Object.keys(n).length===0)?o.wrapFunction(e,t,r,s,i,a):async(...c)=>{let u;if(c.length===1&&typeof c[0]=="object"&&c[0]!==null&&!Array.isArray(c[0]))u=c[0];else{let m=e.parameters?.properties?Object.keys(e.parameters.properties):[];u={},m.forEach((f,h)=>{h<c.length&&(u[f]=c[h])})}let l=typeof n=="function"?n():n,p=l?{...l,...u}:u,d=i??e.name,g=s?.(d);try{let m=await e.func(p,{abortSignal:t,ai:r,protocol:g});return a?.({qualifiedName:d,name:e.name,arguments:ot(p),result:ot(m)}),m}catch(m){throw m instanceof ht?(a?.({qualifiedName:d,name:e.name,arguments:ot(p)}),m):(a?.({qualifiedName:d,name:e.name,arguments:ot(p),error:m instanceof Error?m.message:String(m)}),m)}}}buildRuntimeGlobals(e,t,n,r,s,i,a,c){let u={},l=new Map,p=new Map,d=new Map;for(let[m,f]of this.agentFunctionModuleMetadata)d.set(m,f);let g=(m,f)=>{l.set(f,m),p.has(m.module)||p.set(m.module,[]),p.get(m.module)?.push(f)};for(let m of this.agentFunctions){let f=m.namespace??"utils";(!u[f]||typeof u[f]!="object")&&(u[f]={});let h=`${f}.${m.name}`;u[f][m.name]=o.wrapFunction(m,e,n,r,h,s),g({module:f,name:m.name,description:m.description,parameters:m.parameters,returns:m.returns,examples:m.examples},h)}if(this.agents&&this.agents.length>0){let m={};for(let f of this.agents){let h=f.getFunction(),x=new Set(f.getExcludedSharedFields?.()??[]),A=()=>{let C={};if(t)for(let[R,I]of Object.entries(t))x.has(R)||(C[R]=I);return C},y=`${this.agentModuleNamespace}.${h.name}`;m[h.name]=o.wrapFunctionWithSharedFields(h,e,A,n,r,y,s),g({module:this.agentModuleNamespace,name:h.name,description:h.description,parameters:h.parameters},y)}u[this.agentModuleNamespace]=m}return this.functionDiscoveryEnabled&&(u[vr]=async m=>{let f=Hc(qc(m,"modules")),h=Object.fromEntries(f.map(x=>[x,km([x],p,d)]));a?.(f,h)},u[Sr]=async m=>{let f=Wc(qc(m,"functions")),h=vm(f,l);h.length>0&&i?.(h);let x=Object.fromEntries(f.map(A=>[A,Om([A],l)]));c?.(f,x)}),u}get _genOptions(){if(!this.options)return{};let{agents:e,fields:t,functions:n,judgeOptions:r,inputUpdateCallback:s,...i}=this.options;return i}_buildFuncParameters(){let e=this.program.getSignature().toInputJSONSchema();return this._parentSharedFields.size>0?Rm(e,this._parentSharedFields):e}};function Gm(o,e){let t=typeof o=="string"?Ve.create(o):o,{ai:n,judgeAI:r,agentIdentity:s,...i}=e;return new Fo({ai:n,judgeAI:r,agentIdentity:s,signature:t},{contextFields:[],...i})}var Bm=(o,e)=>{let t=e?.maxHops??3,n=e?.qualityThreshold??.8,r=e?.maxIterations??2,s=e?.qualityTarget??.85,i=e?.disableQualityHealing??!1;return oi({logger:e?.logger,debug:e?.debug}).node("queryGenerator","originalQuestion:string, previousContext?:string -> searchQuery:string, queryReasoning:string").node("contextualizer","retrievedDocument:string, accumulatedContext?:string -> enhancedContext:string").node("qualityAssessor","currentContext:string, originalQuestion:string -> completenessScore:number, missingAspects:string[]").node("questionDecomposer","complexQuestion:string -> subQuestions:string[], decompositionReason:string").node("evidenceSynthesizer","collectedEvidence:string[], originalQuestion:string -> synthesizedEvidence:string, evidenceGaps:string[]").node("gapAnalyzer","synthesizedEvidence:string, evidenceGaps:string[], originalQuestion:string -> needsMoreInfo:boolean, focusedQueries:string[]").node("answerGenerator","finalContext:string, originalQuestion:string -> comprehensiveAnswer:string, confidenceLevel:number").node("queryRefiner","originalQuestion:string, currentContext:string, missingAspects:string[] -> refinedQuery:string").node("qualityValidator","generatedAnswer:string, userQuery:string -> qualityScore:number, issues:string[]").node("answerHealer","originalAnswer:string, healingDocument:string, issues?:string[] -> healedAnswer:string").map(a=>({...a,maxHops:t,qualityThreshold:n,maxIterations:r,qualityTarget:s,disableQualityHealing:i,currentHop:0,accumulatedContext:"",retrievedContexts:[],completenessScore:0,searchQuery:a.originalQuestion,shouldContinue:!0,iteration:0,allEvidence:[],evidenceSources:[],needsMoreInfo:!0,healingAttempts:0,currentQuality:0,shouldContinueHealing:!0,currentAnswer:"",currentIssues:[]})).while(a=>a.currentHop<a.maxHops&&a.completenessScore<a.qualityThreshold&&a.shouldContinue).map(a=>({...a,currentHop:a.currentHop+1})).execute("queryGenerator",a=>({originalQuestion:a.originalQuestion,previousContext:a.accumulatedContext||void 0})).map(async a=>{let c=a.queryGeneratorResult?.searchQuery||a.searchQuery||a.originalQuestion,u=await o(c);return{...a,retrievalResult:{retrievedDocument:u,retrievalConfidence:.9}}}).execute("contextualizer",a=>({retrievedDocument:a.retrievalResult.retrievedDocument,accumulatedContext:a.accumulatedContext||void 0})).execute("qualityAssessor",a=>({currentContext:a.contextualizerResult.enhancedContext,originalQuestion:a.originalQuestion})).map(a=>({...a,accumulatedContext:a.contextualizerResult.enhancedContext,retrievedContexts:[...a.retrievedContexts,a.retrievalResult.retrievedDocument],completenessScore:a.qualityAssessorResult.completenessScore,searchQuery:a.queryGeneratorResult.searchQuery,shouldContinue:a.qualityAssessorResult.completenessScore<a.qualityThreshold})).branch(a=>a.shouldContinue&&a.currentHop<a.maxHops).when(!0).execute("queryRefiner",a=>({originalQuestion:a.originalQuestion,currentContext:a.accumulatedContext,missingAspects:a.qualityAssessorResult.missingAspects})).map(a=>({...a,searchQuery:a.queryRefinerResult?.refinedQuery||a.searchQuery})).when(!1).map(a=>a).merge().endWhile().map(a=>({...a,allEvidence:a.retrievedContexts.length>0?a.retrievedContexts:[]})).while(a=>a.iteration<a.maxIterations&&a.needsMoreInfo).map(a=>({...a,iteration:a.iteration+1})).branch(a=>a.iteration===1).when(!0).execute("questionDecomposer",a=>({complexQuestion:a.originalQuestion})).map(a=>({...a,currentQueries:a.questionDecomposerResult.subQuestions})).when(!1).map(a=>({...a,currentQueries:a.gapAnalyzerResult?.focusedQueries||[]})).merge().map(async a=>{let c=a.currentQueries||[],u=c.length>0?await Promise.all(c.filter(Boolean).map(l=>o(l))):[];return{...a,retrievalResults:u}}).execute("evidenceSynthesizer",a=>{let c=Array.isArray(a.allEvidence)?a.allEvidence:[],u=Array.isArray(a.retrievalResults)?a.retrievalResults:[],l=[...c,...u].filter(Boolean);return{collectedEvidence:l.length>0?l:["No evidence collected yet"],originalQuestion:a.originalQuestion}}).execute("gapAnalyzer",a=>({synthesizedEvidence:a.evidenceSynthesizerResult.synthesizedEvidence,evidenceGaps:a.evidenceSynthesizerResult.evidenceGaps,originalQuestion:a.originalQuestion})).map(a=>({...a,allEvidence:[...Array.isArray(a.allEvidence)?a.allEvidence:[],...Array.isArray(a.retrievalResults)?a.retrievalResults:[]],evidenceSources:[...Array.isArray(a.evidenceSources)?a.evidenceSources:[],`Iteration ${a.iteration} sources`],needsMoreInfo:a.gapAnalyzerResult.needsMoreInfo,synthesizedEvidence:a.evidenceSynthesizerResult.synthesizedEvidence})).endWhile().execute("answerGenerator",a=>({finalContext:(()=>{let c=(a.accumulatedContext||"").toString().trim();if(c.length>0)return c;let u=(a.synthesizedEvidence||"").toString().trim();if(u.length>0)return u;let p=(Array.isArray(a.allEvidence)?a.allEvidence.filter(Boolean).join(`
|
|
1131
1131
|
`):"").toString().trim();return p.length>0?p:"No context available."})(),originalQuestion:a.originalQuestion})).branch(a=>!a.disableQualityHealing).when(!0).execute("qualityValidator",a=>({generatedAnswer:a.answerGeneratorResult.comprehensiveAnswer,userQuery:a.originalQuestion})).map(a=>({...a,currentAnswer:a.answerGeneratorResult.comprehensiveAnswer,currentQuality:a.qualityValidatorResult.qualityScore,currentIssues:a.qualityValidatorResult.issues,shouldContinueHealing:a.qualityValidatorResult.qualityScore<a.qualityTarget})).while(a=>a.healingAttempts<3&&a.shouldContinueHealing).map(a=>({...a,healingAttempts:a.healingAttempts+1})).map(async a=>{let c=a.currentIssues||[],u=c.length>0?`${a.originalQuestion} addressing issues: ${c.join(", ")}`:`${a.originalQuestion} quality improvement`,l=await o(u);return{...a,healingResult:{healingDocument:l}}}).execute("answerHealer",a=>({originalAnswer:a.currentAnswer,healingDocument:a.healingResult.healingDocument,issues:a.currentIssues})).execute("qualityValidator",a=>({generatedAnswer:a.answerHealerResult.healedAnswer,userQuery:a.originalQuestion})).map(a=>({...a,currentAnswer:a.answerHealerResult.healedAnswer,currentQuality:a.qualityValidatorResult.qualityScore,currentIssues:a.qualityValidatorResult.issues,shouldContinueHealing:a.qualityValidatorResult.qualityScore<a.qualityTarget})).endWhile().when(!1).map(a=>({...a,currentAnswer:a.answerGeneratorResult.comprehensiveAnswer,currentQuality:1,currentIssues:[],shouldContinueHealing:!1})).merge().returns(a=>({finalAnswer:a.currentAnswer,totalHops:a.currentHop,retrievedContexts:a.retrievedContexts,iterationCount:a.iteration,healingAttempts:a.healingAttempts,qualityAchieved:a.currentQuality}))};return Qm(jx);})();
|
|
1132
1132
|
//# sourceMappingURL=index.global.js.map
|