diff --git a/README.md b/README.md
index 55ca3c87e2d..a79dd7a4785 100644
--- a/README.md
+++ b/README.md
@@ -389,7 +389,7 @@ In addition, these plugins are not limited to news aggregation, but can also ext
| [Bing_websearch](https://lobechat.com/discover/plugin/Bingsearch-identifier)
By **FineHow** on **2024-12-22** | Search for information from the internet base BingApi
`bingsearch` |
| [Google CSE](https://lobechat.com/discover/plugin/google-cse)
By **vsnthdev** on **2024-12-02** | Searches Google through their official CSE API.
`web` `search` |
-> 📊 Total plugins: [**42**](https://lobechat.com/discover/plugins)
+> 📊 Total plugins: [**41**](https://lobechat.com/discover/plugins)
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 97959575e38..d3576ee4f60 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -382,7 +382,7 @@ LobeChat 的插件生态系统是其核心功能的重要扩展,它极大地
| [必应网页搜索](https://lobechat.com/discover/plugin/Bingsearch-identifier)
By **FineHow** on **2024-12-22** | 通过 BingApi 搜索互联网上的信息
`bingsearch` |
| [谷歌自定义搜索引擎](https://lobechat.com/discover/plugin/google-cse)
By **vsnthdev** on **2024-12-02** | 通过他们的官方自定义搜索引擎 API 搜索谷歌。
`网络` `搜索` |
-> 📊 Total plugins: [**42**](https://lobechat.com/discover/plugins)
+> 📊 Total plugins: [**41**](https://lobechat.com/discover/plugins)
diff --git a/packages/database/src/models/__tests__/generation.test.ts b/packages/database/src/models/__tests__/generation.test.ts
index 6c3cf815b10..2432003d1e7 100644
--- a/packages/database/src/models/__tests__/generation.test.ts
+++ b/packages/database/src/models/__tests__/generation.test.ts
@@ -1,10 +1,9 @@
// @vitest-environment node
+import { AsyncTaskStatus, ImageGenerationAsset } from '@lobechat/types';
import { eq } from 'drizzle-orm';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
-import { LobeChatDatabase } from '../../type';import { AsyncTaskStatus } from '@/types/asyncTask';
import { FileSource } from '@/types/files';
-import { ImageGenerationAsset } from '@/types/generation';
import {
NewGeneration,
@@ -15,6 +14,7 @@ import {
generations,
users,
} from '../../schemas';
+import { LobeChatDatabase } from '../../type';
import { GenerationModel } from '../generation';
import { getTestDB } from './_util';
diff --git a/packages/database/src/models/__tests__/generationBatch.test.ts b/packages/database/src/models/__tests__/generationBatch.test.ts
index 18dd4f8297b..199dd72f762 100644
--- a/packages/database/src/models/__tests__/generationBatch.test.ts
+++ b/packages/database/src/models/__tests__/generationBatch.test.ts
@@ -1,9 +1,9 @@
// @vitest-environment node
+import { GenerationConfig } from '@lobechat/types';
import { eq } from 'drizzle-orm';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { AsyncTaskStatus } from '@/types/asyncTask';
-import { GenerationConfig } from '@/types/generation';
import {
NewGenerationBatch,
diff --git a/packages/database/src/models/__tests__/generationTopic.test.ts b/packages/database/src/models/__tests__/generationTopic.test.ts
index b093dca60b5..ede4fc2f8bd 100644
--- a/packages/database/src/models/__tests__/generationTopic.test.ts
+++ b/packages/database/src/models/__tests__/generationTopic.test.ts
@@ -1,12 +1,10 @@
// @vitest-environment node
+import { ImageGenerationTopic } from '@lobechat/types';
import { eq } from 'drizzle-orm';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
-import { LobeChatDatabase } from '../../type';import { FileService } from '@/server/services/file';
-import { ImageGenerationTopic } from '@/types/generation';
-
import { generationBatches, generationTopics, generations, users } from '../../schemas';
-import { GenerationTopicItem } from '../../schemas/generation';
+import { LobeChatDatabase } from '../../type';
import { GenerationTopicModel } from '../generationTopic';
import { getTestDB } from './_util';
diff --git a/packages/database/src/models/__tests__/message.test.ts b/packages/database/src/models/__tests__/message.test.ts
index 1709bf97e54..0317b8dcd1d 100644
--- a/packages/database/src/models/__tests__/message.test.ts
+++ b/packages/database/src/models/__tests__/message.test.ts
@@ -1,8 +1,8 @@
+import { MessageItem } from '@lobechat/types';
import dayjs from 'dayjs';
import { eq } from 'drizzle-orm';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
-import { MessageItem } from '@/types/message';
import { uuid } from '@/utils/uuid';
import { getTestDB } from '../../models/__tests__/_util';
diff --git a/packages/database/src/models/asyncTask.ts b/packages/database/src/models/asyncTask.ts
index d8b411b11e4..931bf50ec2f 100644
--- a/packages/database/src/models/asyncTask.ts
+++ b/packages/database/src/models/asyncTask.ts
@@ -1,14 +1,13 @@
-import { and, eq, inArray, lt } from 'drizzle-orm';
-
-import { LobeChatDatabase } from '../type';
import {
AsyncTaskError,
AsyncTaskErrorType,
AsyncTaskStatus,
AsyncTaskType,
-} from '@/types/asyncTask';
+} from '@lobechat/types';
+import { and, eq, inArray, lt } from 'drizzle-orm';
import { AsyncTaskSelectItem, NewAsyncTaskItem, asyncTasks } from '../schemas';
+import { LobeChatDatabase } from '../type';
// set timeout to about 5 minutes, and give 2s padding time
export const ASYNC_TASK_TIMEOUT = 298 * 1000;
diff --git a/packages/database/src/models/chatGroup.ts b/packages/database/src/models/chatGroup.ts
index 3e67d2ae310..478d3fdacbf 100644
--- a/packages/database/src/models/chatGroup.ts
+++ b/packages/database/src/models/chatGroup.ts
@@ -7,8 +7,8 @@ import {
NewChatGroupAgent,
chatGroups,
chatGroupsAgents,
-} from '@/database/schemas';
-import { LobeChatDatabase } from '@/database/type';
+} from '../schemas';
+import { LobeChatDatabase } from '../type';
export class ChatGroupModel {
private userId: string;
diff --git a/packages/database/src/models/chunk.ts b/packages/database/src/models/chunk.ts
index e5bd233b9cc..9942681e62f 100644
--- a/packages/database/src/models/chunk.ts
+++ b/packages/database/src/models/chunk.ts
@@ -1,9 +1,7 @@
+import { ChunkMetadata, FileChunk } from '@lobechat/types';
import { and, asc, cosineDistance, count, desc, eq, inArray, isNull, sql } from 'drizzle-orm';
import { chunk } from 'lodash-es';
-import { LobeChatDatabase } from '../type';
-import { ChunkMetadata, FileChunk } from '@/types/chunk';
-
import {
NewChunkItem,
NewUnstructuredChunkItem,
@@ -13,6 +11,7 @@ import {
files,
unstructuredChunks,
} from '../schemas';
+import { LobeChatDatabase } from '../type';
export class ChunkModel {
private userId: string;
diff --git a/packages/database/src/models/drizzleMigration.ts b/packages/database/src/models/drizzleMigration.ts
index edb42603135..c95b9479325 100644
--- a/packages/database/src/models/drizzleMigration.ts
+++ b/packages/database/src/models/drizzleMigration.ts
@@ -1,7 +1,7 @@
+import { MigrationTableItem } from '@lobechat/types';
import { sql } from 'drizzle-orm';
import { LobeChatDatabase } from '../type';
-import { MigrationTableItem } from '@/types/clientDB';
export class DrizzleMigrationModel {
private db: LobeChatDatabase;
diff --git a/packages/database/src/models/file.ts b/packages/database/src/models/file.ts
index 5c7bcea3156..5b43e6a86f1 100644
--- a/packages/database/src/models/file.ts
+++ b/packages/database/src/models/file.ts
@@ -1,8 +1,7 @@
+import { FilesTabs, QueryFileListParams, SortType } from '@lobechat/types';
import { and, asc, count, desc, eq, ilike, inArray, like, notExists, or, sum } from 'drizzle-orm';
import type { PgTransaction } from 'drizzle-orm/pg-core';
-import { FilesTabs, QueryFileListParams, SortType } from '@/types/files';
-
import {
FileItem,
NewFile,
diff --git a/packages/database/src/models/generation.ts b/packages/database/src/models/generation.ts
index d5cf316d23f..f1b8e3717a4 100644
--- a/packages/database/src/models/generation.ts
+++ b/packages/database/src/models/generation.ts
@@ -1,11 +1,14 @@
+import {
+ AsyncTaskError,
+ AsyncTaskStatus,
+ FileSource,
+ Generation,
+ ImageGenerationAsset,
+} from '@lobechat/types';
import debug from 'debug';
import { and, eq } from 'drizzle-orm';
-import { LobeChatDatabase, Transaction } from '../type';
import { FileService } from '@/server/services/file';
-import { AsyncTaskError, AsyncTaskStatus } from '@/types/asyncTask';
-import { FileSource } from '@/types/files';
-import { Generation, ImageGenerationAsset } from '@/types/generation';
import { NewFile } from '../schemas';
import {
@@ -14,6 +17,7 @@ import {
NewGeneration,
generations,
} from '../schemas/generation';
+import { LobeChatDatabase, Transaction } from '../type';
import { FileModel } from './file';
// Create debug logger
diff --git a/packages/database/src/models/generationBatch.ts b/packages/database/src/models/generationBatch.ts
index c7e82f0672a..cb2442c9fd0 100644
--- a/packages/database/src/models/generationBatch.ts
+++ b/packages/database/src/models/generationBatch.ts
@@ -1,8 +1,8 @@
+import { Generation, GenerationAsset, GenerationBatch, GenerationConfig } from '@lobechat/types';
import debug from 'debug';
import { and, eq } from 'drizzle-orm';
import { FileService } from '@/server/services/file';
-import { Generation, GenerationAsset, GenerationBatch, GenerationConfig } from '@/types/generation';
import {
GenerationBatchItem,
diff --git a/packages/database/src/models/generationTopic.ts b/packages/database/src/models/generationTopic.ts
index 4bd93f5a334..56e8d8d1eac 100644
--- a/packages/database/src/models/generationTopic.ts
+++ b/packages/database/src/models/generationTopic.ts
@@ -1,10 +1,10 @@
+import { GenerationAsset, ImageGenerationTopic } from '@lobechat/types';
import { and, desc, eq } from 'drizzle-orm';
-import { LobeChatDatabase } from '../type';
import { FileService } from '@/server/services/file';
-import { GenerationAsset, ImageGenerationTopic } from '@/types/generation';
import { GenerationTopicItem, generationTopics } from '../schemas/generation';
+import { LobeChatDatabase } from '../type';
export class GenerationTopicModel {
private userId: string;
diff --git a/packages/database/src/models/knowledgeBase.ts b/packages/database/src/models/knowledgeBase.ts
index b079d8dea29..6c541ff5a30 100644
--- a/packages/database/src/models/knowledgeBase.ts
+++ b/packages/database/src/models/knowledgeBase.ts
@@ -1,9 +1,8 @@
+import { KnowledgeBaseItem } from '@lobechat/types';
import { and, desc, eq, inArray } from 'drizzle-orm';
-import { LobeChatDatabase } from '../type';
-import { KnowledgeBaseItem } from '@/types/knowledgeBase';
-
import { NewKnowledgeBase, knowledgeBaseFiles, knowledgeBases } from '../schemas';
+import { LobeChatDatabase } from '../type';
export class KnowledgeBaseModel {
private userId: string;
diff --git a/packages/database/src/models/session.ts b/packages/database/src/models/session.ts
index 78918e25048..ae5d66b759c 100644
--- a/packages/database/src/models/session.ts
+++ b/packages/database/src/models/session.ts
@@ -1,3 +1,11 @@
+import { DEFAULT_AGENT_CONFIG, DEFAULT_INBOX_AVATAR, INBOX_SESSION_ID } from '@lobechat/const';
+import {
+ ChatSessionList,
+ LobeAgentConfig,
+ LobeAgentSession,
+ LobeGroupSession,
+ SessionRankItem,
+} from '@lobechat/types';
import {
Column,
and,
@@ -15,16 +23,6 @@ import {
} from 'drizzle-orm';
import type { PartialDeep } from 'type-fest';
-import { DEFAULT_INBOX_AVATAR } from '@/const/meta';
-import { INBOX_SESSION_ID } from '@/const/session';
-import { DEFAULT_AGENT_CONFIG } from '@/const/settings';
-import { LobeAgentConfig } from '@/types/agent';
-import {
- ChatSessionList,
- LobeAgentSession,
- LobeGroupSession,
- SessionRankItem,
-} from '@/types/session';
import { merge } from '@/utils/merge';
import {
diff --git a/packages/database/src/models/thread.ts b/packages/database/src/models/thread.ts
index d47be980001..6f095d233ec 100644
--- a/packages/database/src/models/thread.ts
+++ b/packages/database/src/models/thread.ts
@@ -1,9 +1,8 @@
+import { CreateThreadParams, ThreadStatus } from '@lobechat/types';
import { and, desc, eq } from 'drizzle-orm';
-import { LobeChatDatabase } from '../type';
-import { CreateThreadParams, ThreadStatus } from '@/types/topic';
-
import { ThreadItem, threads } from '../schemas';
+import { LobeChatDatabase } from '../type';
const queryColumns = {
createdAt: threads.createdAt,
diff --git a/packages/database/src/models/topic.ts b/packages/database/src/models/topic.ts
index 13bc425341f..4087e66fc38 100644
--- a/packages/database/src/models/topic.ts
+++ b/packages/database/src/models/topic.ts
@@ -1,8 +1,6 @@
+import { MessageItem, TopicRankItem } from '@lobechat/types';
import { and, count, desc, eq, gt, ilike, inArray, isNull, or, sql } from 'drizzle-orm';
-import { MessageItem } from '@/types/message';
-import { TopicRankItem } from '@/types/topic';
-
import { TopicItem, messages, topics } from '../schemas';
import { LobeChatDatabase } from '../type';
import { genEndDateWhere, genRangeWhere, genStartDateWhere, genWhere } from '../utils/genWhere';
diff --git a/packages/database/src/models/user.ts b/packages/database/src/models/user.ts
index 5db2d58705e..619fd349bf0 100644
--- a/packages/database/src/models/user.ts
+++ b/packages/database/src/models/user.ts
@@ -1,11 +1,10 @@
+import { UserGuide, UserKeyVaults, UserPreference, UserSettings } from '@lobechat/types';
import { TRPCError } from '@trpc/server';
import dayjs from 'dayjs';
import { eq } from 'drizzle-orm';
import type { AdapterAccount } from 'next-auth/adapters';
import type { PartialDeep } from 'type-fest';
-import { UserGuide, UserPreference } from '@/types/user';
-import { UserKeyVaults, UserSettings } from '@/types/user/settings';
import { merge } from '@/utils/merge';
import { today } from '@/utils/time';
diff --git a/packages/database/src/schemas/generation.ts b/packages/database/src/schemas/generation.ts
index 918e42e9fd5..32a1abc169d 100644
--- a/packages/database/src/schemas/generation.ts
+++ b/packages/database/src/schemas/generation.ts
@@ -1,9 +1,8 @@
/* eslint-disable sort-keys-fix/sort-keys-fix */
+import { ImageGenerationAsset } from '@lobechat/types';
import { integer, jsonb, pgTable, text, uuid, varchar } from 'drizzle-orm/pg-core';
import { createInsertSchema } from 'drizzle-zod';
-import { ImageGenerationAsset } from '@/types/generation';
-
import { idGenerator } from '../utils/idGenerator';
import { timestamps } from './_helpers';
import { AsyncTaskSelectItem, asyncTasks } from './asyncTask';
diff --git a/packages/database/src/schemas/message.ts b/packages/database/src/schemas/message.ts
index 77dff604ea4..6b4486454e6 100644
--- a/packages/database/src/schemas/message.ts
+++ b/packages/database/src/schemas/message.ts
@@ -1,4 +1,5 @@
/* eslint-disable sort-keys-fix/sort-keys-fix */
+import { GroundingSearch, ModelReasoning } from '@lobechat/types';
import {
boolean,
index,
@@ -12,9 +13,6 @@ import {
} from 'drizzle-orm/pg-core';
import { createInsertSchema, createSelectSchema } from 'drizzle-zod';
-import { ModelReasoning } from '@/types/message';
-import { GroundingSearch } from '@/types/search';
-
import { idGenerator } from '../utils/idGenerator';
import { timestamps, varchar255 } from './_helpers';
import { agents } from './agent';
diff --git a/packages/model-runtime/src/core/streams/anthropic.ts b/packages/model-runtime/src/core/streams/anthropic.ts
index 519a0efc733..c0b02c18140 100644
--- a/packages/model-runtime/src/core/streams/anthropic.ts
+++ b/packages/model-runtime/src/core/streams/anthropic.ts
@@ -1,7 +1,6 @@
import Anthropic from '@anthropic-ai/sdk';
import type { Stream } from '@anthropic-ai/sdk/streaming';
-
-import { ChatCitationItem } from '@/types/message';
+import { ChatCitationItem } from '@lobechat/types';
import { ChatStreamCallbacks } from '../../types';
import { convertAnthropicUsage } from '../usageConverters';
diff --git a/packages/model-runtime/src/core/streams/protocol.ts b/packages/model-runtime/src/core/streams/protocol.ts
index f29c76b70a5..e3f0936f202 100644
--- a/packages/model-runtime/src/core/streams/protocol.ts
+++ b/packages/model-runtime/src/core/streams/protocol.ts
@@ -1,7 +1,6 @@
+import { ChatCitationItem, ModelSpeed, ModelUsage } from '@lobechat/types';
import type { Pricing } from 'model-bank';
-import { ChatCitationItem, ModelSpeed, ModelUsage } from '@/types/message';
-
import { parseToolCalls } from '../../helpers';
import { ChatStreamCallbacks } from '../../types';
import { AgentRuntimeErrorType } from '../../types/error';
diff --git a/packages/model-runtime/src/core/usageConverters/anthropic.ts b/packages/model-runtime/src/core/usageConverters/anthropic.ts
index 764b3e0da97..b53cc82437f 100644
--- a/packages/model-runtime/src/core/usageConverters/anthropic.ts
+++ b/packages/model-runtime/src/core/usageConverters/anthropic.ts
@@ -1,6 +1,5 @@
import Anthropic from '@anthropic-ai/sdk';
-
-import { ModelUsage } from '@/types/message';
+import { ModelUsage } from '@lobechat/types';
import { ChatPayloadForTransformStream } from '../streams/protocol';
import { withUsageCost } from './utils/withUsageCost';
diff --git a/packages/model-runtime/src/core/usageConverters/google-ai.ts b/packages/model-runtime/src/core/usageConverters/google-ai.ts
index 3180af02829..427abb5bfa4 100644
--- a/packages/model-runtime/src/core/usageConverters/google-ai.ts
+++ b/packages/model-runtime/src/core/usageConverters/google-ai.ts
@@ -3,10 +3,9 @@ import {
MediaModality,
ModalityTokenCount,
} from '@google/genai';
+import { ModelUsage } from '@lobechat/types';
import type { Pricing } from 'model-bank';
-import { ModelUsage } from '@/types/message';
-
import { withUsageCost } from './utils/withUsageCost';
const getTokenCount = (details: ModalityTokenCount[] | undefined, modality: MediaModality) => {
diff --git a/packages/model-runtime/src/core/usageConverters/utils/computeChatCost.test.ts b/packages/model-runtime/src/core/usageConverters/utils/computeChatCost.test.ts
index 87809593fcc..1bbc809f38b 100644
--- a/packages/model-runtime/src/core/usageConverters/utils/computeChatCost.test.ts
+++ b/packages/model-runtime/src/core/usageConverters/utils/computeChatCost.test.ts
@@ -1,3 +1,4 @@
+import { ModelTokensUsage } from '@lobechat/types';
import { Pricing } from 'model-bank';
import anthropicChatModels from 'model-bank/anthropic';
import googleChatModels from 'model-bank/google';
@@ -5,8 +6,6 @@ import lobehubChatModels from 'model-bank/lobehub';
import openaiChatModels from 'model-bank/openai';
import { describe, expect, it } from 'vitest';
-import { ModelTokensUsage } from '@/types/message';
-
import { computeChatCost } from './computeChatCost';
describe('computeChatPricing', () => {
diff --git a/packages/model-runtime/src/core/usageConverters/utils/computeChatCost.ts b/packages/model-runtime/src/core/usageConverters/utils/computeChatCost.ts
index 008d84f7464..ceef533ba65 100644
--- a/packages/model-runtime/src/core/usageConverters/utils/computeChatCost.ts
+++ b/packages/model-runtime/src/core/usageConverters/utils/computeChatCost.ts
@@ -1,5 +1,6 @@
/* eslint-disable sort-keys-fix/sort-keys-fix */
import { CREDITS_PER_DOLLAR, USD_TO_CNY } from '@lobechat/const/currency';
+import { ModelTokensUsage } from '@lobechat/types';
import debug from 'debug';
import {
FixedPricingUnit,
@@ -10,8 +11,6 @@ import {
TieredPricingUnit,
} from 'model-bank';
-import { ModelTokensUsage } from '@/types/message';
-
const log = debug('lobe-cost:computeChatPricing');
export interface PricingUnitBreakdown {
diff --git a/packages/model-runtime/src/core/usageConverters/utils/withUsageCost.ts b/packages/model-runtime/src/core/usageConverters/utils/withUsageCost.ts
index 2b133a5b208..74151074074 100644
--- a/packages/model-runtime/src/core/usageConverters/utils/withUsageCost.ts
+++ b/packages/model-runtime/src/core/usageConverters/utils/withUsageCost.ts
@@ -1,7 +1,6 @@
+import type { ModelUsage } from '@lobechat/types';
import type { Pricing } from 'model-bank';
-import type { ModelUsage } from '@/types/message';
-
import { computeChatCost } from './computeChatCost';
import type { ComputeChatCostOptions } from './computeChatCost';
diff --git a/packages/model-runtime/src/types/image.ts b/packages/model-runtime/src/types/image.ts
index 75d0411ecb3..9e7a4cb7ef4 100644
--- a/packages/model-runtime/src/types/image.ts
+++ b/packages/model-runtime/src/types/image.ts
@@ -1,8 +1,7 @@
/* eslint-disable typescript-sort-keys/interface */
+import { ModelUsage } from '@lobechat/types';
import { RuntimeImageGenParams } from 'model-bank';
-import { ModelUsage } from '@/types/message';
-
export type CreateImagePayload = {
model: string;
params: RuntimeImageGenParams;
diff --git a/packages/prompts/src/chains/summaryTitle.ts b/packages/prompts/src/chains/summaryTitle.ts
index 4952beaeb44..1661d7b71b6 100644
--- a/packages/prompts/src/chains/summaryTitle.ts
+++ b/packages/prompts/src/chains/summaryTitle.ts
@@ -1,5 +1,4 @@
-import { ChatMessage } from '@/types/message/chat';
-import { ChatStreamPayload, OpenAIChatMessage } from '@/types/openai/chat';
+import { ChatMessage, ChatStreamPayload, OpenAIChatMessage } from '@lobechat/types';
export const chainSummaryTitle = (
messages: (ChatMessage | OpenAIChatMessage)[],
diff --git a/packages/types/src/exportConfig.ts b/packages/types/src/exportConfig.ts
index 7c4f473d64f..3684735e662 100644
--- a/packages/types/src/exportConfig.ts
+++ b/packages/types/src/exportConfig.ts
@@ -1,7 +1,7 @@
-import { ChatMessage } from '@/types/message';
-import { LobeSessions, SessionGroupItem } from '@/types/session';
-import { ChatTopic } from '@/types/topic';
-import { UserSettings } from '@/types/user/settings';
+import { ChatMessage } from './message';
+import { LobeSessions, SessionGroupItem } from './session';
+import { ChatTopic } from './topic';
+import { UserSettings } from './user/settings';
// ---------- TODO: this file need to be deleted in V2 ---------- //
diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts
index 479c303a4c1..ef77b00b63d 100644
--- a/packages/types/src/index.ts
+++ b/packages/types/src/index.ts
@@ -11,6 +11,7 @@ export * from './discover';
export * from './eval';
export * from './fetch';
export * from './files';
+export * from './generation';
export * from './hotkey';
export * from './knowledgeBase';
export * from './llm';
@@ -20,6 +21,7 @@ export * from './plugins';
export * from './rag';
export * from './search';
export * from './serverConfig';
+export * from './service';
export * from './session';
export * from './tool';
export * from './topic';
diff --git a/packages/types/src/message/base.ts b/packages/types/src/message/common/base.ts
similarity index 96%
rename from packages/types/src/message/base.ts
rename to packages/types/src/message/common/base.ts
index c3bbf1cb504..e1e9f3721ea 100644
--- a/packages/types/src/message/base.ts
+++ b/packages/types/src/message/common/base.ts
@@ -2,10 +2,10 @@
import type { ILobeAgentRuntimeErrorType } from '@lobechat/model-runtime';
import type { IPluginErrorType } from '@lobehub/chat-plugin-sdk';
-import { ErrorType } from '../fetch';
-import { GroundingSearch } from '../search';
+import { ErrorType } from '../../fetch';
+import { GroundingSearch } from '../../search';
+import { ChatToolPayload, MessageToolCall } from '../tools';
import { ChatImageItem } from './image';
-import { ChatToolPayload, MessageToolCall } from './tools';
/**
* 聊天消息错误对象
diff --git a/packages/types/src/message/image.ts b/packages/types/src/message/common/image.ts
similarity index 100%
rename from packages/types/src/message/image.ts
rename to packages/types/src/message/common/image.ts
diff --git a/packages/types/src/message/common/index.ts b/packages/types/src/message/common/index.ts
new file mode 100644
index 00000000000..634423b2492
--- /dev/null
+++ b/packages/types/src/message/common/index.ts
@@ -0,0 +1,3 @@
+export * from './base';
+export * from './image';
+export * from './translate';
diff --git a/packages/types/src/message/translate.ts b/packages/types/src/message/common/translate.ts
similarity index 100%
rename from packages/types/src/message/translate.ts
rename to packages/types/src/message/common/translate.ts
diff --git a/packages/types/src/message/index.ts b/packages/types/src/message/index.ts
index 04fb6999496..7db1665fb2b 100644
--- a/packages/types/src/message/index.ts
+++ b/packages/types/src/message/index.ts
@@ -1,9 +1,6 @@
-export * from './base';
-export * from './chat';
-export * from './image';
-export * from './rag';
+export * from './common';
export * from './tools';
-export * from './video';
+export * from './ui';
export interface ModelRankItem {
count: number;
diff --git a/packages/types/src/message/chat.ts b/packages/types/src/message/ui/chat.ts
similarity index 89%
rename from packages/types/src/message/chat.ts
rename to packages/types/src/message/ui/chat.ts
index a5402b05ef9..8d85a1945f8 100644
--- a/packages/types/src/message/chat.ts
+++ b/packages/types/src/message/ui/chat.ts
@@ -1,11 +1,16 @@
-import { UploadFileItem } from '../files';
-import { MetaData } from '../meta';
-import { MessageSemanticSearchChunk } from '../rag';
-import { GroundingSearch } from '../search';
-import type { ChatMessageError, MessageMetadata, MessageRoleType, ModelReasoning } from './base';
-import { ChatImageItem } from './image';
-import { ChatPluginPayload, ChatToolPayload } from './tools';
-import { Translate } from './translate';
+import { UploadFileItem } from '../../files';
+import { MetaData } from '../../meta';
+import { MessageSemanticSearchChunk } from '../../rag';
+import { GroundingSearch } from '../../search';
+import type {
+ ChatMessageError,
+ MessageMetadata,
+ MessageRoleType,
+ ModelReasoning,
+} from '../common/base';
+import { ChatImageItem } from '../common/image';
+import { Translate } from '../common/translate';
+import { ChatPluginPayload, ChatToolPayload } from '../tools';
import { ChatVideoItem } from './video';
export interface ChatTranslate extends Translate {
diff --git a/packages/types/src/message/ui/index.ts b/packages/types/src/message/ui/index.ts
new file mode 100644
index 00000000000..26b66e802d8
--- /dev/null
+++ b/packages/types/src/message/ui/index.ts
@@ -0,0 +1,3 @@
+export * from './chat';
+export * from './rag';
+export * from './video';
diff --git a/packages/types/src/message/rag.ts b/packages/types/src/message/ui/rag.ts
similarity index 88%
rename from packages/types/src/message/rag.ts
rename to packages/types/src/message/ui/rag.ts
index f3ffd377637..d3faa60ef3e 100644
--- a/packages/types/src/message/rag.ts
+++ b/packages/types/src/message/ui/rag.ts
@@ -1,6 +1,6 @@
import { z } from 'zod';
-import { MessageSemanticSearchChunk } from '../rag';
+import { MessageSemanticSearchChunk } from '../../rag';
export const SemanticSearchChunkSchema = z.object({
id: z.string(),
diff --git a/packages/types/src/message/video.ts b/packages/types/src/message/ui/video.ts
similarity index 100%
rename from packages/types/src/message/video.ts
rename to packages/types/src/message/ui/video.ts
diff --git a/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/V1Mobile/useSend.ts b/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/V1Mobile/useSend.ts
index ba16697cb40..268825877c3 100644
--- a/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/V1Mobile/useSend.ts
+++ b/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/V1Mobile/useSend.ts
@@ -1,3 +1,4 @@
+import { SendMessageParams } from '@lobechat/types';
import { useAnalytics } from '@lobehub/analytics/react';
import { useCallback, useMemo } from 'react';
@@ -8,7 +9,6 @@ import { useChatStore } from '@/store/chat';
import { chatSelectors, topicSelectors } from '@/store/chat/selectors';
import { fileChatSelectors, useFileStore } from '@/store/file';
import { getUserStoreState } from '@/store/user';
-import { SendMessageParams } from '@/types/message';
export type UseSendMessageParams = Pick<
SendMessageParams,
diff --git a/src/app/[variants]/(main)/profile/stats/features/ModelsRank.tsx b/src/app/[variants]/(main)/profile/stats/features/ModelsRank.tsx
index 48c82e6495a..91c573c1afc 100644
--- a/src/app/[variants]/(main)/profile/stats/features/ModelsRank.tsx
+++ b/src/app/[variants]/(main)/profile/stats/features/ModelsRank.tsx
@@ -1,3 +1,4 @@
+import { ModelRankItem } from '@lobechat/types';
import { BarList } from '@lobehub/charts';
import { ModelIcon } from '@lobehub/icons';
import { ActionIcon, FormGroup, Modal } from '@lobehub/ui';
@@ -9,7 +10,6 @@ import { Flexbox } from 'react-layout-kit';
import { FORM_STYLE } from '@/const/layoutTokens';
import { useClientDataSWR } from '@/libs/swr';
import { messageService } from '@/services/message';
-import { ModelRankItem } from '@/types/message';
export const TopicsRank = memo(() => {
const [open, setOpen] = useState(false);
diff --git a/src/app/[variants]/(main)/settings/llm/components/Checker.tsx b/src/app/[variants]/(main)/settings/llm/components/Checker.tsx
index 980d57ec65a..04a0546c729 100644
--- a/src/app/[variants]/(main)/settings/llm/components/Checker.tsx
+++ b/src/app/[variants]/(main)/settings/llm/components/Checker.tsx
@@ -1,7 +1,7 @@
'use client';
import { CheckCircleFilled } from '@ant-design/icons';
-import { TraceNameMap } from '@lobechat/types';
+import { TraceNameMap , ChatMessageError } from '@lobechat/types';
import { Alert, Button, Highlighter } from '@lobehub/ui';
import { useTheme } from 'antd-style';
import { memo, useState } from 'react';
@@ -11,7 +11,6 @@ import { Flexbox } from 'react-layout-kit';
import { useIsMobile } from '@/hooks/useIsMobile';
import { useProviderName } from '@/hooks/useProviderName';
import { chatService } from '@/services/chat';
-import { ChatMessageError } from '@/types/message';
interface ConnectionCheckerProps {
model: string;
diff --git a/src/app/[variants]/(main)/settings/provider/detail/ollama/CheckError.tsx b/src/app/[variants]/(main)/settings/provider/detail/ollama/CheckError.tsx
index 382bc1a0350..e6704bd39db 100644
--- a/src/app/[variants]/(main)/settings/provider/detail/ollama/CheckError.tsx
+++ b/src/app/[variants]/(main)/settings/provider/detail/ollama/CheckError.tsx
@@ -1,9 +1,8 @@
+import { ChatMessageError } from '@lobechat/types';
import { Skeleton } from 'antd';
import dynamic from 'next/dynamic';
import { ReactNode } from 'react';
-import { ChatMessageError } from '@/types/message';
-
import Container from './Container';
const loading = () => ;
diff --git a/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx b/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx
index 7298a5bc20e..d8fa3c0818f 100644
--- a/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx
+++ b/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/Checker.tsx
@@ -1,7 +1,7 @@
'use client';
import { CheckCircleFilled } from '@ant-design/icons';
-import { TraceNameMap } from '@lobechat/types';
+import { TraceNameMap , ChatMessageError } from '@lobechat/types';
import { ModelIcon } from '@lobehub/icons';
import { Alert, Button, Highlighter, Icon, Select } from '@lobehub/ui';
import { useTheme } from 'antd-style';
@@ -13,7 +13,6 @@ import { Flexbox } from 'react-layout-kit';
import { useProviderName } from '@/hooks/useProviderName';
import { chatService } from '@/services/chat';
import { aiModelSelectors, aiProviderSelectors, useAiInfraStore } from '@/store/aiInfra';
-import { ChatMessageError } from '@/types/message';
const Error = memo<{ error: ChatMessageError }>(({ error }) => {
const { t } = useTranslation('error');
diff --git a/src/database/_deprecated/models/__tests__/message.test.ts b/src/database/_deprecated/models/__tests__/message.test.ts
index 42f6f29b895..0f5efb15d81 100644
--- a/src/database/_deprecated/models/__tests__/message.test.ts
+++ b/src/database/_deprecated/models/__tests__/message.test.ts
@@ -1,7 +1,6 @@
+import { ChatMessage } from '@lobechat/types';
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
-import { ChatMessage } from '@/types/message';
-
import { CreateMessageParams, MessageModel } from '../message';
describe('MessageModel', () => {
diff --git a/src/database/_deprecated/models/message.ts b/src/database/_deprecated/models/message.ts
index 3a5046c83fe..f26e85fc37b 100644
--- a/src/database/_deprecated/models/message.ts
+++ b/src/database/_deprecated/models/message.ts
@@ -1,9 +1,9 @@
+import { ChatMessage } from '@lobechat/types';
import type { PartialDeep } from 'type-fest';
import { BaseModel } from '@/database/_deprecated/core';
import { DBModel } from '@/database/_deprecated/core/types/db';
import { DB_Message, DB_MessageSchema } from '@/database/_deprecated/schemas/message';
-import { ChatMessage } from '@/types/message';
import { nanoid } from '@/utils/uuid';
/**
diff --git a/src/features/AgentSetting/AgentTTS/SelectWithTTSPreview.tsx b/src/features/AgentSetting/AgentTTS/SelectWithTTSPreview.tsx
index 18e14fbd970..b8e1769ea3f 100644
--- a/src/features/AgentSetting/AgentTTS/SelectWithTTSPreview.tsx
+++ b/src/features/AgentSetting/AgentTTS/SelectWithTTSPreview.tsx
@@ -1,3 +1,4 @@
+import { ChatMessageError } from '@lobechat/types';
import { AudioPlayer } from '@lobehub/tts/react';
import { Alert, Button, Highlighter, Select, SelectProps } from '@lobehub/ui';
import { RefSelectProps } from 'antd';
@@ -8,7 +9,6 @@ import { Flexbox } from 'react-layout-kit';
import { useTTS } from '@/hooks/useTTS';
import { TTSServer } from '@/types/agent';
-import { ChatMessageError } from '@/types/message';
import { getMessageError } from '@/utils/fetch';
interface SelectWithTTSPreviewProps extends SelectProps {
diff --git a/src/features/ChatInput/ActionBar/STT/browser.tsx b/src/features/ChatInput/ActionBar/STT/browser.tsx
index 5139d63ba5e..3bdf7240e60 100644
--- a/src/features/ChatInput/ActionBar/STT/browser.tsx
+++ b/src/features/ChatInput/ActionBar/STT/browser.tsx
@@ -1,3 +1,4 @@
+import { ChatMessageError } from '@lobechat/types';
import { SpeechRecognitionOptions, useSpeechRecognition } from '@lobehub/tts/react';
import isEqual from 'fast-deep-equal';
import { memo, useCallback, useState } from 'react';
@@ -12,7 +13,6 @@ import { useGlobalStore } from '@/store/global';
import { globalGeneralSelectors } from '@/store/global/selectors';
import { useUserStore } from '@/store/user';
import { settingsSelectors } from '@/store/user/selectors';
-import { ChatMessageError } from '@/types/message';
import { getMessageError } from '@/utils/fetch';
import CommonSTT from './common';
diff --git a/src/features/ChatInput/ActionBar/STT/common.tsx b/src/features/ChatInput/ActionBar/STT/common.tsx
index 4e03da59bb5..c9c4edae0f3 100644
--- a/src/features/ChatInput/ActionBar/STT/common.tsx
+++ b/src/features/ChatInput/ActionBar/STT/common.tsx
@@ -1,3 +1,4 @@
+import { ChatMessageError } from '@lobechat/types';
import { Alert, Button, Highlighter } from '@lobehub/ui';
import { createStyles } from 'antd-style';
import { Mic, MicOff } from 'lucide-react';
@@ -5,8 +6,6 @@ import { memo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { Flexbox } from 'react-layout-kit';
-import { ChatMessageError } from '@/types/message';
-
import Action from '../components/Action';
const useStyles = createStyles(({ css, token }) => ({
diff --git a/src/features/ChatInput/ActionBar/STT/openai.tsx b/src/features/ChatInput/ActionBar/STT/openai.tsx
index a78b916cc9f..b7a50acc729 100644
--- a/src/features/ChatInput/ActionBar/STT/openai.tsx
+++ b/src/features/ChatInput/ActionBar/STT/openai.tsx
@@ -1,3 +1,4 @@
+import { ChatMessageError } from '@lobechat/types';
import { getRecordMineType } from '@lobehub/tts';
import { OpenAISTTOptions, useOpenAISTT } from '@lobehub/tts/react';
import isEqual from 'fast-deep-equal';
@@ -15,7 +16,6 @@ import { useGlobalStore } from '@/store/global';
import { globalGeneralSelectors } from '@/store/global/selectors';
import { useUserStore } from '@/store/user';
import { settingsSelectors } from '@/store/user/selectors';
-import { ChatMessageError } from '@/types/message';
import { getMessageError } from '@/utils/fetch';
import CommonSTT from './common';
diff --git a/src/features/Conversation/Error/ErrorJsonViewer.tsx b/src/features/Conversation/Error/ErrorJsonViewer.tsx
index 5377d79aef8..347f9767de5 100644
--- a/src/features/Conversation/Error/ErrorJsonViewer.tsx
+++ b/src/features/Conversation/Error/ErrorJsonViewer.tsx
@@ -1,9 +1,8 @@
+import { ChatMessageError } from '@lobechat/types';
import { Highlighter } from '@lobehub/ui';
import { memo } from 'react';
import { Flexbox } from 'react-layout-kit';
-import { ChatMessageError } from '@/types/message';
-
interface ErrorJSONViewerProps {
error?: ChatMessageError | null;
id: string;
diff --git a/src/features/Conversation/Error/OllamaBizError/index.tsx b/src/features/Conversation/Error/OllamaBizError/index.tsx
index 9f00b1347d2..034c974b48f 100644
--- a/src/features/Conversation/Error/OllamaBizError/index.tsx
+++ b/src/features/Conversation/Error/OllamaBizError/index.tsx
@@ -1,9 +1,8 @@
+import { ChatMessage } from '@lobechat/types';
import { Skeleton } from 'antd';
import dynamic from 'next/dynamic';
import { memo } from 'react';
-import { ChatMessage } from '@/types/message';
-
import ErrorJsonViewer from '../ErrorJsonViewer';
const loading = () => ;
diff --git a/src/features/Conversation/Error/index.tsx b/src/features/Conversation/Error/index.tsx
index aabccd29d24..92e977297f3 100644
--- a/src/features/Conversation/Error/index.tsx
+++ b/src/features/Conversation/Error/index.tsx
@@ -1,5 +1,5 @@
import { AgentRuntimeErrorType, ILobeAgentRuntimeErrorType } from '@lobechat/model-runtime';
-import { ChatErrorType, ErrorType } from '@lobechat/types';
+import { ChatErrorType, ErrorType , ChatMessage, ChatMessageError } from '@lobechat/types';
import { IPluginErrorType } from '@lobehub/chat-plugin-sdk';
import type { AlertProps } from '@lobehub/ui';
import { Skeleton } from 'antd';
@@ -8,7 +8,6 @@ import { Suspense, memo, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { useProviderName } from '@/hooks/useProviderName';
-import { ChatMessage, ChatMessageError } from '@/types/message';
import ChatInvalidAPIKey from './ChatInvalidApiKey';
import ClerkLogin from './ClerkLogin';
diff --git a/src/features/Conversation/Messages/Assistant/Actions/index.tsx b/src/features/Conversation/Messages/Assistant/Actions/index.tsx
index 5e202884d1b..3bb5473ff3e 100644
--- a/src/features/Conversation/Messages/Assistant/Actions/index.tsx
+++ b/src/features/Conversation/Messages/Assistant/Actions/index.tsx
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { ActionIconGroup, type ActionIconGroupEvent, ActionIconGroupItemType } from '@lobehub/ui';
import { App } from 'antd';
import { useSearchParams } from 'next/navigation';
@@ -10,7 +11,6 @@ import { useChatStore } from '@/store/chat';
import { threadSelectors } from '@/store/chat/selectors';
import { useSessionStore } from '@/store/session';
import { sessionSelectors } from '@/store/session/selectors';
-import { ChatMessage } from '@/types/message';
import { InPortalThreadContext } from '../../../context/InPortalThreadContext';
import { useChatListActionsBar } from '../../../hooks/useChatListActionsBar';
diff --git a/src/features/Conversation/Messages/Assistant/Block.tsx b/src/features/Conversation/Messages/Assistant/Block.tsx
index 15aadc4d81b..f5aac09e807 100644
--- a/src/features/Conversation/Messages/Assistant/Block.tsx
+++ b/src/features/Conversation/Messages/Assistant/Block.tsx
@@ -1,3 +1,4 @@
+import { AssistantContentBlock } from '@lobechat/types';
import { Markdown } from '@lobehub/ui';
import { ReactNode, memo } from 'react';
import { Flexbox } from 'react-layout-kit';
@@ -6,7 +7,6 @@ import { LOADING_FLAT } from '@/const/message';
import ImageFileListViewer from '@/features/Conversation/Messages/User/ImageFileListViewer';
import { useChatStore } from '@/store/chat';
import { chatSelectors } from '@/store/chat/selectors';
-import { AssistantContentBlock } from '@/types/message';
import { DefaultMessage } from '../Default';
import Tool from './Tool';
diff --git a/src/features/Conversation/Messages/Assistant/Extra/index.test.tsx b/src/features/Conversation/Messages/Assistant/Extra/index.test.tsx
index 9f7e1a85199..db9395b3a82 100644
--- a/src/features/Conversation/Messages/Assistant/Extra/index.test.tsx
+++ b/src/features/Conversation/Messages/Assistant/Extra/index.test.tsx
@@ -1,8 +1,8 @@
+import { ChatMessage } from '@lobechat/types';
import { render, screen } from '@testing-library/react';
import { Mock, beforeEach, describe, expect, it, vi } from 'vitest';
import { useChatStore } from '@/store/chat';
-import { ChatMessage } from '@/types/message';
import { AssistantMessageExtra } from './index';
diff --git a/src/features/Conversation/Messages/Assistant/Extra/index.tsx b/src/features/Conversation/Messages/Assistant/Extra/index.tsx
index d704dedc4ab..87e7da64cd3 100644
--- a/src/features/Conversation/Messages/Assistant/Extra/index.tsx
+++ b/src/features/Conversation/Messages/Assistant/Extra/index.tsx
@@ -1,3 +1,4 @@
+import { type MessageMetadata } from '@lobechat/types';
import { memo } from 'react';
import { Flexbox } from 'react-layout-kit';
@@ -8,7 +9,6 @@ import Translate from '@/features/Conversation/components/Extras/Translate';
import Usage from '@/features/Conversation/components/Extras/Usage';
import { useChatStore } from '@/store/chat';
import { chatSelectors } from '@/store/chat/selectors';
-import { type MessageMetadata } from '@/types/message';
interface AssistantMessageExtraProps {
content: string;
diff --git a/src/features/Conversation/Messages/Assistant/FileChunks/Item/index.tsx b/src/features/Conversation/Messages/Assistant/FileChunks/Item/index.tsx
index 20370631ce3..511907c2e5c 100644
--- a/src/features/Conversation/Messages/Assistant/FileChunks/Item/index.tsx
+++ b/src/features/Conversation/Messages/Assistant/FileChunks/Item/index.tsx
@@ -1,3 +1,4 @@
+import { ChatFileChunk } from '@lobechat/types';
import { Text, Tooltip } from '@lobehub/ui';
import { memo } from 'react';
import { Center, Flexbox } from 'react-layout-kit';
@@ -5,7 +6,6 @@ import { Center, Flexbox } from 'react-layout-kit';
import FileIcon from '@/components/FileIcon';
import { useIsMobile } from '@/hooks/useIsMobile';
import { useChatStore } from '@/store/chat';
-import { ChatFileChunk } from '@/types/message';
import { useStyles } from './style';
diff --git a/src/features/Conversation/Messages/Assistant/FileChunks/index.tsx b/src/features/Conversation/Messages/Assistant/FileChunks/index.tsx
index 0443afe59c4..d38b1581edf 100644
--- a/src/features/Conversation/Messages/Assistant/FileChunks/index.tsx
+++ b/src/features/Conversation/Messages/Assistant/FileChunks/index.tsx
@@ -1,3 +1,4 @@
+import { ChatFileChunk } from '@lobechat/types';
import { Icon } from '@lobehub/ui';
import { createStyles } from 'antd-style';
import { BookOpenTextIcon, ChevronDown, ChevronRight } from 'lucide-react';
@@ -5,8 +6,6 @@ import { memo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { Flexbox } from 'react-layout-kit';
-import { ChatFileChunk } from '@/types/message';
-
import ChunkItem from './Item';
const useStyles = createStyles(({ css, token, isDarkMode }) => ({
diff --git a/src/features/Conversation/Messages/Assistant/MessageContent.tsx b/src/features/Conversation/Messages/Assistant/MessageContent.tsx
index da5a9c0588d..889ef8874b2 100644
--- a/src/features/Conversation/Messages/Assistant/MessageContent.tsx
+++ b/src/features/Conversation/Messages/Assistant/MessageContent.tsx
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { ReactNode, memo } from 'react';
import { Flexbox } from 'react-layout-kit';
@@ -7,7 +8,6 @@ import ImageFileListViewer from '@/features/Conversation/Messages/User/ImageFile
import VideoFileListViewer from '@/features/Conversation/Messages/User/VideoFileListViewer';
import { useChatStore } from '@/store/chat';
import { aiChatSelectors, chatSelectors } from '@/store/chat/selectors';
-import { ChatMessage } from '@/types/message';
import { DefaultMessage } from '../Default';
import FileChunks from './FileChunks';
diff --git a/src/features/Conversation/Messages/Assistant/Tool/Render/CustomRender.tsx b/src/features/Conversation/Messages/Assistant/Tool/Render/CustomRender.tsx
index 291a7c51acb..cf5f98b156e 100644
--- a/src/features/Conversation/Messages/Assistant/Tool/Render/CustomRender.tsx
+++ b/src/features/Conversation/Messages/Assistant/Tool/Render/CustomRender.tsx
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { ActionIcon } from '@lobehub/ui';
import { App } from 'antd';
import { Edit3Icon, PlayCircleIcon } from 'lucide-react';
@@ -10,7 +11,6 @@ import PluginResult from '@/features/Conversation/Messages/Assistant/Tool/Inspec
import PluginRender from '@/features/PluginsUI/Render';
import { useChatStore } from '@/store/chat';
import { chatSelectors } from '@/store/chat/selectors';
-import { ChatMessage } from '@/types/message';
import Arguments from './Arguments';
import KeyValueEditor from './KeyValueEditor';
diff --git a/src/features/Conversation/Messages/Assistant/Tool/Render/ErrorResponse.tsx b/src/features/Conversation/Messages/Assistant/Tool/Render/ErrorResponse.tsx
index 13cc81750b0..f56cf6be657 100644
--- a/src/features/Conversation/Messages/Assistant/Tool/Render/ErrorResponse.tsx
+++ b/src/features/Conversation/Messages/Assistant/Tool/Render/ErrorResponse.tsx
@@ -1,10 +1,9 @@
+import { ChatMessageError, ChatPluginPayload } from '@lobechat/types';
import { Alert, Highlighter } from '@lobehub/ui';
import { memo } from 'react';
import { useTranslation } from 'react-i18next';
import { Flexbox } from 'react-layout-kit';
-import { ChatMessageError, ChatPluginPayload } from '@/types/message';
-
import PluginSettings from './PluginSettings';
interface ErrorResponseProps extends ChatMessageError {
diff --git a/src/features/Conversation/Messages/Assistant/Tool/Render/PluginSettings.tsx b/src/features/Conversation/Messages/Assistant/Tool/Render/PluginSettings.tsx
index aa3526ac3ed..ae962d4d3f9 100644
--- a/src/features/Conversation/Messages/Assistant/Tool/Render/PluginSettings.tsx
+++ b/src/features/Conversation/Messages/Assistant/Tool/Render/PluginSettings.tsx
@@ -1,3 +1,4 @@
+import { ChatPluginPayload } from '@lobechat/types';
import { Avatar, Button } from '@lobehub/ui';
import { Divider } from 'antd';
import { useTheme } from 'antd-style';
@@ -10,7 +11,6 @@ import PluginSettingsConfig from '@/features/PluginSettings';
import { useChatStore } from '@/store/chat';
import { pluginHelpers, useToolStore } from '@/store/tool';
import { pluginSelectors } from '@/store/tool/selectors';
-import { ChatPluginPayload } from '@/types/message';
import { ErrorActionContainer, useStyles } from '../../../../Error/style';
diff --git a/src/features/Conversation/Messages/Default.tsx b/src/features/Conversation/Messages/Default.tsx
index 252ba709b6a..3f6138179c8 100644
--- a/src/features/Conversation/Messages/Default.tsx
+++ b/src/features/Conversation/Messages/Default.tsx
@@ -1,10 +1,10 @@
+import { ChatMessage } from '@lobechat/types';
import { ReactNode, memo } from 'react';
import BubblesLoading from '@/components/BubblesLoading';
import { LOADING_FLAT } from '@/const/message';
import { useChatStore } from '@/store/chat';
import { chatSelectors } from '@/store/chat/selectors';
-import { ChatMessage } from '@/types/message';
export const DefaultMessage = memo<
ChatMessage & {
diff --git a/src/features/Conversation/Messages/Supervisor/index.tsx b/src/features/Conversation/Messages/Supervisor/index.tsx
index c05060fd8c3..64da25fcb58 100644
--- a/src/features/Conversation/Messages/Supervisor/index.tsx
+++ b/src/features/Conversation/Messages/Supervisor/index.tsx
@@ -1,5 +1,6 @@
'use client';
+import { ChatMessage } from '@lobechat/types';
import { ModelIcon } from '@lobehub/icons';
import { Button, Text } from '@lobehub/ui';
import { createStyles, useTheme } from 'antd-style';
@@ -12,7 +13,6 @@ import { DEFAULT_SUPERVISOR_AVATAR } from '@/const/meta';
import { ChatItem } from '@/features/ChatItem';
import { useChatStore } from '@/store/chat';
import { ChatErrorType } from '@/types/fetch';
-import { ChatMessage } from '@/types/message';
import TodoList, { TodoData } from './TodoList';
diff --git a/src/features/Conversation/Messages/User/FileListViewer/Item.tsx b/src/features/Conversation/Messages/User/FileListViewer/Item.tsx
index 10c46e6bba0..1509eac07e4 100644
--- a/src/features/Conversation/Messages/User/FileListViewer/Item.tsx
+++ b/src/features/Conversation/Messages/User/FileListViewer/Item.tsx
@@ -1,3 +1,4 @@
+import { ChatFileItem } from '@lobechat/types';
import { Text } from '@lobehub/ui';
import { createStyles } from 'antd-style';
import { memo } from 'react';
@@ -5,7 +6,6 @@ import { Flexbox } from 'react-layout-kit';
import FileIcon from '@/components/FileIcon';
import { useChatStore } from '@/store/chat';
-import { ChatFileItem } from '@/types/message';
import { formatSize } from '@/utils/format';
const useStyles = createStyles(({ css, token, isDarkMode }) => ({
diff --git a/src/features/Conversation/Messages/User/FileListViewer/index.tsx b/src/features/Conversation/Messages/User/FileListViewer/index.tsx
index 72e21643070..fc29516e1ce 100644
--- a/src/features/Conversation/Messages/User/FileListViewer/index.tsx
+++ b/src/features/Conversation/Messages/User/FileListViewer/index.tsx
@@ -1,8 +1,7 @@
+import { ChatFileItem } from '@lobechat/types';
import { memo } from 'react';
import { Flexbox } from 'react-layout-kit';
-import { ChatFileItem } from '@/types/message';
-
import FileItem from './Item';
interface FileListViewerProps {
diff --git a/src/features/Conversation/Messages/User/MessageContent.tsx b/src/features/Conversation/Messages/User/MessageContent.tsx
index fdb0a2e756c..9642737fed1 100644
--- a/src/features/Conversation/Messages/User/MessageContent.tsx
+++ b/src/features/Conversation/Messages/User/MessageContent.tsx
@@ -1,8 +1,7 @@
+import { ChatMessage } from '@lobechat/types';
import { ReactNode, memo } from 'react';
import { Flexbox } from 'react-layout-kit';
-import { ChatMessage } from '@/types/message';
-
import FileListViewer from './FileListViewer';
import ImageFileListViewer from './ImageFileListViewer';
import VideoFileListViewer from './VideoFileListViewer';
diff --git a/src/features/Conversation/Messages/User/VideoFileListViewer.tsx b/src/features/Conversation/Messages/User/VideoFileListViewer.tsx
index b06621620f9..e151e3dd169 100644
--- a/src/features/Conversation/Messages/User/VideoFileListViewer.tsx
+++ b/src/features/Conversation/Messages/User/VideoFileListViewer.tsx
@@ -1,8 +1,7 @@
+import { ChatVideoItem } from '@lobechat/types';
import { memo } from 'react';
import { Flexbox } from 'react-layout-kit';
-import { ChatVideoItem } from '@/types/message';
-
interface VideoFileListViewerProps {
items: ChatVideoItem[];
}
diff --git a/src/features/Conversation/components/ChatItem/ShareMessageModal/SharePdf/index.tsx b/src/features/Conversation/components/ChatItem/ShareMessageModal/SharePdf/index.tsx
index 49f4b02e23f..deeb82d39a2 100644
--- a/src/features/Conversation/components/ChatItem/ShareMessageModal/SharePdf/index.tsx
+++ b/src/features/Conversation/components/ChatItem/ShareMessageModal/SharePdf/index.tsx
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { Button } from '@lobehub/ui';
import { App } from 'antd';
import { DownloadIcon, FileText } from 'lucide-react';
@@ -7,7 +8,6 @@ import { Flexbox } from 'react-layout-kit';
import { useIsMobile } from '@/hooks/useIsMobile';
import { useChatStore } from '@/store/chat';
-import { ChatMessage } from '@/types/message';
import PdfPreview from './PdfPreview';
import { useContainerStyles, useStyles } from './style';
diff --git a/src/features/Conversation/components/ChatItem/ShareMessageModal/SharePdf/template.ts b/src/features/Conversation/components/ChatItem/ShareMessageModal/SharePdf/template.ts
index b1bada47487..546ac27e6b4 100644
--- a/src/features/Conversation/components/ChatItem/ShareMessageModal/SharePdf/template.ts
+++ b/src/features/Conversation/components/ChatItem/ShareMessageModal/SharePdf/template.ts
@@ -1,7 +1,7 @@
+import { ChatMessage } from '@lobechat/types';
import { template } from 'lodash-es';
import { LOADING_FLAT } from '@/const/message';
-import { ChatMessage } from '@/types/message';
const markdownTemplate = template(`{{message.content}}`, {
evaluate: /<%([\S\s]+?)%>/g,
diff --git a/src/features/Conversation/components/Extras/TTS/InitPlayer.tsx b/src/features/Conversation/components/Extras/TTS/InitPlayer.tsx
index 24d2c04f568..7261ee61784 100644
--- a/src/features/Conversation/components/Extras/TTS/InitPlayer.tsx
+++ b/src/features/Conversation/components/Extras/TTS/InitPlayer.tsx
@@ -1,10 +1,10 @@
+import { ChatMessageError, ChatTTS } from '@lobechat/types';
import { memo, useCallback, useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useTTS } from '@/hooks/useTTS';
import { useChatStore } from '@/store/chat';
import { useFileStore } from '@/store/file';
-import { ChatMessageError, ChatTTS } from '@/types/message';
import { getMessageError } from '@/utils/fetch';
import Player from './Player';
diff --git a/src/features/Conversation/components/Extras/TTS/Player.tsx b/src/features/Conversation/components/Extras/TTS/Player.tsx
index 4b6fc96912f..fa3dae7e629 100644
--- a/src/features/Conversation/components/Extras/TTS/Player.tsx
+++ b/src/features/Conversation/components/Extras/TTS/Player.tsx
@@ -1,3 +1,4 @@
+import { ChatMessageError } from '@lobechat/types';
import { AudioPlayer, AudioPlayerProps } from '@lobehub/tts/react';
import { ActionIcon, Alert, Button, Highlighter } from '@lobehub/ui';
import { TrashIcon } from 'lucide-react';
@@ -5,8 +6,6 @@ import { memo } from 'react';
import { useTranslation } from 'react-i18next';
import { Flexbox } from 'react-layout-kit';
-import { ChatMessageError } from '@/types/message';
-
interface PlayerProps extends AudioPlayerProps {
error?: ChatMessageError;
onDelete: () => void;
diff --git a/src/features/Conversation/components/Extras/Translate.tsx b/src/features/Conversation/components/Extras/Translate.tsx
index 62bc593b423..288e180bcd0 100644
--- a/src/features/Conversation/components/Extras/Translate.tsx
+++ b/src/features/Conversation/components/Extras/Translate.tsx
@@ -1,3 +1,4 @@
+import { ChatTranslate } from '@lobechat/types';
import { ActionIcon, Icon, Markdown, Tag, copyToClipboard } from '@lobehub/ui';
import { App } from 'antd';
import { useTheme } from 'antd-style';
@@ -8,7 +9,6 @@ import { Flexbox } from 'react-layout-kit';
import BubblesLoading from '@/components/BubblesLoading';
import { useChatStore } from '@/store/chat';
-import { ChatTranslate } from '@/types/message';
interface TranslateProps extends ChatTranslate {
id: string;
diff --git a/src/features/Conversation/components/Extras/Usage/UsageDetail/index.tsx b/src/features/Conversation/components/Extras/Usage/UsageDetail/index.tsx
index 47afd4c3eb2..d02c4538b49 100644
--- a/src/features/Conversation/components/Extras/Usage/UsageDetail/index.tsx
+++ b/src/features/Conversation/components/Extras/Usage/UsageDetail/index.tsx
@@ -1,3 +1,4 @@
+import { MessageMetadata } from '@lobechat/types';
import { Icon } from '@lobehub/ui';
import { Divider, Popover } from 'antd';
import { useTheme } from 'antd-style';
@@ -10,7 +11,6 @@ import InfoTooltip from '@/components/InfoTooltip';
import { aiModelSelectors, useAiInfraStore } from '@/store/aiInfra';
import { useGlobalStore } from '@/store/global';
import { systemStatusSelectors } from '@/store/global/selectors';
-import { MessageMetadata } from '@/types/message';
import { formatNumber } from '@/utils/format';
import ModelCard from './ModelCard';
diff --git a/src/features/Conversation/components/Extras/Usage/UsageDetail/tokens.ts b/src/features/Conversation/components/Extras/Usage/UsageDetail/tokens.ts
index 18486e9702c..09609ba7f4d 100644
--- a/src/features/Conversation/components/Extras/Usage/UsageDetail/tokens.ts
+++ b/src/features/Conversation/components/Extras/Usage/UsageDetail/tokens.ts
@@ -1,6 +1,6 @@
+import type { ModelTokensUsage } from '@lobechat/types';
import { LobeDefaultAiModelListItem } from 'model-bank';
-import type { ModelTokensUsage } from '@/types/message';
import { getAudioInputUnitRate, getAudioOutputUnitRate } from '@/utils/pricing';
import { getPrice } from './pricing';
diff --git a/src/features/Conversation/components/Extras/Usage/index.tsx b/src/features/Conversation/components/Extras/Usage/index.tsx
index 4bcd995485f..28c716658c5 100644
--- a/src/features/Conversation/components/Extras/Usage/index.tsx
+++ b/src/features/Conversation/components/Extras/Usage/index.tsx
@@ -1,10 +1,9 @@
+import { MessageMetadata } from '@lobechat/types';
import { ModelIcon } from '@lobehub/icons';
import { createStyles } from 'antd-style';
import { memo } from 'react';
import { Center, Flexbox } from 'react-layout-kit';
-import { MessageMetadata } from '@/types/message';
-
import TokenDetail from './UsageDetail';
export const useStyles = createStyles(({ token, css, cx }) => ({
diff --git a/src/features/Conversation/components/ShareMessageModal/ShareImage/Preview.tsx b/src/features/Conversation/components/ShareMessageModal/ShareImage/Preview.tsx
index 2d98f02f4ba..4b12224892d 100644
--- a/src/features/Conversation/components/ShareMessageModal/ShareImage/Preview.tsx
+++ b/src/features/Conversation/components/ShareMessageModal/ShareImage/Preview.tsx
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { ModelTag } from '@lobehub/icons';
import { Avatar } from '@lobehub/ui';
import { ChatHeaderTitle } from '@lobehub/ui/chat';
@@ -12,7 +13,6 @@ import { useAgentStore } from '@/store/agent';
import { agentSelectors } from '@/store/agent/selectors';
import { useSessionStore } from '@/store/session';
import { sessionMetaSelectors, sessionSelectors } from '@/store/session/selectors';
-import { ChatMessage } from '@/types/message';
import pkg from '../../../../../../package.json';
import { useContainerStyles } from '../style';
diff --git a/src/features/Conversation/components/ShareMessageModal/ShareImage/index.tsx b/src/features/Conversation/components/ShareMessageModal/ShareImage/index.tsx
index de71d887b8c..f4d31315d88 100644
--- a/src/features/Conversation/components/ShareMessageModal/ShareImage/index.tsx
+++ b/src/features/Conversation/components/ShareMessageModal/ShareImage/index.tsx
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { Button, Form, type FormItemProps, Segmented } from '@lobehub/ui';
import { Switch } from 'antd';
import { CopyIcon } from 'lucide-react';
@@ -11,7 +12,6 @@ import { useIsMobile } from '@/hooks/useIsMobile';
import { ImageType, imageTypeOptions, useScreenshot } from '@/hooks/useScreenshot';
import { useSessionStore } from '@/store/session';
import { sessionMetaSelectors } from '@/store/session/selectors';
-import { ChatMessage } from '@/types/message';
import { useStyles } from '../style';
import Preview from './Preview';
diff --git a/src/features/Conversation/components/ShareMessageModal/ShareText/index.tsx b/src/features/Conversation/components/ShareMessageModal/ShareText/index.tsx
index 6f6e331d57e..b1ac92ddfd5 100644
--- a/src/features/Conversation/components/ShareMessageModal/ShareText/index.tsx
+++ b/src/features/Conversation/components/ShareMessageModal/ShareText/index.tsx
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { Button, copyToClipboard } from '@lobehub/ui';
import { App } from 'antd';
import isEqual from 'fast-deep-equal';
@@ -9,7 +10,6 @@ import { Flexbox } from 'react-layout-kit';
import { useIsMobile } from '@/hooks/useIsMobile';
import { useChatStore } from '@/store/chat';
import { topicSelectors } from '@/store/chat/selectors';
-import { ChatMessage } from '@/types/message';
import { exportFile } from '@/utils/client';
import { useStyles } from '../style';
diff --git a/src/features/Conversation/components/ShareMessageModal/ShareText/template.test.ts b/src/features/Conversation/components/ShareMessageModal/ShareText/template.test.ts
index 611c4c6295c..13df7089f60 100644
--- a/src/features/Conversation/components/ShareMessageModal/ShareText/template.test.ts
+++ b/src/features/Conversation/components/ShareMessageModal/ShareText/template.test.ts
@@ -1,7 +1,7 @@
+import { ChatMessage } from '@lobechat/types';
import { describe, expect, it } from 'vitest';
import { LOADING_FLAT } from '@/const/message';
-import { ChatMessage } from '@/types/message';
import { generateMarkdown } from './template';
diff --git a/src/features/Conversation/components/ShareMessageModal/ShareText/template.ts b/src/features/Conversation/components/ShareMessageModal/ShareText/template.ts
index 9cbb71640bb..3fb8943e6b4 100644
--- a/src/features/Conversation/components/ShareMessageModal/ShareText/template.ts
+++ b/src/features/Conversation/components/ShareMessageModal/ShareText/template.ts
@@ -1,7 +1,7 @@
+import { ChatMessage } from '@lobechat/types';
import { template } from 'lodash-es';
import { LOADING_FLAT } from '@/const/message';
-import { ChatMessage } from '@/types/message';
const markdownTemplate = template(
`<% messages.forEach(function(chat) { %>
diff --git a/src/features/Conversation/components/ShareMessageModal/index.tsx b/src/features/Conversation/components/ShareMessageModal/index.tsx
index 3d553fb3f1a..6d37a42067d 100644
--- a/src/features/Conversation/components/ShareMessageModal/index.tsx
+++ b/src/features/Conversation/components/ShareMessageModal/index.tsx
@@ -1,15 +1,15 @@
+import { ChatMessage } from '@lobechat/types';
import { Modal, Segmented, Tabs } from '@lobehub/ui';
import { memo, useId, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { Flexbox } from 'react-layout-kit';
import { isServerMode } from '@/const/version';
+import SharePdf from '@/features/ShareModal/SharePdf';
import { useIsMobile } from '@/hooks/useIsMobile';
-import { ChatMessage } from '@/types/message';
import ShareImage from './ShareImage';
import ShareText from './ShareText';
-import SharePdf from '@/features/ShareModal/SharePdf';
enum Tab {
PDF = 'pdf',
diff --git a/src/features/Conversation/types/index.ts b/src/features/Conversation/types/index.ts
index 571c3abc8e0..d56aa547108 100644
--- a/src/features/Conversation/types/index.ts
+++ b/src/features/Conversation/types/index.ts
@@ -1,8 +1,8 @@
+import { ChatMessage } from '@lobechat/types';
import { type ChatItemProps } from '@lobehub/ui/chat';
import { FC, ReactNode } from 'react';
import { LLMRoleType } from '@/types/llm';
-import { ChatMessage } from '@/types/message';
export type RenderRole = LLMRoleType | 'default' | 'history' | string;
export type RenderMessage = FC;
diff --git a/src/features/Portal/Home/Body/Files/FileList/Item.tsx b/src/features/Portal/Home/Body/Files/FileList/Item.tsx
index 8c70d354c7c..c05f6bc63c7 100644
--- a/src/features/Portal/Home/Body/Files/FileList/Item.tsx
+++ b/src/features/Portal/Home/Body/Files/FileList/Item.tsx
@@ -1,3 +1,4 @@
+import { ChatFileItem } from '@lobechat/types';
import { Text } from '@lobehub/ui';
import { createStyles } from 'antd-style';
import { memo } from 'react';
@@ -5,7 +6,6 @@ import { Flexbox } from 'react-layout-kit';
import FileIcon from '@/components/FileIcon';
import { useChatStore } from '@/store/chat';
-import { ChatFileItem } from '@/types/message';
import { formatSize } from '@/utils/format';
const useStyles = createStyles(({ css, token }) => ({
diff --git a/src/features/Portal/Home/Body/Plugins/ArtifactList/Item/index.tsx b/src/features/Portal/Home/Body/Plugins/ArtifactList/Item/index.tsx
index e18a712ea19..3033cdbdf86 100644
--- a/src/features/Portal/Home/Body/Plugins/ArtifactList/Item/index.tsx
+++ b/src/features/Portal/Home/Body/Plugins/ArtifactList/Item/index.tsx
@@ -1,3 +1,4 @@
+import { ChatPluginPayload } from '@lobechat/types';
import { Icon, Tag, Text } from '@lobehub/ui';
import isEqual from 'fast-deep-equal';
import { CircuitBoard } from 'lucide-react';
@@ -10,7 +11,6 @@ import { useYamlArguments } from '@/hooks/useYamlArguments';
import { useChatStore } from '@/store/chat';
import { pluginHelpers, useToolStore } from '@/store/tool';
import { toolSelectors } from '@/store/tool/selectors';
-import { ChatPluginPayload } from '@/types/message';
import { useStyles } from './style';
diff --git a/src/features/Portal/Thread/Chat/ChatInput/useSend.ts b/src/features/Portal/Thread/Chat/ChatInput/useSend.ts
index 2740fe80970..bf50649bd6a 100644
--- a/src/features/Portal/Thread/Chat/ChatInput/useSend.ts
+++ b/src/features/Portal/Thread/Chat/ChatInput/useSend.ts
@@ -1,3 +1,4 @@
+import { SendMessageParams } from '@lobechat/types';
import { useMemo, useState } from 'react';
import { useGeminiChineseWarning } from '@/hooks/useGeminiChineseWarning';
@@ -5,7 +6,6 @@ import { getAgentStoreState } from '@/store/agent';
import { agentSelectors } from '@/store/agent/slices/chat';
import { useChatStore } from '@/store/chat';
import { threadSelectors } from '@/store/chat/selectors';
-import { SendMessageParams } from '@/types/message';
export type UseSendMessageParams = Pick<
SendMessageParams,
diff --git a/src/features/ShareModal/ShareJSON/generateMessages.test.ts b/src/features/ShareModal/ShareJSON/generateMessages.test.ts
index 627f5d9391c..23f64d240ad 100644
--- a/src/features/ShareModal/ShareJSON/generateMessages.test.ts
+++ b/src/features/ShareModal/ShareJSON/generateMessages.test.ts
@@ -1,7 +1,7 @@
+import { ChatMessage } from '@lobechat/types';
import { describe, expect, it } from 'vitest';
import { LOADING_FLAT } from '@/const/message';
-import { ChatMessage } from '@/types/message';
import { generateMessages } from './generateMessages';
diff --git a/src/features/ShareModal/ShareJSON/generateMessages.ts b/src/features/ShareModal/ShareJSON/generateMessages.ts
index 4975a725527..5b2bb144d12 100644
--- a/src/features/ShareModal/ShareJSON/generateMessages.ts
+++ b/src/features/ShareModal/ShareJSON/generateMessages.ts
@@ -1,5 +1,6 @@
+import { ChatMessage } from '@lobechat/types';
+
import { LOADING_FLAT } from '@/const/message';
-import { ChatMessage } from '@/types/message';
import { FieldType } from './type';
diff --git a/src/features/ShareModal/SharePdf/index.tsx b/src/features/ShareModal/SharePdf/index.tsx
index eb48e3894bc..cd2a60c31a0 100644
--- a/src/features/ShareModal/SharePdf/index.tsx
+++ b/src/features/ShareModal/SharePdf/index.tsx
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { Button, Form, type FormItemProps } from '@lobehub/ui';
import { App, Switch } from 'antd';
import isEqual from 'fast-deep-equal';
@@ -18,7 +19,6 @@ import { FieldType } from '../ShareText/type';
import { useContainerStyles, useStyles } from '../style';
import PdfPreview from './PdfPreview';
import { usePdfGeneration } from './usePdfGeneration';
-import { ChatMessage } from '@/types/message';
const DEFAULT_FIELD_VALUE: FieldType = {
includeTool: true,
@@ -27,7 +27,7 @@ const DEFAULT_FIELD_VALUE: FieldType = {
withSystemRole: false,
};
-const SharePdf = memo((props: {message?: ChatMessage}) => {
+const SharePdf = memo((props: { message?: ChatMessage }) => {
const [fieldValue, setFieldValue] = useState(DEFAULT_FIELD_VALUE);
const { t } = useTranslation(['chat', 'common']);
const { styles } = useStyles();
diff --git a/src/features/ShareModal/ShareText/template.test.ts b/src/features/ShareModal/ShareText/template.test.ts
index 6466adef07f..5adf3048e3e 100644
--- a/src/features/ShareModal/ShareText/template.test.ts
+++ b/src/features/ShareModal/ShareText/template.test.ts
@@ -1,7 +1,7 @@
+import { ChatMessage } from '@lobechat/types';
import { describe, expect, it } from 'vitest';
import { LOADING_FLAT } from '@/const/message';
-import { ChatMessage } from '@/types/message';
import { generateMarkdown } from './template';
diff --git a/src/features/ShareModal/ShareText/template.ts b/src/features/ShareModal/ShareText/template.ts
index ba1d4689466..2b66bf64048 100644
--- a/src/features/ShareModal/ShareText/template.ts
+++ b/src/features/ShareModal/ShareText/template.ts
@@ -1,8 +1,8 @@
+import { ChatMessage } from '@lobechat/types';
import { template } from 'lodash-es';
import { LOADING_FLAT } from '@/const/message';
import { FieldType } from '@/features/ShareModal/ShareText/type';
-import { ChatMessage } from '@/types/message';
const markdownTemplate = template(
`# {{title}}
diff --git a/src/libs/langchain/loaders/code/__tests__/long.json b/src/libs/langchain/loaders/code/__tests__/long.json
index b0c97257e89..cea53cd543d 100644
--- a/src/libs/langchain/loaders/code/__tests__/long.json
+++ b/src/libs/langchain/loaders/code/__tests__/long.json
@@ -8,7 +8,7 @@
"metadata": { "loc": { "lines": { "from": 8, "to": 22 } } }
},
{
- "pageContent": "import { traceService } from '@/services/trace';\nimport { useAgentStore } from '@/store/agent';\nimport { agentSelectors } from '@/store/agent/selectors';\nimport { chatHelpers } from '@/store/chat/helpers';\nimport { messageMapKey } from '@/store/chat/slices/message/utils';\nimport { ChatStore } from '@/store/chat/store';\nimport { useSessionStore } from '@/store/session';\nimport { UploadFileItem } from '@/types/files/upload';\nimport {\n ChatMessage,\n ChatMessageError,\n CreateMessageParams,\n MessageToolCall,\n} from '@/types/message';\nimport { TraceEventPayloads } from '@/types/trace';\nimport { setNamespace } from '@/utils/storeDebug';\nimport { nanoid } from '@/utils/uuid';",
+ "pageContent": "import { traceService } from '@/services/trace';\nimport { useAgentStore } from '@/store/agent';\nimport { agentSelectors } from '@/store/agent/selectors';\nimport { chatHelpers } from '@/store/chat/helpers';\nimport { messageMapKey } from '@/store/chat/slices/message/utils';\nimport { ChatStore } from '@/store/chat/store';\nimport { useSessionStore } from '@/store/session';\nimport { UploadFileItem } from '@/types/files/upload';\nimport {\n ChatMessage,\n ChatMessageError,\n CreateMessageParams,\n MessageToolCall,\n} from '@lobechat/types';\nimport { TraceEventPayloads } from '@/types/trace';\nimport { setNamespace } from '@/utils/storeDebug';\nimport { nanoid } from '@/utils/uuid';",
"metadata": { "loc": { "lines": { "from": 16, "to": 32 } } }
},
{
diff --git a/src/libs/langchain/loaders/code/__tests__/long.txt b/src/libs/langchain/loaders/code/__tests__/long.txt
index d161ba9c6a4..4dc13a1987c 100644
--- a/src/libs/langchain/loaders/code/__tests__/long.txt
+++ b/src/libs/langchain/loaders/code/__tests__/long.txt
@@ -26,7 +26,7 @@ import {
ChatMessageError,
CreateMessageParams,
MessageToolCall,
-} from '@/types/message';
+} from '@lobechat/types';
import { TraceEventPayloads } from '@/types/trace';
import { setNamespace } from '@/utils/storeDebug';
import { nanoid } from '@/utils/uuid';
diff --git a/src/server/routers/lambda/__tests__/message.test.ts b/src/server/routers/lambda/__tests__/message.test.ts
index 1abc8e4922b..46635d204ed 100644
--- a/src/server/routers/lambda/__tests__/message.test.ts
+++ b/src/server/routers/lambda/__tests__/message.test.ts
@@ -1,9 +1,8 @@
+import { ChatMessage, CreateMessageParams, UpdateMessageRAGParams } from '@lobechat/types';
import { describe, expect, it, vi } from 'vitest';
import { MessageModel } from '@/database/models/message';
import { FileService } from '@/server/services/file';
-import { ChatMessage, CreateMessageParams } from '@/types/message';
-import { UpdateMessageRAGParams } from '@/types/message/rag';
vi.mock('@/database/models/message', () => ({
MessageModel: vi.fn(),
diff --git a/src/server/routers/lambda/message.ts b/src/server/routers/lambda/message.ts
index 8bf64f967f7..d894e8406bb 100644
--- a/src/server/routers/lambda/message.ts
+++ b/src/server/routers/lambda/message.ts
@@ -1,3 +1,4 @@
+import { BatchTaskResult, ChatMessage, UpdateMessageRAGParamsSchema } from '@lobechat/types';
import { z } from 'zod';
import { MessageModel } from '@/database/models/message';
@@ -6,9 +7,6 @@ import { getServerDB } from '@/database/server';
import { authedProcedure, publicProcedure, router } from '@/libs/trpc/lambda';
import { serverDatabase } from '@/libs/trpc/lambda/middleware';
import { FileService } from '@/server/services/file';
-import { ChatMessage } from '@/types/message';
-import { UpdateMessageRAGParamsSchema } from '@/types/message/rag';
-import { BatchTaskResult } from '@/types/service';
type ChatMessageList = ChatMessage[];
diff --git a/src/services/chat/chat.test.ts b/src/services/chat/chat.test.ts
index b62701a48bc..262a0708ebf 100644
--- a/src/services/chat/chat.test.ts
+++ b/src/services/chat/chat.test.ts
@@ -1,4 +1,5 @@
import { LobeTool } from '@lobechat/types';
+import { ChatImageItem, ChatMessage } from '@lobechat/types';
import { LobeChatPluginManifest } from '@lobehub/chat-plugin-sdk';
import { act } from '@testing-library/react';
import { type Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
@@ -15,7 +16,6 @@ import { modelProviderSelectors } from '@/store/user/selectors';
import { DalleManifest } from '@/tools/dalle';
import { WebBrowsingManifest } from '@/tools/web-browsing';
import { ChatErrorType } from '@/types/index';
-import { ChatImageItem, ChatMessage } from '@/types/message';
import { ChatStreamPayload, type OpenAIChatMessage } from '@/types/openai/chat';
import { API_ENDPOINTS } from '../_url';
diff --git a/src/services/chat/index.ts b/src/services/chat/index.ts
index 23bbf50c1e8..3c7f47133f0 100644
--- a/src/services/chat/index.ts
+++ b/src/services/chat/index.ts
@@ -1,5 +1,5 @@
import { AgentRuntimeError, ChatCompletionErrorPayload } from '@lobechat/model-runtime';
-import { ChatErrorType, TracePayload, TraceTagMap } from '@lobechat/types';
+import { ChatErrorType, TracePayload, TraceTagMap , ChatMessage } from '@lobechat/types';
import { PluginRequestPayload, createHeadersWithPluginSettings } from '@lobehub/chat-plugin-sdk';
import { merge } from 'lodash-es';
import { ModelProvider } from 'model-bank';
@@ -22,11 +22,8 @@ import {
userGeneralSettingsSelectors,
userProfileSelectors,
} from '@/store/user/selectors';
-import { ChatMessage } from '@/types/message';
import type { ChatStreamPayload, OpenAIChatMessage } from '@/types/openai/chat';
-import {
- fetchWithInvokeStream,
-} from '@/utils/electron/desktopRemoteRPCFetch';
+import { fetchWithInvokeStream } from '@/utils/electron/desktopRemoteRPCFetch';
import { createErrorResponse } from '@/utils/errorResponse';
import {
FetchSSEOptions,
@@ -279,7 +276,7 @@ class ChatService {
if (payload.top_p === null) payload.top_p = undefined;
if (payload.presence_penalty === null) payload.presence_penalty = undefined;
if (payload.frequency_penalty === null) payload.frequency_penalty = undefined;
-
+
const sdkType = resolveRuntimeProvider(provider);
/**
diff --git a/src/services/message/_deprecated.test.ts b/src/services/message/_deprecated.test.ts
index 5d1a0018d0c..4c8a69f2cd8 100644
--- a/src/services/message/_deprecated.test.ts
+++ b/src/services/message/_deprecated.test.ts
@@ -1,14 +1,14 @@
-import dayjs from 'dayjs';
-import { Mock, describe, expect, it, vi } from 'vitest';
-
-import { CreateMessageParams, MessageModel } from '@/database/_deprecated/models/message';
import {
ChatMessage,
ChatMessageError,
ChatPluginPayload,
ChatTTS,
ChatTranslate,
-} from '@/types/message';
+} from '@lobechat/types';
+import dayjs from 'dayjs';
+import { Mock, describe, expect, it, vi } from 'vitest';
+
+import { CreateMessageParams, MessageModel } from '@/database/_deprecated/models/message';
import { ClientService } from './_deprecated';
diff --git a/src/services/message/_deprecated.ts b/src/services/message/_deprecated.ts
index 77c815452f3..b62deb89240 100644
--- a/src/services/message/_deprecated.ts
+++ b/src/services/message/_deprecated.ts
@@ -1,8 +1,3 @@
-import dayjs from 'dayjs';
-
-import { FileModel } from '@/database/_deprecated/models/file';
-import { MessageModel } from '@/database/_deprecated/models/message';
-import { DB_Message } from '@/database/_deprecated/schemas/message';
import {
ChatFileItem,
ChatMessage,
@@ -11,7 +6,12 @@ import {
ChatTranslate,
CreateMessageParams,
ModelRankItem,
-} from '@/types/message';
+} from '@lobechat/types';
+import dayjs from 'dayjs';
+
+import { FileModel } from '@/database/_deprecated/models/file';
+import { MessageModel } from '@/database/_deprecated/models/message';
+import { DB_Message } from '@/database/_deprecated/schemas/message';
import { IMessageService } from './type';
diff --git a/src/services/message/client.test.ts b/src/services/message/client.test.ts
index 102993742d2..c8c9ea153de 100644
--- a/src/services/message/client.test.ts
+++ b/src/services/message/client.test.ts
@@ -1,3 +1,11 @@
+import {
+ ChatMessage,
+ ChatMessageError,
+ ChatTTS,
+ ChatTranslate,
+ CreateMessageParams,
+ MessageItem,
+} from '@lobechat/types';
import { and, eq } from 'drizzle-orm';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
@@ -12,14 +20,6 @@ import {
topics,
users,
} from '@/database/schemas';
-import {
- ChatMessage,
- ChatMessageError,
- ChatTTS,
- ChatTranslate,
- CreateMessageParams,
- MessageItem,
-} from '@/types/message';
import { ClientService } from './client';
diff --git a/src/services/message/client.ts b/src/services/message/client.ts
index 8fb107b0e79..0f8fee467e0 100644
--- a/src/services/message/client.ts
+++ b/src/services/message/client.ts
@@ -1,9 +1,10 @@
+import { ChatMessage } from '@lobechat/types';
+
import { INBOX_SESSION_ID } from '@/const/session';
import { clientDB } from '@/database/client/db';
import { MessageModel } from '@/database/models/message';
import { BaseClientService } from '@/services/baseClientService';
import { clientS3Storage } from '@/services/file/ClientS3';
-import { ChatMessage } from '@/types/message';
import { IMessageService } from './type';
diff --git a/src/services/message/server.ts b/src/services/message/server.ts
index 7b4b0408f21..94e2d1416e1 100644
--- a/src/services/message/server.ts
+++ b/src/services/message/server.ts
@@ -1,7 +1,8 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
+import { ChatMessage, ChatTranslate } from '@lobechat/types';
+
import { INBOX_SESSION_ID } from '@/const/session';
import { lambdaClient } from '@/libs/trpc/client';
-import { ChatMessage, ChatTranslate } from '@/types/message';
import { IMessageService } from './type';
diff --git a/src/services/message/type.ts b/src/services/message/type.ts
index 480f000bd5a..64fee3df43b 100644
--- a/src/services/message/type.ts
+++ b/src/services/message/type.ts
@@ -1,5 +1,3 @@
-import type { HeatmapsProps } from '@lobehub/charts';
-
import {
ChatMessage,
ChatMessageError,
@@ -10,8 +8,9 @@ import {
MessageItem,
ModelRankItem,
UpdateMessageParams,
-} from '@/types/message';
-import { UpdateMessageRAGParams } from '@/types/message/rag';
+ UpdateMessageRAGParams,
+} from '@lobechat/types';
+import type { HeatmapsProps } from '@lobehub/charts';
/* eslint-disable typescript-sort-keys/interface */
diff --git a/src/services/thread/type.ts b/src/services/thread/type.ts
index d4ade28f355..cd070c977a5 100644
--- a/src/services/thread/type.ts
+++ b/src/services/thread/type.ts
@@ -1,5 +1,6 @@
/* eslint-disable typescript-sort-keys/interface */
-import { CreateMessageParams } from '@/types/message';
+import { CreateMessageParams } from '@lobechat/types';
+
import { CreateThreadParams, ThreadItem } from '@/types/topic';
interface CreateThreadWithMessageParams extends CreateThreadParams {
diff --git a/src/store/chat/helpers.test.ts b/src/store/chat/helpers.test.ts
index 4e179eaf879..3f8c3ac28ce 100644
--- a/src/store/chat/helpers.test.ts
+++ b/src/store/chat/helpers.test.ts
@@ -1,7 +1,7 @@
+import { ChatMessage } from '@lobechat/types';
import { describe, expect, it, vi } from 'vitest';
import { LobeAgentChatConfig, LobeAgentConfig } from '@/types/agent';
-import { ChatMessage } from '@/types/message';
import { OpenAIChatMessage } from '@/types/openai/chat';
import { encodeAsync } from '@/utils/tokenizer';
import * as tokenizerObj from '@/utils/tokenizer';
diff --git a/src/store/chat/helpers.ts b/src/store/chat/helpers.ts
index 9813bf44766..58558f3602d 100644
--- a/src/store/chat/helpers.ts
+++ b/src/store/chat/helpers.ts
@@ -1,4 +1,5 @@
-import { ChatMessage } from '@/types/message';
+import { ChatMessage } from '@lobechat/types';
+
import { OpenAIChatMessage } from '@/types/openai/chat';
import { encodeAsync } from '@/utils/tokenizer';
diff --git a/src/store/chat/slices/aiChat/actions/__tests__/fixtures.ts b/src/store/chat/slices/aiChat/actions/__tests__/fixtures.ts
index 879faf6c1fc..ca57e3fca7e 100644
--- a/src/store/chat/slices/aiChat/actions/__tests__/fixtures.ts
+++ b/src/store/chat/slices/aiChat/actions/__tests__/fixtures.ts
@@ -1,5 +1,6 @@
+import { ChatMessage } from '@lobechat/types';
+
import { DEFAULT_AGENT_CHAT_CONFIG, DEFAULT_AGENT_CONFIG } from '@/const/settings';
-import { ChatMessage } from '@/types/message';
// Test Constants
export const TEST_IDS = {
diff --git a/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts b/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts
index e0e9b5617a2..f9795ff1c8e 100644
--- a/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts
+++ b/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { act, renderHook } from '@testing-library/react';
import { TRPCClientError } from '@trpc/client';
import { Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
@@ -7,14 +8,13 @@ import { DEFAULT_AGENT_CHAT_CONFIG, DEFAULT_MODEL, DEFAULT_PROVIDER } from '@/co
import { aiChatService } from '@/services/aiChat';
import { chatService } from '@/services/chat';
import { messageService } from '@/services/message';
+import { agentChatConfigSelectors } from '@/store/agent/selectors';
import { UploadFileItem } from '@/types/files/upload';
-import { ChatMessage } from '@/types/message';
import { useChatStore } from '../../../../store';
import { messageMapKey } from '../../../../utils/messageMapKey';
import { TEST_CONTENT, TEST_IDS, createMockStoreState } from './fixtures';
import { resetTestEnvironment, setupMockSelectors, spyOnMessageService } from './helpers';
-import { agentChatConfigSelectors } from '@/store/agent/selectors';
// Keep zustand mock as it's needed globally
vi.mock('zustand/traditional');
@@ -587,7 +587,7 @@ describe('generateAIChatV2 actions', () => {
expect(
result.current.mainSendMessageOperations[
- messageMapKey(TEST_IDS.SESSION_ID, TEST_IDS.TOPIC_ID)
+ messageMapKey(TEST_IDS.SESSION_ID, TEST_IDS.TOPIC_ID)
],
).toBeUndefined();
});
diff --git a/src/store/chat/slices/aiChat/actions/__tests__/rag.test.ts b/src/store/chat/slices/aiChat/actions/__tests__/rag.test.ts
index 0104a83ae89..a29203142a5 100644
--- a/src/store/chat/slices/aiChat/actions/__tests__/rag.test.ts
+++ b/src/store/chat/slices/aiChat/actions/__tests__/rag.test.ts
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { act, renderHook } from '@testing-library/react';
import { Mock, beforeEach, describe, expect, it, vi } from 'vitest';
@@ -7,7 +8,6 @@ import { useAgentStore } from '@/store/agent';
import { agentSelectors } from '@/store/agent/selectors';
import { chatSelectors } from '@/store/chat/selectors';
import { systemAgentSelectors } from '@/store/user/selectors';
-import { ChatMessage } from '@/types/message';
import { QueryRewriteSystemAgent } from '@/types/user/settings';
import { useChatStore } from '../../../../store';
diff --git a/src/store/chat/slices/aiChat/actions/generateAIChat.ts b/src/store/chat/slices/aiChat/actions/generateAIChat.ts
index 33d7d1289d0..47ae00b8b89 100644
--- a/src/store/chat/slices/aiChat/actions/generateAIChat.ts
+++ b/src/store/chat/slices/aiChat/actions/generateAIChat.ts
@@ -1,13 +1,20 @@
/* eslint-disable sort-keys-fix/sort-keys-fix, typescript-sort-keys/interface */
// Disable the auto sort key eslint rule to make the code more logic and readable
+import { LOADING_FLAT, MESSAGE_CANCEL_FLAT, isDesktop, isServerMode } from '@lobechat/const';
import { knowledgeBaseQAPrompts } from '@lobechat/prompts';
-import { TraceEventType, TraceNameMap } from '@lobechat/types';
+import {
+ ChatImageItem,
+ ChatMessage,
+ CreateMessageParams,
+ MessageSemanticSearchChunk,
+ SendMessageParams,
+ TraceEventType,
+ TraceNameMap,
+} from '@lobechat/types';
import { t } from 'i18next';
import { produce } from 'immer';
import { StateCreator } from 'zustand/vanilla';
-import { LOADING_FLAT, MESSAGE_CANCEL_FLAT } from '@/const/message';
-import { isDesktop, isServerMode } from '@/const/version';
import { chatService } from '@/services/chat';
import { messageService } from '@/services/message';
import { useAgentStore } from '@/store/agent';
@@ -20,9 +27,6 @@ import { messageMapKey } from '@/store/chat/utils/messageMapKey';
import { getFileStoreState } from '@/store/file/store';
import { useSessionStore } from '@/store/session';
import { WebBrowsingManifest } from '@/tools/web-browsing';
-import { ChatMessage, CreateMessageParams, SendMessageParams } from '@/types/message';
-import { ChatImageItem } from '@/types/message/image';
-import { MessageSemanticSearchChunk } from '@/types/rag';
import { Action, setNamespace } from '@/utils/storeDebug';
import { chatSelectors, topicSelectors } from '../../../selectors';
@@ -394,7 +398,8 @@ export const generateAIChat: StateCreator<
)(aiInfraStoreState);
const useModelBuiltinSearch = agentChatConfigSelectors.useModelBuiltinSearch(agentStoreState);
const useModelSearch =
- ((isProviderHasBuiltinSearch || isModelHasBuiltinSearch) && useModelBuiltinSearch) || isModelBuiltinSearchInternal;
+ ((isProviderHasBuiltinSearch || isModelHasBuiltinSearch) && useModelBuiltinSearch) ||
+ isModelBuiltinSearchInternal;
const isAgentEnableSearch = agentChatConfigSelectors.isAgentEnableSearch(agentStoreState);
if (isAgentEnableSearch && !useModelSearch && !isModelSupportToolUse) {
diff --git a/src/store/chat/slices/aiChat/actions/generateAIChatV2.ts b/src/store/chat/slices/aiChat/actions/generateAIChatV2.ts
index 1e4f72161a3..12e0eb20845 100644
--- a/src/store/chat/slices/aiChat/actions/generateAIChatV2.ts
+++ b/src/store/chat/slices/aiChat/actions/generateAIChatV2.ts
@@ -1,10 +1,12 @@
/* eslint-disable sort-keys-fix/sort-keys-fix, typescript-sort-keys/interface */
// Disable the auto sort key eslint rule to make the code more logic and readable
-import { INBOX_SESSION_ID, isDesktop } from '@lobechat/const';
+import { DEFAULT_AGENT_CHAT_CONFIG, INBOX_SESSION_ID, isDesktop } from '@lobechat/const';
import { knowledgeBaseQAPrompts } from '@lobechat/prompts';
import {
+ ChatImageItem,
ChatMessage,
ChatTopic,
+ ChatVideoItem,
MessageSemanticSearchChunk,
SendMessageParams,
SendMessageServerResponse,
@@ -15,7 +17,6 @@ import { t } from 'i18next';
import { produce } from 'immer';
import { StateCreator } from 'zustand/vanilla';
-import { DEFAULT_AGENT_CHAT_CONFIG } from '@/const/settings';
import { aiChatService } from '@/services/aiChat';
import { chatService } from '@/services/chat';
import { messageService } from '@/services/message';
@@ -27,8 +28,6 @@ import type { ChatStore } from '@/store/chat/store';
import { getFileStoreState } from '@/store/file/store';
import { getSessionStoreState } from '@/store/session';
import { WebBrowsingManifest } from '@/tools/web-browsing';
-import { ChatImageItem } from '@/types/message/image';
-import { ChatVideoItem } from '@/types/message/video';
import { setNamespace } from '@/utils/storeDebug';
import { chatSelectors, topicSelectors } from '../../../selectors';
diff --git a/src/store/chat/slices/aiChat/actions/generateAIGroupChat.ts b/src/store/chat/slices/aiChat/actions/generateAIGroupChat.ts
index bde7626ea13..4c9857719c8 100644
--- a/src/store/chat/slices/aiChat/actions/generateAIGroupChat.ts
+++ b/src/store/chat/slices/aiChat/actions/generateAIGroupChat.ts
@@ -5,6 +5,7 @@ import {
buildGroupChatSystemPrompt,
filterMessagesForAgent,
} from '@lobechat/prompts';
+import { ChatMessage, CreateMessageParams, SendGroupMessageParams } from '@lobechat/types';
import { produce } from 'immer';
import { StateCreator } from 'zustand/vanilla';
@@ -17,7 +18,6 @@ import { sessionSelectors } from '@/store/session/selectors';
import { userProfileSelectors } from '@/store/user/selectors';
import { getUserStoreState } from '@/store/user/store';
import { ChatErrorType } from '@/types/fetch';
-import { ChatMessage, CreateMessageParams, SendGroupMessageParams } from '@/types/message';
import { merge } from '@/utils/merge';
import { setNamespace } from '@/utils/storeDebug';
diff --git a/src/store/chat/slices/aiChat/actions/memory.ts b/src/store/chat/slices/aiChat/actions/memory.ts
index 25ff60ac0f9..cf047febbdf 100644
--- a/src/store/chat/slices/aiChat/actions/memory.ts
+++ b/src/store/chat/slices/aiChat/actions/memory.ts
@@ -1,5 +1,5 @@
import { chainSummaryHistory } from '@lobechat/prompts';
-import { TraceNameMap } from '@lobechat/types';
+import { TraceNameMap , ChatMessage } from '@lobechat/types';
import { StateCreator } from 'zustand/vanilla';
import { chatService } from '@/services/chat';
@@ -7,7 +7,6 @@ import { topicService } from '@/services/topic';
import { ChatStore } from '@/store/chat';
import { useUserStore } from '@/store/user';
import { systemAgentSelectors } from '@/store/user/selectors';
-import { ChatMessage } from '@/types/message';
export interface ChatMemoryAction {
internal_summaryHistory: (messages: ChatMessage[]) => Promise;
diff --git a/src/store/chat/slices/builtinTool/actions/__tests__/search.test.ts b/src/store/chat/slices/builtinTool/actions/__tests__/search.test.ts
index c400fe18727..641e7fae552 100644
--- a/src/store/chat/slices/builtinTool/actions/__tests__/search.test.ts
+++ b/src/store/chat/slices/builtinTool/actions/__tests__/search.test.ts
@@ -1,5 +1,6 @@
import { crawlResultsPrompt, searchResultsPrompt } from '@lobechat/prompts';
import { SearchContent, SearchQuery, UniformSearchResponse } from '@lobechat/types';
+import { ChatMessage } from '@lobechat/types';
import { act, renderHook } from '@testing-library/react';
import { Mock, beforeEach, describe, expect, it, vi } from 'vitest';
@@ -7,7 +8,6 @@ import { searchService } from '@/services/search';
import { useChatStore } from '@/store/chat';
import { chatSelectors } from '@/store/chat/selectors';
import { CRAWL_CONTENT_LIMITED_COUNT } from '@/tools/web-browsing/const';
-import { ChatMessage } from '@/types/message';
// Mock services
vi.mock('@/services/search', () => ({
diff --git a/src/store/chat/slices/message/action.test.ts b/src/store/chat/slices/message/action.test.ts
index fe0c687b3a5..b17f961e135 100644
--- a/src/store/chat/slices/message/action.test.ts
+++ b/src/store/chat/slices/message/action.test.ts
@@ -1,4 +1,5 @@
import { TraceEventType } from '@lobechat/types';
+import { ChatMessage } from '@lobechat/types';
import * as lobeUIModules from '@lobehub/ui';
import { act, renderHook, waitFor } from '@testing-library/react';
import { mutate } from 'swr';
@@ -7,7 +8,6 @@ import { Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { messageService } from '@/services/message';
import { topicService } from '@/services/topic';
import { messageMapKey } from '@/store/chat/utils/messageMapKey';
-import { ChatMessage } from '@/types/message';
import { useChatStore } from '../../store';
diff --git a/src/store/chat/slices/message/action.ts b/src/store/chat/slices/message/action.ts
index b9ee51ea9d7..c792883cad1 100644
--- a/src/store/chat/slices/message/action.ts
+++ b/src/store/chat/slices/message/action.ts
@@ -1,6 +1,21 @@
/* eslint-disable sort-keys-fix/sort-keys-fix, typescript-sort-keys/interface */
// Disable the auto sort key eslint rule to make the code more logic and readable
-import { ChatErrorType, TraceEventType } from '@lobechat/types';
+import {
+ ChatErrorType,
+ ChatImageItem,
+ ChatMessage,
+ ChatMessageError,
+ ChatMessagePluginError,
+ CreateMessageParams,
+ GroundingSearch,
+ MessageMetadata,
+ MessageToolCall,
+ ModelReasoning,
+ TraceEventPayloads,
+ TraceEventType,
+ UpdateMessageRAGParams,
+} from '@lobechat/types';
+import { nanoid } from '@lobechat/utils';
import { copyToClipboard } from '@lobehub/ui';
import isEqual from 'fast-deep-equal';
import { SWRResponse, mutate } from 'swr';
@@ -14,21 +29,7 @@ import { ChatStore } from '@/store/chat/store';
import { messageMapKey } from '@/store/chat/utils/messageMapKey';
import { useSessionStore } from '@/store/session';
import { sessionSelectors } from '@/store/session/selectors';
-import {
- ChatMessage,
- ChatMessageError,
- ChatMessagePluginError,
- CreateMessageParams,
- MessageMetadata,
- MessageToolCall,
- ModelReasoning,
-} from '@/types/message';
-import { ChatImageItem } from '@/types/message/image';
-import { UpdateMessageRAGParams } from '@/types/message/rag';
-import { GroundingSearch } from '@/types/search';
-import { TraceEventPayloads } from '@/types/trace';
import { Action, setNamespace } from '@/utils/storeDebug';
-import { nanoid } from '@/utils/uuid';
import type { ChatStoreState } from '../../initialState';
import { chatSelectors } from '../../selectors';
diff --git a/src/store/chat/slices/message/initialState.ts b/src/store/chat/slices/message/initialState.ts
index af059c6b88b..76718814d26 100644
--- a/src/store/chat/slices/message/initialState.ts
+++ b/src/store/chat/slices/message/initialState.ts
@@ -1,5 +1,6 @@
+import { ChatMessage } from '@lobechat/types';
+
import { ChatGroupAgentItem, ChatGroupItem } from '@/database/schemas/chatGroup';
-import { ChatMessage } from '@/types/message';
import type { SupervisorTodoItem } from './supervisor';
diff --git a/src/store/chat/slices/message/reducer.test.ts b/src/store/chat/slices/message/reducer.test.ts
index abe1c0445a7..23732091d81 100644
--- a/src/store/chat/slices/message/reducer.test.ts
+++ b/src/store/chat/slices/message/reducer.test.ts
@@ -1,4 +1,4 @@
-import { ChatMessage, ChatToolPayload } from '@/types/message';
+import { ChatMessage, ChatToolPayload } from '@lobechat/types';
import { MessageDispatch, messagesReducer } from './reducer';
diff --git a/src/store/chat/slices/message/reducer.ts b/src/store/chat/slices/message/reducer.ts
index d75d8d6bcf4..4a09e504393 100644
--- a/src/store/chat/slices/message/reducer.ts
+++ b/src/store/chat/slices/message/reducer.ts
@@ -1,13 +1,13 @@
-import isEqual from 'fast-deep-equal';
-import { produce } from 'immer';
-
import {
ChatMessage,
ChatMessageExtra,
ChatPluginPayload,
ChatToolPayload,
CreateMessageParams,
-} from '@/types/message';
+} from '@lobechat/types';
+import isEqual from 'fast-deep-equal';
+import { produce } from 'immer';
+
import { merge } from '@/utils/merge';
interface UpdateMessages {
diff --git a/src/store/chat/slices/message/selectors.test.ts b/src/store/chat/slices/message/selectors.test.ts
index 9615ad63dbd..ee6c6f7a0f4 100644
--- a/src/store/chat/slices/message/selectors.test.ts
+++ b/src/store/chat/slices/message/selectors.test.ts
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { act } from '@testing-library/react';
import { describe, expect, it } from 'vitest';
@@ -9,7 +10,6 @@ import { initialState } from '@/store/chat/initialState';
import { messageMapKey } from '@/store/chat/utils/messageMapKey';
import { createServerConfigStore } from '@/store/serverConfig/store';
import { LobeAgentConfig } from '@/types/agent';
-import { ChatMessage } from '@/types/message';
import { merge } from '@/utils/merge';
import { chatSelectors } from './selectors';
diff --git a/src/store/chat/slices/message/selectors.ts b/src/store/chat/slices/message/selectors.ts
index e76928ada0f..ed694ac2fa6 100644
--- a/src/store/chat/slices/message/selectors.ts
+++ b/src/store/chat/slices/message/selectors.ts
@@ -1,3 +1,5 @@
+import { ChatFileItem, ChatMessage } from '@lobechat/types';
+
import { DEFAULT_USER_AVATAR } from '@/const/meta';
import { INBOX_SESSION_ID } from '@/const/session';
import { useAgentStore } from '@/store/agent';
@@ -7,7 +9,6 @@ import { useSessionStore } from '@/store/session';
import { sessionMetaSelectors } from '@/store/session/selectors';
import { useUserStore } from '@/store/user';
import { userProfileSelectors } from '@/store/user/selectors';
-import { ChatFileItem, ChatMessage } from '@/types/message';
import { chatHelpers } from '../../helpers';
import type { ChatStoreState } from '../../initialState';
diff --git a/src/store/chat/slices/plugin/action.test.ts b/src/store/chat/slices/plugin/action.test.ts
index 1517c976004..f8d1a0eb2fd 100644
--- a/src/store/chat/slices/plugin/action.test.ts
+++ b/src/store/chat/slices/plugin/action.test.ts
@@ -1,4 +1,5 @@
import { ToolNameResolver } from '@lobechat/context-engine';
+import { ChatMessage, ChatToolPayload, MessageToolCall } from '@lobechat/types';
import { act, renderHook } from '@testing-library/react';
import { Mock, afterEach, describe, expect, it, vi } from 'vitest';
@@ -11,7 +12,6 @@ import { chatSelectors } from '@/store/chat/selectors';
import { useChatStore } from '@/store/chat/store';
import { messageMapKey } from '@/store/chat/utils/messageMapKey';
import { useToolStore } from '@/store/tool';
-import { ChatMessage, ChatToolPayload, MessageToolCall } from '@/types/message';
const invokeStandaloneTypePlugin = useChatStore.getState().invokeStandaloneTypePlugin;
diff --git a/src/store/chat/slices/plugin/action.ts b/src/store/chat/slices/plugin/action.ts
index 711bad152b4..06690013d9f 100644
--- a/src/store/chat/slices/plugin/action.ts
+++ b/src/store/chat/slices/plugin/action.ts
@@ -1,6 +1,13 @@
/* eslint-disable sort-keys-fix/sort-keys-fix, typescript-sort-keys/interface */
import { ToolNameResolver } from '@lobechat/context-engine';
-import { ChatErrorType } from '@lobechat/types';
+import { ChatErrorType ,
+ ChatMessage,
+ ChatMessageError,
+ ChatToolPayload,
+ CreateMessageParams,
+ MessageToolCall,
+ ToolsCallingContext,
+} from '@lobechat/types';
import { LobeChatPluginManifest, PluginErrorType } from '@lobehub/chat-plugin-sdk';
import isEqual from 'fast-deep-equal';
import { t } from 'i18next';
@@ -14,14 +21,6 @@ import { ChatStore } from '@/store/chat/store';
import { useToolStore } from '@/store/tool';
import { pluginSelectors } from '@/store/tool/selectors';
import { builtinTools } from '@/tools';
-import {
- ChatMessage,
- ChatMessageError,
- ChatToolPayload,
- CreateMessageParams,
- MessageToolCall,
- ToolsCallingContext,
-} from '@/types/message';
import { merge } from '@/utils/merge';
import { safeParseJSON } from '@/utils/safeParseJSON';
import { setNamespace } from '@/utils/storeDebug';
diff --git a/src/store/chat/slices/portal/selectors.test.ts b/src/store/chat/slices/portal/selectors.test.ts
index f8be90532d5..a05742dcf21 100644
--- a/src/store/chat/slices/portal/selectors.test.ts
+++ b/src/store/chat/slices/portal/selectors.test.ts
@@ -1,7 +1,7 @@
+import { ChatMessage } from '@lobechat/types';
import { describe, expect, it } from 'vitest';
import type { ChatStoreState } from '@/store/chat';
-import { ChatMessage } from '@/types/message';
import { chatPortalSelectors } from './selectors';
diff --git a/src/store/chat/slices/share/action.test.ts b/src/store/chat/slices/share/action.test.ts
index 7a1d4cf8413..a58d383db59 100644
--- a/src/store/chat/slices/share/action.test.ts
+++ b/src/store/chat/slices/share/action.test.ts
@@ -1,10 +1,10 @@
+import { ChatMessage } from '@lobechat/types';
import { act, renderHook } from '@testing-library/react';
import { DEFAULT_USER_AVATAR_URL } from '@/const/meta';
import { shareService } from '@/services/share';
import { useChatStore } from '@/store/chat';
import { messageMapKey } from '@/store/chat/utils/messageMapKey';
-import { ChatMessage } from '@/types/message';
afterEach(() => {
vi.restoreAllMocks();
diff --git a/src/store/chat/slices/thread/action.test.ts b/src/store/chat/slices/thread/action.test.ts
index 13c0c6dcad9..5df2d3848fc 100644
--- a/src/store/chat/slices/thread/action.test.ts
+++ b/src/store/chat/slices/thread/action.test.ts
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { act, renderHook, waitFor } from '@testing-library/react';
import { mutate } from 'swr';
import { Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
@@ -7,7 +8,6 @@ import { chatService } from '@/services/chat';
import { threadService } from '@/services/thread';
import { messageMapKey } from '@/store/chat/utils/messageMapKey';
import { useSessionStore } from '@/store/session';
-import { ChatMessage } from '@/types/message';
import { ThreadItem, ThreadStatus, ThreadType } from '@/types/topic';
import { useChatStore } from '../../store';
diff --git a/src/store/chat/slices/thread/action.ts b/src/store/chat/slices/thread/action.ts
index b883754ddaf..8c35a8e01d6 100644
--- a/src/store/chat/slices/thread/action.ts
+++ b/src/store/chat/slices/thread/action.ts
@@ -1,6 +1,7 @@
/* eslint-disable sort-keys-fix/sort-keys-fix, typescript-sort-keys/interface */
// Disable the auto sort key eslint rule to make the code more logic and readable
import { chainSummaryTitle } from '@lobechat/prompts';
+import { ChatMessage, CreateMessageParams, SendThreadMessageParams } from '@lobechat/types';
import isEqual from 'fast-deep-equal';
import { SWRResponse, mutate } from 'swr';
import { StateCreator } from 'zustand/vanilla';
@@ -16,7 +17,6 @@ import { globalHelpers } from '@/store/global/helpers';
import { useSessionStore } from '@/store/session';
import { useUserStore } from '@/store/user';
import { systemAgentSelectors } from '@/store/user/selectors';
-import { ChatMessage, CreateMessageParams, SendThreadMessageParams } from '@/types/message';
import { ThreadItem, ThreadType } from '@/types/topic';
import { merge } from '@/utils/merge';
import { setNamespace } from '@/utils/storeDebug';
diff --git a/src/store/chat/slices/thread/selectors/index.ts b/src/store/chat/slices/thread/selectors/index.ts
index 6c11ed82ab0..c51fff9cf2c 100644
--- a/src/store/chat/slices/thread/selectors/index.ts
+++ b/src/store/chat/slices/thread/selectors/index.ts
@@ -1,9 +1,10 @@
+import { ChatMessage } from '@lobechat/types';
+
import { THREAD_DRAFT_ID } from '@/const/message';
import { useAgentStore } from '@/store/agent';
import { agentChatConfigSelectors } from '@/store/agent/selectors';
import type { ChatStoreState } from '@/store/chat';
import { chatHelpers } from '@/store/chat/helpers';
-import { ChatMessage } from '@/types/message';
import { ThreadItem } from '@/types/topic';
import { chatSelectors } from '../../message/selectors';
diff --git a/src/store/chat/slices/thread/selectors/util.ts b/src/store/chat/slices/thread/selectors/util.ts
index 56fb3c8008d..9b5febfa4fe 100644
--- a/src/store/chat/slices/thread/selectors/util.ts
+++ b/src/store/chat/slices/thread/selectors/util.ts
@@ -1,4 +1,5 @@
-import { ChatMessage } from '@/types/message';
+import { ChatMessage } from '@lobechat/types';
+
import { ThreadType } from '@/types/topic';
export const genMessage = (
diff --git a/src/store/chat/slices/topic/action.test.ts b/src/store/chat/slices/topic/action.test.ts
index 5eeaf8fff9c..9848e5464ad 100644
--- a/src/store/chat/slices/topic/action.test.ts
+++ b/src/store/chat/slices/topic/action.test.ts
@@ -1,3 +1,4 @@
+import { ChatMessage } from '@lobechat/types';
import { act, renderHook, waitFor } from '@testing-library/react';
import { mutate } from 'swr';
import { Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
@@ -8,7 +9,6 @@ import { messageService } from '@/services/message';
import { topicService } from '@/services/topic';
import { messageMapKey } from '@/store/chat/utils/messageMapKey';
import { useSessionStore } from '@/store/session';
-import { ChatMessage } from '@/types/message';
import { LobeSessionType } from '@/types/session';
import { ChatTopic } from '@/types/topic';
diff --git a/src/store/chat/slices/topic/action.ts b/src/store/chat/slices/topic/action.ts
index 89e2cef7d44..ed1752d2567 100644
--- a/src/store/chat/slices/topic/action.ts
+++ b/src/store/chat/slices/topic/action.ts
@@ -2,7 +2,7 @@
// Note: To make the code more logic and readable, we just disable the auto sort key eslint rule
// DON'T REMOVE THE FIRST LINE
import { chainSummaryTitle } from '@lobechat/prompts';
-import { TraceNameMap } from '@lobechat/types';
+import { TraceNameMap , ChatMessage } from '@lobechat/types';
import isEqual from 'fast-deep-equal';
import { t } from 'i18next';
import { produce } from 'immer';
@@ -24,7 +24,6 @@ import { useSessionStore } from '@/store/session';
import { sessionSelectors } from '@/store/session/selectors';
import { useUserStore } from '@/store/user';
import { systemAgentSelectors } from '@/store/user/selectors';
-import { ChatMessage } from '@/types/message';
import { ChatTopic } from '@/types/topic';
import { merge } from '@/utils/merge';
import { setNamespace } from '@/utils/storeDebug';
diff --git a/src/store/chat/slices/translate/action.ts b/src/store/chat/slices/translate/action.ts
index f8b5c24ff2a..84dd0d9ca40 100644
--- a/src/store/chat/slices/translate/action.ts
+++ b/src/store/chat/slices/translate/action.ts
@@ -1,5 +1,5 @@
-import { chainLangDetect , chainTranslate } from '@lobechat/prompts';
-import { TraceNameMap, TracePayload } from '@lobechat/types';
+import { chainLangDetect, chainTranslate } from '@lobechat/prompts';
+import { TraceNameMap, TracePayload , ChatTranslate } from '@lobechat/types';
import { produce } from 'immer';
import { StateCreator } from 'zustand/vanilla';
@@ -10,7 +10,6 @@ import { chatSelectors } from '@/store/chat/selectors';
import { ChatStore } from '@/store/chat/store';
import { useUserStore } from '@/store/user';
import { systemAgentSelectors } from '@/store/user/selectors';
-import { ChatTranslate } from '@/types/message';
import { merge } from '@/utils/merge';
import { setNamespace } from '@/utils/storeDebug';
diff --git a/src/store/chat/slices/tts/action.ts b/src/store/chat/slices/tts/action.ts
index 4ff0a2d603c..20e55bebd42 100644
--- a/src/store/chat/slices/tts/action.ts
+++ b/src/store/chat/slices/tts/action.ts
@@ -1,8 +1,8 @@
+import { ChatTTS } from '@lobechat/types';
import { StateCreator } from 'zustand/vanilla';
import { messageService } from '@/services/message';
import { ChatStore } from '@/store/chat/store';
-import { ChatTTS } from '@/types/message';
/**
* enhance chat action like translate,tts
diff --git a/src/tools/local-system/Render/ListFiles/Result.tsx b/src/tools/local-system/Render/ListFiles/Result.tsx
index 9aeaf1daad1..54dc039e3f8 100644
--- a/src/tools/local-system/Render/ListFiles/Result.tsx
+++ b/src/tools/local-system/Render/ListFiles/Result.tsx
@@ -1,4 +1,5 @@
import { LocalFileItem } from '@lobechat/electron-client-ipc';
+import { ChatMessagePluginError } from '@lobechat/types';
import { Skeleton } from 'antd';
import { memo } from 'react';
import { Flexbox } from 'react-layout-kit';
@@ -6,7 +7,6 @@ import { Flexbox } from 'react-layout-kit';
import { useChatStore } from '@/store/chat';
import { chatToolSelectors } from '@/store/chat/selectors';
import FileItem from '@/tools/local-system/components/FileItem';
-import { ChatMessagePluginError } from '@/types/message';
interface SearchFilesProps {
listResults?: LocalFileItem[];
diff --git a/src/tools/local-system/Render/ListFiles/index.tsx b/src/tools/local-system/Render/ListFiles/index.tsx
index 8b8fa68867b..8e084b5904e 100644
--- a/src/tools/local-system/Render/ListFiles/index.tsx
+++ b/src/tools/local-system/Render/ListFiles/index.tsx
@@ -1,9 +1,9 @@
import { ListLocalFileParams } from '@lobechat/electron-client-ipc';
+import { ChatMessagePluginError } from '@lobechat/types';
import React, { memo } from 'react';
import { LocalFolder } from '@/features/LocalFile';
import { LocalFileListState } from '@/tools/local-system/type';
-import { ChatMessagePluginError } from '@/types/message';
import SearchResult from './Result';
diff --git a/src/tools/local-system/Render/ReadLocalFile/index.tsx b/src/tools/local-system/Render/ReadLocalFile/index.tsx
index 511b30b89d7..e3a24416e1e 100644
--- a/src/tools/local-system/Render/ReadLocalFile/index.tsx
+++ b/src/tools/local-system/Render/ReadLocalFile/index.tsx
@@ -1,10 +1,10 @@
import { LocalReadFileParams } from '@lobechat/electron-client-ipc';
+import { ChatMessagePluginError } from '@lobechat/types';
import { memo } from 'react';
import { useChatStore } from '@/store/chat';
import { chatToolSelectors } from '@/store/chat/slices/builtinTool/selectors';
import { LocalReadFileState } from '@/tools/local-system/type';
-import { ChatMessagePluginError } from '@/types/message';
import ReadFileSkeleton from './ReadFileSkeleton';
import ReadFileView from './ReadFileView';
diff --git a/src/tools/local-system/Render/RenameLocalFile/index.tsx b/src/tools/local-system/Render/RenameLocalFile/index.tsx
index 95067ec2e20..aea1eb37fe6 100644
--- a/src/tools/local-system/Render/RenameLocalFile/index.tsx
+++ b/src/tools/local-system/Render/RenameLocalFile/index.tsx
@@ -1,4 +1,5 @@
import { RenameLocalFileParams } from '@lobechat/electron-client-ipc';
+import { ChatMessagePluginError } from '@lobechat/types';
import { Icon } from '@lobehub/ui';
import { createStyles } from 'antd-style';
import { ArrowRightIcon } from 'lucide-react';
@@ -8,7 +9,6 @@ import { Flexbox } from 'react-layout-kit';
import { LocalFile } from '@/features/LocalFile';
import { LocalReadFileState } from '@/tools/local-system/type';
-import { ChatMessagePluginError } from '@/types/message';
const useStyles = createStyles(({ css, token }) => ({
container: css`
diff --git a/src/tools/local-system/Render/RunCommand/index.tsx b/src/tools/local-system/Render/RunCommand/index.tsx
index 98e6cfeee4d..1d0f51e62fe 100644
--- a/src/tools/local-system/Render/RunCommand/index.tsx
+++ b/src/tools/local-system/Render/RunCommand/index.tsx
@@ -1,10 +1,10 @@
import { RunCommandParams } from '@lobechat/electron-client-ipc';
+import { ChatMessagePluginError } from '@lobechat/types';
import { Terminal } from '@xterm/xterm';
import '@xterm/xterm/css/xterm.css';
import { memo, useEffect, useRef } from 'react';
import { LocalReadFileState } from '@/tools/local-system/type';
-import { ChatMessagePluginError } from '@/types/message';
interface RunCommandProps {
args: RunCommandParams;
diff --git a/src/tools/local-system/Render/SearchFiles/index.tsx b/src/tools/local-system/Render/SearchFiles/index.tsx
index 055fe33d4a8..d2cab748484 100644
--- a/src/tools/local-system/Render/SearchFiles/index.tsx
+++ b/src/tools/local-system/Render/SearchFiles/index.tsx
@@ -1,9 +1,9 @@
import { LocalSearchFilesParams } from '@lobechat/electron-client-ipc';
+import { ChatMessagePluginError } from '@lobechat/types';
import { memo } from 'react';
import { Flexbox } from 'react-layout-kit';
import { LocalFileSearchState } from '@/tools/local-system/type';
-import { ChatMessagePluginError } from '@/types/message';
import SearchResult from './Result';
import SearchQuery from './SearchQuery';
diff --git a/src/tools/local-system/Render/WriteFile/index.tsx b/src/tools/local-system/Render/WriteFile/index.tsx
index 6ed3c9dbdac..29593726e6d 100644
--- a/src/tools/local-system/Render/WriteFile/index.tsx
+++ b/src/tools/local-system/Render/WriteFile/index.tsx
@@ -1,4 +1,5 @@
import { WriteLocalFileParams } from '@lobechat/electron-client-ipc';
+import { ChatMessagePluginError } from '@lobechat/types';
import { Icon } from '@lobehub/ui';
import { Skeleton } from 'antd';
import { ChevronRight } from 'lucide-react';
@@ -7,7 +8,6 @@ import { memo } from 'react';
import { Flexbox } from 'react-layout-kit';
import { LocalFile, LocalFolder } from '@/features/LocalFile';
-import { ChatMessagePluginError } from '@/types/message';
interface WriteFileProps {
args: WriteLocalFileParams;
diff --git a/src/tools/web-browsing/Render/Search/index.tsx b/src/tools/web-browsing/Render/Search/index.tsx
index 989b3206b57..c493bd5ec62 100644
--- a/src/tools/web-browsing/Render/Search/index.tsx
+++ b/src/tools/web-browsing/Render/Search/index.tsx
@@ -1,10 +1,8 @@
-import { SearchQuery, UniformSearchResponse } from '@lobechat/types';
+import { SearchQuery, UniformSearchResponse , ChatMessagePluginError } from '@lobechat/types';
import { Alert, Highlighter } from '@lobehub/ui';
import { memo, useState } from 'react';
import { Flexbox } from 'react-layout-kit';
-import { ChatMessagePluginError } from '@/types/message';
-
import ConfigForm from './ConfigForm';
import SearchQueryView from './SearchQuery';
import SearchResult from './SearchResult';