@isdk/ai-tool 0.5.5 → 0.5.7
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-VIG2GB47.mjs +1 -39
- package/dist/chunk-XLXW6OPN.mjs +1 -0
- package/dist/funcs.d.mts +1 -1
- package/dist/funcs.d.ts +1 -1
- package/dist/funcs.js +1 -5156
- package/dist/funcs.mjs +1 -29
- package/dist/{index-Br-4ZYgE.d.mts → index-BkwhCK1q.d.mts} +7 -0
- package/dist/{index-Br-4ZYgE.d.ts → index-BkwhCK1q.d.ts} +7 -0
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -8132
- package/dist/index.mjs +1 -476
- package/dist/test/util.js +1 -101
- package/dist/test/util.mjs +1 -30
- package/docs/classes/BinarySemaphore.md +25 -25
- package/docs/classes/CancelableAbility.md +25 -25
- package/docs/classes/ClientTools.md +83 -55
- package/docs/classes/EnvPromptTemplate.md +19 -19
- package/docs/classes/EventClient.md +106 -78
- package/docs/classes/EventServer.md +107 -79
- package/docs/classes/EventToolFunc.md +75 -47
- package/docs/classes/FStringPromptTemplate.md +19 -19
- package/docs/classes/FewShotPromptTemplate.md +23 -23
- package/docs/classes/GolangPromptTemplate.md +19 -19
- package/docs/classes/HFEnvironment.md +10 -10
- package/docs/classes/HFInterpreter.md +5 -5
- package/docs/classes/HFTemplate.md +5 -5
- package/docs/classes/HfPromptTemplate.md +19 -19
- package/docs/classes/IntSet.md +12 -12
- package/docs/classes/PromptExampleSelector.md +9 -9
- package/docs/classes/PromptTemplate.md +18 -18
- package/docs/classes/ReadableStreamError.md +2 -2
- package/docs/classes/ResClientTools.md +82 -62
- package/docs/classes/ResServerTools.md +83 -63
- package/docs/classes/SSEChannel.md +16 -16
- package/docs/classes/Semaphore.md +26 -26
- package/docs/classes/ServerTools.md +79 -51
- package/docs/classes/SignalGate.md +9 -9
- package/docs/classes/TaskAbortController.md +8 -8
- package/docs/classes/ToolFunc.md +68 -44
- package/docs/classes/YamlTypeBaseObject.md +2 -2
- package/docs/enumerations/AsyncFeatureBits.md +4 -4
- package/docs/enumerations/AsyncFeatures.md +4 -4
- package/docs/enumerations/HashAlgorithm.md +12 -12
- package/docs/functions/AIArgProcessor.md +1 -1
- package/docs/functions/AIStream.md +1 -1
- package/docs/functions/ChoiceArgProcessor.md +1 -1
- package/docs/functions/ObjectArgsToArgsInfo.md +1 -1
- package/docs/functions/RateLimit.md +1 -1
- package/docs/functions/TemplateArgProcessor.md +1 -1
- package/docs/functions/assignDirs.md +1 -1
- package/docs/functions/backendEventable.md +1 -1
- package/docs/functions/beforeShutdown.md +1 -1
- package/docs/functions/completeSentences.md +1 -1
- package/docs/functions/concatText.md +1 -1
- package/docs/functions/countLLMTokens.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/createYamlObjectTag.md +1 -1
- package/docs/functions/dateToText.md +1 -1
- package/docs/functions/decodeCharset.md +1 -1
- package/docs/functions/detectCharset.md +1 -1
- package/docs/functions/encodeLLMTokens.md +1 -1
- package/docs/functions/ensureQuoted.md +1 -1
- package/docs/functions/expandConfig.md +1 -1
- package/docs/functions/expandEnv.md +1 -1
- package/docs/functions/expandObjEnv.md +1 -1
- package/docs/functions/expandPath.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/findIndexNonEmptyFrom.md +1 -1
- package/docs/functions/findPort.md +1 -1
- package/docs/functions/formatTextWithSpace.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/getEnvVairables.md +1 -1
- package/docs/functions/getFileMetaInfo.md +1 -1
- package/docs/functions/getHashAlgoBySize.md +1 -1
- package/docs/functions/getKeysPath.md +1 -1
- package/docs/functions/getLLMTokenizer.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/getXDGConfigs.md +1 -1
- package/docs/functions/hasDirectoryIn.md +1 -1
- package/docs/functions/hash.md +1 -1
- package/docs/functions/hashFile.md +1 -1
- package/docs/functions/hashStream.md +1 -1
- package/docs/functions/hfParse.md +1 -1
- package/docs/functions/hfTokenize.md +1 -1
- package/docs/functions/initShutdown.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/isLangUsingSpaces.md +1 -1
- package/docs/functions/isListItemString.md +1 -1
- package/docs/functions/isModelNameMatched.md +1 -1
- package/docs/functions/isPunctuationChar.md +1 -1
- package/docs/functions/isQuoted.md +1 -1
- package/docs/functions/isRegExp.md +1 -1
- package/docs/functions/isSameString.md +1 -1
- package/docs/functions/isSectionString.md +1 -1
- package/docs/functions/isSentenceEnding.md +1 -1
- package/docs/functions/isSepLineString.md +1 -1
- package/docs/functions/isStrWrapped.md +1 -1
- package/docs/functions/isSubdirectory.md +1 -1
- package/docs/functions/isTitleString.md +1 -1
- 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/loadAIConfig.md +1 -1
- package/docs/functions/loadConfig.md +1 -1
- package/docs/functions/loadConfigFile.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/parseJsJsonSimpleSync.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/readTextFileChunks.md +1 -1
- package/docs/functions/readTextFileChunksEx.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/removeMarkdownBold.md +1 -1
- package/docs/functions/removeMarkdownBoldAndItalic.md +1 -1
- package/docs/functions/removeMarkdownItalic.md +1 -1
- package/docs/functions/replaceWithPlaceholder.md +1 -1
- package/docs/functions/restoreFromPlacehoders.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/shutdown.md +1 -1
- package/docs/functions/simplifyObjectArguments.md +1 -1
- package/docs/functions/sortedValues.md +1 -1
- package/docs/functions/splitChunks.md +1 -1
- package/docs/functions/splitParagraph.md +1 -1
- package/docs/functions/splitSentence.md +1 -1
- package/docs/functions/stringifyYaml.md +1 -1
- package/docs/functions/stripConsoleColor.md +1 -1
- package/docs/functions/textToDate.md +1 -1
- package/docs/functions/toDateTime.md +1 -1
- package/docs/functions/trimStartOfStreamHelper.md +1 -1
- package/docs/functions/truncTo.md +1 -1
- package/docs/functions/truncateByToken.md +1 -1
- package/docs/functions/truncateToTokenLimit.md +1 -1
- package/docs/functions/truncateToTokenLimitEx.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/interfaces/AIChatAssistantMessageParam.md +12 -12
- package/docs/interfaces/AIChatContentPartImage.md +3 -3
- package/docs/interfaces/AIChatContentPartText.md +3 -3
- package/docs/interfaces/AIChatMessageParamBase.md +7 -7
- package/docs/interfaces/AIChatMessageToolCall.md +4 -4
- package/docs/interfaces/AIChatSystemMessageParam.md +9 -9
- package/docs/interfaces/AIChatToolChoiceFuncObject.md +3 -3
- package/docs/interfaces/AIChatToolChoiceObject.md +2 -2
- package/docs/interfaces/AIChatToolFunc.md +5 -5
- package/docs/interfaces/AIChatToolFuncParam.md +3 -3
- package/docs/interfaces/AIChatToolMessageParam.md +10 -10
- package/docs/interfaces/AIChatToolParam.md +2 -2
- package/docs/interfaces/AIChatToolTypeObject.md +2 -2
- package/docs/interfaces/AIChatUserMessageParam.md +13 -13
- package/docs/interfaces/AIChoiceConfig.md +8 -8
- package/docs/interfaces/AIResult.md +6 -6
- package/docs/interfaces/AIStreamParser.md +2 -2
- package/docs/interfaces/AIStreamParserOptions.md +2 -2
- package/docs/interfaces/BaseFunc.md +22 -10
- package/docs/interfaces/BaseFuncItem.md +17 -9
- package/docs/interfaces/BinarySemaphoreAcquireOptions.md +2 -2
- package/docs/interfaces/BinarySemaphoreOptions.md +5 -5
- package/docs/interfaces/BinarySemaphoreReleaseOptions.md +2 -2
- package/docs/interfaces/BinarySemaphoreReleaserFunc.md +3 -3
- package/docs/interfaces/CancelableAbilityOptions.md +4 -4
- package/docs/interfaces/ClientFuncItem.md +24 -12
- package/docs/interfaces/DotenvExpandOptions.md +4 -4
- package/docs/interfaces/DotenvExpandOutput.md +3 -3
- package/docs/interfaces/DotenvParseInput.md +1 -1
- package/docs/interfaces/DotenvParseOutput.md +1 -1
- package/docs/interfaces/DotenvPopulateInput.md +1 -1
- package/docs/interfaces/EventClientFuncParams.md +5 -5
- package/docs/interfaces/EventServerFuncParams.md +6 -6
- package/docs/interfaces/FewShotPromptTemplateOptions.md +12 -12
- package/docs/interfaces/FuncItem.md +22 -10
- package/docs/interfaces/FuncParam.md +7 -7
- package/docs/interfaces/FuncParams.md +1 -1
- package/docs/interfaces/Funcs.md +1 -1
- package/docs/interfaces/HashAlgoParams.md +4 -4
- package/docs/interfaces/IFileMetaInfo.md +8 -8
- package/docs/interfaces/IReadTextFileChunksOptions.md +11 -11
- package/docs/interfaces/ITruncateToTokenLimitOptions.md +10 -10
- package/docs/interfaces/JsonFilter.md +1 -1
- package/docs/interfaces/ParseObjectArgumentOptions.md +11 -11
- package/docs/interfaces/PromptExampleSelectorOptions.md +3 -3
- package/docs/interfaces/PromptTemplateOptions.md +7 -7
- package/docs/interfaces/RemoteFuncItem.md +24 -12
- package/docs/interfaces/ReplacePlacehoderOptions.md +5 -5
- package/docs/interfaces/ResClientFuncParams.md +3 -3
- package/docs/interfaces/ResServerFuncParams.md +6 -6
- package/docs/interfaces/SanitizeFilenameOptions.md +3 -3
- package/docs/interfaces/SectionStringOptions.md +3 -3
- package/docs/interfaces/SemaphoreOptions.md +7 -7
- package/docs/interfaces/SemaphoreTaskItem.md +5 -5
- package/docs/interfaces/ServerFuncItem.md +25 -13
- package/docs/interfaces/ServerFuncParams.md +3 -3
- package/docs/interfaces/SplitSentenceOptions.md +5 -5
- package/docs/interfaces/StreamCallbacksAndOptions.md +5 -5
- package/docs/interfaces/TaskAbortControllers.md +1 -1
- package/docs/interfaces/TaskPromise.md +2 -2
- package/docs/interfaces/ToolFuncPackage.md +4 -4
- 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/AIChatToolChoiceParam.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/BeforeShutdownListener.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/SemaphoreIsReadyFuncType.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 +1 -1
- package/docs/variables/ActionNames.md +1 -1
- package/docs/variables/ClientToolFuncSchema.md +1 -1
- package/docs/variables/DEFAULT_CONFIG_NAME.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/LLM_TOKENIZER_NAMES.md +1 -1
- package/docs/variables/LLM_TOKENIZER_NAMES_MAP.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/SHUTDOWN_SIGNALS.md +1 -1
- package/docs/variables/SSEChannelAlreadyClosedErrCode.md +1 -1
- package/docs/variables/SecondaryCache.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 +9 -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-VJ45JQBR.mjs +0 -7829
package/dist/chunk-VIG2GB47.mjs
CHANGED
|
@@ -1,39 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import net from "net";
|
|
3
|
-
async function findPort(port, portRetryCount = 10) {
|
|
4
|
-
return new Promise((resolve, reject) => {
|
|
5
|
-
if (port === void 0) {
|
|
6
|
-
port = 0;
|
|
7
|
-
} else {
|
|
8
|
-
if (typeof port === "string") {
|
|
9
|
-
port = parseInt(port);
|
|
10
|
-
}
|
|
11
|
-
if (!(port >= 0)) {
|
|
12
|
-
port = 0;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
const server = net.createServer();
|
|
16
|
-
server.on("error", (err) => {
|
|
17
|
-
if (err.code === "EADDRINUSE") {
|
|
18
|
-
port++;
|
|
19
|
-
portRetryCount--;
|
|
20
|
-
if (portRetryCount > 0) {
|
|
21
|
-
server.listen(port);
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
reject(err);
|
|
26
|
-
});
|
|
27
|
-
server.on("listening", async () => {
|
|
28
|
-
const addr = server.address();
|
|
29
|
-
const result = addr.port;
|
|
30
|
-
server.close();
|
|
31
|
-
resolve(result);
|
|
32
|
-
});
|
|
33
|
-
server.listen(port);
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export {
|
|
38
|
-
findPort
|
|
39
|
-
};
|
|
1
|
+
import n from"net";async function r(r,t=10){return new Promise(((o,e)=>{void 0===r?r=0:("string"==typeof r&&(r=parseInt(r)),r>=0||(r=0));const s=n.createServer();s.on("error",(n=>{"EADDRINUSE"===n.code&&(r++,--t>0)?s.listen(r):e(n)})),s.on("listening",(async()=>{const n=s.address().port;s.close(),o(n)})),s.listen(r)}))}export{r as findPort};
|
|
@@ -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 g}from"util-ex";var b=.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 A,toDate as O}from"date-fns";var j="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=j){return $(t,e,new Date)}function T(t,e=j){return E(t,e)}var I=["stop","length","content_filter","tool_calls","function_call","abort","error","other",null],M=["human","ai","generic","system","tool"],L=["user","assistant","system","tool","tool_calls"];function _(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+=" ["+T(n)+"]")}e+=" "+n.content+"\n"}return e}var R=["chat","char","plan"],z=["internal","hf","fill"];import{BaseFactory as B}from"custom-factory";var F="default",P=class t extends B{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||F,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||F);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 V(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 U=!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=>{U=t}));var X=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,U?r:V(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()}},D=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",BooleanLiteral:"BooleanLiteral",NullLiteral:"NullLiteral",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"}),q=Object.freeze({set:D.Set,for:D.For,in:D.In,is:D.Is,if:D.If,else:D.Else,endif:D.EndIf,elif:D.ElseIf,endfor:D.EndFor,and:D.And,or:D.Or,not:D.Not,"not in":D.NotIn,macro:D.Macro,endmacro:D.EndMacro,true:D.BooleanLiteral,false:D.BooleanLiteral,none:D.NullLiteral,True:D.BooleanLiteral,False:D.BooleanLiteral,None:D.NullLiteral}),J=class{constructor(t,e){this.value=t,this.type=e}};function G(t){return/\w/.test(t)}function K(t){return/[0-9]/.test(t)}var W=[["{%",D.OpenStatement],["%}",D.CloseStatement],["{{",D.OpenExpression],["}}",D.CloseExpression],["(",D.OpenParen],[")",D.CloseParen],["{",D.OpenCurlyBracket],["}",D.CloseCurlyBracket],["[",D.OpenSquareBracket],["]",D.CloseSquareBracket],[",",D.Comma],[".",D.Dot],[":",D.Colon],["|",D.Pipe],["<=",D.ComparisonBinaryOperator],[">=",D.ComparisonBinaryOperator],["==",D.ComparisonBinaryOperator],["!=",D.ComparisonBinaryOperator],["<",D.ComparisonBinaryOperator],[">",D.ComparisonBinaryOperator],["+",D.AdditiveBinaryOperator],["-",D.AdditiveBinaryOperator],["*",D.MultiplicativeBinaryOperator],["/",D.MultiplicativeBinaryOperator],["%",D.MultiplicativeBinaryOperator],["=",D.Equals]],H=new Map([["n","\n"],["t","\t"],["r","\r"],["b","\b"],["f","\f"],["v","\v"],["'","'"],['"','"'],["\\","\\"]]);function Z(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===D.CloseStatement||t===D.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 J(t,D.Text));continue}}i((t=>/\s/.test(t)));const e=r[s];if("-"===e||"+"===e){const t=n.at(-1)?.type;if(t===D.Text||void 0===t)throw new SyntaxError(`Unexpected character: ${e}`);switch(t){case D.Identifier:case D.NumericLiteral:case D.BooleanLiteral:case D.NullLiteral:case D.StringLiteral:case D.CloseParen:case D.CloseSquareBracket:break;default:{++s;const t=i(K);n.push(new J(`${e}${t}`,t.length>0?D.NumericLiteral:D.UnaryOperator));continue}}}for(const[t,e]of W){if(r.slice(s,s+t.length)===t){n.push(new J(t,e)),s+=t.length;continue t}}if("'"!==e&&'"'!==e)if(K(e)){const t=i(K);n.push(new J(t,D.NumericLiteral))}else{if(!G(e))throw new SyntaxError(`Unexpected character: ${e}`);{const t=i(G),e=Object.hasOwn(q,t)?q[t]:D.Identifier;e===D.In&&n.at(-1)?.type===D.Not?(n.pop(),n.push(new J("not in",D.NotIn))):n.push(new J(t,e))}}else{++s;const t=i((t=>t!==e));n.push(new J(t,D.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="NullLiteral"}},pt=class extends ct{constructor(){super(...arguments),this.type="ArrayLiteral"}},wt=class extends ct{constructor(){super(...arguments),this.type="TupleLiteral"}},dt=class extends ct{constructor(){super(...arguments),this.type="ObjectLiteral"}},mt=class extends st{constructor(t,e,n){super(),this.operator=t,this.left=e,this.right=n,this.type="BinaryExpression"}},yt=class extends st{constructor(t,e){super(),this.operand=t,this.filter=e,this.type="FilterExpression"}},gt=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"}},vt=class extends st{constructor(t,e){super(),this.operator=t,this.argument=e,this.type="UnaryExpression"}},xt=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"}},Et=class extends st{constructor(t,e){super(),this.key=t,this.value=e,this.type="KeywordArgumentExpression"}};function $t(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 D.Text:e=new ft(r(D.Text,"Expected text token").value);break;case D.OpenStatement:e=function(){let e;switch(r(D.OpenStatement,"Expected opening statement token"),t[n].type){case D.Set:++n,e=a(),r(D.CloseStatement,"Expected closing statement token");break;case D.If:++n,e=c(),r(D.OpenStatement,"Expected {% token"),r(D.EndIf,"Expected endif token"),r(D.CloseStatement,"Expected %} token");break;case D.Macro:++n,e=function(){const t=x();if("Identifier"!==t.type)throw new SyntaxError("Expected identifier following macro statement");const e=m();r(D.CloseStatement,"Expected closing statement token");const n=[];for(;i(D.OpenStatement,D.EndMacro);)n.push(s());return new rt(t,e,n)}(),r(D.OpenStatement,"Expected {% token"),r(D.EndMacro,"Expected endmacro token"),r(D.CloseStatement,"Expected %} token");break;case D.For:++n,e=function(){const t=u(!0);if(!(t instanceof at||t instanceof wt))throw new SyntaxError(`Expected identifier/tuple for the loop variable, got ${t.type} instead`);r(D.In,"Expected `in` keyword following loop variable");const e=f();r(D.CloseStatement,"Expected closing statement token");const a=[];for(;i(D.OpenStatement,D.EndFor)&&i(D.OpenStatement,D.Else);)a.push(s());const c=[];if(o(D.OpenStatement,D.Else))for(++n,++n,r(D.CloseStatement,"Expected closing statement token");i(D.OpenStatement,D.EndFor);)c.push(s());return new et(t,e,a,c)}(),r(D.OpenStatement,"Expected {% token"),r(D.EndFor,"Expected endfor token"),r(D.CloseStatement,"Expected %} token");break;default:throw new SyntaxError(`Unknown statement type: ${t[n].type} ${t[n].value}`)}return e}(),e.isStatement=!0;break;case D.OpenExpression:e=function(){r(D.OpenExpression,"Expected opening expression token");const t=f();return r(D.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(D.Equals)){++n;const e=a();return new nt(t,e)}return t}function c(){const e=f();r(D.CloseStatement,"Expected closing statement token");const i=[],a=[];for(;t[n]?.type!==D.OpenStatement||t[n+1]?.type!==D.ElseIf&&t[n+1]?.type!==D.Else&&t[n+1]?.type!==D.EndIf;)i.push(s());if(t[n]?.type===D.OpenStatement&&t[n+1]?.type!==D.EndIf)if(++n,o(D.ElseIf))r(D.ElseIf,"Expected elseif token"),a.push(c());else for(r(D.Else,"Expected else token"),r(D.CloseStatement,"Expected closing statement token");t[n]?.type!==D.OpenStatement||t[n+1]?.type!==D.EndIf;)a.push(s());return new tt(e,i,a)}function u(t=!1){const e=t?x:f,r=[e()],s=o(D.Comma);for(;s&&(++n,r.push(e()),o(D.Comma)););return s?new wt(r):r[0]}function f(){return function(){const t=l();if(o(D.If)){++n;const e=l();if(o(D.Else)){++n;const r=l();return new tt(e,[t],[r])}return new gt(t,e)}return t}()}function l(){let e=h();for(;o(D.Or);){const r=t[n];++n;const s=h();e=new mt(r,e,s)}return e}function h(){let e=p();for(;o(D.And);){const r=t[n];++n;const s=p();e=new mt(r,e,s)}return e}function p(){let e;for(;o(D.Not);){const r=t[n];++n;const s=p();e=new vt(r,s)}return e??function(){let e=w();for(;o(D.ComparisonBinaryOperator)||o(D.In)||o(D.NotIn);){const r=t[n];++n;const s=w();e=new mt(r,e,s)}return e}()}function w(){let e=b();for(;o(D.AdditiveBinaryOperator);){const r=t[n];++n;const s=b();e=new mt(r,e,s)}return e}function d(t){let e=new ot(t,m());return e=g(e),o(D.OpenParen)&&(e=d(e)),e}function m(){r(D.OpenParen,"Expected opening parenthesis for arguments list");const t=function(){const t=[];for(;!o(D.CloseParen);){let e=f();if(o(D.Equals)){if(++n,!(e instanceof at))throw new SyntaxError("Expected identifier for keyword argument");const t=f();e=new Et(e,t)}t.push(e),o(D.Comma)&&++n}return t}();return r(D.CloseParen,"Expected closing parenthesis for arguments list"),t}function y(){const t=[];let e=!1;for(;!o(D.CloseSquareBracket);)o(D.Colon)?(t.push(void 0),++n,e=!0):(t.push(f()),o(D.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 xt(...t)}return t[0]}function g(e){for(;o(D.Dot)||o(D.OpenSquareBracket);){const s=t[n];let i;++n;const o=s.type!==D.Dot;if(o)i=y(),r(D.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}function b(){let e=v();for(;o(D.MultiplicativeBinaryOperator);){const r=t[n];++n;const s=v();e=new mt(r,e,s)}return e}function v(){let t=function(){let t=function(){const t=g(x());return o(D.OpenParen)?d(t):t}();for(;o(D.Pipe);){++n;let e=x();if(!(e instanceof at))throw new SyntaxError("Expected identifier for the filter");o(D.OpenParen)&&(e=d(e)),t=new yt(t,e)}return t}();for(;o(D.Is);){++n;const e=o(D.Not);e&&++n;let r=x();if(r instanceof lt?r=new at(r.value.toString()):r instanceof ht&&(r=new at("none")),!(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 D.NumericLiteral:return++n,new ut(Number(e.value));case D.StringLiteral:return++n,new ft(e.value);case D.BooleanLiteral:return++n,new lt("true"===e.value.toLowerCase());case D.NullLiteral:return++n,new ht(null);case D.Identifier:return++n,new at(e.value);case D.OpenParen:{++n;const e=u();if(t[n].type!==D.CloseParen)throw new SyntaxError(`Expected closing parenthesis, got ${t[n].type} instead`);return++n,e}case D.OpenSquareBracket:{++n;const t=[];for(;!o(D.CloseSquareBracket);)t.push(f()),o(D.Comma)&&++n;return++n,new pt(t)}case D.OpenCurlyBracket:{++n;const t=new Map;for(;!o(D.CloseCurlyBracket);){const e=f();r(D.Colon,"Expected colon between key and value in object literal");const s=f();t.set(e,s),o(D.Comma)&&++n}return++n,new dt(t)}default:throw new SyntaxError(`Unexpected token: ${e.type}`)}}for(;n<t.length;)e.body.push(s());return e}function kt(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 St(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 At(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 Ct(!!this.value)}toString(){return""+this.value}toJSON(){return this.value}},jt=class extends Ot{constructor(){super(...arguments),this.type="NumericValue"}},Nt=class t extends Ot{constructor(){super(...arguments),this.type="StringValue",this.builtins=new Map([["upper",new _t((()=>new t(this.value.toUpperCase())))],["lower",new _t((()=>new t(this.value.toLowerCase())))],["strip",new _t((()=>new t(this.value.trim())))],["title",new _t((()=>new t(At(this.value))))],["length",new jt(this.value.length)],["rstrip",new _t((()=>new t(this.value.trimEnd())))],["lstrip",new _t((()=>new t(this.value.trimStart())))],["split",new _t((e=>{const n=e[0]??new Rt;if(!(n instanceof t||n instanceof Rt))throw new Error("sep argument must be a string or null");const r=e[1]??new jt(-1);if(!(r instanceof jt))throw new Error("maxsplit argument must be a number");let s=[];if(n instanceof Rt){const t=this.value.trimStart();for(const{0:e,index:n}of t.matchAll(/\S+/g)){if(-1!==r.value&&s.length>=r.value&&void 0!==n){s.push(e+t.slice(n+e.length));break}s.push(e)}}else{if(""===n.value)throw new Error("empty separator");s=this.value.split(n.value),-1!==r.value&&s.length>r.value&&s.push(s.splice(r.value).join(n.value))}return new Mt(s.map((e=>new t(e))))}))]])}},Ct=class extends Ot{constructor(){super(...arguments),this.type="BooleanValue"}},Tt=class extends Ot{constructor(t,e){super(t),this.orgValue=e,this.type="ObjectValue",this.builtins=new Map([["get",new _t((([t,e])=>{if(!(t instanceof Nt))throw new Error(`Object key must be a string: got ${t.type}`);return this.value.get(t.value)??e??new Rt}))],["items",new _t((()=>new Mt(Array.from(this.value.entries()).map((([t,e])=>new Mt([new Nt(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 Ct(this.value.size>0)}},It=class extends Tt{constructor(){super(...arguments),this.type="KeywordArgumentsValue"}},Mt=class extends Ot{constructor(){super(...arguments),this.type="ArrayValue",this.builtins=new Map([["length",new jt(this.value.length)]])}__bool__(){return new Ct(this.value.length>0)}},Lt=class extends Mt{constructor(){super(...arguments),this.type="TupleValue"}},_t=class extends Ot{constructor(){super(...arguments),this.type="FunctionValue"}},Rt=class extends Ot{constructor(){super(...arguments),this.type="NullValue"}},zt=class extends Ot{constructor(){super(...arguments),this.type="UndefinedValue"}},Bt=class{constructor(t){this.parent=t,this.variables=new Map([["namespace",new _t((t=>{if(0===t.length)return new Tt(new Map);if(1!==t.length||!(t[0]instanceof Tt))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 _t],["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 Mt||t instanceof Nt],["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,Pt(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 zt}catch{return new zt}}},Ft=class{constructor(t){this.global=t??new Bt}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 Ct(n.value==r.value);case"!=":return new Ct(n.value!=r.value)}if(n instanceof zt||r instanceof zt)throw new Error("Cannot perform operation on undefined values");if(n instanceof Rt||r instanceof Rt)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 Ct(n.value<r.value);case">":return new Ct(n.value>r.value);case">=":return new Ct(n.value>=r.value);case"<=":return new Ct(n.value<=r.value)}else if(n instanceof Mt&&r instanceof Mt){if("+"===t.operator.value)return new Mt(n.value.concat(r.value))}else if(r instanceof Mt){const e=void 0!==r.value.find((t=>t.value===n.value));switch(t.operator.value){case"in":return new Ct(e);case"not in":return new Ct(!e)}}if((n instanceof Nt||r instanceof Nt)&&"+"===t.operator.value)return new Nt(n.toString()+r.toString());if(n instanceof Nt&&r instanceof Nt)switch(t.operator.value){case"in":return new Ct(r.value.includes(n.value));case"not in":return new Ct(!r.value.includes(n.value))}if(n instanceof Nt&&r instanceof Tt)switch(t.operator.value){case"in":return new Ct(r.value.has(n.value));case"not in":return new Ct(!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 _t)return s.value([n],e);if(n instanceof Mt)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 Mt(n.value.reverse());case"sort":return new Mt(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}`)}})));case"join":return new Nt(n.value.map((t=>t.value)).join(""));default:throw new Error(`Unknown ArrayValue filter: ${r.value}`)}else if(n instanceof Nt)switch(r.value){case"length":return new jt(n.value.length);case"upper":return new Nt(n.value.toUpperCase());case"lower":return new Nt(n.value.toLowerCase());case"title":return new Nt(At(n.value));case"capitalize":return new Nt(n.value.charAt(0).toUpperCase()+n.value.slice(1));case"trim":return new Nt(n.value.trim());case"trimStart":return new Nt(n.value.trimStart());case"trimEnd":return new Nt(n.value.trimEnd());case"indent":return new Nt(n.value.split("\n").map(((t,e)=>0===e||0===t.length?t:" "+t)).join("\n"));case"join":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 Tt)switch(r.value){case"items":return new Mt(Array.from(n.value.entries()).map((([t,e])=>new Mt([new Nt(t),e]))));case"length":return new jt(n.value.size);case"string":return new Nt(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 _t){const[t,s]=this.evaluateArguments(r.args,e);return s.size>0&&t.push(new It(s)),i.value([n,...t],e)}if(n instanceof Mt){switch(s){case"selectattr":{if(n.value.some((t=>!(t instanceof Tt))))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 Mt(a)}case"map":{const[,t]=this.evaluateArguments(r.args,e);if(t.has("attribute")){const e=t.get("attribute");if(!(e instanceof Nt))throw new Error("attribute must be a string");const r=t.get("default"),s=n.value.map((t=>{if(!(t instanceof Tt))throw new Error("items in map must be an object");return t.value.get(e.value)??r??new zt}));return new Mt(s)}throw new Error("`map` expressions without `attribute` set are not currently supported.")}}throw new Error(`Unknown ArrayValue filter: ${s}`)}if(n instanceof Nt){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 Ct(!1),a=t.at(2)??s.get("blank")??new Ct(!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 Nt(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 Ct(t.negate?!s:s)}evaluateUnaryExpression(t,e){const n=this.evaluate(t.argument,e);if("not"===t.operator.value)return new Ct(!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 Nt(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 It(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 Mt||t instanceof Nt))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 zt))throw new Error("Slice start must be numeric or undefined");if(!(s instanceof jt||s instanceof zt))throw new Error("Slice stop must be numeric or undefined");if(!(i instanceof jt||i instanceof zt))throw new Error("Slice step must be numeric or undefined");return t instanceof Mt?new Mt(St(t.value,r.value,s.value,i.value)):new Nt(St(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 Nt(t.property.value);if(n instanceof Tt){if(!(r instanceof Nt))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 Mt||n instanceof Nt)if(r instanceof jt)s=n.value.at(r.value),n instanceof Nt&&(s=new Nt(n.value.at(r.value)));else{if(!(r instanceof Nt))throw new Error(`Cannot access property with non-string/non-number: got ${r.type}`);s=n.builtins.get(r.value)}else{if(!(r instanceof Nt))throw new Error(`Cannot access property with non-string: got ${r.type}`);s=n.builtins.get(r.value)}return s instanceof Ot?s:new zt}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 Tt))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 Rt}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 Bt(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 Mt))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 Bt(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 Ct(0===e)],["last",new Ct(e===i.length-1)],["length",new jt(i.length)],["previtem",e>0?i[e-1]:new zt],["nextitem",e<i.length-1?i[e+1]:new zt]]);n.setVariable("loop",new Tt(r)),o[e](n);a+=this.evaluateBlock(t.body,n).value,c=!1}if(c){a+=this.evaluateBlock(t.defaultBlock,n).value}return new Nt(a)}evaluateMacro(t,e){return e.setVariable(t.name.value,new _t(((e,n)=>{const r=new Bt(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 Rt}evaluate(t,e){if(void 0===t)return new zt;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 Nt(t.value);case"BooleanLiteral":return new Ct(t.value);case"NullLiteral":return new Rt(t.value);case"ArrayLiteral":return new Mt(t.value.map((t=>this.evaluate(t,e))));case"TupleLiteral":return new Lt(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 Nt))throw new Error(`Object keys must be strings: got ${t.type}`);n.set(t.value,this.evaluate(s,e))}return new Tt(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 Pt(t){switch(typeof t){case"number":return new jt(t);case"string":return new Nt(t);case"boolean":return new Ct(t);case"undefined":return new zt;case"object":return null===t?new Rt:Array.isArray(t)?new Mt(t.map(Pt)):new Tt(new Map(Object.entries(t).map((([t,e])=>[t,Pt(e)]))),t);case"function":return new _t(((e,n)=>{const r=e.map((t=>Vt(t)));return Pt(t(...r)??null)}));default:throw new Error(`Cannot convert to runtime value: ${t}`)}}function Vt(t){let e=t;if(Array.isArray(t))e=t.map((t=>Vt(t)));else if(t instanceof Map)e={},t.forEach(((t,n)=>{e[n]=Vt(t)}));else switch(t.type){case"NullValue":e=null;break;case"UndefinedValue":e=void 0;break;case"ArrayValue":e=t.value.map((t=>Vt(t)));break;case"KeywordArgumentsValue":case"ObjectValue":e=t.orgValue?t.orgValue:Vt(t.value),"KeywordArgumentsValue"===t.type&&Object.setPrototypeOf(e,{jinja_kargs:!0});break;default:t.type&&(e=t.value)}return e}function Ut(t,e=0){return Math.floor(Math.random()*(t-e+1))+e}var Xt={randomInt:Ut,select:function(t,e){if(Array.isArray(t)||"string"==typeof t)return void 0===e?e=Ut(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[Ut(n.length-1)]}return t[e]}},tojson:function(t,e,n){return e&&"object"==typeof e&&(e.depth&&(n=e.depth),e=e.indent),Dt(t,e,n)},join:function(t,e=","){return Array.isArray(t)?t.join(e):t}};function Dt(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=>Dt(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}": ${Dt(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 qt=class extends Bt{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()}},Jt=class t{static{this.global=new qt}constructor(t,e={}){const n=Z(t,e={lstrip_blocks:!0,trim_blocks:!0,...e});this.parsed=$t(n)}render(e){const n=new Bt(t.global);if(n.set("false",!1),n.set("true",!0),n.set("raise_exception",(t=>{throw new Error(t)})),n.set("range",kt),e)for(const[t,r]of Object.entries(e))n.set(t,r);return new Ft(n).run(this.parsed).toString()}};function Gt(t,e){let n;switch(t.type){case"Identifier":n=t.value;break;case"MemberExpression":n=Gt(t.object,e);break;case"FilterExpression":n=Gt(t.operand,e);break;case"Set":{e||(e=[]);const r=Gt(t.assignee);r&&e.push(r),n=Gt(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 Wt(t,e){let n=[];if(Array.isArray(t))n=t.map((t=>Wt(t,e))).filter(Boolean).flat();else switch(t.type){case"Program":n=t.body.map((t=>Wt(t,e))).filter(Boolean).flat();break;case"If":n=[Gt(t.test,e),...Wt(t.body,e),...Wt(t.alternate,e)].filter(Boolean);break;case"BinaryExpression":n=[Gt(t.left,e),Gt(t.right,e)].filter(Boolean);break;case"For":{const r=Gt(t.loopvar);r&&(e||(e=[]),e.push(r)),n=[Gt(t.iterable,e),...Wt(t.body,e)].filter(Boolean);break}case"CallExpression":n=[Gt(t.callee,e),...Wt(t.args,e)].filter(Boolean);break;default:n=[Gt(t,e)].filter(Boolean)}return n}Jt.global.assign(Xt);var Ht=class extends P{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 Jt(n)}catch(t){}return e&&(r=Kt(e.parsed)),r}getVariables(t=this.compiledTemplate){return Wt(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 Jt(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return this.compiledTemplate.render(t)}};function Zt(t){return function(e){return t}}function Qt(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 Yt(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 te(t){const e=new Set;return t.forEach((t=>{"variable"===t.type&&e.add(t.name)})),[...e]}P.register(Ht,{name:"hf",aliases:["huggingface","internal","default"]});var ee=class extends P{static isTemplate(t){let e,n,r=!1;if("object"==typeof t?(n=t.template,e=t.compiledTemplate):n=t,!e&&n)try{e=Qt(n)}catch(t){}if(e){r=te(e).length>0}return r}getVariables(t=this.compiledTemplate){return te(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=Qt(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return Yt(this.compiledTemplate,t)}};function ne(t,e){return"string"==typeof e&&(e=e.split(".").filter((t=>t.length))),e.reduce(((t,e)=>t?.[e]),t)}function re(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 ne(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):ne(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=ne(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=ne(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):ne(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=ne(e,r);let o;return o=isNaN(s)?i[s.substring(1,s.length-1)]:i[parseInt(s,10)],o||""}))}(r,e,n),r}P.register(ee,{name:"fstring",aliases:["python","f-string","langchain"]});var se=class extends P{static isTemplate(t){const e="string"==typeof t?t:t.template;return e?.includes("{{")&&e.includes("}}")}getVariables(t){const e={};return re(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 re(this.template,t)}};P.register(se,{name:"golang",aliases:["localai","ollama"]});var ie=/(\\)?(\$)(?!\()(\{?)([\w.]+)(?::?-((?:\$\{(?:\$\{(?:\$\{[^}]*\}|[^}])*}|[^}])*}|[^}])+))?(\}?)/gi;function oe(t){return t.replace(/\\\$/g,"$")}function ae(t){const e=new Set;let n;for(;n=ie.exec(t);){const t=n[3],r=n[6];if(t&&r||!t&&!r){const t=n[4];e.add(t)}}return[...e]}function ce(t,e,n){return t.replace(ie,((r,s,i,o,a,c,u)=>o&&!u?r:"\\"===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?oe(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=class extends P{static isTemplate(t){let e,n=!1;e="object"==typeof t?t.template:t;return n=ae(e).length>0,n}getVariables(t=this.template){return ae(t)}_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()}_format(t){const e={...process.env};return ce(this.template,e,t)}};function he(t){return Object.keys(t).sort().map((e=>t[e]))}P.register(le,{name:"env",aliases:["js","javascript"]});var pe=class extends P{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 P?t.examplePrompt:P.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=he(t);n.length>0&&e.push(...n)}const n=[this.prefix,...e,this.suffix].join(this.exampleSeparator),r=this.templateFormat;return await P.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}};P.register(pe,{name:"fewshot",aliases:["few_shot"]});import{detectTextLanguage as we}from"@isdk/detect-text-language";var de=/(\S.+?[.!?])(?=\s+|$)|(\S.+?)(?=[\n]|$)/g,me=/([A-Z][a-z]{1,2}\.)\s(\w)/g,ye=/(\.[a-zA-Z]\.)\s(\w)/g,ge=new RegExp("([A-Z][a-z]{1,2}\\.)@(\\w)","g"),be=new RegExp("(\\.[a-zA-Z]\\.)@(\\w)","g"),ve=/(```)([\s\S]*?)(```)/g,xe=">>>CODE_BLOCK<<<",Ee=/([*_`]{1,3})(\S.*?\S)\1/,$e=/>>> INLINE_BLOCK (\d+) <<</,ke=1e4;function Se(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 Ae(t,{best:e=!0,completeSentence:n,isMarkdown:r,ignoreEmptyLine:s}={}){const i=[],o=[];let a,c=0;for(;c++<ke&&(a=ve.exec(t));){const e=a[0];i.push(e),t=t.replace(e,"\n"+xe+(i.length-1)+"\n")}for(c=0;c++<ke&&(a=Ee.exec(t));){const e=a[0];o.push(e),t=t.replace(e,">>> INLINE_BLOCK "+(o.length-1)+" <<<")}if(r){const e=t.split("\n");for(let t=0;t<e.length;t++){const n=e[t];Te(n,{isMarkdown:r,nextLine:e[t+1]})&&(i.push(n),e[t]=xe+(i.length-1))}t=e.join("\n")}const u=(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 f=[];for(let t=0;t<u.length;t++){let n=u[t].trimEnd();if(!n){!r&&s||f.push("");continue}if(n.startsWith(xe)){f.push(i[Number(n.slice(16))]);continue}if(r&&Te(n,{isMarkdown:r,nextLine:u[t+1]})){f.push(n);continue}if(!e){f.push(n);continue}let a=Se(n,"@",[me,ye]),c=Array.from(a.matchAll(de)),l=[];if(c.length)for(let t=0;t<c.length;t++)l.push(Se(c[t][0]," ",[ge,be]));else l.push(n);f.push(...l.map((t=>_e(o,t))))}return n&&(f=Oe(f,{isMarkdown:r,ignoreEmptyLine:s})),f}function Oe(t,{isMarkdown:e,ignoreEmptyLine:n}={}){const r=[];let s=0,i="";for(n=!e&&n;s<t.length;){let c=t[s];if(c){let u;if(n){const n=ze(t,s+1);u=Ce(t[n],{isMarkdown:e,nextLine:-1===n?"":t[n+1]})}else u=Ce(t[s+1],{isMarkdown:e,nextLine:t[s+2]});o=c,a={isMarkdown:e,nextLine:t[s+1]},Ne(o)||Ce(o,a)||""===t[s+1]||u?(i&&(c=je(i,c),i=""),r.push(c)):(i&&(c=je(i,c)),i=c)}else n||r[r.length-1]&&r.push(c);s++}var o,a;return i&&r.push(i),r}function je(t,e){const n=t+" "+e,r=we(n,{isoCode:!0});return r&&!Re(r)?(Le(t)&&(t+=" "),e=t+e):e=t.endsWith("-")?(t=t.slice(0,-1))+e:n,e}function Ne(t){if(!t)return!1;return/(([.。!!??]\s*['"”’]?)|```)\s*$/.test(t)}function Ce(t,e){let n=Te(t,e);return n||(n=Ie(t)),n||(n=Me(t)),n}function Te(t,e){if(!t)return null;let n=/^\s*第?\s*[壹贰叁肆伍陆柒捌玖拾一二三四五六七八九十百千萬万\d]+\s*([章節节编回部篇卷幕场場辑集段册冊期片題]|片段|段落|篇[章目]|小[节節]|(子)?部分|卷[册冊]|[单單]元|章[节節回]|[.、])[ \t]*(?<title>.*)(?=\n|$)/.exec(t);if(n||(n=/^\s*(Chapter|Book|Article|Part|Paragraph|Subsection|Subpart|Volume|Episode|Issue|Unit|Section|Segment|Act|Scene)\s*\d+.*(?=\n|$)/i.exec(t)),!n&&e?.isMarkdown){n=/^[ \t]{0,3}(#+)\s+(?<title>\S.*)$/.exec(t);const r=/^[ \t]{0,3}([-=]+)(?=\n|$)/;!n&&e.nextLine&&!r.test(t)&&/^[ \t]{0,3}\S/.test(t)&&r.test(e.nextLine)&&(n=/^\s*(?<title>.*)(?=\n|$)/.exec(t))}return n}function Ie(t){return/^\s*([*+-]|\d+[.、])\s*(?<item>.*)(?=\n|$)/.exec(t)}function Me(t){return/^[-=_]{3,}$/.exec(t)}function Le(t){return/[。!??,、;;::'""“”‘’~~《》<>〈〉【】(){}【】\[\]\(\)…·]$/.test(t)}function _e(t,e){let n,r=0;for(;r++<ke&&(n=$e.exec(e));){const r=Number(n[1]);e=e.replace(n[0],t[r])}return e}function Re(t){return!["zh","ja","th","lo","ta","ko"].includes(t)}function ze(t,e=0){for(let n=e;n<t.length;n++){const e=t[n];if(null!=e&&""!==e)return n}return-1}function Be(t,e){const n=/(?!\\)([*_])\1(?![ \t]|\1)(.+?)(?<!\\)\1{2}/;let r;for(;(r=n.exec(t))&&(t=t.slice(0,r.index)+r[2]+t.slice(r.index+r[0].length),!e););return t}function Fe(t,e){const n=/(?!\\)([*_])(?![ \t]|\1)(.+?)(?<!\\)\1/;let r;for(;(r=n.exec(t))&&(t=t.slice(0,r.index)+r[2]+t.slice(r.index+r[0].length),!e););return t}function Pe(t,e){return t=Fe(t=Be(t,e),e)}function Ve(t,e){const n=[],r=[],s=t.split("\n");for(let t=0;t<s.length;t++){let i=s[t];const o=0===i.trim().length;o||Te(i,{...e,nextLine:s[t+1]})?(r.length&&n.push([...r]),r.length=0,o||r.push(i)):r.push(i)}return r.length&&n.push([...r]),n}function Ue(t,e=2,n=.5){const r=10**e;return Math.trunc((t+Number.EPSILON+n/r)*r)/r}async function Xe(t){return new Promise((e=>setTimeout(e,t)))}import{createAbilityInjector as De}from"custom-ability";import{EventEmitter as qe,eventable as Je,states as Ge,wrapEventEmitter as Ke}from"events-ex";var We="event",He="event-bus";var Ze=De((function(t){return class{static get emitter(){if(!this._emitter){const t=this.get(He)?.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 Qe(t,e){return!t||t.some((t=>t instanceof RegExp?t.test(e):t===e))}var Ye=498,tn=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||Qe(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=>Qe(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 en(t){return t instanceof ReadableStream||t instanceof WritableStream}var nn=600,rn=601,sn=class extends a{constructor(t,e=600){super(t,500)}};function on(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 sn(`Response error: ${e}`,601))}}})}return new ReadableStream({start(t){t.error(new sn("Response error: No response body",601))}})}function an(){return new ReadableStream({start(t){t.close()}})}import{createParser as cn}from"eventsource-parser";function un(t){const e=new TextDecoder;let n;return new TransformStream({async start(e){n=cn({onEvent:n=>{if("data"in n&&"[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 fn(){let t=!0;return e=>(t&&(e=e.trimStart())&&(t=!1),e)}function ln(t,e){if(!t.ok)return on(t.body);let n=t.body||new ReadableStream({start(t){t.close()}});return n instanceof ReadableStream||(n=ReadableStream.from(n)),n.pipeThrough(un(e))}function hn(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 pn(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 wn,v5 as dn,v4 as mn}from"uuid";import*as yn from"base32768";import{v1 as gn,v4 as bn,v5 as vn,stringify as xn,parse as En,validate as $n,version as kn,NIL as Sn}from"uuid";var An={1:wn,4:mn,5:dn};function On(t=1,e){const n=An[t];return e?yn.encode(n(null,[])):n()}import jn from"xxhashjs";import*as Nn from"base32768";import{canonicalize as Cn}from"json-canonicalize";import{createMD5 as Tn,createRIPEMD160 as In,createSHA1 as Mn,createSHA224 as Ln,createSHA256 as _n,createSHA512 as Rn,createXXHash128 as zn,createXXHash32 as Bn,createXXHash64 as Fn}from"hash-wasm";var Pn=588213,Vn=(t=>(t[t.md5=1]="md5",t[t.sha1=2]="sha1",t[t.ripemd=3]="ripemd",t[t.sha256=8]="sha256",t[t.sha384=9]="sha384",t[t.sha512=10]="sha512",t[t.sha224=11]="sha224",t[t.xxhash=111]="xxhash",t[t.xxhash64=111]="xxhash64",t[t.xxhash32=112]="xxhash32",t[t.xxhash128=113]="xxhash128",t))(Vn||{}),Un={1:Tn,2:Mn,8:_n,10:Rn,11:Ln,3:In,112:Bn,111:Fn,113:zn},{h32:Xn,h64:Dn}=jn;function qn(t,e=16){return"object"==typeof t&&(t=Cn(t)),Xn(t.normalize(),Pn).toString(e)}function Jn(t,e=16){return"object"==typeof t&&(t=Cn(t)),Dn(t.normalize(),Pn).toString(e)}function Gn(t,e=111,n=Pn){let r;return t.buffer&&(t=t.buffer),112!==e?(r=Dn(t,n),r=new Uint16Array([r._a00,r._a16,r._a32,r._a48]),r=new Uint8Array(r.buffer)):(r=Xn(t,n),r=new Uint16Array([r._low,r._high]),r=new Uint8Array(r.buffer)),r}function Kn(t,e=111,n=Pn){return Nn.encode(Gn(t,e,n))}import{canonicalize as Wn}from"json-canonicalize";import*as Hn from"base32768";var Zn=Hn;async function Qn(t,{hashAlgo:e=111,seed:n=Pn,outputType:r="string"}={}){const s=await Un[e](n);s.init();const i=t.getReader();for(;;){const{done:t,value:e}=await i.read();if(t)break;s.update(e)}return"string"!==r?s.digest(r):Hn.encode(s.digest("binary"))}async function Yn(t,{hashAlgo:e=111,seed:n=Pn,outputType:r="string"}={}){const s=await Un[e](n);s.init(),s.update(t);return"string"!==r?s.digest(r):Hn.encode(s.digest("binary"))}import tr from"path";var er=/[<>:"/\\|?*\u0000-\u001F]/,nr=/^(con|prn|aux|nul|com\d|lpt\d)$/i,rr=/^\.+(\\|\/)|^\.+$/,sr=/\.+$/,ir=/[\u0000-\u001F\u0080-\u009F\u200E\u200F\u202A-\u202E\u2066-\u2069]/;function or(){return new RegExp(er.source,"g")}function ar(){return new RegExp(ir.source,"g")}function cr(t){return t&&!(er.test(t)||ar().test(t)||rr.test(t)||sr.test(t))}function ur(t){const e=t.split(tr.sep);return("/"===t[0]||e[0]&&tr.dirname(e[0])===e[0])&&e.shift(),e.every(cr)}function fr(t,e={}){const n=e.replacement||"!";if((er.test(n)||ir.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(rr,n)).replace(or(),n)).replace(ar(),n)).replace(sr,""),n.length>0){"."===t[0]||"."!==t[0]||(t=n+t),"."===t[t.length-1]&&(t+=n)}t=nr.test(t)?t+n:t;const r="number"==typeof e.maxLength?e.maxLength:100;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 lr(t,e={}){const n=t.split(tr.sep);let r;("/"===t[0]||n[0]&&tr.dirname(n[0])===n[0])&&(r=n.shift());const s=n.map((t=>fr(t,e)));return void 0!==r&&s.unshift(r),s.join(tr.sep)}function hr(t,e=1){let n="";for(;e--;){const e=tr.extname(t);if(!e)break;n=e+n,t=tr.basename(t,e)}return n}function pr(t){return t.split(".").length-1}import{isRegExpStr as wr,toRegExp as dr}from"util-ex";function mr(t,e){if("string"!=typeof t)throw new c("modelName must be a string","isModelNameMatched",f.InvalidArgument);switch(typeof e){case"string":if(wr(e)){const n=(e=dr(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(wr(n)){const r=(e=dr(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 yr(t){return Object.keys(t).filter((t=>Number.isNaN(Number(t))))}import{pick as gr}from"lodash-es";import{newFunction as br}from"util-ex";import{get as vr,omitBy as xr}from"lodash-es";import{newFunction as Er}from"util-ex";async function $r(t,e,n){return Or(Fr(t,e,n),e,n)}function kr(t){for(let e=1;e<t.length;e++)if(t[e]<=t[e-1])return!1;return!0}function Sr(t){if(t&&!Array.isArray(t)&&"object"==typeof t){const e=Object.entries(t),n=Object.keys(t),r=n.filter((t=>!isNaN(parseInt(t))));if(1===e.length)void 0!==t[0]&&(t=[t[0]]);else if(n.every((t=>!isNaN(parseInt(t))))&&kr(n.map((t=>parseInt(t)))))t=Object.values(t);else if("0"===r[0]&&kr(r.map((t=>parseInt(t))))){const n=e.filter((([t,e])=>isNaN(parseInt(t))));t=e.filter((([t,e])=>!isNaN(parseInt(t)))).map((([t,e])=>e));let r=0;const s=[];for(;r<n.length&&n[r][1]===t[r];)s.push(r),r++;for(;s.length;)n.splice(s.pop(),1);t={args:t,kvArgs:Object.fromEntries(n)}}else t={args:[],kvArgs:t}}return Array.isArray(t)&&(t={args:t}),t}function Ar(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 Or(t,e,n){if(t.length){const r=await Promise.all(t.map(((t,r)=>Br(t,r,e,n)))),s=n?.returnArrayOnly;let i;if(r?.length){i=Kr(`{${r.map((t=>t)).join(",")}}`,e)}return i&&!s&&(i=Ar(i)),i}}function jr(t,e,n,r){const[s,i]=t;if(!s&&"|"===i[0])return"choice: {"+function(t,e,n){const r=Fr(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=>Mr(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(Tr(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 Nr([t,e],n,r,s){let i,o;if(r||(r={}),t){const t=e.split(":");i=t[0].trim(),o=t[1].trim()}else o=e,i=n+"";const a={template:o,data:{...xr(r,((t,e)=>!e||"_"===e[0]||"function"==typeof t)),...s?.templateData}};s?.templateFormat&&(a.templateFormat=s.templateFormat);const c=await P.formatIf(a);if(c)return o=Tr(c)?c:JSON.stringify(c),i+":"+o}async function Cr(t,e,n,r){let s=jr(t,0,n,r);return s||(s=await Nr(t,e,n,r)),s}function Tr(t){const e=t[0];return('"'===e||"'"===e)&&t[t.length-1]===e}function Ir(t,e=['""',"''","{}"]){return e.some((e=>t[0]===e[0]&&t[t.length-1]===e[1]))}function Mr(t,e='"'){return Tr(t)?t:e+t+e}function Lr(t){return'"'+t.replace(/(?<!\\)"(?!\\)/g,'\\"')+'"'}var _r=["true","false","null","undefined","NaN","Infinity"];async function Rr(t,e,n){const r=Er("async expression",[],`return ${t};`,Zr(e));let s;try{s=await r.call(this)}catch(t){if(n||!(t instanceof ReferenceError))throw t}switch(typeof s){case"number":case"boolean":case"undefined":return s;case"function":return r.toString();default:return JSON.stringify(s)}}async function zr(t,e,n){let r=t;if(["true","false"].includes(t.toLowerCase()))r=r.toLowerCase();else if(!(s=t,Ir(s)||!Number.isNaN(parseFloat(s))||_r.includes(s)||Jr(s)||e&&void 0!==vr(e,t)||Jr(t)))try{r=n?.skipExpression?Lr(t):await Rr.call(this,t,e,n?.preserveUnresolvedName)}catch(e){r=Lr(t)}var s;return r}async function Br(t,e,n,r){const[s,i]=t,o=r?.argProcessor,a=r?.ignoreIndexNamed;if("function"==typeof o){const s=await o(t,e,n,r);if(s)return s}if(s){const t=i.indexOf(":");return i.slice(0,t).trim()+":"+await zr(i.slice(t+1).trim(),n,r)}{const t=i.trim();if(n&&void 0!==vr(n,t)){return(a?"":e+":"+t+",")+'"'+t+'":'+t}return e+":"+await zr(i.trim(),n,r)}}function Fr(t,e,n){const r=n?.delimiter??",",s=n?.assigner??"=";let i=[],o=!1,a="",c="",u=!1,f="";for(let e=0;e<t.length;e++){const n=t[e];if(n!==r||o||f)if("\\"===n)c+=n,e++,c+=t[e];else if("("!==n&&"["!==n||o)if(f&&n===f)f="",c+=n;else if("{"!==n||o)'"'===n||"'"===n?(o&&n===a?o=!1:o||(o=!0,a=n),c+=n):n!==s||o||u||!/^[\p{L}\p{N}_ ]+$/u.test(c)?c+=n:(c+=":",u=!0);else{let r,s=e,i=!1,o="",a=-1;for(;s<t.length&&("}"!==(r=t[s])||i||a>0);)"\\"===r?s++:"{"!==r||i?"}"!==r||i?'"'!==r&&"'"!==r||(i&&n===o?i=!1:i||(i=!0,o=n)):a--:a++,s++;s<t.length&&(c+=t.substring(e,s+1),e=s)}else f="("===n?")":"]",c+=n;else c=c.trim(),c.endsWith(":")&&(c+="undefined"),i.push([u,c]),c="",u=!1}return c&&(c=c.trim(),c.endsWith(":")&&(c+="undefined"),i.push([u,c])),i}async function Pr(t,e,n){const r=t.match(/^([^(]+)(?:\((.*)\))?$/);if(!r){if(n?.raiseError)throw new Error("Invalid command format");return}const[,s,i]=r;let o;return i&&(o=await $r(i,e,n)),{command:s.trim(),args:o}}var Vr="__PlacEhoLdeR_";function Ur(t,e){let n=e?.startChar?Array.isArray(e.startChar)?e.startChar:[e.startChar]:['"',"'"],r=e?.endChar?Array.isArray(e.endChar)?e.endChar:[e.endChar]:n;if(n.length!==r.length)throw new Error("start and end characters must have the same length");const s=e?.placeholder??Vr,i=n.every(((t,e)=>t===r[e])),o=e?.placehoders??[];if(i){n=n.map((t=>"\\"+t));const e=new RegExp(`(?<!\\\\)(${n.join("|")}).*?(?<!\\\\)\\1`);let r;for(;null!==(r=e.exec(t));){const e=`${s}${o.length}`;t=t.replace(r[0],e),o.push(r[0])}}else{n=n.map((t=>"\\"+t)),r=r.map((t=>"\\"+t));for(let e=0;e<n.length;e++){const i=new RegExp(`(?<!\\\\)${n[e]}.*?(?<!\\\\)${r[e]}`);let a;for(;null!==(a=i.exec(t));){const e=`${s}${o.length}`;t=t.replace(a[0],e),o.push(a[0])}}}return[t,o]}function Xr(t,e,n){const r=n?.placeholder??Vr;return e.reduce(((t,e,n)=>t.replace(new RegExp(r+n,"g"),e)),t)}var Dr="[a-zA-Z_$][a-zA-Z_\\d$]*",qr=new RegExp(`^\\s*(\\(\\s*\\)|${Dr}|\\(${`${Dr}\\s*(,\\s*${Dr})*`}\\))\\s*=>`);function Jr(t){return qr.test(t)}async function Gr(t,e){if(e&&(e=Zr(e)),e&&(t=t.trim()).startsWith("{")&&t.endsWith("}")){return await $r(t.slice(1,-1),e,{assigner:":",ignoreIndexNamed:!0})}return Kr(t,e)}function Kr(t,e){if(e&&(e=Zr(e)),e){const n=Object.keys(e);if(n.length){const r=Object.values(e);let s=0;for(;s++<100;)try{return br("expression",n,`return ${t}`)(...r)}catch(t){if(!(t instanceof ReferenceError))throw t;{const e=/(.+)\s+is not defined/.exec(t.message);if(!e)throw t;n.push(e[1]),r.push(void 0)}}}}return br("expression",[],`return ${t}`)()}var Wr=/^[a-zA-Z_$][0-9a-zA-Z_$.]*$/,Hr=t=>Wr.test(t);function Zr(t){if(t){const e=Object.keys(t),n=e.length,r=e.filter((e=>Hr(e)&&null!==t[e]));if(n===r.length)return t;if(r.length)return t=gr(t,r)}}function Qr(t){return t?Yr(t,[],{dot:""}):[]}function Yr(t,e,{dot:n=".",visited:r=new Set}={}){return r.has(t)?[e.join("")]:Array.isArray(t)?(r.add(t),t.flatMap(((t,n)=>Yr(t,[...e,`[${n}]`],{dot:".",visited:r})))):(s=t)&&s.constructor===Object?(r.add(t),Object.entries(t).flatMap((([t,s])=>Yr(s,[...e,n+t],{dot:".",visited:r})))):[e.join("")];var s}function ts(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 es from"path";import*as ns from"fs";import rs from"mime-type/with-db";import ss from"jschardet";function is(t){const e=ns.statSync(t,{throwIfNoEntry:!1});return e?.isFile()}function os(t,e,n,r){const s=r?.signal,i=r?.exclude;let o;if(es.isAbsolute(t)?o=is(t)?t:as(es.basename(t),[es.dirname(t)],{extNames:n,exclude:i,signal:s}):(e||(e=["."]),o=as(t,e,{extNames:n,exclude:i,signal:s})),!o)throw new p(t,"loadFileFromPaths");{const t=o;o=ns.readFileSync(o),r&&(r.filepath=t)}return o}function as(t,e,{extNames:n,signal:r,exclude:s=[]}){let i;const o=n?n.map((e=>hr(t,pr(e)))):void 0;"string"==typeof s&&(s=[s]);for(const a of e){if(r?.aborted)throw r.reason;const e=es.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)&&is(r)){i=r;break}}else if(!s.includes(e)&&is(e)){i=e;break}}return i}function cs(t,e,n,r,s){let i;"string"==typeof r?(i=r,r=void 0):i=r?.encoding;return us(os(t,e,n,r),i)}function us(t,e){void 0===e&&(e=ds(t)??"utf8");return new TextDecoder(e).decode(t)}function fs(t,e){const n=[],r="string"==typeof t?[{dir:t,level:0}]:[...t.map((t=>({dir:t,level:0})))],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=r.pop(),e=ls(t.dir),u=es.resolve(e);if(s.has(u))continue;s.add(u);const f=ns.statSync(e,{throwIfNoEntry:!1});if(f?.isDirectory()){c=t.level+1;const s=ns.readdirSync(e,{withFileTypes:!0});for(let t=0;t<s.length;t++){let i=s[t],u=es.join(e,i.name);if(i.isSymbolicLink()){const t=es.dirname(u);u=ns.readlinkSync(u),u=es.resolve(t,u),i=ns.statSync(u)}i.isDirectory()?(!a||c<a)&&(o&&!o(u,i)||r.push({dir:u,level:c})):!i.isFile()||o&&!o(u,i)||n.includes(u)||n.push(u)}}}return n}function ls(t){const e=ns.lstatSync(t,{throwIfNoEntry:!1});return e?.isSymbolicLink()&&(t=ns.readlinkSync(t)),t}async function hs(t,e){return Qn(ReadableStream.from(ns.createReadStream(t)),e)}async function ps(t){const e=es.basename(t);t=es.resolve(t);const n=await ns.promises.stat(t),r=n.mtime,s=n.ctime,i=n.size,o=ws(i),a=await hs(t,{hashAlgo:o}),c=rs.lookup(t);return{name:e,mtime:r,ctime:s,size:i,hash:Vn[o]+":"+a,mimeType:c,id:"file://"+t}}function ws(t){let e=111;return t<=2048?e=112:t<=1048576?e=111:t<=10485760?e=113:t>10485760&&(e=10),e}function ds(t,e){return ss.detect(t,e).encoding}import{existsSync as ms,mkdirSync as ys,readdirSync as gs,statSync as bs,writeFileSync as vs}from"fs";import xs from"path";import{Config as Es}from"load-config-file";import{parse as $s,stringify as ks}from"yaml";import{regexp as Ss}from"yaml-types";import{mimeType as As}from"mime-type/with-db";var Os=[Ss];function js(t){Array.isArray(t)||(t=[t]);for(const e of t){-1===Os.indexOf(e)&&Os.push(e)}}function Ns(t,e){if(e)if(e.customTags){if(Array.isArray(e.customTags))e.customTags=Os.concat(e.customTags);else if("function"==typeof e.customTags){const t=e.customTags;e.customTags=e=>t(Os.concat(e))}}else e.customTags=Os;else e={customTags:Os};return $s(t,e)}function Cs(t,e){if(e)if(e.customTags){if(Array.isArray(e.customTags))e.customTags=Os.concat(e.customTags);else if("function"==typeof e.customTags){const t=e.customTags;e.customTags=e=>t(Os.concat(e))}}else e.customTags=Os;else e={customTags:Os};return ks(t,e)}function Ts(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=gs(t,{withFileTypes:!0,recursive:!0});for(const r of n){const n=xs.join(t,r.name);r.isFile()&&e(n,r)}}(t,((t,e)=>{if(s?.includes(t))return;const o=xs.extname(t),a=bs(t);if(i.includes(o)){if(r?.hasOwnProperty(t)&&a.mtimeMs<=r[t])return;n.push(t)}})),n}function Is(t,e){return Ts(t,e).map((t=>Es.loadSync(t))).filter((t=>void 0!==t))}function Ms(t,e,n=1){"."===t[0]&&n++;const r=hr(t,n);(!r||r.split(".").length<=1)&&(t+=".yaml");const s=As.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=Cs(e)}const i=xs.dirname(t);return ms(i)||ys(i,{recursive:!0}),vs(t,e,{encoding:"utf8"}),t}function Ls(t){t instanceof Date&&(t=t.toISOString());return function(t,e){return t?`'${e}'`:String(e)}("string"==typeof t,t)}function _s(t,e){return t.map((t=>Bs(t,e))).join(" AND ")}function Rs(t,e){return t.map((t=>Bs(t,e))).join(" OR ")}function zs(t,e){const n=[];return Object.keys(e).forEach((r=>{const s=e[r];switch(r){case"$lt":case"<":n.push(`${t} < ${Ls(s)}`);break;case"<=":case"$lte":n.push(`${t} <= ${Ls(s)}`);break;case"$gt":case">":n.push(`${t} > ${Ls(s)}`);break;case"$gte":case">=":n.push(`${t} >= ${Ls(s)}`);break;case"$ne":case"!=":n.push(`${t} != ${Ls(s)}`);break;case"=":case"$eq":n.push(`${t} = ${Ls(s)}`);break;case"$in":n.push(`${t} IN (${s.map((t=>Ls(t))).join(", ")})`);break;case"$nin":n.push(`${t} NOT IN (${s.map((t=>Ls(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 Bs(t,e){const n=[];if("function"!=typeof e&&(e=t=>t),Array.isArray(t))n.push(_s(t,e));else for(const[r,s]of Object.entries(t))if("$and"===r)n.push(`(${_s(t[r],e)})`);else if("$or"===r)n.push(`(${Rs(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(zs(e(r),s))}return n.length>1?n.join(" AND "):n[0]}function Fs(t){const e=t.indexOf("://");if(e>0)return t.substring(0,e)}function Ps(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 Vs(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 Us(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":" ")+Us(t,{level:n+1,visiting:r})}}Es.register([".yml",".yaml"],Ns),Es.register([".json"],(function(t){return JSON.parse(t)}));var Xs=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{isAsync as Ds}from"util-ex";import{EventEmitter as qs}from"events-ex";function Js(t=0){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 Gs=class extends Array{constructor(t,e){Array.isArray(t)?(super(...t),this._length=t.length,t=void 0):(super(),this._length=0),this._capacity=Js(t),this._front=0,this._disableAutoResize=e}push(t){let e=this._length;this.checkCapacity(e+1);const n=this._front+e&this._capacity-1;return this[n]=t,++e<=this._capacity&&(this._length=e),n}unshift(t){let e=this._length;this.checkCapacity(++e);const n=this._capacity,r=(this._front-1&n-1^n)-n;return this[r]=t,this._front=r,e<=this._capacity&&(this._length=e),r}pop(t){let e=this._length;if(0===e)return;let n=this._front+e-1&this._capacity-1,r=this[n];for(;--e>0&&t&&null==r;)n--,r=this[n];return this[n]=void 0,this._length=e,r}shift(t){let e=this._length;if(0===e)return;let n=this._front,r=this[n];for(;--e>0&&t&&null==r;)n=n+1&this._capacity-1,r=this[n];return this[n]=void 0,this._front=n+1&this._capacity-1,this._length=e,r}get size(){return this._length}get(t){let e;if(t===(0|t)){const n=this._length;t<0&&(t+=n),t>=0&&t<n&&(e=this[this._front+t&this._capacity-1])}return e}peekBack(){const t=this._length;if(0===t)return;return this[this._front+t-1&this._capacity-1]}peekFront(){if(0!==this._length)return this[this._front]}clear(){const t=this._length,e=this._front,n=this._capacity;for(let r=0;r<t;++r)this[e+r&n-1]=void 0;this._length=0,this._front=0}isEmpty(){return 0===this._length}removeAt(t){const e=this._length;if(t<0||t>=e)return;const n=this._front,r=this._capacity-1,s=n+t&r,i=this[s];if(t<e/2)this.copyWithin(n+1&r,n,n+t&r),this[n]=void 0,this._front=n+1&r;else{this.copyWithin(s,s+1&r,n+e&r);this[n+e-1&r]=void 0}return this._length=e-1,i}checkCapacity(t){this._capacity<t&&!this._disableAutoResize&&this.resizeTo(Js(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){!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,0,this,e,n+r&e-1)}}};import{AbortError as Ks}from"@isdk/common-error";var Ws=32;function Hs(t){return"function"==typeof t}function Zs(){return"1"}var Qs=class{constructor(t={}){const{initFn:e=Zs,pauseFn:n,resumeFn:r,capacity:s=Ws}=t;if(Hs(n)!==Hs(r))throw new Error("pauseFn and resumeFn must be both set for pausing");this.waiting=new Gs(s),this.emitter=new qs,this.useDefaultTokens=e===Zs,this.pauseFn=n,this.resumeFn=r,this.initTokenFn=e,this.paused=!1,this._activeCount=0,this.initFree(t),this.init(t)}initFree(t){this.free=this.initTokenFn()}onReleased(t){const e=t?.token,n=this.waiting.shift(!0);n?this._dispatchTask(n,t):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.unlock(e))}init(t){this.emitter.on("release",(t=>{this.onReleased(t)}))}_newReleaser(t){let e=!1;const n=()=>{e||(e=!0,this.release(t))};return t&&Object.assign(n,t),n}_dispatchTask(t,e){const{resolve:n}=t;n(this._newReleaser(e))}lock(t){let e=this.free;if(e)return this.free=void 0,e}unlock(t){this.free=this.useDefaultTokens?"1":t??this.initTokenFn()}tryAcquire(t){return this.lock(t)}async acquire(t){this._activeCount++;const e=t?.signal,n=t=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn());const n=this.waiting.push(t),r=t.reject;return e&&e.addEventListener("abort",(()=>{this.waiting[n]=void 0;const t=e.reason instanceof Error?e.reason:new Ks(e.reason||"aborted");e.alreadyRejected=!0,r(t)})),n};let r=this.tryAcquire(t);const s=r&&Ds(r),i=e=>new Promise(((r,s)=>{const i={...t,resolve:r,reject:s,token:e};void 0===e?n(i):this._dispatchTask(i,{...t,token:e})}));return s?r.then((t=>i(t))):i(r)}release(t){this._activeCount--,this.emitter.emit("release",t)}drain(){const t=[this.acquire()];return Promise.all(t)}abort(t){let e;for(;e=this.waiting.shift(!0);)e.reject(new Ks(t))}get activeCount(){return this._activeCount}get pendingCount(){return this.waiting.size}},Ys=class extends Qs{constructor(t,e){if("number"==typeof t)(e=e||{}).maxConcurrency=t;else{if("number"!=typeof(e=t).maxConcurrency)throw new Error("maxConcurrency must be set");t=e.maxConcurrency}super(e),this.maxConcurrency=e.maxConcurrency,e.isReadyFn&&(this.isReady=e.isReadyFn)}initFree(t){const e=t.maxConcurrency=Math.max(1,t.maxConcurrency);this.free=new Gs(e);for(let t=0;t<e;t++)this.free.push(this.initTokenFn())}tryAcquire(t){let e=this.isReady;if(e&&Ds(e)){return e instanceof Promise||(e=e()),e.then((e=>{if(e)return this.lock(t)}))}if(!e||e())return this.lock(t)}unlock(t){this.free.push(this.useDefaultTokens?"1":t??this.initTokenFn())}lock(t){return this.free.pop()}drain(){const t=new Array(this.maxConcurrency);for(let e=0;e<this.maxConcurrency;e++)t[e]=this.acquire();return Promise.all(t)}};function ti(t,{timeUnit:e=1e3,uniformDistribution:n=!1}={}){const r=new Ys(n?1:t),s=n?e/t:e;return async function(){await r.acquire(),setTimeout((()=>r.release()),s)}}import{AbortError as ei}from"@isdk/common-error";var ni=class{constructor(){this._isSignaled=!1,this.waitQueue=[]}get signaled(){return this._isSignaled}signal(t){if(this._isSignaled)return;this._isSignaled=!0,this._signalValue=t;const e=this.waitQueue.slice();for(this.waitQueue.length=0;e.length>0;){const t=e.shift();t?.resolve(this._signalValue)}}reset(){this._isSignaled=!1,this._signalValue=void 0,this.waitQueue.length=0}abort(t){if(this.waitQueue.length){const e=this.waitQueue.slice();this.waitQueue.length=0;const n=new ei(t);for(;e.length>0;){const{reject:t}=e.shift();t(n)}}}async wait(){return new Promise(((t,e)=>{this._isSignaled?t(this._signalValue):this.waitQueue.push({resolve:t,reject:e})}))}};import{createAbilityInjector as ri}from"custom-ability";import{defineProperty as si}from"util-ex";var ii,oi=0,ai=1,ci=2,ui=(t=>(t[t.MultiTask=0]="MultiTask",t[t.Cancelable=1]="Cancelable",t[t.Priority=2]="Priority",t))(ui||{}),fi=((ii=fi||{})[ii.MultiTask=1]="MultiTask",ii[ii.Cancelable=2]="Cancelable",ii[ii.Priority=4]="Priority",ii),li=class extends AbortController{constructor(t){super(),si(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")}}},hi=class{get maxTaskConcurrency(){return this._maxTaskConcurrency}get semaphore(){return this.getSemaphore()}getSemaphore(t=this._isReadyFn){let e=this._maxTaskConcurrency,n=this.__task_semaphore;return e>0&&!n&&(t&&(t=t.bind(this)),n=this.__task_semaphore=new Ys(e-1,{isReadyFn:t})),n}static hasAsyncFeature(t){const e=this.prototype;let n=e.asyncFeatures;return e._asyncFeatures&&(n|=e._asyncFeatures),Xs.has(n,t)}hasAsyncFeature(t){let e=this.asyncFeatures;return this._asyncFeatures&&(e|=this._asyncFeatures),Xs.has(e,t)}isAborted(t){const e=this.hasAsyncFeature(0);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(0);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(0)){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(0);if(!r&&n&&this.getRunningTask())throw new c("The task is running",this.name,f.TooManyRequests);const s=t?.aborter||new li(this);if(!(s instanceof li)){if(!(s instanceof AbortController))throw new c("aborter should be an AbortController",this.name,f.InvalidArgument);Object.setPrototypeOf(s,new li(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(0)){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=pn({onStart:t=>{si(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.getSemaphore(n?.isReadyFn);if(s){const t=r,e=t.task;r=s.acquire({signal: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(0)){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)}}};hi.prototype.generateAsyncTaskId=function(t,e){return this._generateAsyncTaskId(t,e)},hi.prototype.cleanMultiTaskAborter=function(t,e){return this._cleanMultiTaskAborter(t,e)};var pi=ri(hi,"abort",{afterInjection:function(t,e){let n=t.prototype._asyncFeatures||0;n|=fi.Cancelable,e&&(e.asyncFeatures&&(n|=e.asyncFeatures),e.maxTaskConcurrency>0&&(t.prototype._maxTaskConcurrency=e.maxTaskConcurrency),e.isReadyFn&&"function"==typeof e.isReadyFn&&(t.prototype._isReadyFn=e.isReadyFn)),t.prototype._asyncFeatures=n}});function wi(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 di from"memoizee";import{canonicalize as mi}from"json-canonicalize";function yi(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 di(t,{...e,normalizer:t=>{if(r){const e=r(t);if("string"===e)return e;e&&(t=e)}return Kn(mi(t))}})}import gi from"path";import{packageDirectorySync as bi}from"pkg-dir";function vi(t){const e=bi({cwd:t});if(e)return e;const n=t.split(gi.sep);let r=n.lastIndexOf("dist");if(r>0)return n.slice(0,r).join(gi.sep);if(r=n.lastIndexOf("src"),r>0)return n.slice(0,r).join(gi.sep);throw new Error("can not find package directory")}import xi from"path";function Ei(t,e){try{const n=xi.relative(xi.resolve(t),xi.resolve(e));return!n.startsWith("..")&&!xi.isAbsolute(n)}catch{return!1}}function $i(t,e){return e?.some((e=>Ei(e,t)))}function ki(t,e){for(const n of e)$i(n,t)||t.push(n);return t}import{isRegExp as Si,isRegExpStr as Ai}from"util-ex";function Oi(t){return Ai(t)||Si(t)}function ji(t){return t.replace(/\x1B[[(?);]{0,2}(;?\d)*./g,"")}import Ni from"path";import{fileURLToPath as Ci}from"url";import{AutoTokenizer as Ti}from"@xenova/transformers";var Ii=Ci(import.meta.url),Mi=Ni.dirname(Ii),Li=Ni.join(vi(Mi),".cache"),_i=new Map,Ri={"deepseek-ai/DeepSeek-V2-Lite-Chat":"deepseek2","Qwen/Qwen2.5-0.5B":"Qwen2.5","Xenova/gpt-4":"gpt-4 / gpt-3.5-turbo / text-embedding-ada-002","Xenova/text-davinci-003":"text-davinci-003 / text-davinci-002","Xenova/gpt-3":"gpt-3","Xenova/grok-1-tokenizer":"Grok-1","Xenova/claude-tokenizer":"Claude","Xenova/mistral-tokenizer-v3":"Mistral v3","Xenova/mistral-tokenizer-v1":"Mistral v1","Xenova/gemma-tokenizer":"Gemma","Xenova/gemma2-tokenizer":"Gemma2","Xenova/llama3-tokenizer-new":"Llama 3","unsloth/Llama-3.2-1B-Instruct":"Llama 3.2","Xenova/llama-tokenizer":"LLaMA / Llama 2","Xenova/c4ai-command-r-v01-tokenizer":"Cohere Command-R","Xenova/t5-small":"T5","Xenova/bert-base-cased":"bert-base-cased"},zi={deepseek2:"deepseek-ai/DeepSeek-V2-Lite-Chat","qwen2.5":"Qwen/Qwen2.5-0.5B","gpt-4":"Xenova/gpt-4","gpt-3.5-turbo":"Xenova/gpt-4","text-embedding-ada-002":"Xenova/gpt-4","text-davinci-003":"Xenova/text-davinci-003","text-davinci-002":"Xenova/text-davinci-003","gpt-3":"Xenova/gpt-3","grok-1":"Xenova/grok-1-tokenizer",claude:"Xenova/claude-tokenizer",mistral:"Xenova/mistral-tokenizer-v3",mistral3:"Xenova/mistral-tokenizer-v3",mistral1:"Xenova/mistral-tokenizer-v1",gemma:"Xenova/gemma-tokenizer",gemma2:"Xenova/gemma2-tokenizer",llama3:"Xenova/llama3-tokenizer-new",llama2:"Xenova/llama-tokenizer",llama:"Xenova/llama-tokenizer","llama3.2":"unsloth/Llama-3.2-1B-Instruct","cohere-command-r":"Xenova/c4ai-command-r-v01-tokenizer",t5:"Xenova/t5-small","bert-cased":"Xenova/bert-base-cased"};async function Bi(t){let e=_i.get(t);return e||(e=Ti.from_pretrained(t,{cache_dir:Li}),_i.set(t,e)),e}async function Fi(t,e="qwen2.5"){zi[e]&&(e=zi[e]);return(await Bi(e)).encode(t)}async function Pi(t,e="qwen2.5"){return(await Fi(t,e)).length}function Vi(t,e){const n=e?.capitalize??!0;let r=e?.delimiter??/[_-]/g;r instanceof RegExp&&(r.flags.includes("g")||(r=new RegExp(r.source,r.flags+"g")));let s=(t=t.replace(r," ")).split(" ").map((t=>t.trim())).filter(Boolean);return n&&(s=s.map((t=>t.charAt(0).toUpperCase()+t.slice(1)))),t=s.join(" ")}async function Ui(t,e){let n,r=1984,s=!0,i=!1,o=!0,a=Pi,u=!0;if(e&&(n=e.modelId,e.size>=0&&(r=e.size),void 0!==e.corrected&&(s=e.corrected),void 0!==e.completeSentence&&(i=e.completeSentence),void 0!==e.truncLastSection&&(o=e.truncLastSection),"function"==typeof e.countLLMTokens&&(a=e.countLLMTokens),void 0!==e.bySentence&&(u=e.bySentence)),!u)throw new d("truncateToTokenLimit only implemented by sentence","truncateToTokenLimit");if(r>0){let u=await a(t,n);const f=e?.sentences??Ae(t,e);if(u>r)for(u=await a(f.join("\n"),n);u>r&&f.length;){const e=f.pop();if(e){if(u-=await a(e+"\n",n),i||s)t=f.join("\n");else{const n=t.lastIndexOf(e);if(-1===n)throw new c(`Can not find sentence: ${e}`,"truncateContentToTokenLimit");t=t.slice(0,n)}if(u<=1)throw new c(`Can not truncate content to fit within the token limit: ${r}`,"truncateContentToTokenLimit");if(u<=r&&o){const e=f[f.length-1];if(e&&Ce(e)){if(u-await a(e,n)>9){const n=t.lastIndexOf(e);if(-1===n)throw new c(`Can not find sentence: ${e}`,"truncateContentToTokenLimit");t=t.slice(0,n).trimEnd()}}}}else u--}else t=f.join("\n")}if(!t)throw new c(`Can not truncate content to fit within the token limit: ${r}`,"truncateContentToTokenLimit");return t}async function Xi(t,e){let n,r=1984,s=!0,i=Pi,o=!0;if(e&&(n=e.modelId,e.size>=0&&(r=e.size),void 0!==e.truncLastSection&&(s=e.truncLastSection),"function"==typeof e.countLLMTokens&&(i=e.countLLMTokens),void 0!==e.bySentence&&(o=e.bySentence)),!o)throw new d("truncateToTokenLimit only implemented by sentence","truncateToTokenLimit");if(r>0){const e=(t=t.slice()).join("\n");let o=await i(e,n);if(o>r)for(;o>r&&t.length;){const e=t.pop();if(e){if(o-=await i(e,n),o<=1)throw new c(`Can not truncate content to fit within the token limit: ${r}`,"truncateContentToTokenLimit");if(o<=r&&s){const e=t[t.length-1];if(e&&Ce(e)){o-await i(e,n)>9&&t.pop()}}}}}if(!t.length)throw new c(`Empty. Can not truncate content to fit within the token limit: ${r}`,"truncateContentToTokenLimit");return t}async function Di(t,e){let n,r=1984,s=Pi;if(e&&(n=e.modelId,"function"==typeof e.countLLMTokens&&(e.size>=0&&(r=e.size),s=e.countLLMTokens)),r>0){await s(t,n)}}import qi from"fs";async function*Ji(t,e){const n=(e={...e,completeSentence:!1,corrected:!1}).size??1984,r=e.modelId,s=e.metaInfo?.size??(await qi.promises.stat(t)).size;let i=Math.trunc(s/2);if(i<=n){let s=us(await qi.promises.readFile(t));if(i=await Pi(s,r),i<=n)yield s;else do{const t=await Ui(s,{...e,modelId:r,size:n});yield t,s=s.slice(t.length)}while(s)}else{const s=ReadableStream.from(qi.createReadStream(t)).getReader();let i="";for(;;){const{done:t,value:o}=await s.read();if(t)break;i+=us(o);const a=Ae(i,e);let c=a.pop();if(c){const t=i.lastIndexOf(c);c=i.slice(t),i=i.slice(0,t)}if(i.length>=n){const t=await Ui(i,{...e,modelId:r,size:n,sentences:a});i=i.slice(t.length),yield t}for(;i.length>n;){const t=Ae(i,e),s=await Ui(i,{...e,modelId:r,size:n,sentences:t});i=i.slice(s.length),yield s}void 0!==c&&(i+=c)}for(;i;){const t=Ae(i,e),s=await Ui(i,{...e,modelId:r,size:n,sentences:t});i=i.slice(s.length),yield s}}}async function*Gi(t,e){const n=e?.size??1984,r=e?.modelId,s=e?.metaInfo?.size??(await qi.promises.stat(t)).size;let i=Math.trunc(s/2);if(i<=n){let s=us(await qi.promises.readFile(t));if(i=await Pi(s,r),i<=n)yield Ae(s,e);else{let t=Ae(s,e);do{const s=await Xi(t,{...e,modelId:r,size:n});yield s,t=t.slice(s.length)}while(t.length)}}else{const s=ReadableStream.from(qi.createReadStream(t)).getReader();let i="";const o=e?.completeSentence,a=e?.corrected,c=!o&&!a;let u;for(;;){const{done:t,value:o}=await s.read();if(t)break;i+=us(o),u=Ae(i,e);let a=u.pop();if(i.length>=n){const t=await Xi(u,{...e,modelId:r,size:n});i=c?i.slice(t.length):u.join("\n"),u=u.slice(t.length),i=u.join("\n"),yield t}for(;i.length>n;){const t=await Xi(u,{...e,modelId:r,size:n});u=u.slice(t.length),i=u.join("\n"),yield t}a&&u.push(a)}if(u)for(;u.length;){const t=await Xi(u,{...e,modelId:r,size:n});u=u.slice(t.length),yield t}}}async function Ki(t,e){const n=e?.size??1984,r=e?.modelId;let s=Ae(t,e);const i=[];if(await Pi(t,r)<=n)i.push(s);else do{const t=await Xi(s,{...e,modelId:r,size:n});i.push(t),s=s.slice(t.length)}while(s.length);return i}import{YAMLMap as Wi}from"yaml";var Hi=class{constructor(t){t&&Object.assign(this,t)}};function Zi(t,e){const n={tag:t,collection:"map",nodeClass:class extends Wi{constructor(){super(...arguments),this.tag=t}toJSON(t,n){n={...n,mapAsMap:!1};const r=super.toJSON(t,n);return new e(r)}},identify:t=>t instanceof e};return n}function Qi(t,e){let n=t.length===e.length;if(n){const r=Gn(t),s=Gn(e);n=r.every(((t,e)=>t===s[e]))}return n}import{defaultsDeep as Yi,omit as to}from"lodash-es";import eo from"path";var no=".ai";function ro(t,e=["."]){if(eo.isAbsolute(t))return Es.loadSync(t);const n=e.map((e=>Es.loadSync(eo.resolve(e,t)))).filter(Boolean);return Yi({},...n.reverse())}function so(t,e){const n={...process.env,...e};return fe(t,{processEnv:n,parsed:n})}function io(t,e){let n=Es.loadSync(eo.resolve(e.configDir,t));n||(n={configDirs:["$XDG_BIN_HOME",e.configDir,"$HOME"],brainDir:[eo.join(e.dataDir,"brain")],agentDirs:[eo.join(e.dataDir,"agent")],promptDirs:[eo.join(e.dataDir,"prompt")],chatsDir:eo.join(e.dataDir,"log","chats"),inputsDir:eo.join(e.dataDir,"log","inputs")});const r=ao(e);for(const[t,e]of Object.entries(r))n[t]=e;so(n,n);const s=n.configDirs;n.AI_CONFIG_BASENAME&&(t=n.AI_CONFIG_BASENAME);const i=so(ro(t,s),n);return Yi(i,to(n,Object.keys(r)))}function oo(t){return io(".ai",t)}function ao(t){return{XDG_CONFIG_HOME:t.configDir,XDG_DATA_HOME:t.dataDir,XDG_CACHE_HOME:t.cacheDir,XDG_BIN_HOME:eo.dirname(t.options.root)}}function co(t,e){t.startsWith("~")&&(t="$HOME"+t.slice(1));return so(t,e)}var{exit:uo}=process,fo=!1,lo=!1,ho=["SIGINT","SIGTERM","exit"],po=[],wo=(t,e)=>t.forEach((t=>process.once(t,e)));async function mo(t="shutdown",e=0){if(!fo){fo=!0,"number"==typeof t&&(e=t,t="shutdown");for(const e of po)try{await e(t)}catch(t){console.warn(`A shutdown handler failed before completing with: ${t.message||t}`)}return uo(e)}console.warn(`Shutdown already in progress, ignoring [${t}] signal`)}function yo(t){if(lo||go(),!po.some((e=>e===t)))return po.push(t),t}function go(){var t;lo||(lo=!0,process.exit=t=>{fo||mo(void 0,t).then()},wo(ho,(t=3e5,()=>{setTimeout((()=>(console.warn(`Could not close resources gracefully after ${t}ms: forcing shutdown`),uo(1))),t).unref()})),wo(ho,mo))}var bo=class t extends e{static{this.items={}}static{this.aliases={}}static get(t){let e=this.items[t];return!e&&(t=this.aliases[t])&&(e=this.items[t]),e}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),Xs.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();if(this.items[e]=n,n.alias){const t=n.alias;if("string"==typeof t)this.aliases[t]&&m(`Alias ${t} already exists for ${e}`),this.aliases[t]=e;else if(Array.isArray(t))for(const n of t)this.aliases[n]&&m(`Alias ${n} already exists for ${e}`),this.aliases[n]=e}r=n}return r}static unregister(t){const e=this.get(t);if(e&&(delete this.items[t],e.alias)){const t=e.alias;if("string"==typeof t)delete this.aliases[t];else if(Array.isArray(t))for(const e of t)delete this.aliases[e]}return 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),Xs.has(e,t)}isStream(t){return this.stream}},vo={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"},alias:{type:["array","string"]}};bo.defineProperties(bo,vo);var xo=class extends bo{constructor(){super(...arguments),this._emitter=new t,this.description="Return event bus",this.result="event"}get emitter(){return this._emitter}func(){return this.emitter}},Eo=new xo(He);import{Cache as $o}from"secondary-cache";import{LRUCache as ko}from"secondary-cache";var So=$o;function Ao({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 Oo(t,e){let n=bo.get(t);return n||(n=new bo(t,{func:Ao,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 $o(e)),n}var jo=Oo("lrucache"),No=class t extends bo{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},s=["post","put","patch"];let i;e||(e=this.action||"post"),"res"===e&&(e="get"),r.headers&&r.headers["Content-Type"]||!s.includes(e)||(r.headers={"Content-Type":"application/json",...r.headers}),t?.stream&&!r.headers.Connection&&(r.headers.Connection="keep-alive"),n?("string"!=typeof n&&(n=JSON.stringify(n)),n=this.name+"/"+n):n=this.name,r.method=e.toUpperCase(),"get"===e||"delete"===e?i=n+this.getUrlParams(t):(r.body=JSON.stringify(t),i=n),r.headers&&!s.includes(e)&&delete r.headers["Content-Type"];const o=await fetch(`${this.apiRoot}/${i}`,r);if(!o.ok){throw await this.errorFrom(o)}return o}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()}},Co={...x};No.defineProperties(No,Co);var To=class extends No{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))}}},Io={methods:{type:"array",assign(t,e,n,r,s){s?.isExported||e.assignMethods(t)}}};To.defineProperties(To,Io);var Mo=class extends To{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)}},Lo=class extends Mo{constructor(){super(...arguments),this._sseEvents={},this._forwardEvents=new Set,this.name=We,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)}},_o=new Lo(We);import{getAllNames as Ro}from"util-ex";var zo=class t extends bo{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({}){}},Bo={...x};zo.defineProperties(zo,Bo);var Fo=class extends zo{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);Ro(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)}};Fo.defineProperties(Fo,{methods:{type:"array"}});var Po=class extends Fo{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}},Vo=Eo.runSync(),Uo=class t extends Po{constructor(){super(...arguments),this.name=We,this.description="subscribe server sent event",this.result="event",this.depends={[He]:Eo}}static get sse(){return this._sse||(this._sse=new tn),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=Vo.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)||Vo.on(n,t.ebListener)}unforward(e){"string"==typeof e&&(e=[e]);for(const n of e)Vo.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)}},Xo=new Uo(We);function Do(){Eo.register(),jo.register()}export{b 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,T as dateToText,S as formatISO,A as parseISO,O as toDate,I as AITextGenerationFinishReasons,M as AIMessageTypes,L as AIChatRoles,_ as messagesToText,R as PromptTypes,z as PromptTemplateTypes,F as defaultTemplateFormat,P as PromptTemplate,X as PromptExampleSelector,Z as tokenize,$t as parse,Ft as Interpreter,Xt as builtins,qt as EnvironmentEx,Jt as Template,Ht as HfPromptTemplate,Zt as createHfValueFunc,Qt as parseFString,Yt as interpolateFString,ee as FStringPromptTemplate,re as interpolateGolangTemplate,se as GolangPromptTemplate,ae as getEnvVairables,ce as interpolateEnv,ue as expandEnv,fe as expandObjEnv,le as EnvPromptTemplate,he as sortedValues,pe as FewShotPromptTemplate,Ae as splitSentence,Oe as completeSentences,je as concatText,Ne as isSentenceEnding,Ce as isSectionString,Te as isTitleString,Ie as isListItemString,Me as isSepLineString,Le as isPunctuationChar,Re as isLangUsingSpaces,ze as findIndexNonEmptyFrom,Be as removeMarkdownBold,Fe as removeMarkdownItalic,Pe as removeMarkdownBoldAndItalic,Ve as splitParagraph,Ue as truncTo,Xe as wait,We as EventName,He as EventBusName,Ze as backendEventable,qe as EventEmitter,Je as eventable,Ge as states,Ke as wrapEventEmitter,Ye as SSEChannelAlreadyClosedErrCode,tn as SSEChannel,en as isWebStream,nn as RStreamErrCode,rn as ResponseRStreamErrCode,sn as ReadableStreamError,on as getResponseErrorReadableStream,an as createEmptyReadableStream,un as createEventStreamTransformer,fn as trimStartOfStreamHelper,ln as AIStream,hn as readableFromAsyncIterable,pn as createCallbacksTransformer,On as uuid,gn as v1,bn as v4,vn as v5,xn as stringify,En as parse2,$n as validate,kn as version,Sn as NIL,Vn as HashAlgorithm,qn as xxhash32,Jn as xxhash64,Gn as xxhash,Kn as xxhashAsStr,Wn as canonicalize,Zn as base32768,Qn as hashStream,Yn as hash,er as FilenameReservedRegex,nr as WindowsReservedNameRegex,or as filenameReservedRegex,ar as reControlCharsRegex,cr as isValidFilename,ur as isValidFilepath,fr as sanitizeFilename,lr as sanitizeFilepath,hr as getMultiLevelExtname,pr as extNameLevel,mr as isModelNameMatched,yr as getAllEnumKeys,$r as parseObjectArguments,Sr as ObjectArgsToArgsInfo,Ar as simplifyObjectArguments,Or as parseObjectArgumentInfos,jr as ChoiceArgProcessor,Nr as TemplateArgProcessor,Cr as AIArgProcessor,Tr as isQuoted,Ir as isStrWrapped,Mr as ensureQuoted,Lr as quoteStr,Br as parseObjectArgInfo,Fr as parseObjectArgumentsAsArgInfos,Pr as parseCommand,Ur as replaceWithPlaceholder,Xr as restoreFromPlacehoders,Gr as parseJsJson,Kr as parseJsJsonSimpleSync,Zr as filterValidFnScope,Qr as getKeysPath,ts as createEndWithRepetitionDetector,is as fileIsExists,os as loadFileFromPaths,cs as loadTextFromPaths,us as decodeCharset,fs as readFilenamesRecursiveSync,ls as getRealFilepath,hs as hashFile,ps as getFileMetaInfo,ws as getHashAlgoBySize,ds as detectCharset,Es as ConfigFile,As as mimeType,js as registerYamlTag,Ns as parseYaml,Cs as stringifyYaml,Ts as getConfigFileNames,Is as getConfigs,Ms as saveConfigFile,Bs as jsonFilterToWhere,Fs as matchUrlProtocol,Ps as paramsSizeToScaleStr,Vs as scaleStrToParamsSize,Us as jsonToMarkdownStr,Xs as IntSet,Ws as DefaultAsyncSemaphoreCapacity,Qs as BinarySemaphore,Ys as Semaphore,ti as RateLimit,ni as SignalGate,oi as ToolAsyncMultiTaskBit,ai as ToolAsyncCancelableBit,ci as ToolAsyncPriorityBit,ui as AsyncFeatureBits,fi as AsyncFeatures,li as TaskAbortController,hi as CancelableAbility,pi as makeToolFuncCancelable,wi as countRegexMatches,yi as memoize,vi as getPackageDir,Ei as isSubdirectory,$i as hasDirectoryIn,ki as assignDirs,Oi as isRegExp,ji as stripConsoleColor,Ri as LLM_TOKENIZER_NAMES,zi as LLM_TOKENIZER_NAMES_MAP,Bi as getLLMTokenizer,Fi as encodeLLMTokens,Pi as countLLMTokens,Vi as formatTextWithSpace,Ui as truncateToTokenLimit,Xi as truncateToTokenLimitEx,Di as truncateByToken,Ji as readTextFileChunks,Gi as readTextFileChunksEx,Ki as splitChunks,Hi as YamlTypeBaseObject,Zi as createYamlObjectTag,Qi as isSameString,no as DEFAULT_CONFIG_NAME,ro as loadConfigFile,so as expandConfig,io as loadConfig,oo as loadAIConfig,ao as getXDGConfigs,co as expandPath,ho as SHUTDOWN_SIGNALS,mo as shutdown,yo as beforeShutdown,go as initShutdown,y as createAbilityInjector,g as toRegExp,bo as ToolFunc,vo as ToolFuncSchema,No as ClientTools,Co as ClientToolFuncSchema,zo as ServerTools,Bo as ServerToolFuncSchema,xo as EventToolFunc,Eo as event,So as SecondaryCache,Ao as _lrucache,Oo as createLRUCache,jo as lrucache,ko as LRUCache,Mo as ResClientTools,Lo as EventClient,_o as eventClient,Po as ResServerTools,Uo as EventServer,Xo as eventServer,Do as registerCoreTools};
|
package/dist/funcs.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { a5 as EventClient, a4 as EventClientFuncParams, a8 as EventServer, a7 as EventServerFuncParams, _ as EventToolFunc, a0 as SecondaryCache, a1 as _lrucache, a2 as createLRUCache, $ as event, a6 as eventClient, a9 as eventServer, a3 as lrucache, Z as registerCoreTools } from './index-
|
|
1
|
+
export { a5 as EventClient, a4 as EventClientFuncParams, a8 as EventServer, a7 as EventServerFuncParams, _ as EventToolFunc, a0 as SecondaryCache, a1 as _lrucache, a2 as createLRUCache, $ as event, a6 as eventClient, a9 as eventServer, a3 as lrucache, Z as registerCoreTools } from './index-BkwhCK1q.mjs';
|
|
2
2
|
export { LRUCache } from 'secondary-cache';
|
|
3
3
|
import 'events-ex';
|
|
4
4
|
import 'property-manager';
|
package/dist/funcs.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { a5 as EventClient, a4 as EventClientFuncParams, a8 as EventServer, a7 as EventServerFuncParams, _ as EventToolFunc, a0 as SecondaryCache, a1 as _lrucache, a2 as createLRUCache, $ as event, a6 as eventClient, a9 as eventServer, a3 as lrucache, Z as registerCoreTools } from './index-
|
|
1
|
+
export { a5 as EventClient, a4 as EventClientFuncParams, a8 as EventServer, a7 as EventServerFuncParams, _ as EventToolFunc, a0 as SecondaryCache, a1 as _lrucache, a2 as createLRUCache, $ as event, a6 as eventClient, a9 as eventServer, a3 as lrucache, Z as registerCoreTools } from './index-BkwhCK1q.js';
|
|
2
2
|
export { LRUCache } from 'secondary-cache';
|
|
3
3
|
import 'events-ex';
|
|
4
4
|
import 'property-manager';
|