@isdk/ai-tool 0.6.0 → 0.7.1
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/README.cn.md +103 -237
- package/README.md +101 -186
- package/dist/chunk-4XRPAC7C.mjs +1 -0
- package/dist/chunk-VIG2GB47.mjs +1 -1
- package/dist/funcs.d.mts +1 -1
- package/dist/funcs.d.ts +1 -1
- package/dist/funcs.js +1 -1
- package/dist/funcs.mjs +1 -1
- package/dist/index-DEUnmyUq.d.mts +1792 -0
- package/dist/index-DEUnmyUq.d.ts +1792 -0
- package/dist/index.d.mts +1068 -9
- package/dist/index.d.ts +1068 -9
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/test/util.js +1 -1
- package/docs/api/README.md +165 -0
- package/docs/{_media → api/_media}/CONTRIBUTING.md +3 -3
- package/docs/api/_media/pubsub.md +326 -0
- package/docs/api/_media/server_client_tools.md +88 -0
- package/docs/api/_media/toolFunc.md +183 -0
- package/docs/api/_media/transport.md +137 -0
- package/docs/{classes → api/classes}/AbortError.md +139 -54
- package/docs/api/classes/AlreadyExistsError.md +431 -0
- package/docs/api/classes/BaseError.md +440 -0
- package/docs/{classes → api/classes}/BinarySemaphore.md +25 -25
- package/docs/{classes → api/classes}/CancelableAbility.md +25 -25
- package/docs/api/classes/ClientToolTransport.md +310 -0
- package/docs/{classes → api/classes}/ClientTools.md +646 -180
- package/docs/{classes → api/classes}/CommonError.md +139 -54
- package/docs/{classes → api/classes}/ConfigFile.md +54 -5
- package/docs/{classes → api/classes}/EnvPromptTemplate.md +94 -48
- package/docs/{classes → api/classes}/EventClient.md +742 -234
- package/docs/{classes → api/classes}/EventEmitter.md +12 -12
- package/docs/{classes → api/classes}/EventServer.md +670 -209
- package/docs/{classes → api/classes}/EventToolFunc.md +561 -109
- package/docs/{classes → api/classes}/FStringPromptTemplate.md +94 -48
- package/docs/{classes → api/classes}/FewShotPromptTemplate.md +100 -52
- package/docs/{classes → api/classes}/GolangPromptTemplate.md +99 -53
- package/docs/api/classes/HttpClientToolTransport.md +324 -0
- package/docs/api/classes/HttpServerToolTransport.md +332 -0
- package/docs/{classes → api/classes}/IntSet.md +12 -12
- package/docs/{classes → api/classes}/LRUCache.md +26 -26
- package/docs/api/classes/NotFoundError.md +431 -0
- package/docs/api/classes/NotImplementationError.md +431 -0
- package/docs/{classes → api/classes}/PromptExampleSelector.md +9 -9
- package/docs/{classes → api/classes}/PromptTemplate.md +91 -47
- package/docs/api/classes/ReadableStreamError.md +451 -0
- package/docs/api/classes/ResClientTools.md +3365 -0
- package/docs/api/classes/ResServerTools.md +3342 -0
- package/docs/api/classes/RpcMethodsClientTool.md +3275 -0
- package/docs/api/classes/RpcMethodsServerTool.md +3224 -0
- package/docs/api/classes/SSEChannel.md +272 -0
- package/docs/{classes → api/classes}/Semaphore.md +26 -26
- package/docs/api/classes/ServerToolTransport.md +323 -0
- package/docs/{classes → api/classes}/ServerTools.md +583 -120
- package/docs/{classes → api/classes}/SignalGate.md +9 -9
- package/docs/api/classes/SseClientPubSubTransport.md +92 -0
- package/docs/api/classes/SseServerPubSubTransport.md +234 -0
- package/docs/{classes → api/classes}/TaskAbortController.md +9 -9
- package/docs/api/classes/ToolFunc.md +2665 -0
- package/docs/api/classes/ToolTransport.md +143 -0
- package/docs/api/classes/YamlTypeBaseObject.md +31 -0
- package/docs/api/enumerations/AsyncFeatureBits.md +33 -0
- package/docs/api/enumerations/AsyncFeatures.md +33 -0
- package/docs/api/enumerations/ErrorCode.md +177 -0
- package/docs/api/enumerations/HashAlgorithm.md +97 -0
- package/docs/{functions → api/functions}/AIArgProcessor.md +1 -1
- package/docs/{functions → api/functions}/AIStream.md +1 -1
- package/docs/{functions → api/functions}/ChoiceArgProcessor.md +1 -1
- package/docs/api/functions/DefaultDateFormat.md +21 -0
- package/docs/{functions → api/functions}/ObjectArgsToArgsInfo.md +1 -1
- package/docs/{functions → api/functions}/RateLimit.md +1 -1
- package/docs/{functions → api/functions}/TemplateArgProcessor.md +1 -1
- package/docs/api/functions/addDate.md +71 -0
- package/docs/{functions → api/functions}/assignDirs.md +1 -1
- package/docs/{functions → api/functions}/backendEventable.md +1 -1
- package/docs/{functions → api/functions}/beforeShutdown.md +1 -1
- package/docs/api/functions/calcPerplexity.md +60 -0
- package/docs/api/functions/calcPerplexitySimple.md +42 -0
- package/docs/api/functions/canonicalize.md +33 -0
- package/docs/{functions → api/functions}/completeSentences.md +1 -1
- package/docs/{functions → api/functions}/concatText.md +1 -1
- package/docs/{functions → api/functions}/countLLMTokens.md +1 -1
- package/docs/{functions → api/functions}/countRegexMatches.md +1 -1
- package/docs/{functions → api/functions}/createAbilityInjector.md +4 -4
- package/docs/{functions → api/functions}/createCallbacksTransformer.md +1 -1
- package/docs/{functions → api/functions}/createEmptyReadableStream.md +1 -1
- package/docs/{functions → api/functions}/createEndWithRepetitionDetector.md +1 -1
- package/docs/{functions → api/functions}/createError.md +1 -1
- package/docs/{functions → api/functions}/createEventStreamTransformer.md +1 -1
- package/docs/{functions → api/functions}/createHfValueFunc.md +1 -1
- package/docs/{functions → api/functions}/createLRUCache.md +1 -1
- package/docs/{functions → api/functions}/createYamlObjectTag.md +1 -1
- package/docs/{functions → api/functions}/dateToText.md +1 -1
- package/docs/{functions → api/functions}/decodeCharset.md +1 -1
- package/docs/api/functions/defaultsWithConcat.md +74 -0
- package/docs/{functions → api/functions}/detectCharset.md +1 -1
- package/docs/{functions → api/functions}/encodeLLMTokens.md +1 -1
- package/docs/{functions → api/functions}/ensureQuoted.md +1 -1
- package/docs/{functions → api/functions}/eventable.md +1 -1
- package/docs/{functions → api/functions}/expandConfig.md +1 -1
- package/docs/{functions → api/functions}/expandEnv.md +1 -1
- package/docs/{functions → api/functions}/expandObjEnv.md +1 -1
- package/docs/{functions → api/functions}/expandPath.md +1 -1
- package/docs/api/functions/expandPathInObject.md +29 -0
- package/docs/api/functions/expandPaths.md +25 -0
- package/docs/{functions → api/functions}/extNameLevel.md +1 -1
- package/docs/{functions → api/functions}/fileIsExists.md +1 -1
- package/docs/{functions → api/functions}/filterValidFnScope.md +1 -1
- package/docs/{functions → api/functions}/findIndexNonEmptyFrom.md +1 -1
- package/docs/{functions → api/functions}/findPort.md +1 -1
- package/docs/{functions → api/functions}/formatISO.md +1 -1
- package/docs/{functions → api/functions}/formatTextWithSpace.md +1 -1
- package/docs/api/functions/funcGetMeta.md +27 -0
- package/docs/api/functions/funcWithMeta.md +41 -0
- package/docs/api/functions/genUrlParamsStr.md +27 -0
- package/docs/{functions → api/functions}/getAllEnumKeys.md +1 -1
- package/docs/{functions → api/functions}/getConfigFileNames.md +1 -1
- package/docs/{functions → api/functions}/getConfigs.md +1 -1
- package/docs/{functions → api/functions}/getEnvVairables.md +1 -1
- package/docs/{functions → api/functions}/getFileMetaInfo.md +1 -1
- package/docs/{functions → api/functions}/getHashAlgoBySize.md +1 -1
- package/docs/{functions → api/functions}/getKeysPath.md +1 -1
- package/docs/{functions → api/functions}/getLLMTokenizer.md +1 -1
- package/docs/{functions → api/functions}/getMultiLevelExtname.md +1 -1
- package/docs/{functions → api/functions}/getPackageDir.md +1 -1
- package/docs/{functions → api/functions}/getRealFilepath.md +1 -1
- package/docs/{functions → api/functions}/getResponseErrorReadableStream.md +1 -1
- package/docs/{functions → api/functions}/getXDGConfigs.md +1 -1
- package/docs/{functions → api/functions}/hasDirectoryIn.md +1 -1
- package/docs/{functions → api/functions}/hash.md +1 -1
- package/docs/{functions → api/functions}/hashFile.md +1 -1
- package/docs/api/functions/hashObject.md +25 -0
- package/docs/{functions → api/functions}/hashStream.md +1 -1
- package/docs/api/functions/initShutdown.md +15 -0
- package/docs/{functions → api/functions}/isLangUsingSpaces.md +1 -1
- package/docs/{functions → api/functions}/isListItemString.md +1 -1
- package/docs/{functions → api/functions}/isModelNameMatched.md +1 -1
- package/docs/{functions → api/functions}/isPunctuationChar.md +1 -1
- package/docs/{functions → api/functions}/isQuoted.md +1 -1
- package/docs/{functions → api/functions}/isRegExp.md +1 -1
- package/docs/{functions → api/functions}/isSameString.md +1 -1
- package/docs/{functions → api/functions}/isSectionString.md +1 -1
- package/docs/{functions → api/functions}/isSentenceEnding.md +1 -1
- package/docs/{functions → api/functions}/isSepLineString.md +1 -1
- package/docs/{functions → api/functions}/isStrWrapped.md +1 -1
- package/docs/{functions → api/functions}/isSubdirectory.md +2 -2
- package/docs/{functions → api/functions}/isTitleString.md +1 -1
- package/docs/{functions → api/functions}/isValidFilename.md +1 -1
- package/docs/{functions → api/functions}/isValidFilepath.md +1 -1
- package/docs/{functions → api/functions}/isWebStream.md +1 -1
- package/docs/api/functions/joinSplitWords.md +46 -0
- package/docs/{functions → api/functions}/jsonFilterToWhere.md +1 -1
- package/docs/{functions → api/functions}/jsonToMarkdownStr.md +9 -1
- package/docs/{functions → api/functions}/loadAIConfig.md +1 -1
- package/docs/{functions → api/functions}/loadConfig.md +1 -1
- package/docs/{functions → api/functions}/loadConfigFile.md +1 -1
- package/docs/{functions → api/functions}/loadFileFromPaths.md +1 -1
- package/docs/{functions → api/functions}/loadTextFromPaths.md +1 -1
- package/docs/{functions → api/functions}/lrucache.md +1 -1
- package/docs/{functions → api/functions}/makeToolFuncCancelable.md +1 -1
- package/docs/{functions → api/functions}/matchUrlProtocol.md +1 -1
- package/docs/{functions → api/functions}/memoize.md +1 -1
- package/docs/api/functions/mergeArray.md +57 -0
- package/docs/{functions → api/functions}/messagesToText.md +1 -1
- package/docs/api/functions/normalizePath.md +21 -0
- package/docs/{functions → api/functions}/paramsSizeToScaleStr.md +1 -1
- package/docs/{functions → api/functions}/parseCommand.md +1 -1
- package/docs/{functions → api/functions}/parseDateFormat.md +1 -1
- package/docs/{functions → api/functions}/parseISO.md +1 -1
- package/docs/{functions → api/functions}/parseJsJson.md +1 -1
- package/docs/{functions → api/functions}/parseJsJsonSimpleSync.md +1 -1
- package/docs/{functions → api/functions}/parseObjectArgInfo.md +1 -1
- package/docs/{functions → api/functions}/parseObjectArgumentInfos.md +1 -1
- package/docs/{functions → api/functions}/parseObjectArguments.md +1 -1
- package/docs/{functions → api/functions}/parseObjectArgumentsAsArgInfos.md +1 -1
- package/docs/{functions → api/functions}/parseYaml.md +1 -1
- package/docs/api/functions/pruneSubdirectories.md +35 -0
- package/docs/api/functions/pruneSubdirectoriesInPlace.md +38 -0
- package/docs/{functions → api/functions}/quoteStr.md +1 -1
- package/docs/{functions → api/functions}/readFilenamesRecursiveSync.md +1 -1
- package/docs/{functions → api/functions}/readTextFileChunks.md +1 -1
- package/docs/{functions → api/functions}/readTextFileChunksEx.md +1 -1
- package/docs/{functions → api/functions}/readableFromAsyncIterable.md +1 -1
- package/docs/{functions → api/functions}/registerCoreTools.md +1 -1
- package/docs/{functions → api/functions}/registerYamlTag.md +1 -1
- package/docs/{functions → api/functions}/removeMarkdownBold.md +1 -1
- package/docs/{functions → api/functions}/removeMarkdownBoldAndItalic.md +1 -1
- package/docs/{functions → api/functions}/removeMarkdownItalic.md +1 -1
- package/docs/{functions → api/functions}/replaceWithPlaceholder.md +1 -1
- package/docs/{functions → api/functions}/restoreFromPlacehoders.md +1 -1
- package/docs/{functions → api/functions}/sanitizeFilename.md +1 -1
- package/docs/{functions → api/functions}/sanitizeFilepath.md +1 -1
- package/docs/{functions → api/functions}/saveConfigFile.md +1 -1
- package/docs/{functions → api/functions}/scaleStrToParamsSize.md +1 -1
- package/docs/{functions → api/functions}/shutdown.md +1 -1
- package/docs/{functions → api/functions}/simplifyObjectArguments.md +1 -1
- package/docs/api/functions/sleep.md +36 -0
- package/docs/{functions → api/functions}/sortedValues.md +1 -1
- package/docs/{functions → api/functions}/splitChunks.md +1 -1
- package/docs/{functions → api/functions}/splitParagraph.md +1 -1
- package/docs/{functions → api/functions}/splitSentence.md +1 -1
- package/docs/api/functions/splitWords.md +42 -0
- package/docs/{functions → api/functions}/stringifyYaml.md +1 -1
- package/docs/{functions → api/functions}/stripConsoleColor.md +1 -1
- package/docs/{functions → api/functions}/textToDate.md +1 -1
- package/docs/{functions → api/functions}/throwError.md +3 -3
- package/docs/{functions → api/functions}/toDate.md +1 -1
- package/docs/{functions → api/functions}/toDateTime.md +1 -1
- package/docs/{functions → api/functions}/toRegExp.md +1 -1
- package/docs/{functions → api/functions}/trimStartOfStreamHelper.md +1 -1
- package/docs/{functions → api/functions}/truncTo.md +1 -1
- package/docs/{functions → api/functions}/truncateByToken.md +1 -1
- package/docs/{functions → api/functions}/truncateToTokenLimit.md +1 -1
- package/docs/{functions → api/functions}/truncateToTokenLimitEx.md +1 -1
- package/docs/{functions → api/functions}/uuid.md +1 -1
- package/docs/{functions → api/functions}/uuidParse.md +1 -1
- package/docs/{functions → api/functions}/uuidStringify.md +1 -1
- package/docs/{functions → api/functions}/uuidValidate.md +1 -1
- package/docs/{functions → api/functions}/uuidVersion.md +1 -1
- package/docs/{functions → api/functions}/uuidv1.md +9 -5
- package/docs/{functions → api/functions}/uuidv4.md +9 -5
- package/docs/{functions → api/functions}/uuidv5.md +9 -5
- package/docs/api/functions/wait.md +45 -0
- package/docs/{functions → api/functions}/wrapEventEmitter.md +1 -1
- package/docs/{functions → api/functions}/xxhash.md +1 -1
- package/docs/{functions → api/functions}/xxhash32.md +1 -1
- package/docs/{functions → api/functions}/xxhash64.md +1 -1
- package/docs/{functions → api/functions}/xxhashAsStr.md +1 -1
- package/docs/api/functions/yieldExec.md +27 -0
- package/docs/{globals.md → api/globals.md} +50 -1
- package/docs/api/interfaces/AIChatAssistantMessageParam.md +129 -0
- package/docs/api/interfaces/AIChatContentPartImage.md +29 -0
- package/docs/api/interfaces/AIChatContentPartText.md +25 -0
- package/docs/api/interfaces/AIChatMessageParamBase.md +68 -0
- package/docs/api/interfaces/AIChatMessageToolCall.md +41 -0
- package/docs/{interfaces → api/interfaces}/AIChatSystemMessageParam.md +9 -9
- package/docs/api/interfaces/AIChatToolChoiceFuncObject.md +37 -0
- package/docs/api/interfaces/AIChatToolChoiceObject.md +25 -0
- package/docs/api/interfaces/AIChatToolFunc.md +41 -0
- package/docs/api/interfaces/AIChatToolFuncParam.md +37 -0
- package/docs/api/interfaces/AIChatToolMessageParam.md +113 -0
- package/docs/api/interfaces/AIChatToolParam.md +25 -0
- package/docs/api/interfaces/AIChatToolTypeObject.md +17 -0
- package/docs/api/interfaces/AIChatUserMessageParam.md +137 -0
- package/docs/api/interfaces/AIChoiceConfig.md +65 -0
- package/docs/api/interfaces/AIResult.md +65 -0
- package/docs/{interfaces → api/interfaces}/AIStreamParser.md +2 -2
- package/docs/api/interfaces/AIStreamParserOptions.md +21 -0
- package/docs/api/interfaces/BaseFunc.md +299 -0
- package/docs/api/interfaces/BaseFuncItem.md +221 -0
- package/docs/api/interfaces/BinarySemaphoreAcquireOptions.md +25 -0
- package/docs/api/interfaces/BinarySemaphoreOptions.md +57 -0
- package/docs/api/interfaces/BinarySemaphoreReleaseOptions.md +25 -0
- package/docs/api/interfaces/BinarySemaphoreReleaserFunc.md +37 -0
- package/docs/api/interfaces/CancelableAbilityOptions.md +113 -0
- package/docs/api/interfaces/ClientFuncItem.md +326 -0
- package/docs/api/interfaces/EventClientFuncParams.md +51 -0
- package/docs/api/interfaces/EventServerFuncParams.md +73 -0
- package/docs/{interfaces → api/interfaces}/FewShotPromptTemplateOptions.md +24 -12
- package/docs/api/interfaces/FuncItem.md +281 -0
- package/docs/api/interfaces/FuncParam.md +51 -0
- package/docs/api/interfaces/FuncParams.md +28 -0
- package/docs/api/interfaces/Funcs.md +15 -0
- package/docs/api/interfaces/HashAlgoParams.md +33 -0
- package/docs/api/interfaces/IClientToolTransport.md +155 -0
- package/docs/api/interfaces/IFileMetaInfo.md +65 -0
- package/docs/api/interfaces/IPubSubClientTransport.md +70 -0
- package/docs/api/interfaces/IPubSubServerTransport.md +241 -0
- package/docs/api/interfaces/IReadTextFileChunksOptions.md +143 -0
- package/docs/api/interfaces/IServerToolTransport.md +159 -0
- package/docs/api/interfaces/IToolTransport.md +73 -0
- package/docs/api/interfaces/ITruncateToTokenLimitOptions.md +99 -0
- package/docs/api/interfaces/JsonFilter.md +13 -0
- package/docs/api/interfaces/ParseObjectArgumentOptions.md +89 -0
- package/docs/api/interfaces/ProbabilityItem.md +41 -0
- package/docs/api/interfaces/PromptExampleSelectorOptions.md +34 -0
- package/docs/{interfaces → api/interfaces}/PromptTemplateOptions.md +15 -7
- package/docs/api/interfaces/PubSubClient.md +27 -0
- package/docs/api/interfaces/PubSubClientStream.md +196 -0
- package/docs/api/interfaces/PubSubServerSession.md +103 -0
- package/docs/api/interfaces/RemoteFuncItem.md +316 -0
- package/docs/api/interfaces/ReplacePlacehoderOptions.md +41 -0
- package/docs/api/interfaces/ResClientFuncParams.md +37 -0
- package/docs/api/interfaces/ResServerFuncParams.md +77 -0
- package/docs/api/interfaces/RpcMethodsClientFuncParams.md +25 -0
- package/docs/api/interfaces/RpcMethodsServerFuncParams.md +61 -0
- package/docs/api/interfaces/SanitizeFilenameOptions.md +25 -0
- package/docs/api/interfaces/SectionStringOptions.md +25 -0
- package/docs/api/interfaces/SemaphoreOptions.md +89 -0
- package/docs/api/interfaces/SemaphoreTaskItem.md +73 -0
- package/docs/api/interfaces/ServerFuncItem.md +339 -0
- package/docs/api/interfaces/ServerFuncParams.md +42 -0
- package/docs/api/interfaces/SplitSentenceOptions.md +41 -0
- package/docs/{interfaces → api/interfaces}/StreamCallbacksAndOptions.md +5 -5
- package/docs/{interfaces → api/interfaces}/TaskAbortControllers.md +1 -1
- package/docs/{interfaces → api/interfaces}/TaskPromise.md +6 -6
- package/docs/api/interfaces/ToolFuncPackage.md +57 -0
- package/docs/{namespaces → api/namespaces}/EventStates/variables/ABORT.md +1 -1
- package/docs/{namespaces → api/namespaces}/EventStates/variables/CONTINUE.md +1 -1
- package/docs/{namespaces → api/namespaces}/EventStates/variables/DONE.md +1 -1
- package/docs/{namespaces → api/namespaces}/EventStates/variables/STOPPED.md +1 -1
- package/docs/{namespaces → api/namespaces}/uuidv5/variables/DNS.md +1 -1
- package/docs/{namespaces → api/namespaces}/uuidv5/variables/URL.md +1 -1
- package/docs/{type-aliases → api/type-aliases}/AIChatContentPart.md +1 -1
- package/docs/{type-aliases → api/type-aliases}/AIChatMessageParam.md +1 -1
- package/docs/{type-aliases → api/type-aliases}/AIChatRole.md +1 -1
- package/docs/{type-aliases → api/type-aliases}/AIChatToolChoiceParam.md +1 -1
- package/docs/{type-aliases → api/type-aliases}/AIMessageType.md +1 -1
- package/docs/api/type-aliases/AIModelNameRule.md +14 -0
- package/docs/api/type-aliases/AIModelNameRuleFn.md +28 -0
- package/docs/api/type-aliases/AIModelNameRules.md +13 -0
- package/docs/{type-aliases → api/type-aliases}/AITextGenerationFinishReason.md +1 -1
- package/docs/api/type-aliases/ActionName.md +13 -0
- package/docs/api/type-aliases/ArrayMergeWay.md +11 -0
- package/docs/api/type-aliases/AsyncTaskId.md +11 -0
- package/docs/{type-aliases → api/type-aliases}/BeforeShutdownListener.md +1 -1
- package/docs/{type-aliases → api/type-aliases}/EventErrorListenerFn.md +1 -1
- package/docs/{type-aliases → api/type-aliases}/EventListenerFn.md +1 -1
- package/docs/api/type-aliases/FuncParamType.md +13 -0
- package/docs/{type-aliases → api/type-aliases}/PromptExamples.md +1 -1
- package/docs/api/type-aliases/PubSubClientId.md +14 -0
- package/docs/api/type-aliases/PubSubCtx.md +37 -0
- package/docs/api/type-aliases/RpcMethodHandler.md +34 -0
- package/docs/{type-aliases → api/type-aliases}/SemaphoreIsReadyFuncType.md +1 -1
- package/docs/api/type-aliases/TFunc.md +33 -0
- package/docs/{variables → api/variables}/AIChatRoles.md +1 -1
- package/docs/{variables → api/variables}/AIMessageTypes.md +1 -1
- package/docs/{variables → api/variables}/AITextGenerationFinishReasons.md +1 -1
- package/docs/{variables → api/variables}/AbortErrorCode.md +1 -1
- package/docs/api/variables/ActionNames.md +13 -0
- package/docs/{variables → api/variables}/AlreadyExistsErrorCode.md +1 -1
- package/docs/api/variables/ArrayMergeWay.md +25 -0
- package/docs/api/variables/ArrayMergeWaySymbol.md +11 -0
- package/docs/api/variables/ClientToolFuncSchema.md +83 -0
- package/docs/{variables → api/variables}/DEFAULT_CONFIG_NAME.md +1 -1
- package/docs/{variables → api/variables}/DefaultAsyncSemaphoreCapacity.md +1 -1
- package/docs/api/variables/EventBusName.md +11 -0
- package/docs/api/variables/EventName.md +11 -0
- package/docs/{variables → api/variables}/FilenameReservedRegex.md +1 -1
- package/docs/api/variables/FuncMetaSymbol.md +15 -0
- package/docs/{variables → api/variables}/InternalErrorCode.md +1 -1
- package/docs/{variables → api/variables}/LLM_TOKENIZER_NAMES.md +1 -1
- package/docs/{variables → api/variables}/LLM_TOKENIZER_NAMES_MAP.md +1 -1
- package/docs/{variables → api/variables}/NotFoundErrorCode.md +1 -1
- package/docs/{variables → api/variables}/NotImplementedErrorCode.md +1 -1
- package/docs/api/variables/PASSING_SCORE.md +13 -0
- package/docs/api/variables/RStreamErrCode.md +11 -0
- package/docs/api/variables/RemoteToolFuncSchema.md +84 -0
- package/docs/api/variables/ResponseRStreamErrCode.md +11 -0
- package/docs/api/variables/RpcMethodsClientToolSchema.md +49 -0
- package/docs/api/variables/RpcMethodsServerToolSchema.md +21 -0
- package/docs/{variables → api/variables}/SHUTDOWN_SIGNALS.md +1 -1
- package/docs/{variables → api/variables}/SSEChannelAlreadyClosedErrCode.md +1 -1
- package/docs/api/variables/SecondaryCache.md +11 -0
- package/docs/api/variables/ServerToolFuncSchema.md +83 -0
- package/docs/api/variables/StrangeHumanName.md +11 -0
- package/docs/api/variables/ToolAsyncCancelableBit.md +11 -0
- package/docs/api/variables/ToolAsyncMultiTaskBit.md +11 -0
- package/docs/api/variables/ToolAsyncPriorityBit.md +11 -0
- package/docs/{variables → api/variables}/ToolFuncSchema.md +14 -1
- package/docs/{variables → api/variables}/WindowsReservedNameRegex.md +1 -1
- package/docs/api/variables/base32768.md +11 -0
- package/docs/{variables → api/variables}/defaultTemplateFormat.md +1 -1
- package/docs/api/variables/event.md +11 -0
- package/docs/api/variables/eventClient.md +11 -0
- package/docs/api/variables/eventServer.md +11 -0
- package/docs/api/variables/lrucache.md +11 -0
- package/docs/{variables → api/variables}/mimeType.md +1 -1
- package/docs/{variables → api/variables}/uuidNIL.md +1 -1
- package/docs/pubsub.md +326 -0
- package/docs/server_client_tools.md +88 -0
- package/docs/toolFunc.md +183 -0
- package/docs/transport.md +137 -0
- package/package.json +37 -39
- package/dist/chunk-OYDBRUZJ.mjs +0 -1
- package/dist/index-BkwhCK1q.d.mts +0 -899
- package/dist/index-BkwhCK1q.d.ts +0 -899
- package/docs/README.md +0 -250
- package/docs/classes/AlreadyExistsError.md +0 -346
- package/docs/classes/BaseError.md +0 -359
- package/docs/classes/NotFoundError.md +0 -346
- package/docs/classes/NotImplementationError.md +0 -346
- package/docs/classes/ReadableStreamError.md +0 -366
- package/docs/classes/ResClientTools.md +0 -2451
- package/docs/classes/ResServerTools.md +0 -2427
- package/docs/classes/SSEChannel.md +0 -270
- package/docs/classes/ToolFunc.md +0 -2201
- package/docs/classes/YamlTypeBaseObject.md +0 -31
- package/docs/enumerations/AsyncFeatureBits.md +0 -33
- package/docs/enumerations/AsyncFeatures.md +0 -33
- package/docs/enumerations/ErrorCode.md +0 -177
- package/docs/enumerations/HashAlgorithm.md +0 -97
- package/docs/functions/canonicalize.md +0 -21
- package/docs/functions/initShutdown.md +0 -15
- package/docs/functions/wait.md +0 -21
- package/docs/interfaces/AIChatAssistantMessageParam.md +0 -129
- package/docs/interfaces/AIChatContentPartImage.md +0 -29
- package/docs/interfaces/AIChatContentPartText.md +0 -25
- package/docs/interfaces/AIChatMessageParamBase.md +0 -68
- package/docs/interfaces/AIChatMessageToolCall.md +0 -41
- package/docs/interfaces/AIChatToolChoiceFuncObject.md +0 -37
- package/docs/interfaces/AIChatToolChoiceObject.md +0 -25
- package/docs/interfaces/AIChatToolFunc.md +0 -41
- package/docs/interfaces/AIChatToolFuncParam.md +0 -37
- package/docs/interfaces/AIChatToolMessageParam.md +0 -113
- package/docs/interfaces/AIChatToolParam.md +0 -25
- package/docs/interfaces/AIChatToolTypeObject.md +0 -17
- package/docs/interfaces/AIChatUserMessageParam.md +0 -137
- package/docs/interfaces/AIChoiceConfig.md +0 -65
- package/docs/interfaces/AIResult.md +0 -65
- package/docs/interfaces/AIStreamParserOptions.md +0 -21
- package/docs/interfaces/BaseFunc.md +0 -157
- package/docs/interfaces/BaseFuncItem.md +0 -101
- package/docs/interfaces/BinarySemaphoreAcquireOptions.md +0 -25
- package/docs/interfaces/BinarySemaphoreOptions.md +0 -57
- package/docs/interfaces/BinarySemaphoreReleaseOptions.md +0 -25
- package/docs/interfaces/BinarySemaphoreReleaserFunc.md +0 -37
- package/docs/interfaces/CancelableAbilityOptions.md +0 -113
- package/docs/interfaces/ClientFuncItem.md +0 -175
- package/docs/interfaces/EventClientFuncParams.md +0 -51
- package/docs/interfaces/EventServerFuncParams.md +0 -67
- package/docs/interfaces/FuncItem.md +0 -143
- package/docs/interfaces/FuncParam.md +0 -61
- package/docs/interfaces/FuncParams.md +0 -13
- package/docs/interfaces/Funcs.md +0 -13
- package/docs/interfaces/HashAlgoParams.md +0 -33
- package/docs/interfaces/IFileMetaInfo.md +0 -65
- package/docs/interfaces/IReadTextFileChunksOptions.md +0 -143
- package/docs/interfaces/ITruncateToTokenLimitOptions.md +0 -99
- package/docs/interfaces/JsonFilter.md +0 -13
- package/docs/interfaces/ParseObjectArgumentOptions.md +0 -89
- package/docs/interfaces/PromptExampleSelectorOptions.md +0 -34
- package/docs/interfaces/RemoteFuncItem.md +0 -164
- package/docs/interfaces/ReplacePlacehoderOptions.md +0 -41
- package/docs/interfaces/ResClientFuncParams.md +0 -37
- package/docs/interfaces/ResServerFuncParams.md +0 -69
- package/docs/interfaces/SanitizeFilenameOptions.md +0 -25
- package/docs/interfaces/SectionStringOptions.md +0 -25
- package/docs/interfaces/SemaphoreOptions.md +0 -89
- package/docs/interfaces/SemaphoreTaskItem.md +0 -73
- package/docs/interfaces/ServerFuncItem.md +0 -183
- package/docs/interfaces/ServerFuncParams.md +0 -35
- package/docs/interfaces/SplitSentenceOptions.md +0 -41
- package/docs/interfaces/ToolFuncPackage.md +0 -47
- package/docs/type-aliases/AIModelNameRule.md +0 -11
- package/docs/type-aliases/AIModelNameRuleFn.md +0 -21
- package/docs/type-aliases/AIModelNameRules.md +0 -11
- package/docs/type-aliases/ActionName.md +0 -11
- package/docs/type-aliases/AsyncTaskId.md +0 -11
- package/docs/type-aliases/FuncParamType.md +0 -11
- package/docs/type-aliases/TFunc.md +0 -25
- package/docs/variables/ActionNames.md +0 -11
- package/docs/variables/ClientToolFuncSchema.md +0 -101
- package/docs/variables/EventBusName.md +0 -11
- package/docs/variables/EventName.md +0 -11
- package/docs/variables/PASSING_SCORE.md +0 -11
- package/docs/variables/RStreamErrCode.md +0 -11
- package/docs/variables/RemoteToolFuncSchema.md +0 -101
- package/docs/variables/ResponseRStreamErrCode.md +0 -11
- package/docs/variables/SecondaryCache.md +0 -11
- package/docs/variables/ServerToolFuncSchema.md +0 -101
- package/docs/variables/ToolAsyncCancelableBit.md +0 -11
- package/docs/variables/ToolAsyncMultiTaskBit.md +0 -11
- package/docs/variables/ToolAsyncPriorityBit.md +0 -11
- package/docs/variables/base32768.md +0 -11
- package/docs/variables/event.md +0 -11
- package/docs/variables/eventClient.md +0 -11
- package/docs/variables/eventServer.md +0 -11
- package/docs/variables/lrucache.md +0 -11
- /package/docs/{_media → api/_media}/LICENSE-MIT +0 -0
- /package/docs/{namespaces → api/namespaces}/EventStates/README.md +0 -0
- /package/docs/{namespaces → api/namespaces}/uuidv5/README.md +0 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# `ToolFunc`: A Framework for Reusable Functions
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
`ToolFunc` is a robust framework for creating, managing, and executing reusable functions within a JavaScript/TypeScript application. It provides a structured way to define functions with rich metadata, manage dependencies, and access them globally through a static registry. This system is designed to make functions self-documenting, modular, and easily discoverable, which is ideal for building complex tools, AI agent functions, or extensible plugin systems.
|
|
6
|
+
|
|
7
|
+
## Key Features
|
|
8
|
+
|
|
9
|
+
- **Rich Metadata**: Define functions with names, descriptions, titles, tags, and detailed parameter information.
|
|
10
|
+
- **Static Registry**: A global registry allows any part of an application to access and execute functions by name without needing a direct instance.
|
|
11
|
+
- **Dependency Management**: Declare dependencies on other `ToolFunc` instances, which are automatically registered when the parent function is registered.
|
|
12
|
+
- **Lifecycle Hooks**: A `setup` hook provides a way to run initialization logic when a `ToolFunc` instance is created.
|
|
13
|
+
- **Flexible Parameter Handling**: Supports both named-parameter objects and positional arguments for function execution.
|
|
14
|
+
- Note: All `ToolFunc` parameters are object-based, not positional.
|
|
15
|
+
- **Aliasing and Tagging**: Assign aliases for alternative naming and tags for grouping and querying related functions.
|
|
16
|
+
- **Streaming & Async Support**: Built-in support for functions that can stream output and declare asynchronous capabilities like cancellation.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Core Concepts
|
|
21
|
+
|
|
22
|
+
### Design Philosophy: Static vs. Instance
|
|
23
|
+
|
|
24
|
+
A key design principle in `ToolFunc` is the separation of roles between the static class and its instances:
|
|
25
|
+
|
|
26
|
+
- **The Static Class as Manager:** The static side of `ToolFunc` (e.g., `ToolFunc.register`, `ToolFunc.run`, `ToolFunc.get`) acts as a global **registry** and **executor**. It manages all tool definitions, allowing any part of your application to discover and run tools by name without needing a direct reference to the tool's instance.
|
|
27
|
+
|
|
28
|
+
- **The Instance as the Tool:** An instance (`new ToolFunc(...)`) represents a single, concrete **tool**. It holds the actual function logic, all its metadata (name, description, parameters), and any internal state.
|
|
29
|
+
|
|
30
|
+
This separation provides the best of both worlds: the power of object-oriented encapsulation for defining individual tools and the convenience of a globally accessible service for managing and executing them.
|
|
31
|
+
|
|
32
|
+
### 1. Defining a `ToolFunc`
|
|
33
|
+
|
|
34
|
+
You create a function by instantiating the `ToolFunc` class with a configuration object (`FuncItem`). The only required properties are a `name` and a `func` implementation.
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { ToolFunc } from './src/tool-func';
|
|
38
|
+
|
|
39
|
+
const sayHello = new ToolFunc({
|
|
40
|
+
name: 'sayHello',
|
|
41
|
+
description: 'Prints a greeting to the console.',
|
|
42
|
+
title: 'Say Hello',
|
|
43
|
+
params: {
|
|
44
|
+
personName: { type: 'string', description: 'The name of the person to greet.', required: true }
|
|
45
|
+
},
|
|
46
|
+
func: (params) => {
|
|
47
|
+
console.log(`Hello, ${params.personName}!`);
|
|
48
|
+
return `Greeted ${params.personName}`;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 2. Registration
|
|
54
|
+
|
|
55
|
+
For a `ToolFunc` to be globally accessible, it must be registered. Registration adds the function to a static `ToolFunc.items` map.
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
// Register the instance you created
|
|
59
|
+
sayHello.register();
|
|
60
|
+
|
|
61
|
+
// You can also define and register in one go
|
|
62
|
+
ToolFunc.register({
|
|
63
|
+
name: 'sayGoodbye',
|
|
64
|
+
func: () => console.log('Goodbye!')
|
|
65
|
+
});
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Once registered, the function can be accessed from anywhere in the application.
|
|
69
|
+
|
|
70
|
+
### 3. Execution
|
|
71
|
+
|
|
72
|
+
You can execute registered functions using the static `run` or `runSync` methods. The framework automatically handles passing parameters correctly.
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
// Execute asynchronously
|
|
76
|
+
async function greet() {
|
|
77
|
+
const result = await ToolFunc.run('sayHello', { personName: 'Alice' });
|
|
78
|
+
console.log(result); // Outputs: "Greeted Alice"
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Execute synchronously
|
|
82
|
+
ToolFunc.runSync('sayGoodbye'); // Outputs: "Goodbye!"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Advanced Usage
|
|
88
|
+
|
|
89
|
+
### Dependencies (`depends`)
|
|
90
|
+
|
|
91
|
+
Use the `depends` property to ensure that other required `ToolFunc` instances are registered automatically. This is key to building modular tools.
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
const helperFunc = new ToolFunc({ name: 'helper', func: () => 'world' });
|
|
95
|
+
|
|
96
|
+
const mainFunc = new ToolFunc({
|
|
97
|
+
name: 'main',
|
|
98
|
+
depends: {
|
|
99
|
+
// This ensures helperFunc is registered when mainFunc is.
|
|
100
|
+
h: helperFunc,
|
|
101
|
+
},
|
|
102
|
+
func: function() { // `this` is the ToolFunc instance
|
|
103
|
+
const message = this.runSync('h');
|
|
104
|
+
return `Hello, ${message}`;
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
mainFunc.register(); // Both mainFunc and helperFunc are now registered.
|
|
109
|
+
|
|
110
|
+
ToolFunc.runSync('main'); // Returns "Hello, world"
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Lifecycle Hook (`setup`)
|
|
114
|
+
|
|
115
|
+
The `setup` method is called during the constructor's execution, allowing you to perform initialization logic on the instance.
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
const myFunc = new ToolFunc({
|
|
119
|
+
name: 'myFunc',
|
|
120
|
+
customState: 'initial',
|
|
121
|
+
setup() {
|
|
122
|
+
// `this` refers to the ToolFunc instance
|
|
123
|
+
this.customState = 'configured';
|
|
124
|
+
console.log('Instance has been set up!');
|
|
125
|
+
},
|
|
126
|
+
func: function() {
|
|
127
|
+
return this.customState;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
console.log(myFunc.runSync()); // Outputs: 'configured'
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Streaming Output (`stream` and `isStream`)
|
|
135
|
+
|
|
136
|
+
To create a function that can optionally stream its output:
|
|
137
|
+
|
|
138
|
+
1. Set `stream: true` in its definition. This marks it as *capable* of streaming.
|
|
139
|
+
2. The `isStream(params)` method determines if a *specific call* should be streamed. The default logic checks for a `stream` parameter in the function's declaration and the runtime arguments.
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
const streamableTask = new ToolFunc({
|
|
143
|
+
name: 'streamableTask',
|
|
144
|
+
stream: true, // 1. Mark as stream-capable
|
|
145
|
+
params: {
|
|
146
|
+
// 2. Declare a 'stream' parameter so the isStream method can check it
|
|
147
|
+
stream: { type: 'boolean', description: 'Whether to stream the output.' }
|
|
148
|
+
},
|
|
149
|
+
func: function(params) {
|
|
150
|
+
if (this.isStream(params)) {
|
|
151
|
+
// Return a ReadableStream for streaming output
|
|
152
|
+
return new ReadableStream(/* ... */);
|
|
153
|
+
} else {
|
|
154
|
+
// Return a regular value
|
|
155
|
+
return 'Completed';
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Aliases and Tags
|
|
162
|
+
|
|
163
|
+
Use `alias` to provide alternative names and `tags` to categorize functions.
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
ToolFunc.register({
|
|
167
|
+
name: 'listUsers',
|
|
168
|
+
alias: ['ls', 'getUsers'],
|
|
169
|
+
tags: ['users', 'read'],
|
|
170
|
+
func: () => [/* ... */]
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
// These are now equivalent:
|
|
174
|
+
const users1 = ToolFunc.get('listUsers');
|
|
175
|
+
const users2 = ToolFunc.get('ls');
|
|
176
|
+
|
|
177
|
+
// You can retrieve functions by tag:
|
|
178
|
+
const userReaders = ToolFunc.getAllByTag('users');
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## API Reference
|
|
182
|
+
|
|
183
|
+
This document covers the main concepts and usage patterns. For a detailed API reference, please consult the TSDoc comments within the source code (`src/tool-func.ts`).
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# ToolFunc: Client-Server Communication
|
|
2
|
+
|
|
3
|
+
This guide provides a comprehensive overview of the `ai-tool` transport layer, a powerful system designed to facilitate communication between server-side functions and client-side applications. It enables seamless Remote Procedure Calls (RPC) by abstracting the underlying network protocol.
|
|
4
|
+
|
|
5
|
+
This system is composed of two main parts:
|
|
6
|
+
|
|
7
|
+
1. **Tools (`ServerTools`/`ClientTools`):** Classes that define the functions to be executed.
|
|
8
|
+
2. **The Transport Layer:** The underlying bridge that handles network communication.
|
|
9
|
+
|
|
10
|
+
**Prerequisite:** This document assumes you have a basic understanding of the `ToolFunc` framework. If not, please review the [`toolFunc.md`](./toolFunc.md) first.
|
|
11
|
+
|
|
12
|
+
## 1. `ServerTools`: Defining Backend Functions
|
|
13
|
+
|
|
14
|
+
`ServerTools` is the base class for any function you want to make available for remote clients. It extends `ToolFunc`, inheriting all its features, but is specifically designed to be discovered and executed via the transport layer.
|
|
15
|
+
|
|
16
|
+
Think of a `ServerTools` instance as a single, network-addressable endpoint for a specific function.
|
|
17
|
+
|
|
18
|
+
### Basic Example
|
|
19
|
+
|
|
20
|
+
Here is the most basic example of defining a server tool. Note that at this stage, it's just a definition; it can't be reached by a client until a transport is set up.
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { ServerTools } from '@isdk/ai-tool';
|
|
24
|
+
|
|
25
|
+
// Define a tool that can be called remotely
|
|
26
|
+
ServerTools.register({
|
|
27
|
+
name: 'getUserProfile',
|
|
28
|
+
description: 'Fetches a user profile by ID.',
|
|
29
|
+
params: { id: { type: 'string' } },
|
|
30
|
+
func: async ({ id }: { id: string }) => {
|
|
31
|
+
// In a real app, you'd fetch this from a database
|
|
32
|
+
return { id, name: 'Jane Doe', email: 'jane.doe@example.com' };
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 2. The Transport Layer: Bridging Client and Server
|
|
38
|
+
|
|
39
|
+
The transport layer's primary purpose is to **decouple your tool's business logic from the network protocol**. It acts as a bridge, allowing a client to execute a function on a server as if it were a local method.
|
|
40
|
+
|
|
41
|
+
The transport layer makes `ServerTools` accessible over a network and allows `ClientTools` to call them.
|
|
42
|
+
|
|
43
|
+
- **The Server Transport (`IServerToolServerTransport`)**
|
|
44
|
+
- Its job is to listen for incoming network requests (e.g., over HTTP).
|
|
45
|
+
- It finds the correct registered `ServerTools` instance by its name.
|
|
46
|
+
- It executes the tool and sends the result back in a response.
|
|
47
|
+
|
|
48
|
+
- **The Client Transport (`IClientToolTransport`)**
|
|
49
|
+
- Its job is to connect to a server's `apiRoot`.
|
|
50
|
+
- It uses a `mount()` helper to fetch all available tool definitions from the server and automatically create local proxy `ClientTools` for them.
|
|
51
|
+
|
|
52
|
+
### End-to-End Transport Example
|
|
53
|
+
|
|
54
|
+
This example shows how to use the `Fastify` (server) and `HttpClient` (client) transports to bring the `getUserProfile` tool online.
|
|
55
|
+
|
|
56
|
+
**Server-Side Setup:**
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// server.ts
|
|
60
|
+
import { ServerTools, FastifyServerToolTransport } from '@isdk/ai-tool';
|
|
61
|
+
|
|
62
|
+
// (Your ServerTools.register call from above)
|
|
63
|
+
|
|
64
|
+
// 1. Create a server transport instance.
|
|
65
|
+
const serverTransport = new FastifyServerToolTransport();
|
|
66
|
+
|
|
67
|
+
// 2. Mount the ServerTools class. The transport finds all registered tools
|
|
68
|
+
// and exposes them under the '/api' prefix.
|
|
69
|
+
serverTransport.mount(ServerTools, '/api');
|
|
70
|
+
|
|
71
|
+
// 3. Start the server.
|
|
72
|
+
serverTransport.start({ port: 3000 });
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Client-Side Setup:**
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// client.ts
|
|
79
|
+
import { ClientTools, HttpClientToolTransport } from '@isdk/ai-tool';
|
|
80
|
+
|
|
81
|
+
async function main() {
|
|
82
|
+
const apiRoot = 'http://localhost:3000/api';
|
|
83
|
+
|
|
84
|
+
// 1. Create a client transport pointing to the server.
|
|
85
|
+
const clientTransport = new HttpClientToolTransport(apiRoot);
|
|
86
|
+
|
|
87
|
+
// 2. Mount ClientTools. This crucial step connects to the server,
|
|
88
|
+
// fetches the definitions for all available ServerTools (like 'getUserProfile'),
|
|
89
|
+
// and creates the local ClientTools proxies.
|
|
90
|
+
await clientTransport.mount(ClientTools);
|
|
91
|
+
|
|
92
|
+
// 3. Get the proxy tool and run it as if it were local.
|
|
93
|
+
const getUserProfile = ClientTools.get('getUserProfile');
|
|
94
|
+
const profile = await getUserProfile.run({ id: '123' });
|
|
95
|
+
|
|
96
|
+
console.log(profile);
|
|
97
|
+
}
|
|
98
|
+
main();
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 3. Advanced Tool Types & Transport Interaction
|
|
102
|
+
|
|
103
|
+
The framework provides specialized subclasses of `ServerTools` for common API patterns. A key concept is that the **transport layer remains agnostic** to these types. It always just finds a tool by its name and executes its main `func`. The tool itself is responsible for any internal logic, like routing to sub-methods.
|
|
104
|
+
|
|
105
|
+
### `RpcMethodsServerTool`
|
|
106
|
+
|
|
107
|
+
This class allows you to group multiple related functions into a single tool, like methods on a class.
|
|
108
|
+
|
|
109
|
+
- **How it works:** You define methods in your class with a `$` prefix (e.g., `$add`, `$subtract`). The tool's main `func` acts as a dispatcher, using an `act` parameter from the client to call the correct internal method.
|
|
110
|
+
- **Transport Interaction:** The transport is unaware of this. It just calls the main `func` of the `calculator` tool. The tool's internal dispatcher does the rest.
|
|
111
|
+
|
|
112
|
+
**Example:**
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
// tools/CalculatorTool.ts
|
|
116
|
+
import { RpcMethodsServerTool } from '@isdk/ai-tool';
|
|
117
|
+
|
|
118
|
+
export class CalculatorTool extends RpcMethodsServerTool {
|
|
119
|
+
$add({ a, b }: { a: number, b: number }) { return a + b; }
|
|
120
|
+
$subtract({ a, b }: { a: number, b: number }) { return a - b; }
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// server.ts - You would register this tool:
|
|
124
|
+
// new CalculatorTool('calculator').register();
|
|
125
|
+
|
|
126
|
+
// client.ts - The client-side proxy would have .add() and .subtract() methods:
|
|
127
|
+
// const sum = await calculator.add({ a: 10, b: 5 });
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### `ResServerTools`
|
|
131
|
+
|
|
132
|
+
This class extends `RpcMethodsServerTool` to provide a conventional, resource-oriented (CRUD) API.
|
|
133
|
+
|
|
134
|
+
- **How it works:** It maps standard method names like `get`, `list`, `post`, `put`, and `delete` to different HTTP verbs and URL patterns.
|
|
135
|
+
- **Transport Interaction:** Just like with `RpcMethodsServerTool`, the transport remains agnostic. For example, a `GET /api/myResource/123` request is routed by the `Fastify` transport to the `myResource` tool. The tool's internal logic then identifies the `GET` verb and the `id` parameter and calls its own `get()` method.
|
|
136
|
+
|
|
137
|
+
This architecture provides a clean, powerful, and extensible way to build and consume APIs, clearly separating your business logic from the complexities of network communication.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# Class: AbortError
|
|
8
8
|
|
|
9
|
-
Defined in: node\_modules/.pnpm/@isdk+common-error@0.
|
|
9
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@isdk+common-error@0.2.0/node\_modules/@isdk/common-error/dist/index.d.ts:153
|
|
10
10
|
|
|
11
11
|
BaseError class that extends the Error class.
|
|
12
12
|
|
|
@@ -47,7 +47,7 @@ fromJSON - Creates a new BaseError instance from a JSON representation.
|
|
|
47
47
|
|
|
48
48
|
> **new AbortError**(`what`?, `name`?): [`AbortError`](AbortError.md)
|
|
49
49
|
|
|
50
|
-
Defined in: node\_modules/.pnpm/@isdk+common-error@0.
|
|
50
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@isdk+common-error@0.2.0/node\_modules/@isdk/common-error/dist/index.d.ts:155
|
|
51
51
|
|
|
52
52
|
#### Parameters
|
|
53
53
|
|
|
@@ -73,7 +73,7 @@ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/com
|
|
|
73
73
|
|
|
74
74
|
> **caller**: `string`
|
|
75
75
|
|
|
76
|
-
Defined in: node\_modules/.pnpm/@isdk+common-error@0.
|
|
76
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@isdk+common-error@0.2.0/node\_modules/@isdk/common-error/dist/index.d.ts:63
|
|
77
77
|
|
|
78
78
|
The name of the function that threw the error.
|
|
79
79
|
|
|
@@ -87,7 +87,7 @@ The name of the function that threw the error.
|
|
|
87
87
|
|
|
88
88
|
> `optional` **cause**: `unknown`
|
|
89
89
|
|
|
90
|
-
Defined in: node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/lib.es2022.error.d.ts:26
|
|
90
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/lib.es2022.error.d.ts:26
|
|
91
91
|
|
|
92
92
|
#### Inherited from
|
|
93
93
|
|
|
@@ -99,7 +99,7 @@ Defined in: node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/li
|
|
|
99
99
|
|
|
100
100
|
> **code**: `ErrorCodeType`
|
|
101
101
|
|
|
102
|
-
Defined in: node\_modules/.pnpm/@isdk+common-error@0.
|
|
102
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@isdk+common-error@0.2.0/node\_modules/@isdk/common-error/dist/index.d.ts:64
|
|
103
103
|
|
|
104
104
|
the error code
|
|
105
105
|
|
|
@@ -113,7 +113,7 @@ the error code
|
|
|
113
113
|
|
|
114
114
|
> `optional` **data**: `any`
|
|
115
115
|
|
|
116
|
-
Defined in: node\_modules/.pnpm/@isdk+common-error@0.
|
|
116
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@isdk+common-error@0.2.0/node\_modules/@isdk/common-error/dist/index.d.ts:65
|
|
117
117
|
|
|
118
118
|
Additional data associated with the error.
|
|
119
119
|
|
|
@@ -127,7 +127,7 @@ Additional data associated with the error.
|
|
|
127
127
|
|
|
128
128
|
> **message**: `string`
|
|
129
129
|
|
|
130
|
-
Defined in: node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/lib.es5.d.ts:1077
|
|
130
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/lib.es5.d.ts:1077
|
|
131
131
|
|
|
132
132
|
#### Inherited from
|
|
133
133
|
|
|
@@ -139,7 +139,7 @@ Defined in: node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/li
|
|
|
139
139
|
|
|
140
140
|
> **name**: `string`
|
|
141
141
|
|
|
142
|
-
Defined in: node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/lib.es5.d.ts:1076
|
|
142
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/lib.es5.d.ts:1076
|
|
143
143
|
|
|
144
144
|
#### Inherited from
|
|
145
145
|
|
|
@@ -151,7 +151,7 @@ Defined in: node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/li
|
|
|
151
151
|
|
|
152
152
|
> `optional` **stack**: `string`
|
|
153
153
|
|
|
154
|
-
Defined in: node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/lib.es5.d.ts:1078
|
|
154
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/lib.es5.d.ts:1078
|
|
155
155
|
|
|
156
156
|
#### Inherited from
|
|
157
157
|
|
|
@@ -163,7 +163,7 @@ Defined in: node\_modules/.pnpm/typescript@5.7.3/node\_modules/typescript/lib/li
|
|
|
163
163
|
|
|
164
164
|
> `static` **code**: [`ErrorCode`](../enumerations/ErrorCode.md)
|
|
165
165
|
|
|
166
|
-
Defined in: node\_modules/.pnpm/@isdk+common-error@0.
|
|
166
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@isdk+common-error@0.2.0/node\_modules/@isdk/common-error/dist/index.d.ts:154
|
|
167
167
|
|
|
168
168
|
The error code associated with the error.
|
|
169
169
|
|
|
@@ -173,43 +173,21 @@ The error code associated with the error.
|
|
|
173
173
|
|
|
174
174
|
***
|
|
175
175
|
|
|
176
|
-
###
|
|
177
|
-
|
|
178
|
-
> `static` `optional` **prepareStackTrace**: (`err`, `stackTraces`) => `any`
|
|
179
|
-
|
|
180
|
-
Defined in: node\_modules/.pnpm/@types+node@22.10.5/node\_modules/@types/node/globals.d.ts:143
|
|
181
|
-
|
|
182
|
-
Optional override for formatting stack traces
|
|
183
|
-
|
|
184
|
-
#### Parameters
|
|
185
|
-
|
|
186
|
-
##### err
|
|
187
|
-
|
|
188
|
-
`Error`
|
|
189
|
-
|
|
190
|
-
##### stackTraces
|
|
176
|
+
### stackTraceLimit
|
|
191
177
|
|
|
192
|
-
`
|
|
178
|
+
> `static` **stackTraceLimit**: `number`
|
|
193
179
|
|
|
194
|
-
|
|
180
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@types+node@24.3.0/node\_modules/@types/node/globals.d.ts:162
|
|
195
181
|
|
|
196
|
-
`
|
|
182
|
+
The `Error.stackTraceLimit` property specifies the number of stack frames
|
|
183
|
+
collected by a stack trace (whether generated by `new Error().stack` or
|
|
184
|
+
`Error.captureStackTrace(obj)`).
|
|
197
185
|
|
|
198
|
-
|
|
186
|
+
The default value is `10` but may be set to any valid JavaScript number. Changes
|
|
187
|
+
will affect any stack trace captured _after_ the value has been changed.
|
|
199
188
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
#### Inherited from
|
|
203
|
-
|
|
204
|
-
[`CommonError`](CommonError.md).[`prepareStackTrace`](CommonError.md#preparestacktrace)
|
|
205
|
-
|
|
206
|
-
***
|
|
207
|
-
|
|
208
|
-
### stackTraceLimit
|
|
209
|
-
|
|
210
|
-
> `static` **stackTraceLimit**: `number`
|
|
211
|
-
|
|
212
|
-
Defined in: node\_modules/.pnpm/@types+node@22.10.5/node\_modules/@types/node/globals.d.ts:145
|
|
189
|
+
If set to a non-number value, or set to a negative number, stack traces will
|
|
190
|
+
not capture any frames.
|
|
213
191
|
|
|
214
192
|
#### Inherited from
|
|
215
193
|
|
|
@@ -221,9 +199,7 @@ Defined in: node\_modules/.pnpm/@types+node@22.10.5/node\_modules/@types/node/gl
|
|
|
221
199
|
|
|
222
200
|
> **fromJSON**(`json`): [`BaseError`](BaseError.md)
|
|
223
201
|
|
|
224
|
-
Defined in: node\_modules/.pnpm/@isdk+common-error@0.
|
|
225
|
-
|
|
226
|
-
Creates a new BaseError instance from a JSON representation.
|
|
202
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@isdk+common-error@0.2.0/node\_modules/@isdk/common-error/dist/index.d.ts:104
|
|
227
203
|
|
|
228
204
|
#### Parameters
|
|
229
205
|
|
|
@@ -231,14 +207,10 @@ Creates a new BaseError instance from a JSON representation.
|
|
|
231
207
|
|
|
232
208
|
`any`
|
|
233
209
|
|
|
234
|
-
A JSON representation of the error.
|
|
235
|
-
|
|
236
210
|
#### Returns
|
|
237
211
|
|
|
238
212
|
[`BaseError`](BaseError.md)
|
|
239
213
|
|
|
240
|
-
A new BaseError instance.
|
|
241
|
-
|
|
242
214
|
#### Inherited from
|
|
243
215
|
|
|
244
216
|
[`CommonError`](CommonError.md).[`fromJSON`](CommonError.md#fromjson)
|
|
@@ -249,7 +221,7 @@ A new BaseError instance.
|
|
|
249
221
|
|
|
250
222
|
> **toJSON**(): `any`
|
|
251
223
|
|
|
252
|
-
Defined in: node\_modules/.pnpm/@isdk+common-error@0.
|
|
224
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@isdk+common-error@0.2.0/node\_modules/@isdk/common-error/dist/index.d.ts:86
|
|
253
225
|
|
|
254
226
|
Returns a JSON representation of the error.
|
|
255
227
|
|
|
@@ -269,9 +241,51 @@ A JSON representation of the error.
|
|
|
269
241
|
|
|
270
242
|
> `static` **captureStackTrace**(`targetObject`, `constructorOpt`?): `void`
|
|
271
243
|
|
|
272
|
-
Defined in: node\_modules/.pnpm/@types+node@
|
|
244
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@types+node@24.3.0/node\_modules/@types/node/globals.d.ts:146
|
|
273
245
|
|
|
274
|
-
|
|
246
|
+
Creates a `.stack` property on `targetObject`, which when accessed returns
|
|
247
|
+
a string representing the location in the code at which
|
|
248
|
+
`Error.captureStackTrace()` was called.
|
|
249
|
+
|
|
250
|
+
```js
|
|
251
|
+
const myObject = {};
|
|
252
|
+
Error.captureStackTrace(myObject);
|
|
253
|
+
myObject.stack; // Similar to `new Error().stack`
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
The first line of the trace will be prefixed with
|
|
257
|
+
`${myObject.name}: ${myObject.message}`.
|
|
258
|
+
|
|
259
|
+
The optional `constructorOpt` argument accepts a function. If given, all frames
|
|
260
|
+
above `constructorOpt`, including `constructorOpt`, will be omitted from the
|
|
261
|
+
generated stack trace.
|
|
262
|
+
|
|
263
|
+
The `constructorOpt` argument is useful for hiding implementation
|
|
264
|
+
details of error generation from the user. For instance:
|
|
265
|
+
|
|
266
|
+
```js
|
|
267
|
+
function a() {
|
|
268
|
+
b();
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function b() {
|
|
272
|
+
c();
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
function c() {
|
|
276
|
+
// Create an error without stack trace to avoid calculating the stack trace twice.
|
|
277
|
+
const { stackTraceLimit } = Error;
|
|
278
|
+
Error.stackTraceLimit = 0;
|
|
279
|
+
const error = new Error();
|
|
280
|
+
Error.stackTraceLimit = stackTraceLimit;
|
|
281
|
+
|
|
282
|
+
// Capture the stack trace above function b
|
|
283
|
+
Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
|
|
284
|
+
throw error;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
a();
|
|
288
|
+
```
|
|
275
289
|
|
|
276
290
|
#### Parameters
|
|
277
291
|
|
|
@@ -297,7 +311,7 @@ Create .stack property on a target object
|
|
|
297
311
|
|
|
298
312
|
> `static` **create**(`__namedParameters`): [`CommonError`](CommonError.md)
|
|
299
313
|
|
|
300
|
-
Defined in: node\_modules/.pnpm/@isdk+common-error@0.
|
|
314
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@isdk+common-error@0.2.0/node\_modules/@isdk/common-error/dist/index.d.ts:107
|
|
301
315
|
|
|
302
316
|
#### Parameters
|
|
303
317
|
|
|
@@ -333,7 +347,7 @@ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/com
|
|
|
333
347
|
|
|
334
348
|
> `static` **createErrorClass**(`aType`, `aErrorCode`?, `ParentErrorClass`?): *typeof* [`BaseError`](BaseError.md)
|
|
335
349
|
|
|
336
|
-
Defined in: node\_modules/.pnpm/@isdk+common-error@0.
|
|
350
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@isdk+common-error@0.2.0/node\_modules/@isdk/common-error/dist/index.d.ts:66
|
|
337
351
|
|
|
338
352
|
Create an Error Class
|
|
339
353
|
|
|
@@ -364,3 +378,74 @@ the new Error Class
|
|
|
364
378
|
#### Inherited from
|
|
365
379
|
|
|
366
380
|
[`CommonError`](CommonError.md).[`createErrorClass`](CommonError.md#createerrorclass)
|
|
381
|
+
|
|
382
|
+
***
|
|
383
|
+
|
|
384
|
+
### fromJSON()
|
|
385
|
+
|
|
386
|
+
> `static` **fromJSON**(`json`): [`BaseError`](BaseError.md)
|
|
387
|
+
|
|
388
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@isdk+common-error@0.2.0/node\_modules/@isdk/common-error/dist/index.d.ts:103
|
|
389
|
+
|
|
390
|
+
Creates a new error instance from a JSON representation.
|
|
391
|
+
This method is useful for deserializing an error that was serialized with `toJSON`.
|
|
392
|
+
|
|
393
|
+
#### Parameters
|
|
394
|
+
|
|
395
|
+
##### json
|
|
396
|
+
|
|
397
|
+
`any`
|
|
398
|
+
|
|
399
|
+
A JSON object representing the error.
|
|
400
|
+
|
|
401
|
+
#### Returns
|
|
402
|
+
|
|
403
|
+
[`BaseError`](BaseError.md)
|
|
404
|
+
|
|
405
|
+
A new instance of the error class (or a subclass).
|
|
406
|
+
|
|
407
|
+
#### Example
|
|
408
|
+
|
|
409
|
+
```ts
|
|
410
|
+
const originalError = new NotFoundError('thing');
|
|
411
|
+
const json = originalError.toJSON();
|
|
412
|
+
|
|
413
|
+
// Deserialize
|
|
414
|
+
const newError = NotFoundError.fromJSON(json);
|
|
415
|
+
console.log(newError instanceof NotFoundError); // true
|
|
416
|
+
console.log(newError.message); // 'Could not find thing.'
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
#### Inherited from
|
|
420
|
+
|
|
421
|
+
[`CommonError`](CommonError.md).[`fromJSON`](CommonError.md#fromjson-2)
|
|
422
|
+
|
|
423
|
+
***
|
|
424
|
+
|
|
425
|
+
### prepareStackTrace()
|
|
426
|
+
|
|
427
|
+
> `static` **prepareStackTrace**(`err`, `stackTraces`): `any`
|
|
428
|
+
|
|
429
|
+
Defined in: @isdk/ai-tools/node\_modules/.pnpm/@types+node@24.3.0/node\_modules/@types/node/globals.d.ts:150
|
|
430
|
+
|
|
431
|
+
#### Parameters
|
|
432
|
+
|
|
433
|
+
##### err
|
|
434
|
+
|
|
435
|
+
`Error`
|
|
436
|
+
|
|
437
|
+
##### stackTraces
|
|
438
|
+
|
|
439
|
+
`CallSite`[]
|
|
440
|
+
|
|
441
|
+
#### Returns
|
|
442
|
+
|
|
443
|
+
`any`
|
|
444
|
+
|
|
445
|
+
#### See
|
|
446
|
+
|
|
447
|
+
https://v8.dev/docs/stack-trace-api#customizing-stack-traces
|
|
448
|
+
|
|
449
|
+
#### Inherited from
|
|
450
|
+
|
|
451
|
+
[`CommonError`](CommonError.md).[`prepareStackTrace`](CommonError.md#preparestacktrace)
|