@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
package/README.cn.md
CHANGED
|
@@ -1,295 +1,161 @@
|
|
|
1
|
-
|
|
1
|
+
# @isdk/ai-tool
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
一个功能强大的 TypeScript 框架,用于创建、管理和通信模块化函数。它非常适合用于构建 AI 代理工具、后端服务以及具有清晰、解耦架构的可扩展插件系统。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 核心功能
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- **模块化与可继承的工具:** 以结构化的方式定义函数,具有清晰的类继承体系 (`ToolFunc` -> `ServerTools` -> `ResServerTools`)。
|
|
8
|
+
- **可插拔 RPC 传输:** 将您的业务逻辑与网络层解耦。使用 HTTP、IPC 或任何自定义协议在客户端和服务器之间进行通信。
|
|
9
|
+
- **可插拔 PubSub 传输:** 为通知、实时更新等功能创建实时的双向事件总线。内置了对 SSE (Server-Sent Events) 和 Electron IPC 的实现。
|
|
10
|
+
- **全局注册表:** 从应用程序的任何地方轻松访问任何已注册的函数。
|
|
8
11
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
所有本地执行的工具函数,在这里注册.
|
|
12
|
-
|
|
13
|
-
例如:
|
|
14
|
-
|
|
15
|
-
```ts
|
|
16
|
-
import {ToolFunc} from '@isdk/ai-tool'
|
|
17
|
-
|
|
18
|
-
// 直接注册一个函数
|
|
19
|
-
ToolFunc.register({
|
|
20
|
-
name: 'add',
|
|
21
|
-
decription: 'return a+b',
|
|
22
|
-
params: {"a": {type: "number"}, b: {type: "number"}},
|
|
23
|
-
result: 'number',
|
|
24
|
-
func: ({a, b}: {a: number, b: number}) => a+b
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
console.log('return', ToolFunc.runSync('add', {a: 1, b: 2}))
|
|
28
|
-
// return 3
|
|
12
|
+
## 安装
|
|
29
13
|
|
|
14
|
+
```bash
|
|
15
|
+
npm install @isdk/ai-tool
|
|
30
16
|
```
|
|
31
17
|
|
|
32
|
-
|
|
33
|
-
* `name`: 工具函数的名称
|
|
34
|
-
* `params`: 工具函数的参数描述schema
|
|
35
|
-
* `result`: 工具函数返回结果类型
|
|
36
|
-
* `scope`: 作用域
|
|
37
|
-
* `description`: 工具函数说明
|
|
38
|
-
* `setup`: 将在ctor ToolFunc实例的时候被执行
|
|
39
|
-
* `depends`: `{[name: string]: ToolFunc}`, 放在这里的将会被自动注册
|
|
18
|
+
## 核心架构:工具继承体系
|
|
40
19
|
|
|
20
|
+
`@isdk/ai-tool` 构建于一个可扩展的类的基础之上。理解它们的层次结构是有效使用该库的关键。
|
|
41
21
|
|
|
42
|
-
###
|
|
22
|
+
### 设计哲学:静态与实例
|
|
43
23
|
|
|
44
|
-
|
|
24
|
+
`ToolFunc` 的一个关键设计原则是静态类和实例之间的角色分离:
|
|
45
25
|
|
|
46
|
-
|
|
47
|
-
未来再加一个EventSource API入口,感知tool注册变动。
|
|
26
|
+
- **作为管理者的静态类:** `ToolFunc` 的静态部分(例如 `ToolFunc.register`, `ToolFunc.run`, `ToolFunc.get`)充当全局的**注册表**和**执行器**。它管理所有工具的定义,允许您的应用程序的任何部分按名称发现和运行工具,而无需直接引用工具的实例。
|
|
48
27
|
|
|
49
|
-
|
|
28
|
+
- **作为工具的实例:** 一个实例 (`new ToolFunc(...)`) 代表一个单一的、具体的**工具**。它持有实际的函数逻辑、其所有的元数据(名称、描述、参数)以及任何内部状态。
|
|
50
29
|
|
|
51
|
-
|
|
30
|
+
这种分离提供了两全其美的优势:既有用于定义单个工具的面向对象封装的能力,又有用于管理和执行它们的全局可访问服务的便利性。
|
|
52
31
|
|
|
53
|
-
|
|
32
|
+
### 工具继承体系
|
|
54
33
|
|
|
55
|
-
|
|
34
|
+
该库遵循一个清晰的继承路径,在每个层级添加专门的功能。关于每种类型的详细分类以及它们如何分离业务和通信逻辑,请参阅 [**服务器与客户端工具指南**](./docs/server_client_tools.md)。
|
|
56
35
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
apiRoot?: string
|
|
60
|
-
/**
|
|
61
|
-
* API request method, can be 'get' or 'post'
|
|
62
|
-
*/
|
|
63
|
-
action?: 'get'|'post'
|
|
64
|
-
// Options for the Node.js fetch function
|
|
65
|
-
fetchOptions?: any
|
|
66
|
-
// Whether to allow exporting the func body itself, default to false
|
|
67
|
-
allowExportFunc?: boolean
|
|
68
|
-
}
|
|
69
|
-
```
|
|
36
|
+
**服务器端继承关系:**
|
|
37
|
+
`ToolFunc` -> `ServerTools` -> `RpcMethodsServerTool` -> `ResServerTools`
|
|
70
38
|
|
|
71
|
-
|
|
72
|
-
|
|
39
|
+
- **`ToolFunc`**: 任何函数的基础,包含核心逻辑和元数据。更多详情请参阅 [ToolFunc 指南](./docs/toolFunc.md)。
|
|
40
|
+
- **`ServerTools`**: 继承自 `ToolFunc`,使其能被远程客户端发现和调用。
|
|
41
|
+
- **`RpcMethodsServerTool`**: 继承自 `ServerTools`,允许单个工具暴露多个方法(例如,一个带有 `add` 和 `subtract` 方法的 `Math` 工具)。
|
|
42
|
+
- **`ResServerTools`**: 继承自 `RpcMethodsServerTool`,用于自动提供面向资源 (CRUD) 的接口。
|
|
73
43
|
|
|
74
|
-
|
|
44
|
+
**客户端继承关系:**
|
|
45
|
+
客户端存在一个平行的继承体系,旨在无缝调用服务器端工具。
|
|
46
|
+
`ToolFunc` -> `ClientTools` -> `RpcMethodsClientTool` -> `ResClientTools`
|
|
75
47
|
|
|
76
|
-
|
|
77
|
-
所有的远程调用没有真正的执行体,都是统一的远程API调用。
|
|
48
|
+
## 使用传输层进行客户端-服务器 RPC 通信
|
|
78
49
|
|
|
79
|
-
|
|
80
|
-
* `static async loadFrom()` 如果没有items,那么从 `ClientTools.apiRoot` 上 fetch items. 所以是异步
|
|
81
|
-
* 本地执行优先:先找本地调用,没有再找远程调用
|
|
50
|
+
该框架在客户端-服务器设置中大放异彩,允许您像调用本地函数一样调用后端函数。
|
|
82
51
|
|
|
83
|
-
|
|
52
|
+
### 服务器端示例
|
|
84
53
|
|
|
85
|
-
|
|
86
|
-
interface ClientFuncItem extends FuncItem {
|
|
87
|
-
apiRoot?: string
|
|
88
|
-
action?: 'get'|'post'
|
|
89
|
-
fetchOptions?: any
|
|
90
|
-
}
|
|
91
|
-
```
|
|
54
|
+
使用 `ServerTools` 定义后端函数,并使用 `FastifyServerToolTransport` 通过 HTTP 将其暴露。
|
|
92
55
|
|
|
93
|
-
|
|
94
|
-
|
|
56
|
+
```typescript
|
|
57
|
+
// server.ts
|
|
58
|
+
import { ServerTools, FastifyServerToolTransport } from '@isdk/ai-tool';
|
|
95
59
|
|
|
96
|
-
|
|
60
|
+
// 定义一个可以远程调用的工具
|
|
61
|
+
ServerTools.register({
|
|
62
|
+
name: 'getUserProfile',
|
|
63
|
+
params: { id: { type: 'string' } },
|
|
64
|
+
func: async ({ id }: { id: string }) => {
|
|
65
|
+
return { id, name: 'Jane Doe', email: 'jane.doe@example.com' };
|
|
66
|
+
},
|
|
67
|
+
});
|
|
97
68
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
```
|
|
69
|
+
// 创建一个传输实例并在 '/api' 前缀下挂载工具
|
|
70
|
+
const serverTransport = new FastifyServerToolTransport();
|
|
71
|
+
serverTransport.mount(ServerTools, '/api');
|
|
102
72
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
### ResServerTools
|
|
106
|
-
|
|
107
|
-
TODO: 需要约定方法是否为stream?,而不是Func是否为stream.
|
|
108
|
-
|
|
109
|
-
基于资源CRUD的ServerTools, 资源是ToolFunc的名称。如果是资源Func,那么就会存在如下的(可选的)方法:
|
|
110
|
-
|
|
111
|
-
* GET /api/res/[resID]: 获取资源 `get({_req, _res, id, options?})`
|
|
112
|
-
* GET /api/res: 获取资源列表 `list({_req, _res, options?})`
|
|
113
|
-
* POST /api/res: 创建资源 `post({_req, _res, id, options?})`
|
|
114
|
-
* PUT /api/res/[resID]: 更新资源 `put({_req, _res, id, options?})`
|
|
115
|
-
* DELETE /api/res/[resID]: 删除资源 `delete({_req, _res, id, options?})`
|
|
116
|
-
|
|
117
|
-
约定的params:
|
|
118
|
-
|
|
119
|
-
* action: 'res' 则表示是资源函数
|
|
120
|
-
|
|
121
|
-
传入的参数在某些方法中可能会有`id`和`options`
|
|
122
|
-
|
|
123
|
-
RES基本都是约定,可以没有实质的类?还是需要一个类,来告诉后代get,list,post,put,delete方法的存在?
|
|
124
|
-
|
|
125
|
-
新增约定,以`$`打头的方法为供客户端调用的自定义资源方法method, 然后它们的HTTP Method统一为`POST`
|
|
126
|
-
|
|
127
|
-
```ts
|
|
128
|
-
class TestResTool extends ResServerTools {
|
|
129
|
-
items: any = {}
|
|
130
|
-
params: FuncParams = {
|
|
131
|
-
'id': {type: 'number'},
|
|
132
|
-
'val': {type: 'any'},
|
|
133
|
-
}
|
|
134
|
-
$customMethod({id}: ResServerFuncParams) {
|
|
135
|
-
if (id) {
|
|
136
|
-
const item = this.items[id]
|
|
137
|
-
if (!item) {
|
|
138
|
-
throw new NotFoundError(id, 'res')
|
|
139
|
-
}
|
|
140
|
-
return {name: 'customMethod', id, item}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
get({id}: ResServerFuncParams) {
|
|
144
|
-
if (id) {
|
|
145
|
-
const item = this.items[id]
|
|
146
|
-
if (!item) {
|
|
147
|
-
throw new NotFoundError(id, 'res')
|
|
148
|
-
}
|
|
149
|
-
return item
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
post({id, val}: ResServerFuncParams) {
|
|
153
|
-
if (id !== undefined && val !== undefined) {
|
|
154
|
-
this.items[id] = val
|
|
155
|
-
return {id}
|
|
156
|
-
} else {
|
|
157
|
-
throwError('id or val is undefined')
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
list() {
|
|
161
|
-
return Object.keys(this.items)
|
|
162
|
-
}
|
|
163
|
-
delete({id}: ResServerFuncParams) {
|
|
164
|
-
if (id) {
|
|
165
|
-
const item = this.items[id]
|
|
166
|
-
if (item === undefined) {
|
|
167
|
-
throw new NotFoundError(id, 'res')
|
|
168
|
-
}
|
|
169
|
-
delete this.items[id]
|
|
170
|
-
return {id}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
ResServerTools.apiRoot = apiRoot
|
|
175
|
-
const res = new TestResTool('res')
|
|
176
|
-
res.register()
|
|
73
|
+
// 启动服务器
|
|
74
|
+
serverTransport.start({ port: 3000 });
|
|
177
75
|
```
|
|
178
76
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
```ts
|
|
182
|
-
const method = request.method
|
|
183
|
-
if (method === 'GET' || method == 'DELETE') {
|
|
184
|
-
params = (request.query as any).p
|
|
185
|
-
if (params) {
|
|
186
|
-
params = JSON.parse(params)
|
|
187
|
-
} else {
|
|
188
|
-
params = {}
|
|
189
|
-
}
|
|
190
|
-
} else {
|
|
191
|
-
params = request.body;
|
|
192
|
-
if (typeof params === 'string') {params = JSON.parse(params)}
|
|
193
|
-
}
|
|
194
|
-
params._req = request.raw
|
|
195
|
-
params._res = reply.raw
|
|
196
|
-
if (id !== undefined) {params.id = id}
|
|
197
|
-
|
|
198
|
-
try {
|
|
199
|
-
let result = await func.run(params)
|
|
200
|
-
// 注意这里没有考虑 stream
|
|
201
|
-
result = JSON.stringify(result)
|
|
202
|
-
// console.log('🚀 ~ server.all ~ result:', result)
|
|
203
|
-
|
|
204
|
-
reply.send(result)
|
|
205
|
-
// reply.send({params: request.params as any, query: request.query, url: request.url})
|
|
206
|
-
} catch(e) {
|
|
207
|
-
// console.log('🚀 ~ server.all ~ e:', e)
|
|
208
|
-
if (e.code !== undefined) {
|
|
209
|
-
if (e.stack) {e.stack = undefined}
|
|
210
|
-
reply.code(e.code).send(JSON.stringify(e))
|
|
211
|
-
} else if (e.message) {
|
|
212
|
-
reply.code(500).send({error: e.message})
|
|
213
|
-
} else {
|
|
214
|
-
reply.code(500).send({error: e})
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
```
|
|
77
|
+
### 客户端示例
|
|
218
78
|
|
|
219
|
-
|
|
79
|
+
`mount` 方法一步即可完成设置传输和从服务器加载工具定义。
|
|
220
80
|
|
|
221
|
-
|
|
81
|
+
```typescript
|
|
82
|
+
// client.ts
|
|
83
|
+
import { ClientTools, HttpClientToolTransport } from '@isdk/ai-tool';
|
|
222
84
|
|
|
223
|
-
|
|
85
|
+
async function main() {
|
|
86
|
+
const apiRoot = 'http://localhost:3000/api';
|
|
224
87
|
|
|
225
|
-
|
|
88
|
+
// 1. 设置客户端传输并挂载工具
|
|
89
|
+
const clientTransport = new HttpClientToolTransport(apiRoot);
|
|
90
|
+
await clientTransport.mount(ClientTools);
|
|
226
91
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
await
|
|
92
|
+
// 2. 获取远程工具并运行它
|
|
93
|
+
const getUserProfile = ClientTools.get('getUserProfile');
|
|
94
|
+
const profile = await getUserProfile.run({ id: '123' });
|
|
230
95
|
|
|
231
|
-
|
|
232
|
-
if (resFunc) {
|
|
233
|
-
let result = await res.post({id: '...', val: '...'})
|
|
234
|
-
result = await res.put({id: '...', val: '...'})
|
|
235
|
-
result = await res.get({id: '...'})
|
|
236
|
-
result = await res.customMethod({id: '...'})
|
|
96
|
+
console.log(profile);
|
|
237
97
|
}
|
|
98
|
+
main();
|
|
238
99
|
```
|
|
239
100
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
1. `GET /api/event` `list` 服务器事件通道 (stream)
|
|
243
|
-
2. `POST /api/event` 订阅服务器事件
|
|
244
|
-
3. `DELETE /api/event` 取消订阅服务器事件
|
|
245
|
-
4. `PUT /api/event` 发布消息给服务器事件
|
|
101
|
+
> 若想深入了解传输层的工作原理,请参阅 [传输层指南](./docs/transport.md)。
|
|
246
102
|
|
|
247
|
-
|
|
103
|
+
## 使用 PubSub 实现实时事件
|
|
248
104
|
|
|
249
|
-
|
|
250
|
-
2. `sub/unsub/publish`
|
|
105
|
+
`@isdk/ai-tool` 包含一个强大的事件系统,用于实时通信,构建于可插拔的 PubSub 传输层之上。
|
|
251
106
|
|
|
252
|
-
|
|
107
|
+
### 快速示例: SSE (Server-Sent Events)
|
|
253
108
|
|
|
254
|
-
|
|
109
|
+
**服务器端:**
|
|
110
|
+
```typescript
|
|
111
|
+
// server.ts (新增部分)
|
|
112
|
+
import { EventServer, SseServerPubSubTransport, eventServer } from '@isdk/ai-tool';
|
|
255
113
|
|
|
256
|
-
|
|
257
|
-
|
|
114
|
+
// 为 EventServer 设置 PubSub 传输
|
|
115
|
+
EventServer.setPubSubTransport(new SseServerPubSubTransport());
|
|
116
|
+
eventServer.register(); // 注册默认的事件工具
|
|
258
117
|
|
|
259
|
-
|
|
118
|
+
// 现在您可以从后端的任何地方发布事件
|
|
119
|
+
setInterval(() => {
|
|
120
|
+
EventServer.publish('server-time', { time: new Date().toISOString() });
|
|
121
|
+
}, 2000);
|
|
122
|
+
```
|
|
260
123
|
|
|
261
|
-
|
|
262
|
-
|
|
124
|
+
**客户端:**
|
|
125
|
+
```typescript
|
|
126
|
+
// client.ts (新增部分)
|
|
127
|
+
import { EventClient, SseClientPubSubTransport, eventClient, backendEventable } from '@isdk/ai-tool';
|
|
263
128
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
* 注意区分是本地消息,还是来自服务器的消息,来自服务器的消息如果是forward的本地消息,就不要再次转发到Event-Bus,不然就要无限循环
|
|
267
|
-
* unsubscribe(events): 取消订阅服务器SSE消息
|
|
268
|
-
* forwardEvent(events): 将指定的本地事件(通过本地订阅)转发到服务器
|
|
269
|
-
* unforwardEvent(events): 取消转发指定的本地事件
|
|
129
|
+
// 为 EventClient 设置 PubSub 传输
|
|
130
|
+
EventClient.setPubSubTransport(new SseClientPubSubTransport());
|
|
270
131
|
|
|
271
|
-
|
|
272
|
-
|
|
132
|
+
// 使客户端具备事件处理能力并注册
|
|
133
|
+
backendEventable(EventClient);
|
|
134
|
+
eventClient.setApiRoot('http://localhost:3000/api'); // 您的 API 根路径
|
|
135
|
+
eventClient.register();
|
|
273
136
|
|
|
274
|
-
|
|
137
|
+
// 订阅并监听服务器事件
|
|
138
|
+
await eventClient.subscribe('server-time');
|
|
139
|
+
eventClient.on('server-time', (data) => {
|
|
140
|
+
console.log('来自服务器的实时时间:', data.time);
|
|
141
|
+
});
|
|
142
|
+
```
|
|
275
143
|
|
|
276
|
-
|
|
144
|
+
> 更多详细示例,包括 Electron IPC 传输,请参阅 [**实时事件 (PubSub) 指南**](./docs/pubsub.md)。
|
|
277
145
|
|
|
278
|
-
|
|
146
|
+
## 贡献
|
|
279
147
|
|
|
280
|
-
|
|
148
|
+
如果您想为项目做出贡献,请阅读 [CONTRIBUTING.md](./CONTRIBUTING.md) 文件以获取有关如何开始的指南。
|
|
281
149
|
|
|
282
|
-
|
|
150
|
+
## 许可证
|
|
283
151
|
|
|
284
|
-
|
|
152
|
+
该项目根据 MIT 许可证授权。有关更多详细信息,请参阅 [LICENSE-MIT](./LICENSE-MIT) 文件。
|
|
285
153
|
|
|
286
|
-
|
|
287
|
-
* sub: 转发服务器上的事件
|
|
288
|
-
* unsub: 撤销转发服务器上的事件
|
|
154
|
+
## 致谢
|
|
289
155
|
|
|
290
|
-
|
|
156
|
+
本项目的灵感来自于多个优秀的开源项目,并使用了它们的代码:
|
|
291
157
|
|
|
292
158
|
* [@huggingface/jinja](https://github.com/huggingface/huggingface.js)
|
|
293
159
|
* [eventsource-parser](https://github.com/rexxars/eventsource-parser)
|
|
294
160
|
* [async-sema](https://github.com/vercel/async-sema)
|
|
295
|
-
* [modelfusion](https://github.com/vercel/modelfusion)
|
|
161
|
+
* [modelfusion](https://github.com/vercel/modelfusion)
|