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.
package/edgeone-dist/cli.js
CHANGED
|
@@ -566,7 +566,7 @@ ${A.join(`
|
|
|
566
566
|
`;y.forEach(A=>{v+=A}),e.fail(v)}};let p={};s.conflicts=function(g,y){si("<string|object> [array|string]",[g,y],arguments.length),typeof g=="object"?Object.keys(g).forEach(v=>{s.conflicts(v,g[v])}):(t.global(g),p[g]||(p[g]=[]),Array.isArray(y)?y.forEach(v=>s.conflicts(g,v)):p[g].push(y))},s.getConflicting=()=>p,s.conflicting=function(g){Object.keys(g).forEach(y=>{p[y]&&p[y].forEach(v=>{v&&g[y]!==void 0&&g[v]!==void 0&&e.fail(n("Arguments %s and %s are mutually exclusive",y,v))})}),t.getInternalMethods().getParserConfiguration()["strip-dashed"]&&Object.keys(p).forEach(y=>{p[y].forEach(v=>{v&&g[r.Parser.camelCase(y)]!==void 0&&g[r.Parser.camelCase(v)]!==void 0&&e.fail(n("Arguments %s and %s are mutually exclusive",y,v))})})},s.recommendCommands=function(g,y){y=y.sort((E,k)=>k.length-E.length);let A=null,S=1/0;for(let E=0,k;(k=y[E])!==void 0;E++){let P=D3e(g,k);P<=3&&P<S&&(S=P,A=k)}A&&e.fail(n("Did you mean %s?",A))},s.reset=function(g){return c=KI(c,y=>!g[y]),p=KI(p,y=>!g[y]),s};let f=[];return s.freeze=function(){f.push({implied:c,conflicting:p})},s.unfreeze=function(){let g=f.pop();ig(g,void 0,r),{implied:c,conflicting:p}=g},s}var ci=function(t,e,r,n,o){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?t!==e||!o:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?o.call(t,r):o?o.value=r:e.set(t,r),r},Ve=function(t,e,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(t):n?n.value:e.get(t)},Fp,dD,P8,Sv,JA,GV,ZI,hD,WV,Cv,YV,Iv,Mw,KA,kv,JV,mF,md,Bi,KV,XV,XA,mD,gF,gD,ek,ZV,xs,AD,yD,vD,Ls,eG,Qw,cp;function Z3e(t){return(e=[],r=t.process.cwd(),n)=>{let o=new Que(e,r,n,t);return Object.defineProperty(o,"argv",{get:()=>o.parse(),enumerable:!0}),o.help(),o.version(),o}}var N3e=Symbol("copyDoubleDash"),O3e=Symbol("copyDoubleDash"),Bue=Symbol("deleteFromParserHintObject"),F3e=Symbol("emitWarning"),L3e=Symbol("freeze"),j3e=Symbol("getDollarZero"),xD=Symbol("getParserConfiguration"),M3e=Symbol("getUsageConfiguration"),Due=Symbol("guessLocale"),Q3e=Symbol("guessVersion"),q3e=Symbol("parsePositionalNumbers"),Pue=Symbol("pkgUp"),tk=Symbol("populateParserHintArray"),AF=Symbol("populateParserHintSingleValueDictionary"),Rue=Symbol("populateParserHintArrayDictionary"),Nue=Symbol("populateParserHintDictionary"),Oue=Symbol("sanitizeKey"),Fue=Symbol("setKey"),Lue=Symbol("unfreeze"),U3e=Symbol("validateAsync"),$3e=Symbol("getCommandInstance"),z3e=Symbol("getContext"),H3e=Symbol("getHasOutput"),V3e=Symbol("getLoggerInstance"),G3e=Symbol("getParseContext"),W3e=Symbol("getUsageInstance"),Y3e=Symbol("getValidationInstance"),tG=Symbol("hasParseCallback"),J3e=Symbol("isGlobalContext"),bD=Symbol("postProcess"),K3e=Symbol("rebase"),jue=Symbol("reset"),R8=Symbol("runYargsParserAndExecuteCommands"),Mue=Symbol("runValidation"),X3e=Symbol("setHasOutput"),ED=Symbol("kTrackManuallySetKeys"),Que=class{constructor(e=[],r,n,o){this.customScriptName=!1,this.parsed=!1,Fp.set(this,void 0),dD.set(this,void 0),P8.set(this,{commands:[],fullCommands:[]}),Sv.set(this,null),JA.set(this,null),GV.set(this,"show-hidden"),ZI.set(this,null),hD.set(this,!0),WV.set(this,{}),Cv.set(this,!0),YV.set(this,[]),Iv.set(this,void 0),Mw.set(this,{}),KA.set(this,!1),kv.set(this,null),JV.set(this,!0),mF.set(this,void 0),md.set(this,""),Bi.set(this,void 0),KV.set(this,void 0),XV.set(this,{}),XA.set(this,null),mD.set(this,null),gF.set(this,{}),gD.set(this,{}),ek.set(this,void 0),ZV.set(this,!1),xs.set(this,void 0),AD.set(this,!1),yD.set(this,!1),vD.set(this,!1),Ls.set(this,void 0),eG.set(this,{}),Qw.set(this,null),cp.set(this,void 0),ci(this,xs,o,"f"),ci(this,ek,e,"f"),ci(this,dD,r,"f"),ci(this,KV,n,"f"),ci(this,Iv,new zV(this),"f"),this.$0=this[j3e](),this[jue](),ci(this,Fp,Ve(this,Fp,"f"),"f"),ci(this,Ls,Ve(this,Ls,"f"),"f"),ci(this,cp,Ve(this,cp,"f"),"f"),ci(this,Bi,Ve(this,Bi,"f"),"f"),Ve(this,Bi,"f").showHiddenOpt=Ve(this,GV,"f"),ci(this,mF,this[O3e](),"f")}addHelpOpt(e,r){let n="help";return si("[string|boolean] [string]",[e,r],arguments.length),Ve(this,kv,"f")&&(this[Bue](Ve(this,kv,"f")),ci(this,kv,null,"f")),e===!1&&r===void 0?this:(ci(this,kv,typeof e=="string"?e:n,"f"),this.boolean(Ve(this,kv,"f")),this.describe(Ve(this,kv,"f"),r||Ve(this,Ls,"f").deferY18nLookup("Show help")),this)}help(e,r){return this.addHelpOpt(e,r)}addShowHiddenOpt(e,r){if(si("[string|boolean] [string]",[e,r],arguments.length),e===!1&&r===void 0)return this;let n=typeof e=="string"?e:Ve(this,GV,"f");return this.boolean(n),this.describe(n,r||Ve(this,Ls,"f").deferY18nLookup("Show hidden options")),Ve(this,Bi,"f").showHiddenOpt=n,this}showHidden(e,r){return this.addShowHiddenOpt(e,r)}alias(e,r){return si("<object|string|array> [string|array]",[e,r],arguments.length),this[Rue](this.alias.bind(this),"alias",e,r),this}array(e){return si("<array|string>",[e],arguments.length),this[tk]("array",e),this[ED](e),this}boolean(e){return si("<array|string>",[e],arguments.length),this[tk]("boolean",e),this[ED](e),this}check(e,r){return si("<function> [boolean]",[e,r],arguments.length),this.middleware((n,o)=>fD(()=>e(n,o.getOptions()),s=>(s?(typeof s=="string"||s instanceof Error)&&Ve(this,Ls,"f").fail(s.toString(),s):Ve(this,Ls,"f").fail(Ve(this,xs,"f").y18n.__("Argument check failed: %s",e.toString())),n),s=>(Ve(this,Ls,"f").fail(s.message?s.message:s.toString(),s),n)),!1,r),this}choices(e,r){return si("<object|string|array> [string|array]",[e,r],arguments.length),this[Rue](this.choices.bind(this),"choices",e,r),this}coerce(e,r){if(si("<object|string|array> [function]",[e,r],arguments.length),Array.isArray(e)){if(!r)throw new ju("coerce callback must be provided");for(let n of e)this.coerce(n,r);return this}else if(typeof e=="object"){for(let n of Object.keys(e))this.coerce(n,e[n]);return this}if(!r)throw new ju("coerce callback must be provided");return Ve(this,Bi,"f").key[e]=!0,Ve(this,Iv,"f").addCoerceMiddleware((n,o)=>{let s;return Object.prototype.hasOwnProperty.call(n,e)?fD(()=>(s=o.getAliases(),r(n[e])),u=>{n[e]=u;let p=o.getInternalMethods().getParserConfiguration()["strip-aliased"];if(s[e]&&p!==!0)for(let f of s[e])n[f]=u;return n},u=>{throw new ju(u.message)}):n},e),this}conflicts(e,r){return si("<string|object> [string|array]",[e,r],arguments.length),Ve(this,cp,"f").conflicts(e,r),this}config(e="config",r,n){return si("[object|string] [string|function] [function]",[e,r,n],arguments.length),typeof e=="object"&&!Array.isArray(e)?(e=T8(e,Ve(this,dD,"f"),this[xD]()["deep-merge-config"]||!1,Ve(this,xs,"f")),Ve(this,Bi,"f").configObjects=(Ve(this,Bi,"f").configObjects||[]).concat(e),this):(typeof r=="function"&&(n=r,r=void 0),this.describe(e,r||Ve(this,Ls,"f").deferY18nLookup("Path to JSON config file")),(Array.isArray(e)?e:[e]).forEach(o=>{Ve(this,Bi,"f").config[o]=n||!0}),this)}completion(e,r,n){return si("[string] [string|boolean|function] [function]",[e,r,n],arguments.length),typeof r=="function"&&(n=r,r=void 0),ci(this,JA,e||Ve(this,JA,"f")||"completion","f"),!r&&r!==!1&&(r="generate completion script"),this.command(Ve(this,JA,"f"),r),n&&Ve(this,Sv,"f").registerFunction(n),this}command(e,r,n,o,s,c){return si("<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]",[e,r,n,o,s,c],arguments.length),Ve(this,Fp,"f").addHandler(e,r,n,o,s,c),this}commands(e,r,n,o,s,c){return this.command(e,r,n,o,s,c)}commandDir(e,r){si("<string> [object]",[e,r],arguments.length);let n=Ve(this,KV,"f")||Ve(this,xs,"f").require;return Ve(this,Fp,"f").addDirectory(e,n,Ve(this,xs,"f").getCallerFile(),r),this}count(e){return si("<array|string>",[e],arguments.length),this[tk]("count",e),this[ED](e),this}default(e,r,n){return si("<object|string|array> [*] [string]",[e,r,n],arguments.length),n&&(Sue(e,Ve(this,xs,"f")),Ve(this,Bi,"f").defaultDescription[e]=n),typeof r=="function"&&(Sue(e,Ve(this,xs,"f")),Ve(this,Bi,"f").defaultDescription[e]||(Ve(this,Bi,"f").defaultDescription[e]=Ve(this,Ls,"f").functionDescription(r)),r=r.call()),this[AF](this.default.bind(this),"default",e,r),this}defaults(e,r,n){return this.default(e,r,n)}demandCommand(e=1,r,n,o){return si("[number] [number|string] [string|null|undefined] [string|null|undefined]",[e,r,n,o],arguments.length),typeof r!="number"&&(n=r,r=1/0),this.global("_",!1),Ve(this,Bi,"f").demandedCommands._={min:e,max:r,minMsg:n,maxMsg:o},this}demand(e,r,n){return Array.isArray(r)?(r.forEach(o=>{ig(n,!0,Ve(this,xs,"f")),this.demandOption(o,n)}),r=1/0):typeof r!="number"&&(n=r,r=1/0),typeof e=="number"?(ig(n,!0,Ve(this,xs,"f")),this.demandCommand(e,r,n,n)):Array.isArray(e)?e.forEach(o=>{ig(n,!0,Ve(this,xs,"f")),this.demandOption(o,n)}):typeof n=="string"?this.demandOption(e,n):(n===!0||typeof n>"u")&&this.demandOption(e),this}demandOption(e,r){return si("<object|string|array> [string]",[e,r],arguments.length),this[AF](this.demandOption.bind(this),"demandedOptions",e,r),this}deprecateOption(e,r){return si("<string> [string|boolean]",[e,r],arguments.length),Ve(this,Bi,"f").deprecatedOptions[e]=r,this}describe(e,r){return si("<object|string|array> [string]",[e,r],arguments.length),this[Fue](e,!0),Ve(this,Ls,"f").describe(e,r),this}detectLocale(e){return si("<boolean>",[e],arguments.length),ci(this,hD,e,"f"),this}env(e){return si("[string|boolean]",[e],arguments.length),e===!1?delete Ve(this,Bi,"f").envPrefix:Ve(this,Bi,"f").envPrefix=e||"",this}epilogue(e){return si("<string>",[e],arguments.length),Ve(this,Ls,"f").epilog(e),this}epilog(e){return this.epilogue(e)}example(e,r){return si("<string|array> [string]",[e,r],arguments.length),Array.isArray(e)?e.forEach(n=>this.example(...n)):Ve(this,Ls,"f").example(e,r),this}exit(e,r){ci(this,KA,!0,"f"),ci(this,ZI,r,"f"),Ve(this,Cv,"f")&&Ve(this,xs,"f").process.exit(e)}exitProcess(e=!0){return si("[boolean]",[e],arguments.length),ci(this,Cv,e,"f"),this}fail(e){if(si("<function|boolean>",[e],arguments.length),typeof e=="boolean"&&e!==!1)throw new ju("Invalid first argument. Expected function or boolean 'false'");return Ve(this,Ls,"f").failFn(e),this}getAliases(){return this.parsed?this.parsed.aliases:{}}async getCompletion(e,r){return si("<array> [function]",[e,r],arguments.length),r?Ve(this,Sv,"f").getCompletion(e,r):new Promise((n,o)=>{Ve(this,Sv,"f").getCompletion(e,(s,c)=>{s?o(s):n(c)})})}getDemandedOptions(){return si([],0),Ve(this,Bi,"f").demandedOptions}getDemandedCommands(){return si([],0),Ve(this,Bi,"f").demandedCommands}getDeprecatedOptions(){return si([],0),Ve(this,Bi,"f").deprecatedOptions}getDetectLocale(){return Ve(this,hD,"f")}getExitProcess(){return Ve(this,Cv,"f")}getGroups(){return Object.assign({},Ve(this,Mw,"f"),Ve(this,gD,"f"))}getHelp(){if(ci(this,KA,!0,"f"),!Ve(this,Ls,"f").hasCachedHelpMessage()){if(!this.parsed){let r=this[R8](Ve(this,ek,"f"),void 0,void 0,0,!0);if(Mu(r))return r.then(()=>Ve(this,Ls,"f").help())}let e=Ve(this,Fp,"f").runDefaultBuilderOn(this);if(Mu(e))return e.then(()=>Ve(this,Ls,"f").help())}return Promise.resolve(Ve(this,Ls,"f").help())}getOptions(){return Ve(this,Bi,"f")}getStrict(){return Ve(this,AD,"f")}getStrictCommands(){return Ve(this,yD,"f")}getStrictOptions(){return Ve(this,vD,"f")}global(e,r){return si("<string|array> [boolean]",[e,r],arguments.length),e=[].concat(e),r!==!1?Ve(this,Bi,"f").local=Ve(this,Bi,"f").local.filter(n=>e.indexOf(n)===-1):e.forEach(n=>{Ve(this,Bi,"f").local.includes(n)||Ve(this,Bi,"f").local.push(n)}),this}group(e,r){si("<string|array> <string>",[e,r],arguments.length);let n=Ve(this,gD,"f")[r]||Ve(this,Mw,"f")[r];Ve(this,gD,"f")[r]&&delete Ve(this,gD,"f")[r];let o={};return Ve(this,Mw,"f")[r]=(n||[]).concat(e).filter(s=>o[s]?!1:o[s]=!0),this}hide(e){return si("<string>",[e],arguments.length),Ve(this,Bi,"f").hiddenOptions.push(e),this}implies(e,r){return si("<string|object> [number|string|array]",[e,r],arguments.length),Ve(this,cp,"f").implies(e,r),this}locale(e){return si("[string]",[e],arguments.length),e===void 0?(this[Due](),Ve(this,xs,"f").y18n.getLocale()):(ci(this,hD,!1,"f"),Ve(this,xs,"f").y18n.setLocale(e),this)}middleware(e,r,n){return Ve(this,Iv,"f").addMiddleware(e,!!r,n)}nargs(e,r){return si("<string|object|array> [number]",[e,r],arguments.length),this[AF](this.nargs.bind(this),"narg",e,r),this}normalize(e){return si("<array|string>",[e],arguments.length),this[tk]("normalize",e),this}number(e){return si("<array|string>",[e],arguments.length),this[tk]("number",e),this[ED](e),this}option(e,r){if(si("<string|object> [object]",[e,r],arguments.length),typeof e=="object")Object.keys(e).forEach(n=>{this.options(n,e[n])});else{typeof r!="object"&&(r={}),this[ED](e),Ve(this,Qw,"f")&&(e==="version"||(r==null?void 0:r.alias)==="version")&&this[F3e](['"version" is a reserved word.',"Please do one of the following:",'- Disable version with `yargs.version(false)` if using "version" as an option',"- Use the built-in `yargs.version` method instead (if applicable)","- Use a different option key","https://yargs.js.org/docs/#api-reference-version"].join(`
|
|
567
567
|
`),void 0,"versionWarning"),Ve(this,Bi,"f").key[e]=!0,r.alias&&this.alias(e,r.alias);let n=r.deprecate||r.deprecated;n&&this.deprecateOption(e,n);let o=r.demand||r.required||r.require;o&&this.demand(e,o),r.demandOption&&this.demandOption(e,typeof r.demandOption=="string"?r.demandOption:void 0),r.conflicts&&this.conflicts(e,r.conflicts),"default"in r&&this.default(e,r.default),r.implies!==void 0&&this.implies(e,r.implies),r.nargs!==void 0&&this.nargs(e,r.nargs),r.config&&this.config(e,r.configParser),r.normalize&&this.normalize(e),r.choices&&this.choices(e,r.choices),r.coerce&&this.coerce(e,r.coerce),r.group&&this.group(e,r.group),(r.boolean||r.type==="boolean")&&(this.boolean(e),r.alias&&this.boolean(r.alias)),(r.array||r.type==="array")&&(this.array(e),r.alias&&this.array(r.alias)),(r.number||r.type==="number")&&(this.number(e),r.alias&&this.number(r.alias)),(r.string||r.type==="string")&&(this.string(e),r.alias&&this.string(r.alias)),(r.count||r.type==="count")&&this.count(e),typeof r.global=="boolean"&&this.global(e,r.global),r.defaultDescription&&(Ve(this,Bi,"f").defaultDescription[e]=r.defaultDescription),r.skipValidation&&this.skipValidation(e);let s=r.describe||r.description||r.desc,c=Ve(this,Ls,"f").getDescriptions();(!Object.prototype.hasOwnProperty.call(c,e)||typeof s=="string")&&this.describe(e,s),r.hidden&&this.hide(e),r.requiresArg&&this.requiresArg(e)}return this}options(e,r){return this.option(e,r)}parse(e,r,n){si("[string|array] [function|boolean|object] [function]",[e,r,n],arguments.length),this[L3e](),typeof e>"u"&&(e=Ve(this,ek,"f")),typeof r=="object"&&(ci(this,mD,r,"f"),r=n),typeof r=="function"&&(ci(this,XA,r,"f"),r=!1),r||ci(this,ek,e,"f"),Ve(this,XA,"f")&&ci(this,Cv,!1,"f");let o=this[R8](e,!!r),s=this.parsed;return Ve(this,Sv,"f").setParsed(this.parsed),Mu(o)?o.then(c=>(Ve(this,XA,"f")&&Ve(this,XA,"f").call(this,Ve(this,ZI,"f"),c,Ve(this,md,"f")),c)).catch(c=>{throw Ve(this,XA,"f")&&Ve(this,XA,"f")(c,this.parsed.argv,Ve(this,md,"f")),c}).finally(()=>{this[Lue](),this.parsed=s}):(Ve(this,XA,"f")&&Ve(this,XA,"f").call(this,Ve(this,ZI,"f"),o,Ve(this,md,"f")),this[Lue](),this.parsed=s,o)}parseAsync(e,r,n){let o=this.parse(e,r,n);return Mu(o)?o:Promise.resolve(o)}parseSync(e,r,n){let o=this.parse(e,r,n);if(Mu(o))throw new ju(".parseSync() must not be used with asynchronous builders, handlers, or middleware");return o}parserConfiguration(e){return si("<object>",[e],arguments.length),ci(this,XV,e,"f"),this}pkgConf(e,r){si("<string> [string]",[e,r],arguments.length);let n=null,o=this[Pue](r||Ve(this,dD,"f"));return o[e]&&typeof o[e]=="object"&&(n=T8(o[e],r||Ve(this,dD,"f"),this[xD]()["deep-merge-config"]||!1,Ve(this,xs,"f")),Ve(this,Bi,"f").configObjects=(Ve(this,Bi,"f").configObjects||[]).concat(n)),this}positional(e,r){si("<string> <object>",[e,r],arguments.length);let n=["default","defaultDescription","implies","normalize","choices","conflicts","coerce","type","describe","desc","description","alias"];r=KI(r,(c,u)=>c==="type"&&!["string","number","boolean"].includes(u)?!1:n.includes(c));let o=Ve(this,P8,"f").fullCommands[Ve(this,P8,"f").fullCommands.length-1],s=o?Ve(this,Fp,"f").cmdToParseOptions(o):{array:[],alias:{},default:{},demand:{}};return dF(s).forEach(c=>{let u=s[c];Array.isArray(u)?u.indexOf(e)!==-1&&(r[c]=!0):u[e]&&!(c in r)&&(r[c]=u[e])}),this.group(e,Ve(this,Ls,"f").getPositionalGroupName()),this.option(e,r)}recommendCommands(e=!0){return si("[boolean]",[e],arguments.length),ci(this,ZV,e,"f"),this}required(e,r,n){return this.demand(e,r,n)}require(e,r,n){return this.demand(e,r,n)}requiresArg(e){return si("<array|string|object> [number]",[e],arguments.length),typeof e=="string"&&Ve(this,Bi,"f").narg[e]?this:(this[AF](this.requiresArg.bind(this),"narg",e,NaN),this)}showCompletionScript(e,r){return si("[string] [string]",[e,r],arguments.length),e=e||this.$0,Ve(this,mF,"f").log(Ve(this,Sv,"f").generateCompletionScript(e,r||Ve(this,JA,"f")||"completion")),this}showHelp(e){if(si("[string|function]",[e],arguments.length),ci(this,KA,!0,"f"),!Ve(this,Ls,"f").hasCachedHelpMessage()){if(!this.parsed){let n=this[R8](Ve(this,ek,"f"),void 0,void 0,0,!0);if(Mu(n))return n.then(()=>{Ve(this,Ls,"f").showHelp(e)}),this}let r=Ve(this,Fp,"f").runDefaultBuilderOn(this);if(Mu(r))return r.then(()=>{Ve(this,Ls,"f").showHelp(e)}),this}return Ve(this,Ls,"f").showHelp(e),this}scriptName(e){return this.customScriptName=!0,this.$0=e,this}showHelpOnFail(e,r){return si("[boolean|string] [string]",[e,r],arguments.length),Ve(this,Ls,"f").showHelpOnFail(e,r),this}showVersion(e){return si("[string|function]",[e],arguments.length),Ve(this,Ls,"f").showVersion(e),this}skipValidation(e){return si("<array|string>",[e],arguments.length),this[tk]("skipValidation",e),this}strict(e){return si("[boolean]",[e],arguments.length),ci(this,AD,e!==!1,"f"),this}strictCommands(e){return si("[boolean]",[e],arguments.length),ci(this,yD,e!==!1,"f"),this}strictOptions(e){return si("[boolean]",[e],arguments.length),ci(this,vD,e!==!1,"f"),this}string(e){return si("<array|string>",[e],arguments.length),this[tk]("string",e),this[ED](e),this}terminalWidth(){return si([],0),Ve(this,xs,"f").process.stdColumns}updateLocale(e){return this.updateStrings(e)}updateStrings(e){return si("<object>",[e],arguments.length),ci(this,hD,!1,"f"),Ve(this,xs,"f").y18n.updateLocale(e),this}usage(e,r,n,o){if(si("<string|null|undefined> [string|boolean] [function|object] [function]",[e,r,n,o],arguments.length),r!==void 0){if(ig(e,null,Ve(this,xs,"f")),(e||"").match(/^\$0( |$)/))return this.command(e,r,n,o);throw new ju(".usage() description must start with $0 if being used as alias for .command()")}else return Ve(this,Ls,"f").usage(e),this}usageConfiguration(e){return si("<object>",[e],arguments.length),ci(this,eG,e,"f"),this}version(e,r,n){let o="version";if(si("[boolean|string] [string] [string]",[e,r,n],arguments.length),Ve(this,Qw,"f")&&(this[Bue](Ve(this,Qw,"f")),Ve(this,Ls,"f").version(void 0),ci(this,Qw,null,"f")),arguments.length===0)n=this[Q3e](),e=o;else if(arguments.length===1){if(e===!1)return this;n=e,e=o}else arguments.length===2&&(n=r,r=void 0);return ci(this,Qw,typeof e=="string"?e:o,"f"),r=r||Ve(this,Ls,"f").deferY18nLookup("Show version number"),Ve(this,Ls,"f").version(n||void 0),this.boolean(Ve(this,Qw,"f")),this.describe(Ve(this,Qw,"f"),r),this}wrap(e){return si("<number|null|undefined>",[e],arguments.length),Ve(this,Ls,"f").wrap(e),this}[(Fp=new WeakMap,dD=new WeakMap,P8=new WeakMap,Sv=new WeakMap,JA=new WeakMap,GV=new WeakMap,ZI=new WeakMap,hD=new WeakMap,WV=new WeakMap,Cv=new WeakMap,YV=new WeakMap,Iv=new WeakMap,Mw=new WeakMap,KA=new WeakMap,kv=new WeakMap,JV=new WeakMap,mF=new WeakMap,md=new WeakMap,Bi=new WeakMap,KV=new WeakMap,XV=new WeakMap,XA=new WeakMap,mD=new WeakMap,gF=new WeakMap,gD=new WeakMap,ek=new WeakMap,ZV=new WeakMap,xs=new WeakMap,AD=new WeakMap,yD=new WeakMap,vD=new WeakMap,Ls=new WeakMap,eG=new WeakMap,Qw=new WeakMap,cp=new WeakMap,N3e)](e){if(!e._||!e["--"])return e;e._.push.apply(e._,e["--"]);try{delete e["--"]}catch{}return e}[O3e](){return{log:(...e)=>{this[tG]()||console.log(...e),ci(this,KA,!0,"f"),Ve(this,md,"f").length&&ci(this,md,Ve(this,md,"f")+`
|
|
568
568
|
`,"f"),ci(this,md,Ve(this,md,"f")+e.join(" "),"f")},error:(...e)=>{this[tG]()||console.error(...e),ci(this,KA,!0,"f"),Ve(this,md,"f").length&&ci(this,md,Ve(this,md,"f")+`
|
|
569
|
-
`,"f"),ci(this,md,Ve(this,md,"f")+e.join(" "),"f")}}}[Bue](e){dF(Ve(this,Bi,"f")).forEach(r=>{if((o=>o==="configObjects")(r))return;let n=Ve(this,Bi,"f")[r];Array.isArray(n)?n.includes(e)&&n.splice(n.indexOf(e),1):typeof n=="object"&&delete n[e]}),delete Ve(this,Ls,"f").getDescriptions()[e]}[F3e](e,r,n){Ve(this,WV,"f")[n]||(Ve(this,xs,"f").process.emitWarning(e,r),Ve(this,WV,"f")[n]=!0)}[L3e](){Ve(this,YV,"f").push({options:Ve(this,Bi,"f"),configObjects:Ve(this,Bi,"f").configObjects.slice(0),exitProcess:Ve(this,Cv,"f"),groups:Ve(this,Mw,"f"),strict:Ve(this,AD,"f"),strictCommands:Ve(this,yD,"f"),strictOptions:Ve(this,vD,"f"),completionCommand:Ve(this,JA,"f"),output:Ve(this,md,"f"),exitError:Ve(this,ZI,"f"),hasOutput:Ve(this,KA,"f"),parsed:this.parsed,parseFn:Ve(this,XA,"f"),parseContext:Ve(this,mD,"f")}),Ve(this,Ls,"f").freeze(),Ve(this,cp,"f").freeze(),Ve(this,Fp,"f").freeze(),Ve(this,Iv,"f").freeze()}[j3e](){let e="",r;return/\b(node|iojs|electron)(\.exe)?$/.test(Ve(this,xs,"f").process.argv()[0])?r=Ve(this,xs,"f").process.argv().slice(1,2):r=Ve(this,xs,"f").process.argv().slice(0,1),e=r.map(n=>{let o=this[K3e](Ve(this,dD,"f"),n);return n.match(/^(\/|([a-zA-Z]:)?\\)/)&&o.length<n.length?o:n}).join(" ").trim(),Ve(this,xs,"f").getEnv("_")&&Ve(this,xs,"f").getProcessArgvBin()===Ve(this,xs,"f").getEnv("_")&&(e=Ve(this,xs,"f").getEnv("_").replace(`${Ve(this,xs,"f").path.dirname(Ve(this,xs,"f").process.execPath())}/`,"")),e}[xD](){return Ve(this,XV,"f")}[M3e](){return Ve(this,eG,"f")}[Due](){if(!Ve(this,hD,"f"))return;let e=Ve(this,xs,"f").getEnv("LC_ALL")||Ve(this,xs,"f").getEnv("LC_MESSAGES")||Ve(this,xs,"f").getEnv("LANG")||Ve(this,xs,"f").getEnv("LANGUAGE")||"en_US";this.locale(e.replace(/[.:].*/,""))}[Q3e](){return this[Pue]().version||"unknown"}[q3e](e){let r=e["--"]?e["--"]:e._;for(let n=0,o;(o=r[n])!==void 0;n++)Ve(this,xs,"f").Parser.looksLikeNumber(o)&&Number.isSafeInteger(Math.floor(parseFloat(`${o}`)))&&(r[n]=Number(o));return e}[Pue](e){let r=e||"*";if(Ve(this,gF,"f")[r])return Ve(this,gF,"f")[r];let n={};try{let o=e||Ve(this,xs,"f").mainFilename;!e&&Ve(this,xs,"f").path.extname(o)&&(o=Ve(this,xs,"f").path.dirname(o));let s=Ve(this,xs,"f").findUp(o,(c,u)=>{if(u.includes("package.json"))return"package.json"});ig(s,void 0,Ve(this,xs,"f")),n=JSON.parse(Ve(this,xs,"f").readFileSync(s,"utf8"))}catch{}return Ve(this,gF,"f")[r]=n||{},Ve(this,gF,"f")[r]}[tk](e,r){r=[].concat(r),r.forEach(n=>{n=this[Oue](n),Ve(this,Bi,"f")[e].push(n)})}[AF](e,r,n,o){this[Nue](e,r,n,o,(s,c,u)=>{Ve(this,Bi,"f")[s][c]=u})}[Rue](e,r,n,o){this[Nue](e,r,n,o,(s,c,u)=>{Ve(this,Bi,"f")[s][c]=(Ve(this,Bi,"f")[s][c]||[]).concat(u)})}[Nue](e,r,n,o,s){if(Array.isArray(n))n.forEach(c=>{e(c,o)});else if((c=>typeof c=="object")(n))for(let c of dF(n))e(c,n[c]);else s(r,this[Oue](n),o)}[Oue](e){return e==="__proto__"?"___proto___":e}[Fue](e,r){return this[AF](this[Fue].bind(this),"key",e,r),this}[Lue](){var e,r,n,o,s,c,u,p,f,h,g,y;let v=Ve(this,YV,"f").pop();ig(v,void 0,Ve(this,xs,"f"));let A;e=this,r=this,n=this,o=this,s=this,c=this,u=this,p=this,f=this,h=this,g=this,y=this,{options:{set value(S){ci(e,Bi,S,"f")}}.value,configObjects:A,exitProcess:{set value(S){ci(r,Cv,S,"f")}}.value,groups:{set value(S){ci(n,Mw,S,"f")}}.value,output:{set value(S){ci(o,md,S,"f")}}.value,exitError:{set value(S){ci(s,ZI,S,"f")}}.value,hasOutput:{set value(S){ci(c,KA,S,"f")}}.value,parsed:this.parsed,strict:{set value(S){ci(u,AD,S,"f")}}.value,strictCommands:{set value(S){ci(p,yD,S,"f")}}.value,strictOptions:{set value(S){ci(f,vD,S,"f")}}.value,completionCommand:{set value(S){ci(h,JA,S,"f")}}.value,parseFn:{set value(S){ci(g,XA,S,"f")}}.value,parseContext:{set value(S){ci(y,mD,S,"f")}}.value}=v,Ve(this,Bi,"f").configObjects=A,Ve(this,Ls,"f").unfreeze(),Ve(this,cp,"f").unfreeze(),Ve(this,Fp,"f").unfreeze(),Ve(this,Iv,"f").unfreeze()}[U3e](e,r){return fD(r,n=>(e(n),n))}getInternalMethods(){return{getCommandInstance:this[$3e].bind(this),getContext:this[z3e].bind(this),getHasOutput:this[H3e].bind(this),getLoggerInstance:this[V3e].bind(this),getParseContext:this[G3e].bind(this),getParserConfiguration:this[xD].bind(this),getUsageConfiguration:this[M3e].bind(this),getUsageInstance:this[W3e].bind(this),getValidationInstance:this[Y3e].bind(this),hasParseCallback:this[tG].bind(this),isGlobalContext:this[J3e].bind(this),postProcess:this[bD].bind(this),reset:this[jue].bind(this),runValidation:this[Mue].bind(this),runYargsParserAndExecuteCommands:this[R8].bind(this),setHasOutput:this[X3e].bind(this)}}[$3e](){return Ve(this,Fp,"f")}[z3e](){return Ve(this,P8,"f")}[H3e](){return Ve(this,KA,"f")}[V3e](){return Ve(this,mF,"f")}[G3e](){return Ve(this,mD,"f")||{}}[W3e](){return Ve(this,Ls,"f")}[Y3e](){return Ve(this,cp,"f")}[tG](){return!!Ve(this,XA,"f")}[J3e](){return Ve(this,JV,"f")}[bD](e,r,n,o){return n||Mu(e)||(r||(e=this[N3e](e)),(this[xD]()["parse-positional-numbers"]||this[xD]()["parse-positional-numbers"]===void 0)&&(e=this[q3e](e)),o&&(e=pD(e,this,Ve(this,Iv,"f").getMiddleware(),!1))),e}[jue](e={}){ci(this,Bi,Ve(this,Bi,"f")||{},"f");let r={};r.local=Ve(this,Bi,"f").local||[],r.configObjects=Ve(this,Bi,"f").configObjects||[];let n={};r.local.forEach(c=>{n[c]=!0,(e[c]||[]).forEach(u=>{n[u]=!0})}),Object.assign(Ve(this,gD,"f"),Object.keys(Ve(this,Mw,"f")).reduce((c,u)=>{let p=Ve(this,Mw,"f")[u].filter(f=>!(f in n));return p.length>0&&(c[u]=p),c},{})),ci(this,Mw,{},"f");let o=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],s=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];return o.forEach(c=>{r[c]=(Ve(this,Bi,"f")[c]||[]).filter(u=>!n[u])}),s.forEach(c=>{r[c]=KI(Ve(this,Bi,"f")[c],u=>!n[u])}),r.envPrefix=Ve(this,Bi,"f").envPrefix,ci(this,Bi,r,"f"),ci(this,Ls,Ve(this,Ls,"f")?Ve(this,Ls,"f").reset(n):I3e(this,Ve(this,xs,"f")),"f"),ci(this,cp,Ve(this,cp,"f")?Ve(this,cp,"f").reset(n):R3e(this,Ve(this,Ls,"f"),Ve(this,xs,"f")),"f"),ci(this,Fp,Ve(this,Fp,"f")?Ve(this,Fp,"f").reset():_3e(Ve(this,Ls,"f"),Ve(this,cp,"f"),Ve(this,Iv,"f"),Ve(this,xs,"f")),"f"),Ve(this,Sv,"f")||ci(this,Sv,B3e(this,Ve(this,Ls,"f"),Ve(this,Fp,"f"),Ve(this,xs,"f")),"f"),Ve(this,Iv,"f").reset(),ci(this,JA,null,"f"),ci(this,md,"","f"),ci(this,ZI,null,"f"),ci(this,KA,!1,"f"),this.parsed=!1,this}[K3e](e,r){return Ve(this,xs,"f").path.relative(e,r)}[R8](e,r,n,o=0,s=!1){let c=!!n||s;e=e||Ve(this,ek,"f"),Ve(this,Bi,"f").__=Ve(this,xs,"f").y18n.__,Ve(this,Bi,"f").configuration=this[xD]();let u=!!Ve(this,Bi,"f").configuration["populate--"],p=Object.assign({},Ve(this,Bi,"f").configuration,{"populate--":!0}),f=Ve(this,xs,"f").Parser.detailed(e,Object.assign({},Ve(this,Bi,"f"),{configuration:{"parse-positional-numbers":!1,...p}})),h=Object.assign(f.argv,Ve(this,mD,"f")),g,y=f.aliases,v=!1,A=!1;Object.keys(h).forEach(S=>{S===Ve(this,kv,"f")&&h[S]?v=!0:S===Ve(this,Qw,"f")&&h[S]&&(A=!0)}),h.$0=this.$0,this.parsed=f,o===0&&Ve(this,Ls,"f").clearCachedHelpMessage();try{if(this[Due](),r)return this[bD](h,u,!!n,!1);Ve(this,kv,"f")&&[Ve(this,kv,"f")].concat(y[Ve(this,kv,"f")]||[]).filter(j=>j.length>1).includes(""+h._[h._.length-1])&&(h._.pop(),v=!0),ci(this,JV,!1,"f");let S=Ve(this,Fp,"f").getCommands(),E=Ve(this,Sv,"f").completionKey in h,k=v||E||s;if(h._.length){if(S.length){let P;for(let j=o||0,F;h._[j]!==void 0;j++)if(F=String(h._[j]),S.includes(F)&&F!==Ve(this,JA,"f")){let z=Ve(this,Fp,"f").runCommand(F,this,f,j+1,s,v||A||s);return this[bD](z,u,!!n,!1)}else if(!P&&F!==Ve(this,JA,"f")){P=F;break}!Ve(this,Fp,"f").hasDefaultCommand()&&Ve(this,ZV,"f")&&P&&!k&&Ve(this,cp,"f").recommendCommands(P,S)}Ve(this,JA,"f")&&h._.includes(Ve(this,JA,"f"))&&!E&&(Ve(this,Cv,"f")&&XI(!0),this.showCompletionScript(),this.exit(0))}if(Ve(this,Fp,"f").hasDefaultCommand()&&!k){let P=Ve(this,Fp,"f").runCommand(null,this,f,0,s,v||A||s);return this[bD](P,u,!!n,!1)}if(E){Ve(this,Cv,"f")&&XI(!0),e=[].concat(e);let P=e.slice(e.indexOf(`--${Ve(this,Sv,"f").completionKey}`)+1);return Ve(this,Sv,"f").getCompletion(P,(j,F)=>{if(j)throw new ju(j.message);(F||[]).forEach(z=>{Ve(this,mF,"f").log(z)}),this.exit(0)}),this[bD](h,!u,!!n,!1)}if(Ve(this,KA,"f")||(v?(Ve(this,Cv,"f")&&XI(!0),c=!0,this.showHelp("log"),this.exit(0)):A&&(Ve(this,Cv,"f")&&XI(!0),c=!0,Ve(this,Ls,"f").showVersion("log"),this.exit(0))),!c&&Ve(this,Bi,"f").skipValidation.length>0&&(c=Object.keys(h).some(P=>Ve(this,Bi,"f").skipValidation.indexOf(P)>=0&&h[P]===!0)),!c){if(f.error)throw new ju(f.error.message);if(!E){let P=this[Mue](y,{},f.error);n||(g=pD(h,this,Ve(this,Iv,"f").getMiddleware(),!0)),g=this[U3e](P,g!=null?g:h),Mu(g)&&!n&&(g=g.then(()=>pD(h,this,Ve(this,Iv,"f").getMiddleware(),!1)))}}}catch(S){if(S instanceof ju)Ve(this,Ls,"f").fail(S.message,S);else throw S}return this[bD](g!=null?g:h,u,!!n,!0)}[Mue](e,r,n,o){let s={...this.getDemandedOptions()};return c=>{if(n)throw new ju(n.message);Ve(this,cp,"f").nonOptionCount(c),Ve(this,cp,"f").requiredArguments(c,s);let u=!1;Ve(this,yD,"f")&&(u=Ve(this,cp,"f").unknownCommands(c)),Ve(this,AD,"f")&&!u?Ve(this,cp,"f").unknownArguments(c,e,r,!!o):Ve(this,vD,"f")&&Ve(this,cp,"f").unknownArguments(c,e,{},!1,!1),Ve(this,cp,"f").limitedChoices(c),Ve(this,cp,"f").implications(c),Ve(this,cp,"f").conflicting(c)}}[X3e](){ci(this,KA,!0,"f")}[ED](e){if(typeof e=="string")Ve(this,Bi,"f").key[e]=!0;else for(let r of e)Ve(this,Bi,"f").key[r]=!0}};function S3e(t){return!!t&&typeof t.getInternalMethods=="function"}var rrr=Z3e(_ue),eMe=rrr;var yb={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"]}};var Lde=Bt(Wc()),jde=Bt(NF()),Mde=Bt($pe());function Dq(t,e){return function(){return t.apply(e,arguments)}}var{toString:rar}=Object.prototype,{getPrototypeOf:VG}=Object,{iterator:GG,toStringTag:Q6e}=Symbol,WG=(t=>e=>{let r=rar.call(e);return t[r]||(t[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Ib=t=>(t=t.toLowerCase(),e=>WG(e)===t),YG=t=>e=>typeof e===t,{isArray:OD}=Array,LF=YG("undefined");function jF(t){return t!==null&&!LF(t)&&t.constructor!==null&&!LF(t.constructor)&&O0(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}var q6e=Ib("ArrayBuffer");function nar(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&q6e(t.buffer),e}var iar=YG("string"),O0=YG("function"),U6e=YG("number"),Pq=t=>t!==null&&typeof t=="object",sar=t=>t===!0||t===!1,HG=t=>{if(WG(t)!=="object")return!1;let e=VG(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Q6e in t)&&!(GG in t)},oar=t=>{if(!Pq(t)||jF(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},aar=Ib("Date"),car=Ib("File"),uar=t=>!!(t&&typeof t.uri<"u"),lar=t=>t&&typeof t.getParts<"u",par=Ib("Blob"),far=Ib("FileList"),dar=t=>Pq(t)&&O0(t.pipe);function har(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}var j6e=har(),M6e=typeof j6e.FormData<"u"?j6e.FormData:void 0,mar=t=>{if(!t)return!1;if(M6e&&t instanceof M6e)return!0;let e=VG(t);if(!e||e===Object.prototype||!O0(t.append))return!1;let r=WG(t);return r==="formdata"||r==="object"&&O0(t.toString)&&t.toString()==="[object FormData]"},gar=Ib("URLSearchParams"),[Aar,yar,xar,bar]=["ReadableStream","Request","Response","Headers"].map(Ib),Ear=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Rq(t,e,{allOwnKeys:r=!1}={}){if(t===null||typeof t>"u")return;let n,o;if(typeof t!="object"&&(t=[t]),OD(t))for(n=0,o=t.length;n<o;n++)e.call(null,t[n],n,t);else{if(jF(t))return;let s=r?Object.getOwnPropertyNames(t):Object.keys(t),c=s.length,u;for(n=0;n<c;n++)u=s[n],e.call(null,t[u],u,t)}}function $6e(t,e){if(jF(t))return null;e=e.toLowerCase();let r=Object.keys(t),n=r.length,o;for(;n-- >0;)if(o=r[n],e===o.toLowerCase())return o;return null}var ND=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,z6e=t=>!LF(t)&&t!==ND;function zpe(...t){let{caseless:e,skipUndefined:r}=z6e(this)&&this||{},n={},o=(s,c)=>{if(c==="__proto__"||c==="constructor"||c==="prototype")return;let u=e&&typeof c=="string"&&$6e(n,c)||c,p=Hpe(n,u)?n[u]:void 0;HG(p)&&HG(s)?n[u]=zpe(p,s):HG(s)?n[u]=zpe({},s):OD(s)?n[u]=s.slice():(!r||!LF(s))&&(n[u]=s)};for(let s=0,c=t.length;s<c;s++){let u=t[s];if(!u||jF(u)||(Rq(u,o),typeof u!="object"||OD(u)))continue;let p=Object.getOwnPropertySymbols(u);for(let f=0;f<p.length;f++){let h=p[f];Nar.call(u,h)&&o(u[h],h)}}return n}var war=(t,e,r,{allOwnKeys:n}={})=>(Rq(e,(o,s)=>{r&&O0(o)?Object.defineProperty(t,s,{__proto__:null,value:Dq(o,r),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(t,s,{__proto__:null,value:o,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:n}),t),_ar=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),Sar=(t,e,r,n)=>{t.prototype=Object.create(e.prototype,n),Object.defineProperty(t.prototype,"constructor",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(t,"super",{__proto__:null,value:e.prototype}),r&&Object.assign(t.prototype,r)},Car=(t,e,r,n)=>{let o,s,c,u={};if(e=e||{},t==null)return e;do{for(o=Object.getOwnPropertyNames(t),s=o.length;s-- >0;)c=o[s],(!n||n(c,t,e))&&!u[c]&&(e[c]=t[c],u[c]=!0);t=r!==!1&&VG(t)}while(t&&(!r||r(t,e))&&t!==Object.prototype);return e},Iar=(t,e,r)=>{t=String(t),(r===void 0||r>t.length)&&(r=t.length),r-=e.length;let n=t.indexOf(e,r);return n!==-1&&n===r},kar=t=>{if(!t)return null;if(OD(t))return t;let e=t.length;if(!U6e(e))return null;let r=new Array(e);for(;e-- >0;)r[e]=t[e];return r},Tar=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&VG(Uint8Array)),Bar=(t,e)=>{let n=(t&&t[GG]).call(t),o;for(;(o=n.next())&&!o.done;){let s=o.value;e.call(t,s[0],s[1])}},Dar=(t,e)=>{let r,n=[];for(;(r=t.exec(e))!==null;)n.push(r);return n},Par=Ib("HTMLFormElement"),Rar=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,o){return n.toUpperCase()+o}),Hpe=(({hasOwnProperty:t})=>(e,r)=>t.call(e,r))(Object.prototype),{propertyIsEnumerable:Nar}=Object.prototype,Oar=Ib("RegExp"),H6e=(t,e)=>{let r=Object.getOwnPropertyDescriptors(t),n={};Rq(r,(o,s)=>{let c;(c=e(o,s,t))!==!1&&(n[s]=c||o)}),Object.defineProperties(t,n)},Far=t=>{H6e(t,(e,r)=>{if(O0(t)&&["arguments","caller","callee"].includes(r))return!1;let n=t[r];if(O0(n)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},Lar=(t,e)=>{let r={},n=o=>{o.forEach(s=>{r[s]=!0})};return OD(t)?n(t):n(String(t).split(e)),r},jar=()=>{},Mar=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function Qar(t){return!!(t&&O0(t.append)&&t[Q6e]==="FormData"&&t[GG])}var qar=t=>{let e=new WeakSet,r=n=>{if(Pq(n)){if(e.has(n))return;if(jF(n))return n;if(!("toJSON"in n)){e.add(n);let o=OD(n)?[]:{};return Rq(n,(s,c)=>{let u=r(s);!LF(u)&&(o[c]=u)}),e.delete(n),o}}return n};return r(t)},Uar=Ib("AsyncFunction"),$ar=t=>t&&(Pq(t)||O0(t))&&O0(t.then)&&O0(t.catch),V6e=((t,e)=>t?setImmediate:e?((r,n)=>(ND.addEventListener("message",({source:o,data:s})=>{o===ND&&s===r&&n.length&&n.shift()()},!1),o=>{n.push(o),ND.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",O0(ND.postMessage)),zar=typeof queueMicrotask<"u"?queueMicrotask.bind(ND):typeof process<"u"&&process.nextTick||V6e,Har=t=>t!=null&&O0(t[GG]),lt={isArray:OD,isArrayBuffer:q6e,isBuffer:jF,isFormData:mar,isArrayBufferView:nar,isString:iar,isNumber:U6e,isBoolean:sar,isObject:Pq,isPlainObject:HG,isEmptyObject:oar,isReadableStream:Aar,isRequest:yar,isResponse:xar,isHeaders:bar,isUndefined:LF,isDate:aar,isFile:car,isReactNativeBlob:uar,isReactNative:lar,isBlob:par,isRegExp:Oar,isFunction:O0,isStream:dar,isURLSearchParams:gar,isTypedArray:Tar,isFileList:far,forEach:Rq,merge:zpe,extend:war,trim:Ear,stripBOM:_ar,inherits:Sar,toFlatObject:Car,kindOf:WG,kindOfTest:Ib,endsWith:Iar,toArray:kar,forEachEntry:Bar,matchAll:Dar,isHTMLForm:Par,hasOwnProperty:Hpe,hasOwnProp:Hpe,reduceDescriptors:H6e,freezeMethods:Far,toObjectSet:Lar,toCamelCase:Rar,noop:jar,toFiniteNumber:Mar,findKey:$6e,global:ND,isContextDefined:z6e,isSpecCompliantForm:Qar,toJSONObject:qar,isAsyncFn:Uar,isThenable:$ar,setImmediate:V6e,asap:zar,isIterable:Har};var Var=lt.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),G6e=t=>{let e={},r,n,o;return t&&t.split(`
|
|
569
|
+
`,"f"),ci(this,md,Ve(this,md,"f")+e.join(" "),"f")}}}[Bue](e){dF(Ve(this,Bi,"f")).forEach(r=>{if((o=>o==="configObjects")(r))return;let n=Ve(this,Bi,"f")[r];Array.isArray(n)?n.includes(e)&&n.splice(n.indexOf(e),1):typeof n=="object"&&delete n[e]}),delete Ve(this,Ls,"f").getDescriptions()[e]}[F3e](e,r,n){Ve(this,WV,"f")[n]||(Ve(this,xs,"f").process.emitWarning(e,r),Ve(this,WV,"f")[n]=!0)}[L3e](){Ve(this,YV,"f").push({options:Ve(this,Bi,"f"),configObjects:Ve(this,Bi,"f").configObjects.slice(0),exitProcess:Ve(this,Cv,"f"),groups:Ve(this,Mw,"f"),strict:Ve(this,AD,"f"),strictCommands:Ve(this,yD,"f"),strictOptions:Ve(this,vD,"f"),completionCommand:Ve(this,JA,"f"),output:Ve(this,md,"f"),exitError:Ve(this,ZI,"f"),hasOutput:Ve(this,KA,"f"),parsed:this.parsed,parseFn:Ve(this,XA,"f"),parseContext:Ve(this,mD,"f")}),Ve(this,Ls,"f").freeze(),Ve(this,cp,"f").freeze(),Ve(this,Fp,"f").freeze(),Ve(this,Iv,"f").freeze()}[j3e](){let e="",r;return/\b(node|iojs|electron)(\.exe)?$/.test(Ve(this,xs,"f").process.argv()[0])?r=Ve(this,xs,"f").process.argv().slice(1,2):r=Ve(this,xs,"f").process.argv().slice(0,1),e=r.map(n=>{let o=this[K3e](Ve(this,dD,"f"),n);return n.match(/^(\/|([a-zA-Z]:)?\\)/)&&o.length<n.length?o:n}).join(" ").trim(),Ve(this,xs,"f").getEnv("_")&&Ve(this,xs,"f").getProcessArgvBin()===Ve(this,xs,"f").getEnv("_")&&(e=Ve(this,xs,"f").getEnv("_").replace(`${Ve(this,xs,"f").path.dirname(Ve(this,xs,"f").process.execPath())}/`,"")),e}[xD](){return Ve(this,XV,"f")}[M3e](){return Ve(this,eG,"f")}[Due](){if(!Ve(this,hD,"f"))return;let e=Ve(this,xs,"f").getEnv("LC_ALL")||Ve(this,xs,"f").getEnv("LC_MESSAGES")||Ve(this,xs,"f").getEnv("LANG")||Ve(this,xs,"f").getEnv("LANGUAGE")||"en_US";this.locale(e.replace(/[.:].*/,""))}[Q3e](){return this[Pue]().version||"unknown"}[q3e](e){let r=e["--"]?e["--"]:e._;for(let n=0,o;(o=r[n])!==void 0;n++)Ve(this,xs,"f").Parser.looksLikeNumber(o)&&Number.isSafeInteger(Math.floor(parseFloat(`${o}`)))&&(r[n]=Number(o));return e}[Pue](e){let r=e||"*";if(Ve(this,gF,"f")[r])return Ve(this,gF,"f")[r];let n={};try{let o=e||Ve(this,xs,"f").mainFilename;!e&&Ve(this,xs,"f").path.extname(o)&&(o=Ve(this,xs,"f").path.dirname(o));let s=Ve(this,xs,"f").findUp(o,(c,u)=>{if(u.includes("package.json"))return"package.json"});ig(s,void 0,Ve(this,xs,"f")),n=JSON.parse(Ve(this,xs,"f").readFileSync(s,"utf8"))}catch{}return Ve(this,gF,"f")[r]=n||{},Ve(this,gF,"f")[r]}[tk](e,r){r=[].concat(r),r.forEach(n=>{n=this[Oue](n),Ve(this,Bi,"f")[e].push(n)})}[AF](e,r,n,o){this[Nue](e,r,n,o,(s,c,u)=>{Ve(this,Bi,"f")[s][c]=u})}[Rue](e,r,n,o){this[Nue](e,r,n,o,(s,c,u)=>{Ve(this,Bi,"f")[s][c]=(Ve(this,Bi,"f")[s][c]||[]).concat(u)})}[Nue](e,r,n,o,s){if(Array.isArray(n))n.forEach(c=>{e(c,o)});else if((c=>typeof c=="object")(n))for(let c of dF(n))e(c,n[c]);else s(r,this[Oue](n),o)}[Oue](e){return e==="__proto__"?"___proto___":e}[Fue](e,r){return this[AF](this[Fue].bind(this),"key",e,r),this}[Lue](){var e,r,n,o,s,c,u,p,f,h,g,y;let v=Ve(this,YV,"f").pop();ig(v,void 0,Ve(this,xs,"f"));let A;e=this,r=this,n=this,o=this,s=this,c=this,u=this,p=this,f=this,h=this,g=this,y=this,{options:{set value(S){ci(e,Bi,S,"f")}}.value,configObjects:A,exitProcess:{set value(S){ci(r,Cv,S,"f")}}.value,groups:{set value(S){ci(n,Mw,S,"f")}}.value,output:{set value(S){ci(o,md,S,"f")}}.value,exitError:{set value(S){ci(s,ZI,S,"f")}}.value,hasOutput:{set value(S){ci(c,KA,S,"f")}}.value,parsed:this.parsed,strict:{set value(S){ci(u,AD,S,"f")}}.value,strictCommands:{set value(S){ci(p,yD,S,"f")}}.value,strictOptions:{set value(S){ci(f,vD,S,"f")}}.value,completionCommand:{set value(S){ci(h,JA,S,"f")}}.value,parseFn:{set value(S){ci(g,XA,S,"f")}}.value,parseContext:{set value(S){ci(y,mD,S,"f")}}.value}=v,Ve(this,Bi,"f").configObjects=A,Ve(this,Ls,"f").unfreeze(),Ve(this,cp,"f").unfreeze(),Ve(this,Fp,"f").unfreeze(),Ve(this,Iv,"f").unfreeze()}[U3e](e,r){return fD(r,n=>(e(n),n))}getInternalMethods(){return{getCommandInstance:this[$3e].bind(this),getContext:this[z3e].bind(this),getHasOutput:this[H3e].bind(this),getLoggerInstance:this[V3e].bind(this),getParseContext:this[G3e].bind(this),getParserConfiguration:this[xD].bind(this),getUsageConfiguration:this[M3e].bind(this),getUsageInstance:this[W3e].bind(this),getValidationInstance:this[Y3e].bind(this),hasParseCallback:this[tG].bind(this),isGlobalContext:this[J3e].bind(this),postProcess:this[bD].bind(this),reset:this[jue].bind(this),runValidation:this[Mue].bind(this),runYargsParserAndExecuteCommands:this[R8].bind(this),setHasOutput:this[X3e].bind(this)}}[$3e](){return Ve(this,Fp,"f")}[z3e](){return Ve(this,P8,"f")}[H3e](){return Ve(this,KA,"f")}[V3e](){return Ve(this,mF,"f")}[G3e](){return Ve(this,mD,"f")||{}}[W3e](){return Ve(this,Ls,"f")}[Y3e](){return Ve(this,cp,"f")}[tG](){return!!Ve(this,XA,"f")}[J3e](){return Ve(this,JV,"f")}[bD](e,r,n,o){return n||Mu(e)||(r||(e=this[N3e](e)),(this[xD]()["parse-positional-numbers"]||this[xD]()["parse-positional-numbers"]===void 0)&&(e=this[q3e](e)),o&&(e=pD(e,this,Ve(this,Iv,"f").getMiddleware(),!1))),e}[jue](e={}){ci(this,Bi,Ve(this,Bi,"f")||{},"f");let r={};r.local=Ve(this,Bi,"f").local||[],r.configObjects=Ve(this,Bi,"f").configObjects||[];let n={};r.local.forEach(c=>{n[c]=!0,(e[c]||[]).forEach(u=>{n[u]=!0})}),Object.assign(Ve(this,gD,"f"),Object.keys(Ve(this,Mw,"f")).reduce((c,u)=>{let p=Ve(this,Mw,"f")[u].filter(f=>!(f in n));return p.length>0&&(c[u]=p),c},{})),ci(this,Mw,{},"f");let o=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],s=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];return o.forEach(c=>{r[c]=(Ve(this,Bi,"f")[c]||[]).filter(u=>!n[u])}),s.forEach(c=>{r[c]=KI(Ve(this,Bi,"f")[c],u=>!n[u])}),r.envPrefix=Ve(this,Bi,"f").envPrefix,ci(this,Bi,r,"f"),ci(this,Ls,Ve(this,Ls,"f")?Ve(this,Ls,"f").reset(n):I3e(this,Ve(this,xs,"f")),"f"),ci(this,cp,Ve(this,cp,"f")?Ve(this,cp,"f").reset(n):R3e(this,Ve(this,Ls,"f"),Ve(this,xs,"f")),"f"),ci(this,Fp,Ve(this,Fp,"f")?Ve(this,Fp,"f").reset():_3e(Ve(this,Ls,"f"),Ve(this,cp,"f"),Ve(this,Iv,"f"),Ve(this,xs,"f")),"f"),Ve(this,Sv,"f")||ci(this,Sv,B3e(this,Ve(this,Ls,"f"),Ve(this,Fp,"f"),Ve(this,xs,"f")),"f"),Ve(this,Iv,"f").reset(),ci(this,JA,null,"f"),ci(this,md,"","f"),ci(this,ZI,null,"f"),ci(this,KA,!1,"f"),this.parsed=!1,this}[K3e](e,r){return Ve(this,xs,"f").path.relative(e,r)}[R8](e,r,n,o=0,s=!1){let c=!!n||s;e=e||Ve(this,ek,"f"),Ve(this,Bi,"f").__=Ve(this,xs,"f").y18n.__,Ve(this,Bi,"f").configuration=this[xD]();let u=!!Ve(this,Bi,"f").configuration["populate--"],p=Object.assign({},Ve(this,Bi,"f").configuration,{"populate--":!0}),f=Ve(this,xs,"f").Parser.detailed(e,Object.assign({},Ve(this,Bi,"f"),{configuration:{"parse-positional-numbers":!1,...p}})),h=Object.assign(f.argv,Ve(this,mD,"f")),g,y=f.aliases,v=!1,A=!1;Object.keys(h).forEach(S=>{S===Ve(this,kv,"f")&&h[S]?v=!0:S===Ve(this,Qw,"f")&&h[S]&&(A=!0)}),h.$0=this.$0,this.parsed=f,o===0&&Ve(this,Ls,"f").clearCachedHelpMessage();try{if(this[Due](),r)return this[bD](h,u,!!n,!1);Ve(this,kv,"f")&&[Ve(this,kv,"f")].concat(y[Ve(this,kv,"f")]||[]).filter(j=>j.length>1).includes(""+h._[h._.length-1])&&(h._.pop(),v=!0),ci(this,JV,!1,"f");let S=Ve(this,Fp,"f").getCommands(),E=Ve(this,Sv,"f").completionKey in h,k=v||E||s;if(h._.length){if(S.length){let P;for(let j=o||0,F;h._[j]!==void 0;j++)if(F=String(h._[j]),S.includes(F)&&F!==Ve(this,JA,"f")){let z=Ve(this,Fp,"f").runCommand(F,this,f,j+1,s,v||A||s);return this[bD](z,u,!!n,!1)}else if(!P&&F!==Ve(this,JA,"f")){P=F;break}!Ve(this,Fp,"f").hasDefaultCommand()&&Ve(this,ZV,"f")&&P&&!k&&Ve(this,cp,"f").recommendCommands(P,S)}Ve(this,JA,"f")&&h._.includes(Ve(this,JA,"f"))&&!E&&(Ve(this,Cv,"f")&&XI(!0),this.showCompletionScript(),this.exit(0))}if(Ve(this,Fp,"f").hasDefaultCommand()&&!k){let P=Ve(this,Fp,"f").runCommand(null,this,f,0,s,v||A||s);return this[bD](P,u,!!n,!1)}if(E){Ve(this,Cv,"f")&&XI(!0),e=[].concat(e);let P=e.slice(e.indexOf(`--${Ve(this,Sv,"f").completionKey}`)+1);return Ve(this,Sv,"f").getCompletion(P,(j,F)=>{if(j)throw new ju(j.message);(F||[]).forEach(z=>{Ve(this,mF,"f").log(z)}),this.exit(0)}),this[bD](h,!u,!!n,!1)}if(Ve(this,KA,"f")||(v?(Ve(this,Cv,"f")&&XI(!0),c=!0,this.showHelp("log"),this.exit(0)):A&&(Ve(this,Cv,"f")&&XI(!0),c=!0,Ve(this,Ls,"f").showVersion("log"),this.exit(0))),!c&&Ve(this,Bi,"f").skipValidation.length>0&&(c=Object.keys(h).some(P=>Ve(this,Bi,"f").skipValidation.indexOf(P)>=0&&h[P]===!0)),!c){if(f.error)throw new ju(f.error.message);if(!E){let P=this[Mue](y,{},f.error);n||(g=pD(h,this,Ve(this,Iv,"f").getMiddleware(),!0)),g=this[U3e](P,g!=null?g:h),Mu(g)&&!n&&(g=g.then(()=>pD(h,this,Ve(this,Iv,"f").getMiddleware(),!1)))}}}catch(S){if(S instanceof ju)Ve(this,Ls,"f").fail(S.message,S);else throw S}return this[bD](g!=null?g:h,u,!!n,!0)}[Mue](e,r,n,o){let s={...this.getDemandedOptions()};return c=>{if(n)throw new ju(n.message);Ve(this,cp,"f").nonOptionCount(c),Ve(this,cp,"f").requiredArguments(c,s);let u=!1;Ve(this,yD,"f")&&(u=Ve(this,cp,"f").unknownCommands(c)),Ve(this,AD,"f")&&!u?Ve(this,cp,"f").unknownArguments(c,e,r,!!o):Ve(this,vD,"f")&&Ve(this,cp,"f").unknownArguments(c,e,{},!1,!1),Ve(this,cp,"f").limitedChoices(c),Ve(this,cp,"f").implications(c),Ve(this,cp,"f").conflicting(c)}}[X3e](){ci(this,KA,!0,"f")}[ED](e){if(typeof e=="string")Ve(this,Bi,"f").key[e]=!0;else for(let r of e)Ve(this,Bi,"f").key[r]=!0}};function S3e(t){return!!t&&typeof t.getInternalMethods=="function"}var rrr=Z3e(_ue),eMe=rrr;var yb={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"]}};var Lde=Bt(Wc()),jde=Bt(NF()),Mde=Bt($pe());function Dq(t,e){return function(){return t.apply(e,arguments)}}var{toString:rar}=Object.prototype,{getPrototypeOf:VG}=Object,{iterator:GG,toStringTag:Q6e}=Symbol,WG=(t=>e=>{let r=rar.call(e);return t[r]||(t[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Ib=t=>(t=t.toLowerCase(),e=>WG(e)===t),YG=t=>e=>typeof e===t,{isArray:OD}=Array,LF=YG("undefined");function jF(t){return t!==null&&!LF(t)&&t.constructor!==null&&!LF(t.constructor)&&O0(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}var q6e=Ib("ArrayBuffer");function nar(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&q6e(t.buffer),e}var iar=YG("string"),O0=YG("function"),U6e=YG("number"),Pq=t=>t!==null&&typeof t=="object",sar=t=>t===!0||t===!1,HG=t=>{if(WG(t)!=="object")return!1;let e=VG(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Q6e in t)&&!(GG in t)},oar=t=>{if(!Pq(t)||jF(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},aar=Ib("Date"),car=Ib("File"),uar=t=>!!(t&&typeof t.uri<"u"),lar=t=>t&&typeof t.getParts<"u",par=Ib("Blob"),far=Ib("FileList"),dar=t=>Pq(t)&&O0(t.pipe);function har(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}var j6e=har(),M6e=typeof j6e.FormData<"u"?j6e.FormData:void 0,mar=t=>{if(!t)return!1;if(M6e&&t instanceof M6e)return!0;let e=VG(t);if(!e||e===Object.prototype||!O0(t.append))return!1;let r=WG(t);return r==="formdata"||r==="object"&&O0(t.toString)&&t.toString()==="[object FormData]"},gar=Ib("URLSearchParams"),[Aar,yar,xar,bar]=["ReadableStream","Request","Response","Headers"].map(Ib),Ear=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Rq(t,e,{allOwnKeys:r=!1}={}){if(t===null||typeof t>"u")return;let n,o;if(typeof t!="object"&&(t=[t]),OD(t))for(n=0,o=t.length;n<o;n++)e.call(null,t[n],n,t);else{if(jF(t))return;let s=r?Object.getOwnPropertyNames(t):Object.keys(t),c=s.length,u;for(n=0;n<c;n++)u=s[n],e.call(null,t[u],u,t)}}function $6e(t,e){if(jF(t))return null;e=e.toLowerCase();let r=Object.keys(t),n=r.length,o;for(;n-- >0;)if(o=r[n],e===o.toLowerCase())return o;return null}var ND=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,z6e=t=>!LF(t)&&t!==ND;function zpe(...t){let{caseless:e,skipUndefined:r}=z6e(this)&&this||{},n={},o=(s,c)=>{if(c==="__proto__"||c==="constructor"||c==="prototype")return;let u=e&&typeof c=="string"&&$6e(n,c)||c,p=Hpe(n,u)?n[u]:void 0;HG(p)&&HG(s)?n[u]=zpe(p,s):HG(s)?n[u]=zpe({},s):OD(s)?n[u]=s.slice():(!r||!LF(s))&&(n[u]=s)};for(let s=0,c=t.length;s<c;s++){let u=t[s];if(!u||jF(u)||(Rq(u,o),typeof u!="object"||OD(u)))continue;let p=Object.getOwnPropertySymbols(u);for(let f=0;f<p.length;f++){let h=p[f];Nar.call(u,h)&&o(u[h],h)}}return n}var war=(t,e,r,{allOwnKeys:n}={})=>(Rq(e,(o,s)=>{r&&O0(o)?Object.defineProperty(t,s,{__proto__:null,value:Dq(o,r),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(t,s,{__proto__:null,value:o,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:n}),t),_ar=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),Sar=(t,e,r,n)=>{t.prototype=Object.create(e.prototype,n),Object.defineProperty(t.prototype,"constructor",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(t,"super",{__proto__:null,value:e.prototype}),r&&Object.assign(t.prototype,r)},Car=(t,e,r,n)=>{let o,s,c,u={};if(e=e||{},t==null)return e;do{for(o=Object.getOwnPropertyNames(t),s=o.length;s-- >0;)c=o[s],(!n||n(c,t,e))&&!u[c]&&(e[c]=t[c],u[c]=!0);t=r!==!1&&VG(t)}while(t&&(!r||r(t,e))&&t!==Object.prototype);return e},Iar=(t,e,r)=>{t=String(t),(r===void 0||r>t.length)&&(r=t.length),r-=e.length;let n=t.indexOf(e,r);return n!==-1&&n===r},kar=t=>{if(!t)return null;if(OD(t))return t;let e=t.length;if(!U6e(e))return null;let r=new Array(e);for(;e-- >0;)r[e]=t[e];return r},Tar=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&VG(Uint8Array)),Bar=(t,e)=>{let n=(t&&t[GG]).call(t),o;for(;(o=n.next())&&!o.done;){let s=o.value;e.call(t,s[0],s[1])}},Dar=(t,e)=>{let r,n=[];for(;(r=t.exec(e))!==null;)n.push(r);return n},Par=Ib("HTMLFormElement"),Rar=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,o){return n.toUpperCase()+o}),Hpe=(({hasOwnProperty:t})=>(e,r)=>t.call(e,r))(Object.prototype),{propertyIsEnumerable:Nar}=Object.prototype,Oar=Ib("RegExp"),H6e=(t,e)=>{let r=Object.getOwnPropertyDescriptors(t),n={};Rq(r,(o,s)=>{let c;(c=e(o,s,t))!==!1&&(n[s]=c||o)}),Object.defineProperties(t,n)},Far=t=>{H6e(t,(e,r)=>{if(O0(t)&&["arguments","caller","callee"].includes(r))return!1;let n=t[r];if(O0(n)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},Lar=(t,e)=>{let r={},n=o=>{o.forEach(s=>{r[s]=!0})};return OD(t)?n(t):n(String(t).split(e)),r},jar=()=>{},Mar=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function Qar(t){return!!(t&&O0(t.append)&&t[Q6e]==="FormData"&&t[GG])}var qar=t=>{let e=new WeakSet,r=n=>{if(Pq(n)){if(e.has(n))return;if(jF(n))return n;if(!("toJSON"in n)){e.add(n);let o=OD(n)?[]:{};return Rq(n,(s,c)=>{let u=r(s);!LF(u)&&(o[c]=u)}),e.delete(n),o}}return n};return r(t)},Uar=Ib("AsyncFunction"),$ar=t=>t&&(Pq(t)||O0(t))&&O0(t.then)&&O0(t.catch),V6e=((t,e)=>t?setImmediate:e?((r,n)=>(ND.addEventListener("message",({source:o,data:s})=>{o===ND&&s===r&&n.length&&n.shift()()},!1),o=>{n.push(o),ND.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",O0(ND.postMessage)),zar=typeof queueMicrotask<"u"?queueMicrotask.bind(ND):typeof process<"u"&&process.nextTick||V6e,Har=t=>t!=null&&O0(t[GG]),lt={isArray:OD,isArrayBuffer:q6e,isBuffer:jF,isFormData:mar,isArrayBufferView:nar,isString:iar,isNumber:U6e,isBoolean:sar,isObject:Pq,isPlainObject:HG,isEmptyObject:oar,isReadableStream:Aar,isRequest:yar,isResponse:xar,isHeaders:bar,isUndefined:LF,isDate:aar,isFile:car,isReactNativeBlob:uar,isReactNative:lar,isBlob:par,isRegExp:Oar,isFunction:O0,isStream:dar,isURLSearchParams:gar,isTypedArray:Tar,isFileList:far,forEach:Rq,merge:zpe,extend:war,trim:Ear,stripBOM:_ar,inherits:Sar,toFlatObject:Car,kindOf:WG,kindOfTest:Ib,endsWith:Iar,toArray:kar,forEachEntry:Bar,matchAll:Dar,isHTMLForm:Par,hasOwnProperty:Hpe,hasOwnProp:Hpe,reduceDescriptors:H6e,freezeMethods:Far,toObjectSet:Lar,toCamelCase:Rar,noop:jar,toFiniteNumber:Mar,findKey:$6e,global:ND,isContextDefined:z6e,isSpecCompliantForm:Qar,toJSONObject:qar,isAsyncFn:Uar,isThenable:$ar,setImmediate:V6e,asap:zar,isIterable:Har};var Var=lt.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),G6e=t=>{let e={},r,n,o;return t&&t.split(`
|
|
570
570
|
`).forEach(function(c){o=c.indexOf(":"),r=c.substring(0,o).trim().toLowerCase(),n=c.substring(o+1).trim(),!(!r||e[r]&&Var[r])&&(r==="set-cookie"?e[r]?e[r].push(n):e[r]=[n]:e[r]=e[r]?e[r]+", "+n:n)}),e};function Gar(t){let e=0,r=t.length;for(;e<r;){let n=t.charCodeAt(e);if(n!==9&&n!==32)break;e+=1}for(;r>e;){let n=t.charCodeAt(r-1);if(n!==9&&n!==32)break;r-=1}return e===0&&r===t.length?t:t.slice(e,r)}var War=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),Yar=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function Vpe(t,e){return lt.isArray(t)?t.map(r=>Vpe(r,e)):Gar(String(t).replace(e,""))}var W6e=t=>Vpe(t,War),Jar=t=>Vpe(t,Yar);function MF(t){let e=Object.create(null);return lt.forEach(t.toJSON(),(r,n)=>{e[n]=Jar(r)}),e}var Y6e=Symbol("internals");function Nq(t){return t&&String(t).trim().toLowerCase()}function JG(t){return t===!1||t==null?t:lt.isArray(t)?t.map(JG):W6e(String(t))}function Kar(t){let e=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g,n;for(;n=r.exec(t);)e[n[1]]=n[2];return e}var Xar=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function Gpe(t,e,r,n,o){if(lt.isFunction(n))return n.call(this,e,r);if(o&&(e=r),!!lt.isString(e)){if(lt.isString(n))return e.indexOf(n)!==-1;if(lt.isRegExp(n))return n.test(e)}}function Zar(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,r,n)=>r.toUpperCase()+n)}function ecr(t,e){let r=lt.toCamelCase(" "+e);["get","set","has"].forEach(n=>{Object.defineProperty(t,n+r,{__proto__:null,value:function(o,s,c){return this[n].call(this,e,o,s,c)},configurable:!0})})}var QF=class{constructor(e){e&&this.set(e)}set(e,r,n){let o=this;function s(u,p,f){let h=Nq(p);if(!h)return;let g=lt.findKey(o,h);(!g||o[g]===void 0||f===!0||f===void 0&&o[g]!==!1)&&(o[g||p]=JG(u))}let c=(u,p)=>lt.forEach(u,(f,h)=>s(f,h,p));if(lt.isPlainObject(e)||e instanceof this.constructor)c(e,r);else if(lt.isString(e)&&(e=e.trim())&&!Xar(e))c(G6e(e),r);else if(lt.isObject(e)&<.isIterable(e)){let u={},p,f;for(let h of e){if(!lt.isArray(h))throw new TypeError("Object iterator must return a key-value pair");u[f=h[0]]=(p=u[f])?lt.isArray(p)?[...p,h[1]]:[p,h[1]]:h[1]}c(u,r)}else e!=null&&s(r,e,n);return this}get(e,r){if(e=Nq(e),e){let n=lt.findKey(this,e);if(n){let o=this[n];if(!r)return o;if(r===!0)return Kar(o);if(lt.isFunction(r))return r.call(this,o,n);if(lt.isRegExp(r))return r.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,r){if(e=Nq(e),e){let n=lt.findKey(this,e);return!!(n&&this[n]!==void 0&&(!r||Gpe(this,this[n],n,r)))}return!1}delete(e,r){let n=this,o=!1;function s(c){if(c=Nq(c),c){let u=lt.findKey(n,c);u&&(!r||Gpe(n,n[u],u,r))&&(delete n[u],o=!0)}}return lt.isArray(e)?e.forEach(s):s(e),o}clear(e){let r=Object.keys(this),n=r.length,o=!1;for(;n--;){let s=r[n];(!e||Gpe(this,this[s],s,e,!0))&&(delete this[s],o=!0)}return o}normalize(e){let r=this,n={};return lt.forEach(this,(o,s)=>{let c=lt.findKey(n,s);if(c){r[c]=JG(o),delete r[s];return}let u=e?Zar(s):String(s).trim();u!==s&&delete r[s],r[u]=JG(o),n[u]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let r=Object.create(null);return lt.forEach(this,(n,o)=>{n!=null&&n!==!1&&(r[o]=e&<.isArray(n)?n.join(", "):n)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,r])=>e+": "+r).join(`
|
|
571
571
|
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...r){let n=new this(e);return r.forEach(o=>n.set(o)),n}static accessor(e){let n=(this[Y6e]=this[Y6e]={accessors:{}}).accessors,o=this.prototype;function s(c){let u=Nq(c);n[u]||(ecr(o,c),n[u]=!0)}return lt.isArray(e)?e.forEach(s):s(e),this}};QF.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);lt.reduceDescriptors(QF.prototype,({value:t},e)=>{let r=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(n){this[r]=n}}});lt.freezeMethods(QF);var qu=QF;var tcr="[REDACTED ****]";function rcr(t){if(lt.hasOwnProp(t,"toJSON"))return!0;let e=Object.getPrototypeOf(t);for(;e&&e!==Object.prototype;){if(lt.hasOwnProp(e,"toJSON"))return!0;e=Object.getPrototypeOf(e)}return!1}function ncr(t,e){let r=new Set(e.map(s=>String(s).toLowerCase())),n=[],o=s=>{if(s===null||typeof s!="object"||lt.isBuffer(s))return s;if(n.indexOf(s)!==-1)return;s instanceof qu&&(s=s.toJSON()),n.push(s);let c;if(lt.isArray(s))c=[],s.forEach((u,p)=>{let f=o(u);lt.isUndefined(f)||(c[p]=f)});else{if(!lt.isPlainObject(s)&&rcr(s))return n.pop(),s;c=Object.create(null);for(let[u,p]of Object.entries(s)){let f=r.has(u.toLowerCase())?tcr:o(p);lt.isUndefined(f)||(c[u]=f)}}return n.pop(),c};return o(t)}var ph=class t extends Error{static from(e,r,n,o,s,c){let u=new t(e.message,r||e.code,n,o,s);return u.cause=e,u.name=e.name,e.status!=null&&u.status==null&&(u.status=e.status),c&&Object.assign(u,c),u}constructor(e,r,n,o,s){super(e),Object.defineProperty(this,"message",{__proto__:null,value:e,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,r&&(this.code=r),n&&(this.config=n),o&&(this.request=o),s&&(this.response=s,this.status=s.status)}toJSON(){let e=this.config,r=e&<.hasOwnProp(e,"redact")?e.redact:void 0,n=lt.isArray(r)&&r.length>0?ncr(e,r):lt.toJSONObject(e);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:n,code:this.code,status:this.status}}};ph.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";ph.ERR_BAD_OPTION="ERR_BAD_OPTION";ph.ECONNABORTED="ECONNABORTED";ph.ETIMEDOUT="ETIMEDOUT";ph.ECONNREFUSED="ECONNREFUSED";ph.ERR_NETWORK="ERR_NETWORK";ph.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";ph.ERR_DEPRECATED="ERR_DEPRECATED";ph.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";ph.ERR_BAD_REQUEST="ERR_BAD_REQUEST";ph.ERR_CANCELED="ERR_CANCELED";ph.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";ph.ERR_INVALID_URL="ERR_INVALID_URL";ph.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";var Jr=ph;var K5e=Bt(J5e(),1),cW=K5e.default;function mfe(t){return lt.isPlainObject(t)||lt.isArray(t)}function X5e(t){return lt.endsWith(t,"[]")?t.slice(0,-2):t}function hfe(t,e,r){return t?t.concat(e).map(function(o,s){return o=X5e(o),!r&&s?"["+o+"]":o}).join(r?".":""):e}function Uur(t){return lt.isArray(t)&&!t.some(mfe)}var $ur=lt.toFlatObject(lt,{},null,function(e){return/^is[A-Z]/.test(e)});function zur(t,e,r){if(!lt.isObject(t))throw new TypeError("target must be an object");e=e||new(cW||FormData),r=lt.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(E,k){return!lt.isUndefined(k[E])});let n=r.metaTokens,o=r.visitor||g,s=r.dots,c=r.indexes,u=r.Blob||typeof Blob<"u"&&Blob,p=r.maxDepth===void 0?100:r.maxDepth,f=u&<.isSpecCompliantForm(e);if(!lt.isFunction(o))throw new TypeError("visitor must be a function");function h(S){if(S===null)return"";if(lt.isDate(S))return S.toISOString();if(lt.isBoolean(S))return S.toString();if(!f&<.isBlob(S))throw new Jr("Blob is not supported. Use a Buffer instead.");return lt.isArrayBuffer(S)||lt.isTypedArray(S)?f&&typeof Blob=="function"?new Blob([S]):Buffer.from(S):S}function g(S,E,k){let P=S;if(lt.isReactNative(e)&<.isReactNativeBlob(S))return e.append(hfe(k,E,s),h(S)),!1;if(S&&!k&&typeof S=="object"){if(lt.endsWith(E,"{}"))E=n?E:E.slice(0,-2),S=JSON.stringify(S);else if(lt.isArray(S)&&Uur(S)||(lt.isFileList(S)||lt.endsWith(E,"[]"))&&(P=lt.toArray(S)))return E=X5e(E),P.forEach(function(F,z){!(lt.isUndefined(F)||F===null)&&e.append(c===!0?hfe([E],z,s):c===null?E:E+"[]",h(F))}),!1}return mfe(S)?!0:(e.append(hfe(k,E,s),h(S)),!1)}let y=[],v=Object.assign($ur,{defaultVisitor:g,convertValue:h,isVisitable:mfe});function A(S,E,k=0){if(!lt.isUndefined(S)){if(k>p)throw new Jr("Object is too deeply nested ("+k+" levels). Max depth: "+p,Jr.ERR_FORM_DATA_DEPTH_EXCEEDED);if(y.indexOf(S)!==-1)throw new Error("Circular reference detected in "+E.join("."));y.push(S),lt.forEach(S,function(j,F){(!(lt.isUndefined(j)||j===null)&&o.call(e,j,lt.isString(F)?F.trim():F,E,v))===!0&&A(j,E?E.concat(F):[F],k+1)}),y.pop()}}if(!lt.isObject(t))throw new TypeError("data must be an object");return A(t),e}var ck=zur;function Z5e(t){let e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(t).replace(/[!'()~]|%20/g,function(n){return e[n]})}function e9e(t,e){this._pairs=[],t&&ck(t,this,e)}var t9e=e9e.prototype;t9e.append=function(e,r){this._pairs.push([e,r])};t9e.toString=function(e){let r=e?function(n){return e.call(this,n,Z5e)}:Z5e;return this._pairs.map(function(o){return r(o[0])+"="+r(o[1])},"").join("&")};var r9e=e9e;function Hur(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function LD(t,e,r){if(!e)return t;let n=r&&r.encode||Hur,o=lt.isFunction(r)?{serialize:r}:r,s=o&&o.serialize,c;if(s?c=s(e,o):c=lt.isURLSearchParams(e)?e.toString():new r9e(e,o).toString(n),c){let u=t.indexOf("#");u!==-1&&(t=t.slice(0,u)),t+=(t.indexOf("?")===-1?"?":"&")+c}return t}var gfe=class{constructor(){this.handlers=[]}use(e,r,n){return this.handlers.push({fulfilled:e,rejected:r,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){lt.forEach(this.handlers,function(n){n!==null&&e(n)})}},Afe=gfe;var uk={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1};var o9e=Bt(require("crypto"),1);var n9e=Bt(require("url"),1),i9e=n9e.default.URLSearchParams;var yfe="abcdefghijklmnopqrstuvwxyz",s9e="0123456789",a9e={DIGIT:s9e,ALPHA:yfe,ALPHA_DIGIT:yfe+yfe.toUpperCase()+s9e},Vur=(t=16,e=a9e.ALPHA_DIGIT)=>{let r="",{length:n}=e,o=new Uint32Array(t);o9e.default.randomFillSync(o);for(let s=0;s<t;s++)r+=e[o[s]%n];return r},c9e={isNode:!0,classes:{URLSearchParams:i9e,FormData:cW,Blob:typeof Blob<"u"&&Blob||null},ALPHABET:a9e,generateString:Vur,protocols:["http","https","file","data"]};var bfe={};pue(bfe,{hasBrowserEnv:()=>xfe,hasStandardBrowserEnv:()=>Gur,hasStandardBrowserWebWorkerEnv:()=>Wur,navigator:()=>vfe,origin:()=>Yur});var xfe=typeof window<"u"&&typeof document<"u",vfe=typeof navigator=="object"&&navigator||void 0,Gur=xfe&&(!vfe||["ReactNative","NativeScript","NS"].indexOf(vfe.product)<0),Wur=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Yur=xfe&&window.location.href||"http://localhost";var Va={...bfe,...c9e};function Efe(t,e){return ck(t,new Va.classes.URLSearchParams,{visitor:function(r,n,o,s){return Va.isNode&<.isBuffer(r)?(this.append(n,r.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)},...e})}function Jur(t){return lt.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function Kur(t){let e={},r=Object.keys(t),n,o=r.length,s;for(n=0;n<o;n++)s=r[n],e[s]=t[s];return e}function Xur(t){function e(r,n,o,s){let c=r[s++];if(c==="__proto__")return!0;let u=Number.isFinite(+c),p=s>=r.length;return c=!c&<.isArray(o)?o.length:c,p?(lt.hasOwnProp(o,c)?o[c]=lt.isArray(o[c])?o[c].concat(n):[o[c],n]:o[c]=n,!u):((!lt.hasOwnProp(o,c)||!lt.isObject(o[c]))&&(o[c]=[]),e(r,n,o[c],s)&<.isArray(o[c])&&(o[c]=Kur(o[c])),!u)}if(lt.isFormData(t)&<.isFunction(t.entries)){let r={};return lt.forEachEntry(t,(n,o)=>{e(Jur(n),o,r,0)}),r}return null}var uW=Xur;var HF=(t,e)=>t!=null&<.hasOwnProp(t,e)?t[e]:void 0;function Zur(t,e,r){if(lt.isString(t))try{return(e||JSON.parse)(t),lt.trim(t)}catch(n){if(n.name!=="SyntaxError")throw n}return(r||JSON.stringify)(t)}var wfe={transitional:uk,adapter:["xhr","http","fetch"],transformRequest:[function(e,r){let n=r.getContentType()||"",o=n.indexOf("application/json")>-1,s=lt.isObject(e);if(s&<.isHTMLForm(e)&&(e=new FormData(e)),lt.isFormData(e))return o?JSON.stringify(uW(e)):e;if(lt.isArrayBuffer(e)||lt.isBuffer(e)||lt.isStream(e)||lt.isFile(e)||lt.isBlob(e)||lt.isReadableStream(e))return e;if(lt.isArrayBufferView(e))return e.buffer;if(lt.isURLSearchParams(e))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let u;if(s){let p=HF(this,"formSerializer");if(n.indexOf("application/x-www-form-urlencoded")>-1)return Efe(e,p).toString();if((u=lt.isFileList(e))||n.indexOf("multipart/form-data")>-1){let f=HF(this,"env"),h=f&&f.FormData;return ck(u?{"files[]":e}:e,h&&new h,p)}}return s||o?(r.setContentType("application/json",!1),Zur(e)):e}],transformResponse:[function(e){let r=HF(this,"transitional")||wfe.transitional,n=r&&r.forcedJSONParsing,o=HF(this,"responseType"),s=o==="json";if(lt.isResponse(e)||lt.isReadableStream(e))return e;if(e&<.isString(e)&&(n&&!o||s)){let u=!(r&&r.silentJSONParsing)&&s;try{return JSON.parse(e,HF(this,"parseReviver"))}catch(p){if(u)throw p.name==="SyntaxError"?Jr.from(p,Jr.ERR_BAD_RESPONSE,this,null,HF(this,"response")):p}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Va.classes.FormData,Blob:Va.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};lt.forEach(["delete","get","head","post","put","patch","query"],t=>{wfe.headers[t]={}});var VF=wfe;function Mq(t,e){let r=this||VF,n=e||r,o=qu.from(n.headers),s=n.data;return lt.forEach(t,function(u){s=u.call(r,s,o.normalize(),e?e.status:void 0)}),o.normalize(),s}function Qq(t){return!!(t&&t.__CANCEL__)}var _fe=class extends Jr{constructor(e,r,n){super(e==null?"canceled":e,Jr.ERR_CANCELED,r,n),this.name="CanceledError",this.__CANCEL__=!0}},ty=_fe;function Hw(t,e,r){let n=r.config.validateStatus;!r.status||!n||n(r.status)?t(r):e(new Jr("Request failed with status code "+r.status,r.status>=400&&r.status<500?Jr.ERR_BAD_REQUEST:Jr.ERR_BAD_RESPONSE,r.config,r.request,r))}function Sfe(t){return typeof t!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Cfe(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function jD(t,e,r){let n=!Sfe(e);return t&&(n||r===!1)?Cfe(t,e):e}var elr={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443};function tlr(t){try{return new URL(t)}catch{return null}}function u9e(t){var e=(typeof t=="string"?tlr(t):t)||{},r=e.protocol,n=e.host,o=e.port;if(typeof n!="string"||!n||typeof r!="string"||(r=r.split(":",1)[0],n=n.replace(/:\d*$/,""),o=parseInt(o)||elr[r]||0,!rlr(n,o)))return"";var s=Ife(r+"_proxy")||Ife("all_proxy");return s&&s.indexOf("://")===-1&&(s=r+"://"+s),s}function rlr(t,e){var r=Ife("no_proxy").toLowerCase();return r?r==="*"?!1:r.split(/[,\s]/).every(function(n){if(!n)return!0;var o=n.match(/^(.+):(\d+)$/),s=o?o[1]:n,c=o?parseInt(o[2]):0;return c&&c!==e?!0:/^[.*]/.test(s)?(s.charAt(0)==="*"&&(s=s.slice(1)),!t.endsWith(s)):t!==s}):!0}function Ife(t){return process.env[t.toLowerCase()]||process.env[t.toUpperCase()]||""}var sde=Bt(S9e(),1),t7e=Bt(require("http"),1),r7e=Bt(require("https"),1),n7e=Bt(require("http2"),1),i7e=Bt(require("util"),1),ide=require("path"),s7e=Bt(Yfe(),1),ry=Bt(require("zlib"),1);var rC="1.17.0";function Yq(t){let e=/^([-+\w]{1,25}):(?:\/\/)?/.exec(t);return e&&e[1]||""}var rpr=/^([^,;]+\/[^,;]+)?((?:;[^,;=]+=[^,;]+)*)(;base64)?,([\s\S]*)$/;function Jfe(t,e,r){let n=r&&r.Blob||Va.classes.Blob,o=Yq(t);if(e===void 0&&n&&(e=!0),o==="data"){t=o.length?t.slice(o.length+1):t;let s=rpr.exec(t);if(!s)throw new Jr("Invalid URL",Jr.ERR_INVALID_URL);let c=s[1],u=s[2],p=s[3]?"base64":"utf8",f=s[4],h;c?h=u?c+u:c:u&&(h="text/plain"+u);let g=Buffer.from(decodeURIComponent(f),p);if(e){if(!n)throw new Jr("Blob is not supported",Jr.ERR_NOT_SUPPORT);return new n([g],{type:h})}return g}throw new Jr("Unsupported protocol "+o,Jr.ERR_NOT_SUPPORT)}var Rv=Bt(require("stream"),1);var P9e=Bt(require("stream"),1);var Kfe=Symbol("internals"),Xfe=class extends P9e.default.Transform{constructor(e){e=lt.toFlatObject(e,{maxRate:0,chunkSize:64*1024,minChunkSize:100,timeWindow:500,ticksRate:2,samplesCount:15},null,(n,o)=>!lt.isUndefined(o[n])),super({readableHighWaterMark:e.chunkSize});let r=this[Kfe]={timeWindow:e.timeWindow,chunkSize:e.chunkSize,maxRate:e.maxRate,minChunkSize:e.minChunkSize,bytesSeen:0,isCaptured:!1,notifiedBytesLoaded:0,ts:Date.now(),bytes:0,onReadCallback:null};this.on("newListener",n=>{n==="progress"&&(r.isCaptured||(r.isCaptured=!0))})}_read(e){let r=this[Kfe];return r.onReadCallback&&r.onReadCallback(),super._read(e)}_transform(e,r,n){let o=this[Kfe],s=o.maxRate,c=this.readableHighWaterMark,u=o.timeWindow,p=1e3/u,f=s/p,h=o.minChunkSize!==!1?Math.max(o.minChunkSize,f*.01):0,g=(v,A)=>{let S=Buffer.byteLength(v);o.bytesSeen+=S,o.bytes+=S,o.isCaptured&&this.emit("progress",o.bytesSeen),this.push(v)?process.nextTick(A):o.onReadCallback=()=>{o.onReadCallback=null,process.nextTick(A)}},y=(v,A)=>{let S=Buffer.byteLength(v),E=null,k=c,P,j=0;if(s){let F=Date.now();(!o.ts||(j=F-o.ts)>=u)&&(o.ts=F,P=f-o.bytes,o.bytes=P<0?-P:0,j=0),P=f-o.bytes}if(s){if(P<=0)return setTimeout(()=>{A(null,v)},u-j);P<k&&(k=P)}k&&S>k&&S-k>h&&(E=v.subarray(k),v=v.subarray(0,k)),g(v,E?()=>{process.nextTick(A,null,E)}:A)};y(e,function v(A,S){if(A)return n(A);S?y(S,v):n(null)})}},Zfe=Xfe;var o7e=require("events");var N9e=Bt(require("util"),1),O9e=require("stream");var{asyncIterator:R9e}=Symbol,npr=async function*(t){t.stream?yield*t.stream():t.arrayBuffer?yield await t.arrayBuffer():t[R9e]?yield*t[R9e]():yield t},mW=npr;var ipr=Va.ALPHABET.ALPHA_DIGIT+"-_",Jq=typeof TextEncoder=="function"?new TextEncoder:new N9e.default.TextEncoder,zD=`\r
|
|
572
572
|
`,spr=Jq.encode(zD),opr=2,ede=class{constructor(e,r){let{escapeName:n}=this.constructor,o=lt.isString(r),s=`Content-Disposition: form-data; name="${n(e)}"${!o&&r.name?`; filename="${n(r.name)}"`:""}${zD}`;if(o)r=Jq.encode(String(r).replace(/\r?\n|\r\n?/g,zD));else{let c=String(r.type||"application/octet-stream").replace(/[\r\n]/g,"");s+=`Content-Type: ${c}${zD}`}this.headers=Jq.encode(s+zD),this.contentLength=o?r.byteLength:r.size,this.size=this.headers.byteLength+this.contentLength+opr,this.name=e,this.value=r}async*encode(){yield this.headers;let{value:e}=this;lt.isTypedArray(e)?yield e:yield*mW(e),yield spr}static escapeName(e){return String(e).replace(/[\r\n"]/g,r=>({"\r":"%0D","\n":"%0A",'"':"%22"})[r])}},apr=(t,e,r)=>{let{tag:n="form-data-boundary",size:o=25,boundary:s=n+"-"+Va.generateString(o,ipr)}=r||{};if(!lt.isFormData(t))throw new TypeError("FormData instance required");if(s.length<1||s.length>70)throw new Error("boundary must be 1-70 characters long");let c=Jq.encode("--"+s+zD),u=Jq.encode("--"+s+"--"+zD),p=u.byteLength,f=Array.from(t.entries()).map(([g,y])=>{let v=new ede(g,y);return p+=v.size,v});p+=c.byteLength*f.length,p=lt.toFiniteNumber(p);let h={"Content-Type":`multipart/form-data; boundary=${s}`};return Number.isFinite(p)&&(h["Content-Length"]=p),e&&e(h),O9e.Readable.from(async function*(){for(let g of f)yield c,yield*g.encode();yield u}())},F9e=apr;var L9e=Bt(require("stream"),1),tde=class extends L9e.default.Transform{__transform(e,r,n){this.push(e),n()}_transform(e,r,n){if(e.length!==0&&(this._transform=this.__transform,e[0]!==120)){let o=Buffer.alloc(2);o[0]=120,o[1]=156,this.push(o,r)}this.__transform(e,r,n)}},j9e=tde;var M9e=Bt(require("http2"),1),Q9e=Bt(require("util"),1),rde=class{constructor(){this.sessions=Object.create(null)}getSession(e,r){r=Object.assign({sessionTimeout:1e3},r);let n=this.sessions[e];if(n){let g=n.length;for(let y=0;y<g;y++){let[v,A]=n[y];if(!v.destroyed&&!v.closed&&Q9e.default.isDeepStrictEqual(A,r))return v}}let o=M9e.default.connect(e,r),s,c,u=()=>{if(s)return;s=!0,c&&(clearTimeout(c),c=null);let g=n,y=g.length,v=y;for(;v--;)if(g[v][0]===o){y===1?delete this.sessions[e]:g.splice(v,1),o.closed||o.close();return}},p=o.request,{sessionTimeout:f}=r;if(f!=null){let g=0;o.request=function(){let y=p.apply(this,arguments);return g++,c&&(clearTimeout(c),c=null),y.once("close",()=>{--g||(c=setTimeout(()=>{c=null,u()},f))}),y}}o.once("close",u);let h=[o,r];return n?n.push(h):n=this.sessions[e]=[h],o}},q9e=rde;var cpr=(t,e)=>lt.isAsyncFn(t)?function(...r){let n=r.pop();t.apply(this,r).then(o=>{try{e?n(null,...e(o)):n(null,o)}catch(s){n(s)}},n)}:t,U9e=cpr;var upr=new Set(["localhost"]),H9e=t=>{let e=t.split(".");return e.length!==4||e[0]!=="127"?!1:e.every(r=>/^\d+$/.test(r)&&Number(r)>=0&&Number(r)<=255)},lpr=t=>{if(t==="::1")return!0;let e=t.match(/^::ffff:(\d+\.\d+\.\d+\.\d+)$/i);if(e)return H9e(e[1]);let r=t.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i);if(r){let o=parseInt(r[1],16);return o>=32512&&o<=32767}let n=t.split(":");if(n.length===8){for(let o=0;o<7;o++)if(!/^0+$/.test(n[o]))return!1;return/^0*1$/.test(n[7])}return!1},$9e=t=>t?upr.has(t)||H9e(t)?!0:lpr(t):!1,ppr={http:80,https:443,ws:80,wss:443,ftp:21},fpr=t=>{let e=t,r=0;if(e.charAt(0)==="["){let s=e.indexOf("]");if(s!==-1){let c=e.slice(1,s),u=e.slice(s+1);return u.charAt(0)===":"&&/^\d+$/.test(u.slice(1))&&(r=Number.parseInt(u.slice(1),10)),[c,r]}}let n=e.indexOf(":"),o=e.lastIndexOf(":");return n!==-1&&n===o&&/^\d+$/.test(e.slice(o+1))&&(r=Number.parseInt(e.slice(o+1),10),e=e.slice(0,o)),[e,r]},dpr=/^(?:::|(?:0{1,4}:){1,4}:|(?:0{1,4}:){5})ffff:(\d+\.\d+\.\d+\.\d+)$/i,hpr=/^(?:::|(?:0{1,4}:){1,4}:|(?:0{1,4}:){5})ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i,mpr=t=>{if(typeof t!="string"||t.indexOf(":")===-1)return t;let e=t.match(dpr);if(e)return e[1];let r=t.match(hpr);if(r){let n=parseInt(r[1],16),o=parseInt(r[2],16);return`${n>>8}.${n&255}.${o>>8}.${o&255}`}return t},z9e=t=>t&&(t.charAt(0)==="["&&t.charAt(t.length-1)==="]"&&(t=t.slice(1,-1)),mpr(t.replace(/\.+$/,"")));function nde(t){let e;try{e=new URL(t)}catch{return!1}let r=(process.env.no_proxy||process.env.NO_PROXY||"").toLowerCase();if(!r)return!1;if(r==="*")return!0;let n=Number.parseInt(e.port,10)||ppr[e.protocol.split(":",1)[0]]||0,o=z9e(e.hostname.toLowerCase());return r.split(/[\s,]+/).some(s=>{if(!s)return!1;let[c,u]=fpr(s);return c=z9e(c),!c||u&&u!==n?!1:(c.charAt(0)==="*"&&(c=c.slice(1)),c.charAt(0)==="."?o.endsWith(c):o===c||$9e(o)&&$9e(c))})}function gpr(t,e){t=t||10;let r=new Array(t),n=new Array(t),o=0,s=0,c;return e=e!==void 0?e:1e3,function(p){let f=Date.now(),h=n[s];c||(c=f),r[o]=p,n[o]=f;let g=s,y=0;for(;g!==o;)y+=r[g++],g=g%t;if(o=(o+1)%t,o===s&&(s=(s+1)%t),f-c<e)return;let v=h&&f-h;return v?Math.round(y*1e3/v):void 0}}var V9e=gpr;function Apr(t,e){let r=0,n=1e3/e,o,s,c=(f,h=Date.now())=>{r=h,o=null,s&&(clearTimeout(s),s=null),t(...f)};return[(...f)=>{let h=Date.now(),g=h-r;g>=n?c(f,h):(o=f,s||(s=setTimeout(()=>{s=null,c(o)},n-g)))},()=>o&&c(o)]}var G9e=Apr;var nC=(t,e,r=3)=>{let n=0,o=V9e(50,250);return G9e(s=>{if(!s||typeof s.loaded!="number")return;let c=s.loaded,u=s.lengthComputable?s.total:void 0,p=u!=null?Math.min(c,u):c,f=Math.max(0,p-n),h=o(f);n=Math.max(n,p);let g={loaded:p,total:u,progress:u?p/u:void 0,bytes:f,rate:h||void 0,estimated:h&&u?(u-p)/h:void 0,event:s,lengthComputable:u!=null,[e?"download":"upload"]:!0};t(g)},r)},KF=(t,e)=>{let r=t!=null;return[n=>e[0]({lengthComputable:r,total:t,loaded:n}),e[1]]},XF=t=>(...e)=>lt.asap(()=>t(...e));function Kq(t){if(!t||typeof t!="string"||!t.startsWith("data:"))return 0;let e=t.indexOf(",");if(e<0)return 0;let r=t.slice(5,e),n=t.slice(e+1);if(/;base64/i.test(r)){let c=n.length,u=n.length;for(let v=0;v<u;v++)if(n.charCodeAt(v)===37&&v+2<u){let A=n.charCodeAt(v+1),S=n.charCodeAt(v+2);(A>=48&&A<=57||A>=65&&A<=70||A>=97&&A<=102)&&(S>=48&&S<=57||S>=65&&S<=70||S>=97&&S<=102)&&(c-=2,v+=2)}let p=0,f=u-1,h=v=>v>=2&&n.charCodeAt(v-2)===37&&n.charCodeAt(v-1)===51&&(n.charCodeAt(v)===68||n.charCodeAt(v)===100);f>=0&&(n.charCodeAt(f)===61?(p++,f--):h(f)&&(p++,f-=3)),p===1&&f>=0&&(n.charCodeAt(f)===61||h(f))&&p++;let y=Math.floor(c/4)*3-(p||0);return y>0?y:0}if(typeof Buffer<"u"&&typeof Buffer.byteLength=="function")return Buffer.byteLength(n,"utf8");let s=0;for(let c=0,u=n.length;c<u;c++){let p=n.charCodeAt(c);if(p<128)s+=1;else if(p<2048)s+=2;else if(p>=55296&&p<=56319&&c+1<u){let f=n.charCodeAt(c+1);f>=56320&&f<=57343?(s+=4,c++):s+=3}else s+=3}return s}var W9e={flush:ry.default.constants.Z_SYNC_FLUSH,finishFlush:ry.default.constants.Z_SYNC_FLUSH},ypr={flush:ry.default.constants.BROTLI_OPERATION_FLUSH,finishFlush:ry.default.constants.BROTLI_OPERATION_FLUSH},vpr={flush:ry.default.constants.ZSTD_e_flush,finishFlush:ry.default.constants.ZSTD_e_flush},a7e=lt.isFunction(ry.default.createBrotliDecompress),c7e=lt.isFunction(ry.default.createZstdDecompress),u7e="gzip, compress, deflate"+(a7e?", br":""),xpr=u7e+(c7e?", zstd":""),{http:bpr,https:Epr}=s7e.default,l7e=/https:?/,wpr=["content-type","content-length"];function _pr(t,e,r){if(r!=="content-only"){t.set(e);return}Object.entries(e).forEach(([n,o])=>{wpr.includes(n.toLowerCase())&&t.set(n,o)})}var Y9e=Symbol("axios.http.socketListener"),gW=Symbol("axios.http.currentReq"),p7e=Symbol("axios.http.installedTunnel"),Spr=new Map,J9e=new WeakMap;function Cpr(t,e){let r=t.protocol+"//"+t.hostname+":"+(t.port||"")+"#"+(t.auth||""),n=e?J9e.get(e)||J9e.set(e,new Map).get(e):Spr,o=n.get(r);if(o)return o;let s=e&&e.options?{...e.options,...t}:t;if(o=new sde.default(s),e&&e.options){let c={...e.options},u=o.callback;o.callback=function(f,h){return u.call(this,f,{...c,...h})}}return o[p7e]=!0,n.set(r,o),o}var K9e=Va.protocols.map(t=>t+":"),X9e=t=>{if(!lt.isString(t))return t;try{return decodeURIComponent(t)}catch{return t}},Z9e=(t,[e,r])=>(t.on("end",r).on("error",r),e),Ipr=new q9e;function kpr(t,e,r){t.beforeRedirects.proxy&&t.beforeRedirects.proxy(t),t.beforeRedirects.auth&&t.beforeRedirects.auth(t),t.beforeRedirects.config&&t.beforeRedirects.config(t,e,r)}function f7e(t,e,r,n,o){let s=e;if(!s&&s!==!1){let c=u9e(r);c&&(nde(r)||(s=new URL(c)))}if(n&&t.headers)for(let c of Object.keys(t.headers))c.toLowerCase()==="proxy-authorization"&&delete t.headers[c];if(n&&t.agent&&t.agent[p7e]&&(t.agent=void 0),s){let c=s instanceof URL,u=y=>c||lt.hasOwnProp(s,y)?s[y]:void 0,p=u("username"),f=u("password"),h=lt.hasOwnProp(s,"auth")?s.auth:void 0;if(p&&(h=(p||"")+":"+(f||"")),h){let y=typeof h=="object",v=y&<.hasOwnProp(h,"username")?h.username:void 0,A=y&<.hasOwnProp(h,"password")?h.password:void 0;if(!!(v||A))h=(v||"")+":"+(A||"");else if(y)throw new Jr("Invalid proxy authorization",Jr.ERR_BAD_OPTION,{proxy:s})}if(l7e.test(t.protocol)){if(!(o instanceof sde.default)){let y=u("hostname")||u("host"),v=u("port"),A=u("protocol"),S=A?A.includes(":")?A:`${A}:`:"http:",E=y&&y.includes(":")&&!y.startsWith("[")?`[${y}]`:y,k=new URL(`${S}//${E}${v?":"+v:""}`),P={protocol:k.protocol,hostname:k.hostname.replace(/^\[|\]$/g,""),port:k.port,auth:h&&typeof h=="string"?h:void 0};k.protocol==="https:"&&(P.ALPNProtocols=["http/1.1"]);let j=Cpr(P,o);t.agent=j,t.agents&&(t.agents.https=j)}}else{if(h){let S=Buffer.from(h,"utf8").toString("base64");t.headers["Proxy-Authorization"]="Basic "+S}let y=!1;for(let S of Object.keys(t.headers))if(S.toLowerCase()==="host"){y=!0;break}y||(t.headers.host=t.hostname+(t.port?":"+t.port:""));let v=u("hostname")||u("host");t.hostname=v,t.host=v,t.port=u("port"),t.path=r;let A=u("protocol");A&&(t.protocol=A.includes(":")?A:`${A}:`)}}t.beforeRedirects.proxy=function(u){f7e(u,e,u.href,!0,o)}}var Tpr=typeof process<"u"&<.kindOf(process)==="process",Bpr=t=>new Promise((e,r)=>{let n,o,s=(p,f)=>{o||(o=!0,n&&n(p,f))},c=p=>{s(p),e(p)},u=p=>{s(p,!0),r(p)};t(c,u,p=>n=p).catch(u)}),Dpr=({address:t,family:e})=>{if(!lt.isString(t))throw TypeError("address must be a string");return{address:t,family:e||(t.indexOf(".")<0?6:4)}},e7e=(t,e)=>Dpr(lt.isObject(t)?t:{address:t,family:e}),Ppr={request(t,e){let r=t.protocol+"//"+t.hostname+":"+(t.port||(t.protocol==="https:"?443:80)),{http2Options:n,headers:o}=t,s=Ipr.getSession(r,n),{HTTP2_HEADER_SCHEME:c,HTTP2_HEADER_METHOD:u,HTTP2_HEADER_PATH:p,HTTP2_HEADER_STATUS:f}=n7e.default.constants,h={[c]:t.protocol.replace(":",""),[u]:t.method,[p]:t.path};lt.forEach(o,(y,v)=>{v.charAt(0)!==":"&&(h[v]=y)});let g=s.request(h);return g.once("response",y=>{let v=g;y=Object.assign({},y);let A=y[f];delete y[f],v.headers=y,v.statusCode=+A,e(v)}),g}},d7e=Tpr&&function(e){return Bpr(async function(n,o,s){let c=_t=>lt.hasOwnProp(e,_t)?e[_t]:void 0,u=c("transitional")||uk,p=c("data"),f=c("lookup"),h=c("family"),g=c("httpVersion");g===void 0&&(g=1);let y=c("http2Options"),v=c("responseType"),A=c("responseEncoding"),S=e.method.toUpperCase(),E,k=!1,P,j;if(g=+g,Number.isNaN(g))throw TypeError(`Invalid protocol version: '${e.httpVersion}' is not a number`);if(g!==1&&g!==2)throw TypeError(`Unsupported protocol version '${g}'`);let F=g===2;if(f){let _t=U9e(f,At=>lt.isArray(At)?At:[At]);f=(At,dt,B)=>{_t(At,dt,(Je,ct,Ce)=>{if(Je)return B(Je);let we=lt.isArray(ct)?ct.map(We=>e7e(We)):[e7e(ct,Ce)];dt.all?B(Je,we):B(Je,we[0].address,we[0].family)})}}let z=new o7e.EventEmitter;function re(_t){try{z.emit("abort",!_t||_t.type?new ty(null,e,P):_t)}catch{}}function Y(){j&&(clearTimeout(j),j=null)}function me(){let _t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";return e.timeoutErrorMessage&&(_t=e.timeoutErrorMessage),new Jr(_t,u.clarifyTimeoutError?Jr.ETIMEDOUT:Jr.ECONNABORTED,e,P)}z.once("abort",o);let ne=()=>{Y(),e.cancelToken&&e.cancelToken.unsubscribe(re),e.signal&&e.signal.removeEventListener("abort",re),z.removeAllListeners()};(e.cancelToken||e.signal)&&(e.cancelToken&&e.cancelToken.subscribe(re),e.signal&&(e.signal.aborted?re():e.signal.addEventListener("abort",re))),s((_t,At)=>{if(E=!0,Y(),At){k=!0,ne();return}let{data:dt}=_t;if(dt instanceof Rv.default.Readable||dt instanceof Rv.default.Duplex){let B=Rv.default.finished(dt,()=>{B(),ne()})}else ne()});let ce=jD(e.baseURL,e.url,e.allowAbsoluteUrls),ee=new URL(ce,Va.hasBrowserEnv?Va.origin:void 0),ge=ee.protocol||K9e[0];if(ge==="data:"){if(e.maxContentLength>-1){let At=String(e.url||ce||"");if(Kq(At)>e.maxContentLength)return o(new Jr("maxContentLength size of "+e.maxContentLength+" exceeded",Jr.ERR_BAD_RESPONSE,e))}let _t;if(S!=="GET")return Hw(n,o,{status:405,statusText:"method not allowed",headers:{},config:e});try{_t=Jfe(e.url,v==="blob",{Blob:e.env&&e.env.Blob})}catch(At){throw Jr.from(At,Jr.ERR_BAD_REQUEST,e)}return v==="text"?(_t=_t.toString(A),(!A||A==="utf8")&&(_t=lt.stripBOM(_t))):v==="stream"&&(_t=Rv.default.Readable.from(_t)),Hw(n,o,{data:_t,status:200,statusText:"OK",headers:new qu,config:e})}if(K9e.indexOf(ge)===-1)return o(new Jr("Unsupported protocol "+ge,Jr.ERR_BAD_REQUEST,e));let J=qu.from(e.headers).normalize();J.set("User-Agent","axios/"+rC,!1);let{onUploadProgress:U,onDownloadProgress:de}=e,Oe=e.maxRate,ye,be;if(lt.isSpecCompliantForm(p)){let _t=J.getContentType(/boundary=([-_\w\d]{10,70})/i);p=F9e(p,At=>{J.set(At)},{tag:`axios-${rC}-boundary`,boundary:_t&&_t[1]||void 0})}else if(lt.isFormData(p)&<.isFunction(p.getHeaders)&&p.getHeaders!==Object.prototype.getHeaders){if(_pr(J,p.getHeaders(),c("formDataHeaderPolicy")),!J.hasContentLength())try{let _t=await i7e.default.promisify(p.getLength).call(p);Number.isFinite(_t)&&_t>=0&&J.setContentLength(_t)}catch{}}else if(lt.isBlob(p)||lt.isFile(p))p.size&&J.setContentType(p.type||"application/octet-stream"),J.setContentLength(p.size||0),p=Rv.default.Readable.from(mW(p));else if(p&&!lt.isStream(p)){if(!Buffer.isBuffer(p))if(lt.isArrayBuffer(p))p=Buffer.from(new Uint8Array(p));else if(lt.isString(p))p=Buffer.from(p,"utf-8");else return o(new Jr("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",Jr.ERR_BAD_REQUEST,e));if(J.setContentLength(p.length,!1),e.maxBodyLength>-1&&p.length>e.maxBodyLength)return o(new Jr("Request body larger than maxBodyLength limit",Jr.ERR_BAD_REQUEST,e))}let Ne=lt.toFiniteNumber(J.getContentLength());lt.isArray(Oe)?(ye=Oe[0],be=Oe[1]):ye=be=Oe,p&&(U||ye)&&(lt.isStream(p)||(p=Rv.default.Readable.from(p,{objectMode:!1})),p=Rv.default.pipeline([p,new Zfe({maxRate:lt.toFiniteNumber(ye)})],lt.noop),U&&p.on("progress",Z9e(p,KF(Ne,nC(XF(U),!1,3)))));let He,ft=c("auth");if(ft){let _t=ft.username||"",At=ft.password||"";He=_t+":"+At}if(!He&&(ee.username||ee.password)){let _t=X9e(ee.username),At=X9e(ee.password);He=_t+":"+At}He&&J.delete("authorization");let wt;try{wt=LD(ee.pathname+ee.search,e.params,e.paramsSerializer).replace(/^\?/,"")}catch(_t){let At=new Error(_t.message);return At.config=e,At.url=e.url,At.exists=!0,o(At)}J.set("Accept-Encoding",lt.hasOwnProp(u,"advertiseZstdAcceptEncoding")&&u.advertiseZstdAcceptEncoding===!0?xpr:u7e,!1);let Ye=Object.assign(Object.create(null),{path:wt,method:S,headers:MF(J),agents:{http:e.httpAgent,https:e.httpsAgent},auth:He,protocol:ge,family:h,beforeRedirect:kpr,beforeRedirects:Object.create(null),http2Options:y});!lt.isUndefined(f)&&(Ye.lookup=f);let Ke=c("socketPath");if(Ke){if(typeof Ke!="string")return o(new Jr("socketPath must be a string",Jr.ERR_BAD_OPTION_VALUE,e));let _t=c("allowedSocketPaths");if(_t!=null){let At=Array.isArray(_t)?_t:[_t],dt=(0,ide.resolve)(Ke);if(!At.some(Je=>typeof Je=="string"&&(0,ide.resolve)(Je)===dt))return o(new Jr(`socketPath "${Ke}" is not permitted by allowedSocketPaths`,Jr.ERR_BAD_OPTION_VALUE,e))}Ye.socketPath=Ke}else Ye.hostname=ee.hostname.startsWith("[")?ee.hostname.slice(1,-1):ee.hostname,Ye.port=ee.port,f7e(Ye,e.proxy,ge+"//"+ee.hostname+(ee.port?":"+ee.port:"")+Ye.path,!1,e.httpsAgent);let Me,et=!1,yt=l7e.test(Ye.protocol);if(Ye.agent==null&&(Ye.agent=yt?e.httpsAgent:e.httpAgent),F)Me=Ppr;else{let _t=c("transport");if(_t)Me=_t;else if(e.maxRedirects===0)Me=yt?r7e.default:t7e.default,et=!0;else{e.maxRedirects&&(Ye.maxRedirects=e.maxRedirects);let At=c("beforeRedirect");if(At&&(Ye.beforeRedirects.config=At),He){let dt=ee.origin,B=He;Ye.beforeRedirects.auth=function(ct){try{new URL(ct.href).origin===dt&&(ct.auth=B)}catch{}}}Me=yt?Epr:bpr}}e.maxBodyLength>-1?Ye.maxBodyLength=e.maxBodyLength:Ye.maxBodyLength=1/0,Ye.insecureHTTPParser=!!c("insecureHTTPParser"),P=Me.request(Ye,function(At){if(Y(),P.destroyed)return;let dt=[At],B=lt.toFiniteNumber(At.headers["content-length"]);if(de||be){let we=new Zfe({maxRate:lt.toFiniteNumber(be)});de&&we.on("progress",Z9e(we,KF(B,nC(XF(de),!0,3)))),dt.push(we)}let Je=At,ct=At.req||P;if(e.decompress!==!1&&At.headers["content-encoding"])switch((S==="HEAD"||At.statusCode===204)&&delete At.headers["content-encoding"],(At.headers["content-encoding"]||"").toLowerCase()){case"gzip":case"x-gzip":case"compress":case"x-compress":dt.push(ry.default.createUnzip(W9e)),delete At.headers["content-encoding"];break;case"deflate":dt.push(new j9e),dt.push(ry.default.createUnzip(W9e)),delete At.headers["content-encoding"];break;case"br":a7e&&(dt.push(ry.default.createBrotliDecompress(ypr)),delete At.headers["content-encoding"]);break;case"zstd":c7e&&(dt.push(ry.default.createZstdDecompress(vpr)),delete At.headers["content-encoding"]);break}Je=dt.length>1?Rv.default.pipeline(dt,lt.noop):dt[0];let Ce={status:At.statusCode,statusText:At.statusMessage,headers:new qu(At.headers),config:e,request:ct};if(v==="stream"){if(e.maxContentLength>-1){let we=e.maxContentLength,We=Je;async function*rt(){let pe=0;for await(let Xe of We){if(pe+=Xe.length,pe>we)throw new Jr("maxContentLength size of "+we+" exceeded",Jr.ERR_BAD_RESPONSE,e,ct);yield Xe}}Je=Rv.default.Readable.from(rt(),{objectMode:!1})}Ce.data=Je,Hw(n,o,Ce)}else{let we=[],We=0;Je.on("data",function(pe){we.push(pe),We+=pe.length,e.maxContentLength>-1&&We>e.maxContentLength&&(k=!0,Je.destroy(),re(new Jr("maxContentLength size of "+e.maxContentLength+" exceeded",Jr.ERR_BAD_RESPONSE,e,ct)))}),Je.on("aborted",function(){if(k)return;let pe=new Jr("stream has been aborted",Jr.ERR_BAD_RESPONSE,e,ct,Ce);Je.destroy(pe),o(pe)}),Je.on("error",function(pe){k||o(Jr.from(pe,null,e,ct,Ce))}),Je.on("end",function(){try{let pe=we.length===1?we[0]:Buffer.concat(we);v!=="arraybuffer"&&(pe=pe.toString(A),(!A||A==="utf8")&&(pe=lt.stripBOM(pe))),Ce.data=pe}catch(pe){return o(Jr.from(pe,null,e,Ce.request,Ce))}Hw(n,o,Ce)})}z.once("abort",we=>{Je.destroyed||(Je.emit("error",we),Je.destroy())})}),z.once("abort",_t=>{P.close?P.close():P.destroy(_t)}),P.on("error",function(At){o(Jr.from(At,null,e,P))});let Nt=new Set;if(P.on("socket",function(At){At.setKeepAlive(!0,1e3*60),At[Y9e]||(At.on("error",function(B){let Je=At[gW];Je&&!Je.destroyed&&Je.destroy(B)}),At[Y9e]=!0),At[gW]=P,Nt.add(At)}),P.once("close",function(){Y();for(let At of Nt)At[gW]===P&&(At[gW]=null);Nt.clear()}),e.timeout){let _t=parseInt(e.timeout,10);if(Number.isNaN(_t)){re(new Jr("error trying to parse `config.timeout` to int",Jr.ERR_BAD_OPTION_VALUE,e,P));return}let At=function(){E||re(me())};et&&_t>0&&(j=setTimeout(At,_t)),P.setTimeout(_t,At)}else P.setTimeout(0);if(lt.isStream(p)){let _t=!1,At=!1;p.on("end",()=>{_t=!0}),p.once("error",B=>{At=!0,P.destroy(B)}),p.on("close",()=>{!_t&&!At&&re(new ty("Request stream has been aborted",e,P))});let dt=p;if(e.maxBodyLength>-1&&e.maxRedirects===0){let B=e.maxBodyLength,Je=0;dt=Rv.default.pipeline([p,new Rv.default.Transform({transform(ct,Ce,we){if(Je+=ct.length,Je>B)return we(new Jr("Request body larger than maxBodyLength limit",Jr.ERR_BAD_REQUEST,e,P));we(null,ct)}})],lt.noop),dt.on("error",ct=>{P.destroyed||P.destroy(ct)})}dt.pipe(P)}else p&&P.write(p),P.end()})};var h7e=Va.hasStandardBrowserEnv?((t,e)=>r=>(r=new URL(r,Va.origin),t.protocol===r.protocol&&t.host===r.host&&(e||t.port===r.port)))(new URL(Va.origin),Va.navigator&&/(msie|trident)/i.test(Va.navigator.userAgent)):()=>!0;var m7e=Va.hasStandardBrowserEnv?{write(t,e,r,n,o,s,c){if(typeof document>"u")return;let u=[`${t}=${encodeURIComponent(e)}`];lt.isNumber(r)&&u.push(`expires=${new Date(r).toUTCString()}`),lt.isString(n)&&u.push(`path=${n}`),lt.isString(o)&&u.push(`domain=${o}`),s===!0&&u.push("secure"),lt.isString(c)&&u.push(`SameSite=${c}`),document.cookie=u.join("; ")},read(t){if(typeof document>"u")return null;let e=document.cookie.split(";");for(let r=0;r<e.length;r++){let n=e[r].replace(/^\s+/,""),o=n.indexOf("=");if(o!==-1&&n.slice(0,o)===t)return decodeURIComponent(n.slice(o+1))}return null},remove(t){this.write(t,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};var g7e=t=>t instanceof qu?{...t}:t;function Tb(t,e){e=e||{};let r=Object.create(null);Object.defineProperty(r,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function n(f,h,g,y){return lt.isPlainObject(f)&<.isPlainObject(h)?lt.merge.call({caseless:y},f,h):lt.isPlainObject(h)?lt.merge({},h):lt.isArray(h)?h.slice():h}function o(f,h,g,y){if(lt.isUndefined(h)){if(!lt.isUndefined(f))return n(void 0,f,g,y)}else return n(f,h,g,y)}function s(f,h){if(!lt.isUndefined(h))return n(void 0,h)}function c(f,h){if(lt.isUndefined(h)){if(!lt.isUndefined(f))return n(void 0,f)}else return n(void 0,h)}function u(f,h,g){if(lt.hasOwnProp(e,g))return n(f,h);if(lt.hasOwnProp(t,g))return n(void 0,f)}let p={url:s,method:s,data:s,baseURL:c,transformRequest:c,transformResponse:c,paramsSerializer:c,timeout:c,timeoutMessage:c,withCredentials:c,withXSRFToken:c,adapter:c,responseType:c,xsrfCookieName:c,xsrfHeaderName:c,onUploadProgress:c,onDownloadProgress:c,decompress:c,maxContentLength:c,maxBodyLength:c,beforeRedirect:c,transport:c,httpAgent:c,httpsAgent:c,cancelToken:c,socketPath:c,allowedSocketPaths:c,responseEncoding:c,validateStatus:u,headers:(f,h,g)=>o(g7e(f),g7e(h),g,!0)};return lt.forEach(Object.keys({...t,...e}),function(h){if(h==="__proto__"||h==="constructor"||h==="prototype")return;let g=lt.hasOwnProp(p,h)?p[h]:o,y=lt.hasOwnProp(t,h)?t[h]:void 0,v=lt.hasOwnProp(e,h)?e[h]:void 0,A=g(y,v,h);lt.isUndefined(A)&&g!==u||(r[h]=A)}),r}var Rpr=["content-type","content-length"];function Npr(t,e,r){if(r!=="content-only"){t.set(e);return}Object.entries(e).forEach(([n,o])=>{Rpr.includes(n.toLowerCase())&&t.set(n,o)})}var Opr=t=>encodeURIComponent(t).replace(/%([0-9A-F]{2})/gi,(e,r)=>String.fromCharCode(parseInt(r,16)));function Fpr(t){let e=Tb({},t),r=y=>lt.hasOwnProp(e,y)?e[y]:void 0,n=r("data"),o=r("withXSRFToken"),s=r("xsrfHeaderName"),c=r("xsrfCookieName"),u=r("headers"),p=r("auth"),f=r("baseURL"),h=r("allowAbsoluteUrls"),g=r("url");if(e.headers=u=qu.from(u),e.url=LD(jD(f,g,h),r("params"),r("paramsSerializer")),p&&u.set("Authorization","Basic "+btoa((p.username||"")+":"+(p.password?Opr(p.password):""))),lt.isFormData(n)&&(Va.hasStandardBrowserEnv||Va.hasStandardBrowserWebWorkerEnv||lt.isReactNative(n)?u.setContentType(void 0):lt.isFunction(n.getHeaders)&&Npr(u,n.getHeaders(),r("formDataHeaderPolicy"))),Va.hasStandardBrowserEnv&&(lt.isFunction(o)&&(o=o(e)),o===!0||o==null&&h7e(e.url))){let v=s&&c&&m7e.read(c);v&&u.set(s,v)}return e}var AW=Fpr;var Lpr=typeof XMLHttpRequest<"u",A7e=Lpr&&function(t){return new Promise(function(r,n){let o=AW(t),s=o.data,c=qu.from(o.headers).normalize(),{responseType:u,onUploadProgress:p,onDownloadProgress:f}=o,h,g,y,v,A;function S(){v&&v(),A&&A(),o.cancelToken&&o.cancelToken.unsubscribe(h),o.signal&&o.signal.removeEventListener("abort",h)}let E=new XMLHttpRequest;E.open(o.method.toUpperCase(),o.url,!0),E.timeout=o.timeout;function k(){if(!E)return;let j=qu.from("getAllResponseHeaders"in E&&E.getAllResponseHeaders()),z={data:!u||u==="text"||u==="json"?E.responseText:E.response,status:E.status,statusText:E.statusText,headers:j,config:t,request:E};Hw(function(Y){r(Y),S()},function(Y){n(Y),S()},z),E=null}"onloadend"in E?E.onloadend=k:E.onreadystatechange=function(){!E||E.readyState!==4||E.status===0&&!(E.responseURL&&E.responseURL.startsWith("file:"))||setTimeout(k)},E.onabort=function(){E&&(n(new Jr("Request aborted",Jr.ECONNABORTED,t,E)),S(),E=null)},E.onerror=function(F){let z=F&&F.message?F.message:"Network Error",re=new Jr(z,Jr.ERR_NETWORK,t,E);re.event=F||null,n(re),S(),E=null},E.ontimeout=function(){let F=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded",z=o.transitional||uk;o.timeoutErrorMessage&&(F=o.timeoutErrorMessage),n(new Jr(F,z.clarifyTimeoutError?Jr.ETIMEDOUT:Jr.ECONNABORTED,t,E)),S(),E=null},s===void 0&&c.setContentType(null),"setRequestHeader"in E&<.forEach(MF(c),function(F,z){E.setRequestHeader(z,F)}),lt.isUndefined(o.withCredentials)||(E.withCredentials=!!o.withCredentials),u&&u!=="json"&&(E.responseType=o.responseType),f&&([y,A]=nC(f,!0),E.addEventListener("progress",y)),p&&E.upload&&([g,v]=nC(p),E.upload.addEventListener("progress",g),E.upload.addEventListener("loadend",v)),(o.cancelToken||o.signal)&&(h=j=>{E&&(n(!j||j.type?new ty(null,t,E):j),E.abort(),S(),E=null)},o.cancelToken&&o.cancelToken.subscribe(h),o.signal&&(o.signal.aborted?h():o.signal.addEventListener("abort",h)));let P=Yq(o.url);if(P&&!Va.protocols.includes(P)){n(new Jr("Unsupported protocol "+P+":",Jr.ERR_BAD_REQUEST,t));return}E.send(s||null)})};var jpr=(t,e)=>{if(t=t?t.filter(Boolean):[],!e&&!t.length)return;let r=new AbortController,n=!1,o=function(p){if(!n){n=!0,c();let f=p instanceof Error?p:this.reason;r.abort(f instanceof Jr?f:new ty(f instanceof Error?f.message:f))}},s=e&&setTimeout(()=>{s=null,o(new Jr(`timeout of ${e}ms exceeded`,Jr.ETIMEDOUT))},e),c=()=>{t&&(s&&clearTimeout(s),s=null,t.forEach(p=>{p.unsubscribe?p.unsubscribe(o):p.removeEventListener("abort",o)}),t=null)};t.forEach(p=>p.addEventListener("abort",o));let{signal:u}=r;return u.unsubscribe=()=>lt.asap(c),u},y7e=jpr;var Mpr=function*(t,e){let r=t.byteLength;if(!e||r<e){yield t;return}let n=0,o;for(;n<r;)o=n+e,yield t.slice(n,o),n=o},Qpr=async function*(t,e){for await(let r of qpr(t))yield*Mpr(r,e)},qpr=async function*(t){if(t[Symbol.asyncIterator]){yield*t;return}let e=t.getReader();try{for(;;){let{done:r,value:n}=await e.read();if(r)break;yield n}}finally{await e.cancel()}},ode=(t,e,r,n)=>{let o=Qpr(t,e),s=0,c,u=p=>{c||(c=!0,n&&n(p))};return new ReadableStream({async pull(p){try{let{done:f,value:h}=await o.next();if(f){u(),p.close();return}let g=h.byteLength;if(r){let y=s+=g;r(y)}p.enqueue(new Uint8Array(h))}catch(f){throw u(f),f}},cancel(p){return u(p),o.return()}},{highWaterMark:2})};var v7e=64*1024,{isFunction:yW}=lt,Upr=t=>encodeURIComponent(t).replace(/%([0-9A-F]{2})/gi,(e,r)=>String.fromCharCode(parseInt(r,16))),x7e=t=>{if(!lt.isString(t))return t;try{return decodeURIComponent(t)}catch{return t}},b7e=(t,...e)=>{try{return!!t(...e)}catch{return!1}},$pr=t=>{let e=t.indexOf("://"),r=t;return e!==-1&&(r=r.slice(e+3)),r.includes("@")||r.includes(":")},zpr=t=>{let e=lt.global!==void 0&<.global!==null?lt.global:globalThis,{ReadableStream:r,TextEncoder:n}=e;t=lt.merge.call({skipUndefined:!0},{Request:e.Request,Response:e.Response},t);let{fetch:o,Request:s,Response:c}=t,u=o?yW(o):typeof fetch=="function",p=yW(s),f=yW(c);if(!u)return!1;let h=u&&yW(r),g=u&&(typeof n=="function"?(k=>P=>k.encode(P))(new n):async k=>new Uint8Array(await new s(k).arrayBuffer())),y=p&&h&&b7e(()=>{let k=!1,P=new s(Va.origin,{body:new r,method:"POST",get duplex(){return k=!0,"half"}}),j=P.headers.has("Content-Type");return P.body!=null&&P.body.cancel(),k&&!j}),v=f&&h&&b7e(()=>lt.isReadableStream(new c("").body)),A={stream:v&&(k=>k.body)};u&&["text","arrayBuffer","blob","formData","stream"].forEach(k=>{!A[k]&&(A[k]=(P,j)=>{let F=P&&P[k];if(F)return F.call(P);throw new Jr(`Response type '${k}' is not supported`,Jr.ERR_NOT_SUPPORT,j)})});let S=async k=>{if(k==null)return 0;if(lt.isBlob(k))return k.size;if(lt.isSpecCompliantForm(k))return(await new s(Va.origin,{method:"POST",body:k}).arrayBuffer()).byteLength;if(lt.isArrayBufferView(k)||lt.isArrayBuffer(k))return k.byteLength;if(lt.isURLSearchParams(k)&&(k=k+""),lt.isString(k))return(await g(k)).byteLength},E=async(k,P)=>{let j=lt.toFiniteNumber(k.getContentLength());return j==null?S(P):j};return async k=>{let{url:P,method:j,data:F,signal:z,cancelToken:re,timeout:Y,onDownloadProgress:me,onUploadProgress:ne,responseType:ce,headers:ee,withCredentials:ge="same-origin",fetchOptions:J,maxContentLength:U,maxBodyLength:de}=AW(k),Oe=lt.isNumber(U)&&U>-1,ye=lt.isNumber(de)&&de>-1,be=Ke=>lt.hasOwnProp(k,Ke)?k[Ke]:void 0,Ne=o||fetch;ce=ce?(ce+"").toLowerCase():"text";let He=y7e([z,re&&re.toAbortSignal()],Y),ft=null,wt=He&&He.unsubscribe&&(()=>{He.unsubscribe()}),Ye;try{let Ke,Me=be("auth");if(Me){let dt=Me.username||"",B=Me.password||"";Ke={username:dt,password:B}}if($pr(P)){let dt=new URL(P,Va.origin);if(!Ke&&(dt.username||dt.password)){let B=x7e(dt.username),Je=x7e(dt.password);Ke={username:B,password:Je}}(dt.username||dt.password)&&(dt.username="",dt.password="",P=dt.href)}if(Ke&&(ee.delete("authorization"),ee.set("Authorization","Basic "+btoa(Upr((Ke.username||"")+":"+(Ke.password||""))))),Oe&&typeof P=="string"&&P.startsWith("data:")&&Kq(P)>U)throw new Jr("maxContentLength size of "+U+" exceeded",Jr.ERR_BAD_RESPONSE,k,ft);if(ye&&j!=="get"&&j!=="head"){let dt=await E(ee,F);if(typeof dt=="number"&&isFinite(dt)&&dt>de)throw new Jr("Request body larger than maxBodyLength limit",Jr.ERR_BAD_REQUEST,k,ft)}if(ne&&y&&j!=="get"&&j!=="head"&&(Ye=await E(ee,F))!==0){let dt=new s(P,{method:"POST",body:F,duplex:"half"}),B;if(lt.isFormData(F)&&(B=dt.headers.get("content-type"))&&ee.setContentType(B),dt.body){let[Je,ct]=KF(Ye,nC(XF(ne)));F=ode(dt.body,v7e,Je,ct)}}lt.isString(ge)||(ge=ge?"include":"omit");let et=p&&"credentials"in s.prototype;if(lt.isFormData(F)){let dt=ee.getContentType();dt&&/^multipart\/form-data/i.test(dt)&&!/boundary=/i.test(dt)&&ee.delete("content-type")}ee.set("User-Agent","axios/"+rC,!1);let yt={...J,signal:He,method:j.toUpperCase(),headers:MF(ee.normalize()),body:F,duplex:"half",credentials:et?ge:void 0};ft=p&&new s(P,yt);let Nt=await(p?Ne(ft,J):Ne(P,yt));if(Oe){let dt=lt.toFiniteNumber(Nt.headers.get("content-length"));if(dt!=null&&dt>U)throw new Jr("maxContentLength size of "+U+" exceeded",Jr.ERR_BAD_RESPONSE,k,ft)}let _t=v&&(ce==="stream"||ce==="response");if(v&&Nt.body&&(me||Oe||_t&&wt)){let dt={};["status","statusText","headers"].forEach(We=>{dt[We]=Nt[We]});let B=lt.toFiniteNumber(Nt.headers.get("content-length")),[Je,ct]=me&&KF(B,nC(XF(me),!0))||[],Ce=0,we=We=>{if(Oe&&(Ce=We,Ce>U))throw new Jr("maxContentLength size of "+U+" exceeded",Jr.ERR_BAD_RESPONSE,k,ft);Je&&Je(We)};Nt=new c(ode(Nt.body,v7e,we,()=>{ct&&ct(),wt&&wt()}),dt)}ce=ce||"text";let At=await A[lt.findKey(A,ce)||"text"](Nt,k);if(Oe&&!v&&!_t){let dt;if(At!=null&&(typeof At.byteLength=="number"?dt=At.byteLength:typeof At.size=="number"?dt=At.size:typeof At=="string"&&(dt=typeof n=="function"?new n().encode(At).byteLength:At.length)),typeof dt=="number"&&dt>U)throw new Jr("maxContentLength size of "+U+" exceeded",Jr.ERR_BAD_RESPONSE,k,ft)}return!_t&&wt&&wt(),await new Promise((dt,B)=>{Hw(dt,B,{data:At,headers:qu.from(Nt.headers),status:Nt.status,statusText:Nt.statusText,config:k,request:ft})})}catch(Ke){if(wt&&wt(),He&&He.aborted&&He.reason instanceof Jr){let Me=He.reason;throw Me.config=k,ft&&(Me.request=ft),Ke!==Me&&(Me.cause=Ke),Me}throw Ke&&Ke.name==="TypeError"&&/Load failed|fetch/i.test(Ke.message)?Object.assign(new Jr("Network Error",Jr.ERR_NETWORK,k,ft,Ke&&Ke.response),{cause:Ke.cause||Ke}):Jr.from(Ke,Ke&&Ke.code,k,ft,Ke&&Ke.response)}}},Hpr=new Map,ade=t=>{let e=t&&t.env||{},{fetch:r,Request:n,Response:o}=e,s=[n,o,r],c=s.length,u=c,p,f,h=Hpr;for(;u--;)p=s[u],f=h.get(p),f===void 0&&h.set(p,f=u?new Map:zpr(e)),h=f;return f},dmi=ade();var cde={http:d7e,xhr:A7e,fetch:{get:ade}};lt.forEach(cde,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{__proto__:null,value:e})}catch{}Object.defineProperty(t,"adapterName",{__proto__:null,value:e})}});var E7e=t=>`- ${t}`,Gpr=t=>lt.isFunction(t)||t===null||t===!1;function Wpr(t,e){t=lt.isArray(t)?t:[t];let{length:r}=t,n,o,s={};for(let c=0;c<r;c++){n=t[c];let u;if(o=n,!Gpr(n)&&(o=cde[(u=String(n)).toLowerCase()],o===void 0))throw new Jr(`Unknown adapter '${u}'`);if(o&&(lt.isFunction(o)||(o=o.get(e))))break;s[u||"#"+c]=o}if(!o){let c=Object.entries(s).map(([p,f])=>`adapter ${p} `+(f===!1?"is not supported by the environment":"is not available in the build")),u=r?c.length>1?`since :
|
|
@@ -575,7 +575,7 @@ ${A.join(`
|
|
|
575
575
|
`);return c===-1?"":o.stack.slice(c+1)})();try{if(!n.stack)n.stack=s;else if(s){let c=s.indexOf(`
|
|
576
576
|
`),u=c===-1?-1:s.indexOf(`
|
|
577
577
|
`,c+1),p=u===-1?"":s.slice(u+1);String(n.stack).endsWith(p)||(n.stack+=`
|
|
578
|
-
`+s)}}catch{}}throw n}}_request(e,r){typeof e=="string"?(r=r||{},r.url=e):r=e||{},r=Tb(this.defaults,r);let{transitional:n,paramsSerializer:o,headers:s}=r;n!==void 0&&Xq.assertOptions(n,{silentJSONParsing:M0.transitional(M0.boolean),forcedJSONParsing:M0.transitional(M0.boolean),clarifyTimeoutError:M0.transitional(M0.boolean),legacyInterceptorReqResOrdering:M0.transitional(M0.boolean),advertiseZstdAcceptEncoding:M0.transitional(M0.boolean)},!1),o!=null&&(lt.isFunction(o)?r.paramsSerializer={serialize:o}:Xq.assertOptions(o,{encode:M0.function,serialize:M0.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),Xq.assertOptions(r,{baseUrl:M0.spelling("baseURL"),withXsrfToken:M0.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let c=s&<.merge(s.common,s[r.method]);s&<.forEach(["delete","get","head","post","put","patch","query","common"],A=>{delete s[A]}),r.headers=qu.concat(c,s);let u=[],p=!0;this.interceptors.request.forEach(function(S){if(typeof S.runWhen=="function"&&S.runWhen(r)===!1)return;p=p&&S.synchronous;let E=r.transitional||uk;E&&E.legacyInterceptorReqResOrdering?u.unshift(S.fulfilled,S.rejected):u.push(S.fulfilled,S.rejected)});let f=[];this.interceptors.response.forEach(function(S){f.push(S.fulfilled,S.rejected)});let h,g=0,y;if(!p){let A=[xW.bind(this),void 0];for(A.unshift(...u),A.push(...f),y=A.length,h=Promise.resolve(r);g<y;)h=h.then(A[g++],A[g++]);return h}y=u.length;let v=r;for(;g<y;){let A=u[g++],S=u[g++];try{v=A(v)}catch(E){S.call(this,E);break}}try{h=xW.call(this,v)}catch(A){return Promise.reject(A)}for(g=0,y=f.length;g<y;)h=h.then(f[g++],f[g++]);return h}getUri(e){e=Tb(this.defaults,e);let r=jD(e.baseURL,e.url,e.allowAbsoluteUrls);return LD(r,e.params,e.paramsSerializer)}};lt.forEach(["delete","get","head","options"],function(e){ZF.prototype[e]=function(r,n){return this.request(Tb(n||{},{method:e,url:r,data:(n||{}).data}))}});lt.forEach(["post","put","patch","query"],function(e){function r(n){return function(s,c,u){return this.request(Tb(u||{},{method:e,headers:n?{"Content-Type":"multipart/form-data"}:{},url:s,data:c}))}}ZF.prototype[e]=r(),e!=="query"&&(ZF.prototype[e+"Form"]=r(!0))});var Zq=ZF;var lde=class t{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(function(s){r=s});let n=this;this.promise.then(o=>{if(!n._listeners)return;let s=n._listeners.length;for(;s-- >0;)n._listeners[s](o);n._listeners=null}),this.promise.then=o=>{let s,c=new Promise(u=>{n.subscribe(u),s=u}).then(o);return c.cancel=function(){n.unsubscribe(s)},c},e(function(s,c,u){n.reason||(n.reason=new ty(s,c,u),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let r=this._listeners.indexOf(e);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){let e=new AbortController,r=n=>{e.abort(n)};return this.subscribe(r),e.signal.unsubscribe=()=>this.unsubscribe(r),e.signal}static source(){let e;return{token:new t(function(o){e=o}),cancel:e}}},_7e=lde;function pde(t){return function(r){return t.apply(null,r)}}function fde(t){return lt.isObject(t)&&t.isAxiosError===!0}var dde={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(dde).forEach(([t,e])=>{dde[e]=t});var S7e=dde;function C7e(t){let e=new Zq(t),r=Dq(Zq.prototype.request,e);return lt.extend(r,Zq.prototype,e,{allOwnKeys:!0}),lt.extend(r,e,null,{allOwnKeys:!0}),r.create=function(o){return C7e(Tb(t,o))},r}var Zp=C7e(VF);Zp.Axios=Zq;Zp.CanceledError=ty;Zp.CancelToken=_7e;Zp.isCancel=Qq;Zp.VERSION=rC;Zp.toFormData=ck;Zp.AxiosError=Jr;Zp.Cancel=Zp.CanceledError;Zp.all=function(e){return Promise.all(e)};Zp.spread=pde;Zp.isAxiosError=fde;Zp.mergeConfig=Tb;Zp.AxiosHeaders=qu;Zp.formToJSON=t=>uW(lt.isHTMLForm(t)?new FormData(t):t);Zp.getAdapter=vW.getAdapter;Zp.HttpStatusCode=S7e;Zp.default=Zp;var iC=Zp;var{Axios:lgi,AxiosError:pgi,CanceledError:fgi,isCancel:dgi,CancelToken:hgi,VERSION:mgi,all:ggi,Cancel:Agi,isAxiosError:ygi,spread:vgi,toFormData:xgi,AxiosHeaders:bgi,HttpStatusCode:Egi,formToJSON:wgi,getAdapter:_gi,mergeConfig:Sgi,create:Cgi}=iC;tf();Hs();tf();var Tde=Bt(require("os"));var hr={COMMAND:"command",REQUEST:"request",LOCAL_FLOW:"local_flow",EXIT:"exit"},pr={SUCCESS:"success",FAIL:"fail",START:"start"},i6={SUCCESS:"success",FAIL:"fail",SIGINT:"sigint",SIGTERM:"sigterm",TIMEOUT:"timeout",UNCAUGHT_EXCEPTION:"uncaught_exception",UNHANDLED_REJECTION:"unhandled_rejection",USER_CANCEL:"user_cancel",UNKNOWN:"unknown"},Bfr=`cli-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;function Dfr(){var t,e;return{run_id:Bfr,cli_version:(e=(t=yb)==null?void 0:t.version)!=null?e:"unknown",node_version:process.version,os_platform:Tde.default.platform(),os_arch:Tde.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 Pfr(t,e){try{if(typeof process.send!="function")return;process.send(JSON.stringify({name:t,value:JSON.stringify(e)}))}catch{}}function mr(t){var r;let e={...Dfr(),...t};Pfr((r=e.event_name)!=null?r:"unknown",e)}var iL=(t,e)=>{mr({event_name:t,event_scope:hr.COMMAND,event_result:pr.SUCCESS,message:e})},sg=(t,e)=>{let r=Si(e);mr({event_name:"error",event_scope:hr.COMMAND,event_result:pr.FAIL,error_message:`${t} ${r.message}`.trim(),error_stack:r.stack})},kde=500,Rfr=2e3;function Si(t){if(t==null)return{message:"unknown error",stack:""};if(typeof t=="string")return{message:IW(t,kde),stack:""};if(typeof t=="object"){let e=t,r=IW(typeof e.message=="string"?e.message:String(e),kde),n=IW(typeof e.stack=="string"?e.stack:"",Rfr);return{message:r,stack:n}}return{message:IW(String(t),kde),stack:""}}function IW(t,e){return t.length>e?t.slice(0,e)+"\u2026[truncated]":t}var Nfr=new Set(["region","framework","mode","env","e","area","a","debug","external"]),Ofr=new Set(["token","t","secret","key","cookie","authorization","blobCredential","sandboxCredential"]),Ffr=new Set(["path","name","n","projectName","file","f","directoryOrZip"]);function t$e(t){let e={};for(let[r,n]of Object.entries(t))if(!(r==="_"||r==="$0")){if(typeof n=="boolean"){e[r]=n;continue}if(Ofr.has(r)){e[`has_${r}`]=n!=null&&n!==""&&n!==!1;continue}if(Nfr.has(r)){e[r]=String(n!=null?n:"");continue}if(Ffr.has(r)){e[`${r}_kind`]=Lfr(n);continue}e[`has_${r}`]=n!=null&&n!==""&&n!==!1}return e}function Lfr(t){return t==null||t===""?"absent":typeof t!="string"?"present":t.startsWith("/")?"absolute":t.startsWith("./")||t.startsWith("../")?"relative":t.startsWith("~")?"home_relative":"present"}Hs();var ny={global:"https://pages-api.edgeone.ai/v1",china:"https://pages-api.cloud.tencent.com/v1"};var kW={global:"ap-singapore",china:"ap-guangzhou"},s6={global:"https://edgeone.tencentcloud.com",china:"https://edgeone.cloud.tencent.com"},Bde={global:"https://edgeone.ai/login",china:"https://cloud.tencent.com/login"},Dde="/makers/cli-login",Pde={"ap-guangzhou":"china","ap-singapore":"global"};var Ygi=require("fs"),Jgi=require("path"),jfr=["china","global"];function Mfr(t){return ny[t]}async function Qfr(t){var e,r,n;for(let o of jfr)try{let s=Mfr(o),c=await iC.post(s,JSON.stringify({Action:"DescribePagesProjects",PageNumber:1,PageSize:10,Region:kW[o]}),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeout:15e3}),u=((r=(e=c==null?void 0:c.data)==null?void 0:e.Data)==null?void 0:r.Response)||(c==null?void 0:c.data);if((u==null?void 0:u.Code)!=null||((n=u==null?void 0:u.Error)==null?void 0:n.Code)!=null)continue;if(u&&Array.isArray(u.Projects))return o}catch{}return null}async function am(){if(process.env.EDGEONE_PAGES_API_REGION)return process.env.EDGEONE_PAGES_API_REGION;let t=tL();if(t!=null&&t.region)return t.region;if(t!=null&&t.token){let e=await Qfr(t.token);if(e){try{eL({token:t.token,region:e})}catch{}return e}}return await oC("login_region")}tf();Hs();var qfr=async()=>{let t=await am(),e=ny[t];if(e)return e;ar(`Invalid region: ${t}`)},Ww=async()=>{if(process.env.EDGEONE_PAGES_API_TOKEN)return process.env.EDGEONE_PAGES_API_TOKEN;let t=tL();if(t!=null&&t.token)return t.token;try{return(await oC("eo_token")).Token}catch{return}},r$e=async()=>{try{let t=await oC("eo_token");return!t||typeof t!="object"?void 0:{loginType:t.loginType,corpId:t.corpId,corpName:t.corpName,openId:t.openId}}catch{return}},o6=async(t,e)=>{var c,u;let r=e||await qfr(),o={"Content-Type":"application/json",Authorization:`Bearer ${await Ww()}`},s=await iC.post(r,JSON.stringify(t),{headers:o,timeout:15e3});return((u=(c=s.data)==null?void 0:c.Data)==null?void 0:u.Response)||s.data},n$e=async t=>{var n,o,s,c,u,p;let e=await am(),r=ny[e]||ny.china;if(!r)throw new Error("Login get token failed, invalid login region.");try{let f=await iC.post(r,JSON.stringify({Action:"CreateOrDescribeTokenByMCP",Name:"edgeone-cli-auto-generated"}),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`}}),h=(s=(o=(n=f==null?void 0:f.data)==null?void 0:n.Data)==null?void 0:o.Response)==null?void 0:s.TokenData;if(!(h!=null&&h.Token)){let g=(c=f==null?void 0:f.data)==null?void 0:c.Code,y=(u=f==null?void 0:f.data)==null?void 0:u.Message,v=(p=f==null?void 0:f.data)==null?void 0:p.RequestId,A=g!=null?`server Code=${g}, Message=${y}, RequestId=${v}`:`unexpected response shape from ${r}`;throw new Error(`Token exchange returned an empty result. ${A}`)}return h}catch(f){let h=f instanceof Error?f.message:"Unknown error";throw new Error(`Login get token failed, please try again. ${h}`)}};tf();Hs();function i$e(t){var o,s,c,u,p,f;let e=Si(t),r=(o=t==null?void 0:t.response)!=null&&o.status?String(t.response.status):"";return{error_code:((f=(p=(u=(c=(s=t==null?void 0:t.response)==null?void 0:s.data)==null?void 0:c.Data)==null?void 0:u.Response)==null?void 0:p.Error)==null?void 0:f.Code)||(t==null?void 0:t.errorCode)||"",error_message:e.message,http_status:r}}async function s$e(t,e,r){let n=Pde[e]||"unknown";return await o6({Action:t,...r}).catch(s=>{var p,f,h,g;if(s.errorCode==="UnsupportedRegion")return;let c=i$e(s);mr({event_name:"Request:Error",event_scope:hr.REQUEST,event_result:pr.FAIL,event_phase:"request",action:t,region:n,...c});let u=(s==null?void 0:s.requestId)||((g=(h=(f=(p=s==null?void 0:s.response)==null?void 0:p.data)==null?void 0:f.Data)==null?void 0:h.Response)==null?void 0:g.RequestId)||"";ar(`A request error occurred, please try again, but if the problem persists, contact us.(${u?u+": ":""}${c.error_message})`),process.env.DEBUG&&console.log("request error",t,Si(s).message),(s.errorCode==="AuthFailure.SignatureFailure"||s.errorCode==="AuthFailure.SecretIdNotFound")&&iy()}).then(s=>s,s=>{var p,f,h,g;let c=i$e(s);mr({event_name:"Request:Failed",event_scope:hr.REQUEST,event_result:pr.FAIL,event_phase:"request",action:t,region:n,...c});let u=(s==null?void 0:s.requestId)||((g=(h=(f=(p=s==null?void 0:s.response)==null?void 0:p.data)==null?void 0:f.Data)==null?void 0:h.Response)==null?void 0:g.RequestId)||"";throw ar(`Request Failed: ${t}${u?", RequestId: "+u:""}: ${c.error_message}`),s})}var a6={china:"ap-guangzhou",global:"ap-singapore"},Q0=async()=>{let t=async r=>{let n=Pde[r],o;return o=ny[n],{success:!!(await o6({Action:"DescribePagesProjects",PageNumber:1,PageSize:10,Region:r},o)).Projects}},e=["ap-guangzhou","ap-singapore"];try{for(let r of e)(await t(r)).success&&(r==="ap-guangzhou"?process.env.EDGEONE_PAGES_API_REGION="china":r==="ap-singapore"&&(process.env.EDGEONE_PAGES_API_REGION="global"))}catch(r){ar(`check and set region failed: ${r}`)}process.env.EDGEONE_PAGES_API_REGION||(process.env.DEBUG&&console.log("[debug] checkAndSetRegion: no region detected, defaulting to china"),process.env.EDGEONE_PAGES_API_REGION="china")};async function rf(t,e){var n;let r=await am();if(!r){let o=!!((n=tL())!=null&&n.token);process.env.EDGEONE_PAGES_API_TOKEN||o?(process.env.DEBUG&&console.log("[debug] pagesCapi: token set but no region, defaulting to china"),r="china"):(await iy(),r=await am())}return r&&a6[r]?(o$e(a6[r]),await s$e(t,a6[r],e)):(o$e(a6.china),await s$e(t,a6.china,e))}function o$e(t="ap-guangzhou"){let e=t==="ap-guangzhou";process.send&&process.send(JSON.stringify({isDomestic:e}))}var b$e=Bt(require("open")),E$e=require("crypto");var g$e=Bt(require("http"));tf();var Ufr="/pages/connect",a$e=t=>t==="global"?"https://console.tencentcloud.com/edgeone/makers":"https://console.cloud.tencent.com/edgeone/makers",c$e=t=>t==="global"?"https://edgeone.tencentcloud.com/logo/BlackHeadLogo.svg":"https://edgeone.cloud.tencent.com/logo/BlackHeadLogo.svg",u$e=t=>{let e=t==="global";return{lang:e?"en":"zh-CN",successTitle:e?"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:e?"You will be redirected to the Makers console in 5 seconds":"5 \u79D2\u540E\u81EA\u52A8\u8DF3\u8F6C\u5230 Makers \u63A7\u5236\u53F0",successButtonText:e?"Go Console":"\u56DE\u5230\u63A7\u5236\u53F0",errorTitle:e?"Login failed. Please return to the original app and try again":"\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u8FD4\u56DE\u539F\u5E94\u7528\u91CD\u8BD5"}},l$e=t=>t==="global"?`
|
|
578
|
+
`+s)}}catch{}}throw n}}_request(e,r){typeof e=="string"?(r=r||{},r.url=e):r=e||{},r=Tb(this.defaults,r);let{transitional:n,paramsSerializer:o,headers:s}=r;n!==void 0&&Xq.assertOptions(n,{silentJSONParsing:M0.transitional(M0.boolean),forcedJSONParsing:M0.transitional(M0.boolean),clarifyTimeoutError:M0.transitional(M0.boolean),legacyInterceptorReqResOrdering:M0.transitional(M0.boolean),advertiseZstdAcceptEncoding:M0.transitional(M0.boolean)},!1),o!=null&&(lt.isFunction(o)?r.paramsSerializer={serialize:o}:Xq.assertOptions(o,{encode:M0.function,serialize:M0.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),Xq.assertOptions(r,{baseUrl:M0.spelling("baseURL"),withXsrfToken:M0.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let c=s&<.merge(s.common,s[r.method]);s&<.forEach(["delete","get","head","post","put","patch","query","common"],A=>{delete s[A]}),r.headers=qu.concat(c,s);let u=[],p=!0;this.interceptors.request.forEach(function(S){if(typeof S.runWhen=="function"&&S.runWhen(r)===!1)return;p=p&&S.synchronous;let E=r.transitional||uk;E&&E.legacyInterceptorReqResOrdering?u.unshift(S.fulfilled,S.rejected):u.push(S.fulfilled,S.rejected)});let f=[];this.interceptors.response.forEach(function(S){f.push(S.fulfilled,S.rejected)});let h,g=0,y;if(!p){let A=[xW.bind(this),void 0];for(A.unshift(...u),A.push(...f),y=A.length,h=Promise.resolve(r);g<y;)h=h.then(A[g++],A[g++]);return h}y=u.length;let v=r;for(;g<y;){let A=u[g++],S=u[g++];try{v=A(v)}catch(E){S.call(this,E);break}}try{h=xW.call(this,v)}catch(A){return Promise.reject(A)}for(g=0,y=f.length;g<y;)h=h.then(f[g++],f[g++]);return h}getUri(e){e=Tb(this.defaults,e);let r=jD(e.baseURL,e.url,e.allowAbsoluteUrls);return LD(r,e.params,e.paramsSerializer)}};lt.forEach(["delete","get","head","options"],function(e){ZF.prototype[e]=function(r,n){return this.request(Tb(n||{},{method:e,url:r,data:(n||{}).data}))}});lt.forEach(["post","put","patch","query"],function(e){function r(n){return function(s,c,u){return this.request(Tb(u||{},{method:e,headers:n?{"Content-Type":"multipart/form-data"}:{},url:s,data:c}))}}ZF.prototype[e]=r(),e!=="query"&&(ZF.prototype[e+"Form"]=r(!0))});var Zq=ZF;var lde=class t{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(function(s){r=s});let n=this;this.promise.then(o=>{if(!n._listeners)return;let s=n._listeners.length;for(;s-- >0;)n._listeners[s](o);n._listeners=null}),this.promise.then=o=>{let s,c=new Promise(u=>{n.subscribe(u),s=u}).then(o);return c.cancel=function(){n.unsubscribe(s)},c},e(function(s,c,u){n.reason||(n.reason=new ty(s,c,u),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let r=this._listeners.indexOf(e);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){let e=new AbortController,r=n=>{e.abort(n)};return this.subscribe(r),e.signal.unsubscribe=()=>this.unsubscribe(r),e.signal}static source(){let e;return{token:new t(function(o){e=o}),cancel:e}}},_7e=lde;function pde(t){return function(r){return t.apply(null,r)}}function fde(t){return lt.isObject(t)&&t.isAxiosError===!0}var dde={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(dde).forEach(([t,e])=>{dde[e]=t});var S7e=dde;function C7e(t){let e=new Zq(t),r=Dq(Zq.prototype.request,e);return lt.extend(r,Zq.prototype,e,{allOwnKeys:!0}),lt.extend(r,e,null,{allOwnKeys:!0}),r.create=function(o){return C7e(Tb(t,o))},r}var Zp=C7e(VF);Zp.Axios=Zq;Zp.CanceledError=ty;Zp.CancelToken=_7e;Zp.isCancel=Qq;Zp.VERSION=rC;Zp.toFormData=ck;Zp.AxiosError=Jr;Zp.Cancel=Zp.CanceledError;Zp.all=function(e){return Promise.all(e)};Zp.spread=pde;Zp.isAxiosError=fde;Zp.mergeConfig=Tb;Zp.AxiosHeaders=qu;Zp.formToJSON=t=>uW(lt.isHTMLForm(t)?new FormData(t):t);Zp.getAdapter=vW.getAdapter;Zp.HttpStatusCode=S7e;Zp.default=Zp;var iC=Zp;var{Axios:lgi,AxiosError:pgi,CanceledError:fgi,isCancel:dgi,CancelToken:hgi,VERSION:mgi,all:ggi,Cancel:Agi,isAxiosError:ygi,spread:vgi,toFormData:xgi,AxiosHeaders:bgi,HttpStatusCode:Egi,formToJSON:wgi,getAdapter:_gi,mergeConfig:Sgi,create:Cgi}=iC;tf();Hs();tf();var Tde=Bt(require("os"));var hr={COMMAND:"command",REQUEST:"request",LOCAL_FLOW:"local_flow",EXIT:"exit"},pr={SUCCESS:"success",FAIL:"fail",START:"start"},i6={SUCCESS:"success",FAIL:"fail",SIGINT:"sigint",SIGTERM:"sigterm",TIMEOUT:"timeout",UNCAUGHT_EXCEPTION:"uncaught_exception",UNHANDLED_REJECTION:"unhandled_rejection",USER_CANCEL:"user_cancel",UNKNOWN:"unknown"},Bfr=`cli-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;function Dfr(){var t,e;return{run_id:Bfr,cli_version:(e=(t=yb)==null?void 0:t.version)!=null?e:"unknown",node_version:process.version,os_platform:Tde.default.platform(),os_arch:Tde.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 Pfr(t,e){try{if(typeof process.send!="function")return;process.send(JSON.stringify({name:t,value:JSON.stringify(e)}))}catch{}}function mr(t){var r;let e={...Dfr(),...t};Pfr((r=e.event_name)!=null?r:"unknown",e)}var iL=(t,e)=>{mr({event_name:t,event_scope:hr.COMMAND,event_result:pr.SUCCESS,message:e})},sg=(t,e)=>{let r=Si(e);mr({event_name:"error",event_scope:hr.COMMAND,event_result:pr.FAIL,error_message:`${t} ${r.message}`.trim(),error_stack:r.stack})},kde=500,Rfr=2e3;function Si(t){if(t==null)return{message:"unknown error",stack:""};if(typeof t=="string")return{message:IW(t,kde),stack:""};if(typeof t=="object"){let e=t,r=IW(typeof e.message=="string"?e.message:String(e),kde),n=IW(typeof e.stack=="string"?e.stack:"",Rfr);return{message:r,stack:n}}return{message:IW(String(t),kde),stack:""}}function IW(t,e){return t.length>e?t.slice(0,e)+"\u2026[truncated]":t}var Nfr=new Set(["region","framework","mode","env","e","area","a","debug","external"]),Ofr=new Set(["token","t","secret","key","cookie","authorization","blobCredential","sandboxCredential"]),Ffr=new Set(["path","name","n","projectName","file","f","directoryOrZip"]);function t$e(t){let e={};for(let[r,n]of Object.entries(t))if(!(r==="_"||r==="$0")){if(typeof n=="boolean"){e[r]=n;continue}if(Ofr.has(r)){e[`has_${r}`]=n!=null&&n!==""&&n!==!1;continue}if(Nfr.has(r)){e[r]=String(n!=null?n:"");continue}if(Ffr.has(r)){e[`${r}_kind`]=Lfr(n);continue}e[`has_${r}`]=n!=null&&n!==""&&n!==!1}return e}function Lfr(t){return t==null||t===""?"absent":typeof t!="string"?"present":t.startsWith("/")?"absolute":t.startsWith("./")||t.startsWith("../")?"relative":t.startsWith("~")?"home_relative":"present"}Hs();var ny={global:"https://pages-api.edgeone.ai/v1",china:"https://pages-api.cloud.tencent.com/v1"};var kW={global:"ap-singapore",china:"ap-guangzhou"},s6={global:"https://edgeone.tencentcloud.com",china:"https://edgeone.cloud.tencent.com"},Bde={global:"https://edgeone.ai/login",china:"https://cloud.tencent.com/login"},Dde="/makers/cli-login",Pde={"ap-guangzhou":"china","ap-singapore":"global"};var Ygi=require("fs"),Jgi=require("path"),jfr=["china","global"];function Mfr(t){return ny[t]}async function Qfr(t){var e,r,n;for(let o of jfr)try{let s=Mfr(o),c=await iC.post(s,JSON.stringify({Action:"DescribePagesProjects",PageNumber:1,PageSize:10,Region:kW[o]}),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeout:15e3}),u=((r=(e=c==null?void 0:c.data)==null?void 0:e.Data)==null?void 0:r.Response)||(c==null?void 0:c.data);if((u==null?void 0:u.Code)!=null||((n=u==null?void 0:u.Error)==null?void 0:n.Code)!=null)continue;if(u&&Array.isArray(u.Projects))return o}catch{}return null}async function am(){if(process.env.EDGEONE_PAGES_API_REGION)return process.env.EDGEONE_PAGES_API_REGION;let t=tL();if(t!=null&&t.region)return t.region;if(t!=null&&t.token){let e=await Qfr(t.token);if(e){try{eL({token:t.token,region:e})}catch{}return e}}return await oC("login_region")}tf();Hs();var qfr=async()=>{let t=await am(),e=ny[t];if(e)return e;ar(`Invalid region: ${t}`)},Ww=async()=>{if(process.env.EDGEONE_PAGES_API_TOKEN)return process.env.EDGEONE_PAGES_API_TOKEN;let t=tL();if(t!=null&&t.token)return t.token;try{return(await oC("eo_token")).Token}catch{return}},r$e=async()=>{try{let t=await oC("eo_token");return!t||typeof t!="object"?void 0:{loginType:t.loginType,corpId:t.corpId,corpName:t.corpName,openId:t.openId}}catch{return}},o6=async(t,e)=>{var c,u;let r=e||await qfr(),o={"Content-Type":"application/json",Authorization:`Bearer ${await Ww()}`},s=await iC.post(r,JSON.stringify(t),{headers:o,timeout:15e3});return((u=(c=s.data)==null?void 0:c.Data)==null?void 0:u.Response)||s.data},n$e=async(t,e)=>{var o,s,c,u,p,f;let r=e||await am(),n=ny[r]||ny.china;if(!n)throw new Error("Login get token failed, invalid login region.");try{let h=await iC.post(n,JSON.stringify({Action:"CreateOrDescribeTokenByMCP",Name:"edgeone-cli-auto-generated"}),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`}}),g=(c=(s=(o=h==null?void 0:h.data)==null?void 0:o.Data)==null?void 0:s.Response)==null?void 0:c.TokenData;if(!(g!=null&&g.Token)){let y=(u=h==null?void 0:h.data)==null?void 0:u.Code,v=(p=h==null?void 0:h.data)==null?void 0:p.Message,A=(f=h==null?void 0:h.data)==null?void 0:f.RequestId,S=y!=null?`server Code=${y}, Message=${v}, RequestId=${A}, site=${r}`:`unexpected response shape from ${n}`;throw new Error(`Token exchange returned an empty result. ${S}`)}return g}catch(h){let g=h instanceof Error?h.message:"Unknown error";throw new Error(`Login get token failed, please try again. ${g}`)}};tf();Hs();function i$e(t){var o,s,c,u,p,f;let e=Si(t),r=(o=t==null?void 0:t.response)!=null&&o.status?String(t.response.status):"";return{error_code:((f=(p=(u=(c=(s=t==null?void 0:t.response)==null?void 0:s.data)==null?void 0:c.Data)==null?void 0:u.Response)==null?void 0:p.Error)==null?void 0:f.Code)||(t==null?void 0:t.errorCode)||"",error_message:e.message,http_status:r}}async function s$e(t,e,r){let n=Pde[e]||"unknown";return await o6({Action:t,...r}).catch(s=>{var p,f,h,g;if(s.errorCode==="UnsupportedRegion")return;let c=i$e(s);mr({event_name:"Request:Error",event_scope:hr.REQUEST,event_result:pr.FAIL,event_phase:"request",action:t,region:n,...c});let u=(s==null?void 0:s.requestId)||((g=(h=(f=(p=s==null?void 0:s.response)==null?void 0:p.data)==null?void 0:f.Data)==null?void 0:h.Response)==null?void 0:g.RequestId)||"";ar(`A request error occurred, please try again, but if the problem persists, contact us.(${u?u+": ":""}${c.error_message})`),process.env.DEBUG&&console.log("request error",t,Si(s).message),(s.errorCode==="AuthFailure.SignatureFailure"||s.errorCode==="AuthFailure.SecretIdNotFound")&&iy()}).then(s=>s,s=>{var p,f,h,g;let c=i$e(s);mr({event_name:"Request:Failed",event_scope:hr.REQUEST,event_result:pr.FAIL,event_phase:"request",action:t,region:n,...c});let u=(s==null?void 0:s.requestId)||((g=(h=(f=(p=s==null?void 0:s.response)==null?void 0:p.data)==null?void 0:f.Data)==null?void 0:h.Response)==null?void 0:g.RequestId)||"";throw ar(`Request Failed: ${t}${u?", RequestId: "+u:""}: ${c.error_message}`),s})}var a6={china:"ap-guangzhou",global:"ap-singapore"},Q0=async()=>{let t=async r=>{let n=Pde[r],o;return o=ny[n],{success:!!(await o6({Action:"DescribePagesProjects",PageNumber:1,PageSize:10,Region:r},o)).Projects}},e=["ap-guangzhou","ap-singapore"];try{for(let r of e)(await t(r)).success&&(r==="ap-guangzhou"?process.env.EDGEONE_PAGES_API_REGION="china":r==="ap-singapore"&&(process.env.EDGEONE_PAGES_API_REGION="global"))}catch(r){ar(`check and set region failed: ${r}`)}process.env.EDGEONE_PAGES_API_REGION||(process.env.DEBUG&&console.log("[debug] checkAndSetRegion: no region detected, defaulting to china"),process.env.EDGEONE_PAGES_API_REGION="china")};async function rf(t,e){var n;let r=await am();if(!r){let o=!!((n=tL())!=null&&n.token);process.env.EDGEONE_PAGES_API_TOKEN||o?(process.env.DEBUG&&console.log("[debug] pagesCapi: token set but no region, defaulting to china"),r="china"):(await iy(),r=await am())}return r&&a6[r]?(o$e(a6[r]),await s$e(t,a6[r],e)):(o$e(a6.china),await s$e(t,a6.china,e))}function o$e(t="ap-guangzhou"){let e=t==="ap-guangzhou";process.send&&process.send(JSON.stringify({isDomestic:e}))}var b$e=Bt(require("open")),E$e=require("crypto");var g$e=Bt(require("http"));tf();var Ufr="/pages/connect",a$e=t=>t==="global"?"https://console.tencentcloud.com/edgeone/makers":"https://console.cloud.tencent.com/edgeone/makers",c$e=t=>t==="global"?"https://edgeone.tencentcloud.com/logo/BlackHeadLogo.svg":"https://edgeone.cloud.tencent.com/logo/BlackHeadLogo.svg",u$e=t=>{let e=t==="global";return{lang:e?"en":"zh-CN",successTitle:e?"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:e?"You will be redirected to the Makers console in 5 seconds":"5 \u79D2\u540E\u81EA\u52A8\u8DF3\u8F6C\u5230 Makers \u63A7\u5236\u53F0",successButtonText:e?"Go Console":"\u56DE\u5230\u63A7\u5236\u53F0",errorTitle:e?"Login failed. Please return to the original app and try again":"\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u8FD4\u56DE\u539F\u5E94\u7528\u91CD\u8BD5"}},l$e=t=>t==="global"?`
|
|
579
579
|
<ol class="footer-links">
|
|
580
580
|
<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>
|
|
581
581
|
<li class="footer-separator">\xB7</li>
|
|
@@ -934,7 +934,7 @@ ${A.join(`
|
|
|
934
934
|
}
|
|
935
935
|
</script>
|
|
936
936
|
</body>
|
|
937
|
-
</html>`};Hs();var $fr=60*60*1e3,zfr=64*1024,Hfr=16*1024,Vfr=new Set(["https://edgeone.cloud.tencent.com","https://edgeone.tencentcloud.com","https://edgeone.ai","https://pre.edgeone.ai"]),TW=class{options;port;server;readyPromise;resultPromise;resolveReady;rejectReady;resolveResult;timeoutHandle;completed=!1;processing=!1;constructor(e){this.options=e,this.port=e.port||1025,this.readyPromise=new Promise((r,n)=>{this.resolveReady=r,this.rejectReady=n}),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())},e.timeoutMs||$fr),this.server=g$e.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(e,r){let n=new URL(e.url||"/",`http://127.0.0.1:${this.port}`);if(n.pathname!==Rde){this.sendMethodNotAllowed(r);return}if(e.method==="OPTIONS"){this.handlePreflight(e,r);return}if(e.method==="POST"){await this.handlePost(e,r);return}if(e.method==="GET"){if(!n.search){r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(m$e({region:this.options.region}));return}await this.handleGet(n,r);return}this.sendMethodNotAllowed(r)}handlePreflight(e,r){let n=e.headers.origin;if(!n||!this.isAllowedOrigin(n)){r.writeHead(403,{"Content-Type":"text/plain; charset=utf-8"}),r.end("Origin is not allowed");return}this.setCorsHeaders(e,r,n),r.writeHead(204),r.end()}async handlePost(e,r){let n=e.headers.origin;if(n&&!this.isAllowedOrigin(n)){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(n&&this.setCorsHeaders(e,r,n),!String(e.headers["content-type"]||"").toLowerCase().startsWith("application/json")){this.sendJson(r,415,{code:415,success:!1,message:"Content-Type must be application/json"});return}let o;try{o=await this.readJsonPayload(e)}catch(s){let c=s instanceof Error?s.message:"Invalid request body";this.sendJson(r,c==="Request body is too large"?413:400,{code:c==="Request body is too large"?413:400,success:!1,message:c});return}if(this.completed||this.processing){this.sendJson(r,200,{code:0,success:!0,message:"Login request already accepted"});return}try{await this.processLogin(o),this.sendJson(r,200,{code:0,success:!0,message:"Login success"},()=>{this.finish({success:!0,message:"Login success"})})}catch(s){let c=s instanceof Error?s.message:String(s);Mt(`[pages-login] token exchange failed: ${c}`),this.sendJson(r,400,{code:400,success:!1,message:c},()=>{this.finish({success:!1,message:c})})}}async handleGet(e,r){let o=e.searchParams.get("region")||this.options.region;if(this.completed||this.processing){r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(c6({region:o,status:"success"}));return}let s;try{s=this.parseGetPayload(e)}catch(c){let u=c instanceof Error?c.message:String(c);Mt(`[pages-login] invalid callback payload: ${u}`),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(c6({region:o,status:"error",message:u}),()=>{this.finish({success:!1,message:u})});return}try{await this.processLogin(s),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(c6({region:o,status:"success"}),()=>{this.finish({success:!0,message:"Login success"})})}catch(c){let u=c instanceof Error?c.message:String(c);Mt(`[pages-login] token exchange failed: ${u}`),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(c6({region:o,status:"error",message:u}),()=>{this.finish({success:!1,message:u})})}}parseGetPayload(e){let r=e.searchParams,n=r.get("__eo_sso_cb");if(n)return this.decodeTenantCallback(n);let o={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(o.token)return o;let s=e.search.slice(1),u=r.get("payload")||(s&&!s.includes("&")&&!/^(token|state|loginType|provider|corpId|corpName|region|openId|expired|__eo_sso_cb)=/.test(s)?s:"");return u?this.decodeTenantCallback(u):o}decodeTenantCallback(e){let r;try{r=decodeURIComponent(e)}catch{throw new Error("Login callback payload is not valid URL encoding.")}if(Buffer.byteLength(r,"utf8")>Hfr)throw new Error("Login callback payload is too large.");let n=r.replace(/-/g,"+").replace(/_/g,"/");if(!/^[A-Za-z0-9+/]*={0,2}$/.test(n)||n.length%4===1)throw new Error("Login callback payload is not valid Base64.");let o=n.padEnd(n.length+(4-n.length%4)%4,"="),s;try{let u=Buffer.from(o,"base64").toString("utf8");if(Buffer.from(u,"utf8").toString("base64").replace(/=+$/,"")!==n.replace(/=+$/,""))throw new Error("Non-canonical Base64");s=JSON.parse(u)}catch{throw new Error("Login callback payload cannot be decoded.")}if(!s||typeof s!="object"||Array.isArray(s))throw new Error("Login callback payload must contain a JSON object.");let c=s;return{token:typeof c.token=="string"?c.token:void 0,state:typeof c.state=="string"?c.state:void 0,openId:typeof c.openId=="string"?c.openId:void 0,expired:typeof c.expired=="number"?c.expired:void 0,loginType:"dingtalk"}}async processLogin(e){let r=e.token;if(!r)throw new Error("Login payload missing token field.");if(this.options.state&&(!e.state||e.state!==this.options.state))throw new Error("Login state mismatch. Possible CSRF or stale login page.");if(e.expired!=null){if(!Number.isSafeInteger(e.expired)||e.expired<=0)throw new Error("Login token expiration is invalid.");if(e.expired<=Math.floor(Date.now()/1e3))throw new Error("Login Tenant Token has expired.")}this.processing=!0;let n=e.loginType||e.provider,o;n==="dingtalk"?o={Token:r}:o=await n$e(r);let s=o;n&&(s={...o,loginType:n},e.corpId&&(s.corpId=e.corpId),e.corpName&&(s.corpName=e.corpName),e.openId&&(s.openId=e.openId),e.expired!=null&&(s.expired=e.expired)),await Db("eo_token",s);let c=e.region||this.options.region;if(c&&await Db("login_region",c),this.options.local)try{eL({token:o.Token,region:c})}catch(u){let p=`Failed to write <cwd>/.edgeone/auth.json: ${u instanceof Error?u.message:String(u)}`;throw Mt(`[pages-login] ${p}`),new Error(p)}}readJsonPayload(e){return new Promise((r,n)=>{let o="",s=0,c=!1;e.setEncoding("utf8"),e.on("data",u=>{if(!c){if(s+=Buffer.byteLength(u),s>zfr){c=!0,n(new Error("Request body is too large"));return}o+=u}}),e.on("end",()=>{if(!c)try{let u=JSON.parse(o||"{}");if(!u||typeof u!="object"||Array.isArray(u))throw new Error("Request body must be a JSON object");r(u)}catch(u){n(u instanceof Error?u:new Error("Invalid JSON body"))}}),e.on("error",n)})}isAllowedOrigin(e){return Vfr.has(e)||e===`http://127.0.0.1:${this.port}`||e===`http://localhost:${this.port}`}setCorsHeaders(e,r,n){r.setHeader("Access-Control-Allow-Origin",n),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"),e.headers["access-control-request-private-network"]==="true"&&r.setHeader("Access-Control-Allow-Private-Network","true")}sendJson(e,r,n,o){e.writeHead(r,{"Content-Type":"application/json; charset=utf-8"}),e.end(JSON.stringify(n),o)}sendMethodNotAllowed(e){e.writeHead(405,{"Content-Type":"text/plain; charset=utf-8",Allow:"GET, POST, OPTIONS"}),e.end("Only GET, POST and OPTIONS /pages/connect are supported")}handleError(e){e.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:",e),this.rejectReady(e)),this.completed||(this.completed=!0,this.resolveResult({success:!1,message:""}))}finish(e){var r,n;this.completed||(this.completed=!0,this.processing=!1,this.resolveResult(e),e.success&&((n=(r=this.options).callback)==null||n.call(r)),this.closeServer())}closeServer(){this.timeoutHandle&&(clearTimeout(this.timeoutHandle),this.timeoutHandle=void 0),this.server.listening&&this.server.close()}};var l6=require("fs"),Jfr=require("path"),x$e=v$e();async function Kfr(){return new Promise((t,e)=>{x$e.setBasePort(1024),x$e.getPort((r,n)=>{if(r){e(r);return}t(n)})})}function Xfr(t,e,r={}){let{state:n}=r,o=`${s6[t]||s6.china}${Dde}`,s=new URLSearchParams({p:String(e)});return n&&s.set("state",n),`${o}?${s.toString()}`}function Zfr(t,e,r){let n=`${s6[t]||s6.china}${Dde}`,o=new URLSearchParams({p:String(e),from:"console",region:t});r&&o.set("state",r);let s=encodeURIComponent(`${n}?${o.toString()}`);return`${Bde[t]||Bde.china}?s_url=${s}`}async function Qde(t,e={}){let r=await Kfr(),n=(0,E$e.randomUUID)(),o=t==="global"?"global":"china",s;!t||t==="sso"?s=Xfr(o,r,{state:n}):s=Zfr(t,r,n),Mt("Jumping to login page..."),Mt("Please come back after login."),await Db("login_region",o);let c=await am(),u=new TW({region:c,port:r,local:e.local,state:n});await u.waitUntilReady(),console.log("If the browser does not open automatically, please visit:"),nL(s),await(0,b$e.default)(s).catch(()=>{Mt("Browser could not be opened automatically. Please open the login URL manually.")});let p=await u.waitForResult();if(!p.success)throw new Error(p.message||"Login failed. Please try again.")}async function w$e(){if(process.env.EDGEONE_PAGES_API_TOKEN){let r=await rf("DescribeUserInfo",{}).catch(n=>{sg("Run whoami command failed.",{message:n.errorMessage,stack:n}),ar("You are not authenticated. Please run `edgeone login`."),process.exit(1)});return r!=null&&r.Code?(ar("Your token is not valid."),!1):!0}if(!await Ww())return!1;let e=await rf("DescribeUserInfo",{}).catch(r=>{sg("Run whoami command failed.",{message:r.errorMessage,stack:r}),ar("You are not authenticated. Please run `edgeone login`."),process.exit(1)});return!(e!=null&&e.Code)}var edr=["china","global"];function tdr(t){return ny[t]}function rdr(t){var r;let e=(r=t==null?void 0:t.response)==null?void 0:r.status;return!(t!=null&&t.tokenLoginAuthError)&&!(t!=null&&t.response)||(t==null?void 0:t.code)==="ECONNABORTED"||(t==null?void 0:t.code)==="ETIMEDOUT"||e>=500}function ndr(t){var r;let e=(r=t==null?void 0:t.response)==null?void 0:r.status;return(t==null?void 0:t.tokenLoginAuthError)||e>=400&&e<500}function idr(){return Object.assign(new Error("Token validation rejected."),{tokenLoginAuthError:!0})}function sdr(t){var e;return(t==null?void 0:t.Code)!=null||((e=t==null?void 0:t.Error)==null?void 0:e.Code)!=null}async function odr(t,e){var c,u;let r=tdr(e),n=kW[e],o=await iC.post(r,JSON.stringify({Action:"DescribePagesProjects",PageNumber:1,PageSize:10,Region:n}),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeout:15e3}),s=((u=(c=o==null?void 0:o.data)==null?void 0:c.Data)==null?void 0:u.Response)||(o==null?void 0:o.data);if(sdr(s))throw idr();if(!s||!Array.isArray(s.Projects))throw new Error("Invalid token validation response.");return!0}async function adr(t,e={}){let r=!1,n=!1;for(let o of edr)try{if(await odr(t,o)){if(await Db("eo_token",{Token:t}),await Db("login_region",o),e.local)try{eL({token:t,region:o})}catch(s){ar(`Failed to write <cwd>/.edgeone/auth.json: ${s instanceof Error?s.message:String(s)}`),process.exit(1)}return sL(),o}}catch(s){ndr(s)&&(n=!0),rdr(s)&&(r=!0)}throw!n&&r?new Error("Token validation failed. Please check your network or try again later."):new Error("Token cannot be validated against supported sites.")}async function iy(t){if(!await w$e()){au()&&(ar("You are not authenticated, and browser login is unavailable in a non-interactive environment."),ar("Please provide a token via `-t <token>` or set the EDGEONE_PAGES_API_TOKEN environment variable."),ar("Get a token at: https://console.cloud.tencent.com/edgeone/pages?tab=settings"),process.exit(1)),Mt(`You need to log in first to run this command.
|
|
937
|
+
</html>`};Hs();var $fr=60*60*1e3,zfr=64*1024,Hfr=16*1024,Vfr=new Set(["https://edgeone.cloud.tencent.com","https://edgeone.tencentcloud.com","https://edgeone.ai","https://pre.edgeone.ai"]),TW=class{options;port;server;readyPromise;resultPromise;resolveReady;rejectReady;resolveResult;timeoutHandle;completed=!1;processing=!1;constructor(e){this.options=e,this.port=e.port||1025,this.readyPromise=new Promise((r,n)=>{this.resolveReady=r,this.rejectReady=n}),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())},e.timeoutMs||$fr),this.server=g$e.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(e,r){let n=new URL(e.url||"/",`http://127.0.0.1:${this.port}`);if(n.pathname!==Rde){this.sendMethodNotAllowed(r);return}if(e.method==="OPTIONS"){this.handlePreflight(e,r);return}if(e.method==="POST"){await this.handlePost(e,r);return}if(e.method==="GET"){if(!n.search){r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(m$e({region:this.options.region}));return}await this.handleGet(n,r);return}this.sendMethodNotAllowed(r)}handlePreflight(e,r){let n=e.headers.origin;if(!n||!this.isAllowedOrigin(n)){r.writeHead(403,{"Content-Type":"text/plain; charset=utf-8"}),r.end("Origin is not allowed");return}this.setCorsHeaders(e,r,n),r.writeHead(204),r.end()}async handlePost(e,r){let n=e.headers.origin;if(n&&!this.isAllowedOrigin(n)){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(n&&this.setCorsHeaders(e,r,n),!String(e.headers["content-type"]||"").toLowerCase().startsWith("application/json")){this.sendJson(r,415,{code:415,success:!1,message:"Content-Type must be application/json"});return}let o;try{o=await this.readJsonPayload(e)}catch(s){let c=s instanceof Error?s.message:"Invalid request body";this.sendJson(r,c==="Request body is too large"?413:400,{code:c==="Request body is too large"?413:400,success:!1,message:c});return}if(this.completed||this.processing){this.sendJson(r,200,{code:0,success:!0,message:"Login request already accepted"});return}try{await this.processLogin(o),this.sendJson(r,200,{code:0,success:!0,message:"Login success"},()=>{this.finish({success:!0,message:"Login success"})})}catch(s){let c=s instanceof Error?s.message:String(s);Mt(`[pages-login] token exchange failed: ${c}`),this.sendJson(r,400,{code:400,success:!1,message:c},()=>{this.finish({success:!1,message:c})})}}async handleGet(e,r){let o=e.searchParams.get("region")||this.options.region;if(this.completed||this.processing){r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(c6({region:o,status:"success"}));return}let s;try{s=this.parseGetPayload(e)}catch(c){let u=c instanceof Error?c.message:String(c);Mt(`[pages-login] invalid callback payload: ${u}`),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(c6({region:o,status:"error",message:u}),()=>{this.finish({success:!1,message:u})});return}try{await this.processLogin(s),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(c6({region:o,status:"success"}),()=>{this.finish({success:!0,message:"Login success"})})}catch(c){let u=c instanceof Error?c.message:String(c);Mt(`[pages-login] token exchange failed: ${u}`),r.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),r.end(c6({region:o,status:"error",message:u}),()=>{this.finish({success:!1,message:u})})}}parseGetPayload(e){let r=e.searchParams,n=r.get("__eo_sso_cb");if(n)return this.decodeTenantCallback(n);let o={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(o.token)return o;let s=e.search.slice(1),u=r.get("payload")||(s&&!s.includes("&")&&!/^(token|state|loginType|provider|corpId|corpName|region|openId|expired|__eo_sso_cb)=/.test(s)?s:"");return u?this.decodeTenantCallback(u):o}decodeTenantCallback(e){let r;try{r=decodeURIComponent(e)}catch{throw new Error("Login callback payload is not valid URL encoding.")}if(Buffer.byteLength(r,"utf8")>Hfr)throw new Error("Login callback payload is too large.");let n=r.replace(/-/g,"+").replace(/_/g,"/");if(!/^[A-Za-z0-9+/]*={0,2}$/.test(n)||n.length%4===1)throw new Error("Login callback payload is not valid Base64.");let o=n.padEnd(n.length+(4-n.length%4)%4,"="),s;try{let u=Buffer.from(o,"base64").toString("utf8");if(Buffer.from(u,"utf8").toString("base64").replace(/=+$/,"")!==n.replace(/=+$/,""))throw new Error("Non-canonical Base64");s=JSON.parse(u)}catch{throw new Error("Login callback payload cannot be decoded.")}if(!s||typeof s!="object"||Array.isArray(s))throw new Error("Login callback payload must contain a JSON object.");let c=s;return{token:typeof c.token=="string"?c.token:void 0,state:typeof c.state=="string"?c.state:void 0,openId:typeof c.openId=="string"?c.openId:void 0,expired:typeof c.expired=="number"?c.expired:void 0,loginType:"dingtalk"}}async processLogin(e){let r=e.token;if(!r)throw new Error("Login payload missing token field.");if(this.options.state&&(!e.state||e.state!==this.options.state))throw new Error("Login state mismatch. Possible CSRF or stale login page.");if(e.expired!=null){if(!Number.isSafeInteger(e.expired)||e.expired<=0)throw new Error("Login token expiration is invalid.");if(e.expired<=Math.floor(Date.now()/1e3))throw new Error("Login Tenant Token has expired.")}this.processing=!0;let n=e.region||this.options.region,o=e.loginType||e.provider,s;o==="dingtalk"?s={Token:r}:s=await n$e(r,n);let c=s;if(o&&(c={...s,loginType:o},e.corpId&&(c.corpId=e.corpId),e.corpName&&(c.corpName=e.corpName),e.openId&&(c.openId=e.openId),e.expired!=null&&(c.expired=e.expired)),await Db("eo_token",c),n&&await Db("login_region",n),this.options.local)try{eL({token:s.Token,region:n})}catch(u){let p=`Failed to write <cwd>/.edgeone/auth.json: ${u instanceof Error?u.message:String(u)}`;throw Mt(`[pages-login] ${p}`),new Error(p)}}readJsonPayload(e){return new Promise((r,n)=>{let o="",s=0,c=!1;e.setEncoding("utf8"),e.on("data",u=>{if(!c){if(s+=Buffer.byteLength(u),s>zfr){c=!0,n(new Error("Request body is too large"));return}o+=u}}),e.on("end",()=>{if(!c)try{let u=JSON.parse(o||"{}");if(!u||typeof u!="object"||Array.isArray(u))throw new Error("Request body must be a JSON object");r(u)}catch(u){n(u instanceof Error?u:new Error("Invalid JSON body"))}}),e.on("error",n)})}isAllowedOrigin(e){return Vfr.has(e)||e===`http://127.0.0.1:${this.port}`||e===`http://localhost:${this.port}`}setCorsHeaders(e,r,n){r.setHeader("Access-Control-Allow-Origin",n),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"),e.headers["access-control-request-private-network"]==="true"&&r.setHeader("Access-Control-Allow-Private-Network","true")}sendJson(e,r,n,o){e.writeHead(r,{"Content-Type":"application/json; charset=utf-8"}),e.end(JSON.stringify(n),o)}sendMethodNotAllowed(e){e.writeHead(405,{"Content-Type":"text/plain; charset=utf-8",Allow:"GET, POST, OPTIONS"}),e.end("Only GET, POST and OPTIONS /pages/connect are supported")}handleError(e){e.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:",e),this.rejectReady(e)),this.completed||(this.completed=!0,this.resolveResult({success:!1,message:""}))}finish(e){var r,n;this.completed||(this.completed=!0,this.processing=!1,this.resolveResult(e),e.success&&((n=(r=this.options).callback)==null||n.call(r)),this.closeServer())}closeServer(){this.timeoutHandle&&(clearTimeout(this.timeoutHandle),this.timeoutHandle=void 0),this.server.listening&&this.server.close()}};var l6=require("fs"),Jfr=require("path"),x$e=v$e();async function Kfr(){return new Promise((t,e)=>{x$e.setBasePort(1024),x$e.getPort((r,n)=>{if(r){e(r);return}t(n)})})}function Xfr(t,e,r={}){let{state:n}=r,o=`${s6[t]||s6.china}${Dde}`,s=new URLSearchParams({p:String(e)});return n&&s.set("state",n),`${o}?${s.toString()}`}function Zfr(t,e,r){let n=`${s6[t]||s6.china}${Dde}`,o=new URLSearchParams({p:String(e),from:"console",region:t});r&&o.set("state",r);let s=encodeURIComponent(`${n}?${o.toString()}`);return`${Bde[t]||Bde.china}?s_url=${s}`}async function Qde(t,e={}){let r=await Kfr(),n=(0,E$e.randomUUID)(),o=t==="global"?"global":"china",s;!t||t==="sso"?s=Xfr(o,r,{state:n}):s=Zfr(t,r,n),Mt("Jumping to login page..."),Mt("Please come back after login."),await Db("login_region",o);let c=await am(),u=new TW({region:c,port:r,local:e.local,state:n});await u.waitUntilReady(),console.log("If the browser does not open automatically, please visit:"),nL(s),await(0,b$e.default)(s).catch(()=>{Mt("Browser could not be opened automatically. Please open the login URL manually.")});let p=await u.waitForResult();if(!p.success)throw new Error(p.message||"Login failed. Please try again.")}async function w$e(){if(process.env.EDGEONE_PAGES_API_TOKEN){let r=await rf("DescribeUserInfo",{}).catch(n=>{sg("Run whoami command failed.",{message:n.errorMessage,stack:n}),ar("You are not authenticated. Please run `edgeone login`."),process.exit(1)});return r!=null&&r.Code?(ar("Your token is not valid."),!1):!0}if(!await Ww())return!1;let e=await rf("DescribeUserInfo",{}).catch(r=>{sg("Run whoami command failed.",{message:r.errorMessage,stack:r}),ar("You are not authenticated. Please run `edgeone login`."),process.exit(1)});return!(e!=null&&e.Code)}var edr=["china","global"];function tdr(t){return ny[t]}function rdr(t){var r;let e=(r=t==null?void 0:t.response)==null?void 0:r.status;return!(t!=null&&t.tokenLoginAuthError)&&!(t!=null&&t.response)||(t==null?void 0:t.code)==="ECONNABORTED"||(t==null?void 0:t.code)==="ETIMEDOUT"||e>=500}function ndr(t){var r;let e=(r=t==null?void 0:t.response)==null?void 0:r.status;return(t==null?void 0:t.tokenLoginAuthError)||e>=400&&e<500}function idr(){return Object.assign(new Error("Token validation rejected."),{tokenLoginAuthError:!0})}function sdr(t){var e;return(t==null?void 0:t.Code)!=null||((e=t==null?void 0:t.Error)==null?void 0:e.Code)!=null}async function odr(t,e){var c,u;let r=tdr(e),n=kW[e],o=await iC.post(r,JSON.stringify({Action:"DescribePagesProjects",PageNumber:1,PageSize:10,Region:n}),{headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},timeout:15e3}),s=((u=(c=o==null?void 0:o.data)==null?void 0:c.Data)==null?void 0:u.Response)||(o==null?void 0:o.data);if(sdr(s))throw idr();if(!s||!Array.isArray(s.Projects))throw new Error("Invalid token validation response.");return!0}async function adr(t,e={}){let r=!1,n=!1;for(let o of edr)try{if(await odr(t,o)){if(await Db("eo_token",{Token:t}),await Db("login_region",o),e.local)try{eL({token:t,region:o})}catch(s){ar(`Failed to write <cwd>/.edgeone/auth.json: ${s instanceof Error?s.message:String(s)}`),process.exit(1)}return sL(),o}}catch(s){ndr(s)&&(n=!0),rdr(s)&&(r=!0)}throw!n&&r?new Error("Token validation failed. Please check your network or try again later."):new Error("Token cannot be validated against supported sites.")}async function iy(t){if(!await w$e()){au()&&(ar("You are not authenticated, and browser login is unavailable in a non-interactive environment."),ar("Please provide a token via `-t <token>` or set the EDGEONE_PAGES_API_TOKEN environment variable."),ar("Get a token at: https://console.cloud.tencent.com/edgeone/pages?tab=settings"),process.exit(1)),Mt(`You need to log in first to run this command.
|
|
938
938
|
`);try{return await Qde(t),sL(),!0}catch(e){ar(e instanceof Error?e.message:"Login failed. Please try again."),process.exit(1)}}return!1}function sL(){let t=`
|
|
939
939
|
# Tencent Cloud EdgeOne
|
|
940
940
|
.env
|
|
@@ -2059,6 +2059,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
2059
2059
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
2060
2060
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
2061
2061
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
2062
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
2063
|
+
var STATE_PREFIX = "state";
|
|
2064
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
2062
2065
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
2063
2066
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
2064
2067
|
"user",
|
|
@@ -2105,6 +2108,15 @@ var MemoryStorageError = class extends Error {
|
|
|
2105
2108
|
this.cause = cause;
|
|
2106
2109
|
}
|
|
2107
2110
|
};
|
|
2111
|
+
var MemoryCorruptError = class extends Error {
|
|
2112
|
+
code = "MemoryCorruptError";
|
|
2113
|
+
cause;
|
|
2114
|
+
constructor(message, cause) {
|
|
2115
|
+
super(message);
|
|
2116
|
+
this.name = "MemoryCorruptError";
|
|
2117
|
+
this.cause = cause;
|
|
2118
|
+
}
|
|
2119
|
+
};
|
|
2108
2120
|
var dynamicImport = new Function(
|
|
2109
2121
|
"specifier",
|
|
2110
2122
|
"return import(specifier);"
|
|
@@ -2112,7 +2124,7 @@ var dynamicImport = new Function(
|
|
|
2112
2124
|
var langchainLoadPromise;
|
|
2113
2125
|
var langchainMessagesPromise;
|
|
2114
2126
|
function isMemoryError(error) {
|
|
2115
|
-
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError;
|
|
2127
|
+
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError || error instanceof MemoryCorruptError;
|
|
2116
2128
|
}
|
|
2117
2129
|
async function wrapStorage(operation) {
|
|
2118
2130
|
try {
|
|
@@ -2280,10 +2292,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
2280
2292
|
return revived;
|
|
2281
2293
|
}
|
|
2282
2294
|
async function deserializeLangGraphJson(value) {
|
|
2283
|
-
|
|
2284
|
-
|
|
2295
|
+
try {
|
|
2296
|
+
if (isLangGraphSerializedJson(value)) {
|
|
2297
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
2298
|
+
}
|
|
2299
|
+
return reviveLangGraphJsonValue(value);
|
|
2300
|
+
} catch (error) {
|
|
2301
|
+
throw new MemoryCorruptError(
|
|
2302
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
2303
|
+
error
|
|
2304
|
+
);
|
|
2285
2305
|
}
|
|
2286
|
-
return reviveLangGraphJsonValue(value);
|
|
2287
2306
|
}
|
|
2288
2307
|
function normalizeStoreLimit(value, fallback) {
|
|
2289
2308
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -2395,6 +2414,115 @@ function validateMessageId(messageId) {
|
|
|
2395
2414
|
throw new MemoryValidationError("messageId is required.");
|
|
2396
2415
|
}
|
|
2397
2416
|
}
|
|
2417
|
+
function validateStateKey(key) {
|
|
2418
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
2419
|
+
throw new MemoryValidationError("state key is required.");
|
|
2420
|
+
}
|
|
2421
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
2422
|
+
throw new MemoryValidationError(
|
|
2423
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
2424
|
+
);
|
|
2425
|
+
}
|
|
2426
|
+
}
|
|
2427
|
+
function assertStateSerializable(value, path = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
2428
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
2429
|
+
return;
|
|
2430
|
+
}
|
|
2431
|
+
if (typeof value === "number") {
|
|
2432
|
+
if (Number.isFinite(value))
|
|
2433
|
+
return;
|
|
2434
|
+
throw new MemoryValidationError(\`\${path} must contain only JSON values.\`);
|
|
2435
|
+
}
|
|
2436
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
2437
|
+
throw new MemoryValidationError(\`\${path} must be JSON serializable.\`);
|
|
2438
|
+
}
|
|
2439
|
+
if (typeof value !== "object") {
|
|
2440
|
+
throw new MemoryValidationError(\`\${path} must be JSON serializable.\`);
|
|
2441
|
+
}
|
|
2442
|
+
if (seen.has(value)) {
|
|
2443
|
+
throw new MemoryValidationError(\`\${path} must not contain circular references.\`);
|
|
2444
|
+
}
|
|
2445
|
+
seen.add(value);
|
|
2446
|
+
if (Array.isArray(value)) {
|
|
2447
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path}[\${index}]\`, seen));
|
|
2448
|
+
} else if (isPlainObject(value)) {
|
|
2449
|
+
for (const [key, item] of Object.entries(value)) {
|
|
2450
|
+
assertStateSerializable(item, \`\${path}.\${key}\`, seen);
|
|
2451
|
+
}
|
|
2452
|
+
} else {
|
|
2453
|
+
throw new MemoryValidationError(\`\${path} must contain only JSON values.\`);
|
|
2454
|
+
}
|
|
2455
|
+
seen.delete(value);
|
|
2456
|
+
}
|
|
2457
|
+
function stateConversationPrefix(conversationId) {
|
|
2458
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
2459
|
+
}
|
|
2460
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
2461
|
+
const requireConversation = () => {
|
|
2462
|
+
if (!boundConversationId) {
|
|
2463
|
+
throw new MemoryValidationError(
|
|
2464
|
+
"State operations require a bound conversationId."
|
|
2465
|
+
);
|
|
2466
|
+
}
|
|
2467
|
+
validateConversationId(boundConversationId);
|
|
2468
|
+
return boundConversationId;
|
|
2469
|
+
};
|
|
2470
|
+
return {
|
|
2471
|
+
async get(key) {
|
|
2472
|
+
validateStateKey(key);
|
|
2473
|
+
const conversationId = requireConversation();
|
|
2474
|
+
return wrapStorage(async () => {
|
|
2475
|
+
const raw = await store.get(
|
|
2476
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
2477
|
+
{ consistency: "strong" }
|
|
2478
|
+
);
|
|
2479
|
+
if (raw === null)
|
|
2480
|
+
return null;
|
|
2481
|
+
if (typeof raw !== "string") {
|
|
2482
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
2483
|
+
}
|
|
2484
|
+
try {
|
|
2485
|
+
return JSON.parse(raw);
|
|
2486
|
+
} catch (error) {
|
|
2487
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error);
|
|
2488
|
+
}
|
|
2489
|
+
});
|
|
2490
|
+
},
|
|
2491
|
+
async set(key, value) {
|
|
2492
|
+
validateStateKey(key);
|
|
2493
|
+
const conversationId = requireConversation();
|
|
2494
|
+
assertStateSerializable(value);
|
|
2495
|
+
let serialized;
|
|
2496
|
+
try {
|
|
2497
|
+
serialized = JSON.stringify(value);
|
|
2498
|
+
} catch (error) {
|
|
2499
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error)}\`);
|
|
2500
|
+
}
|
|
2501
|
+
await wrapStorage(
|
|
2502
|
+
() => store.set(
|
|
2503
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
2504
|
+
serialized
|
|
2505
|
+
)
|
|
2506
|
+
);
|
|
2507
|
+
},
|
|
2508
|
+
async delete(key) {
|
|
2509
|
+
validateStateKey(key);
|
|
2510
|
+
const conversationId = requireConversation();
|
|
2511
|
+
await wrapStorage(
|
|
2512
|
+
() => store.delete(
|
|
2513
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
2514
|
+
)
|
|
2515
|
+
);
|
|
2516
|
+
}
|
|
2517
|
+
};
|
|
2518
|
+
}
|
|
2519
|
+
async function deleteAgentState(store, conversationId) {
|
|
2520
|
+
const listed = await store.list({
|
|
2521
|
+
prefix: stateConversationPrefix(conversationId),
|
|
2522
|
+
consistency: "strong"
|
|
2523
|
+
});
|
|
2524
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
2525
|
+
}
|
|
2398
2526
|
function validateUserId(userId) {
|
|
2399
2527
|
if (userId === void 0) {
|
|
2400
2528
|
return;
|
|
@@ -2527,6 +2655,9 @@ function cursorSortKey(cursor) {
|
|
|
2527
2655
|
const payload = decodeConversationCursor(cursor);
|
|
2528
2656
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
2529
2657
|
}
|
|
2658
|
+
function cursorListCursor(cursor) {
|
|
2659
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
2660
|
+
}
|
|
2530
2661
|
function indexSortKey(key, prefix) {
|
|
2531
2662
|
return key.slice(prefix.length);
|
|
2532
2663
|
}
|
|
@@ -2694,6 +2825,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
2694
2825
|
function claudeProjectPrefix(projectKey) {
|
|
2695
2826
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
2696
2827
|
}
|
|
2828
|
+
function claudeSessionMappingKey(conversationId) {
|
|
2829
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
2830
|
+
}
|
|
2831
|
+
function normalizeClaudeUuid(value) {
|
|
2832
|
+
const trimmed = value.trim().toLowerCase();
|
|
2833
|
+
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;
|
|
2834
|
+
}
|
|
2835
|
+
function claudeSessionIdFromKey(key) {
|
|
2836
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
2837
|
+
if (!key.startsWith(prefix)) {
|
|
2838
|
+
return null;
|
|
2839
|
+
}
|
|
2840
|
+
const segments = key.slice(prefix.length).split("/");
|
|
2841
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
2842
|
+
}
|
|
2843
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
2844
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
2845
|
+
const mapping = await store.get(mappingKey, {
|
|
2846
|
+
consistency: "strong"
|
|
2847
|
+
});
|
|
2848
|
+
let sessionId = null;
|
|
2849
|
+
if (typeof mapping === "string") {
|
|
2850
|
+
sessionId = mapping;
|
|
2851
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
2852
|
+
sessionId = mapping.sessionId;
|
|
2853
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
2854
|
+
sessionId = mapping.session_id;
|
|
2855
|
+
}
|
|
2856
|
+
if (!sessionId) {
|
|
2857
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
2858
|
+
}
|
|
2859
|
+
await store.delete(mappingKey);
|
|
2860
|
+
if (!sessionId) {
|
|
2861
|
+
return;
|
|
2862
|
+
}
|
|
2863
|
+
const listed = await store.list({
|
|
2864
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
2865
|
+
consistency: "strong"
|
|
2866
|
+
});
|
|
2867
|
+
for (const key of listed.keys) {
|
|
2868
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
2869
|
+
await store.delete(key);
|
|
2870
|
+
}
|
|
2871
|
+
}
|
|
2872
|
+
}
|
|
2697
2873
|
function claudePartsPrefix(key) {
|
|
2698
2874
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
2699
2875
|
if (key.subpath) {
|
|
@@ -2731,7 +2907,9 @@ function createClaudeSessionStore(store) {
|
|
|
2731
2907
|
consistency: "strong"
|
|
2732
2908
|
});
|
|
2733
2909
|
if (typeof raw !== "string") {
|
|
2734
|
-
|
|
2910
|
+
throw new MemoryCorruptError(
|
|
2911
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
2912
|
+
);
|
|
2735
2913
|
}
|
|
2736
2914
|
for (const line of raw.split("\\n")) {
|
|
2737
2915
|
const trimmed = line.trim();
|
|
@@ -2740,7 +2918,11 @@ function createClaudeSessionStore(store) {
|
|
|
2740
2918
|
}
|
|
2741
2919
|
try {
|
|
2742
2920
|
entries.push(JSON.parse(trimmed));
|
|
2743
|
-
} catch {
|
|
2921
|
+
} catch (error) {
|
|
2922
|
+
throw new MemoryCorruptError(
|
|
2923
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
2924
|
+
error
|
|
2925
|
+
);
|
|
2744
2926
|
}
|
|
2745
2927
|
}
|
|
2746
2928
|
}
|
|
@@ -2866,8 +3048,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
2866
3048
|
});
|
|
2867
3049
|
}
|
|
2868
3050
|
async function listConversationsFromIndex(store, options) {
|
|
3051
|
+
if (!options.before) {
|
|
3052
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
3053
|
+
if (fast)
|
|
3054
|
+
return fast;
|
|
3055
|
+
}
|
|
2869
3056
|
return listConversationsFromIndexFull(store, options);
|
|
2870
3057
|
}
|
|
3058
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
3059
|
+
var _a, _b;
|
|
3060
|
+
let listCursor = cursorListCursor(options.after);
|
|
3061
|
+
if (options.after && !listCursor) {
|
|
3062
|
+
return null;
|
|
3063
|
+
}
|
|
3064
|
+
const pageItems = [];
|
|
3065
|
+
const seen = /* @__PURE__ */ new Set();
|
|
3066
|
+
let lastCursor;
|
|
3067
|
+
while (pageItems.length < options.limit) {
|
|
3068
|
+
const listed = await store.list({
|
|
3069
|
+
prefix: options.prefix,
|
|
3070
|
+
cursor: listCursor,
|
|
3071
|
+
limit: options.limit - pageItems.length,
|
|
3072
|
+
paginate: false,
|
|
3073
|
+
consistency: "strong"
|
|
3074
|
+
});
|
|
3075
|
+
lastCursor = listed.cursor;
|
|
3076
|
+
if (!listed.keys.length) {
|
|
3077
|
+
break;
|
|
3078
|
+
}
|
|
3079
|
+
const indexItems = [...listed.keys].sort(
|
|
3080
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
3081
|
+
).map((key) => {
|
|
3082
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
3083
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
3084
|
+
return null;
|
|
3085
|
+
}
|
|
3086
|
+
seen.add(conversationId);
|
|
3087
|
+
return {
|
|
3088
|
+
key,
|
|
3089
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
3090
|
+
conversationId
|
|
3091
|
+
};
|
|
3092
|
+
}).filter((item) => item !== null);
|
|
3093
|
+
const metas = await Promise.all(
|
|
3094
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
3095
|
+
);
|
|
3096
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
3097
|
+
const meta = metas[i];
|
|
3098
|
+
if (meta) {
|
|
3099
|
+
pageItems.push({ indexItem: indexItems[i], meta });
|
|
3100
|
+
}
|
|
3101
|
+
}
|
|
3102
|
+
if (!listed.cursor) {
|
|
3103
|
+
break;
|
|
3104
|
+
}
|
|
3105
|
+
listCursor = listed.cursor;
|
|
3106
|
+
}
|
|
3107
|
+
const firstItem = (_a = pageItems[0]) == null ? void 0 : _a.indexItem;
|
|
3108
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
3109
|
+
return {
|
|
3110
|
+
items: pageItems.map((item) => item.meta),
|
|
3111
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
3112
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
3113
|
+
};
|
|
3114
|
+
}
|
|
2871
3115
|
async function listConversationsFromIndexFull(store, options) {
|
|
2872
3116
|
var _a, _b;
|
|
2873
3117
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -3304,6 +3548,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
3304
3548
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
3305
3549
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
3306
3550
|
const langgraphStore = createLangGraphStore(store);
|
|
3551
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
3307
3552
|
let claudeStoreCache = null;
|
|
3308
3553
|
let lastMessageCreatedAt = 0;
|
|
3309
3554
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -3589,8 +3834,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
3589
3834
|
listMessageKeys(store, input.conversationId)
|
|
3590
3835
|
]);
|
|
3591
3836
|
if (!meta) {
|
|
3837
|
+
if (options.conversationId === input.conversationId) {
|
|
3838
|
+
await deleteAgentState(store, input.conversationId);
|
|
3839
|
+
}
|
|
3840
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
3841
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
3592
3842
|
throw new MemoryNotFoundError(
|
|
3593
|
-
"Conversation not found by
|
|
3843
|
+
"Conversation not found by deleteConversation."
|
|
3594
3844
|
);
|
|
3595
3845
|
}
|
|
3596
3846
|
const deleteOps = [];
|
|
@@ -3607,6 +3857,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
3607
3857
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
3608
3858
|
deleteOps.push(store.delete(conversationIndexKey(meta)));
|
|
3609
3859
|
await Promise.all(deleteOps);
|
|
3860
|
+
if (options.conversationId === input.conversationId) {
|
|
3861
|
+
await deleteAgentState(store, input.conversationId);
|
|
3862
|
+
}
|
|
3863
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
3864
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
3610
3865
|
});
|
|
3611
3866
|
},
|
|
3612
3867
|
async updateConversation(input) {
|
|
@@ -3642,14 +3897,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
3642
3897
|
}));
|
|
3643
3898
|
},
|
|
3644
3899
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
3900
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
3901
|
+
if (!boundSessionId) {
|
|
3902
|
+
throw new MemoryValidationError(
|
|
3903
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
3904
|
+
);
|
|
3905
|
+
}
|
|
3645
3906
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
3646
3907
|
return createOpenAISession(
|
|
3647
3908
|
memory,
|
|
3648
|
-
|
|
3909
|
+
boundSessionId,
|
|
3649
3910
|
maxItems,
|
|
3650
3911
|
appendMessagesInternal
|
|
3651
3912
|
);
|
|
3652
3913
|
},
|
|
3914
|
+
async claudeSessionBinding(conversationId) {
|
|
3915
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
3916
|
+
if (!resolvedConversationId) {
|
|
3917
|
+
throw new MemoryValidationError(
|
|
3918
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
3919
|
+
);
|
|
3920
|
+
}
|
|
3921
|
+
validateConversationId(resolvedConversationId);
|
|
3922
|
+
return wrapStorage(async () => {
|
|
3923
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
3924
|
+
const existing = await store.get(
|
|
3925
|
+
mappingKey,
|
|
3926
|
+
{ consistency: "strong" }
|
|
3927
|
+
);
|
|
3928
|
+
if (typeof existing === "string" && existing) {
|
|
3929
|
+
return existing;
|
|
3930
|
+
}
|
|
3931
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
3932
|
+
return String(existing.sessionId || existing.session_id);
|
|
3933
|
+
}
|
|
3934
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
3935
|
+
const binding = {
|
|
3936
|
+
conversationId: resolvedConversationId,
|
|
3937
|
+
sessionId
|
|
3938
|
+
};
|
|
3939
|
+
await store.set(mappingKey, binding);
|
|
3940
|
+
return sessionId;
|
|
3941
|
+
});
|
|
3942
|
+
},
|
|
3653
3943
|
claudeSessionStore() {
|
|
3654
3944
|
if (!claudeStoreCache) {
|
|
3655
3945
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -3657,7 +3947,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
3657
3947
|
return claudeStoreCache;
|
|
3658
3948
|
},
|
|
3659
3949
|
langgraphCheckpointer,
|
|
3660
|
-
langgraphStore
|
|
3950
|
+
langgraphStore,
|
|
3951
|
+
state
|
|
3661
3952
|
};
|
|
3662
3953
|
return memory;
|
|
3663
3954
|
}
|
|
@@ -4560,6 +4851,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
4560
4851
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
4561
4852
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
4562
4853
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
4854
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
4855
|
+
var STATE_PREFIX = "state";
|
|
4856
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
4563
4857
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
4564
4858
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
4565
4859
|
"user",
|
|
@@ -4606,6 +4900,15 @@ var MemoryStorageError = class extends Error {
|
|
|
4606
4900
|
this.cause = cause;
|
|
4607
4901
|
}
|
|
4608
4902
|
};
|
|
4903
|
+
var MemoryCorruptError = class extends Error {
|
|
4904
|
+
code = "MemoryCorruptError";
|
|
4905
|
+
cause;
|
|
4906
|
+
constructor(message, cause) {
|
|
4907
|
+
super(message);
|
|
4908
|
+
this.name = "MemoryCorruptError";
|
|
4909
|
+
this.cause = cause;
|
|
4910
|
+
}
|
|
4911
|
+
};
|
|
4609
4912
|
var dynamicImport = new Function(
|
|
4610
4913
|
"specifier",
|
|
4611
4914
|
"return import(specifier);"
|
|
@@ -4613,7 +4916,7 @@ var dynamicImport = new Function(
|
|
|
4613
4916
|
var langchainLoadPromise;
|
|
4614
4917
|
var langchainMessagesPromise;
|
|
4615
4918
|
function isMemoryError(error) {
|
|
4616
|
-
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError;
|
|
4919
|
+
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError || error instanceof MemoryCorruptError;
|
|
4617
4920
|
}
|
|
4618
4921
|
async function wrapStorage(operation) {
|
|
4619
4922
|
try {
|
|
@@ -4781,10 +5084,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
4781
5084
|
return revived;
|
|
4782
5085
|
}
|
|
4783
5086
|
async function deserializeLangGraphJson(value) {
|
|
4784
|
-
|
|
4785
|
-
|
|
5087
|
+
try {
|
|
5088
|
+
if (isLangGraphSerializedJson(value)) {
|
|
5089
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
5090
|
+
}
|
|
5091
|
+
return reviveLangGraphJsonValue(value);
|
|
5092
|
+
} catch (error) {
|
|
5093
|
+
throw new MemoryCorruptError(
|
|
5094
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
5095
|
+
error
|
|
5096
|
+
);
|
|
4786
5097
|
}
|
|
4787
|
-
return reviveLangGraphJsonValue(value);
|
|
4788
5098
|
}
|
|
4789
5099
|
function normalizeStoreLimit(value, fallback) {
|
|
4790
5100
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -4896,6 +5206,115 @@ function validateMessageId(messageId) {
|
|
|
4896
5206
|
throw new MemoryValidationError("messageId is required.");
|
|
4897
5207
|
}
|
|
4898
5208
|
}
|
|
5209
|
+
function validateStateKey(key) {
|
|
5210
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
5211
|
+
throw new MemoryValidationError("state key is required.");
|
|
5212
|
+
}
|
|
5213
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
5214
|
+
throw new MemoryValidationError(
|
|
5215
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
5216
|
+
);
|
|
5217
|
+
}
|
|
5218
|
+
}
|
|
5219
|
+
function assertStateSerializable(value, path = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
5220
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
5221
|
+
return;
|
|
5222
|
+
}
|
|
5223
|
+
if (typeof value === "number") {
|
|
5224
|
+
if (Number.isFinite(value))
|
|
5225
|
+
return;
|
|
5226
|
+
throw new MemoryValidationError(\`\${path} must contain only JSON values.\`);
|
|
5227
|
+
}
|
|
5228
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
5229
|
+
throw new MemoryValidationError(\`\${path} must be JSON serializable.\`);
|
|
5230
|
+
}
|
|
5231
|
+
if (typeof value !== "object") {
|
|
5232
|
+
throw new MemoryValidationError(\`\${path} must be JSON serializable.\`);
|
|
5233
|
+
}
|
|
5234
|
+
if (seen.has(value)) {
|
|
5235
|
+
throw new MemoryValidationError(\`\${path} must not contain circular references.\`);
|
|
5236
|
+
}
|
|
5237
|
+
seen.add(value);
|
|
5238
|
+
if (Array.isArray(value)) {
|
|
5239
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path}[\${index}]\`, seen));
|
|
5240
|
+
} else if (isPlainObject(value)) {
|
|
5241
|
+
for (const [key, item] of Object.entries(value)) {
|
|
5242
|
+
assertStateSerializable(item, \`\${path}.\${key}\`, seen);
|
|
5243
|
+
}
|
|
5244
|
+
} else {
|
|
5245
|
+
throw new MemoryValidationError(\`\${path} must contain only JSON values.\`);
|
|
5246
|
+
}
|
|
5247
|
+
seen.delete(value);
|
|
5248
|
+
}
|
|
5249
|
+
function stateConversationPrefix(conversationId) {
|
|
5250
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
5251
|
+
}
|
|
5252
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
5253
|
+
const requireConversation = () => {
|
|
5254
|
+
if (!boundConversationId) {
|
|
5255
|
+
throw new MemoryValidationError(
|
|
5256
|
+
"State operations require a bound conversationId."
|
|
5257
|
+
);
|
|
5258
|
+
}
|
|
5259
|
+
validateConversationId(boundConversationId);
|
|
5260
|
+
return boundConversationId;
|
|
5261
|
+
};
|
|
5262
|
+
return {
|
|
5263
|
+
async get(key) {
|
|
5264
|
+
validateStateKey(key);
|
|
5265
|
+
const conversationId = requireConversation();
|
|
5266
|
+
return wrapStorage(async () => {
|
|
5267
|
+
const raw = await store.get(
|
|
5268
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
5269
|
+
{ consistency: "strong" }
|
|
5270
|
+
);
|
|
5271
|
+
if (raw === null)
|
|
5272
|
+
return null;
|
|
5273
|
+
if (typeof raw !== "string") {
|
|
5274
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
5275
|
+
}
|
|
5276
|
+
try {
|
|
5277
|
+
return JSON.parse(raw);
|
|
5278
|
+
} catch (error) {
|
|
5279
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error);
|
|
5280
|
+
}
|
|
5281
|
+
});
|
|
5282
|
+
},
|
|
5283
|
+
async set(key, value) {
|
|
5284
|
+
validateStateKey(key);
|
|
5285
|
+
const conversationId = requireConversation();
|
|
5286
|
+
assertStateSerializable(value);
|
|
5287
|
+
let serialized;
|
|
5288
|
+
try {
|
|
5289
|
+
serialized = JSON.stringify(value);
|
|
5290
|
+
} catch (error) {
|
|
5291
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error)}\`);
|
|
5292
|
+
}
|
|
5293
|
+
await wrapStorage(
|
|
5294
|
+
() => store.set(
|
|
5295
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
5296
|
+
serialized
|
|
5297
|
+
)
|
|
5298
|
+
);
|
|
5299
|
+
},
|
|
5300
|
+
async delete(key) {
|
|
5301
|
+
validateStateKey(key);
|
|
5302
|
+
const conversationId = requireConversation();
|
|
5303
|
+
await wrapStorage(
|
|
5304
|
+
() => store.delete(
|
|
5305
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
5306
|
+
)
|
|
5307
|
+
);
|
|
5308
|
+
}
|
|
5309
|
+
};
|
|
5310
|
+
}
|
|
5311
|
+
async function deleteAgentState(store, conversationId) {
|
|
5312
|
+
const listed = await store.list({
|
|
5313
|
+
prefix: stateConversationPrefix(conversationId),
|
|
5314
|
+
consistency: "strong"
|
|
5315
|
+
});
|
|
5316
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
5317
|
+
}
|
|
4899
5318
|
function validateUserId(userId) {
|
|
4900
5319
|
if (userId === void 0) {
|
|
4901
5320
|
return;
|
|
@@ -5028,6 +5447,9 @@ function cursorSortKey(cursor) {
|
|
|
5028
5447
|
const payload = decodeConversationCursor(cursor);
|
|
5029
5448
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
5030
5449
|
}
|
|
5450
|
+
function cursorListCursor(cursor) {
|
|
5451
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
5452
|
+
}
|
|
5031
5453
|
function indexSortKey(key, prefix) {
|
|
5032
5454
|
return key.slice(prefix.length);
|
|
5033
5455
|
}
|
|
@@ -5195,6 +5617,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
5195
5617
|
function claudeProjectPrefix(projectKey) {
|
|
5196
5618
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
5197
5619
|
}
|
|
5620
|
+
function claudeSessionMappingKey(conversationId) {
|
|
5621
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
5622
|
+
}
|
|
5623
|
+
function normalizeClaudeUuid(value) {
|
|
5624
|
+
const trimmed = value.trim().toLowerCase();
|
|
5625
|
+
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;
|
|
5626
|
+
}
|
|
5627
|
+
function claudeSessionIdFromKey(key) {
|
|
5628
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
5629
|
+
if (!key.startsWith(prefix)) {
|
|
5630
|
+
return null;
|
|
5631
|
+
}
|
|
5632
|
+
const segments = key.slice(prefix.length).split("/");
|
|
5633
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
5634
|
+
}
|
|
5635
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
5636
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
5637
|
+
const mapping = await store.get(mappingKey, {
|
|
5638
|
+
consistency: "strong"
|
|
5639
|
+
});
|
|
5640
|
+
let sessionId = null;
|
|
5641
|
+
if (typeof mapping === "string") {
|
|
5642
|
+
sessionId = mapping;
|
|
5643
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
5644
|
+
sessionId = mapping.sessionId;
|
|
5645
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
5646
|
+
sessionId = mapping.session_id;
|
|
5647
|
+
}
|
|
5648
|
+
if (!sessionId) {
|
|
5649
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
5650
|
+
}
|
|
5651
|
+
await store.delete(mappingKey);
|
|
5652
|
+
if (!sessionId) {
|
|
5653
|
+
return;
|
|
5654
|
+
}
|
|
5655
|
+
const listed = await store.list({
|
|
5656
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
5657
|
+
consistency: "strong"
|
|
5658
|
+
});
|
|
5659
|
+
for (const key of listed.keys) {
|
|
5660
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
5661
|
+
await store.delete(key);
|
|
5662
|
+
}
|
|
5663
|
+
}
|
|
5664
|
+
}
|
|
5198
5665
|
function claudePartsPrefix(key) {
|
|
5199
5666
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
5200
5667
|
if (key.subpath) {
|
|
@@ -5232,7 +5699,9 @@ function createClaudeSessionStore(store) {
|
|
|
5232
5699
|
consistency: "strong"
|
|
5233
5700
|
});
|
|
5234
5701
|
if (typeof raw !== "string") {
|
|
5235
|
-
|
|
5702
|
+
throw new MemoryCorruptError(
|
|
5703
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
5704
|
+
);
|
|
5236
5705
|
}
|
|
5237
5706
|
for (const line of raw.split("\\n")) {
|
|
5238
5707
|
const trimmed = line.trim();
|
|
@@ -5241,7 +5710,11 @@ function createClaudeSessionStore(store) {
|
|
|
5241
5710
|
}
|
|
5242
5711
|
try {
|
|
5243
5712
|
entries.push(JSON.parse(trimmed));
|
|
5244
|
-
} catch {
|
|
5713
|
+
} catch (error) {
|
|
5714
|
+
throw new MemoryCorruptError(
|
|
5715
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
5716
|
+
error
|
|
5717
|
+
);
|
|
5245
5718
|
}
|
|
5246
5719
|
}
|
|
5247
5720
|
}
|
|
@@ -5367,8 +5840,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
5367
5840
|
});
|
|
5368
5841
|
}
|
|
5369
5842
|
async function listConversationsFromIndex(store, options) {
|
|
5843
|
+
if (!options.before) {
|
|
5844
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
5845
|
+
if (fast)
|
|
5846
|
+
return fast;
|
|
5847
|
+
}
|
|
5370
5848
|
return listConversationsFromIndexFull(store, options);
|
|
5371
5849
|
}
|
|
5850
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
5851
|
+
var _a, _b;
|
|
5852
|
+
let listCursor = cursorListCursor(options.after);
|
|
5853
|
+
if (options.after && !listCursor) {
|
|
5854
|
+
return null;
|
|
5855
|
+
}
|
|
5856
|
+
const pageItems = [];
|
|
5857
|
+
const seen = /* @__PURE__ */ new Set();
|
|
5858
|
+
let lastCursor;
|
|
5859
|
+
while (pageItems.length < options.limit) {
|
|
5860
|
+
const listed = await store.list({
|
|
5861
|
+
prefix: options.prefix,
|
|
5862
|
+
cursor: listCursor,
|
|
5863
|
+
limit: options.limit - pageItems.length,
|
|
5864
|
+
paginate: false,
|
|
5865
|
+
consistency: "strong"
|
|
5866
|
+
});
|
|
5867
|
+
lastCursor = listed.cursor;
|
|
5868
|
+
if (!listed.keys.length) {
|
|
5869
|
+
break;
|
|
5870
|
+
}
|
|
5871
|
+
const indexItems = [...listed.keys].sort(
|
|
5872
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
5873
|
+
).map((key) => {
|
|
5874
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
5875
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
5876
|
+
return null;
|
|
5877
|
+
}
|
|
5878
|
+
seen.add(conversationId);
|
|
5879
|
+
return {
|
|
5880
|
+
key,
|
|
5881
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
5882
|
+
conversationId
|
|
5883
|
+
};
|
|
5884
|
+
}).filter((item) => item !== null);
|
|
5885
|
+
const metas = await Promise.all(
|
|
5886
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
5887
|
+
);
|
|
5888
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
5889
|
+
const meta = metas[i];
|
|
5890
|
+
if (meta) {
|
|
5891
|
+
pageItems.push({ indexItem: indexItems[i], meta });
|
|
5892
|
+
}
|
|
5893
|
+
}
|
|
5894
|
+
if (!listed.cursor) {
|
|
5895
|
+
break;
|
|
5896
|
+
}
|
|
5897
|
+
listCursor = listed.cursor;
|
|
5898
|
+
}
|
|
5899
|
+
const firstItem = (_a = pageItems[0]) == null ? void 0 : _a.indexItem;
|
|
5900
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
5901
|
+
return {
|
|
5902
|
+
items: pageItems.map((item) => item.meta),
|
|
5903
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
5904
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
5905
|
+
};
|
|
5906
|
+
}
|
|
5372
5907
|
async function listConversationsFromIndexFull(store, options) {
|
|
5373
5908
|
var _a, _b;
|
|
5374
5909
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -5805,6 +6340,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
5805
6340
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
5806
6341
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
5807
6342
|
const langgraphStore = createLangGraphStore(store);
|
|
6343
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
5808
6344
|
let claudeStoreCache = null;
|
|
5809
6345
|
let lastMessageCreatedAt = 0;
|
|
5810
6346
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -6090,8 +6626,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
6090
6626
|
listMessageKeys(store, input.conversationId)
|
|
6091
6627
|
]);
|
|
6092
6628
|
if (!meta) {
|
|
6629
|
+
if (options.conversationId === input.conversationId) {
|
|
6630
|
+
await deleteAgentState(store, input.conversationId);
|
|
6631
|
+
}
|
|
6632
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
6633
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
6093
6634
|
throw new MemoryNotFoundError(
|
|
6094
|
-
"Conversation not found by
|
|
6635
|
+
"Conversation not found by deleteConversation."
|
|
6095
6636
|
);
|
|
6096
6637
|
}
|
|
6097
6638
|
const deleteOps = [];
|
|
@@ -6108,6 +6649,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
6108
6649
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
6109
6650
|
deleteOps.push(store.delete(conversationIndexKey(meta)));
|
|
6110
6651
|
await Promise.all(deleteOps);
|
|
6652
|
+
if (options.conversationId === input.conversationId) {
|
|
6653
|
+
await deleteAgentState(store, input.conversationId);
|
|
6654
|
+
}
|
|
6655
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
6656
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
6111
6657
|
});
|
|
6112
6658
|
},
|
|
6113
6659
|
async updateConversation(input) {
|
|
@@ -6143,14 +6689,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
6143
6689
|
}));
|
|
6144
6690
|
},
|
|
6145
6691
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
6692
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
6693
|
+
if (!boundSessionId) {
|
|
6694
|
+
throw new MemoryValidationError(
|
|
6695
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
6696
|
+
);
|
|
6697
|
+
}
|
|
6146
6698
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
6147
6699
|
return createOpenAISession(
|
|
6148
6700
|
memory,
|
|
6149
|
-
|
|
6701
|
+
boundSessionId,
|
|
6150
6702
|
maxItems,
|
|
6151
6703
|
appendMessagesInternal
|
|
6152
6704
|
);
|
|
6153
6705
|
},
|
|
6706
|
+
async claudeSessionBinding(conversationId) {
|
|
6707
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
6708
|
+
if (!resolvedConversationId) {
|
|
6709
|
+
throw new MemoryValidationError(
|
|
6710
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
6711
|
+
);
|
|
6712
|
+
}
|
|
6713
|
+
validateConversationId(resolvedConversationId);
|
|
6714
|
+
return wrapStorage(async () => {
|
|
6715
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
6716
|
+
const existing = await store.get(
|
|
6717
|
+
mappingKey,
|
|
6718
|
+
{ consistency: "strong" }
|
|
6719
|
+
);
|
|
6720
|
+
if (typeof existing === "string" && existing) {
|
|
6721
|
+
return existing;
|
|
6722
|
+
}
|
|
6723
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
6724
|
+
return String(existing.sessionId || existing.session_id);
|
|
6725
|
+
}
|
|
6726
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
6727
|
+
const binding = {
|
|
6728
|
+
conversationId: resolvedConversationId,
|
|
6729
|
+
sessionId
|
|
6730
|
+
};
|
|
6731
|
+
await store.set(mappingKey, binding);
|
|
6732
|
+
return sessionId;
|
|
6733
|
+
});
|
|
6734
|
+
},
|
|
6154
6735
|
claudeSessionStore() {
|
|
6155
6736
|
if (!claudeStoreCache) {
|
|
6156
6737
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -6158,7 +6739,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
6158
6739
|
return claudeStoreCache;
|
|
6159
6740
|
},
|
|
6160
6741
|
langgraphCheckpointer,
|
|
6161
|
-
langgraphStore
|
|
6742
|
+
langgraphStore,
|
|
6743
|
+
state
|
|
6162
6744
|
};
|
|
6163
6745
|
return memory;
|
|
6164
6746
|
}
|
|
@@ -8967,6 +9549,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
8967
9549
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
8968
9550
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
8969
9551
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
9552
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
9553
|
+
var STATE_PREFIX = "state";
|
|
9554
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
8970
9555
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
8971
9556
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
8972
9557
|
"user",
|
|
@@ -9013,6 +9598,15 @@ var MemoryStorageError = class extends Error {
|
|
|
9013
9598
|
this.cause = cause;
|
|
9014
9599
|
}
|
|
9015
9600
|
};
|
|
9601
|
+
var MemoryCorruptError = class extends Error {
|
|
9602
|
+
code = "MemoryCorruptError";
|
|
9603
|
+
cause;
|
|
9604
|
+
constructor(message, cause) {
|
|
9605
|
+
super(message);
|
|
9606
|
+
this.name = "MemoryCorruptError";
|
|
9607
|
+
this.cause = cause;
|
|
9608
|
+
}
|
|
9609
|
+
};
|
|
9016
9610
|
var dynamicImport = new Function(
|
|
9017
9611
|
"specifier",
|
|
9018
9612
|
"return import(specifier);"
|
|
@@ -9020,7 +9614,7 @@ var dynamicImport = new Function(
|
|
|
9020
9614
|
var langchainLoadPromise;
|
|
9021
9615
|
var langchainMessagesPromise;
|
|
9022
9616
|
function isMemoryError(error) {
|
|
9023
|
-
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError;
|
|
9617
|
+
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError || error instanceof MemoryCorruptError;
|
|
9024
9618
|
}
|
|
9025
9619
|
async function wrapStorage(operation) {
|
|
9026
9620
|
try {
|
|
@@ -9188,10 +9782,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
9188
9782
|
return revived;
|
|
9189
9783
|
}
|
|
9190
9784
|
async function deserializeLangGraphJson(value) {
|
|
9191
|
-
|
|
9192
|
-
|
|
9785
|
+
try {
|
|
9786
|
+
if (isLangGraphSerializedJson(value)) {
|
|
9787
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
9788
|
+
}
|
|
9789
|
+
return reviveLangGraphJsonValue(value);
|
|
9790
|
+
} catch (error) {
|
|
9791
|
+
throw new MemoryCorruptError(
|
|
9792
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
9793
|
+
error
|
|
9794
|
+
);
|
|
9193
9795
|
}
|
|
9194
|
-
return reviveLangGraphJsonValue(value);
|
|
9195
9796
|
}
|
|
9196
9797
|
function normalizeStoreLimit(value, fallback) {
|
|
9197
9798
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -9303,6 +9904,115 @@ function validateMessageId(messageId) {
|
|
|
9303
9904
|
throw new MemoryValidationError("messageId is required.");
|
|
9304
9905
|
}
|
|
9305
9906
|
}
|
|
9907
|
+
function validateStateKey(key) {
|
|
9908
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
9909
|
+
throw new MemoryValidationError("state key is required.");
|
|
9910
|
+
}
|
|
9911
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
9912
|
+
throw new MemoryValidationError(
|
|
9913
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
9914
|
+
);
|
|
9915
|
+
}
|
|
9916
|
+
}
|
|
9917
|
+
function assertStateSerializable(value, path2 = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
9918
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
9919
|
+
return;
|
|
9920
|
+
}
|
|
9921
|
+
if (typeof value === "number") {
|
|
9922
|
+
if (Number.isFinite(value))
|
|
9923
|
+
return;
|
|
9924
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
9925
|
+
}
|
|
9926
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
9927
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
9928
|
+
}
|
|
9929
|
+
if (typeof value !== "object") {
|
|
9930
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
9931
|
+
}
|
|
9932
|
+
if (seen.has(value)) {
|
|
9933
|
+
throw new MemoryValidationError(\`\${path2} must not contain circular references.\`);
|
|
9934
|
+
}
|
|
9935
|
+
seen.add(value);
|
|
9936
|
+
if (Array.isArray(value)) {
|
|
9937
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path2}[\${index}]\`, seen));
|
|
9938
|
+
} else if (isPlainObject(value)) {
|
|
9939
|
+
for (const [key, item] of Object.entries(value)) {
|
|
9940
|
+
assertStateSerializable(item, \`\${path2}.\${key}\`, seen);
|
|
9941
|
+
}
|
|
9942
|
+
} else {
|
|
9943
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
9944
|
+
}
|
|
9945
|
+
seen.delete(value);
|
|
9946
|
+
}
|
|
9947
|
+
function stateConversationPrefix(conversationId) {
|
|
9948
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
9949
|
+
}
|
|
9950
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
9951
|
+
const requireConversation = () => {
|
|
9952
|
+
if (!boundConversationId) {
|
|
9953
|
+
throw new MemoryValidationError(
|
|
9954
|
+
"State operations require a bound conversationId."
|
|
9955
|
+
);
|
|
9956
|
+
}
|
|
9957
|
+
validateConversationId(boundConversationId);
|
|
9958
|
+
return boundConversationId;
|
|
9959
|
+
};
|
|
9960
|
+
return {
|
|
9961
|
+
async get(key) {
|
|
9962
|
+
validateStateKey(key);
|
|
9963
|
+
const conversationId = requireConversation();
|
|
9964
|
+
return wrapStorage(async () => {
|
|
9965
|
+
const raw = await store.get(
|
|
9966
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
9967
|
+
{ consistency: "strong" }
|
|
9968
|
+
);
|
|
9969
|
+
if (raw === null)
|
|
9970
|
+
return null;
|
|
9971
|
+
if (typeof raw !== "string") {
|
|
9972
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
9973
|
+
}
|
|
9974
|
+
try {
|
|
9975
|
+
return JSON.parse(raw);
|
|
9976
|
+
} catch (error) {
|
|
9977
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error);
|
|
9978
|
+
}
|
|
9979
|
+
});
|
|
9980
|
+
},
|
|
9981
|
+
async set(key, value) {
|
|
9982
|
+
validateStateKey(key);
|
|
9983
|
+
const conversationId = requireConversation();
|
|
9984
|
+
assertStateSerializable(value);
|
|
9985
|
+
let serialized;
|
|
9986
|
+
try {
|
|
9987
|
+
serialized = JSON.stringify(value);
|
|
9988
|
+
} catch (error) {
|
|
9989
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error)}\`);
|
|
9990
|
+
}
|
|
9991
|
+
await wrapStorage(
|
|
9992
|
+
() => store.set(
|
|
9993
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
9994
|
+
serialized
|
|
9995
|
+
)
|
|
9996
|
+
);
|
|
9997
|
+
},
|
|
9998
|
+
async delete(key) {
|
|
9999
|
+
validateStateKey(key);
|
|
10000
|
+
const conversationId = requireConversation();
|
|
10001
|
+
await wrapStorage(
|
|
10002
|
+
() => store.delete(
|
|
10003
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
10004
|
+
)
|
|
10005
|
+
);
|
|
10006
|
+
}
|
|
10007
|
+
};
|
|
10008
|
+
}
|
|
10009
|
+
async function deleteAgentState(store, conversationId) {
|
|
10010
|
+
const listed = await store.list({
|
|
10011
|
+
prefix: stateConversationPrefix(conversationId),
|
|
10012
|
+
consistency: "strong"
|
|
10013
|
+
});
|
|
10014
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
10015
|
+
}
|
|
9306
10016
|
function validateUserId(userId) {
|
|
9307
10017
|
if (userId === void 0) {
|
|
9308
10018
|
return;
|
|
@@ -9435,6 +10145,9 @@ function cursorSortKey(cursor) {
|
|
|
9435
10145
|
const payload = decodeConversationCursor(cursor);
|
|
9436
10146
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
9437
10147
|
}
|
|
10148
|
+
function cursorListCursor(cursor) {
|
|
10149
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
10150
|
+
}
|
|
9438
10151
|
function indexSortKey(key, prefix) {
|
|
9439
10152
|
return key.slice(prefix.length);
|
|
9440
10153
|
}
|
|
@@ -9602,6 +10315,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
9602
10315
|
function claudeProjectPrefix(projectKey) {
|
|
9603
10316
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
9604
10317
|
}
|
|
10318
|
+
function claudeSessionMappingKey(conversationId) {
|
|
10319
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
10320
|
+
}
|
|
10321
|
+
function normalizeClaudeUuid(value) {
|
|
10322
|
+
const trimmed = value.trim().toLowerCase();
|
|
10323
|
+
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;
|
|
10324
|
+
}
|
|
10325
|
+
function claudeSessionIdFromKey(key) {
|
|
10326
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
10327
|
+
if (!key.startsWith(prefix)) {
|
|
10328
|
+
return null;
|
|
10329
|
+
}
|
|
10330
|
+
const segments = key.slice(prefix.length).split("/");
|
|
10331
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
10332
|
+
}
|
|
10333
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
10334
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
10335
|
+
const mapping = await store.get(mappingKey, {
|
|
10336
|
+
consistency: "strong"
|
|
10337
|
+
});
|
|
10338
|
+
let sessionId = null;
|
|
10339
|
+
if (typeof mapping === "string") {
|
|
10340
|
+
sessionId = mapping;
|
|
10341
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
10342
|
+
sessionId = mapping.sessionId;
|
|
10343
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
10344
|
+
sessionId = mapping.session_id;
|
|
10345
|
+
}
|
|
10346
|
+
if (!sessionId) {
|
|
10347
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
10348
|
+
}
|
|
10349
|
+
await store.delete(mappingKey);
|
|
10350
|
+
if (!sessionId) {
|
|
10351
|
+
return;
|
|
10352
|
+
}
|
|
10353
|
+
const listed = await store.list({
|
|
10354
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
10355
|
+
consistency: "strong"
|
|
10356
|
+
});
|
|
10357
|
+
for (const key of listed.keys) {
|
|
10358
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
10359
|
+
await store.delete(key);
|
|
10360
|
+
}
|
|
10361
|
+
}
|
|
10362
|
+
}
|
|
9605
10363
|
function claudePartsPrefix(key) {
|
|
9606
10364
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
9607
10365
|
if (key.subpath) {
|
|
@@ -9639,7 +10397,9 @@ function createClaudeSessionStore(store) {
|
|
|
9639
10397
|
consistency: "strong"
|
|
9640
10398
|
});
|
|
9641
10399
|
if (typeof raw !== "string") {
|
|
9642
|
-
|
|
10400
|
+
throw new MemoryCorruptError(
|
|
10401
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
10402
|
+
);
|
|
9643
10403
|
}
|
|
9644
10404
|
for (const line of raw.split("\\n")) {
|
|
9645
10405
|
const trimmed = line.trim();
|
|
@@ -9648,7 +10408,11 @@ function createClaudeSessionStore(store) {
|
|
|
9648
10408
|
}
|
|
9649
10409
|
try {
|
|
9650
10410
|
entries.push(JSON.parse(trimmed));
|
|
9651
|
-
} catch {
|
|
10411
|
+
} catch (error) {
|
|
10412
|
+
throw new MemoryCorruptError(
|
|
10413
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
10414
|
+
error
|
|
10415
|
+
);
|
|
9652
10416
|
}
|
|
9653
10417
|
}
|
|
9654
10418
|
}
|
|
@@ -9774,8 +10538,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
9774
10538
|
});
|
|
9775
10539
|
}
|
|
9776
10540
|
async function listConversationsFromIndex(store, options) {
|
|
10541
|
+
if (!options.before) {
|
|
10542
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
10543
|
+
if (fast)
|
|
10544
|
+
return fast;
|
|
10545
|
+
}
|
|
9777
10546
|
return listConversationsFromIndexFull(store, options);
|
|
9778
10547
|
}
|
|
10548
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
10549
|
+
var _a, _b;
|
|
10550
|
+
let listCursor = cursorListCursor(options.after);
|
|
10551
|
+
if (options.after && !listCursor) {
|
|
10552
|
+
return null;
|
|
10553
|
+
}
|
|
10554
|
+
const pageItems = [];
|
|
10555
|
+
const seen = /* @__PURE__ */ new Set();
|
|
10556
|
+
let lastCursor;
|
|
10557
|
+
while (pageItems.length < options.limit) {
|
|
10558
|
+
const listed = await store.list({
|
|
10559
|
+
prefix: options.prefix,
|
|
10560
|
+
cursor: listCursor,
|
|
10561
|
+
limit: options.limit - pageItems.length,
|
|
10562
|
+
paginate: false,
|
|
10563
|
+
consistency: "strong"
|
|
10564
|
+
});
|
|
10565
|
+
lastCursor = listed.cursor;
|
|
10566
|
+
if (!listed.keys.length) {
|
|
10567
|
+
break;
|
|
10568
|
+
}
|
|
10569
|
+
const indexItems = [...listed.keys].sort(
|
|
10570
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
10571
|
+
).map((key) => {
|
|
10572
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
10573
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
10574
|
+
return null;
|
|
10575
|
+
}
|
|
10576
|
+
seen.add(conversationId);
|
|
10577
|
+
return {
|
|
10578
|
+
key,
|
|
10579
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
10580
|
+
conversationId
|
|
10581
|
+
};
|
|
10582
|
+
}).filter((item) => item !== null);
|
|
10583
|
+
const metas = await Promise.all(
|
|
10584
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
10585
|
+
);
|
|
10586
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
10587
|
+
const meta = metas[i];
|
|
10588
|
+
if (meta) {
|
|
10589
|
+
pageItems.push({ indexItem: indexItems[i], meta });
|
|
10590
|
+
}
|
|
10591
|
+
}
|
|
10592
|
+
if (!listed.cursor) {
|
|
10593
|
+
break;
|
|
10594
|
+
}
|
|
10595
|
+
listCursor = listed.cursor;
|
|
10596
|
+
}
|
|
10597
|
+
const firstItem = (_a = pageItems[0]) == null ? void 0 : _a.indexItem;
|
|
10598
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
10599
|
+
return {
|
|
10600
|
+
items: pageItems.map((item) => item.meta),
|
|
10601
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
10602
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
10603
|
+
};
|
|
10604
|
+
}
|
|
9779
10605
|
async function listConversationsFromIndexFull(store, options) {
|
|
9780
10606
|
var _a, _b;
|
|
9781
10607
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -10212,6 +11038,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
10212
11038
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
10213
11039
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
10214
11040
|
const langgraphStore = createLangGraphStore(store);
|
|
11041
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
10215
11042
|
let claudeStoreCache = null;
|
|
10216
11043
|
let lastMessageCreatedAt = 0;
|
|
10217
11044
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -10497,8 +11324,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
10497
11324
|
listMessageKeys(store, input.conversationId)
|
|
10498
11325
|
]);
|
|
10499
11326
|
if (!meta) {
|
|
11327
|
+
if (options.conversationId === input.conversationId) {
|
|
11328
|
+
await deleteAgentState(store, input.conversationId);
|
|
11329
|
+
}
|
|
11330
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
11331
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
10500
11332
|
throw new MemoryNotFoundError(
|
|
10501
|
-
"Conversation not found by
|
|
11333
|
+
"Conversation not found by deleteConversation."
|
|
10502
11334
|
);
|
|
10503
11335
|
}
|
|
10504
11336
|
const deleteOps = [];
|
|
@@ -10515,6 +11347,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
10515
11347
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
10516
11348
|
deleteOps.push(store.delete(conversationIndexKey(meta)));
|
|
10517
11349
|
await Promise.all(deleteOps);
|
|
11350
|
+
if (options.conversationId === input.conversationId) {
|
|
11351
|
+
await deleteAgentState(store, input.conversationId);
|
|
11352
|
+
}
|
|
11353
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
11354
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
10518
11355
|
});
|
|
10519
11356
|
},
|
|
10520
11357
|
async updateConversation(input) {
|
|
@@ -10550,14 +11387,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
10550
11387
|
}));
|
|
10551
11388
|
},
|
|
10552
11389
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
11390
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
11391
|
+
if (!boundSessionId) {
|
|
11392
|
+
throw new MemoryValidationError(
|
|
11393
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
11394
|
+
);
|
|
11395
|
+
}
|
|
10553
11396
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
10554
11397
|
return createOpenAISession(
|
|
10555
11398
|
memory,
|
|
10556
|
-
|
|
11399
|
+
boundSessionId,
|
|
10557
11400
|
maxItems,
|
|
10558
11401
|
appendMessagesInternal
|
|
10559
11402
|
);
|
|
10560
11403
|
},
|
|
11404
|
+
async claudeSessionBinding(conversationId) {
|
|
11405
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
11406
|
+
if (!resolvedConversationId) {
|
|
11407
|
+
throw new MemoryValidationError(
|
|
11408
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
11409
|
+
);
|
|
11410
|
+
}
|
|
11411
|
+
validateConversationId(resolvedConversationId);
|
|
11412
|
+
return wrapStorage(async () => {
|
|
11413
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
11414
|
+
const existing = await store.get(
|
|
11415
|
+
mappingKey,
|
|
11416
|
+
{ consistency: "strong" }
|
|
11417
|
+
);
|
|
11418
|
+
if (typeof existing === "string" && existing) {
|
|
11419
|
+
return existing;
|
|
11420
|
+
}
|
|
11421
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
11422
|
+
return String(existing.sessionId || existing.session_id);
|
|
11423
|
+
}
|
|
11424
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
11425
|
+
const binding = {
|
|
11426
|
+
conversationId: resolvedConversationId,
|
|
11427
|
+
sessionId
|
|
11428
|
+
};
|
|
11429
|
+
await store.set(mappingKey, binding);
|
|
11430
|
+
return sessionId;
|
|
11431
|
+
});
|
|
11432
|
+
},
|
|
10561
11433
|
claudeSessionStore() {
|
|
10562
11434
|
if (!claudeStoreCache) {
|
|
10563
11435
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -10565,7 +11437,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
10565
11437
|
return claudeStoreCache;
|
|
10566
11438
|
},
|
|
10567
11439
|
langgraphCheckpointer,
|
|
10568
|
-
langgraphStore
|
|
11440
|
+
langgraphStore,
|
|
11441
|
+
state
|
|
10569
11442
|
};
|
|
10570
11443
|
return memory;
|
|
10571
11444
|
}
|
|
@@ -11246,6 +12119,7 @@ function createAgentRuntime(options) {
|
|
|
11246
12119
|
env,
|
|
11247
12120
|
store: createAgentMemory(createLazyStore(resolveMemoryStore), {
|
|
11248
12121
|
runId: run_id,
|
|
12122
|
+
conversationId: conversation_id,
|
|
11249
12123
|
maxMessagesPerConversation: (_a = defaults == null ? void 0 : defaults.memoryQuota) == null ? void 0 : _a.maxMessagesPerConversation
|
|
11250
12124
|
}),
|
|
11251
12125
|
agents: {
|
|
@@ -23780,6 +24654,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
23780
24654
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
23781
24655
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
23782
24656
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
24657
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
24658
|
+
var STATE_PREFIX = "state";
|
|
24659
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
23783
24660
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
23784
24661
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
23785
24662
|
"user",
|
|
@@ -23826,6 +24703,15 @@ var MemoryStorageError = class extends Error {
|
|
|
23826
24703
|
this.cause = cause;
|
|
23827
24704
|
}
|
|
23828
24705
|
};
|
|
24706
|
+
var MemoryCorruptError = class extends Error {
|
|
24707
|
+
code = "MemoryCorruptError";
|
|
24708
|
+
cause;
|
|
24709
|
+
constructor(message, cause) {
|
|
24710
|
+
super(message);
|
|
24711
|
+
this.name = "MemoryCorruptError";
|
|
24712
|
+
this.cause = cause;
|
|
24713
|
+
}
|
|
24714
|
+
};
|
|
23829
24715
|
var dynamicImport = new Function(
|
|
23830
24716
|
"specifier",
|
|
23831
24717
|
"return import(specifier);"
|
|
@@ -23833,7 +24719,7 @@ var dynamicImport = new Function(
|
|
|
23833
24719
|
var langchainLoadPromise;
|
|
23834
24720
|
var langchainMessagesPromise;
|
|
23835
24721
|
function isMemoryError(error51) {
|
|
23836
|
-
return error51 instanceof MemoryValidationError || error51 instanceof MemoryNotFoundError || error51 instanceof MemoryQuotaExceededError || error51 instanceof MemoryStorageError;
|
|
24722
|
+
return error51 instanceof MemoryValidationError || error51 instanceof MemoryNotFoundError || error51 instanceof MemoryQuotaExceededError || error51 instanceof MemoryStorageError || error51 instanceof MemoryCorruptError;
|
|
23837
24723
|
}
|
|
23838
24724
|
async function wrapStorage(operation) {
|
|
23839
24725
|
try {
|
|
@@ -24001,10 +24887,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
24001
24887
|
return revived;
|
|
24002
24888
|
}
|
|
24003
24889
|
async function deserializeLangGraphJson(value) {
|
|
24004
|
-
|
|
24005
|
-
|
|
24890
|
+
try {
|
|
24891
|
+
if (isLangGraphSerializedJson(value)) {
|
|
24892
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
24893
|
+
}
|
|
24894
|
+
return reviveLangGraphJsonValue(value);
|
|
24895
|
+
} catch (error51) {
|
|
24896
|
+
throw new MemoryCorruptError(
|
|
24897
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
24898
|
+
error51
|
|
24899
|
+
);
|
|
24006
24900
|
}
|
|
24007
|
-
return reviveLangGraphJsonValue(value);
|
|
24008
24901
|
}
|
|
24009
24902
|
function normalizeStoreLimit(value, fallback) {
|
|
24010
24903
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -24116,6 +25009,115 @@ function validateMessageId(messageId) {
|
|
|
24116
25009
|
throw new MemoryValidationError("messageId is required.");
|
|
24117
25010
|
}
|
|
24118
25011
|
}
|
|
25012
|
+
function validateStateKey(key) {
|
|
25013
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
25014
|
+
throw new MemoryValidationError("state key is required.");
|
|
25015
|
+
}
|
|
25016
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
25017
|
+
throw new MemoryValidationError(
|
|
25018
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
25019
|
+
);
|
|
25020
|
+
}
|
|
25021
|
+
}
|
|
25022
|
+
function assertStateSerializable(value, path2 = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
25023
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
25024
|
+
return;
|
|
25025
|
+
}
|
|
25026
|
+
if (typeof value === "number") {
|
|
25027
|
+
if (Number.isFinite(value))
|
|
25028
|
+
return;
|
|
25029
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
25030
|
+
}
|
|
25031
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
25032
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
25033
|
+
}
|
|
25034
|
+
if (typeof value !== "object") {
|
|
25035
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
25036
|
+
}
|
|
25037
|
+
if (seen.has(value)) {
|
|
25038
|
+
throw new MemoryValidationError(\`\${path2} must not contain circular references.\`);
|
|
25039
|
+
}
|
|
25040
|
+
seen.add(value);
|
|
25041
|
+
if (Array.isArray(value)) {
|
|
25042
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path2}[\${index}]\`, seen));
|
|
25043
|
+
} else if (isPlainObject(value)) {
|
|
25044
|
+
for (const [key, item] of Object.entries(value)) {
|
|
25045
|
+
assertStateSerializable(item, \`\${path2}.\${key}\`, seen);
|
|
25046
|
+
}
|
|
25047
|
+
} else {
|
|
25048
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
25049
|
+
}
|
|
25050
|
+
seen.delete(value);
|
|
25051
|
+
}
|
|
25052
|
+
function stateConversationPrefix(conversationId) {
|
|
25053
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
25054
|
+
}
|
|
25055
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
25056
|
+
const requireConversation = () => {
|
|
25057
|
+
if (!boundConversationId) {
|
|
25058
|
+
throw new MemoryValidationError(
|
|
25059
|
+
"State operations require a bound conversationId."
|
|
25060
|
+
);
|
|
25061
|
+
}
|
|
25062
|
+
validateConversationId(boundConversationId);
|
|
25063
|
+
return boundConversationId;
|
|
25064
|
+
};
|
|
25065
|
+
return {
|
|
25066
|
+
async get(key) {
|
|
25067
|
+
validateStateKey(key);
|
|
25068
|
+
const conversationId = requireConversation();
|
|
25069
|
+
return wrapStorage(async () => {
|
|
25070
|
+
const raw = await store.get(
|
|
25071
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
25072
|
+
{ consistency: "strong" }
|
|
25073
|
+
);
|
|
25074
|
+
if (raw === null)
|
|
25075
|
+
return null;
|
|
25076
|
+
if (typeof raw !== "string") {
|
|
25077
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
25078
|
+
}
|
|
25079
|
+
try {
|
|
25080
|
+
return JSON.parse(raw);
|
|
25081
|
+
} catch (error51) {
|
|
25082
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error51);
|
|
25083
|
+
}
|
|
25084
|
+
});
|
|
25085
|
+
},
|
|
25086
|
+
async set(key, value) {
|
|
25087
|
+
validateStateKey(key);
|
|
25088
|
+
const conversationId = requireConversation();
|
|
25089
|
+
assertStateSerializable(value);
|
|
25090
|
+
let serialized;
|
|
25091
|
+
try {
|
|
25092
|
+
serialized = JSON.stringify(value);
|
|
25093
|
+
} catch (error51) {
|
|
25094
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error51)}\`);
|
|
25095
|
+
}
|
|
25096
|
+
await wrapStorage(
|
|
25097
|
+
() => store.set(
|
|
25098
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
25099
|
+
serialized
|
|
25100
|
+
)
|
|
25101
|
+
);
|
|
25102
|
+
},
|
|
25103
|
+
async delete(key) {
|
|
25104
|
+
validateStateKey(key);
|
|
25105
|
+
const conversationId = requireConversation();
|
|
25106
|
+
await wrapStorage(
|
|
25107
|
+
() => store.delete(
|
|
25108
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
25109
|
+
)
|
|
25110
|
+
);
|
|
25111
|
+
}
|
|
25112
|
+
};
|
|
25113
|
+
}
|
|
25114
|
+
async function deleteAgentState(store, conversationId) {
|
|
25115
|
+
const listed = await store.list({
|
|
25116
|
+
prefix: stateConversationPrefix(conversationId),
|
|
25117
|
+
consistency: "strong"
|
|
25118
|
+
});
|
|
25119
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
25120
|
+
}
|
|
24119
25121
|
function validateUserId(userId) {
|
|
24120
25122
|
if (userId === void 0) {
|
|
24121
25123
|
return;
|
|
@@ -24248,6 +25250,9 @@ function cursorSortKey(cursor) {
|
|
|
24248
25250
|
const payload = decodeConversationCursor(cursor);
|
|
24249
25251
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
24250
25252
|
}
|
|
25253
|
+
function cursorListCursor(cursor) {
|
|
25254
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
25255
|
+
}
|
|
24251
25256
|
function indexSortKey(key, prefix) {
|
|
24252
25257
|
return key.slice(prefix.length);
|
|
24253
25258
|
}
|
|
@@ -24415,6 +25420,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
24415
25420
|
function claudeProjectPrefix(projectKey) {
|
|
24416
25421
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
24417
25422
|
}
|
|
25423
|
+
function claudeSessionMappingKey(conversationId) {
|
|
25424
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
25425
|
+
}
|
|
25426
|
+
function normalizeClaudeUuid(value) {
|
|
25427
|
+
const trimmed = value.trim().toLowerCase();
|
|
25428
|
+
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;
|
|
25429
|
+
}
|
|
25430
|
+
function claudeSessionIdFromKey(key) {
|
|
25431
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
25432
|
+
if (!key.startsWith(prefix)) {
|
|
25433
|
+
return null;
|
|
25434
|
+
}
|
|
25435
|
+
const segments = key.slice(prefix.length).split("/");
|
|
25436
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
25437
|
+
}
|
|
25438
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
25439
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
25440
|
+
const mapping = await store.get(mappingKey, {
|
|
25441
|
+
consistency: "strong"
|
|
25442
|
+
});
|
|
25443
|
+
let sessionId = null;
|
|
25444
|
+
if (typeof mapping === "string") {
|
|
25445
|
+
sessionId = mapping;
|
|
25446
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
25447
|
+
sessionId = mapping.sessionId;
|
|
25448
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
25449
|
+
sessionId = mapping.session_id;
|
|
25450
|
+
}
|
|
25451
|
+
if (!sessionId) {
|
|
25452
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
25453
|
+
}
|
|
25454
|
+
await store.delete(mappingKey);
|
|
25455
|
+
if (!sessionId) {
|
|
25456
|
+
return;
|
|
25457
|
+
}
|
|
25458
|
+
const listed = await store.list({
|
|
25459
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
25460
|
+
consistency: "strong"
|
|
25461
|
+
});
|
|
25462
|
+
for (const key of listed.keys) {
|
|
25463
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
25464
|
+
await store.delete(key);
|
|
25465
|
+
}
|
|
25466
|
+
}
|
|
25467
|
+
}
|
|
24418
25468
|
function claudePartsPrefix(key) {
|
|
24419
25469
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
24420
25470
|
if (key.subpath) {
|
|
@@ -24452,7 +25502,9 @@ function createClaudeSessionStore(store) {
|
|
|
24452
25502
|
consistency: "strong"
|
|
24453
25503
|
});
|
|
24454
25504
|
if (typeof raw !== "string") {
|
|
24455
|
-
|
|
25505
|
+
throw new MemoryCorruptError(
|
|
25506
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
25507
|
+
);
|
|
24456
25508
|
}
|
|
24457
25509
|
for (const line of raw.split("\\n")) {
|
|
24458
25510
|
const trimmed = line.trim();
|
|
@@ -24461,7 +25513,11 @@ function createClaudeSessionStore(store) {
|
|
|
24461
25513
|
}
|
|
24462
25514
|
try {
|
|
24463
25515
|
entries.push(JSON.parse(trimmed));
|
|
24464
|
-
} catch {
|
|
25516
|
+
} catch (error51) {
|
|
25517
|
+
throw new MemoryCorruptError(
|
|
25518
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
25519
|
+
error51
|
|
25520
|
+
);
|
|
24465
25521
|
}
|
|
24466
25522
|
}
|
|
24467
25523
|
}
|
|
@@ -24587,8 +25643,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
24587
25643
|
});
|
|
24588
25644
|
}
|
|
24589
25645
|
async function listConversationsFromIndex(store, options) {
|
|
25646
|
+
if (!options.before) {
|
|
25647
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
25648
|
+
if (fast)
|
|
25649
|
+
return fast;
|
|
25650
|
+
}
|
|
24590
25651
|
return listConversationsFromIndexFull(store, options);
|
|
24591
25652
|
}
|
|
25653
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
25654
|
+
var _a3, _b;
|
|
25655
|
+
let listCursor = cursorListCursor(options.after);
|
|
25656
|
+
if (options.after && !listCursor) {
|
|
25657
|
+
return null;
|
|
25658
|
+
}
|
|
25659
|
+
const pageItems = [];
|
|
25660
|
+
const seen = /* @__PURE__ */ new Set();
|
|
25661
|
+
let lastCursor;
|
|
25662
|
+
while (pageItems.length < options.limit) {
|
|
25663
|
+
const listed = await store.list({
|
|
25664
|
+
prefix: options.prefix,
|
|
25665
|
+
cursor: listCursor,
|
|
25666
|
+
limit: options.limit - pageItems.length,
|
|
25667
|
+
paginate: false,
|
|
25668
|
+
consistency: "strong"
|
|
25669
|
+
});
|
|
25670
|
+
lastCursor = listed.cursor;
|
|
25671
|
+
if (!listed.keys.length) {
|
|
25672
|
+
break;
|
|
25673
|
+
}
|
|
25674
|
+
const indexItems = [...listed.keys].sort(
|
|
25675
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
25676
|
+
).map((key) => {
|
|
25677
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
25678
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
25679
|
+
return null;
|
|
25680
|
+
}
|
|
25681
|
+
seen.add(conversationId);
|
|
25682
|
+
return {
|
|
25683
|
+
key,
|
|
25684
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
25685
|
+
conversationId
|
|
25686
|
+
};
|
|
25687
|
+
}).filter((item) => item !== null);
|
|
25688
|
+
const metas = await Promise.all(
|
|
25689
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
25690
|
+
);
|
|
25691
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
25692
|
+
const meta3 = metas[i];
|
|
25693
|
+
if (meta3) {
|
|
25694
|
+
pageItems.push({ indexItem: indexItems[i], meta: meta3 });
|
|
25695
|
+
}
|
|
25696
|
+
}
|
|
25697
|
+
if (!listed.cursor) {
|
|
25698
|
+
break;
|
|
25699
|
+
}
|
|
25700
|
+
listCursor = listed.cursor;
|
|
25701
|
+
}
|
|
25702
|
+
const firstItem = (_a3 = pageItems[0]) == null ? void 0 : _a3.indexItem;
|
|
25703
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
25704
|
+
return {
|
|
25705
|
+
items: pageItems.map((item) => item.meta),
|
|
25706
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
25707
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
25708
|
+
};
|
|
25709
|
+
}
|
|
24592
25710
|
async function listConversationsFromIndexFull(store, options) {
|
|
24593
25711
|
var _a3, _b;
|
|
24594
25712
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -25025,6 +26143,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
25025
26143
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
25026
26144
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
25027
26145
|
const langgraphStore = createLangGraphStore(store);
|
|
26146
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
25028
26147
|
let claudeStoreCache = null;
|
|
25029
26148
|
let lastMessageCreatedAt = 0;
|
|
25030
26149
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -25310,8 +26429,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
25310
26429
|
listMessageKeys(store, input.conversationId)
|
|
25311
26430
|
]);
|
|
25312
26431
|
if (!meta3) {
|
|
26432
|
+
if (options.conversationId === input.conversationId) {
|
|
26433
|
+
await deleteAgentState(store, input.conversationId);
|
|
26434
|
+
}
|
|
26435
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
26436
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
25313
26437
|
throw new MemoryNotFoundError(
|
|
25314
|
-
"Conversation not found by
|
|
26438
|
+
"Conversation not found by deleteConversation."
|
|
25315
26439
|
);
|
|
25316
26440
|
}
|
|
25317
26441
|
const deleteOps = [];
|
|
@@ -25328,6 +26452,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
25328
26452
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
25329
26453
|
deleteOps.push(store.delete(conversationIndexKey(meta3)));
|
|
25330
26454
|
await Promise.all(deleteOps);
|
|
26455
|
+
if (options.conversationId === input.conversationId) {
|
|
26456
|
+
await deleteAgentState(store, input.conversationId);
|
|
26457
|
+
}
|
|
26458
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
26459
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
25331
26460
|
});
|
|
25332
26461
|
},
|
|
25333
26462
|
async updateConversation(input) {
|
|
@@ -25363,14 +26492,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
25363
26492
|
}));
|
|
25364
26493
|
},
|
|
25365
26494
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
26495
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
26496
|
+
if (!boundSessionId) {
|
|
26497
|
+
throw new MemoryValidationError(
|
|
26498
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
26499
|
+
);
|
|
26500
|
+
}
|
|
25366
26501
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
25367
26502
|
return createOpenAISession(
|
|
25368
26503
|
memory,
|
|
25369
|
-
|
|
26504
|
+
boundSessionId,
|
|
25370
26505
|
maxItems,
|
|
25371
26506
|
appendMessagesInternal
|
|
25372
26507
|
);
|
|
25373
26508
|
},
|
|
26509
|
+
async claudeSessionBinding(conversationId) {
|
|
26510
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
26511
|
+
if (!resolvedConversationId) {
|
|
26512
|
+
throw new MemoryValidationError(
|
|
26513
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
26514
|
+
);
|
|
26515
|
+
}
|
|
26516
|
+
validateConversationId(resolvedConversationId);
|
|
26517
|
+
return wrapStorage(async () => {
|
|
26518
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
26519
|
+
const existing = await store.get(
|
|
26520
|
+
mappingKey,
|
|
26521
|
+
{ consistency: "strong" }
|
|
26522
|
+
);
|
|
26523
|
+
if (typeof existing === "string" && existing) {
|
|
26524
|
+
return existing;
|
|
26525
|
+
}
|
|
26526
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
26527
|
+
return String(existing.sessionId || existing.session_id);
|
|
26528
|
+
}
|
|
26529
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
26530
|
+
const binding = {
|
|
26531
|
+
conversationId: resolvedConversationId,
|
|
26532
|
+
sessionId
|
|
26533
|
+
};
|
|
26534
|
+
await store.set(mappingKey, binding);
|
|
26535
|
+
return sessionId;
|
|
26536
|
+
});
|
|
26537
|
+
},
|
|
25374
26538
|
claudeSessionStore() {
|
|
25375
26539
|
if (!claudeStoreCache) {
|
|
25376
26540
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -25378,7 +26542,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
25378
26542
|
return claudeStoreCache;
|
|
25379
26543
|
},
|
|
25380
26544
|
langgraphCheckpointer,
|
|
25381
|
-
langgraphStore
|
|
26545
|
+
langgraphStore,
|
|
26546
|
+
state
|
|
25382
26547
|
};
|
|
25383
26548
|
return memory;
|
|
25384
26549
|
}
|
|
@@ -26059,6 +27224,7 @@ function createAgentRuntime(options) {
|
|
|
26059
27224
|
env,
|
|
26060
27225
|
store: createAgentMemory(createLazyStore(resolveMemoryStore), {
|
|
26061
27226
|
runId: run_id,
|
|
27227
|
+
conversationId: conversation_id,
|
|
26062
27228
|
maxMessagesPerConversation: (_a3 = defaults2 == null ? void 0 : defaults2.memoryQuota) == null ? void 0 : _a3.maxMessagesPerConversation
|
|
26063
27229
|
}),
|
|
26064
27230
|
agents: {
|
|
@@ -48615,6 +49781,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
48615
49781
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
48616
49782
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
48617
49783
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
49784
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
49785
|
+
var STATE_PREFIX = "state";
|
|
49786
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
48618
49787
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
48619
49788
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
48620
49789
|
"user",
|
|
@@ -48661,6 +49830,15 @@ var MemoryStorageError = class extends Error {
|
|
|
48661
49830
|
this.cause = cause;
|
|
48662
49831
|
}
|
|
48663
49832
|
};
|
|
49833
|
+
var MemoryCorruptError = class extends Error {
|
|
49834
|
+
code = "MemoryCorruptError";
|
|
49835
|
+
cause;
|
|
49836
|
+
constructor(message, cause) {
|
|
49837
|
+
super(message);
|
|
49838
|
+
this.name = "MemoryCorruptError";
|
|
49839
|
+
this.cause = cause;
|
|
49840
|
+
}
|
|
49841
|
+
};
|
|
48664
49842
|
var dynamicImport = new Function(
|
|
48665
49843
|
"specifier",
|
|
48666
49844
|
"return import(specifier);"
|
|
@@ -48668,7 +49846,7 @@ var dynamicImport = new Function(
|
|
|
48668
49846
|
var langchainLoadPromise;
|
|
48669
49847
|
var langchainMessagesPromise;
|
|
48670
49848
|
function isMemoryError(error) {
|
|
48671
|
-
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError;
|
|
49849
|
+
return error instanceof MemoryValidationError || error instanceof MemoryNotFoundError || error instanceof MemoryQuotaExceededError || error instanceof MemoryStorageError || error instanceof MemoryCorruptError;
|
|
48672
49850
|
}
|
|
48673
49851
|
async function wrapStorage(operation) {
|
|
48674
49852
|
try {
|
|
@@ -48836,10 +50014,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
48836
50014
|
return revived;
|
|
48837
50015
|
}
|
|
48838
50016
|
async function deserializeLangGraphJson(value) {
|
|
48839
|
-
|
|
48840
|
-
|
|
50017
|
+
try {
|
|
50018
|
+
if (isLangGraphSerializedJson(value)) {
|
|
50019
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
50020
|
+
}
|
|
50021
|
+
return reviveLangGraphJsonValue(value);
|
|
50022
|
+
} catch (error) {
|
|
50023
|
+
throw new MemoryCorruptError(
|
|
50024
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
50025
|
+
error
|
|
50026
|
+
);
|
|
48841
50027
|
}
|
|
48842
|
-
return reviveLangGraphJsonValue(value);
|
|
48843
50028
|
}
|
|
48844
50029
|
function normalizeStoreLimit(value, fallback) {
|
|
48845
50030
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -48951,6 +50136,115 @@ function validateMessageId(messageId) {
|
|
|
48951
50136
|
throw new MemoryValidationError("messageId is required.");
|
|
48952
50137
|
}
|
|
48953
50138
|
}
|
|
50139
|
+
function validateStateKey(key) {
|
|
50140
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
50141
|
+
throw new MemoryValidationError("state key is required.");
|
|
50142
|
+
}
|
|
50143
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
50144
|
+
throw new MemoryValidationError(
|
|
50145
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
50146
|
+
);
|
|
50147
|
+
}
|
|
50148
|
+
}
|
|
50149
|
+
function assertStateSerializable(value, path2 = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
50150
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
50151
|
+
return;
|
|
50152
|
+
}
|
|
50153
|
+
if (typeof value === "number") {
|
|
50154
|
+
if (Number.isFinite(value))
|
|
50155
|
+
return;
|
|
50156
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
50157
|
+
}
|
|
50158
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
50159
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
50160
|
+
}
|
|
50161
|
+
if (typeof value !== "object") {
|
|
50162
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
50163
|
+
}
|
|
50164
|
+
if (seen.has(value)) {
|
|
50165
|
+
throw new MemoryValidationError(\`\${path2} must not contain circular references.\`);
|
|
50166
|
+
}
|
|
50167
|
+
seen.add(value);
|
|
50168
|
+
if (Array.isArray(value)) {
|
|
50169
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path2}[\${index}]\`, seen));
|
|
50170
|
+
} else if (isPlainObject(value)) {
|
|
50171
|
+
for (const [key, item] of Object.entries(value)) {
|
|
50172
|
+
assertStateSerializable(item, \`\${path2}.\${key}\`, seen);
|
|
50173
|
+
}
|
|
50174
|
+
} else {
|
|
50175
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
50176
|
+
}
|
|
50177
|
+
seen.delete(value);
|
|
50178
|
+
}
|
|
50179
|
+
function stateConversationPrefix(conversationId) {
|
|
50180
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
50181
|
+
}
|
|
50182
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
50183
|
+
const requireConversation = () => {
|
|
50184
|
+
if (!boundConversationId) {
|
|
50185
|
+
throw new MemoryValidationError(
|
|
50186
|
+
"State operations require a bound conversationId."
|
|
50187
|
+
);
|
|
50188
|
+
}
|
|
50189
|
+
validateConversationId(boundConversationId);
|
|
50190
|
+
return boundConversationId;
|
|
50191
|
+
};
|
|
50192
|
+
return {
|
|
50193
|
+
async get(key) {
|
|
50194
|
+
validateStateKey(key);
|
|
50195
|
+
const conversationId = requireConversation();
|
|
50196
|
+
return wrapStorage(async () => {
|
|
50197
|
+
const raw = await store.get(
|
|
50198
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
50199
|
+
{ consistency: "strong" }
|
|
50200
|
+
);
|
|
50201
|
+
if (raw === null)
|
|
50202
|
+
return null;
|
|
50203
|
+
if (typeof raw !== "string") {
|
|
50204
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
50205
|
+
}
|
|
50206
|
+
try {
|
|
50207
|
+
return JSON.parse(raw);
|
|
50208
|
+
} catch (error) {
|
|
50209
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error);
|
|
50210
|
+
}
|
|
50211
|
+
});
|
|
50212
|
+
},
|
|
50213
|
+
async set(key, value) {
|
|
50214
|
+
validateStateKey(key);
|
|
50215
|
+
const conversationId = requireConversation();
|
|
50216
|
+
assertStateSerializable(value);
|
|
50217
|
+
let serialized;
|
|
50218
|
+
try {
|
|
50219
|
+
serialized = JSON.stringify(value);
|
|
50220
|
+
} catch (error) {
|
|
50221
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error)}\`);
|
|
50222
|
+
}
|
|
50223
|
+
await wrapStorage(
|
|
50224
|
+
() => store.set(
|
|
50225
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
50226
|
+
serialized
|
|
50227
|
+
)
|
|
50228
|
+
);
|
|
50229
|
+
},
|
|
50230
|
+
async delete(key) {
|
|
50231
|
+
validateStateKey(key);
|
|
50232
|
+
const conversationId = requireConversation();
|
|
50233
|
+
await wrapStorage(
|
|
50234
|
+
() => store.delete(
|
|
50235
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
50236
|
+
)
|
|
50237
|
+
);
|
|
50238
|
+
}
|
|
50239
|
+
};
|
|
50240
|
+
}
|
|
50241
|
+
async function deleteAgentState(store, conversationId) {
|
|
50242
|
+
const listed = await store.list({
|
|
50243
|
+
prefix: stateConversationPrefix(conversationId),
|
|
50244
|
+
consistency: "strong"
|
|
50245
|
+
});
|
|
50246
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
50247
|
+
}
|
|
48954
50248
|
function validateUserId(userId) {
|
|
48955
50249
|
if (userId === void 0) {
|
|
48956
50250
|
return;
|
|
@@ -49083,6 +50377,9 @@ function cursorSortKey(cursor) {
|
|
|
49083
50377
|
const payload = decodeConversationCursor(cursor);
|
|
49084
50378
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
49085
50379
|
}
|
|
50380
|
+
function cursorListCursor(cursor) {
|
|
50381
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
50382
|
+
}
|
|
49086
50383
|
function indexSortKey(key, prefix) {
|
|
49087
50384
|
return key.slice(prefix.length);
|
|
49088
50385
|
}
|
|
@@ -49250,6 +50547,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
49250
50547
|
function claudeProjectPrefix(projectKey) {
|
|
49251
50548
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
49252
50549
|
}
|
|
50550
|
+
function claudeSessionMappingKey(conversationId) {
|
|
50551
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
50552
|
+
}
|
|
50553
|
+
function normalizeClaudeUuid(value) {
|
|
50554
|
+
const trimmed = value.trim().toLowerCase();
|
|
50555
|
+
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;
|
|
50556
|
+
}
|
|
50557
|
+
function claudeSessionIdFromKey(key) {
|
|
50558
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
50559
|
+
if (!key.startsWith(prefix)) {
|
|
50560
|
+
return null;
|
|
50561
|
+
}
|
|
50562
|
+
const segments = key.slice(prefix.length).split("/");
|
|
50563
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
50564
|
+
}
|
|
50565
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
50566
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
50567
|
+
const mapping = await store.get(mappingKey, {
|
|
50568
|
+
consistency: "strong"
|
|
50569
|
+
});
|
|
50570
|
+
let sessionId = null;
|
|
50571
|
+
if (typeof mapping === "string") {
|
|
50572
|
+
sessionId = mapping;
|
|
50573
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
50574
|
+
sessionId = mapping.sessionId;
|
|
50575
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
50576
|
+
sessionId = mapping.session_id;
|
|
50577
|
+
}
|
|
50578
|
+
if (!sessionId) {
|
|
50579
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
50580
|
+
}
|
|
50581
|
+
await store.delete(mappingKey);
|
|
50582
|
+
if (!sessionId) {
|
|
50583
|
+
return;
|
|
50584
|
+
}
|
|
50585
|
+
const listed = await store.list({
|
|
50586
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
50587
|
+
consistency: "strong"
|
|
50588
|
+
});
|
|
50589
|
+
for (const key of listed.keys) {
|
|
50590
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
50591
|
+
await store.delete(key);
|
|
50592
|
+
}
|
|
50593
|
+
}
|
|
50594
|
+
}
|
|
49253
50595
|
function claudePartsPrefix(key) {
|
|
49254
50596
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
49255
50597
|
if (key.subpath) {
|
|
@@ -49287,7 +50629,9 @@ function createClaudeSessionStore(store) {
|
|
|
49287
50629
|
consistency: "strong"
|
|
49288
50630
|
});
|
|
49289
50631
|
if (typeof raw !== "string") {
|
|
49290
|
-
|
|
50632
|
+
throw new MemoryCorruptError(
|
|
50633
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
50634
|
+
);
|
|
49291
50635
|
}
|
|
49292
50636
|
for (const line of raw.split("\\n")) {
|
|
49293
50637
|
const trimmed = line.trim();
|
|
@@ -49296,7 +50640,11 @@ function createClaudeSessionStore(store) {
|
|
|
49296
50640
|
}
|
|
49297
50641
|
try {
|
|
49298
50642
|
entries.push(JSON.parse(trimmed));
|
|
49299
|
-
} catch {
|
|
50643
|
+
} catch (error) {
|
|
50644
|
+
throw new MemoryCorruptError(
|
|
50645
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
50646
|
+
error
|
|
50647
|
+
);
|
|
49300
50648
|
}
|
|
49301
50649
|
}
|
|
49302
50650
|
}
|
|
@@ -49422,8 +50770,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
49422
50770
|
});
|
|
49423
50771
|
}
|
|
49424
50772
|
async function listConversationsFromIndex(store, options) {
|
|
50773
|
+
if (!options.before) {
|
|
50774
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
50775
|
+
if (fast)
|
|
50776
|
+
return fast;
|
|
50777
|
+
}
|
|
49425
50778
|
return listConversationsFromIndexFull(store, options);
|
|
49426
50779
|
}
|
|
50780
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
50781
|
+
var _a, _b;
|
|
50782
|
+
let listCursor = cursorListCursor(options.after);
|
|
50783
|
+
if (options.after && !listCursor) {
|
|
50784
|
+
return null;
|
|
50785
|
+
}
|
|
50786
|
+
const pageItems = [];
|
|
50787
|
+
const seen = /* @__PURE__ */ new Set();
|
|
50788
|
+
let lastCursor;
|
|
50789
|
+
while (pageItems.length < options.limit) {
|
|
50790
|
+
const listed = await store.list({
|
|
50791
|
+
prefix: options.prefix,
|
|
50792
|
+
cursor: listCursor,
|
|
50793
|
+
limit: options.limit - pageItems.length,
|
|
50794
|
+
paginate: false,
|
|
50795
|
+
consistency: "strong"
|
|
50796
|
+
});
|
|
50797
|
+
lastCursor = listed.cursor;
|
|
50798
|
+
if (!listed.keys.length) {
|
|
50799
|
+
break;
|
|
50800
|
+
}
|
|
50801
|
+
const indexItems = [...listed.keys].sort(
|
|
50802
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
50803
|
+
).map((key) => {
|
|
50804
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
50805
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
50806
|
+
return null;
|
|
50807
|
+
}
|
|
50808
|
+
seen.add(conversationId);
|
|
50809
|
+
return {
|
|
50810
|
+
key,
|
|
50811
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
50812
|
+
conversationId
|
|
50813
|
+
};
|
|
50814
|
+
}).filter((item) => item !== null);
|
|
50815
|
+
const metas = await Promise.all(
|
|
50816
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
50817
|
+
);
|
|
50818
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
50819
|
+
const meta = metas[i];
|
|
50820
|
+
if (meta) {
|
|
50821
|
+
pageItems.push({ indexItem: indexItems[i], meta });
|
|
50822
|
+
}
|
|
50823
|
+
}
|
|
50824
|
+
if (!listed.cursor) {
|
|
50825
|
+
break;
|
|
50826
|
+
}
|
|
50827
|
+
listCursor = listed.cursor;
|
|
50828
|
+
}
|
|
50829
|
+
const firstItem = (_a = pageItems[0]) == null ? void 0 : _a.indexItem;
|
|
50830
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
50831
|
+
return {
|
|
50832
|
+
items: pageItems.map((item) => item.meta),
|
|
50833
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
50834
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
50835
|
+
};
|
|
50836
|
+
}
|
|
49427
50837
|
async function listConversationsFromIndexFull(store, options) {
|
|
49428
50838
|
var _a, _b;
|
|
49429
50839
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -49860,6 +51270,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
49860
51270
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
49861
51271
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
49862
51272
|
const langgraphStore = createLangGraphStore(store);
|
|
51273
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
49863
51274
|
let claudeStoreCache = null;
|
|
49864
51275
|
let lastMessageCreatedAt = 0;
|
|
49865
51276
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -50145,8 +51556,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
50145
51556
|
listMessageKeys(store, input.conversationId)
|
|
50146
51557
|
]);
|
|
50147
51558
|
if (!meta) {
|
|
51559
|
+
if (options.conversationId === input.conversationId) {
|
|
51560
|
+
await deleteAgentState(store, input.conversationId);
|
|
51561
|
+
}
|
|
51562
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
51563
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
50148
51564
|
throw new MemoryNotFoundError(
|
|
50149
|
-
"Conversation not found by
|
|
51565
|
+
"Conversation not found by deleteConversation."
|
|
50150
51566
|
);
|
|
50151
51567
|
}
|
|
50152
51568
|
const deleteOps = [];
|
|
@@ -50163,6 +51579,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
50163
51579
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
50164
51580
|
deleteOps.push(store.delete(conversationIndexKey(meta)));
|
|
50165
51581
|
await Promise.all(deleteOps);
|
|
51582
|
+
if (options.conversationId === input.conversationId) {
|
|
51583
|
+
await deleteAgentState(store, input.conversationId);
|
|
51584
|
+
}
|
|
51585
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
51586
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
50166
51587
|
});
|
|
50167
51588
|
},
|
|
50168
51589
|
async updateConversation(input) {
|
|
@@ -50198,14 +51619,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
50198
51619
|
}));
|
|
50199
51620
|
},
|
|
50200
51621
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
51622
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
51623
|
+
if (!boundSessionId) {
|
|
51624
|
+
throw new MemoryValidationError(
|
|
51625
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
51626
|
+
);
|
|
51627
|
+
}
|
|
50201
51628
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
50202
51629
|
return createOpenAISession(
|
|
50203
51630
|
memory,
|
|
50204
|
-
|
|
51631
|
+
boundSessionId,
|
|
50205
51632
|
maxItems,
|
|
50206
51633
|
appendMessagesInternal
|
|
50207
51634
|
);
|
|
50208
51635
|
},
|
|
51636
|
+
async claudeSessionBinding(conversationId) {
|
|
51637
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
51638
|
+
if (!resolvedConversationId) {
|
|
51639
|
+
throw new MemoryValidationError(
|
|
51640
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
51641
|
+
);
|
|
51642
|
+
}
|
|
51643
|
+
validateConversationId(resolvedConversationId);
|
|
51644
|
+
return wrapStorage(async () => {
|
|
51645
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
51646
|
+
const existing = await store.get(
|
|
51647
|
+
mappingKey,
|
|
51648
|
+
{ consistency: "strong" }
|
|
51649
|
+
);
|
|
51650
|
+
if (typeof existing === "string" && existing) {
|
|
51651
|
+
return existing;
|
|
51652
|
+
}
|
|
51653
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
51654
|
+
return String(existing.sessionId || existing.session_id);
|
|
51655
|
+
}
|
|
51656
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
51657
|
+
const binding = {
|
|
51658
|
+
conversationId: resolvedConversationId,
|
|
51659
|
+
sessionId
|
|
51660
|
+
};
|
|
51661
|
+
await store.set(mappingKey, binding);
|
|
51662
|
+
return sessionId;
|
|
51663
|
+
});
|
|
51664
|
+
},
|
|
50209
51665
|
claudeSessionStore() {
|
|
50210
51666
|
if (!claudeStoreCache) {
|
|
50211
51667
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -50213,7 +51669,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
50213
51669
|
return claudeStoreCache;
|
|
50214
51670
|
},
|
|
50215
51671
|
langgraphCheckpointer,
|
|
50216
|
-
langgraphStore
|
|
51672
|
+
langgraphStore,
|
|
51673
|
+
state
|
|
50217
51674
|
};
|
|
50218
51675
|
return memory;
|
|
50219
51676
|
}
|
|
@@ -50894,6 +52351,7 @@ function createAgentRuntime(options) {
|
|
|
50894
52351
|
env,
|
|
50895
52352
|
store: createAgentMemory(createLazyStore(resolveMemoryStore), {
|
|
50896
52353
|
runId: run_id,
|
|
52354
|
+
conversationId: conversation_id,
|
|
50897
52355
|
maxMessagesPerConversation: (_a = defaults == null ? void 0 : defaults.memoryQuota) == null ? void 0 : _a.maxMessagesPerConversation
|
|
50898
52356
|
}),
|
|
50899
52357
|
agents: {
|
|
@@ -64074,6 +65532,9 @@ var LANGGRAPH_STORE_PREFIX = "langgraph_store";
|
|
|
64074
65532
|
var LANGGRAPH_STORE_KEY_SEPARATOR = "__key__";
|
|
64075
65533
|
var LANGGRAPH_SERDE_VERSION = 1;
|
|
64076
65534
|
var CLAUDE_SESSION_PREFIX = "claude_sessions";
|
|
65535
|
+
var CLAUDE_SESSION_MAPPING_PREFIX = "claude_session_mapping";
|
|
65536
|
+
var STATE_PREFIX = "state";
|
|
65537
|
+
var MAX_STATE_KEY_LENGTH = 256;
|
|
64077
65538
|
var SESSION_METADATA_MARKER = { agent_sdk_session: true };
|
|
64078
65539
|
var VALID_ROLES = /* @__PURE__ */ new Set([
|
|
64079
65540
|
"user",
|
|
@@ -64120,6 +65581,15 @@ var MemoryStorageError = class extends Error {
|
|
|
64120
65581
|
this.cause = cause;
|
|
64121
65582
|
}
|
|
64122
65583
|
};
|
|
65584
|
+
var MemoryCorruptError = class extends Error {
|
|
65585
|
+
code = "MemoryCorruptError";
|
|
65586
|
+
cause;
|
|
65587
|
+
constructor(message, cause) {
|
|
65588
|
+
super(message);
|
|
65589
|
+
this.name = "MemoryCorruptError";
|
|
65590
|
+
this.cause = cause;
|
|
65591
|
+
}
|
|
65592
|
+
};
|
|
64123
65593
|
var dynamicImport = new Function(
|
|
64124
65594
|
"specifier",
|
|
64125
65595
|
"return import(specifier);"
|
|
@@ -64127,7 +65597,7 @@ var dynamicImport = new Function(
|
|
|
64127
65597
|
var langchainLoadPromise;
|
|
64128
65598
|
var langchainMessagesPromise;
|
|
64129
65599
|
function isMemoryError(error51) {
|
|
64130
|
-
return error51 instanceof MemoryValidationError || error51 instanceof MemoryNotFoundError || error51 instanceof MemoryQuotaExceededError || error51 instanceof MemoryStorageError;
|
|
65600
|
+
return error51 instanceof MemoryValidationError || error51 instanceof MemoryNotFoundError || error51 instanceof MemoryQuotaExceededError || error51 instanceof MemoryStorageError || error51 instanceof MemoryCorruptError;
|
|
64131
65601
|
}
|
|
64132
65602
|
async function wrapStorage(operation) {
|
|
64133
65603
|
try {
|
|
@@ -64295,10 +65765,17 @@ async function reviveLangGraphJsonValue(value) {
|
|
|
64295
65765
|
return revived;
|
|
64296
65766
|
}
|
|
64297
65767
|
async function deserializeLangGraphJson(value) {
|
|
64298
|
-
|
|
64299
|
-
|
|
65768
|
+
try {
|
|
65769
|
+
if (isLangGraphSerializedJson(value)) {
|
|
65770
|
+
return reviveLangGraphJsonValue(JSON.parse(value.data));
|
|
65771
|
+
}
|
|
65772
|
+
return reviveLangGraphJsonValue(value);
|
|
65773
|
+
} catch (error51) {
|
|
65774
|
+
throw new MemoryCorruptError(
|
|
65775
|
+
"LangGraph persisted state is corrupt or incompatible.",
|
|
65776
|
+
error51
|
|
65777
|
+
);
|
|
64300
65778
|
}
|
|
64301
|
-
return reviveLangGraphJsonValue(value);
|
|
64302
65779
|
}
|
|
64303
65780
|
function normalizeStoreLimit(value, fallback) {
|
|
64304
65781
|
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
@@ -64410,6 +65887,115 @@ function validateMessageId(messageId) {
|
|
|
64410
65887
|
throw new MemoryValidationError("messageId is required.");
|
|
64411
65888
|
}
|
|
64412
65889
|
}
|
|
65890
|
+
function validateStateKey(key) {
|
|
65891
|
+
if (typeof key !== "string" || key.length === 0) {
|
|
65892
|
+
throw new MemoryValidationError("state key is required.");
|
|
65893
|
+
}
|
|
65894
|
+
if (key.length > MAX_STATE_KEY_LENGTH) {
|
|
65895
|
+
throw new MemoryValidationError(
|
|
65896
|
+
\`state key must be at most \${MAX_STATE_KEY_LENGTH} characters.\`
|
|
65897
|
+
);
|
|
65898
|
+
}
|
|
65899
|
+
}
|
|
65900
|
+
function assertStateSerializable(value, path2 = "state value", seen = /* @__PURE__ */ new Set()) {
|
|
65901
|
+
if (value === null || typeof value === "string" || typeof value === "boolean") {
|
|
65902
|
+
return;
|
|
65903
|
+
}
|
|
65904
|
+
if (typeof value === "number") {
|
|
65905
|
+
if (Number.isFinite(value))
|
|
65906
|
+
return;
|
|
65907
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
65908
|
+
}
|
|
65909
|
+
if (value === void 0 || typeof value === "function" || typeof value === "symbol" || typeof value === "bigint") {
|
|
65910
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
65911
|
+
}
|
|
65912
|
+
if (typeof value !== "object") {
|
|
65913
|
+
throw new MemoryValidationError(\`\${path2} must be JSON serializable.\`);
|
|
65914
|
+
}
|
|
65915
|
+
if (seen.has(value)) {
|
|
65916
|
+
throw new MemoryValidationError(\`\${path2} must not contain circular references.\`);
|
|
65917
|
+
}
|
|
65918
|
+
seen.add(value);
|
|
65919
|
+
if (Array.isArray(value)) {
|
|
65920
|
+
value.forEach((item, index) => assertStateSerializable(item, \`\${path2}[\${index}]\`, seen));
|
|
65921
|
+
} else if (isPlainObject(value)) {
|
|
65922
|
+
for (const [key, item] of Object.entries(value)) {
|
|
65923
|
+
assertStateSerializable(item, \`\${path2}.\${key}\`, seen);
|
|
65924
|
+
}
|
|
65925
|
+
} else {
|
|
65926
|
+
throw new MemoryValidationError(\`\${path2} must contain only JSON values.\`);
|
|
65927
|
+
}
|
|
65928
|
+
seen.delete(value);
|
|
65929
|
+
}
|
|
65930
|
+
function stateConversationPrefix(conversationId) {
|
|
65931
|
+
return \`\${STATE_PREFIX}/\${encodeKeySegment(conversationId)}/\`;
|
|
65932
|
+
}
|
|
65933
|
+
function createAgentStateStore(store, boundConversationId) {
|
|
65934
|
+
const requireConversation = () => {
|
|
65935
|
+
if (!boundConversationId) {
|
|
65936
|
+
throw new MemoryValidationError(
|
|
65937
|
+
"State operations require a bound conversationId."
|
|
65938
|
+
);
|
|
65939
|
+
}
|
|
65940
|
+
validateConversationId(boundConversationId);
|
|
65941
|
+
return boundConversationId;
|
|
65942
|
+
};
|
|
65943
|
+
return {
|
|
65944
|
+
async get(key) {
|
|
65945
|
+
validateStateKey(key);
|
|
65946
|
+
const conversationId = requireConversation();
|
|
65947
|
+
return wrapStorage(async () => {
|
|
65948
|
+
const raw = await store.get(
|
|
65949
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
65950
|
+
{ consistency: "strong" }
|
|
65951
|
+
);
|
|
65952
|
+
if (raw === null)
|
|
65953
|
+
return null;
|
|
65954
|
+
if (typeof raw !== "string") {
|
|
65955
|
+
throw new MemoryStorageError("Stored state value is not valid JSON text.");
|
|
65956
|
+
}
|
|
65957
|
+
try {
|
|
65958
|
+
return JSON.parse(raw);
|
|
65959
|
+
} catch (error51) {
|
|
65960
|
+
throw new MemoryStorageError("Stored state value is invalid JSON.", error51);
|
|
65961
|
+
}
|
|
65962
|
+
});
|
|
65963
|
+
},
|
|
65964
|
+
async set(key, value) {
|
|
65965
|
+
validateStateKey(key);
|
|
65966
|
+
const conversationId = requireConversation();
|
|
65967
|
+
assertStateSerializable(value);
|
|
65968
|
+
let serialized;
|
|
65969
|
+
try {
|
|
65970
|
+
serialized = JSON.stringify(value);
|
|
65971
|
+
} catch (error51) {
|
|
65972
|
+
throw new MemoryValidationError(\`state value must be JSON serializable: \${String(error51)}\`);
|
|
65973
|
+
}
|
|
65974
|
+
await wrapStorage(
|
|
65975
|
+
() => store.set(
|
|
65976
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`,
|
|
65977
|
+
serialized
|
|
65978
|
+
)
|
|
65979
|
+
);
|
|
65980
|
+
},
|
|
65981
|
+
async delete(key) {
|
|
65982
|
+
validateStateKey(key);
|
|
65983
|
+
const conversationId = requireConversation();
|
|
65984
|
+
await wrapStorage(
|
|
65985
|
+
() => store.delete(
|
|
65986
|
+
\`\${stateConversationPrefix(conversationId)}\${encodeKeySegment(key)}\`
|
|
65987
|
+
)
|
|
65988
|
+
);
|
|
65989
|
+
}
|
|
65990
|
+
};
|
|
65991
|
+
}
|
|
65992
|
+
async function deleteAgentState(store, conversationId) {
|
|
65993
|
+
const listed = await store.list({
|
|
65994
|
+
prefix: stateConversationPrefix(conversationId),
|
|
65995
|
+
consistency: "strong"
|
|
65996
|
+
});
|
|
65997
|
+
await Promise.all(listed.keys.map((key) => store.delete(key)));
|
|
65998
|
+
}
|
|
64413
65999
|
function validateUserId(userId) {
|
|
64414
66000
|
if (userId === void 0) {
|
|
64415
66001
|
return;
|
|
@@ -64542,6 +66128,9 @@ function cursorSortKey(cursor) {
|
|
|
64542
66128
|
const payload = decodeConversationCursor(cursor);
|
|
64543
66129
|
return \`\${reverseTimestamp(payload.lastMessageAt)}_\${encodeKeySegment(payload.conversationId)}\`;
|
|
64544
66130
|
}
|
|
66131
|
+
function cursorListCursor(cursor) {
|
|
66132
|
+
return cursor ? decodeConversationCursor(cursor).listCursor : void 0;
|
|
66133
|
+
}
|
|
64545
66134
|
function indexSortKey(key, prefix) {
|
|
64546
66135
|
return key.slice(prefix.length);
|
|
64547
66136
|
}
|
|
@@ -64709,6 +66298,51 @@ function claudeSessionBase(projectKey, sessionId) {
|
|
|
64709
66298
|
function claudeProjectPrefix(projectKey) {
|
|
64710
66299
|
return \`\${CLAUDE_SESSION_PREFIX}/\${encodeKeySegment(projectKey)}/\`;
|
|
64711
66300
|
}
|
|
66301
|
+
function claudeSessionMappingKey(conversationId) {
|
|
66302
|
+
return \`\${CLAUDE_SESSION_MAPPING_PREFIX}/\${encodeKeySegment(conversationId)}\`;
|
|
66303
|
+
}
|
|
66304
|
+
function normalizeClaudeUuid(value) {
|
|
66305
|
+
const trimmed = value.trim().toLowerCase();
|
|
66306
|
+
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;
|
|
66307
|
+
}
|
|
66308
|
+
function claudeSessionIdFromKey(key) {
|
|
66309
|
+
const prefix = \`\${CLAUDE_SESSION_PREFIX}/\`;
|
|
66310
|
+
if (!key.startsWith(prefix)) {
|
|
66311
|
+
return null;
|
|
66312
|
+
}
|
|
66313
|
+
const segments = key.slice(prefix.length).split("/");
|
|
66314
|
+
return segments.length >= 3 && segments[1] ? decodeKeySegment(segments[1]) : null;
|
|
66315
|
+
}
|
|
66316
|
+
async function deleteClaudeSessionForConversation(store, conversationId) {
|
|
66317
|
+
const mappingKey = claudeSessionMappingKey(conversationId);
|
|
66318
|
+
const mapping = await store.get(mappingKey, {
|
|
66319
|
+
consistency: "strong"
|
|
66320
|
+
});
|
|
66321
|
+
let sessionId = null;
|
|
66322
|
+
if (typeof mapping === "string") {
|
|
66323
|
+
sessionId = mapping;
|
|
66324
|
+
} else if (isPlainObject(mapping) && typeof mapping.sessionId === "string") {
|
|
66325
|
+
sessionId = mapping.sessionId;
|
|
66326
|
+
} else if (isPlainObject(mapping) && typeof mapping.session_id === "string") {
|
|
66327
|
+
sessionId = mapping.session_id;
|
|
66328
|
+
}
|
|
66329
|
+
if (!sessionId) {
|
|
66330
|
+
sessionId = normalizeClaudeUuid(conversationId);
|
|
66331
|
+
}
|
|
66332
|
+
await store.delete(mappingKey);
|
|
66333
|
+
if (!sessionId) {
|
|
66334
|
+
return;
|
|
66335
|
+
}
|
|
66336
|
+
const listed = await store.list({
|
|
66337
|
+
prefix: \`\${CLAUDE_SESSION_PREFIX}/\`,
|
|
66338
|
+
consistency: "strong"
|
|
66339
|
+
});
|
|
66340
|
+
for (const key of listed.keys) {
|
|
66341
|
+
if (claudeSessionIdFromKey(key) === sessionId) {
|
|
66342
|
+
await store.delete(key);
|
|
66343
|
+
}
|
|
66344
|
+
}
|
|
66345
|
+
}
|
|
64712
66346
|
function claudePartsPrefix(key) {
|
|
64713
66347
|
let base = claudeSessionBase(key.projectKey, key.sessionId).slice(0, -1);
|
|
64714
66348
|
if (key.subpath) {
|
|
@@ -64746,7 +66380,9 @@ function createClaudeSessionStore(store) {
|
|
|
64746
66380
|
consistency: "strong"
|
|
64747
66381
|
});
|
|
64748
66382
|
if (typeof raw !== "string") {
|
|
64749
|
-
|
|
66383
|
+
throw new MemoryCorruptError(
|
|
66384
|
+
\`Claude session part '\${partKey}' is not valid JSONL text.\`
|
|
66385
|
+
);
|
|
64750
66386
|
}
|
|
64751
66387
|
for (const line of raw.split("\\n")) {
|
|
64752
66388
|
const trimmed = line.trim();
|
|
@@ -64755,7 +66391,11 @@ function createClaudeSessionStore(store) {
|
|
|
64755
66391
|
}
|
|
64756
66392
|
try {
|
|
64757
66393
|
entries.push(JSON.parse(trimmed));
|
|
64758
|
-
} catch {
|
|
66394
|
+
} catch (error51) {
|
|
66395
|
+
throw new MemoryCorruptError(
|
|
66396
|
+
\`Claude session part '\${partKey}' contains malformed JSONL.\`,
|
|
66397
|
+
error51
|
|
66398
|
+
);
|
|
64759
66399
|
}
|
|
64760
66400
|
}
|
|
64761
66401
|
}
|
|
@@ -64881,8 +66521,70 @@ async function listConversationsByUser(store, userId, options) {
|
|
|
64881
66521
|
});
|
|
64882
66522
|
}
|
|
64883
66523
|
async function listConversationsFromIndex(store, options) {
|
|
66524
|
+
if (!options.before) {
|
|
66525
|
+
const fast = await listConversationsFromIndexFast(store, options);
|
|
66526
|
+
if (fast)
|
|
66527
|
+
return fast;
|
|
66528
|
+
}
|
|
64884
66529
|
return listConversationsFromIndexFull(store, options);
|
|
64885
66530
|
}
|
|
66531
|
+
async function listConversationsFromIndexFast(store, options) {
|
|
66532
|
+
var _a3, _b;
|
|
66533
|
+
let listCursor = cursorListCursor(options.after);
|
|
66534
|
+
if (options.after && !listCursor) {
|
|
66535
|
+
return null;
|
|
66536
|
+
}
|
|
66537
|
+
const pageItems = [];
|
|
66538
|
+
const seen = /* @__PURE__ */ new Set();
|
|
66539
|
+
let lastCursor;
|
|
66540
|
+
while (pageItems.length < options.limit) {
|
|
66541
|
+
const listed = await store.list({
|
|
66542
|
+
prefix: options.prefix,
|
|
66543
|
+
cursor: listCursor,
|
|
66544
|
+
limit: options.limit - pageItems.length,
|
|
66545
|
+
paginate: false,
|
|
66546
|
+
consistency: "strong"
|
|
66547
|
+
});
|
|
66548
|
+
lastCursor = listed.cursor;
|
|
66549
|
+
if (!listed.keys.length) {
|
|
66550
|
+
break;
|
|
66551
|
+
}
|
|
66552
|
+
const indexItems = [...listed.keys].sort(
|
|
66553
|
+
(left, right) => options.order === "desc" ? left.localeCompare(right) : right.localeCompare(left)
|
|
66554
|
+
).map((key) => {
|
|
66555
|
+
const conversationId = options.conversationIdFromKey(key);
|
|
66556
|
+
if (!conversationId || seen.has(conversationId)) {
|
|
66557
|
+
return null;
|
|
66558
|
+
}
|
|
66559
|
+
seen.add(conversationId);
|
|
66560
|
+
return {
|
|
66561
|
+
key,
|
|
66562
|
+
sortKey: indexSortKey(key, options.prefix),
|
|
66563
|
+
conversationId
|
|
66564
|
+
};
|
|
66565
|
+
}).filter((item) => item !== null);
|
|
66566
|
+
const metas = await Promise.all(
|
|
66567
|
+
indexItems.map((item) => readConversationMeta(store, item.conversationId))
|
|
66568
|
+
);
|
|
66569
|
+
for (let i = 0; i < indexItems.length; i++) {
|
|
66570
|
+
const meta3 = metas[i];
|
|
66571
|
+
if (meta3) {
|
|
66572
|
+
pageItems.push({ indexItem: indexItems[i], meta: meta3 });
|
|
66573
|
+
}
|
|
66574
|
+
}
|
|
66575
|
+
if (!listed.cursor) {
|
|
66576
|
+
break;
|
|
66577
|
+
}
|
|
66578
|
+
listCursor = listed.cursor;
|
|
66579
|
+
}
|
|
66580
|
+
const firstItem = (_a3 = pageItems[0]) == null ? void 0 : _a3.indexItem;
|
|
66581
|
+
const lastItem = (_b = pageItems[pageItems.length - 1]) == null ? void 0 : _b.indexItem;
|
|
66582
|
+
return {
|
|
66583
|
+
items: pageItems.map((item) => item.meta),
|
|
66584
|
+
nextCursor: lastItem ? encodeConversationCursorFromIndexItem(lastItem, lastCursor) : void 0,
|
|
66585
|
+
previousCursor: firstItem ? encodeConversationCursorFromIndexItem(firstItem) : void 0
|
|
66586
|
+
};
|
|
66587
|
+
}
|
|
64886
66588
|
async function listConversationsFromIndexFull(store, options) {
|
|
64887
66589
|
var _a3, _b;
|
|
64888
66590
|
const afterSortKey = options.after ? cursorSortKey(options.after) : void 0;
|
|
@@ -65319,6 +67021,7 @@ function createAgentMemory(store, options = {}) {
|
|
|
65319
67021
|
const maxMessagesPerConversation = options.maxMessagesPerConversation ?? DEFAULT_MAX_MESSAGES_PER_CONVERSATION;
|
|
65320
67022
|
const langgraphCheckpointer = createLangGraphCheckpointer(store);
|
|
65321
67023
|
const langgraphStore = createLangGraphStore(store);
|
|
67024
|
+
const state = createAgentStateStore(store, options.conversationId);
|
|
65322
67025
|
let claudeStoreCache = null;
|
|
65323
67026
|
let lastMessageCreatedAt = 0;
|
|
65324
67027
|
const appendMessagesInternal = async (inputs) => {
|
|
@@ -65604,8 +67307,13 @@ function createAgentMemory(store, options = {}) {
|
|
|
65604
67307
|
listMessageKeys(store, input.conversationId)
|
|
65605
67308
|
]);
|
|
65606
67309
|
if (!meta3) {
|
|
67310
|
+
if (options.conversationId === input.conversationId) {
|
|
67311
|
+
await deleteAgentState(store, input.conversationId);
|
|
67312
|
+
}
|
|
67313
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
67314
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
65607
67315
|
throw new MemoryNotFoundError(
|
|
65608
|
-
"Conversation not found by
|
|
67316
|
+
"Conversation not found by deleteConversation."
|
|
65609
67317
|
);
|
|
65610
67318
|
}
|
|
65611
67319
|
const deleteOps = [];
|
|
@@ -65622,6 +67330,11 @@ function createAgentMemory(store, options = {}) {
|
|
|
65622
67330
|
deleteOps.push(store.delete(metaKey(input.conversationId)));
|
|
65623
67331
|
deleteOps.push(store.delete(conversationIndexKey(meta3)));
|
|
65624
67332
|
await Promise.all(deleteOps);
|
|
67333
|
+
if (options.conversationId === input.conversationId) {
|
|
67334
|
+
await deleteAgentState(store, input.conversationId);
|
|
67335
|
+
}
|
|
67336
|
+
await deleteClaudeSessionForConversation(store, input.conversationId);
|
|
67337
|
+
await langgraphCheckpointer.deleteThread(input.conversationId);
|
|
65625
67338
|
});
|
|
65626
67339
|
},
|
|
65627
67340
|
async updateConversation(input) {
|
|
@@ -65657,14 +67370,49 @@ function createAgentMemory(store, options = {}) {
|
|
|
65657
67370
|
}));
|
|
65658
67371
|
},
|
|
65659
67372
|
openaiSession(sessionId, sessionOptions = {}) {
|
|
67373
|
+
const boundSessionId = sessionId ?? options.conversationId;
|
|
67374
|
+
if (!boundSessionId) {
|
|
67375
|
+
throw new MemoryValidationError(
|
|
67376
|
+
"openaiSession requires a sessionId or bound conversationId."
|
|
67377
|
+
);
|
|
67378
|
+
}
|
|
65660
67379
|
const maxItems = sessionOptions.maxItems ?? MAX_LIMIT;
|
|
65661
67380
|
return createOpenAISession(
|
|
65662
67381
|
memory,
|
|
65663
|
-
|
|
67382
|
+
boundSessionId,
|
|
65664
67383
|
maxItems,
|
|
65665
67384
|
appendMessagesInternal
|
|
65666
67385
|
);
|
|
65667
67386
|
},
|
|
67387
|
+
async claudeSessionBinding(conversationId) {
|
|
67388
|
+
const resolvedConversationId = conversationId ?? options.conversationId;
|
|
67389
|
+
if (!resolvedConversationId) {
|
|
67390
|
+
throw new MemoryValidationError(
|
|
67391
|
+
"claudeSessionBinding requires a conversationId or bound conversationId."
|
|
67392
|
+
);
|
|
67393
|
+
}
|
|
67394
|
+
validateConversationId(resolvedConversationId);
|
|
67395
|
+
return wrapStorage(async () => {
|
|
67396
|
+
const mappingKey = claudeSessionMappingKey(resolvedConversationId);
|
|
67397
|
+
const existing = await store.get(
|
|
67398
|
+
mappingKey,
|
|
67399
|
+
{ consistency: "strong" }
|
|
67400
|
+
);
|
|
67401
|
+
if (typeof existing === "string" && existing) {
|
|
67402
|
+
return existing;
|
|
67403
|
+
}
|
|
67404
|
+
if (isPlainObject(existing) && (typeof existing.sessionId === "string" || typeof existing.session_id === "string") && (existing.sessionId || existing.session_id)) {
|
|
67405
|
+
return String(existing.sessionId || existing.session_id);
|
|
67406
|
+
}
|
|
67407
|
+
const sessionId = normalizeClaudeUuid(resolvedConversationId) ?? randomUUID();
|
|
67408
|
+
const binding = {
|
|
67409
|
+
conversationId: resolvedConversationId,
|
|
67410
|
+
sessionId
|
|
67411
|
+
};
|
|
67412
|
+
await store.set(mappingKey, binding);
|
|
67413
|
+
return sessionId;
|
|
67414
|
+
});
|
|
67415
|
+
},
|
|
65668
67416
|
claudeSessionStore() {
|
|
65669
67417
|
if (!claudeStoreCache) {
|
|
65670
67418
|
claudeStoreCache = createClaudeSessionStore(store);
|
|
@@ -65672,7 +67420,8 @@ function createAgentMemory(store, options = {}) {
|
|
|
65672
67420
|
return claudeStoreCache;
|
|
65673
67421
|
},
|
|
65674
67422
|
langgraphCheckpointer,
|
|
65675
|
-
langgraphStore
|
|
67423
|
+
langgraphStore,
|
|
67424
|
+
state
|
|
65676
67425
|
};
|
|
65677
67426
|
return memory;
|
|
65678
67427
|
}
|
|
@@ -66353,6 +68102,7 @@ function createAgentRuntime(options) {
|
|
|
66353
68102
|
env,
|
|
66354
68103
|
store: createAgentMemory(createLazyStore(resolveMemoryStore), {
|
|
66355
68104
|
runId: run_id,
|
|
68105
|
+
conversationId: conversation_id,
|
|
66356
68106
|
maxMessagesPerConversation: (_a3 = defaults2 == null ? void 0 : defaults2.memoryQuota) == null ? void 0 : _a3.maxMessagesPerConversation
|
|
66357
68107
|
}),
|
|
66358
68108
|
agents: {
|