@ai-group/chat-sdk 0.4.2 → 0.5.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.
- package/dist/cjs/components/XAiChatbot/styles.js +1 -0
- package/dist/cjs/components/XAiChatbot/styles.js.map +2 -2
- package/dist/cjs/components/XAiConversations/XAiConversations.stories.js +1 -1
- package/dist/cjs/components/XAiConversations/XAiConversations.stories.js.map +2 -2
- package/dist/cjs/components/XAiConversations/index.js +41 -15
- package/dist/cjs/components/XAiConversations/index.js.map +3 -3
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.d.ts +2 -1
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +88 -34
- package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +3 -3
- package/dist/cjs/components/XAiProvider/index.js +27 -4
- package/dist/cjs/components/XAiProvider/index.js.map +2 -2
- package/dist/cjs/context/AiProviderContext.d.ts +4 -2
- package/dist/cjs/context/AiProviderContext.js.map +2 -2
- package/dist/cjs/hooks/useAgentGenerator.d.ts +14 -5
- package/dist/cjs/hooks/useAgentGenerator.js +143 -64
- package/dist/cjs/hooks/useAgentGenerator.js.map +3 -3
- package/dist/cjs/types/XAiChatbot.d.ts +2 -0
- package/dist/cjs/types/XAiChatbot.js.map +1 -1
- package/dist/cjs/types/XAiConversations.d.ts +14 -2
- package/dist/cjs/types/XAiConversations.js.map +1 -1
- package/dist/cjs/types/XAiProvider.d.ts +257 -13
- package/dist/cjs/types/XAiProvider.js.map +2 -2
- package/dist/cjs/utils/umdEntry.d.ts +3 -1
- package/dist/cjs/utils/umdEntry.js +5 -2
- package/dist/cjs/utils/umdEntry.js.map +3 -3
- package/dist/esm/components/XAiChatbot/styles.js +1 -1
- package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
- package/dist/esm/components/XAiConversations/XAiConversations.stories.js +1 -1
- package/dist/esm/components/XAiConversations/XAiConversations.stories.js.map +1 -1
- package/dist/esm/components/XAiConversations/index.js +56 -14
- package/dist/esm/components/XAiConversations/index.js.map +1 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.d.ts +2 -1
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js +105 -28
- package/dist/esm/components/XAiProvider/XAiProvider.stories.js.map +1 -1
- package/dist/esm/components/XAiProvider/index.js +24 -7
- package/dist/esm/components/XAiProvider/index.js.map +1 -1
- package/dist/esm/context/AiProviderContext.d.ts +4 -2
- package/dist/esm/context/AiProviderContext.js +1 -0
- package/dist/esm/context/AiProviderContext.js.map +1 -1
- package/dist/esm/hooks/useAgentGenerator.d.ts +14 -5
- package/dist/esm/hooks/useAgentGenerator.js +271 -113
- package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
- package/dist/esm/types/XAiChatbot.d.ts +2 -0
- package/dist/esm/types/XAiChatbot.js.map +1 -1
- package/dist/esm/types/XAiConversations.d.ts +14 -2
- package/dist/esm/types/XAiConversations.js.map +1 -1
- package/dist/esm/types/XAiProvider.d.ts +257 -13
- package/dist/esm/types/XAiProvider.js +81 -1
- package/dist/esm/types/XAiProvider.js.map +1 -1
- package/dist/esm/utils/umdEntry.d.ts +3 -1
- package/dist/esm/utils/umdEntry.js +29 -22
- package/dist/esm/utils/umdEntry.js.map +1 -1
- package/dist/umd/chat-sdk.min.js +1 -1
- package/package.json +2 -1
|
@@ -1,26 +1,68 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
-
import React, { useState } from 'react';
|
|
3
|
+
import React, { useState, useEffect } from 'react';
|
|
4
4
|
import { Conversations } from '@ant-design/x';
|
|
5
|
+
import { RedoOutlined } from '@ant-design/icons';
|
|
6
|
+
import { Spin } from 'antd';
|
|
7
|
+
import { useChatbotContext } from "../../hooks/useProviderContext";
|
|
8
|
+
import InfiniteScroll from 'react-infinite-scroll-component';
|
|
5
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
10
|
var XAiConversations = function XAiConversations(props) {
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
// 处理 Provider 上下文
|
|
12
|
+
var _useChatbotContext = useChatbotContext(props),
|
|
13
|
+
mergedProps = _useChatbotContext.mergedProps;
|
|
14
|
+
var _mergedProps$sessionT = mergedProps.sessionTotal,
|
|
15
|
+
sessionTotal = _mergedProps$sessionT === void 0 ? 0 : _mergedProps$sessionT,
|
|
16
|
+
sessionList = mergedProps.sessionList,
|
|
17
|
+
style = mergedProps.style,
|
|
18
|
+
onActiveChange = mergedProps.onActiveChange,
|
|
19
|
+
loadMoreSessions = mergedProps.loadMoreSessions;
|
|
9
20
|
var _useState = useState(''),
|
|
10
21
|
_useState2 = _slicedToArray(_useState, 2),
|
|
11
22
|
activeKey = _useState2[0],
|
|
12
23
|
setActiveKey = _useState2[1];
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
onActiveChange
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
var handleSwitchTab = function handleSwitchTab(key) {
|
|
25
|
+
setActiveKey(key);
|
|
26
|
+
onActiveChange === null || onActiveChange === void 0 || onActiveChange(key);
|
|
27
|
+
};
|
|
28
|
+
useEffect(function () {
|
|
29
|
+
loadMoreSessions === null || loadMoreSessions === void 0 || loadMoreSessions();
|
|
30
|
+
}, []);
|
|
31
|
+
return /*#__PURE__*/_jsx("div", {
|
|
32
|
+
children: /*#__PURE__*/_jsx(InfiniteScroll, {
|
|
33
|
+
dataLength: sessionList.length,
|
|
34
|
+
next: loadMoreSessions,
|
|
35
|
+
hasMore: sessionList.length < sessionTotal,
|
|
36
|
+
loader: /*#__PURE__*/_jsx("div", {
|
|
37
|
+
style: {
|
|
38
|
+
textAlign: 'center'
|
|
39
|
+
},
|
|
40
|
+
children: /*#__PURE__*/_jsx(Spin, {
|
|
41
|
+
indicator: /*#__PURE__*/_jsx(RedoOutlined, {
|
|
42
|
+
spin: true
|
|
43
|
+
}),
|
|
44
|
+
size: "small"
|
|
45
|
+
})
|
|
46
|
+
})
|
|
47
|
+
// endMessage={sessionTotal > 0 && <Divider plain>已经到底啦</Divider>}
|
|
48
|
+
,
|
|
49
|
+
scrollableTarget: "scrollableDiv",
|
|
50
|
+
style: {
|
|
51
|
+
overflow: 'hidden'
|
|
52
|
+
},
|
|
53
|
+
children: /*#__PURE__*/_jsx(Conversations, {
|
|
54
|
+
activeKey: activeKey,
|
|
55
|
+
onActiveChange: function onActiveChange(v) {
|
|
56
|
+
return handleSwitchTab(v);
|
|
57
|
+
},
|
|
58
|
+
items: sessionList,
|
|
59
|
+
style: _objectSpread({
|
|
60
|
+
width: 256,
|
|
61
|
+
background: '#fff',
|
|
62
|
+
borderRadius: '6px'
|
|
63
|
+
}, style)
|
|
64
|
+
})
|
|
65
|
+
})
|
|
24
66
|
});
|
|
25
67
|
};
|
|
26
68
|
export default XAiConversations;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","Conversations","jsx","_jsx","XAiConversations","props","
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","Conversations","RedoOutlined","Spin","useChatbotContext","InfiniteScroll","jsx","_jsx","XAiConversations","props","_useChatbotContext","mergedProps","_mergedProps$sessionT","sessionTotal","sessionList","style","onActiveChange","loadMoreSessions","_useState","_useState2","_slicedToArray","activeKey","setActiveKey","handleSwitchTab","key","children","dataLength","length","next","hasMore","loader","textAlign","indicator","spin","size","scrollableTarget","overflow","v","items","_objectSpread","width","background","borderRadius"],"sources":["../../../../src/components/XAiConversations/index.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { Conversations } from '@ant-design/x';\nimport { RedoOutlined } from '@ant-design/icons';\nimport { Avatar, Divider, type GetProp, Spin, theme } from 'antd';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { type XAiConversationsProps } from '@/types/XAiConversations';\nimport InfiniteScroll from 'react-infinite-scroll-component';\n\nconst XAiConversations: React.FC<XAiConversationsProps> = (props) => {\n // 处理 Provider 上下文\n const { mergedProps } = useChatbotContext(props);\n const {\n sessionTotal = 0,\n sessionList,\n style,\n onActiveChange,\n loadMoreSessions,\n } = mergedProps;\n const [activeKey, setActiveKey] = useState('');\n\n const handleSwitchTab = (key: string) => {\n setActiveKey(key);\n onActiveChange?.(key);\n };\n\n useEffect(() => {\n loadMoreSessions?.();\n }, []);\n\n return (\n <div>\n <InfiniteScroll\n dataLength={sessionList.length}\n next={loadMoreSessions}\n hasMore={sessionList.length < sessionTotal}\n loader={\n <div style={{ textAlign: 'center' }}>\n <Spin indicator={<RedoOutlined spin />} size=\"small\" />\n </div>\n }\n // endMessage={sessionTotal > 0 && <Divider plain>已经到底啦</Divider>}\n scrollableTarget=\"scrollableDiv\"\n style={{ overflow: 'hidden' }}\n >\n\n <Conversations\n activeKey={activeKey}\n onActiveChange={(v) => handleSwitchTab(v)}\n items={sessionList}\n style={{\n width: 256,\n background: '#fff',\n borderRadius: '6px',\n ...style,\n }}\n />\n </InfiniteScroll>\n </div>\n );\n};\n\nexport default XAiConversations;\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAClD,SAASC,aAAa,QAAQ,eAAe;AAC7C,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAAwCC,IAAI,QAAe,MAAM;AACjE,SAASC,iBAAiB;AAE1B,OAAOC,cAAc,MAAM,iCAAiC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE7D,IAAMC,gBAAiD,GAAG,SAApDA,gBAAiDA,CAAIC,KAAK,EAAK;EACnE;EACA,IAAAC,kBAAA,GAAwBN,iBAAiB,CAACK,KAAK,CAAC;IAAxCE,WAAW,GAAAD,kBAAA,CAAXC,WAAW;EACnB,IAAAC,qBAAA,GAMID,WAAW,CALbE,YAAY;IAAZA,YAAY,GAAAD,qBAAA,cAAG,CAAC,GAAAA,qBAAA;IAChBE,WAAW,GAITH,WAAW,CAJbG,WAAW;IACXC,KAAK,GAGHJ,WAAW,CAHbI,KAAK;IACLC,cAAc,GAEZL,WAAW,CAFbK,cAAc;IACdC,gBAAgB,GACdN,WAAW,CADbM,gBAAgB;EAElB,IAAAC,SAAA,GAAkCnB,QAAQ,CAAC,EAAE,CAAC;IAAAoB,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAvCG,SAAS,GAAAF,UAAA;IAAEG,YAAY,GAAAH,UAAA;EAE9B,IAAMI,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,GAAW,EAAK;IACvCF,YAAY,CAACE,GAAG,CAAC;IACjBR,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAGQ,GAAG,CAAC;EACvB,CAAC;EAEDxB,SAAS,CAAC,YAAM;IACdiB,gBAAgB,aAAhBA,gBAAgB,eAAhBA,gBAAgB,CAAG,CAAC;EACtB,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEV,IAAA;IAAAkB,QAAA,eACElB,IAAA,CAACF,cAAc;MACbqB,UAAU,EAAEZ,WAAW,CAACa,MAAO;MAC/BC,IAAI,EAAEX,gBAAiB;MACvBY,OAAO,EAAEf,WAAW,CAACa,MAAM,GAAGd,YAAa;MAC3CiB,MAAM,eACJvB,IAAA;QAAKQ,KAAK,EAAE;UAAEgB,SAAS,EAAE;QAAS,CAAE;QAAAN,QAAA,eAClClB,IAAA,CAACJ,IAAI;UAAC6B,SAAS,eAAEzB,IAAA,CAACL,YAAY;YAAC+B,IAAI;UAAA,CAAE,CAAE;UAACC,IAAI,EAAC;QAAO,CAAE;MAAC,CACpD;MAEP;MAAA;MACAC,gBAAgB,EAAC,eAAe;MAChCpB,KAAK,EAAE;QAAEqB,QAAQ,EAAE;MAAS,CAAE;MAAAX,QAAA,eAG9BlB,IAAA,CAACN,aAAa;QACZoB,SAAS,EAAEA,SAAU;QACrBL,cAAc,EAAE,SAAAA,eAACqB,CAAC;UAAA,OAAKd,eAAe,CAACc,CAAC,CAAC;QAAA,CAAC;QAC1CC,KAAK,EAAExB,WAAY;QACnBC,KAAK,EAAAwB,aAAA;UACHC,KAAK,EAAE,GAAG;UACVC,UAAU,EAAE,MAAM;UAClBC,YAAY,EAAE;QAAK,GAChB3B,KAAK;MACR,CACH;IAAC,CACY;EAAC,CACd,CAAC;AAEV,CAAC;AAED,eAAeP,gBAAgB"}
|
|
@@ -3,5 +3,6 @@ import XAiProvider from './index';
|
|
|
3
3
|
declare const meta: Meta<typeof XAiProvider>;
|
|
4
4
|
export default meta;
|
|
5
5
|
type Story = StoryObj<typeof meta>;
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const 单聊天窗口实例: Story;
|
|
7
7
|
export declare const 多容器示例: Story;
|
|
8
|
+
export declare const 携带历史记录示例: Story;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { Button } from 'antd';
|
|
3
4
|
import XAiProvider from "./index";
|
|
4
5
|
import XAiChatbot from "../XAiChatbot";
|
|
6
|
+
import XAiConversations from "../XAiConversations";
|
|
5
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
8
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
9
|
var meta = {
|
|
@@ -17,17 +19,15 @@ var meta = {
|
|
|
17
19
|
},
|
|
18
20
|
tags: ['autodocs'],
|
|
19
21
|
argTypes: {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
control: 'text',
|
|
30
|
-
description: 'Provider 唯一标识'
|
|
22
|
+
config: {
|
|
23
|
+
description: '配置信息',
|
|
24
|
+
table: {
|
|
25
|
+
type: {
|
|
26
|
+
summary: 'XAiProviderConfig',
|
|
27
|
+
detail: "{\n appNo?: string; // \u5E94\u7528\u552F\u4E00\u7F16\u53F7\n pt?: string; // \u6388\u6743\u65B9\u5F0F\n tc?: string; // \u79DF\u6237key\n }"
|
|
28
|
+
},
|
|
29
|
+
category: '配置选项'
|
|
30
|
+
}
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
// 添加装饰器,确保组件有必要的上下文
|
|
@@ -42,33 +42,65 @@ var meta = {
|
|
|
42
42
|
};
|
|
43
43
|
export default meta;
|
|
44
44
|
// 使用 Provider 的 XAiChatbot
|
|
45
|
-
export var
|
|
45
|
+
export var 单聊天窗口实例 = {
|
|
46
46
|
render: function render(args) {
|
|
47
|
-
|
|
47
|
+
var providerRef = React.useRef(null);
|
|
48
|
+
var handleSendMessage = function handleSendMessage() {
|
|
49
|
+
var _providerRef$current;
|
|
50
|
+
if ((_providerRef$current = providerRef.current) !== null && _providerRef$current !== void 0 && _providerRef$current.chat) {
|
|
51
|
+
providerRef.current.chat('你好,AI!');
|
|
52
|
+
} else {
|
|
53
|
+
console.log('XAiProvider ref 未准备好或 chat 方法不存在');
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
48
57
|
style: {
|
|
49
|
-
|
|
50
|
-
height: '600px'
|
|
58
|
+
display: 'flex'
|
|
51
59
|
},
|
|
52
|
-
children: /*#__PURE__*/_jsx(
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
61
|
+
style: {
|
|
62
|
+
display: 'flex',
|
|
63
|
+
flexDirection: 'column',
|
|
64
|
+
gap: '12px',
|
|
65
|
+
marginRight: '24px',
|
|
66
|
+
justifyContent: 'center'
|
|
55
67
|
},
|
|
56
|
-
children: /*#__PURE__*/_jsx(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
subtitle: '由 Provider 管理消息',
|
|
61
|
-
avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg'
|
|
62
|
-
}
|
|
68
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
69
|
+
type: "primary",
|
|
70
|
+
onClick: handleSendMessage,
|
|
71
|
+
children: "\u53D1\u9001\u6D88\u606F"
|
|
63
72
|
})
|
|
64
|
-
})
|
|
73
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
74
|
+
style: {
|
|
75
|
+
width: '400px',
|
|
76
|
+
height: '600px'
|
|
77
|
+
},
|
|
78
|
+
children: /*#__PURE__*/_jsx(XAiProvider, _objectSpread(_objectSpread({
|
|
79
|
+
ref: providerRef
|
|
80
|
+
}, args), {}, {
|
|
81
|
+
onError: function onError(providerError) {
|
|
82
|
+
return console.log(providerError);
|
|
83
|
+
},
|
|
84
|
+
onMessage: function onMessage(data) {
|
|
85
|
+
return console.log(data);
|
|
86
|
+
},
|
|
87
|
+
children: /*#__PURE__*/_jsx(XAiChatbot, {
|
|
88
|
+
navbarShow: true,
|
|
89
|
+
navbar: {
|
|
90
|
+
title: 'Provider 聊天机器人',
|
|
91
|
+
subtitle: '由 Provider 管理消息',
|
|
92
|
+
avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg'
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
}))
|
|
96
|
+
})]
|
|
65
97
|
});
|
|
66
98
|
},
|
|
67
99
|
args: {
|
|
68
100
|
url: 'http://ai-platform.xline-dev.test.xinke.biz',
|
|
69
|
-
token: 'eyJhbGciOiJIUzUxMiJ9.
|
|
101
|
+
token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI4ZjYxNjE2Yy05ZWZjLTQ5ZmMtOWFmYi00OWZiZDNhNGVmNzciLCJzdWIiOiLmnLHmmajkuq4iLCJpc3MiOiJodHRwczovL2NoYXQtZGV2LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTc5MjUwOTQsImV4cCI6MTc1NzkzMjI5NCwidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NTUyMzA4NTA4OTU2ODc2ODAiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9._lZMQ_V0Tzv54Cez-Wc9OQCpP1dt6k0HqOiGZ8DBd_f3HPa1mjF3wJP-0ToBLH8udMrFQmkjAOD3jzvTUqHSJA',
|
|
70
102
|
config: {
|
|
71
|
-
appNo: '
|
|
103
|
+
appNo: 'App1955230850895687680',
|
|
72
104
|
pt: 'MainStation',
|
|
73
105
|
tc: 'ZABX'
|
|
74
106
|
},
|
|
@@ -155,4 +187,49 @@ export var 多容器示例 = {
|
|
|
155
187
|
token: 'your-token-here'
|
|
156
188
|
}
|
|
157
189
|
};
|
|
190
|
+
|
|
191
|
+
// 使用 Provider 的 XAiChatbot
|
|
192
|
+
export var 携带历史记录示例 = {
|
|
193
|
+
render: function render(args) {
|
|
194
|
+
var providerRef = React.useRef(null);
|
|
195
|
+
return /*#__PURE__*/_jsx("div", {
|
|
196
|
+
style: {
|
|
197
|
+
display: 'flex'
|
|
198
|
+
},
|
|
199
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
200
|
+
style: {
|
|
201
|
+
width: '1000px',
|
|
202
|
+
height: '600px'
|
|
203
|
+
},
|
|
204
|
+
children: /*#__PURE__*/_jsxs(XAiProvider, _objectSpread(_objectSpread({
|
|
205
|
+
ref: providerRef
|
|
206
|
+
}, args), {}, {
|
|
207
|
+
onError: function onError(providerError) {
|
|
208
|
+
return console.log(providerError);
|
|
209
|
+
},
|
|
210
|
+
onMessage: function onMessage(data) {
|
|
211
|
+
return console.log(data);
|
|
212
|
+
},
|
|
213
|
+
children: [/*#__PURE__*/_jsx(XAiConversations, {}), /*#__PURE__*/_jsx(XAiChatbot, {
|
|
214
|
+
navbar: {
|
|
215
|
+
title: 'Provider 聊天机器人',
|
|
216
|
+
subtitle: '由 Provider 管理消息',
|
|
217
|
+
avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg'
|
|
218
|
+
}
|
|
219
|
+
})]
|
|
220
|
+
}))
|
|
221
|
+
})
|
|
222
|
+
});
|
|
223
|
+
},
|
|
224
|
+
args: {
|
|
225
|
+
url: 'http://ai-platform.xline-dev.test.xinke.biz',
|
|
226
|
+
token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI4ODYwNWUwNi1mNjBkLTQzMTUtYWM0ZC04YzcyNWY0YmQ3NjkiLCJzdWIiOiLmnLHmmajkuq4iLCJpc3MiOiJodHRwczovL2NoYXQtZGV2LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTc5OTU5ODEsImV4cCI6MTc1ODAwMzE4MSwidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NTUyMzA4NTA4OTU2ODc2ODAiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9.9nmXvWt210UxfVjDJ-nGXhuD3OnNZDh90RdAQspu0EC5iKh-xdAwbFjZ7KWAyFSODDcqtHekYNSnOPaEGBEgEg',
|
|
227
|
+
config: {
|
|
228
|
+
appNo: 'App1955230850895687680',
|
|
229
|
+
pt: 'MainStation',
|
|
230
|
+
tc: 'ZABX'
|
|
231
|
+
},
|
|
232
|
+
providerId: 'demo-provider'
|
|
233
|
+
}
|
|
234
|
+
};
|
|
158
235
|
//# sourceMappingURL=XAiProvider.stories.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","XAiProvider","XAiChatbot","jsx","_jsx","jsxs","_jsxs","meta","title","component","parameters","layout","docs","description","tags","argTypes","url","control","token","providerId","decorators","Story","style","padding","children","单聊天窗口","render","args","width","height","_objectSpread","onError","providerError","console","log","navbarShow","navbar","subtitle","avatar","config","appNo","pt","tc","多容器示例","display","gap"],"sources":["../../../../src/components/XAiProvider/XAiProvider.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { error } from 'console';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\nimport XAiConversations from '../XAiConversations';\nimport useStyles from './demo.styles';\n\nconst meta: Meta<typeof XAiProvider> = {\n title: 'AI组件/XAiProvider AI容器',\n component: XAiProvider,\n parameters: {\n layout: 'centered',\n docs: {\n description: {\n component: 'AI 聊天机器人容器组件,提供全局上下文和消息管理功能。',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n url: {\n control: 'text',\n description: 'AI 服务地址',\n },\n token: {\n control: 'text',\n description: '认证 token',\n },\n providerId: {\n control: 'text',\n description: 'Provider 唯一标识',\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 <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider\n {...args}\n onError={(providerError) => console.log(providerError)}\n >\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n ),\n args: {\n url: 'http://ai-platform.xline-dev.test.xinke.biz',\n token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiIwOWNiYTQ4Yi01OTdjLTQ4OTMtYWFjMy0zZTVmOTAxNzc1MGYiLCJzdWIiOiLmnLHmmajkuq4iLCJpc3MiOiJodHRwczovL2NoYXQtdGVzdC56YXhsaW5lLmNvbSIsImF1ZCI6Ik1haW5TdGF0aW9uIiwiaWF0IjoxNzU1MTYxNjQ5LCJleHAiOjE3NTUxNjg4NDksInR5cGUiOiJhY2Nlc3MiLCJjbGllbnRfaWQiOiJBcHAxOTU1NDQ3NjkxNzk2NTQ5NjMyIiwic2NvcGUiOiJhbGwiLCJwbGF0Zm9ybV90eXBlIjoiTWFpblN0YXRpb24ifQ.AqmyGday6I3wKmhODIGy4rV7MTbLiqwto7bJ0sPfJo-PZ1oL7wmEagwyuxZC_LQsIx4RVoDXLzDeYecc63C8gg',\n config: {\n appNo: 'App1955447691796549632',\n pt: 'MainStation',\n tc: 'ZABX',\n },\n providerId: 'demo-provider',\n },\n};\n\n// export const 带历史记录聊天窗口: Story = {\n// render: (args) => {\n// function WithStyles(props: any) {\n// const styles = useStyles();\n// return (\n// <XAiProvider {...props}>\n// <div className={styles.wrapper}>\n// <div>\n// <XAiConversations />\n// </div>\n// <div>\n// <XAiChatbot />\n// </div>\n// </div>\n// </XAiProvider>\n// );\n// }\n// return <WithStyles {...args} />;\n// },\n// args: {\n// url: 'http://ai-platform.xline-dev.test.xinke.biz',\n// token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJjYWIxYjM3Ni03MmZjLTRkNWEtOTIzMC01N2U3NmZiMGI4NmQiLCJzdWIiOiJSZXgiLCJpc3MiOiJodHRwOi8vY2hhdC10ZXN0LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTQzMTc1OTAsImV4cCI6MTc1NDkyMjM5MCwidHlwZSI6InJlZnJlc2giLCJjbGllbnRfaWQiOiJBcHAxOTUwMDIwNTk0NDUyNjYwMjI0Iiwic2NvcGUiOiJhbGwiLCJwbGF0Zm9ybV90eXBlIjoiTWFpblN0YXRpb24ifQ.crZFQRycuHHA1iIIFJ5ak9kS1-04Eqro-QWWG8HZj6Dz7DkLWYuQBPCrUlCtavGu0XW5tqHZ5WW4tdST06FvEA',\n// config: {\n// appNo: 'App1952213101022154752',\n// pt: 'MainStation',\n// tc: 'ZABX',\n// },\n// providerId: 'demo-provider',\n// },\n// };\n\n// 多个 Provider 示例\nexport const 多容器示例: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px' }}>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-1\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 1',\n subtitle: '第一个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-2\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 2',\n subtitle: '第二个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n url: 'https://api.example.com/ai',\n token: 'your-token-here',\n },\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","Button","XAiProvider","XAiChatbot","XAiConversations","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","console","log","display","flexDirection","gap","marginRight","justifyContent","onClick","width","height","_objectSpread","ref","onError","providerError","onMessage","data","navbarShow","navbar","subtitle","avatar","url","token","appNo","pt","tc","providerId","多容器示例","携带历史记录示例"],"sources":["../../../../src/components/XAiProvider/XAiProvider.stories.tsx"],"sourcesContent":["import React from 'react';\nimport type { Meta, StoryObj } from '@storybook/react-vite';\nimport { Button } from 'antd';\nimport XAiProvider from './index';\nimport XAiChatbot from '../XAiChatbot';\nimport XAiConversations from '../XAiConversations';\nimport useStyles from './demo.styles';\n\nconst meta: Meta<typeof XAiProvider> = {\n title: 'AI组件/XAiProvider AI容器',\n component: XAiProvider,\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: 'XAiProviderConfig',\n detail: `{\n appNo?: string; // 应用唯一编号\n pt?: string; // 授权方式\n tc?: string; // 租户key\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('你好,AI!')\n } else {\n console.log('XAiProvider ref 未准备好或 chat 方法不存在');\n }\n };\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px', marginRight: '24px', justifyContent: 'center' }}>\n <Button type=\"primary\" onClick={handleSendMessage}>发送消息</Button>\n </div>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'http://ai-platform.xline-dev.test.xinke.biz',\n token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI4ZjYxNjE2Yy05ZWZjLTQ5ZmMtOWFmYi00OWZiZDNhNGVmNzciLCJzdWIiOiLmnLHmmajkuq4iLCJpc3MiOiJodHRwczovL2NoYXQtZGV2LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTc5MjUwOTQsImV4cCI6MTc1NzkzMjI5NCwidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NTUyMzA4NTA4OTU2ODc2ODAiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9._lZMQ_V0Tzv54Cez-Wc9OQCpP1dt6k0HqOiGZ8DBd_f3HPa1mjF3wJP-0ToBLH8udMrFQmkjAOD3jzvTUqHSJA',\n config: {\n appNo: 'App1955230850895687680',\n pt: 'MainStation',\n tc: 'ZABX',\n },\n providerId: 'demo-provider',\n },\n};\n\n// export const 带历史记录聊天窗口: Story = {\n// render: (args) => {\n// function WithStyles(props: any) {\n// const styles = useStyles();\n// return (\n// <XAiProvider {...props}>\n// <div className={styles.wrapper}>\n// <div>\n// <XAiConversations />\n// </div>\n// <div>\n// <XAiChatbot />\n// </div>\n// </div>\n// </XAiProvider>\n// );\n// }\n// return <WithStyles {...args} />;\n// },\n// args: {\n// url: 'http://ai-platform.xline-dev.test.xinke.biz',\n// token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJjYWIxYjM3Ni03MmZjLTRkNWEtOTIzMC01N2U3NmZiMGI4NmQiLCJzdWIiOiJSZXgiLCJpc3MiOiJodHRwOi8vY2hhdC10ZXN0LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTQzMTc1OTAsImV4cCI6MTc1NDkyMjM5MCwidHlwZSI6InJlZnJlc2giLCJjbGllbnRfaWQiOiJBcHAxOTUwMDIwNTk0NDUyNjYwMjI0Iiwic2NvcGUiOiJhbGwiLCJwbGF0Zm9ybV90eXBlIjoiTWFpblN0YXRpb24ifQ.crZFQRycuHHA1iIIFJ5ak9kS1-04Eqro-QWWG8HZj6Dz7DkLWYuQBPCrUlCtavGu0XW5tqHZ5WW4tdST06FvEA',\n// config: {\n// appNo: 'App1952213101022154752',\n// pt: 'MainStation',\n// tc: 'ZABX',\n// },\n// providerId: 'demo-provider',\n// },\n// };\n\n// 多个 Provider 示例\nexport const 多容器示例: Story = {\n render: (args) => (\n <div style={{ display: 'flex', gap: '20px' }}>\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-1\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 1',\n subtitle: '第一个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n\n <div style={{ width: '400px', height: '600px' }}>\n <XAiProvider {...args} providerId=\"provider-2\">\n <XAiChatbot\n navbarShow\n navbar={{\n title: 'Provider 2',\n subtitle: '第二个聊天机器人',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n ),\n args: {\n url: 'https://api.example.com/ai',\n token: 'your-token-here',\n },\n};\n\n// 使用 Provider 的 XAiChatbot\nexport const 携带历史记录示例: Story = {\n render: (args) => {\n const providerRef = React.useRef<any>(null);\n\n return (\n <div style={{ display: 'flex' }}>\n <div style={{ width: '1000px', height: '600px' }}>\n <XAiProvider\n ref={providerRef}\n {...args}\n onError={(providerError) => console.log(providerError)}\n onMessage={(data) => console.log(data)}\n >\n <XAiConversations />\n <XAiChatbot\n navbar={{\n title: 'Provider 聊天机器人',\n subtitle: '由 Provider 管理消息',\n avatar: 'https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg',\n }}\n />\n </XAiProvider>\n </div>\n </div>\n );\n },\n args: {\n url: 'http://ai-platform.xline-dev.test.xinke.biz',\n token: 'eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI4ODYwNWUwNi1mNjBkLTQzMTUtYWM0ZC04YzcyNWY0YmQ3NjkiLCJzdWIiOiLmnLHmmajkuq4iLCJpc3MiOiJodHRwczovL2NoYXQtZGV2LnpheGxpbmUuY29tIiwiYXVkIjoiTWFpblN0YXRpb24iLCJpYXQiOjE3NTc5OTU5ODEsImV4cCI6MTc1ODAwMzE4MSwidHlwZSI6ImFjY2VzcyIsImNsaWVudF9pZCI6IkFwcDE5NTUyMzA4NTA4OTU2ODc2ODAiLCJzY29wZSI6ImFsbCIsInBsYXRmb3JtX3R5cGUiOiJNYWluU3RhdGlvbiJ9.9nmXvWt210UxfVjDJ-nGXhuD3OnNZDh90RdAQspu0EC5iKh-xdAwbFjZ7KWAyFSODDcqtHekYNSnOPaEGBEgEg',\n config: {\n appNo: 'App1955230850895687680',\n pt: 'MainStation',\n tc: 'ZABX',\n },\n providerId: 'demo-provider',\n },\n};"],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
16
16
|
providerId = _ref$providerId === void 0 ? 'defaultId' : _ref$providerId,
|
|
17
17
|
onSuccess = _ref.onSuccess,
|
|
18
18
|
onError = _ref.onError,
|
|
19
|
+
onMessage = _ref.onMessage,
|
|
19
20
|
children = _ref.children;
|
|
20
21
|
// 使用 useAgentGenerator Hook 管理消息状态
|
|
21
22
|
var _useAgentGenerator = useAgentGenerator({
|
|
@@ -23,15 +24,21 @@ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
23
24
|
token: token,
|
|
24
25
|
config: config,
|
|
25
26
|
onError: onError,
|
|
26
|
-
onSuccess: onSuccess
|
|
27
|
+
onSuccess: onSuccess,
|
|
28
|
+
onMessage: onMessage
|
|
27
29
|
}),
|
|
28
30
|
appInfo = _useAgentGenerator.appInfo,
|
|
29
31
|
chat = _useAgentGenerator.chat,
|
|
30
32
|
stopChat = _useAgentGenerator.stopChat,
|
|
31
33
|
reChat = _useAgentGenerator.reChat,
|
|
34
|
+
initPrologue = _useAgentGenerator.initPrologue,
|
|
35
|
+
loadMoreSessions = _useAgentGenerator.loadMoreSessions,
|
|
36
|
+
sessionPagination = _useAgentGenerator.sessionPagination,
|
|
37
|
+
sessionList = _useAgentGenerator.sessionList,
|
|
32
38
|
messages = _useAgentGenerator.messages,
|
|
33
39
|
loading = _useAgentGenerator.loading,
|
|
34
|
-
|
|
40
|
+
setCurrentSessionId = _useAgentGenerator.setCurrentSessionId,
|
|
41
|
+
setCurrentSessionDetail = _useAgentGenerator.setCurrentSessionDetail,
|
|
35
42
|
setMessages = _useAgentGenerator.setMessages;
|
|
36
43
|
var _ref2 = appInfo || {},
|
|
37
44
|
appName = _ref2.appName,
|
|
@@ -48,9 +55,9 @@ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
48
55
|
return messages;
|
|
49
56
|
},
|
|
50
57
|
setMessages: setMessages,
|
|
51
|
-
|
|
58
|
+
setCurrentSessionDetail: setCurrentSessionDetail
|
|
52
59
|
};
|
|
53
|
-
}, [appInfo, messages, chat, stopChat, reChat, setMessages,
|
|
60
|
+
}, [appInfo, messages, chat, stopChat, reChat, setMessages, setCurrentSessionDetail]);
|
|
54
61
|
|
|
55
62
|
// 发送消息
|
|
56
63
|
var handleSendMessage = function handleSendMessage(_type, content) {
|
|
@@ -59,9 +66,10 @@ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
59
66
|
|
|
60
67
|
// 清空消息
|
|
61
68
|
var handleClearMessage = function handleClearMessage() {
|
|
62
|
-
stopChat();
|
|
63
|
-
setMessages([]);
|
|
64
|
-
|
|
69
|
+
stopChat(); // 停止聊天
|
|
70
|
+
setMessages([]); // 清空所有消息
|
|
71
|
+
initPrologue(); // 初始化开场白和预置问题
|
|
72
|
+
setCurrentSessionId(uuidV4()); // 设置会话 id
|
|
65
73
|
};
|
|
66
74
|
|
|
67
75
|
// 工具栏按钮点击
|
|
@@ -115,6 +123,11 @@ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
115
123
|
});
|
|
116
124
|
});
|
|
117
125
|
};
|
|
126
|
+
|
|
127
|
+
// 切换会话
|
|
128
|
+
var handleActiveChange = function handleActiveChange(key) {
|
|
129
|
+
setCurrentSessionDetail(key);
|
|
130
|
+
};
|
|
118
131
|
var ToolTip = function ToolTip(messageData) {
|
|
119
132
|
var finalResult = ((messageData === null || messageData === void 0 ? void 0 : messageData.think) || []).find(function (item) {
|
|
120
133
|
return item.actionName === 'FINISHED';
|
|
@@ -157,14 +170,18 @@ var XAiProvider = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
157
170
|
emptyStateText: appName,
|
|
158
171
|
footerTips: '内容由AI生成,无法确保真实准确,仅供参考',
|
|
159
172
|
providerId: providerId,
|
|
173
|
+
sessionList: sessionList,
|
|
174
|
+
sessionTotal: sessionPagination.total,
|
|
160
175
|
token: token,
|
|
161
176
|
messages: messages,
|
|
162
177
|
loading: loading,
|
|
163
178
|
error: null,
|
|
164
179
|
messageTooltip: ToolTip,
|
|
180
|
+
loadMoreSessions: loadMoreSessions,
|
|
165
181
|
onSend: handleSendMessage,
|
|
166
182
|
onClear: handleClearMessage,
|
|
167
183
|
onStop: stopChat,
|
|
184
|
+
onActiveChange: handleActiveChange,
|
|
168
185
|
onSuggestMessageClick: handleSuggestMessageClick,
|
|
169
186
|
onMessagesActionsCallback: handleActions,
|
|
170
187
|
isInProvider: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","forwardRef","useImperativeHandle","message","Divider","v4","uuidV4","copy","XProvider","XAiContext","useAgentGenerator","userIcon","jsxs","_jsxs","jsx","_jsx","XAiProvider","_ref","ref","url","token","config","_ref$providerId","providerId","onSuccess","onError","children","_useAgentGenerator","appInfo","chat","stopChat","reChat","messages","loading","setCurrentSession","setMessages","_ref2","appName","icon","getAppInfo","getMessages","handleSendMessage","_type","content","handleClearMessage","handleActions","index","actionData","_ref3","id","_content$text","text","success","idx","findIndex","item","length","prev","filter","type","handleSuggestMessageClick","_item","m","ToolTip","messageData","finalResult","think","find","actionName","_ref4","extra","cost","tokenCount","style","display","alignItems","fontSize","color","flex","paddingRight","undefined","Provider","value","avatar","src","alt","userAvatar","emptyStateImage","emptyStateText","footerTips","error","messageTooltip","onSend","onClear","onStop","onSuggestMessageClick","onMessagesActionsCallback","isInProvider"],"sources":["../../../../src/components/XAiProvider/index.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle } from 'react';\nimport { message, Divider } from 'antd';\nimport { v4 as uuidV4 } from 'uuid';\nimport copy from 'copy-to-clipboard';\nimport { XProvider } from '@ant-design/x';\nimport { XAiContext } from '@/context/AiProviderContext';\nimport { XAiProviderProps, XAiProviderHandle } from '@/types/XAiProvider';\nimport useAgentGenerator from '@/hooks/useAgentGenerator';\nimport userIcon from '@/assets/user.png';\n\nconst XAiProvider = forwardRef<XAiProviderHandle, XAiProviderProps>(({\n url,\n token,\n config,\n providerId = 'defaultId',\n onSuccess,\n onError,\n children,\n}, ref) => {\n // 使用 useAgentGenerator Hook 管理消息状态\n const { appInfo, chat, stopChat, reChat, messages, loading, setCurrentSession, setMessages } = useAgentGenerator({ url, token, config, onError, onSuccess });\n\n const { appName, icon } = appInfo || {};\n\n useImperativeHandle(ref, () => ({\n chat,\n stopChat,\n reChat,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n setMessages,\n setCurrentSession,\n }), [appInfo, messages, chat, stopChat, reChat, setMessages, setCurrentSession]);\n\n // 发送消息\n const handleSendMessage = (_type: string, content: string) => {\n chat(content);\n };\n\n // 清空消息\n const handleClearMessage = () => {\n stopChat();\n setMessages([]);\n setCurrentSession(uuidV4());\n };\n\n // 工具栏按钮点击\n const handleActions = (index: number, actionData: any) => {\n const { content, id } = actionData || {};\n const { text = '' } = content;\n switch (index) {\n case 0:\n reChat();\n break;\n case 1:\n copy(text);\n message.success('复制成功');\n break;\n case 2: {\n const idx = messages.findIndex((item) => item.id === id);\n if (idx >= 0) {\n // 删除该条消息及建议类消息\n if (messages.length - idx <= 2) {\n setMessages((prev) => prev.filter((item) => item.id !== id && item.type !== 'SuggestionMessage'));\n } else {\n // 非最新消息 只删除该条消息\n setMessages((prev) => prev.filter((item) => item.id !== id));\n }\n message.success('删除成功');\n }\n break;\n }\n }\n };\n\n // 建议消息点击\n const handleSuggestMessageClick = (_item: any, id: string) => {\n setMessages((prev: any[]) => prev.filter((m: any) => m.id !== id));\n };\n\n const ToolTip = (messageData: any) => {\n const finalResult = (messageData?.think || []).find((item: any) => item.actionName === 'FINISHED');\n if (!finalResult) return null;\n const { cost, token: tokenCount } = finalResult.extra || {};\n if (!cost && !token) return null;\n return (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: '12px', color: '#949494', flex: 1, paddingRight: '40px' }}>\n { (cost !== undefined && cost !== null) && <div>{cost}s</div> }\n { tokenCount && <Divider type=\"vertical\" /> }\n { tokenCount && <div>{ tokenCount } tokens</div> }\n </div>\n );\n };\n\n return (\n <XProvider>\n <XAiContext.Provider value={{\n avatar: <img src={icon} alt=\"智能体头像\" />,\n userAvatar: <img src={userIcon} alt=\"用户头像\" />,\n emptyStateImage: icon,\n emptyStateText: appName,\n footerTips: '内容由AI生成,无法确保真实准确,仅供参考',\n providerId,\n token,\n messages,\n loading,\n error: null,\n messageTooltip: ToolTip,\n onSend: handleSendMessage,\n onClear: handleClearMessage,\n onStop: stopChat,\n onSuggestMessageClick: handleSuggestMessageClick,\n onMessagesActionsCallback: handleActions,\n isInProvider: true,\n }}\n >\n {children}\n </XAiContext.Provider>\n </XProvider>\n );\n});\n\nexport default XAiProvider;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,mBAAmB,QAAQ,OAAO;AAC9D,SAASC,OAAO,EAAEC,OAAO,QAAQ,MAAM;AACvC,SAASC,EAAE,IAAIC,MAAM,QAAQ,MAAM;AACnC,OAAOC,IAAI,MAAM,mBAAmB;AACpC,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,UAAU;AAEnB,OAAOC,iBAAiB;AACxB,OAAOC,QAAQ;AAA0B,SAAAC,IAAA,IAAAC,KAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEzC,IAAMC,WAAW,gBAAGf,UAAU,CAAsC,UAAAgB,IAAA,EAQjEC,GAAG,EAAK;EAAA,IAPTC,GAAG,GAAAF,IAAA,CAAHE,GAAG;IACHC,KAAK,GAAAH,IAAA,CAALG,KAAK;IACLC,MAAM,GAAAJ,IAAA,CAANI,MAAM;IAAAC,eAAA,GAAAL,IAAA,CACNM,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAG,WAAW,GAAAA,eAAA;IACxBE,SAAS,GAAAP,IAAA,CAATO,SAAS;IACTC,OAAO,GAAAR,IAAA,CAAPQ,OAAO;IACPC,QAAQ,GAAAT,IAAA,CAARS,QAAQ;EAER;EACA,IAAAC,kBAAA,GAA+FjB,iBAAiB,CAAC;MAAES,GAAG,EAAHA,GAAG;MAAEC,KAAK,EAALA,KAAK;MAAEC,MAAM,EAANA,MAAM;MAAEI,OAAO,EAAPA,OAAO;MAAED,SAAS,EAATA;IAAU,CAAC,CAAC;IAApJI,OAAO,GAAAD,kBAAA,CAAPC,OAAO;IAAEC,IAAI,GAAAF,kBAAA,CAAJE,IAAI;IAAEC,QAAQ,GAAAH,kBAAA,CAARG,QAAQ;IAAEC,MAAM,GAAAJ,kBAAA,CAANI,MAAM;IAAEC,QAAQ,GAAAL,kBAAA,CAARK,QAAQ;IAAEC,OAAO,GAAAN,kBAAA,CAAPM,OAAO;IAAEC,iBAAiB,GAAAP,kBAAA,CAAjBO,iBAAiB;IAAEC,WAAW,GAAAR,kBAAA,CAAXQ,WAAW;EAE1F,IAAAC,KAAA,GAA0BR,OAAO,IAAI,CAAC,CAAC;IAA/BS,OAAO,GAAAD,KAAA,CAAPC,OAAO;IAAEC,IAAI,GAAAF,KAAA,CAAJE,IAAI;EAErBpC,mBAAmB,CAACgB,GAAG,EAAE;IAAA,OAAO;MAC9BW,IAAI,EAAJA,IAAI;MACJC,QAAQ,EAARA,QAAQ;MACRC,MAAM,EAANA,MAAM;MACNQ,UAAU,EAAE,SAAAA,WAAA;QAAA,OAAMX,OAAO;MAAA;MACzBY,WAAW,EAAE,SAAAA,YAAA;QAAA,OAAMR,QAAQ;MAAA;MAC3BG,WAAW,EAAXA,WAAW;MACXD,iBAAiB,EAAjBA;IACF,CAAC;EAAA,CAAC,EAAE,CAACN,OAAO,EAAEI,QAAQ,EAAEH,IAAI,EAAEC,QAAQ,EAAEC,MAAM,EAAEI,WAAW,EAAED,iBAAiB,CAAC,CAAC;;EAEhF;EACA,IAAMO,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,KAAa,EAAEC,OAAe,EAAK;IAC5Dd,IAAI,CAACc,OAAO,CAAC;EACf,CAAC;;EAED;EACA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAA,EAAS;IAC/Bd,QAAQ,CAAC,CAAC;IACVK,WAAW,CAAC,EAAE,CAAC;IACfD,iBAAiB,CAAC5B,MAAM,CAAC,CAAC,CAAC;EAC7B,CAAC;;EAED;EACA,IAAMuC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAa,EAAEC,UAAe,EAAK;IACxD,IAAAC,KAAA,GAAwBD,UAAU,IAAI,CAAC,CAAC;MAAhCJ,OAAO,GAAAK,KAAA,CAAPL,OAAO;MAAEM,EAAE,GAAAD,KAAA,CAAFC,EAAE;IACnB,IAAAC,aAAA,GAAsBP,OAAO,CAArBQ,IAAI;MAAJA,IAAI,GAAAD,aAAA,cAAG,EAAE,GAAAA,aAAA;IACjB,QAAQJ,KAAK;MACX,KAAK,CAAC;QACJf,MAAM,CAAC,CAAC;QACR;MACF,KAAK,CAAC;QACJxB,IAAI,CAAC4C,IAAI,CAAC;QACVhD,OAAO,CAACiD,OAAO,CAAC,MAAM,CAAC;QACvB;MACF,KAAK,CAAC;QAAE;UACN,IAAMC,GAAG,GAAGrB,QAAQ,CAACsB,SAAS,CAAC,UAACC,IAAI;YAAA,OAAKA,IAAI,CAACN,EAAE,KAAKA,EAAE;UAAA,EAAC;UACxD,IAAII,GAAG,IAAI,CAAC,EAAE;YACZ;YACA,IAAIrB,QAAQ,CAACwB,MAAM,GAAGH,GAAG,IAAI,CAAC,EAAE;cAC9BlB,WAAW,CAAC,UAACsB,IAAI;gBAAA,OAAKA,IAAI,CAACC,MAAM,CAAC,UAACH,IAAI;kBAAA,OAAKA,IAAI,CAACN,EAAE,KAAKA,EAAE,IAAIM,IAAI,CAACI,IAAI,KAAK,mBAAmB;gBAAA,EAAC;cAAA,EAAC;YACnG,CAAC,MAAM;cACL;cACAxB,WAAW,CAAC,UAACsB,IAAI;gBAAA,OAAKA,IAAI,CAACC,MAAM,CAAC,UAACH,IAAI;kBAAA,OAAKA,IAAI,CAACN,EAAE,KAAKA,EAAE;gBAAA,EAAC;cAAA,EAAC;YAC9D;YACA9C,OAAO,CAACiD,OAAO,CAAC,MAAM,CAAC;UACzB;UACA;QACF;IACF;EACF,CAAC;;EAED;EACA,IAAMQ,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAIC,KAAU,EAAEZ,EAAU,EAAK;IAC5Dd,WAAW,CAAC,UAACsB,IAAW;MAAA,OAAKA,IAAI,CAACC,MAAM,CAAC,UAACI,CAAM;QAAA,OAAKA,CAAC,CAACb,EAAE,KAAKA,EAAE;MAAA,EAAC;IAAA,EAAC;EACpE,CAAC;EAED,IAAMc,OAAO,GAAG,SAAVA,OAAOA,CAAIC,WAAgB,EAAK;IACpC,IAAMC,WAAW,GAAG,CAAC,CAAAD,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEE,KAAK,KAAI,EAAE,EAAEC,IAAI,CAAC,UAACZ,IAAS;MAAA,OAAKA,IAAI,CAACa,UAAU,KAAK,UAAU;IAAA,EAAC;IAClG,IAAI,CAACH,WAAW,EAAE,OAAO,IAAI;IAC7B,IAAAI,KAAA,GAAoCJ,WAAW,CAACK,KAAK,IAAI,CAAC,CAAC;MAAnDC,IAAI,GAAAF,KAAA,CAAJE,IAAI;MAASC,UAAU,GAAAH,KAAA,CAAjBjD,KAAK;IACnB,IAAI,CAACmD,IAAI,IAAI,CAACnD,KAAK,EAAE,OAAO,IAAI;IAChC,oBACEP,KAAA;MAAK4D,KAAK,EAAE;QAAEC,OAAO,EAAE,MAAM;QAAEC,UAAU,EAAE,QAAQ;QAAEC,QAAQ,EAAE,MAAM;QAAEC,KAAK,EAAE,SAAS;QAAEC,IAAI,EAAE,CAAC;QAAEC,YAAY,EAAE;MAAO,CAAE;MAAArD,QAAA,GACpH6C,IAAI,KAAKS,SAAS,IAAIT,IAAI,KAAK,IAAI,iBAAK1D,KAAA;QAAAa,QAAA,GAAM6C,IAAI,EAAC,GAAC;MAAA,CAAK,CAAC,EAC3DC,UAAU,iBAAIzD,IAAA,CAACX,OAAO;QAACuD,IAAI,EAAC;MAAU,CAAE,CAAC,EACzCa,UAAU,iBAAI3D,KAAA;QAAAa,QAAA,GAAO8C,UAAU,EAAE,SAAO;MAAA,CAAK,CAAC;IAAA,CAC7C,CAAC;EAEV,CAAC;EAED,oBACEzD,IAAA,CAACP,SAAS;IAAAkB,QAAA,eACRX,IAAA,CAACN,UAAU,CAACwE,QAAQ;MAACC,KAAK,EAAE;QAC1BC,MAAM,eAAEpE,IAAA;UAAKqE,GAAG,EAAE9C,IAAK;UAAC+C,GAAG,EAAC;QAAO,CAAE,CAAC;QACtCC,UAAU,eAAEvE,IAAA;UAAKqE,GAAG,EAAEzE,QAAS;UAAC0E,GAAG,EAAC;QAAM,CAAE,CAAC;QAC7CE,eAAe,EAAEjD,IAAI;QACrBkD,cAAc,EAAEnD,OAAO;QACvBoD,UAAU,EAAE,uBAAuB;QACnClE,UAAU,EAAVA,UAAU;QACVH,KAAK,EAALA,KAAK;QACLY,QAAQ,EAARA,QAAQ;QACRC,OAAO,EAAPA,OAAO;QACPyD,KAAK,EAAE,IAAI;QACXC,cAAc,EAAE5B,OAAO;QACvB6B,MAAM,EAAEnD,iBAAiB;QACzBoD,OAAO,EAAEjD,kBAAkB;QAC3BkD,MAAM,EAAEhE,QAAQ;QAChBiE,qBAAqB,EAAEnC,yBAAyB;QAChDoC,yBAAyB,EAAEnD,aAAa;QACxCoD,YAAY,EAAE;MAChB,CAAE;MAAAvE,QAAA,EAECA;IAAQ,CACU;EAAC,CACb,CAAC;AAEhB,CAAC,CAAC;AAEF,eAAeV,WAAW"}
|
|
1
|
+
{"version":3,"names":["React","forwardRef","useImperativeHandle","message","Divider","v4","uuidV4","copy","XProvider","XAiContext","useAgentGenerator","userIcon","jsxs","_jsxs","jsx","_jsx","XAiProvider","_ref","ref","url","token","config","_ref$providerId","providerId","onSuccess","onError","onMessage","children","_useAgentGenerator","appInfo","chat","stopChat","reChat","initPrologue","loadMoreSessions","sessionPagination","sessionList","messages","loading","setCurrentSessionId","setCurrentSessionDetail","setMessages","_ref2","appName","icon","getAppInfo","getMessages","handleSendMessage","_type","content","handleClearMessage","handleActions","index","actionData","_ref3","id","_content$text","text","success","idx","findIndex","item","length","prev","filter","type","handleSuggestMessageClick","_item","m","handleActiveChange","key","ToolTip","messageData","finalResult","think","find","actionName","_ref4","extra","cost","tokenCount","style","display","alignItems","fontSize","color","flex","paddingRight","undefined","Provider","value","avatar","src","alt","userAvatar","emptyStateImage","emptyStateText","footerTips","sessionTotal","total","error","messageTooltip","onSend","onClear","onStop","onActiveChange","onSuggestMessageClick","onMessagesActionsCallback","isInProvider"],"sources":["../../../../src/components/XAiProvider/index.tsx"],"sourcesContent":["import React, { forwardRef, useImperativeHandle } from 'react';\nimport { message, Divider } from 'antd';\nimport { v4 as uuidV4 } from 'uuid';\nimport copy from 'copy-to-clipboard';\nimport { XProvider } from '@ant-design/x';\nimport { XAiContext } from '@/context/AiProviderContext';\nimport { XAiProviderProps, XAiProviderHandle } from '@/types/XAiProvider';\nimport useAgentGenerator from '@/hooks/useAgentGenerator';\nimport userIcon from '@/assets/user.png';\n\nconst XAiProvider = forwardRef<XAiProviderHandle, XAiProviderProps>(({\n url,\n token,\n config,\n providerId = 'defaultId',\n onSuccess,\n onError,\n onMessage,\n children,\n}, ref) => {\n // 使用 useAgentGenerator Hook 管理消息状态\n const {\n appInfo,\n chat,\n stopChat,\n reChat,\n initPrologue,\n loadMoreSessions,\n sessionPagination,\n sessionList,\n messages,\n loading,\n setCurrentSessionId,\n setCurrentSessionDetail,\n setMessages\n } = useAgentGenerator({ url, token, config, onError, onSuccess, onMessage });\n\n const { appName, icon } = appInfo || {};\n\n useImperativeHandle(ref, () => ({\n chat,\n stopChat,\n reChat,\n getAppInfo: () => appInfo,\n getMessages: () => messages,\n setMessages,\n setCurrentSessionDetail,\n }), [appInfo, messages, chat, stopChat, reChat, setMessages, setCurrentSessionDetail]);\n\n // 发送消息\n const handleSendMessage = (_type: string, content: string) => {\n chat(content);\n };\n\n // 清空消息\n const handleClearMessage = () => {\n stopChat(); // 停止聊天\n setMessages([]); // 清空所有消息\n initPrologue(); // 初始化开场白和预置问题\n setCurrentSessionId(uuidV4()); // 设置会话 id\n };\n \n\n // 工具栏按钮点击\n const handleActions = (index: number, actionData: any) => {\n const { content, id } = actionData || {};\n const { text = '' } = content;\n switch (index) {\n case 0:\n reChat();\n break;\n case 1:\n copy(text);\n message.success('复制成功');\n break;\n case 2: {\n const idx = messages.findIndex((item) => item.id === id);\n if (idx >= 0) {\n // 删除该条消息及建议类消息\n if (messages.length - idx <= 2) {\n setMessages((prev) => prev.filter((item) => item.id !== id && item.type !== 'SuggestionMessage'));\n } else {\n // 非最新消息 只删除该条消息\n setMessages((prev) => prev.filter((item) => item.id !== id));\n }\n message.success('删除成功');\n }\n break;\n }\n }\n };\n\n // 建议消息点击\n const handleSuggestMessageClick = (_item: any, id: string) => {\n setMessages((prev: any[]) => prev.filter((m: any) => m.id !== id));\n };\n\n // 切换会话\n const handleActiveChange = (key: string) => {\n setCurrentSessionDetail(key);\n };\n\n const ToolTip = (messageData: any) => {\n const finalResult = (messageData?.think || []).find((item: any) => item.actionName === 'FINISHED');\n if (!finalResult) return null;\n const { cost, token: tokenCount } = finalResult.extra || {};\n if (!cost && !token) return null;\n return (\n <div style={{ display: 'flex', alignItems: 'center', fontSize: '12px', color: '#949494', flex: 1, paddingRight: '40px' }}>\n { (cost !== undefined && cost !== null) && <div>{cost}s</div> }\n { tokenCount && <Divider type=\"vertical\" /> }\n { tokenCount && <div>{ tokenCount } tokens</div> }\n </div>\n );\n };\n\n return (\n <XProvider>\n <XAiContext.Provider value={{\n avatar: <img src={icon} alt=\"智能体头像\" />,\n userAvatar: <img src={userIcon} alt=\"用户头像\" />,\n emptyStateImage: icon,\n emptyStateText: appName,\n footerTips: '内容由AI生成,无法确保真实准确,仅供参考',\n providerId,\n sessionList,\n sessionTotal: sessionPagination.total, \n token,\n messages,\n loading,\n error: null,\n messageTooltip: ToolTip,\n loadMoreSessions,\n onSend: handleSendMessage,\n onClear: handleClearMessage,\n onStop: stopChat,\n onActiveChange: handleActiveChange,\n onSuggestMessageClick: handleSuggestMessageClick,\n onMessagesActionsCallback: handleActions,\n isInProvider: true,\n }}\n >\n {children}\n </XAiContext.Provider>\n </XProvider>\n );\n});\n\nexport default XAiProvider;\n"],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { XAiChatbotProps } from "../types
|
|
3
|
-
export interface XAiContextType extends XAiChatbotProps {
|
|
2
|
+
import type { XAiChatbotProps, XAiConversationsProps } from "../types";
|
|
3
|
+
export interface XAiContextType extends Omit<XAiChatbotProps, 'onScroll'>, Omit<XAiConversationsProps, 'onScroll'> {
|
|
4
|
+
onScroll?: (event: React.UIEvent<HTMLDivElement>) => void;
|
|
4
5
|
providerId?: string;
|
|
5
6
|
token: string;
|
|
6
7
|
error: string | null;
|
|
8
|
+
loadMoreSessions?: () => void;
|
|
7
9
|
isInProvider?: boolean;
|
|
8
10
|
}
|
|
9
11
|
declare const XAiContext: React.Context<XAiContextType>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useContext","defaultContextValue","providerId","undefined","token","messages","loading","error","emptyStateImage","emptyStateText","isInProvider","XAiContext","_unused","fallback","useXAi","context","_unused2","useXAiProviders","_unused3"],"sources":["../../../src/context/AiProviderContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { XAiChatbotProps } from '@/types
|
|
1
|
+
{"version":3,"names":["createContext","useContext","defaultContextValue","providerId","undefined","token","messages","loading","error","emptyStateImage","emptyStateText","isInProvider","XAiContext","_unused","fallback","useXAi","context","_unused2","useXAiProviders","_unused3"],"sources":["../../../src/context/AiProviderContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { XAiChatbotProps, XAiConversationsProps } from '@/types';\n\n// 定义 context 的类型\n// 解决 onScroll 冲突,显式声明 onScroll 类型\nexport interface XAiContextType extends Omit<XAiChatbotProps, 'onScroll'>, Omit<XAiConversationsProps, 'onScroll'> {\n onScroll?: (event: React.UIEvent<HTMLDivElement>) => void;\n providerId?: string;\n token: string;\n error: string | null;\n // 加载更多 session\n loadMoreSessions?: () => void;\n // 标识是否在真实的 Provider 中\n isInProvider?: boolean;\n}\n\n// 默认 context 值\nconst defaultContextValue: XAiContextType = {\n providerId: undefined,\n token: '',\n messages: [],\n loading: false,\n error: null,\n emptyStateImage: '',\n emptyStateText: '',\n\n isInProvider: false,\n};\n\n// 安全地创建 context,避免 React 为 null 的情况\nconst XAiContext: React.Context<XAiContextType> = (() => {\n try {\n return createContext<XAiContextType>(defaultContextValue);\n } catch {\n // 如果 React 不可用,创建一个 fallback\n // eslint-disable-next-line\n const fallback: React.Context<XAiContextType> = {} as React.Context<XAiContextType>;\n return fallback;\n }\n})();\n\nexport { XAiContext };\n\n// 改进的 useXAi hook\nexport const useXAi = () => {\n try {\n const context = useContext(XAiContext);\n\n // 如果没有在 Provider 中,返回 undefined\n if (!context?.isInProvider) {\n return undefined;\n }\n\n return context;\n } catch {\n // 如果 useContext 失败,返回 undefined\n return undefined;\n }\n};\n\n// 获取所有可用的 Provider ID\nexport const useXAiProviders = () => {\n try {\n const context = useContext(XAiContext);\n\n // 如果没有在 Provider 中,返回空数组\n if (!context?.isInProvider) {\n return [];\n }\n\n // 返回当前 Provider 的 ID(如果有的话)\n return context.providerId ? [context.providerId] : [];\n } catch {\n return [];\n }\n};\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAGjD;AACA;;AAYA;AACA,IAAMC,mBAAmC,GAAG;EAC1CC,UAAU,EAAEC,SAAS;EACrBC,KAAK,EAAE,EAAE;EACTC,QAAQ,EAAE,EAAE;EACZC,OAAO,EAAE,KAAK;EACdC,KAAK,EAAE,IAAI;EACXC,eAAe,EAAE,EAAE;EACnBC,cAAc,EAAE,EAAE;EAElBC,YAAY,EAAE;AAChB,CAAC;;AAED;AACA,IAAMC,UAAyC,GAAI,YAAM;EACvD,IAAI;IACF,oBAAOZ,aAAa,CAAiBE,mBAAmB,CAAC;EAC3D,CAAC,CAAC,OAAAW,OAAA,EAAM;IACN;IACA;IACA,IAAMC,QAAuC,GAAG,CAAC,CAAkC;IACnF,OAAOA,QAAQ;EACjB;AACF,CAAC,CAAE,CAAC;AAEJ,SAASF,UAAU;;AAEnB;AACA,OAAO,IAAMG,MAAM,GAAG,SAATA,MAAMA,CAAA,EAAS;EAC1B,IAAI;IACF,IAAMC,OAAO,GAAGf,UAAU,CAACW,UAAU,CAAC;;IAEtC;IACA,IAAI,EAACI,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEL,YAAY,GAAE;MAC1B,OAAOP,SAAS;IAClB;IAEA,OAAOY,OAAO;EAChB,CAAC,CAAC,OAAAC,QAAA,EAAM;IACN;IACA,OAAOb,SAAS;EAClB;AACF,CAAC;;AAED;AACA,OAAO,IAAMc,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAS;EACnC,IAAI;IACF,IAAMF,OAAO,GAAGf,UAAU,CAACW,UAAU,CAAC;;IAEtC;IACA,IAAI,EAACI,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEL,YAAY,GAAE;MAC1B,OAAO,EAAE;IACX;;IAEA;IACA,OAAOK,OAAO,CAACb,UAAU,GAAG,CAACa,OAAO,CAACb,UAAU,CAAC,GAAG,EAAE;EACvD,CAAC,CAAC,OAAAgB,QAAA,EAAM;IACN,OAAO,EAAE;EACX;AACF,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { Messages } from "../types/XAiMessage";
|
|
3
|
-
import { Error, Success } from "../types
|
|
3
|
+
import { Error, Success, sessionData } from "../types";
|
|
4
4
|
export type ContentType = 'TEXT' | 'IMAGE' | 'FILE';
|
|
5
5
|
export interface ImageUrl {
|
|
6
6
|
url: string;
|
|
@@ -57,19 +57,28 @@ export interface UseAgentGeneratorProps {
|
|
|
57
57
|
config: any;
|
|
58
58
|
onError?: (error: Error) => void;
|
|
59
59
|
onSuccess?: (data: Success) => void;
|
|
60
|
+
onMessage?: (data: Messages) => void;
|
|
60
61
|
}
|
|
61
|
-
declare const useAgentGenerator: ({ url, token, config, onError, onSuccess, }: UseAgentGeneratorProps) => {
|
|
62
|
+
declare const useAgentGenerator: ({ url, token, config, onError, onMessage, onSuccess, }: UseAgentGeneratorProps) => {
|
|
62
63
|
appInfo: any;
|
|
63
64
|
messages: Messages[];
|
|
64
65
|
loading: boolean;
|
|
65
66
|
content: any;
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
sessionList: sessionData[];
|
|
68
|
+
currentSessionId: string;
|
|
69
|
+
sessionPagination: {
|
|
70
|
+
total: number;
|
|
71
|
+
pageNum: number;
|
|
72
|
+
pageSize: number;
|
|
73
|
+
};
|
|
74
|
+
loadMoreSessions: () => Promise<void>;
|
|
68
75
|
reChat: () => void;
|
|
69
76
|
chat: (content: any) => Promise<void>;
|
|
70
|
-
|
|
77
|
+
setCurrentSessionId: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
78
|
+
setCurrentSessionDetail: (sessionId: string) => Promise<void>;
|
|
71
79
|
setMessage: (messageType: string, content: any) => Promise<void>;
|
|
72
80
|
setMessages: import("react").Dispatch<import("react").SetStateAction<Messages[]>>;
|
|
73
81
|
stopChat: () => void;
|
|
82
|
+
initPrologue: () => Promise<void>;
|
|
74
83
|
};
|
|
75
84
|
export default useAgentGenerator;
|