@isdk/ai-tool 0.5.8 → 0.7.0

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.
Files changed (497) hide show
  1. package/README.cn.md +103 -237
  2. package/README.md +101 -186
  3. package/dist/chunk-LNTIQQNN.mjs +1 -0
  4. package/dist/chunk-VIG2GB47.mjs +1 -1
  5. package/dist/funcs.d.mts +1 -1
  6. package/dist/funcs.d.ts +1 -1
  7. package/dist/funcs.js +1 -1
  8. package/dist/funcs.mjs +1 -1
  9. package/dist/index-BCco-g_I.d.mts +1781 -0
  10. package/dist/index-BCco-g_I.d.ts +1781 -0
  11. package/dist/index.d.mts +1083 -650
  12. package/dist/index.d.ts +1083 -650
  13. package/dist/index.js +1 -1
  14. package/dist/index.mjs +1 -1
  15. package/dist/test/util.js +1 -1
  16. package/docs/api/README.md +165 -0
  17. package/docs/{_media → api/_media}/CONTRIBUTING.md +3 -3
  18. package/docs/api/_media/pubsub.md +326 -0
  19. package/docs/api/_media/server_client_tools.md +88 -0
  20. package/docs/api/_media/toolFunc.md +183 -0
  21. package/docs/api/_media/transport.md +137 -0
  22. package/docs/{classes → api/classes}/AbortError.md +139 -54
  23. package/docs/api/classes/AlreadyExistsError.md +431 -0
  24. package/docs/api/classes/BaseError.md +440 -0
  25. package/docs/{classes → api/classes}/BinarySemaphore.md +25 -25
  26. package/docs/{classes → api/classes}/CancelableAbility.md +25 -25
  27. package/docs/api/classes/ClientToolTransport.md +310 -0
  28. package/docs/{classes → api/classes}/ClientTools.md +642 -180
  29. package/docs/{classes → api/classes}/CommonError.md +139 -54
  30. package/docs/api/classes/ConfigFile.md +218 -0
  31. package/docs/{classes → api/classes}/EnvPromptTemplate.md +308 -65
  32. package/docs/{classes → api/classes}/EventClient.md +725 -232
  33. package/docs/{classes → api/classes}/EventEmitter.md +12 -12
  34. package/docs/{classes → api/classes}/EventServer.md +658 -205
  35. package/docs/{classes → api/classes}/EventToolFunc.md +561 -109
  36. package/docs/{classes → api/classes}/FStringPromptTemplate.md +309 -66
  37. package/docs/{classes → api/classes}/FewShotPromptTemplate.md +290 -63
  38. package/docs/{classes → api/classes}/GolangPromptTemplate.md +308 -65
  39. package/docs/api/classes/HttpClientToolTransport.md +324 -0
  40. package/docs/api/classes/HttpServerToolTransport.md +324 -0
  41. package/docs/{classes → api/classes}/IntSet.md +12 -12
  42. package/docs/{classes → api/classes}/LRUCache.md +26 -26
  43. package/docs/api/classes/NotFoundError.md +431 -0
  44. package/docs/api/classes/NotImplementationError.md +431 -0
  45. package/docs/{classes → api/classes}/PromptExampleSelector.md +9 -9
  46. package/docs/{classes → api/classes}/PromptTemplate.md +303 -63
  47. package/docs/api/classes/ReadableStreamError.md +451 -0
  48. package/docs/api/classes/ResClientTools.md +2878 -0
  49. package/docs/api/classes/ResServerTools.md +2856 -0
  50. package/docs/api/classes/SSEChannel.md +272 -0
  51. package/docs/{classes → api/classes}/Semaphore.md +26 -26
  52. package/docs/api/classes/ServerToolTransport.md +323 -0
  53. package/docs/{classes → api/classes}/ServerTools.md +579 -120
  54. package/docs/{classes → api/classes}/SignalGate.md +9 -9
  55. package/docs/api/classes/SseClientPubSubTransport.md +92 -0
  56. package/docs/api/classes/SseServerPubSubTransport.md +234 -0
  57. package/docs/{classes → api/classes}/TaskAbortController.md +9 -9
  58. package/docs/api/classes/ToolFunc.md +2665 -0
  59. package/docs/api/classes/ToolTransport.md +143 -0
  60. package/docs/api/classes/YamlTypeBaseObject.md +31 -0
  61. package/docs/api/enumerations/AsyncFeatureBits.md +33 -0
  62. package/docs/api/enumerations/AsyncFeatures.md +33 -0
  63. package/docs/api/enumerations/ErrorCode.md +177 -0
  64. package/docs/api/enumerations/HashAlgorithm.md +97 -0
  65. package/docs/{functions → api/functions}/AIArgProcessor.md +1 -1
  66. package/docs/{functions → api/functions}/AIStream.md +1 -1
  67. package/docs/{functions → api/functions}/ChoiceArgProcessor.md +1 -1
  68. package/docs/api/functions/DefaultDateFormat.md +21 -0
  69. package/docs/{functions → api/functions}/ObjectArgsToArgsInfo.md +1 -1
  70. package/docs/{functions → api/functions}/RateLimit.md +1 -1
  71. package/docs/{functions → api/functions}/TemplateArgProcessor.md +1 -1
  72. package/docs/api/functions/addDate.md +71 -0
  73. package/docs/{functions → api/functions}/assignDirs.md +1 -1
  74. package/docs/{functions → api/functions}/backendEventable.md +1 -1
  75. package/docs/{functions → api/functions}/beforeShutdown.md +1 -1
  76. package/docs/api/functions/calcPerplexity.md +60 -0
  77. package/docs/api/functions/calcPerplexitySimple.md +42 -0
  78. package/docs/api/functions/canonicalize.md +33 -0
  79. package/docs/{functions → api/functions}/completeSentences.md +1 -1
  80. package/docs/{functions → api/functions}/concatText.md +1 -1
  81. package/docs/{functions → api/functions}/countLLMTokens.md +1 -1
  82. package/docs/{functions → api/functions}/countRegexMatches.md +1 -1
  83. package/docs/{functions → api/functions}/createAbilityInjector.md +4 -4
  84. package/docs/{functions → api/functions}/createCallbacksTransformer.md +1 -1
  85. package/docs/{functions → api/functions}/createEmptyReadableStream.md +1 -1
  86. package/docs/{functions → api/functions}/createEndWithRepetitionDetector.md +1 -1
  87. package/docs/{functions → api/functions}/createError.md +1 -1
  88. package/docs/{functions → api/functions}/createEventStreamTransformer.md +1 -1
  89. package/docs/{functions → api/functions}/createHfValueFunc.md +1 -1
  90. package/docs/{functions → api/functions}/createLRUCache.md +1 -1
  91. package/docs/{functions → api/functions}/createYamlObjectTag.md +1 -1
  92. package/docs/{functions → api/functions}/dateToText.md +1 -1
  93. package/docs/{functions → api/functions}/decodeCharset.md +1 -1
  94. package/docs/api/functions/defaultsWithConcat.md +74 -0
  95. package/docs/{functions → api/functions}/detectCharset.md +1 -1
  96. package/docs/{functions → api/functions}/encodeLLMTokens.md +1 -1
  97. package/docs/{functions → api/functions}/ensureQuoted.md +1 -1
  98. package/docs/{functions → api/functions}/eventable.md +1 -1
  99. package/docs/api/functions/expandConfig.md +25 -0
  100. package/docs/{functions → api/functions}/expandEnv.md +4 -4
  101. package/docs/{functions → api/functions}/expandObjEnv.md +4 -4
  102. package/docs/{functions → api/functions}/expandPath.md +1 -1
  103. package/docs/api/functions/expandPathInObject.md +29 -0
  104. package/docs/api/functions/expandPaths.md +25 -0
  105. package/docs/{functions → api/functions}/extNameLevel.md +1 -1
  106. package/docs/{functions → api/functions}/fileIsExists.md +1 -1
  107. package/docs/{functions → api/functions}/filterValidFnScope.md +1 -1
  108. package/docs/{functions → api/functions}/findIndexNonEmptyFrom.md +1 -1
  109. package/docs/{functions → api/functions}/findPort.md +1 -1
  110. package/docs/{functions → api/functions}/formatISO.md +1 -1
  111. package/docs/{functions → api/functions}/formatTextWithSpace.md +1 -1
  112. package/docs/api/functions/funcGetMeta.md +27 -0
  113. package/docs/api/functions/funcWithMeta.md +41 -0
  114. package/docs/api/functions/genUrlParamsStr.md +27 -0
  115. package/docs/{functions → api/functions}/getAllEnumKeys.md +1 -1
  116. package/docs/{functions → api/functions}/getConfigFileNames.md +1 -1
  117. package/docs/{functions → api/functions}/getConfigs.md +1 -1
  118. package/docs/{functions → api/functions}/getEnvVairables.md +1 -1
  119. package/docs/{functions → api/functions}/getFileMetaInfo.md +1 -1
  120. package/docs/{functions → api/functions}/getHashAlgoBySize.md +1 -1
  121. package/docs/{functions → api/functions}/getKeysPath.md +1 -1
  122. package/docs/{functions → api/functions}/getLLMTokenizer.md +1 -1
  123. package/docs/{functions → api/functions}/getMultiLevelExtname.md +4 -4
  124. package/docs/{functions → api/functions}/getPackageDir.md +1 -1
  125. package/docs/{functions → api/functions}/getRealFilepath.md +1 -1
  126. package/docs/{functions → api/functions}/getResponseErrorReadableStream.md +1 -1
  127. package/docs/{functions → api/functions}/getXDGConfigs.md +1 -1
  128. package/docs/{functions → api/functions}/hasDirectoryIn.md +1 -1
  129. package/docs/{functions → api/functions}/hash.md +1 -1
  130. package/docs/{functions → api/functions}/hashFile.md +1 -1
  131. package/docs/api/functions/hashObject.md +25 -0
  132. package/docs/{functions → api/functions}/hashStream.md +1 -1
  133. package/docs/api/functions/initShutdown.md +15 -0
  134. package/docs/{functions → api/functions}/isLangUsingSpaces.md +1 -1
  135. package/docs/{functions → api/functions}/isListItemString.md +1 -1
  136. package/docs/{functions → api/functions}/isModelNameMatched.md +1 -1
  137. package/docs/{functions → api/functions}/isPunctuationChar.md +1 -1
  138. package/docs/{functions → api/functions}/isQuoted.md +1 -1
  139. package/docs/{functions → api/functions}/isRegExp.md +1 -1
  140. package/docs/{functions → api/functions}/isSameString.md +1 -1
  141. package/docs/{functions → api/functions}/isSectionString.md +1 -1
  142. package/docs/{functions → api/functions}/isSentenceEnding.md +1 -1
  143. package/docs/{functions → api/functions}/isSepLineString.md +1 -1
  144. package/docs/{functions → api/functions}/isStrWrapped.md +1 -1
  145. package/docs/{functions → api/functions}/isSubdirectory.md +2 -2
  146. package/docs/{functions → api/functions}/isTitleString.md +1 -1
  147. package/docs/{functions → api/functions}/isValidFilename.md +1 -1
  148. package/docs/{functions → api/functions}/isValidFilepath.md +1 -1
  149. package/docs/{functions → api/functions}/isWebStream.md +1 -1
  150. package/docs/api/functions/joinSplitWords.md +46 -0
  151. package/docs/{functions → api/functions}/jsonFilterToWhere.md +1 -1
  152. package/docs/{functions → api/functions}/jsonToMarkdownStr.md +9 -1
  153. package/docs/{functions → api/functions}/loadAIConfig.md +1 -1
  154. package/docs/{functions → api/functions}/loadConfig.md +1 -1
  155. package/docs/{functions → api/functions}/loadConfigFile.md +1 -1
  156. package/docs/{functions → api/functions}/loadFileFromPaths.md +1 -1
  157. package/docs/{functions → api/functions}/loadTextFromPaths.md +1 -1
  158. package/docs/{functions → api/functions}/lrucache.md +1 -1
  159. package/docs/{functions → api/functions}/makeToolFuncCancelable.md +1 -1
  160. package/docs/{functions → api/functions}/matchUrlProtocol.md +1 -1
  161. package/docs/{functions → api/functions}/memoize.md +1 -1
  162. package/docs/api/functions/mergeArray.md +57 -0
  163. package/docs/{functions → api/functions}/messagesToText.md +1 -1
  164. package/docs/api/functions/normalizePath.md +21 -0
  165. package/docs/{functions → api/functions}/paramsSizeToScaleStr.md +1 -1
  166. package/docs/{functions → api/functions}/parseCommand.md +1 -1
  167. package/docs/{functions → api/functions}/parseDateFormat.md +1 -1
  168. package/docs/{functions → api/functions}/parseISO.md +1 -1
  169. package/docs/{functions → api/functions}/parseJsJson.md +1 -1
  170. package/docs/{functions → api/functions}/parseJsJsonSimpleSync.md +1 -1
  171. package/docs/{functions → api/functions}/parseObjectArgInfo.md +1 -1
  172. package/docs/{functions → api/functions}/parseObjectArgumentInfos.md +1 -1
  173. package/docs/{functions → api/functions}/parseObjectArguments.md +1 -1
  174. package/docs/{functions → api/functions}/parseObjectArgumentsAsArgInfos.md +1 -1
  175. package/docs/api/functions/parseYaml.md +45 -0
  176. package/docs/api/functions/pruneSubdirectories.md +35 -0
  177. package/docs/api/functions/pruneSubdirectoriesInPlace.md +38 -0
  178. package/docs/{functions → api/functions}/quoteStr.md +1 -1
  179. package/docs/{functions → api/functions}/readFilenamesRecursiveSync.md +7 -1
  180. package/docs/{functions → api/functions}/readTextFileChunks.md +1 -1
  181. package/docs/{functions → api/functions}/readTextFileChunksEx.md +1 -1
  182. package/docs/{functions → api/functions}/readableFromAsyncIterable.md +1 -1
  183. package/docs/{functions → api/functions}/registerCoreTools.md +1 -1
  184. package/docs/api/functions/registerYamlTag.md +37 -0
  185. package/docs/{functions → api/functions}/removeMarkdownBold.md +1 -1
  186. package/docs/{functions → api/functions}/removeMarkdownBoldAndItalic.md +1 -1
  187. package/docs/{functions → api/functions}/removeMarkdownItalic.md +1 -1
  188. package/docs/{functions → api/functions}/replaceWithPlaceholder.md +1 -1
  189. package/docs/{functions → api/functions}/restoreFromPlacehoders.md +1 -1
  190. package/docs/{functions → api/functions}/sanitizeFilename.md +4 -4
  191. package/docs/{functions → api/functions}/sanitizeFilepath.md +4 -4
  192. package/docs/{functions → api/functions}/saveConfigFile.md +1 -1
  193. package/docs/{functions → api/functions}/scaleStrToParamsSize.md +1 -1
  194. package/docs/{functions → api/functions}/shutdown.md +1 -1
  195. package/docs/{functions → api/functions}/simplifyObjectArguments.md +1 -1
  196. package/docs/api/functions/sleep.md +36 -0
  197. package/docs/{functions → api/functions}/sortedValues.md +1 -1
  198. package/docs/{functions → api/functions}/splitChunks.md +1 -1
  199. package/docs/{functions → api/functions}/splitParagraph.md +1 -1
  200. package/docs/{functions → api/functions}/splitSentence.md +1 -1
  201. package/docs/api/functions/splitWords.md +42 -0
  202. package/docs/api/functions/stringifyYaml.md +45 -0
  203. package/docs/{functions → api/functions}/stripConsoleColor.md +1 -1
  204. package/docs/{functions → api/functions}/textToDate.md +1 -1
  205. package/docs/{functions → api/functions}/throwError.md +3 -3
  206. package/docs/{functions → api/functions}/toDate.md +1 -1
  207. package/docs/{functions → api/functions}/toDateTime.md +1 -1
  208. package/docs/{functions → api/functions}/toRegExp.md +1 -1
  209. package/docs/{functions → api/functions}/trimStartOfStreamHelper.md +1 -1
  210. package/docs/{functions → api/functions}/truncTo.md +1 -1
  211. package/docs/{functions → api/functions}/truncateByToken.md +1 -1
  212. package/docs/{functions → api/functions}/truncateToTokenLimit.md +1 -1
  213. package/docs/{functions → api/functions}/truncateToTokenLimitEx.md +1 -1
  214. package/docs/{functions → api/functions}/uuid.md +1 -1
  215. package/docs/{functions → api/functions}/uuidParse.md +1 -1
  216. package/docs/{functions → api/functions}/uuidStringify.md +1 -1
  217. package/docs/{functions → api/functions}/uuidValidate.md +1 -1
  218. package/docs/{functions → api/functions}/uuidVersion.md +1 -1
  219. package/docs/{functions → api/functions}/uuidv1.md +9 -5
  220. package/docs/{functions → api/functions}/uuidv4.md +9 -5
  221. package/docs/{functions → api/functions}/uuidv5.md +9 -5
  222. package/docs/api/functions/wait.md +45 -0
  223. package/docs/{functions → api/functions}/wrapEventEmitter.md +1 -1
  224. package/docs/{functions → api/functions}/xxhash.md +1 -1
  225. package/docs/{functions → api/functions}/xxhash32.md +1 -1
  226. package/docs/{functions → api/functions}/xxhash64.md +1 -1
  227. package/docs/{functions → api/functions}/xxhashAsStr.md +1 -1
  228. package/docs/api/functions/yieldExec.md +27 -0
  229. package/docs/{globals.md → api/globals.md} +44 -24
  230. package/docs/api/interfaces/AIChatAssistantMessageParam.md +129 -0
  231. package/docs/api/interfaces/AIChatContentPartImage.md +29 -0
  232. package/docs/api/interfaces/AIChatContentPartText.md +25 -0
  233. package/docs/api/interfaces/AIChatMessageParamBase.md +68 -0
  234. package/docs/api/interfaces/AIChatMessageToolCall.md +41 -0
  235. package/docs/{interfaces → api/interfaces}/AIChatSystemMessageParam.md +9 -9
  236. package/docs/api/interfaces/AIChatToolChoiceFuncObject.md +37 -0
  237. package/docs/api/interfaces/AIChatToolChoiceObject.md +25 -0
  238. package/docs/api/interfaces/AIChatToolFunc.md +41 -0
  239. package/docs/api/interfaces/AIChatToolFuncParam.md +37 -0
  240. package/docs/api/interfaces/AIChatToolMessageParam.md +113 -0
  241. package/docs/api/interfaces/AIChatToolParam.md +25 -0
  242. package/docs/api/interfaces/AIChatToolTypeObject.md +17 -0
  243. package/docs/api/interfaces/AIChatUserMessageParam.md +137 -0
  244. package/docs/api/interfaces/AIChoiceConfig.md +65 -0
  245. package/docs/api/interfaces/AIResult.md +65 -0
  246. package/docs/{interfaces → api/interfaces}/AIStreamParser.md +2 -2
  247. package/docs/api/interfaces/AIStreamParserOptions.md +21 -0
  248. package/docs/api/interfaces/BaseFunc.md +299 -0
  249. package/docs/api/interfaces/BaseFuncItem.md +221 -0
  250. package/docs/api/interfaces/BinarySemaphoreAcquireOptions.md +25 -0
  251. package/docs/api/interfaces/BinarySemaphoreOptions.md +57 -0
  252. package/docs/api/interfaces/BinarySemaphoreReleaseOptions.md +25 -0
  253. package/docs/api/interfaces/BinarySemaphoreReleaserFunc.md +37 -0
  254. package/docs/api/interfaces/CancelableAbilityOptions.md +113 -0
  255. package/docs/api/interfaces/ClientFuncItem.md +326 -0
  256. package/docs/api/interfaces/EventClientFuncParams.md +51 -0
  257. package/docs/api/interfaces/EventServerFuncParams.md +73 -0
  258. package/docs/api/interfaces/FewShotPromptTemplateOptions.md +159 -0
  259. package/docs/api/interfaces/FuncItem.md +281 -0
  260. package/docs/api/interfaces/FuncParam.md +51 -0
  261. package/docs/api/interfaces/FuncParams.md +28 -0
  262. package/docs/api/interfaces/Funcs.md +15 -0
  263. package/docs/api/interfaces/HashAlgoParams.md +33 -0
  264. package/docs/api/interfaces/IClientToolTransport.md +155 -0
  265. package/docs/api/interfaces/IFileMetaInfo.md +65 -0
  266. package/docs/api/interfaces/IPubSubClientTransport.md +70 -0
  267. package/docs/api/interfaces/IPubSubServerTransport.md +241 -0
  268. package/docs/{interfaces → api/interfaces}/IReadTextFileChunksOptions.md +12 -12
  269. package/docs/api/interfaces/IServerToolTransport.md +159 -0
  270. package/docs/api/interfaces/IToolTransport.md +73 -0
  271. package/docs/api/interfaces/ITruncateToTokenLimitOptions.md +99 -0
  272. package/docs/api/interfaces/JsonFilter.md +13 -0
  273. package/docs/api/interfaces/ParseObjectArgumentOptions.md +89 -0
  274. package/docs/api/interfaces/ProbabilityItem.md +41 -0
  275. package/docs/api/interfaces/PromptExampleSelectorOptions.md +34 -0
  276. package/docs/api/interfaces/PromptTemplateOptions.md +73 -0
  277. package/docs/api/interfaces/PubSubClient.md +27 -0
  278. package/docs/api/interfaces/PubSubClientStream.md +196 -0
  279. package/docs/api/interfaces/PubSubServerSession.md +103 -0
  280. package/docs/api/interfaces/RemoteFuncItem.md +316 -0
  281. package/docs/api/interfaces/ReplacePlacehoderOptions.md +41 -0
  282. package/docs/api/interfaces/ResClientFuncParams.md +37 -0
  283. package/docs/api/interfaces/ResServerFuncParams.md +73 -0
  284. package/docs/api/interfaces/SanitizeFilenameOptions.md +25 -0
  285. package/docs/api/interfaces/SectionStringOptions.md +25 -0
  286. package/docs/api/interfaces/SemaphoreOptions.md +89 -0
  287. package/docs/api/interfaces/SemaphoreTaskItem.md +73 -0
  288. package/docs/api/interfaces/ServerFuncItem.md +339 -0
  289. package/docs/api/interfaces/ServerFuncParams.md +41 -0
  290. package/docs/api/interfaces/SplitSentenceOptions.md +41 -0
  291. package/docs/{interfaces → api/interfaces}/StreamCallbacksAndOptions.md +5 -5
  292. package/docs/{interfaces → api/interfaces}/TaskAbortControllers.md +1 -1
  293. package/docs/{interfaces → api/interfaces}/TaskPromise.md +6 -6
  294. package/docs/api/interfaces/ToolFuncPackage.md +57 -0
  295. package/docs/{namespaces → api/namespaces}/EventStates/variables/ABORT.md +1 -1
  296. package/docs/{namespaces → api/namespaces}/EventStates/variables/CONTINUE.md +1 -1
  297. package/docs/{namespaces → api/namespaces}/EventStates/variables/DONE.md +1 -1
  298. package/docs/{namespaces → api/namespaces}/EventStates/variables/STOPPED.md +1 -1
  299. package/docs/{namespaces → api/namespaces}/uuidv5/variables/DNS.md +1 -1
  300. package/docs/{namespaces → api/namespaces}/uuidv5/variables/URL.md +1 -1
  301. package/docs/{type-aliases → api/type-aliases}/AIChatContentPart.md +1 -1
  302. package/docs/{type-aliases → api/type-aliases}/AIChatMessageParam.md +1 -1
  303. package/docs/{type-aliases → api/type-aliases}/AIChatRole.md +1 -1
  304. package/docs/{type-aliases → api/type-aliases}/AIChatToolChoiceParam.md +1 -1
  305. package/docs/{type-aliases → api/type-aliases}/AIMessageType.md +1 -1
  306. package/docs/api/type-aliases/AIModelNameRule.md +14 -0
  307. package/docs/api/type-aliases/AIModelNameRuleFn.md +28 -0
  308. package/docs/api/type-aliases/AIModelNameRules.md +13 -0
  309. package/docs/{type-aliases → api/type-aliases}/AITextGenerationFinishReason.md +1 -1
  310. package/docs/api/type-aliases/ActionName.md +13 -0
  311. package/docs/api/type-aliases/ArrayMergeWay.md +11 -0
  312. package/docs/api/type-aliases/AsyncTaskId.md +11 -0
  313. package/docs/{type-aliases → api/type-aliases}/BeforeShutdownListener.md +1 -1
  314. package/docs/{type-aliases → api/type-aliases}/EventErrorListenerFn.md +1 -1
  315. package/docs/{type-aliases → api/type-aliases}/EventListenerFn.md +1 -1
  316. package/docs/api/type-aliases/FuncParamType.md +13 -0
  317. package/docs/{type-aliases → api/type-aliases}/PromptExamples.md +1 -1
  318. package/docs/api/type-aliases/PubSubClientId.md +14 -0
  319. package/docs/api/type-aliases/PubSubCtx.md +37 -0
  320. package/docs/api/type-aliases/RpcMethodHandler.md +34 -0
  321. package/docs/{type-aliases → api/type-aliases}/SemaphoreIsReadyFuncType.md +1 -1
  322. package/docs/api/type-aliases/TFunc.md +33 -0
  323. package/docs/{variables → api/variables}/AIChatRoles.md +1 -1
  324. package/docs/{variables → api/variables}/AIMessageTypes.md +1 -1
  325. package/docs/{variables → api/variables}/AITextGenerationFinishReasons.md +1 -1
  326. package/docs/{variables → api/variables}/AbortErrorCode.md +1 -1
  327. package/docs/api/variables/ActionNames.md +13 -0
  328. package/docs/{variables → api/variables}/AlreadyExistsErrorCode.md +1 -1
  329. package/docs/api/variables/ArrayMergeWay.md +25 -0
  330. package/docs/api/variables/ArrayMergeWaySymbol.md +11 -0
  331. package/docs/api/variables/ClientToolFuncSchema.md +83 -0
  332. package/docs/{variables → api/variables}/DEFAULT_CONFIG_NAME.md +1 -1
  333. package/docs/{variables → api/variables}/DefaultAsyncSemaphoreCapacity.md +1 -1
  334. package/docs/api/variables/EventBusName.md +11 -0
  335. package/docs/api/variables/EventName.md +11 -0
  336. package/docs/{variables → api/variables}/FilenameReservedRegex.md +1 -1
  337. package/docs/api/variables/FuncMetaSymbol.md +15 -0
  338. package/docs/{variables → api/variables}/InternalErrorCode.md +1 -1
  339. package/docs/{variables → api/variables}/LLM_TOKENIZER_NAMES.md +1 -1
  340. package/docs/{variables → api/variables}/LLM_TOKENIZER_NAMES_MAP.md +1 -1
  341. package/docs/{variables → api/variables}/NotFoundErrorCode.md +1 -1
  342. package/docs/{variables → api/variables}/NotImplementedErrorCode.md +1 -1
  343. package/docs/api/variables/PASSING_SCORE.md +13 -0
  344. package/docs/api/variables/RStreamErrCode.md +11 -0
  345. package/docs/api/variables/RemoteToolFuncSchema.md +84 -0
  346. package/docs/api/variables/ResponseRStreamErrCode.md +11 -0
  347. package/docs/{variables → api/variables}/SHUTDOWN_SIGNALS.md +1 -1
  348. package/docs/{variables → api/variables}/SSEChannelAlreadyClosedErrCode.md +1 -1
  349. package/docs/api/variables/SecondaryCache.md +11 -0
  350. package/docs/api/variables/ServerToolFuncSchema.md +83 -0
  351. package/docs/api/variables/StrangeHumanName.md +11 -0
  352. package/docs/api/variables/ToolAsyncCancelableBit.md +11 -0
  353. package/docs/api/variables/ToolAsyncMultiTaskBit.md +11 -0
  354. package/docs/api/variables/ToolAsyncPriorityBit.md +11 -0
  355. package/docs/{variables → api/variables}/ToolFuncSchema.md +14 -1
  356. package/docs/{variables → api/variables}/WindowsReservedNameRegex.md +1 -1
  357. package/docs/api/variables/base32768.md +11 -0
  358. package/docs/api/variables/defaultTemplateFormat.md +11 -0
  359. package/docs/api/variables/event.md +11 -0
  360. package/docs/api/variables/eventClient.md +11 -0
  361. package/docs/api/variables/eventServer.md +11 -0
  362. package/docs/api/variables/lrucache.md +11 -0
  363. package/docs/{variables → api/variables}/mimeType.md +1 -1
  364. package/docs/{variables → api/variables}/uuidNIL.md +1 -1
  365. package/docs/pubsub.md +326 -0
  366. package/docs/server_client_tools.md +88 -0
  367. package/docs/toolFunc.md +183 -0
  368. package/docs/transport.md +137 -0
  369. package/package.json +38 -38
  370. package/dist/chunk-YVFGQB4L.mjs +0 -1
  371. package/dist/index-BkwhCK1q.d.mts +0 -899
  372. package/dist/index-BkwhCK1q.d.ts +0 -899
  373. package/docs/README.md +0 -250
  374. package/docs/classes/AlreadyExistsError.md +0 -346
  375. package/docs/classes/BaseError.md +0 -359
  376. package/docs/classes/ConfigFile.md +0 -353
  377. package/docs/classes/HFEnvironment.md +0 -184
  378. package/docs/classes/HFInterpreter.md +0 -77
  379. package/docs/classes/HFTemplate.md +0 -67
  380. package/docs/classes/HfPromptTemplate.md +0 -1158
  381. package/docs/classes/NotFoundError.md +0 -346
  382. package/docs/classes/NotImplementationError.md +0 -346
  383. package/docs/classes/ReadableStreamError.md +0 -366
  384. package/docs/classes/ResClientTools.md +0 -2451
  385. package/docs/classes/ResServerTools.md +0 -2427
  386. package/docs/classes/SSEChannel.md +0 -270
  387. package/docs/classes/ToolFunc.md +0 -2201
  388. package/docs/classes/YamlTypeBaseObject.md +0 -31
  389. package/docs/enumerations/AsyncFeatureBits.md +0 -33
  390. package/docs/enumerations/AsyncFeatures.md +0 -33
  391. package/docs/enumerations/ErrorCode.md +0 -177
  392. package/docs/enumerations/HashAlgorithm.md +0 -97
  393. package/docs/functions/canonicalize.md +0 -21
  394. package/docs/functions/expandConfig.md +0 -25
  395. package/docs/functions/filenameReservedRegex.md +0 -20
  396. package/docs/functions/hfParse.md +0 -24
  397. package/docs/functions/hfTokenize.md +0 -27
  398. package/docs/functions/initShutdown.md +0 -15
  399. package/docs/functions/interpolateEnv.md +0 -29
  400. package/docs/functions/interpolateFString.md +0 -29
  401. package/docs/functions/interpolateGolangTemplate.md +0 -35
  402. package/docs/functions/parseFString.md +0 -26
  403. package/docs/functions/parseYaml.md +0 -25
  404. package/docs/functions/reControlCharsRegex.md +0 -19
  405. package/docs/functions/registerYamlTag.md +0 -21
  406. package/docs/functions/stringifyYaml.md +0 -25
  407. package/docs/functions/wait.md +0 -21
  408. package/docs/interfaces/AIChatAssistantMessageParam.md +0 -129
  409. package/docs/interfaces/AIChatContentPartImage.md +0 -29
  410. package/docs/interfaces/AIChatContentPartText.md +0 -25
  411. package/docs/interfaces/AIChatMessageParamBase.md +0 -68
  412. package/docs/interfaces/AIChatMessageToolCall.md +0 -41
  413. package/docs/interfaces/AIChatToolChoiceFuncObject.md +0 -37
  414. package/docs/interfaces/AIChatToolChoiceObject.md +0 -25
  415. package/docs/interfaces/AIChatToolFunc.md +0 -41
  416. package/docs/interfaces/AIChatToolFuncParam.md +0 -37
  417. package/docs/interfaces/AIChatToolMessageParam.md +0 -113
  418. package/docs/interfaces/AIChatToolParam.md +0 -25
  419. package/docs/interfaces/AIChatToolTypeObject.md +0 -17
  420. package/docs/interfaces/AIChatUserMessageParam.md +0 -137
  421. package/docs/interfaces/AIChoiceConfig.md +0 -65
  422. package/docs/interfaces/AIResult.md +0 -65
  423. package/docs/interfaces/AIStreamParserOptions.md +0 -21
  424. package/docs/interfaces/BaseFunc.md +0 -157
  425. package/docs/interfaces/BaseFuncItem.md +0 -101
  426. package/docs/interfaces/BinarySemaphoreAcquireOptions.md +0 -25
  427. package/docs/interfaces/BinarySemaphoreOptions.md +0 -57
  428. package/docs/interfaces/BinarySemaphoreReleaseOptions.md +0 -25
  429. package/docs/interfaces/BinarySemaphoreReleaserFunc.md +0 -37
  430. package/docs/interfaces/CancelableAbilityOptions.md +0 -113
  431. package/docs/interfaces/ClientFuncItem.md +0 -175
  432. package/docs/interfaces/DotenvExpandOptions.md +0 -43
  433. package/docs/interfaces/DotenvExpandOutput.md +0 -25
  434. package/docs/interfaces/DotenvParseInput.md +0 -13
  435. package/docs/interfaces/DotenvParseOutput.md +0 -13
  436. package/docs/interfaces/DotenvPopulateInput.md +0 -13
  437. package/docs/interfaces/EventClientFuncParams.md +0 -51
  438. package/docs/interfaces/EventServerFuncParams.md +0 -67
  439. package/docs/interfaces/FewShotPromptTemplateOptions.md +0 -147
  440. package/docs/interfaces/FuncItem.md +0 -143
  441. package/docs/interfaces/FuncParam.md +0 -61
  442. package/docs/interfaces/FuncParams.md +0 -13
  443. package/docs/interfaces/Funcs.md +0 -13
  444. package/docs/interfaces/HashAlgoParams.md +0 -33
  445. package/docs/interfaces/IFileMetaInfo.md +0 -65
  446. package/docs/interfaces/ITruncateToTokenLimitOptions.md +0 -99
  447. package/docs/interfaces/JsonFilter.md +0 -13
  448. package/docs/interfaces/ParseObjectArgumentOptions.md +0 -89
  449. package/docs/interfaces/PromptExampleSelectorOptions.md +0 -34
  450. package/docs/interfaces/PromptTemplateOptions.md +0 -65
  451. package/docs/interfaces/RemoteFuncItem.md +0 -164
  452. package/docs/interfaces/ReplacePlacehoderOptions.md +0 -41
  453. package/docs/interfaces/ResClientFuncParams.md +0 -37
  454. package/docs/interfaces/ResServerFuncParams.md +0 -69
  455. package/docs/interfaces/SanitizeFilenameOptions.md +0 -25
  456. package/docs/interfaces/SectionStringOptions.md +0 -25
  457. package/docs/interfaces/SemaphoreOptions.md +0 -89
  458. package/docs/interfaces/SemaphoreTaskItem.md +0 -73
  459. package/docs/interfaces/ServerFuncItem.md +0 -183
  460. package/docs/interfaces/ServerFuncParams.md +0 -35
  461. package/docs/interfaces/SplitSentenceOptions.md +0 -41
  462. package/docs/interfaces/ToolFuncPackage.md +0 -47
  463. package/docs/type-aliases/AIModelNameRule.md +0 -11
  464. package/docs/type-aliases/AIModelNameRuleFn.md +0 -21
  465. package/docs/type-aliases/AIModelNameRules.md +0 -11
  466. package/docs/type-aliases/ActionName.md +0 -11
  467. package/docs/type-aliases/AsyncTaskId.md +0 -11
  468. package/docs/type-aliases/FStringPromptTemplateNode.md +0 -14
  469. package/docs/type-aliases/FuncParamType.md +0 -11
  470. package/docs/type-aliases/PromptTemplateType.md +0 -11
  471. package/docs/type-aliases/PromptType.md +0 -11
  472. package/docs/type-aliases/TFunc.md +0 -25
  473. package/docs/variables/ActionNames.md +0 -11
  474. package/docs/variables/ClientToolFuncSchema.md +0 -101
  475. package/docs/variables/EventBusName.md +0 -11
  476. package/docs/variables/EventName.md +0 -11
  477. package/docs/variables/HFBuiltins.md +0 -122
  478. package/docs/variables/PASSING_SCORE.md +0 -11
  479. package/docs/variables/PromptTemplateTypes.md +0 -11
  480. package/docs/variables/PromptTypes.md +0 -14
  481. package/docs/variables/RStreamErrCode.md +0 -11
  482. package/docs/variables/RemoteToolFuncSchema.md +0 -101
  483. package/docs/variables/ResponseRStreamErrCode.md +0 -11
  484. package/docs/variables/SecondaryCache.md +0 -11
  485. package/docs/variables/ServerToolFuncSchema.md +0 -101
  486. package/docs/variables/ToolAsyncCancelableBit.md +0 -11
  487. package/docs/variables/ToolAsyncMultiTaskBit.md +0 -11
  488. package/docs/variables/ToolAsyncPriorityBit.md +0 -11
  489. package/docs/variables/base32768.md +0 -11
  490. package/docs/variables/defaultTemplateFormat.md +0 -11
  491. package/docs/variables/event.md +0 -11
  492. package/docs/variables/eventClient.md +0 -11
  493. package/docs/variables/eventServer.md +0 -11
  494. package/docs/variables/lrucache.md +0 -11
  495. /package/docs/{_media → api/_media}/LICENSE-MIT +0 -0
  496. /package/docs/{namespaces → api/namespaces}/EventStates/README.md +0 -0
  497. /package/docs/{namespaces → api/namespaces}/uuidv5/README.md +0 -0
package/README.cn.md CHANGED
@@ -1,295 +1,161 @@
1
- ## @isdk/ai-tool
1
+ # @isdk/ai-tool
2
2
 
3
- 抽象封装AI工具函数(ToolFunc),并提供一系列方便使用的 helper 函数.
3
+ 一个功能强大的 TypeScript 框架,用于创建、管理和通信模块化函数。它非常适合用于构建 AI 代理工具、后端服务以及具有清晰、解耦架构的可扩展插件系统。
4
4
 
5
- 注意: 所有的Tool Function 参数都是Obj参数,而不是位置参数
5
+ ## 核心功能
6
6
 
7
- ### ToolFunc
7
+ - **模块化与可继承的工具:** 以结构化的方式定义函数,具有清晰的类继承体系 (`ToolFunc` -> `ServerTools` -> `ResServerTools`)。
8
+ - **可插拔 RPC 传输:** 将您的业务逻辑与网络层解耦。使用 HTTP、IPC 或任何自定义协议在客户端和服务器之间进行通信。
9
+ - **可插拔 PubSub 传输:** 为通知、实时更新等功能创建实时的双向事件总线。内置了对 SSE (Server-Sent Events) 和 Electron IPC 的实现。
10
+ - **全局注册表:** 从应用程序的任何地方轻松访问任何已注册的函数。
8
11
 
9
- AI工具函数(ToolFunc), 将普通函数注册为`ToolFunc`.
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
- * `func`: 执行的工具函数主体
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
- ### ServerTools(ToolFunc)
22
+ ### 设计哲学:静态与实例
43
23
 
44
- 服务器端的AI工具函数.
24
+ `ToolFunc` 的一个关键设计原则是静态类和实例之间的角色分离:
45
25
 
46
- 注: 如果手工开发服务器,那么服务器上至少要两个API入口,一个API用于获得服务器上的所有tools,另一个API执行指定的tool.
47
- 未来再加一个EventSource API入口,感知tool注册变动。
26
+ - **作为管理者的静态类:** `ToolFunc` 的静态部分(例如 `ToolFunc.register`, `ToolFunc.run`, `ToolFunc.get`)充当全局的**注册表**和**执行器**。它管理所有工具的定义,允许您的应用程序的任何部分按名称发现和运行工具,而无需直接引用工具的实例。
48
27
 
49
- 所有需要暴露给服务器的,注册在这里,实质就是ToolFunc
28
+ - **作为工具的实例:** 一个实例 (`new ToolFunc(...)`) 代表一个单一的、具体的**工具**。它持有实际的函数逻辑、其所有的元数据(名称、描述、参数)以及任何内部状态。
50
29
 
51
- * 增加 `static toJSON()` 导出所有的服务API定义
30
+ 这种分离提供了两全其美的优势:既有用于定义单个工具的面向对象封装的能力,又有用于管理和执行它们的全局可访问服务的便利性。
52
31
 
53
- 特点: 允许导出func string,使得服务器端函数功能可以迁移到本地执行。
32
+ ### 工具继承体系
54
33
 
55
- 属性:
34
+ 该库遵循一个清晰的继承路径,在每个层级添加专门的功能。关于每种类型的详细分类以及它们如何分离业务和通信逻辑,请参阅 [**服务器与客户端工具指南**](./docs/server_client_tools.md)。
56
35
 
57
- ```ts
58
- interface ServerFuncItem extends FuncItem {
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
- 如果是`get`那么参数应该被放在query string(`p`): `p=${encodeURIComponent(JSON.stringify(objParams))}`
72
- 如果是`post`参数在body中,同样是json格式。
39
+ - **`ToolFunc`**: 任何函数的基础,包含核心逻辑和元数据。更多详情请参阅 [ToolFunc 指南](./docs/toolFunc.md)
40
+ - **`ServerTools`**: 继承自 `ToolFunc`,使其能被远程客户端发现和调用。
41
+ - **`RpcMethodsServerTool`**: 继承自 `ServerTools`,允许单个工具暴露多个方法(例如,一个带有 `add` 和 `subtract` 方法的 `Math` 工具)。
42
+ - **`ResServerTools`**: 继承自 `RpcMethodsServerTool`,用于自动提供面向资源 (CRUD) 的接口。
73
43
 
74
- ### ClientTools(ToolFunc)
44
+ **客户端继承关系:**
45
+ 客户端存在一个平行的继承体系,旨在无缝调用服务器端工具。
46
+ `ToolFunc` -> `ClientTools` -> `RpcMethodsClientTool` -> `ResClientTools`
75
47
 
76
- 用于调用远程服务器上的AI工具函数(ServerTools).
77
- 所有的远程调用没有真正的执行体,都是统一的远程API调用。
48
+ ## 使用传输层进行客户端-服务器 RPC 通信
78
49
 
79
- * 增加 `static loadFromSync(items)` 加载所有的远程调用,如果有item上有func,那么就是server调用的本地化,还是注册在ClientTools上。
80
- * `static async loadFrom()` 如果没有items,那么从 `ClientTools.apiRoot` 上 fetch items. 所以是异步
81
- * 本地执行优先:先找本地调用,没有再找远程调用
50
+ 该框架在客户端-服务器设置中大放异彩,允许您像调用本地函数一样调用后端函数。
82
51
 
83
- 特有属性:
52
+ ### 服务器端示例
84
53
 
85
- ```ts
86
- interface ClientFuncItem extends FuncItem {
87
- apiRoot?: string
88
- action?: 'get'|'post'
89
- fetchOptions?: any
90
- }
91
- ```
54
+ 使用 `ServerTools` 定义后端函数,并使用 `FastifyServerToolTransport` 通过 HTTP 将其暴露。
92
55
 
93
- ~~stream 参数~~(已经废弃,使用`isStream()`方法代替,这样更加灵活,因为后面的ResAPI中会有多个方法,有的支持流,有的不支持)加上,但是没有想好,如何在 ClientTools 上使用,因为ClientTools是抽象的,而stream需要有具体的值.
94
- 除非我这里约定为 Object stream, 一次发送一个object. 这样才能在 ClientTools 实现流.
56
+ ```typescript
57
+ // server.ts
58
+ import { ServerTools, FastifyServerToolTransport } from '@isdk/ai-tool';
95
59
 
96
- 另外如果是stream,是否能固化headers为:
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
- ```js
99
- headers.Connection = 'keep-alive' // 已加上
100
- headers.Accept = 'text/event-stream' // 这个可能不必要
101
- ```
69
+ // 创建一个传输实例并在 '/api' 前缀下挂载工具
70
+ const serverTransport = new FastifyServerToolTransport();
71
+ serverTransport.mount(ServerTools, '/api');
102
72
 
103
- 如果是stream,则func直接返回res,留待后代处理.
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
- 在Server中路由的参考实现
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
- ### ResClientTools
79
+ `mount` 方法一步即可完成设置传输和从服务器加载工具定义。
220
80
 
221
- 基于资源CRUD的ClientTools, 资源是ToolFunc的名称。
81
+ ```typescript
82
+ // client.ts
83
+ import { ClientTools, HttpClientToolTransport } from '@isdk/ai-tool';
222
84
 
223
- 根据ServerTools的加载项中的methods约定,生成对应ClientTools中的方法.
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
- ```ts
228
- ResClientTools.apiRoot = apiRoot
229
- await ResClientTools.loadFrom()
92
+ // 2. 获取远程工具并运行它
93
+ const getUserProfile = ClientTools.get('getUserProfile');
94
+ const profile = await getUserProfile.run({ id: '123' });
230
95
 
231
- const resFunc = ResClientTools.getFunc(funcName)
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
- ### SSE
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
- 也可以将其它三个方法合并为`POST /api/event`,或者自定义方法:
103
+ ## 使用 PubSub 实现实时事件
248
104
 
249
- 1. `GET /api/event` list 服务器事件通道 (stream)
250
- 2. `sub/unsub/publish`
105
+ `@isdk/ai-tool` 包含一个强大的事件系统,用于实时通信,构建于可插拔的 PubSub 传输层之上。
251
106
 
252
- #### EventClient
107
+ ### 快速示例: SSE (Server-Sent Events)
253
108
 
254
- 作用有2 主要功能为订阅与发布
109
+ **服务器端:**
110
+ ```typescript
111
+ // server.ts (新增部分)
112
+ import { EventServer, SseServerPubSubTransport, eventServer } from '@isdk/ai-tool';
255
113
 
256
- * 订阅: 订阅服务器事件,并转发到本地客户端Event-Bus
257
- * 发布: 发布消息到服务器
114
+ // EventServer 设置 PubSub 传输
115
+ EventServer.setPubSubTransport(new SseServerPubSubTransport());
116
+ eventServer.register(); // 注册默认的事件工具
258
117
 
259
- EventSource上的事件不支持RegExp(匹配)事件监听
118
+ // 现在您可以从后端的任何地方发布事件
119
+ setInterval(() => {
120
+ EventServer.publish('server-time', { time: new Date().toISOString() });
121
+ }, 2000);
122
+ ```
260
123
 
261
- 1. 将本地事件转发到服务器,通过特定的`Post` API
262
- 2. 通过`GET`API 以SSE的方式接收服务器事件,并服务器事件转发到Event-Bus
124
+ **客户端:**
125
+ ```typescript
126
+ // client.ts (新增部分)
127
+ import { EventClient, SseClientPubSubTransport, eventClient, backendEventable } from '@isdk/ai-tool';
263
128
 
264
- * initEventSource(events): 告诉服务器只接收指定的events,如果events存在,否则接收全部
265
- * subscribe(events): 订阅服务器SSE消息,并转发到Event-Bus
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
- 现在是可以不一样,单独通过forwardEvent来决定要转发的本地事件
132
+ // 使客户端具备事件处理能力并注册
133
+ backendEventable(EventClient);
134
+ eventClient.setApiRoot('http://localhost:3000/api'); // 您的 API 根路径
135
+ eventClient.register();
273
136
 
274
- 还有在哪里启用事件化? ToolFunc? 还是EventClient?
137
+ // 订阅并监听服务器事件
138
+ await eventClient.subscribe('server-time');
139
+ eventClient.on('server-time', (data) => {
140
+ console.log('来自服务器的实时时间:', data.time);
141
+ });
142
+ ```
275
143
 
276
- 我以为是在ToolFunc,这样所有的ToolFunc都支持事件! 但是作为一个基类,ToolFunc应该不关心事件,只关心执行体。
144
+ > 更多详细示例,包括 Electron IPC 传输,请参阅 [**实时事件 (PubSub) 指南**](./docs/pubsub.md)。
277
145
 
278
- 这样,还是在我的ai-tools上执行初始化的时候,加载核心函数,以及将ToolFunc事件化. 这样基类具有更大的灵活性.
146
+ ## 贡献
279
147
 
280
- #### EventServer
148
+ 如果您想为项目做出贡献,请阅读 [CONTRIBUTING.md](./CONTRIBUTING.md) 文件以获取有关如何开始的指南。
281
149
 
282
- func: 没有act,或者只传入events则是供服务器使用,有events则是限制在events范围内.
150
+ ## 许可证
283
151
 
284
- act有:
152
+ 该项目根据 MIT 许可证授权。有关更多详细信息,请参阅 [LICENSE-MIT](./LICENSE-MIT) 文件。
285
153
 
286
- * pub: 发布sse事件
287
- * sub: 转发服务器上的事件
288
- * unsub: 撤销转发服务器上的事件
154
+ ## 致谢
289
155
 
290
- ## Credit
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)