@ai-group/chat-sdk 2.1.13 → 2.1.14
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.
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +1 -1
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js +41 -5
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/index.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.d.ts +1 -0
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.js +14 -3
- package/dist/cjs/components/XAdkChatbot/components/FunctionCallRender/styles.js.map +2 -2
- package/dist/cjs/components/XAdkChatbot/index.d.ts +1 -1
- package/dist/cjs/components/XAdkChatbot/index.js +30 -13
- package/dist/cjs/components/XAdkChatbot/index.js.map +3 -3
- package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.d.ts +2 -2
- package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js +26 -9
- package/dist/cjs/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +2 -2
- package/dist/cjs/components/XAiThoughtChain/XAiThoughtChain.stories.d.ts +6 -0
- package/dist/cjs/components/XAiThoughtChain/XAiThoughtChain.stories.js +180 -0
- package/dist/cjs/components/XAiThoughtChain/XAiThoughtChain.stories.js.map +7 -0
- package/dist/cjs/components/XAiThoughtChain/index.d.ts +4 -0
- package/dist/cjs/components/XAiThoughtChain/index.js +155 -0
- package/dist/cjs/components/XAiThoughtChain/index.js.map +7 -0
- package/dist/cjs/components/XAiThoughtChain/styles.d.ts +60 -0
- package/dist/cjs/components/XAiThoughtChain/styles.js +195 -0
- package/dist/cjs/components/XAiThoughtChain/styles.js.map +7 -0
- package/dist/cjs/hooks/useADKChat.d.ts +2 -2
- package/dist/cjs/hooks/useADKChat.js +228 -180
- package/dist/cjs/hooks/useADKChat.js.map +2 -2
- package/dist/cjs/types/XAiThoughtChain.d.ts +25 -0
- package/dist/cjs/types/XAiThoughtChain.js +18 -0
- package/dist/cjs/types/XAiThoughtChain.js.map +7 -0
- package/dist/cjs/types/index.d.ts +9 -8
- package/dist/cjs/types/index.js +2 -0
- package/dist/cjs/types/index.js.map +2 -2
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.js +7 -0
- package/dist/cjs/utils/index.js.map +2 -2
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.d.ts +1 -1
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js +17 -15
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/index.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.d.ts +1 -0
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.js +7 -6
- package/dist/esm/components/XAdkChatbot/components/FunctionCallRender/styles.js.map +1 -1
- package/dist/esm/components/XAdkChatbot/index.d.ts +1 -1
- package/dist/esm/components/XAdkChatbot/index.js +20 -18
- package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
- package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.d.ts +2 -2
- package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js +45 -40
- package/dist/esm/components/XAdkWebProvider/XAdkWebProvider.stories.js.map +1 -1
- package/dist/esm/components/XAiThoughtChain/XAiThoughtChain.stories.d.ts +6 -0
- package/dist/esm/components/XAiThoughtChain/XAiThoughtChain.stories.js +159 -0
- package/dist/esm/components/XAiThoughtChain/XAiThoughtChain.stories.js.map +1 -0
- package/dist/esm/components/XAiThoughtChain/index.d.ts +4 -0
- package/dist/esm/components/XAiThoughtChain/index.js +180 -0
- package/dist/esm/components/XAiThoughtChain/index.js.map +1 -0
- package/dist/esm/components/XAiThoughtChain/styles.d.ts +60 -0
- package/dist/esm/components/XAiThoughtChain/styles.js +40 -0
- package/dist/esm/components/XAiThoughtChain/styles.js.map +1 -0
- package/dist/esm/hooks/useADKChat.d.ts +2 -2
- package/dist/esm/hooks/useADKChat.js +59 -57
- package/dist/esm/hooks/useADKChat.js.map +1 -1
- package/dist/esm/types/XAiThoughtChain.d.ts +25 -0
- package/dist/esm/types/XAiThoughtChain.js +2 -0
- package/dist/esm/types/XAiThoughtChain.js.map +1 -0
- package/dist/esm/types/index.d.ts +9 -8
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.js +4 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
|
|
2
|
-
import React, { useMemo, useCallback, useEffect, useRef } from
|
|
3
|
-
import { Button } from
|
|
4
|
-
import { SwapRightOutlined } from
|
|
2
|
+
import React, { useMemo, useCallback, useEffect, useRef } from "react";
|
|
3
|
+
import { Button } from "antd";
|
|
4
|
+
import { SwapRightOutlined } from "@ant-design/icons";
|
|
5
5
|
import { useStyles } from "./styles";
|
|
6
6
|
import MarkdownRender from "./components/MarkdownRender";
|
|
7
7
|
import FunctionCallRender from "./components/FunctionCallRender";
|
|
@@ -42,7 +42,7 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
|
|
|
42
42
|
if (!loading) return;
|
|
43
43
|
if (userHasScrolledRef.current) return;
|
|
44
44
|
(_messagesEndRef$curre = messagesEndRef.current) === null || _messagesEndRef$curre === void 0 || _messagesEndRef$curre.scrollIntoView({
|
|
45
|
-
behavior:
|
|
45
|
+
behavior: "smooth"
|
|
46
46
|
});
|
|
47
47
|
}, [loading, messages]);
|
|
48
48
|
|
|
@@ -69,9 +69,9 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
|
|
|
69
69
|
useEffect(function () {
|
|
70
70
|
var listElement = listRef.current;
|
|
71
71
|
if (!listElement) return;
|
|
72
|
-
listElement.addEventListener(
|
|
72
|
+
listElement.addEventListener("scroll", handleScroll);
|
|
73
73
|
return function () {
|
|
74
|
-
listElement.removeEventListener(
|
|
74
|
+
listElement.removeEventListener("scroll", handleScroll);
|
|
75
75
|
};
|
|
76
76
|
}, []);
|
|
77
77
|
|
|
@@ -89,7 +89,7 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
|
|
|
89
89
|
queueMicrotask(function () {
|
|
90
90
|
var _messagesEndRef$curre2;
|
|
91
91
|
(_messagesEndRef$curre2 = messagesEndRef.current) === null || _messagesEndRef$curre2 === void 0 || _messagesEndRef$curre2.scrollIntoView({
|
|
92
|
-
behavior:
|
|
92
|
+
behavior: "instant"
|
|
93
93
|
});
|
|
94
94
|
});
|
|
95
95
|
// 重置用户滚动状态
|
|
@@ -105,7 +105,7 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
|
|
|
105
105
|
try {
|
|
106
106
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
107
107
|
var msg = _step.value;
|
|
108
|
-
if (msg.role ===
|
|
108
|
+
if (msg.role === "bot" && msg.invocationId) {
|
|
109
109
|
map.set(msg.invocationId, msg.id);
|
|
110
110
|
}
|
|
111
111
|
}
|
|
@@ -121,11 +121,13 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
|
|
|
121
121
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
122
122
|
className: styles.list,
|
|
123
123
|
ref: listRef,
|
|
124
|
-
children: [/*#__PURE__*/_jsx("div", {
|
|
124
|
+
children: [prologue && /*#__PURE__*/_jsx("div", {
|
|
125
125
|
className: styles.prologue,
|
|
126
|
-
children:
|
|
126
|
+
children: /*#__PURE__*/_jsx(MarkdownRender, {
|
|
127
|
+
text: prologue
|
|
128
|
+
})
|
|
127
129
|
}), messages.map(function (msg, i) {
|
|
128
|
-
if (msg.role ===
|
|
130
|
+
if (msg.role === "user") {
|
|
129
131
|
if (msg.text) {
|
|
130
132
|
return /*#__PURE__*/_jsx("div", {
|
|
131
133
|
className: styles.userMsg,
|
|
@@ -148,7 +150,7 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
|
|
|
148
150
|
}
|
|
149
151
|
var isLast = i === lastIndex;
|
|
150
152
|
var isLoading = isLast && loading;
|
|
151
|
-
var isLastBotMsg = lastMessageMap.get((msg === null || msg === void 0 ? void 0 : msg.invocationId) ||
|
|
153
|
+
var isLastBotMsg = lastMessageMap.get((msg === null || msg === void 0 ? void 0 : msg.invocationId) || "") === msg.id;
|
|
152
154
|
if (msg.text) {
|
|
153
155
|
if (msg.thought) {
|
|
154
156
|
return /*#__PURE__*/_jsxs("div", {
|
|
@@ -212,12 +214,12 @@ var XAdkChatbot = function XAdkChatbot(_ref) {
|
|
|
212
214
|
onSuggest === null || onSuggest === void 0 || onSuggest(item);
|
|
213
215
|
},
|
|
214
216
|
style: {
|
|
215
|
-
whiteSpace:
|
|
216
|
-
height:
|
|
217
|
-
wordWrap:
|
|
218
|
-
textAlign:
|
|
219
|
-
padding:
|
|
220
|
-
lineHeight:
|
|
217
|
+
whiteSpace: "normal",
|
|
218
|
+
height: "auto",
|
|
219
|
+
wordWrap: "break-word",
|
|
220
|
+
textAlign: "left",
|
|
221
|
+
padding: "4px 15px",
|
|
222
|
+
lineHeight: "1.5"
|
|
221
223
|
},
|
|
222
224
|
children: item
|
|
223
225
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useMemo","useCallback","useEffect","useRef","Button","SwapRightOutlined","useStyles","MarkdownRender","FunctionCallRender","ThinkRender","XAdkSender","jsx","_jsx","jsxs","_jsxs","scrollThreshold","XAdkChatbot","_ref","_ref$allowUpload","allowUpload","_ref$uploadRequest","uploadRequest","_ref$loading","loading","prologue","suggestions","messages","_ref$initialized","initialized","footer","showFnCallDetail","_ref$clearBtnShow","clearBtnShow","onConfirm","onSubmit","onSuggest","onStop","onClear","styles","listRef","lastScrollTopRef","userHasScrolledRef","messagesEndRef","_messagesEndRef$curre","current","scrollIntoView","behavior","handleScroll","el","currentTop","scrollTop","isAtBottom","Math","abs","scrollHeight","clientHeight","listElement","addEventListener","removeEventListener","handleSubmit","_ref2","text","files","trim","queueMicrotask","_messagesEndRef$curre2","setTimeout","lastIndex","length","lastMessageMap","map","Map","_iterator","_createForOfIteratorHelper","_step","s","n","done","msg","value","role","invocationId","set","id","err","e","f","className","wrapper","children","list","ref","i","userMsg","card","concat","functionResponse","showDetail","isLast","isLoading","isLastBotMsg","get","thought","botMsg","message","isLastMsg","fnCall","functionCall","item","suggestion","suggestContent","type","icon","iconPosition","onClick","style","whiteSpace","height","wordWrap","textAlign","padding","lineHeight"],"sources":["../../../../src/components/XAdkChatbot/index.tsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect, useRef } from 'react';\nimport { Button } from 'antd';\nimport { SwapRightOutlined } from '@ant-design/icons';\nimport { useStyles } from './styles';\nimport MarkdownRender from './components/MarkdownRender';\nimport FunctionCallRender from './components/FunctionCallRender';\nimport ThinkRender from './components/ThinkRender';\nimport XAdkSender from '../XAdkSender';\nimport type { IMessage, XAdkChatbotProps, SendContent } from '@/types';\n\nconst scrollThreshold = 10; // 滚动阈值\n\n\nconst XAdkChatbot: React.FC<XAdkChatbotProps> = ({ \n allowUpload = false,\n uploadRequest = () => {},\n loading = false,\n prologue,\n suggestions,\n messages,\n initialized = true,\n footer,\n showFnCallDetail,\n clearBtnShow = true,\n onConfirm,\n onSubmit,\n onSuggest,\n onStop,\n onClear,\n }) => {\n const styles = useStyles();\n const listRef = useRef<HTMLDivElement>(null);\n const lastScrollTopRef = useRef(0);\n const userHasScrolledRef = useRef(false);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!loading) return;\n if (userHasScrolledRef.current) return;\n messagesEndRef.current?.scrollIntoView({\n behavior: 'smooth',\n });\n }, [loading, messages]);\n\n // 处理滚动事件 - 检测用户是否手动滚动\n const handleScroll = useCallback(() => {\n const el = listRef.current;\n if (!el) return;\n const currentTop = el.scrollTop;\n // 如果向上滚动,说明是手动干预\n if (currentTop < lastScrollTopRef.current) {\n userHasScrolledRef.current = true;\n }\n // 如果向下并且已经到了底部,则恢复自动\n const isAtBottom = \n Math.abs(el.scrollHeight - currentTop - el.clientHeight) <= scrollThreshold;\n\n if (isAtBottom) {\n userHasScrolledRef.current = false;\n }\n\n // 更新上次位置\n lastScrollTopRef.current = currentTop;\n }, []);\n\n // 监听滚动事件\n useEffect(() => {\n const listElement = listRef.current\n if (!listElement) return;\n\n listElement.addEventListener('scroll', handleScroll);\n return () => {\n listElement.removeEventListener('scroll', handleScroll);\n };\n }, []);\n\n // 发送消息\n const handleSubmit = ({ text, files }: SendContent) => {\n if (loading) return;\n if (!text?.trim()) return;\n onSubmit?.({ text, files });\n // 滚动\n queueMicrotask(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: 'instant' });\n });\n // 重置用户滚动状态\n setTimeout(() => {\n userHasScrolledRef.current = false;\n }, 0);\n };\n\n const lastIndex = messages.length - 1;\n\n const lastMessageMap = useMemo(() => {\n const map = new Map<string, string>();\n for (const msg of messages) {\n if (msg.role === 'bot' && msg.invocationId) {\n map.set(msg.invocationId, msg.id);\n }\n }\n return map;\n }, [messages]);\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.list} ref={listRef}>\n <div className={styles.prologue}>\n {prologue}\n </div>\n {messages.map((msg, i) => {\n if (msg.role === 'user') {\n if (msg.text) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.userMsg}>\n <div className={styles.card}>{msg.text}</div>\n </div>\n );\n }\n if (msg.functionResponse) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.userMsg}>\n <FunctionCallRender msg={msg} showDetail={showFnCallDetail} />\n </div>\n );\n }\n return null;\n }\n const isLast = i === lastIndex;\n const isLoading = isLast && loading;\n const isLastBotMsg = lastMessageMap.get(msg?.invocationId || '') === msg.id;\n \n if (msg.text) {\n if (msg.thought) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <ThinkRender\n msg={msg}\n loading={isLoading}\n />\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n }\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <MarkdownRender text={msg.text} />\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n }\n const fnCall = msg.functionCall;\n if (fnCall) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <FunctionCallRender msg={msg} showDetail={showFnCallDetail} onConfirm={onConfirm}/>\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n }\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n {!isLoading && footer?.({ message: msg as IMessage, isLastMsg: isLast, isLastBotMsg })}\n </div>\n );\n })}\n <div>\n {suggestions?.map((item) => (\n <div key={item} className={styles.suggestion}>\n <div className={styles.suggestContent}>\n <Button\n type=\"text\"\n icon={<SwapRightOutlined />}\n iconPosition='end'\n onClick={() => {\n if (!item) return;\n onSuggest?.(item);\n }}\n style={{ \n whiteSpace: 'normal',\n height: 'auto',\n wordWrap: 'break-word',\n textAlign: 'left',\n padding: '4px 15px',\n lineHeight: '1.5'\n }}\n >\n {item}\n </Button>\n </div>\n </div>\n ))}\n </div>\n <div ref={messagesEndRef} />\n </div>\n <XAdkSender\n allowUpload={allowUpload}\n uploadRequest={uploadRequest}\n loading={loading}\n clearBtnShow={clearBtnShow}\n onSubmit={handleSubmit}\n onClear={onClear}\n onStop={onStop}\n />\n </div>\n );\n};\n\nexport default XAdkChatbot;"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useMemo","useCallback","useEffect","useRef","Button","SwapRightOutlined","useStyles","MarkdownRender","FunctionCallRender","ThinkRender","XAdkSender","jsx","_jsx","jsxs","_jsxs","scrollThreshold","XAdkChatbot","_ref","_ref$allowUpload","allowUpload","_ref$uploadRequest","uploadRequest","_ref$loading","loading","prologue","suggestions","messages","_ref$initialized","initialized","footer","showFnCallDetail","_ref$clearBtnShow","clearBtnShow","onConfirm","onSubmit","onSuggest","onStop","onClear","styles","listRef","lastScrollTopRef","userHasScrolledRef","messagesEndRef","_messagesEndRef$curre","current","scrollIntoView","behavior","handleScroll","el","currentTop","scrollTop","isAtBottom","Math","abs","scrollHeight","clientHeight","listElement","addEventListener","removeEventListener","handleSubmit","_ref2","text","files","trim","queueMicrotask","_messagesEndRef$curre2","setTimeout","lastIndex","length","lastMessageMap","map","Map","_iterator","_createForOfIteratorHelper","_step","s","n","done","msg","value","role","invocationId","set","id","err","e","f","className","wrapper","children","list","ref","i","userMsg","card","concat","functionResponse","showDetail","isLast","isLoading","isLastBotMsg","get","thought","botMsg","message","isLastMsg","fnCall","functionCall","item","suggestion","suggestContent","type","icon","iconPosition","onClick","style","whiteSpace","height","wordWrap","textAlign","padding","lineHeight"],"sources":["../../../../src/components/XAdkChatbot/index.tsx"],"sourcesContent":["import React, { useMemo, useCallback, useEffect, useRef } from \"react\";\nimport { Button } from \"antd\";\nimport { SwapRightOutlined } from \"@ant-design/icons\";\nimport { useStyles } from \"./styles\";\nimport MarkdownRender from \"./components/MarkdownRender\";\nimport FunctionCallRender from \"./components/FunctionCallRender\";\nimport ThinkRender from \"./components/ThinkRender\";\nimport XAdkSender from \"../XAdkSender\";\nimport type { IMessage, XAdkChatbotProps, SendContent } from \"@/types\";\n\nconst scrollThreshold = 10; // 滚动阈值\n\nconst XAdkChatbot: React.FC<XAdkChatbotProps> = ({\n allowUpload = false,\n uploadRequest = () => {},\n loading = false,\n prologue,\n suggestions,\n messages,\n initialized = true,\n footer,\n showFnCallDetail,\n clearBtnShow = true,\n onConfirm,\n onSubmit,\n onSuggest,\n onStop,\n onClear,\n}) => {\n const styles = useStyles();\n const listRef = useRef<HTMLDivElement>(null);\n const lastScrollTopRef = useRef(0);\n const userHasScrolledRef = useRef(false);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!loading) return;\n if (userHasScrolledRef.current) return;\n messagesEndRef.current?.scrollIntoView({\n behavior: \"smooth\",\n });\n }, [loading, messages]);\n\n // 处理滚动事件 - 检测用户是否手动滚动\n const handleScroll = useCallback(() => {\n const el = listRef.current;\n if (!el) return;\n const currentTop = el.scrollTop;\n // 如果向上滚动,说明是手动干预\n if (currentTop < lastScrollTopRef.current) {\n userHasScrolledRef.current = true;\n }\n // 如果向下并且已经到了底部,则恢复自动\n const isAtBottom =\n Math.abs(el.scrollHeight - currentTop - el.clientHeight) <=\n scrollThreshold;\n\n if (isAtBottom) {\n userHasScrolledRef.current = false;\n }\n\n // 更新上次位置\n lastScrollTopRef.current = currentTop;\n }, []);\n\n // 监听滚动事件\n useEffect(() => {\n const listElement = listRef.current;\n if (!listElement) return;\n\n listElement.addEventListener(\"scroll\", handleScroll);\n return () => {\n listElement.removeEventListener(\"scroll\", handleScroll);\n };\n }, []);\n\n // 发送消息\n const handleSubmit = ({ text, files }: SendContent) => {\n if (loading) return;\n if (!text?.trim()) return;\n onSubmit?.({ text, files });\n // 滚动\n queueMicrotask(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"instant\" });\n });\n // 重置用户滚动状态\n setTimeout(() => {\n userHasScrolledRef.current = false;\n }, 0);\n };\n\n const lastIndex = messages.length - 1;\n\n const lastMessageMap = useMemo(() => {\n const map = new Map<string, string>();\n for (const msg of messages) {\n if (msg.role === \"bot\" && msg.invocationId) {\n map.set(msg.invocationId, msg.id);\n }\n }\n return map;\n }, [messages]);\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.list} ref={listRef}>\n {prologue && (\n <div className={styles.prologue}>\n <MarkdownRender text={prologue} />\n </div>\n )}\n {messages.map((msg, i) => {\n if (msg.role === \"user\") {\n if (msg.text) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.userMsg}>\n <div className={styles.card}>{msg.text}</div>\n </div>\n );\n }\n if (msg.functionResponse) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.userMsg}>\n <FunctionCallRender msg={msg} showDetail={showFnCallDetail} />\n </div>\n );\n }\n return null;\n }\n const isLast = i === lastIndex;\n const isLoading = isLast && loading;\n const isLastBotMsg =\n lastMessageMap.get(msg?.invocationId || \"\") === msg.id;\n\n if (msg.text) {\n if (msg.thought) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <ThinkRender msg={msg} loading={isLoading} />\n {!isLoading &&\n footer?.({\n message: msg as IMessage,\n isLastMsg: isLast,\n isLastBotMsg,\n })}\n </div>\n );\n }\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <MarkdownRender text={msg.text} />\n {!isLoading &&\n footer?.({\n message: msg as IMessage,\n isLastMsg: isLast,\n isLastBotMsg,\n })}\n </div>\n );\n }\n const fnCall = msg.functionCall;\n if (fnCall) {\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n <FunctionCallRender\n msg={msg}\n showDetail={showFnCallDetail}\n onConfirm={onConfirm}\n />\n {!isLoading &&\n footer?.({\n message: msg as IMessage,\n isLastMsg: isLast,\n isLastBotMsg,\n })}\n </div>\n );\n }\n return (\n <div key={`${msg.id}-${i}`} className={styles.botMsg}>\n {!isLoading &&\n footer?.({\n message: msg as IMessage,\n isLastMsg: isLast,\n isLastBotMsg,\n })}\n </div>\n );\n })}\n <div>\n {suggestions?.map((item) => (\n <div key={item} className={styles.suggestion}>\n <div className={styles.suggestContent}>\n <Button\n type=\"text\"\n icon={<SwapRightOutlined />}\n iconPosition=\"end\"\n onClick={() => {\n if (!item) return;\n onSuggest?.(item);\n }}\n style={{\n whiteSpace: \"normal\",\n height: \"auto\",\n wordWrap: \"break-word\",\n textAlign: \"left\",\n padding: \"4px 15px\",\n lineHeight: \"1.5\",\n }}\n >\n {item}\n </Button>\n </div>\n </div>\n ))}\n </div>\n <div ref={messagesEndRef} />\n </div>\n <XAdkSender\n allowUpload={allowUpload}\n uploadRequest={uploadRequest}\n loading={loading}\n clearBtnShow={clearBtnShow}\n onSubmit={handleSubmit}\n onClear={onClear}\n onStop={onStop}\n />\n </div>\n );\n};\n\nexport default XAdkChatbot;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from
|
|
2
|
-
import XAdkWebProvider from
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
|
+
import XAdkWebProvider from "./index";
|
|
3
3
|
declare const meta: Meta<typeof XAdkWebProvider>;
|
|
4
4
|
export default meta;
|
|
5
5
|
type Story = StoryObj<typeof meta>;
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
-
import React from
|
|
3
|
-
import { Button } from
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Button } from "antd";
|
|
4
4
|
import XAdkWebProvider from "./index";
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
6
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
7
|
var meta = {
|
|
8
|
-
title:
|
|
8
|
+
title: "AI组件/XAdkWebProvider AI容器",
|
|
9
9
|
component: XAdkWebProvider,
|
|
10
10
|
parameters: {
|
|
11
|
-
layout:
|
|
11
|
+
layout: "centered",
|
|
12
12
|
docs: {
|
|
13
13
|
description: {
|
|
14
|
-
component:
|
|
14
|
+
component: "AI 聊天机器人容器组件,提供全局上下文和消息管理功能。"
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
|
-
tags: [
|
|
18
|
+
tags: ["autodocs"],
|
|
19
19
|
argTypes: {
|
|
20
20
|
config: {
|
|
21
|
-
description:
|
|
21
|
+
description: "配置信息",
|
|
22
22
|
table: {
|
|
23
23
|
type: {
|
|
24
|
-
summary:
|
|
24
|
+
summary: "XAdkWebProviderConfig",
|
|
25
25
|
detail: "{\n appNo?: string; // \u5E94\u7528\u552F\u4E00\u7F16\u53F7\n }"
|
|
26
26
|
},
|
|
27
|
-
category:
|
|
27
|
+
category: "配置选项"
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
},
|
|
@@ -32,7 +32,7 @@ var meta = {
|
|
|
32
32
|
decorators: [function (Story) {
|
|
33
33
|
return /*#__PURE__*/_jsx("div", {
|
|
34
34
|
style: {
|
|
35
|
-
padding:
|
|
35
|
+
padding: "20px"
|
|
36
36
|
},
|
|
37
37
|
children: /*#__PURE__*/_jsx(Story, {})
|
|
38
38
|
});
|
|
@@ -47,23 +47,23 @@ export var 单聊天窗口实例 = {
|
|
|
47
47
|
var _providerRef$current;
|
|
48
48
|
if ((_providerRef$current = providerRef.current) !== null && _providerRef$current !== void 0 && _providerRef$current.chat) {
|
|
49
49
|
providerRef.current.chat({
|
|
50
|
-
text:
|
|
50
|
+
text: "你好,AI!"
|
|
51
51
|
});
|
|
52
52
|
} else {
|
|
53
|
-
console.log(
|
|
53
|
+
console.log("XAdkWebProvider ref 未准备好或 chat 方法不存在");
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
56
|
return /*#__PURE__*/_jsxs("div", {
|
|
57
57
|
style: {
|
|
58
|
-
display:
|
|
58
|
+
display: "flex"
|
|
59
59
|
},
|
|
60
60
|
children: [/*#__PURE__*/_jsx("div", {
|
|
61
61
|
style: {
|
|
62
|
-
display:
|
|
63
|
-
flexDirection:
|
|
64
|
-
gap:
|
|
65
|
-
marginRight:
|
|
66
|
-
justifyContent:
|
|
62
|
+
display: "flex",
|
|
63
|
+
flexDirection: "column",
|
|
64
|
+
gap: "12px",
|
|
65
|
+
marginRight: "24px",
|
|
66
|
+
justifyContent: "center"
|
|
67
67
|
},
|
|
68
68
|
children: /*#__PURE__*/_jsx(Button, {
|
|
69
69
|
type: "primary",
|
|
@@ -72,8 +72,8 @@ export var 单聊天窗口实例 = {
|
|
|
72
72
|
})
|
|
73
73
|
}), /*#__PURE__*/_jsx("div", {
|
|
74
74
|
style: {
|
|
75
|
-
maxWidth:
|
|
76
|
-
height:
|
|
75
|
+
maxWidth: "350px",
|
|
76
|
+
height: "600px"
|
|
77
77
|
},
|
|
78
78
|
children: /*#__PURE__*/_jsx(XAdkWebProvider, _objectSpread({
|
|
79
79
|
ref: providerRef
|
|
@@ -82,12 +82,12 @@ export var 单聊天窗口实例 = {
|
|
|
82
82
|
});
|
|
83
83
|
},
|
|
84
84
|
args: {
|
|
85
|
-
url:
|
|
86
|
-
token:
|
|
85
|
+
url: "https://m-poc-dev.zaxline.com",
|
|
86
|
+
token: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIl0sImV4cCI6MTc2Nzk1MjM0NywianRpIjoiSHpLMll4cVdjSTA3QWtmOHlsQXYwV0w0aE5jIiwiY2xpZW50X2lkIjoiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIn0.AjABoyZFxAACkfy-ywLlfaJd6YY0Ir3pBGx_-HzW9di9p_4rnptbFI4adk9pktSVtlLB0cs45SU6uzp6VCJUj9-q-MP8QBqL6i7u2HV9e-kuBJgyIZD4t0PsazpJNu4rDlBAymYzw73ptLPjCwsUkckUz4Xhy1WmR8mpmuG0nuSWzlDlWKiaPgeMhA0Cnp4BV47zplvQ-r60VkarCg9JGHQNmIkQfG3llcjc-ZK4UKVkrFZynXhcCsp1ry7TwfRnwtXwQ1kZXDmeQxWFudhVaHwthraFF-fkHmYZpyTDrZQJY2Rn9nWO59ZHNh3I6-KiKdsNzv8Jl5T_dCUVPj7l3w",
|
|
87
87
|
config: {
|
|
88
|
-
appNo:
|
|
88
|
+
appNo: "MFX5TxlheIKbekZHKoeOVNlo"
|
|
89
89
|
},
|
|
90
|
-
providerId:
|
|
90
|
+
providerId: "demo-provider"
|
|
91
91
|
}
|
|
92
92
|
};
|
|
93
93
|
|
|
@@ -97,34 +97,38 @@ export var 携带历史记录实例 = {
|
|
|
97
97
|
var providerRef = React.useRef(null);
|
|
98
98
|
var handleSendMessage = function handleSendMessage() {
|
|
99
99
|
var _providerRef$current2;
|
|
100
|
-
if ((_providerRef$current2 = providerRef.current) !== null && _providerRef$current2 !== void 0 && _providerRef$current2.
|
|
101
|
-
providerRef.current.
|
|
102
|
-
text:
|
|
100
|
+
if ((_providerRef$current2 = providerRef.current) !== null && _providerRef$current2 !== void 0 && _providerRef$current2.startChat) {
|
|
101
|
+
providerRef.current.startChat({
|
|
102
|
+
text: "你好,AI!",
|
|
103
103
|
// 上传文案
|
|
104
104
|
files: [] // 如果需要上传附件
|
|
105
105
|
});
|
|
106
106
|
} else {
|
|
107
|
-
console.log(
|
|
107
|
+
console.log("XAdkWebProvider ref 未准备好或 chat 方法不存在");
|
|
108
108
|
}
|
|
109
109
|
};
|
|
110
110
|
var handleOnEvent = function handleOnEvent(event) {
|
|
111
111
|
var code = event.code,
|
|
112
112
|
data = event.data;
|
|
113
113
|
console.warn(code);
|
|
114
|
-
if (code ===
|
|
114
|
+
if (code === "SESSION_SWITCH") {
|
|
115
115
|
console.log(providerRef.current.getMessages());
|
|
116
|
-
} else if (code ===
|
|
116
|
+
} else if (code === "APP_MESSAGES_INIT_SUCCESS") {
|
|
117
117
|
console.log(code, data);
|
|
118
|
+
} else if (code === "APP_CONFIG_INIT_SUCCESS") {
|
|
119
|
+
setTimeout(function () {
|
|
120
|
+
handleSendMessage();
|
|
121
|
+
}, 2000);
|
|
118
122
|
}
|
|
119
123
|
};
|
|
120
124
|
return /*#__PURE__*/_jsx("div", {
|
|
121
125
|
style: {
|
|
122
|
-
display:
|
|
126
|
+
display: "flex"
|
|
123
127
|
},
|
|
124
128
|
children: /*#__PURE__*/_jsx("div", {
|
|
125
129
|
style: {
|
|
126
|
-
height:
|
|
127
|
-
width:
|
|
130
|
+
height: "600px",
|
|
131
|
+
width: "100vw"
|
|
128
132
|
},
|
|
129
133
|
children: /*#__PURE__*/_jsx(XAdkWebProvider, _objectSpread(_objectSpread({
|
|
130
134
|
ref: providerRef
|
|
@@ -142,17 +146,18 @@ export var 携带历史记录实例 = {
|
|
|
142
146
|
});
|
|
143
147
|
},
|
|
144
148
|
args: {
|
|
145
|
-
url:
|
|
146
|
-
token:
|
|
149
|
+
url: "https://m-poc-dev.zaxline.com",
|
|
150
|
+
token: "eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIzanQyWWJEamV3Vm4yUEhSS2FEZkpFZ08iLCJhdWQiOiIzanQyWWJEamV3Vm4yUEhSS2FEZkpFZ08iLCJuYmYiOjE3NzI3MDA1MzcsInVzZXJfaWQiOiJWNFNPSG1KbzNaZWE0Uk51ZzdYWDJBPT0iLCJzY29wZSI6WyIzanQyWWJEamV3Vm4yUEhSS2FEZkpFZ08iXSwiaXNzIjoiaHR0cDovL2htLWF1dGgtc2VydmVyLnhsaW5lLWRldi50ZXN0LnhpbmtlLmJpeiIsImV4cCI6MTc3MjcwNzczNywiaWF0IjoxNzcyNzAwNTM3LCJqdGkiOiJlZWM3NzA2Mi01YmNjLTRlOTgtYTExZC1hOThjN2Q3NmZlZjIiLCJjbGllbnRfaWQiOiIzanQyWWJEamV3Vm4yUEhSS2FEZkpFZ08ifQ.eDF_7XsgyAehFXTfB-6FcJglLDacEQz-UGLYGuI3lv-QQnSLekK5DvHBBA9T56OZ6DlQLMC3vhtvJV10lQwigWLE-b4fYTM205mhrtcBQFTUu0EBRTm0g_5sItw-0qaR9E6729H4s8Ty8zyst_nwGhxHWGMjg80cZM47UXhzEpL18wr2JDEWZmq7ZrvxFxqGiR2kjHMB1MOqIEIqGdwBmIDWkZus1qOFJzKN2tSd5Rd4hcLW3pdXmcEJZnVQfAwjqUTu5Peq7mSS0jXh_CIie8tJMOBX7-Fy3N10GSuYZSPCm3Aw0SPnRKgqzh2l4_401yw0lbX36QHBrTOxlXu_Zw",
|
|
147
151
|
config: {
|
|
148
|
-
appNo:
|
|
152
|
+
appNo: "3jt2YbDjewVn2PHRKaDfJEgO",
|
|
153
|
+
chatProps: {
|
|
154
|
+
clearBtnShow: false
|
|
155
|
+
},
|
|
149
156
|
session: {
|
|
150
157
|
showSessionList: true
|
|
151
|
-
}
|
|
152
|
-
showFirstSession: true,
|
|
153
|
-
allowUpload: true
|
|
158
|
+
}
|
|
154
159
|
},
|
|
155
|
-
providerId:
|
|
160
|
+
providerId: "demo-provider"
|
|
156
161
|
}
|
|
157
162
|
};
|
|
158
163
|
//# sourceMappingURL=XAdkWebProvider.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Button","XAdkWebProvider","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","config","table","type","summary","detail","category","decorators","Story","style","padding","children","单聊天窗口实例","render","args","providerRef","useRef","handleSendMessage","_providerRef$current","current","chat","text","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","maxWidth","height","_objectSpread","ref","url","token","appNo","providerId","携带历史记录实例","_providerRef$current2","files","handleOnEvent","event","code","data","warn","getMessages","width","onError","providerError","onSuccess","onStream","onEvent","
|
|
1
|
+
{"version":3,"names":["React","Button","XAdkWebProvider","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","config","table","type","summary","detail","category","decorators","Story","style","padding","children","单聊天窗口实例","render","args","providerRef","useRef","handleSendMessage","_providerRef$current","current","chat","text","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","maxWidth","height","_objectSpread","ref","url","token","appNo","providerId","携带历史记录实例","_providerRef$current2","startChat","files","handleOnEvent","event","code","data","warn","getMessages","setTimeout","width","onError","providerError","onSuccess","onStream","onEvent","chatProps","clearBtnShow","session","showSessionList"],"sources":["../../../../src/components/XAdkWebProvider/XAdkWebProvider.stories.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-vite\";\nimport { Button } from \"antd\";\nimport XAdkWebProvider from \"./index\";\n\nconst meta: Meta<typeof XAdkWebProvider> = {\n title: \"AI组件/XAdkWebProvider AI容器\",\n component: XAdkWebProvider,\n parameters: {\n layout: \"centered\",\n docs: {\n description: {\n component: \"AI 聊天机器人容器组件,提供全局上下文和消息管理功能。\",\n },\n },\n },\n tags: [\"autodocs\"],\n argTypes: {\n config: {\n description: \"配置信息\",\n table: {\n type: {\n summary: \"XAdkWebProviderConfig\",\n detail: `{\n appNo?: string; // 应用唯一编号\n }`,\n },\n category: \"配置选项\",\n },\n },\n },\n // 添加装饰器,确保组件有必要的上下文\n decorators: [\n (Story) => (\n <div style={{ padding: \"20px\" }}>\n <Story />\n </div>\n ),\n ],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 使用 Provider 的 XAiChatbot\nexport const 单聊天窗口实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.chat) {\n providerRef.current.chat({ text: \"你好,AI!\" });\n } else {\n console.log(\"XAdkWebProvider ref 未准备好或 chat 方法不存在\");\n }\n };\n\n return (\n <div style={{ display: \"flex\" }}>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"12px\",\n marginRight: \"24px\",\n justifyContent: \"center\",\n }}\n >\n <Button type=\"primary\" onClick={handleSendMessage}>\n 发送消息\n </Button>\n </div>\n <div style={{ maxWidth: \"350px\", height: \"600px\" }}>\n <XAdkWebProvider\n ref={providerRef}\n {...args}\n // onError={(providerError) => console.log(providerError)}\n // onMessage={(data) => console.log(data)}\n ></XAdkWebProvider>\n </div>\n </div>\n );\n },\n args: {\n url: \"https://m-poc-dev.zaxline.com\",\n token:\n \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiVjRTT0htSm8zWmVhNFJOdWc3WFgyQT09Iiwic2NvcGUiOlsiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIl0sImV4cCI6MTc2Nzk1MjM0NywianRpIjoiSHpLMll4cVdjSTA3QWtmOHlsQXYwV0w0aE5jIiwiY2xpZW50X2lkIjoiTUZYNVR4bGhlSUtiZWtaSEtvZU9WTmxvIn0.AjABoyZFxAACkfy-ywLlfaJd6YY0Ir3pBGx_-HzW9di9p_4rnptbFI4adk9pktSVtlLB0cs45SU6uzp6VCJUj9-q-MP8QBqL6i7u2HV9e-kuBJgyIZD4t0PsazpJNu4rDlBAymYzw73ptLPjCwsUkckUz4Xhy1WmR8mpmuG0nuSWzlDlWKiaPgeMhA0Cnp4BV47zplvQ-r60VkarCg9JGHQNmIkQfG3llcjc-ZK4UKVkrFZynXhcCsp1ry7TwfRnwtXwQ1kZXDmeQxWFudhVaHwthraFF-fkHmYZpyTDrZQJY2Rn9nWO59ZHNh3I6-KiKdsNzv8Jl5T_dCUVPj7l3w\",\n config: {\n appNo: \"MFX5TxlheIKbekZHKoeOVNlo\",\n },\n providerId: \"demo-provider\",\n },\n};\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录实例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n const handleSendMessage = () => {\n if (providerRef.current?.startChat) {\n providerRef.current.startChat({\n text: \"你好,AI!\", // 上传文案\n files: [], // 如果需要上传附件\n });\n } else {\n console.log(\"XAdkWebProvider ref 未准备好或 chat 方法不存在\");\n }\n };\n\n const handleOnEvent = (event: any) => {\n const { code, data } = event;\n console.warn(code);\n if (code === \"SESSION_SWITCH\") {\n console.log(providerRef.current.getMessages());\n } else if (code === \"APP_MESSAGES_INIT_SUCCESS\") {\n console.log(code, data);\n } else if (code === \"APP_CONFIG_INIT_SUCCESS\") {\n setTimeout(() => {\n handleSendMessage();\n }, 2000);\n }\n };\n\n return (\n <div style={{ display: \"flex\" }}>\n <div style={{ height: \"600px\", width: \"100vw\" }}>\n <XAdkWebProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onSuccess={handleOnEvent}\n onStream={(data) => console.log(data)}\n onEvent={handleOnEvent}\n />\n </div>\n </div>\n );\n },\n args: {\n url: \"https://m-poc-dev.zaxline.com\",\n token:\n \"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIzanQyWWJEamV3Vm4yUEhSS2FEZkpFZ08iLCJhdWQiOiIzanQyWWJEamV3Vm4yUEhSS2FEZkpFZ08iLCJuYmYiOjE3NzI3MDA1MzcsInVzZXJfaWQiOiJWNFNPSG1KbzNaZWE0Uk51ZzdYWDJBPT0iLCJzY29wZSI6WyIzanQyWWJEamV3Vm4yUEhSS2FEZkpFZ08iXSwiaXNzIjoiaHR0cDovL2htLWF1dGgtc2VydmVyLnhsaW5lLWRldi50ZXN0LnhpbmtlLmJpeiIsImV4cCI6MTc3MjcwNzczNywiaWF0IjoxNzcyNzAwNTM3LCJqdGkiOiJlZWM3NzA2Mi01YmNjLTRlOTgtYTExZC1hOThjN2Q3NmZlZjIiLCJjbGllbnRfaWQiOiIzanQyWWJEamV3Vm4yUEhSS2FEZkpFZ08ifQ.eDF_7XsgyAehFXTfB-6FcJglLDacEQz-UGLYGuI3lv-QQnSLekK5DvHBBA9T56OZ6DlQLMC3vhtvJV10lQwigWLE-b4fYTM205mhrtcBQFTUu0EBRTm0g_5sItw-0qaR9E6729H4s8Ty8zyst_nwGhxHWGMjg80cZM47UXhzEpL18wr2JDEWZmq7ZrvxFxqGiR2kjHMB1MOqIEIqGdwBmIDWkZus1qOFJzKN2tSd5Rd4hcLW3pdXmcEJZnVQfAwjqUTu5Peq7mSS0jXh_CIie8tJMOBX7-Fy3N10GSuYZSPCm3Aw0SPnRKgqzh2l4_401yw0lbX36QHBrTOxlXu_Zw\",\n config: {\n appNo: \"3jt2YbDjewVn2PHRKaDfJEgO\",\n chatProps: {\n clearBtnShow: false,\n },\n session: {\n showSessionList: true,\n },\n },\n providerId: \"demo-provider\",\n },\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
|
+
import { useState, useEffect } from "react";
|
|
5
|
+
import XAiThoughtChain from ".";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
var meta = {
|
|
8
|
+
title: "AI组件/XAiThoughtChain 思维链",
|
|
9
|
+
component: XAiThoughtChain,
|
|
10
|
+
parameters: {},
|
|
11
|
+
tags: ["autodocs"],
|
|
12
|
+
argTypes: {}
|
|
13
|
+
};
|
|
14
|
+
export default meta;
|
|
15
|
+
// 基础用法
|
|
16
|
+
var BasicUsageStory = function BasicUsageStory() {
|
|
17
|
+
var _useState = useState([]),
|
|
18
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
19
|
+
items = _useState2[0],
|
|
20
|
+
setItems = _useState2[1];
|
|
21
|
+
var _useState3 = useState(true),
|
|
22
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
23
|
+
loading = _useState4[0],
|
|
24
|
+
setLoading = _useState4[1];
|
|
25
|
+
var steps = [{
|
|
26
|
+
type: "text",
|
|
27
|
+
key: "planning",
|
|
28
|
+
title: "任务规划",
|
|
29
|
+
content: "\n为了规划审核路线,我需要明确以下几个步骤:\n1. 确认审核的具体内容或目标(例如:OCR审核、批注生成等)。\n2. 根据审核内容,选择合适的工具(例如:`OCR审核1`、`生成批注pdf1`)。\n3. 提供必要的输入参数(例如:文件链接、日期、流水号等)。\n4. 执行工具并获取结果。\n\n由于用户未提供具体的审核内容或目标,我需要进一步澄清。\n\n"
|
|
30
|
+
}, {
|
|
31
|
+
type: "text",
|
|
32
|
+
key: "reasoning",
|
|
33
|
+
title: "推理分析",
|
|
34
|
+
content: "\n用户没有提供具体的审核内容或目标,因此无法直接调用工具。我需要请求用户提供更多信息,例如:\n- 审核的文件类型(图片、PDF等)。\n- 审核的具体任务(OCR识别、批注生成等)。\n- 是否有现成的文件链接或其他输入参数。\n\n"
|
|
35
|
+
},
|
|
36
|
+
// 待执行工具
|
|
37
|
+
// {
|
|
38
|
+
// type: "tool",
|
|
39
|
+
// msg: {
|
|
40
|
+
// id: "040c3341-759f-43cb-8f51-d33f8d16063c",
|
|
41
|
+
// author: "aaa111",
|
|
42
|
+
// invocationId: "e-b8f96c1d-5432-42cf-8cff-c04745538504",
|
|
43
|
+
// eventId: "2029398995837837312",
|
|
44
|
+
// timestamp: 1772681399674,
|
|
45
|
+
// role: "bot",
|
|
46
|
+
// functionCall: {
|
|
47
|
+
// id: "adk-a30a7fb0-4413-4251-8229-b48e6f9c0b32",
|
|
48
|
+
// args: {
|
|
49
|
+
// originalFunctionCall: {
|
|
50
|
+
// id: "call_8c999d1ae7f34f98ad2666",
|
|
51
|
+
// args: {
|
|
52
|
+
// size: "1024*1024",
|
|
53
|
+
// prompt: "一只猫在草地上,卡通风格",
|
|
54
|
+
// n: 1,
|
|
55
|
+
// },
|
|
56
|
+
// name: "bailian_image_gen",
|
|
57
|
+
// },
|
|
58
|
+
// toolConfirmation: {
|
|
59
|
+
// hint: "Please approve or reject the tool call vdjxxwbgpwlfs() by responding with a FunctionResponse with an expected ToolConfirmation payload.",
|
|
60
|
+
// confirmed: false,
|
|
61
|
+
// },
|
|
62
|
+
// },
|
|
63
|
+
// name: "adk_request_confirmation",
|
|
64
|
+
// },
|
|
65
|
+
// },
|
|
66
|
+
// },
|
|
67
|
+
// 确认执行
|
|
68
|
+
{
|
|
69
|
+
type: "tool",
|
|
70
|
+
msg: {
|
|
71
|
+
id: "99f7dff6-3780-4712-829f-4670707e76cc",
|
|
72
|
+
author: "aaa111",
|
|
73
|
+
invocationId: "e-fe701a0d-9fa2-4b82-b338-751c2ab31619",
|
|
74
|
+
eventId: "2029431631083794432",
|
|
75
|
+
timestamp: 1772689180523,
|
|
76
|
+
role: "bot",
|
|
77
|
+
functionCall: {
|
|
78
|
+
id: "call_ed77f343b5614de096ce35",
|
|
79
|
+
args: {
|
|
80
|
+
size: "1024*1024",
|
|
81
|
+
prompt: "一只可爱的小猫"
|
|
82
|
+
},
|
|
83
|
+
name: "bailian_image_gen"
|
|
84
|
+
},
|
|
85
|
+
functionResponse: {
|
|
86
|
+
id: "call_ed77f343b5614de096ce35",
|
|
87
|
+
name: "bailian_image_gen",
|
|
88
|
+
response: {
|
|
89
|
+
error: "This tool call requires confirmation, please approve or reject."
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}];
|
|
94
|
+
useEffect(function () {
|
|
95
|
+
var stepIndex = 0;
|
|
96
|
+
var charIndex = 0;
|
|
97
|
+
var currentContent = "";
|
|
98
|
+
|
|
99
|
+
// 先插入第一个空 step
|
|
100
|
+
setItems([_objectSpread(_objectSpread({}, steps[0]), {}, {
|
|
101
|
+
content: ""
|
|
102
|
+
})]);
|
|
103
|
+
var timer = setInterval(function () {
|
|
104
|
+
var currentStep = steps[stepIndex];
|
|
105
|
+
if (!currentStep) {
|
|
106
|
+
clearInterval(timer);
|
|
107
|
+
setLoading(false);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (charIndex < currentStep.content.length) {
|
|
111
|
+
currentContent += currentStep.content[charIndex];
|
|
112
|
+
charIndex++;
|
|
113
|
+
setItems(function (prev) {
|
|
114
|
+
var newItems = _toConsumableArray(prev);
|
|
115
|
+
newItems[stepIndex] = _objectSpread(_objectSpread({}, currentStep), {}, {
|
|
116
|
+
content: currentContent
|
|
117
|
+
});
|
|
118
|
+
return newItems;
|
|
119
|
+
});
|
|
120
|
+
} else {
|
|
121
|
+
// 当前 step 打完
|
|
122
|
+
stepIndex++;
|
|
123
|
+
charIndex = 0;
|
|
124
|
+
currentContent = "";
|
|
125
|
+
if (stepIndex < steps.length) {
|
|
126
|
+
setItems(function (prev) {
|
|
127
|
+
return [].concat(_toConsumableArray(prev), [_objectSpread(_objectSpread({}, steps[stepIndex]), {}, {
|
|
128
|
+
content: ""
|
|
129
|
+
})]);
|
|
130
|
+
});
|
|
131
|
+
} else {
|
|
132
|
+
clearInterval(timer);
|
|
133
|
+
setLoading(false);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}, 20); // 20ms 一个字符
|
|
137
|
+
|
|
138
|
+
return function () {
|
|
139
|
+
return clearInterval(timer);
|
|
140
|
+
};
|
|
141
|
+
}, []);
|
|
142
|
+
return /*#__PURE__*/_jsx("div", {
|
|
143
|
+
style: {
|
|
144
|
+
width: 440,
|
|
145
|
+
border: "1px solid #eee",
|
|
146
|
+
padding: 20
|
|
147
|
+
},
|
|
148
|
+
children: /*#__PURE__*/_jsx(XAiThoughtChain, {
|
|
149
|
+
loading: loading,
|
|
150
|
+
items: items,
|
|
151
|
+
defaultOpen: true
|
|
152
|
+
})
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
export var 基础用法 = {
|
|
156
|
+
render: BasicUsageStory,
|
|
157
|
+
args: {}
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=XAiThoughtChain.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","useEffect","XAiThoughtChain","jsx","_jsx","meta","title","component","parameters","tags","argTypes","BasicUsageStory","_useState","_useState2","_slicedToArray","items","setItems","_useState3","_useState4","loading","setLoading","steps","type","key","content","msg","id","author","invocationId","eventId","timestamp","role","functionCall","args","size","prompt","name","functionResponse","response","error","stepIndex","charIndex","currentContent","_objectSpread","timer","setInterval","currentStep","clearInterval","length","prev","newItems","_toConsumableArray","concat","style","width","border","padding","children","defaultOpen","基础用法","render"],"sources":["../../../../src/components/XAiThoughtChain/XAiThoughtChain.stories.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react-vite\";\nimport XAiThoughtChain from \".\";\n\nconst meta: Meta<typeof XAiThoughtChain> = {\n title: \"AI组件/XAiThoughtChain 思维链\",\n component: XAiThoughtChain,\n parameters: {},\n tags: [\"autodocs\"],\n argTypes: {},\n};\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\n// 基础用法\nconst BasicUsageStory = () => {\n const [items, setItems] = useState<any[]>([]);\n const [loading, setLoading] = useState(true);\n\n const steps = [\n {\n type: \"text\",\n key: \"planning\",\n title: \"任务规划\",\n content:\n \"\\n为了规划审核路线,我需要明确以下几个步骤:\\n1. 确认审核的具体内容或目标(例如:OCR审核、批注生成等)。\\n2. 根据审核内容,选择合适的工具(例如:`OCR审核1`、`生成批注pdf1`)。\\n3. 提供必要的输入参数(例如:文件链接、日期、流水号等)。\\n4. 执行工具并获取结果。\\n\\n由于用户未提供具体的审核内容或目标,我需要进一步澄清。\\n\\n\",\n },\n {\n type: \"text\",\n key: \"reasoning\",\n title: \"推理分析\",\n content:\n \"\\n用户没有提供具体的审核内容或目标,因此无法直接调用工具。我需要请求用户提供更多信息,例如:\\n- 审核的文件类型(图片、PDF等)。\\n- 审核的具体任务(OCR识别、批注生成等)。\\n- 是否有现成的文件链接或其他输入参数。\\n\\n\",\n },\n // 待执行工具\n // {\n // type: \"tool\",\n // msg: {\n // id: \"040c3341-759f-43cb-8f51-d33f8d16063c\",\n // author: \"aaa111\",\n // invocationId: \"e-b8f96c1d-5432-42cf-8cff-c04745538504\",\n // eventId: \"2029398995837837312\",\n // timestamp: 1772681399674,\n // role: \"bot\",\n // functionCall: {\n // id: \"adk-a30a7fb0-4413-4251-8229-b48e6f9c0b32\",\n // args: {\n // originalFunctionCall: {\n // id: \"call_8c999d1ae7f34f98ad2666\",\n // args: {\n // size: \"1024*1024\",\n // prompt: \"一只猫在草地上,卡通风格\",\n // n: 1,\n // },\n // name: \"bailian_image_gen\",\n // },\n // toolConfirmation: {\n // hint: \"Please approve or reject the tool call vdjxxwbgpwlfs() by responding with a FunctionResponse with an expected ToolConfirmation payload.\",\n // confirmed: false,\n // },\n // },\n // name: \"adk_request_confirmation\",\n // },\n // },\n // },\n // 确认执行\n {\n type: \"tool\",\n msg: {\n id: \"99f7dff6-3780-4712-829f-4670707e76cc\",\n author: \"aaa111\",\n invocationId: \"e-fe701a0d-9fa2-4b82-b338-751c2ab31619\",\n eventId: \"2029431631083794432\",\n timestamp: 1772689180523,\n role: \"bot\",\n functionCall: {\n id: \"call_ed77f343b5614de096ce35\",\n args: {\n size: \"1024*1024\",\n prompt: \"一只可爱的小猫\",\n },\n name: \"bailian_image_gen\",\n },\n functionResponse: {\n id: \"call_ed77f343b5614de096ce35\",\n name: \"bailian_image_gen\",\n response: {\n error:\n \"This tool call requires confirmation, please approve or reject.\",\n },\n },\n },\n },\n ];\n\n useEffect(() => {\n let stepIndex = 0;\n let charIndex = 0;\n let currentContent = \"\";\n\n // 先插入第一个空 step\n setItems([\n {\n ...steps[0],\n content: \"\",\n },\n ]);\n\n const timer = setInterval(() => {\n const currentStep = steps[stepIndex];\n\n if (!currentStep) {\n clearInterval(timer);\n setLoading(false);\n return;\n }\n\n if (charIndex < currentStep.content!.length) {\n currentContent += currentStep.content![charIndex];\n charIndex++;\n\n setItems((prev) => {\n const newItems = [...prev];\n newItems[stepIndex] = {\n ...currentStep,\n content: currentContent,\n };\n return newItems;\n });\n } else {\n // 当前 step 打完\n stepIndex++;\n charIndex = 0;\n currentContent = \"\";\n\n if (stepIndex < steps.length) {\n setItems((prev) => [\n ...prev,\n {\n ...steps[stepIndex],\n content: \"\",\n },\n ]);\n } else {\n clearInterval(timer);\n setLoading(false);\n }\n }\n }, 20); // 20ms 一个字符\n\n return () => clearInterval(timer);\n }, []);\n\n return (\n <div style={{ width: 440, border: \"1px solid #eee\", padding: 20 }}>\n <XAiThoughtChain loading={loading} items={items} defaultOpen />\n </div>\n );\n};\n\nexport const 基础用法: Story = {\n render: BasicUsageStory,\n args: {},\n};\n"],"mappings":"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"}
|