@ai-group/chat-sdk 3.6.12 → 3.7.0

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 (119) hide show
  1. package/dist/cjs/components/XAdkChatbot/index.js +2 -2
  2. package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
  3. package/dist/cjs/components/XAdkProvider/index.js +3 -3
  4. package/dist/cjs/components/XAdkProvider/index.js.map +2 -2
  5. package/dist/cjs/core/index.d.ts +2 -0
  6. package/dist/cjs/core/index.js +26 -0
  7. package/dist/cjs/core/index.js.map +7 -0
  8. package/dist/cjs/core/protocol/index.d.ts +3 -0
  9. package/dist/cjs/core/protocol/index.js +28 -0
  10. package/dist/cjs/core/protocol/index.js.map +7 -0
  11. package/dist/cjs/core/protocol/messages.d.ts +55 -0
  12. package/dist/cjs/core/protocol/messages.js +307 -0
  13. package/dist/cjs/core/protocol/messages.js.map +7 -0
  14. package/dist/cjs/core/protocol/parts.d.ts +24 -0
  15. package/dist/cjs/core/protocol/parts.js +106 -0
  16. package/dist/cjs/core/protocol/parts.js.map +7 -0
  17. package/dist/cjs/core/protocol/types.d.ts +57 -0
  18. package/dist/cjs/core/protocol/types.js +18 -0
  19. package/dist/cjs/core/protocol/types.js.map +7 -0
  20. package/dist/cjs/core/runtime/createAdkConversationController.d.ts +8 -0
  21. package/dist/cjs/core/runtime/createAdkConversationController.js +424 -0
  22. package/dist/cjs/core/runtime/createAdkConversationController.js.map +7 -0
  23. package/dist/cjs/core/runtime/index.d.ts +2 -0
  24. package/dist/cjs/core/runtime/index.js +26 -0
  25. package/dist/cjs/core/runtime/index.js.map +7 -0
  26. package/dist/cjs/core/runtime/types.d.ts +130 -0
  27. package/dist/cjs/core/runtime/types.js +18 -0
  28. package/dist/cjs/core/runtime/types.js.map +7 -0
  29. package/dist/{esm/utils/umdEntry.d.ts → cjs/entries/umd.d.ts} +7 -0
  30. package/dist/cjs/{utils/umdEntry.js → entries/umd.js} +19 -9
  31. package/dist/cjs/entries/umd.js.map +7 -0
  32. package/dist/cjs/index.d.ts +6 -1
  33. package/dist/cjs/index.js +19 -11
  34. package/dist/cjs/index.js.map +3 -3
  35. package/dist/cjs/presets/xgroup/index.d.ts +4 -0
  36. package/dist/cjs/presets/xgroup/index.js +30 -0
  37. package/dist/cjs/presets/xgroup/index.js.map +7 -0
  38. package/dist/cjs/presets/xgroup/preset.d.ts +15 -0
  39. package/dist/cjs/presets/xgroup/preset.js +69 -0
  40. package/dist/cjs/presets/xgroup/preset.js.map +7 -0
  41. package/dist/cjs/presets/xgroup/strategies.d.ts +8 -0
  42. package/dist/cjs/presets/xgroup/strategies.js +53 -0
  43. package/dist/cjs/presets/xgroup/strategies.js.map +7 -0
  44. package/dist/cjs/presets/xgroup/transport.d.ts +15 -0
  45. package/dist/cjs/presets/xgroup/transport.js +183 -0
  46. package/dist/cjs/presets/xgroup/transport.js.map +7 -0
  47. package/dist/cjs/presets/xgroup/upload.d.ts +8 -0
  48. package/dist/cjs/presets/xgroup/upload.js +65 -0
  49. package/dist/cjs/presets/xgroup/upload.js.map +7 -0
  50. package/dist/cjs/react/index.d.ts +6 -0
  51. package/dist/cjs/react/index.js +53 -0
  52. package/dist/cjs/react/index.js.map +7 -0
  53. package/dist/cjs/react/useAdkConversation.d.ts +27 -0
  54. package/dist/cjs/react/useAdkConversation.js +69 -0
  55. package/dist/cjs/react/useAdkConversation.js.map +7 -0
  56. package/dist/esm/components/XAdkChatbot/index.js +1 -1
  57. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  58. package/dist/esm/components/XAdkProvider/index.js +1 -1
  59. package/dist/esm/components/XAdkProvider/index.js.map +1 -1
  60. package/dist/esm/core/index.d.ts +2 -0
  61. package/dist/esm/core/index.js +3 -0
  62. package/dist/esm/core/index.js.map +1 -0
  63. package/dist/esm/core/protocol/index.d.ts +3 -0
  64. package/dist/esm/core/protocol/index.js +4 -0
  65. package/dist/esm/core/protocol/index.js.map +1 -0
  66. package/dist/esm/core/protocol/messages.d.ts +55 -0
  67. package/dist/esm/core/protocol/messages.js +315 -0
  68. package/dist/esm/core/protocol/messages.js.map +1 -0
  69. package/dist/esm/core/protocol/parts.d.ts +24 -0
  70. package/dist/esm/core/protocol/parts.js +100 -0
  71. package/dist/esm/core/protocol/parts.js.map +1 -0
  72. package/dist/esm/core/protocol/types.d.ts +57 -0
  73. package/dist/esm/core/protocol/types.js +2 -0
  74. package/dist/esm/core/protocol/types.js.map +1 -0
  75. package/dist/esm/core/runtime/createAdkConversationController.d.ts +8 -0
  76. package/dist/esm/core/runtime/createAdkConversationController.js +742 -0
  77. package/dist/esm/core/runtime/createAdkConversationController.js.map +1 -0
  78. package/dist/esm/core/runtime/index.d.ts +2 -0
  79. package/dist/esm/core/runtime/index.js +3 -0
  80. package/dist/esm/core/runtime/index.js.map +1 -0
  81. package/dist/esm/core/runtime/types.d.ts +130 -0
  82. package/dist/esm/core/runtime/types.js +2 -0
  83. package/dist/esm/core/runtime/types.js.map +1 -0
  84. package/dist/{cjs/utils/umdEntry.d.ts → esm/entries/umd.d.ts} +7 -0
  85. package/dist/esm/{utils/umdEntry.js → entries/umd.js} +10 -1
  86. package/dist/esm/entries/umd.js.map +1 -0
  87. package/dist/esm/index.d.ts +6 -1
  88. package/dist/esm/index.js +6 -1
  89. package/dist/esm/index.js.map +1 -1
  90. package/dist/esm/presets/xgroup/index.d.ts +4 -0
  91. package/dist/esm/presets/xgroup/index.js +5 -0
  92. package/dist/esm/presets/xgroup/index.js.map +1 -0
  93. package/dist/esm/presets/xgroup/preset.d.ts +15 -0
  94. package/dist/esm/presets/xgroup/preset.js +44 -0
  95. package/dist/esm/presets/xgroup/preset.js.map +1 -0
  96. package/dist/esm/presets/xgroup/strategies.d.ts +8 -0
  97. package/dist/esm/presets/xgroup/strategies.js +30 -0
  98. package/dist/esm/presets/xgroup/strategies.js.map +1 -0
  99. package/dist/esm/presets/xgroup/transport.d.ts +15 -0
  100. package/dist/esm/presets/xgroup/transport.js +322 -0
  101. package/dist/esm/presets/xgroup/transport.js.map +1 -0
  102. package/dist/esm/presets/xgroup/upload.d.ts +8 -0
  103. package/dist/esm/presets/{xGroupAdk.js → xgroup/upload.js} +9 -63
  104. package/dist/esm/presets/xgroup/upload.js.map +1 -0
  105. package/dist/esm/react/index.d.ts +6 -0
  106. package/dist/esm/react/index.js +5 -0
  107. package/dist/esm/react/index.js.map +1 -0
  108. package/dist/esm/react/useAdkConversation.d.ts +27 -0
  109. package/dist/esm/react/useAdkConversation.js +53 -0
  110. package/dist/esm/react/useAdkConversation.js.map +1 -0
  111. package/dist/umd/chat-sdk.min.js +1 -1
  112. package/package.json +36 -2
  113. package/dist/cjs/presets/xGroupAdk.d.ts +0 -20
  114. package/dist/cjs/presets/xGroupAdk.js +0 -130
  115. package/dist/cjs/presets/xGroupAdk.js.map +0 -7
  116. package/dist/cjs/utils/umdEntry.js.map +0 -7
  117. package/dist/esm/presets/xGroupAdk.d.ts +0 -20
  118. package/dist/esm/presets/xGroupAdk.js.map +0 -1
  119. package/dist/esm/utils/umdEntry.js.map +0 -1
@@ -0,0 +1,322 @@
1
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
+ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
3
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
4
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
5
+ var _excluded = ["invocationId", "isLike"];
6
+ import { EventStreamContentType, fetchEventSource } from "@microsoft/fetch-event-source";
7
+ import { API_SUCCESS_CODE, SESSION_PAGE_SIZE } from "../../constants";
8
+ import { addFeedback, closeSession as _closeSession, fetchAppConfig as _fetchAppConfig, fetchSessionDetail, fetchSessionList, updateSessionTitle as _updateSessionTitle } from "../../services/api";
9
+ import { safeJsonParse } from "../../utils";
10
+ /** 支持传入 token 字符串或 token getter,便于业务侧刷新 token 后无需重建 transport。 */
11
+ var getTokenValue = function getTokenValue(token) {
12
+ return typeof token === "function" ? token() : token;
13
+ };
14
+
15
+ /**
16
+ * 兼容后端新旧两种 stream 包装格式。
17
+ * 新格式通常是 { data, result },runtime 只消费标准 ADK Event。
18
+ */
19
+ var normalizeStreamEvent = function normalizeStreamEvent(rawData) {
20
+ if (rawData !== null && rawData !== void 0 && rawData.data && rawData !== null && rawData !== void 0 && rawData.result) {
21
+ return _objectSpread(_objectSpread({}, rawData.data), {}, {
22
+ content: rawData.data,
23
+ invocationId: rawData.result.invocationId,
24
+ sessionId: rawData.result.sessionId,
25
+ id: rawData.data.id || rawData.result.id || rawData.result.eventId || rawData.result.invocationId
26
+ });
27
+ }
28
+ return rawData;
29
+ };
30
+
31
+ /**
32
+ * 众安信科 openApi 默认 transport。
33
+ *
34
+ * 这层只负责把 SDK 标准 transport 接口映射到当前网关接口;
35
+ * 其它业务项目不要复制 useADKChat,只需要实现自己的 transport 即可。
36
+ */
37
+ export var createXGroupOpenApiTransport = function createXGroupOpenApiTransport(_ref) {
38
+ var url = _ref.url,
39
+ appNo = _ref.appNo,
40
+ token = _ref.token,
41
+ _ref$pageSize = _ref.pageSize,
42
+ pageSize = _ref$pageSize === void 0 ? SESSION_PAGE_SIZE : _ref$pageSize,
43
+ onAuthError = _ref.onAuthError;
44
+ var getAuthHeaders = function getAuthHeaders() {
45
+ var tokenValue = getTokenValue(token);
46
+ return tokenValue ? {
47
+ Authorization: "Bearer ".concat(tokenValue)
48
+ } : {};
49
+ };
50
+ return {
51
+ fetchAppConfig: function () {
52
+ var _fetchAppConfig2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
53
+ var _yield$_fetchAppConfi, data, result;
54
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
55
+ while (1) switch (_context.prev = _context.next) {
56
+ case 0:
57
+ _context.next = 2;
58
+ return _fetchAppConfig({
59
+ url: url,
60
+ appNo: appNo
61
+ });
62
+ case 2:
63
+ _yield$_fetchAppConfi = _context.sent;
64
+ data = _yield$_fetchAppConfi.data;
65
+ result = _yield$_fetchAppConfi.result;
66
+ if (!((result === null || result === void 0 ? void 0 : result.code) !== API_SUCCESS_CODE)) {
67
+ _context.next = 7;
68
+ break;
69
+ }
70
+ throw Object.assign(new Error((result === null || result === void 0 ? void 0 : result.message) || "获取应用配置失败"), {
71
+ code: result === null || result === void 0 ? void 0 : result.code,
72
+ raw: result
73
+ });
74
+ case 7:
75
+ return _context.abrupt("return", data);
76
+ case 8:
77
+ case "end":
78
+ return _context.stop();
79
+ }
80
+ }, _callee);
81
+ }));
82
+ function fetchAppConfig() {
83
+ return _fetchAppConfig2.apply(this, arguments);
84
+ }
85
+ return fetchAppConfig;
86
+ }(),
87
+ fetchSessions: function () {
88
+ var _fetchSessions = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(params) {
89
+ var _yield$fetchSessionLi, _yield$fetchSessionLi2, data, pagination, result;
90
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
91
+ while (1) switch (_context2.prev = _context2.next) {
92
+ case 0:
93
+ _context2.next = 2;
94
+ return fetchSessionList({
95
+ url: url,
96
+ appNo: appNo,
97
+ token: getTokenValue(token) || "",
98
+ pageNum: (params === null || params === void 0 ? void 0 : params.pageNum) || 1,
99
+ pageSize: (params === null || params === void 0 ? void 0 : params.pageSize) || pageSize
100
+ });
101
+ case 2:
102
+ _yield$fetchSessionLi = _context2.sent;
103
+ _yield$fetchSessionLi2 = _yield$fetchSessionLi.data;
104
+ data = _yield$fetchSessionLi2 === void 0 ? [] : _yield$fetchSessionLi2;
105
+ pagination = _yield$fetchSessionLi.pagination;
106
+ result = _yield$fetchSessionLi.result;
107
+ if (!((result === null || result === void 0 ? void 0 : result.code) !== API_SUCCESS_CODE)) {
108
+ _context2.next = 9;
109
+ break;
110
+ }
111
+ throw Object.assign(new Error((result === null || result === void 0 ? void 0 : result.message) || "获取会话列表失败"), {
112
+ code: result === null || result === void 0 ? void 0 : result.code,
113
+ raw: result
114
+ });
115
+ case 9:
116
+ return _context2.abrupt("return", {
117
+ data: data,
118
+ pagination: pagination
119
+ });
120
+ case 10:
121
+ case "end":
122
+ return _context2.stop();
123
+ }
124
+ }, _callee2);
125
+ }));
126
+ function fetchSessions(_x) {
127
+ return _fetchSessions.apply(this, arguments);
128
+ }
129
+ return fetchSessions;
130
+ }(),
131
+ fetchSessionEvents: function () {
132
+ var _fetchSessionEvents = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(sessionId) {
133
+ var _yield$fetchSessionDe, _yield$fetchSessionDe2, data, result;
134
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
135
+ while (1) switch (_context3.prev = _context3.next) {
136
+ case 0:
137
+ _context3.next = 2;
138
+ return fetchSessionDetail({
139
+ url: url,
140
+ appNo: appNo,
141
+ sessionId: sessionId,
142
+ token: getTokenValue(token) || ""
143
+ });
144
+ case 2:
145
+ _yield$fetchSessionDe = _context3.sent;
146
+ _yield$fetchSessionDe2 = _yield$fetchSessionDe.data;
147
+ data = _yield$fetchSessionDe2 === void 0 ? [] : _yield$fetchSessionDe2;
148
+ result = _yield$fetchSessionDe.result;
149
+ if (!((result === null || result === void 0 ? void 0 : result.code) !== API_SUCCESS_CODE)) {
150
+ _context3.next = 8;
151
+ break;
152
+ }
153
+ throw Object.assign(new Error((result === null || result === void 0 ? void 0 : result.message) || "获取会话详情失败"), {
154
+ code: result === null || result === void 0 ? void 0 : result.code,
155
+ raw: result
156
+ });
157
+ case 8:
158
+ return _context3.abrupt("return", data);
159
+ case 9:
160
+ case "end":
161
+ return _context3.stop();
162
+ }
163
+ }, _callee3);
164
+ }));
165
+ function fetchSessionEvents(_x2) {
166
+ return _fetchSessionEvents.apply(this, arguments);
167
+ }
168
+ return fetchSessionEvents;
169
+ }(),
170
+ sendMessageStreaming: function sendMessageStreaming(payload, handlers) {
171
+ return new Promise(function (resolve, reject) {
172
+ void fetchEventSource("".concat(url, "/api/gateway-web/openApi/v1/aizt/app/").concat(appNo, "/sendMsgStreaming"), {
173
+ method: "POST",
174
+ signal: handlers.signal,
175
+ body: JSON.stringify(payload),
176
+ openWhenHidden: true,
177
+ headers: _objectSpread({
178
+ "Content-Type": "application/json",
179
+ "Cache-Control": "no-cache",
180
+ stream: payload.stream === false ? "false" : "true"
181
+ }, getAuthHeaders()),
182
+ onopen: function onopen(response) {
183
+ return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
184
+ var _handlers$onOpen;
185
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
186
+ while (1) switch (_context4.prev = _context4.next) {
187
+ case 0:
188
+ (_handlers$onOpen = handlers.onOpen) === null || _handlers$onOpen === void 0 || _handlers$onOpen.call(handlers, response);
189
+ if (!(response.ok && response.headers.get("content-type") === EventStreamContentType)) {
190
+ _context4.next = 3;
191
+ break;
192
+ }
193
+ return _context4.abrupt("return");
194
+ case 3:
195
+ if (response.status === 401 || response.status === 403) {
196
+ onAuthError === null || onAuthError === void 0 || onAuthError(response);
197
+ }
198
+ throw Object.assign(new Error("\u6D41\u5F0F\u8BF7\u6C42\u5931\u8D25 (".concat(response.status, ")")), {
199
+ status: response.status
200
+ });
201
+ case 5:
202
+ case "end":
203
+ return _context4.stop();
204
+ }
205
+ }, _callee4);
206
+ }))();
207
+ },
208
+ onmessage: function onmessage(event) {
209
+ var rawData = safeJsonParse(event.data, {});
210
+ var chunk = normalizeStreamEvent(rawData);
211
+ if (chunk.error) {
212
+ var _handlers$onError;
213
+ // transport 不直接弹 UI,错误交给 runtime callbacks 或业务层处理。
214
+ (_handlers$onError = handlers.onError) === null || _handlers$onError === void 0 || _handlers$onError.call(handlers, chunk.error);
215
+ return;
216
+ }
217
+ handlers.onEvent(chunk);
218
+ },
219
+ onclose: function onclose() {
220
+ var _handlers$onClose;
221
+ (_handlers$onClose = handlers.onClose) === null || _handlers$onClose === void 0 || _handlers$onClose.call(handlers);
222
+ resolve();
223
+ },
224
+ onerror: function onerror(error) {
225
+ var _handlers$onError2;
226
+ (_handlers$onError2 = handlers.onError) === null || _handlers$onError2 === void 0 || _handlers$onError2.call(handlers, error);
227
+ reject(error);
228
+ throw error;
229
+ }
230
+ });
231
+ });
232
+ },
233
+ closeSession: function () {
234
+ var _closeSession2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(sessionId) {
235
+ var _yield$_closeSession, result;
236
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
237
+ while (1) switch (_context5.prev = _context5.next) {
238
+ case 0:
239
+ _context5.next = 2;
240
+ return _closeSession({
241
+ url: url,
242
+ appNo: appNo,
243
+ sessionId: sessionId,
244
+ token: getTokenValue(token) || ""
245
+ });
246
+ case 2:
247
+ _yield$_closeSession = _context5.sent;
248
+ result = _yield$_closeSession.result;
249
+ return _context5.abrupt("return", (result === null || result === void 0 ? void 0 : result.code) === API_SUCCESS_CODE);
250
+ case 5:
251
+ case "end":
252
+ return _context5.stop();
253
+ }
254
+ }, _callee5);
255
+ }));
256
+ function closeSession(_x3) {
257
+ return _closeSession2.apply(this, arguments);
258
+ }
259
+ return closeSession;
260
+ }(),
261
+ updateSessionTitle: function () {
262
+ var _updateSessionTitle2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(sessionId, title) {
263
+ var _yield$_updateSession, result;
264
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
265
+ while (1) switch (_context6.prev = _context6.next) {
266
+ case 0:
267
+ _context6.next = 2;
268
+ return _updateSessionTitle({
269
+ url: url,
270
+ appNo: appNo,
271
+ sessionId: sessionId,
272
+ title: title,
273
+ token: getTokenValue(token) || ""
274
+ });
275
+ case 2:
276
+ _yield$_updateSession = _context6.sent;
277
+ result = _yield$_updateSession.result;
278
+ return _context6.abrupt("return", (result === null || result === void 0 ? void 0 : result.code) === API_SUCCESS_CODE);
279
+ case 5:
280
+ case "end":
281
+ return _context6.stop();
282
+ }
283
+ }, _callee6);
284
+ }));
285
+ function updateSessionTitle(_x4, _x5) {
286
+ return _updateSessionTitle2.apply(this, arguments);
287
+ }
288
+ return updateSessionTitle;
289
+ }(),
290
+ feedback: function () {
291
+ var _feedback = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(_ref2) {
292
+ var invocationId, isLike, feedbackData, _yield$addFeedback, result;
293
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
294
+ while (1) switch (_context7.prev = _context7.next) {
295
+ case 0:
296
+ invocationId = _ref2.invocationId, isLike = _ref2.isLike, feedbackData = _objectWithoutProperties(_ref2, _excluded);
297
+ _context7.next = 3;
298
+ return addFeedback(_objectSpread({
299
+ url: url,
300
+ appNo: appNo,
301
+ token: getTokenValue(token) || "",
302
+ requestId: invocationId,
303
+ isLike: isLike
304
+ }, feedbackData));
305
+ case 3:
306
+ _yield$addFeedback = _context7.sent;
307
+ result = _yield$addFeedback.result;
308
+ return _context7.abrupt("return", (result === null || result === void 0 ? void 0 : result.code) === API_SUCCESS_CODE);
309
+ case 6:
310
+ case "end":
311
+ return _context7.stop();
312
+ }
313
+ }, _callee7);
314
+ }));
315
+ function feedback(_x6) {
316
+ return _feedback.apply(this, arguments);
317
+ }
318
+ return feedback;
319
+ }()
320
+ };
321
+ };
322
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EventStreamContentType","fetchEventSource","API_SUCCESS_CODE","SESSION_PAGE_SIZE","addFeedback","closeSession","fetchAppConfig","fetchSessionDetail","fetchSessionList","updateSessionTitle","safeJsonParse","getTokenValue","token","normalizeStreamEvent","rawData","data","result","_objectSpread","content","invocationId","sessionId","id","eventId","createXGroupOpenApiTransport","_ref","url","appNo","_ref$pageSize","pageSize","onAuthError","getAuthHeaders","tokenValue","Authorization","concat","_fetchAppConfig2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_yield$_fetchAppConfi","wrap","_callee$","_context","prev","next","sent","code","Object","assign","Error","message","raw","abrupt","stop","apply","arguments","fetchSessions","_fetchSessions","_callee2","params","_yield$fetchSessionLi","_yield$fetchSessionLi2","pagination","_callee2$","_context2","pageNum","_x","fetchSessionEvents","_fetchSessionEvents","_callee3","_yield$fetchSessionDe","_yield$fetchSessionDe2","_callee3$","_context3","_x2","sendMessageStreaming","payload","handlers","Promise","resolve","reject","method","signal","body","JSON","stringify","openWhenHidden","headers","stream","onopen","response","_callee4","_handlers$onOpen","_callee4$","_context4","onOpen","call","ok","get","status","onmessage","event","chunk","error","_handlers$onError","onError","onEvent","onclose","_handlers$onClose","onClose","onerror","_handlers$onError2","_closeSession2","_callee5","_yield$_closeSession","_callee5$","_context5","_x3","_updateSessionTitle2","_callee6","title","_yield$_updateSession","_callee6$","_context6","_x4","_x5","feedback","_feedback","_callee7","_ref2","isLike","feedbackData","_yield$addFeedback","_callee7$","_context7","_objectWithoutProperties","_excluded","requestId","_x6"],"sources":["../../../../src/presets/xgroup/transport.ts"],"sourcesContent":["import {\n EventStreamContentType,\n fetchEventSource,\n} from \"@microsoft/fetch-event-source\";\nimport { API_SUCCESS_CODE, SESSION_PAGE_SIZE } from \"@/constants\";\nimport {\n addFeedback,\n closeSession,\n fetchAppConfig,\n fetchSessionDetail,\n fetchSessionList,\n updateSessionTitle,\n} from \"@/services/api\";\nimport type { Event } from \"@/types\";\nimport { safeJsonParse } from \"@/utils\";\nimport type { AdkChatTransport } from \"@/core/runtime\";\n\nexport interface XGroupOpenApiTransportOptions {\n url: string;\n appNo: string;\n token?: string | (() => string | undefined);\n pageSize?: number;\n onAuthError?: (response: Response) => void;\n}\n\n/** 支持传入 token 字符串或 token getter,便于业务侧刷新 token 后无需重建 transport。 */\nconst getTokenValue = (token?: string | (() => string | undefined)) =>\n typeof token === \"function\" ? token() : token;\n\n/**\n * 兼容后端新旧两种 stream 包装格式。\n * 新格式通常是 { data, result },runtime 只消费标准 ADK Event。\n */\nconst normalizeStreamEvent = (rawData: any): Event => {\n if (rawData?.data && rawData?.result) {\n return {\n ...rawData.data,\n content: rawData.data,\n invocationId: rawData.result.invocationId,\n sessionId: rawData.result.sessionId,\n id:\n rawData.data.id ||\n rawData.result.id ||\n rawData.result.eventId ||\n rawData.result.invocationId,\n };\n }\n return rawData;\n};\n\n/**\n * 众安信科 openApi 默认 transport。\n *\n * 这层只负责把 SDK 标准 transport 接口映射到当前网关接口;\n * 其它业务项目不要复制 useADKChat,只需要实现自己的 transport 即可。\n */\nexport const createXGroupOpenApiTransport = ({\n url,\n appNo,\n token,\n pageSize = SESSION_PAGE_SIZE,\n onAuthError,\n}: XGroupOpenApiTransportOptions): AdkChatTransport => {\n const getAuthHeaders = () => {\n const tokenValue = getTokenValue(token);\n return tokenValue ? { Authorization: `Bearer ${tokenValue}` } : {};\n };\n\n return {\n fetchAppConfig: async () => {\n const { data, result } = await fetchAppConfig({ url, appNo });\n if (result?.code !== API_SUCCESS_CODE) {\n throw Object.assign(new Error(result?.message || \"获取应用配置失败\"), {\n code: result?.code,\n raw: result,\n });\n }\n return data as any;\n },\n fetchSessions: async (params) => {\n const { data = [], pagination, result } = await fetchSessionList({\n url,\n appNo,\n token: getTokenValue(token) || \"\",\n pageNum: params?.pageNum || 1,\n pageSize: params?.pageSize || pageSize,\n });\n if (result?.code !== API_SUCCESS_CODE) {\n throw Object.assign(new Error(result?.message || \"获取会话列表失败\"), {\n code: result?.code,\n raw: result,\n });\n }\n return { data: data as any, pagination };\n },\n fetchSessionEvents: async (sessionId) => {\n const { data = [], result } = await fetchSessionDetail({\n url,\n appNo,\n sessionId,\n token: getTokenValue(token) || \"\",\n });\n if (result?.code !== API_SUCCESS_CODE) {\n throw Object.assign(new Error(result?.message || \"获取会话详情失败\"), {\n code: result?.code,\n raw: result,\n });\n }\n return data as Event[];\n },\n sendMessageStreaming: (payload, handlers) =>\n new Promise<void>((resolve, reject) => {\n void fetchEventSource(\n `${url}/api/gateway-web/openApi/v1/aizt/app/${appNo}/sendMsgStreaming`,\n {\n method: \"POST\",\n signal: handlers.signal,\n body: JSON.stringify(payload),\n openWhenHidden: true,\n headers: {\n \"Content-Type\": \"application/json\",\n \"Cache-Control\": \"no-cache\",\n stream: payload.stream === false ? \"false\" : \"true\",\n ...getAuthHeaders(),\n } as Record<string, string>,\n async onopen(response) {\n handlers.onOpen?.(response);\n if (\n response.ok &&\n response.headers.get(\"content-type\") === EventStreamContentType\n ) {\n return;\n }\n if (response.status === 401 || response.status === 403) {\n onAuthError?.(response);\n }\n throw Object.assign(\n new Error(`流式请求失败 (${response.status})`),\n { status: response.status },\n );\n },\n onmessage: (event) => {\n const rawData = safeJsonParse(event.data, {});\n const chunk = normalizeStreamEvent(rawData);\n if (chunk.error) {\n // transport 不直接弹 UI,错误交给 runtime callbacks 或业务层处理。\n handlers.onError?.(chunk.error);\n return;\n }\n handlers.onEvent(chunk);\n },\n onclose: () => {\n handlers.onClose?.();\n resolve();\n },\n onerror: (error) => {\n handlers.onError?.(error);\n reject(error);\n throw error;\n },\n },\n );\n }),\n closeSession: async (sessionId) => {\n const { result } = await closeSession({\n url,\n appNo,\n sessionId,\n token: getTokenValue(token) || \"\",\n });\n return result?.code === API_SUCCESS_CODE;\n },\n updateSessionTitle: async (sessionId, title) => {\n const { result } = await updateSessionTitle({\n url,\n appNo,\n sessionId,\n title,\n token: getTokenValue(token) || \"\",\n });\n return result?.code === API_SUCCESS_CODE;\n },\n feedback: async ({ invocationId, isLike, ...feedbackData }) => {\n const { result } = await addFeedback({\n url,\n appNo,\n token: getTokenValue(token) || \"\",\n requestId: invocationId,\n isLike,\n ...feedbackData,\n });\n return result?.code === API_SUCCESS_CODE;\n },\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { UploadRequestFn } from "../../types";
2
+ export interface XGroupUploadRequestOptions {
3
+ url: string;
4
+ token?: string;
5
+ appNo?: string;
6
+ }
7
+ /** 众安信科预设上传:upload=true 且具备 appNo/token 时可自动接入默认附件接口。 */
8
+ export declare const createXGroupUploadRequest: ({ url, token, appNo, }: XGroupUploadRequestOptions) => UploadRequestFn | undefined;
@@ -1,43 +1,18 @@
1
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
1
  import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
3
2
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
4
- import { parseAgentMessage } from "../utils";
5
- export var baseToolKindResolver = function baseToolKindResolver() {
6
- return "default";
7
- };
8
- export var xGroupToolKindResolver = function xGroupToolKindResolver(_ref) {
9
- var name = _ref.name;
10
- if (name === "adk_request_confirmation") return "approval";
11
- if (name === "transferToAgent") return "handoff";
12
- return "default";
13
- };
14
- export var baseChatStrategies = {
15
- resolveToolKind: function resolveToolKind() {
16
- return "default";
17
- },
18
- createFunctionResponse: function createFunctionResponse(fnCall, confirmed) {
19
- return {
20
- id: fnCall.id,
21
- name: fnCall.name,
22
- response: {
23
- confirmed: confirmed
24
- }
25
- };
26
- },
27
- parseProcessMessage: parseAgentMessage
28
- };
29
- export var createXGroupUploadRequest = function createXGroupUploadRequest(_ref2) {
30
- var url = _ref2.url,
31
- token = _ref2.token,
32
- appNo = _ref2.appNo;
3
+ /** 众安信科预设上传:upload=true 且具备 appNo/token 时可自动接入默认附件接口。 */
4
+ export var createXGroupUploadRequest = function createXGroupUploadRequest(_ref) {
5
+ var url = _ref.url,
6
+ token = _ref.token,
7
+ appNo = _ref.appNo;
33
8
  if (!appNo || !token) return undefined;
34
9
  return /*#__PURE__*/function () {
35
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref3) {
10
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref2) {
36
11
  var file, onProgress, onSuccess, onError, _result$data, formData, response, result, uploadedFile;
37
12
  return _regeneratorRuntime().wrap(function _callee$(_context) {
38
13
  while (1) switch (_context.prev = _context.next) {
39
14
  case 0:
40
- file = _ref3.file, onProgress = _ref3.onProgress, onSuccess = _ref3.onSuccess, onError = _ref3.onError;
15
+ file = _ref2.file, onProgress = _ref2.onProgress, onSuccess = _ref2.onSuccess, onError = _ref2.onError;
41
16
  _context.prev = 1;
42
17
  onProgress === null || onProgress === void 0 || onProgress({
43
18
  percent: 0
@@ -86,37 +61,8 @@ export var createXGroupUploadRequest = function createXGroupUploadRequest(_ref2)
86
61
  }, _callee, null, [[1, 18]]);
87
62
  }));
88
63
  return function (_x) {
89
- return _ref4.apply(this, arguments);
64
+ return _ref3.apply(this, arguments);
90
65
  };
91
66
  }();
92
67
  };
93
- export var xGroupAdkPreset = {
94
- name: "xgroup-adk",
95
- strategies: {
96
- resolveToolKind: xGroupToolKindResolver,
97
- createFunctionResponse: baseChatStrategies.createFunctionResponse,
98
- parseProcessMessage: function parseProcessMessage(text, options) {
99
- return parseAgentMessage(text, _objectSpread({
100
- mode: "comment"
101
- }, options));
102
- }
103
- },
104
- createUploadRequest: createXGroupUploadRequest
105
- };
106
- export var basePreset = {
107
- name: "base",
108
- strategies: baseChatStrategies
109
- };
110
- export var resolveChatPreset = function resolveChatPreset(preset) {
111
- if (!preset || preset === "xgroup-adk") return xGroupAdkPreset;
112
- if (preset === "base") return basePreset;
113
- return preset;
114
- };
115
- export var mergeChatStrategies = function mergeChatStrategies(preset, overrides) {
116
- return _objectSpread(_objectSpread(_objectSpread({}, baseChatStrategies), resolveChatPreset(preset).strategies), overrides);
117
- };
118
- export var resolvePresetUploadRequest = function resolvePresetUploadRequest(preset, context) {
119
- var _resolveChatPreset$cr, _resolveChatPreset;
120
- return (_resolveChatPreset$cr = (_resolveChatPreset = resolveChatPreset(preset)).createUploadRequest) === null || _resolveChatPreset$cr === void 0 ? void 0 : _resolveChatPreset$cr.call(_resolveChatPreset, context);
121
- };
122
- //# sourceMappingURL=xGroupAdk.js.map
68
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createXGroupUploadRequest","_ref","url","token","appNo","undefined","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref2","file","onProgress","onSuccess","onError","_result$data","formData","response","result","uploadedFile","wrap","_callee$","_context","prev","next","percent","FormData","append","fetch","concat","method","body","headers","Accept","Authorization","sent","json","catch","ok","Error","message","status","Array","isArray","data","t0","stop","_x","apply","arguments"],"sources":["../../../../src/presets/xgroup/upload.ts"],"sourcesContent":["import type { UploadRequestFn } from \"@/types\";\n\nexport interface XGroupUploadRequestOptions {\n url: string;\n token?: string;\n appNo?: string;\n}\n\n/** 众安信科预设上传:upload=true 且具备 appNo/token 时可自动接入默认附件接口。 */\nexport const createXGroupUploadRequest = ({\n url,\n token,\n appNo,\n}: XGroupUploadRequestOptions): UploadRequestFn | undefined => {\n if (!appNo || !token) return undefined;\n\n return async ({ file, onProgress, onSuccess, onError }) => {\n try {\n onProgress?.({ percent: 0 });\n\n const formData = new FormData();\n formData.append(\"file\", file);\n\n const response = await fetch(\n `${url}/api/gateway-web/openApi/v1/aizt/app/${appNo}/uploadMultiFile`,\n {\n method: \"POST\",\n body: formData,\n headers: {\n Accept: \"application/json, text/plain, */*\",\n Authorization: `Bearer ${token}`,\n \"Cache-Control\": \"no-cache\",\n },\n },\n );\n\n const result = await response.json().catch(() => ({}));\n\n if (!response.ok) {\n throw new Error(result?.message || `文件上传失败 (${response.status})`);\n }\n\n const uploadedFile = Array.isArray(result?.data)\n ? result.data[0]\n : (result?.data ?? result);\n\n onProgress?.({ percent: 100 });\n onSuccess?.(uploadedFile);\n } catch (error) {\n onError?.(error instanceof Error ? error : new Error(\"文件上传失败\"));\n }\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { default as useAdkConversation } from "./useAdkConversation";
2
+ export type { UseAdkConversationResult } from "./useAdkConversation";
3
+ export { default as useADKChat } from "../hooks/useADKChat";
4
+ export { default as useEventStreamRequest } from "../hooks/useEventStreamRequest";
5
+ export { useChatActions, useChatState, useSession, } from "../components/XAdkProvider/context";
6
+ export type { ChatHookFactory, ChatHookResult } from "../types/ChatHook";
@@ -0,0 +1,5 @@
1
+ export { default as useAdkConversation } from "./useAdkConversation";
2
+ export { default as useADKChat } from "../hooks/useADKChat";
3
+ export { default as useEventStreamRequest } from "../hooks/useEventStreamRequest";
4
+ export { useChatActions, useChatState, useSession } from "../components/XAdkProvider/context";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","useAdkConversation","useADKChat","useEventStreamRequest","useChatActions","useChatState","useSession"],"sources":["../../../src/react/index.ts"],"sourcesContent":["export { default as useAdkConversation } from \"./useAdkConversation\";\nexport type { UseAdkConversationResult } from \"./useAdkConversation\";\nexport { default as useADKChat } from \"@/hooks/useADKChat\";\nexport { default as useEventStreamRequest } from \"@/hooks/useEventStreamRequest\";\nexport {\n useChatActions,\n useChatState,\n useSession,\n} from \"@/components/XAdkProvider/context\";\nexport type { ChatHookFactory, ChatHookResult } from \"@/types/ChatHook\";\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,kBAAkB;AAEtC,SAASD,OAAO,IAAIE,UAAU;AAC9B,SAASF,OAAO,IAAIG,qBAAqB;AACzC,SACEC,cAAc,EACdC,YAAY,EACZC,UAAU"}
@@ -0,0 +1,27 @@
1
+ import { type AdkConversationController, type AdkConversationOptions, type AdkConversationState } from "../core/runtime";
2
+ export interface UseAdkConversationResult extends AdkConversationState {
3
+ controller: AdkConversationController;
4
+ startChat: AdkConversationController["startChat"];
5
+ stopChat: AdkConversationController["stopChat"];
6
+ reChat: AdkConversationController["reChat"];
7
+ clearChat: AdkConversationController["clearChat"];
8
+ suggestChat: AdkConversationController["suggestChat"];
9
+ confirmFnCall: AdkConversationController["confirmFnCall"];
10
+ switchSession: AdkConversationController["switchSession"];
11
+ setCurrentSession: AdkConversationController["setCurrentSession"];
12
+ replaceSessionEvents: AdkConversationController["replaceSessionEvents"];
13
+ syncSessionEvents: AdkConversationController["syncSessionEvents"];
14
+ deleteSession: AdkConversationController["deleteSession"];
15
+ updateSession: AdkConversationController["updateSession"];
16
+ likeMessage: AdkConversationController["likeMessage"];
17
+ setMessages: AdkConversationController["setMessages"];
18
+ setStateDelta: AdkConversationController["setStateDelta"];
19
+ }
20
+ /**
21
+ * React 绑定层:把无框架的 AdkConversationController 包装成 Hook。
22
+ *
23
+ * 注意:controller 只在首次渲染创建一次;如果业务需要切换 transport / requestBuilder,
24
+ * 建议在外层通过 key 重新挂载组件,避免对话进行中替换数据流内核。
25
+ */
26
+ export declare const useAdkConversation: (options: AdkConversationOptions) => UseAdkConversationResult;
27
+ export default useAdkConversation;
@@ -0,0 +1,53 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import { useEffect, useRef, useState } from "react";
4
+ import { createAdkConversationController } from "../core/runtime";
5
+ /**
6
+ * React 绑定层:把无框架的 AdkConversationController 包装成 Hook。
7
+ *
8
+ * 注意:controller 只在首次渲染创建一次;如果业务需要切换 transport / requestBuilder,
9
+ * 建议在外层通过 key 重新挂载组件,避免对话进行中替换数据流内核。
10
+ */
11
+ export var useAdkConversation = function useAdkConversation(options) {
12
+ var controllerRef = useRef(null);
13
+ if (!controllerRef.current) {
14
+ controllerRef.current = createAdkConversationController(options);
15
+ }
16
+ var controller = controllerRef.current;
17
+ var _useState = useState(function () {
18
+ return controller.getSnapshot();
19
+ }),
20
+ _useState2 = _slicedToArray(_useState, 2),
21
+ snapshot = _useState2[0],
22
+ setSnapshot = _useState2[1];
23
+ useEffect(function () {
24
+ // 订阅 controller 状态变化,并在组件卸载时销毁流式连接和轮询。
25
+ setSnapshot(controller.getSnapshot());
26
+ var unsubscribe = controller.subscribe(setSnapshot);
27
+ void controller.init();
28
+ return function () {
29
+ unsubscribe();
30
+ controller.destroy();
31
+ };
32
+ }, [controller]);
33
+ return _objectSpread(_objectSpread({}, snapshot), {}, {
34
+ controller: controller,
35
+ startChat: controller.startChat,
36
+ stopChat: controller.stopChat,
37
+ reChat: controller.reChat,
38
+ clearChat: controller.clearChat,
39
+ suggestChat: controller.suggestChat,
40
+ confirmFnCall: controller.confirmFnCall,
41
+ switchSession: controller.switchSession,
42
+ setCurrentSession: controller.setCurrentSession,
43
+ replaceSessionEvents: controller.replaceSessionEvents,
44
+ syncSessionEvents: controller.syncSessionEvents,
45
+ deleteSession: controller.deleteSession,
46
+ updateSession: controller.updateSession,
47
+ likeMessage: controller.likeMessage,
48
+ setMessages: controller.setMessages,
49
+ setStateDelta: controller.setStateDelta
50
+ });
51
+ };
52
+ export default useAdkConversation;
53
+ //# sourceMappingURL=useAdkConversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","useState","createAdkConversationController","useAdkConversation","options","controllerRef","current","controller","_useState","getSnapshot","_useState2","_slicedToArray","snapshot","setSnapshot","unsubscribe","subscribe","init","destroy","_objectSpread","startChat","stopChat","reChat","clearChat","suggestChat","confirmFnCall","switchSession","setCurrentSession","replaceSessionEvents","syncSessionEvents","deleteSession","updateSession","likeMessage","setMessages","setStateDelta"],"sources":["../../../src/react/useAdkConversation.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport {\n createAdkConversationController,\n type AdkConversationController,\n type AdkConversationOptions,\n type AdkConversationState,\n} from \"@/core/runtime\";\n\nexport interface UseAdkConversationResult extends AdkConversationState {\n controller: AdkConversationController;\n startChat: AdkConversationController[\"startChat\"];\n stopChat: AdkConversationController[\"stopChat\"];\n reChat: AdkConversationController[\"reChat\"];\n clearChat: AdkConversationController[\"clearChat\"];\n suggestChat: AdkConversationController[\"suggestChat\"];\n confirmFnCall: AdkConversationController[\"confirmFnCall\"];\n switchSession: AdkConversationController[\"switchSession\"];\n setCurrentSession: AdkConversationController[\"setCurrentSession\"];\n replaceSessionEvents: AdkConversationController[\"replaceSessionEvents\"];\n syncSessionEvents: AdkConversationController[\"syncSessionEvents\"];\n deleteSession: AdkConversationController[\"deleteSession\"];\n updateSession: AdkConversationController[\"updateSession\"];\n likeMessage: AdkConversationController[\"likeMessage\"];\n setMessages: AdkConversationController[\"setMessages\"];\n setStateDelta: AdkConversationController[\"setStateDelta\"];\n}\n\n/**\n * React 绑定层:把无框架的 AdkConversationController 包装成 Hook。\n *\n * 注意:controller 只在首次渲染创建一次;如果业务需要切换 transport / requestBuilder,\n * 建议在外层通过 key 重新挂载组件,避免对话进行中替换数据流内核。\n */\nexport const useAdkConversation = (\n options: AdkConversationOptions,\n): UseAdkConversationResult => {\n const controllerRef = useRef<AdkConversationController | null>(null);\n if (!controllerRef.current) {\n controllerRef.current = createAdkConversationController(options);\n }\n const controller = controllerRef.current;\n const [snapshot, setSnapshot] = useState(() => controller.getSnapshot());\n\n useEffect(() => {\n // 订阅 controller 状态变化,并在组件卸载时销毁流式连接和轮询。\n setSnapshot(controller.getSnapshot());\n const unsubscribe = controller.subscribe(setSnapshot);\n void controller.init();\n return () => {\n unsubscribe();\n controller.destroy();\n };\n }, [controller]);\n\n return {\n ...snapshot,\n controller,\n startChat: controller.startChat,\n stopChat: controller.stopChat,\n reChat: controller.reChat,\n clearChat: controller.clearChat,\n suggestChat: controller.suggestChat,\n confirmFnCall: controller.confirmFnCall,\n switchSession: controller.switchSession,\n setCurrentSession: controller.setCurrentSession,\n replaceSessionEvents: controller.replaceSessionEvents,\n syncSessionEvents: controller.syncSessionEvents,\n deleteSession: controller.deleteSession,\n updateSession: controller.updateSession,\n likeMessage: controller.likeMessage,\n setMessages: controller.setMessages,\n setStateDelta: controller.setStateDelta,\n };\n};\n\nexport default useAdkConversation;\n"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACnD,SACEC,+BAA+B;AAyBjC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAC7BC,OAA+B,EACF;EAC7B,IAAMC,aAAa,GAAGL,MAAM,CAAmC,IAAI,CAAC;EACpE,IAAI,CAACK,aAAa,CAACC,OAAO,EAAE;IAC1BD,aAAa,CAACC,OAAO,GAAGJ,+BAA+B,CAACE,OAAO,CAAC;EAClE;EACA,IAAMG,UAAU,GAAGF,aAAa,CAACC,OAAO;EACxC,IAAAE,SAAA,GAAgCP,QAAQ,CAAC;MAAA,OAAMM,UAAU,CAACE,WAAW,CAAC,CAAC;IAAA,EAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA;IAAjEI,QAAQ,GAAAF,UAAA;IAAEG,WAAW,GAAAH,UAAA;EAE5BX,SAAS,CAAC,YAAM;IACd;IACAc,WAAW,CAACN,UAAU,CAACE,WAAW,CAAC,CAAC,CAAC;IACrC,IAAMK,WAAW,GAAGP,UAAU,CAACQ,SAAS,CAACF,WAAW,CAAC;IACrD,KAAKN,UAAU,CAACS,IAAI,CAAC,CAAC;IACtB,OAAO,YAAM;MACXF,WAAW,CAAC,CAAC;MACbP,UAAU,CAACU,OAAO,CAAC,CAAC;IACtB,CAAC;EACH,CAAC,EAAE,CAACV,UAAU,CAAC,CAAC;EAEhB,OAAAW,aAAA,CAAAA,aAAA,KACKN,QAAQ;IACXL,UAAU,EAAVA,UAAU;IACVY,SAAS,EAAEZ,UAAU,CAACY,SAAS;IAC/BC,QAAQ,EAAEb,UAAU,CAACa,QAAQ;IAC7BC,MAAM,EAAEd,UAAU,CAACc,MAAM;IACzBC,SAAS,EAAEf,UAAU,CAACe,SAAS;IAC/BC,WAAW,EAAEhB,UAAU,CAACgB,WAAW;IACnCC,aAAa,EAAEjB,UAAU,CAACiB,aAAa;IACvCC,aAAa,EAAElB,UAAU,CAACkB,aAAa;IACvCC,iBAAiB,EAAEnB,UAAU,CAACmB,iBAAiB;IAC/CC,oBAAoB,EAAEpB,UAAU,CAACoB,oBAAoB;IACrDC,iBAAiB,EAAErB,UAAU,CAACqB,iBAAiB;IAC/CC,aAAa,EAAEtB,UAAU,CAACsB,aAAa;IACvCC,aAAa,EAAEvB,UAAU,CAACuB,aAAa;IACvCC,WAAW,EAAExB,UAAU,CAACwB,WAAW;IACnCC,WAAW,EAAEzB,UAAU,CAACyB,WAAW;IACnCC,aAAa,EAAE1B,UAAU,CAAC0B;EAAa;AAE3C,CAAC;AAED,eAAe9B,kBAAkB"}