@ax-llm/ax 19.0.3 → 19.0.4

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.global.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var ax=(()=>{var Mc=Object.create;var Kr=Object.defineProperty;var Ec=Object.getOwnPropertyDescriptor;var Pc=Object.getOwnPropertyNames;var Fc=Object.getPrototypeOf,_c=Object.prototype.hasOwnProperty;var $c=(s=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(s,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):s)(function(s){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+s+'" is not supported')});var Wr=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),Nc=(s,e)=>{for(var t in e)Kr(s,t,{get:e[t],enumerable:!0})},ma=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Pc(e))!_c.call(s,r)&&r!==t&&Kr(s,r,{get:()=>e[r],enumerable:!(n=Ec(e,r))||n.enumerable});return s};var Yn=(s,e,t)=>(t=s!=null?Mc(Fc(s)):{},ma(e||!s||!s.__esModule?Kr(t,"default",{value:s,enumerable:!0}):t,s)),Lc=s=>ma(Kr({},"__esModule",{value:!0}),s);var au=Wr((ki,Oi)=>{"use strict";(function(s,e){typeof ki=="object"&&typeof Oi<"u"?Oi.exports=e():typeof define=="function"&&define.amd?define(e):(s=typeof globalThis<"u"?globalThis:s||self).dayjs=e()})(ki,function(){"use strict";var s=1e3,e=6e4,t=36e5,n="millisecond",r="second",o="minute",i="hour",a="day",l="week",u="month",c="quarter",p="year",d="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|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,f={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(L){var I=["th","st","nd","rd"],v=L%100;return"["+L+(I[(v-20)%10]||I[v]||I[0])+"]"}},y=function(L,I,v){var E=String(L);return!E||E.length>=I?L:""+Array(I+1-E.length).join(v)+L},x={s:y,z:function(L){var I=-L.utcOffset(),v=Math.abs(I),E=Math.floor(v/60),$=v%60;return(I<=0?"+":"-")+y(E,2,"0")+":"+y($,2,"0")},m:function L(I,v){if(I.date()<v.date())return-L(v,I);var E=12*(v.year()-I.year())+(v.month()-I.month()),$=I.clone().add(E,u),S=v-$<0,P=I.clone().add(E+(S?-1:1),u);return+(-(E+(v-$)/(S?$-P:P-$))||0)},a:function(L){return L<0?Math.ceil(L)||0:Math.floor(L)},p:function(L){return{M:u,y:p,w:l,d:a,D:d,h:i,m:o,s:r,ms:n,Q:c}[L]||String(L||"").toLowerCase().replace(/s$/,"")},u:function(L){return L===void 0}},A="en",T={};T[A]=f;var b="$isDayjsObject",R=function(L){return L instanceof G||!(!L||!L[b])},O=function L(I,v,E){var $;if(!I)return A;if(typeof I=="string"){var S=I.toLowerCase();T[S]&&($=S),v&&(T[S]=v,$=S);var P=I.split("-");if(!$&&P.length>1)return L(P[0])}else{var j=I.name;T[j]=I,$=j}return!E&&$&&(A=$),$||!E&&A},_=function(L,I){if(R(L))return L.clone();var v=typeof I=="object"?I:{};return v.date=L,v.args=arguments,new G(v)},M=x;M.l=O,M.i=R,M.w=function(L,I){return _(L,{locale:I.$L,utc:I.$u,x:I.$x,$offset:I.$offset})};var G=function(){function L(v){this.$L=O(v.locale,null,!0),this.parse(v),this.$x=this.$x||v.x||{},this[b]=!0}var I=L.prototype;return I.parse=function(v){this.$d=function(E){var $=E.date,S=E.utc;if($===null)return new Date(NaN);if(M.u($))return new Date;if($ instanceof Date)return new Date($);if(typeof $=="string"&&!/Z$/i.test($)){var P=$.match(g);if(P){var j=P[2]-1||0,N=(P[7]||"0").substring(0,3);return S?new Date(Date.UTC(P[1],j,P[3]||1,P[4]||0,P[5]||0,P[6]||0,N)):new Date(P[1],j,P[3]||1,P[4]||0,P[5]||0,P[6]||0,N)}}return new Date($)}(v),this.init()},I.init=function(){var v=this.$d;this.$y=v.getFullYear(),this.$M=v.getMonth(),this.$D=v.getDate(),this.$W=v.getDay(),this.$H=v.getHours(),this.$m=v.getMinutes(),this.$s=v.getSeconds(),this.$ms=v.getMilliseconds()},I.$utils=function(){return M},I.isValid=function(){return this.$d.toString()!==m},I.isSame=function(v,E){var $=_(v);return this.startOf(E)<=$&&$<=this.endOf(E)},I.isAfter=function(v,E){return _(v)<this.startOf(E)},I.isBefore=function(v,E){return this.endOf(E)<_(v)},I.$g=function(v,E,$){return M.u(v)?this[E]:this.set($,v)},I.unix=function(){return Math.floor(this.valueOf()/1e3)},I.valueOf=function(){return this.$d.getTime()},I.startOf=function(v,E){var $=this,S=!!M.u(E)||E,P=M.p(v),j=function(Ie,te){var he=M.w($.$u?Date.UTC($.$y,te,Ie):new Date($.$y,te,Ie),$);return S?he:he.endOf(a)},N=function(Ie,te){return M.w($.toDate()[Ie].apply($.toDate("s"),(S?[0,0,0,0]:[23,59,59,999]).slice(te)),$)},K=this.$W,re=this.$M,ne=this.$D,oe="set"+(this.$u?"UTC":"");switch(P){case p:return S?j(1,0):j(31,11);case u:return S?j(1,re):j(0,re+1);case l:var W=this.$locale().weekStart||0,se=(K<W?K+7:K)-W;return j(S?ne-se:ne+(6-se),re);case a:case d:return N(oe+"Hours",0);case i:return N(oe+"Minutes",1);case o:return N(oe+"Seconds",2);case r:return N(oe+"Milliseconds",3);default:return this.clone()}},I.endOf=function(v){return this.startOf(v,!1)},I.$set=function(v,E){var $,S=M.p(v),P="set"+(this.$u?"UTC":""),j=($={},$[a]=P+"Date",$[d]=P+"Date",$[u]=P+"Month",$[p]=P+"FullYear",$[i]=P+"Hours",$[o]=P+"Minutes",$[r]=P+"Seconds",$[n]=P+"Milliseconds",$)[S],N=S===a?this.$D+(E-this.$W):E;if(S===u||S===p){var K=this.clone().set(d,1);K.$d[j](N),K.init(),this.$d=K.set(d,Math.min(this.$D,K.daysInMonth())).$d}else j&&this.$d[j](N);return this.init(),this},I.set=function(v,E){return this.clone().$set(v,E)},I.get=function(v){return this[M.p(v)]()},I.add=function(v,E){var $,S=this;v=Number(v);var P=M.p(E),j=function(re){var ne=_(S);return M.w(ne.date(ne.date()+Math.round(re*v)),S)};if(P===u)return this.set(u,this.$M+v);if(P===p)return this.set(p,this.$y+v);if(P===a)return j(1);if(P===l)return j(7);var N=($={},$[o]=e,$[i]=t,$[r]=s,$)[P]||1,K=this.$d.getTime()+v*N;return M.w(K,this)},I.subtract=function(v,E){return this.add(-1*v,E)},I.format=function(v){var E=this,$=this.$locale();if(!this.isValid())return $.invalidDate||m;var S=v||"YYYY-MM-DDTHH:mm:ssZ",P=M.z(this),j=this.$H,N=this.$m,K=this.$M,re=$.weekdays,ne=$.months,oe=$.meridiem,W=function(te,he,ve,we){return te&&(te[he]||te(E,S))||ve[he].slice(0,we)},se=function(te){return M.s(j%12||12,te,"0")},Ie=oe||function(te,he,ve){var we=te<12?"AM":"PM";return ve?we.toLowerCase():we};return S.replace(h,function(te,he){return he||function(ve){switch(ve){case"YY":return String(E.$y).slice(-2);case"YYYY":return M.s(E.$y,4,"0");case"M":return K+1;case"MM":return M.s(K+1,2,"0");case"MMM":return W($.monthsShort,K,ne,3);case"MMMM":return W(ne,K);case"D":return E.$D;case"DD":return M.s(E.$D,2,"0");case"d":return String(E.$W);case"dd":return W($.weekdaysMin,E.$W,re,2);case"ddd":return W($.weekdaysShort,E.$W,re,3);case"dddd":return re[E.$W];case"H":return String(j);case"HH":return M.s(j,2,"0");case"h":return se(1);case"hh":return se(2);case"a":return Ie(j,N,!0);case"A":return Ie(j,N,!1);case"m":return String(N);case"mm":return M.s(N,2,"0");case"s":return String(E.$s);case"ss":return M.s(E.$s,2,"0");case"SSS":return M.s(E.$ms,3,"0");case"Z":return P}return null}(te)||P.replace(":","")})},I.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},I.diff=function(v,E,$){var S,P=this,j=M.p(E),N=_(v),K=(N.utcOffset()-this.utcOffset())*e,re=this-N,ne=function(){return M.m(P,N)};switch(j){case p:S=ne()/12;break;case u:S=ne();break;case c:S=ne()/3;break;case l:S=(re-K)/6048e5;break;case a:S=(re-K)/864e5;break;case i:S=re/t;break;case o:S=re/e;break;case r:S=re/s;break;default:S=re}return $?S:M.a(S)},I.daysInMonth=function(){return this.endOf(u).$D},I.$locale=function(){return T[this.$L]},I.locale=function(v,E){if(!v)return this.$L;var $=this.clone(),S=O(v,E,!0);return S&&($.$L=S),$},I.clone=function(){return M.w(this.$d,this)},I.toDate=function(){return new Date(this.valueOf())},I.toJSON=function(){return this.isValid()?this.toISOString():null},I.toISOString=function(){return this.$d.toISOString()},I.toString=function(){return this.$d.toUTCString()},L}(),B=G.prototype;return _.prototype=B,[["$ms",n],["$s",r],["$m",o],["$H",i],["$W",a],["$M",u],["$y",p],["$D",d]].forEach(function(L){B[L[1]]=function(I){return this.$g(I,L[0],L[1])}}),_.extend=function(L,I){return L.$i||(L(I,G,_),L.$i=!0),_},_.locale=O,_.isDayjs=R,_.unix=function(L){return _(1e3*L)},_.en=T[A],_.Ls=T,_.p={},_})});var lu=Wr((Mi,Ei)=>{"use strict";(function(s,e){typeof Mi=="object"&&typeof Ei<"u"?Ei.exports=e():typeof define=="function"&&define.amd?define(e):(s=typeof globalThis<"u"?globalThis:s||self).dayjs_plugin_customParseFormat=e()})(Mi,function(){"use strict";var s={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?/,o=/\d*[^-_:/,()\s\d]+/,i={},a=function(g){return(g=+g)+(g>68?1900:2e3)},l=function(g){return function(h){this[g]=+h}},u=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(h){if(!h||h==="Z")return 0;var f=h.match(/([+-]|\d\d)/g),y=60*f[1]+(+f[2]||0);return y===0?0:f[0]==="+"?-y:y}(g)}],c=function(g){var h=i[g];return h&&(h.indexOf?h:h.s.concat(h.f))},p=function(g,h){var f,y=i.meridiem;if(y){for(var x=1;x<=24;x+=1)if(g.indexOf(y(x,0,h))>-1){f=x>12;break}}else f=g===(h?"pm":"PM");return f},d={A:[o,function(g){this.afternoon=p(g,!1)}],a:[o,function(g){this.afternoon=p(g,!0)}],Q:[t,function(g){this.month=3*(g-1)+1}],S:[t,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[r,l("seconds")],ss:[r,l("seconds")],m:[r,l("minutes")],mm:[r,l("minutes")],H:[r,l("hours")],h:[r,l("hours")],HH:[r,l("hours")],hh:[r,l("hours")],D:[r,l("day")],DD:[n,l("day")],Do:[o,function(g){var h=i.ordinal,f=g.match(/\d+/);if(this.day=f[0],h)for(var y=1;y<=31;y+=1)h(y).replace(/\[|\]/g,"")===g&&(this.day=y)}],w:[r,l("week")],ww:[n,l("week")],M:[r,l("month")],MM:[n,l("month")],MMM:[o,function(g){var h=c("months"),f=(c("monthsShort")||h.map(function(y){return y.slice(0,3)})).indexOf(g)+1;if(f<1)throw new Error;this.month=f%12||f}],MMMM:[o,function(g){var h=c("months").indexOf(g)+1;if(h<1)throw new Error;this.month=h%12||h}],Y:[/[+-]?\d+/,l("year")],YY:[n,function(g){this.year=a(g)}],YYYY:[/\d{4}/,l("year")],Z:u,ZZ:u};function m(g){var h,f;h=g,f=i&&i.formats;for(var y=(g=h.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(_,M,G){var B=G&&G.toUpperCase();return M||f[G]||s[G]||f[B].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(L,I,v){return I||v.slice(1)})})).match(e),x=y.length,A=0;A<x;A+=1){var T=y[A],b=d[T],R=b&&b[0],O=b&&b[1];y[A]=O?{regex:R,parser:O}:T.replace(/^\[|\]$/g,"")}return function(_){for(var M={},G=0,B=0;G<x;G+=1){var L=y[G];if(typeof L=="string")B+=L.length;else{var I=L.regex,v=L.parser,E=_.slice(B),$=I.exec(E)[0];v.call(M,$),_=_.replace($,"")}}return function(S){var P=S.afternoon;if(P!==void 0){var j=S.hours;P?j<12&&(S.hours+=12):j===12&&(S.hours=0),delete S.afternoon}}(M),M}}return function(g,h,f){f.p.customParseFormat=!0,g&&g.parseTwoDigitYear&&(a=g.parseTwoDigitYear);var y=h.prototype,x=y.parse;y.parse=function(A){var T=A.date,b=A.utc,R=A.args;this.$u=b;var O=R[1];if(typeof O=="string"){var _=R[2]===!0,M=R[3]===!0,G=_||M,B=R[2];M&&(B=R[2]),i=this.$locale(),!_&&B&&(i=f.Ls[B]),this.$d=function(E,$,S,P){try{if(["x","X"].indexOf($)>-1)return new Date(($==="X"?1e3:1)*E);var j=m($)(E),N=j.year,K=j.month,re=j.day,ne=j.hours,oe=j.minutes,W=j.seconds,se=j.milliseconds,Ie=j.zone,te=j.week,he=new Date,ve=re||(N||K?1:he.getDate()),we=N||he.getFullYear(),Me=0;N&&!K||(Me=K>0?K-1:he.getMonth());var w,F=ne||0,k=oe||0,C=W||0,D=se||0;return Ie?new Date(Date.UTC(we,Me,ve,F,k,C,D+60*Ie.offset*1e3)):S?new Date(Date.UTC(we,Me,ve,F,k,C,D)):(w=new Date(we,Me,ve,F,k,C,D),te&&(w=P(w).week(te).toDate()),w)}catch{return new Date("")}}(T,O,b,f),this.init(),B&&B!==!0&&(this.$L=this.locale(B).$L),G&&T!=this.format(O)&&(this.$d=new Date("")),i={}}else if(O instanceof Array)for(var L=O.length,I=1;I<=L;I+=1){R[1]=O[I-1];var v=f.apply(this,R);if(v.isValid()){this.$d=v.$d,this.$L=v.$L,this.init();break}I===L&&(this.$d=new Date(""))}else x.call(this,A)}}})});var uu=Wr((Pi,Fi)=>{"use strict";(function(s,e){typeof Pi=="object"&&typeof Fi<"u"?Fi.exports=e():typeof define=="function"&&define.amd?define(e):(s=typeof globalThis<"u"?globalThis:s||self).dayjs_plugin_timezone=e()})(Pi,function(){"use strict";var s={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(t,n,r){var o,i=function(c,p,d){d===void 0&&(d={});var m=new Date(c),g=function(h,f){f===void 0&&(f={});var y=f.timeZoneName||"short",x=h+"|"+y,A=e[x];return A||(A=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:h,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:y}),e[x]=A),A}(p,d);return g.formatToParts(m)},a=function(c,p){for(var d=i(c,p),m=[],g=0;g<d.length;g+=1){var h=d[g],f=h.type,y=h.value,x=s[f];x>=0&&(m[x]=parseInt(y,10))}var A=m[3],T=A===24?0:A,b=m[0]+"-"+m[1]+"-"+m[2]+" "+T+":"+m[4]+":"+m[5]+":000",R=+c;return(r.utc(b).valueOf()-(R-=R%1e3))/6e4},l=n.prototype;l.tz=function(c,p){c===void 0&&(c=o);var d,m=this.utcOffset(),g=this.toDate(),h=g.toLocaleString("en-US",{timeZone:c}),f=Math.round((g-new Date(h))/1e3/60),y=15*-Math.round(g.getTimezoneOffset()/15)-f;if(!Number(y))d=this.utcOffset(0,p);else if(d=r(h,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(y,!0),p){var x=d.utcOffset();d=d.add(m-x,"minute")}return d.$x.$timezone=c,d},l.offsetName=function(c){var p=this.$x.$timezone||r.tz.guess(),d=i(this.valueOf(),p,{timeZoneName:c}).find(function(m){return m.type.toLowerCase()==="timezonename"});return d&&d.value};var u=l.startOf;l.startOf=function(c,p){if(!this.$x||!this.$x.$timezone)return u.call(this,c,p);var d=r(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return u.call(d,c,p).tz(this.$x.$timezone,!0)},r.tz=function(c,p,d){var m=d&&p,g=d||p||o,h=a(+r(),g);if(typeof c!="string")return r(c).tz(g);var f=function(T,b,R){var O=T-60*b*1e3,_=a(O,R);if(b===_)return[O,b];var M=a(O-=60*(_-b)*1e3,R);return _===M?[O,_]:[T-60*Math.min(_,M)*1e3,Math.max(_,M)]}(r.utc(c,m).valueOf(),h,g),y=f[0],x=f[1],A=r(y).utcOffset(x);return A.$x.$timezone=g,A},r.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},r.tz.setDefault=function(c){o=c}}})});var cu=Wr((_i,$i)=>{"use strict";(function(s,e){typeof _i=="object"&&typeof $i<"u"?$i.exports=e():typeof define=="function"&&define.amd?define(e):(s=typeof globalThis<"u"?globalThis:s||self).dayjs_plugin_utc=e()})(_i,function(){"use strict";var s="minute",e=/[+-]\d\d(?::?\d\d)?/g,t=/([+-]|\d\d)/g;return function(n,r,o){var i=r.prototype;o.utc=function(m){var g={date:m,utc:!0,args:arguments};return new r(g)},i.utc=function(m){var g=o(this.toDate(),{locale:this.$L,utc:!0});return m?g.add(this.utcOffset(),s):g},i.local=function(){return o(this.toDate(),{locale:this.$L,utc:!1})};var a=i.parse;i.parse=function(m){m.utc&&(this.$u=!0),this.$utils().u(m.$offset)||(this.$offset=m.$offset),a.call(this,m)};var l=i.init;i.init=function(){if(this.$u){var m=this.$d;this.$y=m.getUTCFullYear(),this.$M=m.getUTCMonth(),this.$D=m.getUTCDate(),this.$W=m.getUTCDay(),this.$H=m.getUTCHours(),this.$m=m.getUTCMinutes(),this.$s=m.getUTCSeconds(),this.$ms=m.getUTCMilliseconds()}else l.call(this)};var u=i.utcOffset;i.utcOffset=function(m,g){var h=this.$utils().u;if(h(m))return this.$u?0:h(this.$offset)?u.call(this):this.$offset;if(typeof m=="string"&&(m=function(A){A===void 0&&(A="");var T=A.match(e);if(!T)return null;var b=(""+T[0]).match(t)||["-",0,0],R=b[0],O=60*+b[1]+ +b[2];return O===0?0:R==="+"?O:-O}(m),m===null))return this;var f=Math.abs(m)<=16?60*m:m,y=this;if(g)return y.$offset=f,y.$u=m===0,y;if(m!==0){var x=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(y=this.local().add(f+x,s)).$offset=f,y.$x.$localOffset=x}else y=this.utc();return y};var c=i.format;i.format=function(m){var g=m||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return c.call(this,g)},i.valueOf=function(){var m=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*m},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(m){return m==="s"&&this.$offset?o(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():p.call(this)};var d=i.diff;i.diff=function(m,g,h){if(m&&this.$u===m.$u)return d.call(this,m,g,h);var f=this.local(),y=o(m).local();return d.call(f,y,g,h)}}})});var fm={};Nc(fm,{AxACE:()=>ds,AxACEOptimizedProgram:()=>Dr,AxAI:()=>Ir,AxAIAnthropic:()=>en,AxAIAnthropicModel:()=>or,AxAIAnthropicVertexModel:()=>sr,AxAIAzureOpenAI:()=>sn,AxAICohere:()=>an,AxAICohereEmbedModel:()=>ur,AxAICohereModel:()=>lr,AxAIDeepSeek:()=>ln,AxAIDeepSeekModel:()=>cr,AxAIGoogleGemini:()=>un,AxAIGoogleGeminiEmbedModel:()=>fo,AxAIGoogleGeminiEmbedTypes:()=>si,AxAIGoogleGeminiModel:()=>pr,AxAIGoogleGeminiSafetyCategory:()=>xo,AxAIGoogleGeminiSafetyThreshold:()=>Ao,AxAIGrok:()=>In,AxAIGrokEmbedModels:()=>Ai,AxAIGrokModel:()=>br,AxAIGroq:()=>pn,AxAIGroqModel:()=>dr,AxAIHuggingFace:()=>dn,AxAIHuggingFaceModel:()=>To,AxAIMistral:()=>mn,AxAIMistralEmbedModels:()=>ci,AxAIMistralModel:()=>mr,AxAIOllama:()=>gn,AxAIOpenAI:()=>on,AxAIOpenAIBase:()=>Ee,AxAIOpenAIEmbedModel:()=>tn,AxAIOpenAIModel:()=>ar,AxAIOpenAIResponses:()=>fn,AxAIOpenAIResponsesBase:()=>gr,AxAIOpenAIResponsesImpl:()=>hn,AxAIOpenAIResponsesModel:()=>nn,AxAIOpenRouter:()=>xn,AxAIRefusalError:()=>ke,AxAIReka:()=>An,AxAIRekaModel:()=>fr,AxAIServiceAbortedError:()=>$e,AxAIServiceAuthenticationError:()=>vt,AxAIServiceError:()=>qe,AxAIServiceNetworkError:()=>Ue,AxAIServiceResponseError:()=>Rt,AxAIServiceStatusError:()=>Ve,AxAIServiceStreamTerminatedError:()=>ot,AxAIServiceTimeoutError:()=>tt,AxAITogether:()=>yn,AxAITogetherModel:()=>Ar,AxAIWebLLM:()=>bn,AxAIWebLLMModel:()=>yr,AxAgent:()=>qr,AxApacheTika:()=>ns,AxAssertionError:()=>bt,AxBalancer:()=>co,AxBaseAI:()=>Fe,AxBaseOptimizer:()=>Xe,AxBootstrapFewShot:()=>Bn,AxContentProcessingError:()=>mt,AxDB:()=>No,AxDBBase:()=>it,AxDBCloudflare:()=>Cn,AxDBManager:()=>Lo,AxDBMemory:()=>Ft,AxDBPinecone:()=>Tn,AxDBWeaviate:()=>wn,AxDefaultCostTracker:()=>_r,AxDefaultResultReranker:()=>ts,AxDockerSession:()=>As,AxEmbeddingAdapter:()=>ys,AxEvalUtil:()=>ju,AxFlow:()=>Ur,AxFlowDependencyAnalyzer:()=>jn,AxFlowExecutionPlanner:()=>zn,AxFlowSubContextImpl:()=>Wn,AxFlowTypedSubContextImpl:()=>fs,AxFluentFieldType:()=>Ge,AxFunctionError:()=>Sr,AxFunctionProcessor:()=>Or,AxGEPA:()=>Gn,AxGEPAFlow:()=>ms,AxGen:()=>Oe,AxGenerateError:()=>Pr,AxHFDataLoader:()=>ps,AxInstanceRegistry:()=>En,AxJSRuntime:()=>Vt,AxJSRuntimePermission:()=>ca,AxJudge:()=>Ln,AxLLMRequestTypeValues:()=>js,AxLearn:()=>cs,AxMCPClient:()=>Cs,AxMCPHTTPSSETransport:()=>Rs,AxMCPStreambleHTTPTransport:()=>ws,AxMediaNotSupportedError:()=>st,AxMemory:()=>Rn,AxMiPRO:()=>hs,AxMockAIService:()=>vo,AxMultiServiceRouter:()=>So,AxOptimizedProgramImpl:()=>Ct,AxProgram:()=>Nt,AxPromptTemplate:()=>zt,AxProviderRouter:()=>Eo,AxRateLimiterTokenUsage:()=>cn,AxSignature:()=>Pe,AxSignatureBuilder:()=>Mr,AxSimpleClassifier:()=>os,AxSimpleClassifierClass:()=>rs,AxSpanKindValues:()=>qs,AxStepContextImpl:()=>$n,AxStopFunctionCallException:()=>Bt,AxStringUtil:()=>es,AxSynth:()=>Un,AxTestPrompt:()=>ss,AxTokenLimitError:()=>Qn,AxTraceLogger:()=>Dn,agent:()=>Tc,ai:()=>Bl,ax:()=>He,axAIAnthropicDefaultConfig:()=>Xs,axAIAnthropicVertexDefaultConfig:()=>gl,axAIAzureOpenAIBestConfig:()=>Al,axAIAzureOpenAICreativeConfig:()=>fl,axAIAzureOpenAIDefaultConfig:()=>ei,axAIAzureOpenAIFastConfig:()=>xl,axAICohereCreativeConfig:()=>Tl,axAICohereDefaultConfig:()=>ri,axAIDeepSeekCodeConfig:()=>wl,axAIDeepSeekDefaultConfig:()=>oi,axAIGoogleGeminiDefaultConfig:()=>ai,axAIGoogleGeminiDefaultCreativeConfig:()=>kl,axAIGrokBestConfig:()=>Ul,axAIGrokDefaultConfig:()=>$o,axAIHuggingFaceCreativeConfig:()=>Ol,axAIHuggingFaceDefaultConfig:()=>ui,axAIMistralBestConfig:()=>Ml,axAIMistralDefaultConfig:()=>Ro,axAIOllamaDefaultConfig:()=>pi,axAIOllamaDefaultCreativeConfig:()=>El,axAIOpenAIBestConfig:()=>ao,axAIOpenAICreativeConfig:()=>lo,axAIOpenAIDefaultConfig:()=>Dt,axAIOpenAIFastConfig:()=>uo,axAIOpenAIResponsesBestConfig:()=>Pl,axAIOpenAIResponsesCreativeConfig:()=>Fl,axAIOpenAIResponsesDefaultConfig:()=>hr,axAIOpenRouterDefaultConfig:()=>mi,axAIRekaBestConfig:()=>Nl,axAIRekaCreativeConfig:()=>Ll,axAIRekaDefaultConfig:()=>xr,axAIRekaFastConfig:()=>Dl,axAITogetherDefaultConfig:()=>hi,axAIWebLLMCreativeConfig:()=>Gl,axAIWebLLMDefaultConfig:()=>xi,axAnalyzeChatPromptRequirements:()=>_l,axAnalyzeRequestRequirements:()=>Gt,axBaseAIDefaultConfig:()=>Ce,axBaseAIDefaultCreativeConfig:()=>De,axBuildActorDefinition:()=>vs,axBuildResponderDefinition:()=>Ss,axCheckMetricsHealth:()=>jl,axCreateDefaultColorLogger:()=>Bs,axCreateDefaultOptimizerColorLogger:()=>Qi,axCreateDefaultOptimizerTextLogger:()=>Hu,axCreateDefaultTextLogger:()=>La,axCreateFlowColorLogger:()=>Gr,axCreateFlowTextLogger:()=>Zu,axCreateJSRuntime:()=>lc,axDefaultFlowLogger:()=>ec,axDefaultMetricsConfig:()=>Ci,axDefaultOptimizerLogger:()=>Fr,axDefaultOptimizerMetricsConfig:()=>Xi,axGetCompatibilityReport:()=>yl,axGetFormatCompatibility:()=>Il,axGetMetricsConfig:()=>zl,axGetOptimizerMetricsConfig:()=>Wu,axGetProvidersWithMediaSupport:()=>bl,axGlobals:()=>pe,axModelInfoAnthropic:()=>ir,axModelInfoCohere:()=>go,axModelInfoDeepSeek:()=>ho,axModelInfoGoogleGemini:()=>yo,axModelInfoGrok:()=>_o,axModelInfoGroq:()=>Io,axModelInfoHuggingFace:()=>Co,axModelInfoMistral:()=>wo,axModelInfoOpenAI:()=>rn,axModelInfoOpenAIResponses:()=>io,axModelInfoReka:()=>Mo,axModelInfoTogether:()=>Po,axModelInfoWebLLM:()=>Fo,axProcessContentForProvider:()=>Oo,axRAG:()=>wc,axScoreProvidersForRequest:()=>po,axSelectOptimalProvider:()=>mo,axSpanAttributes:()=>ge,axSpanEvents:()=>gt,axUpdateMetricsConfig:()=>ql,axUpdateOptimizerMetricsConfig:()=>Ku,axValidateChatRequestMessage:()=>Zt,axValidateChatResponseResult:()=>so,axValidateProviderCapabilities:()=>ti,axWorkerRuntime:()=>bs,f:()=>Ae,flow:()=>xs,s:()=>Vu});function rt({model:s,modelInfo:e,models:t}){let n=t?.find(u=>u.key===s),r=n&&"model"in n?n.model:s,o=e.find(u=>u.name===s);if(o)return o;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+$/,""),l=e.find(u=>u.name===a);return l||null}var Es=(()=>{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 je(){return Es.randomUUID()}async function Dc(s){let e=new TextEncoder,t=typeof s=="string"?e.encode(s):s,n=await Es.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(n)).map(i=>i.toString(16).padStart(2,"0")).join("")}var Ms=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 o=0;o<n.length;o++){let i=n[o];r=(r<<5)-r+i,r=r&r}return Math.abs(r).toString(16).padStart(8,"0")}async digestAsync(){return Dc(this.data)}};function et(s){if(s!=="sha256")throw new Error("Only SHA-256 algorithm is supported");return new Ms}function ga(){return Es}var Vr=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 Mc=Object.create;var Kr=Object.defineProperty;var Ec=Object.getOwnPropertyDescriptor;var Pc=Object.getOwnPropertyNames;var Fc=Object.getPrototypeOf,_c=Object.prototype.hasOwnProperty;var $c=(s=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(s,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):s)(function(s){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+s+'" is not supported')});var Wr=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),Nc=(s,e)=>{for(var t in e)Kr(s,t,{get:e[t],enumerable:!0})},da=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Pc(e))!_c.call(s,r)&&r!==t&&Kr(s,r,{get:()=>e[r],enumerable:!(n=Ec(e,r))||n.enumerable});return s};var Yn=(s,e,t)=>(t=s!=null?Mc(Fc(s)):{},da(e||!s||!s.__esModule?Kr(t,"default",{value:s,enumerable:!0}):t,s)),Lc=s=>da(Kr({},"__esModule",{value:!0}),s);var iu=Wr((ki,Oi)=>{"use strict";(function(s,e){typeof ki=="object"&&typeof Oi<"u"?Oi.exports=e():typeof define=="function"&&define.amd?define(e):(s=typeof globalThis<"u"?globalThis:s||self).dayjs=e()})(ki,function(){"use strict";var s=1e3,e=6e4,t=36e5,n="millisecond",r="second",o="minute",i="hour",a="day",l="week",u="month",c="quarter",p="year",d="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|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,f={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(L){var I=["th","st","nd","rd"],v=L%100;return"["+L+(I[(v-20)%10]||I[v]||I[0])+"]"}},y=function(L,I,v){var E=String(L);return!E||E.length>=I?L:""+Array(I+1-E.length).join(v)+L},x={s:y,z:function(L){var I=-L.utcOffset(),v=Math.abs(I),E=Math.floor(v/60),$=v%60;return(I<=0?"+":"-")+y(E,2,"0")+":"+y($,2,"0")},m:function L(I,v){if(I.date()<v.date())return-L(v,I);var E=12*(v.year()-I.year())+(v.month()-I.month()),$=I.clone().add(E,u),S=v-$<0,P=I.clone().add(E+(S?-1:1),u);return+(-(E+(v-$)/(S?$-P:P-$))||0)},a:function(L){return L<0?Math.ceil(L)||0:Math.floor(L)},p:function(L){return{M:u,y:p,w:l,d:a,D:d,h:i,m:o,s:r,ms:n,Q:c}[L]||String(L||"").toLowerCase().replace(/s$/,"")},u:function(L){return L===void 0}},A="en",T={};T[A]=f;var b="$isDayjsObject",R=function(L){return L instanceof G||!(!L||!L[b])},O=function L(I,v,E){var $;if(!I)return A;if(typeof I=="string"){var S=I.toLowerCase();T[S]&&($=S),v&&(T[S]=v,$=S);var P=I.split("-");if(!$&&P.length>1)return L(P[0])}else{var j=I.name;T[j]=I,$=j}return!E&&$&&(A=$),$||!E&&A},_=function(L,I){if(R(L))return L.clone();var v=typeof I=="object"?I:{};return v.date=L,v.args=arguments,new G(v)},M=x;M.l=O,M.i=R,M.w=function(L,I){return _(L,{locale:I.$L,utc:I.$u,x:I.$x,$offset:I.$offset})};var G=function(){function L(v){this.$L=O(v.locale,null,!0),this.parse(v),this.$x=this.$x||v.x||{},this[b]=!0}var I=L.prototype;return I.parse=function(v){this.$d=function(E){var $=E.date,S=E.utc;if($===null)return new Date(NaN);if(M.u($))return new Date;if($ instanceof Date)return new Date($);if(typeof $=="string"&&!/Z$/i.test($)){var P=$.match(g);if(P){var j=P[2]-1||0,N=(P[7]||"0").substring(0,3);return S?new Date(Date.UTC(P[1],j,P[3]||1,P[4]||0,P[5]||0,P[6]||0,N)):new Date(P[1],j,P[3]||1,P[4]||0,P[5]||0,P[6]||0,N)}}return new Date($)}(v),this.init()},I.init=function(){var v=this.$d;this.$y=v.getFullYear(),this.$M=v.getMonth(),this.$D=v.getDate(),this.$W=v.getDay(),this.$H=v.getHours(),this.$m=v.getMinutes(),this.$s=v.getSeconds(),this.$ms=v.getMilliseconds()},I.$utils=function(){return M},I.isValid=function(){return this.$d.toString()!==m},I.isSame=function(v,E){var $=_(v);return this.startOf(E)<=$&&$<=this.endOf(E)},I.isAfter=function(v,E){return _(v)<this.startOf(E)},I.isBefore=function(v,E){return this.endOf(E)<_(v)},I.$g=function(v,E,$){return M.u(v)?this[E]:this.set($,v)},I.unix=function(){return Math.floor(this.valueOf()/1e3)},I.valueOf=function(){return this.$d.getTime()},I.startOf=function(v,E){var $=this,S=!!M.u(E)||E,P=M.p(v),j=function(Ie,te){var he=M.w($.$u?Date.UTC($.$y,te,Ie):new Date($.$y,te,Ie),$);return S?he:he.endOf(a)},N=function(Ie,te){return M.w($.toDate()[Ie].apply($.toDate("s"),(S?[0,0,0,0]:[23,59,59,999]).slice(te)),$)},K=this.$W,re=this.$M,ne=this.$D,oe="set"+(this.$u?"UTC":"");switch(P){case p:return S?j(1,0):j(31,11);case u:return S?j(1,re):j(0,re+1);case l:var W=this.$locale().weekStart||0,se=(K<W?K+7:K)-W;return j(S?ne-se:ne+(6-se),re);case a:case d:return N(oe+"Hours",0);case i:return N(oe+"Minutes",1);case o:return N(oe+"Seconds",2);case r:return N(oe+"Milliseconds",3);default:return this.clone()}},I.endOf=function(v){return this.startOf(v,!1)},I.$set=function(v,E){var $,S=M.p(v),P="set"+(this.$u?"UTC":""),j=($={},$[a]=P+"Date",$[d]=P+"Date",$[u]=P+"Month",$[p]=P+"FullYear",$[i]=P+"Hours",$[o]=P+"Minutes",$[r]=P+"Seconds",$[n]=P+"Milliseconds",$)[S],N=S===a?this.$D+(E-this.$W):E;if(S===u||S===p){var K=this.clone().set(d,1);K.$d[j](N),K.init(),this.$d=K.set(d,Math.min(this.$D,K.daysInMonth())).$d}else j&&this.$d[j](N);return this.init(),this},I.set=function(v,E){return this.clone().$set(v,E)},I.get=function(v){return this[M.p(v)]()},I.add=function(v,E){var $,S=this;v=Number(v);var P=M.p(E),j=function(re){var ne=_(S);return M.w(ne.date(ne.date()+Math.round(re*v)),S)};if(P===u)return this.set(u,this.$M+v);if(P===p)return this.set(p,this.$y+v);if(P===a)return j(1);if(P===l)return j(7);var N=($={},$[o]=e,$[i]=t,$[r]=s,$)[P]||1,K=this.$d.getTime()+v*N;return M.w(K,this)},I.subtract=function(v,E){return this.add(-1*v,E)},I.format=function(v){var E=this,$=this.$locale();if(!this.isValid())return $.invalidDate||m;var S=v||"YYYY-MM-DDTHH:mm:ssZ",P=M.z(this),j=this.$H,N=this.$m,K=this.$M,re=$.weekdays,ne=$.months,oe=$.meridiem,W=function(te,he,ve,we){return te&&(te[he]||te(E,S))||ve[he].slice(0,we)},se=function(te){return M.s(j%12||12,te,"0")},Ie=oe||function(te,he,ve){var we=te<12?"AM":"PM";return ve?we.toLowerCase():we};return S.replace(h,function(te,he){return he||function(ve){switch(ve){case"YY":return String(E.$y).slice(-2);case"YYYY":return M.s(E.$y,4,"0");case"M":return K+1;case"MM":return M.s(K+1,2,"0");case"MMM":return W($.monthsShort,K,ne,3);case"MMMM":return W(ne,K);case"D":return E.$D;case"DD":return M.s(E.$D,2,"0");case"d":return String(E.$W);case"dd":return W($.weekdaysMin,E.$W,re,2);case"ddd":return W($.weekdaysShort,E.$W,re,3);case"dddd":return re[E.$W];case"H":return String(j);case"HH":return M.s(j,2,"0");case"h":return se(1);case"hh":return se(2);case"a":return Ie(j,N,!0);case"A":return Ie(j,N,!1);case"m":return String(N);case"mm":return M.s(N,2,"0");case"s":return String(E.$s);case"ss":return M.s(E.$s,2,"0");case"SSS":return M.s(E.$ms,3,"0");case"Z":return P}return null}(te)||P.replace(":","")})},I.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},I.diff=function(v,E,$){var S,P=this,j=M.p(E),N=_(v),K=(N.utcOffset()-this.utcOffset())*e,re=this-N,ne=function(){return M.m(P,N)};switch(j){case p:S=ne()/12;break;case u:S=ne();break;case c:S=ne()/3;break;case l:S=(re-K)/6048e5;break;case a:S=(re-K)/864e5;break;case i:S=re/t;break;case o:S=re/e;break;case r:S=re/s;break;default:S=re}return $?S:M.a(S)},I.daysInMonth=function(){return this.endOf(u).$D},I.$locale=function(){return T[this.$L]},I.locale=function(v,E){if(!v)return this.$L;var $=this.clone(),S=O(v,E,!0);return S&&($.$L=S),$},I.clone=function(){return M.w(this.$d,this)},I.toDate=function(){return new Date(this.valueOf())},I.toJSON=function(){return this.isValid()?this.toISOString():null},I.toISOString=function(){return this.$d.toISOString()},I.toString=function(){return this.$d.toUTCString()},L}(),B=G.prototype;return _.prototype=B,[["$ms",n],["$s",r],["$m",o],["$H",i],["$W",a],["$M",u],["$y",p],["$D",d]].forEach(function(L){B[L[1]]=function(I){return this.$g(I,L[0],L[1])}}),_.extend=function(L,I){return L.$i||(L(I,G,_),L.$i=!0),_},_.locale=O,_.isDayjs=R,_.unix=function(L){return _(1e3*L)},_.en=T[A],_.Ls=T,_.p={},_})});var au=Wr((Mi,Ei)=>{"use strict";(function(s,e){typeof Mi=="object"&&typeof Ei<"u"?Ei.exports=e():typeof define=="function"&&define.amd?define(e):(s=typeof globalThis<"u"?globalThis:s||self).dayjs_plugin_customParseFormat=e()})(Mi,function(){"use strict";var s={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?/,o=/\d*[^-_:/,()\s\d]+/,i={},a=function(g){return(g=+g)+(g>68?1900:2e3)},l=function(g){return function(h){this[g]=+h}},u=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(h){if(!h||h==="Z")return 0;var f=h.match(/([+-]|\d\d)/g),y=60*f[1]+(+f[2]||0);return y===0?0:f[0]==="+"?-y:y}(g)}],c=function(g){var h=i[g];return h&&(h.indexOf?h:h.s.concat(h.f))},p=function(g,h){var f,y=i.meridiem;if(y){for(var x=1;x<=24;x+=1)if(g.indexOf(y(x,0,h))>-1){f=x>12;break}}else f=g===(h?"pm":"PM");return f},d={A:[o,function(g){this.afternoon=p(g,!1)}],a:[o,function(g){this.afternoon=p(g,!0)}],Q:[t,function(g){this.month=3*(g-1)+1}],S:[t,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[r,l("seconds")],ss:[r,l("seconds")],m:[r,l("minutes")],mm:[r,l("minutes")],H:[r,l("hours")],h:[r,l("hours")],HH:[r,l("hours")],hh:[r,l("hours")],D:[r,l("day")],DD:[n,l("day")],Do:[o,function(g){var h=i.ordinal,f=g.match(/\d+/);if(this.day=f[0],h)for(var y=1;y<=31;y+=1)h(y).replace(/\[|\]/g,"")===g&&(this.day=y)}],w:[r,l("week")],ww:[n,l("week")],M:[r,l("month")],MM:[n,l("month")],MMM:[o,function(g){var h=c("months"),f=(c("monthsShort")||h.map(function(y){return y.slice(0,3)})).indexOf(g)+1;if(f<1)throw new Error;this.month=f%12||f}],MMMM:[o,function(g){var h=c("months").indexOf(g)+1;if(h<1)throw new Error;this.month=h%12||h}],Y:[/[+-]?\d+/,l("year")],YY:[n,function(g){this.year=a(g)}],YYYY:[/\d{4}/,l("year")],Z:u,ZZ:u};function m(g){var h,f;h=g,f=i&&i.formats;for(var y=(g=h.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(_,M,G){var B=G&&G.toUpperCase();return M||f[G]||s[G]||f[B].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(L,I,v){return I||v.slice(1)})})).match(e),x=y.length,A=0;A<x;A+=1){var T=y[A],b=d[T],R=b&&b[0],O=b&&b[1];y[A]=O?{regex:R,parser:O}:T.replace(/^\[|\]$/g,"")}return function(_){for(var M={},G=0,B=0;G<x;G+=1){var L=y[G];if(typeof L=="string")B+=L.length;else{var I=L.regex,v=L.parser,E=_.slice(B),$=I.exec(E)[0];v.call(M,$),_=_.replace($,"")}}return function(S){var P=S.afternoon;if(P!==void 0){var j=S.hours;P?j<12&&(S.hours+=12):j===12&&(S.hours=0),delete S.afternoon}}(M),M}}return function(g,h,f){f.p.customParseFormat=!0,g&&g.parseTwoDigitYear&&(a=g.parseTwoDigitYear);var y=h.prototype,x=y.parse;y.parse=function(A){var T=A.date,b=A.utc,R=A.args;this.$u=b;var O=R[1];if(typeof O=="string"){var _=R[2]===!0,M=R[3]===!0,G=_||M,B=R[2];M&&(B=R[2]),i=this.$locale(),!_&&B&&(i=f.Ls[B]),this.$d=function(E,$,S,P){try{if(["x","X"].indexOf($)>-1)return new Date(($==="X"?1e3:1)*E);var j=m($)(E),N=j.year,K=j.month,re=j.day,ne=j.hours,oe=j.minutes,W=j.seconds,se=j.milliseconds,Ie=j.zone,te=j.week,he=new Date,ve=re||(N||K?1:he.getDate()),we=N||he.getFullYear(),Me=0;N&&!K||(Me=K>0?K-1:he.getMonth());var w,F=ne||0,k=oe||0,C=W||0,D=se||0;return Ie?new Date(Date.UTC(we,Me,ve,F,k,C,D+60*Ie.offset*1e3)):S?new Date(Date.UTC(we,Me,ve,F,k,C,D)):(w=new Date(we,Me,ve,F,k,C,D),te&&(w=P(w).week(te).toDate()),w)}catch{return new Date("")}}(T,O,b,f),this.init(),B&&B!==!0&&(this.$L=this.locale(B).$L),G&&T!=this.format(O)&&(this.$d=new Date("")),i={}}else if(O instanceof Array)for(var L=O.length,I=1;I<=L;I+=1){R[1]=O[I-1];var v=f.apply(this,R);if(v.isValid()){this.$d=v.$d,this.$L=v.$L,this.init();break}I===L&&(this.$d=new Date(""))}else x.call(this,A)}}})});var lu=Wr((Pi,Fi)=>{"use strict";(function(s,e){typeof Pi=="object"&&typeof Fi<"u"?Fi.exports=e():typeof define=="function"&&define.amd?define(e):(s=typeof globalThis<"u"?globalThis:s||self).dayjs_plugin_timezone=e()})(Pi,function(){"use strict";var s={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(t,n,r){var o,i=function(c,p,d){d===void 0&&(d={});var m=new Date(c),g=function(h,f){f===void 0&&(f={});var y=f.timeZoneName||"short",x=h+"|"+y,A=e[x];return A||(A=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:h,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:y}),e[x]=A),A}(p,d);return g.formatToParts(m)},a=function(c,p){for(var d=i(c,p),m=[],g=0;g<d.length;g+=1){var h=d[g],f=h.type,y=h.value,x=s[f];x>=0&&(m[x]=parseInt(y,10))}var A=m[3],T=A===24?0:A,b=m[0]+"-"+m[1]+"-"+m[2]+" "+T+":"+m[4]+":"+m[5]+":000",R=+c;return(r.utc(b).valueOf()-(R-=R%1e3))/6e4},l=n.prototype;l.tz=function(c,p){c===void 0&&(c=o);var d,m=this.utcOffset(),g=this.toDate(),h=g.toLocaleString("en-US",{timeZone:c}),f=Math.round((g-new Date(h))/1e3/60),y=15*-Math.round(g.getTimezoneOffset()/15)-f;if(!Number(y))d=this.utcOffset(0,p);else if(d=r(h,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(y,!0),p){var x=d.utcOffset();d=d.add(m-x,"minute")}return d.$x.$timezone=c,d},l.offsetName=function(c){var p=this.$x.$timezone||r.tz.guess(),d=i(this.valueOf(),p,{timeZoneName:c}).find(function(m){return m.type.toLowerCase()==="timezonename"});return d&&d.value};var u=l.startOf;l.startOf=function(c,p){if(!this.$x||!this.$x.$timezone)return u.call(this,c,p);var d=r(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return u.call(d,c,p).tz(this.$x.$timezone,!0)},r.tz=function(c,p,d){var m=d&&p,g=d||p||o,h=a(+r(),g);if(typeof c!="string")return r(c).tz(g);var f=function(T,b,R){var O=T-60*b*1e3,_=a(O,R);if(b===_)return[O,b];var M=a(O-=60*(_-b)*1e3,R);return _===M?[O,_]:[T-60*Math.min(_,M)*1e3,Math.max(_,M)]}(r.utc(c,m).valueOf(),h,g),y=f[0],x=f[1],A=r(y).utcOffset(x);return A.$x.$timezone=g,A},r.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},r.tz.setDefault=function(c){o=c}}})});var uu=Wr((_i,$i)=>{"use strict";(function(s,e){typeof _i=="object"&&typeof $i<"u"?$i.exports=e():typeof define=="function"&&define.amd?define(e):(s=typeof globalThis<"u"?globalThis:s||self).dayjs_plugin_utc=e()})(_i,function(){"use strict";var s="minute",e=/[+-]\d\d(?::?\d\d)?/g,t=/([+-]|\d\d)/g;return function(n,r,o){var i=r.prototype;o.utc=function(m){var g={date:m,utc:!0,args:arguments};return new r(g)},i.utc=function(m){var g=o(this.toDate(),{locale:this.$L,utc:!0});return m?g.add(this.utcOffset(),s):g},i.local=function(){return o(this.toDate(),{locale:this.$L,utc:!1})};var a=i.parse;i.parse=function(m){m.utc&&(this.$u=!0),this.$utils().u(m.$offset)||(this.$offset=m.$offset),a.call(this,m)};var l=i.init;i.init=function(){if(this.$u){var m=this.$d;this.$y=m.getUTCFullYear(),this.$M=m.getUTCMonth(),this.$D=m.getUTCDate(),this.$W=m.getUTCDay(),this.$H=m.getUTCHours(),this.$m=m.getUTCMinutes(),this.$s=m.getUTCSeconds(),this.$ms=m.getUTCMilliseconds()}else l.call(this)};var u=i.utcOffset;i.utcOffset=function(m,g){var h=this.$utils().u;if(h(m))return this.$u?0:h(this.$offset)?u.call(this):this.$offset;if(typeof m=="string"&&(m=function(A){A===void 0&&(A="");var T=A.match(e);if(!T)return null;var b=(""+T[0]).match(t)||["-",0,0],R=b[0],O=60*+b[1]+ +b[2];return O===0?0:R==="+"?O:-O}(m),m===null))return this;var f=Math.abs(m)<=16?60*m:m,y=this;if(g)return y.$offset=f,y.$u=m===0,y;if(m!==0){var x=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(y=this.local().add(f+x,s)).$offset=f,y.$x.$localOffset=x}else y=this.utc();return y};var c=i.format;i.format=function(m){var g=m||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return c.call(this,g)},i.valueOf=function(){var m=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*m},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(m){return m==="s"&&this.$offset?o(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():p.call(this)};var d=i.diff;i.diff=function(m,g,h){if(m&&this.$u===m.$u)return d.call(this,m,g,h);var f=this.local(),y=o(m).local();return d.call(f,y,g,h)}}})});var gm={};Nc(gm,{AxACE:()=>ds,AxACEOptimizedProgram:()=>Dr,AxAI:()=>Ir,AxAIAnthropic:()=>en,AxAIAnthropicModel:()=>or,AxAIAnthropicVertexModel:()=>sr,AxAIAzureOpenAI:()=>sn,AxAICohere:()=>an,AxAICohereEmbedModel:()=>ur,AxAICohereModel:()=>lr,AxAIDeepSeek:()=>ln,AxAIDeepSeekModel:()=>cr,AxAIGoogleGemini:()=>un,AxAIGoogleGeminiEmbedModel:()=>fo,AxAIGoogleGeminiEmbedTypes:()=>si,AxAIGoogleGeminiModel:()=>pr,AxAIGoogleGeminiSafetyCategory:()=>xo,AxAIGoogleGeminiSafetyThreshold:()=>Ao,AxAIGrok:()=>In,AxAIGrokEmbedModels:()=>Ai,AxAIGrokModel:()=>br,AxAIGroq:()=>pn,AxAIGroqModel:()=>dr,AxAIHuggingFace:()=>dn,AxAIHuggingFaceModel:()=>To,AxAIMistral:()=>mn,AxAIMistralEmbedModels:()=>ci,AxAIMistralModel:()=>mr,AxAIOllama:()=>gn,AxAIOpenAI:()=>on,AxAIOpenAIBase:()=>Ee,AxAIOpenAIEmbedModel:()=>tn,AxAIOpenAIModel:()=>ar,AxAIOpenAIResponses:()=>fn,AxAIOpenAIResponsesBase:()=>gr,AxAIOpenAIResponsesImpl:()=>hn,AxAIOpenAIResponsesModel:()=>nn,AxAIOpenRouter:()=>xn,AxAIRefusalError:()=>ke,AxAIReka:()=>An,AxAIRekaModel:()=>fr,AxAIServiceAbortedError:()=>$e,AxAIServiceAuthenticationError:()=>vt,AxAIServiceError:()=>qe,AxAIServiceNetworkError:()=>Ue,AxAIServiceResponseError:()=>Rt,AxAIServiceStatusError:()=>Ve,AxAIServiceStreamTerminatedError:()=>ot,AxAIServiceTimeoutError:()=>tt,AxAITogether:()=>yn,AxAITogetherModel:()=>Ar,AxAIWebLLM:()=>bn,AxAIWebLLMModel:()=>yr,AxAgent:()=>qr,AxApacheTika:()=>ns,AxAssertionError:()=>bt,AxBalancer:()=>co,AxBaseAI:()=>Fe,AxBaseOptimizer:()=>Xe,AxBootstrapFewShot:()=>Bn,AxContentProcessingError:()=>mt,AxDB:()=>No,AxDBBase:()=>it,AxDBCloudflare:()=>Cn,AxDBManager:()=>Lo,AxDBMemory:()=>Ft,AxDBPinecone:()=>Tn,AxDBWeaviate:()=>wn,AxDefaultCostTracker:()=>_r,AxDefaultResultReranker:()=>ts,AxDockerSession:()=>As,AxEmbeddingAdapter:()=>ys,AxEvalUtil:()=>Bu,AxFlow:()=>Ur,AxFlowDependencyAnalyzer:()=>jn,AxFlowExecutionPlanner:()=>zn,AxFlowSubContextImpl:()=>Wn,AxFlowTypedSubContextImpl:()=>fs,AxFluentFieldType:()=>Ge,AxFunctionError:()=>Sr,AxFunctionProcessor:()=>Or,AxGEPA:()=>Gn,AxGEPAFlow:()=>ms,AxGen:()=>Oe,AxGenerateError:()=>Pr,AxHFDataLoader:()=>ps,AxInstanceRegistry:()=>En,AxJSRuntime:()=>Vt,AxJSRuntimePermission:()=>ca,AxJudge:()=>Ln,AxLLMRequestTypeValues:()=>js,AxLearn:()=>cs,AxMCPClient:()=>Cs,AxMCPHTTPSSETransport:()=>Rs,AxMCPStreambleHTTPTransport:()=>ws,AxMediaNotSupportedError:()=>st,AxMemory:()=>Rn,AxMiPRO:()=>hs,AxMockAIService:()=>vo,AxMultiServiceRouter:()=>So,AxOptimizedProgramImpl:()=>Ct,AxProgram:()=>Nt,AxPromptTemplate:()=>zt,AxProviderRouter:()=>Eo,AxRateLimiterTokenUsage:()=>cn,AxSignature:()=>Pe,AxSignatureBuilder:()=>Mr,AxSimpleClassifier:()=>os,AxSimpleClassifierClass:()=>rs,AxSpanKindValues:()=>qs,AxStepContextImpl:()=>$n,AxStopFunctionCallException:()=>Bt,AxStringUtil:()=>es,AxSynth:()=>Un,AxTestPrompt:()=>ss,AxTokenLimitError:()=>Qn,AxTraceLogger:()=>Dn,agent:()=>Tc,ai:()=>Ul,ax:()=>He,axAIAnthropicDefaultConfig:()=>Xs,axAIAnthropicVertexDefaultConfig:()=>ml,axAIAzureOpenAIBestConfig:()=>xl,axAIAzureOpenAICreativeConfig:()=>hl,axAIAzureOpenAIDefaultConfig:()=>ei,axAIAzureOpenAIFastConfig:()=>fl,axAICohereCreativeConfig:()=>Cl,axAICohereDefaultConfig:()=>ri,axAIDeepSeekCodeConfig:()=>Tl,axAIDeepSeekDefaultConfig:()=>oi,axAIGoogleGeminiDefaultConfig:()=>ai,axAIGoogleGeminiDefaultCreativeConfig:()=>Sl,axAIGrokBestConfig:()=>Gl,axAIGrokDefaultConfig:()=>$o,axAIHuggingFaceCreativeConfig:()=>kl,axAIHuggingFaceDefaultConfig:()=>ui,axAIMistralBestConfig:()=>Ol,axAIMistralDefaultConfig:()=>Ro,axAIOllamaDefaultConfig:()=>pi,axAIOllamaDefaultCreativeConfig:()=>Ml,axAIOpenAIBestConfig:()=>ao,axAIOpenAICreativeConfig:()=>lo,axAIOpenAIDefaultConfig:()=>Dt,axAIOpenAIFastConfig:()=>uo,axAIOpenAIResponsesBestConfig:()=>El,axAIOpenAIResponsesCreativeConfig:()=>Pl,axAIOpenAIResponsesDefaultConfig:()=>hr,axAIOpenRouterDefaultConfig:()=>mi,axAIRekaBestConfig:()=>$l,axAIRekaCreativeConfig:()=>Nl,axAIRekaDefaultConfig:()=>xr,axAIRekaFastConfig:()=>Ll,axAITogetherDefaultConfig:()=>hi,axAIWebLLMCreativeConfig:()=>Dl,axAIWebLLMDefaultConfig:()=>xi,axAnalyzeChatPromptRequirements:()=>Fl,axAnalyzeRequestRequirements:()=>Gt,axBaseAIDefaultConfig:()=>Ce,axBaseAIDefaultCreativeConfig:()=>De,axBuildActorDefinition:()=>vs,axBuildResponderDefinition:()=>Ss,axCheckMetricsHealth:()=>Bl,axCreateDefaultColorLogger:()=>Bs,axCreateDefaultOptimizerColorLogger:()=>Qi,axCreateDefaultOptimizerTextLogger:()=>zu,axCreateDefaultTextLogger:()=>Na,axCreateFlowColorLogger:()=>Gr,axCreateFlowTextLogger:()=>Xu,axCreateJSRuntime:()=>ac,axDefaultFlowLogger:()=>Zu,axDefaultMetricsConfig:()=>Ci,axDefaultOptimizerLogger:()=>Fr,axDefaultOptimizerMetricsConfig:()=>Xi,axGetCompatibilityReport:()=>Al,axGetFormatCompatibility:()=>bl,axGetMetricsConfig:()=>ql,axGetOptimizerMetricsConfig:()=>Ku,axGetProvidersWithMediaSupport:()=>yl,axGlobals:()=>pe,axModelInfoAnthropic:()=>ir,axModelInfoCohere:()=>go,axModelInfoDeepSeek:()=>ho,axModelInfoGoogleGemini:()=>yo,axModelInfoGrok:()=>_o,axModelInfoGroq:()=>Io,axModelInfoHuggingFace:()=>Co,axModelInfoMistral:()=>wo,axModelInfoOpenAI:()=>rn,axModelInfoOpenAIResponses:()=>io,axModelInfoReka:()=>Mo,axModelInfoTogether:()=>Po,axModelInfoWebLLM:()=>Fo,axProcessContentForProvider:()=>Oo,axRAG:()=>wc,axScoreProvidersForRequest:()=>po,axSelectOptimalProvider:()=>mo,axSpanAttributes:()=>ge,axSpanEvents:()=>gt,axUpdateMetricsConfig:()=>jl,axUpdateOptimizerMetricsConfig:()=>Hu,axValidateChatRequestMessage:()=>Zt,axValidateChatResponseResult:()=>so,axValidateProviderCapabilities:()=>ti,axWorkerRuntime:()=>bs,f:()=>Ae,flow:()=>xs,s:()=>Wu});function rt({model:s,modelInfo:e,models:t}){let n=t?.find(u=>u.key===s),r=n&&"model"in n?n.model:s,o=e.find(u=>u.name===s);if(o)return o;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+$/,""),l=e.find(u=>u.name===a);return l||null}var Es=(()=>{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 je(){return Es.randomUUID()}async function Dc(s){let e=new TextEncoder,t=typeof s=="string"?e.encode(s):s,n=await Es.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(n)).map(i=>i.toString(16).padStart(2,"0")).join("")}var Ms=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 o=0;o<n.length;o++){let i=n[o];r=(r<<5)-r+i,r=r&r}return Math.abs(r).toString(16).padStart(8,"0")}async digestAsync(){return Dc(this.data)}};function et(s){if(s!=="sha256")throw new Error("Only SHA-256 algorithm is supported");return new Ms}function ma(){return Es}var Vr=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
  `)?`
@@ -8,14 +8,14 @@
8
8
  `)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}},Ve=class extends qe{constructor(t,n,r,o,i,a,l,u=!0){let c=l?` (after ${l} retries)`:"";super(`HTTP ${t} - ${n}${c}`,r,o,{httpStatus:t,httpStatusText:n,responseBody:i,...a},{},u);this.status=t;this.statusText=n;this.name="AxAIServiceStatusError"}},Ue=class extends qe{constructor(t,n,r,o,i,a=!0){super(`Network Error: ${t.message}`,n,r,o,{originalErrorName:t.name,originalErrorStack:t.stack,...i},a);this.originalError=t;this.name="AxAIServiceNetworkError",this.stack=t.stack}},Rt=class extends qe{constructor(e,t,n,r,o=!0){super(e,t,n,void 0,r,o),this.name="AxAIServiceResponseError"}},ot=class extends qe{constructor(t,n,r,o,i=!0){super("Stream terminated unexpectedly by remote host",t,n,void 0,{lastChunk:r,...o},i);this.lastChunk=r;this.name="AxAIServiceStreamTerminatedError"}},tt=class extends qe{constructor(e,t,n,r,o=!0){super(`Request timed out after ${t}ms`,e,n,void 0,{timeoutMs:t,...r},o),this.name="AxAIServiceTimeoutError"}},Qn=class extends Ve{constructor(e,t,n,r,o,i,a=!0){super(e,t,n,r,o,i,void 0,a),this.name="AxTokenLimitError"}},$e=class extends qe{constructor(e,t,n,r,o=!0){super(`Request aborted${t?`: ${t}`:""}`,e,n,void 0,{abortReason:t,...r},o),this.name="AxAIServiceAbortedError"}},vt=class extends qe{constructor(e,t,n,r,o=!0){super("Authentication failed",e,t,n,r,o),this.name="AxAIServiceAuthenticationError"}},ke=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=je()}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
9
  `)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}},st=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=je()}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
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=je()}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 Fs(s){try{return s.headers.get("content-type")?.includes("application/json")?await s.json():await s.clone().text()}catch(e){return`[ReadableStream - read failed: ${e.message}]`}}function ha(s,e){return Math.min(e.maxDelayMs,e.initialDelayMs*e.backoffFactor**s)*(.75+Math.random()*.5)}function Bc(s){if(!s)return;let e=Number(s);if(!Number.isNaN(e))return e*1e3;let t=Date.parse(s);if(!Number.isNaN(t)){let n=t-Date.now();return Math.max(0,n)}}function jc(){return{startTime:Date.now(),retryCount:0}}function fa(s){s.retryCount++,s.lastRetryTime=Date.now()}function xa(s,e,t,n){return t>=n.maxRetries?!1:e&&n.retryableStatusCodes.includes(e)?!0:s instanceof Ue&&!(s instanceof vt)}var ze=async(s,e)=>{if(s.localCall)return await s.localCall(e,s.stream);if(!s.url)throw new Error("API URL is required when localCall is not provided");let t={...Gc,...s.retry},n=s.timeout,r=jc(),o=s.verbose??!1,i=s.includeRequestBodyInErrors??!0,a,l=new URL(s.url),u=`${[l.pathname,s.name].filter(Boolean).join("/").replace(/\/+/g,"/")}${l.search}`,c=new URL(u,l);if(s.corsProxy){let m=c.href;c=new URL(`${s.corsProxy}?url=${encodeURIComponent(m)}`)}let p=je();if(s.validateRequest&&!await s.validateRequest(e))throw new Rt("Invalid request data",c.href,e,{validation:"request"},i);s.span?.setAttributes({"http.request.method":s.put?"PUT":"POST","url.full":c.href,"request.id":p,"request.startTime":r.startTime});let d=0;for(;;){let m=new AbortController;if(s.abortSignal){if(s.abortSignal.aborted)throw new $e(c.href,s.abortSignal.reason,e,{metrics:r},i);let g=()=>{m.abort(s.abortSignal.reason||"User aborted request")};s.abortSignal.addEventListener("abort",g,{once:!0});let h=m.abort.bind(m);m.abort=f=>{s.abortSignal.removeEventListener("abort",g),h(f)}}n&&(a=setTimeout(()=>{m.abort("Request timeout")},n));try{o&&console.log(`
11
+ `)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}};async function Fs(s){try{return s.headers.get("content-type")?.includes("application/json")?await s.json():await s.clone().text()}catch(e){return`[ReadableStream - read failed: ${e.message}]`}}function ga(s,e){return Math.min(e.maxDelayMs,e.initialDelayMs*e.backoffFactor**s)*(.75+Math.random()*.5)}function Bc(s){if(!s)return;let e=Number(s);if(!Number.isNaN(e))return e*1e3;let t=Date.parse(s);if(!Number.isNaN(t)){let n=t-Date.now();return Math.max(0,n)}}function jc(){return{startTime:Date.now(),retryCount:0}}function ha(s){s.retryCount++,s.lastRetryTime=Date.now()}function fa(s,e,t,n){return t>=n.maxRetries?!1:e&&n.retryableStatusCodes.includes(e)?!0:s instanceof Ue&&!(s instanceof vt)}var ze=async(s,e)=>{if(s.localCall)return await s.localCall(e,s.stream);if(!s.url)throw new Error("API URL is required when localCall is not provided");let t={...Gc,...s.retry},n=s.timeout,r=jc(),o=s.verbose??!1,i=s.includeRequestBodyInErrors??!0,a,l=new URL(s.url),u=`${[l.pathname,s.name].filter(Boolean).join("/").replace(/\/+/g,"/")}${l.search}`,c=new URL(u,l);if(s.corsProxy){let m=c.href;c=new URL(`${s.corsProxy}?url=${encodeURIComponent(m)}`)}let p=je();if(s.validateRequest&&!await s.validateRequest(e))throw new Rt("Invalid request data",c.href,e,{validation:"request"},i);s.span?.setAttributes({"http.request.method":s.put?"PUT":"POST","url.full":c.href,"request.id":p,"request.startTime":r.startTime});let d=0;for(;;){let m=new AbortController;if(s.abortSignal){if(s.abortSignal.aborted)throw new $e(c.href,s.abortSignal.reason,e,{metrics:r},i);let g=()=>{m.abort(s.abortSignal.reason||"User aborted request")};s.abortSignal.addEventListener("abort",g,{once:!0});let h=m.abort.bind(m);m.abort=f=>{s.abortSignal.removeEventListener("abort",g),h(f)}}n&&(a=setTimeout(()=>{m.abort("Request timeout")},n));try{o&&console.log(`
12
12
  --- [AxAI API Request] ---
13
13
  `,`URL: ${c.href}
14
14
  `,`Method: ${s.put?"PUT":"POST"}
15
15
  `,"Headers:",JSON.stringify({"Content-Type":"application/json","X-Request-ID":p,"X-Retry-Count":d.toString(),...s.headers},null,2),`
16
16
  Body:`,JSON.stringify(e,null,2),`
17
17
  ------------------------
18
- `);let g=await(s.fetch??fetch)(c,{method:s.put?"PUT":"POST",headers:{"Content-Type":"application/json","X-Request-ID":p,"X-Retry-Count":d.toString(),...s.headers},body:JSON.stringify(e),signal:m.signal});if(a&&clearTimeout(a),g.status===401||g.status===403){let T=await Fs(g);throw new vt(c.href,e,T,{metrics:r},i)}if(g.status===400){let T=await Fs(g),b=T,R=!1;if(b?.error?.code==="context_length_exceeded")R=!0;else if(b?.type==="invalid_request_error"&&(b?.error?.message?.includes("prompt is too long")||b?.error?.message?.includes("max_tokens")||b?.error?.message?.includes("token limit")))R=!0;else if(b?.error?.code===400&&b?.error?.status==="INVALID_ARGUMENT"&&(b?.error?.message?.includes("token")||b?.error?.message?.includes("limit")))R=!0;else{let O=JSON.stringify(T).toLowerCase();(O.includes("token")&&O.includes("limit")||O.includes("context length")||O.includes("prompt is too long"))&&(R=!0)}if(R)throw new Qn(g.status,g.statusText,c.href,e,T,{metrics:r},i)}if(g.status>=400&&xa(new Error,g.status,d,t)){let T=ha(d,t),b=Bc(g.headers.get("Retry-After"));b!==void 0&&b<=t.maxDelayMs&&(T=b,o&&console.log(`[AxAI] Respecting Retry-After header: ${T}ms`)),d++,fa(r),s.span?.addEvent("retry",{attempt:d,delay:T,status:g.status,"metrics.startTime":r.startTime,"metrics.retryCount":r.retryCount,"metrics.lastRetryTime":r.lastRetryTime}),await new Promise(R=>setTimeout(R,T));continue}if(g.status>=400){let T=await Fs(g);throw new Ve(g.status,g.statusText,c.href,e,T,{metrics:r},d>0?d:void 0,i)}if(!s.stream){let T=await g.json();if(o&&console.log(`
18
+ `);let g=await(s.fetch??fetch)(c,{method:s.put?"PUT":"POST",headers:{"Content-Type":"application/json","X-Request-ID":p,"X-Retry-Count":d.toString(),...s.headers},body:JSON.stringify(e),signal:m.signal});if(a&&clearTimeout(a),g.status===401||g.status===403){let T=await Fs(g);throw new vt(c.href,e,T,{metrics:r},i)}if(g.status===400){let T=await Fs(g),b=T,R=!1;if(b?.error?.code==="context_length_exceeded")R=!0;else if(b?.type==="invalid_request_error"&&(b?.error?.message?.includes("prompt is too long")||b?.error?.message?.includes("max_tokens")||b?.error?.message?.includes("token limit")))R=!0;else if(b?.error?.code===400&&b?.error?.status==="INVALID_ARGUMENT"&&(b?.error?.message?.includes("token")||b?.error?.message?.includes("limit")))R=!0;else{let O=JSON.stringify(T).toLowerCase();(O.includes("token")&&O.includes("limit")||O.includes("context length")||O.includes("prompt is too long"))&&(R=!0)}if(R)throw new Qn(g.status,g.statusText,c.href,e,T,{metrics:r},i)}if(g.status>=400&&fa(new Error,g.status,d,t)){let T=ga(d,t),b=Bc(g.headers.get("Retry-After"));b!==void 0&&b<=t.maxDelayMs&&(T=b,o&&console.log(`[AxAI] Respecting Retry-After header: ${T}ms`)),d++,ha(r),s.span?.addEvent("retry",{attempt:d,delay:T,status:g.status,"metrics.startTime":r.startTime,"metrics.retryCount":r.retryCount,"metrics.lastRetryTime":r.lastRetryTime}),await new Promise(R=>setTimeout(R,T));continue}if(g.status>=400){let T=await Fs(g);throw new Ve(g.status,g.statusText,c.href,e,T,{metrics:r},d>0?d:void 0,i)}if(!s.stream){let T=await g.json();if(o&&console.log(`
19
19
  --- [AxAI API Response] ---
20
20
  `,`Status: ${g.status} ${g.statusText}
21
21
  `,"Body:",JSON.stringify(T,null,2),`
@@ -28,7 +28,7 @@ Body:`,JSON.stringify(e,null,2),`
28
28
  `),!g.body)throw new Rt("Response body is null",c.href,e,{metrics:r},i);let h,f=0;if(typeof window<"u"&&typeof EventSource<"u")return new ReadableStream({start(T){let b=g.body.getReader(),R=new TextDecoder,O="";async function _(){try{for(;;){let{done:M,value:G}=await b.read();if(M){A=!0,T.close();break}O+=R.decode(G,{stream:!0});let B=O.split(`
29
29
 
30
30
  `);O=B.pop()||"";for(let L of B){if(!L.trim())continue;let I=L.split(`
31
- `),v="",E="message";for(let $ of I)$.startsWith("data: ")?v=$.slice(6):$.startsWith("event: ")&&(E=$.slice(7));if(v){if(v==="[DONE]"){T.close();return}try{let $=JSON.parse(v);h=$,f++,r.streamChunks=f,r.lastChunkTime=Date.now(),T.enqueue($),s.span?.addEvent("stream.chunk",{"stream.chunks":f,"stream.duration":Date.now()-r.startTime,"response.retries":r.retryCount,"sse.event.type":E})}catch($){o&&console.warn("Skipping non-JSON SSE data:",v,$)}}}}}catch(M){let G=M,B={...r,streamDuration:Date.now()-r.startTime};G.name==="AbortError"||G.message?.includes("aborted")?T.error(new ot(c.href,e,h,{streamMetrics:B},i)):T.error(new Ue(G,c.href,e,"[ReadableStream - consumed during streaming]",{streamMetrics:B},i))}finally{b.releaseLock()}}_()}});let x=new TransformStream({transform(T,b){h=T,f++,r.streamChunks=f,r.lastChunkTime=Date.now(),b.enqueue(T),s.span?.addEvent("stream.chunk",{"stream.chunks":f,"stream.duration":Date.now()-r.startTime,"response.retries":r.retryCount})}}),A=!1;return new ReadableStream({start(T){let b=g.body.pipeThrough(new Uc).pipeThrough(new Vr).pipeThrough(x).getReader();async function R(){try{for(;;){let{done:O,value:_}=await b.read();if(O){A||(A=!0,T.close());break}if(A)break;T.enqueue(_)}}catch(O){let _=O,M={...r,streamDuration:Date.now()-r.startTime};throw _.name==="AbortError"||_.message?.includes("aborted")?T.error(new ot(c.href,e,h,{streamMetrics:M},i)):_ instanceof TypeError&&_.message.includes("cancelled")?T.error(new ot(c.href,e,h,{streamMetrics:M,cancelReason:"Stream cancelled by client"},i)):T.error(new Ue(_,c.href,e,"[ReadableStream - consumed during streaming]",{streamMetrics:M},i)),_}finally{a&&clearTimeout(a),b.releaseLock()}}R()},cancel(){A=!0}})}catch(g){if(g instanceof Error&&g.name==="AbortError")throw s.abortSignal?.aborted?new $e(c.href,s.abortSignal.reason,e,{metrics:r},i):new tt(c.href,n||0,e,{metrics:r},i);let h=g;if(!(g instanceof qe)&&g instanceof Error&&(h=new Ue(g,c.href,e,void 0,{metrics:r},i)),s.span?.isRecording()&&(s.span.recordException(h),s.span.setAttributes({"error.time":Date.now()-r.startTime,"error.retries":r.retryCount})),h instanceof Ue&&xa(h,void 0,d,t)){let f=ha(d,t);d++,fa(r),s.span?.addEvent("retry",{attempt:d,delay:f,error:h.message,"metrics.startTime":r.startTime,"metrics.retryCount":r.retryCount,"metrics.lastRetryTime":r.lastRetryTime}),await new Promise(y=>setTimeout(y,f));continue}throw h instanceof qe&&(h.context.metrics=r),h}finally{a!==void 0&&clearTimeout(a)}}};var Aa=typeof globalThis=="object"?globalThis:global;var St="1.9.0";var ya=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function qc(s){var e=new Set([s]),t=new Set,n=s.match(ya);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(l){return l===s};function o(a){return t.add(a),!1}function i(a){return e.add(a),!0}return function(l){if(e.has(l))return!0;if(t.has(l))return!1;var u=l.match(ya);if(!u)return o(l);var c={major:+u[1],minor:+u[2],patch:+u[3],prerelease:u[4]};return c.prerelease!=null||r.major!==c.major?o(l):r.major===0?r.minor===c.minor&&r.patch<=c.patch?i(l):o(l):r.minor<=c.minor?i(l):o(l)}}var ba=qc(St);var zc=St.split(".")[0],Xn=Symbol.for("opentelemetry.js.api."+zc),Zn=Aa;function Jt(s,e,t,n){var r;n===void 0&&(n=!1);var o=Zn[Xn]=(r=Zn[Xn])!==null&&r!==void 0?r:{version:St};if(!n&&o[s]){var i=new Error("@opentelemetry/api: Attempted duplicate registration of API: "+s);return t.error(i.stack||i.message),!1}if(o.version!==St){var i=new Error("@opentelemetry/api: Registration of version v"+o.version+" for "+s+" does not match previously registered API v"+St);return t.error(i.stack||i.message),!1}return o[s]=e,t.debug("@opentelemetry/api: Registered a global for "+s+" v"+St+"."),!0}function kt(s){var e,t,n=(e=Zn[Xn])===null||e===void 0?void 0:e.version;if(!(!n||!ba(n)))return(t=Zn[Xn])===null||t===void 0?void 0:t[s]}function Yt(s,e){e.debug("@opentelemetry/api: Unregistering a global for "+s+" v"+St+".");var t=Zn[Xn];t&&delete t[s]}var Hc=function(s,e){var t=typeof Symbol=="function"&&s[Symbol.iterator];if(!t)return s;var n=t.call(s),r,o=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)o.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 o},Kc=function(s,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,o;n<r;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return s.concat(o||Array.prototype.slice.call(e))},Ia=function(){function s(e){this._namespace=e.namespace||"DiagComponentLogger"}return s.prototype.debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return er("debug",this._namespace,e)},s.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return er("error",this._namespace,e)},s.prototype.info=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return er("info",this._namespace,e)},s.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return er("warn",this._namespace,e)},s.prototype.verbose=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return er("verbose",this._namespace,e)},s}();function er(s,e,t){var n=kt("diag");if(n)return t.unshift(e),n[s].apply(n,Kc([],Hc(t),!1))}var Je;(function(s){s[s.NONE=0]="NONE",s[s.ERROR=30]="ERROR",s[s.WARN=50]="WARN",s[s.INFO=60]="INFO",s[s.DEBUG=70]="DEBUG",s[s.VERBOSE=80]="VERBOSE",s[s.ALL=9999]="ALL"})(Je||(Je={}));function Ca(s,e){s<Je.NONE?s=Je.NONE:s>Je.ALL&&(s=Je.ALL),e=e||{};function t(n,r){var o=e[n];return typeof o=="function"&&s>=r?o.bind(e):function(){}}return{error:t("error",Je.ERROR),warn:t("warn",Je.WARN),info:t("info",Je.INFO),debug:t("debug",Je.DEBUG),verbose:t("verbose",Je.VERBOSE)}}var Wc=function(s,e){var t=typeof Symbol=="function"&&s[Symbol.iterator];if(!t)return s;var n=t.call(s),r,o=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)o.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 o},Vc=function(s,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,o;n<r;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return s.concat(o||Array.prototype.slice.call(e))},Jc="diag",Qt=function(){function s(){function e(r){return function(){for(var o=[],i=0;i<arguments.length;i++)o[i]=arguments[i];var a=kt("diag");if(a)return a[r].apply(a,Vc([],Wc(o),!1))}}var t=this,n=function(r,o){var i,a,l;if(o===void 0&&(o={logLevel:Je.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 o=="number"&&(o={logLevel:o});var c=kt("diag"),p=Ca((a=o.logLevel)!==null&&a!==void 0?a:Je.INFO,r);if(c&&!o.suppressOverrideMessage){var d=(l=new Error().stack)!==null&&l!==void 0?l:"<failed to generate stacktrace>";c.warn("Current logger will be overwritten from "+d),p.warn("Current logger will overwrite one already registered from "+d)}return Jt("diag",p,t,!0)};t.setLogger=n,t.disable=function(){Yt(Jc,t)},t.createComponentLogger=function(r){return new Ia(r)},t.verbose=e("verbose"),t.debug=e("debug"),t.info=e("info"),t.warn=e("warn"),t.error=e("error")}return s.instance=function(){return this._instance||(this._instance=new s),this._instance},s}();function Ta(s){return Symbol.for(s)}var Yc=function(){function s(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 o=new s(t._currentContext);return o._currentContext.set(n,r),o},t.deleteValue=function(n){var r=new s(t._currentContext);return r._currentContext.delete(n),r}}return s}(),wa=new Yc;var Qc=function(s,e){var t=typeof Symbol=="function"&&s[Symbol.iterator];if(!t)return s;var n=t.call(s),r,o=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)o.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 o},Xc=function(s,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,o;n<r;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return s.concat(o||Array.prototype.slice.call(e))},Ra=function(){function s(){}return s.prototype.active=function(){return wa},s.prototype.with=function(e,t,n){for(var r=[],o=3;o<arguments.length;o++)r[o-3]=arguments[o];return t.call.apply(t,Xc([n],Qc(r),!1))},s.prototype.bind=function(e,t){return t},s.prototype.enable=function(){return this},s.prototype.disable=function(){return this},s}();var Zc=function(s,e){var t=typeof Symbol=="function"&&s[Symbol.iterator];if(!t)return s;var n=t.call(s),r,o=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)o.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 o},ep=function(s,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,o;n<r;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return s.concat(o||Array.prototype.slice.call(e))},_s="context",tp=new Ra,Xt=function(){function s(){}return s.getInstance=function(){return this._instance||(this._instance=new s),this._instance},s.prototype.setGlobalContextManager=function(e){return Jt(_s,e,Qt.instance())},s.prototype.active=function(){return this._getContextManager().active()},s.prototype.with=function(e,t,n){for(var r,o=[],i=3;i<arguments.length;i++)o[i-3]=arguments[i];return(r=this._getContextManager()).with.apply(r,ep([e,t,n],Zc(o),!1))},s.prototype.bind=function(e,t){return this._getContextManager().bind(e,t)},s.prototype._getContextManager=function(){return kt(_s)||tp},s.prototype.disable=function(){this._getContextManager().disable(),Yt(_s,Qt.instance())},s}();var Yr;(function(s){s[s.NONE=0]="NONE",s[s.SAMPLED=1]="SAMPLED"})(Yr||(Yr={}));var $s="0000000000000000",Ns="00000000000000000000000000000000",va={traceId:Ns,spanId:$s,traceFlags:Yr.NONE};var Mt=function(){function s(e){e===void 0&&(e=va),this._spanContext=e}return s.prototype.spanContext=function(){return this._spanContext},s.prototype.setAttribute=function(e,t){return this},s.prototype.setAttributes=function(e){return this},s.prototype.addEvent=function(e,t){return this},s.prototype.addLink=function(e){return this},s.prototype.addLinks=function(e){return this},s.prototype.setStatus=function(e){return this},s.prototype.updateName=function(e){return this},s.prototype.end=function(e){},s.prototype.isRecording=function(){return!1},s.prototype.recordException=function(e,t){},s}();var Ls=Ta("OpenTelemetry Context Key SPAN");function Qr(s){return s.getValue(Ls)||void 0}function Sa(){return Qr(Xt.getInstance().active())}function tr(s,e){return s.setValue(Ls,e)}function ka(s){return s.deleteValue(Ls)}function Oa(s,e){return tr(s,new Mt(e))}function Xr(s){var e;return(e=Qr(s))===null||e===void 0?void 0:e.spanContext()}var np=/^([0-9a-f]{32})$/i,rp=/^[0-9a-f]{16}$/i;function op(s){return np.test(s)&&s!==Ns}function sp(s){return rp.test(s)&&s!==$s}function Zr(s){return op(s.traceId)&&sp(s.spanId)}function Ma(s){return new Mt(s)}var Ds=Xt.getInstance(),eo=function(){function s(){}return s.prototype.startSpan=function(e,t,n){n===void 0&&(n=Ds.active());var r=!!t?.root;if(r)return new Mt;var o=n&&Xr(n);return ip(o)&&Zr(o)?new Mt(o):new Mt},s.prototype.startActiveSpan=function(e,t,n,r){var o,i,a;if(!(arguments.length<2)){arguments.length===2?a=t:arguments.length===3?(o=t,a=n):(o=t,i=n,a=r);var l=i??Ds.active(),u=this.startSpan(e,o,l),c=tr(l,u);return Ds.with(c,a,void 0,u)}},s}();function ip(s){return typeof s=="object"&&typeof s.spanId=="string"&&typeof s.traceId=="string"&&typeof s.traceFlags=="number"}var ap=new eo,Ea=function(){function s(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}return s.prototype.startSpan=function(e,t,n){return this._getTracer().startSpan(e,t,n)},s.prototype.startActiveSpan=function(e,t,n,r){var o=this._getTracer();return Reflect.apply(o.startActiveSpan,o,arguments)},s.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):ap},s}();var Pa=function(){function s(){}return s.prototype.getTracer=function(e,t,n){return new eo},s}();var lp=new Pa,Gs=function(){function s(){}return s.prototype.getTracer=function(e,t,n){var r;return(r=this.getDelegateTracer(e,t,n))!==null&&r!==void 0?r:new Ea(this,e,t,n)},s.prototype.getDelegate=function(){var e;return(e=this._delegate)!==null&&e!==void 0?e:lp},s.prototype.setDelegate=function(e){this._delegate=e},s.prototype.getDelegateTracer=function(e,t,n){var r;return(r=this._delegate)===null||r===void 0?void 0:r.getTracer(e,t,n)},s}();var Qe;(function(s){s[s.INTERNAL=0]="INTERNAL",s[s.SERVER=1]="SERVER",s[s.CLIENT=2]="CLIENT",s[s.PRODUCER=3]="PRODUCER",s[s.CONSUMER=4]="CONSUMER"})(Qe||(Qe={}));var Et=Xt.getInstance();var Us="trace",Fa=function(){function s(){this._proxyTracerProvider=new Gs,this.wrapSpanContext=Ma,this.isSpanContextValid=Zr,this.deleteSpan=ka,this.getSpan=Qr,this.getActiveSpan=Sa,this.getSpanContext=Xr,this.setSpan=tr,this.setSpanContext=Oa}return s.getInstance=function(){return this._instance||(this._instance=new s),this._instance},s.prototype.setGlobalTracerProvider=function(e){var t=Jt(Us,this._proxyTracerProvider,Qt.instance());return t&&this._proxyTracerProvider.setDelegate(e),t},s.prototype.getTracerProvider=function(){return kt(Us)||this._proxyTracerProvider},s.prototype.getTracer=function(e,t){return this.getTracerProvider().getTracer(e,t)},s.prototype.disable=function(){Yt(Us,Qt.instance()),this._proxyTracerProvider=new Gs},s}();var nr=Fa.getInstance();var pe={signatureStrict:!0,useStructuredPrompt:!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:s=>typeof s=="string"?s:s==null?"":JSON.stringify(s,null,2)};var Ye=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 Ug=new Ye,_a=s=>{console.log(s)},$a=(s,e,t)=>{let n=(r,o)=>t&&o&&o in t?t[o](r):r;switch(s.role){case"system":return`${n("[ SYSTEM ]","magentaBright")}
31
+ `),v="",E="message";for(let $ of I)$.startsWith("data: ")?v=$.slice(6):$.startsWith("event: ")&&(E=$.slice(7));if(v){if(v==="[DONE]"){T.close();return}try{let $=JSON.parse(v);h=$,f++,r.streamChunks=f,r.lastChunkTime=Date.now(),T.enqueue($),s.span?.addEvent("stream.chunk",{"stream.chunks":f,"stream.duration":Date.now()-r.startTime,"response.retries":r.retryCount,"sse.event.type":E})}catch($){o&&console.warn("Skipping non-JSON SSE data:",v,$)}}}}}catch(M){let G=M,B={...r,streamDuration:Date.now()-r.startTime};G.name==="AbortError"||G.message?.includes("aborted")?T.error(new ot(c.href,e,h,{streamMetrics:B},i)):T.error(new Ue(G,c.href,e,"[ReadableStream - consumed during streaming]",{streamMetrics:B},i))}finally{b.releaseLock()}}_()}});let x=new TransformStream({transform(T,b){h=T,f++,r.streamChunks=f,r.lastChunkTime=Date.now(),b.enqueue(T),s.span?.addEvent("stream.chunk",{"stream.chunks":f,"stream.duration":Date.now()-r.startTime,"response.retries":r.retryCount})}}),A=!1;return new ReadableStream({start(T){let b=g.body.pipeThrough(new Uc).pipeThrough(new Vr).pipeThrough(x).getReader();async function R(){try{for(;;){let{done:O,value:_}=await b.read();if(O){A||(A=!0,T.close());break}if(A)break;T.enqueue(_)}}catch(O){let _=O,M={...r,streamDuration:Date.now()-r.startTime};throw _.name==="AbortError"||_.message?.includes("aborted")?T.error(new ot(c.href,e,h,{streamMetrics:M},i)):_ instanceof TypeError&&_.message.includes("cancelled")?T.error(new ot(c.href,e,h,{streamMetrics:M,cancelReason:"Stream cancelled by client"},i)):T.error(new Ue(_,c.href,e,"[ReadableStream - consumed during streaming]",{streamMetrics:M},i)),_}finally{a&&clearTimeout(a),b.releaseLock()}}R()},cancel(){A=!0}})}catch(g){if(g instanceof Error&&g.name==="AbortError")throw s.abortSignal?.aborted?new $e(c.href,s.abortSignal.reason,e,{metrics:r},i):new tt(c.href,n||0,e,{metrics:r},i);let h=g;if(!(g instanceof qe)&&g instanceof Error&&(h=new Ue(g,c.href,e,void 0,{metrics:r},i)),s.span?.isRecording()&&(s.span.recordException(h),s.span.setAttributes({"error.time":Date.now()-r.startTime,"error.retries":r.retryCount})),h instanceof Ue&&fa(h,void 0,d,t)){let f=ga(d,t);d++,ha(r),s.span?.addEvent("retry",{attempt:d,delay:f,error:h.message,"metrics.startTime":r.startTime,"metrics.retryCount":r.retryCount,"metrics.lastRetryTime":r.lastRetryTime}),await new Promise(y=>setTimeout(y,f));continue}throw h instanceof qe&&(h.context.metrics=r),h}finally{a!==void 0&&clearTimeout(a)}}};var xa=typeof globalThis=="object"?globalThis:global;var St="1.9.0";var Aa=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function qc(s){var e=new Set([s]),t=new Set,n=s.match(Aa);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(l){return l===s};function o(a){return t.add(a),!1}function i(a){return e.add(a),!0}return function(l){if(e.has(l))return!0;if(t.has(l))return!1;var u=l.match(Aa);if(!u)return o(l);var c={major:+u[1],minor:+u[2],patch:+u[3],prerelease:u[4]};return c.prerelease!=null||r.major!==c.major?o(l):r.major===0?r.minor===c.minor&&r.patch<=c.patch?i(l):o(l):r.minor<=c.minor?i(l):o(l)}}var ya=qc(St);var zc=St.split(".")[0],Xn=Symbol.for("opentelemetry.js.api."+zc),Zn=xa;function Jt(s,e,t,n){var r;n===void 0&&(n=!1);var o=Zn[Xn]=(r=Zn[Xn])!==null&&r!==void 0?r:{version:St};if(!n&&o[s]){var i=new Error("@opentelemetry/api: Attempted duplicate registration of API: "+s);return t.error(i.stack||i.message),!1}if(o.version!==St){var i=new Error("@opentelemetry/api: Registration of version v"+o.version+" for "+s+" does not match previously registered API v"+St);return t.error(i.stack||i.message),!1}return o[s]=e,t.debug("@opentelemetry/api: Registered a global for "+s+" v"+St+"."),!0}function kt(s){var e,t,n=(e=Zn[Xn])===null||e===void 0?void 0:e.version;if(!(!n||!ya(n)))return(t=Zn[Xn])===null||t===void 0?void 0:t[s]}function Yt(s,e){e.debug("@opentelemetry/api: Unregistering a global for "+s+" v"+St+".");var t=Zn[Xn];t&&delete t[s]}var Hc=function(s,e){var t=typeof Symbol=="function"&&s[Symbol.iterator];if(!t)return s;var n=t.call(s),r,o=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)o.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 o},Kc=function(s,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,o;n<r;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return s.concat(o||Array.prototype.slice.call(e))},ba=function(){function s(e){this._namespace=e.namespace||"DiagComponentLogger"}return s.prototype.debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return er("debug",this._namespace,e)},s.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return er("error",this._namespace,e)},s.prototype.info=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return er("info",this._namespace,e)},s.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return er("warn",this._namespace,e)},s.prototype.verbose=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return er("verbose",this._namespace,e)},s}();function er(s,e,t){var n=kt("diag");if(n)return t.unshift(e),n[s].apply(n,Kc([],Hc(t),!1))}var Je;(function(s){s[s.NONE=0]="NONE",s[s.ERROR=30]="ERROR",s[s.WARN=50]="WARN",s[s.INFO=60]="INFO",s[s.DEBUG=70]="DEBUG",s[s.VERBOSE=80]="VERBOSE",s[s.ALL=9999]="ALL"})(Je||(Je={}));function Ia(s,e){s<Je.NONE?s=Je.NONE:s>Je.ALL&&(s=Je.ALL),e=e||{};function t(n,r){var o=e[n];return typeof o=="function"&&s>=r?o.bind(e):function(){}}return{error:t("error",Je.ERROR),warn:t("warn",Je.WARN),info:t("info",Je.INFO),debug:t("debug",Je.DEBUG),verbose:t("verbose",Je.VERBOSE)}}var Wc=function(s,e){var t=typeof Symbol=="function"&&s[Symbol.iterator];if(!t)return s;var n=t.call(s),r,o=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)o.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 o},Vc=function(s,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,o;n<r;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return s.concat(o||Array.prototype.slice.call(e))},Jc="diag",Qt=function(){function s(){function e(r){return function(){for(var o=[],i=0;i<arguments.length;i++)o[i]=arguments[i];var a=kt("diag");if(a)return a[r].apply(a,Vc([],Wc(o),!1))}}var t=this,n=function(r,o){var i,a,l;if(o===void 0&&(o={logLevel:Je.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 o=="number"&&(o={logLevel:o});var c=kt("diag"),p=Ia((a=o.logLevel)!==null&&a!==void 0?a:Je.INFO,r);if(c&&!o.suppressOverrideMessage){var d=(l=new Error().stack)!==null&&l!==void 0?l:"<failed to generate stacktrace>";c.warn("Current logger will be overwritten from "+d),p.warn("Current logger will overwrite one already registered from "+d)}return Jt("diag",p,t,!0)};t.setLogger=n,t.disable=function(){Yt(Jc,t)},t.createComponentLogger=function(r){return new ba(r)},t.verbose=e("verbose"),t.debug=e("debug"),t.info=e("info"),t.warn=e("warn"),t.error=e("error")}return s.instance=function(){return this._instance||(this._instance=new s),this._instance},s}();function Ca(s){return Symbol.for(s)}var Yc=function(){function s(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 o=new s(t._currentContext);return o._currentContext.set(n,r),o},t.deleteValue=function(n){var r=new s(t._currentContext);return r._currentContext.delete(n),r}}return s}(),Ta=new Yc;var Qc=function(s,e){var t=typeof Symbol=="function"&&s[Symbol.iterator];if(!t)return s;var n=t.call(s),r,o=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)o.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 o},Xc=function(s,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,o;n<r;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return s.concat(o||Array.prototype.slice.call(e))},wa=function(){function s(){}return s.prototype.active=function(){return Ta},s.prototype.with=function(e,t,n){for(var r=[],o=3;o<arguments.length;o++)r[o-3]=arguments[o];return t.call.apply(t,Xc([n],Qc(r),!1))},s.prototype.bind=function(e,t){return t},s.prototype.enable=function(){return this},s.prototype.disable=function(){return this},s}();var Zc=function(s,e){var t=typeof Symbol=="function"&&s[Symbol.iterator];if(!t)return s;var n=t.call(s),r,o=[],i;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)o.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 o},ep=function(s,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,o;n<r;n++)(o||!(n in e))&&(o||(o=Array.prototype.slice.call(e,0,n)),o[n]=e[n]);return s.concat(o||Array.prototype.slice.call(e))},_s="context",tp=new wa,Xt=function(){function s(){}return s.getInstance=function(){return this._instance||(this._instance=new s),this._instance},s.prototype.setGlobalContextManager=function(e){return Jt(_s,e,Qt.instance())},s.prototype.active=function(){return this._getContextManager().active()},s.prototype.with=function(e,t,n){for(var r,o=[],i=3;i<arguments.length;i++)o[i-3]=arguments[i];return(r=this._getContextManager()).with.apply(r,ep([e,t,n],Zc(o),!1))},s.prototype.bind=function(e,t){return this._getContextManager().bind(e,t)},s.prototype._getContextManager=function(){return kt(_s)||tp},s.prototype.disable=function(){this._getContextManager().disable(),Yt(_s,Qt.instance())},s}();var Yr;(function(s){s[s.NONE=0]="NONE",s[s.SAMPLED=1]="SAMPLED"})(Yr||(Yr={}));var $s="0000000000000000",Ns="00000000000000000000000000000000",Ra={traceId:Ns,spanId:$s,traceFlags:Yr.NONE};var Mt=function(){function s(e){e===void 0&&(e=Ra),this._spanContext=e}return s.prototype.spanContext=function(){return this._spanContext},s.prototype.setAttribute=function(e,t){return this},s.prototype.setAttributes=function(e){return this},s.prototype.addEvent=function(e,t){return this},s.prototype.addLink=function(e){return this},s.prototype.addLinks=function(e){return this},s.prototype.setStatus=function(e){return this},s.prototype.updateName=function(e){return this},s.prototype.end=function(e){},s.prototype.isRecording=function(){return!1},s.prototype.recordException=function(e,t){},s}();var Ls=Ca("OpenTelemetry Context Key SPAN");function Qr(s){return s.getValue(Ls)||void 0}function va(){return Qr(Xt.getInstance().active())}function tr(s,e){return s.setValue(Ls,e)}function Sa(s){return s.deleteValue(Ls)}function ka(s,e){return tr(s,new Mt(e))}function Xr(s){var e;return(e=Qr(s))===null||e===void 0?void 0:e.spanContext()}var np=/^([0-9a-f]{32})$/i,rp=/^[0-9a-f]{16}$/i;function op(s){return np.test(s)&&s!==Ns}function sp(s){return rp.test(s)&&s!==$s}function Zr(s){return op(s.traceId)&&sp(s.spanId)}function Oa(s){return new Mt(s)}var Ds=Xt.getInstance(),eo=function(){function s(){}return s.prototype.startSpan=function(e,t,n){n===void 0&&(n=Ds.active());var r=!!t?.root;if(r)return new Mt;var o=n&&Xr(n);return ip(o)&&Zr(o)?new Mt(o):new Mt},s.prototype.startActiveSpan=function(e,t,n,r){var o,i,a;if(!(arguments.length<2)){arguments.length===2?a=t:arguments.length===3?(o=t,a=n):(o=t,i=n,a=r);var l=i??Ds.active(),u=this.startSpan(e,o,l),c=tr(l,u);return Ds.with(c,a,void 0,u)}},s}();function ip(s){return typeof s=="object"&&typeof s.spanId=="string"&&typeof s.traceId=="string"&&typeof s.traceFlags=="number"}var ap=new eo,Ma=function(){function s(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}return s.prototype.startSpan=function(e,t,n){return this._getTracer().startSpan(e,t,n)},s.prototype.startActiveSpan=function(e,t,n,r){var o=this._getTracer();return Reflect.apply(o.startActiveSpan,o,arguments)},s.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):ap},s}();var Ea=function(){function s(){}return s.prototype.getTracer=function(e,t,n){return new eo},s}();var lp=new Ea,Gs=function(){function s(){}return s.prototype.getTracer=function(e,t,n){var r;return(r=this.getDelegateTracer(e,t,n))!==null&&r!==void 0?r:new Ma(this,e,t,n)},s.prototype.getDelegate=function(){var e;return(e=this._delegate)!==null&&e!==void 0?e:lp},s.prototype.setDelegate=function(e){this._delegate=e},s.prototype.getDelegateTracer=function(e,t,n){var r;return(r=this._delegate)===null||r===void 0?void 0:r.getTracer(e,t,n)},s}();var Qe;(function(s){s[s.INTERNAL=0]="INTERNAL",s[s.SERVER=1]="SERVER",s[s.CLIENT=2]="CLIENT",s[s.PRODUCER=3]="PRODUCER",s[s.CONSUMER=4]="CONSUMER"})(Qe||(Qe={}));var Et=Xt.getInstance();var Us="trace",Pa=function(){function s(){this._proxyTracerProvider=new Gs,this.wrapSpanContext=Oa,this.isSpanContextValid=Zr,this.deleteSpan=Sa,this.getSpan=Qr,this.getActiveSpan=va,this.getSpanContext=Xr,this.setSpan=tr,this.setSpanContext=ka}return s.getInstance=function(){return this._instance||(this._instance=new s),this._instance},s.prototype.setGlobalTracerProvider=function(e){var t=Jt(Us,this._proxyTracerProvider,Qt.instance());return t&&this._proxyTracerProvider.setDelegate(e),t},s.prototype.getTracerProvider=function(){return kt(Us)||this._proxyTracerProvider},s.prototype.getTracer=function(e,t){return this.getTracerProvider().getTracer(e,t)},s.prototype.disable=function(){Yt(Us,Qt.instance()),this._proxyTracerProvider=new Gs},s}();var nr=Pa.getInstance();var pe={signatureStrict:!0,useStructuredPrompt:!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:s=>typeof s=="string"?s:s==null?"":JSON.stringify(s,null,2)};var Ye=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 Dg=new Ye,Fa=s=>{console.log(s)},_a=(s,e,t)=>{let n=(r,o)=>t&&o&&o in t?t[o](r):r;switch(s.role){case"system":return`${n("[ SYSTEM ]","magentaBright")}
32
32
  ${n(s.content,"magenta")}`;case"function":return`${n("[ FUNCTION RESULT ]","yellow")}
33
33
  ${n(s.result??"[No result]","yellowDim")}`;case"user":{let r=`${n("[ USER ]","greenBright")}
34
34
  `;if(typeof s.content=="string")return r+n(s.content,"green");let o=s.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+o.join(`
@@ -38,11 +38,11 @@ ${n(s.result??"[No result]","yellowDim")}`;case"user":{let r=`${n("[ USER ]","gr
38
38
  `,s.functionCalls.forEach((i,a)=>{let l=typeof i.function.params=="string"?i.function.params:JSON.stringify(i.function.params,null,2);o+=n(`${a+1}. ${i.function.name}(${l}) [id: ${i.id}]`,"yellowDim"),a<(s.functionCalls?.length??0)-1&&(o+=`
39
39
  `)}),o+=`
40
40
  `),!s.content&&(!s.functionCalls||s.functionCalls.length===0)&&(o+=n("[No content]","gray")),o}default:return`${n("[ UNKNOWN ]","redBright")}
41
- ${n(JSON.stringify(s),"gray")}`}},Bs=(s=_a)=>{let e=new Ye,t=e.gray(`${"\u2500".repeat(60)}
41
+ ${n(JSON.stringify(s),"gray")}`}},Bs=(s=Fa)=>{let e=new Ye,t=e.gray(`${"\u2500".repeat(60)}
42
42
  `);return n=>{let r=n,o="";switch(r.name){case"ChatRequestChatPrompt":o=`
43
43
  ${e.blueBright(`[ CHAT REQUEST Step ${r.step} ]`)}
44
44
  ${t}
45
- `,r.value.forEach((i,a)=>{o+=$a(i,void 0,e),a<r.value.length-1&&(o+=`
45
+ `,r.value.forEach((i,a)=>{o+=_a(i,void 0,e),a<r.value.length-1&&(o+=`
46
46
  ${t}
47
47
  `)}),o+=`
48
48
  ${t}`;break;case"FunctionResults":o=`
@@ -102,10 +102,10 @@ ${t}
102
102
  [ CHAT RESPONSE CITATIONS ]`)}
103
103
  `,r.value.forEach(i=>{o+=`${e.white("- ")}${e.cyan(i.title||i.url)}
104
104
  `,i.description&&(o+=` ${e.gray(i.description)}
105
- `)}),o+=t;break}default:o=e.gray(JSON.stringify(r,null,2))}s(o)}},Na=Bs(),La=(s=_a)=>{let e="\u2500".repeat(60);return t=>{let n=t,r="";switch(n.name){case"ChatRequestChatPrompt":r=`
105
+ `)}),o+=t;break}default:o=e.gray(JSON.stringify(r,null,2))}s(o)}},$a=Bs(),Na=(s=Fa)=>{let e="\u2500".repeat(60);return t=>{let n=t,r="";switch(n.name){case"ChatRequestChatPrompt":r=`
106
106
  [ CHAT REQUEST Step ${n.step} ]
107
107
  ${e}
108
- `,n.value.forEach((o,i)=>{r+=$a(o),i<n.value.length-1&&(r+=`
108
+ `,n.value.forEach((o,i)=>{r+=_a(o),i<n.value.length-1&&(r+=`
109
109
  ${e}
110
110
  `)}),r+=`
111
111
  ${e}`;break;case"FunctionResults":r=`
@@ -164,19 +164,19 @@ ${e}
164
164
  `,n.value.forEach(o=>{r+=`- ${o.title||o.url}
165
165
  `,o.description&&(r+=` ${o.description}
166
166
  `)}),r+=`${e}
167
- `;break}default:r=JSON.stringify(n,null,2)}s(r)}};var ge={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"},gt={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"},js=(r=>(r.COMPLETION="completion",r.CHAT="chat",r.RERANK="rerank",r.UNKNOWN="unknown",r))(js||{}),qs=(o=>(o.WORKFLOW="workflow",o.TASK="task",o.AGENT="agent",o.TOOL="tool",o.UNKNOWN="unknown",o))(qs||{});var zs=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()}},to=class extends TransformStream{constructor(e,t){super(new zs(e,t))}};function no(s,e){for(let t of e){let n=s.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)):s.push(t)}}var Da=(s,e,t,n)=>{let r=n?s.filter(i=>i.role!=="system"):[...s];t({name:"ChatRequestChatPrompt",step:e,value:r})};var Ga=(s,e)=>{if(!s.results)return;let t={name:"ChatResponseResults",value:s.results};e(t)};function Ua(s,e){let t=new Map;for(let n of s)for(let r of n.results){if(!r)continue;let o=t.get(r.index);o?(r.content&&(o.content=(o.content??"")+r.content),r.thought&&(o.thought=(o.thought??"")+r.thought),r.finishReason&&(o.finishReason=r.finishReason),r.functionCalls&&(o.functionCalls?no(o.functionCalls,structuredClone(r.functionCalls)):o.functionCalls=structuredClone(r.functionCalls))):(o=structuredClone(r),t.set(r.index,o))}for(let n of t.values()){let r={name:"ChatResponseStreamingDoneResult",index:n.index,value:n};e(r)}}var Ba=(s,e)=>{e({name:"FunctionResults",value:s})},Hs=(s,e,t,n)=>{n({name:"FunctionError",index:e,fixingInstructions:t,error:s})},ja=(s,e,t,n)=>{n({name:"ValidationError",index:e,fixingInstructions:t,error:s})},qa=(s,e,t,n)=>{n({name:"AssertionError",index:e,fixingInstructions:t,error:s})},za=(s,e,t)=>{t({name:"RefusalError",index:e,error:s})};var Ha=(s,e,t)=>{t({name:"EmbedRequest",embedModel:e,value:s})},Ka=(s,e)=>{let t=s.slice(0,3).map(r=>({length:r.length,sample:r.slice(0,5),truncated:r.length>5})),n={name:"EmbedResponse",totalEmbeddings:s.length,value:t};e(n)},Wa=(s,e,t,n)=>{n({name:"ResultPickerUsed",sampleCount:s,selectedIndex:e,latency:t})};var oo=s=>{let e={};for(let[t,n]of Object.entries(s))if(n!=null){let r=String(n);e[t]=r.length>100?r.substring(0,100):r}return e},Lt=(...s)=>{let e={};for(let t of s)t&&Object.assign(e,t);return e},ro,Va=s=>{if(ro)return ro;if(s)return ro=up(s),ro};var up=s=>({latencyHistogram:s.createHistogram("ax_llm_request_duration_ms",{description:"Duration of LLM requests in milliseconds",unit:"ms"}),errorCounter:s.createCounter("ax_llm_errors_total",{description:"Total number of LLM request errors"}),requestCounter:s.createCounter("ax_llm_requests_total",{description:"Total number of LLM requests"}),tokenCounter:s.createCounter("ax_llm_tokens_total",{description:"Total number of LLM tokens consumed"}),inputTokenCounter:s.createCounter("ax_llm_input_tokens_total",{description:"Total number of input/prompt tokens consumed"}),outputTokenCounter:s.createCounter("ax_llm_output_tokens_total",{description:"Total number of output/completion tokens generated"}),errorRateGauge:s.createGauge("ax_llm_error_rate",{description:"Current error rate as a percentage (0-100)"}),meanLatencyGauge:s.createGauge("ax_llm_mean_latency_ms",{description:"Mean latency of LLM requests in milliseconds",unit:"ms"}),p95LatencyGauge:s.createGauge("ax_llm_p95_latency_ms",{description:"95th percentile latency of LLM requests in milliseconds",unit:"ms"}),p99LatencyGauge:s.createGauge("ax_llm_p99_latency_ms",{description:"99th percentile latency of LLM requests in milliseconds",unit:"ms"}),streamingRequestsCounter:s.createCounter("ax_llm_streaming_requests_total",{description:"Total number of streaming LLM requests"}),functionCallsCounter:s.createCounter("ax_llm_function_calls_total",{description:"Total number of function/tool calls made"}),functionCallLatencyHistogram:s.createHistogram("ax_llm_function_call_latency_ms",{description:"Latency of function calls in milliseconds",unit:"ms"}),requestSizeHistogram:s.createHistogram("ax_llm_request_size_bytes",{description:"Size of LLM request payloads in bytes",unit:"By"}),responseSizeHistogram:s.createHistogram("ax_llm_response_size_bytes",{description:"Size of LLM response payloads in bytes",unit:"By"}),temperatureGauge:s.createGauge("ax_llm_temperature_gauge",{description:"Temperature setting used for LLM requests"}),maxTokensGauge:s.createGauge("ax_llm_max_tokens_gauge",{description:"Maximum tokens setting used for LLM requests"}),estimatedCostCounter:s.createCounter("ax_llm_estimated_cost_total",{description:"Estimated cost of LLM requests in USD",unit:"$"}),promptLengthHistogram:s.createHistogram("ax_llm_prompt_length_chars",{description:"Length of prompts in characters"}),contextWindowUsageGauge:s.createGauge("ax_llm_context_window_usage_ratio",{description:"Context window utilization ratio (0-1)"}),timeoutsCounter:s.createCounter("ax_llm_timeouts_total",{description:"Total number of timed out LLM requests"}),abortsCounter:s.createCounter("ax_llm_aborts_total",{description:"Total number of aborted LLM requests"}),thinkingBudgetUsageCounter:s.createCounter("ax_llm_thinking_budget_usage_total",{description:"Total thinking budget tokens used"}),multimodalRequestsCounter:s.createCounter("ax_llm_multimodal_requests_total",{description:"Total number of multimodal requests (with images/audio)"}),cacheReadTokensCounter:s.createCounter("ax_llm_cache_read_tokens_total",{description:"Total number of tokens read from cache (prompt caching)"}),cacheWriteTokensCounter:s.createCounter("ax_llm_cache_write_tokens_total",{description:"Total number of tokens written to cache (prompt caching)"})}),Ja=(s,e,t,n,r,o)=>{try{if(s.latencyHistogram){let i=oo({operation:e,ai_service:n,...r?{model:r}:{},...o});s.latencyHistogram.record(t,i)}}catch(i){console.warn("Failed to record latency metric:",i)}},Ya=(s,e,t,n,r,o,i,a)=>{let l={operation:e,ai_service:o,...i?{model:i}:{},...a};s.meanLatencyGauge&&s.meanLatencyGauge.record(t,l),s.p95LatencyGauge&&s.p95LatencyGauge.record(n,l),s.p99LatencyGauge&&s.p99LatencyGauge.record(r,l)},Qa=(s,e,t,n,r)=>{try{if(s.errorCounter){let o=oo({operation:e,ai_service:t,...n?{model:n}:{},...r});s.errorCounter.add(1,o)}}catch(o){console.warn("Failed to record error metric:",o)}},Xa=(s,e,t,n,r,o)=>{s.errorRateGauge&&s.errorRateGauge.record(t*100,{operation:e,ai_service:n,...r?{model:r}:{},...o})},Za=(s,e,t,n,r)=>{s.requestCounter&&s.requestCounter.add(1,{operation:e,ai_service:t,...n?{model:n}:{},...r})},rr=(s,e,t,n,r,o)=>{try{let i=oo({ai_service:n,...r?{model:r}:{},...o});s.tokenCounter&&s.tokenCounter.add(t,{token_type:e,...i}),e==="input"&&s.inputTokenCounter&&s.inputTokenCounter.add(t,i),e==="output"&&s.outputTokenCounter&&s.outputTokenCounter.add(t,i)}catch(i){console.warn("Failed to record token metric:",i)}},el=(s,e,t,n,r,o)=>{t&&s.streamingRequestsCounter&&s.streamingRequestsCounter.add(1,{operation:e,ai_service:n,...r?{model:r}:{},...o})},tl=(s,e,t,n,r,o)=>{let i={function_name:e,...n?{ai_service:n}:{},...r?{model:r}:{},...o};s.functionCallsCounter&&s.functionCallsCounter.add(1,i),t&&s.functionCallLatencyHistogram&&s.functionCallLatencyHistogram.record(t,i)},Ks=(s,e,t,n,r,o)=>{s.requestSizeHistogram&&s.requestSizeHistogram.record(t,{operation:e,ai_service:n,...r?{model:r}:{},...o})},Ws=(s,e,t,n,r,o)=>{s.responseSizeHistogram&&s.responseSizeHistogram.record(t,{operation:e,ai_service:n,...r?{model:r}:{},...o})},nl=(s,e,t,n,r,o)=>{let i={...n?{ai_service:n}:{},...r?{model:r}:{},...o};e!==void 0&&s.temperatureGauge&&s.temperatureGauge.record(e,i),t!==void 0&&s.maxTokensGauge&&s.maxTokensGauge.record(t,i)},Vs=(s,e,t,n,r,o)=>{s.estimatedCostCounter&&s.estimatedCostCounter.add(t,{operation:e,ai_service:n,...r?{model:r}:{},...o})},rl=(s,e,t,n,r)=>{s.promptLengthHistogram&&s.promptLengthHistogram.record(e,{ai_service:t,...n?{model:n}:{},...r})},ol=(s,e,t,n,r)=>{s.contextWindowUsageGauge&&s.contextWindowUsageGauge.record(e,{ai_service:t,...n?{model:n}:{},...r})},sl=(s,e,t,n,r)=>{s.timeoutsCounter&&s.timeoutsCounter.add(1,{operation:e,ai_service:t,...n?{model:n}:{},...r})},il=(s,e,t,n,r)=>{s.abortsCounter&&s.abortsCounter.add(1,{operation:e,ai_service:t,...n?{model:n}:{},...r})},al=(s,e,t,n,r)=>{s.thinkingBudgetUsageCounter&&s.thinkingBudgetUsageCounter.add(e,{ai_service:t,...n?{model:n}:{},...r})},ll=(s,e,t,n,r,o)=>{(e||t)&&s.multimodalRequestsCounter&&s.multimodalRequestsCounter.add(1,{ai_service:n,has_images:e.toString(),has_audio:t.toString(),...r?{model:r}:{},...o})},Js=(s,e,t,n,r,o)=>{try{if(t<=0)return;let i=oo({ai_service:n,...r?{model:r}:{},...o});e==="read"&&s.cacheReadTokensCounter&&s.cacheReadTokensCounter.add(t,i),e==="write"&&s.cacheWriteTokensCounter&&s.cacheWriteTokensCounter.add(t,i)}catch(i){console.warn("Failed to record cache token metric:",i)}};function ul(s){try{return JSON.stringify(s,null,2)}catch{return String(s)}}function ht(s,e={}){let t=[s];throw e.fieldPath!==void 0&&t.push(`Field: ${e.fieldPath}`),e.value!==void 0&&t.push(`Value: ${ul(e.value)}`),e.note&&t.push(`Note: ${e.note}`),e.item!==void 0&&t.push(`Chat item: ${ul(e.item)}`),new Error(t.join(`
168
- `))}function Zt(s){let e=n=>JSON.stringify(n,null,2);if(!s)throw new Error(`Chat request message item cannot be null or undefined, received: ${e(s)}`);let t=typeof s=="object"&&s!==null&&"role"in s&&typeof s.role=="string"?s.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 s=="object"&&s!==null&&"content"in s&&typeof s.content=="string"?s.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 s=="object"&&s!==null&&"content"in s?s.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 o=n[r];if(!o||typeof o!="object")throw new Error(`User message content item at index ${r} must be an object, received: ${e(o)}`);let i=typeof o=="object"&&o!==null&&"type"in o&&typeof o.type=="string"?o.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 o&&typeof o.text=="string"?o.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 o&&typeof o.image=="string"?o.image:void 0,l="mimeType"in o&&typeof o.mimeType=="string"?o.mimeType:void 0;if(!a||a.trim()==="")throw new Error(`User message image content at index ${r} cannot be empty, received: ${e(a)}`);if(!l||l.trim()==="")throw new Error(`User message image content at index ${r} must have a mimeType, received: ${e(l)}`);break}case"audio":{let a="data"in o&&typeof o.data=="string"?o.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 o&&typeof o.fileUri=="string",l="data"in o&&typeof o.data=="string";if(!a&&!l)throw new Error(`User message file content at index ${r} must have either 'data' or 'fileUri', received: ${e(o)}`);if(a&&l)throw new Error(`User message file content at index ${r} cannot have both 'data' and 'fileUri', received: ${e(o)}`);if(a){let c=o.fileUri;if(!c||c.trim()==="")throw new Error(`User message file content at index ${r} fileUri cannot be empty, received: ${e(c)}`)}if(l){let c=o.data;if(!c||c.trim()==="")throw new Error(`User message file content at index ${r} data cannot be empty, received: ${e(c)}`)}let u="mimeType"in o&&typeof o.mimeType=="string"?o.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 o&&typeof o.url=="string"?o.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 s=="object"&&s!==null&&"content"in s?s.content:void 0,r=typeof s=="object"&&s!==null&&"functionCalls"in s?s.functionCalls:void 0,o=typeof s=="object"&&s!==null&&"thoughtBlocks"in s?s.thoughtBlocks:void 0,i=typeof n=="string"&&n.trim()!=="",a=Array.isArray(r)&&r.length>0,l=Array.isArray(o)&&o.length>0;if(!i&&!a&&!l&&ht("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:o},item:s}),n!==void 0&&typeof n!="string"&&ht("Assistant message content must be a string",{fieldPath:"content",value:n,item:s}),r!==void 0&&!Array.isArray(r)&&ht("Assistant message functionCalls must be an array when provided",{fieldPath:"functionCalls",value:r,item:s}),Array.isArray(r))for(let u=0;u<r.length;u++){let c=r[u];if((!c||typeof c!="object")&&ht("functionCalls entry must be an object",{fieldPath:`functionCalls[${u}]`,value:c,item:s}),(!("id"in c)||typeof c.id!="string"||c.id.trim()==="")&&ht("functionCalls entry must include a non-empty string id",{fieldPath:`functionCalls[${u}].id`,value:c.id,item:s}),(!("type"in c)||c.type!=="function")&&ht("functionCalls entry must have type 'function'",{fieldPath:`functionCalls[${u}].type`,value:c.type,item:s}),!("function"in c)||!c.function)ht("functionCalls entry must include a function object",{fieldPath:`functionCalls[${u}].function`,value:c.function,item:s});else{let p=c.function;(!("name"in p)||typeof p.name!="string"||p.name.trim()==="")&&ht("functionCalls entry must include a non-empty function name",{fieldPath:`functionCalls[${u}].function.name`,value:p?.name,item:s}),p.params!==void 0&&typeof p.params!="string"&&typeof p.params!="object"&&ht("functionCalls entry params must be a string or object when provided",{fieldPath:`functionCalls[${u}].function.params`,value:p.params,item:s})}}if(s.name!==void 0){let u=s.name;(typeof u!="string"||u.trim()==="")&&ht("Assistant message name must be a non-empty string when provided",{fieldPath:"name",value:u,item:s})}break}case"function":{let n=typeof s=="object"&&s!==null&&"functionId"in s&&typeof s.functionId=="string"?s.functionId:void 0,r=typeof s=="object"&&s!==null&&"result"in s?s.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)}`);s.isError!==void 0&&typeof s.isError!="boolean"&&ht("Function message isError must be a boolean when provided",{fieldPath:"isError",value:s.isError,item:s});break}default:throw new Error(`Unsupported message role: ${e(t)}`)}}function so(s){let e=n=>JSON.stringify(n,null,2),t=Array.isArray(s)?s:[s];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 o=0;o<r.thoughtBlocks.length;o++){let i=r.thoughtBlocks[o];if(typeof i!="object"||i===null)throw new Error(`Chat response result thoughtBlocks[${o}] at index ${n} must be an object, received: ${e(i)}`);if(typeof i.data!="string")throw new Error(`Chat response result thoughtBlocks[${o}].data at index ${n} must be a string, received: ${e(i.data)}`);if(typeof i.encrypted!="boolean")throw new Error(`Chat response result thoughtBlocks[${o}].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[${o}].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 o=0;o<r.annotations.length;o++){let i=r.annotations[o];if(!i||typeof i!="object")throw new Error(`Chat response result annotation at index ${n}[${o}] must be an object, received: ${e(i)}`);if(i.type!=="url_citation")throw new Error(`Chat response result annotation at index ${n}[${o}] 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}[${o}] 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}[${o}] 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 o=0;o<r.functionCalls.length;o++){let i=r.functionCalls[o];if(!i)throw new Error(`Function call at index ${o} 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 ${o} 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 ${o} in result ${n} must have type 'function', received: ${e(i.type)}`);if(!i.function)throw new Error(`Function call at index ${o} 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 ${o} 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 ${o} in result ${n} must be a string or object, received: ${e(i.function.params)}`)}}if(r.finishReason!==void 0){let o=["stop","length","function_call","content_filter","error"];if(!o.includes(r.finishReason))throw new Error(`Chat response result finishReason at index ${n} must be one of: ${o.join(", ")}, received: ${e(r.finishReason)}`)}}}var Ys=new Map;function cp(s){return`${s.providerName}:${s.contentHash}`}function pp(s,e){e.type==="text"?s.update(`text:${e.text}`):e.type==="image"?s.update(`image:${e.mimeType}:${e.image.slice(0,100)}`):e.type==="audio"?s.update(`audio:${e.format}:${e.data.slice(0,100)}`):e.type==="file"&&("fileUri"in e?s.update(`file:${e.mimeType}:${e.fileUri}`):s.update(`file:${e.mimeType}:${e.data.slice(0,100)}`))}function dp(s){let e=et("sha256"),t=-1;for(let n=s.length-1;n>=0;n--){let r=s[n];if("cache"in r&&r.cache){t=n;break}}for(let n=0;n<s.length;n++){let r=s[n];if(r.role==="system"){e.update(`system:${r.content}`);continue}if(t>=0&&n<=t)if(r.role==="user"){if(typeof r.content=="string")e.update(`user:${r.content}`);else if(Array.isArray(r.content))for(let o of r.content)pp(e,o)}else r.role==="assistant"&&r.content&&e.update(`assistant:${r.content}`)}return e.digest("hex")}var Ce=()=>structuredClone({temperature:0}),De=()=>structuredClone({temperature:.4,frequencyPenalty:.2}),Fe=class{constructor(e,{name:t,apiURL:n,headers:r,modelInfo:o,defaults:i,options:a={},supportFor:l,models:u}){this.aiImpl=e;this.name=t,this.apiURL=n||"",this.headers=r,this.supportFor=l,this.tracer=a.tracer??pe.tracer,this.meter=a.meter??pe.meter,this.modelInfo=o,this.models=u,this.id=je();let c=this.getModel(i.model)??i.model,p=this.getEmbedModel(i.embedModel)??i.embedModel;if(this.defaults={model:c,embedModel:p},!i.model||typeof i.model!="string"||i.model==="")throw new Error("No model defined");this.setOptions(a),u&&mp(u)}#e=!1;#t=!1;rt;fetch;tracer;meter;timeout;excludeContentFromTrace;models;abortSignal;logger=pe.logger??Na;corsProxy;retry;customLabels;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 Va(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??pe.debug??!1,this.#t=e.verbose??!1,this.rt=e.rateLimiter,this.fetch=e.fetch,this.timeout=e.timeout,this.tracer=e.tracer??pe.tracer,this.meter=e.meter??pe.meter,this.excludeContentFromTrace=e.excludeContentFromTrace,this.abortSignal=e.abortSignal,this.logger=e.logger??pe.logger??this.logger,this.corsProxy=e.corsProxy,this.retry=e.retry,this.customLabels=e.customLabels}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}}getLogger(){return this.logger}getMergedCustomLabels(e){return Lt(pe.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((o,i)=>o-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 o=this.getMetricsInstruments();if(o){let i=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel,a=this.getMergedCustomLabels(n);Ja(o,e,t,this.name,i,a),Ya(o,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 o=this.getMetricsInstruments();if(o){let i=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel,a=this.getMergedCustomLabels(n);Za(o,e,this.name,i,a),t&&Qa(o,e,this.name,i,a),Xa(o,e,r.rate,this.name,i,a)}}recordTokenUsage(e,t){let n=this.getMetricsInstruments();if(n&&e?.tokens){let{promptTokens:r,completionTokens:o,totalTokens:i,thoughtsTokens:a,cacheReadTokens:l,cacheCreationTokens:u}=e.tokens,c=this.getMergedCustomLabels(t);r&&rr(n,"input",r,this.name,e.model,c),o&&rr(n,"output",o,this.name,e.model,c),i&&rr(n,"total",i,this.name,e.model,c),a&&rr(n,"thoughts",a,this.name,e.model,c),l&&Js(n,"read",l,this.name,e.model,c),u&&Js(n,"write",u,this.name,e.model,c)}}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 o of r.content)o.type==="image"?t=!0:o.type==="audio"&&(n=!0)}return{hasImages:t,hasAudio:n}}calculatePromptLength(e){let t=0;if(e.chatPrompt&&Array.isArray(e.chatPrompt))for(let n of e.chatPrompt)if(n.role==="system"||n.role==="assistant")n.content&&(t+=n.content.length);else if(n.role==="user"){if(typeof n.content=="string")t+=n.content.length;else if(Array.isArray(n.content))for(let r of n.content)r.type==="text"&&(t+=r.text.length)}else n.role==="function"&&n.result&&(t+=n.result.length);return t}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}estimateCost(e,t){if(!t?.tokens)return 0;let n=this.modelInfo.find(l=>l.name===e);if(!n||!n.promptTokenCostPer1M&&!n.completionTokenCostPer1M)return 0;let{promptTokens:r=0,completionTokens:o=0}=t.tokens,i=n.promptTokenCostPer1M||0,a=n.completionTokenCostPer1M||0;return r*i/1e6+o*a/1e6}estimateCostByName(e,t){if(!t?.tokens)return 0;let n=this.modelInfo.find(l=>l.name===e);if(!n||!n.promptTokenCostPer1M&&!n.completionTokenCostPer1M)return 0;let{promptTokens:r=0,completionTokens:o=0}=t.tokens,i=n.promptTokenCostPer1M||0,a=n.completionTokenCostPer1M||0;return r*i/1e6+o*a/1e6}recordFunctionCallMetrics(e,t,n){let r=this.getMetricsInstruments();if(!(!r||!e))for(let o of e)o&&typeof o=="object"&&"function"in o&&o.function&&typeof o.function=="object"&&"name"in o.function&&tl(r,o.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;sl(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;il(n,e,this.name,r,this.getMergedCustomLabels(t))}}recordChatMetrics(e,t,n){let r=this.getMetricsInstruments();if(!r)return;let o=this.lastUsedChatModel,i=this.lastUsedModelConfig,a=this.getMergedCustomLabels(t?.customLabels),l=i?.stream??!1;el(r,"chat",l,this.name,o,a);let{hasImages:u,hasAudio:c}=this.detectMultimodalContent(e);ll(r,u,c,this.name,o,a);let p=this.calculatePromptLength(e);rl(r,p,this.name,o,a),nl(r,i?.temperature,i?.maxTokens,this.name,o,a),t?.thinkingTokenBudget&&this.modelUsage?.tokens?.thoughtsTokens&&al(r,this.modelUsage.tokens.thoughtsTokens,this.name,o,a);let d=this.calculateRequestSize(e);if(Ks(r,"chat",d,this.name,o,a),n&&!l){let m=n,g=this.calculateResponseSize(m);if(Ws(r,"chat",g,this.name,o,a),m.results)for(let y of m.results)y.functionCalls&&this.recordFunctionCallMetrics(y.functionCalls,this.lastUsedChatModel,a);let h=this.calculateContextWindowUsage(this.lastUsedChatModel,m.modelUsage);h>0&&ol(r,h,this.name,o,a);let f=this.estimateCost(this.lastUsedChatModel,m.modelUsage);f>0&&Vs(r,"chat",f,this.name,o,a)}}recordEmbedMetrics(e,t,n){let r=this.getMetricsInstruments();if(!r)return;let o=this.lastUsedEmbedModel,i=this.getMergedCustomLabels(n?.customLabels),a=this.calculateRequestSize(e);Ks(r,"embed",a,this.name,o,i);let l=this.calculateResponseSize(t);Ws(r,"embed",l,this.name,o,i);let u=this.estimateCostByName(o,t.modelUsage);u>0&&Vs(r,"embed",u,this.name,o,i)}getMetrics(){return structuredClone(this.metrics)}async chat(e,t){let n=performance.now(),r=!1,o,i=this.getModelByKey(e.model),a=i?i.thinkingTokenBudget:void 0,l={...i?{thinkingTokenBudget:a,showThoughts:i.showThoughts,stream:i.stream,debug:i.debug,useExpensiveModel:i.useExpensiveModel}:void 0,...Object.fromEntries(Object.entries(t??{}).filter(([,u])=>u!==void 0))};try{return o=await this._chat1(e,l),o}catch(u){throw r=!0,u instanceof Error&&(u.message.includes("timeout")||u.name==="TimeoutError"?this.recordTimeoutMetric("chat",l?.customLabels):(u.message.includes("abort")||u.name==="AbortError")&&this.recordAbortMetric("chat",l?.customLabels)),u}finally{let u=performance.now()-n;this.updateLatencyMetrics("chat",u,l?.customLabels),this.updateErrorMetrics("chat",r,l?.customLabels),r||this.recordChatMetrics(e,l,o)}}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)Zt(u);let r=this.getModelByKey(e.model),o={...this.aiImpl.getModelConfig(),...r?r.modelConfig:void 0,...e.modelConfig},i=this.modelInfo.find(u=>u.name===n);if(i?.notSupported?.temperature&&"temperature"in o&&delete o.temperature,i?.notSupported?.topP&&"topP"in o&&delete o.topP,t?.thinkingTokenBudget&&!this.getFeatures(n).hasThinkingBudget)throw new Error(`Model ${n} does not support thinkingTokenBudget.`);if(t?.showThoughts&&!this.getFeatures(n).hasShowThoughts)throw new Error(`Model ${n} does not support showThoughts.`);if(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 o.stream=(t?.stream!==void 0?t.stream:o.stream)??!0,this.getFeatures(n).streaming||(o.stream=!1),this.tracer?await this.tracer.startActiveSpan("AI Chat Request",{kind:Qe.SERVER,attributes:{[ge.LLM_SYSTEM]:this.name,[ge.LLM_OPERATION_NAME]:"chat",[ge.LLM_REQUEST_MODEL]:n,[ge.LLM_REQUEST_MAX_TOKENS]:o.maxTokens??"Not set",[ge.LLM_REQUEST_TEMPERATURE]:o.temperature,[ge.LLM_REQUEST_TOP_P]:o.topP??"Not set",[ge.LLM_REQUEST_TOP_K]:o.topK??"Not set",[ge.LLM_REQUEST_FREQUENCY_PENALTY]:o.frequencyPenalty??"Not set",[ge.LLM_REQUEST_PRESENCE_PENALTY]:o.presencePenalty??"Not set",[ge.LLM_REQUEST_STOP_SEQUENCES]:o.stopSequences?.join(", ")??"Not set",[ge.LLM_REQUEST_LLM_IS_STREAMING]:o.stream??"Not set"}},t?.traceContext??Et.active(),async u=>await this._chat2(n,o,e,t,u)):await this._chat2(n,o,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,o){if(!this.aiImpl.createChatReq)throw new Error("createChatReq not implemented");let i=r?.debug??this.#e,a=r?.verbose??this.#t,l;n.functions&&n.functions.length>0&&(l=n.functions.map(A=>this.cleanupFunctionSchema(A)));let u={...n,model:e,functions:l,modelConfig:t};this.lastUsedChatModel=e,this.lastUsedModelConfig=t,i&&Da(u.chatPrompt,r?.stepIndex??0,r?.logger??this.logger,r?.debugHideSystemPrompt);let c=this.getFeatures(e).functions,p=r?.functionCallMode??"auto",m=p==="prompt"||p==="auto"&&!c?{...u,chatPrompt:u.chatPrompt.map(A=>{if(A.role==="assistant"){let{content:T,name:b,cache:R}=A;return{role:"assistant",content:T,name:b,cache:R}}return A.role==="function"?{role:"user",content:A.result}:A}),functions:[]}:u,g=await this.handleContextCaching(e,m,r,o),h=async()=>{if(g?.preparedRequest){let{apiConfig:R,request:O}=g.preparedRequest;return o?.isRecording()&&cl(n,o,this.excludeContentFromTrace),await ze({name:R.name,url:this.apiURL,localCall:R.localCall,headers:await this.buildHeaders(R.headers),stream:t.stream,timeout:this.timeout,verbose:a,fetch:this.fetch,span:o,abortSignal:r?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:r?.retry??this.retry},O)}let[A,T]=await this.aiImpl.createChatReq(m,r);return o?.isRecording()&&cl(n,o,this.excludeContentFromTrace),await ze({name:A.name,url:this.apiURL,localCall:A.localCall,headers:await this.buildHeaders(A.headers),stream:t.stream,timeout:this.timeout,verbose:a,fetch:this.fetch,span:o,abortSignal:r?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:r?.retry??this.retry},T)},f=r?.rateLimiter??this.rt,y=f?await f(h,{modelUsage:this.modelUsage}):await h();if(t.stream){if(!this.aiImpl.createChatStreamResp)throw new Error("createChatStreamResp not implemented");let A=this.aiImpl.createChatStreamResp.bind(this),T=_=>M=>{let G=A(M,_);if(G.sessionId=r?.sessionId,!G.modelUsage){let B=this.aiImpl.getTokenUsage();B&&(G.modelUsage={ai:this.name,model:e,tokens:B})}return this.modelUsage=G.modelUsage,this.recordTokenUsage(G.modelUsage,r?.customLabels),o?.isRecording()&&pl(G,o,this.excludeContentFromTrace),G},b=async _=>{o?.isRecording()&&o.end(),i&&Ua(_,r?.logger??this.logger)};if(typeof window<"u"){let _=y,M={},G=[],B=r?.abortSignal??this.abortSignal;return new ReadableStream({start:L=>{let I=_.getReader(),v=()=>{try{I.cancel().catch(()=>{})}catch{}try{this.recordAbortMetric("chat",r?.customLabels)}catch{}try{o?.isRecording()&&o.end()}catch{}try{L.error(new DOMException("Aborted","AbortError"))}catch{L.error(new Error("Aborted"))}};if(B){if(B.aborted){v();return}B.addEventListener("abort",v,{once:!0})}async function E(){try{for(;;){let{done:$,value:S}=await I.read();if($){b&&await b(G),L.close();break}let P=T(M)(S);P&&(G.push(P),L.enqueue(P))}}catch($){if(L.error($),o?.isRecording())try{o.end()}catch{}}finally{if(I.releaseLock(),B)try{B.removeEventListener("abort",v)}catch{}}}E()}})}return y.pipeThrough(new to(T({}),b))}if(!this.aiImpl.createChatResp)throw new Error("createChatResp not implemented");let x=this.aiImpl.createChatResp(y);if(x.sessionId=r?.sessionId,!x.modelUsage){let A=this.aiImpl.getTokenUsage();A&&(x.modelUsage={ai:this.name,model:e,tokens:A})}return x.modelUsage&&(this.modelUsage=x.modelUsage,this.recordTokenUsage(x.modelUsage,r?.customLabels)),o?.isRecording()&&(pl(x,o,this.excludeContentFromTrace),o.end()),i&&Ga(x,r?.logger??this.logger),x}async embed(e,t){let n=performance.now(),r=!1,o,i=this.getModelByKey(e.embedModel),a={...i?{thinkingTokenBudget:i.thinkingTokenBudget,showThoughts:i.showThoughts,stream:i.stream,debug:i.debug,useExpensiveModel:i.useExpensiveModel}:void 0,...t};try{return o=await this._embed1(e,a),o}catch(l){throw r=!0,l instanceof Error&&(l.message.includes("timeout")||l.name==="TimeoutError"?this.recordTimeoutMetric("embed",a?.customLabels):(l.message.includes("abort")||l.name==="AbortError")&&this.recordAbortMetric("embed",a?.customLabels)),l}finally{let l=performance.now()-n;this.updateLatencyMetrics("embed",l,a?.customLabels),this.updateErrorMetrics("embed",r,a?.customLabels),!r&&o&&this.recordEmbedMetrics(e,o,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:Qe.SERVER,attributes:{[ge.LLM_SYSTEM]:this.name,[ge.LLM_OPERATION_NAME]:"embeddings",[ge.LLM_REQUEST_MODEL]:n}},t?.traceContext??Et.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 o=this.aiImpl.createEmbedReq.bind(this.aiImpl),i=n?.debug??this.#e,a=n?.verbose??this.#t,l={...t,embedModel:e};this.lastUsedEmbedModel=e,i&&Ha(l.texts??[],e,n?.logger??this.logger);let u=async()=>{let[m,g]=await o(l);return await ze({name:m.name,url:this.apiURL,localCall:m.localCall,headers:await this.buildHeaders(m.headers),verbose:a,fetch:this.fetch,timeout:this.timeout,span:r,abortSignal:n?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:n?.retry??this.retry},g)},c=n?.rateLimiter??this.rt,p=c?await c(u,{modelUsage:this.embedModelUsage}):await u(),d=this.aiImpl.createEmbedResp?.(p);if(d.sessionId=n?.sessionId,!d.modelUsage){let m=this.aiImpl.getTokenUsage();m&&(d.modelUsage={ai:this.name,model:e,tokens:m})}return this.embedModelUsage=d.modelUsage,this.recordTokenUsage(d.modelUsage,n?.customLabels),r?.isRecording()&&d.modelUsage?.tokens&&r.addEvent(gt.GEN_AI_USAGE,{[ge.LLM_USAGE_INPUT_TOKENS]:d.modelUsage.tokens.promptTokens,[ge.LLM_USAGE_OUTPUT_TOKENS]:d.modelUsage.tokens.completionTokens??0,[ge.LLM_USAGE_TOTAL_TOKENS]:d.modelUsage.tokens.totalTokens}),i&&Ka(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 o=n?.contextCache;if(!o)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 l=o.ttlSeconds??3600,u=o.refreshWindowSeconds??300,c=o.minTokens??2048;if(o.name)return this.useCacheByName(e,t,o.name,n,r);let p=dp(t.chatPrompt);if(!p||p===et("sha256").digest("hex"))return null;let d={providerName:this.getName(),contentHash:p},m=cp(d),g=Date.now(),h=o.registry,f=h?await h.get(m):Ys.get(m);if(f&&f.expiresAt>g){if(f.expiresAt-g<u*1e3&&this.aiImpl.buildCacheUpdateTTLOp){await this.executeCacheOperation(this.aiImpl.buildCacheUpdateTTLOp(f.cacheName,l),n,r);let T={cacheName:f.cacheName,expiresAt:g+l*1e3,tokenCount:f.tokenCount};h?await h.set(m,T):Ys.set(m,{...T,contentHash:p,lastTouchedAt:g})}return this.useCacheByName(e,t,f.cacheName,n,r)}if(this.estimateCacheableTokens(t.chatPrompt)<c)return null;let x=this.aiImpl.buildCacheCreateOp?.(t,n);if(x){let A=await this.executeCacheOperation(x,n,r);if(A){let T={cacheName:A.name,expiresAt:new Date(A.expiresAt).getTime(),tokenCount:A.tokenCount};return h?await h.set(m,T):Ys.set(m,{...T,contentHash:p,lastTouchedAt:g}),this.useCacheByName(e,t,A.name,n,r)}}return null}async useCacheByName(e,t,n,r,o){if(this.aiImpl.prepareCachedChatReq){let i=await this.aiImpl.prepareCachedChatReq(t,r??{},n);return{preparedRequest:{apiConfig:i.apiConfig,request:i.request}}}return null}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 o=await ze({name:e.apiConfig.name,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(o)}catch(o){n?.addEvent("context_cache.error",{type:e.type,error:o instanceof Error?o.message:String(o)});return}}estimateCacheableTokens(e){let t=0;for(let n of e){if(n.role==="system"){t+=n.content.length;continue}if("cache"in n&&n.cache)if(n.role==="user"){if(typeof n.content=="string")t+=n.content.length;else if(Array.isArray(n.content))for(let r of n.content)"cache"in r&&r.cache&&(r.type==="text"?t+=r.text.length:r.type==="image"?t+=1e3:r.type==="audio"?t+=2e3:r.type==="file"&&(t+=500))}else n.role==="assistant"&&n.content&&(t+=n.content.length)}return Math.ceil(t/4)}};function cl(s,e,t){let n=[];if(s.chatPrompt&&Array.isArray(s.chatPrompt)&&s.chatPrompt.length>0)for(let o of s.chatPrompt)switch(o.role){case"system":if(o.content){let i={};t||(i.content=o.content),e.addEvent(gt.GEN_AI_SYSTEM_MESSAGE,i)}break;case"user":if(typeof o.content=="string")n.push(o.content);else if(Array.isArray(o.content))for(let i of o.content)i.type==="text"&&n.push(i.text);break;case"assistant":{let i=o.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&&o.content&&(a.content=o.content),e.addEvent(gt.GEN_AI_ASSISTANT_MESSAGE,a)}else if(o.content){let a={};t||(a.content=o.content),e.addEvent(gt.GEN_AI_ASSISTANT_MESSAGE,a)}break}case"function":{let i={id:o.functionId};t||(i.content=o.result),e.addEvent(gt.GEN_AI_TOOL_MESSAGE,i);break}}let r={};t||(r.content=n.join(`
169
- `)),e.addEvent(gt.GEN_AI_USER_MESSAGE,r)}function pl(s,e,t){if(s.modelUsage?.tokens){let n=s.modelUsage.tokens.thoughtsTokens?{[ge.LLM_USAGE_THOUGHTS_TOKENS]:s.modelUsage.tokens.thoughtsTokens}:{};e.addEvent(gt.GEN_AI_USAGE,{[ge.LLM_USAGE_INPUT_TOKENS]:s.modelUsage.tokens.promptTokens,[ge.LLM_USAGE_OUTPUT_TOKENS]:s.modelUsage.tokens.completionTokens??0,[ge.LLM_USAGE_TOTAL_TOKENS]:s.modelUsage.tokens.totalTokens,...n})}if(s.results)for(let n=0;n<s.results.length;n++){let r=s.results[n];if(!r||!r.content&&!r.thought&&!r.functionCalls?.length&&!r.finishReason)continue;let o=r.functionCalls?.map(a=>({id:a.id,type:a.type,function:a.function.name,arguments:a.function.params})),i={};o&&o.length>0?(t||(i.content=r.content),i.tool_calls=o):t||(i.content=r.content??""),e.addEvent(gt.GEN_AI_CHOICE,{finish_reason:r.finishReason,index:n,message:JSON.stringify(i,null,2)})}}function dl(s){let e=0;for(let t of s){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 mp(s){let e=new Set;for(let t of s){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 or=(f=>(f.Claude46Opus="claude-opus-4-6",f.Claude46Sonnet="claude-sonnet-4-6",f.Claude45Opus="claude-opus-4-5-20251101",f.Claude41Opus="claude-opus-4-1-20250805",f.Claude4Opus="claude-opus-4-20250514",f.Claude4Sonnet="claude-sonnet-4-20250514",f.Claude45Sonnet="claude-sonnet-4-5-20250929",f.Claude45Haiku="claude-haiku-4-5",f.Claude37Sonnet="claude-3-7-sonnet-latest",f.Claude35Sonnet="claude-3-5-sonnet-latest",f.Claude35Haiku="claude-3-5-haiku-latest",f.Claude3Opus="claude-3-opus-latest",f.Claude3Sonnet="claude-3-sonnet-20240229",f.Claude3Haiku="claude-3-haiku-20240307",f.Claude21="claude-2.1",f.ClaudeInstant12="claude-instant-1.2",f))(or||{}),sr=(g=>(g.Claude46Opus="claude-opus-4-6",g.Claude46Sonnet="claude-sonnet-4-6",g.Claude45Opus="claude-opus-4-5@20251101",g.Claude41Opus="claude-opus-4-1@20250805",g.Claude4Opus="claude-opus-4@20250514",g.Claude45Sonnet="claude-sonnet-4-5@20250929",g.Claude4Sonnet="claude-sonnet-4@20250514",g.Claude37Sonnet="claude-3-7-sonnet@20250219",g.Claude35SonnetV2="claude-3-5-sonnet-v2@20241022",g.Claude45Haiku="claude-haiku-4-5@20251001",g.Claude35Haiku="claude-3-5-haiku@20241022",g.Claude35Sonnet="claude-3-5-sonnet@20240620",g.Claude3Opus="claude-3-opus@20240229",g.Claude3Haiku="claude-3-haiku@20240307",g))(sr||{});var ir=[{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,maxTokens:128e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,maxTokens:128e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5-20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5@20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5-20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5@20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-haiku-4-5",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-haiku-4-5@20251001",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-opus-4-1-20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-1@20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4@20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4@20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet@20250219",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet@20240620",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet-v2@20241022",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:8192,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-haiku-latest",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:4,maxTokens:8192},{name:"claude-3-5-haiku@20241022",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,maxTokens:8192},{name:"claude-3-opus-latest",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-opus@20240229",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-sonnet-20240229",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-haiku-20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,maxTokens:4096},{name:"claude-3-haiku@20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,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 Pt=s=>{if(!s||typeof s!="object")return s;let e={...s};if(e.type==="object"||Array.isArray(e.type)&&e.type.includes("object")){if(!e.properties||Object.keys(e.properties).length===0)throw new Error("Anthropic models do not support arbitrary JSON objects (e.g. f.json() or f.object() with no properties) in structured outputs. Please use f.string() and instruct the model to return a JSON string, or define the expected structure with f.object({ ... })");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,Pt(r)]))),e.items&&(e.items=Pt(e.items)),Array.isArray(e.anyOf)&&(e.anyOf=e.anyOf.map(n=>Pt(n))),Array.isArray(e.allOf)&&(e.allOf=e.allOf.map(n=>Pt(n))),Array.isArray(e.oneOf)&&(e.oneOf=e.oneOf.map(n=>Pt(n))),e},Xs=()=>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"},...Ce()}),gl=()=>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"},...Ce()}),Qs=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,o;this.isVertex?o={name:r?`/models/${n}:streamRawPredict?alt=sse`:`/models/${n}:rawPredict`}:o={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(E=>"cache"in E&&E.cache)||e.functions?.some(E=>E.cache),l=e.chatPrompt.filter(E=>E.role==="system"),u=l.map((E,$)=>({type:"text",text:E.content,...E.cache||a&&$===l.length-1?{cache_control:{type:"ephemeral"}}:{}})),c=e.chatPrompt.filter(E=>E.role!=="system"),p=e.functions?.map((E,$,S)=>{let P={type:"object",properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]},j=E.parameters?Pt(E.parameters):void 0;return j===void 0||j&&typeof j=="object"&&Object.keys(j).length===0?j={...P}:j&&typeof j=="object"&&j.type==="object"&&(!("properties"in j)||!j.properties||Object.keys(j.properties).length===0)&&(j={...j,properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]}),{name:E.name,description:E.description,input_schema:j,...E.cache||a&&$===S.length-1?{cache_control:{type:"ephemeral"}}:{}}}),m=(this.config.tools??[]).map(E=>E&&typeof E=="object"&&"type"in E?E:{name:E.name,description:E.description,input_schema:E.input_schema?Pt(E.input_schema):void 0,...E.cache_control?{cache_control:E.cache_control}:{}}),g=[...p??[],...m];g.length===0&&(g=void 0);let h=e.modelConfig?.maxTokens??this.config.maxTokens,f=e.modelConfig?.stopSequences??this.config.stopSequences,y=e.modelConfig?.temperature,x=e.modelConfig?.topP,A=e.modelConfig?.topK??this.config.topK,T=e.modelConfig?.n??this.config.n;if(T&&T>1)throw new Error("Anthropic does not support sampling (n > 1)");let b=E=>E.includes("claude-opus-4-6"),R=E=>E.includes("claude-opus-4-5"),O,_,M=n;if(t?.thinkingTokenBudget){let E=this.config.thinkingTokenBudgetLevels,$=this.config.effortLevelMapping;if(t.thinkingTokenBudget==="none")O=void 0,_=void 0;else{let S=t.thinkingTokenBudget;if(b(M))O={type:"adaptive"},_={effort:$?.[S]??"medium"};else if(R(M)){O={type:"enabled",budget_tokens:E?.[S]??1e4};let j=$?.[S]??"medium";j==="max"&&(j="high"),_={effort:j}}else O={type:"enabled",budget_tokens:E?.[S]??1e4}}}let B=gp(c,!!O);B.some(E=>E.role==="assistant"&&Array.isArray(E.content)&&E.content.length>0&&E.content[0]?.type==="tool_use")&&(O=void 0,_=void 0);let I;if(this.usedStructuredOutput=!1,e.responseFormat&&e.responseFormat.type==="json_schema"&&e.responseFormat.schema){let E=e.responseFormat.schema.schema||e.responseFormat.schema;I={type:"json_schema",schema:Pt(E)},this.usedStructuredOutput=!0}let v={...this.isVertex?{anthropic_version:"vertex-2023-10-16"}:{model:n},...h?{max_tokens:h}:{},...f&&f.length>0?{stop_sequences:f}:{},...y!==void 0&&!O?{temperature:y}:{},...x!==void 0&&(!O||x>=.95)?{top_p:x}:{},...A&&!O?{top_k:A}:{},...i,...g?{tools:g}:{},...r?{stream:!0}:{},...u?{system:u}:{},...O?{thinking:O}:{},..._?{output_config:_}:{},...I?{output_format:I}:{},messages:B};return[o,v]};createChatResp=e=>{if(e.type==="error")throw new ke(e.error.message,void 0,void 0);let t=ml(e.stop_reason),n=this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1,r="",o=[],i=[],a=[];for(let c of e.content)switch(c.type){case"text":if(r+=c.text??"",Array.isArray(c.citations))for(let p of c.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=c.thinking??"",d=c.signature;i.push({data:p,encrypted:!1,...typeof d=="string"?{signature:d}:{}})}break;case"redacted_thinking":if(n){let p=c.data??"",d=c.signature;i.push({data:p,encrypted:!0,...typeof d=="string"?{signature:d}:{}})}break;case"tool_use":o.push({id:c.id,type:"function",function:{name:c.name,params:c.input}});break}let l={index:0,id:e.id,finishReason:t};r&&(l.content=r),i.length>0&&(l.thoughtBlocks=i,l.thought=i.map(c=>c.data).join("")),o.length>0&&(l.functionCalls=o),a.length>0&&(l.citations=a);let u=[l];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:o}=e;throw new ke(o.message,void 0,void 0)}let r=0;if(e.type==="message_start"){let{message:o}=e,i=[{index:r,content:"",id:o.id}];return this.tokensUsed={promptTokens:o.usage?.input_tokens??0,completionTokens:o.usage?.output_tokens??0,totalTokens:(o.usage?.input_tokens??0)+(o.usage?.output_tokens??0)+(o.usage?.cache_creation_input_tokens??0)+(o.usage?.cache_read_input_tokens??0),cacheCreationTokens:o.usage?.cache_creation_input_tokens,cacheReadTokens:o.usage?.cache_read_input_tokens},{results:i}}if(e.type==="content_block_start"){let{content_block:o}=e;if(o.type==="text"){let i=[];if(Array.isArray(o.citations))for(let a of o.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:o.text,...i.length?{citations:i}:{}}]}}if(o.type==="thinking")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:r,thought:o.thinking,thoughtBlocks:[{data:o.thinking,encrypted:!1}]}]}:{results:[{index:r,content:""}]};if(o.type==="tool_use"&&typeof o.id=="string"&&typeof e.index=="number"&&!n.indexIdMap[e.index]){n.indexIdMap[e.index]=o.id;let i=[{id:o.id,type:"function",function:{name:o.name,params:""}}];return{results:[{index:r,functionCalls:i}]}}if(o.type==="web_search_tool_result"||o.type==="server_tool_use")return{results:[{index:r,content:""}]}}if(e.type==="content_block_delta"){let{delta:o}=e;if(o.type==="citations_delta"){let i=o.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(o.type==="text_delta"){let i=[];if(Array.isArray(o.citations))for(let a of o.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:o.text,...i.length?{citations:i}:{}}]}}if(o.type==="thinking_delta")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:r,thought:o.thinking,thoughtBlocks:[{data:o.thinking,encrypted:!1}]}]}:{results:[{index:r,content:""}]};if(o.type==="signature_delta")return{results:[{index:r,thoughtBlocks:[{data:"",encrypted:!1,signature:o.signature}]}]};if(o.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:o.partial_json}}];return{results:[{index:r,functionCalls:a}]}}}if(e.type==="message_delta"){let{delta:o,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:ml(o.stop_reason)}]}}return{results:[{index:r,content:""}]}};supportsImplicitCaching=()=>!0},en=class s extends Fe{static create(e){return new s(e)}constructor({apiKey:e,projectId:t,region:n,config:r,options:o,models:i}){let a=t!==void 0&&n!==void 0,l,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");l=`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");l="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 c={...Xs(),...r},p=new Qs(c,a),d=g=>{let h=rt({model:g,modelInfo:ir,models:i});return{functions:!0,streaming:!0,hasThinkingBudget:h?.supported?.thinkingBudget??!1,hasShowThoughts:h?.supported?.showThoughts??!1,structuredOutputs:h?.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:h?.supported?.thinkingBudget??!1,multiTurn:!0}},m=i?.map(g=>{let h=g,f=h?.config;if(!f)return g;let y={};f.maxTokens!==void 0&&(y.maxTokens=f.maxTokens),f.temperature!==void 0&&(y.temperature=f.temperature),f.topP!==void 0&&(y.topP=f.topP),f.topK!==void 0&&(y.topK=f.topK),f.presencePenalty!==void 0&&(y.presencePenalty=f.presencePenalty),f.frequencyPenalty!==void 0&&(y.frequencyPenalty=f.frequencyPenalty),f.stopSequences!==void 0&&(y.stopSequences=f.stopSequences),f.endSequences!==void 0&&(y.endSequences=f.endSequences),f.stream!==void 0&&(y.stream=f.stream),f.n!==void 0&&(y.n=f.n);let x={...h};Object.keys(y).length>0&&(x.modelConfig={...h.modelConfig??{},...y});let A=f.thinking?.thinkingTokenBudget;if(typeof A=="number"){let T=c.thinkingTokenBudgetLevels,b=[["minimal",T?.minimal??1024],["low",T?.low??5e3],["medium",T?.medium??1e4],["high",T?.high??2e4],["highest",T?.highest??32e3]],R="minimal",O=Number.POSITIVE_INFINITY;for(let[_,M]of b){let G=Math.abs(A-M);G<O&&(O=G,R=_)}x.thinkingTokenBudget=R}return f.thinking?.includeThoughts!==void 0&&(x.showThoughts=!!f.thinking.includeThoughts),x});super(p,{name:"Anthropic",apiURL:l,headers:u,modelInfo:ir,defaults:{model:c.model},options:o,supportFor:d,models:m??i})}};function gp(s,e){let t=s.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 o="",i=[],a=r.thoughtBlocks;if(Array.isArray(a)&&a.length>0)for(let l of a)l.encrypted?i.push(l.signature?{type:"redacted_thinking",data:l.data,signature:l.signature}:{type:"redacted_thinking",data:l.data}):i.push(l.signature?{type:"thinking",thinking:l.data,signature:l.signature}:{type:"thinking",thinking:l.data});if(typeof r.content=="string"&&(i.length>0?o=[...i,{type:"text",text:r.content}]:o=r.content),typeof r.functionCalls<"u"&&(o=r.functionCalls.map(l=>{let u={};if(typeof l.function.params=="string"){let c=l.function.params;if(c.trim().length===0)u={};else try{u=JSON.parse(c)}catch{throw new Error(`Failed to parse function params JSON: ${c}`)}}else typeof l.function.params=="object"&&(u=l.function.params);return{type:"tool_use",id:l.id,name:l.function.name,input:u,...r.cache?{cache_control:{type:"ephemeral"}}:{}}}),Array.isArray(o)&&i.length>0&&(o=[...i,...o])),r.cache){if(typeof o=="string")o=[{type:"text",text:o,cache_control:{type:"ephemeral"}}];else if(Array.isArray(o)&&o.length>0){let l=o.length-1,u=o[l];u&&u.type==="text"&&(o[l]={...u,cache_control:{type:"ephemeral"}})}}return{role:"assistant",content:o}}default:throw new Error("Invalid role")}}),n=hp(t);return fp(n)}function hp(s){let e=[];for(let[t,n]of s.entries()){if(n.role!=="assistant"){e.push(n);continue}if(t>0&&s.at(t-1)?.role==="assistant"){let r=e.pop();e.push({...r||{},...n})}else e.push(n)}return e}function fp(s){return s.map(e=>e.role==="assistant"&&typeof e.content=="string"?{...e,content:e.content.replace(/\s+$/,"")}:e)}function ml(s){if(s)switch(s){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 ar=(P=>(P.GPT4="gpt-4",P.GPT41="gpt-4.1",P.GPT41Mini="gpt-4.1-mini",P.GPT41Nano="gpt-4.1-nano",P.GPT4O="gpt-4o",P.GPT4OMini="gpt-4o-mini",P.GPT4ChatGPT4O="chatgpt-4o-latest",P.GPT4Turbo="gpt-4-turbo",P.GPT35Turbo="gpt-3.5-turbo",P.GPT35TurboInstruct="gpt-3.5-turbo-instruct",P.GPT35TextDavinci002="text-davinci-002",P.GPT3TextBabbage002="text-babbage-002",P.GPT3TextAda001="text-ada-001",P.GPT5="gpt-5",P.GPT5Nano="gpt-5-nano",P.GPT5Mini="gpt-5-mini",P.GPT5Chat="gpt-5-chat",P.GPT5ChatLatest="gpt-5-chat-latest",P.GPT5Codex="gpt-5-codex",P.GPT5Pro="gpt-5-pro",P.GPT51="gpt-5.1",P.GPT51ChatLatest="gpt-5.1-chat-latest",P.GPT51Codex="gpt-5.1-codex",P.GPT51CodexMini="gpt-5.1-codex-mini",P.GPT51CodexMax="gpt-5.1-codex-max",P.GPT52="gpt-5.2",P.GPT52ChatLatest="gpt-5.2-chat-latest",P.GPT52Codex="gpt-5.2-codex",P.GPT52Pro="gpt-5.2-pro",P.O1="o1",P.O1Mini="o1-mini",P.O3="o3",P.O3Mini="o3-mini",P.O4Mini="o4-mini",P))(ar||{}),tn=(n=>(n.TextEmbeddingAda002="text-embedding-ada-002",n.TextEmbedding3Small="text-embedding-3-small",n.TextEmbedding3Large="text-embedding-3-large",n))(tn||{});var nn=(N=>(N.GPT4="gpt-4",N.GPT41="gpt-4.1",N.GPT41Mini="gpt-4.1-mini",N.GPT41Nano="gpt-4.1-nano",N.GPT4O="gpt-4o",N.GPT4OMini="gpt-4o-mini",N.GPT4ChatGPT4O="chatgpt-4o-latest",N.GPT4Turbo="gpt-4-turbo",N.GPT35Turbo="gpt-3.5-turbo",N.GPT35TurboInstruct="gpt-3.5-turbo-instruct",N.GPT35TextDavinci002="text-davinci-002",N.GPT3TextBabbage002="text-babbage-002",N.GPT3TextAda001="text-ada-001",N.GPT5="gpt-5",N.GPT5Nano="gpt-5-nano",N.GPT5Mini="gpt-5-mini",N.GPT5Chat="gpt-5-chat",N.GPT5ChatLatest="gpt-5-chat-latest",N.GPT5Codex="gpt-5-codex",N.GPT5Pro="gpt-5-pro",N.GPT51="gpt-5.1",N.GPT51ChatLatest="gpt-5.1-chat-latest",N.GPT51Codex="gpt-5.1-codex",N.GPT51CodexMini="gpt-5.1-codex-mini",N.GPT51CodexMax="gpt-5.1-codex-max",N.GPT52="gpt-5.2",N.GPT52ChatLatest="gpt-5.2-chat-latest",N.GPT52Codex="gpt-5.2-codex",N.GPT52Pro="gpt-5.2-pro",N.O1Pro="o1-pro",N.O1="o1",N.O1Mini="o1-mini",N.O3Pro="o3-pro",N.O3="o3",N.O3Mini="o3-mini",N.O4Mini="o4-mini",N))(nn||{});var rn=[{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:"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}],io=[{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:"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 xp=s=>{let e=["o1","o1-mini","o3","o3-mini","o4-mini","o1-pro","o3-pro"];return e.includes(s)||e.includes(s)},Dt=()=>structuredClone({model:"gpt-5-mini",embedModel:"text-embedding-3-small",...Ce()}),ao=()=>structuredClone({...Dt(),model:"gpt-5"}),lo=()=>structuredClone({model:"gpt-5-mini",embedModel:"text-embedding-3-small",...De()}),uo=()=>({...Dt(),model:"gpt-5-nano"}),Zs=class{constructor(e,t,n){this.config=e;this.streamingUsage=t;this.chatReqUpdater=n}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"},o=e.functions?.map(m=>({type:"function",function:{name:m.name,description:m.description,parameters:m.parameters}})),i=!e.functionCall&&e.functions&&e.functions.length>0?"auto":e.functionCall,a=Ap(e),l=e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,u=e.modelConfig?.stream??this.config.stream,c=this.config.store,p=xp(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}}:{},...o?{tools:o}:{},...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}:{},...l!==void 0?{frequency_penalty:l}:{}},...(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}}:{},...c?{store:c}:{},...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)),[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:o}=e;if(o)throw o;return this.tokensUsed=n?{promptTokens:n.prompt_tokens,completionTokens:n.completion_tokens,totalTokens:n.total_tokens}:void 0,{results:r.map(a=>{if(a.message.refusal)throw new ke(a.message.refusal,e.model,e.id);let l=hl(a.finish_reason),u=a.message.tool_calls?.map(({id:c,function:{arguments:p,name:d}})=>({id:c,type:"function",function:{name:d,params:p}}));return{index:a.index,id:`${a.index}`,content:a.message.content??void 0,thought:a.message.reasoning_content,citations:a.message.annotations?.filter(c=>c?.type==="url_citation"&&c.url_citation).map(c=>({url:c.url_citation?.url,title:c.url_citation?.title,description:c.url_citation?.description})),functionCalls:u,finishReason:l}}),remoteId:t}}createChatStreamResp(e,t){let{id:n,usage:r,choices:o}=e;this.tokensUsed=r?{promptTokens:r.prompt_tokens,completionTokens:r.completion_tokens,totalTokens:r.total_tokens}:void 0;let i=t;return i.indexIdMap||(i.indexIdMap={}),{results:o.map(({index:l,delta:{content:u,role:c,refusal:p,tool_calls:d,reasoning_content:m,annotations:g},finish_reason:h})=>{if(p)throw new ke(p,void 0,n);let f=hl(h),y=d?.map(({id:x,index:A,function:{name:T,arguments:b}})=>{typeof x=="string"&&typeof A=="number"&&!i.indexIdMap[A]&&(i.indexIdMap[A]=x);let R=i.indexIdMap[A];return R?{id:R,type:"function",function:{name:T,params:b}}:null}).filter(x=>x!==null);return{index:l,content:u??void 0,role:c,thought:m,citations:g?.filter(x=>x?.type==="url_citation"&&x.url_citation).map(x=>({url:x.url_citation?.url,title:x.url_citation?.title,description:x.url_citation?.description})),functionCalls:y,finishReason:f,id:n}})}}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)}}},hl=s=>{switch(s){case"stop":return"stop";case"length":return"length";case"content_filter":return"error";case"tool_calls":return"function_call"}};function Ap(s){return s.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 Ee=class extends Fe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:o,models:i,chatReqUpdater:a,supportFor:l}){if(!e||e==="")throw new Error("OpenAI API key not set");let u=new Zs(t,n?.streamingUsage??!0,a);super(u,{name:"OpenAI",apiURL:r||"https://api.openai.com/v1",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:o,defaults:{model:t.model,embedModel:t.embedModel},options:n,supportFor:l,models:i})}},on=class extends Ee{constructor({apiKey:e,apiURL:t,config:n,options:r,models:o,modelInfo:i}){if(!e||e==="")throw new Error("OpenAI API key not set");i=[...rn,...i??[]];let a=u=>{let c=rt({model:u,modelInfo:i,models:o});return{functions:!0,streaming:!0,hasThinkingBudget:c?.supported?.thinkingBudget??!1,hasShowThoughts:c?.supported?.showThoughts??!1,structuredOutputs:c?.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:c?.supported?.thinkingBudget??!1,multiTurn:!0}},l=o?.map(u=>{let c=u,p=c?.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 m=p.stopSequences??p.stop;m!==void 0&&(d.stopSequences=m),p.n!==void 0&&(d.n=p.n),p.stream!==void 0&&(d.stream=p.stream);let g={...c};Object.keys(d).length>0&&(g.modelConfig={...c.modelConfig??{},...d});let h=p?.thinking?.thinkingTokenBudget;if(typeof h=="number"){let f=[["minimal",200],["low",800],["medium",5e3],["high",1e4],["highest",24500]],y="minimal",x=Number.POSITIVE_INFINITY;for(let[A,T]of f){let b=Math.abs(h-T);b<x&&(x=b,y=A)}g.thinkingTokenBudget=y}return p?.thinking?.includeThoughts!==void 0&&(g.showThoughts=!!p.thinking.includeThoughts),g});super({apiKey:e,apiURL:t,config:{...Dt(),...n},options:r,modelInfo:i,models:l??o,supportFor:a}),super.setName("OpenAI")}};var yp=s=>{let e=s.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},bp=s=>{let e=s.match(/^(\d{4}-\d{2}-\d{2})/);return e?e[1]>="2024-08-01":!1},ei=Dt,fl=lo,xl=uo,Al=ao,sn=class extends Ee{constructor({apiKey:e,resourceName:t,deploymentName:n,version:r="api-version=2024-02-15-preview",config:o,options:i,models:a,modelInfo:l}){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 u={...ei(),...o},c=yp(r),p=bp(c);l=[...rn,...l??[]];let d=g=>{let h=rt({model:g,modelInfo:l,models:a});return{functions:!0,streaming:!0,hasThinkingBudget:h?.supported?.thinkingBudget??!1,hasShowThoughts:h?.supported?.showThoughts??!1,structuredOutputs:p&&(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:u,options:i,models:a,modelInfo:l,supportFor:d});let m=t.includes("://")?t:`https://${t}.openai.azure.com/`;super.setName("Azure OpenAI"),super.setAPIURL(new URL(`/openai/deployments/${n}?api-version=${c}`,m).href),super.setHeaders(async()=>({"api-key":e}))}};var co=class s{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.");Ip(e),this.services=[...e].sort(t?.comparator??s.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 s(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,o=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 l=a.latency.chat.samples.length;l>0&&(t+=a.latency.chat.mean*l,n+=l);let u=a.latency.embed.samples.length;u>0&&(r+=a.latency.embed.mean*u,o+=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),o>0&&(e.latency.embed.mean=r/o);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}canRetryService(e){let t=this.serviceFailures.get(e.getId());if(!t)return!0;let{retries:n,lastFailureTime:r}=t,o=Date.now()-r,i=Math.min(this.initialBackoffMs*2**n,this.maxBackoffMs);return o>=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,o=r?.requiresImages,i=r?.requiresAudio,a=this.services,l=e.model;if((n||o||i)&&(a=this.services.filter(p=>{let d=p.getFeatures(l);return!(n&&!d.structuredOutputs||o&&!d.media.images.supported||i&&!d.media.audio.supported)}),a.length===0)){let p=[];throw n&&p.push("structured outputs"),o&&p.push("images"),i&&p.push("audio"),new Error(`No services available that support required capabilities: ${p.join(", ")}.`)}let u=0,c=a[u];if(!c)throw new Error("No matching AI services available for request.");for(this.currentService=c;;){if(!this.canRetryService(c)){let p=this.getNextService(a,u);if(!p.service)throw new Error(`All candidate services exhausted (tried ${a.length} service(s))`);c=p.service,u=p.index,this.currentService=c;continue}try{let p=await c.chat(e,t);return this.handleSuccess(c),p}catch(p){if(!(p instanceof qe))throw p;switch(p.constructor){case vt:throw p;case Ve:{if(![408,429,500,502,503,504].includes(p.status))throw p;break}case Ue:break;case Rt:break;case ot:break;case tt:break;default:throw p}if(this.handleFailure(c,p),(this.serviceFailures.get(c.getId())?.retries??0)>=this.maxRetries){let m=this.getNextService(a,u);if(this.debug&&console.warn(`AxBalancer: Switching to service ${m.service?.getName()??"none"}`,p),!m.service)throw p;c=m.service,u=m.index,this.currentService=c}}}}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 qe)||r instanceof Ve&&![408,429,500,502,503,504].includes(r.status)||r instanceof vt)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 Ip(s){let e=s.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<s.length;r++){let o=s[r];if(!o)throw new Error(`Service at index ${r} is undefined`);let i=o.getModelList();if(!i)throw new Error(`Service at index ${r} (${o.getName()}) has no model list while another service does.`);let a=new Set(i.map(l=>l.key));for(let l of n)if(!a.has(l))throw new Error(`Service at index ${r} (${o.getName()}) is missing model "${l}"`);for(let l of a)if(!n.has(l))throw new Error(`Service at index ${r} (${o.getName()}) has extra model "${l}"`)}}function Gt(s){let e=!1,t=!1,n=!1,r=!1,o=!1,i=!1,a=!1,l=new Set,u=0;if(s.chatPrompt&&Array.isArray(s.chatPrompt))for(let c of s.chatPrompt){if(c.role==="user"&&Array.isArray(c.content))for(let p of c.content)switch(l.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 c&&typeof c.content=="string"&&(u+=Math.ceil(c.content.length/4));"cache"in c&&c.cache&&(a=!0)}return s.functions&&s.functions.length>0&&(o=!0),s.modelConfig?.stream===!0&&(i=!0),s.capabilities&&(s.capabilities.requiresImages&&(e=!0),s.capabilities.requiresAudio&&(t=!0),s.capabilities.requiresFiles&&(n=!0),s.capabilities.requiresWebSearch&&(r=!0)),{hasImages:e,hasAudio:t,hasFiles:n,hasUrls:r,requiresFunctions:o,requiresStreaming:i,requiresCaching:a,contentTypes:l,estimatedTokens:u}}function ti(s,e){let t=s.getFeatures(),n=[],r=[],o=[];if(e.hasImages&&!t.media.images.supported&&(n.push("Image support"),o.push("Use altText for images or imageToText service")),e.hasAudio&&!t.media.audio.supported&&(n.push("Audio support"),o.push("Pre-transcribe audio or use transcription field")),e.hasFiles&&!t.media.files.supported&&(n.push("File support"),o.push("Pre-extract text content or use extractedText field")),e.hasUrls&&!t.media.urls.supported&&(n.push("URL/Web search support"),o.push("Pre-fetch content or use cachedContent field")),e.requiresFunctions&&!t.functions&&n.push("Function calling"),e.requiresStreaming&&!t.streaming&&(n.push("Streaming responses"),o.push("Use non-streaming mode")),e.requiresCaching&&!t.caching.supported&&(n.push("Content caching"),o.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:o}}function po(s,e){return s.map(t=>{let n=t.getFeatures(),r=ti(t,e),o=0,i=[];return o+=10,e.hasImages&&n.media.images.supported&&(o+=25,i.push("Images"),n.media.images.detailLevels?.includes("high")&&(o+=5),n.media.images.maxSize&&n.media.images.maxSize>10*1024*1024&&(o+=3)),e.hasAudio&&n.media.audio.supported&&(o+=25,i.push("Audio"),n.media.audio.maxDuration&&n.media.audio.maxDuration>600&&(o+=5)),e.hasFiles&&n.media.files.supported&&(o+=25,i.push("Files"),n.media.files.uploadMethod==="cloud"&&(o+=3)),e.hasUrls&&n.media.urls.supported&&(o+=25,i.push("URLs"),n.media.urls.webSearch&&(o+=5)),e.requiresFunctions&&n.functions&&(o+=15,i.push("Functions"),n.functionCot&&(o+=3)),e.requiresStreaming&&n.streaming&&(o+=10,i.push("Streaming")),e.requiresCaching&&n.caching.supported&&(o+=8,i.push("Caching"),n.caching.types.includes("persistent")&&(o+=3)),n.thinking&&(o+=2),n.multiTurn&&(o+=2),n.hasThinkingBudget&&(o+=1),n.hasShowThoughts&&(o+=1),o-=r.missingCapabilities.length*10,{provider:t,score:o,missingCapabilities:r.missingCapabilities,supportedCapabilities:i}}).sort((t,n)=>n.score-t.score)}function mo(s,e,t={}){if(e.length===0)throw new Error("No providers available");let n=Gt(s),r=po(e,n);if(t.requireExactMatch){let o=r.filter(i=>i.missingCapabilities.length===0);if(o.length===0)throw new Error(`No providers fully support the request requirements: ${r[0]?.missingCapabilities.join(", ")||"unknown requirements"}`);return o[0].provider}if(!t.allowDegradation){let o=r[0];if(o.missingCapabilities.length>0)throw new Error(`Best available provider (${o.provider.getName()}) is missing: ${o.missingCapabilities.join(", ")}`)}return r[0].provider}function yl(s,e){let t=Gt(s),n=po(e,t),r=n[0]?.provider||null,o=[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}/${o} requirements (${Math.round(i/Math.max(o,1)*100)}% compatibility)`:"No suitable providers found";return{requirements:t,providerScores:n,recommendedProvider:r,summary:a}}function bl(s,e){return s.filter(t=>t.getFeatures().media[e].supported)}function Il(s,e){let t={};for(let n of s){let o=n.getFeatures().media[e];if(o.supported)for(let i of o.formats)t[i]||(t[i]=[]),t[i].push(n)}return t}var lr=(r=>(r.CommandRPlus="command-r-plus",r.CommandR="command-r",r.Command="command",r.CommandLight="command-light",r))(lr||{}),ur=(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))(ur||{});var go=[{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}];var ri=()=>structuredClone({model:"command-r-plus",embedModel:"embed-english-v3.0",...Ce()}),Tl=()=>structuredClone({model:"command-r",embedModel:"embed-english-v3.0",...De()}),ni=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),o;n&&n.role==="user"&&typeof n.content=="string"&&(o=n?.content);let i=Cp(r),a=e.functions?.map(p=>{let d={};if(p.parameters?.properties)for(let[m,g]of Object.entries(p.parameters.properties))d[m]={description:g.description,type:g.type,required:p.parameters.required?.includes(m)??!1};return{name:p.name,description:p.description,parameter_definitions:d}}),l=e.chatPrompt.filter(p=>p.role==="function").map(p=>{let d=a?.find(m=>m.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"},c={message:o,model:t,tools:a,...l&&!o?{tool_results:l}:{},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,c]}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(o=>({id:o.name,type:"function",function:{name:o.name,params:o.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),o=r[0];if(!o)throw new Error("No result");return o.id=n.generation_id??"",{results:r}};createEmbedResp(e){return{remoteId:e.id,embeddings:e.embeddings}}},an=class extends Fe{constructor({apiKey:e,config:t,options:n,models:r}){if(!e||e==="")throw new Error("Cohere API key not set");let o={...ri(),...t},i=new ni(o),a=r?.map(l=>{let u=l,c=u?.config;if(!c)return l;let p={};c.maxTokens!==void 0&&(p.maxTokens=c.maxTokens),c.temperature!==void 0&&(p.temperature=c.temperature),c.topP!==void 0&&(p.topP=c.topP),c.topK!==void 0&&(p.topK=c.topK),c.presencePenalty!==void 0&&(p.presencePenalty=c.presencePenalty),c.frequencyPenalty!==void 0&&(p.frequencyPenalty=c.frequencyPenalty),c.stopSequences!==void 0&&(p.stopSequences=c.stopSequences),c.endSequences!==void 0&&(p.endSequences=c.endSequences),c.stream!==void 0&&(p.stream=c.stream),c.n!==void 0&&(p.n=c.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:go,defaults:{model:o.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 Cp(s){return s.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=Cl(e.functionCalls);return{role:"CHATBOT",message:t,tool_calls:n}}case"function":{let n=s.map(i=>{if(i.role==="assistant")return i.functionCalls?.find(a=>a.id===e.functionId)}).filter(i=>i!==void 0),r=Cl(n)?.at(0);if(!r)throw new Error("Function call not found");let o=[{result:e.result}];return{role:"TOOL",tool_results:[{call:r,outputs:o}]}}default:throw new Error("Unknown role")}})}function Cl(s){return s?.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 cr=(n=>(n.DeepSeekChat="deepseek-chat",n.DeepSeekCoder="deepseek-coder",n.DeepSeekReasoner="deepseek-reasoner",n))(cr||{});var ho=[{name:"deepseek-chat",currency:"USD",promptTokenCostPer1M:.27,completionTokenCostPer1M:1.1},{name:"deepseek-reasoner",currency:"USD",promptTokenCostPer1M:.55,completionTokenCostPer1M:2.19}];var oi=()=>structuredClone({model:"deepseek-chat",...Ce()}),wl=()=>structuredClone({model:"deepseek-coder",...De()}),ln=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("DeepSeek API key not set");let i={...oi(),...t};o=[...ho,...o??[]],super({apiKey:e,config:i,options:n,apiURL:"https://api.deepseek.com",modelInfo:o,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 pr=(A=>(A.Gemini31Pro="gemini-3.1-pro-preview",A.Gemini3Flash="gemini-3-flash-preview",A.Gemini3Pro="gemini-3-pro-preview",A.Gemini3ProImage="gemini-3-pro-image-preview",A.Gemini25Pro="gemini-2.5-pro",A.Gemini25Flash="gemini-2.5-flash",A.Gemini25FlashLite="gemini-2.5-flash-lite",A.Gemini20Flash="gemini-2.0-flash",A.Gemini20FlashLite="gemini-2.0-flash-lite",A.Gemini20ProExp="gemini-2.0-pro-exp-02-05",A.Gemini20FlashThinkingExp="gemini-2.0-flash-thinking-exp-01-21",A.Gemini1Pro="gemini-1.0-pro",A.Gemini15Flash="gemini-1.5-flash",A.Gemini15Flash002="gemini-1.5-flash-002",A.Gemini15Flash8B="gemini-1.5-flash-8b",A.Gemini15Pro="gemini-1.5-pro",A.GeminiFlashLatest="gemini-flash-latest",A.GeminiFlashLiteLatest="gemini-flash-lite-latest",A.GeminiProLatest="gemini-pro-latest",A))(pr||{}),fo=(o=>(o.GeminiEmbedding001="gemini-embedding-001",o.GeminiEmbedding="gemini-embedding-exp",o.TextEmbeddingLarge="text-embedding-large-exp-03-07",o.TextEmbedding004="text-embedding-004",o.TextEmbedding005="text-embedding-005",o))(fo||{}),xo=(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))(xo||{}),Ao=(o=>(o.BlockNone="BLOCK_NONE",o.BlockOnlyHigh="BLOCK_ONLY_HIGH",o.BlockMediumAndAbove="BLOCK_MEDIUM_AND_ABOVE",o.BlockLowAndAbove="BLOCK_LOW_AND_ABOVE",o.BlockDefault="HARM_BLOCK_THRESHOLD_UNSPECIFIED",o))(Ao||{}),si=(l=>(l.SemanticSimilarity="SEMANTIC_SIMILARITY",l.Classification="CLASSIFICATION",l.Clustering="CLUSTERING",l.RetrievalDocument="RETRIEVAL_DOCUMENT",l.RetrievalQuery="RETRIEVAL_QUERY",l.QuestionAnswering="QUESTION_ANSWERING",l.FactVerification="FACT_VERIFICATION",l.CodeRetrievalQuery="CODE_RETRIEVAL_QUERY",l))(si||{}),Rl=["gemini-3.1-pro-preview","gemini-3.1-pro-preview-customtools","gemini-3-flash-preview","gemini-3-pro-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 yo=[{name:"gemini-3.1-pro-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:2,completionTokenCostPer1M:12,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-3-flash-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.5,completionTokenCostPer1M:3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-3-pro-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:2,completionTokenCostPer1M:12,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:2.5,completionTokenCostPer1M:15,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:15,completionTokenCostPer1M:3.5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.5-flash-lite",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.0-flash",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.01,completionTokenCostPer1M:.4,supported:{structuredOutputs:!0}},{name:"gemini-2.0-flash-lite",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:0,completionTokenCostPer1M:0,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:.075,completionTokenCostPer1M:.3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-flash-lite-latest",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:0,completionTokenCostPer1M:0,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-pro-latest",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:1.25,completionTokenCostPer1M:5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}}];var Ut=s=>s.includes("gemini-3"),vl=s=>s.includes("gemini-3")&&s.includes("pro"),bo=s=>{if(!s||typeof s!="object")return s;let e={...s};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,bo(n)]))),e.items&&(e.items=bo(e.items)),e},Sl=[{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"}],ai=()=>structuredClone({model:"gemini-2.5-flash",embedModel:"text-embedding-005",safetySettings:Sl,thinkingTokenBudgetLevels:{minimal:200,low:800,medium:5e3,high:1e4,highest:24500},thinkingLevelMapping:{minimal:"minimal",low:"low",medium:"medium",high:"high",highest:"high"},...Ce()}),kl=()=>structuredClone({model:"gemini-2.0-flash",embedModel:"text-embedding-005",safetySettings:Sl,thinkingTokenBudgetLevels:{minimal:200,low:800,medium:5e3,high:1e4,highest:24500},thinkingLevelMapping:{minimal:"minimal",low:"low",medium:"medium",high:"high",highest:"high"},...De()}),ii=class{constructor(e,t,n,r,o){this.config=e;this.isVertex=t;this.endpointId=n;this.apiKey=r;this.options=o;if(!this.isVertex&&this.config.autoTruncate)throw new Error("Auto truncate is not supported for GoogleGemini");let i=this.config.model;if(Ut(i)){if(this.config.thinking?.thinkingTokenBudget!==void 0&&typeof this.config.thinking.thinkingTokenBudget=="number")throw new Error(`Gemini 3 models (${i}) do not support numeric thinkingTokenBudget. Use thinkingLevel ('low', 'medium', 'high') instead, or pass thinkingTokenBudget as a string level via options.`);if(vl(i)&&this.config.thinking?.thinkingLevel){let a=this.config.thinking.thinkingLevel;if(a!=="low"&&a!=="high")throw new Error(`Gemini 3 Pro (${i}) only supports thinkingLevel 'low' or 'high', got '${a}'. 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}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=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 o;if(this.endpointId?o={name:r?`/${this.endpointId}:streamGenerateContent?alt=sse`:`/${this.endpointId}:generateContent`}:o={name:r?`/models/${n}:streamGenerateContent?alt=sse`:`/models/${n}:generateContent`},!this.isVertex){let x=r?"&":"?",A=typeof this.apiKey=="function"?await this.apiKey():this.apiKey;o.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,l=[],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 T=Array.isArray(A.content)?A.content.map((b,R)=>{switch(b.type){case"text":return{text:b.text};case"image":return{inlineData:{mimeType:b.mimeType,data:b.image}};case"audio":return{inlineData:{mimeType:`audio/${b.format??"mp3"}`,data:b.data}};case"file":return"fileUri"in b?{fileData:{mimeType:b.mimeType,fileUri:b.fileUri}}:{inlineData:{mimeType:b.mimeType,data:b.data}};default:throw new Error(`Chat prompt content type not supported (index: ${R})`)}}):[{text:A.content}];l.push({role:"user",parts:T});break}case"assistant":{let T=[],b=A.thoughtBlocks,R=A.functionCalls&&A.functionCalls.length>0,O=b?.[0],_=b?.map(G=>G.data).join("")??"",M=O?.signature;if(_&&T.push({...R?{}:{thought:!0},text:_,...M&&!R?{thought_signature:M}:{}}),A.functionCalls){let G=A.functionCalls.map((B,L)=>{let I;if(typeof B.function.params=="string"){let E=B.function.params;if(E.trim().length===0)I={};else try{I=JSON.parse(E)}catch{throw new Error(`Failed to parse function params JSON: ${E}`)}}else I=B.function.params;let v={functionCall:{name:B.function.name,args:I}};return M&&L===0&&(v.thought_signature=M),v});T.push(...G)}if(A.content&&T.push({text:A.content}),T.length===0)throw new Error("Assistant content is empty");l.push({role:"model",parts:T});break}case"function":{let T=[],b=A,R=x;for(;;){if(!("functionId"in b))throw new Error(`Chat prompt functionId is empty (index: ${R})`);if(T.push({functionResponse:{name:b.functionId,response:{result:b.result}}}),R+1<u.length&&u[R+1].role==="function")R++,b=u[R];else break}x=R,l.push({role:"user",parts:T});break}default:throw new Error(`Invalid role: ${JSON.stringify(A)} (index: ${x})`)}}let c=[];if(e.functions&&e.functions.length>0){let x=e.functions.map(A=>{let T={type:"object",properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]},b=A.parameters?bo(A.parameters):void 0;return b===void 0||b&&typeof b=="object"&&Object.keys(b).length===0?b={...T}:b&&typeof b=="object"&&b.type==="object"&&(!("properties"in b)||!b.properties||Object.keys(b.properties).length===0)&&(b={...b,properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]}),{name:A.name,description:A.description,parameters:b}});c.push({function_declarations:x})}if(this.options?.codeExecution&&c.push({code_execution:{}}),this.options?.googleSearchRetrieval&&c.push({google_search_retrieval:{dynamic_retrieval_config:this.options.googleSearchRetrieval}}),this.options?.googleSearch&&c.push({google_search:{}}),this.options?.googleMaps){let x=this.options.googleMaps,A=x?.enableWidget!==void 0?{enableWidget:x.enableWidget}:{};c.push({google_maps:A})}this.options?.urlContext&&c.push({url_context:{}}),c.length===0&&(c=void 0);let p,d=Array.isArray(c)?c.some(x=>x&&Array.isArray(x.function_declarations)&&x.function_declarations.length>0):!1;if(e.functionCall)if(e.functionCall==="none")p={function_calling_config:{mode:"NONE"}};else if(e.functionCall==="auto")p={function_calling_config:{mode:"AUTO"}};else if(e.functionCall==="required")p={function_calling_config:{mode:"ANY"}};else{let x=e.functionCall.function?.name?{allowedFunctionNames:[e.functionCall.function.name]}:{};p={function_calling_config:{mode:"ANY"},...x}}else d&&(p={function_calling_config:{mode:"AUTO"}});this.options?.retrievalConfig&&(p={...p??{},retrievalConfig:{...this.options.retrievalConfig.latLng?{latLng:this.options.retrievalConfig.latLng}:{}}});let m={};if(this.config.thinking?.includeThoughts&&(m.includeThoughts=!0),this.config.thinking?.thinkingTokenBudget&&(m.thinkingBudget=this.config.thinking.thinkingTokenBudget),this.config.thinking?.thinkingLevel&&Ut(n)&&(m.thinkingLevel=this.config.thinking.thinkingLevel),t?.thinkingTokenBudget){let x=this.getEffectiveMappings(n),A=x.thinkingTokenBudgetLevels;if(Ut(n)){let b=vl(n),R=x.thinkingLevelMapping;if(t.thinkingTokenBudget==="none")m.thinkingLevel=R?.minimal??"minimal";else{let O=t.thinkingTokenBudget,_=R?.[O];_||(_=O==="highest"?"high":O),m.thinkingLevel=_}if(b&&m.thinkingLevel){let O=m.thinkingLevel;O!=="low"&&O!=="high"&&(m.thinkingLevel=O==="minimal"?"low":"high")}}else switch(t.thinkingTokenBudget){case"none":m.thinkingBudget=0,m.includeThoughts=!1,delete m.thinkingLevel;break;case"minimal":m.thinkingBudget=A?.minimal??200;break;case"low":m.thinkingBudget=A?.low??800;break;case"medium":m.thinkingBudget=A?.medium??5e3;break;case"high":m.thinkingBudget=A?.high??1e4;break;case"highest":m.thinkingBudget=A?.highest??24500;break}}m.thinkingLevel&&delete m.thinkingBudget,Ut(n)||delete m.thinkingLevel,Ut(n)&&delete m.thinkingBudget;let g=e.modelConfig?.maxTokens??this.config.maxTokens;if(m.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"&&(m.includeThoughts=t.showThoughts);let h={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(m).length>0?{thinkingConfig:m}:{}};if(Ut(n)&&(h.temperature===void 0||h.temperature<1)&&(h.temperature=1),e.responseFormat){if(h.responseMimeType="application/json",e.responseFormat.type==="json_schema"&&e.responseFormat.schema){let x=e.responseFormat.schema.schema||e.responseFormat.schema;h.responseSchema=bo(x)}}else this.config.responseFormat&&this.config.responseFormat==="json_object"&&(h.responseMimeType="application/json");let f=this.config.safetySettings;return[o,{contents:l,tools:c,toolConfig:p,systemInstruction:a,generationConfig:h,safetySettings:f}]};createEmbedReq=async 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,r;if(this.isVertex)this.endpointId?n={name:`/${this.endpointId}:predict`}:n={name:`/models/${t}:predict`},r={instances:e.texts.map(o=>({content:o,...this.config.embedType&&{taskType:this.config.embedType}})),parameters:{autoTruncate:this.config.autoTruncate,outputDimensionality:this.config.dimensions}};else{let o=typeof this.apiKey=="function"?this.apiKey():this.apiKey;n={name:`/models/${t}:batchEmbedContents?key=${o}`},r={requests:e.texts.map(i=>({model:`models/${t}`,content:{parts:[{text:i}]},outputDimensionality:this.config.dimensions,...this.config.embedType&&{taskType:this.config.embedType}}))}}return[n,r]};createChatResp=e=>{let t,n=e.candidates?.map(o=>{let i={index:0};switch(o.finishReason){case"MAX_TOKENS":i.finishReason="length";break;case"STOP":i.finishReason="stop";break;case"SAFETY":throw new ke("Content was blocked due to safety settings",void 0,void 0);case"RECITATION":throw new ke("Content was blocked due to recitation policy",void 0,void 0);case"MALFORMED_FUNCTION_CALL":throw new ke("Function call was malformed and blocked",void 0,void 0);case"UNEXPECTED_TOOL_CALL":throw new ke("Unexpected tool call",void 0,void 0);case"FINISH_REASON_UNSPECIFIED":throw new ke("Finish reason unspecified",void 0,void 0);case"BLOCKLIST":throw new ke("Content was blocked due to blocklist",void 0,void 0);case"PROHIBITED_CONTENT":throw new ke("Content was blocked due to prohibited content",void 0,void 0);case"SPII":throw new ke("Content was blocked due to SPII",void 0,void 0);case"OTHER":throw new ke("Other finish reason",void 0,void 0)}if(!o.content||!o.content.parts)return i;for(let u of o.content.parts){if("text"in u){if("thought"in u&&u.thought||u.thought===!0){i.thought=u.text;let c=u.thoughtSignature||u.thought_signature;i.thoughtBlocks||(i.thoughtBlocks=[]),i.thoughtBlocks.push({data:u.text,encrypted:!1,...c?{signature:c}:{}})}else i.content=u.text;continue}if("functionCall"in u){let c=u.thoughtSignature||u.thought_signature;if(c)if(!i.thoughtBlocks||i.thoughtBlocks.length===0)i.thoughtBlocks=[{data:"",encrypted:!1,signature:c}];else{let p=i.thoughtBlocks[i.thoughtBlocks.length-1];p&&!p.signature&&(p.signature=c)}i.functionCalls=[...i.functionCalls??[],{id:je(),type:"function",function:{name:u.functionCall.name,params:u.functionCall.args}}]}}let a=o.citationMetadata?.citations;if(Array.isArray(a)&&a.length){let u=c=>c?`${c.year}-${String(c.month).padStart(2,"0")}-${String(c.day).padStart(2,"0")}`:void 0;i.citations=a.filter(c=>typeof c?.uri=="string").map(c=>({url:c.uri,title:c.title,license:c.license,publicationDate:u(c.publicationDate)}))}let l=o.groundingMetadata;if(l){if(Array.isArray(l.groundingChunks)){let u=l.groundingChunks.map(c=>c?.maps).filter(c=>c&&typeof c.uri=="string").map(c=>({url:c.uri,title:c.title}));u.length&&(i.citations=[...i.citations??[],...u])}typeof l.googleMapsWidgetContextToken=="string"&&(t=l.googleMapsWidgetContextToken)}return i});e.usageMetadata&&(this.tokensUsed={totalTokens:e.usageMetadata.totalTokenCount,promptTokens:e.usageMetadata.promptTokenCount,completionTokens:e.usageMetadata.candidatesTokenCount,thoughtsTokens:e.usageMetadata.thoughtsTokenCount,...e.usageMetadata.cachedContentTokenCount!==void 0?{cacheReadTokens:e.usageMetadata.cachedContentTokenCount}:{}});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 Rl.some(n=>t.includes(n)||n.includes(t))};buildCacheCreateOp=(e,t)=>{let n=e.model,r=t.contextCache?.ttlSeconds??3600,{systemInstruction:o,contents:i}=this.extractCacheableContent(e.chatPrompt);if(!o&&(!i||i.length===0))return;let a={model:this.isVertex?n:`models/${n}`,ttl:`${r}s`,displayName:`ax-cache-${Date.now()}`};o&&(a.systemInstruction=o),i&&i.length>0&&(a.contents=i);let l;if(this.isVertex)l="/cachedContents";else{l="/cachedContents";let u=typeof this.apiKey=="function"?"ASYNC_KEY":this.apiKey;l+=`?key=${u}`}return{type:"create",apiConfig:{name:l},request:a,parseResponse:u=>{let c=u;if(c?.name)return{name:c.name,expiresAt:c.expireTime,tokenCount:c.usageMetadata?.totalTokenCount}}}};buildCacheUpdateTTLOp=(e,t)=>{let n={ttl:`${t}s`},r=`/${e}`;if(!this.isVertex&&this.apiKey){let o=typeof this.apiKey=="function"?"ASYNC_KEY":this.apiKey;r+=`?key=${o}`}return{type:"update",apiConfig:{name:r,headers:{"Content-Type":"application/json"}},request:n,parseResponse:o=>{let i=o;if(i?.name)return{name:i.name,expiresAt:i.expireTime,tokenCount:i.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,o=e.modelConfig?.stream??this.config.stream,{dynamicContents:i,dynamicSystemInstruction:a}=this.extractDynamicContent(e.chatPrompt),l;if(this.endpointId?l={name:o?`/${this.endpointId}:streamGenerateContent?alt=sse`:`/${this.endpointId}:generateContent`}:l={name:o?`/models/${r}:streamGenerateContent?alt=sse`:`/models/${r}:generateContent`},!this.isVertex){let d=o?"&":"?",m=typeof this.apiKey=="function"?await this.apiKey():this.apiKey;l.name+=`${d}key=${m}`}let u={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"};Ut(r)&&(u.temperature===void 0||u.temperature<1)&&(u.temperature=1);let c=this.config.safetySettings,p={contents:i,cachedContent:n,generationConfig:u,safetySettings:c};return a&&(p.systemInstruction=a),{apiConfig:l,request:p}};extractCacheableContent(e){let t,n=[],r=-1;for(let o=e.length-1;o>=0;o--){let i=e[o];if("cache"in i&&i.cache){r=o;break}}for(let o=0;o<e.length;o++){let i=e[o];if(i.role==="system"){t={role:"user",parts:[{text:i.content}]};continue}if(r>=0&&o<=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 l of i.content)switch(l.type){case"text":a.push({text:l.text});break;case"image":a.push({inlineData:{mimeType:l.mimeType,data:l.image}});break;case"audio":a.push({inlineData:{mimeType:`audio/${l.format??"mp3"}`,data:l.data}});break;case"file":"fileUri"in l?a.push({fileData:{mimeType:l.mimeType,fileUri:l.fileUri}}):a.push({inlineData:{mimeType:l.mimeType,data:l.data}});break}a.length>0&&n.push({role:"user",parts:a})}else i.role==="assistant"&&i.content&&n.push({role:"model",parts:[{text:i.content}]})}return{systemInstruction:t,contents:n}}extractDynamicContent(e){let n=[];for(let r of e)if(r.role!=="system"&&!("cache"in r&&r.cache))if(r.role==="user"){let o=[];if(typeof r.content=="string")o.push({text:r.content});else if(Array.isArray(r.content)){for(let i of r.content)if(!("cache"in i&&i.cache))switch(i.type){case"text":o.push({text:i.text});break;case"image":o.push({inlineData:{mimeType:i.mimeType,data:i.image}});break;case"audio":o.push({inlineData:{mimeType:`audio/${i.format??"mp3"}`,data:i.data}});break;case"file":"fileUri"in i?o.push({fileData:{mimeType:i.mimeType,fileUri:i.fileUri}}):o.push({inlineData:{mimeType:i.mimeType,data:i.data}});break}}o.length>0&&n.push({role:"user",parts:o})}else if(r.role==="assistant"){let o=[];if(r.content&&o.push({text:r.content}),r.functionCalls)for(let i of r.functionCalls){let a;if(typeof i.function.params=="string")try{a=JSON.parse(i.function.params)}catch{a={}}else a=i.function.params??{};o.push({functionCall:{name:i.function.name,args:a}})}o.length>0&&n.push({role:"model",parts:o})}else r.role==="function"&&n.push({role:"user",parts:[{functionResponse:{name:r.functionId,response:{result:r.result}}}]});return{dynamicContents:n,dynamicSystemInstruction:void 0}}},un=class s extends Fe{static create(e){return new s(e)}constructor({apiKey:e,projectId:t,region:n,endpointId:r,config:o,options:i,models:a,modelInfo:l}){let u=t!==void 0&&n!==void 0,c,p;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 f;r?f="endpoints":f="publishers/google",c=`https://${n==="global"?"aiplatform":`${n}-aiplatform`}.googleapis.com/v1/projects/${t}/locations/${n}/${f}`,p=async()=>({Authorization:`Bearer ${typeof e=="function"?await e():e}`})}else{if(!e)throw new Error("GoogleGemini AI API key not set");c="https://generativelanguage.googleapis.com/v1beta",p=async()=>({})}let d={...ai(),...o},m=new ii(d,u,r,e,i);l=[...yo,...l??[]];let g=f=>{let y=rt({model:f,modelInfo:l,models:a});return{functions:!0,streaming:!0,hasThinkingBudget:y?.supported?.thinkingBudget??!1,hasShowThoughts:y?.supported?.showThoughts??!1,structuredOutputs:y?.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(f),types:["persistent"]},thinking:y?.supported?.thinkingBudget??!1,multiTurn:!0}},h=a?.map(f=>{let y=f,x=y?.config;if(!x)return f;let A={};x.maxTokens!==void 0&&(A.maxTokens=x.maxTokens),x.temperature!==void 0&&(A.temperature=x.temperature),x.topP!==void 0&&(A.topP=x.topP),x.topK!==void 0&&(A.topK=x.topK),x.presencePenalty!==void 0&&(A.presencePenalty=x.presencePenalty),x.frequencyPenalty!==void 0&&(A.frequencyPenalty=x.frequencyPenalty),x.stopSequences!==void 0&&(A.stopSequences=x.stopSequences),x.endSequences!==void 0&&(A.endSequences=x.endSequences),x.stream!==void 0&&(A.stream=x.stream),x.n!==void 0&&(A.n=x.n);let T={...y};Object.keys(A).length>0&&(T.modelConfig={...y.modelConfig??{},...A});let b=x.thinking?.thinkingTokenBudget;if(typeof b=="number"){let R=d.thinkingTokenBudgetLevels,O=[["minimal",R?.minimal??200],["low",R?.low??800],["medium",R?.medium??5e3],["high",R?.high??1e4],["highest",R?.highest??24500]],_="minimal",M=Number.POSITIVE_INFINITY;for(let[G,B]of O){let L=Math.abs(b-B);L<M&&(M=L,_=G)}T.thinkingTokenBudget=_}return x.thinking?.includeThoughts!==void 0&&(T.showThoughts=!!x.thinking.includeThoughts),x.thinkingLevelMapping&&(T.thinkingLevelMapping=x.thinkingLevelMapping),x.thinkingTokenBudgetLevels&&(T.thinkingTokenBudgetLevels=x.thinkingTokenBudgetLevels),T});h?m.setModels(h):a&&m.setModels(a),super(m,{name:"GoogleGeminiAI",apiURL:c,headers:p,modelInfo:l,defaults:{model:d.model,embedModel:d.embedModel},options:i,supportFor:g,models:h??a})}};var Tp=new Ye,cn=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(Tp.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 dr=(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))(dr||{});var Io=[{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 wp=()=>structuredClone({model:"llama-3.3-70b-versatile",...Ce()}),pn=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("Groq API key not set");let i={...wp(),...t},a={...n,streamingUsage:!1};o=[...Io,...o??[]];let l={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:o,apiURL:"https://api.groq.com/openai/v1",models:r,supportFor:l}),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 cn(t,t/60,{debug:e?.debug});return async(o,i)=>{let a=i.modelUsage?.tokens?.totalTokens||0;return await n.acquire(a),await o()}}};var Co=[];var To=(e=>(e.MetaLlama270BChatHF="meta-llama/Llama-2-70b-chat-hf",e))(To||{});var ui=()=>structuredClone({model:"meta-llama/Llama-2-70b-chat-hf",...Ce()}),Ol=()=>structuredClone({model:"meta-llama/Llama-2-70b-chat-hf",...De()}),li=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:
167
+ `;break}default:r=JSON.stringify(n,null,2)}s(r)}};var ge={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"},gt={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"},js=(r=>(r.COMPLETION="completion",r.CHAT="chat",r.RERANK="rerank",r.UNKNOWN="unknown",r))(js||{}),qs=(o=>(o.WORKFLOW="workflow",o.TASK="task",o.AGENT="agent",o.TOOL="tool",o.UNKNOWN="unknown",o))(qs||{});var zs=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()}},to=class extends TransformStream{constructor(e,t){super(new zs(e,t))}};function no(s,e){for(let t of e){let n=s.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)):s.push(t)}}var La=(s,e,t,n)=>{let r=n?s.filter(i=>i.role!=="system"):[...s];t({name:"ChatRequestChatPrompt",step:e,value:r})};var Da=(s,e)=>{if(!s.results)return;let t={name:"ChatResponseResults",value:s.results};e(t)};function Ga(s,e){let t=new Map;for(let n of s)for(let r of n.results){if(!r)continue;let o=t.get(r.index);o?(r.content&&(o.content=(o.content??"")+r.content),r.thought&&(o.thought=(o.thought??"")+r.thought),r.finishReason&&(o.finishReason=r.finishReason),r.functionCalls&&(o.functionCalls?no(o.functionCalls,structuredClone(r.functionCalls)):o.functionCalls=structuredClone(r.functionCalls))):(o=structuredClone(r),t.set(r.index,o))}for(let n of t.values()){let r={name:"ChatResponseStreamingDoneResult",index:n.index,value:n};e(r)}}var Ua=(s,e)=>{e({name:"FunctionResults",value:s})},Hs=(s,e,t,n)=>{n({name:"FunctionError",index:e,fixingInstructions:t,error:s})},Ba=(s,e,t,n)=>{n({name:"ValidationError",index:e,fixingInstructions:t,error:s})},ja=(s,e,t,n)=>{n({name:"AssertionError",index:e,fixingInstructions:t,error:s})},qa=(s,e,t)=>{t({name:"RefusalError",index:e,error:s})};var za=(s,e,t)=>{t({name:"EmbedRequest",embedModel:e,value:s})},Ha=(s,e)=>{let t=s.slice(0,3).map(r=>({length:r.length,sample:r.slice(0,5),truncated:r.length>5})),n={name:"EmbedResponse",totalEmbeddings:s.length,value:t};e(n)},Ka=(s,e,t,n)=>{n({name:"ResultPickerUsed",sampleCount:s,selectedIndex:e,latency:t})};var oo=s=>{let e={};for(let[t,n]of Object.entries(s))if(n!=null){let r=String(n);e[t]=r.length>100?r.substring(0,100):r}return e},Lt=(...s)=>{let e={};for(let t of s)t&&Object.assign(e,t);return e},ro,Wa=s=>{if(ro)return ro;if(s)return ro=up(s),ro};var up=s=>({latencyHistogram:s.createHistogram("ax_llm_request_duration_ms",{description:"Duration of LLM requests in milliseconds",unit:"ms"}),errorCounter:s.createCounter("ax_llm_errors_total",{description:"Total number of LLM request errors"}),requestCounter:s.createCounter("ax_llm_requests_total",{description:"Total number of LLM requests"}),tokenCounter:s.createCounter("ax_llm_tokens_total",{description:"Total number of LLM tokens consumed"}),inputTokenCounter:s.createCounter("ax_llm_input_tokens_total",{description:"Total number of input/prompt tokens consumed"}),outputTokenCounter:s.createCounter("ax_llm_output_tokens_total",{description:"Total number of output/completion tokens generated"}),errorRateGauge:s.createGauge("ax_llm_error_rate",{description:"Current error rate as a percentage (0-100)"}),meanLatencyGauge:s.createGauge("ax_llm_mean_latency_ms",{description:"Mean latency of LLM requests in milliseconds",unit:"ms"}),p95LatencyGauge:s.createGauge("ax_llm_p95_latency_ms",{description:"95th percentile latency of LLM requests in milliseconds",unit:"ms"}),p99LatencyGauge:s.createGauge("ax_llm_p99_latency_ms",{description:"99th percentile latency of LLM requests in milliseconds",unit:"ms"}),streamingRequestsCounter:s.createCounter("ax_llm_streaming_requests_total",{description:"Total number of streaming LLM requests"}),functionCallsCounter:s.createCounter("ax_llm_function_calls_total",{description:"Total number of function/tool calls made"}),functionCallLatencyHistogram:s.createHistogram("ax_llm_function_call_latency_ms",{description:"Latency of function calls in milliseconds",unit:"ms"}),requestSizeHistogram:s.createHistogram("ax_llm_request_size_bytes",{description:"Size of LLM request payloads in bytes",unit:"By"}),responseSizeHistogram:s.createHistogram("ax_llm_response_size_bytes",{description:"Size of LLM response payloads in bytes",unit:"By"}),temperatureGauge:s.createGauge("ax_llm_temperature_gauge",{description:"Temperature setting used for LLM requests"}),maxTokensGauge:s.createGauge("ax_llm_max_tokens_gauge",{description:"Maximum tokens setting used for LLM requests"}),estimatedCostCounter:s.createCounter("ax_llm_estimated_cost_total",{description:"Estimated cost of LLM requests in USD",unit:"$"}),promptLengthHistogram:s.createHistogram("ax_llm_prompt_length_chars",{description:"Length of prompts in characters"}),contextWindowUsageGauge:s.createGauge("ax_llm_context_window_usage_ratio",{description:"Context window utilization ratio (0-1)"}),timeoutsCounter:s.createCounter("ax_llm_timeouts_total",{description:"Total number of timed out LLM requests"}),abortsCounter:s.createCounter("ax_llm_aborts_total",{description:"Total number of aborted LLM requests"}),thinkingBudgetUsageCounter:s.createCounter("ax_llm_thinking_budget_usage_total",{description:"Total thinking budget tokens used"}),multimodalRequestsCounter:s.createCounter("ax_llm_multimodal_requests_total",{description:"Total number of multimodal requests (with images/audio)"}),cacheReadTokensCounter:s.createCounter("ax_llm_cache_read_tokens_total",{description:"Total number of tokens read from cache (prompt caching)"}),cacheWriteTokensCounter:s.createCounter("ax_llm_cache_write_tokens_total",{description:"Total number of tokens written to cache (prompt caching)"})}),Va=(s,e,t,n,r,o)=>{try{if(s.latencyHistogram){let i=oo({operation:e,ai_service:n,...r?{model:r}:{},...o});s.latencyHistogram.record(t,i)}}catch(i){console.warn("Failed to record latency metric:",i)}},Ja=(s,e,t,n,r,o,i,a)=>{let l={operation:e,ai_service:o,...i?{model:i}:{},...a};s.meanLatencyGauge&&s.meanLatencyGauge.record(t,l),s.p95LatencyGauge&&s.p95LatencyGauge.record(n,l),s.p99LatencyGauge&&s.p99LatencyGauge.record(r,l)},Ya=(s,e,t,n,r)=>{try{if(s.errorCounter){let o=oo({operation:e,ai_service:t,...n?{model:n}:{},...r});s.errorCounter.add(1,o)}}catch(o){console.warn("Failed to record error metric:",o)}},Qa=(s,e,t,n,r,o)=>{s.errorRateGauge&&s.errorRateGauge.record(t*100,{operation:e,ai_service:n,...r?{model:r}:{},...o})},Xa=(s,e,t,n,r)=>{s.requestCounter&&s.requestCounter.add(1,{operation:e,ai_service:t,...n?{model:n}:{},...r})},rr=(s,e,t,n,r,o)=>{try{let i=oo({ai_service:n,...r?{model:r}:{},...o});s.tokenCounter&&s.tokenCounter.add(t,{token_type:e,...i}),e==="input"&&s.inputTokenCounter&&s.inputTokenCounter.add(t,i),e==="output"&&s.outputTokenCounter&&s.outputTokenCounter.add(t,i)}catch(i){console.warn("Failed to record token metric:",i)}},Za=(s,e,t,n,r,o)=>{t&&s.streamingRequestsCounter&&s.streamingRequestsCounter.add(1,{operation:e,ai_service:n,...r?{model:r}:{},...o})},el=(s,e,t,n,r,o)=>{let i={function_name:e,...n?{ai_service:n}:{},...r?{model:r}:{},...o};s.functionCallsCounter&&s.functionCallsCounter.add(1,i),t&&s.functionCallLatencyHistogram&&s.functionCallLatencyHistogram.record(t,i)},Ks=(s,e,t,n,r,o)=>{s.requestSizeHistogram&&s.requestSizeHistogram.record(t,{operation:e,ai_service:n,...r?{model:r}:{},...o})},Ws=(s,e,t,n,r,o)=>{s.responseSizeHistogram&&s.responseSizeHistogram.record(t,{operation:e,ai_service:n,...r?{model:r}:{},...o})},tl=(s,e,t,n,r,o)=>{let i={...n?{ai_service:n}:{},...r?{model:r}:{},...o};e!==void 0&&s.temperatureGauge&&s.temperatureGauge.record(e,i),t!==void 0&&s.maxTokensGauge&&s.maxTokensGauge.record(t,i)},Vs=(s,e,t,n,r,o)=>{s.estimatedCostCounter&&s.estimatedCostCounter.add(t,{operation:e,ai_service:n,...r?{model:r}:{},...o})},nl=(s,e,t,n,r)=>{s.promptLengthHistogram&&s.promptLengthHistogram.record(e,{ai_service:t,...n?{model:n}:{},...r})},rl=(s,e,t,n,r)=>{s.contextWindowUsageGauge&&s.contextWindowUsageGauge.record(e,{ai_service:t,...n?{model:n}:{},...r})},ol=(s,e,t,n,r)=>{s.timeoutsCounter&&s.timeoutsCounter.add(1,{operation:e,ai_service:t,...n?{model:n}:{},...r})},sl=(s,e,t,n,r)=>{s.abortsCounter&&s.abortsCounter.add(1,{operation:e,ai_service:t,...n?{model:n}:{},...r})},il=(s,e,t,n,r)=>{s.thinkingBudgetUsageCounter&&s.thinkingBudgetUsageCounter.add(e,{ai_service:t,...n?{model:n}:{},...r})},al=(s,e,t,n,r,o)=>{(e||t)&&s.multimodalRequestsCounter&&s.multimodalRequestsCounter.add(1,{ai_service:n,has_images:e.toString(),has_audio:t.toString(),...r?{model:r}:{},...o})},Js=(s,e,t,n,r,o)=>{try{if(t<=0)return;let i=oo({ai_service:n,...r?{model:r}:{},...o});e==="read"&&s.cacheReadTokensCounter&&s.cacheReadTokensCounter.add(t,i),e==="write"&&s.cacheWriteTokensCounter&&s.cacheWriteTokensCounter.add(t,i)}catch(i){console.warn("Failed to record cache token metric:",i)}};function ll(s){try{return JSON.stringify(s,null,2)}catch{return String(s)}}function ht(s,e={}){let t=[s];throw e.fieldPath!==void 0&&t.push(`Field: ${e.fieldPath}`),e.value!==void 0&&t.push(`Value: ${ll(e.value)}`),e.note&&t.push(`Note: ${e.note}`),e.item!==void 0&&t.push(`Chat item: ${ll(e.item)}`),new Error(t.join(`
168
+ `))}function Zt(s){let e=n=>JSON.stringify(n,null,2);if(!s)throw new Error(`Chat request message item cannot be null or undefined, received: ${e(s)}`);let t=typeof s=="object"&&s!==null&&"role"in s&&typeof s.role=="string"?s.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 s=="object"&&s!==null&&"content"in s&&typeof s.content=="string"?s.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 s=="object"&&s!==null&&"content"in s?s.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 o=n[r];if(!o||typeof o!="object")throw new Error(`User message content item at index ${r} must be an object, received: ${e(o)}`);let i=typeof o=="object"&&o!==null&&"type"in o&&typeof o.type=="string"?o.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 o&&typeof o.text=="string"?o.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 o&&typeof o.image=="string"?o.image:void 0,l="mimeType"in o&&typeof o.mimeType=="string"?o.mimeType:void 0;if(!a||a.trim()==="")throw new Error(`User message image content at index ${r} cannot be empty, received: ${e(a)}`);if(!l||l.trim()==="")throw new Error(`User message image content at index ${r} must have a mimeType, received: ${e(l)}`);break}case"audio":{let a="data"in o&&typeof o.data=="string"?o.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 o&&typeof o.fileUri=="string",l="data"in o&&typeof o.data=="string";if(!a&&!l)throw new Error(`User message file content at index ${r} must have either 'data' or 'fileUri', received: ${e(o)}`);if(a&&l)throw new Error(`User message file content at index ${r} cannot have both 'data' and 'fileUri', received: ${e(o)}`);if(a){let c=o.fileUri;if(!c||c.trim()==="")throw new Error(`User message file content at index ${r} fileUri cannot be empty, received: ${e(c)}`)}if(l){let c=o.data;if(!c||c.trim()==="")throw new Error(`User message file content at index ${r} data cannot be empty, received: ${e(c)}`)}let u="mimeType"in o&&typeof o.mimeType=="string"?o.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 o&&typeof o.url=="string"?o.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 s=="object"&&s!==null&&"content"in s?s.content:void 0,r=typeof s=="object"&&s!==null&&"functionCalls"in s?s.functionCalls:void 0,o=typeof s=="object"&&s!==null&&"thoughtBlocks"in s?s.thoughtBlocks:void 0,i=typeof n=="string"&&n.trim()!=="",a=Array.isArray(r)&&r.length>0,l=Array.isArray(o)&&o.length>0;if(!i&&!a&&!l&&ht("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:o},item:s}),n!==void 0&&typeof n!="string"&&ht("Assistant message content must be a string",{fieldPath:"content",value:n,item:s}),r!==void 0&&!Array.isArray(r)&&ht("Assistant message functionCalls must be an array when provided",{fieldPath:"functionCalls",value:r,item:s}),Array.isArray(r))for(let u=0;u<r.length;u++){let c=r[u];if((!c||typeof c!="object")&&ht("functionCalls entry must be an object",{fieldPath:`functionCalls[${u}]`,value:c,item:s}),(!("id"in c)||typeof c.id!="string"||c.id.trim()==="")&&ht("functionCalls entry must include a non-empty string id",{fieldPath:`functionCalls[${u}].id`,value:c.id,item:s}),(!("type"in c)||c.type!=="function")&&ht("functionCalls entry must have type 'function'",{fieldPath:`functionCalls[${u}].type`,value:c.type,item:s}),!("function"in c)||!c.function)ht("functionCalls entry must include a function object",{fieldPath:`functionCalls[${u}].function`,value:c.function,item:s});else{let p=c.function;(!("name"in p)||typeof p.name!="string"||p.name.trim()==="")&&ht("functionCalls entry must include a non-empty function name",{fieldPath:`functionCalls[${u}].function.name`,value:p?.name,item:s}),p.params!==void 0&&typeof p.params!="string"&&typeof p.params!="object"&&ht("functionCalls entry params must be a string or object when provided",{fieldPath:`functionCalls[${u}].function.params`,value:p.params,item:s})}}if(s.name!==void 0){let u=s.name;(typeof u!="string"||u.trim()==="")&&ht("Assistant message name must be a non-empty string when provided",{fieldPath:"name",value:u,item:s})}break}case"function":{let n=typeof s=="object"&&s!==null&&"functionId"in s&&typeof s.functionId=="string"?s.functionId:void 0,r=typeof s=="object"&&s!==null&&"result"in s?s.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)}`);s.isError!==void 0&&typeof s.isError!="boolean"&&ht("Function message isError must be a boolean when provided",{fieldPath:"isError",value:s.isError,item:s});break}default:throw new Error(`Unsupported message role: ${e(t)}`)}}function so(s){let e=n=>JSON.stringify(n,null,2),t=Array.isArray(s)?s:[s];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 o=0;o<r.thoughtBlocks.length;o++){let i=r.thoughtBlocks[o];if(typeof i!="object"||i===null)throw new Error(`Chat response result thoughtBlocks[${o}] at index ${n} must be an object, received: ${e(i)}`);if(typeof i.data!="string")throw new Error(`Chat response result thoughtBlocks[${o}].data at index ${n} must be a string, received: ${e(i.data)}`);if(typeof i.encrypted!="boolean")throw new Error(`Chat response result thoughtBlocks[${o}].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[${o}].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 o=0;o<r.annotations.length;o++){let i=r.annotations[o];if(!i||typeof i!="object")throw new Error(`Chat response result annotation at index ${n}[${o}] must be an object, received: ${e(i)}`);if(i.type!=="url_citation")throw new Error(`Chat response result annotation at index ${n}[${o}] 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}[${o}] 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}[${o}] 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 o=0;o<r.functionCalls.length;o++){let i=r.functionCalls[o];if(!i)throw new Error(`Function call at index ${o} 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 ${o} 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 ${o} in result ${n} must have type 'function', received: ${e(i.type)}`);if(!i.function)throw new Error(`Function call at index ${o} 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 ${o} 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 ${o} in result ${n} must be a string or object, received: ${e(i.function.params)}`)}}if(r.finishReason!==void 0){let o=["stop","length","function_call","content_filter","error"];if(!o.includes(r.finishReason))throw new Error(`Chat response result finishReason at index ${n} must be one of: ${o.join(", ")}, received: ${e(r.finishReason)}`)}}}var Ys=new Map;function cp(s){return`${s.providerName}:${s.contentHash}`}function pp(s,e){e.type==="text"?s.update(`text:${e.text}`):e.type==="image"?s.update(`image:${e.mimeType}:${e.image.slice(0,100)}`):e.type==="audio"?s.update(`audio:${e.format}:${e.data.slice(0,100)}`):e.type==="file"&&("fileUri"in e?s.update(`file:${e.mimeType}:${e.fileUri}`):s.update(`file:${e.mimeType}:${e.data.slice(0,100)}`))}function dp(s){let e=et("sha256"),t=-1;for(let n=s.length-1;n>=0;n--){let r=s[n];if("cache"in r&&r.cache){t=n;break}}for(let n=0;n<s.length;n++){let r=s[n];if(r.role==="system"){e.update(`system:${r.content}`);continue}if(t>=0&&n<=t)if(r.role==="user"){if(typeof r.content=="string")e.update(`user:${r.content}`);else if(Array.isArray(r.content))for(let o of r.content)pp(e,o)}else r.role==="assistant"&&r.content&&e.update(`assistant:${r.content}`)}return e.digest("hex")}var Ce=()=>structuredClone({temperature:0}),De=()=>structuredClone({temperature:.4,frequencyPenalty:.2}),Fe=class{constructor(e,{name:t,apiURL:n,headers:r,modelInfo:o,defaults:i,options:a={},supportFor:l,models:u}){this.aiImpl=e;this.name=t,this.apiURL=n||"",this.headers=r,this.supportFor=l,this.tracer=a.tracer??pe.tracer,this.meter=a.meter??pe.meter,this.modelInfo=o,this.models=u,this.id=je();let c=this.getModel(i.model)??i.model,p=this.getEmbedModel(i.embedModel)??i.embedModel;if(this.defaults={model:c,embedModel:p},!i.model||typeof i.model!="string"||i.model==="")throw new Error("No model defined");this.setOptions(a),u&&mp(u)}#e=!1;#t=!1;rt;fetch;tracer;meter;timeout;excludeContentFromTrace;models;abortSignal;logger=pe.logger??$a;corsProxy;retry;customLabels;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 Wa(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??pe.debug??!1,this.#t=e.verbose??!1,this.rt=e.rateLimiter,this.fetch=e.fetch,this.timeout=e.timeout,this.tracer=e.tracer??pe.tracer,this.meter=e.meter??pe.meter,this.excludeContentFromTrace=e.excludeContentFromTrace,this.abortSignal=e.abortSignal,this.logger=e.logger??pe.logger??this.logger,this.corsProxy=e.corsProxy,this.retry=e.retry,this.customLabels=e.customLabels}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}}getLogger(){return this.logger}getMergedCustomLabels(e){return Lt(pe.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((o,i)=>o-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 o=this.getMetricsInstruments();if(o){let i=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel,a=this.getMergedCustomLabels(n);Va(o,e,t,this.name,i,a),Ja(o,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 o=this.getMetricsInstruments();if(o){let i=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel,a=this.getMergedCustomLabels(n);Xa(o,e,this.name,i,a),t&&Ya(o,e,this.name,i,a),Qa(o,e,r.rate,this.name,i,a)}}recordTokenUsage(e,t){let n=this.getMetricsInstruments();if(n&&e?.tokens){let{promptTokens:r,completionTokens:o,totalTokens:i,thoughtsTokens:a,cacheReadTokens:l,cacheCreationTokens:u}=e.tokens,c=this.getMergedCustomLabels(t);r&&rr(n,"input",r,this.name,e.model,c),o&&rr(n,"output",o,this.name,e.model,c),i&&rr(n,"total",i,this.name,e.model,c),a&&rr(n,"thoughts",a,this.name,e.model,c),l&&Js(n,"read",l,this.name,e.model,c),u&&Js(n,"write",u,this.name,e.model,c)}}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 o of r.content)o.type==="image"?t=!0:o.type==="audio"&&(n=!0)}return{hasImages:t,hasAudio:n}}calculatePromptLength(e){let t=0;if(e.chatPrompt&&Array.isArray(e.chatPrompt))for(let n of e.chatPrompt)if(n.role==="system"||n.role==="assistant")n.content&&(t+=n.content.length);else if(n.role==="user"){if(typeof n.content=="string")t+=n.content.length;else if(Array.isArray(n.content))for(let r of n.content)r.type==="text"&&(t+=r.text.length)}else n.role==="function"&&n.result&&(t+=n.result.length);return t}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}estimateCost(e,t){if(!t?.tokens)return 0;let n=this.modelInfo.find(l=>l.name===e);if(!n||!n.promptTokenCostPer1M&&!n.completionTokenCostPer1M)return 0;let{promptTokens:r=0,completionTokens:o=0}=t.tokens,i=n.promptTokenCostPer1M||0,a=n.completionTokenCostPer1M||0;return r*i/1e6+o*a/1e6}estimateCostByName(e,t){if(!t?.tokens)return 0;let n=this.modelInfo.find(l=>l.name===e);if(!n||!n.promptTokenCostPer1M&&!n.completionTokenCostPer1M)return 0;let{promptTokens:r=0,completionTokens:o=0}=t.tokens,i=n.promptTokenCostPer1M||0,a=n.completionTokenCostPer1M||0;return r*i/1e6+o*a/1e6}recordFunctionCallMetrics(e,t,n){let r=this.getMetricsInstruments();if(!(!r||!e))for(let o of e)o&&typeof o=="object"&&"function"in o&&o.function&&typeof o.function=="object"&&"name"in o.function&&el(r,o.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;ol(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;sl(n,e,this.name,r,this.getMergedCustomLabels(t))}}recordChatMetrics(e,t,n){let r=this.getMetricsInstruments();if(!r)return;let o=this.lastUsedChatModel,i=this.lastUsedModelConfig,a=this.getMergedCustomLabels(t?.customLabels),l=i?.stream??!1;Za(r,"chat",l,this.name,o,a);let{hasImages:u,hasAudio:c}=this.detectMultimodalContent(e);al(r,u,c,this.name,o,a);let p=this.calculatePromptLength(e);nl(r,p,this.name,o,a),tl(r,i?.temperature,i?.maxTokens,this.name,o,a),t?.thinkingTokenBudget&&this.modelUsage?.tokens?.thoughtsTokens&&il(r,this.modelUsage.tokens.thoughtsTokens,this.name,o,a);let d=this.calculateRequestSize(e);if(Ks(r,"chat",d,this.name,o,a),n&&!l){let m=n,g=this.calculateResponseSize(m);if(Ws(r,"chat",g,this.name,o,a),m.results)for(let y of m.results)y.functionCalls&&this.recordFunctionCallMetrics(y.functionCalls,this.lastUsedChatModel,a);let h=this.calculateContextWindowUsage(this.lastUsedChatModel,m.modelUsage);h>0&&rl(r,h,this.name,o,a);let f=this.estimateCost(this.lastUsedChatModel,m.modelUsage);f>0&&Vs(r,"chat",f,this.name,o,a)}}recordEmbedMetrics(e,t,n){let r=this.getMetricsInstruments();if(!r)return;let o=this.lastUsedEmbedModel,i=this.getMergedCustomLabels(n?.customLabels),a=this.calculateRequestSize(e);Ks(r,"embed",a,this.name,o,i);let l=this.calculateResponseSize(t);Ws(r,"embed",l,this.name,o,i);let u=this.estimateCostByName(o,t.modelUsage);u>0&&Vs(r,"embed",u,this.name,o,i)}getMetrics(){return structuredClone(this.metrics)}async chat(e,t){let n=performance.now(),r=!1,o,i=this.getModelByKey(e.model),a=i?i.thinkingTokenBudget:void 0,l={...i?{thinkingTokenBudget:a,showThoughts:i.showThoughts,stream:i.stream,debug:i.debug,useExpensiveModel:i.useExpensiveModel}:void 0,...Object.fromEntries(Object.entries(t??{}).filter(([,u])=>u!==void 0))};try{return o=await this._chat1(e,l),o}catch(u){throw r=!0,u instanceof Error&&(u.message.includes("timeout")||u.name==="TimeoutError"?this.recordTimeoutMetric("chat",l?.customLabels):(u.message.includes("abort")||u.name==="AbortError")&&this.recordAbortMetric("chat",l?.customLabels)),u}finally{let u=performance.now()-n;this.updateLatencyMetrics("chat",u,l?.customLabels),this.updateErrorMetrics("chat",r,l?.customLabels),r||this.recordChatMetrics(e,l,o)}}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)Zt(u);let r=this.getModelByKey(e.model),o={...this.aiImpl.getModelConfig(),...r?r.modelConfig:void 0,...e.modelConfig},i=this.modelInfo.find(u=>u.name===n);if(i?.notSupported?.temperature&&"temperature"in o&&delete o.temperature,i?.notSupported?.topP&&"topP"in o&&delete o.topP,t?.thinkingTokenBudget&&!this.getFeatures(n).hasThinkingBudget)throw new Error(`Model ${n} does not support thinkingTokenBudget.`);if(t?.showThoughts&&!this.getFeatures(n).hasShowThoughts)throw new Error(`Model ${n} does not support showThoughts.`);if(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 o.stream=(t?.stream!==void 0?t.stream:o.stream)??!0,this.getFeatures(n).streaming||(o.stream=!1),this.tracer?await this.tracer.startActiveSpan("AI Chat Request",{kind:Qe.SERVER,attributes:{[ge.LLM_SYSTEM]:this.name,[ge.LLM_OPERATION_NAME]:"chat",[ge.LLM_REQUEST_MODEL]:n,[ge.LLM_REQUEST_MAX_TOKENS]:o.maxTokens??"Not set",[ge.LLM_REQUEST_TEMPERATURE]:o.temperature,[ge.LLM_REQUEST_TOP_P]:o.topP??"Not set",[ge.LLM_REQUEST_TOP_K]:o.topK??"Not set",[ge.LLM_REQUEST_FREQUENCY_PENALTY]:o.frequencyPenalty??"Not set",[ge.LLM_REQUEST_PRESENCE_PENALTY]:o.presencePenalty??"Not set",[ge.LLM_REQUEST_STOP_SEQUENCES]:o.stopSequences?.join(", ")??"Not set",[ge.LLM_REQUEST_LLM_IS_STREAMING]:o.stream??"Not set"}},t?.traceContext??Et.active(),async u=>await this._chat2(n,o,e,t,u)):await this._chat2(n,o,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,o){if(!this.aiImpl.createChatReq)throw new Error("createChatReq not implemented");let i=r?.debug??this.#e,a=r?.verbose??this.#t,l;n.functions&&n.functions.length>0&&(l=n.functions.map(A=>this.cleanupFunctionSchema(A)));let u={...n,model:e,functions:l,modelConfig:t};this.lastUsedChatModel=e,this.lastUsedModelConfig=t,i&&La(u.chatPrompt,r?.stepIndex??0,r?.logger??this.logger,r?.debugHideSystemPrompt);let c=this.getFeatures(e).functions,p=r?.functionCallMode??"auto",m=p==="prompt"||p==="auto"&&!c?{...u,chatPrompt:u.chatPrompt.map(A=>{if(A.role==="assistant"){let{content:T,name:b,cache:R}=A;return{role:"assistant",content:T,name:b,cache:R}}return A.role==="function"?{role:"user",content:A.result}:A}),functions:[]}:u,g=await this.handleContextCaching(e,m,r,o),h=async()=>{if(g?.preparedRequest){let{apiConfig:R,request:O}=g.preparedRequest;return o?.isRecording()&&ul(n,o,this.excludeContentFromTrace),await ze({name:R.name,url:this.apiURL,localCall:R.localCall,headers:await this.buildHeaders(R.headers),stream:t.stream,timeout:this.timeout,verbose:a,fetch:this.fetch,span:o,abortSignal:r?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:r?.retry??this.retry},O)}let[A,T]=await this.aiImpl.createChatReq(m,r);return o?.isRecording()&&ul(n,o,this.excludeContentFromTrace),await ze({name:A.name,url:this.apiURL,localCall:A.localCall,headers:await this.buildHeaders(A.headers),stream:t.stream,timeout:this.timeout,verbose:a,fetch:this.fetch,span:o,abortSignal:r?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:r?.retry??this.retry},T)},f=r?.rateLimiter??this.rt,y=f?await f(h,{modelUsage:this.modelUsage}):await h();if(t.stream){if(!this.aiImpl.createChatStreamResp)throw new Error("createChatStreamResp not implemented");let A=this.aiImpl.createChatStreamResp.bind(this),T=_=>M=>{let G=A(M,_);if(G.sessionId=r?.sessionId,!G.modelUsage){let B=this.aiImpl.getTokenUsage();B&&(G.modelUsage={ai:this.name,model:e,tokens:B})}return this.modelUsage=G.modelUsage,this.recordTokenUsage(G.modelUsage,r?.customLabels),o?.isRecording()&&cl(G,o,this.excludeContentFromTrace),G},b=async _=>{o?.isRecording()&&o.end(),i&&Ga(_,r?.logger??this.logger)};if(typeof window<"u"){let _=y,M={},G=[],B=r?.abortSignal??this.abortSignal;return new ReadableStream({start:L=>{let I=_.getReader(),v=()=>{try{I.cancel().catch(()=>{})}catch{}try{this.recordAbortMetric("chat",r?.customLabels)}catch{}try{o?.isRecording()&&o.end()}catch{}try{L.error(new DOMException("Aborted","AbortError"))}catch{L.error(new Error("Aborted"))}};if(B){if(B.aborted){v();return}B.addEventListener("abort",v,{once:!0})}async function E(){try{for(;;){let{done:$,value:S}=await I.read();if($){b&&await b(G),L.close();break}let P=T(M)(S);P&&(G.push(P),L.enqueue(P))}}catch($){if(L.error($),o?.isRecording())try{o.end()}catch{}}finally{if(I.releaseLock(),B)try{B.removeEventListener("abort",v)}catch{}}}E()}})}return y.pipeThrough(new to(T({}),b))}if(!this.aiImpl.createChatResp)throw new Error("createChatResp not implemented");let x=this.aiImpl.createChatResp(y);if(x.sessionId=r?.sessionId,!x.modelUsage){let A=this.aiImpl.getTokenUsage();A&&(x.modelUsage={ai:this.name,model:e,tokens:A})}return x.modelUsage&&(this.modelUsage=x.modelUsage,this.recordTokenUsage(x.modelUsage,r?.customLabels)),o?.isRecording()&&(cl(x,o,this.excludeContentFromTrace),o.end()),i&&Da(x,r?.logger??this.logger),x}async embed(e,t){let n=performance.now(),r=!1,o,i=this.getModelByKey(e.embedModel),a={...i?{thinkingTokenBudget:i.thinkingTokenBudget,showThoughts:i.showThoughts,stream:i.stream,debug:i.debug,useExpensiveModel:i.useExpensiveModel}:void 0,...t};try{return o=await this._embed1(e,a),o}catch(l){throw r=!0,l instanceof Error&&(l.message.includes("timeout")||l.name==="TimeoutError"?this.recordTimeoutMetric("embed",a?.customLabels):(l.message.includes("abort")||l.name==="AbortError")&&this.recordAbortMetric("embed",a?.customLabels)),l}finally{let l=performance.now()-n;this.updateLatencyMetrics("embed",l,a?.customLabels),this.updateErrorMetrics("embed",r,a?.customLabels),!r&&o&&this.recordEmbedMetrics(e,o,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:Qe.SERVER,attributes:{[ge.LLM_SYSTEM]:this.name,[ge.LLM_OPERATION_NAME]:"embeddings",[ge.LLM_REQUEST_MODEL]:n}},t?.traceContext??Et.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 o=this.aiImpl.createEmbedReq.bind(this.aiImpl),i=n?.debug??this.#e,a=n?.verbose??this.#t,l={...t,embedModel:e};this.lastUsedEmbedModel=e,i&&za(l.texts??[],e,n?.logger??this.logger);let u=async()=>{let[m,g]=await o(l);return await ze({name:m.name,url:this.apiURL,localCall:m.localCall,headers:await this.buildHeaders(m.headers),verbose:a,fetch:this.fetch,timeout:this.timeout,span:r,abortSignal:n?.abortSignal??this.abortSignal,corsProxy:this.corsProxy,retry:n?.retry??this.retry},g)},c=n?.rateLimiter??this.rt,p=c?await c(u,{modelUsage:this.embedModelUsage}):await u(),d=this.aiImpl.createEmbedResp?.(p);if(d.sessionId=n?.sessionId,!d.modelUsage){let m=this.aiImpl.getTokenUsage();m&&(d.modelUsage={ai:this.name,model:e,tokens:m})}return this.embedModelUsage=d.modelUsage,this.recordTokenUsage(d.modelUsage,n?.customLabels),r?.isRecording()&&d.modelUsage?.tokens&&r.addEvent(gt.GEN_AI_USAGE,{[ge.LLM_USAGE_INPUT_TOKENS]:d.modelUsage.tokens.promptTokens,[ge.LLM_USAGE_OUTPUT_TOKENS]:d.modelUsage.tokens.completionTokens??0,[ge.LLM_USAGE_TOTAL_TOKENS]:d.modelUsage.tokens.totalTokens}),i&&Ha(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 o=n?.contextCache;if(!o)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 l=o.ttlSeconds??3600,u=o.refreshWindowSeconds??300,c=o.minTokens??2048;if(o.name)return this.useCacheByName(e,t,o.name,n,r);let p=dp(t.chatPrompt);if(!p||p===et("sha256").digest("hex"))return null;let d={providerName:this.getName(),contentHash:p},m=cp(d),g=Date.now(),h=o.registry,f=h?await h.get(m):Ys.get(m);if(f&&f.expiresAt>g){if(f.expiresAt-g<u*1e3&&this.aiImpl.buildCacheUpdateTTLOp){await this.executeCacheOperation(this.aiImpl.buildCacheUpdateTTLOp(f.cacheName,l),n,r);let T={cacheName:f.cacheName,expiresAt:g+l*1e3,tokenCount:f.tokenCount};h?await h.set(m,T):Ys.set(m,{...T,contentHash:p,lastTouchedAt:g})}return this.useCacheByName(e,t,f.cacheName,n,r)}if(this.estimateCacheableTokens(t.chatPrompt)<c)return null;let x=this.aiImpl.buildCacheCreateOp?.(t,n);if(x){let A=await this.executeCacheOperation(x,n,r);if(A){let T={cacheName:A.name,expiresAt:new Date(A.expiresAt).getTime(),tokenCount:A.tokenCount};return h?await h.set(m,T):Ys.set(m,{...T,contentHash:p,lastTouchedAt:g}),this.useCacheByName(e,t,A.name,n,r)}}return null}async useCacheByName(e,t,n,r,o){if(this.aiImpl.prepareCachedChatReq){let i=await this.aiImpl.prepareCachedChatReq(t,r??{},n);return{preparedRequest:{apiConfig:i.apiConfig,request:i.request}}}return null}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 o=await ze({name:e.apiConfig.name,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(o)}catch(o){n?.addEvent("context_cache.error",{type:e.type,error:o instanceof Error?o.message:String(o)});return}}estimateCacheableTokens(e){let t=0;for(let n of e){if(n.role==="system"){t+=n.content.length;continue}if("cache"in n&&n.cache)if(n.role==="user"){if(typeof n.content=="string")t+=n.content.length;else if(Array.isArray(n.content))for(let r of n.content)"cache"in r&&r.cache&&(r.type==="text"?t+=r.text.length:r.type==="image"?t+=1e3:r.type==="audio"?t+=2e3:r.type==="file"&&(t+=500))}else n.role==="assistant"&&n.content&&(t+=n.content.length)}return Math.ceil(t/4)}};function ul(s,e,t){let n=[];if(s.chatPrompt&&Array.isArray(s.chatPrompt)&&s.chatPrompt.length>0)for(let o of s.chatPrompt)switch(o.role){case"system":if(o.content){let i={};t||(i.content=o.content),e.addEvent(gt.GEN_AI_SYSTEM_MESSAGE,i)}break;case"user":if(typeof o.content=="string")n.push(o.content);else if(Array.isArray(o.content))for(let i of o.content)i.type==="text"&&n.push(i.text);break;case"assistant":{let i=o.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&&o.content&&(a.content=o.content),e.addEvent(gt.GEN_AI_ASSISTANT_MESSAGE,a)}else if(o.content){let a={};t||(a.content=o.content),e.addEvent(gt.GEN_AI_ASSISTANT_MESSAGE,a)}break}case"function":{let i={id:o.functionId};t||(i.content=o.result),e.addEvent(gt.GEN_AI_TOOL_MESSAGE,i);break}}let r={};t||(r.content=n.join(`
169
+ `)),e.addEvent(gt.GEN_AI_USER_MESSAGE,r)}function cl(s,e,t){if(s.modelUsage?.tokens){let n=s.modelUsage.tokens.thoughtsTokens?{[ge.LLM_USAGE_THOUGHTS_TOKENS]:s.modelUsage.tokens.thoughtsTokens}:{};e.addEvent(gt.GEN_AI_USAGE,{[ge.LLM_USAGE_INPUT_TOKENS]:s.modelUsage.tokens.promptTokens,[ge.LLM_USAGE_OUTPUT_TOKENS]:s.modelUsage.tokens.completionTokens??0,[ge.LLM_USAGE_TOTAL_TOKENS]:s.modelUsage.tokens.totalTokens,...n})}if(s.results)for(let n=0;n<s.results.length;n++){let r=s.results[n];if(!r||!r.content&&!r.thought&&!r.functionCalls?.length&&!r.finishReason)continue;let o=r.functionCalls?.map(a=>({id:a.id,type:a.type,function:a.function.name,arguments:a.function.params})),i={};o&&o.length>0?(t||(i.content=r.content),i.tool_calls=o):t||(i.content=r.content??""),e.addEvent(gt.GEN_AI_CHOICE,{finish_reason:r.finishReason,index:n,message:JSON.stringify(i,null,2)})}}function pl(s){let e=0;for(let t of s){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 mp(s){let e=new Set;for(let t of s){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 or=(f=>(f.Claude46Opus="claude-opus-4-6",f.Claude46Sonnet="claude-sonnet-4-6",f.Claude45Opus="claude-opus-4-5-20251101",f.Claude41Opus="claude-opus-4-1-20250805",f.Claude4Opus="claude-opus-4-20250514",f.Claude4Sonnet="claude-sonnet-4-20250514",f.Claude45Sonnet="claude-sonnet-4-5-20250929",f.Claude45Haiku="claude-haiku-4-5",f.Claude37Sonnet="claude-3-7-sonnet-latest",f.Claude35Sonnet="claude-3-5-sonnet-latest",f.Claude35Haiku="claude-3-5-haiku-latest",f.Claude3Opus="claude-3-opus-latest",f.Claude3Sonnet="claude-3-sonnet-20240229",f.Claude3Haiku="claude-3-haiku-20240307",f.Claude21="claude-2.1",f.ClaudeInstant12="claude-instant-1.2",f))(or||{}),sr=(g=>(g.Claude46Opus="claude-opus-4-6",g.Claude46Sonnet="claude-sonnet-4-6",g.Claude45Opus="claude-opus-4-5@20251101",g.Claude41Opus="claude-opus-4-1@20250805",g.Claude4Opus="claude-opus-4@20250514",g.Claude45Sonnet="claude-sonnet-4-5@20250929",g.Claude4Sonnet="claude-sonnet-4@20250514",g.Claude37Sonnet="claude-3-7-sonnet@20250219",g.Claude35SonnetV2="claude-3-5-sonnet-v2@20241022",g.Claude45Haiku="claude-haiku-4-5@20251001",g.Claude35Haiku="claude-3-5-haiku@20241022",g.Claude35Sonnet="claude-3-5-sonnet@20240620",g.Claude3Opus="claude-3-opus@20240229",g.Claude3Haiku="claude-3-haiku@20240307",g))(sr||{});var ir=[{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,maxTokens:128e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,maxTokens:128e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5-20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5@20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5-20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5@20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-haiku-4-5",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-haiku-4-5@20251001",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-opus-4-1-20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-1@20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4@20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4@20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet@20250219",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet@20240620",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet-v2@20241022",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:8192,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-haiku-latest",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:4,maxTokens:8192},{name:"claude-3-5-haiku@20241022",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,maxTokens:8192},{name:"claude-3-opus-latest",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-opus@20240229",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-sonnet-20240229",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-haiku-20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,maxTokens:4096},{name:"claude-3-haiku@20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,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 Pt=s=>{if(!s||typeof s!="object")return s;let e={...s};if(e.type==="object"||Array.isArray(e.type)&&e.type.includes("object")){if(!e.properties||Object.keys(e.properties).length===0)throw new Error("Anthropic models do not support arbitrary JSON objects (e.g. f.json() or f.object() with no properties) in structured outputs. Please use f.string() and instruct the model to return a JSON string, or define the expected structure with f.object({ ... })");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,Pt(r)]))),e.items&&(e.items=Pt(e.items)),Array.isArray(e.anyOf)&&(e.anyOf=e.anyOf.map(n=>Pt(n))),Array.isArray(e.allOf)&&(e.allOf=e.allOf.map(n=>Pt(n))),Array.isArray(e.oneOf)&&(e.oneOf=e.oneOf.map(n=>Pt(n))),e},Xs=()=>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"},...Ce()}),ml=()=>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"},...Ce()}),Qs=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,o;this.isVertex?o={name:r?`/models/${n}:streamRawPredict?alt=sse`:`/models/${n}:rawPredict`}:o={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(E=>"cache"in E&&E.cache)||e.functions?.some(E=>E.cache),l=e.chatPrompt.filter(E=>E.role==="system"),u=l.map((E,$)=>({type:"text",text:E.content,...E.cache||a&&$===l.length-1?{cache_control:{type:"ephemeral"}}:{}})),c=e.chatPrompt.filter(E=>E.role!=="system"),p=e.functions?.map((E,$,S)=>{let P={type:"object",properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]},j=E.parameters?Pt(E.parameters):void 0;return j===void 0||j&&typeof j=="object"&&Object.keys(j).length===0?j={...P}:j&&typeof j=="object"&&j.type==="object"&&(!("properties"in j)||!j.properties||Object.keys(j.properties).length===0)&&(j={...j,properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]}),{name:E.name,description:E.description,input_schema:j,...E.cache||a&&$===S.length-1?{cache_control:{type:"ephemeral"}}:{}}}),m=(this.config.tools??[]).map(E=>E&&typeof E=="object"&&"type"in E?E:{name:E.name,description:E.description,input_schema:E.input_schema?Pt(E.input_schema):void 0,...E.cache_control?{cache_control:E.cache_control}:{}}),g=[...p??[],...m];g.length===0&&(g=void 0);let h=e.modelConfig?.maxTokens??this.config.maxTokens,f=e.modelConfig?.stopSequences??this.config.stopSequences,y=e.modelConfig?.temperature,x=e.modelConfig?.topP,A=e.modelConfig?.topK??this.config.topK,T=e.modelConfig?.n??this.config.n;if(T&&T>1)throw new Error("Anthropic does not support sampling (n > 1)");let b=E=>E.includes("claude-opus-4-6"),R=E=>E.includes("claude-opus-4-5"),O,_,M=n;if(t?.thinkingTokenBudget){let E=this.config.thinkingTokenBudgetLevels,$=this.config.effortLevelMapping;if(t.thinkingTokenBudget==="none")O=void 0,_=void 0;else{let S=t.thinkingTokenBudget;if(b(M))O={type:"adaptive"},_={effort:$?.[S]??"medium"};else if(R(M)){O={type:"enabled",budget_tokens:E?.[S]??1e4};let j=$?.[S]??"medium";j==="max"&&(j="high"),_={effort:j}}else O={type:"enabled",budget_tokens:E?.[S]??1e4}}}let B=gp(c,!!O);B.some(E=>E.role==="assistant"&&Array.isArray(E.content)&&E.content.length>0&&E.content[0]?.type==="tool_use")&&(O=void 0,_=void 0);let I;if(this.usedStructuredOutput=!1,e.responseFormat&&e.responseFormat.type==="json_schema"&&e.responseFormat.schema){let E=e.responseFormat.schema.schema||e.responseFormat.schema;I={type:"json_schema",schema:Pt(E)},this.usedStructuredOutput=!0}let v={...this.isVertex?{anthropic_version:"vertex-2023-10-16"}:{model:n},...h?{max_tokens:h}:{},...f&&f.length>0?{stop_sequences:f}:{},...y!==void 0&&!O?{temperature:y}:{},...x!==void 0&&(!O||x>=.95)?{top_p:x}:{},...A&&!O?{top_k:A}:{},...i,...g?{tools:g}:{},...r?{stream:!0}:{},...u?{system:u}:{},...O?{thinking:O}:{},..._?{output_config:_}:{},...I?{output_format:I}:{},messages:B};return[o,v]};createChatResp=e=>{if(e.type==="error")throw new ke(e.error.message,void 0,void 0);let t=dl(e.stop_reason),n=this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1,r="",o=[],i=[],a=[];for(let c of e.content)switch(c.type){case"text":if(r+=c.text??"",Array.isArray(c.citations))for(let p of c.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=c.thinking??"",d=c.signature;i.push({data:p,encrypted:!1,...typeof d=="string"?{signature:d}:{}})}break;case"redacted_thinking":if(n){let p=c.data??"",d=c.signature;i.push({data:p,encrypted:!0,...typeof d=="string"?{signature:d}:{}})}break;case"tool_use":o.push({id:c.id,type:"function",function:{name:c.name,params:c.input}});break}let l={index:0,id:e.id,finishReason:t};r&&(l.content=r),i.length>0&&(l.thoughtBlocks=i,l.thought=i.map(c=>c.data).join("")),o.length>0&&(l.functionCalls=o),a.length>0&&(l.citations=a);let u=[l];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:o}=e;throw new ke(o.message,void 0,void 0)}let r=0;if(e.type==="message_start"){let{message:o}=e,i=[{index:r,content:"",id:o.id}];return this.tokensUsed={promptTokens:o.usage?.input_tokens??0,completionTokens:o.usage?.output_tokens??0,totalTokens:(o.usage?.input_tokens??0)+(o.usage?.output_tokens??0)+(o.usage?.cache_creation_input_tokens??0)+(o.usage?.cache_read_input_tokens??0),cacheCreationTokens:o.usage?.cache_creation_input_tokens,cacheReadTokens:o.usage?.cache_read_input_tokens},{results:i}}if(e.type==="content_block_start"){let{content_block:o}=e;if(o.type==="text"){let i=[];if(Array.isArray(o.citations))for(let a of o.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:o.text,...i.length?{citations:i}:{}}]}}if(o.type==="thinking")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:r,thought:o.thinking,thoughtBlocks:[{data:o.thinking,encrypted:!1}]}]}:{results:[{index:r,content:""}]};if(o.type==="tool_use"&&typeof o.id=="string"&&typeof e.index=="number"&&!n.indexIdMap[e.index]){n.indexIdMap[e.index]=o.id;let i=[{id:o.id,type:"function",function:{name:o.name,params:""}}];return{results:[{index:r,functionCalls:i}]}}if(o.type==="web_search_tool_result"||o.type==="server_tool_use")return{results:[{index:r,content:""}]}}if(e.type==="content_block_delta"){let{delta:o}=e;if(o.type==="citations_delta"){let i=o.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(o.type==="text_delta"){let i=[];if(Array.isArray(o.citations))for(let a of o.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:o.text,...i.length?{citations:i}:{}}]}}if(o.type==="thinking_delta")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:r,thought:o.thinking,thoughtBlocks:[{data:o.thinking,encrypted:!1}]}]}:{results:[{index:r,content:""}]};if(o.type==="signature_delta")return{results:[{index:r,thoughtBlocks:[{data:"",encrypted:!1,signature:o.signature}]}]};if(o.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:o.partial_json}}];return{results:[{index:r,functionCalls:a}]}}}if(e.type==="message_delta"){let{delta:o,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:dl(o.stop_reason)}]}}return{results:[{index:r,content:""}]}};supportsImplicitCaching=()=>!0},en=class s extends Fe{static create(e){return new s(e)}constructor({apiKey:e,projectId:t,region:n,config:r,options:o,models:i}){let a=t!==void 0&&n!==void 0,l,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");l=`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");l="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 c={...Xs(),...r},p=new Qs(c,a),d=g=>{let h=rt({model:g,modelInfo:ir,models:i});return{functions:!0,streaming:!0,hasThinkingBudget:h?.supported?.thinkingBudget??!1,hasShowThoughts:h?.supported?.showThoughts??!1,structuredOutputs:h?.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:h?.supported?.thinkingBudget??!1,multiTurn:!0}},m=i?.map(g=>{let h=g,f=h?.config;if(!f)return g;let y={};f.maxTokens!==void 0&&(y.maxTokens=f.maxTokens),f.temperature!==void 0&&(y.temperature=f.temperature),f.topP!==void 0&&(y.topP=f.topP),f.topK!==void 0&&(y.topK=f.topK),f.presencePenalty!==void 0&&(y.presencePenalty=f.presencePenalty),f.frequencyPenalty!==void 0&&(y.frequencyPenalty=f.frequencyPenalty),f.stopSequences!==void 0&&(y.stopSequences=f.stopSequences),f.endSequences!==void 0&&(y.endSequences=f.endSequences),f.stream!==void 0&&(y.stream=f.stream),f.n!==void 0&&(y.n=f.n);let x={...h};Object.keys(y).length>0&&(x.modelConfig={...h.modelConfig??{},...y});let A=f.thinking?.thinkingTokenBudget;if(typeof A=="number"){let T=c.thinkingTokenBudgetLevels,b=[["minimal",T?.minimal??1024],["low",T?.low??5e3],["medium",T?.medium??1e4],["high",T?.high??2e4],["highest",T?.highest??32e3]],R="minimal",O=Number.POSITIVE_INFINITY;for(let[_,M]of b){let G=Math.abs(A-M);G<O&&(O=G,R=_)}x.thinkingTokenBudget=R}return f.thinking?.includeThoughts!==void 0&&(x.showThoughts=!!f.thinking.includeThoughts),x});super(p,{name:"Anthropic",apiURL:l,headers:u,modelInfo:ir,defaults:{model:c.model},options:o,supportFor:d,models:m??i})}};function gp(s,e){let t=s.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 o="",i=[],a=r.thoughtBlocks;if(Array.isArray(a)&&a.length>0)for(let l of a)l.encrypted?i.push(l.signature?{type:"redacted_thinking",data:l.data,signature:l.signature}:{type:"redacted_thinking",data:l.data}):i.push(l.signature?{type:"thinking",thinking:l.data,signature:l.signature}:{type:"thinking",thinking:l.data});if(typeof r.content=="string"&&(i.length>0?o=[...i,{type:"text",text:r.content}]:o=r.content),typeof r.functionCalls<"u"&&(o=r.functionCalls.map(l=>{let u={};if(typeof l.function.params=="string"){let c=l.function.params;if(c.trim().length===0)u={};else try{u=JSON.parse(c)}catch{throw new Error(`Failed to parse function params JSON: ${c}`)}}else typeof l.function.params=="object"&&(u=l.function.params);return{type:"tool_use",id:l.id,name:l.function.name,input:u,...r.cache?{cache_control:{type:"ephemeral"}}:{}}}),Array.isArray(o)&&i.length>0&&(o=[...i,...o])),r.cache){if(typeof o=="string")o=[{type:"text",text:o,cache_control:{type:"ephemeral"}}];else if(Array.isArray(o)&&o.length>0){let l=o.length-1,u=o[l];u&&u.type==="text"&&(o[l]={...u,cache_control:{type:"ephemeral"}})}}return{role:"assistant",content:o}}default:throw new Error("Invalid role")}}),n=hp(t);return fp(n)}function hp(s){let e=[];for(let[t,n]of s.entries()){if(n.role!=="assistant"){e.push(n);continue}if(t>0&&s.at(t-1)?.role==="assistant"){let r=e.pop();e.push({...r||{},...n})}else e.push(n)}return e}function fp(s){return s.map(e=>e.role==="assistant"&&typeof e.content=="string"?{...e,content:e.content.replace(/\s+$/,"")}:e)}function dl(s){if(s)switch(s){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 ar=(P=>(P.GPT4="gpt-4",P.GPT41="gpt-4.1",P.GPT41Mini="gpt-4.1-mini",P.GPT41Nano="gpt-4.1-nano",P.GPT4O="gpt-4o",P.GPT4OMini="gpt-4o-mini",P.GPT4ChatGPT4O="chatgpt-4o-latest",P.GPT4Turbo="gpt-4-turbo",P.GPT35Turbo="gpt-3.5-turbo",P.GPT35TurboInstruct="gpt-3.5-turbo-instruct",P.GPT35TextDavinci002="text-davinci-002",P.GPT3TextBabbage002="text-babbage-002",P.GPT3TextAda001="text-ada-001",P.GPT5="gpt-5",P.GPT5Nano="gpt-5-nano",P.GPT5Mini="gpt-5-mini",P.GPT5Chat="gpt-5-chat",P.GPT5ChatLatest="gpt-5-chat-latest",P.GPT5Codex="gpt-5-codex",P.GPT5Pro="gpt-5-pro",P.GPT51="gpt-5.1",P.GPT51ChatLatest="gpt-5.1-chat-latest",P.GPT51Codex="gpt-5.1-codex",P.GPT51CodexMini="gpt-5.1-codex-mini",P.GPT51CodexMax="gpt-5.1-codex-max",P.GPT52="gpt-5.2",P.GPT52ChatLatest="gpt-5.2-chat-latest",P.GPT52Codex="gpt-5.2-codex",P.GPT52Pro="gpt-5.2-pro",P.O1="o1",P.O1Mini="o1-mini",P.O3="o3",P.O3Mini="o3-mini",P.O4Mini="o4-mini",P))(ar||{}),tn=(n=>(n.TextEmbeddingAda002="text-embedding-ada-002",n.TextEmbedding3Small="text-embedding-3-small",n.TextEmbedding3Large="text-embedding-3-large",n))(tn||{});var nn=(N=>(N.GPT4="gpt-4",N.GPT41="gpt-4.1",N.GPT41Mini="gpt-4.1-mini",N.GPT41Nano="gpt-4.1-nano",N.GPT4O="gpt-4o",N.GPT4OMini="gpt-4o-mini",N.GPT4ChatGPT4O="chatgpt-4o-latest",N.GPT4Turbo="gpt-4-turbo",N.GPT35Turbo="gpt-3.5-turbo",N.GPT35TurboInstruct="gpt-3.5-turbo-instruct",N.GPT35TextDavinci002="text-davinci-002",N.GPT3TextBabbage002="text-babbage-002",N.GPT3TextAda001="text-ada-001",N.GPT5="gpt-5",N.GPT5Nano="gpt-5-nano",N.GPT5Mini="gpt-5-mini",N.GPT5Chat="gpt-5-chat",N.GPT5ChatLatest="gpt-5-chat-latest",N.GPT5Codex="gpt-5-codex",N.GPT5Pro="gpt-5-pro",N.GPT51="gpt-5.1",N.GPT51ChatLatest="gpt-5.1-chat-latest",N.GPT51Codex="gpt-5.1-codex",N.GPT51CodexMini="gpt-5.1-codex-mini",N.GPT51CodexMax="gpt-5.1-codex-max",N.GPT52="gpt-5.2",N.GPT52ChatLatest="gpt-5.2-chat-latest",N.GPT52Codex="gpt-5.2-codex",N.GPT52Pro="gpt-5.2-pro",N.O1Pro="o1-pro",N.O1="o1",N.O1Mini="o1-mini",N.O3Pro="o3-pro",N.O3="o3",N.O3Mini="o3-mini",N.O4Mini="o4-mini",N))(nn||{});var rn=[{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:"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}],io=[{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:"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 xp=s=>{let e=["o1","o1-mini","o3","o3-mini","o4-mini","o1-pro","o3-pro"];return e.includes(s)||e.includes(s)},Dt=()=>structuredClone({model:"gpt-5-mini",embedModel:"text-embedding-3-small",...Ce()}),ao=()=>structuredClone({...Dt(),model:"gpt-5"}),lo=()=>structuredClone({model:"gpt-5-mini",embedModel:"text-embedding-3-small",...De()}),uo=()=>({...Dt(),model:"gpt-5-nano"}),Zs=class{constructor(e,t,n){this.config=e;this.streamingUsage=t;this.chatReqUpdater=n}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"},o=e.functions?.map(m=>({type:"function",function:{name:m.name,description:m.description,parameters:m.parameters}})),i=!e.functionCall&&e.functions&&e.functions.length>0?"auto":e.functionCall,a=Ap(e),l=e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,u=e.modelConfig?.stream??this.config.stream,c=this.config.store,p=xp(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}}:{},...o?{tools:o}:{},...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}:{},...l!==void 0?{frequency_penalty:l}:{}},...(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}}:{},...c?{store:c}:{},...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)),[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:o}=e;if(o)throw o;return this.tokensUsed=n?{promptTokens:n.prompt_tokens,completionTokens:n.completion_tokens,totalTokens:n.total_tokens}:void 0,{results:r.map(a=>{if(a.message.refusal)throw new ke(a.message.refusal,e.model,e.id);let l=gl(a.finish_reason),u=a.message.tool_calls?.map(({id:c,function:{arguments:p,name:d}})=>({id:c,type:"function",function:{name:d,params:p}}));return{index:a.index,id:`${a.index}`,content:a.message.content??void 0,thought:a.message.reasoning_content,citations:a.message.annotations?.filter(c=>c?.type==="url_citation"&&c.url_citation).map(c=>({url:c.url_citation?.url,title:c.url_citation?.title,description:c.url_citation?.description})),functionCalls:u,finishReason:l}}),remoteId:t}}createChatStreamResp(e,t){let{id:n,usage:r,choices:o}=e;this.tokensUsed=r?{promptTokens:r.prompt_tokens,completionTokens:r.completion_tokens,totalTokens:r.total_tokens}:void 0;let i=t;return i.indexIdMap||(i.indexIdMap={}),{results:o.map(({index:l,delta:{content:u,role:c,refusal:p,tool_calls:d,reasoning_content:m,annotations:g},finish_reason:h})=>{if(p)throw new ke(p,void 0,n);let f=gl(h),y=d?.map(({id:x,index:A,function:{name:T,arguments:b}})=>{typeof x=="string"&&typeof A=="number"&&!i.indexIdMap[A]&&(i.indexIdMap[A]=x);let R=i.indexIdMap[A];return R?{id:R,type:"function",function:{name:T,params:b}}:null}).filter(x=>x!==null);return{index:l,content:u??void 0,role:c,thought:m,citations:g?.filter(x=>x?.type==="url_citation"&&x.url_citation).map(x=>({url:x.url_citation?.url,title:x.url_citation?.title,description:x.url_citation?.description})),functionCalls:y,finishReason:f,id:n}})}}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)}}},gl=s=>{switch(s){case"stop":return"stop";case"length":return"length";case"content_filter":return"error";case"tool_calls":return"function_call"}};function Ap(s){return s.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 Ee=class extends Fe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:o,models:i,chatReqUpdater:a,supportFor:l}){if(!e||e==="")throw new Error("OpenAI API key not set");let u=new Zs(t,n?.streamingUsage??!0,a);super(u,{name:"OpenAI",apiURL:r||"https://api.openai.com/v1",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:o,defaults:{model:t.model,embedModel:t.embedModel},options:n,supportFor:l,models:i})}},on=class extends Ee{constructor({apiKey:e,apiURL:t,config:n,options:r,models:o,modelInfo:i}){if(!e||e==="")throw new Error("OpenAI API key not set");i=[...rn,...i??[]];let a=u=>{let c=rt({model:u,modelInfo:i,models:o});return{functions:!0,streaming:!0,hasThinkingBudget:c?.supported?.thinkingBudget??!1,hasShowThoughts:c?.supported?.showThoughts??!1,structuredOutputs:c?.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:c?.supported?.thinkingBudget??!1,multiTurn:!0}},l=o?.map(u=>{let c=u,p=c?.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 m=p.stopSequences??p.stop;m!==void 0&&(d.stopSequences=m),p.n!==void 0&&(d.n=p.n),p.stream!==void 0&&(d.stream=p.stream);let g={...c};Object.keys(d).length>0&&(g.modelConfig={...c.modelConfig??{},...d});let h=p?.thinking?.thinkingTokenBudget;if(typeof h=="number"){let f=[["minimal",200],["low",800],["medium",5e3],["high",1e4],["highest",24500]],y="minimal",x=Number.POSITIVE_INFINITY;for(let[A,T]of f){let b=Math.abs(h-T);b<x&&(x=b,y=A)}g.thinkingTokenBudget=y}return p?.thinking?.includeThoughts!==void 0&&(g.showThoughts=!!p.thinking.includeThoughts),g});super({apiKey:e,apiURL:t,config:{...Dt(),...n},options:r,modelInfo:i,models:l??o,supportFor:a}),super.setName("OpenAI")}};var yp=s=>{let e=s.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},bp=s=>{let e=s.match(/^(\d{4}-\d{2}-\d{2})/);return e?e[1]>="2024-08-01":!1},ei=Dt,hl=lo,fl=uo,xl=ao,sn=class extends Ee{constructor({apiKey:e,resourceName:t,deploymentName:n,version:r="api-version=2024-02-15-preview",config:o,options:i,models:a,modelInfo:l}){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 u={...ei(),...o},c=yp(r),p=bp(c);l=[...rn,...l??[]];let d=g=>{let h=rt({model:g,modelInfo:l,models:a});return{functions:!0,streaming:!0,hasThinkingBudget:h?.supported?.thinkingBudget??!1,hasShowThoughts:h?.supported?.showThoughts??!1,structuredOutputs:p&&(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:u,options:i,models:a,modelInfo:l,supportFor:d});let m=t.includes("://")?t:`https://${t}.openai.azure.com/`;super.setName("Azure OpenAI"),super.setAPIURL(new URL(`/openai/deployments/${n}?api-version=${c}`,m).href),super.setHeaders(async()=>({"api-key":e}))}};var co=class s{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.");Ip(e),this.services=[...e].sort(t?.comparator??s.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 s(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,o=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 l=a.latency.chat.samples.length;l>0&&(t+=a.latency.chat.mean*l,n+=l);let u=a.latency.embed.samples.length;u>0&&(r+=a.latency.embed.mean*u,o+=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),o>0&&(e.latency.embed.mean=r/o);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}canRetryService(e){let t=this.serviceFailures.get(e.getId());if(!t)return!0;let{retries:n,lastFailureTime:r}=t,o=Date.now()-r,i=Math.min(this.initialBackoffMs*2**n,this.maxBackoffMs);return o>=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,o=r?.requiresImages,i=r?.requiresAudio,a=this.services,l=e.model;if((n||o||i)&&(a=this.services.filter(p=>{let d=p.getFeatures(l);return!(n&&!d.structuredOutputs||o&&!d.media.images.supported||i&&!d.media.audio.supported)}),a.length===0)){let p=[];throw n&&p.push("structured outputs"),o&&p.push("images"),i&&p.push("audio"),new Error(`No services available that support required capabilities: ${p.join(", ")}.`)}let u=0,c=a[u];if(!c)throw new Error("No matching AI services available for request.");for(this.currentService=c;;){if(!this.canRetryService(c)){let p=this.getNextService(a,u);if(!p.service)throw new Error(`All candidate services exhausted (tried ${a.length} service(s))`);c=p.service,u=p.index,this.currentService=c;continue}try{let p=await c.chat(e,t);return this.handleSuccess(c),p}catch(p){if(!(p instanceof qe))throw p;switch(p.constructor){case vt:throw p;case Ve:{if(![408,429,500,502,503,504].includes(p.status))throw p;break}case Ue:break;case Rt:break;case ot:break;case tt:break;default:throw p}if(this.handleFailure(c,p),(this.serviceFailures.get(c.getId())?.retries??0)>=this.maxRetries){let m=this.getNextService(a,u);if(this.debug&&console.warn(`AxBalancer: Switching to service ${m.service?.getName()??"none"}`,p),!m.service)throw p;c=m.service,u=m.index,this.currentService=c}}}}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 qe)||r instanceof Ve&&![408,429,500,502,503,504].includes(r.status)||r instanceof vt)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 Ip(s){let e=s.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<s.length;r++){let o=s[r];if(!o)throw new Error(`Service at index ${r} is undefined`);let i=o.getModelList();if(!i)throw new Error(`Service at index ${r} (${o.getName()}) has no model list while another service does.`);let a=new Set(i.map(l=>l.key));for(let l of n)if(!a.has(l))throw new Error(`Service at index ${r} (${o.getName()}) is missing model "${l}"`);for(let l of a)if(!n.has(l))throw new Error(`Service at index ${r} (${o.getName()}) has extra model "${l}"`)}}function Gt(s){let e=!1,t=!1,n=!1,r=!1,o=!1,i=!1,a=!1,l=new Set,u=0;if(s.chatPrompt&&Array.isArray(s.chatPrompt))for(let c of s.chatPrompt){if(c.role==="user"&&Array.isArray(c.content))for(let p of c.content)switch(l.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 c&&typeof c.content=="string"&&(u+=Math.ceil(c.content.length/4));"cache"in c&&c.cache&&(a=!0)}return s.functions&&s.functions.length>0&&(o=!0),s.modelConfig?.stream===!0&&(i=!0),s.capabilities&&(s.capabilities.requiresImages&&(e=!0),s.capabilities.requiresAudio&&(t=!0),s.capabilities.requiresFiles&&(n=!0),s.capabilities.requiresWebSearch&&(r=!0)),{hasImages:e,hasAudio:t,hasFiles:n,hasUrls:r,requiresFunctions:o,requiresStreaming:i,requiresCaching:a,contentTypes:l,estimatedTokens:u}}function ti(s,e){let t=s.getFeatures(),n=[],r=[],o=[];if(e.hasImages&&!t.media.images.supported&&(n.push("Image support"),o.push("Use altText for images or imageToText service")),e.hasAudio&&!t.media.audio.supported&&(n.push("Audio support"),o.push("Pre-transcribe audio or use transcription field")),e.hasFiles&&!t.media.files.supported&&(n.push("File support"),o.push("Pre-extract text content or use extractedText field")),e.hasUrls&&!t.media.urls.supported&&(n.push("URL/Web search support"),o.push("Pre-fetch content or use cachedContent field")),e.requiresFunctions&&!t.functions&&n.push("Function calling"),e.requiresStreaming&&!t.streaming&&(n.push("Streaming responses"),o.push("Use non-streaming mode")),e.requiresCaching&&!t.caching.supported&&(n.push("Content caching"),o.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:o}}function po(s,e){return s.map(t=>{let n=t.getFeatures(),r=ti(t,e),o=0,i=[];return o+=10,e.hasImages&&n.media.images.supported&&(o+=25,i.push("Images"),n.media.images.detailLevels?.includes("high")&&(o+=5),n.media.images.maxSize&&n.media.images.maxSize>10*1024*1024&&(o+=3)),e.hasAudio&&n.media.audio.supported&&(o+=25,i.push("Audio"),n.media.audio.maxDuration&&n.media.audio.maxDuration>600&&(o+=5)),e.hasFiles&&n.media.files.supported&&(o+=25,i.push("Files"),n.media.files.uploadMethod==="cloud"&&(o+=3)),e.hasUrls&&n.media.urls.supported&&(o+=25,i.push("URLs"),n.media.urls.webSearch&&(o+=5)),e.requiresFunctions&&n.functions&&(o+=15,i.push("Functions"),n.functionCot&&(o+=3)),e.requiresStreaming&&n.streaming&&(o+=10,i.push("Streaming")),e.requiresCaching&&n.caching.supported&&(o+=8,i.push("Caching"),n.caching.types.includes("persistent")&&(o+=3)),n.thinking&&(o+=2),n.multiTurn&&(o+=2),n.hasThinkingBudget&&(o+=1),n.hasShowThoughts&&(o+=1),o-=r.missingCapabilities.length*10,{provider:t,score:o,missingCapabilities:r.missingCapabilities,supportedCapabilities:i}}).sort((t,n)=>n.score-t.score)}function mo(s,e,t={}){if(e.length===0)throw new Error("No providers available");let n=Gt(s),r=po(e,n);if(t.requireExactMatch){let o=r.filter(i=>i.missingCapabilities.length===0);if(o.length===0)throw new Error(`No providers fully support the request requirements: ${r[0]?.missingCapabilities.join(", ")||"unknown requirements"}`);return o[0].provider}if(!t.allowDegradation){let o=r[0];if(o.missingCapabilities.length>0)throw new Error(`Best available provider (${o.provider.getName()}) is missing: ${o.missingCapabilities.join(", ")}`)}return r[0].provider}function Al(s,e){let t=Gt(s),n=po(e,t),r=n[0]?.provider||null,o=[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}/${o} requirements (${Math.round(i/Math.max(o,1)*100)}% compatibility)`:"No suitable providers found";return{requirements:t,providerScores:n,recommendedProvider:r,summary:a}}function yl(s,e){return s.filter(t=>t.getFeatures().media[e].supported)}function bl(s,e){let t={};for(let n of s){let o=n.getFeatures().media[e];if(o.supported)for(let i of o.formats)t[i]||(t[i]=[]),t[i].push(n)}return t}var lr=(r=>(r.CommandRPlus="command-r-plus",r.CommandR="command-r",r.Command="command",r.CommandLight="command-light",r))(lr||{}),ur=(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))(ur||{});var go=[{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}];var ri=()=>structuredClone({model:"command-r-plus",embedModel:"embed-english-v3.0",...Ce()}),Cl=()=>structuredClone({model:"command-r",embedModel:"embed-english-v3.0",...De()}),ni=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),o;n&&n.role==="user"&&typeof n.content=="string"&&(o=n?.content);let i=Cp(r),a=e.functions?.map(p=>{let d={};if(p.parameters?.properties)for(let[m,g]of Object.entries(p.parameters.properties))d[m]={description:g.description,type:g.type,required:p.parameters.required?.includes(m)??!1};return{name:p.name,description:p.description,parameter_definitions:d}}),l=e.chatPrompt.filter(p=>p.role==="function").map(p=>{let d=a?.find(m=>m.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"},c={message:o,model:t,tools:a,...l&&!o?{tool_results:l}:{},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,c]}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(o=>({id:o.name,type:"function",function:{name:o.name,params:o.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),o=r[0];if(!o)throw new Error("No result");return o.id=n.generation_id??"",{results:r}};createEmbedResp(e){return{remoteId:e.id,embeddings:e.embeddings}}},an=class extends Fe{constructor({apiKey:e,config:t,options:n,models:r}){if(!e||e==="")throw new Error("Cohere API key not set");let o={...ri(),...t},i=new ni(o),a=r?.map(l=>{let u=l,c=u?.config;if(!c)return l;let p={};c.maxTokens!==void 0&&(p.maxTokens=c.maxTokens),c.temperature!==void 0&&(p.temperature=c.temperature),c.topP!==void 0&&(p.topP=c.topP),c.topK!==void 0&&(p.topK=c.topK),c.presencePenalty!==void 0&&(p.presencePenalty=c.presencePenalty),c.frequencyPenalty!==void 0&&(p.frequencyPenalty=c.frequencyPenalty),c.stopSequences!==void 0&&(p.stopSequences=c.stopSequences),c.endSequences!==void 0&&(p.endSequences=c.endSequences),c.stream!==void 0&&(p.stream=c.stream),c.n!==void 0&&(p.n=c.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:go,defaults:{model:o.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 Cp(s){return s.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=Il(e.functionCalls);return{role:"CHATBOT",message:t,tool_calls:n}}case"function":{let n=s.map(i=>{if(i.role==="assistant")return i.functionCalls?.find(a=>a.id===e.functionId)}).filter(i=>i!==void 0),r=Il(n)?.at(0);if(!r)throw new Error("Function call not found");let o=[{result:e.result}];return{role:"TOOL",tool_results:[{call:r,outputs:o}]}}default:throw new Error("Unknown role")}})}function Il(s){return s?.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 cr=(n=>(n.DeepSeekChat="deepseek-chat",n.DeepSeekCoder="deepseek-coder",n.DeepSeekReasoner="deepseek-reasoner",n))(cr||{});var ho=[{name:"deepseek-chat",currency:"USD",promptTokenCostPer1M:.27,completionTokenCostPer1M:1.1},{name:"deepseek-reasoner",currency:"USD",promptTokenCostPer1M:.55,completionTokenCostPer1M:2.19}];var oi=()=>structuredClone({model:"deepseek-chat",...Ce()}),Tl=()=>structuredClone({model:"deepseek-coder",...De()}),ln=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("DeepSeek API key not set");let i={...oi(),...t};o=[...ho,...o??[]],super({apiKey:e,config:i,options:n,apiURL:"https://api.deepseek.com",modelInfo:o,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 pr=(A=>(A.Gemini31Pro="gemini-3.1-pro-preview",A.Gemini3Flash="gemini-3-flash-preview",A.Gemini3Pro="gemini-3-pro-preview",A.Gemini3ProImage="gemini-3-pro-image-preview",A.Gemini25Pro="gemini-2.5-pro",A.Gemini25Flash="gemini-2.5-flash",A.Gemini25FlashLite="gemini-2.5-flash-lite",A.Gemini20Flash="gemini-2.0-flash",A.Gemini20FlashLite="gemini-2.0-flash-lite",A.Gemini20ProExp="gemini-2.0-pro-exp-02-05",A.Gemini20FlashThinkingExp="gemini-2.0-flash-thinking-exp-01-21",A.Gemini1Pro="gemini-1.0-pro",A.Gemini15Flash="gemini-1.5-flash",A.Gemini15Flash002="gemini-1.5-flash-002",A.Gemini15Flash8B="gemini-1.5-flash-8b",A.Gemini15Pro="gemini-1.5-pro",A.GeminiFlashLatest="gemini-flash-latest",A.GeminiFlashLiteLatest="gemini-flash-lite-latest",A.GeminiProLatest="gemini-pro-latest",A))(pr||{}),fo=(o=>(o.GeminiEmbedding001="gemini-embedding-001",o.GeminiEmbedding="gemini-embedding-exp",o.TextEmbeddingLarge="text-embedding-large-exp-03-07",o.TextEmbedding004="text-embedding-004",o.TextEmbedding005="text-embedding-005",o))(fo||{}),xo=(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))(xo||{}),Ao=(o=>(o.BlockNone="BLOCK_NONE",o.BlockOnlyHigh="BLOCK_ONLY_HIGH",o.BlockMediumAndAbove="BLOCK_MEDIUM_AND_ABOVE",o.BlockLowAndAbove="BLOCK_LOW_AND_ABOVE",o.BlockDefault="HARM_BLOCK_THRESHOLD_UNSPECIFIED",o))(Ao||{}),si=(l=>(l.SemanticSimilarity="SEMANTIC_SIMILARITY",l.Classification="CLASSIFICATION",l.Clustering="CLUSTERING",l.RetrievalDocument="RETRIEVAL_DOCUMENT",l.RetrievalQuery="RETRIEVAL_QUERY",l.QuestionAnswering="QUESTION_ANSWERING",l.FactVerification="FACT_VERIFICATION",l.CodeRetrievalQuery="CODE_RETRIEVAL_QUERY",l))(si||{}),wl=["gemini-3.1-pro-preview","gemini-3.1-pro-preview-customtools","gemini-3-flash-preview","gemini-3-pro-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 yo=[{name:"gemini-3.1-pro-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:2,completionTokenCostPer1M:12,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-3-flash-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.5,completionTokenCostPer1M:3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-3-pro-preview",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:2,completionTokenCostPer1M:12,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:2.5,completionTokenCostPer1M:15,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:15,completionTokenCostPer1M:3.5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.5-flash-lite",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-2.0-flash",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:.01,completionTokenCostPer1M:.4,supported:{structuredOutputs:!0}},{name:"gemini-2.0-flash-lite",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:0,completionTokenCostPer1M:0,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:.075,completionTokenCostPer1M:.3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-flash-lite-latest",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:0,completionTokenCostPer1M:0,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gemini-pro-latest",currency:"usd",characterIsToken:!1,promptTokenCostPer1M:1.25,completionTokenCostPer1M:5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}}];var Ut=s=>s.includes("gemini-3"),Rl=s=>s.includes("gemini-3")&&s.includes("pro"),bo=s=>{if(!s||typeof s!="object")return s;let e={...s};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,bo(n)]))),e.items&&(e.items=bo(e.items)),e},vl=[{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"}],ai=()=>structuredClone({model:"gemini-2.5-flash",embedModel:"text-embedding-005",safetySettings:vl,thinkingTokenBudgetLevels:{minimal:200,low:800,medium:5e3,high:1e4,highest:24500},thinkingLevelMapping:{minimal:"minimal",low:"low",medium:"medium",high:"high",highest:"high"},...Ce()}),Sl=()=>structuredClone({model:"gemini-2.0-flash",embedModel:"text-embedding-005",safetySettings:vl,thinkingTokenBudgetLevels:{minimal:200,low:800,medium:5e3,high:1e4,highest:24500},thinkingLevelMapping:{minimal:"minimal",low:"low",medium:"medium",high:"high",highest:"high"},...De()}),ii=class{constructor(e,t,n,r,o){this.config=e;this.isVertex=t;this.endpointId=n;this.apiKey=r;this.options=o;if(!this.isVertex&&this.config.autoTruncate)throw new Error("Auto truncate is not supported for GoogleGemini");let i=this.config.model;if(Ut(i)){if(this.config.thinking?.thinkingTokenBudget!==void 0&&typeof this.config.thinking.thinkingTokenBudget=="number")throw new Error(`Gemini 3 models (${i}) do not support numeric thinkingTokenBudget. Use thinkingLevel ('low', 'medium', 'high') instead, or pass thinkingTokenBudget as a string level via options.`);if(Rl(i)&&this.config.thinking?.thinkingLevel){let a=this.config.thinking.thinkingLevel;if(a!=="low"&&a!=="high")throw new Error(`Gemini 3 Pro (${i}) only supports thinkingLevel 'low' or 'high', got '${a}'. 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}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=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 o;if(this.endpointId?o={name:r?`/${this.endpointId}:streamGenerateContent?alt=sse`:`/${this.endpointId}:generateContent`}:o={name:r?`/models/${n}:streamGenerateContent?alt=sse`:`/models/${n}:generateContent`},!this.isVertex){let x=r?"&":"?",A=typeof this.apiKey=="function"?await this.apiKey():this.apiKey;o.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,l=[],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 T=Array.isArray(A.content)?A.content.map((b,R)=>{switch(b.type){case"text":return{text:b.text};case"image":return{inlineData:{mimeType:b.mimeType,data:b.image}};case"audio":return{inlineData:{mimeType:`audio/${b.format??"mp3"}`,data:b.data}};case"file":return"fileUri"in b?{fileData:{mimeType:b.mimeType,fileUri:b.fileUri}}:{inlineData:{mimeType:b.mimeType,data:b.data}};default:throw new Error(`Chat prompt content type not supported (index: ${R})`)}}):[{text:A.content}];l.push({role:"user",parts:T});break}case"assistant":{let T=[],b=A.thoughtBlocks,R=A.functionCalls&&A.functionCalls.length>0,O=b?.[0],_=b?.map(G=>G.data).join("")??"",M=O?.signature;if(_&&T.push({...R?{}:{thought:!0},text:_,...M&&!R?{thought_signature:M}:{}}),A.functionCalls){let G=A.functionCalls.map((B,L)=>{let I;if(typeof B.function.params=="string"){let E=B.function.params;if(E.trim().length===0)I={};else try{I=JSON.parse(E)}catch{throw new Error(`Failed to parse function params JSON: ${E}`)}}else I=B.function.params;let v={functionCall:{name:B.function.name,args:I}};return M&&L===0&&(v.thought_signature=M),v});T.push(...G)}if(A.content&&T.push({text:A.content}),T.length===0)throw new Error("Assistant content is empty");l.push({role:"model",parts:T});break}case"function":{let T=[],b=A,R=x;for(;;){if(!("functionId"in b))throw new Error(`Chat prompt functionId is empty (index: ${R})`);if(T.push({functionResponse:{name:b.functionId,response:{result:b.result}}}),R+1<u.length&&u[R+1].role==="function")R++,b=u[R];else break}x=R,l.push({role:"user",parts:T});break}default:throw new Error(`Invalid role: ${JSON.stringify(A)} (index: ${x})`)}}let c=[];if(e.functions&&e.functions.length>0){let x=e.functions.map(A=>{let T={type:"object",properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]},b=A.parameters?bo(A.parameters):void 0;return b===void 0||b&&typeof b=="object"&&Object.keys(b).length===0?b={...T}:b&&typeof b=="object"&&b.type==="object"&&(!("properties"in b)||!b.properties||Object.keys(b.properties).length===0)&&(b={...b,properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]}),{name:A.name,description:A.description,parameters:b}});c.push({function_declarations:x})}if(this.options?.codeExecution&&c.push({code_execution:{}}),this.options?.googleSearchRetrieval&&c.push({google_search_retrieval:{dynamic_retrieval_config:this.options.googleSearchRetrieval}}),this.options?.googleSearch&&c.push({google_search:{}}),this.options?.googleMaps){let x=this.options.googleMaps,A=x?.enableWidget!==void 0?{enableWidget:x.enableWidget}:{};c.push({google_maps:A})}this.options?.urlContext&&c.push({url_context:{}}),c.length===0&&(c=void 0);let p,d=Array.isArray(c)?c.some(x=>x&&Array.isArray(x.function_declarations)&&x.function_declarations.length>0):!1;if(e.functionCall)if(e.functionCall==="none")p={function_calling_config:{mode:"NONE"}};else if(e.functionCall==="auto")p={function_calling_config:{mode:"AUTO"}};else if(e.functionCall==="required")p={function_calling_config:{mode:"ANY"}};else{let x=e.functionCall.function?.name?{allowedFunctionNames:[e.functionCall.function.name]}:{};p={function_calling_config:{mode:"ANY"},...x}}else d&&(p={function_calling_config:{mode:"AUTO"}});this.options?.retrievalConfig&&(p={...p??{},retrievalConfig:{...this.options.retrievalConfig.latLng?{latLng:this.options.retrievalConfig.latLng}:{}}});let m={};if(this.config.thinking?.includeThoughts&&(m.includeThoughts=!0),this.config.thinking?.thinkingTokenBudget&&(m.thinkingBudget=this.config.thinking.thinkingTokenBudget),this.config.thinking?.thinkingLevel&&Ut(n)&&(m.thinkingLevel=this.config.thinking.thinkingLevel),t?.thinkingTokenBudget){let x=this.getEffectiveMappings(n),A=x.thinkingTokenBudgetLevels;if(Ut(n)){let b=Rl(n),R=x.thinkingLevelMapping;if(t.thinkingTokenBudget==="none")m.thinkingLevel=R?.minimal??"minimal";else{let O=t.thinkingTokenBudget,_=R?.[O];_||(_=O==="highest"?"high":O),m.thinkingLevel=_}if(b&&m.thinkingLevel){let O=m.thinkingLevel;O!=="low"&&O!=="high"&&(m.thinkingLevel=O==="minimal"?"low":"high")}}else switch(t.thinkingTokenBudget){case"none":m.thinkingBudget=0,m.includeThoughts=!1,delete m.thinkingLevel;break;case"minimal":m.thinkingBudget=A?.minimal??200;break;case"low":m.thinkingBudget=A?.low??800;break;case"medium":m.thinkingBudget=A?.medium??5e3;break;case"high":m.thinkingBudget=A?.high??1e4;break;case"highest":m.thinkingBudget=A?.highest??24500;break}}m.thinkingLevel&&delete m.thinkingBudget,Ut(n)||delete m.thinkingLevel,Ut(n)&&delete m.thinkingBudget;let g=e.modelConfig?.maxTokens??this.config.maxTokens;if(m.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"&&(m.includeThoughts=t.showThoughts);let h={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(m).length>0?{thinkingConfig:m}:{}};if(Ut(n)&&(h.temperature===void 0||h.temperature<1)&&(h.temperature=1),e.responseFormat){if(h.responseMimeType="application/json",e.responseFormat.type==="json_schema"&&e.responseFormat.schema){let x=e.responseFormat.schema.schema||e.responseFormat.schema;h.responseSchema=bo(x)}}else this.config.responseFormat&&this.config.responseFormat==="json_object"&&(h.responseMimeType="application/json");let f=this.config.safetySettings;return[o,{contents:l,tools:c,toolConfig:p,systemInstruction:a,generationConfig:h,safetySettings:f}]};createEmbedReq=async 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,r;if(this.isVertex)this.endpointId?n={name:`/${this.endpointId}:predict`}:n={name:`/models/${t}:predict`},r={instances:e.texts.map(o=>({content:o,...this.config.embedType&&{taskType:this.config.embedType}})),parameters:{autoTruncate:this.config.autoTruncate,outputDimensionality:this.config.dimensions}};else{let o=typeof this.apiKey=="function"?this.apiKey():this.apiKey;n={name:`/models/${t}:batchEmbedContents?key=${o}`},r={requests:e.texts.map(i=>({model:`models/${t}`,content:{parts:[{text:i}]},outputDimensionality:this.config.dimensions,...this.config.embedType&&{taskType:this.config.embedType}}))}}return[n,r]};createChatResp=e=>{let t,n=e.candidates?.map(o=>{let i={index:0};switch(o.finishReason){case"MAX_TOKENS":i.finishReason="length";break;case"STOP":i.finishReason="stop";break;case"SAFETY":throw new ke("Content was blocked due to safety settings",void 0,void 0);case"RECITATION":throw new ke("Content was blocked due to recitation policy",void 0,void 0);case"MALFORMED_FUNCTION_CALL":throw new ke("Function call was malformed and blocked",void 0,void 0);case"UNEXPECTED_TOOL_CALL":throw new ke("Unexpected tool call",void 0,void 0);case"FINISH_REASON_UNSPECIFIED":throw new ke("Finish reason unspecified",void 0,void 0);case"BLOCKLIST":throw new ke("Content was blocked due to blocklist",void 0,void 0);case"PROHIBITED_CONTENT":throw new ke("Content was blocked due to prohibited content",void 0,void 0);case"SPII":throw new ke("Content was blocked due to SPII",void 0,void 0);case"OTHER":throw new ke("Other finish reason",void 0,void 0)}if(!o.content||!o.content.parts)return i;for(let u of o.content.parts){if("text"in u){if("thought"in u&&u.thought||u.thought===!0){i.thought=u.text;let c=u.thoughtSignature||u.thought_signature;i.thoughtBlocks||(i.thoughtBlocks=[]),i.thoughtBlocks.push({data:u.text,encrypted:!1,...c?{signature:c}:{}})}else i.content=u.text;continue}if("functionCall"in u){let c=u.thoughtSignature||u.thought_signature;if(c)if(!i.thoughtBlocks||i.thoughtBlocks.length===0)i.thoughtBlocks=[{data:"",encrypted:!1,signature:c}];else{let p=i.thoughtBlocks[i.thoughtBlocks.length-1];p&&!p.signature&&(p.signature=c)}i.functionCalls=[...i.functionCalls??[],{id:je(),type:"function",function:{name:u.functionCall.name,params:u.functionCall.args}}]}}let a=o.citationMetadata?.citations;if(Array.isArray(a)&&a.length){let u=c=>c?`${c.year}-${String(c.month).padStart(2,"0")}-${String(c.day).padStart(2,"0")}`:void 0;i.citations=a.filter(c=>typeof c?.uri=="string").map(c=>({url:c.uri,title:c.title,license:c.license,publicationDate:u(c.publicationDate)}))}let l=o.groundingMetadata;if(l){if(Array.isArray(l.groundingChunks)){let u=l.groundingChunks.map(c=>c?.maps).filter(c=>c&&typeof c.uri=="string").map(c=>({url:c.uri,title:c.title}));u.length&&(i.citations=[...i.citations??[],...u])}typeof l.googleMapsWidgetContextToken=="string"&&(t=l.googleMapsWidgetContextToken)}return i});e.usageMetadata&&(this.tokensUsed={totalTokens:e.usageMetadata.totalTokenCount,promptTokens:e.usageMetadata.promptTokenCount,completionTokens:e.usageMetadata.candidatesTokenCount,thoughtsTokens:e.usageMetadata.thoughtsTokenCount,...e.usageMetadata.cachedContentTokenCount!==void 0?{cacheReadTokens:e.usageMetadata.cachedContentTokenCount}:{}});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 wl.some(n=>t.includes(n)||n.includes(t))};buildCacheCreateOp=(e,t)=>{let n=e.model,r=t.contextCache?.ttlSeconds??3600,{systemInstruction:o,contents:i}=this.extractCacheableContent(e.chatPrompt);if(!o&&(!i||i.length===0))return;let a={model:this.isVertex?n:`models/${n}`,ttl:`${r}s`,displayName:`ax-cache-${Date.now()}`};o&&(a.systemInstruction=o),i&&i.length>0&&(a.contents=i);let l;if(this.isVertex)l="/cachedContents";else{l="/cachedContents";let u=typeof this.apiKey=="function"?"ASYNC_KEY":this.apiKey;l+=`?key=${u}`}return{type:"create",apiConfig:{name:l},request:a,parseResponse:u=>{let c=u;if(c?.name)return{name:c.name,expiresAt:c.expireTime,tokenCount:c.usageMetadata?.totalTokenCount}}}};buildCacheUpdateTTLOp=(e,t)=>{let n={ttl:`${t}s`},r=`/${e}`;if(!this.isVertex&&this.apiKey){let o=typeof this.apiKey=="function"?"ASYNC_KEY":this.apiKey;r+=`?key=${o}`}return{type:"update",apiConfig:{name:r,headers:{"Content-Type":"application/json"}},request:n,parseResponse:o=>{let i=o;if(i?.name)return{name:i.name,expiresAt:i.expireTime,tokenCount:i.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,o=e.modelConfig?.stream??this.config.stream,{dynamicContents:i,dynamicSystemInstruction:a}=this.extractDynamicContent(e.chatPrompt),l;if(this.endpointId?l={name:o?`/${this.endpointId}:streamGenerateContent?alt=sse`:`/${this.endpointId}:generateContent`}:l={name:o?`/models/${r}:streamGenerateContent?alt=sse`:`/models/${r}:generateContent`},!this.isVertex){let d=o?"&":"?",m=typeof this.apiKey=="function"?await this.apiKey():this.apiKey;l.name+=`${d}key=${m}`}let u={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"};Ut(r)&&(u.temperature===void 0||u.temperature<1)&&(u.temperature=1);let c=this.config.safetySettings,p={contents:i,cachedContent:n,generationConfig:u,safetySettings:c};return a&&(p.systemInstruction=a),{apiConfig:l,request:p}};extractCacheableContent(e){let t,n=[],r=-1;for(let o=e.length-1;o>=0;o--){let i=e[o];if("cache"in i&&i.cache){r=o;break}}for(let o=0;o<e.length;o++){let i=e[o];if(i.role==="system"){t={role:"user",parts:[{text:i.content}]};continue}if(r>=0&&o<=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 l of i.content)switch(l.type){case"text":a.push({text:l.text});break;case"image":a.push({inlineData:{mimeType:l.mimeType,data:l.image}});break;case"audio":a.push({inlineData:{mimeType:`audio/${l.format??"mp3"}`,data:l.data}});break;case"file":"fileUri"in l?a.push({fileData:{mimeType:l.mimeType,fileUri:l.fileUri}}):a.push({inlineData:{mimeType:l.mimeType,data:l.data}});break}a.length>0&&n.push({role:"user",parts:a})}else i.role==="assistant"&&i.content&&n.push({role:"model",parts:[{text:i.content}]})}return{systemInstruction:t,contents:n}}extractDynamicContent(e){let n=[];for(let r of e)if(r.role!=="system"&&!("cache"in r&&r.cache))if(r.role==="user"){let o=[];if(typeof r.content=="string")o.push({text:r.content});else if(Array.isArray(r.content)){for(let i of r.content)if(!("cache"in i&&i.cache))switch(i.type){case"text":o.push({text:i.text});break;case"image":o.push({inlineData:{mimeType:i.mimeType,data:i.image}});break;case"audio":o.push({inlineData:{mimeType:`audio/${i.format??"mp3"}`,data:i.data}});break;case"file":"fileUri"in i?o.push({fileData:{mimeType:i.mimeType,fileUri:i.fileUri}}):o.push({inlineData:{mimeType:i.mimeType,data:i.data}});break}}o.length>0&&n.push({role:"user",parts:o})}else if(r.role==="assistant"){let o=[];if(r.content&&o.push({text:r.content}),r.functionCalls)for(let i of r.functionCalls){let a;if(typeof i.function.params=="string")try{a=JSON.parse(i.function.params)}catch{a={}}else a=i.function.params??{};o.push({functionCall:{name:i.function.name,args:a}})}o.length>0&&n.push({role:"model",parts:o})}else r.role==="function"&&n.push({role:"user",parts:[{functionResponse:{name:r.functionId,response:{result:r.result}}}]});return{dynamicContents:n,dynamicSystemInstruction:void 0}}},un=class s extends Fe{static create(e){return new s(e)}constructor({apiKey:e,projectId:t,region:n,endpointId:r,config:o,options:i,models:a,modelInfo:l}){let u=t!==void 0&&n!==void 0,c,p;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 f;r?f="endpoints":f="publishers/google",c=`https://${n==="global"?"aiplatform":`${n}-aiplatform`}.googleapis.com/v1/projects/${t}/locations/${n}/${f}`,p=async()=>({Authorization:`Bearer ${typeof e=="function"?await e():e}`})}else{if(!e)throw new Error("GoogleGemini AI API key not set");c="https://generativelanguage.googleapis.com/v1beta",p=async()=>({})}let d={...ai(),...o},m=new ii(d,u,r,e,i);l=[...yo,...l??[]];let g=f=>{let y=rt({model:f,modelInfo:l,models:a});return{functions:!0,streaming:!0,hasThinkingBudget:y?.supported?.thinkingBudget??!1,hasShowThoughts:y?.supported?.showThoughts??!1,structuredOutputs:y?.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(f),types:["persistent"]},thinking:y?.supported?.thinkingBudget??!1,multiTurn:!0}},h=a?.map(f=>{let y=f,x=y?.config;if(!x)return f;let A={};x.maxTokens!==void 0&&(A.maxTokens=x.maxTokens),x.temperature!==void 0&&(A.temperature=x.temperature),x.topP!==void 0&&(A.topP=x.topP),x.topK!==void 0&&(A.topK=x.topK),x.presencePenalty!==void 0&&(A.presencePenalty=x.presencePenalty),x.frequencyPenalty!==void 0&&(A.frequencyPenalty=x.frequencyPenalty),x.stopSequences!==void 0&&(A.stopSequences=x.stopSequences),x.endSequences!==void 0&&(A.endSequences=x.endSequences),x.stream!==void 0&&(A.stream=x.stream),x.n!==void 0&&(A.n=x.n);let T={...y};Object.keys(A).length>0&&(T.modelConfig={...y.modelConfig??{},...A});let b=x.thinking?.thinkingTokenBudget;if(typeof b=="number"){let R=d.thinkingTokenBudgetLevels,O=[["minimal",R?.minimal??200],["low",R?.low??800],["medium",R?.medium??5e3],["high",R?.high??1e4],["highest",R?.highest??24500]],_="minimal",M=Number.POSITIVE_INFINITY;for(let[G,B]of O){let L=Math.abs(b-B);L<M&&(M=L,_=G)}T.thinkingTokenBudget=_}return x.thinking?.includeThoughts!==void 0&&(T.showThoughts=!!x.thinking.includeThoughts),x.thinkingLevelMapping&&(T.thinkingLevelMapping=x.thinkingLevelMapping),x.thinkingTokenBudgetLevels&&(T.thinkingTokenBudgetLevels=x.thinkingTokenBudgetLevels),T});h?m.setModels(h):a&&m.setModels(a),super(m,{name:"GoogleGeminiAI",apiURL:c,headers:p,modelInfo:l,defaults:{model:d.model,embedModel:d.embedModel},options:i,supportFor:g,models:h??a})}};var Tp=new Ye,cn=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(Tp.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 dr=(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))(dr||{});var Io=[{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 wp=()=>structuredClone({model:"llama-3.3-70b-versatile",...Ce()}),pn=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("Groq API key not set");let i={...wp(),...t},a={...n,streamingUsage:!1};o=[...Io,...o??[]];let l={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:o,apiURL:"https://api.groq.com/openai/v1",models:r,supportFor:l}),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 cn(t,t/60,{debug:e?.debug});return async(o,i)=>{let a=i.modelUsage?.tokens?.totalTokens||0;return await n.acquire(a),await o()}}};var Co=[];var To=(e=>(e.MetaLlama270BChatHF="meta-llama/Llama-2-70b-chat-hf",e))(To||{});var ui=()=>structuredClone({model:"meta-llama/Llama-2-70b-chat-hf",...Ce()}),kl=()=>structuredClone({model:"meta-llama/Llama-2-70b-chat-hf",...De()}),li=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:
170
170
  ${JSON.stringify(e.functions,null,2)}
171
171
  `:"",r=e.chatPrompt?.map(l=>{switch(l.role){case"user":return`User: ${l.content}`;case"system":return`System: ${l.content}`;case"function":return`Function Result: ${l.result}`;case"assistant":{let u=l.functionCalls?.map(c=>{let p=typeof c.function.params=="string"?c.function.params:JSON.stringify(c.function.params);return`${c.function.name}(${p})`}).join(`
172
172
  `);return u?`Assistant: ${l.content}
173
173
  Functions:
174
174
  ${u}`:`Assistant: ${l.content}`}default:throw new Error("Unknown role")}}).join(`
175
- `),o=`${n} ${r}`.trim(),i={name:"/models"},a={model:t,inputs:o,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}]})},dn=class extends Fe{constructor({apiKey:e,config:t,options:n,models:r}){if(!e||e==="")throw new Error("HuggingFace API key not set");let o={...ui(),...t},i=new li(o);super(i,{name:"HuggingFace",apiURL:"https://api-inference.huggingface.co",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:Co,defaults:{model:o.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 mr=(l=>(l.Mistral7B="open-mistral-7b",l.Mistral8x7B="open-mixtral-8x7b",l.MistralSmall="mistral-small-latest",l.MistralNemo="mistral-nemo-latest",l.MistralLarge="mistral-large-latest",l.Codestral="codestral-latest",l.OpenCodestralMamba="open-codestral-mamba",l.OpenMistralNemo="open-mistral-nemo-latest",l))(mr||{}),ci=(e=>(e.MistralEmbed="mistral-embed",e))(ci||{});var wo=[{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 Ro=()=>structuredClone({model:"mistral-small-latest",...Ce(),topP:1}),Ml=()=>structuredClone({...Ro(),model:"mistral-large-latest"}),mn=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("Mistral API key not set");let i={...Ro(),...t};o=[...wo,...o??[]];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},l=u=>{let{max_completion_tokens:c,messages:p,...d}=u;return{...d,messages:this.updateMessages(p),max_tokens:c}};super({apiKey:e,config:i,options:n,apiURL:"https://api.mistral.ai/v1",modelInfo:o,models:r,supportFor:a,chatReqUpdater:l}),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(o=>typeof o=="object"&&o!==null&&"image_url"in o?{type:"image_url",image_url:{url:o.image_url?.url}}:o);t.push({...n,content:r})}else t.push(n);return t}};var vo=class{constructor(e={}){this.config=e;this.config.id=this.config.id??je()}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}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,o)=>r+o,0)/n.length,n.length>0){let r=[...n].sort((a,l)=>a-l),o=Math.max(0,Math.floor(r.length*.95)-1);this.metrics.latency[e].p95=r[o]??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 So=class s{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:o,description:i,isInternal:a}=n;this.services.set(n.key,{service:o,description:i,isInternal:a})}else{let o=n.getModelList();if(!o)throw new Error(`Service ${t} \`${n.getName()}\` has no model list.`);for(let i of o){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 s(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:o,...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:o,...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()}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)}};var pi=()=>structuredClone({...Ce(),model:"nous-hermes2",embedModel:"all-minilm"}),El=()=>structuredClone({...De(),model:"nous-hermes2",embedModel:"all-minilm"}),gn=class extends Ee{constructor({apiKey:e="not-set",url:t="http://localhost:11434/v1",config:n,options:r,models:o}){let i={...pi(),...n};super({apiKey:e,options:r,config:i,apiURL:t,models:o,modelInfo:[],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}}),super.setName("Ollama")}};var Rp=s=>["o1","o1-mini","o1-pro","o3","o3-mini","o3-pro","o4-mini"].includes(s),hn=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 o=r;throw new Error(`Unsupported content part: ${JSON.stringify(o)}`)}return n}createResponsesReqInternalInput(e,t=!1){let n=[];for(let r of e){if(t&&r.role==="system")continue;let o;if(r.role==="system"||r.role==="user"||r.role==="assistant"&&r.content)if(typeof r.content=="string")r.role==="system"?o=r.content:r.role==="assistant"?o=[{type:"output_text",text:r.content}]:o=[{type:"input_text",text:r.content}];else if(Array.isArray(r.content))o=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}`);o=""}else r.role,o="";switch(r.role){case"system":n.push({type:"message",role:"system",content:o});break;case"user":n.push({type:"message",role:"user",content:o,name:r.name});break;case"assistant":if(r.content||r.functionCalls){let i={type:"message",role:"assistant",content:""};if(r.content&&(i.content=o),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"},o=null,i=!1;if(e.chatPrompt){for(let y of e.chatPrompt)if(y.role==="system"&&typeof y.content=="string"){o=y.content,i=!0;break}}let a=o??this.config.systemPrompt??null,l=e.functions?.map(y=>({type:"function",name:y.name,description:y.description,parameters:y.parameters??{}})),u=[],c=Rp(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 m={model:n,input:"",instructions:a,tools:l?.length?l: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,...c?{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&&(m.user=this.config.user),this.config.parallelToolCalls!==void 0&&(m.parallel_tool_calls=this.config.parallelToolCalls),e.responseFormat?m.text={format:e.responseFormat.type==="json_schema"?{type:"json_schema",json_schema:e.responseFormat.schema}:{type:e.responseFormat.type}}:this.config.responseFormat&&(m.text={format:{type:this.config.responseFormat}}),this.config.seed&&(m.seed=this.config.seed);let g=e.chatPrompt?this.createResponsesReqInternalInput(e.chatPrompt,i):[];if(g.length>0)m.input=g;else if(e.chatPrompt&&e.chatPrompt.length===1&&e.chatPrompt[0]?.role==="user"&&e.chatPrompt[0]?.content&&typeof e.chatPrompt[0].content=="string"&&!a)m.input=e.chatPrompt[0].content;else if(g.length===0&&!a)throw new Error("Responses API request must have input or instructions.");let h=m.reasoning??{};if(this.config.reasoningEffort&&(h={...h,effort:this.config.reasoningEffort}),t?.thinkingTokenBudget)switch(t.thinkingTokenBudget){case"none":h={};break;case"minimal":h={...h,effort:"minimal"};break;case"low":h={...h,effort:"medium"};break;case"medium":case"high":case"highest":h={...h,effort:"high"};break}Object.keys(h).length>0&&h.effort?m.reasoning=h:m.reasoning=void 0;let f=m;return this.responsesReqUpdater&&(f=this.responsesReqUpdater(f)),[r,f]}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 o={};for(let i of n??[])switch(i.type){case"message":o.id=i.id,o.content=di(i.content,t),o.finishReason=i.status==="completed"?"stop":"content_filter",o.citations=ko(i.content);break;case"reasoning":o.id=i.id,i.encrypted_content?o.thought=i.encrypted_content:o.thought=i.summary.map(a=>typeof a=="object"?JSON.stringify(a):a).join(`
175
+ `),o=`${n} ${r}`.trim(),i={name:"/models"},a={model:t,inputs:o,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}]})},dn=class extends Fe{constructor({apiKey:e,config:t,options:n,models:r}){if(!e||e==="")throw new Error("HuggingFace API key not set");let o={...ui(),...t},i=new li(o);super(i,{name:"HuggingFace",apiURL:"https://api-inference.huggingface.co",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:Co,defaults:{model:o.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 mr=(l=>(l.Mistral7B="open-mistral-7b",l.Mistral8x7B="open-mixtral-8x7b",l.MistralSmall="mistral-small-latest",l.MistralNemo="mistral-nemo-latest",l.MistralLarge="mistral-large-latest",l.Codestral="codestral-latest",l.OpenCodestralMamba="open-codestral-mamba",l.OpenMistralNemo="open-mistral-nemo-latest",l))(mr||{}),ci=(e=>(e.MistralEmbed="mistral-embed",e))(ci||{});var wo=[{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 Ro=()=>structuredClone({model:"mistral-small-latest",...Ce(),topP:1}),Ol=()=>structuredClone({...Ro(),model:"mistral-large-latest"}),mn=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("Mistral API key not set");let i={...Ro(),...t};o=[...wo,...o??[]];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},l=u=>{let{max_completion_tokens:c,messages:p,...d}=u;return{...d,messages:this.updateMessages(p),max_tokens:c}};super({apiKey:e,config:i,options:n,apiURL:"https://api.mistral.ai/v1",modelInfo:o,models:r,supportFor:a,chatReqUpdater:l}),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(o=>typeof o=="object"&&o!==null&&"image_url"in o?{type:"image_url",image_url:{url:o.image_url?.url}}:o);t.push({...n,content:r})}else t.push(n);return t}};var vo=class{constructor(e={}){this.config=e;this.config.id=this.config.id??je()}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}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,o)=>r+o,0)/n.length,n.length>0){let r=[...n].sort((a,l)=>a-l),o=Math.max(0,Math.floor(r.length*.95)-1);this.metrics.latency[e].p95=r[o]??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 So=class s{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:o,description:i,isInternal:a}=n;this.services.set(n.key,{service:o,description:i,isInternal:a})}else{let o=n.getModelList();if(!o)throw new Error(`Service ${t} \`${n.getName()}\` has no model list.`);for(let i of o){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 s(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:o,...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:o,...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()}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)}};var pi=()=>structuredClone({...Ce(),model:"nous-hermes2",embedModel:"all-minilm"}),Ml=()=>structuredClone({...De(),model:"nous-hermes2",embedModel:"all-minilm"}),gn=class extends Ee{constructor({apiKey:e="not-set",url:t="http://localhost:11434/v1",config:n,options:r,models:o}){let i={...pi(),...n};super({apiKey:e,options:r,config:i,apiURL:t,models:o,modelInfo:[],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}}),super.setName("Ollama")}};var Rp=s=>["o1","o1-mini","o1-pro","o3","o3-mini","o3-pro","o4-mini"].includes(s),hn=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 o=r;throw new Error(`Unsupported content part: ${JSON.stringify(o)}`)}return n}createResponsesReqInternalInput(e,t=!1){let n=[];for(let r of e){if(t&&r.role==="system")continue;let o;if(r.role==="system"||r.role==="user"||r.role==="assistant"&&r.content)if(typeof r.content=="string")r.role==="system"?o=r.content:r.role==="assistant"?o=[{type:"output_text",text:r.content}]:o=[{type:"input_text",text:r.content}];else if(Array.isArray(r.content))o=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}`);o=""}else r.role,o="";switch(r.role){case"system":n.push({type:"message",role:"system",content:o});break;case"user":n.push({type:"message",role:"user",content:o,name:r.name});break;case"assistant":if(r.content||r.functionCalls){let i={type:"message",role:"assistant",content:""};if(r.content&&(i.content=o),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"},o=null,i=!1;if(e.chatPrompt){for(let y of e.chatPrompt)if(y.role==="system"&&typeof y.content=="string"){o=y.content,i=!0;break}}let a=o??this.config.systemPrompt??null,l=e.functions?.map(y=>({type:"function",name:y.name,description:y.description,parameters:y.parameters??{}})),u=[],c=Rp(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 m={model:n,input:"",instructions:a,tools:l?.length?l: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,...c?{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&&(m.user=this.config.user),this.config.parallelToolCalls!==void 0&&(m.parallel_tool_calls=this.config.parallelToolCalls),e.responseFormat?m.text={format:e.responseFormat.type==="json_schema"?{type:"json_schema",json_schema:e.responseFormat.schema}:{type:e.responseFormat.type}}:this.config.responseFormat&&(m.text={format:{type:this.config.responseFormat}}),this.config.seed&&(m.seed=this.config.seed);let g=e.chatPrompt?this.createResponsesReqInternalInput(e.chatPrompt,i):[];if(g.length>0)m.input=g;else if(e.chatPrompt&&e.chatPrompt.length===1&&e.chatPrompt[0]?.role==="user"&&e.chatPrompt[0]?.content&&typeof e.chatPrompt[0].content=="string"&&!a)m.input=e.chatPrompt[0].content;else if(g.length===0&&!a)throw new Error("Responses API request must have input or instructions.");let h=m.reasoning??{};if(this.config.reasoningEffort&&(h={...h,effort:this.config.reasoningEffort}),t?.thinkingTokenBudget)switch(t.thinkingTokenBudget){case"none":h={};break;case"minimal":h={...h,effort:"minimal"};break;case"low":h={...h,effort:"medium"};break;case"medium":case"high":case"highest":h={...h,effort:"high"};break}Object.keys(h).length>0&&h.effort?m.reasoning=h:m.reasoning=void 0;let f=m;return this.responsesReqUpdater&&(f=this.responsesReqUpdater(f)),[r,f]}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 o={};for(let i of n??[])switch(i.type){case"message":o.id=i.id,o.content=di(i.content,t),o.finishReason=i.status==="completed"?"stop":"content_filter",o.citations=ko(i.content);break;case"reasoning":o.id=i.id,i.encrypted_content?o.thought=i.encrypted_content:o.thought=i.summary.map(a=>typeof a=="object"?JSON.stringify(a):a).join(`
176
176
  `);break;case"file_search_call":o.id=i.id,o.functionCalls=[{id:i.id,type:"function",function:{name:"file_search",params:{queries:i.queries,results:i.results}}}],o.finishReason="function_call";break;case"web_search_call":o.id=i.id,o.functionCalls=[{id:i.id,type:"function",function:{name:"web_search",params:{queries:i.queries}}}],o.finishReason="function_call";break;case"computer_call":o.id=i.id,o.functionCalls=[{id:i.id,type:"function",function:{name:"computer_use",params:{action:i.action}}}],o.finishReason="function_call";break;case"code_interpreter_call":o.id=i.id,o.functionCalls=[{id:i.id,type:"function",function:{name:"code_interpreter",params:{code:i.code,results:i.results}}}],o.finishReason="function_call";break;case"image_generation_call":o.id=i.id,o.functionCalls=[{id:i.id,type:"function",function:{name:"image_generation",params:{result:i.result}}}],o.finishReason="function_call";break;case"local_shell_call":o.id=i.id,o.functionCalls=[{id:i.id,type:"function",function:{name:"local_shell",params:{action:i.action}}}],o.finishReason="function_call";break;case"mcp_call":o.id=i.id,o.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}}}],o.finishReason="function_call";break;case"function_call":o.id=i.id,o.functionCalls=[{id:i.id,type:"function",function:{name:i.name,params:i.arguments}}],o.finishReason="function_call";break}return{results:[{...o,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=di(t.item.content,t.item.id),n.citations=ko(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 o=t.item;n.id=t.item.id,n.functionCalls=[{id:o.id,type:"function",function:{name:"file_search",params:{queries:o.queries||[],results:o.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 o=t.item;n.id=t.item.id,n.functionCalls=[{id:o.id,type:"function",function:{name:"web_search",params:{queries:o.queries||[]}}}]}break;case"computer_call":{let o=t.item;n.id=t.item.id,n.functionCalls=[{id:o.id,type:"function",function:{name:"computer_use",params:{action:o.action||{}}}}]}break;case"code_interpreter_call":{let o=t.item;n.id=t.item.id,n.functionCalls=[{id:o.id,type:"function",function:{name:"code_interpreter",params:{code:o.code||"",results:o.results}}}]}break;case"image_generation_call":{let o=t.item;n.id=t.item.id,n.functionCalls=[{id:o.id,type:"function",function:{name:"image_generation",params:{result:o.result}}}]}break;case"local_shell_call":{let o=t.item;n.id=t.item.id,n.functionCalls=[{id:o.id,type:"function",function:{name:"local_shell",params:{action:o.action||{}}}}]}break;case"mcp_call":{let o=t.item;n.id=t.item.id,n.functionCalls=[{id:o.id,type:"function",function:{name:"mcp",params:{name:o.name||"",args:o.args||"",serverLabel:o.server_label||"",output:o.output,error:o.error}}}]}break}break;case"response.content_part.added":n.id=t.item_id,n.content=di([t.part],t.item_id),n.citations=ko([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 o=ko(t.item.content||[]);o&&(n.citations=o)}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]}},di=(s,e)=>{let t=s.filter(n=>n.type==="refusal");if(t.length>0){let n=t.map(r=>r.refusal).join(`
177
177
  `);throw new ke(n,void 0,e)}return s.filter(n=>n.type==="output_text").map(n=>n.text).join(`
178
- `)};function ko(s){let e=[];for(let t of s??[])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 hr=()=>({model:"gpt-4o",embedModel:"text-embedding-ada-002",temperature:.7,topP:1,stream:!0}),Pl=()=>({...hr(),model:"gpt-4o",temperature:.5}),Fl=()=>({...hr(),model:"gpt-4o",temperature:.9}),gr=class extends Fe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:o=[],models:i,responsesReqUpdater:a,supportFor:l={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 hn(t,n?.streamingUsage??!0,a),c=i?.map(p=>{let d=p,m=d?.config;if(!m)return p;let g={};m.maxTokens!==void 0&&(g.maxTokens=m.maxTokens),m.temperature!==void 0&&(g.temperature=m.temperature),m.topP!==void 0&&(g.topP=m.topP),m.presencePenalty!==void 0&&(g.presencePenalty=m.presencePenalty),m.frequencyPenalty!==void 0&&(g.frequencyPenalty=m.frequencyPenalty);let h=m.stopSequences??m.stop;h!==void 0&&(g.stopSequences=h),m.n!==void 0&&(g.n=m.n),m.stream!==void 0&&(g.stream=m.stream);let f={...d};Object.keys(g).length>0&&(f.modelConfig={...d.modelConfig??{},...g});let y=m?.thinking?.thinkingTokenBudget;if(typeof y=="number"){let x=[["minimal",200],["low",800],["medium",5e3],["high",1e4],["highest",24500]],A="minimal",T=Number.POSITIVE_INFINITY;for(let[b,R]of x){let O=Math.abs(y-R);O<T&&(T=O,A=b)}f.thinkingTokenBudget=A}return m?.thinking?.includeThoughts!==void 0&&(f.showThoughts=!!m.thinking.includeThoughts),f});super(u,{name:"OpenAI",apiURL:r||"https://api.openai.com/v1",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:o,defaults:{model:t.model??"gpt-4o",embedModel:t.embedModel??"text-embedding-ada-002"},options:n,supportFor:l,models:c??i})}},fn=class extends gr{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("OpenAI API key not set");o=[...io,...o??[]];let i=a=>{let l=rt({model:a,modelInfo:o,models:r});return{functions:!0,streaming:!0,hasThinkingBudget:l?.supported?.thinkingBudget??!1,hasShowThoughts:l?.supported?.showThoughts??!1,structuredOutputs:l?.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:{...hr(),...t},options:n,modelInfo:o,models:r,supportFor:i})}};var mi=()=>structuredClone({model:"openrouter/auto",...Ce()}),xn=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o,referer:i,title:a}){if(!e||e==="")throw new Error("OpenRouter API key not set");let l={...mi(),...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},c=o??[];super({apiKey:e,config:l,options:n,apiURL:"https://openrouter.ai/api/v1",modelInfo:c,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 Oo(s,e,t={}){if(typeof s=="string")return[{type:"text",text:s}];if(!Array.isArray(s))return[{type:"text",text:String(s)}];let n=e.getFeatures(),r=[];for(let o of s)try{switch(o.type){case"text":r.push({type:"text",text:o.text});break;case"image":if(n.media.images.supported)o.altText?r.push({type:"text",text:`[Image: ${o.altText}]`}):r.push({type:"text",text:"[Image content]"});else if(o.altText)r.push({type:"text",text:o.altText});else if(t.imageToText)try{let i=await t.imageToText(o.image);r.push({type:"text",text:i})}catch(i){throw new mt(i,"image","vision analysis")}else switch(t.fallbackBehavior){case"error":throw new st("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)o.transcription?r.push({type:"text",text:o.transcription}):r.push({type:"text",text:"[Audio content]"});else if(o.transcription)r.push({type:"text",text:o.transcription});else if(t.audioToText)try{let i=await t.audioToText(o.data,o.format);r.push({type:"text",text:i})}catch(i){throw new mt(i,"audio","transcription")}else switch(t.fallbackBehavior){case"error":throw new st("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)o.extractedText?r.push({type:"text",text:o.extractedText}):r.push({type:"text",text:`[File: ${o.filename}]`});else if(o.extractedText)r.push({type:"text",text:o.extractedText});else if(t.fileToText)try{let i=await t.fileToText(o.data,o.mimeType);r.push({type:"text",text:i})}catch(i){throw new mt(i,"file","text extraction")}else switch(t.fallbackBehavior){case"error":throw new st("Files",e.getName(),!1);case"skip":continue;default:r.push({type:"text",text:`[File: ${o.filename} - content not accessible by this provider]`})}break;case"url":if(n.media.urls.supported)o.cachedContent?r.push({type:"text",text:o.cachedContent}):r.push({type:"text",text:`[Link: ${o.url}${o.title?` - ${o.title}`:""}]`});else if(o.cachedContent)r.push({type:"text",text:o.cachedContent});else if(t.urlToText)try{let i=await t.urlToText(o.url);r.push({type:"text",text:i})}catch(i){throw new mt(i,"url","content fetching")}else switch(t.fallbackBehavior){case"error":throw new st("URLs",e.getName(),!1);case"skip":continue;case"degrade":r.push({type:"text",text:`[Link: ${o.url}${o.title?` - ${o.title}`:""}]`})}break;default:typeof o=="object"&&o.text?r.push({type:"text",text:o.text}):r.push({type:"text",text:String(o)})}}catch(i){throw i instanceof st||i instanceof mt?i:new mt(i,o.type||"unknown","content processing")}return r}function _l(s){let e=!1,t=!1,n=!1,r=!1;for(let o of s)if(o.role==="user"&&Array.isArray(o.content))for(let i of o.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 fr=(n=>(n.RekaCore="reka-core",n.RekaFlash="reka-flash",n.RekaEdge="reka-edge",n))(fr||{});var Mo=[{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 xr=()=>structuredClone({model:"reka-core",...Ce()}),Nl=()=>structuredClone({...xr(),model:"reka-core"}),Ll=()=>structuredClone({model:"reka-core",...De()}),Dl=()=>({...xr(),model:"reka-flash"}),gi=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=vp(e),o=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,...o?{frequency_penalty:o}:{},...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 l=$l(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:l}}),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 l=$l(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:l}})}}},$l=s=>{switch(s){case"stop":return"stop";case"context":return"length";case"length":return"length"}};function vp(s){return s.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 An=class extends Fe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:o=Mo,models:i}){if(!e||e==="")throw new Error("Reka API key not set");let a={...xr(),...t},l=new gi(a);super(l,{name:"Reka",apiURL:r||"https://api.reka.ai/v1/chat",headers:async()=>({"X-Api-Key":e}),modelInfo:o,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 Eo=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(o){if(o instanceof st&&t.fallbackProviders?.length)return await this.tryFallbackProviders(e,t.fallbackProviders,t);throw o}}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},o=[];for(let i of e.chatPrompt)if(i.role==="user"&&Array.isArray(i.content)){let a=await Oo(i.content,t,r);a.every(u=>u.type==="text")&&a.length===1?o.push({...i,content:a[0].text}):o.push({...i,content:a.map(u=>({type:"text",text:u.text}))})}else o.push(i);return{...e,chatPrompt:o}}async selectProviderWithDegradation(e,t){let n=Gt(e),r=[],o=[],i=[];try{let a=mo(e,this.providers,{requireExactMatch:t.requireExactMatch??this.config.capability.requireExactMatch,allowDegradation:t.allowDegradation??this.config.capability.allowDegradation}),l=a.getFeatures();return n.hasImages&&!l.media.images.supported&&(o.push("Images will be converted to text descriptions"),r.push("Image-to-text conversion")),n.hasAudio&&!l.media.audio.supported&&(o.push("Audio will be transcribed to text"),r.push("Audio-to-text transcription")),n.hasFiles&&!l.media.files.supported&&(o.push("File content will be extracted to text"),r.push("File-to-text extraction")),n.hasUrls&&!l.media.urls.supported&&(o.push("URL content will be pre-fetched"),r.push("URL content fetching")),n.requiresStreaming&&!l.streaming&&i.push("Streaming not supported - will use non-streaming mode"),n.requiresCaching&&!l.caching.supported&&i.push("Content caching not supported"),{provider:a,processingApplied:r,degradations:o,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 o={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:o}}catch{}throw new Error("All fallback providers failed")}async getRoutingRecommendation(e){return await this.selectProviderWithDegradation(e,{})}async validateRequest(e){let t=Gt(e),n=[],r=[];try{let o=await this.selectProviderWithDegradation(e,{});return o.degradations.length>0&&(n.push(...o.degradations),r.push("Consider using a provider that natively supports all media types")),o.warnings.length>0&&n.push(...o.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||o.degradations.length>0,issues:n,recommendations:r}}catch(o){return{canHandle:!1,issues:[`Cannot route request: ${o instanceof Error?o.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 Ar=(x=>(x.KimiK25="moonshotai/Kimi-K2.5",x.KimiK2Instruct0905="moonshotai/Kimi-K2-Instruct-0905",x.KimiK2Thinking="moonshotai/Kimi-K2-Thinking",x.DeepSeekV31="deepseek-ai/DeepSeek-V3.1",x.DeepSeekR1="deepseek-ai/DeepSeek-R1",x.GPTOSS120B="openai/gpt-oss-120b",x.GPTOSS20B="openai/gpt-oss-20b",x.Qwen35_397B="Qwen/Qwen3.5-397B-A17B",x.Qwen3CoderNext="Qwen/Qwen3-Coder-Next-FP8",x.Qwen3Coder480B="Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",x.Qwen3_235BInstruct2507="Qwen/Qwen3-235B-A22B-Instruct-2507-tput",x.Qwen3_235BThinking2507="Qwen/Qwen3-235B-A22B-Thinking-2507",x.Qwen3Next80BInstruct="Qwen/Qwen3-Next-80B-A3B-Instruct",x.Qwen3Next80BThinking="Qwen/Qwen3-Next-80B-A3B-Thinking",x.GLM5="zai-org/GLM-5",x.GLM47="zai-org/GLM-4.7",x.Llama4Maverick="meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",x.Llama33_70B="meta-llama/Llama-3.3-70B-Instruct-Turbo",x))(Ar||{});var Po=[{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 hi=()=>structuredClone({model:"meta-llama/Llama-3.3-70B-Instruct-Turbo",...Ce()}),yn=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("Together API key not set");let i={...hi(),...t};o=[...Po,...o??[]];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:o,models:r,supportFor:a}),super.setName("Together")}};var yr=(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))(yr||{});var Fo=[{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 xi=()=>structuredClone({model:"Llama-3.2-3B-Instruct-q4f32_1-MLC",...Ce()}),Gl=()=>structuredClone({model:"Llama-3.2-3B-Instruct-q4f32_1-MLC",...De()}),fi=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 l="";typeof a.content=="string"?l=a.content:Array.isArray(a.content)&&(l=a.content.filter(c=>c.type==="text").map(c=>c.text).join(`
179
- `));let u={role:a.role,content:l};return a.role==="assistant"&&a.functionCalls?.length?{...u,tool_calls:a.functionCalls.map(c=>({id:c.id,type:"function",function:{name:c.function.name,arguments:typeof c.function.params=="string"?c.function.params:JSON.stringify(c.function.params||{})}}))}:u}),r=e.functions?.map(a=>({type:"function",function:{name:a.name,description:a.description,parameters:a.parameters||{type:"object",properties:{}}}})),o={name:"/chat/completions",localCall:async(a,l)=>{try{let u=await this.engine.chat.completions.create({...a,stream:l||!1});return l?new ReadableStream({async start(c){try{for await(let p of u)c.enqueue(p);c.close()}catch(p){c.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[o,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 o="stop";switch(n.finish_reason){case"stop":o="stop";break;case"length":o="length";break;case"tool_calls":o="function_call";break;case"content_filter":o="content_filter";break;default:o="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:o}}),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 l of r.delta.tool_calls){let u=n.toolCalls[l.index];u?l.function?.arguments&&(u.function.arguments=(u.function?.arguments||"")+l.function.arguments):n.toolCalls[l.index]={id:l.id,type:l.type,function:{name:l.function?.name,arguments:l.function?.arguments||""}}}}e.usage&&(this.tokensUsed={promptTokens:e.usage.prompt_tokens,completionTokens:e.usage.completion_tokens,totalTokens:e.usage.total_tokens});let o;if(r.finish_reason)switch(r.finish_reason){case"stop":o="stop";break;case"length":o="length";break;case"tool_calls":o="function_call";break;case"content_filter":o="content_filter";break;default:o="stop";break}let i=n.toolCalls?.map(l=>({id:l.id||"",type:"function",function:{name:l.function?.name||"",params:l.function?.arguments||""}}));return{results:[{index:0,id:e.id,content:n.content||"",functionCalls:i,finishReason:o}],remoteId:e.id}};createEmbedResp(e){throw new Error("WebLLM does not support embeddings")}},bn=class extends Fe{constructor({engine:e,config:t,options:n,models:r}){if(!e)throw new Error("WebLLM engine instance is required");let o={...xi(),...t},i=new fi(o,e);super(i,{name:"WebLLM",apiURL:void 0,headers:async()=>({}),modelInfo:Fo,defaults:{model:o.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 br=(r=>(r.Grok3="grok-3",r.Grok3Mini="grok-3-mini",r.Grok3Fast="grok-3-fast",r.Grok3MiniFast="grok-3-mini-fast",r))(br||{}),Ai=(e=>(e.GrokEmbedSmall="grok-embed-small",e))(Ai||{});var _o=[{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 $o=()=>structuredClone({model:"grok-3-mini",...Ce()}),Ul=()=>structuredClone({...$o(),model:"grok-3"}),In=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("Grok API key not set");let i={...$o(),...t};o=[..._o,...o??[]];let a=u=>{let c=rt({model:u,modelInfo:o,models:r});return{functions:!0,streaming:!0,hasThinkingBudget:c?.supported?.thinkingBudget??!1,hasShowThoughts:c?.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}},l=u=>{if(n?.searchParameters){let c=n.searchParameters;return{...u,search_parameters:{mode:c.mode,return_citations:c.returnCitations,from_date:c.fromDate,to_date:c.toDate,max_search_results:c.maxSearchResults,sources:c.sources?.map(p=>({type:p.type,country:p.country,excluded_websites:p.excludedWebsites,allowed_websites:p.allowedWebsites,safe_search:p.safeSearch,x_handles:p.xHandles,links:p.links}))}}}return u};super({apiKey:e,config:i,options:n,apiURL:"https://api.x.ai/v1",modelInfo:o,models:r,supportFor:a,chatReqUpdater:l}),super.setName("Grok")}};function Bl(s){return Ir.create(s)}var Ir=class s{ai;static create(e){return new s(e)}constructor(e){switch(e.name){case"openai":this.ai=new on(e);break;case"openai-responses":this.ai=new fn(e);break;case"azure-openai":this.ai=new sn(e);break;case"grok":this.ai=new In(e);break;case"huggingface":this.ai=new dn(e);break;case"groq":this.ai=new pn(e);break;case"together":this.ai=new yn(e);break;case"openrouter":this.ai=new xn(e);break;case"cohere":this.ai=new an(e);break;case"google-gemini":this.ai=new un(e);break;case"anthropic":this.ai=new en(e);break;case"mistral":this.ai=new mn(e);break;case"deepseek":this.ai=new ln(e);break;case"ollama":this.ai=new gn(e);break;case"reka":this.ai=new An(e);break;case"webllm":this.ai=new bn(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()}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 it=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:Qe.SERVER,attributes:{[ge.DB_SYSTEM]:this.name,[ge.DB_OPERATION_NAME]:"upsert",[ge.DB_TABLE]:e.table,[ge.DB_NAMESPACE]:e.namespace,[ge.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:Qe.SERVER,attributes:{[ge.DB_SYSTEM]:this.name,[ge.DB_OPERATION_NAME]:"upsert",[ge.DB_TABLE]:e[0].table,[ge.DB_NAMESPACE]:e[0].namespace,[ge.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:Qe.SERVER,attributes:{[ge.DB_SYSTEM]:this.name,[ge.DB_OPERATION_NAME]:"upsert",[ge.DB_TABLE]:e.table,[ge.DB_NAMESPACE]:e.namespace,[ge.DB_OPERATION_NAME]:"query"}},async t=>{try{return await this._query(e,{span:t})}finally{t.end()}}):await this._query(e)}};var yi="https://api.cloudflare.com/client/v4/accounts/",Cn=class extends it{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 ze({url:new URL(`${this.accountId}/vectorize/indexes/${e.table}/upsert`,yi),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:o})=>o).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,o=await ze({url:new URL(`${this.accountId}/vectorize/indexes/${r}/upsert`,yi),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(o.errors)throw new Error(`Cloudflare batch upsert failed: ${o.errors.map(({message:i})=>i).join(", ")}`);return{ids:o.result.ids}};query=async(e,t)=>{let n=await ze({url:new URL(`${this.accountId}/vectorize/indexes/${e.table}/query`,yi),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:o})=>o).join(", ")}`);return{matches:n.result.matches.map(({id:o,score:i,values:a,metadata:l})=>({id:o,score:i,values:a,metadata:l}))}}};var Ft=class extends it{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 o of e){let i=await this.upsert(o,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(([o,i])=>{if(e.values&&i.values){let a=Sp(e.values,i.values);r.push({id:o,score:a,metadata:i.metadata})}}),r.sort((o,i)=>o.score-i.score),e.limit&&(r.length=e.limit),{matches:r}};getDB=()=>structuredClone(this.state);setDB=e=>{this.state=structuredClone(e)};clearDB=()=>{this.state={}}},Sp=(s,e)=>{if(s.length!==e.length)throw new Error("Vectors must be of the same length.");let t=0,n=0,r=0,o=!0,i=!0,a=new Float64Array(s),l=new Float64Array(e);for(let d=0;d<a.length;d++)t+=a[d]*l[d],n+=a[d]*a[d],r+=l[d]*l[d],a[d]!==0&&(o=!1),l[d]!==0&&(i=!1);if(o||i)return 1;let u=Math.sqrt(n),c=Math.sqrt(r);return 1-t/(u*c)};var kp=s=>({namespace:s.namespace,topK:s.limit||10,filter:{},includeValues:!0,includeMetadata:!0,vector:s.values??[],id:s.id}),Tn=class extends it{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 ze({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/vectors/upsert",fetch:this.fetch,span:n?.span},e.map(({id:r,values:o=[],metadata:i})=>({id:r,values:o,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 ze({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/query",fetch:this.fetch,span:t?.span},kp(e))).matches.map(({id:o,score:i,values:a,metadata:l})=>({id:o,score:i,metadata:l,values:a}))}}};var wn=class extends it{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 ze({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:o})=>o).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??{}})),o=await ze({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/v1/batch/objects",fetch:this.fetch,span:n?.span},{objects:r});if(o?.some(({result:i})=>i?.errors))throw new Error(`Weaviate batch upsert failed: ${o.map(({result:i})=>i?.errors?.error.map(({message:a})=>a).join(", ")).join(", ")}`);return{ids:o.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: {
178
+ `)};function ko(s){let e=[];for(let t of s??[])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 hr=()=>({model:"gpt-4o",embedModel:"text-embedding-ada-002",temperature:.7,topP:1,stream:!0}),El=()=>({...hr(),model:"gpt-4o",temperature:.5}),Pl=()=>({...hr(),model:"gpt-4o",temperature:.9}),gr=class extends Fe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:o=[],models:i,responsesReqUpdater:a,supportFor:l={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 hn(t,n?.streamingUsage??!0,a),c=i?.map(p=>{let d=p,m=d?.config;if(!m)return p;let g={};m.maxTokens!==void 0&&(g.maxTokens=m.maxTokens),m.temperature!==void 0&&(g.temperature=m.temperature),m.topP!==void 0&&(g.topP=m.topP),m.presencePenalty!==void 0&&(g.presencePenalty=m.presencePenalty),m.frequencyPenalty!==void 0&&(g.frequencyPenalty=m.frequencyPenalty);let h=m.stopSequences??m.stop;h!==void 0&&(g.stopSequences=h),m.n!==void 0&&(g.n=m.n),m.stream!==void 0&&(g.stream=m.stream);let f={...d};Object.keys(g).length>0&&(f.modelConfig={...d.modelConfig??{},...g});let y=m?.thinking?.thinkingTokenBudget;if(typeof y=="number"){let x=[["minimal",200],["low",800],["medium",5e3],["high",1e4],["highest",24500]],A="minimal",T=Number.POSITIVE_INFINITY;for(let[b,R]of x){let O=Math.abs(y-R);O<T&&(T=O,A=b)}f.thinkingTokenBudget=A}return m?.thinking?.includeThoughts!==void 0&&(f.showThoughts=!!m.thinking.includeThoughts),f});super(u,{name:"OpenAI",apiURL:r||"https://api.openai.com/v1",headers:async()=>({Authorization:`Bearer ${e}`}),modelInfo:o,defaults:{model:t.model??"gpt-4o",embedModel:t.embedModel??"text-embedding-ada-002"},options:n,supportFor:l,models:c??i})}},fn=class extends gr{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("OpenAI API key not set");o=[...io,...o??[]];let i=a=>{let l=rt({model:a,modelInfo:o,models:r});return{functions:!0,streaming:!0,hasThinkingBudget:l?.supported?.thinkingBudget??!1,hasShowThoughts:l?.supported?.showThoughts??!1,structuredOutputs:l?.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:{...hr(),...t},options:n,modelInfo:o,models:r,supportFor:i})}};var mi=()=>structuredClone({model:"openrouter/auto",...Ce()}),xn=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o,referer:i,title:a}){if(!e||e==="")throw new Error("OpenRouter API key not set");let l={...mi(),...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},c=o??[];super({apiKey:e,config:l,options:n,apiURL:"https://openrouter.ai/api/v1",modelInfo:c,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 Oo(s,e,t={}){if(typeof s=="string")return[{type:"text",text:s}];if(!Array.isArray(s))return[{type:"text",text:String(s)}];let n=e.getFeatures(),r=[];for(let o of s)try{switch(o.type){case"text":r.push({type:"text",text:o.text});break;case"image":if(n.media.images.supported)o.altText?r.push({type:"text",text:`[Image: ${o.altText}]`}):r.push({type:"text",text:"[Image content]"});else if(o.altText)r.push({type:"text",text:o.altText});else if(t.imageToText)try{let i=await t.imageToText(o.image);r.push({type:"text",text:i})}catch(i){throw new mt(i,"image","vision analysis")}else switch(t.fallbackBehavior){case"error":throw new st("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)o.transcription?r.push({type:"text",text:o.transcription}):r.push({type:"text",text:"[Audio content]"});else if(o.transcription)r.push({type:"text",text:o.transcription});else if(t.audioToText)try{let i=await t.audioToText(o.data,o.format);r.push({type:"text",text:i})}catch(i){throw new mt(i,"audio","transcription")}else switch(t.fallbackBehavior){case"error":throw new st("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)o.extractedText?r.push({type:"text",text:o.extractedText}):r.push({type:"text",text:`[File: ${o.filename}]`});else if(o.extractedText)r.push({type:"text",text:o.extractedText});else if(t.fileToText)try{let i=await t.fileToText(o.data,o.mimeType);r.push({type:"text",text:i})}catch(i){throw new mt(i,"file","text extraction")}else switch(t.fallbackBehavior){case"error":throw new st("Files",e.getName(),!1);case"skip":continue;default:r.push({type:"text",text:`[File: ${o.filename} - content not accessible by this provider]`})}break;case"url":if(n.media.urls.supported)o.cachedContent?r.push({type:"text",text:o.cachedContent}):r.push({type:"text",text:`[Link: ${o.url}${o.title?` - ${o.title}`:""}]`});else if(o.cachedContent)r.push({type:"text",text:o.cachedContent});else if(t.urlToText)try{let i=await t.urlToText(o.url);r.push({type:"text",text:i})}catch(i){throw new mt(i,"url","content fetching")}else switch(t.fallbackBehavior){case"error":throw new st("URLs",e.getName(),!1);case"skip":continue;case"degrade":r.push({type:"text",text:`[Link: ${o.url}${o.title?` - ${o.title}`:""}]`})}break;default:typeof o=="object"&&o.text?r.push({type:"text",text:o.text}):r.push({type:"text",text:String(o)})}}catch(i){throw i instanceof st||i instanceof mt?i:new mt(i,o.type||"unknown","content processing")}return r}function Fl(s){let e=!1,t=!1,n=!1,r=!1;for(let o of s)if(o.role==="user"&&Array.isArray(o.content))for(let i of o.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 fr=(n=>(n.RekaCore="reka-core",n.RekaFlash="reka-flash",n.RekaEdge="reka-edge",n))(fr||{});var Mo=[{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 xr=()=>structuredClone({model:"reka-core",...Ce()}),$l=()=>structuredClone({...xr(),model:"reka-core"}),Nl=()=>structuredClone({model:"reka-core",...De()}),Ll=()=>({...xr(),model:"reka-flash"}),gi=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=vp(e),o=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,...o?{frequency_penalty:o}:{},...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 l=_l(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:l}}),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 l=_l(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:l}})}}},_l=s=>{switch(s){case"stop":return"stop";case"context":return"length";case"length":return"length"}};function vp(s){return s.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 An=class extends Fe{constructor({apiKey:e,config:t,options:n,apiURL:r,modelInfo:o=Mo,models:i}){if(!e||e==="")throw new Error("Reka API key not set");let a={...xr(),...t},l=new gi(a);super(l,{name:"Reka",apiURL:r||"https://api.reka.ai/v1/chat",headers:async()=>({"X-Api-Key":e}),modelInfo:o,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 Eo=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(o){if(o instanceof st&&t.fallbackProviders?.length)return await this.tryFallbackProviders(e,t.fallbackProviders,t);throw o}}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},o=[];for(let i of e.chatPrompt)if(i.role==="user"&&Array.isArray(i.content)){let a=await Oo(i.content,t,r);a.every(u=>u.type==="text")&&a.length===1?o.push({...i,content:a[0].text}):o.push({...i,content:a.map(u=>({type:"text",text:u.text}))})}else o.push(i);return{...e,chatPrompt:o}}async selectProviderWithDegradation(e,t){let n=Gt(e),r=[],o=[],i=[];try{let a=mo(e,this.providers,{requireExactMatch:t.requireExactMatch??this.config.capability.requireExactMatch,allowDegradation:t.allowDegradation??this.config.capability.allowDegradation}),l=a.getFeatures();return n.hasImages&&!l.media.images.supported&&(o.push("Images will be converted to text descriptions"),r.push("Image-to-text conversion")),n.hasAudio&&!l.media.audio.supported&&(o.push("Audio will be transcribed to text"),r.push("Audio-to-text transcription")),n.hasFiles&&!l.media.files.supported&&(o.push("File content will be extracted to text"),r.push("File-to-text extraction")),n.hasUrls&&!l.media.urls.supported&&(o.push("URL content will be pre-fetched"),r.push("URL content fetching")),n.requiresStreaming&&!l.streaming&&i.push("Streaming not supported - will use non-streaming mode"),n.requiresCaching&&!l.caching.supported&&i.push("Content caching not supported"),{provider:a,processingApplied:r,degradations:o,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 o={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:o}}catch{}throw new Error("All fallback providers failed")}async getRoutingRecommendation(e){return await this.selectProviderWithDegradation(e,{})}async validateRequest(e){let t=Gt(e),n=[],r=[];try{let o=await this.selectProviderWithDegradation(e,{});return o.degradations.length>0&&(n.push(...o.degradations),r.push("Consider using a provider that natively supports all media types")),o.warnings.length>0&&n.push(...o.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||o.degradations.length>0,issues:n,recommendations:r}}catch(o){return{canHandle:!1,issues:[`Cannot route request: ${o instanceof Error?o.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 Ar=(x=>(x.KimiK25="moonshotai/Kimi-K2.5",x.KimiK2Instruct0905="moonshotai/Kimi-K2-Instruct-0905",x.KimiK2Thinking="moonshotai/Kimi-K2-Thinking",x.DeepSeekV31="deepseek-ai/DeepSeek-V3.1",x.DeepSeekR1="deepseek-ai/DeepSeek-R1",x.GPTOSS120B="openai/gpt-oss-120b",x.GPTOSS20B="openai/gpt-oss-20b",x.Qwen35_397B="Qwen/Qwen3.5-397B-A17B",x.Qwen3CoderNext="Qwen/Qwen3-Coder-Next-FP8",x.Qwen3Coder480B="Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",x.Qwen3_235BInstruct2507="Qwen/Qwen3-235B-A22B-Instruct-2507-tput",x.Qwen3_235BThinking2507="Qwen/Qwen3-235B-A22B-Thinking-2507",x.Qwen3Next80BInstruct="Qwen/Qwen3-Next-80B-A3B-Instruct",x.Qwen3Next80BThinking="Qwen/Qwen3-Next-80B-A3B-Thinking",x.GLM5="zai-org/GLM-5",x.GLM47="zai-org/GLM-4.7",x.Llama4Maverick="meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",x.Llama33_70B="meta-llama/Llama-3.3-70B-Instruct-Turbo",x))(Ar||{});var Po=[{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 hi=()=>structuredClone({model:"meta-llama/Llama-3.3-70B-Instruct-Turbo",...Ce()}),yn=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("Together API key not set");let i={...hi(),...t};o=[...Po,...o??[]];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:o,models:r,supportFor:a}),super.setName("Together")}};var yr=(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))(yr||{});var Fo=[{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 xi=()=>structuredClone({model:"Llama-3.2-3B-Instruct-q4f32_1-MLC",...Ce()}),Dl=()=>structuredClone({model:"Llama-3.2-3B-Instruct-q4f32_1-MLC",...De()}),fi=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 l="";typeof a.content=="string"?l=a.content:Array.isArray(a.content)&&(l=a.content.filter(c=>c.type==="text").map(c=>c.text).join(`
179
+ `));let u={role:a.role,content:l};return a.role==="assistant"&&a.functionCalls?.length?{...u,tool_calls:a.functionCalls.map(c=>({id:c.id,type:"function",function:{name:c.function.name,arguments:typeof c.function.params=="string"?c.function.params:JSON.stringify(c.function.params||{})}}))}:u}),r=e.functions?.map(a=>({type:"function",function:{name:a.name,description:a.description,parameters:a.parameters||{type:"object",properties:{}}}})),o={name:"/chat/completions",localCall:async(a,l)=>{try{let u=await this.engine.chat.completions.create({...a,stream:l||!1});return l?new ReadableStream({async start(c){try{for await(let p of u)c.enqueue(p);c.close()}catch(p){c.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[o,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 o="stop";switch(n.finish_reason){case"stop":o="stop";break;case"length":o="length";break;case"tool_calls":o="function_call";break;case"content_filter":o="content_filter";break;default:o="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:o}}),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 l of r.delta.tool_calls){let u=n.toolCalls[l.index];u?l.function?.arguments&&(u.function.arguments=(u.function?.arguments||"")+l.function.arguments):n.toolCalls[l.index]={id:l.id,type:l.type,function:{name:l.function?.name,arguments:l.function?.arguments||""}}}}e.usage&&(this.tokensUsed={promptTokens:e.usage.prompt_tokens,completionTokens:e.usage.completion_tokens,totalTokens:e.usage.total_tokens});let o;if(r.finish_reason)switch(r.finish_reason){case"stop":o="stop";break;case"length":o="length";break;case"tool_calls":o="function_call";break;case"content_filter":o="content_filter";break;default:o="stop";break}let i=n.toolCalls?.map(l=>({id:l.id||"",type:"function",function:{name:l.function?.name||"",params:l.function?.arguments||""}}));return{results:[{index:0,id:e.id,content:n.content||"",functionCalls:i,finishReason:o}],remoteId:e.id}};createEmbedResp(e){throw new Error("WebLLM does not support embeddings")}},bn=class extends Fe{constructor({engine:e,config:t,options:n,models:r}){if(!e)throw new Error("WebLLM engine instance is required");let o={...xi(),...t},i=new fi(o,e);super(i,{name:"WebLLM",apiURL:void 0,headers:async()=>({}),modelInfo:Fo,defaults:{model:o.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 br=(r=>(r.Grok3="grok-3",r.Grok3Mini="grok-3-mini",r.Grok3Fast="grok-3-fast",r.Grok3MiniFast="grok-3-mini-fast",r))(br||{}),Ai=(e=>(e.GrokEmbedSmall="grok-embed-small",e))(Ai||{});var _o=[{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 $o=()=>structuredClone({model:"grok-3-mini",...Ce()}),Gl=()=>structuredClone({...$o(),model:"grok-3"}),In=class extends Ee{constructor({apiKey:e,config:t,options:n,models:r,modelInfo:o}){if(!e||e==="")throw new Error("Grok API key not set");let i={...$o(),...t};o=[..._o,...o??[]];let a=u=>{let c=rt({model:u,modelInfo:o,models:r});return{functions:!0,streaming:!0,hasThinkingBudget:c?.supported?.thinkingBudget??!1,hasShowThoughts:c?.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}},l=u=>{if(n?.searchParameters){let c=n.searchParameters;return{...u,search_parameters:{mode:c.mode,return_citations:c.returnCitations,from_date:c.fromDate,to_date:c.toDate,max_search_results:c.maxSearchResults,sources:c.sources?.map(p=>({type:p.type,country:p.country,excluded_websites:p.excludedWebsites,allowed_websites:p.allowedWebsites,safe_search:p.safeSearch,x_handles:p.xHandles,links:p.links}))}}}return u};super({apiKey:e,config:i,options:n,apiURL:"https://api.x.ai/v1",modelInfo:o,models:r,supportFor:a,chatReqUpdater:l}),super.setName("Grok")}};function Ul(s){return Ir.create(s)}var Ir=class s{ai;static create(e){return new s(e)}constructor(e){switch(e.name){case"openai":this.ai=new on(e);break;case"openai-responses":this.ai=new fn(e);break;case"azure-openai":this.ai=new sn(e);break;case"grok":this.ai=new In(e);break;case"huggingface":this.ai=new dn(e);break;case"groq":this.ai=new pn(e);break;case"together":this.ai=new yn(e);break;case"openrouter":this.ai=new xn(e);break;case"cohere":this.ai=new an(e);break;case"google-gemini":this.ai=new un(e);break;case"anthropic":this.ai=new en(e);break;case"mistral":this.ai=new mn(e);break;case"deepseek":this.ai=new ln(e);break;case"ollama":this.ai=new gn(e);break;case"reka":this.ai=new An(e);break;case"webllm":this.ai=new bn(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()}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 it=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:Qe.SERVER,attributes:{[ge.DB_SYSTEM]:this.name,[ge.DB_OPERATION_NAME]:"upsert",[ge.DB_TABLE]:e.table,[ge.DB_NAMESPACE]:e.namespace,[ge.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:Qe.SERVER,attributes:{[ge.DB_SYSTEM]:this.name,[ge.DB_OPERATION_NAME]:"upsert",[ge.DB_TABLE]:e[0].table,[ge.DB_NAMESPACE]:e[0].namespace,[ge.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:Qe.SERVER,attributes:{[ge.DB_SYSTEM]:this.name,[ge.DB_OPERATION_NAME]:"upsert",[ge.DB_TABLE]:e.table,[ge.DB_NAMESPACE]:e.namespace,[ge.DB_OPERATION_NAME]:"query"}},async t=>{try{return await this._query(e,{span:t})}finally{t.end()}}):await this._query(e)}};var yi="https://api.cloudflare.com/client/v4/accounts/",Cn=class extends it{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 ze({url:new URL(`${this.accountId}/vectorize/indexes/${e.table}/upsert`,yi),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:o})=>o).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,o=await ze({url:new URL(`${this.accountId}/vectorize/indexes/${r}/upsert`,yi),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(o.errors)throw new Error(`Cloudflare batch upsert failed: ${o.errors.map(({message:i})=>i).join(", ")}`);return{ids:o.result.ids}};query=async(e,t)=>{let n=await ze({url:new URL(`${this.accountId}/vectorize/indexes/${e.table}/query`,yi),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:o})=>o).join(", ")}`);return{matches:n.result.matches.map(({id:o,score:i,values:a,metadata:l})=>({id:o,score:i,values:a,metadata:l}))}}};var Ft=class extends it{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 o of e){let i=await this.upsert(o,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(([o,i])=>{if(e.values&&i.values){let a=Sp(e.values,i.values);r.push({id:o,score:a,metadata:i.metadata})}}),r.sort((o,i)=>o.score-i.score),e.limit&&(r.length=e.limit),{matches:r}};getDB=()=>structuredClone(this.state);setDB=e=>{this.state=structuredClone(e)};clearDB=()=>{this.state={}}},Sp=(s,e)=>{if(s.length!==e.length)throw new Error("Vectors must be of the same length.");let t=0,n=0,r=0,o=!0,i=!0,a=new Float64Array(s),l=new Float64Array(e);for(let d=0;d<a.length;d++)t+=a[d]*l[d],n+=a[d]*a[d],r+=l[d]*l[d],a[d]!==0&&(o=!1),l[d]!==0&&(i=!1);if(o||i)return 1;let u=Math.sqrt(n),c=Math.sqrt(r);return 1-t/(u*c)};var kp=s=>({namespace:s.namespace,topK:s.limit||10,filter:{},includeValues:!0,includeMetadata:!0,vector:s.values??[],id:s.id}),Tn=class extends it{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 ze({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/vectors/upsert",fetch:this.fetch,span:n?.span},e.map(({id:r,values:o=[],metadata:i})=>({id:r,values:o,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 ze({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/query",fetch:this.fetch,span:t?.span},kp(e))).matches.map(({id:o,score:i,values:a,metadata:l})=>({id:o,score:i,metadata:l,values:a}))}}};var wn=class extends it{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 ze({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:o})=>o).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??{}})),o=await ze({url:this.apiURL,headers:{Authorization:`Bearer ${this.apiKey}`},name:"/v1/batch/objects",fetch:this.fetch,span:n?.span},{objects:r});if(o?.some(({result:i})=>i?.errors))throw new Error(`Weaviate batch upsert failed: ${o.map(({result:i})=>i?.errors?.error.map(({message:a})=>a).join(", ")).join(", ")}`);return{ids:o.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: {
180
180
  vector: [${e.values.join(",")}],
181
181
  }`;else if(e.text)n=`nearText: {
182
182
  concepts: ['${e.text}'],
@@ -200,21 +200,21 @@ ${u}`:`Assistant: ${l.content}`}default:throw new Error("Unknown role")}}).join(
200
200
 
201
201
  `,o+=u.length)}else r=`${i}
202
202
 
203
- `,o=l}),(o>t||n.length===0)&&n.push(r.trim()),n},Mp=(s,e=.1)=>{let t=[...s].sort((r,o)=>r.score-o.score),n=Math.ceil(t.length*e);return t.slice(0,n)};var Cr=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,...o})=>({index:r,value:structuredClone(o)})),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:o,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:o})}]});return}let l=a.chat.find(u=>u.index===i);if(!l){a.chat.push({index:i,value:structuredClone({content:e,name:t,functionCalls:n,thought:r,thoughtBlocks:o})});return}if(typeof e=="string"&&e.trim()!==""&&(l.value.content=e),typeof t=="string"&&t.trim()!==""&&(l.value.name=t),Array.isArray(n)&&n.length>0&&(l.value.functionCalls=n),typeof r=="string"&&r.trim()!==""){let u=l.value.thought;l.value.thought=typeof u=="string"?u+r:r}if(Array.isArray(o)&&o.length>0){let u=l.value.thoughtBlocks??[];for(let c of o){let p=u.length>0?u[u.length-1]:void 0;!c.signature&&c.data?p&&!p.signature?(p.data=(p.data??"")+c.data,c.encrypted&&(p.encrypted=!0)):u.push(structuredClone(c)):c.signature?p&&!p.signature?(p.data=(p.data??"")+c.data,p.signature=c.signature,c.encrypted&&(p.encrypted=!0)):u.push(structuredClone(c)):u.length===0&&u.push(structuredClone(c))}l.value.thoughtBlocks=u,u.length>0&&(l.value.thought=u.map(c=>c.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,o)=>(r.tags?.includes(e)&&n.push(o),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 o;n==="function"?o=r.filter(i=>i.index===e).map(i=>i.value):o=r.find(i=>i.index===e)?.value,Array.isArray(o)&&o.length>0?t.push(...o.map(i=>({...i,role:n}))):typeof o=="object"&&o!==null&&t.push({...o,role:n})}return t}getLast(){return this.data.at(-1)}reset(){this.data=[],this.seenTags=new Set}},Rn=class{memories=new Map;defaultMemory;constructor(){this.defaultMemory=new Cr}getMemory(e){return e?(this.memories.has(e)||this.memories.set(e,new Cr),this.memories.get(e)):this.defaultMemory}addRequest(e,t){for(let n of e)Zt(n);this.getMemory(t).addRequest(e,0)}addResponse(e,t){so(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 Cr):this.defaultMemory.reset()}};function Ot(s,e){if(!s&&!e)return;if(!s)return e;if(!e||s===e||s.aborted)return s;if(e.aborted)return e;if(typeof AbortSignal.any=="function")return AbortSignal.any([s,e]);let t=new AbortController,n=()=>{t.abort(s.aborted?s.reason:e.reason),r()},r=()=>{s.removeEventListener("abort",n),e.removeEventListener("abort",n)};return s.addEventListener("abort",n,{once:!0}),e.addEventListener("abort",n,{once:!0}),t.signal}var bt=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()}},vn=async(s,e)=>{for(let t of s){let{fn:n,message:r}=t,o=await n(e);if(o!==void 0){if(typeof o=="string")throw new bt({message:o});if(!o)throw r?new bt({message:r}):new Error("Assertion Failed: No message provided for assertion")}}},Ii=async(s,e,t,n=!1)=>{if(!e.currField||e.s===-1||!s||s.length===0)return;let r=s.filter(i=>i.fieldName===e.currField?.name);if(r.length===0)return;let o=t.substring(e.s);for(let i of r){let{message:a,fn:l}=i,u=await l(o,n);if(u!==void 0){if(typeof u=="string")throw new bt({message:u});if(!u&&a)throw new bt({message:a})}}};var Ci={enabled:!0,enabledCategories:["generation","streaming","functions","errors","performance"],maxLabelLength:100,samplingRate:1},Tr,Ti=s=>{if(Tr)return Tr;let e=s??pe.meter;if(e)return Tr=Ep(e),Tr};var jl=()=>{let s=[];return pe.meter||s.push("Global meter not initialized"),!Tr&&pe.meter&&s.push("Metrics instruments not created despite available meter"),{healthy:s.length===0,issues:s}},Ep=s=>({generationLatencyHistogram:s.createHistogram("ax_gen_generation_duration_ms",{description:"End-to-end duration of AxGen generation requests",unit:"ms"}),generationRequestsCounter:s.createCounter("ax_gen_generation_requests_total",{description:"Total number of AxGen generation requests"}),generationErrorsCounter:s.createCounter("ax_gen_generation_errors_total",{description:"Total number of failed AxGen generations"}),multiStepGenerationsCounter:s.createCounter("ax_gen_multistep_generations_total",{description:"Total number of generations that required multiple steps"}),stepsPerGenerationHistogram:s.createHistogram("ax_gen_steps_per_generation",{description:"Number of steps taken per generation"}),maxStepsReachedCounter:s.createCounter("ax_gen_max_steps_reached_total",{description:"Total number of generations that hit max steps limit"}),validationErrorsCounter:s.createCounter("ax_gen_validation_errors_total",{description:"Total number of validation errors encountered"}),assertionErrorsCounter:s.createCounter("ax_gen_assertion_errors_total",{description:"Total number of assertion errors encountered"}),errorCorrectionAttemptsHistogram:s.createHistogram("ax_gen_error_correction_attempts",{description:"Number of error correction attempts per generation"}),errorCorrectionSuccessCounter:s.createCounter("ax_gen_error_correction_success_total",{description:"Total number of successful error corrections"}),errorCorrectionFailureCounter:s.createCounter("ax_gen_error_correction_failure_total",{description:"Total number of failed error corrections"}),maxRetriesReachedCounter:s.createCounter("ax_gen_max_retries_reached_total",{description:"Total number of generations that hit max retries limit"}),functionsEnabledGenerationsCounter:s.createCounter("ax_gen_functions_enabled_generations_total",{description:"Total number of generations with functions enabled"}),functionCallStepsCounter:s.createCounter("ax_gen_function_call_steps_total",{description:"Total number of steps that included function calls"}),functionsExecutedPerGenerationHistogram:s.createHistogram("ax_gen_functions_executed_per_generation",{description:"Number of unique functions executed per generation"}),functionErrorCorrectionCounter:s.createCounter("ax_gen_function_error_correction_total",{description:"Total number of function-related error corrections"}),fieldProcessorsExecutedCounter:s.createCounter("ax_gen_field_processors_executed_total",{description:"Total number of field processors executed"}),streamingFieldProcessorsExecutedCounter:s.createCounter("ax_gen_streaming_field_processors_executed_total",{description:"Total number of streaming field processors executed"}),streamingGenerationsCounter:s.createCounter("ax_gen_streaming_generations_total",{description:"Total number of streaming generations"}),streamingDeltasEmittedCounter:s.createCounter("ax_gen_streaming_deltas_emitted_total",{description:"Total number of streaming deltas emitted"}),streamingFinalizationLatencyHistogram:s.createHistogram("ax_gen_streaming_finalization_duration_ms",{description:"Duration of streaming response finalization",unit:"ms"}),samplesGeneratedHistogram:s.createHistogram("ax_gen_samples_generated",{description:"Number of samples generated per request"}),resultPickerUsageCounter:s.createCounter("ax_gen_result_picker_usage_total",{description:"Total number of times result picker was used"}),resultPickerLatencyHistogram:s.createHistogram("ax_gen_result_picker_duration_ms",{description:"Duration of result picker execution",unit:"ms"}),inputFieldsGauge:s.createGauge("ax_gen_input_fields",{description:"Number of input fields in signature"}),outputFieldsGauge:s.createGauge("ax_gen_output_fields",{description:"Number of output fields in signature"}),examplesUsedGauge:s.createGauge("ax_gen_examples_used",{description:"Number of examples used in generation"}),demosUsedGauge:s.createGauge("ax_gen_demos_used",{description:"Number of demos used in generation"}),promptRenderLatencyHistogram:s.createHistogram("ax_gen_prompt_render_duration_ms",{description:"Duration of prompt template rendering",unit:"ms"}),extractionLatencyHistogram:s.createHistogram("ax_gen_extraction_duration_ms",{description:"Duration of value extraction from responses",unit:"ms"}),assertionLatencyHistogram:s.createHistogram("ax_gen_assertion_duration_ms",{description:"Duration of assertion checking",unit:"ms"}),stateCreationLatencyHistogram:s.createHistogram("ax_gen_state_creation_duration_ms",{description:"Duration of state creation for multiple samples",unit:"ms"}),memoryUpdateLatencyHistogram:s.createHistogram("ax_gen_memory_update_duration_ms",{description:"Duration of memory updates during generation",unit:"ms"})}),Do=Ci,ql=s=>{Do={...Do,...s}},zl=()=>({...Do}),ft=s=>{let e={};for(let[t,n]of Object.entries(s))if(n!=null){let r=String(n),o=Do.maxLabelLength;e[t]=r.length>o?r.substring(0,o):r}return e};var Hl=(s,e,t,n,r,o,i)=>{try{let a=ft({success:t.toString(),...n?{signature:n}:{},...r?{ai_service:r}:{},...o?{model:o}:{},...i});s.generationLatencyHistogram&&s.generationLatencyHistogram.record(e,a),s.generationRequestsCounter&&s.generationRequestsCounter.add(1,a),!t&&s.generationErrorsCounter&&s.generationErrorsCounter.add(1,a)}catch(a){console.warn("Failed to record generation metric:",a)}},Go=(s,e,t,n,r)=>{try{let o=ft({...n?{signature:n}:{},...r});e>1&&s.multiStepGenerationsCounter&&s.multiStepGenerationsCounter.add(1,o),s.stepsPerGenerationHistogram&&s.stepsPerGenerationHistogram.record(e,o),e>=t&&s.maxStepsReachedCounter&&s.maxStepsReachedCounter.add(1,o)}catch(o){console.warn("Failed to record multi-step metric:",o)}},wi=(s,e,t,n)=>{try{let r=ft({error_type:e,...t?{signature:t}:{},...n});e==="validation"&&s.validationErrorsCounter&&s.validationErrorsCounter.add(1,r),e==="assertion"&&s.assertionErrorsCounter&&s.assertionErrorsCounter.add(1,r)}catch(r){console.warn("Failed to record validation error metric:",r)}},Kl=(s,e,t)=>{try{let n=ft({error_type:"refusal",...e?{signature:e}:{},...t});s.validationErrorsCounter&&s.validationErrorsCounter.add(1,n)}catch(n){console.warn("Failed to record refusal error metric:",n)}},Ri=(s,e,t,n,r,o)=>{try{let i=ft({success:t.toString(),...r?{signature:r}:{},...o});s.errorCorrectionAttemptsHistogram&&s.errorCorrectionAttemptsHistogram.record(e,i),t&&s.errorCorrectionSuccessCounter&&s.errorCorrectionSuccessCounter.add(1,i),t||(s.errorCorrectionFailureCounter&&s.errorCorrectionFailureCounter.add(1,i),e>=n&&s.maxRetriesReachedCounter&&s.maxRetriesReachedCounter.add(1,i))}catch(i){console.warn("Failed to record error correction metric:",i)}},Wl=(s,e,t,n,r=!1,o,i)=>{try{let a=ft({functions_enabled:e.toString(),had_function_calls:n.toString(),...o?{signature:o}:{},...i});e&&s.functionsEnabledGenerationsCounter&&s.functionsEnabledGenerationsCounter.add(1,a),n&&s.functionCallStepsCounter&&s.functionCallStepsCounter.add(1,a),t>0&&s.functionsExecutedPerGenerationHistogram&&s.functionsExecutedPerGenerationHistogram.record(t,a),r&&s.functionErrorCorrectionCounter&&s.functionErrorCorrectionCounter.add(1,a)}catch(a){console.warn("Failed to record function calling metric:",a)}},Vl=(s,e,t,n,r)=>{try{let o=ft({...n?{signature:n}:{},...r});e>0&&s.fieldProcessorsExecutedCounter&&s.fieldProcessorsExecutedCounter.add(e,o),t>0&&s.streamingFieldProcessorsExecutedCounter&&s.streamingFieldProcessorsExecutedCounter.add(t,o)}catch(o){console.warn("Failed to record field processing metric:",o)}},Jl=(s,e,t,n,r,o)=>{try{let i=ft({is_streaming:e.toString(),...r?{signature:r}:{},...o});e&&s.streamingGenerationsCounter&&s.streamingGenerationsCounter.add(1,i),t>0&&s.streamingDeltasEmittedCounter&&s.streamingDeltasEmittedCounter.add(t,i),n&&s.streamingFinalizationLatencyHistogram&&s.streamingFinalizationLatencyHistogram.record(n,i)}catch(i){console.warn("Failed to record streaming metric:",i)}},Yl=(s,e,t,n,r,o)=>{try{let i=ft({result_picker_used:t.toString(),...r?{signature:r}:{},...o});s.samplesGeneratedHistogram&&s.samplesGeneratedHistogram.record(e,i),t&&s.resultPickerUsageCounter&&s.resultPickerUsageCounter.add(1,i),n&&s.resultPickerLatencyHistogram&&s.resultPickerLatencyHistogram.record(n,i)}catch(i){console.warn("Failed to record samples metric:",i)}},Ql=(s,e,t,n,r,o,i)=>{try{let a=ft({...o?{signature:o}:{},...i});s.inputFieldsGauge&&s.inputFieldsGauge.record(e,a),s.outputFieldsGauge&&s.outputFieldsGauge.record(t,a),s.examplesUsedGauge&&s.examplesUsedGauge.record(n,a),s.demosUsedGauge&&s.demosUsedGauge.record(r,a)}catch(a){console.warn("Failed to record signature complexity metrics:",a)}},Uo=(s,e,t,n,r)=>{try{let o=ft({metric_type:e,...n?{signature:n}:{},...r});switch(e){case"prompt_render":s.promptRenderLatencyHistogram&&s.promptRenderLatencyHistogram.record(t,o);break;case"extraction":s.extractionLatencyHistogram&&s.extractionLatencyHistogram.record(t,o);break;case"assertion":s.assertionLatencyHistogram&&s.assertionLatencyHistogram.record(t,o);break;case"state_creation":s.stateCreationLatencyHistogram&&s.stateCreationLatencyHistogram.record(t,o);break;case"memory_update":s.memoryUpdateLatencyHistogram&&s.memoryUpdateLatencyHistogram.record(t,o);break}}catch(o){console.warn("Failed to record performance metric:",o)}};var Sn=s=>{let e=(()=>{switch(s?.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 s?.isArray?`array of ${e}s`:e},Be=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()}},Xl=s=>{let t=s.map(n=>`'${n.title}' (${Sn(n.type)})`).join(", ");return new Be(`Required field not found: ${t}. Add a line starting with the exact label followed by a colon (e.g., "${s[0]?.title}:") and then provide a valid ${Sn(s[0]?.type)} value. Keep the output concise and avoid unrelated text.`)},Bo=s=>new Be(`Expected (Required) field not found: '${s.title}'. Begin a new section with "${s.title}:" and then provide a valid ${Sn(s.type)} value directly after.`);var jo=s=>new Be(`Required field is missing: '${s.title}'. After the "${s.title}:" label, provide a non-empty ${Sn(s.type)}. Do not use null, undefined, or leave it blank.`),Zl=(s,e)=>new Be(`Invalid JSON: ${e} in field '${s.title}'. Return only valid JSON. Prefer a fenced code block containing a single JSON object or array with no trailing text.`),eu=(s,e)=>new Be(`Invalid Array: ${e} for '${s.title}'. Provide a JSON array of ${Sn(s.type)} items (e.g., [ ... ]). Markdown lists are also accepted if each item is on its own line starting with a hyphen.`),tu=(s,e,t)=>new Be(`Field '${s.title}' has an invalid value '${e}': ${t}. Provide a ${Sn(s.type)}. Ensure formatting exactly matches the expected type.`),nu=(s,e,t)=>new Be(`Invalid date for '${s.title}': ${t}. Use the exact format YYYY-MM-DD (e.g., 2024-05-09). You provided: ${e}.`),ru=(s,e,t)=>new Be(`Invalid date/time for '${s.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}.`),vi=(s,e,t)=>new Be(`Invalid URL for '${s.title}': ${t}. Use a valid URL format (e.g., https://example.com). You provided: ${e}.`),kn=(s,e,t,n)=>{let r=`Field '${s.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 Be(r)},Si=(s,e,t,n)=>{let r=`Field '${s.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 Be(r)};var ou=({error:s,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:o,span:i,customLabels:a})=>{let l=s.getFixingInstructions();if(t&&n){let u=l?.map(c=>c.title).join(", ")??"";ja(s,e,u,n)}return r&&wi(r,"validation",o,a),i&&i.addEvent("validation.error",{message:s.toString(),fixing_instructions:l?.map(u=>u.title).join(", ")??""}),l},su=({error:s,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:o,span:i,customLabels:a})=>{let l=s.getFixingInstructions();if(t&&n){let u=l?.map(c=>c.title).join(", ")??"";qa(s,e,u,n)}return r&&wi(r,"assertion",o,a),i&&i.addEvent("assertion.error",{message:s.toString(),fixing_instructions:l?.map(u=>u.title).join(", ")??""}),l},iu=({error:s,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:o,span:i,customLabels:a})=>{t&&n&&za(s,e,n),r&&Kl(r,o,a),i&&i.addEvent("refusal.error",{message:s.toString()})};var _t=Yn(au(),1),pu=Yn(lu(),1),du=Yn(uu(),1),mu=Yn(cu(),1);_t.default.extend(mu.default);_t.default.extend(du.default);_t.default.extend(pu.default);function gu(s,e,t=!1){try{return Pp(e)}catch(n){if(s.isOptional&&!t)return;let r=n.message;throw nu(s,e,r)}}function Pp(s){if(!(0,_t.default)(s,"YYYY-MM-DD",!0).isValid())throw new Error('Invalid date format. Please provide the date in "YYYY-MM-DD" format.');return _t.default.utc(s,"YYYY-MM-DD").startOf("day").toDate()}function hu(s,e,t=!1){try{return Fp(e)}catch(n){if(s.isOptional&&!t)return;let r=n.message;throw ru(s,e,r)}}function Fp(s){let e=/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}(?::\d{2})?) (.+)$/,t=s.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 o=n.includes(":")&&n.split(":").length===3?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm",i=_t.default.tz(n,o,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 fu=s=>(0,_t.default)(s).utc().format("YYYY-MM-DD HH:mm:ss [UTC]");var OA=new Ye,wr=(s,e)=>{let t=s.type??{name:"string",isArray:!1},n=(u,c)=>{switch(u){case"class":return typeof c=="string";case"code":return typeof c=="string";case"string":return typeof c=="string";case"number":return typeof c=="number";case"boolean":return typeof c=="boolean";case"date":return c instanceof Date||typeof c=="string";case"datetime":return c instanceof Date||typeof c=="string";case"json":return typeof c=="object"||typeof c=="string";case"object":return typeof c=="object";default:return!1}},r=u=>!(!u||typeof u!="object"||!("mimeType"in u)||!("data"in u));if(s.type?.name==="image"){let u;if(Array.isArray(e)){for(let c of e)if(!r(c)){u="object ({ mimeType: string; data: string })";break}}else r(e)||(u="object ({ mimeType: string; data: string })");if(u)throw new Error(`Validation failed: Expected '${s.name}' to be type '${u}' instead got '${e}'`);return}let o=u=>!(!u||typeof u!="object"||!("data"in u));if(s.type?.name==="audio"){let u;if(Array.isArray(e)){for(let c of e)if(!o(c)){u="object ({ data: string; format?: string })";break}}else o(e)||(u="object ({ data: string; format?: string })");if(u)throw new Error(`Validation failed: Expected '${s.name}' to be type '${u}' instead got '${e}'`);return}let i=u=>{if(!u||typeof u!="object"||!("mimeType"in u))return!1;let c="data"in u,p="fileUri"in u;return!(!c&&!p||c&&p)};if(s.type?.name==="file"){let u;if(Array.isArray(e)){for(let c of e)if(!i(c)){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 '${s.name}' to be type '${u}' instead got '${e}'`);return}let a=u=>typeof u=="string"?!0:!(!u||typeof u!="object"||!("url"in u));if(s.type?.name==="url"){let u;if(Array.isArray(e)){for(let c of e)if(!a(c)){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 '${s.name}' to be type '${u}' instead got '${e}'`);return}let l=!0;if(t.isArray){if(!Array.isArray(e))l=!1;else for(let u of e)if(!n(t.name,u)){l=!1;break}}else l=n(t.name,e);if(!l){let u=Array.isArray(e)?"array":typeof e;throw new Error(`Validation failed: Expected '${s.name}' to be a ${s.type?.isArray?"an array of ":""}${t.name} instead got '${u}' (${JSON.stringify(e)})`)}};function Rr(s){let e={};for(let t of s){let n=`${t.ai}:${t.model}`;if(!e[n]){e[n]={...t};continue}let r=e[n];if(r){let o=r.tokens??{promptTokens:0,completionTokens:0,totalTokens:0};o.promptTokens+=t?.tokens?.promptTokens??0,o.completionTokens+=t?.tokens?.completionTokens??0,o.totalTokens+=t?.tokens?.totalTokens??0,r.tokens=o;let i=r.citations??[],a=t.citations??[];if(a.length){let l=new Set(i.map(u=>u.url));for(let u of a)u?.url&&!l.has(u.url)&&(i.push(u),l.add(u.url));r.citations=i}}}return Object.values(e)}var xu=s=>{if(!s.trim())return[];let e=new Set(["-","*","+"]),t=/^\d+[\s]*[.)\]]\s*/,n=s.split(`
204
- `),r=[];for(let o of n){let i=o.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 Li(s,e){let{index:t,delta:n,version:r}=e,o=s.find(a=>a.index===t)?.delta;if(!o)return s.push({index:t,delta:n,version:r}),s;for(let a of Object.keys(n)){let l=o[a],u=n[a];l===void 0&&Array.isArray(u)?o[a]=[...u]:Array.isArray(l)&&Array.isArray(u)?o[a]=[...l,...u]:(l===void 0||typeof l=="string")&&typeof u=="string"?o[a]=`${l??""}${u}`:o[a]=u}let i=s.find(a=>a.index===t);return i&&(i.version=r),s}var Ni=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)}},_p=new Ni(500);function Au(s,e,t=0,n=_p){if(/^```[a-zA-Z]*\s*$/.test(s))return-4;if(/^[\s`]*$/.test(s))return-3;let r=s.indexOf(e,t);if(r!==-1)return r;let o=n.get(e)??Array.from({length:e.length},(a,l)=>e.slice(0,l+1));n.get(e)||n.set(e,o);let i=-1;for(let a=o.length-1;a>=0;a--){let l=o[a];if(s.endsWith(l)){i=a;break}}return i>=0?-2:-1}function $t(s,e){if(typeof s!="string")throw vi(e,String(s),"URL must be a string");try{new URL(s)}catch{throw vi(e,s,"Invalid URL format. Expected a valid URL like https://example.com")}}function at(s,e){if(typeof s!="string")return;let t=e.type;if(t){if(t.minLength!==void 0&&s.length<t.minLength)throw kn(e,s,"minLength",t.minLength);if(t.maxLength!==void 0&&s.length>t.maxLength)throw kn(e,s,"maxLength",t.maxLength);if(t.pattern!==void 0&&!new RegExp(t.pattern).test(s))throw kn(e,s,"pattern",t.pattern);if(t.format==="email"&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s))throw kn(e,s,"format","valid email address");if(t.format==="uri"||t.format==="url")try{new URL(s)}catch{throw kn(e,s,"format","valid URL")}}}function lt(s,e){if(typeof s!="number")return;let t=e.type;if(t){if(t.minimum!==void 0&&s<t.minimum)throw Si(e,s,"minimum",t.minimum);if(t.maximum!==void 0&&s>t.maximum)throw Si(e,s,"maximum",t.maximum)}}var Ho=(s,e,t,n)=>{let r=n?.strictMode??!1,o=n?.treatAllFieldsOptional??!1,i=n?.treatAllFieldsOptional??!1,a={extractedFields:[],streamedIndex:{},s:-1};Ui(s,e,a,t,{strictMode:r,skipEarlyFail:i,treatAllFieldsOptional:o}),Bi(s,e,a,t,{strictMode:r,treatAllFieldsOptional:o,forceFinalize:!0});for(let l of s.getOutputFields())l.isInternal&&delete e[l.name]},Di=(s,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 Xl(n)},Ui=(s,e,t,n,{strictMode:r,skipEarlyFail:o}={})=>{let i=s.getOutputFields(),a;for(;;){let l=new Set;t.currFieldIndex!==void 0&&!t.inAssumedField&&l.add(t.currFieldIndex);let u=i.map((g,h)=>({field:g,index:h})).filter(({index:g})=>!l.has(g)),c,p,d=-1,m=0;for(let{index:g,field:h}of u){let y=`${(t.extractedFields.length===0?"":`
205
- `)+h.title}:`,x=Au(n,y,t.s);if(x===-2||x===-3)return!0;if(x===-4)return t.inBlock=!0,!0;x>=0&&(d===-1||x<d)&&(d=x,m=y.length,c=g,p=h)}if(d===-1){if(o)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 g=i.find(h=>!h.isOptional);if(g)throw Bo(g)}break}if(a&&p&&a.name!==p.name)throw Bo(a);if(t.currField!==void 0&&t.inAssumedField&&(t.inAssumedField=!1,t.streamedIndex[t.currField.name]=0,t.currField=void 0),t.currField){let g=n.substring(t.s,d).trim(),h=qo(t.currField,g);h!==void 0&&(e[t.currField.name]=h),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+m,p!==void 0&&c!==void 0&&(t.currField=p,t.currFieldIndex=c),p&&!t.extractedFields.includes(p)&&t.extractedFields.push(p),p&&t.streamedIndex[p.name]===void 0&&(t.streamedIndex[p.name]=0)}},Bi=(s,e,t,n,r)=>{let o=r?.strictMode??!1,i=r?.treatAllFieldsOptional??!1,a=r?.deferRequiredCheckForStreaming??!1,l=r?.forceFinalize??!1;if(t.currField){let u=n.length,c=s.getOutputFields();for(let m of c){if(m.name===t.currField.name)continue;let g=`
203
+ `,o=l}),(o>t||n.length===0)&&n.push(r.trim()),n},Mp=(s,e=.1)=>{let t=[...s].sort((r,o)=>r.score-o.score),n=Math.ceil(t.length*e);return t.slice(0,n)};var Cr=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,...o})=>({index:r,value:structuredClone(o)})),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:o,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:o})}]});return}let l=a.chat.find(u=>u.index===i);if(!l){a.chat.push({index:i,value:structuredClone({content:e,name:t,functionCalls:n,thought:r,thoughtBlocks:o})});return}if(typeof e=="string"&&e.trim()!==""&&(l.value.content=e),typeof t=="string"&&t.trim()!==""&&(l.value.name=t),Array.isArray(n)&&n.length>0&&(l.value.functionCalls=n),typeof r=="string"&&r.trim()!==""){let u=l.value.thought;l.value.thought=typeof u=="string"?u+r:r}if(Array.isArray(o)&&o.length>0){let u=l.value.thoughtBlocks??[];for(let c of o){let p=u.length>0?u[u.length-1]:void 0;!c.signature&&c.data?p&&!p.signature?(p.data=(p.data??"")+c.data,c.encrypted&&(p.encrypted=!0)):u.push(structuredClone(c)):c.signature?p&&!p.signature?(p.data=(p.data??"")+c.data,p.signature=c.signature,c.encrypted&&(p.encrypted=!0)):u.push(structuredClone(c)):u.length===0&&u.push(structuredClone(c))}l.value.thoughtBlocks=u,u.length>0&&(l.value.thought=u.map(c=>c.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,o)=>(r.tags?.includes(e)&&n.push(o),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 o;n==="function"?o=r.filter(i=>i.index===e).map(i=>i.value):o=r.find(i=>i.index===e)?.value,Array.isArray(o)&&o.length>0?t.push(...o.map(i=>({...i,role:n}))):typeof o=="object"&&o!==null&&t.push({...o,role:n})}return t}getLast(){return this.data.at(-1)}reset(){this.data=[],this.seenTags=new Set}},Rn=class{memories=new Map;defaultMemory;constructor(){this.defaultMemory=new Cr}getMemory(e){return e?(this.memories.has(e)||this.memories.set(e,new Cr),this.memories.get(e)):this.defaultMemory}addRequest(e,t){for(let n of e)Zt(n);this.getMemory(t).addRequest(e,0)}addResponse(e,t){so(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 Cr):this.defaultMemory.reset()}};function Ot(s,e){if(!s&&!e)return;if(!s)return e;if(!e||s===e||s.aborted)return s;if(e.aborted)return e;if(typeof AbortSignal.any=="function")return AbortSignal.any([s,e]);let t=new AbortController,n=()=>{t.abort(s.aborted?s.reason:e.reason),r()},r=()=>{s.removeEventListener("abort",n),e.removeEventListener("abort",n)};return s.addEventListener("abort",n,{once:!0}),e.addEventListener("abort",n,{once:!0}),t.signal}var bt=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()}},vn=async(s,e)=>{for(let t of s){let{fn:n,message:r}=t,o=await n(e);if(o!==void 0){if(typeof o=="string")throw new bt({message:o});if(!o)throw r?new bt({message:r}):new Error("Assertion Failed: No message provided for assertion")}}},Ii=async(s,e,t,n=!1)=>{if(!e.currField||e.s===-1||!s||s.length===0)return;let r=s.filter(i=>i.fieldName===e.currField?.name);if(r.length===0)return;let o=t.substring(e.s);for(let i of r){let{message:a,fn:l}=i,u=await l(o,n);if(u!==void 0){if(typeof u=="string")throw new bt({message:u});if(!u&&a)throw new bt({message:a})}}};var Ci={enabled:!0,enabledCategories:["generation","streaming","functions","errors","performance"],maxLabelLength:100,samplingRate:1},Tr,Ti=s=>{if(Tr)return Tr;let e=s??pe.meter;if(e)return Tr=Ep(e),Tr};var Bl=()=>{let s=[];return pe.meter||s.push("Global meter not initialized"),!Tr&&pe.meter&&s.push("Metrics instruments not created despite available meter"),{healthy:s.length===0,issues:s}},Ep=s=>({generationLatencyHistogram:s.createHistogram("ax_gen_generation_duration_ms",{description:"End-to-end duration of AxGen generation requests",unit:"ms"}),generationRequestsCounter:s.createCounter("ax_gen_generation_requests_total",{description:"Total number of AxGen generation requests"}),generationErrorsCounter:s.createCounter("ax_gen_generation_errors_total",{description:"Total number of failed AxGen generations"}),multiStepGenerationsCounter:s.createCounter("ax_gen_multistep_generations_total",{description:"Total number of generations that required multiple steps"}),stepsPerGenerationHistogram:s.createHistogram("ax_gen_steps_per_generation",{description:"Number of steps taken per generation"}),maxStepsReachedCounter:s.createCounter("ax_gen_max_steps_reached_total",{description:"Total number of generations that hit max steps limit"}),validationErrorsCounter:s.createCounter("ax_gen_validation_errors_total",{description:"Total number of validation errors encountered"}),assertionErrorsCounter:s.createCounter("ax_gen_assertion_errors_total",{description:"Total number of assertion errors encountered"}),errorCorrectionAttemptsHistogram:s.createHistogram("ax_gen_error_correction_attempts",{description:"Number of error correction attempts per generation"}),errorCorrectionSuccessCounter:s.createCounter("ax_gen_error_correction_success_total",{description:"Total number of successful error corrections"}),errorCorrectionFailureCounter:s.createCounter("ax_gen_error_correction_failure_total",{description:"Total number of failed error corrections"}),maxRetriesReachedCounter:s.createCounter("ax_gen_max_retries_reached_total",{description:"Total number of generations that hit max retries limit"}),functionsEnabledGenerationsCounter:s.createCounter("ax_gen_functions_enabled_generations_total",{description:"Total number of generations with functions enabled"}),functionCallStepsCounter:s.createCounter("ax_gen_function_call_steps_total",{description:"Total number of steps that included function calls"}),functionsExecutedPerGenerationHistogram:s.createHistogram("ax_gen_functions_executed_per_generation",{description:"Number of unique functions executed per generation"}),functionErrorCorrectionCounter:s.createCounter("ax_gen_function_error_correction_total",{description:"Total number of function-related error corrections"}),fieldProcessorsExecutedCounter:s.createCounter("ax_gen_field_processors_executed_total",{description:"Total number of field processors executed"}),streamingFieldProcessorsExecutedCounter:s.createCounter("ax_gen_streaming_field_processors_executed_total",{description:"Total number of streaming field processors executed"}),streamingGenerationsCounter:s.createCounter("ax_gen_streaming_generations_total",{description:"Total number of streaming generations"}),streamingDeltasEmittedCounter:s.createCounter("ax_gen_streaming_deltas_emitted_total",{description:"Total number of streaming deltas emitted"}),streamingFinalizationLatencyHistogram:s.createHistogram("ax_gen_streaming_finalization_duration_ms",{description:"Duration of streaming response finalization",unit:"ms"}),samplesGeneratedHistogram:s.createHistogram("ax_gen_samples_generated",{description:"Number of samples generated per request"}),resultPickerUsageCounter:s.createCounter("ax_gen_result_picker_usage_total",{description:"Total number of times result picker was used"}),resultPickerLatencyHistogram:s.createHistogram("ax_gen_result_picker_duration_ms",{description:"Duration of result picker execution",unit:"ms"}),inputFieldsGauge:s.createGauge("ax_gen_input_fields",{description:"Number of input fields in signature"}),outputFieldsGauge:s.createGauge("ax_gen_output_fields",{description:"Number of output fields in signature"}),examplesUsedGauge:s.createGauge("ax_gen_examples_used",{description:"Number of examples used in generation"}),demosUsedGauge:s.createGauge("ax_gen_demos_used",{description:"Number of demos used in generation"}),promptRenderLatencyHistogram:s.createHistogram("ax_gen_prompt_render_duration_ms",{description:"Duration of prompt template rendering",unit:"ms"}),extractionLatencyHistogram:s.createHistogram("ax_gen_extraction_duration_ms",{description:"Duration of value extraction from responses",unit:"ms"}),assertionLatencyHistogram:s.createHistogram("ax_gen_assertion_duration_ms",{description:"Duration of assertion checking",unit:"ms"}),stateCreationLatencyHistogram:s.createHistogram("ax_gen_state_creation_duration_ms",{description:"Duration of state creation for multiple samples",unit:"ms"}),memoryUpdateLatencyHistogram:s.createHistogram("ax_gen_memory_update_duration_ms",{description:"Duration of memory updates during generation",unit:"ms"})}),Do=Ci,jl=s=>{Do={...Do,...s}},ql=()=>({...Do}),ft=s=>{let e={};for(let[t,n]of Object.entries(s))if(n!=null){let r=String(n),o=Do.maxLabelLength;e[t]=r.length>o?r.substring(0,o):r}return e};var zl=(s,e,t,n,r,o,i)=>{try{let a=ft({success:t.toString(),...n?{signature:n}:{},...r?{ai_service:r}:{},...o?{model:o}:{},...i});s.generationLatencyHistogram&&s.generationLatencyHistogram.record(e,a),s.generationRequestsCounter&&s.generationRequestsCounter.add(1,a),!t&&s.generationErrorsCounter&&s.generationErrorsCounter.add(1,a)}catch(a){console.warn("Failed to record generation metric:",a)}},Go=(s,e,t,n,r)=>{try{let o=ft({...n?{signature:n}:{},...r});e>1&&s.multiStepGenerationsCounter&&s.multiStepGenerationsCounter.add(1,o),s.stepsPerGenerationHistogram&&s.stepsPerGenerationHistogram.record(e,o),e>=t&&s.maxStepsReachedCounter&&s.maxStepsReachedCounter.add(1,o)}catch(o){console.warn("Failed to record multi-step metric:",o)}},wi=(s,e,t,n)=>{try{let r=ft({error_type:e,...t?{signature:t}:{},...n});e==="validation"&&s.validationErrorsCounter&&s.validationErrorsCounter.add(1,r),e==="assertion"&&s.assertionErrorsCounter&&s.assertionErrorsCounter.add(1,r)}catch(r){console.warn("Failed to record validation error metric:",r)}},Hl=(s,e,t)=>{try{let n=ft({error_type:"refusal",...e?{signature:e}:{},...t});s.validationErrorsCounter&&s.validationErrorsCounter.add(1,n)}catch(n){console.warn("Failed to record refusal error metric:",n)}},Ri=(s,e,t,n,r,o)=>{try{let i=ft({success:t.toString(),...r?{signature:r}:{},...o});s.errorCorrectionAttemptsHistogram&&s.errorCorrectionAttemptsHistogram.record(e,i),t&&s.errorCorrectionSuccessCounter&&s.errorCorrectionSuccessCounter.add(1,i),t||(s.errorCorrectionFailureCounter&&s.errorCorrectionFailureCounter.add(1,i),e>=n&&s.maxRetriesReachedCounter&&s.maxRetriesReachedCounter.add(1,i))}catch(i){console.warn("Failed to record error correction metric:",i)}},Kl=(s,e,t,n,r=!1,o,i)=>{try{let a=ft({functions_enabled:e.toString(),had_function_calls:n.toString(),...o?{signature:o}:{},...i});e&&s.functionsEnabledGenerationsCounter&&s.functionsEnabledGenerationsCounter.add(1,a),n&&s.functionCallStepsCounter&&s.functionCallStepsCounter.add(1,a),t>0&&s.functionsExecutedPerGenerationHistogram&&s.functionsExecutedPerGenerationHistogram.record(t,a),r&&s.functionErrorCorrectionCounter&&s.functionErrorCorrectionCounter.add(1,a)}catch(a){console.warn("Failed to record function calling metric:",a)}},Wl=(s,e,t,n,r)=>{try{let o=ft({...n?{signature:n}:{},...r});e>0&&s.fieldProcessorsExecutedCounter&&s.fieldProcessorsExecutedCounter.add(e,o),t>0&&s.streamingFieldProcessorsExecutedCounter&&s.streamingFieldProcessorsExecutedCounter.add(t,o)}catch(o){console.warn("Failed to record field processing metric:",o)}},Vl=(s,e,t,n,r,o)=>{try{let i=ft({is_streaming:e.toString(),...r?{signature:r}:{},...o});e&&s.streamingGenerationsCounter&&s.streamingGenerationsCounter.add(1,i),t>0&&s.streamingDeltasEmittedCounter&&s.streamingDeltasEmittedCounter.add(t,i),n&&s.streamingFinalizationLatencyHistogram&&s.streamingFinalizationLatencyHistogram.record(n,i)}catch(i){console.warn("Failed to record streaming metric:",i)}},Jl=(s,e,t,n,r,o)=>{try{let i=ft({result_picker_used:t.toString(),...r?{signature:r}:{},...o});s.samplesGeneratedHistogram&&s.samplesGeneratedHistogram.record(e,i),t&&s.resultPickerUsageCounter&&s.resultPickerUsageCounter.add(1,i),n&&s.resultPickerLatencyHistogram&&s.resultPickerLatencyHistogram.record(n,i)}catch(i){console.warn("Failed to record samples metric:",i)}},Yl=(s,e,t,n,r,o,i)=>{try{let a=ft({...o?{signature:o}:{},...i});s.inputFieldsGauge&&s.inputFieldsGauge.record(e,a),s.outputFieldsGauge&&s.outputFieldsGauge.record(t,a),s.examplesUsedGauge&&s.examplesUsedGauge.record(n,a),s.demosUsedGauge&&s.demosUsedGauge.record(r,a)}catch(a){console.warn("Failed to record signature complexity metrics:",a)}},Uo=(s,e,t,n,r)=>{try{let o=ft({metric_type:e,...n?{signature:n}:{},...r});switch(e){case"prompt_render":s.promptRenderLatencyHistogram&&s.promptRenderLatencyHistogram.record(t,o);break;case"extraction":s.extractionLatencyHistogram&&s.extractionLatencyHistogram.record(t,o);break;case"assertion":s.assertionLatencyHistogram&&s.assertionLatencyHistogram.record(t,o);break;case"state_creation":s.stateCreationLatencyHistogram&&s.stateCreationLatencyHistogram.record(t,o);break;case"memory_update":s.memoryUpdateLatencyHistogram&&s.memoryUpdateLatencyHistogram.record(t,o);break}}catch(o){console.warn("Failed to record performance metric:",o)}};var Sn=s=>{let e=(()=>{switch(s?.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 s?.isArray?`array of ${e}s`:e},Be=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()}},Ql=s=>{let t=s.map(n=>`'${n.title}' (${Sn(n.type)})`).join(", ");return new Be(`Required field not found: ${t}. Add a line starting with the exact label followed by a colon (e.g., "${s[0]?.title}:") and then provide a valid ${Sn(s[0]?.type)} value. Keep the output concise and avoid unrelated text.`)},Bo=s=>new Be(`Expected (Required) field not found: '${s.title}'. Begin a new section with "${s.title}:" and then provide a valid ${Sn(s.type)} value directly after.`);var jo=s=>new Be(`Required field is missing: '${s.title}'. After the "${s.title}:" label, provide a non-empty ${Sn(s.type)}. Do not use null, undefined, or leave it blank.`),Xl=(s,e)=>new Be(`Invalid JSON: ${e} in field '${s.title}'. Return only valid JSON. Prefer a fenced code block containing a single JSON object or array with no trailing text.`),Zl=(s,e)=>new Be(`Invalid Array: ${e} for '${s.title}'. Provide a JSON array of ${Sn(s.type)} items (e.g., [ ... ]). Markdown lists are also accepted if each item is on its own line starting with a hyphen.`),eu=(s,e,t)=>new Be(`Field '${s.title}' has an invalid value '${e}': ${t}. Provide a ${Sn(s.type)}. Ensure formatting exactly matches the expected type.`),tu=(s,e,t)=>new Be(`Invalid date for '${s.title}': ${t}. Use the exact format YYYY-MM-DD (e.g., 2024-05-09). You provided: ${e}.`),nu=(s,e,t)=>new Be(`Invalid date/time for '${s.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}.`),vi=(s,e,t)=>new Be(`Invalid URL for '${s.title}': ${t}. Use a valid URL format (e.g., https://example.com). You provided: ${e}.`),kn=(s,e,t,n)=>{let r=`Field '${s.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 Be(r)},Si=(s,e,t,n)=>{let r=`Field '${s.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 Be(r)};var ru=({error:s,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:o,span:i,customLabels:a})=>{let l=s.getFixingInstructions();if(t&&n){let u=l?.map(c=>c.title).join(", ")??"";Ba(s,e,u,n)}return r&&wi(r,"validation",o,a),i&&i.addEvent("validation.error",{message:s.toString(),fixing_instructions:l?.map(u=>u.title).join(", ")??""}),l},ou=({error:s,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:o,span:i,customLabels:a})=>{let l=s.getFixingInstructions();if(t&&n){let u=l?.map(c=>c.title).join(", ")??"";ja(s,e,u,n)}return r&&wi(r,"assertion",o,a),i&&i.addEvent("assertion.error",{message:s.toString(),fixing_instructions:l?.map(u=>u.title).join(", ")??""}),l},su=({error:s,errCount:e,debug:t,logger:n,metricsInstruments:r,signatureName:o,span:i,customLabels:a})=>{t&&n&&qa(s,e,n),r&&Hl(r,o,a),i&&i.addEvent("refusal.error",{message:s.toString()})};var _t=Yn(iu(),1),cu=Yn(au(),1),pu=Yn(lu(),1),du=Yn(uu(),1);_t.default.extend(du.default);_t.default.extend(pu.default);_t.default.extend(cu.default);function mu(s,e,t=!1){try{return Pp(e)}catch(n){if(s.isOptional&&!t)return;let r=n.message;throw tu(s,e,r)}}function Pp(s){if(!(0,_t.default)(s,"YYYY-MM-DD",!0).isValid())throw new Error('Invalid date format. Please provide the date in "YYYY-MM-DD" format.');return _t.default.utc(s,"YYYY-MM-DD").startOf("day").toDate()}function gu(s,e,t=!1){try{return Fp(e)}catch(n){if(s.isOptional&&!t)return;let r=n.message;throw nu(s,e,r)}}function Fp(s){let e=/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}(?::\d{2})?) (.+)$/,t=s.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 o=n.includes(":")&&n.split(":").length===3?"YYYY-MM-DD HH:mm:ss":"YYYY-MM-DD HH:mm",i=_t.default.tz(n,o,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 hu=s=>(0,_t.default)(s).utc().format("YYYY-MM-DD HH:mm:ss [UTC]");var SA=new Ye,wr=(s,e)=>{let t=s.type??{name:"string",isArray:!1},n=(u,c)=>{switch(u){case"class":return typeof c=="string";case"code":return typeof c=="string";case"string":return typeof c=="string";case"number":return typeof c=="number";case"boolean":return typeof c=="boolean";case"date":return c instanceof Date||typeof c=="string";case"datetime":return c instanceof Date||typeof c=="string";case"json":return typeof c=="object"||typeof c=="string";case"object":return typeof c=="object";default:return!1}},r=u=>!(!u||typeof u!="object"||!("mimeType"in u)||!("data"in u));if(s.type?.name==="image"){let u;if(Array.isArray(e)){for(let c of e)if(!r(c)){u="object ({ mimeType: string; data: string })";break}}else r(e)||(u="object ({ mimeType: string; data: string })");if(u)throw new Error(`Validation failed: Expected '${s.name}' to be type '${u}' instead got '${e}'`);return}let o=u=>!(!u||typeof u!="object"||!("data"in u));if(s.type?.name==="audio"){let u;if(Array.isArray(e)){for(let c of e)if(!o(c)){u="object ({ data: string; format?: string })";break}}else o(e)||(u="object ({ data: string; format?: string })");if(u)throw new Error(`Validation failed: Expected '${s.name}' to be type '${u}' instead got '${e}'`);return}let i=u=>{if(!u||typeof u!="object"||!("mimeType"in u))return!1;let c="data"in u,p="fileUri"in u;return!(!c&&!p||c&&p)};if(s.type?.name==="file"){let u;if(Array.isArray(e)){for(let c of e)if(!i(c)){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 '${s.name}' to be type '${u}' instead got '${e}'`);return}let a=u=>typeof u=="string"?!0:!(!u||typeof u!="object"||!("url"in u));if(s.type?.name==="url"){let u;if(Array.isArray(e)){for(let c of e)if(!a(c)){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 '${s.name}' to be type '${u}' instead got '${e}'`);return}let l=!0;if(t.isArray){if(!Array.isArray(e))l=!1;else for(let u of e)if(!n(t.name,u)){l=!1;break}}else l=n(t.name,e);if(!l){let u=Array.isArray(e)?"array":typeof e;throw new Error(`Validation failed: Expected '${s.name}' to be a ${s.type?.isArray?"an array of ":""}${t.name} instead got '${u}' (${JSON.stringify(e)})`)}};function Rr(s){let e={};for(let t of s){let n=`${t.ai}:${t.model}`;if(!e[n]){e[n]={...t};continue}let r=e[n];if(r){let o=r.tokens??{promptTokens:0,completionTokens:0,totalTokens:0};o.promptTokens+=t?.tokens?.promptTokens??0,o.completionTokens+=t?.tokens?.completionTokens??0,o.totalTokens+=t?.tokens?.totalTokens??0,r.tokens=o;let i=r.citations??[],a=t.citations??[];if(a.length){let l=new Set(i.map(u=>u.url));for(let u of a)u?.url&&!l.has(u.url)&&(i.push(u),l.add(u.url));r.citations=i}}}return Object.values(e)}var fu=s=>{if(!s.trim())return[];let e=new Set(["-","*","+"]),t=/^\d+[\s]*[.)\]]\s*/,n=s.split(`
204
+ `),r=[];for(let o of n){let i=o.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 Li(s,e){let{index:t,delta:n,version:r}=e,o=s.find(a=>a.index===t)?.delta;if(!o)return s.push({index:t,delta:n,version:r}),s;for(let a of Object.keys(n)){let l=o[a],u=n[a];l===void 0&&Array.isArray(u)?o[a]=[...u]:Array.isArray(l)&&Array.isArray(u)?o[a]=[...l,...u]:(l===void 0||typeof l=="string")&&typeof u=="string"?o[a]=`${l??""}${u}`:o[a]=u}let i=s.find(a=>a.index===t);return i&&(i.version=r),s}var Ni=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)}},_p=new Ni(500);function xu(s,e,t=0,n=_p){if(/^```[a-zA-Z]*\s*$/.test(s))return-4;if(/^[\s`]*$/.test(s))return-3;let r=s.indexOf(e,t);if(r!==-1)return r;let o=n.get(e)??Array.from({length:e.length},(a,l)=>e.slice(0,l+1));n.get(e)||n.set(e,o);let i=-1;for(let a=o.length-1;a>=0;a--){let l=o[a];if(s.endsWith(l)){i=a;break}}return i>=0?-2:-1}function $t(s,e){if(typeof s!="string")throw vi(e,String(s),"URL must be a string");try{new URL(s)}catch{throw vi(e,s,"Invalid URL format. Expected a valid URL like https://example.com")}}function at(s,e){if(typeof s!="string")return;let t=e.type;if(t){if(t.minLength!==void 0&&s.length<t.minLength)throw kn(e,s,"minLength",t.minLength);if(t.maxLength!==void 0&&s.length>t.maxLength)throw kn(e,s,"maxLength",t.maxLength);if(t.pattern!==void 0&&!new RegExp(t.pattern).test(s))throw kn(e,s,"pattern",t.pattern);if(t.format==="email"&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s))throw kn(e,s,"format","valid email address");if(t.format==="uri"||t.format==="url")try{new URL(s)}catch{throw kn(e,s,"format","valid URL")}}}function lt(s,e){if(typeof s!="number")return;let t=e.type;if(t){if(t.minimum!==void 0&&s<t.minimum)throw Si(e,s,"minimum",t.minimum);if(t.maximum!==void 0&&s>t.maximum)throw Si(e,s,"maximum",t.maximum)}}var Ho=(s,e,t,n)=>{let r=n?.strictMode??!1,o=n?.treatAllFieldsOptional??!1,i=n?.treatAllFieldsOptional??!1,a={extractedFields:[],streamedIndex:{},s:-1};Ui(s,e,a,t,{strictMode:r,skipEarlyFail:i,treatAllFieldsOptional:o}),Bi(s,e,a,t,{strictMode:r,treatAllFieldsOptional:o,forceFinalize:!0});for(let l of s.getOutputFields())l.isInternal&&delete e[l.name]},Di=(s,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 Ql(n)},Ui=(s,e,t,n,{strictMode:r,skipEarlyFail:o}={})=>{let i=s.getOutputFields(),a;for(;;){let l=new Set;t.currFieldIndex!==void 0&&!t.inAssumedField&&l.add(t.currFieldIndex);let u=i.map((g,h)=>({field:g,index:h})).filter(({index:g})=>!l.has(g)),c,p,d=-1,m=0;for(let{index:g,field:h}of u){let y=`${(t.extractedFields.length===0?"":`
205
+ `)+h.title}:`,x=xu(n,y,t.s);if(x===-2||x===-3)return!0;if(x===-4)return t.inBlock=!0,!0;x>=0&&(d===-1||x<d)&&(d=x,m=y.length,c=g,p=h)}if(d===-1){if(o)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 g=i.find(h=>!h.isOptional);if(g)throw Bo(g)}break}if(a&&p&&a.name!==p.name)throw Bo(a);if(t.currField!==void 0&&t.inAssumedField&&(t.inAssumedField=!1,t.streamedIndex[t.currField.name]=0,t.currField=void 0),t.currField){let g=n.substring(t.s,d).trim(),h=qo(t.currField,g);h!==void 0&&(e[t.currField.name]=h),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+m,p!==void 0&&c!==void 0&&(t.currField=p,t.currFieldIndex=c),p&&!t.extractedFields.includes(p)&&t.extractedFields.push(p),p&&t.streamedIndex[p.name]===void 0&&(t.streamedIndex[p.name]=0)}},Bi=(s,e,t,n,r)=>{let o=r?.strictMode??!1,i=r?.treatAllFieldsOptional??!1,a=r?.deferRequiredCheckForStreaming??!1,l=r?.forceFinalize??!1;if(t.currField){let u=n.length,c=s.getOutputFields();for(let m of c){if(m.name===t.currField.name)continue;let g=`
206
206
  ${m.title}:`,h=n.indexOf(g,t.s);h!==-1&&h<u&&(u=h)}let p=n.substring(t.s,u).trim(),d=qo(t.currField,p);d!==void 0&&(e[t.currField.name]=d)}if(o&&!t.currField&&t.extractedFields.length===0&&n.trim()){let p=s.getOutputFields().find(d=>!d.isOptional);if(p)throw Bo(p)}if($p(s,e,n,t),!i){let u=t.currField!==void 0||(t.extractedFields?.length??0)>0;o||l?Di(t,e,s.getOutputFields()):u||Di(t,e,s.getOutputFields())}},$p=(s,e,t,n)=>{let r=s.getOutputFields();if(r.length===1){let i=r[0];if(i){let a=`${i.title}:`,l=t.indexOf(a);if(l!==-1){let u=l+a.length,c=`
207
207
  ${i.title}:`,p=t.indexOf(c,u),d=t.substring(u,p===-1?t.length:p).trim();if(d)try{let m=qo(i,d);if(m!==void 0){e[i.name]=m;return}}catch{}}}}let o=t.split(`
208
- `);for(let i of r){if(i.name in e)continue;let a=`${i.title}:`;for(let l of o){let u=l.trim();if(u.startsWith(a)){let c=u.substring(a.length).trim();if(c)try{let p=qo(i,c);if(p!==void 0){e[i.name]=p;break}}catch(p){if(!i.isOptional)throw p}break}}}},yu=(s,e,t=!1)=>{switch(s.type?.name){case"code":return Gi(e);case"string":return e;case"number":{let n=Number(e);if(Number.isNaN(n)){if(s.isOptional&&!t)return;throw new Error("Invalid number")}return n}case"boolean":{if(typeof e=="boolean")return e;let n=e.toLowerCase();if(n==="true")return!0;if(n==="false")return!1;if(s.isOptional&&!t)return;throw new Error("Invalid boolean")}case"date":return gu(s,e,t);case"datetime":return hu(s,e,t);case"class":{let n=e;if(s.type.options&&!s.type.options.includes(n)){if(s.isOptional)return;throw new Error(`Invalid class '${e}', expected one of the following: ${s.type.options.join(", ")}`)}return n}default:return e}};function*bu(s,e,t,n,r,o){let{name:i,isInternal:a}=e,{isArray:l,name:u}=e.type??{};if(a||l||u&&u!=="string"&&u!=="code")return;let c=r.streamedIndex[i]??0,p=c===0,d=(t<0?0:t)+c,m=s.substring(d,n);if(m.length===0)return;let g=m.replace(/\s+$/,"");r.currField?.type?.name==="code"&&(g=g.replace(/\s*```\s*$/,""));let h=p?g.trimStart():g;r.currField?.type?.name==="code"&&(h=h.replace(/^[ ]*```[a-zA-Z0-9]*\n\s*/,"")),h.length>0&&(yield{index:o,delta:{[i]:h}},r.streamedIndex[i]=c+g.length)}function*ji(s,e,t,n,r){for(let i of n.prevFields??[]){let{field:a,s:l,e:u}=i;yield*bu(e,a,l,u,n,r)}if(n.prevFields=void 0,n.inAssumedField&&!(s.getOutputFields().filter(l=>!l.isInternal).length===1)||!n.currField||n.currField.isInternal)return;yield*bu(e,n.currField,n.s,e.length,n,r);let o=s.getOutputFields();for(let i of Object.keys(t)){let a=o.find(c=>c.name===i);if(!a||a.isInternal)continue;let l=t[i];if(Array.isArray(l)){let c=n.streamedIndex?.[i]??0,p=l.slice(c);p&&p.length>0&&(yield{index:r,delta:{[i]:p}},n.streamedIndex[i]=c+p.length);continue}let u=typeof l=="string"?l:void 0;if(!n.streamedIndex[i])yield{index:r,delta:{[i]:l}},n.streamedIndex[i]=u?u.length:1;else if(u){let c=n.streamedIndex[i];if(u.length>c){let p=u.substring(c);yield{index:r,delta:{[i]:p}},n.streamedIndex[i]=u.length}}}}function qo(s,e){if(!e||e===""||/^(null|undefined)\s*$/i.test(e)){if(s.isOptional)return;throw jo(s)}let t;if(s.type?.name==="json"&&!s.type?.isArray)try{let r=Gi(e);return t=JSON.parse(r),t}catch(r){throw Zl(s,r.message)}if(s.type?.isArray)try{try{t=JSON.parse(e)}catch{t=xu(e)}if(!Array.isArray(t))throw new Error("Expected an array")}catch(r){let o=r.message;if(o.includes("no valid list items found")||o==="Expected an array")t=[e];else throw eu(s,o)}try{if(Array.isArray(t)){for(let[r,o]of t.entries())if(o!==void 0){let i=typeof o=="string"?o.trim():o;if(typeof i=="string"&&(s.type?.name==="object"||s.type?.name==="json"))try{let a=Gi(i);i=JSON.parse(a)}catch{}t[r]=yu(s,i,!0)}}else t=yu(s,e)}catch(r){throw tu(s,e,r.message)}if(typeof t=="string"&&t==="")return;let n=s.type;if(n&&t!==void 0&&(n.name==="url"&&$t(t,s),(n.name==="string"||n.name==="code")&&at(t,s),n.name==="number"&&lt(t,s),n.isArray&&Array.isArray(t)))for(let r of t)r!==void 0&&(n.name==="string"||n.name==="code"?at(r,s):n.name==="number"&&lt(r,s));return t}function On(s,e,t){let n=s.getOutputFields();for(let r of n){let o=e[r.name];if(o==null){if(!r.isOptional&&!t?.allowMissingRequired)throw jo(r);continue}let i=r.type;if(i){if(i.name==="url"&&$t(o,r),(i.name==="string"||i.name==="code")&&at(o,r),i.name==="number"&&lt(o,r),i.isArray&&Array.isArray(o))for(let a of o)a!=null&&(i.name==="url"?$t(a,r):i.name==="string"||i.name==="code"?at(a,r):i.name==="number"&&lt(a,r));if(i.name==="object"&&i.fields&&typeof o=="object"&&!Array.isArray(o)&&zo(r,o,t),i.isArray&&i.fields&&Array.isArray(o)&&i.name==="object")for(let a of o)a&&typeof a=="object"&&zo(r,a,t)}}}function zo(s,e,t){let n=s.type?.fields;if(!(!n||typeof n!="object"))for(let[r,o]of Object.entries(n)){let i={name:r,title:r,description:o.description,type:{name:o.type,isArray:o.isArray,options:o.options,fields:o.fields,minLength:o.minLength,maxLength:o.maxLength,minimum:o.minimum,maximum:o.maximum,pattern:o.pattern,patternDescription:o.patternDescription,format:o.format},isOptional:o.isOptional??!1,isInternal:o.isInternal??!1},a=e[i.name];if(a==null){if(!i.isOptional&&!t?.allowMissingRequired)throw jo(i);continue}let l=i.type;if(l){if(l.name==="url"&&$t(a,i),(l.name==="string"||l.name==="code")&&at(a,i),l.name==="number"&&lt(a,i),l.isArray&&Array.isArray(a))for(let u of a)u!=null&&(l.name==="url"?$t(u,i):l.name==="string"||l.name==="code"?at(u,i):l.name==="number"&&lt(u,i));if(l.name==="object"&&l.fields&&typeof a=="object"&&!Array.isArray(a)&&zo(i,a,t),l.isArray&&l.fields&&Array.isArray(a)&&l.name==="object")for(let u of a)u&&typeof u=="object"&&zo(i,u,t)}}}var Gi=s=>{let t=/```([A-Za-z]*)\s*([\s\S]*?)\s*```/g.exec(s);return t?t.length===3?t[2]:t.length===2?t[1]:s:s};async function vr(s,e,t,n){for(let r of s){if(e[r.field.name]===void 0)continue;let o=r.process,i=await o(e[r.field.name],{sessionId:n,values:e,done:!0});Iu(r.field,t,i,n)}}async function qi(s,e,t,n,r,o,i=!1){for(let a of s){if(t.currField?.name!==a.field.name)continue;let l=e.substring(t.s);t.currField?.type?.name==="code"&&(l=l.replace(/^[ ]*```[a-zA-Z0-9]*\n\s*/,""),l=l.replace(/\s*```\s*$/,""));let u=a.process,c=await u(l,{sessionId:o,values:r,done:i});Iu(t.currField,n,c,o)}}var Iu=(s,e,t,n)=>{if(t===void 0||typeof t=="string"&&(t===""||/^(null|undefined)\s*$/i.test(t)))return;let r=String(t),o=r;e.addRequest([{role:"user",content:[{type:"text",text:o}]}],n),e.addTag("processor",n)};function Cu(s,e){if(!e)return s;let t=[];if(e.format==="email"&&t.push("Must be a valid email address format"),(e.format==="uri"||e.format==="url"||e.name==="url")&&t.push("Must be a valid URL format"),(e.name==="string"||e.name==="code"||e.name==="url"||e.name==="date"||e.name==="datetime")&&(e.minLength!==void 0&&e.maxLength!==void 0?t.push(`Minimum length: ${e.minLength} characters, maximum length: ${e.maxLength} characters`):e.minLength!==void 0?t.push(`Minimum length: ${e.minLength} characters`):e.maxLength!==void 0&&t.push(`Maximum length: ${e.maxLength} characters`)),e.name==="number"&&(e.minimum!==void 0&&e.maximum!==void 0?t.push(`Minimum value: ${e.minimum}, maximum value: ${e.maximum}`):e.minimum!==void 0?t.push(`Minimum value: ${e.minimum}`):e.maximum!==void 0&&t.push(`Maximum value: ${e.maximum}`)),e.pattern!==void 0){if(!e.patternDescription)throw new Error(`Field with pattern '${e.pattern}' must include a patternDescription to explain the pattern to the LLM`);t.push(e.patternDescription)}if(e.name==="date"&&t.push("Format: YYYY-MM-DD"),e.name==="datetime"&&t.push("Format: ISO 8601 date-time"),t.length===0)return s;let n=t.join(". ");return!s||s.trim().length===0?n:`${s.trim().endsWith(".")?s.trim():`${s.trim()}.`} ${n}`}function Mn(s,e="Schema"){if("name"in s&&"type"in s)return Ko(s);let t={},n=[];for(let r of s){if(r.isInternal)continue;let o=Ko(r);t[r.name]=o,r.isOptional||n.push(r.name)}return{type:"object",title:e,properties:t,required:n,additionalProperties:!1}}function Ko(s,e=!1){let t=s.type,n=Cu(s.description,t);if(e&&t?.name&&(t.name==="image"||t.name==="audio"||t.name==="file"))throw new Error(`Media type '${t.name}' is not allowed in nested object fields. Media types (image, audio, file) can only be used as top-level input fields. Field: ${s.name}`);let r={};if(n&&(r.description=n),t?.isArray)if(r.type="array",t.fields){r.items={type:"object",properties:{},required:[],additionalProperties:!1},t.description&&(r.items.description=t.description);for(let[o,i]of Object.entries(t.fields)){let a={name:o,description:i.description,type:{name:i.type,isArray:i.isArray,options:i.options?[...i.options]:void 0,fields:i.fields,minLength:i.minLength,maxLength:i.maxLength,minimum:i.minimum,maximum:i.maximum,pattern:i.pattern,patternDescription:i.patternDescription,format:i.format},isOptional:i.isOptional,isInternal:i.isInternal};r.items.properties[o]=Ko(a,!0),i.isOptional||r.items.required.push(o)}}else if(t.name==="class"&&t.options)r.items={type:"string",enum:t.options};else{let o=Cu(t.description||s.description,t);r.items={type:Tu(t.name)},o&&(r.items.description=o),t.name==="string"||t.name==="code"||t.name==="url"||t.name==="date"||t.name==="datetime"?(t.minLength!==void 0&&(r.items.minLength=t.minLength),t.maxLength!==void 0&&(r.items.maxLength=t.maxLength),t.pattern!==void 0&&(r.items.pattern=t.pattern),t.format!==void 0&&(r.items.format=t.format)):t.name==="number"&&(t.minimum!==void 0&&(r.items.minimum=t.minimum),t.maximum!==void 0&&(r.items.maximum=t.maximum))}else if(t?.name==="object"&&t.fields){r.type="object",r.properties={},r.required=[],r.additionalProperties=!1;for(let[o,i]of Object.entries(t.fields)){let a={name:o,description:i.description,type:{name:i.type,isArray:i.isArray,options:i.options?[...i.options]:void 0,fields:i.fields,minLength:i.minLength,maxLength:i.maxLength,minimum:i.minimum,maximum:i.maximum,pattern:i.pattern,patternDescription:i.patternDescription,format:i.format},isOptional:i.isOptional,isInternal:i.isInternal};r.properties[o]=Ko(a,!0),i.isOptional||r.required.push(o)}}else t?.name==="class"&&t.options?(r.type="string",r.enum=t.options):(r.type=Tu(t?.name??"string"),t?.name==="string"||t?.name==="code"||t?.name==="url"||t?.name==="date"||t?.name==="datetime"?(t.minLength!==void 0&&(r.minLength=t.minLength),t.maxLength!==void 0&&(r.maxLength=t.maxLength),t.pattern!==void 0&&(r.pattern=t.pattern),t.format!==void 0&&(r.format=t.format),t.name==="url"&&!t.format&&(r.format="uri"),t.name==="date"&&!t.format&&(r.format="date"),t.name==="datetime"&&!t.format&&(r.format="date-time")):t?.name==="number"&&(t.minimum!==void 0&&(r.minimum=t.minimum),t.maximum!==void 0&&(r.maximum=t.maximum)));return r}function Tu(s){switch(s){case"string":case"code":case"url":case"date":case"datetime":case"image":case"audio":case"file":return"string";case"number":return"number";case"boolean":return"boolean";case"json":case"object":return["object","array","string","number","boolean","null"];default:return"string"}}function Wo(s){if(!s||typeof s!="object")throw new Error("Schema must be an object");if(s.type==="array"){if(!s.items)throw new Error('Array schema is missing an "items" definition (required by JSON Schema and all LLM providers for function tools)');Wo(s.items)}else if(s.type==="object"&&s.properties)for(let e of Object.values(s.properties))Wo(e)}var Bt=class extends Error{calls;constructor(e){super(`Stop function executed: ${e.map(t=>t.func.name).join(", ")}`),this.name="AxStopFunctionCallException",this.calls=e}},Sr=class extends Error{constructor(t){super();this.fields=t;this.name="AxFunctionError"}getFields=()=>this.fields;toString(){return[`${this.name}: Function validation error`,...this.fields.map(t=>` - ${t.field}: ${t.message}`)].join(`
208
+ `);for(let i of r){if(i.name in e)continue;let a=`${i.title}:`;for(let l of o){let u=l.trim();if(u.startsWith(a)){let c=u.substring(a.length).trim();if(c)try{let p=qo(i,c);if(p!==void 0){e[i.name]=p;break}}catch(p){if(!i.isOptional)throw p}break}}}},Au=(s,e,t=!1)=>{switch(s.type?.name){case"code":return Gi(e);case"string":return e;case"number":{let n=Number(e);if(Number.isNaN(n)){if(s.isOptional&&!t)return;throw new Error("Invalid number")}return n}case"boolean":{if(typeof e=="boolean")return e;let n=e.toLowerCase();if(n==="true")return!0;if(n==="false")return!1;if(s.isOptional&&!t)return;throw new Error("Invalid boolean")}case"date":return mu(s,e,t);case"datetime":return gu(s,e,t);case"class":{let n=e;if(s.type.options&&!s.type.options.includes(n)){if(s.isOptional)return;throw new Error(`Invalid class '${e}', expected one of the following: ${s.type.options.join(", ")}`)}return n}default:return e}};function*yu(s,e,t,n,r,o){let{name:i,isInternal:a}=e,{isArray:l,name:u}=e.type??{};if(a||l||u&&u!=="string"&&u!=="code")return;let c=r.streamedIndex[i]??0,p=c===0,d=(t<0?0:t)+c,m=s.substring(d,n);if(m.length===0)return;let g=m.replace(/\s+$/,"");r.currField?.type?.name==="code"&&(g=g.replace(/\s*```\s*$/,""));let h=p?g.trimStart():g;r.currField?.type?.name==="code"&&(h=h.replace(/^[ ]*```[a-zA-Z0-9]*\n\s*/,"")),h.length>0&&(yield{index:o,delta:{[i]:h}},r.streamedIndex[i]=c+g.length)}function*ji(s,e,t,n,r){for(let i of n.prevFields??[]){let{field:a,s:l,e:u}=i;yield*yu(e,a,l,u,n,r)}if(n.prevFields=void 0,n.inAssumedField&&!(s.getOutputFields().filter(l=>!l.isInternal).length===1)||!n.currField||n.currField.isInternal)return;yield*yu(e,n.currField,n.s,e.length,n,r);let o=s.getOutputFields();for(let i of Object.keys(t)){let a=o.find(c=>c.name===i);if(!a||a.isInternal)continue;let l=t[i];if(Array.isArray(l)){let c=n.streamedIndex?.[i]??0,p=l.slice(c);p&&p.length>0&&(yield{index:r,delta:{[i]:p}},n.streamedIndex[i]=c+p.length);continue}let u=typeof l=="string"?l:void 0;if(!n.streamedIndex[i])yield{index:r,delta:{[i]:l}},n.streamedIndex[i]=u?u.length:1;else if(u){let c=n.streamedIndex[i];if(u.length>c){let p=u.substring(c);yield{index:r,delta:{[i]:p}},n.streamedIndex[i]=u.length}}}}function qo(s,e){if(!e||e===""||/^(null|undefined)\s*$/i.test(e)){if(s.isOptional)return;throw jo(s)}let t;if(s.type?.name==="json"&&!s.type?.isArray)try{let r=Gi(e);return t=JSON.parse(r),t}catch(r){throw Xl(s,r.message)}if(s.type?.isArray)try{try{t=JSON.parse(e)}catch{t=fu(e)}if(!Array.isArray(t))throw new Error("Expected an array")}catch(r){let o=r.message;if(o.includes("no valid list items found")||o==="Expected an array")t=[e];else throw Zl(s,o)}try{if(Array.isArray(t)){for(let[r,o]of t.entries())if(o!==void 0){let i=typeof o=="string"?o.trim():o;if(typeof i=="string"&&(s.type?.name==="object"||s.type?.name==="json"))try{let a=Gi(i);i=JSON.parse(a)}catch{}t[r]=Au(s,i,!0)}}else t=Au(s,e)}catch(r){throw eu(s,e,r.message)}if(typeof t=="string"&&t==="")return;let n=s.type;if(n&&t!==void 0&&(n.name==="url"&&$t(t,s),(n.name==="string"||n.name==="code")&&at(t,s),n.name==="number"&&lt(t,s),n.isArray&&Array.isArray(t)))for(let r of t)r!==void 0&&(n.name==="string"||n.name==="code"?at(r,s):n.name==="number"&&lt(r,s));return t}function On(s,e,t){let n=s.getOutputFields();for(let r of n){let o=e[r.name];if(o==null){if(!r.isOptional&&!t?.allowMissingRequired)throw jo(r);continue}let i=r.type;if(i){if(i.name==="url"&&$t(o,r),(i.name==="string"||i.name==="code")&&at(o,r),i.name==="number"&&lt(o,r),i.isArray&&Array.isArray(o))for(let a of o)a!=null&&(i.name==="url"?$t(a,r):i.name==="string"||i.name==="code"?at(a,r):i.name==="number"&&lt(a,r));if(i.name==="object"&&i.fields&&typeof o=="object"&&!Array.isArray(o)&&zo(r,o,t),i.isArray&&i.fields&&Array.isArray(o)&&i.name==="object")for(let a of o)a&&typeof a=="object"&&zo(r,a,t)}}}function zo(s,e,t){let n=s.type?.fields;if(!(!n||typeof n!="object"))for(let[r,o]of Object.entries(n)){let i={name:r,title:r,description:o.description,type:{name:o.type,isArray:o.isArray,options:o.options,fields:o.fields,minLength:o.minLength,maxLength:o.maxLength,minimum:o.minimum,maximum:o.maximum,pattern:o.pattern,patternDescription:o.patternDescription,format:o.format},isOptional:o.isOptional??!1,isInternal:o.isInternal??!1},a=e[i.name];if(a==null){if(!i.isOptional&&!t?.allowMissingRequired)throw jo(i);continue}let l=i.type;if(l){if(l.name==="url"&&$t(a,i),(l.name==="string"||l.name==="code")&&at(a,i),l.name==="number"&&lt(a,i),l.isArray&&Array.isArray(a))for(let u of a)u!=null&&(l.name==="url"?$t(u,i):l.name==="string"||l.name==="code"?at(u,i):l.name==="number"&&lt(u,i));if(l.name==="object"&&l.fields&&typeof a=="object"&&!Array.isArray(a)&&zo(i,a,t),l.isArray&&l.fields&&Array.isArray(a)&&l.name==="object")for(let u of a)u&&typeof u=="object"&&zo(i,u,t)}}}var Gi=s=>{let t=/```([A-Za-z]*)\s*([\s\S]*?)\s*```/g.exec(s);return t?t.length===3?t[2]:t.length===2?t[1]:s:s};async function vr(s,e,t,n){for(let r of s){if(e[r.field.name]===void 0)continue;let o=r.process,i=await o(e[r.field.name],{sessionId:n,values:e,done:!0});bu(r.field,t,i,n)}}async function qi(s,e,t,n,r,o,i=!1){for(let a of s){if(t.currField?.name!==a.field.name)continue;let l=e.substring(t.s);t.currField?.type?.name==="code"&&(l=l.replace(/^[ ]*```[a-zA-Z0-9]*\n\s*/,""),l=l.replace(/\s*```\s*$/,""));let u=a.process,c=await u(l,{sessionId:o,values:r,done:i});bu(t.currField,n,c,o)}}var bu=(s,e,t,n)=>{if(t===void 0||typeof t=="string"&&(t===""||/^(null|undefined)\s*$/i.test(t)))return;let r=String(t),o=r;e.addRequest([{role:"user",content:[{type:"text",text:o}]}],n),e.addTag("processor",n)};function Iu(s,e){if(!e)return s;let t=[];if(e.format==="email"&&t.push("Must be a valid email address format"),(e.format==="uri"||e.format==="url"||e.name==="url")&&t.push("Must be a valid URL format"),(e.name==="string"||e.name==="code"||e.name==="url"||e.name==="date"||e.name==="datetime")&&(e.minLength!==void 0&&e.maxLength!==void 0?t.push(`Minimum length: ${e.minLength} characters, maximum length: ${e.maxLength} characters`):e.minLength!==void 0?t.push(`Minimum length: ${e.minLength} characters`):e.maxLength!==void 0&&t.push(`Maximum length: ${e.maxLength} characters`)),e.name==="number"&&(e.minimum!==void 0&&e.maximum!==void 0?t.push(`Minimum value: ${e.minimum}, maximum value: ${e.maximum}`):e.minimum!==void 0?t.push(`Minimum value: ${e.minimum}`):e.maximum!==void 0&&t.push(`Maximum value: ${e.maximum}`)),e.pattern!==void 0){if(!e.patternDescription)throw new Error(`Field with pattern '${e.pattern}' must include a patternDescription to explain the pattern to the LLM`);t.push(e.patternDescription)}if(e.name==="date"&&t.push("Format: YYYY-MM-DD"),e.name==="datetime"&&t.push("Format: ISO 8601 date-time"),t.length===0)return s;let n=t.join(". ");return!s||s.trim().length===0?n:`${s.trim().endsWith(".")?s.trim():`${s.trim()}.`} ${n}`}function Mn(s,e="Schema"){if("name"in s&&"type"in s)return Ko(s);let t={},n=[];for(let r of s){if(r.isInternal)continue;let o=Ko(r);t[r.name]=o,r.isOptional||n.push(r.name)}return{type:"object",title:e,properties:t,required:n,additionalProperties:!1}}function Ko(s,e=!1){let t=s.type,n=Iu(s.description,t);if(e&&t?.name&&(t.name==="image"||t.name==="audio"||t.name==="file"))throw new Error(`Media type '${t.name}' is not allowed in nested object fields. Media types (image, audio, file) can only be used as top-level input fields. Field: ${s.name}`);let r={};if(n&&(r.description=n),t?.isArray)if(r.type="array",t.fields){r.items={type:"object",properties:{},required:[],additionalProperties:!1},t.description&&(r.items.description=t.description);for(let[o,i]of Object.entries(t.fields)){let a={name:o,description:i.description,type:{name:i.type,isArray:i.isArray,options:i.options?[...i.options]:void 0,fields:i.fields,minLength:i.minLength,maxLength:i.maxLength,minimum:i.minimum,maximum:i.maximum,pattern:i.pattern,patternDescription:i.patternDescription,format:i.format},isOptional:i.isOptional,isInternal:i.isInternal};r.items.properties[o]=Ko(a,!0),i.isOptional||r.items.required.push(o)}}else if(t.name==="class"&&t.options)r.items={type:"string",enum:t.options};else{let o=Iu(t.description||s.description,t);r.items={type:Cu(t.name)},o&&(r.items.description=o),t.name==="string"||t.name==="code"||t.name==="url"||t.name==="date"||t.name==="datetime"?(t.minLength!==void 0&&(r.items.minLength=t.minLength),t.maxLength!==void 0&&(r.items.maxLength=t.maxLength),t.pattern!==void 0&&(r.items.pattern=t.pattern),t.format!==void 0&&(r.items.format=t.format)):t.name==="number"&&(t.minimum!==void 0&&(r.items.minimum=t.minimum),t.maximum!==void 0&&(r.items.maximum=t.maximum))}else if(t?.name==="object"&&t.fields){r.type="object",r.properties={},r.required=[],r.additionalProperties=!1;for(let[o,i]of Object.entries(t.fields)){let a={name:o,description:i.description,type:{name:i.type,isArray:i.isArray,options:i.options?[...i.options]:void 0,fields:i.fields,minLength:i.minLength,maxLength:i.maxLength,minimum:i.minimum,maximum:i.maximum,pattern:i.pattern,patternDescription:i.patternDescription,format:i.format},isOptional:i.isOptional,isInternal:i.isInternal};r.properties[o]=Ko(a,!0),i.isOptional||r.required.push(o)}}else t?.name==="class"&&t.options?(r.type="string",r.enum=t.options):(r.type=Cu(t?.name??"string"),t?.name==="string"||t?.name==="code"||t?.name==="url"||t?.name==="date"||t?.name==="datetime"?(t.minLength!==void 0&&(r.minLength=t.minLength),t.maxLength!==void 0&&(r.maxLength=t.maxLength),t.pattern!==void 0&&(r.pattern=t.pattern),t.format!==void 0&&(r.format=t.format),t.name==="url"&&!t.format&&(r.format="uri"),t.name==="date"&&!t.format&&(r.format="date"),t.name==="datetime"&&!t.format&&(r.format="date-time")):t?.name==="number"&&(t.minimum!==void 0&&(r.minimum=t.minimum),t.maximum!==void 0&&(r.maximum=t.maximum)));return r}function Cu(s){switch(s){case"string":case"code":case"url":case"date":case"datetime":case"image":case"audio":case"file":return"string";case"number":return"number";case"boolean":return"boolean";case"json":case"object":return["object","array","string","number","boolean","null"];default:return"string"}}function Wo(s){if(!s||typeof s!="object")throw new Error("Schema must be an object");if(s.type==="array"){if(!s.items)throw new Error('Array schema is missing an "items" definition (required by JSON Schema and all LLM providers for function tools)');Wo(s.items)}else if(s.type==="object"&&s.properties)for(let e of Object.values(s.properties))Wo(e)}var Bt=class extends Error{calls;constructor(e){super(`Stop function executed: ${e.map(t=>t.func.name).join(", ")}`),this.name="AxStopFunctionCallException",this.calls=e}},Sr=class extends Error{constructor(t){super();this.fields=t;this.name="AxFunctionError"}getFields=()=>this.fields;toString(){return[`${this.name}: Function validation error`,...this.fields.map(t=>` - ${t.field}: ${t.message}`)].join(`
209
209
  `)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}},kr=class extends Error{constructor(t,n,r){super();this.fields=t;this.func=n;this.funcId=r}getFunctionId=()=>this.funcId;getFieldDescription(t){if(!this.func.parameters?.properties?.[t])return"";let n=this.func.parameters.properties[t],r=n.description;return n.enum?.length&&(r+=` Allowed values are: ${n.enum.join(", ")}`),r}getFixingInstructions=()=>{let t=this.fields.map(n=>{let r=this.getFieldDescription(n.field)||"";return`- \`${n.field}\` - ${n.message} (${r}).`});return`Errors In Function Arguments: Fix the following invalid arguments to '${this.func.name}'
210
210
  ${t.join(`
211
211
  `)}`};toString(){return[`${this.name}: Function execution error in '${this.func.name}'`,...this.fields.map(t=>{let n=this.getFieldDescription(t.field);return` - ${t.field}: ${t.message}${n?` (${n})`:""}`}),this.funcId?` Function ID: ${this.funcId}`:""].join(`
212
212
  `)}[Symbol.for("nodejs.util.inspect.custom")](t,n){return this.toString()}},Or=class{funcList=[];constructor(e){this.funcList=e}executeFunction=async(e,t,n)=>{let r;if(typeof t.args=="string"&&t.args.length>0)try{r=JSON.parse(t.args)}catch(u){throw new Error(`Invalid function arguments: ${t.args}`,{cause:u})}else r=t.args;let o=n?{sessionId:n.sessionId,traceId:n.traceId,ai:n.ai,step:n.step,abortSignal:n.abortSignal}:void 0,i;e.parameters?i=e.func.length===2?await e.func(r,o):await e.func(r):i=e.func.length===1?await e.func(o):await e.func();let l=(n?.functionResultFormatter??pe.functionResultFormatter)(i);return{formatted:String(l),rawResult:i,parsedArgs:r}};executeWithDetails=async(e,t)=>{let n=i=>i.replace(/[^a-zA-Z0-9]/g,"").toLowerCase(),r=n(e.name),o=this.funcList.find(i=>i.name===e.name);if(o||(o=this.funcList.find(i=>n(i.name)===r)),!o)throw new Error(`Function not found: ${e.name}`);if(!o.func)throw new Error(`No handler for function: ${e.name}`);try{return await this.executeFunction(o,e,t)}catch(i){throw i instanceof Sr?new kr(i.getFields(),o,e.id):i}};execute=async(e,t)=>(await this.executeWithDetails(e,t)).formatted},jt=(s,e)=>{if(s.length===0)return[...e??[]];let t=s.map(n=>"toFunction"in n?n.toFunction():n).flat();for(let n of t.filter(r=>r.parameters))if(n.parameters)try{Wo(n.parameters)}catch(r){throw r instanceof Error?new Error(`Function '${n.name}' parameters schema is invalid.
213
213
  ${r.message}
214
- Tip: Arrays must include an "items" schema (e.g., { items: { type: "string" } } or items: { type: "object", properties: { ... } }).`,{cause:r}):r}return[...e??[],...t]},Vo=async({ai:s,functionList:e,functionCalls:t,mem:n,sessionId:r,traceId:o,span:i,excludeContentFromTrace:a,index:l,functionResultFormatter:u,logger:c,debug:p,stopFunctionNames:d,step:m,abortSignal:g})=>{let h=new Or(e),f=new Set,y=[],x=R=>{let O=G=>G.replace(/[^a-zA-Z0-9]/g,"").toLowerCase(),_=O(R),M=e.find(G=>G.name===R);return M||(M=e.find(G=>O(G.name)===_)),M},A=t.map(R=>{if(!R.id)throw new Error(`Function ${R.name} did not return an ID`);let O=s.getOptions().tracer??pe.tracer;return O?O.startActiveSpan(`Tool: ${R.name}`,async _=>{try{_?.setAttributes?.({"tool.name":R.name,"tool.mode":"native","function.id":R.id,"session.id":r??""});let{formatted:M,rawResult:G,parsedArgs:B}=await h.executeWithDetails(R,{sessionId:r,ai:s,functionResultFormatter:u,traceId:_?.spanContext?.().traceId??o,stopFunctionNames:d,step:m,abortSignal:g});if(f.add(R.name.toLowerCase()),m?._recordFunctionCall(R.name,B,G),d?.includes(R.name.toLowerCase())){let L=x(R.name);L&&y.push({func:L,args:B,result:G})}if(a?_.addEvent("gen_ai.tool.message",{name:R.name}):_.addEvent("gen_ai.tool.message",{name:R.name,args:R.args,result:M??""}),i){let L={name:R.name};a||(L.args=R.args,L.result=M??""),i.addEvent("function.call",L)}return{result:M??"",role:"function",functionId:R.id,index:l}}catch(M){if(_?.recordException?.(M),M instanceof kr){let G=M.getFixingInstructions(),B={name:R.name,message:M.toString()};return a||(B.args=R.args,B.fixing_instructions=G),_?.addEvent?.("function.error",B),p&&Hs(M,l,G,c),{functionId:R.id,isError:!0,index:l,result:G,role:"function"}}throw M}finally{_?.end?.()}}):h.executeWithDetails(R,{sessionId:r,ai:s,functionResultFormatter:u,traceId:o,stopFunctionNames:d,step:m,abortSignal:g}).then(({formatted:_,rawResult:M,parsedArgs:G})=>{if(f.add(R.name.toLowerCase()),m?._recordFunctionCall(R.name,G,M),d?.includes(R.name.toLowerCase())){let B=x(R.name);B&&y.push({func:B,args:G,result:M})}if(i){let B={name:R.name};a||(B.args=R.args,B.result=_??""),i.addEvent("function.call",B)}return{result:_??"",role:"function",functionId:R.id,index:l}}).catch(_=>{if(!(_ instanceof kr))throw _;let M=_.getFixingInstructions();if(i){let G={name:R.name,message:_.toString()};a||(G.args=R.args,G.fixing_instructions=M),i.addEvent("function.error",G)}return p&&Hs(_,l,M,c),{functionId:R.id,isError:!0,index:l,result:M,role:"function"}})}),b=(await Promise.all(A)).map(R=>R.result===void 0||R.result===""?{...R,result:"done"}:R);if(n.addFunctionResults(b,r),p){let R=b.filter(O=>!O.isError);R.length>0&&Ba(R,c)}if(y.length>0)throw new Bt(y);return f};function zi(s,e,t,n){if(!e||e.length===0)return;if(!s.getFeatures(n).functions)throw new Error("Functions are not supported by the AI service");return e.map(o=>({id:o.id,name:o.function.name,args:o.function.params}))}function wu(s,e,t,n){let r=e;return!t&&(r==="required"||typeof r=="function")?{functions:[],functionCall:void 0}:s?{functions:s.map(i=>"toFunction"in i?i.toFunction():i).flat(),functionCall:r}:{functions:[],functionCall:r}}function Np(s){let e=0,t=!1,n=!1,r=!1,o=!1,i=[];for(let a=0;a<s.length;a++){let l=s[a];if(n){n=!1;continue}if(l==="\\"){n=!0;continue}if(l==='"'){t=!t;continue}t||(l==="{"?(i.push("{"),e++):l==="["?(i.push("["),e++):l==="}"?i.length>0&&i[i.length-1]==="{"&&(i.pop(),e--):l==="]"&&i.length>0&&i[i.length-1]==="["&&(i.pop(),e--))}if(i.length>0){let a=i[i.length-1];r=a==="[",o=a==="{"}return{nestingLevel:e,inString:t,inArray:r,inObject:o}}function Ru(s){if(!s.trim())return{parsed:null,partialMarker:null};try{return{parsed:JSON.parse(s),partialMarker:null}}catch{}let e=Np(s),t=Lp(s);try{return{parsed:JSON.parse(t),partialMarker:e}}catch{return{parsed:null,partialMarker:e}}}function Lp(s){let e=s.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 o=0;o<e.length;o++){let i=e[o];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*vu({res:s,usage:e,states:t,debug:n,stepContext:r,...o}){let i=(o.ai.getFeatures().functionCot??!1)&&o.functions!==void 0&&o.functions.length>0,a,l=[],u=s.getReader();try{for(;;){let{done:c,value:p}=await u.read();if(c)break;let d=p;d.modelUsage&&(a=d.modelUsage);for(let m of d.results){if(Array.isArray(m.citations))for(let h of m.citations)h?.url&&l.push({url:h.url,title:h.title,description:h.description,license:h.license,publicationDate:h.publicationDate,snippet:h.snippet});if((!m.content||m.content==="")&&(!m.thought||m.thought==="")&&(!m.thoughtBlocks||m.thoughtBlocks.length===0)&&(!m.functionCalls||m.functionCalls.length===0))continue;let g=t.find(h=>h.index===m.index);if(!g)throw new Error(`No state found for result (index: ${m.index})`);yield*Dp({...o,result:m,skipEarlyFail:i,state:g,debug:n})}}}finally{u.releaseLock()}for(let c of t)yield*Gp({...o,state:c,debug:n,stepContext:r});if(a){if(l.length){let c=Array.from(new Map(l.filter(p=>p.url).map(p=>[p.url,p])).values());a.citations=c}if(e.push(a),n&&o.logger){let c=structuredClone(a);delete c.citations,o.logger({name:"ChatResponseUsage",value:c}),a.citations&&a.citations.length>0&&o.logger({name:"ChatResponseCitations",value:a.citations})}}}async function*Dp({result:s,mem:e,sessionId:t,strictMode:n,skipEarlyFail:r,treatAllFieldsOptional:o,state:i,signature:a,streamingFieldProcessors:l,thoughtFieldName:u,streamingAsserts:c,asserts:p}){if(s.functionCalls&&s.functionCalls.length>0)no(i.functionCalls,s.functionCalls),e.updateResult({name:s.name,content:s.content,functionCalls:i.functionCalls,thoughtBlocks:s.thoughtBlocks,delta:s.functionCalls?.[0]?.function?.params,index:s.index},t);else if(s.content&&s.content.length>0){s.thought&&s.thought.length>0&&(yield{index:s.index,delta:{[u]:s.thought}}),i.content+=s.content,e.updateResult({name:s.name,content:i.content,thoughtBlocks:s.thoughtBlocks,delta:s.content,index:s.index},t);let d=a.getOutputFields();if(a.hasComplexFields()){let{parsed:h,partialMarker:f}=Ru(i.content);if(h&&typeof h=="object"){let y={},x={};for(let A of Object.keys(h))if(d.some(T=>T.name===A)){let T=h[A],b=i.values[A];if(Array.isArray(T)&&T.length>0&&Up(T,f)&&(T=T.slice(0,-1)),x[A]=T,typeof T=="string"&&typeof b=="string"&&T.startsWith(b)){let R=T.slice(b.length);R&&(y[A]=R)}else Array.isArray(T)&&Array.isArray(b)?T.length>b.length&&(y[A]=T.slice(b.length)):JSON.stringify(T)!==JSON.stringify(b)&&(Array.isArray(T)||(y[A]=T))}try{On(a,x,{allowMissingRequired:!0})}catch{}Object.assign(i.values,x),Object.keys(y).length>0&&(yield{index:s.index,delta:y});return}}if(Ui(a,i.values,i.xstate,i.content,{strictMode:n,skipEarlyFail:r,treatAllFieldsOptional:o}))return;c.length!==0&&await Ii(c,i.xstate,i.content),l.length!==0&&await qi(l,i.content,i.xstate,e,i.values,t),yield*ji(a,i.content,i.values,i.xstate,s.index),await vn(p,i.values)}else s.thought&&s.thought.length>0?(i.values[u]=(i.values[u]??"")+s.thought,yield{index:s.index,delta:{[u]:s.thought}},e.updateResult({name:s.name,content:i.content,delta:"",index:s.index,thought:s.thought,thoughtBlocks:s.thoughtBlocks},t)):s.thoughtBlocks&&s.thoughtBlocks.length>0&&e.updateResult({name:s.name,content:i.content,delta:"",index:s.index,thoughtBlocks:s.thoughtBlocks},t);if(s.finishReason==="length")throw new Error(`Max tokens reached before completion
215
- Content: ${i.content}`)}async function*Gp({state:s,signature:e,ai:t,model:n,functions:r,mem:o,sessionId:i,traceId:a,span:l,strictMode:u,excludeContentFromTrace:c,streamingAsserts:p,asserts:d,fieldProcessors:m,streamingFieldProcessors:g,functionResultFormatter:h,signatureToolCallingManager:f,logger:y,debug:x,stopFunctionNames:A,stepContext:T,abortSignal:b}){let R=f?void 0:zi(t,s.functionCalls,s.values,n);if(R){if(!r)throw new Error("Functions are not defined");let O=await Vo({ai:t,functionList:r,functionCalls:R,mem:o,sessionId:i,traceId:a,span:l,index:s.index,excludeContentFromTrace:c,functionResultFormatter:h,logger:y,debug:x,stopFunctionNames:A,step:T,abortSignal:b});s.functionsExecuted=new Set([...s.functionsExecuted,...O]),s.functionCalls=[]}else{let O=e.getOutputFields(),_=e.hasComplexFields(),M=!1;if(_)try{let G=JSON.parse(s.content),B={};for(let L of Object.keys(G))if(O.some(I=>I.name===L)){let I=G[L],v=s.values[L];if(typeof I=="string"&&typeof v=="string"&&I.startsWith(v)){let E=I.slice(v.length);E&&(B[L]=E)}else Array.isArray(I)&&Array.isArray(v)?I.length>v.length&&(B[L]=I.slice(v.length)):JSON.stringify(I)!==JSON.stringify(v)&&(Array.isArray(I)||(B[L]=I))}try{On(e,B,{allowMissingRequired:!0})}catch(L){let I=(L.message||"").toLowerCase();if(I.includes("at least")||I.includes("at most")||I.includes("must match pattern")||I.includes("invalid url")||I.includes("required")||I.includes("missing")||I.includes("valid email")||I.includes("number must be"))throw L}for(let L of Object.keys(G))O.some(I=>I.name===L)&&(s.values[L]=G[L]);yield{index:s.index,delta:B},M=!0}catch(G){let B=(G.message||"").toLowerCase();if(B.includes("at least")||B.includes("at most")||B.includes("must match pattern")||B.includes("invalid url")||B.includes("required")||B.includes("missing")||B.includes("valid email")||B.includes("number must be"))throw G}if(!M){let G=f!==void 0;Bi(e,s.values,s.xstate,s.content,{strictMode:u,treatAllFieldsOptional:G,deferRequiredCheckForStreaming:!0,forceFinalize:!0})}if(f){let G=await f.processResults(s.values);if(G&&G.length>0){if(!r)throw new Error("Functions are not defined");let B=await Vo({ai:t,functionList:r,functionCalls:G,mem:o,sessionId:i,traceId:a,span:l,index:s.index,excludeContentFromTrace:c,functionResultFormatter:h,logger:y,debug:x,stopFunctionNames:A,step:T,abortSignal:b});s.functionsExecuted=new Set([...s.functionsExecuted,...B]),o.updateResult({name:void 0,content:s.content,functionCalls:G.map(L=>({id:L.id,type:"function",function:{name:L.name,params:L.args}})),index:s.index},i);return}}await Ii(p,s.xstate,s.content,!0),await vn(d,s.values),m.length&&await vr(m,s.values,o,i),g.length!==0&&await qi(g,s.content,s.xstate,o,s.values,i,!0),yield*ji(e,s.content,s.values,s.xstate,s.index)}}async function*Su({ai:s,res:e,mem:t,sessionId:n,traceId:r,functions:o,span:i,strictMode:a,states:l,usage:u,excludeContentFromTrace:c,asserts:p,fieldProcessors:d,thoughtFieldName:m,signature:g,functionResultFormatter:h,logger:f,debug:y,signatureToolCallingManager:x,stopFunctionNames:A,disableMemoryCleanup:T,stepContext:b,abortSignal:R}){let O=e.results??[],_=x!==void 0;t.addResponse(O,n);let M=[];for(let I of O)if(Array.isArray(I?.citations))for(let v of I.citations)v?.url&&M.push({url:v.url,title:v.title,description:v.description,license:v.license,publicationDate:v.publicationDate,snippet:v.snippet});for(let I of O){let v=l[I.index];if(!v)throw new Error(`No state found for result (index: ${I.index})`);if(e.modelUsage){let E=Array.from(new Map(M.filter(S=>S.url).map(S=>[S.url,S])).values()),$={...e.modelUsage,...E.length?{citations:E}:{}};if(u.push($),y&&f){let S=structuredClone($);delete S.citations,f({name:"ChatResponseUsage",value:S}),$.citations&&$.citations.length>0&&f({name:"ChatResponseCitations",value:$.citations})}}if(x&&I.content){I.thought&&I.thought.length>0&&(v.values[m]=I.thought),Ho(g,v.values,I.content,{strictMode:a,treatAllFieldsOptional:_});let $=(await x.processResults(v.values))?.map(S=>({id:S.id,type:"function",function:{name:S.name,params:S.args}}));$&&$.length>0&&t.updateResult({name:I.name,content:I.content,functionCalls:$,index:I.index},n)}if(I.functionCalls?.length){let E=zi(s,I.functionCalls,v.values);if(E&&E.length>0){if(!o)throw new Error("Functions are not defined");let $;try{$=await Vo({ai:s,functionList:o,functionCalls:E,mem:t,sessionId:n,traceId:r,span:i,excludeContentFromTrace:c,index:I.index,functionResultFormatter:h,logger:f,debug:y,stopFunctionNames:A,step:b,abortSignal:R})}catch(S){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),S}v.functionsExecuted=new Set([...v.functionsExecuted,...$])}}else if(I.content){I.thought&&I.thought.length>0&&(v.values[m]=I.thought);let E=g.getOutputFields();if(g.hasComplexFields())try{let S=JSON.parse(I.content),P={};for(let j of Object.keys(S))E.some(N=>N.name===j)&&(P[j]=S[j]);On(g,P),Object.assign(v.values,P)}catch(S){let P=S instanceof SyntaxError;if((S.name?.includes("ValidationError")||S.name?.includes("Error"))&&!P){let N=(S.message||"").toLowerCase();if(N.includes("at least")||N.includes("at most")||N.includes("must match pattern")||N.includes("invalid url")||N.includes("required")||N.includes("missing")||N.includes("valid email")||N.includes("number must be"))throw S}if(P)Ho(g,v.values,I.content,{strictMode:a,treatAllFieldsOptional:_});else throw S}else Ho(g,v.values,I.content,{strictMode:a,treatAllFieldsOptional:_})}if(await vn(p,v.values),T||(t.removeByTag("correction",n),t.removeByTag("error",n)),d.length&&await vr(d,v.values,t,n),I.finishReason==="length")throw new Error(`Max tokens reached before completion
216
- Content: ${I.content}`)}let G=l.map(I=>I.values);for(let I of G)for(let v of g.getOutputFields())v.isInternal&&delete I[v.name];let B=g.getOutputFields(),L=G.map((I,v)=>{let E={};for(let $ of B)$.isInternal||(E[$.name]=I[$.name]);return I[m]!==void 0&&(E[m]=I[m]),{index:v,delta:E}});for(let I of L)yield I}function Up(s,e){return e?!!(e.nestingLevel>0||e.inArray||e.inObject):!1}function ku(s,e,t,n){let r=s.getLast(n);if(!r)return!0;for(let[o,i]of t.entries()){let a=e?Array.from(e).some(p=>i.functionsExecuted.has(p)):!1;if(!r.chat[o])throw new Error(`No chat message found for result (index: ${o})`);let u=r.role==="function",c=r.tags?r.tags.some(p=>p==="processor"):!1;if(u&&e&&a||!(u||c))return!1}return!0}var Bp=["none","minimal","low","medium","high","highest"];function Hi(s,e,t){let n={};if(e.model!==!1){let a=s.getModelList();if(a&&a.length>0){let l=a.filter(u=>"model"in u);if(l.length>0){let u=l.map(p=>p.key),c=l.map(p=>`${p.key} (${p.description})`);n.model={type:"string",enum:u,description:`${t&&u.includes(t)?`Currently using model: ${t}. `:""}Switch model for the next step. Prefer faster/cheaper models for simple tasks; use more capable models for complex reasoning, math, or multi-step analysis. Available: ${c.join(", ")}`}}}}e.thinkingBudget!==!1&&(n.thinkingBudget={type:"string",enum:[...Bp],description:"Reasoning depth for the next step. none/minimal: simple lookups or reformatting. low/medium: moderate analysis, summarization. high/highest: math, logic, code analysis, or multi-step reasoning. Higher budgets use more tokens."}),e.temperature&&(n.temperature={type:"number",description:"Sampling temperature for the next step. Lower values (0\u20130.3) for deterministic tasks like math or code; higher values (0.7\u20131.0) for creative or exploratory tasks."});let r;if(e.functions&&e.functions.length>0){r=jt(e.functions);let a=r.map(u=>u.name),l=r.map(u=>`${u.name} (${u.description})`);n.addFunctions={type:"array",items:{type:"string",enum:a},description:`Activate tools you need for the current sub-task. Only add what you will use immediately \u2014 fewer active tools means less noise. Available: ${l.join(", ")}`},n.removeFunctions={type:"array",items:{type:"string",enum:a},description:"Remove tools you are done with to reduce context size and maintain focus on remaining work."}}let o=r;return{name:"adjustGeneration",description:"Adjust model, reasoning depth, or active tools for the next step. Call when task complexity changes \u2014 upgrade for hard reasoning or analysis, downgrade for simple follow-ups. Only call when there is a clear reason to change.",parameters:Object.keys(n).length>0?{type:"object",properties:n}:void 0,func:(a,l)=>{let u=l?.step;if(!u)return"Generation parameters adjusted for next response.";if(a?.model&&u.setModel(a.model),a?.thinkingBudget&&u.setThinkingBudget(a.thinkingBudget),a?.temperature!==void 0&&u.setTemperature(a.temperature),a?.addFunctions?.length&&o){let c=o.filter(p=>a.addFunctions.includes(p.name));c.length>0&&u.addFunctions(c)}return a?.removeFunctions?.length&&u.removeFunctions(...a.removeFunctions),"Generation parameters adjusted for next response."}}}var En=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 de=class extends Error{constructor(t,n,r,o){super(t);this.position=n;this.context=r;this.suggestion=o;this.name="SignatureValidationError"}},Ki=class{input;position;currentFieldName=null;currentSection="description";constructor(e){if(this.input=e.trim(),this.position=0,!this.input)throw new de("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 de("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 de('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 de(`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 de)throw e;let t=e instanceof Error?e.message:"Unknown error";throw new de(t,this.position,this.getErrorContext())}}validateParsedSignature(e){let t=new Set;for(let r of e.inputs){if(t.has(r.name))throw new de(`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 de(`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 de(`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 de("Signature must have at least one input field",0,"",'Add an input field before "->". Example: "userInput:string -> ..."');if(e.outputs.length===0)throw new de("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),o=`${" ".repeat(n.length)}^`;return[`Position ${this.position} in signature:`,`"${n}${r}"`,` ${o}`].join(`
217
- `)}parseFieldList(e,t){let n=[];if(this.skipWhitespace(),this.position>=this.input.length)throw new de(`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 de?r:new de(`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 de(`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 de?r:new de(`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 de(`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 de(`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 o=this.parseTypeNotClass(),i=this.match("[]");n={name:o,isArray:i}}catch(o){throw o instanceof de?o:new de(`Input field "${e}": ${o instanceof Error?o.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 de(`Output field "${e}": Missing class options after "class" type`,this.position,this.getErrorContext(),'Add class names in quotes. Example: class "positive, negative, neutral"');let l=a.split(/[,|]/).map(u=>u.trim()).filter(u=>u.length>0);if(l.length===0)throw new de(`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:l}}else try{let i=this.parseTypeNotClass(),a=this.match("[]");if(r={name:i,isArray:a},i==="image"&&a)throw new de(`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 de(`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 de(`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 de(`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 de?i:new de(`Output field "${e}": ${i instanceof Error?i.message:"Unknown error"}`,this.position,this.getErrorContext())}this.skipWhitespace();let o=this.parseParsedString();return{name:e,desc:o?.trim(),type:r,isOptional:t,isInternal:n}}validateFieldName(e,t){if(pe.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 de(`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 de(`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 de(`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 de(`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),o=`Invalid type "${n||"empty"}"`,i=r?`. Did you mean "${r}"?`:"",a=`${o}${i}`;throw new de(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 de("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 de(`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 de(`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,o=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(o,Math.min(this.position,o+20));throw new de(`Unterminated string starting at position ${o}`,o,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 de(`Expected "->" but found "${e}..."`,this.position,this.getErrorContext(),t)}}};function Ou(s){return new Ki(s).parse()}var Mr=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(([o,i])=>[o,Wi(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(([o,i])=>[o,Wi(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 Pe(e);return this._useStructuredOutputs&&(t._forceComplexFields=!0,t._hasComplexFields=void 0),t}},Ge=class s{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 s({...this,isOptional:!0})}array(e){return new s({...this,isArray:!0,description:e||this.description,itemDescription:e?this.description:void 0})}internal(){return new s({...this,isInternal:!0})}cache(){return new s({...this,isCached:!0})}min(e){return this.type==="string"?new s({...this,minLength:e}):this.type==="number"?new s({...this,minimum:e}):this}max(e){return this.type==="string"?new s({...this,maxLength:e}):this.type==="number"?new s({...this,maximum:e}):this}email(){return this.type==="string"?new s({...this,format:"email"}):this}url(){return this.type==="string"?new s({...this,format:"uri"}):this}regex(e,t){return this.type==="string"?new s({...this,pattern:e,patternDescription:t}):this}date(){return this.type==="string"?new s({...this,format:"date"}):this}datetime(){return this.type==="string"?new s({...this,format:"date-time"}):this}},Ae=Object.assign(()=>new Mr,{string:s=>new Ge({type:"string",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),number:s=>new Ge({type:"number",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),boolean:s=>new Ge({type:"boolean",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),json:s=>new Ge({type:"json",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),datetime:s=>new Ge({type:"datetime",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),date:s=>new Ge({type:"date",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),class:(s,e)=>new Ge({type:"class",isArray:!1,options:s,description:e,isOptional:!1,isInternal:!1,isCached:!1}),image:s=>new Ge({type:"image",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),audio:s=>new Ge({type:"audio",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),file:s=>new Ge({type:"file",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),url:s=>new Ge({type:"url",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),email:s=>new Ge({type:"string",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1,format:"email"}),code:(s,e)=>new Ge({type:"code",isArray:!1,description:e||s,isOptional:!1,isInternal:!1,isCached:!1}),object:(s,e)=>new Ge({type:"object",isArray:!1,fields:s,description:e,isOptional:!1,isInternal:!1,isCached:!1})});function Wi(s){return{type:s.type,isArray:s.isArray,options:s.options,description:s.description,isOptional:s.isOptional,isInternal:s.isInternal,minLength:s.minLength,maxLength:s.maxLength,minimum:s.minimum,maximum:s.maximum,pattern:s.pattern,patternDescription:s.patternDescription,format:s.format,fields:s.fields?Object.fromEntries(Object.entries(s.fields).map(([e,t])=>[e,Wi(t)])):void 0}}function Jo(s){return{type:{name:s.type,isArray:s.isArray,options:s.options?[...s.options]:void 0,fields:s.fields},description:s.description,isOptional:s.isOptional,isInternal:s.isInternal}}var ae=class extends Error{constructor(t,n,r){super(t);this.fieldName=n;this.suggestion=r;this.name="AxSignatureValidationError"}},Pe=class s{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=Ou(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 ae(`Invalid Signature: ${n.message}`,void 0,r)}throw new ae(`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 s)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 ae("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 ae("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 ae?t:new ae(`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 ae("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 s(e)}parseParsedField=e=>{if(!e.name||e.name.length===0)throw new ae("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 ae("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 ae("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);It(t,"input");for(let n of this.inputFields)if(n.name===t.name)throw new ae(`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 ae(`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 ae?t:new ae(`Failed to add input field "${e.name}": ${t instanceof Error?t.message:"Unknown error"}`,e.name)}};addOutputField=e=>{try{let t=this.parseField(e);It(t,"output");for(let n of this.outputFields)if(n.name===t.name)throw new ae(`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 ae(`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 ae?t:new ae(`Failed to add output field "${e.name}": ${t instanceof Error?t.message:"Unknown error"}`,e.name)}};setInputFields=e=>{if(!Array.isArray(e))throw new ae("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 It(r,"input"),r});this.inputFields=t,this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ae?t:new ae(`Failed to set input fields: ${t instanceof Error?t.message:"Unknown error"}`)}};setOutputFields=e=>{if(!Array.isArray(e))throw new ae("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 It(r,"output"),r});this.outputFields=t,this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ae?t:new ae(`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 s(this);return n.addInputField({name:e,...Jo(t)}),n};prependInputField=(e,t)=>{let n=new s(this),r={name:e,...Jo(t)},o=n.parseField(r);It(o,"input");for(let i of n.inputFields)if(i.name===o.name)throw new ae(`Duplicate input field name: "${o.name}"`,o.name,"Each field name must be unique within the signature");for(let i of n.outputFields)if(i.name===o.name)throw new ae(`Field name "${o.name}" appears in both inputs and outputs`,o.name,"Use different names for input and output fields to avoid confusion");return n.inputFields.unshift(o),n.invalidateValidationCache(),n.updateHashLight(),n};appendOutputField=(e,t)=>{let n=new s(this);return n.addOutputField({name:e,...Jo(t)}),n};prependOutputField=(e,t)=>{let n=new s(this),r={name:e,...Jo(t)},o=n.parseField(r);It(o,"output");for(let i of n.outputFields)if(i.name===o.name)throw new ae(`Duplicate output field name: "${o.name}"`,o.name,"Each field name must be unique within the signature");for(let i of n.inputFields)if(i.name===o.name)throw new ae(`Field name "${o.name}" appears in both inputs and outputs`,o.name,"Use different names for input and output fields to avoid confusion");return n.outputFields.unshift(o),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=>{It(e,"input")}),this.getOutputFields().forEach(e=>{It(e,"output")}),this.sigHash=et("sha256").update(JSON.stringify(this.inputFields)).update(JSON.stringify(this.outputFields)).digest("hex"),this.sigString=Eu(this.description,this.inputFields,this.outputFields),this._hasComplexFields=this.computeHasComplexFields(),[this.sigHash,this.sigString]}catch(e){throw e instanceof ae?e:new ae(`Signature validation failed: ${e instanceof Error?e.message:"Unknown error"}`)}};updateHash=()=>{try{return this.getInputFields().forEach(e=>{It(e,"input")}),this.getOutputFields().forEach(e=>{It(e,"output")}),this.validateSignatureConsistency(),this.sigHash=et("sha256").update(this.description??"").update(JSON.stringify(this.inputFields)).update(JSON.stringify(this.outputFields)).digest("hex"),this.sigString=Eu(this.description,this.inputFields,this.outputFields),this._hasComplexFields=this.computeHasComplexFields(),[this.sigHash,this.sigString]}catch(e){throw e instanceof ae?e:new ae(`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 ae(`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 ae(`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 ae(`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 ae("Signature must have at least one input field",void 0,'Add an input field. Example: "userInput:string -> ..."');if(this.outputFields.length===0)throw new ae("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 Mn(e,this.description??"Schema")};toInputJSONSchema=()=>Mn(this.inputFields,this.description??"Schema")};function Mu(s){let e=s.name;return s.isOptional&&(e+="?"),s.isInternal&&(e+="!"),s.type&&(e+=`:${s.type.name}`,s.type.isArray&&(e+="[]"),s.type.name==="class"&&s.type.options&&(e+=` "${s.type.options.join(" | ")}"`)),s.description&&s.type?.name!=="class"&&(e+=` "${s.description}"`),e}function Eu(s,e,t){let n=s?`"${s}" `:"",r=e.map(Mu).join(", "),o=t.map(Mu).join(", ");return`${n}${r} -> ${o}`}function jp(s){let e=/^[a-z][a-zA-Z0-9]*$/,t=/^[a-z]+(_[a-z0-9]+)*$/;return e.test(s)||t.test(s)}function It(s,e){if(!s.name||s.name.length===0)throw new ae("Field name cannot be blank",s.name,"Every field must have a descriptive name");if(!jp(s.name))throw new ae(`Invalid field name '${s.name}' - must be camelCase or snake_case`,s.name,'Use camelCase (e.g., "userInput") or snake_case (e.g., "user_input")');if(pe.signatureStrict&&["text","object","image","string","number","boolean","json","array","datetime","date","time","type","class","input","output","data","value","result","response","request","item","element"].includes(s.name.toLowerCase())){let n=e==="input"?["userInput","questionText","documentContent","messageText","queryString"]:["responseText","analysisResult","categoryType","summaryText","outputData"];throw new ae(`Field name '${s.name}' is too generic`,s.name,`Use a more descriptive name. Examples for ${e} fields: ${n.join(", ")}`)}if(s.name.length<2)throw new ae(`Field name '${s.name}' is too short`,s.name,"Field names must be at least 2 characters long");if(s.name.length>50)throw new ae(`Field name '${s.name}' is too long (${s.name.length} characters)`,s.name,"Field names should be 50 characters or less");s.type&&qp(s,e)}function qp(s,e){if(!s.type)return;let{type:t}=s;if((t.name==="image"||t.name==="audio"||t.name==="file")&&e==="output")throw new ae(`${t.name} type is not supported in output fields`,s.name,`${t.name} types can only be used in input fields`);if(t.name==="class"){if(e==="input")throw new ae("Class type is not supported in input fields",s.name,'Class types are only allowed on output fields. Use "string" type for input classifications');if(!t.options||t.options.length===0)throw new ae("Class type requires options",s.name,'Provide class options. Example: class "positive, negative, neutral"');for(let r of t.options){if(!r||r.trim().length===0)throw new ae("Empty class option found",s.name,"All class options must be non-empty strings");let o=r.trim();if(o.includes(",")||o.includes("|"))throw new ae(`Invalid class option "${o}"`,s.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 ae("Duplicate class options found",s.name,"Each class option must be unique (case-insensitive)")}if(t.name==="code"&&t.isArray)throw new ae("Arrays of code are not commonly supported",s.name,"Consider using a single code field or an array of strings instead");if(s.isInternal&&e==="input")throw new ae("Internal marker (!) is not allowed on input fields",s.name,"Internal markers are only allowed on output fields");t.name==="object"&&t.fields&&Vi(t.fields,s.name,e)}function Vi(s,e,t,n=1){for(let[r,o]of Object.entries(s)){let i=`${e}.${r}`;if(o.type==="image"||o.type==="audio"||o.type==="file")throw new ae(`${o.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}.`);o.type==="object"&&o.fields&&Vi(o.fields,i,t,n+1),o.isArray&&o.fields&&Vi(o.fields,`${i}[]`,t,n+1)}}var Nt=class s{signature;sigHash;examples;examplesOptions;demos;trace;usage=[];traceLabel;key;children;childNames=new Map;childCount=0;constructor(e,t){this.signature=new Pe(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 En,this.key={id:"root"}}getSignature(){return new Pe(this.signature)}setSignature(e){this.signature=new Pe(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,o=[...r.getInputFields(),...r.getOutputFields()];this.examples=n.map(i=>{let a={};for(let l of o){let u=i[l.name];u!==void 0&&(wr(l,u),a[l.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();e=[...e,...n??[]]}return Rr(e)}resetUsage(){this.usage=[];for(let e of Array.from(this.children))e?.resetUsage()}static _propagating=!1;setDemos(e,t){if(!s._propagating&&e.length>0){let u=new Set(this.namedPrograms().map(p=>p.id)),c=[...new Set(e.map(p=>p.programId))].filter(p=>!u.has(p));if(c.length>0){let p=[...u].join(", ");throw new Error(`Unknown program ID(s) in demos: ${c.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,o=[...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,c)=>{let p={};for(let g of o){let h=u[g.name];h!==void 0&&(wr(g,h),p[g.name]=h)}let d=Object.keys(p).some(g=>i.has(g));if(!Object.keys(p).some(g=>a.has(g)))throw new Error(`Demo trace[${c}] for '${this.key.id}' has no output field values. Expected at least one of: ${[...a].join(", ")}`);if(!d)throw new Error(`Demo trace[${c}] 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 l=s._propagating;s._propagating=!0;try{for(let u of Array.from(this.children))u?.setDemos(e,t)}finally{s._propagating=l}}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}applyOptimization(e){this.setDemos(e.demos??[],{modelConfig:e.modelConfig})}};var Pu=`
214
+ Tip: Arrays must include an "items" schema (e.g., { items: { type: "string" } } or items: { type: "object", properties: { ... } }).`,{cause:r}):r}return[...e??[],...t]},Vo=async({ai:s,functionList:e,functionCalls:t,mem:n,sessionId:r,traceId:o,span:i,excludeContentFromTrace:a,index:l,functionResultFormatter:u,logger:c,debug:p,stopFunctionNames:d,step:m,abortSignal:g})=>{let h=new Or(e),f=new Set,y=[],x=R=>{let O=G=>G.replace(/[^a-zA-Z0-9]/g,"").toLowerCase(),_=O(R),M=e.find(G=>G.name===R);return M||(M=e.find(G=>O(G.name)===_)),M},A=t.map(R=>{if(!R.id)throw new Error(`Function ${R.name} did not return an ID`);let O=s.getOptions().tracer??pe.tracer;return O?O.startActiveSpan(`Tool: ${R.name}`,async _=>{try{_?.setAttributes?.({"tool.name":R.name,"tool.mode":"native","function.id":R.id,"session.id":r??""});let{formatted:M,rawResult:G,parsedArgs:B}=await h.executeWithDetails(R,{sessionId:r,ai:s,functionResultFormatter:u,traceId:_?.spanContext?.().traceId??o,stopFunctionNames:d,step:m,abortSignal:g});if(f.add(R.name.toLowerCase()),m?._recordFunctionCall(R.name,B,G),d?.includes(R.name.toLowerCase())){let L=x(R.name);L&&y.push({func:L,args:B,result:G})}if(a?_.addEvent("gen_ai.tool.message",{name:R.name}):_.addEvent("gen_ai.tool.message",{name:R.name,args:R.args,result:M??""}),i){let L={name:R.name};a||(L.args=R.args,L.result=M??""),i.addEvent("function.call",L)}return{result:M??"",role:"function",functionId:R.id,index:l}}catch(M){if(_?.recordException?.(M),M instanceof kr){let G=M.getFixingInstructions(),B={name:R.name,message:M.toString()};return a||(B.args=R.args,B.fixing_instructions=G),_?.addEvent?.("function.error",B),p&&Hs(M,l,G,c),{functionId:R.id,isError:!0,index:l,result:G,role:"function"}}throw M}finally{_?.end?.()}}):h.executeWithDetails(R,{sessionId:r,ai:s,functionResultFormatter:u,traceId:o,stopFunctionNames:d,step:m,abortSignal:g}).then(({formatted:_,rawResult:M,parsedArgs:G})=>{if(f.add(R.name.toLowerCase()),m?._recordFunctionCall(R.name,G,M),d?.includes(R.name.toLowerCase())){let B=x(R.name);B&&y.push({func:B,args:G,result:M})}if(i){let B={name:R.name};a||(B.args=R.args,B.result=_??""),i.addEvent("function.call",B)}return{result:_??"",role:"function",functionId:R.id,index:l}}).catch(_=>{if(!(_ instanceof kr))throw _;let M=_.getFixingInstructions();if(i){let G={name:R.name,message:_.toString()};a||(G.args=R.args,G.fixing_instructions=M),i.addEvent("function.error",G)}return p&&Hs(_,l,M,c),{functionId:R.id,isError:!0,index:l,result:M,role:"function"}})}),b=(await Promise.all(A)).map(R=>R.result===void 0||R.result===""?{...R,result:"done"}:R);if(n.addFunctionResults(b,r),p){let R=b.filter(O=>!O.isError);R.length>0&&Ua(R,c)}if(y.length>0)throw new Bt(y);return f};function zi(s,e,t,n){if(!e||e.length===0)return;if(!s.getFeatures(n).functions)throw new Error("Functions are not supported by the AI service");return e.map(o=>({id:o.id,name:o.function.name,args:o.function.params}))}function Tu(s,e,t,n){let r=e;return!t&&(r==="required"||typeof r=="function")?{functions:[],functionCall:void 0}:s?{functions:s.map(i=>"toFunction"in i?i.toFunction():i).flat(),functionCall:r}:{functions:[],functionCall:r}}function Np(s){let e=0,t=!1,n=!1,r=!1,o=!1,i=[];for(let a=0;a<s.length;a++){let l=s[a];if(n){n=!1;continue}if(l==="\\"){n=!0;continue}if(l==='"'){t=!t;continue}t||(l==="{"?(i.push("{"),e++):l==="["?(i.push("["),e++):l==="}"?i.length>0&&i[i.length-1]==="{"&&(i.pop(),e--):l==="]"&&i.length>0&&i[i.length-1]==="["&&(i.pop(),e--))}if(i.length>0){let a=i[i.length-1];r=a==="[",o=a==="{"}return{nestingLevel:e,inString:t,inArray:r,inObject:o}}function wu(s){if(!s.trim())return{parsed:null,partialMarker:null};try{return{parsed:JSON.parse(s),partialMarker:null}}catch{}let e=Np(s),t=Lp(s);try{return{parsed:JSON.parse(t),partialMarker:e}}catch{return{parsed:null,partialMarker:e}}}function Lp(s){let e=s.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 o=0;o<e.length;o++){let i=e[o];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*Ru({res:s,usage:e,states:t,debug:n,stepContext:r,...o}){let i=(o.ai.getFeatures().functionCot??!1)&&o.functions!==void 0&&o.functions.length>0,a,l=[],u=s.getReader();try{for(;;){let{done:c,value:p}=await u.read();if(c)break;let d=p;d.modelUsage&&(a=d.modelUsage);for(let m of d.results){if(Array.isArray(m.citations))for(let h of m.citations)h?.url&&l.push({url:h.url,title:h.title,description:h.description,license:h.license,publicationDate:h.publicationDate,snippet:h.snippet});if((!m.content||m.content==="")&&(!m.thought||m.thought==="")&&(!m.thoughtBlocks||m.thoughtBlocks.length===0)&&(!m.functionCalls||m.functionCalls.length===0))continue;let g=t.find(h=>h.index===m.index);if(!g)throw new Error(`No state found for result (index: ${m.index})`);yield*Dp({...o,result:m,skipEarlyFail:i,state:g,debug:n})}}}finally{u.releaseLock()}for(let c of t)yield*Gp({...o,state:c,debug:n,stepContext:r});if(a){if(l.length){let c=Array.from(new Map(l.filter(p=>p.url).map(p=>[p.url,p])).values());a.citations=c}if(e.push(a),n&&o.logger){let c=structuredClone(a);delete c.citations,o.logger({name:"ChatResponseUsage",value:c}),a.citations&&a.citations.length>0&&o.logger({name:"ChatResponseCitations",value:a.citations})}}}async function*Dp({result:s,mem:e,sessionId:t,strictMode:n,skipEarlyFail:r,treatAllFieldsOptional:o,state:i,signature:a,streamingFieldProcessors:l,thoughtFieldName:u,streamingAsserts:c,asserts:p}){if(s.functionCalls&&s.functionCalls.length>0)no(i.functionCalls,s.functionCalls),e.updateResult({name:s.name,content:s.content,functionCalls:i.functionCalls,thoughtBlocks:s.thoughtBlocks,delta:s.functionCalls?.[0]?.function?.params,index:s.index},t);else if(s.content&&s.content.length>0){s.thought&&s.thought.length>0&&(yield{index:s.index,delta:{[u]:s.thought}}),i.content+=s.content,e.updateResult({name:s.name,content:i.content,thoughtBlocks:s.thoughtBlocks,delta:s.content,index:s.index},t);let d=a.getOutputFields();if(a.hasComplexFields()){let{parsed:h,partialMarker:f}=wu(i.content);if(h&&typeof h=="object"){let y={},x={};for(let A of Object.keys(h))if(d.some(T=>T.name===A)){let T=h[A],b=i.values[A];if(Array.isArray(T)&&T.length>0&&Up(T,f)&&(T=T.slice(0,-1)),x[A]=T,typeof T=="string"&&typeof b=="string"&&T.startsWith(b)){let R=T.slice(b.length);R&&(y[A]=R)}else Array.isArray(T)&&Array.isArray(b)?T.length>b.length&&(y[A]=T.slice(b.length)):JSON.stringify(T)!==JSON.stringify(b)&&(Array.isArray(T)||(y[A]=T))}try{On(a,x,{allowMissingRequired:!0})}catch{}Object.assign(i.values,x),Object.keys(y).length>0&&(yield{index:s.index,delta:y});return}}if(Ui(a,i.values,i.xstate,i.content,{strictMode:n,skipEarlyFail:r,treatAllFieldsOptional:o}))return;c.length!==0&&await Ii(c,i.xstate,i.content),l.length!==0&&await qi(l,i.content,i.xstate,e,i.values,t),yield*ji(a,i.content,i.values,i.xstate,s.index),await vn(p,i.values)}else s.thought&&s.thought.length>0?(i.values[u]=(i.values[u]??"")+s.thought,yield{index:s.index,delta:{[u]:s.thought}},e.updateResult({name:s.name,content:i.content,delta:"",index:s.index,thought:s.thought,thoughtBlocks:s.thoughtBlocks},t)):s.thoughtBlocks&&s.thoughtBlocks.length>0&&e.updateResult({name:s.name,content:i.content,delta:"",index:s.index,thoughtBlocks:s.thoughtBlocks},t);if(s.finishReason==="length")throw new Error(`Max tokens reached before completion
215
+ Content: ${i.content}`)}async function*Gp({state:s,signature:e,ai:t,model:n,functions:r,mem:o,sessionId:i,traceId:a,span:l,strictMode:u,excludeContentFromTrace:c,streamingAsserts:p,asserts:d,fieldProcessors:m,streamingFieldProcessors:g,functionResultFormatter:h,signatureToolCallingManager:f,logger:y,debug:x,stopFunctionNames:A,stepContext:T,abortSignal:b}){let R=f?void 0:zi(t,s.functionCalls,s.values,n);if(R){if(!r)throw new Error("Functions are not defined");let O=await Vo({ai:t,functionList:r,functionCalls:R,mem:o,sessionId:i,traceId:a,span:l,index:s.index,excludeContentFromTrace:c,functionResultFormatter:h,logger:y,debug:x,stopFunctionNames:A,step:T,abortSignal:b});s.functionsExecuted=new Set([...s.functionsExecuted,...O]),s.functionCalls=[]}else{let O=e.getOutputFields(),_=e.hasComplexFields(),M=!1;if(_)try{let G=JSON.parse(s.content),B={};for(let L of Object.keys(G))if(O.some(I=>I.name===L)){let I=G[L],v=s.values[L];if(typeof I=="string"&&typeof v=="string"&&I.startsWith(v)){let E=I.slice(v.length);E&&(B[L]=E)}else Array.isArray(I)&&Array.isArray(v)?I.length>v.length&&(B[L]=I.slice(v.length)):JSON.stringify(I)!==JSON.stringify(v)&&(Array.isArray(I)||(B[L]=I))}try{On(e,B,{allowMissingRequired:!0})}catch(L){let I=(L.message||"").toLowerCase();if(I.includes("at least")||I.includes("at most")||I.includes("must match pattern")||I.includes("invalid url")||I.includes("required")||I.includes("missing")||I.includes("valid email")||I.includes("number must be"))throw L}for(let L of Object.keys(G))O.some(I=>I.name===L)&&(s.values[L]=G[L]);yield{index:s.index,delta:B},M=!0}catch(G){let B=(G.message||"").toLowerCase();if(B.includes("at least")||B.includes("at most")||B.includes("must match pattern")||B.includes("invalid url")||B.includes("required")||B.includes("missing")||B.includes("valid email")||B.includes("number must be"))throw G}if(!M){let G=f!==void 0;Bi(e,s.values,s.xstate,s.content,{strictMode:u,treatAllFieldsOptional:G,deferRequiredCheckForStreaming:!0,forceFinalize:!0})}if(f){let G=await f.processResults(s.values);if(G&&G.length>0){if(!r)throw new Error("Functions are not defined");let B=await Vo({ai:t,functionList:r,functionCalls:G,mem:o,sessionId:i,traceId:a,span:l,index:s.index,excludeContentFromTrace:c,functionResultFormatter:h,logger:y,debug:x,stopFunctionNames:A,step:T,abortSignal:b});s.functionsExecuted=new Set([...s.functionsExecuted,...B]),o.updateResult({name:void 0,content:s.content,functionCalls:G.map(L=>({id:L.id,type:"function",function:{name:L.name,params:L.args}})),index:s.index},i);return}}await Ii(p,s.xstate,s.content,!0),await vn(d,s.values),m.length&&await vr(m,s.values,o,i),g.length!==0&&await qi(g,s.content,s.xstate,o,s.values,i,!0),yield*ji(e,s.content,s.values,s.xstate,s.index)}}async function*vu({ai:s,res:e,mem:t,sessionId:n,traceId:r,functions:o,span:i,strictMode:a,states:l,usage:u,excludeContentFromTrace:c,asserts:p,fieldProcessors:d,thoughtFieldName:m,signature:g,functionResultFormatter:h,logger:f,debug:y,signatureToolCallingManager:x,stopFunctionNames:A,disableMemoryCleanup:T,stepContext:b,abortSignal:R}){let O=e.results??[],_=x!==void 0;t.addResponse(O,n);let M=[];for(let I of O)if(Array.isArray(I?.citations))for(let v of I.citations)v?.url&&M.push({url:v.url,title:v.title,description:v.description,license:v.license,publicationDate:v.publicationDate,snippet:v.snippet});for(let I of O){let v=l[I.index];if(!v)throw new Error(`No state found for result (index: ${I.index})`);if(e.modelUsage){let E=Array.from(new Map(M.filter(S=>S.url).map(S=>[S.url,S])).values()),$={...e.modelUsage,...E.length?{citations:E}:{}};if(u.push($),y&&f){let S=structuredClone($);delete S.citations,f({name:"ChatResponseUsage",value:S}),$.citations&&$.citations.length>0&&f({name:"ChatResponseCitations",value:$.citations})}}if(x&&I.content){I.thought&&I.thought.length>0&&(v.values[m]=I.thought),Ho(g,v.values,I.content,{strictMode:a,treatAllFieldsOptional:_});let $=(await x.processResults(v.values))?.map(S=>({id:S.id,type:"function",function:{name:S.name,params:S.args}}));$&&$.length>0&&t.updateResult({name:I.name,content:I.content,functionCalls:$,index:I.index},n)}if(I.functionCalls?.length){let E=zi(s,I.functionCalls,v.values);if(E&&E.length>0){if(!o)throw new Error("Functions are not defined");let $;try{$=await Vo({ai:s,functionList:o,functionCalls:E,mem:t,sessionId:n,traceId:r,span:i,excludeContentFromTrace:c,index:I.index,functionResultFormatter:h,logger:f,debug:y,stopFunctionNames:A,step:b,abortSignal:R})}catch(S){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),S}v.functionsExecuted=new Set([...v.functionsExecuted,...$])}}else if(I.content){I.thought&&I.thought.length>0&&(v.values[m]=I.thought);let E=g.getOutputFields();if(g.hasComplexFields())try{let S=JSON.parse(I.content),P={};for(let j of Object.keys(S))E.some(N=>N.name===j)&&(P[j]=S[j]);On(g,P),Object.assign(v.values,P)}catch(S){let P=S instanceof SyntaxError;if((S.name?.includes("ValidationError")||S.name?.includes("Error"))&&!P){let N=(S.message||"").toLowerCase();if(N.includes("at least")||N.includes("at most")||N.includes("must match pattern")||N.includes("invalid url")||N.includes("required")||N.includes("missing")||N.includes("valid email")||N.includes("number must be"))throw S}if(P)Ho(g,v.values,I.content,{strictMode:a,treatAllFieldsOptional:_});else throw S}else Ho(g,v.values,I.content,{strictMode:a,treatAllFieldsOptional:_})}if(await vn(p,v.values),T||(t.removeByTag("correction",n),t.removeByTag("error",n)),d.length&&await vr(d,v.values,t,n),I.finishReason==="length")throw new Error(`Max tokens reached before completion
216
+ Content: ${I.content}`)}let G=l.map(I=>I.values);for(let I of G)for(let v of g.getOutputFields())v.isInternal&&delete I[v.name];let B=g.getOutputFields(),L=G.map((I,v)=>{let E={};for(let $ of B)$.isInternal||(E[$.name]=I[$.name]);return I[m]!==void 0&&(E[m]=I[m]),{index:v,delta:E}});for(let I of L)yield I}function Up(s,e){return e?!!(e.nestingLevel>0||e.inArray||e.inObject):!1}function Su(s,e,t,n){let r=s.getLast(n);if(!r)return!0;for(let[o,i]of t.entries()){let a=e?Array.from(e).some(p=>i.functionsExecuted.has(p)):!1;if(!r.chat[o])throw new Error(`No chat message found for result (index: ${o})`);let u=r.role==="function",c=r.tags?r.tags.some(p=>p==="processor"):!1;if(u&&e&&a||!(u||c))return!1}return!0}var Bp=["none","minimal","low","medium","high","highest"];function Hi(s,e,t){let n={};if(e.model!==!1){let a=s.getModelList();if(a&&a.length>0){let l=a.filter(u=>"model"in u);if(l.length>0){let u=l.map(p=>p.key),c=l.map(p=>`${p.key} (${p.description})`);n.model={type:"string",enum:u,description:`${t&&u.includes(t)?`Currently using model: ${t}. `:""}Switch model for the next step. Prefer faster/cheaper models for simple tasks; use more capable models for complex reasoning, math, or multi-step analysis. Available: ${c.join(", ")}`}}}}e.thinkingBudget!==!1&&(n.thinkingBudget={type:"string",enum:[...Bp],description:"Reasoning depth for the next step. none/minimal: simple lookups or reformatting. low/medium: moderate analysis, summarization. high/highest: math, logic, code analysis, or multi-step reasoning. Higher budgets use more tokens."}),e.temperature&&(n.temperature={type:"number",description:"Sampling temperature for the next step. Lower values (0\u20130.3) for deterministic tasks like math or code; higher values (0.7\u20131.0) for creative or exploratory tasks."});let r;if(e.functions&&e.functions.length>0){r=jt(e.functions);let a=r.map(u=>u.name),l=r.map(u=>`${u.name} (${u.description})`);n.addFunctions={type:"array",items:{type:"string",enum:a},description:`Activate tools you need for the current sub-task. Only add what you will use immediately \u2014 fewer active tools means less noise. Available: ${l.join(", ")}`},n.removeFunctions={type:"array",items:{type:"string",enum:a},description:"Remove tools you are done with to reduce context size and maintain focus on remaining work."}}let o=r;return{name:"adjustGeneration",description:"Adjust model, reasoning depth, or active tools for the next step. Call when task complexity changes \u2014 upgrade for hard reasoning or analysis, downgrade for simple follow-ups. Only call when there is a clear reason to change.",parameters:Object.keys(n).length>0?{type:"object",properties:n}:void 0,func:(a,l)=>{let u=l?.step;if(!u)return"Generation parameters adjusted for next response.";if(a?.model&&u.setModel(a.model),a?.thinkingBudget&&u.setThinkingBudget(a.thinkingBudget),a?.temperature!==void 0&&u.setTemperature(a.temperature),a?.addFunctions?.length&&o){let c=o.filter(p=>a.addFunctions.includes(p.name));c.length>0&&u.addFunctions(c)}return a?.removeFunctions?.length&&u.removeFunctions(...a.removeFunctions),"Generation parameters adjusted for next response."}}}var En=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 de=class extends Error{constructor(t,n,r,o){super(t);this.position=n;this.context=r;this.suggestion=o;this.name="SignatureValidationError"}},Ki=class{input;position;currentFieldName=null;currentSection="description";constructor(e){if(this.input=e.trim(),this.position=0,!this.input)throw new de("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 de("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 de('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 de(`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 de)throw e;let t=e instanceof Error?e.message:"Unknown error";throw new de(t,this.position,this.getErrorContext())}}validateParsedSignature(e){let t=new Set;for(let r of e.inputs){if(t.has(r.name))throw new de(`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 de(`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 de(`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 de("Signature must have at least one input field",0,"",'Add an input field before "->". Example: "userInput:string -> ..."');if(e.outputs.length===0)throw new de("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),o=`${" ".repeat(n.length)}^`;return[`Position ${this.position} in signature:`,`"${n}${r}"`,` ${o}`].join(`
217
+ `)}parseFieldList(e,t){let n=[];if(this.skipWhitespace(),this.position>=this.input.length)throw new de(`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 de?r:new de(`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 de(`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 de?r:new de(`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 de(`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 de(`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 o=this.parseTypeNotClass(),i=this.match("[]");n={name:o,isArray:i}}catch(o){throw o instanceof de?o:new de(`Input field "${e}": ${o instanceof Error?o.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 de(`Output field "${e}": Missing class options after "class" type`,this.position,this.getErrorContext(),'Add class names in quotes. Example: class "positive, negative, neutral"');let l=a.split(/[,|]/).map(u=>u.trim()).filter(u=>u.length>0);if(l.length===0)throw new de(`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:l}}else try{let i=this.parseTypeNotClass(),a=this.match("[]");if(r={name:i,isArray:a},i==="image"&&a)throw new de(`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 de(`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 de(`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 de(`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 de?i:new de(`Output field "${e}": ${i instanceof Error?i.message:"Unknown error"}`,this.position,this.getErrorContext())}this.skipWhitespace();let o=this.parseParsedString();return{name:e,desc:o?.trim(),type:r,isOptional:t,isInternal:n}}validateFieldName(e,t){if(pe.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 de(`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 de(`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 de(`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 de(`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),o=`Invalid type "${n||"empty"}"`,i=r?`. Did you mean "${r}"?`:"",a=`${o}${i}`;throw new de(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 de("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 de(`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 de(`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,o=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(o,Math.min(this.position,o+20));throw new de(`Unterminated string starting at position ${o}`,o,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 de(`Expected "->" but found "${e}..."`,this.position,this.getErrorContext(),t)}}};function ku(s){return new Ki(s).parse()}var Mr=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(([o,i])=>[o,Wi(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(([o,i])=>[o,Wi(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 Pe(e);return this._useStructuredOutputs&&(t._forceComplexFields=!0,t._hasComplexFields=void 0),t}},Ge=class s{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 s({...this,isOptional:!0})}array(e){return new s({...this,isArray:!0,description:e||this.description,itemDescription:e?this.description:void 0})}internal(){return new s({...this,isInternal:!0})}cache(){return new s({...this,isCached:!0})}min(e){return this.type==="string"?new s({...this,minLength:e}):this.type==="number"?new s({...this,minimum:e}):this}max(e){return this.type==="string"?new s({...this,maxLength:e}):this.type==="number"?new s({...this,maximum:e}):this}email(){return this.type==="string"?new s({...this,format:"email"}):this}url(){return this.type==="string"?new s({...this,format:"uri"}):this}regex(e,t){return this.type==="string"?new s({...this,pattern:e,patternDescription:t}):this}date(){return this.type==="string"?new s({...this,format:"date"}):this}datetime(){return this.type==="string"?new s({...this,format:"date-time"}):this}},Ae=Object.assign(()=>new Mr,{string:s=>new Ge({type:"string",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),number:s=>new Ge({type:"number",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),boolean:s=>new Ge({type:"boolean",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),json:s=>new Ge({type:"json",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),datetime:s=>new Ge({type:"datetime",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),date:s=>new Ge({type:"date",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),class:(s,e)=>new Ge({type:"class",isArray:!1,options:s,description:e,isOptional:!1,isInternal:!1,isCached:!1}),image:s=>new Ge({type:"image",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),audio:s=>new Ge({type:"audio",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),file:s=>new Ge({type:"file",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),url:s=>new Ge({type:"url",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1}),email:s=>new Ge({type:"string",isArray:!1,description:s,isOptional:!1,isInternal:!1,isCached:!1,format:"email"}),code:(s,e)=>new Ge({type:"code",isArray:!1,description:e||s,isOptional:!1,isInternal:!1,isCached:!1}),object:(s,e)=>new Ge({type:"object",isArray:!1,fields:s,description:e,isOptional:!1,isInternal:!1,isCached:!1})});function Wi(s){return{type:s.type,isArray:s.isArray,options:s.options,description:s.description,isOptional:s.isOptional,isInternal:s.isInternal,minLength:s.minLength,maxLength:s.maxLength,minimum:s.minimum,maximum:s.maximum,pattern:s.pattern,patternDescription:s.patternDescription,format:s.format,fields:s.fields?Object.fromEntries(Object.entries(s.fields).map(([e,t])=>[e,Wi(t)])):void 0}}function Jo(s){return{type:{name:s.type,isArray:s.isArray,options:s.options?[...s.options]:void 0,fields:s.fields},description:s.description,isOptional:s.isOptional,isInternal:s.isInternal}}var ae=class extends Error{constructor(t,n,r){super(t);this.fieldName=n;this.suggestion=r;this.name="AxSignatureValidationError"}},Pe=class s{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=ku(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 ae(`Invalid Signature: ${n.message}`,void 0,r)}throw new ae(`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 s)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 ae("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 ae("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 ae?t:new ae(`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 ae("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 s(e)}parseParsedField=e=>{if(!e.name||e.name.length===0)throw new ae("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 ae("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 ae("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);It(t,"input");for(let n of this.inputFields)if(n.name===t.name)throw new ae(`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 ae(`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 ae?t:new ae(`Failed to add input field "${e.name}": ${t instanceof Error?t.message:"Unknown error"}`,e.name)}};addOutputField=e=>{try{let t=this.parseField(e);It(t,"output");for(let n of this.outputFields)if(n.name===t.name)throw new ae(`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 ae(`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 ae?t:new ae(`Failed to add output field "${e.name}": ${t instanceof Error?t.message:"Unknown error"}`,e.name)}};setInputFields=e=>{if(!Array.isArray(e))throw new ae("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 It(r,"input"),r});this.inputFields=t,this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ae?t:new ae(`Failed to set input fields: ${t instanceof Error?t.message:"Unknown error"}`)}};setOutputFields=e=>{if(!Array.isArray(e))throw new ae("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 It(r,"output"),r});this.outputFields=t,this.invalidateValidationCache(),this.updateHashLight()}catch(t){throw t instanceof ae?t:new ae(`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 s(this);return n.addInputField({name:e,...Jo(t)}),n};prependInputField=(e,t)=>{let n=new s(this),r={name:e,...Jo(t)},o=n.parseField(r);It(o,"input");for(let i of n.inputFields)if(i.name===o.name)throw new ae(`Duplicate input field name: "${o.name}"`,o.name,"Each field name must be unique within the signature");for(let i of n.outputFields)if(i.name===o.name)throw new ae(`Field name "${o.name}" appears in both inputs and outputs`,o.name,"Use different names for input and output fields to avoid confusion");return n.inputFields.unshift(o),n.invalidateValidationCache(),n.updateHashLight(),n};appendOutputField=(e,t)=>{let n=new s(this);return n.addOutputField({name:e,...Jo(t)}),n};prependOutputField=(e,t)=>{let n=new s(this),r={name:e,...Jo(t)},o=n.parseField(r);It(o,"output");for(let i of n.outputFields)if(i.name===o.name)throw new ae(`Duplicate output field name: "${o.name}"`,o.name,"Each field name must be unique within the signature");for(let i of n.inputFields)if(i.name===o.name)throw new ae(`Field name "${o.name}" appears in both inputs and outputs`,o.name,"Use different names for input and output fields to avoid confusion");return n.outputFields.unshift(o),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=>{It(e,"input")}),this.getOutputFields().forEach(e=>{It(e,"output")}),this.sigHash=et("sha256").update(JSON.stringify(this.inputFields)).update(JSON.stringify(this.outputFields)).digest("hex"),this.sigString=Mu(this.description,this.inputFields,this.outputFields),this._hasComplexFields=this.computeHasComplexFields(),[this.sigHash,this.sigString]}catch(e){throw e instanceof ae?e:new ae(`Signature validation failed: ${e instanceof Error?e.message:"Unknown error"}`)}};updateHash=()=>{try{return this.getInputFields().forEach(e=>{It(e,"input")}),this.getOutputFields().forEach(e=>{It(e,"output")}),this.validateSignatureConsistency(),this.sigHash=et("sha256").update(this.description??"").update(JSON.stringify(this.inputFields)).update(JSON.stringify(this.outputFields)).digest("hex"),this.sigString=Mu(this.description,this.inputFields,this.outputFields),this._hasComplexFields=this.computeHasComplexFields(),[this.sigHash,this.sigString]}catch(e){throw e instanceof ae?e:new ae(`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 ae(`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 ae(`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 ae(`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 ae("Signature must have at least one input field",void 0,'Add an input field. Example: "userInput:string -> ..."');if(this.outputFields.length===0)throw new ae("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 Mn(e,this.description??"Schema")};toInputJSONSchema=()=>Mn(this.inputFields,this.description??"Schema")};function Ou(s){let e=s.name;return s.isOptional&&(e+="?"),s.isInternal&&(e+="!"),s.type&&(e+=`:${s.type.name}`,s.type.isArray&&(e+="[]"),s.type.name==="class"&&s.type.options&&(e+=` "${s.type.options.join(" | ")}"`)),s.description&&s.type?.name!=="class"&&(e+=` "${s.description}"`),e}function Mu(s,e,t){let n=s?`"${s}" `:"",r=e.map(Ou).join(", "),o=t.map(Ou).join(", ");return`${n}${r} -> ${o}`}function jp(s){let e=/^[a-z][a-zA-Z0-9]*$/,t=/^[a-z]+(_[a-z0-9]+)*$/;return e.test(s)||t.test(s)}function It(s,e){if(!s.name||s.name.length===0)throw new ae("Field name cannot be blank",s.name,"Every field must have a descriptive name");if(!jp(s.name))throw new ae(`Invalid field name '${s.name}' - must be camelCase or snake_case`,s.name,'Use camelCase (e.g., "userInput") or snake_case (e.g., "user_input")');if(pe.signatureStrict&&["text","object","image","string","number","boolean","json","array","datetime","date","time","type","class","input","output","data","value","result","response","request","item","element"].includes(s.name.toLowerCase())){let n=e==="input"?["userInput","questionText","documentContent","messageText","queryString"]:["responseText","analysisResult","categoryType","summaryText","outputData"];throw new ae(`Field name '${s.name}' is too generic`,s.name,`Use a more descriptive name. Examples for ${e} fields: ${n.join(", ")}`)}if(s.name.length<2)throw new ae(`Field name '${s.name}' is too short`,s.name,"Field names must be at least 2 characters long");if(s.name.length>50)throw new ae(`Field name '${s.name}' is too long (${s.name.length} characters)`,s.name,"Field names should be 50 characters or less");s.type&&qp(s,e)}function qp(s,e){if(!s.type)return;let{type:t}=s;if((t.name==="image"||t.name==="audio"||t.name==="file")&&e==="output")throw new ae(`${t.name} type is not supported in output fields`,s.name,`${t.name} types can only be used in input fields`);if(t.name==="class"){if(e==="input")throw new ae("Class type is not supported in input fields",s.name,'Class types are only allowed on output fields. Use "string" type for input classifications');if(!t.options||t.options.length===0)throw new ae("Class type requires options",s.name,'Provide class options. Example: class "positive, negative, neutral"');for(let r of t.options){if(!r||r.trim().length===0)throw new ae("Empty class option found",s.name,"All class options must be non-empty strings");let o=r.trim();if(o.includes(",")||o.includes("|"))throw new ae(`Invalid class option "${o}"`,s.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 ae("Duplicate class options found",s.name,"Each class option must be unique (case-insensitive)")}if(t.name==="code"&&t.isArray)throw new ae("Arrays of code are not commonly supported",s.name,"Consider using a single code field or an array of strings instead");if(s.isInternal&&e==="input")throw new ae("Internal marker (!) is not allowed on input fields",s.name,"Internal markers are only allowed on output fields");t.name==="object"&&t.fields&&Vi(t.fields,s.name,e)}function Vi(s,e,t,n=1){for(let[r,o]of Object.entries(s)){let i=`${e}.${r}`;if(o.type==="image"||o.type==="audio"||o.type==="file")throw new ae(`${o.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}.`);o.type==="object"&&o.fields&&Vi(o.fields,i,t,n+1),o.isArray&&o.fields&&Vi(o.fields,`${i}[]`,t,n+1)}}var Nt=class s{signature;sigHash;examples;examplesOptions;demos;trace;usage=[];traceLabel;key;children;childNames=new Map;childCount=0;constructor(e,t){this.signature=new Pe(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 En,this.key={id:"root"}}getSignature(){return new Pe(this.signature)}setSignature(e){this.signature=new Pe(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,o=[...r.getInputFields(),...r.getOutputFields()];this.examples=n.map(i=>{let a={};for(let l of o){let u=i[l.name];u!==void 0&&(wr(l,u),a[l.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();e=[...e,...n??[]]}return Rr(e)}resetUsage(){this.usage=[];for(let e of Array.from(this.children))e?.resetUsage()}static _propagating=!1;setDemos(e,t){if(!s._propagating&&e.length>0){let u=new Set(this.namedPrograms().map(p=>p.id)),c=[...new Set(e.map(p=>p.programId))].filter(p=>!u.has(p));if(c.length>0){let p=[...u].join(", ");throw new Error(`Unknown program ID(s) in demos: ${c.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,o=[...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,c)=>{let p={};for(let g of o){let h=u[g.name];h!==void 0&&(wr(g,h),p[g.name]=h)}let d=Object.keys(p).some(g=>i.has(g));if(!Object.keys(p).some(g=>a.has(g)))throw new Error(`Demo trace[${c}] for '${this.key.id}' has no output field values. Expected at least one of: ${[...a].join(", ")}`);if(!d)throw new Error(`Demo trace[${c}] 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 l=s._propagating;s._propagating=!0;try{for(let u of Array.from(this.children))u?.setDemos(e,t)}finally{s._propagating=l}}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}applyOptimization(e){this.setDemos(e.demos??[],{modelConfig:e.modelConfig})}};var Eu=`
218
218
  ## Function Call Instructions
219
219
  - Complete the task, using the functions defined earlier in this prompt.
220
220
  - Output fields should only be generated after all functions have been called.
@@ -236,9 +236,9 @@ The examples above were for training purposes only. Please ignore any specific e
236
236
  REAL USER QUERY:
237
237
  `,zt=class{sig;fieldTemplates;task;customInstruction;setInstruction(e){this.customInstruction=e,this.task={type:"text",text:e}}getInstruction(){return this.customInstruction}thoughtFieldName;functions;contextCache;examplesInSystem;ignoreBreakpoints;structuredOutputFunctionName;constructor(e,t,n){this.sig=e,this.fieldTemplates=n,this.thoughtFieldName=t?.thoughtFieldName??"thought",this.functions=t?.functions,this.contextCache=t?.contextCache,this.examplesInSystem=t?.examplesInSystem??!1,this.ignoreBreakpoints=t?.ignoreBreakpoints??!1,this.structuredOutputFunctionName=t?.structuredOutputFunctionName,pe.useStructuredPrompt?this.task=this.buildStructuredPrompt():this.task=this.buildLegacyPrompt()}getFieldNameToTitleMap=()=>{let e=new Map;for(let t of this.sig.getInputFields())e.set(t.name,t.title);for(let t of this.sig.getOutputFields())e.set(t.name,t.title);return e};sortFieldsCachedFirst=e=>[...e].sort((t,n)=>t.isCached&&!n.isCached?-1:!t.isCached&&n.isCached?1:0);buildLegacyPrompt(){let e=[],t=this.sig.hasComplexFields(),n=Yo(this.sig.getInputFields()),r=Yo(this.sig.getOutputFields());e.push(`You will be provided with the following fields: ${n}. Your task is to generate new fields: ${r}.`);let i=this.functions?.map(c=>"toFunction"in c?c.toFunction():c)?.flat()?.map(c=>`- \`${c.name}\`: ${Fn(c.description)}`).join(`
238
238
  `);i&&i.length>0&&e.push(`## Available Functions
239
- ${i}`);let a=this.getFieldNameToTitleMap(),l=Fu(this.sig.getInputFields(),a);if(e.push(`## Input Fields
240
- ${l}`),!t){let c=_u(this.sig.getOutputFields(),a);e.push(`## Output Fields
241
- ${c}`)}i&&i.length>0&&e.push(Pu.trim()),t&&this.structuredOutputFunctionName?e.push(`## Strict Output Formatting Rules
239
+ ${i}`);let a=this.getFieldNameToTitleMap(),l=Pu(this.sig.getInputFields(),a);if(e.push(`## Input Fields
240
+ ${l}`),!t){let c=Fu(this.sig.getOutputFields(),a);e.push(`## Output Fields
241
+ ${c}`)}i&&i.length>0&&e.push(Eu.trim()),t&&this.structuredOutputFunctionName?e.push(`## Strict Output Formatting Rules
242
242
  - No formatting rules should override these **Strict Output Formatting Rules**
243
243
  - You MUST call the \`${this.structuredOutputFunctionName}\` function with the complete output data as arguments.
244
244
  - Do NOT output any text. Use the function call to return your structured response.
@@ -253,12 +253,12 @@ ${c}`)}i&&i.length>0&&e.push(Pu.trim()),t&&this.structuredOutputFunctionName?e.p
253
253
  `)}}buildIdentitySection(){let e=Yo(this.sig.getInputFields()),t=Yo(this.sig.getOutputFields());return`You will be provided with the following fields: ${e}. Your task is to generate new fields: ${t}.`}buildTaskDefinitionSection(){let e=this.sig.getDescription();if(!e)return"";let t=this.getFieldNameToTitleMap(),n=Fn(e);return n=Qo(n,t),n}buildFunctionsSection(e){let t=[];t.push(`**Available Functions**: You can call the following functions to complete the task:
254
254
  `);let n=e.map(r=>`- \`${r.name}\`: ${Fn(r.description??"")}`).join(`
255
255
  `);return t.push(n),t.push(`
256
- ${Pu.trim()}`),t.join(`
256
+ ${Eu.trim()}`),t.join(`
257
257
  `)}buildInputFieldsSection(){let e=this.getFieldNameToTitleMap();return`**Input Fields**: The following fields will be provided to you:
258
258
 
259
- ${Fu(this.sig.getInputFields(),e)}`}buildOutputFieldsSection(){let e=this.getFieldNameToTitleMap();return`**Output Fields**: You must generate the following fields:
259
+ ${Pu(this.sig.getInputFields(),e)}`}buildOutputFieldsSection(){let e=this.getFieldNameToTitleMap();return`**Output Fields**: You must generate the following fields:
260
260
 
261
- ${_u(this.sig.getOutputFields(),e)}`}buildFormattingRulesSection(){let e=this.sig.hasComplexFields();return e&&this.structuredOutputFunctionName?`**CRITICAL - Structured Output via Function Call**:
261
+ ${Fu(this.sig.getOutputFields(),e)}`}buildFormattingRulesSection(){let e=this.sig.hasComplexFields();return e&&this.structuredOutputFunctionName?`**CRITICAL - Structured Output via Function Call**:
262
262
  - You MUST call the \`${this.structuredOutputFunctionName}\` function with the complete output data as arguments.
263
263
  - Do NOT output any text. Use the function call to return your structured response.
264
264
  - The function parameters define the exact schema your output must match.
@@ -310,15 +310,15 @@ ${m}
310
310
  `);let c=u.trim()==="";typeof l=="string"&&l.trim()===""||Array.isArray(l)&&l.length===0||c||t.push({userMessage:{role:"user",content:l},assistantMessage:{role:"assistant",content:u}})}return t};renderDemosAsMessages=e=>this.renderExamplesAsMessages(e);renderInputFields=e=>{let n=this.sortFieldsCachedFirst(this.sig.getInputFields()).map(r=>this.renderInField(r,e,void 0)).filter(r=>r!==void 0).flat();return n.filter(r=>r.type==="text").forEach(r=>{r.text=`${r.text}
311
311
  `}),n};renderInField=(e,t,n)=>{let r=t[e.name];if(Vp(e,r,n))return;e.type&&wr(e,r);let o=Kp(e,r);return(this.fieldTemplates?.[e.name]??this.defaultRenderInField)(e,o)};defaultRenderInField=(e,t)=>{if(e.type?.name==="image"){let r=i=>{if(!i)throw new Error("Image field value is required.");if(typeof i!="object")throw new Error("Image field value must be an object.");if(!("mimeType"in i))throw new Error("Image field must have mimeType");if(!("data"in i))throw new Error("Image field must have data");return i},o=[{type:"text",text:`${e.title}: `}];if(e.type.isArray){if(!Array.isArray(t))throw new Error("Image field value must be an array.");o=o.concat(t.map(i=>{let a=r(i);return{type:"image",mimeType:a.mimeType,image:a.data}}))}else{let i=r(t);o.push({type:"image",mimeType:i.mimeType,image:i.data})}return o}if(e.type?.name==="audio"){let r=i=>{if(!i)throw new Error("Audio field value is required.");if(typeof i!="object")throw new Error("Audio field value must be an object.");if(!("data"in i))throw new Error("Audio field must have data");return i},o=[{type:"text",text:`${e.title}: `}];if(e.type.isArray){if(!Array.isArray(t))throw new Error("Audio field value must be an array.");o=o.concat(t.map(i=>{let a=r(i);return{type:"audio",format:a.format??"wav",data:a.data}}))}else{let i=r(t);o.push({type:"audio",format:i.format??"wav",data:i.data})}return o}if(e.type?.name==="file"){let r=i=>{if(!i)throw new Error("File field value is required.");if(typeof i!="object")throw new Error("File field value must be an object.");if(!("mimeType"in i))throw new Error("File field must have mimeType");let a="data"in i,l="fileUri"in i;if(!a&&!l)throw new Error("File field must have either data or fileUri");if(a&&l)throw new Error("File field cannot have both data and fileUri");return i},o=[{type:"text",text:`${e.title}: `}];if(e.type.isArray){if(!Array.isArray(t))throw new Error("File field value must be an array.");o=o.concat(t.map(i=>{let a=r(i);return"fileUri"in a?{type:"file",mimeType:a.mimeType,fileUri:a.fileUri}:{type:"file",mimeType:a.mimeType,data:a.data}}))}else{let i=r(t);o.push("fileUri"in i?{type:"file",mimeType:i.mimeType,fileUri:i.fileUri}:{type:"file",mimeType:i.mimeType,data:i.data})}return o}if(e.type?.name==="url"){let r=i=>{if(!i)throw new Error("URL field value is required.");if(typeof i=="string")return{url:i};if(typeof i!="object")throw new Error("URL field value must be a string or object.");if(!("url"in i))throw new Error("URL field must have url property");return i},o=[{type:"text",text:`${e.title}: `}];if(e.type.isArray){if(!Array.isArray(t))throw new Error("URL field value must be an array.");o=o.concat(t.map(i=>{let a=r(i);return{type:"url",url:a.url,...a.title?{title:a.title}:{},...a.description?{description:a.description}:{}}}))}else{let i=r(t);o.push({type:"url",url:i.url,...i.title?{title:i.title}:{},...i.description?{description:i.description}:{}})}return o}let n=[e.title,": "];return Array.isArray(t)?(n.push(`
312
312
  `),n.push(t.map(r=>`- ${r}`).join(`
313
- `))):n.push(t),[{type:"text",text:n.join("")}]}},Yo=s=>s.map(e=>`\`${e.title}\``).join(", "),Fu=(s,e)=>s.map(n=>{let r=n.title,o=n.type?.name?_n(n.type):"string",i=n.isOptional?`This optional ${o} field may be omitted`:`${/^[aeiou]/i.test(o)?"An":"A"} ${o} field`,a="";if(n.description){let l=Fn(n.description);e&&(l=Qo(l,e)),a=` ${l}`}return`${r}: (${i})${a}`.trim()}).join(`
314
- `),_u=(s,e)=>s.map(n=>{let r=n.title,o=n.type?.name?_n(n.type):"string",i=n.isOptional?`Only include this ${o} field if its value is available`:`This ${o} field must be included`,a="";if(n.description&&n.description.length>0){let l=n.type?.name==="class"?n.description:Fn(n.description);e&&(l=Qo(l,e)),a=` ${l}`}return n.type?.options&&n.type.options.length>0&&(a.length>0&&(a+=". "),a+=`Allowed values: ${n.type.options.join(", ")}`),`${r}: (${i})${a}`.trim()}).join(`
315
- `),Kp=(s,e)=>{if(s.type?.name==="date"&&e instanceof Date){let t=e.toISOString();return t.slice(0,t.indexOf("T"))}return s.type?.name==="datetime"&&e instanceof Date?fu(e):s.type?.name==="image"&&typeof e=="object"||s.type?.name==="audio"&&typeof e=="object"||s.type?.name==="file"&&typeof e=="object"||s.type?.name==="url"&&(typeof e=="string"||typeof e=="object")||typeof e=="string"?e:JSON.stringify(e,null,2)};function Wp(s){return`{ ${Object.entries(s).map(([t,n])=>{let r=n.isOptional?"?":"",o=_n({name:n.type,isArray:n.isArray,fields:n.fields,options:n.options});return`${t}${r}: ${o}`}).join(", ")} }`}var _n=s=>{let e=(()=>{switch(s?.name){case"string":return"string";case"number":return"number";case"boolean":return"boolean (true or false)";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"file":return"file (with filename, mimeType, and data)";case"url":return"URL (string or object with url, title, description)";case"object":return s?.fields?`object ${Wp(s.fields)}`:"object";default:return"string"}})();return s?.isArray?`json array of ${e} items`:e};function qt(s){return(e,t)=>{if(t.type==="text"){let n=e.length>0?e[e.length-1]:null;n&&n.type==="text"?n.text+=s+t.text:e.push(t)}else e.push(t);return e}}var Vp=(s,e,t)=>{if(typeof e=="boolean"||s?.type?.name==="number"&&typeof e=="number")return!1;if(!e||(Array.isArray(e)||typeof e=="string")&&e.length===0){if(t?.isExample||s.isOptional||s.isInternal)return!0;let n=t?.isInputField!==!1?"input":"output";throw new Error(`Value for ${n} field '${s.name}' is required.`)}return!1};function Fn(s){let e=s.trim();return e.length>0?`${e.charAt(0).toUpperCase()}${e.slice(1)}${e.endsWith(".")?"":"."}`:""}function Qo(s,e){if(e.size===0)return s;let t=s,n=Array.from(e.keys()).sort((r,o)=>o.length-r.length);for(let r of n){let o=e.get(r),i=new RegExp(`\`${r}\``,"g");t=t.replace(i,`\`${o}\``);let a=new RegExp(`"${r}"`,"g");t=t.replace(a,`"${o}"`);let l=new RegExp(`'${r}'`,"g");t=t.replace(l,`'${o}'`);let u=new RegExp(`\\[${r}\\]`,"g");t=t.replace(u,`[${o}]`);let c=new RegExp(`\\(${r}\\)`,"g");t=t.replace(c,`(${o})`);let p=new RegExp(`\\$${r}\\b`,"g");t=t.replace(p,`\`${o}\``)}return t}function Jp(s,e){let t=s.history(0,e),n=t.some(o=>o.role==="function");return t.some(o=>o.role==="assistant"&&"functionCalls"in o&&Array.isArray(o.functionCalls)&&o.functionCalls.length>0)&&n}function Yp(s,e){let t=s.history(0,e),n=[],r=t.filter(i=>i.role==="assistant"&&"functionCalls"in i&&Array.isArray(i.functionCalls)&&i.functionCalls.length>0),o=t.filter(i=>i.role==="function");for(let i of r)if("functionCalls"in i&&i.functionCalls)for(let a of i.functionCalls){let l=o.find(u=>"functionId"in u&&u.functionId===a.id);l&&"result"in l&&"functionId"in l&&n.push({index:n.length,functionName:a.function.name,functionId:a.id,args:a.function.params||"",result:String(l.result),isError:"isError"in l?!!l.isError:!1})}return n}async function Xo(s,e,t,n){if(!e?.resultPicker||s.length<=1)return 0;let r=e.resultPicker;if((t?Jp(t,n):!1)&&t){let l=Yp(t,n),u=await r({type:"function",results:l});if(u<0||u>=l.length)throw new Error(`Result picker returned invalid index: ${u}. Must be between 0 and ${l.length-1}`);return u}let i=s.map((l,u)=>({index:u,sample:l.delta})),a=await r({type:"fields",results:i});if(a<0||a>=s.length)throw new Error(`Result picker returned invalid index: ${a}. Must be between 0 and ${s.length-1}`);return a}async function $u(s,e,t){let n=s?.getLast(e);if(!n||n.role!=="assistant"||n.chat.length<=1)return 0;let r=n.chat.map(i=>({version:0,index:i.index,delta:i.value}));return await Xo(r,t,s,e)}var $n=class{_stepIndex=0;maxSteps;_functionsExecuted=new Set;_lastFunctionCalls=[];_usage={promptTokens:0,completionTokens:0,totalTokens:0};state=new Map;_pendingOptions={};_functionsToAdd=[];_functionsToRemove=[];_stopRequested=!1;_stopResultValues;constructor(e){this.maxSteps=e}get stepIndex(){return this._stepIndex}get isFirstStep(){return this._stepIndex===0}get functionsExecuted(){return this._functionsExecuted}get lastFunctionCalls(){return this._lastFunctionCalls}get usage(){return this._usage}setModel(e){this._pendingOptions.model=e}setThinkingBudget(e){this._pendingOptions.thinkingTokenBudget=e}setTemperature(e){this._pendingOptions.modelConfig||(this._pendingOptions.modelConfig={}),this._pendingOptions.modelConfig.temperature=e}setMaxTokens(e){this._pendingOptions.modelConfig||(this._pendingOptions.modelConfig={}),this._pendingOptions.modelConfig.maxTokens=e}setOptions(e){Object.assign(this._pendingOptions,e)}addFunctions(e){this._functionsToAdd.push(...e)}removeFunctions(...e){this._functionsToRemove.push(...e)}stop(e){this._stopRequested=!0,this._stopResultValues=e}_beginStep(e){this._stepIndex=e,this._functionsExecuted=new Set,this._lastFunctionCalls=[]}_recordFunctionCall(e,t,n){this._functionsExecuted.add(e.toLowerCase()),this._lastFunctionCalls.push({name:e,args:t,result:n})}_addUsage(e,t,n){this._usage.promptTokens+=e,this._usage.completionTokens+=t,this._usage.totalTokens+=n}_consumePendingOptions(){if(Object.keys(this._pendingOptions).length===0)return;let e=this._pendingOptions;return this._pendingOptions={},e}_consumeFunctionsToAdd(){if(this._functionsToAdd.length===0)return;let e=this._functionsToAdd;return this._functionsToAdd=[],e}_consumeFunctionsToRemove(){if(this._functionsToRemove.length===0)return;let e=this._functionsToRemove;return this._functionsToRemove=[],e}get _isStopRequested(){return this._stopRequested}get _stopValues(){return this._stopResultValues}};var Zo=class{tools;logger;constructor(e,t){this.tools=new Map(e.map(n=>[n.name,n])),this.logger=t}getToolParamFieldMap(){let e=new Map;for(let[,t]of this.tools.entries())if(t.parameters?.properties&&Object.keys(t.parameters.properties).length>0){let{paramFieldMap:n}=Qp(t);e.set(t.name,n)}else e.set(t.name,new Map);return e}async route(e,t){let n=[],r={},o=new Map,i=new Map;for(let[a,l]of this.tools.entries())i.set(a,this.buildSanitizedFieldMap(l));for(let[a,l]of Object.entries(e)){let u=this.tools.get(this.normalizeToolName(a));if(u){l!=null&&typeof l=="object"&&o.set(u.name,l);continue}r[a]=l}for(let[a,l]of Object.entries(e))for(let[u,c]of this.tools.entries()){let p=i.get(u);if(!p)continue;let d=p.get(a);if(!d)continue;let m=o.get(c.name)??{};this.setNested(m,d,l),o.set(c.name,m)}for(let[a,l]of this.tools.entries()){let u=o.get(l.name);if(!(!u||Object.keys(u).length===0)){if(l.parameters&&l.parameters.type==="object"){let p=(l.parameters.required||[]).filter(d=>u[d]===void 0);if(p.length>0)throw new Be(`Missing required arguments for tool '${l.name}': ${p.join(", ")}`)}n.push({id:l.name,name:l.name,args:JSON.stringify(u)})}}return{functionCalls:n,remainingFields:r}}normalizeToolName(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}sanitizeFieldName(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_|_$/g,"").replace(/[^a-z0-9_]/g,"_")}buildSanitizedFieldMap(e){let t=new Map;if(!e.parameters||!("properties"in e.parameters))return t;let n=(r,o)=>{for(let[i,a]of Object.entries(r)){let l=[...o,i];if(a&&a.type==="object"&&a.properties)n(a.properties,l);else{let u=`${e.name}.${l.join(".")}`,c=this.sanitizeFieldName(u);t.set(c,l)}}};return n(e.parameters.properties??{},[]),t}setNested(e,t,n){let r=e;for(let o=0;o<t.length-1;o++){let i=t[o],a=r[i];(typeof a!="object"||a===null)&&(r[i]={}),r=r[i]}r[t[t.length-1]]=n}isToolField(e){return this.tools.has(this.normalizeToolName(e))}getToolFieldNames(){return Array.from(this.tools.keys()).map(e=>e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,""))}};function Qp(s){let e=[],t=new Map;if(!s.parameters||!s.parameters.properties)return{fields:e,paramFieldMap:t};let n=s.parameters.properties,r=s.parameters.required||[],o=(i,a,l)=>{for(let[u,c]of Object.entries(i)){let p=a?`${a}.${u}`:u,d=`${s.name}.${p}`;if(c.type==="object"&&c.properties)o(c.properties,p,c.required||[]);else{let m=Xp(c);e.push({name:ed(d),title:Zp(s.name,p),type:m,description:c.description||`${u} parameter for ${s.name}`,isOptional:!0}),t.set(d,e[e.length-1])}}};return o(n,"",r),{fields:e,paramFieldMap:t}}function Xp(s){switch(s.type){case"string":return{name:"string",isArray:!1};case"number":case"integer":return{name:"number",isArray:!1};case"boolean":return{name:"boolean",isArray:!1};case"array":{let e=s.items;if(e?.type)switch(e.type){case"string":return{name:"string",isArray:!0};case"number":case"integer":return{name:"number",isArray:!0};case"boolean":return{name:"boolean",isArray:!0};default:return{name:"json",isArray:!0}}return{name:"json",isArray:!0}}case"object":return{name:"json",isArray:!1};default:return{name:"string",isArray:!1}}}function Zp(s,e){return`${s} ${e.replace(/\./g," ")}`}function ed(s){return s.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_|_$/g,"").replace(/[^a-z0-9_]/g,"_")}function Du(s,e,t){let n=new Pe(e);if(t){let r=t.getToolParamFieldMap();for(let o of s){let i=r.get(o.name);if(i&&i.size>0)for(let a of i.values())n.getOutputFields().some(u=>u.name===a.name)||n.addOutputField(a);else{let a=Ji(o.name),l=Lu(o.parameters);n.getOutputFields().some(c=>c.name===a)||n.addOutputField({name:a,title:Nu(o.name),type:l,description:o.description||`Parameters for ${o.name}`,isOptional:!0})}}return{signature:n,toolParamFieldMap:r}}else{let r=new Map;for(let o of s)if(o.parameters?.properties&&Object.keys(o.parameters.properties).length>0){let{fields:i,paramFieldMap:a}=td(o);r.set(o.name,a);for(let l of i)n.getOutputFields().some(c=>c.name===l.name)||n.addOutputField(l)}else{let i=Ji(o.name),a=Lu(o.parameters);n.getOutputFields().some(u=>u.name===i)||n.addOutputField({name:i,title:Nu(o.name),type:a,description:o.description||`Parameters for ${o.name}`,isOptional:!0})}return{signature:n,toolParamFieldMap:r}}}function td(s){let e=[],t=new Map;if(!s.parameters||!s.parameters.properties)return{fields:e,paramFieldMap:t};let n=s.parameters.properties,r=s.parameters.required||[],o=(i,a,l)=>{for(let[u,c]of Object.entries(i)){let p=a?`${a}.${u}`:u,d=`${s.name}.${p}`;if(c.type==="object"&&c.properties)o(c.properties,p,c.required||[]);else{let m=nd(c),g={name:Ji(d),title:rd(s.name,p),type:m,description:c.description||`${u} parameter for ${s.name}`,isOptional:!0};e.push(g),t.set(d,g)}}};return o(n,"",r),{fields:e,paramFieldMap:t}}function nd(s){switch(s.type){case"string":return{name:"string",isArray:!1};case"number":case"integer":return{name:"number",isArray:!1};case"boolean":return{name:"boolean",isArray:!1};case"array":{let e=s.items;if(e?.type)switch(e.type){case"string":return{name:"string",isArray:!0};case"number":case"integer":return{name:"number",isArray:!0};case"boolean":return{name:"boolean",isArray:!0};default:return{name:"json",isArray:!0}}return{name:"json",isArray:!0}}case"object":return{name:"json",isArray:!1};default:return{name:"string",isArray:!1}}}function rd(s,e){return`${s} ${e.replace(/\./g," ")}`}function Ji(s){return s.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_|_$/g,"").replace(/[^a-z0-9_]/g,"_")}function Nu(s){return s.replace(/([A-Z])/g," $1").replace(/^./,e=>e.toUpperCase()).trim()}function Lu(s){return!s||!s.properties||Object.keys(s.properties).length===0?{name:"string",isArray:!1}:{name:"json",isArray:!1}}var Er=class{tools;router;injectedToolFieldNames=new Set;constructor(e){this.tools=e,this.router=new Zo(e)}processSignature(e){let{signature:t}=Du(this.tools,e),n=new Set(t.getOutputFields().map(o=>o.name)),r=new Set(e.getOutputFields().map(o=>o.name));return this.injectedToolFieldNames=new Set([...n].filter(o=>!r.has(o))),t}async processResults(e,t){let{functionCalls:n}=await this.router.route(e,t);return n.length>0?n:void 0}getInjectedToolFieldNames(){return Array.from(this.injectedToolFieldNames)}getRouter(){return this.router}};var Nn="__finalResult",Oe=class s extends Nt{clone=()=>new s(this.signature,this.options);promptTemplate;asserts;streamingAsserts;options;functions;fieldProcessors=[];streamingFieldProcessors=[];excludeContentFromTrace=!1;thoughtFieldName;signatureToolCallingManager;structuredOutputFunctionFallback=!1;activeAbortControllers=new Set;_stopRequested=!1;constructor(e,t){super(e,{description:t?.description,traceLabel:t?.traceLabel}),this.options=t,this.thoughtFieldName=t?.thoughtFieldName??"thought";let n={functions:t?.functions,thoughtFieldName:this.thoughtFieldName};this.promptTemplate=new(t?.promptTemplate??zt)(this.signature,n),this.asserts=this.options?.asserts??[],this.streamingAsserts=this.options?.streamingAsserts??[],this.excludeContentFromTrace=t?.excludeContentFromTrace??!1,this.functions=t?.functions?jt(t.functions):[],this.usage=[]}stop(){this._stopRequested=!0;for(let e of this.activeAbortControllers)e.abort("Stopped by user")}setInstruction(e){this.promptTemplate.setInstruction(e)}getInstruction(){return this.promptTemplate.getInstruction()}getSignatureName(){return this.signature.getDescription()||"unknown_signature"}getMetricsInstruments(){return Ti()}getMergedCustomLabels(e,t){return Lt(pe.customLabels,e?.getOptions?.()?.customLabels,t?.customLabels)}updateMeter(e){Ti(e)}createStates(e){return Array.from({length:e},(t,n)=>({index:n,functionCalls:[],values:{},content:"",functionsExecuted:new Set,xstate:{extractedFields:[],streamedIndex:{},s:-1}}))}addAssert(e,t){this.asserts.push({fn:e,message:t})}addStreamingAssert(e,t,n){let r=this.signature.getOutputFields().find(a=>a.name===e);if(!r)throw new Error(`addStreamingAssert: field ${String(e)} not found in output signature`);let o=r.type?.name;if(!(!o||o==="string"||o==="code"))throw new Error(`addStreamingAssert: field ${String(e)} must be a string field for streaming assertions`);this.streamingAsserts.push({fieldName:String(e),fn:t,message:n})}addFieldProcessorInternal(e,t,n=!1){let r=this.signature.getOutputFields().find(o=>o.name===e);if(!r)throw new Error(`addFieldProcessor: field ${e} not found`);if(n){let o=r.type?.name;if(!(!o||o==="string"||o==="code"))throw new Error(`addFieldProcessor: field ${e} must be a text field`);this.streamingFieldProcessors.push({field:r,process:t})}else this.fieldProcessors.push({field:r,process:t})}addStreamingFieldProcessor(e,t){this.addFieldProcessorInternal(String(e),t,!0)}addFieldProcessor(e,t){this.addFieldProcessorInternal(String(e),t,!1)}async forwardSendRequest({ai:e,mem:t,options:n,traceContext:r,functions:o,functionCall:i,stepIndex:a}){let{sessionId:l,model:u,rateLimiter:c,stream:p,thinkingTokenBudget:d,showThoughts:m}=n??{},g=await $u(t,l,{resultPicker:n?.resultPicker}),h=t?.history(g,l)??[];if(h.length===0)throw new Error("No chat prompt found");let f={...n?.modelConfig,...n?.sampleCount?{n:n.sampleCount}:{},...n?.sampleCount&&n?.modelConfig?.temperature===1?{temperature:.8}:{}},y=this.isDebug(e,n),x=a===0,A=this.getLogger(e,n);o=this.signatureToolCallingManager?[]:o;let T,b=this.signature.getOutputFields();if(this.signature.hasComplexFields()&&!this.structuredOutputFunctionFallback){if(!e.getFeatures(u)?.structuredOutputs)throw new Error(`Complex structured outputs (object/array types) require a provider that supports structured outputs. Current provider/model (${u}) does not support this feature. Supported providers: OpenAI (GPT-4o, GPT-4.1+), Google Gemini, Anthropic (Sonnet/Opus).`);T={type:"json_schema",schema:{name:"output",strict:!0,schema:Mn(b)}}}let O=n?.contextCache?.cacheBreakpoint??"after-examples",_=e.getFeatures?.(u)?.caching?.cacheBreakpoints===!1,M=n?.contextCache&&(_||O==="after-functions"||O==="after-examples"),G=o?.length&&M?o.map((L,I)=>({...L,cache:I===o.length-1})):o;return await e.chat({chatPrompt:h,functions:G,functionCall:i,modelConfig:f,model:u,responseFormat:T},{sessionId:l,rateLimiter:c,stream:p,debug:y,debugHideSystemPrompt:n?.debugHideSystemPrompt??this.options?.debugHideSystemPrompt??!x,thinkingTokenBudget:d,showThoughts:m,traceContext:r,abortSignal:n?.abortSignal??pe.abortSignal,stepIndex:a,logger:A,functionCallMode:n?.functionCallMode??this.options?.functionCallMode??"auto",retry:n?.retry??this.options?.retry,customLabels:n?.customLabels})}async*forwardCore({ai:e,mem:t,options:n,stepIndex:r,span:o,traceContext:i,states:a,stopFunctionNames:l,stepContext:u}){let{sessionId:c,functions:p}=n??{},d=n?.functionResultFormatter??this.options?.functionResultFormatter,m=n?.functionCall??this.options?.functionCall,g=this.signatureToolCallingManager,h=n?.strictMode??!1,f=n.model,y=this.usage,x=r===0,A=this.isDebug(e,n),T=this.getLogger(e,n),{functions:b,functionCall:R}=wu(p,m,x,n);this.structuredOutputFunctionFallback&&b.filter(M=>M.name!==Nn).length===0&&(R={type:"function",function:{name:Nn}});let O=await this.forwardSendRequest({ai:e,mem:t,options:n,traceContext:i,functions:b,functionCall:R,stepIndex:r});O instanceof ReadableStream?yield*vu({ai:e,model:f,res:O,mem:t,sessionId:c,traceId:o?o.spanContext?.().traceId:void 0,functions:b,strictMode:h,span:o,states:a,usage:y,asserts:this.asserts,streamingAsserts:this.streamingAsserts,fieldProcessors:this.fieldProcessors,streamingFieldProcessors:this.streamingFieldProcessors,thoughtFieldName:this.thoughtFieldName,excludeContentFromTrace:this.excludeContentFromTrace,signature:this.signature,logger:T,debug:A,functionResultFormatter:d,signatureToolCallingManager:g,stopFunctionNames:l,disableMemoryCleanup:n.disableMemoryCleanup,stepContext:u,abortSignal:n.abortSignal}):yield*Su({ai:e,model:f,res:O,mem:t,sessionId:c,traceId:o?o.spanContext?.().traceId:void 0,functions:b,span:o,strictMode:h,states:a,usage:y,asserts:this.asserts,fieldProcessors:this.fieldProcessors,thoughtFieldName:this.thoughtFieldName,excludeContentFromTrace:this.excludeContentFromTrace,signature:this.signature,logger:T,debug:A,functionResultFormatter:d,signatureToolCallingManager:g,stopFunctionNames:l,disableMemoryCleanup:n.disableMemoryCleanup,stepContext:u,abortSignal:n.abortSignal})}async*_forward2(e,t,n,r,o,i){this.signatureToolCallingManager=void 0;let a=r?.stopFunction??this.options?.stopFunction,l=Array.isArray(a)?a.map(K=>K.toLowerCase()):a?[a.toLowerCase()]:void 0,u=r.maxRetries??this.options?.maxRetries??3,c=r.maxSteps??this.options?.maxSteps??25,p=r.mem??this.options?.mem??new Rn,d=r.functions?jt(r.functions):[...this.functions],m=new $n(c),g;if(r.selfTuning){if(g=r.selfTuning===!0?{model:!0,thinkingBudget:!0}:r.selfTuning,g.model!==!1){let ne=e.getModelList()?.filter(oe=>"model"in oe);if(!ne||ne.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 K=Hi(e,g,r.model?String(r.model):void 0);d.push(K)}let h={...r},f=r.stepHooks,y=d&&d.length>0,x=r.functionCallMode??this.options?.functionCallMode??"auto";y&&x==="prompt"&&(this.signatureToolCallingManager=new Er(d)),y&&x==="auto"&&!e.getFeatures(r.model).functions&&(this.signatureToolCallingManager=new Er(d));let A,T,b=this.options?.promptTemplate??zt;this.signatureToolCallingManager&&(this.signature=this.signatureToolCallingManager.processSignature(this.signature),this.setSignature(this.signature));let R=this.signature.hasComplexFields(),O=e.getFeatures?.(r.model),_=r.structuredOutputMode??this.options?.structuredOutputMode??"auto";if(this.structuredOutputFunctionFallback=R&&(_==="function"||_==="auto"&&!O?.structuredOutputs),this.structuredOutputFunctionFallback){let K={name:Nn,description:"Return the final result. Call this function with the complete output data.",parameters:Mn(this.signature.getOutputFields()),func:async()=>"done"};d.push(K),l=[...l??[],Nn.toLowerCase()]}let M=e.getFeatures?.(r.model)?.caching?.cacheBreakpoints===!1,G={functions:this.signatureToolCallingManager?[]:d,thoughtFieldName:this.thoughtFieldName,contextCache:r.contextCache,examplesInSystem:r.examplesInSystem,ignoreBreakpoints:M,structuredOutputFunctionName:this.structuredOutputFunctionFallback?Nn:void 0};this.promptTemplate=new b(this.signature,G);let B,L=performance.now();Array.isArray(t)?(dl(t),B=this.promptTemplate.render(t,{examples:this.examples,demos:this.demos})):B=this.promptTemplate.render(t,{examples:this.examples,demos:this.demos});let I=performance.now()-L,v=this.getMetricsInstruments(),E=this.getMergedCustomLabels(e,r);v&&Uo(v,"prompt_render",I,this.getSignatureName(),E);let $=performance.now();p.addRequest(B,r.sessionId);let S=performance.now()-$;v&&Uo(v,"memory_update",S,this.getSignatureName(),E);let P=new Map;n.forEach(K=>{P.set(K.index,{})});let j=()=>{let K=m._consumePendingOptions();if(K){let{modelConfig:oe,...W}=K;h={...h,...W},oe&&(h.modelConfig={...h.modelConfig,...oe})}let re=m._consumeFunctionsToAdd();if(re){let oe=jt(re);for(let W of oe)d.some(se=>se.name===W.name)||d.push(W)}let ne=m._consumeFunctionsToRemove();if(ne){let oe=new Set(ne.map(W=>W.toLowerCase()));for(let W=d.length-1;W>=0;W--)oe.has(d[W].name.toLowerCase())&&d.splice(W,1)}},N=r?.abortSignal??pe.abortSignal;e:for(let K=0;K<c;K++){if(m._beginStep(K),j(),g&&g.model!==!1){let ne=d.findIndex(oe=>oe.name==="adjustGeneration");if(ne!==-1){let oe=h.model?String(h.model):void 0;d[ne]=Hi(e,g,oe)}}if(m._isStopRequested)break;if(N?.aborted)throw new $e("between-steps",N.reason??"Aborted between steps");if(f?.beforeStep&&(await f.beforeStep(m),j(),m._isStopRequested))break;let re=u;for(let ne=0;ne<=re;ne++)try{let oe=u+1;for(let se=0;se<oe;se++){n.forEach(te=>{te.content="",te.values={},te.functionCalls=[],te.functionsExecuted=new Set,te.xstate={extractedFields:[],streamedIndex:{},s:-1}}),se>0&&P.forEach((te,he)=>{P.set(he,{})});let Ie=new Map;n.forEach(te=>{Ie.set(te.index,{})});try{let te=this.forwardCore({options:{...h,functions:d},ai:e,mem:p,stepIndex:K,span:o,traceContext:i,states:n,stopFunctionNames:l,stepContext:m}),he=!1;try{for await(let w of te)if(w!==void 0){let F=w.index,k=w.delta,C=Ie.get(F)??{},D=P.get(F)??{},z={},q=!1;for(let ee of Object.keys(k)){let H=k[ee],V=C[ee],Y;typeof H=="string"&&(typeof V=="string"||V===void 0)?Y=(V??"")+H:Array.isArray(H)&&(Array.isArray(V)||V===void 0)?Y=[...V??[],...H]:Y=H,C[ee]=Y;let Q=Y,ie=D[ee];if(typeof Q=="string"&&typeof ie=="string")if(Q.startsWith(ie)){let ye=Q.slice(ie.length);ye&&(z[ee]=ye,q=!0,D[ee]=Q)}else ie.startsWith(Q)||Q!==ie&&(z[ee]=Q,q=!0,D[ee]=Q);else if(Array.isArray(Q)&&Array.isArray(ie)){if(Q.length>ie.length){let ye=Q.slice(ie.length);z[ee]=ye,q=!0,D[ee]=Q}}else JSON.stringify(Q)!==JSON.stringify(ie)&&(z[ee]=Q,q=!0,D[ee]=Q)}q&&(yield{version:se,index:w.index,delta:z})}}catch(w){if(w instanceof Bt){if(he=!0,this.structuredOutputFunctionFallback){let F=w.calls.find(k=>k.func.name===Nn);if(F?.args){let k=F.args;On(this.signature,k);let C=this.signature.getOutputFields();for(let D of n){let z={};for(let q of C)q.name in k&&!q.isInternal&&(z[q.name]=k[q.name],D.values[q.name]=k[q.name]);yield{version:se,index:D.index,delta:z}}for(let D of n)await vn(this.asserts,D.values);if(this.fieldProcessors.length>0)for(let D of n)await vr(this.fieldProcessors,D.values,p,r.sessionId)}}}else throw w}if(this.usage.length>0){let w=this.usage[this.usage.length-1];w?.tokens&&m._addUsage(w.tokens.promptTokens??0,w.tokens.completionTokens??0,w.tokens.totalTokens??0)}n.some(w=>w.functionsExecuted.size>0)&&f?.afterFunctionExecution&&(await f.afterFunctionExecution(m),j());let we=he||m._isStopRequested?!1:ku(p,l,n,h?.sessionId);if(f?.afterStep&&(await f.afterStep(m),j()),we&&!m._isStopRequested&&!N?.aborted){let w=this.getMetricsInstruments();w&&Go(w,K+1,c,this.getSignatureName(),E);continue e}if(N?.aborted)throw new $e("mid-step",N.reason??"Aborted");r?.disableMemoryCleanup||(p.removeByTag("invalid-assistant",r.sessionId),p.removeByTag("correction",r.sessionId),p.removeByTag("error",r.sessionId));let Me=this.getMetricsInstruments();if(Me){Go(Me,K+1,c,this.getSignatureName(),E);let w=new Set;n.forEach(F=>{F.functionsExecuted.forEach(k=>w.add(k))}),w.size>0&&Wl(Me,!0,w.size,!0,!1,this.getSignatureName(),E),Vl(Me,this.fieldProcessors.length,this.streamingFieldProcessors.length,this.getSignatureName(),E)}return}catch(te){if(te instanceof $e)throw te;T=te;let he,ve=this.isDebug(e,r),we=this.getLogger(e,r),Me=this.getMetricsInstruments(),w=this.getSignatureName(),F={error:te,errCount:se,logger:we,metricsInstruments:Me,signatureName:w,span:o,debug:ve,customLabels:E};if(o?.recordException(te),te instanceof Be)he=ou(F),A=te;else if(te instanceof bt)he=su(F),A=te;else if(te instanceof ke)iu(F);else{if(te instanceof ot)throw te;{let k=te,C=k instanceof Ve&&k.status>=500&&k.status<600,D=k instanceof Ue,z=k instanceof tt;throw C||D||z?te:Yi(te,e,this.signature)}}if(he&&(p.addTag("error",r.sessionId),p.addRequest([{role:"user",content:this.promptTemplate.renderExtraFields(he)}],r.sessionId),p.addTag("correction",r.sessionId),this.signature.hasComplexFields()))for(let C of n)C.content="",C.values={},C.xstate={extractedFields:[],streamedIndex:{},s:-1}}}let W=this.getMetricsInstruments();throw W&&Ri(W,u,!1,u,this.getSignatureName(),E),Yi(new Error(`Unable to fix validation error: ${(A??T)?.message??(A??T)?.toString()??"unknown error"}
313
+ `))):n.push(t),[{type:"text",text:n.join("")}]}},Yo=s=>s.map(e=>`\`${e.title}\``).join(", "),Pu=(s,e)=>s.map(n=>{let r=n.title,o=n.type?.name?_n(n.type):"string",i=n.isOptional?`This optional ${o} field may be omitted`:`${/^[aeiou]/i.test(o)?"An":"A"} ${o} field`,a="";if(n.description){let l=Fn(n.description);e&&(l=Qo(l,e)),a=` ${l}`}return`${r}: (${i})${a}`.trim()}).join(`
314
+ `),Fu=(s,e)=>s.map(n=>{let r=n.title,o=n.type?.name?_n(n.type):"string",i=n.isOptional?`Only include this ${o} field if its value is available`:`This ${o} field must be included`,a="";if(n.description&&n.description.length>0){let l=n.type?.name==="class"?n.description:Fn(n.description);e&&(l=Qo(l,e)),a=` ${l}`}return n.type?.options&&n.type.options.length>0&&(a.length>0&&(a+=". "),a+=`Allowed values: ${n.type.options.join(", ")}`),`${r}: (${i})${a}`.trim()}).join(`
315
+ `),Kp=(s,e)=>{if(s.type?.name==="date"&&e instanceof Date){let t=e.toISOString();return t.slice(0,t.indexOf("T"))}return s.type?.name==="datetime"&&e instanceof Date?hu(e):s.type?.name==="image"&&typeof e=="object"||s.type?.name==="audio"&&typeof e=="object"||s.type?.name==="file"&&typeof e=="object"||s.type?.name==="url"&&(typeof e=="string"||typeof e=="object")||typeof e=="string"?e:JSON.stringify(e,null,2)};function Wp(s){return`{ ${Object.entries(s).map(([t,n])=>{let r=n.isOptional?"?":"",o=_n({name:n.type,isArray:n.isArray,fields:n.fields,options:n.options});return`${t}${r}: ${o}`}).join(", ")} }`}var _n=s=>{let e=(()=>{switch(s?.name){case"string":return"string";case"number":return"number";case"boolean":return"boolean (true or false)";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"file":return"file (with filename, mimeType, and data)";case"url":return"URL (string or object with url, title, description)";case"object":return s?.fields?`object ${Wp(s.fields)}`:"object";default:return"string"}})();return s?.isArray?`json array of ${e} items`:e};function qt(s){return(e,t)=>{if(t.type==="text"){let n=e.length>0?e[e.length-1]:null;n&&n.type==="text"?n.text+=s+t.text:e.push(t)}else e.push(t);return e}}var Vp=(s,e,t)=>{if(typeof e=="boolean"||s?.type?.name==="number"&&typeof e=="number")return!1;if(!e||(Array.isArray(e)||typeof e=="string")&&e.length===0){if(t?.isExample||s.isOptional||s.isInternal)return!0;let n=t?.isInputField!==!1?"input":"output";throw new Error(`Value for ${n} field '${s.name}' is required.`)}return!1};function Fn(s){let e=s.trim();return e.length>0?`${e.charAt(0).toUpperCase()}${e.slice(1)}${e.endsWith(".")?"":"."}`:""}function Qo(s,e){if(e.size===0)return s;let t=s,n=Array.from(e.keys()).sort((r,o)=>o.length-r.length);for(let r of n){let o=e.get(r),i=new RegExp(`\`${r}\``,"g");t=t.replace(i,`\`${o}\``);let a=new RegExp(`"${r}"`,"g");t=t.replace(a,`"${o}"`);let l=new RegExp(`'${r}'`,"g");t=t.replace(l,`'${o}'`);let u=new RegExp(`\\[${r}\\]`,"g");t=t.replace(u,`[${o}]`);let c=new RegExp(`\\(${r}\\)`,"g");t=t.replace(c,`(${o})`);let p=new RegExp(`\\$${r}\\b`,"g");t=t.replace(p,`\`${o}\``)}return t}function Jp(s,e){let t=s.history(0,e),n=t.some(o=>o.role==="function");return t.some(o=>o.role==="assistant"&&"functionCalls"in o&&Array.isArray(o.functionCalls)&&o.functionCalls.length>0)&&n}function Yp(s,e){let t=s.history(0,e),n=[],r=t.filter(i=>i.role==="assistant"&&"functionCalls"in i&&Array.isArray(i.functionCalls)&&i.functionCalls.length>0),o=t.filter(i=>i.role==="function");for(let i of r)if("functionCalls"in i&&i.functionCalls)for(let a of i.functionCalls){let l=o.find(u=>"functionId"in u&&u.functionId===a.id);l&&"result"in l&&"functionId"in l&&n.push({index:n.length,functionName:a.function.name,functionId:a.id,args:a.function.params||"",result:String(l.result),isError:"isError"in l?!!l.isError:!1})}return n}async function Xo(s,e,t,n){if(!e?.resultPicker||s.length<=1)return 0;let r=e.resultPicker;if((t?Jp(t,n):!1)&&t){let l=Yp(t,n),u=await r({type:"function",results:l});if(u<0||u>=l.length)throw new Error(`Result picker returned invalid index: ${u}. Must be between 0 and ${l.length-1}`);return u}let i=s.map((l,u)=>({index:u,sample:l.delta})),a=await r({type:"fields",results:i});if(a<0||a>=s.length)throw new Error(`Result picker returned invalid index: ${a}. Must be between 0 and ${s.length-1}`);return a}async function _u(s,e,t){let n=s?.getLast(e);if(!n||n.role!=="assistant"||n.chat.length<=1)return 0;let r=n.chat.map(i=>({version:0,index:i.index,delta:i.value}));return await Xo(r,t,s,e)}var $n=class{_stepIndex=0;maxSteps;_functionsExecuted=new Set;_lastFunctionCalls=[];_usage={promptTokens:0,completionTokens:0,totalTokens:0};state=new Map;_pendingOptions={};_functionsToAdd=[];_functionsToRemove=[];_stopRequested=!1;_stopResultValues;constructor(e){this.maxSteps=e}get stepIndex(){return this._stepIndex}get isFirstStep(){return this._stepIndex===0}get functionsExecuted(){return this._functionsExecuted}get lastFunctionCalls(){return this._lastFunctionCalls}get usage(){return this._usage}setModel(e){this._pendingOptions.model=e}setThinkingBudget(e){this._pendingOptions.thinkingTokenBudget=e}setTemperature(e){this._pendingOptions.modelConfig||(this._pendingOptions.modelConfig={}),this._pendingOptions.modelConfig.temperature=e}setMaxTokens(e){this._pendingOptions.modelConfig||(this._pendingOptions.modelConfig={}),this._pendingOptions.modelConfig.maxTokens=e}setOptions(e){Object.assign(this._pendingOptions,e)}addFunctions(e){this._functionsToAdd.push(...e)}removeFunctions(...e){this._functionsToRemove.push(...e)}stop(e){this._stopRequested=!0,this._stopResultValues=e}_beginStep(e){this._stepIndex=e,this._functionsExecuted=new Set,this._lastFunctionCalls=[]}_recordFunctionCall(e,t,n){this._functionsExecuted.add(e.toLowerCase()),this._lastFunctionCalls.push({name:e,args:t,result:n})}_addUsage(e,t,n){this._usage.promptTokens+=e,this._usage.completionTokens+=t,this._usage.totalTokens+=n}_consumePendingOptions(){if(Object.keys(this._pendingOptions).length===0)return;let e=this._pendingOptions;return this._pendingOptions={},e}_consumeFunctionsToAdd(){if(this._functionsToAdd.length===0)return;let e=this._functionsToAdd;return this._functionsToAdd=[],e}_consumeFunctionsToRemove(){if(this._functionsToRemove.length===0)return;let e=this._functionsToRemove;return this._functionsToRemove=[],e}get _isStopRequested(){return this._stopRequested}get _stopValues(){return this._stopResultValues}};var Zo=class{tools;logger;constructor(e,t){this.tools=new Map(e.map(n=>[n.name,n])),this.logger=t}getToolParamFieldMap(){let e=new Map;for(let[,t]of this.tools.entries())if(t.parameters?.properties&&Object.keys(t.parameters.properties).length>0){let{paramFieldMap:n}=Qp(t);e.set(t.name,n)}else e.set(t.name,new Map);return e}async route(e,t){let n=[],r={},o=new Map,i=new Map;for(let[a,l]of this.tools.entries())i.set(a,this.buildSanitizedFieldMap(l));for(let[a,l]of Object.entries(e)){let u=this.tools.get(this.normalizeToolName(a));if(u){l!=null&&typeof l=="object"&&o.set(u.name,l);continue}r[a]=l}for(let[a,l]of Object.entries(e))for(let[u,c]of this.tools.entries()){let p=i.get(u);if(!p)continue;let d=p.get(a);if(!d)continue;let m=o.get(c.name)??{};this.setNested(m,d,l),o.set(c.name,m)}for(let[a,l]of this.tools.entries()){let u=o.get(l.name);if(!(!u||Object.keys(u).length===0)){if(l.parameters&&l.parameters.type==="object"){let p=(l.parameters.required||[]).filter(d=>u[d]===void 0);if(p.length>0)throw new Be(`Missing required arguments for tool '${l.name}': ${p.join(", ")}`)}n.push({id:l.name,name:l.name,args:JSON.stringify(u)})}}return{functionCalls:n,remainingFields:r}}normalizeToolName(e){return e.replace(/_([a-z])/g,(t,n)=>n.toUpperCase())}sanitizeFieldName(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_|_$/g,"").replace(/[^a-z0-9_]/g,"_")}buildSanitizedFieldMap(e){let t=new Map;if(!e.parameters||!("properties"in e.parameters))return t;let n=(r,o)=>{for(let[i,a]of Object.entries(r)){let l=[...o,i];if(a&&a.type==="object"&&a.properties)n(a.properties,l);else{let u=`${e.name}.${l.join(".")}`,c=this.sanitizeFieldName(u);t.set(c,l)}}};return n(e.parameters.properties??{},[]),t}setNested(e,t,n){let r=e;for(let o=0;o<t.length-1;o++){let i=t[o],a=r[i];(typeof a!="object"||a===null)&&(r[i]={}),r=r[i]}r[t[t.length-1]]=n}isToolField(e){return this.tools.has(this.normalizeToolName(e))}getToolFieldNames(){return Array.from(this.tools.keys()).map(e=>e.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,""))}};function Qp(s){let e=[],t=new Map;if(!s.parameters||!s.parameters.properties)return{fields:e,paramFieldMap:t};let n=s.parameters.properties,r=s.parameters.required||[],o=(i,a,l)=>{for(let[u,c]of Object.entries(i)){let p=a?`${a}.${u}`:u,d=`${s.name}.${p}`;if(c.type==="object"&&c.properties)o(c.properties,p,c.required||[]);else{let m=Xp(c);e.push({name:ed(d),title:Zp(s.name,p),type:m,description:c.description||`${u} parameter for ${s.name}`,isOptional:!0}),t.set(d,e[e.length-1])}}};return o(n,"",r),{fields:e,paramFieldMap:t}}function Xp(s){switch(s.type){case"string":return{name:"string",isArray:!1};case"number":case"integer":return{name:"number",isArray:!1};case"boolean":return{name:"boolean",isArray:!1};case"array":{let e=s.items;if(e?.type)switch(e.type){case"string":return{name:"string",isArray:!0};case"number":case"integer":return{name:"number",isArray:!0};case"boolean":return{name:"boolean",isArray:!0};default:return{name:"json",isArray:!0}}return{name:"json",isArray:!0}}case"object":return{name:"json",isArray:!1};default:return{name:"string",isArray:!1}}}function Zp(s,e){return`${s} ${e.replace(/\./g," ")}`}function ed(s){return s.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_|_$/g,"").replace(/[^a-z0-9_]/g,"_")}function Lu(s,e,t){let n=new Pe(e);if(t){let r=t.getToolParamFieldMap();for(let o of s){let i=r.get(o.name);if(i&&i.size>0)for(let a of i.values())n.getOutputFields().some(u=>u.name===a.name)||n.addOutputField(a);else{let a=Ji(o.name),l=Nu(o.parameters);n.getOutputFields().some(c=>c.name===a)||n.addOutputField({name:a,title:$u(o.name),type:l,description:o.description||`Parameters for ${o.name}`,isOptional:!0})}}return{signature:n,toolParamFieldMap:r}}else{let r=new Map;for(let o of s)if(o.parameters?.properties&&Object.keys(o.parameters.properties).length>0){let{fields:i,paramFieldMap:a}=td(o);r.set(o.name,a);for(let l of i)n.getOutputFields().some(c=>c.name===l.name)||n.addOutputField(l)}else{let i=Ji(o.name),a=Nu(o.parameters);n.getOutputFields().some(u=>u.name===i)||n.addOutputField({name:i,title:$u(o.name),type:a,description:o.description||`Parameters for ${o.name}`,isOptional:!0})}return{signature:n,toolParamFieldMap:r}}}function td(s){let e=[],t=new Map;if(!s.parameters||!s.parameters.properties)return{fields:e,paramFieldMap:t};let n=s.parameters.properties,r=s.parameters.required||[],o=(i,a,l)=>{for(let[u,c]of Object.entries(i)){let p=a?`${a}.${u}`:u,d=`${s.name}.${p}`;if(c.type==="object"&&c.properties)o(c.properties,p,c.required||[]);else{let m=nd(c),g={name:Ji(d),title:rd(s.name,p),type:m,description:c.description||`${u} parameter for ${s.name}`,isOptional:!0};e.push(g),t.set(d,g)}}};return o(n,"",r),{fields:e,paramFieldMap:t}}function nd(s){switch(s.type){case"string":return{name:"string",isArray:!1};case"number":case"integer":return{name:"number",isArray:!1};case"boolean":return{name:"boolean",isArray:!1};case"array":{let e=s.items;if(e?.type)switch(e.type){case"string":return{name:"string",isArray:!0};case"number":case"integer":return{name:"number",isArray:!0};case"boolean":return{name:"boolean",isArray:!0};default:return{name:"json",isArray:!0}}return{name:"json",isArray:!0}}case"object":return{name:"json",isArray:!1};default:return{name:"string",isArray:!1}}}function rd(s,e){return`${s} ${e.replace(/\./g," ")}`}function Ji(s){return s.replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_|_$/g,"").replace(/[^a-z0-9_]/g,"_")}function $u(s){return s.replace(/([A-Z])/g," $1").replace(/^./,e=>e.toUpperCase()).trim()}function Nu(s){return!s||!s.properties||Object.keys(s.properties).length===0?{name:"string",isArray:!1}:{name:"json",isArray:!1}}var Er=class{tools;router;injectedToolFieldNames=new Set;constructor(e){this.tools=e,this.router=new Zo(e)}processSignature(e){let{signature:t}=Lu(this.tools,e),n=new Set(t.getOutputFields().map(o=>o.name)),r=new Set(e.getOutputFields().map(o=>o.name));return this.injectedToolFieldNames=new Set([...n].filter(o=>!r.has(o))),t}async processResults(e,t){let{functionCalls:n}=await this.router.route(e,t);return n.length>0?n:void 0}getInjectedToolFieldNames(){return Array.from(this.injectedToolFieldNames)}getRouter(){return this.router}};var Nn="__finalResult",Oe=class s extends Nt{clone=()=>new s(this.signature,this.options);promptTemplate;asserts;streamingAsserts;options;functions;fieldProcessors=[];streamingFieldProcessors=[];excludeContentFromTrace=!1;thoughtFieldName;signatureToolCallingManager;structuredOutputFunctionFallback=!1;activeAbortControllers=new Set;_stopRequested=!1;constructor(e,t){super(e,{description:t?.description,traceLabel:t?.traceLabel}),this.options=t,this.thoughtFieldName=t?.thoughtFieldName??"thought";let n={functions:t?.functions,thoughtFieldName:this.thoughtFieldName};this.promptTemplate=new(t?.promptTemplate??zt)(this.signature,n),this.asserts=this.options?.asserts??[],this.streamingAsserts=this.options?.streamingAsserts??[],this.excludeContentFromTrace=t?.excludeContentFromTrace??!1,this.functions=t?.functions?jt(t.functions):[],this.usage=[]}stop(){this._stopRequested=!0;for(let e of this.activeAbortControllers)e.abort("Stopped by user")}setInstruction(e){this.promptTemplate.setInstruction(e)}getInstruction(){return this.promptTemplate.getInstruction()}getSignatureName(){return this.signature.getDescription()||"unknown_signature"}getMetricsInstruments(){return Ti()}getMergedCustomLabels(e,t){return Lt(pe.customLabels,e?.getOptions?.()?.customLabels,t?.customLabels)}updateMeter(e){Ti(e)}createStates(e){return Array.from({length:e},(t,n)=>({index:n,functionCalls:[],values:{},content:"",functionsExecuted:new Set,xstate:{extractedFields:[],streamedIndex:{},s:-1}}))}addAssert(e,t){this.asserts.push({fn:e,message:t})}addStreamingAssert(e,t,n){let r=this.signature.getOutputFields().find(a=>a.name===e);if(!r)throw new Error(`addStreamingAssert: field ${String(e)} not found in output signature`);let o=r.type?.name;if(!(!o||o==="string"||o==="code"))throw new Error(`addStreamingAssert: field ${String(e)} must be a string field for streaming assertions`);this.streamingAsserts.push({fieldName:String(e),fn:t,message:n})}addFieldProcessorInternal(e,t,n=!1){let r=this.signature.getOutputFields().find(o=>o.name===e);if(!r)throw new Error(`addFieldProcessor: field ${e} not found`);if(n){let o=r.type?.name;if(!(!o||o==="string"||o==="code"))throw new Error(`addFieldProcessor: field ${e} must be a text field`);this.streamingFieldProcessors.push({field:r,process:t})}else this.fieldProcessors.push({field:r,process:t})}addStreamingFieldProcessor(e,t){this.addFieldProcessorInternal(String(e),t,!0)}addFieldProcessor(e,t){this.addFieldProcessorInternal(String(e),t,!1)}async forwardSendRequest({ai:e,mem:t,options:n,traceContext:r,functions:o,functionCall:i,stepIndex:a}){let{sessionId:l,model:u,rateLimiter:c,stream:p,thinkingTokenBudget:d,showThoughts:m}=n??{},g=await _u(t,l,{resultPicker:n?.resultPicker}),h=t?.history(g,l)??[];if(h.length===0)throw new Error("No chat prompt found");let f={...n?.modelConfig,...n?.sampleCount?{n:n.sampleCount}:{},...n?.sampleCount&&n?.modelConfig?.temperature===1?{temperature:.8}:{}},y=this.isDebug(e,n),x=a===0,A=this.getLogger(e,n);o=this.signatureToolCallingManager?[]:o;let T,b=this.signature.getOutputFields();if(this.signature.hasComplexFields()&&!this.structuredOutputFunctionFallback){if(!e.getFeatures(u)?.structuredOutputs)throw new Error(`Complex structured outputs (object/array types) require a provider that supports structured outputs. Current provider/model (${u}) does not support this feature. Supported providers: OpenAI (GPT-4o, GPT-4.1+), Google Gemini, Anthropic (Sonnet/Opus).`);T={type:"json_schema",schema:{name:"output",strict:!0,schema:Mn(b)}}}let O=n?.contextCache?.cacheBreakpoint??"after-examples",_=e.getFeatures?.(u)?.caching?.cacheBreakpoints===!1,M=n?.contextCache&&(_||O==="after-functions"||O==="after-examples"),G=o?.length&&M?o.map((L,I)=>({...L,cache:I===o.length-1})):o;return await e.chat({chatPrompt:h,functions:G,functionCall:i,modelConfig:f,model:u,responseFormat:T},{sessionId:l,rateLimiter:c,stream:p,debug:y,debugHideSystemPrompt:n?.debugHideSystemPrompt??this.options?.debugHideSystemPrompt??!x,thinkingTokenBudget:d,showThoughts:m,traceContext:r,abortSignal:n?.abortSignal??pe.abortSignal,stepIndex:a,logger:A,functionCallMode:n?.functionCallMode??this.options?.functionCallMode??"auto",retry:n?.retry??this.options?.retry,customLabels:n?.customLabels})}async*forwardCore({ai:e,mem:t,options:n,stepIndex:r,span:o,traceContext:i,states:a,stopFunctionNames:l,stepContext:u}){let{sessionId:c,functions:p}=n??{},d=n?.functionResultFormatter??this.options?.functionResultFormatter,m=n?.functionCall??this.options?.functionCall,g=this.signatureToolCallingManager,h=n?.strictMode??!1,f=n.model,y=this.usage,x=r===0,A=this.isDebug(e,n),T=this.getLogger(e,n),{functions:b,functionCall:R}=Tu(p,m,x,n);this.structuredOutputFunctionFallback&&b.filter(M=>M.name!==Nn).length===0&&(R={type:"function",function:{name:Nn}});let O=await this.forwardSendRequest({ai:e,mem:t,options:n,traceContext:i,functions:b,functionCall:R,stepIndex:r});O instanceof ReadableStream?yield*Ru({ai:e,model:f,res:O,mem:t,sessionId:c,traceId:o?o.spanContext?.().traceId:void 0,functions:b,strictMode:h,span:o,states:a,usage:y,asserts:this.asserts,streamingAsserts:this.streamingAsserts,fieldProcessors:this.fieldProcessors,streamingFieldProcessors:this.streamingFieldProcessors,thoughtFieldName:this.thoughtFieldName,excludeContentFromTrace:this.excludeContentFromTrace,signature:this.signature,logger:T,debug:A,functionResultFormatter:d,signatureToolCallingManager:g,stopFunctionNames:l,disableMemoryCleanup:n.disableMemoryCleanup,stepContext:u,abortSignal:n.abortSignal}):yield*vu({ai:e,model:f,res:O,mem:t,sessionId:c,traceId:o?o.spanContext?.().traceId:void 0,functions:b,span:o,strictMode:h,states:a,usage:y,asserts:this.asserts,fieldProcessors:this.fieldProcessors,thoughtFieldName:this.thoughtFieldName,excludeContentFromTrace:this.excludeContentFromTrace,signature:this.signature,logger:T,debug:A,functionResultFormatter:d,signatureToolCallingManager:g,stopFunctionNames:l,disableMemoryCleanup:n.disableMemoryCleanup,stepContext:u,abortSignal:n.abortSignal})}async*_forward2(e,t,n,r,o,i){this.signatureToolCallingManager=void 0;let a=r?.stopFunction??this.options?.stopFunction,l=Array.isArray(a)?a.map(K=>K.toLowerCase()):a?[a.toLowerCase()]:void 0,u=r.maxRetries??this.options?.maxRetries??3,c=r.maxSteps??this.options?.maxSteps??25,p=r.mem??this.options?.mem??new Rn,d=r.functions?jt(r.functions):[...this.functions],m=new $n(c),g;if(r.selfTuning){if(g=r.selfTuning===!0?{model:!0,thinkingBudget:!0}:r.selfTuning,g.model!==!1){let ne=e.getModelList()?.filter(oe=>"model"in oe);if(!ne||ne.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 K=Hi(e,g,r.model?String(r.model):void 0);d.push(K)}let h={...r},f=r.stepHooks,y=d&&d.length>0,x=r.functionCallMode??this.options?.functionCallMode??"auto";y&&x==="prompt"&&(this.signatureToolCallingManager=new Er(d)),y&&x==="auto"&&!e.getFeatures(r.model).functions&&(this.signatureToolCallingManager=new Er(d));let A,T,b=this.options?.promptTemplate??zt;this.signatureToolCallingManager&&(this.signature=this.signatureToolCallingManager.processSignature(this.signature),this.setSignature(this.signature));let R=this.signature.hasComplexFields(),O=e.getFeatures?.(r.model),_=r.structuredOutputMode??this.options?.structuredOutputMode??"auto";if(this.structuredOutputFunctionFallback=R&&(_==="function"||_==="auto"&&!O?.structuredOutputs),this.structuredOutputFunctionFallback){let K={name:Nn,description:"Return the final result. Call this function with the complete output data.",parameters:Mn(this.signature.getOutputFields()),func:async()=>"done"};d.push(K),l=[...l??[],Nn.toLowerCase()]}let M=e.getFeatures?.(r.model)?.caching?.cacheBreakpoints===!1,G={functions:this.signatureToolCallingManager?[]:d,thoughtFieldName:this.thoughtFieldName,contextCache:r.contextCache,examplesInSystem:r.examplesInSystem,ignoreBreakpoints:M,structuredOutputFunctionName:this.structuredOutputFunctionFallback?Nn:void 0};this.promptTemplate=new b(this.signature,G);let B,L=performance.now();Array.isArray(t)?(pl(t),B=this.promptTemplate.render(t,{examples:this.examples,demos:this.demos})):B=this.promptTemplate.render(t,{examples:this.examples,demos:this.demos});let I=performance.now()-L,v=this.getMetricsInstruments(),E=this.getMergedCustomLabels(e,r);v&&Uo(v,"prompt_render",I,this.getSignatureName(),E);let $=performance.now();p.addRequest(B,r.sessionId);let S=performance.now()-$;v&&Uo(v,"memory_update",S,this.getSignatureName(),E);let P=new Map;n.forEach(K=>{P.set(K.index,{})});let j=()=>{let K=m._consumePendingOptions();if(K){let{modelConfig:oe,...W}=K;h={...h,...W},oe&&(h.modelConfig={...h.modelConfig,...oe})}let re=m._consumeFunctionsToAdd();if(re){let oe=jt(re);for(let W of oe)d.some(se=>se.name===W.name)||d.push(W)}let ne=m._consumeFunctionsToRemove();if(ne){let oe=new Set(ne.map(W=>W.toLowerCase()));for(let W=d.length-1;W>=0;W--)oe.has(d[W].name.toLowerCase())&&d.splice(W,1)}},N=r?.abortSignal??pe.abortSignal;e:for(let K=0;K<c;K++){if(m._beginStep(K),j(),g&&g.model!==!1){let ne=d.findIndex(oe=>oe.name==="adjustGeneration");if(ne!==-1){let oe=h.model?String(h.model):void 0;d[ne]=Hi(e,g,oe)}}if(m._isStopRequested)break;if(N?.aborted)throw new $e("between-steps",N.reason??"Aborted between steps");if(f?.beforeStep&&(await f.beforeStep(m),j(),m._isStopRequested))break;let re=u;for(let ne=0;ne<=re;ne++)try{let oe=u+1;for(let se=0;se<oe;se++){n.forEach(te=>{te.content="",te.values={},te.functionCalls=[],te.functionsExecuted=new Set,te.xstate={extractedFields:[],streamedIndex:{},s:-1}}),se>0&&P.forEach((te,he)=>{P.set(he,{})});let Ie=new Map;n.forEach(te=>{Ie.set(te.index,{})});try{let te=this.forwardCore({options:{...h,functions:d},ai:e,mem:p,stepIndex:K,span:o,traceContext:i,states:n,stopFunctionNames:l,stepContext:m}),he=!1;try{for await(let w of te)if(w!==void 0){let F=w.index,k=w.delta,C=Ie.get(F)??{},D=P.get(F)??{},z={},q=!1;for(let ee of Object.keys(k)){let H=k[ee],V=C[ee],Y;typeof H=="string"&&(typeof V=="string"||V===void 0)?Y=(V??"")+H:Array.isArray(H)&&(Array.isArray(V)||V===void 0)?Y=[...V??[],...H]:Y=H,C[ee]=Y;let Q=Y,ie=D[ee];if(typeof Q=="string"&&typeof ie=="string")if(Q.startsWith(ie)){let ye=Q.slice(ie.length);ye&&(z[ee]=ye,q=!0,D[ee]=Q)}else ie.startsWith(Q)||Q!==ie&&(z[ee]=Q,q=!0,D[ee]=Q);else if(Array.isArray(Q)&&Array.isArray(ie)){if(Q.length>ie.length){let ye=Q.slice(ie.length);z[ee]=ye,q=!0,D[ee]=Q}}else JSON.stringify(Q)!==JSON.stringify(ie)&&(z[ee]=Q,q=!0,D[ee]=Q)}q&&(yield{version:se,index:w.index,delta:z})}}catch(w){if(w instanceof Bt){if(he=!0,this.structuredOutputFunctionFallback){let F=w.calls.find(k=>k.func.name===Nn);if(F?.args){let k=F.args;On(this.signature,k);let C=this.signature.getOutputFields();for(let D of n){let z={};for(let q of C)q.name in k&&!q.isInternal&&(z[q.name]=k[q.name],D.values[q.name]=k[q.name]);yield{version:se,index:D.index,delta:z}}for(let D of n)await vn(this.asserts,D.values);if(this.fieldProcessors.length>0)for(let D of n)await vr(this.fieldProcessors,D.values,p,r.sessionId)}}}else throw w}if(this.usage.length>0){let w=this.usage[this.usage.length-1];w?.tokens&&m._addUsage(w.tokens.promptTokens??0,w.tokens.completionTokens??0,w.tokens.totalTokens??0)}n.some(w=>w.functionsExecuted.size>0)&&f?.afterFunctionExecution&&(await f.afterFunctionExecution(m),j());let we=he||m._isStopRequested?!1:Su(p,l,n,h?.sessionId);if(f?.afterStep&&(await f.afterStep(m),j()),we&&!m._isStopRequested&&!N?.aborted){let w=this.getMetricsInstruments();w&&Go(w,K+1,c,this.getSignatureName(),E);continue e}if(N?.aborted)throw new $e("mid-step",N.reason??"Aborted");r?.disableMemoryCleanup||(p.removeByTag("invalid-assistant",r.sessionId),p.removeByTag("correction",r.sessionId),p.removeByTag("error",r.sessionId));let Me=this.getMetricsInstruments();if(Me){Go(Me,K+1,c,this.getSignatureName(),E);let w=new Set;n.forEach(F=>{F.functionsExecuted.forEach(k=>w.add(k))}),w.size>0&&Kl(Me,!0,w.size,!0,!1,this.getSignatureName(),E),Wl(Me,this.fieldProcessors.length,this.streamingFieldProcessors.length,this.getSignatureName(),E)}return}catch(te){if(te instanceof $e)throw te;T=te;let he,ve=this.isDebug(e,r),we=this.getLogger(e,r),Me=this.getMetricsInstruments(),w=this.getSignatureName(),F={error:te,errCount:se,logger:we,metricsInstruments:Me,signatureName:w,span:o,debug:ve,customLabels:E};if(o?.recordException(te),te instanceof Be)he=ru(F),A=te;else if(te instanceof bt)he=ou(F),A=te;else if(te instanceof ke)su(F);else{if(te instanceof ot)throw te;{let k=te,C=k instanceof Ve&&k.status>=500&&k.status<600,D=k instanceof Ue,z=k instanceof tt;throw C||D||z?te:Yi(te,e,this.signature)}}if(he&&(p.addTag("error",r.sessionId),p.addRequest([{role:"user",content:this.promptTemplate.renderExtraFields(he)}],r.sessionId),p.addTag("correction",r.sessionId),this.signature.hasComplexFields()))for(let C of n)C.content="",C.values={},C.xstate={extractedFields:[],streamedIndex:{},s:-1}}}let W=this.getMetricsInstruments();throw W&&Ri(W,u,!1,u,this.getSignatureName(),E),Yi(new Error(`Unable to fix validation error: ${(A??T)?.message??(A??T)?.toString()??"unknown error"}
316
316
 
317
317
  LLM Output:
318
318
  ${n.map(se=>se.content).join(`
319
319
  ---
320
- `)}`),e,this.signature)}catch(oe){let W=oe,se=W instanceof Ve&&W.status>=500&&W.status<600,Ie=W instanceof Ue,te=W instanceof tt,he=W instanceof ot;if((se||Ie||te||he)&&ne<re){let we=this.isDebug(e,r),Me=this.getLogger(e,r),k=Math.min(6e4,1e3*Math.pow(2,ne));we&&Me&&Me({name:"Notification",id:"infrastructure-retry",value:`Infrastructure error (attempt ${ne+1}/${re+1}): ${W.message}. Retrying in ${k}ms...`}),o?.addEvent("infrastructure.retry",{attempt:ne+1,maxRetries:re,delay:k,errorType:W instanceof Ve?"status_error":W instanceof Ue?"network_error":W instanceof tt?"timeout_error":"stream_terminated",errorMessage:W.message}),await new Promise((C,D)=>{let z=!1,q,ee=()=>{N&&q&&N.removeEventListener("abort",q)},V=setTimeout(()=>{z||(z=!0,ee(),C())},k);if(N){if(q=()=>{z||(z=!0,clearTimeout(V),ee(),D(new $e("infrastructure-retry-backoff",N.reason?String(N.reason):"Aborted during retry backoff")))},N.aborted){q();return}N.addEventListener("abort",q,{once:!0})}});continue}throw oe}}throw v&&Go(v,c,c,this.getSignatureName(),E),Yi(new Error(`Max steps reached: ${c}`),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 o=n.type;if(o&&(o.name==="url"&&$t(r,n),o.name,o.name,(o.name==="string"||o.name==="code")&&at(r,n),o.name==="number"&&lt(r,n),o.name==="object"&&o.fields&&typeof r=="object"&&r!==null&&this.validateObjectFields(r,o.fields,n.name),o.isArray&&Array.isArray(r)))for(let i=0;i<r.length;i++){let a=r[i];o.name==="string"||o.name==="code"?at(a,n):o.name==="number"?lt(a,n):o.fields&&typeof a=="object"&&a!==null&&this.validateObjectFields(a,o.fields,`${n.name}[${i}]`)}}}validateObjectFields(e,t,n){for(let[r,o]of Object.entries(t)){let i=e[r];if(o.isOptional&&i===void 0)continue;let a={name:`${n}.${r}`,type:{name:o.type,isArray:o.isArray,options:o.options?[...o.options]:void 0,fields:o.fields,minLength:o.minLength,maxLength:o.maxLength,minimum:o.minimum,maximum:o.maximum,pattern:o.pattern,format:o.format},description:o.description,isOptional:o.isOptional};if(o.type==="string"||o.type==="code"?at(i,a):o.type==="number"?lt(i,a):o.type==="object"&&o.fields&&typeof i=="object"&&i!==null&&this.validateObjectFields(i,o.fields,a.name),o.isArray&&Array.isArray(i))for(let l=0;l<i.length;l++){let u=i[l];o.type==="string"||o.type==="code"?at(u,a):o.type==="number"?lt(u,a):o.fields&&typeof u=="object"&&u!==null&&this.validateObjectFields(u,o.fields,`${a.name}[${l}]`)}}}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 o=Ot(r.signal,n?.abortSignal??pe.abortSignal),i=o?{...n,abortSignal:o}:n;try{let a=performance.now(),l=this.createStates(n.sampleCount??1),u=performance.now()-a,c=this.getMetricsInstruments(),p=this.getMergedCustomLabels(e,n);c&&Uo(c,"state_creation",u,this.getSignatureName(),p);let d=n?.tracer??this.options?.tracer??e.getOptions().tracer,m=this.functions;if(n?.functions&&(m=jt(n.functions,this.functions)),!d){yield*this._forward2(e,t,l,{...i,functions:m});return}let g=m?.map(b=>b.name).join(","),h={signature:JSON.stringify(this.signature.toJSON(),null,2),...this.examples?{examples:JSON.stringify(this.examples,null,2)}:{},...g?{provided_functions:g}:{},...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}:{}},f=this.traceLabel&&n.traceLabel?`${this.traceLabel} > ${n.traceLabel}`:n.traceLabel??this.traceLabel,y=f?`AxGen > ${f}`:"AxGen",x=d.startSpan(y,{kind:Qe.SERVER,attributes:h}),A=Et.active(),T=nr.setSpan(A,x);try{if(this.excludeContentFromTrace||x.addEvent("input",{content:JSON.stringify(t,null,2)}),yield*this._forward2(e,t,l,{...i,functions:m},x,T),!this.excludeContentFromTrace){let b=l.map(O=>O.values),R=b.length===1?b[0]:b;x.addEvent("output",{content:JSON.stringify(R,null,2)})}}finally{x.end()}}finally{this.activeAbortControllers.delete(r),this._stopRequested=!1}}async forward(e,t,n){let r=n?.cachingFunction??this.options?.cachingFunction??pe.cachingFunction,o=(()=>{if(!r)return;let d=this.signature.getInputFields().map(m=>m.name);return this.computeCacheKey(t,d)})();if(r&&o){let d=await r(o);if(d!==void 0)return d}let i=performance.now(),a=this.getSignatureName(),l=n?.stream??!1,u=!1,c=0,p=!1;try{let d=this.getMetricsInstruments(),m=this.getMergedCustomLabels(e,n);d&&Ql(d,this.signature.getInputFields().length,this.signature.getOutputFields().length,this.examples?.length??0,this.demos?.length??0,a,m);let g=this._forward1(e,t,n??{}),h=[],f=0,y=0;for await(let _ of g)_.version!==f&&(h=[]),f=_.version,h=Li(h,_),y++;c=f;let x=performance.now();p=!!n?.resultPicker;let A=await Xo(h,{resultPicker:n?.resultPicker},n?.mem,n?.sessionId),T=performance.now()-x,R=h[A]?.delta??{},O=Array.isArray(t)?{}:t??{};if(this.trace={...O,...R},p&&this.isDebug(e,n)){let _=this.getLogger(e,n);Wa(h.length,A,T,_)}if(u=!0,d&&(Yl(d,h.length,p,p?T:void 0,a,m),Jl(d,l,y,void 0,a,m)),r&&o)try{await r(o,R)}catch{}return R}catch(d){throw u=!1,d}finally{let d=performance.now()-i,m=this.getMetricsInstruments(),g=this.getMergedCustomLabels(e,n);m&&(Hl(m,d,u,a,e.getName(),n?.model?String(n.model):void 0,g),c>0&&Ri(m,c,u,n?.maxRetries??this.options?.maxRetries??3,a,g))}}async*streamingForward(e,t,n){let r=n?.cachingFunction??this.options?.cachingFunction??pe.cachingFunction,o=(()=>{if(!r)return;let p=this.signature.getInputFields().map(d=>d.name);return this.computeCacheKey(t,p)})();if(r&&o){let p;try{p=await r(o)}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=[],l=0;for await(let p of i)p.version!==l&&(a=[]),l=p.version,a=Li(a,p);let u=await Xo(a,{resultPicker:n?.resultPicker},n?.mem,n?.sessionId),c=a[u];if(c){if(r&&o)try{await r(o,c.delta)}catch{}yield{version:l,index:u,delta:c.delta}}}setExamples(e,t){super.setExamples(e,t)}isDebug(e,t){return t?.debug??this.options?.debug??pe.debug??e.getOptions().debug??!1}getLogger(e,t){return t?.logger??this.options?.logger??pe.logger??e.getLogger()}computeCacheKey(e,t){let n=et("sha256");n.update(this.signature.hash()??"");let r=o=>{let i=typeof o;if(n.update(`|${i}|`),o==null){n.update("null");return}if(i==="string"||i==="number"||i==="boolean"){n.update(String(o));return}if(Array.isArray(o)){n.update("[");for(let a of o)r(a);n.update("]");return}if(typeof o=="object"&&o!==null&&"mimeType"in o&&"data"in o){let a=o;n.update(a.mimeType??"");let l=et("sha256").update(a.data??"").digest("hex");n.update(l);return}if(typeof o=="object"){let a=o,l=Object.keys(a).sort();for(let u of l)n.update(`{${u}}`),r(a[u]);return}n.update(String(o))};if(Array.isArray(e))for(let o of e){n.update(`role:${o.role}`);let i=t.map(a=>o.values?.[a]);for(let a of i)r(a)}else{let o=t.map(i=>e?.[i]);for(let i of o)r(i)}return n.digest("hex")}},Pr=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 Yi(s,e,t){let n=s instanceof Error?s:new Error(String(s));if(n instanceof $e)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(),l={model:i,maxTokens:a?.maxTokens,streaming:a?.stream??!1,signature:{input:t.getInputFields(),output:t.getOutputFields(),description:t.getDescription()}};return new Pr(`Generate failed: ${n.message}`,l,{cause:n})}var od=s=>s.replace(/^\W+|\W+$/g,""),sd=(s,e)=>{let t=s.search(e);if(t===-1)return[s];let n=s.match(e);if(!n)throw new Error("Match failed unexpectedly.");let r=s.substring(0,t),o=s.substring(t+n[0].length);return[r,o]},id=s=>{let e=new Set,t=[];for(let n of s)e.has(n)||(e.add(n),t.push(n));return t},ad=s=>{let e=s.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}},ld=s=>{let e=s.match(/^(\d+)[.,\s]+(.*)$/);return e&&e[2]!==void 0?e[2].trim():s},ud=(s,e)=>{let t=[];for(let n=0;n<s.length;n+=e)t.push(s.slice(n,n+e));return t},es={trimNonAlphaNum:od,splitIntoTwo:sd,dedup:id,extractIdAndText:ad,extractIndexPrefixedText:ld,batchArray:ud};var ts=class extends Oe{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."
321
- 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),o=r.map(a=>{let{id:l}=es.extractIdAndText(a);return l});return{rankedItems:t.items.map((a,l)=>{let u=o[l];return u!==void 0?t.items[u]:void 0}).filter(a=>a!==void 0)}}};var ns=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 o=await(this.fetch??fetch)(this.tikaUrl,r);if(!o.ok)throw new Error(`Failed to upload file: ${o.statusText}`);return await o.text()}catch(r){throw new Error(`Error converting file: ${r}`)}}async convert(e,t){let n=[],r=t?.batchSize??10;for(let o=0;o<e.length;o+=r){let a=e.slice(o,o+r).map(u=>this._convert(u,{format:t?.format})),l=await Promise.all(a);n.push(...l)}return n}};var rb=new Ye,rs=class{name;context;constructor(e,t){this.name=e,this.context=t}getName(){return this.name}getContext(){return this.context}},os=class{ai;db;debug;constructor(e){this.db=new Ft,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}),o=(await this.db.query({table:"classes",values:n[0]})).matches;if(typeof t?.cutoff=="number"){let{cutoff:a}=t;o=o.filter(l=>l.score<=a)}let i=o.at(0);return i?i.id:""}setOptions(e){typeof e.debug=="boolean"&&(this.debug=e.debug)}};var Gu=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 Uu(s,e){return s.filter(t=>!e.has(t))}function Bu(s){let e={};for(let t of s)e[t]=(e[t]||0)+1;return e}function Ht(s){let e=s.normalize("NFD");return e=e.replace(/\b(a|an|the)\b/g," "),e=e.split(/\s+/).join(" "),e=e.replace(/[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/g,""),e.toLowerCase()}function cd(s,e){return Ht(s)===Ht(e)?1:0}function pd(s,e){let t=Ht(s).split(" "),n=Ht(e).split(" "),r=Bu(t),o=Bu(n),i=0;for(let u in r){let c=r[u]??0,p=o[u]??0;i+=Math.min(c,p)}if(i===0)return 0;let a=i/t.length,l=i/n.length;return 2*a*l/(a+l)}function dd(s,e,t,n=!1){let r=Ht(s).split(" "),o=Ht(e).split(" "),i=Ht(t).split(" "),a=new Set([...Gu,...r]);o=Uu(o,a),i=Uu(i,a);let l=0,u=l/o.length,c=l/i.length,p=2*u*c/(u+c);return n?c:p}var ju={emScore:cd,f1Score:pd,novelF1ScoreOptimized:dd};var ss=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 l=await this.program.forward(this.ai,a,{maxRetries:1}),u=await e({prediction:l,example:a});r+=u}catch(l){console.warn(`Program evaluation failed for example ${i}: ${l instanceof Error?l.message:"Unknown error"}`)}}let o=n>0?r/n:0;this.ai.getOptions().debug&&console.log(`
320
+ `)}`),e,this.signature)}catch(oe){let W=oe,se=W instanceof Ve&&W.status>=500&&W.status<600,Ie=W instanceof Ue,te=W instanceof tt,he=W instanceof ot;if((se||Ie||te||he)&&ne<re){let we=this.isDebug(e,r),Me=this.getLogger(e,r),k=Math.min(6e4,1e3*Math.pow(2,ne));we&&Me&&Me({name:"Notification",id:"infrastructure-retry",value:`Infrastructure error (attempt ${ne+1}/${re+1}): ${W.message}. Retrying in ${k}ms...`}),o?.addEvent("infrastructure.retry",{attempt:ne+1,maxRetries:re,delay:k,errorType:W instanceof Ve?"status_error":W instanceof Ue?"network_error":W instanceof tt?"timeout_error":"stream_terminated",errorMessage:W.message}),await new Promise((C,D)=>{let z=!1,q,ee=()=>{N&&q&&N.removeEventListener("abort",q)},V=setTimeout(()=>{z||(z=!0,ee(),C())},k);if(N){if(q=()=>{z||(z=!0,clearTimeout(V),ee(),D(new $e("infrastructure-retry-backoff",N.reason?String(N.reason):"Aborted during retry backoff")))},N.aborted){q();return}N.addEventListener("abort",q,{once:!0})}});continue}throw oe}}throw v&&Go(v,c,c,this.getSignatureName(),E),Yi(new Error(`Max steps reached: ${c}`),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 o=n.type;if(o&&(o.name==="url"&&$t(r,n),o.name,o.name,(o.name==="string"||o.name==="code")&&at(r,n),o.name==="number"&&lt(r,n),o.name==="object"&&o.fields&&typeof r=="object"&&r!==null&&this.validateObjectFields(r,o.fields,n.name),o.isArray&&Array.isArray(r)))for(let i=0;i<r.length;i++){let a=r[i];o.name==="string"||o.name==="code"?at(a,n):o.name==="number"?lt(a,n):o.fields&&typeof a=="object"&&a!==null&&this.validateObjectFields(a,o.fields,`${n.name}[${i}]`)}}}validateObjectFields(e,t,n){for(let[r,o]of Object.entries(t)){let i=e[r];if(o.isOptional&&i===void 0)continue;let a={name:`${n}.${r}`,type:{name:o.type,isArray:o.isArray,options:o.options?[...o.options]:void 0,fields:o.fields,minLength:o.minLength,maxLength:o.maxLength,minimum:o.minimum,maximum:o.maximum,pattern:o.pattern,format:o.format},description:o.description,isOptional:o.isOptional};if(o.type==="string"||o.type==="code"?at(i,a):o.type==="number"?lt(i,a):o.type==="object"&&o.fields&&typeof i=="object"&&i!==null&&this.validateObjectFields(i,o.fields,a.name),o.isArray&&Array.isArray(i))for(let l=0;l<i.length;l++){let u=i[l];o.type==="string"||o.type==="code"?at(u,a):o.type==="number"?lt(u,a):o.fields&&typeof u=="object"&&u!==null&&this.validateObjectFields(u,o.fields,`${a.name}[${l}]`)}}}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 o=Ot(r.signal,n?.abortSignal??pe.abortSignal),i=o?{...n,abortSignal:o}:n;try{let a=performance.now(),l=this.createStates(n.sampleCount??1),u=performance.now()-a,c=this.getMetricsInstruments(),p=this.getMergedCustomLabels(e,n);c&&Uo(c,"state_creation",u,this.getSignatureName(),p);let d=n?.tracer??this.options?.tracer??e.getOptions().tracer,m=this.functions;if(n?.functions&&(m=jt(n.functions,this.functions)),!d){yield*this._forward2(e,t,l,{...i,functions:m});return}let g=m?.map(b=>b.name).join(","),h={signature:JSON.stringify(this.signature.toJSON(),null,2),...this.examples?{examples:JSON.stringify(this.examples,null,2)}:{},...g?{provided_functions:g}:{},...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}:{}},f=this.traceLabel&&n.traceLabel?`${this.traceLabel} > ${n.traceLabel}`:n.traceLabel??this.traceLabel,y=f?`AxGen > ${f}`:"AxGen",x=d.startSpan(y,{kind:Qe.SERVER,attributes:h}),A=Et.active(),T=nr.setSpan(A,x);try{if(this.excludeContentFromTrace||x.addEvent("input",{content:JSON.stringify(t,null,2)}),yield*this._forward2(e,t,l,{...i,functions:m},x,T),!this.excludeContentFromTrace){let b=l.map(O=>O.values),R=b.length===1?b[0]:b;x.addEvent("output",{content:JSON.stringify(R,null,2)})}}finally{x.end()}}finally{this.activeAbortControllers.delete(r),this._stopRequested=!1}}async forward(e,t,n){let r=n?.cachingFunction??this.options?.cachingFunction??pe.cachingFunction,o=(()=>{if(!r)return;let d=this.signature.getInputFields().map(m=>m.name);return this.computeCacheKey(t,d)})();if(r&&o){let d=await r(o);if(d!==void 0)return d}let i=performance.now(),a=this.getSignatureName(),l=n?.stream??!1,u=!1,c=0,p=!1;try{let d=this.getMetricsInstruments(),m=this.getMergedCustomLabels(e,n);d&&Yl(d,this.signature.getInputFields().length,this.signature.getOutputFields().length,this.examples?.length??0,this.demos?.length??0,a,m);let g=this._forward1(e,t,n??{}),h=[],f=0,y=0;for await(let _ of g)_.version!==f&&(h=[]),f=_.version,h=Li(h,_),y++;c=f;let x=performance.now();p=!!n?.resultPicker;let A=await Xo(h,{resultPicker:n?.resultPicker},n?.mem,n?.sessionId),T=performance.now()-x,R=h[A]?.delta??{},O=Array.isArray(t)?{}:t??{};if(this.trace={...O,...R},p&&this.isDebug(e,n)){let _=this.getLogger(e,n);Ka(h.length,A,T,_)}if(u=!0,d&&(Jl(d,h.length,p,p?T:void 0,a,m),Vl(d,l,y,void 0,a,m)),r&&o)try{await r(o,R)}catch{}return R}catch(d){throw u=!1,d}finally{let d=performance.now()-i,m=this.getMetricsInstruments(),g=this.getMergedCustomLabels(e,n);m&&(zl(m,d,u,a,e.getName(),n?.model?String(n.model):void 0,g),c>0&&Ri(m,c,u,n?.maxRetries??this.options?.maxRetries??3,a,g))}}async*streamingForward(e,t,n){let r=n?.cachingFunction??this.options?.cachingFunction??pe.cachingFunction,o=(()=>{if(!r)return;let p=this.signature.getInputFields().map(d=>d.name);return this.computeCacheKey(t,p)})();if(r&&o){let p;try{p=await r(o)}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=[],l=0;for await(let p of i)p.version!==l&&(a=[]),l=p.version,a=Li(a,p);let u=await Xo(a,{resultPicker:n?.resultPicker},n?.mem,n?.sessionId),c=a[u];if(c){if(r&&o)try{await r(o,c.delta)}catch{}yield{version:l,index:u,delta:c.delta}}}setExamples(e,t){super.setExamples(e,t)}isDebug(e,t){return t?.debug??this.options?.debug??pe.debug??e.getOptions().debug??!1}getLogger(e,t){return t?.logger??this.options?.logger??pe.logger??e.getLogger()}computeCacheKey(e,t){let n=et("sha256");n.update(this.signature.hash()??"");let r=o=>{let i=typeof o;if(n.update(`|${i}|`),o==null){n.update("null");return}if(i==="string"||i==="number"||i==="boolean"){n.update(String(o));return}if(Array.isArray(o)){n.update("[");for(let a of o)r(a);n.update("]");return}if(typeof o=="object"&&o!==null&&"mimeType"in o&&"data"in o){let a=o;n.update(a.mimeType??"");let l=et("sha256").update(a.data??"").digest("hex");n.update(l);return}if(typeof o=="object"){let a=o,l=Object.keys(a).sort();for(let u of l)n.update(`{${u}}`),r(a[u]);return}n.update(String(o))};if(Array.isArray(e))for(let o of e){n.update(`role:${o.role}`);let i=t.map(a=>o.values?.[a]);for(let a of i)r(a)}else{let o=t.map(i=>e?.[i]);for(let i of o)r(i)}return n.digest("hex")}},Pr=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 Yi(s,e,t){let n=s instanceof Error?s:new Error(String(s));if(n instanceof $e)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(),l={model:i,maxTokens:a?.maxTokens,streaming:a?.stream??!1,signature:{input:t.getInputFields(),output:t.getOutputFields(),description:t.getDescription()}};return new Pr(`Generate failed: ${n.message}`,l,{cause:n})}var od=s=>s.replace(/^\W+|\W+$/g,""),sd=(s,e)=>{let t=s.search(e);if(t===-1)return[s];let n=s.match(e);if(!n)throw new Error("Match failed unexpectedly.");let r=s.substring(0,t),o=s.substring(t+n[0].length);return[r,o]},id=s=>{let e=new Set,t=[];for(let n of s)e.has(n)||(e.add(n),t.push(n));return t},ad=s=>{let e=s.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}},ld=s=>{let e=s.match(/^(\d+)[.,\s]+(.*)$/);return e&&e[2]!==void 0?e[2].trim():s},ud=(s,e)=>{let t=[];for(let n=0;n<s.length;n+=e)t.push(s.slice(n,n+e));return t},es={trimNonAlphaNum:od,splitIntoTwo:sd,dedup:id,extractIdAndText:ad,extractIndexPrefixedText:ld,batchArray:ud};var ts=class extends Oe{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."
321
+ 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),o=r.map(a=>{let{id:l}=es.extractIdAndText(a);return l});return{rankedItems:t.items.map((a,l)=>{let u=o[l];return u!==void 0?t.items[u]:void 0}).filter(a=>a!==void 0)}}};var ns=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 o=await(this.fetch??fetch)(this.tikaUrl,r);if(!o.ok)throw new Error(`Failed to upload file: ${o.statusText}`);return await o.text()}catch(r){throw new Error(`Error converting file: ${r}`)}}async convert(e,t){let n=[],r=t?.batchSize??10;for(let o=0;o<e.length;o+=r){let a=e.slice(o,o+r).map(u=>this._convert(u,{format:t?.format})),l=await Promise.all(a);n.push(...l)}return n}};var tb=new Ye,rs=class{name;context;constructor(e,t){this.name=e,this.context=t}getName(){return this.name}getContext(){return this.context}},os=class{ai;db;debug;constructor(e){this.db=new Ft,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}),o=(await this.db.query({table:"classes",values:n[0]})).matches;if(typeof t?.cutoff=="number"){let{cutoff:a}=t;o=o.filter(l=>l.score<=a)}let i=o.at(0);return i?i.id:""}setOptions(e){typeof e.debug=="boolean"&&(this.debug=e.debug)}};var Du=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 Gu(s,e){return s.filter(t=>!e.has(t))}function Uu(s){let e={};for(let t of s)e[t]=(e[t]||0)+1;return e}function Ht(s){let e=s.normalize("NFD");return e=e.replace(/\b(a|an|the)\b/g," "),e=e.split(/\s+/).join(" "),e=e.replace(/[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/g,""),e.toLowerCase()}function cd(s,e){return Ht(s)===Ht(e)?1:0}function pd(s,e){let t=Ht(s).split(" "),n=Ht(e).split(" "),r=Uu(t),o=Uu(n),i=0;for(let u in r){let c=r[u]??0,p=o[u]??0;i+=Math.min(c,p)}if(i===0)return 0;let a=i/t.length,l=i/n.length;return 2*a*l/(a+l)}function dd(s,e,t,n=!1){let r=Ht(s).split(" "),o=Ht(e).split(" "),i=Ht(t).split(" "),a=new Set([...Du,...r]);o=Gu(o,a),i=Gu(i,a);let l=0,u=l/o.length,c=l/i.length,p=2*u*c/(u+c);return n?c:p}var Bu={emScore:cd,f1Score:pd,novelF1ScoreOptimized:dd};var ss=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 l=await this.program.forward(this.ai,a,{maxRetries:1}),u=await e({prediction:l,example:a});r+=u}catch(l){console.warn(`Program evaluation failed for example ${i}: ${l instanceof Error?l.message:"Unknown error"}`)}}let o=n>0?r/n:0;this.ai.getOptions().debug&&console.log(`
322
322
  Performance: `,r,"/",n,"Average Score: ",o,`
323
323
  `)}};function is(s){return s.map(e=>{let t=e.type?.name??"string",n=e.description?`: ${e.description}`:"";return`- ${e.name} (${t})${n}`}).join(`
324
324
  `)}function md(s,e){if(s===e)return!0;if(typeof s!=typeof e)return!1;if(typeof s=="object"&&s!==null&&e!==null){let t=JSON.stringify(s),n=JSON.stringify(e);return t===n}return!1}function gd(s){return s==null?!1:!!(typeof s=="string"||typeof s=="number"||typeof s=="boolean"||Array.isArray(s)&&s.every(e=>typeof e!="object"))}var Ln=class{signature;options;constructor(e,t){this.signature=e,this.options={ai:t.ai,randomizeOrder:t.randomizeOrder??!0,model:t.model,criteria:t.criteria}}async evaluate(e,t,n){return n&&gd(n)?this.runAbsolute(t,n):n?this.runRelativistic(e,t,n):this.runReferenceFree(e,t)}async runAbsolute(e,t){let n=this.signature.getOutputFields(),r=0,o=0,i=[];for(let u of n){let c=e[u.name],p=t[u.name];p!==void 0&&(o++,md(c,p)?r++:i.push(`${u.name}: expected "${p}", got "${c}"`))}let a=o>0?r/o:0,l=a===1?"All fields match expected values exactly.":`Mismatches found: ${i.join("; ")}`;return{score:a,reasoning:l,mode:"absolute"}}async runRelativistic(e,t,n){let r=this.signature.getDescription(),o=this.signature.getInputFields(),i=this.signature.getOutputFields(),a=this.options.randomizeOrder?Math.random()>.5:!0,l=a?t:n,u=a?n:t,c=`
@@ -380,7 +380,7 @@ First explain your reasoning, then classify the response into one of the quality
380
380
  ->
381
381
  reasoning:string "Detailed explanation for the quality assessment",
382
382
  quality:class "excellent, good, acceptable, poor, unacceptable" "Quality tier"
383
- `);l.setInstruction(a);let u=await l.forward(this.options.ai,{input:JSON.stringify(e),response:JSON.stringify(t)},{model:this.options.model}),c={excellent:1,good:.8,acceptable:.5,poor:.2,unacceptable:0},p=u.quality.toLowerCase();return{score:c[p]??.5,reasoning:u.reasoning,mode:"reference-free",qualityTier:p}}toMetricFn(){return async e=>{let{example:t,prediction:n}=e,r={};for(let u of this.signature.getInputFields())u.name in t&&(r[u.name]=t[u.name]);let o={},i=!1;for(let u of this.signature.getOutputFields())u.name in t&&(o[u.name]=t[u.name],i=!0);let a=n;return(await this.evaluate(r,a,i?o:void 0)).score}}getSignature(){return this.signature}};function qu(){let s=Date.now().toString(36),e=Math.random().toString(36).substring(2,8);return`trace-${s}-${e}`}var Dn=class s{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=qu(),o=new Date,i,a;try{let l=this.gen.streamingForward(e,t,n);for await(let u of l)u.partial?i=u.partial:u.delta,yield u}catch(l){throw a=l instanceof Error?l.message:String(l),l}finally{let l=new Date,u=l.getTime()-o.getTime(),c={type:"trace",id:r,name:this.options.name,input:this.options.logInputs?t:{},output:this.options.logOutputs&&i?i:{},startTime:o,endTime:l,durationMs:u,model:n?.model??void 0,metadata:this.options.metadata,error:a};this.saveTrace(c)}}async forward(e,t,n){let r=qu(),o=new Date,i,a;try{return i=await this.gen.forward(e,t,n),i}catch(l){throw a=l instanceof Error?l.message:String(l),l}finally{let l=new Date,u=l.getTime()-o.getTime(),c={type:"trace",id:r,name:this.options.name,input:this.options.logInputs?t:{},output:this.options.logOutputs&&i?i:{},startTime:o,endTime:l,durationMs:u,model:n?.model??void 0,metadata:this.options.metadata,error:a};this.saveTrace(c)}}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 s(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})}};var zu=s=>{console.log(s)},Qi=(s=zu)=>{let e=new Ye,t=e.gray("\u2500".repeat(50)),n=e.gray("\u2501".repeat(50));return r=>{let o="";switch(r.name){case"OptimizationStart":o=`
383
+ `);l.setInstruction(a);let u=await l.forward(this.options.ai,{input:JSON.stringify(e),response:JSON.stringify(t)},{model:this.options.model}),c={excellent:1,good:.8,acceptable:.5,poor:.2,unacceptable:0},p=u.quality.toLowerCase();return{score:c[p]??.5,reasoning:u.reasoning,mode:"reference-free",qualityTier:p}}toMetricFn(){return async e=>{let{example:t,prediction:n}=e,r={};for(let u of this.signature.getInputFields())u.name in t&&(r[u.name]=t[u.name]);let o={},i=!1;for(let u of this.signature.getOutputFields())u.name in t&&(o[u.name]=t[u.name],i=!0);let a=n;return(await this.evaluate(r,a,i?o:void 0)).score}}getSignature(){return this.signature}};function ju(){let s=Date.now().toString(36),e=Math.random().toString(36).substring(2,8);return`trace-${s}-${e}`}var Dn=class s{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=ju(),o=new Date,i,a;try{let l=this.gen.streamingForward(e,t,n);for await(let u of l)u.partial?i=u.partial:u.delta,yield u}catch(l){throw a=l instanceof Error?l.message:String(l),l}finally{let l=new Date,u=l.getTime()-o.getTime(),c={type:"trace",id:r,name:this.options.name,input:this.options.logInputs?t:{},output:this.options.logOutputs&&i?i:{},startTime:o,endTime:l,durationMs:u,model:n?.model??void 0,metadata:this.options.metadata,error:a};this.saveTrace(c)}}async forward(e,t,n){let r=ju(),o=new Date,i,a;try{return i=await this.gen.forward(e,t,n),i}catch(l){throw a=l instanceof Error?l.message:String(l),l}finally{let l=new Date,u=l.getTime()-o.getTime(),c={type:"trace",id:r,name:this.options.name,input:this.options.logInputs?t:{},output:this.options.logOutputs&&i?i:{},startTime:o,endTime:l,durationMs:u,model:n?.model??void 0,metadata:this.options.metadata,error:a};this.saveTrace(c)}}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 s(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})}};var qu=s=>{console.log(s)},Qi=(s=qu)=>{let e=new Ye,t=e.gray("\u2500".repeat(50)),n=e.gray("\u2501".repeat(50));return r=>{let o="";switch(r.name){case"OptimizationStart":o=`
384
384
  ${e.blueBright("\u25CF ")}${e.whiteBright("Optimization Started")}
385
385
  ${t}
386
386
  ${e.white("Optimizer:")} ${e.cyan(r.value.optimizerType)}
@@ -423,7 +423,7 @@ ${t}
423
423
  ${e.white("Config:")} ${e.cyan(JSON.stringify(r.value.config).slice(0,80))}${JSON.stringify(r.value.config).length>80?"...":""}
424
424
  `;break;default:o=`${e.red("\u25CF ")}${e.whiteBright("Unknown Event")}
425
425
  ${e.white(JSON.stringify(r).slice(0,100))}${JSON.stringify(r).length>100?"...":""}
426
- `}s(o)}},Hu=(s=zu)=>{let e="\u2500".repeat(60);return t=>{let n="";switch(t.name){case"OptimizationStart":n=`[ OPTIMIZATION START: ${t.value.optimizerType} ]
426
+ `}s(o)}},zu=(s=qu)=>{let e="\u2500".repeat(60);return t=>{let n="";switch(t.name){case"OptimizationStart":n=`[ OPTIMIZATION START: ${t.value.optimizerType} ]
427
427
  ${e}
428
428
  Config: ${JSON.stringify(t.value.config,null,2)}
429
429
  Examples: ${t.value.exampleCount}, Validation: ${t.value.validationCount}
@@ -449,7 +449,7 @@ Score: ${t.value.score.toFixed(3)}
449
449
  Config: ${JSON.stringify(t.value.config)}
450
450
  ${e}`;break;default:n=`[ UNKNOWN OPTIMIZER EVENT ]
451
451
  ${JSON.stringify(t)}
452
- ${e}`}s(n)}},Fr=Qi();var Xi={enabled:!0,enabledCategories:["optimization","convergence","resource_usage","teacher_student","checkpointing","pareto"],maxLabelLength:100,samplingRate:1},as,hd=s=>{if(as)return as;if(s)return as=fd(s),as};var ls=Xi,Ku=s=>{ls={...ls,...s}},Wu=()=>({...ls}),fd=s=>({optimizationLatencyHistogram:s.createHistogram("ax_optimizer_optimization_duration_ms",{description:"End-to-end duration of optimization runs",unit:"ms"}),optimizationRequestsCounter:s.createCounter("ax_optimizer_optimization_requests_total",{description:"Total number of optimization requests"}),optimizationErrorsCounter:s.createCounter("ax_optimizer_optimization_errors_total",{description:"Total number of failed optimizations"}),convergenceRoundsHistogram:s.createHistogram("ax_optimizer_convergence_rounds",{description:"Number of rounds until convergence"}),convergenceScoreGauge:s.createGauge("ax_optimizer_convergence_score",{description:"Current best score during optimization"}),convergenceImprovementGauge:s.createGauge("ax_optimizer_convergence_improvement",{description:"Improvement in score from baseline"}),stagnationRoundsGauge:s.createGauge("ax_optimizer_stagnation_rounds",{description:"Number of rounds without improvement"}),earlyStoppingCounter:s.createCounter("ax_optimizer_early_stopping_total",{description:"Total number of early stopping events"}),tokenUsageCounter:s.createCounter("ax_optimizer_token_usage_total",{description:"Total tokens used during optimization"}),costUsageCounter:s.createCounter("ax_optimizer_cost_usage_total",{description:"Total cost incurred during optimization",unit:"$"}),memoryUsageGauge:s.createGauge("ax_optimizer_memory_usage_bytes",{description:"Peak memory usage during optimization",unit:"By"}),optimizationDurationHistogram:s.createHistogram("ax_optimizer_duration_ms",{description:"Duration of optimization runs",unit:"ms"}),teacherStudentUsageCounter:s.createCounter("ax_optimizer_teacher_student_usage_total",{description:"Total number of teacher-student interactions"}),teacherStudentLatencyHistogram:s.createHistogram("ax_optimizer_teacher_student_latency_ms",{description:"Latency of teacher-student interactions",unit:"ms"}),teacherStudentScoreImprovementGauge:s.createGauge("ax_optimizer_teacher_student_score_improvement",{description:"Score improvement from teacher-student interactions"}),checkpointSaveCounter:s.createCounter("ax_optimizer_checkpoint_save_total",{description:"Total number of checkpoint saves"}),checkpointLoadCounter:s.createCounter("ax_optimizer_checkpoint_load_total",{description:"Total number of checkpoint loads"}),checkpointSaveLatencyHistogram:s.createHistogram("ax_optimizer_checkpoint_save_latency_ms",{description:"Latency of checkpoint save operations",unit:"ms"}),checkpointLoadLatencyHistogram:s.createHistogram("ax_optimizer_checkpoint_load_latency_ms",{description:"Latency of checkpoint load operations",unit:"ms"}),paretoOptimizationsCounter:s.createCounter("ax_optimizer_pareto_optimizations_total",{description:"Total number of Pareto optimizations"}),paretoFrontSizeHistogram:s.createHistogram("ax_optimizer_pareto_front_size",{description:"Size of Pareto frontier"}),paretoHypervolumeGauge:s.createGauge("ax_optimizer_pareto_hypervolume",{description:"Hypervolume of Pareto frontier"}),paretoSolutionsGeneratedHistogram:s.createHistogram("ax_optimizer_pareto_solutions_generated",{description:"Number of solutions generated for Pareto optimization"}),programInputFieldsGauge:s.createGauge("ax_optimizer_program_input_fields",{description:"Number of input fields in optimized program"}),programOutputFieldsGauge:s.createGauge("ax_optimizer_program_output_fields",{description:"Number of output fields in optimized program"}),examplesCountGauge:s.createGauge("ax_optimizer_examples_count",{description:"Number of training examples used"}),validationSetSizeGauge:s.createGauge("ax_optimizer_validation_set_size",{description:"Size of validation set used"}),evaluationLatencyHistogram:s.createHistogram("ax_optimizer_evaluation_latency_ms",{description:"Latency of program evaluations",unit:"ms"}),demoGenerationLatencyHistogram:s.createHistogram("ax_optimizer_demo_generation_latency_ms",{description:"Latency of demo generation",unit:"ms"}),metricComputationLatencyHistogram:s.createHistogram("ax_optimizer_metric_computation_latency_ms",{description:"Latency of metric computation",unit:"ms"}),optimizerTypeGauge:s.createGauge("ax_optimizer_type",{description:"Type of optimizer being used"}),targetScoreGauge:s.createGauge("ax_optimizer_target_score",{description:"Target score for optimization"}),maxRoundsGauge:s.createGauge("ax_optimizer_max_rounds",{description:"Maximum rounds for optimization"})}),xt=s=>{let e={};for(let[t,n]of Object.entries(s))if(n!=null){let r=String(n),o=ls.maxLabelLength;e[t]=r.length>o?r.substring(0,o):r}return e},xd=(s,e,t,n,r,o)=>{try{let i=xt({success:t.toString(),optimizer_type:n,...r?{program_signature:r}:{},...o});s.optimizationLatencyHistogram&&s.optimizationLatencyHistogram.record(e,i),s.optimizationRequestsCounter&&s.optimizationRequestsCounter.add(1,i),!t&&s.optimizationErrorsCounter&&s.optimizationErrorsCounter.add(1,i)}catch(i){console.warn("Failed to record optimization metric:",i)}},Ad=(s,e,t,n,r,o,i)=>{try{let a=xt({optimizer_type:o,...i});s.convergenceRoundsHistogram&&s.convergenceRoundsHistogram.record(e,a),s.convergenceScoreGauge&&s.convergenceScoreGauge.record(t,a),s.convergenceImprovementGauge&&s.convergenceImprovementGauge.record(n,a),s.stagnationRoundsGauge&&s.stagnationRoundsGauge.record(r,a)}catch(a){console.warn("Failed to record convergence metric:",a)}},yd=(s,e,t,n)=>{try{let r=xt({reason:e,optimizer_type:t,...n});s.earlyStoppingCounter&&s.earlyStoppingCounter.add(1,r)}catch(r){console.warn("Failed to record early stopping metric:",r)}},bd=(s,e,t,n,r,o)=>{try{let i=xt({optimizer_type:n,...o});s.tokenUsageCounter&&s.tokenUsageCounter.add(e,i),s.costUsageCounter&&s.costUsageCounter.add(t,i),r!==void 0&&s.memoryUsageGauge&&s.memoryUsageGauge.record(r,i)}catch(i){console.warn("Failed to record resource usage metric:",i)}},Id=(s,e,t,n)=>{try{let r=xt({optimizer_type:t,...n});s.optimizationDurationHistogram&&s.optimizationDurationHistogram.record(e,r)}catch(r){console.warn("Failed to record optimization duration metric:",r)}},Cd=(s,e,t,n,r)=>{try{let o=xt({optimizer_type:n,...r});s.teacherStudentUsageCounter&&s.teacherStudentUsageCounter.add(1,o),s.teacherStudentLatencyHistogram&&s.teacherStudentLatencyHistogram.record(e,o),s.teacherStudentScoreImprovementGauge&&s.teacherStudentScoreImprovementGauge.record(t,o)}catch(o){console.warn("Failed to record teacher-student metric:",o)}},Td=(s,e,t,n,r,o)=>{try{let i=xt({operation:e,success:n.toString(),optimizer_type:r,...o});e==="save"?(s.checkpointSaveCounter&&s.checkpointSaveCounter.add(1,i),s.checkpointSaveLatencyHistogram&&s.checkpointSaveLatencyHistogram.record(t,i)):(s.checkpointLoadCounter&&s.checkpointLoadCounter.add(1,i),s.checkpointLoadLatencyHistogram&&s.checkpointLoadLatencyHistogram.record(t,i))}catch(i){console.warn("Failed to record checkpoint metric:",i)}},wd=(s,e,t,n,r,o)=>{try{let i=xt({optimizer_type:n,...o});s.paretoOptimizationsCounter&&s.paretoOptimizationsCounter.add(1,i),s.paretoFrontSizeHistogram&&s.paretoFrontSizeHistogram.record(e,i),r!==void 0&&s.paretoHypervolumeGauge&&s.paretoHypervolumeGauge.record(r,i),s.paretoSolutionsGeneratedHistogram&&s.paretoSolutionsGeneratedHistogram.record(t,i)}catch(i){console.warn("Failed to record Pareto metric:",i)}},Rd=(s,e,t,n,r,o,i)=>{try{let a=xt({optimizer_type:o,...i});s.programInputFieldsGauge&&s.programInputFieldsGauge.record(e,a),s.programOutputFieldsGauge&&s.programOutputFieldsGauge.record(t,a),s.examplesCountGauge&&s.examplesCountGauge.record(n,a),s.validationSetSizeGauge&&s.validationSetSizeGauge.record(r,a)}catch(a){console.warn("Failed to record program complexity metric:",a)}},vd=(s,e,t,n,r)=>{try{let o=xt({metric_type:e,optimizer_type:n,...r});switch(e){case"evaluation":s.evaluationLatencyHistogram&&s.evaluationLatencyHistogram.record(t,o);break;case"demo_generation":s.demoGenerationLatencyHistogram&&s.demoGenerationLatencyHistogram.record(t,o);break;case"metric_computation":s.metricComputationLatencyHistogram&&s.metricComputationLatencyHistogram.record(t,o);break}}catch(o){console.warn("Failed to record optimizer performance metric:",o)}},Sd=(s,e,t,n,r)=>{try{let o=xt({optimizer_type:e,...r});s.optimizerTypeGauge&&s.optimizerTypeGauge.record(1,o),t!==void 0&&s.targetScoreGauge&&s.targetScoreGauge.record(t,o),n!==void 0&&s.maxRoundsGauge&&s.maxRoundsGauge.record(n,o)}catch(o){console.warn("Failed to record optimizer configuration metric:",o)}},Ct=class{bestScore;stats;instruction;demos;examples;modelConfig;optimizerType;optimizationTime;totalRounds;converged;scoreHistory;configurationHistory;constructor(e){this.bestScore=e.bestScore,this.stats=e.stats,this.instruction=e.instruction,this.demos=e.demos,this.examples=e.examples,this.modelConfig=e.modelConfig,this.optimizerType=e.optimizerType,this.optimizationTime=e.optimizationTime,this.totalRounds=e.totalRounds,this.converged=e.converged,this.scoreHistory=e.scoreHistory,this.configurationHistory=e.configurationHistory}applyTo(e){this.demos&&this.demos.length>0?e.setDemos(this.demos,{modelConfig:this.modelConfig}):this.modelConfig&&e.setDemos([],{modelConfig:this.modelConfig})}},_r=class{tokenUsage={};totalTokens=0;costPerModel;maxCost;maxTokens;constructor(e){this.costPerModel=e?.costPerModel??{},this.maxCost=e?.maxCost,this.maxTokens=e?.maxTokens}trackTokens(e,t){this.tokenUsage[t]=(this.tokenUsage[t]||0)+e,this.totalTokens+=e}getCurrentCost(){let e=0;for(let[t,n]of Object.entries(this.tokenUsage)){let r=this.costPerModel[t]||.001;e+=n/1e3*r}return e}getTokenUsage(){return{...this.tokenUsage}}getTotalTokens(){return this.totalTokens}isLimitReached(){return this.maxTokens!==void 0&&this.totalTokens>=this.maxTokens||this.maxCost!==void 0&&this.getCurrentCost()>=this.maxCost}reset(){this.tokenUsage={},this.totalTokens=0}},Xe=class{studentAI;teacherAI;targetScore;minSuccessRate;onProgress;onEarlyStop;costTracker;seed;checkpointSave;checkpointLoad;checkpointInterval;resumeFromCheckpoint;logger;verbose;debugOptimizer;optimizerLogger;currentRound=0;scoreHistory=[];configurationHistory=[];stats;metricsInstruments;resultExplainer;constructor(e){this.studentAI=e.studentAI,this.teacherAI=e.teacherAI,this.targetScore=e.targetScore,this.minSuccessRate=e.minSuccessRate,this.onProgress=e.onProgress,this.onEarlyStop=e.onEarlyStop,this.seed=e.seed,this.checkpointSave=e.checkpointSave,this.checkpointLoad=e.checkpointLoad,this.checkpointInterval=e.checkpointInterval??10,this.resumeFromCheckpoint=e.resumeFromCheckpoint,this.logger=e.logger,this.verbose=e.verbose;let t=new _r({maxTokens:1e6});this.costTracker=e.costTracker??t,this.metricsInstruments=hd(pe.meter),this.stats=this.initializeStats(),this.debugOptimizer=e.debugOptimizer??!1,this.optimizerLogger=e.optimizerLogger??(this.verbose?Fr:void 0),this.initializeResultExplainer()}getMergedCustomLabels(e){return Lt(pe.customLabels,this.studentAI?.getOptions?.()?.customLabels,this.teacherAI?.getOptions?.()?.customLabels,e?.customLabels)}initializeResultExplainer(){this.resultExplainer=void 0}initializeStats(){return{totalCalls:0,successfulDemos:0,estimatedTokenUsage:0,earlyStopped:!1,resourceUsage:{totalTokens:0,totalTime:0,avgLatencyPerEval:0,costByModel:{}},convergenceInfo:{converged:!1,finalImprovement:0,stagnationRounds:0,convergenceThreshold:.01},bestScore:0,bestConfiguration:{}}}setupRandomSeed(){this.seed!==void 0&&(Math.random=(()=>{let e=this.seed;return()=>(e=(e*9301+49297)%233280,e/233280)})())}checkCostLimits(){return this.costTracker?.isLimitReached()??!1}checkTargetScore(e){return this.targetScore!==void 0&&e>=this.targetScore}updateResourceUsage(e,t=0){this.stats.resourceUsage.totalTime=Date.now()-e,this.stats.resourceUsage.totalTokens+=t,this.stats.totalCalls>0&&(this.stats.resourceUsage.avgLatencyPerEval=this.stats.resourceUsage.totalTime/this.stats.totalCalls)}triggerEarlyStopping(e,t,n){this.stats.earlyStopped=!0,this.stats.earlyStopping={bestScoreRound:t,patienceExhausted:e.includes("improvement"),reason:e},this.recordEarlyStoppingMetrics(e,"unknown",n),this.onEarlyStop&&this.onEarlyStop(e,this.stats),this.getOptimizerLogger()?.({name:"EarlyStopping",value:{reason:e,finalScore:this.stats.bestScore??0,round:t}})}validateExamples(e,t=!0){if(!e||e.length===0)throw new Error("At least 1 example is required for optimization");if(t&&e.length<2)throw new Error("At least 2 examples are required for optimization with auto-splitting. Provide more examples to enable proper train/validation split.");let n=t?10:5;e.length<n&&this.verbose&&console.warn(`[Ax Optimizer] Warning: Only ${e.length} examples provided. Consider providing more examples (${n}+ recommended) for better optimization results.`)}getAIService(e=!1,t){return e&&t?.overrideTeacherAI?t.overrideTeacherAI:e&&this.teacherAI?this.teacherAI:this.studentAI}hasTeacherAI(e){return e?.overrideTeacherAI!==void 0||this.teacherAI!==void 0}getTeacherOrStudentAI(e){return e?.overrideTeacherAI||this.teacherAI||this.studentAI}async executeWithTeacher(e,t=!0,n){let r=this.getAIService(t,n);return await e(r)}async*compileStream(e,t,n,r){let o=Date.now(),i=this.constructor.name,a=e.getSignature().toString();this.recordOptimizationStart(i,a,r);let l,u=(g,h,f,y,x,A,T,b={},R)=>{this.getOptimizerLogger(R)?.({name:"RoundProgress",value:{round:g,totalRounds:R?.maxIterations??0,currentScore:h,bestScore:A,configuration:f}}),this.updateOptimizationProgress(g,h,f,y,x,A,T,b,R)},c=(g,h)=>{l=g,this.triggerEarlyStopping(g,this.currentRound,r)},p=g=>{this.onProgress?.(g),u(g.round,g.currentScore,g.currentConfiguration||{},i,{},g.bestScore,g.bestConfiguration,g.convergenceInfo,r)},d=await this.compile(e,t,n,{...r,overrideOnProgress:p,overrideOnEarlyStop:c}),m=Date.now()-o;return this.recordOptimizationComplete(m,!0,i,a,r),l&&this.getLogger(r)?.({name:"Notification",id:"optimization_early_stop",value:`Optimization stopped early due to ${l}`}),{demos:d.demos,stats:d.stats,bestScore:d.bestScore,finalConfiguration:d.finalConfiguration,scoreHistory:d.scoreHistory,configurationHistory:d.configurationHistory}}async compilePareto(e,t,n,r){let o=this.constructor.name,i=Date.now(),a=await this.generateWeightedSolutions(e,t,n,r),l=await this.generateConstraintSolutions(e,t,n,r),u=[...a,...l],c=this.findParetoFrontier(u),p=this.calculateHypervolume(c);this.updateResourceUsage(i),this.stats.convergenceInfo.converged=!0,this.recordParetoMetrics(c.length,u.length,"base_optimizer",p,r);let d=c.length>0?Math.max(...c.map(m=>Math.max(...Object.values(m.scores)))):0;return{demos:c.length>0?[...c[0].demos]:void 0,stats:this.stats,bestScore:d,paretoFront:c,hypervolume:p,paretoFrontSize:c.length,finalConfiguration:{paretoFrontSize:c.length,hypervolume:p,strategy:"weighted_combinations_and_constraints",numSolutions:u.length}}}async generateWeightedSolutions(e,t,n,r){let o=[];if(!t||t.length===0)throw new Error("No examples provided for Pareto optimization");let i=t[0],a=await e.forward(this.getAIService(!1,r),i),l=await n({prediction:a,example:i}),u=Object.keys(l),c=this.generateWeightCombinations(u);for(let p=0;p<c.length;p++){let d=c[p],m=async({prediction:g,example:h})=>{let f=await n({prediction:g,example:h}),y=0;for(let[x,A]of Object.entries(f))y+=A*(d[x]||0);return y};try{let g=await this.compile(e,t,m,{...r,verbose:!1}),h=await this.evaluateWithMultiObjective(e,g,n,t);o.push({scores:h,demos:g.demos,configuration:{...g.finalConfiguration,weights:d,strategy:"weighted_combination"}})}catch{}}return o}async generateConstraintSolutions(e,t,n,r){let o=[];if(!t||t.length===0)throw new Error("No examples provided for multi-objective optimization");let i=t[0],a=await e.forward(this.getAIService(!1,r),i),l=await n({prediction:a,example:i}),u=Object.keys(l);for(let c of u){let p=async({prediction:d,example:m})=>{let g=await n({prediction:d,example:m}),h=g[c]||0,f=0;for(let[y,x]of Object.entries(g))y!==c&&x<.3&&(f+=(.3-x)*2);return h-f};try{let d=await this.compile(e,t,p,{...r,verbose:!1}),m=await this.evaluateWithMultiObjective(e,d,n,t);o.push({scores:m,demos:d.demos,configuration:{...d.finalConfiguration,primaryObjective:c,strategy:"constraint_based"}})}catch{}}return o}generateWeightCombinations(e){let t=[];for(let r of e){let o={};for(let i of e)o[i]=i===r?1:0;t.push(o)}let n={};for(let r of e)n[r]=1/e.length;if(t.push(n),e.length===2){let[r,o]=e;for(let i=.1;i<=.9;i+=.2){let a=1-i;t.push({[r]:i,[o]:a})}}if(e.length===3){let[r,o,i]=e;t.push({[r]:.5,[o]:.3,[i]:.2},{[r]:.3,[o]:.5,[i]:.2},{[r]:.2,[o]:.3,[i]:.5})}return t}async evaluateWithMultiObjective(e,t,n,r){let o=new Oe(e.getSignature());t.demos&&o.setDemos(t.demos);let i=[],a=Math.max(1,Math.min(5,Math.floor(r.length*.2))),l=r.slice(-a),u={},c=l;for(let d of c)try{let m=await o.forward(this.studentAI,d),g=await n({prediction:m,example:d});for(let[h,f]of Object.entries(g))u[h]||(u[h]=[]),u[h].push(f)}catch{}let p={};for(let[d,m]of Object.entries(u))p[d]=m.length>0?m.reduce((g,h)=>g+h,0)/m.length:0;return p}findParetoFrontier(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n],o=!1,i=0;for(let a=0;a<e.length;a++){if(n===a)continue;let l=e[a];if(this.dominates(l.scores,r.scores)){o=!0;break}this.dominates(r.scores,l.scores)&&i++}o||t.push({demos:r.demos||[],scores:r.scores,configuration:r.configuration,dominatedSolutions:i})}return t}dominates(e,t){let n=Object.keys(e),r=!0,o=!1;for(let i of n){let a=e[i]||0,l=t[i]||0;if(a<l){r=!1;break}a>l&&(o=!0)}return r&&o}calculateHypervolume(e){if(e.length===0)return;let t=e[0],n=Object.keys(t.scores);if(n.length===2){let[r,o]=n,i=0,a=[...e].sort((u,c)=>(c.scores[r]||0)-(u.scores[r]||0)),l=0;for(let u of a){let c=u.scores[r]||0,p=u.scores[o]||0;i+=c*(p-l),l=Math.max(l,p)}return i}}async saveCheckpoint(e,t,n,r,o={},i){let a=i?.overrideCheckpointSave||this.checkpointSave;if(!a)return;let l=Date.now(),u=!1,c;try{let p={version:"1.0.0",timestamp:Date.now(),optimizerType:e,optimizerConfig:t,currentRound:this.currentRound,totalRounds:this.stats.resourceUsage.totalTime>0?this.currentRound:0,bestScore:n,bestConfiguration:r,scoreHistory:[...this.scoreHistory],configurationHistory:[...this.configurationHistory],stats:{...this.stats},optimizerState:o,examples:[]};c=await a(p),u=!0}catch(p){throw u=!1,p}finally{let p=Date.now()-l;this.recordCheckpointMetrics("save",p,u,e,i)}return c}async loadCheckpoint(e,t){let n=t?.overrideCheckpointLoad||this.checkpointLoad;if(!n)return null;let r=Date.now(),o=!1,i=null;try{i=await n(e),o=i!==null}catch(a){throw o=!1,a}finally{let a=Date.now()-r;this.recordCheckpointMetrics("load",a,o,"unknown",t)}return i}restoreFromCheckpoint(e){this.currentRound=e.currentRound,this.scoreHistory=[...e.scoreHistory],this.configurationHistory=[...e.configurationHistory],this.stats={...e.stats}}shouldSaveCheckpoint(e,t){let n=t?.overrideCheckpointInterval||this.checkpointInterval;return n!==void 0&&e%n===0}async updateOptimizationProgress(e,t,n,r,o,i,a,l={},u){this.currentRound=e,this.scoreHistory.push(t),this.configurationHistory.push(n),this.shouldSaveCheckpoint(e,u)&&await this.saveCheckpoint(r,o,i,a,l,u),this.getOptimizerLogger(u)?.({name:"RoundProgress",value:{round:e,totalRounds:u?.maxIterations??0,currentScore:t,bestScore:i,configuration:n}})}async saveFinalCheckpoint(e,t,n,r,o={},i){i?.saveCheckpointOnComplete!==!1&&await this.saveCheckpoint(e,t,n,r,{...o,final:!0},i)}getLogger(e){if(this.isLoggingEnabled(e))return this.logger?this.logger:this.studentAI.getLogger()}isLoggingEnabled(e){return e?.verbose!==void 0?e.verbose:this.verbose??!0}recordOptimizationStart(e,t,n){if(!this.metricsInstruments)return;let r=this.getMergedCustomLabels(n);if(t){let o=(t.match(/input:/g)||[]).length,i=(t.match(/output:/g)||[]).length;Rd(this.metricsInstruments,o,i,0,0,e,r)}Sd(this.metricsInstruments,e,this.targetScore,void 0,r)}recordOptimizationComplete(e,t,n,r,o){if(!this.metricsInstruments)return;let i=this.getMergedCustomLabels(o);xd(this.metricsInstruments,e,t,n,r,i),Id(this.metricsInstruments,e,n,i);let a=this.costTracker?.getCurrentCost()??0,l=this.costTracker?.getTotalTokens()??0;bd(this.metricsInstruments,l,a,n,void 0,i)}recordConvergenceMetrics(e,t,n,r,o,i){if(!this.metricsInstruments)return;let a=this.getMergedCustomLabels(i);Ad(this.metricsInstruments,e,t,n,r,o,a)}recordEarlyStoppingMetrics(e,t,n){if(!this.metricsInstruments)return;let r=this.getMergedCustomLabels(n);yd(this.metricsInstruments,e,t,r)}recordTeacherStudentMetrics(e,t,n,r){if(!this.metricsInstruments)return;let o=this.getMergedCustomLabels(r);Cd(this.metricsInstruments,e,t,n,o)}recordCheckpointMetrics(e,t,n,r,o){if(!this.metricsInstruments)return;let i=this.getMergedCustomLabels(o);Td(this.metricsInstruments,e,t,n,r,i)}recordParetoMetrics(e,t,n,r,o){if(!this.metricsInstruments)return;let i=this.getMergedCustomLabels(o);wd(this.metricsInstruments,e,t,n,r,i)}recordPerformanceMetrics(e,t,n,r){if(!this.metricsInstruments)return;let o=this.getMergedCustomLabels(r);vd(this.metricsInstruments,e,t,n,o)}isOptimizerLoggingEnabled(e){return this.debugOptimizer||(e?.verbose??this.verbose??!1)}getOptimizerLogger(e){if(this.isOptimizerLoggingEnabled(e))return this.optimizerLogger??pe.optimizerLogger??Fr}getStats(){return{...this.stats}}async explainOptimizationResults(e,t,n){let r=this.stats.convergenceInfo.converged,o=this.stats.totalCalls,i=o>0?this.stats.successfulDemos/o*100:0,a=`Optimization finished with best score ${e.toFixed(3)}${t?` using configuration ${JSON.stringify(t)}`:""}. Convergence: ${r?"yes":"no"}. Success rate: ${i.toFixed(1)}%.`,l=[];if(r||l.push("Increase numTrials or relax earlyStoppingTrials to allow further improvement."),typeof this.targetScore=="number"&&e<this.targetScore&&l.push("Tighten the metric or supply more/better-labeled examples to reach targetScore."),t&&"bootstrappedDemos"in t){let c=t.bootstrappedDemos;typeof c=="number"&&c===0&&l.push("Consider allowing a small number of bootstrapped demos to boost performance.")}l.length===0&&l.push("Re-run with more trials or different acquisition settings to explore more of the space.");let u=`Tokens used: ${this.stats.resourceUsage.totalTokens}, rounds: ${this.currentRound}, stagnationRounds: ${this.stats.convergenceInfo.stagnationRounds}.`;return{humanExplanation:a,recommendations:l,performanceAssessment:u}}async logOptimizationComplete(e,t,n,r,o){let i=this.getOptimizerLogger(r);i&&i(o?{name:"OptimizationComplete",value:{optimizerType:e,bestScore:t,bestConfiguration:n||{},totalCalls:this.stats.totalCalls,successRate:this.stats.totalCalls>0?`${(this.stats.successfulDemos/this.stats.totalCalls*100).toFixed(1)}%`:"N/A",explanation:o.humanExplanation,recommendations:o.recommendations,performanceAssessment:o.performanceAssessment,stats:this.stats}}:{name:"OptimizationComplete",value:{optimizerType:e,bestScore:t,bestConfiguration:n||{},totalCalls:this.stats.totalCalls,successRate:this.stats.totalCalls>0?`${(this.stats.successfulDemos/this.stats.totalCalls*100).toFixed(1)}%`:"N/A",stats:this.stats}})}reset(){this.stats=this.initializeStats(),this.costTracker?.reset(),this.currentRound=0,this.scoreHistory=[],this.configurationHistory=[]}};function Vu(s){return Pe.create(s)}function He(s,e){let t=typeof s=="string"?Pe.create(s):s;return new Oe(t,e)}function Ju(s,e,t=0){let n=new Set([...Object.keys(s),...Object.keys(e)]),r=!0,o=!1;for(let i of n){let a=s[i]??0,l=e[i]??0;if(a+t<l){r=!1;break}a>l+t&&(o=!0)}return r&&o}function Tt(s,e=0){let t=[];for(let n=0;n<s.length;n++){let r=0,o=!1;for(let i=0;i<s.length;i++)if(n!==i){if(Ju(s[i].scores,s[n].scores,e)){o=!0;break}Ju(s[n].scores,s[i].scores,e)&&r++}o||t.push({idx:s[n].idx,scores:s[n].scores,dominated:r})}return t}function ut(s){if(s.length===0)return;let e=Object.keys(s[0]??{});if(e.length!==2)return;let[t,n]=e,r=[...s].sort((a,l)=>(l[t]??0)-(a[t]??0)),o=0,i=0;for(let a of r){let l=a[t]??0,u=a[n]??0,c=Math.max(u-i,0);o+=l*c,i=Math.max(i,u)}return o}function Kt(s){if(s.length===0)return 0;let e=0;for(let t of s)e+=t;return e/s.length}function us(s){let e={},t={};for(let r of s)for(let[o,i]of Object.entries(r))e[o]=(e[o]||0)+(typeof i=="number"?i:0),t[o]=(t[o]||0)+1;let n={};for(let[r,o]of Object.entries(e))n[r]=o/Math.max(t[r]||1,1);return n}function $r(s,e){let t=new Set;for(let c of s)for(let p of c)t.add(p);let r=[...Array.from(t)].sort((c,p)=>(e[c]??0)-(e[p]??0)),o=new Set,i=(c,p)=>{for(let d of s){if(!d.has(c))continue;let m=!1;for(let g of p)if(d.has(g)){m=!0;break}if(!m)return!1}return!0},a=!0;for(;a;){a=!1;for(let c of r){if(o.has(c))continue;let p=new Set(r.filter(d=>d!==c&&!o.has(d)));if(i(c,p)){o.add(c),a=!0;break}}}let l=r.filter(c=>!o.has(c)),u=new Set(l);return s.map(c=>{let p=new Set;for(let d of c)u.has(d)&&p.add(d);return p})}function Nr(s,e,t){let n=$r(s,e),r={};for(let l of n)for(let u of l)r[u]=(r[u]||0)+1;let o=[];for(let[l,u]of Object.entries(r)){let c=Number(l);for(let p=0;p<u;p++)o.push(c)}if(o.length===0)return 0;let i=typeof t=="function"?t():Math.random(),a=Math.floor(i*o.length);return o[a]}var Gn=class s extends Xe{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 o=e?.crossoverEvery;this.crossoverEvery=Math.max(0,Math.floor(o??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 l=e?.mergeMax;this.mergeMax=Math.max(0,Math.floor(l??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 o=Date.now();this.validateExamples(t),r?.auto&&this.configureAuto(r.auto);let i=r?.validationExamples,a=r?.feedbackExamples,l=(i&&i.length>0?i:t).slice(0,this.paretoSetSize),u=a&&a.length>0?a:t,c=async(S,P)=>{try{e.setInstruction?.(S);let j=await e.forward(this.studentAI,P,{sampleCount:this.sampleCount});return this.stats.totalCalls+=1,await n({prediction:j,example:P})||{}}catch{return{}}},p=async(S,P)=>{let j=[];for(let N of P)j.push(await c(S,N));return us(j)},d=await this.getBaseInstruction(e),m=[{instruction:d,parent:void 0,scores:await p(d,l)}],g=S=>{let P=r?.paretoMetricKey,j=r?.paretoScalarize;if(typeof j=="function")return j(S);if(P)return Number.isFinite(S[P])?S[P]:0;let N=Object.values(S);return N.length?N.reduce((K,re)=>K+re,0)/N.length:0},h=[],f=async(S,P)=>{let j=[];for(let N of P){let K=await c(S,N);j.push(g(K))}return j};h.push(await f(d,l));let y=()=>{let S=h[0]?.length??0,P=[];for(let N=0;N<S;N++){let K=Number.NEGATIVE_INFINITY,re=new Set;for(let ne=0;ne<h.length;ne++){let oe=h[ne][N];oe>K+this.tieEpsilon?(K=oe,re.clear(),re.add(ne)):Math.abs(oe-K)<=this.tieEpsilon&&re.add(ne)}P.push(re)}let j=h.map(N=>Kt(N));return Nr(P,j)},x=r?.maxMetricCalls;if(!Number.isFinite(x)||x<=0)throw new Error("AxGEPA: options.maxMetricCalls must be set to a positive integer");let A=Math.floor(x),T=this.getOptimizerLogger(r),b=r?.verbose??this.verbose?S=>console.log(`[GEPA] ${S}`):S=>{};T?.({name:"OptimizationStart",value:{optimizerType:"GEPA",exampleCount:t.length,validationCount:l.length,config:{numTrials:this.numTrials,minibatch:this.minibatch,mergeMax:this.mergeMax}}}),b(`Starting GEPA optimization: ${t.length} train, ${l.length} validation, maxCalls=${A}`);let R=0,O=Tt(m.map((S,P)=>({idx:P,scores:S.scores})),this.tieEpsilon).map(S=>S.idx),_;for(let S=0;S<this.numTrials&&!(A!==void 0&&this.stats.totalCalls>=Math.max(1,Math.floor(A)));S++){let P=h[0]?.length??0,j=[];for(let D=0;D<P;D++){let z=Number.NEGATIVE_INFINITY,q=new Set;for(let ee=0;ee<h.length;ee++){let H=h[ee][D];H>z+this.tieEpsilon?(z=H,q.clear(),q.add(ee)):Math.abs(H-z)<=this.tieEpsilon&&q.add(ee)}j.push(q)}let N=h.map(D=>Kt(D));if(this.mergeMax>0&&this.mergesDue>0&&this.lastIterFoundNewProgram){let D=Y=>{let Q=[],ie=Y;for(;ie!==void 0;)Q.push(ie),ie=m[ie]?.parent;return Q},z=Y=>Y.length?Y[Math.floor(this.rand()*Y.length)]:void 0,q=$r(j,N),ee=new Set;for(let Y of q)for(let Q of Y)ee.add(Q);let H=Array.from(ee),V;for(let Y=0;Y<10&&!V&&!(H.length<2);Y++){let Q=z(H),ie=z(H);if(Q===ie)continue;ie<Q&&([Q,ie]=[ie,Q]);let ye=new Set(D(Q)),me=new Set(D(ie));if(ye.has(ie)||me.has(Q))continue;let be=[...ye].filter(Z=>me.has(Z));if(be.length===0)continue;let U=be.map(Z=>Math.max(1e-9,N[Z])),X=this.rand()*U.reduce((Z,le)=>Z+le,0),J=be[be.length-1];for(let Z=0;Z<be.length;Z++){if(X<U[Z]){J=be[Z];break}X-=U[Z]}V={i:Q,j:ie,a:J}}if(this.lastIterFoundNewProgram=!1,V){let{i:Y,j:Q,a:ie}=V,ye=N[ie],me=N[Y],be=N[Q],U=m[ie].instruction,X=m[Y].instruction,J=m[Q].instruction,Z=X===U&&J!==X||J===U&&X!==J,le=ye<=Math.min(me,be)&&Z,fe="",ue="i",xe=!1;if(le){let Re=`${Y}|${Q}|${ie}`;if(this.mergeAttemptKeys.has(Re))le=!1;else{X===U&&J!==X?(fe=J,ue="j"):J===U&&X!==J?(fe=X,ue="i"):X!==U&&J!==U&&X!==J?me>be||me===be&&this.rand()<.5?(fe=X,ue="i"):(fe=J,ue="j"):(fe=X,ue="i");let Ne=`${Math.min(Y,Q)}|${Math.max(Y,Q)}|${ue}`;if(this.mergeCompositionKeys.has(Ne))le=!1;else{this.mergeAttemptKeys.add(Re),this.mergeCompositionKeys.add(Ne);let Le=h[Y],_e=h[Q],At=Array.from({length:Le.length},(Te,We)=>We),ct=At.filter(Te=>(Le[Te]??0)>(_e[Te]??0)),yt=At.filter(Te=>(_e[Te]??0)>(Le[Te]??0)),nt=At.filter(Te=>!(ct.includes(Te)||yt.includes(Te))),ce=5,Se=Math.ceil(ce/3),pt=(Te,We)=>{if(We<=0||Te.length===0)return[];if(Te.length<=We)return[...Te];let Jn=[],Hr=new Set;for(;Jn.length<We;){let dt=Math.floor(this.rand()*Te.length);Hr.has(dt)||(Hr.add(dt),Jn.push(Te[dt]))}return Jn},Ke=[];Ke.push(...pt(ct,Math.min(Se,ct.length))),Ke.push(...pt(yt,Math.min(Se,yt.length)));let Ze=ce-Ke.length;Ke.push(...pt(nt,Math.max(0,Ze)));let zr=ce-Ke.length;if(zr>0){let Te=At.filter(We=>!Ke.includes(We));Ke.push(...pt(Te,Math.min(zr,Te.length)))}let Os=Ke.slice(0,Math.min(ce,At.length)),Rc=Os.map(Te=>l[Te]);xe=!0;let vc=(await f(fe,Rc)).reduce((Te,We)=>Te+We,0),Sc=Os.reduce((Te,We)=>Te+(Le[We]??0),0),kc=Os.reduce((Te,We)=>Te+(_e[We]??0),0);if(vc>=Math.max(Sc,kc)+this.tieEpsilon){b(`Iteration ${S+1}: Merge accepted (programs ${Y} + ${Q} via ancestor ${ie})`);let Te=await p(fe,l);m.push({instruction:fe,parent:ie,scores:Te}),h.push(await f(fe,l));let We=O.length,Jn=ut(O.map(dt=>m[dt].scores))??0;O=Tt(m.map((dt,Oc)=>({idx:Oc,scores:dt.scores})),this.tieEpsilon).map(dt=>dt.idx);let Hr=ut(O.map(dt=>m[dt].scores))??0;(O.length>We||Hr>Jn+1e-6)&&(R=0),this.mergesDue-=1,this.totalMergesTested+=1}}}}if(xe)continue}}let K=Nr(j,N,()=>this.rand()),re=this.minibatch?this.nextMinibatchIndices(u.length,S).map(D=>u[D]):u;if(r?.skipPerfectScore??!0){let D=Number(r?.perfectScore??1),z=await f(m[K].instruction,re);if(z.length>0&&z.every(q=>q>=D))continue}let ne=!1,oe=m[K].instruction,W="reflective_mutation",se,Ie;if(ne){let D=(K+1)%m.length;oe=await this.mergeInstructions(m[K].instruction,m[D].instruction,r),W="merge",this.mergesUsed+=1}else{let D=r?.gepaAdapter;if(D){try{let z={instruction:m[K].instruction},q=await D.evaluate(re,z,!0);se=Array.isArray(q?.scores)?q.scores.reduce((Y,Q)=>Y+(Number(Q)||0),0):void 0;let ee=D.make_reflective_dataset(z,q,["instruction"]),H=await D.propose_new_texts?.(z,ee,["instruction"]),V=H?.instruction??(H?Object.values(H)[0]:void 0);typeof V=="string"&&V.length>0?oe=V:oe=await this.reflectInstruction(m[K].instruction,e,re,async({prediction:Y,example:Q})=>{let ie=await n({prediction:Y,example:Q}),ye=Object.values(ie||{});return ye.length?ye.reduce((me,be)=>me+be,0)/ye.length:0},r)}catch{oe=await this.reflectInstruction(m[K].instruction,e,re,async({prediction:z,example:q})=>{let ee=await n({prediction:z,example:q}),H=Object.values(ee||{});return H.length?H.reduce((V,Y)=>V+Y,0)/H.length:0},r)}if(se!==void 0)try{let z=await D.evaluate(re,{instruction:oe},!1);Ie=Array.isArray(z?.scores)?z.scores.reduce((q,ee)=>q+(Number(ee)||0),0):void 0}catch{}}else oe=await this.reflectInstruction(m[K].instruction,e,re,async({prediction:z,example:q})=>{let ee=await n({prediction:z,example:q}),H=Object.values(ee||{});return H.length?H.reduce((V,Y)=>V+Y,0)/H.length:0},r)}let te=await f(m[K].instruction,re),he=await f(oe,re),ve=te.reduce((D,z)=>D+z,0),we=he.reduce((D,z)=>D+z,0);if(this.currentRound=S+1,await this.updateOptimizationProgress(this.currentRound,we,{instructionLen:oe.length,parent:K,totalRounds:this.numTrials},"GEPA",{strategy:W,paretoSetSize:l.length},we,{instructionLen:m[K].instruction.length,idx:K},{...r??{},maxIterations:this.numTrials}),!(we>ve+this.tieEpsilon&&(se===void 0||Ie===void 0||Ie>se+this.tieEpsilon))){if(b(`Iteration ${S+1}: Rejected (child=${we.toFixed(3)} <= parent=${ve.toFixed(3)})`),++R>=this.earlyStoppingTrials){b(`Early stopping: ${R} iterations without improvement`);break}continue}b(`Iteration ${S+1}: Accepted (child=${we.toFixed(3)} > parent=${ve.toFixed(3)})`);let w=await p(oe,l);m.push({instruction:oe,parent:K,scores:w}),h.push(await f(oe,l));let F=O.length,k=ut(O.map(D=>m[D].scores))??0;O=Tt(m.map((D,z)=>({idx:z,scores:D.scores})),this.tieEpsilon).map(D=>D.idx);let C=ut(O.map(D=>m[D].scores))??0;if(O.length>F||C>k+1e-6)R=0,b(`Iteration ${S+1}: Archive improved (size=${O.length}, hv=${C.toFixed(4)})`);else if(R++,b(`Iteration ${S+1}: Archive unchanged (stagnation=${R}/${this.earlyStoppingTrials})`),R>=this.earlyStoppingTrials){b(`Early stopping: ${R} iterations without archive improvement`);break}this.lastIterFoundNewProgram=!0,this.mergeMax>0&&this.totalMergesTested<this.mergeMax&&(this.mergesDue+=1)}let M=Tt(m.map((S,P)=>({idx:P,scores:S.scores})),this.tieEpsilon),G=M.length>0?Math.max(...M.map(S=>g(S.scores))):0,B;if(M.length>0){let S=Number.NEGATIVE_INFINITY;for(let P of M){let j=g(P.scores);j>S&&(S=j,B=P.idx)}}let L=ut(M.map(S=>S.scores));this.stats.convergenceInfo.converged=!0;let I=this.getMergedCustomLabels(r);this.recordParetoMetrics(M.length,m.length,"GEPA",L,I);let v=Date.now()-o,E=typeof B=="number"?new Ct({bestScore:G,stats:this.stats,instruction:m[B].instruction,demos:[],examples:t,modelConfig:void 0,optimizerType:"GEPA",optimizationTime:v,totalRounds:this.numTrials,converged:this.stats.convergenceInfo.converged}):void 0,$=this.generateOptimizationReport(M,L,G);return{demos:[],stats:this.stats,bestScore:G,paretoFront:M.map(S=>({demos:[],scores:S.scores,configuration:{candidate:S.idx,instruction:m[S.idx].instruction},dominatedSolutions:S.dominated})),paretoFrontSize:M.length,hypervolume:L,finalConfiguration:{strategy:"gepa",candidates:m.length},optimizedProgram:E,report:$}}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."}async evaluateOnSet(e,t,n,r){let o=[];for(let i of n){let a=await this.evaluateOne(e,t,i,r);o.push(a)}return o}async evaluateAvg(e,t,n,r){let o=await this.evaluateOnSet(e,t,n,r);return o.length>0?Kt(o):0}async evaluateOne(e,t,n,r){try{e.setInstruction?.(t);let o=await e.forward(this.studentAI,n,{sampleCount:this.sampleCount});this.stats.totalCalls+=1;let i=await r({prediction:o,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(o){return this.getLogger()?.({name:"Notification",id:"gepa_eval",value:String(o)}),0}}async reflectInstruction(e,t,n,r,o,i){let a=i??[];if(a.length===0)for(let m of n)try{t.setInstruction?.(e);let g=await t.forward(this.studentAI,m,{sampleCount:this.sampleCount});this.stats.totalCalls+=1;let h=await r({prediction:g,example:m});a.push({input:m,prediction:g,score:typeof h=="number"?h:0})}catch{a.push({input:m,prediction:{},score:0})}let l=o?.overrideTeacherAI??this.teacherAI??this.studentAI,u=o?.feedbackFn,c=()=>{let m=[];for(let g=0;g<a.length;g++){let h=a[g],f=`# Example ${g+1}
452
+ ${e}`}s(n)}},Fr=Qi();var Xi={enabled:!0,enabledCategories:["optimization","convergence","resource_usage","teacher_student","checkpointing","pareto"],maxLabelLength:100,samplingRate:1},as,hd=s=>{if(as)return as;if(s)return as=fd(s),as};var ls=Xi,Hu=s=>{ls={...ls,...s}},Ku=()=>({...ls}),fd=s=>({optimizationLatencyHistogram:s.createHistogram("ax_optimizer_optimization_duration_ms",{description:"End-to-end duration of optimization runs",unit:"ms"}),optimizationRequestsCounter:s.createCounter("ax_optimizer_optimization_requests_total",{description:"Total number of optimization requests"}),optimizationErrorsCounter:s.createCounter("ax_optimizer_optimization_errors_total",{description:"Total number of failed optimizations"}),convergenceRoundsHistogram:s.createHistogram("ax_optimizer_convergence_rounds",{description:"Number of rounds until convergence"}),convergenceScoreGauge:s.createGauge("ax_optimizer_convergence_score",{description:"Current best score during optimization"}),convergenceImprovementGauge:s.createGauge("ax_optimizer_convergence_improvement",{description:"Improvement in score from baseline"}),stagnationRoundsGauge:s.createGauge("ax_optimizer_stagnation_rounds",{description:"Number of rounds without improvement"}),earlyStoppingCounter:s.createCounter("ax_optimizer_early_stopping_total",{description:"Total number of early stopping events"}),tokenUsageCounter:s.createCounter("ax_optimizer_token_usage_total",{description:"Total tokens used during optimization"}),costUsageCounter:s.createCounter("ax_optimizer_cost_usage_total",{description:"Total cost incurred during optimization",unit:"$"}),memoryUsageGauge:s.createGauge("ax_optimizer_memory_usage_bytes",{description:"Peak memory usage during optimization",unit:"By"}),optimizationDurationHistogram:s.createHistogram("ax_optimizer_duration_ms",{description:"Duration of optimization runs",unit:"ms"}),teacherStudentUsageCounter:s.createCounter("ax_optimizer_teacher_student_usage_total",{description:"Total number of teacher-student interactions"}),teacherStudentLatencyHistogram:s.createHistogram("ax_optimizer_teacher_student_latency_ms",{description:"Latency of teacher-student interactions",unit:"ms"}),teacherStudentScoreImprovementGauge:s.createGauge("ax_optimizer_teacher_student_score_improvement",{description:"Score improvement from teacher-student interactions"}),checkpointSaveCounter:s.createCounter("ax_optimizer_checkpoint_save_total",{description:"Total number of checkpoint saves"}),checkpointLoadCounter:s.createCounter("ax_optimizer_checkpoint_load_total",{description:"Total number of checkpoint loads"}),checkpointSaveLatencyHistogram:s.createHistogram("ax_optimizer_checkpoint_save_latency_ms",{description:"Latency of checkpoint save operations",unit:"ms"}),checkpointLoadLatencyHistogram:s.createHistogram("ax_optimizer_checkpoint_load_latency_ms",{description:"Latency of checkpoint load operations",unit:"ms"}),paretoOptimizationsCounter:s.createCounter("ax_optimizer_pareto_optimizations_total",{description:"Total number of Pareto optimizations"}),paretoFrontSizeHistogram:s.createHistogram("ax_optimizer_pareto_front_size",{description:"Size of Pareto frontier"}),paretoHypervolumeGauge:s.createGauge("ax_optimizer_pareto_hypervolume",{description:"Hypervolume of Pareto frontier"}),paretoSolutionsGeneratedHistogram:s.createHistogram("ax_optimizer_pareto_solutions_generated",{description:"Number of solutions generated for Pareto optimization"}),programInputFieldsGauge:s.createGauge("ax_optimizer_program_input_fields",{description:"Number of input fields in optimized program"}),programOutputFieldsGauge:s.createGauge("ax_optimizer_program_output_fields",{description:"Number of output fields in optimized program"}),examplesCountGauge:s.createGauge("ax_optimizer_examples_count",{description:"Number of training examples used"}),validationSetSizeGauge:s.createGauge("ax_optimizer_validation_set_size",{description:"Size of validation set used"}),evaluationLatencyHistogram:s.createHistogram("ax_optimizer_evaluation_latency_ms",{description:"Latency of program evaluations",unit:"ms"}),demoGenerationLatencyHistogram:s.createHistogram("ax_optimizer_demo_generation_latency_ms",{description:"Latency of demo generation",unit:"ms"}),metricComputationLatencyHistogram:s.createHistogram("ax_optimizer_metric_computation_latency_ms",{description:"Latency of metric computation",unit:"ms"}),optimizerTypeGauge:s.createGauge("ax_optimizer_type",{description:"Type of optimizer being used"}),targetScoreGauge:s.createGauge("ax_optimizer_target_score",{description:"Target score for optimization"}),maxRoundsGauge:s.createGauge("ax_optimizer_max_rounds",{description:"Maximum rounds for optimization"})}),xt=s=>{let e={};for(let[t,n]of Object.entries(s))if(n!=null){let r=String(n),o=ls.maxLabelLength;e[t]=r.length>o?r.substring(0,o):r}return e},xd=(s,e,t,n,r,o)=>{try{let i=xt({success:t.toString(),optimizer_type:n,...r?{program_signature:r}:{},...o});s.optimizationLatencyHistogram&&s.optimizationLatencyHistogram.record(e,i),s.optimizationRequestsCounter&&s.optimizationRequestsCounter.add(1,i),!t&&s.optimizationErrorsCounter&&s.optimizationErrorsCounter.add(1,i)}catch(i){console.warn("Failed to record optimization metric:",i)}},Ad=(s,e,t,n,r,o,i)=>{try{let a=xt({optimizer_type:o,...i});s.convergenceRoundsHistogram&&s.convergenceRoundsHistogram.record(e,a),s.convergenceScoreGauge&&s.convergenceScoreGauge.record(t,a),s.convergenceImprovementGauge&&s.convergenceImprovementGauge.record(n,a),s.stagnationRoundsGauge&&s.stagnationRoundsGauge.record(r,a)}catch(a){console.warn("Failed to record convergence metric:",a)}},yd=(s,e,t,n)=>{try{let r=xt({reason:e,optimizer_type:t,...n});s.earlyStoppingCounter&&s.earlyStoppingCounter.add(1,r)}catch(r){console.warn("Failed to record early stopping metric:",r)}},bd=(s,e,t,n,r,o)=>{try{let i=xt({optimizer_type:n,...o});s.tokenUsageCounter&&s.tokenUsageCounter.add(e,i),s.costUsageCounter&&s.costUsageCounter.add(t,i),r!==void 0&&s.memoryUsageGauge&&s.memoryUsageGauge.record(r,i)}catch(i){console.warn("Failed to record resource usage metric:",i)}},Id=(s,e,t,n)=>{try{let r=xt({optimizer_type:t,...n});s.optimizationDurationHistogram&&s.optimizationDurationHistogram.record(e,r)}catch(r){console.warn("Failed to record optimization duration metric:",r)}},Cd=(s,e,t,n,r)=>{try{let o=xt({optimizer_type:n,...r});s.teacherStudentUsageCounter&&s.teacherStudentUsageCounter.add(1,o),s.teacherStudentLatencyHistogram&&s.teacherStudentLatencyHistogram.record(e,o),s.teacherStudentScoreImprovementGauge&&s.teacherStudentScoreImprovementGauge.record(t,o)}catch(o){console.warn("Failed to record teacher-student metric:",o)}},Td=(s,e,t,n,r,o)=>{try{let i=xt({operation:e,success:n.toString(),optimizer_type:r,...o});e==="save"?(s.checkpointSaveCounter&&s.checkpointSaveCounter.add(1,i),s.checkpointSaveLatencyHistogram&&s.checkpointSaveLatencyHistogram.record(t,i)):(s.checkpointLoadCounter&&s.checkpointLoadCounter.add(1,i),s.checkpointLoadLatencyHistogram&&s.checkpointLoadLatencyHistogram.record(t,i))}catch(i){console.warn("Failed to record checkpoint metric:",i)}},wd=(s,e,t,n,r,o)=>{try{let i=xt({optimizer_type:n,...o});s.paretoOptimizationsCounter&&s.paretoOptimizationsCounter.add(1,i),s.paretoFrontSizeHistogram&&s.paretoFrontSizeHistogram.record(e,i),r!==void 0&&s.paretoHypervolumeGauge&&s.paretoHypervolumeGauge.record(r,i),s.paretoSolutionsGeneratedHistogram&&s.paretoSolutionsGeneratedHistogram.record(t,i)}catch(i){console.warn("Failed to record Pareto metric:",i)}},Rd=(s,e,t,n,r,o,i)=>{try{let a=xt({optimizer_type:o,...i});s.programInputFieldsGauge&&s.programInputFieldsGauge.record(e,a),s.programOutputFieldsGauge&&s.programOutputFieldsGauge.record(t,a),s.examplesCountGauge&&s.examplesCountGauge.record(n,a),s.validationSetSizeGauge&&s.validationSetSizeGauge.record(r,a)}catch(a){console.warn("Failed to record program complexity metric:",a)}},vd=(s,e,t,n,r)=>{try{let o=xt({metric_type:e,optimizer_type:n,...r});switch(e){case"evaluation":s.evaluationLatencyHistogram&&s.evaluationLatencyHistogram.record(t,o);break;case"demo_generation":s.demoGenerationLatencyHistogram&&s.demoGenerationLatencyHistogram.record(t,o);break;case"metric_computation":s.metricComputationLatencyHistogram&&s.metricComputationLatencyHistogram.record(t,o);break}}catch(o){console.warn("Failed to record optimizer performance metric:",o)}},Sd=(s,e,t,n,r)=>{try{let o=xt({optimizer_type:e,...r});s.optimizerTypeGauge&&s.optimizerTypeGauge.record(1,o),t!==void 0&&s.targetScoreGauge&&s.targetScoreGauge.record(t,o),n!==void 0&&s.maxRoundsGauge&&s.maxRoundsGauge.record(n,o)}catch(o){console.warn("Failed to record optimizer configuration metric:",o)}},Ct=class{bestScore;stats;instruction;demos;examples;modelConfig;optimizerType;optimizationTime;totalRounds;converged;scoreHistory;configurationHistory;constructor(e){this.bestScore=e.bestScore,this.stats=e.stats,this.instruction=e.instruction,this.demos=e.demos,this.examples=e.examples,this.modelConfig=e.modelConfig,this.optimizerType=e.optimizerType,this.optimizationTime=e.optimizationTime,this.totalRounds=e.totalRounds,this.converged=e.converged,this.scoreHistory=e.scoreHistory,this.configurationHistory=e.configurationHistory}applyTo(e){this.demos&&this.demos.length>0?e.setDemos(this.demos,{modelConfig:this.modelConfig}):this.modelConfig&&e.setDemos([],{modelConfig:this.modelConfig})}},_r=class{tokenUsage={};totalTokens=0;costPerModel;maxCost;maxTokens;constructor(e){this.costPerModel=e?.costPerModel??{},this.maxCost=e?.maxCost,this.maxTokens=e?.maxTokens}trackTokens(e,t){this.tokenUsage[t]=(this.tokenUsage[t]||0)+e,this.totalTokens+=e}getCurrentCost(){let e=0;for(let[t,n]of Object.entries(this.tokenUsage)){let r=this.costPerModel[t]||.001;e+=n/1e3*r}return e}getTokenUsage(){return{...this.tokenUsage}}getTotalTokens(){return this.totalTokens}isLimitReached(){return this.maxTokens!==void 0&&this.totalTokens>=this.maxTokens||this.maxCost!==void 0&&this.getCurrentCost()>=this.maxCost}reset(){this.tokenUsage={},this.totalTokens=0}},Xe=class{studentAI;teacherAI;targetScore;minSuccessRate;onProgress;onEarlyStop;costTracker;seed;checkpointSave;checkpointLoad;checkpointInterval;resumeFromCheckpoint;logger;verbose;debugOptimizer;optimizerLogger;currentRound=0;scoreHistory=[];configurationHistory=[];stats;metricsInstruments;resultExplainer;constructor(e){this.studentAI=e.studentAI,this.teacherAI=e.teacherAI,this.targetScore=e.targetScore,this.minSuccessRate=e.minSuccessRate,this.onProgress=e.onProgress,this.onEarlyStop=e.onEarlyStop,this.seed=e.seed,this.checkpointSave=e.checkpointSave,this.checkpointLoad=e.checkpointLoad,this.checkpointInterval=e.checkpointInterval??10,this.resumeFromCheckpoint=e.resumeFromCheckpoint,this.logger=e.logger,this.verbose=e.verbose;let t=new _r({maxTokens:1e6});this.costTracker=e.costTracker??t,this.metricsInstruments=hd(pe.meter),this.stats=this.initializeStats(),this.debugOptimizer=e.debugOptimizer??!1,this.optimizerLogger=e.optimizerLogger??(this.verbose?Fr:void 0),this.initializeResultExplainer()}getMergedCustomLabels(e){return Lt(pe.customLabels,this.studentAI?.getOptions?.()?.customLabels,this.teacherAI?.getOptions?.()?.customLabels,e?.customLabels)}initializeResultExplainer(){this.resultExplainer=void 0}initializeStats(){return{totalCalls:0,successfulDemos:0,estimatedTokenUsage:0,earlyStopped:!1,resourceUsage:{totalTokens:0,totalTime:0,avgLatencyPerEval:0,costByModel:{}},convergenceInfo:{converged:!1,finalImprovement:0,stagnationRounds:0,convergenceThreshold:.01},bestScore:0,bestConfiguration:{}}}setupRandomSeed(){this.seed!==void 0&&(Math.random=(()=>{let e=this.seed;return()=>(e=(e*9301+49297)%233280,e/233280)})())}checkCostLimits(){return this.costTracker?.isLimitReached()??!1}checkTargetScore(e){return this.targetScore!==void 0&&e>=this.targetScore}updateResourceUsage(e,t=0){this.stats.resourceUsage.totalTime=Date.now()-e,this.stats.resourceUsage.totalTokens+=t,this.stats.totalCalls>0&&(this.stats.resourceUsage.avgLatencyPerEval=this.stats.resourceUsage.totalTime/this.stats.totalCalls)}triggerEarlyStopping(e,t,n){this.stats.earlyStopped=!0,this.stats.earlyStopping={bestScoreRound:t,patienceExhausted:e.includes("improvement"),reason:e},this.recordEarlyStoppingMetrics(e,"unknown",n),this.onEarlyStop&&this.onEarlyStop(e,this.stats),this.getOptimizerLogger()?.({name:"EarlyStopping",value:{reason:e,finalScore:this.stats.bestScore??0,round:t}})}validateExamples(e,t=!0){if(!e||e.length===0)throw new Error("At least 1 example is required for optimization");if(t&&e.length<2)throw new Error("At least 2 examples are required for optimization with auto-splitting. Provide more examples to enable proper train/validation split.");let n=t?10:5;e.length<n&&this.verbose&&console.warn(`[Ax Optimizer] Warning: Only ${e.length} examples provided. Consider providing more examples (${n}+ recommended) for better optimization results.`)}getAIService(e=!1,t){return e&&t?.overrideTeacherAI?t.overrideTeacherAI:e&&this.teacherAI?this.teacherAI:this.studentAI}hasTeacherAI(e){return e?.overrideTeacherAI!==void 0||this.teacherAI!==void 0}getTeacherOrStudentAI(e){return e?.overrideTeacherAI||this.teacherAI||this.studentAI}async executeWithTeacher(e,t=!0,n){let r=this.getAIService(t,n);return await e(r)}async*compileStream(e,t,n,r){let o=Date.now(),i=this.constructor.name,a=e.getSignature().toString();this.recordOptimizationStart(i,a,r);let l,u=(g,h,f,y,x,A,T,b={},R)=>{this.getOptimizerLogger(R)?.({name:"RoundProgress",value:{round:g,totalRounds:R?.maxIterations??0,currentScore:h,bestScore:A,configuration:f}}),this.updateOptimizationProgress(g,h,f,y,x,A,T,b,R)},c=(g,h)=>{l=g,this.triggerEarlyStopping(g,this.currentRound,r)},p=g=>{this.onProgress?.(g),u(g.round,g.currentScore,g.currentConfiguration||{},i,{},g.bestScore,g.bestConfiguration,g.convergenceInfo,r)},d=await this.compile(e,t,n,{...r,overrideOnProgress:p,overrideOnEarlyStop:c}),m=Date.now()-o;return this.recordOptimizationComplete(m,!0,i,a,r),l&&this.getLogger(r)?.({name:"Notification",id:"optimization_early_stop",value:`Optimization stopped early due to ${l}`}),{demos:d.demos,stats:d.stats,bestScore:d.bestScore,finalConfiguration:d.finalConfiguration,scoreHistory:d.scoreHistory,configurationHistory:d.configurationHistory}}async compilePareto(e,t,n,r){let o=this.constructor.name,i=Date.now(),a=await this.generateWeightedSolutions(e,t,n,r),l=await this.generateConstraintSolutions(e,t,n,r),u=[...a,...l],c=this.findParetoFrontier(u),p=this.calculateHypervolume(c);this.updateResourceUsage(i),this.stats.convergenceInfo.converged=!0,this.recordParetoMetrics(c.length,u.length,"base_optimizer",p,r);let d=c.length>0?Math.max(...c.map(m=>Math.max(...Object.values(m.scores)))):0;return{demos:c.length>0?[...c[0].demos]:void 0,stats:this.stats,bestScore:d,paretoFront:c,hypervolume:p,paretoFrontSize:c.length,finalConfiguration:{paretoFrontSize:c.length,hypervolume:p,strategy:"weighted_combinations_and_constraints",numSolutions:u.length}}}async generateWeightedSolutions(e,t,n,r){let o=[];if(!t||t.length===0)throw new Error("No examples provided for Pareto optimization");let i=t[0],a=await e.forward(this.getAIService(!1,r),i),l=await n({prediction:a,example:i}),u=Object.keys(l),c=this.generateWeightCombinations(u);for(let p=0;p<c.length;p++){let d=c[p],m=async({prediction:g,example:h})=>{let f=await n({prediction:g,example:h}),y=0;for(let[x,A]of Object.entries(f))y+=A*(d[x]||0);return y};try{let g=await this.compile(e,t,m,{...r,verbose:!1}),h=await this.evaluateWithMultiObjective(e,g,n,t);o.push({scores:h,demos:g.demos,configuration:{...g.finalConfiguration,weights:d,strategy:"weighted_combination"}})}catch{}}return o}async generateConstraintSolutions(e,t,n,r){let o=[];if(!t||t.length===0)throw new Error("No examples provided for multi-objective optimization");let i=t[0],a=await e.forward(this.getAIService(!1,r),i),l=await n({prediction:a,example:i}),u=Object.keys(l);for(let c of u){let p=async({prediction:d,example:m})=>{let g=await n({prediction:d,example:m}),h=g[c]||0,f=0;for(let[y,x]of Object.entries(g))y!==c&&x<.3&&(f+=(.3-x)*2);return h-f};try{let d=await this.compile(e,t,p,{...r,verbose:!1}),m=await this.evaluateWithMultiObjective(e,d,n,t);o.push({scores:m,demos:d.demos,configuration:{...d.finalConfiguration,primaryObjective:c,strategy:"constraint_based"}})}catch{}}return o}generateWeightCombinations(e){let t=[];for(let r of e){let o={};for(let i of e)o[i]=i===r?1:0;t.push(o)}let n={};for(let r of e)n[r]=1/e.length;if(t.push(n),e.length===2){let[r,o]=e;for(let i=.1;i<=.9;i+=.2){let a=1-i;t.push({[r]:i,[o]:a})}}if(e.length===3){let[r,o,i]=e;t.push({[r]:.5,[o]:.3,[i]:.2},{[r]:.3,[o]:.5,[i]:.2},{[r]:.2,[o]:.3,[i]:.5})}return t}async evaluateWithMultiObjective(e,t,n,r){let o=new Oe(e.getSignature());t.demos&&o.setDemos(t.demos);let i=[],a=Math.max(1,Math.min(5,Math.floor(r.length*.2))),l=r.slice(-a),u={},c=l;for(let d of c)try{let m=await o.forward(this.studentAI,d),g=await n({prediction:m,example:d});for(let[h,f]of Object.entries(g))u[h]||(u[h]=[]),u[h].push(f)}catch{}let p={};for(let[d,m]of Object.entries(u))p[d]=m.length>0?m.reduce((g,h)=>g+h,0)/m.length:0;return p}findParetoFrontier(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n],o=!1,i=0;for(let a=0;a<e.length;a++){if(n===a)continue;let l=e[a];if(this.dominates(l.scores,r.scores)){o=!0;break}this.dominates(r.scores,l.scores)&&i++}o||t.push({demos:r.demos||[],scores:r.scores,configuration:r.configuration,dominatedSolutions:i})}return t}dominates(e,t){let n=Object.keys(e),r=!0,o=!1;for(let i of n){let a=e[i]||0,l=t[i]||0;if(a<l){r=!1;break}a>l&&(o=!0)}return r&&o}calculateHypervolume(e){if(e.length===0)return;let t=e[0],n=Object.keys(t.scores);if(n.length===2){let[r,o]=n,i=0,a=[...e].sort((u,c)=>(c.scores[r]||0)-(u.scores[r]||0)),l=0;for(let u of a){let c=u.scores[r]||0,p=u.scores[o]||0;i+=c*(p-l),l=Math.max(l,p)}return i}}async saveCheckpoint(e,t,n,r,o={},i){let a=i?.overrideCheckpointSave||this.checkpointSave;if(!a)return;let l=Date.now(),u=!1,c;try{let p={version:"1.0.0",timestamp:Date.now(),optimizerType:e,optimizerConfig:t,currentRound:this.currentRound,totalRounds:this.stats.resourceUsage.totalTime>0?this.currentRound:0,bestScore:n,bestConfiguration:r,scoreHistory:[...this.scoreHistory],configurationHistory:[...this.configurationHistory],stats:{...this.stats},optimizerState:o,examples:[]};c=await a(p),u=!0}catch(p){throw u=!1,p}finally{let p=Date.now()-l;this.recordCheckpointMetrics("save",p,u,e,i)}return c}async loadCheckpoint(e,t){let n=t?.overrideCheckpointLoad||this.checkpointLoad;if(!n)return null;let r=Date.now(),o=!1,i=null;try{i=await n(e),o=i!==null}catch(a){throw o=!1,a}finally{let a=Date.now()-r;this.recordCheckpointMetrics("load",a,o,"unknown",t)}return i}restoreFromCheckpoint(e){this.currentRound=e.currentRound,this.scoreHistory=[...e.scoreHistory],this.configurationHistory=[...e.configurationHistory],this.stats={...e.stats}}shouldSaveCheckpoint(e,t){let n=t?.overrideCheckpointInterval||this.checkpointInterval;return n!==void 0&&e%n===0}async updateOptimizationProgress(e,t,n,r,o,i,a,l={},u){this.currentRound=e,this.scoreHistory.push(t),this.configurationHistory.push(n),this.shouldSaveCheckpoint(e,u)&&await this.saveCheckpoint(r,o,i,a,l,u),this.getOptimizerLogger(u)?.({name:"RoundProgress",value:{round:e,totalRounds:u?.maxIterations??0,currentScore:t,bestScore:i,configuration:n}})}async saveFinalCheckpoint(e,t,n,r,o={},i){i?.saveCheckpointOnComplete!==!1&&await this.saveCheckpoint(e,t,n,r,{...o,final:!0},i)}getLogger(e){if(this.isLoggingEnabled(e))return this.logger?this.logger:this.studentAI.getLogger()}isLoggingEnabled(e){return e?.verbose!==void 0?e.verbose:this.verbose??!0}recordOptimizationStart(e,t,n){if(!this.metricsInstruments)return;let r=this.getMergedCustomLabels(n);if(t){let o=(t.match(/input:/g)||[]).length,i=(t.match(/output:/g)||[]).length;Rd(this.metricsInstruments,o,i,0,0,e,r)}Sd(this.metricsInstruments,e,this.targetScore,void 0,r)}recordOptimizationComplete(e,t,n,r,o){if(!this.metricsInstruments)return;let i=this.getMergedCustomLabels(o);xd(this.metricsInstruments,e,t,n,r,i),Id(this.metricsInstruments,e,n,i);let a=this.costTracker?.getCurrentCost()??0,l=this.costTracker?.getTotalTokens()??0;bd(this.metricsInstruments,l,a,n,void 0,i)}recordConvergenceMetrics(e,t,n,r,o,i){if(!this.metricsInstruments)return;let a=this.getMergedCustomLabels(i);Ad(this.metricsInstruments,e,t,n,r,o,a)}recordEarlyStoppingMetrics(e,t,n){if(!this.metricsInstruments)return;let r=this.getMergedCustomLabels(n);yd(this.metricsInstruments,e,t,r)}recordTeacherStudentMetrics(e,t,n,r){if(!this.metricsInstruments)return;let o=this.getMergedCustomLabels(r);Cd(this.metricsInstruments,e,t,n,o)}recordCheckpointMetrics(e,t,n,r,o){if(!this.metricsInstruments)return;let i=this.getMergedCustomLabels(o);Td(this.metricsInstruments,e,t,n,r,i)}recordParetoMetrics(e,t,n,r,o){if(!this.metricsInstruments)return;let i=this.getMergedCustomLabels(o);wd(this.metricsInstruments,e,t,n,r,i)}recordPerformanceMetrics(e,t,n,r){if(!this.metricsInstruments)return;let o=this.getMergedCustomLabels(r);vd(this.metricsInstruments,e,t,n,o)}isOptimizerLoggingEnabled(e){return this.debugOptimizer||(e?.verbose??this.verbose??!1)}getOptimizerLogger(e){if(this.isOptimizerLoggingEnabled(e))return this.optimizerLogger??pe.optimizerLogger??Fr}getStats(){return{...this.stats}}async explainOptimizationResults(e,t,n){let r=this.stats.convergenceInfo.converged,o=this.stats.totalCalls,i=o>0?this.stats.successfulDemos/o*100:0,a=`Optimization finished with best score ${e.toFixed(3)}${t?` using configuration ${JSON.stringify(t)}`:""}. Convergence: ${r?"yes":"no"}. Success rate: ${i.toFixed(1)}%.`,l=[];if(r||l.push("Increase numTrials or relax earlyStoppingTrials to allow further improvement."),typeof this.targetScore=="number"&&e<this.targetScore&&l.push("Tighten the metric or supply more/better-labeled examples to reach targetScore."),t&&"bootstrappedDemos"in t){let c=t.bootstrappedDemos;typeof c=="number"&&c===0&&l.push("Consider allowing a small number of bootstrapped demos to boost performance.")}l.length===0&&l.push("Re-run with more trials or different acquisition settings to explore more of the space.");let u=`Tokens used: ${this.stats.resourceUsage.totalTokens}, rounds: ${this.currentRound}, stagnationRounds: ${this.stats.convergenceInfo.stagnationRounds}.`;return{humanExplanation:a,recommendations:l,performanceAssessment:u}}async logOptimizationComplete(e,t,n,r,o){let i=this.getOptimizerLogger(r);i&&i(o?{name:"OptimizationComplete",value:{optimizerType:e,bestScore:t,bestConfiguration:n||{},totalCalls:this.stats.totalCalls,successRate:this.stats.totalCalls>0?`${(this.stats.successfulDemos/this.stats.totalCalls*100).toFixed(1)}%`:"N/A",explanation:o.humanExplanation,recommendations:o.recommendations,performanceAssessment:o.performanceAssessment,stats:this.stats}}:{name:"OptimizationComplete",value:{optimizerType:e,bestScore:t,bestConfiguration:n||{},totalCalls:this.stats.totalCalls,successRate:this.stats.totalCalls>0?`${(this.stats.successfulDemos/this.stats.totalCalls*100).toFixed(1)}%`:"N/A",stats:this.stats}})}reset(){this.stats=this.initializeStats(),this.costTracker?.reset(),this.currentRound=0,this.scoreHistory=[],this.configurationHistory=[]}};function Wu(s){return Pe.create(s)}function He(s,e){let t=typeof s=="string"?Pe.create(s):s;return new Oe(t,e)}function Vu(s,e,t=0){let n=new Set([...Object.keys(s),...Object.keys(e)]),r=!0,o=!1;for(let i of n){let a=s[i]??0,l=e[i]??0;if(a+t<l){r=!1;break}a>l+t&&(o=!0)}return r&&o}function Tt(s,e=0){let t=[];for(let n=0;n<s.length;n++){let r=0,o=!1;for(let i=0;i<s.length;i++)if(n!==i){if(Vu(s[i].scores,s[n].scores,e)){o=!0;break}Vu(s[n].scores,s[i].scores,e)&&r++}o||t.push({idx:s[n].idx,scores:s[n].scores,dominated:r})}return t}function ut(s){if(s.length===0)return;let e=Object.keys(s[0]??{});if(e.length!==2)return;let[t,n]=e,r=[...s].sort((a,l)=>(l[t]??0)-(a[t]??0)),o=0,i=0;for(let a of r){let l=a[t]??0,u=a[n]??0,c=Math.max(u-i,0);o+=l*c,i=Math.max(i,u)}return o}function Kt(s){if(s.length===0)return 0;let e=0;for(let t of s)e+=t;return e/s.length}function us(s){let e={},t={};for(let r of s)for(let[o,i]of Object.entries(r))e[o]=(e[o]||0)+(typeof i=="number"?i:0),t[o]=(t[o]||0)+1;let n={};for(let[r,o]of Object.entries(e))n[r]=o/Math.max(t[r]||1,1);return n}function $r(s,e){let t=new Set;for(let c of s)for(let p of c)t.add(p);let r=[...Array.from(t)].sort((c,p)=>(e[c]??0)-(e[p]??0)),o=new Set,i=(c,p)=>{for(let d of s){if(!d.has(c))continue;let m=!1;for(let g of p)if(d.has(g)){m=!0;break}if(!m)return!1}return!0},a=!0;for(;a;){a=!1;for(let c of r){if(o.has(c))continue;let p=new Set(r.filter(d=>d!==c&&!o.has(d)));if(i(c,p)){o.add(c),a=!0;break}}}let l=r.filter(c=>!o.has(c)),u=new Set(l);return s.map(c=>{let p=new Set;for(let d of c)u.has(d)&&p.add(d);return p})}function Nr(s,e,t){let n=$r(s,e),r={};for(let l of n)for(let u of l)r[u]=(r[u]||0)+1;let o=[];for(let[l,u]of Object.entries(r)){let c=Number(l);for(let p=0;p<u;p++)o.push(c)}if(o.length===0)return 0;let i=typeof t=="function"?t():Math.random(),a=Math.floor(i*o.length);return o[a]}var Gn=class s extends Xe{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 o=e?.crossoverEvery;this.crossoverEvery=Math.max(0,Math.floor(o??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 l=e?.mergeMax;this.mergeMax=Math.max(0,Math.floor(l??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 o=Date.now();this.validateExamples(t),r?.auto&&this.configureAuto(r.auto);let i=r?.validationExamples,a=r?.feedbackExamples,l=(i&&i.length>0?i:t).slice(0,this.paretoSetSize),u=a&&a.length>0?a:t,c=async(S,P)=>{try{e.setInstruction?.(S);let j=await e.forward(this.studentAI,P,{sampleCount:this.sampleCount});return this.stats.totalCalls+=1,await n({prediction:j,example:P})||{}}catch{return{}}},p=async(S,P)=>{let j=[];for(let N of P)j.push(await c(S,N));return us(j)},d=await this.getBaseInstruction(e),m=[{instruction:d,parent:void 0,scores:await p(d,l)}],g=S=>{let P=r?.paretoMetricKey,j=r?.paretoScalarize;if(typeof j=="function")return j(S);if(P)return Number.isFinite(S[P])?S[P]:0;let N=Object.values(S);return N.length?N.reduce((K,re)=>K+re,0)/N.length:0},h=[],f=async(S,P)=>{let j=[];for(let N of P){let K=await c(S,N);j.push(g(K))}return j};h.push(await f(d,l));let y=()=>{let S=h[0]?.length??0,P=[];for(let N=0;N<S;N++){let K=Number.NEGATIVE_INFINITY,re=new Set;for(let ne=0;ne<h.length;ne++){let oe=h[ne][N];oe>K+this.tieEpsilon?(K=oe,re.clear(),re.add(ne)):Math.abs(oe-K)<=this.tieEpsilon&&re.add(ne)}P.push(re)}let j=h.map(N=>Kt(N));return Nr(P,j)},x=r?.maxMetricCalls;if(!Number.isFinite(x)||x<=0)throw new Error("AxGEPA: options.maxMetricCalls must be set to a positive integer");let A=Math.floor(x),T=this.getOptimizerLogger(r),b=r?.verbose??this.verbose?S=>console.log(`[GEPA] ${S}`):S=>{};T?.({name:"OptimizationStart",value:{optimizerType:"GEPA",exampleCount:t.length,validationCount:l.length,config:{numTrials:this.numTrials,minibatch:this.minibatch,mergeMax:this.mergeMax}}}),b(`Starting GEPA optimization: ${t.length} train, ${l.length} validation, maxCalls=${A}`);let R=0,O=Tt(m.map((S,P)=>({idx:P,scores:S.scores})),this.tieEpsilon).map(S=>S.idx),_;for(let S=0;S<this.numTrials&&!(A!==void 0&&this.stats.totalCalls>=Math.max(1,Math.floor(A)));S++){let P=h[0]?.length??0,j=[];for(let D=0;D<P;D++){let z=Number.NEGATIVE_INFINITY,q=new Set;for(let ee=0;ee<h.length;ee++){let H=h[ee][D];H>z+this.tieEpsilon?(z=H,q.clear(),q.add(ee)):Math.abs(H-z)<=this.tieEpsilon&&q.add(ee)}j.push(q)}let N=h.map(D=>Kt(D));if(this.mergeMax>0&&this.mergesDue>0&&this.lastIterFoundNewProgram){let D=Y=>{let Q=[],ie=Y;for(;ie!==void 0;)Q.push(ie),ie=m[ie]?.parent;return Q},z=Y=>Y.length?Y[Math.floor(this.rand()*Y.length)]:void 0,q=$r(j,N),ee=new Set;for(let Y of q)for(let Q of Y)ee.add(Q);let H=Array.from(ee),V;for(let Y=0;Y<10&&!V&&!(H.length<2);Y++){let Q=z(H),ie=z(H);if(Q===ie)continue;ie<Q&&([Q,ie]=[ie,Q]);let ye=new Set(D(Q)),me=new Set(D(ie));if(ye.has(ie)||me.has(Q))continue;let be=[...ye].filter(Z=>me.has(Z));if(be.length===0)continue;let U=be.map(Z=>Math.max(1e-9,N[Z])),X=this.rand()*U.reduce((Z,le)=>Z+le,0),J=be[be.length-1];for(let Z=0;Z<be.length;Z++){if(X<U[Z]){J=be[Z];break}X-=U[Z]}V={i:Q,j:ie,a:J}}if(this.lastIterFoundNewProgram=!1,V){let{i:Y,j:Q,a:ie}=V,ye=N[ie],me=N[Y],be=N[Q],U=m[ie].instruction,X=m[Y].instruction,J=m[Q].instruction,Z=X===U&&J!==X||J===U&&X!==J,le=ye<=Math.min(me,be)&&Z,fe="",ue="i",xe=!1;if(le){let Re=`${Y}|${Q}|${ie}`;if(this.mergeAttemptKeys.has(Re))le=!1;else{X===U&&J!==X?(fe=J,ue="j"):J===U&&X!==J?(fe=X,ue="i"):X!==U&&J!==U&&X!==J?me>be||me===be&&this.rand()<.5?(fe=X,ue="i"):(fe=J,ue="j"):(fe=X,ue="i");let Ne=`${Math.min(Y,Q)}|${Math.max(Y,Q)}|${ue}`;if(this.mergeCompositionKeys.has(Ne))le=!1;else{this.mergeAttemptKeys.add(Re),this.mergeCompositionKeys.add(Ne);let Le=h[Y],_e=h[Q],At=Array.from({length:Le.length},(Te,We)=>We),ct=At.filter(Te=>(Le[Te]??0)>(_e[Te]??0)),yt=At.filter(Te=>(_e[Te]??0)>(Le[Te]??0)),nt=At.filter(Te=>!(ct.includes(Te)||yt.includes(Te))),ce=5,Se=Math.ceil(ce/3),pt=(Te,We)=>{if(We<=0||Te.length===0)return[];if(Te.length<=We)return[...Te];let Jn=[],Hr=new Set;for(;Jn.length<We;){let dt=Math.floor(this.rand()*Te.length);Hr.has(dt)||(Hr.add(dt),Jn.push(Te[dt]))}return Jn},Ke=[];Ke.push(...pt(ct,Math.min(Se,ct.length))),Ke.push(...pt(yt,Math.min(Se,yt.length)));let Ze=ce-Ke.length;Ke.push(...pt(nt,Math.max(0,Ze)));let zr=ce-Ke.length;if(zr>0){let Te=At.filter(We=>!Ke.includes(We));Ke.push(...pt(Te,Math.min(zr,Te.length)))}let Os=Ke.slice(0,Math.min(ce,At.length)),Rc=Os.map(Te=>l[Te]);xe=!0;let vc=(await f(fe,Rc)).reduce((Te,We)=>Te+We,0),Sc=Os.reduce((Te,We)=>Te+(Le[We]??0),0),kc=Os.reduce((Te,We)=>Te+(_e[We]??0),0);if(vc>=Math.max(Sc,kc)+this.tieEpsilon){b(`Iteration ${S+1}: Merge accepted (programs ${Y} + ${Q} via ancestor ${ie})`);let Te=await p(fe,l);m.push({instruction:fe,parent:ie,scores:Te}),h.push(await f(fe,l));let We=O.length,Jn=ut(O.map(dt=>m[dt].scores))??0;O=Tt(m.map((dt,Oc)=>({idx:Oc,scores:dt.scores})),this.tieEpsilon).map(dt=>dt.idx);let Hr=ut(O.map(dt=>m[dt].scores))??0;(O.length>We||Hr>Jn+1e-6)&&(R=0),this.mergesDue-=1,this.totalMergesTested+=1}}}}if(xe)continue}}let K=Nr(j,N,()=>this.rand()),re=this.minibatch?this.nextMinibatchIndices(u.length,S).map(D=>u[D]):u;if(r?.skipPerfectScore??!0){let D=Number(r?.perfectScore??1),z=await f(m[K].instruction,re);if(z.length>0&&z.every(q=>q>=D))continue}let ne=!1,oe=m[K].instruction,W="reflective_mutation",se,Ie;if(ne){let D=(K+1)%m.length;oe=await this.mergeInstructions(m[K].instruction,m[D].instruction,r),W="merge",this.mergesUsed+=1}else{let D=r?.gepaAdapter;if(D){try{let z={instruction:m[K].instruction},q=await D.evaluate(re,z,!0);se=Array.isArray(q?.scores)?q.scores.reduce((Y,Q)=>Y+(Number(Q)||0),0):void 0;let ee=D.make_reflective_dataset(z,q,["instruction"]),H=await D.propose_new_texts?.(z,ee,["instruction"]),V=H?.instruction??(H?Object.values(H)[0]:void 0);typeof V=="string"&&V.length>0?oe=V:oe=await this.reflectInstruction(m[K].instruction,e,re,async({prediction:Y,example:Q})=>{let ie=await n({prediction:Y,example:Q}),ye=Object.values(ie||{});return ye.length?ye.reduce((me,be)=>me+be,0)/ye.length:0},r)}catch{oe=await this.reflectInstruction(m[K].instruction,e,re,async({prediction:z,example:q})=>{let ee=await n({prediction:z,example:q}),H=Object.values(ee||{});return H.length?H.reduce((V,Y)=>V+Y,0)/H.length:0},r)}if(se!==void 0)try{let z=await D.evaluate(re,{instruction:oe},!1);Ie=Array.isArray(z?.scores)?z.scores.reduce((q,ee)=>q+(Number(ee)||0),0):void 0}catch{}}else oe=await this.reflectInstruction(m[K].instruction,e,re,async({prediction:z,example:q})=>{let ee=await n({prediction:z,example:q}),H=Object.values(ee||{});return H.length?H.reduce((V,Y)=>V+Y,0)/H.length:0},r)}let te=await f(m[K].instruction,re),he=await f(oe,re),ve=te.reduce((D,z)=>D+z,0),we=he.reduce((D,z)=>D+z,0);if(this.currentRound=S+1,await this.updateOptimizationProgress(this.currentRound,we,{instructionLen:oe.length,parent:K,totalRounds:this.numTrials},"GEPA",{strategy:W,paretoSetSize:l.length},we,{instructionLen:m[K].instruction.length,idx:K},{...r??{},maxIterations:this.numTrials}),!(we>ve+this.tieEpsilon&&(se===void 0||Ie===void 0||Ie>se+this.tieEpsilon))){if(b(`Iteration ${S+1}: Rejected (child=${we.toFixed(3)} <= parent=${ve.toFixed(3)})`),++R>=this.earlyStoppingTrials){b(`Early stopping: ${R} iterations without improvement`);break}continue}b(`Iteration ${S+1}: Accepted (child=${we.toFixed(3)} > parent=${ve.toFixed(3)})`);let w=await p(oe,l);m.push({instruction:oe,parent:K,scores:w}),h.push(await f(oe,l));let F=O.length,k=ut(O.map(D=>m[D].scores))??0;O=Tt(m.map((D,z)=>({idx:z,scores:D.scores})),this.tieEpsilon).map(D=>D.idx);let C=ut(O.map(D=>m[D].scores))??0;if(O.length>F||C>k+1e-6)R=0,b(`Iteration ${S+1}: Archive improved (size=${O.length}, hv=${C.toFixed(4)})`);else if(R++,b(`Iteration ${S+1}: Archive unchanged (stagnation=${R}/${this.earlyStoppingTrials})`),R>=this.earlyStoppingTrials){b(`Early stopping: ${R} iterations without archive improvement`);break}this.lastIterFoundNewProgram=!0,this.mergeMax>0&&this.totalMergesTested<this.mergeMax&&(this.mergesDue+=1)}let M=Tt(m.map((S,P)=>({idx:P,scores:S.scores})),this.tieEpsilon),G=M.length>0?Math.max(...M.map(S=>g(S.scores))):0,B;if(M.length>0){let S=Number.NEGATIVE_INFINITY;for(let P of M){let j=g(P.scores);j>S&&(S=j,B=P.idx)}}let L=ut(M.map(S=>S.scores));this.stats.convergenceInfo.converged=!0;let I=this.getMergedCustomLabels(r);this.recordParetoMetrics(M.length,m.length,"GEPA",L,I);let v=Date.now()-o,E=typeof B=="number"?new Ct({bestScore:G,stats:this.stats,instruction:m[B].instruction,demos:[],examples:t,modelConfig:void 0,optimizerType:"GEPA",optimizationTime:v,totalRounds:this.numTrials,converged:this.stats.convergenceInfo.converged}):void 0,$=this.generateOptimizationReport(M,L,G);return{demos:[],stats:this.stats,bestScore:G,paretoFront:M.map(S=>({demos:[],scores:S.scores,configuration:{candidate:S.idx,instruction:m[S.idx].instruction},dominatedSolutions:S.dominated})),paretoFrontSize:M.length,hypervolume:L,finalConfiguration:{strategy:"gepa",candidates:m.length},optimizedProgram:E,report:$}}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."}async evaluateOnSet(e,t,n,r){let o=[];for(let i of n){let a=await this.evaluateOne(e,t,i,r);o.push(a)}return o}async evaluateAvg(e,t,n,r){let o=await this.evaluateOnSet(e,t,n,r);return o.length>0?Kt(o):0}async evaluateOne(e,t,n,r){try{e.setInstruction?.(t);let o=await e.forward(this.studentAI,n,{sampleCount:this.sampleCount});this.stats.totalCalls+=1;let i=await r({prediction:o,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(o){return this.getLogger()?.({name:"Notification",id:"gepa_eval",value:String(o)}),0}}async reflectInstruction(e,t,n,r,o,i){let a=i??[];if(a.length===0)for(let m of n)try{t.setInstruction?.(e);let g=await t.forward(this.studentAI,m,{sampleCount:this.sampleCount});this.stats.totalCalls+=1;let h=await r({prediction:g,example:m});a.push({input:m,prediction:g,score:typeof h=="number"?h:0})}catch{a.push({input:m,prediction:{},score:0})}let l=o?.overrideTeacherAI??this.teacherAI??this.studentAI,u=o?.feedbackFn,c=()=>{let m=[];for(let g=0;g<a.length;g++){let h=a[g],f=`# Example ${g+1}
453
453
  `;if(f+=`## Inputs
454
454
  `,typeof h.input=="object"&&h.input!==null)for(let[x,A]of Object.entries(h.input))f+=`### ${x}
455
455
  ${String(A).trim()}
@@ -470,7 +470,7 @@ ${String(A).trim()}
470
470
  `)},p=s.REFLECTION_PROMPT_TEMPLATE.replace("<curr_instructions>",e).replace("<inputs_outputs_feedback>",c());try{let m=await l.chat({chatPrompt:[{role:"user",content:p}],model:o?.reflectionModel},{stream:!1});if(typeof m.getReader=="function")throw new Error("Streaming response not expected for reflection");let h=m.results?.[0]?.content;if(typeof h=="string"){let f=this.extractInstructionFromBackticks(h);if(f&&f.length>16){let y=`Iteration feedback: ${a.map(x=>`score=${x.score.toFixed(2)}`).join(", ")}`;return this.feedbackMemory.unshift(y),this.feedbackMemory.length>this.feedbackMemorySize&&this.feedbackMemory.pop(),f}}}catch{}let d=He('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 g=(await d.forward(l,{currentInstruction:e,feedbackSummary:this.feedbackMemory[0]||"",recentFeedback:this.feedbackMemory,minibatch:a}))?.newInstruction?.trim();if(g&&g.length>16)return g}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),o=r.match(/^\S*\n/);return o&&(r=r.slice(o[0].length)),r.trim()}updateSamplerShuffled(e){let t=Array.from({length:e},(l,u)=>u);for(let l=t.length-1;l>0;l--){let u=Math.floor(this.rand()*(l+1));[t[l],t[u]]=[t[u],t[l]]}for(let l of t)this.samplerState.freq.set(l,(this.samplerState.freq.get(l)??0)+1);let n=this.minibatchSize,r=e%n,o=r===0?0:n-r,i=Array.from({length:e},(l,u)=>u).sort((l,u)=>(this.samplerState.freq.get(l)??0)-(this.samplerState.freq.get(u)??0)),a=[...t];for(let l=0;l<o;l++){let u=i[l%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)),o=Math.floor(t/r);for(;o>=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}generateOptimizationReport(e,t,n){let r=e.length>0?e.reduce((u,c)=>{let p=Object.values(u.scores).reduce((m,g)=>m+g,0);return Object.values(c.scores).reduce((m,g)=>m+g,0)>p?c:u}):void 0,o={};if(r)for(let[u,c]of Object.entries(r.scores))o[u]={value:c,percentage:c*100};let i=[];if(e.length>1){let u=[...e].sort((c,p)=>p.dominated-c.dominated).slice(0,3);for(let c of u)i.push({...c.scores})}let a="good",l=[];if(e.length===1)a="single",l.push("Increase numTrials (current seems low)"),l.push("Add more training examples"),l.push("Adjust earlyStoppingTrials");else if(e.length<3)a="limited",l.push("More optimization trials"),l.push("Larger validation set");else{a="good";let u=Object.keys(e[0]?.scores||{});for(let c of u)l.push(`High ${c}: Choose solution with best ${c} score`);l.push("Balanced: Use provided bestScore (average)")}return this.stats.totalCalls<50&&(l.push("Quick run detected - use numTrials: 30+ for production"),l.push("Provide 50+ training examples"),l.push("Use 20+ validation examples")),{summary:"GEPA Multi-Objective Optimization Complete",bestSolution:{overallScore:n??0,objectives:o},paretoFrontier:{solutionCount:e.length,objectiveSpaceCoverage:(t??0)*100,hypervolume:t??0,tradeoffs:i.length>0?i:void 0},statistics:{totalEvaluations:this.stats.totalCalls,candidatesExplored:e.length,converged:this.stats.convergenceInfo?.converged??!1},recommendations:{status:a,suggestions:l}}}async mergeInstructions(e,t,n){let r=n?.overrideTeacherAI??this.teacherAI??this.studentAI,o=He(`instructionA:string "Parent A instruction",
471
471
  instructionB:string "Parent B instruction",
472
472
  recentFeedback?:string[] "Past feedback memory"
473
- -> mergedInstruction:string "Merged instruction (1-6 sentences) combining strengths, fixing weaknesses"`);try{let a=(await o.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 Yu(s){return s.map(e=>{let t=e.type?.name??"string",n=e.type?.isArray?"[]":"",r=e.isOptional?" (optional)":"",o=e.description?`: ${e.description}`:"";return`- ${e.name}: ${t}${n}${r}${o}`}).join(`
473
+ -> mergedInstruction:string "Merged instruction (1-6 sentences) combining strengths, fixing weaknesses"`);try{let a=(await o.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 Ju(s){return s.map(e=>{let t=e.type?.name??"string",n=e.type?.isArray?"[]":"",r=e.isOptional?" (optional)":"",o=e.description?`: ${e.description}`:"";return`- ${e.name}: ${t}${n}${r}${o}`}).join(`
474
474
  `)}function kd(s){return s.map(e=>{let t=e.type?.name??"string",n=e.type?.isArray?"[]":"",r=e.type?.options?` (options: ${e.type.options.join(", ")})`:"",o=e.description?`: ${e.description}`:"";return`- ${e.name}: ${t}${n}${r}${o}`}).join(`
475
475
  `)}var Un=class{signature;options;constructor(e,t){this.signature=e,this.options={teacher:t.teacher,diversity:t.diversity??"none",temperature:t.temperature??.8,domain:t.domain,edgeCases:t.edgeCases,model:t.model}}async generate(e,t){let n=Date.now(),r=t?.batchSize??Math.min(e,10),o=[],i=0,a=0;for(let l=0;l<e;l+=r){let u=Math.min(r,e-l),c=await this.generateInputs(u);for(let p of c){a++;try{let d=await this.labelInput(p);o.push({input:p,expected:d,category:"normal"}),i++}catch(d){console.warn("AxSynth: Failed to label input:",d)}}}if(this.options.edgeCases&&this.options.edgeCases.length>0){let l=await this.generateEdgeCaseInputs(Math.ceil(e*.2));for(let u of l){a++;try{let c=await this.labelInput(u);o.push({input:u,expected:c,category:"edge_case"}),i++}catch(c){console.warn("AxSynth: Failed to label edge case input:",c)}}}return{examples:o,stats:{requested:e,generated:o.length,labelingSuccessRate:a>0?i/a:0,durationMs:Date.now()-n}}}async generateInputs(e){let t=this.signature.getInputFields(),n=this.signature.getOutputFields(),r=this.signature.getDescription(),o=`
476
476
  You are generating realistic input data for an AI system.
@@ -479,7 +479,7 @@ ${r?`Task description: ${r}`:""}
479
479
  ${this.options.domain?`Domain: ${this.options.domain}`:""}
480
480
 
481
481
  The system expects these INPUT fields:
482
- ${Yu(t)}
482
+ ${Ju(t)}
483
483
 
484
484
  The system produces these OUTPUT fields:
485
485
  ${kd(n)}
@@ -493,7 +493,7 @@ Output ONLY the JSON array, no explanation.
493
493
  You are generating challenging edge case input data to test an AI system's robustness.
494
494
 
495
495
  The system expects these INPUT fields:
496
- ${Yu(t)}
496
+ ${Ju(t)}
497
497
 
498
498
  Generate ${e} edge case examples as a JSON array.
499
499
  Focus on these types of edge cases:
@@ -501,7 +501,7 @@ ${n.map(i=>`- ${i}`).join(`
501
501
  `)}
502
502
 
503
503
  Output ONLY the JSON array, no explanation.
504
- `.trim(),o=new Oe("count:number -> examples:json");o.setInstruction(r);try{let i=await o.forward(this.options.teacher,{count:e},{model:this.options.model});return Array.isArray(i.examples)?i.examples.slice(0,e):[]}catch(i){return console.warn("AxSynth: Edge case generation failed:",i),[]}}async labelInput(e){return await new Oe(this.signature).forward(this.options.teacher,e,{model:this.options.model})}getSignature(){return this.signature}getTeacher(){return this.options.teacher}};var cs=class s{gen;options;tracer;currentScore;constructor(e,t){this.gen=e,this.options={...t,enableTracing:t.enableTracing??!0},this.tracer=new Dn(e,{name:this.options.name,storage:this.options.storage,metadata:this.options.metadata,onTrace:this.options.onTrace}),this.loadLatestCheckpoint()}async forward(e,t,n){return this.options.enableTracing?this.tracer.forward(e,t,n):this.gen.forward(e,t,n)}async*streamingForward(e,t,n){this.options.enableTracing?yield*this.tracer.streamingForward(e,t,n):yield*this.gen.streamingForward(e,t,n)}getUsage(){return this.gen.getUsage()}resetUsage(){this.gen.resetUsage()}getSignature(){return this.gen.getSignature()}setInstruction(e){this.gen.setInstruction(e)}getInstruction(){return this.gen.getInstruction()}updateMeter(e){this.gen.updateMeter(e)}addAssert(e,t){this.gen.addAssert(e,t)}addStreamingAssert(e,t,n){this.gen.addStreamingAssert(e,t,n)}addFieldProcessor(e,t){this.gen.addFieldProcessor(e,t)}addStreamingFieldProcessor(e,t){this.gen.addStreamingFieldProcessor(e,t)}clone(){return new s(this.gen.clone(),this.options)}async optimize(e={}){let t=Date.now(),n={...this.options,...e},r=n.teacher,o=n.budget??20,i=[...n.examples??[]];if(n.useTraces!==!1){let R=(await this.getTraces()).filter(O=>O.input&&O.output).map(O=>({...O.input,...O.output}));i=[...i,...R]}if(n.generateExamples||i.length===0){let b=n.synthCount??20,R={teacher:r,...n.synthOptions},M=(await new Un(this.gen.getSignature(),R).generate(b)).examples.map(G=>({...G.input,...G.expected}));i=[...i,...M]}if(i.length===0)throw new Error("No training examples available. Provide examples, enable trace usage, or enable example generation.");let a=n.validationSplit??.2,l=[...i].sort(()=>Math.random()-.5),u=Math.floor(l.length*(1-a)),c=l.slice(0,u),p=l.slice(u),d=n.metric;if(!d){let b={ai:r,criteria:n.criteria,...n.judgeOptions};d=new Ln(this.gen.getSignature(),b).toMetricFn()}let m=new Gn({studentAI:r,numTrials:o,minibatch:!0,minibatchSize:10}),g=o*Math.max(c.length,10),h=await m.compile(this.gen,c,d,{validationExamples:p,maxMetricCalls:g});if(!h.optimizedProgram)throw new Error("GEPA optimization failed: no optimizedProgram returned");h.optimizedProgram.instruction&&this.gen.setInstruction(h.optimizedProgram.instruction),this.currentScore=h.optimizedProgram.bestScore,this.tracer=this.tracer.clone(this.gen);let f=this.currentScore,y=f,A=((await this.options.storage.load(this.options.name,{type:"checkpoint",limit:1}))[0]?.version??0)+1,T={type:"checkpoint",name:this.options.name,version:A,createdAt:new Date,instruction:this.gen.getInstruction(),score:f,optimizerType:"gepa",metadata:{budget:o,trainingExamples:c.length,durationMs:Date.now()-t}};return await this.options.storage.save(this.options.name,T),{score:f,improvement:y,checkpointVersion:A,stats:{trainingExamples:c.length,validationExamples:p.length,durationMs:Date.now()-t}}}async loadLatestCheckpoint(){try{let t=(await this.options.storage.load(this.options.name,{type:"checkpoint",limit:1}))[0];t?.instruction&&(this.gen.setInstruction(t.instruction),this.currentScore=t.score,this.tracer=this.tracer.clone(this.gen))}catch{}}getGen(){return this.gen}getStorage(){return this.options.storage}async getTraces(e){return this.options.storage.load(this.options.name,{type:"trace",...e})}async addFeedback(e,t){let n=await this.options.storage.load(this.options.name,{id:e,type:"trace",limit:1});if(n.length>0){let r=n[0];r.feedback={...r.feedback,...t},await this.options.storage.save(this.options.name,r)}}};var ps=class{rows=[];baseUrl;dataset;split;config;options;constructor({dataset:e,split:t,config:n,options:r}){this.baseUrl="https://datasets-server.huggingface.co/rows",this.dataset=e,this.split=t,this.config=n,this.options=r}async fetchDataFromAPI(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`Error fetching data: ${t.statusText}`);let n=await t.json();if(!n?.rows)throw new Error("Invalid data format");return n.rows}catch(t){throw console.error("Error fetching data from API:",t),t}}async loadData(){let e=this.options?.offset??0,t=this.options?.length??100,n=encodeURIComponent(this.dataset),r=`${this.baseUrl}?dataset=${n}&config=${this.config}&split=${this.split}&offset=${e}&length=${t}`;return this.rows=await this.fetchDataFromAPI(r),this.rows}setData(e){this.rows=e}getData(){return this.rows}async getRows({count:e,fields:t,renameMap:n}){if(this.rows.length===0)throw new Error("No data loaded, call loadData or setData first.");return this.rows.slice(0,e).map(o=>{let i={};return t.forEach(a=>{let l=a.split("."),u=o.row;for(let p of l)Object.hasOwn(u,p)&&(u=u[p]);if(!u)return;let c=n&&a in n?n[a]:a;if(!c)throw new Error(`Invalid field name: ${a}`);i[c]=u}),i}).filter(o=>Object.keys(o).length!==0)}};var Qu=Yn($c("crypto"),1);function Zi(s){let e=new Date().toISOString();return{version:1,sections:{},stats:{bulletCount:0,helpfulCount:0,harmfulCount:0,tokenEstimate:0},updatedAt:e,description:s}}function Wt(s){return JSON.parse(JSON.stringify(s))}function Od(s){return Math.ceil(s.length/4)}function ea(s,e,t){let n=[],r=[],{maxSectionSize:o=Number.POSITIVE_INFINITY,allowDynamicSections:i=!0,enableAutoPrune:a=!1,protectedBulletIds:l}=t??{},u=new Date().toISOString(),c=l??new Set;for(let p of e){if(!p.section)continue;if(!s.sections[p.section]){if(!i)continue;s.sections[p.section]=[]}let d=s.sections[p.section];switch(p.type){case"ADD":{if(d.length>=o){if(!a)continue;let h=Ed(d,c);if(!h)continue;n.push(h.id),r.push({type:"REMOVE",section:p.section,bulletId:h.id,metadata:{...h.metadata??{},autoPruned:!0,removedAt:u}})}let m=p.bulletId??Md(p.section),g={id:m,section:p.section,content:p.content??"",helpfulCount:0,harmfulCount:0,createdAt:u,updatedAt:u,metadata:p.metadata?{...p.metadata}:void 0};d.push(g),n.push(m);break}case"UPDATE":{let m=d.find(g=>g.id===p.bulletId);if(!m)continue;typeof p.content=="string"&&(m.content=p.content),m.updatedAt=u,p.metadata&&(m.metadata={...m.metadata??{},...p.metadata}),n.push(m.id);break}case"REMOVE":{let m=d.findIndex(g=>g.id===p.bulletId);if(m>=0){let[g]=d.splice(m,1);g&&n.push(g.id)}break}}}return ra(s),s.updatedAt=u,{updatedBulletIds:n,autoRemoved:r}}function ta(s,e,t){for(let n of Object.values(s.sections)){let r=n.find(o=>o.id===e);if(r){t==="helpful"?r.helpfulCount+=1:t==="harmful"&&(r.harmfulCount+=1),r.updatedAt=new Date().toISOString(),ra(s);return}}}function Lr(s){let e=s.description?`## Context Playbook
504
+ `.trim(),o=new Oe("count:number -> examples:json");o.setInstruction(r);try{let i=await o.forward(this.options.teacher,{count:e},{model:this.options.model});return Array.isArray(i.examples)?i.examples.slice(0,e):[]}catch(i){return console.warn("AxSynth: Edge case generation failed:",i),[]}}async labelInput(e){return await new Oe(this.signature).forward(this.options.teacher,e,{model:this.options.model})}getSignature(){return this.signature}getTeacher(){return this.options.teacher}};var cs=class s{gen;options;tracer;currentScore;constructor(e,t){this.gen=e,this.options={...t,enableTracing:t.enableTracing??!0},this.tracer=new Dn(e,{name:this.options.name,storage:this.options.storage,metadata:this.options.metadata,onTrace:this.options.onTrace}),this.loadLatestCheckpoint()}async forward(e,t,n){return this.options.enableTracing?this.tracer.forward(e,t,n):this.gen.forward(e,t,n)}async*streamingForward(e,t,n){this.options.enableTracing?yield*this.tracer.streamingForward(e,t,n):yield*this.gen.streamingForward(e,t,n)}getUsage(){return this.gen.getUsage()}resetUsage(){this.gen.resetUsage()}getSignature(){return this.gen.getSignature()}setInstruction(e){this.gen.setInstruction(e)}getInstruction(){return this.gen.getInstruction()}updateMeter(e){this.gen.updateMeter(e)}addAssert(e,t){this.gen.addAssert(e,t)}addStreamingAssert(e,t,n){this.gen.addStreamingAssert(e,t,n)}addFieldProcessor(e,t){this.gen.addFieldProcessor(e,t)}addStreamingFieldProcessor(e,t){this.gen.addStreamingFieldProcessor(e,t)}clone(){return new s(this.gen.clone(),this.options)}async optimize(e={}){let t=Date.now(),n={...this.options,...e},r=n.teacher,o=n.budget??20,i=[...n.examples??[]];if(n.useTraces!==!1){let R=(await this.getTraces()).filter(O=>O.input&&O.output).map(O=>({...O.input,...O.output}));i=[...i,...R]}if(n.generateExamples||i.length===0){let b=n.synthCount??20,R={teacher:r,...n.synthOptions},M=(await new Un(this.gen.getSignature(),R).generate(b)).examples.map(G=>({...G.input,...G.expected}));i=[...i,...M]}if(i.length===0)throw new Error("No training examples available. Provide examples, enable trace usage, or enable example generation.");let a=n.validationSplit??.2,l=[...i].sort(()=>Math.random()-.5),u=Math.floor(l.length*(1-a)),c=l.slice(0,u),p=l.slice(u),d=n.metric;if(!d){let b={ai:r,criteria:n.criteria,...n.judgeOptions};d=new Ln(this.gen.getSignature(),b).toMetricFn()}let m=new Gn({studentAI:r,numTrials:o,minibatch:!0,minibatchSize:10}),g=o*Math.max(c.length,10),h=await m.compile(this.gen,c,d,{validationExamples:p,maxMetricCalls:g});if(!h.optimizedProgram)throw new Error("GEPA optimization failed: no optimizedProgram returned");h.optimizedProgram.instruction&&this.gen.setInstruction(h.optimizedProgram.instruction),this.currentScore=h.optimizedProgram.bestScore,this.tracer=this.tracer.clone(this.gen);let f=this.currentScore,y=f,A=((await this.options.storage.load(this.options.name,{type:"checkpoint",limit:1}))[0]?.version??0)+1,T={type:"checkpoint",name:this.options.name,version:A,createdAt:new Date,instruction:this.gen.getInstruction(),score:f,optimizerType:"gepa",metadata:{budget:o,trainingExamples:c.length,durationMs:Date.now()-t}};return await this.options.storage.save(this.options.name,T),{score:f,improvement:y,checkpointVersion:A,stats:{trainingExamples:c.length,validationExamples:p.length,durationMs:Date.now()-t}}}async loadLatestCheckpoint(){try{let t=(await this.options.storage.load(this.options.name,{type:"checkpoint",limit:1}))[0];t?.instruction&&(this.gen.setInstruction(t.instruction),this.currentScore=t.score,this.tracer=this.tracer.clone(this.gen))}catch{}}getGen(){return this.gen}getStorage(){return this.options.storage}async getTraces(e){return this.options.storage.load(this.options.name,{type:"trace",...e})}async addFeedback(e,t){let n=await this.options.storage.load(this.options.name,{id:e,type:"trace",limit:1});if(n.length>0){let r=n[0];r.feedback={...r.feedback,...t},await this.options.storage.save(this.options.name,r)}}};var ps=class{rows=[];baseUrl;dataset;split;config;options;constructor({dataset:e,split:t,config:n,options:r}){this.baseUrl="https://datasets-server.huggingface.co/rows",this.dataset=e,this.split=t,this.config=n,this.options=r}async fetchDataFromAPI(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`Error fetching data: ${t.statusText}`);let n=await t.json();if(!n?.rows)throw new Error("Invalid data format");return n.rows}catch(t){throw console.error("Error fetching data from API:",t),t}}async loadData(){let e=this.options?.offset??0,t=this.options?.length??100,n=encodeURIComponent(this.dataset),r=`${this.baseUrl}?dataset=${n}&config=${this.config}&split=${this.split}&offset=${e}&length=${t}`;return this.rows=await this.fetchDataFromAPI(r),this.rows}setData(e){this.rows=e}getData(){return this.rows}async getRows({count:e,fields:t,renameMap:n}){if(this.rows.length===0)throw new Error("No data loaded, call loadData or setData first.");return this.rows.slice(0,e).map(o=>{let i={};return t.forEach(a=>{let l=a.split("."),u=o.row;for(let p of l)Object.hasOwn(u,p)&&(u=u[p]);if(!u)return;let c=n&&a in n?n[a]:a;if(!c)throw new Error(`Invalid field name: ${a}`);i[c]=u}),i}).filter(o=>Object.keys(o).length!==0)}};var Yu=Yn($c("crypto"),1);function Zi(s){let e=new Date().toISOString();return{version:1,sections:{},stats:{bulletCount:0,helpfulCount:0,harmfulCount:0,tokenEstimate:0},updatedAt:e,description:s}}function Wt(s){return JSON.parse(JSON.stringify(s))}function Od(s){return Math.ceil(s.length/4)}function ea(s,e,t){let n=[],r=[],{maxSectionSize:o=Number.POSITIVE_INFINITY,allowDynamicSections:i=!0,enableAutoPrune:a=!1,protectedBulletIds:l}=t??{},u=new Date().toISOString(),c=l??new Set;for(let p of e){if(!p.section)continue;if(!s.sections[p.section]){if(!i)continue;s.sections[p.section]=[]}let d=s.sections[p.section];switch(p.type){case"ADD":{if(d.length>=o){if(!a)continue;let h=Ed(d,c);if(!h)continue;n.push(h.id),r.push({type:"REMOVE",section:p.section,bulletId:h.id,metadata:{...h.metadata??{},autoPruned:!0,removedAt:u}})}let m=p.bulletId??Md(p.section),g={id:m,section:p.section,content:p.content??"",helpfulCount:0,harmfulCount:0,createdAt:u,updatedAt:u,metadata:p.metadata?{...p.metadata}:void 0};d.push(g),n.push(m);break}case"UPDATE":{let m=d.find(g=>g.id===p.bulletId);if(!m)continue;typeof p.content=="string"&&(m.content=p.content),m.updatedAt=u,p.metadata&&(m.metadata={...m.metadata??{},...p.metadata}),n.push(m.id);break}case"REMOVE":{let m=d.findIndex(g=>g.id===p.bulletId);if(m>=0){let[g]=d.splice(m,1);g&&n.push(g.id)}break}}}return ra(s),s.updatedAt=u,{updatedBulletIds:n,autoRemoved:r}}function ta(s,e,t){for(let n of Object.values(s.sections)){let r=n.find(o=>o.id===e);if(r){t==="helpful"?r.helpfulCount+=1:t==="harmful"&&(r.harmfulCount+=1),r.updatedAt=new Date().toISOString(),ra(s);return}}}function Lr(s){let e=s.description?`## Context Playbook
505
505
  ${s.description.trim()}
506
506
  `:`## Context Playbook
507
507
  `,t=Object.entries(s.sections).map(([n,r])=>{let o=r.map(i=>`- [${i.id}] ${i.content}`).join(`
@@ -510,7 +510,7 @@ ${o}`:`### ${n}
510
510
  _(empty)_`}).join(`
511
511
 
512
512
  `);return`${e}
513
- ${t}`.trim()}function Md(s){let e=s.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,6),t=Qu.default.randomBytes(4).toString("hex");return`${e||"ctx"}-${t}`}function Ed(s,e){let t=-1,n;for(let o=0;o<s.length;o+=1){let i=s[o];if(e.has(i.id))continue;let a=i.helpfulCount??0,l=i.harmfulCount??0,u=a-l*2,c=Date.parse(i.updatedAt??i.createdAt),p=[u,a,Number.isFinite(c)?c:Number.POSITIVE_INFINITY];if(!n){t=o,n=p;continue}let d=s[t],m=d.helpfulCount??0,g=d.harmfulCount??0,h=m-g*2,f=Date.parse(d.updatedAt??d.createdAt),y=[h,m,Number.isFinite(f)?f:Number.POSITIVE_INFINITY];(p[0]<y[0]||p[0]===y[0]&&p[1]<y[1]||p[0]===y[0]&&p[1]===y[1]&&p[2]<y[2])&&(t=o,n=p)}if(t===-1)return;let[r]=s.splice(t,1);return r}function na(s,e=.95){for(let[t,n]of Object.entries(s.sections)){let r=new Map,o=[];for(let i of n){let a=i.content.trim().toLowerCase(),l=r.get(a);l?(l.helpfulCount+=i.helpfulCount,l.harmfulCount+=i.harmfulCount,l.updatedAt=i.updatedAt):(r.set(a,i),o.push(i))}s.sections[t]=o}ra(s)}function ra(s){let e=0,t=0,n=0,r=0;for(let o of Object.values(s.sections))for(let i of o)e+=1,t+=i.helpfulCount,n+=i.harmfulCount,r+=Od(i.content);s.stats={bulletCount:e,helpfulCount:t,harmfulCount:n,tokenEstimate:r}}var Pd={maxEpochs:1,maxReflectorRounds:2,maxSectionSize:25,similarityThreshold:.95,allowDynamicSections:!0},Dr=class extends Ct{playbook;artifact;baseInstruction;constructor(e){super({bestScore:e.bestScore,stats:e.stats,instruction:e.instruction,demos:e.demos,examples:e.examples,modelConfig:e.modelConfig,optimizerType:e.optimizerType,optimizationTime:e.optimizationTime,totalRounds:e.totalRounds,converged:e.converged,scoreHistory:e.scoreHistory,configurationHistory:e.configurationHistory}),this.playbook=Wt(e.playbook),this.artifact=e.artifact,this.baseInstruction=e.baseInstruction}applyTo(e){super.applyTo(e);let t=e.getSignature(),r=[(this.baseInstruction??t.getDescription()??"").trim(),"",Lr(this.playbook)].filter(o=>o&&o.trim().length>0).join(`
513
+ ${t}`.trim()}function Md(s){let e=s.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,6),t=Yu.default.randomBytes(4).toString("hex");return`${e||"ctx"}-${t}`}function Ed(s,e){let t=-1,n;for(let o=0;o<s.length;o+=1){let i=s[o];if(e.has(i.id))continue;let a=i.helpfulCount??0,l=i.harmfulCount??0,u=a-l*2,c=Date.parse(i.updatedAt??i.createdAt),p=[u,a,Number.isFinite(c)?c:Number.POSITIVE_INFINITY];if(!n){t=o,n=p;continue}let d=s[t],m=d.helpfulCount??0,g=d.harmfulCount??0,h=m-g*2,f=Date.parse(d.updatedAt??d.createdAt),y=[h,m,Number.isFinite(f)?f:Number.POSITIVE_INFINITY];(p[0]<y[0]||p[0]===y[0]&&p[1]<y[1]||p[0]===y[0]&&p[1]===y[1]&&p[2]<y[2])&&(t=o,n=p)}if(t===-1)return;let[r]=s.splice(t,1);return r}function na(s,e=.95){for(let[t,n]of Object.entries(s.sections)){let r=new Map,o=[];for(let i of n){let a=i.content.trim().toLowerCase(),l=r.get(a);l?(l.helpfulCount+=i.helpfulCount,l.harmfulCount+=i.harmfulCount,l.updatedAt=i.updatedAt):(r.set(a,i),o.push(i))}s.sections[t]=o}ra(s)}function ra(s){let e=0,t=0,n=0,r=0;for(let o of Object.values(s.sections))for(let i of o)e+=1,t+=i.helpfulCount,n+=i.harmfulCount,r+=Od(i.content);s.stats={bulletCount:e,helpfulCount:t,harmfulCount:n,tokenEstimate:r}}var Pd={maxEpochs:1,maxReflectorRounds:2,maxSectionSize:25,similarityThreshold:.95,allowDynamicSections:!0},Dr=class extends Ct{playbook;artifact;baseInstruction;constructor(e){super({bestScore:e.bestScore,stats:e.stats,instruction:e.instruction,demos:e.demos,examples:e.examples,modelConfig:e.modelConfig,optimizerType:e.optimizerType,optimizationTime:e.optimizationTime,totalRounds:e.totalRounds,converged:e.converged,scoreHistory:e.scoreHistory,configurationHistory:e.configurationHistory}),this.playbook=Wt(e.playbook),this.artifact=e.artifact,this.baseInstruction=e.baseInstruction}applyTo(e){super.applyTo(e);let t=e.getSignature(),r=[(this.baseInstruction??t.getDescription()??"").trim(),"",Lr(this.playbook)].filter(o=>o&&o.trim().length>0).join(`
514
514
 
515
515
  `);e.setDescription(r)}},ds=class extends Xe{aceConfig;playbook;generatorHistory=[];deltaHistory=[];reflectorProgram;curatorProgram;program;constructor(e,t){super(e),this.aceConfig={...Pd,...t},this.playbook=t?.initialPlaybook!==void 0?Wt(t.initialPlaybook):Zi()}reset(){super.reset(),this.playbook=this.aceConfig.initialPlaybook!==void 0?Wt(this.aceConfig.initialPlaybook):Zi(),this.generatorHistory=[],this.deltaHistory=[]}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 o=r?.aceOptions;o&&(Object.assign(this.aceConfig,{maxEpochs:o.maxEpochs??this.aceConfig.maxEpochs,maxReflectorRounds:o.maxReflectorRounds??this.aceConfig.maxReflectorRounds,maxSectionSize:o.maxSectionSize??this.aceConfig.maxSectionSize,similarityThreshold:o.similarityThreshold??this.aceConfig.similarityThreshold,allowDynamicSections:o.allowDynamicSections??this.aceConfig.allowDynamicSections}),o.initialPlaybook&&(this.playbook=Wt(o.initialPlaybook)));let i=Date.now();this.validateExamples(t),this.program=e;let a=await this.extractProgramInstruction(e),l=e.getSignature().getDescription()??"";this.generatorHistory=[],this.deltaHistory=[];let u=Number.NEGATIVE_INFINITY,c=0,p=Math.max(this.aceConfig.maxEpochs,1),d=p*t.length;try{for(let y=0;y<p;y++)for(let x=0;x<t.length;x++){let A=t[x],T=this.composeInstruction(a??l,this.playbook);e.setDescription?.(T);let b=await e.forward(this.studentAI,A);this.stats.totalCalls+=1;let R=await n({prediction:b,example:A});typeof R=="number"&&(this.stats.bestScore=Math.max(this.stats.bestScore,R),u=Math.max(u,R));let O=b?.severity,_=A?.severity,M=this.createGeneratorOutput(b,A),G=_&&O&&_!==O,B=await this.runReflectionRounds({example:A,generatorOutput:M,feedback:_&&O&&_!==O?`Expected severity "${_}" but model predicted "${O}".`:void 0}),L=await this.runCurator({program:e,example:A,reflection:B,playbook:this.playbook}),I=this.normalizeCuratorOperations(L?.operations);I.length===0&&G&&(I=this.inferOperationsFromReflection(B)),I=this.resolveCuratorOperationTargets(I,this.playbook,B,M);let v=L||I.length>0?{...L??{},operations:I}:void 0,E=[];if(I.length>0){let N=this.collectProtectedBulletIds(I),K=ea(this.playbook,I,{maxSectionSize:this.aceConfig.maxSectionSize,allowDynamicSections:this.aceConfig.allowDynamicSections,enableAutoPrune:!0,protectedBulletIds:N});E=K.updatedBulletIds,K.autoRemoved.length>0&&(I.push(...K.autoRemoved),v&&(v.operations=I))}if(B?.bulletTags)for(let N of B.bulletTags)ta(this.playbook,N.id,N.tag);I.length>0&&E.length>0&&na(this.playbook,this.aceConfig.similarityThreshold);let $={example:A,prediction:b,score:typeof R=="number"?R:0,generatorOutput:M,reflection:B,curator:v,timestamp:new Date().toISOString()};this.generatorHistory.push($),E.length>0&&v?.operations?.length&&this.deltaHistory.push({epoch:y,exampleIndex:x,operations:v.operations}),c+=1,this.currentRound=c;let S=typeof R=="number"&&Number.isFinite(R)?R:0,P=Number.isFinite(u)?u:S,j={...r??{},maxIterations:d};await this.updateOptimizationProgress(c,S,{epoch:y,exampleIndex:x,playbookBullets:this.playbook.stats.bulletCount},"ACE",{epochs:p,totalRounds:d},P,{playbookBullets:this.playbook.stats.bulletCount},void 0,j),this.stats.convergenceInfo.finalImprovement=Math.max(this.stats.convergenceInfo.finalImprovement,S)}}finally{e.setDescription?.(l)}let m=Date.now()-i;this.stats.resourceUsage.totalTime=m,this.stats.convergenceInfo.converged=!0,this.stats.bestScore=Number.isFinite(u)?u:0;let g={playbook:Wt(this.playbook),feedback:[...this.generatorHistory],history:[...this.deltaHistory]},h=new Dr({baseInstruction:a??l,playbook:this.playbook,artifact:g,bestScore:Number.isFinite(u)?u:0,stats:this.stats,optimizerType:"ACE",optimizationTime:m,totalRounds:c,converged:this.stats.convergenceInfo.converged});return{stats:this.stats,bestScore:Number.isFinite(u)?u:0,finalConfiguration:{strategy:"ace",epochs:p},optimizedProgram:h,playbook:Wt(this.playbook),artifact:g}}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,o=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:o,playbook:this.playbook}),a=this.normalizeCuratorOperations(i?.operations),l=r&&n&&r!==n;a.length===0&&l&&(a=this.inferOperationsFromReflection(o)),a=this.resolveCuratorOperationTargets(a,this.playbook,o,t);let u=i||a.length>0?{...i??{},operations:a}:void 0;if(o?.bulletTags)for(let p of o.bulletTags)ta(this.playbook,p.id,p.tag);if(a.length>0){let p=this.collectProtectedBulletIds(a),d=ea(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)),na(this.playbook,this.aceConfig.similarityThreshold)}let c={example:e.example,prediction:e.prediction,score:0,generatorOutput:t,reflection:o,curator:u,timestamp:new Date().toISOString()};return this.generatorHistory.push(c),u}composeInstruction(e,t){return[e.trim(),"",Lr(t)].filter(r=>r.trim().length>0).join(`
516
516
 
@@ -559,7 +559,7 @@ Instruction:`;try{let m=(await He('programSummary?:string "Program context" , da
559
559
  `),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
560
560
  `),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
561
561
  `),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
562
- `),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 o=0,i=0,a=0,l=r;for(let u of l)try{let c=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:c,example:u});if(typeof p=="number"&&!Number.isNaN(p)){o+=p,i++;let d=typeof this.targetScore=="number"?this.targetScore:.5;p>=d&&a++}}catch(c){this.getLogger()?.({name:"Notification",id:"mipro_evaluate",value:typeof c=="string"?c:String(c)})}return this.stats.successfulDemos+=a,i>0?o/i:0}};var jn=class{analyzeMappingDependencies(e,t){if(!e||typeof e!="function")return[];let n=[];try{let r=e.toString(),o=Array.from(r.matchAll(/state\.(\w+)/g));for(let i of o)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,o){typeof o=="string"&&!t.includes(o)&&t.push(o);let i=r[o];return i&&typeof i=="object"?n.createTrackingProxy(i,t):i},has(r,o){return typeof o=="string"&&!t.includes(o)&&t.push(o),o 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 o=Array.from(e.matchAll(/\{\s*(\w+)(?:\s*,\s*(\w+))*\s*\}\s*=\s*state/g));for(let i of o)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 qn(s,e,t){if(!t||t<=0||t>=s.length){let r=s.map((o,i)=>e(o,i));return Promise.all(r)}let n=new Array(s.length);for(let r=0;r<s.length;r+=t){let i=s.slice(r,r+t).map((l,u)=>{let c=r+u;return e(l,c).then(p=>({result:p,originalIndex:c}))}),a=await Promise.all(i);for(let{result:l,originalIndex:u}of a)n[u]=l}return n}var zn=class{steps=[];parallelGroups=[];analyzer=new jn;initialFields=new Set;addExecutionStep(e,t,n,r,o,i,a){let l=[],u=[],c=r||"map";if(t&&n)c="execute",l=this.analyzer.analyzeMappingDependencies(n,t),u=[`${t}Result`];else if(c==="map"&&o)u=this.analyzeMapTransformation(o),l=this.getAllProducedFields();else if(c==="parallel-map"){if(Array.isArray(o)){let d=new Set;for(let m of o)this.analyzeMapTransformation(m).forEach(h=>d.add(h));u=Array.from(d)}else o?u=this.analyzeMapTransformation(o):u=["_parallelMapResult"];l=this.getAllProducedFields()}else if(c==="merge"){if(i?.resultKey)u=[i.resultKey];else{let m=this.analyzeBranchMergeFields();u=m.length>0?m:["_mergedResult"]}e.toString().includes("_parallelResults")?l=["_parallelResults"]:l=this.getAllProducedFields()}else if(c==="parallel")u=["_parallelResults"],l=this.getAllProducedFields();else if(c==="derive")if(a?.outputFieldName&&a?.inputFieldName){u=[a.outputFieldName];let d=o?this.analyzer.analyzeMappingDependencies(o,"derive"):[];l=[a.inputFieldName,...d].filter((m,g,h)=>h.indexOf(m)===g)}else u=["_deriveResult"],l=this.getAllProducedFields();else e.toString().includes("transform(")?(c="map",l=this.getAllProducedFields(),u=["_mapResult"]):e.toString().includes("_parallelResults")&&(u=["_parallelResults"],l=this.getAllProducedFields());for(let d of l)this.getAllProducedFields().includes(d)||this.initialFields.add(d);let p={type:c,nodeName:t,dependencies:l,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),o=e(t,{mainAi:{getOptions:()=>({trace:!1}),forward:()=>Promise.resolve({text:"mock"})},mainOptions:void 0});if(o&&typeof o=="object"&&"then"in o)return this.analyzeStepFunctionSource(e);if(o&&typeof o=="object"&&!Array.isArray(o)){let a=Object.keys(o).filter(l=>!n.includes(l));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 o=n.map(i=>{let a=i.match(/(\w+)\s*:/);return a?a[1]:null}).filter(Boolean);if(o.length>0)return o}let r=t.match(/state\.(\w+)\s*=/g);if(r){let o=r.map(i=>{let a=i.match(/state\.(\w+)\s*=/);return a?a[1]:null}).filter(Boolean);if(o.length>0)return o}}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 o of this.steps){if(e.has(o.stepIndex))continue;if(o.dependencies.length===0||o.dependencies.every(a=>t.has(a))){if(o.type==="merge"&&r.length>0)continue;if(r.push(o),e.add(o.stepIndex),o.type==="merge")break}}if(r.length>0){for(let o of r)o.produces.forEach(i=>t.add(i));this.parallelGroups.push({level:n,steps:r}),n++}else{let o=this.steps.filter(i=>!e.has(i.stepIndex));if(o.length>0){let i=o[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(o,i)=>{let a=await qn(n.steps,async c=>await c.stepFunction(o,i),e);if(a.some(c=>c&&typeof c=="object"&&"_parallelResults"in c)){let c=a.find(p=>p&&typeof p=="object"&&"_parallelResults"in p);return c||o}let u=o;for(let c of a)u={...u,...c};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 Xu=s=>{console.log(s)},Hn=(s,e=!1)=>{if(e)return"[State hidden]";let t={};for(let[n,r]of Object.entries(s))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 o=JSON.stringify(r);o.length>200?t[n]=`${o.substring(0,200)}...`:t[n]=r}else t[n]=r;return JSON.stringify(t,null,2)},Kn=s=>s<1e3?`${s.toFixed(1)}ms`:s<6e4?`${(s/1e3).toFixed(2)}s`:`${(s/6e4).toFixed(2)}min`,Gr=(s=Xu)=>{let e=new Ye,t=e.gray(`${"\u2501".repeat(80)}
562
+ `),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 o=0,i=0,a=0,l=r;for(let u of l)try{let c=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:c,example:u});if(typeof p=="number"&&!Number.isNaN(p)){o+=p,i++;let d=typeof this.targetScore=="number"?this.targetScore:.5;p>=d&&a++}}catch(c){this.getLogger()?.({name:"Notification",id:"mipro_evaluate",value:typeof c=="string"?c:String(c)})}return this.stats.successfulDemos+=a,i>0?o/i:0}};var jn=class{analyzeMappingDependencies(e,t){if(!e||typeof e!="function")return[];let n=[];try{let r=e.toString(),o=Array.from(r.matchAll(/state\.(\w+)/g));for(let i of o)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,o){typeof o=="string"&&!t.includes(o)&&t.push(o);let i=r[o];return i&&typeof i=="object"?n.createTrackingProxy(i,t):i},has(r,o){return typeof o=="string"&&!t.includes(o)&&t.push(o),o 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 o=Array.from(e.matchAll(/\{\s*(\w+)(?:\s*,\s*(\w+))*\s*\}\s*=\s*state/g));for(let i of o)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 qn(s,e,t){if(!t||t<=0||t>=s.length){let r=s.map((o,i)=>e(o,i));return Promise.all(r)}let n=new Array(s.length);for(let r=0;r<s.length;r+=t){let i=s.slice(r,r+t).map((l,u)=>{let c=r+u;return e(l,c).then(p=>({result:p,originalIndex:c}))}),a=await Promise.all(i);for(let{result:l,originalIndex:u}of a)n[u]=l}return n}var zn=class{steps=[];parallelGroups=[];analyzer=new jn;initialFields=new Set;addExecutionStep(e,t,n,r,o,i,a){let l=[],u=[],c=r||"map";if(t&&n)c="execute",l=this.analyzer.analyzeMappingDependencies(n,t),u=[`${t}Result`];else if(c==="map"&&o)u=this.analyzeMapTransformation(o),l=this.getAllProducedFields();else if(c==="parallel-map"){if(Array.isArray(o)){let d=new Set;for(let m of o)this.analyzeMapTransformation(m).forEach(h=>d.add(h));u=Array.from(d)}else o?u=this.analyzeMapTransformation(o):u=["_parallelMapResult"];l=this.getAllProducedFields()}else if(c==="merge"){if(i?.resultKey)u=[i.resultKey];else{let m=this.analyzeBranchMergeFields();u=m.length>0?m:["_mergedResult"]}e.toString().includes("_parallelResults")?l=["_parallelResults"]:l=this.getAllProducedFields()}else if(c==="parallel")u=["_parallelResults"],l=this.getAllProducedFields();else if(c==="derive")if(a?.outputFieldName&&a?.inputFieldName){u=[a.outputFieldName];let d=o?this.analyzer.analyzeMappingDependencies(o,"derive"):[];l=[a.inputFieldName,...d].filter((m,g,h)=>h.indexOf(m)===g)}else u=["_deriveResult"],l=this.getAllProducedFields();else e.toString().includes("transform(")?(c="map",l=this.getAllProducedFields(),u=["_mapResult"]):e.toString().includes("_parallelResults")&&(u=["_parallelResults"],l=this.getAllProducedFields());for(let d of l)this.getAllProducedFields().includes(d)||this.initialFields.add(d);let p={type:c,nodeName:t,dependencies:l,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),o=e(t,{mainAi:{getOptions:()=>({trace:!1}),forward:()=>Promise.resolve({text:"mock"})},mainOptions:void 0});if(o&&typeof o=="object"&&"then"in o)return this.analyzeStepFunctionSource(e);if(o&&typeof o=="object"&&!Array.isArray(o)){let a=Object.keys(o).filter(l=>!n.includes(l));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 o=n.map(i=>{let a=i.match(/(\w+)\s*:/);return a?a[1]:null}).filter(Boolean);if(o.length>0)return o}let r=t.match(/state\.(\w+)\s*=/g);if(r){let o=r.map(i=>{let a=i.match(/state\.(\w+)\s*=/);return a?a[1]:null}).filter(Boolean);if(o.length>0)return o}}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 o of this.steps){if(e.has(o.stepIndex))continue;if(o.dependencies.length===0||o.dependencies.every(a=>t.has(a))){if(o.type==="merge"&&r.length>0)continue;if(r.push(o),e.add(o.stepIndex),o.type==="merge")break}}if(r.length>0){for(let o of r)o.produces.forEach(i=>t.add(i));this.parallelGroups.push({level:n,steps:r}),n++}else{let o=this.steps.filter(i=>!e.has(i.stepIndex));if(o.length>0){let i=o[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(o,i)=>{let a=await qn(n.steps,async c=>await c.stepFunction(o,i),e);if(a.some(c=>c&&typeof c=="object"&&"_parallelResults"in c)){let c=a.find(p=>p&&typeof p=="object"&&"_parallelResults"in p);return c||o}let u=o;for(let c of a)u={...u,...c};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 Qu=s=>{console.log(s)},Hn=(s,e=!1)=>{if(e)return"[State hidden]";let t={};for(let[n,r]of Object.entries(s))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 o=JSON.stringify(r);o.length>200?t[n]=`${o.substring(0,200)}...`:t[n]=r}else t[n]=r;return JSON.stringify(t,null,2)},Kn=s=>s<1e3?`${s.toFixed(1)}ms`:s<6e4?`${(s/1e3).toFixed(2)}s`:`${(s/6e4).toFixed(2)}min`,Gr=(s=Qu)=>{let e=new Ye,t=e.gray(`${"\u2501".repeat(80)}
563
563
  `),n=e.gray(`${"\u2500".repeat(40)}
564
564
  `);return r=>{let o="";switch(r.name){case"FlowStart":o=`
565
565
  ${e.blueBright("\u{1F504} [ AXFLOW START ]")}
@@ -594,7 +594,7 @@ ${e.redBright("\u274C [ AXFLOW ERROR ]")}
594
594
  ${t}`,r.stepIndex!==void 0&&(o+=`${e.white("Step:")} ${e.yellow(r.stepIndex.toString())}`,r.stepType&&(o+=` ${e.gray(`(${r.stepType})`)}`),r.nodeName&&(o+=` ${e.cyan(`Node: ${r.nodeName}`)}`),o+=`
595
595
  `),o+=`${e.white("Error:")} ${e.red(r.error)}
596
596
  `,r.state&&(o+=`${e.white("State:")} ${e.gray(Hn(r.state,!0))}
597
- `),o+=t;break;default:o=e.gray(JSON.stringify(r,null,2))}s(o)}},Zu=(s=Xu)=>{let e="=".repeat(80),t="-".repeat(40);return n=>{let r="";switch(n.name){case"FlowStart":r=`
597
+ `),o+=t;break;default:o=e.gray(JSON.stringify(r,null,2))}s(o)}},Xu=(s=Qu)=>{let e="=".repeat(80),t="-".repeat(40);return n=>{let r="";switch(n.name){case"FlowStart":r=`
598
598
  [ AXFLOW START ]
599
599
  ${e}
600
600
  `,r+=`Input Fields: ${n.inputFields.join(", ")}
@@ -638,7 +638,7 @@ ${e}
638
638
  `),r+=`Error: ${n.error}
639
639
  `,n.state&&(r+=`State: ${Hn(n.state,!0)}
640
640
  `),r+=`${e}
641
- `;break;default:r=JSON.stringify(n,null,2)}s(r)}},ec=Gr(),tc=s=>{let e=new Map;return{logger:s,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 Wn=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(o,i)=>{let a=n?.ai??i.mainAi,l=n?.options??i.mainOptions,u=t(o),c=l?.traceLabel?`Node:${e} (${l.traceLabel})`:`Node:${e}`,p;if("forward"in r&&typeof r.forward=="function")p=await r.forward(a,u,{...l,traceLabel:c});else throw new Error(`Node program for '${e}' does not have a forward method`);return{...o,[`${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}},fs=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(o,i)=>{let a=n?.ai??i.mainAi,l=n?.options??i.mainOptions,u=t(o),c=l?.traceLabel?`Node:${e} (${l.traceLabel})`:`Node:${e}`,p;if("forward"in r&&typeof r.forward=="function")p=await r.forward(a,u,{...l,traceLabel:c});else throw new Error(`Node program for '${e}' does not have a forward method`);return{...o,[`${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 Ur=class s{static _ctorWarned=!1;nodes=new Map;flowDefinition=[];nodeGenerators=new Map;loopStack=[];stepLabels=new Map;branchContext=null;autoParallelConfig;executionPlanner=new zn;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(l=>l.name),o=this.extractInputValues(e),i=et("sha256");i.update(n.hash()??"");let a=l=>{let u=typeof l;if(i.update(`|${u}|`),l==null){i.update("null");return}if(u==="string"||u==="number"||u==="boolean"){i.update(String(l));return}if(Array.isArray(l)){i.update("[");for(let c of l)a(c);i.update("]");return}if(typeof l=="object"&&l!==null&&"mimeType"in l&&"data"in l){let c=l;i.update(c.mimeType??"");let p=et("sha256").update(c.data??"").digest("hex");i.update(p);return}if(typeof l=="object"){let c=l,p=Object.keys(c).sort();for(let d of p)i.update(`{${d}}`),a(c[d]);return}i.update(String(l))};for(let l of r)a(o?.[l]);return i.digest("hex")}async executeStepsWithLogging(e,t,n,r){let o={...t},i=0;for(let a=0;a<e.length;a++){let l=e[a];if(!l)continue;let u=n.mainOptions?.abortSignal;if(u?.aborted)throw new $e("flow-between-steps",u.reason??"Flow aborted between steps");let c=this.getStepType(l,a),p=this.getStepMetadata(l,a),d=Object.keys(o);this.flowLogger&&this.flowLogger({name:"StepStart",timestamp:Date.now(),stepIndex:a,stepType:c,nodeName:p.nodeName,dependencies:p.dependencies,produces:p.produces,state:{...o}});let m=Date.now();this.timingLogger?.startTiming(`step-${a}`);try{o=await l(o,n),i++;let h=this.timingLogger?.endTiming(`step-${a}`)??Date.now()-m,y=Object.keys(o).filter(A=>!d.includes(A)),x;if(c==="execute"&&p.nodeName&&y.length>0){let A=`${p.nodeName}Result`;x=o[A]}this.flowLogger&&this.flowLogger({name:"StepComplete",timestamp:Date.now(),stepIndex:a,stepType:c,nodeName:p.nodeName,executionTime:h,state:{...o},newFields:y,result:x})}catch(g){throw this.flowLogger&&this.flowLogger({name:"FlowError",timestamp:Date.now(),error:g instanceof Error?g.message:String(g),stepIndex:a,stepType:c,nodeName:p.nodeName,state:{...o}}),g}}return{finalState:o,stepsExecuted:i}}getStepType(e,t){let n=this.executionPlanner.getExecutionPlan().steps.find(o=>o.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 o=e.toString();return{nodeName:this.extractNodeNameFromSource(o),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 Ae().input("userInput",Ae.string("User input to the flow")).output("flowOutput",Ae.string("Output from the flow")).build();let t=new Set,n=new Set;for(let c of e.steps)c.produces.forEach(p=>t.add(p)),c.dependencies.forEach(p=>n.add(p));let r=new Set;for(let c of Array.from(n))t.has(c)||r.add(c);let o=new Set,i=e.steps[e.steps.length-1];if(i&&(i.type==="map"||i.type==="merge")){if(i.produces.forEach(c=>{c.startsWith("_")||o.add(c)}),i.type==="merge"&&i.produces.includes("_mergedResult"))for(let c of e.steps)c.type==="execute"&&c.produces.length>0&&c.produces.forEach(p=>o.add(p))}else for(let c of Array.from(t)){let p=!1;for(let d of e.steps)if(d.dependencies.includes(c)){p=!0;break}if(!p)if(c.endsWith("Result")){let d=c.replace("Result",""),m=this.nodeGenerators.get(d);if(m){let h=m.getSignature().getOutputFields();for(let f of h)o.add(f.name)}else o.add(c)}else o.add(c)}if(r.size===0&&o.size===0){let c=[],p=[];for(let[m,g]of Array.from(this.nodeGenerators)){let h=g.getSignature();for(let f of h.getInputFields()){let y=this.toCamelCase(`${m}_${f.name}`);c.push({name:y,type:f.type,description:f.description,isOptional:f.isOptional,isInternal:f.isInternal})}for(let f of h.getOutputFields()){let y=this.toCamelCase(`${m}_${f.name}`);p.push({name:y,type:f.type,description:f.description,isOptional:f.isOptional,isInternal:f.isInternal})}}let d=new Pe;return c.length>0?d.setInputFields(c):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 Pe,l=[];for(let c of Array.from(r))l.push({name:c,type:{name:"string"},description:`Input field: ${c}`});l.length===0&&l.push({name:"userInput",type:{name:"string"},description:"User input to the flow"});let u=[];for(let c of Array.from(o))c.startsWith("_")||u.push({name:c,type:{name:"string"},description:`Output field: ${c}`});return u.length===0&&u.push({name:"flowOutput",type:{name:"string"},description:"Output from the flow"}),a.setInputFields(l),a.setOutputFields(u),a}constructor(e){s._ctorWarned||(console.warn("[AxFlow] new AxFlow() is deprecated. Use flow() factory instead."),s._ctorWarned=!0),this.autoParallelConfig={enabled:e?.autoParallel!==!1,batchSize:e?.batchSize||10},e?.logger?this.flowLogger=e.logger:e?.debug===!0?this.flowLogger=Gr():this.flowLogger=void 0,this.timingLogger=this.flowLogger?tc(this.flowLogger):void 0,(e?.tracer||e?.meter)&&(this.defaultAIOptions={tracer:e.tracer,meter:e.meter})}static create(e){return new s(e)}ensureProgram(){let e=this.inferSignatureFromFlow();if(!this.program){this.program=new Nt(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()}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(`
641
+ `;break;default:r=JSON.stringify(n,null,2)}s(r)}},Zu=Gr(),ec=s=>{let e=new Map;return{logger:s,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 Wn=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(o,i)=>{let a=n?.ai??i.mainAi,l=n?.options??i.mainOptions,u=t(o),c=l?.traceLabel?`Node:${e} (${l.traceLabel})`:`Node:${e}`,p;if("forward"in r&&typeof r.forward=="function")p=await r.forward(a,u,{...l,traceLabel:c});else throw new Error(`Node program for '${e}' does not have a forward method`);return{...o,[`${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}},fs=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(o,i)=>{let a=n?.ai??i.mainAi,l=n?.options??i.mainOptions,u=t(o),c=l?.traceLabel?`Node:${e} (${l.traceLabel})`:`Node:${e}`,p;if("forward"in r&&typeof r.forward=="function")p=await r.forward(a,u,{...l,traceLabel:c});else throw new Error(`Node program for '${e}' does not have a forward method`);return{...o,[`${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 Ur=class s{static _ctorWarned=!1;nodes=new Map;flowDefinition=[];nodeGenerators=new Map;loopStack=[];stepLabels=new Map;branchContext=null;autoParallelConfig;executionPlanner=new zn;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(l=>l.name),o=this.extractInputValues(e),i=et("sha256");i.update(n.hash()??"");let a=l=>{let u=typeof l;if(i.update(`|${u}|`),l==null){i.update("null");return}if(u==="string"||u==="number"||u==="boolean"){i.update(String(l));return}if(Array.isArray(l)){i.update("[");for(let c of l)a(c);i.update("]");return}if(typeof l=="object"&&l!==null&&"mimeType"in l&&"data"in l){let c=l;i.update(c.mimeType??"");let p=et("sha256").update(c.data??"").digest("hex");i.update(p);return}if(typeof l=="object"){let c=l,p=Object.keys(c).sort();for(let d of p)i.update(`{${d}}`),a(c[d]);return}i.update(String(l))};for(let l of r)a(o?.[l]);return i.digest("hex")}async executeStepsWithLogging(e,t,n,r){let o={...t},i=0;for(let a=0;a<e.length;a++){let l=e[a];if(!l)continue;let u=n.mainOptions?.abortSignal;if(u?.aborted)throw new $e("flow-between-steps",u.reason??"Flow aborted between steps");let c=this.getStepType(l,a),p=this.getStepMetadata(l,a),d=Object.keys(o);this.flowLogger&&this.flowLogger({name:"StepStart",timestamp:Date.now(),stepIndex:a,stepType:c,nodeName:p.nodeName,dependencies:p.dependencies,produces:p.produces,state:{...o}});let m=Date.now();this.timingLogger?.startTiming(`step-${a}`);try{o=await l(o,n),i++;let h=this.timingLogger?.endTiming(`step-${a}`)??Date.now()-m,y=Object.keys(o).filter(A=>!d.includes(A)),x;if(c==="execute"&&p.nodeName&&y.length>0){let A=`${p.nodeName}Result`;x=o[A]}this.flowLogger&&this.flowLogger({name:"StepComplete",timestamp:Date.now(),stepIndex:a,stepType:c,nodeName:p.nodeName,executionTime:h,state:{...o},newFields:y,result:x})}catch(g){throw this.flowLogger&&this.flowLogger({name:"FlowError",timestamp:Date.now(),error:g instanceof Error?g.message:String(g),stepIndex:a,stepType:c,nodeName:p.nodeName,state:{...o}}),g}}return{finalState:o,stepsExecuted:i}}getStepType(e,t){let n=this.executionPlanner.getExecutionPlan().steps.find(o=>o.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 o=e.toString();return{nodeName:this.extractNodeNameFromSource(o),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 Ae().input("userInput",Ae.string("User input to the flow")).output("flowOutput",Ae.string("Output from the flow")).build();let t=new Set,n=new Set;for(let c of e.steps)c.produces.forEach(p=>t.add(p)),c.dependencies.forEach(p=>n.add(p));let r=new Set;for(let c of Array.from(n))t.has(c)||r.add(c);let o=new Set,i=e.steps[e.steps.length-1];if(i&&(i.type==="map"||i.type==="merge")){if(i.produces.forEach(c=>{c.startsWith("_")||o.add(c)}),i.type==="merge"&&i.produces.includes("_mergedResult"))for(let c of e.steps)c.type==="execute"&&c.produces.length>0&&c.produces.forEach(p=>o.add(p))}else for(let c of Array.from(t)){let p=!1;for(let d of e.steps)if(d.dependencies.includes(c)){p=!0;break}if(!p)if(c.endsWith("Result")){let d=c.replace("Result",""),m=this.nodeGenerators.get(d);if(m){let h=m.getSignature().getOutputFields();for(let f of h)o.add(f.name)}else o.add(c)}else o.add(c)}if(r.size===0&&o.size===0){let c=[],p=[];for(let[m,g]of Array.from(this.nodeGenerators)){let h=g.getSignature();for(let f of h.getInputFields()){let y=this.toCamelCase(`${m}_${f.name}`);c.push({name:y,type:f.type,description:f.description,isOptional:f.isOptional,isInternal:f.isInternal})}for(let f of h.getOutputFields()){let y=this.toCamelCase(`${m}_${f.name}`);p.push({name:y,type:f.type,description:f.description,isOptional:f.isOptional,isInternal:f.isInternal})}}let d=new Pe;return c.length>0?d.setInputFields(c):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 Pe,l=[];for(let c of Array.from(r))l.push({name:c,type:{name:"string"},description:`Input field: ${c}`});l.length===0&&l.push({name:"userInput",type:{name:"string"},description:"User input to the flow"});let u=[];for(let c of Array.from(o))c.startsWith("_")||u.push({name:c,type:{name:"string"},description:`Output field: ${c}`});return u.length===0&&u.push({name:"flowOutput",type:{name:"string"},description:"Output from the flow"}),a.setInputFields(l),a.setOutputFields(u),a}constructor(e){s._ctorWarned||(console.warn("[AxFlow] new AxFlow() is deprecated. Use flow() factory instead."),s._ctorWarned=!0),this.autoParallelConfig={enabled:e?.autoParallel!==!1,batchSize:e?.batchSize||10},e?.logger?this.flowLogger=e.logger:e?.debug===!0?this.flowLogger=Gr():this.flowLogger=void 0,this.timingLogger=this.flowLogger?ec(this.flowLogger):void 0,(e?.tracer||e?.meter)&&(this.defaultAIOptions={tracer:e.tracer,meter:e.meter})}static create(e){return new s(e)}ensureProgram(){let e=this.inferSignatureFromFlow();if(!this.program){this.program=new Nt(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()}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(`
642
642
  `)[0]||"axFlow")).replace(/\s+/g,"_"),r=this.toCamelCase(n),o=async(i,a)=>{let l=a?.ai;if(!l)throw new Error("AI service is required to run the flow");let u=await this.forward(l,i??{}),c=e.getOutputFields(),p=u??{};return Object.keys(p).map(d=>{let m=c.find(g=>g.name===d);return m&&m.title?`${m.title}: ${p[d]}`:`${d}: ${p[d]}`}).join(`
643
643
  `)};return{name:r,description:e.getDescription()??"Execute this AxFlow",parameters:e.toJSONSchema(),func:o}}getUsage(){let e=[];for(let[t,n]of Array.from(this.nodeUsage))e.push(...n);return Rr(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]=Rr(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??pe.cachingFunction,o=this.getCacheKey(t,r);if(r&&o){let a;try{a=await r(o)}catch{}if(a!==void 0){yield{version:0,index:0,delta:a};return}}let i=await this.forward(e,t,n);if(r&&o)try{await r(o,i)}catch{}yield{version:1,index:0,delta:i}}async forward(e,t,n){let r=n?.cachingFunction??pe.cachingFunction,o=this.getCacheKey(t,r);if(r&&o){let c;try{c=await r(o)}catch{}if(c!==void 0)return c}let i=Date.now();this.timingLogger?.startTiming("flow-execution");let a={},l,u;try{this.resetUsage(),this.resetTraces();let c=this.extractInputValues(t);if(this.nodeGenerators.size>0&&this.ensureProgram(),a={...c},this.flowLogger){let A=this.getExecutionPlan();this.flowLogger({name:"FlowStart",timestamp:i,inputFields:Object.keys(c),totalSteps:A.totalSteps,parallelGroups:A.parallelGroups,maxParallelism:A.maxParallelism,autoParallelEnabled:A.autoParallelEnabled})}let p=n?.tracer??this.defaultAIOptions?.tracer,d=n?.traceContext,m=d;if(p){let A=this.getExecutionPlan(),T=n?.traceLabel?`AxFlow > ${n.traceLabel}`:"AxFlow";l=p.startSpan(T,{kind:Qe.INTERNAL,attributes:{total_steps:A.totalSteps,parallel_groups:A.parallelGroups,max_parallelism:A.maxParallelism,auto_parallel_enabled:A.autoParallelEnabled}});let b=d??Et.active();m=nr.setSpan(b,l)}u=new AbortController,this.activeAbortControllers.add(u),this._stopRequested&&u.abort("Stopped by user (pre-forward)");let g=Ot(n?.abortSignal,n?.abortController?.signal),h=Ot(u.signal,Ot(g,pe.abortSignal)),f={mainAi:e,mainOptions:(()=>{let A={...this.defaultAIOptions??{},...n};return n?.model&&(A.model=String(n.model)),p&&(A.tracer=p),m&&(A.traceContext=m),h&&(A.abortSignal=h),Object.keys(A).length>0?A:void 0})()},y=n?.autoParallel!==!1&&this.autoParallelConfig.enabled,x=0;if(y){this.executionPlanner.setInitialFields(Object.keys(c));let A=this.executionPlanner.createOptimizedExecution(this.autoParallelConfig.batchSize),T=await this.executeStepsWithLogging(A,a,f,!0);a=T.finalState,x=T.stepsExecuted}else{let A=await this.executeStepsWithLogging(this.flowDefinition,a,f,!1);a=A.finalState,x=A.stepsExecuted}if(this.flowLogger){let A=this.timingLogger?.endTiming("flow-execution")??Date.now()-i;this.flowLogger({name:"FlowComplete",timestamp:Date.now(),totalExecutionTime:A,finalState:a,outputFields:Object.keys(a),stepsExecuted:x})}if(r&&o)try{await r(o,a)}catch{}return a}catch(c){throw this.flowLogger&&this.flowLogger({name:"FlowError",timestamp:Date.now(),error:c instanceof Error?c.message:String(c),state:a}),c}finally{l&&l.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 Pe){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=He(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 o=>(await qn(n,async(l,u)=>{let c=l(o);return Promise.resolve(c)},this.autoParallelConfig.batchSize)).reduce((l,u)=>({...l,...u}),o);if(this.branchContext?.currentBranchValue!==void 0){let o=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];o.push(r),this.branchContext.branches.set(this.branchContext.currentBranchValue,o)}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 o=e(r);return Promise.resolve(o)};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 o=async(i,a)=>{let l=n?.ai??a.mainAi,u={...a.mainOptions??{},...n?.options??{}},c=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(l,c,{...u,traceLabel:p}),"getUsage"in r&&typeof r.getUsage=="function"){let m=r.getUsage();if(m&&m.length>0){let g=this.nodeUsage.get(e)||[];this.nodeUsage.set(e,[...g,...m])}}if("getTraces"in r&&typeof r.getTraces=="function"){let m=r.getTraces();if(m&&m.length>0){let g=this.nodeTraces.get(e)||[];this.nodeTraces.set(e,[...g,...m])}}}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(o),this.branchContext.branches.set(this.branchContext.currentBranchValue,i)}else this.flowDefinition.push(o),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(o,e,t);return this.ensureProgram(),this}applyOptimization(e){this.program&&"applyOptimization"in this.program&&this.program.applyOptimization(e);for(let[t,n]of Array.from(this.nodeGenerators))n&&"applyOptimization"in n&&typeof n.applyOptimization=="function"&&n.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 o=e.predicate(n),i=e.branches.get(o);if(this.flowLogger&&this.flowLogger({name:"BranchEvaluation",timestamp:Date.now(),branchValue:o,hasMatchingBranch:!!i,branchStepsCount:i?.length??0}),!i)return n;let a=n;for(let l of i)a=await l(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 o=await qn(e,async(i,a)=>{let l=new Wn(this.nodeGenerators);return await i(l).executeSteps(n,r)},this.autoParallelConfig.batchSize);return{...n,_parallelResults:o}};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 o=i=>{let a=i._parallelResults;if(!Array.isArray(a))throw new Error("No parallel results found for merge");let l=r(...a),u={...i};return delete u._parallelResults,u[n]=l,u};return this.flowDefinition.push(o),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(o,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),o=this.flowDefinition.length;return this.flowDefinition.push(async(i,a)=>{let l=i,u=1,c=`_feedback_${t}_iterations`;for(typeof l[c]!="number"&&(l={...l,[c]:1});e(l)&&u<n;){u++,l={...l,[c]:u};for(let p=r;p<o;p++){let d=this.flowDefinition[p];d&&(l=await d(l,a))}}return l}),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(o=>o,{_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,o=this.flowDefinition.splice(e+1);return this.flowDefinition[e]=async(i,a)=>{let l=i,u=0;for(;n(l)&&u<r;){u++;for(let c of o)l=await c(l,a)}if(u>=r&&n(l))throw new Error(`While loop exceeded maximum iterations (${r}). Consider increasing maxIterations or ensuring the loop condition eventually becomes false.`);return l},this.nodeGenerators.size>0&&this.ensureProgram(),this}end(){return this.endWhile()}derive(e,t,n,r){let o=async i=>{let a=i[t];if(a===void 0)throw new Error(`Input field '${t}' not found in state`);let l;if(Array.isArray(a))if(this.autoParallelConfig.enabled){let u=r?.batchSize||this.autoParallelConfig.batchSize;l=await qn(a,async(c,p)=>n(c,p,i),u)}else l=a.map((u,c)=>n(u,c,i));else l=n(a,void 0,i);return{...i,[e]:l}};if(this.branchContext?.currentBranchValue!==void 0){let i=this.branchContext.branches.get(this.branchContext.currentBranchValue)||[];i.push(o),this.branchContext.branches.set(this.branchContext.currentBranchValue,i)}else this.flowDefinition.push(o),this.autoParallelConfig.enabled&&this.executionPlanner.addExecutionStep(o,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 o=typeof t=="string"?Pe.create(t):t;if(n.prependInputs)for(let i of n.prependInputs)o=o.prependInputField(i.name,i.type);if(n.appendInputs)for(let i of n.appendInputs)o=o.appendInputField(i.name,i.type);if(n.prependOutputs)for(let i of n.prependOutputs)o=o.prependOutputField(i.name,i.type);if(n.appendOutputs)for(let i of n.appendOutputs)o=o.appendOutputField(i.name,i.type);return this.node(e,o)}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 xs(s){return Ur.create(s)}var As=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 o=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:o},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 l=await a.json();return this.containerId=l.Id,l}async findOrCreateContainer({imageName:e,volumes:t=[],doNotPullImage:n,tag:r}){let i=(await this.listContainers(!0)).filter(l=>l.Labels&&l.Labels["com.example.tag"]===r);if(i&&i.length>0){let l=Math.floor(Math.random()*i.length),u=i[l];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=[],o=await this.listContainers(!0),i=e?o.filter(a=>a.Labels["com.example.tag"]===e):o;for(let a of i){if(a.State.Status==="running"){let l=await this.fetchDockerAPI(`/containers/${a.Id}/stop?t=${n}`,{method:"POST"});if(!l.ok){console.warn(`Failed to stop container ${a.Id}: ${l.statusText}`);continue}r.push({Id:a.Id,Action:"stopped"})}if(t){let l=await this.fetchDockerAPI(`/containers/${a.Id}`,{method:"DELETE"});if(!l.ok){console.warn(`Failed to remove container ${a.Id}: ${l.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(),o=await this.fetchDockerAPI(`/exec/${r.Id}/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({Detach:!1,Tty:!1})});if(!o.ok)throw new Error(`Failed to start exec instance: ${o.statusText}`);return await o.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(o=>setTimeout(o,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 ys=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 bs(s){let e=typeof self<"u"?self:globalThis,t=Object.getPrototypeOf(async()=>{}).constructor,n=s.functionRefKey,r="return",o="stdout",i=/^(if|for|while|switch|try|catch|finally|function|class|import|export|throw|return|var|let|const|break|continue|debugger)\b/,a=/^\s*return\s+([^\n;]+?)\s*;?\s*$/,l={network:["fetch","XMLHttpRequest","WebSocket","EventSource"],storage:["indexedDB","caches"],"code-loading":["importScripts"],communication:["BroadcastChannel"],timing:["performance"],workers:["Worker","SharedWorker"]},u=()=>{let w;if(typeof process<"u"&&typeof process.getBuiltinModule=="function"&&(w=process.getBuiltinModule.bind(process)),!w)try{w=new Function('return typeof require==="function"?require:undefined')()}catch{w=void 0}if(!(typeof w=="function"&&typeof process<"u"&&!!process.versions?.node))return{isNodeWorker:!1,parentPort:null};try{return{isNodeWorker:!0,parentPort:w("node:worker_threads").parentPort??null}}catch{return{isNodeWorker:!0,parentPort:null}}},{isNodeWorker:c,parentPort:p}=u(),d=()=>{if(!p&&typeof e.postMessage!="function")throw new Error("Worker transport unavailable: no postMessage channel");return{send:k=>{if(p){p.postMessage(k);return}e.postMessage(k)},setOnMessage:k=>{if(p){p.on("message",C=>k({data:C}));return}e.onmessage=k}}},{send:m,setOnMessage:g}=d(),h=w=>w&&(/\r?\n$/.test(w)?w:`${w}
644
644
  `),f=w=>{let F=w.trim();return F.startsWith("//")||F.startsWith("/*")||F.startsWith("*")},y=w=>{let F=w.length-1;for(;F>=0;){let k=w[F].trim();if(k&&!f(k))break;F-=1}return F},x=w=>{if(!w)return!0;let F=w.split(`
@@ -667,75 +667,65 @@ try { ${w.map(k=>`globalThis[${JSON.stringify(k)}] = ${k};`).join(" ")} } catch
667
667
  `)};D.push(`Caused by: ${z(F.cause,1)}`)}return D.join(`
668
668
  `)},ne=new Map,oe=0,W=r,se=!1,Ie=w=>(...F)=>{let k=++oe;return new Promise((C,D)=>{ne.set(k,{resolve:C,reject:D}),m({type:"fn-call",id:k,name:w,args:F})})},te=w=>{if(!w||typeof w!="object")return w;if(Array.isArray(w)){for(let k=0;k<w.length;k+=1)w[k]=te(w[k]);return w}let F=w;if(n in F){let k=F[n];return typeof k=="string"?Ie(k):void 0}for(let[k,C]of Object.entries(F))F[k]=te(C);return w},he=w=>{if(w.globals&&typeof w.globals=="object")for(let[F,k]of Object.entries(w.globals))e[F]=te(k);if(Array.isArray(w.fnNames))for(let F of w.fnNames)typeof F=="string"&&(e[F]=Ie(F))},ve=async w=>{let F=h(w),k=[];try{k=_(w)}catch{k=[]}let C=M(k),D=F;try{D=R(F)}catch{D=F}let z=D;if(C){let H=D.lastIndexOf(`
669
669
  return (`);H!==-1?z=D.slice(0,H)+C+D.slice(H):z=D+C}let q=b(z)?z:b(D)?D:F;return await new t(q)()},we=w=>{let F=O(w),k=[];try{k=_(w)}catch{k=[]}let C=M(k),D=C?F+C:F;return(0,eval)(D)},Me=(w,F)=>{if(W!==o)return w;let k=F.join(`
670
- `).trim();return k||w};g(async w=>{let F=w.data;if(!F||typeof F!="object"||typeof F.type!="string")return;if(F.type==="init"){W=F.outputMode===o?o:r,se=F.captureConsole!==void 0?!!F.captureConsole:W===o;let q=F.allowUnsafeNodeHostAccess===!0;he(F),E(F.permissions),$(q);return}if(F.type==="fn-result"){if(typeof F.id!="number")return;let q=ne.get(F.id);q&&(ne.delete(F.id),F.error!==void 0?q.reject(j(F.error)):q.resolve(F.value));return}if(F.type!=="execute"||typeof F.id!="number"||typeof F.code!="string")return;let k=F.id,C=F.code,{output:D,cleanup:z}=I();try{let q=/\bawait\b/.test(C)?await ve(C):we(C),ee=Me(q,D);try{m({type:"result",id:k,value:ee})}catch{m({type:"result",id:k,value:String(ee)})}}catch(q){N(q)?m({type:"result",id:k,value:re(q)}):m({type:"result",id:k,error:P(q)})}finally{z()}})}var oa=4,nc=16,sa="__ax_rlm_fn_ref__",ia=16;function rc(){let s={functionRefKey:sa,maxErrorCauseDepth:ia},e=`(${bs.toString()})(${JSON.stringify(s)});
670
+ `).trim();return k||w};g(async w=>{let F=w.data;if(!F||typeof F!="object"||typeof F.type!="string")return;if(F.type==="init"){W=F.outputMode===o?o:r,se=F.captureConsole!==void 0?!!F.captureConsole:W===o;let q=F.allowUnsafeNodeHostAccess===!0;he(F),E(F.permissions),$(q);return}if(F.type==="fn-result"){if(typeof F.id!="number")return;let q=ne.get(F.id);q&&(ne.delete(F.id),F.error!==void 0?q.reject(j(F.error)):q.resolve(F.value));return}if(F.type!=="execute"||typeof F.id!="number"||typeof F.code!="string")return;let k=F.id,C=F.code,{output:D,cleanup:z}=I();try{let q=/\bawait\b/.test(C)?await ve(C):we(C),ee=Me(q,D);try{m({type:"result",id:k,value:ee})}catch{m({type:"result",id:k,value:String(ee)})}}catch(q){N(q)?m({type:"result",id:k,value:re(q)}):m({type:"result",id:k,error:P(q)})}finally{z()}})}var oa=4,tc=16,sa="__ax_rlm_fn_ref__",ia=16;function nc(){let s={functionRefKey:sa,maxErrorCauseDepth:ia},e=`(${bs.toString()})(${JSON.stringify(s)});
671
671
  `,t="";return e.includes("__name")&&(t+=`var __name=(fn,_n)=>fn;
672
- `),t?`${t}${e}`:e}var $d=()=>typeof Worker<"u"&&typeof Blob<"u"&&typeof URL<"u"&&typeof URL.createObjectURL=="function",Is=()=>typeof process<"u"&&!!process.versions?.node,Nd=()=>!!globalThis.Deno?.version?.deno,Ld=()=>globalThis.Deno?.version?.deno??null,Dd=s=>{let e=/^(\d+)\.(\d+)\.(\d+)$/.exec(s.trim());return e?{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3])}:null},oc=s=>Number.isFinite(s)?Math.max(1,Math.min(nc,Math.floor(s))):oa,Gd=()=>{if(!Is())return null;let e=globalThis.process?.getBuiltinModule;if(typeof e!="function")return null;let n=e("node:os")?.availableParallelism;if(typeof n!="function")return null;let r=n();return Number.isFinite(r)&&r>0?r:null},Ud=s=>{if(s!==void 0)return oc(s);let e=Gd();return e?oc(Math.ceil(e/2)):oa},Bd=s=>s?.debugNodeWorkerPool?!0:(globalThis.process?.env??{}).AX_RLM_DEBUG_NODE_POOL==="1",jd=s=>{let e=new Set(s),t={};return e.has("network")&&(t.net=!0),Object.keys(t).length>0?t:"none"},qd=(s,e)=>{let t=Ld(),n=t?Dd(t):null;if(n?n.major>=1:!0)try{return new Worker(s,{type:"module",deno:{permissions:jd(e)}})}catch{}return new Worker(s,{type:"module"})},zd=(s,e)=>{let t=new Blob([s],{type:"application/javascript"}),n=URL.createObjectURL(t),r=Nd()?qd(n,e):new Worker(n),o=!1,i=()=>{o||(URL.revokeObjectURL(n),o=!0)},a={postMessage:l=>r.postMessage(l),terminate:()=>{r.terminate(),i()},onmessage:null,onerror:null};return r.onmessage=l=>{a.onmessage?.({data:l.data})},r.onerror=l=>{a.onerror?.(new Error(l.message||"Worker error"))},a},la=async s=>{let e="node:worker_threads",{Worker:t}=await import(e),n=new t(s,{eval:!0}),r=null,o=null,i=!1;n.on("error",l=>{o?o(l):r=l}),n.on("exit",l=>{if(i=!0,l!==0&&!r){let u=new Error(`Worker exited with code ${l}`);o?o(u):r=u}}),n.on("message",l=>{a.onmessage?.({data:l})});let a={postMessage:l=>n.postMessage(l),terminate:()=>{n.terminate()},onmessage:null,get onerror(){return o},set onerror(l){if(o=l,l&&r){let u=r;r=null,l(u)}},get exited(){return i}};return a},ua=class{source;maxSize;idle=[];pendingCreates=0;constructor(e,t){this.source=e,this.maxSize=t}warm(){if(Is())for(;this.idle.length+this.pendingCreates<this.maxSize;)this.pendingCreates+=1,la(this.source).then(e=>{e.onmessage=null,e.onerror=null,this.idle.push(e)}).catch(()=>{}).finally(()=>{this.pendingCreates-=1})}async acquire(){for(;this.idle.length>0;){let e=this.idle.pop();if(!e.exited)return this.warm(),e}return this.warm(),la(this.source)}release(e){e.onmessage=null,e.onerror=null,e.terminate(),this.warm()}},sc=new Map,Hd=(s,e)=>`${e}:${s}`,Kd=(s,e)=>{let t=Hd(s,e),n=sc.get(t);if(n)return n;let r=new ua(s,e);return sc.set(t,r),r},Wd=s=>{let e={},t=new Map,n=0,r=new WeakMap,o=(i,a)=>{if(typeof i=="function"){let d=`fn_${++n}_${a||"root"}`;return t.set(d,i),{[sa]:d}}if(!i||typeof i!="object")return i;if(r.has(i))return r.get(i);if(Array.isArray(i)){let d=[];r.set(i,d);for(let m=0;m<i.length;m+=1)d[m]=o(i[m],`${a}[${m}]`);return d}let l=Object.getPrototypeOf(i);if(!(l===Object.prototype||l===null))return i;let c=i,p={};r.set(i,p);for(let[d,m]of Object.entries(c))p[d]=o(m,a?`${a}.${d}`:d);return p};if(s)for(let[i,a]of Object.entries(s))e[i]=o(a,i);return{serializableGlobals:e,fnMap:t}},Vd=s=>{if(typeof structuredClone=="function")try{structuredClone(s)}catch(e){let t=e instanceof Error?e.message:String(e);throw new Error(`RLM globals must be structured-cloneable: ${t}`)}};function aa(s){if(s==null||typeof s!="object")return String(s);try{return JSON.stringify(s,null,2)}catch{return String(s)}}function ic(s,e=ia,t=0,n=new Set){if(t>e)return{name:"Error",message:"[cause chain truncated]"};if(s!==null&&typeof s=="object"){if(n.has(s))return{name:"Error",message:"[circular]"};n.add(s)}let r=s!==null&&typeof s=="object"&&s.name!=null?String(s.name):"Error",o=s!==null&&typeof s=="object"&&s.message!=null?String(s.message):aa(s),i=s!==null&&typeof s=="object"&&typeof s.stack=="string"?s.stack:void 0,a,l=s;if(l&&typeof l=="object"&&l.cause!==void 0&&t<e)try{let p=l.cause;p instanceof Error||p!==null&&typeof p=="object"&&("message"in p||"name"in p)?a=ic(p,e,t+1,n):a={name:"Error",message:aa(p)}}catch{a={name:"Error",message:aa(l.cause)}}let u={name:r,message:o};i!==void 0&&(u.stack=i),a!==void 0&&(u.cause=a);let c=s;if(c&&typeof c=="object"&&"data"in c&&c.data!==void 0)try{typeof structuredClone=="function"?u.data=structuredClone(c.data):u.data=c.data}catch{}return u}function ac(s){if(typeof s=="string")return new Error(s);if(!s||typeof s!="object")return new Error(String(s));let e=s.message!=null?String(s.message):"Unknown error",t=new Error(e);return t.name=s.name!=null?String(s.name):"Error",typeof s.stack=="string"&&(t.stack=s.stack),s.cause!==void 0&&(t.cause=ac(s.cause)),s.data!==void 0&&(t.data=s.data),t}var ca=(i=>(i.NETWORK="network",i.STORAGE="storage",i.CODE_LOADING="code-loading",i.COMMUNICATION="communication",i.TIMING="timing",i.WORKERS="workers",i))(ca||{}),Vt=class{language="JavaScript";timeout;permissions;allowUnsafeNodeHostAccess;nodeWorkerPoolSize;debugNodeWorkerPool;outputMode;captureConsole;constructor(e){this.timeout=e?.timeout??3e4,this.permissions=e?.permissions??[],this.allowUnsafeNodeHostAccess=e?.allowUnsafeNodeHostAccess??!1,this.outputMode=e?.outputMode??"stdout",this.captureConsole=e?.captureConsole??this.outputMode==="stdout",this.nodeWorkerPoolSize=Ud(e?.nodeWorkerPoolSize),this.debugNodeWorkerPool=Bd(e)}getUsageInstructions(){return["Don't wrap async code in (async()=>{ ... })() \u2014 the runtime automatically handles async execution.","State is session-scoped: all top-level declarations (`var`, `let`, `const`) persist across calls.","Bare assignment (e.g. `x = 1`) also persists via `globalThis`.",...this.outputMode==="stdout"?["Use `console.log(...)` output is captured as the execution result so use it to inspect intermediate values between steps instead of `return`."]:["Use `return` or a trailing expression to produce the execution result."]].map(t=>`- ${t}`).join(`
673
- `)}createSession(e){let t=rc(),n=Is()?Kd(t,this.nodeWorkerPoolSize):null;n&&this.debugNodeWorkerPool&&console.debug(`[AxJSRuntime] Node worker pool size: ${this.nodeWorkerPoolSize}`),n?.warm();let r=null,o=null,i=null,a=!1,l=this.timeout,{serializableGlobals:u,fnMap:c}=Wd(e);Vd(u);let p=new Map,d=0,m=y=>{let x=y.data;if(!x||typeof x!="object"||!("type"in x)||x.type===void 0)return;let A=x;if(A.type==="result"){if(typeof A.id!="number")return;let T=p.get(A.id);T&&(p.delete(A.id),A.error!==void 0?T.reject(ac(A.error)):T.resolve(A.value));return}if(A.type==="fn-call"){if(typeof A.id!="number"||typeof A.name!="string")return;let T=c.get(A.name);if(!T){r?.postMessage({type:"fn-result",id:A.id,error:`Function "${A.name}" not found`});return}Promise.resolve().then(()=>T(...A.args??[])).then(b=>{r?.postMessage({type:"fn-result",id:A.id,value:b})}).catch(b=>{r?.postMessage({type:"fn-result",id:A.id,error:ic(b)})})}},g=()=>{a=!0,r&&(o==="node"&&n?n.release(r):r.terminate(),r=null,o=null);for(let y of p.values())y.reject(new Error("Worker terminated"));p.clear()},h=y=>{r&&(o==="node"&&n?n.release(r):r.terminate(),r=null,o=null);for(let x of p.values())x.reject(y);p.clear()};if($d()){r=zd(t,this.permissions),o="browser",r.onmessage=m,r.onerror=h;try{r.postMessage({type:"init",globals:u,fnNames:[...c.keys()],permissions:[...this.permissions],allowUnsafeNodeHostAccess:this.allowUnsafeNodeHostAccess,outputMode:this.outputMode,captureConsole:this.captureConsole})}catch(y){throw g(),y}}let f=async()=>{if(!r){if(a)throw new Error("Session is closed");if(!Is())throw new Error("No worker runtime available: Web Worker is unavailable in this environment");i||(i=(n?n.acquire():la(t)).then(y=>{if(a)throw n?n.release(y):y.terminate(),new Error("Session is closed");r=y,o="node",r.onmessage=m,r.onerror=h;try{r.postMessage({type:"init",globals:u,fnNames:[...c.keys()],permissions:[...this.permissions],allowUnsafeNodeHostAccess:this.allowUnsafeNodeHostAccess,outputMode:this.outputMode,captureConsole:this.captureConsole})}catch(x){throw n?n.release(y):y.terminate(),r=null,o=null,x}})),await i}};return{execute(y,x){if(a)return Promise.reject(new Error("Session is closed"));if(/['"]use strict['"]/.test(y))return Promise.resolve('[ERROR] "use strict" is not allowed in the runtime session. Remove it and try again.');let A=x?.reservedNames;if(A){for(let R of A)if(new RegExp(`(?:^|[;\\n])\\s*(?:(?:var|let|const)\\s+)?${R}\\s*=`).test(y))return Promise.resolve(`[ERROR] Cannot reassign reserved variable '${R}'. Use a different variable name.`)}let T=x?.signal;if(T?.aborted)return Promise.reject(new Error(`Aborted: ${T.reason??"execution aborted"}`));let b=++d;return new Promise((R,O)=>{let _=setTimeout(()=>{p.delete(b),g(),O(new Error("Execution timed out"))},l),M=R,G=O;p.set(b,{resolve:L=>{clearTimeout(_),B(),M(L)},reject:L=>{clearTimeout(_),B(),G(L)}});let B=()=>{};if(T){let L=()=>{clearTimeout(_),p.delete(b),g(),G(new Error(`Aborted: ${T.reason??"execution aborted"}`))};T.addEventListener("abort",L,{once:!0}),B=()=>{T.removeEventListener("abort",L)}}f().then(()=>{if(!r)throw new Error("Worker unavailable");r.postMessage({type:"execute",id:b,code:y})}).catch(L=>{p.get(b)&&(p.delete(b),clearTimeout(_),B(),G(L))})})},close(){g()}}}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 lc(s){return new Vt(s)}var Cs=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(o=>o.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 o=>{let{result:i}=await this.sendRequest("tools/call",{name:t.name,arguments:o});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(o=>o.name===t),r=e.arguments?.length?{type:"object",properties:Object.fromEntries(e.arguments.map(o=>[o.name,{type:"string",description:o.description??""}])),required:e.arguments.filter(o=>o.required).map(o=>o.name)}:void 0;return{name:n?.updates.name??t,description:n?.updates.description??e.description??`Get the ${e.name} prompt`,parameters:r,func:async o=>{let i=await this.getPrompt(e.name,o);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(o=>o.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(o=>[o,{type:"string",description:`Value for ${o}`}])),required:r}:void 0,func:async o=>{let i=this.expandUriTemplate(e.uriTemplate,o??{}),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(`
672
+ `),t?`${t}${e}`:e}var $d=()=>typeof Worker<"u"&&typeof Blob<"u"&&typeof URL<"u"&&typeof URL.createObjectURL=="function",Is=()=>typeof process<"u"&&!!process.versions?.node,Nd=()=>!!globalThis.Deno?.version?.deno,Ld=()=>globalThis.Deno?.version?.deno??null,Dd=s=>{let e=/^(\d+)\.(\d+)\.(\d+)$/.exec(s.trim());return e?{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3])}:null},rc=s=>Number.isFinite(s)?Math.max(1,Math.min(tc,Math.floor(s))):oa,Gd=()=>{if(!Is())return null;let e=globalThis.process?.getBuiltinModule;if(typeof e!="function")return null;let n=e("node:os")?.availableParallelism;if(typeof n!="function")return null;let r=n();return Number.isFinite(r)&&r>0?r:null},Ud=s=>{if(s!==void 0)return rc(s);let e=Gd();return e?rc(Math.ceil(e/2)):oa},Bd=s=>s?.debugNodeWorkerPool?!0:(globalThis.process?.env??{}).AX_RLM_DEBUG_NODE_POOL==="1",jd=s=>{let e=new Set(s),t={};return e.has("network")&&(t.net=!0),Object.keys(t).length>0?t:"none"},qd=(s,e)=>{let t=Ld(),n=t?Dd(t):null;if(n?n.major>=1:!0)try{return new Worker(s,{type:"module",deno:{permissions:jd(e)}})}catch{}return new Worker(s,{type:"module"})},zd=(s,e)=>{let t=new Blob([s],{type:"application/javascript"}),n=URL.createObjectURL(t),r=Nd()?qd(n,e):new Worker(n),o=!1,i=()=>{o||(URL.revokeObjectURL(n),o=!0)},a={postMessage:l=>r.postMessage(l),terminate:()=>{r.terminate(),i()},onmessage:null,onerror:null};return r.onmessage=l=>{a.onmessage?.({data:l.data})},r.onerror=l=>{a.onerror?.(new Error(l.message||"Worker error"))},a},la=async s=>{let e="node:worker_threads",{Worker:t}=await import(e),n=new t(s,{eval:!0}),r=null,o=null,i=!1;n.on("error",l=>{o?o(l):r=l}),n.on("exit",l=>{if(i=!0,l!==0&&!r){let u=new Error(`Worker exited with code ${l}`);o?o(u):r=u}}),n.on("message",l=>{a.onmessage?.({data:l})});let a={postMessage:l=>n.postMessage(l),terminate:()=>{n.terminate()},onmessage:null,get onerror(){return o},set onerror(l){if(o=l,l&&r){let u=r;r=null,l(u)}},get exited(){return i}};return a},ua=class{source;maxSize;idle=[];pendingCreates=0;constructor(e,t){this.source=e,this.maxSize=t}warm(){if(Is())for(;this.idle.length+this.pendingCreates<this.maxSize;)this.pendingCreates+=1,la(this.source).then(e=>{e.onmessage=null,e.onerror=null,this.idle.push(e)}).catch(()=>{}).finally(()=>{this.pendingCreates-=1})}async acquire(){for(;this.idle.length>0;){let e=this.idle.pop();if(!e.exited)return this.warm(),e}return this.warm(),la(this.source)}release(e){e.onmessage=null,e.onerror=null,e.terminate(),this.warm()}},oc=new Map,Hd=(s,e)=>`${e}:${s}`,Kd=(s,e)=>{let t=Hd(s,e),n=oc.get(t);if(n)return n;let r=new ua(s,e);return oc.set(t,r),r},Wd=s=>{let e={},t=new Map,n=0,r=new WeakMap,o=(i,a)=>{if(typeof i=="function"){let d=`fn_${++n}_${a||"root"}`;return t.set(d,i),{[sa]:d}}if(!i||typeof i!="object")return i;if(r.has(i))return r.get(i);if(Array.isArray(i)){let d=[];r.set(i,d);for(let m=0;m<i.length;m+=1)d[m]=o(i[m],`${a}[${m}]`);return d}let l=Object.getPrototypeOf(i);if(!(l===Object.prototype||l===null))return i;let c=i,p={};r.set(i,p);for(let[d,m]of Object.entries(c))p[d]=o(m,a?`${a}.${d}`:d);return p};if(s)for(let[i,a]of Object.entries(s))e[i]=o(a,i);return{serializableGlobals:e,fnMap:t}},Vd=s=>{if(typeof structuredClone=="function")try{structuredClone(s)}catch(e){let t=e instanceof Error?e.message:String(e);throw new Error(`RLM globals must be structured-cloneable: ${t}`)}};function aa(s){if(s==null||typeof s!="object")return String(s);try{return JSON.stringify(s,null,2)}catch{return String(s)}}function sc(s,e=ia,t=0,n=new Set){if(t>e)return{name:"Error",message:"[cause chain truncated]"};if(s!==null&&typeof s=="object"){if(n.has(s))return{name:"Error",message:"[circular]"};n.add(s)}let r=s!==null&&typeof s=="object"&&s.name!=null?String(s.name):"Error",o=s!==null&&typeof s=="object"&&s.message!=null?String(s.message):aa(s),i=s!==null&&typeof s=="object"&&typeof s.stack=="string"?s.stack:void 0,a,l=s;if(l&&typeof l=="object"&&l.cause!==void 0&&t<e)try{let p=l.cause;p instanceof Error||p!==null&&typeof p=="object"&&("message"in p||"name"in p)?a=sc(p,e,t+1,n):a={name:"Error",message:aa(p)}}catch{a={name:"Error",message:aa(l.cause)}}let u={name:r,message:o};i!==void 0&&(u.stack=i),a!==void 0&&(u.cause=a);let c=s;if(c&&typeof c=="object"&&"data"in c&&c.data!==void 0)try{typeof structuredClone=="function"?u.data=structuredClone(c.data):u.data=c.data}catch{}return u}function ic(s){if(typeof s=="string")return new Error(s);if(!s||typeof s!="object")return new Error(String(s));let e=s.message!=null?String(s.message):"Unknown error",t=new Error(e);return t.name=s.name!=null?String(s.name):"Error",typeof s.stack=="string"&&(t.stack=s.stack),s.cause!==void 0&&(t.cause=ic(s.cause)),s.data!==void 0&&(t.data=s.data),t}var ca=(i=>(i.NETWORK="network",i.STORAGE="storage",i.CODE_LOADING="code-loading",i.COMMUNICATION="communication",i.TIMING="timing",i.WORKERS="workers",i))(ca||{}),Vt=class{language="JavaScript";timeout;permissions;allowUnsafeNodeHostAccess;nodeWorkerPoolSize;debugNodeWorkerPool;outputMode;captureConsole;constructor(e){this.timeout=e?.timeout??3e4,this.permissions=e?.permissions??[],this.allowUnsafeNodeHostAccess=e?.allowUnsafeNodeHostAccess??!1,this.outputMode=e?.outputMode??"stdout",this.captureConsole=e?.captureConsole??this.outputMode==="stdout",this.nodeWorkerPoolSize=Ud(e?.nodeWorkerPoolSize),this.debugNodeWorkerPool=Bd(e)}getUsageInstructions(){return["Don't wrap async code in (async()=>{ ... })() \u2014 the runtime automatically handles async execution.","State is session-scoped: all top-level declarations (`var`, `let`, `const`) persist across calls.","Bare assignment (e.g. `x = 1`) also persists via `globalThis`.",...this.outputMode==="stdout"?["Use `console.log(...)` output is captured as the execution result so use it to inspect intermediate values between steps instead of `return`."]:["Use `return` or a trailing expression to produce the execution result."]].map(t=>`- ${t}`).join(`
673
+ `)}createSession(e){let t=nc(),n=Is()?Kd(t,this.nodeWorkerPoolSize):null;n&&this.debugNodeWorkerPool&&console.debug(`[AxJSRuntime] Node worker pool size: ${this.nodeWorkerPoolSize}`),n?.warm();let r=null,o=null,i=null,a=!1,l=this.timeout,{serializableGlobals:u,fnMap:c}=Wd(e);Vd(u);let p=new Map,d=0,m=y=>{let x=y.data;if(!x||typeof x!="object"||!("type"in x)||x.type===void 0)return;let A=x;if(A.type==="result"){if(typeof A.id!="number")return;let T=p.get(A.id);T&&(p.delete(A.id),A.error!==void 0?T.reject(ic(A.error)):T.resolve(A.value));return}if(A.type==="fn-call"){if(typeof A.id!="number"||typeof A.name!="string")return;let T=c.get(A.name);if(!T){r?.postMessage({type:"fn-result",id:A.id,error:`Function "${A.name}" not found`});return}Promise.resolve().then(()=>T(...A.args??[])).then(b=>{r?.postMessage({type:"fn-result",id:A.id,value:b})}).catch(b=>{r?.postMessage({type:"fn-result",id:A.id,error:sc(b)})})}},g=()=>{a=!0,r&&(o==="node"&&n?n.release(r):r.terminate(),r=null,o=null);for(let y of p.values())y.reject(new Error("Worker terminated"));p.clear()},h=y=>{r&&(o==="node"&&n?n.release(r):r.terminate(),r=null,o=null);for(let x of p.values())x.reject(y);p.clear()};if($d()){r=zd(t,this.permissions),o="browser",r.onmessage=m,r.onerror=h;try{r.postMessage({type:"init",globals:u,fnNames:[...c.keys()],permissions:[...this.permissions],allowUnsafeNodeHostAccess:this.allowUnsafeNodeHostAccess,outputMode:this.outputMode,captureConsole:this.captureConsole})}catch(y){throw g(),y}}let f=async()=>{if(!r){if(a)throw new Error("Session is closed");if(!Is())throw new Error("No worker runtime available: Web Worker is unavailable in this environment");i||(i=(n?n.acquire():la(t)).then(y=>{if(a)throw n?n.release(y):y.terminate(),new Error("Session is closed");r=y,o="node",r.onmessage=m,r.onerror=h;try{r.postMessage({type:"init",globals:u,fnNames:[...c.keys()],permissions:[...this.permissions],allowUnsafeNodeHostAccess:this.allowUnsafeNodeHostAccess,outputMode:this.outputMode,captureConsole:this.captureConsole})}catch(x){throw n?n.release(y):y.terminate(),r=null,o=null,x}})),await i}};return{execute(y,x){if(a)return Promise.reject(new Error("Session is closed"));if(/['"]use strict['"]/.test(y))return Promise.resolve('[ERROR] "use strict" is not allowed in the runtime session. Remove it and try again.');let A=x?.reservedNames;if(A){for(let R of A)if(new RegExp(`(?:^|[;\\n])\\s*(?:(?:var|let|const)\\s+)?${R}\\s*=`).test(y))return Promise.resolve(`[ERROR] Cannot reassign reserved variable '${R}'. Use a different variable name.`)}let T=x?.signal;if(T?.aborted)return Promise.reject(new Error(`Aborted: ${T.reason??"execution aborted"}`));let b=++d;return new Promise((R,O)=>{let _=setTimeout(()=>{p.delete(b),g(),O(new Error("Execution timed out"))},l),M=R,G=O;p.set(b,{resolve:L=>{clearTimeout(_),B(),M(L)},reject:L=>{clearTimeout(_),B(),G(L)}});let B=()=>{};if(T){let L=()=>{clearTimeout(_),p.delete(b),g(),G(new Error(`Aborted: ${T.reason??"execution aborted"}`))};T.addEventListener("abort",L,{once:!0}),B=()=>{T.removeEventListener("abort",L)}}f().then(()=>{if(!r)throw new Error("Worker unavailable");r.postMessage({type:"execute",id:b,code:y})}).catch(L=>{p.get(b)&&(p.delete(b),clearTimeout(_),B(),G(L))})})},close(){g()}}}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 ac(s){return new Vt(s)}var Cs=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(o=>o.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 o=>{let{result:i}=await this.sendRequest("tools/call",{name:t.name,arguments:o});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(o=>o.name===t),r=e.arguments?.length?{type:"object",properties:Object.fromEntries(e.arguments.map(o=>[o.name,{type:"string",description:o.description??""}])),required:e.arguments.filter(o=>o.required).map(o=>o.name)}:void 0;return{name:n?.updates.name??t,description:n?.updates.description??e.description??`Get the ${e.name} prompt`,parameters:r,func:async o=>{let i=await this.getPrompt(e.name,o);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(o=>o.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(o=>[o,{type:"string",description:`Value for ${o}`}])),required:r}:void 0,func:async o=>{let i=this.expandUriTemplate(e.uriTemplate,o??{}),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(`
674
674
 
675
675
  `)}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(`
676
- `)}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:o}=r;if(typeof o!="object"||o===null||Object.keys(o).length!==0)throw new Error(`Unexpected ping response: ${JSON.stringify(o)}`)}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=je(),r={jsonrpc:"2.0",id:n,method:e,params:t},o=new Promise((a,l)=>{this.activeRequests.set(n,{reject:l}),this.transport.send(r).then(u=>{if(this.activeRequests.delete(n),u!==null&&typeof u=="object"&&"error"in u){let c=u;l(new Error(`RPC Error ${c.error.code}: ${c.error.message}`))}else u!==null&&typeof u=="object"&&"result"in u?a({result:u.result}):l(new Error("Invalid response no result or error"))}).catch(u=>{this.activeRequests.delete(n),l(u)})}),{result:i}=await o;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 o={name:"Notification",id:"mcp_notification",value:`Sending notification: ${JSON.stringify(n,null,2)}`};this.logger(o)}await this.transport.sendNotification(n)}};function uc(s){if(typeof Buffer<"u")return Buffer.from(s).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"");let e="";for(let n=0;n<s.length;n++)e+=String.fromCharCode(s[n]);return(typeof btoa=="function"?btoa(e):"").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}async function cc(s){let t=new TextEncoder().encode(s),n=await ga().subtle.digest("SHA-256",t);return new Uint8Array(n)}async function pa(){return uc(await cc(je()+Math.random().toString(36)))}async function pc(s){return uc(await cc(s))}async function Ts(s,e){let t=await fetch(s,{headers:e});if(!t.ok)throw new Error(`HTTP ${t.status} fetching ${s}: ${t.statusText}`);return await t.json()}function dc(s){let e=new URLSearchParams;for(let[t,n]of Object.entries(s))n!==void 0&&e.set(t,n);return e.toString()}function Br(s){return s.endsWith("/")?s.slice(0,-1):s}function Jd(s){if(!s)return null;let e=s.match(/resource_metadata\s*=\s*"([^"]+)"/i)||s.match(/resource_metadata\s*=\s*([^,\s]+)/i);return e?e[1]:null}async function mc(s,e){let t=Jd(e);if(t){let a=await Ts(t),l=Br(new URL(s).toString().split("?")[0]),u=Br(a.resource??"");if(!u||u!==l)throw new Error(`Protected resource metadata 'resource' mismatch. Expected ${l} but got ${u}`);let c=Array.isArray(a.authorization_servers)?a.authorization_servers:[];if(c.length===0)throw new Error("No authorization_servers advertised by protected resource");return{resource:l,issuers:c}}let n=new URL(s),r=n.pathname.replace(/\/+$/,""),o=[];r&&r!=="/"&&o.push({url:`${n.origin}/.well-known/oauth-protected-resource${r}`,expected:`${n.origin}${r}`}),o.push({url:`${n.origin}/.well-known/oauth-protected-resource`,expected:`${n.origin}`});let i;for(let a of o)try{let l=await Ts(a.url),u=Br(l.resource??""),c=Br(a.expected);if(!u||u!==c)throw new Error(`Protected resource metadata 'resource' mismatch. Expected ${c} but got ${u}`);let p=Array.isArray(l.authorization_servers)?l.authorization_servers:[];if(p.length===0)throw new Error("No authorization_servers advertised by protected resource");return{resource:c,issuers:p}}catch(l){i=l}throw new Error(`Failed to resolve protected resource metadata via well-known endpoints. Last error: ${String(i)}`)}async function gc(s){let e=new URL(s),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 o of n)try{let i=await Ts(o);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 ${s}: ${String(r)}`)}var Vn=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 gc(e);return this.asMetaCache.set(e,t),t}async ensureAccessToken(e){if(!this.oauth)return null;let{resource:t,issuers:n}=await mc(e.requestedUrl,e.wwwAuthenticate),r=this.oauth.selectAuthorizationServer?await this.oauth.selectAuthorizationServer(n,{}):n[0],o=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:o,resource:t};if(i?.refreshToken)try{let x=await this.refreshToken(i.refreshToken,t,r,o);return await this.setStoredToken(t,r,x),{token:x,issuer:r,asMeta:o,resource:t}}catch{await this.clearStoredToken(t,r)}let a=this.oauth.redirectUri??"http://localhost:8787/callback",l=this.oauth.clientId?{client_id:this.oauth.clientId,client_secret:this.oauth.clientSecret}:await this.dynamicClientRegistration(o,a),u=await pa(),c=await pc(u),p=await pa(),d=this.oauth.scopes?.join(" "),m=`${o.authorization_endpoint}?${dc({response_type:"code",client_id:l.client_id,redirect_uri:a,scope:d,state:p,code_challenge:c,code_challenge_method:"S256",resource:t})}`;if(!this.oauth.onAuthCode)throw new Error(`Authorization required. Provide oauth.onAuthCode to complete the flow. Navigate to: ${m}`);let{code:g,redirectUri:h}=await this.oauth.onAuthCode(m),f=h??a,y=await this.exchangeCodeForToken({asMeta:o,code:g,codeVerifier:u,client:l,redirectUri:f,resource:t});return await this.setStoredToken(t,r,y),{token:y,issuer:r,asMeta:o,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"},o=await fetch(e.registration_endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!o.ok)throw new Error(`Dynamic client registration failed: ${o.status} ${o.statusText}`);let i=await o.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 o=r.expires_in?Date.now()+r.expires_in*1e3:void 0;return{accessToken:r.access_token,refreshToken:r.refresh_token,expiresAt:o}}async refreshToken(e,t,n,r){let o=new URLSearchParams;o.set("grant_type","refresh_token"),o.set("refresh_token",e),o.set("resource",t),this.oauth?.clientId&&o.set("client_id",this.oauth.clientId),this.oauth?.clientSecret&&o.set("client_secret",this.oauth.clientSecret);let i=await fetch(r.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o.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 l=a.expires_in?Date.now()+a.expires_in*1e3:void 0;return{accessToken:a.access_token,refreshToken:a.refresh_token??e,expiresAt:l}}};var ws=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 Vn(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=o=>{try{let i=JSON.parse(o.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"),l=await this.oauthHelper.ensureAccessToken({requestedUrl:this.mcpEndpoint,wwwAuthenticate:a,currentToken:null});if(!l)throw new Error("HTTP 401: Unauthorized");return this.customHeaders.Authorization=`Bearer ${l.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,o="",i=async()=>{try{let{done:a,value:l}=await n.read();if(a){n.releaseLock();return}o+=r.decode(l,{stream:!0});let u=o.split(`
676
+ `)}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:o}=r;if(typeof o!="object"||o===null||Object.keys(o).length!==0)throw new Error(`Unexpected ping response: ${JSON.stringify(o)}`)}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=je(),r={jsonrpc:"2.0",id:n,method:e,params:t},o=new Promise((a,l)=>{this.activeRequests.set(n,{reject:l}),this.transport.send(r).then(u=>{if(this.activeRequests.delete(n),u!==null&&typeof u=="object"&&"error"in u){let c=u;l(new Error(`RPC Error ${c.error.code}: ${c.error.message}`))}else u!==null&&typeof u=="object"&&"result"in u?a({result:u.result}):l(new Error("Invalid response no result or error"))}).catch(u=>{this.activeRequests.delete(n),l(u)})}),{result:i}=await o;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 o={name:"Notification",id:"mcp_notification",value:`Sending notification: ${JSON.stringify(n,null,2)}`};this.logger(o)}await this.transport.sendNotification(n)}};function lc(s){if(typeof Buffer<"u")return Buffer.from(s).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"");let e="";for(let n=0;n<s.length;n++)e+=String.fromCharCode(s[n]);return(typeof btoa=="function"?btoa(e):"").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}async function uc(s){let t=new TextEncoder().encode(s),n=await ma().subtle.digest("SHA-256",t);return new Uint8Array(n)}async function pa(){return lc(await uc(je()+Math.random().toString(36)))}async function cc(s){return lc(await uc(s))}async function Ts(s,e){let t=await fetch(s,{headers:e});if(!t.ok)throw new Error(`HTTP ${t.status} fetching ${s}: ${t.statusText}`);return await t.json()}function pc(s){let e=new URLSearchParams;for(let[t,n]of Object.entries(s))n!==void 0&&e.set(t,n);return e.toString()}function Br(s){return s.endsWith("/")?s.slice(0,-1):s}function Jd(s){if(!s)return null;let e=s.match(/resource_metadata\s*=\s*"([^"]+)"/i)||s.match(/resource_metadata\s*=\s*([^,\s]+)/i);return e?e[1]:null}async function dc(s,e){let t=Jd(e);if(t){let a=await Ts(t),l=Br(new URL(s).toString().split("?")[0]),u=Br(a.resource??"");if(!u||u!==l)throw new Error(`Protected resource metadata 'resource' mismatch. Expected ${l} but got ${u}`);let c=Array.isArray(a.authorization_servers)?a.authorization_servers:[];if(c.length===0)throw new Error("No authorization_servers advertised by protected resource");return{resource:l,issuers:c}}let n=new URL(s),r=n.pathname.replace(/\/+$/,""),o=[];r&&r!=="/"&&o.push({url:`${n.origin}/.well-known/oauth-protected-resource${r}`,expected:`${n.origin}${r}`}),o.push({url:`${n.origin}/.well-known/oauth-protected-resource`,expected:`${n.origin}`});let i;for(let a of o)try{let l=await Ts(a.url),u=Br(l.resource??""),c=Br(a.expected);if(!u||u!==c)throw new Error(`Protected resource metadata 'resource' mismatch. Expected ${c} but got ${u}`);let p=Array.isArray(l.authorization_servers)?l.authorization_servers:[];if(p.length===0)throw new Error("No authorization_servers advertised by protected resource");return{resource:c,issuers:p}}catch(l){i=l}throw new Error(`Failed to resolve protected resource metadata via well-known endpoints. Last error: ${String(i)}`)}async function mc(s){let e=new URL(s),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 o of n)try{let i=await Ts(o);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 ${s}: ${String(r)}`)}var Vn=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 mc(e);return this.asMetaCache.set(e,t),t}async ensureAccessToken(e){if(!this.oauth)return null;let{resource:t,issuers:n}=await dc(e.requestedUrl,e.wwwAuthenticate),r=this.oauth.selectAuthorizationServer?await this.oauth.selectAuthorizationServer(n,{}):n[0],o=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:o,resource:t};if(i?.refreshToken)try{let x=await this.refreshToken(i.refreshToken,t,r,o);return await this.setStoredToken(t,r,x),{token:x,issuer:r,asMeta:o,resource:t}}catch{await this.clearStoredToken(t,r)}let a=this.oauth.redirectUri??"http://localhost:8787/callback",l=this.oauth.clientId?{client_id:this.oauth.clientId,client_secret:this.oauth.clientSecret}:await this.dynamicClientRegistration(o,a),u=await pa(),c=await cc(u),p=await pa(),d=this.oauth.scopes?.join(" "),m=`${o.authorization_endpoint}?${pc({response_type:"code",client_id:l.client_id,redirect_uri:a,scope:d,state:p,code_challenge:c,code_challenge_method:"S256",resource:t})}`;if(!this.oauth.onAuthCode)throw new Error(`Authorization required. Provide oauth.onAuthCode to complete the flow. Navigate to: ${m}`);let{code:g,redirectUri:h}=await this.oauth.onAuthCode(m),f=h??a,y=await this.exchangeCodeForToken({asMeta:o,code:g,codeVerifier:u,client:l,redirectUri:f,resource:t});return await this.setStoredToken(t,r,y),{token:y,issuer:r,asMeta:o,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"},o=await fetch(e.registration_endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!o.ok)throw new Error(`Dynamic client registration failed: ${o.status} ${o.statusText}`);let i=await o.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 o=r.expires_in?Date.now()+r.expires_in*1e3:void 0;return{accessToken:r.access_token,refreshToken:r.refresh_token,expiresAt:o}}async refreshToken(e,t,n,r){let o=new URLSearchParams;o.set("grant_type","refresh_token"),o.set("refresh_token",e),o.set("resource",t),this.oauth?.clientId&&o.set("client_id",this.oauth.clientId),this.oauth?.clientSecret&&o.set("client_secret",this.oauth.clientSecret);let i=await fetch(r.token_endpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o.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 l=a.expires_in?Date.now()+a.expires_in*1e3:void 0;return{accessToken:a.access_token,refreshToken:a.refresh_token??e,expiresAt:l}}};var ws=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 Vn(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=o=>{try{let i=JSON.parse(o.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"),l=await this.oauthHelper.ensureAccessToken({requestedUrl:this.mcpEndpoint,wwwAuthenticate:a,currentToken:null});if(!l)throw new Error("HTTP 401: Unauthorized");return this.customHeaders.Authorization=`Bearer ${l.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,o="",i=async()=>{try{let{done:a,value:l}=await n.read();if(a){n.releaseLock();return}o+=r.decode(l,{stream:!0});let u=o.split(`
677
677
  `);o=u.pop()||"";for(let c of u)if(c.startsWith("data: ")){let p=c.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"),l=await this.oauthHelper.ensureAccessToken({requestedUrl:this.mcpEndpoint,wwwAuthenticate:a,currentToken:null});if(!l)throw new Error("HTTP 401: Unauthorized");this.customHeaders.Authorization=`Bearer ${l.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 o=r.headers.get("Mcp-Session-Id");o&&(this.sessionId=o);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 o=e.body?.getReader();if(!o){r(new Error("No response body reader available"));return}let i=new TextDecoder,a="",l=async()=>{try{let{done:u,value:c}=await o.read();if(u){o.releaseLock();return}a+=i.decode(c,{stream:!0});let p=a.split(`
678
678
  `);a=p.pop()||"";for(let d of p)if(d.startsWith("data: ")){let m=d.slice(6);if(m==="[DONE]")return;try{let g=JSON.parse(m);if("id"in g&&g.id===t){n(g);return}this.messageHandler&&this.messageHandler(g)}catch(g){console.error("Failed to parse SSE data:",g)}}await l()}catch(u){o.releaseLock(),r(u)}};l().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 o=r.headers.get("WWW-Authenticate"),i=await this.oauthHelper.ensureAccessToken({requestedUrl:this.mcpEndpoint,wwwAuthenticate:o,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 Rs=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 Vn(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 o=n.headers.get("WWW-Authenticate"),i=await this.oauthHelper.ensureAccessToken({requestedUrl:this.sseUrl,wwwAuthenticate:o,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="",o=null;for(;;){let{done:i,value:a}=await t.read();if(i)break;r+=n.decode(a,{stream:!0});let l=r.split(`
679
- `);r=l.pop()||"";for(let u of l)if(u.startsWith("event: "))o=u.slice(7).trim();else if(u.startsWith("data: ")){let c=u.slice(6);if(o==="endpoint"){let p=c.trim(),d;try{let m=JSON.parse(p);typeof m=="string"?d=m:m&&typeof m=="object"&&"uri"in m&&(d=m.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=c.trim();try{let d=JSON.parse(p);if(d&&typeof d=="object"&&"id"in d){let m=d.id,g=this.pendingRequests.get(m);g?(g.resolve(d),this.pendingRequests.delete(m)):this.messageHandler&&this.messageHandler(d)}else this.messageHandler&&this.messageHandler(d)}catch{}}}else u.trim()===""&&(o=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,l)=>{this.pendingRequests.set(e.id,{resolve:a,reject:l})}),o=await fetch(this.endpoint,{method:"POST",headers:t,body:n});if(o.status===401){let a=o.headers.get("WWW-Authenticate"),l=await this.oauthHelper.ensureAccessToken({requestedUrl:this.sseUrl,wwwAuthenticate:a,currentToken:null});if(!l)throw new Error("HTTP 401: Unauthorized");this.customHeaders.Authorization=`Bearer ${l.token.accessToken}`,o=await fetch(this.endpoint,{method:"POST",headers:this.buildHeaders({"Content-Type":"application/json"}),body:n})}if(!o.ok)throw this.pendingRequests.delete(e.id),new Error(`HTTP error ${o.status}: ${o.statusText}`);if(o.headers.get("Content-Type")?.includes("application/json")){let a=await o.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 o=r.headers.get("WWW-Authenticate"),i=await this.oauthHelper.ensureAccessToken({requestedUrl:this.sseUrl,wwwAuthenticate:o,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 da(s){return s.enum?s.enum.map(e=>`"${e}"`).join(" | "):s.type==="array"?`${s.items?da(s.items):"unknown"}[]`:s.type==="object"?"object":s.type??"unknown"}function fc(s){return s?s.trim().split(/\s+/).length<=12:!1}function Yd(s){return!s?.properties||Object.keys(s.properties).length===0?"{}":`{ ${Object.keys(s.properties).join(", ")} }`}function Qd(s){if(!s?.properties||Object.keys(s.properties).length===0)return"none";let e=new Set(s.required??[]);return Object.entries(s.properties).map(([n,r])=>{let o=da(r),i=e.has(n)?"required":"optional",a=`${n}:${o} (${i})`;return fc(r.description)?`${a} - ${r.description}`:a}).join(", ")}function Xd(s){return!s?.properties||Object.keys(s.properties).length===0?"unknown":`{ ${Object.entries(s.properties).map(([t,n])=>{let r=da(n);return fc(n.description)?`${t}:${r} (${n.description})`:`${t}:${r}`}).join(", ")} }`}function hc(s){return[`- \`${s.qualifiedName}\``,` purpose: ${s.description}`,` call: \`await ${s.qualifiedName}(${Yd(s.parameters)})\``,` args: ${Qd(s.parameters)}`,` returns: ${Xd(s.returns)}`].join(`
680
- `)}function vs(s,e,t,n){let r=n.maxLlmCalls??50,o=e.length>0?e.map(p=>{let d=_n(p.type),m=p.description?`: ${p.description}`:"";return`- \`${p.name}\` (${d})${m}`}).join(`
681
- `):"(none)",i=t.map(p=>`\`${p.name}\``).join(", "),a=[...n.agents??[]].sort((p,d)=>p.name.localeCompare(d.name)),l=[...n.agentFunctions??[]].sort((p,d)=>p.namespace!==d.namespace?p.namespace.localeCompare(d.namespace):p.name.localeCompare(d.name)),u=l.some(p=>!p.returns?.properties||Object.keys(p.returns.properties).length===0),c=`
679
+ `);r=l.pop()||"";for(let u of l)if(u.startsWith("event: "))o=u.slice(7).trim();else if(u.startsWith("data: ")){let c=u.slice(6);if(o==="endpoint"){let p=c.trim(),d;try{let m=JSON.parse(p);typeof m=="string"?d=m:m&&typeof m=="object"&&"uri"in m&&(d=m.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=c.trim();try{let d=JSON.parse(p);if(d&&typeof d=="object"&&"id"in d){let m=d.id,g=this.pendingRequests.get(m);g?(g.resolve(d),this.pendingRequests.delete(m)):this.messageHandler&&this.messageHandler(d)}else this.messageHandler&&this.messageHandler(d)}catch{}}}else u.trim()===""&&(o=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,l)=>{this.pendingRequests.set(e.id,{resolve:a,reject:l})}),o=await fetch(this.endpoint,{method:"POST",headers:t,body:n});if(o.status===401){let a=o.headers.get("WWW-Authenticate"),l=await this.oauthHelper.ensureAccessToken({requestedUrl:this.sseUrl,wwwAuthenticate:a,currentToken:null});if(!l)throw new Error("HTTP 401: Unauthorized");this.customHeaders.Authorization=`Bearer ${l.token.accessToken}`,o=await fetch(this.endpoint,{method:"POST",headers:this.buildHeaders({"Content-Type":"application/json"}),body:n})}if(!o.ok)throw this.pendingRequests.delete(e.id),new Error(`HTTP error ${o.status}: ${o.statusText}`);if(o.headers.get("Content-Type")?.includes("application/json")){let a=await o.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 o=r.headers.get("WWW-Authenticate"),i=await this.oauthHelper.ensureAccessToken({requestedUrl:this.sseUrl,wwwAuthenticate:o,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 hc(s){return s.enum?s.enum.map(e=>`"${e}"`).join(" | "):s.type==="array"?`${s.items?hc(s.items):"unknown"}[]`:s.type==="object"?"object":s.type??"unknown"}function fc(s,e){if(!s?.properties||Object.keys(s.properties).length===0)return"{}";let t=new Set(s.required??[]),n=e?.respectRequired??!1;return`{ ${Object.entries(s.properties).map(([o,i])=>{let a=hc(i),l=n&&!t.has(o)?"?":"";return`${o}${l}: ${a}`}).join(", ")} }`}function Yd(s){return!s?.properties||Object.keys(s.properties).length===0?"unknown":fc(s)}function gc(s){let e=fc(s.parameters,{respectRequired:!0}),t=Yd(s.returns);return`- \`${s.qualifiedName}(args: ${e}): Promise<${t}>\``}function vs(s,e,t,n){let r=n.maxSubAgentCalls??50,o=e.length>0?e.map(c=>{let p=_n(c.type),d=c.description?`: ${c.description}`:"";return`- \`${c.name}\` -> \`inputs.${c.name}\` (${p})${d}`}).join(`
680
+ `):"(none)",i=t.map(c=>`\`${c.name}\``).join(", "),a=[...n.agents??[]].sort((c,p)=>c.name.localeCompare(p.name)),l=[...n.agentFunctions??[]].sort((c,p)=>c.namespace!==p.namespace?c.namespace.localeCompare(p.namespace):c.name.localeCompare(p.name)),u=`
682
681
  ## Code Generation Agent
683
682
 
684
683
  You are a code generation agent called the \`actor\`. Your ONLY job is to write JavaScript code to solve problems, complete tasks and gather information. There is another agent called the \`responder\` that will synthesize final answers from the information you gather. You NEVER generate final answers directly \u2014 you can only write code to explore and analyze the context, call tools, and ask for clarification.
685
684
 
686
- ### Pre-loaded context variables
687
- All input fields are available in the JavaScript runtime via \`inputs.<field>\` (including context fields).
688
- Top-level aliases may exist for non-colliding names, but \`inputs.<field>\` is the canonical path.
689
- Example: \`const kb = inputs.knowledgeBase\`
690
- Mapping rule: a field named \`foo\` maps to \`inputs.foo\` in runtime code.
691
-
692
- Context-focused fields loaded for runtime analysis:
685
+ ### Runtime Field Access
686
+ In JavaScript code, context fields map to \`inputs.<fieldName>\` as follows:
693
687
  ${o}
694
688
 
695
- Some configured context fields may also appear directly in Actor prompt inputs when compact (threshold-based).
696
-
697
689
  ### Responder output fields
698
690
  The responder is looking to produce the following output fields: ${i}
699
691
 
700
692
  ### Functions for context analysis and responding
701
- - \`await llmQuery(query:string, context?:object|array|string) : string\` \u2014 Delegate semantic work to a sub-agent when context is too large or complex for one turn.
702
- - \`await llmQuery({ query:string, context?:object|array|string }) : string\` \u2014 Single-object convenience form of \`llmQuery\`.
703
- - \`await llmQuery([{ query:string, context?:object|array|string }, ...]) : string[]\` \u2014 Batched \`llmQuery\` for parallel analysis. Sub-agent calls have a call limit of ${r}. Oversized values are truncated automatically.
704
- - \`final(...args)\` \u2014 Signal completion and provide payload arguments for the responder to use to generate its output. Requires at least one argument. Execution ends after calling it.
705
- - \`ask_clarification(...args)\` \u2014 Signal that more user input is needed and provide clarification arguments for the responder. Requires at least one argument. Execution ends after calling it.
693
+ - \`await llmQuery(query:string, context?:object|array|string) : string\` \u2014 Ask a sub-agent one semantic question.
694
+ - \`await llmQuery({ query:string, context?:object|array|string }) : string\` \u2014 Single-object form.
695
+ - \`await llmQuery([{ query:string, context?:object|array|string }, ...]) : string[]\` \u2014 Batched parallel form.
696
+ - \`final(...args)\` \u2014 Complete and pass payload to the responder.
697
+ - \`ask_clarification(...args)\` \u2014 Request missing user input and pass clarification payload.
706
698
  ${n.hasInspectRuntime?"\n- `await inspect_runtime() : string` \u2014 Returns a compact snapshot of all user-defined variables in the runtime session (name, type, size, preview). Use this to re-ground yourself when the action log is large instead of re-reading previous outputs.\n":""}
707
699
 
708
700
  ### Function call contract
709
701
  - Use \`await agents.<name>({...})\` and \`await <namespace>.<fnName>({...})\` with a single object argument.
710
702
  - \`llmQuery\` supports positional (\`llmQuery(query, context?)\`), single-object (\`llmQuery({ query, context })\`), and batched (\`llmQuery([{ query, context }, ...])\`) forms.
711
703
  - \`final(...args)\` and \`ask_clarification(...args)\` are completion signals; do not use \`await\`.
712
- - Use exact namespace-qualified names.
713
704
  ${a.length>0?`
714
705
  ### Available Agent Functions
715
706
  The following agents are pre-loaded under the \`agents\` namespace:
716
- ${a.map(p=>hc({qualifiedName:`agents.${p.name}`,description:p.description,parameters:p.parameters})).join(`
707
+ ${a.map(c=>gc({qualifiedName:`agents.${c.name}`,parameters:c.parameters})).join(`
717
708
  `)}
718
709
  `:""}${l.length>0?`
719
710
  ### Available Functions
720
711
  The following functions are available under namespaced globals in the runtime:
721
- ${u?"- If `returns` is `unknown`, inspect with `console.log(result)` before chaining.\n":""}${l.map(p=>hc({qualifiedName:`${p.namespace}.${p.name}`,description:p.description,parameters:p.parameters,returns:p.returns})).join(`
712
+ ${l.map(c=>gc({qualifiedName:`${c.namespace}.${c.name}`,parameters:c.parameters,returns:c.returns})).join(`
722
713
  `)}
723
714
  `:""}
724
715
  ### Important guidance and guardrails
725
716
  - Start with targeted code-based exploration on a small portion of context. Use \`contextMetadata\` to choose scope.
726
717
  - Use code (filter/map/slice/regex/property access) for structural work; use \`llmQuery\` for semantic interpretation and summarization.
727
- - Use batched \`llmQuery\` only when parallelism materially helps. Total sub-agent call budget is ${r}.
728
- - Accumulate intermediate findings in variables. Send final payload only through \`final(...args)\` or \`ask_clarification(...args)\`.
729
- - The responder can only see arguments passed to \`final(...args)\` or \`ask_clarification(...args)\`.
718
+ - Sub-agent call budget: ${r}.
719
+ - Only \`final(...args)\` and \`ask_clarification(...args)\` transmit payload to the responder.
730
720
  - Runtime output may be truncated. If output is incomplete, rerun with narrower scope.
731
721
 
732
722
  ## Javascript Runtime Usage Instructions
733
723
  ${n.runtimeUsageInstructions}
734
724
  `.replace(/\n{3,}/g,`
735
725
 
736
- `).trim();return s?`${c}
726
+ `).trim();return s?`${u}
737
727
 
738
- ${s}`:c}function Ss(s,e){let n=`## Answer Synthesis Agent
728
+ ${s}`:u}function Ss(s,e){let n=`## Answer Synthesis Agent
739
729
 
740
730
  You synthesize a final answer from the provided actorResult payload. The payload includes the Actor completion type and arguments captured from final(...args) or ask_clarification(...args).
741
731
 
@@ -748,7 +738,7 @@ ${e.length>0?e.map(r=>{let o=_n(r.type);return`- \`${r.name}\` (${o})`}).join(`
748
738
  2. If actorResult lacks sufficient information, provide the best possible answer from available evidence.
749
739
  3. If actorResult.type is \`ask_clarification\`, ask for the missing information clearly in your output fields.`;return s?`${n}
750
740
 
751
- ${s}`:n}function xc(s){return s.match(/^(\w+Error:\s*.{0,60})/m)?.[1]??s.slice(0,80)}function Zd(s){let e=[],t=/(?:^|[\n;])\s*(?:var|let|const)\s+(\w+)/g,n=t.exec(s);for(;n!==null;)n[1]&&e.push(n[1]),n=t.exec(s);return e}var em=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 tm(s){let e=/\b([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,t=new Set,n=e.exec(s);for(;n!==null;)n[1]&&!em.has(n[1])&&t.add(n[1]),n=e.exec(s);return t}function nm(s,e){let t=s.tags.includes("error"),n=e.tags.includes("error");if(t&&!n){s.rank=0,jr(s,"dead-end");return}if(t&&n){let r=xc(s.output),o=xc(e.output);r!==o?(s.rank=3,jr(s,"pivot")):(s.rank=0,jr(s,"dead-end"));return}if(!t&&!n){let r=Zd(s.code),o=tm(e.code);r.filter(a=>o.has(a)).length>0?(s.rank=5,jr(s,"foundational")):(s.rank=1,jr(s,"superseded"));return}}function jr(s,e){s.tags.includes(e)||s.tags.push(e)}async function rm(s,e,t,n){let r=`Summarize this resolved error in exactly one line (20-40 tokens).
741
+ ${s}`:n}function xc(s){return s.match(/^(\w+Error:\s*.{0,60})/m)?.[1]??s.slice(0,80)}function Qd(s){let e=[],t=/(?:^|[\n;])\s*(?:var|let|const)\s+(\w+)/g,n=t.exec(s);for(;n!==null;)n[1]&&e.push(n[1]),n=t.exec(s);return e}var Xd=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 Zd(s){let e=/\b([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,t=new Set,n=e.exec(s);for(;n!==null;)n[1]&&!Xd.has(n[1])&&t.add(n[1]),n=e.exec(s);return t}function em(s,e){let t=s.tags.includes("error"),n=e.tags.includes("error");if(t&&!n){s.rank=0,jr(s,"dead-end");return}if(t&&n){let r=xc(s.output),o=xc(e.output);r!==o?(s.rank=3,jr(s,"pivot")):(s.rank=0,jr(s,"dead-end"));return}if(!t&&!n){let r=Qd(s.code),o=Zd(e.code);r.filter(a=>o.has(a)).length>0?(s.rank=5,jr(s,"foundational")):(s.rank=1,jr(s,"superseded"));return}}function jr(s,e){s.tags.includes(e)||s.tags.push(e)}async function tm(s,e,t,n){let r=`Summarize this resolved error in exactly one line (20-40 tokens).
752
742
 
753
743
  Error code:
754
744
  \`\`\`javascript
@@ -763,7 +753,7 @@ Resolution code:
763
753
  ${n.code.slice(0,500)}
764
754
  \`\`\`
765
755
 
766
- Format: [TOMBSTONE]: Resolved [Error Type] in [Module]. Fix: [1-line-summary]. Avoid: [failed-approach].`;try{let o=await s.chat({chatPrompt:[{role:"system",content:"You are a concise code summarizer."},{role:"user",content:r}],...e?.model?{model:e.model}:{},...e?.modelConfig?{modelConfig:e.modelConfig}:{}});if(!om(o)&&o.results?.[0]?.content){let i=o.results[0].content;return typeof i=="string"?i.trim():String(i)}return Ac}catch{return Ac}}var Ac="[TOMBSTONE]: Error was resolved in subsequent turn.";function om(s){return typeof s=="object"&&s!==null&&"getReader"in s}async function yc(s,e,t,n){let r=s[e];if(!r)return;let o=r.tags.includes("error");if(t.hindsightEvaluation&&s.length>=2){let i=s[s.length-2];nm(i,r)}if(t.tombstoning&&n){for(let i of s)if(i.tags.includes("error")&&!i.tombstone&&!i._tombstonePromise){let a=s.indexOf(i),l=s[a+1];if(l&&!l.tags.includes("error")){let u=typeof t.tombstoning=="object"?t.tombstoning:void 0;i._tombstonePromise=rm(n,u,i,l),i._tombstonePromise.then(c=>{i.tombstone=c}).catch(()=>{}).finally(()=>{i._tombstonePromise=void 0})}}}if(t.errorPruning&&!o){let i=s.filter(a=>!a.tags.includes("error")||a.tombstone!=null||a._tombstonePromise!=null);s.length=0,s.push(...i)}if(t.hindsightEvaluation){let i=s.filter((a,l)=>l===s.length-1||a.rank===void 0||a.rank>=t.pruneRank||a.tombstone!=null||a._tombstonePromise!=null);s.length=0,s.push(...i)}}function ks(s){return s.length===0?"":s.map(e=>e.tombstone?`Action ${e.turn}:
756
+ Format: [TOMBSTONE]: Resolved [Error Type] in [Module]. Fix: [1-line-summary]. Avoid: [failed-approach].`;try{let o=await s.chat({chatPrompt:[{role:"system",content:"You are a concise code summarizer."},{role:"user",content:r}],...e?.model?{model:e.model}:{},...e?.modelConfig?{modelConfig:e.modelConfig}:{}});if(!nm(o)&&o.results?.[0]?.content){let i=o.results[0].content;return typeof i=="string"?i.trim():String(i)}return Ac}catch{return Ac}}var Ac="[TOMBSTONE]: Error was resolved in subsequent turn.";function nm(s){return typeof s=="object"&&s!==null&&"getReader"in s}async function yc(s,e,t,n){let r=s[e];if(!r)return;let o=r.tags.includes("error");if(t.hindsightEvaluation&&s.length>=2){let i=s[s.length-2];em(i,r)}if(t.tombstoning&&n){for(let i of s)if(i.tags.includes("error")&&!i.tombstone&&!i._tombstonePromise){let a=s.indexOf(i),l=s[a+1];if(l&&!l.tags.includes("error")){let u=typeof t.tombstoning=="object"?t.tombstoning:void 0;i._tombstonePromise=tm(n,u,i,l),i._tombstonePromise.then(c=>{i.tombstone=c}).catch(()=>{}).finally(()=>{i._tombstonePromise=void 0})}}}if(t.errorPruning&&!o){let i=s.filter(a=>!a.tags.includes("error")||a.tombstone!=null||a._tombstonePromise!=null);s.length=0,s.push(...i)}if(t.hindsightEvaluation){let i=s.filter((a,l)=>l===s.length-1||a.rank===void 0||a.rank>=t.pruneRank||a.tombstone!=null||a._tombstonePromise!=null);s.length=0,s.push(...i)}}function ks(s){return s.length===0?"":s.map(e=>e.tombstone?`Action ${e.turn}:
767
757
  ${e.tombstone}`:`Action ${e.turn}:
768
758
  \`\`\`javascript
769
759
  ${e.code}
@@ -788,17 +778,17 @@ ${e.output}${e.actorFieldsOutput}`).join(`
788
778
  } catch { preview = String(v).slice(0, 80); }
789
779
  return k + ': ' + type + (size ? ' (' + size + ')' : '') + ' = ' + preview;
790
780
  }).join('\\n') || '(no user variables)';
791
- })()`}var Ic=50,sm=5e3,im=8,Cc=10,am=2,lm=1200,qr=class s{ai;program;actorProgram;responderProgram;agents;agentFunctions;debug;options;rlmConfig;runtime;actorFieldNames;sharedFieldNames;globalSharedFieldNames;excludedSharedFields;excludedAgents;excludedAgentFunctions;actorDescription;responderDescription;recursionForwardOptions;actorForwardOptions;responderForwardOptions;contextPromptMaxCharsByField=new Map;activeAbortControllers=new Set;_stopRequested=!1;func;_parentSharedFields=new Set;_parentSharedAgents=new Set;_parentSharedAgentFunctions=new Set;constructor({ai:e,agentIdentity:t,signature:n},r){let{debug:o,contextFields:i,runtime:a,maxLlmCalls:l,maxRuntimeChars:u,maxBatchedLlmQueryConcurrency:c,maxTurns:p,trajectoryPruning:d,contextManagement:m,actorFields:g,actorCallback:h,mode:f,recursionOptions:y,actorOptions:x,responderOptions:A}=r;this.ai=e,this.agents=r.agents?.local,this.agentFunctions=r.functions?.local??[],this.debug=o,this.options=r,this.runtime=a??new Vt;let{agents:T,fields:b,functions:R,...O}=r;this.program=new Oe(n,O);let _=this.program.getSignature().getInputFields(),M=pm(i,_,lm);this.contextPromptMaxCharsByField=M.promptMaxCharsByField,this.rlmConfig={contextFields:M.contextFieldNames,sharedFields:r.fields?.shared,runtime:this.runtime,maxLlmCalls:l,maxRuntimeChars:u,maxBatchedLlmQueryConcurrency:c,maxTurns:p,trajectoryPruning:d,contextManagement:m,actorFields:g,actorCallback:h,mode:f},this.recursionForwardOptions=y;let{description:G,...B}=x??{},{description:L,...I}=A??{};this.actorDescription=G,this.actorForwardOptions=B,this.responderDescription=L,this.responderForwardOptions=I;let v=this.agents;for(let W of v??[]){let se=W.getFunction().name;this.program.register(W,se)}if(t&&(this.func={name:hm(t.name),description:t.description,parameters:this._buildFuncParameters(),func:async()=>{throw new Error("Use getFunction() to get a callable wrapper")}}),this.program.getSignature().getDescription())throw new Error("AxAgent does not support signature-level descriptions. Use setActorDescription() and/or setResponderDescription() to customize the actor and responder prompts independently.");let E=this.program.getSignature().getOutputFields(),$=g??[];this.actorFieldNames=$;for(let W of $)if(!E.some(se=>se.name===W))throw new Error(`RLM actorField "${W}" not found in output signature`);let S=r.fields?.shared??[];this.sharedFieldNames=S;for(let W of S)if(!_.some(se=>se.name===W))throw new Error(`sharedField "${W}" not found in signature input fields`);this.excludedSharedFields=r.fields?.excluded??[];let P=r.fields?.globallyShared??[];this.globalSharedFieldNames=P;for(let W of P)if(!_.some(se=>se.name===W))throw new Error(`globalSharedField "${W}" not found in signature input fields`);let j=r.agents?.shared??[],N=r.agents?.globallyShared??[];this.excludedAgents=r.agents?.excluded??[];let K=r.functions?.shared??[],re=r.functions?.globallyShared??[];this.excludedAgentFunctions=r.functions?.excluded??[];let ne=[...this.agentFunctions,...K,...re];for(let W of ne)if(!W.parameters)throw new Error(`Agent function "${W.name}" must define parameters schema for agent runtime usage.`);let oe=new Set(["agents","llmQuery","final","ask_clarification"]);for(let W of ne){let se=W.namespace??"utils";if(oe.has(se))throw new Error(`Agent function namespace "${se}" is reserved`)}if(S.length>0&&v){let W=_.filter(se=>S.includes(se.name));for(let se of v){if(!(se instanceof s))continue;let Ie=new Set(se.getExcludedSharedFields()),te=W.filter(he=>!Ie.has(he.name));te.length!==0&&se._extendForSharedFields(te,this.rlmConfig.contextFields)}}if(j.length>0&&v)for(let W of v)W instanceof s&&W._extendForSharedAgents(j);if(P.length>0&&v){let W=_.filter(se=>P.includes(se.name));for(let se of v){if(!(se instanceof s))continue;let Ie=new Set(se.getExcludedSharedFields()),te=W.filter(he=>!Ie.has(he.name));te.length!==0&&se._extendForGlobalSharedFields(te,this.rlmConfig.contextFields)}}if(N.length>0&&v)for(let W of v)W instanceof s&&W._extendForGlobalSharedAgents(N);if(K.length>0&&v)for(let W of v)W instanceof s&&W._extendForSharedAgentFunctions(K);if(re.length>0&&v)for(let W of v)W instanceof s&&W._extendForGlobalSharedAgentFunctions(re);this._buildSplitPrograms(),this.program.register(this.actorProgram,"actor"),this.program.register(this.responderProgram,"responder")}_buildSplitPrograms(){let e=this.program.getSignature().getInputFields(),t=this.rlmConfig.contextFields,n=[...this.sharedFieldNames,...this.globalSharedFieldNames],r=e.filter(A=>t.includes(A.name)),o=r.filter(A=>this.contextPromptMaxCharsByField.has(A.name)&&!n.includes(A.name)).map(A=>({...A,isOptional:!0})),i=e.filter(A=>!t.includes(A.name)&&!n.includes(A.name)),a=this.program.getSignature().getOutputFields(),l=a.filter(A=>this.actorFieldNames.includes(A.name)),u=a.filter(A=>!this.actorFieldNames.includes(A.name)),c=Ae().addInputFields(i).addInputFields(o).input("contextMetadata",Ae.string("Metadata about pre-loaded context variables (type and size)")).input("actionLog",Ae.string("Chronological trace of code executions or actions and their outputs so far")).output("javascriptCode",Ae.code("JavaScript code to execute in runtime session"));l.length>0&&(c=c.addOutputFields(l));let p=c.build(),d=Ae().addInputFields(i).input("contextData",Ae.json("Context data to help synthesize the final answer.")).addOutputFields(u).build(),m=this.rlmConfig.maxLlmCalls??Ic,g=this.rlmConfig.maxTurns??Cc,h=this.agents?.map(A=>{let T=A.getFunction();return{name:T.name,description:T.description,parameters:T.parameters}})??[],f=this.agentFunctions.map(A=>({name:A.name,description:A.description,parameters:A.parameters,returns:A.returns,namespace:A.namespace??"utils"})),y=vs(this.actorDescription,r,u,{runtimeUsageInstructions:this.runtime.getUsageInstructions(),maxLlmCalls:m,maxTurns:g,hasInspectRuntime:!!this.rlmConfig.contextManagement?.stateInspection,agents:h,agentFunctions:f}),x=Ss(this.responderDescription,r);this.actorProgram=new Oe(p,{...this._genOptions,description:y}),this.responderProgram=new Oe(d,{...this._genOptions,description:x})}_extendForSharedFields(e,t){let n=this.program.getSignature(),r=n.getInputFields(),o=!1;for(let i of e){if(r.some(a=>a.name===i.name)){if(this._parentSharedFields.has(i.name))throw new Error(`Duplicate shared field "${i.name}" \u2014 already propagated from a parent`);continue}this._parentSharedFields.add(i.name),n.addInputField(i),o=!0}o&&this.program.setSignature(n);for(let i of e)t.includes(i.name)&&!this.rlmConfig.contextFields.includes(i.name)&&this.rlmConfig.contextFields.push(i.name);this._buildSplitPrograms(),this.func&&(this.func.parameters=this._buildFuncParameters())}_extendForSharedAgents(e){if(e.length===0)return;let t=new Set((this.agents??[]).map(o=>o.getFunction().name)),n=new Set(this.excludedAgents),r=[];for(let o of e){if(o===this)continue;let i=o.getFunction().name;if(!n.has(i)){if(t.has(i)){if(this._parentSharedAgents.has(i))throw new Error(`Duplicate shared agent "${i}" \u2014 already propagated from a parent`);continue}this._parentSharedAgents.add(i),t.add(i),r.push(o)}}if(r.length!==0){this.agents=[...this.agents??[],...r];for(let o of r){let i=o.getFunction().name;this.program.register(o,i)}this._buildSplitPrograms()}}_extendForGlobalSharedFields(e,t){let n=this.program.getSignature(),r=n.getInputFields(),o=!1;for(let i of e){if(r.some(a=>a.name===i.name)){if(this._parentSharedFields.has(i.name))throw new Error(`Duplicate shared field "${i.name}" \u2014 already propagated from a parent`);continue}this._parentSharedFields.add(i.name),n.addInputField(i),o=!0}o&&this.program.setSignature(n);for(let i of e)t.includes(i.name)&&!this.rlmConfig.contextFields.includes(i.name)&&this.rlmConfig.contextFields.push(i.name);for(let i of e)this.sharedFieldNames.includes(i.name)||this.sharedFieldNames.push(i.name);if(this._buildSplitPrograms(),this.func&&(this.func.parameters=this._buildFuncParameters()),this.agents)for(let i of this.agents){if(!(i instanceof s))continue;let a=new Set(i.getExcludedSharedFields()),l=e.filter(u=>!a.has(u.name));l.length!==0&&i._extendForGlobalSharedFields(l,t)}}_extendForGlobalSharedAgents(e){let t=this.agents?this.agents.filter(n=>n instanceof s):[];this._extendForSharedAgents(e);for(let n of t)n._extendForGlobalSharedAgents(e)}_extendForSharedAgentFunctions(e){if(e.length===0)return;let t=new Set(this.agentFunctions.map(o=>`${o.namespace??"utils"}.${o.name}`)),n=new Set(this.excludedAgentFunctions),r=[];for(let o of e){if(n.has(o.name))continue;let i=`${o.namespace??"utils"}.${o.name}`;if(t.has(i)){if(this._parentSharedAgentFunctions.has(i))throw new Error(`Duplicate shared agent function "${i}" \u2014 already propagated from a parent`);continue}this._parentSharedAgentFunctions.add(i),t.add(i),r.push(o)}r.length!==0&&(this.agentFunctions=[...this.agentFunctions,...r],this._buildSplitPrograms())}_extendForGlobalSharedAgentFunctions(e){let t=this.agents?this.agents.filter(n=>n instanceof s):[];this._extendForSharedAgentFunctions(e);for(let n of t)n._extendForGlobalSharedAgentFunctions(e)}stop(){this._stopRequested=!0;for(let e of this.activeAbortControllers)e.abort("Stopped by user");this.program.stop(),this.actorProgram.stop(),this.responderProgram.stop()}getId(){return this.program.getId()}setId(e){this.program.setId(e)}namedPrograms(){return this.program.namedPrograms()}getTraces(){return this.program.getTraces()}setDemos(e,t){this.program.setDemos(e,t)}getUsage(){return this.program.getUsage()}resetUsage(){this.program.resetUsage()}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,o)=>{let i=this.ai??o?.ai;if(!i)throw new Error("AI service is required to run the agent");let a=await e(i,r,o),u=this.program.getSignature().getOutputFields();return Object.keys(a).map(p=>{let d=u.find(m=>m.name===p);return d?`${d.title}: ${a[p]}`:`${p}: ${a[p]}`}).join(`
792
- `)}}}getExcludedSharedFields(){return this.excludedSharedFields}getExcludedAgents(){return this.excludedAgents}getExcludedAgentFunctions(){return this.excludedAgentFunctions}getSignature(){return this.program.getSignature()}setSignature(e){this.program.setSignature(e)}applyOptimization(e){this.program.applyOptimization?.(e)}async _runActorLoop(e,t,n,r){let o=this.rlmConfig,i=this.runtime,a=n?.debug??this.debug??e?.getOptions()?.debug??!1,l={},u={},c;Array.isArray(t)?c=t.filter(U=>U.role==="user").reduce((U,X)=>({...U,...X.values}),{}):c=t;let p=[...this.sharedFieldNames,...this.globalSharedFieldNames];for(let[U,X]of Object.entries(c))o.contextFields.includes(U)?l[U]=X:p.includes(U)||(u[U]=X);let d={};for(let U of p)U in c&&(d[U]=c[U]),U in l&&(d[U]=l[U]);for(let U of o.contextFields)if(!(U in l))throw new Error(`RLM contextField "${U}" is missing from input values`);let m={};for(let[U,X]of this.contextPromptMaxCharsByField){if(p.includes(U)||!(U in l))continue;let J=l[U];cm(J)<=X&&(m[U]=J)}let g=o.maxLlmCalls??Ic,h=o.maxRuntimeChars??sm,f=Math.max(1,o.maxBatchedLlmQueryConcurrency??im),y=o.maxTurns??Cc,x=0,A=Math.floor(g*.8),T=this.recursionForwardOptions?.maxDepth??am,b=Math.max(0,T),{maxDepth:R,...O}=this.recursionForwardOptions??{},{functions:_,description:M,mem:G,sessionId:B,...L}=n??{},I={...this.recursionForwardOptions??{},maxDepth:Math.max(0,b-1)},v=["context"],E=Ae().input("task",Ae.string("Task for recursive analysis")).input("context",Ae.json("Optional context for the recursive task")).output("answer",Ae.string("Answer from recursive analysis")).build(),S=(o.mode??"simple")==="advanced"&&(I.maxDepth??0)>0?"advanced":"simple",P;b>0&&(S==="advanced"?P=new s({signature:E},{debug:a,...o,agents:{local:this.agents},functions:{local:this.agentFunctions},contextFields:v,actorFields:void 0,recursionOptions:I,actorOptions:this.actorForwardOptions,responderOptions:this.responderForwardOptions}):P=new Oe(E,I));let j=U=>{if(U==null)return"";if(typeof U=="string")return wt(U,h);try{return wt(JSON.stringify(U),h)}catch{return wt(String(U),h)}},N=async(U,X)=>{if(!Array.isArray(U)&&typeof U=="object"&&U!==null&&"query"in U)return N(U.query,U.context??X);if(r?.aborted)throw new $e("rlm-llm-query",r.reason?String(r.reason):"Aborted");if(Array.isArray(U))return mm(U,f,async fe=>{try{return await N(fe.query,fe.context)}catch(ue){if(ue instanceof $e)throw ue;return`[ERROR] ${ue instanceof Error?ue.message:String(ue)}`}});let le=await(async(fe,ue)=>{let xe=ue===void 0?void 0:typeof ue=="string"?wt(ue,h):ue;if(x++,x>g)return`[ERROR] Sub-query budget exhausted (${g}/${g}). Use the data you have already accumulated to produce your final answer.`;if(b<=0||!P)return`[ERROR] Recursion depth limit reached (${T}).`;let Re=3,Ne;for(let Le=0;Le<Re;Le++)try{let _e=await P.forward(e,{task:fe,...xe!==void 0?{context:xe}:S==="advanced"?{context:""}:{}},{...L,...O,abortSignal:r,debug:a});return j(_e.answer)}catch(_e){if(Ne=_e,!um(_e)||Le>=Re-1)throw _e;let At=Math.min(6e4,1e3*Math.pow(2,Le));await new Promise((ct,yt)=>{let nt=!1,ce,Se=()=>{r&&ce&&r.removeEventListener("abort",ce)},Ke=setTimeout(()=>{nt||(nt=!0,Se(),ct())},At);if(r){if(ce=()=>{nt||(nt=!0,clearTimeout(Ke),Se(),yt(new $e("rlm-llm-query-retry-backoff",r.reason?String(r.reason):"Aborted during retry backoff")))},r.aborted){ce();return}r.addEventListener("abort",ce,{once:!0})}})}throw Ne})(U,X);return x===A?`${le}
781
+ })()`}var Ic=50,rm=5e3,om=8,Cc=10,sm=2,im=1200,qr=class s{ai;program;actorProgram;responderProgram;agents;agentFunctions;debug;options;rlmConfig;runtime;actorFieldNames;sharedFieldNames;globalSharedFieldNames;excludedSharedFields;excludedAgents;excludedAgentFunctions;actorDescription;responderDescription;recursionForwardOptions;actorForwardOptions;responderForwardOptions;contextPromptMaxCharsByField=new Map;activeAbortControllers=new Set;_stopRequested=!1;func;_parentSharedFields=new Set;_parentSharedAgents=new Set;_parentSharedAgentFunctions=new Set;constructor({ai:e,agentIdentity:t,signature:n},r){let{debug:o,contextFields:i,runtime:a,maxSubAgentCalls:l,maxRuntimeChars:u,maxBatchedLlmQueryConcurrency:c,maxTurns:p,trajectoryPruning:d,contextManagement:m,actorFields:g,actorCallback:h,mode:f,recursionOptions:y,actorOptions:x,responderOptions:A}=r;this.ai=e,this.agents=r.agents?.local,this.agentFunctions=r.functions?.local??[],this.debug=o,this.options=r,this.runtime=a??new Vt;let{agents:T,fields:b,functions:R,...O}=r;this.program=new Oe(n,O);let _=this.program.getSignature().getInputFields(),M=um(i,_,im);this.contextPromptMaxCharsByField=M.promptMaxCharsByField,this.rlmConfig={contextFields:M.contextFieldNames,sharedFields:r.fields?.shared,runtime:this.runtime,maxSubAgentCalls:l,maxRuntimeChars:u,maxBatchedLlmQueryConcurrency:c,maxTurns:p,trajectoryPruning:d,contextManagement:m,actorFields:g,actorCallback:h,mode:f},this.recursionForwardOptions=y;let{description:G,...B}=x??{},{description:L,...I}=A??{};this.actorDescription=G,this.actorForwardOptions=B,this.responderDescription=L,this.responderForwardOptions=I;let v=this.agents;for(let W of v??[]){let se=W.getFunction().name;this.program.register(W,se)}if(t&&(this.func={name:mm(t.name),description:t.description,parameters:this._buildFuncParameters(),func:async()=>{throw new Error("Use getFunction() to get a callable wrapper")}}),this.program.getSignature().getDescription())throw new Error("AxAgent does not support signature-level descriptions. Use setActorDescription() and/or setResponderDescription() to customize the actor and responder prompts independently.");let E=this.program.getSignature().getOutputFields(),$=g??[];this.actorFieldNames=$;for(let W of $)if(!E.some(se=>se.name===W))throw new Error(`RLM actorField "${W}" not found in output signature`);let S=r.fields?.shared??[];this.sharedFieldNames=S;for(let W of S)if(!_.some(se=>se.name===W))throw new Error(`sharedField "${W}" not found in signature input fields`);this.excludedSharedFields=r.fields?.excluded??[];let P=r.fields?.globallyShared??[];this.globalSharedFieldNames=P;for(let W of P)if(!_.some(se=>se.name===W))throw new Error(`globalSharedField "${W}" not found in signature input fields`);let j=r.agents?.shared??[],N=r.agents?.globallyShared??[];this.excludedAgents=r.agents?.excluded??[];let K=r.functions?.shared??[],re=r.functions?.globallyShared??[];this.excludedAgentFunctions=r.functions?.excluded??[];let ne=[...this.agentFunctions,...K,...re];for(let W of ne)if(!W.parameters)throw new Error(`Agent function "${W.name}" must define parameters schema for agent runtime usage.`);let oe=new Set(["agents","llmQuery","final","ask_clarification"]);for(let W of ne){let se=W.namespace??"utils";if(oe.has(se))throw new Error(`Agent function namespace "${se}" is reserved`)}if(S.length>0&&v){let W=_.filter(se=>S.includes(se.name));for(let se of v){if(!(se instanceof s))continue;let Ie=new Set(se.getExcludedSharedFields()),te=W.filter(he=>!Ie.has(he.name));te.length!==0&&se._extendForSharedFields(te,this.rlmConfig.contextFields)}}if(j.length>0&&v)for(let W of v)W instanceof s&&W._extendForSharedAgents(j);if(P.length>0&&v){let W=_.filter(se=>P.includes(se.name));for(let se of v){if(!(se instanceof s))continue;let Ie=new Set(se.getExcludedSharedFields()),te=W.filter(he=>!Ie.has(he.name));te.length!==0&&se._extendForGlobalSharedFields(te,this.rlmConfig.contextFields)}}if(N.length>0&&v)for(let W of v)W instanceof s&&W._extendForGlobalSharedAgents(N);if(K.length>0&&v)for(let W of v)W instanceof s&&W._extendForSharedAgentFunctions(K);if(re.length>0&&v)for(let W of v)W instanceof s&&W._extendForGlobalSharedAgentFunctions(re);this._buildSplitPrograms(),this.program.register(this.actorProgram,"actor"),this.program.register(this.responderProgram,"responder")}_buildSplitPrograms(){let e=this.program.getSignature().getInputFields(),t=this.rlmConfig.contextFields,n=[...this.sharedFieldNames,...this.globalSharedFieldNames],r=e.filter(A=>t.includes(A.name)),o=r.filter(A=>this.contextPromptMaxCharsByField.has(A.name)&&!n.includes(A.name)).map(A=>({...A,isOptional:!0})),i=e.filter(A=>!t.includes(A.name)&&!n.includes(A.name)),a=this.program.getSignature().getOutputFields(),l=a.filter(A=>this.actorFieldNames.includes(A.name)),u=a.filter(A=>!this.actorFieldNames.includes(A.name)),c=Ae().addInputFields(i).addInputFields(o).input("contextMetadata",Ae.string("Metadata about pre-loaded context variables (type and size)")).input("actionLog",Ae.string("Chronological trace of code executions or actions and their outputs so far")).output("javascriptCode",Ae.code("JavaScript code to execute in runtime session"));l.length>0&&(c=c.addOutputFields(l));let p=c.build(),d=Ae().addInputFields(i).input("contextData",Ae.json("Context data to help synthesize the final answer.")).addOutputFields(u).build(),m=this.rlmConfig.maxSubAgentCalls??Ic,g=this.rlmConfig.maxTurns??Cc,h=this.agents?.map(A=>{let T=A.getFunction();return{name:T.name,description:T.description,parameters:T.parameters}})??[],f=this.agentFunctions.map(A=>({name:A.name,description:A.description,parameters:A.parameters,returns:A.returns,namespace:A.namespace??"utils"})),y=vs(this.actorDescription,r,u,{runtimeUsageInstructions:this.runtime.getUsageInstructions(),maxSubAgentCalls:m,maxTurns:g,hasInspectRuntime:!!this.rlmConfig.contextManagement?.stateInspection,agents:h,agentFunctions:f}),x=Ss(this.responderDescription,r);this.actorProgram=new Oe(p,{...this._genOptions,description:y}),this.responderProgram=new Oe(d,{...this._genOptions,description:x})}_extendForSharedFields(e,t){let n=this.program.getSignature(),r=n.getInputFields(),o=!1;for(let i of e){if(r.some(a=>a.name===i.name)){if(this._parentSharedFields.has(i.name))throw new Error(`Duplicate shared field "${i.name}" \u2014 already propagated from a parent`);continue}this._parentSharedFields.add(i.name),n.addInputField(i),o=!0}o&&this.program.setSignature(n);for(let i of e)t.includes(i.name)&&!this.rlmConfig.contextFields.includes(i.name)&&this.rlmConfig.contextFields.push(i.name);this._buildSplitPrograms(),this.func&&(this.func.parameters=this._buildFuncParameters())}_extendForSharedAgents(e){if(e.length===0)return;let t=new Set((this.agents??[]).map(o=>o.getFunction().name)),n=new Set(this.excludedAgents),r=[];for(let o of e){if(o===this)continue;let i=o.getFunction().name;if(!n.has(i)){if(t.has(i)){if(this._parentSharedAgents.has(i))throw new Error(`Duplicate shared agent "${i}" \u2014 already propagated from a parent`);continue}this._parentSharedAgents.add(i),t.add(i),r.push(o)}}if(r.length!==0){this.agents=[...this.agents??[],...r];for(let o of r){let i=o.getFunction().name;this.program.register(o,i)}this._buildSplitPrograms()}}_extendForGlobalSharedFields(e,t){let n=this.program.getSignature(),r=n.getInputFields(),o=!1;for(let i of e){if(r.some(a=>a.name===i.name)){if(this._parentSharedFields.has(i.name))throw new Error(`Duplicate shared field "${i.name}" \u2014 already propagated from a parent`);continue}this._parentSharedFields.add(i.name),n.addInputField(i),o=!0}o&&this.program.setSignature(n);for(let i of e)t.includes(i.name)&&!this.rlmConfig.contextFields.includes(i.name)&&this.rlmConfig.contextFields.push(i.name);for(let i of e)this.sharedFieldNames.includes(i.name)||this.sharedFieldNames.push(i.name);if(this._buildSplitPrograms(),this.func&&(this.func.parameters=this._buildFuncParameters()),this.agents)for(let i of this.agents){if(!(i instanceof s))continue;let a=new Set(i.getExcludedSharedFields()),l=e.filter(u=>!a.has(u.name));l.length!==0&&i._extendForGlobalSharedFields(l,t)}}_extendForGlobalSharedAgents(e){let t=this.agents?this.agents.filter(n=>n instanceof s):[];this._extendForSharedAgents(e);for(let n of t)n._extendForGlobalSharedAgents(e)}_extendForSharedAgentFunctions(e){if(e.length===0)return;let t=new Set(this.agentFunctions.map(o=>`${o.namespace??"utils"}.${o.name}`)),n=new Set(this.excludedAgentFunctions),r=[];for(let o of e){if(n.has(o.name))continue;let i=`${o.namespace??"utils"}.${o.name}`;if(t.has(i)){if(this._parentSharedAgentFunctions.has(i))throw new Error(`Duplicate shared agent function "${i}" \u2014 already propagated from a parent`);continue}this._parentSharedAgentFunctions.add(i),t.add(i),r.push(o)}r.length!==0&&(this.agentFunctions=[...this.agentFunctions,...r],this._buildSplitPrograms())}_extendForGlobalSharedAgentFunctions(e){let t=this.agents?this.agents.filter(n=>n instanceof s):[];this._extendForSharedAgentFunctions(e);for(let n of t)n._extendForGlobalSharedAgentFunctions(e)}stop(){this._stopRequested=!0;for(let e of this.activeAbortControllers)e.abort("Stopped by user");this.program.stop(),this.actorProgram.stop(),this.responderProgram.stop()}getId(){return this.program.getId()}setId(e){this.program.setId(e)}namedPrograms(){return this.program.namedPrograms()}getTraces(){return this.program.getTraces()}setDemos(e,t){this.program.setDemos(e,t)}getUsage(){return this.program.getUsage()}resetUsage(){this.program.resetUsage()}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,o)=>{let i=this.ai??o?.ai;if(!i)throw new Error("AI service is required to run the agent");let a=await e(i,r,o),u=this.program.getSignature().getOutputFields();return Object.keys(a).map(p=>{let d=u.find(m=>m.name===p);return d?`${d.title}: ${a[p]}`:`${p}: ${a[p]}`}).join(`
782
+ `)}}}getExcludedSharedFields(){return this.excludedSharedFields}getExcludedAgents(){return this.excludedAgents}getExcludedAgentFunctions(){return this.excludedAgentFunctions}getSignature(){return this.program.getSignature()}setSignature(e){this.program.setSignature(e)}applyOptimization(e){this.program.applyOptimization?.(e)}async _runActorLoop(e,t,n,r){let o=this.rlmConfig,i=this.runtime,a=n?.debug??this.debug??e?.getOptions()?.debug??!1,l={},u={},c;Array.isArray(t)?c=t.filter(U=>U.role==="user").reduce((U,X)=>({...U,...X.values}),{}):c=t;let p=[...this.sharedFieldNames,...this.globalSharedFieldNames];for(let[U,X]of Object.entries(c))o.contextFields.includes(U)?l[U]=X:p.includes(U)||(u[U]=X);let d={};for(let U of p)U in c&&(d[U]=c[U]),U in l&&(d[U]=l[U]);for(let U of o.contextFields)if(!(U in l))throw new Error(`RLM contextField "${U}" is missing from input values`);let m={};for(let[U,X]of this.contextPromptMaxCharsByField){if(p.includes(U)||!(U in l))continue;let J=l[U];lm(J)<=X&&(m[U]=J)}let g=o.maxSubAgentCalls??Ic,h=o.maxRuntimeChars??rm,f=Math.max(1,o.maxBatchedLlmQueryConcurrency??om),y=o.maxTurns??Cc,x=0,A=Math.floor(g*.8),T=this.recursionForwardOptions?.maxDepth??sm,b=Math.max(0,T),{maxDepth:R,...O}=this.recursionForwardOptions??{},{functions:_,description:M,mem:G,sessionId:B,...L}=n??{},I={...this.recursionForwardOptions??{},maxDepth:Math.max(0,b-1)},v=["context"],E=Ae().input("task",Ae.string("Task for recursive analysis")).input("context",Ae.json("Optional context for the recursive task")).output("answer",Ae.string("Answer from recursive analysis")).build(),S=(o.mode??"simple")==="advanced"&&(I.maxDepth??0)>0?"advanced":"simple",P;b>0&&(S==="advanced"?P=new s({signature:E},{debug:a,...o,agents:{local:this.agents},functions:{local:this.agentFunctions},contextFields:v,actorFields:void 0,recursionOptions:I,actorOptions:this.actorForwardOptions,responderOptions:this.responderForwardOptions}):P=new Oe(E,I));let j=U=>{if(U==null)return"";if(typeof U=="string")return wt(U,h);try{return wt(JSON.stringify(U),h)}catch{return wt(String(U),h)}},N=async(U,X)=>{if(!Array.isArray(U)&&typeof U=="object"&&U!==null&&"query"in U)return N(U.query,U.context??X);if(r?.aborted)throw new $e("rlm-llm-query",r.reason?String(r.reason):"Aborted");if(Array.isArray(U))return pm(U,f,async fe=>{try{return await N(fe.query,fe.context)}catch(ue){if(ue instanceof $e)throw ue;return`[ERROR] ${ue instanceof Error?ue.message:String(ue)}`}});let le=await(async(fe,ue)=>{let xe=ue===void 0?void 0:typeof ue=="string"?wt(ue,h):ue;if(x++,x>g)return`[ERROR] Sub-query budget exhausted (${g}/${g}). Use the data you have already accumulated to produce your final answer.`;if(b<=0||!P)return`[ERROR] Recursion depth limit reached (${T}).`;let Re=3,Ne;for(let Le=0;Le<Re;Le++)try{let _e=await P.forward(e,{task:fe,...xe!==void 0?{context:xe}:S==="advanced"?{context:""}:{}},{...L,...O,abortSignal:r,debug:a});return j(_e.answer)}catch(_e){if(Ne=_e,!am(_e)||Le>=Re-1)throw _e;let At=Math.min(6e4,1e3*Math.pow(2,Le));await new Promise((ct,yt)=>{let nt=!1,ce,Se=()=>{r&&ce&&r.removeEventListener("abort",ce)},Ke=setTimeout(()=>{nt||(nt=!0,Se(),ct())},At);if(r){if(ce=()=>{nt||(nt=!0,clearTimeout(Ke),Se(),yt(new $e("rlm-llm-query-retry-backoff",r.reason?String(r.reason):"Aborted during retry backoff")))},r.aborted){ce();return}r.addEventListener("abort",ce,{once:!0})}})}throw Ne})(U,X);return x===A?`${le}
793
783
  [WARNING] ${x}/${g} sub-queries used. Plan to wrap up soon.`:le},K=this.buildRuntimeGlobals(r,d,e),re,ne=(U,X)=>{if(X.length===0)throw new Error(`${U}() requires at least one argument`);re={type:U,args:X}},oe=(...U)=>ne("final",U),W=(...U)=>ne("ask_clarification",U),se=[...new Set(this.agentFunctions.map(U=>U.namespace??"utils"))],Ie={...c},te=new Set(["inputs","llmQuery","agents","final","ask_clarification",...se,...o.contextManagement?.stateInspection?["inspect_runtime"]:[],...Object.keys(K)]),he=Object.fromEntries(Object.entries(Ie).filter(([U])=>!te.has(U))),ve=[...te,...Object.keys(he)],we=o.contextManagement?.stateInspection?async()=>{try{let U=bc(ve),X=await F.execute(U,{signal:r,reservedNames:ve});return typeof X=="string"?X:String(X)}catch(U){return`[inspect_runtime error: ${U instanceof Error?U.message:String(U)}]`}}:void 0,Me=()=>i.createSession({...he,inputs:Ie,llmQuery:N,final:oe,ask_clarification:W,...we?{inspect_runtime:we}:{},...K}),w="[The JavaScript runtime was restarted; all global state was lost and must be recreated if needed.]",F=Me(),k=!1,C=U=>U instanceof Error&&U.message==="Session is closed",D=U=>U instanceof Error&&U.message==="Execution timed out",z=U=>{if(U===void 0)return"(no output)";if(typeof U=="string")return wt(U||"(no output)",h);try{return wt(JSON.stringify(U,null,2),h)}catch{return wt(String(U),h)}},q=U=>{let X=U,J=X?.name??"Error",Z=X?.message??String(U),le=[`${J}: ${Z}`];if(X?.data!==void 0)try{le.push(`Data: ${JSON.stringify(X.data,null,2)}`)}catch{le.push(`Data: ${String(X.data)}`)}if(X?.cause!==void 0){let fe=(ue,xe)=>{if(xe>4)return"[cause chain truncated]";let Re=ue,Ne=Re?.name??"Error",Le=Re?.message??String(ue),_e=[`${Ne}: ${Le}`];if(Re?.data!==void 0)try{_e.push(`Data: ${JSON.stringify(Re.data,null,2)}`)}catch{_e.push(`Data: ${String(Re.data)}`)}return Re?.cause!==void 0&&_e.push(`Caused by: ${fe(Re.cause,xe+1)}`),_e.join(`
794
784
  `)};le.push(`Caused by: ${fe(X.cause,1)}`)}return wt(le.join(`
795
785
  `),h)},ee=async U=>{try{let X=await F.execute(U,{signal:r,reservedNames:ve});return{output:z(X),isError:!1}}catch(X){if(r?.aborted)throw new $e("rlm-session",r.reason??"Aborted");if(X instanceof Error&&(X.name==="AbortError"||X.message.startsWith("Aborted")))throw X;if(D(X)&&(k=!0),C(X)){if(!k)return{output:q(X),isError:!0};try{k=!1,F=Me(),re=void 0;let J=await F.execute(U,{signal:r,reservedNames:ve});return{output:wt(`${w}
796
786
  ${z(J)}`,h),isError:!1}}catch(J){return D(J)&&(k=!0),{output:wt(`${w}
797
- ${q(J)}`,h),isError:!0}}}if(D(X))return{output:q(X),isError:!0};throw X}},H=dm(l,{promptMaxCharsByField:this.contextPromptMaxCharsByField,inlinedFields:new Set(Object.keys(m))})||"(none)",V=o.contextManagement,Y={errorPruning:V?.errorPruning??o.trajectoryPruning??!1,hindsightEvaluation:V?.hindsightEvaluation??!1,tombstoning:V?.tombstoning,pruneRank:V?.pruneRank??2},Q=[],ie={...this._genOptions,...this.actorForwardOptions,...n,debug:a,abortSignal:r},ye={},me=V?.stateInspection?.contextThreshold;try{for(let U=0;U<y;U++){let X=ks(Q)||"(no actions yet)";me&&X.length>me&&(X+="\n\n[HINT: Action log is large. Call `const state = await inspect_runtime()` for a compact snapshot of current variables instead of re-reading old outputs.]");let J=await this.actorProgram.forward(e,{...u,...m,contextMetadata:H,actionLog:X},ie);U===0&&(ie.debugHideSystemPrompt=!0),o.actorCallback&&await o.actorCallback(J);for(let Re of this.actorFieldNames)Re in J&&(ye[Re]=J[Re]);let Z=J.javascriptCode,le=Z?.trim();if(!Z||!le)break;Z=le;let fe="";if(this.actorFieldNames.length>0){let Re=this.actorFieldNames.filter(Ne=>Ne in J).map(Ne=>`${Ne}: ${J[Ne]}`).join(`
787
+ ${q(J)}`,h),isError:!0}}}if(D(X))return{output:q(X),isError:!0};throw X}},H=cm(l,{promptMaxCharsByField:this.contextPromptMaxCharsByField,inlinedFields:new Set(Object.keys(m))})||"(none)",V=o.contextManagement,Y={errorPruning:V?.errorPruning??o.trajectoryPruning??!1,hindsightEvaluation:V?.hindsightEvaluation??!1,tombstoning:V?.tombstoning,pruneRank:V?.pruneRank??2},Q=[],ie={...this._genOptions,...this.actorForwardOptions,...n,debug:a,abortSignal:r},ye={},me=V?.stateInspection?.contextThreshold;try{for(let U=0;U<y;U++){let X=ks(Q)||"(no actions yet)";me&&X.length>me&&(X+="\n\n[HINT: Action log is large. Call `const state = await inspect_runtime()` for a compact snapshot of current variables instead of re-reading old outputs.]");let J=await this.actorProgram.forward(e,{...u,...m,contextMetadata:H,actionLog:X},ie);U===0&&(ie.debugHideSystemPrompt=!0),o.actorCallback&&await o.actorCallback(J);for(let Re of this.actorFieldNames)Re in J&&(ye[Re]=J[Re]);let Z=J.javascriptCode,le=Z?.trim();if(!Z||!le)break;Z=le;let fe="";if(this.actorFieldNames.length>0){let Re=this.actorFieldNames.filter(Ne=>Ne in J).map(Ne=>`${Ne}: ${J[Ne]}`).join(`
798
788
  `);Re&&(fe=`
799
789
  Actor fields:
800
- ${Re}`)}re=void 0;let{output:ue,isError:xe}=await ee(Z);if(Q.push({turn:U+1,code:Z,output:ue,actorFieldsOutput:fe,tags:xe?["error"]:[]}),await yc(Q,Q.length-1,Y,e),re)break}}finally{try{F.close()}catch{}}let be=re??{type:"final",args:[ks(Q)||"(no actions were taken)"]};return{nonContextValues:u,contextMetadata:H,actionLog:ks(Q),actorResult:be,actorFieldValues:ye}}async forward(e,t,n){let r=new AbortController;this._stopRequested&&r.abort("Stopped by user (pre-forward)");let o=Ot(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);try{let i=this.ai??e,a=n?.debug??this.debug??i?.getOptions()?.debug??!1,{nonContextValues:l,actorResult:u,actorFieldValues:c}=await this._runActorLoop(i,t,n,o),p={...this._genOptions,...this.responderForwardOptions,...n,debug:a,abortSignal:o,maxSteps:1};return{...await this.responderProgram.forward(i,{...l,contextData:u},p),...c}}finally{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 o=Ot(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);try{let i=this.ai??e,a=n?.debug??this.debug??i?.getOptions()?.debug??!1,{nonContextValues:l,contextMetadata:u,actorResult:c,actorFieldValues:p}=await this._runActorLoop(i,t,n,o),d={...this._genOptions,...this.responderForwardOptions,...n,debug:a,abortSignal:o,maxSteps:1};for await(let m of this.responderProgram.streamingForward(i,{...l,contextMetadata:u,actorResult:c},d))yield m;Object.keys(p).length>0&&(yield{version:1,index:0,delta:p})}finally{this.activeAbortControllers.delete(r),this._stopRequested=!1}}static wrapFunction(e,t,n){return async(...r)=>{let o;if(r.length===1&&typeof r[0]=="object"&&r[0]!==null&&!Array.isArray(r[0]))o=r[0];else{let i=e.parameters?.properties?Object.keys(e.parameters.properties):[];o={},i.forEach((a,l)=>{l<r.length&&(o[a]=r[l])})}return await e.func(o,{abortSignal:t,ai:n})}}static wrapFunctionWithSharedFields(e,t,n,r){return!n||Object.keys(n).length===0?s.wrapFunction(e,t,r):async(...o)=>{let i;if(o.length===1&&typeof o[0]=="object"&&o[0]!==null&&!Array.isArray(o[0]))i=o[0];else{let l=e.parameters?.properties?Object.keys(e.parameters.properties):[];i={},l.forEach((u,c)=>{c<o.length&&(i[u]=o[c])})}let a={...n,...i};return await e.func(a,{abortSignal:t,ai:r})}}buildRuntimeGlobals(e,t,n){let r={};for(let o of this.agentFunctions){let i=o.namespace??"utils";(!r[i]||typeof r[i]!="object")&&(r[i]={}),r[i][o.name]=s.wrapFunction(o,e,n)}if(this.agents&&this.agents.length>0){let o={};for(let i of this.agents){let a=i.getFunction(),l=new Set(i.getExcludedSharedFields?.()??[]),u={};if(t)for(let[c,p]of Object.entries(t))l.has(c)||(u[c]=p);o[a.name]=s.wrapFunctionWithSharedFields(a,e,u,n)}r.agents=o}return r}get _genOptions(){if(!this.options)return{};let{agents:e,fields:t,functions:n,...r}=this.options;return r}_buildFuncParameters(){let e=this.program.getSignature().toInputJSONSchema();return this._parentSharedFields.size>0?gm(e,this._parentSharedFields):e}};function Tc(s,e){let t=typeof s=="string"?Pe.create(s):s,{ai:n,agentIdentity:r,...o}=e;return new qr({ai:n,agentIdentity:r,signature:t},o)}function um(s){return s instanceof Ve&&s.status>=500&&s.status<600?!0:s instanceof Ue||s instanceof tt}function wt(s,e){return s.length<=e?s:`${s.slice(0,e)}
801
- ...[truncated ${s.length-e} chars]`}function cm(s){if(typeof s=="string")return s.length;try{return JSON.stringify(s).length}catch{return String(s).length}}function pm(s,e,t){let n=new Set(e.map(a=>a.name)),r=new Set,o=[],i=new Map;for(let a of s){let l=typeof a=="string"?a:a.field;if(!n.has(l))throw new Error(`RLM contextField "${l}" not found in signature`);if(r.has(l))throw new Error(`Duplicate contextField "${l}"`);if(r.add(l),o.push(l),typeof a!="string"){let u=a.promptMaxChars??t;if(!Number.isFinite(u)||u<0)throw new Error(`contextField "${l}" promptMaxChars must be a finite number >= 0`);i.set(l,u)}}return{contextFieldNames:o,promptMaxCharsByField:i}}function dm(s,e){let t=[];for(let[n,r]of Object.entries(s)){let o=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?.promptMaxCharsByField?.get(n),l=a===void 0?"runtime-only":e?.inlinedFields?.has(n)?`inline (<=${a} chars)`:`runtime-only (>${a} chars)`;t.push(`- ${n}: type=${o}, size=${i}, prompt=${l}`)}return t.join(`
802
- `)}async function mm(s,e,t){if(s.length===0)return[];let n=new Array(s.length),r=0,o=Math.max(1,Math.min(e,s.length)),i=Array.from({length:o},async()=>{for(;;){let a=r++;if(a>=s.length)return;let l=s[a];if(l===void 0)return;n[a]=await t(l,a)}});return await Promise.all(i),n}function gm(s,e){if(!s.properties||e.size===0)return s;let t=Object.fromEntries(Object.entries(s.properties).filter(([r])=>!e.has(r))),n=s.required?.filter(r=>!e.has(r));return{...s,properties:t,...n!==void 0?{required:n}:{}}}function hm(s){return s.split(/[^a-zA-Z0-9]/).map((n,r)=>{let o=n.toLowerCase();return r>0&&o&&o[0]?o[0].toUpperCase()+o.slice(1):o}).join("")}var wc=(s,e)=>{let t=e?.maxHops??3,n=e?.qualityThreshold??.8,r=e?.maxIterations??2,o=e?.qualityTarget??.85,i=e?.disableQualityHealing??!1;return xs({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:o,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 l=a.queryGeneratorResult?.searchQuery||a.searchQuery||a.originalQuestion,u=await s(l);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 l=a.currentQueries||[],u=l.length>0?await Promise.all(l.filter(Boolean).map(c=>s(c))):[];return{...a,retrievalResults:u}}).execute("evidenceSynthesizer",a=>{let l=Array.isArray(a.allEvidence)?a.allEvidence:[],u=Array.isArray(a.retrievalResults)?a.retrievalResults:[],c=[...l,...u].filter(Boolean);return{collectedEvidence:c.length>0?c:["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 l=(a.accumulatedContext||"").toString().trim();if(l.length>0)return l;let u=(a.synthesizedEvidence||"").toString().trim();if(u.length>0)return u;let p=(Array.isArray(a.allEvidence)?a.allEvidence.filter(Boolean).join(`
803
- `):"").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 l=a.currentIssues||[],u=l.length>0?`${a.originalQuestion} addressing issues: ${l.join(", ")}`:`${a.originalQuestion} quality improvement`,c=await s(u);return{...a,healingResult:{healingDocument:c}}}).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 Lc(fm);})();
790
+ ${Re}`)}re=void 0;let{output:ue,isError:xe}=await ee(Z);if(Q.push({turn:U+1,code:Z,output:ue,actorFieldsOutput:fe,tags:xe?["error"]:[]}),await yc(Q,Q.length-1,Y,e),re)break}}finally{try{F.close()}catch{}}let be=re??{type:"final",args:[ks(Q)||"(no actions were taken)"]};return{nonContextValues:u,contextMetadata:H,actionLog:ks(Q),actorResult:be,actorFieldValues:ye}}async forward(e,t,n){let r=new AbortController;this._stopRequested&&r.abort("Stopped by user (pre-forward)");let o=Ot(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);try{let i=this.ai??e,a=n?.debug??this.debug??i?.getOptions()?.debug??!1,{nonContextValues:l,actorResult:u,actorFieldValues:c}=await this._runActorLoop(i,t,n,o),p={...this._genOptions,...this.responderForwardOptions,...n,debug:a,abortSignal:o,maxSteps:1};return{...await this.responderProgram.forward(i,{...l,contextData:u},p),...c}}finally{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 o=Ot(r.signal,n?.abortSignal);this.activeAbortControllers.add(r);try{let i=this.ai??e,a=n?.debug??this.debug??i?.getOptions()?.debug??!1,{nonContextValues:l,contextMetadata:u,actorResult:c,actorFieldValues:p}=await this._runActorLoop(i,t,n,o),d={...this._genOptions,...this.responderForwardOptions,...n,debug:a,abortSignal:o,maxSteps:1};for await(let m of this.responderProgram.streamingForward(i,{...l,contextMetadata:u,actorResult:c},d))yield m;Object.keys(p).length>0&&(yield{version:1,index:0,delta:p})}finally{this.activeAbortControllers.delete(r),this._stopRequested=!1}}static wrapFunction(e,t,n){return async(...r)=>{let o;if(r.length===1&&typeof r[0]=="object"&&r[0]!==null&&!Array.isArray(r[0]))o=r[0];else{let i=e.parameters?.properties?Object.keys(e.parameters.properties):[];o={},i.forEach((a,l)=>{l<r.length&&(o[a]=r[l])})}return await e.func(o,{abortSignal:t,ai:n})}}static wrapFunctionWithSharedFields(e,t,n,r){return!n||Object.keys(n).length===0?s.wrapFunction(e,t,r):async(...o)=>{let i;if(o.length===1&&typeof o[0]=="object"&&o[0]!==null&&!Array.isArray(o[0]))i=o[0];else{let l=e.parameters?.properties?Object.keys(e.parameters.properties):[];i={},l.forEach((u,c)=>{c<o.length&&(i[u]=o[c])})}let a={...n,...i};return await e.func(a,{abortSignal:t,ai:r})}}buildRuntimeGlobals(e,t,n){let r={};for(let o of this.agentFunctions){let i=o.namespace??"utils";(!r[i]||typeof r[i]!="object")&&(r[i]={}),r[i][o.name]=s.wrapFunction(o,e,n)}if(this.agents&&this.agents.length>0){let o={};for(let i of this.agents){let a=i.getFunction(),l=new Set(i.getExcludedSharedFields?.()??[]),u={};if(t)for(let[c,p]of Object.entries(t))l.has(c)||(u[c]=p);o[a.name]=s.wrapFunctionWithSharedFields(a,e,u,n)}r.agents=o}return r}get _genOptions(){if(!this.options)return{};let{agents:e,fields:t,functions:n,...r}=this.options;return r}_buildFuncParameters(){let e=this.program.getSignature().toInputJSONSchema();return this._parentSharedFields.size>0?dm(e,this._parentSharedFields):e}};function Tc(s,e){let t=typeof s=="string"?Pe.create(s):s,{ai:n,agentIdentity:r,...o}=e;return new qr({ai:n,agentIdentity:r,signature:t},o)}function am(s){return s instanceof Ve&&s.status>=500&&s.status<600?!0:s instanceof Ue||s instanceof tt}function wt(s,e){return s.length<=e?s:`${s.slice(0,e)}
791
+ ...[truncated ${s.length-e} chars]`}function lm(s){if(typeof s=="string")return s.length;try{return JSON.stringify(s).length}catch{return String(s).length}}function um(s,e,t){let n=new Set(e.map(a=>a.name)),r=new Set,o=[],i=new Map;for(let a of s){let l=typeof a=="string"?a:a.field;if(!n.has(l))throw new Error(`RLM contextField "${l}" not found in signature`);if(r.has(l))throw new Error(`Duplicate contextField "${l}"`);if(r.add(l),o.push(l),typeof a!="string"){let u=a.promptMaxChars??t;if(!Number.isFinite(u)||u<0)throw new Error(`contextField "${l}" promptMaxChars must be a finite number >= 0`);i.set(l,u)}}return{contextFieldNames:o,promptMaxCharsByField:i}}function cm(s,e){let t=[];for(let[n,r]of Object.entries(s)){let o=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?.promptMaxCharsByField?.get(n),l=a===void 0?"runtime-only":e?.inlinedFields?.has(n)?`inline (<=${a} chars)`:`runtime-only (>${a} chars)`;t.push(`- ${n}: type=${o}, size=${i}, prompt=${l}`)}return t.join(`
792
+ `)}async function pm(s,e,t){if(s.length===0)return[];let n=new Array(s.length),r=0,o=Math.max(1,Math.min(e,s.length)),i=Array.from({length:o},async()=>{for(;;){let a=r++;if(a>=s.length)return;let l=s[a];if(l===void 0)return;n[a]=await t(l,a)}});return await Promise.all(i),n}function dm(s,e){if(!s.properties||e.size===0)return s;let t=Object.fromEntries(Object.entries(s.properties).filter(([r])=>!e.has(r))),n=s.required?.filter(r=>!e.has(r));return{...s,properties:t,...n!==void 0?{required:n}:{}}}function mm(s){return s.split(/[^a-zA-Z0-9]/).map((n,r)=>{let o=n.toLowerCase();return r>0&&o&&o[0]?o[0].toUpperCase()+o.slice(1):o}).join("")}var wc=(s,e)=>{let t=e?.maxHops??3,n=e?.qualityThreshold??.8,r=e?.maxIterations??2,o=e?.qualityTarget??.85,i=e?.disableQualityHealing??!1;return xs({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:o,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 l=a.queryGeneratorResult?.searchQuery||a.searchQuery||a.originalQuestion,u=await s(l);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 l=a.currentQueries||[],u=l.length>0?await Promise.all(l.filter(Boolean).map(c=>s(c))):[];return{...a,retrievalResults:u}}).execute("evidenceSynthesizer",a=>{let l=Array.isArray(a.allEvidence)?a.allEvidence:[],u=Array.isArray(a.retrievalResults)?a.retrievalResults:[],c=[...l,...u].filter(Boolean);return{collectedEvidence:c.length>0?c:["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 l=(a.accumulatedContext||"").toString().trim();if(l.length>0)return l;let u=(a.synthesizedEvidence||"").toString().trim();if(u.length>0)return u;let p=(Array.isArray(a.allEvidence)?a.allEvidence.filter(Boolean).join(`
793
+ `):"").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 l=a.currentIssues||[],u=l.length>0?`${a.originalQuestion} addressing issues: ${l.join(", ")}`:`${a.originalQuestion} quality improvement`,c=await s(u);return{...a,healingResult:{healingDocument:c}}}).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 Lc(gm);})();
804
794
  //# sourceMappingURL=index.global.js.map