@isdk/ai-tool 0.5.0 → 0.5.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.
Files changed (329) hide show
  1. package/docs/README.md +250 -0
  2. package/docs/_media/CONTRIBUTING.md +18 -0
  3. package/docs/_media/LICENSE-MIT +22 -0
  4. package/docs/classes/AbortError.md +366 -0
  5. package/docs/classes/AlreadyExistsError.md +346 -0
  6. package/docs/classes/BaseError.md +359 -0
  7. package/docs/classes/BinarySemaphore.md +418 -0
  8. package/docs/classes/CancelableAbility.md +467 -0
  9. package/docs/classes/ClientTools.md +2715 -0
  10. package/docs/classes/CommonError.md +377 -0
  11. package/docs/classes/ConfigFile.md +353 -0
  12. package/docs/classes/EnvPromptTemplate.md +1158 -0
  13. package/docs/classes/EventClient.md +3149 -0
  14. package/docs/classes/EventEmitter.md +299 -0
  15. package/docs/classes/EventServer.md +3175 -0
  16. package/docs/classes/EventToolFunc.md +2557 -0
  17. package/docs/classes/FStringPromptTemplate.md +1158 -0
  18. package/docs/classes/FewShotPromptTemplate.md +1180 -0
  19. package/docs/classes/GolangPromptTemplate.md +1158 -0
  20. package/docs/classes/HFEnvironment.md +184 -0
  21. package/docs/classes/HFInterpreter.md +77 -0
  22. package/docs/classes/HFTemplate.md +67 -0
  23. package/docs/classes/HfPromptTemplate.md +1158 -0
  24. package/docs/classes/IntSet.md +216 -0
  25. package/docs/classes/LRUCache.md +601 -0
  26. package/docs/classes/NotFoundError.md +346 -0
  27. package/docs/classes/NotImplementationError.md +346 -0
  28. package/docs/classes/PromptExampleSelector.md +195 -0
  29. package/docs/classes/PromptTemplate.md +1088 -0
  30. package/docs/classes/ReadableStreamError.md +366 -0
  31. package/docs/classes/ResClientTools.md +2431 -0
  32. package/docs/classes/ResServerTools.md +2407 -0
  33. package/docs/classes/SSEChannel.md +270 -0
  34. package/docs/classes/Semaphore.md +538 -0
  35. package/docs/classes/ServerTools.md +2623 -0
  36. package/docs/classes/SignalGate.md +182 -0
  37. package/docs/classes/TaskAbortController.md +131 -0
  38. package/docs/classes/ToolFunc.md +2177 -0
  39. package/docs/classes/YamlTypeBaseObject.md +31 -0
  40. package/docs/enumerations/AsyncFeatureBits.md +33 -0
  41. package/docs/enumerations/AsyncFeatures.md +33 -0
  42. package/docs/enumerations/ErrorCode.md +177 -0
  43. package/docs/enumerations/HashAlgorithm.md +97 -0
  44. package/docs/functions/AIArgProcessor.md +33 -0
  45. package/docs/functions/AIStream.md +52 -0
  46. package/docs/functions/ChoiceArgProcessor.md +33 -0
  47. package/docs/functions/ObjectArgsToArgsInfo.md +29 -0
  48. package/docs/functions/RateLimit.md +37 -0
  49. package/docs/functions/TemplateArgProcessor.md +33 -0
  50. package/docs/functions/assignDirs.md +33 -0
  51. package/docs/functions/backendEventable.md +29 -0
  52. package/docs/functions/beforeShutdown.md +29 -0
  53. package/docs/functions/canonicalize.md +21 -0
  54. package/docs/functions/completeSentences.md +25 -0
  55. package/docs/functions/concatText.md +25 -0
  56. package/docs/functions/countLLMTokens.md +25 -0
  57. package/docs/functions/countRegexMatches.md +35 -0
  58. package/docs/functions/createAbilityInjector.md +119 -0
  59. package/docs/functions/createCallbacksTransformer.md +49 -0
  60. package/docs/functions/createEmptyReadableStream.md +21 -0
  61. package/docs/functions/createEndWithRepetitionDetector.md +31 -0
  62. package/docs/functions/createError.md +39 -0
  63. package/docs/functions/createEventStreamTransformer.md +33 -0
  64. package/docs/functions/createHfValueFunc.md +31 -0
  65. package/docs/functions/createLRUCache.md +25 -0
  66. package/docs/functions/createYamlObjectTag.md +25 -0
  67. package/docs/functions/dateToText.md +25 -0
  68. package/docs/functions/decodeCharset.md +25 -0
  69. package/docs/functions/detectCharset.md +25 -0
  70. package/docs/functions/encodeLLMTokens.md +25 -0
  71. package/docs/functions/ensureQuoted.md +25 -0
  72. package/docs/functions/eventable.md +82 -0
  73. package/docs/functions/expandConfig.md +25 -0
  74. package/docs/functions/expandEnv.md +40 -0
  75. package/docs/functions/expandObjEnv.md +58 -0
  76. package/docs/functions/expandPath.md +25 -0
  77. package/docs/functions/extNameLevel.md +43 -0
  78. package/docs/functions/fileIsExists.md +34 -0
  79. package/docs/functions/filenameReservedRegex.md +20 -0
  80. package/docs/functions/filterValidFnScope.md +21 -0
  81. package/docs/functions/findIndexNonEmptyFrom.md +25 -0
  82. package/docs/functions/findPort.md +25 -0
  83. package/docs/functions/formatISO.md +69 -0
  84. package/docs/functions/formatTextWithSpace.md +63 -0
  85. package/docs/functions/getAllEnumKeys.md +31 -0
  86. package/docs/functions/getConfigFileNames.md +25 -0
  87. package/docs/functions/getConfigs.md +25 -0
  88. package/docs/functions/getEnvVairables.md +21 -0
  89. package/docs/functions/getFileMetaInfo.md +21 -0
  90. package/docs/functions/getHashAlgoBySize.md +21 -0
  91. package/docs/functions/getKeysPath.md +38 -0
  92. package/docs/functions/getLLMTokenizer.md +21 -0
  93. package/docs/functions/getMultiLevelExtname.md +33 -0
  94. package/docs/functions/getPackageDir.md +39 -0
  95. package/docs/functions/getRealFilepath.md +34 -0
  96. package/docs/functions/getResponseErrorReadableStream.md +21 -0
  97. package/docs/functions/getXDGConfigs.md +37 -0
  98. package/docs/functions/hasDirectoryIn.md +40 -0
  99. package/docs/functions/hash.md +25 -0
  100. package/docs/functions/hashFile.md +25 -0
  101. package/docs/functions/hashStream.md +25 -0
  102. package/docs/functions/hfParse.md +24 -0
  103. package/docs/functions/hfTokenize.md +27 -0
  104. package/docs/functions/initShutdown.md +15 -0
  105. package/docs/functions/interpolateEnv.md +29 -0
  106. package/docs/functions/interpolateFString.md +29 -0
  107. package/docs/functions/interpolateGolangTemplate.md +35 -0
  108. package/docs/functions/isLangUsingSpaces.md +21 -0
  109. package/docs/functions/isListItemString.md +21 -0
  110. package/docs/functions/isModelNameMatched.md +47 -0
  111. package/docs/functions/isPunctuationChar.md +36 -0
  112. package/docs/functions/isQuoted.md +21 -0
  113. package/docs/functions/isRegExp.md +21 -0
  114. package/docs/functions/isSameString.md +36 -0
  115. package/docs/functions/isSectionString.md +25 -0
  116. package/docs/functions/isSentenceEnding.md +21 -0
  117. package/docs/functions/isSepLineString.md +21 -0
  118. package/docs/functions/isStrWrapped.md +25 -0
  119. package/docs/functions/isSubdirectory.md +41 -0
  120. package/docs/functions/isTitleString.md +25 -0
  121. package/docs/functions/isValidFilename.md +38 -0
  122. package/docs/functions/isValidFilepath.md +27 -0
  123. package/docs/functions/isWebStream.md +21 -0
  124. package/docs/functions/jsonFilterToWhere.md +47 -0
  125. package/docs/functions/jsonToMarkdownStr.md +39 -0
  126. package/docs/functions/loadAIConfig.md +21 -0
  127. package/docs/functions/loadConfig.md +25 -0
  128. package/docs/functions/loadConfigFile.md +25 -0
  129. package/docs/functions/loadFileFromPaths.md +64 -0
  130. package/docs/functions/loadTextFromPaths.md +37 -0
  131. package/docs/functions/lrucache.md +35 -0
  132. package/docs/functions/makeToolFuncCancelable.md +29 -0
  133. package/docs/functions/matchUrlProtocol.md +48 -0
  134. package/docs/functions/memoize.md +29 -0
  135. package/docs/functions/messagesToText.md +21 -0
  136. package/docs/functions/paramsSizeToScaleStr.md +34 -0
  137. package/docs/functions/parseCommand.md +29 -0
  138. package/docs/functions/parseDateFormat.md +362 -0
  139. package/docs/functions/parseFString.md +26 -0
  140. package/docs/functions/parseISO.md +70 -0
  141. package/docs/functions/parseJsJson.md +40 -0
  142. package/docs/functions/parseJsJsonSimpleSync.md +25 -0
  143. package/docs/functions/parseObjectArgInfo.md +33 -0
  144. package/docs/functions/parseObjectArgumentInfos.md +29 -0
  145. package/docs/functions/parseObjectArguments.md +72 -0
  146. package/docs/functions/parseObjectArgumentsAsArgInfos.md +46 -0
  147. package/docs/functions/parseYaml.md +25 -0
  148. package/docs/functions/quoteStr.md +21 -0
  149. package/docs/functions/reControlCharsRegex.md +19 -0
  150. package/docs/functions/readFilenamesRecursiveSync.md +53 -0
  151. package/docs/functions/readTextFileChunks.md +53 -0
  152. package/docs/functions/readTextFileChunksEx.md +25 -0
  153. package/docs/functions/readableFromAsyncIterable.md +28 -0
  154. package/docs/functions/registerCoreTools.md +15 -0
  155. package/docs/functions/registerYamlTag.md +21 -0
  156. package/docs/functions/removeMarkdownBold.md +25 -0
  157. package/docs/functions/removeMarkdownBoldAndItalic.md +25 -0
  158. package/docs/functions/removeMarkdownItalic.md +25 -0
  159. package/docs/functions/replaceWithPlaceholder.md +43 -0
  160. package/docs/functions/restoreFromPlacehoders.md +49 -0
  161. package/docs/functions/sanitizeFilename.md +39 -0
  162. package/docs/functions/sanitizeFilepath.md +33 -0
  163. package/docs/functions/saveConfigFile.md +29 -0
  164. package/docs/functions/scaleStrToParamsSize.md +27 -0
  165. package/docs/functions/shutdown.md +33 -0
  166. package/docs/functions/simplifyObjectArguments.md +21 -0
  167. package/docs/functions/sortedValues.md +25 -0
  168. package/docs/functions/splitChunks.md +25 -0
  169. package/docs/functions/splitParagraph.md +34 -0
  170. package/docs/functions/splitSentence.md +39 -0
  171. package/docs/functions/stringifyYaml.md +25 -0
  172. package/docs/functions/stripConsoleColor.md +21 -0
  173. package/docs/functions/textToDate.md +25 -0
  174. package/docs/functions/throwError.md +41 -0
  175. package/docs/functions/toDate.md +74 -0
  176. package/docs/functions/toDateTime.md +21 -0
  177. package/docs/functions/toRegExp.md +34 -0
  178. package/docs/functions/trimStartOfStreamHelper.md +41 -0
  179. package/docs/functions/truncTo.md +51 -0
  180. package/docs/functions/truncateByToken.md +25 -0
  181. package/docs/functions/truncateToTokenLimit.md +46 -0
  182. package/docs/functions/truncateToTokenLimitEx.md +25 -0
  183. package/docs/functions/uuid.md +25 -0
  184. package/docs/functions/uuidParse.md +21 -0
  185. package/docs/functions/uuidStringify.md +25 -0
  186. package/docs/functions/uuidValidate.md +21 -0
  187. package/docs/functions/uuidVersion.md +21 -0
  188. package/docs/functions/uuidv1.md +55 -0
  189. package/docs/functions/uuidv4.md +55 -0
  190. package/docs/functions/uuidv5.md +63 -0
  191. package/docs/functions/wait.md +21 -0
  192. package/docs/functions/wrapEventEmitter.md +27 -0
  193. package/docs/functions/xxhash.md +29 -0
  194. package/docs/functions/xxhash32.md +25 -0
  195. package/docs/functions/xxhash64.md +25 -0
  196. package/docs/functions/xxhashAsStr.md +29 -0
  197. package/docs/globals.md +329 -0
  198. package/docs/interfaces/AIChatAssistantMessageParam.md +129 -0
  199. package/docs/interfaces/AIChatContentPartImage.md +29 -0
  200. package/docs/interfaces/AIChatContentPartText.md +25 -0
  201. package/docs/interfaces/AIChatMessageParamBase.md +68 -0
  202. package/docs/interfaces/AIChatMessageToolCall.md +41 -0
  203. package/docs/interfaces/AIChatSystemMessageParam.md +105 -0
  204. package/docs/interfaces/AIChatToolChoiceFuncObject.md +37 -0
  205. package/docs/interfaces/AIChatToolChoiceObject.md +25 -0
  206. package/docs/interfaces/AIChatToolFunc.md +41 -0
  207. package/docs/interfaces/AIChatToolFuncParam.md +37 -0
  208. package/docs/interfaces/AIChatToolMessageParam.md +113 -0
  209. package/docs/interfaces/AIChatToolParam.md +25 -0
  210. package/docs/interfaces/AIChatToolTypeObject.md +17 -0
  211. package/docs/interfaces/AIChatUserMessageParam.md +137 -0
  212. package/docs/interfaces/AIChoiceConfig.md +65 -0
  213. package/docs/interfaces/AIResult.md +65 -0
  214. package/docs/interfaces/AIStreamParser.md +43 -0
  215. package/docs/interfaces/AIStreamParserOptions.md +21 -0
  216. package/docs/interfaces/BaseFunc.md +145 -0
  217. package/docs/interfaces/BaseFuncItem.md +93 -0
  218. package/docs/interfaces/BinarySemaphoreAcquireOptions.md +25 -0
  219. package/docs/interfaces/BinarySemaphoreOptions.md +57 -0
  220. package/docs/interfaces/BinarySemaphoreReleaseOptions.md +25 -0
  221. package/docs/interfaces/BinarySemaphoreReleaserFunc.md +37 -0
  222. package/docs/interfaces/CancelableAbilityOptions.md +113 -0
  223. package/docs/interfaces/ClientFuncItem.md +163 -0
  224. package/docs/interfaces/DotenvExpandOptions.md +43 -0
  225. package/docs/interfaces/DotenvExpandOutput.md +25 -0
  226. package/docs/interfaces/DotenvParseInput.md +13 -0
  227. package/docs/interfaces/DotenvParseOutput.md +13 -0
  228. package/docs/interfaces/DotenvPopulateInput.md +13 -0
  229. package/docs/interfaces/EventClientFuncParams.md +51 -0
  230. package/docs/interfaces/EventServerFuncParams.md +67 -0
  231. package/docs/interfaces/FewShotPromptTemplateOptions.md +147 -0
  232. package/docs/interfaces/FuncItem.md +131 -0
  233. package/docs/interfaces/FuncParam.md +61 -0
  234. package/docs/interfaces/FuncParams.md +13 -0
  235. package/docs/interfaces/Funcs.md +13 -0
  236. package/docs/interfaces/HashAlgoParams.md +33 -0
  237. package/docs/interfaces/IFileMetaInfo.md +65 -0
  238. package/docs/interfaces/IReadTextFileChunksOptions.md +143 -0
  239. package/docs/interfaces/ITruncateToTokenLimitOptions.md +99 -0
  240. package/docs/interfaces/JsonFilter.md +13 -0
  241. package/docs/interfaces/ParseObjectArgumentOptions.md +89 -0
  242. package/docs/interfaces/PromptExampleSelectorOptions.md +34 -0
  243. package/docs/interfaces/PromptTemplateOptions.md +65 -0
  244. package/docs/interfaces/RemoteFuncItem.md +152 -0
  245. package/docs/interfaces/ReplacePlacehoderOptions.md +41 -0
  246. package/docs/interfaces/ResClientFuncParams.md +37 -0
  247. package/docs/interfaces/ResServerFuncParams.md +69 -0
  248. package/docs/interfaces/SanitizeFilenameOptions.md +25 -0
  249. package/docs/interfaces/SectionStringOptions.md +25 -0
  250. package/docs/interfaces/SemaphoreOptions.md +89 -0
  251. package/docs/interfaces/SemaphoreTaskItem.md +73 -0
  252. package/docs/interfaces/ServerFuncItem.md +171 -0
  253. package/docs/interfaces/ServerFuncParams.md +35 -0
  254. package/docs/interfaces/SplitSentenceOptions.md +41 -0
  255. package/docs/interfaces/StreamCallbacksAndOptions.md +99 -0
  256. package/docs/interfaces/TaskAbortControllers.md +13 -0
  257. package/docs/interfaces/TaskPromise.md +138 -0
  258. package/docs/interfaces/ToolFuncPackage.md +47 -0
  259. package/docs/namespaces/EventStates/README.md +14 -0
  260. package/docs/namespaces/EventStates/variables/ABORT.md +11 -0
  261. package/docs/namespaces/EventStates/variables/CONTINUE.md +11 -0
  262. package/docs/namespaces/EventStates/variables/DONE.md +11 -0
  263. package/docs/namespaces/EventStates/variables/STOPPED.md +11 -0
  264. package/docs/namespaces/uuidv5/README.md +12 -0
  265. package/docs/namespaces/uuidv5/variables/DNS.md +11 -0
  266. package/docs/namespaces/uuidv5/variables/URL.md +11 -0
  267. package/docs/type-aliases/AIChatContentPart.md +11 -0
  268. package/docs/type-aliases/AIChatMessageParam.md +11 -0
  269. package/docs/type-aliases/AIChatRole.md +11 -0
  270. package/docs/type-aliases/AIChatToolChoiceParam.md +11 -0
  271. package/docs/type-aliases/AIMessageType.md +11 -0
  272. package/docs/type-aliases/AIModelNameRule.md +11 -0
  273. package/docs/type-aliases/AIModelNameRuleFn.md +21 -0
  274. package/docs/type-aliases/AIModelNameRules.md +11 -0
  275. package/docs/type-aliases/AITextGenerationFinishReason.md +11 -0
  276. package/docs/type-aliases/ActionName.md +11 -0
  277. package/docs/type-aliases/AsyncTaskId.md +11 -0
  278. package/docs/type-aliases/BeforeShutdownListener.md +23 -0
  279. package/docs/type-aliases/EventErrorListenerFn.md +33 -0
  280. package/docs/type-aliases/EventListenerFn.md +29 -0
  281. package/docs/type-aliases/FStringPromptTemplateNode.md +14 -0
  282. package/docs/type-aliases/FuncParamType.md +11 -0
  283. package/docs/type-aliases/PromptExamples.md +15 -0
  284. package/docs/type-aliases/PromptTemplateType.md +11 -0
  285. package/docs/type-aliases/PromptType.md +11 -0
  286. package/docs/type-aliases/SemaphoreIsReadyFuncType.md +15 -0
  287. package/docs/type-aliases/TFunc.md +25 -0
  288. package/docs/variables/AIChatRoles.md +11 -0
  289. package/docs/variables/AIMessageTypes.md +11 -0
  290. package/docs/variables/AITextGenerationFinishReasons.md +11 -0
  291. package/docs/variables/AbortErrorCode.md +11 -0
  292. package/docs/variables/ActionNames.md +11 -0
  293. package/docs/variables/AlreadyExistsErrorCode.md +11 -0
  294. package/docs/variables/ClientToolFuncSchema.md +101 -0
  295. package/docs/variables/DEFAULT_CONFIG_NAME.md +11 -0
  296. package/docs/variables/DefaultAsyncSemaphoreCapacity.md +11 -0
  297. package/docs/variables/EventBusName.md +11 -0
  298. package/docs/variables/EventName.md +11 -0
  299. package/docs/variables/FilenameReservedRegex.md +14 -0
  300. package/docs/variables/HFBuiltins.md +122 -0
  301. package/docs/variables/InternalErrorCode.md +11 -0
  302. package/docs/variables/LLM_TOKENIZER_NAMES.md +81 -0
  303. package/docs/variables/LLM_TOKENIZER_NAMES_MAP.md +11 -0
  304. package/docs/variables/NotFoundErrorCode.md +11 -0
  305. package/docs/variables/NotImplementedErrorCode.md +11 -0
  306. package/docs/variables/PASSING_SCORE.md +11 -0
  307. package/docs/variables/PromptTemplateTypes.md +11 -0
  308. package/docs/variables/PromptTypes.md +14 -0
  309. package/docs/variables/RStreamErrCode.md +11 -0
  310. package/docs/variables/RemoteToolFuncSchema.md +101 -0
  311. package/docs/variables/ResponseRStreamErrCode.md +11 -0
  312. package/docs/variables/SHUTDOWN_SIGNALS.md +17 -0
  313. package/docs/variables/SSEChannelAlreadyClosedErrCode.md +11 -0
  314. package/docs/variables/SecondaryCache.md +11 -0
  315. package/docs/variables/ServerToolFuncSchema.md +101 -0
  316. package/docs/variables/ToolAsyncCancelableBit.md +11 -0
  317. package/docs/variables/ToolAsyncMultiTaskBit.md +11 -0
  318. package/docs/variables/ToolAsyncPriorityBit.md +11 -0
  319. package/docs/variables/ToolFuncSchema.md +133 -0
  320. package/docs/variables/WindowsReservedNameRegex.md +13 -0
  321. package/docs/variables/base32768.md +11 -0
  322. package/docs/variables/defaultTemplateFormat.md +11 -0
  323. package/docs/variables/event.md +11 -0
  324. package/docs/variables/eventClient.md +11 -0
  325. package/docs/variables/eventServer.md +11 -0
  326. package/docs/variables/lrucache.md +11 -0
  327. package/docs/variables/mimeType.md +11 -0
  328. package/docs/variables/uuidNIL.md +11 -0
  329. package/package.json +1 -1
package/docs/README.md ADDED
@@ -0,0 +1,250 @@
1
+ **@isdk/ai-tool**
2
+
3
+ ***
4
+
5
+ # @isdk/ai-tool
6
+
7
+ A library for abstracting AI utility functions (`ToolFunc`), providing a series of convenient helper functions.
8
+
9
+ **Note:** All `ToolFunc` parameters are object-based, not positional.
10
+
11
+ ## Installation
12
+
13
+ 1. Install the package:
14
+
15
+ ```bash
16
+ npm install @isdk/ai-tool
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ## ToolFunc
22
+
23
+ Register ordinary functions as `ToolFunc`.
24
+
25
+ ### Example
26
+
27
+ ```ts
28
+ import { ToolFunc } from '@isdk/ai-tool';
29
+
30
+ // Register a function directly
31
+ ToolFunc.register({
32
+ name: 'add',
33
+ description: 'Return the sum of a and b',
34
+ params: { a: { type: 'number' }, b: { type: 'number' } },
35
+ result: 'number',
36
+ func: ({ a, b }: { a: number; b: number }) => a + b,
37
+ });
38
+
39
+ console.log('Result:', ToolFunc.runSync('add', { a: 1, b: 2 }));
40
+ // Result: 3
41
+ ```
42
+
43
+ Properties
44
+
45
+ * `func`: The main body of the tool function.
46
+ * `name`: Name of the tool function.
47
+ * `params`: Parameter schema for the tool function.
48
+ * `result`: Return type of the tool function.
49
+ * `scope`: Scope of the function.
50
+ * `description`: Description of the tool function.
51
+ * `setup`: Executed during the construction of the ToolFunc instance.
52
+ * `depends`: Dependencies on other ToolFunc instances.
53
+
54
+ ### ServerTools (extends ToolFunc)
55
+
56
+ Server-side AI tool functions.
57
+
58
+ **Features**
59
+
60
+ * Allows exporting the function body as a string for local execution.
61
+ * Provides a static `toJSON()` method to export all service API definitions.
62
+
63
+ ```ts
64
+ interface ServerFuncItem extends FuncItem {
65
+ apiRoot?: string
66
+ /**
67
+ * API request method, can be 'get' or 'post'
68
+ */
69
+ action?: 'get'|'post'
70
+ // Options for the Node.js fetch function
71
+ fetchOptions?: any
72
+ // Whether to allow exporting the func body itself, default to false
73
+ allowExportFunc?: boolean
74
+ }
75
+ ```
76
+
77
+ Usage: Parameters are sent via query string for GET requests and in the body for POST requests.
78
+
79
+ ### ClientTools (extends ToolFunc)
80
+
81
+ Used to call remote AI tool functions (ServerTools).
82
+
83
+ **Features**
84
+
85
+ * Supports loading all remote calls with static loadFromSync(items) and static async loadFrom().
86
+ * Prioritizes local execution over remote calls.
87
+
88
+ ```ts
89
+ interface ClientFuncItem extends FuncItem {
90
+ apiRoot?: string
91
+ action?: 'get'|'post'
92
+ fetchOptions?: any
93
+ }
94
+ ```
95
+
96
+ ### ResServerTools
97
+
98
+ Resource-based server tools, where resources are named ToolFunc.
99
+
100
+ #### Methods
101
+
102
+ * `GET /api/res/:id`: Get resource.
103
+ * `GET /api/res`: List resources.
104
+ * `POST /api/res`: Create resource.
105
+ * `PUT /api/res/:id`: Update resource.
106
+ * `DELETE /api/res/:id`: Delete resource.
107
+
108
+ #### Custom Methods
109
+
110
+ Methods prefixed with `$` are custom resource methods, accessible via `POST`.
111
+
112
+ Example
113
+
114
+ ```ts
115
+ class TestResTool extends ResServerTools {
116
+ items: any = {}
117
+ params: FuncParams = {
118
+ 'id': {type: 'number'},
119
+ 'val': {type: 'any'},
120
+ }
121
+ $customMethod({id}: ResServerFuncParams) {
122
+ if (id) {
123
+ const item = this.items[id]
124
+ if (!item) {
125
+ throw new NotFoundError(id, 'res')
126
+ }
127
+ return {name: 'customMethod', id, item}
128
+ }
129
+ }
130
+ get({id}: ResServerFuncParams) {
131
+ if (id) {
132
+ const item = this.items[id]
133
+ if (!item) {
134
+ throw new NotFoundError(id, 'res')
135
+ }
136
+ return item
137
+ }
138
+ }
139
+ post({id, val}: ResServerFuncParams) {
140
+ if (id !== undefined && val !== undefined) {
141
+ this.items[id] = val
142
+ return {id}
143
+ } else {
144
+ throwError('id or val is undefined')
145
+ }
146
+ }
147
+ list() {
148
+ return Object.keys(this.items)
149
+ }
150
+ delete({id}: ResServerFuncParams) {
151
+ if (id) {
152
+ const item = this.items[id]
153
+ if (item === undefined) {
154
+ throw new NotFoundError(id, 'res')
155
+ }
156
+ delete this.items[id]
157
+ return {id}
158
+ }
159
+ }
160
+ }
161
+ ResServerTools.apiRoot = apiRoot
162
+ const res = new TestResTool('res')
163
+ res.register()
164
+ ```
165
+
166
+ ### ResClientTools
167
+
168
+ Resource-based client tools that generate methods based on ServerTools agreements.
169
+
170
+ Example
171
+
172
+ ```ts
173
+ ResClientTools.apiRoot = apiRoot
174
+ await ResClientTools.loadFrom()
175
+
176
+ const resFunc = ResClientTools.getFunc(funcName)
177
+ if (resFunc) {
178
+ let result = await res.post({id: '...', val: '...'})
179
+ result = await res.put({id: '...', val: '...'})
180
+ result = await res.get({id: '...'})
181
+ result = await res.customMethod({id: '...'})
182
+ }
183
+ ```
184
+
185
+ ### SSE (Server-Sent Events)
186
+
187
+ Endpoints
188
+
189
+ * `GET /api/event`: List server event channel (stream).
190
+ * `POST /api/event`: Subscribe to server events.
191
+ * `DELETE /api/event`: Unsubscribe from server events.
192
+ * `PUT /api/event`: Publish messages to server events.
193
+
194
+ ### EventClient
195
+
196
+ The `EventClient` component facilitates communication between the client and server through Server-Sent Events (SSE). Its primary responsibilities include subscribing to server events and publishing messages to the server.
197
+
198
+ #### Key Features
199
+
200
+ - **Subscription**: Subscribes to server events and forwards them to the local client's event bus.
201
+ - **Publication**: Publishes messages to the server.
202
+
203
+ #### EventClient Methods
204
+
205
+ - `initEventSource(events)`: Specifies which events to receive from the server. If `events` is not provided, all events are received.
206
+ - `subscribe(events)`: Subscribes to specified server events and forwards them to the local event bus.
207
+ - Note: It's important to distinguish between local and server-originated messages. Server messages that were previously forwarded from local events should not be re-forwarded to avoid infinite loops.
208
+ - `unsubscribe(events)`: Cancels subscriptions to specified server events.
209
+ - `forwardEvent(events)`: Forwards specific local events to the server.
210
+ - `unforwardEvent(events)`: Stops forwarding specific local events to the server.
211
+
212
+ #### Considerations
213
+
214
+ - Local events that need to be forwarded to the server can be managed independently through the `forwardEvent` method.
215
+ - Event handling logic should be decoupled from the core functionality of `ToolFunc` to maintain flexibility and separation of concerns.
216
+
217
+ ### EventServer
218
+
219
+ The `EventServer` component manages server-side event processing, including publishing and subscribing to events.
220
+
221
+ **Key Features**
222
+
223
+ - **Publishing**: Publishes events to clients via SSE.
224
+ - **Subscribing**: Manages subscriptions to events on the server side.
225
+
226
+ **Actions**
227
+
228
+ - `pub`: Publishes an SSE event.
229
+ - `sub`: Subscribes to server events.
230
+ - `unsub`: Unsubscribes from server events.
231
+
232
+ **Usage**
233
+
234
+ - Functions without an `act` or with only `events` specified are used for server-side event handling.
235
+ - Functions with an `act` define specific actions such as publishing, subscribing, or unsubscribing from events.
236
+
237
+ ## Contribution
238
+
239
+ If you would like to contribute to the project, please read the [CONTRIBUTING.md](_media/CONTRIBUTING.md) file for guidelines on how to get started.
240
+
241
+ ## License
242
+
243
+ The project is licensed under the MIT License. See the [LICENSE-MIT](_media/LICENSE-MIT) file for more details.
244
+
245
+ ## Credit
246
+
247
+ * [@huggingface/jinja](https://github.com/huggingface/huggingface.js)
248
+ * [eventsource-parser](https://github.com/rexxars/eventsource-parser)
249
+ * [async-sema](https://github.com/vercel/async-sema)
250
+ * [modelfusion](https://github.com/vercel/modelfusion)
@@ -0,0 +1,18 @@
1
+ # Contributing
2
+
3
+ Please feel free to file GitHub Issues or propose Pull Requests. We're always happy to discuss improvements to this library!
4
+
5
+ ## Testing
6
+
7
+ ```shell
8
+ npm test
9
+ ```
10
+
11
+ ## Releasing
12
+
13
+ Releases are supposed to be done from master, version bumping is automated through [`standard-version`](https://github.com/absolute-version/commit-and-tag-version):
14
+
15
+ ```shell
16
+ npm run release -- --dry-run # verify output manually
17
+ npm run release # follow the instructions from the output of this command
18
+ ```
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2023 Riceball LEE
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,366 @@
1
+ [**@isdk/ai-tool**](../README.md)
2
+
3
+ ***
4
+
5
+ [@isdk/ai-tool](../globals.md) / AbortError
6
+
7
+ # Class: AbortError
8
+
9
+ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/common-error/dist/index.d.ts:142
10
+
11
+ BaseError class that extends the Error class.
12
+
13
+ ## Example
14
+
15
+ ```ts
16
+ // Create a custom error
17
+ class CustomError extends BaseError {
18
+ static code = 'customError';
19
+ constructor(message: string) {
20
+ super(message);
21
+ }
22
+ }
23
+
24
+ // Throw the custom error
25
+ throw new CustomError('This is a custom error');
26
+ ```
27
+
28
+ ## Description
29
+
30
+ This class is used to create custom errors that extend the built-in Error class. It provides a way to define custom error codes and additional data associated with the error.
31
+
32
+ ## Method
33
+
34
+ toJSON - Returns a JSON representation of the error.
35
+
36
+ ## Method
37
+
38
+ fromJSON - Creates a new BaseError instance from a JSON representation.
39
+
40
+ ## Extends
41
+
42
+ - [`CommonError`](CommonError.md)
43
+
44
+ ## Constructors
45
+
46
+ ### new AbortError()
47
+
48
+ > **new AbortError**(`what`?, `name`?): [`AbortError`](AbortError.md)
49
+
50
+ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/common-error/dist/index.d.ts:144
51
+
52
+ #### Parameters
53
+
54
+ ##### what?
55
+
56
+ `string`
57
+
58
+ ##### name?
59
+
60
+ `string` | `Record`\<`string`, `any`\>
61
+
62
+ #### Returns
63
+
64
+ [`AbortError`](AbortError.md)
65
+
66
+ #### Overrides
67
+
68
+ [`CommonError`](CommonError.md).[`constructor`](CommonError.md#constructors)
69
+
70
+ ## Properties
71
+
72
+ ### caller
73
+
74
+ > **caller**: `string`
75
+
76
+ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/common-error/dist/index.d.ts:63
77
+
78
+ The name of the function that threw the error.
79
+
80
+ #### Inherited from
81
+
82
+ [`CommonError`](CommonError.md).[`caller`](CommonError.md#caller)
83
+
84
+ ***
85
+
86
+ ### cause?
87
+
88
+ > `optional` **cause**: `unknown`
89
+
90
+ Defined in: node\_modules/.pnpm/typescript@5.7.2/node\_modules/typescript/lib/lib.es2022.error.d.ts:26
91
+
92
+ #### Inherited from
93
+
94
+ [`CommonError`](CommonError.md).[`cause`](CommonError.md#cause)
95
+
96
+ ***
97
+
98
+ ### code
99
+
100
+ > **code**: `ErrorCodeType`
101
+
102
+ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/common-error/dist/index.d.ts:64
103
+
104
+ the error code
105
+
106
+ #### Inherited from
107
+
108
+ [`CommonError`](CommonError.md).[`code`](CommonError.md#code)
109
+
110
+ ***
111
+
112
+ ### data?
113
+
114
+ > `optional` **data**: `any`
115
+
116
+ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/common-error/dist/index.d.ts:65
117
+
118
+ Additional data associated with the error.
119
+
120
+ #### Inherited from
121
+
122
+ [`CommonError`](CommonError.md).[`data`](CommonError.md#data)
123
+
124
+ ***
125
+
126
+ ### message
127
+
128
+ > **message**: `string`
129
+
130
+ Defined in: node\_modules/.pnpm/typescript@5.7.2/node\_modules/typescript/lib/lib.es5.d.ts:1077
131
+
132
+ #### Inherited from
133
+
134
+ [`CommonError`](CommonError.md).[`message`](CommonError.md#message-1)
135
+
136
+ ***
137
+
138
+ ### name
139
+
140
+ > **name**: `string`
141
+
142
+ Defined in: node\_modules/.pnpm/typescript@5.7.2/node\_modules/typescript/lib/lib.es5.d.ts:1076
143
+
144
+ #### Inherited from
145
+
146
+ [`CommonError`](CommonError.md).[`name`](CommonError.md#name-1)
147
+
148
+ ***
149
+
150
+ ### stack?
151
+
152
+ > `optional` **stack**: `string`
153
+
154
+ Defined in: node\_modules/.pnpm/typescript@5.7.2/node\_modules/typescript/lib/lib.es5.d.ts:1078
155
+
156
+ #### Inherited from
157
+
158
+ [`CommonError`](CommonError.md).[`stack`](CommonError.md#stack)
159
+
160
+ ***
161
+
162
+ ### code
163
+
164
+ > `static` **code**: [`ErrorCode`](../enumerations/ErrorCode.md)
165
+
166
+ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/common-error/dist/index.d.ts:143
167
+
168
+ The error code associated with the error.
169
+
170
+ #### Overrides
171
+
172
+ [`CommonError`](CommonError.md).[`code`](CommonError.md#code-1)
173
+
174
+ ***
175
+
176
+ ### prepareStackTrace()?
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
191
+
192
+ `CallSite`[]
193
+
194
+ #### Returns
195
+
196
+ `any`
197
+
198
+ #### See
199
+
200
+ https://v8.dev/docs/stack-trace-api#customizing-stack-traces
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
213
+
214
+ #### Inherited from
215
+
216
+ [`CommonError`](CommonError.md).[`stackTraceLimit`](CommonError.md#stacktracelimit)
217
+
218
+ ## Methods
219
+
220
+ ### fromJSON()
221
+
222
+ > **fromJSON**(`json`): [`BaseError`](BaseError.md)
223
+
224
+ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/common-error/dist/index.d.ts:93
225
+
226
+ Creates a new BaseError instance from a JSON representation.
227
+
228
+ #### Parameters
229
+
230
+ ##### json
231
+
232
+ `any`
233
+
234
+ A JSON representation of the error.
235
+
236
+ #### Returns
237
+
238
+ [`BaseError`](BaseError.md)
239
+
240
+ A new BaseError instance.
241
+
242
+ #### Inherited from
243
+
244
+ [`CommonError`](CommonError.md).[`fromJSON`](CommonError.md#fromjson)
245
+
246
+ ***
247
+
248
+ ### toJSON()
249
+
250
+ > **toJSON**(): `any`
251
+
252
+ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/common-error/dist/index.d.ts:86
253
+
254
+ Returns a JSON representation of the error.
255
+
256
+ #### Returns
257
+
258
+ `any`
259
+
260
+ A JSON representation of the error.
261
+
262
+ #### Inherited from
263
+
264
+ [`CommonError`](CommonError.md).[`toJSON`](CommonError.md#tojson)
265
+
266
+ ***
267
+
268
+ ### captureStackTrace()
269
+
270
+ > `static` **captureStackTrace**(`targetObject`, `constructorOpt`?): `void`
271
+
272
+ Defined in: node\_modules/.pnpm/@types+node@22.10.5/node\_modules/@types/node/globals.d.ts:136
273
+
274
+ Create .stack property on a target object
275
+
276
+ #### Parameters
277
+
278
+ ##### targetObject
279
+
280
+ `object`
281
+
282
+ ##### constructorOpt?
283
+
284
+ `Function`
285
+
286
+ #### Returns
287
+
288
+ `void`
289
+
290
+ #### Inherited from
291
+
292
+ [`CommonError`](CommonError.md).[`captureStackTrace`](CommonError.md#capturestacktrace)
293
+
294
+ ***
295
+
296
+ ### create()
297
+
298
+ > `static` **create**(`__namedParameters`): [`CommonError`](CommonError.md)
299
+
300
+ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/common-error/dist/index.d.ts:96
301
+
302
+ #### Parameters
303
+
304
+ ##### \_\_namedParameters
305
+
306
+ ###### code?
307
+
308
+ `string` \| `number`
309
+
310
+ ###### data?
311
+
312
+ `any`
313
+
314
+ ###### error
315
+
316
+ `string`
317
+
318
+ ###### name?
319
+
320
+ `string`
321
+
322
+ #### Returns
323
+
324
+ [`CommonError`](CommonError.md)
325
+
326
+ #### Inherited from
327
+
328
+ [`CommonError`](CommonError.md).[`create`](CommonError.md#create)
329
+
330
+ ***
331
+
332
+ ### createErrorClass()
333
+
334
+ > `static` **createErrorClass**(`aType`, `aErrorCode`?, `ParentErrorClass`?): *typeof* [`BaseError`](BaseError.md)
335
+
336
+ Defined in: node\_modules/.pnpm/@isdk+common-error@0.1.3/node\_modules/@isdk/common-error/dist/index.d.ts:66
337
+
338
+ Create an Error Class
339
+
340
+ #### Parameters
341
+
342
+ ##### aType
343
+
344
+ `string`
345
+
346
+ the error type(class) name
347
+
348
+ ##### aErrorCode?
349
+
350
+ `string` | `number` | *typeof* `AbstractError`
351
+
352
+ ##### ParentErrorClass?
353
+
354
+ *typeof* [`BaseError`](BaseError.md)
355
+
356
+ the parent error class. defaults to AbstractError
357
+
358
+ #### Returns
359
+
360
+ *typeof* [`BaseError`](BaseError.md)
361
+
362
+ the new Error Class
363
+
364
+ #### Inherited from
365
+
366
+ [`CommonError`](CommonError.md).[`createErrorClass`](CommonError.md#createerrorclass)