@tdesign-react/chat 1.0.0-beta.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 (166) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/LICENSE +9 -0
  3. package/README.md +74 -0
  4. package/es/_util/_reactify.d.ts +7 -0
  5. package/es/_util/_reactify.js +381 -0
  6. package/es/_util/_reactify.js.map +1 -0
  7. package/es/_util/reactify.d.ts +7 -0
  8. package/es/_util/reactify.js +392 -0
  9. package/es/_util/reactify.js.map +1 -0
  10. package/es/_util/reactifyLazy.d.ts +16 -0
  11. package/es/_util/reactifyLazy.js +74 -0
  12. package/es/_util/reactifyLazy.js.map +1 -0
  13. package/es/_util/reactify_v2.d.ts +7 -0
  14. package/es/_util/reactify_v2.js +391 -0
  15. package/es/_util/reactify_v2.js.map +1 -0
  16. package/es/_util/useDynamicStyle.d.ts +4 -0
  17. package/es/_util/useDynamicStyle.js +40 -0
  18. package/es/_util/useDynamicStyle.js.map +1 -0
  19. package/es/chat-actionbar/index.d.ts +7 -0
  20. package/es/chat-actionbar/index.js +26 -0
  21. package/es/chat-actionbar/index.js.map +1 -0
  22. package/es/chat-attachments/index.d.ts +5 -0
  23. package/es/chat-attachments/index.js +26 -0
  24. package/es/chat-attachments/index.js.map +1 -0
  25. package/es/chat-filecard/index.d.ts +5 -0
  26. package/es/chat-filecard/index.js +26 -0
  27. package/es/chat-filecard/index.js.map +1 -0
  28. package/es/chat-loading/index.d.ts +5 -0
  29. package/es/chat-loading/index.js +26 -0
  30. package/es/chat-loading/index.js.map +1 -0
  31. package/es/chat-markdown/index.d.ts +6 -0
  32. package/es/chat-markdown/index.js +28 -0
  33. package/es/chat-markdown/index.js.map +1 -0
  34. package/es/chat-message/index.d.ts +5 -0
  35. package/es/chat-message/index.js +26 -0
  36. package/es/chat-message/index.js.map +1 -0
  37. package/es/chat-sender/index.d.ts +5 -0
  38. package/es/chat-sender/index.js +26 -0
  39. package/es/chat-sender/index.js.map +1 -0
  40. package/es/chat-thinking/index.d.ts +5 -0
  41. package/es/chat-thinking/index.js +27 -0
  42. package/es/chat-thinking/index.js.map +1 -0
  43. package/es/chatbot/components/provider/agent-state.d.ts +5 -0
  44. package/es/chatbot/components/provider/agent-state.js +28 -0
  45. package/es/chatbot/components/provider/agent-state.js.map +1 -0
  46. package/es/chatbot/components/toolcall/index.d.ts +3 -0
  47. package/es/chatbot/components/toolcall/index.js +19 -0
  48. package/es/chatbot/components/toolcall/index.js.map +1 -0
  49. package/es/chatbot/components/toolcall/registry.d.ts +35 -0
  50. package/es/chatbot/components/toolcall/registry.js +75 -0
  51. package/es/chatbot/components/toolcall/registry.js.map +1 -0
  52. package/es/chatbot/components/toolcall/render.d.ts +13 -0
  53. package/es/chatbot/components/toolcall/render.js +207 -0
  54. package/es/chatbot/components/toolcall/render.js.map +1 -0
  55. package/es/chatbot/components/toolcall/toolcallRenderer.d.ts +12 -0
  56. package/es/chatbot/components/toolcall/toolcallRenderer.js +132 -0
  57. package/es/chatbot/components/toolcall/toolcallRenderer.js.map +1 -0
  58. package/es/chatbot/components/toolcall/types.d.ts +57 -0
  59. package/es/chatbot/components/toolcall/types.js +15 -0
  60. package/es/chatbot/components/toolcall/types.js.map +1 -0
  61. package/es/chatbot/core/adapters/agui/event-mapper.d.ts +104 -0
  62. package/es/chatbot/core/adapters/agui/event-mapper.js +342 -0
  63. package/es/chatbot/core/adapters/agui/event-mapper.js.map +1 -0
  64. package/es/chatbot/core/adapters/agui/events.d.ts +1394 -0
  65. package/es/chatbot/core/adapters/agui/events.js +181 -0
  66. package/es/chatbot/core/adapters/agui/events.js.map +1 -0
  67. package/es/chatbot/core/adapters/agui/index.d.ts +75 -0
  68. package/es/chatbot/core/adapters/agui/index.js +165 -0
  69. package/es/chatbot/core/adapters/agui/index.js.map +1 -0
  70. package/es/chatbot/core/adapters/agui/state/StateManager.d.ts +60 -0
  71. package/es/chatbot/core/adapters/agui/state/StateManager.js +160 -0
  72. package/es/chatbot/core/adapters/agui/state/StateManager.js.map +1 -0
  73. package/es/chatbot/core/adapters/agui/state/types.d.ts +63 -0
  74. package/es/chatbot/core/adapters/agui/state/types.js +7 -0
  75. package/es/chatbot/core/adapters/agui/state/types.js.map +1 -0
  76. package/es/chatbot/core/adapters/agui/state-manager-fixed.d.ts +107 -0
  77. package/es/chatbot/core/adapters/agui/state-manager-fixed.js +189 -0
  78. package/es/chatbot/core/adapters/agui/state-manager-fixed.js.map +1 -0
  79. package/es/chatbot/core/adapters/agui/state-manager.d.ts +99 -0
  80. package/es/chatbot/core/adapters/agui/state-manager.js +168 -0
  81. package/es/chatbot/core/adapters/agui/state-manager.js.map +1 -0
  82. package/es/chatbot/core/adapters/agui/types.d.ts +760 -0
  83. package/es/chatbot/core/adapters/agui/types.js +89 -0
  84. package/es/chatbot/core/adapters/agui/types.js.map +1 -0
  85. package/es/chatbot/core/adapters/agui/utils.d.ts +188 -0
  86. package/es/chatbot/core/adapters/agui/utils.js +323 -0
  87. package/es/chatbot/core/adapters/agui/utils.js.map +1 -0
  88. package/es/chatbot/core/index.d.ts +131 -0
  89. package/es/chatbot/core/index.js +585 -0
  90. package/es/chatbot/core/index.js.map +1 -0
  91. package/es/chatbot/core/processor/index.d.ts +20 -0
  92. package/es/chatbot/core/processor/index.js +148 -0
  93. package/es/chatbot/core/processor/index.js.map +1 -0
  94. package/es/chatbot/core/server/batch-client.d.ts +20 -0
  95. package/es/chatbot/core/server/batch-client.js +114 -0
  96. package/es/chatbot/core/server/batch-client.js.map +1 -0
  97. package/es/chatbot/core/server/connection-manager.d.ts +39 -0
  98. package/es/chatbot/core/server/connection-manager.js +84 -0
  99. package/es/chatbot/core/server/connection-manager.js.map +1 -0
  100. package/es/chatbot/core/server/errors.d.ts +22 -0
  101. package/es/chatbot/core/server/errors.js +80 -0
  102. package/es/chatbot/core/server/errors.js.map +1 -0
  103. package/es/chatbot/core/server/index.d.ts +11 -0
  104. package/es/chatbot/core/server/index.js +26 -0
  105. package/es/chatbot/core/server/index.js.map +1 -0
  106. package/es/chatbot/core/server/llm-service.d.ts +44 -0
  107. package/es/chatbot/core/server/llm-service.js +198 -0
  108. package/es/chatbot/core/server/llm-service.js.map +1 -0
  109. package/es/chatbot/core/server/sse-client.d.ts +77 -0
  110. package/es/chatbot/core/server/sse-client.js +362 -0
  111. package/es/chatbot/core/server/sse-client.js.map +1 -0
  112. package/es/chatbot/core/server/sse-parser.d.ts +49 -0
  113. package/es/chatbot/core/server/sse-parser.js +116 -0
  114. package/es/chatbot/core/server/sse-parser.js.map +1 -0
  115. package/es/chatbot/core/server/types.d.ts +54 -0
  116. package/es/chatbot/core/server/types.js +28 -0
  117. package/es/chatbot/core/server/types.js.map +1 -0
  118. package/es/chatbot/core/store/message.d.ts +27 -0
  119. package/es/chatbot/core/store/message.js +263 -0
  120. package/es/chatbot/core/store/message.js.map +1 -0
  121. package/es/chatbot/core/store/model.d.ts +8 -0
  122. package/es/chatbot/core/store/model.js +65 -0
  123. package/es/chatbot/core/store/model.js.map +1 -0
  124. package/es/chatbot/core/store/reactiveState.d.ts +52 -0
  125. package/es/chatbot/core/store/reactiveState.js +1359 -0
  126. package/es/chatbot/core/store/reactiveState.js.map +1 -0
  127. package/es/chatbot/core/type.d.ts +238 -0
  128. package/es/chatbot/core/type.js +7 -0
  129. package/es/chatbot/core/type.js.map +1 -0
  130. package/es/chatbot/core/utils/eventEmitter.d.ts +10 -0
  131. package/es/chatbot/core/utils/eventEmitter.js +67 -0
  132. package/es/chatbot/core/utils/eventEmitter.js.map +1 -0
  133. package/es/chatbot/core/utils/index.d.ts +31 -0
  134. package/es/chatbot/core/utils/index.js +221 -0
  135. package/es/chatbot/core/utils/index.js.map +1 -0
  136. package/es/chatbot/core/utils/logger.d.ts +30 -0
  137. package/es/chatbot/core/utils/logger.js +87 -0
  138. package/es/chatbot/core/utils/logger.js.map +1 -0
  139. package/es/chatbot/hooks/useAgentState.d.ts +40 -0
  140. package/es/chatbot/hooks/useAgentState.js +76 -0
  141. package/es/chatbot/hooks/useAgentState.js.map +1 -0
  142. package/es/chatbot/hooks/useAgentStateAction.d.ts +9 -0
  143. package/es/chatbot/hooks/useAgentStateAction.js +101 -0
  144. package/es/chatbot/hooks/useAgentStateAction.js.map +1 -0
  145. package/es/chatbot/hooks/useAgentToolcall.d.ts +28 -0
  146. package/es/chatbot/hooks/useAgentToolcall.js +78 -0
  147. package/es/chatbot/hooks/useAgentToolcall.js.map +1 -0
  148. package/es/chatbot/hooks/useAgentToolcallAction.d.ts +6 -0
  149. package/es/chatbot/hooks/useAgentToolcallAction.js +29 -0
  150. package/es/chatbot/hooks/useAgentToolcallAction.js.map +1 -0
  151. package/es/chatbot/hooks/useChat.d.ts +11 -0
  152. package/es/chatbot/hooks/useChat.js +66 -0
  153. package/es/chatbot/hooks/useChat.js.map +1 -0
  154. package/es/chatbot/index.d.ts +17 -0
  155. package/es/chatbot/index.js +43 -0
  156. package/es/chatbot/index.js.map +1 -0
  157. package/es/chatbot/useChat.d.ts +10 -0
  158. package/es/chatbot/useChat.js +55 -0
  159. package/es/chatbot/useChat.js.map +1 -0
  160. package/es/index.d.ts +11 -0
  161. package/es/index.js +55 -0
  162. package/es/index.js.map +1 -0
  163. package/es/style/index.d.ts +1 -0
  164. package/es/style/index.js +8 -0
  165. package/es/style/index.js.map +1 -0
  166. package/package.json +67 -0
@@ -0,0 +1,28 @@
1
+ import type { AgentToolcallConfig, ToolcallComponentProps } from '../components/toolcall/types';
2
+ export interface UseAgentToolcallReturn {
3
+ register: (config: AgentToolcallConfig | AgentToolcallConfig[]) => void;
4
+ unregister: (names: string | string[]) => void;
5
+ isRegistered: (name: string) => boolean;
6
+ getRegistered: () => string[];
7
+ config: any;
8
+ }
9
+ /**
10
+ * 统一的、智能的 Agent Toolcall 适配器 Hook,
11
+ * 注册管理:负责工具配置的注册、取消注册、状态跟踪;生命周期管理:自动清理、防止内存泄漏
12
+ * 支持两种使用模式:
13
+ * 1. 自动注册模式:传入配置,自动注册和清理
14
+ * 2. 手动注册模式:不传配置或传入null,返回注册方法由业务控制
15
+ */
16
+ export declare function useAgentToolcall<TArgs extends object = any, TResult = any, TResponse = any>(config?: AgentToolcallConfig<TArgs, TResult, TResponse> | AgentToolcallConfig<TArgs, TResult, TResponse>[] | null | undefined): UseAgentToolcallReturn;
17
+ export interface ToolConfigWithStateOptions<TArgs extends object = any, TResult = any> {
18
+ name: string;
19
+ description: string;
20
+ parameters: Array<{
21
+ name: string;
22
+ type: string;
23
+ }>;
24
+ subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;
25
+ component: React.ComponentType<ToolcallComponentProps<TArgs, TResult> & {
26
+ agentState?: Record<string, any>;
27
+ }>;
28
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * tdesign v1.0.0-beta.1
3
+ * (c) 2025 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
8
+ import { useRef, useCallback, useEffect } from 'react';
9
+ import { agentToolcallRegistry } from '../components/toolcall/registry.js';
10
+ import '@babel/runtime/helpers/classCallCheck';
11
+ import '@babel/runtime/helpers/createClass';
12
+ import '@babel/runtime/helpers/defineProperty';
13
+
14
+ function useAgentToolcall(config) {
15
+ var registeredNamesRef = useRef(/* @__PURE__ */new Set());
16
+ var autoRegisteredNamesRef = useRef(/* @__PURE__ */new Set());
17
+ var configRef = useRef(config);
18
+ var register = useCallback(function (newConfig) {
19
+ if (!newConfig) {
20
+ console.warn("[useAgentToolcall] \u914D\u7F6E\u4E3A\u7A7A\uFF0C\u8DF3\u8FC7\u6CE8\u518C");
21
+ return;
22
+ }
23
+ var configs = Array.isArray(newConfig) ? newConfig : [newConfig];
24
+ configs.forEach(function (cfg) {
25
+ if (agentToolcallRegistry.get(cfg.name)) {
26
+ console.warn("[useAgentToolcall] \u914D\u7F6E\u540D\u79F0 \"".concat(cfg.name, "\" \u5DF2\u5B58\u5728\u4E8E\u6CE8\u518C\u8868\u4E2D\uFF0C\u5C06\u88AB\u8986\u76D6"));
27
+ }
28
+ agentToolcallRegistry.register(cfg);
29
+ registeredNamesRef.current.add(cfg.name);
30
+ });
31
+ }, []);
32
+ var unregister = useCallback(function (names) {
33
+ var nameArray = Array.isArray(names) ? names : [names];
34
+ nameArray.forEach(function (name) {
35
+ agentToolcallRegistry.unregister(name);
36
+ registeredNamesRef.current["delete"](name);
37
+ autoRegisteredNamesRef.current["delete"](name);
38
+ });
39
+ }, []);
40
+ var isRegistered = useCallback(function (name) {
41
+ return registeredNamesRef.current.has(name) || autoRegisteredNamesRef.current.has(name);
42
+ }, []);
43
+ var getRegistered = useCallback(function () {
44
+ return Array.from(/* @__PURE__ */new Set([].concat(_toConsumableArray(registeredNamesRef.current), _toConsumableArray(autoRegisteredNamesRef.current))));
45
+ }, []);
46
+ useEffect(function () {
47
+ if (!config) {
48
+ return;
49
+ }
50
+ var configs = Array.isArray(config) ? config : [config];
51
+ configs.forEach(function (cfg) {
52
+ if (agentToolcallRegistry.get(cfg.name)) {
53
+ console.warn("[useAgentToolcall] \u914D\u7F6E\u540D\u79F0 \"".concat(cfg.name, "\" \u5DF2\u5B58\u5728\u4E8E\u6CE8\u518C\u8868\u4E2D\uFF0C\u5C06\u88AB\u8986\u76D6"));
54
+ }
55
+ agentToolcallRegistry.register(cfg);
56
+ autoRegisteredNamesRef.current.add(cfg.name);
57
+ });
58
+ return function () {
59
+ configs.forEach(function (cfg) {
60
+ agentToolcallRegistry.unregister(cfg.name);
61
+ autoRegisteredNamesRef.current["delete"](cfg.name);
62
+ });
63
+ };
64
+ }, [config]);
65
+ useEffect(function () {
66
+ configRef.current = config;
67
+ }, [config]);
68
+ return {
69
+ register: register,
70
+ unregister: unregister,
71
+ isRegistered: isRegistered,
72
+ getRegistered: getRegistered,
73
+ config: configRef.current
74
+ };
75
+ }
76
+
77
+ export { useAgentToolcall };
78
+ //# sourceMappingURL=useAgentToolcall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentToolcall.js","sources":["../../../../pro-components/chat/chatbot/hooks/useAgentToolcall.ts"],"sourcesContent":["import { useCallback, useRef, useEffect } from 'react';\nimport type { AgentToolcallConfig, ToolcallComponentProps } from '../components/toolcall/types';\nimport { agentToolcallRegistry } from '../components/toolcall/registry';\n\nexport interface UseAgentToolcallReturn {\n register: (config: AgentToolcallConfig | AgentToolcallConfig[]) => void;\n unregister: (names: string | string[]) => void;\n isRegistered: (name: string) => boolean;\n getRegistered: () => string[];\n config: any;\n}\n\n/**\n * 统一的、智能的 Agent Toolcall 适配器 Hook,\n * 注册管理:负责工具配置的注册、取消注册、状态跟踪;生命周期管理:自动清理、防止内存泄漏\n * 支持两种使用模式:\n * 1. 自动注册模式:传入配置,自动注册和清理\n * 2. 手动注册模式:不传配置或传入null,返回注册方法由业务控制\n */\nexport function useAgentToolcall<TArgs extends object = any, TResult = any, TResponse = any>(\n config?:\n | AgentToolcallConfig<TArgs, TResult, TResponse>\n | AgentToolcallConfig<TArgs, TResult, TResponse>[]\n | null\n | undefined,\n): UseAgentToolcallReturn {\n const registeredNamesRef = useRef<Set<string>>(new Set());\n const autoRegisteredNamesRef = useRef<Set<string>>(new Set());\n const configRef = useRef(config);\n\n // 手动注册方法\n const register = useCallback((newConfig: AgentToolcallConfig | AgentToolcallConfig[]) => {\n if (!newConfig) {\n console.warn('[useAgentToolcall] 配置为空,跳过注册');\n return;\n }\n\n const configs = Array.isArray(newConfig) ? newConfig : [newConfig];\n\n configs.forEach((cfg) => {\n if (agentToolcallRegistry.get(cfg.name)) {\n console.warn(`[useAgentToolcall] 配置名称 \"${cfg.name}\" 已存在于注册表中,将被覆盖`);\n }\n\n agentToolcallRegistry.register(cfg);\n registeredNamesRef.current.add(cfg.name);\n });\n }, []);\n\n // 手动取消注册方法\n const unregister = useCallback((names: string | string[]) => {\n const nameArray = Array.isArray(names) ? names : [names];\n\n nameArray.forEach((name) => {\n agentToolcallRegistry.unregister(name);\n registeredNamesRef.current.delete(name);\n autoRegisteredNamesRef.current.delete(name);\n });\n }, []);\n\n // 检查是否已注册\n const isRegistered = useCallback(\n (name: string) => registeredNamesRef.current.has(name) || autoRegisteredNamesRef.current.has(name),\n [],\n );\n\n // 获取所有已注册的配置名称\n const getRegistered = useCallback(\n () => Array.from(new Set([...registeredNamesRef.current, ...autoRegisteredNamesRef.current])),\n [],\n );\n\n // 自动注册逻辑(当传入配置时)\n useEffect(() => {\n if (!config) {\n return;\n }\n\n const configs = Array.isArray(config) ? config : [config];\n configs.forEach((cfg) => {\n if (agentToolcallRegistry.get(cfg.name)) {\n console.warn(`[useAgentToolcall] 配置名称 \"${cfg.name}\" 已存在于注册表中,将被覆盖`);\n }\n\n agentToolcallRegistry.register(cfg);\n autoRegisteredNamesRef.current.add(cfg.name);\n });\n\n // 清理函数:取消注册自动注册的配置\n return () => {\n configs.forEach((cfg) => {\n agentToolcallRegistry.unregister(cfg.name);\n autoRegisteredNamesRef.current.delete(cfg.name);\n });\n };\n }, [config]);\n\n // 更新配置引用\n useEffect(() => {\n configRef.current = config;\n }, [config]);\n\n return {\n register,\n unregister,\n isRegistered,\n getRegistered,\n config: configRef.current,\n };\n}\n\n// 创建带状态感知的工具配置(带状态变化事件),状态注入,自动为组件注入 agentState\nexport interface ToolConfigWithStateOptions<TArgs extends object = any, TResult = any> {\n name: string;\n description: string;\n parameters: Array<{ name: string; type: string }>;\n subscribeKey?: (props: ToolcallComponentProps<TArgs, TResult>) => string | undefined;\n component: React.ComponentType<ToolcallComponentProps<TArgs, TResult> & { agentState?: Record<string, any> }>;\n}\n"],"names":["useAgentToolcall","config","registeredNamesRef","useRef","Set","autoRegisteredNamesRef","configRef","register","useCallback","newConfig","console","warn","configs","Array","isArray","forEach","cfg","agentToolcallRegistry","get","name","concat","current","add","unregister","names","nameArray","isRegistered","has","getRegistered","from","_toConsumableArray","useEffect"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AgentToolcallConfig } from '../components/toolcall/types';
2
+ /**
3
+ * 统一的、智能的 Agent Toolcall 适配器 Hook
4
+ * 用于注册 Agent Toolcall 配置到全局注册表
5
+ */
6
+ export declare function useAgentToolcall<TArgs extends object = any, TResult = any, TResponse = any>(config: AgentToolcallConfig<TArgs, TResult, TResponse>): AgentToolcallConfig<TArgs, TResult, TResponse>;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * tdesign v1.0.1-beta.18
3
+ * (c) 2025 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import { useRef, useEffect } from 'react';
8
+ import { agentToolcallRegistry } from '../components/toolcall/registry.js';
9
+ import '@babel/runtime/helpers/classCallCheck';
10
+ import '@babel/runtime/helpers/createClass';
11
+ import '@babel/runtime/helpers/defineProperty';
12
+
13
+ function useAgentToolcall(config) {
14
+ var configRef = useRef(config);
15
+ useEffect(function () {
16
+ agentToolcallRegistry.register(config);
17
+ return function () {
18
+ agentToolcallRegistry.unregister(config.name);
19
+ };
20
+ }, [config.name]);
21
+ useEffect(function () {
22
+ configRef.current = config;
23
+ agentToolcallRegistry.register(config);
24
+ }, [config]);
25
+ return configRef.current;
26
+ }
27
+
28
+ export { useAgentToolcall };
29
+ //# sourceMappingURL=useAgentToolcallAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentToolcallAction.js","sources":["../../../../pro-components/chat/chatbot/hooks/useAgentToolcallAction.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport type { AgentToolcallConfig } from '../components/toolcall/types';\nimport { agentToolcallRegistry } from '../components/toolcall/registry';\n\n/**\n * 统一的、智能的 Agent Toolcall 适配器 Hook\n * 用于注册 Agent Toolcall 配置到全局注册表\n */\nexport function useAgentToolcall<TArgs extends object = any, TResult = any, TResponse = any>(\n config: AgentToolcallConfig<TArgs, TResult, TResponse>,\n) {\n const configRef = useRef(config);\n\n useEffect(() => {\n // 注册 Agent Toolcall\n agentToolcallRegistry.register(config);\n\n // 清理函数:组件卸载时取消注册\n return () => {\n agentToolcallRegistry.unregister(config.name);\n };\n }, [config.name]);\n\n // 更新配置引用\n useEffect(() => {\n configRef.current = config;\n agentToolcallRegistry.register(config);\n }, [config]);\n\n return configRef.current;\n}\n"],"names":["useAgentToolcall","config","configRef","useRef","useEffect","agentToolcallRegistry","register","unregister","name","current"],"mappings":";;;;;;;;;;;;AAQO,SAASA,iBACdC,MACA,EAAA;AACM,EAAA,IAAAC,SAAA,GAAYC,OAAOF,MAAM,CAAA,CAAA;AAE/BG,EAAAA,SAAA,CAAU,YAAM;AAEdC,IAAAA,qBAAA,CAAsBC,SAASL,MAAM,CAAA,CAAA;AAGrC,IAAA,OAAO,YAAM;AACWI,MAAAA,qBAAA,CAAAE,UAAA,CAAWN,OAAOO,IAAI,CAAA,CAAA;KAC9C,CAAA;AACF,GAAG,EAAA,CAACP,MAAO,CAAAO,IAAI,CAAC,CAAA,CAAA;AAGhBJ,EAAAA,SAAA,CAAU,YAAM;IACdF,SAAA,CAAUO,OAAU,GAAAR,MAAA,CAAA;AACpBI,IAAAA,qBAAA,CAAsBC,SAASL,MAAM,CAAA,CAAA;AACvC,GAAA,EAAG,CAACA,MAAM,CAAC,CAAA,CAAA;EAEX,OAAOC,SAAU,CAAAO,OAAA,CAAA;AACnB;;;;"}
@@ -0,0 +1,11 @@
1
+ import ChatEngine from 'tdesign-web-components/lib/chat-engine';
2
+ import type { ChatMessagesData, ChatServiceConfig, ChatStatus } from 'tdesign-web-components/lib/chat-engine';
3
+ export type IUseChat = {
4
+ defaultMessages: ChatMessagesData[];
5
+ chatServiceConfig: ChatServiceConfig;
6
+ };
7
+ export declare const useChat: ({ defaultMessages: initialMessages, chatServiceConfig }: IUseChat) => {
8
+ chatEngine: ChatEngine;
9
+ messages: ChatMessagesData[];
10
+ status: ChatStatus;
11
+ };
@@ -0,0 +1,66 @@
1
+ /**
2
+ * tdesign v1.0.0-beta.1
3
+ * (c) 2025 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import { useState, useRef, useEffect } from 'react';
9
+ import ChatEngine__default from 'tdesign-web-components/lib/chat-engine';
10
+
11
+ var useChat = function useChat(_ref) {
12
+ var initialMessages = _ref.defaultMessages,
13
+ chatServiceConfig = _ref.chatServiceConfig;
14
+ var _useState = useState([]),
15
+ _useState2 = _slicedToArray(_useState, 2),
16
+ messages = _useState2[0],
17
+ setMessage = _useState2[1];
18
+ var _useState3 = useState("idle"),
19
+ _useState4 = _slicedToArray(_useState3, 2),
20
+ status = _useState4[0],
21
+ setStatus = _useState4[1];
22
+ var chatEngineRef = useRef(new ChatEngine__default());
23
+ var msgSubscribeRef = useRef(null);
24
+ var prevInitialMessagesRef = useRef([]);
25
+ var chatEngine = chatEngineRef.current;
26
+ var syncState = function syncState(state) {
27
+ var _state$at;
28
+ setMessage(state);
29
+ setStatus(((_state$at = state.at(-1)) === null || _state$at === void 0 ? void 0 : _state$at.status) || "idle");
30
+ };
31
+ var subscribeToChat = function subscribeToChat() {
32
+ var _msgSubscribeRef$curr;
33
+ (_msgSubscribeRef$curr = msgSubscribeRef.current) === null || _msgSubscribeRef$curr === void 0 || _msgSubscribeRef$curr.call(msgSubscribeRef);
34
+ msgSubscribeRef.current = chatEngine.messageStore.subscribe(function (state) {
35
+ syncState(state.messages);
36
+ });
37
+ };
38
+ var initChat = function initChat() {
39
+ chatEngine.init(chatServiceConfig, initialMessages);
40
+ syncState(initialMessages);
41
+ subscribeToChat();
42
+ };
43
+ useEffect(function () {
44
+ initChat();
45
+ return function () {
46
+ var _msgSubscribeRef$curr2;
47
+ return (_msgSubscribeRef$curr2 = msgSubscribeRef.current) === null || _msgSubscribeRef$curr2 === void 0 ? void 0 : _msgSubscribeRef$curr2.call(msgSubscribeRef);
48
+ };
49
+ }, []);
50
+ useEffect(function () {
51
+ var hasChanged = JSON.stringify(prevInitialMessagesRef.current) !== JSON.stringify(initialMessages);
52
+ if (hasChanged && initialMessages && initialMessages.length > 0) {
53
+ prevInitialMessagesRef.current = initialMessages;
54
+ chatEngine.setMessages(initialMessages, "replace");
55
+ syncState(initialMessages);
56
+ }
57
+ }, [initialMessages, chatEngine]);
58
+ return {
59
+ chatEngine: chatEngine,
60
+ messages: messages,
61
+ status: status
62
+ };
63
+ };
64
+
65
+ export { useChat };
66
+ //# sourceMappingURL=useChat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChat.js","sources":["../../../../pro-components/chat/chatbot/hooks/useChat.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport ChatEngine from 'tdesign-web-components/lib/chat-engine';\nimport type { ChatMessagesData, ChatServiceConfig, ChatStatus } from 'tdesign-web-components/lib/chat-engine';\n\nexport type IUseChat = {\n defaultMessages: ChatMessagesData[];\n chatServiceConfig: ChatServiceConfig;\n};\n\nexport const useChat = ({ defaultMessages: initialMessages, chatServiceConfig }: IUseChat) => {\n const [messages, setMessage] = useState<ChatMessagesData[]>([]);\n const [status, setStatus] = useState<ChatStatus>('idle');\n const chatEngineRef = useRef<ChatEngine>(new ChatEngine());\n const msgSubscribeRef = useRef<null | (() => void)>(null);\n const prevInitialMessagesRef = useRef<ChatMessagesData[]>([]);\n\n const chatEngine = chatEngineRef.current;\n\n const syncState = (state: ChatMessagesData[]) => {\n setMessage(state);\n setStatus(state.at(-1)?.status || 'idle');\n };\n\n const subscribeToChat = () => {\n // 清理之前的订阅\n msgSubscribeRef.current?.();\n\n msgSubscribeRef.current = chatEngine.messageStore.subscribe((state) => {\n syncState(state.messages);\n });\n };\n\n const initChat = () => {\n // @ts-ignore\n chatEngine.init(chatServiceConfig, initialMessages);\n // @ts-ignore\n syncState(initialMessages);\n subscribeToChat();\n };\n\n // 初始化聊天引擎\n useEffect(() => {\n initChat();\n return () => msgSubscribeRef.current?.();\n }, []);\n\n // 监听 defaultMessages 变化\n useEffect(() => {\n // 检查 initialMessages 是否真的发生了变化\n const hasChanged = JSON.stringify(prevInitialMessagesRef.current) !== JSON.stringify(initialMessages);\n\n if (hasChanged && initialMessages && initialMessages.length > 0) {\n // 更新引用\n prevInitialMessagesRef.current = initialMessages;\n\n // 重新初始化聊天引擎或更新消息\n chatEngine.setMessages(initialMessages, 'replace');\n\n // 同步状态\n syncState(initialMessages);\n }\n }, [initialMessages, chatEngine]);\n\n return {\n chatEngine,\n messages,\n status,\n };\n};\n"],"names":["useChat","initialMessages","_ref","defaultMessages","chatServiceConfig","_useState","useState","_useState2","_slicedToArray","messages","setMessage","_useState3","_useState4","status","setStatus","chatEngineRef","useRef","ChatEngine","msgSubscribeRef","prevInitialMessagesRef","chatEngine","current","syncState","state","_state$at","at","subscribeToChat","_msgSubscribeRef$curr","call","messageStore","subscribe","initChat","init","useEffect","_msgSubscribeRef$curr2","hasChanged","JSON","stringify","length","setMessages"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import 'tdesign-web-components/lib/chatbot';
2
+ import 'tdesign-web-components/lib/chat-message/content/reasoning-content';
3
+ import 'tdesign-web-components/lib/chat-message/content/search-content';
4
+ import 'tdesign-web-components/lib/chat-message/content/suggestion-content';
5
+ import type { TdChatbotApi, TdChatListApi, TdChatListProps, TdChatProps, TdChatSearchContentProps, TdChatSuggestionContentProps } from 'tdesign-web-components';
6
+ import ChatEngine from 'tdesign-web-components/lib/chat-engine';
7
+ declare const ChatBot: React.ForwardRefExoticComponent<Omit<TdChatProps & Partial<TdChatbotApi>, 'ref'> & React.RefAttributes<HTMLElement | undefined>>;
8
+ declare const ChatSearchContent: React.ForwardRefExoticComponent<Omit<TdChatSearchContentProps, 'ref'> & React.RefAttributes<HTMLElement | undefined>>;
9
+ declare const ChatSuggestionContent: React.ForwardRefExoticComponent<Omit<TdChatSuggestionContentProps, 'ref'> & React.RefAttributes<HTMLElement | undefined>>;
10
+ declare const ChatList: React.ForwardRefExoticComponent<Omit<TdChatListProps & Partial<TdChatListApi>, 'ref'> & React.RefAttributes<HTMLElement | undefined>>;
11
+ export { ChatBot, ChatSearchContent, ChatSuggestionContent, ChatList, ChatEngine };
12
+ export type * from 'tdesign-web-components/lib/chatbot/type';
13
+ export * from './hooks/useChat';
14
+ export * from './hooks/useAgentToolcall';
15
+ export * from './hooks/useAgentState';
16
+ export * from './components/toolcall';
17
+ export * from './components/provider/agent-state';
@@ -0,0 +1,43 @@
1
+ /**
2
+ * tdesign v1.0.0-beta.1
3
+ * (c) 2025 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import 'tdesign-web-components/lib/chatbot';
8
+ import 'tdesign-web-components/lib/chat-message/content/reasoning-content';
9
+ import 'tdesign-web-components/lib/chat-message/content/search-content';
10
+ import 'tdesign-web-components/lib/chat-message/content/suggestion-content';
11
+ import reactify from '../_util/reactify.js';
12
+ export { default as ChatEngine } from 'tdesign-web-components/lib/chat-engine';
13
+ export { useChat } from './hooks/useChat.js';
14
+ export { useAgentToolcall } from './hooks/useAgentToolcall.js';
15
+ export { AgentStateContext, useAgentState, useAgentStateContext, useAgentStateDataByKey } from './hooks/useAgentState.js';
16
+ import './components/toolcall/index.js';
17
+ export { AgentStateProvider } from './components/provider/agent-state.js';
18
+ export { isNonInteractive, isNonInteractiveConfig } from './components/toolcall/types.js';
19
+ export { agentToolcallRegistry } from './components/toolcall/registry.js';
20
+ export { ToolCallRenderer, withAgentStateToolcall, withAgentStateToolcall1 } from './components/toolcall/render.js';
21
+ import '@babel/runtime/helpers/objectWithoutProperties';
22
+ import '@babel/runtime/helpers/toConsumableArray';
23
+ import '@babel/runtime/helpers/classCallCheck';
24
+ import '@babel/runtime/helpers/createClass';
25
+ import '@babel/runtime/helpers/possibleConstructorReturn';
26
+ import '@babel/runtime/helpers/getPrototypeOf';
27
+ import '@babel/runtime/helpers/inherits';
28
+ import '@babel/runtime/helpers/defineProperty';
29
+ import '@babel/runtime/helpers/slicedToArray';
30
+ import '@babel/runtime/helpers/typeof';
31
+ import 'react';
32
+ import 'react-dom';
33
+ import 'react-dom/client';
34
+ import '@babel/runtime/helpers/asyncToGenerator';
35
+ import '@babel/runtime/regenerator';
36
+
37
+ var ChatBot = reactify("t-chatbot");
38
+ var ChatSearchContent = reactify("t-chat-search-content");
39
+ var ChatSuggestionContent = reactify("t-chat-suggestion-content");
40
+ var ChatList = reactify("t-chat-list");
41
+
42
+ export { ChatBot, ChatList, ChatSearchContent, ChatSuggestionContent };
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../pro-components/chat/chatbot/index.ts"],"sourcesContent":["import 'tdesign-web-components/lib/chatbot';\nimport 'tdesign-web-components/lib/chat-message/content/reasoning-content';\nimport 'tdesign-web-components/lib/chat-message/content/search-content';\nimport 'tdesign-web-components/lib/chat-message/content/suggestion-content';\nimport type {\n TdChatbotApi,\n TdChatListApi,\n TdChatListProps,\n TdChatProps,\n TdChatSearchContentProps,\n TdChatSuggestionContentProps,\n} from 'tdesign-web-components';\nimport reactify from '../_util/reactify';\nimport ChatEngine from 'tdesign-web-components/lib/chat-engine';\n\nconst ChatBot: React.ForwardRefExoticComponent<\n Omit<TdChatProps & Partial<TdChatbotApi>, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatProps>('t-chatbot');\n\nconst ChatSearchContent: React.ForwardRefExoticComponent<\n Omit<TdChatSearchContentProps, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatSearchContentProps>('t-chat-search-content');\n\nconst ChatSuggestionContent: React.ForwardRefExoticComponent<\n Omit<TdChatSuggestionContentProps, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatSuggestionContentProps>('t-chat-suggestion-content');\n\nconst ChatList: React.ForwardRefExoticComponent<\n Omit<TdChatListProps & Partial<TdChatListApi>, 'ref'> & React.RefAttributes<HTMLElement | undefined>\n> = reactify<TdChatListProps>('t-chat-list');\n\n// 导出组件\nexport { ChatBot, ChatSearchContent, ChatSuggestionContent, ChatList, ChatEngine };\n\n// 导出类型和工具\nexport type * from 'tdesign-web-components/lib/chatbot/type';\nexport * from './hooks/useChat';\nexport * from './hooks/useAgentToolcall';\nexport * from './hooks/useAgentState';\nexport * from './components/toolcall';\nexport * from './components/provider/agent-state';\n"],"names":["ChatBot","reactify","ChatSearchContent","ChatSuggestionContent","ChatList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAMA,OAAA,GAEFC,SAAsB,WAAW,EAAA;AAErC,IAAMC,iBAAA,GAEFD,SAAmC,uBAAuB,EAAA;AAE9D,IAAME,qBAAA,GAEFF,SAAuC,2BAA2B,EAAA;AAEtE,IAAMG,QAAA,GAEFH,SAA0B,aAAa;;;;"}
@@ -0,0 +1,10 @@
1
+ import type { ChatMessagesData, ChatStatus } from 'tdesign-web-components/lib/chatbot/core/type';
2
+ import { TdChatProps } from 'tdesign-web-components';
3
+ import ChatEngine from 'tdesign-web-components/lib/chatbot/core';
4
+ export type IUseChat = Pick<TdChatProps, 'defaultMessages' | 'chatServiceConfig'>;
5
+ export type IChatEngine = typeof ChatEngine;
6
+ export declare const useChat: ({ defaultMessages: initialMessages, chatServiceConfig }: IUseChat) => {
7
+ chatEngine: ChatEngine;
8
+ messages: ChatMessagesData[];
9
+ status: ChatStatus;
10
+ };
@@ -0,0 +1,55 @@
1
+ /**
2
+ * tdesign v1.0.1-beta.14
3
+ * (c) 2025 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import { useState, useRef, useEffect } from 'react';
9
+ import ChatEngine from 'tdesign-web-components/lib/chatbot/core';
10
+
11
+ var useChat = function useChat(_ref) {
12
+ var initialMessages = _ref.defaultMessages,
13
+ chatServiceConfig = _ref.chatServiceConfig;
14
+ var _useState = useState([]),
15
+ _useState2 = _slicedToArray(_useState, 2),
16
+ messages = _useState2[0],
17
+ setMessage = _useState2[1];
18
+ var _useState3 = useState("idle"),
19
+ _useState4 = _slicedToArray(_useState3, 2),
20
+ status = _useState4[0],
21
+ setStatus = _useState4[1];
22
+ var chatEngineRef = useRef(new ChatEngine());
23
+ var msgSubscribeRef = useRef(null);
24
+ var chatEngine = chatEngineRef.current;
25
+ var syncState = function syncState(state) {
26
+ var _state$at;
27
+ setMessage(state);
28
+ setStatus(((_state$at = state.at(-1)) === null || _state$at === void 0 ? void 0 : _state$at.status) || "idle");
29
+ };
30
+ var subscribeToChat = function subscribeToChat() {
31
+ msgSubscribeRef.current = chatEngine.messageStore.subscribe(function (state) {
32
+ syncState(state.messages);
33
+ });
34
+ };
35
+ var initChat = function initChat() {
36
+ chatEngine.init(chatServiceConfig, initialMessages);
37
+ syncState(initialMessages);
38
+ subscribeToChat();
39
+ };
40
+ useEffect(function () {
41
+ initChat();
42
+ return function () {
43
+ var _msgSubscribeRef$curr;
44
+ return (_msgSubscribeRef$curr = msgSubscribeRef.current) === null || _msgSubscribeRef$curr === void 0 ? void 0 : _msgSubscribeRef$curr.call(msgSubscribeRef);
45
+ };
46
+ }, []);
47
+ return {
48
+ chatEngine: chatEngine,
49
+ messages: messages,
50
+ status: status
51
+ };
52
+ };
53
+
54
+ export { useChat };
55
+ //# sourceMappingURL=useChat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChat.js","sources":["../../../pro-components/chat/chatbot/useChat.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport type { ChatMessagesData, ChatStatus } from 'tdesign-web-components/lib/chatbot/core/type';\nimport { TdChatProps } from 'tdesign-web-components';\nimport ChatEngine from 'tdesign-web-components/lib/chatbot/core';\n\n// @ts-ignore\nexport type IUseChat = Pick<TdChatProps, 'defaultMessages' | 'chatServiceConfig'>;\nexport type IChatEngine = typeof ChatEngine;\n\nexport const useChat = ({ defaultMessages: initialMessages, chatServiceConfig }: IUseChat) => {\n const [messages, setMessage] = useState<ChatMessagesData[]>([]);\n const [status, setStatus] = useState<ChatStatus>('idle');\n const chatEngineRef = useRef<ChatEngine>(new ChatEngine());\n const msgSubscribeRef = useRef<null | (() => void)>(null);\n\n const chatEngine = chatEngineRef.current;\n\n const syncState = (state: ChatMessagesData[]) => {\n setMessage(state);\n setStatus(state.at(-1)?.status || 'idle');\n };\n\n const subscribeToChat = () => {\n msgSubscribeRef.current = chatEngine.messageStore.subscribe((state) => {\n syncState(state.messages);\n });\n };\n\n const initChat = () => {\n // @ts-ignore\n chatEngine.init(chatServiceConfig, initialMessages);\n // @ts-ignore\n syncState(initialMessages);\n subscribeToChat();\n };\n\n useEffect(() => {\n initChat();\n return () => msgSubscribeRef.current?.();\n }, []);\n\n return {\n chatEngine,\n messages,\n status,\n };\n};\n"],"names":["useChat","initialMessages","_ref","defaultMessages","chatServiceConfig","_useState","useState","_useState2","_slicedToArray","messages","setMessage","_useState3","_useState4","status","setStatus","chatEngineRef","useRef","ChatEngine","msgSubscribeRef","chatEngine","current","syncState","state","_state$at","at","subscribeToChat","messageStore","subscribe","initChat","init","useEffect","_msgSubscribeRef$curr","call"],"mappings":";;;;;;;;;;IASaA,UAAU,SAAVA,cAAiF;AAAA,EAAA,IAAnDC,eAAA,GAAAC,IAAA,CAAjBC,eAAiB;IAAiBC,yBAAAA;AAC1D,EAAA,IAAAC,SAAA,GAA+BC,QAAA,CAA6B,EAAE,CAAA;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAvDI,IAAAA,QAAU,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAAG,IAAAA,UAAU,GAAAH,UAAA,CAAA,CAAA,CAAA,CAAA;AAC3B,EAAA,IAAAI,UAAA,GAA4BL,SAAqB,MAAM,CAAA;IAAAM,UAAA,GAAAJ,cAAA,CAAAG,UAAA,EAAA,CAAA,CAAA;AAAhDE,IAAAA,MAAA,GAAAD,UAAA,CAAA,CAAA,CAAA;AAAQE,IAAAA,SAAS,GAAAF,UAAA,CAAA,CAAA,CAAA,CAAA;EACxB,IAAMG,aAAgB,GAAAC,MAAA,CAAmB,IAAIC,UAAA,EAAY,CAAA,CAAA;AACnD,EAAA,IAAAC,eAAA,GAAkBF,OAA4B,IAAI,CAAA,CAAA;AAExD,EAAA,IAAMG,aAAaJ,aAAc,CAAAK,OAAA,CAAA;AAE3B,EAAA,IAAAC,SAAA,GAAY,SAAZA,SAAAA,CAAaC,KAA8B,EAAA;AAAA,IAAA,IAAAC,SAAA,CAAA;IAC/Cb,UAAA,CAAWY,KAAK,CAAA,CAAA;AAChBR,IAAAA,SAAA,CAAU,CAAAS,CAAAA,SAAA,GAAAD,KAAM,CAAAE,EAAA,CAAG,CAAE,CAAA,CAAA,MAAA,IAAA,IAAAD,SAAA,KAAXA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAA,CAAcV,WAAU,MAAM,CAAA,CAAA;GAC1C,CAAA;AAEA,EAAA,IAAMY,kBAAkB,SAAlBA,kBAAwB;IAC5BP,eAAA,CAAgBE,OAAU,GAAAD,UAAA,CAAWO,YAAa,CAAAC,SAAA,CAAU,UAACL,KAAU,EAAA;AACrED,MAAAA,SAAA,CAAUC,MAAMb,QAAQ,CAAA,CAAA;AAC1B,KAAC,CAAA,CAAA;GACH,CAAA;AAEA,EAAA,IAAMmB,WAAW,SAAXA,WAAiB;AAEVT,IAAAA,UAAA,CAAAU,IAAA,CAAKzB,mBAAmBH,eAAe,CAAA,CAAA;IAElDoB,SAAA,CAAUpB,eAAe,CAAA,CAAA;AACTwB,IAAAA,eAAA,EAAA,CAAA;GAClB,CAAA;AAEAK,EAAAA,SAAA,CAAU,YAAM;AACLF,IAAAA,QAAA,EAAA,CAAA;IACF,OAAA,YAAA;AAAA,MAAA,IAAAG,qBAAA,CAAA;AAAA,MAAA,OAAA,CAAAA,qBAAA,GAAMb,gBAAgBE,OAAU,MAAA,IAAA,IAAAW,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAA1BA,qBAAA,CAAAC,IAAA,CAAAd,eAA0B,CAAA,CAAA;AAAA,KAAA,CAAA;GACzC,EAAG,EAAE,CAAA,CAAA;EAEE,OAAA;AACLC,IAAAA,UAAA,EAAAA,UAAA;AACAV,IAAAA,QAAA,EAAAA,QAAA;AACAI,IAAAA,MAAA,EAAAA,MAAAA;GACF,CAAA;AACF;;;;"}
package/es/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export * from './chatbot';
2
+ export * from './chat-actionbar';
3
+ export * from './chat-attachments';
4
+ export * from './chat-filecard';
5
+ export * from './chat-loading';
6
+ export * from './chat-markdown';
7
+ export * from './chat-message';
8
+ export * from './chat-sender';
9
+ export * from './chat-thinking';
10
+ export * from './chat-markdown';
11
+ export * from 'tdesign-web-components/lib/chat-engine';
package/es/index.js ADDED
@@ -0,0 +1,55 @@
1
+ /**
2
+ * tdesign v1.0.0-beta.1
3
+ * (c) 2025 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ export { ChatBot, ChatList, ChatSearchContent, ChatSuggestionContent } from './chatbot/index.js';
8
+ export { ChatActionBar } from './chat-actionbar/index.js';
9
+ export { Attachments } from './chat-attachments/index.js';
10
+ export { Filecard } from './chat-filecard/index.js';
11
+ export { ChatLoading } from './chat-loading/index.js';
12
+ export { ChatMarkdown, MarkdownEngine } from './chat-markdown/index.js';
13
+ export { ChatMessage } from './chat-message/index.js';
14
+ export { ChatSender } from './chat-sender/index.js';
15
+ export { ChatThinking } from './chat-thinking/index.js';
16
+ export * from 'tdesign-web-components/lib/chat-engine';
17
+ export { default as ChatEngine } from 'tdesign-web-components/lib/chat-engine';
18
+ export { useChat } from './chatbot/hooks/useChat.js';
19
+ export { useAgentToolcall } from './chatbot/hooks/useAgentToolcall.js';
20
+ export { AgentStateContext, useAgentState, useAgentStateContext, useAgentStateDataByKey } from './chatbot/hooks/useAgentState.js';
21
+ export { isNonInteractive, isNonInteractiveConfig } from './chatbot/components/toolcall/types.js';
22
+ export { agentToolcallRegistry } from './chatbot/components/toolcall/registry.js';
23
+ export { ToolCallRenderer, withAgentStateToolcall, withAgentStateToolcall1 } from './chatbot/components/toolcall/render.js';
24
+ export { AgentStateProvider } from './chatbot/components/provider/agent-state.js';
25
+ import 'tdesign-web-components/lib/chatbot';
26
+ import 'tdesign-web-components/lib/chat-message/content/reasoning-content';
27
+ import 'tdesign-web-components/lib/chat-message/content/search-content';
28
+ import 'tdesign-web-components/lib/chat-message/content/suggestion-content';
29
+ import './_util/reactify.js';
30
+ import '@babel/runtime/helpers/objectWithoutProperties';
31
+ import '@babel/runtime/helpers/toConsumableArray';
32
+ import '@babel/runtime/helpers/classCallCheck';
33
+ import '@babel/runtime/helpers/createClass';
34
+ import '@babel/runtime/helpers/possibleConstructorReturn';
35
+ import '@babel/runtime/helpers/getPrototypeOf';
36
+ import '@babel/runtime/helpers/inherits';
37
+ import '@babel/runtime/helpers/defineProperty';
38
+ import '@babel/runtime/helpers/slicedToArray';
39
+ import '@babel/runtime/helpers/typeof';
40
+ import 'react';
41
+ import 'react-dom';
42
+ import 'react-dom/client';
43
+ import './chatbot/components/toolcall/index.js';
44
+ import 'tdesign-web-components/lib/chat-action';
45
+ import 'tdesign-web-components/lib/attachments';
46
+ import 'tdesign-web-components/lib/filecard';
47
+ import 'tdesign-web-components/lib/chat-loading';
48
+ import 'tdesign-web-components';
49
+ import 'tdesign-web-components/lib/chat-message/content/markdown-content';
50
+ import 'tdesign-web-components/lib/chat-message';
51
+ import 'tdesign-web-components/lib/chat-sender';
52
+ import 'tdesign-web-components/lib/chat-message/content/thinking-content';
53
+ import '@babel/runtime/helpers/asyncToGenerator';
54
+ import '@babel/runtime/regenerator';
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ /**
2
+ * tdesign v1.0.0-beta.1
3
+ * (c) 2025 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import 'tdesign-web-components/lib/style/index.css';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@tdesign-react/chat",
3
+ "version": "1.0.0-beta.1",
4
+ "title": "@tdesign-react/chat",
5
+ "description": "TDesign Pro Component for AIGC",
6
+ "module": "es/index.js",
7
+ "typings": "es/index.d.ts",
8
+ "files": [
9
+ "es",
10
+ "LICENSE",
11
+ "README.md",
12
+ "CHANGELOG.md"
13
+ ],
14
+ "sideEffects": [
15
+ "site/*",
16
+ "es/**/style/**"
17
+ ],
18
+ "publishConfig": {
19
+ "access": "public",
20
+ "registry": "https://registry.npmjs.org/"
21
+ },
22
+ "scripts": {
23
+ "start": "pnpm dev",
24
+ "dev": "vite",
25
+ "prebuild": "rimraf es/*",
26
+ "build": "cross-env NODE_ENV=production rollup -c script/rollup.config.js && npm run build:tsc",
27
+ "build:tsc": "run-p build:tsc-*",
28
+ "build:tsc-es": "tsc --emitDeclarationOnly -d -p ./tsconfig.build.json --outDir es/",
29
+ "build:jsx-demo": "npm run generate:jsx-demo && npm run format:jsx-demo"
30
+ },
31
+ "config": {
32
+ "commitizen": {
33
+ "path": "./node_modules/cz-conventional-changelog"
34
+ }
35
+ },
36
+ "lint-staged": {
37
+ "src/**/*.{ts,tsx}": [
38
+ "prettier --write",
39
+ "npm run lint:fix"
40
+ ]
41
+ },
42
+ "keywords": [
43
+ "tdesign",
44
+ "react"
45
+ ],
46
+ "author": "tdesign",
47
+ "license": "MIT",
48
+ "peerDependencies": {
49
+ "react": ">=16.13.1",
50
+ "react-dom": ">=16.13.1"
51
+ },
52
+ "dependencies": {
53
+ "@babel/runtime": "~7.26.7",
54
+ "tdesign-web-components": "1.2.0-alpha.1",
55
+ "classnames": "~2.5.1",
56
+ "lodash-es": "^4.17.21",
57
+ "zod": "^3.24.2",
58
+ "cherry-markdown": "^0.10.0"
59
+ },
60
+ "devDependencies": {
61
+ "cors": "^2.8.5",
62
+ "tdesign-icons-react": "0.5.0",
63
+ "tdesign-react": "^1.12.1",
64
+ "tvision-charts-react": "^3.3.12",
65
+ "express": "^4.17.3"
66
+ }
67
+ }