Skip to content

Commit 1f36158

Browse files
authored
♻️ refactor: refactor chat item (#9599)
* wip * refactor user message * fix user messages * refactor * refactor user and actions * update * refactor chat item * refactor * revert * fix tests * update * fix thread display
1 parent 18bcd08 commit 1f36158

File tree

105 files changed

+1308
-989
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+1308
-989
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@
301301
"@peculiar/webcrypto": "^1.5.0",
302302
"@prettier/sync": "^0.6.1",
303303
"@semantic-release/exec": "^6.0.3",
304-
"@testing-library/jest-dom": "~6.9.0",
304+
"@testing-library/jest-dom": "^6.9.1",
305305
"@testing-library/react": "^16.3.0",
306306
"@testing-library/user-event": "^14.6.1",
307307
"@types/chroma-js": "^3.1.1",

packages/const/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export * from './desktop';
55
export * from './guide';
66
export * from './layoutTokens';
77
export * from './message';
8+
export * from './meta';
89
export * from './session';
910
export * from './settings';
1011
export * from './trace';

packages/const/src/settings/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { DEFAULT_TOOL_CONFIG } from './tool';
99
import { DEFAULT_TTS_CONFIG } from './tts';
1010

1111
export * from './agent';
12+
export * from './common';
1213
export * from './group';
1314
export * from './hotkey';
1415
export * from './llm';

packages/types/src/aiProvider.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1+
import { AiModelForSelect, EnabledAiModel, ModelSearchImplementType } from 'model-bank';
12
import { z } from 'zod';
23

3-
import { AiModelForSelect, EnabledAiModel, ModelSearchImplementType } from '../../model-bank/src/types/aiModel';
4-
54
export type ResponseAnimationStyle = 'smooth' | 'fadeIn' | 'none';
65
export type ResponseAnimation =
76
| {

packages/types/src/discover/models.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { LobeDefaultAiModelListItem } from '../../../model-bank/src/types/aiModel';
2-
import { ModelProviderCard } from '@/types/llm';
1+
import { LobeDefaultAiModelListItem } from 'model-bank';
2+
3+
import { ModelProviderCard } from '../llm';
34

45
export enum ModelSorts {
56
ContextWindowTokens = 'contextWindowTokens',

packages/types/src/discover/providers.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { LobeDefaultAiModelListItem } from '../../../model-bank/src/types/aiModel';
2-
import { ModelProviderCard } from '@/types/llm';
1+
import { LobeDefaultAiModelListItem } from 'model-bank';
2+
3+
import { ModelProviderCard } from '../llm';
34

45
export enum ProviderSorts {
56
Default = 'default',

packages/types/src/message/chat.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,22 @@ export interface ChatMessageExtra {
4646
tts?: ChatTTS;
4747
}
4848

49+
export interface AssistantContentBlock {
50+
content: string;
51+
fileList?: ChatFileItem[];
52+
id: string;
53+
imageList?: ChatImageItem[];
54+
tools?: ChatToolPayload[];
55+
}
56+
4957
export interface ChatMessage {
5058
// Group chat fields (alphabetically before other fields)
5159
agentId?: string | 'supervisor';
60+
/**
61+
* children messages for grouped display
62+
* Used to group tool messages under their parent assistant message
63+
*/
64+
children?: AssistantContentBlock[];
5265
chunksList?: ChatFileChunk[];
5366
content: string;
5467
createdAt: number;

src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatList/ChatItem/index.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { createStyles } from 'antd-style';
2-
import React, { memo, useMemo } from 'react';
2+
import React, { memo } from 'react';
33

44
import { ChatItem } from '@/features/Conversation';
5-
import ActionsBar from '@/features/Conversation/components/ChatItem/ActionsBar';
65
import { useAgentStore } from '@/store/agent';
76
import { agentChatConfigSelectors } from '@/store/agent/selectors';
87
import { useChatStore } from '@/store/chat';
@@ -64,11 +63,8 @@ const MainChatItem = memo<ThreadChatItemProps>(({ id, index }) => {
6463

6564
const placement = displayMode === 'chat' && userRole === 'user' ? 'end' : 'start';
6665

67-
const actionBar = useMemo(() => <ActionsBar id={id} index={index} />, [id]);
68-
6966
return (
7067
<ChatItem
71-
actionBar={actionBar}
7268
className={showThread ? cx(styles.line, styles[placement]) : ''}
7369
enableHistoryDivider={enableHistoryDivider}
7470
endRender={

src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatList/WelcomeChatItem/WelcomeMessage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import React, { useMemo } from 'react';
44
import { useTranslation } from 'react-i18next';
55
import { Flexbox } from 'react-layout-kit';
66

7-
import ChatItem from '@/features/ChatItem';
7+
import { ChatItem } from '@/features/ChatItem';
88
import { useAgentStore } from '@/store/agent';
99
import { agentChatConfigSelectors, agentSelectors } from '@/store/agent/selectors';
1010
import { useChatStore } from '@/store/chat';

src/app/[variants]/(main)/settings/provider/features/ModelList/CreateNewModelModal/Form.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import { Input } from '@lobehub/ui';
22
import { Checkbox, Form, FormInstance, Select } from 'antd';
3+
import { AiModelType } from 'model-bank';
34
import { memo, useEffect, useMemo } from 'react';
45
import { useTranslation } from 'react-i18next';
56

67
import MaxTokenSlider from '@/components/MaxTokenSlider';
78
import { useIsMobile } from '@/hooks/useIsMobile';
89
import { ChatModelCard } from '@/types/llm';
910

10-
import { AiModelType } from '../../../../../../../../../packages/model-bank/src/types/aiModel';
11-
1211
interface ModelConfigFormProps {
1312
idEditable?: boolean;
1413
initialValues?: ChatModelCard;

0 commit comments

Comments
 (0)