@tdesign-react/chat 1.0.2-alpha.0 → 1.0.2-alpha.10

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 (228) hide show
  1. package/es/_util/reactify.d.ts +1 -2
  2. package/es/_util/reactify.js +81 -231
  3. package/es/_util/reactify.js.map +1 -1
  4. package/es/_util/useDynamicStyle.js +1 -1
  5. package/es/attachments/index.js +4 -6
  6. package/es/attachments/index.js.map +1 -1
  7. package/es/chat-actionbar/_example-js/base.d.ts +2 -0
  8. package/es/chat-actionbar/_example-js/custom.d.ts +2 -0
  9. package/es/chat-actionbar/_example-js/style.d.ts +2 -0
  10. package/es/chat-actionbar/index.js +4 -6
  11. package/es/chat-actionbar/index.js.map +1 -1
  12. package/es/chat-attachments/_example-js/base.d.ts +2 -0
  13. package/es/chat-attachments/_example-js/scroll-x.d.ts +2 -0
  14. package/es/chat-attachments/_example-js/scroll-y.d.ts +2 -0
  15. package/es/chat-attachments/index.js +3 -1
  16. package/es/chat-attachments/index.js.map +1 -1
  17. package/es/chat-engine/_example-js/agui-basic.d.ts +10 -0
  18. package/es/chat-engine/_example-js/agui-comprehensive.d.ts +2 -0
  19. package/es/chat-engine/_example-js/agui-test.d.ts +11 -0
  20. package/es/chat-engine/_example-js/agui-toolcall.d.ts +5 -0
  21. package/es/chat-engine/_example-js/agui-videoclip.d.ts +8 -0
  22. package/es/chat-engine/_example-js/agui.d.ts +1 -0
  23. package/es/chat-engine/_example-js/basic.d.ts +9 -0
  24. package/es/chat-engine/_example-js/components/HotelCard.d.ts +3 -0
  25. package/es/chat-engine/_example-js/components/HumanInputForm.d.ts +6 -0
  26. package/es/chat-engine/_example-js/components/HumanInputResult.d.ts +3 -0
  27. package/es/chat-engine/_example-js/components/ItineraryCard.d.ts +3 -0
  28. package/es/chat-engine/_example-js/components/PlanningStatePanel.d.ts +4 -0
  29. package/es/chat-engine/_example-js/components/Toolcall.d.ts +4 -0
  30. package/es/chat-engine/_example-js/components/WeatherCard.d.ts +3 -0
  31. package/es/chat-engine/_example-js/components/login.d.ts +1 -0
  32. package/es/chat-engine/_example-js/comprehensive.d.ts +12 -0
  33. package/es/chat-engine/_example-js/custom-content.d.ts +1 -0
  34. package/es/chat-engine/_example-js/hookComponent.d.ts +1 -0
  35. package/es/chat-engine/_example-js/initial-messages.d.ts +9 -0
  36. package/es/chat-engine/_example-js/instance-methods.d.ts +13 -0
  37. package/es/chat-engine/_example-js/travel-actions.d.ts +91 -0
  38. package/es/chat-engine/_example-js/travelToolcall.d.ts +1 -0
  39. package/es/{chatbot/components/toolcall → chat-engine/components/activity}/index.d.ts +1 -0
  40. package/es/chat-engine/components/activity/index.js +18 -0
  41. package/es/{chatbot/components/toolcall → chat-engine/components/activity}/index.js.map +1 -1
  42. package/es/chat-engine/components/activity/registry.d.ts +44 -0
  43. package/es/{chatbot/components/toolcall → chat-engine/components/activity}/registry.js +32 -22
  44. package/es/chat-engine/components/activity/registry.js.map +1 -0
  45. package/es/chat-engine/components/activity/render.d.ts +11 -0
  46. package/es/chat-engine/components/activity/render.js +107 -0
  47. package/es/chat-engine/components/activity/render.js.map +1 -0
  48. package/es/chat-engine/components/activity/types.d.ts +32 -0
  49. package/es/chat-engine/components/activity/types.js +7 -0
  50. package/es/chat-engine/components/activity/types.js.map +1 -0
  51. package/es/chat-engine/components/index.d.ts +3 -0
  52. package/es/chat-engine/components/index.js +55 -0
  53. package/es/chat-engine/components/index.js.map +1 -0
  54. package/es/chat-engine/components/provider/agent-state.js +1 -1
  55. package/es/chat-engine/components/toolcall/index.js +31 -1
  56. package/es/chat-engine/components/toolcall/index.js.map +1 -1
  57. package/es/chat-engine/components/toolcall/registry.js +1 -1
  58. package/es/chat-engine/components/toolcall/render.d.ts +1 -1
  59. package/es/chat-engine/components/toolcall/render.js +98 -25
  60. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  61. package/es/chat-engine/components/toolcall/types.js +1 -1
  62. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +109 -0
  63. package/es/chat-engine/core/adapters/agui/event-mapper.js +375 -0
  64. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -0
  65. package/es/chat-engine/core/adapters/agui/events.d.ts +1550 -0
  66. package/es/chat-engine/core/adapters/agui/events.js +199 -0
  67. package/es/chat-engine/core/adapters/agui/events.js.map +1 -0
  68. package/es/chat-engine/core/adapters/agui/index.d.ts +91 -0
  69. package/es/chat-engine/core/adapters/agui/index.js +189 -0
  70. package/es/chat-engine/core/adapters/agui/index.js.map +1 -0
  71. package/es/chat-engine/core/adapters/agui/state-manager.d.ts +99 -0
  72. package/es/chat-engine/core/adapters/agui/state-manager.js +168 -0
  73. package/es/chat-engine/core/adapters/agui/state-manager.js.map +1 -0
  74. package/es/chat-engine/core/adapters/agui/types.d.ts +818 -0
  75. package/es/chat-engine/core/adapters/agui/types.js +95 -0
  76. package/es/chat-engine/core/adapters/agui/types.js.map +1 -0
  77. package/es/chat-engine/core/adapters/agui/utils.d.ts +198 -0
  78. package/es/chat-engine/core/adapters/agui/utils.js +318 -0
  79. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -0
  80. package/es/chat-engine/core/index.d.ts +132 -0
  81. package/es/chat-engine/core/index.js +597 -0
  82. package/es/chat-engine/core/index.js.map +1 -0
  83. package/es/chat-engine/core/processor/index.d.ts +20 -0
  84. package/es/chat-engine/core/processor/index.js +146 -0
  85. package/es/chat-engine/core/processor/index.js.map +1 -0
  86. package/es/chat-engine/core/server/batch-client.d.ts +20 -0
  87. package/es/chat-engine/core/server/batch-client.js +114 -0
  88. package/es/chat-engine/core/server/batch-client.js.map +1 -0
  89. package/es/chat-engine/core/server/connection-manager.d.ts +39 -0
  90. package/es/chat-engine/core/server/connection-manager.js +84 -0
  91. package/es/chat-engine/core/server/connection-manager.js.map +1 -0
  92. package/es/chat-engine/core/server/errors.d.ts +22 -0
  93. package/es/chat-engine/core/server/errors.js +80 -0
  94. package/es/chat-engine/core/server/errors.js.map +1 -0
  95. package/es/chat-engine/core/server/index.d.ts +11 -0
  96. package/es/chat-engine/core/server/index.js +26 -0
  97. package/es/chat-engine/core/server/index.js.map +1 -0
  98. package/es/chat-engine/core/server/llm-service.d.ts +44 -0
  99. package/es/chat-engine/core/server/llm-service.js +198 -0
  100. package/es/chat-engine/core/server/llm-service.js.map +1 -0
  101. package/es/chat-engine/core/server/sse-client.d.ts +77 -0
  102. package/es/chat-engine/core/server/sse-client.js +362 -0
  103. package/es/chat-engine/core/server/sse-client.js.map +1 -0
  104. package/es/chat-engine/core/server/sse-parser.d.ts +49 -0
  105. package/es/chat-engine/core/server/sse-parser.js +116 -0
  106. package/es/chat-engine/core/server/sse-parser.js.map +1 -0
  107. package/es/chat-engine/core/server/types.d.ts +54 -0
  108. package/es/chat-engine/core/server/types.js +28 -0
  109. package/es/chat-engine/core/server/types.js.map +1 -0
  110. package/es/chat-engine/core/store/message.d.ts +27 -0
  111. package/es/chat-engine/core/store/message.js +263 -0
  112. package/es/chat-engine/core/store/message.js.map +1 -0
  113. package/es/chat-engine/core/store/model.d.ts +8 -0
  114. package/es/chat-engine/core/store/model.js +65 -0
  115. package/es/chat-engine/core/store/model.js.map +1 -0
  116. package/es/chat-engine/core/store/reactiveState.d.ts +52 -0
  117. package/es/chat-engine/core/store/reactiveState.js +1359 -0
  118. package/es/chat-engine/core/store/reactiveState.js.map +1 -0
  119. package/es/chat-engine/core/type.d.ts +255 -0
  120. package/es/chat-engine/core/type.js +7 -0
  121. package/es/chat-engine/core/type.js.map +1 -0
  122. package/es/chat-engine/core/utils/eventEmitter.d.ts +10 -0
  123. package/es/chat-engine/core/utils/eventEmitter.js +67 -0
  124. package/es/chat-engine/core/utils/eventEmitter.js.map +1 -0
  125. package/es/chat-engine/core/utils/index.d.ts +33 -0
  126. package/es/chat-engine/core/utils/index.js +999 -0
  127. package/es/chat-engine/core/utils/index.js.map +1 -0
  128. package/es/chat-engine/core/utils/logger.d.ts +30 -0
  129. package/es/chat-engine/core/utils/logger.js +87 -0
  130. package/es/chat-engine/core/utils/logger.js.map +1 -0
  131. package/es/chat-engine/hooks/index.d.ts +4 -0
  132. package/es/chat-engine/hooks/index.js +20 -0
  133. package/es/chat-engine/hooks/index.js.map +1 -0
  134. package/es/chat-engine/hooks/useAgentActivity.d.ts +16 -0
  135. package/es/chat-engine/hooks/useAgentActivity.js +73 -0
  136. package/es/chat-engine/hooks/useAgentActivity.js.map +1 -0
  137. package/es/chat-engine/hooks/useAgentState.js +1 -1
  138. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  139. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  140. package/es/chat-engine/hooks/useChat.js +3 -3
  141. package/es/chat-engine/hooks/useChat.js.map +1 -1
  142. package/es/chat-engine/index.d.ts +3 -3
  143. package/es/chat-engine/index.js +40 -5
  144. package/es/chat-engine/index.js.map +1 -1
  145. package/es/chat-filecard/_example-js/base.d.ts +1 -0
  146. package/es/chat-filecard/index.js +4 -6
  147. package/es/chat-filecard/index.js.map +1 -1
  148. package/es/chat-loading/_example-js/base.d.ts +2 -0
  149. package/es/chat-loading/_example-js/text.d.ts +2 -0
  150. package/es/chat-loading/index.js +4 -6
  151. package/es/chat-loading/index.js.map +1 -1
  152. package/es/chat-markdown/_example-js/base.d.ts +1 -0
  153. package/es/chat-markdown/_example-js/custom.d.ts +2 -0
  154. package/es/chat-markdown/_example-js/event.d.ts +1 -0
  155. package/es/chat-markdown/_example-js/footnote.d.ts +2 -0
  156. package/es/chat-markdown/_example-js/plugin.d.ts +2 -0
  157. package/es/chat-markdown/_example-js/theme.d.ts +2 -0
  158. package/es/chat-markdown/index.js +4 -6
  159. package/es/chat-markdown/index.js.map +1 -1
  160. package/es/chat-message/_example-js/action.d.ts +1 -0
  161. package/es/chat-message/_example-js/base.d.ts +1 -0
  162. package/es/chat-message/_example-js/configure.d.ts +1 -0
  163. package/es/chat-message/_example-js/content.d.ts +1 -0
  164. package/es/chat-message/_example-js/custom.d.ts +1 -0
  165. package/es/chat-message/_example-js/handle-actions.d.ts +7 -0
  166. package/es/chat-message/_example-js/status.d.ts +1 -0
  167. package/es/chat-message/_example-js/think.d.ts +1 -0
  168. package/es/chat-message/index.js +4 -6
  169. package/es/chat-message/index.js.map +1 -1
  170. package/es/chat-sender/_example-js/attachment.d.ts +2 -0
  171. package/es/chat-sender/_example-js/base.d.ts +2 -0
  172. package/es/chat-sender/_example-js/custom.d.ts +2 -0
  173. package/es/chat-sender/index.js +4 -6
  174. package/es/chat-sender/index.js.map +1 -1
  175. package/es/chat-thinking/_example-js/base.d.ts +1 -0
  176. package/es/chat-thinking/_example-js/style.d.ts +1 -0
  177. package/es/chat-thinking/index.js +4 -6
  178. package/es/chat-thinking/index.js.map +1 -1
  179. package/es/chatbot/_example-js/agent.d.ts +1 -0
  180. package/es/chatbot/_example-js/agui.d.ts +13 -0
  181. package/es/chatbot/_example-js/backup/travel.d.ts +1 -0
  182. package/es/chatbot/_example-js/basic.d.ts +1 -0
  183. package/es/chatbot/_example-js/code.d.ts +1 -0
  184. package/es/chatbot/_example-js/components/ItineraryCard.d.ts +3 -0
  185. package/es/chatbot/_example-js/components/login.d.ts +1 -0
  186. package/es/chatbot/_example-js/comprehensive.d.ts +1 -0
  187. package/es/chatbot/_example-js/custom-content.d.ts +1 -0
  188. package/es/chatbot/_example-js/custom-merge.d.ts +1 -0
  189. package/es/chatbot/_example-js/custom.d.ts +1 -0
  190. package/es/chatbot/_example-js/docs.d.ts +1 -0
  191. package/es/chatbot/_example-js/image.d.ts +1 -0
  192. package/es/chatbot/_example-js/initial-messages.d.ts +9 -0
  193. package/es/chatbot/_example-js/instance-methods.d.ts +14 -0
  194. package/es/chatbot/_example-js/nostream.d.ts +1 -0
  195. package/es/chatbot/_example-js/quick-start.d.ts +9 -0
  196. package/es/chatbot/_example-js/research.d.ts +1 -0
  197. package/es/chatbot/_example-js/role-message-config.d.ts +22 -0
  198. package/es/chatbot/_example-js/sender-config.d.ts +20 -0
  199. package/es/chatbot/_example-js/service-config.d.ts +17 -0
  200. package/es/chatbot/_example-js/simple.d.ts +1 -0
  201. package/es/chatbot/_example-js/utils/messageRenderer.d.ts +5 -0
  202. package/es/chatbot/index.js +4 -6
  203. package/es/chatbot/index.js.map +1 -1
  204. package/es/index.js +38 -9
  205. package/es/index.js.map +1 -1
  206. package/es/style/index.js +1 -1
  207. package/package.json +2 -2
  208. package/es/chatbot/components/provider/agent-state.d.ts +0 -5
  209. package/es/chatbot/components/provider/agent-state.js +0 -28
  210. package/es/chatbot/components/provider/agent-state.js.map +0 -1
  211. package/es/chatbot/components/toolcall/index.js +0 -19
  212. package/es/chatbot/components/toolcall/registry.d.ts +0 -35
  213. package/es/chatbot/components/toolcall/registry.js.map +0 -1
  214. package/es/chatbot/components/toolcall/render.d.ts +0 -13
  215. package/es/chatbot/components/toolcall/render.js +0 -207
  216. package/es/chatbot/components/toolcall/render.js.map +0 -1
  217. package/es/chatbot/components/toolcall/types.d.ts +0 -57
  218. package/es/chatbot/components/toolcall/types.js +0 -15
  219. package/es/chatbot/components/toolcall/types.js.map +0 -1
  220. package/es/chatbot/hooks/useAgentState.d.ts +0 -40
  221. package/es/chatbot/hooks/useAgentState.js +0 -76
  222. package/es/chatbot/hooks/useAgentState.js.map +0 -1
  223. package/es/chatbot/hooks/useAgentToolcall.d.ts +0 -28
  224. package/es/chatbot/hooks/useAgentToolcall.js +0 -78
  225. package/es/chatbot/hooks/useAgentToolcall.js.map +0 -1
  226. package/es/chatbot/hooks/useChat.d.ts +0 -11
  227. package/es/chatbot/hooks/useChat.js +0 -66
  228. package/es/chatbot/hooks/useChat.js.map +0 -1
package/es/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.0
2
+ * tdesign v1.0.2-alpha.9
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
@@ -17,30 +17,56 @@ export { ChatThinking } from './chat-thinking/index.js';
17
17
  export { useChat } from './chat-engine/hooks/useChat.js';
18
18
  export { useAgentToolcall } from './chat-engine/hooks/useAgentToolcall.js';
19
19
  export { AgentStateContext, useAgentState, useAgentStateContext, useAgentStateDataByKey } from './chat-engine/hooks/useAgentState.js';
20
+ export { useAgentActivity } from './chat-engine/hooks/useAgentActivity.js';
20
21
  export { isNonInteractive, isNonInteractiveConfig } from './chat-engine/components/toolcall/types.js';
21
22
  export { agentToolcallRegistry } from './chat-engine/components/toolcall/registry.js';
22
23
  export { ToolCallRenderer, withAgentStateToolcall, withAgentStateToolcall1 } from './chat-engine/components/toolcall/render.js';
24
+ export { activityRegistry } from './chat-engine/components/activity/registry.js';
25
+ export { ActivityRenderer } from './chat-engine/components/activity/render.js';
23
26
  export { AgentStateProvider } from './chat-engine/components/provider/agent-state.js';
24
- export * from 'tdesign-web-components/lib/chat-engine';
27
+ export { applyJsonPatch, findTargetElement, getMessageContentForCopy, isAIMessage, isActivityContent, isAttachmentContent, isImageContent, isMarkdownContent, isReasoningContent, isSearchContent, isSuggestionContent, isTextContent, isThinkingContent, isToolCallContent, isUserMessage, safeParseJSON } from './chat-engine/core/utils/index.js';
28
+ export { StateManagerImpl, stateManager } from './chat-engine/core/adapters/agui/state-manager.js';
29
+ export { AGUIEventType, ActivityDeltaEventSchema, ActivitySnapshotEventSchema, CustomEventSchema, EventSchemas, MessagesSnapshotEventSchema, RawEventSchema, RunErrorEventSchema, RunFinishedEventSchema, RunStartedEventSchema, StateDeltaEventSchema, StateSnapshotEventSchema, StepFinishedEventSchema, StepStartedEventSchema, TextMessageChunkEventSchema, TextMessageContentEventSchema, TextMessageEndEventSchema, TextMessageStartEventSchema, ThinkingEndEventSchema, ThinkingStartEventSchema, ThinkingTextMessageContentEventSchema, ThinkingTextMessageEndEventSchema, ThinkingTextMessageStartEventSchema, ToolCallArgsEventSchema, ToolCallChunkEventSchema, ToolCallEndEventSchema, ToolCallResultEventSchema, ToolCallStartEventSchema, isActivityEvent, isStateEvent, isTextMessageEvent, isThinkingEvent, isToolCallEvent } from './chat-engine/core/adapters/agui/events.js';
30
+ export { AGUIAdapter } from './chat-engine/core/adapters/agui/index.js';
25
31
  import 'tdesign-web-components/lib/chatbot';
26
32
  import 'tdesign-web-components/lib/chat-message/content/reasoning-content';
27
33
  import 'tdesign-web-components/lib/chat-message/content/search-content';
28
34
  import 'tdesign-web-components/lib/chat-message/content/suggestion-content';
29
35
  import './_util/reactify.js';
36
+ import '@babel/runtime/helpers/defineProperty';
30
37
  import '@babel/runtime/helpers/objectWithoutProperties';
31
- import '@babel/runtime/helpers/toConsumableArray';
38
+ import '@babel/runtime/helpers/typeof';
39
+ import '@babel/runtime/helpers/slicedToArray';
32
40
  import '@babel/runtime/helpers/classCallCheck';
33
41
  import '@babel/runtime/helpers/createClass';
34
42
  import '@babel/runtime/helpers/possibleConstructorReturn';
35
43
  import '@babel/runtime/helpers/getPrototypeOf';
36
44
  import '@babel/runtime/helpers/inherits';
37
- import '@babel/runtime/helpers/defineProperty';
38
- import '@babel/runtime/helpers/slicedToArray';
39
- import '@babel/runtime/helpers/typeof';
40
45
  import 'react';
41
- import 'react-dom';
42
46
  import 'react-dom/client';
47
+ import './chat-engine/components/index.js';
43
48
  import './chat-engine/components/toolcall/index.js';
49
+ import './chat-engine/components/activity/index.js';
50
+ import './chat-engine/components/activity/types.js';
51
+ import './chat-engine/core/index.js';
52
+ import '@babel/runtime/helpers/asyncToGenerator';
53
+ import '@babel/runtime/regenerator';
54
+ import './chat-engine/core/store/message.js';
55
+ import '@babel/runtime/helpers/toConsumableArray';
56
+ import '@babel/runtime/helpers/get';
57
+ import './chat-engine/core/store/reactiveState.js';
58
+ import '@babel/runtime/helpers/wrapNativeSuper';
59
+ import './chat-engine/core/processor/index.js';
60
+ import './chat-engine/core/server/index.js';
61
+ import './chat-engine/core/server/llm-service.js';
62
+ import './chat-engine/core/utils/logger.js';
63
+ import './chat-engine/core/server/batch-client.js';
64
+ import './chat-engine/core/utils/eventEmitter.js';
65
+ import './chat-engine/core/server/errors.js';
66
+ import './chat-engine/core/server/sse-client.js';
67
+ import './chat-engine/core/server/connection-manager.js';
68
+ import './chat-engine/core/server/sse-parser.js';
69
+ import './chat-engine/core/server/types.js';
44
70
  import 'tdesign-web-components/lib/chat-action';
45
71
  import 'tdesign-web-components/lib/attachments';
46
72
  import 'tdesign-web-components/lib/filecard';
@@ -50,6 +76,9 @@ import 'tdesign-web-components/lib/chat-message/content/markdown-content';
50
76
  import 'tdesign-web-components/lib/chat-message';
51
77
  import 'tdesign-web-components/lib/chat-sender';
52
78
  import 'tdesign-web-components/lib/chat-message/content/thinking-content';
53
- import '@babel/runtime/helpers/asyncToGenerator';
54
- import '@babel/runtime/regenerator';
79
+ import 'tdesign-web-components/lib/chat-engine';
80
+ import 'zod';
81
+ import './chat-engine/core/adapters/agui/types.js';
82
+ import './chat-engine/core/adapters/agui/event-mapper.js';
83
+ import './chat-engine/core/adapters/agui/utils.js';
55
84
  //# sourceMappingURL=index.js.map
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/es/style/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * tdesign v1.0.2-alpha.0
2
+ * tdesign v1.0.2-alpha.9
3
3
  * (c) 2026 tdesign
4
4
  * @license MIT
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tdesign-react/chat",
3
- "version": "1.0.2-alpha.0",
3
+ "version": "1.0.2-alpha.10",
4
4
  "title": "@tdesign-react/chat",
5
5
  "description": "TDesign Pro Component for AIGC",
6
6
  "module": "es/index.js",
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "dependencies": {
52
52
  "@babel/runtime": "~7.26.7",
53
- "tdesign-web-components": "1.2.11-alpha.0",
53
+ "tdesign-web-components": "1.2.11-alpha.9",
54
54
  "classnames": "~2.5.1",
55
55
  "lodash-es": "^4.17.21",
56
56
  "zod": "^3.24.2",
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- import { type StateActionOptions } from '../../hooks/useAgentState';
3
- export declare const AgentStateProvider: ({ children, initialState, subscribeKey }: StateActionOptions & {
4
- children: React.ReactNode;
5
- }) => import("react/jsx-runtime").JSX.Element;
@@ -1,28 +0,0 @@
1
- /**
2
- * tdesign v1.0.0-beta.4
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- import React from 'react';
8
- import { useAgentState, AgentStateContext } from '../../hooks/useAgentState.js';
9
- import '@babel/runtime/helpers/defineProperty';
10
- import '@babel/runtime/helpers/slicedToArray';
11
- import 'tdesign-web-components/lib/chat-engine';
12
-
13
- var AgentStateProvider = function AgentStateProvider(_ref) {
14
- var children = _ref.children,
15
- _ref$initialState = _ref.initialState,
16
- initialState = _ref$initialState === void 0 ? {} : _ref$initialState,
17
- subscribeKey = _ref.subscribeKey;
18
- var agentStateResult = useAgentState({
19
- initialState: initialState,
20
- subscribeKey: subscribeKey
21
- });
22
- return /* @__PURE__ */React.createElement(AgentStateContext.Provider, {
23
- value: agentStateResult
24
- }, children);
25
- };
26
-
27
- export { AgentStateProvider };
28
- //# sourceMappingURL=agent-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-state.js","sources":["../../../../../pro-components/chat/chatbot/components/provider/agent-state.tsx"],"sourcesContent":["import React from 'react';\nimport { AgentStateContext, type StateActionOptions, useAgentState } from '../../hooks/useAgentState';\n\n// 导出 Provider 组件\nexport const AgentStateProvider = ({ children, initialState = {}, subscribeKey }: StateActionOptions & {\n children: React.ReactNode;\n}) => {\n const agentStateResult = useAgentState({\n initialState,\n subscribeKey,\n });\n\n return (\n <AgentStateContext.Provider value={agentStateResult}>\n {children}\n </AgentStateContext.Provider>\n );\n};\n"],"names":["AgentStateProvider","_ref","children","_ref$initialState","initialState","subscribeKey","agentStateResult","useAgentState","React","createElement","AgentStateContext","Provider","value"],"mappings":";;;;;;;;;;;;IAIaA,kBAAA,GAAqB,SAArBA,kBAAAA,CAAAC,IAAA,EAEP;AAAA,EAAA,IAF+BC,QAAA,GAAAD,IAAA,CAAAC,QAAA;IAAAC,iBAAA,GAAAF,IAAA,CAAUG;AAAAA,IAAAA,8CAAe,EAAC,GAAAD,iBAAA;IAAGE,oBAAAA;EAGhE,IAAMC,mBAAmBC,aAAc,CAAA;AACrCH,IAAAA,YAAA,EAAAA,YAAA;AACAC,IAAAA,YAAA,EAAAA,YAAAA;AACF,GAAC,CAAA,CAAA;EAGC,sBAAAG,KAAA,CAAAC,aAAA,CAACC,kBAAkBC,QAAlB,EAAA;AAA2BC,IAAAA,KAAO,EAAAN,gBAAAA;GAAA,EAChCJ,QACH,CAAA,CAAA;AAEJ;;;;"}
@@ -1,19 +0,0 @@
1
- /**
2
- * tdesign v1.0.0-beta.4
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- export { isNonInteractive, isNonInteractiveConfig } from './types.js';
8
- export { agentToolcallRegistry } from './registry.js';
9
- export { ToolCallRenderer, withAgentStateToolcall, withAgentStateToolcall1 } from './render.js';
10
- import '@babel/runtime/helpers/classCallCheck';
11
- import '@babel/runtime/helpers/createClass';
12
- import '@babel/runtime/helpers/defineProperty';
13
- import 'react';
14
- import '@babel/runtime/helpers/asyncToGenerator';
15
- import '@babel/runtime/helpers/slicedToArray';
16
- import '@babel/runtime/regenerator';
17
- import '../../hooks/useAgentState.js';
18
- import 'tdesign-web-components/lib/chat-engine';
19
- //# sourceMappingURL=index.js.map
@@ -1,35 +0,0 @@
1
- import React from 'react';
2
- import type { AgentToolcallConfig, AgentToolcallRegistry, ToolcallComponentProps } from './types';
3
- /**
4
- * 全局 Agent Toolcall 注册表
5
- */
6
- declare class AgentToolcallRegistryManager {
7
- private registry;
8
- private renderFunctionCache;
9
- /**
10
- * 注册一个 Agent Toolcall
11
- */
12
- register<TArgs extends object = any, TResult = any, TResponse = any>(config: AgentToolcallConfig<TArgs, TResult, TResponse>): void;
13
- /**
14
- * 获取指定名称的 Agent Toolcall 配置
15
- */
16
- get(name: string): AgentToolcallConfig | undefined;
17
- /**
18
- * 获取或创建缓存的组件渲染函数
19
- */
20
- getRenderFunction(name: string): React.MemoExoticComponent<React.ComponentType<ToolcallComponentProps>> | null;
21
- /**
22
- * 获取所有已注册的 Agent Toolcall
23
- */
24
- getAll(): AgentToolcallRegistry;
25
- /**
26
- * 取消注册指定的 Agent Toolcall
27
- */
28
- unregister(name: string): void;
29
- /**
30
- * 清空所有注册的 Agent Toolcall
31
- */
32
- clear(): void;
33
- }
34
- export declare const agentToolcallRegistry: AgentToolcallRegistryManager;
35
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sources":["../../../../../pro-components/chat/chatbot/components/toolcall/registry.ts"],"sourcesContent":["import React from 'react';\nimport type { AgentToolcallConfig, AgentToolcallRegistry, ToolcallComponentProps } from './types';\n\n/**\n * 全局 Agent Toolcall 注册表\n */\nclass AgentToolcallRegistryManager {\n private registry: AgentToolcallRegistry = {};\n\n // 添加组件渲染函数缓存(类似CopilotKit的chatComponentsCache.current.actions)\n private renderFunctionCache = new Map<\n string,\n React.MemoExoticComponent<React.ComponentType<ToolcallComponentProps>>\n >();\n\n /**\n * 注册一个 Agent Toolcall\n */\n register<TArgs extends object = any, TResult = any, TResponse = any>(\n config: AgentToolcallConfig<TArgs, TResult, TResponse>,\n ): void {\n const existingConfig = this.registry[config.name];\n\n // 如果组件发生变化,清除旧的缓存\n if (existingConfig && existingConfig.component !== config.component) {\n this.renderFunctionCache.delete(config.name);\n }\n this.registry[config.name] = config;\n window.dispatchEvent(\n new CustomEvent('toolcall-registered', {\n detail: { name: config.name },\n }),\n );\n }\n\n /**\n * 获取指定名称的 Agent Toolcall 配置\n */\n get(name: string): AgentToolcallConfig | undefined {\n return this.registry[name];\n }\n\n /**\n * 获取或创建缓存的组件渲染函数\n */\n getRenderFunction(name: string): React.MemoExoticComponent<React.ComponentType<ToolcallComponentProps>> | null {\n const config = this.registry[name];\n if (!config) return null;\n\n // 检查缓存\n let memoizedComponent = this.renderFunctionCache.get(name);\n\n if (!memoizedComponent) {\n // 创建memo化的组件\n memoizedComponent = React.memo((props: ToolcallComponentProps) => React.createElement(config.component, props));\n\n // 缓存组件\n this.renderFunctionCache.set(name, memoizedComponent);\n }\n\n return memoizedComponent;\n }\n\n /**\n * 获取所有已注册的 Agent Toolcall\n */\n getAll(): AgentToolcallRegistry {\n return { ...this.registry };\n }\n\n /**\n * 取消注册指定的 Agent Toolcall\n */\n unregister(name: string): void {\n delete this.registry[name];\n this.renderFunctionCache.delete(name);\n }\n\n /**\n * 清空所有注册的 Agent Toolcall\n */\n clear(): void {\n this.registry = {};\n this.renderFunctionCache.clear();\n }\n}\n\n// 导出单例实例\nexport const agentToolcallRegistry = new AgentToolcallRegistryManager();\n"],"names":["AgentToolcallRegistryManager","_classCallCheck","_defineProperty","Map","_createClass","key","value","register","config","existingConfig","registry","name","component","renderFunctionCache","window","dispatchEvent","CustomEvent","detail","get","getRenderFunction","memoizedComponent","React","memo","props","createElement","set","getAll","_objectSpread","unregister","clear","agentToolcallRegistry"],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import type { ToolCall } from 'tdesign-web-components/lib/chat-engine';
3
- interface ToolCallRendererProps {
4
- toolCall: ToolCall;
5
- onRespond?: (toolCall: ToolCall, response: any) => void;
6
- }
7
- export declare const ToolCallRenderer: React.NamedExoticComponent<ToolCallRendererProps>;
8
- type WithAgentStateProps<P> = P & {
9
- agentState?: Record<string, any>;
10
- };
11
- export declare const withAgentStateToolcall1: <P extends object>(Component: React.ComponentType<WithAgentStateProps<P>>) => React.ComponentType<P>;
12
- export declare const withAgentStateToolcall: <P extends object>(Component: React.ComponentType<WithAgentStateProps<P>>, subscribeKeyExtractor?: (props: P) => string | undefined) => React.ComponentType<P>;
13
- export {};
@@ -1,207 +0,0 @@
1
- /**
2
- * tdesign v1.0.0-beta.4
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
8
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
9
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
10
- import _regeneratorRuntime from '@babel/runtime/regenerator';
11
- import React, { useState, useMemo, useCallback, useEffect } from 'react';
12
- import { isNonInteractiveConfig } from './types.js';
13
- import { agentToolcallRegistry } from './registry.js';
14
- import { useAgentStateDataByKey, AgentStateContext } from '../../hooks/useAgentState.js';
15
- import '@babel/runtime/helpers/classCallCheck';
16
- import '@babel/runtime/helpers/createClass';
17
- import 'tdesign-web-components/lib/chat-engine';
18
-
19
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
- var ToolCallRenderer = /*#__PURE__*/React.memo(function (_ref) {
22
- var toolCall = _ref.toolCall,
23
- onRespond = _ref.onRespond;
24
- var _useState = useState({
25
- status: "idle"
26
- }),
27
- _useState2 = _slicedToArray(_useState, 2),
28
- actionState = _useState2[0],
29
- setActionState = _useState2[1];
30
- var config = useMemo(function () {
31
- var cfg = agentToolcallRegistry.get(toolCall.toolCallName);
32
- return cfg;
33
- }, [toolCall.toolCallName]);
34
- var _useState3 = useState(function () {
35
- return !!agentToolcallRegistry.getRenderFunction(toolCall.toolCallName);
36
- }),
37
- _useState4 = _slicedToArray(_useState3, 2),
38
- isRegistered = _useState4[0],
39
- setIsRegistered = _useState4[1];
40
- var args = useMemo(function () {
41
- try {
42
- return toolCall.args ? JSON.parse(toolCall.args) : {};
43
- } catch (error) {
44
- console.error("\u89E3\u6790\u5DE5\u5177\u8C03\u7528\u53C2\u6570\u5931\u8D25:", error);
45
- return {};
46
- }
47
- }, [toolCall.args]);
48
- var handleRespond = useCallback(function (response) {
49
- if (onRespond) {
50
- onRespond(toolCall, response);
51
- setActionState(function (prev) {
52
- return _objectSpread(_objectSpread({}, prev), {}, {
53
- status: "complete",
54
- result: response
55
- });
56
- });
57
- }
58
- }, [toolCall.toolCallId, onRespond]);
59
- useEffect(function () {
60
- if (!config) return;
61
- if (isNonInteractiveConfig(config)) {
62
- var executeHandler = /*#__PURE__*/function () {
63
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
64
- var backendResult, result;
65
- return _regeneratorRuntime.wrap(function _callee$(_context) {
66
- while (1) switch (_context.prev = _context.next) {
67
- case 0:
68
- _context.prev = 0;
69
- setActionState({
70
- status: "executing"
71
- });
72
- if (toolCall.result) {
73
- try {
74
- backendResult = JSON.parse(toolCall.result);
75
- } catch (error) {
76
- console.warn("\u89E3\u6790\u540E\u7AEF\u7ED3\u679C\u5931\u8D25\uFF0C\u4F7F\u7528\u539F\u59CB\u5B57\u7B26\u4E32:", error);
77
- backendResult = toolCall.result;
78
- }
79
- }
80
- _context.next = 5;
81
- return config.handler(args, backendResult);
82
- case 5:
83
- result = _context.sent;
84
- setActionState({
85
- status: "complete",
86
- result: result
87
- });
88
- _context.next = 12;
89
- break;
90
- case 9:
91
- _context.prev = 9;
92
- _context.t0 = _context["catch"](0);
93
- setActionState({
94
- status: "error",
95
- error: _context.t0
96
- });
97
- case 12:
98
- case "end":
99
- return _context.stop();
100
- }
101
- }, _callee, null, [[0, 9]]);
102
- }));
103
- return function executeHandler() {
104
- return _ref2.apply(this, arguments);
105
- };
106
- }();
107
- executeHandler();
108
- } else if (toolCall.result) {
109
- try {
110
- var result = JSON.parse(toolCall.result);
111
- setActionState({
112
- status: "complete",
113
- result: result
114
- });
115
- } catch (error) {
116
- setActionState({
117
- status: "error",
118
- error: error
119
- });
120
- }
121
- } else {
122
- setActionState({
123
- status: "executing"
124
- });
125
- }
126
- }, [config, args, toolCall.result]);
127
- var subscribeKeyExtractor = useMemo(function () {
128
- return config === null || config === void 0 ? void 0 : config.subscribeKey;
129
- }, [config]);
130
- var targetStateKey = useMemo(function () {
131
- if (!subscribeKeyExtractor) return void 0;
132
- var fullProps = {
133
- status: actionState.status,
134
- args: args,
135
- result: actionState.result,
136
- error: actionState.error,
137
- respond: handleRespond
138
- };
139
- return subscribeKeyExtractor(fullProps);
140
- }, [subscribeKeyExtractor, args, actionState]);
141
- useEffect(function () {
142
- if (!isRegistered) {
143
- var handleRegistered = function handleRegistered(event) {
144
- var _event$detail;
145
- if (((_event$detail = event.detail) === null || _event$detail === void 0 ? void 0 : _event$detail.name) === toolCall.toolCallName) {
146
- setIsRegistered(true);
147
- }
148
- };
149
- window.addEventListener("toolcall-registered", handleRegistered);
150
- return function () {
151
- window.removeEventListener("toolcall-registered", handleRegistered);
152
- };
153
- }
154
- }, [toolCall.toolCallName, isRegistered]);
155
- var agentState = useAgentStateDataByKey(targetStateKey);
156
- var componentProps = useMemo(function () {
157
- return {
158
- status: actionState.status,
159
- args: args,
160
- result: actionState.result,
161
- error: actionState.error,
162
- respond: handleRespond,
163
- agentState: agentState
164
- };
165
- }, [actionState.status, args, actionState.result, actionState.error, handleRespond, agentState]);
166
- var MemoizedComponent = useMemo(function () {
167
- return agentToolcallRegistry.getRenderFunction(toolCall.toolCallName);
168
- }, [toolCall.toolCallName, isRegistered]);
169
- if (!MemoizedComponent) {
170
- return null;
171
- }
172
- return /* @__PURE__ */React.createElement(MemoizedComponent, _objectSpread({}, componentProps));
173
- }, function (prevProps, nextProps) {
174
- return prevProps.toolCall.toolCallId === nextProps.toolCall.toolCallId && prevProps.toolCall.toolCallName === nextProps.toolCall.toolCallName && prevProps.toolCall.args === nextProps.toolCall.args && prevProps.toolCall.result === nextProps.toolCall.result && prevProps.onRespond === nextProps.onRespond;
175
- });
176
- var withAgentStateToolcall1 = function withAgentStateToolcall1(Component) {
177
- var WrappedComponent = function WrappedComponent(props) {
178
- return /* @__PURE__ */React.createElement(AgentStateContext.Consumer, null, function (context) {
179
- if (!context) {
180
- console.warn("AgentStateContext not found, component will render without state");
181
- return /* @__PURE__ */React.createElement(Component, _objectSpread({}, props));
182
- }
183
- return /* @__PURE__ */React.createElement(Component, _objectSpread(_objectSpread({}, props), {}, {
184
- agentState: context.stateMap
185
- }));
186
- });
187
- };
188
- WrappedComponent.displayName = "withAgentState(".concat(Component.displayName || Component.name || "Component", ")");
189
- return /*#__PURE__*/React.memo(WrappedComponent);
190
- };
191
- var withAgentStateToolcall = function withAgentStateToolcall(Component, subscribeKeyExtractor) {
192
- var WrappedComponent = function WrappedComponent(props) {
193
- var targetStateKey = useMemo(function () {
194
- return subscribeKeyExtractor ? subscribeKeyExtractor(props) : void 0;
195
- }, [props]);
196
- var agentState = useAgentStateDataByKey(targetStateKey);
197
- console.log("====WrappedComponent", agentState, targetStateKey);
198
- return /* @__PURE__ */React.createElement(Component, _objectSpread(_objectSpread({}, props), {}, {
199
- agentState: agentState
200
- }));
201
- };
202
- WrappedComponent.displayName = "withAgentState(".concat(Component.displayName || Component.name || "Component", ")");
203
- return /*#__PURE__*/React.memo(WrappedComponent);
204
- };
205
-
206
- export { ToolCallRenderer, withAgentStateToolcall, withAgentStateToolcall1 };
207
- //# sourceMappingURL=render.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render.js","sources":["../../../../../pro-components/chat/chatbot/components/toolcall/render.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback, useMemo } from 'react';\nimport type { ToolCall } from 'tdesign-web-components/lib/chat-engine';\nimport { isNonInteractiveConfig, type ToolcallComponentProps } from './types';\nimport { agentToolcallRegistry } from './registry';\nimport { AgentStateContext, useAgentStateDataByKey } from '../../hooks/useAgentState';\n\ninterface ToolCallRendererProps {\n toolCall: ToolCall;\n onRespond?: (toolCall: ToolCall, response: any) => void;\n}\n\nexport const ToolCallRenderer = React.memo<ToolCallRendererProps>(\n ({ toolCall, onRespond }) => {\n const [actionState, setActionState] = useState<{\n status: ToolcallComponentProps['status'];\n result?: any;\n error?: Error;\n }>({\n status: 'idle',\n });\n\n // 缓存配置获取\n const config = useMemo(() => {\n const cfg = agentToolcallRegistry.get(toolCall.toolCallName);\n return cfg;\n }, [toolCall.toolCallName]);\n\n // 添加注册状态监听\n const [isRegistered, setIsRegistered] = useState(\n () => !!agentToolcallRegistry.getRenderFunction(toolCall.toolCallName),\n );\n\n // 缓存参数解析\n const args = useMemo(() => {\n try {\n return toolCall.args ? JSON.parse(toolCall.args) : {};\n } catch (error) {\n console.error('解析工具调用参数失败:', error);\n return {};\n }\n }, [toolCall.args]);\n\n const handleRespond = useCallback(\n (response: any) => {\n if (onRespond) {\n onRespond(toolCall, response);\n setActionState((prev) => ({\n ...prev,\n status: 'complete',\n result: response,\n }));\n }\n },\n [toolCall.toolCallId, onRespond],\n );\n\n // 执行 handler(如果存在)- 必须在条件判断之前调用\n useEffect(() => {\n if (!config) return;\n\n if (isNonInteractiveConfig(config)) {\n // 非交互式:执行 handler\n const executeHandler = async () => {\n try {\n setActionState({ status: 'executing' });\n\n // 解析后端返回的结果作为 handler 的第二个参数\n let backendResult;\n if (toolCall.result) {\n try {\n backendResult = JSON.parse(toolCall.result);\n } catch (error) {\n console.warn('解析后端结果失败,使用原始字符串:', error);\n backendResult = toolCall.result;\n }\n }\n\n // 调用 handler,传入 args 和 backendResult\n const result = await config.handler(args, backendResult);\n setActionState({\n status: 'complete',\n result,\n });\n } catch (error) {\n setActionState({\n status: 'error',\n error: error as Error,\n });\n }\n };\n\n executeHandler();\n } else if (toolCall.result) {\n // 交互式:已有结果,显示完成状态\n try {\n const result = JSON.parse(toolCall.result);\n setActionState({\n status: 'complete',\n result,\n });\n } catch (error) {\n setActionState({\n status: 'error',\n error: error as Error,\n });\n }\n } else {\n // 等待用户交互\n setActionState({ status: 'executing' });\n }\n }, [config, args, toolCall.result]);\n\n // 从配置中获取 subscribeKey 提取函数\n const subscribeKeyExtractor = useMemo(() => config?.subscribeKey, [config]);\n\n // 使用配置的提取函数来获取 targetStateKey\n const targetStateKey = useMemo(() => {\n if (!subscribeKeyExtractor) return undefined;\n\n // 构造完整的 props 对象传给提取函数\n const fullProps = {\n status: actionState.status,\n args,\n result: actionState.result,\n error: actionState.error,\n respond: handleRespond,\n };\n\n return subscribeKeyExtractor(fullProps);\n }, [subscribeKeyExtractor, args, actionState]);\n\n // 监听组件注册事件, 无论何时注册,都能正确触发重新渲染\n useEffect(() => {\n if (!isRegistered) {\n const handleRegistered = (event: CustomEvent) => {\n if (event.detail?.name === toolCall.toolCallName) {\n setIsRegistered(true);\n }\n };\n\n // 添加事件监听\n window.addEventListener('toolcall-registered', handleRegistered as EventListener);\n\n return () => {\n window.removeEventListener('toolcall-registered', handleRegistered as EventListener);\n };\n }\n }, [toolCall.toolCallName, isRegistered]);\n\n // 使用精确订阅\n const agentState = useAgentStateDataByKey(targetStateKey);\n\n // 缓存组件 props\n const componentProps = useMemo<ToolcallComponentProps>(\n () => ({\n status: actionState.status,\n args,\n result: actionState.result,\n error: actionState.error,\n respond: handleRespond,\n agentState,\n }),\n [actionState.status, args, actionState.result, actionState.error, handleRespond, agentState],\n );\n\n // 使用registry的缓存渲染函数\n const MemoizedComponent = useMemo(\n () => agentToolcallRegistry.getRenderFunction(toolCall.toolCallName),\n [toolCall.toolCallName, isRegistered],\n );\n\n if (!MemoizedComponent) {\n return null;\n }\n\n return <MemoizedComponent {...componentProps} />;\n },\n (prevProps, nextProps) =>\n prevProps.toolCall.toolCallId === nextProps.toolCall.toolCallId &&\n prevProps.toolCall.toolCallName === nextProps.toolCall.toolCallName &&\n prevProps.toolCall.args === nextProps.toolCall.args &&\n prevProps.toolCall.result === nextProps.toolCall.result &&\n prevProps.onRespond === nextProps.onRespond,\n);\n// 用于调试,可以在控制台查看每次渲染的参数\n// (prevProps, nextProps) => {\n// const toolCallIdSame = prevProps.toolCall.toolCallId === nextProps.toolCall.toolCallId;\n// const toolCallNameSame = prevProps.toolCall.toolCallName === nextProps.toolCall.toolCallName;\n// const argsSame = prevProps.toolCall.args === nextProps.toolCall.args;\n// const resultSame = prevProps.toolCall.result === nextProps.toolCall.result;\n// const onRespondSame = prevProps.onRespond === nextProps.onRespond;\n\n// console.log(`ToolCallRenderer memo 详细检查 [${prevProps.toolCall.toolCallName}]:`, {\n// toolCallIdSame,\n// toolCallNameSame,\n// argsSame,\n// resultSame,\n// onRespondSame,\n// prevToolCallId: prevProps.toolCall.toolCallId,\n// nextToolCallId: nextProps.toolCall.toolCallId,\n// prevOnRespond: prevProps.onRespond,\n// nextOnRespond: nextProps.onRespond,\n// });\n\n// const shouldSkip = toolCallIdSame && toolCallNameSame && argsSame && resultSame && onRespondSame;\n\n// console.log(`ToolCallRenderer memo 检查 [${prevProps.toolCall.toolCallName}]:`, shouldSkip ? '跳过渲染' : '需要重新渲染');\n// return shouldSkip\n// },\n// );\n\n// 定义增强后的 Props 类型\ntype WithAgentStateProps<P> = P & { agentState?: Record<string, any> };\n\n// 创建一个高阶组件来包装需要状态的工具组件\n// export const withAgentStateToolcall = <P extends object>(\n// Component: React.ComponentType<WithAgentStateProps<P>>,\n// ): React.ComponentType<P> => {\n// const WrappedComponent: React.FC<P> = (props: P) => {\n// // 尝试获取 Context 状态\n// let contextState: UseStateActionReturn['state'] | null = null;\n// try {\n// const context = useAgentStateContext();\n// console.log('====context', context);\n// contextState = context.state;\n// } catch {\n// // 如果没有 Context,则忽略\n// }\n\n// // 构造增强后的 props\n// const enhancedProps: WithAgentStateProps<P> = {\n// ...props,\n// ...(contextState && { agentState: contextState }),\n// };\n\n// return <Component {...enhancedProps} />;\n// };\n\n// // 设置 displayName 便于调试\n// WrappedComponent.displayName = `withAgentState(${Component.displayName || Component.name || 'Component'})`;\n\n// return React.memo(WrappedComponent);\n// };\n\nexport const withAgentStateToolcall1 = <P extends object>(\n Component: React.ComponentType<WithAgentStateProps<P>>,\n): React.ComponentType<P> => {\n const WrappedComponent: React.FC<P> = (props: P) => (\n <AgentStateContext.Consumer>\n {(context) => {\n if (!context) {\n console.warn('AgentStateContext not found, component will render without state');\n return <Component {...props} />;\n }\n\n return <Component {...props} agentState={context.stateMap} />;\n }}\n </AgentStateContext.Consumer>\n );\n\n WrappedComponent.displayName = `withAgentState(${Component.displayName || Component.name || 'Component'})`;\n return React.memo(WrappedComponent);\n};\n\nexport const withAgentStateToolcall = <P extends object>(\n Component: React.ComponentType<WithAgentStateProps<P>>,\n subscribeKeyExtractor?: (props: P) => string | undefined,\n): React.ComponentType<P> => {\n const WrappedComponent: React.FC<P> = (props: P) => {\n // 计算需要订阅的 stateKey\n const targetStateKey = useMemo(() => (subscribeKeyExtractor ? subscribeKeyExtractor(props) : undefined), [props]);\n\n const agentState = useAgentStateDataByKey(targetStateKey);\n console.log('====WrappedComponent', agentState, targetStateKey);\n\n return <Component {...props} agentState={agentState} />;\n };\n\n WrappedComponent.displayName = `withAgentState(${Component.displayName || Component.name || 'Component'})`;\n return React.memo(WrappedComponent);\n};\n\n// interface SubscribeStrategy<TArgs = any> {\n// // 自定义状态选择器\n// stateSelector?: (stateMap: Record<string, any>, args: TArgs) => any;\n// // 依赖项,用于优化重新计算\n// deps?: (args: TArgs) => any[];\n// }\n\n// export const withAgentStateToolcall = <P extends object>(\n// Component: React.ComponentType<WithAgentStateProps<P>>,\n// subscribeStrategy?: SubscribeStrategy\n// ): React.ComponentType<P> => {\n// const WrappedComponent: React.FC<P> = (props: P) => {\n// const { stateMap } = useAgentStateContext();\n\n// // 使用自定义选择器\n// const selectedState = useMemo(() => {\n// if (!subscribeStrategy?.stateSelector) {\n// return stateMap;\n// }\n// return subscribeStrategy.stateSelector(stateMap, (props as any).args);\n// }, [\n// stateMap,\n// (props as any).args,\n// ...(subscribeStrategy?.deps?.((props as any).args) || [])\n// ]);\n\n// return <Component {...props} agentState={selectedState} />;\n// };\n\n// WrappedComponent.displayName = `withAgentState(${Component.displayName || Component.name || 'Component'})`;\n// return React.memo(WrappedComponent);\n// };\n"],"names":["ToolCallRenderer","React","memo","_ref","toolCall","onRespond","_useState","useState","status","_useState2","_slicedToArray","actionState","setActionState","config","useMemo","cfg","agentToolcallRegistry","get","toolCallName","_useState3","getRenderFunction","_useState4","isRegistered","setIsRegistered","args","JSON","parse","error","console","handleRespond","useCallback","response","prev","_objectSpread","result","toolCallId","useEffect","isNonInteractiveConfig","executeHandler","_callee","backendResult","_regeneratorRuntime","wrap","_callee$","_context","next","warn","handler","sent","t0","stop","subscribeKeyExtractor","subscribeKey","targetStateKey","fullProps","respond","handleRegistered","event","_event$detail","detail","name","window","addEventListener","removeEventListener","agentState","useAgentStateDataByKey","componentProps","MemoizedComponent","createElement","prevProps","nextProps","withAgentStateToolcall1","Component","WrappedComponent","props","AgentStateContext","Consumer","context","stateMap","displayName","concat","withAgentStateToolcall","log"],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- import React from 'react';
2
- /**
3
- * 智能体可交互组件的标准 Props 接口
4
- */
5
- export interface ToolcallComponentProps<TArgs extends object = any, TResult = any, TResponse = any> {
6
- /** 组件的当前渲染状态 */
7
- status: 'idle' | 'inProgress' | 'executing' | 'complete' | 'error';
8
- /** Agent 调用时传入的初始参数 */
9
- args: TArgs;
10
- /** 当 status 为 'complete' 时,包含 Toolcall 的最终执行结果 */
11
- result?: TResult;
12
- /** 当 status 为 'error' 时,包含错误信息 */
13
- error?: Error;
14
- /**
15
- * 【交互核心】一个回调函数,用于将用户的交互结果返回给宿主环境。
16
- * 仅在"交互式"场景下由宿主提供。
17
- */
18
- respond?: (response: TResponse) => void;
19
- agentState?: Record<string, any>;
20
- }
21
- interface NonInteractiveToolcallConfig<TArgs extends object, TResult> {
22
- name: string;
23
- description: string;
24
- parameters: any[];
25
- /** 业务逻辑执行器,支持可选的后端结果作为第二个参数 */
26
- handler: (args: TArgs, backendResult?: any) => Promise<TResult>;
27
- /** 状态显示组件 */
28
- component: React.FC<ToolcallComponentProps<TArgs, TResult>>;
29
- /** 订阅statekey提取函数 */
30
- subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;
31
- }
32
- interface InteractiveToolcallConfig<TArgs extends object, TResult, TResponse> {
33
- name: string;
34
- description: string;
35
- parameters?: any[];
36
- /** 交互式UI组件 */
37
- component: React.FC<ToolcallComponentProps<TArgs, TResult, TResponse>>;
38
- /** handler 属性不存在,以此作为区分标志 */
39
- handler?: never;
40
- /** 订阅statekey提取函数 */
41
- subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;
42
- }
43
- export type AgentToolcallConfig<TArgs extends object = any, TResult = any, TResponse = any> = NonInteractiveToolcallConfig<TArgs, TResult> | InteractiveToolcallConfig<TArgs, TResult, TResponse>;
44
- export declare function isNonInteractive<TArgs extends object, TResult>(config: AgentToolcallConfig<TArgs, TResult, any>): config is NonInteractiveToolcallConfig<TArgs, TResult>;
45
- export interface AgentToolcallRegistry {
46
- [ToolcallName: string]: AgentToolcallConfig;
47
- }
48
- export interface AgentToolcallState<TArgs extends object = any, TResult = any> {
49
- status: ToolcallComponentProps['status'];
50
- args?: TArgs;
51
- result?: TResult;
52
- error?: Error;
53
- }
54
- export declare const isNonInteractiveConfig: (cfg: AgentToolcallConfig) => cfg is AgentToolcallConfig & {
55
- handler: Function;
56
- };
57
- export {};
@@ -1,15 +0,0 @@
1
- /**
2
- * tdesign v1.0.0-beta.4
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- function isNonInteractive(config) {
8
- return typeof config.handler === "function";
9
- }
10
- var isNonInteractiveConfig = function isNonInteractiveConfig(cfg) {
11
- return typeof cfg.handler === "function";
12
- };
13
-
14
- export { isNonInteractive, isNonInteractiveConfig };
15
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../pro-components/chat/chatbot/components/toolcall/types.ts"],"sourcesContent":["import React from 'react';\n\n/**\n * 智能体可交互组件的标准 Props 接口\n */\nexport interface ToolcallComponentProps<TArgs extends object = any, TResult = any, TResponse = any> {\n /** 组件的当前渲染状态 */\n status: 'idle' | 'inProgress' | 'executing' | 'complete' | 'error';\n /** Agent 调用时传入的初始参数 */\n args: TArgs;\n /** 当 status 为 'complete' 时,包含 Toolcall 的最终执行结果 */\n result?: TResult;\n /** 当 status 为 'error' 时,包含错误信息 */\n error?: Error;\n /**\n * 【交互核心】一个回调函数,用于将用户的交互结果返回给宿主环境。\n * 仅在\"交互式\"场景下由宿主提供。\n */\n respond?: (response: TResponse) => void;\n agentState?: Record<string, any>;\n}\n\n// 场景一:非交互式 Toolcall 的配置 (有 handler)\ninterface NonInteractiveToolcallConfig<TArgs extends object, TResult> {\n name: string;\n description: string;\n parameters: any[];\n /** 业务逻辑执行器,支持可选的后端结果作为第二个参数 */\n handler: (args: TArgs, backendResult?: any) => Promise<TResult>;\n /** 状态显示组件 */\n component: React.FC<ToolcallComponentProps<TArgs, TResult>>;\n /** 订阅statekey提取函数 */\n subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;\n}\n\n// 场景二:交互式 Toolcall 的配置 (无 handler)\ninterface InteractiveToolcallConfig<TArgs extends object, TResult, TResponse> {\n name: string;\n description: string;\n parameters?: any[];\n /** 交互式UI组件 */\n component: React.FC<ToolcallComponentProps<TArgs, TResult, TResponse>>;\n /** handler 属性不存在,以此作为区分标志 */\n handler?: never;\n /** 订阅statekey提取函数 */\n subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;\n}\n\n// 最终的配置类型\nexport type AgentToolcallConfig<TArgs extends object = any, TResult = any, TResponse = any> =\n | NonInteractiveToolcallConfig<TArgs, TResult>\n | InteractiveToolcallConfig<TArgs, TResult, TResponse>;\n\n// 类型守卫:判断是否为非交互式配置\nexport function isNonInteractive<TArgs extends object, TResult>(\n config: AgentToolcallConfig<TArgs, TResult, any>,\n): config is NonInteractiveToolcallConfig<TArgs, TResult> {\n return typeof (config as any).handler === 'function';\n}\n\n// Agent Toolcall 注册表\nexport interface AgentToolcallRegistry {\n [ToolcallName: string]: AgentToolcallConfig;\n}\n\n// 内部状态管理\nexport interface AgentToolcallState<TArgs extends object = any, TResult = any> {\n status: ToolcallComponentProps['status'];\n args?: TArgs;\n result?: TResult;\n error?: Error;\n}\n\n// 类型守卫函数\nexport const isNonInteractiveConfig = (cfg: AgentToolcallConfig): cfg is AgentToolcallConfig & { handler: Function } =>\n typeof (cfg as any).handler === 'function';\n"],"names":["isNonInteractive","config","handler","isNonInteractiveConfig","cfg"],"mappings":";;;;;;AAsDO,SAASA,iBACdC,MACwD,EAAA;AACjD,EAAA,OAAA,OAAQA,OAAeC,OAAY,KAAA,UAAA,CAAA;AAC5C,CAAA;IAgBaC,sBAAyB,GAAA,SAAzBA,sBAAyBA,CAACC,GACrC,EAAA;AAAA,EAAA,OAAA,OAAQA,IAAYF,OAAY,KAAA,UAAA,CAAA;AAAA;;;;"}
@@ -1,40 +0,0 @@
1
- /**
2
- * 状态订阅相关类型定义
3
- */
4
- export interface StateActionOptions {
5
- /**
6
- * 初始状态
7
- */
8
- initialState?: Record<string, any>;
9
- /**
10
- * 只订阅特定key的变化
11
- */
12
- subscribeKey?: string;
13
- }
14
- export interface UseStateActionReturn {
15
- /**
16
- * 全量状态Map - 包含所有stateKey的状态
17
- * 格式: { [stateKey]: stateData }
18
- */
19
- stateMap: Record<string, any>;
20
- /**
21
- * 当前最新的状态key
22
- */
23
- currentStateKey: string | null;
24
- /**
25
- * 设置状态Map,用于加载历史对话消息中的state数据
26
- */
27
- setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;
28
- /**
29
- * 获取当前完整状态的方法
30
- */
31
- getCurrentState: () => Record<string, any>;
32
- /**
33
- * 获取特定 key 状态的方法
34
- */
35
- getStateByKey: (key: string) => any;
36
- }
37
- export declare const useAgentState: <T = any>(options?: StateActionOptions) => UseStateActionReturn;
38
- export declare const AgentStateContext: import("react").Context<UseStateActionReturn>;
39
- export declare const useAgentStateDataByKey: (stateKey?: string) => any;
40
- export declare const useAgentStateContext: () => UseStateActionReturn;