@tdesign-react/chat 1.0.2-alpha.7 → 1.0.2-alpha.9

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 (227) 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 +28 -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 +4 -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.js +72 -25
  59. package/es/chat-engine/components/toolcall/render.js.map +1 -1
  60. package/es/chat-engine/components/toolcall/types.js +1 -1
  61. package/es/chat-engine/core/adapters/agui/event-mapper.d.ts +109 -0
  62. package/es/chat-engine/core/adapters/agui/event-mapper.js +375 -0
  63. package/es/chat-engine/core/adapters/agui/event-mapper.js.map +1 -0
  64. package/es/chat-engine/core/adapters/agui/events.d.ts +1550 -0
  65. package/es/chat-engine/core/adapters/agui/events.js +199 -0
  66. package/es/chat-engine/core/adapters/agui/events.js.map +1 -0
  67. package/es/chat-engine/core/adapters/agui/index.d.ts +75 -0
  68. package/es/chat-engine/core/adapters/agui/index.js +175 -0
  69. package/es/chat-engine/core/adapters/agui/index.js.map +1 -0
  70. package/es/chat-engine/core/adapters/agui/state-manager.d.ts +99 -0
  71. package/es/chat-engine/core/adapters/agui/state-manager.js +168 -0
  72. package/es/chat-engine/core/adapters/agui/state-manager.js.map +1 -0
  73. package/es/chat-engine/core/adapters/agui/types.d.ts +817 -0
  74. package/es/chat-engine/core/adapters/agui/types.js +95 -0
  75. package/es/chat-engine/core/adapters/agui/types.js.map +1 -0
  76. package/es/chat-engine/core/adapters/agui/utils.d.ts +197 -0
  77. package/es/chat-engine/core/adapters/agui/utils.js +311 -0
  78. package/es/chat-engine/core/adapters/agui/utils.js.map +1 -0
  79. package/es/chat-engine/core/index.d.ts +132 -0
  80. package/es/chat-engine/core/index.js +597 -0
  81. package/es/chat-engine/core/index.js.map +1 -0
  82. package/es/chat-engine/core/processor/index.d.ts +20 -0
  83. package/es/chat-engine/core/processor/index.js +146 -0
  84. package/es/chat-engine/core/processor/index.js.map +1 -0
  85. package/es/chat-engine/core/server/batch-client.d.ts +20 -0
  86. package/es/chat-engine/core/server/batch-client.js +114 -0
  87. package/es/chat-engine/core/server/batch-client.js.map +1 -0
  88. package/es/chat-engine/core/server/connection-manager.d.ts +39 -0
  89. package/es/chat-engine/core/server/connection-manager.js +84 -0
  90. package/es/chat-engine/core/server/connection-manager.js.map +1 -0
  91. package/es/chat-engine/core/server/errors.d.ts +22 -0
  92. package/es/chat-engine/core/server/errors.js +80 -0
  93. package/es/chat-engine/core/server/errors.js.map +1 -0
  94. package/es/chat-engine/core/server/index.d.ts +11 -0
  95. package/es/chat-engine/core/server/index.js +26 -0
  96. package/es/chat-engine/core/server/index.js.map +1 -0
  97. package/es/chat-engine/core/server/llm-service.d.ts +44 -0
  98. package/es/chat-engine/core/server/llm-service.js +198 -0
  99. package/es/chat-engine/core/server/llm-service.js.map +1 -0
  100. package/es/chat-engine/core/server/sse-client.d.ts +77 -0
  101. package/es/chat-engine/core/server/sse-client.js +362 -0
  102. package/es/chat-engine/core/server/sse-client.js.map +1 -0
  103. package/es/chat-engine/core/server/sse-parser.d.ts +49 -0
  104. package/es/chat-engine/core/server/sse-parser.js +116 -0
  105. package/es/chat-engine/core/server/sse-parser.js.map +1 -0
  106. package/es/chat-engine/core/server/types.d.ts +54 -0
  107. package/es/chat-engine/core/server/types.js +28 -0
  108. package/es/chat-engine/core/server/types.js.map +1 -0
  109. package/es/chat-engine/core/store/message.d.ts +27 -0
  110. package/es/chat-engine/core/store/message.js +263 -0
  111. package/es/chat-engine/core/store/message.js.map +1 -0
  112. package/es/chat-engine/core/store/model.d.ts +8 -0
  113. package/es/chat-engine/core/store/model.js +65 -0
  114. package/es/chat-engine/core/store/model.js.map +1 -0
  115. package/es/chat-engine/core/store/reactiveState.d.ts +52 -0
  116. package/es/chat-engine/core/store/reactiveState.js +1359 -0
  117. package/es/chat-engine/core/store/reactiveState.js.map +1 -0
  118. package/es/chat-engine/core/type.d.ts +255 -0
  119. package/es/chat-engine/core/type.js +7 -0
  120. package/es/chat-engine/core/type.js.map +1 -0
  121. package/es/chat-engine/core/utils/eventEmitter.d.ts +10 -0
  122. package/es/chat-engine/core/utils/eventEmitter.js +67 -0
  123. package/es/chat-engine/core/utils/eventEmitter.js.map +1 -0
  124. package/es/chat-engine/core/utils/index.d.ts +33 -0
  125. package/es/chat-engine/core/utils/index.js +999 -0
  126. package/es/chat-engine/core/utils/index.js.map +1 -0
  127. package/es/chat-engine/core/utils/logger.d.ts +30 -0
  128. package/es/chat-engine/core/utils/logger.js +87 -0
  129. package/es/chat-engine/core/utils/logger.js.map +1 -0
  130. package/es/chat-engine/hooks/index.d.ts +4 -0
  131. package/es/chat-engine/hooks/index.js +20 -0
  132. package/es/chat-engine/hooks/index.js.map +1 -0
  133. package/es/chat-engine/hooks/useAgentActivity.d.ts +16 -0
  134. package/es/chat-engine/hooks/useAgentActivity.js +73 -0
  135. package/es/chat-engine/hooks/useAgentActivity.js.map +1 -0
  136. package/es/chat-engine/hooks/useAgentState.js +1 -1
  137. package/es/chat-engine/hooks/useAgentState.js.map +1 -1
  138. package/es/chat-engine/hooks/useAgentToolcall.js +1 -1
  139. package/es/chat-engine/hooks/useChat.js +3 -3
  140. package/es/chat-engine/hooks/useChat.js.map +1 -1
  141. package/es/chat-engine/index.d.ts +3 -1
  142. package/es/chat-engine/index.js +37 -3
  143. package/es/chat-engine/index.js.map +1 -1
  144. package/es/chat-filecard/_example-js/base.d.ts +1 -0
  145. package/es/chat-filecard/index.js +4 -6
  146. package/es/chat-filecard/index.js.map +1 -1
  147. package/es/chat-loading/_example-js/base.d.ts +2 -0
  148. package/es/chat-loading/_example-js/text.d.ts +2 -0
  149. package/es/chat-loading/index.js +4 -6
  150. package/es/chat-loading/index.js.map +1 -1
  151. package/es/chat-markdown/_example-js/base.d.ts +1 -0
  152. package/es/chat-markdown/_example-js/custom.d.ts +2 -0
  153. package/es/chat-markdown/_example-js/event.d.ts +1 -0
  154. package/es/chat-markdown/_example-js/footnote.d.ts +2 -0
  155. package/es/chat-markdown/_example-js/plugin.d.ts +2 -0
  156. package/es/chat-markdown/_example-js/theme.d.ts +2 -0
  157. package/es/chat-markdown/index.js +4 -6
  158. package/es/chat-markdown/index.js.map +1 -1
  159. package/es/chat-message/_example-js/action.d.ts +1 -0
  160. package/es/chat-message/_example-js/base.d.ts +1 -0
  161. package/es/chat-message/_example-js/configure.d.ts +1 -0
  162. package/es/chat-message/_example-js/content.d.ts +1 -0
  163. package/es/chat-message/_example-js/custom.d.ts +1 -0
  164. package/es/chat-message/_example-js/handle-actions.d.ts +7 -0
  165. package/es/chat-message/_example-js/status.d.ts +1 -0
  166. package/es/chat-message/_example-js/think.d.ts +1 -0
  167. package/es/chat-message/index.js +4 -6
  168. package/es/chat-message/index.js.map +1 -1
  169. package/es/chat-sender/_example-js/attachment.d.ts +2 -0
  170. package/es/chat-sender/_example-js/base.d.ts +2 -0
  171. package/es/chat-sender/_example-js/custom.d.ts +2 -0
  172. package/es/chat-sender/index.js +4 -6
  173. package/es/chat-sender/index.js.map +1 -1
  174. package/es/chat-thinking/_example-js/base.d.ts +1 -0
  175. package/es/chat-thinking/_example-js/style.d.ts +1 -0
  176. package/es/chat-thinking/index.js +4 -6
  177. package/es/chat-thinking/index.js.map +1 -1
  178. package/es/chatbot/_example-js/agent.d.ts +1 -0
  179. package/es/chatbot/_example-js/agui.d.ts +13 -0
  180. package/es/chatbot/_example-js/backup/travel.d.ts +1 -0
  181. package/es/chatbot/_example-js/basic.d.ts +1 -0
  182. package/es/chatbot/_example-js/code.d.ts +1 -0
  183. package/es/chatbot/_example-js/components/ItineraryCard.d.ts +3 -0
  184. package/es/chatbot/_example-js/components/login.d.ts +1 -0
  185. package/es/chatbot/_example-js/comprehensive.d.ts +1 -0
  186. package/es/chatbot/_example-js/custom-content.d.ts +1 -0
  187. package/es/chatbot/_example-js/custom-merge.d.ts +1 -0
  188. package/es/chatbot/_example-js/custom.d.ts +1 -0
  189. package/es/chatbot/_example-js/docs.d.ts +1 -0
  190. package/es/chatbot/_example-js/image.d.ts +1 -0
  191. package/es/chatbot/_example-js/initial-messages.d.ts +9 -0
  192. package/es/chatbot/_example-js/instance-methods.d.ts +14 -0
  193. package/es/chatbot/_example-js/nostream.d.ts +1 -0
  194. package/es/chatbot/_example-js/quick-start.d.ts +9 -0
  195. package/es/chatbot/_example-js/research.d.ts +1 -0
  196. package/es/chatbot/_example-js/role-message-config.d.ts +22 -0
  197. package/es/chatbot/_example-js/sender-config.d.ts +20 -0
  198. package/es/chatbot/_example-js/service-config.d.ts +17 -0
  199. package/es/chatbot/_example-js/simple.d.ts +1 -0
  200. package/es/chatbot/_example-js/utils/messageRenderer.d.ts +5 -0
  201. package/es/chatbot/index.js +4 -6
  202. package/es/chatbot/index.js.map +1 -1
  203. package/es/index.js +37 -9
  204. package/es/index.js.map +1 -1
  205. package/es/style/index.js +1 -1
  206. package/package.json +2 -2
  207. package/es/chatbot/components/provider/agent-state.d.ts +0 -5
  208. package/es/chatbot/components/provider/agent-state.js +0 -28
  209. package/es/chatbot/components/provider/agent-state.js.map +0 -1
  210. package/es/chatbot/components/toolcall/index.js +0 -19
  211. package/es/chatbot/components/toolcall/registry.d.ts +0 -35
  212. package/es/chatbot/components/toolcall/registry.js.map +0 -1
  213. package/es/chatbot/components/toolcall/render.d.ts +0 -13
  214. package/es/chatbot/components/toolcall/render.js +0 -207
  215. package/es/chatbot/components/toolcall/render.js.map +0 -1
  216. package/es/chatbot/components/toolcall/types.d.ts +0 -57
  217. package/es/chatbot/components/toolcall/types.js +0 -15
  218. package/es/chatbot/components/toolcall/types.js.map +0 -1
  219. package/es/chatbot/hooks/useAgentState.d.ts +0 -40
  220. package/es/chatbot/hooks/useAgentState.js +0 -76
  221. package/es/chatbot/hooks/useAgentState.js.map +0 -1
  222. package/es/chatbot/hooks/useAgentToolcall.d.ts +0 -28
  223. package/es/chatbot/hooks/useAgentToolcall.js +0 -78
  224. package/es/chatbot/hooks/useAgentToolcall.js.map +0 -1
  225. package/es/chatbot/hooks/useChat.d.ts +0 -11
  226. package/es/chatbot/hooks/useChat.js +0 -66
  227. package/es/chatbot/hooks/useChat.js.map +0 -1
@@ -0,0 +1,168 @@
1
+ /**
2
+ * tdesign v1.0.2-alpha.6
3
+ * (c) 2026 tdesign
4
+ * @license MIT
5
+ */
6
+
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import _typeof from '@babel/runtime/helpers/typeof';
9
+ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
10
+ import _createClass from '@babel/runtime/helpers/createClass';
11
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
12
+ import { applyJsonPatch } from '../../utils/index.js';
13
+
14
+ var StateManagerImpl = /*#__PURE__*/function () {
15
+ function StateManagerImpl() {
16
+ _classCallCheck(this, StateManagerImpl);
17
+ _defineProperty(this, "states", {});
18
+ _defineProperty(this, "currentStateKey", null);
19
+ _defineProperty(this, "latestSubscribers", /* @__PURE__ */new Set());
20
+ _defineProperty(this, "boundSubscribers", /* @__PURE__ */new Map());
21
+ }
22
+ return _createClass(StateManagerImpl, [{
23
+ key: "getCurrentStateKey",
24
+ value: function getCurrentStateKey() {
25
+ return this.currentStateKey;
26
+ }
27
+ }, {
28
+ key: "getCurrentState",
29
+ value: function getCurrentState() {
30
+ if (!this.currentStateKey) return null;
31
+ return this.states[this.currentStateKey];
32
+ }
33
+ }, {
34
+ key: "getState",
35
+ value: function getState(stateKey) {
36
+ return this.states[stateKey];
37
+ }
38
+ }, {
39
+ key: "getAllStateKeys",
40
+ value: function getAllStateKeys() {
41
+ return Object.keys(this.states);
42
+ }
43
+ }, {
44
+ key: "subscribeToLatest",
45
+ value: function subscribeToLatest(callback) {
46
+ var _this = this;
47
+ this.latestSubscribers.add(callback);
48
+ if (this.currentStateKey && this.states[this.currentStateKey]) {
49
+ try {
50
+ callback(this.states[this.currentStateKey], this.currentStateKey);
51
+ } catch (error) {
52
+ console.error("\u6700\u65B0\u72B6\u6001\u8BA2\u9605\u56DE\u8C03\u6267\u884C\u5931\u8D25 [".concat(this.currentStateKey, "]:"), error);
53
+ }
54
+ }
55
+ return function () {
56
+ return _this.latestSubscribers["delete"](callback);
57
+ };
58
+ }
59
+ }, {
60
+ key: "subscribe",
61
+ value: function subscribe(callback, targetStateKey) {
62
+ if (targetStateKey) {
63
+ return this.subscribeToState(targetStateKey, function (state) {
64
+ return callback(state, targetStateKey);
65
+ });
66
+ }
67
+ return this.subscribeToLatest(callback);
68
+ }
69
+ }, {
70
+ key: "subscribeToState",
71
+ value: function subscribeToState(stateKey, callback) {
72
+ var _this2 = this;
73
+ if (!this.boundSubscribers.has(stateKey)) {
74
+ this.boundSubscribers.set(stateKey, /* @__PURE__ */new Set());
75
+ }
76
+ this.boundSubscribers.get(stateKey).add(callback);
77
+ if (this.states[stateKey]) {
78
+ try {
79
+ callback(this.states[stateKey]);
80
+ } catch (error) {
81
+ console.error("\u7ED1\u5B9A\u72B6\u6001\u8BA2\u9605\u56DE\u8C03\u6267\u884C\u5931\u8D25 [".concat(stateKey, "]:"), error);
82
+ }
83
+ }
84
+ return function () {
85
+ var _this2$boundSubscribe;
86
+ (_this2$boundSubscribe = _this2.boundSubscribers.get(stateKey)) === null || _this2$boundSubscribe === void 0 || _this2$boundSubscribe["delete"](callback);
87
+ };
88
+ }
89
+ }, {
90
+ key: "handleStateEvent",
91
+ value: function handleStateEvent(event) {
92
+ var _this3 = this;
93
+ if (event.type === "STATE_SNAPSHOT") {
94
+ if (event.snapshot && _typeof(event.snapshot) === "object") {
95
+ Object.entries(event.snapshot).forEach(function (_ref) {
96
+ var _ref2 = _slicedToArray(_ref, 2),
97
+ stateKey = _ref2[0],
98
+ stateData = _ref2[1];
99
+ _this3.setState(stateKey, stateData);
100
+ });
101
+ }
102
+ } else if (event.type === "STATE_DELTA") {
103
+ if (event.delta && Array.isArray(event.delta)) {
104
+ var firstDelta = event.delta[0];
105
+ if (firstDelta && firstDelta.path) {
106
+ var pathParts = firstDelta.path.split("/");
107
+ if (pathParts.length > 1) {
108
+ var stateKey = pathParts[1];
109
+ var currentState = this.getState(stateKey);
110
+ if (currentState) {
111
+ try {
112
+ var originalStructure = _defineProperty({}, stateKey, currentState);
113
+ var updatedStructure = applyJsonPatch(originalStructure, event.delta);
114
+ var updatedState = updatedStructure[stateKey];
115
+ this.setState(stateKey, updatedState);
116
+ } catch (error) {
117
+ console.error("STATE_DELTA\u5904\u7406\u5931\u8D25 [".concat(stateKey, "]:"), error);
118
+ }
119
+ } else {
120
+ console.warn("STATE_DELTA: \u627E\u4E0D\u5230\u72B6\u6001 [".concat(stateKey, "]\uFF0C\u53EF\u80FD\u9700\u8981\u5148\u63A5\u6536STATE_SNAPSHOT"));
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+ }
127
+ }, {
128
+ key: "clear",
129
+ value: function clear() {
130
+ this.states = {};
131
+ this.latestSubscribers.clear();
132
+ this.boundSubscribers.clear();
133
+ this.currentStateKey = null;
134
+ }
135
+ }, {
136
+ key: "setState",
137
+ value: function setState(stateKey, state) {
138
+ this.states[stateKey] = state;
139
+ this.currentStateKey = stateKey;
140
+ this.notifySubscribers(stateKey, state);
141
+ }
142
+ }, {
143
+ key: "notifySubscribers",
144
+ value: function notifySubscribers(stateKey, state) {
145
+ var boundSubs = this.boundSubscribers.get(stateKey);
146
+ if (boundSubs) {
147
+ boundSubs.forEach(function (callback) {
148
+ try {
149
+ callback(state);
150
+ } catch (error) {
151
+ console.error("\u7ED1\u5B9A\u72B6\u6001\u8BA2\u9605\u56DE\u8C03\u6267\u884C\u5931\u8D25 [".concat(stateKey, "]:"), error);
152
+ }
153
+ });
154
+ }
155
+ this.latestSubscribers.forEach(function (callback) {
156
+ try {
157
+ callback(state, stateKey);
158
+ } catch (error) {
159
+ console.error("\u6700\u65B0\u72B6\u6001\u8BA2\u9605\u56DE\u8C03\u6267\u884C\u5931\u8D25 [".concat(stateKey, "]:"), error);
160
+ }
161
+ });
162
+ }
163
+ }]);
164
+ }();
165
+ var stateManager = new StateManagerImpl();
166
+
167
+ export { StateManagerImpl, stateManager };
168
+ //# sourceMappingURL=state-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-manager.js","sources":["../../../../../../pro-components/chat/chat-engine/core/adapters/agui/state-manager.ts"],"sourcesContent":["import { applyJsonPatch } from '../../utils';\n\n/**\n * 状态管理器\n * 支持两种订阅模式:\n * 1. 最新状态模式:订阅最新状态,适用于状态覆盖场景\n * 2. 绑定状态模式:订阅特定stateKey,适用于状态隔离场景\n */\n\nexport interface StateManager {\n /**\n * 获取当前活跃的状态key\n */\n getCurrentStateKey: () => string | null;\n /**\n * 获取当前状态(基于当前状态key)\n */\n getCurrentState: () => any;\n /**\n * 获取指定状态key的状态\n */\n getState: (stateKey: string) => any;\n /**\n * 获取所有状态keys\n */\n getAllStateKeys: () => string[];\n /**\n * 订阅状态变化\n * @param callback 状态变化回调函数\n * @param targetStateKey 可选:指定订阅特定的stateKey,不传则订阅当前活跃状态\n */\n subscribe: (callback: (state: any, stateKey: string) => void, targetStateKey?: string) => () => void;\n /**\n * 处理AG-UI状态事件,自动从事件中提取stateKey\n */\n handleStateEvent: (event: { type: string; snapshot?: any; delta?: any[] }) => void;\n /**\n * 清理所有状态和订阅\n */\n clear: () => void;\n}\n\nexport class StateManagerImpl implements StateManager {\n private states: Record<string, any> = {};\n\n private currentStateKey: string | null = null;\n\n // 最新状态订阅者(覆盖模式)\n private latestSubscribers: Set<(state: any, stateKey: string) => void> = new Set();\n\n // 绑定状态订阅者(隔离模式)\n private boundSubscribers: Map<string, Set<(state: any) => void>> = new Map();\n\n /**\n * 获取当前活跃的状态key\n */\n getCurrentStateKey(): string | null {\n return this.currentStateKey;\n }\n\n /**\n * 获取当前状态(基于当前状态key)\n */\n getCurrentState(): any {\n if (!this.currentStateKey) return null;\n return this.states[this.currentStateKey];\n }\n\n /**\n * 获取指定状态key的状态\n */\n getState(stateKey: string): any {\n return this.states[stateKey];\n }\n\n /**\n * 获取所有状态keys\n */\n getAllStateKeys(): string[] {\n return Object.keys(this.states);\n }\n\n /**\n * 订阅最新状态(覆盖模式)\n * 适用于只有一个组件,每轮都用新状态更新的场景\n */\n subscribeToLatest(callback: (state: any, stateKey: string) => void): () => void {\n this.latestSubscribers.add(callback);\n // 立即调用一次当前状态\n if (this.currentStateKey && this.states[this.currentStateKey]) {\n try {\n callback(this.states[this.currentStateKey], this.currentStateKey);\n } catch (error) {\n console.error(`最新状态订阅回调执行失败 [${this.currentStateKey}]:`, error);\n }\n }\n\n return () => this.latestSubscribers.delete(callback);\n }\n\n /**\n * 订阅状态变化(实现 StateManager 接口)\n * @param callback 状态变化回调函数\n * @param targetStateKey 可选:指定订阅特定的stateKey,不传则订阅当前活跃状态\n */\n subscribe(callback: (state: any, stateKey: string) => void, targetStateKey?: string): () => void {\n if (targetStateKey) {\n // 绑定模式:订阅特定 stateKey\n return this.subscribeToState(targetStateKey, (state) => callback(state, targetStateKey));\n }\n // 最新模式:订阅最新状态\n return this.subscribeToLatest(callback);\n }\n\n /**\n * 订阅特定状态(隔离模式)\n * 适用于每轮对话创建新组件,各自保持独立状态的场景\n */\n subscribeToState(stateKey: string, callback: (state: any) => void): () => void {\n if (!this.boundSubscribers.has(stateKey)) {\n this.boundSubscribers.set(stateKey, new Set());\n }\n this.boundSubscribers.get(stateKey)!.add(callback);\n\n // 立即调用一次(如果状态存在)\n if (this.states[stateKey]) {\n try {\n callback(this.states[stateKey]);\n } catch (error) {\n console.error(`绑定状态订阅回调执行失败 [${stateKey}]:`, error);\n }\n }\n\n return () => {\n this.boundSubscribers.get(stateKey)?.delete(callback);\n };\n }\n\n /**\n * 处理AG-UI状态事件\n * 自动从事件中提取stateKey,无需外部传递\n */\n handleStateEvent(event: { type: string; snapshot?: any; delta?: any[] }): void {\n if (event.type === 'STATE_SNAPSHOT') {\n // 处理STATE_SNAPSHOT:立即更新\n if (event.snapshot && typeof event.snapshot === 'object') {\n Object.entries(event.snapshot).forEach(([stateKey, stateData]) => {\n this.setState(stateKey, stateData);\n });\n }\n } else if (event.type === 'STATE_DELTA') {\n // 处理STATE_DELTA:立即更新\n if (event.delta && Array.isArray(event.delta)) {\n // 从第一个delta操作的路径中提取stateKey\n const firstDelta = event.delta[0];\n if (firstDelta && firstDelta.path) {\n const pathParts = firstDelta.path.split('/');\n if (pathParts.length > 1) {\n const stateKey = pathParts[1]; // 路径格式: /stateKey/items/...\n const currentState = this.getState(stateKey);\n\n if (currentState) {\n try {\n // 重新构造原始结构以应用JSON Patch\n const originalStructure = { [stateKey]: currentState };\n const updatedStructure = applyJsonPatch(originalStructure, event.delta);\n const updatedState = updatedStructure[stateKey];\n this.setState(stateKey, updatedState);\n } catch (error) {\n console.error(`STATE_DELTA处理失败 [${stateKey}]:`, error);\n }\n } else {\n console.warn(`STATE_DELTA: 找不到状态 [${stateKey}],可能需要先接收STATE_SNAPSHOT`);\n }\n }\n }\n }\n }\n }\n\n // 清理所有状态和订阅\n clear(): void {\n // 清理状态和订阅\n this.states = {};\n this.latestSubscribers.clear();\n this.boundSubscribers.clear();\n this.currentStateKey = null;\n }\n\n /**\n * 设置状态并立即通知订阅者\n */\n private setState(stateKey: string, state: any): void {\n // 更新状态\n this.states[stateKey] = state;\n this.currentStateKey = stateKey;\n this.notifySubscribers(stateKey, state);\n }\n\n /**\n * 通知订阅者\n */\n private notifySubscribers(stateKey: string, state: any): void {\n // 通知绑定订阅者(只通知对应stateKey的订阅者)\n const boundSubs = this.boundSubscribers.get(stateKey);\n if (boundSubs) {\n boundSubs.forEach((callback) => {\n try {\n callback(state);\n } catch (error) {\n console.error(`绑定状态订阅回调执行失败 [${stateKey}]:`, error);\n }\n });\n }\n\n // 通知最新状态订阅者(所有订阅者都收到最新状态)\n this.latestSubscribers.forEach((callback) => {\n try {\n callback(state, stateKey);\n } catch (error) {\n console.error(`最新状态订阅回调执行失败 [${stateKey}]:`, error);\n }\n });\n }\n}\n\n// 全局单例\nexport const stateManager = new StateManagerImpl();\n"],"names":["StateManagerImpl","_classCallCheck","_defineProperty","Set","Map","_createClass","key","value","getCurrentStateKey","currentStateKey","getCurrentState","states","getState","stateKey","getAllStateKeys","Object","keys","subscribeToLatest","callback","_this","latestSubscribers","add","error","console","concat","subscribe","targetStateKey","subscribeToState","state","_this2","boundSubscribers","has","set","get","_this2$boundSubscribe","handleStateEvent","event","_this3","type","snapshot","_typeof","entries","forEach","_ref","_ref2","_slicedToArray","stateData","setState","delta","Array","isArray","firstDelta","path","pathParts","split","length","currentState","originalStructure","updatedStructure","applyJsonPatch","updatedState","warn","clear","notifySubscribers","boundSubs","stateManager"],"mappings":"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"}