@scenemesh/entity-engine-aimodule 1.0.0 → 1.0.2

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 (311) hide show
  1. package/dist/components/ChatDialog/ChatDialog.d.ts +17 -0
  2. package/dist/components/ChatDialog/ChatDialog.d.ts.map +1 -0
  3. package/dist/components/ChatDialog/ChatDialog.js +346 -0
  4. package/dist/components/ChatDialog/ChatDialog.js.map +1 -0
  5. package/dist/components/DynamicUI/DynamicToolRenderer.d.ts +9 -0
  6. package/dist/components/DynamicUI/DynamicToolRenderer.d.ts.map +1 -0
  7. package/dist/components/DynamicUI/DynamicToolRenderer.js +114 -0
  8. package/dist/components/DynamicUI/DynamicToolRenderer.js.map +1 -0
  9. package/dist/components/DynamicUI/EntityEngineDynamicComponents.d.ts +75 -0
  10. package/dist/components/DynamicUI/EntityEngineDynamicComponents.d.ts.map +1 -0
  11. package/dist/components/DynamicUI/EntityEngineDynamicComponents.js +123 -0
  12. package/dist/components/DynamicUI/EntityEngineDynamicComponents.js.map +1 -0
  13. package/dist/components/DynamicUI/index.d.ts +12 -0
  14. package/dist/components/DynamicUI/index.d.ts.map +1 -0
  15. package/dist/components/DynamicUI/index.js +13 -0
  16. package/dist/components/DynamicUI/index.js.map +1 -0
  17. package/dist/components/FileViewer/FileViewer.d.ts +16 -0
  18. package/dist/components/FileViewer/FileViewer.d.ts.map +1 -0
  19. package/dist/components/FileViewer/FileViewer.js +158 -0
  20. package/dist/components/FileViewer/FileViewer.js.map +1 -0
  21. package/dist/components/GenerativeUI/PrebuiltComponents.d.ts +44 -0
  22. package/dist/components/GenerativeUI/PrebuiltComponents.d.ts.map +1 -0
  23. package/dist/components/GenerativeUI/PrebuiltComponents.js +65 -0
  24. package/dist/components/GenerativeUI/PrebuiltComponents.js.map +1 -0
  25. package/dist/components/MessageBubble/MessageBubble.d.ts +29 -0
  26. package/dist/components/MessageBubble/MessageBubble.d.ts.map +1 -0
  27. package/dist/components/MessageBubble/MessageBubble.js +222 -0
  28. package/dist/components/MessageBubble/MessageBubble.js.map +1 -0
  29. package/dist/components/ReasoningComponents/ReasoningDisplay.d.ts +26 -0
  30. package/dist/components/ReasoningComponents/ReasoningDisplay.d.ts.map +1 -0
  31. package/dist/components/ReasoningComponents/ReasoningDisplay.js +44 -0
  32. package/dist/components/ReasoningComponents/ReasoningDisplay.js.map +1 -0
  33. package/dist/components/index.d.ts +10 -0
  34. package/dist/components/index.d.ts.map +1 -0
  35. package/dist/components/index.js +10 -0
  36. package/dist/components/index.js.map +1 -0
  37. package/dist/core/ai-core-manager.d.ts +221 -0
  38. package/dist/core/ai-core-manager.d.ts.map +1 -0
  39. package/dist/core/ai-core-manager.js +536 -0
  40. package/dist/core/ai-core-manager.js.map +1 -0
  41. package/dist/core/ai-core.d.ts +380 -0
  42. package/dist/core/ai-core.d.ts.map +1 -0
  43. package/dist/core/ai-core.js +297 -0
  44. package/dist/core/ai-core.js.map +1 -0
  45. package/dist/core/ai-embeddings.d.ts +204 -0
  46. package/dist/core/ai-embeddings.d.ts.map +1 -0
  47. package/dist/core/ai-embeddings.js +380 -0
  48. package/dist/core/ai-embeddings.js.map +1 -0
  49. package/dist/core/ai-provider.d.ts +265 -0
  50. package/dist/core/ai-provider.d.ts.map +1 -0
  51. package/dist/core/ai-provider.js +717 -0
  52. package/dist/core/ai-provider.js.map +1 -0
  53. package/dist/core/ai-settings.d.ts +289 -0
  54. package/dist/core/ai-settings.d.ts.map +1 -0
  55. package/dist/core/ai-settings.js +585 -0
  56. package/dist/core/ai-settings.js.map +1 -0
  57. package/dist/core/ai-structured.d.ts +198 -0
  58. package/dist/core/ai-structured.d.ts.map +1 -0
  59. package/dist/core/ai-structured.js +460 -0
  60. package/dist/core/ai-structured.js.map +1 -0
  61. package/dist/core/ai-tools.d.ts +378 -0
  62. package/dist/core/ai-tools.d.ts.map +1 -0
  63. package/dist/core/ai-tools.js +637 -0
  64. package/dist/core/ai-tools.js.map +1 -0
  65. package/dist/core/index.d.ts +47 -0
  66. package/dist/core/index.d.ts.map +1 -0
  67. package/dist/core/index.js +75 -0
  68. package/dist/core/index.js.map +1 -0
  69. package/dist/core/system-prompt.d.ts +6 -0
  70. package/dist/core/system-prompt.d.ts.map +1 -0
  71. package/dist/core/system-prompt.js +273 -0
  72. package/dist/core/system-prompt.js.map +1 -0
  73. package/dist/core-index.d.ts +29 -1648
  74. package/dist/core-index.d.ts.map +1 -0
  75. package/dist/core-index.js +63 -99
  76. package/dist/core-index.js.map +1 -1
  77. package/dist/entity-module/ai.module.d.ts +48 -0
  78. package/dist/entity-module/ai.module.d.ts.map +1 -0
  79. package/dist/entity-module/ai.module.js +126 -0
  80. package/dist/entity-module/ai.module.js.map +1 -0
  81. package/dist/entity-module/index.d.ts +9 -0
  82. package/dist/entity-module/index.d.ts.map +1 -0
  83. package/dist/entity-module/index.js +9 -0
  84. package/dist/entity-module/index.js.map +1 -0
  85. package/dist/entity-module/models/ai-model.d.ts +3 -0
  86. package/dist/entity-module/models/ai-model.d.ts.map +1 -0
  87. package/dist/entity-module/models/ai-model.js +44 -0
  88. package/dist/entity-module/models/ai-model.js.map +1 -0
  89. package/dist/entity-module/models/index.d.ts +3 -0
  90. package/dist/entity-module/models/index.d.ts.map +1 -0
  91. package/dist/entity-module/models/index.js +6 -0
  92. package/dist/entity-module/models/index.js.map +1 -0
  93. package/dist/entity-module/module.json +8 -0
  94. package/dist/entity-module/renderers/ai-form-renderer.d.ts +3 -0
  95. package/dist/entity-module/renderers/ai-form-renderer.d.ts.map +1 -0
  96. package/dist/entity-module/renderers/ai-form-renderer.js +201 -0
  97. package/dist/entity-module/renderers/ai-form-renderer.js.map +1 -0
  98. package/dist/entity-module/renderers/ai-renderer.d.ts +3 -0
  99. package/dist/entity-module/renderers/ai-renderer.d.ts.map +1 -0
  100. package/dist/entity-module/renderers/ai-renderer.js +99 -0
  101. package/dist/entity-module/renderers/ai-renderer.js.map +1 -0
  102. package/dist/entity-module/renderers/index.d.ts +3 -0
  103. package/dist/entity-module/renderers/index.d.ts.map +1 -0
  104. package/dist/entity-module/renderers/index.js +3 -0
  105. package/dist/entity-module/renderers/index.js.map +1 -0
  106. package/dist/entity-module/servlets/ai-servlet.d.ts +15 -0
  107. package/dist/entity-module/servlets/ai-servlet.d.ts.map +1 -0
  108. package/dist/entity-module/servlets/ai-servlet.js +377 -0
  109. package/dist/entity-module/servlets/ai-servlet.js.map +1 -0
  110. package/dist/entity-module/servlets/index.d.ts +3 -0
  111. package/dist/entity-module/servlets/index.d.ts.map +1 -0
  112. package/dist/entity-module/servlets/index.js +6 -0
  113. package/dist/entity-module/servlets/index.js.map +1 -0
  114. package/dist/entity-module/views/ai-view.d.ts +3 -0
  115. package/dist/entity-module/views/ai-view.d.ts.map +1 -0
  116. package/dist/entity-module/views/ai-view.js +33 -0
  117. package/dist/entity-module/views/ai-view.js.map +1 -0
  118. package/dist/entity-module/views/index.d.ts +3 -0
  119. package/dist/entity-module/views/index.d.ts.map +1 -0
  120. package/dist/entity-module/views/index.js +6 -0
  121. package/dist/entity-module/views/index.js.map +1 -0
  122. package/dist/hooks/index.d.ts +11 -0
  123. package/dist/hooks/index.d.ts.map +1 -0
  124. package/dist/hooks/index.js +10 -0
  125. package/dist/hooks/index.js.map +1 -0
  126. package/dist/hooks/useChat.d.ts +13 -0
  127. package/dist/hooks/useChat.d.ts.map +1 -0
  128. package/dist/hooks/useChat.js +13 -0
  129. package/dist/hooks/useChat.js.map +1 -0
  130. package/dist/hooks/useCompletion.d.ts +17 -0
  131. package/dist/hooks/useCompletion.d.ts.map +1 -0
  132. package/dist/hooks/useCompletion.js +17 -0
  133. package/dist/hooks/useCompletion.js.map +1 -0
  134. package/dist/hooks/useObject.d.ts +16 -0
  135. package/dist/hooks/useObject.d.ts.map +1 -0
  136. package/dist/hooks/useObject.js +17 -0
  137. package/dist/hooks/useObject.js.map +1 -0
  138. package/dist/index.d.ts +42 -2876
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +85 -1168
  141. package/dist/index.js.map +1 -1
  142. package/dist/tools/dynamic-tools/entity-query-tool.d.ts +15 -0
  143. package/dist/tools/dynamic-tools/entity-query-tool.d.ts.map +1 -0
  144. package/dist/tools/dynamic-tools/entity-query-tool.js +178 -0
  145. package/dist/tools/dynamic-tools/entity-query-tool.js.map +1 -0
  146. package/dist/tools/dynamic-tools/index.d.ts +8 -0
  147. package/dist/tools/dynamic-tools/index.d.ts.map +1 -0
  148. package/dist/tools/dynamic-tools/index.js +8 -0
  149. package/dist/tools/dynamic-tools/index.js.map +1 -0
  150. package/dist/tools/frontend-tools/index.d.ts +7 -0
  151. package/dist/tools/frontend-tools/index.d.ts.map +1 -0
  152. package/dist/tools/frontend-tools/index.js +7 -0
  153. package/dist/tools/frontend-tools/index.js.map +1 -0
  154. package/dist/tools/frontend-tools/record-tools.d.ts +48 -0
  155. package/dist/tools/frontend-tools/record-tools.d.ts.map +1 -0
  156. package/dist/tools/frontend-tools/record-tools.js +97 -0
  157. package/dist/tools/frontend-tools/record-tools.js.map +1 -0
  158. package/dist/tools/index.d.ts +217 -0
  159. package/dist/tools/index.d.ts.map +1 -0
  160. package/dist/tools/index.js +52 -0
  161. package/dist/tools/index.js.map +1 -0
  162. package/dist/tools/static-tools/index.d.ts +9 -0
  163. package/dist/tools/static-tools/index.d.ts.map +1 -0
  164. package/dist/tools/static-tools/index.js +9 -0
  165. package/dist/tools/static-tools/index.js.map +1 -0
  166. package/dist/tools/static-tools/location-tool.d.ts +38 -0
  167. package/dist/tools/static-tools/location-tool.d.ts.map +1 -0
  168. package/dist/tools/static-tools/location-tool.js +97 -0
  169. package/dist/tools/static-tools/location-tool.js.map +1 -0
  170. package/dist/tools/static-tools/weather-tool.d.ts +19 -0
  171. package/dist/tools/static-tools/weather-tool.d.ts.map +1 -0
  172. package/dist/tools/static-tools/weather-tool.js +27 -0
  173. package/dist/tools/static-tools/weather-tool.js.map +1 -0
  174. package/dist/types/core-types.d.ts +183 -0
  175. package/dist/types/core-types.d.ts.map +1 -0
  176. package/dist/types/core-types.js +7 -0
  177. package/dist/types/core-types.js.map +1 -0
  178. package/dist/types/index.d.ts +50 -0
  179. package/dist/types/index.d.ts.map +1 -0
  180. package/dist/types/index.js +31 -0
  181. package/dist/types/index.js.map +1 -0
  182. package/dist/types/ui-types.d.ts +434 -0
  183. package/dist/types/ui-types.d.ts.map +1 -0
  184. package/dist/types/ui-types.js +8 -0
  185. package/dist/types/ui-types.js.map +1 -0
  186. package/dist/ui/index.d.ts +30 -0
  187. package/dist/ui/index.d.ts.map +1 -0
  188. package/dist/ui/index.js +67 -0
  189. package/dist/ui/index.js.map +1 -0
  190. package/dist/ui-index.d.ts +12 -607
  191. package/dist/ui-index.d.ts.map +1 -0
  192. package/dist/ui-index.js +106 -2350
  193. package/dist/ui-index.js.map +1 -1
  194. package/dist/utils/index.d.ts +122 -0
  195. package/dist/utils/index.d.ts.map +1 -0
  196. package/dist/utils/index.js +336 -0
  197. package/dist/utils/index.js.map +1 -0
  198. package/dist/utils/persistence.d.ts +99 -0
  199. package/dist/utils/persistence.d.ts.map +1 -0
  200. package/dist/utils/persistence.js +286 -0
  201. package/dist/utils/persistence.js.map +1 -0
  202. package/dist/utils/streaming.d.ts +144 -0
  203. package/dist/utils/streaming.d.ts.map +1 -0
  204. package/dist/utils/streaming.js +359 -0
  205. package/dist/utils/streaming.js.map +1 -0
  206. package/dist/utils/theme.d.ts +162 -0
  207. package/dist/utils/theme.d.ts.map +1 -0
  208. package/dist/utils/theme.js +211 -0
  209. package/dist/utils/theme.js.map +1 -0
  210. package/dist/utils/warnings.d.ts +77 -0
  211. package/dist/utils/warnings.d.ts.map +1 -0
  212. package/dist/utils/warnings.js +228 -0
  213. package/dist/utils/warnings.js.map +1 -0
  214. package/package.json +3 -3
  215. package/dist/ai-core-LBGYFGOK.mjs +0 -17
  216. package/dist/ai-core-LBGYFGOK.mjs.map +0 -1
  217. package/dist/ai-core-UGJWSCQN.js +0 -17
  218. package/dist/ai-core-UGJWSCQN.js.map +0 -1
  219. package/dist/ai-core-manager-B3Z34RHA.mjs +0 -9
  220. package/dist/ai-core-manager-B3Z34RHA.mjs.map +0 -1
  221. package/dist/ai-core-manager-W7SSDCG5.js +0 -9
  222. package/dist/ai-core-manager-W7SSDCG5.js.map +0 -1
  223. package/dist/ai-embeddings-5ED5LDXX.mjs +0 -17
  224. package/dist/ai-embeddings-5ED5LDXX.mjs.map +0 -1
  225. package/dist/ai-embeddings-WCXZMMTZ.js +0 -17
  226. package/dist/ai-embeddings-WCXZMMTZ.js.map +0 -1
  227. package/dist/ai-form-renderer-24IWNMX5.js +0 -233
  228. package/dist/ai-form-renderer-24IWNMX5.js.map +0 -1
  229. package/dist/ai-form-renderer-BORQABF2.mjs +0 -233
  230. package/dist/ai-form-renderer-BORQABF2.mjs.map +0 -1
  231. package/dist/ai-provider-3PSCVEEN.mjs +0 -17
  232. package/dist/ai-provider-3PSCVEEN.mjs.map +0 -1
  233. package/dist/ai-provider-WMPMVZFL.js +0 -17
  234. package/dist/ai-provider-WMPMVZFL.js.map +0 -1
  235. package/dist/ai-renderer-7WGGWH5D.mjs +0 -134
  236. package/dist/ai-renderer-7WGGWH5D.mjs.map +0 -1
  237. package/dist/ai-renderer-OILYWAJV.js +0 -134
  238. package/dist/ai-renderer-OILYWAJV.js.map +0 -1
  239. package/dist/ai-settings-DGCFPK3U.js +0 -15
  240. package/dist/ai-settings-DGCFPK3U.js.map +0 -1
  241. package/dist/ai-settings-DTXEAB64.mjs +0 -15
  242. package/dist/ai-settings-DTXEAB64.mjs.map +0 -1
  243. package/dist/ai-structured-EGZ26ZS4.mjs +0 -13
  244. package/dist/ai-structured-EGZ26ZS4.mjs.map +0 -1
  245. package/dist/ai-structured-N2FZLO4A.js +0 -13
  246. package/dist/ai-structured-N2FZLO4A.js.map +0 -1
  247. package/dist/ai-tools-B3R77HZ3.js +0 -19
  248. package/dist/ai-tools-B3R77HZ3.js.map +0 -1
  249. package/dist/ai-tools-JAPVYQGE.mjs +0 -19
  250. package/dist/ai-tools-JAPVYQGE.mjs.map +0 -1
  251. package/dist/ai.module-GAHVCBTP.js +0 -7
  252. package/dist/ai.module-GAHVCBTP.js.map +0 -1
  253. package/dist/ai.module-TTPMTPB3.mjs +0 -7
  254. package/dist/ai.module-TTPMTPB3.mjs.map +0 -1
  255. package/dist/chunk-25C2NRSD.mjs +0 -611
  256. package/dist/chunk-25C2NRSD.mjs.map +0 -1
  257. package/dist/chunk-4JQ7UOXH.js +0 -427
  258. package/dist/chunk-4JQ7UOXH.js.map +0 -1
  259. package/dist/chunk-6IUKES2L.js +0 -290
  260. package/dist/chunk-6IUKES2L.js.map +0 -1
  261. package/dist/chunk-COWPK7XN.mjs +0 -834
  262. package/dist/chunk-COWPK7XN.mjs.map +0 -1
  263. package/dist/chunk-CTEXPMVZ.js +0 -512
  264. package/dist/chunk-CTEXPMVZ.js.map +0 -1
  265. package/dist/chunk-DXQTHA75.js +0 -573
  266. package/dist/chunk-DXQTHA75.js.map +0 -1
  267. package/dist/chunk-DZFQ6I23.js +0 -72
  268. package/dist/chunk-DZFQ6I23.js.map +0 -1
  269. package/dist/chunk-J323UTPE.mjs +0 -650
  270. package/dist/chunk-J323UTPE.mjs.map +0 -1
  271. package/dist/chunk-LHNNALVF.js +0 -834
  272. package/dist/chunk-LHNNALVF.js.map +0 -1
  273. package/dist/chunk-O7SZSMXV.js +0 -1621
  274. package/dist/chunk-O7SZSMXV.js.map +0 -1
  275. package/dist/chunk-OTNOFOVW.js +0 -650
  276. package/dist/chunk-OTNOFOVW.js.map +0 -1
  277. package/dist/chunk-PRIGZEI4.mjs +0 -72
  278. package/dist/chunk-PRIGZEI4.mjs.map +0 -1
  279. package/dist/chunk-SBSZ3IPB.mjs +0 -573
  280. package/dist/chunk-SBSZ3IPB.mjs.map +0 -1
  281. package/dist/chunk-SXPA6SSD.mjs +0 -1621
  282. package/dist/chunk-SXPA6SSD.mjs.map +0 -1
  283. package/dist/chunk-T5A4KAVS.mjs +0 -512
  284. package/dist/chunk-T5A4KAVS.mjs.map +0 -1
  285. package/dist/chunk-TDRKKUNT.mjs +0 -357
  286. package/dist/chunk-TDRKKUNT.mjs.map +0 -1
  287. package/dist/chunk-TJFNODPE.js +0 -357
  288. package/dist/chunk-TJFNODPE.js.map +0 -1
  289. package/dist/chunk-V2SSI3SL.mjs +0 -427
  290. package/dist/chunk-V2SSI3SL.mjs.map +0 -1
  291. package/dist/chunk-X42L6MTY.mjs +0 -290
  292. package/dist/chunk-X42L6MTY.mjs.map +0 -1
  293. package/dist/chunk-YSVMY77H.js +0 -611
  294. package/dist/chunk-YSVMY77H.js.map +0 -1
  295. package/dist/core-ANYRS6EF.mjs +0 -73
  296. package/dist/core-ANYRS6EF.mjs.map +0 -1
  297. package/dist/core-K5K34DCS.js +0 -73
  298. package/dist/core-K5K34DCS.js.map +0 -1
  299. package/dist/core-index.d.mts +0 -1668
  300. package/dist/core-index.mjs +0 -101
  301. package/dist/core-index.mjs.map +0 -1
  302. package/dist/index.d.mts +0 -2911
  303. package/dist/index.mjs +0 -1177
  304. package/dist/index.mjs.map +0 -1
  305. package/dist/tools-352X7A6X.mjs +0 -366
  306. package/dist/tools-352X7A6X.mjs.map +0 -1
  307. package/dist/tools-YLEX6GNO.js +0 -366
  308. package/dist/tools-YLEX6GNO.js.map +0 -1
  309. package/dist/ui-index.d.mts +0 -627
  310. package/dist/ui-index.mjs +0 -2353
  311. package/dist/ui-index.mjs.map +0 -1
@@ -0,0 +1,637 @@
1
+ /**
2
+ * AI Tool Calling Complete Integration
3
+ *
4
+ * Complete tool calling functionality:
5
+ * - Basic tool calling and execution
6
+ * - Multi-step calling system (stopWhen, stepCountIs)
7
+ * - Dynamic tools (dynamicTool)
8
+ * - Tool selection strategies (toolChoice)
9
+ * - Error handling and tool repair
10
+ * - MCP tool integration
11
+ * - Complete type safety system
12
+ */
13
+ import { EventEmitter } from 'events';
14
+ import { tool, dynamicTool, stepCountIs, NoSuchToolError, InvalidToolInputError } from 'ai';
15
+ // Core Tools Integration Class
16
+ /**
17
+ * Complete tools integration class
18
+ */
19
+ export class AIToolsIntegration extends EventEmitter {
20
+ constructor() {
21
+ super();
22
+ this.initialized = false;
23
+ this.requestCounter = 0;
24
+ this.registeredTools = new Map();
25
+ this.dynamicTools = new Map();
26
+ this.mcpClients = new Map();
27
+ }
28
+ /**
29
+ * 初始化
30
+ */
31
+ async initialize() {
32
+ if (this.initialized) {
33
+ return;
34
+ }
35
+ try {
36
+ this.emit('ai_tools:initializing');
37
+ this.initialized = true;
38
+ this.emit('ai_tools:initialized');
39
+ }
40
+ catch (error) {
41
+ this.emit('ai_tools:initialization_failed', { error });
42
+ throw error;
43
+ }
44
+ }
45
+ /**
46
+ * 生成请求ID
47
+ */
48
+ generateRequestId() {
49
+ return `ai-tools-${Date.now()}-${++this.requestCounter}`;
50
+ }
51
+ // Tool Management
52
+ /**
53
+ * Create tool - following official specifications
54
+ */
55
+ createTool(description, inputSchema, execute) {
56
+ if (execute) {
57
+ return tool({
58
+ description,
59
+ inputSchema,
60
+ execute: async (params) => execute(params, {
61
+ // 传递标准的AI SDK执行选项
62
+ toolCallId: 'tool-call-' + Date.now(),
63
+ messages: [],
64
+ abortSignal: undefined,
65
+ experimental_context: undefined
66
+ })
67
+ });
68
+ }
69
+ else {
70
+ return tool({
71
+ description,
72
+ inputSchema
73
+ });
74
+ }
75
+ }
76
+ /**
77
+ * 创建动态工具 - 完全基于 AI SDK 的 dynamicTool
78
+ */
79
+ createDynamicTool(description, inputSchema, execute) {
80
+ // 完全基于 AI SDK 的 dynamicTool,返回类型完全匹配
81
+ return dynamicTool({
82
+ description,
83
+ inputSchema,
84
+ execute: execute ? async (input, options) => {
85
+ const toolOptions = {
86
+ toolCallId: options.toolCallId || 'unknown',
87
+ messages: options.messages || [],
88
+ abortSignal: options.abortSignal,
89
+ experimental_context: options.experimental_context
90
+ };
91
+ return execute(input, toolOptions);
92
+ } : async (input, options) =>
93
+ // 默认实现:返回输入参数
94
+ input
95
+ });
96
+ }
97
+ /**
98
+ * 注册工具到集成器
99
+ */
100
+ registerTool(name, toolInstance) {
101
+ this.registeredTools.set(name, toolInstance);
102
+ this.emit('ai_tools:tool_registered', { name, tool: toolInstance });
103
+ }
104
+ /**
105
+ * 获取已注册的工具
106
+ */
107
+ getRegisteredTools() {
108
+ const tools = {};
109
+ this.registeredTools.forEach((registeredTool, name) => {
110
+ tools[name] = registeredTool;
111
+ });
112
+ return tools;
113
+ }
114
+ /**
115
+ * 注册动态工具
116
+ */
117
+ registerDynamicTool(name, dynamicToolInstance) {
118
+ this.dynamicTools.set(name, dynamicToolInstance);
119
+ this.emit('ai_tools:dynamic_tool_registered', { name, tool: dynamicToolInstance });
120
+ }
121
+ // ================================
122
+ // 🔄 多步调用系统 - 按照官方文档规范实现
123
+ // ================================
124
+ /**
125
+ * 使用工具执行文本生成 - 遵循官方 generateText + tools 模式
126
+ * 这是 AI SDK 工具调用的标准方式
127
+ */
128
+ async generateTextWithTools(options) {
129
+ const { generateText } = await import('ai');
130
+ const requestId = this.generateRequestId();
131
+ const startTime = Date.now();
132
+ try {
133
+ this.emit('ai_tools:multi_step_started', {
134
+ requestId,
135
+ model: typeof options.model === 'string' ? options.model : 'unknown',
136
+ hasTools: !!options.tools,
137
+ stopWhen: !!options.stopWhen,
138
+ maxSteps: options.maxSteps || 5
139
+ });
140
+ // 构建参数
141
+ const generateOptions = {
142
+ model: options.model,
143
+ system: options.system,
144
+ prompt: options.prompt,
145
+ messages: options.messages,
146
+ tools: options.tools,
147
+ toolChoice: options.toolChoice,
148
+ activeTools: options.activeTools,
149
+ maxOutputTokens: options.maxOutputTokens,
150
+ temperature: options.temperature,
151
+ topP: options.topP,
152
+ topK: options.topK,
153
+ presencePenalty: options.presencePenalty,
154
+ frequencyPenalty: options.frequencyPenalty,
155
+ seed: options.seed,
156
+ maxRetries: options.maxRetries,
157
+ abortSignal: options.abortSignal,
158
+ headers: options.headers,
159
+ experimental_context: options.experimental_context,
160
+ experimental_telemetry: options.experimental_telemetry,
161
+ experimental_repairToolCall: options.experimental_repairToolCall,
162
+ onStepFinish: options.onStepFinish,
163
+ prepareStep: options.prepareStep
164
+ };
165
+ // 处理停止条件
166
+ if (options.stopWhen) {
167
+ generateOptions.stopWhen = Array.isArray(options.stopWhen)
168
+ ? options.stopWhen.map(cond => this.parseStopCondition(cond))
169
+ : this.parseStopCondition(options.stopWhen);
170
+ }
171
+ else if (options.maxSteps) {
172
+ generateOptions.stopWhen = stepCountIs(options.maxSteps);
173
+ }
174
+ const result = await generateText(generateOptions);
175
+ this.emit('ai_tools:multi_step_completed', {
176
+ requestId,
177
+ latency: Date.now() - startTime,
178
+ steps: result.steps?.length || 1,
179
+ toolCalls: result.toolCalls?.length || 0,
180
+ toolResults: result.toolResults?.length || 0,
181
+ finishReason: result.finishReason,
182
+ usage: result.usage
183
+ });
184
+ // 返回完整的 generateText 结果,符合官方规范
185
+ return {
186
+ text: result.text,
187
+ steps: (result.steps || []),
188
+ toolCalls: result.toolCalls || [],
189
+ toolResults: result.toolResults || [],
190
+ finishReason: result.finishReason,
191
+ usage: result.usage,
192
+ totalUsage: result.totalUsage || result.usage,
193
+ content: result.content || [],
194
+ reasoning: result.reasoning || [],
195
+ reasoningText: result.reasoningText,
196
+ sources: result.sources || [],
197
+ files: result.files || [],
198
+ warnings: result.warnings,
199
+ response: result.response,
200
+ providerMetadata: result.providerMetadata
201
+ };
202
+ }
203
+ catch (error) {
204
+ this.emit('ai_tools:generate_text_with_tools_failed', {
205
+ requestId,
206
+ error: error.message,
207
+ latency: Date.now() - startTime,
208
+ errorType: error.constructor.name
209
+ });
210
+ throw error;
211
+ }
212
+ }
213
+ /**
214
+ * 使用工具执行流式文本生成 - 遵循官方 streamText + tools 模式
215
+ */
216
+ async streamTextWithTools(options) {
217
+ const { streamText } = await import('ai');
218
+ const requestId = this.generateRequestId();
219
+ this.emit('ai_tools:multi_step_stream_started', {
220
+ requestId,
221
+ model: typeof options.model === 'string' ? options.model : 'unknown',
222
+ hasTools: !!options.tools,
223
+ stopWhen: !!options.stopWhen
224
+ });
225
+ // 包装回调
226
+ const wrappedOptions = {
227
+ ...options,
228
+ onStepFinish: (result) => {
229
+ this.emit('ai_tools:step_finished', {
230
+ requestId,
231
+ stepType: result.stepType,
232
+ stepNumber: result.stepNumber || 0,
233
+ toolCalls: result.toolCalls?.length || 0,
234
+ toolResults: result.toolResults?.length || 0,
235
+ finishReason: result.finishReason
236
+ });
237
+ if (options.onStepFinish) {
238
+ options.onStepFinish(result);
239
+ }
240
+ }
241
+ };
242
+ // 构建参数并处理停止条件
243
+ const streamOptions = { ...wrappedOptions };
244
+ if (options.stopWhen) {
245
+ streamOptions.stopWhen = Array.isArray(options.stopWhen)
246
+ ? options.stopWhen.map(cond => this.parseStopCondition(cond))
247
+ : this.parseStopCondition(options.stopWhen);
248
+ }
249
+ const streamResult = streamText(streamOptions);
250
+ // 增强流式结果,添加工具调用相关的便利方法
251
+ const enhancedStreamResult = {
252
+ ...streamResult,
253
+ // 工具调用分析方法
254
+ analyzeToolUsage: async () => {
255
+ const steps = await streamResult.steps;
256
+ return this.analyzeToolUsage(steps);
257
+ },
258
+ // 提取所有工具调用
259
+ getAllToolCalls: async () => {
260
+ const steps = await streamResult.steps;
261
+ return this.extractToolCallsFromSteps(steps);
262
+ },
263
+ // 提取所有工具结果
264
+ getAllToolResults: async () => {
265
+ const steps = await streamResult.steps;
266
+ return this.extractToolResultsFromSteps(steps);
267
+ },
268
+ // 获取响应消息 - 官方文档重点功能
269
+ getResponseMessages: async () => {
270
+ const response = await streamResult.response;
271
+ return this.extractResponseMessages({ response });
272
+ }
273
+ };
274
+ return enhancedStreamResult;
275
+ }
276
+ /**
277
+ * 创建步骤计数停止条件
278
+ */
279
+ createStepCountCondition(maxSteps) {
280
+ return { type: 'stepCount', value: maxSteps };
281
+ }
282
+ /**
283
+ * 创建自定义停止条件
284
+ */
285
+ createCustomStopCondition(condition) {
286
+ return condition;
287
+ }
288
+ /**
289
+ * 解析停止条件
290
+ */
291
+ parseStopCondition(condition) {
292
+ if (typeof condition === 'function') {
293
+ return condition;
294
+ }
295
+ if (condition.type === 'stepCount') {
296
+ return stepCountIs(condition.value);
297
+ }
298
+ if (condition.type === 'custom') {
299
+ return condition.condition;
300
+ }
301
+ return stepCountIs(5); // 默认最多5步
302
+ }
303
+ // ================================
304
+ // Tool repair system
305
+ // ================================
306
+ /**
307
+ * 创建结构化输出修复器
308
+ */
309
+ createStructuredRepairFunction(repairModel) {
310
+ return async (options) => {
311
+ if (NoSuchToolError.isInstance(options.error)) {
312
+ return null; // 不修复无效工具名称
313
+ }
314
+ try {
315
+ // 使用结构化输出来修复工具参数
316
+ const { generateObject } = await import('ai');
317
+ const toolDef = options.tools[options.toolCall.toolName];
318
+ if (!toolDef)
319
+ return null;
320
+ const { object: repairedArgs } = await generateObject({
321
+ model: repairModel,
322
+ schema: toolDef.parameters || toolDef.schema,
323
+ prompt: [
324
+ `The model tried to call the tool "${options.toolCall.toolName}" with the following inputs:`,
325
+ JSON.stringify(options.toolCall.input),
326
+ `The tool accepts the following schema:`,
327
+ JSON.stringify(options.inputSchema(options.toolCall)),
328
+ 'Please fix the inputs to match the schema.'
329
+ ].join('\n'),
330
+ });
331
+ return {
332
+ ...options.toolCall,
333
+ input: JSON.stringify(repairedArgs)
334
+ };
335
+ }
336
+ catch (repairError) {
337
+ this.emit('ai_tools:repair_failed', {
338
+ originalError: options.error,
339
+ repairError,
340
+ toolCall: options.toolCall
341
+ });
342
+ return null;
343
+ }
344
+ };
345
+ }
346
+ /**
347
+ * 创建重新询问修复器
348
+ */
349
+ createReaskRepairFunction(repairModel) {
350
+ return async (options) => {
351
+ try {
352
+ const { generateText } = await import('ai');
353
+ const result = await generateText({
354
+ model: repairModel,
355
+ system: options.system,
356
+ messages: [
357
+ ...options.messages,
358
+ {
359
+ role: 'assistant',
360
+ content: [{
361
+ type: 'tool-call',
362
+ toolCallId: options.toolCall.toolCallId,
363
+ toolName: options.toolCall.toolName,
364
+ input: options.toolCall.input,
365
+ }],
366
+ },
367
+ {
368
+ role: 'tool',
369
+ content: [{
370
+ type: 'tool-result',
371
+ toolCallId: options.toolCall.toolCallId,
372
+ toolName: options.toolCall.toolName,
373
+ output: options.error.message,
374
+ }],
375
+ },
376
+ ],
377
+ tools: options.tools,
378
+ });
379
+ const newToolCall = result.toolCalls.find((newCall) => newCall.toolName === options.toolCall.toolName);
380
+ return newToolCall ? {
381
+ toolCallType: 'function',
382
+ toolCallId: options.toolCall.toolCallId,
383
+ toolName: options.toolCall.toolName,
384
+ input: JSON.stringify(newToolCall.input),
385
+ } : null;
386
+ }
387
+ catch (repairError) {
388
+ this.emit('ai_tools:reask_repair_failed', {
389
+ originalError: options.error,
390
+ repairError,
391
+ toolCall: options.toolCall
392
+ });
393
+ return null;
394
+ }
395
+ };
396
+ }
397
+ // ================================
398
+ // 🔗 MCP集成系统
399
+ // ================================
400
+ /**
401
+ * 创建MCP客户端
402
+ */
403
+ async createMCPClient(config) {
404
+ const { experimental_createMCPClient } = await import('ai');
405
+ let transportConfig;
406
+ switch (config.transport.type) {
407
+ case 'sse':
408
+ transportConfig = {
409
+ transport: {
410
+ type: 'sse',
411
+ url: config.transport.url,
412
+ headers: config.transport.headers,
413
+ }
414
+ };
415
+ break;
416
+ case 'stdio':
417
+ // Conditionally import stdio transport only in Node.js environment
418
+ if (typeof window === 'undefined' && typeof process !== 'undefined') {
419
+ try {
420
+ const { Experimental_StdioMCPTransport } = await import('ai/mcp-stdio');
421
+ transportConfig = {
422
+ transport: new Experimental_StdioMCPTransport({
423
+ command: config.transport.command,
424
+ args: config.transport.args,
425
+ })
426
+ };
427
+ }
428
+ catch (error) {
429
+ throw new Error('stdio transport requires Node.js environment and ai/mcp-stdio package');
430
+ }
431
+ }
432
+ else {
433
+ throw new Error('stdio transport is only available in Node.js environment');
434
+ }
435
+ break;
436
+ case 'custom':
437
+ transportConfig = {
438
+ transport: config.transport.transport
439
+ };
440
+ break;
441
+ default:
442
+ throw new Error(`Unsupported MCP transport type: ${config.transport.type}`);
443
+ }
444
+ const mcpClient = await experimental_createMCPClient(transportConfig);
445
+ const clientId = `mcp-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
446
+ const wrappedClient = {
447
+ async tools(toolConfig) {
448
+ if (config.schemas || toolConfig?.schemas) {
449
+ return mcpClient.tools({ schemas: config.schemas || toolConfig?.schemas });
450
+ }
451
+ else {
452
+ return mcpClient.tools();
453
+ }
454
+ },
455
+ async close() {
456
+ await mcpClient.close();
457
+ this.mcpClients.delete(clientId);
458
+ this.emit('ai_tools:mcp_client_closed', { clientId });
459
+ }
460
+ };
461
+ this.mcpClients.set(clientId, wrappedClient);
462
+ this.emit('ai_tools:mcp_client_created', { clientId, config });
463
+ return wrappedClient;
464
+ }
465
+ /**
466
+ * 关闭所有MCP客户端
467
+ */
468
+ async closeAllMCPClients() {
469
+ const closePromises = Array.from(this.mcpClients.values()).map(client => client.close());
470
+ await Promise.all(closePromises);
471
+ this.mcpClients.clear();
472
+ }
473
+ // Utility methods
474
+ /**
475
+ * Create simple tool call configuration
476
+ */
477
+ createSimpleToolCall(model, tools, prompt, options) {
478
+ return {
479
+ model,
480
+ tools,
481
+ prompt,
482
+ ...options
483
+ };
484
+ }
485
+ /**
486
+ * 创建多步工具调用配置 - 使用 stopWhen 参数
487
+ */
488
+ createMultiStepToolCall(model, tools, prompt, maxSteps = 5, options) {
489
+ return {
490
+ model,
491
+ tools,
492
+ prompt,
493
+ stopWhen: this.createStepCountCondition(maxSteps),
494
+ ...options
495
+ };
496
+ }
497
+ /**
498
+ * 直接执行单个工具 - 用于测试或直接调用
499
+ */
500
+ async executeSingleTool(toolName, input, tools, options) {
501
+ const selectedTool = tools[toolName];
502
+ if (!selectedTool || !selectedTool.execute) {
503
+ throw new Error(`Tool '${String(toolName)}' not found or not executable`);
504
+ }
505
+ const toolOptions = {
506
+ toolCallId: `direct-${Date.now()}`,
507
+ messages: options?.messages || [],
508
+ abortSignal: options?.abortSignal,
509
+ experimental_context: options?.experimental_context
510
+ };
511
+ return selectedTool.execute(input, toolOptions);
512
+ }
513
+ /**
514
+ * 获取响应消息 - 官方文档重点推荐的功能
515
+ * 用于将助手和工具消息添加到对话历史
516
+ */
517
+ extractResponseMessages(result) {
518
+ return result.response?.messages || [];
519
+ }
520
+ /**
521
+ * 将响应消息添加到对话历史 - 官方文档示例
522
+ */
523
+ addResponseMessagesToHistory(messages, result) {
524
+ const responseMessages = this.extractResponseMessages(result);
525
+ return [...messages, ...responseMessages];
526
+ }
527
+ /**
528
+ * 批量工具调用验证
529
+ */
530
+ validateBatchToolCalls(toolCalls, tools) {
531
+ return toolCalls.map(toolCall => ({
532
+ toolCall,
533
+ ...this.validateToolCall(toolCall, tools)
534
+ }));
535
+ }
536
+ /**
537
+ * 工具调用结果验证
538
+ */
539
+ validateToolCall(toolCall, tools) {
540
+ const toolName = toolCall.toolName;
541
+ const targetTool = tools[toolName];
542
+ if (!targetTool) {
543
+ return { valid: false, error: `Tool '${String(toolName)}' not found` };
544
+ }
545
+ try {
546
+ // 验证输入参数
547
+ if (targetTool.inputSchema || targetTool.parameters) {
548
+ const schema = targetTool.inputSchema || targetTool.parameters;
549
+ schema.parse(toolCall.input);
550
+ }
551
+ return { valid: true };
552
+ }
553
+ catch (validationError) {
554
+ return {
555
+ valid: false,
556
+ error: `Invalid tool input: ${validationError.message}`
557
+ };
558
+ }
559
+ }
560
+ /**
561
+ * 工具调用统计分析
562
+ */
563
+ analyzeToolUsage(steps) {
564
+ const allToolCalls = this.extractToolCallsFromSteps(steps);
565
+ const allToolResults = this.extractToolResultsFromSteps(steps);
566
+ const toolUsageByName = {};
567
+ allToolCalls.forEach(call => {
568
+ const toolName = String(call.toolName);
569
+ toolUsageByName[toolName] = (toolUsageByName[toolName] || 0) + 1;
570
+ });
571
+ const stepTypes = {};
572
+ steps.forEach(step => {
573
+ stepTypes[step.stepType] = (stepTypes[step.stepType] || 0) + 1;
574
+ });
575
+ return {
576
+ totalToolCalls: allToolCalls.length,
577
+ totalToolResults: allToolResults.length,
578
+ toolUsageByName,
579
+ avgToolCallsPerStep: steps.length > 0 ? allToolCalls.length / steps.length : 0,
580
+ stepTypes
581
+ };
582
+ }
583
+ /**
584
+ * 提取步骤中的所有工具调用
585
+ */
586
+ extractToolCallsFromSteps(steps) {
587
+ return steps.flatMap(step => step.toolCalls);
588
+ }
589
+ /**
590
+ * 提取步骤中的所有工具结果
591
+ */
592
+ extractToolResultsFromSteps(steps) {
593
+ return steps.flatMap(step => step.toolResults);
594
+ }
595
+ /**
596
+ * 检查初始化状态
597
+ */
598
+ isInitialized() {
599
+ return this.initialized;
600
+ }
601
+ /**
602
+ * 获取统计信息
603
+ */
604
+ getStats() {
605
+ return {
606
+ requestCount: this.requestCounter,
607
+ isInitialized: this.initialized,
608
+ registeredTools: this.registeredTools.size,
609
+ dynamicTools: this.dynamicTools.size,
610
+ mcpClients: this.mcpClients.size,
611
+ };
612
+ }
613
+ /**
614
+ * 重置统计信息
615
+ */
616
+ resetStats() {
617
+ this.requestCounter = 0;
618
+ }
619
+ /**
620
+ * 销毁实例
621
+ */
622
+ async destroy() {
623
+ await this.closeAllMCPClients();
624
+ this.registeredTools.clear();
625
+ this.dynamicTools.clear();
626
+ this.removeAllListeners();
627
+ this.initialized = false;
628
+ this.requestCounter = 0;
629
+ }
630
+ }
631
+ // Exports
632
+ export {
633
+ // Core functions
634
+ tool, dynamicTool, stepCountIs, NoSuchToolError, InvalidToolInputError };
635
+ // Default export
636
+ export default AIToolsIntegration;
637
+ //# sourceMappingURL=ai-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-tools.js","sourceRoot":"","sources":["../../src/core/ai-tools.ts"],"names":[],"mappings":"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"}