edgeone 1.6.24 → 1.6.26
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.
|
@@ -142,7 +142,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
|
|
|
142
142
|
`.repeat(e));Cz.displayName="Newline";Fb.default=Cz});var Iz=J(Lb=>{"use strict";var Dz=Lb&&Lb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Lb,"__esModule",{value:!0});var Ike=Dz(yo()),Oke=Dz(pC()),kz=()=>Ike.default.createElement(Oke.default,{flexGrow:1});kz.displayName="Spacer";Lb.default=kz});var mC=J(Mb=>{"use strict";var Nke=Mb&&Mb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Mb,"__esModule",{value:!0});var Rke=yo(),Fke=Nke(kR()),Lke=()=>Rke.useContext(Fke.default);Mb.default=Lke});var Nz=J(Bb=>{"use strict";var Mke=Bb&&Bb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Bb,"__esModule",{value:!0});var Oz=yo(),Bke=Mke(mC()),jke=(e,t={})=>{let{stdin:r,setRawMode:s,internal_exitOnCtrlC:a}=Bke.default();Oz.useEffect(()=>{if(t.isActive!==!1)return s(!0),()=>{s(!1)}},[t.isActive,s]),Oz.useEffect(()=>{if(t.isActive===!1)return;let n=l=>{let f=String(l),m={upArrow:f==="\x1B[A",downArrow:f==="\x1B[B",leftArrow:f==="\x1B[D",rightArrow:f==="\x1B[C",pageDown:f==="\x1B[6~",pageUp:f==="\x1B[5~",return:f==="\r",escape:f==="\x1B",ctrl:!1,shift:!1,tab:f===" "||f==="\x1B[Z",backspace:f==="\b",delete:f==="\x7F"||f==="\x1B[3~",meta:!1};f<=""&&!m.return&&(f=String.fromCharCode(f.charCodeAt(0)+97-1),m.ctrl=!0),f.startsWith("\x1B")&&(f=f.slice(1),m.meta=!0);let y=f>="A"&&f<="Z",v=f>="\u0410"&&f<="\u042F";f.length===1&&(y||v)&&(m.shift=!0),m.tab&&f==="[Z"&&(m.shift=!0),(m.tab||m.backspace||m.delete)&&(f=""),(!(f==="c"&&m.ctrl)||!a)&&e(f,m)};return r==null||r.on("data",n),()=>{r==null||r.off("data",n)}},[t.isActive,r,a,e])};Bb.default=jke});var Rz=J(jb=>{"use strict";var qke=jb&&jb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(jb,"__esModule",{value:!0});var Uke=yo(),$ke=qke(AR()),Vke=()=>Uke.useContext($ke.default);jb.default=Vke});var Fz=J(qb=>{"use strict";var Hke=qb&&qb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(qb,"__esModule",{value:!0});var Wke=yo(),zke=Hke(OR()),Gke=()=>Wke.useContext(zke.default);qb.default=Gke});var Lz=J(Ub=>{"use strict";var Kke=Ub&&Ub.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ub,"__esModule",{value:!0});var Yke=yo(),Jke=Kke(RR()),Xke=()=>Yke.useContext(Jke.default);Ub.default=Xke});var Bz=J(Vb=>{"use strict";var Mz=Vb&&Vb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Vb,"__esModule",{value:!0});var $b=yo(),Qke=Mz(lC()),Zke=Mz(mC()),eIe=({isActive:e=!0,autoFocus:t=!1,id:r}={})=>{let{isRawModeSupported:s,setRawMode:a}=Zke.default(),{activeId:n,add:l,remove:f,activate:m,deactivate:y,focus:v}=$b.useContext(Qke.default),b=$b.useMemo(()=>r!=null?r:Math.random().toString().slice(2,7),[r]);return $b.useEffect(()=>(l(b,{autoFocus:t}),()=>{f(b)}),[b,t]),$b.useEffect(()=>{e?m(b):y(b)},[e,b]),$b.useEffect(()=>{if(!(!s||!e))return a(!0),()=>{a(!1)}},[e]),{isFocused:!!b&&n===b,focus:v}};Vb.default=eIe});var jz=J(Hb=>{"use strict";var tIe=Hb&&Hb.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Hb,"__esModule",{value:!0});var rIe=yo(),nIe=tIe(lC()),iIe=()=>{let e=rIe.useContext(nIe.default);return{enableFocus:e.enableFocus,disableFocus:e.disableFocus,focusNext:e.focusNext,focusPrevious:e.focusPrevious,focus:e.focus}};Hb.default=iIe});var qz=J($R=>{"use strict";Object.defineProperty($R,"__esModule",{value:!0});$R.default=e=>{var t,r,s,a;return{width:(r=(t=e.yogaNode)===null||t===void 0?void 0:t.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(s=e.yogaNode)===null||s===void 0?void 0:s.getComputedHeight())!==null&&a!==void 0?a:0}}});var yC=J(pc=>{"use strict";Object.defineProperty(pc,"__esModule",{value:!0});var sIe=bz();Object.defineProperty(pc,"render",{enumerable:!0,get:function(){return sIe.default}});var oIe=pC();Object.defineProperty(pc,"Box",{enumerable:!0,get:function(){return oIe.default}});var aIe=qR();Object.defineProperty(pc,"Text",{enumerable:!0,get:function(){return aIe.default}});var uIe=wz();Object.defineProperty(pc,"Static",{enumerable:!0,get:function(){return uIe.default}});var cIe=Pz();Object.defineProperty(pc,"Transform",{enumerable:!0,get:function(){return cIe.default}});var lIe=Az();Object.defineProperty(pc,"Newline",{enumerable:!0,get:function(){return lIe.default}});var pIe=Iz();Object.defineProperty(pc,"Spacer",{enumerable:!0,get:function(){return pIe.default}});var fIe=Nz();Object.defineProperty(pc,"useInput",{enumerable:!0,get:function(){return fIe.default}});var dIe=Rz();Object.defineProperty(pc,"useApp",{enumerable:!0,get:function(){return dIe.default}});var hIe=mC();Object.defineProperty(pc,"useStdin",{enumerable:!0,get:function(){return hIe.default}});var mIe=Fz();Object.defineProperty(pc,"useStdout",{enumerable:!0,get:function(){return mIe.default}});var yIe=Lz();Object.defineProperty(pc,"useStderr",{enumerable:!0,get:function(){return yIe.default}});var gIe=Bz();Object.defineProperty(pc,"useFocus",{enumerable:!0,get:function(){return gIe.default}});var vIe=jz();Object.defineProperty(pc,"useFocusManager",{enumerable:!0,get:function(){return vIe.default}});var xIe=qz();Object.defineProperty(pc,"measureElement",{enumerable:!0,get:function(){return xIe.default}})});var Uz=J((VR,_2)=>{(function(e,t){typeof VR=="object"&&typeof _2<"u"?_2.exports=t():typeof define=="function"&&define.amd?define(t):e.moment=t()})(VR,function(){"use strict";var e;function t(){return e.apply(null,arguments)}function r(E){e=E}function s(E){return E instanceof Array||Object.prototype.toString.call(E)==="[object Array]"}function a(E){return E!=null&&Object.prototype.toString.call(E)==="[object Object]"}function n(E,I){return Object.prototype.hasOwnProperty.call(E,I)}function l(E){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(E).length===0;var I;for(I in E)if(n(E,I))return!1;return!0}function f(E){return E===void 0}function m(E){return typeof E=="number"||Object.prototype.toString.call(E)==="[object Number]"}function y(E){return E instanceof Date||Object.prototype.toString.call(E)==="[object Date]"}function v(E,I){var q=[],z,ee=E.length;for(z=0;z<ee;++z)q.push(I(E[z],z));return q}function b(E,I){for(var q in I)n(I,q)&&(E[q]=I[q]);return n(I,"toString")&&(E.toString=I.toString),n(I,"valueOf")&&(E.valueOf=I.valueOf),E}function P(E,I,q,z){return Yh(E,I,q,z,!0).utc()}function k(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function g(E){return E._pf==null&&(E._pf=k()),E._pf}var B;Array.prototype.some?B=Array.prototype.some:B=function(E){var I=Object(this),q=I.length>>>0,z;for(z=0;z<q;z++)if(z in I&&E.call(this,I[z],z,I))return!0;return!1};function F(E){var I=null,q=!1,z=E._d&&!isNaN(E._d.getTime());if(z&&(I=g(E),q=B.call(I.parsedDateParts,function(ee){return ee!=null}),z=I.overflow<0&&!I.empty&&!I.invalidEra&&!I.invalidMonth&&!I.invalidWeekday&&!I.weekdayMismatch&&!I.nullInput&&!I.invalidFormat&&!I.userInvalidated&&(!I.meridiem||I.meridiem&&q),E._strict&&(z=z&&I.charsLeftOver===0&&I.unusedTokens.length===0&&I.bigHour===void 0)),Object.isFrozen==null||!Object.isFrozen(E))E._isValid=z;else return z;return E._isValid}function M(E){var I=P(NaN);return E!=null?b(g(I),E):g(I).userInvalidated=!0,I}var G=t.momentProperties=[],oe=!1;function te(E,I){var q,z,ee,ke=G.length;if(f(I._isAMomentObject)||(E._isAMomentObject=I._isAMomentObject),f(I._i)||(E._i=I._i),f(I._f)||(E._f=I._f),f(I._l)||(E._l=I._l),f(I._strict)||(E._strict=I._strict),f(I._tzm)||(E._tzm=I._tzm),f(I._isUTC)||(E._isUTC=I._isUTC),f(I._offset)||(E._offset=I._offset),f(I._pf)||(E._pf=g(I)),f(I._locale)||(E._locale=I._locale),ke>0)for(q=0;q<ke;q++)z=G[q],ee=I[z],f(ee)||(E[z]=ee);return E}function me(E){te(this,E),this._d=new Date(E._d!=null?E._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),oe===!1&&(oe=!0,t.updateOffset(this),oe=!1)}function Ce(E){return E instanceof me||E!=null&&E._isAMomentObject!=null}function Ie(E){t.suppressDeprecationWarnings===!1&&typeof console<"u"&&console.warn&&console.warn("Deprecation warning: "+E)}function Ve(E,I){var q=!0;return b(function(){if(t.deprecationHandler!=null&&t.deprecationHandler(null,E),q){var z=[],ee,ke,xt,fr=arguments.length;for(ke=0;ke<fr;ke++){if(ee="",typeof arguments[ke]=="object"){ee+=`
|
|
143
143
|
[`+ke+"] ";for(xt in arguments[0])n(arguments[0],xt)&&(ee+=xt+": "+arguments[0][xt]+", ");ee=ee.slice(0,-2)}else ee=arguments[ke];z.push(ee)}Ie(E+`
|
|
144
144
|
Arguments: `+Array.prototype.slice.call(z).join("")+`
|
|
145
|
-
`+new Error().stack),q=!1}return I.apply(this,arguments)},I)}var Re={};function Ct(E,I){t.deprecationHandler!=null&&t.deprecationHandler(E,I),Re[E]||(Ie(I),Re[E]=!0)}t.suppressDeprecationWarnings=!1,t.deprecationHandler=null;function ct(E){return typeof Function<"u"&&E instanceof Function||Object.prototype.toString.call(E)==="[object Function]"}function ot(E){var I,q;for(q in E)n(E,q)&&(I=E[q],ct(I)?this[q]=I:this["_"+q]=I);this._config=E,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function je(E,I){var q=b({},E),z;for(z in I)n(I,z)&&(a(E[z])&&a(I[z])?(q[z]={},b(q[z],E[z]),b(q[z],I[z])):I[z]!=null?q[z]=I[z]:delete q[z]);for(z in E)n(E,z)&&!n(I,z)&&a(E[z])&&(q[z]=b({},q[z]));return q}function se(E){E!=null&&this.set(E)}var De;Object.keys?De=Object.keys:De=function(E){var I,q=[];for(I in E)n(E,I)&&q.push(I);return q};var ze={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function _e(E,I,q){var z=this._calendar[E]||this._calendar.sameElse;return ct(z)?z.call(I,q):z}function Ee(E,I,q){var z=""+Math.abs(E),ee=I-z.length,ke=E>=0;return(ke?q?"+":"":"-")+Math.pow(10,Math.max(0,ee)).toString().substr(1)+z}var Fe=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,nt=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,vt={},jt={};function Ye(E,I,q,z){var ee=z;typeof z=="string"&&(ee=function(){return this[z]()}),E&&(jt[E]=ee),I&&(jt[I[0]]=function(){return Ee(ee.apply(this,arguments),I[1],I[2])}),q&&(jt[q]=function(){return this.localeData().ordinal(ee.apply(this,arguments),E)})}function At(E){return E.match(/\[[\s\S]/)?E.replace(/^\[|\]$/g,""):E.replace(/\\/g,"")}function Ae(E){var I=E.match(Fe),q,z;for(q=0,z=I.length;q<z;q++)jt[I[q]]?I[q]=jt[I[q]]:I[q]=At(I[q]);return function(ee){var ke="",xt;for(xt=0;xt<z;xt++)ke+=ct(I[xt])?I[xt].call(ee,E):I[xt];return ke}}function Ze(E,I){return E.isValid()?(I=lt(I,E.localeData()),vt[I]=vt[I]||Ae(I),vt[I](E)):E.localeData().invalidDate()}function lt(E,I){var q=5;function z(ee){return I.longDateFormat(ee)||ee}for(nt.lastIndex=0;q>=0&&nt.test(E);)E=E.replace(nt,z),nt.lastIndex=0,q-=1;return E}var Ut={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"};function Tt(E){var I=this._longDateFormat[E],q=this._longDateFormat[E.toUpperCase()];return I||!q?I:(this._longDateFormat[E]=q.match(Fe).map(function(z){return z==="MMMM"||z==="MM"||z==="DD"||z==="dddd"?z.slice(1):z}).join(""),this._longDateFormat[E])}var ft="Invalid date";function mt(){return this._invalidDate}var C="%d",kt=/\d{1,2}/;function Yt(E){return this._ordinal.replace("%d",E)}var Jr={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function _t(E,I,q,z){var ee=this._relativeTime[q];return ct(ee)?ee(E,I,q,z):ee.replace(/%d/i,E)}function bt(E,I){var q=this._relativeTime[E>0?"future":"past"];return ct(q)?q(I):q.replace(/%s/i,I)}var tr={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function ge(E){return typeof E=="string"?tr[E]||tr[E.toLowerCase()]:void 0}function Je(E){var I={},q,z;for(z in E)n(E,z)&&(q=ge(z),q&&(I[q]=E[z]));return I}var $t={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function rr(E){var I=[],q;for(q in E)n(E,q)&&I.push({unit:q,priority:$t[q]});return I.sort(function(z,ee){return z.priority-ee.priority}),I}var $r=/\d/,Vr=/\d\d/,Hn=/\d{3}/,jn=/\d{4}/,ei=/[+-]?\d{6}/,En=/\d\d?/,$o=/\d\d\d\d?/,Qo=/\d\d\d\d\d\d?/,ps=/\d{1,3}/,Vo=/\d{1,4}/,Vu=/[+-]?\d{1,6}/,za=/\d+/,rt=/[+-]?\d+/,Ft=/Z|[+-]\d\d:?\d\d/gi,It=/Z|[+-]\d\d(?::?\d\d)?/gi,Xt=/[+-]?\d+(\.\d{1,3})?/,Ir=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,xr=/^[1-9]\d?/,In=/^([1-9]\d|\d)/,_i;_i={};function Mt(E,I,q){_i[E]=ct(I)?I:function(z,ee){return z&&q?q:I}}function Ai(E,I){return n(_i,E)?_i[E](I._strict,I._locale):new RegExp(Ps(E))}function Ps(E){return Di(E.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(I,q,z,ee,ke){return q||z||ee||ke}))}function Di(E){return E.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Si(E){return E<0?Math.ceil(E)||0:Math.floor(E)}function sn(E){var I=+E,q=0;return I!==0&&isFinite(I)&&(q=Si(I)),q}var Ws={};function On(E,I){var q,z=I,ee;for(typeof E=="string"&&(E=[E]),m(I)&&(z=function(ke,xt){xt[I]=sn(ke)}),ee=E.length,q=0;q<ee;q++)Ws[E[q]]=z}function Ss(E,I){On(E,function(q,z,ee,ke){ee._w=ee._w||{},I(q,ee._w,ee,ke)})}function Hu(E,I,q){I!=null&&n(Ws,E)&&Ws[E](I,q._a,q,E)}function to(E){return E%4===0&&E%100!==0||E%400===0}var ur=0,Ao=1,co=2,Cs=3,Do=4,lo=5,js=6,Zc=7,fu=8;Ye("Y",0,0,function(){var E=this.year();return E<=9999?Ee(E,4):"+"+E}),Ye(0,["YY",2],0,function(){return this.year()%100}),Ye(0,["YYYY",4],0,"year"),Ye(0,["YYYYY",5],0,"year"),Ye(0,["YYYYYY",6,!0],0,"year"),Mt("Y",rt),Mt("YY",En,Vr),Mt("YYYY",Vo,jn),Mt("YYYYY",Vu,ei),Mt("YYYYYY",Vu,ei),On(["YYYYY","YYYYYY"],ur),On("YYYY",function(E,I){I[ur]=E.length===2?t.parseTwoDigitYear(E):sn(E)}),On("YY",function(E,I){I[ur]=t.parseTwoDigitYear(E)}),On("Y",function(E,I){I[ur]=parseInt(E,10)});function Oa(E){return to(E)?366:365}t.parseTwoDigitYear=function(E){return sn(E)+(sn(E)>68?1900:2e3)};var Wu=tn("FullYear",!0);function Fl(){return to(this.year())}function tn(E,I){return function(q){return q!=null?(el(this,E,q),t.updateOffset(this,I),this):vc(this,E)}}function vc(E,I){if(!E.isValid())return NaN;var q=E._d,z=E._isUTC;switch(I){case"Milliseconds":return z?q.getUTCMilliseconds():q.getMilliseconds();case"Seconds":return z?q.getUTCSeconds():q.getSeconds();case"Minutes":return z?q.getUTCMinutes():q.getMinutes();case"Hours":return z?q.getUTCHours():q.getHours();case"Date":return z?q.getUTCDate():q.getDate();case"Day":return z?q.getUTCDay():q.getDay();case"Month":return z?q.getUTCMonth():q.getMonth();case"FullYear":return z?q.getUTCFullYear():q.getFullYear();default:return NaN}}function el(E,I,q){var z,ee,ke,xt,fr;if(!(!E.isValid()||isNaN(q))){switch(z=E._d,ee=E._isUTC,I){case"Milliseconds":return void(ee?z.setUTCMilliseconds(q):z.setMilliseconds(q));case"Seconds":return void(ee?z.setUTCSeconds(q):z.setSeconds(q));case"Minutes":return void(ee?z.setUTCMinutes(q):z.setMinutes(q));case"Hours":return void(ee?z.setUTCHours(q):z.setHours(q));case"Date":return void(ee?z.setUTCDate(q):z.setDate(q));case"FullYear":break;default:return}ke=q,xt=E.month(),fr=E.date(),fr=fr===29&&xt===1&&!to(ke)?28:fr,ee?z.setUTCFullYear(ke,xt,fr):z.setFullYear(ke,xt,fr)}}function du(E){return E=ge(E),ct(this[E])?this[E]():this}function fs(E,I){if(typeof E=="object"){E=Je(E);var q=rr(E),z,ee=q.length;for(z=0;z<ee;z++)this[q[z].unit](E[q[z].unit])}else if(E=ge(E),ct(this[E]))return this[E](I);return this}function Ji(E,I){return(E%I+I)%I}var Bi;Array.prototype.indexOf?Bi=Array.prototype.indexOf:Bi=function(E){var I;for(I=0;I<this.length;++I)if(this[I]===E)return I;return-1};function zs(E,I){if(isNaN(E)||isNaN(I))return NaN;var q=Ji(I,12);return E+=(I-q)/12,q===1?to(E)?29:28:31-q%7%2}Ye("M",["MM",2],"Mo",function(){return this.month()+1}),Ye("MMM",0,0,function(E){return this.localeData().monthsShort(this,E)}),Ye("MMMM",0,0,function(E){return this.localeData().months(this,E)}),Mt("M",En,xr),Mt("MM",En,Vr),Mt("MMM",function(E,I){return I.monthsShortRegex(E)}),Mt("MMMM",function(E,I){return I.monthsRegex(E)}),On(["M","MM"],function(E,I){I[Ao]=sn(E)-1}),On(["MMM","MMMM"],function(E,I,q,z){var ee=q._locale.monthsParse(E,z,q._strict);ee!=null?I[Ao]=ee:g(q).invalidMonth=E});var ko="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Na="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Zo=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Io=Ir,Ll=Ir;function Z0(E,I){return E?s(this._months)?this._months[E.month()]:this._months[(this._months.isFormat||Zo).test(I)?"format":"standalone"][E.month()]:s(this._months)?this._months:this._months.standalone}function kp(E,I){return E?s(this._monthsShort)?this._monthsShort[E.month()]:this._monthsShort[Zo.test(I)?"format":"standalone"][E.month()]:s(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function Ml(E,I,q){var z,ee,ke,xt=E.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],z=0;z<12;++z)ke=P([2e3,z]),this._shortMonthsParse[z]=this.monthsShort(ke,"").toLocaleLowerCase(),this._longMonthsParse[z]=this.months(ke,"").toLocaleLowerCase();return q?I==="MMM"?(ee=Bi.call(this._shortMonthsParse,xt),ee!==-1?ee:null):(ee=Bi.call(this._longMonthsParse,xt),ee!==-1?ee:null):I==="MMM"?(ee=Bi.call(this._shortMonthsParse,xt),ee!==-1?ee:(ee=Bi.call(this._longMonthsParse,xt),ee!==-1?ee:null)):(ee=Bi.call(this._longMonthsParse,xt),ee!==-1?ee:(ee=Bi.call(this._shortMonthsParse,xt),ee!==-1?ee:null))}function ga(E,I,q){var z,ee,ke;if(this._monthsParseExact)return Ml.call(this,E,I,q);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),z=0;z<12;z++){if(ee=P([2e3,z]),q&&!this._longMonthsParse[z]&&(this._longMonthsParse[z]=new RegExp("^"+this.months(ee,"").replace(".","")+"$","i"),this._shortMonthsParse[z]=new RegExp("^"+this.monthsShort(ee,"").replace(".","")+"$","i")),!q&&!this._monthsParse[z]&&(ke="^"+this.months(ee,"")+"|^"+this.monthsShort(ee,""),this._monthsParse[z]=new RegExp(ke.replace(".",""),"i")),q&&I==="MMMM"&&this._longMonthsParse[z].test(E))return z;if(q&&I==="MMM"&&this._shortMonthsParse[z].test(E))return z;if(!q&&this._monthsParse[z].test(E))return z}}function qt(E,I){if(!E.isValid())return E;if(typeof I=="string"){if(/^\d+$/.test(I))I=sn(I);else if(I=E.localeData().monthsParse(I),!m(I))return E}var q=I,z=E.date();return z=z<29?z:Math.min(z,zs(E.year(),q)),E._isUTC?E._d.setUTCMonth(q,z):E._d.setMonth(q,z),E}function hu(E){return E!=null?(qt(this,E),t.updateOffset(this,!0),this):vc(this,"Month")}function em(){return zs(this.year(),this.month())}function Ip(E){return this._monthsParseExact?(n(this,"_monthsRegex")||xc.call(this),E?this._monthsShortStrictRegex:this._monthsShortRegex):(n(this,"_monthsShortRegex")||(this._monthsShortRegex=Io),this._monthsShortStrictRegex&&E?this._monthsShortStrictRegex:this._monthsShortRegex)}function ns(E){return this._monthsParseExact?(n(this,"_monthsRegex")||xc.call(this),E?this._monthsStrictRegex:this._monthsRegex):(n(this,"_monthsRegex")||(this._monthsRegex=Ll),this._monthsStrictRegex&&E?this._monthsStrictRegex:this._monthsRegex)}function xc(){function E(dn,fi){return fi.length-dn.length}var I=[],q=[],z=[],ee,ke,xt,fr;for(ee=0;ee<12;ee++)ke=P([2e3,ee]),xt=Di(this.monthsShort(ke,"")),fr=Di(this.months(ke,"")),I.push(xt),q.push(fr),z.push(fr),z.push(xt);I.sort(E),q.sort(E),z.sort(E),this._monthsRegex=new RegExp("^("+z.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+q.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+I.join("|")+")","i")}function Vh(E,I,q,z,ee,ke,xt){var fr;return E<100&&E>=0?(fr=new Date(E+400,I,q,z,ee,ke,xt),isFinite(fr.getFullYear())&&fr.setFullYear(E)):fr=new Date(E,I,q,z,ee,ke,xt),fr}function Sf(E){var I,q;return E<100&&E>=0?(q=Array.prototype.slice.call(arguments),q[0]=E+400,I=new Date(Date.UTC.apply(null,q)),isFinite(I.getUTCFullYear())&&I.setUTCFullYear(E)):I=new Date(Date.UTC.apply(null,arguments)),I}function tl(E,I,q){var z=7+I-q,ee=(7+Sf(E,0,z).getUTCDay()-I)%7;return-ee+z-1}function Od(E,I,q,z,ee){var ke=(7+q-z)%7,xt=tl(E,z,ee),fr=1+7*(I-1)+ke+xt,dn,fi;return fr<=0?(dn=E-1,fi=Oa(dn)+fr):fr>Oa(E)?(dn=E+1,fi=fr-Oa(E)):(dn=E,fi=fr),{year:dn,dayOfYear:fi}}function or(E,I,q){var z=tl(E.year(),I,q),ee=Math.floor((E.dayOfYear()-z-1)/7)+1,ke,xt;return ee<1?(xt=E.year()-1,ke=ee+ji(xt,I,q)):ee>ji(E.year(),I,q)?(ke=ee-ji(E.year(),I,q),xt=E.year()+1):(xt=E.year(),ke=ee),{week:ke,year:xt}}function ji(E,I,q){var z=tl(E,I,q),ee=tl(E+1,I,q);return(Oa(E)-z+ee)/7}Ye("w",["ww",2],"wo","week"),Ye("W",["WW",2],"Wo","isoWeek"),Mt("w",En,xr),Mt("ww",En,Vr),Mt("W",En,xr),Mt("WW",En,Vr),Ss(["w","ww","W","WW"],function(E,I,q,z){I[z.substr(0,1)]=sn(E)});function Nd(E){return or(E,this._week.dow,this._week.doy).week}var Bl={dow:0,doy:6};function mu(){return this._week.dow}function bf(){return this._week.doy}function tm(E){var I=this.localeData().week(this);return E==null?I:this.add((E-I)*7,"d")}function Hh(E){var I=or(this,1,4).week;return E==null?I:this.add((E-I)*7,"d")}Ye("d",0,"do","day"),Ye("dd",0,0,function(E){return this.localeData().weekdaysMin(this,E)}),Ye("ddd",0,0,function(E){return this.localeData().weekdaysShort(this,E)}),Ye("dddd",0,0,function(E){return this.localeData().weekdays(this,E)}),Ye("e",0,0,"weekday"),Ye("E",0,0,"isoWeekday"),Mt("d",En),Mt("e",En),Mt("E",En),Mt("dd",function(E,I){return I.weekdaysMinRegex(E)}),Mt("ddd",function(E,I){return I.weekdaysShortRegex(E)}),Mt("dddd",function(E,I){return I.weekdaysRegex(E)}),Ss(["dd","ddd","dddd"],function(E,I,q,z){var ee=q._locale.weekdaysParse(E,z,q._strict);ee!=null?I.d=ee:g(q).invalidWeekday=E}),Ss(["d","e","E"],function(E,I,q,z){I[z]=sn(E)});function rm(E,I){return typeof E!="string"?E:isNaN(E)?(E=I.weekdaysParse(E),typeof E=="number"?E:null):parseInt(E,10)}function Ra(E,I){return typeof E=="string"?I.weekdaysParse(E)%7||7:isNaN(E)?null:E}function Fa(E,I){return E.slice(I,7).concat(E.slice(0,I))}var Wh="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),zh="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Op="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ea=Ir,Np=Ir,La=Ir;function rl(E,I){var q=s(this._weekdays)?this._weekdays:this._weekdays[E&&E!==!0&&this._weekdays.isFormat.test(I)?"format":"standalone"];return E===!0?Fa(q,this._week.dow):E?q[E.day()]:q}function yu(E){return E===!0?Fa(this._weekdaysShort,this._week.dow):E?this._weekdaysShort[E.day()]:this._weekdaysShort}function zu(E){return E===!0?Fa(this._weekdaysMin,this._week.dow):E?this._weekdaysMin[E.day()]:this._weekdaysMin}function _c(E,I,q){var z,ee,ke,xt=E.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],z=0;z<7;++z)ke=P([2e3,1]).day(z),this._minWeekdaysParse[z]=this.weekdaysMin(ke,"").toLocaleLowerCase(),this._shortWeekdaysParse[z]=this.weekdaysShort(ke,"").toLocaleLowerCase(),this._weekdaysParse[z]=this.weekdays(ke,"").toLocaleLowerCase();return q?I==="dddd"?(ee=Bi.call(this._weekdaysParse,xt),ee!==-1?ee:null):I==="ddd"?(ee=Bi.call(this._shortWeekdaysParse,xt),ee!==-1?ee:null):(ee=Bi.call(this._minWeekdaysParse,xt),ee!==-1?ee:null):I==="dddd"?(ee=Bi.call(this._weekdaysParse,xt),ee!==-1||(ee=Bi.call(this._shortWeekdaysParse,xt),ee!==-1)?ee:(ee=Bi.call(this._minWeekdaysParse,xt),ee!==-1?ee:null)):I==="ddd"?(ee=Bi.call(this._shortWeekdaysParse,xt),ee!==-1||(ee=Bi.call(this._weekdaysParse,xt),ee!==-1)?ee:(ee=Bi.call(this._minWeekdaysParse,xt),ee!==-1?ee:null)):(ee=Bi.call(this._minWeekdaysParse,xt),ee!==-1||(ee=Bi.call(this._weekdaysParse,xt),ee!==-1)?ee:(ee=Bi.call(this._shortWeekdaysParse,xt),ee!==-1?ee:null))}function Sc(E,I,q){var z,ee,ke;if(this._weekdaysParseExact)return _c.call(this,E,I,q);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),z=0;z<7;z++){if(ee=P([2e3,1]).day(z),q&&!this._fullWeekdaysParse[z]&&(this._fullWeekdaysParse[z]=new RegExp("^"+this.weekdays(ee,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[z]=new RegExp("^"+this.weekdaysShort(ee,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[z]=new RegExp("^"+this.weekdaysMin(ee,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[z]||(ke="^"+this.weekdays(ee,"")+"|^"+this.weekdaysShort(ee,"")+"|^"+this.weekdaysMin(ee,""),this._weekdaysParse[z]=new RegExp(ke.replace(".",""),"i")),q&&I==="dddd"&&this._fullWeekdaysParse[z].test(E))return z;if(q&&I==="ddd"&&this._shortWeekdaysParse[z].test(E))return z;if(q&&I==="dd"&&this._minWeekdaysParse[z].test(E))return z;if(!q&&this._weekdaysParse[z].test(E))return z}}function Ns(E){if(!this.isValid())return E!=null?this:NaN;var I=vc(this,"Day");return E!=null?(E=rm(E,this.localeData()),this.add(E-I,"d")):I}function wn(E){if(!this.isValid())return E!=null?this:NaN;var I=(this.day()+7-this.localeData()._week.dow)%7;return E==null?I:this.add(E-I,"d")}function Gu(E){if(!this.isValid())return E!=null?this:NaN;if(E!=null){var I=Ra(E,this.localeData());return this.day(this.day()%7?I:I-7)}else return this.day()||7}function Gh(E){return this._weekdaysParseExact?(n(this,"_weekdaysRegex")||ql.call(this),E?this._weekdaysStrictRegex:this._weekdaysRegex):(n(this,"_weekdaysRegex")||(this._weekdaysRegex=ea),this._weekdaysStrictRegex&&E?this._weekdaysStrictRegex:this._weekdaysRegex)}function Gs(E){return this._weekdaysParseExact?(n(this,"_weekdaysRegex")||ql.call(this),E?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(n(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Np),this._weekdaysShortStrictRegex&&E?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function jl(E){return this._weekdaysParseExact?(n(this,"_weekdaysRegex")||ql.call(this),E?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(n(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=La),this._weekdaysMinStrictRegex&&E?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function ql(){function E(ia,eu){return eu.length-ia.length}var I=[],q=[],z=[],ee=[],ke,xt,fr,dn,fi;for(ke=0;ke<7;ke++)xt=P([2e3,1]).day(ke),fr=Di(this.weekdaysMin(xt,"")),dn=Di(this.weekdaysShort(xt,"")),fi=Di(this.weekdays(xt,"")),I.push(fr),q.push(dn),z.push(fi),ee.push(fr),ee.push(dn),ee.push(fi);I.sort(E),q.sort(E),z.sort(E),ee.sort(E),this._weekdaysRegex=new RegExp("^("+ee.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+z.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+q.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+I.join("|")+")","i")}function Ma(){return this.hours()%12||12}function Rp(){return this.hours()||24}Ye("H",["HH",2],0,"hour"),Ye("h",["hh",2],0,Ma),Ye("k",["kk",2],0,Rp),Ye("hmm",0,0,function(){return""+Ma.apply(this)+Ee(this.minutes(),2)}),Ye("hmmss",0,0,function(){return""+Ma.apply(this)+Ee(this.minutes(),2)+Ee(this.seconds(),2)}),Ye("Hmm",0,0,function(){return""+this.hours()+Ee(this.minutes(),2)}),Ye("Hmmss",0,0,function(){return""+this.hours()+Ee(this.minutes(),2)+Ee(this.seconds(),2)});function Oo(E,I){Ye(E,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),I)})}Oo("a",!0),Oo("A",!1);function Fp(E,I){return I._meridiemParse}Mt("a",Fp),Mt("A",Fp),Mt("H",En,In),Mt("h",En,xr),Mt("k",En,xr),Mt("HH",En,Vr),Mt("hh",En,Vr),Mt("kk",En,Vr),Mt("hmm",$o),Mt("hmmss",Qo),Mt("Hmm",$o),Mt("Hmmss",Qo),On(["H","HH"],Cs),On(["k","kk"],function(E,I,q){var z=sn(E);I[Cs]=z===24?0:z}),On(["a","A"],function(E,I,q){q._isPm=q._locale.isPM(E),q._meridiem=E}),On(["h","hh"],function(E,I,q){I[Cs]=sn(E),g(q).bigHour=!0}),On("hmm",function(E,I,q){var z=E.length-2;I[Cs]=sn(E.substr(0,z)),I[Do]=sn(E.substr(z)),g(q).bigHour=!0}),On("hmmss",function(E,I,q){var z=E.length-4,ee=E.length-2;I[Cs]=sn(E.substr(0,z)),I[Do]=sn(E.substr(z,2)),I[lo]=sn(E.substr(ee)),g(q).bigHour=!0}),On("Hmm",function(E,I,q){var z=E.length-2;I[Cs]=sn(E.substr(0,z)),I[Do]=sn(E.substr(z))}),On("Hmmss",function(E,I,q){var z=E.length-4,ee=E.length-2;I[Cs]=sn(E.substr(0,z)),I[Do]=sn(E.substr(z,2)),I[lo]=sn(E.substr(ee))});function Kh(E){return(E+"").toLowerCase().charAt(0)==="p"}var Ga=/[ap]\.?m?\.?/i,va=tn("Hours",!0);function Lp(E,I,q){return E>11?q?"pm":"PM":q?"am":"AM"}var nl={calendar:ze,longDateFormat:Ut,invalidDate:ft,ordinal:C,dayOfMonthOrdinalParse:kt,relativeTime:Jr,months:ko,monthsShort:Na,week:Bl,weekdays:Wh,weekdaysMin:Op,weekdaysShort:zh,meridiemParse:Ga},bs={},ro={},Ku;function Ef(E,I){var q,z=Math.min(E.length,I.length);for(q=0;q<z;q+=1)if(E[q]!==I[q])return q;return z}function gu(E){return E&&E.toLowerCase().replace("_","-")}function il(E){for(var I=0,q,z,ee,ke;I<E.length;){for(ke=gu(E[I]).split("-"),q=ke.length,z=gu(E[I+1]),z=z?z.split("-"):null;q>0;){if(ee=Z(ke.slice(0,q).join("-")),ee)return ee;if(z&&z.length>=q&&Ef(ke,z)>=q-1)break;q--}I++}return Ku}function ue(E){return!!(E&&E.match("^[^/\\\\]*$"))}function Z(E){var I=null,q;if(bs[E]===void 0&&typeof _2<"u"&&_2&&_2.exports&&ue(E))try{I=Ku._abbr,q=require,q("./locale/"+E),ae(I)}catch{bs[E]=null}return bs[E]}function ae(E,I){var q;return E&&(f(I)?q=Xe(E):q=Me(E,I),q?Ku=q:typeof console<"u"&&console.warn&&console.warn("Locale "+E+" not found. Did you forget to load it?")),Ku._abbr}function Me(E,I){if(I!==null){var q,z=nl;if(I.abbr=E,bs[E]!=null)Ct("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),z=bs[E]._config;else if(I.parentLocale!=null)if(bs[I.parentLocale]!=null)z=bs[I.parentLocale]._config;else if(q=Z(I.parentLocale),q!=null)z=q._config;else return ro[I.parentLocale]||(ro[I.parentLocale]=[]),ro[I.parentLocale].push({name:E,config:I}),null;return bs[E]=new se(je(z,I)),ro[E]&&ro[E].forEach(function(ee){Me(ee.name,ee.config)}),ae(E),bs[E]}else return delete bs[E],null}function it(E,I){if(I!=null){var q,z,ee=nl;bs[E]!=null&&bs[E].parentLocale!=null?bs[E].set(je(bs[E]._config,I)):(z=Z(E),z!=null&&(ee=z._config),I=je(ee,I),z==null&&(I.abbr=E),q=new se(I),q.parentLocale=bs[E],bs[E]=q),ae(E)}else bs[E]!=null&&(bs[E].parentLocale!=null?(bs[E]=bs[E].parentLocale,E===ae()&&ae(E)):bs[E]!=null&&delete bs[E]);return bs[E]}function Xe(E){var I;if(E&&E._locale&&E._locale._abbr&&(E=E._locale._abbr),!E)return Ku;if(!s(E)){if(I=Z(E),I)return I;E=[E]}return il(E)}function gt(){return De(bs)}function St(E){var I,q=E._a;return q&&g(E).overflow===-2&&(I=q[Ao]<0||q[Ao]>11?Ao:q[co]<1||q[co]>zs(q[ur],q[Ao])?co:q[Cs]<0||q[Cs]>24||q[Cs]===24&&(q[Do]!==0||q[lo]!==0||q[js]!==0)?Cs:q[Do]<0||q[Do]>59?Do:q[lo]<0||q[lo]>59?lo:q[js]<0||q[js]>999?js:-1,g(E)._overflowDayOfYear&&(I<ur||I>co)&&(I=co),g(E)._overflowWeeks&&I===-1&&(I=Zc),g(E)._overflowWeekday&&I===-1&&(I=fu),g(E).overflow=I),E}var Vt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_r=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,An=/Z|[+-]\d\d(?::?\d\d)?/,ti=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Nn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ba=/^\/?Date\((-?\d+)/i,Ul=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,xa={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function No(E){var I,q,z=E._i,ee=Vt.exec(z)||_r.exec(z),ke,xt,fr,dn,fi=ti.length,ia=Nn.length;if(ee){for(g(E).iso=!0,I=0,q=fi;I<q;I++)if(ti[I][1].exec(ee[1])){xt=ti[I][0],ke=ti[I][2]!==!1;break}if(xt==null){E._isValid=!1;return}if(ee[3]){for(I=0,q=ia;I<q;I++)if(Nn[I][1].exec(ee[3])){fr=(ee[2]||" ")+Nn[I][0];break}if(fr==null){E._isValid=!1;return}}if(!ke&&fr!=null){E._isValid=!1;return}if(ee[4])if(An.exec(ee[4]))dn="Z";else{E._isValid=!1;return}E._f=xt+(fr||"")+(dn||""),Ho(E)}else E._isValid=!1}function ui(E,I,q,z,ee,ke){var xt=[on(E),Na.indexOf(I),parseInt(q,10),parseInt(z,10),parseInt(ee,10)];return ke&&xt.push(parseInt(ke,10)),xt}function on(E){var I=parseInt(E,10);return I<=49?2e3+I:I<=999?1900+I:I}function Nr(E){return E.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function rn(E,I,q){if(E){var z=zh.indexOf(E),ee=new Date(I[0],I[1],I[2]).getDay();if(z!==ee)return g(q).weekdayMismatch=!0,q._isValid=!1,!1}return!0}function ri(E,I,q){if(E)return xa[E];if(I)return 0;var z=parseInt(q,10),ee=z%100,ke=(z-ee)/100;return ke*60+ee}function Ii(E){var I=Ul.exec(Nr(E._i)),q;if(I){if(q=ui(I[4],I[3],I[2],I[5],I[6],I[7]),!rn(I[1],q,E))return;E._a=q,E._tzm=ri(I[8],I[9],I[10]),E._d=Sf.apply(null,E._a),E._d.setUTCMinutes(E._d.getUTCMinutes()-E._tzm),g(E).rfc2822=!0}else E._isValid=!1}function Ks(E){var I=Ba.exec(E._i);if(I!==null){E._d=new Date(+I[1]);return}if(No(E),E._isValid===!1)delete E._isValid;else return;if(Ii(E),E._isValid===!1)delete E._isValid;else return;E._strict?E._isValid=!1:t.createFromInputFallback(E)}t.createFromInputFallback=Ve("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(E){E._d=new Date(E._i+(E._useUTC?" UTC":""))});function _o(E,I,q){return E!=null?E:I!=null?I:q}function bc(E){var I=new Date(t.now());return E._useUTC?[I.getUTCFullYear(),I.getUTCMonth(),I.getUTCDate()]:[I.getFullYear(),I.getMonth(),I.getDate()]}function no(E){var I,q,z=[],ee,ke,xt;if(!E._d){for(ee=bc(E),E._w&&E._a[co]==null&&E._a[Ao]==null&&ja(E),E._dayOfYear!=null&&(xt=_o(E._a[ur],ee[ur]),(E._dayOfYear>Oa(xt)||E._dayOfYear===0)&&(g(E)._overflowDayOfYear=!0),q=Sf(xt,0,E._dayOfYear),E._a[Ao]=q.getUTCMonth(),E._a[co]=q.getUTCDate()),I=0;I<3&&E._a[I]==null;++I)E._a[I]=z[I]=ee[I];for(;I<7;I++)E._a[I]=z[I]=E._a[I]==null?I===2?1:0:E._a[I];E._a[Cs]===24&&E._a[Do]===0&&E._a[lo]===0&&E._a[js]===0&&(E._nextDay=!0,E._a[Cs]=0),E._d=(E._useUTC?Sf:Vh).apply(null,z),ke=E._useUTC?E._d.getUTCDay():E._d.getDay(),E._tzm!=null&&E._d.setUTCMinutes(E._d.getUTCMinutes()-E._tzm),E._nextDay&&(E._a[Cs]=24),E._w&&typeof E._w.d<"u"&&E._w.d!==ke&&(g(E).weekdayMismatch=!0)}}function ja(E){var I,q,z,ee,ke,xt,fr,dn,fi;I=E._w,I.GG!=null||I.W!=null||I.E!=null?(ke=1,xt=4,q=_o(I.GG,E._a[ur],or(Tn(),1,4).year),z=_o(I.W,1),ee=_o(I.E,1),(ee<1||ee>7)&&(dn=!0)):(ke=E._locale._week.dow,xt=E._locale._week.doy,fi=or(Tn(),ke,xt),q=_o(I.gg,E._a[ur],fi.year),z=_o(I.w,fi.week),I.d!=null?(ee=I.d,(ee<0||ee>6)&&(dn=!0)):I.e!=null?(ee=I.e+ke,(I.e<0||I.e>6)&&(dn=!0)):ee=ke),z<1||z>ji(q,ke,xt)?g(E)._overflowWeeks=!0:dn!=null?g(E)._overflowWeekday=!0:(fr=Od(q,z,ee,ke,xt),E._a[ur]=fr.year,E._dayOfYear=fr.dayOfYear)}t.ISO_8601=function(){},t.RFC_2822=function(){};function Ho(E){if(E._f===t.ISO_8601){No(E);return}if(E._f===t.RFC_2822){Ii(E);return}E._a=[],g(E).empty=!0;var I=""+E._i,q,z,ee,ke,xt,fr=I.length,dn=0,fi,ia;for(ee=lt(E._f,E._locale).match(Fe)||[],ia=ee.length,q=0;q<ia;q++)ke=ee[q],z=(I.match(Ai(ke,E))||[])[0],z&&(xt=I.substr(0,I.indexOf(z)),xt.length>0&&g(E).unusedInput.push(xt),I=I.slice(I.indexOf(z)+z.length),dn+=z.length),jt[ke]?(z?g(E).empty=!1:g(E).unusedTokens.push(ke),Hu(ke,z,E)):E._strict&&!z&&g(E).unusedTokens.push(ke);g(E).charsLeftOver=fr-dn,I.length>0&&g(E).unusedInput.push(I),E._a[Cs]<=12&&g(E).bigHour===!0&&E._a[Cs]>0&&(g(E).bigHour=void 0),g(E).parsedDateParts=E._a.slice(0),g(E).meridiem=E._meridiem,E._a[Cs]=$l(E._locale,E._a[Cs],E._meridiem),fi=g(E).era,fi!==null&&(E._a[ur]=E._locale.erasConvertYear(fi,E._a[ur])),no(E),St(E)}function $l(E,I,q){var z;return q==null?I:E.meridiemHour!=null?E.meridiemHour(I,q):(E.isPM!=null&&(z=E.isPM(q),z&&I<12&&(I+=12),!z&&I===12&&(I=0)),I)}function Mp(E){var I,q,z,ee,ke,xt,fr=!1,dn=E._f.length;if(dn===0){g(E).invalidFormat=!0,E._d=new Date(NaN);return}for(ee=0;ee<dn;ee++)ke=0,xt=!1,I=te({},E),E._useUTC!=null&&(I._useUTC=E._useUTC),I._f=E._f[ee],Ho(I),F(I)&&(xt=!0),ke+=g(I).charsLeftOver,ke+=g(I).unusedTokens.length*10,g(I).score=ke,fr?ke<z&&(z=ke,q=I):(z==null||ke<z||xt)&&(z=ke,q=I,xt&&(fr=!0));b(E,q||I)}function Yu(E){if(!E._d){var I=Je(E._i),q=I.day===void 0?I.date:I.day;E._a=v([I.year,I.month,q,I.hour,I.minute,I.second,I.millisecond],function(z){return z&&parseInt(z,10)}),no(E)}}function Bp(E){var I=new me(St(Wo(E)));return I._nextDay&&(I.add(1,"d"),I._nextDay=void 0),I}function Wo(E){var I=E._i,q=E._f;return E._locale=E._locale||Xe(E._l),I===null||q===void 0&&I===""?M({nullInput:!0}):(typeof I=="string"&&(E._i=I=E._locale.preparse(I)),Ce(I)?new me(St(I)):(y(I)?E._d=I:s(q)?Mp(E):q?Ho(E):qi(E),F(E)||(E._d=null),E))}function qi(E){var I=E._i;f(I)?E._d=new Date(t.now()):y(I)?E._d=new Date(I.valueOf()):typeof I=="string"?Ks(E):s(I)?(E._a=v(I.slice(0),function(q){return parseInt(q,10)}),no(E)):a(I)?Yu(E):m(I)?E._d=new Date(I):t.createFromInputFallback(E)}function Yh(E,I,q,z,ee){var ke={};return(I===!0||I===!1)&&(z=I,I=void 0),(q===!0||q===!1)&&(z=q,q=void 0),(a(E)&&l(E)||s(E)&&E.length===0)&&(E=void 0),ke._isAMomentObject=!0,ke._useUTC=ke._isUTC=ee,ke._l=q,ke._i=E,ke._f=I,ke._strict=z,Bp(ke)}function Tn(E,I,q,z){return Yh(E,I,q,z,!1)}var Jh=Ve("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var E=Tn.apply(null,arguments);return this.isValid()&&E.isValid()?E<this?this:E:M()}),zo=Ve("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var E=Tn.apply(null,arguments);return this.isValid()&&E.isValid()?E>this?this:E:M()});function oi(E,I){var q,z;if(I.length===1&&s(I[0])&&(I=I[0]),!I.length)return Tn();for(q=I[0],z=1;z<I.length;++z)(!I[z].isValid()||I[z][E](q))&&(q=I[z]);return q}function Ka(){var E=[].slice.call(arguments,0);return oi("isBefore",E)}function Rd(){var E=[].slice.call(arguments,0);return oi("isAfter",E)}var wf=function(){return Date.now?Date.now():+new Date},Tf=["year","quarter","month","week","day","hour","minute","second","millisecond"];function gv(E){var I,q=!1,z,ee=Tf.length;for(I in E)if(n(E,I)&&!(Bi.call(Tf,I)!==-1&&(E[I]==null||!isNaN(E[I]))))return!1;for(z=0;z<ee;++z)if(E[Tf[z]]){if(q)return!1;parseFloat(E[Tf[z]])!==sn(E[Tf[z]])&&(q=!0)}return!0}function Fd(){return this._isValid}function nm(){return So(NaN)}function Ec(E){var I=Je(E),q=I.year||0,z=I.quarter||0,ee=I.month||0,ke=I.week||I.isoWeek||0,xt=I.day||0,fr=I.hour||0,dn=I.minute||0,fi=I.second||0,ia=I.millisecond||0;this._isValid=gv(I),this._milliseconds=+ia+fi*1e3+dn*6e4+fr*1e3*60*60,this._days=+xt+ke*7,this._months=+ee+z*3+q*12,this._data={},this._locale=Xe(),this._bubble()}function qa(E){return E instanceof Ec}function sl(E){return E<0?Math.round(-1*E)*-1:Math.round(E)}function Ya(E,I,q){var z=Math.min(E.length,I.length),ee=Math.abs(E.length-I.length),ke=0,xt;for(xt=0;xt<z;xt++)(q&&E[xt]!==I[xt]||!q&&sn(E[xt])!==sn(I[xt]))&&ke++;return ke+ee}function jp(E,I){Ye(E,0,0,function(){var q=this.utcOffset(),z="+";return q<0&&(q=-q,z="-"),z+Ee(~~(q/60),2)+I+Ee(~~q%60,2)})}jp("Z",":"),jp("ZZ",""),Mt("Z",It),Mt("ZZ",It),On(["Z","ZZ"],function(E,I,q){q._useUTC=!0,q._tzm=Ro(It,E)});var Ys=/([\+\-]|\d\d)/gi;function Ro(E,I){var q=(I||"").match(E),z,ee,ke;return q===null?null:(z=q[q.length-1]||[],ee=(z+"").match(Ys)||["-",0,0],ke=+(ee[1]*60)+sn(ee[2]),ke===0?0:ee[0]==="+"?ke:-ke)}function io(E,I){var q,z;return I._isUTC?(q=I.clone(),z=(Ce(E)||y(E)?E.valueOf():Tn(E).valueOf())-q.valueOf(),q._d.setTime(q._d.valueOf()+z),t.updateOffset(q,!1),q):Tn(E).local()}function wc(E){return-Math.round(E._d.getTimezoneOffset())}t.updateOffset=function(){};function Pf(E,I,q){var z=this._offset||0,ee;if(!this.isValid())return E!=null?this:NaN;if(E!=null){if(typeof E=="string"){if(E=Ro(It,E),E===null)return this}else Math.abs(E)<16&&!q&&(E=E*60);return!this._isUTC&&I&&(ee=wc(this)),this._offset=E,this._isUTC=!0,ee!=null&&this.add(ee,"m"),z!==E&&(!I||this._changeInProgress?ba(this,So(E-z,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,t.updateOffset(this,!0),this._changeInProgress=null)),this}else return this._isUTC?z:wc(this)}function bi(E,I){return E!=null?(typeof E!="string"&&(E=-E),this.utcOffset(E,I),this):-this.utcOffset()}function im(E){return this.utcOffset(0,E)}function sm(E){return this._isUTC&&(this.utcOffset(0,E),this._isUTC=!1,E&&this.subtract(wc(this),"m")),this}function ta(){if(this._tzm!=null)this.utcOffset(this._tzm,!1,!0);else if(typeof this._i=="string"){var E=Ro(Ft,this._i);E!=null?this.utcOffset(E):this.utcOffset(0,!0)}return this}function Sa(E){return this.isValid()?(E=E?Tn(E).utcOffset():0,(this.utcOffset()-E)%60===0):!1}function Ja(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Vl(){if(!f(this._isDSTShifted))return this._isDSTShifted;var E={},I;return te(E,this),E=Wo(E),E._a?(I=E._isUTC?P(E._a):Tn(E._a),this._isDSTShifted=this.isValid()&&Ya(E._a,I.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Hl(){return this.isValid()?!this._isUTC:!1}function Wl(){return this.isValid()?this._isUTC:!1}function Ei(){return this.isValid()?this._isUTC&&this._offset===0:!1}var Ju=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,zl=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function So(E,I){var q=E,z=null,ee,ke,xt;return qa(E)?q={ms:E._milliseconds,d:E._days,M:E._months}:m(E)||!isNaN(+E)?(q={},I?q[I]=+E:q.milliseconds=+E):(z=Ju.exec(E))?(ee=z[1]==="-"?-1:1,q={y:0,d:sn(z[co])*ee,h:sn(z[Cs])*ee,m:sn(z[Do])*ee,s:sn(z[lo])*ee,ms:sn(sl(z[js]*1e3))*ee}):(z=zl.exec(E))?(ee=z[1]==="-"?-1:1,q={y:ol(z[2],ee),M:ol(z[3],ee),w:ol(z[4],ee),d:ol(z[5],ee),h:ol(z[6],ee),m:ol(z[7],ee),s:ol(z[8],ee)}):q==null?q={}:typeof q=="object"&&("from"in q||"to"in q)&&(xt=om(Tn(q.from),Tn(q.to)),q={},q.ms=xt.milliseconds,q.M=xt.months),ke=new Ec(q),qa(E)&&n(E,"_locale")&&(ke._locale=E._locale),qa(E)&&n(E,"_isValid")&&(ke._isValid=E._isValid),ke}So.fn=Ec.prototype,So.invalid=nm;function ol(E,I){var q=E&&parseFloat(E.replace(",","."));return(isNaN(q)?0:q)*I}function Xu(E,I){var q={};return q.months=I.month()-E.month()+(I.year()-E.year())*12,E.clone().add(q.months,"M").isAfter(I)&&--q.months,q.milliseconds=+I-+E.clone().add(q.months,"M"),q}function om(E,I){var q;return E.isValid()&&I.isValid()?(I=io(I,E),E.isBefore(I)?q=Xu(E,I):(q=Xu(I,E),q.milliseconds=-q.milliseconds,q.months=-q.months),q):{milliseconds:0,months:0}}function qp(E,I){return function(q,z){var ee,ke;return z!==null&&!isNaN(+z)&&(Ct(I,"moment()."+I+"(period, number) is deprecated. Please use moment()."+I+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),ke=q,q=z,z=ke),ee=So(q,z),ba(this,ee,E),this}}function ba(E,I,q,z){var ee=I._milliseconds,ke=sl(I._days),xt=sl(I._months);E.isValid()&&(z=z==null?!0:z,xt&&qt(E,vc(E,"Month")+xt*q),ke&&el(E,"Date",vc(E,"Date")+ke*q),ee&&E._d.setTime(E._d.valueOf()+ee*q),z&&t.updateOffset(E,ke||xt))}var ni=qp(1,"add"),Ld=qp(-1,"subtract");function Xh(E){return typeof E=="string"||E instanceof String}function Qh(E){return Ce(E)||y(E)||Xh(E)||m(E)||Wy(E)||Hy(E)||E===null||E===void 0}function Hy(E){var I=a(E)&&!l(E),q=!1,z=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],ee,ke,xt=z.length;for(ee=0;ee<xt;ee+=1)ke=z[ee],q=q||n(E,ke);return I&&q}function Wy(E){var I=s(E),q=!1;return I&&(q=E.filter(function(z){return!m(z)&&Xh(E)}).length===0),I&&q}function vv(E){var I=a(E)&&!l(E),q=!1,z=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],ee,ke;for(ee=0;ee<z.length;ee+=1)ke=z[ee],q=q||n(E,ke);return I&&q}function xx(E,I){var q=E.diff(I,"days",!0);return q<-6?"sameElse":q<-1?"lastWeek":q<0?"lastDay":q<1?"sameDay":q<2?"nextDay":q<7?"nextWeek":"sameElse"}function am(E,I){arguments.length===1&&(arguments[0]?Qh(arguments[0])?(E=arguments[0],I=void 0):vv(arguments[0])&&(I=arguments[0],E=void 0):(E=void 0,I=void 0));var q=E||Tn(),z=io(q,this).startOf("day"),ee=t.calendarFormat(this,z)||"sameElse",ke=I&&(ct(I[ee])?I[ee].call(this,q):I[ee]);return this.format(ke||this.localeData().calendar(ee,this,Tn(q)))}function Zh(){return new me(this)}function xv(E,I){var q=Ce(E)?E:Tn(E);return this.isValid()&&q.isValid()?(I=ge(I)||"millisecond",I==="millisecond"?this.valueOf()>q.valueOf():q.valueOf()<this.clone().startOf(I).valueOf()):!1}function Qu(E,I){var q=Ce(E)?E:Tn(E);return this.isValid()&&q.isValid()?(I=ge(I)||"millisecond",I==="millisecond"?this.valueOf()<q.valueOf():this.clone().endOf(I).valueOf()<q.valueOf()):!1}function Gl(E,I,q,z){var ee=Ce(E)?E:Tn(E),ke=Ce(I)?I:Tn(I);return this.isValid()&&ee.isValid()&&ke.isValid()?(z=z||"()",(z[0]==="("?this.isAfter(ee,q):!this.isBefore(ee,q))&&(z[1]===")"?this.isBefore(ke,q):!this.isAfter(ke,q))):!1}function Ea(E,I){var q=Ce(E)?E:Tn(E),z;return this.isValid()&&q.isValid()?(I=ge(I)||"millisecond",I==="millisecond"?this.valueOf()===q.valueOf():(z=q.valueOf(),this.clone().startOf(I).valueOf()<=z&&z<=this.clone().endOf(I).valueOf())):!1}function vu(E,I){return this.isSame(E,I)||this.isAfter(E,I)}function wa(E,I){return this.isSame(E,I)||this.isBefore(E,I)}function Up(E,I,q){var z,ee,ke;if(!this.isValid())return NaN;if(z=io(E,this),!z.isValid())return NaN;switch(ee=(z.utcOffset()-this.utcOffset())*6e4,I=ge(I),I){case"year":ke=xu(this,z)/12;break;case"month":ke=xu(this,z);break;case"quarter":ke=xu(this,z)/3;break;case"second":ke=(this-z)/1e3;break;case"minute":ke=(this-z)/6e4;break;case"hour":ke=(this-z)/36e5;break;case"day":ke=(this-z-ee)/864e5;break;case"week":ke=(this-z-ee)/6048e5;break;default:ke=this-z}return q?ke:Si(ke)}function xu(E,I){if(E.date()<I.date())return-xu(I,E);var q=(I.year()-E.year())*12+(I.month()-E.month()),z=E.clone().add(q,"months"),ee,ke;return I-z<0?(ee=E.clone().add(q-1,"months"),ke=(I-z)/(z-ee)):(ee=E.clone().add(q+1,"months"),ke=(I-z)/(ee-z)),-(q+ke)||0}t.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",t.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";function al(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function Cf(E){if(!this.isValid())return null;var I=E!==!0,q=I?this.clone().utc():this;return q.year()<0||q.year()>9999?Ze(q,I?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):ct(Date.prototype.toISOString)?I?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",Ze(q,"Z")):Ze(q,I?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function Af(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var E="moment",I="",q,z,ee,ke;return this.isLocal()||(E=this.utcOffset()===0?"moment.utc":"moment.parseZone",I="Z"),q="["+E+'("]',z=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",ee="-MM-DD[T]HH:mm:ss.SSS",ke=I+'[")]',this.format(q+z+ee+ke)}function Md(E){E||(E=this.isUtc()?t.defaultFormatUtc:t.defaultFormat);var I=Ze(this,E);return this.localeData().postformat(I)}function zy(E,I){return this.isValid()&&(Ce(E)&&E.isValid()||Tn(E).isValid())?So({to:this,from:E}).locale(this.locale()).humanize(!I):this.localeData().invalidDate()}function um(E){return this.from(Tn(),E)}function Df(E,I){return this.isValid()&&(Ce(E)&&E.isValid()||Tn(E).isValid())?So({from:this,to:E}).locale(this.locale()).humanize(!I):this.localeData().invalidDate()}function Kl(E){return this.to(Tn(),E)}function cm(E){var I;return E===void 0?this._locale._abbr:(I=Xe(E),I!=null&&(this._locale=I),this)}var _u=Ve("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(E){return E===void 0?this.localeData():this.locale(E)});function lm(){return this._locale}var ul=1e3,Tc=60*ul,Yl=60*Tc,Gy=(365*400+97)*24*Yl;function wi(E,I){return(E%I+I)%I}function Fo(E,I,q){return E<100&&E>=0?new Date(E+400,I,q)-Gy:new Date(E,I,q).valueOf()}function Su(E,I,q){return E<100&&E>=0?Date.UTC(E+400,I,q)-Gy:Date.UTC(E,I,q)}function Zu(E){var I,q;if(E=ge(E),E===void 0||E==="millisecond"||!this.isValid())return this;switch(q=this._isUTC?Su:Fo,E){case"year":I=q(this.year(),0,1);break;case"quarter":I=q(this.year(),this.month()-this.month()%3,1);break;case"month":I=q(this.year(),this.month(),1);break;case"week":I=q(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":I=q(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":I=q(this.year(),this.month(),this.date());break;case"hour":I=this._d.valueOf(),I-=wi(I+(this._isUTC?0:this.utcOffset()*Tc),Yl);break;case"minute":I=this._d.valueOf(),I-=wi(I,Tc);break;case"second":I=this._d.valueOf(),I-=wi(I,ul);break}return this._d.setTime(I),t.updateOffset(this,!0),this}function cl(E){var I,q;if(E=ge(E),E===void 0||E==="millisecond"||!this.isValid())return this;switch(q=this._isUTC?Su:Fo,E){case"year":I=q(this.year()+1,0,1)-1;break;case"quarter":I=q(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":I=q(this.year(),this.month()+1,1)-1;break;case"week":I=q(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":I=q(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":I=q(this.year(),this.month(),this.date()+1)-1;break;case"hour":I=this._d.valueOf(),I+=Yl-wi(I+(this._isUTC?0:this.utcOffset()*Tc),Yl)-1;break;case"minute":I=this._d.valueOf(),I+=Tc-wi(I,Tc)-1;break;case"second":I=this._d.valueOf(),I+=ul-wi(I,ul)-1;break}return this._d.setTime(I),t.updateOffset(this,!0),this}function Xa(){return this._d.valueOf()-(this._offset||0)*6e4}function $p(){return Math.floor(this.valueOf()/1e3)}function ll(){return new Date(this.valueOf())}function _v(){var E=this;return[E.year(),E.month(),E.date(),E.hour(),E.minute(),E.second(),E.millisecond()]}function pm(){var E=this;return{years:E.year(),months:E.month(),date:E.date(),hours:E.hours(),minutes:E.minutes(),seconds:E.seconds(),milliseconds:E.milliseconds()}}function kf(){return this.isValid()?this.toISOString():null}function Bd(){return F(this)}function _x(){return b({},g(this))}function Ky(){return g(this).overflow}function e0(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}Ye("N",0,0,"eraAbbr"),Ye("NN",0,0,"eraAbbr"),Ye("NNN",0,0,"eraAbbr"),Ye("NNNN",0,0,"eraName"),Ye("NNNNN",0,0,"eraNarrow"),Ye("y",["y",1],"yo","eraYear"),Ye("y",["yy",2],0,"eraYear"),Ye("y",["yyy",3],0,"eraYear"),Ye("y",["yyyy",4],0,"eraYear"),Mt("N",qd),Mt("NN",qd),Mt("NNN",qd),Mt("NNNN",r0),Mt("NNNNN",n0),On(["N","NN","NNN","NNNN","NNNNN"],function(E,I,q,z){var ee=q._locale.erasParse(E,z,q._strict);ee?g(q).era=ee:g(q).invalidEra=E}),Mt("y",za),Mt("yy",za),Mt("yyy",za),Mt("yyyy",za),Mt("yo",dm),On(["y","yy","yyy","yyyy"],ur),On(["yo"],function(E,I,q,z){var ee;q._locale._eraYearOrdinalRegex&&(ee=E.match(q._locale._eraYearOrdinalRegex)),q._locale.eraYearOrdinalParse?I[ur]=q._locale.eraYearOrdinalParse(E,ee):I[ur]=parseInt(E,10)});function Yy(E,I){var q,z,ee,ke=this._eras||Xe("en")._eras;for(q=0,z=ke.length;q<z;++q){switch(typeof ke[q].since){case"string":ee=t(ke[q].since).startOf("day"),ke[q].since=ee.valueOf();break}switch(typeof ke[q].until){case"undefined":ke[q].until=1/0;break;case"string":ee=t(ke[q].until).startOf("day").valueOf(),ke[q].until=ee.valueOf();break}}return ke}function Jy(E,I,q){var z,ee,ke=this.eras(),xt,fr,dn;for(E=E.toUpperCase(),z=0,ee=ke.length;z<ee;++z)if(xt=ke[z].name.toUpperCase(),fr=ke[z].abbr.toUpperCase(),dn=ke[z].narrow.toUpperCase(),q)switch(I){case"N":case"NN":case"NNN":if(fr===E)return ke[z];break;case"NNNN":if(xt===E)return ke[z];break;case"NNNNN":if(dn===E)return ke[z];break}else if([xt,fr,dn].indexOf(E)>=0)return ke[z]}function fm(E,I){var q=E.since<=E.until?1:-1;return I===void 0?t(E.since).year():t(E.since).year()+(I-E.offset)*q}function Vp(){var E,I,q,z=this.localeData().eras();for(E=0,I=z.length;E<I;++E)if(q=this.clone().startOf("day").valueOf(),z[E].since<=q&&q<=z[E].until||z[E].until<=q&&q<=z[E].since)return z[E].name;return""}function Xy(){var E,I,q,z=this.localeData().eras();for(E=0,I=z.length;E<I;++E)if(q=this.clone().startOf("day").valueOf(),z[E].since<=q&&q<=z[E].until||z[E].until<=q&&q<=z[E].since)return z[E].narrow;return""}function Sv(){var E,I,q,z=this.localeData().eras();for(E=0,I=z.length;E<I;++E)if(q=this.clone().startOf("day").valueOf(),z[E].since<=q&&q<=z[E].until||z[E].until<=q&&q<=z[E].since)return z[E].abbr;return""}function jd(){var E,I,q,z,ee=this.localeData().eras();for(E=0,I=ee.length;E<I;++E)if(q=ee[E].since<=ee[E].until?1:-1,z=this.clone().startOf("day").valueOf(),ee[E].since<=z&&z<=ee[E].until||ee[E].until<=z&&z<=ee[E].since)return(this.year()-t(ee[E].since).year())*q+ee[E].offset;return this.year()}function Ta(E){return n(this,"_erasNameRegex")||Of.call(this),E?this._erasNameRegex:this._erasRegex}function t0(E){return n(this,"_erasAbbrRegex")||Of.call(this),E?this._erasAbbrRegex:this._erasRegex}function If(E){return n(this,"_erasNarrowRegex")||Of.call(this),E?this._erasNarrowRegex:this._erasRegex}function qd(E,I){return I.erasAbbrRegex(E)}function r0(E,I){return I.erasNameRegex(E)}function n0(E,I){return I.erasNarrowRegex(E)}function dm(E,I){return I._eraYearOrdinalRegex||za}function Of(){var E=[],I=[],q=[],z=[],ee,ke,xt,fr,dn,fi=this.eras();for(ee=0,ke=fi.length;ee<ke;++ee)xt=Di(fi[ee].name),fr=Di(fi[ee].abbr),dn=Di(fi[ee].narrow),I.push(xt),E.push(fr),q.push(dn),z.push(xt),z.push(fr),z.push(dn);this._erasRegex=new RegExp("^("+z.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+I.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+E.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+q.join("|")+")","i")}Ye(0,["gg",2],0,function(){return this.weekYear()%100}),Ye(0,["GG",2],0,function(){return this.isoWeekYear()%100});function Nf(E,I){Ye(0,[E,E.length],0,I)}Nf("gggg","weekYear"),Nf("ggggg","weekYear"),Nf("GGGG","isoWeekYear"),Nf("GGGGG","isoWeekYear"),Mt("G",rt),Mt("g",rt),Mt("GG",En,Vr),Mt("gg",En,Vr),Mt("GGGG",Vo,jn),Mt("gggg",Vo,jn),Mt("GGGGG",Vu,ei),Mt("ggggg",Vu,ei),Ss(["gggg","ggggg","GGGG","GGGGG"],function(E,I,q,z){I[z.substr(0,2)]=sn(E)}),Ss(["gg","GG"],function(E,I,q,z){I[z]=t.parseTwoDigitYear(E)});function Rf(E){return bu.call(this,E,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)}function Qy(E){return bu.call(this,E,this.isoWeek(),this.isoWeekday(),1,4)}function i0(){return ji(this.year(),1,4)}function s0(){return ji(this.isoWeekYear(),1,4)}function Jl(){var E=this.localeData()._week;return ji(this.year(),E.dow,E.doy)}function Hp(){var E=this.localeData()._week;return ji(this.weekYear(),E.dow,E.doy)}function bu(E,I,q,z,ee){var ke;return E==null?or(this,z,ee).year:(ke=ji(E,z,ee),I>ke&&(I=ke),Wp.call(this,E,I,q,z,ee))}function Wp(E,I,q,z,ee){var ke=Od(E,I,q,z,ee),xt=Sf(ke.year,0,ke.dayOfYear);return this.year(xt.getUTCFullYear()),this.month(xt.getUTCMonth()),this.date(xt.getUTCDate()),this}Ye("Q",0,"Qo","quarter"),Mt("Q",$r),On("Q",function(E,I){I[Ao]=(sn(E)-1)*3});function hm(E){return E==null?Math.ceil((this.month()+1)/3):this.month((E-1)*3+this.month()%3)}Ye("D",["DD",2],"Do","date"),Mt("D",En,xr),Mt("DD",En,Vr),Mt("Do",function(E,I){return E?I._dayOfMonthOrdinalParse||I._ordinalParse:I._dayOfMonthOrdinalParseLenient}),On(["D","DD"],co),On("Do",function(E,I){I[co]=sn(E.match(En)[0])});var Xl=tn("Date",!0);Ye("DDD",["DDDD",3],"DDDo","dayOfYear"),Mt("DDD",ps),Mt("DDDD",Hn),On(["DDD","DDDD"],function(E,I,q){q._dayOfYear=sn(E)});function Pc(E){var I=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return E==null?I:this.add(E-I,"d")}Ye("m",["mm",2],0,"minute"),Mt("m",En,In),Mt("mm",En,Vr),On(["m","mm"],Do);var mm=tn("Minutes",!1);Ye("s",["ss",2],0,"second"),Mt("s",En,In),Mt("ss",En,Vr),On(["s","ss"],lo);var Ud=tn("Seconds",!1);Ye("S",0,0,function(){return~~(this.millisecond()/100)}),Ye(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Ye(0,["SSS",3],0,"millisecond"),Ye(0,["SSSS",4],0,function(){return this.millisecond()*10}),Ye(0,["SSSSS",5],0,function(){return this.millisecond()*100}),Ye(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),Ye(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),Ye(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),Ye(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),Mt("S",ps,$r),Mt("SS",ps,Vr),Mt("SSS",ps,Hn);var ec,ym;for(ec="SSSS";ec.length<=9;ec+="S")Mt(ec,za);function Zy(E,I){I[js]=sn(("0."+E)*1e3)}for(ec="S";ec.length<=9;ec+="S")On(ec,Zy);ym=tn("Milliseconds",!1),Ye("z",0,0,"zoneAbbr"),Ye("zz",0,0,"zoneName");function o0(){return this._isUTC?"UTC":""}function a0(){return this._isUTC?"Coordinated Universal Time":""}var Jt=me.prototype;Jt.add=ni,Jt.calendar=am,Jt.clone=Zh,Jt.diff=Up,Jt.endOf=cl,Jt.format=Md,Jt.from=zy,Jt.fromNow=um,Jt.to=Df,Jt.toNow=Kl,Jt.get=du,Jt.invalidAt=Ky,Jt.isAfter=xv,Jt.isBefore=Qu,Jt.isBetween=Gl,Jt.isSame=Ea,Jt.isSameOrAfter=vu,Jt.isSameOrBefore=wa,Jt.isValid=Bd,Jt.lang=_u,Jt.locale=cm,Jt.localeData=lm,Jt.max=zo,Jt.min=Jh,Jt.parsingFlags=_x,Jt.set=fs,Jt.startOf=Zu,Jt.subtract=Ld,Jt.toArray=_v,Jt.toObject=pm,Jt.toDate=ll,Jt.toISOString=Cf,Jt.inspect=Af,typeof Symbol<"u"&&Symbol.for!=null&&(Jt[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),Jt.toJSON=kf,Jt.toString=al,Jt.unix=$p,Jt.valueOf=Xa,Jt.creationData=e0,Jt.eraName=Vp,Jt.eraNarrow=Xy,Jt.eraAbbr=Sv,Jt.eraYear=jd,Jt.year=Wu,Jt.isLeapYear=Fl,Jt.weekYear=Rf,Jt.isoWeekYear=Qy,Jt.quarter=Jt.quarters=hm,Jt.month=hu,Jt.daysInMonth=em,Jt.week=Jt.weeks=tm,Jt.isoWeek=Jt.isoWeeks=Hh,Jt.weeksInYear=Jl,Jt.weeksInWeekYear=Hp,Jt.isoWeeksInYear=i0,Jt.isoWeeksInISOWeekYear=s0,Jt.date=Xl,Jt.day=Jt.days=Ns,Jt.weekday=wn,Jt.isoWeekday=Gu,Jt.dayOfYear=Pc,Jt.hour=Jt.hours=va,Jt.minute=Jt.minutes=mm,Jt.second=Jt.seconds=Ud,Jt.millisecond=Jt.milliseconds=ym,Jt.utcOffset=Pf,Jt.utc=im,Jt.local=sm,Jt.parseZone=ta,Jt.hasAlignedHourOffset=Sa,Jt.isDST=Ja,Jt.isLocal=Hl,Jt.isUtcOffset=Wl,Jt.isUtc=Ei,Jt.isUTC=Ei,Jt.zoneAbbr=o0,Jt.zoneName=a0,Jt.dates=Ve("dates accessor is deprecated. Use date instead.",Xl),Jt.months=Ve("months accessor is deprecated. Use month instead",hu),Jt.years=Ve("years accessor is deprecated. Use year instead",Wu),Jt.zone=Ve("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",bi),Jt.isDSTShifted=Ve("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Vl);function fn(E){return Tn(E*1e3)}function ra(){return Tn.apply(null,arguments).parseZone()}function po(E){return E}var Pn=se.prototype;Pn.calendar=_e,Pn.longDateFormat=Tt,Pn.invalidDate=mt,Pn.ordinal=Yt,Pn.preparse=po,Pn.postformat=po,Pn.relativeTime=_t,Pn.pastFuture=bt,Pn.set=ot,Pn.eras=Yy,Pn.erasParse=Jy,Pn.erasConvertYear=fm,Pn.erasAbbrRegex=t0,Pn.erasNameRegex=Ta,Pn.erasNarrowRegex=If,Pn.months=Z0,Pn.monthsShort=kp,Pn.monthsParse=ga,Pn.monthsRegex=ns,Pn.monthsShortRegex=Ip,Pn.week=Nd,Pn.firstDayOfYear=bf,Pn.firstDayOfWeek=mu,Pn.weekdays=rl,Pn.weekdaysMin=zu,Pn.weekdaysShort=yu,Pn.weekdaysParse=Sc,Pn.weekdaysRegex=Gh,Pn.weekdaysShortRegex=Gs,Pn.weekdaysMinRegex=jl,Pn.isPM=Kh,Pn.meridiem=Lp;function Ua(E,I,q,z){var ee=Xe(),ke=P().set(z,I);return ee[q](ke,E)}function $d(E,I,q){if(m(E)&&(I=E,E=void 0),E=E||"",I!=null)return Ua(E,I,q,"month");var z,ee=[];for(z=0;z<12;z++)ee[z]=Ua(E,z,q,"month");return ee}function Js(E,I,q,z){typeof E=="boolean"?(m(I)&&(q=I,I=void 0),I=I||""):(I=E,q=I,E=!1,m(I)&&(q=I,I=void 0),I=I||"");var ee=Xe(),ke=E?ee._week.dow:0,xt,fr=[];if(q!=null)return Ua(I,(q+ke)%7,z,"day");for(xt=0;xt<7;xt++)fr[xt]=Ua(I,(xt+ke)%7,z,"day");return fr}function Vd(E,I){return $d(E,I,"months")}function Rn(E,I){return $d(E,I,"monthsShort")}function Ff(E,I,q){return Js(E,I,q,"weekdays")}function zp(E,I,q){return Js(E,I,q,"weekdaysShort")}function gm(E,I,q){return Js(E,I,q,"weekdaysMin")}ae("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(E){var I=E%10,q=sn(E%100/10)===1?"th":I===1?"st":I===2?"nd":I===3?"rd":"th";return E+q}}),t.lang=Ve("moment.lang is deprecated. Use moment.locale instead.",ae),t.langData=Ve("moment.langData is deprecated. Use moment.localeData instead.",Xe);var Cc=Math.abs;function vm(){var E=this._data;return this._milliseconds=Cc(this._milliseconds),this._days=Cc(this._days),this._months=Cc(this._months),E.milliseconds=Cc(E.milliseconds),E.seconds=Cc(E.seconds),E.minutes=Cc(E.minutes),E.hours=Cc(E.hours),E.months=Cc(E.months),E.years=Cc(E.years),this}function u0(E,I,q,z){var ee=So(I,q);return E._milliseconds+=z*ee._milliseconds,E._days+=z*ee._days,E._months+=z*ee._months,E._bubble()}function Ql(E,I){return u0(this,E,I,1)}function Ar(E,I){return u0(this,E,I,-1)}function Gp(E){return E<0?Math.floor(E):Math.ceil(E)}function xm(){var E=this._milliseconds,I=this._days,q=this._months,z=this._data,ee,ke,xt,fr,dn;return E>=0&&I>=0&&q>=0||E<=0&&I<=0&&q<=0||(E+=Gp(Ac(q)+I)*864e5,I=0,q=0),z.milliseconds=E%1e3,ee=Si(E/1e3),z.seconds=ee%60,ke=Si(ee/60),z.minutes=ke%60,xt=Si(ke/60),z.hours=xt%24,I+=Si(xt/24),dn=Si(Eu(I)),q+=dn,I-=Gp(Ac(dn)),fr=Si(q/12),q%=12,z.days=I,z.months=q,z.years=fr,this}function Eu(E){return E*4800/146097}function Ac(E){return E*146097/4800}function Hd(E){if(!this.isValid())return NaN;var I,q,z=this._milliseconds;if(E=ge(E),E==="month"||E==="quarter"||E==="year")switch(I=this._days+z/864e5,q=this._months+Eu(I),E){case"month":return q;case"quarter":return q/3;case"year":return q/12}else switch(I=this._days+Math.round(Ac(this._months)),E){case"week":return I/7+z/6048e5;case"day":return I+z/864e5;case"hour":return I*24+z/36e5;case"minute":return I*1440+z/6e4;case"second":return I*86400+z/1e3;case"millisecond":return Math.floor(I*864e5)+z;default:throw new Error("Unknown unit "+E)}}function Qa(E){return function(){return this.as(E)}}var Lf=Qa("ms"),_m=Qa("s"),pl=Qa("m"),Wd=Qa("h"),Kp=Qa("d"),Mf=Qa("w"),tc=Qa("M"),Dc=Qa("Q"),zd=Qa("y"),Yp=Lf;function Pa(){return So(this)}function Ui(E){return E=ge(E),this.isValid()?this[E+"s"]():NaN}function Oi(E){return function(){return this.isValid()?this._data[E]:NaN}}var c0=Oi("milliseconds"),Za=Oi("seconds"),eg=Oi("minutes"),Bf=Oi("hours"),Sm=Oi("days"),bv=Oi("months"),bm=Oi("years");function l0(){return Si(this.days()/7)}var wu=Math.round,Zl={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function jf(E,I,q,z,ee){return ee.relativeTime(I||1,!!q,E,z)}function tg(E,I,q,z){var ee=So(E).abs(),ke=wu(ee.as("s")),xt=wu(ee.as("m")),fr=wu(ee.as("h")),dn=wu(ee.as("d")),fi=wu(ee.as("M")),ia=wu(ee.as("w")),eu=wu(ee.as("y")),qs=ke<=q.ss&&["s",ke]||ke<q.s&&["ss",ke]||xt<=1&&["m"]||xt<q.m&&["mm",xt]||fr<=1&&["h"]||fr<q.h&&["hh",fr]||dn<=1&&["d"]||dn<q.d&&["dd",dn];return q.w!=null&&(qs=qs||ia<=1&&["w"]||ia<q.w&&["ww",ia]),qs=qs||fi<=1&&["M"]||fi<q.M&&["MM",fi]||eu<=1&&["y"]||["yy",eu],qs[2]=I,qs[3]=+E>0,qs[4]=z,jf.apply(null,qs)}function rg(E){return E===void 0?wu:typeof E=="function"?(wu=E,!0):!1}function Gd(E,I){return Zl[E]===void 0?!1:I===void 0?Zl[E]:(Zl[E]=I,E==="s"&&(Zl.ss=I-1),!0)}function Ev(E,I){if(!this.isValid())return this.localeData().invalidDate();var q=!1,z=Zl,ee,ke;return typeof E=="object"&&(I=E,E=!1),typeof E=="boolean"&&(q=E),typeof I=="object"&&(z=Object.assign({},Zl,I),I.s!=null&&I.ss==null&&(z.ss=I.s-1)),ee=this.localeData(),ke=tg(this,!q,z,ee),q&&(ke=ee.pastFuture(+this,ke)),ee.postformat(ke)}var p0=Math.abs;function ep(E){return(E>0)-(E<0)||+E}function na(){if(!this.isValid())return this.localeData().invalidDate();var E=p0(this._milliseconds)/1e3,I=p0(this._days),q=p0(this._months),z,ee,ke,xt,fr=this.asSeconds(),dn,fi,ia,eu;return fr?(z=Si(E/60),ee=Si(z/60),E%=60,z%=60,ke=Si(q/12),q%=12,xt=E?E.toFixed(3).replace(/\.?0+$/,""):"",dn=fr<0?"-":"",fi=ep(this._months)!==ep(fr)?"-":"",ia=ep(this._days)!==ep(fr)?"-":"",eu=ep(this._milliseconds)!==ep(fr)?"-":"",dn+"P"+(ke?fi+ke+"Y":"")+(q?fi+q+"M":"")+(I?ia+I+"D":"")+(ee||z||E?"T":"")+(ee?eu+ee+"H":"")+(z?eu+z+"M":"")+(E?eu+xt+"S":"")):"P0D"}var qn=Ec.prototype;qn.isValid=Fd,qn.abs=vm,qn.add=Ql,qn.subtract=Ar,qn.as=Hd,qn.asMilliseconds=Lf,qn.asSeconds=_m,qn.asMinutes=pl,qn.asHours=Wd,qn.asDays=Kp,qn.asWeeks=Mf,qn.asMonths=tc,qn.asQuarters=Dc,qn.asYears=zd,qn.valueOf=Yp,qn._bubble=xm,qn.clone=Pa,qn.get=Ui,qn.milliseconds=c0,qn.seconds=Za,qn.minutes=eg,qn.hours=Bf,qn.days=Sm,qn.weeks=l0,qn.months=bv,qn.years=bm,qn.humanize=Ev,qn.toISOString=na,qn.toString=na,qn.toJSON=na,qn.locale=cm,qn.localeData=lm,qn.toIsoString=Ve("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",na),qn.lang=_u,Ye("X",0,0,"unix"),Ye("x",0,0,"valueOf"),Mt("x",rt),Mt("X",Xt),On("X",function(E,I,q){q._d=new Date(parseFloat(E)*1e3)}),On("x",function(E,I,q){q._d=new Date(sn(E))});return t.version="2.30.1",r(Tn),t.fn=Jt,t.min=Ka,t.max=Rd,t.now=wf,t.utc=P,t.unix=fn,t.months=Vd,t.isDate=y,t.locale=ae,t.invalid=M,t.duration=So,t.isMoment=Ce,t.weekdays=Ff,t.parseZone=ra,t.localeData=Xe,t.isDuration=qa,t.monthsShort=Rn,t.weekdaysMin=gm,t.defineLocale=Me,t.updateLocale=it,t.locales=gt,t.weekdaysShort=zp,t.normalizeUnits=ge,t.relativeTimeRounding=rg,t.relativeTimeThreshold=Gd,t.calendarFormat=xx,t.prototype=Jt,t.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},t})});function D0(){return!process.stdout.isTTY||process.env.FORCE_NON_TTY==="1"||process.env.CI==="true"||process.env.CI==="1"||process.env.PAGES_SOURCE==="skills"||process.env.EDGEONE_NON_INTERACTIVE==="1"}function gC({prefix:e="cli"}){return Vs.default.createElement(Bs.Text,{color:"grey"},"[",e,"]")}function yi(e,t="cli"){if(D0()){console.log(`\x1B[90m[${t}]\x1B[0m\x1B[31m[\u2718] \x1B[0m${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Text,null,Vs.default.createElement(gC,{prefix:t}),Vs.default.createElement(Bs.Text,{color:"red"},"[\u2718] "),e));r()}function vC(e,t="cli"){if(D0()){console.log(`\x1B[90m[${t}]\x1B[0m\x1B[32m[\u2714] \x1B[0m${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Text,null,Vs.default.createElement(gC,{prefix:t}),Vs.default.createElement(Bs.Text,{color:"green"},"[\u2714] "),e));r()}function pi(e,t="cli"){if(D0()){console.log(`\x1B[90m[${t}]\x1B[0m \x1B[33mWARNING:\x1B[0m ${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Text,null,Vs.default.createElement(gC,{prefix:t}),Vs.default.createElement(Bs.Text,{color:"orange"},"\u2757\uFE0F "),e));r()}function $z(e){if(D0()){console.log(e);return}let{unmount:t}=(0,Bs.render)(Vs.default.createElement(Bs.Text,{color:"cyan"},e));t()}function Dt(e,t="cli"){if(D0()){console.log(`\x1B[90m[${t}]\x1B[0m ${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Text,null,Vs.default.createElement(gC,{prefix:t})," ",e));r()}function HR({timestamp:e}){return Vs.default.createElement(Bs.Box,{width:13},Vs.default.createElement(Bs.Text,{color:"grey"},(0,Wb.default)(e).format("HH:mm:ss.SSS")))}function Vz(e,t){if(D0()){console.log(`${(0,Wb.default)(t).format("HH:mm:ss.SSS")} ${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Box,null,Vs.default.createElement(HR,{timestamp:t}),Vs.default.createElement(Bs.Text,null,e)));r()}function Hz(e,t){if(D0()){console.log(`${(0,Wb.default)(t).format("HH:mm:ss.SSS")} [WARNING] ${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Box,null,Vs.default.createElement(HR,{timestamp:t}),Vs.default.createElement(Bs.Text,{color:"white",backgroundColor:"yellow"},"[WARNING]"),Vs.default.createElement(Bs.Text,null," ",e)));r()}function WR(e,t){if(D0()){console.log(`${(0,Wb.default)(t).format("HH:mm:ss.SSS")} [ERROR] ${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Box,null,Vs.default.createElement(HR,{timestamp:t}),Vs.default.createElement(Bs.Text,{color:"white",backgroundColor:"red"},"[ERROR]"),Vs.default.createElement(Bs.Text,null," ",e)));r()}var Bs,Vs,Wb,ua=ht(()=>{Bs=Lt(yC()),Vs=Lt(yo()),Wb=Lt(Uz())});var zz,Wz=ht(()=>{zz={name:"edgeone",version:"1.6.24",description:"Command-line interface for TencentCloud Pages Functions",bin:{edgeone:"./edgeone-bin/edgeone.js"},files:["./edgeone-bin/edgeone.js","./edgeone-dist/cli.js","./edgeone-dist/pages/templates","./edgeone-dist/pages/dev/runner-worker.js","./edgeone-dist/pages/observability-python/**","./edgeone-dist/libs-pages-blob-python/**","./edgeone-dist/libs-pages-agent-toolkit/**","./edgeone-dist/studio/**","./libs-pages-blob-python/**","./libs-pages-agent-toolkit/**"],author:"",keywords:["tencent","edgeone","edgefunctions","edgeone","cli","typescript"],scripts:{clean:"rimraf ./edgeone-dist ./edgeone-bin ./libs-node-ai ./libs-kv-client",bundle:"node -r esbuild-register ./scripts/bundle.ts",watch:"node -r esbuild-register ./scripts/bundle.ts watch",build:"npm run clean && npm run build:pages-ai && npm run build:kv-client && npm run prepare:blob-wheel && npm run prepare:agent-toolkit-wheel && npm run bundle","build:pages-ai":"node ./scripts/build-pages-ai.js","build:kv-client":"node ./scripts/build-kv-client.js","prepare:blob-wheel":"node ./scripts/prepare-pages-blob-wheel.js","prepare:agent-toolkit-wheel":"node ./scripts/prepare-pages-agent-toolkit-wheel.js","verify:publish-assets":"node ./scripts/verify-publish-assets.js","upload:agent-version-manifest":"node ./scripts/upload-agent-version-manifest.js",format:'prettier --write "src/**/*.{ts,tsx,js,jsx,json,md}" "scripts/**/*.{ts,js}" "*.{json,md}"',prepack:"npm run build && npm run verify:publish-assets",prepublishOnly:"npm run build && npm run verify:publish-assets",test:"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","test:observability":"vitest run --config src/agent/observability/node/tests/vitest.config.ts && cd src/agent/observability/python && uv run pytest tests/ -q"},dependencies:{"@edgeone/framework-detect":"^0.0.2","@edgeone/is-spa":"^0.0.3","@edgeone/nuxt-pages":"1.1.0","@edgeone/opennextjs-pages":"0.2.10","@edgeone/pages-agent-toolkit":"^0.1.34","@edgeone/pages-blob":"^0.0.16",archiver:"^7.0.1",chokidar:"^4.0.1","common-path-prefix":"^1.0.0","cos-nodejs-sdk-v5":"^2.14.7","cross-spawn":"^7.0.6",crypto:"^1.0.1","detect-port":"^2.1.0",esbuild:"^0.19.2","esbuild-plugin-polyfill-node":"^0.3.0","esbuild-plugin-vue":"^0.2.4","fast-glob":"^3.3.0","fs-extra":"^11.3.1",giget:"^2.0.0","ink-table":"^3.1.0",inquirer:"^8.2.4",install:"^0.13.0",lodash:"^4.17.21","mime-types":"^3.0.1",minimatch:"^9.0.5","node-persist":"^4.0.3",npm:"^10.9.1",open:"^8.4.2","p-map":"^5.5.0","parse-gitignore":"^2.0.0",portfinder:"^1.0.32",undici:"^5.29.0",vitest:"^4.0.17"},devDependencies:{"@babel/generator":"^7.28.0","@babel/parser":"^7.28.0","@babel/traverse":"^7.28.0","@babel/types":"^7.28.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^1.30.1","@opentelemetry/exporter-metrics-otlp-http":"^0.55.0","@opentelemetry/exporter-trace-otlp-http":"^0.55.0","@opentelemetry/instrumentation":"^0.55.0","@opentelemetry/otlp-transformer":"^0.55.0","@opentelemetry/resources":"^1.30.1","@opentelemetry/sdk-metrics":"^1.30.1","@opentelemetry/sdk-trace-base":"^1.30.1","@opentelemetry/sdk-trace-node":"^1.30.1","@opentelemetry/semantic-conventions":"^1.40.0","@tencent/capi-nodejs-sdk":"^2.3.2","@types/http-proxy":"^1.17.12","@types/inquirer":"^9.0.8","@types/ip":"^1.1.0","@types/lodash":"^4.14.198","@types/prompts":"^2.4.4","@types/react":"^17.0.2","@types/uuid":"^9.0.3","@types/ws":"^8.5.7","@types/yargs":"^17.0.24","@vitest/coverage-v8":"^4.0.17",axios:"^1.7.9",chalk:"^5.3.0",cookie:"^1.0.2",dotenv:"^16.3.1","esbuild-register":"^3.6.0",execa:"^7.1.1","http-proxy":"^1.18.1",husky:"^8.0.3",ink:"^3.2.0",ip:"^2.0.1",json5:"^2.2.3","lint-staged":"^15.2.0",lodash:"^4.17.21",moment:"^2.30.1","node-fetch":"^3.3.2",prettier:"^3.1.1",prompts:"^2.4.2",protobufjs:"^8.4.2",react:"^17.0.2",rimraf:"^6.0.1",semiver:"^1.1.0",sirv:"^2.0.3","tencentcloud-cls-sdk-js-web":"^1.0.13","ts-node":"^10.9.2",typescript:"^5.9.3","update-check":"^1.5.4",uuid:"^9.0.0",ws:"^8.14.2",yargs:"^17.6.2",zod:"^3.23.8","zod-to-json-schema":"^3.23.5"},engines:{node:">=12"},"lint-staged":{"*.{ts,tsx,js,jsx,json,md}":["prettier --write"]}}});function bIe(){var e,t;return{run_id:SIe,cli_version:(t=(e=zz)==null?void 0:e.version)!=null?t:"unknown",node_version:process.version,os_platform:GR.default.platform(),os_arch:GR.default.arch(),app_type:"cli",app_id:process.env.AppId||void 0,uin:process.env.Uin||void 0,instance_id:process.env.ProjectId||void 0,is_ci:process.env.CI==="true"}}function EIe(e,t){try{if(typeof process.send!="function")return;process.send(JSON.stringify({name:e,value:JSON.stringify(t)}))}catch{}}function lu(e){var r;let t={...bIe(),...e};EIe((r=t.event_name)!=null?r:"unknown",t)}function ld(e){if(e==null)return{message:"unknown error",stack:""};if(typeof e=="string")return{message:xC(e,zR),stack:""};if(typeof e=="object"){let t=e,r=xC(typeof t.message=="string"?t.message:String(t),zR),s=xC(typeof t.stack=="string"?t.stack:"",wIe);return{message:r,stack:s}}return{message:xC(String(e),zR),stack:""}}function xC(e,t){return e.length>t?e.slice(0,t)+"\u2026[truncated]":e}var GR,uu,cu,SIe,KR,zR,wIe,dy=ht(()=>{GR=Lt(require("os"));Wz();uu={COMMAND:"command",REQUEST:"request",LOCAL_FLOW:"local_flow",EXIT:"exit"},cu={SUCCESS:"success",FAIL:"fail",START:"start"},SIe=`cli-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;KR=(e,t)=>{let r=ld(t);lu({event_name:"error",event_scope:uu.COMMAND,event_result:cu.FAIL,error_message:`${e} ${r.message}`.trim(),error_stack:r.stack})},zR=500,wIe=2e3});var zb,S2,YR=ht(()=>{zb={NEXTJS:"nextjs",NUXTJS:"nuxtjs",ASTRO:"astro",UNKNOWN:"unknown"},S2={FRAMEWORK_DETECT:"framework_detect",PLUGIN_RESOLVE:"plugin_resolve",PLUGIN_LOAD:"plugin_load",PLUGIN_HOOK:"plugin_hook",CONFIG_LOAD:"config_load"}});function CIe(e){if((e==null?void 0:e.code)===PIe)return!0;let t=typeof e=="string"?e:e==null?void 0:e.message;return t==null?void 0:t.includes(TIe)}async function Mg(e=!1){try{let t=await PP(e);return lu({event_name:"Config:Load:Success",event_scope:uu.LOCAL_FLOW,event_phase:S2.CONFIG_LOAD,event_result:cu.SUCCESS,has_build_command:(t==null?void 0:t.buildCommand)!=null,has_install_command:(t==null?void 0:t.installCommand)!=null,has_output_directory:(t==null?void 0:t.outputDirectory)!=null,has_node_version:(t==null?void 0:t.nodeVersion)!=null}),t}catch(t){let r=ld(t);if(lu({event_name:"Config:Load:Fail",event_scope:uu.LOCAL_FLOW,event_phase:S2.CONFIG_LOAD,event_result:cu.FAIL,error_message:r.message}),CIe(t))throw t;return od()&&console.error("%c [ error ]-80","font-size:13px; background:pink; color:#bf2c9f;",t),null}}var TIe,PIe,JR=ht(()=>{n2();_P();dy();YR();TIe="[BLOCKING_CONFIG_ERROR]",PIe="BLOCKING_CONFIG_ERROR"});var _C,fc,SC=ht(()=>{_C=[{funcName:"onRequestGet",method:"GET"},{funcName:"onRequestPost",method:"POST"},{funcName:"onRequestDelete",method:"DELETE"},{funcName:"onRequestPatch",method:"PATCH"},{funcName:"onRequestPut",method:"PUT"},{funcName:"onRequestHead",method:"HEAD"},{funcName:"onRequestOptions",method:"OPTIONS"}],fc=["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"]});async function AIe(e){let t;bC.default.statSync(e).isFile()?t=b2.default.resolve(b2.default.dirname(e)):t=e;let r=b2.default.parse(t).root;if(t===r)return null;for(;t!==r;){let s=b2.default.join(t,"package.json");try{return await bC.default.promises.access(s),s}catch{if(t=b2.default.dirname(t),t===r)break}}return null}async function E2(e){if(e.endsWith(".mjs"))return"esm";if(e.endsWith(".cjs"))return"commonjs";try{let t=await AIe(e);if(t&&JSON.parse(await bC.default.promises.readFile(t,"utf-8")).type==="module")return"esm"}catch(t){console.warn("Failed to read package.json:",t)}return"commonjs"}var bC,b2,Gb=ht(()=>{bC=Lt(require("fs")),b2=Lt(require("path"))});function kIe(e){let t=XR.default.extname(e);return DIe[t]||"ts"}function NIe(e){return e.split(",").map(t=>t.trim()).map(t=>{let r=t.match(/^([A-Za-z_$][\w$]*)\s+as\s+([A-Za-z_$][\w$]*)$/);if(!r)return"";let[,s,a]=r;return!OIe.has(a)||s===a?"":`const ${a} = ${s};`}).filter(Boolean).join(`
|
|
145
|
+
`+new Error().stack),q=!1}return I.apply(this,arguments)},I)}var Re={};function Ct(E,I){t.deprecationHandler!=null&&t.deprecationHandler(E,I),Re[E]||(Ie(I),Re[E]=!0)}t.suppressDeprecationWarnings=!1,t.deprecationHandler=null;function ct(E){return typeof Function<"u"&&E instanceof Function||Object.prototype.toString.call(E)==="[object Function]"}function ot(E){var I,q;for(q in E)n(E,q)&&(I=E[q],ct(I)?this[q]=I:this["_"+q]=I);this._config=E,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function je(E,I){var q=b({},E),z;for(z in I)n(I,z)&&(a(E[z])&&a(I[z])?(q[z]={},b(q[z],E[z]),b(q[z],I[z])):I[z]!=null?q[z]=I[z]:delete q[z]);for(z in E)n(E,z)&&!n(I,z)&&a(E[z])&&(q[z]=b({},q[z]));return q}function se(E){E!=null&&this.set(E)}var De;Object.keys?De=Object.keys:De=function(E){var I,q=[];for(I in E)n(E,I)&&q.push(I);return q};var ze={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function _e(E,I,q){var z=this._calendar[E]||this._calendar.sameElse;return ct(z)?z.call(I,q):z}function Ee(E,I,q){var z=""+Math.abs(E),ee=I-z.length,ke=E>=0;return(ke?q?"+":"":"-")+Math.pow(10,Math.max(0,ee)).toString().substr(1)+z}var Fe=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,nt=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,vt={},jt={};function Ye(E,I,q,z){var ee=z;typeof z=="string"&&(ee=function(){return this[z]()}),E&&(jt[E]=ee),I&&(jt[I[0]]=function(){return Ee(ee.apply(this,arguments),I[1],I[2])}),q&&(jt[q]=function(){return this.localeData().ordinal(ee.apply(this,arguments),E)})}function At(E){return E.match(/\[[\s\S]/)?E.replace(/^\[|\]$/g,""):E.replace(/\\/g,"")}function Ae(E){var I=E.match(Fe),q,z;for(q=0,z=I.length;q<z;q++)jt[I[q]]?I[q]=jt[I[q]]:I[q]=At(I[q]);return function(ee){var ke="",xt;for(xt=0;xt<z;xt++)ke+=ct(I[xt])?I[xt].call(ee,E):I[xt];return ke}}function Ze(E,I){return E.isValid()?(I=lt(I,E.localeData()),vt[I]=vt[I]||Ae(I),vt[I](E)):E.localeData().invalidDate()}function lt(E,I){var q=5;function z(ee){return I.longDateFormat(ee)||ee}for(nt.lastIndex=0;q>=0&&nt.test(E);)E=E.replace(nt,z),nt.lastIndex=0,q-=1;return E}var Ut={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"};function Tt(E){var I=this._longDateFormat[E],q=this._longDateFormat[E.toUpperCase()];return I||!q?I:(this._longDateFormat[E]=q.match(Fe).map(function(z){return z==="MMMM"||z==="MM"||z==="DD"||z==="dddd"?z.slice(1):z}).join(""),this._longDateFormat[E])}var ft="Invalid date";function mt(){return this._invalidDate}var C="%d",kt=/\d{1,2}/;function Yt(E){return this._ordinal.replace("%d",E)}var Jr={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function _t(E,I,q,z){var ee=this._relativeTime[q];return ct(ee)?ee(E,I,q,z):ee.replace(/%d/i,E)}function bt(E,I){var q=this._relativeTime[E>0?"future":"past"];return ct(q)?q(I):q.replace(/%s/i,I)}var tr={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function ge(E){return typeof E=="string"?tr[E]||tr[E.toLowerCase()]:void 0}function Je(E){var I={},q,z;for(z in E)n(E,z)&&(q=ge(z),q&&(I[q]=E[z]));return I}var $t={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function rr(E){var I=[],q;for(q in E)n(E,q)&&I.push({unit:q,priority:$t[q]});return I.sort(function(z,ee){return z.priority-ee.priority}),I}var $r=/\d/,Vr=/\d\d/,Hn=/\d{3}/,jn=/\d{4}/,ei=/[+-]?\d{6}/,En=/\d\d?/,$o=/\d\d\d\d?/,Qo=/\d\d\d\d\d\d?/,ps=/\d{1,3}/,Vo=/\d{1,4}/,Vu=/[+-]?\d{1,6}/,za=/\d+/,rt=/[+-]?\d+/,Ft=/Z|[+-]\d\d:?\d\d/gi,It=/Z|[+-]\d\d(?::?\d\d)?/gi,Xt=/[+-]?\d+(\.\d{1,3})?/,Ir=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,xr=/^[1-9]\d?/,In=/^([1-9]\d|\d)/,_i;_i={};function Mt(E,I,q){_i[E]=ct(I)?I:function(z,ee){return z&&q?q:I}}function Ai(E,I){return n(_i,E)?_i[E](I._strict,I._locale):new RegExp(Ps(E))}function Ps(E){return Di(E.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(I,q,z,ee,ke){return q||z||ee||ke}))}function Di(E){return E.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Si(E){return E<0?Math.ceil(E)||0:Math.floor(E)}function sn(E){var I=+E,q=0;return I!==0&&isFinite(I)&&(q=Si(I)),q}var Ws={};function On(E,I){var q,z=I,ee;for(typeof E=="string"&&(E=[E]),m(I)&&(z=function(ke,xt){xt[I]=sn(ke)}),ee=E.length,q=0;q<ee;q++)Ws[E[q]]=z}function Ss(E,I){On(E,function(q,z,ee,ke){ee._w=ee._w||{},I(q,ee._w,ee,ke)})}function Hu(E,I,q){I!=null&&n(Ws,E)&&Ws[E](I,q._a,q,E)}function to(E){return E%4===0&&E%100!==0||E%400===0}var ur=0,Ao=1,co=2,Cs=3,Do=4,lo=5,js=6,Zc=7,fu=8;Ye("Y",0,0,function(){var E=this.year();return E<=9999?Ee(E,4):"+"+E}),Ye(0,["YY",2],0,function(){return this.year()%100}),Ye(0,["YYYY",4],0,"year"),Ye(0,["YYYYY",5],0,"year"),Ye(0,["YYYYYY",6,!0],0,"year"),Mt("Y",rt),Mt("YY",En,Vr),Mt("YYYY",Vo,jn),Mt("YYYYY",Vu,ei),Mt("YYYYYY",Vu,ei),On(["YYYYY","YYYYYY"],ur),On("YYYY",function(E,I){I[ur]=E.length===2?t.parseTwoDigitYear(E):sn(E)}),On("YY",function(E,I){I[ur]=t.parseTwoDigitYear(E)}),On("Y",function(E,I){I[ur]=parseInt(E,10)});function Oa(E){return to(E)?366:365}t.parseTwoDigitYear=function(E){return sn(E)+(sn(E)>68?1900:2e3)};var Wu=tn("FullYear",!0);function Fl(){return to(this.year())}function tn(E,I){return function(q){return q!=null?(el(this,E,q),t.updateOffset(this,I),this):vc(this,E)}}function vc(E,I){if(!E.isValid())return NaN;var q=E._d,z=E._isUTC;switch(I){case"Milliseconds":return z?q.getUTCMilliseconds():q.getMilliseconds();case"Seconds":return z?q.getUTCSeconds():q.getSeconds();case"Minutes":return z?q.getUTCMinutes():q.getMinutes();case"Hours":return z?q.getUTCHours():q.getHours();case"Date":return z?q.getUTCDate():q.getDate();case"Day":return z?q.getUTCDay():q.getDay();case"Month":return z?q.getUTCMonth():q.getMonth();case"FullYear":return z?q.getUTCFullYear():q.getFullYear();default:return NaN}}function el(E,I,q){var z,ee,ke,xt,fr;if(!(!E.isValid()||isNaN(q))){switch(z=E._d,ee=E._isUTC,I){case"Milliseconds":return void(ee?z.setUTCMilliseconds(q):z.setMilliseconds(q));case"Seconds":return void(ee?z.setUTCSeconds(q):z.setSeconds(q));case"Minutes":return void(ee?z.setUTCMinutes(q):z.setMinutes(q));case"Hours":return void(ee?z.setUTCHours(q):z.setHours(q));case"Date":return void(ee?z.setUTCDate(q):z.setDate(q));case"FullYear":break;default:return}ke=q,xt=E.month(),fr=E.date(),fr=fr===29&&xt===1&&!to(ke)?28:fr,ee?z.setUTCFullYear(ke,xt,fr):z.setFullYear(ke,xt,fr)}}function du(E){return E=ge(E),ct(this[E])?this[E]():this}function fs(E,I){if(typeof E=="object"){E=Je(E);var q=rr(E),z,ee=q.length;for(z=0;z<ee;z++)this[q[z].unit](E[q[z].unit])}else if(E=ge(E),ct(this[E]))return this[E](I);return this}function Ji(E,I){return(E%I+I)%I}var Bi;Array.prototype.indexOf?Bi=Array.prototype.indexOf:Bi=function(E){var I;for(I=0;I<this.length;++I)if(this[I]===E)return I;return-1};function zs(E,I){if(isNaN(E)||isNaN(I))return NaN;var q=Ji(I,12);return E+=(I-q)/12,q===1?to(E)?29:28:31-q%7%2}Ye("M",["MM",2],"Mo",function(){return this.month()+1}),Ye("MMM",0,0,function(E){return this.localeData().monthsShort(this,E)}),Ye("MMMM",0,0,function(E){return this.localeData().months(this,E)}),Mt("M",En,xr),Mt("MM",En,Vr),Mt("MMM",function(E,I){return I.monthsShortRegex(E)}),Mt("MMMM",function(E,I){return I.monthsRegex(E)}),On(["M","MM"],function(E,I){I[Ao]=sn(E)-1}),On(["MMM","MMMM"],function(E,I,q,z){var ee=q._locale.monthsParse(E,z,q._strict);ee!=null?I[Ao]=ee:g(q).invalidMonth=E});var ko="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Na="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Zo=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Io=Ir,Ll=Ir;function Z0(E,I){return E?s(this._months)?this._months[E.month()]:this._months[(this._months.isFormat||Zo).test(I)?"format":"standalone"][E.month()]:s(this._months)?this._months:this._months.standalone}function kp(E,I){return E?s(this._monthsShort)?this._monthsShort[E.month()]:this._monthsShort[Zo.test(I)?"format":"standalone"][E.month()]:s(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function Ml(E,I,q){var z,ee,ke,xt=E.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],z=0;z<12;++z)ke=P([2e3,z]),this._shortMonthsParse[z]=this.monthsShort(ke,"").toLocaleLowerCase(),this._longMonthsParse[z]=this.months(ke,"").toLocaleLowerCase();return q?I==="MMM"?(ee=Bi.call(this._shortMonthsParse,xt),ee!==-1?ee:null):(ee=Bi.call(this._longMonthsParse,xt),ee!==-1?ee:null):I==="MMM"?(ee=Bi.call(this._shortMonthsParse,xt),ee!==-1?ee:(ee=Bi.call(this._longMonthsParse,xt),ee!==-1?ee:null)):(ee=Bi.call(this._longMonthsParse,xt),ee!==-1?ee:(ee=Bi.call(this._shortMonthsParse,xt),ee!==-1?ee:null))}function ga(E,I,q){var z,ee,ke;if(this._monthsParseExact)return Ml.call(this,E,I,q);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),z=0;z<12;z++){if(ee=P([2e3,z]),q&&!this._longMonthsParse[z]&&(this._longMonthsParse[z]=new RegExp("^"+this.months(ee,"").replace(".","")+"$","i"),this._shortMonthsParse[z]=new RegExp("^"+this.monthsShort(ee,"").replace(".","")+"$","i")),!q&&!this._monthsParse[z]&&(ke="^"+this.months(ee,"")+"|^"+this.monthsShort(ee,""),this._monthsParse[z]=new RegExp(ke.replace(".",""),"i")),q&&I==="MMMM"&&this._longMonthsParse[z].test(E))return z;if(q&&I==="MMM"&&this._shortMonthsParse[z].test(E))return z;if(!q&&this._monthsParse[z].test(E))return z}}function qt(E,I){if(!E.isValid())return E;if(typeof I=="string"){if(/^\d+$/.test(I))I=sn(I);else if(I=E.localeData().monthsParse(I),!m(I))return E}var q=I,z=E.date();return z=z<29?z:Math.min(z,zs(E.year(),q)),E._isUTC?E._d.setUTCMonth(q,z):E._d.setMonth(q,z),E}function hu(E){return E!=null?(qt(this,E),t.updateOffset(this,!0),this):vc(this,"Month")}function em(){return zs(this.year(),this.month())}function Ip(E){return this._monthsParseExact?(n(this,"_monthsRegex")||xc.call(this),E?this._monthsShortStrictRegex:this._monthsShortRegex):(n(this,"_monthsShortRegex")||(this._monthsShortRegex=Io),this._monthsShortStrictRegex&&E?this._monthsShortStrictRegex:this._monthsShortRegex)}function ns(E){return this._monthsParseExact?(n(this,"_monthsRegex")||xc.call(this),E?this._monthsStrictRegex:this._monthsRegex):(n(this,"_monthsRegex")||(this._monthsRegex=Ll),this._monthsStrictRegex&&E?this._monthsStrictRegex:this._monthsRegex)}function xc(){function E(dn,fi){return fi.length-dn.length}var I=[],q=[],z=[],ee,ke,xt,fr;for(ee=0;ee<12;ee++)ke=P([2e3,ee]),xt=Di(this.monthsShort(ke,"")),fr=Di(this.months(ke,"")),I.push(xt),q.push(fr),z.push(fr),z.push(xt);I.sort(E),q.sort(E),z.sort(E),this._monthsRegex=new RegExp("^("+z.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+q.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+I.join("|")+")","i")}function Vh(E,I,q,z,ee,ke,xt){var fr;return E<100&&E>=0?(fr=new Date(E+400,I,q,z,ee,ke,xt),isFinite(fr.getFullYear())&&fr.setFullYear(E)):fr=new Date(E,I,q,z,ee,ke,xt),fr}function Sf(E){var I,q;return E<100&&E>=0?(q=Array.prototype.slice.call(arguments),q[0]=E+400,I=new Date(Date.UTC.apply(null,q)),isFinite(I.getUTCFullYear())&&I.setUTCFullYear(E)):I=new Date(Date.UTC.apply(null,arguments)),I}function tl(E,I,q){var z=7+I-q,ee=(7+Sf(E,0,z).getUTCDay()-I)%7;return-ee+z-1}function Od(E,I,q,z,ee){var ke=(7+q-z)%7,xt=tl(E,z,ee),fr=1+7*(I-1)+ke+xt,dn,fi;return fr<=0?(dn=E-1,fi=Oa(dn)+fr):fr>Oa(E)?(dn=E+1,fi=fr-Oa(E)):(dn=E,fi=fr),{year:dn,dayOfYear:fi}}function or(E,I,q){var z=tl(E.year(),I,q),ee=Math.floor((E.dayOfYear()-z-1)/7)+1,ke,xt;return ee<1?(xt=E.year()-1,ke=ee+ji(xt,I,q)):ee>ji(E.year(),I,q)?(ke=ee-ji(E.year(),I,q),xt=E.year()+1):(xt=E.year(),ke=ee),{week:ke,year:xt}}function ji(E,I,q){var z=tl(E,I,q),ee=tl(E+1,I,q);return(Oa(E)-z+ee)/7}Ye("w",["ww",2],"wo","week"),Ye("W",["WW",2],"Wo","isoWeek"),Mt("w",En,xr),Mt("ww",En,Vr),Mt("W",En,xr),Mt("WW",En,Vr),Ss(["w","ww","W","WW"],function(E,I,q,z){I[z.substr(0,1)]=sn(E)});function Nd(E){return or(E,this._week.dow,this._week.doy).week}var Bl={dow:0,doy:6};function mu(){return this._week.dow}function bf(){return this._week.doy}function tm(E){var I=this.localeData().week(this);return E==null?I:this.add((E-I)*7,"d")}function Hh(E){var I=or(this,1,4).week;return E==null?I:this.add((E-I)*7,"d")}Ye("d",0,"do","day"),Ye("dd",0,0,function(E){return this.localeData().weekdaysMin(this,E)}),Ye("ddd",0,0,function(E){return this.localeData().weekdaysShort(this,E)}),Ye("dddd",0,0,function(E){return this.localeData().weekdays(this,E)}),Ye("e",0,0,"weekday"),Ye("E",0,0,"isoWeekday"),Mt("d",En),Mt("e",En),Mt("E",En),Mt("dd",function(E,I){return I.weekdaysMinRegex(E)}),Mt("ddd",function(E,I){return I.weekdaysShortRegex(E)}),Mt("dddd",function(E,I){return I.weekdaysRegex(E)}),Ss(["dd","ddd","dddd"],function(E,I,q,z){var ee=q._locale.weekdaysParse(E,z,q._strict);ee!=null?I.d=ee:g(q).invalidWeekday=E}),Ss(["d","e","E"],function(E,I,q,z){I[z]=sn(E)});function rm(E,I){return typeof E!="string"?E:isNaN(E)?(E=I.weekdaysParse(E),typeof E=="number"?E:null):parseInt(E,10)}function Ra(E,I){return typeof E=="string"?I.weekdaysParse(E)%7||7:isNaN(E)?null:E}function Fa(E,I){return E.slice(I,7).concat(E.slice(0,I))}var Wh="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),zh="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Op="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ea=Ir,Np=Ir,La=Ir;function rl(E,I){var q=s(this._weekdays)?this._weekdays:this._weekdays[E&&E!==!0&&this._weekdays.isFormat.test(I)?"format":"standalone"];return E===!0?Fa(q,this._week.dow):E?q[E.day()]:q}function yu(E){return E===!0?Fa(this._weekdaysShort,this._week.dow):E?this._weekdaysShort[E.day()]:this._weekdaysShort}function zu(E){return E===!0?Fa(this._weekdaysMin,this._week.dow):E?this._weekdaysMin[E.day()]:this._weekdaysMin}function _c(E,I,q){var z,ee,ke,xt=E.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],z=0;z<7;++z)ke=P([2e3,1]).day(z),this._minWeekdaysParse[z]=this.weekdaysMin(ke,"").toLocaleLowerCase(),this._shortWeekdaysParse[z]=this.weekdaysShort(ke,"").toLocaleLowerCase(),this._weekdaysParse[z]=this.weekdays(ke,"").toLocaleLowerCase();return q?I==="dddd"?(ee=Bi.call(this._weekdaysParse,xt),ee!==-1?ee:null):I==="ddd"?(ee=Bi.call(this._shortWeekdaysParse,xt),ee!==-1?ee:null):(ee=Bi.call(this._minWeekdaysParse,xt),ee!==-1?ee:null):I==="dddd"?(ee=Bi.call(this._weekdaysParse,xt),ee!==-1||(ee=Bi.call(this._shortWeekdaysParse,xt),ee!==-1)?ee:(ee=Bi.call(this._minWeekdaysParse,xt),ee!==-1?ee:null)):I==="ddd"?(ee=Bi.call(this._shortWeekdaysParse,xt),ee!==-1||(ee=Bi.call(this._weekdaysParse,xt),ee!==-1)?ee:(ee=Bi.call(this._minWeekdaysParse,xt),ee!==-1?ee:null)):(ee=Bi.call(this._minWeekdaysParse,xt),ee!==-1||(ee=Bi.call(this._weekdaysParse,xt),ee!==-1)?ee:(ee=Bi.call(this._shortWeekdaysParse,xt),ee!==-1?ee:null))}function Sc(E,I,q){var z,ee,ke;if(this._weekdaysParseExact)return _c.call(this,E,I,q);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),z=0;z<7;z++){if(ee=P([2e3,1]).day(z),q&&!this._fullWeekdaysParse[z]&&(this._fullWeekdaysParse[z]=new RegExp("^"+this.weekdays(ee,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[z]=new RegExp("^"+this.weekdaysShort(ee,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[z]=new RegExp("^"+this.weekdaysMin(ee,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[z]||(ke="^"+this.weekdays(ee,"")+"|^"+this.weekdaysShort(ee,"")+"|^"+this.weekdaysMin(ee,""),this._weekdaysParse[z]=new RegExp(ke.replace(".",""),"i")),q&&I==="dddd"&&this._fullWeekdaysParse[z].test(E))return z;if(q&&I==="ddd"&&this._shortWeekdaysParse[z].test(E))return z;if(q&&I==="dd"&&this._minWeekdaysParse[z].test(E))return z;if(!q&&this._weekdaysParse[z].test(E))return z}}function Ns(E){if(!this.isValid())return E!=null?this:NaN;var I=vc(this,"Day");return E!=null?(E=rm(E,this.localeData()),this.add(E-I,"d")):I}function wn(E){if(!this.isValid())return E!=null?this:NaN;var I=(this.day()+7-this.localeData()._week.dow)%7;return E==null?I:this.add(E-I,"d")}function Gu(E){if(!this.isValid())return E!=null?this:NaN;if(E!=null){var I=Ra(E,this.localeData());return this.day(this.day()%7?I:I-7)}else return this.day()||7}function Gh(E){return this._weekdaysParseExact?(n(this,"_weekdaysRegex")||ql.call(this),E?this._weekdaysStrictRegex:this._weekdaysRegex):(n(this,"_weekdaysRegex")||(this._weekdaysRegex=ea),this._weekdaysStrictRegex&&E?this._weekdaysStrictRegex:this._weekdaysRegex)}function Gs(E){return this._weekdaysParseExact?(n(this,"_weekdaysRegex")||ql.call(this),E?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(n(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Np),this._weekdaysShortStrictRegex&&E?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function jl(E){return this._weekdaysParseExact?(n(this,"_weekdaysRegex")||ql.call(this),E?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(n(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=La),this._weekdaysMinStrictRegex&&E?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function ql(){function E(ia,eu){return eu.length-ia.length}var I=[],q=[],z=[],ee=[],ke,xt,fr,dn,fi;for(ke=0;ke<7;ke++)xt=P([2e3,1]).day(ke),fr=Di(this.weekdaysMin(xt,"")),dn=Di(this.weekdaysShort(xt,"")),fi=Di(this.weekdays(xt,"")),I.push(fr),q.push(dn),z.push(fi),ee.push(fr),ee.push(dn),ee.push(fi);I.sort(E),q.sort(E),z.sort(E),ee.sort(E),this._weekdaysRegex=new RegExp("^("+ee.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+z.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+q.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+I.join("|")+")","i")}function Ma(){return this.hours()%12||12}function Rp(){return this.hours()||24}Ye("H",["HH",2],0,"hour"),Ye("h",["hh",2],0,Ma),Ye("k",["kk",2],0,Rp),Ye("hmm",0,0,function(){return""+Ma.apply(this)+Ee(this.minutes(),2)}),Ye("hmmss",0,0,function(){return""+Ma.apply(this)+Ee(this.minutes(),2)+Ee(this.seconds(),2)}),Ye("Hmm",0,0,function(){return""+this.hours()+Ee(this.minutes(),2)}),Ye("Hmmss",0,0,function(){return""+this.hours()+Ee(this.minutes(),2)+Ee(this.seconds(),2)});function Oo(E,I){Ye(E,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),I)})}Oo("a",!0),Oo("A",!1);function Fp(E,I){return I._meridiemParse}Mt("a",Fp),Mt("A",Fp),Mt("H",En,In),Mt("h",En,xr),Mt("k",En,xr),Mt("HH",En,Vr),Mt("hh",En,Vr),Mt("kk",En,Vr),Mt("hmm",$o),Mt("hmmss",Qo),Mt("Hmm",$o),Mt("Hmmss",Qo),On(["H","HH"],Cs),On(["k","kk"],function(E,I,q){var z=sn(E);I[Cs]=z===24?0:z}),On(["a","A"],function(E,I,q){q._isPm=q._locale.isPM(E),q._meridiem=E}),On(["h","hh"],function(E,I,q){I[Cs]=sn(E),g(q).bigHour=!0}),On("hmm",function(E,I,q){var z=E.length-2;I[Cs]=sn(E.substr(0,z)),I[Do]=sn(E.substr(z)),g(q).bigHour=!0}),On("hmmss",function(E,I,q){var z=E.length-4,ee=E.length-2;I[Cs]=sn(E.substr(0,z)),I[Do]=sn(E.substr(z,2)),I[lo]=sn(E.substr(ee)),g(q).bigHour=!0}),On("Hmm",function(E,I,q){var z=E.length-2;I[Cs]=sn(E.substr(0,z)),I[Do]=sn(E.substr(z))}),On("Hmmss",function(E,I,q){var z=E.length-4,ee=E.length-2;I[Cs]=sn(E.substr(0,z)),I[Do]=sn(E.substr(z,2)),I[lo]=sn(E.substr(ee))});function Kh(E){return(E+"").toLowerCase().charAt(0)==="p"}var Ga=/[ap]\.?m?\.?/i,va=tn("Hours",!0);function Lp(E,I,q){return E>11?q?"pm":"PM":q?"am":"AM"}var nl={calendar:ze,longDateFormat:Ut,invalidDate:ft,ordinal:C,dayOfMonthOrdinalParse:kt,relativeTime:Jr,months:ko,monthsShort:Na,week:Bl,weekdays:Wh,weekdaysMin:Op,weekdaysShort:zh,meridiemParse:Ga},bs={},ro={},Ku;function Ef(E,I){var q,z=Math.min(E.length,I.length);for(q=0;q<z;q+=1)if(E[q]!==I[q])return q;return z}function gu(E){return E&&E.toLowerCase().replace("_","-")}function il(E){for(var I=0,q,z,ee,ke;I<E.length;){for(ke=gu(E[I]).split("-"),q=ke.length,z=gu(E[I+1]),z=z?z.split("-"):null;q>0;){if(ee=Z(ke.slice(0,q).join("-")),ee)return ee;if(z&&z.length>=q&&Ef(ke,z)>=q-1)break;q--}I++}return Ku}function ue(E){return!!(E&&E.match("^[^/\\\\]*$"))}function Z(E){var I=null,q;if(bs[E]===void 0&&typeof _2<"u"&&_2&&_2.exports&&ue(E))try{I=Ku._abbr,q=require,q("./locale/"+E),ae(I)}catch{bs[E]=null}return bs[E]}function ae(E,I){var q;return E&&(f(I)?q=Xe(E):q=Me(E,I),q?Ku=q:typeof console<"u"&&console.warn&&console.warn("Locale "+E+" not found. Did you forget to load it?")),Ku._abbr}function Me(E,I){if(I!==null){var q,z=nl;if(I.abbr=E,bs[E]!=null)Ct("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),z=bs[E]._config;else if(I.parentLocale!=null)if(bs[I.parentLocale]!=null)z=bs[I.parentLocale]._config;else if(q=Z(I.parentLocale),q!=null)z=q._config;else return ro[I.parentLocale]||(ro[I.parentLocale]=[]),ro[I.parentLocale].push({name:E,config:I}),null;return bs[E]=new se(je(z,I)),ro[E]&&ro[E].forEach(function(ee){Me(ee.name,ee.config)}),ae(E),bs[E]}else return delete bs[E],null}function it(E,I){if(I!=null){var q,z,ee=nl;bs[E]!=null&&bs[E].parentLocale!=null?bs[E].set(je(bs[E]._config,I)):(z=Z(E),z!=null&&(ee=z._config),I=je(ee,I),z==null&&(I.abbr=E),q=new se(I),q.parentLocale=bs[E],bs[E]=q),ae(E)}else bs[E]!=null&&(bs[E].parentLocale!=null?(bs[E]=bs[E].parentLocale,E===ae()&&ae(E)):bs[E]!=null&&delete bs[E]);return bs[E]}function Xe(E){var I;if(E&&E._locale&&E._locale._abbr&&(E=E._locale._abbr),!E)return Ku;if(!s(E)){if(I=Z(E),I)return I;E=[E]}return il(E)}function gt(){return De(bs)}function St(E){var I,q=E._a;return q&&g(E).overflow===-2&&(I=q[Ao]<0||q[Ao]>11?Ao:q[co]<1||q[co]>zs(q[ur],q[Ao])?co:q[Cs]<0||q[Cs]>24||q[Cs]===24&&(q[Do]!==0||q[lo]!==0||q[js]!==0)?Cs:q[Do]<0||q[Do]>59?Do:q[lo]<0||q[lo]>59?lo:q[js]<0||q[js]>999?js:-1,g(E)._overflowDayOfYear&&(I<ur||I>co)&&(I=co),g(E)._overflowWeeks&&I===-1&&(I=Zc),g(E)._overflowWeekday&&I===-1&&(I=fu),g(E).overflow=I),E}var Vt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_r=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,An=/Z|[+-]\d\d(?::?\d\d)?/,ti=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Nn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ba=/^\/?Date\((-?\d+)/i,Ul=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,xa={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function No(E){var I,q,z=E._i,ee=Vt.exec(z)||_r.exec(z),ke,xt,fr,dn,fi=ti.length,ia=Nn.length;if(ee){for(g(E).iso=!0,I=0,q=fi;I<q;I++)if(ti[I][1].exec(ee[1])){xt=ti[I][0],ke=ti[I][2]!==!1;break}if(xt==null){E._isValid=!1;return}if(ee[3]){for(I=0,q=ia;I<q;I++)if(Nn[I][1].exec(ee[3])){fr=(ee[2]||" ")+Nn[I][0];break}if(fr==null){E._isValid=!1;return}}if(!ke&&fr!=null){E._isValid=!1;return}if(ee[4])if(An.exec(ee[4]))dn="Z";else{E._isValid=!1;return}E._f=xt+(fr||"")+(dn||""),Ho(E)}else E._isValid=!1}function ui(E,I,q,z,ee,ke){var xt=[on(E),Na.indexOf(I),parseInt(q,10),parseInt(z,10),parseInt(ee,10)];return ke&&xt.push(parseInt(ke,10)),xt}function on(E){var I=parseInt(E,10);return I<=49?2e3+I:I<=999?1900+I:I}function Nr(E){return E.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function rn(E,I,q){if(E){var z=zh.indexOf(E),ee=new Date(I[0],I[1],I[2]).getDay();if(z!==ee)return g(q).weekdayMismatch=!0,q._isValid=!1,!1}return!0}function ri(E,I,q){if(E)return xa[E];if(I)return 0;var z=parseInt(q,10),ee=z%100,ke=(z-ee)/100;return ke*60+ee}function Ii(E){var I=Ul.exec(Nr(E._i)),q;if(I){if(q=ui(I[4],I[3],I[2],I[5],I[6],I[7]),!rn(I[1],q,E))return;E._a=q,E._tzm=ri(I[8],I[9],I[10]),E._d=Sf.apply(null,E._a),E._d.setUTCMinutes(E._d.getUTCMinutes()-E._tzm),g(E).rfc2822=!0}else E._isValid=!1}function Ks(E){var I=Ba.exec(E._i);if(I!==null){E._d=new Date(+I[1]);return}if(No(E),E._isValid===!1)delete E._isValid;else return;if(Ii(E),E._isValid===!1)delete E._isValid;else return;E._strict?E._isValid=!1:t.createFromInputFallback(E)}t.createFromInputFallback=Ve("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(E){E._d=new Date(E._i+(E._useUTC?" UTC":""))});function _o(E,I,q){return E!=null?E:I!=null?I:q}function bc(E){var I=new Date(t.now());return E._useUTC?[I.getUTCFullYear(),I.getUTCMonth(),I.getUTCDate()]:[I.getFullYear(),I.getMonth(),I.getDate()]}function no(E){var I,q,z=[],ee,ke,xt;if(!E._d){for(ee=bc(E),E._w&&E._a[co]==null&&E._a[Ao]==null&&ja(E),E._dayOfYear!=null&&(xt=_o(E._a[ur],ee[ur]),(E._dayOfYear>Oa(xt)||E._dayOfYear===0)&&(g(E)._overflowDayOfYear=!0),q=Sf(xt,0,E._dayOfYear),E._a[Ao]=q.getUTCMonth(),E._a[co]=q.getUTCDate()),I=0;I<3&&E._a[I]==null;++I)E._a[I]=z[I]=ee[I];for(;I<7;I++)E._a[I]=z[I]=E._a[I]==null?I===2?1:0:E._a[I];E._a[Cs]===24&&E._a[Do]===0&&E._a[lo]===0&&E._a[js]===0&&(E._nextDay=!0,E._a[Cs]=0),E._d=(E._useUTC?Sf:Vh).apply(null,z),ke=E._useUTC?E._d.getUTCDay():E._d.getDay(),E._tzm!=null&&E._d.setUTCMinutes(E._d.getUTCMinutes()-E._tzm),E._nextDay&&(E._a[Cs]=24),E._w&&typeof E._w.d<"u"&&E._w.d!==ke&&(g(E).weekdayMismatch=!0)}}function ja(E){var I,q,z,ee,ke,xt,fr,dn,fi;I=E._w,I.GG!=null||I.W!=null||I.E!=null?(ke=1,xt=4,q=_o(I.GG,E._a[ur],or(Tn(),1,4).year),z=_o(I.W,1),ee=_o(I.E,1),(ee<1||ee>7)&&(dn=!0)):(ke=E._locale._week.dow,xt=E._locale._week.doy,fi=or(Tn(),ke,xt),q=_o(I.gg,E._a[ur],fi.year),z=_o(I.w,fi.week),I.d!=null?(ee=I.d,(ee<0||ee>6)&&(dn=!0)):I.e!=null?(ee=I.e+ke,(I.e<0||I.e>6)&&(dn=!0)):ee=ke),z<1||z>ji(q,ke,xt)?g(E)._overflowWeeks=!0:dn!=null?g(E)._overflowWeekday=!0:(fr=Od(q,z,ee,ke,xt),E._a[ur]=fr.year,E._dayOfYear=fr.dayOfYear)}t.ISO_8601=function(){},t.RFC_2822=function(){};function Ho(E){if(E._f===t.ISO_8601){No(E);return}if(E._f===t.RFC_2822){Ii(E);return}E._a=[],g(E).empty=!0;var I=""+E._i,q,z,ee,ke,xt,fr=I.length,dn=0,fi,ia;for(ee=lt(E._f,E._locale).match(Fe)||[],ia=ee.length,q=0;q<ia;q++)ke=ee[q],z=(I.match(Ai(ke,E))||[])[0],z&&(xt=I.substr(0,I.indexOf(z)),xt.length>0&&g(E).unusedInput.push(xt),I=I.slice(I.indexOf(z)+z.length),dn+=z.length),jt[ke]?(z?g(E).empty=!1:g(E).unusedTokens.push(ke),Hu(ke,z,E)):E._strict&&!z&&g(E).unusedTokens.push(ke);g(E).charsLeftOver=fr-dn,I.length>0&&g(E).unusedInput.push(I),E._a[Cs]<=12&&g(E).bigHour===!0&&E._a[Cs]>0&&(g(E).bigHour=void 0),g(E).parsedDateParts=E._a.slice(0),g(E).meridiem=E._meridiem,E._a[Cs]=$l(E._locale,E._a[Cs],E._meridiem),fi=g(E).era,fi!==null&&(E._a[ur]=E._locale.erasConvertYear(fi,E._a[ur])),no(E),St(E)}function $l(E,I,q){var z;return q==null?I:E.meridiemHour!=null?E.meridiemHour(I,q):(E.isPM!=null&&(z=E.isPM(q),z&&I<12&&(I+=12),!z&&I===12&&(I=0)),I)}function Mp(E){var I,q,z,ee,ke,xt,fr=!1,dn=E._f.length;if(dn===0){g(E).invalidFormat=!0,E._d=new Date(NaN);return}for(ee=0;ee<dn;ee++)ke=0,xt=!1,I=te({},E),E._useUTC!=null&&(I._useUTC=E._useUTC),I._f=E._f[ee],Ho(I),F(I)&&(xt=!0),ke+=g(I).charsLeftOver,ke+=g(I).unusedTokens.length*10,g(I).score=ke,fr?ke<z&&(z=ke,q=I):(z==null||ke<z||xt)&&(z=ke,q=I,xt&&(fr=!0));b(E,q||I)}function Yu(E){if(!E._d){var I=Je(E._i),q=I.day===void 0?I.date:I.day;E._a=v([I.year,I.month,q,I.hour,I.minute,I.second,I.millisecond],function(z){return z&&parseInt(z,10)}),no(E)}}function Bp(E){var I=new me(St(Wo(E)));return I._nextDay&&(I.add(1,"d"),I._nextDay=void 0),I}function Wo(E){var I=E._i,q=E._f;return E._locale=E._locale||Xe(E._l),I===null||q===void 0&&I===""?M({nullInput:!0}):(typeof I=="string"&&(E._i=I=E._locale.preparse(I)),Ce(I)?new me(St(I)):(y(I)?E._d=I:s(q)?Mp(E):q?Ho(E):qi(E),F(E)||(E._d=null),E))}function qi(E){var I=E._i;f(I)?E._d=new Date(t.now()):y(I)?E._d=new Date(I.valueOf()):typeof I=="string"?Ks(E):s(I)?(E._a=v(I.slice(0),function(q){return parseInt(q,10)}),no(E)):a(I)?Yu(E):m(I)?E._d=new Date(I):t.createFromInputFallback(E)}function Yh(E,I,q,z,ee){var ke={};return(I===!0||I===!1)&&(z=I,I=void 0),(q===!0||q===!1)&&(z=q,q=void 0),(a(E)&&l(E)||s(E)&&E.length===0)&&(E=void 0),ke._isAMomentObject=!0,ke._useUTC=ke._isUTC=ee,ke._l=q,ke._i=E,ke._f=I,ke._strict=z,Bp(ke)}function Tn(E,I,q,z){return Yh(E,I,q,z,!1)}var Jh=Ve("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var E=Tn.apply(null,arguments);return this.isValid()&&E.isValid()?E<this?this:E:M()}),zo=Ve("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var E=Tn.apply(null,arguments);return this.isValid()&&E.isValid()?E>this?this:E:M()});function oi(E,I){var q,z;if(I.length===1&&s(I[0])&&(I=I[0]),!I.length)return Tn();for(q=I[0],z=1;z<I.length;++z)(!I[z].isValid()||I[z][E](q))&&(q=I[z]);return q}function Ka(){var E=[].slice.call(arguments,0);return oi("isBefore",E)}function Rd(){var E=[].slice.call(arguments,0);return oi("isAfter",E)}var wf=function(){return Date.now?Date.now():+new Date},Tf=["year","quarter","month","week","day","hour","minute","second","millisecond"];function gv(E){var I,q=!1,z,ee=Tf.length;for(I in E)if(n(E,I)&&!(Bi.call(Tf,I)!==-1&&(E[I]==null||!isNaN(E[I]))))return!1;for(z=0;z<ee;++z)if(E[Tf[z]]){if(q)return!1;parseFloat(E[Tf[z]])!==sn(E[Tf[z]])&&(q=!0)}return!0}function Fd(){return this._isValid}function nm(){return So(NaN)}function Ec(E){var I=Je(E),q=I.year||0,z=I.quarter||0,ee=I.month||0,ke=I.week||I.isoWeek||0,xt=I.day||0,fr=I.hour||0,dn=I.minute||0,fi=I.second||0,ia=I.millisecond||0;this._isValid=gv(I),this._milliseconds=+ia+fi*1e3+dn*6e4+fr*1e3*60*60,this._days=+xt+ke*7,this._months=+ee+z*3+q*12,this._data={},this._locale=Xe(),this._bubble()}function qa(E){return E instanceof Ec}function sl(E){return E<0?Math.round(-1*E)*-1:Math.round(E)}function Ya(E,I,q){var z=Math.min(E.length,I.length),ee=Math.abs(E.length-I.length),ke=0,xt;for(xt=0;xt<z;xt++)(q&&E[xt]!==I[xt]||!q&&sn(E[xt])!==sn(I[xt]))&&ke++;return ke+ee}function jp(E,I){Ye(E,0,0,function(){var q=this.utcOffset(),z="+";return q<0&&(q=-q,z="-"),z+Ee(~~(q/60),2)+I+Ee(~~q%60,2)})}jp("Z",":"),jp("ZZ",""),Mt("Z",It),Mt("ZZ",It),On(["Z","ZZ"],function(E,I,q){q._useUTC=!0,q._tzm=Ro(It,E)});var Ys=/([\+\-]|\d\d)/gi;function Ro(E,I){var q=(I||"").match(E),z,ee,ke;return q===null?null:(z=q[q.length-1]||[],ee=(z+"").match(Ys)||["-",0,0],ke=+(ee[1]*60)+sn(ee[2]),ke===0?0:ee[0]==="+"?ke:-ke)}function io(E,I){var q,z;return I._isUTC?(q=I.clone(),z=(Ce(E)||y(E)?E.valueOf():Tn(E).valueOf())-q.valueOf(),q._d.setTime(q._d.valueOf()+z),t.updateOffset(q,!1),q):Tn(E).local()}function wc(E){return-Math.round(E._d.getTimezoneOffset())}t.updateOffset=function(){};function Pf(E,I,q){var z=this._offset||0,ee;if(!this.isValid())return E!=null?this:NaN;if(E!=null){if(typeof E=="string"){if(E=Ro(It,E),E===null)return this}else Math.abs(E)<16&&!q&&(E=E*60);return!this._isUTC&&I&&(ee=wc(this)),this._offset=E,this._isUTC=!0,ee!=null&&this.add(ee,"m"),z!==E&&(!I||this._changeInProgress?ba(this,So(E-z,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,t.updateOffset(this,!0),this._changeInProgress=null)),this}else return this._isUTC?z:wc(this)}function bi(E,I){return E!=null?(typeof E!="string"&&(E=-E),this.utcOffset(E,I),this):-this.utcOffset()}function im(E){return this.utcOffset(0,E)}function sm(E){return this._isUTC&&(this.utcOffset(0,E),this._isUTC=!1,E&&this.subtract(wc(this),"m")),this}function ta(){if(this._tzm!=null)this.utcOffset(this._tzm,!1,!0);else if(typeof this._i=="string"){var E=Ro(Ft,this._i);E!=null?this.utcOffset(E):this.utcOffset(0,!0)}return this}function Sa(E){return this.isValid()?(E=E?Tn(E).utcOffset():0,(this.utcOffset()-E)%60===0):!1}function Ja(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Vl(){if(!f(this._isDSTShifted))return this._isDSTShifted;var E={},I;return te(E,this),E=Wo(E),E._a?(I=E._isUTC?P(E._a):Tn(E._a),this._isDSTShifted=this.isValid()&&Ya(E._a,I.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Hl(){return this.isValid()?!this._isUTC:!1}function Wl(){return this.isValid()?this._isUTC:!1}function Ei(){return this.isValid()?this._isUTC&&this._offset===0:!1}var Ju=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,zl=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function So(E,I){var q=E,z=null,ee,ke,xt;return qa(E)?q={ms:E._milliseconds,d:E._days,M:E._months}:m(E)||!isNaN(+E)?(q={},I?q[I]=+E:q.milliseconds=+E):(z=Ju.exec(E))?(ee=z[1]==="-"?-1:1,q={y:0,d:sn(z[co])*ee,h:sn(z[Cs])*ee,m:sn(z[Do])*ee,s:sn(z[lo])*ee,ms:sn(sl(z[js]*1e3))*ee}):(z=zl.exec(E))?(ee=z[1]==="-"?-1:1,q={y:ol(z[2],ee),M:ol(z[3],ee),w:ol(z[4],ee),d:ol(z[5],ee),h:ol(z[6],ee),m:ol(z[7],ee),s:ol(z[8],ee)}):q==null?q={}:typeof q=="object"&&("from"in q||"to"in q)&&(xt=om(Tn(q.from),Tn(q.to)),q={},q.ms=xt.milliseconds,q.M=xt.months),ke=new Ec(q),qa(E)&&n(E,"_locale")&&(ke._locale=E._locale),qa(E)&&n(E,"_isValid")&&(ke._isValid=E._isValid),ke}So.fn=Ec.prototype,So.invalid=nm;function ol(E,I){var q=E&&parseFloat(E.replace(",","."));return(isNaN(q)?0:q)*I}function Xu(E,I){var q={};return q.months=I.month()-E.month()+(I.year()-E.year())*12,E.clone().add(q.months,"M").isAfter(I)&&--q.months,q.milliseconds=+I-+E.clone().add(q.months,"M"),q}function om(E,I){var q;return E.isValid()&&I.isValid()?(I=io(I,E),E.isBefore(I)?q=Xu(E,I):(q=Xu(I,E),q.milliseconds=-q.milliseconds,q.months=-q.months),q):{milliseconds:0,months:0}}function qp(E,I){return function(q,z){var ee,ke;return z!==null&&!isNaN(+z)&&(Ct(I,"moment()."+I+"(period, number) is deprecated. Please use moment()."+I+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),ke=q,q=z,z=ke),ee=So(q,z),ba(this,ee,E),this}}function ba(E,I,q,z){var ee=I._milliseconds,ke=sl(I._days),xt=sl(I._months);E.isValid()&&(z=z==null?!0:z,xt&&qt(E,vc(E,"Month")+xt*q),ke&&el(E,"Date",vc(E,"Date")+ke*q),ee&&E._d.setTime(E._d.valueOf()+ee*q),z&&t.updateOffset(E,ke||xt))}var ni=qp(1,"add"),Ld=qp(-1,"subtract");function Xh(E){return typeof E=="string"||E instanceof String}function Qh(E){return Ce(E)||y(E)||Xh(E)||m(E)||Wy(E)||Hy(E)||E===null||E===void 0}function Hy(E){var I=a(E)&&!l(E),q=!1,z=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],ee,ke,xt=z.length;for(ee=0;ee<xt;ee+=1)ke=z[ee],q=q||n(E,ke);return I&&q}function Wy(E){var I=s(E),q=!1;return I&&(q=E.filter(function(z){return!m(z)&&Xh(E)}).length===0),I&&q}function vv(E){var I=a(E)&&!l(E),q=!1,z=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],ee,ke;for(ee=0;ee<z.length;ee+=1)ke=z[ee],q=q||n(E,ke);return I&&q}function xx(E,I){var q=E.diff(I,"days",!0);return q<-6?"sameElse":q<-1?"lastWeek":q<0?"lastDay":q<1?"sameDay":q<2?"nextDay":q<7?"nextWeek":"sameElse"}function am(E,I){arguments.length===1&&(arguments[0]?Qh(arguments[0])?(E=arguments[0],I=void 0):vv(arguments[0])&&(I=arguments[0],E=void 0):(E=void 0,I=void 0));var q=E||Tn(),z=io(q,this).startOf("day"),ee=t.calendarFormat(this,z)||"sameElse",ke=I&&(ct(I[ee])?I[ee].call(this,q):I[ee]);return this.format(ke||this.localeData().calendar(ee,this,Tn(q)))}function Zh(){return new me(this)}function xv(E,I){var q=Ce(E)?E:Tn(E);return this.isValid()&&q.isValid()?(I=ge(I)||"millisecond",I==="millisecond"?this.valueOf()>q.valueOf():q.valueOf()<this.clone().startOf(I).valueOf()):!1}function Qu(E,I){var q=Ce(E)?E:Tn(E);return this.isValid()&&q.isValid()?(I=ge(I)||"millisecond",I==="millisecond"?this.valueOf()<q.valueOf():this.clone().endOf(I).valueOf()<q.valueOf()):!1}function Gl(E,I,q,z){var ee=Ce(E)?E:Tn(E),ke=Ce(I)?I:Tn(I);return this.isValid()&&ee.isValid()&&ke.isValid()?(z=z||"()",(z[0]==="("?this.isAfter(ee,q):!this.isBefore(ee,q))&&(z[1]===")"?this.isBefore(ke,q):!this.isAfter(ke,q))):!1}function Ea(E,I){var q=Ce(E)?E:Tn(E),z;return this.isValid()&&q.isValid()?(I=ge(I)||"millisecond",I==="millisecond"?this.valueOf()===q.valueOf():(z=q.valueOf(),this.clone().startOf(I).valueOf()<=z&&z<=this.clone().endOf(I).valueOf())):!1}function vu(E,I){return this.isSame(E,I)||this.isAfter(E,I)}function wa(E,I){return this.isSame(E,I)||this.isBefore(E,I)}function Up(E,I,q){var z,ee,ke;if(!this.isValid())return NaN;if(z=io(E,this),!z.isValid())return NaN;switch(ee=(z.utcOffset()-this.utcOffset())*6e4,I=ge(I),I){case"year":ke=xu(this,z)/12;break;case"month":ke=xu(this,z);break;case"quarter":ke=xu(this,z)/3;break;case"second":ke=(this-z)/1e3;break;case"minute":ke=(this-z)/6e4;break;case"hour":ke=(this-z)/36e5;break;case"day":ke=(this-z-ee)/864e5;break;case"week":ke=(this-z-ee)/6048e5;break;default:ke=this-z}return q?ke:Si(ke)}function xu(E,I){if(E.date()<I.date())return-xu(I,E);var q=(I.year()-E.year())*12+(I.month()-E.month()),z=E.clone().add(q,"months"),ee,ke;return I-z<0?(ee=E.clone().add(q-1,"months"),ke=(I-z)/(z-ee)):(ee=E.clone().add(q+1,"months"),ke=(I-z)/(ee-z)),-(q+ke)||0}t.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",t.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";function al(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function Cf(E){if(!this.isValid())return null;var I=E!==!0,q=I?this.clone().utc():this;return q.year()<0||q.year()>9999?Ze(q,I?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):ct(Date.prototype.toISOString)?I?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",Ze(q,"Z")):Ze(q,I?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function Af(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var E="moment",I="",q,z,ee,ke;return this.isLocal()||(E=this.utcOffset()===0?"moment.utc":"moment.parseZone",I="Z"),q="["+E+'("]',z=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",ee="-MM-DD[T]HH:mm:ss.SSS",ke=I+'[")]',this.format(q+z+ee+ke)}function Md(E){E||(E=this.isUtc()?t.defaultFormatUtc:t.defaultFormat);var I=Ze(this,E);return this.localeData().postformat(I)}function zy(E,I){return this.isValid()&&(Ce(E)&&E.isValid()||Tn(E).isValid())?So({to:this,from:E}).locale(this.locale()).humanize(!I):this.localeData().invalidDate()}function um(E){return this.from(Tn(),E)}function Df(E,I){return this.isValid()&&(Ce(E)&&E.isValid()||Tn(E).isValid())?So({from:this,to:E}).locale(this.locale()).humanize(!I):this.localeData().invalidDate()}function Kl(E){return this.to(Tn(),E)}function cm(E){var I;return E===void 0?this._locale._abbr:(I=Xe(E),I!=null&&(this._locale=I),this)}var _u=Ve("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(E){return E===void 0?this.localeData():this.locale(E)});function lm(){return this._locale}var ul=1e3,Tc=60*ul,Yl=60*Tc,Gy=(365*400+97)*24*Yl;function wi(E,I){return(E%I+I)%I}function Fo(E,I,q){return E<100&&E>=0?new Date(E+400,I,q)-Gy:new Date(E,I,q).valueOf()}function Su(E,I,q){return E<100&&E>=0?Date.UTC(E+400,I,q)-Gy:Date.UTC(E,I,q)}function Zu(E){var I,q;if(E=ge(E),E===void 0||E==="millisecond"||!this.isValid())return this;switch(q=this._isUTC?Su:Fo,E){case"year":I=q(this.year(),0,1);break;case"quarter":I=q(this.year(),this.month()-this.month()%3,1);break;case"month":I=q(this.year(),this.month(),1);break;case"week":I=q(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":I=q(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":I=q(this.year(),this.month(),this.date());break;case"hour":I=this._d.valueOf(),I-=wi(I+(this._isUTC?0:this.utcOffset()*Tc),Yl);break;case"minute":I=this._d.valueOf(),I-=wi(I,Tc);break;case"second":I=this._d.valueOf(),I-=wi(I,ul);break}return this._d.setTime(I),t.updateOffset(this,!0),this}function cl(E){var I,q;if(E=ge(E),E===void 0||E==="millisecond"||!this.isValid())return this;switch(q=this._isUTC?Su:Fo,E){case"year":I=q(this.year()+1,0,1)-1;break;case"quarter":I=q(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":I=q(this.year(),this.month()+1,1)-1;break;case"week":I=q(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":I=q(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":I=q(this.year(),this.month(),this.date()+1)-1;break;case"hour":I=this._d.valueOf(),I+=Yl-wi(I+(this._isUTC?0:this.utcOffset()*Tc),Yl)-1;break;case"minute":I=this._d.valueOf(),I+=Tc-wi(I,Tc)-1;break;case"second":I=this._d.valueOf(),I+=ul-wi(I,ul)-1;break}return this._d.setTime(I),t.updateOffset(this,!0),this}function Xa(){return this._d.valueOf()-(this._offset||0)*6e4}function $p(){return Math.floor(this.valueOf()/1e3)}function ll(){return new Date(this.valueOf())}function _v(){var E=this;return[E.year(),E.month(),E.date(),E.hour(),E.minute(),E.second(),E.millisecond()]}function pm(){var E=this;return{years:E.year(),months:E.month(),date:E.date(),hours:E.hours(),minutes:E.minutes(),seconds:E.seconds(),milliseconds:E.milliseconds()}}function kf(){return this.isValid()?this.toISOString():null}function Bd(){return F(this)}function _x(){return b({},g(this))}function Ky(){return g(this).overflow}function e0(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}Ye("N",0,0,"eraAbbr"),Ye("NN",0,0,"eraAbbr"),Ye("NNN",0,0,"eraAbbr"),Ye("NNNN",0,0,"eraName"),Ye("NNNNN",0,0,"eraNarrow"),Ye("y",["y",1],"yo","eraYear"),Ye("y",["yy",2],0,"eraYear"),Ye("y",["yyy",3],0,"eraYear"),Ye("y",["yyyy",4],0,"eraYear"),Mt("N",qd),Mt("NN",qd),Mt("NNN",qd),Mt("NNNN",r0),Mt("NNNNN",n0),On(["N","NN","NNN","NNNN","NNNNN"],function(E,I,q,z){var ee=q._locale.erasParse(E,z,q._strict);ee?g(q).era=ee:g(q).invalidEra=E}),Mt("y",za),Mt("yy",za),Mt("yyy",za),Mt("yyyy",za),Mt("yo",dm),On(["y","yy","yyy","yyyy"],ur),On(["yo"],function(E,I,q,z){var ee;q._locale._eraYearOrdinalRegex&&(ee=E.match(q._locale._eraYearOrdinalRegex)),q._locale.eraYearOrdinalParse?I[ur]=q._locale.eraYearOrdinalParse(E,ee):I[ur]=parseInt(E,10)});function Yy(E,I){var q,z,ee,ke=this._eras||Xe("en")._eras;for(q=0,z=ke.length;q<z;++q){switch(typeof ke[q].since){case"string":ee=t(ke[q].since).startOf("day"),ke[q].since=ee.valueOf();break}switch(typeof ke[q].until){case"undefined":ke[q].until=1/0;break;case"string":ee=t(ke[q].until).startOf("day").valueOf(),ke[q].until=ee.valueOf();break}}return ke}function Jy(E,I,q){var z,ee,ke=this.eras(),xt,fr,dn;for(E=E.toUpperCase(),z=0,ee=ke.length;z<ee;++z)if(xt=ke[z].name.toUpperCase(),fr=ke[z].abbr.toUpperCase(),dn=ke[z].narrow.toUpperCase(),q)switch(I){case"N":case"NN":case"NNN":if(fr===E)return ke[z];break;case"NNNN":if(xt===E)return ke[z];break;case"NNNNN":if(dn===E)return ke[z];break}else if([xt,fr,dn].indexOf(E)>=0)return ke[z]}function fm(E,I){var q=E.since<=E.until?1:-1;return I===void 0?t(E.since).year():t(E.since).year()+(I-E.offset)*q}function Vp(){var E,I,q,z=this.localeData().eras();for(E=0,I=z.length;E<I;++E)if(q=this.clone().startOf("day").valueOf(),z[E].since<=q&&q<=z[E].until||z[E].until<=q&&q<=z[E].since)return z[E].name;return""}function Xy(){var E,I,q,z=this.localeData().eras();for(E=0,I=z.length;E<I;++E)if(q=this.clone().startOf("day").valueOf(),z[E].since<=q&&q<=z[E].until||z[E].until<=q&&q<=z[E].since)return z[E].narrow;return""}function Sv(){var E,I,q,z=this.localeData().eras();for(E=0,I=z.length;E<I;++E)if(q=this.clone().startOf("day").valueOf(),z[E].since<=q&&q<=z[E].until||z[E].until<=q&&q<=z[E].since)return z[E].abbr;return""}function jd(){var E,I,q,z,ee=this.localeData().eras();for(E=0,I=ee.length;E<I;++E)if(q=ee[E].since<=ee[E].until?1:-1,z=this.clone().startOf("day").valueOf(),ee[E].since<=z&&z<=ee[E].until||ee[E].until<=z&&z<=ee[E].since)return(this.year()-t(ee[E].since).year())*q+ee[E].offset;return this.year()}function Ta(E){return n(this,"_erasNameRegex")||Of.call(this),E?this._erasNameRegex:this._erasRegex}function t0(E){return n(this,"_erasAbbrRegex")||Of.call(this),E?this._erasAbbrRegex:this._erasRegex}function If(E){return n(this,"_erasNarrowRegex")||Of.call(this),E?this._erasNarrowRegex:this._erasRegex}function qd(E,I){return I.erasAbbrRegex(E)}function r0(E,I){return I.erasNameRegex(E)}function n0(E,I){return I.erasNarrowRegex(E)}function dm(E,I){return I._eraYearOrdinalRegex||za}function Of(){var E=[],I=[],q=[],z=[],ee,ke,xt,fr,dn,fi=this.eras();for(ee=0,ke=fi.length;ee<ke;++ee)xt=Di(fi[ee].name),fr=Di(fi[ee].abbr),dn=Di(fi[ee].narrow),I.push(xt),E.push(fr),q.push(dn),z.push(xt),z.push(fr),z.push(dn);this._erasRegex=new RegExp("^("+z.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+I.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+E.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+q.join("|")+")","i")}Ye(0,["gg",2],0,function(){return this.weekYear()%100}),Ye(0,["GG",2],0,function(){return this.isoWeekYear()%100});function Nf(E,I){Ye(0,[E,E.length],0,I)}Nf("gggg","weekYear"),Nf("ggggg","weekYear"),Nf("GGGG","isoWeekYear"),Nf("GGGGG","isoWeekYear"),Mt("G",rt),Mt("g",rt),Mt("GG",En,Vr),Mt("gg",En,Vr),Mt("GGGG",Vo,jn),Mt("gggg",Vo,jn),Mt("GGGGG",Vu,ei),Mt("ggggg",Vu,ei),Ss(["gggg","ggggg","GGGG","GGGGG"],function(E,I,q,z){I[z.substr(0,2)]=sn(E)}),Ss(["gg","GG"],function(E,I,q,z){I[z]=t.parseTwoDigitYear(E)});function Rf(E){return bu.call(this,E,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)}function Qy(E){return bu.call(this,E,this.isoWeek(),this.isoWeekday(),1,4)}function i0(){return ji(this.year(),1,4)}function s0(){return ji(this.isoWeekYear(),1,4)}function Jl(){var E=this.localeData()._week;return ji(this.year(),E.dow,E.doy)}function Hp(){var E=this.localeData()._week;return ji(this.weekYear(),E.dow,E.doy)}function bu(E,I,q,z,ee){var ke;return E==null?or(this,z,ee).year:(ke=ji(E,z,ee),I>ke&&(I=ke),Wp.call(this,E,I,q,z,ee))}function Wp(E,I,q,z,ee){var ke=Od(E,I,q,z,ee),xt=Sf(ke.year,0,ke.dayOfYear);return this.year(xt.getUTCFullYear()),this.month(xt.getUTCMonth()),this.date(xt.getUTCDate()),this}Ye("Q",0,"Qo","quarter"),Mt("Q",$r),On("Q",function(E,I){I[Ao]=(sn(E)-1)*3});function hm(E){return E==null?Math.ceil((this.month()+1)/3):this.month((E-1)*3+this.month()%3)}Ye("D",["DD",2],"Do","date"),Mt("D",En,xr),Mt("DD",En,Vr),Mt("Do",function(E,I){return E?I._dayOfMonthOrdinalParse||I._ordinalParse:I._dayOfMonthOrdinalParseLenient}),On(["D","DD"],co),On("Do",function(E,I){I[co]=sn(E.match(En)[0])});var Xl=tn("Date",!0);Ye("DDD",["DDDD",3],"DDDo","dayOfYear"),Mt("DDD",ps),Mt("DDDD",Hn),On(["DDD","DDDD"],function(E,I,q){q._dayOfYear=sn(E)});function Pc(E){var I=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return E==null?I:this.add(E-I,"d")}Ye("m",["mm",2],0,"minute"),Mt("m",En,In),Mt("mm",En,Vr),On(["m","mm"],Do);var mm=tn("Minutes",!1);Ye("s",["ss",2],0,"second"),Mt("s",En,In),Mt("ss",En,Vr),On(["s","ss"],lo);var Ud=tn("Seconds",!1);Ye("S",0,0,function(){return~~(this.millisecond()/100)}),Ye(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Ye(0,["SSS",3],0,"millisecond"),Ye(0,["SSSS",4],0,function(){return this.millisecond()*10}),Ye(0,["SSSSS",5],0,function(){return this.millisecond()*100}),Ye(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),Ye(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),Ye(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),Ye(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),Mt("S",ps,$r),Mt("SS",ps,Vr),Mt("SSS",ps,Hn);var ec,ym;for(ec="SSSS";ec.length<=9;ec+="S")Mt(ec,za);function Zy(E,I){I[js]=sn(("0."+E)*1e3)}for(ec="S";ec.length<=9;ec+="S")On(ec,Zy);ym=tn("Milliseconds",!1),Ye("z",0,0,"zoneAbbr"),Ye("zz",0,0,"zoneName");function o0(){return this._isUTC?"UTC":""}function a0(){return this._isUTC?"Coordinated Universal Time":""}var Jt=me.prototype;Jt.add=ni,Jt.calendar=am,Jt.clone=Zh,Jt.diff=Up,Jt.endOf=cl,Jt.format=Md,Jt.from=zy,Jt.fromNow=um,Jt.to=Df,Jt.toNow=Kl,Jt.get=du,Jt.invalidAt=Ky,Jt.isAfter=xv,Jt.isBefore=Qu,Jt.isBetween=Gl,Jt.isSame=Ea,Jt.isSameOrAfter=vu,Jt.isSameOrBefore=wa,Jt.isValid=Bd,Jt.lang=_u,Jt.locale=cm,Jt.localeData=lm,Jt.max=zo,Jt.min=Jh,Jt.parsingFlags=_x,Jt.set=fs,Jt.startOf=Zu,Jt.subtract=Ld,Jt.toArray=_v,Jt.toObject=pm,Jt.toDate=ll,Jt.toISOString=Cf,Jt.inspect=Af,typeof Symbol<"u"&&Symbol.for!=null&&(Jt[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),Jt.toJSON=kf,Jt.toString=al,Jt.unix=$p,Jt.valueOf=Xa,Jt.creationData=e0,Jt.eraName=Vp,Jt.eraNarrow=Xy,Jt.eraAbbr=Sv,Jt.eraYear=jd,Jt.year=Wu,Jt.isLeapYear=Fl,Jt.weekYear=Rf,Jt.isoWeekYear=Qy,Jt.quarter=Jt.quarters=hm,Jt.month=hu,Jt.daysInMonth=em,Jt.week=Jt.weeks=tm,Jt.isoWeek=Jt.isoWeeks=Hh,Jt.weeksInYear=Jl,Jt.weeksInWeekYear=Hp,Jt.isoWeeksInYear=i0,Jt.isoWeeksInISOWeekYear=s0,Jt.date=Xl,Jt.day=Jt.days=Ns,Jt.weekday=wn,Jt.isoWeekday=Gu,Jt.dayOfYear=Pc,Jt.hour=Jt.hours=va,Jt.minute=Jt.minutes=mm,Jt.second=Jt.seconds=Ud,Jt.millisecond=Jt.milliseconds=ym,Jt.utcOffset=Pf,Jt.utc=im,Jt.local=sm,Jt.parseZone=ta,Jt.hasAlignedHourOffset=Sa,Jt.isDST=Ja,Jt.isLocal=Hl,Jt.isUtcOffset=Wl,Jt.isUtc=Ei,Jt.isUTC=Ei,Jt.zoneAbbr=o0,Jt.zoneName=a0,Jt.dates=Ve("dates accessor is deprecated. Use date instead.",Xl),Jt.months=Ve("months accessor is deprecated. Use month instead",hu),Jt.years=Ve("years accessor is deprecated. Use year instead",Wu),Jt.zone=Ve("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",bi),Jt.isDSTShifted=Ve("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Vl);function fn(E){return Tn(E*1e3)}function ra(){return Tn.apply(null,arguments).parseZone()}function po(E){return E}var Pn=se.prototype;Pn.calendar=_e,Pn.longDateFormat=Tt,Pn.invalidDate=mt,Pn.ordinal=Yt,Pn.preparse=po,Pn.postformat=po,Pn.relativeTime=_t,Pn.pastFuture=bt,Pn.set=ot,Pn.eras=Yy,Pn.erasParse=Jy,Pn.erasConvertYear=fm,Pn.erasAbbrRegex=t0,Pn.erasNameRegex=Ta,Pn.erasNarrowRegex=If,Pn.months=Z0,Pn.monthsShort=kp,Pn.monthsParse=ga,Pn.monthsRegex=ns,Pn.monthsShortRegex=Ip,Pn.week=Nd,Pn.firstDayOfYear=bf,Pn.firstDayOfWeek=mu,Pn.weekdays=rl,Pn.weekdaysMin=zu,Pn.weekdaysShort=yu,Pn.weekdaysParse=Sc,Pn.weekdaysRegex=Gh,Pn.weekdaysShortRegex=Gs,Pn.weekdaysMinRegex=jl,Pn.isPM=Kh,Pn.meridiem=Lp;function Ua(E,I,q,z){var ee=Xe(),ke=P().set(z,I);return ee[q](ke,E)}function $d(E,I,q){if(m(E)&&(I=E,E=void 0),E=E||"",I!=null)return Ua(E,I,q,"month");var z,ee=[];for(z=0;z<12;z++)ee[z]=Ua(E,z,q,"month");return ee}function Js(E,I,q,z){typeof E=="boolean"?(m(I)&&(q=I,I=void 0),I=I||""):(I=E,q=I,E=!1,m(I)&&(q=I,I=void 0),I=I||"");var ee=Xe(),ke=E?ee._week.dow:0,xt,fr=[];if(q!=null)return Ua(I,(q+ke)%7,z,"day");for(xt=0;xt<7;xt++)fr[xt]=Ua(I,(xt+ke)%7,z,"day");return fr}function Vd(E,I){return $d(E,I,"months")}function Rn(E,I){return $d(E,I,"monthsShort")}function Ff(E,I,q){return Js(E,I,q,"weekdays")}function zp(E,I,q){return Js(E,I,q,"weekdaysShort")}function gm(E,I,q){return Js(E,I,q,"weekdaysMin")}ae("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(E){var I=E%10,q=sn(E%100/10)===1?"th":I===1?"st":I===2?"nd":I===3?"rd":"th";return E+q}}),t.lang=Ve("moment.lang is deprecated. Use moment.locale instead.",ae),t.langData=Ve("moment.langData is deprecated. Use moment.localeData instead.",Xe);var Cc=Math.abs;function vm(){var E=this._data;return this._milliseconds=Cc(this._milliseconds),this._days=Cc(this._days),this._months=Cc(this._months),E.milliseconds=Cc(E.milliseconds),E.seconds=Cc(E.seconds),E.minutes=Cc(E.minutes),E.hours=Cc(E.hours),E.months=Cc(E.months),E.years=Cc(E.years),this}function u0(E,I,q,z){var ee=So(I,q);return E._milliseconds+=z*ee._milliseconds,E._days+=z*ee._days,E._months+=z*ee._months,E._bubble()}function Ql(E,I){return u0(this,E,I,1)}function Ar(E,I){return u0(this,E,I,-1)}function Gp(E){return E<0?Math.floor(E):Math.ceil(E)}function xm(){var E=this._milliseconds,I=this._days,q=this._months,z=this._data,ee,ke,xt,fr,dn;return E>=0&&I>=0&&q>=0||E<=0&&I<=0&&q<=0||(E+=Gp(Ac(q)+I)*864e5,I=0,q=0),z.milliseconds=E%1e3,ee=Si(E/1e3),z.seconds=ee%60,ke=Si(ee/60),z.minutes=ke%60,xt=Si(ke/60),z.hours=xt%24,I+=Si(xt/24),dn=Si(Eu(I)),q+=dn,I-=Gp(Ac(dn)),fr=Si(q/12),q%=12,z.days=I,z.months=q,z.years=fr,this}function Eu(E){return E*4800/146097}function Ac(E){return E*146097/4800}function Hd(E){if(!this.isValid())return NaN;var I,q,z=this._milliseconds;if(E=ge(E),E==="month"||E==="quarter"||E==="year")switch(I=this._days+z/864e5,q=this._months+Eu(I),E){case"month":return q;case"quarter":return q/3;case"year":return q/12}else switch(I=this._days+Math.round(Ac(this._months)),E){case"week":return I/7+z/6048e5;case"day":return I+z/864e5;case"hour":return I*24+z/36e5;case"minute":return I*1440+z/6e4;case"second":return I*86400+z/1e3;case"millisecond":return Math.floor(I*864e5)+z;default:throw new Error("Unknown unit "+E)}}function Qa(E){return function(){return this.as(E)}}var Lf=Qa("ms"),_m=Qa("s"),pl=Qa("m"),Wd=Qa("h"),Kp=Qa("d"),Mf=Qa("w"),tc=Qa("M"),Dc=Qa("Q"),zd=Qa("y"),Yp=Lf;function Pa(){return So(this)}function Ui(E){return E=ge(E),this.isValid()?this[E+"s"]():NaN}function Oi(E){return function(){return this.isValid()?this._data[E]:NaN}}var c0=Oi("milliseconds"),Za=Oi("seconds"),eg=Oi("minutes"),Bf=Oi("hours"),Sm=Oi("days"),bv=Oi("months"),bm=Oi("years");function l0(){return Si(this.days()/7)}var wu=Math.round,Zl={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function jf(E,I,q,z,ee){return ee.relativeTime(I||1,!!q,E,z)}function tg(E,I,q,z){var ee=So(E).abs(),ke=wu(ee.as("s")),xt=wu(ee.as("m")),fr=wu(ee.as("h")),dn=wu(ee.as("d")),fi=wu(ee.as("M")),ia=wu(ee.as("w")),eu=wu(ee.as("y")),qs=ke<=q.ss&&["s",ke]||ke<q.s&&["ss",ke]||xt<=1&&["m"]||xt<q.m&&["mm",xt]||fr<=1&&["h"]||fr<q.h&&["hh",fr]||dn<=1&&["d"]||dn<q.d&&["dd",dn];return q.w!=null&&(qs=qs||ia<=1&&["w"]||ia<q.w&&["ww",ia]),qs=qs||fi<=1&&["M"]||fi<q.M&&["MM",fi]||eu<=1&&["y"]||["yy",eu],qs[2]=I,qs[3]=+E>0,qs[4]=z,jf.apply(null,qs)}function rg(E){return E===void 0?wu:typeof E=="function"?(wu=E,!0):!1}function Gd(E,I){return Zl[E]===void 0?!1:I===void 0?Zl[E]:(Zl[E]=I,E==="s"&&(Zl.ss=I-1),!0)}function Ev(E,I){if(!this.isValid())return this.localeData().invalidDate();var q=!1,z=Zl,ee,ke;return typeof E=="object"&&(I=E,E=!1),typeof E=="boolean"&&(q=E),typeof I=="object"&&(z=Object.assign({},Zl,I),I.s!=null&&I.ss==null&&(z.ss=I.s-1)),ee=this.localeData(),ke=tg(this,!q,z,ee),q&&(ke=ee.pastFuture(+this,ke)),ee.postformat(ke)}var p0=Math.abs;function ep(E){return(E>0)-(E<0)||+E}function na(){if(!this.isValid())return this.localeData().invalidDate();var E=p0(this._milliseconds)/1e3,I=p0(this._days),q=p0(this._months),z,ee,ke,xt,fr=this.asSeconds(),dn,fi,ia,eu;return fr?(z=Si(E/60),ee=Si(z/60),E%=60,z%=60,ke=Si(q/12),q%=12,xt=E?E.toFixed(3).replace(/\.?0+$/,""):"",dn=fr<0?"-":"",fi=ep(this._months)!==ep(fr)?"-":"",ia=ep(this._days)!==ep(fr)?"-":"",eu=ep(this._milliseconds)!==ep(fr)?"-":"",dn+"P"+(ke?fi+ke+"Y":"")+(q?fi+q+"M":"")+(I?ia+I+"D":"")+(ee||z||E?"T":"")+(ee?eu+ee+"H":"")+(z?eu+z+"M":"")+(E?eu+xt+"S":"")):"P0D"}var qn=Ec.prototype;qn.isValid=Fd,qn.abs=vm,qn.add=Ql,qn.subtract=Ar,qn.as=Hd,qn.asMilliseconds=Lf,qn.asSeconds=_m,qn.asMinutes=pl,qn.asHours=Wd,qn.asDays=Kp,qn.asWeeks=Mf,qn.asMonths=tc,qn.asQuarters=Dc,qn.asYears=zd,qn.valueOf=Yp,qn._bubble=xm,qn.clone=Pa,qn.get=Ui,qn.milliseconds=c0,qn.seconds=Za,qn.minutes=eg,qn.hours=Bf,qn.days=Sm,qn.weeks=l0,qn.months=bv,qn.years=bm,qn.humanize=Ev,qn.toISOString=na,qn.toString=na,qn.toJSON=na,qn.locale=cm,qn.localeData=lm,qn.toIsoString=Ve("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",na),qn.lang=_u,Ye("X",0,0,"unix"),Ye("x",0,0,"valueOf"),Mt("x",rt),Mt("X",Xt),On("X",function(E,I,q){q._d=new Date(parseFloat(E)*1e3)}),On("x",function(E,I,q){q._d=new Date(sn(E))});return t.version="2.30.1",r(Tn),t.fn=Jt,t.min=Ka,t.max=Rd,t.now=wf,t.utc=P,t.unix=fn,t.months=Vd,t.isDate=y,t.locale=ae,t.invalid=M,t.duration=So,t.isMoment=Ce,t.weekdays=Ff,t.parseZone=ra,t.localeData=Xe,t.isDuration=qa,t.monthsShort=Rn,t.weekdaysMin=gm,t.defineLocale=Me,t.updateLocale=it,t.locales=gt,t.weekdaysShort=zp,t.normalizeUnits=ge,t.relativeTimeRounding=rg,t.relativeTimeThreshold=Gd,t.calendarFormat=xx,t.prototype=Jt,t.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},t})});function D0(){return!process.stdout.isTTY||process.env.FORCE_NON_TTY==="1"||process.env.CI==="true"||process.env.CI==="1"||process.env.PAGES_SOURCE==="skills"||process.env.EDGEONE_NON_INTERACTIVE==="1"}function gC({prefix:e="cli"}){return Vs.default.createElement(Bs.Text,{color:"grey"},"[",e,"]")}function yi(e,t="cli"){if(D0()){console.log(`\x1B[90m[${t}]\x1B[0m\x1B[31m[\u2718] \x1B[0m${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Text,null,Vs.default.createElement(gC,{prefix:t}),Vs.default.createElement(Bs.Text,{color:"red"},"[\u2718] "),e));r()}function vC(e,t="cli"){if(D0()){console.log(`\x1B[90m[${t}]\x1B[0m\x1B[32m[\u2714] \x1B[0m${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Text,null,Vs.default.createElement(gC,{prefix:t}),Vs.default.createElement(Bs.Text,{color:"green"},"[\u2714] "),e));r()}function pi(e,t="cli"){if(D0()){console.log(`\x1B[90m[${t}]\x1B[0m \x1B[33mWARNING:\x1B[0m ${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Text,null,Vs.default.createElement(gC,{prefix:t}),Vs.default.createElement(Bs.Text,{color:"orange"},"\u2757\uFE0F "),e));r()}function $z(e){if(D0()){console.log(e);return}let{unmount:t}=(0,Bs.render)(Vs.default.createElement(Bs.Text,{color:"cyan"},e));t()}function Dt(e,t="cli"){if(D0()){console.log(`\x1B[90m[${t}]\x1B[0m ${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Text,null,Vs.default.createElement(gC,{prefix:t})," ",e));r()}function HR({timestamp:e}){return Vs.default.createElement(Bs.Box,{width:13},Vs.default.createElement(Bs.Text,{color:"grey"},(0,Wb.default)(e).format("HH:mm:ss.SSS")))}function Vz(e,t){if(D0()){console.log(`${(0,Wb.default)(t).format("HH:mm:ss.SSS")} ${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Box,null,Vs.default.createElement(HR,{timestamp:t}),Vs.default.createElement(Bs.Text,null,e)));r()}function Hz(e,t){if(D0()){console.log(`${(0,Wb.default)(t).format("HH:mm:ss.SSS")} [WARNING] ${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Box,null,Vs.default.createElement(HR,{timestamp:t}),Vs.default.createElement(Bs.Text,{color:"white",backgroundColor:"yellow"},"[WARNING]"),Vs.default.createElement(Bs.Text,null," ",e)));r()}function WR(e,t){if(D0()){console.log(`${(0,Wb.default)(t).format("HH:mm:ss.SSS")} [ERROR] ${e}`);return}let{unmount:r}=(0,Bs.render)(Vs.default.createElement(Bs.Box,null,Vs.default.createElement(HR,{timestamp:t}),Vs.default.createElement(Bs.Text,{color:"white",backgroundColor:"red"},"[ERROR]"),Vs.default.createElement(Bs.Text,null," ",e)));r()}var Bs,Vs,Wb,ua=ht(()=>{Bs=Lt(yC()),Vs=Lt(yo()),Wb=Lt(Uz())});var zz,Wz=ht(()=>{zz={name:"edgeone",version:"1.6.26",description:"Command-line interface for TencentCloud Pages Functions",bin:{edgeone:"./edgeone-bin/edgeone.js"},files:["./edgeone-bin/edgeone.js","./edgeone-dist/cli.js","./edgeone-dist/pages/templates","./edgeone-dist/pages/dev/runner-worker.js","./edgeone-dist/pages/observability-python/**","./edgeone-dist/libs-pages-blob-python/**","./edgeone-dist/libs-pages-agent-toolkit/**","./edgeone-dist/studio/**","./libs-pages-blob-python/**","./libs-pages-agent-toolkit/**"],author:"",keywords:["tencent","edgeone","edgefunctions","edgeone","cli","typescript"],scripts:{clean:"rimraf ./edgeone-dist ./edgeone-bin ./libs-node-ai ./libs-kv-client",bundle:"node -r esbuild-register ./scripts/bundle.ts",watch:"node -r esbuild-register ./scripts/bundle.ts watch",build:"npm run clean && npm run build:pages-ai && npm run build:kv-client && npm run prepare:blob-wheel && npm run prepare:agent-toolkit-wheel && npm run bundle","build:pages-ai":"node ./scripts/build-pages-ai.js","build:kv-client":"node ./scripts/build-kv-client.js","prepare:blob-wheel":"node ./scripts/prepare-pages-blob-wheel.js","prepare:agent-toolkit-wheel":"node ./scripts/prepare-pages-agent-toolkit-wheel.js","verify:publish-assets":"node ./scripts/verify-publish-assets.js","upload:agent-version-manifest":"node ./scripts/upload-agent-version-manifest.js",format:'prettier --write "src/**/*.{ts,tsx,js,jsx,json,md}" "scripts/**/*.{ts,js}" "*.{json,md}"',prepack:"npm run build && npm run verify:publish-assets",prepublishOnly:"npm run build && npm run verify:publish-assets",test:"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","test:observability":"vitest run --config src/agent/observability/node/tests/vitest.config.ts && cd src/agent/observability/python && uv run pytest tests/ -q"},dependencies:{"@edgeone/framework-detect":"^0.0.2","@edgeone/is-spa":"^0.0.3","@edgeone/nuxt-pages":"1.1.0","@edgeone/opennextjs-pages":"0.2.10","@edgeone/pages-agent-toolkit":"^0.1.34","@edgeone/pages-blob":"^0.0.16",archiver:"^7.0.1",chokidar:"^4.0.1","common-path-prefix":"^1.0.0","cos-nodejs-sdk-v5":"^2.14.7","cross-spawn":"^7.0.6",crypto:"^1.0.1","detect-port":"^2.1.0",esbuild:"^0.19.2","esbuild-plugin-polyfill-node":"^0.3.0","esbuild-plugin-vue":"^0.2.4","fast-glob":"^3.3.0","fs-extra":"^11.3.1",giget:"^2.0.0","ink-table":"^3.1.0",inquirer:"^8.2.4",install:"^0.13.0",lodash:"^4.17.21","mime-types":"^3.0.1",minimatch:"^9.0.5","node-persist":"^4.0.3",npm:"^10.9.1",open:"^8.4.2","p-map":"^5.5.0","parse-gitignore":"^2.0.0",portfinder:"^1.0.32",undici:"^5.29.0",vitest:"^4.0.17"},devDependencies:{"@babel/generator":"^7.28.0","@babel/parser":"^7.28.0","@babel/traverse":"^7.28.0","@babel/types":"^7.28.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^1.30.1","@opentelemetry/exporter-metrics-otlp-http":"^0.55.0","@opentelemetry/exporter-trace-otlp-http":"^0.55.0","@opentelemetry/instrumentation":"^0.55.0","@opentelemetry/otlp-transformer":"^0.55.0","@opentelemetry/resources":"^1.30.1","@opentelemetry/sdk-metrics":"^1.30.1","@opentelemetry/sdk-trace-base":"^1.30.1","@opentelemetry/sdk-trace-node":"^1.30.1","@opentelemetry/semantic-conventions":"^1.40.0","@tencent/capi-nodejs-sdk":"^2.3.2","@types/http-proxy":"^1.17.12","@types/inquirer":"^9.0.8","@types/ip":"^1.1.0","@types/lodash":"^4.14.198","@types/prompts":"^2.4.4","@types/react":"^17.0.2","@types/uuid":"^9.0.3","@types/ws":"^8.5.7","@types/yargs":"^17.0.24","@vitest/coverage-v8":"^4.0.17",axios:"^1.7.9",chalk:"^5.3.0",cookie:"^1.0.2",dotenv:"^16.3.1","esbuild-register":"^3.6.0",execa:"^7.1.1","http-proxy":"^1.18.1",husky:"^8.0.3",ink:"^3.2.0",ip:"^2.0.1",json5:"^2.2.3","lint-staged":"^15.2.0",lodash:"^4.17.21",moment:"^2.30.1","node-fetch":"^3.3.2",prettier:"^3.1.1",prompts:"^2.4.2",protobufjs:"^8.4.2",react:"^17.0.2",rimraf:"^6.0.1",semiver:"^1.1.0",sirv:"^2.0.3","tencentcloud-cls-sdk-js-web":"^1.0.13","ts-node":"^10.9.2",typescript:"^5.9.3","update-check":"^1.5.4",uuid:"^9.0.0",ws:"^8.14.2",yargs:"^17.6.2",zod:"^3.23.8","zod-to-json-schema":"^3.23.5"},engines:{node:">=12"},"lint-staged":{"*.{ts,tsx,js,jsx,json,md}":["prettier --write"]}}});function bIe(){var e,t;return{run_id:SIe,cli_version:(t=(e=zz)==null?void 0:e.version)!=null?t:"unknown",node_version:process.version,os_platform:GR.default.platform(),os_arch:GR.default.arch(),app_type:"cli",app_id:process.env.AppId||void 0,uin:process.env.Uin||void 0,instance_id:process.env.ProjectId||void 0,is_ci:process.env.CI==="true"}}function EIe(e,t){try{if(typeof process.send!="function")return;process.send(JSON.stringify({name:e,value:JSON.stringify(t)}))}catch{}}function lu(e){var r;let t={...bIe(),...e};EIe((r=t.event_name)!=null?r:"unknown",t)}function ld(e){if(e==null)return{message:"unknown error",stack:""};if(typeof e=="string")return{message:xC(e,zR),stack:""};if(typeof e=="object"){let t=e,r=xC(typeof t.message=="string"?t.message:String(t),zR),s=xC(typeof t.stack=="string"?t.stack:"",wIe);return{message:r,stack:s}}return{message:xC(String(e),zR),stack:""}}function xC(e,t){return e.length>t?e.slice(0,t)+"\u2026[truncated]":e}var GR,uu,cu,SIe,KR,zR,wIe,dy=ht(()=>{GR=Lt(require("os"));Wz();uu={COMMAND:"command",REQUEST:"request",LOCAL_FLOW:"local_flow",EXIT:"exit"},cu={SUCCESS:"success",FAIL:"fail",START:"start"},SIe=`cli-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;KR=(e,t)=>{let r=ld(t);lu({event_name:"error",event_scope:uu.COMMAND,event_result:cu.FAIL,error_message:`${e} ${r.message}`.trim(),error_stack:r.stack})},zR=500,wIe=2e3});var zb,S2,YR=ht(()=>{zb={NEXTJS:"nextjs",NUXTJS:"nuxtjs",ASTRO:"astro",UNKNOWN:"unknown"},S2={FRAMEWORK_DETECT:"framework_detect",PLUGIN_RESOLVE:"plugin_resolve",PLUGIN_LOAD:"plugin_load",PLUGIN_HOOK:"plugin_hook",CONFIG_LOAD:"config_load"}});function CIe(e){if((e==null?void 0:e.code)===PIe)return!0;let t=typeof e=="string"?e:e==null?void 0:e.message;return t==null?void 0:t.includes(TIe)}async function Mg(e=!1){try{let t=await PP(e);return lu({event_name:"Config:Load:Success",event_scope:uu.LOCAL_FLOW,event_phase:S2.CONFIG_LOAD,event_result:cu.SUCCESS,has_build_command:(t==null?void 0:t.buildCommand)!=null,has_install_command:(t==null?void 0:t.installCommand)!=null,has_output_directory:(t==null?void 0:t.outputDirectory)!=null,has_node_version:(t==null?void 0:t.nodeVersion)!=null}),t}catch(t){let r=ld(t);if(lu({event_name:"Config:Load:Fail",event_scope:uu.LOCAL_FLOW,event_phase:S2.CONFIG_LOAD,event_result:cu.FAIL,error_message:r.message}),CIe(t))throw t;return od()&&console.error("%c [ error ]-80","font-size:13px; background:pink; color:#bf2c9f;",t),null}}var TIe,PIe,JR=ht(()=>{n2();_P();dy();YR();TIe="[BLOCKING_CONFIG_ERROR]",PIe="BLOCKING_CONFIG_ERROR"});var _C,fc,SC=ht(()=>{_C=[{funcName:"onRequestGet",method:"GET"},{funcName:"onRequestPost",method:"POST"},{funcName:"onRequestDelete",method:"DELETE"},{funcName:"onRequestPatch",method:"PATCH"},{funcName:"onRequestPut",method:"PUT"},{funcName:"onRequestHead",method:"HEAD"},{funcName:"onRequestOptions",method:"OPTIONS"}],fc=["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"]});async function AIe(e){let t;bC.default.statSync(e).isFile()?t=b2.default.resolve(b2.default.dirname(e)):t=e;let r=b2.default.parse(t).root;if(t===r)return null;for(;t!==r;){let s=b2.default.join(t,"package.json");try{return await bC.default.promises.access(s),s}catch{if(t=b2.default.dirname(t),t===r)break}}return null}async function E2(e){if(e.endsWith(".mjs"))return"esm";if(e.endsWith(".cjs"))return"commonjs";try{let t=await AIe(e);if(t&&JSON.parse(await bC.default.promises.readFile(t,"utf-8")).type==="module")return"esm"}catch(t){console.warn("Failed to read package.json:",t)}return"commonjs"}var bC,b2,Gb=ht(()=>{bC=Lt(require("fs")),b2=Lt(require("path"))});function kIe(e){let t=XR.default.extname(e);return DIe[t]||"ts"}function NIe(e){return e.split(",").map(t=>t.trim()).map(t=>{let r=t.match(/^([A-Za-z_$][\w$]*)\s+as\s+([A-Za-z_$][\w$]*)$/);if(!r)return"";let[,s,a]=r;return!OIe.has(a)||s===a?"":`const ${a} = ${s};`}).filter(Boolean).join(`
|
|
146
146
|
`)}async function Yz(e,t,r,s){let a=`mod_${IIe++}`,l=(await Kz.default.build({stdin:{contents:e,loader:kIe(r),resolveDir:XR.default.dirname(r)},write:!1,bundle:!0,format:"esm",platform:"node",target:"node14",minify:!1,resolveExtensions:[".ts",".js",".mjs",".json"],nodePaths:[process.cwd()],absWorkingDir:process.cwd(),external:(s==null?void 0:s.externalModules)||[]})).outputFiles[0].text,f=[];l=l.replace(/^import\s+[^'"]*['"][^'"]*['"]\s*;?\n/gm,b=>(f.push(b),"")),l=l.replace(/export (async )?function/g,"$1function"),l=l.replace(/export const/g,"const"),l=l.replace(/export let/g,"let"),l=l.replace(/export var/g,"var"),l=l.replace(/export default/g,""),l=l.replace(/export\s*\{([^}]+)\};?/g,(b,P)=>NIe(P)),l=l.replace(/export class/g,"class");let m=/const\s+app\s*=/.test(l),y=`${f.join(`
|
|
147
147
|
`)}`;return{code:s!=null&&s.isFramework?`
|
|
148
148
|
const ${a} = (() => {
|
|
@@ -772,7 +772,7 @@ Use "options.replacer" or "options.ignoreUnknown"
|
|
|
772
772
|
`);return l===-1?"":a.stack.slice(l+1)})();try{if(!s.stack)s.stack=n;else if(n){let l=n.indexOf(`
|
|
773
773
|
`),f=l===-1?-1:n.indexOf(`
|
|
774
774
|
`,l+1),m=f===-1?"":n.slice(f+1);String(s.stack).endsWith(m)||(s.stack+=`
|
|
775
|
-
`+n)}}catch{}}throw s}}_request(t,r){typeof t=="string"?(r=r||{},r.url=t):r=t||{},r=Oh(this.defaults,r);let{transitional:s,paramsSerializer:a,headers:n}=r;s!==void 0&&Tw.assertOptions(s,{silentJSONParsing:bp.transitional(bp.boolean),forcedJSONParsing:bp.transitional(bp.boolean),clarifyTimeoutError:bp.transitional(bp.boolean),legacyInterceptorReqResOrdering:bp.transitional(bp.boolean),advertiseZstdAcceptEncoding:bp.transitional(bp.boolean)},!1),a!=null&&(Pe.isFunction(a)?r.paramsSerializer={serialize:a}:Tw.assertOptions(a,{encode:bp.function,serialize:bp.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),Tw.assertOptions(r,{baseUrl:bp.spelling("baseURL"),withXsrfToken:bp.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let l=n&&Pe.merge(n.common,n[r.method]);n&&Pe.forEach(["delete","get","head","post","put","patch","query","common"],g=>{delete n[g]}),r.headers=Co.concat(l,n);let f=[],m=!0;this.interceptors.request.forEach(function(B){if(typeof B.runWhen=="function"&&B.runWhen(r)===!1)return;m=m&&B.synchronous;let F=r.transitional||iv;F&&F.legacyInterceptorReqResOrdering?f.unshift(B.fulfilled,B.rejected):f.push(B.fulfilled,B.rejected)});let y=[];this.interceptors.response.forEach(function(B){y.push(B.fulfilled,B.rejected)});let v,b=0,P;if(!m){let g=[WD.bind(this),void 0];for(g.unshift(...f),g.push(...y),P=g.length,v=Promise.resolve(r);b<P;)v=v.then(g[b++],g[b++]);return v}P=f.length;let k=r;for(;b<P;){let g=f[b++],B=f[b++];try{k=g(k)}catch(F){B.call(this,F);break}}try{v=WD.call(this,k)}catch(g){return Promise.reject(g)}for(b=0,P=y.length;b<P;)v=v.then(y[b++],y[b++]);return v}getUri(t){t=Oh(this.defaults,t);let r=Y1(t.baseURL,t.url,t.allowAbsoluteUrls);return G1(r,t.params,t.paramsSerializer)}};Pe.forEach(["delete","get","head","options"],function(t){b_.prototype[t]=function(r,s){return this.request(Oh(s||{},{method:t,url:r,data:(s||{}).data}))}});Pe.forEach(["post","put","patch","query"],function(t){function r(s){return function(n,l,f){return this.request(Oh(f||{},{method:t,headers:s?{"Content-Type":"multipart/form-data"}:{},url:n,data:l}))}}b_.prototype[t]=r(),t!=="query"&&(b_.prototype[t+"Form"]=r(!0))});Pw=b_});var B6,goe,voe=ht(()=>{"use strict";K1();B6=class e{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(function(n){r=n});let s=this;this.promise.then(a=>{if(!s._listeners)return;let n=s._listeners.length;for(;n-- >0;)s._listeners[n](a);s._listeners=null}),this.promise.then=a=>{let n,l=new Promise(f=>{s.subscribe(f),n=f}).then(a);return l.cancel=function(){s.unsubscribe(n)},l},t(function(n,l,f){s.reason||(s.reason=new vf(n,l,f),r(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;let r=this._listeners.indexOf(t);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){let t=new AbortController,r=s=>{t.abort(s)};return this.subscribe(r),t.signal.unsubscribe=()=>this.unsubscribe(r),t.signal}static source(){let t;return{token:new e(function(a){t=a}),cancel:t}}},goe=B6});function j6(e){return function(r){return e.apply(null,r)}}var xoe=ht(()=>{"use strict"});function q6(e){return Pe.isObject(e)&&e.isAxiosError===!0}var _oe=ht(()=>{"use strict";ao()});var U6,Soe,boe=ht(()=>{U6={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(U6).forEach(([e,t])=>{U6[t]=e});Soe=U6});function Eoe(e){let t=new Pw(e),r=ew(Pw.prototype.request,t);return Pe.extend(r,Pw.prototype,t,{allOwnKeys:!0}),Pe.extend(r,t,null,{allOwnKeys:!0}),r.create=function(a){return Eoe(Oh(e,a))},r}var Wa,ex,woe=ht(()=>{"use strict";ao();dB();yoe();UD();RD();GB();K1();voe();YB();Sw();cw();gf();xoe();_oe();Dh();L6();boe();Wa=Eoe(v_);Wa.Axios=Pw;Wa.CanceledError=vf;Wa.CancelToken=goe;Wa.isCancel=fw;Wa.VERSION=Py;Wa.toFormData=nv;Wa.AxiosError=Qt;Wa.Cancel=Wa.CanceledError;Wa.all=function(t){return Promise.all(t)};Wa.spread=j6;Wa.isAxiosError=q6;Wa.mergeConfig=Oh;Wa.AxiosHeaders=Co;Wa.formToJSON=e=>ND(Pe.isHTMLForm(e)?new FormData(e):e);Wa.getAdapter=HD.getAdapter;Wa.HttpStatusCode=Soe;Wa.default=Wa;ex=Wa});var $Mt,VMt,HMt,WMt,zMt,GMt,KMt,YMt,JMt,XMt,QMt,ZMt,eBt,tBt,rBt,nBt,iBt,$6=ht(()=>{woe();({Axios:$Mt,AxiosError:VMt,CanceledError:HMt,isCancel:WMt,CancelToken:zMt,VERSION:GMt,all:KMt,Cancel:YMt,isAxiosError:JMt,spread:XMt,toFormData:QMt,AxiosHeaders:ZMt,HttpStatusCode:eBt,formToJSON:tBt,getAdapter:rBt,mergeConfig:nBt,create:iBt}=ex)});var sv,V6,Cw,H6,W6,Toe,Aw=ht(()=>{sv={global:"https://pages-api.edgeone.ai/v1",china:"https://pages-api.cloud.tencent.com/v1"},V6={global:"ap-singapore",china:"ap-guangzhou"},Cw={global:"https://edgeone.tencentcloud.com",china:"https://edgeone.cloud.tencent.com"},H6={global:"https://edgeone.ai/login",china:"https://cloud.tencent.com/login"},W6="/makers/cli-login",Toe={"ap-guangzhou":"china","ap-singapore":"global"}});function w0t(e){return sv[e]}async function T0t(e){var t,r,s;for(let a of E0t)try{let n=w0t(a),l=await ex.post(n,JSON.stringify({Action:"DescribePagesProjects",PageNumber:1,PageSize:10,Region:V6[a]}),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},timeout:15e3}),f=((r=(t=l==null?void 0:l.data)==null?void 0:t.Data)==null?void 0:r.Response)||(l==null?void 0:l.data);if((f==null?void 0:f.Code)!=null||((s=f==null?void 0:f.Error)==null?void 0:s.Code)!=null)continue;if(f&&Array.isArray(f.Projects))return a}catch{}return null}async function ov(){if(process.env.EDGEONE_PAGES_API_REGION)return process.env.EDGEONE_PAGES_API_REGION;let e=Kx();if(e!=null&&e.region)return e.region;if(e!=null&&e.token){let t=await T0t(e.token);if(t){try{qS({token:e.token,region:t})}catch{}return t}}return await pP("login_region")}var hBt,mBt,E0t,GD=ht(()=>{$6();ch();dy();ua();Aw();hBt=require("fs"),mBt=require("path"),E0t=["china","global"]});var P0t,z6,Poe,Coe,KD=ht(()=>{$6();GD();ch();Aw();ua();P0t=async()=>{let e=await ov(),t=sv[e];if(t)return t;yi(`Invalid region: ${e}`)},z6=async()=>{if(process.env.EDGEONE_PAGES_API_TOKEN)return process.env.EDGEONE_PAGES_API_TOKEN;let e=Kx();if(e!=null&&e.token)return e.token;try{return(await pP("eo_token")).Token}catch{return}},Poe=async(e,t)=>{var l,f;let r=t||await P0t(),a={"Content-Type":"application/json",Authorization:`Bearer ${await z6()}`},n=await ex.post(r,JSON.stringify(e),{headers:a,timeout:15e3});return((f=(l=n.data)==null?void 0:l.Data)==null?void 0:f.Response)||n.data},Coe=async
|
|
775
|
+
`+n)}}catch{}}throw s}}_request(t,r){typeof t=="string"?(r=r||{},r.url=t):r=t||{},r=Oh(this.defaults,r);let{transitional:s,paramsSerializer:a,headers:n}=r;s!==void 0&&Tw.assertOptions(s,{silentJSONParsing:bp.transitional(bp.boolean),forcedJSONParsing:bp.transitional(bp.boolean),clarifyTimeoutError:bp.transitional(bp.boolean),legacyInterceptorReqResOrdering:bp.transitional(bp.boolean),advertiseZstdAcceptEncoding:bp.transitional(bp.boolean)},!1),a!=null&&(Pe.isFunction(a)?r.paramsSerializer={serialize:a}:Tw.assertOptions(a,{encode:bp.function,serialize:bp.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),Tw.assertOptions(r,{baseUrl:bp.spelling("baseURL"),withXsrfToken:bp.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let l=n&&Pe.merge(n.common,n[r.method]);n&&Pe.forEach(["delete","get","head","post","put","patch","query","common"],g=>{delete n[g]}),r.headers=Co.concat(l,n);let f=[],m=!0;this.interceptors.request.forEach(function(B){if(typeof B.runWhen=="function"&&B.runWhen(r)===!1)return;m=m&&B.synchronous;let F=r.transitional||iv;F&&F.legacyInterceptorReqResOrdering?f.unshift(B.fulfilled,B.rejected):f.push(B.fulfilled,B.rejected)});let y=[];this.interceptors.response.forEach(function(B){y.push(B.fulfilled,B.rejected)});let v,b=0,P;if(!m){let g=[WD.bind(this),void 0];for(g.unshift(...f),g.push(...y),P=g.length,v=Promise.resolve(r);b<P;)v=v.then(g[b++],g[b++]);return v}P=f.length;let k=r;for(;b<P;){let g=f[b++],B=f[b++];try{k=g(k)}catch(F){B.call(this,F);break}}try{v=WD.call(this,k)}catch(g){return Promise.reject(g)}for(b=0,P=y.length;b<P;)v=v.then(y[b++],y[b++]);return v}getUri(t){t=Oh(this.defaults,t);let r=Y1(t.baseURL,t.url,t.allowAbsoluteUrls);return G1(r,t.params,t.paramsSerializer)}};Pe.forEach(["delete","get","head","options"],function(t){b_.prototype[t]=function(r,s){return this.request(Oh(s||{},{method:t,url:r,data:(s||{}).data}))}});Pe.forEach(["post","put","patch","query"],function(t){function r(s){return function(n,l,f){return this.request(Oh(f||{},{method:t,headers:s?{"Content-Type":"multipart/form-data"}:{},url:n,data:l}))}}b_.prototype[t]=r(),t!=="query"&&(b_.prototype[t+"Form"]=r(!0))});Pw=b_});var B6,goe,voe=ht(()=>{"use strict";K1();B6=class e{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(function(n){r=n});let s=this;this.promise.then(a=>{if(!s._listeners)return;let n=s._listeners.length;for(;n-- >0;)s._listeners[n](a);s._listeners=null}),this.promise.then=a=>{let n,l=new Promise(f=>{s.subscribe(f),n=f}).then(a);return l.cancel=function(){s.unsubscribe(n)},l},t(function(n,l,f){s.reason||(s.reason=new vf(n,l,f),r(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;let r=this._listeners.indexOf(t);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){let t=new AbortController,r=s=>{t.abort(s)};return this.subscribe(r),t.signal.unsubscribe=()=>this.unsubscribe(r),t.signal}static source(){let t;return{token:new e(function(a){t=a}),cancel:t}}},goe=B6});function j6(e){return function(r){return e.apply(null,r)}}var xoe=ht(()=>{"use strict"});function q6(e){return Pe.isObject(e)&&e.isAxiosError===!0}var _oe=ht(()=>{"use strict";ao()});var U6,Soe,boe=ht(()=>{U6={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(U6).forEach(([e,t])=>{U6[t]=e});Soe=U6});function Eoe(e){let t=new Pw(e),r=ew(Pw.prototype.request,t);return Pe.extend(r,Pw.prototype,t,{allOwnKeys:!0}),Pe.extend(r,t,null,{allOwnKeys:!0}),r.create=function(a){return Eoe(Oh(e,a))},r}var Wa,ex,woe=ht(()=>{"use strict";ao();dB();yoe();UD();RD();GB();K1();voe();YB();Sw();cw();gf();xoe();_oe();Dh();L6();boe();Wa=Eoe(v_);Wa.Axios=Pw;Wa.CanceledError=vf;Wa.CancelToken=goe;Wa.isCancel=fw;Wa.VERSION=Py;Wa.toFormData=nv;Wa.AxiosError=Qt;Wa.Cancel=Wa.CanceledError;Wa.all=function(t){return Promise.all(t)};Wa.spread=j6;Wa.isAxiosError=q6;Wa.mergeConfig=Oh;Wa.AxiosHeaders=Co;Wa.formToJSON=e=>ND(Pe.isHTMLForm(e)?new FormData(e):e);Wa.getAdapter=HD.getAdapter;Wa.HttpStatusCode=Soe;Wa.default=Wa;ex=Wa});var $Mt,VMt,HMt,WMt,zMt,GMt,KMt,YMt,JMt,XMt,QMt,ZMt,eBt,tBt,rBt,nBt,iBt,$6=ht(()=>{woe();({Axios:$Mt,AxiosError:VMt,CanceledError:HMt,isCancel:WMt,CancelToken:zMt,VERSION:GMt,all:KMt,Cancel:YMt,isAxiosError:JMt,spread:XMt,toFormData:QMt,AxiosHeaders:ZMt,HttpStatusCode:eBt,formToJSON:tBt,getAdapter:rBt,mergeConfig:nBt,create:iBt}=ex)});var sv,V6,Cw,H6,W6,Toe,Aw=ht(()=>{sv={global:"https://pages-api.edgeone.ai/v1",china:"https://pages-api.cloud.tencent.com/v1"},V6={global:"ap-singapore",china:"ap-guangzhou"},Cw={global:"https://edgeone.tencentcloud.com",china:"https://edgeone.cloud.tencent.com"},H6={global:"https://edgeone.ai/login",china:"https://cloud.tencent.com/login"},W6="/makers/cli-login",Toe={"ap-guangzhou":"china","ap-singapore":"global"}});function w0t(e){return sv[e]}async function T0t(e){var t,r,s;for(let a of E0t)try{let n=w0t(a),l=await ex.post(n,JSON.stringify({Action:"DescribePagesProjects",PageNumber:1,PageSize:10,Region:V6[a]}),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},timeout:15e3}),f=((r=(t=l==null?void 0:l.data)==null?void 0:t.Data)==null?void 0:r.Response)||(l==null?void 0:l.data);if((f==null?void 0:f.Code)!=null||((s=f==null?void 0:f.Error)==null?void 0:s.Code)!=null)continue;if(f&&Array.isArray(f.Projects))return a}catch{}return null}async function ov(){if(process.env.EDGEONE_PAGES_API_REGION)return process.env.EDGEONE_PAGES_API_REGION;let e=Kx();if(e!=null&&e.region)return e.region;if(e!=null&&e.token){let t=await T0t(e.token);if(t){try{qS({token:e.token,region:t})}catch{}return t}}return await pP("login_region")}var hBt,mBt,E0t,GD=ht(()=>{$6();ch();dy();ua();Aw();hBt=require("fs"),mBt=require("path"),E0t=["china","global"]});var P0t,z6,Poe,Coe,KD=ht(()=>{$6();GD();ch();Aw();ua();P0t=async()=>{let e=await ov(),t=sv[e];if(t)return t;yi(`Invalid region: ${e}`)},z6=async()=>{if(process.env.EDGEONE_PAGES_API_TOKEN)return process.env.EDGEONE_PAGES_API_TOKEN;let e=Kx();if(e!=null&&e.token)return e.token;try{return(await pP("eo_token")).Token}catch{return}},Poe=async(e,t)=>{var l,f;let r=t||await P0t(),a={"Content-Type":"application/json",Authorization:`Bearer ${await z6()}`},n=await ex.post(r,JSON.stringify(e),{headers:a,timeout:15e3});return((f=(l=n.data)==null?void 0:l.Data)==null?void 0:f.Response)||n.data},Coe=async(e,t)=>{var a,n,l,f,m,y;let r=t||await ov(),s=sv[r]||sv.china;if(!s)throw new Error("Login get token failed, invalid login region.");try{let v=await ex.post(s,JSON.stringify({Action:"CreateOrDescribeTokenByMCP",Name:"edgeone-cli-auto-generated"}),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}),b=(l=(n=(a=v==null?void 0:v.data)==null?void 0:a.Data)==null?void 0:n.Response)==null?void 0:l.TokenData;if(!(b!=null&&b.Token)){let P=(f=v==null?void 0:v.data)==null?void 0:f.Code,k=(m=v==null?void 0:v.data)==null?void 0:m.Message,g=(y=v==null?void 0:v.data)==null?void 0:y.RequestId,B=P!=null?`server Code=${P}, Message=${k}, RequestId=${g}, site=${r}`:`unexpected response shape from ${s}`;throw new Error(`Token exchange returned an empty result. ${B}`)}return b}catch(v){let b=v instanceof Error?v.message:"Unknown error";throw new Error(`Login get token failed, please try again. ${b}`)}}});var C0t,Aoe,Doe,koe,Ioe,Ooe,Noe,Roe,Foe,G6,W0,Loe,Dw,Moe=ht(()=>{C0t="/pages/connect",Aoe=e=>e==="global"?"https://console.tencentcloud.com/edgeone/makers":"https://console.cloud.tencent.com/edgeone/makers",Doe=e=>e==="global"?"https://edgeone.tencentcloud.com/logo/BlackHeadLogo.svg":"https://edgeone.cloud.tencent.com/logo/BlackHeadLogo.svg",koe=e=>{let t=e==="global";return{lang:t?"en":"zh-CN",successTitle:t?"Login successful, please return to the original app to continue":"\u767B\u5F55\u6210\u529F\uFF0C\u8BF7\u8FD4\u56DE\u539F\u5E94\u7528\u7EE7\u7EED\u4F7F\u7528",successDescription:t?"You will be redirected to the Makers console in 5 seconds":"5 \u79D2\u540E\u81EA\u52A8\u8DF3\u8F6C\u5230 Makers \u63A7\u5236\u53F0",successButtonText:t?"Go Console":"\u56DE\u5230\u63A7\u5236\u53F0",errorTitle:t?"Login failed. Please return to the original app and try again":"\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u8FD4\u56DE\u539F\u5E94\u7528\u91CD\u8BD5"}},Ioe=e=>e==="global"?`
|
|
776
776
|
<ol class="footer-links">
|
|
777
777
|
<li><a href="https://www.tencentcloud.com/document/product/301/9248?s_url=https%3A%2F%2Fedgeone.ai" target="_blank" rel="noreferrer">Terms of Service</a></li>
|
|
778
778
|
<li class="footer-separator">\xB7</li>
|
|
@@ -1131,7 +1131,7 @@ Use "options.replacer" or "options.ignoreUnknown"
|
|
|
1131
1131
|
}
|
|
1132
1132
|
</script>
|
|
1133
1133
|
</body>
|
|
1134
|
-
</html>`}});var Boe,A0t,D0t,k0t,I0t,YD,joe=ht(()=>{Boe=Lt(require("http"));ch();KD();Moe();ua();A0t=60*60*1e3,D0t=64*1024,k0t=16*1024,I0t=new Set(["https://edgeone.cloud.tencent.com","https://edgeone.tencentcloud.com","https://edgeone.ai","https://pre.edgeone.ai"]),YD=class{options;port;server;readyPromise;resultPromise;resolveReady;rejectReady;resolveResult;timeoutHandle;completed=!1;processing=!1;constructor(t){this.options=t,this.port=t.port||1025,this.readyPromise=new Promise((r,s)=>{this.resolveReady=r,this.rejectReady=s}),this.resultPromise=new Promise(r=>{this.resolveResult=r}),this.timeoutHandle=setTimeout(()=>{this.completed||(this.completed=!0,this.processing=!1,this.resolveResult({success:!1,message:""}),this.closeServer())},t.timeoutMs||A0t),this.server=Boe.default.createServer(this.handleRequest.bind(this)),this.server.on("error",this.handleError.bind(this)),this.server.listen(this.port,"127.0.0.1",()=>{this.resolveReady()})}waitUntilReady(){return this.readyPromise}waitForResult(){return this.resultPromise}async handleRequest(t,r){let s=new URL(t.url||"/",`http://127.0.0.1:${this.port}`);if(s.pathname!==G6){this.sendMethodNotAllowed(r);return}if(t.method==="OPTIONS"){this.handlePreflight(t,r);return}if(t.method==="POST"){await this.handlePost(t,r);return}if(t.method==="GET"){if(!s.search){r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(Loe({region:this.options.region}));return}await this.handleGet(s,r);return}this.sendMethodNotAllowed(r)}handlePreflight(t,r){let s=t.headers.origin;if(!s||!this.isAllowedOrigin(s)){r.writeHead(403,{"Content-Type":"text/plain; charset=utf-8"}),r.end("Origin is not allowed");return}this.setCorsHeaders(t,r,s),r.writeHead(204),r.end()}async handlePost(t,r){let s=t.headers.origin;if(s&&!this.isAllowedOrigin(s)){r.writeHead(403,{"Content-Type":"application/json; charset=utf-8"}),r.end(JSON.stringify({code:403,success:!1,message:"Origin is not allowed"}));return}if(s&&this.setCorsHeaders(t,r,s),!String(t.headers["content-type"]||"").toLowerCase().startsWith("application/json")){this.sendJson(r,415,{code:415,success:!1,message:"Content-Type must be application/json"});return}let a;try{a=await this.readJsonPayload(t)}catch(n){let l=n instanceof Error?n.message:"Invalid request body";this.sendJson(r,l==="Request body is too large"?413:400,{code:l==="Request body is too large"?413:400,success:!1,message:l});return}if(this.completed||this.processing){this.sendJson(r,200,{code:0,success:!0,message:"Login request already accepted"});return}try{await this.processLogin(a),this.sendJson(r,200,{code:0,success:!0,message:"Login success"},()=>{this.finish({success:!0,message:"Login success"})})}catch(n){let l=n instanceof Error?n.message:String(n);Dt(`[pages-login] token exchange failed: ${l}`),this.sendJson(r,400,{code:400,success:!1,message:l},()=>{this.finish({success:!1,message:l})})}}async handleGet(t,r){let a=t.searchParams.get("region")||this.options.region;if(this.completed||this.processing){r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(Dw({region:a,status:"success"}));return}let n;try{n=this.parseGetPayload(t)}catch(l){let f=l instanceof Error?l.message:String(l);Dt(`[pages-login] invalid callback payload: ${f}`),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(Dw({region:a,status:"error",message:f}),()=>{this.finish({success:!1,message:f})});return}try{await this.processLogin(n),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(Dw({region:a,status:"success"}),()=>{this.finish({success:!0,message:"Login success"})})}catch(l){let f=l instanceof Error?l.message:String(l);Dt(`[pages-login] token exchange failed: ${f}`),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(Dw({region:a,status:"error",message:f}),()=>{this.finish({success:!1,message:f})})}}parseGetPayload(t){let r=t.searchParams,s=r.get("__eo_sso_cb");if(s)return this.decodeTenantCallback(s);let a={token:r.get("token")||void 0,state:r.get("state")||void 0,loginType:r.get("loginType")||void 0,provider:r.get("provider")||void 0,corpId:r.get("corpId")||void 0,corpName:r.get("corpName")||void 0,region:r.get("region")||void 0,openId:r.get("openId")||void 0,expired:r.get("expired")?Number(r.get("expired")):void 0};if(a.token)return a;let n=t.search.slice(1),f=r.get("payload")||(n&&!n.includes("&")&&!/^(token|state|loginType|provider|corpId|corpName|region|openId|expired|__eo_sso_cb)=/.test(n)?n:"");return f?this.decodeTenantCallback(f):a}decodeTenantCallback(t){let r;try{r=decodeURIComponent(t)}catch{throw new Error("Login callback payload is not valid URL encoding.")}if(Buffer.byteLength(r,"utf8")>k0t)throw new Error("Login callback payload is too large.");let s=r.replace(/-/g,"+").replace(/_/g,"/");if(!/^[A-Za-z0-9+/]*={0,2}$/.test(s)||s.length%4===1)throw new Error("Login callback payload is not valid Base64.");let a=s.padEnd(s.length+(4-s.length%4)%4,"="),n;try{let f=Buffer.from(a,"base64").toString("utf8");if(Buffer.from(f,"utf8").toString("base64").replace(/=+$/,"")!==s.replace(/=+$/,""))throw new Error("Non-canonical Base64");n=JSON.parse(f)}catch{throw new Error("Login callback payload cannot be decoded.")}if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Login callback payload must contain a JSON object.");let l=n;return{token:typeof l.token=="string"?l.token:void 0,state:typeof l.state=="string"?l.state:void 0,openId:typeof l.openId=="string"?l.openId:void 0,expired:typeof l.expired=="number"?l.expired:void 0,loginType:"dingtalk"}}async processLogin(t){let r=t.token;if(!r)throw new Error("Login payload missing token field.");if(this.options.state&&(!t.state||t.state!==this.options.state))throw new Error("Login state mismatch. Possible CSRF or stale login page.");if(t.expired!=null){if(!Number.isSafeInteger(t.expired)||t.expired<=0)throw new Error("Login token expiration is invalid.");if(t.expired<=Math.floor(Date.now()/1e3))throw new Error("Login Tenant Token has expired.")}this.processing=!0;let s=t.loginType||t.provider,a;s==="dingtalk"?a={Token:r}:a=await Coe(r);let n=a;s&&(n={...a,loginType:s},t.corpId&&(n.corpId=t.corpId),t.corpName&&(n.corpName=t.corpName),t.openId&&(n.openId=t.openId),t.expired!=null&&(n.expired=t.expired)),await BS("eo_token",n);let l=t.region||this.options.region;if(l&&await BS("login_region",l),this.options.local)try{qS({token:a.Token,region:l})}catch(f){let m=`Failed to write <cwd>/.edgeone/auth.json: ${f instanceof Error?f.message:String(f)}`;throw Dt(`[pages-login] ${m}`),new Error(m)}}readJsonPayload(t){return new Promise((r,s)=>{let a="",n=0,l=!1;t.setEncoding("utf8"),t.on("data",f=>{if(!l){if(n+=Buffer.byteLength(f),n>D0t){l=!0,s(new Error("Request body is too large"));return}a+=f}}),t.on("end",()=>{if(!l)try{let f=JSON.parse(a||"{}");if(!f||typeof f!="object"||Array.isArray(f))throw new Error("Request body must be a JSON object");r(f)}catch(f){s(f instanceof Error?f:new Error("Invalid JSON body"))}}),t.on("error",s)})}isAllowedOrigin(t){return I0t.has(t)||t===`http://127.0.0.1:${this.port}`||t===`http://localhost:${this.port}`}setCorsHeaders(t,r,s){r.setHeader("Access-Control-Allow-Origin",s),r.setHeader("Vary","Origin"),r.setHeader("Access-Control-Allow-Methods","POST, OPTIONS"),r.setHeader("Access-Control-Allow-Headers","Content-Type"),r.setHeader("Access-Control-Max-Age","600"),t.headers["access-control-request-private-network"]==="true"&&r.setHeader("Access-Control-Allow-Private-Network","true")}sendJson(t,r,s,a){t.writeHead(r,{"Content-Type":"application/json; charset=utf-8"}),t.end(JSON.stringify(s),a)}sendMethodNotAllowed(t){t.writeHead(405,{"Content-Type":"text/plain; charset=utf-8",Allow:"GET, POST, OPTIONS"}),t.end("Only GET, POST and OPTIONS /pages/connect are supported")}handleError(t){t.code==="EADDRINUSE"?(console.log(`Port ${this.port} is already in use`),this.rejectReady(new Error(`Port ${this.port} is already in use`))):(console.error("An error occurred:",t),this.rejectReady(t)),this.completed||(this.completed=!0,this.resolveResult({success:!1,message:""}))}finish(t){var r,s;this.completed||(this.completed=!0,this.processing=!1,this.resolveResult(t),t.success&&((s=(r=this.options).callback)==null||s.call(r)),this.closeServer())}closeServer(){this.timeoutHandle&&(clearTimeout(this.timeoutHandle),this.timeoutHandle=void 0),this.server.listening&&this.server.close()}}});var Uoe=J((JD,qoe)=>{(function(e,t){typeof JD=="object"&&typeof qoe<"u"?t(JD):typeof define=="function"&&define.amd?define(["exports"],t):(e=typeof globalThis<"u"?globalThis:e||self,t(e.async={}))})(JD,function(e){"use strict";function t(ue,...Z){return(...ae)=>ue(...Z,...ae)}function r(ue){return function(...Z){var ae=Z.pop();return ue.call(this,Z,ae)}}var s=typeof queueMicrotask=="function"&&queueMicrotask,a=typeof setImmediate=="function"&&setImmediate,n=typeof process=="object"&&typeof process.nextTick=="function";function l(ue){setTimeout(ue,0)}function f(ue){return(Z,...ae)=>ue(()=>Z(...ae))}var m;s?m=queueMicrotask:a?m=setImmediate:n?m=process.nextTick:m=l;var y=f(m);function v(ue){return k(ue)?function(...Z){let ae=Z.pop(),Me=ue.apply(this,Z);return b(Me,ae)}:r(function(Z,ae){var Me;try{Me=ue.apply(this,Z)}catch(it){return ae(it)}if(Me&&typeof Me.then=="function")return b(Me,ae);ae(null,Me)})}function b(ue,Z){return ue.then(ae=>{P(Z,null,ae)},ae=>{P(Z,ae&&(ae instanceof Error||ae.message)?ae:new Error(ae))})}function P(ue,Z,ae){try{ue(Z,ae)}catch(Me){y(it=>{throw it},Me)}}function k(ue){return ue[Symbol.toStringTag]==="AsyncFunction"}function g(ue){return ue[Symbol.toStringTag]==="AsyncGenerator"}function B(ue){return typeof ue[Symbol.asyncIterator]=="function"}function F(ue){if(typeof ue!="function")throw new Error("expected a function");return k(ue)?v(ue):ue}function M(ue,Z){if(Z||(Z=ue.length),!Z)throw new Error("arity is undefined");function ae(...Me){return typeof Me[Z-1]=="function"?ue.apply(this,Me):new Promise((it,Xe)=>{Me[Z-1]=(gt,...St)=>{if(gt)return Xe(gt);it(St.length>1?St:St[0])},ue.apply(this,Me)})}return ae}function G(ue){return function(ae,...Me){return M(function(Xe){var gt=this;return ue(ae,(St,Vt)=>{F(St).apply(gt,Me.concat(Vt))},Xe)})}}function oe(ue,Z,ae,Me){Z=Z||[];var it=[],Xe=0,gt=F(ae);return ue(Z,(St,Vt,_r)=>{var An=Xe++;gt(St,(ti,Nn)=>{it[An]=Nn,_r(ti)})},St=>{Me(St,it)})}function te(ue){return ue&&typeof ue.length=="number"&&ue.length>=0&&ue.length%1===0}let me={};function Ce(ue){function Z(...ae){if(ue!==null){var Me=ue;ue=null,Me.apply(this,ae)}}return Object.assign(Z,ue),Z}function Ie(ue){return ue[Symbol.iterator]&&ue[Symbol.iterator]()}function Ve(ue){var Z=-1,ae=ue.length;return function(){return++Z<ae?{value:ue[Z],key:Z}:null}}function Re(ue){var Z=-1;return function(){var Me=ue.next();return Me.done?null:(Z++,{value:Me.value,key:Z})}}function Ct(ue){var Z=ue?Object.keys(ue):[],ae=-1,Me=Z.length;return function it(){var Xe=Z[++ae];return Xe==="__proto__"?it():ae<Me?{value:ue[Xe],key:Xe}:null}}function ct(ue){if(te(ue))return Ve(ue);var Z=Ie(ue);return Z?Re(Z):Ct(ue)}function ot(ue){return function(...Z){if(ue===null)throw new Error("Callback was already called.");var ae=ue;ue=null,ae.apply(this,Z)}}function je(ue,Z,ae,Me){let it=!1,Xe=!1,gt=!1,St=0,Vt=0;function _r(){St>=Z||gt||it||(gt=!0,ue.next().then(({value:Nn,done:Ba})=>{if(!(Xe||it)){if(gt=!1,Ba){it=!0,St<=0&&Me(null);return}St++,ae(Nn,Vt,An),Vt++,_r()}}).catch(ti))}function An(Nn,Ba){if(St-=1,!Xe){if(Nn)return ti(Nn);if(Nn===!1){it=!0,Xe=!0;return}if(Ba===me||it&&St<=0)return it=!0,Me(null);_r()}}function ti(Nn){Xe||(gt=!1,it=!0,Me(Nn))}_r()}var se=ue=>(Z,ae,Me)=>{if(Me=Ce(Me),ue<=0)throw new RangeError("concurrency limit cannot be less than 1");if(!Z)return Me(null);if(g(Z))return je(Z,ue,ae,Me);if(B(Z))return je(Z[Symbol.asyncIterator](),ue,ae,Me);var it=ct(Z),Xe=!1,gt=!1,St=0,Vt=!1;function _r(ti,Nn){if(!gt)if(St-=1,ti)Xe=!0,Me(ti);else if(ti===!1)Xe=!0,gt=!0;else{if(Nn===me||Xe&&St<=0)return Xe=!0,Me(null);Vt||An()}}function An(){for(Vt=!0;St<ue&&!Xe;){var ti=it();if(ti===null){Xe=!0,St<=0&&Me(null);return}St+=1,ae(ti.value,ti.key,ot(_r))}Vt=!1}An()};function De(ue,Z,ae,Me){return se(Z)(ue,F(ae),Me)}var ze=M(De,4);function _e(ue,Z,ae){ae=Ce(ae);var Me=0,it=0,{length:Xe}=ue,gt=!1;Xe===0&&ae(null);function St(Vt,_r){Vt===!1&&(gt=!0),gt!==!0&&(Vt?ae(Vt):(++it===Xe||_r===me)&&ae(null))}for(;Me<Xe;Me++)Z(ue[Me],Me,ot(St))}function Ee(ue,Z,ae){return ze(ue,1/0,Z,ae)}function Fe(ue,Z,ae){var Me=te(ue)?_e:Ee;return Me(ue,F(Z),ae)}var nt=M(Fe,3);function vt(ue,Z,ae){return oe(nt,ue,Z,ae)}var jt=M(vt,3),Ye=G(jt);function At(ue,Z,ae){return ze(ue,1,Z,ae)}var Ae=M(At,3);function Ze(ue,Z,ae){return oe(Ae,ue,Z,ae)}var lt=M(Ze,3),Ut=G(lt);let Tt=Symbol("promiseCallback");function ft(){let ue,Z;function ae(Me,...it){if(Me)return Z(Me);ue(it.length>1?it:it[0])}return ae[Tt]=new Promise((Me,it)=>{ue=Me,Z=it}),ae}function mt(ue,Z,ae){typeof Z!="number"&&(ae=Z,Z=null),ae=Ce(ae||ft());var Me=Object.keys(ue).length;if(!Me)return ae(null);Z||(Z=Me);var it={},Xe=0,gt=!1,St=!1,Vt=Object.create(null),_r=[],An=[],ti={};Object.keys(ue).forEach(Nr=>{var rn=ue[Nr];if(!Array.isArray(rn)){Nn(Nr,[rn]),An.push(Nr);return}var ri=rn.slice(0,rn.length-1),Ii=ri.length;if(Ii===0){Nn(Nr,rn),An.push(Nr);return}ti[Nr]=Ii,ri.forEach(Ks=>{if(!ue[Ks])throw new Error("async.auto task `"+Nr+"` has a non-existent dependency `"+Ks+"` in "+ri.join(", "));Ul(Ks,()=>{Ii--,Ii===0&&Nn(Nr,rn)})})}),ui(),Ba();function Nn(Nr,rn){_r.push(()=>No(Nr,rn))}function Ba(){if(!gt){if(_r.length===0&&Xe===0)return ae(null,it);for(;_r.length&&Xe<Z;){var Nr=_r.shift();Nr()}}}function Ul(Nr,rn){var ri=Vt[Nr];ri||(ri=Vt[Nr]=[]),ri.push(rn)}function xa(Nr){var rn=Vt[Nr]||[];rn.forEach(ri=>ri()),Ba()}function No(Nr,rn){if(!St){var ri=ot((Ks,..._o)=>{if(Xe--,Ks===!1){gt=!0;return}if(_o.length<2&&([_o]=_o),Ks){var bc={};if(Object.keys(it).forEach(no=>{bc[no]=it[no]}),bc[Nr]=_o,St=!0,Vt=Object.create(null),gt)return;ae(Ks,bc)}else it[Nr]=_o,xa(Nr)});Xe++;var Ii=F(rn[rn.length-1]);rn.length>1?Ii(it,ri):Ii(ri)}}function ui(){for(var Nr,rn=0;An.length;)Nr=An.pop(),rn++,on(Nr).forEach(ri=>{--ti[ri]===0&&An.push(ri)});if(rn!==Me)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function on(Nr){var rn=[];return Object.keys(ue).forEach(ri=>{let Ii=ue[ri];Array.isArray(Ii)&&Ii.indexOf(Nr)>=0&&rn.push(ri)}),rn}return ae[Tt]}var C=/^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/,kt=/^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/,Yt=/,/,Jr=/(=.+)?(\s*)$/;function _t(ue){let Z="",ae=0,Me=ue.indexOf("*/");for(;ae<ue.length;)if(ue[ae]==="/"&&ue[ae+1]==="/"){let it=ue.indexOf(`
|
|
1134
|
+
</html>`}});var Boe,A0t,D0t,k0t,I0t,YD,joe=ht(()=>{Boe=Lt(require("http"));ch();KD();Moe();ua();A0t=60*60*1e3,D0t=64*1024,k0t=16*1024,I0t=new Set(["https://edgeone.cloud.tencent.com","https://edgeone.tencentcloud.com","https://edgeone.ai","https://pre.edgeone.ai"]),YD=class{options;port;server;readyPromise;resultPromise;resolveReady;rejectReady;resolveResult;timeoutHandle;completed=!1;processing=!1;constructor(t){this.options=t,this.port=t.port||1025,this.readyPromise=new Promise((r,s)=>{this.resolveReady=r,this.rejectReady=s}),this.resultPromise=new Promise(r=>{this.resolveResult=r}),this.timeoutHandle=setTimeout(()=>{this.completed||(this.completed=!0,this.processing=!1,this.resolveResult({success:!1,message:""}),this.closeServer())},t.timeoutMs||A0t),this.server=Boe.default.createServer(this.handleRequest.bind(this)),this.server.on("error",this.handleError.bind(this)),this.server.listen(this.port,"127.0.0.1",()=>{this.resolveReady()})}waitUntilReady(){return this.readyPromise}waitForResult(){return this.resultPromise}async handleRequest(t,r){let s=new URL(t.url||"/",`http://127.0.0.1:${this.port}`);if(s.pathname!==G6){this.sendMethodNotAllowed(r);return}if(t.method==="OPTIONS"){this.handlePreflight(t,r);return}if(t.method==="POST"){await this.handlePost(t,r);return}if(t.method==="GET"){if(!s.search){r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(Loe({region:this.options.region}));return}await this.handleGet(s,r);return}this.sendMethodNotAllowed(r)}handlePreflight(t,r){let s=t.headers.origin;if(!s||!this.isAllowedOrigin(s)){r.writeHead(403,{"Content-Type":"text/plain; charset=utf-8"}),r.end("Origin is not allowed");return}this.setCorsHeaders(t,r,s),r.writeHead(204),r.end()}async handlePost(t,r){let s=t.headers.origin;if(s&&!this.isAllowedOrigin(s)){r.writeHead(403,{"Content-Type":"application/json; charset=utf-8"}),r.end(JSON.stringify({code:403,success:!1,message:"Origin is not allowed"}));return}if(s&&this.setCorsHeaders(t,r,s),!String(t.headers["content-type"]||"").toLowerCase().startsWith("application/json")){this.sendJson(r,415,{code:415,success:!1,message:"Content-Type must be application/json"});return}let a;try{a=await this.readJsonPayload(t)}catch(n){let l=n instanceof Error?n.message:"Invalid request body";this.sendJson(r,l==="Request body is too large"?413:400,{code:l==="Request body is too large"?413:400,success:!1,message:l});return}if(this.completed||this.processing){this.sendJson(r,200,{code:0,success:!0,message:"Login request already accepted"});return}try{await this.processLogin(a),this.sendJson(r,200,{code:0,success:!0,message:"Login success"},()=>{this.finish({success:!0,message:"Login success"})})}catch(n){let l=n instanceof Error?n.message:String(n);Dt(`[pages-login] token exchange failed: ${l}`),this.sendJson(r,400,{code:400,success:!1,message:l},()=>{this.finish({success:!1,message:l})})}}async handleGet(t,r){let a=t.searchParams.get("region")||this.options.region;if(this.completed||this.processing){r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(Dw({region:a,status:"success"}));return}let n;try{n=this.parseGetPayload(t)}catch(l){let f=l instanceof Error?l.message:String(l);Dt(`[pages-login] invalid callback payload: ${f}`),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(Dw({region:a,status:"error",message:f}),()=>{this.finish({success:!1,message:f})});return}try{await this.processLogin(n),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(Dw({region:a,status:"success"}),()=>{this.finish({success:!0,message:"Login success"})})}catch(l){let f=l instanceof Error?l.message:String(l);Dt(`[pages-login] token exchange failed: ${f}`),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(Dw({region:a,status:"error",message:f}),()=>{this.finish({success:!1,message:f})})}}parseGetPayload(t){let r=t.searchParams,s=r.get("__eo_sso_cb");if(s)return this.decodeTenantCallback(s);let a={token:r.get("token")||void 0,state:r.get("state")||void 0,loginType:r.get("loginType")||void 0,provider:r.get("provider")||void 0,corpId:r.get("corpId")||void 0,corpName:r.get("corpName")||void 0,region:r.get("region")||void 0,openId:r.get("openId")||void 0,expired:r.get("expired")?Number(r.get("expired")):void 0};if(a.token)return a;let n=t.search.slice(1),f=r.get("payload")||(n&&!n.includes("&")&&!/^(token|state|loginType|provider|corpId|corpName|region|openId|expired|__eo_sso_cb)=/.test(n)?n:"");return f?this.decodeTenantCallback(f):a}decodeTenantCallback(t){let r;try{r=decodeURIComponent(t)}catch{throw new Error("Login callback payload is not valid URL encoding.")}if(Buffer.byteLength(r,"utf8")>k0t)throw new Error("Login callback payload is too large.");let s=r.replace(/-/g,"+").replace(/_/g,"/");if(!/^[A-Za-z0-9+/]*={0,2}$/.test(s)||s.length%4===1)throw new Error("Login callback payload is not valid Base64.");let a=s.padEnd(s.length+(4-s.length%4)%4,"="),n;try{let f=Buffer.from(a,"base64").toString("utf8");if(Buffer.from(f,"utf8").toString("base64").replace(/=+$/,"")!==s.replace(/=+$/,""))throw new Error("Non-canonical Base64");n=JSON.parse(f)}catch{throw new Error("Login callback payload cannot be decoded.")}if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Login callback payload must contain a JSON object.");let l=n;return{token:typeof l.token=="string"?l.token:void 0,state:typeof l.state=="string"?l.state:void 0,openId:typeof l.openId=="string"?l.openId:void 0,expired:typeof l.expired=="number"?l.expired:void 0,loginType:"dingtalk"}}async processLogin(t){let r=t.token;if(!r)throw new Error("Login payload missing token field.");if(this.options.state&&(!t.state||t.state!==this.options.state))throw new Error("Login state mismatch. Possible CSRF or stale login page.");if(t.expired!=null){if(!Number.isSafeInteger(t.expired)||t.expired<=0)throw new Error("Login token expiration is invalid.");if(t.expired<=Math.floor(Date.now()/1e3))throw new Error("Login Tenant Token has expired.")}this.processing=!0;let s=t.region||this.options.region,a=t.loginType||t.provider,n;a==="dingtalk"?n={Token:r}:n=await Coe(r,s);let l=n;if(a&&(l={...n,loginType:a},t.corpId&&(l.corpId=t.corpId),t.corpName&&(l.corpName=t.corpName),t.openId&&(l.openId=t.openId),t.expired!=null&&(l.expired=t.expired)),await BS("eo_token",l),s&&await BS("login_region",s),this.options.local)try{qS({token:n.Token,region:s})}catch(f){let m=`Failed to write <cwd>/.edgeone/auth.json: ${f instanceof Error?f.message:String(f)}`;throw Dt(`[pages-login] ${m}`),new Error(m)}}readJsonPayload(t){return new Promise((r,s)=>{let a="",n=0,l=!1;t.setEncoding("utf8"),t.on("data",f=>{if(!l){if(n+=Buffer.byteLength(f),n>D0t){l=!0,s(new Error("Request body is too large"));return}a+=f}}),t.on("end",()=>{if(!l)try{let f=JSON.parse(a||"{}");if(!f||typeof f!="object"||Array.isArray(f))throw new Error("Request body must be a JSON object");r(f)}catch(f){s(f instanceof Error?f:new Error("Invalid JSON body"))}}),t.on("error",s)})}isAllowedOrigin(t){return I0t.has(t)||t===`http://127.0.0.1:${this.port}`||t===`http://localhost:${this.port}`}setCorsHeaders(t,r,s){r.setHeader("Access-Control-Allow-Origin",s),r.setHeader("Vary","Origin"),r.setHeader("Access-Control-Allow-Methods","POST, OPTIONS"),r.setHeader("Access-Control-Allow-Headers","Content-Type"),r.setHeader("Access-Control-Max-Age","600"),t.headers["access-control-request-private-network"]==="true"&&r.setHeader("Access-Control-Allow-Private-Network","true")}sendJson(t,r,s,a){t.writeHead(r,{"Content-Type":"application/json; charset=utf-8"}),t.end(JSON.stringify(s),a)}sendMethodNotAllowed(t){t.writeHead(405,{"Content-Type":"text/plain; charset=utf-8",Allow:"GET, POST, OPTIONS"}),t.end("Only GET, POST and OPTIONS /pages/connect are supported")}handleError(t){t.code==="EADDRINUSE"?(console.log(`Port ${this.port} is already in use`),this.rejectReady(new Error(`Port ${this.port} is already in use`))):(console.error("An error occurred:",t),this.rejectReady(t)),this.completed||(this.completed=!0,this.resolveResult({success:!1,message:""}))}finish(t){var r,s;this.completed||(this.completed=!0,this.processing=!1,this.resolveResult(t),t.success&&((s=(r=this.options).callback)==null||s.call(r)),this.closeServer())}closeServer(){this.timeoutHandle&&(clearTimeout(this.timeoutHandle),this.timeoutHandle=void 0),this.server.listening&&this.server.close()}}});var Uoe=J((JD,qoe)=>{(function(e,t){typeof JD=="object"&&typeof qoe<"u"?t(JD):typeof define=="function"&&define.amd?define(["exports"],t):(e=typeof globalThis<"u"?globalThis:e||self,t(e.async={}))})(JD,function(e){"use strict";function t(ue,...Z){return(...ae)=>ue(...Z,...ae)}function r(ue){return function(...Z){var ae=Z.pop();return ue.call(this,Z,ae)}}var s=typeof queueMicrotask=="function"&&queueMicrotask,a=typeof setImmediate=="function"&&setImmediate,n=typeof process=="object"&&typeof process.nextTick=="function";function l(ue){setTimeout(ue,0)}function f(ue){return(Z,...ae)=>ue(()=>Z(...ae))}var m;s?m=queueMicrotask:a?m=setImmediate:n?m=process.nextTick:m=l;var y=f(m);function v(ue){return k(ue)?function(...Z){let ae=Z.pop(),Me=ue.apply(this,Z);return b(Me,ae)}:r(function(Z,ae){var Me;try{Me=ue.apply(this,Z)}catch(it){return ae(it)}if(Me&&typeof Me.then=="function")return b(Me,ae);ae(null,Me)})}function b(ue,Z){return ue.then(ae=>{P(Z,null,ae)},ae=>{P(Z,ae&&(ae instanceof Error||ae.message)?ae:new Error(ae))})}function P(ue,Z,ae){try{ue(Z,ae)}catch(Me){y(it=>{throw it},Me)}}function k(ue){return ue[Symbol.toStringTag]==="AsyncFunction"}function g(ue){return ue[Symbol.toStringTag]==="AsyncGenerator"}function B(ue){return typeof ue[Symbol.asyncIterator]=="function"}function F(ue){if(typeof ue!="function")throw new Error("expected a function");return k(ue)?v(ue):ue}function M(ue,Z){if(Z||(Z=ue.length),!Z)throw new Error("arity is undefined");function ae(...Me){return typeof Me[Z-1]=="function"?ue.apply(this,Me):new Promise((it,Xe)=>{Me[Z-1]=(gt,...St)=>{if(gt)return Xe(gt);it(St.length>1?St:St[0])},ue.apply(this,Me)})}return ae}function G(ue){return function(ae,...Me){return M(function(Xe){var gt=this;return ue(ae,(St,Vt)=>{F(St).apply(gt,Me.concat(Vt))},Xe)})}}function oe(ue,Z,ae,Me){Z=Z||[];var it=[],Xe=0,gt=F(ae);return ue(Z,(St,Vt,_r)=>{var An=Xe++;gt(St,(ti,Nn)=>{it[An]=Nn,_r(ti)})},St=>{Me(St,it)})}function te(ue){return ue&&typeof ue.length=="number"&&ue.length>=0&&ue.length%1===0}let me={};function Ce(ue){function Z(...ae){if(ue!==null){var Me=ue;ue=null,Me.apply(this,ae)}}return Object.assign(Z,ue),Z}function Ie(ue){return ue[Symbol.iterator]&&ue[Symbol.iterator]()}function Ve(ue){var Z=-1,ae=ue.length;return function(){return++Z<ae?{value:ue[Z],key:Z}:null}}function Re(ue){var Z=-1;return function(){var Me=ue.next();return Me.done?null:(Z++,{value:Me.value,key:Z})}}function Ct(ue){var Z=ue?Object.keys(ue):[],ae=-1,Me=Z.length;return function it(){var Xe=Z[++ae];return Xe==="__proto__"?it():ae<Me?{value:ue[Xe],key:Xe}:null}}function ct(ue){if(te(ue))return Ve(ue);var Z=Ie(ue);return Z?Re(Z):Ct(ue)}function ot(ue){return function(...Z){if(ue===null)throw new Error("Callback was already called.");var ae=ue;ue=null,ae.apply(this,Z)}}function je(ue,Z,ae,Me){let it=!1,Xe=!1,gt=!1,St=0,Vt=0;function _r(){St>=Z||gt||it||(gt=!0,ue.next().then(({value:Nn,done:Ba})=>{if(!(Xe||it)){if(gt=!1,Ba){it=!0,St<=0&&Me(null);return}St++,ae(Nn,Vt,An),Vt++,_r()}}).catch(ti))}function An(Nn,Ba){if(St-=1,!Xe){if(Nn)return ti(Nn);if(Nn===!1){it=!0,Xe=!0;return}if(Ba===me||it&&St<=0)return it=!0,Me(null);_r()}}function ti(Nn){Xe||(gt=!1,it=!0,Me(Nn))}_r()}var se=ue=>(Z,ae,Me)=>{if(Me=Ce(Me),ue<=0)throw new RangeError("concurrency limit cannot be less than 1");if(!Z)return Me(null);if(g(Z))return je(Z,ue,ae,Me);if(B(Z))return je(Z[Symbol.asyncIterator](),ue,ae,Me);var it=ct(Z),Xe=!1,gt=!1,St=0,Vt=!1;function _r(ti,Nn){if(!gt)if(St-=1,ti)Xe=!0,Me(ti);else if(ti===!1)Xe=!0,gt=!0;else{if(Nn===me||Xe&&St<=0)return Xe=!0,Me(null);Vt||An()}}function An(){for(Vt=!0;St<ue&&!Xe;){var ti=it();if(ti===null){Xe=!0,St<=0&&Me(null);return}St+=1,ae(ti.value,ti.key,ot(_r))}Vt=!1}An()};function De(ue,Z,ae,Me){return se(Z)(ue,F(ae),Me)}var ze=M(De,4);function _e(ue,Z,ae){ae=Ce(ae);var Me=0,it=0,{length:Xe}=ue,gt=!1;Xe===0&&ae(null);function St(Vt,_r){Vt===!1&&(gt=!0),gt!==!0&&(Vt?ae(Vt):(++it===Xe||_r===me)&&ae(null))}for(;Me<Xe;Me++)Z(ue[Me],Me,ot(St))}function Ee(ue,Z,ae){return ze(ue,1/0,Z,ae)}function Fe(ue,Z,ae){var Me=te(ue)?_e:Ee;return Me(ue,F(Z),ae)}var nt=M(Fe,3);function vt(ue,Z,ae){return oe(nt,ue,Z,ae)}var jt=M(vt,3),Ye=G(jt);function At(ue,Z,ae){return ze(ue,1,Z,ae)}var Ae=M(At,3);function Ze(ue,Z,ae){return oe(Ae,ue,Z,ae)}var lt=M(Ze,3),Ut=G(lt);let Tt=Symbol("promiseCallback");function ft(){let ue,Z;function ae(Me,...it){if(Me)return Z(Me);ue(it.length>1?it:it[0])}return ae[Tt]=new Promise((Me,it)=>{ue=Me,Z=it}),ae}function mt(ue,Z,ae){typeof Z!="number"&&(ae=Z,Z=null),ae=Ce(ae||ft());var Me=Object.keys(ue).length;if(!Me)return ae(null);Z||(Z=Me);var it={},Xe=0,gt=!1,St=!1,Vt=Object.create(null),_r=[],An=[],ti={};Object.keys(ue).forEach(Nr=>{var rn=ue[Nr];if(!Array.isArray(rn)){Nn(Nr,[rn]),An.push(Nr);return}var ri=rn.slice(0,rn.length-1),Ii=ri.length;if(Ii===0){Nn(Nr,rn),An.push(Nr);return}ti[Nr]=Ii,ri.forEach(Ks=>{if(!ue[Ks])throw new Error("async.auto task `"+Nr+"` has a non-existent dependency `"+Ks+"` in "+ri.join(", "));Ul(Ks,()=>{Ii--,Ii===0&&Nn(Nr,rn)})})}),ui(),Ba();function Nn(Nr,rn){_r.push(()=>No(Nr,rn))}function Ba(){if(!gt){if(_r.length===0&&Xe===0)return ae(null,it);for(;_r.length&&Xe<Z;){var Nr=_r.shift();Nr()}}}function Ul(Nr,rn){var ri=Vt[Nr];ri||(ri=Vt[Nr]=[]),ri.push(rn)}function xa(Nr){var rn=Vt[Nr]||[];rn.forEach(ri=>ri()),Ba()}function No(Nr,rn){if(!St){var ri=ot((Ks,..._o)=>{if(Xe--,Ks===!1){gt=!0;return}if(_o.length<2&&([_o]=_o),Ks){var bc={};if(Object.keys(it).forEach(no=>{bc[no]=it[no]}),bc[Nr]=_o,St=!0,Vt=Object.create(null),gt)return;ae(Ks,bc)}else it[Nr]=_o,xa(Nr)});Xe++;var Ii=F(rn[rn.length-1]);rn.length>1?Ii(it,ri):Ii(ri)}}function ui(){for(var Nr,rn=0;An.length;)Nr=An.pop(),rn++,on(Nr).forEach(ri=>{--ti[ri]===0&&An.push(ri)});if(rn!==Me)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function on(Nr){var rn=[];return Object.keys(ue).forEach(ri=>{let Ii=ue[ri];Array.isArray(Ii)&&Ii.indexOf(Nr)>=0&&rn.push(ri)}),rn}return ae[Tt]}var C=/^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/,kt=/^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/,Yt=/,/,Jr=/(=.+)?(\s*)$/;function _t(ue){let Z="",ae=0,Me=ue.indexOf("*/");for(;ae<ue.length;)if(ue[ae]==="/"&&ue[ae+1]==="/"){let it=ue.indexOf(`
|
|
1135
1135
|
`,ae);ae=it===-1?ue.length:it}else if(Me!==-1&&ue[ae]==="/"&&ue[ae+1]==="*"){let it=ue.indexOf("*/",ae);it!==-1?(ae=it+2,Me=ue.indexOf("*/",ae)):(Z+=ue[ae],ae++)}else Z+=ue[ae],ae++;return Z}function bt(ue){let Z=_t(ue.toString()),ae=Z.match(C);if(ae||(ae=Z.match(kt)),!ae)throw new Error(`could not parse args in autoInject
|
|
1136
1136
|
Source:
|
|
1137
1137
|
`+Z);let[,Me]=ae;return Me.replace(/\s/g,"").split(Yt).map(it=>it.replace(Jr,"").trim())}function tr(ue,Z){var ae={};return Object.keys(ue).forEach(Me=>{var it=ue[Me],Xe,gt=k(it),St=!gt&&it.length===1||gt&&it.length===0;if(Array.isArray(it))Xe=[...it],it=Xe.pop(),ae[Me]=Xe.concat(Xe.length>0?Vt:it);else if(St)ae[Me]=it;else{if(Xe=bt(it),it.length===0&&!gt&&Xe.length===0)throw new Error("autoInject task functions require explicit parameters.");gt||Xe.pop(),ae[Me]=Xe.concat(Vt)}function Vt(_r,An){var ti=Xe.map(Nn=>_r[Nn]);ti.push(An),F(it)(...ti)}}),mt(ae,Z)}class ge{constructor(){this.head=this.tail=null,this.length=0}removeLink(Z){return Z.prev?Z.prev.next=Z.next:this.head=Z.next,Z.next?Z.next.prev=Z.prev:this.tail=Z.prev,Z.prev=Z.next=null,this.length-=1,Z}empty(){for(;this.head;)this.shift();return this}insertAfter(Z,ae){ae.prev=Z,ae.next=Z.next,Z.next?Z.next.prev=ae:this.tail=ae,Z.next=ae,this.length+=1}insertBefore(Z,ae){ae.prev=Z.prev,ae.next=Z,Z.prev?Z.prev.next=ae:this.head=ae,Z.prev=ae,this.length+=1}unshift(Z){this.head?this.insertBefore(this.head,Z):Je(this,Z)}push(Z){this.tail?this.insertAfter(this.tail,Z):Je(this,Z)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){for(var Z=this.head;Z;)yield Z.data,Z=Z.next}remove(Z){for(var ae=this.head;ae;){var{next:Me}=ae;Z(ae)&&this.removeLink(ae),ae=Me}return this}}function Je(ue,Z){ue.length=1,ue.head=ue.tail=Z}function $t(ue,Z,ae){if(Z==null)Z=1;else if(Z===0)throw new RangeError("Concurrency must not be zero");var Me=F(ue),it=0,Xe=[];let gt={error:[],drain:[],saturated:[],unsaturated:[],empty:[]};function St(on,Nr){gt[on].push(Nr)}function Vt(on,Nr){let rn=(...ri)=>{_r(on,rn),Nr(...ri)};gt[on].push(rn)}function _r(on,Nr){if(!on)return Object.keys(gt).forEach(rn=>gt[rn]=[]);if(!Nr)return gt[on]=[];gt[on]=gt[on].filter(rn=>rn!==Nr)}function An(on,...Nr){gt[on].forEach(rn=>rn(...Nr))}var ti=!1;function Nn(on,Nr,rn,ri){if(ri!=null&&typeof ri!="function")throw new Error("task callback must be a function");ui.started=!0;var Ii,Ks;function _o(no,...ja){if(no)return rn?Ks(no):Ii();if(ja.length<=1)return Ii(ja[0]);Ii(ja)}var bc=ui._createTaskItem(on,rn?_o:ri||_o);if(Nr?ui._tasks.unshift(bc):ui._tasks.push(bc),ti||(ti=!0,y(()=>{ti=!1,ui.process()})),rn||!ri)return new Promise((no,ja)=>{Ii=no,Ks=ja})}function Ba(on){return function(Nr,...rn){it-=1;for(var ri=0,Ii=on.length;ri<Ii;ri++){var Ks=on[ri],_o=Xe.indexOf(Ks);_o===0?Xe.shift():_o>0&&Xe.splice(_o,1),Ks.callback(Nr,...rn),Nr!=null&&An("error",Nr,Ks.data)}it<=ui.concurrency-ui.buffer&&An("unsaturated"),ui.idle()&&An("drain"),ui.process()}}function Ul(on){return on.length===0&&ui.idle()?(y(()=>An("drain")),!0):!1}let xa=on=>Nr=>{if(!Nr)return new Promise((rn,ri)=>{Vt(on,(Ii,Ks)=>{if(Ii)return ri(Ii);rn(Ks)})});_r(on),St(on,Nr)};var No=!1,ui={_tasks:new ge,_createTaskItem(on,Nr){return{data:on,callback:Nr}},*[Symbol.iterator](){yield*ui._tasks[Symbol.iterator]()},concurrency:Z,payload:ae,buffer:Z/4,started:!1,paused:!1,push(on,Nr){return Array.isArray(on)?Ul(on)?void 0:on.map(rn=>Nn(rn,!1,!1,Nr)):Nn(on,!1,!1,Nr)},pushAsync(on,Nr){return Array.isArray(on)?Ul(on)?void 0:on.map(rn=>Nn(rn,!1,!0,Nr)):Nn(on,!1,!0,Nr)},kill(){_r(),ui._tasks.empty()},unshift(on,Nr){return Array.isArray(on)?Ul(on)?void 0:on.map(rn=>Nn(rn,!0,!1,Nr)):Nn(on,!0,!1,Nr)},unshiftAsync(on,Nr){return Array.isArray(on)?Ul(on)?void 0:on.map(rn=>Nn(rn,!0,!0,Nr)):Nn(on,!0,!0,Nr)},remove(on){ui._tasks.remove(on)},process(){if(!No){for(No=!0;!ui.paused&&it<ui.concurrency&&ui._tasks.length;){var on=[],Nr=[],rn=ui._tasks.length;ui.payload&&(rn=Math.min(rn,ui.payload));for(var ri=0;ri<rn;ri++){var Ii=ui._tasks.shift();on.push(Ii),Xe.push(Ii),Nr.push(Ii.data)}it+=1,ui._tasks.length===0&&An("empty"),it===ui.concurrency&&An("saturated");var Ks=ot(Ba(on));Me(Nr,Ks)}No=!1}},length(){return ui._tasks.length},running(){return it},workersList(){return Xe},idle(){return ui._tasks.length+it===0},pause(){ui.paused=!0},resume(){ui.paused!==!1&&(ui.paused=!1,y(ui.process))}};return Object.defineProperties(ui,{saturated:{writable:!1,value:xa("saturated")},unsaturated:{writable:!1,value:xa("unsaturated")},empty:{writable:!1,value:xa("empty")},drain:{writable:!1,value:xa("drain")},error:{writable:!1,value:xa("error")}}),ui}function rr(ue,Z){return $t(ue,1,Z)}function $r(ue,Z,ae){return $t(ue,Z,ae)}function Vr(ue,Z,ae,Me){Me=Ce(Me);var it=F(ae);return Ae(ue,(Xe,gt,St)=>{it(Z,Xe,(Vt,_r)=>{Z=_r,St(Vt)})},Xe=>Me(Xe,Z))}var Hn=M(Vr,4);function jn(...ue){var Z=ue.map(F);return function(...ae){var Me=this,it=ae[ae.length-1];return typeof it=="function"?ae.pop():it=ft(),Hn(Z,ae,(Xe,gt,St)=>{gt.apply(Me,Xe.concat((Vt,..._r)=>{St(Vt,_r)}))},(Xe,gt)=>it(Xe,...gt)),it[Tt]}}function ei(...ue){return jn(...ue.reverse())}function En(ue,Z,ae,Me){return oe(se(Z),ue,ae,Me)}var $o=M(En,4);function Qo(ue,Z,ae,Me){var it=F(ae);return $o(ue,Z,(Xe,gt)=>{it(Xe,(St,...Vt)=>St?gt(St):gt(St,Vt))},(Xe,gt)=>{for(var St=[],Vt=0;Vt<gt.length;Vt++)gt[Vt]&&(St=St.concat(...gt[Vt]));return Me(Xe,St)})}var ps=M(Qo,4);function Vo(ue,Z,ae){return ps(ue,1/0,Z,ae)}var Vu=M(Vo,3);function za(ue,Z,ae){return ps(ue,1,Z,ae)}var rt=M(za,3);function Ft(...ue){return function(...Z){var ae=Z.pop();return ae(null,...ue)}}function It(ue,Z){return(ae,Me,it,Xe)=>{var gt=!1,St;let Vt=F(it);ae(Me,(_r,An,ti)=>{Vt(_r,(Nn,Ba)=>{if(Nn||Nn===!1)return ti(Nn);if(ue(Ba)&&!St)return gt=!0,St=Z(!0,_r),ti(null,me);ti()})},_r=>{if(_r)return Xe(_r);Xe(null,gt?St:Z(!1))})}}function Xt(ue,Z,ae){return It(Me=>Me,(Me,it)=>it)(nt,ue,Z,ae)}var Ir=M(Xt,3);function xr(ue,Z,ae,Me){return It(it=>it,(it,Xe)=>Xe)(se(Z),ue,ae,Me)}var In=M(xr,4);function _i(ue,Z,ae){return It(Me=>Me,(Me,it)=>it)(se(1),ue,Z,ae)}var Mt=M(_i,3);function Ai(ue){return(Z,...ae)=>F(Z)(...ae,(Me,...it)=>{typeof console=="object"&&(Me?console.error&&console.error(Me):console[ue]&&it.forEach(Xe=>console[ue](Xe)))})}var Ps=Ai("dir");function Di(ue,Z,ae){ae=ot(ae);var Me=F(ue),it=F(Z),Xe;function gt(Vt,..._r){if(Vt)return ae(Vt);Vt!==!1&&(Xe=_r,it(..._r,St))}function St(Vt,_r){if(Vt)return ae(Vt);if(Vt!==!1){if(!_r)return ae(null,...Xe);Me(gt)}}return St(null,!0)}var Si=M(Di,3);function sn(ue,Z,ae){let Me=F(Z);return Si(ue,(...it)=>{let Xe=it.pop();Me(...it,(gt,St)=>Xe(gt,!St))},ae)}function Ws(ue){return(Z,ae,Me)=>ue(Z,Me)}function On(ue,Z,ae){return nt(ue,Ws(F(Z)),ae)}var Ss=M(On,3);function Hu(ue,Z,ae,Me){return se(Z)(ue,Ws(F(ae)),Me)}var to=M(Hu,4);function ur(ue,Z,ae){return to(ue,1,Z,ae)}var Ao=M(ur,3);function co(ue){return k(ue)?ue:function(...Z){var ae=Z.pop(),Me=!0;Z.push((...it)=>{Me?y(()=>ae(...it)):ae(...it)}),ue.apply(this,Z),Me=!1}}function Cs(ue,Z,ae){return It(Me=>!Me,Me=>!Me)(nt,ue,Z,ae)}var Do=M(Cs,3);function lo(ue,Z,ae,Me){return It(it=>!it,it=>!it)(se(Z),ue,ae,Me)}var js=M(lo,4);function Zc(ue,Z,ae){return It(Me=>!Me,Me=>!Me)(Ae,ue,Z,ae)}var fu=M(Zc,3);function Oa(ue,Z,ae,Me){var it=new Array(Z.length);ue(Z,(Xe,gt,St)=>{ae(Xe,(Vt,_r)=>{it[gt]=!!_r,St(Vt)})},Xe=>{if(Xe)return Me(Xe);for(var gt=[],St=0;St<Z.length;St++)it[St]&>.push(Z[St]);Me(null,gt)})}function Wu(ue,Z,ae,Me){var it=[];ue(Z,(Xe,gt,St)=>{ae(Xe,(Vt,_r)=>{if(Vt)return St(Vt);_r&&it.push({index:gt,value:Xe}),St(Vt)})},Xe=>{if(Xe)return Me(Xe);Me(null,it.sort((gt,St)=>gt.index-St.index).map(gt=>gt.value))})}function Fl(ue,Z,ae,Me){var it=te(Z)?Oa:Wu;return it(ue,Z,F(ae),Me)}function tn(ue,Z,ae){return Fl(nt,ue,Z,ae)}var vc=M(tn,3);function el(ue,Z,ae,Me){return Fl(se(Z),ue,ae,Me)}var du=M(el,4);function fs(ue,Z,ae){return Fl(Ae,ue,Z,ae)}var Ji=M(fs,3);function Bi(ue,Z){var ae=ot(Z),Me=F(co(ue));function it(Xe){if(Xe)return ae(Xe);Xe!==!1&&Me(it)}return it()}var zs=M(Bi,2);function ko(ue,Z,ae,Me){var it=F(ae);return $o(ue,Z,(Xe,gt)=>{it(Xe,(St,Vt)=>St?gt(St):gt(St,{key:Vt,val:Xe}))},(Xe,gt)=>{for(var St={},{hasOwnProperty:Vt}=Object.prototype,_r=0;_r<gt.length;_r++)if(gt[_r]){var{key:An}=gt[_r],{val:ti}=gt[_r];Vt.call(St,An)?St[An].push(ti):St[An]=[ti]}return Me(Xe,St)})}var Na=M(ko,4);function Zo(ue,Z,ae){return Na(ue,1/0,Z,ae)}function Io(ue,Z,ae){return Na(ue,1,Z,ae)}var Ll=Ai("log");function Z0(ue,Z,ae,Me){Me=Ce(Me);var it={},Xe=F(ae);return se(Z)(ue,(gt,St,Vt)=>{Xe(gt,St,(_r,An)=>{if(_r)return Vt(_r);it[St]=An,Vt(_r)})},gt=>Me(gt,it))}var kp=M(Z0,4);function Ml(ue,Z,ae){return kp(ue,1/0,Z,ae)}function ga(ue,Z,ae){return kp(ue,1,Z,ae)}function qt(ue,Z=ae=>ae){var ae=Object.create(null),Me=Object.create(null),it=F(ue),Xe=r((gt,St)=>{var Vt=Z(...gt);Vt in ae?y(()=>St(null,...ae[Vt])):Vt in Me?Me[Vt].push(St):(Me[Vt]=[St],it(...gt,(_r,...An)=>{_r||(ae[Vt]=An);var ti=Me[Vt];delete Me[Vt];for(var Nn=0,Ba=ti.length;Nn<Ba;Nn++)ti[Nn](_r,...An)}))});return Xe.memo=ae,Xe.unmemoized=ue,Xe}var hu;n?hu=process.nextTick:a?hu=setImmediate:hu=l;var em=f(hu),Ip=M((ue,Z,ae)=>{var Me=te(Z)?[]:{};ue(Z,(it,Xe,gt)=>{F(it)((St,...Vt)=>{Vt.length<2&&([Vt]=Vt),Me[Xe]=Vt,gt(St)})},it=>ae(it,Me))},3);function ns(ue,Z){return Ip(nt,ue,Z)}function xc(ue,Z,ae){return Ip(se(Z),ue,ae)}function Vh(ue,Z){var ae=F(ue);return $t((Me,it)=>{ae(Me[0],it)},Z,1)}class Sf{constructor(){this.heap=[],this.pushCount=Number.MIN_SAFE_INTEGER}get length(){return this.heap.length}empty(){return this.heap=[],this}percUp(Z){let ae;for(;Z>0&&or(this.heap[Z],this.heap[ae=Od(Z)]);){let Me=this.heap[Z];this.heap[Z]=this.heap[ae],this.heap[ae]=Me,Z=ae}}percDown(Z){let ae;for(;(ae=tl(Z))<this.heap.length&&(ae+1<this.heap.length&&or(this.heap[ae+1],this.heap[ae])&&(ae=ae+1),!or(this.heap[Z],this.heap[ae]));){let Me=this.heap[Z];this.heap[Z]=this.heap[ae],this.heap[ae]=Me,Z=ae}}push(Z){Z.pushCount=++this.pushCount,this.heap.push(Z),this.percUp(this.heap.length-1)}unshift(Z){return this.heap.push(Z)}shift(){let[Z]=this.heap;return this.heap[0]=this.heap[this.heap.length-1],this.heap.pop(),this.percDown(0),Z}toArray(){return[...this]}*[Symbol.iterator](){for(let Z=0;Z<this.heap.length;Z++)yield this.heap[Z].data}remove(Z){let ae=0;for(let Me=0;Me<this.heap.length;Me++)Z(this.heap[Me])||(this.heap[ae]=this.heap[Me],ae++);this.heap.splice(ae);for(let Me=Od(this.heap.length-1);Me>=0;Me--)this.percDown(Me);return this}}function tl(ue){return(ue<<1)+1}function Od(ue){return(ue+1>>1)-1}function or(ue,Z){return ue.priority!==Z.priority?ue.priority<Z.priority:ue.pushCount<Z.pushCount}function ji(ue,Z){var ae=Vh(ue,Z),{push:Me,pushAsync:it}=ae;ae._tasks=new Sf,ae._createTaskItem=({data:gt,priority:St},Vt)=>({data:gt,priority:St,callback:Vt});function Xe(gt,St){return Array.isArray(gt)?gt.map(Vt=>({data:Vt,priority:St})):{data:gt,priority:St}}return ae.push=function(gt,St=0,Vt){return Me(Xe(gt,St),Vt)},ae.pushAsync=function(gt,St=0,Vt){return it(Xe(gt,St),Vt)},delete ae.unshift,delete ae.unshiftAsync,ae}function Nd(ue,Z){if(Z=Ce(Z),!Array.isArray(ue))return Z(new TypeError("First argument to race must be an array of functions"));if(!ue.length)return Z();for(var ae=0,Me=ue.length;ae<Me;ae++)F(ue[ae])(Z)}var Bl=M(Nd,2);function mu(ue,Z,ae,Me){var it=[...ue].reverse();return Hn(it,Z,ae,Me)}function bf(ue){var Z=F(ue);return r(function(Me,it){return Me.push((Xe,...gt)=>{let St={};if(Xe&&(St.error=Xe),gt.length>0){var Vt=gt;gt.length<=1&&([Vt]=gt),St.value=Vt}it(null,St)}),Z.apply(this,Me)})}function tm(ue){var Z;return Array.isArray(ue)?Z=ue.map(bf):(Z={},Object.keys(ue).forEach(ae=>{Z[ae]=bf.call(this,ue[ae])})),Z}function Hh(ue,Z,ae,Me){let it=F(ae);return Fl(ue,Z,(Xe,gt)=>{it(Xe,(St,Vt)=>{gt(St,!Vt)})},Me)}function rm(ue,Z,ae){return Hh(nt,ue,Z,ae)}var Ra=M(rm,3);function Fa(ue,Z,ae,Me){return Hh(se(Z),ue,ae,Me)}var Wh=M(Fa,4);function zh(ue,Z,ae){return Hh(Ae,ue,Z,ae)}var Op=M(zh,3);function ea(ue){return function(){return ue}}let Np=5,La=0;function rl(ue,Z,ae){var Me={times:Np,intervalFunc:ea(La)};if(arguments.length<3&&typeof ue=="function"?(ae=Z||ft(),Z=ue):(yu(Me,ue),ae=ae||ft()),typeof Z!="function")throw new Error("Invalid arguments for async.retry");var it=F(Z),Xe=1;function gt(){it((St,...Vt)=>{St!==!1&&(St&&Xe++<Me.times&&(typeof Me.errorFilter!="function"||Me.errorFilter(St))?setTimeout(gt,Me.intervalFunc(Xe-1)):ae(St,...Vt))})}return gt(),ae[Tt]}function yu(ue,Z){if(typeof Z=="object")ue.times=+Z.times||Np,ue.intervalFunc=typeof Z.interval=="function"?Z.interval:ea(+Z.interval||La),ue.errorFilter=Z.errorFilter;else if(typeof Z=="number"||typeof Z=="string")ue.times=+Z||Np;else throw new Error("Invalid arguments for async.retry")}function zu(ue,Z){Z||(Z=ue,ue=null);let ae=ue&&ue.arity||Z.length;k(Z)&&(ae+=1);var Me=F(Z);return r((it,Xe)=>{(it.length<ae-1||Xe==null)&&(it.push(Xe),Xe=ft());function gt(St){Me(...it,St)}return ue?rl(ue,gt,Xe):rl(gt,Xe),Xe[Tt]})}function _c(ue,Z){return Ip(Ae,ue,Z)}function Sc(ue,Z,ae){return It(Boolean,Me=>Me)(nt,ue,Z,ae)}var Ns=M(Sc,3);function wn(ue,Z,ae,Me){return It(Boolean,it=>it)(se(Z),ue,ae,Me)}var Gu=M(wn,4);function Gh(ue,Z,ae){return It(Boolean,Me=>Me)(Ae,ue,Z,ae)}var Gs=M(Gh,3);function jl(ue,Z,ae){var Me=F(Z);return jt(ue,(Xe,gt)=>{Me(Xe,(St,Vt)=>{if(St)return gt(St);gt(St,{value:Xe,criteria:Vt})})},(Xe,gt)=>{if(Xe)return ae(Xe);ae(null,gt.sort(it).map(St=>St.value))});function it(Xe,gt){var St=Xe.criteria,Vt=gt.criteria;return St<Vt?-1:St>Vt?1:0}}var ql=M(jl,3);function Ma(ue,Z,ae){var Me=F(ue);return r((it,Xe)=>{var gt=!1,St;function Vt(){var _r=ue.name||"anonymous",An=new Error('Callback function "'+_r+'" timed out.');An.code="ETIMEDOUT",ae&&(An.info=ae),gt=!0,Xe(An)}it.push((..._r)=>{gt||(Xe(..._r),clearTimeout(St))}),St=setTimeout(Vt,Z),Me(...it)})}function Rp(ue){for(var Z=Array(ue);ue--;)Z[ue]=ue;return Z}function Oo(ue,Z,ae,Me){var it=F(ae);return $o(Rp(ue),Z,it,Me)}function Fp(ue,Z,ae){return Oo(ue,1/0,Z,ae)}function Kh(ue,Z,ae){return Oo(ue,1,Z,ae)}function Ga(ue,Z,ae,Me){arguments.length<=3&&typeof Z=="function"&&(Me=ae,ae=Z,Z=Array.isArray(ue)?[]:{}),Me=Ce(Me||ft());var it=F(ae);return nt(ue,(Xe,gt,St)=>{it(Z,Xe,gt,St)},Xe=>Me(Xe,Z)),Me[Tt]}function va(ue,Z){var ae=null,Me;return Ao(ue,(it,Xe)=>{F(it)((gt,...St)=>{if(gt===!1)return Xe(gt);St.length<2?[Me]=St:Me=St,ae=gt,Xe(gt?null:{})})},()=>Z(ae,Me))}var Lp=M(va);function nl(ue){return(...Z)=>(ue.unmemoized||ue)(...Z)}function bs(ue,Z,ae){ae=ot(ae);var Me=F(Z),it=F(ue),Xe=[];function gt(Vt,..._r){if(Vt)return ae(Vt);Xe=_r,Vt!==!1&&it(St)}function St(Vt,_r){if(Vt)return ae(Vt);if(Vt!==!1){if(!_r)return ae(null,...Xe);Me(gt)}}return it(St)}var ro=M(bs,3);function Ku(ue,Z,ae){let Me=F(ue);return ro(it=>Me((Xe,gt)=>it(Xe,!gt)),Z,ae)}function Ef(ue,Z){if(Z=Ce(Z),!Array.isArray(ue))return Z(new Error("First argument to waterfall must be an array of functions"));if(!ue.length)return Z();var ae=0;function Me(Xe){var gt=F(ue[ae++]);gt(...Xe,ot(it))}function it(Xe,...gt){if(Xe!==!1){if(Xe||ae===ue.length)return Z(Xe,...gt);Me(gt)}}Me([])}var gu=M(Ef),il={apply:t,applyEach:Ye,applyEachSeries:Ut,asyncify:v,auto:mt,autoInject:tr,cargo:rr,cargoQueue:$r,compose:ei,concat:Vu,concatLimit:ps,concatSeries:rt,constant:Ft,detect:Ir,detectLimit:In,detectSeries:Mt,dir:Ps,doUntil:sn,doWhilst:Si,each:Ss,eachLimit:to,eachOf:nt,eachOfLimit:ze,eachOfSeries:Ae,eachSeries:Ao,ensureAsync:co,every:Do,everyLimit:js,everySeries:fu,filter:vc,filterLimit:du,filterSeries:Ji,forever:zs,groupBy:Zo,groupByLimit:Na,groupBySeries:Io,log:Ll,map:jt,mapLimit:$o,mapSeries:lt,mapValues:Ml,mapValuesLimit:kp,mapValuesSeries:ga,memoize:qt,nextTick:em,parallel:ns,parallelLimit:xc,priorityQueue:ji,queue:Vh,race:Bl,reduce:Hn,reduceRight:mu,reflect:bf,reflectAll:tm,reject:Ra,rejectLimit:Wh,rejectSeries:Op,retry:rl,retryable:zu,seq:jn,series:_c,setImmediate:y,some:Ns,someLimit:Gu,someSeries:Gs,sortBy:ql,timeout:Ma,times:Fp,timesLimit:Oo,timesSeries:Kh,transform:Ga,tryEach:Lp,unmemoize:nl,until:Ku,waterfall:gu,whilst:ro,all:Do,allLimit:js,allSeries:fu,any:Ns,anyLimit:Gu,anySeries:Gs,find:Ir,findLimit:In,findSeries:Mt,flatMap:Vu,flatMapLimit:ps,flatMapSeries:rt,forEach:Ss,forEachSeries:Ao,forEachLimit:to,forEachOf:nt,forEachOfSeries:Ae,forEachOfLimit:ze,inject:Hn,foldl:Hn,foldr:mu,select:vc,selectLimit:du,selectSeries:Ji,wrapSync:v,during:ro,doDuring:Si};e.all=Do,e.allLimit=js,e.allSeries=fu,e.any=Ns,e.anyLimit=Gu,e.anySeries=Gs,e.apply=t,e.applyEach=Ye,e.applyEachSeries=Ut,e.asyncify=v,e.auto=mt,e.autoInject=tr,e.cargo=rr,e.cargoQueue=$r,e.compose=ei,e.concat=Vu,e.concatLimit=ps,e.concatSeries=rt,e.constant=Ft,e.default=il,e.detect=Ir,e.detectLimit=In,e.detectSeries=Mt,e.dir=Ps,e.doDuring=Si,e.doUntil=sn,e.doWhilst=Si,e.during=ro,e.each=Ss,e.eachLimit=to,e.eachOf=nt,e.eachOfLimit=ze,e.eachOfSeries=Ae,e.eachSeries=Ao,e.ensureAsync=co,e.every=Do,e.everyLimit=js,e.everySeries=fu,e.filter=vc,e.filterLimit=du,e.filterSeries=Ji,e.find=Ir,e.findLimit=In,e.findSeries=Mt,e.flatMap=Vu,e.flatMapLimit=ps,e.flatMapSeries=rt,e.foldl=Hn,e.foldr=mu,e.forEach=Ss,e.forEachLimit=to,e.forEachOf=nt,e.forEachOfLimit=ze,e.forEachOfSeries=Ae,e.forEachSeries=Ao,e.forever=zs,e.groupBy=Zo,e.groupByLimit=Na,e.groupBySeries=Io,e.inject=Hn,e.log=Ll,e.map=jt,e.mapLimit=$o,e.mapSeries=lt,e.mapValues=Ml,e.mapValuesLimit=kp,e.mapValuesSeries=ga,e.memoize=qt,e.nextTick=em,e.parallel=ns,e.parallelLimit=xc,e.priorityQueue=ji,e.queue=Vh,e.race=Bl,e.reduce=Hn,e.reduceRight=mu,e.reflect=bf,e.reflectAll=tm,e.reject=Ra,e.rejectLimit=Wh,e.rejectSeries=Op,e.retry=rl,e.retryable=zu,e.select=vc,e.selectLimit=du,e.selectSeries=Ji,e.seq=jn,e.series=_c,e.setImmediate=y,e.some=Ns,e.someLimit=Gu,e.someSeries=Gs,e.sortBy=ql,e.timeout=Ma,e.times=Fp,e.timesLimit=Oo,e.timesSeries=Kh,e.transform=Ga,e.tryEach=Lp,e.unmemoize=nl,e.until=Ku,e.waterfall=gu,e.whilst=ro,e.wrapSync=v,Object.defineProperty(e,"__esModule",{value:!0})})});var Voe=J(xs=>{"use strict";var K6=require("fs"),O0t=require("os"),N0t=require("net"),QD=require("path"),$oe=Uoe(),Y6=x1(),XD=Y6("portfinder:testPort"),kw=Y6("portfinder:getPort"),R0t=Y6("portfinder:defaultHosts"),Ed={};Ed.testPort=function(e,t){t||(t=e,e={}),e.server=e.server||N0t.createServer(function(){}),XD("entered testPort(): trying",e.host,"port",e.port);function r(){XD("done w/ testPort(): OK",e.host,"port",e.port),e.server.removeListener("error",s),e.server.close(function(){XD("done w/ testPort(): Server closed",e.host,"port",e.port),t(null,e.port)})}function s(a){if(XD("done w/ testPort(): failed",e.host,"w/ port",e.port,"with error",a.code),e.server.removeListener("listening",r),!(a.code=="EADDRINUSE"||a.code=="EACCES"))return t(a);let n=xs.nextPort(e.port);if(n>xs.highestPort)return t(new Error("No open ports available"));Ed.testPort({port:n,host:e.host,server:e.server},t)}e.server.once("error",s),e.server.once("listening",r),e.host?e.server.listen(e.port,e.host):e.server.listen(e.port)};xs.basePort=8e3;xs.setBasePort=function(e){xs.basePort=e};xs.highestPort=65535;xs.setHighestPort=function(e){xs.highestPort=e};xs.basePath="/tmp/portfinder";xs.setBasePath=function(e){xs.basePath=e};Ed.getPort=function(e,t){if(e.port=Number(e.port)||Number(xs.basePort),e.host=e.host||null,e.stopPort=Number(e.stopPort)||Number(xs.highestPort),!e.startPort){if(e.startPort=Number(e.port),e.startPort<0)throw Error("Provided options.startPort("+e.startPort+") is less than 0, which are cannot be bound.");if(e.stopPort<e.startPort)throw Error("Provided options.stopPort("+e.stopPort+") is less than options.startPort ("+e.startPort+")")}e.host&&xs._defaultHosts.indexOf(e.host)===-1&&xs._defaultHosts.push(e.host);let r=[],s;return $oe.eachSeries(xs._defaultHosts,function(a,n){return kw("in eachSeries() iteration callback: host is",a),Ed.testPort({host:a,port:e.port},function(l,f){return l?(kw("in eachSeries() iteration callback testPort() callback","with an err:",l.code),s=a,n(l)):(kw("in eachSeries() iteration callback testPort() callback","with a success for port",f),r.push(f),n())})},function(a){if(a)if(kw("in eachSeries() result callback: err is",a),a.code==="EADDRNOTAVAIL"||a.code==="EINVAL")if(e.host===s){let n="Provided host "+e.host+" could NOT be bound. Please provide a different host address or hostname";return t(Error(n))}else{let n=xs._defaultHosts.indexOf(s);return xs._defaultHosts.splice(n,1),Ed.getPort(e,t)}else return t(a);if(r.sort(function(n,l){return n-l}),kw("in eachSeries() result callback: openPorts is",r),r[0]===r[r.length-1]){if(r[0]<=e.stopPort)return t(null,r[0]);{let n="No open ports found in between "+e.startPort+" and "+e.stopPort;return t(Error(n))}}else return Ed.getPort({port:r.pop(),host:e.host,startPort:e.startPort,stopPort:e.stopPort},t)})};xs.getPort=function(e,t){return typeof e=="function"&&(t=e,e={}),e=e||{},t?Ed.getPort(e,t):new Promise(function(r,s){Ed.getPort(e,function(a,n){if(a)return s(a);r(n)})})};xs.getPortPromise=xs.getPort;Ed.getPorts=function(e,t,r){let s=null;$oe.timesSeries(e,function(a,n){s&&(t.port=xs.nextPort(s)),Ed.getPort(t,function(l,f){l?n(l):(s=f,n(null,f))})},r)};xs.getPorts=function(e,t,r){return typeof t=="function"&&(r=t,t={}),t=t||{},r?Ed.getPorts(e,t,r):new Promise(function(s,a){Ed.getPorts(e,t,function(n,l){if(n)return a(n);s(l)})})};xs.getPortsPromise=xs.getPorts;xs.getSocket=function(e,t){t||(t=e,e={}),e.mod=e.mod||parseInt(755,8),e.path=e.path||xs.basePath+".sock";function r(){K6.stat(e.path,function(n){n?n.code=="ENOENT"?t(null,e.path):t(n):(e.path=xs.nextSocket(e.path),xs.getSocket(e,t))})}function s(n){K6.mkdir(n,{mode:e.mod,recursive:!0},function(l){if(l)return t(l);e.exists=!0,r()})}function a(){let n=QD.dirname(e.path);K6.stat(n,function(l,f){if(l||!f.isDirectory())return s(n);e.exists=!0,r()})}return e.exists?r():a()};xs.nextPort=function(e){return e+1};xs.nextSocket=function(e){let t=QD.dirname(e),r=QD.basename(e,".sock"),s=r.match(/^([a-zA-z]+)(\d*)$/i),a=s[1],n=parseInt(s[2]);return isNaN(n)&&(n=0),n+=1,QD.join(t,a+n+".sock")};xs._defaultHosts=function(){let e={};try{e=O0t.networkInterfaces()}catch(a){if(a.syscall!=="uv_interface_addresses")throw a}let t=Object.keys(e),r="0.0.0.0",s=[r];for(let a=0;a<t.length;a++){let n=e[t[a]];for(let l=0;l<n.length;l++){let f=n[l];s.push(f.address)}}return s.push(null),R0t("exports._defaultHosts is: %o",s),s}()});async function B0t(){return new Promise((e,t)=>{Hoe.setBasePort(1024),Hoe.getPort((r,s)=>{if(r){t(r);return}e(s)})})}function j0t(e,t,r={}){let{state:s}=r,a=`${Cw[e]||Cw.china}${W6}`,n=new URLSearchParams({p:String(t)});return s&&n.set("state",s),`${a}?${n.toString()}`}function q0t(e,t,r){let s=`${Cw[e]||Cw.china}${W6}`,a=new URLSearchParams({p:String(t),from:"console",region:e});r&&a.set("state",r);let n=encodeURIComponent(`${s}?${a.toString()}`);return`${H6[e]||H6.china}?s_url=${n}`}async function U0t(e,t={}){let r=await B0t(),s=(0,zoe.randomUUID)(),a=e==="global"?"global":"china",n;!e||e==="sso"?n=j0t(a,r,{state:s}):n=q0t(e,r,s),Dt("Jumping to login page..."),Dt("Please come back after login."),await BS("login_region",a);let l=await ov(),f=new YD({region:l,port:r,local:t.local,state:s});await f.waitUntilReady(),console.log("If the browser does not open automatically, please visit:"),$z(n),await(0,Woe.default)(n).catch(()=>{Dt("Browser could not be opened automatically. Please open the login URL manually.")});let m=await f.waitForResult();if(!m.success)throw new Error(m.message||"Login failed. Please try again.")}async function $0t(){if(process.env.EDGEONE_PAGES_API_TOKEN){let r=await tx("DescribeUserInfo",{}).catch(s=>{KR("Run whoami command failed.",{message:s.errorMessage,stack:s}),yi("You are not authenticated. Please run `edgeone login`."),process.exit(1)});return r!=null&&r.Code?(yi("Your token is not valid."),!1):!0}if(!await z6())return!1;let t=await tx("DescribeUserInfo",{}).catch(r=>{KR("Run whoami command failed.",{message:r.errorMessage,stack:r}),yi("You are not authenticated. Please run `edgeone login`."),process.exit(1)});return!(t!=null&&t.Code)}async function X6(e){if(!await $0t()){D0()&&(yi("You are not authenticated, and browser login is unavailable in a non-interactive environment."),yi("Please provide a token via `-t <token>` or set the EDGEONE_PAGES_API_TOKEN environment variable."),yi("Get a token at: https://console.cloud.tencent.com/edgeone/pages?tab=settings"),process.exit(1)),Dt(`You need to log in first to run this command.
|
|
@@ -1702,6 +1702,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
1702
1702
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
1703
1703
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
1704
1704
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
1705
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
1706
|
+
var STATE_PREFIX = "state";
|
|
1707
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
1705
1708
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
1706
1709
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
1707
1710
|
"user",
|
|
@@ -1748,6 +1751,15 @@ var MemoryStorageError = class extends Error {
|
|
|
1748
1751
|
this.cause = cause;
|
|
1749
1752
|
}
|
|
1750
1753
|
};
|
|
1754
|
+
var MemoryCorruptError = class extends Error {
|
|
1755
|
+
code = "MemoryCorruptError";
|
|
1756
|
+
cause;
|
|
1757
|
+
constructor(message, cause) {
|
|
1758
|
+
super(message);
|
|
1759
|
+
this.name = "MemoryCorruptError";
|
|
1760
|
+
this.cause = cause;
|
|
1761
|
+
}
|
|
1762
|
+
};
|
|
1751
1763
|
var dynamicImport = new Function(
|
|
1752
1764
|
"specifier",
|
|
1753
1765
|
"return import(specifier);"
|
|
@@ -1755,7 +1767,7 @@ var dynamicImport = new Function(
|
|
|
1755
1767
|
var langchainLoadPromise;
|
|
1756
1768
|
var langchainMessagesPromise;
|
|
1757
1769
|
function isMemoryError(error) {
|
|
1758
|
-
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError;
|
|
1770
|
+
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError || error instanceof MemoryCorruptError;
|
|
1759
1771
|
}
|
|
1760
1772
|
async function wrapStorage(operation) {
|
|
1761
1773
|
try {
|
|
@@ -1923,10 +1935,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
1923
1935
|
return revived;
|
|
1924
1936
|
}
|
|
1925
1937
|
async function deserializeLangGraphJson(value) {
|
|
1926
|
-
|
|
1927
|
-
|
|
1938
|
+
try {
|
|
1939
|
+
if (isLangGraphSerializedJson(value)) {
|
|
1940
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
1941
|
+
}
|
|
1942
|
+
return reviveLangGraphJsonValue(value);
|
|
1943
|
+
} catch (error) {
|
|
1944
|
+
throw new MemoryCorruptError(
|
|
1945
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
1946
|
+
error
|
|
1947
|
+
);
|
|
1928
1948
|
}
|
|
1929
|
-
return reviveLangGraphJsonValue(value);
|
|
1930
1949
|
}
|
|
1931
1950
|
function normalizeStoreLimit(value, fallback) {
|
|
1932
1951
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -2038,6 +2057,115 @@ function validateMessageId(messageId) {
|
|
|
2038
2057
|
throw new MemoryValidationError("messageId is required.");
|
|
2039
2058
|
}
|
|
2040
2059
|
}
|
|
2060
|
+
function validateStateKey(key) {
|
|
2061
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
2062
|
+
throw new MemoryValidationError("state key is required.");
|
|
2063
|
+
}
|
|
2064
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
2065
|
+
throw new MemoryValidationError(
|
|
2066
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
2067
|
+
);
|
|
2068
|
+
}
|
|
2069
|
+
}
|
|
2070
|
+
function assertStateSerializable(value, path = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
2071
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
2072
|
+
return;
|
|
2073
|
+
}
|
|
2074
|
+
if (typeof value === "number") {
|
|
2075
|
+
if (Number.isFinite(value))
|
|
2076
|
+
return;
|
|
2077
|
+
throw new MemoryValidationError(\`\${path} must contain only JSON values.\`);
|
|
2078
|
+
}
|
|
2079
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
2080
|
+
throw new MemoryValidationError(\`\${path} must be JSON serializable.\`);
|
|
2081
|
+
}
|
|
2082
|
+
if (typeof value !== "object") {
|
|
2083
|
+
throw new MemoryValidationError(\`\${path} must be JSON serializable.\`);
|
|
2084
|
+
}
|
|
2085
|
+
if (seen.has(value)) {
|
|
2086
|
+
throw new MemoryValidationError(\`\${path} must not contain circular references.\`);
|
|
2087
|
+
}
|
|
2088
|
+
seen.add(value);
|
|
2089
|
+
if (Array.isArray(value)) {
|
|
2090
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path}[\${index}]\`, seen));
|
|
2091
|
+
} else if (isPlainObject(value)) {
|
|
2092
|
+
for (const [key, item] of Object.entries(value)) {
|
|
2093
|
+
assertStateSerializable(item, \`\${path}.\${key}\`, seen);
|
|
2094
|
+
}
|
|
2095
|
+
} else {
|
|
2096
|
+
throw new MemoryValidationError(\`\${path} must contain only JSON values.\`);
|
|
2097
|
+
}
|
|
2098
|
+
seen.delete(value);
|
|
2099
|
+
}
|
|
2100
|
+
function stateConversationPrefix(conversationId) {
|
|
2101
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
2102
|
+
}
|
|
2103
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
2104
|
+
const requireConversation = () => {
|
|
2105
|
+
if (!boundConversationId) {
|
|
2106
|
+
throw new MemoryValidationError(
|
|
2107
|
+
"State operations require a bound conversationId."
|
|
2108
|
+
);
|
|
2109
|
+
}
|
|
2110
|
+
validateConversationId(boundConversationId);
|
|
2111
|
+
return boundConversationId;
|
|
2112
|
+
};
|
|
2113
|
+
return {
|
|
2114
|
+
async get(key) {
|
|
2115
|
+
validateStateKey(key);
|
|
2116
|
+
const conversationId = requireConversation();
|
|
2117
|
+
return wrapStorage(async () => {
|
|
2118
|
+
const raw = await store.get(
|
|
2119
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
2120
|
+
{ consistency: "strong" }
|
|
2121
|
+
);
|
|
2122
|
+
if (raw === null)
|
|
2123
|
+
return null;
|
|
2124
|
+
if (typeof raw !== "string") {
|
|
2125
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
2126
|
+
}
|
|
2127
|
+
try {
|
|
2128
|
+
return JSON.parse(raw);
|
|
2129
|
+
} catch (error) {
|
|
2130
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error);
|
|
2131
|
+
}
|
|
2132
|
+
});
|
|
2133
|
+
},
|
|
2134
|
+
async set(key, value) {
|
|
2135
|
+
validateStateKey(key);
|
|
2136
|
+
const conversationId = requireConversation();
|
|
2137
|
+
assertStateSerializable(value);
|
|
2138
|
+
let serialized;
|
|
2139
|
+
try {
|
|
2140
|
+
serialized = JSON.stringify(value);
|
|
2141
|
+
} catch (error) {
|
|
2142
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error)}\`);
|
|
2143
|
+
}
|
|
2144
|
+
await wrapStorage(
|
|
2145
|
+
() => store.set(
|
|
2146
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
2147
|
+
serialized
|
|
2148
|
+
)
|
|
2149
|
+
);
|
|
2150
|
+
},
|
|
2151
|
+
async delete(key) {
|
|
2152
|
+
validateStateKey(key);
|
|
2153
|
+
const conversationId = requireConversation();
|
|
2154
|
+
await wrapStorage(
|
|
2155
|
+
() => store.delete(
|
|
2156
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
2157
|
+
)
|
|
2158
|
+
);
|
|
2159
|
+
}
|
|
2160
|
+
};
|
|
2161
|
+
}
|
|
2162
|
+
async function deleteAgentState(store, conversationId) {
|
|
2163
|
+
const listed = await store.list({
|
|
2164
|
+
prefix: stateConversationPrefix(conversationId),
|
|
2165
|
+
consistency: "strong"
|
|
2166
|
+
});
|
|
2167
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
2168
|
+
}
|
|
2041
2169
|
function validateUserId(userId) {
|
|
2042
2170
|
if (userId === void 0) {
|
|
2043
2171
|
return;
|
|
@@ -2170,6 +2298,9 @@ function cursorSortKey(cursor) {
|
|
|
2170
2298
|
const payload = decodeConversationCursor(cursor);
|
|
2171
2299
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
2172
2300
|
}
|
|
2301
|
+
function cursorListCursor(cursor) {
|
|
2302
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
2303
|
+
}
|
|
2173
2304
|
function indexSortKey(key, prefix) {
|
|
2174
2305
|
return key.slice(prefix.length);
|
|
2175
2306
|
}
|
|
@@ -2337,6 +2468,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
2337
2468
|
function claudeProjectPrefix(projectKey) {
|
|
2338
2469
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
2339
2470
|
}
|
|
2471
|
+
function claudeSessionMappingKey(conversationId) {
|
|
2472
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
2473
|
+
}
|
|
2474
|
+
function normalizeClaudeUuid(value) {
|
|
2475
|
+
const trimmed = value.trim().toLowerCase();
|
|
2476
|
+
return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(trimmed) ? trimmed : null;
|
|
2477
|
+
}
|
|
2478
|
+
function claudeSessionIdFromKey(key) {
|
|
2479
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
2480
|
+
if (!key.startsWith(prefix)) {
|
|
2481
|
+
return null;
|
|
2482
|
+
}
|
|
2483
|
+
const segments = key.slice(prefix.length).split("/");
|
|
2484
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
2485
|
+
}
|
|
2486
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
2487
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
2488
|
+
const mapping = await store.get(mappingKey, {
|
|
2489
|
+
consistency: "strong"
|
|
2490
|
+
});
|
|
2491
|
+
let sessionId = null;
|
|
2492
|
+
if (typeof mapping === "string") {
|
|
2493
|
+
sessionId = mapping;
|
|
2494
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
2495
|
+
sessionId = mapping.sessionId;
|
|
2496
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
2497
|
+
sessionId = mapping.session_id;
|
|
2498
|
+
}
|
|
2499
|
+
if (!sessionId) {
|
|
2500
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
2501
|
+
}
|
|
2502
|
+
await store.delete(mappingKey);
|
|
2503
|
+
if (!sessionId) {
|
|
2504
|
+
return;
|
|
2505
|
+
}
|
|
2506
|
+
const listed = await store.list({
|
|
2507
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
2508
|
+
consistency: "strong"
|
|
2509
|
+
});
|
|
2510
|
+
for (const key of listed.keys) {
|
|
2511
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
2512
|
+
await store.delete(key);
|
|
2513
|
+
}
|
|
2514
|
+
}
|
|
2515
|
+
}
|
|
2340
2516
|
function claudePartsPrefix(key) {
|
|
2341
2517
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
2342
2518
|
if (key.subpath) {
|
|
@@ -2374,7 +2550,9 @@ function createClaudeSessionStore(store) {
|
|
|
2374
2550
|
consistency: "strong"
|
|
2375
2551
|
});
|
|
2376
2552
|
if (typeof raw !== "string") {
|
|
2377
|
-
|
|
2553
|
+
throw new MemoryCorruptError(
|
|
2554
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
2555
|
+
);
|
|
2378
2556
|
}
|
|
2379
2557
|
for (const line of raw.split("\\n")) {
|
|
2380
2558
|
const trimmed = line.trim();
|
|
@@ -2383,7 +2561,11 @@ function createClaudeSessionStore(store) {
|
|
|
2383
2561
|
}
|
|
2384
2562
|
try {
|
|
2385
2563
|
entries.push(JSON.parse(trimmed));
|
|
2386
|
-
} catch {
|
|
2564
|
+
} catch (error) {
|
|
2565
|
+
throw new MemoryCorruptError(
|
|
2566
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
2567
|
+
error
|
|
2568
|
+
);
|
|
2387
2569
|
}
|
|
2388
2570
|
}
|
|
2389
2571
|
}
|
|
@@ -2509,8 +2691,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
2509
2691
|
});
|
|
2510
2692
|
}
|
|
2511
2693
|
async function listConversationsFromIndex(store, options) {
|
|
2694
|
+
if (!options.before) {
|
|
2695
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
2696
|
+
if (fast)
|
|
2697
|
+
return fast;
|
|
2698
|
+
}
|
|
2512
2699
|
return listConversationsFromIndexFull(store, options);
|
|
2513
2700
|
}
|
|
2701
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
2702
|
+
var _a, _b;
|
|
2703
|
+
let listCursor = cursorListCursor(options.after);
|
|
2704
|
+
if (options.after && !listCursor) {
|
|
2705
|
+
return null;
|
|
2706
|
+
}
|
|
2707
|
+
const pageItems = [];
|
|
2708
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2709
|
+
let lastCursor;
|
|
2710
|
+
while (pageItems.length < options.limit) {
|
|
2711
|
+
const listed = await store.list({
|
|
2712
|
+
prefix: options.prefix,
|
|
2713
|
+
cursor: listCursor,
|
|
2714
|
+
limit: options.limit - pageItems.length,
|
|
2715
|
+
paginate: false,
|
|
2716
|
+
consistency: "strong"
|
|
2717
|
+
});
|
|
2718
|
+
lastCursor = listed.cursor;
|
|
2719
|
+
if (!listed.keys.length) {
|
|
2720
|
+
break;
|
|
2721
|
+
}
|
|
2722
|
+
const indexItems = [...listed.keys].sort(
|
|
2723
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
2724
|
+
).map((key) => {
|
|
2725
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
2726
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
2727
|
+
return null;
|
|
2728
|
+
}
|
|
2729
|
+
seen.add(conversationId);
|
|
2730
|
+
return {
|
|
2731
|
+
key,
|
|
2732
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
2733
|
+
conversationId
|
|
2734
|
+
};
|
|
2735
|
+
}).filter((item) => item !== null);
|
|
2736
|
+
const metas = await Promise.all(
|
|
2737
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
2738
|
+
);
|
|
2739
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
2740
|
+
const meta = metas[i];
|
|
2741
|
+
if (meta) {
|
|
2742
|
+
pageItems.push({ indexItem: indexItems[i], meta });
|
|
2743
|
+
}
|
|
2744
|
+
}
|
|
2745
|
+
if (!listed.cursor) {
|
|
2746
|
+
break;
|
|
2747
|
+
}
|
|
2748
|
+
listCursor = listed.cursor;
|
|
2749
|
+
}
|
|
2750
|
+
const firstItem = (_a = pageItems[0]) == null ? void 0 : _a.indexItem;
|
|
2751
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
2752
|
+
return {
|
|
2753
|
+
items: pageItems.map((item) => item.meta),
|
|
2754
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
2755
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
2756
|
+
};
|
|
2757
|
+
}
|
|
2514
2758
|
async function listConversationsFromIndexFull(store, options) {
|
|
2515
2759
|
var _a, _b;
|
|
2516
2760
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -2947,6 +3191,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
2947
3191
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
2948
3192
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
2949
3193
|
const langgraphStore = createLangGraphStore(store);
|
|
3194
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
2950
3195
|
let claudeStoreCache = null;
|
|
2951
3196
|
let lastMessageCreatedAt = 0;
|
|
2952
3197
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -3232,8 +3477,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
3232
3477
|
listMessageKeys(store, input.conversationId)
|
|
3233
3478
|
]);
|
|
3234
3479
|
if (!meta) {
|
|
3480
|
+
if (options.conversationId === input.conversationId) {
|
|
3481
|
+
await deleteAgentState(store, input.conversationId);
|
|
3482
|
+
}
|
|
3483
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
3484
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
3235
3485
|
throw new MemoryNotFoundError(
|
|
3236
|
-
"Conversation not found by
|
|
3486
|
+
"Conversation not found by deleteConversation."
|
|
3237
3487
|
);
|
|
3238
3488
|
}
|
|
3239
3489
|
const deleteOps = [];
|
|
@@ -3250,6 +3500,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
3250
3500
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
3251
3501
|
deleteOps.push(store.delete(conversationIndexKey(meta)));
|
|
3252
3502
|
await Promise.all(deleteOps);
|
|
3503
|
+
if (options.conversationId === input.conversationId) {
|
|
3504
|
+
await deleteAgentState(store, input.conversationId);
|
|
3505
|
+
}
|
|
3506
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
3507
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
3253
3508
|
});
|
|
3254
3509
|
},
|
|
3255
3510
|
async updateConversation(input) {
|
|
@@ -3285,14 +3540,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
3285
3540
|
}));
|
|
3286
3541
|
},
|
|
3287
3542
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
3543
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
3544
|
+
if (!boundSessionId) {
|
|
3545
|
+
throw new MemoryValidationError(
|
|
3546
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
3547
|
+
);
|
|
3548
|
+
}
|
|
3288
3549
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
3289
3550
|
return createOpenAISession(
|
|
3290
3551
|
memory,
|
|
3291
|
-
|
|
3552
|
+
boundSessionId,
|
|
3292
3553
|
maxItems,
|
|
3293
3554
|
appendMessagesInternal
|
|
3294
3555
|
);
|
|
3295
3556
|
},
|
|
3557
|
+
async claudeSessionBinding(conversationId) {
|
|
3558
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
3559
|
+
if (!resolvedConversationId) {
|
|
3560
|
+
throw new MemoryValidationError(
|
|
3561
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
3562
|
+
);
|
|
3563
|
+
}
|
|
3564
|
+
validateConversationId(resolvedConversationId);
|
|
3565
|
+
return wrapStorage(async () => {
|
|
3566
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
3567
|
+
const existing = await store.get(
|
|
3568
|
+
mappingKey,
|
|
3569
|
+
{ consistency: "strong" }
|
|
3570
|
+
);
|
|
3571
|
+
if (typeof existing === "string" && existing) {
|
|
3572
|
+
return existing;
|
|
3573
|
+
}
|
|
3574
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
3575
|
+
return String(existing.sessionId || existing.session_id);
|
|
3576
|
+
}
|
|
3577
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
3578
|
+
const binding = {
|
|
3579
|
+
conversationId: resolvedConversationId,
|
|
3580
|
+
sessionId
|
|
3581
|
+
};
|
|
3582
|
+
await store.set(mappingKey, binding);
|
|
3583
|
+
return sessionId;
|
|
3584
|
+
});
|
|
3585
|
+
},
|
|
3296
3586
|
claudeSessionStore() {
|
|
3297
3587
|
if (!claudeStoreCache) {
|
|
3298
3588
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -3300,7 +3590,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
3300
3590
|
return claudeStoreCache;
|
|
3301
3591
|
},
|
|
3302
3592
|
langgraphCheckpointer,
|
|
3303
|
-
langgraphStore
|
|
3593
|
+
langgraphStore,
|
|
3594
|
+
state
|
|
3304
3595
|
};
|
|
3305
3596
|
return memory;
|
|
3306
3597
|
}
|
|
@@ -4203,6 +4494,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
4203
4494
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
4204
4495
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
4205
4496
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
4497
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
4498
|
+
var STATE_PREFIX = "state";
|
|
4499
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
4206
4500
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
4207
4501
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
4208
4502
|
"user",
|
|
@@ -4249,6 +4543,15 @@ var MemoryStorageError = class extends Error {
|
|
|
4249
4543
|
this.cause = cause;
|
|
4250
4544
|
}
|
|
4251
4545
|
};
|
|
4546
|
+
var MemoryCorruptError = class extends Error {
|
|
4547
|
+
code = "MemoryCorruptError";
|
|
4548
|
+
cause;
|
|
4549
|
+
constructor(message, cause) {
|
|
4550
|
+
super(message);
|
|
4551
|
+
this.name = "MemoryCorruptError";
|
|
4552
|
+
this.cause = cause;
|
|
4553
|
+
}
|
|
4554
|
+
};
|
|
4252
4555
|
var dynamicImport = new Function(
|
|
4253
4556
|
"specifier",
|
|
4254
4557
|
"return import(specifier);"
|
|
@@ -4256,7 +4559,7 @@ var dynamicImport = new Function(
|
|
|
4256
4559
|
var langchainLoadPromise;
|
|
4257
4560
|
var langchainMessagesPromise;
|
|
4258
4561
|
function isMemoryError(error) {
|
|
4259
|
-
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError;
|
|
4562
|
+
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError || error instanceof MemoryCorruptError;
|
|
4260
4563
|
}
|
|
4261
4564
|
async function wrapStorage(operation) {
|
|
4262
4565
|
try {
|
|
@@ -4424,10 +4727,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
4424
4727
|
return revived;
|
|
4425
4728
|
}
|
|
4426
4729
|
async function deserializeLangGraphJson(value) {
|
|
4427
|
-
|
|
4428
|
-
|
|
4730
|
+
try {
|
|
4731
|
+
if (isLangGraphSerializedJson(value)) {
|
|
4732
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
4733
|
+
}
|
|
4734
|
+
return reviveLangGraphJsonValue(value);
|
|
4735
|
+
} catch (error) {
|
|
4736
|
+
throw new MemoryCorruptError(
|
|
4737
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
4738
|
+
error
|
|
4739
|
+
);
|
|
4429
4740
|
}
|
|
4430
|
-
return reviveLangGraphJsonValue(value);
|
|
4431
4741
|
}
|
|
4432
4742
|
function normalizeStoreLimit(value, fallback) {
|
|
4433
4743
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -4539,6 +4849,115 @@ function validateMessageId(messageId) {
|
|
|
4539
4849
|
throw new MemoryValidationError("messageId is required.");
|
|
4540
4850
|
}
|
|
4541
4851
|
}
|
|
4852
|
+
function validateStateKey(key) {
|
|
4853
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
4854
|
+
throw new MemoryValidationError("state key is required.");
|
|
4855
|
+
}
|
|
4856
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
4857
|
+
throw new MemoryValidationError(
|
|
4858
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
4859
|
+
);
|
|
4860
|
+
}
|
|
4861
|
+
}
|
|
4862
|
+
function assertStateSerializable(value, path = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
4863
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
4864
|
+
return;
|
|
4865
|
+
}
|
|
4866
|
+
if (typeof value === "number") {
|
|
4867
|
+
if (Number.isFinite(value))
|
|
4868
|
+
return;
|
|
4869
|
+
throw new MemoryValidationError(\`\${path} must contain only JSON values.\`);
|
|
4870
|
+
}
|
|
4871
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
4872
|
+
throw new MemoryValidationError(\`\${path} must be JSON serializable.\`);
|
|
4873
|
+
}
|
|
4874
|
+
if (typeof value !== "object") {
|
|
4875
|
+
throw new MemoryValidationError(\`\${path} must be JSON serializable.\`);
|
|
4876
|
+
}
|
|
4877
|
+
if (seen.has(value)) {
|
|
4878
|
+
throw new MemoryValidationError(\`\${path} must not contain circular references.\`);
|
|
4879
|
+
}
|
|
4880
|
+
seen.add(value);
|
|
4881
|
+
if (Array.isArray(value)) {
|
|
4882
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path}[\${index}]\`, seen));
|
|
4883
|
+
} else if (isPlainObject(value)) {
|
|
4884
|
+
for (const [key, item] of Object.entries(value)) {
|
|
4885
|
+
assertStateSerializable(item, \`\${path}.\${key}\`, seen);
|
|
4886
|
+
}
|
|
4887
|
+
} else {
|
|
4888
|
+
throw new MemoryValidationError(\`\${path} must contain only JSON values.\`);
|
|
4889
|
+
}
|
|
4890
|
+
seen.delete(value);
|
|
4891
|
+
}
|
|
4892
|
+
function stateConversationPrefix(conversationId) {
|
|
4893
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
4894
|
+
}
|
|
4895
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
4896
|
+
const requireConversation = () => {
|
|
4897
|
+
if (!boundConversationId) {
|
|
4898
|
+
throw new MemoryValidationError(
|
|
4899
|
+
"State operations require a bound conversationId."
|
|
4900
|
+
);
|
|
4901
|
+
}
|
|
4902
|
+
validateConversationId(boundConversationId);
|
|
4903
|
+
return boundConversationId;
|
|
4904
|
+
};
|
|
4905
|
+
return {
|
|
4906
|
+
async get(key) {
|
|
4907
|
+
validateStateKey(key);
|
|
4908
|
+
const conversationId = requireConversation();
|
|
4909
|
+
return wrapStorage(async () => {
|
|
4910
|
+
const raw = await store.get(
|
|
4911
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
4912
|
+
{ consistency: "strong" }
|
|
4913
|
+
);
|
|
4914
|
+
if (raw === null)
|
|
4915
|
+
return null;
|
|
4916
|
+
if (typeof raw !== "string") {
|
|
4917
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
4918
|
+
}
|
|
4919
|
+
try {
|
|
4920
|
+
return JSON.parse(raw);
|
|
4921
|
+
} catch (error) {
|
|
4922
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error);
|
|
4923
|
+
}
|
|
4924
|
+
});
|
|
4925
|
+
},
|
|
4926
|
+
async set(key, value) {
|
|
4927
|
+
validateStateKey(key);
|
|
4928
|
+
const conversationId = requireConversation();
|
|
4929
|
+
assertStateSerializable(value);
|
|
4930
|
+
let serialized;
|
|
4931
|
+
try {
|
|
4932
|
+
serialized = JSON.stringify(value);
|
|
4933
|
+
} catch (error) {
|
|
4934
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error)}\`);
|
|
4935
|
+
}
|
|
4936
|
+
await wrapStorage(
|
|
4937
|
+
() => store.set(
|
|
4938
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
4939
|
+
serialized
|
|
4940
|
+
)
|
|
4941
|
+
);
|
|
4942
|
+
},
|
|
4943
|
+
async delete(key) {
|
|
4944
|
+
validateStateKey(key);
|
|
4945
|
+
const conversationId = requireConversation();
|
|
4946
|
+
await wrapStorage(
|
|
4947
|
+
() => store.delete(
|
|
4948
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
4949
|
+
)
|
|
4950
|
+
);
|
|
4951
|
+
}
|
|
4952
|
+
};
|
|
4953
|
+
}
|
|
4954
|
+
async function deleteAgentState(store, conversationId) {
|
|
4955
|
+
const listed = await store.list({
|
|
4956
|
+
prefix: stateConversationPrefix(conversationId),
|
|
4957
|
+
consistency: "strong"
|
|
4958
|
+
});
|
|
4959
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
4960
|
+
}
|
|
4542
4961
|
function validateUserId(userId) {
|
|
4543
4962
|
if (userId === void 0) {
|
|
4544
4963
|
return;
|
|
@@ -4671,6 +5090,9 @@ function cursorSortKey(cursor) {
|
|
|
4671
5090
|
const payload = decodeConversationCursor(cursor);
|
|
4672
5091
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
4673
5092
|
}
|
|
5093
|
+
function cursorListCursor(cursor) {
|
|
5094
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
5095
|
+
}
|
|
4674
5096
|
function indexSortKey(key, prefix) {
|
|
4675
5097
|
return key.slice(prefix.length);
|
|
4676
5098
|
}
|
|
@@ -4838,6 +5260,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
4838
5260
|
function claudeProjectPrefix(projectKey) {
|
|
4839
5261
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
4840
5262
|
}
|
|
5263
|
+
function claudeSessionMappingKey(conversationId) {
|
|
5264
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
5265
|
+
}
|
|
5266
|
+
function normalizeClaudeUuid(value) {
|
|
5267
|
+
const trimmed = value.trim().toLowerCase();
|
|
5268
|
+
return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(trimmed) ? trimmed : null;
|
|
5269
|
+
}
|
|
5270
|
+
function claudeSessionIdFromKey(key) {
|
|
5271
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
5272
|
+
if (!key.startsWith(prefix)) {
|
|
5273
|
+
return null;
|
|
5274
|
+
}
|
|
5275
|
+
const segments = key.slice(prefix.length).split("/");
|
|
5276
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
5277
|
+
}
|
|
5278
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
5279
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
5280
|
+
const mapping = await store.get(mappingKey, {
|
|
5281
|
+
consistency: "strong"
|
|
5282
|
+
});
|
|
5283
|
+
let sessionId = null;
|
|
5284
|
+
if (typeof mapping === "string") {
|
|
5285
|
+
sessionId = mapping;
|
|
5286
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
5287
|
+
sessionId = mapping.sessionId;
|
|
5288
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
5289
|
+
sessionId = mapping.session_id;
|
|
5290
|
+
}
|
|
5291
|
+
if (!sessionId) {
|
|
5292
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
5293
|
+
}
|
|
5294
|
+
await store.delete(mappingKey);
|
|
5295
|
+
if (!sessionId) {
|
|
5296
|
+
return;
|
|
5297
|
+
}
|
|
5298
|
+
const listed = await store.list({
|
|
5299
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
5300
|
+
consistency: "strong"
|
|
5301
|
+
});
|
|
5302
|
+
for (const key of listed.keys) {
|
|
5303
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
5304
|
+
await store.delete(key);
|
|
5305
|
+
}
|
|
5306
|
+
}
|
|
5307
|
+
}
|
|
4841
5308
|
function claudePartsPrefix(key) {
|
|
4842
5309
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
4843
5310
|
if (key.subpath) {
|
|
@@ -4875,7 +5342,9 @@ function createClaudeSessionStore(store) {
|
|
|
4875
5342
|
consistency: "strong"
|
|
4876
5343
|
});
|
|
4877
5344
|
if (typeof raw !== "string") {
|
|
4878
|
-
|
|
5345
|
+
throw new MemoryCorruptError(
|
|
5346
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
5347
|
+
);
|
|
4879
5348
|
}
|
|
4880
5349
|
for (const line of raw.split("\\n")) {
|
|
4881
5350
|
const trimmed = line.trim();
|
|
@@ -4884,7 +5353,11 @@ function createClaudeSessionStore(store) {
|
|
|
4884
5353
|
}
|
|
4885
5354
|
try {
|
|
4886
5355
|
entries.push(JSON.parse(trimmed));
|
|
4887
|
-
} catch {
|
|
5356
|
+
} catch (error) {
|
|
5357
|
+
throw new MemoryCorruptError(
|
|
5358
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
5359
|
+
error
|
|
5360
|
+
);
|
|
4888
5361
|
}
|
|
4889
5362
|
}
|
|
4890
5363
|
}
|
|
@@ -5010,8 +5483,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
5010
5483
|
});
|
|
5011
5484
|
}
|
|
5012
5485
|
async function listConversationsFromIndex(store, options) {
|
|
5486
|
+
if (!options.before) {
|
|
5487
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
5488
|
+
if (fast)
|
|
5489
|
+
return fast;
|
|
5490
|
+
}
|
|
5013
5491
|
return listConversationsFromIndexFull(store, options);
|
|
5014
5492
|
}
|
|
5493
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
5494
|
+
var _a, _b;
|
|
5495
|
+
let listCursor = cursorListCursor(options.after);
|
|
5496
|
+
if (options.after && !listCursor) {
|
|
5497
|
+
return null;
|
|
5498
|
+
}
|
|
5499
|
+
const pageItems = [];
|
|
5500
|
+
const seen = /* @__PURE__ */ new Set();
|
|
5501
|
+
let lastCursor;
|
|
5502
|
+
while (pageItems.length < options.limit) {
|
|
5503
|
+
const listed = await store.list({
|
|
5504
|
+
prefix: options.prefix,
|
|
5505
|
+
cursor: listCursor,
|
|
5506
|
+
limit: options.limit - pageItems.length,
|
|
5507
|
+
paginate: false,
|
|
5508
|
+
consistency: "strong"
|
|
5509
|
+
});
|
|
5510
|
+
lastCursor = listed.cursor;
|
|
5511
|
+
if (!listed.keys.length) {
|
|
5512
|
+
break;
|
|
5513
|
+
}
|
|
5514
|
+
const indexItems = [...listed.keys].sort(
|
|
5515
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
5516
|
+
).map((key) => {
|
|
5517
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
5518
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
5519
|
+
return null;
|
|
5520
|
+
}
|
|
5521
|
+
seen.add(conversationId);
|
|
5522
|
+
return {
|
|
5523
|
+
key,
|
|
5524
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
5525
|
+
conversationId
|
|
5526
|
+
};
|
|
5527
|
+
}).filter((item) => item !== null);
|
|
5528
|
+
const metas = await Promise.all(
|
|
5529
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
5530
|
+
);
|
|
5531
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
5532
|
+
const meta = metas[i];
|
|
5533
|
+
if (meta) {
|
|
5534
|
+
pageItems.push({ indexItem: indexItems[i], meta });
|
|
5535
|
+
}
|
|
5536
|
+
}
|
|
5537
|
+
if (!listed.cursor) {
|
|
5538
|
+
break;
|
|
5539
|
+
}
|
|
5540
|
+
listCursor = listed.cursor;
|
|
5541
|
+
}
|
|
5542
|
+
const firstItem = (_a = pageItems[0]) == null ? void 0 : _a.indexItem;
|
|
5543
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
5544
|
+
return {
|
|
5545
|
+
items: pageItems.map((item) => item.meta),
|
|
5546
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
5547
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
5548
|
+
};
|
|
5549
|
+
}
|
|
5015
5550
|
async function listConversationsFromIndexFull(store, options) {
|
|
5016
5551
|
var _a, _b;
|
|
5017
5552
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -5448,6 +5983,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
5448
5983
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
5449
5984
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
5450
5985
|
const langgraphStore = createLangGraphStore(store);
|
|
5986
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
5451
5987
|
let claudeStoreCache = null;
|
|
5452
5988
|
let lastMessageCreatedAt = 0;
|
|
5453
5989
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -5733,8 +6269,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
5733
6269
|
listMessageKeys(store, input.conversationId)
|
|
5734
6270
|
]);
|
|
5735
6271
|
if (!meta) {
|
|
6272
|
+
if (options.conversationId === input.conversationId) {
|
|
6273
|
+
await deleteAgentState(store, input.conversationId);
|
|
6274
|
+
}
|
|
6275
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
6276
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
5736
6277
|
throw new MemoryNotFoundError(
|
|
5737
|
-
"Conversation not found by
|
|
6278
|
+
"Conversation not found by deleteConversation."
|
|
5738
6279
|
);
|
|
5739
6280
|
}
|
|
5740
6281
|
const deleteOps = [];
|
|
@@ -5751,6 +6292,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
5751
6292
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
5752
6293
|
deleteOps.push(store.delete(conversationIndexKey(meta)));
|
|
5753
6294
|
await Promise.all(deleteOps);
|
|
6295
|
+
if (options.conversationId === input.conversationId) {
|
|
6296
|
+
await deleteAgentState(store, input.conversationId);
|
|
6297
|
+
}
|
|
6298
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
6299
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
5754
6300
|
});
|
|
5755
6301
|
},
|
|
5756
6302
|
async updateConversation(input) {
|
|
@@ -5786,14 +6332,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
5786
6332
|
}));
|
|
5787
6333
|
},
|
|
5788
6334
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
6335
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
6336
|
+
if (!boundSessionId) {
|
|
6337
|
+
throw new MemoryValidationError(
|
|
6338
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
6339
|
+
);
|
|
6340
|
+
}
|
|
5789
6341
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
5790
6342
|
return createOpenAISession(
|
|
5791
6343
|
memory,
|
|
5792
|
-
|
|
6344
|
+
boundSessionId,
|
|
5793
6345
|
maxItems,
|
|
5794
6346
|
appendMessagesInternal
|
|
5795
6347
|
);
|
|
5796
6348
|
},
|
|
6349
|
+
async claudeSessionBinding(conversationId) {
|
|
6350
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
6351
|
+
if (!resolvedConversationId) {
|
|
6352
|
+
throw new MemoryValidationError(
|
|
6353
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
6354
|
+
);
|
|
6355
|
+
}
|
|
6356
|
+
validateConversationId(resolvedConversationId);
|
|
6357
|
+
return wrapStorage(async () => {
|
|
6358
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
6359
|
+
const existing = await store.get(
|
|
6360
|
+
mappingKey,
|
|
6361
|
+
{ consistency: "strong" }
|
|
6362
|
+
);
|
|
6363
|
+
if (typeof existing === "string" && existing) {
|
|
6364
|
+
return existing;
|
|
6365
|
+
}
|
|
6366
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
6367
|
+
return String(existing.sessionId || existing.session_id);
|
|
6368
|
+
}
|
|
6369
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
6370
|
+
const binding = {
|
|
6371
|
+
conversationId: resolvedConversationId,
|
|
6372
|
+
sessionId
|
|
6373
|
+
};
|
|
6374
|
+
await store.set(mappingKey, binding);
|
|
6375
|
+
return sessionId;
|
|
6376
|
+
});
|
|
6377
|
+
},
|
|
5797
6378
|
claudeSessionStore() {
|
|
5798
6379
|
if (!claudeStoreCache) {
|
|
5799
6380
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -5801,7 +6382,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
5801
6382
|
return claudeStoreCache;
|
|
5802
6383
|
},
|
|
5803
6384
|
langgraphCheckpointer,
|
|
5804
|
-
langgraphStore
|
|
6385
|
+
langgraphStore,
|
|
6386
|
+
state
|
|
5805
6387
|
};
|
|
5806
6388
|
return memory;
|
|
5807
6389
|
}
|
|
@@ -8628,6 +9210,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
8628
9210
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
8629
9211
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
8630
9212
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
9213
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
9214
|
+
var STATE_PREFIX = "state";
|
|
9215
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
8631
9216
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
8632
9217
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
8633
9218
|
"user",
|
|
@@ -8674,6 +9259,15 @@ var MemoryStorageError = class extends Error {
|
|
|
8674
9259
|
this.cause = cause;
|
|
8675
9260
|
}
|
|
8676
9261
|
};
|
|
9262
|
+
var MemoryCorruptError = class extends Error {
|
|
9263
|
+
code = "MemoryCorruptError";
|
|
9264
|
+
cause;
|
|
9265
|
+
constructor(message, cause) {
|
|
9266
|
+
super(message);
|
|
9267
|
+
this.name = "MemoryCorruptError";
|
|
9268
|
+
this.cause = cause;
|
|
9269
|
+
}
|
|
9270
|
+
};
|
|
8677
9271
|
var dynamicImport = new Function(
|
|
8678
9272
|
"specifier",
|
|
8679
9273
|
"return import(specifier);"
|
|
@@ -8681,7 +9275,7 @@ var dynamicImport = new Function(
|
|
|
8681
9275
|
var langchainLoadPromise;
|
|
8682
9276
|
var langchainMessagesPromise;
|
|
8683
9277
|
function isMemoryError(error) {
|
|
8684
|
-
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError;
|
|
9278
|
+
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError || error instanceof MemoryCorruptError;
|
|
8685
9279
|
}
|
|
8686
9280
|
async function wrapStorage(operation) {
|
|
8687
9281
|
try {
|
|
@@ -8849,10 +9443,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
8849
9443
|
return revived;
|
|
8850
9444
|
}
|
|
8851
9445
|
async function deserializeLangGraphJson(value) {
|
|
8852
|
-
|
|
8853
|
-
|
|
9446
|
+
try {
|
|
9447
|
+
if (isLangGraphSerializedJson(value)) {
|
|
9448
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
9449
|
+
}
|
|
9450
|
+
return reviveLangGraphJsonValue(value);
|
|
9451
|
+
} catch (error) {
|
|
9452
|
+
throw new MemoryCorruptError(
|
|
9453
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
9454
|
+
error
|
|
9455
|
+
);
|
|
8854
9456
|
}
|
|
8855
|
-
return reviveLangGraphJsonValue(value);
|
|
8856
9457
|
}
|
|
8857
9458
|
function normalizeStoreLimit(value, fallback) {
|
|
8858
9459
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -8964,6 +9565,115 @@ function validateMessageId(messageId) {
|
|
|
8964
9565
|
throw new MemoryValidationError("messageId is required.");
|
|
8965
9566
|
}
|
|
8966
9567
|
}
|
|
9568
|
+
function validateStateKey(key) {
|
|
9569
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
9570
|
+
throw new MemoryValidationError("state key is required.");
|
|
9571
|
+
}
|
|
9572
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
9573
|
+
throw new MemoryValidationError(
|
|
9574
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
9575
|
+
);
|
|
9576
|
+
}
|
|
9577
|
+
}
|
|
9578
|
+
function assertStateSerializable(value, path2 = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
9579
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
9580
|
+
return;
|
|
9581
|
+
}
|
|
9582
|
+
if (typeof value === "number") {
|
|
9583
|
+
if (Number.isFinite(value))
|
|
9584
|
+
return;
|
|
9585
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
9586
|
+
}
|
|
9587
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
9588
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
9589
|
+
}
|
|
9590
|
+
if (typeof value !== "object") {
|
|
9591
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
9592
|
+
}
|
|
9593
|
+
if (seen.has(value)) {
|
|
9594
|
+
throw new MemoryValidationError(\`\${path2} must not contain circular references.\`);
|
|
9595
|
+
}
|
|
9596
|
+
seen.add(value);
|
|
9597
|
+
if (Array.isArray(value)) {
|
|
9598
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path2}[\${index}]\`, seen));
|
|
9599
|
+
} else if (isPlainObject(value)) {
|
|
9600
|
+
for (const [key, item] of Object.entries(value)) {
|
|
9601
|
+
assertStateSerializable(item, \`\${path2}.\${key}\`, seen);
|
|
9602
|
+
}
|
|
9603
|
+
} else {
|
|
9604
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
9605
|
+
}
|
|
9606
|
+
seen.delete(value);
|
|
9607
|
+
}
|
|
9608
|
+
function stateConversationPrefix(conversationId) {
|
|
9609
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
9610
|
+
}
|
|
9611
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
9612
|
+
const requireConversation = () => {
|
|
9613
|
+
if (!boundConversationId) {
|
|
9614
|
+
throw new MemoryValidationError(
|
|
9615
|
+
"State operations require a bound conversationId."
|
|
9616
|
+
);
|
|
9617
|
+
}
|
|
9618
|
+
validateConversationId(boundConversationId);
|
|
9619
|
+
return boundConversationId;
|
|
9620
|
+
};
|
|
9621
|
+
return {
|
|
9622
|
+
async get(key) {
|
|
9623
|
+
validateStateKey(key);
|
|
9624
|
+
const conversationId = requireConversation();
|
|
9625
|
+
return wrapStorage(async () => {
|
|
9626
|
+
const raw = await store.get(
|
|
9627
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
9628
|
+
{ consistency: "strong" }
|
|
9629
|
+
);
|
|
9630
|
+
if (raw === null)
|
|
9631
|
+
return null;
|
|
9632
|
+
if (typeof raw !== "string") {
|
|
9633
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
9634
|
+
}
|
|
9635
|
+
try {
|
|
9636
|
+
return JSON.parse(raw);
|
|
9637
|
+
} catch (error) {
|
|
9638
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error);
|
|
9639
|
+
}
|
|
9640
|
+
});
|
|
9641
|
+
},
|
|
9642
|
+
async set(key, value) {
|
|
9643
|
+
validateStateKey(key);
|
|
9644
|
+
const conversationId = requireConversation();
|
|
9645
|
+
assertStateSerializable(value);
|
|
9646
|
+
let serialized;
|
|
9647
|
+
try {
|
|
9648
|
+
serialized = JSON.stringify(value);
|
|
9649
|
+
} catch (error) {
|
|
9650
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error)}\`);
|
|
9651
|
+
}
|
|
9652
|
+
await wrapStorage(
|
|
9653
|
+
() => store.set(
|
|
9654
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
9655
|
+
serialized
|
|
9656
|
+
)
|
|
9657
|
+
);
|
|
9658
|
+
},
|
|
9659
|
+
async delete(key) {
|
|
9660
|
+
validateStateKey(key);
|
|
9661
|
+
const conversationId = requireConversation();
|
|
9662
|
+
await wrapStorage(
|
|
9663
|
+
() => store.delete(
|
|
9664
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
9665
|
+
)
|
|
9666
|
+
);
|
|
9667
|
+
}
|
|
9668
|
+
};
|
|
9669
|
+
}
|
|
9670
|
+
async function deleteAgentState(store, conversationId) {
|
|
9671
|
+
const listed = await store.list({
|
|
9672
|
+
prefix: stateConversationPrefix(conversationId),
|
|
9673
|
+
consistency: "strong"
|
|
9674
|
+
});
|
|
9675
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
9676
|
+
}
|
|
8967
9677
|
function validateUserId(userId) {
|
|
8968
9678
|
if (userId === void 0) {
|
|
8969
9679
|
return;
|
|
@@ -9096,6 +9806,9 @@ function cursorSortKey(cursor) {
|
|
|
9096
9806
|
const payload = decodeConversationCursor(cursor);
|
|
9097
9807
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
9098
9808
|
}
|
|
9809
|
+
function cursorListCursor(cursor) {
|
|
9810
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
9811
|
+
}
|
|
9099
9812
|
function indexSortKey(key, prefix) {
|
|
9100
9813
|
return key.slice(prefix.length);
|
|
9101
9814
|
}
|
|
@@ -9263,6 +9976,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
9263
9976
|
function claudeProjectPrefix(projectKey) {
|
|
9264
9977
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
9265
9978
|
}
|
|
9979
|
+
function claudeSessionMappingKey(conversationId) {
|
|
9980
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
9981
|
+
}
|
|
9982
|
+
function normalizeClaudeUuid(value) {
|
|
9983
|
+
const trimmed = value.trim().toLowerCase();
|
|
9984
|
+
return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(trimmed) ? trimmed : null;
|
|
9985
|
+
}
|
|
9986
|
+
function claudeSessionIdFromKey(key) {
|
|
9987
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
9988
|
+
if (!key.startsWith(prefix)) {
|
|
9989
|
+
return null;
|
|
9990
|
+
}
|
|
9991
|
+
const segments = key.slice(prefix.length).split("/");
|
|
9992
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
9993
|
+
}
|
|
9994
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
9995
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
9996
|
+
const mapping = await store.get(mappingKey, {
|
|
9997
|
+
consistency: "strong"
|
|
9998
|
+
});
|
|
9999
|
+
let sessionId = null;
|
|
10000
|
+
if (typeof mapping === "string") {
|
|
10001
|
+
sessionId = mapping;
|
|
10002
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
10003
|
+
sessionId = mapping.sessionId;
|
|
10004
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
10005
|
+
sessionId = mapping.session_id;
|
|
10006
|
+
}
|
|
10007
|
+
if (!sessionId) {
|
|
10008
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
10009
|
+
}
|
|
10010
|
+
await store.delete(mappingKey);
|
|
10011
|
+
if (!sessionId) {
|
|
10012
|
+
return;
|
|
10013
|
+
}
|
|
10014
|
+
const listed = await store.list({
|
|
10015
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
10016
|
+
consistency: "strong"
|
|
10017
|
+
});
|
|
10018
|
+
for (const key of listed.keys) {
|
|
10019
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
10020
|
+
await store.delete(key);
|
|
10021
|
+
}
|
|
10022
|
+
}
|
|
10023
|
+
}
|
|
9266
10024
|
function claudePartsPrefix(key) {
|
|
9267
10025
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
9268
10026
|
if (key.subpath) {
|
|
@@ -9300,7 +10058,9 @@ function createClaudeSessionStore(store) {
|
|
|
9300
10058
|
consistency: "strong"
|
|
9301
10059
|
});
|
|
9302
10060
|
if (typeof raw !== "string") {
|
|
9303
|
-
|
|
10061
|
+
throw new MemoryCorruptError(
|
|
10062
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
10063
|
+
);
|
|
9304
10064
|
}
|
|
9305
10065
|
for (const line of raw.split("\\n")) {
|
|
9306
10066
|
const trimmed = line.trim();
|
|
@@ -9309,7 +10069,11 @@ function createClaudeSessionStore(store) {
|
|
|
9309
10069
|
}
|
|
9310
10070
|
try {
|
|
9311
10071
|
entries.push(JSON.parse(trimmed));
|
|
9312
|
-
} catch {
|
|
10072
|
+
} catch (error) {
|
|
10073
|
+
throw new MemoryCorruptError(
|
|
10074
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
10075
|
+
error
|
|
10076
|
+
);
|
|
9313
10077
|
}
|
|
9314
10078
|
}
|
|
9315
10079
|
}
|
|
@@ -9435,8 +10199,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
9435
10199
|
});
|
|
9436
10200
|
}
|
|
9437
10201
|
async function listConversationsFromIndex(store, options) {
|
|
10202
|
+
if (!options.before) {
|
|
10203
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
10204
|
+
if (fast)
|
|
10205
|
+
return fast;
|
|
10206
|
+
}
|
|
9438
10207
|
return listConversationsFromIndexFull(store, options);
|
|
9439
10208
|
}
|
|
10209
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
10210
|
+
var _a, _b;
|
|
10211
|
+
let listCursor = cursorListCursor(options.after);
|
|
10212
|
+
if (options.after && !listCursor) {
|
|
10213
|
+
return null;
|
|
10214
|
+
}
|
|
10215
|
+
const pageItems = [];
|
|
10216
|
+
const seen = /* @__PURE__ */ new Set();
|
|
10217
|
+
let lastCursor;
|
|
10218
|
+
while (pageItems.length < options.limit) {
|
|
10219
|
+
const listed = await store.list({
|
|
10220
|
+
prefix: options.prefix,
|
|
10221
|
+
cursor: listCursor,
|
|
10222
|
+
limit: options.limit - pageItems.length,
|
|
10223
|
+
paginate: false,
|
|
10224
|
+
consistency: "strong"
|
|
10225
|
+
});
|
|
10226
|
+
lastCursor = listed.cursor;
|
|
10227
|
+
if (!listed.keys.length) {
|
|
10228
|
+
break;
|
|
10229
|
+
}
|
|
10230
|
+
const indexItems = [...listed.keys].sort(
|
|
10231
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
10232
|
+
).map((key) => {
|
|
10233
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
10234
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
10235
|
+
return null;
|
|
10236
|
+
}
|
|
10237
|
+
seen.add(conversationId);
|
|
10238
|
+
return {
|
|
10239
|
+
key,
|
|
10240
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
10241
|
+
conversationId
|
|
10242
|
+
};
|
|
10243
|
+
}).filter((item) => item !== null);
|
|
10244
|
+
const metas = await Promise.all(
|
|
10245
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
10246
|
+
);
|
|
10247
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
10248
|
+
const meta = metas[i];
|
|
10249
|
+
if (meta) {
|
|
10250
|
+
pageItems.push({ indexItem: indexItems[i], meta });
|
|
10251
|
+
}
|
|
10252
|
+
}
|
|
10253
|
+
if (!listed.cursor) {
|
|
10254
|
+
break;
|
|
10255
|
+
}
|
|
10256
|
+
listCursor = listed.cursor;
|
|
10257
|
+
}
|
|
10258
|
+
const firstItem = (_a = pageItems[0]) == null ? void 0 : _a.indexItem;
|
|
10259
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
10260
|
+
return {
|
|
10261
|
+
items: pageItems.map((item) => item.meta),
|
|
10262
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
10263
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
10264
|
+
};
|
|
10265
|
+
}
|
|
9440
10266
|
async function listConversationsFromIndexFull(store, options) {
|
|
9441
10267
|
var _a, _b;
|
|
9442
10268
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -9873,6 +10699,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
9873
10699
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
9874
10700
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
9875
10701
|
const langgraphStore = createLangGraphStore(store);
|
|
10702
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
9876
10703
|
let claudeStoreCache = null;
|
|
9877
10704
|
let lastMessageCreatedAt = 0;
|
|
9878
10705
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -10158,8 +10985,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
10158
10985
|
listMessageKeys(store, input.conversationId)
|
|
10159
10986
|
]);
|
|
10160
10987
|
if (!meta) {
|
|
10988
|
+
if (options.conversationId === input.conversationId) {
|
|
10989
|
+
await deleteAgentState(store, input.conversationId);
|
|
10990
|
+
}
|
|
10991
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
10992
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
10161
10993
|
throw new MemoryNotFoundError(
|
|
10162
|
-
"Conversation not found by
|
|
10994
|
+
"Conversation not found by deleteConversation."
|
|
10163
10995
|
);
|
|
10164
10996
|
}
|
|
10165
10997
|
const deleteOps = [];
|
|
@@ -10176,6 +11008,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
10176
11008
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
10177
11009
|
deleteOps.push(store.delete(conversationIndexKey(meta)));
|
|
10178
11010
|
await Promise.all(deleteOps);
|
|
11011
|
+
if (options.conversationId === input.conversationId) {
|
|
11012
|
+
await deleteAgentState(store, input.conversationId);
|
|
11013
|
+
}
|
|
11014
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
11015
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
10179
11016
|
});
|
|
10180
11017
|
},
|
|
10181
11018
|
async updateConversation(input) {
|
|
@@ -10211,14 +11048,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
10211
11048
|
}));
|
|
10212
11049
|
},
|
|
10213
11050
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
11051
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
11052
|
+
if (!boundSessionId) {
|
|
11053
|
+
throw new MemoryValidationError(
|
|
11054
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
11055
|
+
);
|
|
11056
|
+
}
|
|
10214
11057
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
10215
11058
|
return createOpenAISession(
|
|
10216
11059
|
memory,
|
|
10217
|
-
|
|
11060
|
+
boundSessionId,
|
|
10218
11061
|
maxItems,
|
|
10219
11062
|
appendMessagesInternal
|
|
10220
11063
|
);
|
|
10221
11064
|
},
|
|
11065
|
+
async claudeSessionBinding(conversationId) {
|
|
11066
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
11067
|
+
if (!resolvedConversationId) {
|
|
11068
|
+
throw new MemoryValidationError(
|
|
11069
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
11070
|
+
);
|
|
11071
|
+
}
|
|
11072
|
+
validateConversationId(resolvedConversationId);
|
|
11073
|
+
return wrapStorage(async () => {
|
|
11074
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
11075
|
+
const existing = await store.get(
|
|
11076
|
+
mappingKey,
|
|
11077
|
+
{ consistency: "strong" }
|
|
11078
|
+
);
|
|
11079
|
+
if (typeof existing === "string" && existing) {
|
|
11080
|
+
return existing;
|
|
11081
|
+
}
|
|
11082
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
11083
|
+
return String(existing.sessionId || existing.session_id);
|
|
11084
|
+
}
|
|
11085
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
11086
|
+
const binding = {
|
|
11087
|
+
conversationId: resolvedConversationId,
|
|
11088
|
+
sessionId
|
|
11089
|
+
};
|
|
11090
|
+
await store.set(mappingKey, binding);
|
|
11091
|
+
return sessionId;
|
|
11092
|
+
});
|
|
11093
|
+
},
|
|
10222
11094
|
claudeSessionStore() {
|
|
10223
11095
|
if (!claudeStoreCache) {
|
|
10224
11096
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -10226,7 +11098,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
10226
11098
|
return claudeStoreCache;
|
|
10227
11099
|
},
|
|
10228
11100
|
langgraphCheckpointer,
|
|
10229
|
-
langgraphStore
|
|
11101
|
+
langgraphStore,
|
|
11102
|
+
state
|
|
10230
11103
|
};
|
|
10231
11104
|
return memory;
|
|
10232
11105
|
}
|
|
@@ -10907,6 +11780,7 @@ function createAgentRuntime(options) {
|
|
|
10907
11780
|
env,
|
|
10908
11781
|
store: createAgentMemory(createLazyStore(resolveMemoryStore), {
|
|
10909
11782
|
runId: run_id,
|
|
11783
|
+
conversationId: conversation_id,
|
|
10910
11784
|
maxMessagesPerConversation: (_a = defaults == null ? void 0 : defaults.memoryQuota) == null ? void 0 : _a.maxMessagesPerConversation
|
|
10911
11785
|
}),
|
|
10912
11786
|
agents: {
|
|
@@ -23441,6 +24315,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
23441
24315
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
23442
24316
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
23443
24317
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
24318
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
24319
|
+
var STATE_PREFIX = "state";
|
|
24320
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
23444
24321
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
23445
24322
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
23446
24323
|
"user",
|
|
@@ -23487,6 +24364,15 @@ var MemoryStorageError = class extends Error {
|
|
|
23487
24364
|
this.cause = cause;
|
|
23488
24365
|
}
|
|
23489
24366
|
};
|
|
24367
|
+
var MemoryCorruptError = class extends Error {
|
|
24368
|
+
code = "MemoryCorruptError";
|
|
24369
|
+
cause;
|
|
24370
|
+
constructor(message, cause) {
|
|
24371
|
+
super(message);
|
|
24372
|
+
this.name = "MemoryCorruptError";
|
|
24373
|
+
this.cause = cause;
|
|
24374
|
+
}
|
|
24375
|
+
};
|
|
23490
24376
|
var dynamicImport = new Function(
|
|
23491
24377
|
"specifier",
|
|
23492
24378
|
"return import(specifier);"
|
|
@@ -23494,7 +24380,7 @@ var dynamicImport = new Function(
|
|
|
23494
24380
|
var langchainLoadPromise;
|
|
23495
24381
|
var langchainMessagesPromise;
|
|
23496
24382
|
function isMemoryError(error51) {
|
|
23497
|
-
return error51 instanceof MemoryValidationError || error51 instanceof MemoryNotFoundError || error51 instanceof MemoryQuotaExceededError || error51 instanceof MemoryStorageError;
|
|
24383
|
+
return error51 instanceof MemoryValidationError || error51 instanceof MemoryNotFoundError || error51 instanceof MemoryQuotaExceededError || error51 instanceof MemoryStorageError || error51 instanceof MemoryCorruptError;
|
|
23498
24384
|
}
|
|
23499
24385
|
async function wrapStorage(operation) {
|
|
23500
24386
|
try {
|
|
@@ -23662,10 +24548,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
23662
24548
|
return revived;
|
|
23663
24549
|
}
|
|
23664
24550
|
async function deserializeLangGraphJson(value) {
|
|
23665
|
-
|
|
23666
|
-
|
|
24551
|
+
try {
|
|
24552
|
+
if (isLangGraphSerializedJson(value)) {
|
|
24553
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
24554
|
+
}
|
|
24555
|
+
return reviveLangGraphJsonValue(value);
|
|
24556
|
+
} catch (error51) {
|
|
24557
|
+
throw new MemoryCorruptError(
|
|
24558
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
24559
|
+
error51
|
|
24560
|
+
);
|
|
23667
24561
|
}
|
|
23668
|
-
return reviveLangGraphJsonValue(value);
|
|
23669
24562
|
}
|
|
23670
24563
|
function normalizeStoreLimit(value, fallback) {
|
|
23671
24564
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -23777,6 +24670,115 @@ function validateMessageId(messageId) {
|
|
|
23777
24670
|
throw new MemoryValidationError("messageId is required.");
|
|
23778
24671
|
}
|
|
23779
24672
|
}
|
|
24673
|
+
function validateStateKey(key) {
|
|
24674
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
24675
|
+
throw new MemoryValidationError("state key is required.");
|
|
24676
|
+
}
|
|
24677
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
24678
|
+
throw new MemoryValidationError(
|
|
24679
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
24680
|
+
);
|
|
24681
|
+
}
|
|
24682
|
+
}
|
|
24683
|
+
function assertStateSerializable(value, path2 = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
24684
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
24685
|
+
return;
|
|
24686
|
+
}
|
|
24687
|
+
if (typeof value === "number") {
|
|
24688
|
+
if (Number.isFinite(value))
|
|
24689
|
+
return;
|
|
24690
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
24691
|
+
}
|
|
24692
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
24693
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
24694
|
+
}
|
|
24695
|
+
if (typeof value !== "object") {
|
|
24696
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
24697
|
+
}
|
|
24698
|
+
if (seen.has(value)) {
|
|
24699
|
+
throw new MemoryValidationError(\`\${path2} must not contain circular references.\`);
|
|
24700
|
+
}
|
|
24701
|
+
seen.add(value);
|
|
24702
|
+
if (Array.isArray(value)) {
|
|
24703
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path2}[\${index}]\`, seen));
|
|
24704
|
+
} else if (isPlainObject(value)) {
|
|
24705
|
+
for (const [key, item] of Object.entries(value)) {
|
|
24706
|
+
assertStateSerializable(item, \`\${path2}.\${key}\`, seen);
|
|
24707
|
+
}
|
|
24708
|
+
} else {
|
|
24709
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
24710
|
+
}
|
|
24711
|
+
seen.delete(value);
|
|
24712
|
+
}
|
|
24713
|
+
function stateConversationPrefix(conversationId) {
|
|
24714
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
24715
|
+
}
|
|
24716
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
24717
|
+
const requireConversation = () => {
|
|
24718
|
+
if (!boundConversationId) {
|
|
24719
|
+
throw new MemoryValidationError(
|
|
24720
|
+
"State operations require a bound conversationId."
|
|
24721
|
+
);
|
|
24722
|
+
}
|
|
24723
|
+
validateConversationId(boundConversationId);
|
|
24724
|
+
return boundConversationId;
|
|
24725
|
+
};
|
|
24726
|
+
return {
|
|
24727
|
+
async get(key) {
|
|
24728
|
+
validateStateKey(key);
|
|
24729
|
+
const conversationId = requireConversation();
|
|
24730
|
+
return wrapStorage(async () => {
|
|
24731
|
+
const raw = await store.get(
|
|
24732
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
24733
|
+
{ consistency: "strong" }
|
|
24734
|
+
);
|
|
24735
|
+
if (raw === null)
|
|
24736
|
+
return null;
|
|
24737
|
+
if (typeof raw !== "string") {
|
|
24738
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
24739
|
+
}
|
|
24740
|
+
try {
|
|
24741
|
+
return JSON.parse(raw);
|
|
24742
|
+
} catch (error51) {
|
|
24743
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error51);
|
|
24744
|
+
}
|
|
24745
|
+
});
|
|
24746
|
+
},
|
|
24747
|
+
async set(key, value) {
|
|
24748
|
+
validateStateKey(key);
|
|
24749
|
+
const conversationId = requireConversation();
|
|
24750
|
+
assertStateSerializable(value);
|
|
24751
|
+
let serialized;
|
|
24752
|
+
try {
|
|
24753
|
+
serialized = JSON.stringify(value);
|
|
24754
|
+
} catch (error51) {
|
|
24755
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error51)}\`);
|
|
24756
|
+
}
|
|
24757
|
+
await wrapStorage(
|
|
24758
|
+
() => store.set(
|
|
24759
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
24760
|
+
serialized
|
|
24761
|
+
)
|
|
24762
|
+
);
|
|
24763
|
+
},
|
|
24764
|
+
async delete(key) {
|
|
24765
|
+
validateStateKey(key);
|
|
24766
|
+
const conversationId = requireConversation();
|
|
24767
|
+
await wrapStorage(
|
|
24768
|
+
() => store.delete(
|
|
24769
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
24770
|
+
)
|
|
24771
|
+
);
|
|
24772
|
+
}
|
|
24773
|
+
};
|
|
24774
|
+
}
|
|
24775
|
+
async function deleteAgentState(store, conversationId) {
|
|
24776
|
+
const listed = await store.list({
|
|
24777
|
+
prefix: stateConversationPrefix(conversationId),
|
|
24778
|
+
consistency: "strong"
|
|
24779
|
+
});
|
|
24780
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
24781
|
+
}
|
|
23780
24782
|
function validateUserId(userId) {
|
|
23781
24783
|
if (userId === void 0) {
|
|
23782
24784
|
return;
|
|
@@ -23909,6 +24911,9 @@ function cursorSortKey(cursor) {
|
|
|
23909
24911
|
const payload = decodeConversationCursor(cursor);
|
|
23910
24912
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
23911
24913
|
}
|
|
24914
|
+
function cursorListCursor(cursor) {
|
|
24915
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
24916
|
+
}
|
|
23912
24917
|
function indexSortKey(key, prefix) {
|
|
23913
24918
|
return key.slice(prefix.length);
|
|
23914
24919
|
}
|
|
@@ -24076,6 +25081,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
24076
25081
|
function claudeProjectPrefix(projectKey) {
|
|
24077
25082
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
24078
25083
|
}
|
|
25084
|
+
function claudeSessionMappingKey(conversationId) {
|
|
25085
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
25086
|
+
}
|
|
25087
|
+
function normalizeClaudeUuid(value) {
|
|
25088
|
+
const trimmed = value.trim().toLowerCase();
|
|
25089
|
+
return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(trimmed) ? trimmed : null;
|
|
25090
|
+
}
|
|
25091
|
+
function claudeSessionIdFromKey(key) {
|
|
25092
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
25093
|
+
if (!key.startsWith(prefix)) {
|
|
25094
|
+
return null;
|
|
25095
|
+
}
|
|
25096
|
+
const segments = key.slice(prefix.length).split("/");
|
|
25097
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
25098
|
+
}
|
|
25099
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
25100
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
25101
|
+
const mapping = await store.get(mappingKey, {
|
|
25102
|
+
consistency: "strong"
|
|
25103
|
+
});
|
|
25104
|
+
let sessionId = null;
|
|
25105
|
+
if (typeof mapping === "string") {
|
|
25106
|
+
sessionId = mapping;
|
|
25107
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
25108
|
+
sessionId = mapping.sessionId;
|
|
25109
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
25110
|
+
sessionId = mapping.session_id;
|
|
25111
|
+
}
|
|
25112
|
+
if (!sessionId) {
|
|
25113
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
25114
|
+
}
|
|
25115
|
+
await store.delete(mappingKey);
|
|
25116
|
+
if (!sessionId) {
|
|
25117
|
+
return;
|
|
25118
|
+
}
|
|
25119
|
+
const listed = await store.list({
|
|
25120
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
25121
|
+
consistency: "strong"
|
|
25122
|
+
});
|
|
25123
|
+
for (const key of listed.keys) {
|
|
25124
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
25125
|
+
await store.delete(key);
|
|
25126
|
+
}
|
|
25127
|
+
}
|
|
25128
|
+
}
|
|
24079
25129
|
function claudePartsPrefix(key) {
|
|
24080
25130
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
24081
25131
|
if (key.subpath) {
|
|
@@ -24113,7 +25163,9 @@ function createClaudeSessionStore(store) {
|
|
|
24113
25163
|
consistency: "strong"
|
|
24114
25164
|
});
|
|
24115
25165
|
if (typeof raw !== "string") {
|
|
24116
|
-
|
|
25166
|
+
throw new MemoryCorruptError(
|
|
25167
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
25168
|
+
);
|
|
24117
25169
|
}
|
|
24118
25170
|
for (const line of raw.split("\\n")) {
|
|
24119
25171
|
const trimmed = line.trim();
|
|
@@ -24122,7 +25174,11 @@ function createClaudeSessionStore(store) {
|
|
|
24122
25174
|
}
|
|
24123
25175
|
try {
|
|
24124
25176
|
entries.push(JSON.parse(trimmed));
|
|
24125
|
-
} catch {
|
|
25177
|
+
} catch (error51) {
|
|
25178
|
+
throw new MemoryCorruptError(
|
|
25179
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
25180
|
+
error51
|
|
25181
|
+
);
|
|
24126
25182
|
}
|
|
24127
25183
|
}
|
|
24128
25184
|
}
|
|
@@ -24248,8 +25304,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
24248
25304
|
});
|
|
24249
25305
|
}
|
|
24250
25306
|
async function listConversationsFromIndex(store, options) {
|
|
25307
|
+
if (!options.before) {
|
|
25308
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
25309
|
+
if (fast)
|
|
25310
|
+
return fast;
|
|
25311
|
+
}
|
|
24251
25312
|
return listConversationsFromIndexFull(store, options);
|
|
24252
25313
|
}
|
|
25314
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
25315
|
+
var _a3, _b;
|
|
25316
|
+
let listCursor = cursorListCursor(options.after);
|
|
25317
|
+
if (options.after && !listCursor) {
|
|
25318
|
+
return null;
|
|
25319
|
+
}
|
|
25320
|
+
const pageItems = [];
|
|
25321
|
+
const seen = /* @__PURE__ */ new Set();
|
|
25322
|
+
let lastCursor;
|
|
25323
|
+
while (pageItems.length < options.limit) {
|
|
25324
|
+
const listed = await store.list({
|
|
25325
|
+
prefix: options.prefix,
|
|
25326
|
+
cursor: listCursor,
|
|
25327
|
+
limit: options.limit - pageItems.length,
|
|
25328
|
+
paginate: false,
|
|
25329
|
+
consistency: "strong"
|
|
25330
|
+
});
|
|
25331
|
+
lastCursor = listed.cursor;
|
|
25332
|
+
if (!listed.keys.length) {
|
|
25333
|
+
break;
|
|
25334
|
+
}
|
|
25335
|
+
const indexItems = [...listed.keys].sort(
|
|
25336
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
25337
|
+
).map((key) => {
|
|
25338
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
25339
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
25340
|
+
return null;
|
|
25341
|
+
}
|
|
25342
|
+
seen.add(conversationId);
|
|
25343
|
+
return {
|
|
25344
|
+
key,
|
|
25345
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
25346
|
+
conversationId
|
|
25347
|
+
};
|
|
25348
|
+
}).filter((item) => item !== null);
|
|
25349
|
+
const metas = await Promise.all(
|
|
25350
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
25351
|
+
);
|
|
25352
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
25353
|
+
const meta3 = metas[i];
|
|
25354
|
+
if (meta3) {
|
|
25355
|
+
pageItems.push({ indexItem: indexItems[i], meta: meta3 });
|
|
25356
|
+
}
|
|
25357
|
+
}
|
|
25358
|
+
if (!listed.cursor) {
|
|
25359
|
+
break;
|
|
25360
|
+
}
|
|
25361
|
+
listCursor = listed.cursor;
|
|
25362
|
+
}
|
|
25363
|
+
const firstItem = (_a3 = pageItems[0]) == null ? void 0 : _a3.indexItem;
|
|
25364
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
25365
|
+
return {
|
|
25366
|
+
items: pageItems.map((item) => item.meta),
|
|
25367
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
25368
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
25369
|
+
};
|
|
25370
|
+
}
|
|
24253
25371
|
async function listConversationsFromIndexFull(store, options) {
|
|
24254
25372
|
var _a3, _b;
|
|
24255
25373
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -24686,6 +25804,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
24686
25804
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
24687
25805
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
24688
25806
|
const langgraphStore = createLangGraphStore(store);
|
|
25807
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
24689
25808
|
let claudeStoreCache = null;
|
|
24690
25809
|
let lastMessageCreatedAt = 0;
|
|
24691
25810
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -24971,8 +26090,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
24971
26090
|
listMessageKeys(store, input.conversationId)
|
|
24972
26091
|
]);
|
|
24973
26092
|
if (!meta3) {
|
|
26093
|
+
if (options.conversationId === input.conversationId) {
|
|
26094
|
+
await deleteAgentState(store, input.conversationId);
|
|
26095
|
+
}
|
|
26096
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
26097
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
24974
26098
|
throw new MemoryNotFoundError(
|
|
24975
|
-
"Conversation not found by
|
|
26099
|
+
"Conversation not found by deleteConversation."
|
|
24976
26100
|
);
|
|
24977
26101
|
}
|
|
24978
26102
|
const deleteOps = [];
|
|
@@ -24989,6 +26113,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
24989
26113
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
24990
26114
|
deleteOps.push(store.delete(conversationIndexKey(meta3)));
|
|
24991
26115
|
await Promise.all(deleteOps);
|
|
26116
|
+
if (options.conversationId === input.conversationId) {
|
|
26117
|
+
await deleteAgentState(store, input.conversationId);
|
|
26118
|
+
}
|
|
26119
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
26120
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
24992
26121
|
});
|
|
24993
26122
|
},
|
|
24994
26123
|
async updateConversation(input) {
|
|
@@ -25024,14 +26153,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
25024
26153
|
}));
|
|
25025
26154
|
},
|
|
25026
26155
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
26156
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
26157
|
+
if (!boundSessionId) {
|
|
26158
|
+
throw new MemoryValidationError(
|
|
26159
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
26160
|
+
);
|
|
26161
|
+
}
|
|
25027
26162
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
25028
26163
|
return createOpenAISession(
|
|
25029
26164
|
memory,
|
|
25030
|
-
|
|
26165
|
+
boundSessionId,
|
|
25031
26166
|
maxItems,
|
|
25032
26167
|
appendMessagesInternal
|
|
25033
26168
|
);
|
|
25034
26169
|
},
|
|
26170
|
+
async claudeSessionBinding(conversationId) {
|
|
26171
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
26172
|
+
if (!resolvedConversationId) {
|
|
26173
|
+
throw new MemoryValidationError(
|
|
26174
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
26175
|
+
);
|
|
26176
|
+
}
|
|
26177
|
+
validateConversationId(resolvedConversationId);
|
|
26178
|
+
return wrapStorage(async () => {
|
|
26179
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
26180
|
+
const existing = await store.get(
|
|
26181
|
+
mappingKey,
|
|
26182
|
+
{ consistency: "strong" }
|
|
26183
|
+
);
|
|
26184
|
+
if (typeof existing === "string" && existing) {
|
|
26185
|
+
return existing;
|
|
26186
|
+
}
|
|
26187
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
26188
|
+
return String(existing.sessionId || existing.session_id);
|
|
26189
|
+
}
|
|
26190
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
26191
|
+
const binding = {
|
|
26192
|
+
conversationId: resolvedConversationId,
|
|
26193
|
+
sessionId
|
|
26194
|
+
};
|
|
26195
|
+
await store.set(mappingKey, binding);
|
|
26196
|
+
return sessionId;
|
|
26197
|
+
});
|
|
26198
|
+
},
|
|
25035
26199
|
claudeSessionStore() {
|
|
25036
26200
|
if (!claudeStoreCache) {
|
|
25037
26201
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -25039,7 +26203,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
25039
26203
|
return claudeStoreCache;
|
|
25040
26204
|
},
|
|
25041
26205
|
langgraphCheckpointer,
|
|
25042
|
-
langgraphStore
|
|
26206
|
+
langgraphStore,
|
|
26207
|
+
state
|
|
25043
26208
|
};
|
|
25044
26209
|
return memory;
|
|
25045
26210
|
}
|
|
@@ -25720,6 +26885,7 @@ function createAgentRuntime(options) {
|
|
|
25720
26885
|
env,
|
|
25721
26886
|
store: createAgentMemory(createLazyStore(resolveMemoryStore), {
|
|
25722
26887
|
runId: run_id,
|
|
26888
|
+
conversationId: conversation_id,
|
|
25723
26889
|
maxMessagesPerConversation: (_a3 = defaults2 == null ? void 0 : defaults2.memoryQuota) == null ? void 0 : _a3.maxMessagesPerConversation
|
|
25724
26890
|
}),
|
|
25725
26891
|
agents: {
|
|
@@ -48276,6 +49442,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
48276
49442
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
48277
49443
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
48278
49444
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
49445
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
49446
|
+
var STATE_PREFIX = "state";
|
|
49447
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
48279
49448
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
48280
49449
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
48281
49450
|
"user",
|
|
@@ -48322,6 +49491,15 @@ var MemoryStorageError = class extends Error {
|
|
|
48322
49491
|
this.cause = cause;
|
|
48323
49492
|
}
|
|
48324
49493
|
};
|
|
49494
|
+
var MemoryCorruptError = class extends Error {
|
|
49495
|
+
code = "MemoryCorruptError";
|
|
49496
|
+
cause;
|
|
49497
|
+
constructor(message, cause) {
|
|
49498
|
+
super(message);
|
|
49499
|
+
this.name = "MemoryCorruptError";
|
|
49500
|
+
this.cause = cause;
|
|
49501
|
+
}
|
|
49502
|
+
};
|
|
48325
49503
|
var dynamicImport = new Function(
|
|
48326
49504
|
"specifier",
|
|
48327
49505
|
"return import(specifier);"
|
|
@@ -48329,7 +49507,7 @@ var dynamicImport = new Function(
|
|
|
48329
49507
|
var langchainLoadPromise;
|
|
48330
49508
|
var langchainMessagesPromise;
|
|
48331
49509
|
function isMemoryError(error) {
|
|
48332
|
-
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError;
|
|
49510
|
+
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError || error instanceof MemoryCorruptError;
|
|
48333
49511
|
}
|
|
48334
49512
|
async function wrapStorage(operation) {
|
|
48335
49513
|
try {
|
|
@@ -48497,10 +49675,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
48497
49675
|
return revived;
|
|
48498
49676
|
}
|
|
48499
49677
|
async function deserializeLangGraphJson(value) {
|
|
48500
|
-
|
|
48501
|
-
|
|
49678
|
+
try {
|
|
49679
|
+
if (isLangGraphSerializedJson(value)) {
|
|
49680
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
49681
|
+
}
|
|
49682
|
+
return reviveLangGraphJsonValue(value);
|
|
49683
|
+
} catch (error) {
|
|
49684
|
+
throw new MemoryCorruptError(
|
|
49685
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
49686
|
+
error
|
|
49687
|
+
);
|
|
48502
49688
|
}
|
|
48503
|
-
return reviveLangGraphJsonValue(value);
|
|
48504
49689
|
}
|
|
48505
49690
|
function normalizeStoreLimit(value, fallback) {
|
|
48506
49691
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -48612,6 +49797,115 @@ function validateMessageId(messageId) {
|
|
|
48612
49797
|
throw new MemoryValidationError("messageId is required.");
|
|
48613
49798
|
}
|
|
48614
49799
|
}
|
|
49800
|
+
function validateStateKey(key) {
|
|
49801
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
49802
|
+
throw new MemoryValidationError("state key is required.");
|
|
49803
|
+
}
|
|
49804
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
49805
|
+
throw new MemoryValidationError(
|
|
49806
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
49807
|
+
);
|
|
49808
|
+
}
|
|
49809
|
+
}
|
|
49810
|
+
function assertStateSerializable(value, path2 = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
49811
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
49812
|
+
return;
|
|
49813
|
+
}
|
|
49814
|
+
if (typeof value === "number") {
|
|
49815
|
+
if (Number.isFinite(value))
|
|
49816
|
+
return;
|
|
49817
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
49818
|
+
}
|
|
49819
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
49820
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
49821
|
+
}
|
|
49822
|
+
if (typeof value !== "object") {
|
|
49823
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
49824
|
+
}
|
|
49825
|
+
if (seen.has(value)) {
|
|
49826
|
+
throw new MemoryValidationError(\`\${path2} must not contain circular references.\`);
|
|
49827
|
+
}
|
|
49828
|
+
seen.add(value);
|
|
49829
|
+
if (Array.isArray(value)) {
|
|
49830
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path2}[\${index}]\`, seen));
|
|
49831
|
+
} else if (isPlainObject(value)) {
|
|
49832
|
+
for (const [key, item] of Object.entries(value)) {
|
|
49833
|
+
assertStateSerializable(item, \`\${path2}.\${key}\`, seen);
|
|
49834
|
+
}
|
|
49835
|
+
} else {
|
|
49836
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
49837
|
+
}
|
|
49838
|
+
seen.delete(value);
|
|
49839
|
+
}
|
|
49840
|
+
function stateConversationPrefix(conversationId) {
|
|
49841
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
49842
|
+
}
|
|
49843
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
49844
|
+
const requireConversation = () => {
|
|
49845
|
+
if (!boundConversationId) {
|
|
49846
|
+
throw new MemoryValidationError(
|
|
49847
|
+
"State operations require a bound conversationId."
|
|
49848
|
+
);
|
|
49849
|
+
}
|
|
49850
|
+
validateConversationId(boundConversationId);
|
|
49851
|
+
return boundConversationId;
|
|
49852
|
+
};
|
|
49853
|
+
return {
|
|
49854
|
+
async get(key) {
|
|
49855
|
+
validateStateKey(key);
|
|
49856
|
+
const conversationId = requireConversation();
|
|
49857
|
+
return wrapStorage(async () => {
|
|
49858
|
+
const raw = await store.get(
|
|
49859
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
49860
|
+
{ consistency: "strong" }
|
|
49861
|
+
);
|
|
49862
|
+
if (raw === null)
|
|
49863
|
+
return null;
|
|
49864
|
+
if (typeof raw !== "string") {
|
|
49865
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
49866
|
+
}
|
|
49867
|
+
try {
|
|
49868
|
+
return JSON.parse(raw);
|
|
49869
|
+
} catch (error) {
|
|
49870
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error);
|
|
49871
|
+
}
|
|
49872
|
+
});
|
|
49873
|
+
},
|
|
49874
|
+
async set(key, value) {
|
|
49875
|
+
validateStateKey(key);
|
|
49876
|
+
const conversationId = requireConversation();
|
|
49877
|
+
assertStateSerializable(value);
|
|
49878
|
+
let serialized;
|
|
49879
|
+
try {
|
|
49880
|
+
serialized = JSON.stringify(value);
|
|
49881
|
+
} catch (error) {
|
|
49882
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error)}\`);
|
|
49883
|
+
}
|
|
49884
|
+
await wrapStorage(
|
|
49885
|
+
() => store.set(
|
|
49886
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
49887
|
+
serialized
|
|
49888
|
+
)
|
|
49889
|
+
);
|
|
49890
|
+
},
|
|
49891
|
+
async delete(key) {
|
|
49892
|
+
validateStateKey(key);
|
|
49893
|
+
const conversationId = requireConversation();
|
|
49894
|
+
await wrapStorage(
|
|
49895
|
+
() => store.delete(
|
|
49896
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
49897
|
+
)
|
|
49898
|
+
);
|
|
49899
|
+
}
|
|
49900
|
+
};
|
|
49901
|
+
}
|
|
49902
|
+
async function deleteAgentState(store, conversationId) {
|
|
49903
|
+
const listed = await store.list({
|
|
49904
|
+
prefix: stateConversationPrefix(conversationId),
|
|
49905
|
+
consistency: "strong"
|
|
49906
|
+
});
|
|
49907
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
49908
|
+
}
|
|
48615
49909
|
function validateUserId(userId) {
|
|
48616
49910
|
if (userId === void 0) {
|
|
48617
49911
|
return;
|
|
@@ -48744,6 +50038,9 @@ function cursorSortKey(cursor) {
|
|
|
48744
50038
|
const payload = decodeConversationCursor(cursor);
|
|
48745
50039
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
48746
50040
|
}
|
|
50041
|
+
function cursorListCursor(cursor) {
|
|
50042
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
50043
|
+
}
|
|
48747
50044
|
function indexSortKey(key, prefix) {
|
|
48748
50045
|
return key.slice(prefix.length);
|
|
48749
50046
|
}
|
|
@@ -48911,6 +50208,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
48911
50208
|
function claudeProjectPrefix(projectKey) {
|
|
48912
50209
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
48913
50210
|
}
|
|
50211
|
+
function claudeSessionMappingKey(conversationId) {
|
|
50212
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
50213
|
+
}
|
|
50214
|
+
function normalizeClaudeUuid(value) {
|
|
50215
|
+
const trimmed = value.trim().toLowerCase();
|
|
50216
|
+
return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(trimmed) ? trimmed : null;
|
|
50217
|
+
}
|
|
50218
|
+
function claudeSessionIdFromKey(key) {
|
|
50219
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
50220
|
+
if (!key.startsWith(prefix)) {
|
|
50221
|
+
return null;
|
|
50222
|
+
}
|
|
50223
|
+
const segments = key.slice(prefix.length).split("/");
|
|
50224
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
50225
|
+
}
|
|
50226
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
50227
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
50228
|
+
const mapping = await store.get(mappingKey, {
|
|
50229
|
+
consistency: "strong"
|
|
50230
|
+
});
|
|
50231
|
+
let sessionId = null;
|
|
50232
|
+
if (typeof mapping === "string") {
|
|
50233
|
+
sessionId = mapping;
|
|
50234
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
50235
|
+
sessionId = mapping.sessionId;
|
|
50236
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
50237
|
+
sessionId = mapping.session_id;
|
|
50238
|
+
}
|
|
50239
|
+
if (!sessionId) {
|
|
50240
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
50241
|
+
}
|
|
50242
|
+
await store.delete(mappingKey);
|
|
50243
|
+
if (!sessionId) {
|
|
50244
|
+
return;
|
|
50245
|
+
}
|
|
50246
|
+
const listed = await store.list({
|
|
50247
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
50248
|
+
consistency: "strong"
|
|
50249
|
+
});
|
|
50250
|
+
for (const key of listed.keys) {
|
|
50251
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
50252
|
+
await store.delete(key);
|
|
50253
|
+
}
|
|
50254
|
+
}
|
|
50255
|
+
}
|
|
48914
50256
|
function claudePartsPrefix(key) {
|
|
48915
50257
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
48916
50258
|
if (key.subpath) {
|
|
@@ -48948,7 +50290,9 @@ function createClaudeSessionStore(store) {
|
|
|
48948
50290
|
consistency: "strong"
|
|
48949
50291
|
});
|
|
48950
50292
|
if (typeof raw !== "string") {
|
|
48951
|
-
|
|
50293
|
+
throw new MemoryCorruptError(
|
|
50294
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
50295
|
+
);
|
|
48952
50296
|
}
|
|
48953
50297
|
for (const line of raw.split("\\n")) {
|
|
48954
50298
|
const trimmed = line.trim();
|
|
@@ -48957,7 +50301,11 @@ function createClaudeSessionStore(store) {
|
|
|
48957
50301
|
}
|
|
48958
50302
|
try {
|
|
48959
50303
|
entries.push(JSON.parse(trimmed));
|
|
48960
|
-
} catch {
|
|
50304
|
+
} catch (error) {
|
|
50305
|
+
throw new MemoryCorruptError(
|
|
50306
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
50307
|
+
error
|
|
50308
|
+
);
|
|
48961
50309
|
}
|
|
48962
50310
|
}
|
|
48963
50311
|
}
|
|
@@ -49083,8 +50431,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
49083
50431
|
});
|
|
49084
50432
|
}
|
|
49085
50433
|
async function listConversationsFromIndex(store, options) {
|
|
50434
|
+
if (!options.before) {
|
|
50435
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
50436
|
+
if (fast)
|
|
50437
|
+
return fast;
|
|
50438
|
+
}
|
|
49086
50439
|
return listConversationsFromIndexFull(store, options);
|
|
49087
50440
|
}
|
|
50441
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
50442
|
+
var _a, _b;
|
|
50443
|
+
let listCursor = cursorListCursor(options.after);
|
|
50444
|
+
if (options.after && !listCursor) {
|
|
50445
|
+
return null;
|
|
50446
|
+
}
|
|
50447
|
+
const pageItems = [];
|
|
50448
|
+
const seen = /* @__PURE__ */ new Set();
|
|
50449
|
+
let lastCursor;
|
|
50450
|
+
while (pageItems.length < options.limit) {
|
|
50451
|
+
const listed = await store.list({
|
|
50452
|
+
prefix: options.prefix,
|
|
50453
|
+
cursor: listCursor,
|
|
50454
|
+
limit: options.limit - pageItems.length,
|
|
50455
|
+
paginate: false,
|
|
50456
|
+
consistency: "strong"
|
|
50457
|
+
});
|
|
50458
|
+
lastCursor = listed.cursor;
|
|
50459
|
+
if (!listed.keys.length) {
|
|
50460
|
+
break;
|
|
50461
|
+
}
|
|
50462
|
+
const indexItems = [...listed.keys].sort(
|
|
50463
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
50464
|
+
).map((key) => {
|
|
50465
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
50466
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
50467
|
+
return null;
|
|
50468
|
+
}
|
|
50469
|
+
seen.add(conversationId);
|
|
50470
|
+
return {
|
|
50471
|
+
key,
|
|
50472
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
50473
|
+
conversationId
|
|
50474
|
+
};
|
|
50475
|
+
}).filter((item) => item !== null);
|
|
50476
|
+
const metas = await Promise.all(
|
|
50477
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
50478
|
+
);
|
|
50479
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
50480
|
+
const meta = metas[i];
|
|
50481
|
+
if (meta) {
|
|
50482
|
+
pageItems.push({ indexItem: indexItems[i], meta });
|
|
50483
|
+
}
|
|
50484
|
+
}
|
|
50485
|
+
if (!listed.cursor) {
|
|
50486
|
+
break;
|
|
50487
|
+
}
|
|
50488
|
+
listCursor = listed.cursor;
|
|
50489
|
+
}
|
|
50490
|
+
const firstItem = (_a = pageItems[0]) == null ? void 0 : _a.indexItem;
|
|
50491
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
50492
|
+
return {
|
|
50493
|
+
items: pageItems.map((item) => item.meta),
|
|
50494
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
50495
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
50496
|
+
};
|
|
50497
|
+
}
|
|
49088
50498
|
async function listConversationsFromIndexFull(store, options) {
|
|
49089
50499
|
var _a, _b;
|
|
49090
50500
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -49521,6 +50931,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
49521
50931
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
49522
50932
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
49523
50933
|
const langgraphStore = createLangGraphStore(store);
|
|
50934
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
49524
50935
|
let claudeStoreCache = null;
|
|
49525
50936
|
let lastMessageCreatedAt = 0;
|
|
49526
50937
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -49806,8 +51217,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
49806
51217
|
listMessageKeys(store, input.conversationId)
|
|
49807
51218
|
]);
|
|
49808
51219
|
if (!meta) {
|
|
51220
|
+
if (options.conversationId === input.conversationId) {
|
|
51221
|
+
await deleteAgentState(store, input.conversationId);
|
|
51222
|
+
}
|
|
51223
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
51224
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
49809
51225
|
throw new MemoryNotFoundError(
|
|
49810
|
-
"Conversation not found by
|
|
51226
|
+
"Conversation not found by deleteConversation."
|
|
49811
51227
|
);
|
|
49812
51228
|
}
|
|
49813
51229
|
const deleteOps = [];
|
|
@@ -49824,6 +51240,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
49824
51240
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
49825
51241
|
deleteOps.push(store.delete(conversationIndexKey(meta)));
|
|
49826
51242
|
await Promise.all(deleteOps);
|
|
51243
|
+
if (options.conversationId === input.conversationId) {
|
|
51244
|
+
await deleteAgentState(store, input.conversationId);
|
|
51245
|
+
}
|
|
51246
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
51247
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
49827
51248
|
});
|
|
49828
51249
|
},
|
|
49829
51250
|
async updateConversation(input) {
|
|
@@ -49859,14 +51280,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
49859
51280
|
}));
|
|
49860
51281
|
},
|
|
49861
51282
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
51283
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
51284
|
+
if (!boundSessionId) {
|
|
51285
|
+
throw new MemoryValidationError(
|
|
51286
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
51287
|
+
);
|
|
51288
|
+
}
|
|
49862
51289
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
49863
51290
|
return createOpenAISession(
|
|
49864
51291
|
memory,
|
|
49865
|
-
|
|
51292
|
+
boundSessionId,
|
|
49866
51293
|
maxItems,
|
|
49867
51294
|
appendMessagesInternal
|
|
49868
51295
|
);
|
|
49869
51296
|
},
|
|
51297
|
+
async claudeSessionBinding(conversationId) {
|
|
51298
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
51299
|
+
if (!resolvedConversationId) {
|
|
51300
|
+
throw new MemoryValidationError(
|
|
51301
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
51302
|
+
);
|
|
51303
|
+
}
|
|
51304
|
+
validateConversationId(resolvedConversationId);
|
|
51305
|
+
return wrapStorage(async () => {
|
|
51306
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
51307
|
+
const existing = await store.get(
|
|
51308
|
+
mappingKey,
|
|
51309
|
+
{ consistency: "strong" }
|
|
51310
|
+
);
|
|
51311
|
+
if (typeof existing === "string" && existing) {
|
|
51312
|
+
return existing;
|
|
51313
|
+
}
|
|
51314
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
51315
|
+
return String(existing.sessionId || existing.session_id);
|
|
51316
|
+
}
|
|
51317
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
51318
|
+
const binding = {
|
|
51319
|
+
conversationId: resolvedConversationId,
|
|
51320
|
+
sessionId
|
|
51321
|
+
};
|
|
51322
|
+
await store.set(mappingKey, binding);
|
|
51323
|
+
return sessionId;
|
|
51324
|
+
});
|
|
51325
|
+
},
|
|
49870
51326
|
claudeSessionStore() {
|
|
49871
51327
|
if (!claudeStoreCache) {
|
|
49872
51328
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -49874,7 +51330,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
49874
51330
|
return claudeStoreCache;
|
|
49875
51331
|
},
|
|
49876
51332
|
langgraphCheckpointer,
|
|
49877
|
-
langgraphStore
|
|
51333
|
+
langgraphStore,
|
|
51334
|
+
state
|
|
49878
51335
|
};
|
|
49879
51336
|
return memory;
|
|
49880
51337
|
}
|
|
@@ -50555,6 +52012,7 @@ function createAgentRuntime(options) {
|
|
|
50555
52012
|
env,
|
|
50556
52013
|
store: createAgentMemory(createLazyStore(resolveMemoryStore), {
|
|
50557
52014
|
runId: run_id,
|
|
52015
|
+
conversationId: conversation_id,
|
|
50558
52016
|
maxMessagesPerConversation: (_a = defaults == null ? void 0 : defaults.memoryQuota) == null ? void 0 : _a.maxMessagesPerConversation
|
|
50559
52017
|
}),
|
|
50560
52018
|
agents: {
|
|
@@ -63735,6 +65193,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
63735
65193
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
63736
65194
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
63737
65195
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
65196
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
65197
|
+
var STATE_PREFIX = "state";
|
|
65198
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
63738
65199
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
63739
65200
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
63740
65201
|
"user",
|
|
@@ -63781,6 +65242,15 @@ var MemoryStorageError = class extends Error {
|
|
|
63781
65242
|
this.cause = cause;
|
|
63782
65243
|
}
|
|
63783
65244
|
};
|
|
65245
|
+
var MemoryCorruptError = class extends Error {
|
|
65246
|
+
code = "MemoryCorruptError";
|
|
65247
|
+
cause;
|
|
65248
|
+
constructor(message, cause) {
|
|
65249
|
+
super(message);
|
|
65250
|
+
this.name = "MemoryCorruptError";
|
|
65251
|
+
this.cause = cause;
|
|
65252
|
+
}
|
|
65253
|
+
};
|
|
63784
65254
|
var dynamicImport = new Function(
|
|
63785
65255
|
"specifier",
|
|
63786
65256
|
"return import(specifier);"
|
|
@@ -63788,7 +65258,7 @@ var dynamicImport = new Function(
|
|
|
63788
65258
|
var langchainLoadPromise;
|
|
63789
65259
|
var langchainMessagesPromise;
|
|
63790
65260
|
function isMemoryError(error51) {
|
|
63791
|
-
return error51 instanceof MemoryValidationError || error51 instanceof MemoryNotFoundError || error51 instanceof MemoryQuotaExceededError || error51 instanceof MemoryStorageError;
|
|
65261
|
+
return error51 instanceof MemoryValidationError || error51 instanceof MemoryNotFoundError || error51 instanceof MemoryQuotaExceededError || error51 instanceof MemoryStorageError || error51 instanceof MemoryCorruptError;
|
|
63792
65262
|
}
|
|
63793
65263
|
async function wrapStorage(operation) {
|
|
63794
65264
|
try {
|
|
@@ -63956,10 +65426,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
63956
65426
|
return revived;
|
|
63957
65427
|
}
|
|
63958
65428
|
async function deserializeLangGraphJson(value) {
|
|
63959
|
-
|
|
63960
|
-
|
|
65429
|
+
try {
|
|
65430
|
+
if (isLangGraphSerializedJson(value)) {
|
|
65431
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
65432
|
+
}
|
|
65433
|
+
return reviveLangGraphJsonValue(value);
|
|
65434
|
+
} catch (error51) {
|
|
65435
|
+
throw new MemoryCorruptError(
|
|
65436
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
65437
|
+
error51
|
|
65438
|
+
);
|
|
63961
65439
|
}
|
|
63962
|
-
return reviveLangGraphJsonValue(value);
|
|
63963
65440
|
}
|
|
63964
65441
|
function normalizeStoreLimit(value, fallback) {
|
|
63965
65442
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -64071,6 +65548,115 @@ function validateMessageId(messageId) {
|
|
|
64071
65548
|
throw new MemoryValidationError("messageId is required.");
|
|
64072
65549
|
}
|
|
64073
65550
|
}
|
|
65551
|
+
function validateStateKey(key) {
|
|
65552
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
65553
|
+
throw new MemoryValidationError("state key is required.");
|
|
65554
|
+
}
|
|
65555
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
65556
|
+
throw new MemoryValidationError(
|
|
65557
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
65558
|
+
);
|
|
65559
|
+
}
|
|
65560
|
+
}
|
|
65561
|
+
function assertStateSerializable(value, path2 = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
65562
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
65563
|
+
return;
|
|
65564
|
+
}
|
|
65565
|
+
if (typeof value === "number") {
|
|
65566
|
+
if (Number.isFinite(value))
|
|
65567
|
+
return;
|
|
65568
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
65569
|
+
}
|
|
65570
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
65571
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
65572
|
+
}
|
|
65573
|
+
if (typeof value !== "object") {
|
|
65574
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
65575
|
+
}
|
|
65576
|
+
if (seen.has(value)) {
|
|
65577
|
+
throw new MemoryValidationError(\`\${path2} must not contain circular references.\`);
|
|
65578
|
+
}
|
|
65579
|
+
seen.add(value);
|
|
65580
|
+
if (Array.isArray(value)) {
|
|
65581
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path2}[\${index}]\`, seen));
|
|
65582
|
+
} else if (isPlainObject(value)) {
|
|
65583
|
+
for (const [key, item] of Object.entries(value)) {
|
|
65584
|
+
assertStateSerializable(item, \`\${path2}.\${key}\`, seen);
|
|
65585
|
+
}
|
|
65586
|
+
} else {
|
|
65587
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
65588
|
+
}
|
|
65589
|
+
seen.delete(value);
|
|
65590
|
+
}
|
|
65591
|
+
function stateConversationPrefix(conversationId) {
|
|
65592
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
65593
|
+
}
|
|
65594
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
65595
|
+
const requireConversation = () => {
|
|
65596
|
+
if (!boundConversationId) {
|
|
65597
|
+
throw new MemoryValidationError(
|
|
65598
|
+
"State operations require a bound conversationId."
|
|
65599
|
+
);
|
|
65600
|
+
}
|
|
65601
|
+
validateConversationId(boundConversationId);
|
|
65602
|
+
return boundConversationId;
|
|
65603
|
+
};
|
|
65604
|
+
return {
|
|
65605
|
+
async get(key) {
|
|
65606
|
+
validateStateKey(key);
|
|
65607
|
+
const conversationId = requireConversation();
|
|
65608
|
+
return wrapStorage(async () => {
|
|
65609
|
+
const raw = await store.get(
|
|
65610
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
65611
|
+
{ consistency: "strong" }
|
|
65612
|
+
);
|
|
65613
|
+
if (raw === null)
|
|
65614
|
+
return null;
|
|
65615
|
+
if (typeof raw !== "string") {
|
|
65616
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
65617
|
+
}
|
|
65618
|
+
try {
|
|
65619
|
+
return JSON.parse(raw);
|
|
65620
|
+
} catch (error51) {
|
|
65621
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error51);
|
|
65622
|
+
}
|
|
65623
|
+
});
|
|
65624
|
+
},
|
|
65625
|
+
async set(key, value) {
|
|
65626
|
+
validateStateKey(key);
|
|
65627
|
+
const conversationId = requireConversation();
|
|
65628
|
+
assertStateSerializable(value);
|
|
65629
|
+
let serialized;
|
|
65630
|
+
try {
|
|
65631
|
+
serialized = JSON.stringify(value);
|
|
65632
|
+
} catch (error51) {
|
|
65633
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error51)}\`);
|
|
65634
|
+
}
|
|
65635
|
+
await wrapStorage(
|
|
65636
|
+
() => store.set(
|
|
65637
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
65638
|
+
serialized
|
|
65639
|
+
)
|
|
65640
|
+
);
|
|
65641
|
+
},
|
|
65642
|
+
async delete(key) {
|
|
65643
|
+
validateStateKey(key);
|
|
65644
|
+
const conversationId = requireConversation();
|
|
65645
|
+
await wrapStorage(
|
|
65646
|
+
() => store.delete(
|
|
65647
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
65648
|
+
)
|
|
65649
|
+
);
|
|
65650
|
+
}
|
|
65651
|
+
};
|
|
65652
|
+
}
|
|
65653
|
+
async function deleteAgentState(store, conversationId) {
|
|
65654
|
+
const listed = await store.list({
|
|
65655
|
+
prefix: stateConversationPrefix(conversationId),
|
|
65656
|
+
consistency: "strong"
|
|
65657
|
+
});
|
|
65658
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
65659
|
+
}
|
|
64074
65660
|
function validateUserId(userId) {
|
|
64075
65661
|
if (userId === void 0) {
|
|
64076
65662
|
return;
|
|
@@ -64203,6 +65789,9 @@ function cursorSortKey(cursor) {
|
|
|
64203
65789
|
const payload = decodeConversationCursor(cursor);
|
|
64204
65790
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
64205
65791
|
}
|
|
65792
|
+
function cursorListCursor(cursor) {
|
|
65793
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
65794
|
+
}
|
|
64206
65795
|
function indexSortKey(key, prefix) {
|
|
64207
65796
|
return key.slice(prefix.length);
|
|
64208
65797
|
}
|
|
@@ -64370,6 +65959,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
64370
65959
|
function claudeProjectPrefix(projectKey) {
|
|
64371
65960
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
64372
65961
|
}
|
|
65962
|
+
function claudeSessionMappingKey(conversationId) {
|
|
65963
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
65964
|
+
}
|
|
65965
|
+
function normalizeClaudeUuid(value) {
|
|
65966
|
+
const trimmed = value.trim().toLowerCase();
|
|
65967
|
+
return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(trimmed) ? trimmed : null;
|
|
65968
|
+
}
|
|
65969
|
+
function claudeSessionIdFromKey(key) {
|
|
65970
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
65971
|
+
if (!key.startsWith(prefix)) {
|
|
65972
|
+
return null;
|
|
65973
|
+
}
|
|
65974
|
+
const segments = key.slice(prefix.length).split("/");
|
|
65975
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
65976
|
+
}
|
|
65977
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
65978
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
65979
|
+
const mapping = await store.get(mappingKey, {
|
|
65980
|
+
consistency: "strong"
|
|
65981
|
+
});
|
|
65982
|
+
let sessionId = null;
|
|
65983
|
+
if (typeof mapping === "string") {
|
|
65984
|
+
sessionId = mapping;
|
|
65985
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
65986
|
+
sessionId = mapping.sessionId;
|
|
65987
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
65988
|
+
sessionId = mapping.session_id;
|
|
65989
|
+
}
|
|
65990
|
+
if (!sessionId) {
|
|
65991
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
65992
|
+
}
|
|
65993
|
+
await store.delete(mappingKey);
|
|
65994
|
+
if (!sessionId) {
|
|
65995
|
+
return;
|
|
65996
|
+
}
|
|
65997
|
+
const listed = await store.list({
|
|
65998
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
65999
|
+
consistency: "strong"
|
|
66000
|
+
});
|
|
66001
|
+
for (const key of listed.keys) {
|
|
66002
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
66003
|
+
await store.delete(key);
|
|
66004
|
+
}
|
|
66005
|
+
}
|
|
66006
|
+
}
|
|
64373
66007
|
function claudePartsPrefix(key) {
|
|
64374
66008
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
64375
66009
|
if (key.subpath) {
|
|
@@ -64407,7 +66041,9 @@ function createClaudeSessionStore(store) {
|
|
|
64407
66041
|
consistency: "strong"
|
|
64408
66042
|
});
|
|
64409
66043
|
if (typeof raw !== "string") {
|
|
64410
|
-
|
|
66044
|
+
throw new MemoryCorruptError(
|
|
66045
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
66046
|
+
);
|
|
64411
66047
|
}
|
|
64412
66048
|
for (const line of raw.split("\\n")) {
|
|
64413
66049
|
const trimmed = line.trim();
|
|
@@ -64416,7 +66052,11 @@ function createClaudeSessionStore(store) {
|
|
|
64416
66052
|
}
|
|
64417
66053
|
try {
|
|
64418
66054
|
entries.push(JSON.parse(trimmed));
|
|
64419
|
-
} catch {
|
|
66055
|
+
} catch (error51) {
|
|
66056
|
+
throw new MemoryCorruptError(
|
|
66057
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
66058
|
+
error51
|
|
66059
|
+
);
|
|
64420
66060
|
}
|
|
64421
66061
|
}
|
|
64422
66062
|
}
|
|
@@ -64542,8 +66182,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
64542
66182
|
});
|
|
64543
66183
|
}
|
|
64544
66184
|
async function listConversationsFromIndex(store, options) {
|
|
66185
|
+
if (!options.before) {
|
|
66186
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
66187
|
+
if (fast)
|
|
66188
|
+
return fast;
|
|
66189
|
+
}
|
|
64545
66190
|
return listConversationsFromIndexFull(store, options);
|
|
64546
66191
|
}
|
|
66192
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
66193
|
+
var _a3, _b;
|
|
66194
|
+
let listCursor = cursorListCursor(options.after);
|
|
66195
|
+
if (options.after && !listCursor) {
|
|
66196
|
+
return null;
|
|
66197
|
+
}
|
|
66198
|
+
const pageItems = [];
|
|
66199
|
+
const seen = /* @__PURE__ */ new Set();
|
|
66200
|
+
let lastCursor;
|
|
66201
|
+
while (pageItems.length < options.limit) {
|
|
66202
|
+
const listed = await store.list({
|
|
66203
|
+
prefix: options.prefix,
|
|
66204
|
+
cursor: listCursor,
|
|
66205
|
+
limit: options.limit - pageItems.length,
|
|
66206
|
+
paginate: false,
|
|
66207
|
+
consistency: "strong"
|
|
66208
|
+
});
|
|
66209
|
+
lastCursor = listed.cursor;
|
|
66210
|
+
if (!listed.keys.length) {
|
|
66211
|
+
break;
|
|
66212
|
+
}
|
|
66213
|
+
const indexItems = [...listed.keys].sort(
|
|
66214
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
66215
|
+
).map((key) => {
|
|
66216
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
66217
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
66218
|
+
return null;
|
|
66219
|
+
}
|
|
66220
|
+
seen.add(conversationId);
|
|
66221
|
+
return {
|
|
66222
|
+
key,
|
|
66223
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
66224
|
+
conversationId
|
|
66225
|
+
};
|
|
66226
|
+
}).filter((item) => item !== null);
|
|
66227
|
+
const metas = await Promise.all(
|
|
66228
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
66229
|
+
);
|
|
66230
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
66231
|
+
const meta3 = metas[i];
|
|
66232
|
+
if (meta3) {
|
|
66233
|
+
pageItems.push({ indexItem: indexItems[i], meta: meta3 });
|
|
66234
|
+
}
|
|
66235
|
+
}
|
|
66236
|
+
if (!listed.cursor) {
|
|
66237
|
+
break;
|
|
66238
|
+
}
|
|
66239
|
+
listCursor = listed.cursor;
|
|
66240
|
+
}
|
|
66241
|
+
const firstItem = (_a3 = pageItems[0]) == null ? void 0 : _a3.indexItem;
|
|
66242
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
66243
|
+
return {
|
|
66244
|
+
items: pageItems.map((item) => item.meta),
|
|
66245
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
66246
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
66247
|
+
};
|
|
66248
|
+
}
|
|
64547
66249
|
async function listConversationsFromIndexFull(store, options) {
|
|
64548
66250
|
var _a3, _b;
|
|
64549
66251
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -64980,6 +66682,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
64980
66682
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
64981
66683
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
64982
66684
|
const langgraphStore = createLangGraphStore(store);
|
|
66685
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
64983
66686
|
let claudeStoreCache = null;
|
|
64984
66687
|
let lastMessageCreatedAt = 0;
|
|
64985
66688
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -65265,8 +66968,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
65265
66968
|
listMessageKeys(store, input.conversationId)
|
|
65266
66969
|
]);
|
|
65267
66970
|
if (!meta3) {
|
|
66971
|
+
if (options.conversationId === input.conversationId) {
|
|
66972
|
+
await deleteAgentState(store, input.conversationId);
|
|
66973
|
+
}
|
|
66974
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
66975
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
65268
66976
|
throw new MemoryNotFoundError(
|
|
65269
|
-
"Conversation not found by
|
|
66977
|
+
"Conversation not found by deleteConversation."
|
|
65270
66978
|
);
|
|
65271
66979
|
}
|
|
65272
66980
|
const deleteOps = [];
|
|
@@ -65283,6 +66991,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
65283
66991
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
65284
66992
|
deleteOps.push(store.delete(conversationIndexKey(meta3)));
|
|
65285
66993
|
await Promise.all(deleteOps);
|
|
66994
|
+
if (options.conversationId === input.conversationId) {
|
|
66995
|
+
await deleteAgentState(store, input.conversationId);
|
|
66996
|
+
}
|
|
66997
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
66998
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
65286
66999
|
});
|
|
65287
67000
|
},
|
|
65288
67001
|
async updateConversation(input) {
|
|
@@ -65318,14 +67031,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
65318
67031
|
}));
|
|
65319
67032
|
},
|
|
65320
67033
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
67034
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
67035
|
+
if (!boundSessionId) {
|
|
67036
|
+
throw new MemoryValidationError(
|
|
67037
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
67038
|
+
);
|
|
67039
|
+
}
|
|
65321
67040
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
65322
67041
|
return createOpenAISession(
|
|
65323
67042
|
memory,
|
|
65324
|
-
|
|
67043
|
+
boundSessionId,
|
|
65325
67044
|
maxItems,
|
|
65326
67045
|
appendMessagesInternal
|
|
65327
67046
|
);
|
|
65328
67047
|
},
|
|
67048
|
+
async claudeSessionBinding(conversationId) {
|
|
67049
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
67050
|
+
if (!resolvedConversationId) {
|
|
67051
|
+
throw new MemoryValidationError(
|
|
67052
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
67053
|
+
);
|
|
67054
|
+
}
|
|
67055
|
+
validateConversationId(resolvedConversationId);
|
|
67056
|
+
return wrapStorage(async () => {
|
|
67057
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
67058
|
+
const existing = await store.get(
|
|
67059
|
+
mappingKey,
|
|
67060
|
+
{ consistency: "strong" }
|
|
67061
|
+
);
|
|
67062
|
+
if (typeof existing === "string" && existing) {
|
|
67063
|
+
return existing;
|
|
67064
|
+
}
|
|
67065
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
67066
|
+
return String(existing.sessionId || existing.session_id);
|
|
67067
|
+
}
|
|
67068
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
67069
|
+
const binding = {
|
|
67070
|
+
conversationId: resolvedConversationId,
|
|
67071
|
+
sessionId
|
|
67072
|
+
};
|
|
67073
|
+
await store.set(mappingKey, binding);
|
|
67074
|
+
return sessionId;
|
|
67075
|
+
});
|
|
67076
|
+
},
|
|
65329
67077
|
claudeSessionStore() {
|
|
65330
67078
|
if (!claudeStoreCache) {
|
|
65331
67079
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -65333,7 +67081,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
65333
67081
|
return claudeStoreCache;
|
|
65334
67082
|
},
|
|
65335
67083
|
langgraphCheckpointer,
|
|
65336
|
-
langgraphStore
|
|
67084
|
+
langgraphStore,
|
|
67085
|
+
state
|
|
65337
67086
|
};
|
|
65338
67087
|
return memory;
|
|
65339
67088
|
}
|
|
@@ -66014,6 +67763,7 @@ function createAgentRuntime(options) {
|
|
|
66014
67763
|
env,
|
|
66015
67764
|
store: createAgentMemory(createLazyStore(resolveMemoryStore), {
|
|
66016
67765
|
runId: run_id,
|
|
67766
|
+
conversationId: conversation_id,
|
|
66017
67767
|
maxMessagesPerConversation: (_a3 = defaults2 == null ? void 0 : defaults2.memoryQuota) == null ? void 0 : _a3.maxMessagesPerConversation
|
|
66018
67768
|
}),
|
|
66019
67769
|
agents: {
|