@tdesign-react/chat 1.0.0-beta.4 → 1.0.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 (120) hide show
  1. package/es/_util/reactify.js +1 -1
  2. package/es/_util/useDynamicStyle.js +1 -1
  3. package/es/chat-actionbar/index.js +1 -1
  4. package/es/chat-attachments/index.js +1 -1
  5. package/es/{chatbot → chat-engine}/components/provider/agent-state.js +1 -1
  6. package/es/chat-engine/components/provider/agent-state.js.map +1 -0
  7. package/es/{chatbot → chat-engine}/components/toolcall/index.js +1 -1
  8. package/es/{chatbot → chat-engine}/components/toolcall/registry.js +1 -1
  9. package/es/chat-engine/components/toolcall/registry.js.map +1 -0
  10. package/es/{chatbot → chat-engine}/components/toolcall/render.js +1 -2
  11. package/es/chat-engine/components/toolcall/render.js.map +1 -0
  12. package/es/{chatbot → chat-engine}/components/toolcall/types.d.ts +12 -4
  13. package/es/{chatbot → chat-engine}/components/toolcall/types.js +1 -1
  14. package/es/chat-engine/components/toolcall/types.js.map +1 -0
  15. package/es/{chatbot → chat-engine}/hooks/useAgentState.js +1 -1
  16. package/es/chat-engine/hooks/useAgentState.js.map +1 -0
  17. package/es/{chatbot → chat-engine}/hooks/useAgentToolcall.js +1 -1
  18. package/es/chat-engine/hooks/useAgentToolcall.js.map +1 -0
  19. package/es/{chatbot → chat-engine}/hooks/useChat.d.ts +1 -1
  20. package/es/{chatbot → chat-engine}/hooks/useChat.js +1 -1
  21. package/es/chat-engine/hooks/useChat.js.map +1 -0
  22. package/es/chat-engine/index.d.ts +6 -0
  23. package/es/chat-engine/index.js +24 -0
  24. package/es/{chatbot/core/server → chat-engine}/index.js.map +1 -1
  25. package/es/chat-filecard/index.js +1 -1
  26. package/es/chat-loading/index.js +1 -1
  27. package/es/chat-markdown/index.js +1 -1
  28. package/es/chat-message/index.js +1 -1
  29. package/es/chat-sender/index.js +1 -1
  30. package/es/chat-thinking/index.js +1 -1
  31. package/es/chatbot/index.d.ts +0 -5
  32. package/es/chatbot/index.js +1 -12
  33. package/es/chatbot/index.js.map +1 -1
  34. package/es/index.d.ts +1 -1
  35. package/es/index.js +10 -9
  36. package/es/index.js.map +1 -1
  37. package/es/style/index.js +1 -1
  38. package/package.json +3 -3
  39. package/es/chatbot/components/provider/agent-state.js.map +0 -1
  40. package/es/chatbot/components/toolcall/registry.js.map +0 -1
  41. package/es/chatbot/components/toolcall/render.js.map +0 -1
  42. package/es/chatbot/components/toolcall/types.js.map +0 -1
  43. package/es/chatbot/core/adapters/agui/event-mapper.d.ts +0 -104
  44. package/es/chatbot/core/adapters/agui/event-mapper.js +0 -342
  45. package/es/chatbot/core/adapters/agui/event-mapper.js.map +0 -1
  46. package/es/chatbot/core/adapters/agui/events.d.ts +0 -1394
  47. package/es/chatbot/core/adapters/agui/events.js +0 -181
  48. package/es/chatbot/core/adapters/agui/events.js.map +0 -1
  49. package/es/chatbot/core/adapters/agui/index.d.ts +0 -75
  50. package/es/chatbot/core/adapters/agui/index.js +0 -165
  51. package/es/chatbot/core/adapters/agui/index.js.map +0 -1
  52. package/es/chatbot/core/adapters/agui/state-manager.d.ts +0 -99
  53. package/es/chatbot/core/adapters/agui/state-manager.js +0 -168
  54. package/es/chatbot/core/adapters/agui/state-manager.js.map +0 -1
  55. package/es/chatbot/core/adapters/agui/types.d.ts +0 -760
  56. package/es/chatbot/core/adapters/agui/types.js +0 -89
  57. package/es/chatbot/core/adapters/agui/types.js.map +0 -1
  58. package/es/chatbot/core/adapters/agui/utils.d.ts +0 -188
  59. package/es/chatbot/core/adapters/agui/utils.js +0 -323
  60. package/es/chatbot/core/adapters/agui/utils.js.map +0 -1
  61. package/es/chatbot/core/index.d.ts +0 -131
  62. package/es/chatbot/core/index.js +0 -585
  63. package/es/chatbot/core/index.js.map +0 -1
  64. package/es/chatbot/core/processor/index.d.ts +0 -20
  65. package/es/chatbot/core/processor/index.js +0 -148
  66. package/es/chatbot/core/processor/index.js.map +0 -1
  67. package/es/chatbot/core/server/batch-client.d.ts +0 -20
  68. package/es/chatbot/core/server/batch-client.js +0 -114
  69. package/es/chatbot/core/server/batch-client.js.map +0 -1
  70. package/es/chatbot/core/server/connection-manager.d.ts +0 -39
  71. package/es/chatbot/core/server/connection-manager.js +0 -84
  72. package/es/chatbot/core/server/connection-manager.js.map +0 -1
  73. package/es/chatbot/core/server/errors.d.ts +0 -22
  74. package/es/chatbot/core/server/errors.js +0 -80
  75. package/es/chatbot/core/server/errors.js.map +0 -1
  76. package/es/chatbot/core/server/index.d.ts +0 -11
  77. package/es/chatbot/core/server/index.js +0 -26
  78. package/es/chatbot/core/server/llm-service.d.ts +0 -44
  79. package/es/chatbot/core/server/llm-service.js +0 -198
  80. package/es/chatbot/core/server/llm-service.js.map +0 -1
  81. package/es/chatbot/core/server/sse-client.d.ts +0 -77
  82. package/es/chatbot/core/server/sse-client.js +0 -362
  83. package/es/chatbot/core/server/sse-client.js.map +0 -1
  84. package/es/chatbot/core/server/sse-parser.d.ts +0 -49
  85. package/es/chatbot/core/server/sse-parser.js +0 -116
  86. package/es/chatbot/core/server/sse-parser.js.map +0 -1
  87. package/es/chatbot/core/server/types.d.ts +0 -54
  88. package/es/chatbot/core/server/types.js +0 -28
  89. package/es/chatbot/core/server/types.js.map +0 -1
  90. package/es/chatbot/core/store/message.d.ts +0 -27
  91. package/es/chatbot/core/store/message.js +0 -263
  92. package/es/chatbot/core/store/message.js.map +0 -1
  93. package/es/chatbot/core/store/model.d.ts +0 -8
  94. package/es/chatbot/core/store/model.js +0 -65
  95. package/es/chatbot/core/store/model.js.map +0 -1
  96. package/es/chatbot/core/store/reactiveState.d.ts +0 -52
  97. package/es/chatbot/core/store/reactiveState.js +0 -1359
  98. package/es/chatbot/core/store/reactiveState.js.map +0 -1
  99. package/es/chatbot/core/type.d.ts +0 -238
  100. package/es/chatbot/core/type.js +0 -7
  101. package/es/chatbot/core/type.js.map +0 -1
  102. package/es/chatbot/core/utils/eventEmitter.d.ts +0 -10
  103. package/es/chatbot/core/utils/eventEmitter.js +0 -67
  104. package/es/chatbot/core/utils/eventEmitter.js.map +0 -1
  105. package/es/chatbot/core/utils/index.d.ts +0 -31
  106. package/es/chatbot/core/utils/index.js +0 -221
  107. package/es/chatbot/core/utils/index.js.map +0 -1
  108. package/es/chatbot/core/utils/logger.d.ts +0 -30
  109. package/es/chatbot/core/utils/logger.js +0 -87
  110. package/es/chatbot/core/utils/logger.js.map +0 -1
  111. package/es/chatbot/hooks/useAgentState.js.map +0 -1
  112. package/es/chatbot/hooks/useAgentToolcall.js.map +0 -1
  113. package/es/chatbot/hooks/useChat.js.map +0 -1
  114. /package/es/{chatbot → chat-engine}/components/provider/agent-state.d.ts +0 -0
  115. /package/es/{chatbot → chat-engine}/components/toolcall/index.d.ts +0 -0
  116. /package/es/{chatbot → chat-engine}/components/toolcall/index.js.map +0 -0
  117. /package/es/{chatbot → chat-engine}/components/toolcall/registry.d.ts +0 -0
  118. /package/es/{chatbot → chat-engine}/components/toolcall/render.d.ts +0 -0
  119. /package/es/{chatbot → chat-engine}/hooks/useAgentState.d.ts +0 -0
  120. /package/es/{chatbot → chat-engine}/hooks/useAgentToolcall.d.ts +0 -0
@@ -1,221 +0,0 @@
1
- /**
2
- * tdesign v1.0.0-beta.3
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
8
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
9
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
10
- function parseJsonPointerPath(path) {
11
- return path.slice(1).split("/").map(function (part) {
12
- return part.replace(/~1/g, "/").replace(/~0/g, "~");
13
- });
14
- }
15
- function isArrayIndex(key) {
16
- return /^\d+$/.test(key);
17
- }
18
- function extendArrayToIndex(array, targetIndex) {
19
- while (array.length <= targetIndex) {
20
- array.push(void 0);
21
- }
22
- }
23
- function navigateArrayPath(target, pathSegment, nextKey, operation) {
24
- var arrayIndex = parseInt(pathSegment, 10);
25
- if (operation !== "add" && arrayIndex >= target.length) {
26
- throw new Error("\u6570\u7EC4\u7D22\u5F15 ".concat(arrayIndex, " \u8D85\u51FA\u8303\u56F4\uFF0C\u5F53\u524D\u6570\u7EC4\u957F\u5EA6: ").concat(target.length));
27
- }
28
- if (operation === "add" && arrayIndex >= target.length) {
29
- extendArrayToIndex(target, arrayIndex);
30
- }
31
- if (target[arrayIndex] == null) {
32
- target[arrayIndex] = isArrayIndex(nextKey) ? [] : {};
33
- }
34
- return target[arrayIndex];
35
- }
36
- function navigateObjectPath(target, pathSegment, nextKey, operation) {
37
- if (target[pathSegment] === void 0 || target[pathSegment] === null) {
38
- if (operation === "remove") {
39
- throw new Error("\u8981\u5220\u9664\u7684\u8DEF\u5F84\u4E0D\u5B58\u5728");
40
- }
41
- target[pathSegment] = isArrayIndex(nextKey) ? [] : {};
42
- }
43
- return target[pathSegment];
44
- }
45
- function navigateToTarget(root, pathParts, operation) {
46
- var target = root;
47
- for (var i = 0; i < pathParts.length - 1; i++) {
48
- var pathSegment = pathParts[i];
49
- var nextKey = pathParts[i + 1];
50
- if (Array.isArray(target)) {
51
- target = navigateArrayPath(target, pathSegment, nextKey, operation);
52
- } else {
53
- target = navigateObjectPath(target, pathSegment, nextKey, operation);
54
- }
55
- }
56
- return target;
57
- }
58
- function executeArrayOperation(target, lastKey, operation, value) {
59
- var arrayIndex = parseInt(lastKey, 10);
60
- switch (operation) {
61
- case "add":
62
- if (arrayIndex >= target.length) {
63
- extendArrayToIndex(target, arrayIndex);
64
- }
65
- target[arrayIndex] = value;
66
- break;
67
- case "replace":
68
- if (arrayIndex >= target.length) {
69
- throw new Error("\u6570\u7EC4\u7D22\u5F15 ".concat(arrayIndex, " \u8D85\u51FA\u8303\u56F4\uFF0C\u5F53\u524D\u6570\u7EC4\u957F\u5EA6: ").concat(target.length));
70
- }
71
- target[arrayIndex] = value;
72
- break;
73
- case "remove":
74
- if (arrayIndex < target.length) {
75
- target.splice(arrayIndex, 1);
76
- }
77
- break;
78
- }
79
- }
80
- function executeObjectOperation(target, lastKey, operation, value) {
81
- switch (operation) {
82
- case "add":
83
- case "replace":
84
- target[lastKey] = value;
85
- break;
86
- case "remove":
87
- if (target && lastKey in target) {
88
- delete target[lastKey];
89
- }
90
- break;
91
- }
92
- }
93
- function executeOperation(target, lastKey, operation, value) {
94
- if (Array.isArray(target)) {
95
- executeArrayOperation(target, lastKey, operation, value);
96
- } else {
97
- executeObjectOperation(target, lastKey, operation, value);
98
- }
99
- }
100
- function applyJsonPatch(state, delta) {
101
- var newState = JSON.parse(JSON.stringify(state));
102
- var _iterator = _createForOfIteratorHelper(delta),
103
- _step;
104
- try {
105
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
106
- var _step$value = _step.value,
107
- op = _step$value.op,
108
- path = _step$value.path,
109
- value = _step$value.value;
110
- try {
111
- var pathParts = parseJsonPointerPath(path);
112
- if (pathParts.length === 0) continue;
113
- var target = navigateToTarget(newState, pathParts, op);
114
- var lastKey = pathParts[pathParts.length - 1];
115
- executeOperation(target, lastKey, op, value);
116
- } catch (error) {
117
- console.warn("JSON Patch\u64CD\u4F5C\u8DF3\u8FC7: ".concat(op, " ").concat(path, " - ").concat(error));
118
- }
119
- }
120
- } catch (err) {
121
- _iterator.e(err);
122
- } finally {
123
- _iterator.f();
124
- }
125
- return newState;
126
- }
127
- function safeParseJSON(value, fallbackValue, errorContext) {
128
- if (typeof value !== "string") {
129
- return value;
130
- }
131
- try {
132
- return JSON.parse(value);
133
- } catch (error) {
134
- var context = errorContext ? " (".concat(errorContext, ")") : "";
135
- console.warn("Failed to parse JSON".concat(context, ":"), error);
136
- return fallbackValue !== void 0 ? fallbackValue : value;
137
- }
138
- }
139
- function findTargetElement(event, selector) {
140
- var selectors = Array.isArray(selector) ? selector : selector.split(",").map(function (s) {
141
- return s.trim();
142
- });
143
- var eventPath = event.composedPath();
144
- var _iterator2 = _createForOfIteratorHelper(eventPath),
145
- _step2;
146
- try {
147
- var _loop = function _loop() {
148
- var el = _step2.value;
149
- if (el instanceof HTMLElement) {
150
- if (selectors.some(function (sel) {
151
- var _el$matches;
152
- return (_el$matches = el.matches) === null || _el$matches === void 0 ? void 0 : _el$matches.call(el, sel);
153
- })) {
154
- return {
155
- v: el
156
- };
157
- }
158
- }
159
- },
160
- _ret;
161
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
162
- _ret = _loop();
163
- if (_ret) return _ret.v;
164
- }
165
- } catch (err) {
166
- _iterator2.e(err);
167
- } finally {
168
- _iterator2.f();
169
- }
170
- return null;
171
- }
172
- function isUserMessage(message) {
173
- return message.role === "user" && "content" in message;
174
- }
175
- function isAIMessage(message) {
176
- return message.role === "assistant";
177
- }
178
- function isThinkingContent(content) {
179
- return content.type === "thinking";
180
- }
181
- function isTextContent(content) {
182
- return content.type === "text";
183
- }
184
- function isMarkdownContent(content) {
185
- return content.type === "markdown";
186
- }
187
- function isImageContent(content) {
188
- return content.type === "image";
189
- }
190
- function isSearchContent(content) {
191
- return content.type === "search";
192
- }
193
- function isSuggestionContent(content) {
194
- return content.type === "suggestion";
195
- }
196
- function isAttachmentContent(content) {
197
- return content.type === "attachment";
198
- }
199
- function isToolCallContent(content) {
200
- return content.type === "toolcall";
201
- }
202
- function getMessageContentForCopy(message) {
203
- if (!isAIMessage(message) || !message.content) {
204
- return "";
205
- }
206
- return message.content.reduce(function (pre, item) {
207
- var append = "";
208
- if (isTextContent(item) || isMarkdownContent(item)) {
209
- append = item.data;
210
- } else if (isThinkingContent(item)) {
211
- append = item.data.text || "";
212
- }
213
- if (!pre) {
214
- return append;
215
- }
216
- return "".concat(pre, "\n").concat(append);
217
- }, "");
218
- }
219
-
220
- export { applyJsonPatch, findTargetElement, getMessageContentForCopy, isAIMessage, isAttachmentContent, isImageContent, isMarkdownContent, isSearchContent, isSuggestionContent, isTextContent, isThinkingContent, isToolCallContent, isUserMessage, safeParseJSON };
221
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../pro-components/chat/chatbot/core/utils/index.ts"],"sourcesContent":["import type {\n AIMessageContent,\n AttachmentContent,\n ChatMessagesData,\n ImageContent,\n MarkdownContent,\n SearchContent,\n SuggestionContent,\n TextContent,\n ThinkingContent,\n UserMessageContent,\n ToolCallContent,\n} from '../type';\n\n/**\n * 解析JSON Pointer路径\n */\nfunction parseJsonPointerPath(path: string): string[] {\n return path\n .slice(1) // 移除开头的斜杠\n .split('/')\n .map((part: string) =>\n // 处理JSON Pointer转义字符\n part.replace(/~1/g, '/').replace(/~0/g, '~'),\n );\n}\n\n/**\n * 检查是否为数组索引\n */\nfunction isArrayIndex(key: string): boolean {\n return /^\\d+$/.test(key);\n}\n\n/**\n * 扩展数组到指定长度\n */\nfunction extendArrayToIndex(array: any[], targetIndex: number): void {\n while (array.length <= targetIndex) {\n array.push(undefined);\n }\n}\n\n/**\n * 处理数组路径导航\n */\nfunction navigateArrayPath(target: any[], pathSegment: string, nextKey: string, operation: string): any {\n const arrayIndex = parseInt(pathSegment, 10);\n\n // 验证索引范围\n if (operation !== 'add' && arrayIndex >= target.length) {\n throw new Error(`数组索引 ${arrayIndex} 超出范围,当前数组长度: ${target.length}`);\n }\n\n // 扩展数组(如果需要)\n if (operation === 'add' && arrayIndex >= target.length) {\n extendArrayToIndex(target, arrayIndex);\n }\n\n // 创建中间对象(如果不存在)\n if (target[arrayIndex] == null) {\n target[arrayIndex] = isArrayIndex(nextKey) ? [] : {};\n }\n\n return target[arrayIndex];\n}\n\n/**\n * 处理对象路径导航\n */\nfunction navigateObjectPath(target: any, pathSegment: string, nextKey: string, operation: string): any {\n if (target[pathSegment] === undefined || target[pathSegment] === null) {\n if (operation === 'remove') {\n throw new Error('要删除的路径不存在');\n }\n // 创建中间对象\n target[pathSegment] = isArrayIndex(nextKey) ? [] : {};\n }\n return target[pathSegment];\n}\n\n/**\n * 导航到目标路径\n */\nfunction navigateToTarget(root: any, pathParts: string[], operation: string): any {\n let target = root;\n\n for (let i = 0; i < pathParts.length - 1; i++) {\n const pathSegment = pathParts[i];\n const nextKey = pathParts[i + 1];\n\n if (Array.isArray(target)) {\n target = navigateArrayPath(target, pathSegment, nextKey, operation);\n } else {\n target = navigateObjectPath(target, pathSegment, nextKey, operation);\n }\n }\n\n return target;\n}\n\n/**\n * 执行数组操作\n */\nfunction executeArrayOperation(target: any[], lastKey: string, operation: string, value: any): void {\n const arrayIndex = parseInt(lastKey, 10);\n\n switch (operation) {\n case 'add':\n if (arrayIndex >= target.length) {\n extendArrayToIndex(target, arrayIndex);\n }\n target[arrayIndex] = value;\n break;\n case 'replace':\n if (arrayIndex >= target.length) {\n throw new Error(`数组索引 ${arrayIndex} 超出范围,当前数组长度: ${target.length}`);\n }\n target[arrayIndex] = value;\n break;\n case 'remove':\n if (arrayIndex < target.length) {\n target.splice(arrayIndex, 1);\n }\n break;\n }\n}\n\n/**\n * 执行对象操作\n */\nfunction executeObjectOperation(target: any, lastKey: string, operation: string, value: any): void {\n switch (operation) {\n case 'add':\n case 'replace':\n target[lastKey] = value;\n break;\n case 'remove':\n if (target && lastKey in target) {\n delete target[lastKey];\n }\n break;\n }\n}\n\n/**\n * 执行JSON Patch操作\n */\nfunction executeOperation(target: any, lastKey: string, operation: string, value: any): void {\n if (Array.isArray(target)) {\n executeArrayOperation(target, lastKey, operation, value);\n } else {\n executeObjectOperation(target, lastKey, operation, value);\n }\n}\n\n/**\n * 应用JSON Patch操作到状态对象\n * 实现RFC6902规范的JSON Patch操作\n * @param state 原始状态对象\n * @param delta 包含patch操作的数组\n * @returns 更新后的新状态对象\n */\nexport function applyJsonPatch(state: any, delta: any[]): any {\n // 深拷贝原始状态,避免直接修改原对象\n const newState = JSON.parse(JSON.stringify(state));\n\n for (const { op, path, value } of delta) {\n try {\n // 解析路径\n const pathParts = parseJsonPointerPath(path);\n if (pathParts.length === 0) continue;\n\n // 导航到目标对象\n const target = navigateToTarget(newState, pathParts, op);\n const lastKey = pathParts[pathParts.length - 1];\n\n // 执行操作\n executeOperation(target, lastKey, op, value);\n } catch (error) {\n console.warn(`JSON Patch操作跳过: ${op} ${path} - ${error}`);\n // 继续处理下一个操作,而不是中断整个过程\n }\n }\n\n return newState;\n}\n\n/**\n * 安全解析JSON字符串的工具函数\n *\n * @param value 待解析的值,可能是字符串或已解析的对象\n * @param fallbackValue 解析失败时的回退值,默认为原值\n * @param errorContext 错误上下文,用于日志输出\n * @returns 解析后的值或回退值\n */\nexport function safeParseJSON<T = any>(value: any, fallbackValue?: T, errorContext?: string): T {\n if (typeof value !== 'string') {\n return value; // 如果不是字符串,直接返回\n }\n\n try {\n return JSON.parse(value);\n } catch (error) {\n const context = errorContext ? ` (${errorContext})` : '';\n console.warn(`Failed to parse JSON${context}:`, error);\n return (fallbackValue !== undefined ? fallbackValue : value) as T;\n }\n}\n\nexport function findTargetElement(event: MouseEvent, selector: string | string[]): HTMLElement | null {\n // 统一处理选择器输入格式(支持字符串或数组)\n const selectors = Array.isArray(selector) ? selector : selector.split(',').map((s) => s.trim());\n\n // 获取事件穿透路径(包含Shadow DOM内部元素)\n const eventPath = event.composedPath();\n\n // 遍历路径查找目标元素\n for (const el of eventPath) {\n // 类型安全判断 + 多选择器匹配\n if (el instanceof HTMLElement) {\n // 检查是否匹配任意一个选择器\n if (selectors.some((sel) => el.matches?.(sel))) {\n return el; // 找到即返回\n }\n }\n }\n\n return null; // 未找到返回null\n}\n\n// 类型守卫函数\nexport function isUserMessage(message: ChatMessagesData) {\n return message.role === 'user' && 'content' in message;\n}\n\nexport function isAIMessage(message: ChatMessagesData) {\n return message.role === 'assistant';\n}\n\nexport function isThinkingContent(content: AIMessageContent): content is ThinkingContent {\n return content.type === 'thinking';\n}\n\nexport function isTextContent(content: AIMessageContent): content is TextContent {\n return content.type === 'text';\n}\n\nexport function isMarkdownContent(content: AIMessageContent): content is MarkdownContent {\n return content.type === 'markdown';\n}\n\nexport function isImageContent(content: AIMessageContent): content is ImageContent {\n return content.type === 'image';\n}\n\nexport function isSearchContent(content: AIMessageContent): content is SearchContent {\n return content.type === 'search';\n}\n\nexport function isSuggestionContent(content: AIMessageContent): content is SuggestionContent {\n return content.type === 'suggestion';\n}\n\nexport function isAttachmentContent(content: UserMessageContent): content is AttachmentContent {\n return content.type === 'attachment';\n}\n\nexport function isToolCallContent(content: AIMessageContent): content is ToolCallContent {\n return content.type === 'toolcall';\n}\n\n/** 提取消息复制内容 */\nexport function getMessageContentForCopy(message: ChatMessagesData): string {\n if (!isAIMessage(message) || !message.content) {\n return '';\n }\n return message.content.reduce((pre: string, item: AIMessageContent) => {\n let append = '';\n if (isTextContent(item) || isMarkdownContent(item)) {\n append = item.data;\n } else if (isThinkingContent(item)) {\n append = item.data.text || '';\n }\n if (!pre) {\n return append;\n }\n return `${pre}\\n${append}`;\n }, '');\n}\n"],"names":["parseJsonPointerPath","path","slice","split","map","part","replace","isArrayIndex","key","test","extendArrayToIndex","array","targetIndex","length","push","navigateArrayPath","target","pathSegment","nextKey","operation","arrayIndex","parseInt","Error","concat","navigateObjectPath","navigateToTarget","root","pathParts","i","Array","isArray","executeArrayOperation","lastKey","value","splice","executeObjectOperation","executeOperation","applyJsonPatch","state","delta","newState","JSON","parse","stringify","_iterator","_createForOfIteratorHelper","_step","s","n","done","_step$value","op","error","console","warn","err","e","f","safeParseJSON","fallbackValue","errorContext","context","findTargetElement","event","selector","selectors","trim","eventPath","composedPath","_iterator2","_step2","_loop","el","HTMLElement","some","sel","_el$matches","matches","call","v","_ret","isUserMessage","message","role","isAIMessage","isThinkingContent","content","type","isTextContent","isMarkdownContent","isImageContent","isSearchContent","isSuggestionContent","isAttachmentContent","isToolCallContent","getMessageContentForCopy","reduce","pre","item","append","data","text"],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- export interface Logger {
2
- debug(message: string, ...args: any[]): void;
3
- info(message: string, ...args: any[]): void;
4
- warn(message: string, ...args: any[]): void;
5
- error(message: string, ...args: any[]): void;
6
- }
7
- export declare class ConsoleLogger implements Logger {
8
- private enableDebug;
9
- constructor(enableDebug?: boolean);
10
- debug(message: string, ...args: any[]): void;
11
- info(message: string, ...args: any[]): void;
12
- warn(message: string, ...args: any[]): void;
13
- error(message: string, ...args: any[]): void;
14
- }
15
- export declare class LoggerManager {
16
- private static instance;
17
- private static customLogger;
18
- /**
19
- * 获取日志实例(单例模式)
20
- */
21
- static getLogger(): Logger;
22
- /**
23
- * 设置自定义日志实例
24
- */
25
- static setLogger(logger: Logger): void;
26
- /**
27
- * 重置为默认日志
28
- */
29
- static resetToDefault(): void;
30
- }
@@ -1,87 +0,0 @@
1
- /**
2
- * tdesign v1.0.0-beta.3
3
- * (c) 2025 tdesign
4
- * @license MIT
5
- */
6
-
7
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
8
- import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
9
- import _createClass from '@babel/runtime/helpers/createClass';
10
-
11
- var ConsoleLogger = /*#__PURE__*/function () {
12
- function ConsoleLogger() {
13
- var enableDebug = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
14
- _classCallCheck(this, ConsoleLogger);
15
- this.enableDebug = enableDebug;
16
- }
17
- return _createClass(ConsoleLogger, [{
18
- key: "debug",
19
- value: function debug(message) {
20
- if (this.enableDebug) {
21
- var _console;
22
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
23
- args[_key - 1] = arguments[_key];
24
- }
25
- (_console = console).debug.apply(_console, ["[SSE Debug] ".concat(message)].concat(args));
26
- }
27
- }
28
- }, {
29
- key: "info",
30
- value: function info(message) {
31
- var _console2;
32
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
33
- args[_key2 - 1] = arguments[_key2];
34
- }
35
- (_console2 = console).info.apply(_console2, ["[SSE Info] ".concat(message)].concat(args));
36
- }
37
- }, {
38
- key: "warn",
39
- value: function warn(message) {
40
- var _console3;
41
- for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
42
- args[_key3 - 1] = arguments[_key3];
43
- }
44
- (_console3 = console).warn.apply(_console3, ["[SSE Warn] ".concat(message)].concat(args));
45
- }
46
- }, {
47
- key: "error",
48
- value: function error(message) {
49
- var _console4;
50
- for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
51
- args[_key4 - 1] = arguments[_key4];
52
- }
53
- (_console4 = console).error.apply(_console4, ["[SSE Error] ".concat(message)].concat(args));
54
- }
55
- }]);
56
- }();
57
- var LoggerManager = /*#__PURE__*/function () {
58
- function LoggerManager() {
59
- _classCallCheck(this, LoggerManager);
60
- }
61
- return _createClass(LoggerManager, null, [{
62
- key: "getLogger",
63
- value: function getLogger() {
64
- if (this.customLogger) {
65
- return this.customLogger;
66
- }
67
- if (!this.instance) {
68
- this.instance = new ConsoleLogger();
69
- }
70
- return this.instance;
71
- }
72
- }, {
73
- key: "setLogger",
74
- value: function setLogger(logger) {
75
- this.customLogger = logger;
76
- }
77
- }, {
78
- key: "resetToDefault",
79
- value: function resetToDefault() {
80
- this.customLogger = null;
81
- }
82
- }]);
83
- }();
84
- _defineProperty(LoggerManager, "customLogger", null);
85
-
86
- export { ConsoleLogger, LoggerManager };
87
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sources":["../../../../../pro-components/chat/chatbot/core/utils/logger.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\n/* eslint-disable no-await-in-loop, max-classes-per-file */\n// 日志接口\nexport interface Logger {\n debug(message: string, ...args: any[]): void;\n info(message: string, ...args: any[]): void;\n warn(message: string, ...args: any[]): void;\n error(message: string, ...args: any[]): void;\n}\n\n// 默认日志实现\nexport class ConsoleLogger implements Logger {\n private enableDebug: boolean;\n\n constructor(enableDebug = false) {\n this.enableDebug = enableDebug;\n }\n\n debug(message: string, ...args: any[]): void {\n if (this.enableDebug) {\n console.debug(`[SSE Debug] ${message}`, ...args);\n }\n }\n\n info(message: string, ...args: any[]): void {\n console.info(`[SSE Info] ${message}`, ...args);\n }\n\n warn(message: string, ...args: any[]): void {\n console.warn(`[SSE Warn] ${message}`, ...args);\n }\n\n error(message: string, ...args: any[]): void {\n console.error(`[SSE Error] ${message}`, ...args);\n }\n}\n\nexport class LoggerManager {\n private static instance: Logger;\n\n private static customLogger: Logger | null = null;\n\n /**\n * 获取日志实例(单例模式)\n */\n static getLogger(): Logger {\n if (this.customLogger) {\n return this.customLogger;\n }\n\n if (!this.instance) {\n this.instance = new ConsoleLogger();\n }\n return this.instance;\n }\n\n /**\n * 设置自定义日志实例\n */\n static setLogger(logger: Logger): void {\n this.customLogger = logger;\n }\n\n /**\n * 重置为默认日志\n */\n static resetToDefault(): void {\n this.customLogger = null;\n }\n}\n"],"names":["ConsoleLogger","enableDebug","_classCallCheck","_createClass","key","value","debug","message","_console","_len","arguments","length","args","Array","_key","console","apply","concat","info","_console2","_len2","_key2","warn","_console3","_len3","_key3","error","_console4","_len4","_key4","LoggerManager","getLogger","customLogger","instance","setLogger","logger","resetToDefault","_defineProperty"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAgentState.js","sources":["../../../../pro-components/chat/chatbot/hooks/useAgentState.ts"],"sourcesContent":["import { useState, useEffect, useRef, createContext, useContext, useMemo } from 'react';\nimport { stateManager } from 'tdesign-web-components/lib/chat-engine';\n\n/**\n * 状态订阅相关类型定义\n */\n\nexport interface StateActionOptions {\n /**\n * 初始状态\n */\n initialState?: Record<string, any>;\n /**\n * 只订阅特定key的变化\n */\n subscribeKey?: string;\n}\n\nexport interface UseStateActionReturn {\n /**\n * 全量状态Map - 包含所有stateKey的状态\n * 格式: { [stateKey]: stateData }\n */\n stateMap: Record<string, any>;\n /**\n * 当前最新的状态key\n */\n currentStateKey: string | null;\n /**\n * 设置状态Map,用于加载历史对话消息中的state数据\n */\n setStateMap: (stateMap: Record<string, any> | ((prev: Record<string, any>) => Record<string, any>)) => void;\n /**\n * 获取当前完整状态的方法\n */\n getCurrentState: () => Record<string, any>;\n /**\n * 获取特定 key 状态的方法\n */\n getStateByKey: (key: string) => any;\n}\n\nexport const useAgentState = <T = any>(options: StateActionOptions = {}): UseStateActionReturn => {\n const { initialState, subscribeKey } = options;\n const [stateMap, setStateMap] = useState<Record<string, any>>(initialState || {});\n const [currentStateKey, setCurrentStateKey] = useState<string | null>(null);\n\n // 使用 ref 来避免不必要的重新渲染\n const stateMapRef = useRef(stateMap);\n stateMapRef.current = stateMap;\n\n useEffect(\n () =>\n stateManager.subscribeToLatest((newState: T, newStateKey: string) => {\n // 如果指定了 subscribeKey,只有匹配时才更新状态\n if (subscribeKey && newStateKey !== subscribeKey) {\n // 仍然更新内部状态,但不触发重新渲染\n stateMapRef.current = {\n ...stateMapRef.current,\n [newStateKey]: newState,\n };\n return;\n }\n\n setStateMap((prev) => ({\n ...prev,\n [newStateKey]: newState,\n }));\n setCurrentStateKey(newStateKey);\n }),\n [subscribeKey],\n );\n\n return {\n stateMap: stateMapRef.current,\n currentStateKey,\n setStateMap,\n getCurrentState: () => stateMapRef.current,\n getStateByKey: (key: string) => stateMapRef.current[key],\n };\n};\n\n// 创建 AgentState Context\nexport const AgentStateContext = createContext<UseStateActionReturn | null>(null);\n\n// 简化的状态选择器\nexport const useAgentStateDataByKey = (stateKey?: string) => {\n const contextState = useContext(AgentStateContext);\n const independentState = useAgentState({ subscribeKey: stateKey });\n\n return useMemo(() => {\n if (contextState) {\n // 有 Provider,使用 Context 状态\n const { stateMap } = contextState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }\n\n // 没有 Provider,使用独立状态\n const { stateMap } = independentState;\n return stateKey ? stateMap[stateKey] : stateMap;\n }, [\n stateKey,\n // 关键:添加和 useAgentStateByKey 相同的深度依赖逻辑\n contextState && (stateKey ? contextState.stateMap[stateKey] : JSON.stringify(contextState.stateMap)),\n independentState && (stateKey ? independentState.stateMap[stateKey] : JSON.stringify(independentState.stateMap)),\n ]);\n};\n\n// 导出 Context Hook\nexport const useAgentStateContext = (): UseStateActionReturn => {\n const context = useContext(AgentStateContext);\n\n if (!context) {\n throw new Error('useAgentState must be used within AgentStateProvider');\n }\n\n return context;\n};\n"],"names":["useAgentState","options","arguments","length","undefined","initialState","subscribeKey","_useState","useState","_useState2","_slicedToArray","stateMap","setStateMap","_useState3","_useState4","currentStateKey","setCurrentStateKey","stateMapRef","useRef","current","useEffect","stateManager","subscribeToLatest","newState","newStateKey","_objectSpread","_defineProperty","prev","getCurrentState","getStateByKey","key","AgentStateContext","createContext","useAgentStateDataByKey","stateKey","contextState","useContext","independentState","useMemo","JSON","stringify","useAgentStateContext","context","Error"],"mappings":"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"}
@@ -1 +0,0 @@
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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"}
@@ -1 +0,0 @@
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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"}