@fe-free/ai 4.1.8 → 4.1.9

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/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @fe-free/ai
2
2
 
3
+ ## 4.1.9
4
+
5
+ ### Patch Changes
6
+
7
+ - feat: ai
8
+ - @fe-free/core@4.1.9
9
+ - @fe-free/icons@4.1.9
10
+ - @fe-free/tool@4.1.9
11
+
3
12
  ## 4.1.8
4
13
 
5
14
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fe-free/ai",
3
- "version": "4.1.8",
3
+ "version": "4.1.9",
4
4
  "description": "",
5
5
  "main": "./src/index.ts",
6
6
  "author": "",
@@ -15,7 +15,7 @@
15
15
  "lodash-es": "^4.17.21",
16
16
  "uuid": "^13.0.0",
17
17
  "zustand": "^4.5.7",
18
- "@fe-free/core": "4.1.8"
18
+ "@fe-free/core": "4.1.9"
19
19
  },
20
20
  "peerDependencies": {
21
21
  "@ant-design/x-sdk": "^2.1.3",
@@ -26,8 +26,8 @@
26
26
  "i18next-icu": "^2.4.1",
27
27
  "react": "^19.2.0",
28
28
  "react-i18next": "^16.4.0",
29
- "@fe-free/tool": "4.1.8",
30
- "@fe-free/icons": "4.1.8"
29
+ "@fe-free/tool": "4.1.9",
30
+ "@fe-free/icons": "4.1.9"
31
31
  },
32
32
  "scripts": {
33
33
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -9,6 +9,7 @@ import {
9
9
  } from '@fe-free/ai';
10
10
  import { sleep } from '@fe-free/tool';
11
11
  import type { Meta } from '@storybook/react-vite';
12
+ import { set } from 'lodash-es';
12
13
  import { useCallback, useEffect, useMemo } from 'react';
13
14
 
14
15
  const meta: Meta = {
@@ -85,11 +86,6 @@ function Component() {
85
86
  user: {
86
87
  ...v,
87
88
  },
88
- ai: {
89
- data: {
90
- text: '',
91
- },
92
- },
93
89
  };
94
90
 
95
91
  addMessage(message);
@@ -99,7 +95,9 @@ function Component() {
99
95
  onUpdate: ({ event, data }) => {
100
96
  if (event === 'message') {
101
97
  message.status = EnumChatMessageStatus.STREAMING;
102
- message.ai!.data!.text += data;
98
+
99
+ const preText = message.ai?.data?.text || '';
100
+ set(message, 'ai.data.text', preText + data);
103
101
 
104
102
  updateMessage({
105
103
  ...message,
@@ -131,12 +129,12 @@ function Component() {
131
129
  >
132
130
  <Messages
133
131
  messages={messages}
134
- renderMessageOfUser={(message) => (
132
+ renderMessageOfUser={({ message }) => (
135
133
  <div className="p-2">
136
134
  <div className="rounded-xl bg-primary p-2 text-white">{message.user?.text}</div>
137
135
  </div>
138
136
  )}
139
- renderMessageOfAI={(message) => (
137
+ renderMessageOfAI={({ message }) => (
140
138
  <div className="p-2">
141
139
  <div>{message.status}</div>
142
140
  <pre className="whitespace-pre-wrap">{message.ai?.data?.text}</pre>
@@ -159,7 +159,7 @@ function RecordAction(props: MSenderProps & { setType }) {
159
159
 
160
160
  return (
161
161
  <div
162
- className={classNames('absolute inset-0 flex items-center justify-center rounded-full', {
162
+ className={classNames('absolute inset-0 flex items-center justify-center rounded-xl', {
163
163
  'bg-white': !isRecording,
164
164
  'bg-red-500': isRecording && isCancel,
165
165
  'bg-primary': isRecording && !isCancel,
@@ -4,8 +4,8 @@ import type { ChatMessage } from '../store/types';
4
4
 
5
5
  interface MessagesProps<AIData> {
6
6
  messages?: ChatMessage<AIData>[];
7
- renderMessageOfUser?: (message: ChatMessage<AIData>) => React.ReactNode;
8
- renderMessageOfAI?: (message: ChatMessage<AIData>) => React.ReactNode;
7
+ renderMessageOfUser?: (props: { message: ChatMessage<AIData> }) => React.ReactNode;
8
+ renderMessageOfAI?: (props: { message: ChatMessage<AIData> }) => React.ReactNode;
9
9
  }
10
10
 
11
11
  function Messages<AIData>(props: MessagesProps<AIData>) {
@@ -55,8 +55,8 @@ function Messages<AIData>(props: MessagesProps<AIData>) {
55
55
  <div ref={ref} className="flex h-full flex-col overflow-y-auto">
56
56
  {messages?.map((message) => (
57
57
  <div key={message.uuid} data-uuid={message.uuid} className="flex flex-col">
58
- <div className="flex justify-end">{renderMessageOfUser?.(message)}</div>
59
- <div className="flex justify-start">{renderMessageOfAI?.(message)}</div>
58
+ <div className="flex justify-end">{renderMessageOfUser?.({ message })}</div>
59
+ <div className="flex justify-start">{renderMessageOfAI?.({ message })}</div>
60
60
  </div>
61
61
  ))}
62
62
  </div>
@@ -100,7 +100,7 @@ function Sender(originProps: SenderProps) {
100
100
  <div
101
101
  ref={refContainer}
102
102
  className={classNames(
103
- 'fea-sender relative flex flex-col rounded-lg border border-01 bg-white p-2',
103
+ 'fea-sender relative flex flex-col rounded-xl border border-01 bg-white p-2',
104
104
  {
105
105
  'fea-sender-drag-hover': dragHover,
106
106
  },