@isdk/ai-tool 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-FLVJ4R53.mjs +1 -0
- package/dist/funcs.js +1 -1
- package/dist/funcs.mjs +1 -1
- package/dist/index.d.mts +35 -3
- package/dist/index.d.ts +35 -3
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/docs/classes/CancelableAbility.md +20 -20
- package/docs/classes/ClientTools.md +54 -54
- package/docs/classes/EventClient.md +76 -76
- package/docs/classes/EventServer.md +78 -78
- package/docs/classes/EventToolFunc.md +46 -46
- package/docs/classes/FStringPromptTemplate.md +18 -18
- package/docs/classes/FewShotPromptTemplate.md +22 -22
- package/docs/classes/GolangPromptTemplate.md +18 -18
- package/docs/classes/HFEnvironment.md +9 -9
- package/docs/classes/HFInterpreter.md +4 -4
- package/docs/classes/HFTemplate.md +4 -4
- package/docs/classes/HfPromptTemplate.md +18 -18
- package/docs/classes/IntSet.md +11 -11
- package/docs/classes/PromptExampleSelector.md +8 -8
- package/docs/classes/PromptTemplate.md +17 -17
- package/docs/classes/ReadableStreamError.md +1 -1
- package/docs/classes/ResClientTools.md +61 -61
- package/docs/classes/ResServerTools.md +62 -62
- package/docs/classes/SSEChannel.md +14 -14
- package/docs/classes/Semaphore.md +8 -8
- package/docs/classes/ServerTools.md +50 -50
- package/docs/classes/TaskAbortController.md +7 -7
- package/docs/classes/ToolFunc.md +43 -43
- package/docs/enumerations/AsyncFeatureBits.md +3 -3
- package/docs/enumerations/AsyncFeatures.md +3 -3
- package/docs/enumerations/XXHashAlgorithm.md +2 -2
- package/docs/functions/AIArgProcessor.md +1 -1
- package/docs/functions/AIStream.md +1 -1
- package/docs/functions/ChoiceArgProcessor.md +1 -1
- package/docs/functions/RateLimit.md +1 -1
- package/docs/functions/TemplateArgProcessor.md +1 -1
- package/docs/functions/backendEventable.md +1 -1
- package/docs/functions/countRegexMatches.md +1 -1
- package/docs/functions/createCallbacksTransformer.md +1 -1
- package/docs/functions/createEmptyReadableStream.md +1 -1
- package/docs/functions/createEndWithRepetitionDetector.md +1 -1
- package/docs/functions/createEventStreamTransformer.md +1 -1
- package/docs/functions/createHfValueFunc.md +1 -1
- package/docs/functions/createLRUCache.md +1 -1
- package/docs/functions/dateToText.md +1 -1
- package/docs/functions/expandEnv.md +1 -1
- package/docs/functions/expandObjEnv.md +1 -1
- package/docs/functions/extNameLevel.md +1 -1
- package/docs/functions/fileIsExists.md +1 -1
- package/docs/functions/filenameReservedRegex.md +1 -1
- package/docs/functions/filterValidFnScope.md +1 -1
- package/docs/functions/findPort.md +1 -1
- package/docs/functions/getAllEnumKeys.md +1 -1
- package/docs/functions/getConfigFileNames.md +1 -1
- package/docs/functions/getConfigs.md +1 -1
- package/docs/functions/getKeysPath.md +1 -1
- package/docs/functions/getMultiLevelExtname.md +1 -1
- package/docs/functions/getPackageDir.md +1 -1
- package/docs/functions/getRealFilepath.md +1 -1
- package/docs/functions/getResponseErrorReadableStream.md +1 -1
- package/docs/functions/hasDirectoryIn.md +38 -0
- package/docs/functions/hfParse.md +1 -1
- package/docs/functions/hfTokenize.md +1 -1
- package/docs/functions/interpolateEnv.md +1 -1
- package/docs/functions/interpolateFString.md +1 -1
- package/docs/functions/interpolateGolangTemplate.md +1 -1
- package/docs/functions/isModelNameMatched.md +1 -1
- package/docs/functions/isRegExp.md +21 -0
- package/docs/functions/isSubdirectory.md +39 -0
- package/docs/functions/isValidFilename.md +1 -1
- package/docs/functions/isValidFilepath.md +1 -1
- package/docs/functions/isWebStream.md +1 -1
- package/docs/functions/jsonFilterToWhere.md +1 -1
- package/docs/functions/jsonToMarkdownStr.md +1 -1
- package/docs/functions/loadFileFromPaths.md +1 -1
- package/docs/functions/loadTextFromPaths.md +1 -1
- package/docs/functions/lrucache.md +1 -1
- package/docs/functions/makeToolFuncCancelable.md +1 -1
- package/docs/functions/matchUrlProtocol.md +1 -1
- package/docs/functions/memoize.md +1 -1
- package/docs/functions/messagesToText.md +1 -1
- package/docs/functions/paramsSizeToScaleStr.md +1 -1
- package/docs/functions/parseCommand.md +1 -1
- package/docs/functions/parseFString.md +1 -1
- package/docs/functions/parseJsJson.md +1 -1
- package/docs/functions/parseObjectArgInfo.md +1 -1
- package/docs/functions/parseObjectArgumentInfos.md +1 -1
- package/docs/functions/parseObjectArguments.md +1 -1
- package/docs/functions/parseObjectArgumentsAsArgInfos.md +1 -1
- package/docs/functions/parseYaml.md +1 -1
- package/docs/functions/quoteStr.md +1 -1
- package/docs/functions/reControlCharsRegex.md +1 -1
- package/docs/functions/readFilenamesRecursiveSync.md +1 -1
- package/docs/functions/readableFromAsyncIterable.md +1 -1
- package/docs/functions/registerCoreTools.md +1 -1
- package/docs/functions/registerYamlTag.md +1 -1
- package/docs/functions/sanitizeFilename.md +1 -1
- package/docs/functions/sanitizeFilepath.md +1 -1
- package/docs/functions/saveConfigFile.md +1 -1
- package/docs/functions/scaleStrToParamsSize.md +1 -1
- package/docs/functions/simplifyObjectArguments.md +1 -1
- package/docs/functions/sortedValues.md +1 -1
- package/docs/functions/splitSentence.md +1 -1
- package/docs/functions/stringifyYaml.md +6 -34
- package/docs/functions/textToDate.md +1 -1
- package/docs/functions/toDateTime.md +1 -1
- package/docs/functions/toRegExp.md +34 -0
- package/docs/functions/trimStartOfStreamHelper.md +1 -1
- package/docs/functions/truncTo.md +1 -1
- package/docs/functions/uuid.md +1 -1
- package/docs/functions/wait.md +1 -1
- package/docs/functions/xxhash.md +1 -1
- package/docs/functions/xxhash32.md +1 -1
- package/docs/functions/xxhash64.md +1 -1
- package/docs/functions/xxhashAsStr.md +1 -1
- package/docs/globals.md +4 -0
- package/docs/interfaces/AIChatAssistantMessageParam.md +6 -6
- package/docs/interfaces/AIChatContentPartImage.md +2 -2
- package/docs/interfaces/AIChatContentPartText.md +2 -2
- package/docs/interfaces/AIChatMessageParamBase.md +1 -1
- package/docs/interfaces/AIChatMessageToolCall.md +3 -3
- package/docs/interfaces/AIChatSystemMessageParam.md +3 -3
- package/docs/interfaces/AIChatToolMessageParam.md +4 -4
- package/docs/interfaces/AIChatUserMessageParam.md +7 -7
- package/docs/interfaces/AIChoiceConfig.md +7 -7
- package/docs/interfaces/AIResult.md +10 -6
- package/docs/interfaces/AIStreamParser.md +1 -1
- package/docs/interfaces/AIStreamParserOptions.md +1 -1
- package/docs/interfaces/BaseFunc.md +9 -9
- package/docs/interfaces/BaseFuncItem.md +8 -8
- package/docs/interfaces/CancelableAbilityOptions.md +2 -2
- package/docs/interfaces/ClientFuncItem.md +11 -11
- package/docs/interfaces/DotenvExpandOptions.md +3 -3
- package/docs/interfaces/DotenvExpandOutput.md +2 -2
- package/docs/interfaces/EventClientFuncParams.md +4 -4
- package/docs/interfaces/EventServerFuncParams.md +5 -5
- package/docs/interfaces/FewShotPromptTemplateOptions.md +11 -11
- package/docs/interfaces/FuncItem.md +9 -9
- package/docs/interfaces/FuncParam.md +6 -6
- package/docs/interfaces/ParseObjectArgumentOptions.md +5 -5
- package/docs/interfaces/PromptExampleSelectorOptions.md +2 -2
- package/docs/interfaces/PromptTemplateOptions.md +6 -6
- package/docs/interfaces/RemoteFuncItem.md +11 -11
- package/docs/interfaces/ResClientFuncParams.md +2 -2
- package/docs/interfaces/ResServerFuncParams.md +5 -5
- package/docs/interfaces/SanitizeFilenameOptions.md +2 -2
- package/docs/interfaces/ServerFuncItem.md +12 -12
- package/docs/interfaces/ServerFuncParams.md +2 -2
- package/docs/interfaces/StreamCallbacksAndOptions.md +4 -4
- package/docs/interfaces/TaskPromise.md +1 -1
- package/docs/interfaces/ToolFuncPackage.md +3 -3
- package/docs/type-aliases/AIChatContentPart.md +1 -1
- package/docs/type-aliases/AIChatMessageParam.md +1 -1
- package/docs/type-aliases/AIChatRole.md +1 -1
- package/docs/type-aliases/AIMessageType.md +1 -1
- package/docs/type-aliases/AIModelNameRule.md +1 -1
- package/docs/type-aliases/AIModelNameRuleFn.md +1 -1
- package/docs/type-aliases/AIModelNameRules.md +1 -1
- package/docs/type-aliases/AITextGenerationFinishReason.md +1 -1
- package/docs/type-aliases/ActionName.md +1 -1
- package/docs/type-aliases/AsyncTaskId.md +1 -1
- package/docs/type-aliases/EventErrorListenerFn.md +1 -1
- package/docs/type-aliases/EventListenerFn.md +1 -1
- package/docs/type-aliases/FStringPromptTemplateNode.md +1 -1
- package/docs/type-aliases/FuncParamType.md +1 -1
- package/docs/type-aliases/PromptExamples.md +1 -1
- package/docs/type-aliases/PromptTemplateType.md +1 -1
- package/docs/type-aliases/PromptType.md +1 -1
- package/docs/type-aliases/TFunc.md +1 -1
- package/docs/variables/AIChatRoles.md +1 -1
- package/docs/variables/AIMessageTypes.md +1 -1
- package/docs/variables/AITextGenerationFinishReasons.md +2 -2
- package/docs/variables/ActionNames.md +1 -1
- package/docs/variables/ClientToolFuncSchema.md +1 -1
- package/docs/variables/DefaultAsyncSemaphoreCapacity.md +1 -1
- package/docs/variables/EventBusName.md +1 -1
- package/docs/variables/EventName.md +1 -1
- package/docs/variables/FilenameReservedRegex.md +1 -1
- package/docs/variables/HFBuiltins.md +1 -1
- package/docs/variables/PASSING_SCORE.md +1 -1
- package/docs/variables/PromptTemplateTypes.md +1 -1
- package/docs/variables/PromptTypes.md +1 -1
- package/docs/variables/RStreamErrCode.md +1 -1
- package/docs/variables/RemoteToolFuncSchema.md +1 -1
- package/docs/variables/ResponseRStreamErrCode.md +1 -1
- package/docs/variables/SSEChannelAlreadyClosedErrCode.md +1 -1
- package/docs/variables/ServerToolFuncSchema.md +1 -1
- package/docs/variables/ToolAsyncCancelableBit.md +1 -1
- package/docs/variables/ToolAsyncMultiTaskBit.md +1 -1
- package/docs/variables/ToolAsyncPriorityBit.md +1 -1
- package/docs/variables/ToolFuncSchema.md +1 -1
- package/docs/variables/WindowsReservedNameRegex.md +1 -1
- package/docs/variables/base32768.md +1 -1
- package/docs/variables/defaultTemplateFormat.md +1 -1
- package/docs/variables/event.md +1 -1
- package/docs/variables/eventClient.md +1 -1
- package/docs/variables/eventServer.md +1 -1
- package/docs/variables/lrucache.md +1 -1
- package/package.json +1 -1
- package/dist/chunk-TOUPOZHH.mjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{EventEmitter as t}from"events-ex";import{AdvancePropertyManager as e}from"property-manager";import{_createFunction as n}from"util-ex";import{AbortError as r,AbortErrorCode as s,AlreadyExistsError as i,AlreadyExistsErrorCode as o,BaseError as a,CommonError as c,createError as u,ErrorCode as f,InternalErrorCode as l,NotFoundErrorCode as h,NotFoundError as p,NotImplementedErrorCode as w,NotImplementationError as d,throwError as m}from"@isdk/common-error";import{createAbilityInjector as y}from"custom-ability";import{toRegExp as b}from"util-ex";var g=.618,v=["get","post","put","delete","patch","list","res"],x={apiRoot:{type:"string",get(){return this._apiRoot??this.constructor.apiRoot},set(t){this._apiRoot=t}},action:{type:"string",assign:(t,e,n,r,s)=>t||"post"},fetchOptions:{type:"object"},allowExportFunc:{type:"boolean"}};import{format as E,parse as $,parseISO as k}from"date-fns";import{formatISO as S,parseISO as O,toDate as j}from"date-fns";var A="MMMM d, y 'at' h:m:s b 'GMT'x";function N(t){let e;try{"string"==typeof t?e=k(t):"number"==typeof t?e=new Date(t):t instanceof Date&&(e=t)}catch(t){console.error(t)}return e}function C(t,e=A){return $(t,e,new Date)}function M(t,e=A){return E(t,e)}var T=["stop","length","content_filter","tool_calls","function_call","abort","error","other",null],I=["human","ai","generic","system","tool"],F=["user","assistant","system","tool","tool_calls"];function P(t){let e="";for(const n of t)if(n.content){e+=n.role.toLowerCase()+":";let t=n.createdAt;if(t){const n=N(t);n&&(e+=" ["+M(n)+"]")}e+=" "+n.content+"\n"}return e}var V=["chat","char","plan"],U=["internal","hf","fill"];import{BaseFactory as R}from"custom-factory";var B="default",_=class t extends R{static from(t,e){return new this(t,e)}static async format(t){return new this(t).format()}static async formatIf(t){if(this.isTemplate(t)){return new this(t).format()}}static isTemplate(e){if(e?.template){const n=e.templateFormat||B,r=t.get(n);return r.isTemplate!==t.isTemplate&&r.isTemplate(e)}}filterData(t){return Array.isArray(this.inputVariables)&&(t=Object.fromEntries(Object.entries(t).filter((([t])=>this.inputVariables.includes(t))))),t}constructor(e,n){"string"==typeof e?(n||(n={}),n.template=e):e&&(e=(n=e).template);const{templateFormat:r}=n||{};if(super(n),this.constructor===t){const e=t.get(r||B);if(e)return Reflect.construct(e,arguments);throw new c(`Prompt template type ${r} not found`,"PromptTemplate",f.InvalidArgument)}}_initialize(t){throw new d("Not implemented","PromptTemplate")}initialize(e){this.constructor!==t&&(Object.assign(this,this.toJSON(e)),e?.ignoreInitialize||this._initialize(e))}_format(t){throw new d("Not implemented","PromptTemplate")}async format(e){const n=this.data;if(e={...n,...e},n)for(const[t,r]of Object.entries(n))e[t]===r&&"function"==typeof r&&(delete e[t],e[t]=await r(e));for(const[n,r]of Object.entries(e))r instanceof t&&(delete e[n],e[n]=await r.format(e));return this._format(e)}partial(t){t={...this.data,...t};const e=this.toJSON();return e.data=t,e.ignoreInitialize=!0,new this.constructor(e)}toJSON(e=this){let n={template:e.template,data:e.data,inputVariables:e.inputVariables,compiledTemplate:e.compiledTemplate};var r;return e.templateFormat&&t.get(e.templateFormat)!==this.constructor&&(n.templateFormat=e.templateFormat),r=n,n=Object.keys(r).reduce(((t,e)=>{const n=r[e];return null!=n&&(t[e]=n),t}),{}),n}};function L(t){return(e=t)&&"function"==typeof e[Symbol.iterator]?async function*(t){const e=t[Symbol.iterator]();let n;try{for(;;){n=!1;const t=e.next();if(n=!0,t.done)return n=!1,await t.value;yield await t.value}}finally{n&&await(e.return?.().value)}}(t):t;var e}var z=!1;(async function(){let t=!1,e=!1;try{for await(const e of function*(){try{yield Promise.reject()}finally{t=!0}}())throw new Error("impossible")}catch{e=!0}return e&&t})().then((t=>{z=t}));var q=class{constructor(t,e){this.initialize(t,e)}initialize(t,e){const n=e?.maxLength;var r;n>0&&(this.maxLength=n),void 0!==e?.threshold&&(!0===e.threshold?this.threshold=.5:!1!==e.threshold&&(this.threshold=e.threshold)),this.examples=(r=t,z?r:L(r))}selectExample(t,e){if(void 0===e||e<=this.threshold)return t}async*selectExamples(t=this.examples){let e=this.maxLength||1/0;for await(const n of t){const t="number"==typeof this.threshold?Math.random():void 0;if(this.selectExample(n,t)){if(--e<0)break;yield n}}}async*[Symbol.asyncIterator](){yield*this.selectExamples()}},J=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",BooleanLiteral:"BooleanLiteral",StringLiteral:"StringLiteral",Identifier:"Identifier",Equals:"Equals",OpenParen:"OpenParen",CloseParen:"CloseParen",OpenStatement:"OpenStatement",CloseStatement:"CloseStatement",OpenExpression:"OpenExpression",CloseExpression:"CloseExpression",OpenSquareBracket:"OpenSquareBracket",CloseSquareBracket:"CloseSquareBracket",OpenCurlyBracket:"OpenCurlyBracket",CloseCurlyBracket:"CloseCurlyBracket",Comma:"Comma",Dot:"Dot",Colon:"Colon",Pipe:"Pipe",CallOperator:"CallOperator",AdditiveBinaryOperator:"AdditiveBinaryOperator",MultiplicativeBinaryOperator:"MultiplicativeBinaryOperator",ComparisonBinaryOperator:"ComparisonBinaryOperator",UnaryOperator:"UnaryOperator",Set:"Set",If:"If",For:"For",In:"In",Is:"Is",NotIn:"NotIn",Else:"Else",EndIf:"EndIf",ElseIf:"ElseIf",EndFor:"EndFor",And:"And",Or:"Or",Not:"UnaryOperator",Macro:"Macro",EndMacro:"EndMacro"}),D=Object.freeze({set:J.Set,for:J.For,in:J.In,is:J.Is,if:J.If,else:J.Else,endif:J.EndIf,elif:J.ElseIf,endfor:J.EndFor,and:J.And,or:J.Or,not:J.Not,"not in":J.NotIn,macro:J.Macro,endmacro:J.EndMacro,true:J.BooleanLiteral,false:J.BooleanLiteral,True:J.BooleanLiteral,False:J.BooleanLiteral}),W=class{constructor(t,e){this.value=t,this.type=e}};function K(t){return/\w/.test(t)}function Z(t){return/[0-9]/.test(t)}var G=[["{%",J.OpenStatement],["%}",J.CloseStatement],["{{",J.OpenExpression],["}}",J.CloseExpression],["(",J.OpenParen],[")",J.CloseParen],["{",J.OpenCurlyBracket],["}",J.CloseCurlyBracket],["[",J.OpenSquareBracket],["]",J.CloseSquareBracket],[",",J.Comma],[".",J.Dot],[":",J.Colon],["|",J.Pipe],["<=",J.ComparisonBinaryOperator],[">=",J.ComparisonBinaryOperator],["==",J.ComparisonBinaryOperator],["!=",J.ComparisonBinaryOperator],["<",J.ComparisonBinaryOperator],[">",J.ComparisonBinaryOperator],["+",J.AdditiveBinaryOperator],["-",J.AdditiveBinaryOperator],["*",J.MultiplicativeBinaryOperator],["/",J.MultiplicativeBinaryOperator],["%",J.MultiplicativeBinaryOperator],["=",J.Equals]],H=new Map([["n","\n"],["t","\t"],["r","\r"],["b","\b"],["f","\f"],["v","\v"],["'","'"],['"','"'],["\\","\\"]]);function X(t,e={}){const n=[],r=function(t,e={}){return t.endsWith("\n")&&(t=t.slice(0,-1)),t=t.replace(/{#.*?#}/gs,"{##}"),e.lstrip_blocks&&(t=t.replace(/^[ \t]*({[#%])/gm,"$1")),e.trim_blocks&&(t=t.replace(/([#%]})\n/g,"$1")),t.replace(/{##}/g,"").replace(/-%}\s*/g,"%}").replace(/\s*{%-/g,"{%").replace(/-}}\s*/g,"}}").replace(/\s*{{-/g,"{{")}(t,e);let s=0;const i=t=>{let e="";for(;t(r[s]);)if("\\"!==r[s]){if(e+=r[s++],s>=r.length)throw new SyntaxError("Unexpected end of input")}else{if(++s,s>=r.length)throw new SyntaxError("Unexpected end of input");const t=r[s++],n=H.get(t);if(void 0===n)throw new SyntaxError(`Unexpected escaped character: ${t}`);e+=n}return e};t:for(;s<r.length;){const t=n.at(-1)?.type;if(void 0===t||t===J.CloseStatement||t===J.CloseExpression){let t="";for(;s<r.length&&("{"!==r[s]||"%"!==r[s+1]&&"{"!==r[s+1]);)t+=r[s++];if(t.length>0){n.push(new W(t,J.Text));continue}}i((t=>/\s/.test(t)));const e=r[s];if("-"===e||"+"===e){const t=n.at(-1)?.type;if(t===J.Text||void 0===t)throw new SyntaxError(`Unexpected character: ${e}`);switch(t){case J.Identifier:case J.NumericLiteral:case J.BooleanLiteral:case J.StringLiteral:case J.CloseParen:case J.CloseSquareBracket:break;default:{++s;const t=i(Z);n.push(new W(`${e}${t}`,t.length>0?J.NumericLiteral:J.UnaryOperator));continue}}}for(const[t,e]of G){if(r.slice(s,s+t.length)===t){n.push(new W(t,e)),s+=t.length;continue t}}if("'"!==e&&'"'!==e)if(Z(e)){const t=i(Z);n.push(new W(t,J.NumericLiteral))}else{if(!K(e))throw new SyntaxError(`Unexpected character: ${e}`);{const t=i(K),e=Object.hasOwn(D,t)?D[t]:J.Identifier;e===J.In&&n.at(-1)?.type===J.Not?(n.pop(),n.push(new W("not in",J.NotIn))):n.push(new W(t,e))}}else{++s;const t=i((t=>t!==e));n.push(new W(t,J.StringLiteral)),++s}}return n}var Q=class{constructor(){this.type="Statement"}},Y=class extends Q{constructor(t){super(),this.body=t,this.type="Program"}},tt=class extends Q{constructor(t,e,n){super(),this.test=t,this.body=e,this.alternate=n,this.type="If"}},et=class extends Q{constructor(t,e,n,r){super(),this.loopvar=t,this.iterable=e,this.body=n,this.defaultBlock=r,this.type="For"}},nt=class extends Q{constructor(t,e){super(),this.assignee=t,this.value=e,this.type="Set"}},rt=class extends Q{constructor(t,e,n){super(),this.name=t,this.args=e,this.body=n,this.type="Macro"}},st=class extends Q{constructor(){super(...arguments),this.type="Expression"}},it=class extends st{constructor(t,e,n){super(),this.object=t,this.property=e,this.computed=n,this.type="MemberExpression"}},ot=class extends st{constructor(t,e){super(),this.callee=t,this.args=e,this.type="CallExpression"}},at=class extends st{constructor(t){super(),this.value=t,this.type="Identifier"}},ct=class extends st{constructor(t){super(),this.value=t,this.type="Literal"}},ut=class extends ct{constructor(){super(...arguments),this.type="NumericLiteral"}},ft=class extends ct{constructor(){super(...arguments),this.type="StringLiteral"}},lt=class extends ct{constructor(){super(...arguments),this.type="BooleanLiteral"}},ht=class extends ct{constructor(){super(...arguments),this.type="ArrayLiteral"}},pt=class extends ct{constructor(){super(...arguments),this.type="TupleLiteral"}},wt=class extends ct{constructor(){super(...arguments),this.type="ObjectLiteral"}},dt=class extends st{constructor(t,e,n){super(),this.operator=t,this.left=e,this.right=n,this.type="BinaryExpression"}},mt=class extends st{constructor(t,e){super(),this.operand=t,this.filter=e,this.type="FilterExpression"}},yt=class extends st{constructor(t,e){super(),this.iterable=t,this.test=e,this.type="SelectExpression"}},bt=class extends st{constructor(t,e,n){super(),this.operand=t,this.negate=e,this.test=n,this.type="TestExpression"}},gt=class extends st{constructor(t,e){super(),this.operator=t,this.argument=e,this.type="UnaryExpression"}},vt=class extends st{constructor(t=void 0,e=void 0,n=void 0){super(),this.start=t,this.stop=e,this.step=n,this.type="SliceExpression"}},xt=class extends st{constructor(t,e){super(),this.key=t,this.value=e,this.type="KeywordArgumentExpression"}};function Et(t){const e=new Y([]);let n=0;function r(e,r){const s=t[n++];if(!s||s.type!==e)throw new Error(`Parser Error: ${r}. ${s.type} !== ${e}.`);return s}function s(){let e;switch(t[n].type){case J.Text:e=new ft(r(J.Text,"Expected text token").value);break;case J.OpenStatement:e=function(){let e;switch(r(J.OpenStatement,"Expected opening statement token"),t[n].type){case J.Set:++n,e=a(),r(J.CloseStatement,"Expected closing statement token");break;case J.If:++n,e=c(),r(J.OpenStatement,"Expected {% token"),r(J.EndIf,"Expected endif token"),r(J.CloseStatement,"Expected %} token");break;case J.Macro:++n,e=function(){const t=x();if("Identifier"!==t.type)throw new SyntaxError("Expected identifier following macro statement");const e=y();r(J.CloseStatement,"Expected closing statement token");const n=[];for(;i(J.OpenStatement,J.EndMacro);)n.push(s());return new rt(t,e,n)}(),r(J.OpenStatement,"Expected {% token"),r(J.EndMacro,"Expected endmacro token"),r(J.CloseStatement,"Expected %} token");break;case J.For:++n,e=function(){const t=u(!0);if(!(t instanceof at||t instanceof pt))throw new SyntaxError(`Expected identifier/tuple for the loop variable, got ${t.type} instead`);r(J.In,"Expected `in` keyword following loop variable");const e=f();r(J.CloseStatement,"Expected closing statement token");const a=[];for(;i(J.OpenStatement,J.EndFor)&&i(J.OpenStatement,J.Else);)a.push(s());const c=[];if(o(J.OpenStatement,J.Else))for(++n,++n,r(J.CloseStatement,"Expected closing statement token");i(J.OpenStatement,J.EndFor);)c.push(s());return new et(t,e,a,c)}(),r(J.OpenStatement,"Expected {% token"),r(J.EndFor,"Expected endfor token"),r(J.CloseStatement,"Expected %} token");break;default:throw new SyntaxError(`Unknown statement type: ${t[n].type} ${t[n].value}`)}return e}(),e.isStatement=!0;break;case J.OpenExpression:e=function(){r(J.OpenExpression,"Expected opening expression token");const t=f();return r(J.CloseExpression,"Expected closing expression token"),t}(),e.isStatement=!0;break;default:throw new SyntaxError(`Unexpected token type: ${t[n].type}`)}return e}function i(...e){return n+e.length<=t.length&&e.some(((e,r)=>e!==t[n+r].type))}function o(...e){return n+e.length<=t.length&&e.every(((e,r)=>e===t[n+r].type))}function a(){const t=f();if(o(J.Equals)){++n;const e=a();return new nt(t,e)}return t}function c(){const e=f();r(J.CloseStatement,"Expected closing statement token");const i=[],a=[];for(;t[n]?.type!==J.OpenStatement||t[n+1]?.type!==J.ElseIf&&t[n+1]?.type!==J.Else&&t[n+1]?.type!==J.EndIf;)i.push(s());if(t[n]?.type===J.OpenStatement&&t[n+1]?.type!==J.EndIf)if(++n,o(J.ElseIf))r(J.ElseIf,"Expected elseif token"),a.push(c());else for(r(J.Else,"Expected else token"),r(J.CloseStatement,"Expected closing statement token");t[n]?.type!==J.OpenStatement||t[n+1]?.type!==J.EndIf;)a.push(s());return new tt(e,i,a)}function u(t=!1){const e=t?x:f,r=[e()],s=o(J.Comma);for(;s&&(++n,r.push(e()),o(J.Comma)););return s?new pt(r):r[0]}function f(){return function(){const t=l();if(o(J.If)){++n;const e=l();if(o(J.Else)){++n;const r=l();return new tt(e,[t],[r])}return new yt(t,e)}return t}()}function l(){let e=h();for(;o(J.Or);){const r=t[n];++n;const s=h();e=new dt(r,e,s)}return e}function h(){let e=p();for(;o(J.And);){const r=t[n];++n;const s=p();e=new dt(r,e,s)}return e}function p(){let e;for(;o(J.Not);){const r=t[n];++n;const s=p();e=new gt(r,s)}return e??function(){let e=w();for(;o(J.ComparisonBinaryOperator)||o(J.In)||o(J.NotIn);){const r=t[n];++n;const s=w();e=new dt(r,e,s)}return e}()}function w(){let e=g();for(;o(J.AdditiveBinaryOperator);){const r=t[n];++n;const s=g();e=new dt(r,e,s)}return e}function d(){const e=function(){let e=x();for(;o(J.Dot)||o(J.OpenSquareBracket);){const s=t[n];let i;++n;const o=s.type!==J.Dot;if(o)i=b(),r(J.CloseSquareBracket,"Expected closing square bracket");else if(i=x(),"Identifier"!==i.type)throw new SyntaxError("Expected identifier following dot operator");e=new it(e,i,o)}return e}();return o(J.OpenParen)?m(e):e}function m(t){let e=new ot(t,y());return o(J.OpenParen)&&(e=m(e)),e}function y(){r(J.OpenParen,"Expected opening parenthesis for arguments list");const t=function(){const t=[];for(;!o(J.CloseParen);){let e=f();if(o(J.Equals)){if(++n,!(e instanceof at))throw new SyntaxError("Expected identifier for keyword argument");const t=f();e=new xt(e,t)}t.push(e),o(J.Comma)&&++n}return t}();return r(J.CloseParen,"Expected closing parenthesis for arguments list"),t}function b(){const t=[];let e=!1;for(;!o(J.CloseSquareBracket);)o(J.Colon)?(t.push(void 0),++n,e=!0):(t.push(f()),o(J.Colon)&&(++n,e=!0));if(0===t.length)throw new SyntaxError("Expected at least one argument for member/slice expression");if(e){if(t.length>3)throw new SyntaxError("Expected 0-3 arguments for slice expression");return new vt(...t)}return t[0]}function g(){let e=v();for(;o(J.MultiplicativeBinaryOperator);){const r=t[n];++n;const s=v();e=new dt(r,e,s)}return e}function v(){let t=function(){let t=d();for(;o(J.Pipe);){++n;let e=x();if(!(e instanceof at))throw new SyntaxError("Expected identifier for the filter");o(J.OpenParen)&&(e=m(e)),t=new mt(t,e)}return t}();for(;o(J.Is);){++n;const e=o(J.Not);e&&++n;let r=x();if(r instanceof lt&&(r=new at(r.value.toString())),!(r instanceof at))throw new SyntaxError("Expected identifier for the test");t=new bt(t,e,r)}return t}function x(){const e=t[n];switch(e.type){case J.NumericLiteral:return++n,new ut(Number(e.value));case J.StringLiteral:return++n,new ft(e.value);case J.BooleanLiteral:return++n,new lt("true"===e.value.toLowerCase());case J.Identifier:return++n,new at(e.value);case J.OpenParen:{++n;const e=u();if(t[n].type!==J.CloseParen)throw new SyntaxError(`Expected closing parenthesis, got ${t[n].type} instead`);return++n,e}case J.OpenSquareBracket:{++n;const t=[];for(;!o(J.CloseSquareBracket);)t.push(f()),o(J.Comma)&&++n;return++n,new ht(t)}case J.OpenCurlyBracket:{++n;const t=new Map;for(;!o(J.CloseCurlyBracket);){const e=f();r(J.Colon,"Expected colon between key and value in object literal");const s=f();t.set(e,s),o(J.Comma)&&++n}return++n,new wt(t)}default:throw new SyntaxError(`Unexpected token: ${e.type}`)}}for(;n<t.length;)e.body.push(s());return e}function $t(t,e,n=1){void 0===e&&(e=t,t=0);const r=[];for(let s=t;s<e;s+=n)r.push(s);return r}function kt(t,e,n,r=1){const s=Math.sign(r);s>=0?(e=(e??=0)<0?Math.max(t.length+e,0):Math.min(e,t.length),n=(n??=t.length)<0?Math.max(t.length+n,0):Math.min(n,t.length)):(e=(e??=t.length-1)<0?Math.max(t.length+e,-1):Math.min(e,t.length-1),n=(n??=-1)<-1?Math.max(t.length+n,-1):Math.min(n,t.length-1));const i=[];for(let o=e;s*o<s*n;o+=r)i.push(t[o]);return i}function St(t){return t.replace(/\b\w/g,(t=>t.toUpperCase()))}var Ot=class{constructor(t=void 0){this.type="RuntimeValue",this.builtins=new Map,this.value=t}__bool__(){return new Nt(!!this.value)}toString(){return""+this.value}toJSON(){return this.value}},jt=class extends Ot{constructor(){super(...arguments),this.type="NumericValue"}},At=class t extends Ot{constructor(){super(...arguments),this.type="StringValue",this.builtins=new Map([["upper",new Ft((()=>new t(this.value.toUpperCase())))],["lower",new Ft((()=>new t(this.value.toLowerCase())))],["strip",new Ft((()=>new t(this.value.trim())))],["title",new Ft((()=>new t(St(this.value))))],["length",new jt(this.value.length)],["rstrip",new Ft((()=>new t(this.value.trimEnd())))],["lstrip",new Ft((()=>new t(this.value.trimStart())))]])}},Nt=class extends Ot{constructor(){super(...arguments),this.type="BooleanValue"}},Ct=class extends Ot{constructor(t,e){super(t),this.orgValue=e,this.type="ObjectValue",this.builtins=new Map([["get",new Ft((([t,e])=>{if(!(t instanceof At))throw new Error(`Object key must be a string: got ${t.type}`);return this.value.get(t.value)??e??new Pt}))],["items",new Ft((()=>new Tt(Array.from(this.value.entries()).map((([t,e])=>new Tt([new At(t),e]))))))]])}toString(){let t;return t=this.orgValue&&this.orgValue.toString!==Object.prototype.toString?this.orgValue.toString():JSON.stringify(Object.fromEntries(this.value.entries())),t}toJSON(){return this.orgValue?this.orgValue:Object.fromEntries(this.value.entries())}__bool__(){return new Nt(this.value.size>0)}},Mt=class extends Ct{constructor(){super(...arguments),this.type="KeywordArgumentsValue"}},Tt=class extends Ot{constructor(){super(...arguments),this.type="ArrayValue",this.builtins=new Map([["length",new jt(this.value.length)]])}__bool__(){return new Nt(this.value.length>0)}},It=class extends Tt{constructor(){super(...arguments),this.type="TupleValue"}},Ft=class extends Ot{constructor(){super(...arguments),this.type="FunctionValue"}},Pt=class extends Ot{constructor(){super(...arguments),this.type="NullValue"}},Vt=class extends Ot{constructor(){super(...arguments),this.type="UndefinedValue"}},Ut=class{constructor(t){this.parent=t,this.variables=new Map([["namespace",new Ft((t=>{if(0===t.length)return new Ct(new Map);if(1!==t.length||!(t[0]instanceof Ct))throw new Error("`namespace` expects either zero arguments or a single object argument");return t[0]}))]]),this.tests=new Map([["boolean",t=>"BooleanValue"===t.type],["callable",t=>t instanceof Ft],["odd",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "odd" to type: ${t.type}`);return t.value%2!=0}],["even",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "even" to type: ${t.type}`);return t.value%2==0}],["false",t=>"BooleanValue"===t.type&&!t.value],["true",t=>"BooleanValue"===t.type&&t.value],["string",t=>"StringValue"===t.type],["number",t=>"NumericValue"===t.type],["integer",t=>"NumericValue"===t.type&&Number.isInteger(t.value)],["iterable",t=>t instanceof Tt||t instanceof At],["lower",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toLowerCase()}],["upper",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toUpperCase()}],["none",t=>"NullValue"===t.type],["defined",t=>"UndefinedValue"!==t.type],["undefined",t=>"UndefinedValue"===t.type],["equalto",(t,e)=>t.value===e.value],["eq",(t,e)=>t.value===e.value]])}set(t,e){return this.declareVariable(t,Bt(e))}declareVariable(t,e){if(this.variables.has(t))throw new SyntaxError(`Variable already declared: ${t}`);return this.variables.set(t,e),e}setVariable(t,e){return this.variables.set(t,e),e}resolve(t){if(this.variables.has(t))return this;if(this.parent)return this.parent.resolve(t);throw new Error(`Unknown variable: ${t}`)}lookupVariable(t){try{return this.resolve(t).variables.get(t)??new Vt}catch{return new Vt}}},Rt=class{constructor(t){this.global=t??new Ut}run(t){return this.evaluate(t,this.global)}evaluateBinaryExpression(t,e){const n=this.evaluate(t.left,e);switch(t.operator.value){case"and":return n.__bool__().value?this.evaluate(t.right,e):n;case"or":return n.__bool__().value?n:this.evaluate(t.right,e)}const r=this.evaluate(t.right,e);switch(t.operator.value){case"==":return new Nt(n.value==r.value);case"!=":return new Nt(n.value!=r.value)}if(n instanceof Vt||r instanceof Vt)throw new Error("Cannot perform operation on undefined values");if(n instanceof Pt||r instanceof Pt)throw new Error("Cannot perform operation on null values");if(n instanceof jt&&r instanceof jt)switch(t.operator.value){case"+":return new jt(n.value+r.value);case"-":return new jt(n.value-r.value);case"*":return new jt(n.value*r.value);case"/":return new jt(n.value/r.value);case"%":return new jt(n.value%r.value);case"<":return new Nt(n.value<r.value);case">":return new Nt(n.value>r.value);case">=":return new Nt(n.value>=r.value);case"<=":return new Nt(n.value<=r.value)}else if(n instanceof Tt&&r instanceof Tt){if("+"===t.operator.value)return new Tt(n.value.concat(r.value))}else if(r instanceof Tt){const e=void 0!==r.value.find((t=>t.value===n.value));switch(t.operator.value){case"in":return new Nt(e);case"not in":return new Nt(!e)}}if((n instanceof At||r instanceof At)&&"+"===t.operator.value)return new At(n.toString()+r.toString());if(n instanceof At&&r instanceof At)switch(t.operator.value){case"in":return new Nt(r.value.includes(n.value));case"not in":return new Nt(!r.value.includes(n.value))}if(n instanceof At&&r instanceof Ct)switch(t.operator.value){case"in":return new Nt(r.value.has(n.value));case"not in":return new Nt(!r.value.has(n.value))}throw new SyntaxError(`Unknown operator "${t.operator.value}" between ${n.type} and ${r.type}`)}evaluateArguments(t,e){const n=[],r=new Map;for(const s of t)if("KeywordArgumentExpression"===s.type){const t=s;r.set(t.key.value,this.evaluate(t.value,e))}else{if(r.size>0)throw new Error("Positional arguments must come before keyword arguments");n.push(this.evaluate(s,e))}return[n,r]}evaluateFilterExpression(t,e){const n=this.evaluate(t.operand,e);if("Identifier"===t.filter.type){const r=t.filter,s=e.lookupVariable(r.value);if(s instanceof Ft)return s.value([n],e);if(n instanceof Tt)switch(r.value){case"list":return n;case"first":return n.value[0];case"last":return n.value[n.value.length-1];case"length":return new jt(n.value.length);case"reverse":return new Tt(n.value.reverse());case"sort":return new Tt(n.value.sort(((t,e)=>{if(t.type!==e.type)throw new Error(`Cannot compare different types: ${t.type} and ${e.type}`);switch(t.type){case"NumericValue":return t.value-e.value;case"StringValue":return t.value.localeCompare(e.value);default:throw new Error(`Cannot compare type: ${t.type}`)}})));default:throw new Error(`Unknown ArrayValue filter: ${r.value}`)}else if(n instanceof At)switch(r.value){case"length":return new jt(n.value.length);case"upper":return new At(n.value.toUpperCase());case"lower":return new At(n.value.toLowerCase());case"title":return new At(St(n.value));case"capitalize":return new At(n.value.charAt(0).toUpperCase()+n.value.slice(1));case"trim":return new At(n.value.trim());case"trimStart":return new At(n.value.trimStart());case"trimEnd":return new At(n.value.trimEnd());case"indent":return new At(n.value.split("\n").map(((t,e)=>0===e||0===t.length?t:" "+t)).join("\n"));case"string":return n;default:throw new Error(`Unknown StringValue filter: ${r.value}`)}else{if(n instanceof jt){if("abs"===r.value)return new jt(Math.abs(n.value));throw new Error(`Unknown NumericValue filter: ${r.value}`)}if(n instanceof Ct)switch(r.value){case"items":return new Tt(Array.from(n.value.entries()).map((([t,e])=>new Tt([new At(t),e]))));case"length":return new jt(n.value.size);case"string":return new At(n.toString());default:throw new Error(`Unknown ObjectValue filter: ${r.value}`)}}throw new Error(`Cannot apply filter "${r.value}" to type: ${n.type}`)}if("CallExpression"===t.filter.type){const r=t.filter;if("Identifier"!==r.callee.type)throw new Error(`Unknown filter: ${r.callee.type}`);const s=r.callee.value,i=e.lookupVariable(s);if(i instanceof Ft){const[t,s]=this.evaluateArguments(r.args,e);return s.size>0&&t.push(new Mt(s)),i.value([n,...t],e)}if(n instanceof Tt){switch(s){case"selectattr":{if(n.value.some((t=>!(t instanceof Ct))))throw new Error("`selectattr` can only be applied to array of objects");if(r.args.some((t=>"StringLiteral"!==t.type)))throw new Error("arguments of `selectattr` must be strings");const[t,s,i]=r.args.map((t=>this.evaluate(t,e)));let o;if(s){const t=e.tests.get(s.value);if(!t)throw new Error(`Unknown test: ${s.value}`);o=t}else o=(...t)=>t[0].__bool__().value;const a=n.value.filter((e=>{const n=e.value.get(t.value);return!!n&&o(n,i)}));return new Tt(a)}case"map":{const[,t]=this.evaluateArguments(r.args,e);if(t.has("attribute")){const e=t.get("attribute");if(!(e instanceof At))throw new Error("attribute must be a string");const r=t.get("default"),s=n.value.map((t=>{if(!(t instanceof Ct))throw new Error("items in map must be an object");return t.value.get(e.value)??r??new Vt}));return new Tt(s)}throw new Error("`map` expressions without `attribute` set are not currently supported.")}}throw new Error(`Unknown ArrayValue filter: ${s}`)}if(n instanceof At){if("indent"===s){const[t,s]=this.evaluateArguments(r.args,e),i=t.at(0)??s.get("width")??new jt(4);if(!(i instanceof jt))throw new Error("width must be a number");const o=t.at(1)??s.get("first")??new Nt(!1),a=t.at(2)??s.get("blank")??new Nt(!1),c=n.value.split("\n"),u=" ".repeat(i.value),f=c.map(((t,e)=>!o.value&&0===e||!a.value&&0===t.length?t:u+t));return new At(f.join("\n"))}throw new Error(`Unknown StringValue filter: ${s}`)}throw new Error(`Cannot apply filter "${s}" to type: ${n.type}`)}throw new Error(`Unknown filter: ${t.filter.type}`)}evaluateTestExpression(t,e){const n=this.evaluate(t.operand,e),r=e.tests.get(t.test.value);if(!r)throw new Error(`Unknown test: ${t.test.value}`);const s=r(n);return new Nt(t.negate?!s:s)}evaluateUnaryExpression(t,e){const n=this.evaluate(t.argument,e);if("not"===t.operator.value)return new Nt(!n.value);throw new SyntaxError(`Unknown operator: ${t.operator.value}`)}evalProgram(t,e){return this.evaluateBlock(t.body,e)}evaluateBlock(t,e){let n="";for(const r of t){const t=this.evaluate(r,e);"NullValue"!==t.type&&"UndefinedValue"!==t.type&&(n+=t)}return new At(n)}evaluateIdentifier(t,e){return e.lookupVariable(t.value)}evaluateCallExpression(t,e){const[n,r]=this.evaluateArguments(t.args,e);r.size>0&&n.push(new Mt(r));const s=this.evaluate(t.callee,e);if("FunctionValue"!==s.type)throw new Error(`Cannot call something that is not a function: got ${s.type}`);return s.value(n,e)}evaluateSliceExpression(t,e,n){if(!(t instanceof Tt||t instanceof At))throw new Error("Slice object must be an array or string");const r=this.evaluate(e.start,n),s=this.evaluate(e.stop,n),i=this.evaluate(e.step,n);if(!(r instanceof jt||r instanceof Vt))throw new Error("Slice start must be numeric or undefined");if(!(s instanceof jt||s instanceof Vt))throw new Error("Slice stop must be numeric or undefined");if(!(i instanceof jt||i instanceof Vt))throw new Error("Slice step must be numeric or undefined");return t instanceof Tt?new Tt(kt(t.value,r.value,s.value,i.value)):new At(kt(Array.from(t.value),r.value,s.value,i.value).join(""))}evaluateMemberExpression(t,e){const n=this.evaluate(t.object,e);let r,s;if(t.computed){if("SliceExpression"===t.property.type)return this.evaluateSliceExpression(n,t.property,e);r=this.evaluate(t.property,e)}else r=new At(t.property.value);if(n instanceof Ct){if(!(r instanceof At))throw new Error(`Cannot access property with non-string: got ${r.type}`);s=n.value.get(r.value)??n.builtins.get(r.value)}else if(n instanceof Tt||n instanceof At)if(r instanceof jt)s=n.value.at(r.value),n instanceof At&&(s=new At(n.value.at(r.value)));else{if(!(r instanceof At))throw new Error(`Cannot access property with non-string/non-number: got ${r.type}`);s=n.builtins.get(r.value)}else{if(!(r instanceof At))throw new Error(`Cannot access property with non-string: got ${r.type}`);s=n.builtins.get(r.value)}return s instanceof Ot?s:new Vt}evaluateSet(t,e){const n=this.evaluate(t.value,e);if("Identifier"===t.assignee.type){const r=t.assignee.value;e.setVariable(r,n)}else{if("MemberExpression"!==t.assignee.type)throw new Error(`Invalid LHS inside assignment expression: ${JSON.stringify(t.assignee)}`);{const r=t.assignee,s=this.evaluate(r.object,e);if(!(s instanceof Ct))throw new Error("Cannot assign to member of non-object");if("Identifier"!==r.property.type)throw new Error("Cannot assign to member with non-identifier property");s.value.set(r.property.value,n)}}return new Pt}evaluateIf(t,e){const n=this.evaluate(t.test,e);return this.evaluateBlock(n.__bool__().value?t.body:t.alternate,e)}evaluateFor(t,e){const n=new Ut(e);let r,s;if("SelectExpression"===t.iterable.type){const e=t.iterable;s=this.evaluate(e.iterable,n),r=e.test}else s=this.evaluate(t.iterable,n);if(!(s instanceof Tt))throw new Error(`Expected iterable type in for loop: got ${s.type}`);const i=[],o=[];for(let e=0;e<s.value.length;++e){const a=new Ut(n),c=s.value[e];let u;if("Identifier"===t.loopvar.type)u=e=>e.setVariable(t.loopvar.value,c);else{if("TupleLiteral"!==t.loopvar.type)throw new Error(`Invalid loop variable(s): ${t.loopvar.type}`);{const e=t.loopvar;if("ArrayValue"!==c.type)throw new Error(`Cannot unpack non-iterable type: ${c.type}`);const n=c;if(e.value.length!==n.value.length)throw new Error(`Too ${e.value.length>n.value.length?"few":"many"} items to unpack`);u=t=>{for(let r=0;r<e.value.length;++r){if("Identifier"!==e.value[r].type)throw new Error(`Cannot unpack non-identifier type: ${e.value[r].type}`);t.setVariable(e.value[r].value,n.value[r])}}}}if(r){u(a);if(!this.evaluate(r,a).__bool__().value)continue}i.push(c),o.push(u)}let a="",c=!0;for(let e=0;e<i.length;++e){const r=new Map([["index",new jt(e+1)],["index0",new jt(e)],["revindex",new jt(i.length-e)],["revindex0",new jt(i.length-e-1)],["first",new Nt(0===e)],["last",new Nt(e===i.length-1)],["length",new jt(i.length)],["previtem",e>0?i[e-1]:new Vt],["nextitem",e<i.length-1?i[e+1]:new Vt]]);n.setVariable("loop",new Ct(r)),o[e](n);a+=this.evaluateBlock(t.body,n).value,c=!1}if(c){a+=this.evaluateBlock(t.defaultBlock,n).value}return new At(a)}evaluateMacro(t,e){return e.setVariable(t.name.value,new Ft(((e,n)=>{const r=new Ut(n);let s;e=e.slice(),"KeywordArgumentsValue"===e.at(-1)?.type&&(s=e.pop());for(let n=0;n<t.args.length;++n){const i=t.args[n],o=e[n];if("Identifier"===i.type){const t=i;if(!o)throw new Error(`Missing positional argument: ${t.value}`);r.setVariable(t.value,o)}else{if("KeywordArgumentExpression"!==i.type)throw new Error(`Unknown argument type: ${i.type}`);{const t=i,e=o??s?.value.get(t.key.value)??this.evaluate(t.value,r);r.setVariable(t.key.value,e)}}}return this.evaluateBlock(t.body,r)}))),new Pt}evaluate(t,e){if(void 0===t)return new Vt;switch(t.type){case"Program":return this.evalProgram(t,e);case"Set":return this.evaluateSet(t,e);case"If":return this.evaluateIf(t,e);case"For":return this.evaluateFor(t,e);case"Macro":return this.evaluateMacro(t,e);case"NumericLiteral":return new jt(Number(t.value));case"StringLiteral":return new At(t.value);case"BooleanLiteral":return new Nt(t.value);case"ArrayLiteral":return new Tt(t.value.map((t=>this.evaluate(t,e))));case"TupleLiteral":return new It(t.value.map((t=>this.evaluate(t,e))));case"ObjectLiteral":{const n=new Map;for(const[r,s]of t.value){const t=this.evaluate(r,e);if(!(t instanceof At))throw new Error(`Object keys must be strings: got ${t.type}`);n.set(t.value,this.evaluate(s,e))}return new Ct(n,t.value)}case"Identifier":return this.evaluateIdentifier(t,e);case"CallExpression":return this.evaluateCallExpression(t,e);case"MemberExpression":return this.evaluateMemberExpression(t,e);case"UnaryExpression":return this.evaluateUnaryExpression(t,e);case"BinaryExpression":return this.evaluateBinaryExpression(t,e);case"FilterExpression":return this.evaluateFilterExpression(t,e);case"TestExpression":return this.evaluateTestExpression(t,e);default:throw new SyntaxError(`Unknown node type: ${t.type}`)}}};function Bt(t){switch(typeof t){case"number":return new jt(t);case"string":return new At(t);case"boolean":return new Nt(t);case"undefined":return new Vt;case"object":return null===t?new Pt:Array.isArray(t)?new Tt(t.map(Bt)):new Ct(new Map(Object.entries(t).map((([t,e])=>[t,Bt(e)]))),t);case"function":return new Ft(((e,n)=>{const r=e.map((t=>_t(t)));return Bt(t(...r)??null)}));default:throw new Error(`Cannot convert to runtime value: ${t}`)}}function _t(t){let e=t;if(Array.isArray(t))e=t.map((t=>_t(t)));else if(t instanceof Map)e={},t.forEach(((t,n)=>{e[n]=_t(t)}));else switch(t.type){case"NullValue":e=null;break;case"UndefinedValue":e=void 0;break;case"ArrayValue":e=t.value.map((t=>_t(t)));break;case"KeywordArgumentsValue":case"ObjectValue":e=t.orgValue?t.orgValue:_t(t.value),"KeywordArgumentsValue"===t.type&&Object.setPrototypeOf(e,{jinja_kargs:!0});break;default:t.type&&(e=t.value)}return e}function Lt(t,e=0){return Math.floor(Math.random()*(t-e+1))+e}var zt={randomInt:Lt,select:function(t,e){if(Array.isArray(t)||"string"==typeof t)return void 0===e?e=Lt(t.length-1):"string"==typeof e&&(e=parseInt(e)),e<0&&(e=t.length+e),t[e];if(t&&"object"==typeof t){if(void 0===e){const n=Object.keys(t);e=n[Lt(n.length-1)]}return t[e]}},tojson:function(t,e,n){return e&&"object"==typeof e&&(e.depth&&(n=e.depth),e=e.indent),qt(t,e,n)}};function qt(t,e,n){let r="";const s=n??0;if(null===t)r="null";else{const n=typeof t;switch(n){case"undefined":r="null";case"number":case"string":case"boolean":return JSON.stringify(t);case"object":{const n=e?" ".repeat(e):"",r="\n"+n.repeat(s),i=r+n;if(Array.isArray(t)){const n=t.map((t=>qt(t,e,s+1)));return e?`[${i}${n.join(`,${i}`)}${r}]`:`[${n.join(", ")}]`}{const n=Array.from(Object.entries(t)).map((([t,n])=>{const r=`"${t}": ${qt(n,e,s+1)}`;return e?`${i}${r}`:r}));return e?`{${n.join(",")}${r}}`:`{${n.join(", ")}}`}}default:throw new Error(`Cannot convert to JSON: ${n}`)}}return r}var Jt=class extends Ut{constructor(t){super(t),this.parent=t}assign(t){for(const[e,n]of Object.entries(t))this.set(e,n)}clear(){this.variables.clear()}},Dt=class t{static{this.global=new Jt}constructor(t,e={}){const n=X(t,e={lstrip_blocks:!0,trim_blocks:!0,...e});this.parsed=Et(n)}render(e){const n=new Ut(t.global);n.set("false",!1),n.set("true",!0),n.set("raise_exception",(t=>{throw new Error(t)})),n.set("range",$t);for(const[t,r]of Object.entries(e))n.set(t,r);return new Rt(n).run(this.parsed).toString()}};function Wt(t,e){let n;switch(t.type){case"Identifier":n=t.value;break;case"MemberExpression":n=Wt(t.object,e);break;case"FilterExpression":n=Wt(t.operand,e);break;case"Set":{e||(e=[]);const r=Wt(t.assignee);r&&e.push(r),n=Wt(t.value,e);break}}return n&&e?.includes(n)&&(n=void 0),n}function Kt(t){let e;if("Program"===t.type)e=t.body.some((t=>Kt(t)));else e=t.isStatement;return e}function Zt(t,e){let n=[];if(Array.isArray(t))n=t.map((t=>Zt(t,e))).filter(Boolean).flat();else switch(t.type){case"Program":n=t.body.map((t=>Zt(t,e))).filter(Boolean).flat();break;case"If":n=[Wt(t.test,e),...Zt(t.body,e),...Zt(t.alternate,e)].filter(Boolean);break;case"BinaryExpression":n=[Wt(t.left,e),Wt(t.right,e)].filter(Boolean);break;case"For":{const r=Wt(t.loopvar);r&&(e||(e=[]),e.push(r)),n=[Wt(t.iterable,e),...Zt(t.body,e)].filter(Boolean);break}case"CallExpression":n=[Wt(t.callee,e),...Zt(t.args,e)].filter(Boolean);break;default:n=[Wt(t,e)].filter(Boolean)}return n}Dt.global.assign(zt);var Gt=class extends _{static isTemplate(t){let e,n,r=!1;if("object"==typeof t?(n=t.template,e=t.compiledTemplate):n=t,!e&&n)try{e=new Dt(n)}catch(t){}return e&&(r=Kt(e.parsed)),r}getVariables(t=this.compiledTemplate){return Zt(t.parsed,[]).filter(((t,e,n)=>n.indexOf(t)===e))}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new c("Prompt template must be a string","PromptTemplate",f.InvalidArgument);this.compiledTemplate=new Dt(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return this.compiledTemplate.render(t)}};function Ht(t){return function(e){return t}}function Xt(t){const e=t.split(""),n=[],r=(t,n)=>{for(let r=n;r<e.length;r+=1)if(t.includes(e[r]))return r;return-1};let s=0;for(;s<e.length;)if("{"===e[s]&&s+1<e.length&&"{"===e[s+1])n.push({type:"literal",text:"{"}),s+=2;else if("}"===e[s]&&s+1<e.length&&"}"===e[s+1])n.push({type:"literal",text:"}"}),s+=2;else if("{"===e[s]){const t=r("}",s);if(t<0)throw new Error("Unclosed '{' in template.");n.push({type:"variable",name:e.slice(s+1,t).join("")}),s=t+1}else{if("}"===e[s])throw new Error("Single '}' in template.");{const t=r("{}",s),i=(t<0?e.slice(s):e.slice(s,t)).join("");n.push({type:"literal",text:i}),s=t<0?e.length:t}}return n}function Qt(t,e){return t.reduce(((t,n)=>{let r;return r="variable"===n.type?n.name in e?t+e[n.name]:t:t+n.text,r}),"")}function Yt(t){const e=new Set;return t.forEach((t=>{"variable"===t.type&&e.add(t.name)})),[...e]}_.register(Gt,{name:"hf",aliases:["huggingface","internal","default"]});var te=class extends _{static isTemplate(t){let e,n,r=!1;if("object"==typeof t?(n=t.template,e=t.compiledTemplate):n=t,!e&&n)try{e=Xt(n)}catch(t){}if(e){r=Yt(e).length>0}return r}getVariables(t=this.compiledTemplate){return Yt(t)}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new c("Prompt template must be a string","PromptTemplate",f.InvalidArgument);this.compiledTemplate=Xt(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return Qt(this.compiledTemplate,t)}};function ee(t,e){return"string"==typeof e&&(e=e.split(".").filter((t=>t.length))),e.reduce(((t,e)=>t?.[e]),t)}function ne(t,e,n){let r=function(t,e,n){return t.replace(/{{\s*re_replace\s+\.(.+?)\s+(["'])((?:(?!\2).)*?)\2\s+(["'])((?:(?!\4).)*?)\4\s*}}/g,((t,r,s,i,o,a)=>{if(n)return e[r]=null,t;const c=new RegExp(i,"g");return ee(e,r).replace(c,a)}))}(t,e,n);return r=function(t,e,n){return t.replace(/{{\s*join\s+\.(.+?)\s+(["'])((?:(?!\2).)*?)\2\s*}}/g,((t,r,s,i)=>n?(e[r]=null,t):ee(e,r).join(i)))}(r,e,n),r=function(t,e,n){return t.replace(/{{\s*if\s*(\S+?)\s*}}([^{]*)({{\s*else\s*}}([^{]*))?{{\s*end\s*}}/g,((t,r,s,i,o)=>{if(n)return r.startsWith(".")&&(r=r.substring(1)),e[r]=null,t;let a;if(!r.startsWith("."))throw new Error("Functionality not implemented");{const t=ee(e,r.substring(1));if(null==t)a=o??"";else if("string"==typeof t)a=t.length>0?s:o??"";else if(Array.isArray(t))a=t.length>0?s:o??"";else{if("boolean"!=typeof t)throw new Error(`Unexpected type for variable ${r}: ${typeof t}`);a=t?s:o??""}}return a}))}(r,e,n),r=function(t,e,n){return t.replace(/{{\s*range\s*[.$]([^{}\s]+?)\s*}}([^{]*?){{\.}}([^{]*?){{\s*end\s*}}/g,((t,r,s,i)=>{if(n)return e[r]=null,t;const o=ee(e,r);if(Array.isArray(o)){let t="";for(const e of o)t+=`${s}${e}${i}`;return t}return t}))}(r,e,n),r=function(t,e,n){return t.replace(/{{\s*\.([^{}\s]+?)\s*}}/g,((t,r)=>n?(e[r]=null,t):ee(e,r)||""))}(r,e,n),r=function(t,e,n){return t.replace(/{{\s*index\s*\.(.+?)\s+(.+?)\s*}}/g,((t,r,s)=>{if(n)return e[r]=null,t;const i=ee(e,r);let o;return o=isNaN(s)?i[s.substring(1,s.length-1)]:i[parseInt(s,10)],o||""}))}(r,e,n),r}_.register(te,{name:"fstring",aliases:["python","f-string","langchain"]});var re=class extends _{static isTemplate(t){const e="string"==typeof t?t:t.template;return e?.includes("{{")&&e.includes("}}")}getVariables(t){const e={};return ne(t,e,!0),[...Object.keys(e)]}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new c("Prompt template must be a string","PromptTemplate",f.InvalidArgument);this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables(e)}_format(t){return ne(this.template,t)}};function se(t){return Object.keys(t).sort().map((e=>t[e]))}_.register(re,{name:"golang",aliases:["localai","ollama"]});var ie=class extends _{static from(t){return new this(t)}constructor(t){super(t)}_initialize(t){t&&(t.suffix&&(this.suffix=t.suffix),t.exampleSeparator&&(this.exampleSeparator=t.exampleSeparator),t.prefix&&(this.prefix=t.prefix),t.examplePrompt&&(this.examplePrompt=t.examplePrompt instanceof _?t.examplePrompt:_.from(t.examplePrompt)),t.examples&&(this.examples=t.examples)),this.prefix||(this.prefix=""),this.exampleSeparator||(this.exampleSeparator="\n\n"),this.suffix||(this.suffix="")}async _format(t){const e=[];for await(const t of this.examples)if(this.examplePrompt){const n=await this.examplePrompt.format(t);e.push(n)}else if("string"==typeof t)e.push(t);else if(t){const n=se(t);n.length>0&&e.push(...n)}const n=[this.prefix,...e,this.suffix].join(this.exampleSeparator),r=this.templateFormat;return await _.format({template:n,data:t,templateFormat:r})}toJSON(t=this){const e=super.toJSON(t);return t.suffix&&(e.suffix=t.suffix),t.exampleSeparator&&(e.exampleSeparator=t.exampleSeparator),t.prefix&&(e.prefix=t.prefix),t.examplePrompt&&(e.examplePrompt=t.examplePrompt),t.examples&&(e.examples=t.examples),e}};_.register(ie,{name:"fewshot",aliases:["few_shot"]});var oe=/(\\)?(\$)(?!\()(\{?)([\w.]+)(?::?-((?:\$\{(?:\$\{(?:\$\{[^}]*\}|[^}])*}|[^}])*}|[^}])+))?(\}?)/gi;function ae(t){return t.replace(/\\\$/g,"$")}function ce(t,e,n){return t.replace(oe,((r,s,i,o,a,c,u)=>"\\"===s?r.slice(1):e[a]?e[a]===n[a]?e[a]:ce(e[a],e,n):n[a]?n[a]===t?n[a]:ce(n[a],e,n):c?c.startsWith("$")?ce(c,e,n):c:""))}function ue(t){let e=process.env;t&&null!=t.processEnv&&(e=t.processEnv);for(const n in t.parsed){let r=t.parsed[n];if(!r)continue;r=Object.prototype.hasOwnProperty.call(e,n)?e[n]===t.parsed[n]?ce(r,e,t.parsed):e[n]:ce(r,e,t.parsed),t.parsed[n]=r?ae(r):r}for(const n in t.parsed)e[n]=t.parsed[n];return t}function fe(t,e={},n){switch(n||(n=new WeakSet),e.processEnv||(e.processEnv={...process.env}),e.parsed||(e.parsed=e.processEnv),typeof t){case"string":t=ce(t,e.processEnv,e.parsed);break;case"object":if(n.has(t)||null===t)return t;if(n.add(t),Array.isArray(t))for(let r=0;r<t.length;r++){const s=t[r];"string"!=typeof s&&"object"!=typeof s||(t[r]=fe(t[r],e,n))}else for(const[r,s]of Object.entries(t))"string"!=typeof s&&"object"!=typeof s||(t[r]=fe(s,e,n))}return t}var le=/(\S.+?[.!?])(?=\s+|$)|(\S.+?)(?=[\n]|$)/g,he=/([A-Z][a-z]{1,2}\.)\s(\w)/g,pe=/(\.[a-zA-Z]\.)\s(\w)/g,we=new RegExp("([A-Z][a-z]{1,2}\\.)@(\\w)","g"),de=new RegExp("(\\.[a-zA-Z]\\.)@(\\w)","g");function me(t,e,n){const r="$1"+e+"$2";let s=t;for(let t=0;t<n.length;t++)s=s.replace(n[t],r);return s}function ye(t,e=!0){const n=(t=(t=(t=(t=(t=t.replace(/([。!??])\1+/g,"$1")).replace(/([。!??])([^”’])/g,"$1\n$2")).replace(/(\.{6})([^”’])/g,"$1\n$2")).replace(/(…{2})([^”’])/g,"$1\n$2")).replace(/([。!??][”’])([^,。!??])/g,"$1\n$2")).split("\n");let r=[];for(let t=0;t<n.length;t++){let s=n[t].trim();if(!s)continue;if(!e){r.push(s);continue}let i=me(s,"@",[he,pe]),o=Array.from(i.matchAll(le));if(o.length)for(let t=0;t<o.length;t++){let e=me(o[t][0]," ",[we,de]);r.push(e)}else r.push(s)}return r}function be(t,e=2,n=.5){const r=10**e;return Math.trunc((t+Number.EPSILON+n/r)*r)/r}async function ge(t){return new Promise((e=>setTimeout(e,t)))}import{createAbilityInjector as ve}from"custom-ability";var xe="event",Ee="event-bus";var $e=ve((function(t){return class{static get emitter(){if(!this._emitter){const t=this.get(Ee)?.emitter;t&&(this._emitter=t,this.prototype._events=t._events)}return this._emitter}get emitter(){return this.constructor._emitter}on(e,n){const r=t.emitter;if(!r)throw new TypeError("EventBackend required");return r.on(e,n)}once(e,n){const r=t.emitter;if(!r)throw new TypeError("EventBackend required");return r.once(e,n)}off(e,n){const r=t.emitter;if(!r)throw new TypeError("EventBackend required");return r.off(e,n)}emit(e,...n){const r=t.emitter;if(!r)throw new TypeError("EventBackend required");return"error"===e?this.emitError.apply(this,n):r.emit.call(this,e,this.name,...n)}emitError(e,...n){const r=t.emitter;if(!r)throw new TypeError("EventBackend required");return r.emit.call(this,"error",e,this.name,...n)}async emitAsync(e,...n){const r=t.emitter;if(!r)throw new TypeError("EventBackend required");return r.emitAsync.call(this,e,this.name,...n)}}}),!0);function ke(t,e){return!t||t.some((t=>t instanceof RegExp?t.test(e):t===e))}var Se=498,Oe=class{get active(){return this._active}set active(t){t!==this._active&&(t?(this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0),this.options.pingInterval>0&&(this.pingTimer=setInterval((()=>this.publish()),this.options.pingInterval))):(this.clients.size&&this.clearClients(),this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0)),this._active=t)}constructor(t){this.options=Object.assign({},{pingInterval:3e3,maxStreamDuration:3e4,clientRetryInterval:1e3,startId:1,historySize:100,rewind:0,cors:!1},t),this.nextID=this.options.startId,this.clients=new Set,this.messages=[],this.active=!0}publish(t,e){let n,r;this.active||m("Channel closed","SSEChannel",498);let s=e;if(t||e)r=this.nextID++,"object"==typeof t&&(t.event?(s=t.event,void 0!==t.data&&(t=JSON.stringify(t.data))):t=JSON.stringify(t)),t=t?t.split(/[\r\n]+/).map((t=>"data: "+t)).join("\n"):"",n="id: "+r+"\n"+(e?"event: "+e+"\n":"")+(t||"data: ")+"\n\n",this.messages.push({id:r,_eventName:s,output:n});else{if(!this.clients.size)return;n="data: \n\n"}for([...this.clients].filter((t=>!s||ke(t.events,s))).forEach(((t,e)=>{t.res.write(n)}));this.messages.length>this.options.historySize;)this.messages.shift();return r}subscribe(t,e,n){this.active||m("Channel closed","SSEChannel",498);const r={req:t,res:e,events:n},s=this.options.maxStreamDuration;let i="max-age=0, stale-while-revalidate=0, stale-if-error=0, no-transform";s>0&&(i+=", s-maxage="+(Math.floor(s/1e3)-1));const o={"Content-Type":"text/event-stream","Cache-Control":i,Connection:"keep-alive"};this.options.cors&&(o["access-control-allow-origin"]="*"),r.req.socket.setNoDelay(!0),r.res.writeHead(200,o);let a="retry: "+this.options.clientRetryInterval+"\n\n";const c=Number.parseInt(t.headers["last-event-id"],10),u=Number.isNaN(c)?this.options.rewind:this.nextID-1-c;return u&&this.messages.filter((t=>ke(r.events,t.eventName))).slice(0-u).forEach((t=>{a+=t.output})),r.res.write(a),this.clients.add(r),s>0&&setTimeout((()=>{r.res.writableEnded||this.unsubscribe(r)}),s),r.res.on("close",(()=>this.unsubscribe(r))),r}unsubscribe(t){t.res.end(),this.clients.delete(t)}clearClients(){this.clients.forEach((t=>t.res.end())),this.clients.clear()}listClients(){const t={};return this.clients.forEach((e=>{const n=e.req.socket.remoteAddress??"";n in t||(t[n]=0),t[n]++})),t}getSubscriberCount(){return this.clients.size}};function je(t){return t instanceof ReadableStream||t instanceof WritableStream}var Ae=600,Ne=601,Ce=class extends a{constructor(t,e=600){super(t,500)}};function Me(t){if(t){const e=t.getReader();return new ReadableStream({async start(t){const{done:n,value:r}=await e.read();if(!n){const e=(new TextDecoder).decode(r);t.error(new Ce(`Response error: ${e}`,Ne))}}})}return new ReadableStream({start(t){t.error(new Ce("Response error: No response body",Ne))}})}function Te(){return new ReadableStream({start(t){t.close()}})}import{createParser as Ie}from"eventsource-parser";function Fe(t){const e=new TextDecoder;let n;return new TransformStream({async start(e){n=Ie((n=>{if("data"in n&&"event"===n.type&&"[DONE]"===n.data||"done"===n.event)e.terminate();else if("data"in n){const r=t?t(n.data,{event:n.event}):n.data;r&&e.enqueue(r)}}))},transform(t){n.feed(e.decode(t))}})}function Pe(){let t=!0;return e=>(t&&(e=e.trimStart())&&(t=!1),e)}function Ve(t,e){if(!t.ok)return Me(t.body);let n=t.body||new ReadableStream({start(t){t.close()}});return n instanceof ReadableStream||(n=ReadableStream.from(n)),n.pipeThrough(Fe(e))}function Ue(t){let e=t[Symbol.asyncIterator]();return new ReadableStream({async pull(t){const{done:n,value:r}=await e.next();n?t.close():t.enqueue(r)},async cancel(t){await(e.return?.(t))}})}function Re(t){const e=t||{};return new TransformStream({async start(t){const n=t.error;if(t.error=r=>{n.call(t,r),e.onError&&e.onError(r)},e.onStart)try{await e.onStart(t)}catch(e){t.error(e)}},async transform(t,n){try{let r;e.onTransform&&(r=await e.onTransform(t,n)),r||(r=t),n.enqueue(r)}catch(t){n.error(t)}},async flush(t){if(e.onFinal)try{await e.onFinal(t)}catch(e){return t.error(e)}t.terminate()}})}import{v1 as Be,v5 as _e,v4 as Le}from"uuid";import*as ze from"base32768";import{v1 as qe,v4 as Je,v5 as De,stringify as We,parse as Ke,validate as Ze,version as Ge,NIL as He}from"uuid";var Xe={1:Be,4:Le,5:_e};function Qe(t=1,e){const n=Xe[t];return e?ze.encode(n(null,[])):n()}import Ye from"xxhashjs";import*as tn from"base32768";import{canonicalize as en}from"json-canonicalize";var nn=tn,{h32:rn,h64:sn}=Ye,on=588213;function an(t,e=16){return"object"==typeof t&&(t=en(t)),rn(t,on).toString(e)}function cn(t,e=16){return"object"==typeof t&&(t=en(t)),sn(t,on).toString(e)}var un=(t=>(t[t.xxhash64=111]="xxhash64",t[t.xxhash32=112]="xxhash32",t))(un||{});function fn(t,e=111,n=on){let r;return t.buffer&&(t=t.buffer),112!==e?(r=sn(t,n),r=new Uint16Array([r._a00,r._a16,r._a32,r._a48]),r=new Uint8Array(r.buffer)):(r=rn(t,n),r=new Uint16Array([r._low,r._high]),r=new Uint8Array(r.buffer)),r}function ln(t,e=111,n=on){return tn.encode(fn(t,e,n))}import hn from"path";var pn=/[<>:"/\\|?*\u0000-\u001F]/,wn=/^(con|prn|aux|nul|com\d|lpt\d)$/i,dn=100,mn=/^\.+(\\|\/)|^\.+$/,yn=/\.+$/,bn=/[\u0000-\u001F\u0080-\u009F\u200E\u200F\u202A-\u202E\u2066-\u2069]/;function gn(){return new RegExp(pn.source,"g")}function vn(){return new RegExp(bn.source,"g")}function xn(t){return t&&!(pn.test(t)||vn().test(t)||mn.test(t)||yn.test(t))}function En(t){const e=t.split(hn.sep);return("/"===t[0]||e[0]&&hn.dirname(e[0])===e[0])&&e.shift(),e.every(xn)}function $n(t,e={}){const n=e.replacement||"!";if((pn.test(n)||bn.test(n))&&m("Replacement string cannot contain reserved filename characters","sanitizeFilename",f.InvalidArgument),n.length>0){const e=/([<>:"/\\|?*\u0000-\u001F]){2,}/;t=t.replace(e,"$1")}if(t=(t=(t=(t=(t=t.normalize("NFD")).replace(mn,n)).replace(gn(),n)).replace(vn(),n)).replace(yn,""),n.length>0){"."===t[0]||"."!==t[0]||(t=n+t),"."===t[t.length-1]&&(t+=n)}t=wn.test(t)?t+n:t;const r="number"==typeof e.maxLength?e.maxLength:dn;if(t.length>r){const e=t.lastIndexOf(".");if(-1===e)t=t.slice(0,r);else{const n=t.slice(0,e),s=t.slice(e);t=n.slice(0,Math.max(1,r-s.length))+s}}return t}function kn(t,e={}){const n=t.split(hn.sep);let r;("/"===t[0]||n[0]&&hn.dirname(n[0])===n[0])&&(r=n.shift());const s=n.map((t=>$n(t,e)));return void 0!==r&&s.unshift(r),s.join(hn.sep)}function Sn(t,e=1){let n="";for(;e--;){const e=hn.extname(t);if(!e)break;n=e+n,t=hn.basename(t,e)}return n}function On(t){return t.split(".").length-1}import{isRegExpStr as jn,toRegExp as An}from"util-ex";function Nn(t,e){if("string"!=typeof t)throw new c("modelName must be a string","isModelNameMatched",f.InvalidArgument);switch(typeof e){case"string":if(jn(e)){const n=(e=An(e)).exec(t);if(n)return n}else if(t.toLowerCase()===e.toLowerCase())return e;break;case"object":if(Array.isArray(e)){for(const n of e)if("string"==typeof n){if(jn(n)){const r=(e=An(n)).exec(t);if(r)return r}else if(t.toLowerCase()===n.toLowerCase())return n}else if(n instanceof RegExp){const e=n.exec(t);if(e)return e}else if("function"==typeof n){const e=n.call(this,t);if(e)return e}}else if(e instanceof RegExp){const n=e.exec(t);if(n)return n}break;case"function":const n=e.call(this,t);if(n)return n}}function Cn(t){return Object.keys(t).filter((t=>Number.isNaN(Number(t))))}import{pick as Mn}from"lodash-es";import{newFunction as Tn}from"util-ex";function In(t,e){if(e&&(e=Vn(e)),e){const n=Object.keys(e);if(n.length){const r=Object.values(e);return Tn("expression",n,`return ${t}`)(...r)}}return Tn("expression",[],`return ${t}`)()}var Fn=/^[a-zA-Z_$][0-9a-zA-Z_$]*$/,Pn=t=>Fn.test(t);function Vn(t){if(t){const e=Object.keys(t),n=e.length,r=e.filter((e=>Pn(e)&&null!==t[e]));if(n===r.length)return t;if(r.length)return t=Mn(t,r)}}function Un(t){return t?Rn(t,[],""):[]}function Rn(t,e,n="."){return Array.isArray(t)?t.flatMap(((t,n)=>Rn(t,[...e,`[${n}]`]))):(r=t)&&r.constructor===Object?Object.entries(t).flatMap((([t,r])=>Rn(r,[...e,n+t]))):[e.join("")];var r}function Bn(t){if(t<2)throw new c("repetitionThreshold must be greater than 1","createEndWithRepetitionDetector",f.InvalidArgument);const e=new RegExp(`([\\S\\s]+)(\\1{${t-1},})$`);return function(t){return e.exec(t)}}import _n from"path";import*as Ln from"fs";function zn(t){const e=Ln.statSync(t,{throwIfNoEntry:!1});return e?.isFile()}function qn(t,e,n,r){const s=r?.signal,i=r?.exclude;let o;if(_n.isAbsolute(t)?o=zn(t)?t:Jn(_n.basename(t),[_n.dirname(t)],{extNames:n,exclude:i,signal:s}):(e||(e=["."]),o=Jn(t,e,{extNames:n,exclude:i,signal:s})),!o)throw new p(t,"loadFileFromPaths");{const t=o;o=Ln.readFileSync(o),r&&(r.filepath=t)}return o}function Jn(t,e,{extNames:n,signal:r,exclude:s=[]}){let i;const o=n?n.map((e=>Sn(t,On(e)))):void 0;"string"==typeof s&&(s=[s]);for(const a of e){if(r?.aborted)throw r.reason;const e=_n.resolve(a,t);if(o)for(let t=0;t<o.length;t++){const r=e+(o[t]!==n[t]?n[t]:"");if(!s.includes(r)&&zn(r)){i=r;break}}else if(!s.includes(e)&&zn(e)){i=e;break}}return i}function Dn(t,e,n,r,s){let i;"string"==typeof r?(i=r,r=void 0):i=r?.encoding??"utf8";return qn(t,e,n,r).toString(i)}function Wn(t,e){const n=[],r="string"==typeof t?[t]:[...t],s=new Set,i=e?.signal,o=e?.isFileMatched,a=e?.level;let c=0;for(;r.length>0;){if(i?.aborted)throw i.reason;const t=Kn(r.pop()),e=_n.resolve(t);if(s.has(e))continue;s.add(e);const u=Ln.statSync(t,{throwIfNoEntry:!1});if(u?.isDirectory()){const e=Ln.readdirSync(t,{withFileTypes:!0});for(let s=0;s<e.length;s++){const i=e[s],a=_n.join(t,i.name);i.isDirectory()?r.push(a):!i.isFile()||o&&!o(a)||n.push(a)}if(c++,a&&c>=a)break}}return n}function Kn(t){const e=Ln.lstatSync(t,{throwIfNoEntry:!1});return e?.isSymbolicLink()&&(t=Ln.readlinkSync(t)),t}import{existsSync as Zn,mkdirSync as Gn,readdirSync as Hn,statSync as Xn,writeFileSync as Qn}from"fs";import Yn from"path";import{Config as tr}from"load-config-file";import{parse as er,stringify as nr}from"yaml";import{regexp as rr}from"yaml-types";import{mimeType as sr}from"mime-type/with-db";var ir=[rr];function or(t){Array.isArray(t)||(t=[t]);for(const e of t){-1===ir.indexOf(e)&&ir.push(e)}}function ar(t){return er(t,{customTags:ir})}function cr(t){return nr(t,{customTags:ir})}function ur(t,e){const n=[],r=e?.after,s=e?.exclude?"string"==typeof e.exclude?[e.exclude]:e.exclude:void 0,i=e?.extensions?"string"==typeof e.extensions?[e.extensions]:e.extensions.map((t=>t.startsWith(".")?t:"."+t)):[".yml",".yaml",".json"];return function(t,e){const n=Hn(t,{withFileTypes:!0,recursive:!0});for(const r of n){const n=Yn.join(t,r.name);r.isFile()&&e(n,r)}}(t,((t,e)=>{if(s?.includes(t))return;const o=Yn.extname(t),a=Xn(t);if(i.includes(o)){if(r?.hasOwnProperty(t)&&a.mtimeMs<=r[t])return;n.push(t)}})),n}function fr(t,e){return ur(t,e).map((t=>tr.loadSync(t))).filter((t=>void 0!==t))}function lr(t,e,n=1){"."===t[0]&&n++;const r=Sn(t,n);(!r||r.split(".").length<=1)&&(t+=".yaml");const s=sr.lookup(t);if("application/json"===s)e=JSON.stringify(e,null,2);else{if("text/yaml"!==s)throw new Error(`${t} unsupported mime type: ${s}`);e=cr(e)}const i=Yn.dirname(t);return Zn(i)||Gn(i,{recursive:!0}),Qn(t,e,{encoding:"utf8"}),t}function hr(t){t instanceof Date&&(t=t.toISOString());return function(t,e){return t?`'${e}'`:String(e)}("string"==typeof t,t)}function pr(t,e){return t.map((t=>mr(t,e))).join(" AND ")}function wr(t,e){return t.map((t=>mr(t,e))).join(" OR ")}function dr(t,e){const n=[];return Object.keys(e).forEach((r=>{const s=e[r];switch(r){case"$lt":case"<":n.push(`${t} < ${hr(s)}`);break;case"<=":case"$lte":n.push(`${t} <= ${hr(s)}`);break;case"$gt":case">":n.push(`${t} > ${hr(s)}`);break;case"$gte":case">=":n.push(`${t} >= ${hr(s)}`);break;case"$ne":case"!=":n.push(`${t} != ${hr(s)}`);break;case"=":case"$eq":n.push(`${t} = ${hr(s)}`);break;case"$in":n.push(`${t} IN (${s.map((t=>hr(t))).join(", ")})`);break;case"$nin":n.push(`${t} NOT IN (${s.map((t=>hr(t))).join(", ")})`);break;case"$regex":n.push(`${t} REGEXP '${s.source}'`);break;case"$like":n.push(`${t} LIKE '${s}'`);break;case"$nlike":n.push(`${t} NOT LIKE '${s}'`);break;case"$glob":n.push(`${t} GLOB '${s}'`);break;case"$nglob":n.push(`${t} NOT GLOB '${s}'`);break;default:throw new Error(`Unsupported condition operator: ${r}`)}})),n.join(" AND ")}function mr(t,e){const n=[];if("function"!=typeof e&&(e=t=>t),Array.isArray(t))n.push(pr(t,e));else for(const[r,s]of Object.entries(t))if("$and"===r)n.push(`(${pr(t[r],e)})`);else if("$or"===r)n.push(`(${wr(t[r],e)})`);else{const t=typeof s;if(null==s)n.push(`${e(r)} IS NULL`);else if(s instanceof Date)n.push(`${e(r)}='${s.toISOString()}'`);else if("object"!==t||Array.isArray(s))if("string"===t)n.push(`${e(r)}='${s}'`);else{if("number"!==t&&"boolean"!==t)throw new Error(`Unsupported value type for key ${r}`);n.push(`${e(r)}=${s}`)}else n.push(dr(e(r),s))}return n.length>1?n.join(" AND "):n[0]}function yr(t){const e=t.indexOf("://");if(e>0)return t.substring(0,e)}function br(t,e=0){let n,r=t*10**e;return t>=1e12?(r=Math.round(r/1e12),n="T"):t>=1e9?(r=Math.round(r/1e9),n="B"):t>=1e6?(r=Math.round(r/1e6),n="M"):t>=1e3?(r=Math.round(r/1e3),n="K"):(r=Math.round(r),n=""),r/=10**e,r.toFixed(e)+n}function gr(t){const e=t.match(/^\s*[+]?(\d+(?:[.]\d+)?)\s*([TBMK])?\s*$/i);if(!e)throw new c("Invalid formatted parameter size string.","scaleToSize",f.InvalidArgument);const n=parseFloat(e[1]),r=e[2]?.toLowerCase();switch(r){case"t":return 1e12*n;case"b":return 1e9*n;case"m":return 1e6*n;case"k":return 1e3*n;default:return n}}function vr(t,e){const n=e?.level||0,r=e?.visiting||new Set,s=e?.objectTag||"*",i=e?.arrayTag||"-";let o=[];const a=" ".repeat(2*n);if(null!=t)switch(typeof t){case"object":r.has(t)?o=["[Circular]"]:(r.add(t),o=Array.isArray(t)?t.map((t=>i+c(t))):Object.entries(t).map((([t,e])=>s+" `"+t+"`:"+c(e))));break;case"string":return t;default:return JSON.stringify(t)}else o=["null"];return o.length?a+o.join("\n"+a):"";function c(t){return(null!=t&&"object"==typeof t?"\n":" ")+vr(t,{level:n+1,visiting:r})}}tr.register([".yml",".yaml"],ar),tr.register([".json"],(function(t){return JSON.parse(t)}));var xr=class t{constructor(t=0){this.bitField=t}static has(t,e){return!!(t&1<<e)}static add(t,e){return t|1<<e}static delete(t,e){return t&~(1<<e)}add(t){return this.bitField|=1<<t,this}delete(t){return this.bitField&=~(1<<t),this}has(e){return t.has(this.bitField,e)}clear(){return this.bitField=0,this}valueOf(){return this.bitField}toString(){return this.bitField.toString()}toJSON(){return this.bitField}};import{EventEmitter as Er}from"events-ex";var $r=32;function kr(t){return e=Math.min(Math.max(16,t),1073741824),e>>>=0,e-=1,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,1+(e|=e>>16);var e}var Sr=class{constructor(t){this._capacity=kr(t),this._length=0,this._front=0,this.arr=[]}push(t){const e=this._length;this.checkCapacity(e+1);const n=this._front+e&this._capacity-1;return this.arr[n]=t,this._length=e+1,n}pop(){const t=this._length;if(0===t)return;const e=this._front+t-1&this._capacity-1,n=this.arr[e];return this.arr[e]=void 0,this._length=t-1,n}shift(){const t=this._length;if(0===t)return;const e=this._front,n=this.arr[e];return this.arr[e]=void 0,this._front=e+1&this._capacity-1,this._length=t-1,n}get length(){return this._length}checkCapacity(t){this._capacity<t&&this.resizeTo(kr(1.5*this._capacity+16))}resizeTo(t){const e=this._capacity;this._capacity=t;const n=this._front,r=this._length;if(n+r>e){const t=n+r&e-1;!function(t,e,n,r,s){for(let i=0;i<s;++i)n[i+r]=t[i+e],t[i+e]=void 0}(this.arr,0,this.arr,e,t)}}},Or=class extends Er{};function jr(t){return"function"==typeof t}function Ar(){return"1"}var Nr=class{constructor(t,{initFn:e=Ar,pauseFn:n,resumeFn:r,capacity:s=32}={}){if(jr(n)!==jr(r))throw new Error("pauseFn and resumeFn must be both set for pausing");this.maxConcurrency=t,this.free=new Sr(t),this.waiting=new Sr(s),this.releaseEmitter=new Or,this.useDefaultTokens=e===Ar,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on("release",(t=>{const e=this.waiting.shift();e?e.resolve(t):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(t))}));for(let n=0;n<t;n++)this.free.push(e())}tryAcquire(){return this.free.pop()}acquire(t){let e=this.tryAcquire();return void 0!==e?Promise.resolve(e):new Promise(((e,n)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn());const r=this.waiting.push({resolve:e,reject:n});return t&&t.addEventListener("abort",(()=>{this.waiting[r]=void 0;const e=t.reason instanceof Error?t.reason:new Error(t.reason||"aborted");t.alreadyRejected=!0,n(e)})),r}))}release(t){this.releaseEmitter.emit("release",this.useDefaultTokens?"1":t)}drain(){const t=new Array(this.maxConcurrency);for(let e=0;e<this.maxConcurrency;e++)t[e]=this.acquire();return Promise.all(t)}pendingCount(){return this.waiting.length}};function Cr(t,{timeUnit:e=1e3,uniformDistribution:n=!1}={}){const r=new Nr(n?1:t),s=n?e/t:e;return async function(){await r.acquire(),setTimeout((()=>r.release()),s)}}import{createAbilityInjector as Mr}from"custom-ability";import{defineProperty as Tr}from"util-ex";var Ir=class extends AbortController{constructor(t){super(),Tr(this,"parent",t)}abort(t,e){this.signal.aborted||("string"==typeof t&&(t=new r(t)),t&&e&&"object"==typeof t&&Object.assign(t.data,e),super.abort(t))}throwRejected(t){const e=this.signal;if(e.aborted){if(void 0===t&&(t=e.alreadyRejected),t)return!0;throw e.reason instanceof Error?e.reason:new r(e.reason||"aborted")}}},Fr=class{get maxTaskConcurrency(){return this._maxTaskConcurrency}get semaphore(){const t=this._maxTaskConcurrency;let e=this.__task_semaphore;return t>0&&!e&&(e=this.__task_semaphore=new Nr(t-1)),e}isAborted(t){const e=this.hasAsyncFeature(ws);let n=this.__task_aborter;if(n&&e){if(null==t)throw new c("Missing taskId",this.name+".isAborted",f.InvalidArgument);n=n[t]}return!n||n.signal.aborted}getRunningTask(t){const e=this.hasAsyncFeature(ws);let n=this.__task_aborter;if(n&&e){if(null==t)throw new c("Missing taskId",this.name+".getRunningTask",f.InvalidArgument);n=n[t]}return n?.signal.aborted&&(e?this.__task_aborter[t]=void 0:this.__task_aborter=void 0,n=void 0),n}getRunningTaskCount(){let t;if(this.hasAsyncFeature(ws)){const e=this.__task_aborter;t=e&&Object.entries(e).filter((([t,n])=>{if(!n?.signal.aborted)return!0;e[t]=void 0})).length}else{const e=this.__task_aborter;t=e?.signal.aborted?0:1}return t}_generateAsyncTaskId(t,e){if(e||(e=this.__task_aborter),null==t&&(t=0,e))for(;e[t];)t++;return t}$generateAsyncTaskId(t,e){const n=this.super,r=this.self||this;return t=n?n.call(r,t):this._generateAsyncTaskId(t,e)}createAborter(t,e,n=!0){const r=this.hasAsyncFeature(ws);if(!r&&n&&this.getRunningTask())throw new c("The task is running",this.name,f.TooManyRequests);const s=t?.aborter||new Ir(this);if(!(s instanceof Ir)){if(!(s instanceof AbortController))throw new c("aborter should be an AbortController",this.name,f.InvalidArgument);Object.setPrototypeOf(s,new Ir(this))}if(r){null==this.__task_aborter&&(this.__task_aborter={});const t=this.__task_aborter;null==e&&(e=this.generateAsyncTaskId(e,t)),s.id=e,t[e]=s}else this.__task_aborter=s;const i=t?.timeout;return i>0&&(s.timeoutId=setTimeout((()=>{s.timeoutId=void 0,this.abort("timeout",{timeout:i})}),i)),s.signal.addEventListener("abort",(()=>{const t=s.timeoutId;t&&(s.timeoutId=void 0,clearTimeout(t));const e=s.signal;try{this.emit&&this.emit("aborting",e.reason,e.reason?.data)}finally{s.streamController?.error(e.reason)}})),s}$cleanMultiTaskAborter(t,e){const n=this.super,r=this.self||this;n?n.call(r,t,e):r._cleanMultiTaskAborter(t,e)}cleanTaskAborter(t){if(this.hasAsyncFeature(ws)){const e=this.__task_aborter;this.cleanMultiTaskAborter(t.id,e)}else this.__task_aborter=void 0}_cleanMultiTaskAborter(t,e){"number"==typeof t?e[t]=void 0:delete e[t]}createTaskPromise(t,e,n){const r=this.createAborter(e,n?.taskId,n?.raiseError);void 0===e&&(e={}),"object"==typeof e&&(e.aborter=r);let s=t(e,r).then((t=>{if(t&&t instanceof ReadableStream){const e=()=>{this.cleanTaskAborter(r)},n=Re({onStart:t=>{Tr(r,"streamController",t)},onFinal:e,onError:e,onTransform:(t,e)=>(t&&"object"==typeof t&&(t.taskId=r.id),t)});t=t.pipeThrough(n)}else this.cleanTaskAborter(r);return t})).catch((t=>{throw this.cleanTaskAborter(r),t})).finally((()=>{r.timeoutId&&(clearTimeout(r.timeoutId),r.timeoutId=void 0)}));return s.task=r,s}runAsyncCancelableTask(t={},e,n){let r=this.createTaskPromise(e,t,n);const s=this.semaphore;if(s){const t=r,e=t.task;r=s.acquire(e.signal).then((()=>t)).finally((()=>{s.release()})),r.task=e}return r}abort(t,e){let n=this.__task_aborter;if(n){const r=n;if(this.hasAsyncFeature(ws)){const t=e?.taskId;if(null==t)throw new c("Missing data.taskId",this.name+".abort",f.InvalidArgument);n=n[t],this.cleanMultiTaskAborter(t,r)}else this.__task_aborter=void 0;n&&!n.signal.aborted&&n.abort(t,e)}}};Fr.prototype.generateAsyncTaskId=function(t,e){return this._generateAsyncTaskId(t,e)},Fr.prototype.cleanMultiTaskAborter=function(t,e){return this._cleanMultiTaskAborter(t,e)};var Pr=Mr(Fr,"abort",{afterInjection:function(t,e){let n=t.prototype._asyncFeatures||0;n|=bs.Cancelable,e&&(e.asyncFeatures&&(n|=e.asyncFeatures),e.maxTaskConcurrency>0&&(t.prototype._maxTaskConcurrency=e.maxTaskConcurrency)),t.prototype._asyncFeatures=n}});function Vr(t,e){const n=e.global?e:new RegExp(e.source,`${e.flags}g`);let r,s=0;for(;null!==(r=n.exec(t));)s++;return s}import{get as Ur}from"lodash-es";import{newFunction as Rr}from"util-ex";async function Br(t,e,n){return Lr(Xr(t,e,n),e,n)}function _r(t){if(t&&!Array.isArray(t)&&"object"==typeof t){const e=Object.entries(t),n=Object.keys(t);1===e.length&&void 0!==t[0]?t=t[0]:n.every((t=>!isNaN(parseInt(t))))?t=n.sort(((t,e)=>parseInt(t)-parseInt(e))).map((e=>t[e])):2===e.length&&"0"===e[0][0]&&e[0][1]===e[1][1]&&(t=t[0])}return t}async function Lr(t,e,n){if(t.length){const r=await Promise.all(t.map(((t,r)=>Hr(t,r,e,n)))),s=n?.returnArrayOnly;let i;if(r?.length){i=In(`{${r.map((t=>t)).join(",")}}`,e)}return i&&!s&&(i=_r(i)),i}}function zr(t,e,n,r){const[s,i]=t;if(!s&&"|"===i[0])return"choice: {"+function(t,e,n){const r=Xr(t,e,{...n,delimiter:":"}),s={},i=r.map((([t,e],n)=>{if(t){const t=e.indexOf(":"),n=e.slice(0,t).trim();if(s[n])throw new Error("Only one "+n+" is allowed");return s[n]=!0,e}{if("|"===e[0]){if(s.items)throw new Error("Only one items is allowed");return s.items=!0,"items:["+function(t,e='"'){return t.map((t=>Dr(t)?t:e+t+e))}(e.split("|").filter(Boolean))+"]"}const t=parseInt(e.trim());if(!isNaN(t)){if(s.maxPick)throw new Error("Only one maxPick is allowed");return s.maxPick=!0,"maxPick:"+t}if("random"===e||"ai"===e)return s.type=!0,'type:"'+e+'"';if(Dr(e)){if(s.separator)throw new Error("Only one separator is allowed");return s.separator=!0,"separator:"+e}}}));return i}(i,n,r)+"}"}async function qr([t,e],n,r,s){if(!r)return;let i,o;if(t){const t=e.split(":");i=t[0].trim(),o=t[1].trim()}else o=e,i=n+"";const a={template:o,data:{...r,...s?.templateData}};s?.templateFormat&&(a.templateFormat=s.templateFormat);const c=await _.formatIf(a);return c?(o=c,i+":"+JSON.stringify(o)):void 0}async function Jr(t,e,n,r){let s=zr(t,0,n,r);return s||(s=await qr(t,e,n,r)),s}function Dr(t){const e=t[0];return('"'===e||"'"===e)&&t[t.length-1]===e}function Wr(t){return'"'+t.replace(/(?<!\\)"(?!\\)/g,'\\"')+'"'}var Kr=["true","false","null","undefined","NaN","Infinity"];function Zr(t){return function(t,e=['""',"''","{}"]){return e.some((e=>t[0]===e[0]&&t[t.length-1]===e[1]))}(t)||!Number.isNaN(parseFloat(t))||Kr.includes(t)||ts(t)}async function Gr(t,e){const n=Rr("async expression",[],`return ${t};`,Vn(e));let r=await n.call(this);switch(typeof r){case"number":case"boolean":case"undefined":return r;case"function":return n.toString();default:return JSON.stringify(r)}}async function Hr(t,e,n,r){const[s,i]=t,o=r?.argProcessor;if("function"==typeof o){const s=await o(t,e,n,r);if(s)return s}if(s){const t=i.indexOf(":"),e=i.slice(0,t).trim(),r=i.slice(t+1).trim();if(!(Zr(r)||n&&void 0!==Ur(n,r)))return e+":"+Wr(r);if(!ts(i))try{return e+":"+await Gr.call(this,r,n)}catch(t){}return i}{const t=i.trim();if(n&&void 0!==Ur(n,t))return e+":"+t+', "'+t+'":'+t;if(Zr(t))return e+":"+t;if(!ts(i))try{return e+":"+await Gr.call(this,t,n)}catch(t){}return e+":"+Wr(t)}}function Xr(t,e,n){const r=n?.delimiter??",";let s=[],i=!1,o="",a="",c=!1,u="";for(let e=0;e<t.length;e++){const n=t[e];if(n!==r||i||u)if("\\"===n)a+=n,e++,a+=t[e];else if("("!==n&&"["!==n||i)if(u&&n===u)u="",a+=n;else if("{"!==n||i)'"'===n||"'"===n?(i&&n===o?i=!1:i||(i=!0,o=n),a+=n):"="!==n||i||c||!/^[\p{L}\p{N}_ ]+$/u.test(a)?a+=n:(a+=":",c=!0);else{let r,s=e,i=!1,o="",c=-1;for(;s<t.length&&("}"!==(r=t[s])||i||c>0);)"\\"===r?s++:"{"!==r||i?"}"!==r||i?'"'!==r&&"'"!==r||(i&&n===o?i=!1:i||(i=!0,o=n)):c--:c++,s++;s<t.length&&(a+=t.substring(e,s+1),e=s)}else u="("===n?")":"]",a+=n;else a=a.trim(),a.endsWith(":")&&(a+="undefined"),s.push([c,a]),a="",c=!1}return a&&(a=a.trim(),a.endsWith(":")&&(a+="undefined"),s.push([c,a])),s}async function Qr(t,e,n){const r=t.match(/^([^(]+)(?:\((.*)\))?$/);if(!r)throw new Error("Invalid command format");const[,s,i]=r;let o;return i&&(o=await Br(i,e,n)),{command:s.trim(),args:o}}var Yr=/^\s*\(\)|[a-zA-Z_$][\w\d$]*|\(([a-zA-Z_$][\w\d$]*)(\s*,\s*([a-zA-Z_$][\w\d$]*))*\)\s*=>/;function ts(t){return Yr.test(t)}import es from"memoizee";import{canonicalize as ns}from"json-canonicalize";function rs(t,e){var n;void 0!==e?.promise||!function(t){return"function"==typeof t&&"AsyncFunction"===t.constructor.name}(t)&&(!(n=t)||"object"!=typeof n&&"function"!=typeof n||"function"!=typeof n.then)||(e={promise:!0,...e}),void 0===e?.length&&(e={length:!1,...e});const r=e?.normalizer;return es(t,{...e,normalizer:t=>{if(r){const e=r(t);if("string"===e)return e;e&&(t=e)}return ln(ns(t))}})}import ss from"path";import{packageDirectorySync as is}from"pkg-dir";function os(t){const e=is({cwd:t});if(e)return e;const n=t.split(ss.sep);let r=n.lastIndexOf("dist");if(r>0)return n.slice(0,r).join(ss.sep);if(r=n.lastIndexOf("src"),r>0)return n.slice(0,r).join(ss.sep);throw new Error("can not find package directory")}import as from"path";function cs(t,e){try{const n=as.relative(as.resolve(t),as.resolve(e));return!n.startsWith("..")&&!as.isAbsolute(n)}catch{return!1}}function us(t,e){return e?.some((e=>cs(e,t)))}import{isRegExp as fs,isRegExpStr as ls}from"util-ex";function hs(t){return ls(t)||fs(t)}var ps,ws=0,ds=1,ms=2,ys=(t=>(t[t.MultiTask=ws]="MultiTask",t[t.Cancelable=1]="Cancelable",t[t.Priority=2]="Priority",t))(ys||{}),bs=((ps=bs||{})[ps.MultiTask=1<<ws]="MultiTask",ps[ps.Cancelable=2]="Cancelable",ps[ps.Priority=4]="Priority",ps),gs=class t extends e{static{this.items={}}static get(t){return this.items[t]}static list(){return this.items}static getByTag(t){let e;for(const n in this.list()){const r=this.get(n);let s=r.tags;if("string"==typeof s){if(s===t){e=r;break}}else if(Array.isArray(s)&&s.indexOf(t)>=0){e=r;break}}return e}static getAllByTag(t){let e=[];for(const n in this.list()){const r=this.get(n);let s=r.tags;"string"==typeof s?s===t&&e.push(r):Array.isArray(s)&&s.indexOf(t)>=0&&e.push(r)}return e}static hasAsyncFeature(t){const e=this.prototype;let n=e.asyncFeatures;return e._asyncFeatures&&(n|=e._asyncFeatures),xr.has(n,t)}static run(t,e){const n=this.get(t);if(n)return n.run(e);throw new p(`${t} to run`,this.name)}static runSync(t,e){const n=this.get(t);if(n)return n.runSync(e);throw new p(`${t} to run`,this.name)}static getFunc(t){const e=this.get(t);return e?.getFunc()}static runWithPos(t,...e){const n=this.get(t);if(n)return n.runWithPos(...e);throw new p(`${t} to run`,this.name)}static runWithPosSync(t,...e){const n=this.get(t);if(n)return n.runWithPosSync(...e);throw new p(`${t} to run`,this.name)}static getFuncWithPos(t){const e=this.get(t);return e?.getFuncWithPos()}static register(e,n={}){switch(typeof e){case"string":n.name=e;break;case"function":n.func=e;break;case"object":n=e}e=n.name;let r=!!this.get(e);if(r)r=!1;else{if(!(n instanceof t))return r=new this(n),r.register();this.items[e]=n,r=n}return r}static unregister(t){const e=this.items[t];return e&&delete this.items[t],e}constructor(t,e={}){switch(super(),typeof t){case"string":e.name=t;break;case"function":e.func=t;break;case"object":e=t}this.name=t=e.name,e.scope&&(this.scope=e.scope),"function"==typeof e.setup&&e.setup.call(this,e),this.initialize(e)}register(){const e=this.constructor,n=this.depends;if(n){const e=Object.keys(n);for(const r of e){const e=n[r];e instanceof t&&e.register()}}return e.register(this)}unregister(){return this.constructor.unregister(this.name)}arr2ObjParams(t){if(this.params&&(t.length>1||Array.isArray(t[0])||t[0]&&"object"!=typeof t[0])){const e={},n=Object.keys(this.params);let r=Math.min(n.length,t.length);for(let s=0;s<r;s++)e[n[s]]=t[s];t=[e]}return t}obj2ArrParams(t){const e=[];if(t&&this.params&&Array.isArray(this.params)){const n=Object.keys(t);let r=Math.min(n.length,this.params.length);for(let s=0;s<r;s++)e.push(t[n[s]])}return e}runSync(t){const e=this.params&&Array.isArray(this.params);if(Array.isArray(t)){if(e)return this.func(...t);m("the function is not support array params, the params must be object!",this.name)}return e?(t=this.obj2ArrParams(t),console.warn('Warning:Use runWithPos() instead of run() for the "'+this.name+'" is function with position params'),this.func(...t)):this.func(t)}run(t){return this.runSync(t)}runAs(t,e){return this.runAsSync(t,e)}runAsSync(t,e){return this.constructor.runSync(t,e)}getFunc(t){return t?this.constructor.getFunc(t):this.runSync.bind(this)}runWithPosSync(...t){return this.params&&!Array.isArray(this.params)&&(t=this.arr2ObjParams(t)),this.func(...t)}runWithPosAsSync(t,...e){return this.constructor.runWithPosSync(t,...e)}runWithPos(...t){return this.runWithPosSync(...t)}runWithPosAs(t,...e){return this.runWithPosAsSync(t,...e)}getFuncWithPos(t){return t?this.constructor.getFuncWithPos(t):this.runWithPosSync.bind(this)}hasAsyncFeature(t){let e=this.asyncFeatures;return this._asyncFeatures&&(e|=this._asyncFeatures),xr.has(e,t)}isStream(t){return this.stream}},vs={name:{type:"string"},description:{type:"string"},func:{type:"function",assign(t,e,r,s,i){let o=t;const a=typeof t;return i.isExported?o="function"===a?t.toString():t:t&&("string"!==a&&(t=t.toString()),o=n(t,e.scope)),o}},params:{type:"object"},result:{type:"any"},setup:{type:"function"},depends:{type:"object",exported:!1},tags:{type:["array","string"]},isApi:{type:"boolean"},stream:{type:"boolean"},asyncFeatures:{type:"number"}};gs.defineProperties(gs,vs);var xs=class extends gs{constructor(){super(...arguments),this._emitter=new t,this.description="Return event bus",this.result="event"}get emitter(){return this._emitter}func(){return this.emitter}},Es=new xs(Ee);import{Cache as $s}from"secondary-cache";function ks({key:t,value:e,options:n}={}){return void 0!==t?null===e?this.cache.del(t):void 0!==e?this.cache.set(t,e,n):this.cache.get(t):(n&&this.cache.setDefaultOptions(n),this.cache)}function Ss(t,e){let n=gs.get(t);return n||(n=new gs(t,{func:ks,description:"get/set LRU cache or return the LRUCache object",params:{key:{name:"key",type:"string",description:"the key is undefined means change the default cache options"},value:{name:"value",type:"any",description:"the value to store, if value is null means remove the key"},options:{name:"options",type:"object|number",description:"the optional cache options:{capacity,expires,cleanInterval} or expires"}},result:"any"}),n.cache=new $s(e)),n}var Os=Ss("lrucache"),js=class t extends gs{static get apiRoot(){return t._apiRoot}static setApiRoot(e){t._apiRoot=e}static async loadFrom(){if(this._apiRoot){const t=await fetch(this._apiRoot,{headers:{"Content-Type":"application/json"}}),e=await t.json();e&&this.loadFromSync(e)}else m("missing apiRoot to load tools","ClientTools")}static loadFromSync(e){for(const n in e){const r=this.get(n),s=e[n];r?r instanceof t?r.assign(s):m(`${n} already registered as ${r.constructor.name}`,"ClientTools"):this.register(s)}}static async fetch(t,e){const n=this.get(t);if(n&&n.fetch)return n.fetch(e)}getUrlParams(t){if(void 0!==t){const e=JSON.stringify(t);if("{}"!==e&&"[]"!==e&&'""'!==e)return"?p="+encodeURIComponent(e)}return""}async fetch(t,e,n){const r={...this.fetchOptions};let s;r.headers&&r.headers["Content-Type"]||(r.headers={"Content-Type":"application/json",...r.headers}),t?.stream&&!r.headers.Connection&&(r.headers.Connection="keep-alive"),e||(e=this.action||"post"),"res"===e&&(e="get"),n?("string"!=typeof n&&(n=JSON.stringify(n)),n=this.name+"/"+n):n=this.name,r.method=e.toUpperCase(),"get"===e||"delete"===e?s=n+this.getUrlParams(t):(r.body=JSON.stringify(t),s=n);const i=await fetch(`${this.apiRoot}/${s}`,r);if(!i.ok){throw await this.errorFrom(i)}return i}async errorFrom(t){let e,n=t.status,r=t.statusText,s=this.name;if(t.body){const n=await t.text();try{const t=JSON.parse(n);t&&(t.error&&(r=t.error),t.name&&(s=t.name),t.data&&(e=t.data,e.name=s,e.what&&(e.msg=r,r=e.what)),t.message&&(r=r+":"+t.message))}catch(t){console.warn("🚀 ~ parse error body to json:",t)}}return u(r,s,n)}async func(t){const e=await this.fetch(t);if(t?.stream)return e;return await e.json()}},As={...x};js.defineProperties(js,As);var Ns=class extends js{async _func(t,e){const n=await this.fetch(e,t);if(e?.stream)return n;return await n.json()}async func(t){const e=t.action;return e&&delete t.action,this._func(e,t)}assignMethods(t){if(Array.isArray(t))for(const e of t){const t=e.startsWith("$")?e.slice(1):e;this[t]||(this[t]=(t=>this._func.bind(this,t))(e))}}},Cs={methods:{type:"array",assign(t,e,n,r,s){s?.isExported||e.assignMethods(t)}}};Ns.defineProperties(Ns,Cs);var Ms=class extends Ns{async fetch(t,e){if(t||(t={}),e&&"res"===this.action){if("get"===e||"delete"===e){let n=t.id;return n||m("id is required"),"string"==typeof n&&(n=encodeURIComponent(n)),delete t.id,super.fetch(t,e,n)}"list"===e?e="get":e.startsWith("$")&&(t.act=e,e="post")}return await super.fetch(t,e)}},Ts=class extends Ms{constructor(){super(...arguments),this._sseEvents={},this._forwardEvents=new Set,this.name=xe,this.description="subscribe server sent event",this.ebListener=async function(...t){const e=this.type;this.target.publish&&await this.target.publish({data:t,event:e})}}get evtSource(){let t=this._es;return t&&t.readyState!==EventSource.CLOSED||(t=this.initEventSource(this._esEvents)),t}get active(){return!!this._es&&this._es.readyState!==EventSource.CLOSED}set active(t){t!==this.active&&(t?this.initEventSource(this._esEvents):this._es&&(this._es.close(),this._es=void 0))}initEventSource(t){if("string"==typeof t&&(t=[t]),this._es&&this._es.readyState!==EventSource.CLOSED){if(!this._esEvents||t&&t.every((t=>this._esEvents.includes(t))))return this._es;this._es.close()}const e=t?this.getUrlParams({event:t}):"",n=`${this.apiRoot}/${this.name}${e}`,r=this._es=new EventSource(n);return Object.entries(this._sseEvents).forEach((([t,e])=>{r.addEventListener(t,e)})),this._esEvents=t,r}esListener(t){const e=t.data?JSON.parse(t.data):void 0,n=t.type;if(!this._forwardEvents.has(n)){const t=this.emitter;t&&e&&n&&(Array.isArray(e)?t.emit(n,...e):t.emit(n,e))}}async subscribe(t){const e=await this.sub({event:t});"string"==typeof t&&(t=[t]);const n=this.evtSource;for(const e of t)if(!this._sseEvents[e]){const t=this._sseEvents[e]=this.esListener.bind(this);n.addEventListener(e,t)}return e}async unsubscribe(t){const e=await this.unsub({event:t});"string"==typeof t&&(t=[t]);for(const e of t){const t=this._sseEvents[e];t&&(delete this._sseEvents[e],this.evtSource.removeEventListener(e,t))}return e}forwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)||(this._forwardEvents.add(e),this.on&&this.on(e,this.ebListener))}unforwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)&&(this._forwardEvents.delete(e),this.off&&this.off(e,this.ebListener))}async init(t){if(this.active=!1,this.initEventSource(t),t)return await this.subscribe(t)}},Is=new Ts(xe);import{getAllNames as Fs}from"util-ex";var Ps=class t extends gs{static get apiRoot(){return this._apiRoot}static setApiRoot(t){this._apiRoot=t}static toJSON(){const e={};for(const n in this.items){let r=this.items[n];(r instanceof t||r.isApi)&&(r.allowExportFunc||(r=r.toJSON(),delete r.func),e[n]=r)}return e}func({}){}},Vs={...x};Ps.defineProperties(Ps,Vs);var Us=class extends Ps{constructor(t,e={}){super(t,e),this.params={act:{type:"string"}};const n=this.methods=[];this.initRpcMethods(n)}get SpecialRpcMethodNames(){return this.constructor.SpecialRpcMethodNames}initRpcMethods(t=this.methods){const e=this.SpecialRpcMethodNames;if(Array.isArray(e))for(const n of e)"function"==typeof this[n]&&t.push(n);Fs(Object.getPrototypeOf(this)).filter((t=>t.startsWith("$")&&"function"==typeof this[t])).forEach((e=>{t.push(e);const n=e.slice(1);void 0===this[n]&&(this[n]=this[e])}))}cast(t,e){let n=this.params[t];return n&&("string"!=typeof n&&(n=n.type),"number"===n&&(e=Number(e))),e}getMethodFromParams(t){const e=t?.act;return e}castParams(t){return t}func(t){const e=this.getMethodFromParams(t);if(e&&"function"==typeof this[e])return t=this.castParams(t),this[e](t);throw new p(e,this.name)}};Us.defineProperties(Us,{methods:{type:"array"}});var Rs=class extends Us{constructor(t,e={}){super(t,e),this.action="res",this.params={id:{type:"string"},val:{type:"any"}}}static{this.SpecialRpcMethodNames=v}getMethodFromParams(t){let e=t?._req?.method?.toLowerCase();return"get"===e&&void 0===t.id&&(e="list"),"post"===e&&t.act&&(e=t.act),e}castParams(t){return void 0!==t.id&&(t.id=this.cast("id",t.id)),t}},Bs=Es.runSync(),_s=class t extends Rs{constructor(){super(...arguments),this.name=xe,this.description="subscribe server sent event",this.result="event",this.depends={[Ee]:Es}}static get sse(){return this._sse||(this._sse=new Oe),this._sse}get sse(){return this.constructor.sse}static publish(e,n){return t.sse.publish(e,n)}static{this.ebListener=function(...e){t.sse.publish(e,this.type)}}static subscribe(e,n,r){return t.sse.subscribe(e,n,r)}static alreadyForward(e){const n=Bs.listeners(e);for(const e of n)if(e===t.ebListener)return!0}publishSSE(t,e){return this.constructor.publish(t,e)}subscribeSSE(t,e,n){return"string"==typeof n&&(n=[n]),this.constructor.subscribe(t,e,n)}forward(e){Array.isArray(e)||(e=[e]);for(const n of e)t.alreadyForward(n)||Bs.on(n,t.ebListener)}unforward(e){"string"==typeof e&&(e=[e]);for(const n of e)Bs.off(n,t.ebListener)}list({_req:t,_res:e,event:n}){t&&e&&this.subscribeSSE(t,e,n)}$sub({event:t}){if(t)return this.forward(t),{event:t};m("event is required","sub",f.InvalidArgument)}$unsub({event:t}){if(t)return this.unforward(t),{event:t};m("event is required","unsub",f.InvalidArgument)}$publish({event:t,data:e}){if(t&&e){"string"==typeof t&&(t=[t]);for(const n of t)this.publishSSE(e,n);return{event:t}}m("event or data is required","pub",f.InvalidArgument)}isStream(t){return"list"===this.getMethodFromParams(t)}},Ls=new _s(xe);function zs(){Es.register(),Os.register()}export{g as PASSING_SCORE,v as ActionNames,x as RemoteToolFuncSchema,r as AbortError,s as AbortErrorCode,i as AlreadyExistsError,o as AlreadyExistsErrorCode,a as BaseError,c as CommonError,u as createError,f as ErrorCode,l as InternalErrorCode,h as NotFoundErrorCode,p as NotFoundError,w as NotImplementedErrorCode,d as NotImplementationError,m as throwError,$ as parseDateFormat,N as toDateTime,C as textToDate,M as dateToText,S as formatISO,O as parseISO,j as toDate,T as AITextGenerationFinishReasons,I as AIMessageTypes,F as AIChatRoles,P as messagesToText,V as PromptTypes,U as PromptTemplateTypes,B as defaultTemplateFormat,_ as PromptTemplate,q as PromptExampleSelector,X as tokenize,Et as parse,Rt as Interpreter,zt as builtins,Jt as EnvironmentEx,Dt as Template,Gt as HfPromptTemplate,Ht as createHfValueFunc,Xt as parseFString,Qt as interpolateFString,te as FStringPromptTemplate,ne as interpolateGolangTemplate,re as GolangPromptTemplate,se as sortedValues,ie as FewShotPromptTemplate,ce as interpolateEnv,ue as expandEnv,fe as expandObjEnv,ye as splitSentence,be as truncTo,ge as wait,xe as EventName,Ee as EventBusName,$e as backendEventable,Se as SSEChannelAlreadyClosedErrCode,Oe as SSEChannel,je as isWebStream,Ae as RStreamErrCode,Ne as ResponseRStreamErrCode,Ce as ReadableStreamError,Me as getResponseErrorReadableStream,Te as createEmptyReadableStream,Fe as createEventStreamTransformer,Pe as trimStartOfStreamHelper,Ve as AIStream,Ue as readableFromAsyncIterable,Re as createCallbacksTransformer,Qe as uuid,qe as v1,Je as v4,De as v5,We as stringify,Ke as parse2,Ze as validate,Ge as version,He as NIL,en as canonicalize,nn as base32768,an as xxhash32,cn as xxhash64,un as XXHashAlgorithm,fn as xxhash,ln as xxhashAsStr,pn as FilenameReservedRegex,wn as WindowsReservedNameRegex,gn as filenameReservedRegex,vn as reControlCharsRegex,xn as isValidFilename,En as isValidFilepath,$n as sanitizeFilename,kn as sanitizeFilepath,Sn as getMultiLevelExtname,On as extNameLevel,Nn as isModelNameMatched,Cn as getAllEnumKeys,In as parseJsJson,Vn as filterValidFnScope,Un as getKeysPath,Bn as createEndWithRepetitionDetector,zn as fileIsExists,qn as loadFileFromPaths,Dn as loadTextFromPaths,Wn as readFilenamesRecursiveSync,Kn as getRealFilepath,tr as ConfigFile,sr as mimeType,or as registerYamlTag,ar as parseYaml,cr as stringifyYaml,ur as getConfigFileNames,fr as getConfigs,lr as saveConfigFile,mr as jsonFilterToWhere,yr as matchUrlProtocol,br as paramsSizeToScaleStr,gr as scaleStrToParamsSize,vr as jsonToMarkdownStr,xr as IntSet,$r as DefaultAsyncSemaphoreCapacity,Nr as Semaphore,Cr as RateLimit,ws as ToolAsyncMultiTaskBit,ds as ToolAsyncCancelableBit,ms as ToolAsyncPriorityBit,ys as AsyncFeatureBits,bs as AsyncFeatures,gs as ToolFunc,vs as ToolFuncSchema,Ir as TaskAbortController,Fr as CancelableAbility,Pr as makeToolFuncCancelable,Vr as countRegexMatches,Br as parseObjectArguments,_r as simplifyObjectArguments,Lr as parseObjectArgumentInfos,zr as ChoiceArgProcessor,qr as TemplateArgProcessor,Jr as AIArgProcessor,Wr as quoteStr,Hr as parseObjectArgInfo,Xr as parseObjectArgumentsAsArgInfos,Qr as parseCommand,rs as memoize,os as getPackageDir,cs as isSubdirectory,us as hasDirectoryIn,hs as isRegExp,y as createAbilityInjector,b as toRegExp,js as ClientTools,As as ClientToolFuncSchema,Ps as ServerTools,Vs as ServerToolFuncSchema,xs as EventToolFunc,Es as event,ks as _lrucache,Ss as createLRUCache,Os as lrucache,Ms as ResClientTools,Ts as EventClient,Is as eventClient,Rs as ResServerTools,_s as EventServer,Ls as eventServer,zs as registerCoreTools};
|
package/dist/funcs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var t,e=Object.create,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,i=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,a=(t,e,i,a)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let c of s(e))o.call(t,c)||c===i||r(t,c,{get:()=>e[c],enumerable:!(a=n(e,c))||a.enumerable});return t},c=(t,n,s)=>(s=null!=t?e(i(t)):{},a(!n&&t&&t.__esModule?s:r(s,"default",{value:t,enumerable:!0}),t)),u={};((t,e)=>{for(var n in e)r(t,n,{get:e[n],enumerable:!0})})(u,{EventClient:()=>pe,EventServer:()=>ve,EventToolFunc:()=>ne,_lrucache:()=>oe,createLRUCache:()=>ae,event:()=>se,eventClient:()=>de,eventServer:()=>ke,lrucache:()=>ce,registerCoreTools:()=>Se}),module.exports=(t=u,a(r({},"__esModule",{value:!0}),t));var h=require("events-ex"),l=require("property-manager"),f=require("util-ex"),w=require("@isdk/common-error"),p=(require("custom-ability"),["get","post","put","delete","patch","list","res"]),d={apiRoot:{type:"string",get(){return this._apiRoot??this.constructor.apiRoot},set(t){this._apiRoot=t}},action:{type:"string",assign:(t,e,r,n,s)=>t||"post"},fetchOptions:{type:"object"},allowExportFunc:{type:"boolean"}},y=(require("date-fns"),require("date-fns"),require("custom-factory"));var m="default",b=class t extends y.BaseFactory{static from(t,e){return new this(t,e)}static async format(t){return new this(t).format()}static async formatIf(t){if(this.isTemplate(t)){return new this(t).format()}}static isTemplate(e){if(e?.template){const r=e.templateFormat||m,n=t.get(r);return n.isTemplate!==t.isTemplate&&n.isTemplate(e)}}filterData(t){return Array.isArray(this.inputVariables)&&(t=Object.fromEntries(Object.entries(t).filter((([t])=>this.inputVariables.includes(t))))),t}constructor(e,r){"string"==typeof e?(r||(r={}),r.template=e):e&&(e=(r=e).template);const{templateFormat:n}=r||{};if(super(r),this.constructor===t){const e=t.get(n||m);if(e)return Reflect.construct(e,arguments);throw new w.CommonError(`Prompt template type ${n} not found`,"PromptTemplate",w.ErrorCode.InvalidArgument)}}_initialize(t){throw new w.NotImplementationError("Not implemented","PromptTemplate")}initialize(e){this.constructor!==t&&(Object.assign(this,this.toJSON(e)),e?.ignoreInitialize||this._initialize(e))}_format(t){throw new w.NotImplementationError("Not implemented","PromptTemplate")}async format(e){const r=this.data;if(e={...r,...e},r)for(const[t,n]of Object.entries(r))e[t]===n&&"function"==typeof n&&(delete e[t],e[t]=await n(e));for(const[r,n]of Object.entries(e))n instanceof t&&(delete e[r],e[r]=await n.format(e));return this._format(e)}partial(t){t={...this.data,...t};const e=this.toJSON();return e.data=t,e.ignoreInitialize=!0,new this.constructor(e)}toJSON(e=this){let r={template:e.template,data:e.data,inputVariables:e.inputVariables,compiledTemplate:e.compiledTemplate};var n;return e.templateFormat&&t.get(e.templateFormat)!==this.constructor&&(r.templateFormat=e.templateFormat),n=r,r=Object.keys(n).reduce(((t,e)=>{const r=n[e];return null!=r&&(t[e]=r),t}),{}),r}};(async function(){let t=!1,e=!1;try{for await(const e of function*(){try{yield Promise.reject()}finally{t=!0}}())throw new Error("impossible")}catch{e=!0}return e&&t})().then((t=>{t}));var g=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",BooleanLiteral:"BooleanLiteral",StringLiteral:"StringLiteral",Identifier:"Identifier",Equals:"Equals",OpenParen:"OpenParen",CloseParen:"CloseParen",OpenStatement:"OpenStatement",CloseStatement:"CloseStatement",OpenExpression:"OpenExpression",CloseExpression:"CloseExpression",OpenSquareBracket:"OpenSquareBracket",CloseSquareBracket:"CloseSquareBracket",OpenCurlyBracket:"OpenCurlyBracket",CloseCurlyBracket:"CloseCurlyBracket",Comma:"Comma",Dot:"Dot",Colon:"Colon",Pipe:"Pipe",CallOperator:"CallOperator",AdditiveBinaryOperator:"AdditiveBinaryOperator",MultiplicativeBinaryOperator:"MultiplicativeBinaryOperator",ComparisonBinaryOperator:"ComparisonBinaryOperator",UnaryOperator:"UnaryOperator",Set:"Set",If:"If",For:"For",In:"In",Is:"Is",NotIn:"NotIn",Else:"Else",EndIf:"EndIf",ElseIf:"ElseIf",EndFor:"EndFor",And:"And",Or:"Or",Not:"UnaryOperator",Macro:"Macro",EndMacro:"EndMacro"}),E=Object.freeze({set:g.Set,for:g.For,in:g.In,is:g.Is,if:g.If,else:g.Else,endif:g.EndIf,elif:g.ElseIf,endfor:g.EndFor,and:g.And,or:g.Or,not:g.Not,"not in":g.NotIn,macro:g.Macro,endmacro:g.EndMacro,true:g.BooleanLiteral,false:g.BooleanLiteral,True:g.BooleanLiteral,False:g.BooleanLiteral}),x=class{constructor(t,e){this.value=t,this.type=e}};function v(t){return/\w/.test(t)}function k(t){return/[0-9]/.test(t)}var S=[["{%",g.OpenStatement],["%}",g.CloseStatement],["{{",g.OpenExpression],["}}",g.CloseExpression],["(",g.OpenParen],[")",g.CloseParen],["{",g.OpenCurlyBracket],["}",g.CloseCurlyBracket],["[",g.OpenSquareBracket],["]",g.CloseSquareBracket],[",",g.Comma],[".",g.Dot],[":",g.Colon],["|",g.Pipe],["<=",g.ComparisonBinaryOperator],[">=",g.ComparisonBinaryOperator],["==",g.ComparisonBinaryOperator],["!=",g.ComparisonBinaryOperator],["<",g.ComparisonBinaryOperator],[">",g.ComparisonBinaryOperator],["+",g.AdditiveBinaryOperator],["-",g.AdditiveBinaryOperator],["*",g.MultiplicativeBinaryOperator],["/",g.MultiplicativeBinaryOperator],["%",g.MultiplicativeBinaryOperator],["=",g.Equals]],$=new Map([["n","\n"],["t","\t"],["r","\r"],["b","\b"],["f","\f"],["v","\v"],["'","'"],['"','"'],["\\","\\"]]);var O=class{constructor(){this.type="Statement"}},j=class extends O{constructor(t){super(),this.body=t,this.type="Program"}},C=class extends O{constructor(t,e,r){super(),this.test=t,this.body=e,this.alternate=r,this.type="If"}},A=class extends O{constructor(t,e,r,n){super(),this.loopvar=t,this.iterable=e,this.body=r,this.defaultBlock=n,this.type="For"}},M=class extends O{constructor(t,e){super(),this.assignee=t,this.value=e,this.type="Set"}},T=class extends O{constructor(t,e,r){super(),this.name=t,this.args=e,this.body=r,this.type="Macro"}},q=class extends O{constructor(){super(...arguments),this.type="Expression"}},I=class extends q{constructor(t,e,r){super(),this.object=t,this.property=e,this.computed=r,this.type="MemberExpression"}},V=class extends q{constructor(t,e){super(),this.callee=t,this.args=e,this.type="CallExpression"}},N=class extends q{constructor(t){super(),this.value=t,this.type="Identifier"}},P=class extends q{constructor(t){super(),this.value=t,this.type="Literal"}},U=class extends P{constructor(){super(...arguments),this.type="NumericLiteral"}},B=class extends P{constructor(){super(...arguments),this.type="StringLiteral"}},F=class extends P{constructor(){super(...arguments),this.type="BooleanLiteral"}},_=class extends P{constructor(){super(...arguments),this.type="ArrayLiteral"}},L=class extends P{constructor(){super(...arguments),this.type="TupleLiteral"}},R=class extends P{constructor(){super(...arguments),this.type="ObjectLiteral"}},J=class extends q{constructor(t,e,r){super(),this.operator=t,this.left=e,this.right=r,this.type="BinaryExpression"}},z=class extends q{constructor(t,e){super(),this.operand=t,this.filter=e,this.type="FilterExpression"}},W=class extends q{constructor(t,e){super(),this.iterable=t,this.test=e,this.type="SelectExpression"}},K=class extends q{constructor(t,e,r){super(),this.operand=t,this.negate=e,this.test=r,this.type="TestExpression"}},D=class extends q{constructor(t,e){super(),this.operator=t,this.argument=e,this.type="UnaryExpression"}},Z=class extends q{constructor(t=void 0,e=void 0,r=void 0){super(),this.start=t,this.stop=e,this.step=r,this.type="SliceExpression"}},H=class extends q{constructor(t,e){super(),this.key=t,this.value=e,this.type="KeywordArgumentExpression"}};function G(t){const e=new j([]);let r=0;function n(e,n){const s=t[r++];if(!s||s.type!==e)throw new Error(`Parser Error: ${n}. ${s.type} !== ${e}.`);return s}function s(){let e;switch(t[r].type){case g.Text:e=new B(n(g.Text,"Expected text token").value);break;case g.OpenStatement:e=function(){let e;switch(n(g.OpenStatement,"Expected opening statement token"),t[r].type){case g.Set:++r,e=a(),n(g.CloseStatement,"Expected closing statement token");break;case g.If:++r,e=c(),n(g.OpenStatement,"Expected {% token"),n(g.EndIf,"Expected endif token"),n(g.CloseStatement,"Expected %} token");break;case g.Macro:++r,e=function(){const t=v();if("Identifier"!==t.type)throw new SyntaxError("Expected identifier following macro statement");const e=m();n(g.CloseStatement,"Expected closing statement token");const r=[];for(;i(g.OpenStatement,g.EndMacro);)r.push(s());return new T(t,e,r)}(),n(g.OpenStatement,"Expected {% token"),n(g.EndMacro,"Expected endmacro token"),n(g.CloseStatement,"Expected %} token");break;case g.For:++r,e=function(){const t=u(!0);if(!(t instanceof N||t instanceof L))throw new SyntaxError(`Expected identifier/tuple for the loop variable, got ${t.type} instead`);n(g.In,"Expected `in` keyword following loop variable");const e=h();n(g.CloseStatement,"Expected closing statement token");const a=[];for(;i(g.OpenStatement,g.EndFor)&&i(g.OpenStatement,g.Else);)a.push(s());const c=[];if(o(g.OpenStatement,g.Else))for(++r,++r,n(g.CloseStatement,"Expected closing statement token");i(g.OpenStatement,g.EndFor);)c.push(s());return new A(t,e,a,c)}(),n(g.OpenStatement,"Expected {% token"),n(g.EndFor,"Expected endfor token"),n(g.CloseStatement,"Expected %} token");break;default:throw new SyntaxError(`Unknown statement type: ${t[r].type} ${t[r].value}`)}return e}(),e.isStatement=!0;break;case g.OpenExpression:e=function(){n(g.OpenExpression,"Expected opening expression token");const t=h();return n(g.CloseExpression,"Expected closing expression token"),t}(),e.isStatement=!0;break;default:throw new SyntaxError(`Unexpected token type: ${t[r].type}`)}return e}function i(...e){return r+e.length<=t.length&&e.some(((e,n)=>e!==t[r+n].type))}function o(...e){return r+e.length<=t.length&&e.every(((e,n)=>e===t[r+n].type))}function a(){const t=h();if(o(g.Equals)){++r;const e=a();return new M(t,e)}return t}function c(){const e=h();n(g.CloseStatement,"Expected closing statement token");const i=[],a=[];for(;t[r]?.type!==g.OpenStatement||t[r+1]?.type!==g.ElseIf&&t[r+1]?.type!==g.Else&&t[r+1]?.type!==g.EndIf;)i.push(s());if(t[r]?.type===g.OpenStatement&&t[r+1]?.type!==g.EndIf)if(++r,o(g.ElseIf))n(g.ElseIf,"Expected elseif token"),a.push(c());else for(n(g.Else,"Expected else token"),n(g.CloseStatement,"Expected closing statement token");t[r]?.type!==g.OpenStatement||t[r+1]?.type!==g.EndIf;)a.push(s());return new C(e,i,a)}function u(t=!1){const e=t?v:h,n=[e()],s=o(g.Comma);for(;s&&(++r,n.push(e()),o(g.Comma)););return s?new L(n):n[0]}function h(){return function(){const t=l();if(o(g.If)){++r;const e=l();if(o(g.Else)){++r;const n=l();return new C(e,[t],[n])}return new W(t,e)}return t}()}function l(){let e=f();for(;o(g.Or);){const n=t[r];++r;const s=f();e=new J(n,e,s)}return e}function f(){let e=w();for(;o(g.And);){const n=t[r];++r;const s=w();e=new J(n,e,s)}return e}function w(){let e;for(;o(g.Not);){const n=t[r];++r;const s=w();e=new D(n,s)}return e??function(){let e=p();for(;o(g.ComparisonBinaryOperator)||o(g.In)||o(g.NotIn);){const n=t[r];++r;const s=p();e=new J(n,e,s)}return e}()}function p(){let e=E();for(;o(g.AdditiveBinaryOperator);){const n=t[r];++r;const s=E();e=new J(n,e,s)}return e}function d(){const e=function(){let e=v();for(;o(g.Dot)||o(g.OpenSquareBracket);){const s=t[r];let i;++r;const o=s.type!==g.Dot;if(o)i=b(),n(g.CloseSquareBracket,"Expected closing square bracket");else if(i=v(),"Identifier"!==i.type)throw new SyntaxError("Expected identifier following dot operator");e=new I(e,i,o)}return e}();return o(g.OpenParen)?y(e):e}function y(t){let e=new V(t,m());return o(g.OpenParen)&&(e=y(e)),e}function m(){n(g.OpenParen,"Expected opening parenthesis for arguments list");const t=function(){const t=[];for(;!o(g.CloseParen);){let e=h();if(o(g.Equals)){if(++r,!(e instanceof N))throw new SyntaxError("Expected identifier for keyword argument");const t=h();e=new H(e,t)}t.push(e),o(g.Comma)&&++r}return t}();return n(g.CloseParen,"Expected closing parenthesis for arguments list"),t}function b(){const t=[];let e=!1;for(;!o(g.CloseSquareBracket);)o(g.Colon)?(t.push(void 0),++r,e=!0):(t.push(h()),o(g.Colon)&&(++r,e=!0));if(0===t.length)throw new SyntaxError("Expected at least one argument for member/slice expression");if(e){if(t.length>3)throw new SyntaxError("Expected 0-3 arguments for slice expression");return new Z(...t)}return t[0]}function E(){let e=x();for(;o(g.MultiplicativeBinaryOperator);){const n=t[r];++r;const s=x();e=new J(n,e,s)}return e}function x(){let t=function(){let t=d();for(;o(g.Pipe);){++r;let e=v();if(!(e instanceof N))throw new SyntaxError("Expected identifier for the filter");o(g.OpenParen)&&(e=y(e)),t=new z(t,e)}return t}();for(;o(g.Is);){++r;const e=o(g.Not);e&&++r;let n=v();if(n instanceof F&&(n=new N(n.value.toString())),!(n instanceof N))throw new SyntaxError("Expected identifier for the test");t=new K(t,e,n)}return t}function v(){const e=t[r];switch(e.type){case g.NumericLiteral:return++r,new U(Number(e.value));case g.StringLiteral:return++r,new B(e.value);case g.BooleanLiteral:return++r,new F("true"===e.value.toLowerCase());case g.Identifier:return++r,new N(e.value);case g.OpenParen:{++r;const e=u();if(t[r].type!==g.CloseParen)throw new SyntaxError(`Expected closing parenthesis, got ${t[r].type} instead`);return++r,e}case g.OpenSquareBracket:{++r;const t=[];for(;!o(g.CloseSquareBracket);)t.push(h()),o(g.Comma)&&++r;return++r,new _(t)}case g.OpenCurlyBracket:{++r;const t=new Map;for(;!o(g.CloseCurlyBracket);){const e=h();n(g.Colon,"Expected colon between key and value in object literal");const s=h();t.set(e,s),o(g.Comma)&&++r}return++r,new R(t)}default:throw new SyntaxError(`Unexpected token: ${e.type}`)}}for(;r<t.length;)e.body.push(s());return e}function Q(t,e,r=1){void 0===e&&(e=t,t=0);const n=[];for(let s=t;s<e;s+=r)n.push(s);return n}function X(t,e,r,n=1){const s=Math.sign(n);s>=0?(e=(e??=0)<0?Math.max(t.length+e,0):Math.min(e,t.length),r=(r??=t.length)<0?Math.max(t.length+r,0):Math.min(r,t.length)):(e=(e??=t.length-1)<0?Math.max(t.length+e,-1):Math.min(e,t.length-1),r=(r??=-1)<-1?Math.max(t.length+r,-1):Math.min(r,t.length-1));const i=[];for(let o=e;s*o<s*r;o+=n)i.push(t[o]);return i}function Y(t){return t.replace(/\b\w/g,(t=>t.toUpperCase()))}var tt=class{constructor(t=void 0){this.type="RuntimeValue",this.builtins=new Map,this.value=t}__bool__(){return new nt(!!this.value)}toString(){return""+this.value}toJSON(){return this.value}},et=class extends tt{constructor(){super(...arguments),this.type="NumericValue"}},rt=class t extends tt{constructor(){super(...arguments),this.type="StringValue",this.builtins=new Map([["upper",new ct((()=>new t(this.value.toUpperCase())))],["lower",new ct((()=>new t(this.value.toLowerCase())))],["strip",new ct((()=>new t(this.value.trim())))],["title",new ct((()=>new t(Y(this.value))))],["length",new et(this.value.length)],["rstrip",new ct((()=>new t(this.value.trimEnd())))],["lstrip",new ct((()=>new t(this.value.trimStart())))]])}},nt=class extends tt{constructor(){super(...arguments),this.type="BooleanValue"}},st=class extends tt{constructor(t,e){super(t),this.orgValue=e,this.type="ObjectValue",this.builtins=new Map([["get",new ct((([t,e])=>{if(!(t instanceof rt))throw new Error(`Object key must be a string: got ${t.type}`);return this.value.get(t.value)??e??new ut}))],["items",new ct((()=>new ot(Array.from(this.value.entries()).map((([t,e])=>new ot([new rt(t),e]))))))]])}toString(){let t;return t=this.orgValue&&this.orgValue.toString!==Object.prototype.toString?this.orgValue.toString():JSON.stringify(Object.fromEntries(this.value.entries())),t}toJSON(){return this.orgValue?this.orgValue:Object.fromEntries(this.value.entries())}__bool__(){return new nt(this.value.size>0)}},it=class extends st{constructor(){super(...arguments),this.type="KeywordArgumentsValue"}},ot=class extends tt{constructor(){super(...arguments),this.type="ArrayValue",this.builtins=new Map([["length",new et(this.value.length)]])}__bool__(){return new nt(this.value.length>0)}},at=class extends ot{constructor(){super(...arguments),this.type="TupleValue"}},ct=class extends tt{constructor(){super(...arguments),this.type="FunctionValue"}},ut=class extends tt{constructor(){super(...arguments),this.type="NullValue"}},ht=class extends tt{constructor(){super(...arguments),this.type="UndefinedValue"}},lt=class{constructor(t){this.parent=t,this.variables=new Map([["namespace",new ct((t=>{if(0===t.length)return new st(new Map);if(1!==t.length||!(t[0]instanceof st))throw new Error("`namespace` expects either zero arguments or a single object argument");return t[0]}))]]),this.tests=new Map([["boolean",t=>"BooleanValue"===t.type],["callable",t=>t instanceof ct],["odd",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "odd" to type: ${t.type}`);return t.value%2!=0}],["even",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "even" to type: ${t.type}`);return t.value%2==0}],["false",t=>"BooleanValue"===t.type&&!t.value],["true",t=>"BooleanValue"===t.type&&t.value],["string",t=>"StringValue"===t.type],["number",t=>"NumericValue"===t.type],["integer",t=>"NumericValue"===t.type&&Number.isInteger(t.value)],["iterable",t=>t instanceof ot||t instanceof rt],["lower",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toLowerCase()}],["upper",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toUpperCase()}],["none",t=>"NullValue"===t.type],["defined",t=>"UndefinedValue"!==t.type],["undefined",t=>"UndefinedValue"===t.type],["equalto",(t,e)=>t.value===e.value],["eq",(t,e)=>t.value===e.value]])}set(t,e){return this.declareVariable(t,wt(e))}declareVariable(t,e){if(this.variables.has(t))throw new SyntaxError(`Variable already declared: ${t}`);return this.variables.set(t,e),e}setVariable(t,e){return this.variables.set(t,e),e}resolve(t){if(this.variables.has(t))return this;if(this.parent)return this.parent.resolve(t);throw new Error(`Unknown variable: ${t}`)}lookupVariable(t){try{return this.resolve(t).variables.get(t)??new ht}catch{return new ht}}},ft=class{constructor(t){this.global=t??new lt}run(t){return this.evaluate(t,this.global)}evaluateBinaryExpression(t,e){const r=this.evaluate(t.left,e);switch(t.operator.value){case"and":return r.__bool__().value?this.evaluate(t.right,e):r;case"or":return r.__bool__().value?r:this.evaluate(t.right,e)}const n=this.evaluate(t.right,e);switch(t.operator.value){case"==":return new nt(r.value==n.value);case"!=":return new nt(r.value!=n.value)}if(r instanceof ht||n instanceof ht)throw new Error("Cannot perform operation on undefined values");if(r instanceof ut||n instanceof ut)throw new Error("Cannot perform operation on null values");if(r instanceof et&&n instanceof et)switch(t.operator.value){case"+":return new et(r.value+n.value);case"-":return new et(r.value-n.value);case"*":return new et(r.value*n.value);case"/":return new et(r.value/n.value);case"%":return new et(r.value%n.value);case"<":return new nt(r.value<n.value);case">":return new nt(r.value>n.value);case">=":return new nt(r.value>=n.value);case"<=":return new nt(r.value<=n.value)}else if(r instanceof ot&&n instanceof ot){if("+"===t.operator.value)return new ot(r.value.concat(n.value))}else if(n instanceof ot){const e=void 0!==n.value.find((t=>t.value===r.value));switch(t.operator.value){case"in":return new nt(e);case"not in":return new nt(!e)}}if((r instanceof rt||n instanceof rt)&&"+"===t.operator.value)return new rt(r.toString()+n.toString());if(r instanceof rt&&n instanceof rt)switch(t.operator.value){case"in":return new nt(n.value.includes(r.value));case"not in":return new nt(!n.value.includes(r.value))}if(r instanceof rt&&n instanceof st)switch(t.operator.value){case"in":return new nt(n.value.has(r.value));case"not in":return new nt(!n.value.has(r.value))}throw new SyntaxError(`Unknown operator "${t.operator.value}" between ${r.type} and ${n.type}`)}evaluateArguments(t,e){const r=[],n=new Map;for(const s of t)if("KeywordArgumentExpression"===s.type){const t=s;n.set(t.key.value,this.evaluate(t.value,e))}else{if(n.size>0)throw new Error("Positional arguments must come before keyword arguments");r.push(this.evaluate(s,e))}return[r,n]}evaluateFilterExpression(t,e){const r=this.evaluate(t.operand,e);if("Identifier"===t.filter.type){const n=t.filter,s=e.lookupVariable(n.value);if(s instanceof ct)return s.value([r],e);if(r instanceof ot)switch(n.value){case"list":return r;case"first":return r.value[0];case"last":return r.value[r.value.length-1];case"length":return new et(r.value.length);case"reverse":return new ot(r.value.reverse());case"sort":return new ot(r.value.sort(((t,e)=>{if(t.type!==e.type)throw new Error(`Cannot compare different types: ${t.type} and ${e.type}`);switch(t.type){case"NumericValue":return t.value-e.value;case"StringValue":return t.value.localeCompare(e.value);default:throw new Error(`Cannot compare type: ${t.type}`)}})));default:throw new Error(`Unknown ArrayValue filter: ${n.value}`)}else if(r instanceof rt)switch(n.value){case"length":return new et(r.value.length);case"upper":return new rt(r.value.toUpperCase());case"lower":return new rt(r.value.toLowerCase());case"title":return new rt(Y(r.value));case"capitalize":return new rt(r.value.charAt(0).toUpperCase()+r.value.slice(1));case"trim":return new rt(r.value.trim());case"trimStart":return new rt(r.value.trimStart());case"trimEnd":return new rt(r.value.trimEnd());case"indent":return new rt(r.value.split("\n").map(((t,e)=>0===e||0===t.length?t:" "+t)).join("\n"));case"string":return r;default:throw new Error(`Unknown StringValue filter: ${n.value}`)}else{if(r instanceof et){if("abs"===n.value)return new et(Math.abs(r.value));throw new Error(`Unknown NumericValue filter: ${n.value}`)}if(r instanceof st)switch(n.value){case"items":return new ot(Array.from(r.value.entries()).map((([t,e])=>new ot([new rt(t),e]))));case"length":return new et(r.value.size);case"string":return new rt(r.toString());default:throw new Error(`Unknown ObjectValue filter: ${n.value}`)}}throw new Error(`Cannot apply filter "${n.value}" to type: ${r.type}`)}if("CallExpression"===t.filter.type){const n=t.filter;if("Identifier"!==n.callee.type)throw new Error(`Unknown filter: ${n.callee.type}`);const s=n.callee.value,i=e.lookupVariable(s);if(i instanceof ct){const[t,s]=this.evaluateArguments(n.args,e);return s.size>0&&t.push(new it(s)),i.value([r,...t],e)}if(r instanceof ot){switch(s){case"selectattr":{if(r.value.some((t=>!(t instanceof st))))throw new Error("`selectattr` can only be applied to array of objects");if(n.args.some((t=>"StringLiteral"!==t.type)))throw new Error("arguments of `selectattr` must be strings");const[t,s,i]=n.args.map((t=>this.evaluate(t,e)));let o;if(s){const t=e.tests.get(s.value);if(!t)throw new Error(`Unknown test: ${s.value}`);o=t}else o=(...t)=>t[0].__bool__().value;const a=r.value.filter((e=>{const r=e.value.get(t.value);return!!r&&o(r,i)}));return new ot(a)}case"map":{const[,t]=this.evaluateArguments(n.args,e);if(t.has("attribute")){const e=t.get("attribute");if(!(e instanceof rt))throw new Error("attribute must be a string");const n=t.get("default"),s=r.value.map((t=>{if(!(t instanceof st))throw new Error("items in map must be an object");return t.value.get(e.value)??n??new ht}));return new ot(s)}throw new Error("`map` expressions without `attribute` set are not currently supported.")}}throw new Error(`Unknown ArrayValue filter: ${s}`)}if(r instanceof rt){if("indent"===s){const[t,s]=this.evaluateArguments(n.args,e),i=t.at(0)??s.get("width")??new et(4);if(!(i instanceof et))throw new Error("width must be a number");const o=t.at(1)??s.get("first")??new nt(!1),a=t.at(2)??s.get("blank")??new nt(!1),c=r.value.split("\n"),u=" ".repeat(i.value),h=c.map(((t,e)=>!o.value&&0===e||!a.value&&0===t.length?t:u+t));return new rt(h.join("\n"))}throw new Error(`Unknown StringValue filter: ${s}`)}throw new Error(`Cannot apply filter "${s}" to type: ${r.type}`)}throw new Error(`Unknown filter: ${t.filter.type}`)}evaluateTestExpression(t,e){const r=this.evaluate(t.operand,e),n=e.tests.get(t.test.value);if(!n)throw new Error(`Unknown test: ${t.test.value}`);const s=n(r);return new nt(t.negate?!s:s)}evaluateUnaryExpression(t,e){const r=this.evaluate(t.argument,e);if("not"===t.operator.value)return new nt(!r.value);throw new SyntaxError(`Unknown operator: ${t.operator.value}`)}evalProgram(t,e){return this.evaluateBlock(t.body,e)}evaluateBlock(t,e){let r="";for(const n of t){const t=this.evaluate(n,e);"NullValue"!==t.type&&"UndefinedValue"!==t.type&&(r+=t)}return new rt(r)}evaluateIdentifier(t,e){return e.lookupVariable(t.value)}evaluateCallExpression(t,e){const[r,n]=this.evaluateArguments(t.args,e);n.size>0&&r.push(new it(n));const s=this.evaluate(t.callee,e);if("FunctionValue"!==s.type)throw new Error(`Cannot call something that is not a function: got ${s.type}`);return s.value(r,e)}evaluateSliceExpression(t,e,r){if(!(t instanceof ot||t instanceof rt))throw new Error("Slice object must be an array or string");const n=this.evaluate(e.start,r),s=this.evaluate(e.stop,r),i=this.evaluate(e.step,r);if(!(n instanceof et||n instanceof ht))throw new Error("Slice start must be numeric or undefined");if(!(s instanceof et||s instanceof ht))throw new Error("Slice stop must be numeric or undefined");if(!(i instanceof et||i instanceof ht))throw new Error("Slice step must be numeric or undefined");return t instanceof ot?new ot(X(t.value,n.value,s.value,i.value)):new rt(X(Array.from(t.value),n.value,s.value,i.value).join(""))}evaluateMemberExpression(t,e){const r=this.evaluate(t.object,e);let n,s;if(t.computed){if("SliceExpression"===t.property.type)return this.evaluateSliceExpression(r,t.property,e);n=this.evaluate(t.property,e)}else n=new rt(t.property.value);if(r instanceof st){if(!(n instanceof rt))throw new Error(`Cannot access property with non-string: got ${n.type}`);s=r.value.get(n.value)??r.builtins.get(n.value)}else if(r instanceof ot||r instanceof rt)if(n instanceof et)s=r.value.at(n.value),r instanceof rt&&(s=new rt(r.value.at(n.value)));else{if(!(n instanceof rt))throw new Error(`Cannot access property with non-string/non-number: got ${n.type}`);s=r.builtins.get(n.value)}else{if(!(n instanceof rt))throw new Error(`Cannot access property with non-string: got ${n.type}`);s=r.builtins.get(n.value)}return s instanceof tt?s:new ht}evaluateSet(t,e){const r=this.evaluate(t.value,e);if("Identifier"===t.assignee.type){const n=t.assignee.value;e.setVariable(n,r)}else{if("MemberExpression"!==t.assignee.type)throw new Error(`Invalid LHS inside assignment expression: ${JSON.stringify(t.assignee)}`);{const n=t.assignee,s=this.evaluate(n.object,e);if(!(s instanceof st))throw new Error("Cannot assign to member of non-object");if("Identifier"!==n.property.type)throw new Error("Cannot assign to member with non-identifier property");s.value.set(n.property.value,r)}}return new ut}evaluateIf(t,e){const r=this.evaluate(t.test,e);return this.evaluateBlock(r.__bool__().value?t.body:t.alternate,e)}evaluateFor(t,e){const r=new lt(e);let n,s;if("SelectExpression"===t.iterable.type){const e=t.iterable;s=this.evaluate(e.iterable,r),n=e.test}else s=this.evaluate(t.iterable,r);if(!(s instanceof ot))throw new Error(`Expected iterable type in for loop: got ${s.type}`);const i=[],o=[];for(let e=0;e<s.value.length;++e){const a=new lt(r),c=s.value[e];let u;if("Identifier"===t.loopvar.type)u=e=>e.setVariable(t.loopvar.value,c);else{if("TupleLiteral"!==t.loopvar.type)throw new Error(`Invalid loop variable(s): ${t.loopvar.type}`);{const e=t.loopvar;if("ArrayValue"!==c.type)throw new Error(`Cannot unpack non-iterable type: ${c.type}`);const r=c;if(e.value.length!==r.value.length)throw new Error(`Too ${e.value.length>r.value.length?"few":"many"} items to unpack`);u=t=>{for(let n=0;n<e.value.length;++n){if("Identifier"!==e.value[n].type)throw new Error(`Cannot unpack non-identifier type: ${e.value[n].type}`);t.setVariable(e.value[n].value,r.value[n])}}}}if(n){u(a);if(!this.evaluate(n,a).__bool__().value)continue}i.push(c),o.push(u)}let a="",c=!0;for(let e=0;e<i.length;++e){const n=new Map([["index",new et(e+1)],["index0",new et(e)],["revindex",new et(i.length-e)],["revindex0",new et(i.length-e-1)],["first",new nt(0===e)],["last",new nt(e===i.length-1)],["length",new et(i.length)],["previtem",e>0?i[e-1]:new ht],["nextitem",e<i.length-1?i[e+1]:new ht]]);r.setVariable("loop",new st(n)),o[e](r);a+=this.evaluateBlock(t.body,r).value,c=!1}if(c){a+=this.evaluateBlock(t.defaultBlock,r).value}return new rt(a)}evaluateMacro(t,e){return e.setVariable(t.name.value,new ct(((e,r)=>{const n=new lt(r);let s;e=e.slice(),"KeywordArgumentsValue"===e.at(-1)?.type&&(s=e.pop());for(let r=0;r<t.args.length;++r){const i=t.args[r],o=e[r];if("Identifier"===i.type){const t=i;if(!o)throw new Error(`Missing positional argument: ${t.value}`);n.setVariable(t.value,o)}else{if("KeywordArgumentExpression"!==i.type)throw new Error(`Unknown argument type: ${i.type}`);{const t=i,e=o??s?.value.get(t.key.value)??this.evaluate(t.value,n);n.setVariable(t.key.value,e)}}}return this.evaluateBlock(t.body,n)}))),new ut}evaluate(t,e){if(void 0===t)return new ht;switch(t.type){case"Program":return this.evalProgram(t,e);case"Set":return this.evaluateSet(t,e);case"If":return this.evaluateIf(t,e);case"For":return this.evaluateFor(t,e);case"Macro":return this.evaluateMacro(t,e);case"NumericLiteral":return new et(Number(t.value));case"StringLiteral":return new rt(t.value);case"BooleanLiteral":return new nt(t.value);case"ArrayLiteral":return new ot(t.value.map((t=>this.evaluate(t,e))));case"TupleLiteral":return new at(t.value.map((t=>this.evaluate(t,e))));case"ObjectLiteral":{const r=new Map;for(const[n,s]of t.value){const t=this.evaluate(n,e);if(!(t instanceof rt))throw new Error(`Object keys must be strings: got ${t.type}`);r.set(t.value,this.evaluate(s,e))}return new st(r,t.value)}case"Identifier":return this.evaluateIdentifier(t,e);case"CallExpression":return this.evaluateCallExpression(t,e);case"MemberExpression":return this.evaluateMemberExpression(t,e);case"UnaryExpression":return this.evaluateUnaryExpression(t,e);case"BinaryExpression":return this.evaluateBinaryExpression(t,e);case"FilterExpression":return this.evaluateFilterExpression(t,e);case"TestExpression":return this.evaluateTestExpression(t,e);default:throw new SyntaxError(`Unknown node type: ${t.type}`)}}};function wt(t){switch(typeof t){case"number":return new et(t);case"string":return new rt(t);case"boolean":return new nt(t);case"undefined":return new ht;case"object":return null===t?new ut:Array.isArray(t)?new ot(t.map(wt)):new st(new Map(Object.entries(t).map((([t,e])=>[t,wt(e)]))),t);case"function":return new ct(((e,r)=>{const n=e.map((t=>pt(t)));return wt(t(...n)??null)}));default:throw new Error(`Cannot convert to runtime value: ${t}`)}}function pt(t){let e=t;if(Array.isArray(t))e=t.map((t=>pt(t)));else if(t instanceof Map)e={},t.forEach(((t,r)=>{e[r]=pt(t)}));else switch(t.type){case"NullValue":e=null;break;case"UndefinedValue":e=void 0;break;case"ArrayValue":e=t.value.map((t=>pt(t)));break;case"KeywordArgumentsValue":case"ObjectValue":e=t.orgValue?t.orgValue:pt(t.value),"KeywordArgumentsValue"===t.type&&Object.setPrototypeOf(e,{jinja_kargs:!0});break;default:t.type&&(e=t.value)}return e}function dt(t,e=0){return Math.floor(Math.random()*(t-e+1))+e}var yt={randomInt:dt,select:function(t,e){if(Array.isArray(t)||"string"==typeof t)return void 0===e?e=dt(t.length-1):"string"==typeof e&&(e=parseInt(e)),e<0&&(e=t.length+e),t[e];if(t&&"object"==typeof t){if(void 0===e){const r=Object.keys(t);e=r[dt(r.length-1)]}return t[e]}},tojson:function(t,e,r){return e&&"object"==typeof e&&(e.depth&&(r=e.depth),e=e.indent),mt(t,e,r)}};function mt(t,e,r){let n="";const s=r??0;if(null===t)n="null";else{const r=typeof t;switch(r){case"undefined":n="null";case"number":case"string":case"boolean":return JSON.stringify(t);case"object":{const r=e?" ".repeat(e):"",n="\n"+r.repeat(s),i=n+r;if(Array.isArray(t)){const r=t.map((t=>mt(t,e,s+1)));return e?`[${i}${r.join(`,${i}`)}${n}]`:`[${r.join(", ")}]`}{const r=Array.from(Object.entries(t)).map((([t,r])=>{const n=`"${t}": ${mt(r,e,s+1)}`;return e?`${i}${n}`:n}));return e?`{${r.join(",")}${n}}`:`{${r.join(", ")}}`}}default:throw new Error(`Cannot convert to JSON: ${r}`)}}return n}var bt=class extends lt{constructor(t){super(t),this.parent=t}assign(t){for(const[e,r]of Object.entries(t))this.set(e,r)}clear(){this.variables.clear()}},gt=class t{static{this.global=new bt}constructor(t,e={}){const r=function(t,e={}){const r=[],n=function(t,e={}){return t.endsWith("\n")&&(t=t.slice(0,-1)),t=t.replace(/{#.*?#}/gs,"{##}"),e.lstrip_blocks&&(t=t.replace(/^[ \t]*({[#%])/gm,"$1")),e.trim_blocks&&(t=t.replace(/([#%]})\n/g,"$1")),t.replace(/{##}/g,"").replace(/-%}\s*/g,"%}").replace(/\s*{%-/g,"{%").replace(/-}}\s*/g,"}}").replace(/\s*{{-/g,"{{")}(t,e);let s=0;const i=t=>{let e="";for(;t(n[s]);)if("\\"!==n[s]){if(e+=n[s++],s>=n.length)throw new SyntaxError("Unexpected end of input")}else{if(++s,s>=n.length)throw new SyntaxError("Unexpected end of input");const t=n[s++],r=$.get(t);if(void 0===r)throw new SyntaxError(`Unexpected escaped character: ${t}`);e+=r}return e};t:for(;s<n.length;){const t=r.at(-1)?.type;if(void 0===t||t===g.CloseStatement||t===g.CloseExpression){let t="";for(;s<n.length&&("{"!==n[s]||"%"!==n[s+1]&&"{"!==n[s+1]);)t+=n[s++];if(t.length>0){r.push(new x(t,g.Text));continue}}i((t=>/\s/.test(t)));const e=n[s];if("-"===e||"+"===e){const t=r.at(-1)?.type;if(t===g.Text||void 0===t)throw new SyntaxError(`Unexpected character: ${e}`);switch(t){case g.Identifier:case g.NumericLiteral:case g.BooleanLiteral:case g.StringLiteral:case g.CloseParen:case g.CloseSquareBracket:break;default:{++s;const t=i(k);r.push(new x(`${e}${t}`,t.length>0?g.NumericLiteral:g.UnaryOperator));continue}}}for(const[t,e]of S)if(n.slice(s,s+t.length)===t){r.push(new x(t,e)),s+=t.length;continue t}if("'"!==e&&'"'!==e)if(k(e)){const t=i(k);r.push(new x(t,g.NumericLiteral))}else{if(!v(e))throw new SyntaxError(`Unexpected character: ${e}`);{const t=i(v),e=Object.hasOwn(E,t)?E[t]:g.Identifier;e===g.In&&r.at(-1)?.type===g.Not?(r.pop(),r.push(new x("not in",g.NotIn))):r.push(new x(t,e))}}else{++s;const t=i((t=>t!==e));r.push(new x(t,g.StringLiteral)),++s}}return r}(t,e={lstrip_blocks:!0,trim_blocks:!0,...e});this.parsed=G(r)}render(e){const r=new lt(t.global);r.set("false",!1),r.set("true",!0),r.set("raise_exception",(t=>{throw new Error(t)})),r.set("range",Q);for(const[t,n]of Object.entries(e))r.set(t,n);return new ft(r).run(this.parsed).toString()}};function Et(t,e){let r;switch(t.type){case"Identifier":r=t.value;break;case"MemberExpression":r=Et(t.object,e);break;case"FilterExpression":r=Et(t.operand,e);break;case"Set":{e||(e=[]);const n=Et(t.assignee);n&&e.push(n),r=Et(t.value,e);break}}return r&&e?.includes(r)&&(r=void 0),r}function xt(t){let e;if("Program"===t.type)e=t.body.some((t=>xt(t)));else e=t.isStatement;return e}function vt(t,e){let r=[];if(Array.isArray(t))r=t.map((t=>vt(t,e))).filter(Boolean).flat();else switch(t.type){case"Program":r=t.body.map((t=>vt(t,e))).filter(Boolean).flat();break;case"If":r=[Et(t.test,e),...vt(t.body,e),...vt(t.alternate,e)].filter(Boolean);break;case"BinaryExpression":r=[Et(t.left,e),Et(t.right,e)].filter(Boolean);break;case"For":{const n=Et(t.loopvar);n&&(e||(e=[]),e.push(n)),r=[Et(t.iterable,e),...vt(t.body,e)].filter(Boolean);break}case"CallExpression":r=[Et(t.callee,e),...vt(t.args,e)].filter(Boolean);break;default:r=[Et(t,e)].filter(Boolean)}return r}gt.global.assign(yt);function kt(t){const e=t.split(""),r=[],n=(t,r)=>{for(let n=r;n<e.length;n+=1)if(t.includes(e[n]))return n;return-1};let s=0;for(;s<e.length;)if("{"===e[s]&&s+1<e.length&&"{"===e[s+1])r.push({type:"literal",text:"{"}),s+=2;else if("}"===e[s]&&s+1<e.length&&"}"===e[s+1])r.push({type:"literal",text:"}"}),s+=2;else if("{"===e[s]){const t=n("}",s);if(t<0)throw new Error("Unclosed '{' in template.");r.push({type:"variable",name:e.slice(s+1,t).join("")}),s=t+1}else{if("}"===e[s])throw new Error("Single '}' in template.");{const t=n("{}",s),i=(t<0?e.slice(s):e.slice(s,t)).join("");r.push({type:"literal",text:i}),s=t<0?e.length:t}}return r}function St(t){const e=new Set;return t.forEach((t=>{"variable"===t.type&&e.add(t.name)})),[...e]}b.register(class extends b{static isTemplate(t){let e,r,n=!1;if("object"==typeof t?(r=t.template,e=t.compiledTemplate):r=t,!e&&r)try{e=new gt(r)}catch(t){}return e&&(n=xt(e.parsed)),n}getVariables(t=this.compiledTemplate){return vt(t.parsed,[]).filter(((t,e,r)=>r.indexOf(t)===e))}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new w.CommonError("Prompt template must be a string","PromptTemplate",w.ErrorCode.InvalidArgument);this.compiledTemplate=new gt(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return this.compiledTemplate.render(t)}},{name:"hf",aliases:["huggingface","internal","default"]});function $t(t,e){return"string"==typeof e&&(e=e.split(".").filter((t=>t.length))),e.reduce(((t,e)=>t?.[e]),t)}function Ot(t,e,r){let n=function(t,e,r){return t.replace(/{{\s*re_replace\s+\.(.+?)\s+(["'])((?:(?!\2).)*?)\2\s+(["'])((?:(?!\4).)*?)\4\s*}}/g,((t,n,s,i,o,a)=>{if(r)return e[n]=null,t;const c=new RegExp(i,"g");return $t(e,n).replace(c,a)}))}(t,e,r);return n=function(t,e,r){return t.replace(/{{\s*join\s+\.(.+?)\s+(["'])((?:(?!\2).)*?)\2\s*}}/g,((t,n,s,i)=>r?(e[n]=null,t):$t(e,n).join(i)))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*if\s*(\S+?)\s*}}([^{]*)({{\s*else\s*}}([^{]*))?{{\s*end\s*}}/g,((t,n,s,i,o)=>{if(r)return n.startsWith(".")&&(n=n.substring(1)),e[n]=null,t;let a;if(!n.startsWith("."))throw new Error("Functionality not implemented");{const t=$t(e,n.substring(1));if(null==t)a=o??"";else if("string"==typeof t)a=t.length>0?s:o??"";else if(Array.isArray(t))a=t.length>0?s:o??"";else{if("boolean"!=typeof t)throw new Error(`Unexpected type for variable ${n}: ${typeof t}`);a=t?s:o??""}}return a}))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*range\s*[.$]([^{}\s]+?)\s*}}([^{]*?){{\.}}([^{]*?){{\s*end\s*}}/g,((t,n,s,i)=>{if(r)return e[n]=null,t;const o=$t(e,n);if(Array.isArray(o)){let t="";for(const e of o)t+=`${s}${e}${i}`;return t}return t}))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*\.([^{}\s]+?)\s*}}/g,((t,n)=>r?(e[n]=null,t):$t(e,n)||""))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*index\s*\.(.+?)\s+(.+?)\s*}}/g,((t,n,s)=>{if(r)return e[n]=null,t;const i=$t(e,n);let o;return o=isNaN(s)?i[s.substring(1,s.length-1)]:i[parseInt(s,10)],o||""}))}(n,e,r),n}b.register(class extends b{static isTemplate(t){let e,r,n=!1;if("object"==typeof t?(r=t.template,e=t.compiledTemplate):r=t,!e&&r)try{e=kt(r)}catch(t){}if(e){n=St(e).length>0}return n}getVariables(t=this.compiledTemplate){return St(t)}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new w.CommonError("Prompt template must be a string","PromptTemplate",w.ErrorCode.InvalidArgument);this.compiledTemplate=kt(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return e=this.compiledTemplate,r=t,e.reduce(((t,e)=>{let n;return n="variable"===e.type?e.name in r?t+r[e.name]:t:t+e.text,n}),"");var e,r}},{name:"fstring",aliases:["python","f-string","langchain"]});function jt(t){return Object.keys(t).sort().map((e=>t[e]))}b.register(class extends b{static isTemplate(t){const e="string"==typeof t?t:t.template;return e?.includes("{{")&&e.includes("}}")}getVariables(t){const e={};return Ot(t,e,!0),[...Object.keys(e)]}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new w.CommonError("Prompt template must be a string","PromptTemplate",w.ErrorCode.InvalidArgument);this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables(e)}_format(t){return Ot(this.template,t)}},{name:"golang",aliases:["localai","ollama"]});b.register(class extends b{static from(t){return new this(t)}constructor(t){super(t)}_initialize(t){t&&(t.suffix&&(this.suffix=t.suffix),t.exampleSeparator&&(this.exampleSeparator=t.exampleSeparator),t.prefix&&(this.prefix=t.prefix),t.examplePrompt&&(this.examplePrompt=t.examplePrompt instanceof b?t.examplePrompt:b.from(t.examplePrompt)),t.examples&&(this.examples=t.examples)),this.prefix||(this.prefix=""),this.exampleSeparator||(this.exampleSeparator="\n\n"),this.suffix||(this.suffix="")}async _format(t){const e=[];for await(const t of this.examples)if(this.examplePrompt){const r=await this.examplePrompt.format(t);e.push(r)}else if("string"==typeof t)e.push(t);else if(t){const r=jt(t);r.length>0&&e.push(...r)}const r=[this.prefix,...e,this.suffix].join(this.exampleSeparator),n=this.templateFormat;return await b.format({template:r,data:t,templateFormat:n})}toJSON(t=this){const e=super.toJSON(t);return t.suffix&&(e.suffix=t.suffix),t.exampleSeparator&&(e.exampleSeparator=t.exampleSeparator),t.prefix&&(e.prefix=t.prefix),t.examplePrompt&&(e.examplePrompt=t.examplePrompt),t.examples&&(e.examples=t.examples),e}},{name:"fewshot",aliases:["few_shot"]});new RegExp("([A-Z][a-z]{1,2}\\.)@(\\w)","g"),new RegExp("(\\.[a-zA-Z]\\.)@(\\w)","g");var Ct=require("custom-ability"),At="event",Mt="event-bus";(0,Ct.createAbilityInjector)((function(t){return class{static get emitter(){if(!this._emitter){const t=this.get(Mt)?.emitter;t&&(this._emitter=t,this.prototype._events=t._events)}return this._emitter}get emitter(){return this.constructor._emitter}on(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.on(e,r)}once(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.once(e,r)}off(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.off(e,r)}emit(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return"error"===e?this.emitError.apply(this,r):n.emit.call(this,e,this.name,...r)}emitError(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.emit.call(this,"error",e,this.name,...r)}async emitAsync(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.emitAsync.call(this,e,this.name,...r)}}}),!0);function Tt(t,e){return!t||t.some((t=>t instanceof RegExp?t.test(e):t===e))}var qt=class{get active(){return this._active}set active(t){t!==this._active&&(t?(this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0),this.options.pingInterval>0&&(this.pingTimer=setInterval((()=>this.publish()),this.options.pingInterval))):(this.clients.size&&this.clearClients(),this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0)),this._active=t)}constructor(t){this.options=Object.assign({},{pingInterval:3e3,maxStreamDuration:3e4,clientRetryInterval:1e3,startId:1,historySize:100,rewind:0,cors:!1},t),this.nextID=this.options.startId,this.clients=new Set,this.messages=[],this.active=!0}publish(t,e){let r,n;this.active||(0,w.throwError)("Channel closed","SSEChannel",498);let s=e;if(t||e)n=this.nextID++,"object"==typeof t&&(t.event?(s=t.event,void 0!==t.data&&(t=JSON.stringify(t.data))):t=JSON.stringify(t)),t=t?t.split(/[\r\n]+/).map((t=>"data: "+t)).join("\n"):"",r="id: "+n+"\n"+(e?"event: "+e+"\n":"")+(t||"data: ")+"\n\n",this.messages.push({id:n,_eventName:s,output:r});else{if(!this.clients.size)return;r="data: \n\n"}for([...this.clients].filter((t=>!s||Tt(t.events,s))).forEach(((t,e)=>{t.res.write(r)}));this.messages.length>this.options.historySize;)this.messages.shift();return n}subscribe(t,e,r){this.active||(0,w.throwError)("Channel closed","SSEChannel",498);const n={req:t,res:e,events:r},s=this.options.maxStreamDuration;let i="max-age=0, stale-while-revalidate=0, stale-if-error=0, no-transform";s>0&&(i+=", s-maxage="+(Math.floor(s/1e3)-1));const o={"Content-Type":"text/event-stream","Cache-Control":i,Connection:"keep-alive"};this.options.cors&&(o["access-control-allow-origin"]="*"),n.req.socket.setNoDelay(!0),n.res.writeHead(200,o);let a="retry: "+this.options.clientRetryInterval+"\n\n";const c=Number.parseInt(t.headers["last-event-id"],10),u=Number.isNaN(c)?this.options.rewind:this.nextID-1-c;return u&&this.messages.filter((t=>Tt(n.events,t.eventName))).slice(0-u).forEach((t=>{a+=t.output})),n.res.write(a),this.clients.add(n),s>0&&setTimeout((()=>{n.res.writableEnded||this.unsubscribe(n)}),s),n.res.on("close",(()=>this.unsubscribe(n))),n}unsubscribe(t){t.res.end(),this.clients.delete(t)}clearClients(){this.clients.forEach((t=>t.res.end())),this.clients.clear()}listClients(){const t={};return this.clients.forEach((e=>{const r=e.req.socket.remoteAddress??"";r in t||(t[r]=0),t[r]++})),t}getSubscriberCount(){return this.clients.size}};require("eventsource-parser");require("uuid"),c(require("base32768")),require("uuid");var It=c(require("xxhashjs")),{h32:Vt,h64:Nt}=(c(require("base32768")),require("json-canonicalize"),It.default),Pt=(require("util-ex"),require("lodash-es"),require("util-ex"),require("load-config-file")),Ut=require("yaml"),Bt=require("yaml-types"),Ft=(require("mime-type/with-db"),require("yaml"),[Bt.regexp]);Pt.Config.register([".yml",".yaml"],(function(t){return(0,Ut.parse)(t,{customTags:Ft})})),Pt.Config.register([".json"],(function(t){return JSON.parse(t)}));var _t=class t{constructor(t=0){this.bitField=t}static has(t,e){return!!(t&1<<e)}static add(t,e){return t|1<<e}static delete(t,e){return t&~(1<<e)}add(t){return this.bitField|=1<<t,this}delete(t){return this.bitField&=~(1<<t),this}has(e){return t.has(this.bitField,e)}clear(){return this.bitField=0,this}valueOf(){return this.bitField}toString(){return this.bitField.toString()}toJSON(){return this.bitField}},Lt=require("events-ex");function Rt(t){return e=Math.min(Math.max(16,t),1073741824),e>>>=0,e-=1,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,1+(e|=e>>16);var e}var Jt=class{constructor(t){this._capacity=Rt(t),this._length=0,this._front=0,this.arr=[]}push(t){const e=this._length;this.checkCapacity(e+1);const r=this._front+e&this._capacity-1;return this.arr[r]=t,this._length=e+1,r}pop(){const t=this._length;if(0===t)return;const e=this._front+t-1&this._capacity-1,r=this.arr[e];return this.arr[e]=void 0,this._length=t-1,r}shift(){const t=this._length;if(0===t)return;const e=this._front,r=this.arr[e];return this.arr[e]=void 0,this._front=e+1&this._capacity-1,this._length=t-1,r}get length(){return this._length}checkCapacity(t){this._capacity<t&&this.resizeTo(Rt(1.5*this._capacity+16))}resizeTo(t){const e=this._capacity;this._capacity=t;const r=this._front,n=this._length;if(r+n>e){const t=r+n&e-1;!function(t,e,r,n,s){for(let i=0;i<s;++i)r[i+n]=t[i+e],t[i+e]=void 0}(this.arr,0,this.arr,e,t)}}},zt=class extends Lt.EventEmitter{};function Wt(t){return"function"==typeof t}function Kt(){return"1"}var Dt=class{constructor(t,{initFn:e=Kt,pauseFn:r,resumeFn:n,capacity:s=32}={}){if(Wt(r)!==Wt(n))throw new Error("pauseFn and resumeFn must be both set for pausing");this.maxConcurrency=t,this.free=new Jt(t),this.waiting=new Jt(s),this.releaseEmitter=new zt,this.useDefaultTokens=e===Kt,this.pauseFn=r,this.resumeFn=n,this.paused=!1,this.releaseEmitter.on("release",(t=>{const e=this.waiting.shift();e?e.resolve(t):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(t))}));for(let r=0;r<t;r++)this.free.push(e())}tryAcquire(){return this.free.pop()}acquire(t){let e=this.tryAcquire();return void 0!==e?Promise.resolve(e):new Promise(((e,r)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn());const n=this.waiting.push({resolve:e,reject:r});return t&&t.addEventListener("abort",(()=>{this.waiting[n]=void 0;const e=t.reason instanceof Error?t.reason:new Error(t.reason||"aborted");t.alreadyRejected=!0,r(e)})),n}))}release(t){this.releaseEmitter.emit("release",this.useDefaultTokens?"1":t)}drain(){const t=new Array(this.maxConcurrency);for(let e=0;e<this.maxConcurrency;e++)t[e]=this.acquire();return Promise.all(t)}pendingCount(){return this.waiting.length}},Zt=require("custom-ability"),Ht=require("util-ex"),Gt=class extends AbortController{constructor(t){super(),(0,Ht.defineProperty)(this,"parent",t)}abort(t,e){this.signal.aborted||("string"==typeof t&&(t=new w.AbortError(t)),t&&e&&"object"==typeof t&&Object.assign(t.data,e),super.abort(t))}throwRejected(t){const e=this.signal;if(e.aborted){if(void 0===t&&(t=e.alreadyRejected),t)return!0;throw e.reason instanceof Error?e.reason:new w.AbortError(e.reason||"aborted")}}},Qt=class{get maxTaskConcurrency(){return this._maxTaskConcurrency}get semaphore(){const t=this._maxTaskConcurrency;let e=this.__task_semaphore;return t>0&&!e&&(e=this.__task_semaphore=new Dt(t-1)),e}isAborted(t){const e=this.hasAsyncFeature(Yt);let r=this.__task_aborter;if(r&&e){if(null==t)throw new w.CommonError("Missing taskId",this.name+".isAborted",w.ErrorCode.InvalidArgument);r=r[t]}return!r||r.signal.aborted}getRunningTask(t){const e=this.hasAsyncFeature(Yt);let r=this.__task_aborter;if(r&&e){if(null==t)throw new w.CommonError("Missing taskId",this.name+".getRunningTask",w.ErrorCode.InvalidArgument);r=r[t]}return r?.signal.aborted&&(e?this.__task_aborter[t]=void 0:this.__task_aborter=void 0,r=void 0),r}getRunningTaskCount(){let t;if(this.hasAsyncFeature(Yt)){const e=this.__task_aborter;t=e&&Object.entries(e).filter((([t,r])=>{if(!r?.signal.aborted)return!0;e[t]=void 0})).length}else{const e=this.__task_aborter;t=e?.signal.aborted?0:1}return t}_generateAsyncTaskId(t,e){if(e||(e=this.__task_aborter),null==t&&(t=0,e))for(;e[t];)t++;return t}$generateAsyncTaskId(t,e){const r=this.super,n=this.self||this;return t=r?r.call(n,t):this._generateAsyncTaskId(t,e)}createAborter(t,e,r=!0){const n=this.hasAsyncFeature(Yt);if(!n&&r&&this.getRunningTask())throw new w.CommonError("The task is running",this.name,w.ErrorCode.TooManyRequests);const s=t?.aborter||new Gt(this);if(!(s instanceof Gt)){if(!(s instanceof AbortController))throw new w.CommonError("aborter should be an AbortController",this.name,w.ErrorCode.InvalidArgument);Object.setPrototypeOf(s,new Gt(this))}if(n){null==this.__task_aborter&&(this.__task_aborter={});const t=this.__task_aborter;null==e&&(e=this.generateAsyncTaskId(e,t)),s.id=e,t[e]=s}else this.__task_aborter=s;const i=t?.timeout;return i>0&&(s.timeoutId=setTimeout((()=>{s.timeoutId=void 0,this.abort("timeout",{timeout:i})}),i)),s.signal.addEventListener("abort",(()=>{const t=s.timeoutId;t&&(s.timeoutId=void 0,clearTimeout(t));const e=s.signal;try{this.emit&&this.emit("aborting",e.reason,e.reason?.data)}finally{s.streamController?.error(e.reason)}})),s}$cleanMultiTaskAborter(t,e){const r=this.super,n=this.self||this;r?r.call(n,t,e):n._cleanMultiTaskAborter(t,e)}cleanTaskAborter(t){if(this.hasAsyncFeature(Yt)){const e=this.__task_aborter;this.cleanMultiTaskAborter(t.id,e)}else this.__task_aborter=void 0}_cleanMultiTaskAborter(t,e){"number"==typeof t?e[t]=void 0:delete e[t]}createTaskPromise(t,e,r){const n=this.createAborter(e,r?.taskId,r?.raiseError);void 0===e&&(e={}),"object"==typeof e&&(e.aborter=n);let s=t(e,n).then((t=>{if(t&&t instanceof ReadableStream){const e=()=>{this.cleanTaskAborter(n)},r=function(t){const e=t||{};return new TransformStream({async start(t){const r=t.error;if(t.error=n=>{r.call(t,n),e.onError&&e.onError(n)},e.onStart)try{await e.onStart(t)}catch(e){t.error(e)}},async transform(t,r){try{let n;e.onTransform&&(n=await e.onTransform(t,r)),n||(n=t),r.enqueue(n)}catch(t){r.error(t)}},async flush(t){if(e.onFinal)try{await e.onFinal(t)}catch(e){return t.error(e)}t.terminate()}})}({onStart:t=>{(0,Ht.defineProperty)(n,"streamController",t)},onFinal:e,onError:e,onTransform:(t,e)=>(t&&"object"==typeof t&&(t.taskId=n.id),t)});t=t.pipeThrough(r)}else this.cleanTaskAborter(n);return t})).catch((t=>{throw this.cleanTaskAborter(n),t})).finally((()=>{n.timeoutId&&(clearTimeout(n.timeoutId),n.timeoutId=void 0)}));return s.task=n,s}runAsyncCancelableTask(t={},e,r){let n=this.createTaskPromise(e,t,r);const s=this.semaphore;if(s){const t=n,e=t.task;n=s.acquire(e.signal).then((()=>t)).finally((()=>{s.release()})),n.task=e}return n}abort(t,e){let r=this.__task_aborter;if(r){const n=r;if(this.hasAsyncFeature(Yt)){const t=e?.taskId;if(null==t)throw new w.CommonError("Missing data.taskId",this.name+".abort",w.ErrorCode.InvalidArgument);r=r[t],this.cleanMultiTaskAborter(t,n)}else this.__task_aborter=void 0;r&&!r.signal.aborted&&r.abort(t,e)}}};Qt.prototype.generateAsyncTaskId=function(t,e){return this._generateAsyncTaskId(t,e)},Qt.prototype.cleanMultiTaskAborter=function(t,e){return this._cleanMultiTaskAborter(t,e)};(0,Zt.createAbilityInjector)(Qt,"abort",{afterInjection:function(t,e){let r=t.prototype._asyncFeatures||0;r|=te.Cancelable,e&&(e.asyncFeatures&&(r|=e.asyncFeatures),e.maxTaskConcurrency>0&&(t.prototype._maxTaskConcurrency=e.maxTaskConcurrency)),t.prototype._asyncFeatures=r}}),require("lodash-es"),require("util-ex"),c(require("memoizee")),require("json-canonicalize"),require("pkg-dir");var Xt,Yt=0,te=((Xt=te||{})[Xt.MultiTask=1<<Yt]="MultiTask",Xt[Xt.Cancelable=2]="Cancelable",Xt[Xt.Priority=4]="Priority",Xt),ee=class t extends l.AdvancePropertyManager{static{this.items={}}static get(t){return this.items[t]}static list(){return this.items}static getByTag(t){let e;for(const r in this.list()){const n=this.get(r);let s=n.tags;if("string"==typeof s){if(s===t){e=n;break}}else if(Array.isArray(s)&&s.indexOf(t)>=0){e=n;break}}return e}static getAllByTag(t){let e=[];for(const r in this.list()){const n=this.get(r);let s=n.tags;"string"==typeof s?s===t&&e.push(n):Array.isArray(s)&&s.indexOf(t)>=0&&e.push(n)}return e}static hasAsyncFeature(t){const e=this.prototype;let r=e.asyncFeatures;return e._asyncFeatures&&(r|=e._asyncFeatures),_t.has(r,t)}static run(t,e){const r=this.get(t);if(r)return r.run(e);throw new w.NotFoundError(`${t} to run`,this.name)}static runSync(t,e){const r=this.get(t);if(r)return r.runSync(e);throw new w.NotFoundError(`${t} to run`,this.name)}static getFunc(t){const e=this.get(t);return e?.getFunc()}static runWithPos(t,...e){const r=this.get(t);if(r)return r.runWithPos(...e);throw new w.NotFoundError(`${t} to run`,this.name)}static runWithPosSync(t,...e){const r=this.get(t);if(r)return r.runWithPosSync(...e);throw new w.NotFoundError(`${t} to run`,this.name)}static getFuncWithPos(t){const e=this.get(t);return e?.getFuncWithPos()}static register(e,r={}){switch(typeof e){case"string":r.name=e;break;case"function":r.func=e;break;case"object":r=e}e=r.name;let n=!!this.get(e);if(n)n=!1;else{if(!(r instanceof t))return n=new this(r),n.register();this.items[e]=r,n=r}return n}static unregister(t){const e=this.items[t];return e&&delete this.items[t],e}constructor(t,e={}){switch(super(),typeof t){case"string":e.name=t;break;case"function":e.func=t;break;case"object":e=t}this.name=t=e.name,e.scope&&(this.scope=e.scope),"function"==typeof e.setup&&e.setup.call(this,e),this.initialize(e)}register(){const e=this.constructor,r=this.depends;if(r){const e=Object.keys(r);for(const n of e){const e=r[n];e instanceof t&&e.register()}}return e.register(this)}unregister(){return this.constructor.unregister(this.name)}arr2ObjParams(t){if(this.params&&(t.length>1||Array.isArray(t[0])||t[0]&&"object"!=typeof t[0])){const e={},r=Object.keys(this.params);let n=Math.min(r.length,t.length);for(let s=0;s<n;s++)e[r[s]]=t[s];t=[e]}return t}obj2ArrParams(t){const e=[];if(t&&this.params&&Array.isArray(this.params)){const r=Object.keys(t);let n=Math.min(r.length,this.params.length);for(let s=0;s<n;s++)e.push(t[r[s]])}return e}runSync(t){const e=this.params&&Array.isArray(this.params);if(Array.isArray(t)){if(e)return this.func(...t);(0,w.throwError)("the function is not support array params, the params must be object!",this.name)}return e?(t=this.obj2ArrParams(t),console.warn('Warning:Use runWithPos() instead of run() for the "'+this.name+'" is function with position params'),this.func(...t)):this.func(t)}run(t){return this.runSync(t)}runAs(t,e){return this.runAsSync(t,e)}runAsSync(t,e){return this.constructor.runSync(t,e)}getFunc(t){return t?this.constructor.getFunc(t):this.runSync.bind(this)}runWithPosSync(...t){return this.params&&!Array.isArray(this.params)&&(t=this.arr2ObjParams(t)),this.func(...t)}runWithPosAsSync(t,...e){return this.constructor.runWithPosSync(t,...e)}runWithPos(...t){return this.runWithPosSync(...t)}runWithPosAs(t,...e){return this.runWithPosAsSync(t,...e)}getFuncWithPos(t){return t?this.constructor.getFuncWithPos(t):this.runWithPosSync.bind(this)}hasAsyncFeature(t){let e=this.asyncFeatures;return this._asyncFeatures&&(e|=this._asyncFeatures),_t.has(e,t)}isStream(t){return this.stream}},re={name:{type:"string"},description:{type:"string"},func:{type:"function",assign(t,e,r,n,s){let i=t;const o=typeof t;return s.isExported?i="function"===o?t.toString():t:t&&("string"!==o&&(t=t.toString()),i=(0,f._createFunction)(t,e.scope)),i}},params:{type:"object"},result:{type:"any"},setup:{type:"function"},depends:{type:"object",exported:!1},tags:{type:["array","string"]},isApi:{type:"boolean"},stream:{type:"boolean"},asyncFeatures:{type:"number"}};ee.defineProperties(ee,re);var ne=class extends ee{constructor(){super(...arguments),this._emitter=new h.EventEmitter,this.description="Return event bus",this.result="event"}get emitter(){return this._emitter}func(){return this.emitter}},se=new ne(Mt),ie=require("secondary-cache");function oe({key:t,value:e,options:r}={}){return void 0!==t?null===e?this.cache.del(t):void 0!==e?this.cache.set(t,e,r):this.cache.get(t):(r&&this.cache.setDefaultOptions(r),this.cache)}function ae(t,e){let r=ee.get(t);return r||(r=new ee(t,{func:oe,description:"get/set LRU cache or return the LRUCache object",params:{key:{name:"key",type:"string",description:"the key is undefined means change the default cache options"},value:{name:"value",type:"any",description:"the value to store, if value is null means remove the key"},options:{name:"options",type:"object|number",description:"the optional cache options:{capacity,expires,cleanInterval} or expires"}},result:"any"}),r.cache=new ie.Cache(e)),r}var ce=ae("lrucache"),ue=class t extends ee{static get apiRoot(){return t._apiRoot}static setApiRoot(e){t._apiRoot=e}static async loadFrom(){if(this._apiRoot){const t=await fetch(this._apiRoot,{headers:{"Content-Type":"application/json"}}),e=await t.json();e&&this.loadFromSync(e)}else(0,w.throwError)("missing apiRoot to load tools","ClientTools")}static loadFromSync(e){for(const r in e){const n=this.get(r),s=e[r];n?n instanceof t?n.assign(s):(0,w.throwError)(`${r} already registered as ${n.constructor.name}`,"ClientTools"):this.register(s)}}static async fetch(t,e){const r=this.get(t);if(r&&r.fetch)return r.fetch(e)}getUrlParams(t){if(void 0!==t){const e=JSON.stringify(t);if("{}"!==e&&"[]"!==e&&'""'!==e)return"?p="+encodeURIComponent(e)}return""}async fetch(t,e,r){const n={...this.fetchOptions};let s;n.headers&&n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",...n.headers}),t?.stream&&!n.headers.Connection&&(n.headers.Connection="keep-alive"),e||(e=this.action||"post"),"res"===e&&(e="get"),r?("string"!=typeof r&&(r=JSON.stringify(r)),r=this.name+"/"+r):r=this.name,n.method=e.toUpperCase(),"get"===e||"delete"===e?s=r+this.getUrlParams(t):(n.body=JSON.stringify(t),s=r);const i=await fetch(`${this.apiRoot}/${s}`,n);if(!i.ok){throw await this.errorFrom(i)}return i}async errorFrom(t){let e,r=t.status,n=t.statusText,s=this.name;if(t.body){const r=await t.text();try{const t=JSON.parse(r);t&&(t.error&&(n=t.error),t.name&&(s=t.name),t.data&&(e=t.data,e.name=s,e.what&&(e.msg=n,n=e.what)),t.message&&(n=n+":"+t.message))}catch(t){console.warn("🚀 ~ parse error body to json:",t)}}return(0,w.createError)(n,s,r)}async func(t){const e=await this.fetch(t);if(t?.stream)return e;return await e.json()}},he={...d};ue.defineProperties(ue,he);var le=class extends ue{async _func(t,e){const r=await this.fetch(e,t);if(e?.stream)return r;return await r.json()}async func(t){const e=t.action;return e&&delete t.action,this._func(e,t)}assignMethods(t){if(Array.isArray(t))for(const e of t){const t=e.startsWith("$")?e.slice(1):e;this[t]||(this[t]=(t=>this._func.bind(this,t))(e))}}},fe={methods:{type:"array",assign(t,e,r,n,s){s?.isExported||e.assignMethods(t)}}};le.defineProperties(le,fe);var we=class extends le{async fetch(t,e){if(t||(t={}),e&&"res"===this.action){if("get"===e||"delete"===e){let r=t.id;return r||(0,w.throwError)("id is required"),"string"==typeof r&&(r=encodeURIComponent(r)),delete t.id,super.fetch(t,e,r)}"list"===e?e="get":e.startsWith("$")&&(t.act=e,e="post")}return await super.fetch(t,e)}},pe=class extends we{constructor(){super(...arguments),this._sseEvents={},this._forwardEvents=new Set,this.name=At,this.description="subscribe server sent event",this.ebListener=async function(...t){const e=this.type;this.target.publish&&await this.target.publish({data:t,event:e})}}get evtSource(){let t=this._es;return t&&t.readyState!==EventSource.CLOSED||(t=this.initEventSource(this._esEvents)),t}get active(){return!!this._es&&this._es.readyState!==EventSource.CLOSED}set active(t){t!==this.active&&(t?this.initEventSource(this._esEvents):this._es&&(this._es.close(),this._es=void 0))}initEventSource(t){if("string"==typeof t&&(t=[t]),this._es&&this._es.readyState!==EventSource.CLOSED){if(!this._esEvents||t&&t.every((t=>this._esEvents.includes(t))))return this._es;this._es.close()}const e=t?this.getUrlParams({event:t}):"",r=`${this.apiRoot}/${this.name}${e}`,n=this._es=new EventSource(r);return Object.entries(this._sseEvents).forEach((([t,e])=>{n.addEventListener(t,e)})),this._esEvents=t,n}esListener(t){const e=t.data?JSON.parse(t.data):void 0,r=t.type;if(!this._forwardEvents.has(r)){const t=this.emitter;t&&e&&r&&(Array.isArray(e)?t.emit(r,...e):t.emit(r,e))}}async subscribe(t){const e=await this.sub({event:t});"string"==typeof t&&(t=[t]);const r=this.evtSource;for(const e of t)if(!this._sseEvents[e]){const t=this._sseEvents[e]=this.esListener.bind(this);r.addEventListener(e,t)}return e}async unsubscribe(t){const e=await this.unsub({event:t});"string"==typeof t&&(t=[t]);for(const e of t){const t=this._sseEvents[e];t&&(delete this._sseEvents[e],this.evtSource.removeEventListener(e,t))}return e}forwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)||(this._forwardEvents.add(e),this.on&&this.on(e,this.ebListener))}unforwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)&&(this._forwardEvents.delete(e),this.off&&this.off(e,this.ebListener))}async init(t){if(this.active=!1,this.initEventSource(t),t)return await this.subscribe(t)}},de=new pe(At),ye=require("util-ex"),me=class t extends ee{static get apiRoot(){return this._apiRoot}static setApiRoot(t){this._apiRoot=t}static toJSON(){const e={};for(const r in this.items){let n=this.items[r];(n instanceof t||n.isApi)&&(n.allowExportFunc||(n=n.toJSON(),delete n.func),e[r]=n)}return e}func({}){}},be={...d};me.defineProperties(me,be);var ge=class extends me{constructor(t,e={}){super(t,e),this.params={act:{type:"string"}};const r=this.methods=[];this.initRpcMethods(r)}get SpecialRpcMethodNames(){return this.constructor.SpecialRpcMethodNames}initRpcMethods(t=this.methods){const e=this.SpecialRpcMethodNames;if(Array.isArray(e))for(const r of e)"function"==typeof this[r]&&t.push(r);(0,ye.getAllNames)(Object.getPrototypeOf(this)).filter((t=>t.startsWith("$")&&"function"==typeof this[t])).forEach((e=>{t.push(e);const r=e.slice(1);void 0===this[r]&&(this[r]=this[e])}))}cast(t,e){let r=this.params[t];return r&&("string"!=typeof r&&(r=r.type),"number"===r&&(e=Number(e))),e}getMethodFromParams(t){const e=t?.act;return e}castParams(t){return t}func(t){const e=this.getMethodFromParams(t);if(e&&"function"==typeof this[e])return t=this.castParams(t),this[e](t);throw new w.NotFoundError(e,this.name)}};ge.defineProperties(ge,{methods:{type:"array"}});var Ee=class extends ge{constructor(t,e={}){super(t,e),this.action="res",this.params={id:{type:"string"},val:{type:"any"}}}static{this.SpecialRpcMethodNames=p}getMethodFromParams(t){let e=t?._req?.method?.toLowerCase();return"get"===e&&void 0===t.id&&(e="list"),"post"===e&&t.act&&(e=t.act),e}castParams(t){return void 0!==t.id&&(t.id=this.cast("id",t.id)),t}},xe=se.runSync(),ve=class t extends Ee{constructor(){super(...arguments),this.name=At,this.description="subscribe server sent event",this.result="event",this.depends={[Mt]:se}}static get sse(){return this._sse||(this._sse=new qt),this._sse}get sse(){return this.constructor.sse}static publish(e,r){return t.sse.publish(e,r)}static{this.ebListener=function(...e){t.sse.publish(e,this.type)}}static subscribe(e,r,n){return t.sse.subscribe(e,r,n)}static alreadyForward(e){const r=xe.listeners(e);for(const e of r)if(e===t.ebListener)return!0}publishSSE(t,e){return this.constructor.publish(t,e)}subscribeSSE(t,e,r){return"string"==typeof r&&(r=[r]),this.constructor.subscribe(t,e,r)}forward(e){Array.isArray(e)||(e=[e]);for(const r of e)t.alreadyForward(r)||xe.on(r,t.ebListener)}unforward(e){"string"==typeof e&&(e=[e]);for(const r of e)xe.off(r,t.ebListener)}list({_req:t,_res:e,event:r}){t&&e&&this.subscribeSSE(t,e,r)}$sub({event:t}){if(t)return this.forward(t),{event:t};(0,w.throwError)("event is required","sub",w.ErrorCode.InvalidArgument)}$unsub({event:t}){if(t)return this.unforward(t),{event:t};(0,w.throwError)("event is required","unsub",w.ErrorCode.InvalidArgument)}$publish({event:t,data:e}){if(t&&e){"string"==typeof t&&(t=[t]);for(const r of t)this.publishSSE(e,r);return{event:t}}(0,w.throwError)("event or data is required","pub",w.ErrorCode.InvalidArgument)}isStream(t){return"list"===this.getMethodFromParams(t)}},ke=new ve(At);function Se(){se.register(),ce.register()}
|
|
1
|
+
"use strict";var t,e=Object.create,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,i=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,a=(t,e,i,a)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let c of s(e))o.call(t,c)||c===i||r(t,c,{get:()=>e[c],enumerable:!(a=n(e,c))||a.enumerable});return t},c=(t,n,s)=>(s=null!=t?e(i(t)):{},a(!n&&t&&t.__esModule?s:r(s,"default",{value:t,enumerable:!0}),t)),u={};((t,e)=>{for(var n in e)r(t,n,{get:e[n],enumerable:!0})})(u,{EventClient:()=>pe,EventServer:()=>ve,EventToolFunc:()=>ne,_lrucache:()=>oe,createLRUCache:()=>ae,event:()=>se,eventClient:()=>de,eventServer:()=>ke,lrucache:()=>ce,registerCoreTools:()=>Se}),module.exports=(t=u,a(r({},"__esModule",{value:!0}),t));var h=require("events-ex"),l=require("property-manager"),f=require("util-ex"),w=require("@isdk/common-error"),p=(require("custom-ability"),require("util-ex"),["get","post","put","delete","patch","list","res"]),d={apiRoot:{type:"string",get(){return this._apiRoot??this.constructor.apiRoot},set(t){this._apiRoot=t}},action:{type:"string",assign:(t,e,r,n,s)=>t||"post"},fetchOptions:{type:"object"},allowExportFunc:{type:"boolean"}},y=(require("date-fns"),require("date-fns"),require("custom-factory"));var m="default",b=class t extends y.BaseFactory{static from(t,e){return new this(t,e)}static async format(t){return new this(t).format()}static async formatIf(t){if(this.isTemplate(t)){return new this(t).format()}}static isTemplate(e){if(e?.template){const r=e.templateFormat||m,n=t.get(r);return n.isTemplate!==t.isTemplate&&n.isTemplate(e)}}filterData(t){return Array.isArray(this.inputVariables)&&(t=Object.fromEntries(Object.entries(t).filter((([t])=>this.inputVariables.includes(t))))),t}constructor(e,r){"string"==typeof e?(r||(r={}),r.template=e):e&&(e=(r=e).template);const{templateFormat:n}=r||{};if(super(r),this.constructor===t){const e=t.get(n||m);if(e)return Reflect.construct(e,arguments);throw new w.CommonError(`Prompt template type ${n} not found`,"PromptTemplate",w.ErrorCode.InvalidArgument)}}_initialize(t){throw new w.NotImplementationError("Not implemented","PromptTemplate")}initialize(e){this.constructor!==t&&(Object.assign(this,this.toJSON(e)),e?.ignoreInitialize||this._initialize(e))}_format(t){throw new w.NotImplementationError("Not implemented","PromptTemplate")}async format(e){const r=this.data;if(e={...r,...e},r)for(const[t,n]of Object.entries(r))e[t]===n&&"function"==typeof n&&(delete e[t],e[t]=await n(e));for(const[r,n]of Object.entries(e))n instanceof t&&(delete e[r],e[r]=await n.format(e));return this._format(e)}partial(t){t={...this.data,...t};const e=this.toJSON();return e.data=t,e.ignoreInitialize=!0,new this.constructor(e)}toJSON(e=this){let r={template:e.template,data:e.data,inputVariables:e.inputVariables,compiledTemplate:e.compiledTemplate};var n;return e.templateFormat&&t.get(e.templateFormat)!==this.constructor&&(r.templateFormat=e.templateFormat),n=r,r=Object.keys(n).reduce(((t,e)=>{const r=n[e];return null!=r&&(t[e]=r),t}),{}),r}};(async function(){let t=!1,e=!1;try{for await(const e of function*(){try{yield Promise.reject()}finally{t=!0}}())throw new Error("impossible")}catch{e=!0}return e&&t})().then((t=>{t}));var g=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",BooleanLiteral:"BooleanLiteral",StringLiteral:"StringLiteral",Identifier:"Identifier",Equals:"Equals",OpenParen:"OpenParen",CloseParen:"CloseParen",OpenStatement:"OpenStatement",CloseStatement:"CloseStatement",OpenExpression:"OpenExpression",CloseExpression:"CloseExpression",OpenSquareBracket:"OpenSquareBracket",CloseSquareBracket:"CloseSquareBracket",OpenCurlyBracket:"OpenCurlyBracket",CloseCurlyBracket:"CloseCurlyBracket",Comma:"Comma",Dot:"Dot",Colon:"Colon",Pipe:"Pipe",CallOperator:"CallOperator",AdditiveBinaryOperator:"AdditiveBinaryOperator",MultiplicativeBinaryOperator:"MultiplicativeBinaryOperator",ComparisonBinaryOperator:"ComparisonBinaryOperator",UnaryOperator:"UnaryOperator",Set:"Set",If:"If",For:"For",In:"In",Is:"Is",NotIn:"NotIn",Else:"Else",EndIf:"EndIf",ElseIf:"ElseIf",EndFor:"EndFor",And:"And",Or:"Or",Not:"UnaryOperator",Macro:"Macro",EndMacro:"EndMacro"}),E=Object.freeze({set:g.Set,for:g.For,in:g.In,is:g.Is,if:g.If,else:g.Else,endif:g.EndIf,elif:g.ElseIf,endfor:g.EndFor,and:g.And,or:g.Or,not:g.Not,"not in":g.NotIn,macro:g.Macro,endmacro:g.EndMacro,true:g.BooleanLiteral,false:g.BooleanLiteral,True:g.BooleanLiteral,False:g.BooleanLiteral}),x=class{constructor(t,e){this.value=t,this.type=e}};function v(t){return/\w/.test(t)}function k(t){return/[0-9]/.test(t)}var S=[["{%",g.OpenStatement],["%}",g.CloseStatement],["{{",g.OpenExpression],["}}",g.CloseExpression],["(",g.OpenParen],[")",g.CloseParen],["{",g.OpenCurlyBracket],["}",g.CloseCurlyBracket],["[",g.OpenSquareBracket],["]",g.CloseSquareBracket],[",",g.Comma],[".",g.Dot],[":",g.Colon],["|",g.Pipe],["<=",g.ComparisonBinaryOperator],[">=",g.ComparisonBinaryOperator],["==",g.ComparisonBinaryOperator],["!=",g.ComparisonBinaryOperator],["<",g.ComparisonBinaryOperator],[">",g.ComparisonBinaryOperator],["+",g.AdditiveBinaryOperator],["-",g.AdditiveBinaryOperator],["*",g.MultiplicativeBinaryOperator],["/",g.MultiplicativeBinaryOperator],["%",g.MultiplicativeBinaryOperator],["=",g.Equals]],$=new Map([["n","\n"],["t","\t"],["r","\r"],["b","\b"],["f","\f"],["v","\v"],["'","'"],['"','"'],["\\","\\"]]);var O=class{constructor(){this.type="Statement"}},j=class extends O{constructor(t){super(),this.body=t,this.type="Program"}},C=class extends O{constructor(t,e,r){super(),this.test=t,this.body=e,this.alternate=r,this.type="If"}},A=class extends O{constructor(t,e,r,n){super(),this.loopvar=t,this.iterable=e,this.body=r,this.defaultBlock=n,this.type="For"}},q=class extends O{constructor(t,e){super(),this.assignee=t,this.value=e,this.type="Set"}},M=class extends O{constructor(t,e,r){super(),this.name=t,this.args=e,this.body=r,this.type="Macro"}},T=class extends O{constructor(){super(...arguments),this.type="Expression"}},I=class extends T{constructor(t,e,r){super(),this.object=t,this.property=e,this.computed=r,this.type="MemberExpression"}},V=class extends T{constructor(t,e){super(),this.callee=t,this.args=e,this.type="CallExpression"}},N=class extends T{constructor(t){super(),this.value=t,this.type="Identifier"}},P=class extends T{constructor(t){super(),this.value=t,this.type="Literal"}},U=class extends P{constructor(){super(...arguments),this.type="NumericLiteral"}},B=class extends P{constructor(){super(...arguments),this.type="StringLiteral"}},F=class extends P{constructor(){super(...arguments),this.type="BooleanLiteral"}},_=class extends P{constructor(){super(...arguments),this.type="ArrayLiteral"}},L=class extends P{constructor(){super(...arguments),this.type="TupleLiteral"}},R=class extends P{constructor(){super(...arguments),this.type="ObjectLiteral"}},J=class extends T{constructor(t,e,r){super(),this.operator=t,this.left=e,this.right=r,this.type="BinaryExpression"}},z=class extends T{constructor(t,e){super(),this.operand=t,this.filter=e,this.type="FilterExpression"}},W=class extends T{constructor(t,e){super(),this.iterable=t,this.test=e,this.type="SelectExpression"}},K=class extends T{constructor(t,e,r){super(),this.operand=t,this.negate=e,this.test=r,this.type="TestExpression"}},D=class extends T{constructor(t,e){super(),this.operator=t,this.argument=e,this.type="UnaryExpression"}},Z=class extends T{constructor(t=void 0,e=void 0,r=void 0){super(),this.start=t,this.stop=e,this.step=r,this.type="SliceExpression"}},H=class extends T{constructor(t,e){super(),this.key=t,this.value=e,this.type="KeywordArgumentExpression"}};function G(t){const e=new j([]);let r=0;function n(e,n){const s=t[r++];if(!s||s.type!==e)throw new Error(`Parser Error: ${n}. ${s.type} !== ${e}.`);return s}function s(){let e;switch(t[r].type){case g.Text:e=new B(n(g.Text,"Expected text token").value);break;case g.OpenStatement:e=function(){let e;switch(n(g.OpenStatement,"Expected opening statement token"),t[r].type){case g.Set:++r,e=a(),n(g.CloseStatement,"Expected closing statement token");break;case g.If:++r,e=c(),n(g.OpenStatement,"Expected {% token"),n(g.EndIf,"Expected endif token"),n(g.CloseStatement,"Expected %} token");break;case g.Macro:++r,e=function(){const t=v();if("Identifier"!==t.type)throw new SyntaxError("Expected identifier following macro statement");const e=m();n(g.CloseStatement,"Expected closing statement token");const r=[];for(;i(g.OpenStatement,g.EndMacro);)r.push(s());return new M(t,e,r)}(),n(g.OpenStatement,"Expected {% token"),n(g.EndMacro,"Expected endmacro token"),n(g.CloseStatement,"Expected %} token");break;case g.For:++r,e=function(){const t=u(!0);if(!(t instanceof N||t instanceof L))throw new SyntaxError(`Expected identifier/tuple for the loop variable, got ${t.type} instead`);n(g.In,"Expected `in` keyword following loop variable");const e=h();n(g.CloseStatement,"Expected closing statement token");const a=[];for(;i(g.OpenStatement,g.EndFor)&&i(g.OpenStatement,g.Else);)a.push(s());const c=[];if(o(g.OpenStatement,g.Else))for(++r,++r,n(g.CloseStatement,"Expected closing statement token");i(g.OpenStatement,g.EndFor);)c.push(s());return new A(t,e,a,c)}(),n(g.OpenStatement,"Expected {% token"),n(g.EndFor,"Expected endfor token"),n(g.CloseStatement,"Expected %} token");break;default:throw new SyntaxError(`Unknown statement type: ${t[r].type} ${t[r].value}`)}return e}(),e.isStatement=!0;break;case g.OpenExpression:e=function(){n(g.OpenExpression,"Expected opening expression token");const t=h();return n(g.CloseExpression,"Expected closing expression token"),t}(),e.isStatement=!0;break;default:throw new SyntaxError(`Unexpected token type: ${t[r].type}`)}return e}function i(...e){return r+e.length<=t.length&&e.some(((e,n)=>e!==t[r+n].type))}function o(...e){return r+e.length<=t.length&&e.every(((e,n)=>e===t[r+n].type))}function a(){const t=h();if(o(g.Equals)){++r;const e=a();return new q(t,e)}return t}function c(){const e=h();n(g.CloseStatement,"Expected closing statement token");const i=[],a=[];for(;t[r]?.type!==g.OpenStatement||t[r+1]?.type!==g.ElseIf&&t[r+1]?.type!==g.Else&&t[r+1]?.type!==g.EndIf;)i.push(s());if(t[r]?.type===g.OpenStatement&&t[r+1]?.type!==g.EndIf)if(++r,o(g.ElseIf))n(g.ElseIf,"Expected elseif token"),a.push(c());else for(n(g.Else,"Expected else token"),n(g.CloseStatement,"Expected closing statement token");t[r]?.type!==g.OpenStatement||t[r+1]?.type!==g.EndIf;)a.push(s());return new C(e,i,a)}function u(t=!1){const e=t?v:h,n=[e()],s=o(g.Comma);for(;s&&(++r,n.push(e()),o(g.Comma)););return s?new L(n):n[0]}function h(){return function(){const t=l();if(o(g.If)){++r;const e=l();if(o(g.Else)){++r;const n=l();return new C(e,[t],[n])}return new W(t,e)}return t}()}function l(){let e=f();for(;o(g.Or);){const n=t[r];++r;const s=f();e=new J(n,e,s)}return e}function f(){let e=w();for(;o(g.And);){const n=t[r];++r;const s=w();e=new J(n,e,s)}return e}function w(){let e;for(;o(g.Not);){const n=t[r];++r;const s=w();e=new D(n,s)}return e??function(){let e=p();for(;o(g.ComparisonBinaryOperator)||o(g.In)||o(g.NotIn);){const n=t[r];++r;const s=p();e=new J(n,e,s)}return e}()}function p(){let e=E();for(;o(g.AdditiveBinaryOperator);){const n=t[r];++r;const s=E();e=new J(n,e,s)}return e}function d(){const e=function(){let e=v();for(;o(g.Dot)||o(g.OpenSquareBracket);){const s=t[r];let i;++r;const o=s.type!==g.Dot;if(o)i=b(),n(g.CloseSquareBracket,"Expected closing square bracket");else if(i=v(),"Identifier"!==i.type)throw new SyntaxError("Expected identifier following dot operator");e=new I(e,i,o)}return e}();return o(g.OpenParen)?y(e):e}function y(t){let e=new V(t,m());return o(g.OpenParen)&&(e=y(e)),e}function m(){n(g.OpenParen,"Expected opening parenthesis for arguments list");const t=function(){const t=[];for(;!o(g.CloseParen);){let e=h();if(o(g.Equals)){if(++r,!(e instanceof N))throw new SyntaxError("Expected identifier for keyword argument");const t=h();e=new H(e,t)}t.push(e),o(g.Comma)&&++r}return t}();return n(g.CloseParen,"Expected closing parenthesis for arguments list"),t}function b(){const t=[];let e=!1;for(;!o(g.CloseSquareBracket);)o(g.Colon)?(t.push(void 0),++r,e=!0):(t.push(h()),o(g.Colon)&&(++r,e=!0));if(0===t.length)throw new SyntaxError("Expected at least one argument for member/slice expression");if(e){if(t.length>3)throw new SyntaxError("Expected 0-3 arguments for slice expression");return new Z(...t)}return t[0]}function E(){let e=x();for(;o(g.MultiplicativeBinaryOperator);){const n=t[r];++r;const s=x();e=new J(n,e,s)}return e}function x(){let t=function(){let t=d();for(;o(g.Pipe);){++r;let e=v();if(!(e instanceof N))throw new SyntaxError("Expected identifier for the filter");o(g.OpenParen)&&(e=y(e)),t=new z(t,e)}return t}();for(;o(g.Is);){++r;const e=o(g.Not);e&&++r;let n=v();if(n instanceof F&&(n=new N(n.value.toString())),!(n instanceof N))throw new SyntaxError("Expected identifier for the test");t=new K(t,e,n)}return t}function v(){const e=t[r];switch(e.type){case g.NumericLiteral:return++r,new U(Number(e.value));case g.StringLiteral:return++r,new B(e.value);case g.BooleanLiteral:return++r,new F("true"===e.value.toLowerCase());case g.Identifier:return++r,new N(e.value);case g.OpenParen:{++r;const e=u();if(t[r].type!==g.CloseParen)throw new SyntaxError(`Expected closing parenthesis, got ${t[r].type} instead`);return++r,e}case g.OpenSquareBracket:{++r;const t=[];for(;!o(g.CloseSquareBracket);)t.push(h()),o(g.Comma)&&++r;return++r,new _(t)}case g.OpenCurlyBracket:{++r;const t=new Map;for(;!o(g.CloseCurlyBracket);){const e=h();n(g.Colon,"Expected colon between key and value in object literal");const s=h();t.set(e,s),o(g.Comma)&&++r}return++r,new R(t)}default:throw new SyntaxError(`Unexpected token: ${e.type}`)}}for(;r<t.length;)e.body.push(s());return e}function Q(t,e,r=1){void 0===e&&(e=t,t=0);const n=[];for(let s=t;s<e;s+=r)n.push(s);return n}function X(t,e,r,n=1){const s=Math.sign(n);s>=0?(e=(e??=0)<0?Math.max(t.length+e,0):Math.min(e,t.length),r=(r??=t.length)<0?Math.max(t.length+r,0):Math.min(r,t.length)):(e=(e??=t.length-1)<0?Math.max(t.length+e,-1):Math.min(e,t.length-1),r=(r??=-1)<-1?Math.max(t.length+r,-1):Math.min(r,t.length-1));const i=[];for(let o=e;s*o<s*r;o+=n)i.push(t[o]);return i}function Y(t){return t.replace(/\b\w/g,(t=>t.toUpperCase()))}var tt=class{constructor(t=void 0){this.type="RuntimeValue",this.builtins=new Map,this.value=t}__bool__(){return new nt(!!this.value)}toString(){return""+this.value}toJSON(){return this.value}},et=class extends tt{constructor(){super(...arguments),this.type="NumericValue"}},rt=class t extends tt{constructor(){super(...arguments),this.type="StringValue",this.builtins=new Map([["upper",new ct((()=>new t(this.value.toUpperCase())))],["lower",new ct((()=>new t(this.value.toLowerCase())))],["strip",new ct((()=>new t(this.value.trim())))],["title",new ct((()=>new t(Y(this.value))))],["length",new et(this.value.length)],["rstrip",new ct((()=>new t(this.value.trimEnd())))],["lstrip",new ct((()=>new t(this.value.trimStart())))]])}},nt=class extends tt{constructor(){super(...arguments),this.type="BooleanValue"}},st=class extends tt{constructor(t,e){super(t),this.orgValue=e,this.type="ObjectValue",this.builtins=new Map([["get",new ct((([t,e])=>{if(!(t instanceof rt))throw new Error(`Object key must be a string: got ${t.type}`);return this.value.get(t.value)??e??new ut}))],["items",new ct((()=>new ot(Array.from(this.value.entries()).map((([t,e])=>new ot([new rt(t),e]))))))]])}toString(){let t;return t=this.orgValue&&this.orgValue.toString!==Object.prototype.toString?this.orgValue.toString():JSON.stringify(Object.fromEntries(this.value.entries())),t}toJSON(){return this.orgValue?this.orgValue:Object.fromEntries(this.value.entries())}__bool__(){return new nt(this.value.size>0)}},it=class extends st{constructor(){super(...arguments),this.type="KeywordArgumentsValue"}},ot=class extends tt{constructor(){super(...arguments),this.type="ArrayValue",this.builtins=new Map([["length",new et(this.value.length)]])}__bool__(){return new nt(this.value.length>0)}},at=class extends ot{constructor(){super(...arguments),this.type="TupleValue"}},ct=class extends tt{constructor(){super(...arguments),this.type="FunctionValue"}},ut=class extends tt{constructor(){super(...arguments),this.type="NullValue"}},ht=class extends tt{constructor(){super(...arguments),this.type="UndefinedValue"}},lt=class{constructor(t){this.parent=t,this.variables=new Map([["namespace",new ct((t=>{if(0===t.length)return new st(new Map);if(1!==t.length||!(t[0]instanceof st))throw new Error("`namespace` expects either zero arguments or a single object argument");return t[0]}))]]),this.tests=new Map([["boolean",t=>"BooleanValue"===t.type],["callable",t=>t instanceof ct],["odd",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "odd" to type: ${t.type}`);return t.value%2!=0}],["even",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "even" to type: ${t.type}`);return t.value%2==0}],["false",t=>"BooleanValue"===t.type&&!t.value],["true",t=>"BooleanValue"===t.type&&t.value],["string",t=>"StringValue"===t.type],["number",t=>"NumericValue"===t.type],["integer",t=>"NumericValue"===t.type&&Number.isInteger(t.value)],["iterable",t=>t instanceof ot||t instanceof rt],["lower",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toLowerCase()}],["upper",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toUpperCase()}],["none",t=>"NullValue"===t.type],["defined",t=>"UndefinedValue"!==t.type],["undefined",t=>"UndefinedValue"===t.type],["equalto",(t,e)=>t.value===e.value],["eq",(t,e)=>t.value===e.value]])}set(t,e){return this.declareVariable(t,wt(e))}declareVariable(t,e){if(this.variables.has(t))throw new SyntaxError(`Variable already declared: ${t}`);return this.variables.set(t,e),e}setVariable(t,e){return this.variables.set(t,e),e}resolve(t){if(this.variables.has(t))return this;if(this.parent)return this.parent.resolve(t);throw new Error(`Unknown variable: ${t}`)}lookupVariable(t){try{return this.resolve(t).variables.get(t)??new ht}catch{return new ht}}},ft=class{constructor(t){this.global=t??new lt}run(t){return this.evaluate(t,this.global)}evaluateBinaryExpression(t,e){const r=this.evaluate(t.left,e);switch(t.operator.value){case"and":return r.__bool__().value?this.evaluate(t.right,e):r;case"or":return r.__bool__().value?r:this.evaluate(t.right,e)}const n=this.evaluate(t.right,e);switch(t.operator.value){case"==":return new nt(r.value==n.value);case"!=":return new nt(r.value!=n.value)}if(r instanceof ht||n instanceof ht)throw new Error("Cannot perform operation on undefined values");if(r instanceof ut||n instanceof ut)throw new Error("Cannot perform operation on null values");if(r instanceof et&&n instanceof et)switch(t.operator.value){case"+":return new et(r.value+n.value);case"-":return new et(r.value-n.value);case"*":return new et(r.value*n.value);case"/":return new et(r.value/n.value);case"%":return new et(r.value%n.value);case"<":return new nt(r.value<n.value);case">":return new nt(r.value>n.value);case">=":return new nt(r.value>=n.value);case"<=":return new nt(r.value<=n.value)}else if(r instanceof ot&&n instanceof ot){if("+"===t.operator.value)return new ot(r.value.concat(n.value))}else if(n instanceof ot){const e=void 0!==n.value.find((t=>t.value===r.value));switch(t.operator.value){case"in":return new nt(e);case"not in":return new nt(!e)}}if((r instanceof rt||n instanceof rt)&&"+"===t.operator.value)return new rt(r.toString()+n.toString());if(r instanceof rt&&n instanceof rt)switch(t.operator.value){case"in":return new nt(n.value.includes(r.value));case"not in":return new nt(!n.value.includes(r.value))}if(r instanceof rt&&n instanceof st)switch(t.operator.value){case"in":return new nt(n.value.has(r.value));case"not in":return new nt(!n.value.has(r.value))}throw new SyntaxError(`Unknown operator "${t.operator.value}" between ${r.type} and ${n.type}`)}evaluateArguments(t,e){const r=[],n=new Map;for(const s of t)if("KeywordArgumentExpression"===s.type){const t=s;n.set(t.key.value,this.evaluate(t.value,e))}else{if(n.size>0)throw new Error("Positional arguments must come before keyword arguments");r.push(this.evaluate(s,e))}return[r,n]}evaluateFilterExpression(t,e){const r=this.evaluate(t.operand,e);if("Identifier"===t.filter.type){const n=t.filter,s=e.lookupVariable(n.value);if(s instanceof ct)return s.value([r],e);if(r instanceof ot)switch(n.value){case"list":return r;case"first":return r.value[0];case"last":return r.value[r.value.length-1];case"length":return new et(r.value.length);case"reverse":return new ot(r.value.reverse());case"sort":return new ot(r.value.sort(((t,e)=>{if(t.type!==e.type)throw new Error(`Cannot compare different types: ${t.type} and ${e.type}`);switch(t.type){case"NumericValue":return t.value-e.value;case"StringValue":return t.value.localeCompare(e.value);default:throw new Error(`Cannot compare type: ${t.type}`)}})));default:throw new Error(`Unknown ArrayValue filter: ${n.value}`)}else if(r instanceof rt)switch(n.value){case"length":return new et(r.value.length);case"upper":return new rt(r.value.toUpperCase());case"lower":return new rt(r.value.toLowerCase());case"title":return new rt(Y(r.value));case"capitalize":return new rt(r.value.charAt(0).toUpperCase()+r.value.slice(1));case"trim":return new rt(r.value.trim());case"trimStart":return new rt(r.value.trimStart());case"trimEnd":return new rt(r.value.trimEnd());case"indent":return new rt(r.value.split("\n").map(((t,e)=>0===e||0===t.length?t:" "+t)).join("\n"));case"string":return r;default:throw new Error(`Unknown StringValue filter: ${n.value}`)}else{if(r instanceof et){if("abs"===n.value)return new et(Math.abs(r.value));throw new Error(`Unknown NumericValue filter: ${n.value}`)}if(r instanceof st)switch(n.value){case"items":return new ot(Array.from(r.value.entries()).map((([t,e])=>new ot([new rt(t),e]))));case"length":return new et(r.value.size);case"string":return new rt(r.toString());default:throw new Error(`Unknown ObjectValue filter: ${n.value}`)}}throw new Error(`Cannot apply filter "${n.value}" to type: ${r.type}`)}if("CallExpression"===t.filter.type){const n=t.filter;if("Identifier"!==n.callee.type)throw new Error(`Unknown filter: ${n.callee.type}`);const s=n.callee.value,i=e.lookupVariable(s);if(i instanceof ct){const[t,s]=this.evaluateArguments(n.args,e);return s.size>0&&t.push(new it(s)),i.value([r,...t],e)}if(r instanceof ot){switch(s){case"selectattr":{if(r.value.some((t=>!(t instanceof st))))throw new Error("`selectattr` can only be applied to array of objects");if(n.args.some((t=>"StringLiteral"!==t.type)))throw new Error("arguments of `selectattr` must be strings");const[t,s,i]=n.args.map((t=>this.evaluate(t,e)));let o;if(s){const t=e.tests.get(s.value);if(!t)throw new Error(`Unknown test: ${s.value}`);o=t}else o=(...t)=>t[0].__bool__().value;const a=r.value.filter((e=>{const r=e.value.get(t.value);return!!r&&o(r,i)}));return new ot(a)}case"map":{const[,t]=this.evaluateArguments(n.args,e);if(t.has("attribute")){const e=t.get("attribute");if(!(e instanceof rt))throw new Error("attribute must be a string");const n=t.get("default"),s=r.value.map((t=>{if(!(t instanceof st))throw new Error("items in map must be an object");return t.value.get(e.value)??n??new ht}));return new ot(s)}throw new Error("`map` expressions without `attribute` set are not currently supported.")}}throw new Error(`Unknown ArrayValue filter: ${s}`)}if(r instanceof rt){if("indent"===s){const[t,s]=this.evaluateArguments(n.args,e),i=t.at(0)??s.get("width")??new et(4);if(!(i instanceof et))throw new Error("width must be a number");const o=t.at(1)??s.get("first")??new nt(!1),a=t.at(2)??s.get("blank")??new nt(!1),c=r.value.split("\n"),u=" ".repeat(i.value),h=c.map(((t,e)=>!o.value&&0===e||!a.value&&0===t.length?t:u+t));return new rt(h.join("\n"))}throw new Error(`Unknown StringValue filter: ${s}`)}throw new Error(`Cannot apply filter "${s}" to type: ${r.type}`)}throw new Error(`Unknown filter: ${t.filter.type}`)}evaluateTestExpression(t,e){const r=this.evaluate(t.operand,e),n=e.tests.get(t.test.value);if(!n)throw new Error(`Unknown test: ${t.test.value}`);const s=n(r);return new nt(t.negate?!s:s)}evaluateUnaryExpression(t,e){const r=this.evaluate(t.argument,e);if("not"===t.operator.value)return new nt(!r.value);throw new SyntaxError(`Unknown operator: ${t.operator.value}`)}evalProgram(t,e){return this.evaluateBlock(t.body,e)}evaluateBlock(t,e){let r="";for(const n of t){const t=this.evaluate(n,e);"NullValue"!==t.type&&"UndefinedValue"!==t.type&&(r+=t)}return new rt(r)}evaluateIdentifier(t,e){return e.lookupVariable(t.value)}evaluateCallExpression(t,e){const[r,n]=this.evaluateArguments(t.args,e);n.size>0&&r.push(new it(n));const s=this.evaluate(t.callee,e);if("FunctionValue"!==s.type)throw new Error(`Cannot call something that is not a function: got ${s.type}`);return s.value(r,e)}evaluateSliceExpression(t,e,r){if(!(t instanceof ot||t instanceof rt))throw new Error("Slice object must be an array or string");const n=this.evaluate(e.start,r),s=this.evaluate(e.stop,r),i=this.evaluate(e.step,r);if(!(n instanceof et||n instanceof ht))throw new Error("Slice start must be numeric or undefined");if(!(s instanceof et||s instanceof ht))throw new Error("Slice stop must be numeric or undefined");if(!(i instanceof et||i instanceof ht))throw new Error("Slice step must be numeric or undefined");return t instanceof ot?new ot(X(t.value,n.value,s.value,i.value)):new rt(X(Array.from(t.value),n.value,s.value,i.value).join(""))}evaluateMemberExpression(t,e){const r=this.evaluate(t.object,e);let n,s;if(t.computed){if("SliceExpression"===t.property.type)return this.evaluateSliceExpression(r,t.property,e);n=this.evaluate(t.property,e)}else n=new rt(t.property.value);if(r instanceof st){if(!(n instanceof rt))throw new Error(`Cannot access property with non-string: got ${n.type}`);s=r.value.get(n.value)??r.builtins.get(n.value)}else if(r instanceof ot||r instanceof rt)if(n instanceof et)s=r.value.at(n.value),r instanceof rt&&(s=new rt(r.value.at(n.value)));else{if(!(n instanceof rt))throw new Error(`Cannot access property with non-string/non-number: got ${n.type}`);s=r.builtins.get(n.value)}else{if(!(n instanceof rt))throw new Error(`Cannot access property with non-string: got ${n.type}`);s=r.builtins.get(n.value)}return s instanceof tt?s:new ht}evaluateSet(t,e){const r=this.evaluate(t.value,e);if("Identifier"===t.assignee.type){const n=t.assignee.value;e.setVariable(n,r)}else{if("MemberExpression"!==t.assignee.type)throw new Error(`Invalid LHS inside assignment expression: ${JSON.stringify(t.assignee)}`);{const n=t.assignee,s=this.evaluate(n.object,e);if(!(s instanceof st))throw new Error("Cannot assign to member of non-object");if("Identifier"!==n.property.type)throw new Error("Cannot assign to member with non-identifier property");s.value.set(n.property.value,r)}}return new ut}evaluateIf(t,e){const r=this.evaluate(t.test,e);return this.evaluateBlock(r.__bool__().value?t.body:t.alternate,e)}evaluateFor(t,e){const r=new lt(e);let n,s;if("SelectExpression"===t.iterable.type){const e=t.iterable;s=this.evaluate(e.iterable,r),n=e.test}else s=this.evaluate(t.iterable,r);if(!(s instanceof ot))throw new Error(`Expected iterable type in for loop: got ${s.type}`);const i=[],o=[];for(let e=0;e<s.value.length;++e){const a=new lt(r),c=s.value[e];let u;if("Identifier"===t.loopvar.type)u=e=>e.setVariable(t.loopvar.value,c);else{if("TupleLiteral"!==t.loopvar.type)throw new Error(`Invalid loop variable(s): ${t.loopvar.type}`);{const e=t.loopvar;if("ArrayValue"!==c.type)throw new Error(`Cannot unpack non-iterable type: ${c.type}`);const r=c;if(e.value.length!==r.value.length)throw new Error(`Too ${e.value.length>r.value.length?"few":"many"} items to unpack`);u=t=>{for(let n=0;n<e.value.length;++n){if("Identifier"!==e.value[n].type)throw new Error(`Cannot unpack non-identifier type: ${e.value[n].type}`);t.setVariable(e.value[n].value,r.value[n])}}}}if(n){u(a);if(!this.evaluate(n,a).__bool__().value)continue}i.push(c),o.push(u)}let a="",c=!0;for(let e=0;e<i.length;++e){const n=new Map([["index",new et(e+1)],["index0",new et(e)],["revindex",new et(i.length-e)],["revindex0",new et(i.length-e-1)],["first",new nt(0===e)],["last",new nt(e===i.length-1)],["length",new et(i.length)],["previtem",e>0?i[e-1]:new ht],["nextitem",e<i.length-1?i[e+1]:new ht]]);r.setVariable("loop",new st(n)),o[e](r);a+=this.evaluateBlock(t.body,r).value,c=!1}if(c){a+=this.evaluateBlock(t.defaultBlock,r).value}return new rt(a)}evaluateMacro(t,e){return e.setVariable(t.name.value,new ct(((e,r)=>{const n=new lt(r);let s;e=e.slice(),"KeywordArgumentsValue"===e.at(-1)?.type&&(s=e.pop());for(let r=0;r<t.args.length;++r){const i=t.args[r],o=e[r];if("Identifier"===i.type){const t=i;if(!o)throw new Error(`Missing positional argument: ${t.value}`);n.setVariable(t.value,o)}else{if("KeywordArgumentExpression"!==i.type)throw new Error(`Unknown argument type: ${i.type}`);{const t=i,e=o??s?.value.get(t.key.value)??this.evaluate(t.value,n);n.setVariable(t.key.value,e)}}}return this.evaluateBlock(t.body,n)}))),new ut}evaluate(t,e){if(void 0===t)return new ht;switch(t.type){case"Program":return this.evalProgram(t,e);case"Set":return this.evaluateSet(t,e);case"If":return this.evaluateIf(t,e);case"For":return this.evaluateFor(t,e);case"Macro":return this.evaluateMacro(t,e);case"NumericLiteral":return new et(Number(t.value));case"StringLiteral":return new rt(t.value);case"BooleanLiteral":return new nt(t.value);case"ArrayLiteral":return new ot(t.value.map((t=>this.evaluate(t,e))));case"TupleLiteral":return new at(t.value.map((t=>this.evaluate(t,e))));case"ObjectLiteral":{const r=new Map;for(const[n,s]of t.value){const t=this.evaluate(n,e);if(!(t instanceof rt))throw new Error(`Object keys must be strings: got ${t.type}`);r.set(t.value,this.evaluate(s,e))}return new st(r,t.value)}case"Identifier":return this.evaluateIdentifier(t,e);case"CallExpression":return this.evaluateCallExpression(t,e);case"MemberExpression":return this.evaluateMemberExpression(t,e);case"UnaryExpression":return this.evaluateUnaryExpression(t,e);case"BinaryExpression":return this.evaluateBinaryExpression(t,e);case"FilterExpression":return this.evaluateFilterExpression(t,e);case"TestExpression":return this.evaluateTestExpression(t,e);default:throw new SyntaxError(`Unknown node type: ${t.type}`)}}};function wt(t){switch(typeof t){case"number":return new et(t);case"string":return new rt(t);case"boolean":return new nt(t);case"undefined":return new ht;case"object":return null===t?new ut:Array.isArray(t)?new ot(t.map(wt)):new st(new Map(Object.entries(t).map((([t,e])=>[t,wt(e)]))),t);case"function":return new ct(((e,r)=>{const n=e.map((t=>pt(t)));return wt(t(...n)??null)}));default:throw new Error(`Cannot convert to runtime value: ${t}`)}}function pt(t){let e=t;if(Array.isArray(t))e=t.map((t=>pt(t)));else if(t instanceof Map)e={},t.forEach(((t,r)=>{e[r]=pt(t)}));else switch(t.type){case"NullValue":e=null;break;case"UndefinedValue":e=void 0;break;case"ArrayValue":e=t.value.map((t=>pt(t)));break;case"KeywordArgumentsValue":case"ObjectValue":e=t.orgValue?t.orgValue:pt(t.value),"KeywordArgumentsValue"===t.type&&Object.setPrototypeOf(e,{jinja_kargs:!0});break;default:t.type&&(e=t.value)}return e}function dt(t,e=0){return Math.floor(Math.random()*(t-e+1))+e}var yt={randomInt:dt,select:function(t,e){if(Array.isArray(t)||"string"==typeof t)return void 0===e?e=dt(t.length-1):"string"==typeof e&&(e=parseInt(e)),e<0&&(e=t.length+e),t[e];if(t&&"object"==typeof t){if(void 0===e){const r=Object.keys(t);e=r[dt(r.length-1)]}return t[e]}},tojson:function(t,e,r){return e&&"object"==typeof e&&(e.depth&&(r=e.depth),e=e.indent),mt(t,e,r)}};function mt(t,e,r){let n="";const s=r??0;if(null===t)n="null";else{const r=typeof t;switch(r){case"undefined":n="null";case"number":case"string":case"boolean":return JSON.stringify(t);case"object":{const r=e?" ".repeat(e):"",n="\n"+r.repeat(s),i=n+r;if(Array.isArray(t)){const r=t.map((t=>mt(t,e,s+1)));return e?`[${i}${r.join(`,${i}`)}${n}]`:`[${r.join(", ")}]`}{const r=Array.from(Object.entries(t)).map((([t,r])=>{const n=`"${t}": ${mt(r,e,s+1)}`;return e?`${i}${n}`:n}));return e?`{${r.join(",")}${n}}`:`{${r.join(", ")}}`}}default:throw new Error(`Cannot convert to JSON: ${r}`)}}return n}var bt=class extends lt{constructor(t){super(t),this.parent=t}assign(t){for(const[e,r]of Object.entries(t))this.set(e,r)}clear(){this.variables.clear()}},gt=class t{static{this.global=new bt}constructor(t,e={}){const r=function(t,e={}){const r=[],n=function(t,e={}){return t.endsWith("\n")&&(t=t.slice(0,-1)),t=t.replace(/{#.*?#}/gs,"{##}"),e.lstrip_blocks&&(t=t.replace(/^[ \t]*({[#%])/gm,"$1")),e.trim_blocks&&(t=t.replace(/([#%]})\n/g,"$1")),t.replace(/{##}/g,"").replace(/-%}\s*/g,"%}").replace(/\s*{%-/g,"{%").replace(/-}}\s*/g,"}}").replace(/\s*{{-/g,"{{")}(t,e);let s=0;const i=t=>{let e="";for(;t(n[s]);)if("\\"!==n[s]){if(e+=n[s++],s>=n.length)throw new SyntaxError("Unexpected end of input")}else{if(++s,s>=n.length)throw new SyntaxError("Unexpected end of input");const t=n[s++],r=$.get(t);if(void 0===r)throw new SyntaxError(`Unexpected escaped character: ${t}`);e+=r}return e};t:for(;s<n.length;){const t=r.at(-1)?.type;if(void 0===t||t===g.CloseStatement||t===g.CloseExpression){let t="";for(;s<n.length&&("{"!==n[s]||"%"!==n[s+1]&&"{"!==n[s+1]);)t+=n[s++];if(t.length>0){r.push(new x(t,g.Text));continue}}i((t=>/\s/.test(t)));const e=n[s];if("-"===e||"+"===e){const t=r.at(-1)?.type;if(t===g.Text||void 0===t)throw new SyntaxError(`Unexpected character: ${e}`);switch(t){case g.Identifier:case g.NumericLiteral:case g.BooleanLiteral:case g.StringLiteral:case g.CloseParen:case g.CloseSquareBracket:break;default:{++s;const t=i(k);r.push(new x(`${e}${t}`,t.length>0?g.NumericLiteral:g.UnaryOperator));continue}}}for(const[t,e]of S)if(n.slice(s,s+t.length)===t){r.push(new x(t,e)),s+=t.length;continue t}if("'"!==e&&'"'!==e)if(k(e)){const t=i(k);r.push(new x(t,g.NumericLiteral))}else{if(!v(e))throw new SyntaxError(`Unexpected character: ${e}`);{const t=i(v),e=Object.hasOwn(E,t)?E[t]:g.Identifier;e===g.In&&r.at(-1)?.type===g.Not?(r.pop(),r.push(new x("not in",g.NotIn))):r.push(new x(t,e))}}else{++s;const t=i((t=>t!==e));r.push(new x(t,g.StringLiteral)),++s}}return r}(t,e={lstrip_blocks:!0,trim_blocks:!0,...e});this.parsed=G(r)}render(e){const r=new lt(t.global);r.set("false",!1),r.set("true",!0),r.set("raise_exception",(t=>{throw new Error(t)})),r.set("range",Q);for(const[t,n]of Object.entries(e))r.set(t,n);return new ft(r).run(this.parsed).toString()}};function Et(t,e){let r;switch(t.type){case"Identifier":r=t.value;break;case"MemberExpression":r=Et(t.object,e);break;case"FilterExpression":r=Et(t.operand,e);break;case"Set":{e||(e=[]);const n=Et(t.assignee);n&&e.push(n),r=Et(t.value,e);break}}return r&&e?.includes(r)&&(r=void 0),r}function xt(t){let e;if("Program"===t.type)e=t.body.some((t=>xt(t)));else e=t.isStatement;return e}function vt(t,e){let r=[];if(Array.isArray(t))r=t.map((t=>vt(t,e))).filter(Boolean).flat();else switch(t.type){case"Program":r=t.body.map((t=>vt(t,e))).filter(Boolean).flat();break;case"If":r=[Et(t.test,e),...vt(t.body,e),...vt(t.alternate,e)].filter(Boolean);break;case"BinaryExpression":r=[Et(t.left,e),Et(t.right,e)].filter(Boolean);break;case"For":{const n=Et(t.loopvar);n&&(e||(e=[]),e.push(n)),r=[Et(t.iterable,e),...vt(t.body,e)].filter(Boolean);break}case"CallExpression":r=[Et(t.callee,e),...vt(t.args,e)].filter(Boolean);break;default:r=[Et(t,e)].filter(Boolean)}return r}gt.global.assign(yt);function kt(t){const e=t.split(""),r=[],n=(t,r)=>{for(let n=r;n<e.length;n+=1)if(t.includes(e[n]))return n;return-1};let s=0;for(;s<e.length;)if("{"===e[s]&&s+1<e.length&&"{"===e[s+1])r.push({type:"literal",text:"{"}),s+=2;else if("}"===e[s]&&s+1<e.length&&"}"===e[s+1])r.push({type:"literal",text:"}"}),s+=2;else if("{"===e[s]){const t=n("}",s);if(t<0)throw new Error("Unclosed '{' in template.");r.push({type:"variable",name:e.slice(s+1,t).join("")}),s=t+1}else{if("}"===e[s])throw new Error("Single '}' in template.");{const t=n("{}",s),i=(t<0?e.slice(s):e.slice(s,t)).join("");r.push({type:"literal",text:i}),s=t<0?e.length:t}}return r}function St(t){const e=new Set;return t.forEach((t=>{"variable"===t.type&&e.add(t.name)})),[...e]}b.register(class extends b{static isTemplate(t){let e,r,n=!1;if("object"==typeof t?(r=t.template,e=t.compiledTemplate):r=t,!e&&r)try{e=new gt(r)}catch(t){}return e&&(n=xt(e.parsed)),n}getVariables(t=this.compiledTemplate){return vt(t.parsed,[]).filter(((t,e,r)=>r.indexOf(t)===e))}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new w.CommonError("Prompt template must be a string","PromptTemplate",w.ErrorCode.InvalidArgument);this.compiledTemplate=new gt(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return this.compiledTemplate.render(t)}},{name:"hf",aliases:["huggingface","internal","default"]});function $t(t,e){return"string"==typeof e&&(e=e.split(".").filter((t=>t.length))),e.reduce(((t,e)=>t?.[e]),t)}function Ot(t,e,r){let n=function(t,e,r){return t.replace(/{{\s*re_replace\s+\.(.+?)\s+(["'])((?:(?!\2).)*?)\2\s+(["'])((?:(?!\4).)*?)\4\s*}}/g,((t,n,s,i,o,a)=>{if(r)return e[n]=null,t;const c=new RegExp(i,"g");return $t(e,n).replace(c,a)}))}(t,e,r);return n=function(t,e,r){return t.replace(/{{\s*join\s+\.(.+?)\s+(["'])((?:(?!\2).)*?)\2\s*}}/g,((t,n,s,i)=>r?(e[n]=null,t):$t(e,n).join(i)))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*if\s*(\S+?)\s*}}([^{]*)({{\s*else\s*}}([^{]*))?{{\s*end\s*}}/g,((t,n,s,i,o)=>{if(r)return n.startsWith(".")&&(n=n.substring(1)),e[n]=null,t;let a;if(!n.startsWith("."))throw new Error("Functionality not implemented");{const t=$t(e,n.substring(1));if(null==t)a=o??"";else if("string"==typeof t)a=t.length>0?s:o??"";else if(Array.isArray(t))a=t.length>0?s:o??"";else{if("boolean"!=typeof t)throw new Error(`Unexpected type for variable ${n}: ${typeof t}`);a=t?s:o??""}}return a}))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*range\s*[.$]([^{}\s]+?)\s*}}([^{]*?){{\.}}([^{]*?){{\s*end\s*}}/g,((t,n,s,i)=>{if(r)return e[n]=null,t;const o=$t(e,n);if(Array.isArray(o)){let t="";for(const e of o)t+=`${s}${e}${i}`;return t}return t}))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*\.([^{}\s]+?)\s*}}/g,((t,n)=>r?(e[n]=null,t):$t(e,n)||""))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*index\s*\.(.+?)\s+(.+?)\s*}}/g,((t,n,s)=>{if(r)return e[n]=null,t;const i=$t(e,n);let o;return o=isNaN(s)?i[s.substring(1,s.length-1)]:i[parseInt(s,10)],o||""}))}(n,e,r),n}b.register(class extends b{static isTemplate(t){let e,r,n=!1;if("object"==typeof t?(r=t.template,e=t.compiledTemplate):r=t,!e&&r)try{e=kt(r)}catch(t){}if(e){n=St(e).length>0}return n}getVariables(t=this.compiledTemplate){return St(t)}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new w.CommonError("Prompt template must be a string","PromptTemplate",w.ErrorCode.InvalidArgument);this.compiledTemplate=kt(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return e=this.compiledTemplate,r=t,e.reduce(((t,e)=>{let n;return n="variable"===e.type?e.name in r?t+r[e.name]:t:t+e.text,n}),"");var e,r}},{name:"fstring",aliases:["python","f-string","langchain"]});function jt(t){return Object.keys(t).sort().map((e=>t[e]))}b.register(class extends b{static isTemplate(t){const e="string"==typeof t?t:t.template;return e?.includes("{{")&&e.includes("}}")}getVariables(t){const e={};return Ot(t,e,!0),[...Object.keys(e)]}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new w.CommonError("Prompt template must be a string","PromptTemplate",w.ErrorCode.InvalidArgument);this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables(e)}_format(t){return Ot(this.template,t)}},{name:"golang",aliases:["localai","ollama"]});b.register(class extends b{static from(t){return new this(t)}constructor(t){super(t)}_initialize(t){t&&(t.suffix&&(this.suffix=t.suffix),t.exampleSeparator&&(this.exampleSeparator=t.exampleSeparator),t.prefix&&(this.prefix=t.prefix),t.examplePrompt&&(this.examplePrompt=t.examplePrompt instanceof b?t.examplePrompt:b.from(t.examplePrompt)),t.examples&&(this.examples=t.examples)),this.prefix||(this.prefix=""),this.exampleSeparator||(this.exampleSeparator="\n\n"),this.suffix||(this.suffix="")}async _format(t){const e=[];for await(const t of this.examples)if(this.examplePrompt){const r=await this.examplePrompt.format(t);e.push(r)}else if("string"==typeof t)e.push(t);else if(t){const r=jt(t);r.length>0&&e.push(...r)}const r=[this.prefix,...e,this.suffix].join(this.exampleSeparator),n=this.templateFormat;return await b.format({template:r,data:t,templateFormat:n})}toJSON(t=this){const e=super.toJSON(t);return t.suffix&&(e.suffix=t.suffix),t.exampleSeparator&&(e.exampleSeparator=t.exampleSeparator),t.prefix&&(e.prefix=t.prefix),t.examplePrompt&&(e.examplePrompt=t.examplePrompt),t.examples&&(e.examples=t.examples),e}},{name:"fewshot",aliases:["few_shot"]});new RegExp("([A-Z][a-z]{1,2}\\.)@(\\w)","g"),new RegExp("(\\.[a-zA-Z]\\.)@(\\w)","g");var Ct=require("custom-ability"),At="event",qt="event-bus";(0,Ct.createAbilityInjector)((function(t){return class{static get emitter(){if(!this._emitter){const t=this.get(qt)?.emitter;t&&(this._emitter=t,this.prototype._events=t._events)}return this._emitter}get emitter(){return this.constructor._emitter}on(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.on(e,r)}once(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.once(e,r)}off(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.off(e,r)}emit(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return"error"===e?this.emitError.apply(this,r):n.emit.call(this,e,this.name,...r)}emitError(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.emit.call(this,"error",e,this.name,...r)}async emitAsync(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.emitAsync.call(this,e,this.name,...r)}}}),!0);function Mt(t,e){return!t||t.some((t=>t instanceof RegExp?t.test(e):t===e))}var Tt=class{get active(){return this._active}set active(t){t!==this._active&&(t?(this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0),this.options.pingInterval>0&&(this.pingTimer=setInterval((()=>this.publish()),this.options.pingInterval))):(this.clients.size&&this.clearClients(),this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0)),this._active=t)}constructor(t){this.options=Object.assign({},{pingInterval:3e3,maxStreamDuration:3e4,clientRetryInterval:1e3,startId:1,historySize:100,rewind:0,cors:!1},t),this.nextID=this.options.startId,this.clients=new Set,this.messages=[],this.active=!0}publish(t,e){let r,n;this.active||(0,w.throwError)("Channel closed","SSEChannel",498);let s=e;if(t||e)n=this.nextID++,"object"==typeof t&&(t.event?(s=t.event,void 0!==t.data&&(t=JSON.stringify(t.data))):t=JSON.stringify(t)),t=t?t.split(/[\r\n]+/).map((t=>"data: "+t)).join("\n"):"",r="id: "+n+"\n"+(e?"event: "+e+"\n":"")+(t||"data: ")+"\n\n",this.messages.push({id:n,_eventName:s,output:r});else{if(!this.clients.size)return;r="data: \n\n"}for([...this.clients].filter((t=>!s||Mt(t.events,s))).forEach(((t,e)=>{t.res.write(r)}));this.messages.length>this.options.historySize;)this.messages.shift();return n}subscribe(t,e,r){this.active||(0,w.throwError)("Channel closed","SSEChannel",498);const n={req:t,res:e,events:r},s=this.options.maxStreamDuration;let i="max-age=0, stale-while-revalidate=0, stale-if-error=0, no-transform";s>0&&(i+=", s-maxage="+(Math.floor(s/1e3)-1));const o={"Content-Type":"text/event-stream","Cache-Control":i,Connection:"keep-alive"};this.options.cors&&(o["access-control-allow-origin"]="*"),n.req.socket.setNoDelay(!0),n.res.writeHead(200,o);let a="retry: "+this.options.clientRetryInterval+"\n\n";const c=Number.parseInt(t.headers["last-event-id"],10),u=Number.isNaN(c)?this.options.rewind:this.nextID-1-c;return u&&this.messages.filter((t=>Mt(n.events,t.eventName))).slice(0-u).forEach((t=>{a+=t.output})),n.res.write(a),this.clients.add(n),s>0&&setTimeout((()=>{n.res.writableEnded||this.unsubscribe(n)}),s),n.res.on("close",(()=>this.unsubscribe(n))),n}unsubscribe(t){t.res.end(),this.clients.delete(t)}clearClients(){this.clients.forEach((t=>t.res.end())),this.clients.clear()}listClients(){const t={};return this.clients.forEach((e=>{const r=e.req.socket.remoteAddress??"";r in t||(t[r]=0),t[r]++})),t}getSubscriberCount(){return this.clients.size}};require("eventsource-parser");require("uuid"),c(require("base32768")),require("uuid");var It=c(require("xxhashjs")),{h32:Vt,h64:Nt}=(c(require("base32768")),require("json-canonicalize"),It.default),Pt=(require("util-ex"),require("lodash-es"),require("util-ex"),require("load-config-file")),Ut=require("yaml"),Bt=require("yaml-types"),Ft=(require("mime-type/with-db"),[Bt.regexp]);Pt.Config.register([".yml",".yaml"],(function(t){return(0,Ut.parse)(t,{customTags:Ft})})),Pt.Config.register([".json"],(function(t){return JSON.parse(t)}));var _t=class t{constructor(t=0){this.bitField=t}static has(t,e){return!!(t&1<<e)}static add(t,e){return t|1<<e}static delete(t,e){return t&~(1<<e)}add(t){return this.bitField|=1<<t,this}delete(t){return this.bitField&=~(1<<t),this}has(e){return t.has(this.bitField,e)}clear(){return this.bitField=0,this}valueOf(){return this.bitField}toString(){return this.bitField.toString()}toJSON(){return this.bitField}},Lt=require("events-ex");function Rt(t){return e=Math.min(Math.max(16,t),1073741824),e>>>=0,e-=1,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,1+(e|=e>>16);var e}var Jt=class{constructor(t){this._capacity=Rt(t),this._length=0,this._front=0,this.arr=[]}push(t){const e=this._length;this.checkCapacity(e+1);const r=this._front+e&this._capacity-1;return this.arr[r]=t,this._length=e+1,r}pop(){const t=this._length;if(0===t)return;const e=this._front+t-1&this._capacity-1,r=this.arr[e];return this.arr[e]=void 0,this._length=t-1,r}shift(){const t=this._length;if(0===t)return;const e=this._front,r=this.arr[e];return this.arr[e]=void 0,this._front=e+1&this._capacity-1,this._length=t-1,r}get length(){return this._length}checkCapacity(t){this._capacity<t&&this.resizeTo(Rt(1.5*this._capacity+16))}resizeTo(t){const e=this._capacity;this._capacity=t;const r=this._front,n=this._length;if(r+n>e){const t=r+n&e-1;!function(t,e,r,n,s){for(let i=0;i<s;++i)r[i+n]=t[i+e],t[i+e]=void 0}(this.arr,0,this.arr,e,t)}}},zt=class extends Lt.EventEmitter{};function Wt(t){return"function"==typeof t}function Kt(){return"1"}var Dt=class{constructor(t,{initFn:e=Kt,pauseFn:r,resumeFn:n,capacity:s=32}={}){if(Wt(r)!==Wt(n))throw new Error("pauseFn and resumeFn must be both set for pausing");this.maxConcurrency=t,this.free=new Jt(t),this.waiting=new Jt(s),this.releaseEmitter=new zt,this.useDefaultTokens=e===Kt,this.pauseFn=r,this.resumeFn=n,this.paused=!1,this.releaseEmitter.on("release",(t=>{const e=this.waiting.shift();e?e.resolve(t):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(t))}));for(let r=0;r<t;r++)this.free.push(e())}tryAcquire(){return this.free.pop()}acquire(t){let e=this.tryAcquire();return void 0!==e?Promise.resolve(e):new Promise(((e,r)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn());const n=this.waiting.push({resolve:e,reject:r});return t&&t.addEventListener("abort",(()=>{this.waiting[n]=void 0;const e=t.reason instanceof Error?t.reason:new Error(t.reason||"aborted");t.alreadyRejected=!0,r(e)})),n}))}release(t){this.releaseEmitter.emit("release",this.useDefaultTokens?"1":t)}drain(){const t=new Array(this.maxConcurrency);for(let e=0;e<this.maxConcurrency;e++)t[e]=this.acquire();return Promise.all(t)}pendingCount(){return this.waiting.length}},Zt=require("custom-ability"),Ht=require("util-ex"),Gt=class extends AbortController{constructor(t){super(),(0,Ht.defineProperty)(this,"parent",t)}abort(t,e){this.signal.aborted||("string"==typeof t&&(t=new w.AbortError(t)),t&&e&&"object"==typeof t&&Object.assign(t.data,e),super.abort(t))}throwRejected(t){const e=this.signal;if(e.aborted){if(void 0===t&&(t=e.alreadyRejected),t)return!0;throw e.reason instanceof Error?e.reason:new w.AbortError(e.reason||"aborted")}}},Qt=class{get maxTaskConcurrency(){return this._maxTaskConcurrency}get semaphore(){const t=this._maxTaskConcurrency;let e=this.__task_semaphore;return t>0&&!e&&(e=this.__task_semaphore=new Dt(t-1)),e}isAborted(t){const e=this.hasAsyncFeature(Yt);let r=this.__task_aborter;if(r&&e){if(null==t)throw new w.CommonError("Missing taskId",this.name+".isAborted",w.ErrorCode.InvalidArgument);r=r[t]}return!r||r.signal.aborted}getRunningTask(t){const e=this.hasAsyncFeature(Yt);let r=this.__task_aborter;if(r&&e){if(null==t)throw new w.CommonError("Missing taskId",this.name+".getRunningTask",w.ErrorCode.InvalidArgument);r=r[t]}return r?.signal.aborted&&(e?this.__task_aborter[t]=void 0:this.__task_aborter=void 0,r=void 0),r}getRunningTaskCount(){let t;if(this.hasAsyncFeature(Yt)){const e=this.__task_aborter;t=e&&Object.entries(e).filter((([t,r])=>{if(!r?.signal.aborted)return!0;e[t]=void 0})).length}else{const e=this.__task_aborter;t=e?.signal.aborted?0:1}return t}_generateAsyncTaskId(t,e){if(e||(e=this.__task_aborter),null==t&&(t=0,e))for(;e[t];)t++;return t}$generateAsyncTaskId(t,e){const r=this.super,n=this.self||this;return t=r?r.call(n,t):this._generateAsyncTaskId(t,e)}createAborter(t,e,r=!0){const n=this.hasAsyncFeature(Yt);if(!n&&r&&this.getRunningTask())throw new w.CommonError("The task is running",this.name,w.ErrorCode.TooManyRequests);const s=t?.aborter||new Gt(this);if(!(s instanceof Gt)){if(!(s instanceof AbortController))throw new w.CommonError("aborter should be an AbortController",this.name,w.ErrorCode.InvalidArgument);Object.setPrototypeOf(s,new Gt(this))}if(n){null==this.__task_aborter&&(this.__task_aborter={});const t=this.__task_aborter;null==e&&(e=this.generateAsyncTaskId(e,t)),s.id=e,t[e]=s}else this.__task_aborter=s;const i=t?.timeout;return i>0&&(s.timeoutId=setTimeout((()=>{s.timeoutId=void 0,this.abort("timeout",{timeout:i})}),i)),s.signal.addEventListener("abort",(()=>{const t=s.timeoutId;t&&(s.timeoutId=void 0,clearTimeout(t));const e=s.signal;try{this.emit&&this.emit("aborting",e.reason,e.reason?.data)}finally{s.streamController?.error(e.reason)}})),s}$cleanMultiTaskAborter(t,e){const r=this.super,n=this.self||this;r?r.call(n,t,e):n._cleanMultiTaskAborter(t,e)}cleanTaskAborter(t){if(this.hasAsyncFeature(Yt)){const e=this.__task_aborter;this.cleanMultiTaskAborter(t.id,e)}else this.__task_aborter=void 0}_cleanMultiTaskAborter(t,e){"number"==typeof t?e[t]=void 0:delete e[t]}createTaskPromise(t,e,r){const n=this.createAborter(e,r?.taskId,r?.raiseError);void 0===e&&(e={}),"object"==typeof e&&(e.aborter=n);let s=t(e,n).then((t=>{if(t&&t instanceof ReadableStream){const e=()=>{this.cleanTaskAborter(n)},r=function(t){const e=t||{};return new TransformStream({async start(t){const r=t.error;if(t.error=n=>{r.call(t,n),e.onError&&e.onError(n)},e.onStart)try{await e.onStart(t)}catch(e){t.error(e)}},async transform(t,r){try{let n;e.onTransform&&(n=await e.onTransform(t,r)),n||(n=t),r.enqueue(n)}catch(t){r.error(t)}},async flush(t){if(e.onFinal)try{await e.onFinal(t)}catch(e){return t.error(e)}t.terminate()}})}({onStart:t=>{(0,Ht.defineProperty)(n,"streamController",t)},onFinal:e,onError:e,onTransform:(t,e)=>(t&&"object"==typeof t&&(t.taskId=n.id),t)});t=t.pipeThrough(r)}else this.cleanTaskAborter(n);return t})).catch((t=>{throw this.cleanTaskAborter(n),t})).finally((()=>{n.timeoutId&&(clearTimeout(n.timeoutId),n.timeoutId=void 0)}));return s.task=n,s}runAsyncCancelableTask(t={},e,r){let n=this.createTaskPromise(e,t,r);const s=this.semaphore;if(s){const t=n,e=t.task;n=s.acquire(e.signal).then((()=>t)).finally((()=>{s.release()})),n.task=e}return n}abort(t,e){let r=this.__task_aborter;if(r){const n=r;if(this.hasAsyncFeature(Yt)){const t=e?.taskId;if(null==t)throw new w.CommonError("Missing data.taskId",this.name+".abort",w.ErrorCode.InvalidArgument);r=r[t],this.cleanMultiTaskAborter(t,n)}else this.__task_aborter=void 0;r&&!r.signal.aborted&&r.abort(t,e)}}};Qt.prototype.generateAsyncTaskId=function(t,e){return this._generateAsyncTaskId(t,e)},Qt.prototype.cleanMultiTaskAborter=function(t,e){return this._cleanMultiTaskAborter(t,e)};(0,Zt.createAbilityInjector)(Qt,"abort",{afterInjection:function(t,e){let r=t.prototype._asyncFeatures||0;r|=te.Cancelable,e&&(e.asyncFeatures&&(r|=e.asyncFeatures),e.maxTaskConcurrency>0&&(t.prototype._maxTaskConcurrency=e.maxTaskConcurrency)),t.prototype._asyncFeatures=r}}),require("lodash-es"),require("util-ex"),c(require("memoizee")),require("json-canonicalize"),require("pkg-dir"),require("util-ex");var Xt,Yt=0,te=((Xt=te||{})[Xt.MultiTask=1<<Yt]="MultiTask",Xt[Xt.Cancelable=2]="Cancelable",Xt[Xt.Priority=4]="Priority",Xt),ee=class t extends l.AdvancePropertyManager{static{this.items={}}static get(t){return this.items[t]}static list(){return this.items}static getByTag(t){let e;for(const r in this.list()){const n=this.get(r);let s=n.tags;if("string"==typeof s){if(s===t){e=n;break}}else if(Array.isArray(s)&&s.indexOf(t)>=0){e=n;break}}return e}static getAllByTag(t){let e=[];for(const r in this.list()){const n=this.get(r);let s=n.tags;"string"==typeof s?s===t&&e.push(n):Array.isArray(s)&&s.indexOf(t)>=0&&e.push(n)}return e}static hasAsyncFeature(t){const e=this.prototype;let r=e.asyncFeatures;return e._asyncFeatures&&(r|=e._asyncFeatures),_t.has(r,t)}static run(t,e){const r=this.get(t);if(r)return r.run(e);throw new w.NotFoundError(`${t} to run`,this.name)}static runSync(t,e){const r=this.get(t);if(r)return r.runSync(e);throw new w.NotFoundError(`${t} to run`,this.name)}static getFunc(t){const e=this.get(t);return e?.getFunc()}static runWithPos(t,...e){const r=this.get(t);if(r)return r.runWithPos(...e);throw new w.NotFoundError(`${t} to run`,this.name)}static runWithPosSync(t,...e){const r=this.get(t);if(r)return r.runWithPosSync(...e);throw new w.NotFoundError(`${t} to run`,this.name)}static getFuncWithPos(t){const e=this.get(t);return e?.getFuncWithPos()}static register(e,r={}){switch(typeof e){case"string":r.name=e;break;case"function":r.func=e;break;case"object":r=e}e=r.name;let n=!!this.get(e);if(n)n=!1;else{if(!(r instanceof t))return n=new this(r),n.register();this.items[e]=r,n=r}return n}static unregister(t){const e=this.items[t];return e&&delete this.items[t],e}constructor(t,e={}){switch(super(),typeof t){case"string":e.name=t;break;case"function":e.func=t;break;case"object":e=t}this.name=t=e.name,e.scope&&(this.scope=e.scope),"function"==typeof e.setup&&e.setup.call(this,e),this.initialize(e)}register(){const e=this.constructor,r=this.depends;if(r){const e=Object.keys(r);for(const n of e){const e=r[n];e instanceof t&&e.register()}}return e.register(this)}unregister(){return this.constructor.unregister(this.name)}arr2ObjParams(t){if(this.params&&(t.length>1||Array.isArray(t[0])||t[0]&&"object"!=typeof t[0])){const e={},r=Object.keys(this.params);let n=Math.min(r.length,t.length);for(let s=0;s<n;s++)e[r[s]]=t[s];t=[e]}return t}obj2ArrParams(t){const e=[];if(t&&this.params&&Array.isArray(this.params)){const r=Object.keys(t);let n=Math.min(r.length,this.params.length);for(let s=0;s<n;s++)e.push(t[r[s]])}return e}runSync(t){const e=this.params&&Array.isArray(this.params);if(Array.isArray(t)){if(e)return this.func(...t);(0,w.throwError)("the function is not support array params, the params must be object!",this.name)}return e?(t=this.obj2ArrParams(t),console.warn('Warning:Use runWithPos() instead of run() for the "'+this.name+'" is function with position params'),this.func(...t)):this.func(t)}run(t){return this.runSync(t)}runAs(t,e){return this.runAsSync(t,e)}runAsSync(t,e){return this.constructor.runSync(t,e)}getFunc(t){return t?this.constructor.getFunc(t):this.runSync.bind(this)}runWithPosSync(...t){return this.params&&!Array.isArray(this.params)&&(t=this.arr2ObjParams(t)),this.func(...t)}runWithPosAsSync(t,...e){return this.constructor.runWithPosSync(t,...e)}runWithPos(...t){return this.runWithPosSync(...t)}runWithPosAs(t,...e){return this.runWithPosAsSync(t,...e)}getFuncWithPos(t){return t?this.constructor.getFuncWithPos(t):this.runWithPosSync.bind(this)}hasAsyncFeature(t){let e=this.asyncFeatures;return this._asyncFeatures&&(e|=this._asyncFeatures),_t.has(e,t)}isStream(t){return this.stream}},re={name:{type:"string"},description:{type:"string"},func:{type:"function",assign(t,e,r,n,s){let i=t;const o=typeof t;return s.isExported?i="function"===o?t.toString():t:t&&("string"!==o&&(t=t.toString()),i=(0,f._createFunction)(t,e.scope)),i}},params:{type:"object"},result:{type:"any"},setup:{type:"function"},depends:{type:"object",exported:!1},tags:{type:["array","string"]},isApi:{type:"boolean"},stream:{type:"boolean"},asyncFeatures:{type:"number"}};ee.defineProperties(ee,re);var ne=class extends ee{constructor(){super(...arguments),this._emitter=new h.EventEmitter,this.description="Return event bus",this.result="event"}get emitter(){return this._emitter}func(){return this.emitter}},se=new ne(qt),ie=require("secondary-cache");function oe({key:t,value:e,options:r}={}){return void 0!==t?null===e?this.cache.del(t):void 0!==e?this.cache.set(t,e,r):this.cache.get(t):(r&&this.cache.setDefaultOptions(r),this.cache)}function ae(t,e){let r=ee.get(t);return r||(r=new ee(t,{func:oe,description:"get/set LRU cache or return the LRUCache object",params:{key:{name:"key",type:"string",description:"the key is undefined means change the default cache options"},value:{name:"value",type:"any",description:"the value to store, if value is null means remove the key"},options:{name:"options",type:"object|number",description:"the optional cache options:{capacity,expires,cleanInterval} or expires"}},result:"any"}),r.cache=new ie.Cache(e)),r}var ce=ae("lrucache"),ue=class t extends ee{static get apiRoot(){return t._apiRoot}static setApiRoot(e){t._apiRoot=e}static async loadFrom(){if(this._apiRoot){const t=await fetch(this._apiRoot,{headers:{"Content-Type":"application/json"}}),e=await t.json();e&&this.loadFromSync(e)}else(0,w.throwError)("missing apiRoot to load tools","ClientTools")}static loadFromSync(e){for(const r in e){const n=this.get(r),s=e[r];n?n instanceof t?n.assign(s):(0,w.throwError)(`${r} already registered as ${n.constructor.name}`,"ClientTools"):this.register(s)}}static async fetch(t,e){const r=this.get(t);if(r&&r.fetch)return r.fetch(e)}getUrlParams(t){if(void 0!==t){const e=JSON.stringify(t);if("{}"!==e&&"[]"!==e&&'""'!==e)return"?p="+encodeURIComponent(e)}return""}async fetch(t,e,r){const n={...this.fetchOptions};let s;n.headers&&n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",...n.headers}),t?.stream&&!n.headers.Connection&&(n.headers.Connection="keep-alive"),e||(e=this.action||"post"),"res"===e&&(e="get"),r?("string"!=typeof r&&(r=JSON.stringify(r)),r=this.name+"/"+r):r=this.name,n.method=e.toUpperCase(),"get"===e||"delete"===e?s=r+this.getUrlParams(t):(n.body=JSON.stringify(t),s=r);const i=await fetch(`${this.apiRoot}/${s}`,n);if(!i.ok){throw await this.errorFrom(i)}return i}async errorFrom(t){let e,r=t.status,n=t.statusText,s=this.name;if(t.body){const r=await t.text();try{const t=JSON.parse(r);t&&(t.error&&(n=t.error),t.name&&(s=t.name),t.data&&(e=t.data,e.name=s,e.what&&(e.msg=n,n=e.what)),t.message&&(n=n+":"+t.message))}catch(t){console.warn("🚀 ~ parse error body to json:",t)}}return(0,w.createError)(n,s,r)}async func(t){const e=await this.fetch(t);if(t?.stream)return e;return await e.json()}},he={...d};ue.defineProperties(ue,he);var le=class extends ue{async _func(t,e){const r=await this.fetch(e,t);if(e?.stream)return r;return await r.json()}async func(t){const e=t.action;return e&&delete t.action,this._func(e,t)}assignMethods(t){if(Array.isArray(t))for(const e of t){const t=e.startsWith("$")?e.slice(1):e;this[t]||(this[t]=(t=>this._func.bind(this,t))(e))}}},fe={methods:{type:"array",assign(t,e,r,n,s){s?.isExported||e.assignMethods(t)}}};le.defineProperties(le,fe);var we=class extends le{async fetch(t,e){if(t||(t={}),e&&"res"===this.action){if("get"===e||"delete"===e){let r=t.id;return r||(0,w.throwError)("id is required"),"string"==typeof r&&(r=encodeURIComponent(r)),delete t.id,super.fetch(t,e,r)}"list"===e?e="get":e.startsWith("$")&&(t.act=e,e="post")}return await super.fetch(t,e)}},pe=class extends we{constructor(){super(...arguments),this._sseEvents={},this._forwardEvents=new Set,this.name=At,this.description="subscribe server sent event",this.ebListener=async function(...t){const e=this.type;this.target.publish&&await this.target.publish({data:t,event:e})}}get evtSource(){let t=this._es;return t&&t.readyState!==EventSource.CLOSED||(t=this.initEventSource(this._esEvents)),t}get active(){return!!this._es&&this._es.readyState!==EventSource.CLOSED}set active(t){t!==this.active&&(t?this.initEventSource(this._esEvents):this._es&&(this._es.close(),this._es=void 0))}initEventSource(t){if("string"==typeof t&&(t=[t]),this._es&&this._es.readyState!==EventSource.CLOSED){if(!this._esEvents||t&&t.every((t=>this._esEvents.includes(t))))return this._es;this._es.close()}const e=t?this.getUrlParams({event:t}):"",r=`${this.apiRoot}/${this.name}${e}`,n=this._es=new EventSource(r);return Object.entries(this._sseEvents).forEach((([t,e])=>{n.addEventListener(t,e)})),this._esEvents=t,n}esListener(t){const e=t.data?JSON.parse(t.data):void 0,r=t.type;if(!this._forwardEvents.has(r)){const t=this.emitter;t&&e&&r&&(Array.isArray(e)?t.emit(r,...e):t.emit(r,e))}}async subscribe(t){const e=await this.sub({event:t});"string"==typeof t&&(t=[t]);const r=this.evtSource;for(const e of t)if(!this._sseEvents[e]){const t=this._sseEvents[e]=this.esListener.bind(this);r.addEventListener(e,t)}return e}async unsubscribe(t){const e=await this.unsub({event:t});"string"==typeof t&&(t=[t]);for(const e of t){const t=this._sseEvents[e];t&&(delete this._sseEvents[e],this.evtSource.removeEventListener(e,t))}return e}forwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)||(this._forwardEvents.add(e),this.on&&this.on(e,this.ebListener))}unforwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)&&(this._forwardEvents.delete(e),this.off&&this.off(e,this.ebListener))}async init(t){if(this.active=!1,this.initEventSource(t),t)return await this.subscribe(t)}},de=new pe(At),ye=require("util-ex"),me=class t extends ee{static get apiRoot(){return this._apiRoot}static setApiRoot(t){this._apiRoot=t}static toJSON(){const e={};for(const r in this.items){let n=this.items[r];(n instanceof t||n.isApi)&&(n.allowExportFunc||(n=n.toJSON(),delete n.func),e[r]=n)}return e}func({}){}},be={...d};me.defineProperties(me,be);var ge=class extends me{constructor(t,e={}){super(t,e),this.params={act:{type:"string"}};const r=this.methods=[];this.initRpcMethods(r)}get SpecialRpcMethodNames(){return this.constructor.SpecialRpcMethodNames}initRpcMethods(t=this.methods){const e=this.SpecialRpcMethodNames;if(Array.isArray(e))for(const r of e)"function"==typeof this[r]&&t.push(r);(0,ye.getAllNames)(Object.getPrototypeOf(this)).filter((t=>t.startsWith("$")&&"function"==typeof this[t])).forEach((e=>{t.push(e);const r=e.slice(1);void 0===this[r]&&(this[r]=this[e])}))}cast(t,e){let r=this.params[t];return r&&("string"!=typeof r&&(r=r.type),"number"===r&&(e=Number(e))),e}getMethodFromParams(t){const e=t?.act;return e}castParams(t){return t}func(t){const e=this.getMethodFromParams(t);if(e&&"function"==typeof this[e])return t=this.castParams(t),this[e](t);throw new w.NotFoundError(e,this.name)}};ge.defineProperties(ge,{methods:{type:"array"}});var Ee=class extends ge{constructor(t,e={}){super(t,e),this.action="res",this.params={id:{type:"string"},val:{type:"any"}}}static{this.SpecialRpcMethodNames=p}getMethodFromParams(t){let e=t?._req?.method?.toLowerCase();return"get"===e&&void 0===t.id&&(e="list"),"post"===e&&t.act&&(e=t.act),e}castParams(t){return void 0!==t.id&&(t.id=this.cast("id",t.id)),t}},xe=se.runSync(),ve=class t extends Ee{constructor(){super(...arguments),this.name=At,this.description="subscribe server sent event",this.result="event",this.depends={[qt]:se}}static get sse(){return this._sse||(this._sse=new Tt),this._sse}get sse(){return this.constructor.sse}static publish(e,r){return t.sse.publish(e,r)}static{this.ebListener=function(...e){t.sse.publish(e,this.type)}}static subscribe(e,r,n){return t.sse.subscribe(e,r,n)}static alreadyForward(e){const r=xe.listeners(e);for(const e of r)if(e===t.ebListener)return!0}publishSSE(t,e){return this.constructor.publish(t,e)}subscribeSSE(t,e,r){return"string"==typeof r&&(r=[r]),this.constructor.subscribe(t,e,r)}forward(e){Array.isArray(e)||(e=[e]);for(const r of e)t.alreadyForward(r)||xe.on(r,t.ebListener)}unforward(e){"string"==typeof e&&(e=[e]);for(const r of e)xe.off(r,t.ebListener)}list({_req:t,_res:e,event:r}){t&&e&&this.subscribeSSE(t,e,r)}$sub({event:t}){if(t)return this.forward(t),{event:t};(0,w.throwError)("event is required","sub",w.ErrorCode.InvalidArgument)}$unsub({event:t}){if(t)return this.unforward(t),{event:t};(0,w.throwError)("event is required","unsub",w.ErrorCode.InvalidArgument)}$publish({event:t,data:e}){if(t&&e){"string"==typeof t&&(t=[t]);for(const r of t)this.publishSSE(e,r);return{event:t}}(0,w.throwError)("event or data is required","pub",w.ErrorCode.InvalidArgument)}isStream(t){return"list"===this.getMethodFromParams(t)}},ke=new ve(At);function Se(){se.register(),ce.register()}
|
package/dist/funcs.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{EventClient as m,EventServer as o,EventToolFunc as r,_lrucache as p,createLRUCache as t,event as
|
|
1
|
+
import{EventClient as m,EventServer as o,EventToolFunc as r,_lrucache as p,createLRUCache as t,event as L,eventClient as c,eventServer as h,lrucache as i,registerCoreTools as j}from"./chunk-FLVJ4R53.mjs";import"./chunk-PXQPLL62.mjs";export{m as EventClient,o as EventServer,r as EventToolFunc,p as _lrucache,t as createLRUCache,L as event,c as eventClient,h as eventServer,i as lrucache,j as registerCoreTools};
|