@ai-group/chat-sdk 0.2.5 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/cjs/assets/arrow-down.png +0 -0
  2. package/dist/cjs/assets/arrow-up.png +0 -0
  3. package/dist/cjs/assets/chatKnowledge.png +0 -0
  4. package/dist/cjs/assets/completed-black.png +0 -0
  5. package/dist/cjs/assets/completed.png +0 -0
  6. package/dist/cjs/assets/document-black.png +0 -0
  7. package/dist/cjs/assets/document.png +0 -0
  8. package/dist/cjs/assets/document.svg +16 -0
  9. package/dist/cjs/assets/empty.png +0 -0
  10. package/dist/cjs/assets/group.png +0 -0
  11. package/dist/cjs/assets/qa-black.png +0 -0
  12. package/dist/cjs/assets/qa.png +0 -0
  13. package/dist/cjs/assets/skillNo-black.png +0 -0
  14. package/dist/cjs/assets/skillNo.png +0 -0
  15. package/dist/cjs/assets/tools-black.png +0 -0
  16. package/dist/cjs/assets/tools.png +0 -0
  17. package/dist/cjs/assets/user.png +0 -0
  18. package/dist/cjs/client/base.d.ts +9 -0
  19. package/dist/cjs/client/base.js +18 -0
  20. package/dist/cjs/client/base.js.map +7 -0
  21. package/dist/cjs/client/restClient.d.ts +0 -0
  22. package/dist/cjs/client/restClient.js +1 -0
  23. package/dist/cjs/client/restClient.js.map +7 -0
  24. package/dist/cjs/client/wsClient.d.ts +0 -0
  25. package/dist/cjs/client/wsClient.js +1 -0
  26. package/dist/cjs/client/wsClient.js.map +7 -0
  27. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.d.ts +10 -0
  28. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js +484 -0
  29. package/dist/cjs/components/XAiChatbot/XAiChatbot.stories.js.map +7 -0
  30. package/dist/cjs/components/XAiChatbot/index.d.ts +12 -0
  31. package/dist/cjs/components/XAiChatbot/index.js +365 -0
  32. package/dist/cjs/components/XAiChatbot/index.js.map +7 -0
  33. package/dist/cjs/components/XAiChatbot/styles.d.ts +71 -0
  34. package/dist/cjs/components/XAiChatbot/styles.js +409 -0
  35. package/dist/cjs/components/XAiChatbot/styles.js.map +7 -0
  36. package/dist/cjs/components/XAiProvider/XAiProvider.stories.d.ts +7 -0
  37. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js +127 -0
  38. package/dist/cjs/components/XAiProvider/XAiProvider.stories.js.map +7 -0
  39. package/dist/cjs/components/XAiProvider/index.d.ts +4 -0
  40. package/dist/cjs/components/XAiProvider/index.js +113 -0
  41. package/dist/cjs/components/XAiProvider/index.js.map +7 -0
  42. package/dist/cjs/components/XAiSDK.d.ts +10 -0
  43. package/dist/cjs/components/XAiSDK.js +53 -0
  44. package/dist/cjs/components/XAiSDK.js.map +7 -0
  45. package/dist/cjs/components/XAiWebSDKWrapper.d.ts +9 -0
  46. package/dist/cjs/components/XAiWebSDKWrapper.js +64 -0
  47. package/dist/cjs/components/XAiWebSDKWrapper.js.map +7 -0
  48. package/dist/cjs/context/AiProviderContext.d.ts +12 -0
  49. package/dist/cjs/context/AiProviderContext.js +74 -0
  50. package/dist/cjs/context/AiProviderContext.js.map +7 -0
  51. package/dist/cjs/context/ThemeContext.d.ts +20 -0
  52. package/dist/cjs/context/ThemeContext.js +37 -0
  53. package/dist/cjs/context/ThemeContext.js.map +7 -0
  54. package/dist/cjs/hooks/useAgentGenerator.d.ts +67 -0
  55. package/dist/cjs/hooks/useAgentGenerator.js +445 -0
  56. package/dist/cjs/hooks/useAgentGenerator.js.map +7 -0
  57. package/dist/cjs/hooks/useEventStreamRequest.d.ts +30 -0
  58. package/dist/cjs/hooks/useEventStreamRequest.js +188 -0
  59. package/dist/cjs/hooks/useEventStreamRequest.js.map +7 -0
  60. package/dist/cjs/hooks/useProviderContext.d.ts +33 -0
  61. package/dist/cjs/hooks/useProviderContext.js +105 -0
  62. package/dist/cjs/hooks/useProviderContext.js.map +7 -0
  63. package/dist/cjs/hooks/useXAiSDK.d.ts +14 -0
  64. package/dist/cjs/hooks/useXAiSDK.js +75 -0
  65. package/dist/cjs/hooks/useXAiSDK.js.map +7 -0
  66. package/dist/cjs/index.d.ts +9 -0
  67. package/dist/cjs/index.js +61 -0
  68. package/dist/cjs/index.js.map +7 -0
  69. package/dist/cjs/services/api.d.ts +40 -0
  70. package/dist/cjs/services/api.js +49 -0
  71. package/dist/cjs/services/api.js.map +7 -0
  72. package/dist/cjs/styles/common.d.ts +64 -0
  73. package/dist/cjs/styles/common.js +144 -0
  74. package/dist/cjs/styles/common.js.map +7 -0
  75. package/dist/cjs/styles/markdown.d.ts +3 -0
  76. package/dist/cjs/styles/markdown.js +193 -0
  77. package/dist/cjs/styles/markdown.js.map +7 -0
  78. package/dist/cjs/types/XAiChatbot.d.ts +159 -0
  79. package/dist/cjs/types/XAiChatbot.js +18 -0
  80. package/dist/cjs/types/XAiChatbot.js.map +7 -0
  81. package/dist/cjs/types/XAiMessage.d.ts +121 -0
  82. package/dist/cjs/types/XAiMessage.js +55 -0
  83. package/dist/cjs/types/XAiMessage.js.map +7 -0
  84. package/dist/cjs/types/XAiProvider.d.ts +32 -0
  85. package/dist/cjs/types/XAiProvider.js +41 -0
  86. package/dist/cjs/types/XAiProvider.js.map +7 -0
  87. package/dist/cjs/types/index.d.ts +3 -0
  88. package/dist/cjs/types/index.js +28 -0
  89. package/dist/cjs/types/index.js.map +7 -0
  90. package/dist/cjs/types/mdx.d.ts +18 -0
  91. package/dist/cjs/utils/chat.d.ts +34 -0
  92. package/dist/cjs/utils/chat.js +1 -0
  93. package/dist/cjs/utils/chat.js.map +7 -0
  94. package/dist/cjs/utils/index.d.ts +2 -0
  95. package/dist/cjs/utils/index.js +49 -0
  96. package/dist/cjs/utils/index.js.map +7 -0
  97. package/dist/cjs/utils/providerManager.d.ts +22 -0
  98. package/dist/cjs/utils/providerManager.js +73 -0
  99. package/dist/cjs/utils/providerManager.js.map +7 -0
  100. package/dist/cjs/utils/request.d.ts +78 -0
  101. package/dist/cjs/utils/request.example.d.ts +39 -0
  102. package/dist/cjs/utils/request.example.js +211 -0
  103. package/dist/cjs/utils/request.example.js.map +7 -0
  104. package/dist/cjs/utils/request.js +231 -0
  105. package/dist/cjs/utils/request.js.map +7 -0
  106. package/dist/cjs/utils/umdEntry.d.ts +11 -0
  107. package/dist/cjs/utils/umdEntry.js +95 -0
  108. package/dist/cjs/utils/umdEntry.js.map +7 -0
  109. package/dist/esm/assets/user.png +0 -0
  110. package/dist/esm/client/base.d.ts +9 -0
  111. package/dist/esm/client/restClient.d.ts +0 -0
  112. package/dist/esm/client/wsClient.d.ts +0 -0
  113. package/dist/esm/components/XAiChatbot/XAiChatbot.stories.d.ts +10 -0
  114. package/dist/esm/components/XAiChatbot/index.d.ts +12 -0
  115. package/dist/esm/components/XAiChatbot/index.js +11 -3
  116. package/dist/esm/components/XAiChatbot/index.js.map +1 -1
  117. package/dist/esm/components/XAiChatbot/styles.d.ts +71 -0
  118. package/dist/esm/components/XAiChatbot/styles.js +2 -2
  119. package/dist/esm/components/XAiChatbot/styles.js.map +1 -1
  120. package/dist/esm/components/XAiProvider/XAiProvider.stories.d.ts +7 -0
  121. package/dist/esm/components/XAiProvider/index.d.ts +4 -0
  122. package/dist/esm/components/XAiProvider/index.js +3 -0
  123. package/dist/esm/components/XAiProvider/index.js.map +1 -1
  124. package/dist/esm/components/XAiSDK.d.ts +10 -0
  125. package/dist/esm/components/XAiWebSDKWrapper.d.ts +9 -0
  126. package/dist/esm/context/AiProviderContext.d.ts +12 -0
  127. package/dist/esm/context/ThemeContext.d.ts +20 -0
  128. package/dist/esm/hooks/useAgentGenerator.d.ts +67 -0
  129. package/dist/esm/hooks/useAgentGenerator.js +50 -17
  130. package/dist/esm/hooks/useAgentGenerator.js.map +1 -1
  131. package/dist/esm/hooks/useEventStreamRequest.d.ts +30 -0
  132. package/dist/esm/hooks/useProviderContext.d.ts +33 -0
  133. package/dist/esm/hooks/useXAiSDK.d.ts +14 -0
  134. package/dist/esm/index.d.ts +9 -0
  135. package/dist/esm/services/api.d.ts +40 -0
  136. package/dist/esm/styles/common.d.ts +64 -0
  137. package/dist/esm/styles/markdown.d.ts +3 -0
  138. package/dist/esm/types/XAiChatbot.d.ts +159 -0
  139. package/dist/esm/types/XAiMessage.d.ts +121 -0
  140. package/dist/esm/types/XAiProvider.d.ts +32 -0
  141. package/dist/esm/types/index.d.ts +3 -0
  142. package/dist/esm/utils/chat.d.ts +34 -0
  143. package/dist/esm/utils/index.d.ts +2 -0
  144. package/dist/esm/utils/providerManager.d.ts +22 -0
  145. package/dist/esm/utils/request.d.ts +78 -0
  146. package/dist/esm/utils/request.example.d.ts +39 -0
  147. package/dist/esm/utils/umdEntry.d.ts +11 -0
  148. package/dist/umd/chat-sdk.min.js +1 -1
  149. package/package.json +1 -1
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>编组 5备份</title>
4
+ <g id="自主规划智能体25.7" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="预览调试" transform="translate(-100, -109)" stroke="#3961F2">
6
+ <g id="编组" transform="translate(84, 96)">
7
+ <g id="编组-5备份" transform="translate(16, 13)">
8
+ <path d="M9.63770387,0.5 L13.5,4.3563963 L13.5,12 C13.5,12.4142136 13.3321068,12.7892136 13.0606602,13.0606602 C12.7892136,13.3321068 12.4142136,13.5 12,13.5 L2,13.5 C1.58578644,13.5 1.21078644,13.3321068 0.939339828,13.0606602 C0.667893219,12.7892136 0.5,12.4142136 0.5,12 L0.5,2 C0.5,1.58578644 0.667893219,1.21078644 0.939339828,0.939339828 C1.21078644,0.667893219 1.58578644,0.5 2,0.5 L9.63770387,0.5 Z" id="矩形"></path>
9
+ <line x1="3.5" y1="5.5" x2="7.5" y2="5.5" id="直线" stroke-linecap="round" stroke-linejoin="round"></line>
10
+ <path d="M9.59276104,1.42542483 L9.59276104,3.42542483 C9.59276104,3.97770958 10.0404763,4.42542483 10.592761,4.42542483 L13.0804805,4.42542483 L13.0804805,4.42542483" id="直线备份-2" stroke-linecap="square"></path>
11
+ <line x1="3.5" y1="8.5" x2="9.5" y2="8.5" id="直线备份" stroke-linecap="round" stroke-linejoin="round"></line>
12
+ </g>
13
+ </g>
14
+ </g>
15
+ </g>
16
+ </svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,9 @@
1
+ import { BubbleDataType } from '@ant-design/x/es/bubble/BubbleList';
2
+ export interface AiClient {
3
+ appName: string;
4
+ icon: string;
5
+ send(message: string): Promise<any>;
6
+ stream?(message: string, onMessage: (msg: any) => void): void;
7
+ close?(): void;
8
+ }
9
+ export type MessageType = BubbleDataType;
@@ -0,0 +1,18 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
+
15
+ // src/client/base.ts
16
+ var base_exports = {};
17
+ module.exports = __toCommonJS(base_exports);
18
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/client/base.ts"],
4
+ "sourcesContent": ["// baseClient.ts\nimport { BubbleDataType } from '@ant-design/x/es/bubble/BubbleList';\n\nexport interface AiClient {\n appName: string;\n icon: string;\n send(message: string): Promise<any>;\n stream?(message: string, onMessage: (msg: any) => void): void;\n close?(): void;\n}\n\nexport type MessageType = BubbleDataType;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;",
6
+ "names": []
7
+ }
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=restClient.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=wsClient.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import XAiChatbot from '.';
3
+ declare const meta: Meta<typeof XAiChatbot>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const 基础用法: Story;
7
+ export declare const 在Provider中使用: Story;
8
+ export declare const 多个Provider实例: Story;
9
+ export declare const 新架构演示: Story;
10
+ export declare const 架构对比演示: Story;
@@ -0,0 +1,484 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/XAiChatbot/XAiChatbot.stories.tsx
30
+ var XAiChatbot_stories_exports = {};
31
+ __export(XAiChatbot_stories_exports, {
32
+ default: () => XAiChatbot_stories_default,
33
+ 在Provider中使用: () => 在Provider中使用,
34
+ 基础用法: () => 基础用法,
35
+ 多个Provider实例: () => 多个Provider实例,
36
+ 新架构演示: () => 新架构演示,
37
+ 架构对比演示: () => 架构对比演示
38
+ });
39
+ module.exports = __toCommonJS(XAiChatbot_stories_exports);
40
+ var import_react = __toESM(require("react"));
41
+ var import_antd = require("antd");
42
+ var import_XAiMessage = require("../../types/XAiMessage");
43
+ var import_document = __toESM(require("../../assets/document.svg"));
44
+ var import_XAiProvider = __toESM(require("../XAiProvider"));
45
+ var import__ = __toESM(require("."));
46
+ var import_useProviderContext = require("../../hooks/useProviderContext");
47
+ var meta = {
48
+ title: "AI组件/XAiChatbot",
49
+ component: import__.default,
50
+ parameters: {
51
+ layout: "centered"
52
+ },
53
+ tags: ["autodocs"],
54
+ argTypes: {
55
+ navbar: {
56
+ description: "导航栏配置"
57
+ },
58
+ messages: {
59
+ description: "消息列表"
60
+ }
61
+ }
62
+ };
63
+ var XAiChatbot_stories_default = meta;
64
+ var mockMessages = [
65
+ {
66
+ id: "0",
67
+ type: "TextMessage",
68
+ createdAt: /* @__PURE__ */ new Date(),
69
+ status: import_XAiMessage.MessageStatus.done,
70
+ role: import_XAiMessage.MessageRole.assistant,
71
+ content: {
72
+ text: `
73
+ # 项目开发计划
74
+
75
+ 本文档概述了 2025 年第三季度的产品开发计划,包括目标、里程碑、团队分工和风险预案。
76
+
77
+ ---
78
+
79
+ ## 🎯 核心目标
80
+
81
+ - 提升用户留存率至 **45%**
82
+ - 完成 Web 端新版上线
83
+ - 建立 AI 推荐模块 MVP
84
+ - 优化数据库访问性能
85
+
86
+ ---
87
+
88
+ ## 📅 关键时间节点
89
+
90
+ | 里程碑 | 截止日期 | 负责人 | 代理人 | 截止日期 | 负责人 |
91
+ |------------------|--------------|----------|------------------|--------------|----------|
92
+ | 产品需求冻结 | 2025-08-01 | Alice | 产品需求冻结 | 2025-08-01 | Alice |
93
+ | UI 设计定稿 | 2025-08-10 | Bob | 产品需求冻结 | 2025-08-01 | Alice |
94
+ | 开发完成(内测) | 2025-09-15 | Charlie | 产品需求冻结 | 2025-08-01 | Alice |
95
+ | 正式上线 | 2025-09-30 | Diana | 产品需求冻结 | 2025-08-01 | Alice |
96
+
97
+ ---
98
+
99
+ ## 🛠️ 技术方案简述
100
+
101
+ 我们将使用以下技术栈:
102
+
103
+ - 前端:React + Vite + Zustand
104
+ - 后端:Node.js + PostgreSQL
105
+ - 数据分析:Python + Pandas
106
+ - 部署环境:Kubernetes on AWS
107
+
108
+ ---
109
+
110
+ ## 💡 示例代码片段
111
+
112
+ 以下是一个用于生成唯一 ID 的函数示例:
113
+
114
+ ~~~ts
115
+ import { nanoid } from 'nanoid'
116
+
117
+ export function generateSessionId() {
118
+ return \`sess-\${nanoid()}\`
119
+ }
120
+ ~~~
121
+ `
122
+ },
123
+ extra: {
124
+ noFooter: true
125
+ }
126
+ },
127
+ {
128
+ id: "1",
129
+ type: "TextMessage",
130
+ createdAt: /* @__PURE__ */ new Date(),
131
+ status: import_XAiMessage.MessageStatus.done,
132
+ role: import_XAiMessage.MessageRole.assistant,
133
+ content: {
134
+ text: "你好,有什么我能帮助你的吗?"
135
+ }
136
+ },
137
+ {
138
+ id: "2",
139
+ type: "TextMessage",
140
+ createdAt: /* @__PURE__ */ new Date(),
141
+ status: import_XAiMessage.MessageStatus.done,
142
+ role: import_XAiMessage.MessageRole.user,
143
+ content: {
144
+ text: "我需要一点帮助"
145
+ },
146
+ parentMessageId: "1"
147
+ },
148
+ {
149
+ id: "3",
150
+ type: "ImageMessage",
151
+ createdAt: /* @__PURE__ */ new Date(),
152
+ status: import_XAiMessage.MessageStatus.done,
153
+ role: import_XAiMessage.MessageRole.assistant,
154
+ extra: {
155
+ cost: 6.09,
156
+ token: 1999
157
+ },
158
+ content: {
159
+ format: "svg",
160
+ bytes: "https://gw.alipayobjects.com/zos/bmw-prod/b874caa9-4458-412a-9ac6-a61486180a62.svg"
161
+ },
162
+ thinks: [
163
+ // 工具库调用(MCP_TOOL)
164
+ {
165
+ type: "ActionExecutionMessage",
166
+ createdAt: /* @__PURE__ */ new Date(),
167
+ id: "tool-1",
168
+ name: "已调用MCP智能工具",
169
+ arguments: { param1: "foo" },
170
+ extra: {
171
+ action: "INVOKE_AGENT_TOOL_START",
172
+ icon: import_document.default,
173
+ type: "MCP_TOOL",
174
+ cost: "3.9"
175
+ }
176
+ },
177
+ // // 工具库调用(PLUGIN_TOOL)
178
+ // {
179
+ // id: 'tool-2',
180
+ // arguments: { param2: 'bar' },
181
+ // extra: {
182
+ // action: 'INVOKE_AGENT_TOOL_START',
183
+ // type: 'AGENT_TOOL',
184
+ // toolType: 'PLUGIN_TOOL',
185
+ // agentToolName: '插件工具',
186
+ // },
187
+ // },
188
+ // // 工具库调用(SKILL)
189
+ // {
190
+ // action: 'INVOKE_AGENT_TOOL_START',
191
+ // id: 'tool-3',
192
+ // toolType: 'SKILL',
193
+ // agentToolName: '技能工具',
194
+ // args: { param3: 'baz' },
195
+ // },
196
+ // // 知识库调用(FAQ)
197
+ // {
198
+ // action: 'RECALL_KNOWLEDGE_START',
199
+ // uniqueId: 'kb-1',
200
+ // processStatus: 'START',
201
+ // args: { question: '什么是FAQ?' },
202
+ // knowledgeType: 'FAQ',
203
+ // },
204
+ // // 知识库调用(DOCUMENT)
205
+ // {
206
+ // action: 'RECALL_KNOWLEDGE_START',
207
+ // uniqueId: 'kb-2',
208
+ // processStatus: 'START',
209
+ // args: { question: '文档库介绍' },
210
+ // knowledgeType: 'DOCUMENT',
211
+ // },
212
+ // 运行完毕
213
+ {
214
+ id: "5",
215
+ type: "ActionExecutionMessage",
216
+ name: "运行完毕",
217
+ createdAt: /* @__PURE__ */ new Date()
218
+ }
219
+ ],
220
+ parentMessageId: "2"
221
+ },
222
+ {
223
+ id: "4",
224
+ type: "TextMessage",
225
+ createdAt: /* @__PURE__ */ new Date(),
226
+ status: import_XAiMessage.MessageStatus.done,
227
+ role: import_XAiMessage.MessageRole.user,
228
+ content: {
229
+ text: "能否生成一段明年的产品计划开发计划文档给我"
230
+ }
231
+ },
232
+ {
233
+ id: "11",
234
+ type: "SuggestionMessage",
235
+ createdAt: /* @__PURE__ */ new Date(),
236
+ status: import_XAiMessage.MessageStatus.done,
237
+ role: import_XAiMessage.MessageRole.suggestion,
238
+ content: [
239
+ {
240
+ key: "1",
241
+ description: "我要查看 AI 文档"
242
+ },
243
+ {
244
+ key: "2",
245
+ description: "我如何看待 AI"
246
+ },
247
+ {
248
+ key: "3",
249
+ description: "你是谁?"
250
+ }
251
+ ]
252
+ }
253
+ ];
254
+ var BasicUsageStory = (args) => {
255
+ const [messages, setMessages] = (0, import_react.useState)(mockMessages);
256
+ const handleSendMessage = (_type, msg) => {
257
+ const userMsg = {
258
+ id: String(Date.now()),
259
+ type: "TextMessage",
260
+ createdAt: /* @__PURE__ */ new Date(),
261
+ status: import_XAiMessage.MessageStatus.done,
262
+ role: import_XAiMessage.MessageRole.user,
263
+ content: { text: msg }
264
+ };
265
+ setMessages((prev) => [
266
+ ...prev,
267
+ userMsg
268
+ ]);
269
+ let aiMsg = "";
270
+ const stream = ["好的,", "我正在为你查询", "相关信息..."];
271
+ stream.forEach((chunk, idx) => {
272
+ setTimeout(() => {
273
+ aiMsg += chunk;
274
+ setMessages((prev) => {
275
+ const aiIndex = prev.findIndex((m) => m.id === "stream-ai");
276
+ if (aiIndex > -1) {
277
+ const updated = [...prev];
278
+ const oldMsg = updated[aiIndex];
279
+ if (oldMsg.type === "TextMessage") {
280
+ updated[aiIndex] = {
281
+ ...oldMsg,
282
+ content: { text: aiMsg }
283
+ };
284
+ }
285
+ return updated;
286
+ }
287
+ const aiMessage = {
288
+ id: "stream-ai",
289
+ type: "TextMessage",
290
+ createdAt: /* @__PURE__ */ new Date(),
291
+ status: import_XAiMessage.MessageStatus.pending,
292
+ role: import_XAiMessage.MessageRole.assistant,
293
+ content: { text: aiMsg }
294
+ };
295
+ return [
296
+ ...prev,
297
+ aiMessage
298
+ ];
299
+ });
300
+ if (idx === stream.length - 1) {
301
+ setTimeout(() => {
302
+ setMessages((prev) => prev.map((m) => {
303
+ if (m.id === "stream-ai") {
304
+ const doneMsg = { ...m, status: import_XAiMessage.MessageStatus.done };
305
+ return doneMsg;
306
+ }
307
+ return m;
308
+ }));
309
+ }, 500);
310
+ }
311
+ }, 800 * (idx + 1));
312
+ });
313
+ };
314
+ const handleClear = () => {
315
+ setMessages([]);
316
+ };
317
+ const handleActions = (index, data) => {
318
+ console.log(index, data);
319
+ };
320
+ const handleSuggestMessageClick = (_item, id) => {
321
+ setMessages((prev) => prev.filter((m) => m.id !== id));
322
+ };
323
+ const ToolTip = (data) => {
324
+ const { cost, token } = (data == null ? void 0 : data.extra) || {};
325
+ if (!cost && !token)
326
+ return null;
327
+ return /* @__PURE__ */ import_react.default.createElement("div", { style: { display: "flex", alignItems: "center", fontSize: "12px", color: "#949494", flex: 1, paddingRight: "40px" } }, cost && /* @__PURE__ */ import_react.default.createElement("div", null, cost, "s"), token && /* @__PURE__ */ import_react.default.createElement(import_antd.Divider, { type: "vertical" }), token && /* @__PURE__ */ import_react.default.createElement("div", null, token, " tokens"));
328
+ };
329
+ return /* @__PURE__ */ import_react.default.createElement("div", { style: { height: "600px", width: "400px", border: "1px solid #e7e7e7", borderRadius: "8px" } }, /* @__PURE__ */ import_react.default.createElement(
330
+ import__.default,
331
+ {
332
+ ...args,
333
+ messages,
334
+ messageTooltip: ToolTip,
335
+ onClear: handleClear,
336
+ onSuggestMessageClick: handleSuggestMessageClick,
337
+ onSend: handleSendMessage,
338
+ onMessagesActionsCallback: handleActions
339
+ }
340
+ ));
341
+ };
342
+ var 基础用法 = {
343
+ render: BasicUsageStory,
344
+ args: {
345
+ navbar: {
346
+ title: "智能助手"
347
+ },
348
+ // messages: mockMessages,
349
+ emptyStateText: "众安智能体"
350
+ }
351
+ };
352
+ var 在Provider中使用 = {
353
+ decorators: [
354
+ (Story) => /* @__PURE__ */ import_react.default.createElement(import_XAiProvider.default, { token: "test-token", url: "https://api.example.com" }, /* @__PURE__ */ import_react.default.createElement(Story, null))
355
+ ],
356
+ args: {
357
+ navbar: {
358
+ title: "智能助手"
359
+ }
360
+ }
361
+ };
362
+ var 多个Provider实例 = {
363
+ decorators: [
364
+ (Story) => /* @__PURE__ */ import_react.default.createElement("div", { style: { display: "flex", gap: "50px", height: "600px" } }, /* @__PURE__ */ import_react.default.createElement(import_XAiProvider.default, { providerId: "chat1", token: "token1", url: "https://api1.example.com" }, /* @__PURE__ */ import_react.default.createElement("div", { style: { width: "300px", marginRight: "40px" } }, /* @__PURE__ */ import_react.default.createElement(Story, null))), /* @__PURE__ */ import_react.default.createElement(import_XAiProvider.default, { providerId: "chat2", token: "token2", url: "https://api2.example.com" }, /* @__PURE__ */ import_react.default.createElement("div", { style: { width: "300px" } }, /* @__PURE__ */ import_react.default.createElement(Story, null))))
365
+ ],
366
+ args: {
367
+ navbar: {
368
+ title: "智能助手"
369
+ }
370
+ }
371
+ };
372
+ var ArchitectureDemoComponent = ({ title }) => {
373
+ var _a;
374
+ const { mergedProps, isInProvider, getProviderValue } = (0, import_useProviderContext.useProviderContext)({
375
+ props: { title },
376
+ mergeLogic: (props, context) => {
377
+ var _a2;
378
+ if (!(context == null ? void 0 : context.isInProvider)) {
379
+ return props;
380
+ }
381
+ return {
382
+ ...props,
383
+ messages: context.messages,
384
+ loading: context.loading,
385
+ customData: ((_a2 = context.messages) == null ? void 0 : _a2.length) || 0
386
+ };
387
+ }
388
+ });
389
+ const providerMethods = (0, import_useProviderContext.useProviderMethods)();
390
+ return /* @__PURE__ */ import_react.default.createElement(
391
+ "div",
392
+ {
393
+ style: {
394
+ padding: "15px",
395
+ border: "1px solid #e7e7e7",
396
+ borderRadius: "8px",
397
+ marginBottom: "10px",
398
+ backgroundColor: "#fafafa"
399
+ }
400
+ },
401
+ /* @__PURE__ */ import_react.default.createElement("h4", { style: { margin: "0 0 10px 0" } }, mergedProps.title),
402
+ /* @__PURE__ */ import_react.default.createElement("div", { style: { fontSize: "12px", color: "#666" } }, /* @__PURE__ */ import_react.default.createElement("p", null, "Provider 状态: ", isInProvider ? "✅ 已连接" : "❌ 未连接"), /* @__PURE__ */ import_react.default.createElement("p", null, "消息数量: ", ((_a = getProviderValue("messages")) == null ? void 0 : _a.length) || 0), /* @__PURE__ */ import_react.default.createElement("p", null, "加载状态: ", getProviderValue("loading") ? "🔄 加载中" : "✅ 就绪"), /* @__PURE__ */ import_react.default.createElement(
403
+ "button",
404
+ {
405
+ onClick: () => {
406
+ var _a2;
407
+ return (_a2 = providerMethods.sendMessage) == null ? void 0 : _a2.call(providerMethods, "来自架构演示组件的消息");
408
+ },
409
+ disabled: !isInProvider,
410
+ style: {
411
+ fontSize: "12px",
412
+ padding: "4px 8px",
413
+ backgroundColor: isInProvider ? "#1890ff" : "#d9d9d9",
414
+ color: "white",
415
+ border: "none",
416
+ borderRadius: "4px",
417
+ cursor: isInProvider ? "pointer" : "not-allowed"
418
+ }
419
+ },
420
+ isInProvider ? "发送消息" : "需要 Provider"
421
+ ))
422
+ );
423
+ };
424
+ var 新架构演示 = {
425
+ render: (args) => /* @__PURE__ */ import_react.default.createElement("div", { style: { width: "500px", height: "700px" } }, /* @__PURE__ */ import_react.default.createElement(import_XAiProvider.default, { token: "demo-token", url: "https://api.example.com", providerId: "architecture-demo" }, /* @__PURE__ */ import_react.default.createElement("div", { style: { padding: "20px" } }, /* @__PURE__ */ import_react.default.createElement("h3", { style: { marginBottom: "20px" } }, "新架构演示"), /* @__PURE__ */ import_react.default.createElement("p", { style: { marginBottom: "20px", color: "#666" } }, "展示如何使用 useProviderContext 和 useProviderMethods Hook"), /* @__PURE__ */ import_react.default.createElement("div", { style: { marginBottom: "20px" } }, /* @__PURE__ */ import_react.default.createElement(ArchitectureDemoComponent, { title: "演示组件 A" }), /* @__PURE__ */ import_react.default.createElement(ArchitectureDemoComponent, { title: "演示组件 B" }), /* @__PURE__ */ import_react.default.createElement(ArchitectureDemoComponent, { title: "演示组件 C" })), /* @__PURE__ */ import_react.default.createElement(
426
+ import__.default,
427
+ {
428
+ ...args,
429
+ navbarShow: true,
430
+ navbar: {
431
+ title: "架构演示聊天机器人",
432
+ subtitle: "展示新 Hook 的使用"
433
+ }
434
+ }
435
+ )))),
436
+ args: {
437
+ navbar: {
438
+ title: "智能助手"
439
+ }
440
+ }
441
+ };
442
+ var 架构对比演示 = {
443
+ render: (args) => /* @__PURE__ */ import_react.default.createElement("div", { style: { display: "flex", gap: "20px", padding: "20px" } }, /* @__PURE__ */ import_react.default.createElement("div", { style: { width: "300px" } }, /* @__PURE__ */ import_react.default.createElement("h4", null, "独立使用模式"), /* @__PURE__ */ import_react.default.createElement("div", { style: { border: "1px solid #e7e7e7", borderRadius: "8px", padding: "15px" } }, /* @__PURE__ */ import_react.default.createElement(ArchitectureDemoComponent, { title: "独立组件" }), /* @__PURE__ */ import_react.default.createElement(
444
+ import__.default,
445
+ {
446
+ ...args,
447
+ navbarShow: true,
448
+ navbar: {
449
+ title: "独立聊天机器人",
450
+ subtitle: "不依赖 Provider"
451
+ },
452
+ onSend: (type, content) => {
453
+ console.log("独立模式发送:", type, content);
454
+ },
455
+ onClear: () => {
456
+ console.log("独立模式清空");
457
+ }
458
+ }
459
+ ))), /* @__PURE__ */ import_react.default.createElement("div", { style: { width: "300px" } }, /* @__PURE__ */ import_react.default.createElement("h4", null, "Provider 模式"), /* @__PURE__ */ import_react.default.createElement(import_XAiProvider.default, { token: "demo-token", url: "https://api.example.com", providerId: "comparison-demo" }, /* @__PURE__ */ import_react.default.createElement("div", { style: { border: "1px solid #e7e7e7", borderRadius: "8px", padding: "15px" } }, /* @__PURE__ */ import_react.default.createElement(ArchitectureDemoComponent, { title: "Provider 组件" }), /* @__PURE__ */ import_react.default.createElement(
460
+ import__.default,
461
+ {
462
+ ...args,
463
+ navbarShow: true,
464
+ navbar: {
465
+ title: "Provider 聊天机器人",
466
+ subtitle: "由 Provider 管理"
467
+ }
468
+ }
469
+ ))))),
470
+ args: {
471
+ navbar: {
472
+ title: "智能助手"
473
+ }
474
+ }
475
+ };
476
+ // Annotate the CommonJS export names for ESM import in node:
477
+ 0 && (module.exports = {
478
+ 在Provider中使用,
479
+ 基础用法,
480
+ 多个Provider实例,
481
+ 新架构演示,
482
+ 架构对比演示
483
+ });
484
+ //# sourceMappingURL=XAiChatbot.stories.js.map