whyuzeim 1.1.42 → 1.1.44

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.
@@ -0,0 +1,12 @@
1
+ import { AIReportMessageExts } from "@components/type";
2
+ import { NoticeMessageBody } from "agora-chat-uikit/types/module/noticeMessage/NoticeMessage";
3
+ import { ChatSDK } from "agora-chat-uikit/types/module/SDK";
4
+ import React from "react";
5
+ interface IAIReportMsg {
6
+ msg: ChatSDK.MessageBody | NoticeMessageBody;
7
+ isMySelf: boolean;
8
+ avatar?: React.ReactNode;
9
+ onReportClick?: (report: AIReportMessageExts) => void;
10
+ }
11
+ declare const AIReportMsg: React.FC<IAIReportMsg>;
12
+ export default AIReportMsg;
@@ -0,0 +1,95 @@
1
+ 'use strict';
2
+
3
+ var agoraChatUikit = require('agora-chat-uikit');
4
+ var React = require('react');
5
+
6
+ var AIReportMsg = function AIReportMsg(props) {
7
+ var msg = props.msg,
8
+ isMySelf = props.isMySelf,
9
+ avatar = props.avatar,
10
+ onReportClick = props.onReportClick;
11
+ var formatMessageTime = function formatMessageTime(timestamp) {
12
+ if (!timestamp) return "";
13
+ var date = new Date(timestamp);
14
+ var now = new Date();
15
+ // 判断是否是同一天
16
+ var isToday = date.toDateString() === now.toDateString();
17
+ if (isToday) {
18
+ // 当天消息只显示时分
19
+ return date.toLocaleString("zh-CN", {
20
+ hour: "2-digit",
21
+ minute: "2-digit",
22
+ hour12: false
23
+ });
24
+ } else {
25
+ // 非当天消息显示月日时分
26
+ return date.toLocaleString("zh-CN", {
27
+ month: "2-digit",
28
+ day: "2-digit",
29
+ hour: "2-digit",
30
+ minute: "2-digit",
31
+ hour12: false
32
+ });
33
+ }
34
+ };
35
+ return /*#__PURE__*/React.createElement(agoraChatUikit.BaseMessage, {
36
+ bubbleType: "none",
37
+ reaction: false,
38
+ select: false,
39
+ thread: false,
40
+ direction: isMySelf ? "rtl" : "ltr",
41
+ renderUserProfile: function renderUserProfile() {
42
+ return null;
43
+ },
44
+ nickName: undefined,
45
+ showMessageInfo: false,
46
+ message: msg,
47
+ customAction: {
48
+ visible: false,
49
+ icon: null,
50
+ actions: []
51
+ },
52
+ avatar: avatar
53
+ }, /*#__PURE__*/React.createElement("div", {
54
+ className: "text-[var(--im-main-fontColor)] flex flex-col gap-1 ".concat(isMySelf ? "items-end" : "items-start")
55
+ }, /*#__PURE__*/React.createElement("div", {
56
+ style: {
57
+ background: isMySelf ? "var(--im-msg-bubble-color-right)" : "var(--im-msg-bubble-color-left)",
58
+ borderRadius: "9px",
59
+ padding: "10px 12px",
60
+ color: "var(--im-msg-bubble-font-color)"
61
+ },
62
+ className: "w-full flex flex-col gap-4"
63
+ }, /*#__PURE__*/React.createElement("div", {
64
+ className: "flex items-center justify-between"
65
+ }, /*#__PURE__*/React.createElement("div", {
66
+ className: "flex items-center"
67
+ }, /*#__PURE__*/React.createElement("span", null, "\uD83D\uDCE2"), /*#__PURE__*/React.createElement("span", {
68
+ className: "text-lg font-semibold"
69
+ }, "\xA0", msg.customExts.title)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", {
70
+ className: "cui-message-base-time"
71
+ }, formatMessageTime(msg.time)))), /*#__PURE__*/React.createElement("div", {
72
+ className: "flex items-center",
73
+ onClick: function onClick() {
74
+ onReportClick && onReportClick(msg.customExts);
75
+ }
76
+ }, /*#__PURE__*/React.createElement("span", {
77
+ className: "text-base"
78
+ }, msg.customExts.content), /*#__PURE__*/React.createElement("svg", {
79
+ className: "shrink-0",
80
+ width: "8",
81
+ height: "14",
82
+ viewBox: "0 0 8 14",
83
+ fill: "none",
84
+ xmlns: "http://www.w3.org/2000/svg"
85
+ }, /*#__PURE__*/React.createElement("path", {
86
+ d: "M1.16667 1L7 7L1.16667 13",
87
+ stroke: "black",
88
+ "stroke-opacity": "0.4",
89
+ "stroke-width": "1.5",
90
+ "stroke-linecap": "round",
91
+ "stroke-linejoin": "round"
92
+ }))))));
93
+ };
94
+
95
+ module.exports = AIReportMsg;
@@ -0,0 +1,12 @@
1
+ import { NoticeMessageBody } from "agora-chat-uikit/types/module/noticeMessage/NoticeMessage";
2
+ import { ChatSDK } from "agora-chat-uikit/types/module/SDK";
3
+ import 'highlight.js/styles/monokai.css';
4
+ import React from "react";
5
+ interface ICodeMsg {
6
+ msg: ChatSDK.MessageBody | NoticeMessageBody;
7
+ isMySelf: boolean;
8
+ avatar?: React.ReactNode;
9
+ onApply?: (code: string) => void;
10
+ }
11
+ declare const CodeMsg: React.FC<ICodeMsg>;
12
+ export default CodeMsg;
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+
3
+ var agoraChatUikit = require('agora-chat-uikit');
4
+ var hljs = require('highlight.js');
5
+ require('highlight.js/styles/monokai.css');
6
+ var React = require('react');
7
+
8
+ /* eslint-disable @typescript-eslint/no-unused-expressions */
9
+ var CodeMsg = function CodeMsg(props) {
10
+ var _msg$msg;
11
+ var msg = props.msg,
12
+ isMySelf = props.isMySelf,
13
+ avatar = props.avatar,
14
+ onApply = props.onApply;
15
+ var rawCode = (_msg$msg = msg.msg) === null || _msg$msg === void 0 ? void 0 : _msg$msg.replace(/\\n/g, "\n").replace(/\\"/g, '"').replace(/\\\\/g, "\\");
16
+ // 修改高亮代码的函数
17
+ return /*#__PURE__*/React.createElement(agoraChatUikit.BaseMessage, {
18
+ bubbleType: "none",
19
+ reaction: false,
20
+ select: false,
21
+ thread: false,
22
+ direction: isMySelf ? "rtl" : "ltr",
23
+ renderUserProfile: function renderUserProfile() {
24
+ return null;
25
+ },
26
+ nickName: undefined,
27
+ showMessageInfo: false,
28
+ message: msg,
29
+ customAction: {
30
+ visible: false,
31
+ icon: null,
32
+ actions: []
33
+ },
34
+ avatar: avatar
35
+ }, /*#__PURE__*/React.createElement("div", {
36
+ className: "text-[var(--im-main-fontColor)] flex flex-col gap-1 ".concat(isMySelf ? "items-end" : "items-start")
37
+ }, /*#__PURE__*/React.createElement("div", {
38
+ style: {
39
+ background: isMySelf ? "var(--im-msg-bubble-color-right)" : "var(--im-msg-bubble-color-left)",
40
+ borderRadius: "9px",
41
+ padding: "10px 12px",
42
+ color: "var(--im-msg-bubble-font-color)"
43
+ },
44
+ className: "inline-block"
45
+ }, /*#__PURE__*/React.createElement("div", {
46
+ className: "p-4 flex justify-between items-center flex-shrink-0"
47
+ }, /*#__PURE__*/React.createElement("div", {
48
+ className: "flex items-center gap-1 text-white text-[10px] font-normal"
49
+ }, /*#__PURE__*/React.createElement("svg", {
50
+ width: "11",
51
+ height: "11",
52
+ viewBox: "0 0 11 11",
53
+ fill: "none",
54
+ xmlns: "http://www.w3.org/2000/svg"
55
+ }, /*#__PURE__*/React.createElement("path", {
56
+ fillRule: "evenodd",
57
+ clipRule: "evenodd",
58
+ d: "M8 0.0214844H2.58333V2.5396H0.0214844V8.01198H2.58333V10.5301H8V8.01198H10.5618V2.5396H8V0.0214844Z",
59
+ fill: "#0083FF"
60
+ })), /*#__PURE__*/React.createElement("span", {
61
+ className: "text-[#000]"
62
+ }, "main.py")), /*#__PURE__*/React.createElement("button", {
63
+ onClick: function onClick() {
64
+ onApply && onApply(msg.customExts.code);
65
+ },
66
+ className: "flex items-center h-6 px-2 py-1 bg-white rounded text-black/90 text-[10px] font-normal"
67
+ }, "Apply")), /*#__PURE__*/React.createElement("div", {
68
+ className: "flex-1 px-4 pt-2 pb-4 gap-2 flex flex-col justify-between h-full overflow-hidden"
69
+ }, /*#__PURE__*/React.createElement("div", {
70
+ className: "code-scroll-container w-full max-h-[300px] overflow-y-auto"
71
+ }, /*#__PURE__*/React.createElement("pre", {
72
+ className: "bg-transparent w-full h-full"
73
+ }, /*#__PURE__*/React.createElement("code", {
74
+ className: "language-python hljs",
75
+ style: {
76
+ display: "block",
77
+ overflow: "auto",
78
+ background: "transparent",
79
+ fontSize: "14px",
80
+ lineHeight: "1.5",
81
+ fontFamily: "Monaco, Consolas, monospace",
82
+ whiteSpace: "pre-wrap",
83
+ wordWrap: "break-word",
84
+ width: "100%",
85
+ maxWidth: "100%",
86
+ padding: "0.5rem"
87
+ },
88
+ dangerouslySetInnerHTML: {
89
+ __html: hljs.highlight(rawCode, {
90
+ language: "python",
91
+ ignoreIllegals: true
92
+ }).value
93
+ }
94
+ })))))));
95
+ };
96
+
97
+ module.exports = CodeMsg;
@@ -0,0 +1,11 @@
1
+ import { NoticeMessageBody } from "agora-chat-uikit/types/module/noticeMessage/NoticeMessage";
2
+ import { ChatSDK } from "agora-chat-uikit/types/module/SDK";
3
+ import React from "react";
4
+ interface IQuestionButtonMsg {
5
+ msg: ChatSDK.MessageBody | NoticeMessageBody;
6
+ isMySelf: boolean;
7
+ avatar?: React.ReactNode;
8
+ onSelectAnswer?: (extInfo: any) => void;
9
+ }
10
+ declare const QustionButtonMsg: React.FC<IQuestionButtonMsg>;
11
+ export default QustionButtonMsg;
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
4
+ var agoraChatUikit = require('agora-chat-uikit');
5
+ var antd = require('antd');
6
+ var React = require('react');
7
+
8
+ var QustionButtonMsg = function QustionButtonMsg(props) {
9
+ var _context;
10
+ var msg = props.msg,
11
+ isMySelf = props.isMySelf,
12
+ avatar = props.avatar,
13
+ onSelectAnswer = props.onSelectAnswer;
14
+ return /*#__PURE__*/React.createElement(agoraChatUikit.BaseMessage, {
15
+ bubbleType: "none",
16
+ reaction: false,
17
+ select: false,
18
+ thread: false,
19
+ direction: isMySelf ? "rtl" : "ltr",
20
+ renderUserProfile: function renderUserProfile() {
21
+ return null;
22
+ },
23
+ nickName: undefined,
24
+ showMessageInfo: false,
25
+ message: msg,
26
+ customAction: {
27
+ visible: false,
28
+ icon: null,
29
+ actions: []
30
+ },
31
+ avatar: avatar
32
+ }, /*#__PURE__*/React.createElement("div", {
33
+ className: "text-[var(--im-main-fontColor)] flex flex-col gap-1 ".concat(isMySelf ? "items-end" : "items-start")
34
+ }, /*#__PURE__*/React.createElement("div", {
35
+ style: {
36
+ background: isMySelf ? "var(--im-msg-bubble-color-right)" : "var(--im-msg-bubble-color-left)",
37
+ borderRadius: "9px",
38
+ padding: "10px 12px",
39
+ color: "var(--im-msg-bubble-font-color)"
40
+ },
41
+ className: "inline-block"
42
+ }, /*#__PURE__*/React.createElement("span", {
43
+ className: "cui-message-text"
44
+ }, msg.customExts.content)), /*#__PURE__*/React.createElement("div", {
45
+ className: "flex flex-col gap-3"
46
+ }, _mapInstanceProperty(_context = msg.customExts.guidance_list).call(_context, function (text) {
47
+ return /*#__PURE__*/React.createElement(antd.Button, {
48
+ key: text,
49
+ className: "w-[400px] !h-[45px] !bg-[#2c7cf5]",
50
+ onClick: function onClick() {
51
+ onSelectAnswer && onSelectAnswer({
52
+ text: text,
53
+ step: msg.customExts.step,
54
+ customEvent: msg.customEvent
55
+ });
56
+ }
57
+ }, /*#__PURE__*/React.createElement("span", {
58
+ className: "text-[#fff]"
59
+ }, text));
60
+ }))));
61
+ };
62
+
63
+ module.exports = QustionButtonMsg;
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import { Conversation } from "agora-chat-uikit";
3
3
  import { ChatSDK } from "agora-chat-uikit/types/module/SDK";
4
4
  import { ChatType } from "agora-chat-uikit/types/module/types/messageType";
5
+ import { AIReportMessageExts } from "@components/type";
5
6
  import "./style/index.scss";
6
7
  export interface IHighlyCustomChat {
7
8
  conversationId: string;
@@ -11,8 +12,10 @@ export interface IHighlyCustomChat {
11
12
  renderHeader?: (cvs: Conversation) => React.ReactNode;
12
13
  renderInputView?: (cvs: Conversation, sendMessage: (text: string) => void) => React.ReactNode;
13
14
  renderQuestionList?: (cvs: Conversation, sendMessage: (text: string) => void) => React.ReactNode;
14
- sendMessageSuccessCallback?: (msg: ChatSDK.MessageBody) => void;
15
+ sendMessageSuccessCallback?: (msg: ChatSDK.MessageBody, extInfo?: any) => void;
15
16
  onLoginSuccess?: () => void;
17
+ onApply?: (code: string) => void;
18
+ onReportClick?: (report: AIReportMessageExts) => void;
16
19
  }
17
20
  declare const HighlyCustomChat: React.FC<IHighlyCustomChat>;
18
21
  export default HighlyCustomChat;
@@ -24,7 +24,10 @@ var type = require('../type.js');
24
24
  var tools = require('../tools.js');
25
25
  var avatar_default = require('../Icon/avatar_default.svg.js');
26
26
  var encryption = require('../IM/encryption.js');
27
+ var index$2 = require('./QuestionButton/index.js');
28
+ var index$1 = require('./CodeMsg/index.js');
27
29
  require('./style/index.scss');
30
+ var index = require('./AIReportMsg/index.js');
28
31
 
29
32
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
30
33
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context4, _context5; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context4 = ownKeys(Object(t), true)).call(_context4, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context5 = ownKeys(Object(t))).call(_context5, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -139,6 +142,8 @@ var HighlyCustomChat = function HighlyCustomChat(props) {
139
142
  }, formatMessageTime(msg.time)));
140
143
  };
141
144
  var _renderMessage = function renderMessage(msg) {
145
+ var _userInfo$uid3;
146
+ var isMySelf = (msg === null || msg === void 0 ? void 0 : msg.bySelf) === true || (msg === null || msg === void 0 ? void 0 : msg.from.toLowerCase()) === ((_userInfo$uid3 = userInfo.uid) === null || _userInfo$uid3 === void 0 ? void 0 : _userInfo$uid3.toLowerCase());
142
147
  if (msg.type === "txt") {
143
148
  return renderTxtMsg(msg);
144
149
  } else if (msg.type === "img") {
@@ -192,6 +197,38 @@ var HighlyCustomChat = function HighlyCustomChat(props) {
192
197
  },
193
198
  videoMessage: msg
194
199
  });
200
+ } else if (msg.type === "custom" && (msg === null || msg === void 0 ? void 0 : msg.customEvent) === "custom_ai_report") {
201
+ return /*#__PURE__*/React.createElement(index, {
202
+ onReportClick: props.onReportClick,
203
+ msg: msg,
204
+ isMySelf: isMySelf,
205
+ avatar: !isMySelf ? /*#__PURE__*/React.createElement("img", {
206
+ src: headerInfo.headerImageURL || avatar_default,
207
+ className: "w-[48px] h-[48px] rounded-full overflow-hidden object-fit"
208
+ }) : undefined
209
+ });
210
+ } else if (msg.type === "custom" && (msg === null || msg === void 0 ? void 0 : msg.customEvent) === "custom_coding") {
211
+ return /*#__PURE__*/React.createElement(index$1, {
212
+ onApply: props.onApply,
213
+ msg: msg,
214
+ isMySelf: isMySelf,
215
+ avatar: !isMySelf ? /*#__PURE__*/React.createElement("img", {
216
+ src: headerInfo.headerImageURL || avatar_default,
217
+ className: "w-[48px] h-[48px] rounded-full overflow-hidden object-fit"
218
+ }) : undefined
219
+ });
220
+ } else if (msg.type === "custom" && (msg === null || msg === void 0 ? void 0 : msg.customEvent) === "custom_qa_guidance") {
221
+ return /*#__PURE__*/React.createElement(index$2, {
222
+ onSelectAnswer: function onSelectAnswer(extInfo) {
223
+ handleSendMessage(extInfo.text, extInfo);
224
+ },
225
+ msg: msg,
226
+ isMySelf: isMySelf,
227
+ avatar: !isMySelf ? /*#__PURE__*/React.createElement("img", {
228
+ src: headerInfo.headerImageURL || avatar_default,
229
+ className: "w-[48px] h-[48px] rounded-full overflow-hidden object-fit"
230
+ }) : undefined
231
+ });
195
232
  } else {
196
233
  return undefined;
197
234
  }
@@ -377,7 +414,7 @@ var HighlyCustomChat = function HighlyCustomChat(props) {
377
414
  };
378
415
  }, [getHeaderInfo, initConversation, props.conversationId]);
379
416
  var handleSendMessage = /*#__PURE__*/function () {
380
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(text) {
417
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(text, extInfo) {
381
418
  var txtMessage, cuiScrollList, cuiScrollListWrap, htmlString, template, node;
382
419
  return _regeneratorRuntime.wrap(function _callee$(_context2) {
383
420
  while (1) switch (_context2.prev = _context2.next) {
@@ -415,7 +452,7 @@ var HighlyCustomChat = function HighlyCustomChat(props) {
415
452
  }
416
453
  }
417
454
  }
418
- afterSendMsg(txtMessage);
455
+ afterSendMsg(txtMessage, extInfo);
419
456
  _context2.next = 13;
420
457
  break;
421
458
  case 10:
@@ -428,23 +465,23 @@ var HighlyCustomChat = function HighlyCustomChat(props) {
428
465
  }
429
466
  }, _callee, null, [[2, 10]]);
430
467
  }));
431
- return function handleSendMessage(_x) {
468
+ return function handleSendMessage(_x, _x2) {
432
469
  return _ref3.apply(this, arguments);
433
470
  };
434
471
  }();
435
472
  var afterSendMsg = /*#__PURE__*/function () {
436
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(msgInfo) {
473
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(msgInfo, extInfo) {
437
474
  return _regeneratorRuntime.wrap(function _callee2$(_context3) {
438
475
  while (1) switch (_context3.prev = _context3.next) {
439
476
  case 0:
440
- props.sendMessageSuccessCallback && props.sendMessageSuccessCallback(msgInfo);
477
+ props.sendMessageSuccessCallback && props.sendMessageSuccessCallback(msgInfo, extInfo);
441
478
  case 1:
442
479
  case "end":
443
480
  return _context3.stop();
444
481
  }
445
482
  }, _callee2);
446
483
  }));
447
- return function afterSendMsg(_x2) {
484
+ return function afterSendMsg(_x3, _x4) {
448
485
  return _ref4.apply(this, arguments);
449
486
  };
450
487
  }();
package/cjs/type.d.ts CHANGED
@@ -1,7 +1,79 @@
1
1
  import { MessageInputProps, MsgListProps } from "agora-chat-uikit";
2
+ import { ChatSDK } from "agora-chat-uikit/types/module/SDK";
3
+ import { NoticeMessageBody } from "agora-chat-uikit/types/module/noticeMessage/NoticeMessage";
2
4
  export type ICommonComponentProps = {
3
5
  className?: string;
4
6
  style?: React.CSSProperties;
5
7
  };
6
8
  export declare const commonMessageInputConfig: MessageInputProps;
7
9
  export declare const commonMessageProps: MsgListProps['messageProps'];
10
+ /**
11
+ * 自定义IM消息类型
12
+ * 基于Agora的ChatSDK.MessageBody扩展
13
+ */
14
+ export interface AIReportMessageExts {
15
+ /** 报告标题 */
16
+ title: string;
17
+ /** 报告描述内容 */
18
+ content: string;
19
+ /** token地址 */
20
+ tokenaddress: string;
21
+ /** token铸造平台: pumpfun, moonpump 或 others */
22
+ platform: 'pumpfun' | 'moonpump' | 'others';
23
+ /** 是否已在交易所上架: yes - 已在交易所; no - 内盘 */
24
+ isOnDex: boolean;
25
+ /** token名称 */
26
+ token_name: string;
27
+ /** token符号 */
28
+ token_symbol: string;
29
+ }
30
+ export interface PythonCodeMessageExts {
31
+ /** 代码内容 */
32
+ code: string;
33
+ /** 代码类型 默认‘python’ */
34
+ code_type: string;
35
+ /** 是否显示apply按钮 */
36
+ can_apply: boolean;
37
+ /** 是否显示copy按钮 */
38
+ can_copy: boolean;
39
+ }
40
+ export interface QAGuidanceMessageExts {
41
+ /** 引导内容描述 */
42
+ content: string;
43
+ /** 引导词数组,包含0到多个引导选项 */
44
+ guidance_list: string[];
45
+ }
46
+ /**
47
+ * 自定义消息类型定义
48
+ * 每种类型都与特定的扩展字段结构关联
49
+ */
50
+ /** AI报告消息 */
51
+ export interface AIReportMessage {
52
+ customEvent: 'custom_ai_report';
53
+ customExts: AIReportMessageExts;
54
+ }
55
+ /** 编程代码消息 */
56
+ export interface PythonCodeMessage {
57
+ customEvent: 'custom_coding';
58
+ customExts: PythonCodeMessageExts;
59
+ }
60
+ /** 问答引导消息 */
61
+ export interface QAGuidanceMessage {
62
+ customEvent: 'custom_qa_guidance';
63
+ customExts: QAGuidanceMessageExts;
64
+ }
65
+ /**
66
+ * 自定义消息类型守卫函数,用于判断和类型转换
67
+ */
68
+ /**
69
+ * 判断是否为AI报告消息
70
+ */
71
+ export declare function isAIReportMessage(msg: ChatSDK.MessageBody | NoticeMessageBody): msg is (ChatSDK.MessageBody | NoticeMessageBody) & AIReportMessage;
72
+ /**
73
+ * 判断是否为编程代码消息
74
+ */
75
+ export declare function isPythonCodeMessage(msg: ChatSDK.MessageBody | NoticeMessageBody): msg is (ChatSDK.MessageBody | NoticeMessageBody) & PythonCodeMessage;
76
+ /**
77
+ * 判断是否为问答引导消息
78
+ */
79
+ export declare function isQAGuidanceMessage(msg: ChatSDK.MessageBody | NoticeMessageBody): msg is (ChatSDK.MessageBody | NoticeMessageBody) & QAGuidanceMessage;
@@ -0,0 +1,12 @@
1
+ import { AIReportMessageExts } from "@components/type";
2
+ import { NoticeMessageBody } from "agora-chat-uikit/types/module/noticeMessage/NoticeMessage";
3
+ import { ChatSDK } from "agora-chat-uikit/types/module/SDK";
4
+ import React from "react";
5
+ interface IAIReportMsg {
6
+ msg: ChatSDK.MessageBody | NoticeMessageBody;
7
+ isMySelf: boolean;
8
+ avatar?: React.ReactNode;
9
+ onReportClick?: (report: AIReportMessageExts) => void;
10
+ }
11
+ declare const AIReportMsg: React.FC<IAIReportMsg>;
12
+ export default AIReportMsg;
@@ -0,0 +1,93 @@
1
+ import { BaseMessage } from 'agora-chat-uikit';
2
+ import React from 'react';
3
+
4
+ var AIReportMsg = function AIReportMsg(props) {
5
+ var msg = props.msg,
6
+ isMySelf = props.isMySelf,
7
+ avatar = props.avatar,
8
+ onReportClick = props.onReportClick;
9
+ var formatMessageTime = function formatMessageTime(timestamp) {
10
+ if (!timestamp) return "";
11
+ var date = new Date(timestamp);
12
+ var now = new Date();
13
+ // 判断是否是同一天
14
+ var isToday = date.toDateString() === now.toDateString();
15
+ if (isToday) {
16
+ // 当天消息只显示时分
17
+ return date.toLocaleString("zh-CN", {
18
+ hour: "2-digit",
19
+ minute: "2-digit",
20
+ hour12: false
21
+ });
22
+ } else {
23
+ // 非当天消息显示月日时分
24
+ return date.toLocaleString("zh-CN", {
25
+ month: "2-digit",
26
+ day: "2-digit",
27
+ hour: "2-digit",
28
+ minute: "2-digit",
29
+ hour12: false
30
+ });
31
+ }
32
+ };
33
+ return /*#__PURE__*/React.createElement(BaseMessage, {
34
+ bubbleType: "none",
35
+ reaction: false,
36
+ select: false,
37
+ thread: false,
38
+ direction: isMySelf ? "rtl" : "ltr",
39
+ renderUserProfile: function renderUserProfile() {
40
+ return null;
41
+ },
42
+ nickName: undefined,
43
+ showMessageInfo: false,
44
+ message: msg,
45
+ customAction: {
46
+ visible: false,
47
+ icon: null,
48
+ actions: []
49
+ },
50
+ avatar: avatar
51
+ }, /*#__PURE__*/React.createElement("div", {
52
+ className: "text-[var(--im-main-fontColor)] flex flex-col gap-1 ".concat(isMySelf ? "items-end" : "items-start")
53
+ }, /*#__PURE__*/React.createElement("div", {
54
+ style: {
55
+ background: isMySelf ? "var(--im-msg-bubble-color-right)" : "var(--im-msg-bubble-color-left)",
56
+ borderRadius: "9px",
57
+ padding: "10px 12px",
58
+ color: "var(--im-msg-bubble-font-color)"
59
+ },
60
+ className: "w-full flex flex-col gap-4"
61
+ }, /*#__PURE__*/React.createElement("div", {
62
+ className: "flex items-center justify-between"
63
+ }, /*#__PURE__*/React.createElement("div", {
64
+ className: "flex items-center"
65
+ }, /*#__PURE__*/React.createElement("span", null, "\uD83D\uDCE2"), /*#__PURE__*/React.createElement("span", {
66
+ className: "text-lg font-semibold"
67
+ }, "\xA0", msg.customExts.title)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", {
68
+ className: "cui-message-base-time"
69
+ }, formatMessageTime(msg.time)))), /*#__PURE__*/React.createElement("div", {
70
+ className: "flex items-center",
71
+ onClick: function onClick() {
72
+ onReportClick && onReportClick(msg.customExts);
73
+ }
74
+ }, /*#__PURE__*/React.createElement("span", {
75
+ className: "text-base"
76
+ }, msg.customExts.content), /*#__PURE__*/React.createElement("svg", {
77
+ className: "shrink-0",
78
+ width: "8",
79
+ height: "14",
80
+ viewBox: "0 0 8 14",
81
+ fill: "none",
82
+ xmlns: "http://www.w3.org/2000/svg"
83
+ }, /*#__PURE__*/React.createElement("path", {
84
+ d: "M1.16667 1L7 7L1.16667 13",
85
+ stroke: "black",
86
+ "stroke-opacity": "0.4",
87
+ "stroke-width": "1.5",
88
+ "stroke-linecap": "round",
89
+ "stroke-linejoin": "round"
90
+ }))))));
91
+ };
92
+
93
+ export { AIReportMsg as default };
@@ -0,0 +1,12 @@
1
+ import { NoticeMessageBody } from "agora-chat-uikit/types/module/noticeMessage/NoticeMessage";
2
+ import { ChatSDK } from "agora-chat-uikit/types/module/SDK";
3
+ import 'highlight.js/styles/monokai.css';
4
+ import React from "react";
5
+ interface ICodeMsg {
6
+ msg: ChatSDK.MessageBody | NoticeMessageBody;
7
+ isMySelf: boolean;
8
+ avatar?: React.ReactNode;
9
+ onApply?: (code: string) => void;
10
+ }
11
+ declare const CodeMsg: React.FC<ICodeMsg>;
12
+ export default CodeMsg;
@@ -0,0 +1,95 @@
1
+ import { BaseMessage } from 'agora-chat-uikit';
2
+ import hljs from 'highlight.js';
3
+ import 'highlight.js/styles/monokai.css';
4
+ import React from 'react';
5
+
6
+ /* eslint-disable @typescript-eslint/no-unused-expressions */
7
+ var CodeMsg = function CodeMsg(props) {
8
+ var _msg$msg;
9
+ var msg = props.msg,
10
+ isMySelf = props.isMySelf,
11
+ avatar = props.avatar,
12
+ onApply = props.onApply;
13
+ var rawCode = (_msg$msg = msg.msg) === null || _msg$msg === void 0 ? void 0 : _msg$msg.replace(/\\n/g, "\n").replace(/\\"/g, '"').replace(/\\\\/g, "\\");
14
+ // 修改高亮代码的函数
15
+ return /*#__PURE__*/React.createElement(BaseMessage, {
16
+ bubbleType: "none",
17
+ reaction: false,
18
+ select: false,
19
+ thread: false,
20
+ direction: isMySelf ? "rtl" : "ltr",
21
+ renderUserProfile: function renderUserProfile() {
22
+ return null;
23
+ },
24
+ nickName: undefined,
25
+ showMessageInfo: false,
26
+ message: msg,
27
+ customAction: {
28
+ visible: false,
29
+ icon: null,
30
+ actions: []
31
+ },
32
+ avatar: avatar
33
+ }, /*#__PURE__*/React.createElement("div", {
34
+ className: "text-[var(--im-main-fontColor)] flex flex-col gap-1 ".concat(isMySelf ? "items-end" : "items-start")
35
+ }, /*#__PURE__*/React.createElement("div", {
36
+ style: {
37
+ background: isMySelf ? "var(--im-msg-bubble-color-right)" : "var(--im-msg-bubble-color-left)",
38
+ borderRadius: "9px",
39
+ padding: "10px 12px",
40
+ color: "var(--im-msg-bubble-font-color)"
41
+ },
42
+ className: "inline-block"
43
+ }, /*#__PURE__*/React.createElement("div", {
44
+ className: "p-4 flex justify-between items-center flex-shrink-0"
45
+ }, /*#__PURE__*/React.createElement("div", {
46
+ className: "flex items-center gap-1 text-white text-[10px] font-normal"
47
+ }, /*#__PURE__*/React.createElement("svg", {
48
+ width: "11",
49
+ height: "11",
50
+ viewBox: "0 0 11 11",
51
+ fill: "none",
52
+ xmlns: "http://www.w3.org/2000/svg"
53
+ }, /*#__PURE__*/React.createElement("path", {
54
+ fillRule: "evenodd",
55
+ clipRule: "evenodd",
56
+ d: "M8 0.0214844H2.58333V2.5396H0.0214844V8.01198H2.58333V10.5301H8V8.01198H10.5618V2.5396H8V0.0214844Z",
57
+ fill: "#0083FF"
58
+ })), /*#__PURE__*/React.createElement("span", {
59
+ className: "text-[#000]"
60
+ }, "main.py")), /*#__PURE__*/React.createElement("button", {
61
+ onClick: function onClick() {
62
+ onApply && onApply(msg.customExts.code);
63
+ },
64
+ className: "flex items-center h-6 px-2 py-1 bg-white rounded text-black/90 text-[10px] font-normal"
65
+ }, "Apply")), /*#__PURE__*/React.createElement("div", {
66
+ className: "flex-1 px-4 pt-2 pb-4 gap-2 flex flex-col justify-between h-full overflow-hidden"
67
+ }, /*#__PURE__*/React.createElement("div", {
68
+ className: "code-scroll-container w-full max-h-[300px] overflow-y-auto"
69
+ }, /*#__PURE__*/React.createElement("pre", {
70
+ className: "bg-transparent w-full h-full"
71
+ }, /*#__PURE__*/React.createElement("code", {
72
+ className: "language-python hljs",
73
+ style: {
74
+ display: "block",
75
+ overflow: "auto",
76
+ background: "transparent",
77
+ fontSize: "14px",
78
+ lineHeight: "1.5",
79
+ fontFamily: "Monaco, Consolas, monospace",
80
+ whiteSpace: "pre-wrap",
81
+ wordWrap: "break-word",
82
+ width: "100%",
83
+ maxWidth: "100%",
84
+ padding: "0.5rem"
85
+ },
86
+ dangerouslySetInnerHTML: {
87
+ __html: hljs.highlight(rawCode, {
88
+ language: "python",
89
+ ignoreIllegals: true
90
+ }).value
91
+ }
92
+ })))))));
93
+ };
94
+
95
+ export { CodeMsg as default };
@@ -0,0 +1,11 @@
1
+ import { NoticeMessageBody } from "agora-chat-uikit/types/module/noticeMessage/NoticeMessage";
2
+ import { ChatSDK } from "agora-chat-uikit/types/module/SDK";
3
+ import React from "react";
4
+ interface IQuestionButtonMsg {
5
+ msg: ChatSDK.MessageBody | NoticeMessageBody;
6
+ isMySelf: boolean;
7
+ avatar?: React.ReactNode;
8
+ onSelectAnswer?: (extInfo: any) => void;
9
+ }
10
+ declare const QustionButtonMsg: React.FC<IQuestionButtonMsg>;
11
+ export default QustionButtonMsg;
@@ -0,0 +1,61 @@
1
+ import _mapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/map';
2
+ import { BaseMessage } from 'agora-chat-uikit';
3
+ import { Button } from 'antd';
4
+ import React from 'react';
5
+
6
+ var QustionButtonMsg = function QustionButtonMsg(props) {
7
+ var _context;
8
+ var msg = props.msg,
9
+ isMySelf = props.isMySelf,
10
+ avatar = props.avatar,
11
+ onSelectAnswer = props.onSelectAnswer;
12
+ return /*#__PURE__*/React.createElement(BaseMessage, {
13
+ bubbleType: "none",
14
+ reaction: false,
15
+ select: false,
16
+ thread: false,
17
+ direction: isMySelf ? "rtl" : "ltr",
18
+ renderUserProfile: function renderUserProfile() {
19
+ return null;
20
+ },
21
+ nickName: undefined,
22
+ showMessageInfo: false,
23
+ message: msg,
24
+ customAction: {
25
+ visible: false,
26
+ icon: null,
27
+ actions: []
28
+ },
29
+ avatar: avatar
30
+ }, /*#__PURE__*/React.createElement("div", {
31
+ className: "text-[var(--im-main-fontColor)] flex flex-col gap-1 ".concat(isMySelf ? "items-end" : "items-start")
32
+ }, /*#__PURE__*/React.createElement("div", {
33
+ style: {
34
+ background: isMySelf ? "var(--im-msg-bubble-color-right)" : "var(--im-msg-bubble-color-left)",
35
+ borderRadius: "9px",
36
+ padding: "10px 12px",
37
+ color: "var(--im-msg-bubble-font-color)"
38
+ },
39
+ className: "inline-block"
40
+ }, /*#__PURE__*/React.createElement("span", {
41
+ className: "cui-message-text"
42
+ }, msg.customExts.content)), /*#__PURE__*/React.createElement("div", {
43
+ className: "flex flex-col gap-3"
44
+ }, _mapInstanceProperty(_context = msg.customExts.guidance_list).call(_context, function (text) {
45
+ return /*#__PURE__*/React.createElement(Button, {
46
+ key: text,
47
+ className: "w-[400px] !h-[45px] !bg-[#2c7cf5]",
48
+ onClick: function onClick() {
49
+ onSelectAnswer && onSelectAnswer({
50
+ text: text,
51
+ step: msg.customExts.step,
52
+ customEvent: msg.customEvent
53
+ });
54
+ }
55
+ }, /*#__PURE__*/React.createElement("span", {
56
+ className: "text-[#fff]"
57
+ }, text));
58
+ }))));
59
+ };
60
+
61
+ export { QustionButtonMsg as default };
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import { Conversation } from "agora-chat-uikit";
3
3
  import { ChatSDK } from "agora-chat-uikit/types/module/SDK";
4
4
  import { ChatType } from "agora-chat-uikit/types/module/types/messageType";
5
+ import { AIReportMessageExts } from "@components/type";
5
6
  import "./style/index.scss";
6
7
  export interface IHighlyCustomChat {
7
8
  conversationId: string;
@@ -11,8 +12,10 @@ export interface IHighlyCustomChat {
11
12
  renderHeader?: (cvs: Conversation) => React.ReactNode;
12
13
  renderInputView?: (cvs: Conversation, sendMessage: (text: string) => void) => React.ReactNode;
13
14
  renderQuestionList?: (cvs: Conversation, sendMessage: (text: string) => void) => React.ReactNode;
14
- sendMessageSuccessCallback?: (msg: ChatSDK.MessageBody) => void;
15
+ sendMessageSuccessCallback?: (msg: ChatSDK.MessageBody, extInfo?: any) => void;
15
16
  onLoginSuccess?: () => void;
17
+ onApply?: (code: string) => void;
18
+ onReportClick?: (report: AIReportMessageExts) => void;
16
19
  }
17
20
  declare const HighlyCustomChat: React.FC<IHighlyCustomChat>;
18
21
  export default HighlyCustomChat;
@@ -22,7 +22,10 @@ import { commonMessageInputConfig, commonMessageProps } from '../type.js';
22
22
  import { reportAgentInUse } from '../tools.js';
23
23
  import img from '../Icon/avatar_default.svg.js';
24
24
  import { aesKey, aesDecrypt } from '../IM/encryption.js';
25
+ import QustionButtonMsg from './QuestionButton/index.js';
26
+ import CodeMsg from './CodeMsg/index.js';
25
27
  import './style/index.scss';
28
+ import AIReportMsg from './AIReportMsg/index.js';
26
29
 
27
30
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
28
31
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context4, _context5; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context4 = ownKeys(Object(t), true)).call(_context4, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context5 = ownKeys(Object(t))).call(_context5, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -137,6 +140,8 @@ var HighlyCustomChat = function HighlyCustomChat(props) {
137
140
  }, formatMessageTime(msg.time)));
138
141
  };
139
142
  var _renderMessage = function renderMessage(msg) {
143
+ var _userInfo$uid3;
144
+ var isMySelf = (msg === null || msg === void 0 ? void 0 : msg.bySelf) === true || (msg === null || msg === void 0 ? void 0 : msg.from.toLowerCase()) === ((_userInfo$uid3 = userInfo.uid) === null || _userInfo$uid3 === void 0 ? void 0 : _userInfo$uid3.toLowerCase());
140
145
  if (msg.type === "txt") {
141
146
  return renderTxtMsg(msg);
142
147
  } else if (msg.type === "img") {
@@ -190,6 +195,38 @@ var HighlyCustomChat = function HighlyCustomChat(props) {
190
195
  },
191
196
  videoMessage: msg
192
197
  });
198
+ } else if (msg.type === "custom" && (msg === null || msg === void 0 ? void 0 : msg.customEvent) === "custom_ai_report") {
199
+ return /*#__PURE__*/React.createElement(AIReportMsg, {
200
+ onReportClick: props.onReportClick,
201
+ msg: msg,
202
+ isMySelf: isMySelf,
203
+ avatar: !isMySelf ? /*#__PURE__*/React.createElement("img", {
204
+ src: headerInfo.headerImageURL || img,
205
+ className: "w-[48px] h-[48px] rounded-full overflow-hidden object-fit"
206
+ }) : undefined
207
+ });
208
+ } else if (msg.type === "custom" && (msg === null || msg === void 0 ? void 0 : msg.customEvent) === "custom_coding") {
209
+ return /*#__PURE__*/React.createElement(CodeMsg, {
210
+ onApply: props.onApply,
211
+ msg: msg,
212
+ isMySelf: isMySelf,
213
+ avatar: !isMySelf ? /*#__PURE__*/React.createElement("img", {
214
+ src: headerInfo.headerImageURL || img,
215
+ className: "w-[48px] h-[48px] rounded-full overflow-hidden object-fit"
216
+ }) : undefined
217
+ });
218
+ } else if (msg.type === "custom" && (msg === null || msg === void 0 ? void 0 : msg.customEvent) === "custom_qa_guidance") {
219
+ return /*#__PURE__*/React.createElement(QustionButtonMsg, {
220
+ onSelectAnswer: function onSelectAnswer(extInfo) {
221
+ handleSendMessage(extInfo.text, extInfo);
222
+ },
223
+ msg: msg,
224
+ isMySelf: isMySelf,
225
+ avatar: !isMySelf ? /*#__PURE__*/React.createElement("img", {
226
+ src: headerInfo.headerImageURL || img,
227
+ className: "w-[48px] h-[48px] rounded-full overflow-hidden object-fit"
228
+ }) : undefined
229
+ });
193
230
  } else {
194
231
  return undefined;
195
232
  }
@@ -375,7 +412,7 @@ var HighlyCustomChat = function HighlyCustomChat(props) {
375
412
  };
376
413
  }, [getHeaderInfo, initConversation, props.conversationId]);
377
414
  var handleSendMessage = /*#__PURE__*/function () {
378
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(text) {
415
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(text, extInfo) {
379
416
  var txtMessage, cuiScrollList, cuiScrollListWrap, htmlString, template, node;
380
417
  return _regeneratorRuntime.wrap(function _callee$(_context2) {
381
418
  while (1) switch (_context2.prev = _context2.next) {
@@ -413,7 +450,7 @@ var HighlyCustomChat = function HighlyCustomChat(props) {
413
450
  }
414
451
  }
415
452
  }
416
- afterSendMsg(txtMessage);
453
+ afterSendMsg(txtMessage, extInfo);
417
454
  _context2.next = 13;
418
455
  break;
419
456
  case 10:
@@ -426,23 +463,23 @@ var HighlyCustomChat = function HighlyCustomChat(props) {
426
463
  }
427
464
  }, _callee, null, [[2, 10]]);
428
465
  }));
429
- return function handleSendMessage(_x) {
466
+ return function handleSendMessage(_x, _x2) {
430
467
  return _ref3.apply(this, arguments);
431
468
  };
432
469
  }();
433
470
  var afterSendMsg = /*#__PURE__*/function () {
434
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(msgInfo) {
471
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(msgInfo, extInfo) {
435
472
  return _regeneratorRuntime.wrap(function _callee2$(_context3) {
436
473
  while (1) switch (_context3.prev = _context3.next) {
437
474
  case 0:
438
- props.sendMessageSuccessCallback && props.sendMessageSuccessCallback(msgInfo);
475
+ props.sendMessageSuccessCallback && props.sendMessageSuccessCallback(msgInfo, extInfo);
439
476
  case 1:
440
477
  case "end":
441
478
  return _context3.stop();
442
479
  }
443
480
  }, _callee2);
444
481
  }));
445
- return function afterSendMsg(_x2) {
482
+ return function afterSendMsg(_x3, _x4) {
446
483
  return _ref4.apply(this, arguments);
447
484
  };
448
485
  }();
package/es/type.d.ts CHANGED
@@ -1,7 +1,79 @@
1
1
  import { MessageInputProps, MsgListProps } from "agora-chat-uikit";
2
+ import { ChatSDK } from "agora-chat-uikit/types/module/SDK";
3
+ import { NoticeMessageBody } from "agora-chat-uikit/types/module/noticeMessage/NoticeMessage";
2
4
  export type ICommonComponentProps = {
3
5
  className?: string;
4
6
  style?: React.CSSProperties;
5
7
  };
6
8
  export declare const commonMessageInputConfig: MessageInputProps;
7
9
  export declare const commonMessageProps: MsgListProps['messageProps'];
10
+ /**
11
+ * 自定义IM消息类型
12
+ * 基于Agora的ChatSDK.MessageBody扩展
13
+ */
14
+ export interface AIReportMessageExts {
15
+ /** 报告标题 */
16
+ title: string;
17
+ /** 报告描述内容 */
18
+ content: string;
19
+ /** token地址 */
20
+ tokenaddress: string;
21
+ /** token铸造平台: pumpfun, moonpump 或 others */
22
+ platform: 'pumpfun' | 'moonpump' | 'others';
23
+ /** 是否已在交易所上架: yes - 已在交易所; no - 内盘 */
24
+ isOnDex: boolean;
25
+ /** token名称 */
26
+ token_name: string;
27
+ /** token符号 */
28
+ token_symbol: string;
29
+ }
30
+ export interface PythonCodeMessageExts {
31
+ /** 代码内容 */
32
+ code: string;
33
+ /** 代码类型 默认‘python’ */
34
+ code_type: string;
35
+ /** 是否显示apply按钮 */
36
+ can_apply: boolean;
37
+ /** 是否显示copy按钮 */
38
+ can_copy: boolean;
39
+ }
40
+ export interface QAGuidanceMessageExts {
41
+ /** 引导内容描述 */
42
+ content: string;
43
+ /** 引导词数组,包含0到多个引导选项 */
44
+ guidance_list: string[];
45
+ }
46
+ /**
47
+ * 自定义消息类型定义
48
+ * 每种类型都与特定的扩展字段结构关联
49
+ */
50
+ /** AI报告消息 */
51
+ export interface AIReportMessage {
52
+ customEvent: 'custom_ai_report';
53
+ customExts: AIReportMessageExts;
54
+ }
55
+ /** 编程代码消息 */
56
+ export interface PythonCodeMessage {
57
+ customEvent: 'custom_coding';
58
+ customExts: PythonCodeMessageExts;
59
+ }
60
+ /** 问答引导消息 */
61
+ export interface QAGuidanceMessage {
62
+ customEvent: 'custom_qa_guidance';
63
+ customExts: QAGuidanceMessageExts;
64
+ }
65
+ /**
66
+ * 自定义消息类型守卫函数,用于判断和类型转换
67
+ */
68
+ /**
69
+ * 判断是否为AI报告消息
70
+ */
71
+ export declare function isAIReportMessage(msg: ChatSDK.MessageBody | NoticeMessageBody): msg is (ChatSDK.MessageBody | NoticeMessageBody) & AIReportMessage;
72
+ /**
73
+ * 判断是否为编程代码消息
74
+ */
75
+ export declare function isPythonCodeMessage(msg: ChatSDK.MessageBody | NoticeMessageBody): msg is (ChatSDK.MessageBody | NoticeMessageBody) & PythonCodeMessage;
76
+ /**
77
+ * 判断是否为问答引导消息
78
+ */
79
+ export declare function isQAGuidanceMessage(msg: ChatSDK.MessageBody | NoticeMessageBody): msg is (ChatSDK.MessageBody | NoticeMessageBody) & QAGuidanceMessage;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "whyuzeim",
3
- "version": "1.1.42",
3
+ "version": "1.1.44",
4
4
  "description": "im componenets",
5
5
  "main": "cjs/index.js",
6
6
  "module": "es/index.js",