diff --git a/.oxlintrc.json b/.oxlintrc.json index 1bb3ec37cc..8efaec98a8 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -141,7 +141,7 @@ "typescript/await-thenable": "warn", // "typescript/ban-ts-comment": "error", "typescript/no-array-constructor": "error", - // "typescript/consistent-type-imports": "error", + "typescript/consistent-type-imports": "error", "typescript/no-array-delete": "warn", "typescript/no-base-to-string": "warn", "typescript/no-duplicate-enum-values": "error", diff --git a/package.json b/package.json index 300a88ae42..74e48cdb35 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,8 @@ "test:e2e": "yarn playwright test", "test:lint": "oxlint --deny-warnings && eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --cache", "test:scripts": "vitest scripts", - "lint": "oxlint --fix && eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --cache && yarn typecheck && yarn check:i18n", + "lint": "oxlint --fix && eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --cache && biome lint --write && biome format --write && yarn typecheck && yarn check:i18n", + "lint:ox": "oxlint --fix && biome lint --write && biome format --write", "format": "biome format --write && biome lint --write", "format:check": "biome format && biome lint", "prepare": "git config blame.ignoreRevsFile .git-blame-ignore-revs && husky", diff --git a/packages/aiCore/src/core/middleware/manager.ts b/packages/aiCore/src/core/middleware/manager.ts index bcb044b3a9..f285b8ecd1 100644 --- a/packages/aiCore/src/core/middleware/manager.ts +++ b/packages/aiCore/src/core/middleware/manager.ts @@ -2,7 +2,7 @@ * 中间件管理器 * 专注于 AI SDK 中间件的管理,与插件系统分离 */ -import { LanguageModelV2Middleware } from '@ai-sdk/provider' +import type { LanguageModelV2Middleware } from '@ai-sdk/provider' /** * 创建中间件列表 diff --git a/packages/aiCore/src/core/middleware/types.ts b/packages/aiCore/src/core/middleware/types.ts index 50b5210b53..f500b0a91d 100644 --- a/packages/aiCore/src/core/middleware/types.ts +++ b/packages/aiCore/src/core/middleware/types.ts @@ -1,7 +1,7 @@ /** * 中间件系统类型定义 */ -import { LanguageModelV2Middleware } from '@ai-sdk/provider' +import type { LanguageModelV2Middleware } from '@ai-sdk/provider' /** * 具名中间件接口 diff --git a/packages/aiCore/src/core/middleware/wrapper.ts b/packages/aiCore/src/core/middleware/wrapper.ts index 625eddbab3..059c82380f 100644 --- a/packages/aiCore/src/core/middleware/wrapper.ts +++ b/packages/aiCore/src/core/middleware/wrapper.ts @@ -2,7 +2,7 @@ * 模型包装工具函数 * 用于将中间件应用到LanguageModel上 */ -import { LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider' +import type { LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider' import { wrapLanguageModel } from 'ai' /** diff --git a/packages/aiCore/src/core/models/ModelResolver.ts b/packages/aiCore/src/core/models/ModelResolver.ts index 20bf3d76d1..ed9fa910e0 100644 --- a/packages/aiCore/src/core/models/ModelResolver.ts +++ b/packages/aiCore/src/core/models/ModelResolver.ts @@ -5,7 +5,7 @@ * 集成了来自 ModelCreator 的特殊处理逻辑 */ -import { EmbeddingModelV2, ImageModelV2, LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider' +import type { EmbeddingModelV2, ImageModelV2, LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider' import { wrapModelWithMiddlewares } from '../middleware/wrapper' import { DEFAULT_SEPARATOR, globalRegistryManagement } from '../providers/RegistryManagement' diff --git a/packages/aiCore/src/core/models/types.ts b/packages/aiCore/src/core/models/types.ts index 57cb72366e..560d5bbeae 100644 --- a/packages/aiCore/src/core/models/types.ts +++ b/packages/aiCore/src/core/models/types.ts @@ -1,7 +1,7 @@ /** * Creation 模块类型定义 */ -import { LanguageModelV2Middleware } from '@ai-sdk/provider' +import type { LanguageModelV2Middleware } from '@ai-sdk/provider' import type { ProviderId, ProviderSettingsMap } from '../providers/types' diff --git a/packages/aiCore/src/core/options/factory.ts b/packages/aiCore/src/core/options/factory.ts index 4350e9241b..a878179790 100644 --- a/packages/aiCore/src/core/options/factory.ts +++ b/packages/aiCore/src/core/options/factory.ts @@ -1,4 +1,4 @@ -import { ExtractProviderOptions, ProviderOptionsMap, TypedProviderOptions } from './types' +import type { ExtractProviderOptions, ProviderOptionsMap, TypedProviderOptions } from './types' /** * 创建特定供应商的选项 diff --git a/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/promptToolUsePlugin.ts b/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/promptToolUsePlugin.ts index fce028f5cd..f431672ce3 100644 --- a/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/promptToolUsePlugin.ts +++ b/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/promptToolUsePlugin.ts @@ -10,7 +10,7 @@ import type { AiRequestContext } from '../../types' import { StreamEventManager } from './StreamEventManager' import { type TagConfig, TagExtractor } from './tagExtraction' import { ToolExecutor } from './ToolExecutor' -import { PromptToolUseConfig, ToolUseResult } from './type' +import type { PromptToolUseConfig, ToolUseResult } from './type' /** * 工具使用标签配置 diff --git a/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/type.ts b/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/type.ts index 33ed6189ed..4937b25601 100644 --- a/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/type.ts +++ b/packages/aiCore/src/core/plugins/built-in/toolUsePlugin/type.ts @@ -1,6 +1,6 @@ -import { ToolSet } from 'ai' +import type { ToolSet } from 'ai' -import { AiRequestContext } from '../..' +import type { AiRequestContext } from '../..' /** * 解析结果类型 diff --git a/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/helper.ts b/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/helper.ts index a7c7187bca..b83ffd25e3 100644 --- a/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/helper.ts +++ b/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/helper.ts @@ -1,8 +1,8 @@ -import { anthropic } from '@ai-sdk/anthropic' -import { google } from '@ai-sdk/google' -import { openai } from '@ai-sdk/openai' +import type { anthropic } from '@ai-sdk/anthropic' +import type { google } from '@ai-sdk/google' +import type { openai } from '@ai-sdk/openai' -import { ProviderOptionsMap } from '../../../options/types' +import type { ProviderOptionsMap } from '../../../options/types' /** * 从 AI SDK 的工具函数中提取参数类型,以确保类型安全。 diff --git a/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/index.ts b/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/index.ts index d941e0d0c7..5d22b81354 100644 --- a/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/index.ts +++ b/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/index.ts @@ -9,7 +9,8 @@ import { openai } from '@ai-sdk/openai' import { createXaiOptions, mergeProviderOptions } from '../../../options' import { definePlugin } from '../../' import type { AiRequestContext } from '../../types' -import { DEFAULT_WEB_SEARCH_CONFIG, WebSearchPluginConfig } from './helper' +import type { WebSearchPluginConfig } from './helper' +import { DEFAULT_WEB_SEARCH_CONFIG } from './helper' /** * 网络搜索插件 diff --git a/packages/aiCore/src/core/plugins/manager.ts b/packages/aiCore/src/core/plugins/manager.ts index 4c927ed1de..40f5836c44 100644 --- a/packages/aiCore/src/core/plugins/manager.ts +++ b/packages/aiCore/src/core/plugins/manager.ts @@ -1,4 +1,4 @@ -import { AiPlugin, AiRequestContext } from './types' +import type { AiPlugin, AiRequestContext } from './types' /** * 插件管理器 diff --git a/packages/aiCore/src/core/providers/HubProvider.ts b/packages/aiCore/src/core/providers/HubProvider.ts index 0283d634b0..e87274be98 100644 --- a/packages/aiCore/src/core/providers/HubProvider.ts +++ b/packages/aiCore/src/core/providers/HubProvider.ts @@ -5,7 +5,7 @@ * 例如: aihubmix:anthropic:claude-3.5-sonnet */ -import { ProviderV2 } from '@ai-sdk/provider' +import type { ProviderV2 } from '@ai-sdk/provider' import { customProvider } from 'ai' import { globalRegistryManagement } from './RegistryManagement' diff --git a/packages/aiCore/src/core/providers/RegistryManagement.ts b/packages/aiCore/src/core/providers/RegistryManagement.ts index a8aefd44b2..67d10f3f2f 100644 --- a/packages/aiCore/src/core/providers/RegistryManagement.ts +++ b/packages/aiCore/src/core/providers/RegistryManagement.ts @@ -4,7 +4,7 @@ * 基于 AI SDK 原生的 createProviderRegistry */ -import { EmbeddingModelV2, ImageModelV2, LanguageModelV2, ProviderV2 } from '@ai-sdk/provider' +import type { EmbeddingModelV2, ImageModelV2, LanguageModelV2, ProviderV2 } from '@ai-sdk/provider' import { createProviderRegistry, type ProviderRegistryProvider } from 'ai' type PROVIDERS = Record diff --git a/packages/aiCore/src/core/providers/schemas.ts b/packages/aiCore/src/core/providers/schemas.ts index e4b8d8aa64..af5c269263 100644 --- a/packages/aiCore/src/core/providers/schemas.ts +++ b/packages/aiCore/src/core/providers/schemas.ts @@ -10,7 +10,8 @@ import { createGoogleGenerativeAI } from '@ai-sdk/google' import { createOpenAI, type OpenAIProviderSettings } from '@ai-sdk/openai' import { createOpenAICompatible } from '@ai-sdk/openai-compatible' import { createXai } from '@ai-sdk/xai' -import { customProvider, Provider } from 'ai' +import type { Provider } from 'ai' +import { customProvider } from 'ai' import { z } from 'zod' /** diff --git a/packages/aiCore/src/core/providers/types.ts b/packages/aiCore/src/core/providers/types.ts index f862f43a75..6f1ec2c405 100644 --- a/packages/aiCore/src/core/providers/types.ts +++ b/packages/aiCore/src/core/providers/types.ts @@ -4,7 +4,7 @@ import { type DeepSeekProviderSettings } from '@ai-sdk/deepseek' import { type GoogleGenerativeAIProviderSettings } from '@ai-sdk/google' import { type OpenAIProviderSettings } from '@ai-sdk/openai' import { type OpenAICompatibleProviderSettings } from '@ai-sdk/openai-compatible' -import { +import type { EmbeddingModelV2 as EmbeddingModel, ImageModelV2 as ImageModel, LanguageModelV2 as LanguageModel, diff --git a/packages/aiCore/src/core/runtime/__tests__/generateImage.test.ts b/packages/aiCore/src/core/runtime/__tests__/generateImage.test.ts index bde5779fd9..217319aacc 100644 --- a/packages/aiCore/src/core/runtime/__tests__/generateImage.test.ts +++ b/packages/aiCore/src/core/runtime/__tests__/generateImage.test.ts @@ -1,4 +1,4 @@ -import { ImageModelV2 } from '@ai-sdk/provider' +import type { ImageModelV2 } from '@ai-sdk/provider' import { experimental_generateImage as aiGenerateImage, NoImageGeneratedError } from 'ai' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/packages/aiCore/src/core/runtime/executor.ts b/packages/aiCore/src/core/runtime/executor.ts index ab764bacd6..85c1fb64de 100644 --- a/packages/aiCore/src/core/runtime/executor.ts +++ b/packages/aiCore/src/core/runtime/executor.ts @@ -2,12 +2,12 @@ * 运行时执行器 * 专注于插件化的AI调用处理 */ -import { ImageModelV2, LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider' +import type { ImageModelV2, LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider' +import type { LanguageModel } from 'ai' import { experimental_generateImage as _generateImage, generateObject as _generateObject, generateText as _generateText, - LanguageModel, streamObject as _streamObject, streamText as _streamText } from 'ai' diff --git a/packages/aiCore/src/core/runtime/index.ts b/packages/aiCore/src/core/runtime/index.ts index 37aa4fec34..3dae7d0c2a 100644 --- a/packages/aiCore/src/core/runtime/index.ts +++ b/packages/aiCore/src/core/runtime/index.ts @@ -11,7 +11,7 @@ export type { RuntimeConfig } from './types' // === 便捷工厂函数 === -import { LanguageModelV2Middleware } from '@ai-sdk/provider' +import type { LanguageModelV2Middleware } from '@ai-sdk/provider' import { type AiPlugin } from '../plugins' import { type ProviderId, type ProviderSettingsMap } from '../providers/types' diff --git a/packages/aiCore/src/core/runtime/pluginEngine.ts b/packages/aiCore/src/core/runtime/pluginEngine.ts index d0100d2bcb..a2fc08b927 100644 --- a/packages/aiCore/src/core/runtime/pluginEngine.ts +++ b/packages/aiCore/src/core/runtime/pluginEngine.ts @@ -1,6 +1,13 @@ /* eslint-disable @eslint-react/naming-convention/context-name */ -import { ImageModelV2 } from '@ai-sdk/provider' -import { experimental_generateImage, generateObject, generateText, LanguageModel, streamObject, streamText } from 'ai' +import type { ImageModelV2 } from '@ai-sdk/provider' +import type { + experimental_generateImage, + generateObject, + generateText, + LanguageModel, + streamObject, + streamText +} from 'ai' import { type AiPlugin, createContext, PluginManager } from '../plugins' import { type ProviderId } from '../providers/types' diff --git a/packages/aiCore/src/core/runtime/types.ts b/packages/aiCore/src/core/runtime/types.ts index fbdcf46333..b95e00be4f 100644 --- a/packages/aiCore/src/core/runtime/types.ts +++ b/packages/aiCore/src/core/runtime/types.ts @@ -1,8 +1,8 @@ /** * Runtime 层类型定义 */ -import { ImageModelV2 } from '@ai-sdk/provider' -import { experimental_generateImage, generateObject, generateText, streamObject, streamText } from 'ai' +import type { ImageModelV2 } from '@ai-sdk/provider' +import type { experimental_generateImage, generateObject, generateText, streamObject, streamText } from 'ai' import { type ModelConfig } from '../models/types' import { type AiPlugin } from '../plugins' diff --git a/packages/extension-table-plus/src/kit/index.ts b/packages/extension-table-plus/src/kit/index.ts index 00221c5bfe..eb0fefb595 100755 --- a/packages/extension-table-plus/src/kit/index.ts +++ b/packages/extension-table-plus/src/kit/index.ts @@ -1,4 +1,5 @@ -import { Extension, Node } from '@tiptap/core' +import type { Node } from '@tiptap/core' +import { Extension } from '@tiptap/core' import type { TableCellOptions } from '../cell/index.js' import { TableCell } from '../cell/index.js' diff --git a/packages/mcp-trace/trace-core/core/spanConvert.ts b/packages/mcp-trace/trace-core/core/spanConvert.ts index a226f5d108..1a5eafff06 100644 --- a/packages/mcp-trace/trace-core/core/spanConvert.ts +++ b/packages/mcp-trace/trace-core/core/spanConvert.ts @@ -1,7 +1,7 @@ import { SpanKind, SpanStatusCode } from '@opentelemetry/api' -import { ReadableSpan } from '@opentelemetry/sdk-trace-base' +import type { ReadableSpan } from '@opentelemetry/sdk-trace-base' -import { SpanEntity } from '../types/config' +import type { SpanEntity } from '../types/config' /** * convert ReadableSpan to SpanEntity diff --git a/packages/mcp-trace/trace-core/core/traceCache.ts b/packages/mcp-trace/trace-core/core/traceCache.ts index cc5ba795ff..6b181fa3c8 100644 --- a/packages/mcp-trace/trace-core/core/traceCache.ts +++ b/packages/mcp-trace/trace-core/core/traceCache.ts @@ -1,4 +1,4 @@ -import { ReadableSpan } from '@opentelemetry/sdk-trace-base' +import type { ReadableSpan } from '@opentelemetry/sdk-trace-base' export interface TraceCache { createSpan: (span: ReadableSpan) => void diff --git a/packages/mcp-trace/trace-core/exporters/FuncSpanExporter.ts b/packages/mcp-trace/trace-core/exporters/FuncSpanExporter.ts index 48d769daf8..0bc97b82e1 100644 --- a/packages/mcp-trace/trace-core/exporters/FuncSpanExporter.ts +++ b/packages/mcp-trace/trace-core/exporters/FuncSpanExporter.ts @@ -1,5 +1,6 @@ -import { ExportResult, ExportResultCode } from '@opentelemetry/core' -import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base' +import type { ExportResult } from '@opentelemetry/core' +import { ExportResultCode } from '@opentelemetry/core' +import type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base' export type SaveFunction = (spans: ReadableSpan[]) => Promise diff --git a/packages/mcp-trace/trace-core/processors/CacheSpanProcessor.ts b/packages/mcp-trace/trace-core/processors/CacheSpanProcessor.ts index b20a61de06..3d3e1a73a3 100644 --- a/packages/mcp-trace/trace-core/processors/CacheSpanProcessor.ts +++ b/packages/mcp-trace/trace-core/processors/CacheSpanProcessor.ts @@ -1,7 +1,9 @@ -import { Context, trace } from '@opentelemetry/api' -import { BatchSpanProcessor, BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base' +import type { Context } from '@opentelemetry/api' +import { trace } from '@opentelemetry/api' +import type { BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base' +import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' -import { TraceCache } from '../core/traceCache' +import type { TraceCache } from '../core/traceCache' export class CacheBatchSpanProcessor extends BatchSpanProcessor { private cache: TraceCache diff --git a/packages/mcp-trace/trace-core/processors/EmitterSpanProcessor.ts b/packages/mcp-trace/trace-core/processors/EmitterSpanProcessor.ts index 41015b2082..c09ec352d6 100644 --- a/packages/mcp-trace/trace-core/processors/EmitterSpanProcessor.ts +++ b/packages/mcp-trace/trace-core/processors/EmitterSpanProcessor.ts @@ -1,6 +1,7 @@ -import { Context } from '@opentelemetry/api' -import { BatchSpanProcessor, BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base' -import { EventEmitter } from 'stream' +import type { Context } from '@opentelemetry/api' +import type { BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base' +import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' +import type { EventEmitter } from 'stream' import { convertSpanToSpanEntity } from '../core/spanConvert' diff --git a/packages/mcp-trace/trace-core/processors/FuncSpanProcessor.ts b/packages/mcp-trace/trace-core/processors/FuncSpanProcessor.ts index 8a7281d955..ba88e322d2 100644 --- a/packages/mcp-trace/trace-core/processors/FuncSpanProcessor.ts +++ b/packages/mcp-trace/trace-core/processors/FuncSpanProcessor.ts @@ -1,5 +1,7 @@ -import { Context, trace } from '@opentelemetry/api' -import { BatchSpanProcessor, BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base' +import type { Context } from '@opentelemetry/api' +import { trace } from '@opentelemetry/api' +import type { BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base' +import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base' export type SpanFunction = (span: ReadableSpan) => void diff --git a/packages/mcp-trace/trace-core/types/config.ts b/packages/mcp-trace/trace-core/types/config.ts index 37f705eb8d..aa86353eae 100644 --- a/packages/mcp-trace/trace-core/types/config.ts +++ b/packages/mcp-trace/trace-core/types/config.ts @@ -1,5 +1,5 @@ -import { Link } from '@opentelemetry/api' -import { TimedEvent } from '@opentelemetry/sdk-trace-base' +import type { Link } from '@opentelemetry/api' +import type { TimedEvent } from '@opentelemetry/sdk-trace-base' export type AttributeValue = | string diff --git a/packages/mcp-trace/trace-node/nodeTracer.ts b/packages/mcp-trace/trace-node/nodeTracer.ts index aee9525010..79fa4c4393 100644 --- a/packages/mcp-trace/trace-node/nodeTracer.ts +++ b/packages/mcp-trace/trace-node/nodeTracer.ts @@ -1,11 +1,14 @@ -import { trace, Tracer } from '@opentelemetry/api' +import type { Tracer } from '@opentelemetry/api' +import { trace } from '@opentelemetry/api' import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks' import { W3CTraceContextPropagator } from '@opentelemetry/core' import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http' -import { BatchSpanProcessor, ConsoleSpanExporter, SpanProcessor } from '@opentelemetry/sdk-trace-base' +import type { SpanProcessor } from '@opentelemetry/sdk-trace-base' +import { BatchSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base' import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node' -import { defaultConfig, TraceConfig } from '../trace-core/types/config' +import type { TraceConfig } from '../trace-core/types/config' +import { defaultConfig } from '../trace-core/types/config' export class NodeTracer { private static provider: NodeTracerProvider diff --git a/packages/mcp-trace/trace-web/TopicContextManager.ts b/packages/mcp-trace/trace-web/TopicContextManager.ts index a2688fc02f..2962ae868e 100644 --- a/packages/mcp-trace/trace-web/TopicContextManager.ts +++ b/packages/mcp-trace/trace-web/TopicContextManager.ts @@ -1,4 +1,5 @@ -import { Context, ContextManager, ROOT_CONTEXT } from '@opentelemetry/api' +import type { Context, ContextManager } from '@opentelemetry/api' +import { ROOT_CONTEXT } from '@opentelemetry/api' export class TopicContextManager implements ContextManager { private topicContextStack: Map diff --git a/packages/mcp-trace/trace-web/traceContextPromise.ts b/packages/mcp-trace/trace-web/traceContextPromise.ts index ee99722b71..d529c3ca58 100644 --- a/packages/mcp-trace/trace-web/traceContextPromise.ts +++ b/packages/mcp-trace/trace-web/traceContextPromise.ts @@ -1,4 +1,5 @@ -import { Context, context } from '@opentelemetry/api' +import type { Context } from '@opentelemetry/api' +import { context } from '@opentelemetry/api' const originalPromise = globalThis.Promise diff --git a/packages/mcp-trace/trace-web/webTracer.ts b/packages/mcp-trace/trace-web/webTracer.ts index 0b8af5813a..fdf221f3f1 100644 --- a/packages/mcp-trace/trace-web/webTracer.ts +++ b/packages/mcp-trace/trace-web/webTracer.ts @@ -1,9 +1,11 @@ import { W3CTraceContextPropagator } from '@opentelemetry/core' import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http' -import { BatchSpanProcessor, ConsoleSpanExporter, SpanProcessor } from '@opentelemetry/sdk-trace-base' +import type { SpanProcessor } from '@opentelemetry/sdk-trace-base' +import { BatchSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base' import { WebTracerProvider } from '@opentelemetry/sdk-trace-web' -import { defaultConfig, TraceConfig } from '../trace-core/types/config' +import type { TraceConfig } from '../trace-core/types/config' +import { defaultConfig } from '../trace-core/types/config' import { TopicContextManager } from './TopicContextManager' export const contextManager = new TopicContextManager() diff --git a/packages/shared/config/types.ts b/packages/shared/config/types.ts index 90e5c64579..5fbd2bef5d 100644 --- a/packages/shared/config/types.ts +++ b/packages/shared/config/types.ts @@ -1,4 +1,4 @@ -import { ProcessingStatus } from '@types' +import type { ProcessingStatus } from '@types' export type LoaderReturn = { entriesAdded: number diff --git a/packages/shared/data/api/errorCodes.ts b/packages/shared/data/api/errorCodes.ts index 46fdf255f0..7ccb96c8c9 100644 --- a/packages/shared/data/api/errorCodes.ts +++ b/packages/shared/data/api/errorCodes.ts @@ -3,7 +3,8 @@ * Provides consistent error handling across renderer and main processes */ -import { DataApiError, ErrorCode } from './apiTypes' +import type { DataApiError } from './apiTypes' +import { ErrorCode } from './apiTypes' // Re-export ErrorCode for convenience export { ErrorCode } from './apiTypes' diff --git a/packages/shared/data/preference/preferenceTypes.ts b/packages/shared/data/preference/preferenceTypes.ts index 4c289b4fda..44f3d448f6 100644 --- a/packages/shared/data/preference/preferenceTypes.ts +++ b/packages/shared/data/preference/preferenceTypes.ts @@ -1,4 +1,4 @@ -import { PreferenceSchemas } from './preferenceSchemas' +import type { PreferenceSchemas } from './preferenceSchemas' export type PreferenceDefaultScopeType = PreferenceSchemas['default'] export type PreferenceKeyType = keyof PreferenceDefaultScopeType diff --git a/packages/ui/src/components/base/CopyButton/index.tsx b/packages/ui/src/components/base/CopyButton/index.tsx index b1eba2b46f..0a9f685d18 100644 --- a/packages/ui/src/components/base/CopyButton/index.tsx +++ b/packages/ui/src/components/base/CopyButton/index.tsx @@ -1,7 +1,7 @@ // Original path: src/renderer/src/components/CopyButton.tsx import { Tooltip } from '@heroui/react' import { Copy } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' interface CopyButtonProps { tooltip?: string diff --git a/packages/ui/src/components/base/CustomCollapse/index.tsx b/packages/ui/src/components/base/CustomCollapse/index.tsx index a334424349..cd4cf2fc46 100644 --- a/packages/ui/src/components/base/CustomCollapse/index.tsx +++ b/packages/ui/src/components/base/CustomCollapse/index.tsx @@ -1,6 +1,7 @@ // Original path: src/renderer/src/components/CustomCollapse.tsx import { ChevronRight } from 'lucide-react' -import { FC, memo, useState } from 'react' +import type { FC } from 'react' +import { memo, useState } from 'react' interface CustomCollapseProps { label: React.ReactNode diff --git a/packages/ui/src/components/base/CustomTag/index.tsx b/packages/ui/src/components/base/CustomTag/index.tsx index 88a8235b5d..f41c7b81f0 100644 --- a/packages/ui/src/components/base/CustomTag/index.tsx +++ b/packages/ui/src/components/base/CustomTag/index.tsx @@ -1,7 +1,8 @@ // Original path: src/renderer/src/components/Tags/CustomTag.tsx import { Tooltip } from '@heroui/react' import { X } from 'lucide-react' -import { CSSProperties, FC, memo, MouseEventHandler, useMemo } from 'react' +import type { CSSProperties, FC, MouseEventHandler } from 'react' +import { memo, useMemo } from 'react' export interface CustomTagProps { icon?: React.ReactNode diff --git a/packages/ui/src/components/base/DividerWithText/index.tsx b/packages/ui/src/components/base/DividerWithText/index.tsx index 5bb5cc5821..75c225fe33 100644 --- a/packages/ui/src/components/base/DividerWithText/index.tsx +++ b/packages/ui/src/components/base/DividerWithText/index.tsx @@ -1,5 +1,6 @@ // Original: src/renderer/src/components/DividerWithText.tsx -import React, { CSSProperties } from 'react' +import type { CSSProperties } from 'react' +import React from 'react' interface DividerWithTextProps { text: string diff --git a/packages/ui/src/components/base/EmojiIcon/index.tsx b/packages/ui/src/components/base/EmojiIcon/index.tsx index 5a772215ad..344ef96744 100644 --- a/packages/ui/src/components/base/EmojiIcon/index.tsx +++ b/packages/ui/src/components/base/EmojiIcon/index.tsx @@ -1,5 +1,5 @@ // Original path: src/renderer/src/components/EmojiIcon.tsx -import { FC } from 'react' +import type { FC } from 'react' interface EmojiIconProps { emoji: string diff --git a/packages/ui/src/components/base/ErrorBoundary/index.tsx b/packages/ui/src/components/base/ErrorBoundary/index.tsx index 46fb37e76d..2c3963a8bc 100644 --- a/packages/ui/src/components/base/ErrorBoundary/index.tsx +++ b/packages/ui/src/components/base/ErrorBoundary/index.tsx @@ -1,8 +1,9 @@ // Original path: src/renderer/src/components/ErrorBoundary.tsx import { Button } from '@heroui/react' import { AlertTriangle } from 'lucide-react' -import { ComponentType, ReactNode } from 'react' -import { ErrorBoundary, FallbackProps } from 'react-error-boundary' +import type { ComponentType, ReactNode } from 'react' +import type { FallbackProps } from 'react-error-boundary' +import { ErrorBoundary } from 'react-error-boundary' import { formatErrorMessage } from './utils' diff --git a/packages/ui/src/components/base/StatusTag/index.tsx b/packages/ui/src/components/base/StatusTag/index.tsx index 590c7c88ab..a43925d927 100644 --- a/packages/ui/src/components/base/StatusTag/index.tsx +++ b/packages/ui/src/components/base/StatusTag/index.tsx @@ -1,4 +1,5 @@ -import { AlertTriangleIcon, CheckIcon, CircleXIcon, InfoIcon, LucideIcon } from 'lucide-react' +import type { LucideIcon } from 'lucide-react' +import { AlertTriangleIcon, CheckIcon, CircleXIcon, InfoIcon } from 'lucide-react' import React from 'react' import CustomTag from '../CustomTag' diff --git a/packages/ui/src/components/base/TextBadge/index.tsx b/packages/ui/src/components/base/TextBadge/index.tsx index f3f42a4f16..eb774713e9 100644 --- a/packages/ui/src/components/base/TextBadge/index.tsx +++ b/packages/ui/src/components/base/TextBadge/index.tsx @@ -1,5 +1,5 @@ // Original: src/renderer/src/components/TextBadge.tsx -import { FC } from 'react' +import type { FC } from 'react' interface TextBadgeProps { text: string diff --git a/packages/ui/src/components/display/ListItem/index.tsx b/packages/ui/src/components/display/ListItem/index.tsx index 228a09b039..a105020928 100644 --- a/packages/ui/src/components/display/ListItem/index.tsx +++ b/packages/ui/src/components/display/ListItem/index.tsx @@ -1,6 +1,6 @@ // Original path: src/renderer/src/components/ListItem/index.tsx import { Tooltip } from '@heroui/react' -import { ReactNode } from 'react' +import type { ReactNode } from 'react' import { cn } from '../../../utils' diff --git a/packages/ui/src/components/display/MaxContextCount/index.tsx b/packages/ui/src/components/display/MaxContextCount/index.tsx index 11a900b30e..af535660c1 100644 --- a/packages/ui/src/components/display/MaxContextCount/index.tsx +++ b/packages/ui/src/components/display/MaxContextCount/index.tsx @@ -1,6 +1,6 @@ // Original path: src/renderer/src/components/MaxContextCount.tsx import { Infinity as InfinityIcon } from 'lucide-react' -import { CSSProperties } from 'react' +import type { CSSProperties } from 'react' const MAX_CONTEXT_COUNT = 100 diff --git a/packages/ui/src/components/icons/FileIcons/index.tsx b/packages/ui/src/components/icons/FileIcons/index.tsx index dd5885e172..23f8ec8d9a 100644 --- a/packages/ui/src/components/icons/FileIcons/index.tsx +++ b/packages/ui/src/components/icons/FileIcons/index.tsx @@ -1,5 +1,5 @@ // Original path: src/renderer/src/components/Icons/FileIcons.tsx -import { CSSProperties, SVGProps } from 'react' +import type { CSSProperties, SVGProps } from 'react' interface BaseFileIconProps extends SVGProps { size?: string | number diff --git a/packages/ui/src/components/icons/Icon/index.tsx b/packages/ui/src/components/icons/Icon/index.tsx index 4c09c6727e..c6bda5a2f4 100644 --- a/packages/ui/src/components/icons/Icon/index.tsx +++ b/packages/ui/src/components/icons/Icon/index.tsx @@ -1,8 +1,8 @@ +import type { LucideIcon } from 'lucide-react' import { AlignLeft, Copy, Eye, - LucideIcon, Pencil, RefreshCw, RotateCcw, diff --git a/packages/ui/src/components/icons/ReasoningIcon/index.tsx b/packages/ui/src/components/icons/ReasoningIcon/index.tsx index 5bbd296f2f..9092cb37ff 100644 --- a/packages/ui/src/components/icons/ReasoningIcon/index.tsx +++ b/packages/ui/src/components/icons/ReasoningIcon/index.tsx @@ -1,6 +1,7 @@ // Original path: src/renderer/src/components/Icons/ReasoningIcon.tsx import { Tooltip } from 'antd' -import React, { FC } from 'react' +import type { FC } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/packages/ui/src/components/icons/SvgSpinners180Ring/index.tsx b/packages/ui/src/components/icons/SvgSpinners180Ring/index.tsx index c0b3abbfca..b98a08f372 100644 --- a/packages/ui/src/components/icons/SvgSpinners180Ring/index.tsx +++ b/packages/ui/src/components/icons/SvgSpinners180Ring/index.tsx @@ -1,5 +1,5 @@ // Original path: src/renderer/src/components/Icons/SvgSpinners180Ring.tsx -import { SVGProps } from 'react' +import type { SVGProps } from 'react' export function SvgSpinners180Ring(props: SVGProps & { size?: number | string }) { const { size = '1em', ...svgProps } = props diff --git a/packages/ui/src/components/icons/ToolsCallingIcon/index.tsx b/packages/ui/src/components/icons/ToolsCallingIcon/index.tsx index 4f0b7f96e3..c193d202c8 100644 --- a/packages/ui/src/components/icons/ToolsCallingIcon/index.tsx +++ b/packages/ui/src/components/icons/ToolsCallingIcon/index.tsx @@ -1,7 +1,8 @@ // Original: src/renderer/src/components/Icons/ToolsCallingIcon.tsx import { ToolOutlined } from '@ant-design/icons' import { Tooltip } from 'antd' -import React, { FC } from 'react' +import type { FC } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/packages/ui/src/components/interactive/CodeEditor/CodeEditor.tsx b/packages/ui/src/components/interactive/CodeEditor/CodeEditor.tsx index 79b1a6506a..0fad66abf1 100644 --- a/packages/ui/src/components/interactive/CodeEditor/CodeEditor.tsx +++ b/packages/ui/src/components/interactive/CodeEditor/CodeEditor.tsx @@ -1,9 +1,10 @@ -import CodeMirror, { Annotation, BasicSetupOptions, EditorView } from '@uiw/react-codemirror' +import type { BasicSetupOptions } from '@uiw/react-codemirror' +import CodeMirror, { Annotation, EditorView } from '@uiw/react-codemirror' import { useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react' import { memo } from 'react' import { useBlurHandler, useHeightListener, useLanguageExtensions, useSaveKeymap } from './hooks' -import { CodeEditorProps } from './types' +import type { CodeEditorProps } from './types' import { prepareCodeChanges } from './utils' /** diff --git a/packages/ui/src/components/interactive/CodeEditor/hooks.ts b/packages/ui/src/components/interactive/CodeEditor/hooks.ts index c96c4fdeaf..f362774067 100644 --- a/packages/ui/src/components/interactive/CodeEditor/hooks.ts +++ b/packages/ui/src/components/interactive/CodeEditor/hooks.ts @@ -1,9 +1,10 @@ import { linter } from '@codemirror/lint' // statically imported by @uiw/codemirror-extensions-basic-setup import { EditorView } from '@codemirror/view' -import { Extension, keymap } from '@uiw/react-codemirror' +import type { Extension } from '@uiw/react-codemirror' +import { keymap } from '@uiw/react-codemirror' import { useEffect, useMemo, useState } from 'react' -import { LanguageConfig } from './types' +import type { LanguageConfig } from './types' import { getNormalizedExtension } from './utils' /** 语言对应的 linter 加载器 diff --git a/packages/ui/src/components/interactive/CodeEditor/types.ts b/packages/ui/src/components/interactive/CodeEditor/types.ts index 7c1687a74b..93f0827c62 100644 --- a/packages/ui/src/components/interactive/CodeEditor/types.ts +++ b/packages/ui/src/components/interactive/CodeEditor/types.ts @@ -1,4 +1,4 @@ -import { BasicSetupOptions, Extension } from '@uiw/react-codemirror' +import type { BasicSetupOptions, Extension } from '@uiw/react-codemirror' export type CodeMirrorTheme = 'light' | 'dark' | 'none' | Extension diff --git a/packages/ui/src/components/interactive/CodeEditor/utils.ts b/packages/ui/src/components/interactive/CodeEditor/utils.ts index 10eb0452f8..7fb09fdb48 100644 --- a/packages/ui/src/components/interactive/CodeEditor/utils.ts +++ b/packages/ui/src/components/interactive/CodeEditor/utils.ts @@ -1,8 +1,8 @@ import * as cmThemes from '@uiw/codemirror-themes-all' -import { Extension } from '@uiw/react-codemirror' +import type { Extension } from '@uiw/react-codemirror' import diff from 'fast-diff' -import { CodeMirrorTheme, LanguageConfig } from './types' +import type { CodeMirrorTheme, LanguageConfig } from './types' /** * Computes code changes using fast-diff and converts them to CodeMirror changes. diff --git a/packages/ui/src/components/interactive/CollapsibleSearchBar/index.tsx b/packages/ui/src/components/interactive/CollapsibleSearchBar/index.tsx index 18c61f82e0..43a0ac60f4 100644 --- a/packages/ui/src/components/interactive/CollapsibleSearchBar/index.tsx +++ b/packages/ui/src/components/interactive/CollapsibleSearchBar/index.tsx @@ -1,5 +1,6 @@ // Original path: src/renderer/src/components/CollapsibleSearchBar.tsx -import { Input, InputRef, Tooltip } from 'antd' +import type { InputRef } from 'antd' +import { Input, Tooltip } from 'antd' import { Search } from 'lucide-react' import { motion } from 'motion/react' import React, { memo, useCallback, useEffect, useRef, useState } from 'react' diff --git a/packages/ui/src/components/interactive/DraggableList/list.tsx b/packages/ui/src/components/interactive/DraggableList/list.tsx index 0bd6b364c7..e7fcadbab9 100644 --- a/packages/ui/src/components/interactive/DraggableList/list.tsx +++ b/packages/ui/src/components/interactive/DraggableList/list.tsx @@ -1,15 +1,14 @@ // Original path: src/renderer/src/components/DraggableList/list.tsx -import { - DragDropContext, - Draggable, - Droppable, +import type { DroppableProps, DropResult, OnDragEndResponder, OnDragStartResponder, ResponderProvided } from '@hello-pangea/dnd' -import { HTMLAttributes, Key, useCallback } from 'react' +import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd' +import type { HTMLAttributes, Key } from 'react' +import { useCallback } from 'react' // Inline utility function from @renderer/utils function droppableReorder(list: T[], sourceIndex: number, destIndex: number, len: number = 1): T[] { diff --git a/packages/ui/src/components/interactive/DraggableList/useDraggableReorder.ts b/packages/ui/src/components/interactive/DraggableList/useDraggableReorder.ts index 96ebf15872..b3133c83ee 100644 --- a/packages/ui/src/components/interactive/DraggableList/useDraggableReorder.ts +++ b/packages/ui/src/components/interactive/DraggableList/useDraggableReorder.ts @@ -1,6 +1,7 @@ // Original path: src/renderer/src/components/DraggableList/useDraggableReorder.ts -import { DropResult } from '@hello-pangea/dnd' -import { Key, useCallback, useMemo } from 'react' +import type { DropResult } from '@hello-pangea/dnd' +import type { Key } from 'react' +import { useCallback, useMemo } from 'react' interface UseDraggableReorderParams { /** 原始的、完整的数据列表 */ diff --git a/packages/ui/src/components/interactive/DraggableList/virtual-list.tsx b/packages/ui/src/components/interactive/DraggableList/virtual-list.tsx index a792697197..794d2204eb 100644 --- a/packages/ui/src/components/interactive/DraggableList/virtual-list.tsx +++ b/packages/ui/src/components/interactive/DraggableList/virtual-list.tsx @@ -1,14 +1,12 @@ import { Scrollbar } from '@cherrystudio/ui' -import { - DragDropContext, - Draggable, - Droppable, +import type { DroppableProps, DropResult, OnDragEndResponder, OnDragStartResponder, ResponderProvided } from '@hello-pangea/dnd' +import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd' import { type ScrollToOptions, useVirtualizer, type VirtualItem } from '@tanstack/react-virtual' import { type Key, memo, useCallback, useImperativeHandle, useRef } from 'react' diff --git a/packages/ui/src/components/interactive/EditableNumber/index.tsx b/packages/ui/src/components/interactive/EditableNumber/index.tsx index e335df8160..a89a4bea7d 100644 --- a/packages/ui/src/components/interactive/EditableNumber/index.tsx +++ b/packages/ui/src/components/interactive/EditableNumber/index.tsx @@ -1,6 +1,7 @@ // Original path: src/renderer/src/components/EditableNumber/index.tsx import { InputNumber } from 'antd' -import { FC, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useRef, useState } from 'react' import styled from 'styled-components' export interface EditableNumberProps { diff --git a/packages/ui/src/components/interactive/HelpTooltip/index.tsx b/packages/ui/src/components/interactive/HelpTooltip/index.tsx index 8a6b9bd64c..592f6ae2ad 100644 --- a/packages/ui/src/components/interactive/HelpTooltip/index.tsx +++ b/packages/ui/src/components/interactive/HelpTooltip/index.tsx @@ -1,5 +1,6 @@ // Original path: src/renderer/src/components/TooltipIcons/HelpTooltip.tsx -import { Tooltip, TooltipProps } from 'antd' +import type { TooltipProps } from 'antd' +import { Tooltip } from 'antd' import { HelpCircle } from 'lucide-react' type InheritedTooltipProps = Omit diff --git a/packages/ui/src/components/interactive/InfoPopover/index.tsx b/packages/ui/src/components/interactive/InfoPopover/index.tsx index c8f871e459..13ead1dd04 100644 --- a/packages/ui/src/components/interactive/InfoPopover/index.tsx +++ b/packages/ui/src/components/interactive/InfoPopover/index.tsx @@ -1,5 +1,6 @@ // Original path: src/renderer/src/components/InfoPopover.tsx -import { Popover, PopoverProps } from 'antd' +import type { PopoverProps } from 'antd' +import { Popover } from 'antd' import { Info } from 'lucide-react' type InheritedPopoverProps = Omit diff --git a/packages/ui/src/components/interactive/InfoTooltip/index.tsx b/packages/ui/src/components/interactive/InfoTooltip/index.tsx index dee06bdd02..34d9ba7968 100644 --- a/packages/ui/src/components/interactive/InfoTooltip/index.tsx +++ b/packages/ui/src/components/interactive/InfoTooltip/index.tsx @@ -1,5 +1,6 @@ // Original: src/renderer/src/components/TooltipIcons/InfoTooltip.tsx -import { Tooltip, TooltipProps } from 'antd' +import type { TooltipProps } from 'antd' +import { Tooltip } from 'antd' import { Info } from 'lucide-react' type InheritedTooltipProps = Omit diff --git a/packages/ui/src/components/interactive/Selector/index.tsx b/packages/ui/src/components/interactive/Selector/index.tsx index 03710a4246..c9fa13aa84 100644 --- a/packages/ui/src/components/interactive/Selector/index.tsx +++ b/packages/ui/src/components/interactive/Selector/index.tsx @@ -1,7 +1,9 @@ // Original path: src/renderer/src/components/Selector.tsx -import { Dropdown, DropdownProps } from 'antd' +import type { DropdownProps } from 'antd' +import { Dropdown } from 'antd' import { Check, ChevronsUpDown } from 'lucide-react' -import { ReactNode, useEffect, useMemo, useRef, useState } from 'react' +import type { ReactNode } from 'react' +import { useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled, { css } from 'styled-components' diff --git a/packages/ui/src/components/interactive/WarnTooltip/index.tsx b/packages/ui/src/components/interactive/WarnTooltip/index.tsx index 96397a82ea..f0dc05ce4e 100644 --- a/packages/ui/src/components/interactive/WarnTooltip/index.tsx +++ b/packages/ui/src/components/interactive/WarnTooltip/index.tsx @@ -1,5 +1,6 @@ // Original path: src/renderer/src/components/TooltipIcons/WarnTooltip.tsx -import { Tooltip, TooltipProps } from 'antd' +import type { TooltipProps } from 'antd' +import { Tooltip } from 'antd' import { AlertTriangle } from 'lucide-react' type InheritedTooltipProps = Omit diff --git a/packages/ui/src/components/layout/Scrollbar/index.tsx b/packages/ui/src/components/layout/Scrollbar/index.tsx index 4081a716ad..238b797f1f 100644 --- a/packages/ui/src/components/layout/Scrollbar/index.tsx +++ b/packages/ui/src/components/layout/Scrollbar/index.tsx @@ -1,6 +1,7 @@ // Original: src/renderer/src/components/Scrollbar/index.tsx import { throttle } from 'lodash' -import { FC, useCallback, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import styled from 'styled-components' export interface ScrollbarProps extends Omit, 'onScroll'> { diff --git a/packages/ui/stories/components/base/ErrorBoundary.stories.tsx b/packages/ui/stories/components/base/ErrorBoundary.stories.tsx index 55f31b3b68..16e9ea39f2 100644 --- a/packages/ui/stories/components/base/ErrorBoundary.stories.tsx +++ b/packages/ui/stories/components/base/ErrorBoundary.stories.tsx @@ -2,7 +2,8 @@ import { Button } from '@heroui/react' import type { Meta, StoryObj } from '@storybook/react' import { useState } from 'react' -import { CustomFallbackProps, ErrorBoundary } from '../../../src/components/base/ErrorBoundary' +import type { CustomFallbackProps } from '../../../src/components/base/ErrorBoundary' +import { ErrorBoundary } from '../../../src/components/base/ErrorBoundary' // 错误组件 - 用于触发错误 const ThrowErrorComponent = ({ shouldThrow = false, errorMessage = '这是一个模拟错误' }) => { diff --git a/packages/ui/stories/components/interactive/CodeEditor.stories.tsx b/packages/ui/stories/components/interactive/CodeEditor.stories.tsx index b25001f81d..845dca5f02 100644 --- a/packages/ui/stories/components/interactive/CodeEditor.stories.tsx +++ b/packages/ui/stories/components/interactive/CodeEditor.stories.tsx @@ -1,11 +1,8 @@ import type { Meta, StoryObj } from '@storybook/react-vite' import { action } from 'storybook/actions' -import CodeEditor, { - getCmThemeByName, - getCmThemeNames, - LanguageConfig -} from '../../../src/components/interactive/CodeEditor' +import type { LanguageConfig } from '../../../src/components/interactive/CodeEditor' +import CodeEditor, { getCmThemeByName, getCmThemeNames } from '../../../src/components/interactive/CodeEditor' // 示例语言配置 - 为 Storybook 提供更丰富的语言支持演示 const exampleLanguageConfig: LanguageConfig = { diff --git a/src/main/apiServer/config.ts b/src/main/apiServer/config.ts index 8bc4922968..d1aac85dad 100644 --- a/src/main/apiServer/config.ts +++ b/src/main/apiServer/config.ts @@ -1,4 +1,4 @@ -import { ApiServerConfig } from '@types' +import type { ApiServerConfig } from '@types' import { v4 as uuidv4 } from 'uuid' import { loggerService } from '../services/LoggerService' diff --git a/src/main/apiServer/middleware/auth.ts b/src/main/apiServer/middleware/auth.ts index 02cf017247..2c2838756e 100644 --- a/src/main/apiServer/middleware/auth.ts +++ b/src/main/apiServer/middleware/auth.ts @@ -1,5 +1,5 @@ import crypto from 'crypto' -import { NextFunction, Request, Response } from 'express' +import type { NextFunction, Request, Response } from 'express' import { config } from '../config' diff --git a/src/main/apiServer/middleware/error.ts b/src/main/apiServer/middleware/error.ts index 6aa1819ddd..56a2ec54f3 100644 --- a/src/main/apiServer/middleware/error.ts +++ b/src/main/apiServer/middleware/error.ts @@ -1,4 +1,4 @@ -import { NextFunction, Request, Response } from 'express' +import type { NextFunction, Request, Response } from 'express' import { loggerService } from '../../services/LoggerService' diff --git a/src/main/apiServer/middleware/openapi.ts b/src/main/apiServer/middleware/openapi.ts index 691bd8ec96..596d3089d7 100644 --- a/src/main/apiServer/middleware/openapi.ts +++ b/src/main/apiServer/middleware/openapi.ts @@ -1,4 +1,4 @@ -import { Express } from 'express' +import type { Express } from 'express' import swaggerJSDoc from 'swagger-jsdoc' import swaggerUi from 'swagger-ui-express' diff --git a/src/main/apiServer/routes/chat.ts b/src/main/apiServer/routes/chat.ts index be43d866a4..f9c9c357e6 100644 --- a/src/main/apiServer/routes/chat.ts +++ b/src/main/apiServer/routes/chat.ts @@ -1,6 +1,7 @@ -import express, { Request, Response } from 'express' +import type { Request, Response } from 'express' +import express from 'express' import OpenAI from 'openai' -import { ChatCompletionCreateParams } from 'openai/resources' +import type { ChatCompletionCreateParams } from 'openai/resources' import { loggerService } from '../../services/LoggerService' import { chatCompletionService } from '../services/chat-completion' diff --git a/src/main/apiServer/routes/mcp.ts b/src/main/apiServer/routes/mcp.ts index 1e154ee583..e36c57ed36 100644 --- a/src/main/apiServer/routes/mcp.ts +++ b/src/main/apiServer/routes/mcp.ts @@ -1,4 +1,5 @@ -import express, { Request, Response } from 'express' +import type { Request, Response } from 'express' +import express from 'express' import { loggerService } from '../../services/LoggerService' import { mcpApiService } from '../services/mcp' diff --git a/src/main/apiServer/routes/models.ts b/src/main/apiServer/routes/models.ts index 9f4d2f13c9..f4761d688c 100644 --- a/src/main/apiServer/routes/models.ts +++ b/src/main/apiServer/routes/models.ts @@ -1,4 +1,5 @@ -import express, { Request, Response } from 'express' +import type { Request, Response } from 'express' +import express from 'express' import { loggerService } from '../../services/LoggerService' import { chatCompletionService } from '../services/chat-completion' diff --git a/src/main/apiServer/services/chat-completion.ts b/src/main/apiServer/services/chat-completion.ts index 7df6226706..5ea077eb59 100644 --- a/src/main/apiServer/services/chat-completion.ts +++ b/src/main/apiServer/services/chat-completion.ts @@ -1,12 +1,12 @@ import OpenAI from 'openai' -import { ChatCompletionCreateParams } from 'openai/resources' +import type { ChatCompletionCreateParams } from 'openai/resources' import { loggerService } from '../../services/LoggerService' +import type { OpenAICompatibleModel } from '../utils' import { getProviderByModel, getRealProviderModel, listAllAvailableModels, - OpenAICompatibleModel, transformModelToOpenAI, validateProvider } from '../utils' diff --git a/src/main/apiServer/services/mcp.ts b/src/main/apiServer/services/mcp.ts index 99f1732114..c743077f1f 100644 --- a/src/main/apiServer/services/mcp.ts +++ b/src/main/apiServer/services/mcp.ts @@ -1,16 +1,12 @@ import mcpService from '@main/services/MCPService' import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp' -import { - isJSONRPCRequest, - JSONRPCMessage, - JSONRPCMessageSchema, - MessageExtraInfo -} from '@modelcontextprotocol/sdk/types' -import { MCPServer } from '@types' +import type { JSONRPCMessage, MessageExtraInfo } from '@modelcontextprotocol/sdk/types' +import { isJSONRPCRequest, JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types' +import type { MCPServer } from '@types' import { randomUUID } from 'crypto' import { EventEmitter } from 'events' -import { Request, Response } from 'express' -import { IncomingMessage, ServerResponse } from 'http' +import type { Request, Response } from 'express' +import type { IncomingMessage, ServerResponse } from 'http' import { loggerService } from '../../services/LoggerService' import { reduxService } from '../../services/ReduxService' diff --git a/src/main/apiServer/utils/index.ts b/src/main/apiServer/utils/index.ts index 9d3b81c328..9db91282c0 100644 --- a/src/main/apiServer/utils/index.ts +++ b/src/main/apiServer/utils/index.ts @@ -1,6 +1,6 @@ import { loggerService } from '@main/services/LoggerService' import { reduxService } from '@main/services/ReduxService' -import { Model, Provider } from '@types' +import type { Model, Provider } from '@types' const logger = loggerService.withContext('ApiServerUtils') diff --git a/src/main/apiServer/utils/mcp.ts b/src/main/apiServer/utils/mcp.ts index 1ebe06ba68..983d0ff706 100644 --- a/src/main/apiServer/utils/mcp.ts +++ b/src/main/apiServer/utils/mcp.ts @@ -1,7 +1,8 @@ import mcpService from '@main/services/MCPService' import { Server } from '@modelcontextprotocol/sdk/server/index.js' -import { CallToolRequestSchema, ListToolsRequestSchema, ListToolsResult } from '@modelcontextprotocol/sdk/types.js' -import { MCPServer } from '@types' +import type { ListToolsResult } from '@modelcontextprotocol/sdk/types.js' +import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js' +import type { MCPServer } from '@types' import { loggerService } from '../../services/LoggerService' import { reduxService } from '../../services/ReduxService' diff --git a/src/main/data/api/core/adapters/IpcAdapter.ts b/src/main/data/api/core/adapters/IpcAdapter.ts index ee5e7ca345..7d17264388 100644 --- a/src/main/data/api/core/adapters/IpcAdapter.ts +++ b/src/main/data/api/core/adapters/IpcAdapter.ts @@ -4,7 +4,7 @@ import { toDataApiError } from '@shared/data/api/errorCodes' import { IpcChannel } from '@shared/IpcChannel' import { ipcMain } from 'electron' -import { ApiServer } from '../ApiServer' +import type { ApiServer } from '../ApiServer' const logger = loggerService.withContext('DataApiIpcAdapter') diff --git a/src/main/data/migrate/dataRefactor/migrators/PreferencesMigrator.ts b/src/main/data/migrate/dataRefactor/migrators/PreferencesMigrator.ts index 02c28e1e2b..495570511b 100644 --- a/src/main/data/migrate/dataRefactor/migrators/PreferencesMigrator.ts +++ b/src/main/data/migrate/dataRefactor/migrators/PreferencesMigrator.ts @@ -5,7 +5,7 @@ import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas' import { and, eq } from 'drizzle-orm' import { configManager } from '../../../../services/ConfigManager' -import { DataRefactorMigrateService } from '../DataRefactorMigrateService' +import type { DataRefactorMigrateService } from '../DataRefactorMigrateService' import { ELECTRON_STORE_MAPPINGS, REDUX_STORE_MAPPINGS } from './PreferencesMappings' const logger = loggerService.withContext('PreferencesMigrator') diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 7a3633d5ef..584bc131d2 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -10,13 +10,14 @@ import { generateSignature } from '@main/integration/cherryin' import anthropicService from '@main/services/AnthropicService' import { getBinaryPath, isBinaryExists, runInstallScript } from '@main/utils/process' import { handleZoomFactor } from '@main/utils/zoom' -import { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' +import type { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' import { MIN_WINDOW_HEIGHT, MIN_WINDOW_WIDTH } from '@shared/config/constant' -import { UpgradeChannel } from '@shared/data/preference/preferenceTypes' +import type { UpgradeChannel } from '@shared/data/preference/preferenceTypes' import { IpcChannel } from '@shared/IpcChannel' -import { FileMetadata, Notification, OcrProvider, Provider, Shortcut, SupportedOcrFile } from '@types' +import type { FileMetadata, Notification, OcrProvider, Provider, Shortcut, SupportedOcrFile } from '@types' import checkDiskSpace from 'check-disk-space' -import { BrowserWindow, dialog, ipcMain, ProxyConfig, session, shell, systemPreferences, webContents } from 'electron' +import type { ProxyConfig } from 'electron' +import { BrowserWindow, dialog, ipcMain, session, shell, systemPreferences, webContents } from 'electron' import fontList from 'font-list' import { apiServerService } from './services/ApiServerService' diff --git a/src/main/knowledge/embedjs/embeddings/Embeddings.ts b/src/main/knowledge/embedjs/embeddings/Embeddings.ts index 17bb8ff470..3f5b6ced15 100644 --- a/src/main/knowledge/embedjs/embeddings/Embeddings.ts +++ b/src/main/knowledge/embedjs/embeddings/Embeddings.ts @@ -1,6 +1,6 @@ import type { BaseEmbeddings } from '@cherrystudio/embedjs-interfaces' import { TraceMethod } from '@mcp-trace/trace-core' -import { ApiClient } from '@types' +import type { ApiClient } from '@types' import EmbeddingsFactory from './EmbeddingsFactory' diff --git a/src/main/knowledge/embedjs/embeddings/EmbeddingsFactory.ts b/src/main/knowledge/embedjs/embeddings/EmbeddingsFactory.ts index 7435ad2bb0..91b2d8761e 100644 --- a/src/main/knowledge/embedjs/embeddings/EmbeddingsFactory.ts +++ b/src/main/knowledge/embedjs/embeddings/EmbeddingsFactory.ts @@ -2,7 +2,7 @@ import type { BaseEmbeddings } from '@cherrystudio/embedjs-interfaces' import { OllamaEmbeddings } from '@cherrystudio/embedjs-ollama' import { OpenAiEmbeddings } from '@cherrystudio/embedjs-openai' import { AzureOpenAiEmbeddings } from '@cherrystudio/embedjs-openai/src/azure-openai-embeddings' -import { ApiClient } from '@types' +import type { ApiClient } from '@types' import { VoyageEmbeddings } from './VoyageEmbeddings' diff --git a/src/main/knowledge/embedjs/loader/index.ts b/src/main/knowledge/embedjs/loader/index.ts index 4b38418194..9f1efd268c 100644 --- a/src/main/knowledge/embedjs/loader/index.ts +++ b/src/main/knowledge/embedjs/loader/index.ts @@ -1,10 +1,11 @@ -import { JsonLoader, LocalPathLoader, RAGApplication, TextLoader } from '@cherrystudio/embedjs' +import type { RAGApplication } from '@cherrystudio/embedjs' +import { JsonLoader, LocalPathLoader, TextLoader } from '@cherrystudio/embedjs' import type { AddLoaderReturn } from '@cherrystudio/embedjs-interfaces' import { WebLoader } from '@cherrystudio/embedjs-loader-web' import { loggerService } from '@logger' import { readTextFileWithAutoEncoding } from '@main/utils/file' -import { LoaderReturn } from '@shared/config/types' -import { FileMetadata, KnowledgeBaseParams } from '@types' +import type { LoaderReturn } from '@shared/config/types' +import type { FileMetadata, KnowledgeBaseParams } from '@types' import { DraftsExportLoader } from './draftsExportLoader' import { EpubLoader } from './epubLoader' diff --git a/src/main/knowledge/embedjs/loader/odLoader.ts b/src/main/knowledge/embedjs/loader/odLoader.ts index 03825bf4db..7e325966af 100644 --- a/src/main/knowledge/embedjs/loader/odLoader.ts +++ b/src/main/knowledge/embedjs/loader/odLoader.ts @@ -3,7 +3,8 @@ import { cleanString } from '@cherrystudio/embedjs-utils' import { RecursiveCharacterTextSplitter } from '@langchain/textsplitters' import { loggerService } from '@logger' import md5 from 'md5' -import { OfficeParserConfig, parseOfficeAsync } from 'officeparser' +import type { OfficeParserConfig } from 'officeparser' +import { parseOfficeAsync } from 'officeparser' const logger = loggerService.withContext('OdLoader') diff --git a/src/main/knowledge/preprocess/BasePreprocessProvider.ts b/src/main/knowledge/preprocess/BasePreprocessProvider.ts index daf9901498..ed4a5fb8d4 100644 --- a/src/main/knowledge/preprocess/BasePreprocessProvider.ts +++ b/src/main/knowledge/preprocess/BasePreprocessProvider.ts @@ -4,7 +4,7 @@ import path from 'node:path' import { loggerService } from '@logger' import { windowService } from '@main/services/WindowService' import { getFileExt, getTempDir } from '@main/utils/file' -import { FileMetadata, PreprocessProvider } from '@types' +import type { FileMetadata, PreprocessProvider } from '@types' import { PDFDocument } from 'pdf-lib' const logger = loggerService.withContext('BasePreprocessProvider') diff --git a/src/main/knowledge/preprocess/DefaultPreprocessProvider.ts b/src/main/knowledge/preprocess/DefaultPreprocessProvider.ts index 3899a3d25a..64169d935e 100644 --- a/src/main/knowledge/preprocess/DefaultPreprocessProvider.ts +++ b/src/main/knowledge/preprocess/DefaultPreprocessProvider.ts @@ -1,4 +1,4 @@ -import { FileMetadata, PreprocessProvider } from '@types' +import type { FileMetadata, PreprocessProvider } from '@types' import BasePreprocessProvider from './BasePreprocessProvider' diff --git a/src/main/knowledge/preprocess/Doc2xPreprocessProvider.ts b/src/main/knowledge/preprocess/Doc2xPreprocessProvider.ts index 6708e8f938..4e2fb09609 100644 --- a/src/main/knowledge/preprocess/Doc2xPreprocessProvider.ts +++ b/src/main/knowledge/preprocess/Doc2xPreprocessProvider.ts @@ -3,7 +3,7 @@ import path from 'node:path' import { loggerService } from '@logger' import { fileStorage } from '@main/services/FileStorage' -import { FileMetadata, PreprocessProvider } from '@types' +import type { FileMetadata, PreprocessProvider } from '@types' import AdmZip from 'adm-zip' import { net } from 'electron' diff --git a/src/main/knowledge/preprocess/MineruPreprocessProvider.ts b/src/main/knowledge/preprocess/MineruPreprocessProvider.ts index 1976f64c05..0e93af674a 100644 --- a/src/main/knowledge/preprocess/MineruPreprocessProvider.ts +++ b/src/main/knowledge/preprocess/MineruPreprocessProvider.ts @@ -3,7 +3,7 @@ import path from 'node:path' import { loggerService } from '@logger' import { fileStorage } from '@main/services/FileStorage' -import { FileMetadata, PreprocessProvider } from '@types' +import type { FileMetadata, PreprocessProvider } from '@types' import AdmZip from 'adm-zip' import { net } from 'electron' diff --git a/src/main/knowledge/preprocess/MistralPreprocessProvider.ts b/src/main/knowledge/preprocess/MistralPreprocessProvider.ts index d5ad3d4e14..a8f7b350ee 100644 --- a/src/main/knowledge/preprocess/MistralPreprocessProvider.ts +++ b/src/main/knowledge/preprocess/MistralPreprocessProvider.ts @@ -4,11 +4,12 @@ import { loggerService } from '@logger' import { fileStorage } from '@main/services/FileStorage' import { MistralClientManager } from '@main/services/MistralClientManager' import { MistralService } from '@main/services/remotefile/MistralService' -import { Mistral } from '@mistralai/mistralai' -import { DocumentURLChunk } from '@mistralai/mistralai/models/components/documenturlchunk' -import { ImageURLChunk } from '@mistralai/mistralai/models/components/imageurlchunk' -import { OCRResponse } from '@mistralai/mistralai/models/components/ocrresponse' -import { FileMetadata, FileTypes, PreprocessProvider, Provider } from '@types' +import type { Mistral } from '@mistralai/mistralai' +import type { DocumentURLChunk } from '@mistralai/mistralai/models/components/documenturlchunk' +import type { ImageURLChunk } from '@mistralai/mistralai/models/components/imageurlchunk' +import type { OCRResponse } from '@mistralai/mistralai/models/components/ocrresponse' +import type { FileMetadata, PreprocessProvider, Provider } from '@types' +import { FileTypes } from '@types' import path from 'path' import BasePreprocessProvider from './BasePreprocessProvider' diff --git a/src/main/knowledge/preprocess/PreprocessProvider.ts b/src/main/knowledge/preprocess/PreprocessProvider.ts index 44a34f64ae..f0b3d8f12e 100644 --- a/src/main/knowledge/preprocess/PreprocessProvider.ts +++ b/src/main/knowledge/preprocess/PreprocessProvider.ts @@ -1,6 +1,6 @@ -import { FileMetadata, PreprocessProvider as Provider } from '@types' +import type { FileMetadata, PreprocessProvider as Provider } from '@types' -import BasePreprocessProvider from './BasePreprocessProvider' +import type BasePreprocessProvider from './BasePreprocessProvider' import PreprocessProviderFactory from './PreprocessProviderFactory' export default class PreprocessProvider { diff --git a/src/main/knowledge/preprocess/PreprocessProviderFactory.ts b/src/main/knowledge/preprocess/PreprocessProviderFactory.ts index bebecd388f..dce1cef047 100644 --- a/src/main/knowledge/preprocess/PreprocessProviderFactory.ts +++ b/src/main/knowledge/preprocess/PreprocessProviderFactory.ts @@ -1,6 +1,6 @@ -import { PreprocessProvider } from '@types' +import type { PreprocessProvider } from '@types' -import BasePreprocessProvider from './BasePreprocessProvider' +import type BasePreprocessProvider from './BasePreprocessProvider' import DefaultPreprocessProvider from './DefaultPreprocessProvider' import Doc2xPreprocessProvider from './Doc2xPreprocessProvider' import MineruPreprocessProvider from './MineruPreprocessProvider' diff --git a/src/main/knowledge/reranker/BaseReranker.ts b/src/main/knowledge/reranker/BaseReranker.ts index 9483cb3d4e..b0dc258ef5 100644 --- a/src/main/knowledge/reranker/BaseReranker.ts +++ b/src/main/knowledge/reranker/BaseReranker.ts @@ -1,7 +1,7 @@ import { DEFAULT_DOCUMENT_COUNT, DEFAULT_RELEVANT_SCORE } from '@main/utils/knowledge' -import { KnowledgeBaseParams, KnowledgeSearchResult } from '@types' +import type { KnowledgeBaseParams, KnowledgeSearchResult } from '@types' -import { MultiModalDocument, RerankStrategy } from './strategies/RerankStrategy' +import type { MultiModalDocument, RerankStrategy } from './strategies/RerankStrategy' import { StrategyFactory } from './strategies/StrategyFactory' export default abstract class BaseReranker { diff --git a/src/main/knowledge/reranker/GeneralReranker.ts b/src/main/knowledge/reranker/GeneralReranker.ts index e4b3503606..e0c16da32b 100644 --- a/src/main/knowledge/reranker/GeneralReranker.ts +++ b/src/main/knowledge/reranker/GeneralReranker.ts @@ -1,4 +1,4 @@ -import { KnowledgeBaseParams, KnowledgeSearchResult } from '@types' +import type { KnowledgeBaseParams, KnowledgeSearchResult } from '@types' import { net } from 'electron' import BaseReranker from './BaseReranker' diff --git a/src/main/knowledge/reranker/Reranker.ts b/src/main/knowledge/reranker/Reranker.ts index 59de4b0470..26cb61f6b9 100644 --- a/src/main/knowledge/reranker/Reranker.ts +++ b/src/main/knowledge/reranker/Reranker.ts @@ -1,4 +1,4 @@ -import { KnowledgeBaseParams, KnowledgeSearchResult } from '@types' +import type { KnowledgeBaseParams, KnowledgeSearchResult } from '@types' import GeneralReranker from './GeneralReranker' diff --git a/src/main/knowledge/reranker/strategies/BailianStrategy.ts b/src/main/knowledge/reranker/strategies/BailianStrategy.ts index e5932b9f40..8953bfe859 100644 --- a/src/main/knowledge/reranker/strategies/BailianStrategy.ts +++ b/src/main/knowledge/reranker/strategies/BailianStrategy.ts @@ -1,4 +1,4 @@ -import { MultiModalDocument, RerankStrategy } from './RerankStrategy' +import type { MultiModalDocument, RerankStrategy } from './RerankStrategy' export class BailianStrategy implements RerankStrategy { buildUrl(): string { return 'https://dashscope.aliyuncs.com/api/v1/services/rerank/text-rerank/text-rerank' diff --git a/src/main/knowledge/reranker/strategies/DefaultStrategy.ts b/src/main/knowledge/reranker/strategies/DefaultStrategy.ts index 59ee3fb47b..9bd8e69f73 100644 --- a/src/main/knowledge/reranker/strategies/DefaultStrategy.ts +++ b/src/main/knowledge/reranker/strategies/DefaultStrategy.ts @@ -1,4 +1,4 @@ -import { MultiModalDocument, RerankStrategy } from './RerankStrategy' +import type { MultiModalDocument, RerankStrategy } from './RerankStrategy' export class DefaultStrategy implements RerankStrategy { buildUrl(baseURL?: string): string { if (baseURL && baseURL.endsWith('/')) { diff --git a/src/main/knowledge/reranker/strategies/JinaStrategy.ts b/src/main/knowledge/reranker/strategies/JinaStrategy.ts index 200190f544..b348f2f9bd 100644 --- a/src/main/knowledge/reranker/strategies/JinaStrategy.ts +++ b/src/main/knowledge/reranker/strategies/JinaStrategy.ts @@ -1,4 +1,4 @@ -import { MultiModalDocument, RerankStrategy } from './RerankStrategy' +import type { MultiModalDocument, RerankStrategy } from './RerankStrategy' export class JinaStrategy implements RerankStrategy { buildUrl(baseURL?: string): string { if (baseURL && baseURL.endsWith('/')) { diff --git a/src/main/knowledge/reranker/strategies/StrategyFactory.ts b/src/main/knowledge/reranker/strategies/StrategyFactory.ts index 9e04547e31..e0e782f722 100644 --- a/src/main/knowledge/reranker/strategies/StrategyFactory.ts +++ b/src/main/knowledge/reranker/strategies/StrategyFactory.ts @@ -1,7 +1,7 @@ import { BailianStrategy } from './BailianStrategy' import { DefaultStrategy } from './DefaultStrategy' import { JinaStrategy } from './JinaStrategy' -import { RerankStrategy } from './RerankStrategy' +import type { RerankStrategy } from './RerankStrategy' import { TEIStrategy } from './TeiStrategy' import { isTEIProvider, RERANKER_PROVIDERS } from './types' import { VoyageAIStrategy } from './VoyageStrategy' diff --git a/src/main/knowledge/reranker/strategies/TeiStrategy.ts b/src/main/knowledge/reranker/strategies/TeiStrategy.ts index 58f24661ba..df92f1ea5b 100644 --- a/src/main/knowledge/reranker/strategies/TeiStrategy.ts +++ b/src/main/knowledge/reranker/strategies/TeiStrategy.ts @@ -1,4 +1,4 @@ -import { MultiModalDocument, RerankStrategy } from './RerankStrategy' +import type { MultiModalDocument, RerankStrategy } from './RerankStrategy' export class TEIStrategy implements RerankStrategy { buildUrl(baseURL?: string): string { if (baseURL && baseURL.endsWith('/')) { diff --git a/src/main/knowledge/reranker/strategies/VoyageStrategy.ts b/src/main/knowledge/reranker/strategies/VoyageStrategy.ts index e81319f024..2bd13f85e3 100644 --- a/src/main/knowledge/reranker/strategies/VoyageStrategy.ts +++ b/src/main/knowledge/reranker/strategies/VoyageStrategy.ts @@ -1,4 +1,4 @@ -import { MultiModalDocument, RerankStrategy } from './RerankStrategy' +import type { MultiModalDocument, RerankStrategy } from './RerankStrategy' export class VoyageAIStrategy implements RerankStrategy { buildUrl(baseURL?: string): string { if (baseURL && baseURL.endsWith('/')) { diff --git a/src/main/mcpServers/brave-search.ts b/src/main/mcpServers/brave-search.ts index d11a4f2580..7ba6bb65fa 100644 --- a/src/main/mcpServers/brave-search.ts +++ b/src/main/mcpServers/brave-search.ts @@ -2,7 +2,8 @@ // port https://github.com/modelcontextprotocol/servers/blob/main/src/brave-search/index.ts import { Server } from '@modelcontextprotocol/sdk/server/index.js' -import { CallToolRequestSchema, ListToolsRequestSchema, Tool } from '@modelcontextprotocol/sdk/types.js' +import type { Tool } from '@modelcontextprotocol/sdk/types.js' +import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js' import { net } from 'electron' const WEB_SEARCH_TOOL: Tool = { diff --git a/src/main/mcpServers/factory.ts b/src/main/mcpServers/factory.ts index 46d3bb87d2..17631225a5 100644 --- a/src/main/mcpServers/factory.ts +++ b/src/main/mcpServers/factory.ts @@ -1,6 +1,7 @@ import { loggerService } from '@logger' -import { Server } from '@modelcontextprotocol/sdk/server/index.js' -import { BuiltinMCPServerName, BuiltinMCPServerNames } from '@types' +import type { Server } from '@modelcontextprotocol/sdk/server/index.js' +import type { BuiltinMCPServerName } from '@types' +import { BuiltinMCPServerNames } from '@types' import BraveSearchServer from './brave-search' import DifyKnowledgeServer from './dify-knowledge' diff --git a/src/main/mcpServers/sequentialthinking.ts b/src/main/mcpServers/sequentialthinking.ts index 90c1c329d5..485e0279e7 100644 --- a/src/main/mcpServers/sequentialthinking.ts +++ b/src/main/mcpServers/sequentialthinking.ts @@ -3,7 +3,8 @@ import { loggerService } from '@logger' import { Server } from '@modelcontextprotocol/sdk/server/index.js' -import { CallToolRequestSchema, ListToolsRequestSchema, Tool } from '@modelcontextprotocol/sdk/types.js' +import type { Tool } from '@modelcontextprotocol/sdk/types.js' +import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js' // Fixed chalk import for ESM import chalk from 'chalk' diff --git a/src/main/services/ApiServerService.ts b/src/main/services/ApiServerService.ts index 9a7bfad7e0..8d2ebc4acb 100644 --- a/src/main/services/ApiServerService.ts +++ b/src/main/services/ApiServerService.ts @@ -1,5 +1,5 @@ import { IpcChannel } from '@shared/IpcChannel' -import { ApiServerConfig } from '@types' +import type { ApiServerConfig } from '@types' import { ipcMain } from 'electron' import { apiServer } from '../apiServer' diff --git a/src/main/services/AppUpdater.ts b/src/main/services/AppUpdater.ts index 90fe41ca94..bdef43392d 100644 --- a/src/main/services/AppUpdater.ts +++ b/src/main/services/AppUpdater.ts @@ -7,9 +7,12 @@ import { generateUserAgent } from '@main/utils/systemInfo' import { FeedUrl } from '@shared/config/constant' import { UpgradeChannel } from '@shared/data/preference/preferenceTypes' import { IpcChannel } from '@shared/IpcChannel' -import { CancellationToken, UpdateInfo } from 'builder-util-runtime' -import { app, BrowserWindow, dialog, net } from 'electron' -import { AppUpdater as _AppUpdater, autoUpdater, Logger, NsisUpdater, UpdateCheckResult } from 'electron-updater' +import type { UpdateInfo } from 'builder-util-runtime' +import { CancellationToken } from 'builder-util-runtime' +import type { BrowserWindow } from 'electron' +import { app, dialog, net } from 'electron' +import type { AppUpdater as _AppUpdater, Logger, NsisUpdater, UpdateCheckResult } from 'electron-updater' +import { autoUpdater } from 'electron-updater' import path from 'path' import semver from 'semver' diff --git a/src/main/services/BackupManager.ts b/src/main/services/BackupManager.ts index c6d3ee1841..f331254fdf 100644 --- a/src/main/services/BackupManager.ts +++ b/src/main/services/BackupManager.ts @@ -1,14 +1,14 @@ import { loggerService } from '@logger' import { IpcChannel } from '@shared/IpcChannel' -import { WebDavConfig } from '@types' -import { S3Config } from '@types' +import type { WebDavConfig } from '@types' +import type { S3Config } from '@types' import archiver from 'archiver' import { exec } from 'child_process' import { app } from 'electron' import * as fs from 'fs-extra' import StreamZip from 'node-stream-zip' import * as path from 'path' -import { CreateDirectoryOptions, FileStat } from 'webdav' +import type { CreateDirectoryOptions, FileStat } from 'webdav' import { getDataPath } from '../utils' import S3Storage from './S3Storage' diff --git a/src/main/services/ConfigManager.ts b/src/main/services/ConfigManager.ts index 599ea23ac7..c365016cdd 100644 --- a/src/main/services/ConfigManager.ts +++ b/src/main/services/ConfigManager.ts @@ -1,5 +1,5 @@ import { ZOOM_SHORTCUTS } from '@shared/config/constant' -import { Shortcut } from '@types' +import type { Shortcut } from '@types' import Store from 'electron-store' export enum ConfigKeys { diff --git a/src/main/services/ContextMenu.ts b/src/main/services/ContextMenu.ts index 1aae46c233..ab81ff8eb0 100644 --- a/src/main/services/ContextMenu.ts +++ b/src/main/services/ContextMenu.ts @@ -1,5 +1,6 @@ import { getI18n } from '@main/utils/language' -import { Menu, MenuItemConstructorOptions } from 'electron' +import type { MenuItemConstructorOptions } from 'electron' +import { Menu } from 'electron' class ContextMenu { public contextMenu(w: Electron.WebContents) { diff --git a/src/main/services/FileStorage.ts b/src/main/services/FileStorage.ts index 985f6dfef9..8f29f2d7b3 100644 --- a/src/main/services/FileStorage.ts +++ b/src/main/services/FileStorage.ts @@ -10,19 +10,13 @@ import { scanDir } from '@main/utils/file' import { documentExts, imageExts, KB, MB } from '@shared/config/constant' -import { FileMetadata, NotesTreeNode } from '@types' +import type { FileMetadata, NotesTreeNode } from '@types' import chardet from 'chardet' -import chokidar, { FSWatcher } from 'chokidar' +import type { FSWatcher } from 'chokidar' +import chokidar from 'chokidar' import * as crypto from 'crypto' -import { - dialog, - net, - OpenDialogOptions, - OpenDialogReturnValue, - SaveDialogOptions, - SaveDialogReturnValue, - shell -} from 'electron' +import type { OpenDialogOptions, OpenDialogReturnValue, SaveDialogOptions, SaveDialogReturnValue } from 'electron' +import { dialog, net, shell } from 'electron' import * as fs from 'fs' import { writeFileSync } from 'fs' import { readFile } from 'fs/promises' diff --git a/src/main/services/KnowledgeService.ts b/src/main/services/KnowledgeService.ts index 1ccd25008d..856667595f 100644 --- a/src/main/services/KnowledgeService.ts +++ b/src/main/services/KnowledgeService.ts @@ -16,7 +16,8 @@ import * as fs from 'node:fs' import path from 'node:path' -import { RAGApplication, RAGApplicationBuilder } from '@cherrystudio/embedjs' +import type { RAGApplication } from '@cherrystudio/embedjs' +import { RAGApplicationBuilder } from '@cherrystudio/embedjs' import { LibSqlDb } from '@cherrystudio/embedjs-libsql' import { SitemapLoader } from '@cherrystudio/embedjs-loader-sitemap' import { WebLoader } from '@cherrystudio/embedjs-loader-web' @@ -34,7 +35,7 @@ import { TraceMethod } from '@mcp-trace/trace-core' import { MB } from '@shared/config/constant' import type { LoaderReturn } from '@shared/config/types' import { IpcChannel } from '@shared/IpcChannel' -import { FileMetadata, KnowledgeBaseParams, KnowledgeItem, KnowledgeSearchResult } from '@types' +import type { FileMetadata, KnowledgeBaseParams, KnowledgeItem, KnowledgeSearchResult } from '@types' import { v4 as uuidv4 } from 'uuid' const logger = loggerService.withContext('MainKnowledgeService') diff --git a/src/main/services/MCPService.ts b/src/main/services/MCPService.ts index f75b1f99a8..9da600b97b 100644 --- a/src/main/services/MCPService.ts +++ b/src/main/services/MCPService.ts @@ -10,7 +10,8 @@ import { buildFunctionCallToolName } from '@main/utils/mcp' import { getBinaryName, getBinaryPath } from '@main/utils/process' import { TraceMethod, withSpanFunc } from '@mcp-trace/trace-core' import { Client } from '@modelcontextprotocol/sdk/client/index.js' -import { SSEClientTransport, SSEClientTransportOptions } from '@modelcontextprotocol/sdk/client/sse.js' +import type { SSEClientTransportOptions } from '@modelcontextprotocol/sdk/client/sse.js' +import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js' import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js' import { StreamableHTTPClientTransport, @@ -29,7 +30,7 @@ import { ToolListChangedNotificationSchema } from '@modelcontextprotocol/sdk/types.js' import { nanoid } from '@reduxjs/toolkit' -import { MCPProgressEvent } from '@shared/config/types' +import type { MCPProgressEvent } from '@shared/config/types' import { IpcChannel } from '@shared/IpcChannel' import { defaultAppHeaders } from '@shared/utils' import { diff --git a/src/main/services/MistralClientManager.ts b/src/main/services/MistralClientManager.ts index c2efe35d1d..8f5a90f76e 100644 --- a/src/main/services/MistralClientManager.ts +++ b/src/main/services/MistralClientManager.ts @@ -1,5 +1,5 @@ import { Mistral } from '@mistralai/mistralai' -import { Provider } from '@types' +import type { Provider } from '@types' export class MistralClientManager { private static instance: MistralClientManager diff --git a/src/main/services/NodeTraceService.ts b/src/main/services/NodeTraceService.ts index d2e4db20c9..70fd92a28b 100644 --- a/src/main/services/NodeTraceService.ts +++ b/src/main/services/NodeTraceService.ts @@ -2,7 +2,8 @@ import { loggerService } from '@logger' import { isDev } from '@main/constant' import { CacheBatchSpanProcessor, FunctionSpanExporter } from '@mcp-trace/trace-core' import { NodeTracer as MCPNodeTracer } from '@mcp-trace/trace-node/nodeTracer' -import { context, SpanContext, trace } from '@opentelemetry/api' +import type { SpanContext } from '@opentelemetry/api' +import { context, trace } from '@opentelemetry/api' import { BrowserWindow, ipcMain } from 'electron' import * as path from 'path' diff --git a/src/main/services/NotificationService.ts b/src/main/services/NotificationService.ts index fa9261aa7e..5a599b409d 100644 --- a/src/main/services/NotificationService.ts +++ b/src/main/services/NotificationService.ts @@ -1,4 +1,4 @@ -import { Notification } from '@types' +import type { Notification } from '@types' import { Notification as ElectronNotification } from 'electron' import { windowService } from './WindowService' diff --git a/src/main/services/ProxyManager.ts b/src/main/services/ProxyManager.ts index 0e188c1009..2526939168 100644 --- a/src/main/services/ProxyManager.ts +++ b/src/main/services/ProxyManager.ts @@ -1,6 +1,7 @@ import { loggerService } from '@logger' import axios from 'axios' -import { app, ProxyConfig, session } from 'electron' +import type { ProxyConfig } from 'electron' +import { app, session } from 'electron' import { socksDispatcher } from 'fetch-socks' import http from 'http' import https from 'https' diff --git a/src/main/services/PythonService.ts b/src/main/services/PythonService.ts index 13b4546e56..b4b2596831 100644 --- a/src/main/services/PythonService.ts +++ b/src/main/services/PythonService.ts @@ -1,6 +1,7 @@ import { randomUUID } from 'node:crypto' -import { BrowserWindow, ipcMain } from 'electron' +import type { BrowserWindow } from 'electron' +import { ipcMain } from 'electron' interface PythonExecutionRequest { id: string diff --git a/src/main/services/ShortcutService.ts b/src/main/services/ShortcutService.ts index 308617a33a..4f4e93256b 100644 --- a/src/main/services/ShortcutService.ts +++ b/src/main/services/ShortcutService.ts @@ -1,8 +1,9 @@ import { preferenceService } from '@data/PreferenceService' import { loggerService } from '@logger' import { handleZoomFactor } from '@main/utils/zoom' -import { Shortcut } from '@types' -import { BrowserWindow, globalShortcut } from 'electron' +import type { Shortcut } from '@types' +import type { BrowserWindow } from 'electron' +import { globalShortcut } from 'electron' import { configManager } from './ConfigManager' import selectionService from './SelectionService' diff --git a/src/main/services/SpanCacheService.ts b/src/main/services/SpanCacheService.ts index bafc310781..6d88a5cdc2 100644 --- a/src/main/services/SpanCacheService.ts +++ b/src/main/services/SpanCacheService.ts @@ -1,8 +1,9 @@ import { preferenceService } from '@data/PreferenceService' import { loggerService } from '@logger' -import { Attributes, convertSpanToSpanEntity, SpanEntity, TokenUsage, TraceCache } from '@mcp-trace/trace-core' +import type { Attributes, SpanEntity, TokenUsage, TraceCache } from '@mcp-trace/trace-core' +import { convertSpanToSpanEntity } from '@mcp-trace/trace-core' import { SpanStatusCode } from '@opentelemetry/api' -import { ReadableSpan } from '@opentelemetry/sdk-trace-base' +import type { ReadableSpan } from '@opentelemetry/sdk-trace-base' import fs from 'fs/promises' import * as os from 'os' import * as path from 'path' diff --git a/src/main/services/TrayService.ts b/src/main/services/TrayService.ts index ac4c12086b..ccabfe2ca0 100644 --- a/src/main/services/TrayService.ts +++ b/src/main/services/TrayService.ts @@ -1,7 +1,8 @@ import { preferenceService } from '@data/PreferenceService' import { isLinux, isMac, isWin } from '@main/constant' import { getI18n } from '@main/utils/language' -import { app, Menu, MenuItemConstructorOptions, nativeImage, nativeTheme, Tray } from 'electron' +import type { MenuItemConstructorOptions } from 'electron' +import { app, Menu, nativeImage, nativeTheme, Tray } from 'electron' import icon from '../../../build/tray_icon.png?asset' import iconDark from '../../../build/tray_icon_dark.png?asset' diff --git a/src/main/services/WebDav.ts b/src/main/services/WebDav.ts index 11a2d7ebfb..150227f98c 100644 --- a/src/main/services/WebDav.ts +++ b/src/main/services/WebDav.ts @@ -1,16 +1,16 @@ import { loggerService } from '@logger' -import { WebDavConfig } from '@types' +import type { WebDavConfig } from '@types' import https from 'https' import path from 'path' -import Stream from 'stream' -import { +import type Stream from 'stream' +import type { BufferLike, - createClient, CreateDirectoryOptions, GetFileContentsOptions, PutFileContentsOptions, WebDAVClient } from 'webdav' +import { createClient } from 'webdav' const logger = loggerService.withContext('WebDav') diff --git a/src/main/services/mcp/oauth/callback.ts b/src/main/services/mcp/oauth/callback.ts index 22d5b4c6bd..81d435f867 100644 --- a/src/main/services/mcp/oauth/callback.ts +++ b/src/main/services/mcp/oauth/callback.ts @@ -1,9 +1,9 @@ import { loggerService } from '@logger' -import EventEmitter from 'events' +import type EventEmitter from 'events' import http from 'http' import { URL } from 'url' -import { OAuthCallbackServerOptions } from './types' +import type { OAuthCallbackServerOptions } from './types' const logger = loggerService.withContext('MCP:OAuthCallbackServer') diff --git a/src/main/services/mcp/oauth/provider.ts b/src/main/services/mcp/oauth/provider.ts index 811ce8a275..29fdfc0c50 100644 --- a/src/main/services/mcp/oauth/provider.ts +++ b/src/main/services/mcp/oauth/provider.ts @@ -2,13 +2,17 @@ import path from 'node:path' import { loggerService } from '@logger' import { getConfigDir } from '@main/utils/file' -import { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth' -import { OAuthClientInformation, OAuthClientInformationFull, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth' +import type { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth' +import type { + OAuthClientInformation, + OAuthClientInformationFull, + OAuthTokens +} from '@modelcontextprotocol/sdk/shared/auth' import open from 'open' import { sanitizeUrl } from 'strict-url-sanitise' import { JsonFileStorage } from './storage' -import { OAuthProviderOptions } from './types' +import type { OAuthProviderOptions } from './types' const logger = loggerService.withContext('MCP:OAuthClientProvider') diff --git a/src/main/services/mcp/oauth/storage.ts b/src/main/services/mcp/oauth/storage.ts index d2dbb589cc..1a872d1e1c 100644 --- a/src/main/services/mcp/oauth/storage.ts +++ b/src/main/services/mcp/oauth/storage.ts @@ -1,5 +1,5 @@ import { loggerService } from '@logger' -import { +import type { OAuthClientInformation, OAuthClientInformationFull, OAuthTokens @@ -7,7 +7,8 @@ import { import fs from 'fs/promises' import path from 'path' -import { IOAuthStorage, OAuthStorageData, OAuthStorageSchema } from './types' +import type { IOAuthStorage, OAuthStorageData } from './types' +import { OAuthStorageSchema } from './types' const logger = loggerService.withContext('MCP:OAuthStorage') diff --git a/src/main/services/mcp/oauth/types.ts b/src/main/services/mcp/oauth/types.ts index de631c1629..384cb48ea9 100644 --- a/src/main/services/mcp/oauth/types.ts +++ b/src/main/services/mcp/oauth/types.ts @@ -1,9 +1,9 @@ -import { +import type { OAuthClientInformation, OAuthClientInformationFull, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js' -import EventEmitter from 'events' +import type EventEmitter from 'events' import { z } from 'zod' export interface OAuthStorageData { diff --git a/src/main/services/memory/MemoryService.ts b/src/main/services/memory/MemoryService.ts index 85f182b686..3466e2c3c6 100644 --- a/src/main/services/memory/MemoryService.ts +++ b/src/main/services/memory/MemoryService.ts @@ -1,4 +1,5 @@ -import { Client, createClient } from '@libsql/client' +import type { Client } from '@libsql/client' +import { createClient } from '@libsql/client' import { loggerService } from '@logger' import Embeddings from '@main/knowledge/embedjs/embeddings/Embeddings' import type { diff --git a/src/main/services/ocr/OcrService.ts b/src/main/services/ocr/OcrService.ts index 471d31edce..0c268db9c0 100644 --- a/src/main/services/ocr/OcrService.ts +++ b/src/main/services/ocr/OcrService.ts @@ -1,6 +1,7 @@ import { loggerService } from '@logger' import { isLinux } from '@main/constant' -import { BuiltinOcrProviderIds, OcrHandler, OcrProvider, OcrResult, SupportedOcrFile } from '@types' +import type { OcrHandler, OcrProvider, OcrResult, SupportedOcrFile } from '@types' +import { BuiltinOcrProviderIds } from '@types' import { ppocrService } from './builtin/PpocrService' import { systemOcrService } from './builtin/SystemOcrService' diff --git a/src/main/services/ocr/builtin/OcrBaseService.ts b/src/main/services/ocr/builtin/OcrBaseService.ts index 9c36e79c3a..dabe2e50b8 100644 --- a/src/main/services/ocr/builtin/OcrBaseService.ts +++ b/src/main/services/ocr/builtin/OcrBaseService.ts @@ -1,4 +1,4 @@ -import { OcrHandler } from '@types' +import type { OcrHandler } from '@types' export abstract class OcrBaseService { abstract ocr: OcrHandler diff --git a/src/main/services/ocr/builtin/PpocrService.ts b/src/main/services/ocr/builtin/PpocrService.ts index 2079f2d6b8..0bcb74776b 100644 --- a/src/main/services/ocr/builtin/PpocrService.ts +++ b/src/main/services/ocr/builtin/PpocrService.ts @@ -1,5 +1,6 @@ import { loadOcrImage } from '@main/utils/ocr' -import { ImageFileMetadata, isImageFileMetadata, OcrPpocrConfig, OcrResult, SupportedOcrFile } from '@types' +import type { ImageFileMetadata, OcrPpocrConfig, OcrResult, SupportedOcrFile } from '@types' +import { isImageFileMetadata } from '@types' import { net } from 'electron' import { z } from 'zod' diff --git a/src/main/services/ocr/builtin/SystemOcrService.ts b/src/main/services/ocr/builtin/SystemOcrService.ts index b496df398e..f166718e4a 100644 --- a/src/main/services/ocr/builtin/SystemOcrService.ts +++ b/src/main/services/ocr/builtin/SystemOcrService.ts @@ -1,7 +1,8 @@ import { isLinux, isWin } from '@main/constant' import { loadOcrImage } from '@main/utils/ocr' import { OcrAccuracy, recognize } from '@napi-rs/system-ocr' -import { ImageFileMetadata, isImageFileMetadata, OcrResult, OcrSystemConfig, SupportedOcrFile } from '@types' +import type { ImageFileMetadata, OcrResult, OcrSystemConfig, SupportedOcrFile } from '@types' +import { isImageFileMetadata } from '@types' import { OcrBaseService } from './OcrBaseService' diff --git a/src/main/services/ocr/builtin/TesseractService.ts b/src/main/services/ocr/builtin/TesseractService.ts index 9fd7bbcf01..8d41ce085d 100644 --- a/src/main/services/ocr/builtin/TesseractService.ts +++ b/src/main/services/ocr/builtin/TesseractService.ts @@ -2,12 +2,15 @@ import { loggerService } from '@logger' import { getIpCountry } from '@main/utils/ipService' import { loadOcrImage } from '@main/utils/ocr' import { MB } from '@shared/config/constant' -import { ImageFileMetadata, isImageFileMetadata, OcrResult, OcrTesseractConfig, SupportedOcrFile } from '@types' +import type { ImageFileMetadata, OcrResult, OcrTesseractConfig, SupportedOcrFile } from '@types' +import { isImageFileMetadata } from '@types' import { app } from 'electron' import fs from 'fs' import { isEqual } from 'lodash' import path from 'path' -import Tesseract, { createWorker, LanguageCode } from 'tesseract.js' +import type { LanguageCode } from 'tesseract.js' +import type Tesseract from 'tesseract.js' +import { createWorker } from 'tesseract.js' import { OcrBaseService } from './OcrBaseService' diff --git a/src/main/services/remotefile/BaseFileService.ts b/src/main/services/remotefile/BaseFileService.ts index ff06eb0b44..49067b424d 100644 --- a/src/main/services/remotefile/BaseFileService.ts +++ b/src/main/services/remotefile/BaseFileService.ts @@ -1,4 +1,4 @@ -import { FileListResponse, FileMetadata, FileUploadResponse, Provider } from '@types' +import type { FileListResponse, FileMetadata, FileUploadResponse, Provider } from '@types' export abstract class BaseFileService { protected readonly provider: Provider diff --git a/src/main/services/remotefile/FileServiceManager.ts b/src/main/services/remotefile/FileServiceManager.ts index 14f622757a..962214af51 100644 --- a/src/main/services/remotefile/FileServiceManager.ts +++ b/src/main/services/remotefile/FileServiceManager.ts @@ -1,6 +1,6 @@ -import { Provider } from '@types' +import type { Provider } from '@types' -import { BaseFileService } from './BaseFileService' +import type { BaseFileService } from './BaseFileService' import { GeminiService } from './GeminiService' import { MistralService } from './MistralService' import { OpenaiService } from './OpenAIService' diff --git a/src/main/services/remotefile/GeminiService.ts b/src/main/services/remotefile/GeminiService.ts index 4ec4a07664..8b2000327b 100644 --- a/src/main/services/remotefile/GeminiService.ts +++ b/src/main/services/remotefile/GeminiService.ts @@ -1,8 +1,9 @@ import { cacheService } from '@data/CacheService' -import { File, Files, FileState, GoogleGenAI } from '@google/genai' +import type { File, Files } from '@google/genai' +import { FileState, GoogleGenAI } from '@google/genai' import { loggerService } from '@logger' import { fileStorage } from '@main/services/FileStorage' -import { FileListResponse, FileMetadata, FileUploadResponse, Provider } from '@types' +import type { FileListResponse, FileMetadata, FileUploadResponse, Provider } from '@types' import { v4 as uuidv4 } from 'uuid' import { BaseFileService } from './BaseFileService' diff --git a/src/main/services/remotefile/MistralService.ts b/src/main/services/remotefile/MistralService.ts index d3867a619d..6045e25972 100644 --- a/src/main/services/remotefile/MistralService.ts +++ b/src/main/services/remotefile/MistralService.ts @@ -2,8 +2,8 @@ import fs from 'node:fs/promises' import { loggerService } from '@logger' import { fileStorage } from '@main/services/FileStorage' -import { Mistral } from '@mistralai/mistralai' -import { FileListResponse, FileMetadata, FileUploadResponse, Provider } from '@types' +import type { Mistral } from '@mistralai/mistralai' +import type { FileListResponse, FileMetadata, FileUploadResponse, Provider } from '@types' import { MistralClientManager } from '../MistralClientManager' import { BaseFileService } from './BaseFileService' diff --git a/src/main/services/remotefile/OpenAIService.ts b/src/main/services/remotefile/OpenAIService.ts index ce197c587d..5211d99999 100644 --- a/src/main/services/remotefile/OpenAIService.ts +++ b/src/main/services/remotefile/OpenAIService.ts @@ -1,7 +1,7 @@ import { cacheService } from '@data/CacheService' import { loggerService } from '@logger' import { fileStorage } from '@main/services/FileStorage' -import { FileListResponse, FileMetadata, FileUploadResponse, Provider } from '@types' +import type { FileListResponse, FileMetadata, FileUploadResponse, Provider } from '@types' import * as fs from 'fs' import OpenAI from 'openai' diff --git a/src/main/services/urlschema/mcp-install.ts b/src/main/services/urlschema/mcp-install.ts index ceb2e41ece..a93ceabc0d 100644 --- a/src/main/services/urlschema/mcp-install.ts +++ b/src/main/services/urlschema/mcp-install.ts @@ -1,7 +1,7 @@ import { loggerService } from '@logger' import { nanoid } from '@reduxjs/toolkit' import { IpcChannel } from '@shared/IpcChannel' -import { MCPServer } from '@types' +import type { MCPServer } from '@types' import { windowService } from '../WindowService' diff --git a/src/main/utils/file.ts b/src/main/utils/file.ts index 5c197e8971..07c2c7730b 100644 --- a/src/main/utils/file.ts +++ b/src/main/utils/file.ts @@ -5,7 +5,8 @@ import path from 'node:path' import { loggerService } from '@logger' import { audioExts, documentExts, imageExts, MB, textExts, videoExts } from '@shared/config/constant' -import { FileMetadata, FileTypes, NotesTreeNode } from '@types' +import type { FileMetadata, NotesTreeNode } from '@types' +import { FileTypes } from '@types' import chardet from 'chardet' import { app } from 'electron' import iconv from 'iconv-lite' diff --git a/src/main/utils/language.ts b/src/main/utils/language.ts index 980c6396ed..af5d83245a 100644 --- a/src/main/utils/language.ts +++ b/src/main/utils/language.ts @@ -1,6 +1,6 @@ import { preferenceService } from '@data/PreferenceService' import { defaultLanguage } from '@shared/config/constant' -import { LanguageVarious } from '@shared/data/preference/preferenceTypes' +import type { LanguageVarious } from '@shared/data/preference/preferenceTypes' import { app } from 'electron' import EnUs from '../../renderer/src/i18n/locales/en-us.json' diff --git a/src/main/utils/ocr.ts b/src/main/utils/ocr.ts index 446fbe63d6..16eeee7b60 100644 --- a/src/main/utils/ocr.ts +++ b/src/main/utils/ocr.ts @@ -1,4 +1,4 @@ -import { ImageFileMetadata } from '@types' +import type { ImageFileMetadata } from '@types' import { readFile } from 'fs/promises' import sharp from 'sharp' diff --git a/src/main/utils/windowUtil.ts b/src/main/utils/windowUtil.ts index 4000156fff..454ce917f5 100644 --- a/src/main/utils/windowUtil.ts +++ b/src/main/utils/windowUtil.ts @@ -1,4 +1,4 @@ -import { BrowserWindow } from 'electron' +import type { BrowserWindow } from 'electron' import { isDev, isWin } from '../constant' diff --git a/src/main/utils/zoom.ts b/src/main/utils/zoom.ts index d91d411591..d75b31724e 100644 --- a/src/main/utils/zoom.ts +++ b/src/main/utils/zoom.ts @@ -1,4 +1,4 @@ -import { BrowserWindow } from 'electron' +import type { BrowserWindow } from 'electron' import { configManager } from '../services/ConfigManager' diff --git a/src/preload/index.ts b/src/preload/index.ts index 47218aa577..bafae2dc2c 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -1,6 +1,6 @@ import { electronAPI } from '@electron-toolkit/preload' -import { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' -import { SpanContext } from '@opentelemetry/api' +import type { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' +import type { SpanContext } from '@opentelemetry/api' import type { LogLevel, LogSourceWithContext } from '@shared/config/logger' import type { FileChangeEvent } from '@shared/config/types' import type { CacheSyncMessage } from '@shared/data/cache/cacheTypes' @@ -9,10 +9,10 @@ import type { PreferenceKeyType, SelectionActionItem } from '@shared/data/preference/preferenceTypes' -import { UpgradeChannel } from '@shared/data/preference/preferenceTypes' +import type { UpgradeChannel } from '@shared/data/preference/preferenceTypes' import { IpcChannel } from '@shared/IpcChannel' import type { Notification } from '@types' -import { +import type { AddMemoryOptions, AssistantMessage, FileListResponse, @@ -33,8 +33,9 @@ import { SupportedOcrFile, WebDavConfig } from '@types' -import { contextBridge, ipcRenderer, OpenDialogOptions, shell, webUtils } from 'electron' -import { CreateDirectoryOptions } from 'webdav' +import type { OpenDialogOptions } from 'electron' +import { contextBridge, ipcRenderer, shell, webUtils } from 'electron' +import type { CreateDirectoryOptions } from 'webdav' export function tracedInvoke(channel: string, spanContext: SpanContext | undefined, ...args: any[]) { if (spanContext) { diff --git a/src/preload/preload.d.ts b/src/preload/preload.d.ts index 7e46ae82a8..a7c633130a 100644 --- a/src/preload/preload.d.ts +++ b/src/preload/preload.d.ts @@ -1,4 +1,4 @@ -import { ElectronAPI } from '@electron-toolkit/preload' +import type { ElectronAPI } from '@electron-toolkit/preload' import type { WindowApiType } from './index' diff --git a/src/renderer/src/Router.tsx b/src/renderer/src/Router.tsx index 5f0151df1f..41a94de7c3 100644 --- a/src/renderer/src/Router.tsx +++ b/src/renderer/src/Router.tsx @@ -1,6 +1,7 @@ import '@renderer/databases' -import { FC, useMemo } from 'react' +import type { FC } from 'react' +import { useMemo } from 'react' import { HashRouter, Route, Routes } from 'react-router-dom' import Sidebar from './components/app/Sidebar' diff --git a/src/renderer/src/aiCore/chunk/AiSdkToChunkAdapter.ts b/src/renderer/src/aiCore/chunk/AiSdkToChunkAdapter.ts index a65c6fe790..72421cf48a 100644 --- a/src/renderer/src/aiCore/chunk/AiSdkToChunkAdapter.ts +++ b/src/renderer/src/aiCore/chunk/AiSdkToChunkAdapter.ts @@ -4,8 +4,10 @@ */ import { loggerService } from '@logger' -import { AISDKWebSearchResult, MCPTool, WebSearchResults, WebSearchSource } from '@renderer/types' -import { Chunk, ChunkType } from '@renderer/types/chunk' +import type { AISDKWebSearchResult, MCPTool, WebSearchResults } from '@renderer/types' +import { WebSearchSource } from '@renderer/types' +import type { Chunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import { convertLinks, flushLinkConverterBuffer } from '@renderer/utils/linkConverter' import type { TextStreamPart, ToolSet } from 'ai' diff --git a/src/renderer/src/aiCore/chunk/handleToolCallChunk.ts b/src/renderer/src/aiCore/chunk/handleToolCallChunk.ts index 57cd974a2c..152f4d3676 100644 --- a/src/renderer/src/aiCore/chunk/handleToolCallChunk.ts +++ b/src/renderer/src/aiCore/chunk/handleToolCallChunk.ts @@ -6,8 +6,9 @@ import { loggerService } from '@logger' import { processKnowledgeReferences } from '@renderer/services/KnowledgeService' -import { BaseTool, MCPTool, MCPToolResponse, NormalToolResponse } from '@renderer/types' -import { Chunk, ChunkType } from '@renderer/types/chunk' +import type { BaseTool, MCPTool, MCPToolResponse, NormalToolResponse } from '@renderer/types' +import type { Chunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import type { ToolSet, TypedToolCall, TypedToolError, TypedToolResult } from 'ai' const logger = loggerService.withContext('ToolCallChunkHandler') diff --git a/src/renderer/src/aiCore/index_new.ts b/src/renderer/src/aiCore/index_new.ts index fde316f478..813ac31b9d 100644 --- a/src/renderer/src/aiCore/index_new.ts +++ b/src/renderer/src/aiCore/index_new.ts @@ -11,15 +11,16 @@ import { createExecutor } from '@cherrystudio/ai-core' import { preferenceService } from '@data/PreferenceService' import { loggerService } from '@logger' import { addSpan, endSpan } from '@renderer/services/SpanManagerService' -import { StartSpanParams } from '@renderer/trace/types/ModelSpanEntity' +import type { StartSpanParams } from '@renderer/trace/types/ModelSpanEntity' import type { Assistant, GenerateImageParams, Model, Provider } from '@renderer/types' import type { AiSdkModel, StreamTextParams } from '@renderer/types/aiCoreTypes' import { type ImageModel, type LanguageModel, type Provider as AiSdkProvider, wrapLanguageModel } from 'ai' import AiSdkToChunkAdapter from './chunk/AiSdkToChunkAdapter' import LegacyAiProvider from './legacy/index' -import { CompletionsParams, CompletionsResult } from './legacy/middleware/schemas' -import { AiSdkMiddlewareConfig, buildAiSdkMiddlewares } from './middleware/AiSdkMiddlewareBuilder' +import type { CompletionsParams, CompletionsResult } from './legacy/middleware/schemas' +import type { AiSdkMiddlewareConfig } from './middleware/AiSdkMiddlewareBuilder' +import { buildAiSdkMiddlewares } from './middleware/AiSdkMiddlewareBuilder' import { buildPlugins } from './plugins/PluginBuilder' import { buildClaudeCodeSystemMessage } from './provider/config/anthropic' import { createAiSdkProvider } from './provider/factory' diff --git a/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts b/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts index 31a911533e..04bd0069a6 100644 --- a/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts +++ b/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts @@ -1,10 +1,10 @@ import { loggerService } from '@logger' -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import { AihubmixAPIClient } from './aihubmix/AihubmixAPIClient' import { AnthropicAPIClient } from './anthropic/AnthropicAPIClient' import { AwsBedrockAPIClient } from './aws/AwsBedrockAPIClient' -import { BaseApiClient } from './BaseApiClient' +import type { BaseApiClient } from './BaseApiClient' import { CherryinAPIClient } from './cherryin/CherryinAPIClient' import { GeminiAPIClient } from './gemini/GeminiAPIClient' import { VertexAPIClient } from './gemini/VertexAPIClient' diff --git a/src/renderer/src/aiCore/legacy/clients/BaseApiClient.ts b/src/renderer/src/aiCore/legacy/clients/BaseApiClient.ts index 144ff97458..884499dfb1 100644 --- a/src/renderer/src/aiCore/legacy/clients/BaseApiClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/BaseApiClient.ts @@ -8,29 +8,31 @@ import { import { isSupportServiceTierProvider } from '@renderer/config/providers' import { getLMStudioKeepAliveTime } from '@renderer/hooks/useLMStudio' import { getAssistantSettings } from '@renderer/services/AssistantService' -import { +import type { Assistant, - FileTypes, GenerateImageParams, - GroqServiceTiers, - isGroqServiceTier, - isOpenAIServiceTier, KnowledgeReference, MCPCallToolResponse, MCPTool, MCPToolResponse, MemoryItem, Model, - OpenAIServiceTiers, OpenAIVerbosity, Provider, - SystemProviderIds, ToolCallResponse, WebSearchProviderResponse, WebSearchResponse } from '@renderer/types' -import { Message } from '@renderer/types/newMessage' import { + FileTypes, + GroqServiceTiers, + isGroqServiceTier, + isOpenAIServiceTier, + OpenAIServiceTiers, + SystemProviderIds +} from '@renderer/types' +import type { Message } from '@renderer/types/newMessage' +import type { RequestOptions, SdkInstance, SdkMessageParam, @@ -49,8 +51,8 @@ import { REFERENCE_PROMPT } from '@shared/config/prompts' import { defaultAppHeaders } from '@shared/utils' import { isEmpty } from 'lodash' -import { CompletionsContext } from '../middleware/types' -import { ApiClient, RequestTransformer, ResponseChunkTransformer } from './types' +import type { CompletionsContext } from '../middleware/types' +import type { ApiClient, RequestTransformer, ResponseChunkTransformer } from './types' const logger = loggerService.withContext('BaseApiClient') diff --git a/src/renderer/src/aiCore/legacy/clients/MixedBaseApiClient.ts b/src/renderer/src/aiCore/legacy/clients/MixedBaseApiClient.ts index 36a207ecb3..fb5568a6e8 100644 --- a/src/renderer/src/aiCore/legacy/clients/MixedBaseApiClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/MixedBaseApiClient.ts @@ -1,4 +1,4 @@ -import { +import type { GenerateImageParams, MCPCallToolResponse, MCPTool, @@ -7,7 +7,7 @@ import { Provider, ToolCallResponse } from '@renderer/types' -import { +import type { RequestOptions, SdkInstance, SdkMessageParam, @@ -19,13 +19,13 @@ import { SdkToolCall } from '@renderer/types/sdk' -import { CompletionsContext } from '../middleware/types' -import { AnthropicAPIClient } from './anthropic/AnthropicAPIClient' +import type { CompletionsContext } from '../middleware/types' +import type { AnthropicAPIClient } from './anthropic/AnthropicAPIClient' import { BaseApiClient } from './BaseApiClient' -import { GeminiAPIClient } from './gemini/GeminiAPIClient' -import { OpenAIAPIClient } from './openai/OpenAIApiClient' -import { OpenAIResponseAPIClient } from './openai/OpenAIResponseAPIClient' -import { RequestTransformer, ResponseChunkTransformer } from './types' +import type { GeminiAPIClient } from './gemini/GeminiAPIClient' +import type { OpenAIAPIClient } from './openai/OpenAIApiClient' +import type { OpenAIResponseAPIClient } from './openai/OpenAIResponseAPIClient' +import type { RequestTransformer, ResponseChunkTransformer } from './types' /** * MixedAPIClient - 适用于可能含有多种接口类型的Provider diff --git a/src/renderer/src/aiCore/legacy/clients/__tests__/ApiClientFactory.test.ts b/src/renderer/src/aiCore/legacy/clients/__tests__/ApiClientFactory.test.ts index 081469516b..8bbddd09f5 100644 --- a/src/renderer/src/aiCore/legacy/clients/__tests__/ApiClientFactory.test.ts +++ b/src/renderer/src/aiCore/legacy/clients/__tests__/ApiClientFactory.test.ts @@ -1,4 +1,4 @@ -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import { isOpenAIProvider } from '@renderer/utils' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/src/renderer/src/aiCore/legacy/clients/__tests__/index.clientCompatibilityTypes.test.ts b/src/renderer/src/aiCore/legacy/clients/__tests__/index.clientCompatibilityTypes.test.ts index 1303d52bac..86397d35f7 100644 --- a/src/renderer/src/aiCore/legacy/clients/__tests__/index.clientCompatibilityTypes.test.ts +++ b/src/renderer/src/aiCore/legacy/clients/__tests__/index.clientCompatibilityTypes.test.ts @@ -6,7 +6,7 @@ import { VertexAPIClient } from '@renderer/aiCore/legacy/clients/gemini/VertexAP import { NewAPIClient } from '@renderer/aiCore/legacy/clients/newapi/NewAPIClient' import { OpenAIAPIClient } from '@renderer/aiCore/legacy/clients/openai/OpenAIApiClient' import { OpenAIResponseAPIClient } from '@renderer/aiCore/legacy/clients/openai/OpenAIResponseAPIClient' -import { EndpointType, Model, Provider } from '@renderer/types' +import type { EndpointType, Model, Provider } from '@renderer/types' import { beforeEach, describe, expect, it, vi } from 'vitest' vi.mock('@renderer/config/models', () => ({ diff --git a/src/renderer/src/aiCore/legacy/clients/aihubmix/AihubmixAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/aihubmix/AihubmixAPIClient.ts index 1149c04b35..a8a0ca5ac6 100644 --- a/src/renderer/src/aiCore/legacy/clients/aihubmix/AihubmixAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/aihubmix/AihubmixAPIClient.ts @@ -1,8 +1,8 @@ import { isOpenAILLMModel } from '@renderer/config/models' -import { Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' import { AnthropicAPIClient } from '../anthropic/AnthropicAPIClient' -import { BaseApiClient } from '../BaseApiClient' +import type { BaseApiClient } from '../BaseApiClient' import { GeminiAPIClient } from '../gemini/GeminiAPIClient' import { MixedBaseAPIClient } from '../MixedBaseApiClient' import { OpenAIAPIClient } from '../openai/OpenAIApiClient' diff --git a/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicAPIClient.ts index aef3e07905..246f4a0f8f 100644 --- a/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicAPIClient.ts @@ -1,5 +1,5 @@ import Anthropic from '@anthropic-ai/sdk' -import { +import type { Base64ImageSource, ImageBlockParam, MessageParam, @@ -8,7 +8,7 @@ import { ToolUseBlock, WebSearchTool20250305 } from '@anthropic-ai/sdk/resources' -import { +import type { ContentBlock, ContentBlockParam, MessageCreateParamsBase, @@ -23,27 +23,24 @@ import { WebSearchToolResultError } from '@anthropic-ai/sdk/resources/messages' import { MessageStream } from '@anthropic-ai/sdk/resources/messages/messages' -import AnthropicVertex from '@anthropic-ai/vertex-sdk' +import type AnthropicVertex from '@anthropic-ai/vertex-sdk' import { loggerService } from '@logger' import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant' import { findTokenLimit, isClaudeReasoningModel, isReasoningModel, isWebSearchModel } from '@renderer/config/models' import { getAssistantSettings } from '@renderer/services/AssistantService' import FileManager from '@renderer/services/FileManager' import { estimateTextTokens } from '@renderer/services/TokenService' -import { +import type { Assistant, - EFFORT_RATIO, - FileTypes, MCPCallToolResponse, MCPTool, MCPToolResponse, Model, Provider, - ToolCallResponse, - WebSearchSource + ToolCallResponse } from '@renderer/types' -import { - ChunkType, +import { EFFORT_RATIO, FileTypes, WebSearchSource } from '@renderer/types' +import type { ErrorChunk, LLMWebSearchCompleteChunk, LLMWebSearchInProgressChunk, @@ -53,8 +50,9 @@ import { ThinkingDeltaChunk, ThinkingStartChunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import { type Message } from '@renderer/types/newMessage' -import { +import type { AnthropicSdkMessageParam, AnthropicSdkParams, AnthropicSdkRawChunk, @@ -70,9 +68,9 @@ import { import { findFileBlocks, findImageBlocks } from '@renderer/utils/messageUtils/find' import { t } from 'i18next' -import { GenericChunk } from '../../middleware/schemas' +import type { GenericChunk } from '../../middleware/schemas' import { BaseApiClient } from '../BaseApiClient' -import { AnthropicStreamListener, RawStreamListener, RequestTransformer, ResponseChunkTransformer } from '../types' +import type { AnthropicStreamListener, RawStreamListener, RequestTransformer, ResponseChunkTransformer } from '../types' const logger = loggerService.withContext('AnthropicAPIClient') diff --git a/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicVertexClient.ts b/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicVertexClient.ts index bb96ac90ae..2fe16e8875 100644 --- a/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicVertexClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/anthropic/AnthropicVertexClient.ts @@ -1,8 +1,8 @@ -import Anthropic from '@anthropic-ai/sdk' +import type Anthropic from '@anthropic-ai/sdk' import AnthropicVertex from '@anthropic-ai/vertex-sdk' import { loggerService } from '@logger' import { getVertexAILocation, getVertexAIProjectId, getVertexAIServiceAccount } from '@renderer/hooks/useVertexAI' -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import { isEmpty } from 'lodash' import { AnthropicAPIClient } from './AnthropicAPIClient' diff --git a/src/renderer/src/aiCore/legacy/clients/aws/AwsBedrockAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/aws/AwsBedrockAPIClient.ts index 1de8a724c4..94f74eecff 100644 --- a/src/renderer/src/aiCore/legacy/clients/aws/AwsBedrockAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/aws/AwsBedrockAPIClient.ts @@ -6,7 +6,7 @@ import { InvokeModelWithResponseStreamCommand } from '@aws-sdk/client-bedrock-runtime' import { loggerService } from '@logger' -import { GenericChunk } from '@renderer/aiCore/legacy/middleware/schemas' +import type { GenericChunk } from '@renderer/aiCore/legacy/middleware/schemas' import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant' import { findTokenLimit, isReasoningModel } from '@renderer/config/models' import { @@ -16,10 +16,8 @@ import { } from '@renderer/hooks/useAwsBedrock' import { getAssistantSettings } from '@renderer/services/AssistantService' import { estimateTextTokens } from '@renderer/services/TokenService' -import { +import type { Assistant, - EFFORT_RATIO, - FileTypes, GenerateImageParams, MCPCallToolResponse, MCPTool, @@ -28,15 +26,11 @@ import { Provider, ToolCallResponse } from '@renderer/types' -import { - ChunkType, - MCPToolCreatedChunk, - TextDeltaChunk, - ThinkingDeltaChunk, - ThinkingStartChunk -} from '@renderer/types/chunk' -import { Message } from '@renderer/types/newMessage' -import { +import { EFFORT_RATIO, FileTypes } from '@renderer/types' +import type { MCPToolCreatedChunk, TextDeltaChunk, ThinkingDeltaChunk, ThinkingStartChunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' +import type { Message } from '@renderer/types/newMessage' +import type { AwsBedrockSdkInstance, AwsBedrockSdkMessageParam, AwsBedrockSdkParams, @@ -58,7 +52,7 @@ import { findFileBlocks, findImageBlocks } from '@renderer/utils/messageUtils/fi import { t } from 'i18next' import { BaseApiClient } from '../BaseApiClient' -import { RequestTransformer, ResponseChunkTransformer } from '../types' +import type { RequestTransformer, ResponseChunkTransformer } from '../types' const logger = loggerService.withContext('AwsBedrockAPIClient') diff --git a/src/renderer/src/aiCore/legacy/clients/cherryin/CherryinAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/cherryin/CherryinAPIClient.ts index bf3ed7d718..fc10c4b3d5 100644 --- a/src/renderer/src/aiCore/legacy/clients/cherryin/CherryinAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/cherryin/CherryinAPIClient.ts @@ -1,6 +1,6 @@ -import { Provider } from '@renderer/types' -import { OpenAISdkParams, OpenAISdkRawOutput } from '@renderer/types/sdk' -import OpenAI from 'openai' +import type { Provider } from '@renderer/types' +import type { OpenAISdkParams, OpenAISdkRawOutput } from '@renderer/types/sdk' +import type OpenAI from 'openai' import { OpenAIAPIClient } from '../openai/OpenAIApiClient' diff --git a/src/renderer/src/aiCore/legacy/clients/gemini/GeminiAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/gemini/GeminiAPIClient.ts index 33d34c7961..27e659c1af 100644 --- a/src/renderer/src/aiCore/legacy/clients/gemini/GeminiAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/gemini/GeminiAPIClient.ts @@ -1,14 +1,9 @@ -import { +import type { Content, - createPartFromUri, File, FunctionCall, GenerateContentConfig, GenerateImagesConfig, - GoogleGenAI, - HarmBlockThreshold, - HarmCategory, - Modality, Model as GeminiModel, Part, SafetySetting, @@ -16,6 +11,7 @@ import { ThinkingConfig, Tool } from '@google/genai' +import { createPartFromUri, GoogleGenAI, HarmBlockThreshold, HarmCategory, Modality } from '@google/genai' import { loggerService } from '@logger' import { nanoid } from '@reduxjs/toolkit' import { @@ -26,11 +22,9 @@ import { isVisionModel } from '@renderer/config/models' import { estimateTextTokens } from '@renderer/services/TokenService' -import { +import type { Assistant, - EFFORT_RATIO, FileMetadata, - FileTypes, FileUploadResponse, GenerateImageParams, MCPCallToolResponse, @@ -38,12 +32,13 @@ import { MCPToolResponse, Model, Provider, - ToolCallResponse, - WebSearchSource + ToolCallResponse } from '@renderer/types' -import { ChunkType, LLMWebSearchCompleteChunk, TextStartChunk, ThinkingStartChunk } from '@renderer/types/chunk' -import { Message } from '@renderer/types/newMessage' -import { +import { EFFORT_RATIO, FileTypes, WebSearchSource } from '@renderer/types' +import type { LLMWebSearchCompleteChunk, TextStartChunk, ThinkingStartChunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' +import type { Message } from '@renderer/types/newMessage' +import type { GeminiOptions, GeminiSdkMessageParam, GeminiSdkParams, @@ -62,9 +57,9 @@ import { findFileBlocks, findImageBlocks, getMainTextContent } from '@renderer/u import { defaultTimeout, MB } from '@shared/config/constant' import { t } from 'i18next' -import { GenericChunk } from '../../middleware/schemas' +import type { GenericChunk } from '../../middleware/schemas' import { BaseApiClient } from '../BaseApiClient' -import { RequestTransformer, ResponseChunkTransformer } from '../types' +import type { RequestTransformer, ResponseChunkTransformer } from '../types' const logger = loggerService.withContext('GeminiAPIClient') diff --git a/src/renderer/src/aiCore/legacy/clients/gemini/VertexAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/gemini/VertexAPIClient.ts index 37e6677367..49a96a8f19 100644 --- a/src/renderer/src/aiCore/legacy/clients/gemini/VertexAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/gemini/VertexAPIClient.ts @@ -1,7 +1,7 @@ import { GoogleGenAI } from '@google/genai' import { loggerService } from '@logger' import { createVertexProvider, isVertexAIConfigured, isVertexProvider } from '@renderer/hooks/useVertexAI' -import { Model, Provider, VertexProvider } from '@renderer/types' +import type { Model, Provider, VertexProvider } from '@renderer/types' import { isEmpty } from 'lodash' import { AnthropicVertexClient } from '../anthropic/AnthropicVertexClient' diff --git a/src/renderer/src/aiCore/legacy/clients/newapi/NewAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/newapi/NewAPIClient.ts index 58b349a2be..f3e04e0d55 100644 --- a/src/renderer/src/aiCore/legacy/clients/newapi/NewAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/newapi/NewAPIClient.ts @@ -1,10 +1,10 @@ import { loggerService } from '@logger' import { isSupportedModel } from '@renderer/config/models' -import { Model, Provider } from '@renderer/types' -import { NewApiModel } from '@renderer/types/sdk' +import type { Model, Provider } from '@renderer/types' +import type { NewApiModel } from '@renderer/types/sdk' import { AnthropicAPIClient } from '../anthropic/AnthropicAPIClient' -import { BaseApiClient } from '../BaseApiClient' +import type { BaseApiClient } from '../BaseApiClient' import { GeminiAPIClient } from '../gemini/GeminiAPIClient' import { MixedBaseAPIClient } from '../MixedBaseApiClient' import { OpenAIAPIClient } from '../openai/OpenAIApiClient' diff --git a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIApiClient.ts b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIApiClient.ts index 839955a4f3..13c48c4a4f 100644 --- a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIApiClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIApiClient.ts @@ -41,25 +41,28 @@ import { mapLanguageToQwenMTModel } from '@renderer/config/translate' import { processPostsuffixQwen3Model, processReqMessages } from '@renderer/services/ModelMessageService' import { estimateTextTokens } from '@renderer/services/TokenService' // For Copilot token -import { +import type { Assistant, - EFFORT_RATIO, - FileTypes, - isSystemProvider, - isTranslateAssistant, MCPCallToolResponse, MCPTool, MCPToolResponse, Model, OpenAIServiceTier, Provider, + ToolCallResponse +} from '@renderer/types' +import { + EFFORT_RATIO, + FileTypes, + isSystemProvider, + isTranslateAssistant, SystemProviderIds, - ToolCallResponse, WebSearchSource } from '@renderer/types' -import { ChunkType, TextStartChunk, ThinkingStartChunk } from '@renderer/types/chunk' -import { Message } from '@renderer/types/newMessage' -import { +import type { TextStartChunk, ThinkingStartChunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' +import type { Message } from '@renderer/types/newMessage' +import type { OpenAIExtraBody, OpenAIModality, OpenAISdkMessageParam, @@ -78,11 +81,12 @@ import { } from '@renderer/utils/mcp-tools' import { findFileBlocks, findImageBlocks } from '@renderer/utils/messageUtils/find' import { t } from 'i18next' -import OpenAI, { AzureOpenAI } from 'openai' -import { ChatCompletionContentPart, ChatCompletionContentPartRefusal, ChatCompletionTool } from 'openai/resources' +import type { AzureOpenAI } from 'openai' +import type OpenAI from 'openai' +import type { ChatCompletionContentPart, ChatCompletionContentPartRefusal, ChatCompletionTool } from 'openai/resources' -import { GenericChunk } from '../../middleware/schemas' -import { RequestTransformer, ResponseChunkTransformer, ResponseChunkTransformerContext } from '../types' +import type { GenericChunk } from '../../middleware/schemas' +import type { RequestTransformer, ResponseChunkTransformer, ResponseChunkTransformerContext } from '../types' import { OpenAIBaseClient } from './OpenAIBaseClient' const logger = loggerService.withContext('OpenAIApiClient') diff --git a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts index 430b032749..164a7fe92c 100644 --- a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts @@ -8,9 +8,9 @@ import { import { getStoreSetting } from '@renderer/hooks/useSettings' import { getAssistantSettings } from '@renderer/services/AssistantService' import store from '@renderer/store' -import { SettingsState } from '@renderer/store/settings' -import { Assistant, GenerateImageParams, Model, Provider } from '@renderer/types' -import { +import type { SettingsState } from '@renderer/store/settings' +import type { Assistant, GenerateImageParams, Model, Provider } from '@renderer/types' +import type { OpenAIResponseSdkMessageParam, OpenAIResponseSdkParams, OpenAIResponseSdkRawChunk, diff --git a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts index 9e400a9f8d..d7982487cc 100644 --- a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' -import { GenericChunk } from '@renderer/aiCore/legacy/middleware/schemas' -import { CompletionsContext } from '@renderer/aiCore/legacy/middleware/types' +import type { GenericChunk } from '@renderer/aiCore/legacy/middleware/schemas' +import type { CompletionsContext } from '@renderer/aiCore/legacy/middleware/types' import { isGPT5SeriesModel, isOpenAIChatCompletionOnlyModel, @@ -12,21 +12,20 @@ import { } from '@renderer/config/models' import { isSupportDeveloperRoleProvider } from '@renderer/config/providers' import { estimateTextTokens } from '@renderer/services/TokenService' -import { +import type { FileMetadata, - FileTypes, MCPCallToolResponse, MCPTool, MCPToolResponse, Model, OpenAIServiceTier, Provider, - ToolCallResponse, - WebSearchSource + ToolCallResponse } from '@renderer/types' +import { FileTypes, WebSearchSource } from '@renderer/types' import { ChunkType } from '@renderer/types/chunk' -import { Message } from '@renderer/types/newMessage' -import { +import type { Message } from '@renderer/types/newMessage' +import type { OpenAIResponseSdkMessageParam, OpenAIResponseSdkParams, OpenAIResponseSdkRawChunk, @@ -46,9 +45,9 @@ import { MB } from '@shared/config/constant' import { t } from 'i18next' import { isEmpty } from 'lodash' import OpenAI, { AzureOpenAI } from 'openai' -import { ResponseInput } from 'openai/resources/responses/responses' +import type { ResponseInput } from 'openai/resources/responses/responses' -import { RequestTransformer, ResponseChunkTransformer } from '../types' +import type { RequestTransformer, ResponseChunkTransformer } from '../types' import { OpenAIAPIClient } from './OpenAIApiClient' import { OpenAIBaseClient } from './OpenAIBaseClient' diff --git a/src/renderer/src/aiCore/legacy/clients/ppio/PPIOAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/ppio/PPIOAPIClient.ts index fd282ac815..f5524b8962 100644 --- a/src/renderer/src/aiCore/legacy/clients/ppio/PPIOAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/ppio/PPIOAPIClient.ts @@ -1,7 +1,7 @@ import { loggerService } from '@logger' import { isSupportedModel } from '@renderer/config/models' -import { Model, Provider } from '@renderer/types' -import OpenAI from 'openai' +import type { Model, Provider } from '@renderer/types' +import type OpenAI from 'openai' import { OpenAIAPIClient } from '../openai/OpenAIApiClient' diff --git a/src/renderer/src/aiCore/legacy/clients/types.ts b/src/renderer/src/aiCore/legacy/clients/types.ts index a6f4adc38d..a129a241f8 100644 --- a/src/renderer/src/aiCore/legacy/clients/types.ts +++ b/src/renderer/src/aiCore/legacy/clients/types.ts @@ -1,7 +1,7 @@ -import Anthropic from '@anthropic-ai/sdk' -import { Assistant, MCPTool, MCPToolResponse, Model, ToolCallResponse } from '@renderer/types' -import { Provider } from '@renderer/types' -import { +import type Anthropic from '@anthropic-ai/sdk' +import type { Assistant, MCPTool, MCPToolResponse, Model, ToolCallResponse } from '@renderer/types' +import type { Provider } from '@renderer/types' +import type { AnthropicSdkRawChunk, OpenAIResponseSdkRawChunk, OpenAIResponseSdkRawOutput, @@ -13,10 +13,10 @@ import { SdkTool, SdkToolCall } from '@renderer/types/sdk' -import OpenAI from 'openai' +import type OpenAI from 'openai' -import { CompletionsParams, GenericChunk } from '../middleware/schemas' -import { CompletionsContext } from '../middleware/types' +import type { CompletionsParams, GenericChunk } from '../middleware/schemas' +import type { CompletionsContext } from '../middleware/types' /** * 原始流监听器接口 diff --git a/src/renderer/src/aiCore/legacy/clients/zhipu/ZhipuAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/zhipu/ZhipuAPIClient.ts index c1d7b8f562..bc5857dfbb 100644 --- a/src/renderer/src/aiCore/legacy/clients/zhipu/ZhipuAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/zhipu/ZhipuAPIClient.ts @@ -1,7 +1,7 @@ import { loggerService } from '@logger' -import { Provider } from '@renderer/types' -import { GenerateImageParams } from '@renderer/types' -import OpenAI from 'openai' +import type { Provider } from '@renderer/types' +import type { GenerateImageParams } from '@renderer/types' +import type OpenAI from 'openai' import { OpenAIAPIClient } from '../openai/OpenAIApiClient' diff --git a/src/renderer/src/aiCore/legacy/index.ts b/src/renderer/src/aiCore/legacy/index.ts index adc81f03ad..da6cdb6726 100644 --- a/src/renderer/src/aiCore/legacy/index.ts +++ b/src/renderer/src/aiCore/legacy/index.ts @@ -1,10 +1,10 @@ import { loggerService } from '@logger' import { ApiClientFactory } from '@renderer/aiCore/legacy/clients/ApiClientFactory' -import { BaseApiClient } from '@renderer/aiCore/legacy/clients/BaseApiClient' +import type { BaseApiClient } from '@renderer/aiCore/legacy/clients/BaseApiClient' import { isDedicatedImageGenerationModel, isFunctionCallingModel } from '@renderer/config/models' import { getProviderByModel } from '@renderer/services/AssistantService' import { withSpanResult } from '@renderer/services/SpanManagerService' -import { StartSpanParams } from '@renderer/trace/types/ModelSpanEntity' +import type { StartSpanParams } from '@renderer/trace/types/ModelSpanEntity' import type { GenerateImageParams, Model, Provider } from '@renderer/types' import type { RequestOptions, SdkModel } from '@renderer/types/sdk' import { isSupportedToolUse } from '@renderer/utils/mcp-tools' diff --git a/src/renderer/src/aiCore/legacy/middleware/builder.ts b/src/renderer/src/aiCore/legacy/middleware/builder.ts index 2ea20d4937..1d0b9d136d 100644 --- a/src/renderer/src/aiCore/legacy/middleware/builder.ts +++ b/src/renderer/src/aiCore/legacy/middleware/builder.ts @@ -1,7 +1,7 @@ import { loggerService } from '@logger' import { DefaultCompletionsNamedMiddlewares } from './register' -import { BaseContext, CompletionsMiddleware, MethodMiddleware } from './types' +import type { BaseContext, CompletionsMiddleware, MethodMiddleware } from './types' const logger = loggerService.withContext('aiCore:MiddlewareBuilder') diff --git a/src/renderer/src/aiCore/legacy/middleware/common/AbortHandlerMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/common/AbortHandlerMiddleware.ts index a733e45d70..5f24797813 100644 --- a/src/renderer/src/aiCore/legacy/middleware/common/AbortHandlerMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/common/AbortHandlerMiddleware.ts @@ -1,8 +1,9 @@ import { loggerService } from '@logger' -import { Chunk, ChunkType, ErrorChunk } from '@renderer/types/chunk' +import type { Chunk, ErrorChunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import { addAbortController, removeAbortController } from '@renderer/utils/abortController' -import { CompletionsParams, CompletionsResult } from '../schemas' +import type { CompletionsParams, CompletionsResult } from '../schemas' import type { CompletionsContext, CompletionsMiddleware } from '../types' const logger = loggerService.withContext('aiCore:AbortHandlerMiddleware') diff --git a/src/renderer/src/aiCore/legacy/middleware/common/ErrorHandlerMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/common/ErrorHandlerMiddleware.ts index d80c9d2f83..faf540d75d 100644 --- a/src/renderer/src/aiCore/legacy/middleware/common/ErrorHandlerMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/common/ErrorHandlerMiddleware.ts @@ -1,10 +1,10 @@ import { loggerService } from '@logger' import { isZhipuModel } from '@renderer/config/models' import store from '@renderer/store' -import { Chunk } from '@renderer/types/chunk' +import type { Chunk } from '@renderer/types/chunk' -import { CompletionsParams, CompletionsResult } from '../schemas' -import { CompletionsContext } from '../types' +import type { CompletionsParams, CompletionsResult } from '../schemas' +import type { CompletionsContext } from '../types' import { createErrorChunk } from '../utils' const logger = loggerService.withContext('ErrorHandlerMiddleware') diff --git a/src/renderer/src/aiCore/legacy/middleware/common/FinalChunkConsumerMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/common/FinalChunkConsumerMiddleware.ts index 57498b97fb..0325e4e21a 100644 --- a/src/renderer/src/aiCore/legacy/middleware/common/FinalChunkConsumerMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/common/FinalChunkConsumerMiddleware.ts @@ -1,10 +1,10 @@ import { loggerService } from '@logger' -import { Usage } from '@renderer/types' +import type { Usage } from '@renderer/types' import type { Chunk } from '@renderer/types/chunk' import { ChunkType } from '@renderer/types/chunk' -import { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' export const MIDDLEWARE_NAME = 'FinalChunkConsumerAndNotifierMiddleware' diff --git a/src/renderer/src/aiCore/legacy/middleware/common/LoggingMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/common/LoggingMiddleware.ts index acd371d777..480cbbc39f 100644 --- a/src/renderer/src/aiCore/legacy/middleware/common/LoggingMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/common/LoggingMiddleware.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' -import { BaseContext, MethodMiddleware, MiddlewareAPI } from '../types' +import type { BaseContext, MethodMiddleware, MiddlewareAPI } from '../types' const logger = loggerService.withContext('LoggingMiddleware') diff --git a/src/renderer/src/aiCore/legacy/middleware/composer.ts b/src/renderer/src/aiCore/legacy/middleware/composer.ts index 82b9fd1704..97bbf0a38d 100644 --- a/src/renderer/src/aiCore/legacy/middleware/composer.ts +++ b/src/renderer/src/aiCore/legacy/middleware/composer.ts @@ -1,5 +1,5 @@ import { withSpanResult } from '@renderer/services/SpanManagerService' -import { +import type { RequestOptions, SdkInstance, SdkMessageParam, @@ -10,16 +10,10 @@ import { SdkToolCall } from '@renderer/types/sdk' -import { BaseApiClient } from '../clients' -import { CompletionsParams, CompletionsResult } from './schemas' -import { - BaseContext, - CompletionsContext, - CompletionsMiddleware, - MethodMiddleware, - MIDDLEWARE_CONTEXT_SYMBOL, - MiddlewareAPI -} from './types' +import type { BaseApiClient } from '../clients' +import type { CompletionsParams, CompletionsResult } from './schemas' +import type { BaseContext, CompletionsContext, CompletionsMiddleware, MethodMiddleware, MiddlewareAPI } from './types' +import { MIDDLEWARE_CONTEXT_SYMBOL } from './types' /** * Creates the initial context for a method call, populating method-specific fields. / diff --git a/src/renderer/src/aiCore/legacy/middleware/core/McpToolChunkMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/core/McpToolChunkMiddleware.ts index fc0327925e..6affa5a565 100644 --- a/src/renderer/src/aiCore/legacy/middleware/core/McpToolChunkMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/core/McpToolChunkMiddleware.ts @@ -1,7 +1,8 @@ import { loggerService } from '@logger' -import { MCPCallToolResponse, MCPTool, MCPToolResponse, Model } from '@renderer/types' -import { ChunkType, MCPToolCreatedChunk } from '@renderer/types/chunk' -import { SdkMessageParam, SdkRawOutput, SdkToolCall } from '@renderer/types/sdk' +import type { MCPCallToolResponse, MCPTool, MCPToolResponse, Model } from '@renderer/types' +import type { MCPToolCreatedChunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' +import type { SdkMessageParam, SdkRawOutput, SdkToolCall } from '@renderer/types/sdk' import { callBuiltInTool, callMCPTool, @@ -12,8 +13,8 @@ import { } from '@renderer/utils/mcp-tools' import { confirmSameNameTools, requestToolConfirmation, setToolIdToNameMapping } from '@renderer/utils/userConfirmation' -import { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' export const MIDDLEWARE_NAME = 'McpToolChunkMiddleware' const MAX_TOOL_RECURSION_DEPTH = 20 // 防止无限递归 diff --git a/src/renderer/src/aiCore/legacy/middleware/core/RawStreamListenerMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/core/RawStreamListenerMiddleware.ts index 0d59ad9de6..04bfd751e2 100644 --- a/src/renderer/src/aiCore/legacy/middleware/core/RawStreamListenerMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/core/RawStreamListenerMiddleware.ts @@ -1,9 +1,9 @@ import { AnthropicAPIClient } from '@renderer/aiCore/legacy/clients/anthropic/AnthropicAPIClient' -import { AnthropicSdkRawChunk, AnthropicSdkRawOutput } from '@renderer/types/sdk' +import type { AnthropicSdkRawChunk, AnthropicSdkRawOutput } from '@renderer/types/sdk' -import { AnthropicStreamListener } from '../../clients/types' -import { CompletionsParams, CompletionsResult } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { AnthropicStreamListener } from '../../clients/types' +import type { CompletionsParams, CompletionsResult } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' export const MIDDLEWARE_NAME = 'RawStreamListenerMiddleware' diff --git a/src/renderer/src/aiCore/legacy/middleware/core/ResponseTransformMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/core/ResponseTransformMiddleware.ts index 850da8306d..bdab7b8783 100644 --- a/src/renderer/src/aiCore/legacy/middleware/core/ResponseTransformMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/core/ResponseTransformMiddleware.ts @@ -1,9 +1,9 @@ import { loggerService } from '@logger' -import { SdkRawChunk } from '@renderer/types/sdk' +import type { SdkRawChunk } from '@renderer/types/sdk' -import { ResponseChunkTransformerContext } from '../../clients/types' -import { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { ResponseChunkTransformerContext } from '../../clients/types' +import type { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' export const MIDDLEWARE_NAME = 'ResponseTransformMiddleware' diff --git a/src/renderer/src/aiCore/legacy/middleware/core/StreamAdapterMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/core/StreamAdapterMiddleware.ts index 8bb5266319..b6dc13e602 100644 --- a/src/renderer/src/aiCore/legacy/middleware/core/StreamAdapterMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/core/StreamAdapterMiddleware.ts @@ -1,8 +1,8 @@ -import { SdkRawChunk } from '@renderer/types/sdk' +import type { SdkRawChunk } from '@renderer/types/sdk' import { asyncGeneratorToReadableStream, createSingleChunkReadableStream } from '@renderer/utils/stream' -import { CompletionsParams, CompletionsResult } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { CompletionsParams, CompletionsResult } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' import { isAsyncIterable } from '../utils' export const MIDDLEWARE_NAME = 'StreamAdapterMiddleware' diff --git a/src/renderer/src/aiCore/legacy/middleware/core/TextChunkMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/core/TextChunkMiddleware.ts index 41157bf504..837244981a 100644 --- a/src/renderer/src/aiCore/legacy/middleware/core/TextChunkMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/core/TextChunkMiddleware.ts @@ -1,8 +1,8 @@ import { loggerService } from '@logger' import { ChunkType } from '@renderer/types/chunk' -import { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' export const MIDDLEWARE_NAME = 'TextChunkMiddleware' diff --git a/src/renderer/src/aiCore/legacy/middleware/core/ThinkChunkMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/core/ThinkChunkMiddleware.ts index 2149d8fe79..5920cdc0ea 100644 --- a/src/renderer/src/aiCore/legacy/middleware/core/ThinkChunkMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/core/ThinkChunkMiddleware.ts @@ -1,8 +1,9 @@ import { loggerService } from '@logger' -import { ChunkType, ThinkingCompleteChunk, ThinkingDeltaChunk } from '@renderer/types/chunk' +import type { ThinkingCompleteChunk, ThinkingDeltaChunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' -import { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' export const MIDDLEWARE_NAME = 'ThinkChunkMiddleware' diff --git a/src/renderer/src/aiCore/legacy/middleware/core/TransformCoreToSdkParamsMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/core/TransformCoreToSdkParamsMiddleware.ts index 71831a3ef6..ebc86f5a5e 100644 --- a/src/renderer/src/aiCore/legacy/middleware/core/TransformCoreToSdkParamsMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/core/TransformCoreToSdkParamsMiddleware.ts @@ -1,8 +1,8 @@ import { loggerService } from '@logger' import { ChunkType } from '@renderer/types/chunk' -import { CompletionsParams, CompletionsResult } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { CompletionsParams, CompletionsResult } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' export const MIDDLEWARE_NAME = 'TransformCoreToSdkParamsMiddleware' diff --git a/src/renderer/src/aiCore/legacy/middleware/core/WebSearchMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/core/WebSearchMiddleware.ts index ae346af836..3365b163b6 100644 --- a/src/renderer/src/aiCore/legacy/middleware/core/WebSearchMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/core/WebSearchMiddleware.ts @@ -2,8 +2,8 @@ import { loggerService } from '@logger' import { ChunkType } from '@renderer/types/chunk' import { convertLinks, flushLinkConverterBuffer } from '@renderer/utils/linkConverter' -import { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' const logger = loggerService.withContext('WebSearchMiddleware') diff --git a/src/renderer/src/aiCore/legacy/middleware/feat/ImageGenerationMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/feat/ImageGenerationMiddleware.ts index 0f89e8aca8..1879da5a4b 100644 --- a/src/renderer/src/aiCore/legacy/middleware/feat/ImageGenerationMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/feat/ImageGenerationMiddleware.ts @@ -3,12 +3,12 @@ import FileManager from '@renderer/services/FileManager' import { ChunkType } from '@renderer/types/chunk' import { findImageBlocks, getMainTextContent } from '@renderer/utils/messageUtils/find' import { defaultTimeout } from '@shared/config/constant' -import OpenAI from 'openai' +import type OpenAI from 'openai' import { toFile } from 'openai/uploads' -import { BaseApiClient } from '../../clients/BaseApiClient' -import { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { BaseApiClient } from '../../clients/BaseApiClient' +import type { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' export const MIDDLEWARE_NAME = 'ImageGenerationMiddleware' diff --git a/src/renderer/src/aiCore/legacy/middleware/feat/ThinkingTagExtractionMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/feat/ThinkingTagExtractionMiddleware.ts index 447b9d2f23..dea679eaac 100644 --- a/src/renderer/src/aiCore/legacy/middleware/feat/ThinkingTagExtractionMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/feat/ThinkingTagExtractionMiddleware.ts @@ -1,17 +1,18 @@ import { loggerService } from '@logger' -import { Model } from '@renderer/types' -import { - ChunkType, +import type { Model } from '@renderer/types' +import type { TextDeltaChunk, ThinkingCompleteChunk, ThinkingDeltaChunk, ThinkingStartChunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import { getLowerBaseModelName } from '@renderer/utils' -import { TagConfig, TagExtractor } from '@renderer/utils/tagExtraction' +import type { TagConfig } from '@renderer/utils/tagExtraction' +import { TagExtractor } from '@renderer/utils/tagExtraction' -import { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' const logger = loggerService.withContext('ThinkingTagExtractionMiddleware') diff --git a/src/renderer/src/aiCore/legacy/middleware/feat/ToolUseExtractionMiddleware.ts b/src/renderer/src/aiCore/legacy/middleware/feat/ToolUseExtractionMiddleware.ts index 1f559bf5ad..38d842e08d 100644 --- a/src/renderer/src/aiCore/legacy/middleware/feat/ToolUseExtractionMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/feat/ToolUseExtractionMiddleware.ts @@ -1,11 +1,13 @@ import { loggerService } from '@logger' -import { MCPTool } from '@renderer/types' -import { ChunkType, MCPToolCreatedChunk, TextDeltaChunk } from '@renderer/types/chunk' +import type { MCPTool } from '@renderer/types' +import type { MCPToolCreatedChunk, TextDeltaChunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import { parseToolUse } from '@renderer/utils/mcp-tools' -import { TagConfig, TagExtractor } from '@renderer/utils/tagExtraction' +import type { TagConfig } from '@renderer/utils/tagExtraction' +import { TagExtractor } from '@renderer/utils/tagExtraction' -import { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' -import { CompletionsContext, CompletionsMiddleware } from '../types' +import type { CompletionsParams, CompletionsResult, GenericChunk } from '../schemas' +import type { CompletionsContext, CompletionsMiddleware } from '../types' export const MIDDLEWARE_NAME = 'ToolUseExtractionMiddleware' diff --git a/src/renderer/src/aiCore/legacy/middleware/index.ts b/src/renderer/src/aiCore/legacy/middleware/index.ts index 64be4edd44..66213c33b8 100644 --- a/src/renderer/src/aiCore/legacy/middleware/index.ts +++ b/src/renderer/src/aiCore/legacy/middleware/index.ts @@ -1,4 +1,4 @@ -import { CompletionsMiddleware, MethodMiddleware } from './types' +import type { CompletionsMiddleware, MethodMiddleware } from './types' // /** // * Wraps a provider instance with middlewares. diff --git a/src/renderer/src/aiCore/legacy/middleware/schemas.ts b/src/renderer/src/aiCore/legacy/middleware/schemas.ts index ce89934f02..9119d818db 100644 --- a/src/renderer/src/aiCore/legacy/middleware/schemas.ts +++ b/src/renderer/src/aiCore/legacy/middleware/schemas.ts @@ -1,9 +1,9 @@ -import { Assistant, MCPTool } from '@renderer/types' -import { Chunk } from '@renderer/types/chunk' -import { Message } from '@renderer/types/newMessage' -import { SdkRawChunk, SdkRawOutput } from '@renderer/types/sdk' +import type { Assistant, MCPTool } from '@renderer/types' +import type { Chunk } from '@renderer/types/chunk' +import type { Message } from '@renderer/types/newMessage' +import type { SdkRawChunk, SdkRawOutput } from '@renderer/types/sdk' -import { ProcessingState } from './types' +import type { ProcessingState } from './types' // ============================================================================ // Core Request Types - 核心请求结构 diff --git a/src/renderer/src/aiCore/legacy/middleware/types.ts b/src/renderer/src/aiCore/legacy/middleware/types.ts index 0a7dbe390b..3762035107 100644 --- a/src/renderer/src/aiCore/legacy/middleware/types.ts +++ b/src/renderer/src/aiCore/legacy/middleware/types.ts @@ -1,6 +1,6 @@ -import { MCPToolResponse, Metrics, Usage, WebSearchResponse } from '@renderer/types' -import { Chunk, ErrorChunk } from '@renderer/types/chunk' -import { +import type { MCPToolResponse, Metrics, Usage, WebSearchResponse } from '@renderer/types' +import type { Chunk, ErrorChunk } from '@renderer/types/chunk' +import type { SdkInstance, SdkMessageParam, SdkParams, @@ -10,8 +10,8 @@ import { SdkToolCall } from '@renderer/types/sdk' -import { BaseApiClient } from '../clients' -import { CompletionsParams, CompletionsResult } from './schemas' +import type { BaseApiClient } from '../clients' +import type { CompletionsParams, CompletionsResult } from './schemas' /** * Symbol to uniquely identify middleware context objects. diff --git a/src/renderer/src/aiCore/legacy/middleware/utils.ts b/src/renderer/src/aiCore/legacy/middleware/utils.ts index 12a2fe651d..32e94e16b6 100644 --- a/src/renderer/src/aiCore/legacy/middleware/utils.ts +++ b/src/renderer/src/aiCore/legacy/middleware/utils.ts @@ -1,4 +1,5 @@ -import { ChunkType, ErrorChunk } from '@renderer/types/chunk' +import type { ErrorChunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' /** * Creates an ErrorChunk object with a standardized structure. diff --git a/src/renderer/src/aiCore/middleware/AiSdkMiddlewareBuilder.ts b/src/renderer/src/aiCore/middleware/AiSdkMiddlewareBuilder.ts index f0d3b2eb59..a3c67b7689 100644 --- a/src/renderer/src/aiCore/middleware/AiSdkMiddlewareBuilder.ts +++ b/src/renderer/src/aiCore/middleware/AiSdkMiddlewareBuilder.ts @@ -1,7 +1,8 @@ import { loggerService } from '@logger' import type { MCPTool, Message, Model, Provider } from '@renderer/types' import type { Chunk } from '@renderer/types/chunk' -import { extractReasoningMiddleware, LanguageModelMiddleware, simulateStreamingMiddleware } from 'ai' +import type { LanguageModelMiddleware } from 'ai' +import { extractReasoningMiddleware, simulateStreamingMiddleware } from 'ai' const logger = loggerService.withContext('AiSdkMiddlewareBuilder') diff --git a/src/renderer/src/aiCore/plugins/PluginBuilder.ts b/src/renderer/src/aiCore/plugins/PluginBuilder.ts index 471f203d15..859e24c880 100644 --- a/src/renderer/src/aiCore/plugins/PluginBuilder.ts +++ b/src/renderer/src/aiCore/plugins/PluginBuilder.ts @@ -1,10 +1,10 @@ -import { AiPlugin } from '@cherrystudio/ai-core' +import type { AiPlugin } from '@cherrystudio/ai-core' import { createPromptToolUsePlugin, googleToolsPlugin, webSearchPlugin } from '@cherrystudio/ai-core/built-in/plugins' import { preferenceService } from '@data/PreferenceService' import { loggerService } from '@logger' import type { Assistant } from '@renderer/types' -import { AiSdkMiddlewareConfig } from '../middleware/AiSdkMiddlewareBuilder' +import type { AiSdkMiddlewareConfig } from '../middleware/AiSdkMiddlewareBuilder' import reasoningTimePlugin from './reasoningTimePlugin' import { searchOrchestrationPlugin } from './searchOrchestrationPlugin' import { createTelemetryPlugin } from './telemetryPlugin' diff --git a/src/renderer/src/aiCore/plugins/searchOrchestrationPlugin.ts b/src/renderer/src/aiCore/plugins/searchOrchestrationPlugin.ts index c1e9b7f17b..6e3b4ba968 100644 --- a/src/renderer/src/aiCore/plugins/searchOrchestrationPlugin.ts +++ b/src/renderer/src/aiCore/plugins/searchOrchestrationPlugin.ts @@ -12,7 +12,8 @@ import { getDefaultModel, getProviderByModel } from '@renderer/services/Assistan import store from '@renderer/store' import { selectCurrentUserId, selectGlobalMemoryEnabled, selectMemoryConfig } from '@renderer/store/memory' import type { Assistant } from '@renderer/types' -import { extractInfoFromXML, ExtractResults } from '@renderer/utils/extract' +import type { ExtractResults } from '@renderer/utils/extract' +import { extractInfoFromXML } from '@renderer/utils/extract' // import { generateObject } from '@cherrystudio/ai-core' import { SEARCH_SUMMARY_PROMPT, diff --git a/src/renderer/src/aiCore/plugins/telemetryPlugin.ts b/src/renderer/src/aiCore/plugins/telemetryPlugin.ts index 75bf6e116c..1d34d2835e 100644 --- a/src/renderer/src/aiCore/plugins/telemetryPlugin.ts +++ b/src/renderer/src/aiCore/plugins/telemetryPlugin.ts @@ -8,10 +8,11 @@ import { definePlugin } from '@cherrystudio/ai-core' import { loggerService } from '@logger' -import { Context, context as otelContext, Span, SpanContext, trace, Tracer } from '@opentelemetry/api' +import type { Context, Span, SpanContext, Tracer } from '@opentelemetry/api' +import { context as otelContext, trace } from '@opentelemetry/api' import { currentSpan } from '@renderer/services/SpanManagerService' import { webTraceService } from '@renderer/services/WebTraceService' -import { Assistant } from '@renderer/types' +import type { Assistant } from '@renderer/types' import { AiSdkSpanAdapter } from '../trace/AiSdkSpanAdapter' diff --git a/src/renderer/src/aiCore/prepareParams/fileProcessor.ts b/src/renderer/src/aiCore/prepareParams/fileProcessor.ts index 9339e61a45..004c19a06c 100644 --- a/src/renderer/src/aiCore/prepareParams/fileProcessor.ts +++ b/src/renderer/src/aiCore/prepareParams/fileProcessor.ts @@ -7,7 +7,7 @@ import { loggerService } from '@logger' import { getProviderByModel } from '@renderer/services/AssistantService' import type { FileMetadata, Message, Model } from '@renderer/types' import { FileTypes } from '@renderer/types' -import { FileMessageBlock } from '@renderer/types/newMessage' +import type { FileMessageBlock } from '@renderer/types/newMessage' import { findFileBlocks } from '@renderer/utils/messageUtils/find' import type { FilePart, TextPart } from 'ai' import type OpenAI from 'openai' diff --git a/src/renderer/src/aiCore/prepareParams/messageConverter.ts b/src/renderer/src/aiCore/prepareParams/messageConverter.ts index 4c2d5baba6..bfa303bcbc 100644 --- a/src/renderer/src/aiCore/prepareParams/messageConverter.ts +++ b/src/renderer/src/aiCore/prepareParams/messageConverter.ts @@ -6,7 +6,7 @@ import { loggerService } from '@logger' import { isVisionModel } from '@renderer/config/models' import type { Message, Model } from '@renderer/types' -import { FileMessageBlock, ImageMessageBlock, ThinkingMessageBlock } from '@renderer/types/newMessage' +import type { FileMessageBlock, ImageMessageBlock, ThinkingMessageBlock } from '@renderer/types/newMessage' import { findFileBlocks, findImageBlocks, diff --git a/src/renderer/src/aiCore/provider/config/aihubmix.ts b/src/renderer/src/aiCore/provider/config/aihubmix.ts index 88453ca38e..162127b589 100644 --- a/src/renderer/src/aiCore/provider/config/aihubmix.ts +++ b/src/renderer/src/aiCore/provider/config/aihubmix.ts @@ -2,7 +2,7 @@ * AiHubMix规则集 */ import { isOpenAIModel } from '@renderer/config/models' -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import { provider2Provider, startsWith } from './helper' import type { RuleSet } from './types' diff --git a/src/renderer/src/aiCore/provider/config/anthropic.ts b/src/renderer/src/aiCore/provider/config/anthropic.ts index 5adce2cfb3..3a8927de7b 100644 --- a/src/renderer/src/aiCore/provider/config/anthropic.ts +++ b/src/renderer/src/aiCore/provider/config/anthropic.ts @@ -1,4 +1,4 @@ -import { SystemModelMessage } from 'ai' +import type { SystemModelMessage } from 'ai' export function buildClaudeCodeSystemMessage(system?: string): Array { const defaultClaudeCodeSystem = `You are Claude Code, Anthropic's official CLI for Claude.` diff --git a/src/renderer/src/aiCore/provider/config/newApi.ts b/src/renderer/src/aiCore/provider/config/newApi.ts index 5277495cdb..97de62597d 100644 --- a/src/renderer/src/aiCore/provider/config/newApi.ts +++ b/src/renderer/src/aiCore/provider/config/newApi.ts @@ -1,7 +1,7 @@ /** * NewAPI规则集 */ -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import { endpointIs, provider2Provider } from './helper' import type { RuleSet } from './types' diff --git a/src/renderer/src/aiCore/provider/factory.ts b/src/renderer/src/aiCore/provider/factory.ts index 617758753e..e1a1837364 100644 --- a/src/renderer/src/aiCore/provider/factory.ts +++ b/src/renderer/src/aiCore/provider/factory.ts @@ -1,7 +1,7 @@ import { hasProviderConfigByAlias, type ProviderId, resolveProviderConfigId } from '@cherrystudio/ai-core/provider' import { createProvider as createProviderCore } from '@cherrystudio/ai-core/provider' import { loggerService } from '@logger' -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import type { Provider as AiSdkProvider } from 'ai' import { initializeNewProviders } from './providerInitialization' diff --git a/src/renderer/src/aiCore/tools/KnowledgeSearchTool.ts b/src/renderer/src/aiCore/tools/KnowledgeSearchTool.ts index f56f650388..b1771bc2cb 100644 --- a/src/renderer/src/aiCore/tools/KnowledgeSearchTool.ts +++ b/src/renderer/src/aiCore/tools/KnowledgeSearchTool.ts @@ -1,6 +1,6 @@ import { processKnowledgeSearch } from '@renderer/services/KnowledgeService' import type { Assistant, KnowledgeReference } from '@renderer/types' -import { ExtractResults, KnowledgeExtractResults } from '@renderer/utils/extract' +import type { ExtractResults, KnowledgeExtractResults } from '@renderer/utils/extract' import { REFERENCE_PROMPT } from '@shared/config/prompts' import { type InferToolInput, type InferToolOutput, tool } from 'ai' import { isEmpty } from 'lodash' diff --git a/src/renderer/src/aiCore/tools/WebSearchTool.ts b/src/renderer/src/aiCore/tools/WebSearchTool.ts index 77260f9bb8..1e502095d1 100644 --- a/src/renderer/src/aiCore/tools/WebSearchTool.ts +++ b/src/renderer/src/aiCore/tools/WebSearchTool.ts @@ -1,6 +1,6 @@ import WebSearchService from '@renderer/services/WebSearchService' -import { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' -import { ExtractResults } from '@renderer/utils/extract' +import type { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' +import type { ExtractResults } from '@renderer/utils/extract' import { REFERENCE_PROMPT } from '@shared/config/prompts' import { type InferToolInput, type InferToolOutput, tool } from 'ai' import { z } from 'zod' diff --git a/src/renderer/src/aiCore/trace/AiSdkSpanAdapter.ts b/src/renderer/src/aiCore/trace/AiSdkSpanAdapter.ts index fc844b5fe5..732397de40 100644 --- a/src/renderer/src/aiCore/trace/AiSdkSpanAdapter.ts +++ b/src/renderer/src/aiCore/trace/AiSdkSpanAdapter.ts @@ -6,8 +6,9 @@ */ import { loggerService } from '@logger' -import { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' -import { Span, SpanKind, SpanStatusCode } from '@opentelemetry/api' +import type { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' +import type { Span } from '@opentelemetry/api' +import { SpanKind, SpanStatusCode } from '@opentelemetry/api' const logger = loggerService.withContext('AiSdkSpanAdapter') diff --git a/src/renderer/src/aiCore/utils/mcp.ts b/src/renderer/src/aiCore/utils/mcp.ts index 9606d9ea6e..84bc661aa0 100644 --- a/src/renderer/src/aiCore/utils/mcp.ts +++ b/src/renderer/src/aiCore/utils/mcp.ts @@ -1,10 +1,10 @@ import { loggerService } from '@logger' -import { MCPTool, MCPToolResponse } from '@renderer/types' +import type { MCPTool, MCPToolResponse } from '@renderer/types' import { callMCPTool, getMcpServerByTool, isToolAutoApproved } from '@renderer/utils/mcp-tools' import { requestToolConfirmation } from '@renderer/utils/userConfirmation' import { type Tool, type ToolSet } from 'ai' import { jsonSchema, tool } from 'ai' -import { JSONSchema7 } from 'json-schema' +import type { JSONSchema7 } from 'json-schema' const logger = loggerService.withContext('MCP-utils') diff --git a/src/renderer/src/aiCore/utils/options.ts b/src/renderer/src/aiCore/utils/options.ts index f85c8c7879..2c677018de 100644 --- a/src/renderer/src/aiCore/utils/options.ts +++ b/src/renderer/src/aiCore/utils/options.ts @@ -2,15 +2,13 @@ import { baseProviderIdSchema, customProviderIdSchema } from '@cherrystudio/ai-c import { isOpenAIModel, isQwenMTModel, isSupportFlexServiceTierModel } from '@renderer/config/models' import { isSupportServiceTierProvider } from '@renderer/config/providers' import { mapLanguageToQwenMTModel } from '@renderer/config/translate' +import type { Assistant, Model, Provider } from '@renderer/types' import { - Assistant, GroqServiceTiers, isGroqServiceTier, isOpenAIServiceTier, isTranslateAssistant, - Model, OpenAIServiceTiers, - Provider, SystemProviderIds } from '@renderer/types' import { t } from 'i18next' diff --git a/src/renderer/src/aiCore/utils/reasoning.ts b/src/renderer/src/aiCore/utils/reasoning.ts index 385d8183c5..5fdaf7a3af 100644 --- a/src/renderer/src/aiCore/utils/reasoning.ts +++ b/src/renderer/src/aiCore/utils/reasoning.ts @@ -26,9 +26,10 @@ import { import { isSupportEnableThinkingProvider } from '@renderer/config/providers' import { getStoreSetting } from '@renderer/hooks/useSettings' import { getAssistantSettings, getProviderByModel } from '@renderer/services/AssistantService' -import { SettingsState } from '@renderer/store/settings' -import { Assistant, EFFORT_RATIO, isSystemProvider, Model, SystemProviderIds } from '@renderer/types' -import { ReasoningEffortOptionalParams } from '@renderer/types/sdk' +import type { SettingsState } from '@renderer/store/settings' +import type { Assistant, Model } from '@renderer/types' +import { EFFORT_RATIO, isSystemProvider, SystemProviderIds } from '@renderer/types' +import type { ReasoningEffortOptionalParams } from '@renderer/types/sdk' const logger = loggerService.withContext('reasoning') diff --git a/src/renderer/src/aiCore/utils/websearch.ts b/src/renderer/src/aiCore/utils/websearch.ts index 41f1803afd..b7fd67f4ce 100644 --- a/src/renderer/src/aiCore/utils/websearch.ts +++ b/src/renderer/src/aiCore/utils/websearch.ts @@ -1,5 +1,5 @@ import { isOpenAIWebSearchChatCompletionOnlyModel } from '@renderer/config/models' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { WEB_SEARCH_PROMPT_FOR_OPENROUTER } from '@shared/config/prompts' export function getWebSearchParams(model: Model): Record { diff --git a/src/renderer/src/components/ActionTools/__tests__/useToolManager.test.ts b/src/renderer/src/components/ActionTools/__tests__/useToolManager.test.ts index 86ec67b760..d910a15796 100644 --- a/src/renderer/src/components/ActionTools/__tests__/useToolManager.test.ts +++ b/src/renderer/src/components/ActionTools/__tests__/useToolManager.test.ts @@ -1,4 +1,5 @@ -import { ActionTool, useToolManager } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' +import { useToolManager } from '@renderer/components/ActionTools' import { act, renderHook } from '@testing-library/react' import { useState } from 'react' import { describe, expect, it } from 'vitest' diff --git a/src/renderer/src/components/ActionTools/constants.ts b/src/renderer/src/components/ActionTools/constants.ts index c2b4966e5f..bade7d123a 100644 --- a/src/renderer/src/components/ActionTools/constants.ts +++ b/src/renderer/src/components/ActionTools/constants.ts @@ -1,4 +1,4 @@ -import { ActionToolSpec } from './types' +import type { ActionToolSpec } from './types' export const TOOL_SPECS: Record = { // Core tools diff --git a/src/renderer/src/components/ActionTools/hooks/useImageTools.tsx b/src/renderer/src/components/ActionTools/hooks/useImageTools.tsx index 3481b92797..f998470403 100644 --- a/src/renderer/src/components/ActionTools/hooks/useImageTools.tsx +++ b/src/renderer/src/components/ActionTools/hooks/useImageTools.tsx @@ -3,7 +3,8 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { ImagePreviewService } from '@renderer/services/ImagePreviewService' import { download as downloadFile } from '@renderer/utils/download' import { svgToPngBlob, svgToSvgBlob } from '@renderer/utils/image' -import { RefObject, useCallback, useEffect, useRef } from 'react' +import type { RefObject } from 'react' +import { useCallback, useEffect, useRef } from 'react' import { useTranslation } from 'react-i18next' const logger = loggerService.withContext('usePreviewToolHandlers') diff --git a/src/renderer/src/components/ActionTools/hooks/useToolManager.ts b/src/renderer/src/components/ActionTools/hooks/useToolManager.ts index ae73fcdb5d..b3d85aaa2f 100644 --- a/src/renderer/src/components/ActionTools/hooks/useToolManager.ts +++ b/src/renderer/src/components/ActionTools/hooks/useToolManager.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react' -import { ActionTool, ToolRegisterProps } from '../types' +import type { ActionTool, ToolRegisterProps } from '../types' export const useToolManager = (setTools?: ToolRegisterProps['setTools']) => { // 注册工具,如果已存在同ID工具则替换 diff --git a/src/renderer/src/components/Avatar/ModelAvatar.tsx b/src/renderer/src/components/Avatar/ModelAvatar.tsx index d1a6f98be9..d1589822b0 100644 --- a/src/renderer/src/components/Avatar/ModelAvatar.tsx +++ b/src/renderer/src/components/Avatar/ModelAvatar.tsx @@ -1,8 +1,9 @@ import { getModelLogo } from '@renderer/config/models' -import { Model } from '@renderer/types' -import { Avatar, AvatarProps } from 'antd' +import type { Model } from '@renderer/types' +import type { AvatarProps } from 'antd' +import { Avatar } from 'antd' import { first } from 'lodash' -import { FC } from 'react' +import type { FC } from 'react' interface Props { model: Model diff --git a/src/renderer/src/components/Buttons/ActionIconButton.tsx b/src/renderer/src/components/Buttons/ActionIconButton.tsx index 1448008090..9f5c98abf0 100644 --- a/src/renderer/src/components/Buttons/ActionIconButton.tsx +++ b/src/renderer/src/components/Buttons/ActionIconButton.tsx @@ -1,5 +1,6 @@ import { cn } from '@heroui/react' -import { Button, ButtonProps } from 'antd' +import type { ButtonProps } from 'antd' +import { Button } from 'antd' import React, { memo } from 'react' interface ActionIconButtonProps extends ButtonProps { diff --git a/src/renderer/src/components/CodeBlockView/HtmlArtifactsCard.tsx b/src/renderer/src/components/CodeBlockView/HtmlArtifactsCard.tsx index 22ccf73687..c6feb2b482 100644 --- a/src/renderer/src/components/CodeBlockView/HtmlArtifactsCard.tsx +++ b/src/renderer/src/components/CodeBlockView/HtmlArtifactsCard.tsx @@ -2,10 +2,11 @@ import { CodeOutlined } from '@ant-design/icons' import { loggerService } from '@logger' import { useTheme } from '@renderer/context/ThemeProvider' import { extractHtmlTitle, getFileNameFromHtmlTitle } from '@renderer/utils/formats' -import { ThemeMode } from '@shared/data/preference/preferenceTypes' +import type { ThemeMode } from '@shared/data/preference/preferenceTypes' import { Button } from 'antd' import { Code, DownloadIcon, Globe, LinkIcon, Sparkles } from 'lucide-react' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { ClipLoader } from 'react-spinners' import styled, { keyframes } from 'styled-components' diff --git a/src/renderer/src/components/CodeBlockView/StatusBar.tsx b/src/renderer/src/components/CodeBlockView/StatusBar.tsx index defd070ac8..72589b9045 100644 --- a/src/renderer/src/components/CodeBlockView/StatusBar.tsx +++ b/src/renderer/src/components/CodeBlockView/StatusBar.tsx @@ -1,5 +1,6 @@ import { Flex } from 'antd' -import { FC, memo, ReactNode } from 'react' +import type { FC, ReactNode } from 'react' +import { memo } from 'react' import styled from 'styled-components' interface Props { diff --git a/src/renderer/src/components/CodeBlockView/view.tsx b/src/renderer/src/components/CodeBlockView/view.tsx index b21af1776a..e5c4038f15 100644 --- a/src/renderer/src/components/CodeBlockView/view.tsx +++ b/src/renderer/src/components/CodeBlockView/view.tsx @@ -1,7 +1,7 @@ import { CodeEditor, type CodeEditorHandles } from '@cherrystudio/ui' import { useMultiplePreferences, usePreference } from '@data/hooks/usePreference' import { loggerService } from '@logger' -import { ActionTool } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' import { CodeToolbar, useCopyTool, @@ -15,7 +15,7 @@ import { } from '@renderer/components/CodeToolbar' import CodeViewer from '@renderer/components/CodeViewer' import ImageViewer from '@renderer/components/ImageViewer' -import { BasicPreviewHandles } from '@renderer/components/Preview' +import type { BasicPreviewHandles } from '@renderer/components/Preview' import { MAX_COLLAPSED_CODE_HEIGHT } from '@renderer/config/constant' import { useCodeStyle } from '@renderer/context/CodeStyleProvider' import { pyodideService } from '@renderer/services/PyodideService' @@ -28,7 +28,7 @@ import styled, { css } from 'styled-components' import { SPECIAL_VIEW_COMPONENTS, SPECIAL_VIEWS } from './constants' import StatusBar from './StatusBar' -import { ViewMode } from './types' +import type { ViewMode } from './types' const logger = loggerService.withContext('CodeBlockView') diff --git a/src/renderer/src/components/CodeEditor/CodeEditor.tsx b/src/renderer/src/components/CodeEditor/CodeEditor.tsx index 0fae63ffab..502e99cfc6 100644 --- a/src/renderer/src/components/CodeEditor/CodeEditor.tsx +++ b/src/renderer/src/components/CodeEditor/CodeEditor.tsx @@ -1,9 +1,10 @@ -import CodeMirror, { Annotation, BasicSetupOptions, EditorView } from '@uiw/react-codemirror' +import type { BasicSetupOptions } from '@uiw/react-codemirror' +import CodeMirror, { Annotation, EditorView } from '@uiw/react-codemirror' import { useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react' import { memo } from 'react' import { useBlurHandler, useHeightListener, useLanguageExtensions, useSaveKeymap } from './hooks' -import { CodeEditorProps } from './types' +import type { CodeEditorProps } from './types' import { prepareCodeChanges } from './utils' /** diff --git a/src/renderer/src/components/CodeEditor/hooks.ts b/src/renderer/src/components/CodeEditor/hooks.ts index b6689644e9..a73db2b30c 100644 --- a/src/renderer/src/components/CodeEditor/hooks.ts +++ b/src/renderer/src/components/CodeEditor/hooks.ts @@ -1,7 +1,8 @@ import { linter } from '@codemirror/lint' // statically imported by @uiw/codemirror-extensions-basic-setup import { EditorView } from '@codemirror/view' import { loggerService } from '@logger' -import { Extension, keymap } from '@uiw/react-codemirror' +import type { Extension } from '@uiw/react-codemirror' +import { keymap } from '@uiw/react-codemirror' import { useEffect, useMemo, useState } from 'react' import { getNormalizedExtension } from './utils' diff --git a/src/renderer/src/components/CodeEditor/types.ts b/src/renderer/src/components/CodeEditor/types.ts index bc91377f70..7346fd115f 100644 --- a/src/renderer/src/components/CodeEditor/types.ts +++ b/src/renderer/src/components/CodeEditor/types.ts @@ -1,4 +1,4 @@ -import { BasicSetupOptions, Extension } from '@uiw/react-codemirror' +import type { BasicSetupOptions, Extension } from '@uiw/react-codemirror' export type CodeMirrorTheme = 'light' | 'dark' | 'none' | Extension diff --git a/src/renderer/src/components/CodeEditor/utils.ts b/src/renderer/src/components/CodeEditor/utils.ts index b31890d344..b46aad36c2 100644 --- a/src/renderer/src/components/CodeEditor/utils.ts +++ b/src/renderer/src/components/CodeEditor/utils.ts @@ -1,9 +1,9 @@ import { languages } from '@shared/config/languages' import * as cmThemes from '@uiw/codemirror-themes-all' -import { Extension } from '@uiw/react-codemirror' +import type { Extension } from '@uiw/react-codemirror' import diff from 'fast-diff' -import { CodeMirrorTheme } from './types' +import type { CodeMirrorTheme } from './types' /** * Computes code changes using fast-diff and converts them to CodeMirror changes. diff --git a/src/renderer/src/components/CodeToolbar/__tests__/CodeToolButton.test.tsx b/src/renderer/src/components/CodeToolbar/__tests__/CodeToolButton.test.tsx index 045d242158..2a5f43f7f1 100644 --- a/src/renderer/src/components/CodeToolbar/__tests__/CodeToolButton.test.tsx +++ b/src/renderer/src/components/CodeToolbar/__tests__/CodeToolButton.test.tsx @@ -1,4 +1,4 @@ -import { ActionTool } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' import { fireEvent, render, screen } from '@testing-library/react' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/src/renderer/src/components/CodeToolbar/__tests__/CodeToolbar.test.tsx b/src/renderer/src/components/CodeToolbar/__tests__/CodeToolbar.test.tsx index 5c38de461b..4f75409c8a 100644 --- a/src/renderer/src/components/CodeToolbar/__tests__/CodeToolbar.test.tsx +++ b/src/renderer/src/components/CodeToolbar/__tests__/CodeToolbar.test.tsx @@ -1,4 +1,4 @@ -import { ActionTool } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' import { fireEvent, render, screen } from '@testing-library/react' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/src/renderer/src/components/CodeToolbar/__tests__/useCopyTool.test.tsx b/src/renderer/src/components/CodeToolbar/__tests__/useCopyTool.test.tsx index 2b39950eab..67c8cc48f3 100644 --- a/src/renderer/src/components/CodeToolbar/__tests__/useCopyTool.test.tsx +++ b/src/renderer/src/components/CodeToolbar/__tests__/useCopyTool.test.tsx @@ -1,5 +1,5 @@ import { useCopyTool } from '@renderer/components/CodeToolbar/hooks/useCopyTool' -import { BasicPreviewHandles } from '@renderer/components/Preview' +import type { BasicPreviewHandles } from '@renderer/components/Preview' import { act, renderHook } from '@testing-library/react' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/src/renderer/src/components/CodeToolbar/__tests__/useDownloadTool.test.tsx b/src/renderer/src/components/CodeToolbar/__tests__/useDownloadTool.test.tsx index 0181dfc5fe..0cc5d8c4ee 100644 --- a/src/renderer/src/components/CodeToolbar/__tests__/useDownloadTool.test.tsx +++ b/src/renderer/src/components/CodeToolbar/__tests__/useDownloadTool.test.tsx @@ -1,5 +1,5 @@ import { useDownloadTool } from '@renderer/components/CodeToolbar/hooks/useDownloadTool' -import { BasicPreviewHandles } from '@renderer/components/Preview' +import type { BasicPreviewHandles } from '@renderer/components/Preview' import { act, renderHook } from '@testing-library/react' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/src/renderer/src/components/CodeToolbar/__tests__/useSplitViewTool.test.tsx b/src/renderer/src/components/CodeToolbar/__tests__/useSplitViewTool.test.tsx index fbe52bbb35..ef408c562f 100644 --- a/src/renderer/src/components/CodeToolbar/__tests__/useSplitViewTool.test.tsx +++ b/src/renderer/src/components/CodeToolbar/__tests__/useSplitViewTool.test.tsx @@ -1,4 +1,4 @@ -import { ViewMode } from '@renderer/components/CodeBlockView/types' +import type { ViewMode } from '@renderer/components/CodeBlockView/types' import { useSplitViewTool } from '@renderer/components/CodeToolbar/hooks/useSplitViewTool' import { act, renderHook } from '@testing-library/react' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/src/renderer/src/components/CodeToolbar/__tests__/useViewSourceTool.test.tsx b/src/renderer/src/components/CodeToolbar/__tests__/useViewSourceTool.test.tsx index 9bac34c57a..a35a063426 100644 --- a/src/renderer/src/components/CodeToolbar/__tests__/useViewSourceTool.test.tsx +++ b/src/renderer/src/components/CodeToolbar/__tests__/useViewSourceTool.test.tsx @@ -1,4 +1,4 @@ -import { ViewMode } from '@renderer/components/CodeBlockView/types' +import type { ViewMode } from '@renderer/components/CodeBlockView/types' import { useViewSourceTool } from '@renderer/components/CodeToolbar/hooks/useViewSourceTool' import { act, renderHook } from '@testing-library/react' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/src/renderer/src/components/CodeToolbar/button.tsx b/src/renderer/src/components/CodeToolbar/button.tsx index 1488752726..874407aed8 100644 --- a/src/renderer/src/components/CodeToolbar/button.tsx +++ b/src/renderer/src/components/CodeToolbar/button.tsx @@ -1,4 +1,4 @@ -import { ActionTool } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' import { Dropdown, Tooltip } from 'antd' import { memo, useMemo } from 'react' diff --git a/src/renderer/src/components/CodeToolbar/hooks/useCopyTool.tsx b/src/renderer/src/components/CodeToolbar/hooks/useCopyTool.tsx index ea928df4fd..0f5d3f08e8 100644 --- a/src/renderer/src/components/CodeToolbar/hooks/useCopyTool.tsx +++ b/src/renderer/src/components/CodeToolbar/hooks/useCopyTool.tsx @@ -1,6 +1,7 @@ -import { ActionTool, TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' +import { TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' import { CopyIcon } from '@renderer/components/Icons' -import { BasicPreviewHandles } from '@renderer/components/Preview' +import type { BasicPreviewHandles } from '@renderer/components/Preview' import { useTemporaryValue } from '@renderer/hooks/useTemporaryValue' import { Check, Image } from 'lucide-react' import { useCallback, useEffect } from 'react' diff --git a/src/renderer/src/components/CodeToolbar/hooks/useDownloadTool.tsx b/src/renderer/src/components/CodeToolbar/hooks/useDownloadTool.tsx index 397c51c921..835c01efbb 100644 --- a/src/renderer/src/components/CodeToolbar/hooks/useDownloadTool.tsx +++ b/src/renderer/src/components/CodeToolbar/hooks/useDownloadTool.tsx @@ -1,6 +1,7 @@ -import { ActionTool, TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' +import { TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' import { FilePngIcon, FileSvgIcon } from '@renderer/components/Icons' -import { BasicPreviewHandles } from '@renderer/components/Preview' +import type { BasicPreviewHandles } from '@renderer/components/Preview' import { Download, FileCode } from 'lucide-react' import { useEffect } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/components/CodeToolbar/hooks/useExpandTool.tsx b/src/renderer/src/components/CodeToolbar/hooks/useExpandTool.tsx index 6428a9c543..0cf2e25008 100644 --- a/src/renderer/src/components/CodeToolbar/hooks/useExpandTool.tsx +++ b/src/renderer/src/components/CodeToolbar/hooks/useExpandTool.tsx @@ -1,4 +1,5 @@ -import { ActionTool, TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' +import { TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' import { ChevronsDownUp, ChevronsUpDown } from 'lucide-react' import { useCallback, useEffect } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/components/CodeToolbar/hooks/useRunTool.tsx b/src/renderer/src/components/CodeToolbar/hooks/useRunTool.tsx index 4c46681a4d..0da586d4cf 100644 --- a/src/renderer/src/components/CodeToolbar/hooks/useRunTool.tsx +++ b/src/renderer/src/components/CodeToolbar/hooks/useRunTool.tsx @@ -1,4 +1,5 @@ -import { ActionTool, TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' +import { TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' import { LoadingIcon } from '@renderer/components/Icons' import { CirclePlay } from 'lucide-react' import { useEffect } from 'react' diff --git a/src/renderer/src/components/CodeToolbar/hooks/useSaveTool.tsx b/src/renderer/src/components/CodeToolbar/hooks/useSaveTool.tsx index f7542b14f2..f343a5a064 100644 --- a/src/renderer/src/components/CodeToolbar/hooks/useSaveTool.tsx +++ b/src/renderer/src/components/CodeToolbar/hooks/useSaveTool.tsx @@ -1,4 +1,5 @@ -import { ActionTool, TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' +import { TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' import { type CodeEditorHandles } from '@renderer/components/CodeEditor' import { useTemporaryValue } from '@renderer/hooks/useTemporaryValue' import { Check, SaveIcon } from 'lucide-react' diff --git a/src/renderer/src/components/CodeToolbar/hooks/useSplitViewTool.tsx b/src/renderer/src/components/CodeToolbar/hooks/useSplitViewTool.tsx index 63367d692f..64b3c0af44 100644 --- a/src/renderer/src/components/CodeToolbar/hooks/useSplitViewTool.tsx +++ b/src/renderer/src/components/CodeToolbar/hooks/useSplitViewTool.tsx @@ -1,5 +1,6 @@ -import { ActionTool, TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' -import { ViewMode } from '@renderer/components/CodeBlockView/types' +import type { ActionTool } from '@renderer/components/ActionTools' +import { TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' +import type { ViewMode } from '@renderer/components/CodeBlockView/types' import { Square, SquareSplitHorizontal } from 'lucide-react' import { useCallback, useEffect } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/components/CodeToolbar/hooks/useViewSourceTool.tsx b/src/renderer/src/components/CodeToolbar/hooks/useViewSourceTool.tsx index a3a6da0152..fa6d71ea67 100644 --- a/src/renderer/src/components/CodeToolbar/hooks/useViewSourceTool.tsx +++ b/src/renderer/src/components/CodeToolbar/hooks/useViewSourceTool.tsx @@ -1,5 +1,6 @@ -import { ActionTool, TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' -import { ViewMode } from '@renderer/components/CodeBlockView/types' +import type { ActionTool } from '@renderer/components/ActionTools' +import { TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' +import type { ViewMode } from '@renderer/components/CodeBlockView/types' import { CodeXml, Eye, SquarePen } from 'lucide-react' import { useCallback, useEffect } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/components/CodeToolbar/hooks/useWrapTool.tsx b/src/renderer/src/components/CodeToolbar/hooks/useWrapTool.tsx index bea1e4a5b5..d4bfa6e273 100644 --- a/src/renderer/src/components/CodeToolbar/hooks/useWrapTool.tsx +++ b/src/renderer/src/components/CodeToolbar/hooks/useWrapTool.tsx @@ -1,4 +1,5 @@ -import { ActionTool, TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' +import { TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' import { Text as UnWrapIcon, WrapText as WrapIcon } from 'lucide-react' import { useCallback, useEffect } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/components/CodeToolbar/toolbar.tsx b/src/renderer/src/components/CodeToolbar/toolbar.tsx index 7b17a6f0e8..7b78d8e536 100644 --- a/src/renderer/src/components/CodeToolbar/toolbar.tsx +++ b/src/renderer/src/components/CodeToolbar/toolbar.tsx @@ -1,4 +1,4 @@ -import { ActionTool } from '@renderer/components/ActionTools' +import type { ActionTool } from '@renderer/components/ActionTools' import { HStack } from '@renderer/components/Layout' import { Tooltip } from 'antd' import { EllipsisVertical } from 'lucide-react' diff --git a/src/renderer/src/components/CodeViewer.tsx b/src/renderer/src/components/CodeViewer.tsx index 7ace55af41..9c9547bc7c 100644 --- a/src/renderer/src/components/CodeViewer.tsx +++ b/src/renderer/src/components/CodeViewer.tsx @@ -6,7 +6,7 @@ import { getReactStyleFromToken } from '@renderer/utils/shiki' import { useVirtualizer } from '@tanstack/react-virtual' import { debounce } from 'lodash' import React, { memo, useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react' -import { ThemedToken } from 'shiki/core' +import type { ThemedToken } from 'shiki/core' import styled from 'styled-components' interface CodeViewerProps { diff --git a/src/renderer/src/components/CollapsibleSearchBar.tsx b/src/renderer/src/components/CollapsibleSearchBar.tsx index 04b838e37a..2b7eb1e277 100644 --- a/src/renderer/src/components/CollapsibleSearchBar.tsx +++ b/src/renderer/src/components/CollapsibleSearchBar.tsx @@ -1,5 +1,6 @@ import i18n from '@renderer/i18n' -import { Input, InputRef, Tooltip } from 'antd' +import type { InputRef } from 'antd' +import { Input, Tooltip } from 'antd' import { Search } from 'lucide-react' import { motion } from 'motion/react' import React, { memo, useCallback, useEffect, useRef, useState } from 'react' diff --git a/src/renderer/src/components/CopyButton.tsx b/src/renderer/src/components/CopyButton.tsx index cfa80a02c5..173a1fddf8 100644 --- a/src/renderer/src/components/CopyButton.tsx +++ b/src/renderer/src/components/CopyButton.tsx @@ -1,6 +1,6 @@ import { Tooltip } from 'antd' import { Copy } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/components/CustomCollapse.tsx b/src/renderer/src/components/CustomCollapse.tsx index 8362d8a479..4e8e7a9494 100644 --- a/src/renderer/src/components/CustomCollapse.tsx +++ b/src/renderer/src/components/CustomCollapse.tsx @@ -1,7 +1,8 @@ import { Collapse } from 'antd' import { merge } from 'lodash' import { ChevronRight } from 'lucide-react' -import { FC, memo, useMemo, useState } from 'react' +import type { FC } from 'react' +import { memo, useMemo, useState } from 'react' interface CustomCollapseProps { label: React.ReactNode diff --git a/src/renderer/src/components/DividerWithText.tsx b/src/renderer/src/components/DividerWithText.tsx index 764550381f..30f287e9f8 100644 --- a/src/renderer/src/components/DividerWithText.tsx +++ b/src/renderer/src/components/DividerWithText.tsx @@ -1,4 +1,5 @@ -import React, { CSSProperties } from 'react' +import type { CSSProperties } from 'react' +import React from 'react' import styled from 'styled-components' interface DividerWithTextProps { diff --git a/src/renderer/src/components/DraggableList/__tests__/useDraggableReorder.test.ts b/src/renderer/src/components/DraggableList/__tests__/useDraggableReorder.test.ts index a9ffd3d889..c2f566aad2 100644 --- a/src/renderer/src/components/DraggableList/__tests__/useDraggableReorder.test.ts +++ b/src/renderer/src/components/DraggableList/__tests__/useDraggableReorder.test.ts @@ -1,4 +1,4 @@ -import { DropResult } from '@hello-pangea/dnd' +import type { DropResult } from '@hello-pangea/dnd' import { act, renderHook } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' diff --git a/src/renderer/src/components/DraggableList/list.tsx b/src/renderer/src/components/DraggableList/list.tsx index fbb5f29762..62a7c636c0 100644 --- a/src/renderer/src/components/DraggableList/list.tsx +++ b/src/renderer/src/components/DraggableList/list.tsx @@ -1,15 +1,14 @@ -import { - DragDropContext, - Draggable, - Droppable, +import type { DroppableProps, DropResult, OnDragEndResponder, OnDragStartResponder, ResponderProvided } from '@hello-pangea/dnd' +import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd' import { droppableReorder } from '@renderer/utils' -import { HTMLAttributes, Key, useCallback } from 'react' +import type { HTMLAttributes, Key } from 'react' +import { useCallback } from 'react' interface Props { list: T[] diff --git a/src/renderer/src/components/DraggableList/useDraggableReorder.ts b/src/renderer/src/components/DraggableList/useDraggableReorder.ts index 5438635cd6..7f7ed902cf 100644 --- a/src/renderer/src/components/DraggableList/useDraggableReorder.ts +++ b/src/renderer/src/components/DraggableList/useDraggableReorder.ts @@ -1,5 +1,6 @@ -import { DropResult } from '@hello-pangea/dnd' -import { Key, useCallback, useMemo } from 'react' +import type { DropResult } from '@hello-pangea/dnd' +import type { Key } from 'react' +import { useCallback, useMemo } from 'react' interface UseDraggableReorderParams { /** 原始的、完整的数据列表 */ diff --git a/src/renderer/src/components/DraggableList/virtual-list.tsx b/src/renderer/src/components/DraggableList/virtual-list.tsx index 67089332ae..6c4d7c29e7 100644 --- a/src/renderer/src/components/DraggableList/virtual-list.tsx +++ b/src/renderer/src/components/DraggableList/virtual-list.tsx @@ -1,14 +1,12 @@ import { Scrollbar } from '@cherrystudio/ui' -import { - DragDropContext, - Draggable, - Droppable, +import type { DroppableProps, DropResult, OnDragEndResponder, OnDragStartResponder, ResponderProvided } from '@hello-pangea/dnd' +import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd' import { droppableReorder } from '@renderer/utils' import { type ScrollToOptions, useVirtualizer, type VirtualItem } from '@tanstack/react-virtual' import { type Key, memo, useCallback, useImperativeHandle, useRef } from 'react' diff --git a/src/renderer/src/components/EditableNumber/index.tsx b/src/renderer/src/components/EditableNumber/index.tsx index 220cf5fb57..4a8a40e531 100644 --- a/src/renderer/src/components/EditableNumber/index.tsx +++ b/src/renderer/src/components/EditableNumber/index.tsx @@ -1,5 +1,6 @@ import { InputNumber } from 'antd' -import { FC, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useRef, useState } from 'react' import styled from 'styled-components' export interface EditableNumberProps { diff --git a/src/renderer/src/components/EmojiIcon.tsx b/src/renderer/src/components/EmojiIcon.tsx index 6cd06b8715..e8a787c9b0 100644 --- a/src/renderer/src/components/EmojiIcon.tsx +++ b/src/renderer/src/components/EmojiIcon.tsx @@ -1,4 +1,4 @@ -import { FC } from 'react' +import type { FC } from 'react' import styled from 'styled-components' interface EmojiIconProps { diff --git a/src/renderer/src/components/EmojiPicker/index.tsx b/src/renderer/src/components/EmojiPicker/index.tsx index 69ac7ccdaa..8ba9d3e967 100644 --- a/src/renderer/src/components/EmojiPicker/index.tsx +++ b/src/renderer/src/components/EmojiPicker/index.tsx @@ -1,7 +1,8 @@ import TwemojiCountryFlagsWoff2 from '@renderer/assets/fonts/country-flag-fonts/TwemojiCountryFlags.woff2?url' import { useTheme } from '@renderer/context/ThemeProvider' import { polyfillCountryFlagEmojis } from 'country-flag-emoji-polyfill' -import { FC, useEffect, useRef } from 'react' +import type { FC } from 'react' +import { useEffect, useRef } from 'react' interface Props { onEmojiClick: (emoji: string) => void diff --git a/src/renderer/src/components/ErrorBoundary.tsx b/src/renderer/src/components/ErrorBoundary.tsx index 1ee3967e9c..12e9ab5935 100644 --- a/src/renderer/src/components/ErrorBoundary.tsx +++ b/src/renderer/src/components/ErrorBoundary.tsx @@ -1,8 +1,9 @@ import { Button } from '@heroui/button' import { formatErrorMessage } from '@renderer/utils/error' import { Alert, Space } from 'antd' -import { ComponentType, ReactNode } from 'react' -import { ErrorBoundary, FallbackProps } from 'react-error-boundary' +import type { ComponentType, ReactNode } from 'react' +import type { FallbackProps } from 'react-error-boundary' +import { ErrorBoundary } from 'react-error-boundary' import { useTranslation } from 'react-i18next' import styled from 'styled-components' const DefaultFallback: ComponentType = (props: FallbackProps): ReactNode => { diff --git a/src/renderer/src/components/FreeTrialModelTag.tsx b/src/renderer/src/components/FreeTrialModelTag.tsx index 0ce63ade37..d47ee03f98 100644 --- a/src/renderer/src/components/FreeTrialModelTag.tsx +++ b/src/renderer/src/components/FreeTrialModelTag.tsx @@ -1,8 +1,8 @@ import { getProviderLabel } from '@renderer/i18n/label' import NavigationService from '@renderer/services/NavigationService' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { ArrowUpRight } from 'lucide-react' -import { FC, MouseEvent } from 'react' +import type { FC, MouseEvent } from 'react' import styled from 'styled-components' import IndicatorLight from './IndicatorLight' diff --git a/src/renderer/src/components/HealthStatusIndicator/indicator.tsx b/src/renderer/src/components/HealthStatusIndicator/indicator.tsx index 9dce1c21be..2807549e28 100644 --- a/src/renderer/src/components/HealthStatusIndicator/indicator.tsx +++ b/src/renderer/src/components/HealthStatusIndicator/indicator.tsx @@ -3,7 +3,7 @@ import { Flex, Tooltip, Typography } from 'antd' import React, { memo } from 'react' import styled from 'styled-components' -import { HealthResult } from './types' +import type { HealthResult } from './types' import { useHealthStatus } from './useHealthStatus' export interface HealthStatusIndicatorProps { diff --git a/src/renderer/src/components/HealthStatusIndicator/types.ts b/src/renderer/src/components/HealthStatusIndicator/types.ts index f87376b781..87bff48c1c 100644 --- a/src/renderer/src/components/HealthStatusIndicator/types.ts +++ b/src/renderer/src/components/HealthStatusIndicator/types.ts @@ -1,4 +1,4 @@ -import { HealthStatus } from '@renderer/types/healthCheck' +import type { HealthStatus } from '@renderer/types/healthCheck' /** * 用于展示单个健康检查结果的必要数据 diff --git a/src/renderer/src/components/HealthStatusIndicator/useHealthStatus.tsx b/src/renderer/src/components/HealthStatusIndicator/useHealthStatus.tsx index 456961c97f..1027324eeb 100644 --- a/src/renderer/src/components/HealthStatusIndicator/useHealthStatus.tsx +++ b/src/renderer/src/components/HealthStatusIndicator/useHealthStatus.tsx @@ -3,7 +3,7 @@ import { Flex } from 'antd' import React from 'react' import { useTranslation } from 'react-i18next' -import { HealthResult } from './types' +import type { HealthResult } from './types' interface UseHealthStatusProps { results: HealthResult[] diff --git a/src/renderer/src/components/Icons/FileIcons.tsx b/src/renderer/src/components/Icons/FileIcons.tsx index 0fbfcdebf5..fd095335a8 100644 --- a/src/renderer/src/components/Icons/FileIcons.tsx +++ b/src/renderer/src/components/Icons/FileIcons.tsx @@ -1,4 +1,4 @@ -import { CSSProperties, SVGProps } from 'react' +import type { CSSProperties, SVGProps } from 'react' interface BaseFileIconProps extends SVGProps { size?: string | number diff --git a/src/renderer/src/components/Icons/MinAppIcon.tsx b/src/renderer/src/components/Icons/MinAppIcon.tsx index c9612416bb..4431ea738d 100644 --- a/src/renderer/src/components/Icons/MinAppIcon.tsx +++ b/src/renderer/src/components/Icons/MinAppIcon.tsx @@ -1,6 +1,6 @@ import { DEFAULT_MIN_APPS } from '@renderer/config/minapps' -import { MinAppType } from '@renderer/types' -import { FC } from 'react' +import type { MinAppType } from '@renderer/types' +import type { FC } from 'react' import styled from 'styled-components' interface Props { diff --git a/src/renderer/src/components/Icons/OcrIcon.tsx b/src/renderer/src/components/Icons/OcrIcon.tsx index 41367445a7..9f73867a0c 100644 --- a/src/renderer/src/components/Icons/OcrIcon.tsx +++ b/src/renderer/src/components/Icons/OcrIcon.tsx @@ -1,4 +1,4 @@ -import { FC } from 'react' +import type { FC } from 'react' const OcrIcon: FC, HTMLElement>> = (props) => { return diff --git a/src/renderer/src/components/Icons/ReasoningIcon.tsx b/src/renderer/src/components/Icons/ReasoningIcon.tsx index 4f98f5735c..8d7aa94fed 100644 --- a/src/renderer/src/components/Icons/ReasoningIcon.tsx +++ b/src/renderer/src/components/Icons/ReasoningIcon.tsx @@ -1,5 +1,6 @@ import { Tooltip } from 'antd' -import React, { FC } from 'react' +import type { FC } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/components/Icons/SVGIcon.tsx b/src/renderer/src/components/Icons/SVGIcon.tsx index b17f7397c0..ad503f0e38 100644 --- a/src/renderer/src/components/Icons/SVGIcon.tsx +++ b/src/renderer/src/components/Icons/SVGIcon.tsx @@ -1,6 +1,6 @@ import { lightbulbVariants } from '@renderer/utils/motionVariants' import { motion } from 'motion/react' -import { SVGProps } from 'react' +import type { SVGProps } from 'react' export const StreamlineGoodHealthAndWellBeing = ( props: SVGProps & { diff --git a/src/renderer/src/components/Icons/SvgSpinners180Ring.tsx b/src/renderer/src/components/Icons/SvgSpinners180Ring.tsx index 6cebfa3332..7efa37a66f 100644 --- a/src/renderer/src/components/Icons/SvgSpinners180Ring.tsx +++ b/src/renderer/src/components/Icons/SvgSpinners180Ring.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react' +import type { SVGProps } from 'react' export function SvgSpinners180Ring(props: SVGProps & { size?: number | string }) { const { size = '1em', ...svgProps } = props diff --git a/src/renderer/src/components/Icons/ToolIcon.tsx b/src/renderer/src/components/Icons/ToolIcon.tsx index 69f8da260c..2d7b5d6146 100644 --- a/src/renderer/src/components/Icons/ToolIcon.tsx +++ b/src/renderer/src/components/Icons/ToolIcon.tsx @@ -1,4 +1,4 @@ -import { FC } from 'react' +import type { FC } from 'react' const ToolIcon: FC, HTMLElement>> = (props) => { return diff --git a/src/renderer/src/components/Icons/ToolsCallingIcon.tsx b/src/renderer/src/components/Icons/ToolsCallingIcon.tsx index 7a591d2316..36b831e715 100644 --- a/src/renderer/src/components/Icons/ToolsCallingIcon.tsx +++ b/src/renderer/src/components/Icons/ToolsCallingIcon.tsx @@ -1,6 +1,7 @@ import { ToolOutlined } from '@ant-design/icons' import { Tooltip } from 'antd' -import React, { FC } from 'react' +import type { FC } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/components/Icons/VisionIcon.tsx b/src/renderer/src/components/Icons/VisionIcon.tsx index 4ab4c408c1..d1f2b4e180 100644 --- a/src/renderer/src/components/Icons/VisionIcon.tsx +++ b/src/renderer/src/components/Icons/VisionIcon.tsx @@ -1,6 +1,7 @@ import { Tooltip } from 'antd' import { ImageIcon } from 'lucide-react' -import React, { FC } from 'react' +import type { FC } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/components/Icons/WebSearchIcon.tsx b/src/renderer/src/components/Icons/WebSearchIcon.tsx index 6dc99000ae..156ea1307b 100644 --- a/src/renderer/src/components/Icons/WebSearchIcon.tsx +++ b/src/renderer/src/components/Icons/WebSearchIcon.tsx @@ -1,6 +1,7 @@ import { GlobalOutlined } from '@ant-design/icons' import { Tooltip } from 'antd' -import React, { FC } from 'react' +import type { FC } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/components/ImageViewer.tsx b/src/renderer/src/components/ImageViewer.tsx index 179babeaf6..757a694419 100644 --- a/src/renderer/src/components/ImageViewer.tsx +++ b/src/renderer/src/components/ImageViewer.tsx @@ -10,7 +10,8 @@ import { } from '@ant-design/icons' import { loggerService } from '@logger' import { download } from '@renderer/utils/download' -import { Dropdown, Image as AntImage, ImageProps as AntImageProps, Space } from 'antd' +import type { ImageProps as AntImageProps } from 'antd' +import { Dropdown, Image as AntImage, Space } from 'antd' import { Base64 } from 'js-base64' import { DownloadIcon, ImageIcon } from 'lucide-react' import mime from 'mime' diff --git a/src/renderer/src/components/InfoPopover.tsx b/src/renderer/src/components/InfoPopover.tsx index 888aefc702..04ea1e7c3d 100644 --- a/src/renderer/src/components/InfoPopover.tsx +++ b/src/renderer/src/components/InfoPopover.tsx @@ -1,4 +1,5 @@ -import { Popover, PopoverProps } from 'antd' +import type { PopoverProps } from 'antd' +import { Popover } from 'antd' import { Info } from 'lucide-react' type InheritedPopoverProps = Omit diff --git a/src/renderer/src/components/InputEmbeddingDimension.tsx b/src/renderer/src/components/InputEmbeddingDimension.tsx index 056ebaea50..8e6357a91d 100644 --- a/src/renderer/src/components/InputEmbeddingDimension.tsx +++ b/src/renderer/src/components/InputEmbeddingDimension.tsx @@ -2,7 +2,7 @@ import { loggerService } from '@logger' import AiProvider from '@renderer/aiCore' import { RefreshIcon } from '@renderer/components/Icons' import { useProvider } from '@renderer/hooks/useProvider' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { getErrorMessage } from '@renderer/utils' import { Button, InputNumber, Space, Tooltip } from 'antd' import { memo, useCallback, useMemo, useState } from 'react' diff --git a/src/renderer/src/components/LanguageSelect.tsx b/src/renderer/src/components/LanguageSelect.tsx index cc18294712..e9799096a7 100644 --- a/src/renderer/src/components/LanguageSelect.tsx +++ b/src/renderer/src/components/LanguageSelect.tsx @@ -1,8 +1,10 @@ import { UNKNOWN } from '@renderer/config/translate' import useTranslate from '@renderer/hooks/useTranslate' -import { TranslateLanguage, TranslateLanguageCode } from '@renderer/types' -import { Select, SelectProps, Space } from 'antd' -import { ReactNode, useCallback, useMemo } from 'react' +import type { TranslateLanguage, TranslateLanguageCode } from '@renderer/types' +import type { SelectProps } from 'antd' +import { Select, Space } from 'antd' +import type { ReactNode } from 'react' +import { useCallback, useMemo } from 'react' export type LanguageOption = { value: TranslateLanguageCode diff --git a/src/renderer/src/components/ListItem/index.tsx b/src/renderer/src/components/ListItem/index.tsx index 2574573627..3ab38bcb41 100644 --- a/src/renderer/src/components/ListItem/index.tsx +++ b/src/renderer/src/components/ListItem/index.tsx @@ -1,5 +1,5 @@ import { Typography } from 'antd' -import { ReactNode } from 'react' +import type { ReactNode } from 'react' import styled from 'styled-components' interface ListItemProps { diff --git a/src/renderer/src/components/MarkdownEditor/index.tsx b/src/renderer/src/components/MarkdownEditor/index.tsx index 427ff1ccc8..5b5ab445e9 100644 --- a/src/renderer/src/components/MarkdownEditor/index.tsx +++ b/src/renderer/src/components/MarkdownEditor/index.tsx @@ -1,6 +1,7 @@ import 'katex/dist/katex.min.css' -import React, { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import React, { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import ReactMarkdown from 'react-markdown' import rehypeKatex from 'rehype-katex' diff --git a/src/renderer/src/components/MaxContextCount.tsx b/src/renderer/src/components/MaxContextCount.tsx index be9c9f293c..b07564da71 100644 --- a/src/renderer/src/components/MaxContextCount.tsx +++ b/src/renderer/src/components/MaxContextCount.tsx @@ -1,6 +1,6 @@ import { MAX_CONTEXT_COUNT } from '@renderer/config/constant' import { Infinity as InfinityIcon } from 'lucide-react' -import { CSSProperties } from 'react' +import type { CSSProperties } from 'react' type Props = { maxContext: number diff --git a/src/renderer/src/components/MinApp/MinApp.tsx b/src/renderer/src/components/MinApp/MinApp.tsx index b3a51102b5..801db2b082 100644 --- a/src/renderer/src/components/MinApp/MinApp.tsx +++ b/src/renderer/src/components/MinApp/MinApp.tsx @@ -5,10 +5,10 @@ import { loadCustomMiniApp, ORIGIN_DEFAULT_MIN_APPS, updateDefaultMinApps } from import { useMinappPopup } from '@renderer/hooks/useMinappPopup' import { useMinapps } from '@renderer/hooks/useMinapps' import { useNavbarPosition } from '@renderer/hooks/useNavbar' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' import type { MenuProps } from 'antd' import { Dropdown } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/components/MinApp/MinAppTabsPool.tsx b/src/renderer/src/components/MinApp/MinAppTabsPool.tsx index da11991676..1bef9a532a 100644 --- a/src/renderer/src/components/MinApp/MinAppTabsPool.tsx +++ b/src/renderer/src/components/MinApp/MinAppTabsPool.tsx @@ -3,7 +3,7 @@ import WebviewContainer from '@renderer/components/MinApp/WebviewContainer' import { useMinapps } from '@renderer/hooks/useMinapps' import { useNavbarPosition } from '@renderer/hooks/useNavbar' import { getWebviewLoaded, setWebviewLoaded } from '@renderer/utils/webviewStateManager' -import { WebviewTag } from 'electron' +import type { WebviewTag } from 'electron' import React, { useEffect, useRef } from 'react' import { useLocation } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/components/MinApp/MinappPopupContainer.tsx b/src/renderer/src/components/MinApp/MinappPopupContainer.tsx index 654bf9d042..01c0517e81 100644 --- a/src/renderer/src/components/MinApp/MinappPopupContainer.tsx +++ b/src/renderer/src/components/MinApp/MinappPopupContainer.tsx @@ -21,11 +21,11 @@ import { useMinapps } from '@renderer/hooks/useMinapps' import useNavBackgroundColor from '@renderer/hooks/useNavBackgroundColor' import { useNavbarPosition } from '@renderer/hooks/useNavbar' import { useTimer } from '@renderer/hooks/useTimer' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' import { delay } from '@renderer/utils' import { clearWebviewState, getWebviewLoaded, setWebviewLoaded } from '@renderer/utils/webviewStateManager' import { Alert, Avatar, Button, Drawer, Tooltip } from 'antd' -import { WebviewTag } from 'electron' +import type { WebviewTag } from 'electron' import { useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import BeatLoader from 'react-spinners/BeatLoader' diff --git a/src/renderer/src/components/MinApp/WebviewContainer.tsx b/src/renderer/src/components/MinApp/WebviewContainer.tsx index 21c53efe78..45263534fc 100644 --- a/src/renderer/src/components/MinApp/WebviewContainer.tsx +++ b/src/renderer/src/components/MinApp/WebviewContainer.tsx @@ -1,6 +1,6 @@ import { usePreference } from '@data/hooks/usePreference' import { loggerService } from '@logger' -import { WebviewTag } from 'electron' +import type { WebviewTag } from 'electron' import { memo, useEffect, useRef } from 'react' const logger = loggerService.withContext('WebviewContainer') diff --git a/src/renderer/src/components/ModelIdWithTags.tsx b/src/renderer/src/components/ModelIdWithTags.tsx index bf902ae1c4..76e7f99e15 100644 --- a/src/renderer/src/components/ModelIdWithTags.tsx +++ b/src/renderer/src/components/ModelIdWithTags.tsx @@ -1,4 +1,4 @@ -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { Tooltip, Typography } from 'antd' import { memo } from 'react' import styled from 'styled-components' diff --git a/src/renderer/src/components/ModelSelectButton.tsx b/src/renderer/src/components/ModelSelectButton.tsx index fd227f1e76..959461389d 100644 --- a/src/renderer/src/components/ModelSelectButton.tsx +++ b/src/renderer/src/components/ModelSelectButton.tsx @@ -1,5 +1,6 @@ -import { Model } from '@renderer/types' -import { Button, Tooltip, TooltipProps } from 'antd' +import type { Model } from '@renderer/types' +import type { TooltipProps } from 'antd' +import { Button, Tooltip } from 'antd' import { useCallback, useMemo } from 'react' import ModelAvatar from './Avatar/ModelAvatar' diff --git a/src/renderer/src/components/ModelSelector.tsx b/src/renderer/src/components/ModelSelector.tsx index 98fa195fb6..12666b4d4b 100644 --- a/src/renderer/src/components/ModelSelector.tsx +++ b/src/renderer/src/components/ModelSelector.tsx @@ -1,11 +1,12 @@ import ModelAvatar from '@renderer/components/Avatar/ModelAvatar' import { getModelUniqId } from '@renderer/services/ModelService' -import { Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' import { matchKeywordsInString } from '@renderer/utils' import { getFancyProviderName } from '@renderer/utils/naming' -import { Avatar, Select, SelectProps } from 'antd' +import type { SelectProps } from 'antd' +import { Avatar, Select } from 'antd' import { sortBy } from 'lodash' -import { BaseSelectRef } from 'rc-select' +import type { BaseSelectRef } from 'rc-select' import { memo, useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/components/ModelTagsWithLabel.tsx b/src/renderer/src/components/ModelTagsWithLabel.tsx index 263292dcad..93e52f6a0c 100644 --- a/src/renderer/src/components/ModelTagsWithLabel.tsx +++ b/src/renderer/src/components/ModelTagsWithLabel.tsx @@ -7,9 +7,10 @@ import { isWebSearchModel } from '@renderer/config/models' import i18n from '@renderer/i18n' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { isFreeModel } from '@renderer/utils/model' -import { FC, memo, useLayoutEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import { memo, useLayoutEffect, useMemo, useRef, useState } from 'react' import styled from 'styled-components' import { diff --git a/src/renderer/src/components/OAuth/OAuthButton.tsx b/src/renderer/src/components/OAuth/OAuthButton.tsx index fec3aae619..bded05b0b0 100644 --- a/src/renderer/src/components/OAuth/OAuthButton.tsx +++ b/src/renderer/src/components/OAuth/OAuthButton.tsx @@ -1,5 +1,5 @@ import { getProviderLabel } from '@renderer/i18n/label' -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import { oauthWith302AI, oauthWithAihubmix, @@ -7,8 +7,9 @@ import { oauthWithSiliconFlow, oauthWithTokenFlux } from '@renderer/utils/oauth' -import { Button, ButtonProps } from 'antd' -import { FC } from 'react' +import type { ButtonProps } from 'antd' +import { Button } from 'antd' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' interface Props extends ButtonProps { diff --git a/src/renderer/src/components/Popups/AddAssistantPopup.tsx b/src/renderer/src/components/Popups/AddAssistantPopup.tsx index eecad5ec9c..e891b87818 100644 --- a/src/renderer/src/components/Popups/AddAssistantPopup.tsx +++ b/src/renderer/src/components/Popups/AddAssistantPopup.tsx @@ -5,9 +5,10 @@ import { useTimer } from '@renderer/hooks/useTimer' import { useSystemAgents } from '@renderer/pages/agents' import { createAssistantFromAgent } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { Agent, Assistant } from '@renderer/types' +import type { Agent, Assistant } from '@renderer/types' import { uuid } from '@renderer/utils' -import { Divider, Input, InputRef, Modal, Tag } from 'antd' +import type { InputRef } from 'antd' +import { Divider, Input, Modal, Tag } from 'antd' import { take } from 'lodash' import { Search } from 'lucide-react' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' diff --git a/src/renderer/src/components/Popups/ApiKeyListPopup/hook.ts b/src/renderer/src/components/Popups/ApiKeyListPopup/hook.ts index e69341a864..f28e034bda 100644 --- a/src/renderer/src/components/Popups/ApiKeyListPopup/hook.ts +++ b/src/renderer/src/components/Popups/ApiKeyListPopup/hook.ts @@ -3,23 +3,18 @@ import { isEmbeddingModel, isRerankModel } from '@renderer/config/models' import SelectProviderModelPopup from '@renderer/pages/settings/ProviderSettings/SelectProviderModelPopup' import { checkApi } from '@renderer/services/ApiService' import WebSearchService from '@renderer/services/WebSearchService' -import { - isPreprocessProviderId, - isWebSearchProviderId, - Model, - PreprocessProvider, - Provider, - WebSearchProvider -} from '@renderer/types' -import { ApiKeyConnectivity, ApiKeyWithStatus, HealthStatus } from '@renderer/types/healthCheck' +import type { Model, PreprocessProvider, Provider, WebSearchProvider } from '@renderer/types' +import { isPreprocessProviderId, isWebSearchProviderId } from '@renderer/types' +import type { ApiKeyConnectivity, ApiKeyWithStatus } from '@renderer/types/healthCheck' +import { HealthStatus } from '@renderer/types/healthCheck' import { formatApiKeys, splitApiKeyString } from '@renderer/utils/api' import { formatErrorMessage } from '@renderer/utils/error' -import { TFunction } from 'i18next' +import type { TFunction } from 'i18next' import { isEmpty } from 'lodash' import { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' -import { ApiKeyValidity, ApiProvider, UpdateApiProviderFunc } from './types' +import type { ApiKeyValidity, ApiProvider, UpdateApiProviderFunc } from './types' interface UseApiKeysProps { provider: ApiProvider diff --git a/src/renderer/src/components/Popups/ApiKeyListPopup/item.tsx b/src/renderer/src/components/Popups/ApiKeyListPopup/item.tsx index 83c9389935..3ddcc383cd 100644 --- a/src/renderer/src/components/Popups/ApiKeyListPopup/item.tsx +++ b/src/renderer/src/components/Popups/ApiKeyListPopup/item.tsx @@ -1,15 +1,17 @@ import { type HealthResult, HealthStatusIndicator } from '@renderer/components/HealthStatusIndicator' import { EditIcon } from '@renderer/components/Icons' import { StreamlineGoodHealthAndWellBeing } from '@renderer/components/Icons/SVGIcon' -import { ApiKeyWithStatus } from '@renderer/types/healthCheck' +import type { ApiKeyWithStatus } from '@renderer/types/healthCheck' import { maskApiKey } from '@renderer/utils/api' -import { Button, Flex, Input, InputRef, List, Popconfirm, Tooltip, Typography } from 'antd' +import type { InputRef } from 'antd' +import { Button, Flex, Input, List, Popconfirm, Tooltip, Typography } from 'antd' import { Check, Minus, X } from 'lucide-react' -import { FC, memo, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { memo, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' -import { ApiKeyValidity } from './types' +import type { ApiKeyValidity } from './types' export interface ApiKeyItemProps { keyStatus: ApiKeyWithStatus diff --git a/src/renderer/src/components/Popups/ApiKeyListPopup/list.tsx b/src/renderer/src/components/Popups/ApiKeyListPopup/list.tsx index 86076b4ca8..6611416333 100644 --- a/src/renderer/src/components/Popups/ApiKeyListPopup/list.tsx +++ b/src/renderer/src/components/Popups/ApiKeyListPopup/list.tsx @@ -6,17 +6,19 @@ import { useProvider } from '@renderer/hooks/useProvider' import { useWebSearchProvider } from '@renderer/hooks/useWebSearchProviders' import { SettingHelpText } from '@renderer/pages/settings' import { isProviderSupportAuth } from '@renderer/services/ProviderService' -import { PreprocessProviderId, WebSearchProviderId } from '@renderer/types' -import { ApiKeyWithStatus, HealthStatus } from '@renderer/types/healthCheck' +import type { PreprocessProviderId, WebSearchProviderId } from '@renderer/types' +import type { ApiKeyWithStatus } from '@renderer/types/healthCheck' +import { HealthStatus } from '@renderer/types/healthCheck' import { Button, Card, Flex, List, Popconfirm, Space, Tooltip, Typography } from 'antd' import { Plus } from 'lucide-react' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' import { isLlmProvider, useApiKeys } from './hook' import ApiKeyItem from './item' -import { ApiProvider, UpdateApiProviderFunc } from './types' +import type { ApiProvider, UpdateApiProviderFunc } from './types' interface ApiKeyListProps { provider: ApiProvider diff --git a/src/renderer/src/components/Popups/ApiKeyListPopup/types.ts b/src/renderer/src/components/Popups/ApiKeyListPopup/types.ts index ad713b40fb..f90c4240d5 100644 --- a/src/renderer/src/components/Popups/ApiKeyListPopup/types.ts +++ b/src/renderer/src/components/Popups/ApiKeyListPopup/types.ts @@ -1,4 +1,4 @@ -import { PreprocessProvider, Provider, WebSearchProvider } from '@renderer/types' +import type { PreprocessProvider, Provider, WebSearchProvider } from '@renderer/types' /** * API key 格式有效性 diff --git a/src/renderer/src/components/Popups/GeneralPopup.tsx b/src/renderer/src/components/Popups/GeneralPopup.tsx index 3307b10162..f68d132a1d 100644 --- a/src/renderer/src/components/Popups/GeneralPopup.tsx +++ b/src/renderer/src/components/Popups/GeneralPopup.tsx @@ -1,6 +1,8 @@ import { TopView } from '@renderer/components/TopView' -import { Modal, ModalProps } from 'antd' -import { ReactNode, useState } from 'react' +import type { ModalProps } from 'antd' +import { Modal } from 'antd' +import type { ReactNode } from 'react' +import { useState } from 'react' interface ShowParams extends ModalProps { content: ReactNode diff --git a/src/renderer/src/components/Popups/MultiSelectionPopup.tsx b/src/renderer/src/components/Popups/MultiSelectionPopup.tsx index 4560ac74e2..7594d6a200 100644 --- a/src/renderer/src/components/Popups/MultiSelectionPopup.tsx +++ b/src/renderer/src/components/Popups/MultiSelectionPopup.tsx @@ -1,9 +1,9 @@ import { CopyIcon, DeleteIcon } from '@renderer/components/Icons' import { useChatContext } from '@renderer/hooks/useChatContext' -import { Topic } from '@renderer/types' +import type { Topic } from '@renderer/types' import { Button, Tooltip } from 'antd' import { Save, X } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/components/Popups/ObsidianExportPopup.tsx b/src/renderer/src/components/Popups/ObsidianExportPopup.tsx index aec5fcbaa8..f50f5f8390 100644 --- a/src/renderer/src/components/Popups/ObsidianExportPopup.tsx +++ b/src/renderer/src/components/Popups/ObsidianExportPopup.tsx @@ -1,4 +1,5 @@ -import { ObsidianProcessingMethod, PopupContainer } from '@renderer/components/ObsidianExportDialog' +import type { ObsidianProcessingMethod } from '@renderer/components/ObsidianExportDialog' +import { PopupContainer } from '@renderer/components/ObsidianExportDialog' import { TopView } from '@renderer/components/TopView' import type { Topic } from '@renderer/types' import type { Message } from '@renderer/types/newMessage' diff --git a/src/renderer/src/components/Popups/PromptPopup.tsx b/src/renderer/src/components/Popups/PromptPopup.tsx index 0d254d3fb9..fe70d32e86 100644 --- a/src/renderer/src/components/Popups/PromptPopup.tsx +++ b/src/renderer/src/components/Popups/PromptPopup.tsx @@ -1,6 +1,7 @@ import { Input, Modal } from 'antd' -import { TextAreaProps } from 'antd/es/input' -import { ReactNode, useRef, useState } from 'react' +import type { TextAreaProps } from 'antd/es/input' +import type { ReactNode } from 'react' +import { useRef, useState } from 'react' import { Box } from '../Layout' import { TopView } from '../TopView' diff --git a/src/renderer/src/components/Popups/RichEditPopup.tsx b/src/renderer/src/components/Popups/RichEditPopup.tsx index ed7c3d407c..de5a949480 100644 --- a/src/renderer/src/components/Popups/RichEditPopup.tsx +++ b/src/renderer/src/components/Popups/RichEditPopup.tsx @@ -1,6 +1,7 @@ import RichEditor from '@renderer/components/RichEditor' -import { RichEditorRef } from '@renderer/components/RichEditor/types' -import { Modal, ModalProps } from 'antd' +import type { RichEditorRef } from '@renderer/components/RichEditor/types' +import type { ModalProps } from 'antd' +import { Modal } from 'antd' import { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/components/Popups/SaveToKnowledgePopup.tsx b/src/renderer/src/components/Popups/SaveToKnowledgePopup.tsx index 9a7d7ee93a..e0e0ae7428 100644 --- a/src/renderer/src/components/Popups/SaveToKnowledgePopup.tsx +++ b/src/renderer/src/components/Popups/SaveToKnowledgePopup.tsx @@ -2,18 +2,16 @@ import { loggerService } from '@logger' import CustomTag from '@renderer/components/Tags/CustomTag' import { TopView } from '@renderer/components/TopView' import { useKnowledge, useKnowledgeBases } from '@renderer/hooks/useKnowledge' -import { Topic } from '@renderer/types' -import { Message } from '@renderer/types/newMessage' -import { NotesTreeNode } from '@renderer/types/note' +import type { Topic } from '@renderer/types' +import type { Message } from '@renderer/types/newMessage' +import type { NotesTreeNode } from '@renderer/types/note' +import type { ContentType, MessageContentStats, TopicContentStats } from '@renderer/utils/knowledge' import { analyzeMessageContent, analyzeTopicContent, CONTENT_TYPES, - ContentType, - MessageContentStats, processMessageContent, - processTopicContent, - TopicContentStats + processTopicContent } from '@renderer/utils/knowledge' import { Flex, Form, Modal, Select, Tooltip, Typography } from 'antd' import { Check, CircleHelp } from 'lucide-react' diff --git a/src/renderer/src/components/Popups/SelectModelPopup/TagFilterSection.tsx b/src/renderer/src/components/Popups/SelectModelPopup/TagFilterSection.tsx index aec91bd803..19fe49e1b9 100644 --- a/src/renderer/src/components/Popups/SelectModelPopup/TagFilterSection.tsx +++ b/src/renderer/src/components/Popups/SelectModelPopup/TagFilterSection.tsx @@ -8,7 +8,7 @@ import { VisionTag, WebSearchTag } from '@renderer/components/Tags/Model' -import { ModelTag } from '@renderer/types' +import type { ModelTag } from '@renderer/types' import { Flex } from 'antd' import React, { startTransition, useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/components/Popups/SelectModelPopup/filters.ts b/src/renderer/src/components/Popups/SelectModelPopup/filters.ts index d2ee6c7742..f43d86f79e 100644 --- a/src/renderer/src/components/Popups/SelectModelPopup/filters.ts +++ b/src/renderer/src/components/Popups/SelectModelPopup/filters.ts @@ -6,7 +6,8 @@ import { isVisionModel, isWebSearchModel } from '@renderer/config/models' -import { Model, ModelTag, objectEntries } from '@renderer/types' +import type { Model, ModelTag } from '@renderer/types' +import { objectEntries } from '@renderer/types' import { isFreeModel } from '@renderer/utils/model' import { useCallback, useMemo, useState } from 'react' diff --git a/src/renderer/src/components/Popups/SelectModelPopup/popup.tsx b/src/renderer/src/components/Popups/SelectModelPopup/popup.tsx index 1cd7926145..53233c95a1 100644 --- a/src/renderer/src/components/Popups/SelectModelPopup/popup.tsx +++ b/src/renderer/src/components/Popups/SelectModelPopup/popup.tsx @@ -7,7 +7,8 @@ import { getModelLogo } from '@renderer/config/models' import { usePinnedModels } from '@renderer/hooks/usePinnedModels' import { useProviders } from '@renderer/hooks/useProvider' import { getModelUniqId } from '@renderer/services/ModelService' -import { Model, ModelType, objectEntries, Provider } from '@renderer/types' +import type { Model, ModelType, Provider } from '@renderer/types' +import { objectEntries } from '@renderer/types' import { classNames, filterModelsByKeywords, getFancyProviderName } from '@renderer/utils' import { getModelTags } from '@renderer/utils/model' import { Avatar, Divider, Empty, Modal, Tooltip } from 'antd' @@ -29,7 +30,7 @@ import styled from 'styled-components' import { useModelTagFilter } from './filters' import SelectModelSearchBar from './searchbar' import TagFilterSection from './TagFilterSection' -import { FlatListItem, FlatListModel } from './types' +import type { FlatListItem, FlatListModel } from './types' const PAGE_SIZE = 12 const ITEM_HEIGHT = 36 diff --git a/src/renderer/src/components/Popups/SelectModelPopup/searchbar.tsx b/src/renderer/src/components/Popups/SelectModelPopup/searchbar.tsx index ab641cf14b..8f8b981704 100644 --- a/src/renderer/src/components/Popups/SelectModelPopup/searchbar.tsx +++ b/src/renderer/src/components/Popups/SelectModelPopup/searchbar.tsx @@ -1,5 +1,6 @@ import { HStack } from '@renderer/components/Layout' -import { Input, InputRef } from 'antd' +import type { InputRef } from 'antd' +import { Input } from 'antd' import { Search } from 'lucide-react' import React, { memo, useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/components/Popups/SelectModelPopup/types.ts b/src/renderer/src/components/Popups/SelectModelPopup/types.ts index ec152b410f..f505e5799c 100644 --- a/src/renderer/src/components/Popups/SelectModelPopup/types.ts +++ b/src/renderer/src/components/Popups/SelectModelPopup/types.ts @@ -1,5 +1,5 @@ -import { Model } from '@renderer/types' -import { ReactNode } from 'react' +import type { Model } from '@renderer/types' +import type { ReactNode } from 'react' /** * 滚动触发来源类型 diff --git a/src/renderer/src/components/Popups/TextEditPopup.tsx b/src/renderer/src/components/Popups/TextEditPopup.tsx index 6e9f126e2f..60c07eb487 100644 --- a/src/renderer/src/components/Popups/TextEditPopup.tsx +++ b/src/renderer/src/components/Popups/TextEditPopup.tsx @@ -3,10 +3,11 @@ import { usePreference } from '@data/hooks/usePreference' import { loggerService } from '@logger' import useTranslate from '@renderer/hooks/useTranslate' import { translateText } from '@renderer/services/TranslateService' -import { Modal, ModalProps } from 'antd' +import type { ModalProps } from 'antd' +import { Modal } from 'antd' import TextArea from 'antd/es/input/TextArea' -import { TextAreaProps } from 'antd/lib/input' -import { TextAreaRef } from 'antd/lib/input/TextArea' +import type { TextAreaProps } from 'antd/lib/input' +import type { TextAreaRef } from 'antd/lib/input/TextArea' import { Languages } from 'lucide-react' import { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/components/Popups/VideoPopup.tsx b/src/renderer/src/components/Popups/VideoPopup.tsx index 3cb33b43c3..06b3f1bcd8 100644 --- a/src/renderer/src/components/Popups/VideoPopup.tsx +++ b/src/renderer/src/components/Popups/VideoPopup.tsx @@ -1,7 +1,7 @@ import { UploadOutlined } from '@ant-design/icons' import FileManager from '@renderer/services/FileManager' import { loggerService } from '@renderer/services/LoggerService' -import { FileMetadata } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' import { mime2type, uuid } from '@renderer/utils' import { Modal, Space, Upload } from 'antd' import type { UploadFile } from 'antd/es/upload/interface' diff --git a/src/renderer/src/components/Preview/GraphvizPreview.tsx b/src/renderer/src/components/Preview/GraphvizPreview.tsx index 578a35450b..05c4371c74 100644 --- a/src/renderer/src/components/Preview/GraphvizPreview.tsx +++ b/src/renderer/src/components/Preview/GraphvizPreview.tsx @@ -4,7 +4,7 @@ import React, { memo, useCallback } from 'react' import { useDebouncedRender } from './hooks/useDebouncedRender' import ImagePreviewLayout from './ImagePreviewLayout' import { ShadowWhiteContainer } from './styles' -import { BasicPreviewHandles, BasicPreviewProps } from './types' +import type { BasicPreviewHandles, BasicPreviewProps } from './types' import { renderSvgInShadowHost } from './utils' // 管理 viz 实例 diff --git a/src/renderer/src/components/Preview/ImagePreviewLayout.tsx b/src/renderer/src/components/Preview/ImagePreviewLayout.tsx index cff446e250..2c1b7c4287 100644 --- a/src/renderer/src/components/Preview/ImagePreviewLayout.tsx +++ b/src/renderer/src/components/Preview/ImagePreviewLayout.tsx @@ -5,7 +5,7 @@ import { memo, useImperativeHandle } from 'react' import ImageToolbar from './ImageToolbar' import { PreviewContainer, PreviewError } from './styles' -import { BasicPreviewHandles } from './types' +import type { BasicPreviewHandles } from './types' interface ImagePreviewLayoutProps { children: React.ReactNode diff --git a/src/renderer/src/components/Preview/MermaidPreview.tsx b/src/renderer/src/components/Preview/MermaidPreview.tsx index 60708fbee8..fcb09af64a 100644 --- a/src/renderer/src/components/Preview/MermaidPreview.tsx +++ b/src/renderer/src/components/Preview/MermaidPreview.tsx @@ -5,7 +5,7 @@ import React, { memo, useCallback, useEffect, useRef, useState } from 'react' import { useDebouncedRender } from './hooks/useDebouncedRender' import ImagePreviewLayout from './ImagePreviewLayout' import { ShadowTransparentContainer } from './styles' -import { BasicPreviewHandles, BasicPreviewProps } from './types' +import type { BasicPreviewHandles, BasicPreviewProps } from './types' import { renderSvgInShadowHost } from './utils' /** diff --git a/src/renderer/src/components/Preview/PlantUmlPreview.tsx b/src/renderer/src/components/Preview/PlantUmlPreview.tsx index f29a0c1ffc..2653805f1b 100644 --- a/src/renderer/src/components/Preview/PlantUmlPreview.tsx +++ b/src/renderer/src/components/Preview/PlantUmlPreview.tsx @@ -5,7 +5,7 @@ import React, { memo, useCallback, useEffect } from 'react' import { useDebouncedRender } from './hooks/useDebouncedRender' import ImagePreviewLayout from './ImagePreviewLayout' import { ShadowWhiteContainer } from './styles' -import { BasicPreviewHandles, BasicPreviewProps } from './types' +import type { BasicPreviewHandles, BasicPreviewProps } from './types' import { renderSvgInShadowHost } from './utils' const logger = loggerService.withContext('PlantUmlPreview') diff --git a/src/renderer/src/components/Preview/SvgPreview.tsx b/src/renderer/src/components/Preview/SvgPreview.tsx index 673d7ded05..396a651c0d 100644 --- a/src/renderer/src/components/Preview/SvgPreview.tsx +++ b/src/renderer/src/components/Preview/SvgPreview.tsx @@ -3,7 +3,7 @@ import { memo, useCallback } from 'react' import { useDebouncedRender } from './hooks/useDebouncedRender' import ImagePreviewLayout from './ImagePreviewLayout' import { ShadowTransparentContainer } from './styles' -import { BasicPreviewHandles } from './types' +import type { BasicPreviewHandles } from './types' import { renderSvgInShadowHost } from './utils' interface SvgPreviewProps { diff --git a/src/renderer/src/components/ProviderAvatar.tsx b/src/renderer/src/components/ProviderAvatar.tsx index 82ad032532..1861539040 100644 --- a/src/renderer/src/components/ProviderAvatar.tsx +++ b/src/renderer/src/components/ProviderAvatar.tsx @@ -1,6 +1,6 @@ import { PoeLogo } from '@renderer/components/Icons' import { getProviderLogo } from '@renderer/config/providers' -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import { generateColorFromChar, getFirstCharacter, getForegroundColor } from '@renderer/utils' import { Avatar } from 'antd' import React from 'react' diff --git a/src/renderer/src/components/ProviderLogoPicker/index.tsx b/src/renderer/src/components/ProviderLogoPicker/index.tsx index 630d4f7c9e..d38ab741c7 100644 --- a/src/renderer/src/components/ProviderLogoPicker/index.tsx +++ b/src/renderer/src/components/ProviderLogoPicker/index.tsx @@ -3,7 +3,8 @@ import { ProviderAvatarPrimitive } from '@renderer/components/ProviderAvatar' import { PROVIDER_LOGO_MAP } from '@renderer/config/providers' import { getProviderLabel } from '@renderer/i18n/label' import { Input, Tooltip } from 'antd' -import { FC, useMemo, useState } from 'react' +import type { FC } from 'react' +import { useMemo, useState } from 'react' import styled from 'styled-components' interface Props { diff --git a/src/renderer/src/components/QuickPanel/provider.tsx b/src/renderer/src/components/QuickPanel/provider.tsx index 57eae70ef2..cda1d0fa9b 100644 --- a/src/renderer/src/components/QuickPanel/provider.tsx +++ b/src/renderer/src/components/QuickPanel/provider.tsx @@ -1,6 +1,6 @@ import React, { createContext, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import { +import type { QuickPanelCallBackOptions, QuickPanelCloseAction, QuickPanelContextType, diff --git a/src/renderer/src/components/QuickPanel/view.tsx b/src/renderer/src/components/QuickPanel/view.tsx index 59d72b2de2..9426687ae5 100644 --- a/src/renderer/src/components/QuickPanel/view.tsx +++ b/src/renderer/src/components/QuickPanel/view.tsx @@ -13,7 +13,7 @@ import styled from 'styled-components' import * as tinyPinyin from 'tiny-pinyin' import { QuickPanelContext } from './provider' -import { +import type { QuickPanelCallBackOptions, QuickPanelCloseAction, QuickPanelListItem, diff --git a/src/renderer/src/components/RichEditor/components/ActionMenu.tsx b/src/renderer/src/components/RichEditor/components/ActionMenu.tsx index 5f35799da6..3d0eb5b7de 100644 --- a/src/renderer/src/components/RichEditor/components/ActionMenu.tsx +++ b/src/renderer/src/components/RichEditor/components/ActionMenu.tsx @@ -1,5 +1,6 @@ import { Menu } from 'antd' -import React, { FC, useCallback, useEffect, useMemo, useRef } from 'react' +import type { FC } from 'react' +import React, { useCallback, useEffect, useMemo, useRef } from 'react' import { createPortal } from 'react-dom' export interface ActionMenuItem { diff --git a/src/renderer/src/components/RichEditor/components/PlusButton.tsx b/src/renderer/src/components/RichEditor/components/PlusButton.tsx index b1ac0b9030..a0cea425c9 100644 --- a/src/renderer/src/components/RichEditor/components/PlusButton.tsx +++ b/src/renderer/src/components/RichEditor/components/PlusButton.tsx @@ -4,7 +4,8 @@ import React from 'react' import { type ReactNode, useEffect, useRef, useState } from 'react' import { defaultComputePositionConfig } from '../extensions/plus-button' -import { PlusButtonPlugin, plusButtonPluginDefaultKey, PlusButtonPluginOptions } from '../plugins/plusButtonPlugin' +import type { PlusButtonPluginOptions } from '../plugins/plusButtonPlugin' +import { PlusButtonPlugin, plusButtonPluginDefaultKey } from '../plugins/plusButtonPlugin' type Optional = Pick, K> & Omit diff --git a/src/renderer/src/components/RichEditor/components/TableActionMenu.tsx b/src/renderer/src/components/RichEditor/components/TableActionMenu.tsx index bc0282aac0..317d5772ef 100644 --- a/src/renderer/src/components/RichEditor/components/TableActionMenu.tsx +++ b/src/renderer/src/components/RichEditor/components/TableActionMenu.tsx @@ -1,4 +1,5 @@ -import { FC, useCallback, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import { createPortal } from 'react-dom' export interface TableAction { diff --git a/src/renderer/src/components/RichEditor/components/placeholder/ImagePlaceholderNodeView.tsx b/src/renderer/src/components/RichEditor/components/placeholder/ImagePlaceholderNodeView.tsx index a838782ece..ce8ff28f10 100644 --- a/src/renderer/src/components/RichEditor/components/placeholder/ImagePlaceholderNodeView.tsx +++ b/src/renderer/src/components/RichEditor/components/placeholder/ImagePlaceholderNodeView.tsx @@ -1,4 +1,4 @@ -import { Editor } from '@tiptap/core' +import type { Editor } from '@tiptap/core' import { NodeViewWrapper } from '@tiptap/react' import { Image as ImageIcon } from 'lucide-react' import React, { useCallback } from 'react' diff --git a/src/renderer/src/components/RichEditor/extensions/code-block-shiki/CodeBlockNodeView.tsx b/src/renderer/src/components/RichEditor/extensions/code-block-shiki/CodeBlockNodeView.tsx index 75ccf6befb..fafd1e447b 100644 --- a/src/renderer/src/components/RichEditor/extensions/code-block-shiki/CodeBlockNodeView.tsx +++ b/src/renderer/src/components/RichEditor/extensions/code-block-shiki/CodeBlockNodeView.tsx @@ -2,7 +2,8 @@ import { CopyOutlined } from '@ant-design/icons' import { DEFAULT_LANGUAGES, getHighlighter, getShiki } from '@renderer/utils/shiki' import { NodeViewContent, NodeViewWrapper, type ReactNodeViewProps, ReactNodeViewRenderer } from '@tiptap/react' import { Button, Select, Tooltip } from 'antd' -import { FC, useCallback, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useState } from 'react' const CodeBlockNodeView: FC = (props) => { const { node, updateAttributes } = props diff --git a/src/renderer/src/components/RichEditor/extensions/code-block-shiki/shikijsPlugin.ts b/src/renderer/src/components/RichEditor/extensions/code-block-shiki/shikijsPlugin.ts index c37064f8f3..443c3bef75 100644 --- a/src/renderer/src/components/RichEditor/extensions/code-block-shiki/shikijsPlugin.ts +++ b/src/renderer/src/components/RichEditor/extensions/code-block-shiki/shikijsPlugin.ts @@ -5,7 +5,8 @@ let cachedHighlighter: HighlighterGeneric | null = null import { getHighlighter, loadLanguageIfNeeded, loadThemeIfNeeded } from '@renderer/utils/shiki' import { findChildren } from '@tiptap/core' import type { Node as ProsemirrorNode } from '@tiptap/pm/model' -import { Plugin, PluginKey, PluginView } from '@tiptap/pm/state' +import type { PluginView } from '@tiptap/pm/state' +import { Plugin, PluginKey } from '@tiptap/pm/state' import { Decoration, DecorationSet } from '@tiptap/pm/view' const logger = loggerService.withContext('RichEditor:CodeBlockShiki') diff --git a/src/renderer/src/components/RichEditor/extensions/placeholder.ts b/src/renderer/src/components/RichEditor/extensions/placeholder.ts index c0d2dcf1c4..1df06262ad 100644 --- a/src/renderer/src/components/RichEditor/extensions/placeholder.ts +++ b/src/renderer/src/components/RichEditor/extensions/placeholder.ts @@ -1,7 +1,8 @@ -import { Editor, Extension } from '@tiptap/core' +import type { Editor } from '@tiptap/core' +import { Extension } from '@tiptap/core' import { Plugin, PluginKey } from '@tiptap/pm/state' import { Decoration, DecorationSet } from '@tiptap/pm/view' -import { Node } from 'prosemirror-model' +import type { Node } from 'prosemirror-model' export interface PlaceholderOptions { placeholder: ((props: { editor: Editor; node: Node; pos: number; hasAnchor: boolean }) => string) | string | undefined diff --git a/src/renderer/src/components/RichEditor/extensions/plus-button.ts b/src/renderer/src/components/RichEditor/extensions/plus-button.ts index 160948cdaa..bdf3bc69fe 100644 --- a/src/renderer/src/components/RichEditor/extensions/plus-button.ts +++ b/src/renderer/src/components/RichEditor/extensions/plus-button.ts @@ -1,6 +1,7 @@ import { type ComputePositionConfig } from '@floating-ui/dom' -import { Editor, Extension } from '@tiptap/core' -import { Node } from '@tiptap/pm/model' +import type { Editor } from '@tiptap/core' +import { Extension } from '@tiptap/core' +import type { Node } from '@tiptap/pm/model' import { TextSelection } from '@tiptap/pm/state' import { PlusButtonPlugin } from '../plugins/plusButtonPlugin' diff --git a/src/renderer/src/components/RichEditor/toolbar.tsx b/src/renderer/src/components/RichEditor/toolbar.tsx index ebed37349e..9b28979ba2 100644 --- a/src/renderer/src/components/RichEditor/toolbar.tsx +++ b/src/renderer/src/components/RichEditor/toolbar.tsx @@ -1,7 +1,8 @@ import { Tooltip } from 'antd' import type { TFunction } from 'i18next' -import { LucideProps } from 'lucide-react' -import React, { ForwardRefExoticComponent, RefAttributes, useEffect, useState } from 'react' +import type { LucideProps } from 'lucide-react' +import type { ForwardRefExoticComponent, RefAttributes } from 'react' +import React, { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { getCommandsByGroup } from './command' diff --git a/src/renderer/src/components/RichEditor/types.ts b/src/renderer/src/components/RichEditor/types.ts index 8804210aef..c3b2bc9ba2 100644 --- a/src/renderer/src/components/RichEditor/types.ts +++ b/src/renderer/src/components/RichEditor/types.ts @@ -237,7 +237,7 @@ export interface ToolbarProps { // Command System Types for Slash Commands import type { Editor } from '@tiptap/core' -import { LucideIcon } from 'lucide-react' +import type { LucideIcon } from 'lucide-react' export enum CommandCategory { TEXT = 'text', diff --git a/src/renderer/src/components/Scrollbar/index.tsx b/src/renderer/src/components/Scrollbar/index.tsx index e50e128d50..493628f076 100644 --- a/src/renderer/src/components/Scrollbar/index.tsx +++ b/src/renderer/src/components/Scrollbar/index.tsx @@ -1,5 +1,6 @@ import { throttle } from 'lodash' -import { FC, useCallback, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import styled from 'styled-components' export interface ScrollbarProps extends Omit, 'onScroll'> { diff --git a/src/renderer/src/components/Selector.tsx b/src/renderer/src/components/Selector.tsx index d18c76dbff..d894b0b4e2 100644 --- a/src/renderer/src/components/Selector.tsx +++ b/src/renderer/src/components/Selector.tsx @@ -1,6 +1,8 @@ -import { Dropdown, DropdownProps } from 'antd' +import type { DropdownProps } from 'antd' +import { Dropdown } from 'antd' import { Check, ChevronsUpDown } from 'lucide-react' -import { ReactNode, useEffect, useMemo, useRef, useState } from 'react' +import type { ReactNode } from 'react' +import { useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled, { css } from 'styled-components' diff --git a/src/renderer/src/components/Tags/CustomTag.tsx b/src/renderer/src/components/Tags/CustomTag.tsx index 3ecba381d4..26cd04995a 100644 --- a/src/renderer/src/components/Tags/CustomTag.tsx +++ b/src/renderer/src/components/Tags/CustomTag.tsx @@ -1,6 +1,7 @@ import { CloseOutlined } from '@ant-design/icons' import { Tooltip } from 'antd' -import { CSSProperties, FC, memo, MouseEventHandler, useMemo } from 'react' +import type { CSSProperties, FC, MouseEventHandler } from 'react' +import { memo, useMemo } from 'react' import styled from 'styled-components' export interface CustomTagProps { diff --git a/src/renderer/src/components/Tags/Model/EmbeddingTag.tsx b/src/renderer/src/components/Tags/Model/EmbeddingTag.tsx index 8a2e5e2a33..01fe51db32 100644 --- a/src/renderer/src/components/Tags/Model/EmbeddingTag.tsx +++ b/src/renderer/src/components/Tags/Model/EmbeddingTag.tsx @@ -1,6 +1,7 @@ import { useTranslation } from 'react-i18next' -import CustomTag, { CustomTagProps } from '../CustomTag' +import type { CustomTagProps } from '../CustomTag' +import CustomTag from '../CustomTag' type Props = { size?: number diff --git a/src/renderer/src/components/Tags/Model/FreeTag.tsx b/src/renderer/src/components/Tags/Model/FreeTag.tsx index 44b19012e0..4bbbe46801 100644 --- a/src/renderer/src/components/Tags/Model/FreeTag.tsx +++ b/src/renderer/src/components/Tags/Model/FreeTag.tsx @@ -1,6 +1,7 @@ import { useTranslation } from 'react-i18next' -import CustomTag, { CustomTagProps } from '../CustomTag' +import type { CustomTagProps } from '../CustomTag' +import CustomTag from '../CustomTag' type Props = { size?: number diff --git a/src/renderer/src/components/Tags/Model/ReasoningTag.tsx b/src/renderer/src/components/Tags/Model/ReasoningTag.tsx index 8e6d94bea7..9cab2ed585 100644 --- a/src/renderer/src/components/Tags/Model/ReasoningTag.tsx +++ b/src/renderer/src/components/Tags/Model/ReasoningTag.tsx @@ -1,6 +1,7 @@ import { useTranslation } from 'react-i18next' -import CustomTag, { CustomTagProps } from '../CustomTag' +import type { CustomTagProps } from '../CustomTag' +import CustomTag from '../CustomTag' type Props = { size?: number diff --git a/src/renderer/src/components/Tags/Model/RerankerTag.tsx b/src/renderer/src/components/Tags/Model/RerankerTag.tsx index 6d6811f77f..f317a736e3 100644 --- a/src/renderer/src/components/Tags/Model/RerankerTag.tsx +++ b/src/renderer/src/components/Tags/Model/RerankerTag.tsx @@ -1,6 +1,7 @@ import { useTranslation } from 'react-i18next' -import CustomTag, { CustomTagProps } from '../CustomTag' +import type { CustomTagProps } from '../CustomTag' +import CustomTag from '../CustomTag' type Props = { size?: number diff --git a/src/renderer/src/components/Tags/Model/ToolsCallingTag.tsx b/src/renderer/src/components/Tags/Model/ToolsCallingTag.tsx index 1532564be1..311d7e806d 100644 --- a/src/renderer/src/components/Tags/Model/ToolsCallingTag.tsx +++ b/src/renderer/src/components/Tags/Model/ToolsCallingTag.tsx @@ -1,7 +1,8 @@ import { ToolOutlined } from '@ant-design/icons' import { useTranslation } from 'react-i18next' -import CustomTag, { CustomTagProps } from '../CustomTag' +import type { CustomTagProps } from '../CustomTag' +import CustomTag from '../CustomTag' type Props = { size?: number diff --git a/src/renderer/src/components/Tags/Model/VisionTag.tsx b/src/renderer/src/components/Tags/Model/VisionTag.tsx index 4ff219cfc5..ae0d8bc440 100644 --- a/src/renderer/src/components/Tags/Model/VisionTag.tsx +++ b/src/renderer/src/components/Tags/Model/VisionTag.tsx @@ -1,7 +1,8 @@ import { EyeOutlined } from '@ant-design/icons' import { useTranslation } from 'react-i18next' -import CustomTag, { CustomTagProps } from '../CustomTag' +import type { CustomTagProps } from '../CustomTag' +import CustomTag from '../CustomTag' type Props = { size?: number diff --git a/src/renderer/src/components/Tags/Model/WebSearchTag.tsx b/src/renderer/src/components/Tags/Model/WebSearchTag.tsx index 099c9b3839..b7b3777ef8 100644 --- a/src/renderer/src/components/Tags/Model/WebSearchTag.tsx +++ b/src/renderer/src/components/Tags/Model/WebSearchTag.tsx @@ -1,7 +1,8 @@ import { GlobalOutlined } from '@ant-design/icons' import { useTranslation } from 'react-i18next' -import CustomTag, { CustomTagProps } from '../CustomTag' +import type { CustomTagProps } from '../CustomTag' +import CustomTag from '../CustomTag' type Props = { size?: number diff --git a/src/renderer/src/components/TextBadge.tsx b/src/renderer/src/components/TextBadge.tsx index 1945810b25..d531d425e4 100644 --- a/src/renderer/src/components/TextBadge.tsx +++ b/src/renderer/src/components/TextBadge.tsx @@ -1,4 +1,4 @@ -import { FC } from 'react' +import type { FC } from 'react' import styled from 'styled-components' interface Props { diff --git a/src/renderer/src/components/TooltipIcons/HelpTooltip.tsx b/src/renderer/src/components/TooltipIcons/HelpTooltip.tsx index 6ce75d5140..d0de56dbe6 100644 --- a/src/renderer/src/components/TooltipIcons/HelpTooltip.tsx +++ b/src/renderer/src/components/TooltipIcons/HelpTooltip.tsx @@ -1,4 +1,5 @@ -import { Tooltip, TooltipProps } from 'antd' +import type { TooltipProps } from 'antd' +import { Tooltip } from 'antd' import { HelpCircle } from 'lucide-react' type InheritedTooltipProps = Omit diff --git a/src/renderer/src/components/TooltipIcons/InfoTooltip.tsx b/src/renderer/src/components/TooltipIcons/InfoTooltip.tsx index 7a0e608a31..b69e59c8b2 100644 --- a/src/renderer/src/components/TooltipIcons/InfoTooltip.tsx +++ b/src/renderer/src/components/TooltipIcons/InfoTooltip.tsx @@ -1,4 +1,5 @@ -import { Tooltip, TooltipProps } from 'antd' +import type { TooltipProps } from 'antd' +import { Tooltip } from 'antd' import { Info } from 'lucide-react' type InheritedTooltipProps = Omit diff --git a/src/renderer/src/components/TooltipIcons/WarnTooltip.tsx b/src/renderer/src/components/TooltipIcons/WarnTooltip.tsx index b5292365db..b78fb0746c 100644 --- a/src/renderer/src/components/TooltipIcons/WarnTooltip.tsx +++ b/src/renderer/src/components/TooltipIcons/WarnTooltip.tsx @@ -1,4 +1,5 @@ -import { Tooltip, TooltipProps } from 'antd' +import type { TooltipProps } from 'antd' +import { Tooltip } from 'antd' import { AlertTriangle } from 'lucide-react' type InheritedTooltipProps = Omit diff --git a/src/renderer/src/components/TopView/index.tsx b/src/renderer/src/components/TopView/index.tsx index d37f9d5077..cd1dff1436 100644 --- a/src/renderer/src/components/TopView/index.tsx +++ b/src/renderer/src/components/TopView/index.tsx @@ -3,7 +3,8 @@ import TopViewMinappContainer from '@renderer/components/MinApp/TopViewMinappCon import { useAppInit } from '@renderer/hooks/useAppInit' import { useShortcuts } from '@renderer/hooks/useShortcuts' import { Modal } from 'antd' -import React, { PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react' +import type { PropsWithChildren } from 'react' +import React, { useCallback, useEffect, useRef, useState } from 'react' import { Box } from '../Layout' import { getToastUtilities } from './toast' diff --git a/src/renderer/src/components/TopView/toast.ts b/src/renderer/src/components/TopView/toast.ts index b5108315fa..d1e5726310 100644 --- a/src/renderer/src/components/TopView/toast.ts +++ b/src/renderer/src/components/TopView/toast.ts @@ -1,5 +1,5 @@ import { addToast, closeAll, closeToast, getToastQueue, isToastClosing } from '@heroui/toast' -import { RequireSome } from '@renderer/types' +import type { RequireSome } from '@renderer/types' type AddToastProps = Parameters[0] type ToastPropsColored = Omit diff --git a/src/renderer/src/components/TranslateButton.tsx b/src/renderer/src/components/TranslateButton.tsx index 104c153240..996b075266 100644 --- a/src/renderer/src/components/TranslateButton.tsx +++ b/src/renderer/src/components/TranslateButton.tsx @@ -5,7 +5,8 @@ import useTranslate from '@renderer/hooks/useTranslate' import { translateText } from '@renderer/services/TranslateService' import { Button, Tooltip } from 'antd' import { Languages } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/components/WindowControls/index.tsx b/src/renderer/src/components/WindowControls/index.tsx index c31476a881..02212222ed 100644 --- a/src/renderer/src/components/WindowControls/index.tsx +++ b/src/renderer/src/components/WindowControls/index.tsx @@ -1,8 +1,8 @@ import { isLinux, isWin } from '@renderer/config/constant' import { Tooltip } from 'antd' import { Minus, Square, X } from 'lucide-react' +import type { SVGProps } from 'react' import { useEffect, useState } from 'react' -import { SVGProps } from 'react' import { useTranslation } from 'react-i18next' import { ControlButton, WindowControlsContainer } from './WindowControls.styled' diff --git a/src/renderer/src/components/__tests__/ModelSelector.test.tsx b/src/renderer/src/components/__tests__/ModelSelector.test.tsx index 2504bba01f..3880f33e31 100644 --- a/src/renderer/src/components/__tests__/ModelSelector.test.tsx +++ b/src/renderer/src/components/__tests__/ModelSelector.test.tsx @@ -24,7 +24,7 @@ vi.mock('@renderer/utils/naming', () => ({ })) // Import after mocking -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import ModelSelector, { modelSelectFilter } from '../ModelSelector' diff --git a/src/renderer/src/components/__tests__/QuickPanelView.test.tsx b/src/renderer/src/components/__tests__/QuickPanelView.test.tsx index 4e904efeb8..b1eeb5d17b 100644 --- a/src/renderer/src/components/__tests__/QuickPanelView.test.tsx +++ b/src/renderer/src/components/__tests__/QuickPanelView.test.tsx @@ -5,10 +5,12 @@ import React, { useEffect } from 'react' import { Provider } from 'react-redux' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { QuickPanelListItem, QuickPanelProvider, QuickPanelView, useQuickPanel } from '../QuickPanel' +import type { QuickPanelListItem } from '../QuickPanel' +import { QuickPanelProvider, QuickPanelView, useQuickPanel } from '../QuickPanel' // Mock the DynamicVirtualList component vi.mock('@renderer/components/VirtualList', async (importOriginal) => { + // oxlint-disable-next-line consistent-type-imports const mod = await importOriginal() return { ...mod, diff --git a/src/renderer/src/components/app/PinnedMinapps.tsx b/src/renderer/src/components/app/PinnedMinapps.tsx index 06ae2ccdce..eb1603d52a 100644 --- a/src/renderer/src/components/app/PinnedMinapps.tsx +++ b/src/renderer/src/components/app/PinnedMinapps.tsx @@ -3,10 +3,11 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useMinappPopup } from '@renderer/hooks/useMinappPopup' import { useMinapps } from '@renderer/hooks/useMinapps' import { useNavbarPosition } from '@renderer/hooks/useNavbar' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' import type { MenuProps } from 'antd' import { Dropdown, Tooltip } from 'antd' -import { FC, useEffect } from 'react' +import type { FC } from 'react' +import { useEffect } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/components/app/Sidebar.tsx b/src/renderer/src/components/app/Sidebar.tsx index c4f98babca..5dd406b353 100644 --- a/src/renderer/src/components/app/Sidebar.tsx +++ b/src/renderer/src/components/app/Sidebar.tsx @@ -29,7 +29,7 @@ import { Sparkle, Sun } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { useLocation, useNavigate } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/components/dnd/ItemRenderer.tsx b/src/renderer/src/components/dnd/ItemRenderer.tsx index a33301df62..d8ce0d2f1c 100644 --- a/src/renderer/src/components/dnd/ItemRenderer.tsx +++ b/src/renderer/src/components/dnd/ItemRenderer.tsx @@ -1,10 +1,11 @@ -import { DraggableSyntheticListeners } from '@dnd-kit/core' -import { CSS, Transform } from '@dnd-kit/utilities' +import type { DraggableSyntheticListeners } from '@dnd-kit/core' +import type { Transform } from '@dnd-kit/utilities' +import { CSS } from '@dnd-kit/utilities' import { classNames } from '@renderer/utils' import React, { useEffect } from 'react' import styled from 'styled-components' -import { RenderItemType } from './types' +import type { RenderItemType } from './types' interface ItemRendererProps { ref?: React.Ref diff --git a/src/renderer/src/components/dnd/Sortable.tsx b/src/renderer/src/components/dnd/Sortable.tsx index 733163ec6c..f01bd3ed15 100644 --- a/src/renderer/src/components/dnd/Sortable.tsx +++ b/src/renderer/src/components/dnd/Sortable.tsx @@ -1,14 +1,10 @@ +import type { Active, DropAnimation, Modifier, Over, UniqueIdentifier } from '@dnd-kit/core' import { - Active, defaultDropAnimationSideEffects, DndContext, DragOverlay, - DropAnimation, KeyboardSensor, - Modifier, - Over, TouchSensor, - UniqueIdentifier, useSensor, useSensors } from '@dnd-kit/core' @@ -31,7 +27,7 @@ import styled from 'styled-components' import { ItemRenderer } from './ItemRenderer' import { SortableItem } from './SortableItem' -import { RenderItemType } from './types' +import type { RenderItemType } from './types' import { PortalSafePointerSensor } from './utils' interface SortableProps { diff --git a/src/renderer/src/components/dnd/SortableItem.tsx b/src/renderer/src/components/dnd/SortableItem.tsx index 60901223a0..97b0e3a3d0 100644 --- a/src/renderer/src/components/dnd/SortableItem.tsx +++ b/src/renderer/src/components/dnd/SortableItem.tsx @@ -1,7 +1,7 @@ import { useSortable } from '@dnd-kit/sortable' import { ItemRenderer } from './ItemRenderer' -import { RenderItemType } from './types' +import type { RenderItemType } from './types' interface SortableItemProps { item: T diff --git a/src/renderer/src/components/dnd/useDndReorder.ts b/src/renderer/src/components/dnd/useDndReorder.ts index 60beaf925a..0651a1ae6a 100644 --- a/src/renderer/src/components/dnd/useDndReorder.ts +++ b/src/renderer/src/components/dnd/useDndReorder.ts @@ -1,4 +1,5 @@ -import { Key, useCallback, useMemo } from 'react' +import type { Key } from 'react' +import { useCallback, useMemo } from 'react' interface UseDndReorderParams { /** 原始的、完整的数据列表 */ diff --git a/src/renderer/src/config/__test__/models.test.ts b/src/renderer/src/config/__test__/models.test.ts index 547ff42efd..ecd5224ea5 100644 --- a/src/renderer/src/config/__test__/models.test.ts +++ b/src/renderer/src/config/__test__/models.test.ts @@ -6,7 +6,7 @@ import { isVisionModel, isWebSearchModel } from '@renderer/config/models' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { beforeEach, describe, expect, test, vi } from 'vitest' // Suggested test cases diff --git a/src/renderer/src/config/endpointTypes.ts b/src/renderer/src/config/endpointTypes.ts index 4340e5628f..e82f741632 100644 --- a/src/renderer/src/config/endpointTypes.ts +++ b/src/renderer/src/config/endpointTypes.ts @@ -1,4 +1,4 @@ -import { EndpointType } from '@renderer/types' +import type { EndpointType } from '@renderer/types' export const endpointTypeOptions: { label: string; value: EndpointType }[] = [ { value: 'openai', label: 'endpoint_type.openai' }, diff --git a/src/renderer/src/config/minapps.ts b/src/renderer/src/config/minapps.ts index e11718bc62..093c44d758 100644 --- a/src/renderer/src/config/minapps.ts +++ b/src/renderer/src/config/minapps.ts @@ -58,7 +58,7 @@ import OpenAiProviderLogo from '@renderer/assets/images/providers/openai.png?url import SiliconFlowProviderLogo from '@renderer/assets/images/providers/silicon.png?url' import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png?url' import i18n from '@renderer/i18n' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' const logger = loggerService.withContext('Config:minapps') diff --git a/src/renderer/src/config/models/default.ts b/src/renderer/src/config/models/default.ts index 1b8e9ad1bc..ec76d033b3 100644 --- a/src/renderer/src/config/models/default.ts +++ b/src/renderer/src/config/models/default.ts @@ -1,4 +1,4 @@ -import { Model, SystemProviderId } from '@renderer/types' +import type { Model, SystemProviderId } from '@renderer/types' export const glm45FlashModel: Model = { id: 'glm-4.5-flash', diff --git a/src/renderer/src/config/models/embedding.ts b/src/renderer/src/config/models/embedding.ts index 7aa48a6d07..5eb9cd6ff3 100644 --- a/src/renderer/src/config/models/embedding.ts +++ b/src/renderer/src/config/models/embedding.ts @@ -1,4 +1,4 @@ -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { getLowerBaseModelName, isUserSelectedModelType } from '@renderer/utils' // Embedding models diff --git a/src/renderer/src/config/models/reasoning.ts b/src/renderer/src/config/models/reasoning.ts index bbbc690784..c275e14297 100644 --- a/src/renderer/src/config/models/reasoning.ts +++ b/src/renderer/src/config/models/reasoning.ts @@ -1,4 +1,4 @@ -import { +import type { Model, ReasoningEffortConfig, SystemProviderId, diff --git a/src/renderer/src/config/models/tooluse.ts b/src/renderer/src/config/models/tooluse.ts index f1f27e0fd7..f7fc170ff6 100644 --- a/src/renderer/src/config/models/tooluse.ts +++ b/src/renderer/src/config/models/tooluse.ts @@ -1,4 +1,5 @@ -import { isSystemProviderId, Model } from '@renderer/types' +import type { Model } from '@renderer/types' +import { isSystemProviderId } from '@renderer/types' import { getLowerBaseModelName, isUserSelectedModelType } from '@renderer/utils' import { isEmbeddingModel, isRerankModel } from './embedding' diff --git a/src/renderer/src/config/models/utils.ts b/src/renderer/src/config/models/utils.ts index 8d81b80a74..d0bc9138fd 100644 --- a/src/renderer/src/config/models/utils.ts +++ b/src/renderer/src/config/models/utils.ts @@ -1,7 +1,7 @@ -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { getLowerBaseModelName } from '@renderer/utils' import { WEB_SEARCH_PROMPT_FOR_OPENROUTER } from '@shared/config/prompts' -import OpenAI from 'openai' +import type OpenAI from 'openai' import { getWebSearchTools } from '../tools' import { isOpenAIReasoningModel } from './reasoning' diff --git a/src/renderer/src/config/models/vision.ts b/src/renderer/src/config/models/vision.ts index 02ed3cd6fc..5180c60b1b 100644 --- a/src/renderer/src/config/models/vision.ts +++ b/src/renderer/src/config/models/vision.ts @@ -1,5 +1,5 @@ import { getProviderByModel } from '@renderer/services/AssistantService' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { getLowerBaseModelName, isUserSelectedModelType } from '@renderer/utils' import { isEmbeddingModel, isRerankModel } from './embedding' diff --git a/src/renderer/src/config/models/websearch.ts b/src/renderer/src/config/models/websearch.ts index 4acc8a7836..94711764a7 100644 --- a/src/renderer/src/config/models/websearch.ts +++ b/src/renderer/src/config/models/websearch.ts @@ -1,5 +1,5 @@ import { getProviderByModel } from '@renderer/services/AssistantService' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { getLowerBaseModelName, isUserSelectedModelType } from '@renderer/utils' import { isEmbeddingModel, isRerankModel } from './embedding' diff --git a/src/renderer/src/config/ocr.ts b/src/renderer/src/config/ocr.ts index 02f0995a82..9de0795256 100644 --- a/src/renderer/src/config/ocr.ts +++ b/src/renderer/src/config/ocr.ts @@ -1,4 +1,4 @@ -import { +import type { BuiltinOcrProvider, BuiltinOcrProviderId, OcrPpocrProvider, diff --git a/src/renderer/src/config/preprocessProviders.ts b/src/renderer/src/config/preprocessProviders.ts index 88215b328d..88ed65cc89 100644 --- a/src/renderer/src/config/preprocessProviders.ts +++ b/src/renderer/src/config/preprocessProviders.ts @@ -1,7 +1,7 @@ import Doc2xLogo from '@renderer/assets/images/ocr/doc2x.png' import MinerULogo from '@renderer/assets/images/ocr/mineru.jpg' import MistralLogo from '@renderer/assets/images/providers/mistral.png' -import { PreprocessProviderId } from '@renderer/types' +import type { PreprocessProviderId } from '@renderer/types' export function getPreprocessProviderLogo(providerId: PreprocessProviderId) { switch (providerId) { diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index f28a88c7c7..ced8b6031e 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -52,15 +52,8 @@ import VoyageAIProviderLogo from '@renderer/assets/images/providers/voyageai.png import XirangProviderLogo from '@renderer/assets/images/providers/xirang.png' import ZeroOneProviderLogo from '@renderer/assets/images/providers/zero-one.png' import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png' -import { - AtLeast, - isSystemProvider, - OpenAIServiceTiers, - Provider, - ProviderType, - SystemProvider, - SystemProviderId -} from '@renderer/types' +import type { AtLeast, Provider, ProviderType, SystemProvider, SystemProviderId } from '@renderer/types' +import { isSystemProvider, OpenAIServiceTiers } from '@renderer/types' import { TOKENFLUX_HOST } from './constant' import { SYSTEM_MODELS } from './models' diff --git a/src/renderer/src/config/sidebar.ts b/src/renderer/src/config/sidebar.ts index fb07f2c99c..e8d0c821c9 100644 --- a/src/renderer/src/config/sidebar.ts +++ b/src/renderer/src/config/sidebar.ts @@ -1,4 +1,4 @@ -import { SidebarIcon } from '@shared/data/preference/preferenceTypes' +import type { SidebarIcon } from '@shared/data/preference/preferenceTypes' //TODO 这个文件是否还有存在的价值? fullex @ data refactor diff --git a/src/renderer/src/config/tools.ts b/src/renderer/src/config/tools.ts index 8b1cfa15b8..d2f64ee421 100644 --- a/src/renderer/src/config/tools.ts +++ b/src/renderer/src/config/tools.ts @@ -1,6 +1,6 @@ -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { WEB_SEARCH_PROMPT_FOR_ZHIPU } from '@shared/config/prompts' -import { ChatCompletionTool } from 'openai/resources' +import type { ChatCompletionTool } from 'openai/resources' export function getWebSearchTools(model: Model): ChatCompletionTool[] { if (model?.provider === 'zhipu') { diff --git a/src/renderer/src/config/translate.ts b/src/renderer/src/config/translate.ts index 05a5e825b9..22659b73e5 100644 --- a/src/renderer/src/config/translate.ts +++ b/src/renderer/src/config/translate.ts @@ -1,5 +1,5 @@ import i18n from '@renderer/i18n' -import { TranslateLanguage } from '@renderer/types' +import type { TranslateLanguage } from '@renderer/types' export const UNKNOWN: TranslateLanguage = { value: 'Unknown', diff --git a/src/renderer/src/config/webSearchProviders.ts b/src/renderer/src/config/webSearchProviders.ts index abeac52938..1ce3297afb 100644 --- a/src/renderer/src/config/webSearchProviders.ts +++ b/src/renderer/src/config/webSearchProviders.ts @@ -1,4 +1,4 @@ -import { WebSearchProvider, WebSearchProviderId } from '@renderer/types' +import type { WebSearchProvider, WebSearchProviderId } from '@renderer/types' type WebSearchProviderConfig = { websites: { diff --git a/src/renderer/src/context/AntdProvider.tsx b/src/renderer/src/context/AntdProvider.tsx index 6319b18234..9b97d5a922 100644 --- a/src/renderer/src/context/AntdProvider.tsx +++ b/src/renderer/src/context/AntdProvider.tsx @@ -1,6 +1,6 @@ import { usePreference } from '@data/hooks/usePreference' import { defaultLanguage } from '@shared/config/constant' -import { LanguageVarious } from '@shared/data/preference/preferenceTypes' +import type { LanguageVarious } from '@shared/data/preference/preferenceTypes' import { ConfigProvider, theme } from 'antd' import elGR from 'antd/locale/el_GR' import enUS from 'antd/locale/en_US' @@ -11,7 +11,7 @@ import ptPT from 'antd/locale/pt_PT' import ruRU from 'antd/locale/ru_RU' import zhCN from 'antd/locale/zh_CN' import zhTW from 'antd/locale/zh_TW' -import { FC, PropsWithChildren } from 'react' +import type { FC, PropsWithChildren } from 'react' import { useTheme } from './ThemeProvider' diff --git a/src/renderer/src/context/CodeStyleProvider.tsx b/src/renderer/src/context/CodeStyleProvider.tsx index a045f2d35f..94e46dcdfb 100644 --- a/src/renderer/src/context/CodeStyleProvider.tsx +++ b/src/renderer/src/context/CodeStyleProvider.tsx @@ -1,8 +1,10 @@ -import { CodeMirrorTheme, getCmThemeByName, getCmThemeNames } from '@cherrystudio/ui' +import type { CodeMirrorTheme } from '@cherrystudio/ui' +import { getCmThemeByName, getCmThemeNames } from '@cherrystudio/ui' import { usePreference } from '@data/hooks/usePreference' import { useTheme } from '@renderer/context/ThemeProvider' import { useMermaid } from '@renderer/hooks/useMermaid' -import { HighlightChunkResult, ShikiPreProperties, shikiStreamService } from '@renderer/services/ShikiStreamService' +import type { HighlightChunkResult, ShikiPreProperties } from '@renderer/services/ShikiStreamService' +import { shikiStreamService } from '@renderer/services/ShikiStreamService' import { getHighlighter, getMarkdownIt, getShiki, loadLanguageIfNeeded, loadThemeIfNeeded } from '@renderer/utils/shiki' import { ThemeMode } from '@shared/data/preference/preferenceTypes' import type React from 'react' diff --git a/src/renderer/src/context/MessageEditingContext.tsx b/src/renderer/src/context/MessageEditingContext.tsx index 5c864908b6..90a9037c61 100644 --- a/src/renderer/src/context/MessageEditingContext.tsx +++ b/src/renderer/src/context/MessageEditingContext.tsx @@ -1,4 +1,5 @@ -import { createContext, ReactNode, use, useState } from 'react' +import type { ReactNode } from 'react' +import { createContext, use, useState } from 'react' interface MessageEditingContextType { editingMessageId: string | null diff --git a/src/renderer/src/context/NotificationProvider.tsx b/src/renderer/src/context/NotificationProvider.tsx index c6de09b722..8db0b980b0 100644 --- a/src/renderer/src/context/NotificationProvider.tsx +++ b/src/renderer/src/context/NotificationProvider.tsx @@ -1,5 +1,5 @@ import { NotificationQueue } from '@renderer/queue/NotificationQueue' -import { Notification } from '@renderer/types/notification' +import type { Notification } from '@renderer/types/notification' import { isFocused } from '@renderer/utils/window' import { notification } from 'antd' import React, { createContext, use, useEffect, useMemo } from 'react' diff --git a/src/renderer/src/context/ThemeProvider.tsx b/src/renderer/src/context/ThemeProvider.tsx index d820608224..1681bac88e 100644 --- a/src/renderer/src/context/ThemeProvider.tsx +++ b/src/renderer/src/context/ThemeProvider.tsx @@ -4,7 +4,8 @@ import { useNavbarPosition } from '@renderer/hooks/useNavbar' import useUserTheme from '@renderer/hooks/useUserTheme' import { ThemeMode } from '@shared/data/preference/preferenceTypes' import { IpcChannel } from '@shared/IpcChannel' -import React, { createContext, PropsWithChildren, use, useEffect, useState } from 'react' +import type { PropsWithChildren } from 'react' +import React, { createContext, use, useEffect, useState } from 'react' interface ThemeContextType { theme: ThemeMode settedTheme: ThemeMode diff --git a/src/renderer/src/databases/index.ts b/src/renderer/src/databases/index.ts index 05bda8661d..a016ac2880 100644 --- a/src/renderer/src/databases/index.ts +++ b/src/renderer/src/databases/index.ts @@ -1,4 +1,4 @@ -import { +import type { CustomTranslateLanguage, FileMetadata, KnowledgeNoteItem, @@ -7,7 +7,7 @@ import { } from '@renderer/types' // Import necessary types for blocks and new message structure import type { Message as NewMessage, MessageBlock } from '@renderer/types/newMessage' -import { NotesTreeNode } from '@renderer/types/note' +import type { NotesTreeNode } from '@renderer/types/note' import { Dexie, type EntityTable } from 'dexie' import { upgradeToV5, upgradeToV7, upgradeToV8 } from './upgrades' diff --git a/src/renderer/src/databases/upgrades.ts b/src/renderer/src/databases/upgrades.ts index 79a36419de..8f952e245b 100644 --- a/src/renderer/src/databases/upgrades.ts +++ b/src/renderer/src/databases/upgrades.ts @@ -9,7 +9,7 @@ import type { MessageBlock } from '@renderer/types/newMessage' import { AssistantMessageStatus, MessageBlockStatus } from '@renderer/types/newMessage' -import { Transaction } from 'dexie' +import type { Transaction } from 'dexie' import { isEmpty } from 'lodash' import { diff --git a/src/renderer/src/env.d.ts b/src/renderer/src/env.d.ts index cf8f8a4cb0..653d2710e4 100644 --- a/src/renderer/src/env.d.ts +++ b/src/renderer/src/env.d.ts @@ -1,11 +1,11 @@ /// -import { addToast, closeAll, closeToast, getToastQueue, isToastClosing } from '@heroui/toast' +import type { addToast, closeAll, closeToast, getToastQueue, isToastClosing } from '@heroui/toast' import type KeyvStorage from '@kangfenmao/keyv-storage' -import { HookAPI } from 'antd/es/modal/useModal' -import { NavigateFunction } from 'react-router-dom' +import type { HookAPI } from 'antd/es/modal/useModal' +import type { NavigateFunction } from 'react-router-dom' -import { error, info, loading, success, warning } from './components/TopView/toast' +import type { error, info, loading, success, warning } from './components/TopView/toast' interface ImportMetaEnv { VITE_RENDERER_INTEGRATED_MODEL: string diff --git a/src/renderer/src/hooks/useAgents.ts b/src/renderer/src/hooks/useAgents.ts index 238f04ec5c..3e2a1e3a88 100644 --- a/src/renderer/src/hooks/useAgents.ts +++ b/src/renderer/src/hooks/useAgents.ts @@ -1,6 +1,6 @@ import { useAppDispatch, useAppSelector } from '@renderer/store' import { addAgent, removeAgent, updateAgent, updateAgents, updateAgentSettings } from '@renderer/store/agents' -import { Agent, AssistantSettings } from '@renderer/types' +import type { Agent, AssistantSettings } from '@renderer/types' export function useAgents() { const agents = useAppSelector((state) => state.agents.agents) diff --git a/src/renderer/src/hooks/useAssistant.ts b/src/renderer/src/hooks/useAssistant.ts index 096c91b5a1..3c8c9ed60a 100644 --- a/src/renderer/src/hooks/useAssistant.ts +++ b/src/renderer/src/hooks/useAssistant.ts @@ -25,7 +25,7 @@ import { updateTopics } from '@renderer/store/assistants' import { setDefaultModel, setQuickModel, setTranslateModel } from '@renderer/store/llm' -import { Assistant, AssistantSettings, Model, ThinkingOption, Topic } from '@renderer/types' +import type { Assistant, AssistantSettings, Model, ThinkingOption, Topic } from '@renderer/types' import { uuid } from '@renderer/utils' import { useCallback, useEffect, useMemo, useRef } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/hooks/useChatContext.ts b/src/renderer/src/hooks/useChatContext.ts index d4a2183fee..f4ed5505d2 100644 --- a/src/renderer/src/hooks/useChatContext.ts +++ b/src/renderer/src/hooks/useChatContext.ts @@ -2,11 +2,11 @@ import { useCache } from '@data/hooks/useCache' import { loggerService } from '@logger' import { useMessageOperations } from '@renderer/hooks/useMessageOperations' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { RootState } from '@renderer/store' +import type { RootState } from '@renderer/store' import { messageBlocksSelectors } from '@renderer/store/messageBlock' import { selectMessagesForTopic } from '@renderer/store/newMessage' // import { setActiveTopic, setSelectedMessageIds, toggleMultiSelectMode } from '@renderer/store/runtime' -import { Topic } from '@renderer/types' +import type { Topic } from '@renderer/types' import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { useStore } from 'react-redux' diff --git a/src/renderer/src/hooks/useCodeHighlight.ts b/src/renderer/src/hooks/useCodeHighlight.ts index 4ae5e9e97e..7e6e40b6ef 100644 --- a/src/renderer/src/hooks/useCodeHighlight.ts +++ b/src/renderer/src/hooks/useCodeHighlight.ts @@ -1,6 +1,6 @@ import { useCodeStyle } from '@renderer/context/CodeStyleProvider' import { useCallback, useEffect, useRef, useState } from 'react' -import { ThemedToken } from 'shiki/core' +import type { ThemedToken } from 'shiki/core' interface UseCodeHighlightOptions { rawLines: string[] diff --git a/src/renderer/src/hooks/useCodeTools.ts b/src/renderer/src/hooks/useCodeTools.ts index db8b21bbeb..3b68d5d6c4 100644 --- a/src/renderer/src/hooks/useCodeTools.ts +++ b/src/renderer/src/hooks/useCodeTools.ts @@ -10,8 +10,8 @@ import { setSelectedCliTool, setSelectedModel } from '@renderer/store/codeTools' -import { Model } from '@renderer/types' -import { codeTools } from '@shared/config/constant' +import type { Model } from '@renderer/types' +import type { codeTools } from '@shared/config/constant' import { useCallback } from 'react' export const useCodeTools = () => { diff --git a/src/renderer/src/hooks/useFiles.ts b/src/renderer/src/hooks/useFiles.ts index 19e6d98e77..958d41b277 100644 --- a/src/renderer/src/hooks/useFiles.ts +++ b/src/renderer/src/hooks/useFiles.ts @@ -1,4 +1,4 @@ -import { FileMetadata } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' import { filterSupportedFiles } from '@renderer/utils' import { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/hooks/useKnowledge.ts b/src/renderer/src/hooks/useKnowledge.ts index c1d6732464..237f17a62a 100644 --- a/src/renderer/src/hooks/useKnowledge.ts +++ b/src/renderer/src/hooks/useKnowledge.ts @@ -1,7 +1,8 @@ import { db } from '@renderer/databases' import KnowledgeQueue from '@renderer/queue/KnowledgeQueue' import { getKnowledgeBaseParams } from '@renderer/services/KnowledgeService' -import { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch } from '@renderer/store' import { addBase, clearAllProcessing, @@ -16,16 +17,8 @@ import { updateNotes } from '@renderer/store/knowledge' import { addFilesThunk, addItemThunk, addNoteThunk, addVedioThunk } from '@renderer/store/thunk/knowledgeThunk' -import { - FileMetadata, - isKnowledgeFileItem, - isKnowledgeNoteItem, - isKnowledgeVideoItem, - KnowledgeBase, - KnowledgeItem, - KnowledgeNoteItem, - ProcessingStatus -} from '@renderer/types' +import type { FileMetadata, KnowledgeBase, KnowledgeItem, KnowledgeNoteItem, ProcessingStatus } from '@renderer/types' +import { isKnowledgeFileItem, isKnowledgeNoteItem, isKnowledgeVideoItem } from '@renderer/types' import { runAsyncFunction, uuid } from '@renderer/utils' import dayjs from 'dayjs' import { cloneDeep } from 'lodash' diff --git a/src/renderer/src/hooks/useKnowledgeBaseForm.ts b/src/renderer/src/hooks/useKnowledgeBaseForm.ts index cecc0ee03d..2f23ed3bf0 100644 --- a/src/renderer/src/hooks/useKnowledgeBaseForm.ts +++ b/src/renderer/src/hooks/useKnowledgeBaseForm.ts @@ -2,7 +2,7 @@ import { getEmbeddingMaxContext } from '@renderer/config/embedings' import { usePreprocessProviders } from '@renderer/hooks/usePreprocess' import { useProviders } from '@renderer/hooks/useProvider' import { getModelUniqId } from '@renderer/services/ModelService' -import { KnowledgeBase } from '@renderer/types' +import type { KnowledgeBase } from '@renderer/types' import { nanoid } from 'nanoid' import { useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/hooks/useKnowledgeFiles.tsx b/src/renderer/src/hooks/useKnowledgeFiles.tsx index 57b454e6b7..a14591c520 100644 --- a/src/renderer/src/hooks/useKnowledgeFiles.tsx +++ b/src/renderer/src/hooks/useKnowledgeFiles.tsx @@ -1,5 +1,5 @@ import FileManager from '@renderer/services/FileManager' -import { FileMetadata } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' import { isEmpty } from 'lodash' import { useEffect, useState } from 'react' diff --git a/src/renderer/src/hooks/useMCPServers.ts b/src/renderer/src/hooks/useMCPServers.ts index c4f2815f45..26731e14fd 100644 --- a/src/renderer/src/hooks/useMCPServers.ts +++ b/src/renderer/src/hooks/useMCPServers.ts @@ -1,8 +1,9 @@ import { createSelector } from '@reduxjs/toolkit' import NavigationService from '@renderer/services/NavigationService' -import store, { RootState, useAppDispatch, useAppSelector } from '@renderer/store' +import type { RootState } from '@renderer/store' +import store, { useAppDispatch, useAppSelector } from '@renderer/store' import { addMCPServer, deleteMCPServer, setMCPServers, updateMCPServer } from '@renderer/store/mcp' -import { MCPServer } from '@renderer/types' +import type { MCPServer } from '@renderer/types' import { IpcChannel } from '@shared/IpcChannel' // Listen for server changes from main process diff --git a/src/renderer/src/hooks/useMinappPopup.ts b/src/renderer/src/hooks/useMinappPopup.ts index 3f473dcfd1..99eba81464 100644 --- a/src/renderer/src/hooks/useMinappPopup.ts +++ b/src/renderer/src/hooks/useMinappPopup.ts @@ -2,7 +2,7 @@ import { usePreference } from '@data/hooks/usePreference' import { DEFAULT_MIN_APPS } from '@renderer/config/minapps' import { useMinapps } from '@renderer/hooks/useMinapps' import TabsService from '@renderer/services/TabsService' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' import { clearWebviewState } from '@renderer/utils/webviewStateManager' import { LRUCache } from 'lru-cache' import { useCallback } from 'react' diff --git a/src/renderer/src/hooks/useMinapps.ts b/src/renderer/src/hooks/useMinapps.ts index 08800cfffa..0ff112de26 100644 --- a/src/renderer/src/hooks/useMinapps.ts +++ b/src/renderer/src/hooks/useMinapps.ts @@ -1,8 +1,9 @@ import { useCache } from '@data/hooks/useCache' import { DEFAULT_MIN_APPS } from '@renderer/config/minapps' -import { RootState, useAppDispatch, useAppSelector } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch, useAppSelector } from '@renderer/store' import { setDisabledMinApps, setMinApps, setPinnedMinApps } from '@renderer/store/minapps' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' export const useMinapps = () => { const { enabled, disabled, pinned } = useAppSelector((state: RootState) => state.minapps) diff --git a/src/renderer/src/hooks/useNotesQuery.ts b/src/renderer/src/hooks/useNotesQuery.ts index aba2d0078d..822623679f 100644 --- a/src/renderer/src/hooks/useNotesQuery.ts +++ b/src/renderer/src/hooks/useNotesQuery.ts @@ -1,6 +1,6 @@ import { useAppSelector } from '@renderer/store' import { selectActiveFilePath } from '@renderer/store/note' -import { NotesTreeNode } from '@renderer/types/note' +import type { NotesTreeNode } from '@renderer/types/note' import { useQuery, useQueryClient } from '@tanstack/react-query' import { useCallback, useMemo } from 'react' diff --git a/src/renderer/src/hooks/useNotesSettings.ts b/src/renderer/src/hooks/useNotesSettings.ts index f72b1e7d26..21a4fee586 100644 --- a/src/renderer/src/hooks/useNotesSettings.ts +++ b/src/renderer/src/hooks/useNotesSettings.ts @@ -1,11 +1,6 @@ import { useAppDispatch, useAppSelector } from '@renderer/store' -import { - NotesSettings, - selectNotesPath, - selectNotesSettings, - setNotesPath, - updateNotesSettings -} from '@renderer/store/note' +import type { NotesSettings } from '@renderer/store/note' +import { selectNotesPath, selectNotesSettings, setNotesPath, updateNotesSettings } from '@renderer/store/note' export const useNotesSettings = () => { const dispatch = useAppDispatch() diff --git a/src/renderer/src/hooks/useOcr.ts b/src/renderer/src/hooks/useOcr.ts index 284b31695b..84db7c5237 100644 --- a/src/renderer/src/hooks/useOcr.ts +++ b/src/renderer/src/hooks/useOcr.ts @@ -1,6 +1,7 @@ import { loggerService } from '@logger' import * as OcrService from '@renderer/services/ocr/OcrService' -import { ImageFileMetadata, isImageFileMetadata, SupportedOcrFile } from '@renderer/types' +import type { ImageFileMetadata, SupportedOcrFile } from '@renderer/types' +import { isImageFileMetadata } from '@renderer/types' import { formatErrorMessage } from '@renderer/utils/error' import { useCallback } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/hooks/useOcrProvider.tsx b/src/renderer/src/hooks/useOcrProvider.tsx index 0a40f047ff..d430245d68 100644 --- a/src/renderer/src/hooks/useOcrProvider.tsx +++ b/src/renderer/src/hooks/useOcrProvider.tsx @@ -5,14 +5,8 @@ import { BUILTIN_OCR_PROVIDERS_MAP, DEFAULT_OCR_PROVIDER } from '@renderer/confi import { getBuiltinOcrProviderLabel } from '@renderer/i18n/label' import { useAppSelector } from '@renderer/store' import { addOcrProvider, removeOcrProvider, setImageOcrProviderId, updateOcrProviderConfig } from '@renderer/store/ocr' -import { - ImageOcrProvider, - isBuiltinOcrProvider, - isBuiltinOcrProviderId, - isImageOcrProvider, - OcrProvider, - OcrProviderConfig -} from '@renderer/types' +import type { ImageOcrProvider, OcrProvider, OcrProviderConfig } from '@renderer/types' +import { isBuiltinOcrProvider, isBuiltinOcrProviderId, isImageOcrProvider } from '@renderer/types' import { Avatar } from 'antd' import { FileQuestionMarkIcon, MonitorIcon } from 'lucide-react' import { useCallback, useEffect, useState } from 'react' diff --git a/src/renderer/src/hooks/usePaintings.ts b/src/renderer/src/hooks/usePaintings.ts index ebf73e97c5..68d967615c 100644 --- a/src/renderer/src/hooks/usePaintings.ts +++ b/src/renderer/src/hooks/usePaintings.ts @@ -1,7 +1,7 @@ import FileManager from '@renderer/services/FileManager' import { useAppDispatch, useAppSelector } from '@renderer/store' import { addPainting, removePainting, updatePainting, updatePaintings } from '@renderer/store/paintings' -import { PaintingAction, PaintingsState } from '@renderer/types' +import type { PaintingAction, PaintingsState } from '@renderer/types' export function usePaintings() { const siliconflow_paintings = useAppSelector((state) => state.paintings.siliconflow_paintings) diff --git a/src/renderer/src/hooks/usePreprocess.ts b/src/renderer/src/hooks/usePreprocess.ts index 96e01ec407..19d422ac92 100644 --- a/src/renderer/src/hooks/usePreprocess.ts +++ b/src/renderer/src/hooks/usePreprocess.ts @@ -1,11 +1,11 @@ -import { RootState } from '@renderer/store' +import type { RootState } from '@renderer/store' import { syncPreprocessProvider as _syncPreprocessProvider } from '@renderer/store/knowledge' import { setDefaultPreprocessProvider as _setDefaultPreprocessProvider, updatePreprocessProvider as _updatePreprocessProvider, updatePreprocessProviders as _updatePreprocessProviders } from '@renderer/store/preprocess' -import { PreprocessProvider, PreprocessProviderId } from '@renderer/types' +import type { PreprocessProvider, PreprocessProviderId } from '@renderer/types' import { useDispatch, useSelector } from 'react-redux' export const usePreprocessProvider = (id: PreprocessProviderId) => { diff --git a/src/renderer/src/hooks/useProvider.ts b/src/renderer/src/hooks/useProvider.ts index 9182db3776..1e60103fdb 100644 --- a/src/renderer/src/hooks/useProvider.ts +++ b/src/renderer/src/hooks/useProvider.ts @@ -10,7 +10,8 @@ import { updateProvider, updateProviders } from '@renderer/store/llm' -import { Assistant, isSystemProvider, Model, Provider } from '@renderer/types' +import type { Assistant, Model, Provider } from '@renderer/types' +import { isSystemProvider } from '@renderer/types' import { useDefaultModel } from './useAssistant' diff --git a/src/renderer/src/hooks/useSettings.ts b/src/renderer/src/hooks/useSettings.ts index bf866398e9..84ccb3fa16 100644 --- a/src/renderer/src/hooks/useSettings.ts +++ b/src/renderer/src/hooks/useSettings.ts @@ -6,7 +6,7 @@ import { usePreference } from '@data/hooks/usePreference' import { useAppSelector } from '@renderer/store' import store from '@renderer/store' -import { SettingsState } from '@renderer/store/settings' +import type { SettingsState } from '@renderer/store/settings' export function useSettings() { const settings = useAppSelector((state) => state.settings) diff --git a/src/renderer/src/hooks/useSidebarIcon.ts b/src/renderer/src/hooks/useSidebarIcon.ts index 476c38a3cf..b0f519e185 100644 --- a/src/renderer/src/hooks/useSidebarIcon.ts +++ b/src/renderer/src/hooks/useSidebarIcon.ts @@ -1,5 +1,5 @@ import { usePreference } from '@data/hooks/usePreference' -import { SidebarIcon } from '@shared/data/preference/preferenceTypes' +import type { SidebarIcon } from '@shared/data/preference/preferenceTypes' export function useSidebarIconShow(icon: SidebarIcon) { const [visibleSidebarIcons] = usePreference('ui.sidebar.icons.visible') diff --git a/src/renderer/src/hooks/useTags.ts b/src/renderer/src/hooks/useTags.ts index cdd0af5246..0a0bb134c5 100644 --- a/src/renderer/src/hooks/useTags.ts +++ b/src/renderer/src/hooks/useTags.ts @@ -1,5 +1,6 @@ import { createSelector } from '@reduxjs/toolkit' -import { RootState, useAppDispatch, useAppSelector } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch, useAppSelector } from '@renderer/store' import { setTagsOrder, updateTagCollapse } from '@renderer/store/assistants' import { flatMap, groupBy, uniq } from 'lodash' import { useCallback, useMemo } from 'react' diff --git a/src/renderer/src/hooks/useTopic.ts b/src/renderer/src/hooks/useTopic.ts index 730c6d4a19..6c2c74eeaf 100644 --- a/src/renderer/src/hooks/useTopic.ts +++ b/src/renderer/src/hooks/useTopic.ts @@ -8,7 +8,7 @@ import { deleteMessageFiles } from '@renderer/services/MessagesService' import store from '@renderer/store' import { updateTopic } from '@renderer/store/assistants' import { loadTopicMessagesThunk } from '@renderer/store/thunk/messageThunk' -import { Assistant, Topic } from '@renderer/types' +import type { Assistant, Topic } from '@renderer/types' import { findMainTextBlocks } from '@renderer/utils/messageUtils/find' import { find, isEmpty } from 'lodash' import { useEffect, useState } from 'react' diff --git a/src/renderer/src/hooks/useTranslate.ts b/src/renderer/src/hooks/useTranslate.ts index 160fa6e803..a3eb4bff56 100644 --- a/src/renderer/src/hooks/useTranslate.ts +++ b/src/renderer/src/hooks/useTranslate.ts @@ -2,8 +2,9 @@ import { usePreference } from '@data/hooks/usePreference' import { loggerService } from '@logger' import { builtinLanguages, UNKNOWN } from '@renderer/config/translate' import { useAppSelector } from '@renderer/store' -import { TranslateState, updateSettings } from '@renderer/store/translate' -import { TranslateLanguage } from '@renderer/types' +import type { TranslateState } from '@renderer/store/translate' +import { updateSettings } from '@renderer/store/translate' +import type { TranslateLanguage } from '@renderer/types' import { runAsyncFunction } from '@renderer/utils' import { getTranslateOptions } from '@renderer/utils/translate' import { useCallback, useEffect, useState } from 'react' diff --git a/src/renderer/src/hooks/useVertexAI.ts b/src/renderer/src/hooks/useVertexAI.ts index a1cfd9b130..0543aa7b84 100644 --- a/src/renderer/src/hooks/useVertexAI.ts +++ b/src/renderer/src/hooks/useVertexAI.ts @@ -5,7 +5,7 @@ import { setVertexAIServiceAccountClientEmail, setVertexAIServiceAccountPrivateKey } from '@renderer/store/llm' -import { Provider, VertexProvider } from '@renderer/types' +import type { Provider, VertexProvider } from '@renderer/types' import { useDispatch } from 'react-redux' export function useVertexAISettings() { diff --git a/src/renderer/src/hooks/useWebSearchProviders.ts b/src/renderer/src/hooks/useWebSearchProviders.ts index 34ee07403e..d34990062b 100644 --- a/src/renderer/src/hooks/useWebSearchProviders.ts +++ b/src/renderer/src/hooks/useWebSearchProviders.ts @@ -11,7 +11,7 @@ import { updateWebSearchProvider, updateWebSearchProviders } from '@renderer/store/websearch' -import { WebSearchProvider, WebSearchProviderId } from '@renderer/types' +import type { WebSearchProvider, WebSearchProviderId } from '@renderer/types' export const useDefaultWebSearchProvider = () => { const defaultProvider = useAppSelector((state) => state.websearch.defaultProvider) diff --git a/src/renderer/src/i18n/label.ts b/src/renderer/src/i18n/label.ts index 8d621f6517..b79b2e1e3f 100644 --- a/src/renderer/src/i18n/label.ts +++ b/src/renderer/src/i18n/label.ts @@ -5,7 +5,8 @@ */ import { loggerService } from '@logger' -import { BuiltinMCPServerName, BuiltinMCPServerNames, BuiltinOcrProviderId, ThinkingOption } from '@renderer/types' +import type { BuiltinMCPServerName, BuiltinOcrProviderId, ThinkingOption } from '@renderer/types' +import { BuiltinMCPServerNames } from '@renderer/types' import i18n from './index' diff --git a/src/renderer/src/pages/agents/AgentsPage.tsx b/src/renderer/src/pages/agents/AgentsPage.tsx index a9e9a4b5a4..9c2cf57132 100644 --- a/src/renderer/src/pages/agents/AgentsPage.tsx +++ b/src/renderer/src/pages/agents/AgentsPage.tsx @@ -7,12 +7,13 @@ import CustomTag from '@renderer/components/Tags/CustomTag' import { useAgents } from '@renderer/hooks/useAgents' import { useNavbarPosition } from '@renderer/hooks/useNavbar' import { createAssistantFromAgent } from '@renderer/services/AssistantService' -import { Agent } from '@renderer/types' +import type { Agent } from '@renderer/types' import { uuid } from '@renderer/utils' import { Button, Empty, Flex, Input } from 'antd' import { omit } from 'lodash' import { Search } from 'lucide-react' -import { FC, useCallback, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import ReactMarkdown from 'react-markdown' import styled from 'styled-components' diff --git a/src/renderer/src/pages/agents/components/AddAgentPopup.tsx b/src/renderer/src/pages/agents/components/AddAgentPopup.tsx index 05569a04a9..973b88aaaa 100644 --- a/src/renderer/src/pages/agents/components/AddAgentPopup.tsx +++ b/src/renderer/src/pages/agents/components/AddAgentPopup.tsx @@ -10,10 +10,11 @@ import { fetchGenerate } from '@renderer/services/ApiService' import { getDefaultModel } from '@renderer/services/AssistantService' import { estimateTextTokens } from '@renderer/services/TokenService' import { useAppSelector } from '@renderer/store' -import { Agent, KnowledgeBase } from '@renderer/types' +import type { Agent, KnowledgeBase } from '@renderer/types' import { getLeadingEmoji, uuid } from '@renderer/utils' import { AGENT_PROMPT } from '@shared/config/prompts' -import { Button, Form, FormInstance, Input, Modal, Popover, Select, SelectProps } from 'antd' +import type { FormInstance, SelectProps } from 'antd' +import { Button, Form, Input, Modal, Popover, Select } from 'antd' import TextArea from 'antd/es/input/TextArea' import { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/agents/components/AgentGroupIcon.tsx b/src/renderer/src/pages/agents/components/AgentGroupIcon.tsx index 2e08ff3cd4..0a8a0320a0 100644 --- a/src/renderer/src/pages/agents/components/AgentGroupIcon.tsx +++ b/src/renderer/src/pages/agents/components/AgentGroupIcon.tsx @@ -1,6 +1,7 @@ import { groupTranslations } from '@renderer/pages/agents/agentGroupTranslations' -import { DynamicIcon, IconName } from 'lucide-react/dynamic' -import { FC } from 'react' +import type { IconName } from 'lucide-react/dynamic' +import { DynamicIcon } from 'lucide-react/dynamic' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' interface Props { diff --git a/src/renderer/src/pages/agents/components/ImportAgentPopup.tsx b/src/renderer/src/pages/agents/components/ImportAgentPopup.tsx index c2ec140517..b7f47e8bbb 100644 --- a/src/renderer/src/pages/agents/components/ImportAgentPopup.tsx +++ b/src/renderer/src/pages/agents/components/ImportAgentPopup.tsx @@ -3,7 +3,7 @@ import { useAgents } from '@renderer/hooks/useAgents' import { useTimer } from '@renderer/hooks/useTimer' import { getDefaultModel } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { Agent } from '@renderer/types' +import type { Agent } from '@renderer/types' import { uuid } from '@renderer/utils' import { Button, Flex, Form, Input, Modal, Radio } from 'antd' import { useState } from 'react' diff --git a/src/renderer/src/pages/agents/index.ts b/src/renderer/src/pages/agents/index.ts index 04274a6fa3..527582da98 100644 --- a/src/renderer/src/pages/agents/index.ts +++ b/src/renderer/src/pages/agents/index.ts @@ -2,7 +2,7 @@ import { cacheService } from '@data/CacheService' import { loggerService } from '@logger' import { useSettings } from '@renderer/hooks/useSettings' import store from '@renderer/store' -import { Agent } from '@renderer/types' +import type { Agent } from '@renderer/types' import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' const logger = loggerService.withContext('useSystemAgents') diff --git a/src/renderer/src/pages/code/CodeToolsPage.tsx b/src/renderer/src/pages/code/CodeToolsPage.tsx index 4dc0f287cf..e7140c9122 100644 --- a/src/renderer/src/pages/code/CodeToolsPage.tsx +++ b/src/renderer/src/pages/code/CodeToolsPage.tsx @@ -12,11 +12,12 @@ import { loggerService } from '@renderer/services/LoggerService' import { getModelUniqId } from '@renderer/services/ModelService' import { useAppDispatch, useAppSelector } from '@renderer/store' import { setIsBunInstalled } from '@renderer/store/mcp' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { codeTools } from '@shared/config/constant' import { Alert, Avatar, Button, Checkbox, Input, Popover, Select, Space } from 'antd' import { ArrowUpRight, Download, HelpCircle, Terminal, X } from 'lucide-react' -import { FC, useCallback, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { Link } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/pages/code/index.ts b/src/renderer/src/pages/code/index.ts index 2c36da3ec6..1122f6ac24 100644 --- a/src/renderer/src/pages/code/index.ts +++ b/src/renderer/src/pages/code/index.ts @@ -1,4 +1,4 @@ -import { EndpointType, Model, Provider } from '@renderer/types' +import type { EndpointType, Model, Provider } from '@renderer/types' import { codeTools } from '@shared/config/constant' export interface LaunchValidationResult { diff --git a/src/renderer/src/pages/files/ContentView.tsx b/src/renderer/src/pages/files/ContentView.tsx index a1c1f00aaa..1901489333 100644 --- a/src/renderer/src/pages/files/ContentView.tsx +++ b/src/renderer/src/pages/files/ContentView.tsx @@ -1,5 +1,6 @@ import FileManager from '@renderer/services/FileManager' -import { FileMetadata, FileTypes } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' +import { FileTypes } from '@renderer/types' import { formatFileSize } from '@renderer/utils' import { Col, Image, Row, Spin, Table } from 'antd' import React, { memo } from 'react' diff --git a/src/renderer/src/pages/files/FileList.tsx b/src/renderer/src/pages/files/FileList.tsx index d6ec0d850b..b6ffb5db92 100644 --- a/src/renderer/src/pages/files/FileList.tsx +++ b/src/renderer/src/pages/files/FileList.tsx @@ -3,7 +3,8 @@ import { DeleteIcon } from '@renderer/components/Icons' import { DynamicVirtualList } from '@renderer/components/VirtualList' import { handleDelete } from '@renderer/services/FileAction' import FileManager from '@renderer/services/FileManager' -import { FileMetadata, FileTypes } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' +import { FileTypes } from '@renderer/types' import { formatFileSize } from '@renderer/utils' import { Col, Image, Row, Spin } from 'antd' import { t } from 'i18next' diff --git a/src/renderer/src/pages/files/FilesPage.tsx b/src/renderer/src/pages/files/FilesPage.tsx index 190a103898..74d29d116a 100644 --- a/src/renderer/src/pages/files/FilesPage.tsx +++ b/src/renderer/src/pages/files/FilesPage.tsx @@ -8,7 +8,8 @@ import { getFileFieldLabel } from '@renderer/i18n/label' import { handleDelete, handleRename, sortFiles, tempFilesSort } from '@renderer/services/FileAction' import FileManager from '@renderer/services/FileManager' import store from '@renderer/store' -import { FileMetadata, FileTypes } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' +import { FileTypes } from '@renderer/types' import { formatFileSize } from '@renderer/utils' import { Button, Checkbox, Dropdown, Empty, Flex, Popconfirm } from 'antd' import dayjs from 'dayjs' @@ -21,7 +22,8 @@ import { FileText, FileType as FileTypeIcon } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/history/HistoryPage.tsx b/src/renderer/src/pages/history/HistoryPage.tsx index c8c493740e..71324cf7fd 100644 --- a/src/renderer/src/pages/history/HistoryPage.tsx +++ b/src/renderer/src/pages/history/HistoryPage.tsx @@ -1,12 +1,14 @@ import { HStack } from '@renderer/components/Layout' import { useAppDispatch } from '@renderer/store' import { loadTopicMessagesThunk } from '@renderer/store/thunk/messageThunk' -import { Topic } from '@renderer/types' +import type { Topic } from '@renderer/types' import type { Message } from '@renderer/types/newMessage' -import { Divider, Input, InputRef } from 'antd' +import type { InputRef } from 'antd' +import { Divider, Input } from 'antd' import { last } from 'lodash' import { ChevronLeft, CornerDownLeft, Search } from 'lucide-react' -import { FC, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/history/components/SearchMessage.tsx b/src/renderer/src/pages/history/components/SearchMessage.tsx index 9ba138cde4..026bf85021 100644 --- a/src/renderer/src/pages/history/components/SearchMessage.tsx +++ b/src/renderer/src/pages/history/components/SearchMessage.tsx @@ -4,12 +4,13 @@ import { getTopicById } from '@renderer/hooks/useTopic' import { default as MessageItem } from '@renderer/pages/home/Messages/Message' import { locateToMessage } from '@renderer/services/MessagesService' import NavigationService from '@renderer/services/NavigationService' -import { Topic } from '@renderer/types' +import type { Topic } from '@renderer/types' import type { Message } from '@renderer/types/newMessage' import { runAsyncFunction } from '@renderer/utils' import { Button } from 'antd' import { Forward } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/history/components/SearchResults.tsx b/src/renderer/src/pages/history/components/SearchResults.tsx index a88e97dd0e..e0ffba8b2a 100644 --- a/src/renderer/src/pages/history/components/SearchResults.tsx +++ b/src/renderer/src/pages/history/components/SearchResults.tsx @@ -2,11 +2,12 @@ import { LoadingIcon } from '@renderer/components/Icons' import db from '@renderer/databases' import useScrollPosition from '@renderer/hooks/useScrollPosition' import { selectTopicsMap } from '@renderer/store/assistants' -import { Topic } from '@renderer/types' +import type { Topic } from '@renderer/types' import { type Message, MessageBlockType } from '@renderer/types/newMessage' import { List, Spin, Typography } from 'antd' import { useLiveQuery } from 'dexie-react-hooks' -import { FC, memo, useCallback, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { memo, useCallback, useEffect, useRef, useState } from 'react' import { useSelector } from 'react-redux' import styled from 'styled-components' diff --git a/src/renderer/src/pages/history/components/TopicMessages.tsx b/src/renderer/src/pages/history/components/TopicMessages.tsx index 4c7c05aa90..0fa06292fc 100644 --- a/src/renderer/src/pages/history/components/TopicMessages.tsx +++ b/src/renderer/src/pages/history/components/TopicMessages.tsx @@ -11,12 +11,13 @@ import { getAssistantById } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { locateToMessage } from '@renderer/services/MessagesService' import NavigationService from '@renderer/services/NavigationService' -import { Topic } from '@renderer/types' +import type { Topic } from '@renderer/types' import { classNames, runAsyncFunction } from '@renderer/utils' import { Button, Divider, Empty } from 'antd' import { t } from 'i18next' import { Forward } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import styled from 'styled-components' import { default as MessageItem } from '../../home/Messages/Message' diff --git a/src/renderer/src/pages/history/components/TopicsHistory.tsx b/src/renderer/src/pages/history/components/TopicsHistory.tsx index 37113891f2..d307200ce5 100644 --- a/src/renderer/src/pages/history/components/TopicsHistory.tsx +++ b/src/renderer/src/pages/history/components/TopicsHistory.tsx @@ -2,7 +2,7 @@ import { SearchOutlined } from '@ant-design/icons' import { VStack } from '@renderer/components/Layout' import useScrollPosition from '@renderer/hooks/useScrollPosition' import { selectAllTopics } from '@renderer/store/assistants' -import { Topic } from '@renderer/types' +import type { Topic } from '@renderer/types' import { Button, Divider, Empty, Segmented } from 'antd' import dayjs from 'dayjs' import { groupBy, isEmpty, orderBy } from 'lodash' diff --git a/src/renderer/src/pages/home/Chat.tsx b/src/renderer/src/pages/home/Chat.tsx index eb0905de74..2f5f7d997c 100644 --- a/src/renderer/src/pages/home/Chat.tsx +++ b/src/renderer/src/pages/home/Chat.tsx @@ -1,6 +1,7 @@ import { usePreference } from '@data/hooks/usePreference' import { loggerService } from '@logger' -import { ContentSearch, ContentSearchRef } from '@renderer/components/ContentSearch' +import type { ContentSearchRef } from '@renderer/components/ContentSearch' +import { ContentSearch } from '@renderer/components/ContentSearch' import { HStack } from '@renderer/components/Layout' import MultiSelectActionPopup from '@renderer/components/Popups/MultiSelectionPopup' import PromptPopup from '@renderer/components/Popups/PromptPopup' @@ -12,12 +13,13 @@ import { useShortcut } from '@renderer/hooks/useShortcuts' import { useShowAssistants, useShowTopics } from '@renderer/hooks/useStore' import { useTimer } from '@renderer/hooks/useTimer' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { Assistant, Topic } from '@renderer/types' +import type { Assistant, Topic } from '@renderer/types' import { classNames } from '@renderer/utils' import { Flex } from 'antd' import { debounce } from 'lodash' import { AnimatePresence, motion } from 'motion/react' -import React, { FC, useState } from 'react' +import type { FC } from 'react' +import React, { useState } from 'react' import { useHotkeys } from 'react-hotkeys-hook' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/ChatNavbar.tsx b/src/renderer/src/pages/home/ChatNavbar.tsx index 3edd93fb57..7545583d03 100644 --- a/src/renderer/src/pages/home/ChatNavbar.tsx +++ b/src/renderer/src/pages/home/ChatNavbar.tsx @@ -7,12 +7,12 @@ import { modelGenerating } from '@renderer/hooks/useModel' import { useShortcut } from '@renderer/hooks/useShortcuts' import { useShowAssistants, useShowTopics } from '@renderer/hooks/useStore' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { Assistant, Topic } from '@renderer/types' +import type { Assistant, Topic } from '@renderer/types' import { Tooltip } from 'antd' import { t } from 'i18next' import { Menu, PanelLeftClose, PanelRightClose, Search } from 'lucide-react' import { AnimatePresence, motion } from 'motion/react' -import { FC } from 'react' +import type { FC } from 'react' import styled from 'styled-components' import AssistantsDrawer from './components/AssistantsDrawer' diff --git a/src/renderer/src/pages/home/HomePage.tsx b/src/renderer/src/pages/home/HomePage.tsx index fd42951f81..eb4ef38447 100644 --- a/src/renderer/src/pages/home/HomePage.tsx +++ b/src/renderer/src/pages/home/HomePage.tsx @@ -6,10 +6,11 @@ import { useActiveTopic } from '@renderer/hooks/useTopic' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import NavigationService from '@renderer/services/NavigationService' import { newMessagesActions } from '@renderer/store/newMessage' -import { Assistant, Topic } from '@renderer/types' +import type { Assistant, Topic } from '@renderer/types' import { MIN_WINDOW_HEIGHT, MIN_WINDOW_WIDTH, SECOND_MIN_WINDOW_WIDTH } from '@shared/config/constant' import { AnimatePresence, motion } from 'motion/react' -import { FC, startTransition, useCallback, useEffect, useState } from 'react' +import type { FC } from 'react' +import { startTransition, useCallback, useEffect, useState } from 'react' import { useDispatch } from 'react-redux' import { useLocation, useNavigate } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx b/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx index df0dbf9f5a..a2ccd40e43 100644 --- a/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx @@ -1,12 +1,13 @@ import { ActionIconButton } from '@renderer/components/Buttons' import { QuickPanelReservedSymbol, useQuickPanel } from '@renderer/components/QuickPanel' import { useKnowledgeBases } from '@renderer/hooks/useKnowledge' -import { FileType, KnowledgeBase, KnowledgeItem } from '@renderer/types' +import type { FileType, KnowledgeBase, KnowledgeItem } from '@renderer/types' import { filterSupportedFiles, formatFileSize } from '@renderer/utils/file' import { Tooltip } from 'antd' import dayjs from 'dayjs' import { FileSearch, FileText, Paperclip, Upload } from 'lucide-react' -import { Dispatch, FC, SetStateAction, useCallback, useImperativeHandle, useMemo, useState } from 'react' +import type { Dispatch, FC, SetStateAction } from 'react' +import { useCallback, useImperativeHandle, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' export interface AttachmentButtonRef { diff --git a/src/renderer/src/pages/home/Inputbar/AttachmentPreview.tsx b/src/renderer/src/pages/home/Inputbar/AttachmentPreview.tsx index 27fe399c8e..23787f4d0c 100644 --- a/src/renderer/src/pages/home/Inputbar/AttachmentPreview.tsx +++ b/src/renderer/src/pages/home/Inputbar/AttachmentPreview.tsx @@ -15,11 +15,12 @@ import { import CustomTag from '@renderer/components/Tags/CustomTag' import { useAttachment } from '@renderer/hooks/useAttachment' import FileManager from '@renderer/services/FileManager' -import { FileMetadata } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' import { formatFileSize } from '@renderer/utils' import { Flex, Image, Tooltip } from 'antd' import { isEmpty } from 'lodash' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import styled from 'styled-components' interface Props { diff --git a/src/renderer/src/pages/home/Inputbar/GenerateImageButton.tsx b/src/renderer/src/pages/home/Inputbar/GenerateImageButton.tsx index dc6553188c..683c1fef62 100644 --- a/src/renderer/src/pages/home/Inputbar/GenerateImageButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/GenerateImageButton.tsx @@ -1,9 +1,9 @@ import { ActionIconButton } from '@renderer/components/Buttons' import { isGenerateImageModel } from '@renderer/config/models' -import { Assistant, Model } from '@renderer/types' +import type { Assistant, Model } from '@renderer/types' import { Tooltip } from 'antd' import { Image } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' interface Props { diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx index 9aaf5426f9..f78b24f9cb 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -33,7 +33,7 @@ import { translateText } from '@renderer/services/TranslateService' import WebSearchService from '@renderer/services/WebSearchService' import { useAppDispatch } from '@renderer/store' import { sendMessage as _sendMessage } from '@renderer/store/thunk/messageThunk' -import { Assistant, FileType, KnowledgeBase, Model, Topic } from '@renderer/types' +import type { Assistant, FileType, KnowledgeBase, Model, Topic } from '@renderer/types' import type { MessageInputBaseParams } from '@renderer/types/newMessage' import { classNames, delay, filterSupportedFiles } from '@renderer/utils' import { formatQuotedText } from '@renderer/utils/formats' @@ -46,16 +46,19 @@ import { import { documentExts, imageExts, textExts } from '@shared/config/constant' import { IpcChannel } from '@shared/IpcChannel' import { Tooltip } from 'antd' -import TextArea, { TextAreaRef } from 'antd/es/input/TextArea' +import type { TextAreaRef } from 'antd/es/input/TextArea' +import TextArea from 'antd/es/input/TextArea' import { debounce, isEmpty } from 'lodash' import { CirclePause } from 'lucide-react' -import React, { CSSProperties, FC, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { CSSProperties, FC } from 'react' +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' import NarrowLayout from '../Messages/NarrowLayout' import AttachmentPreview from './AttachmentPreview' -import InputbarTools, { InputbarToolsRef } from './InputbarTools' +import type { InputbarToolsRef } from './InputbarTools' +import InputbarTools from './InputbarTools' import KnowledgeBaseInput from './KnowledgeBaseInput' import MentionModelsInput from './MentionModelsInput' import SendMessageButton from './SendMessageButton' diff --git a/src/renderer/src/pages/home/Inputbar/InputbarTools.tsx b/src/renderer/src/pages/home/Inputbar/InputbarTools.tsx index 36b17a8bc2..9e4f56b1a1 100644 --- a/src/renderer/src/pages/home/Inputbar/InputbarTools.tsx +++ b/src/renderer/src/pages/home/Inputbar/InputbarTools.tsx @@ -1,7 +1,8 @@ -import { DragDropContext, Draggable, Droppable, DropResult } from '@hello-pangea/dnd' +import type { DropResult } from '@hello-pangea/dnd' +import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd' import { loggerService } from '@logger' import { ActionIconButton } from '@renderer/components/Buttons' -import { QuickPanelListItem } from '@renderer/components/QuickPanel' +import type { QuickPanelListItem } from '@renderer/components/QuickPanel' import { isGeminiModel, isGenerateImageModel, @@ -18,11 +19,12 @@ import { getProviderByModel } from '@renderer/services/AssistantService' import { getModelUniqId } from '@renderer/services/ModelService' import { useAppDispatch, useAppSelector } from '@renderer/store' import { setIsCollapsed, setToolOrder } from '@renderer/store/inputTools' -import { FileType, FileTypes, KnowledgeBase, Model } from '@renderer/types' +import type { FileType, KnowledgeBase, Model } from '@renderer/types' +import { FileTypes } from '@renderer/types' import { classNames } from '@renderer/utils' import { isPromptToolUse, isSupportedToolUse } from '@renderer/utils/mcp-tools' import { Divider, Dropdown, Tooltip } from 'antd' -import { ItemType } from 'antd/es/menu/interface' +import type { ItemType } from 'antd/es/menu/interface' import { AtSign, Check, @@ -39,21 +41,30 @@ import { Paperclip, Zap } from 'lucide-react' -import { Dispatch, ReactNode, SetStateAction, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react' +import type { Dispatch, ReactNode, SetStateAction } from 'react' +import { useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' import styled from 'styled-components' -import AttachmentButton, { AttachmentButtonRef } from './AttachmentButton' +import type { AttachmentButtonRef } from './AttachmentButton' +import AttachmentButton from './AttachmentButton' import GenerateImageButton from './GenerateImageButton' -import KnowledgeBaseButton, { KnowledgeBaseButtonRef } from './KnowledgeBaseButton' -import MCPToolsButton, { MCPToolsButtonRef } from './MCPToolsButton' -import MentionModelsButton, { MentionModelsButtonRef } from './MentionModelsButton' +import type { KnowledgeBaseButtonRef } from './KnowledgeBaseButton' +import KnowledgeBaseButton from './KnowledgeBaseButton' +import type { MCPToolsButtonRef } from './MCPToolsButton' +import MCPToolsButton from './MCPToolsButton' +import type { MentionModelsButtonRef } from './MentionModelsButton' +import MentionModelsButton from './MentionModelsButton' import NewContextButton from './NewContextButton' -import QuickPhrasesButton, { QuickPhrasesButtonRef } from './QuickPhrasesButton' -import ThinkingButton, { ThinkingButtonRef } from './ThinkingButton' -import UrlContextButton, { UrlContextButtonRef } from './UrlContextbutton' -import WebSearchButton, { WebSearchButtonRef } from './WebSearchButton' +import type { QuickPhrasesButtonRef } from './QuickPhrasesButton' +import QuickPhrasesButton from './QuickPhrasesButton' +import type { ThinkingButtonRef } from './ThinkingButton' +import ThinkingButton from './ThinkingButton' +import type { UrlContextButtonRef } from './UrlContextbutton' +import UrlContextButton from './UrlContextbutton' +import type { WebSearchButtonRef } from './WebSearchButton' +import WebSearchButton from './WebSearchButton' const logger = loggerService.withContext('InputbarTools') diff --git a/src/renderer/src/pages/home/Inputbar/KnowledgeBaseButton.tsx b/src/renderer/src/pages/home/Inputbar/KnowledgeBaseButton.tsx index 552017e424..daa2df9c7a 100644 --- a/src/renderer/src/pages/home/Inputbar/KnowledgeBaseButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/KnowledgeBaseButton.tsx @@ -1,10 +1,12 @@ import { ActionIconButton } from '@renderer/components/Buttons' -import { QuickPanelListItem, QuickPanelReservedSymbol, useQuickPanel } from '@renderer/components/QuickPanel' +import type { QuickPanelListItem } from '@renderer/components/QuickPanel' +import { QuickPanelReservedSymbol, useQuickPanel } from '@renderer/components/QuickPanel' import { useAppSelector } from '@renderer/store' -import { KnowledgeBase } from '@renderer/types' +import type { KnowledgeBase } from '@renderer/types' import { Tooltip } from 'antd' import { CircleX, FileSearch, Plus } from 'lucide-react' -import { FC, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react' +import type { FC } from 'react' +import { memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router' diff --git a/src/renderer/src/pages/home/Inputbar/KnowledgeBaseInput.tsx b/src/renderer/src/pages/home/Inputbar/KnowledgeBaseInput.tsx index 711288f4b4..473da6f31f 100644 --- a/src/renderer/src/pages/home/Inputbar/KnowledgeBaseInput.tsx +++ b/src/renderer/src/pages/home/Inputbar/KnowledgeBaseInput.tsx @@ -1,8 +1,8 @@ import { FileSearchOutlined } from '@ant-design/icons' import HorizontalScrollContainer from '@renderer/components/HorizontalScrollContainer' import CustomTag from '@renderer/components/Tags/CustomTag' -import { KnowledgeBase } from '@renderer/types' -import { FC } from 'react' +import type { KnowledgeBase } from '@renderer/types' +import type { FC } from 'react' import styled from 'styled-components' const KnowledgeBaseInput: FC<{ diff --git a/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx b/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx index 6680177b24..4d28b4824b 100644 --- a/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/MCPToolsButton.tsx @@ -1,5 +1,6 @@ import { ActionIconButton } from '@renderer/components/Buttons' -import { QuickPanelListItem, QuickPanelReservedSymbol, useQuickPanel } from '@renderer/components/QuickPanel' +import type { QuickPanelListItem } from '@renderer/components/QuickPanel' +import { QuickPanelReservedSymbol, useQuickPanel } from '@renderer/components/QuickPanel' import { isGeminiModel } from '@renderer/config/models' import { isGeminiWebSearchProvider, isSupportUrlContextProvider } from '@renderer/config/providers' import { useAssistant } from '@renderer/hooks/useAssistant' @@ -7,11 +8,12 @@ import { useMCPServers } from '@renderer/hooks/useMCPServers' import { useTimer } from '@renderer/hooks/useTimer' import { getProviderByModel } from '@renderer/services/AssistantService' import { EventEmitter } from '@renderer/services/EventService' -import { MCPPrompt, MCPResource, MCPServer } from '@renderer/types' +import type { MCPPrompt, MCPResource, MCPServer } from '@renderer/types' import { isToolUseModeFunction } from '@renderer/utils/assistant' import { Form, Input, Tooltip } from 'antd' import { CircleX, Hammer, Plus } from 'lucide-react' -import React, { FC, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import React, { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router' diff --git a/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx b/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx index ceaa748bf5..7e7636172c 100644 --- a/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/MentionModelsButton.tsx @@ -5,13 +5,14 @@ import { getModelLogo, isEmbeddingModel, isRerankModel, isVisionModel } from '@r import db from '@renderer/databases' import { useProviders } from '@renderer/hooks/useProvider' import { getModelUniqId } from '@renderer/services/ModelService' -import { FileType, Model } from '@renderer/types' +import type { FileType, Model } from '@renderer/types' import { getFancyProviderName } from '@renderer/utils' import { Avatar, Tooltip } from 'antd' import { useLiveQuery } from 'dexie-react-hooks' import { first, sortBy } from 'lodash' import { AtSign, CircleX, Plus } from 'lucide-react' -import { FC, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react' +import type { FC } from 'react' +import { memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Inputbar/MentionModelsInput.tsx b/src/renderer/src/pages/home/Inputbar/MentionModelsInput.tsx index 70af60976b..755c678bd0 100644 --- a/src/renderer/src/pages/home/Inputbar/MentionModelsInput.tsx +++ b/src/renderer/src/pages/home/Inputbar/MentionModelsInput.tsx @@ -2,9 +2,9 @@ import HorizontalScrollContainer from '@renderer/components/HorizontalScrollCont import CustomTag from '@renderer/components/Tags/CustomTag' import { useProviders } from '@renderer/hooks/useProvider' import { getModelUniqId } from '@renderer/services/ModelService' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { getFancyProviderName } from '@renderer/utils' -import { FC } from 'react' +import type { FC } from 'react' import styled from 'styled-components' const MentionModelsInput: FC<{ diff --git a/src/renderer/src/pages/home/Inputbar/NewContextButton.tsx b/src/renderer/src/pages/home/Inputbar/NewContextButton.tsx index 7cf9237a20..f4dd1886a1 100644 --- a/src/renderer/src/pages/home/Inputbar/NewContextButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/NewContextButton.tsx @@ -2,7 +2,7 @@ import { ActionIconButton } from '@renderer/components/Buttons' import { useShortcut, useShortcutDisplay } from '@renderer/hooks/useShortcuts' import { Tooltip } from 'antd' import { Eraser } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' interface Props { onNewContext: () => void diff --git a/src/renderer/src/pages/home/Inputbar/QuickPhrasesButton.tsx b/src/renderer/src/pages/home/Inputbar/QuickPhrasesButton.tsx index e01447b3fa..17d54ce246 100644 --- a/src/renderer/src/pages/home/Inputbar/QuickPhrasesButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/QuickPhrasesButton.tsx @@ -8,7 +8,7 @@ import { useQuickPanel } from '@renderer/components/QuickPanel' import { useAssistant } from '@renderer/hooks/useAssistant' import { useTimer } from '@renderer/hooks/useTimer' import QuickPhraseService from '@renderer/services/QuickPhraseService' -import { QuickPhrase } from '@renderer/types' +import type { QuickPhrase } from '@renderer/types' import { Input, Modal, Radio, Space, Tooltip } from 'antd' import { BotMessageSquare, Plus, Zap } from 'lucide-react' import { memo, useCallback, useEffect, useImperativeHandle, useMemo, useState } from 'react' diff --git a/src/renderer/src/pages/home/Inputbar/SendMessageButton.tsx b/src/renderer/src/pages/home/Inputbar/SendMessageButton.tsx index 32f8b26b0c..7405752868 100644 --- a/src/renderer/src/pages/home/Inputbar/SendMessageButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/SendMessageButton.tsx @@ -1,4 +1,4 @@ -import { FC } from 'react' +import type { FC } from 'react' interface Props { disabled: boolean diff --git a/src/renderer/src/pages/home/Inputbar/ThinkingButton.tsx b/src/renderer/src/pages/home/Inputbar/ThinkingButton.tsx index 5ee0c628c8..def0f9df1a 100644 --- a/src/renderer/src/pages/home/Inputbar/ThinkingButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/ThinkingButton.tsx @@ -11,9 +11,10 @@ import { QuickPanelReservedSymbol, useQuickPanel } from '@renderer/components/Qu import { getThinkModelType, isDoubaoThinkingAutoModel, MODEL_SUPPORTED_OPTIONS } from '@renderer/config/models' import { useAssistant } from '@renderer/hooks/useAssistant' import { getReasoningEffortOptionsLabel } from '@renderer/i18n/label' -import { Model, ThinkingOption } from '@renderer/types' +import type { Model, ThinkingOption } from '@renderer/types' import { Tooltip } from 'antd' -import { FC, ReactElement, useCallback, useImperativeHandle, useMemo } from 'react' +import type { FC, ReactElement } from 'react' +import { useCallback, useImperativeHandle, useMemo } from 'react' import { useTranslation } from 'react-i18next' export interface ThinkingButtonRef { diff --git a/src/renderer/src/pages/home/Inputbar/TokenCount.tsx b/src/renderer/src/pages/home/Inputbar/TokenCount.tsx index 0e4e4779b5..3c209305f9 100644 --- a/src/renderer/src/pages/home/Inputbar/TokenCount.tsx +++ b/src/renderer/src/pages/home/Inputbar/TokenCount.tsx @@ -3,7 +3,7 @@ import { HStack, VStack } from '@renderer/components/Layout' import MaxContextCount from '@renderer/components/MaxContextCount' import { Divider, Popover } from 'antd' import { ArrowUp, MenuIcon } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Inputbar/UrlContextbutton.tsx b/src/renderer/src/pages/home/Inputbar/UrlContextbutton.tsx index 3b96d0cd0f..8cdc568fc5 100644 --- a/src/renderer/src/pages/home/Inputbar/UrlContextbutton.tsx +++ b/src/renderer/src/pages/home/Inputbar/UrlContextbutton.tsx @@ -4,7 +4,8 @@ import { useTimer } from '@renderer/hooks/useTimer' import { isToolUseModeFunction } from '@renderer/utils/assistant' import { Tooltip } from 'antd' import { Link } from 'lucide-react' -import { FC, memo, useCallback } from 'react' +import type { FC } from 'react' +import { memo, useCallback } from 'react' import { useTranslation } from 'react-i18next' export interface UrlContextButtonRef { diff --git a/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx b/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx index cb3c5fb6d9..325b0a085f 100644 --- a/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/WebSearchButton.tsx @@ -2,7 +2,8 @@ import { BaiduOutlined, GoogleOutlined } from '@ant-design/icons' import { loggerService } from '@logger' import { ActionIconButton } from '@renderer/components/Buttons' import { BingLogo, BochaLogo, ExaLogo, SearXNGLogo, TavilyLogo, ZhipuLogo } from '@renderer/components/Icons' -import { QuickPanelListItem, QuickPanelReservedSymbol, useQuickPanel } from '@renderer/components/QuickPanel' +import type { QuickPanelListItem } from '@renderer/components/QuickPanel' +import { QuickPanelReservedSymbol, useQuickPanel } from '@renderer/components/QuickPanel' import { isGeminiModel, isWebSearchModel } from '@renderer/config/models' import { isGeminiWebSearchProvider } from '@renderer/config/providers' import { useAssistant } from '@renderer/hooks/useAssistant' @@ -10,12 +11,13 @@ import { useTimer } from '@renderer/hooks/useTimer' import { useWebSearchProviders } from '@renderer/hooks/useWebSearchProviders' import { getProviderByModel } from '@renderer/services/AssistantService' import WebSearchService from '@renderer/services/WebSearchService' -import { WebSearchProvider, WebSearchProviderId } from '@renderer/types' +import type { WebSearchProvider, WebSearchProviderId } from '@renderer/types' import { hasObjectKey } from '@renderer/utils' import { isToolUseModeFunction } from '@renderer/utils/assistant' import { Tooltip } from 'antd' import { Globe } from 'lucide-react' -import { FC, memo, useCallback, useImperativeHandle, useMemo } from 'react' +import type { FC } from 'react' +import { memo, useCallback, useImperativeHandle, useMemo } from 'react' import { useTranslation } from 'react-i18next' export interface WebSearchButtonRef { diff --git a/src/renderer/src/pages/home/Markdown/Markdown.tsx b/src/renderer/src/pages/home/Markdown/Markdown.tsx index cdbb5bc0c8..fcdb7ee877 100644 --- a/src/renderer/src/pages/home/Markdown/Markdown.tsx +++ b/src/renderer/src/pages/home/Markdown/Markdown.tsx @@ -22,7 +22,7 @@ import remarkCjkFriendly from 'remark-cjk-friendly' import remarkGfm from 'remark-gfm' import remarkAlert from 'remark-github-blockquote-alert' import remarkMath from 'remark-math' -import { Pluggable } from 'unified' +import type { Pluggable } from 'unified' import CodeBlock from './CodeBlock' import Link from './Link' diff --git a/src/renderer/src/pages/home/Markdown/MarkdownSvgRenderer.tsx b/src/renderer/src/pages/home/Markdown/MarkdownSvgRenderer.tsx index 1313b95a45..754d4215ae 100644 --- a/src/renderer/src/pages/home/Markdown/MarkdownSvgRenderer.tsx +++ b/src/renderer/src/pages/home/Markdown/MarkdownSvgRenderer.tsx @@ -2,7 +2,8 @@ import { ImagePreviewService } from '@renderer/services/ImagePreviewService' import { makeSvgSizeAdaptive } from '@renderer/utils/image' import { Dropdown } from 'antd' import { Eye } from 'lucide-react' -import React, { FC, useCallback, useEffect, useMemo, useRef } from 'react' +import type { FC } from 'react' +import React, { useCallback, useEffect, useMemo, useRef } from 'react' import { useTranslation } from 'react-i18next' interface SvgProps extends React.SVGProps { diff --git a/src/renderer/src/pages/home/Messages/Blocks/CitationBlock.tsx b/src/renderer/src/pages/home/Messages/Blocks/CitationBlock.tsx index 7a4aae7cd0..1871289cc9 100644 --- a/src/renderer/src/pages/home/Messages/Blocks/CitationBlock.tsx +++ b/src/renderer/src/pages/home/Messages/Blocks/CitationBlock.tsx @@ -1,5 +1,5 @@ import { cacheService } from '@data/CacheService' -import { GroundingMetadata } from '@google/genai' +import type { GroundingMetadata } from '@google/genai' import Spinner from '@renderer/components/Spinner' import type { RootState } from '@renderer/store' import { selectFormattedCitationsByBlockId } from '@renderer/store/messageBlock' diff --git a/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx b/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx index 298d3c274a..12fa0cd61a 100644 --- a/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx +++ b/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx @@ -5,6 +5,7 @@ import { getHttpMessageLabel, getProviderLabel } from '@renderer/i18n/label' import { getProviderById } from '@renderer/services/ProviderService' import { useAppDispatch } from '@renderer/store' import { removeBlocksThunk } from '@renderer/store/thunk/messageThunk' +import type { SerializedAiSdkError, SerializedAiSdkErrorUnion, SerializedError } from '@renderer/types/error' import { isSerializedAiSdkAPICallError, isSerializedAiSdkDownloadError, @@ -27,10 +28,7 @@ import { isSerializedAiSdkTooManyEmbeddingValuesForCallError, isSerializedAiSdkTypeValidationError, isSerializedAiSdkUnsupportedFunctionalityError, - isSerializedError, - SerializedAiSdkError, - SerializedAiSdkErrorUnion, - SerializedError + isSerializedError } from '@renderer/types/error' import type { ErrorMessageBlock, Message } from '@renderer/types/newMessage' import { formatAiSdkError, formatError, safeToString } from '@renderer/utils/error' diff --git a/src/renderer/src/pages/home/Messages/ChatFlowHistory.tsx b/src/renderer/src/pages/home/Messages/ChatFlowHistory.tsx index 80d024ab60..ee086d18c2 100644 --- a/src/renderer/src/pages/home/Messages/ChatFlowHistory.tsx +++ b/src/renderer/src/pages/home/Messages/ChatFlowHistory.tsx @@ -9,16 +9,18 @@ import { useTheme } from '@renderer/context/ThemeProvider' import useAvatar from '@renderer/hooks/useAvatar' import { useTimer } from '@renderer/hooks/useTimer' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { RootState } from '@renderer/store' +import type { RootState } from '@renderer/store' import { selectMessagesForTopic } from '@renderer/store/newMessage' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { isEmoji } from '@renderer/utils' import { getMainTextContent } from '@renderer/utils/messageUtils/find' +import type { Edge, Node, NodeTypes } from '@xyflow/react' import { Controls, Handle, MiniMap, ReactFlow, ReactFlowProvider } from '@xyflow/react' -import { Edge, Node, NodeTypes, Position, useEdgesState, useNodesState } from '@xyflow/react' +import { Position, useEdgesState, useNodesState } from '@xyflow/react' import { Avatar, Spin, Tooltip } from 'antd' import { isEqual } from 'lodash' -import { FC, memo, useCallback, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import { memo, useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/ChatNavigation.tsx b/src/renderer/src/pages/home/Messages/ChatNavigation.tsx index 1769ab9e8b..c14296c39d 100644 --- a/src/renderer/src/pages/home/Messages/ChatNavigation.tsx +++ b/src/renderer/src/pages/home/Messages/ChatNavigation.tsx @@ -7,10 +7,11 @@ import { VerticalAlignTopOutlined } from '@ant-design/icons' import { usePreference } from '@data/hooks/usePreference' -import { RootState } from '@renderer/store' +import type { RootState } from '@renderer/store' // import { selectCurrentTopicId } from '@renderer/store/newMessage' import { Button, Drawer, Tooltip } from 'antd' -import { FC, useCallback, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/CitationsList.tsx b/src/renderer/src/pages/home/Messages/CitationsList.tsx index 96765d3fbc..c9967d9f6b 100644 --- a/src/renderer/src/pages/home/Messages/CitationsList.tsx +++ b/src/renderer/src/pages/home/Messages/CitationsList.tsx @@ -2,7 +2,7 @@ import ContextMenu from '@renderer/components/ContextMenu' import Favicon from '@renderer/components/Icons/FallbackFavicon' import Scrollbar from '@renderer/components/Scrollbar' import { useTemporaryValue } from '@renderer/hooks/useTemporaryValue' -import { Citation } from '@renderer/types' +import type { Citation } from '@renderer/types' import { fetchWebContent } from '@renderer/utils/fetch' import { cleanMarkdownContent } from '@renderer/utils/formats' import { QueryClient, QueryClientProvider, useQuery } from '@tanstack/react-query' diff --git a/src/renderer/src/pages/home/Messages/Message.tsx b/src/renderer/src/pages/home/Messages/Message.tsx index e0b9c23dcf..3c72d057de 100644 --- a/src/renderer/src/pages/home/Messages/Message.tsx +++ b/src/renderer/src/pages/home/Messages/Message.tsx @@ -11,12 +11,13 @@ import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { getMessageModelId } from '@renderer/services/MessagesService' import { getModelUniqId } from '@renderer/services/ModelService' import { estimateMessageUsage } from '@renderer/services/TokenService' -import { Assistant, Topic } from '@renderer/types' +import type { Assistant, Topic } from '@renderer/types' import type { Message, MessageBlock } from '@renderer/types/newMessage' import { classNames } from '@renderer/utils' import { isMessageProcessing } from '@renderer/utils/messageUtils/is' import { Divider } from 'antd' -import React, { Dispatch, FC, memo, SetStateAction, useCallback, useEffect, useRef } from 'react' +import type { Dispatch, FC, SetStateAction } from 'react' +import React, { memo, useCallback, useEffect, useRef } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/MessageAttachments.tsx b/src/renderer/src/pages/home/Messages/MessageAttachments.tsx index 73fcd4ea58..ea8787e114 100644 --- a/src/renderer/src/pages/home/Messages/MessageAttachments.tsx +++ b/src/renderer/src/pages/home/Messages/MessageAttachments.tsx @@ -4,7 +4,7 @@ import type { FileMessageBlock } from '@renderer/types/newMessage' import { parseFileTypes } from '@renderer/utils' import { Upload } from 'antd' import { t } from 'i18next' -import { FC } from 'react' +import type { FC } from 'react' import styled from 'styled-components' interface Props { diff --git a/src/renderer/src/pages/home/Messages/MessageEditor.tsx b/src/renderer/src/pages/home/Messages/MessageEditor.tsx index 29a8de556a..fcd2125205 100644 --- a/src/renderer/src/pages/home/Messages/MessageEditor.tsx +++ b/src/renderer/src/pages/home/Messages/MessageEditor.tsx @@ -10,21 +10,26 @@ import FileManager from '@renderer/services/FileManager' import PasteService from '@renderer/services/PasteService' import { useAppSelector } from '@renderer/store' import { selectMessagesForTopic } from '@renderer/store/newMessage' -import { FileMetadata, FileTypes } from '@renderer/types' -import { Message, MessageBlock, MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' +import type { FileMetadata } from '@renderer/types' +import { FileTypes } from '@renderer/types' +import type { Message, MessageBlock } from '@renderer/types/newMessage' +import { MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' import { classNames } from '@renderer/utils' import { getFilesFromDropEvent, isSendMessageKeyPressed } from '@renderer/utils/input' import { createFileBlock, createImageBlock } from '@renderer/utils/messageUtils/create' import { findAllBlocks } from '@renderer/utils/messageUtils/find' import { documentExts, imageExts, textExts } from '@shared/config/constant' import { Space, Tooltip } from 'antd' -import TextArea, { TextAreaRef } from 'antd/es/input/TextArea' +import type { TextAreaRef } from 'antd/es/input/TextArea' +import TextArea from 'antd/es/input/TextArea' import { Save, Send, X } from 'lucide-react' -import { FC, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' -import AttachmentButton, { AttachmentButtonRef } from '../Inputbar/AttachmentButton' +import type { AttachmentButtonRef } from '../Inputbar/AttachmentButton' +import AttachmentButton from '../Inputbar/AttachmentButton' import { FileNameRender, getFileIcon } from '../Inputbar/AttachmentPreview' interface Props { diff --git a/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx b/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx index eb5a293d10..ded587c528 100644 --- a/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx +++ b/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx @@ -13,9 +13,10 @@ import type { Topic } from '@renderer/types' import type { Message } from '@renderer/types/newMessage' import { AssistantMessageStatus } from '@renderer/types/newMessage' import { getMainTextContent } from '@renderer/utils/messageUtils/find' -import { MultiModelMessageStyle } from '@shared/data/preference/preferenceTypes' +import type { MultiModelMessageStyle } from '@shared/data/preference/preferenceTypes' import { Button, Tooltip } from 'antd' -import { FC, memo } from 'react' +import type { FC } from 'react' +import { memo } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/MessageGroupModelList.tsx b/src/renderer/src/pages/home/Messages/MessageGroupModelList.tsx index 74568aa06d..2fc60f4eba 100644 --- a/src/renderer/src/pages/home/Messages/MessageGroupModelList.tsx +++ b/src/renderer/src/pages/home/Messages/MessageGroupModelList.tsx @@ -9,7 +9,8 @@ import { lightbulbSoftVariants } from '@renderer/utils/motionVariants' import type { MultiModelFoldDisplayMode } from '@shared/data/preference/preferenceTypes' import { Avatar, Segmented as AntdSegmented, Tooltip } from 'antd' import { motion } from 'motion/react' -import { FC, memo, useCallback } from 'react' +import type { FC } from 'react' +import { memo, useCallback } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' interface MessageGroupModelListProps { diff --git a/src/renderer/src/pages/home/Messages/MessageGroupSettings.tsx b/src/renderer/src/pages/home/Messages/MessageGroupSettings.tsx index ca3f829a68..90f594dda2 100644 --- a/src/renderer/src/pages/home/Messages/MessageGroupSettings.tsx +++ b/src/renderer/src/pages/home/Messages/MessageGroupSettings.tsx @@ -5,7 +5,8 @@ import { SettingDivider } from '@renderer/pages/settings' import { SettingRow } from '@renderer/pages/settings' import { Col, Row, Slider } from 'antd' import { Popover } from 'antd' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' const MessageGroupSettings: FC = () => { diff --git a/src/renderer/src/pages/home/Messages/MessageHeader.tsx b/src/renderer/src/pages/home/Messages/MessageHeader.tsx index 5a0eba121f..11cceca9a0 100644 --- a/src/renderer/src/pages/home/Messages/MessageHeader.tsx +++ b/src/renderer/src/pages/home/Messages/MessageHeader.tsx @@ -18,7 +18,8 @@ import { firstLetter, isEmoji, removeLeadingEmoji } from '@renderer/utils' import { Avatar, Checkbox, Tooltip } from 'antd' import dayjs from 'dayjs' import { Sparkle } from 'lucide-react' -import { FC, memo, useCallback, useMemo } from 'react' +import type { FC } from 'react' +import { memo, useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/MessageImage.tsx b/src/renderer/src/pages/home/Messages/MessageImage.tsx index 52bb4a2278..444189c158 100644 --- a/src/renderer/src/pages/home/Messages/MessageImage.tsx +++ b/src/renderer/src/pages/home/Messages/MessageImage.tsx @@ -11,7 +11,7 @@ import { import { loggerService } from '@logger' import type { ImageMessageBlock } from '@renderer/types/newMessage' import { Image as AntdImage, Space } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/MessageMenubar.tsx b/src/renderer/src/pages/home/Messages/MessageMenubar.tsx index 430b3beff4..3f038ccec2 100644 --- a/src/renderer/src/pages/home/Messages/MessageMenubar.tsx +++ b/src/renderer/src/pages/home/Messages/MessageMenubar.tsx @@ -56,7 +56,8 @@ import { ThumbsUp, Upload } from 'lucide-react' -import { FC, memo, useCallback, useMemo, useState } from 'react' +import type { FC } from 'react' +import { memo, useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/MessageOutline.tsx b/src/renderer/src/pages/home/Messages/MessageOutline.tsx index 1f967a2f65..1327dd4a89 100644 --- a/src/renderer/src/pages/home/Messages/MessageOutline.tsx +++ b/src/renderer/src/pages/home/Messages/MessageOutline.tsx @@ -1,8 +1,10 @@ import Scrollbar from '@renderer/components/Scrollbar' -import { RootState } from '@renderer/store' +import type { RootState } from '@renderer/store' import { messageBlocksSelectors } from '@renderer/store/messageBlock' -import { Message, MessageBlockType } from '@renderer/types/newMessage' -import React, { FC, useMemo, useRef } from 'react' +import type { Message } from '@renderer/types/newMessage' +import { MessageBlockType } from '@renderer/types/newMessage' +import type { FC } from 'react' +import React, { useMemo, useRef } from 'react' import { useSelector } from 'react-redux' import remarkParse from 'remark-parse' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/MessageSelect.tsx b/src/renderer/src/pages/home/Messages/MessageSelect.tsx index d3d67fb7f0..b5e41d689a 100644 --- a/src/renderer/src/pages/home/Messages/MessageSelect.tsx +++ b/src/renderer/src/pages/home/Messages/MessageSelect.tsx @@ -1,7 +1,8 @@ import { useChatContext } from '@renderer/hooks/useChatContext' -import { Topic } from '@renderer/types' +import type { Topic } from '@renderer/types' import { Checkbox } from 'antd' -import { FC, ReactNode, useEffect, useRef } from 'react' +import type { FC, ReactNode } from 'react' +import { useEffect, useRef } from 'react' import styled from 'styled-components' interface SelectableMessageProps { diff --git a/src/renderer/src/pages/home/Messages/MessageTranslate.tsx b/src/renderer/src/pages/home/Messages/MessageTranslate.tsx index 91135ed737..dd0a02ecf8 100644 --- a/src/renderer/src/pages/home/Messages/MessageTranslate.tsx +++ b/src/renderer/src/pages/home/Messages/MessageTranslate.tsx @@ -2,7 +2,8 @@ import { TranslationOutlined } from '@ant-design/icons' import { LoadingIcon } from '@renderer/components/Icons' import type { TranslationMessageBlock } from '@renderer/types/newMessage' import { Divider } from 'antd' -import { FC, Fragment } from 'react' +import type { FC } from 'react' +import { Fragment } from 'react' import { useTranslation } from 'react-i18next' import Markdown from '../Markdown/Markdown' diff --git a/src/renderer/src/pages/home/Messages/MessageVideo.tsx b/src/renderer/src/pages/home/Messages/MessageVideo.tsx index 979b50ab6e..dd8438180a 100644 --- a/src/renderer/src/pages/home/Messages/MessageVideo.tsx +++ b/src/renderer/src/pages/home/Messages/MessageVideo.tsx @@ -1,6 +1,7 @@ import { loggerService } from '@renderer/services/LoggerService' -import { VideoMessageBlock } from '@renderer/types/newMessage' -import { FC, useRef } from 'react' +import type { VideoMessageBlock } from '@renderer/types/newMessage' +import type { FC } from 'react' +import { useRef } from 'react' import { useTranslation } from 'react-i18next' import ReactPlayer from 'react-player' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/Messages.tsx b/src/renderer/src/pages/home/Messages/Messages.tsx index c8fb86ee88..a39d966c6d 100644 --- a/src/renderer/src/pages/home/Messages/Messages.tsx +++ b/src/renderer/src/pages/home/Messages/Messages.tsx @@ -21,7 +21,8 @@ import { messageBlocksSelectors, updateOneBlock } from '@renderer/store/messageB import { newMessagesActions } from '@renderer/store/newMessage' import { saveMessageAndBlocksToDB, updateMessageAndBlocksThunk } from '@renderer/store/thunk/messageThunk' import type { Assistant, Topic } from '@renderer/types' -import { type Message, MessageBlock, MessageBlockType } from '@renderer/types/newMessage' +import type { MessageBlock } from '@renderer/types/newMessage' +import { type Message, MessageBlockType } from '@renderer/types/newMessage' import { captureScrollableAsBlob, captureScrollableAsDataURL, diff --git a/src/renderer/src/pages/home/Messages/NarrowLayout.tsx b/src/renderer/src/pages/home/Messages/NarrowLayout.tsx index 50506a417a..0651c137ef 100644 --- a/src/renderer/src/pages/home/Messages/NarrowLayout.tsx +++ b/src/renderer/src/pages/home/Messages/NarrowLayout.tsx @@ -1,5 +1,5 @@ import { usePreference } from '@data/hooks/usePreference' -import { FC, HTMLAttributes } from 'react' +import type { FC, HTMLAttributes } from 'react' import styled from 'styled-components' interface Props extends HTMLAttributes { diff --git a/src/renderer/src/pages/home/Messages/NewTopicButton.tsx b/src/renderer/src/pages/home/Messages/NewTopicButton.tsx index ccd4dd3d04..7b3b299648 100644 --- a/src/renderer/src/pages/home/Messages/NewTopicButton.tsx +++ b/src/renderer/src/pages/home/Messages/NewTopicButton.tsx @@ -4,7 +4,7 @@ import { EventEmitter } from '@renderer/services/EventService' import { EVENT_NAMES } from '@renderer/services/EventService' import { ThemeMode } from '@shared/data/preference/preferenceTypes' import { Button as AntdButton } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/Prompt.tsx b/src/renderer/src/pages/home/Messages/Prompt.tsx index e02389d915..1be9770593 100644 --- a/src/renderer/src/pages/home/Messages/Prompt.tsx +++ b/src/renderer/src/pages/home/Messages/Prompt.tsx @@ -1,9 +1,10 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { usePromptProcessor } from '@renderer/hooks/usePromptProcessor' import AssistantSettingsPopup from '@renderer/pages/settings/AssistantSettings' -import { Assistant, Topic } from '@renderer/types' +import type { Assistant, Topic } from '@renderer/types' import { containsSupportedVariables } from '@renderer/utils/prompt' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/Tools/MessageKnowledgeSearch.tsx b/src/renderer/src/pages/home/Messages/Tools/MessageKnowledgeSearch.tsx index 72a3f6e36c..9b8e086047 100644 --- a/src/renderer/src/pages/home/Messages/Tools/MessageKnowledgeSearch.tsx +++ b/src/renderer/src/pages/home/Messages/Tools/MessageKnowledgeSearch.tsx @@ -1,7 +1,7 @@ -import { KnowledgeSearchToolInput, KnowledgeSearchToolOutput } from '@renderer/aiCore/tools/KnowledgeSearchTool' +import type { KnowledgeSearchToolInput, KnowledgeSearchToolOutput } from '@renderer/aiCore/tools/KnowledgeSearchTool' import Spinner from '@renderer/components/Spinner' import i18n from '@renderer/i18n' -import { MCPToolResponse } from '@renderer/types' +import type { MCPToolResponse } from '@renderer/types' import { Typography } from 'antd' import { FileSearch } from 'lucide-react' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/Tools/MessageMcpTool.tsx b/src/renderer/src/pages/home/Messages/Tools/MessageMcpTool.tsx index 6acc8f0af5..868bb708e1 100644 --- a/src/renderer/src/pages/home/Messages/Tools/MessageMcpTool.tsx +++ b/src/renderer/src/pages/home/Messages/Tools/MessageMcpTool.tsx @@ -7,7 +7,7 @@ import { useTimer } from '@renderer/hooks/useTimer' import type { ToolMessageBlock } from '@renderer/types/newMessage' import { isToolAutoApproved } from '@renderer/utils/mcp-tools' import { cancelToolAction, confirmToolAction } from '@renderer/utils/userConfirmation' -import { MCPProgressEvent } from '@shared/config/types' +import type { MCPProgressEvent } from '@shared/config/types' import { IpcChannel } from '@shared/IpcChannel' import { Button, @@ -34,7 +34,8 @@ import { TriangleAlert, X } from 'lucide-react' -import { FC, memo, useEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import { memo, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Messages/Tools/MessageMemorySearch.tsx b/src/renderer/src/pages/home/Messages/Tools/MessageMemorySearch.tsx index cb86d8a259..8415009bf0 100644 --- a/src/renderer/src/pages/home/Messages/Tools/MessageMemorySearch.tsx +++ b/src/renderer/src/pages/home/Messages/Tools/MessageMemorySearch.tsx @@ -1,6 +1,6 @@ -import { MemorySearchToolInput, MemorySearchToolOutput } from '@renderer/aiCore/tools/MemorySearchTool' +import type { MemorySearchToolInput, MemorySearchToolOutput } from '@renderer/aiCore/tools/MemorySearchTool' import Spinner from '@renderer/components/Spinner' -import { MCPToolResponse } from '@renderer/types' +import type { MCPToolResponse } from '@renderer/types' import { Typography } from 'antd' import { ChevronRight } from 'lucide-react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/home/Messages/Tools/MessageTool.tsx b/src/renderer/src/pages/home/Messages/Tools/MessageTool.tsx index 38ae73e95e..4d4d0d1377 100644 --- a/src/renderer/src/pages/home/Messages/Tools/MessageTool.tsx +++ b/src/renderer/src/pages/home/Messages/Tools/MessageTool.tsx @@ -1,4 +1,4 @@ -import { MCPToolResponse } from '@renderer/types' +import type { MCPToolResponse } from '@renderer/types' import type { ToolMessageBlock } from '@renderer/types/newMessage' import { Collapse } from 'antd' diff --git a/src/renderer/src/pages/home/Messages/Tools/MessageWebSearch.tsx b/src/renderer/src/pages/home/Messages/Tools/MessageWebSearch.tsx index cd04de3a24..494dc5583a 100644 --- a/src/renderer/src/pages/home/Messages/Tools/MessageWebSearch.tsx +++ b/src/renderer/src/pages/home/Messages/Tools/MessageWebSearch.tsx @@ -1,6 +1,6 @@ -import { WebSearchToolInput, WebSearchToolOutput } from '@renderer/aiCore/tools/WebSearchTool' +import type { WebSearchToolInput, WebSearchToolOutput } from '@renderer/aiCore/tools/WebSearchTool' import Spinner from '@renderer/components/Spinner' -import { MCPToolResponse } from '@renderer/types' +import type { MCPToolResponse } from '@renderer/types' import { Typography } from 'antd' import { Search } from 'lucide-react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/home/Navbar.tsx b/src/renderer/src/pages/home/Navbar.tsx index 1181c3e768..7248f4992d 100644 --- a/src/renderer/src/pages/home/Navbar.tsx +++ b/src/renderer/src/pages/home/Navbar.tsx @@ -8,12 +8,12 @@ import { modelGenerating } from '@renderer/hooks/useModel' import { useShortcut } from '@renderer/hooks/useShortcuts' import { useShowAssistants, useShowTopics } from '@renderer/hooks/useStore' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { Assistant, Topic } from '@renderer/types' +import type { Assistant, Topic } from '@renderer/types' import { Tooltip } from 'antd' import { t } from 'i18next' import { Menu, PanelLeftClose, PanelRightClose, Search } from 'lucide-react' import { AnimatePresence, motion } from 'motion/react' -import { FC } from 'react' +import type { FC } from 'react' import styled from 'styled-components' import AssistantsDrawer from './components/AssistantsDrawer' diff --git a/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx b/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx index 0da1b79039..1980048665 100644 --- a/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx @@ -5,11 +5,12 @@ import { useAgents } from '@renderer/hooks/useAgents' import { useAssistants } from '@renderer/hooks/useAssistant' import { useAssistantsTabSortType } from '@renderer/hooks/useStore' import { useTags } from '@renderer/hooks/useTags' -import { Assistant } from '@renderer/types' +import type { Assistant } from '@renderer/types' import type { AssistantTabSortType } from '@shared/data/preference/preferenceTypes' import { Tooltip, Typography } from 'antd' import { Plus } from 'lucide-react' -import { FC, useCallback, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx index c5630da836..7ad8eae5f7 100644 --- a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx @@ -16,14 +16,15 @@ import { SettingDivider, SettingRow, SettingRowTitle } from '@renderer/pages/set import AssistantSettingsPopup from '@renderer/pages/settings/AssistantSettings' import { CollapsibleSettingGroup } from '@renderer/pages/settings/SettingGroup' import { getDefaultModel } from '@renderer/services/AssistantService' -import { Assistant, AssistantSettings, CodeStyleVarious, MathEngine } from '@renderer/types' +import type { Assistant, AssistantSettings, CodeStyleVarious, MathEngine } from '@renderer/types' import { modalConfirm } from '@renderer/utils' import { getSendMessageShortcutLabel } from '@renderer/utils/input' import type { SendMessageShortcut } from '@shared/data/preference/preferenceTypes' import { ThemeMode } from '@shared/data/preference/preferenceTypes' import { Button, Col, InputNumber, Row, Slider, Switch } from 'antd' import { Settings2 } from 'lucide-react' -import { FC, useCallback, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Tabs/TopicsTab.tsx b/src/renderer/src/pages/home/Tabs/TopicsTab.tsx index 47d9b7d406..4abf8f404a 100644 --- a/src/renderer/src/pages/home/Tabs/TopicsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/TopicsTab.tsx @@ -14,9 +14,9 @@ import { useNotesSettings } from '@renderer/hooks/useNotesSettings' import { finishTopicRenaming, startTopicRenaming, TopicManager } from '@renderer/hooks/useTopic' import { fetchMessagesSummary } from '@renderer/services/ApiService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { RootState } from '@renderer/store' +import type { RootState } from '@renderer/store' import { newMessagesActions } from '@renderer/store/newMessage' -import { Assistant, Topic } from '@renderer/types' +import type { Assistant, Topic } from '@renderer/types' import { classNames, removeSpecialCharactersForFileName } from '@renderer/utils' import { copyTopicAsMarkdown, copyTopicAsPlainText } from '@renderer/utils/copy' import { @@ -28,8 +28,9 @@ import { exportTopicToNotion, topicToMarkdown } from '@renderer/utils/export' -import { Dropdown, MenuProps, Tooltip } from 'antd' -import { ItemType, MenuItemType } from 'antd/es/menu/interface' +import type { MenuProps } from 'antd' +import { Dropdown, Tooltip } from 'antd' +import type { ItemType, MenuItemType } from 'antd/es/menu/interface' import dayjs from 'dayjs' import { findIndex } from 'lodash' import { @@ -47,7 +48,8 @@ import { UploadIcon, XIcon } from 'lucide-react' -import { FC, useCallback, useDeferredValue, useEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useDeferredValue, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx b/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx index 5c28482d4e..84783bbb50 100644 --- a/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx +++ b/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx @@ -8,11 +8,12 @@ import { useTags } from '@renderer/hooks/useTags' import AssistantSettingsPopup from '@renderer/pages/settings/AssistantSettings' import { getDefaultModel } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { Assistant } from '@renderer/types' +import type { Assistant } from '@renderer/types' import { getLeadingEmoji, uuid } from '@renderer/utils' import { hasTopicPendingRequests } from '@renderer/utils/queue' import type { AssistantTabSortType } from '@shared/data/preference/preferenceTypes' -import { Dropdown, MenuProps } from 'antd' +import type { MenuProps } from 'antd' +import { Dropdown } from 'antd' import { omit } from 'lodash' import { AlignJustify, @@ -27,7 +28,8 @@ import { Tag, Tags } from 'lucide-react' -import { FC, memo, useCallback, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import { memo, useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' import * as tinyPinyin from 'tiny-pinyin' diff --git a/src/renderer/src/pages/home/Tabs/components/OpenAISettingsGroup.tsx b/src/renderer/src/pages/home/Tabs/components/OpenAISettingsGroup.tsx index e3992d5b6b..e752f450b5 100644 --- a/src/renderer/src/pages/home/Tabs/components/OpenAISettingsGroup.tsx +++ b/src/renderer/src/pages/home/Tabs/components/OpenAISettingsGroup.tsx @@ -8,21 +8,16 @@ import { isSupportServiceTierProvider } from '@renderer/config/providers' import { useProvider } from '@renderer/hooks/useProvider' import { SettingDivider, SettingRow } from '@renderer/pages/settings' import { CollapsibleSettingGroup } from '@renderer/pages/settings/SettingGroup' -import { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch } from '@renderer/store' import { setOpenAISummaryText, setOpenAIVerbosity } from '@renderer/store/settings' -import { - GroqServiceTiers, - Model, - OpenAIServiceTier, - OpenAIServiceTiers, - OpenAISummaryText, - ServiceTier, - SystemProviderIds -} from '@renderer/types' -import { OpenAIVerbosity } from '@types' +import type { Model, OpenAIServiceTier, OpenAISummaryText, ServiceTier } from '@renderer/types' +import { GroqServiceTiers, OpenAIServiceTiers, SystemProviderIds } from '@renderer/types' +import type { OpenAIVerbosity } from '@types' import { Tooltip } from 'antd' import { CircleHelp } from 'lucide-react' -import { FC, useCallback, useEffect, useMemo } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo } from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' diff --git a/src/renderer/src/pages/home/Tabs/index.tsx b/src/renderer/src/pages/home/Tabs/index.tsx index a01a9b6612..458315a241 100644 --- a/src/renderer/src/pages/home/Tabs/index.tsx +++ b/src/renderer/src/pages/home/Tabs/index.tsx @@ -4,9 +4,10 @@ import { useAssistants, useDefaultAssistant } from '@renderer/hooks/useAssistant import { useNavbarPosition } from '@renderer/hooks/useNavbar' import { useShowTopics } from '@renderer/hooks/useStore' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { Assistant, Topic } from '@renderer/types' +import type { Assistant, Topic } from '@renderer/types' import { classNames, uuid } from '@renderer/utils' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/components/AssistantsDrawer.tsx b/src/renderer/src/pages/home/components/AssistantsDrawer.tsx index d37f39a234..97bfef4d8d 100644 --- a/src/renderer/src/pages/home/components/AssistantsDrawer.tsx +++ b/src/renderer/src/pages/home/components/AssistantsDrawer.tsx @@ -1,7 +1,7 @@ import { TopView } from '@renderer/components/TopView' import { isMac } from '@renderer/config/constant' import { useTimer } from '@renderer/hooks/useTimer' -import { Assistant, Topic } from '@renderer/types' +import type { Assistant, Topic } from '@renderer/types' import { Drawer } from 'antd' import { useState } from 'react' diff --git a/src/renderer/src/pages/home/components/SelectModelButton.tsx b/src/renderer/src/pages/home/components/SelectModelButton.tsx index bd6af86f7b..6258076ba4 100644 --- a/src/renderer/src/pages/home/components/SelectModelButton.tsx +++ b/src/renderer/src/pages/home/components/SelectModelButton.tsx @@ -5,10 +5,11 @@ import { isEmbeddingModel, isRerankModel, isWebSearchModel } from '@renderer/con import { useAssistant } from '@renderer/hooks/useAssistant' import { getProviderName } from '@renderer/services/ProviderService' import { useAppSelector } from '@renderer/store' -import { Assistant, Model } from '@renderer/types' +import type { Assistant, Model } from '@renderer/types' import { Button, Tag } from 'antd' import { ChevronsUpDown } from 'lucide-react' -import { FC, useEffect, useRef } from 'react' +import type { FC } from 'react' +import { useEffect, useRef } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/components/UpdateAppButton.tsx b/src/renderer/src/pages/home/components/UpdateAppButton.tsx index e16f90c471..8eac14d3fa 100644 --- a/src/renderer/src/pages/home/components/UpdateAppButton.tsx +++ b/src/renderer/src/pages/home/components/UpdateAppButton.tsx @@ -2,7 +2,7 @@ import { SyncOutlined } from '@ant-design/icons' import { usePreference } from '@data/hooks/usePreference' import { useAppUpdateState } from '@renderer/hooks/useAppUpdate' import { Button } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx index 3a2225a2c2..c3b294e6e5 100644 --- a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx +++ b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx @@ -5,10 +5,11 @@ import CustomTag from '@renderer/components/Tags/CustomTag' import { useKnowledge } from '@renderer/hooks/useKnowledge' import { NavbarIcon } from '@renderer/pages/home/ChatNavbar' import { getProviderName } from '@renderer/services/ProviderService' -import { KnowledgeBase } from '@renderer/types' +import type { KnowledgeBase } from '@renderer/types' import { Button, Empty, Tabs, Tag, Tooltip } from 'antd' import { Book, Folder, Globe, Link, Notebook, Search, Settings, Video } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/KnowledgePage.tsx b/src/renderer/src/pages/knowledge/KnowledgePage.tsx index cf0fc5170a..5c62c22ac6 100644 --- a/src/renderer/src/pages/knowledge/KnowledgePage.tsx +++ b/src/renderer/src/pages/knowledge/KnowledgePage.tsx @@ -7,10 +7,12 @@ import Scrollbar from '@renderer/components/Scrollbar' import { useKnowledgeBases } from '@renderer/hooks/useKnowledge' import { useShortcut } from '@renderer/hooks/useShortcuts' import KnowledgeSearchPopup from '@renderer/pages/knowledge/components/KnowledgeSearchPopup' -import { KnowledgeBase } from '@renderer/types' -import { Dropdown, Empty, MenuProps } from 'antd' +import type { KnowledgeBase } from '@renderer/types' +import type { MenuProps } from 'antd' +import { Dropdown, Empty } from 'antd' import { Book, Plus, Settings } from 'lucide-react' -import { FC, useCallback, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/__tests__/GeneralSettingsPanel.test.tsx b/src/renderer/src/pages/knowledge/__tests__/GeneralSettingsPanel.test.tsx index 7d961b5a65..64c566ac2d 100644 --- a/src/renderer/src/pages/knowledge/__tests__/GeneralSettingsPanel.test.tsx +++ b/src/renderer/src/pages/knowledge/__tests__/GeneralSettingsPanel.test.tsx @@ -1,4 +1,4 @@ -import { KnowledgeBase, Model, PreprocessProvider } from '@renderer/types' +import type { KnowledgeBase, Model, PreprocessProvider } from '@renderer/types' import { fireEvent, render, screen } from '@testing-library/react' import { userEvent } from '@testing-library/user-event' import { beforeEach, describe, expect, it, vi } from 'vitest' diff --git a/src/renderer/src/pages/knowledge/__tests__/KnowledgeBaseFormModal.test.tsx b/src/renderer/src/pages/knowledge/__tests__/KnowledgeBaseFormModal.test.tsx index ba85bcea34..4c9229cfcb 100644 --- a/src/renderer/src/pages/knowledge/__tests__/KnowledgeBaseFormModal.test.tsx +++ b/src/renderer/src/pages/knowledge/__tests__/KnowledgeBaseFormModal.test.tsx @@ -2,7 +2,8 @@ import { fireEvent, render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { beforeEach, describe, expect, it, vi } from 'vitest' -import KnowledgeBaseFormModal, { PanelConfig } from '../components/KnowledgeSettings/KnowledgeBaseFormModal' +import type { PanelConfig } from '../components/KnowledgeSettings/KnowledgeBaseFormModal' +import KnowledgeBaseFormModal from '../components/KnowledgeSettings/KnowledgeBaseFormModal' // Mock dependencies const mocks = vi.hoisted(() => ({ diff --git a/src/renderer/src/pages/knowledge/components/AddKnowledgeBasePopup.tsx b/src/renderer/src/pages/knowledge/components/AddKnowledgeBasePopup.tsx index b6a3819fd8..d7e2fa30b3 100644 --- a/src/renderer/src/pages/knowledge/components/AddKnowledgeBasePopup.tsx +++ b/src/renderer/src/pages/knowledge/components/AddKnowledgeBasePopup.tsx @@ -3,7 +3,7 @@ import { TopView } from '@renderer/components/TopView' import { useKnowledgeBases } from '@renderer/hooks/useKnowledge' import { useKnowledgeBaseForm } from '@renderer/hooks/useKnowledgeBaseForm' import { getKnowledgeBaseParams } from '@renderer/services/KnowledgeService' -import { KnowledgeBase } from '@renderer/types' +import type { KnowledgeBase } from '@renderer/types' import { formatErrorMessage } from '@renderer/utils/error' import { useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/knowledge/components/EditKnowledgeBasePopup.tsx b/src/renderer/src/pages/knowledge/components/EditKnowledgeBasePopup.tsx index 82dfc02a9c..60a37dc4d7 100644 --- a/src/renderer/src/pages/knowledge/components/EditKnowledgeBasePopup.tsx +++ b/src/renderer/src/pages/knowledge/components/EditKnowledgeBasePopup.tsx @@ -4,7 +4,7 @@ import { TopView } from '@renderer/components/TopView' import { useKnowledge } from '@renderer/hooks/useKnowledge' import { useKnowledgeBaseForm } from '@renderer/hooks/useKnowledgeBaseForm' import { getModelUniqId } from '@renderer/services/ModelService' -import { KnowledgeBase } from '@renderer/types' +import type { KnowledgeBase } from '@renderer/types' import { formatErrorMessage } from '@renderer/utils/error' import { Flex } from 'antd' import { useCallback, useMemo, useState } from 'react' diff --git a/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/TextItem.tsx b/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/TextItem.tsx index d50d758831..cf7b6f18bd 100644 --- a/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/TextItem.tsx +++ b/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/TextItem.tsx @@ -1,6 +1,7 @@ -import { FileMetadata, KnowledgeSearchResult } from '@renderer/types' +import type { FileMetadata, KnowledgeSearchResult } from '@renderer/types' import { Typography } from 'antd' -import React, { FC } from 'react' +import type { FC } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' import { CopyButtonContainer, KnowledgeItemMetadata } from './components' diff --git a/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/VideoItem.tsx b/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/VideoItem.tsx index daef3d638a..4d3ec4c78a 100644 --- a/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/VideoItem.tsx +++ b/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/VideoItem.tsx @@ -1,6 +1,7 @@ -import { FileMetadata, KnowledgeSearchResult } from '@renderer/types' +import type { FileMetadata, KnowledgeSearchResult } from '@renderer/types' import { Typography } from 'antd' -import React, { FC, useRef } from 'react' +import type { FC } from 'react' +import React, { useRef } from 'react' import ReactPlayer from 'react-player' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/components.tsx b/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/components.tsx index b11369fa83..35d0184198 100644 --- a/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/components.tsx +++ b/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/components.tsx @@ -1,5 +1,5 @@ import { CopyOutlined } from '@ant-design/icons' -import { FileMetadata, KnowledgeSearchResult } from '@renderer/types' +import type { FileMetadata, KnowledgeSearchResult } from '@renderer/types' import { Tooltip, Typography } from 'antd' import React from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/hooks.ts b/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/hooks.ts index 40b6513328..d5159363fb 100644 --- a/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/hooks.ts +++ b/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/hooks.ts @@ -1,7 +1,8 @@ import { loggerService } from '@logger' import { isValidUrl } from '@renderer/utils/fetch' import { message } from 'antd' -import React, { ReactElement } from 'react' +import type { ReactElement } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' const logger = loggerService.withContext('KnowledgeSearchItem hooks') diff --git a/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/index.tsx b/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/index.tsx index a6fd8695bb..d7f8a9c6d6 100644 --- a/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/index.tsx +++ b/src/renderer/src/pages/knowledge/components/KnowledgeSearchItem/index.tsx @@ -1,4 +1,4 @@ -import { FileMetadata, KnowledgeSearchResult } from '@renderer/types' +import type { FileMetadata, KnowledgeSearchResult } from '@renderer/types' import React from 'react' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx b/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx index 9cdb2546cf..a48b9b8225 100644 --- a/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx +++ b/src/renderer/src/pages/knowledge/components/KnowledgeSearchPopup.tsx @@ -2,8 +2,9 @@ import { loggerService } from '@logger' import { HStack } from '@renderer/components/Layout' import { TopView } from '@renderer/components/TopView' import { searchKnowledgeBase } from '@renderer/services/KnowledgeService' -import { FileMetadata, KnowledgeBase, KnowledgeSearchResult } from '@renderer/types' -import { Divider, Input, InputRef, List, Modal, Spin } from 'antd' +import type { FileMetadata, KnowledgeBase, KnowledgeSearchResult } from '@renderer/types' +import type { InputRef } from 'antd' +import { Divider, Input, List, Modal, Spin } from 'antd' import { Search } from 'lucide-react' import { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/knowledge/components/KnowledgeSettings/AdvancedSettingsPanel.tsx b/src/renderer/src/pages/knowledge/components/KnowledgeSettings/AdvancedSettingsPanel.tsx index d8682f7fb7..03b6d1b4e4 100644 --- a/src/renderer/src/pages/knowledge/components/KnowledgeSettings/AdvancedSettingsPanel.tsx +++ b/src/renderer/src/pages/knowledge/components/KnowledgeSettings/AdvancedSettingsPanel.tsx @@ -1,5 +1,5 @@ import { InfoTooltip } from '@renderer/components/TooltipIcons' -import { KnowledgeBase } from '@renderer/types' +import type { KnowledgeBase } from '@renderer/types' import { Alert, InputNumber } from 'antd' import { TriangleAlert } from 'lucide-react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/knowledge/components/KnowledgeSettings/GeneralSettingsPanel.tsx b/src/renderer/src/pages/knowledge/components/KnowledgeSettings/GeneralSettingsPanel.tsx index c5125c4aff..f8fe0e61a4 100644 --- a/src/renderer/src/pages/knowledge/components/KnowledgeSettings/GeneralSettingsPanel.tsx +++ b/src/renderer/src/pages/knowledge/components/KnowledgeSettings/GeneralSettingsPanel.tsx @@ -5,8 +5,9 @@ import { DEFAULT_KNOWLEDGE_DOCUMENT_COUNT } from '@renderer/config/constant' import { isEmbeddingModel, isRerankModel } from '@renderer/config/models' import { useProviders } from '@renderer/hooks/useProvider' import { getModelUniqId } from '@renderer/services/ModelService' -import { KnowledgeBase, PreprocessProvider } from '@renderer/types' -import { Input, Select, SelectProps, Slider } from 'antd' +import type { KnowledgeBase, PreprocessProvider } from '@renderer/types' +import type { SelectProps } from 'antd' +import { Input, Select, Slider } from 'antd' import { useTranslation } from 'react-i18next' import { SettingsItem, SettingsPanel } from './styles' diff --git a/src/renderer/src/pages/knowledge/components/KnowledgeSettings/KnowledgeBaseFormModal.tsx b/src/renderer/src/pages/knowledge/components/KnowledgeSettings/KnowledgeBaseFormModal.tsx index 25ee7cbe8c..6ea885da76 100644 --- a/src/renderer/src/pages/knowledge/components/KnowledgeSettings/KnowledgeBaseFormModal.tsx +++ b/src/renderer/src/pages/knowledge/components/KnowledgeSettings/KnowledgeBaseFormModal.tsx @@ -1,5 +1,6 @@ import { HStack } from '@renderer/components/Layout' -import { Menu, Modal, ModalProps } from 'antd' +import type { ModalProps } from 'antd' +import { Menu, Modal } from 'antd' import React, { useState } from 'react' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/components/QuotaTag.tsx b/src/renderer/src/pages/knowledge/components/QuotaTag.tsx index 9db551aab6..ce308b0252 100644 --- a/src/renderer/src/pages/knowledge/components/QuotaTag.tsx +++ b/src/renderer/src/pages/knowledge/components/QuotaTag.tsx @@ -2,9 +2,10 @@ import { preferenceService } from '@data/PreferenceService' import { loggerService } from '@logger' import { usePreprocessProvider } from '@renderer/hooks/usePreprocess' import { getKnowledgeBaseParams } from '@renderer/services/KnowledgeService' -import { KnowledgeBase, PreprocessProviderId } from '@renderer/types' +import type { KnowledgeBase, PreprocessProviderId } from '@renderer/types' import { Tag } from 'antd' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' const logger = loggerService.withContext('QuotaTag') diff --git a/src/renderer/src/pages/knowledge/components/StatusIcon.tsx b/src/renderer/src/pages/knowledge/components/StatusIcon.tsx index cfe21d50cb..e8ced30777 100644 --- a/src/renderer/src/pages/knowledge/components/StatusIcon.tsx +++ b/src/renderer/src/pages/knowledge/components/StatusIcon.tsx @@ -1,8 +1,9 @@ import { CheckCircleOutlined, CloseCircleOutlined } from '@ant-design/icons' import { loggerService } from '@logger' -import { KnowledgeBase, ProcessingStatus } from '@renderer/types' +import type { KnowledgeBase, ProcessingStatus } from '@renderer/types' import { Progress, Tooltip } from 'antd' -import React, { FC, useMemo } from 'react' +import type { FC } from 'react' +import React, { useMemo } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeDirectories.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeDirectories.tsx index 94eb1bd4c8..3610ce3978 100644 --- a/src/renderer/src/pages/knowledge/items/KnowledgeDirectories.tsx +++ b/src/renderer/src/pages/knowledge/items/KnowledgeDirectories.tsx @@ -5,11 +5,12 @@ import { DynamicVirtualList } from '@renderer/components/VirtualList' import { useKnowledge } from '@renderer/hooks/useKnowledge' import FileItem from '@renderer/pages/files/FileItem' import { getProviderName } from '@renderer/services/ProviderService' -import { KnowledgeBase, KnowledgeItem } from '@renderer/types' +import type { KnowledgeBase, KnowledgeItem } from '@renderer/types' import { Button, Tooltip } from 'antd' import dayjs from 'dayjs' import { PlusIcon } from 'lucide-react' -import { FC, useCallback, useMemo } from 'react' +import type { FC } from 'react' +import { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeFiles.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeFiles.tsx index eb7e519660..800a6f565e 100644 --- a/src/renderer/src/pages/knowledge/items/KnowledgeFiles.tsx +++ b/src/renderer/src/pages/knowledge/items/KnowledgeFiles.tsx @@ -6,12 +6,14 @@ import FileItem from '@renderer/pages/files/FileItem' import StatusIcon from '@renderer/pages/knowledge/components/StatusIcon' import FileManager from '@renderer/services/FileManager' import { getProviderName } from '@renderer/services/ProviderService' -import { FileMetadata, FileTypes, isKnowledgeFileItem, KnowledgeBase, KnowledgeItem } from '@renderer/types' +import type { FileMetadata, FileTypes, KnowledgeBase, KnowledgeItem } from '@renderer/types' +import { isKnowledgeFileItem } from '@renderer/types' import { formatFileSize, uuid } from '@renderer/utils' import { bookExts, documentExts, textExts, thirdPartyApplicationExts } from '@shared/config/constant' import { Button, Tooltip, Upload } from 'antd' import dayjs from 'dayjs' -import { FC, useCallback, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeNotes.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeNotes.tsx index 86abec6b13..3224671112 100644 --- a/src/renderer/src/pages/knowledge/items/KnowledgeNotes.tsx +++ b/src/renderer/src/pages/knowledge/items/KnowledgeNotes.tsx @@ -4,12 +4,13 @@ import { DynamicVirtualList } from '@renderer/components/VirtualList' import { useKnowledge } from '@renderer/hooks/useKnowledge' import FileItem from '@renderer/pages/files/FileItem' import { getProviderName } from '@renderer/services/ProviderService' -import { KnowledgeBase, KnowledgeItem } from '@renderer/types' +import type { KnowledgeBase, KnowledgeItem } from '@renderer/types' import { isMarkdownContent, markdownToPreviewText } from '@renderer/utils/markdownConverter' import { Button } from 'antd' import dayjs from 'dayjs' import { PlusIcon } from 'lucide-react' -import { FC, useCallback, useMemo } from 'react' +import type { FC } from 'react' +import { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeSitemaps.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeSitemaps.tsx index ab46fead5f..2f8d32d222 100644 --- a/src/renderer/src/pages/knowledge/items/KnowledgeSitemaps.tsx +++ b/src/renderer/src/pages/knowledge/items/KnowledgeSitemaps.tsx @@ -6,11 +6,12 @@ import { DynamicVirtualList } from '@renderer/components/VirtualList' import { useKnowledge } from '@renderer/hooks/useKnowledge' import FileItem from '@renderer/pages/files/FileItem' import { getProviderName } from '@renderer/services/ProviderService' -import { KnowledgeBase, KnowledgeItem } from '@renderer/types' +import type { KnowledgeBase, KnowledgeItem } from '@renderer/types' import { Button, message, Tooltip } from 'antd' import dayjs from 'dayjs' import { PlusIcon } from 'lucide-react' -import { FC, useCallback, useMemo } from 'react' +import type { FC } from 'react' +import { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx index a6b0b649e8..68bd13544e 100644 --- a/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx +++ b/src/renderer/src/pages/knowledge/items/KnowledgeUrls.tsx @@ -5,11 +5,12 @@ import { DynamicVirtualList } from '@renderer/components/VirtualList' import { useKnowledge } from '@renderer/hooks/useKnowledge' import FileItem from '@renderer/pages/files/FileItem' import { getProviderName } from '@renderer/services/ProviderService' -import { KnowledgeBase, KnowledgeItem } from '@renderer/types' +import type { KnowledgeBase, KnowledgeItem } from '@renderer/types' import { Button, Dropdown, Tooltip } from 'antd' import dayjs from 'dayjs' import { PlusIcon } from 'lucide-react' -import { FC, useCallback, useMemo } from 'react' +import type { FC } from 'react' +import { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/knowledge/items/KnowledgeVideos.tsx b/src/renderer/src/pages/knowledge/items/KnowledgeVideos.tsx index 0bf7355864..fe8f0c17aa 100644 --- a/src/renderer/src/pages/knowledge/items/KnowledgeVideos.tsx +++ b/src/renderer/src/pages/knowledge/items/KnowledgeVideos.tsx @@ -5,12 +5,14 @@ import VideoPopup from '@renderer/components/Popups/VideoPopup' import Scrollbar from '@renderer/components/Scrollbar' import { useKnowledge } from '@renderer/hooks/useKnowledge' import { getProviderName } from '@renderer/services/ProviderService' -import { FileTypes, isKnowledgeVideoItem, KnowledgeBase, KnowledgeItem } from '@renderer/types' +import type { KnowledgeBase, KnowledgeItem } from '@renderer/types' +import { FileTypes, isKnowledgeVideoItem } from '@renderer/types' import { Button, Tooltip } from 'antd' import dayjs from 'dayjs' import { Plus } from 'lucide-react' import VirtualList from 'rc-virtual-list' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/launchpad/LaunchpadPage.tsx b/src/renderer/src/pages/launchpad/LaunchpadPage.tsx index d284f19b68..3971ab2ea0 100644 --- a/src/renderer/src/pages/launchpad/LaunchpadPage.tsx +++ b/src/renderer/src/pages/launchpad/LaunchpadPage.tsx @@ -2,7 +2,8 @@ import App from '@renderer/components/MinApp/MinApp' import { useMinapps } from '@renderer/hooks/useMinapps' import { useSettings } from '@renderer/hooks/useSettings' import { Code, FileSearch, Folder, Languages, LayoutGrid, NotepadText, Palette, Sparkle } from 'lucide-react' -import { FC, useMemo } from 'react' +import type { FC } from 'react' +import { useMemo } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/pages/memory/settings-modal.tsx b/src/renderer/src/pages/memory/settings-modal.tsx index bbfb68f170..996baebd1d 100644 --- a/src/renderer/src/pages/memory/settings-modal.tsx +++ b/src/renderer/src/pages/memory/settings-modal.tsx @@ -8,10 +8,11 @@ import { useModel } from '@renderer/hooks/useModel' import { useProviders } from '@renderer/hooks/useProvider' import { getModelUniqId } from '@renderer/services/ModelService' import { selectMemoryConfig, updateMemoryConfig } from '@renderer/store/memory' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { Flex, Form, Modal } from 'antd' import { t } from 'i18next' -import { FC, useCallback, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' const logger = loggerService.withContext('MemoriesSettingsModal') diff --git a/src/renderer/src/pages/minapps/MinAppPage.tsx b/src/renderer/src/pages/minapps/MinAppPage.tsx index 48830361f7..326eddc61e 100644 --- a/src/renderer/src/pages/minapps/MinAppPage.tsx +++ b/src/renderer/src/pages/minapps/MinAppPage.tsx @@ -6,8 +6,9 @@ import { useNavbarPosition } from '@renderer/hooks/useNavbar' import TabsService from '@renderer/services/TabsService' import { getWebviewLoaded, onWebviewStateChange, setWebviewLoaded } from '@renderer/utils/webviewStateManager' import { Avatar } from 'antd' -import { WebviewTag } from 'electron' -import { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { WebviewTag } from 'electron' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useNavigate, useParams } from 'react-router-dom' import BeatLoader from 'react-spinners/BeatLoader' import styled from 'styled-components' diff --git a/src/renderer/src/pages/minapps/MinAppsPage.tsx b/src/renderer/src/pages/minapps/MinAppsPage.tsx index d6de391caa..2736f39319 100644 --- a/src/renderer/src/pages/minapps/MinAppsPage.tsx +++ b/src/renderer/src/pages/minapps/MinAppsPage.tsx @@ -5,7 +5,8 @@ import { useMinapps } from '@renderer/hooks/useMinapps' import { useNavbarPosition } from '@renderer/hooks/useNavbar' import { Button, Input } from 'antd' import { Search, SettingsIcon } from 'lucide-react' -import React, { FC, useState } from 'react' +import type { FC } from 'react' +import React, { useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/minapps/MiniappSettings/MiniAppIconsManager.tsx b/src/renderer/src/pages/minapps/MiniappSettings/MiniAppIconsManager.tsx index 958a0e6ea1..426d25cf17 100644 --- a/src/renderer/src/pages/minapps/MiniappSettings/MiniAppIconsManager.tsx +++ b/src/renderer/src/pages/minapps/MiniappSettings/MiniAppIconsManager.tsx @@ -1,17 +1,12 @@ import { CloseOutlined } from '@ant-design/icons' -import { - DragDropContext, - Draggable, - DraggableProvided, - Droppable, - DroppableProvided, - DropResult -} from '@hello-pangea/dnd' +import type { DraggableProvided, DroppableProvided, DropResult } from '@hello-pangea/dnd' +import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd' import { DEFAULT_MIN_APPS } from '@renderer/config/minapps' import { useMinapps } from '@renderer/hooks/useMinapps' import { getMiniappsStatusLabel } from '@renderer/i18n/label' -import { MinAppType } from '@renderer/types' -import { FC, useCallback } from 'react' +import type { MinAppType } from '@renderer/types' +import type { FC } from 'react' +import { useCallback } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/minapps/MiniappSettings/MiniAppSettings.tsx b/src/renderer/src/pages/minapps/MiniappSettings/MiniAppSettings.tsx index a2b9206058..da1e6e61ff 100644 --- a/src/renderer/src/pages/minapps/MiniappSettings/MiniAppSettings.tsx +++ b/src/renderer/src/pages/minapps/MiniappSettings/MiniAppSettings.tsx @@ -4,7 +4,8 @@ import { DEFAULT_MIN_APPS } from '@renderer/config/minapps' import { useMinapps } from '@renderer/hooks/useMinapps' import { SettingDescription, SettingDivider, SettingRowTitle, SettingTitle } from '@renderer/pages/settings' import { Button, message, Slider, Switch, Tooltip } from 'antd' -import { FC, useCallback, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/minapps/NewAppButton.tsx b/src/renderer/src/pages/minapps/NewAppButton.tsx index 9b2eb30682..22d9f9345d 100644 --- a/src/renderer/src/pages/minapps/NewAppButton.tsx +++ b/src/renderer/src/pages/minapps/NewAppButton.tsx @@ -2,10 +2,11 @@ import { PlusOutlined, UploadOutlined } from '@ant-design/icons' import { loggerService } from '@logger' import { loadCustomMiniApp, ORIGIN_DEFAULT_MIN_APPS, updateDefaultMinApps } from '@renderer/config/minapps' import { useMinapps } from '@renderer/hooks/useMinapps' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' import { Button, Form, Input, Modal, Radio, Upload } from 'antd' import type { UploadFile } from 'antd/es/upload/interface' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/minapps/components/MinAppFullPageView.tsx b/src/renderer/src/pages/minapps/components/MinAppFullPageView.tsx index 1265e693ff..24aca3db0c 100644 --- a/src/renderer/src/pages/minapps/components/MinAppFullPageView.tsx +++ b/src/renderer/src/pages/minapps/components/MinAppFullPageView.tsx @@ -1,11 +1,12 @@ import { loggerService } from '@logger' import WebviewContainer from '@renderer/components/MinApp/WebviewContainer' import { useSettings } from '@renderer/hooks/useSettings' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' import { getWebviewLoaded, setWebviewLoaded } from '@renderer/utils/webviewStateManager' import { Avatar } from 'antd' -import { WebviewTag } from 'electron' -import { FC, useCallback, useEffect, useRef, useState } from 'react' +import type { WebviewTag } from 'electron' +import type { FC } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import BeatLoader from 'react-spinners/BeatLoader' import styled from 'styled-components' diff --git a/src/renderer/src/pages/minapps/components/MinimalToolbar.tsx b/src/renderer/src/pages/minapps/components/MinimalToolbar.tsx index d1b6bf9ae5..f0e64d95c4 100644 --- a/src/renderer/src/pages/minapps/components/MinimalToolbar.tsx +++ b/src/renderer/src/pages/minapps/components/MinimalToolbar.tsx @@ -12,10 +12,11 @@ import { usePreference } from '@data/hooks/usePreference' import { isDev } from '@renderer/config/constant' import { DEFAULT_MIN_APPS } from '@renderer/config/minapps' import { useMinapps } from '@renderer/hooks/useMinapps' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' import { Tooltip } from 'antd' -import { WebviewTag } from 'electron' -import { FC, useCallback, useState } from 'react' +import type { WebviewTag } from 'electron' +import type { FC } from 'react' +import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/pages/notes/HeaderNavbar.tsx b/src/renderer/src/pages/notes/HeaderNavbar.tsx index c9eb189302..0798d7ded9 100644 --- a/src/renderer/src/pages/notes/HeaderNavbar.tsx +++ b/src/renderer/src/pages/notes/HeaderNavbar.tsx @@ -6,7 +6,7 @@ import { useActiveNode } from '@renderer/hooks/useNotesQuery' import { useNotesSettings } from '@renderer/hooks/useNotesSettings' import { useShowWorkspace } from '@renderer/hooks/useShowWorkspace' import { findNodeByPath, findNodeInTree, updateNodeInTree } from '@renderer/services/NotesTreeService' -import { NotesTreeNode } from '@types' +import type { NotesTreeNode } from '@types' import { Dropdown, Tooltip } from 'antd' import { t } from 'i18next' import { MoreHorizontal, PanelLeftClose, PanelRightClose, Star } from 'lucide-react' diff --git a/src/renderer/src/pages/notes/MenuConfig.tsx b/src/renderer/src/pages/notes/MenuConfig.tsx index 2e637ab781..0f8f2b0128 100644 --- a/src/renderer/src/pages/notes/MenuConfig.tsx +++ b/src/renderer/src/pages/notes/MenuConfig.tsx @@ -1,6 +1,6 @@ -import { NotesSettings } from '@renderer/store/note' +import type { NotesSettings } from '@renderer/store/note' import { Copy, MonitorSpeaker, Type } from 'lucide-react' -import { ReactNode } from 'react' +import type { ReactNode } from 'react' export interface MenuItem { key: string diff --git a/src/renderer/src/pages/notes/NotesEditor.tsx b/src/renderer/src/pages/notes/NotesEditor.tsx index 6acc8e57a7..60e098ada7 100644 --- a/src/renderer/src/pages/notes/NotesEditor.tsx +++ b/src/renderer/src/pages/notes/NotesEditor.tsx @@ -1,13 +1,14 @@ import { CodeEditor } from '@cherrystudio/ui' import { HSpaceBetweenStack } from '@renderer/components/Layout' import RichEditor from '@renderer/components/RichEditor' -import { RichEditorRef } from '@renderer/components/RichEditor/types' +import type { RichEditorRef } from '@renderer/components/RichEditor/types' import Selector from '@renderer/components/Selector' import { useCodeStyle } from '@renderer/context/CodeStyleProvider' import { useNotesSettings } from '@renderer/hooks/useNotesSettings' -import { EditorView } from '@renderer/types' +import type { EditorView } from '@renderer/types' import { Empty, Spin } from 'antd' -import { FC, memo, RefObject, useCallback, useMemo, useState } from 'react' +import type { FC, RefObject } from 'react' +import { memo, useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/notes/NotesPage.tsx b/src/renderer/src/pages/notes/NotesPage.tsx index c85793e781..2bc06eb8f4 100644 --- a/src/renderer/src/pages/notes/NotesPage.tsx +++ b/src/renderer/src/pages/notes/NotesPage.tsx @@ -1,6 +1,6 @@ import { loggerService } from '@logger' import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar' -import { RichEditorRef } from '@renderer/components/RichEditor/types' +import type { RichEditorRef } from '@renderer/components/RichEditor/types' import { useActiveNode, useFileContent, useFileContentSync } from '@renderer/hooks/useNotesQuery' import { useNotesSettings } from '@renderer/hooks/useNotesSettings' import { useShowWorkspace } from '@renderer/hooks/useShowWorkspace' @@ -17,12 +17,13 @@ import { import { getNotesTree, isParentNode, updateNodeInTree } from '@renderer/services/NotesTreeService' import { useAppDispatch, useAppSelector } from '@renderer/store' import { selectActiveFilePath, selectSortType, setActiveFilePath, setSortType } from '@renderer/store/note' -import { NotesSortType, NotesTreeNode } from '@renderer/types/note' -import { FileChangeEvent } from '@shared/config/types' +import type { NotesSortType, NotesTreeNode } from '@renderer/types/note' +import type { FileChangeEvent } from '@shared/config/types' import { useLiveQuery } from 'dexie-react-hooks' import { debounce } from 'lodash' import { AnimatePresence, motion } from 'motion/react' -import { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/notes/NotesSidebar.tsx b/src/renderer/src/pages/notes/NotesSidebar.tsx index c9803208c3..7c8e7597d0 100644 --- a/src/renderer/src/pages/notes/NotesSidebar.tsx +++ b/src/renderer/src/pages/notes/NotesSidebar.tsx @@ -8,8 +8,9 @@ import { useActiveNode } from '@renderer/hooks/useNotesQuery' import NotesSidebarHeader from '@renderer/pages/notes/NotesSidebarHeader' import { useAppSelector } from '@renderer/store' import { selectSortType } from '@renderer/store/note' -import { NotesSortType, NotesTreeNode } from '@renderer/types/note' -import { Dropdown, Input, InputRef, MenuProps } from 'antd' +import type { NotesSortType, NotesTreeNode } from '@renderer/types/note' +import type { InputRef, MenuProps } from 'antd' +import { Dropdown, Input } from 'antd' import { ChevronDown, ChevronRight, @@ -22,7 +23,8 @@ import { Star, StarOff } from 'lucide-react' -import { FC, Ref, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { FC, Ref } from 'react' +import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/notes/NotesSidebarHeader.tsx b/src/renderer/src/pages/notes/NotesSidebarHeader.tsx index f4d4e17e7d..a685f81872 100644 --- a/src/renderer/src/pages/notes/NotesSidebarHeader.tsx +++ b/src/renderer/src/pages/notes/NotesSidebarHeader.tsx @@ -1,8 +1,10 @@ import { CheckOutlined } from '@ant-design/icons' -import { NotesSortType } from '@renderer/types/note' -import { Dropdown, Input, MenuProps, Tooltip } from 'antd' +import type { NotesSortType } from '@renderer/types/note' +import type { MenuProps } from 'antd' +import { Dropdown, Input, Tooltip } from 'antd' import { ArrowLeft, ArrowUpNarrowWide, FilePlus2, FolderPlus, Search, Star } from 'lucide-react' -import { FC, useCallback } from 'react' +import type { FC } from 'react' +import { useCallback } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/paintings/DmxapiPage.tsx b/src/renderer/src/pages/paintings/DmxapiPage.tsx index 61d8a8995c..115da30f96 100644 --- a/src/renderer/src/pages/paintings/DmxapiPage.tsx +++ b/src/renderer/src/pages/paintings/DmxapiPage.tsx @@ -12,11 +12,12 @@ import { getProviderLabel } from '@renderer/i18n/label' import FileManager from '@renderer/services/FileManager' import type { FileMetadata } from '@renderer/types' import { convertToBase64, uuid } from '@renderer/utils' -import { DmxapiPainting } from '@types' +import type { DmxapiPainting } from '@types' import { Avatar, Button, Input, InputNumber, Segmented, Select, Switch, Tooltip } from 'antd' import TextArea from 'antd/es/input/TextArea' import { Info } from 'lucide-react' -import React, { FC, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import React, { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { useLocation, useNavigate } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/pages/paintings/NewApiPage.tsx b/src/renderer/src/pages/paintings/NewApiPage.tsx index 36f479bbed..1f6e21f56b 100644 --- a/src/renderer/src/pages/paintings/NewApiPage.tsx +++ b/src/renderer/src/pages/paintings/NewApiPage.tsx @@ -25,11 +25,12 @@ import { DEFAULT_PAINTING, MODELS, SUPPORTED_MODELS } from '@renderer/pages/pain import FileManager from '@renderer/services/FileManager' import { translateText } from '@renderer/services/TranslateService' import type { PaintingAction, PaintingsState } from '@renderer/types' -import { FileMetadata } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' import { getErrorMessage, uuid } from '@renderer/utils' import { Avatar, Button, Empty, InputNumber, Segmented, Select, Upload } from 'antd' import TextArea from 'antd/es/input/TextArea' -import React, { FC } from 'react' +import type { FC } from 'react' +import React from 'react' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { useLocation, useNavigate } from 'react-router-dom' diff --git a/src/renderer/src/pages/paintings/PaintingsRoutePage.tsx b/src/renderer/src/pages/paintings/PaintingsRoutePage.tsx index 9c0ec8a2af..92a8ca47be 100644 --- a/src/renderer/src/pages/paintings/PaintingsRoutePage.tsx +++ b/src/renderer/src/pages/paintings/PaintingsRoutePage.tsx @@ -1,8 +1,9 @@ import { loggerService } from '@logger' import { useAppDispatch } from '@renderer/store' import { setDefaultPaintingProvider } from '@renderer/store/settings' -import { PaintingProvider } from '@renderer/types' -import { FC, useEffect } from 'react' +import type { PaintingProvider } from '@renderer/types' +import type { FC } from 'react' +import { useEffect } from 'react' import { Route, Routes, useParams } from 'react-router-dom' import AihubmixPage from './AihubmixPage' diff --git a/src/renderer/src/pages/paintings/ZhipuPage.tsx b/src/renderer/src/pages/paintings/ZhipuPage.tsx index 0b19c43876..d19de27f5a 100644 --- a/src/renderer/src/pages/paintings/ZhipuPage.tsx +++ b/src/renderer/src/pages/paintings/ZhipuPage.tsx @@ -13,7 +13,8 @@ import FileManager from '@renderer/services/FileManager' import { getErrorMessage, uuid } from '@renderer/utils' import { Avatar, Button, InputNumber, Radio, Select } from 'antd' import TextArea from 'antd/es/input/TextArea' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { useLocation, useNavigate } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/pages/paintings/components/Artboard.tsx b/src/renderer/src/pages/paintings/components/Artboard.tsx index 2c56c40c18..7e915450b0 100644 --- a/src/renderer/src/pages/paintings/components/Artboard.tsx +++ b/src/renderer/src/pages/paintings/components/Artboard.tsx @@ -1,8 +1,9 @@ import ImageViewer from '@renderer/components/ImageViewer' import FileManager from '@renderer/services/FileManager' -import { Painting } from '@renderer/types' +import type { Painting } from '@renderer/types' import { Button, Spin } from 'antd' -import React, { FC } from 'react' +import type { FC } from 'react' +import React from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/paintings/components/ImageUploader.tsx b/src/renderer/src/pages/paintings/components/ImageUploader.tsx index 8d04640837..b1559c4ff3 100644 --- a/src/renderer/src/pages/paintings/components/ImageUploader.tsx +++ b/src/renderer/src/pages/paintings/components/ImageUploader.tsx @@ -1,7 +1,7 @@ import { DeleteOutlined } from '@ant-design/icons' import IcImageUp from '@renderer/assets/images/paintings/ic_ImageUp.svg' import { useTheme } from '@renderer/context/ThemeProvider' -import { FileMetadata } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' import { Popconfirm, Upload } from 'antd' import { Button } from 'antd' import type { RcFile, UploadProps } from 'antd/es/upload' diff --git a/src/renderer/src/pages/paintings/components/PaintingsList.tsx b/src/renderer/src/pages/paintings/components/PaintingsList.tsx index fc119af098..fab92e30d5 100644 --- a/src/renderer/src/pages/paintings/components/PaintingsList.tsx +++ b/src/renderer/src/pages/paintings/components/PaintingsList.tsx @@ -3,10 +3,11 @@ import { DraggableList } from '@renderer/components/DraggableList' import Scrollbar from '@renderer/components/Scrollbar' import { usePaintings } from '@renderer/hooks/usePaintings' import FileManager from '@renderer/services/FileManager' -import { Painting, PaintingsState } from '@renderer/types' +import type { Painting, PaintingsState } from '@renderer/types' import { classNames } from '@renderer/utils' import { Popconfirm } from 'antd' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/paintings/config/DmxapiConfig.ts b/src/renderer/src/pages/paintings/config/DmxapiConfig.ts index 090ae78855..7880f6305c 100644 --- a/src/renderer/src/pages/paintings/config/DmxapiConfig.ts +++ b/src/renderer/src/pages/paintings/config/DmxapiConfig.ts @@ -1,7 +1,8 @@ import { uuid } from '@renderer/utils' import { t } from 'i18next' -import { DmxapiPainting, generationModeType } from '../../../types' +import type { DmxapiPainting } from '../../../types' +import { generationModeType } from '../../../types' // 模型数据类型 export type DMXApiModelData = { diff --git a/src/renderer/src/pages/paintings/config/NewApiConfig.ts b/src/renderer/src/pages/paintings/config/NewApiConfig.ts index 1b8b3f04b5..1efa2f05f4 100644 --- a/src/renderer/src/pages/paintings/config/NewApiConfig.ts +++ b/src/renderer/src/pages/paintings/config/NewApiConfig.ts @@ -1,4 +1,4 @@ -import { GeneratePainting } from '@renderer/types' +import type { GeneratePainting } from '@renderer/types' import { uuid } from '@renderer/utils' export const SUPPORTED_MODELS = ['gpt-image-1'] diff --git a/src/renderer/src/pages/paintings/config/ZhipuConfig.ts b/src/renderer/src/pages/paintings/config/ZhipuConfig.ts index c88eff3a76..db119faa9f 100644 --- a/src/renderer/src/pages/paintings/config/ZhipuConfig.ts +++ b/src/renderer/src/pages/paintings/config/ZhipuConfig.ts @@ -1,4 +1,4 @@ -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { uuid } from '@renderer/utils' export const COURSE_URL = 'https://docs.bigmodel.cn/cn/guide/models/image-generation/cogview-4' diff --git a/src/renderer/src/pages/paintings/utils/TokenFluxService.ts b/src/renderer/src/pages/paintings/utils/TokenFluxService.ts index cd6f3d7629..d36a69659c 100644 --- a/src/renderer/src/pages/paintings/utils/TokenFluxService.ts +++ b/src/renderer/src/pages/paintings/utils/TokenFluxService.ts @@ -1,6 +1,6 @@ import { cacheService } from '@data/CacheService' import { loggerService } from '@logger' -import { FileMetadata, TokenFluxPainting } from '@renderer/types' +import type { FileMetadata, TokenFluxPainting } from '@renderer/types' import type { TokenFluxModel } from '../config/tokenFluxConfig' diff --git a/src/renderer/src/pages/paintings/utils/index.ts b/src/renderer/src/pages/paintings/utils/index.ts index ae26c0f152..8df6108c1e 100644 --- a/src/renderer/src/pages/paintings/utils/index.ts +++ b/src/renderer/src/pages/paintings/utils/index.ts @@ -1,5 +1,5 @@ -import { Provider } from '@renderer/types' -import { TFunction } from 'i18next' +import type { Provider } from '@renderer/types' +import type { TFunction } from 'i18next' import { isEmpty } from 'lodash' export function checkProviderEnabled(provider: Provider, t: TFunction): Promise { diff --git a/src/renderer/src/pages/settings/AboutSettings.tsx b/src/renderer/src/pages/settings/AboutSettings.tsx index 698b1b531b..c90fc66feb 100644 --- a/src/renderer/src/pages/settings/AboutSettings.tsx +++ b/src/renderer/src/pages/settings/AboutSettings.tsx @@ -17,7 +17,8 @@ import { Avatar, Button, Progress, Radio, Row, Switch, Tag, Tooltip } from 'antd import { debounce } from 'lodash' import { Bug, FileCheck, Github, Globe, Mail, Rss } from 'lucide-react' import { BadgeQuestionMark } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import Markdown from 'react-markdown' import { Link } from 'react-router-dom' diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantKnowledgeBaseSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantKnowledgeBaseSettings.tsx index b008b590c7..0013050d05 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantKnowledgeBaseSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantKnowledgeBaseSettings.tsx @@ -1,8 +1,9 @@ import { CheckOutlined } from '@ant-design/icons' import { Box } from '@renderer/components/Layout' import { useAppSelector } from '@renderer/store' -import { Assistant, AssistantSettings } from '@renderer/types' -import { Row, Segmented, Select, SelectProps, Tooltip } from 'antd' +import type { Assistant, AssistantSettings } from '@renderer/types' +import type { SelectProps } from 'antd' +import { Row, Segmented, Select, Tooltip } from 'antd' import { CircleHelp } from 'lucide-react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantMCPSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantMCPSettings.tsx index a625663fb8..ac89141092 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantMCPSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantMCPSettings.tsx @@ -1,7 +1,7 @@ import { InfoCircleOutlined } from '@ant-design/icons' import { Box } from '@renderer/components/Layout' import { useMCPServers } from '@renderer/hooks/useMCPServers' -import { Assistant, AssistantSettings } from '@renderer/types' +import type { Assistant, AssistantSettings } from '@renderer/types' import { Empty, Switch, Tooltip } from 'antd' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx index b7ab156ca7..8987d31bcd 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantMemorySettings.tsx @@ -4,7 +4,7 @@ import { Box } from '@renderer/components/Layout' import MemoriesSettingsModal from '@renderer/pages/memory/settings-modal' import MemoryService from '@renderer/services/MemoryService' import { selectGlobalMemoryEnabled, selectMemoryConfig } from '@renderer/store/memory' -import { Assistant, AssistantSettings } from '@renderer/types' +import type { Assistant, AssistantSettings } from '@renderer/types' import { Alert, Button, Card, Space, Switch, Tooltip, Typography } from 'antd' import { useForm } from 'antd/es/form/Form' import { Settings2 } from 'lucide-react' diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx index f22f09de6e..e8fb8f853c 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx @@ -9,12 +9,13 @@ import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE, MAX_CONTEXT_COUNT } from '@r import { isEmbeddingModel, isRerankModel } from '@renderer/config/models' import { useTimer } from '@renderer/hooks/useTimer' import { SettingRow } from '@renderer/pages/settings' -import { Assistant, AssistantSettingCustomParameters, AssistantSettings, Model } from '@renderer/types' +import type { Assistant, AssistantSettingCustomParameters, AssistantSettings, Model } from '@renderer/types' import { modalConfirm } from '@renderer/utils' import { Button, Col, Divider, Input, InputNumber, Row, Select, Slider, Switch, Tooltip } from 'antd' import { isNull } from 'lodash' import { PlusIcon } from 'lucide-react' -import { FC, useCallback, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx index e0e53c4b47..0cef4ae589 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx @@ -5,11 +5,11 @@ import { CodeEditor } from '@cherrystudio/ui' import { usePreference } from '@data/hooks/usePreference' import EmojiPicker from '@renderer/components/EmojiPicker' import { Box, HSpaceBetweenStack, HStack } from '@renderer/components/Layout' -import { RichEditorRef } from '@renderer/components/RichEditor/types' +import type { RichEditorRef } from '@renderer/components/RichEditor/types' import { useCodeStyle } from '@renderer/context/CodeStyleProvider' import { usePromptProcessor } from '@renderer/hooks/usePromptProcessor' import { estimateTextTokens } from '@renderer/services/TokenService' -import { Assistant, AssistantSettings } from '@renderer/types' +import type { Assistant, AssistantSettings } from '@renderer/types' import { getLeadingEmoji } from '@renderer/utils' import { Button, Input, Popover } from 'antd' import { Edit, HelpCircle, Save } from 'lucide-react' diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantRegularPromptsSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantRegularPromptsSettings.tsx index b244f4e4c5..b75766789d 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantRegularPromptsSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantRegularPromptsSettings.tsx @@ -2,10 +2,11 @@ import { ExclamationCircleOutlined } from '@ant-design/icons' import { DraggableList } from '@renderer/components/DraggableList' import { DeleteIcon, EditIcon } from '@renderer/components/Icons' import FileItem from '@renderer/pages/files/FileItem' -import { Assistant, QuickPhrase } from '@renderer/types' +import type { Assistant, QuickPhrase } from '@renderer/types' import { Button, Flex, Input, Modal, Popconfirm, Space } from 'antd' import { PlusIcon } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' import { v4 as uuidv4 } from 'uuid' diff --git a/src/renderer/src/pages/settings/AssistantSettings/index.tsx b/src/renderer/src/pages/settings/AssistantSettings/index.tsx index 3b7140512d..ba074620d3 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/index.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/index.tsx @@ -3,7 +3,7 @@ import { TopView } from '@renderer/components/TopView' import { useAgent } from '@renderer/hooks/useAgents' import { useAssistant } from '@renderer/hooks/useAssistant' import { useSidebarIconShow } from '@renderer/hooks/useSidebarIcon' -import { Assistant } from '@renderer/types' +import type { Assistant } from '@renderer/types' import { Menu, Modal } from 'antd' import { useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/DataSettings/AgentsSubscribeUrlSettings.tsx b/src/renderer/src/pages/settings/DataSettings/AgentsSubscribeUrlSettings.tsx index 0e40f26501..5fd2237b67 100755 --- a/src/renderer/src/pages/settings/DataSettings/AgentsSubscribeUrlSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/AgentsSubscribeUrlSettings.tsx @@ -4,7 +4,7 @@ import { useSettings } from '@renderer/hooks/useSettings' import { useAppDispatch } from '@renderer/store' import { setAgentssubscribeUrl } from '@renderer/store/settings' import Input from 'antd/es/input/Input' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DataSettings/DataSettings.tsx b/src/renderer/src/pages/settings/DataSettings/DataSettings.tsx index e3528aba55..7ced28884b 100644 --- a/src/renderer/src/pages/settings/DataSettings/DataSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/DataSettings.tsx @@ -16,12 +16,13 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useKnowledgeFiles } from '@renderer/hooks/useKnowledgeFiles' import { useTimer } from '@renderer/hooks/useTimer' import { reset } from '@renderer/services/BackupService' -import { AppInfo } from '@renderer/types' +import type { AppInfo } from '@renderer/types' import { formatFileSize } from '@renderer/utils' import { occupiedDirs } from '@shared/config/constant' import { Button, Progress, Switch, Typography } from 'antd' import { FileText, FolderCog, FolderInput, FolderOpen, SaveIcon, Sparkle } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/DataSettings/ExportMenuSettings.tsx b/src/renderer/src/pages/settings/DataSettings/ExportMenuSettings.tsx index 5274a773f5..4276b55ee0 100644 --- a/src/renderer/src/pages/settings/DataSettings/ExportMenuSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/ExportMenuSettings.tsx @@ -1,7 +1,7 @@ import { useMultiplePreferences } from '@data/hooks/usePreference' import { useTheme } from '@renderer/context/ThemeProvider' import { Switch } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx b/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx index 33cfa46d37..807bcedd6a 100644 --- a/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx @@ -5,7 +5,7 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useMinappPopup } from '@renderer/hooks/useMinappPopup' import { Button, Space, Switch, Tooltip } from 'antd' import { Input } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingHelpText, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx b/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx index fbed4fdc8d..a8e2dc163e 100644 --- a/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx @@ -8,7 +8,7 @@ import Selector from '@renderer/components/Selector' import { useTheme } from '@renderer/context/ThemeProvider' import { startAutoSync, stopAutoSync } from '@renderer/services/BackupService' import { useAppSelector } from '@renderer/store' -import { AppInfo } from '@renderer/types' +import type { AppInfo } from '@renderer/types' import { Button, Input, Switch, Tooltip } from 'antd' import dayjs from 'dayjs' import { useEffect, useState } from 'react' diff --git a/src/renderer/src/pages/settings/DataSettings/MarkdownExportSettings.tsx b/src/renderer/src/pages/settings/DataSettings/MarkdownExportSettings.tsx index 610b568018..cc88a4a258 100644 --- a/src/renderer/src/pages/settings/DataSettings/MarkdownExportSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/MarkdownExportSettings.tsx @@ -4,7 +4,7 @@ import { HStack } from '@renderer/components/Layout' import { useTheme } from '@renderer/context/ThemeProvider' import { Button, Switch } from 'antd' import Input from 'antd/es/input/Input' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingHelpText, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx b/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx index 66e94f5f3d..cf044fe939 100644 --- a/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx @@ -6,7 +6,7 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useMinappPopup } from '@renderer/hooks/useMinappPopup' import { Button, Space, Switch, Tooltip } from 'antd' import { Input } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingHelpText, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx b/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx index 7b26410104..86440bff97 100644 --- a/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx @@ -21,7 +21,8 @@ import { modalConfirm } from '@renderer/utils' import { NUTSTORE_HOST } from '@shared/config/nutstore' import { Button, Input, Switch, Tooltip, Typography } from 'antd' import dayjs from 'dayjs' -import { FC, useCallback, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { type FileStat } from 'webdav' diff --git a/src/renderer/src/pages/settings/DataSettings/ObsidianSettings.tsx b/src/renderer/src/pages/settings/DataSettings/ObsidianSettings.tsx index b3272dd5dd..3910b7d4a1 100644 --- a/src/renderer/src/pages/settings/DataSettings/ObsidianSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/ObsidianSettings.tsx @@ -2,7 +2,8 @@ import { usePreference } from '@data/hooks/usePreference' import { loggerService } from '@logger' import { HStack } from '@renderer/components/Layout' import { Empty, Select, Spin } from 'antd' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DataSettings/S3Settings.tsx b/src/renderer/src/pages/settings/DataSettings/S3Settings.tsx index a6d801e2b8..f697ea3e7d 100644 --- a/src/renderer/src/pages/settings/DataSettings/S3Settings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/S3Settings.tsx @@ -10,7 +10,8 @@ import { startAutoSync, stopAutoSync } from '@renderer/services/BackupService' import { useAppSelector } from '@renderer/store' import { Button, Input, Switch, Tooltip } from 'antd' import dayjs from 'dayjs' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingHelpText, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DataSettings/SiyuanSettings.tsx b/src/renderer/src/pages/settings/DataSettings/SiyuanSettings.tsx index fe3bd145e9..6ab5647a3f 100644 --- a/src/renderer/src/pages/settings/DataSettings/SiyuanSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/SiyuanSettings.tsx @@ -6,7 +6,7 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useMinappPopup } from '@renderer/hooks/useMinappPopup' import { Button, Space, Tooltip } from 'antd' import { Input } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx b/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx index 016cd3e96b..695b083d12 100644 --- a/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx @@ -9,7 +9,8 @@ import { startAutoSync, stopAutoSync } from '@renderer/services/BackupService' import { useAppSelector } from '@renderer/store' import { Button, Input, Switch, Tooltip } from 'antd' import dayjs from 'dayjs' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingHelpText, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DataSettings/YuqueSettings.tsx b/src/renderer/src/pages/settings/DataSettings/YuqueSettings.tsx index f88f89f9e3..aef5bc3d6e 100644 --- a/src/renderer/src/pages/settings/DataSettings/YuqueSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/YuqueSettings.tsx @@ -5,7 +5,7 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useMinappPopup } from '@renderer/hooks/useMinappPopup' import { Button, Space, Tooltip } from 'antd' import { Input } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx b/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx index d688a038fc..3bc8fdbafe 100644 --- a/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx +++ b/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx @@ -9,11 +9,12 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useNavbarPosition } from '@renderer/hooks/useNavbar' import useUserTheme from '@renderer/hooks/useUserTheme' import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas' -import { AssistantIconType } from '@shared/data/preference/preferenceTypes' +import type { AssistantIconType } from '@shared/data/preference/preferenceTypes' import { ThemeMode } from '@shared/data/preference/preferenceTypes' import { Button, ColorPicker, Segmented, Select, Switch } from 'antd' import { Minus, Monitor, Moon, Plus, Sun } from 'lucide-react' -import { FC, useCallback, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/DisplaySettings/SidebarIconsManager.tsx b/src/renderer/src/pages/settings/DisplaySettings/SidebarIconsManager.tsx index ccbaa917e8..f5fc045d3a 100644 --- a/src/renderer/src/pages/settings/DisplaySettings/SidebarIconsManager.tsx +++ b/src/renderer/src/pages/settings/DisplaySettings/SidebarIconsManager.tsx @@ -1,14 +1,8 @@ import { CloseOutlined } from '@ant-design/icons' -import { - DragDropContext, - Draggable, - DraggableProvided, - Droppable, - DroppableProvided, - DropResult -} from '@hello-pangea/dnd' +import type { DraggableProvided, DroppableProvided, DropResult } from '@hello-pangea/dnd' +import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd' import { getSidebarIconLabel } from '@renderer/i18n/label' -import { SidebarIcon } from '@shared/data/preference/preferenceTypes' +import type { SidebarIcon } from '@shared/data/preference/preferenceTypes' import { message } from 'antd' import { Code, @@ -21,7 +15,8 @@ import { Palette, Sparkle } from 'lucide-react' -import { FC, useCallback, useMemo } from 'react' +import type { FC } from 'react' +import { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrImageSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrImageSettings.tsx index 622d1349d4..52bc326bf2 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/OcrImageSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrImageSettings.tsx @@ -2,7 +2,8 @@ import { loggerService } from '@logger' import { ErrorTag } from '@renderer/components/Tags/ErrorTag' import { isMac, isWin } from '@renderer/config/constant' import { useOcrProviders } from '@renderer/hooks/useOcrProvider' -import { BuiltinOcrProviderIds, ImageOcrProvider, isImageOcrProvider, OcrProvider } from '@renderer/types' +import type { ImageOcrProvider, OcrProvider } from '@renderer/types' +import { BuiltinOcrProviderIds, isImageOcrProvider } from '@renderer/types' import { Select } from 'antd' import { useEffect, useMemo } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrProviderSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrProviderSettings.tsx index 120e5a9e48..2b72658f7e 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/OcrProviderSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrProviderSettings.tsx @@ -3,7 +3,8 @@ import { ErrorBoundary } from '@renderer/components/ErrorBoundary' import { isMac, isWin } from '@renderer/config/constant' import { useTheme } from '@renderer/context/ThemeProvider' import { useOcrProviders } from '@renderer/hooks/useOcrProvider' -import { isBuiltinOcrProvider, isOcrSystemProvider, OcrProvider } from '@renderer/types' +import type { OcrProvider } from '@renderer/types' +import { isBuiltinOcrProvider, isOcrSystemProvider } from '@renderer/types' import { Divider, Flex } from 'antd' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrSettings.tsx index 409390b001..077451dd4d 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/OcrSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrSettings.tsx @@ -2,9 +2,11 @@ import { PictureOutlined } from '@ant-design/icons' import { ErrorBoundary } from '@renderer/components/ErrorBoundary' import { useTheme } from '@renderer/context/ThemeProvider' import { useOcrProviders } from '@renderer/hooks/useOcrProvider' -import { OcrProvider } from '@renderer/types' -import { Tabs, TabsProps } from 'antd' -import { FC, useState } from 'react' +import type { OcrProvider } from '@renderer/types' +import type { TabsProps } from 'antd' +import { Tabs } from 'antd' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrSystemSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrSystemSettings.tsx index 8032b7e291..bd24326e2f 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/OcrSystemSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrSystemSettings.tsx @@ -4,7 +4,8 @@ import { InfoTooltip } from '@renderer/components/TooltipIcons' import { isMac, isWin } from '@renderer/config/constant' import { useOcrProvider } from '@renderer/hooks/useOcrProvider' import useTranslate from '@renderer/hooks/useTranslate' -import { BuiltinOcrProviderIds, isOcrSystemProvider, TranslateLanguageCode } from '@renderer/types' +import type { TranslateLanguageCode } from '@renderer/types' +import { BuiltinOcrProviderIds, isOcrSystemProvider } from '@renderer/types' import { Flex, Select } from 'antd' import { startTransition, useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrTesseractSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrTesseractSettings.tsx index 4c0b5eb805..3c284656ab 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/OcrTesseractSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrTesseractSettings.tsx @@ -4,7 +4,8 @@ import { InfoTooltip } from '@renderer/components/TooltipIcons' import { TESSERACT_LANG_MAP } from '@renderer/config/ocr' import { useOcrProvider } from '@renderer/hooks/useOcrProvider' import useTranslate from '@renderer/hooks/useTranslate' -import { BuiltinOcrProviderIds, isOcrTesseractProvider, TesseractLangCode } from '@renderer/types' +import type { TesseractLangCode } from '@renderer/types' +import { BuiltinOcrProviderIds, isOcrTesseractProvider } from '@renderer/types' import { Flex, Select } from 'antd' import { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/DocProcessSettings/PreprocessProviderSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/PreprocessProviderSettings.tsx index d19eec4d6d..0e44b36f42 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/PreprocessProviderSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/PreprocessProviderSettings.tsx @@ -2,12 +2,13 @@ import { ExportOutlined } from '@ant-design/icons' import { ApiKeyListPopup } from '@renderer/components/Popups/ApiKeyListPopup' import { getPreprocessProviderLogo, PREPROCESS_PROVIDER_CONFIG } from '@renderer/config/preprocessProviders' import { usePreprocessProvider } from '@renderer/hooks/usePreprocess' -import { PreprocessProvider } from '@renderer/types' +import type { PreprocessProvider } from '@renderer/types' import { formatApiKeys, hasObjectKey } from '@renderer/utils' import { Avatar, Button, Divider, Flex, Input, Tooltip } from 'antd' import Link from 'antd/es/typography/Link' import { List } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/DocProcessSettings/PreprocessSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/PreprocessSettings.tsx index a09265a637..5172c68922 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/PreprocessSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/PreprocessSettings.tsx @@ -1,8 +1,9 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useDefaultPreprocessProvider, usePreprocessProviders } from '@renderer/hooks/usePreprocess' -import { PreprocessProvider } from '@renderer/types' +import type { PreprocessProvider } from '@renderer/types' import { Select } from 'antd' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingDivider, SettingGroup, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/DocProcessSettings/index.tsx b/src/renderer/src/pages/settings/DocProcessSettings/index.tsx index 526f507fff..3553bdc26c 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/index.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/index.tsx @@ -1,5 +1,5 @@ import { useTheme } from '@renderer/context/ThemeProvider' -import { FC } from 'react' +import type { FC } from 'react' import { SettingContainer } from '..' import OcrSettings from './OcrSettings' diff --git a/src/renderer/src/pages/settings/GeneralSettings.tsx b/src/renderer/src/pages/settings/GeneralSettings.tsx index 3970c06d4e..a7be9528c8 100644 --- a/src/renderer/src/pages/settings/GeneralSettings.tsx +++ b/src/renderer/src/pages/settings/GeneralSettings.tsx @@ -6,13 +6,14 @@ import { InfoTooltip } from '@renderer/components/TooltipIcons' import { useTheme } from '@renderer/context/ThemeProvider' import { useTimer } from '@renderer/hooks/useTimer' import i18n from '@renderer/i18n' -import { NotificationSource } from '@renderer/types/notification' +import type { NotificationSource } from '@renderer/types/notification' import { isValidProxyUrl } from '@renderer/utils' import { formatErrorMessage } from '@renderer/utils/error' import { defaultByPassRules, defaultLanguage } from '@shared/config/constant' -import { LanguageVarious } from '@shared/data/preference/preferenceTypes' +import type { LanguageVarious } from '@shared/data/preference/preferenceTypes' import { Flex, Input, Switch, Tooltip } from 'antd' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingContainer, SettingDivider, SettingGroup, SettingRow, SettingRowTitle, SettingTitle } from '.' diff --git a/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx b/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx index adadee78bf..0588f11954 100644 --- a/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx @@ -7,11 +7,13 @@ import { useCodeStyle } from '@renderer/context/CodeStyleProvider' import { useTimer } from '@renderer/hooks/useTimer' import { useAppDispatch } from '@renderer/store' import { setMCPServerActive } from '@renderer/store/mcp' -import { MCPServer, objectKeys, safeValidateMcpConfig } from '@renderer/types' +import type { MCPServer } from '@renderer/types' +import { objectKeys, safeValidateMcpConfig } from '@renderer/types' import { parseJSON } from '@renderer/utils' import { formatZodError } from '@renderer/utils/error' import { Button, Form, Modal, Upload } from 'antd' -import { FC, useCallback, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' const logger = loggerService.withContext('AddMcpServerModal') diff --git a/src/renderer/src/pages/settings/MCPSettings/BuiltinMCPServerList.tsx b/src/renderer/src/pages/settings/MCPSettings/BuiltinMCPServerList.tsx index c5af5da067..617688fb22 100644 --- a/src/renderer/src/pages/settings/MCPSettings/BuiltinMCPServerList.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/BuiltinMCPServerList.tsx @@ -3,7 +3,7 @@ import { useMCPServers } from '@renderer/hooks/useMCPServers' import { getBuiltInMcpServerDescriptionLabel, getMcpTypeLabel } from '@renderer/i18n/label' import { builtinMCPServers } from '@renderer/store/mcp' import { Button, Popover, Tag } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/MCPSettings/EditMcpJsonPopup.tsx b/src/renderer/src/pages/settings/MCPSettings/EditMcpJsonPopup.tsx index ddefb877e3..cf5072ce6f 100644 --- a/src/renderer/src/pages/settings/MCPSettings/EditMcpJsonPopup.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/EditMcpJsonPopup.tsx @@ -5,7 +5,8 @@ import { TopView } from '@renderer/components/TopView' import { useCodeStyle } from '@renderer/context/CodeStyleProvider' import { useAppDispatch, useAppSelector } from '@renderer/store' import { setMCPServers } from '@renderer/store/mcp' -import { MCPServer, safeValidateMcpConfig } from '@renderer/types' +import type { MCPServer } from '@renderer/types' +import { safeValidateMcpConfig } from '@renderer/types' import { parseJSON } from '@renderer/utils' import { formatErrorMessage, formatZodError } from '@renderer/utils/error' import { Modal, Spin, Typography } from 'antd' diff --git a/src/renderer/src/pages/settings/MCPSettings/InstallNpxUv.tsx b/src/renderer/src/pages/settings/MCPSettings/InstallNpxUv.tsx index b213b982d6..b30ba5e7d7 100644 --- a/src/renderer/src/pages/settings/MCPSettings/InstallNpxUv.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/InstallNpxUv.tsx @@ -3,7 +3,8 @@ import { Center, VStack } from '@renderer/components/Layout' import { useAppDispatch, useAppSelector } from '@renderer/store' import { setIsBunInstalled, setIsUvInstalled } from '@renderer/store/mcp' import { Alert, Button } from 'antd' -import { FC, useCallback, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/MCPSettings/McpDescription.tsx b/src/renderer/src/pages/settings/MCPSettings/McpDescription.tsx index 82597b5446..99c186e3ec 100644 --- a/src/renderer/src/pages/settings/MCPSettings/McpDescription.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/McpDescription.tsx @@ -1,7 +1,8 @@ import { useCodeStyle } from '@renderer/context/CodeStyleProvider' import { Card } from 'antd' import { npxFinder } from 'npx-scope-finder' -import { FC, memo, useEffect, useState } from 'react' +import type { FC } from 'react' +import { memo, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/MCPSettings/McpMarketList.tsx b/src/renderer/src/pages/settings/MCPSettings/McpMarketList.tsx index 62fffd340e..274fa93686 100644 --- a/src/renderer/src/pages/settings/MCPSettings/McpMarketList.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/McpMarketList.tsx @@ -1,6 +1,6 @@ import ZhipuLogo from '@renderer/assets/images/providers/zhipu.png' import { ExternalLink } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/MCPSettings/McpPrompt.tsx b/src/renderer/src/pages/settings/MCPSettings/McpPrompt.tsx index bbf869d66a..0d5e6e2865 100644 --- a/src/renderer/src/pages/settings/MCPSettings/McpPrompt.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/McpPrompt.tsx @@ -1,4 +1,4 @@ -import { MCPPrompt } from '@renderer/types' +import type { MCPPrompt } from '@renderer/types' import { Collapse, Descriptions, Empty, Flex, Tooltip, Typography } from 'antd' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/MCPSettings/McpResource.tsx b/src/renderer/src/pages/settings/MCPSettings/McpResource.tsx index 80660c98a4..d97bffacbc 100644 --- a/src/renderer/src/pages/settings/MCPSettings/McpResource.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/McpResource.tsx @@ -1,4 +1,4 @@ -import { MCPResource } from '@renderer/types' +import type { MCPResource } from '@renderer/types' import { Collapse, Descriptions, Empty, Flex, Tag, Typography } from 'antd' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/MCPSettings/McpServerCard.tsx b/src/renderer/src/pages/settings/MCPSettings/McpServerCard.tsx index 518849d4f0..f7bc4fae2e 100644 --- a/src/renderer/src/pages/settings/MCPSettings/McpServerCard.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/McpServerCard.tsx @@ -3,12 +3,13 @@ import { DeleteIcon } from '@renderer/components/Icons' import GeneralPopup from '@renderer/components/Popups/GeneralPopup' import Scrollbar from '@renderer/components/Scrollbar' import { getMcpTypeLabel } from '@renderer/i18n/label' -import { MCPServer } from '@renderer/types' +import type { MCPServer } from '@renderer/types' import { formatErrorMessage } from '@renderer/utils/error' import { Alert, Button, Space, Switch, Tag, Tooltip, Typography } from 'antd' import { CircleXIcon, Settings2, SquareArrowOutUpRight } from 'lucide-react' -import { FC, useCallback } from 'react' -import { FallbackProps } from 'react-error-boundary' +import type { FC } from 'react' +import { useCallback } from 'react' +import type { FallbackProps } from 'react-error-boundary' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/MCPSettings/McpServersList.tsx b/src/renderer/src/pages/settings/MCPSettings/McpServersList.tsx index 67ae6231a8..c2b782d084 100644 --- a/src/renderer/src/pages/settings/MCPSettings/McpServersList.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/McpServersList.tsx @@ -5,12 +5,13 @@ import { Sortable, useDndReorder } from '@renderer/components/dnd' import { EditIcon, RefreshIcon } from '@renderer/components/Icons' import Scrollbar from '@renderer/components/Scrollbar' import { useMCPServers } from '@renderer/hooks/useMCPServers' -import { MCPServer } from '@renderer/types' +import type { MCPServer } from '@renderer/types' import { formatMcpError } from '@renderer/utils/error' import { matchKeywordsInString } from '@renderer/utils/match' import { Button, Dropdown, Empty } from 'antd' import { Plus } from 'lucide-react' -import { FC, startTransition, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import { startTransition, useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx b/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx index 70488d5b41..9d0edb0948 100644 --- a/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx @@ -4,9 +4,10 @@ import { DeleteIcon } from '@renderer/components/Icons' import { useTheme } from '@renderer/context/ThemeProvider' import { useMCPServer, useMCPServers } from '@renderer/hooks/useMCPServers' import MCPDescription from '@renderer/pages/settings/MCPSettings/McpDescription' -import { MCPPrompt, MCPResource, MCPServer, MCPTool } from '@renderer/types' +import type { MCPPrompt, MCPResource, MCPServer, MCPTool } from '@renderer/types' import { formatMcpError } from '@renderer/utils/error' -import { Badge, Button, Flex, Form, Input, Radio, Select, Switch, Tabs, TabsProps } from 'antd' +import type { TabsProps } from 'antd' +import { Badge, Button, Flex, Form, Input, Radio, Select, Switch, Tabs } from 'antd' import TextArea from 'antd/es/input/TextArea' import { ChevronDown, SaveIcon } from 'lucide-react' import React, { useCallback, useEffect, useState } from 'react' diff --git a/src/renderer/src/pages/settings/MCPSettings/McpTool.tsx b/src/renderer/src/pages/settings/MCPSettings/McpTool.tsx index d5d8a7b4c3..bfd9992dc4 100644 --- a/src/renderer/src/pages/settings/MCPSettings/McpTool.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/McpTool.tsx @@ -1,7 +1,7 @@ -import { MCPServer, MCPTool } from '@renderer/types' +import type { MCPServer, MCPTool } from '@renderer/types' import { isToolAutoApproved } from '@renderer/utils/mcp-tools' import { Badge, Descriptions, Empty, Flex, Switch, Table, Tag, Tooltip, Typography } from 'antd' -import { ColumnsType } from 'antd/es/table' +import type { ColumnsType } from 'antd/es/table' import { Hammer, Info, Zap } from 'lucide-react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx b/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx index e2279e977f..7db63a2419 100644 --- a/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/NpxSearch.tsx @@ -3,7 +3,7 @@ import { nanoid } from '@reduxjs/toolkit' import logo from '@renderer/assets/images/cherry-text-logo.svg' import { Center, HStack } from '@renderer/components/Layout' import { useMCPServers } from '@renderer/hooks/useMCPServers' -import { MCPServer } from '@renderer/types' +import type { MCPServer } from '@renderer/types' import { getMcpConfigSampleFromReadme } from '@renderer/utils' import { Button, Card, Flex, Input, Space, Spin, Tag, Typography } from 'antd' import { npxFinder } from 'npx-scope-finder' diff --git a/src/renderer/src/pages/settings/MCPSettings/index.tsx b/src/renderer/src/pages/settings/MCPSettings/index.tsx index a3e2a680c8..9fe0a1cc62 100644 --- a/src/renderer/src/pages/settings/MCPSettings/index.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/index.tsx @@ -2,7 +2,7 @@ import { ArrowLeftOutlined } from '@ant-design/icons' import { ErrorBoundary } from '@renderer/components/ErrorBoundary' import { useTheme } from '@renderer/context/ThemeProvider' import { Button } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { Route, Routes, useLocation } from 'react-router' import { Link } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx b/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx index b059174644..903d7708eb 100644 --- a/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx +++ b/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx @@ -6,11 +6,12 @@ import { TopView } from '@renderer/components/TopView' import { DEFAULT_CONTEXTCOUNT, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE } from '@renderer/config/constant' import { useTheme } from '@renderer/context/ThemeProvider' import { useDefaultAssistant } from '@renderer/hooks/useAssistant' -import { AssistantSettings as AssistantSettingsType } from '@renderer/types' +import type { AssistantSettings as AssistantSettingsType } from '@renderer/types' import { getLeadingEmoji, modalConfirm } from '@renderer/utils' import { Button, Col, Flex, Input, InputNumber, Modal, Popover, Row, Slider, Switch, Tooltip } from 'antd' import TextArea from 'antd/es/input/TextArea' -import { Dispatch, FC, SetStateAction, useState } from 'react' +import type { Dispatch, FC, SetStateAction } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx b/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx index 9f53c435d8..1da926916a 100644 --- a/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx +++ b/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx @@ -8,12 +8,13 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useDefaultModel } from '@renderer/hooks/useAssistant' import { useProviders } from '@renderer/hooks/useProvider' import { getModelUniqId, hasModel } from '@renderer/services/ModelService' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { TRANSLATE_PROMPT } from '@shared/config/prompts' import { Button, Tooltip } from 'antd' import { find } from 'lodash' import { Languages, MessageSquareMore, Rocket, Settings2 } from 'lucide-react' -import { FC, useCallback, useMemo } from 'react' +import type { FC } from 'react' +import { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import { SettingContainer, SettingDescription, SettingGroup, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/NotesSettings.tsx b/src/renderer/src/pages/settings/NotesSettings.tsx index 1a062145d0..1ccac26415 100644 --- a/src/renderer/src/pages/settings/NotesSettings.tsx +++ b/src/renderer/src/pages/settings/NotesSettings.tsx @@ -3,10 +3,11 @@ import Selector from '@renderer/components/Selector' import { useTheme } from '@renderer/context/ThemeProvider' import { useNotesSettings } from '@renderer/hooks/useNotesSettings' import { initWorkSpace } from '@renderer/services/NotesService' -import { EditorView } from '@renderer/types' +import type { EditorView } from '@renderer/types' import { Button, Input, message, Slider, Switch } from 'antd' import { FolderOpen } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ProviderSettings/AddProviderPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/AddProviderPopup.tsx index f02485c454..ef94d787a9 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/AddProviderPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/AddProviderPopup.tsx @@ -5,10 +5,10 @@ import ProviderLogoPicker from '@renderer/components/ProviderLogoPicker' import { TopView } from '@renderer/components/TopView' import { PROVIDER_LOGO_MAP } from '@renderer/config/providers' import ImageStorage from '@renderer/services/ImageStorage' -import { Provider, ProviderType } from '@renderer/types' +import type { Provider, ProviderType } from '@renderer/types' import { compressImage, generateColorFromChar, getForegroundColor } from '@renderer/utils' import { Divider, Dropdown, Form, Input, Modal, Popover, Select, Upload } from 'antd' -import { ItemType } from 'antd/es/menu/interface' +import type { ItemType } from 'antd/es/menu/interface' import React, { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx index ae2cb1dda0..8a47152a83 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx @@ -1,7 +1,7 @@ import { HStack } from '@renderer/components/Layout' import { InfoTooltip } from '@renderer/components/TooltipIcons' import { useProvider } from '@renderer/hooks/useProvider' -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import { Flex, Switch } from 'antd' import { startTransition, useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/ProviderSettings/AwsBedrockSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/AwsBedrockSettings.tsx index 1410ce067b..198765da9b 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/AwsBedrockSettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/AwsBedrockSettings.tsx @@ -2,7 +2,8 @@ import { HStack } from '@renderer/components/Layout' import { PROVIDER_URLS } from '@renderer/config/providers' import { useAwsBedrockSettings } from '@renderer/hooks/useAwsBedrock' import { Alert, Input } from 'antd' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingHelpLink, SettingHelpText, SettingHelpTextRow, SettingSubtitle } from '..' diff --git a/src/renderer/src/pages/settings/ProviderSettings/CustomHeaderPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/CustomHeaderPopup.tsx index 5058ee3483..8fe01ea776 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/CustomHeaderPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/CustomHeaderPopup.tsx @@ -4,7 +4,7 @@ import { TopView } from '@renderer/components/TopView' import { useCodeStyle } from '@renderer/context/CodeStyleProvider' import { useCopilot } from '@renderer/hooks/useCopilot' import { useProvider } from '@renderer/hooks/useProvider' -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import { Modal, Space } from 'antd' import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/ProviderSettings/DMXAPISettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/DMXAPISettings.tsx index c2d4e2f203..ffdaff8955 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/DMXAPISettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/DMXAPISettings.tsx @@ -2,8 +2,10 @@ import DmxapiLogo from '@renderer/assets/images/providers/dmxapi-logo.webp' import DmxapiLogoDark from '@renderer/assets/images/providers/dmxapi-logo-dark.webp' import { useTheme } from '@renderer/context/ThemeProvider' import { useProvider } from '@renderer/hooks/useProvider' -import { Radio, RadioChangeEvent, Space } from 'antd' -import { FC, useCallback, useState } from 'react' +import type { RadioChangeEvent } from 'antd' +import { Radio, Space } from 'antd' +import type { FC } from 'react' +import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/EditModelPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/EditModelPopup.tsx index bcef2b6e36..ee82e16ef0 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/EditModelPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/EditModelPopup.tsx @@ -4,7 +4,7 @@ import { useProvider } from '@renderer/hooks/useProvider' import ModelEditContent from '@renderer/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent' import { useAppDispatch } from '@renderer/store' import { setModel } from '@renderer/store/assistants' -import { Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' import React, { useCallback, useState } from 'react' interface ShowParams { diff --git a/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent.tsx b/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent.tsx index b09e44e43c..10fbe3594b 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent.tsx @@ -18,25 +18,14 @@ import { isWebSearchModel } from '@renderer/config/models' import { useDynamicLabelWidth } from '@renderer/hooks/useDynamicLabelWidth' -import { Model, ModelCapability, ModelType, Provider } from '@renderer/types' +import type { Model, ModelCapability, ModelType, Provider } from '@renderer/types' import { getDefaultGroupName, getDifference, getUnion, uniqueObjectArray } from '@renderer/utils' -import { - Button, - Divider, - Flex, - Form, - Input, - InputNumber, - message, - Modal, - ModalProps, - Select, - Switch, - Tooltip -} from 'antd' +import type { ModalProps } from 'antd' +import { Button, Divider, Flex, Form, Input, InputNumber, message, Modal, Select, Switch, Tooltip } from 'antd' import { cloneDeep } from 'lodash' import { ChevronDown, ChevronUp, RotateCcw, SaveIcon } from 'lucide-react' -import { FC, useCallback, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelTypeSelector.tsx b/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelTypeSelector.tsx index 1ee1832e04..b157c5373c 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelTypeSelector.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelTypeSelector.tsx @@ -1,7 +1,8 @@ -import { ModelCapability, ModelType } from '@renderer/types' +import type { ModelCapability, ModelType } from '@renderer/types' import { getDifference, uniqueObjectArray } from '@renderer/utils' import { Button, Checkbox, Flex } from 'antd' -import { FC, useRef, useState } from 'react' +import type { FC } from 'react' +import { useRef, useState } from 'react' import { useTranslation } from 'react-i18next' interface ModelTypeSelectorProps { diff --git a/src/renderer/src/pages/settings/ProviderSettings/GPUStackSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/GPUStackSettings.tsx index 5dc9ec74cd..5928537e06 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/GPUStackSettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/GPUStackSettings.tsx @@ -1,6 +1,7 @@ import { useGPUStackSettings } from '@renderer/hooks/useGPUStack' import { InputNumber } from 'antd' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ProviderSettings/GithubCopilotSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/GithubCopilotSettings.tsx index eab065e544..826bc1ea7f 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/GithubCopilotSettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/GithubCopilotSettings.tsx @@ -3,7 +3,8 @@ import { loggerService } from '@logger' import { useCopilot } from '@renderer/hooks/useCopilot' import { useProvider } from '@renderer/hooks/useProvider' import { Alert, Button, Input, Slider, Steps, Tooltip, Typography } from 'antd' -import { FC, useCallback, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ProviderSettings/LMStudioSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/LMStudioSettings.tsx index 020cb42ba3..821afa6158 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/LMStudioSettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/LMStudioSettings.tsx @@ -1,6 +1,7 @@ import { useLMStudioSettings } from '@renderer/hooks/useLMStudio' import { InputNumber } from 'antd' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/AddModelPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/AddModelPopup.tsx index 5a992074df..6fc79df479 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/AddModelPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/AddModelPopup.tsx @@ -1,9 +1,10 @@ import { TopView } from '@renderer/components/TopView' import { isNotSupportedTextDelta } from '@renderer/config/models' import { useProvider } from '@renderer/hooks/useProvider' -import { Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' import { getDefaultGroupName } from '@renderer/utils' -import { Button, Flex, Form, FormProps, Input, Modal } from 'antd' +import type { FormProps } from 'antd' +import { Button, Flex, Form, Input, Modal } from 'antd' import { find } from 'lodash' import { useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/HealthCheckPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/HealthCheckPopup.tsx index 4d36d14bed..9099561b08 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/HealthCheckPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/HealthCheckPopup.tsx @@ -1,6 +1,6 @@ import { Box } from '@renderer/components/Layout' import { TopView } from '@renderer/components/TopView' -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import { maskApiKey } from '@renderer/utils/api' import { Flex, InputNumber, Modal, Radio, Segmented, Typography } from 'antd' import { Alert } from 'antd' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsList.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsList.tsx index cd906a31c7..c47fd1a280 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsList.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsList.tsx @@ -5,7 +5,7 @@ import { DynamicVirtualList } from '@renderer/components/VirtualList' import { getModelLogo } from '@renderer/config/models' import FileItem from '@renderer/pages/files/FileItem' import NewApiBatchAddModelPopup from '@renderer/pages/settings/ProviderSettings/ModelList/NewApiBatchAddModelPopup' -import { Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' import { Button, Flex, Tooltip } from 'antd' import { Avatar } from 'antd' import { ChevronRight, Minus, Plus } from 'lucide-react' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsPopup.tsx index 036894dbee..160f830de3 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsPopup.tsx @@ -17,7 +17,7 @@ import { useProvider } from '@renderer/hooks/useProvider' import NewApiAddModelPopup from '@renderer/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup' import NewApiBatchAddModelPopup from '@renderer/pages/settings/ProviderSettings/ModelList/NewApiBatchAddModelPopup' import { fetchModels } from '@renderer/services/ApiService' -import { Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' import { filterModelsByKeywords, getDefaultGroupName, getFancyProviderName } from '@renderer/utils' import { isFreeModel } from '@renderer/utils/model' import { Button, Empty, Flex, Modal, Spin, Tabs, Tooltip } from 'antd' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelList.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelList.tsx index d0e1304a2b..58fb186b79 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelList.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelList.tsx @@ -10,7 +10,7 @@ import EditModelPopup from '@renderer/pages/settings/ProviderSettings/EditModelP import AddModelPopup from '@renderer/pages/settings/ProviderSettings/ModelList/AddModelPopup' import ManageModelsPopup from '@renderer/pages/settings/ProviderSettings/ModelList/ManageModelsPopup' import NewApiAddModelPopup from '@renderer/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { filterModelsByKeywords } from '@renderer/utils' import { Button, Flex, Spin, Tooltip } from 'antd' import { groupBy, isEmpty, sortBy, toPairs } from 'lodash' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListGroup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListGroup.tsx index e471aab64d..0185ef597d 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListGroup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListGroup.tsx @@ -1,7 +1,7 @@ import CustomCollapse from '@renderer/components/CustomCollapse' import { DynamicVirtualList, type DynamicVirtualListRef } from '@renderer/components/VirtualList' -import { Model } from '@renderer/types' -import { ModelWithStatus } from '@renderer/types/healthCheck' +import type { Model } from '@renderer/types' +import type { ModelWithStatus } from '@renderer/types/healthCheck' import { Button, Flex, Tooltip } from 'antd' import { Minus } from 'lucide-react' import React, { memo, useCallback, useRef } from 'react' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListItem.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListItem.tsx index 186f11d220..2fa68edf10 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListItem.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelListItem.tsx @@ -3,8 +3,8 @@ import { type HealthResult, HealthStatusIndicator } from '@renderer/components/H import { HStack } from '@renderer/components/Layout' import ModelIdWithTags from '@renderer/components/ModelIdWithTags' import { getModelLogo } from '@renderer/config/models' -import { Model } from '@renderer/types' -import { ModelWithStatus } from '@renderer/types/healthCheck' +import type { Model } from '@renderer/types' +import type { ModelWithStatus } from '@renderer/types/healthCheck' import { maskApiKey } from '@renderer/utils/api' import { Avatar, Button, Tooltip } from 'antd' import { Bolt, Minus } from 'lucide-react' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup.tsx index 4e81b39aa2..09971adc44 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup.tsx @@ -3,9 +3,10 @@ import { endpointTypeOptions } from '@renderer/config/endpointTypes' import { isNotSupportedTextDelta } from '@renderer/config/models' import { useDynamicLabelWidth } from '@renderer/hooks/useDynamicLabelWidth' import { useProvider } from '@renderer/hooks/useProvider' -import { EndpointType, Model, Provider } from '@renderer/types' +import type { EndpointType, Model, Provider } from '@renderer/types' import { getDefaultGroupName } from '@renderer/utils' -import { Button, Flex, Form, FormProps, Input, Modal, Select } from 'antd' +import type { FormProps } from 'antd' +import { Button, Flex, Form, Input, Modal, Select } from 'antd' import { find } from 'lodash' import { useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiBatchAddModelPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiBatchAddModelPopup.tsx index 40a4fb529c..73905197f6 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiBatchAddModelPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiBatchAddModelPopup.tsx @@ -3,8 +3,9 @@ import { endpointTypeOptions } from '@renderer/config/endpointTypes' import { isNotSupportedTextDelta } from '@renderer/config/models' import { useDynamicLabelWidth } from '@renderer/hooks/useDynamicLabelWidth' import { useProvider } from '@renderer/hooks/useProvider' -import { EndpointType, Model, Provider } from '@renderer/types' -import { Button, Flex, Form, FormProps, Modal, Select } from 'antd' +import type { EndpointType, Model, Provider } from '@renderer/types' +import type { FormProps } from 'antd' +import { Button, Flex, Form, Modal, Select } from 'antd' import { useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/useHealthCheck.ts b/src/renderer/src/pages/settings/ProviderSettings/ModelList/useHealthCheck.ts index ca73ad8311..61c08ba286 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/useHealthCheck.ts +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/useHealthCheck.ts @@ -1,7 +1,8 @@ import { isRerankModel } from '@renderer/config/models' import { checkModelsHealth } from '@renderer/services/HealthCheckService' -import { Model, Provider } from '@renderer/types' -import { HealthStatus, ModelWithStatus } from '@renderer/types/healthCheck' +import type { Model, Provider } from '@renderer/types' +import type { ModelWithStatus } from '@renderer/types/healthCheck' +import { HealthStatus } from '@renderer/types/healthCheck' import { splitApiKeyString } from '@renderer/utils/api' import { summarizeHealthResults } from '@renderer/utils/healthCheck' import { isEmpty } from 'lodash' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelList/utils.ts b/src/renderer/src/pages/settings/ProviderSettings/ModelList/utils.ts index 3ced576219..0b484fdedc 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/utils.ts +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/utils.ts @@ -1,4 +1,4 @@ -import { Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' // Check if the model exists in the provider's model list export const isModelInProvider = (provider: Provider, modelId: string): boolean => { diff --git a/src/renderer/src/pages/settings/ProviderSettings/ModelNotesPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelNotesPopup.tsx index 2635038539..dd0417612f 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelNotesPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelNotesPopup.tsx @@ -1,9 +1,10 @@ import MarkdownEditor from '@renderer/components/MarkdownEditor' import { TopView } from '@renderer/components/TopView' import { useProvider } from '@renderer/hooks/useProvider' -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' import { Modal } from 'antd' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx index d023f3d0d9..c57d8db93a 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx @@ -1,4 +1,4 @@ -import { DropResult } from '@hello-pangea/dnd' +import type { DropResult } from '@hello-pangea/dnd' import { loggerService } from '@logger' import { DraggableVirtualList, @@ -10,11 +10,14 @@ import { ProviderAvatar } from '@renderer/components/ProviderAvatar' import { useAllProviders, useProviders } from '@renderer/hooks/useProvider' import { useTimer } from '@renderer/hooks/useTimer' import ImageStorage from '@renderer/services/ImageStorage' -import { isSystemProvider, Provider, ProviderType } from '@renderer/types' +import type { Provider, ProviderType } from '@renderer/types' +import { isSystemProvider } from '@renderer/types' import { getFancyProviderName, matchKeywordsInModel, matchKeywordsInProvider, uuid } from '@renderer/utils' -import { Button, Dropdown, Input, MenuProps, Tag } from 'antd' +import type { MenuProps } from 'antd' +import { Button, Dropdown, Input, Tag } from 'antd' import { GripVertical, PlusIcon, Search, UserPen } from 'lucide-react' -import { FC, startTransition, useCallback, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { startTransition, useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { useSearchParams } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderOAuth.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderOAuth.tsx index 5315110dc2..eed5feaca8 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderOAuth.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderOAuth.tsx @@ -12,7 +12,7 @@ import { providerBills, providerCharge } from '@renderer/utils/oauth' import { Button } from 'antd' import { isEmpty } from 'lodash' import { CircleDollarSign, ReceiptText } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { Trans, useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx index 0bd7b152f4..9269e47d7b 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx @@ -15,14 +15,16 @@ import { isProviderSupportAuth } from '@renderer/services/ProviderService' import { useAppDispatch } from '@renderer/store' import { updateWebSearchProvider } from '@renderer/store/websearch' import { isSystemProvider } from '@renderer/types' -import { ApiKeyConnectivity, HealthStatus } from '@renderer/types/healthCheck' +import type { ApiKeyConnectivity } from '@renderer/types/healthCheck' +import { HealthStatus } from '@renderer/types/healthCheck' import { formatApiHost, formatApiKeys, getFancyProviderName, isOpenAIProvider } from '@renderer/utils' import { formatErrorMessage } from '@renderer/utils/error' import { Button, Divider, Flex, Input, Select, Space, Switch, Tooltip } from 'antd' import Link from 'antd/es/typography/Link' import { debounce, isEmpty } from 'lodash' import { Bolt, Check, Settings2, SquareArrowOutUpRight, TriangleAlert } from 'lucide-react' -import { FC, useCallback, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ProviderSettings/SelectProviderModelPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/SelectProviderModelPopup.tsx index 5811694882..299f689fc6 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/SelectProviderModelPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/SelectProviderModelPopup.tsx @@ -4,7 +4,7 @@ import { isRerankModel } from '@renderer/config/models' import { useTimer } from '@renderer/hooks/useTimer' import i18n from '@renderer/i18n' import { getModelUniqId } from '@renderer/services/ModelService' -import { Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' import { Modal } from 'antd' import { first } from 'lodash' import { useCallback, useMemo, useState } from 'react' diff --git a/src/renderer/src/pages/settings/ProviderSettings/UrlSchemaInfoPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/UrlSchemaInfoPopup.tsx index 77a06b222b..540e6bf7d4 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/UrlSchemaInfoPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/UrlSchemaInfoPopup.tsx @@ -1,6 +1,6 @@ import { TopView } from '@renderer/components/TopView' import { useAllProviders } from '@renderer/hooks/useProvider' -import { Provider, ProviderType } from '@renderer/types' +import type { Provider, ProviderType } from '@renderer/types' import { getFancyProviderName, maskApiKey } from '@renderer/utils' import { Button, Descriptions, Flex, Modal } from 'antd' import { Eye, EyeOff } from 'lucide-react' diff --git a/src/renderer/src/pages/settings/ProviderSettings/VertexAISettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/VertexAISettings.tsx index 3dc7ae36a1..593a51849f 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/VertexAISettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/VertexAISettings.tsx @@ -3,7 +3,8 @@ import { PROVIDER_URLS } from '@renderer/config/providers' import { useProvider } from '@renderer/hooks/useProvider' import { useVertexAISettings } from '@renderer/hooks/useVertexAI' import { Alert, Input, Space } from 'antd' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingHelpLink, SettingHelpText, SettingHelpTextRow, SettingSubtitle } from '..' diff --git a/src/renderer/src/pages/settings/QuickAssistantSettings.tsx b/src/renderer/src/pages/settings/QuickAssistantSettings.tsx index bb0fb0a166..d875fd7697 100644 --- a/src/renderer/src/pages/settings/QuickAssistantSettings.tsx +++ b/src/renderer/src/pages/settings/QuickAssistantSettings.tsx @@ -8,7 +8,7 @@ import { useAppDispatch, useAppSelector } from '@renderer/store' import { setQuickAssistantId } from '@renderer/store/llm' import HomeWindow from '@renderer/windows/mini/home/HomeWindow' import { Button, Select, Switch, Tooltip } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/QuickPhraseSettings.tsx b/src/renderer/src/pages/settings/QuickPhraseSettings.tsx index a8b395a2e2..72914260f3 100644 --- a/src/renderer/src/pages/settings/QuickPhraseSettings.tsx +++ b/src/renderer/src/pages/settings/QuickPhraseSettings.tsx @@ -4,10 +4,11 @@ import { DeleteIcon, EditIcon } from '@renderer/components/Icons' import { useTheme } from '@renderer/context/ThemeProvider' import FileItem from '@renderer/pages/files/FileItem' import QuickPhraseService from '@renderer/services/QuickPhraseService' -import { QuickPhrase } from '@renderer/types' +import type { QuickPhrase } from '@renderer/types' import { Button, Flex, Input, Modal, Popconfirm, Space } from 'antd' import { PlusIcon } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/SelectionAssistantSettings.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/SelectionAssistantSettings.tsx index 952975ac14..ce6ce7b9bc 100644 --- a/src/renderer/src/pages/settings/SelectionAssistantSettings/SelectionAssistantSettings.tsx +++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/SelectionAssistantSettings.tsx @@ -6,7 +6,8 @@ import SelectionToolbar from '@renderer/windows/selection/toolbar/SelectionToolb import type { SelectionFilterMode, SelectionTriggerMode } from '@shared/data/preference/preferenceTypes' import { Button, Radio, Row, Slider, Switch, Tooltip } from 'antd' import { CircleHelp, Edit2 } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { Link } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/MacProcessTrustHintModal.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/MacProcessTrustHintModal.tsx index 4c5f9fa60a..f07ffd1654 100644 --- a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/MacProcessTrustHintModal.tsx +++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/MacProcessTrustHintModal.tsx @@ -1,5 +1,5 @@ import { Button, Modal, Typography } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { Trans, useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionSearchModal.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionSearchModal.tsx index 8a5498eba6..eb0e623a48 100644 --- a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionSearchModal.tsx +++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionSearchModal.tsx @@ -2,7 +2,8 @@ import { loggerService } from '@logger' import type { SelectionActionItem } from '@shared/data/preference/preferenceTypes' import { Button, Form, Input, Modal, Select } from 'antd' import { Globe } from 'lucide-react' -import { FC, useEffect } from 'react' +import type { FC } from 'react' +import { useEffect } from 'react' import { useTranslation } from 'react-i18next' const logger = loggerService.withContext('SelectionActionSearchModal') diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionUserModal.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionUserModal.tsx index 4c92713837..a2216c44e4 100644 --- a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionUserModal.tsx +++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionUserModal.tsx @@ -6,7 +6,8 @@ import type { SelectionActionItem } from '@shared/data/preference/preferenceType import { Col, Input, Modal, Radio, Row, Select, Space, Tooltip } from 'antd' import { CircleHelp, Dices, OctagonX } from 'lucide-react' import { DynamicIcon, iconNames } from 'lucide-react/dynamic' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionsList.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionsList.tsx index dc69028a81..5e3e68333c 100644 --- a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionsList.tsx +++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionActionsList.tsx @@ -4,7 +4,7 @@ import SelectionToolbar from '@renderer/windows/selection/toolbar/SelectionToolb import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas' import type { SelectionActionItem } from '@shared/data/preference/preferenceTypes' import { Row } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import styled from 'styled-components' import { SettingDivider, SettingGroup } from '../..' diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionFilterListModal.tsx b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionFilterListModal.tsx index ce267e5ab1..ccab63b8dc 100644 --- a/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionFilterListModal.tsx +++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionFilterListModal.tsx @@ -1,6 +1,7 @@ import { isWin } from '@renderer/config/constant' import { Button, Form, Input, Modal } from 'antd' -import { FC, useEffect } from 'react' +import type { FC } from 'react' +import { useEffect } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/SelectionAssistantSettings/hooks/useSettingsActionsList.ts b/src/renderer/src/pages/settings/SelectionAssistantSettings/hooks/useSettingsActionsList.ts index 9cc970e2e8..392bc22ee1 100644 --- a/src/renderer/src/pages/settings/SelectionAssistantSettings/hooks/useSettingsActionsList.ts +++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/hooks/useSettingsActionsList.ts @@ -1,4 +1,4 @@ -import { DropResult } from '@hello-pangea/dnd' +import type { DropResult } from '@hello-pangea/dnd' import { loggerService } from '@logger' import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas' import type { SelectionActionItem } from '@shared/data/preference/preferenceTypes' diff --git a/src/renderer/src/pages/settings/SettingGroup.tsx b/src/renderer/src/pages/settings/SettingGroup.tsx index e07277a062..e80024a7b6 100644 --- a/src/renderer/src/pages/settings/SettingGroup.tsx +++ b/src/renderer/src/pages/settings/SettingGroup.tsx @@ -1,4 +1,4 @@ -import { ThemeMode } from '@shared/data/preference/preferenceTypes' +import type { ThemeMode } from '@shared/data/preference/preferenceTypes' import { ChevronDown, ChevronRight } from 'lucide-react' import { AnimatePresence, motion } from 'motion/react' import { useState } from 'react' diff --git a/src/renderer/src/pages/settings/SettingsPage.tsx b/src/renderer/src/pages/settings/SettingsPage.tsx index ca83e149f0..a14e10973d 100644 --- a/src/renderer/src/pages/settings/SettingsPage.tsx +++ b/src/renderer/src/pages/settings/SettingsPage.tsx @@ -20,7 +20,7 @@ import { TextCursorInput, Zap } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { Link, Route, Routes, useLocation } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ShortcutSettings.tsx b/src/renderer/src/pages/settings/ShortcutSettings.tsx index 834f5e283a..72bb3c376c 100644 --- a/src/renderer/src/pages/settings/ShortcutSettings.tsx +++ b/src/renderer/src/pages/settings/ShortcutSettings.tsx @@ -7,10 +7,12 @@ import { useTimer } from '@renderer/hooks/useTimer' import { getShortcutLabel } from '@renderer/i18n/label' import { useAppDispatch } from '@renderer/store' import { initialState, resetShortcuts, toggleShortcut, updateShortcut } from '@renderer/store/shortcuts' -import { Shortcut } from '@renderer/types' -import { Button, Input, InputRef, Switch, Table as AntTable, Tooltip } from 'antd' +import type { Shortcut } from '@renderer/types' +import type { InputRef } from 'antd' +import { Button, Input, Switch, Table as AntTable, Tooltip } from 'antd' import type { ColumnsType } from 'antd/es/table' -import React, { FC, useRef, useState } from 'react' +import type { FC } from 'react' +import React, { useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/ToolSettings/ApiServerSettings/ApiServerSettings.tsx b/src/renderer/src/pages/settings/ToolSettings/ApiServerSettings/ApiServerSettings.tsx index c949370ed4..8b7e46d9eb 100644 --- a/src/renderer/src/pages/settings/ToolSettings/ApiServerSettings/ApiServerSettings.tsx +++ b/src/renderer/src/pages/settings/ToolSettings/ApiServerSettings/ApiServerSettings.tsx @@ -1,13 +1,15 @@ // TODO: Refactor this component to use HeroUI import { useTheme } from '@renderer/context/ThemeProvider' import { loggerService } from '@renderer/services/LoggerService' -import { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch } from '@renderer/store' import { setApiServerApiKey, setApiServerEnabled, setApiServerPort } from '@renderer/store/settings' import { formatErrorMessage } from '@renderer/utils/error' import { IpcChannel } from '@shared/IpcChannel' import { Button, Input, InputNumber, Tooltip, Typography } from 'antd' import { Copy, ExternalLink, Play, RotateCcw, Square } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageModal.tsx b/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageModal.tsx index 1a1965c10e..3d298c43a9 100644 --- a/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageModal.tsx +++ b/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageModal.tsx @@ -3,9 +3,10 @@ import EmojiPicker from '@renderer/components/EmojiPicker' import { InfoTooltip } from '@renderer/components/TooltipIcons' import useTranslate from '@renderer/hooks/useTranslate' import { addCustomLanguage, updateCustomLanguage } from '@renderer/services/TranslateService' -import { CustomTranslateLanguage } from '@renderer/types' +import type { CustomTranslateLanguage } from '@renderer/types' import { Button, Form, Input, Modal, Popover, Space } from 'antd' -import { FC, useCallback, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' type Props = { diff --git a/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageSettings.tsx b/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageSettings.tsx index abe34eabf0..d898c09f9b 100644 --- a/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageSettings.tsx +++ b/src/renderer/src/pages/settings/TranslateSettingsPopup/CustomLanguageSettings.tsx @@ -2,8 +2,9 @@ import { DeleteOutlined, EditOutlined, PlusOutlined } from '@ant-design/icons' import { loggerService } from '@logger' import { HStack } from '@renderer/components/Layout' import { deleteCustomLanguage, getAllCustomLanguages } from '@renderer/services/TranslateService' -import { CustomTranslateLanguage } from '@renderer/types' -import { Button, Popconfirm, Space, Table, TableProps } from 'antd' +import type { CustomTranslateLanguage } from '@renderer/types' +import type { TableProps } from 'antd' +import { Button, Popconfirm, Space, Table } from 'antd' import { memo, startTransition, useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/WebSearchSettings/AddSubscribePopup.tsx b/src/renderer/src/pages/settings/WebSearchSettings/AddSubscribePopup.tsx index 4d975e825d..7aee235887 100644 --- a/src/renderer/src/pages/settings/WebSearchSettings/AddSubscribePopup.tsx +++ b/src/renderer/src/pages/settings/WebSearchSettings/AddSubscribePopup.tsx @@ -1,5 +1,6 @@ import { TopView } from '@renderer/components/TopView' -import { Button, Flex, Form, FormProps, Input, Modal } from 'antd' +import type { FormProps } from 'antd' +import { Button, Flex, Form, Input, Modal } from 'antd' import { useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/WebSearchSettings/BasicSettings.tsx b/src/renderer/src/pages/settings/WebSearchSettings/BasicSettings.tsx index 2f301ac957..95c0749126 100644 --- a/src/renderer/src/pages/settings/WebSearchSettings/BasicSettings.tsx +++ b/src/renderer/src/pages/settings/WebSearchSettings/BasicSettings.tsx @@ -5,7 +5,7 @@ import { setMaxResult, setSearchWithTime } from '@renderer/store/websearch' import { Slider, Switch, Tooltip } from 'antd' import { t } from 'i18next' import { Info } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { SettingDivider, SettingGroup, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/WebSearchSettings/BlacklistSettings.tsx b/src/renderer/src/pages/settings/WebSearchSettings/BlacklistSettings.tsx index 8486a62f42..b3304b03d1 100644 --- a/src/renderer/src/pages/settings/WebSearchSettings/BlacklistSettings.tsx +++ b/src/renderer/src/pages/settings/WebSearchSettings/BlacklistSettings.tsx @@ -6,10 +6,12 @@ import { useBlacklist } from '@renderer/hooks/useWebSearchProviders' import { useAppDispatch, useAppSelector } from '@renderer/store' import { setExcludeDomains } from '@renderer/store/websearch' import { parseMatchPattern, parseSubscribeContent } from '@renderer/utils/blacklistMatchPattern' -import { Alert, Button, Table, TableProps } from 'antd' +import type { TableProps } from 'antd' +import { Alert, Button, Table } from 'antd' import TextArea from 'antd/es/input/TextArea' import { t } from 'i18next' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { SettingDivider, SettingGroup, SettingRow, SettingRowTitle, SettingTitle } from '..' import AddSubscribePopup from './AddSubscribePopup' diff --git a/src/renderer/src/pages/settings/WebSearchSettings/CompressionSettings/RagSettings.tsx b/src/renderer/src/pages/settings/WebSearchSettings/CompressionSettings/RagSettings.tsx index 325915f21d..ece17ebac1 100644 --- a/src/renderer/src/pages/settings/WebSearchSettings/CompressionSettings/RagSettings.tsx +++ b/src/renderer/src/pages/settings/WebSearchSettings/CompressionSettings/RagSettings.tsx @@ -7,7 +7,7 @@ import { useProviders } from '@renderer/hooks/useProvider' import { useWebSearchSettings } from '@renderer/hooks/useWebSearchProviders' import { SettingDivider, SettingRow, SettingRowTitle } from '@renderer/pages/settings' import { getModelUniqId } from '@renderer/services/ModelService' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { Slider, Tooltip } from 'antd' import { find } from 'lodash' import { Info } from 'lucide-react' diff --git a/src/renderer/src/pages/settings/WebSearchSettings/WebSearchProviderSetting.tsx b/src/renderer/src/pages/settings/WebSearchSettings/WebSearchProviderSetting.tsx index cb0f3fc8c0..438fc053d1 100644 --- a/src/renderer/src/pages/settings/WebSearchSettings/WebSearchProviderSetting.tsx +++ b/src/renderer/src/pages/settings/WebSearchSettings/WebSearchProviderSetting.tsx @@ -11,12 +11,13 @@ import { WEB_SEARCH_PROVIDER_CONFIG } from '@renderer/config/webSearchProviders' import { useTimer } from '@renderer/hooks/useTimer' import { useWebSearchProvider } from '@renderer/hooks/useWebSearchProviders' import WebSearchService from '@renderer/services/WebSearchService' -import { WebSearchProviderId } from '@renderer/types' +import type { WebSearchProviderId } from '@renderer/types' import { formatApiKeys, hasObjectKey } from '@renderer/utils' import { Button, Divider, Flex, Form, Input, Space, Tooltip } from 'antd' import Link from 'antd/es/typography/Link' import { Info, List } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/WebSearchSettings/index.tsx b/src/renderer/src/pages/settings/WebSearchSettings/index.tsx index 1469008875..7867cb57e0 100644 --- a/src/renderer/src/pages/settings/WebSearchSettings/index.tsx +++ b/src/renderer/src/pages/settings/WebSearchSettings/index.tsx @@ -1,9 +1,10 @@ import Selector from '@renderer/components/Selector' import { useTheme } from '@renderer/context/ThemeProvider' import { useDefaultWebSearchProvider, useWebSearchProviders } from '@renderer/hooks/useWebSearchProviders' -import { WebSearchProvider } from '@renderer/types' +import type { WebSearchProvider } from '@renderer/types' import { hasObjectKey } from '@renderer/utils' -import { FC, useState } from 'react' +import type { FC } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingContainer, SettingDivider, SettingGroup, SettingRow, SettingRowTitle, SettingTitle } from '..' diff --git a/src/renderer/src/pages/settings/index.tsx b/src/renderer/src/pages/settings/index.tsx index 0e91a8dcc7..ef3446bd85 100644 --- a/src/renderer/src/pages/settings/index.tsx +++ b/src/renderer/src/pages/settings/index.tsx @@ -1,7 +1,8 @@ -import { ThemeMode } from '@shared/data/preference/preferenceTypes' +import type { ThemeMode } from '@shared/data/preference/preferenceTypes' import { Divider } from 'antd' import Link from 'antd/es/typography/Link' -import styled, { CSSProp } from 'styled-components' +import type { CSSProp } from 'styled-components' +import styled from 'styled-components' export const SettingContainer = styled.div<{ theme?: ThemeMode }>` display: flex; diff --git a/src/renderer/src/pages/translate/TranslateHistory.tsx b/src/renderer/src/pages/translate/TranslateHistory.tsx index e9a79200a5..df5b48d495 100644 --- a/src/renderer/src/pages/translate/TranslateHistory.tsx +++ b/src/renderer/src/pages/translate/TranslateHistory.tsx @@ -4,13 +4,14 @@ import { DynamicVirtualList } from '@renderer/components/VirtualList' import db from '@renderer/databases' import useTranslate from '@renderer/hooks/useTranslate' import { clearHistory, deleteHistory, updateTranslateHistory } from '@renderer/services/TranslateService' -import { TranslateHistory, TranslateLanguage } from '@renderer/types' +import type { TranslateHistory, TranslateLanguage } from '@renderer/types' import { Button, Drawer, Empty, Flex, Input, Popconfirm } from 'antd' import dayjs from 'dayjs' import { useLiveQuery } from 'dexie-react-hooks' import { isEmpty } from 'lodash' import { SearchIcon } from 'lucide-react' -import { FC, useCallback, useDeferredValue, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useDeferredValue, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/translate/TranslatePage.tsx b/src/renderer/src/pages/translate/TranslatePage.tsx index 09ff38c631..51ab491b91 100644 --- a/src/renderer/src/pages/translate/TranslatePage.tsx +++ b/src/renderer/src/pages/translate/TranslatePage.tsx @@ -20,12 +20,11 @@ import { saveTranslateHistory, translateText } from '@renderer/services/Translat import { useAppDispatch, useAppSelector } from '@renderer/store' // import { setTranslateAbortKey, setTranslating as setTranslatingAction } from '@renderer/store/runtime' import { setTranslatedContent as setTranslatedContentAction, setTranslateInput } from '@renderer/store/translate' +import type { FileMetadata, SupportedOcrFile } from '@renderer/types' import { type AutoDetectionMethod, - FileMetadata, isSupportedOcrFile, type Model, - SupportedOcrFile, type TranslateHistory, type TranslateLanguage } from '@renderer/types' @@ -42,10 +41,12 @@ import { } from '@renderer/utils/translate' import { imageExts, MB, textExts } from '@shared/config/constant' import { Button, Flex, FloatButton, Popover, Tooltip, Typography } from 'antd' -import TextArea, { TextAreaRef } from 'antd/es/input/TextArea' +import type { TextAreaRef } from 'antd/es/input/TextArea' +import TextArea from 'antd/es/input/TextArea' import { isEmpty, throttle } from 'lodash' import { Check, CirclePause, FolderClock, Settings2, UploadIcon } from 'lucide-react' -import { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/translate/TranslateSettings.tsx b/src/renderer/src/pages/translate/TranslateSettings.tsx index fd149e0d4b..54bdd1961e 100644 --- a/src/renderer/src/pages/translate/TranslateSettings.tsx +++ b/src/renderer/src/pages/translate/TranslateSettings.tsx @@ -3,10 +3,11 @@ import LanguageSelect from '@renderer/components/LanguageSelect' import { HStack } from '@renderer/components/Layout' import db from '@renderer/databases' import useTranslate from '@renderer/hooks/useTranslate' -import { AutoDetectionMethod, Model, TranslateLanguage } from '@renderer/types' +import type { AutoDetectionMethod, Model, TranslateLanguage } from '@renderer/types' import { Button, Flex, Modal, Radio, Space, Tooltip } from 'antd' import { HelpCircle } from 'lucide-react' -import { FC, memo, useEffect, useState } from 'react' +import type { FC } from 'react' +import { memo, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import TranslateSettingsPopup from '../settings/TranslateSettingsPopup/TranslateSettingsPopup' diff --git a/src/renderer/src/providers/WebSearchProvider/BaseWebSearchProvider.ts b/src/renderer/src/providers/WebSearchProvider/BaseWebSearchProvider.ts index 558a328b5e..b3047dc7e1 100644 --- a/src/renderer/src/providers/WebSearchProvider/BaseWebSearchProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/BaseWebSearchProvider.ts @@ -1,5 +1,5 @@ -import { WebSearchState } from '@renderer/store/websearch' -import { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' +import type { WebSearchState } from '@renderer/store/websearch' +import type { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' export default abstract class BaseWebSearchProvider { // @ts-ignore this diff --git a/src/renderer/src/providers/WebSearchProvider/BochaProvider.ts b/src/renderer/src/providers/WebSearchProvider/BochaProvider.ts index 81d85df5d3..af2313b1cc 100644 --- a/src/renderer/src/providers/WebSearchProvider/BochaProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/BochaProvider.ts @@ -1,7 +1,7 @@ import { loggerService } from '@logger' -import { WebSearchState } from '@renderer/store/websearch' -import { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' -import { BochaSearchParams, BochaSearchResponse } from '@renderer/utils/bocha' +import type { WebSearchState } from '@renderer/store/websearch' +import type { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' +import type { BochaSearchParams, BochaSearchResponse } from '@renderer/utils/bocha' import BaseWebSearchProvider from './BaseWebSearchProvider' diff --git a/src/renderer/src/providers/WebSearchProvider/DefaultProvider.ts b/src/renderer/src/providers/WebSearchProvider/DefaultProvider.ts index 25d2d46a43..abc5a8bbf2 100644 --- a/src/renderer/src/providers/WebSearchProvider/DefaultProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/DefaultProvider.ts @@ -1,4 +1,4 @@ -import { WebSearchProviderResponse } from '@renderer/types' +import type { WebSearchProviderResponse } from '@renderer/types' import BaseWebSearchProvider from './BaseWebSearchProvider' diff --git a/src/renderer/src/providers/WebSearchProvider/ExaProvider.ts b/src/renderer/src/providers/WebSearchProvider/ExaProvider.ts index a01ba93543..4759d4df96 100644 --- a/src/renderer/src/providers/WebSearchProvider/ExaProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/ExaProvider.ts @@ -1,7 +1,7 @@ import { ExaClient } from '@agentic/exa' import { loggerService } from '@logger' -import { WebSearchState } from '@renderer/store/websearch' -import { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' +import type { WebSearchState } from '@renderer/store/websearch' +import type { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' import BaseWebSearchProvider from './BaseWebSearchProvider' diff --git a/src/renderer/src/providers/WebSearchProvider/LocalBaiduProvider.ts b/src/renderer/src/providers/WebSearchProvider/LocalBaiduProvider.ts index 47972e080e..614873f48e 100644 --- a/src/renderer/src/providers/WebSearchProvider/LocalBaiduProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/LocalBaiduProvider.ts @@ -1,6 +1,7 @@ import { loggerService } from '@logger' -import LocalSearchProvider, { SearchItem } from './LocalSearchProvider' +import type { SearchItem } from './LocalSearchProvider' +import LocalSearchProvider from './LocalSearchProvider' const logger = loggerService.withContext('LocalBaiduProvider') diff --git a/src/renderer/src/providers/WebSearchProvider/LocalBingProvider.ts b/src/renderer/src/providers/WebSearchProvider/LocalBingProvider.ts index 7ed498b16d..d068bfc361 100644 --- a/src/renderer/src/providers/WebSearchProvider/LocalBingProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/LocalBingProvider.ts @@ -1,6 +1,7 @@ import { loggerService } from '@logger' -import LocalSearchProvider, { SearchItem } from './LocalSearchProvider' +import type { SearchItem } from './LocalSearchProvider' +import LocalSearchProvider from './LocalSearchProvider' const logger = loggerService.withContext('LocalBingProvider') diff --git a/src/renderer/src/providers/WebSearchProvider/LocalGoogleProvider.ts b/src/renderer/src/providers/WebSearchProvider/LocalGoogleProvider.ts index 834f116556..29f4018f23 100644 --- a/src/renderer/src/providers/WebSearchProvider/LocalGoogleProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/LocalGoogleProvider.ts @@ -1,6 +1,7 @@ import { loggerService } from '@logger' -import LocalSearchProvider, { SearchItem } from './LocalSearchProvider' +import type { SearchItem } from './LocalSearchProvider' +import LocalSearchProvider from './LocalSearchProvider' const logger = loggerService.withContext('LocalGoogleProvider') diff --git a/src/renderer/src/providers/WebSearchProvider/LocalSearchProvider.ts b/src/renderer/src/providers/WebSearchProvider/LocalSearchProvider.ts index b43025f4ee..d748a86bb4 100644 --- a/src/renderer/src/providers/WebSearchProvider/LocalSearchProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/LocalSearchProvider.ts @@ -1,8 +1,8 @@ import { preferenceService } from '@data/PreferenceService' import { loggerService } from '@logger' import { nanoid } from '@reduxjs/toolkit' -import { WebSearchState } from '@renderer/store/websearch' -import { WebSearchProvider, WebSearchProviderResponse, WebSearchProviderResult } from '@renderer/types' +import type { WebSearchState } from '@renderer/store/websearch' +import type { WebSearchProvider, WebSearchProviderResponse, WebSearchProviderResult } from '@renderer/types' import { createAbortPromise } from '@renderer/utils/abortController' import { isAbortError } from '@renderer/utils/error' import { fetchWebContent, noContent } from '@renderer/utils/fetch' diff --git a/src/renderer/src/providers/WebSearchProvider/SearxngProvider.ts b/src/renderer/src/providers/WebSearchProvider/SearxngProvider.ts index cf3a75f84b..89fc03892f 100644 --- a/src/renderer/src/providers/WebSearchProvider/SearxngProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/SearxngProvider.ts @@ -1,7 +1,7 @@ import { SearxngClient } from '@agentic/searxng' import { loggerService } from '@logger' -import { WebSearchState } from '@renderer/store/websearch' -import { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' +import type { WebSearchState } from '@renderer/store/websearch' +import type { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' import { fetchWebContent, noContent } from '@renderer/utils/fetch' import axios from 'axios' import ky from 'ky' diff --git a/src/renderer/src/providers/WebSearchProvider/TavilyProvider.ts b/src/renderer/src/providers/WebSearchProvider/TavilyProvider.ts index 3ca9b0676d..40a5ce04ad 100644 --- a/src/renderer/src/providers/WebSearchProvider/TavilyProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/TavilyProvider.ts @@ -1,7 +1,7 @@ import { TavilyClient } from '@agentic/tavily' import { loggerService } from '@logger' -import { WebSearchState } from '@renderer/store/websearch' -import { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' +import type { WebSearchState } from '@renderer/store/websearch' +import type { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' import BaseWebSearchProvider from './BaseWebSearchProvider' diff --git a/src/renderer/src/providers/WebSearchProvider/WebSearchProviderFactory.ts b/src/renderer/src/providers/WebSearchProvider/WebSearchProviderFactory.ts index b389a98deb..0b961c23d8 100644 --- a/src/renderer/src/providers/WebSearchProvider/WebSearchProviderFactory.ts +++ b/src/renderer/src/providers/WebSearchProvider/WebSearchProviderFactory.ts @@ -1,6 +1,6 @@ -import { WebSearchProvider } from '@renderer/types' +import type { WebSearchProvider } from '@renderer/types' -import BaseWebSearchProvider from './BaseWebSearchProvider' +import type BaseWebSearchProvider from './BaseWebSearchProvider' import BochaProvider from './BochaProvider' import DefaultProvider from './DefaultProvider' import ExaProvider from './ExaProvider' diff --git a/src/renderer/src/providers/WebSearchProvider/ZhipuProvider.ts b/src/renderer/src/providers/WebSearchProvider/ZhipuProvider.ts index e7c95fb1ce..f434477f34 100644 --- a/src/renderer/src/providers/WebSearchProvider/ZhipuProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/ZhipuProvider.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' -import { WebSearchState } from '@renderer/store/websearch' -import { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' +import type { WebSearchState } from '@renderer/store/websearch' +import type { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' import BaseWebSearchProvider from './BaseWebSearchProvider' diff --git a/src/renderer/src/providers/WebSearchProvider/index.ts b/src/renderer/src/providers/WebSearchProvider/index.ts index e1fe8f185c..b5212bd803 100644 --- a/src/renderer/src/providers/WebSearchProvider/index.ts +++ b/src/renderer/src/providers/WebSearchProvider/index.ts @@ -1,9 +1,9 @@ import { withSpanResult } from '@renderer/services/SpanManagerService' import type { WebSearchState } from '@renderer/store/websearch' -import { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' +import type { WebSearchProvider, WebSearchProviderResponse } from '@renderer/types' import { filterResultWithBlacklist } from '@renderer/utils/blacklistMatchPattern' -import BaseWebSearchProvider from './BaseWebSearchProvider' +import type BaseWebSearchProvider from './BaseWebSearchProvider' import WebSearchProviderFactory from './WebSearchProviderFactory' export default class WebSearchEngineProvider { diff --git a/src/renderer/src/queue/KnowledgeQueue.ts b/src/renderer/src/queue/KnowledgeQueue.ts index f1c7c9fbf6..c9e0186149 100644 --- a/src/renderer/src/queue/KnowledgeQueue.ts +++ b/src/renderer/src/queue/KnowledgeQueue.ts @@ -10,7 +10,7 @@ import { updateBaseItemUniqueId, updateItemProcessingStatus } from '@renderer/store/knowledge' -import { KnowledgeItem } from '@renderer/types' +import type { KnowledgeItem } from '@renderer/types' import { uuid } from '@renderer/utils' import type { LoaderReturn } from '@shared/config/types' import { t } from 'i18next' diff --git a/src/renderer/src/services/ApiService.ts b/src/renderer/src/services/ApiService.ts index d39d2a6e42..266425803a 100644 --- a/src/renderer/src/services/ApiService.ts +++ b/src/renderer/src/services/ApiService.ts @@ -4,18 +4,18 @@ import { preferenceService } from '@data/PreferenceService' import { loggerService } from '@logger' import AiProvider from '@renderer/aiCore' -import { CompletionsParams } from '@renderer/aiCore/legacy/middleware/schemas' -import { AiSdkMiddlewareConfig } from '@renderer/aiCore/middleware/AiSdkMiddlewareBuilder' +import type { CompletionsParams } from '@renderer/aiCore/legacy/middleware/schemas' +import type { AiSdkMiddlewareConfig } from '@renderer/aiCore/middleware/AiSdkMiddlewareBuilder' import { buildStreamTextParams } from '@renderer/aiCore/prepareParams' import { isDedicatedImageGenerationModel, isEmbeddingModel } from '@renderer/config/models' import i18n from '@renderer/i18n' import store from '@renderer/store' import type { FetchChatCompletionParams } from '@renderer/types' -import { Assistant, MCPServer, MCPTool, Model, Provider } from '@renderer/types' +import type { Assistant, MCPServer, MCPTool, Model, Provider } from '@renderer/types' import type { StreamTextParams } from '@renderer/types/aiCoreTypes' import { type Chunk, ChunkType } from '@renderer/types/chunk' -import { Message } from '@renderer/types/newMessage' -import { SdkModel } from '@renderer/types/sdk' +import type { Message } from '@renderer/types/newMessage' +import type { SdkModel } from '@renderer/types/sdk' import { removeSpecialCharactersForTopicName, uuid } from '@renderer/utils' import { abortCompletion, readyToAbort } from '@renderer/utils/abortController' import { isAbortError } from '@renderer/utils/error' @@ -25,7 +25,8 @@ import { findFileBlocks, getMainTextContent } from '@renderer/utils/messageUtils import { containsSupportedVariables, replacePromptVariables } from '@renderer/utils/prompt' import { isEmpty, takeRight } from 'lodash' -import AiProviderNew, { ModernAiProviderConfig } from '../aiCore/index_new' +import type { ModernAiProviderConfig } from '../aiCore/index_new' +import AiProviderNew from '../aiCore/index_new' import { // getAssistantProvider, // getAssistantSettings, diff --git a/src/renderer/src/services/BackupService.ts b/src/renderer/src/services/BackupService.ts index b88b546e42..c0dca5489c 100644 --- a/src/renderer/src/services/BackupService.ts +++ b/src/renderer/src/services/BackupService.ts @@ -8,7 +8,7 @@ import { upgradeToV7, upgradeToV8 } from '@renderer/databases/upgrades' import i18n from '@renderer/i18n' import store from '@renderer/store' import { setLocalBackupSyncState, setS3SyncState, setWebDAVSyncState } from '@renderer/store/backup' -import { S3Config, WebDavConfig } from '@renderer/types' +import type { S3Config, WebDavConfig } from '@renderer/types' import { uuid } from '@renderer/utils' import dayjs from 'dayjs' diff --git a/src/renderer/src/services/ConversationService.ts b/src/renderer/src/services/ConversationService.ts index a7f3fab13c..f9e3f4dea5 100644 --- a/src/renderer/src/services/ConversationService.ts +++ b/src/renderer/src/services/ConversationService.ts @@ -1,7 +1,7 @@ import { convertMessagesToSdkMessages } from '@renderer/aiCore/prepareParams' -import { Assistant, Message } from '@renderer/types' +import type { Assistant, Message } from '@renderer/types' import { filterAdjacentUserMessaegs, filterLastAssistantMessage } from '@renderer/utils/messageUtils/filters' -import { ModelMessage } from 'ai' +import type { ModelMessage } from 'ai' import { findLast, isEmpty, takeRight } from 'lodash' import { getAssistantSettings, getDefaultModel } from './AssistantService' diff --git a/src/renderer/src/services/FileAction.ts b/src/renderer/src/services/FileAction.ts index 8f54e8969c..149ea2f2a8 100644 --- a/src/renderer/src/services/FileAction.ts +++ b/src/renderer/src/services/FileAction.ts @@ -3,8 +3,8 @@ import TextEditPopup from '@renderer/components/Popups/TextEditPopup' import db from '@renderer/databases' import FileManager from '@renderer/services/FileManager' import store from '@renderer/store' -import { FileType } from '@renderer/types' -import { Message } from '@renderer/types/newMessage' +import type { FileType } from '@renderer/types' +import type { Message } from '@renderer/types/newMessage' import dayjs from 'dayjs' // 排序相关 diff --git a/src/renderer/src/services/FileManager.ts b/src/renderer/src/services/FileManager.ts index 83c5352e5a..e8b0bade7f 100644 --- a/src/renderer/src/services/FileManager.ts +++ b/src/renderer/src/services/FileManager.ts @@ -2,7 +2,7 @@ import { cacheService } from '@data/CacheService' import { loggerService } from '@logger' import db from '@renderer/databases' import i18n from '@renderer/i18n' -import { FileMetadata } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' import { getFileDirectory } from '@renderer/utils' import dayjs from 'dayjs' diff --git a/src/renderer/src/services/HealthCheckService.ts b/src/renderer/src/services/HealthCheckService.ts index 02c3217dcc..df814653f8 100644 --- a/src/renderer/src/services/HealthCheckService.ts +++ b/src/renderer/src/services/HealthCheckService.ts @@ -1,6 +1,7 @@ import { loggerService } from '@logger' -import { Model, Provider } from '@renderer/types' -import { ApiKeyWithStatus, HealthStatus, ModelCheckOptions, ModelWithStatus } from '@renderer/types/healthCheck' +import type { Model, Provider } from '@renderer/types' +import type { ApiKeyWithStatus, ModelCheckOptions, ModelWithStatus } from '@renderer/types/healthCheck' +import { HealthStatus } from '@renderer/types/healthCheck' import { formatErrorMessage } from '@renderer/utils/error' import { aggregateApiKeyResults } from '@renderer/utils/healthCheck' diff --git a/src/renderer/src/services/KnowledgeService.ts b/src/renderer/src/services/KnowledgeService.ts index 55724047ac..bff94a79ea 100644 --- a/src/renderer/src/services/KnowledgeService.ts +++ b/src/renderer/src/services/KnowledgeService.ts @@ -1,19 +1,20 @@ import { loggerService } from '@logger' -import { Span } from '@opentelemetry/api' +import type { Span } from '@opentelemetry/api' import AiProvider from '@renderer/aiCore' import { DEFAULT_KNOWLEDGE_DOCUMENT_COUNT, DEFAULT_KNOWLEDGE_THRESHOLD } from '@renderer/config/constant' import { getEmbeddingMaxContext } from '@renderer/config/embedings' import { addSpan, endSpan } from '@renderer/services/SpanManagerService' import store from '@renderer/store' -import { +import type { FileMetadata, KnowledgeBase, KnowledgeBaseParams, KnowledgeReference, KnowledgeSearchResult } from '@renderer/types' -import { Chunk, ChunkType } from '@renderer/types/chunk' -import { ExtractResults } from '@renderer/utils/extract' +import type { Chunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' +import type { ExtractResults } from '@renderer/utils/extract' import { isEmpty } from 'lodash' import { getProviderByModel } from './AssistantService' diff --git a/src/renderer/src/services/MemoryProcessor.ts b/src/renderer/src/services/MemoryProcessor.ts index 28656e54ed..01ba5eeb77 100644 --- a/src/renderer/src/services/MemoryProcessor.ts +++ b/src/renderer/src/services/MemoryProcessor.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' import { getModel } from '@renderer/hooks/useModel' -import { AssistantMessage } from '@renderer/types' +import type { AssistantMessage } from '@renderer/types' import { FactRetrievalSchema, getFactRetrievalMessages, @@ -8,7 +8,7 @@ import { MemoryUpdateSchema, updateMemorySystemPrompt } from '@renderer/utils/memory-prompts' -import { MemoryConfig, MemoryItem } from '@types' +import type { MemoryConfig, MemoryItem } from '@types' import jaison from 'jaison/lib/index.js' import { fetchGenerate } from './ApiService' diff --git a/src/renderer/src/services/MemoryService.ts b/src/renderer/src/services/MemoryService.ts index 4307060aa6..8f572194df 100644 --- a/src/renderer/src/services/MemoryService.ts +++ b/src/renderer/src/services/MemoryService.ts @@ -1,7 +1,7 @@ import { loggerService } from '@logger' import store from '@renderer/store' import { selectMemoryConfig } from '@renderer/store/memory' -import { +import type { AddMemoryOptions, AssistantMessage, MemoryHistoryItem, diff --git a/src/renderer/src/services/MessagesService.ts b/src/renderer/src/services/MessagesService.ts index a3abf8ab4c..19ae0906e5 100644 --- a/src/renderer/src/services/MessagesService.ts +++ b/src/renderer/src/services/MessagesService.ts @@ -25,7 +25,7 @@ import { filterContextMessages } from '@renderer/utils/messageUtils/filters' import { getMainTextContent } from '@renderer/utils/messageUtils/find' import dayjs from 'dayjs' import { t } from 'i18next' -import { NavigateFunction } from 'react-router' +import type { NavigateFunction } from 'react-router' import { getAssistantById, getAssistantProvider, getDefaultModel } from './AssistantService' import { EVENT_NAMES, EventEmitter } from './EventService' diff --git a/src/renderer/src/services/ModelMessageService.ts b/src/renderer/src/services/ModelMessageService.ts index 40609fa39c..c67bd356e9 100644 --- a/src/renderer/src/services/ModelMessageService.ts +++ b/src/renderer/src/services/ModelMessageService.ts @@ -1,6 +1,6 @@ -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { findLast } from 'lodash' -import { ChatCompletionContentPart, ChatCompletionMessageParam } from 'openai/resources' +import type { ChatCompletionContentPart, ChatCompletionMessageParam } from 'openai/resources' export function processReqMessages( model: Model, diff --git a/src/renderer/src/services/ModelService.ts b/src/renderer/src/services/ModelService.ts index 52049f2293..728086c9fe 100644 --- a/src/renderer/src/services/ModelService.ts +++ b/src/renderer/src/services/ModelService.ts @@ -1,5 +1,5 @@ import store from '@renderer/store' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { pick } from 'lodash' import { getProviderName } from './ProviderService' diff --git a/src/renderer/src/services/NavigationService.ts b/src/renderer/src/services/NavigationService.ts index dc678825f4..3c4ae54abe 100644 --- a/src/renderer/src/services/NavigationService.ts +++ b/src/renderer/src/services/NavigationService.ts @@ -1,4 +1,4 @@ -import { NavigateFunction } from 'react-router-dom' +import type { NavigateFunction } from 'react-router-dom' interface INavigationService { navigate: NavigateFunction | null diff --git a/src/renderer/src/services/NotesService.ts b/src/renderer/src/services/NotesService.ts index 45383344d4..b931192268 100644 --- a/src/renderer/src/services/NotesService.ts +++ b/src/renderer/src/services/NotesService.ts @@ -10,7 +10,7 @@ import { removeNodeFromTree, renameNodeFromTree } from '@renderer/services/NotesTreeService' -import { NotesSortType, NotesTreeNode } from '@renderer/types/note' +import type { NotesSortType, NotesTreeNode } from '@renderer/types/note' import { getFileDirectory } from '@renderer/utils' import { v4 as uuidv4 } from 'uuid' diff --git a/src/renderer/src/services/NotesTreeService.ts b/src/renderer/src/services/NotesTreeService.ts index 4159948323..e7b4506cd3 100644 --- a/src/renderer/src/services/NotesTreeService.ts +++ b/src/renderer/src/services/NotesTreeService.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' import db from '@renderer/databases' -import { NotesTreeNode } from '@renderer/types/note' +import type { NotesTreeNode } from '@renderer/types/note' const MARKDOWN_EXT = '.md' const NOTES_TREE_ID = 'notes-tree-structure' diff --git a/src/renderer/src/services/NutstoreService.ts b/src/renderer/src/services/NutstoreService.ts index 17dee74708..4d314d2e23 100644 --- a/src/renderer/src/services/NutstoreService.ts +++ b/src/renderer/src/services/NutstoreService.ts @@ -2,7 +2,7 @@ import { loggerService } from '@logger' import i18n from '@renderer/i18n' import store from '@renderer/store' import { setNutstoreSyncState } from '@renderer/store/nutstore' -import { WebDavConfig } from '@renderer/types' +import type { WebDavConfig } from '@renderer/types' import { NUTSTORE_HOST } from '@shared/config/nutstore' import dayjs from 'dayjs' import { type CreateDirectoryOptions } from 'webdav' diff --git a/src/renderer/src/services/OrchestrateService.ts b/src/renderer/src/services/OrchestrateService.ts index eef206d14e..1f365b39b6 100644 --- a/src/renderer/src/services/OrchestrateService.ts +++ b/src/renderer/src/services/OrchestrateService.ts @@ -1,5 +1,6 @@ -import { Assistant, Message } from '@renderer/types' -import { Chunk, ChunkType } from '@renderer/types/chunk' +import type { Assistant, Message } from '@renderer/types' +import type { Chunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import { replacePromptVariables } from '@renderer/utils/prompt' import { fetchChatCompletion } from './ApiService' diff --git a/src/renderer/src/services/PasteService.ts b/src/renderer/src/services/PasteService.ts index 25767dacd0..d12a736489 100644 --- a/src/renderer/src/services/PasteService.ts +++ b/src/renderer/src/services/PasteService.ts @@ -1,5 +1,5 @@ import { loggerService } from '@logger' -import { FileMetadata } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' import { getFileExtension, isSupportedFile } from '@renderer/utils' const logger = loggerService.withContext('PasteService') diff --git a/src/renderer/src/services/ProviderService.ts b/src/renderer/src/services/ProviderService.ts index 7a6409c903..c7a16be0bf 100644 --- a/src/renderer/src/services/ProviderService.ts +++ b/src/renderer/src/services/ProviderService.ts @@ -1,5 +1,5 @@ import store from '@renderer/store' -import { Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' import { getFancyProviderName } from '@renderer/utils' export function getProviderName(model?: Model) { diff --git a/src/renderer/src/services/QuickPhraseService.ts b/src/renderer/src/services/QuickPhraseService.ts index 31a0637272..b1e4c4fe43 100644 --- a/src/renderer/src/services/QuickPhraseService.ts +++ b/src/renderer/src/services/QuickPhraseService.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' import db from '@renderer/databases' -import { QuickPhrase } from '@renderer/types' +import type { QuickPhrase } from '@renderer/types' import { v4 as uuidv4 } from 'uuid' const logger = loggerService.withContext('QuickPhraseService') diff --git a/src/renderer/src/services/ShikiStreamService.ts b/src/renderer/src/services/ShikiStreamService.ts index 1a2c6e6335..4aacac1dd0 100644 --- a/src/renderer/src/services/ShikiStreamService.ts +++ b/src/renderer/src/services/ShikiStreamService.ts @@ -9,7 +9,8 @@ import { import { LRUCache } from 'lru-cache' import type { HighlighterGeneric, ThemedToken } from 'shiki/core' -import { ShikiStreamTokenizer, ShikiStreamTokenizerOptions } from './ShikiStreamTokenizer' +import type { ShikiStreamTokenizerOptions } from './ShikiStreamTokenizer' +import { ShikiStreamTokenizer } from './ShikiStreamTokenizer' const logger = loggerService.withContext('ShikiStreamService') diff --git a/src/renderer/src/services/SpanManagerService.ts b/src/renderer/src/services/SpanManagerService.ts index e446e92dbd..ba968ce6d6 100644 --- a/src/renderer/src/services/SpanManagerService.ts +++ b/src/renderer/src/services/SpanManagerService.ts @@ -1,9 +1,10 @@ import { MessageStream } from '@anthropic-ai/sdk/resources/messages/messages' import { preferenceService } from '@data/PreferenceService' import { loggerService } from '@logger' -import { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' +import type { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' import { cleanContext, endContext, getContext, startContext } from '@mcp-trace/trace-web' -import { Context, context, Span, SpanStatusCode, trace } from '@opentelemetry/api' +import type { Context, Span } from '@opentelemetry/api' +import { context, SpanStatusCode, trace } from '@opentelemetry/api' import { isAsyncIterable } from '@renderer/aiCore/legacy/middleware/utils' import { db } from '@renderer/databases' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' @@ -11,11 +12,12 @@ import { handleAsyncIterable } from '@renderer/trace/dataHandler/AsyncIterableHa import { handleResult } from '@renderer/trace/dataHandler/CommonResultHandler' import { handleMessageStream } from '@renderer/trace/dataHandler/MessageStreamHandler' import { handleStream } from '@renderer/trace/dataHandler/StreamHandler' -import { EndSpanParams, ModelSpanEntity, StartSpanParams } from '@renderer/trace/types/ModelSpanEntity' -import { Model, Topic } from '@renderer/types' +import type { EndSpanParams, StartSpanParams } from '@renderer/trace/types/ModelSpanEntity' +import { ModelSpanEntity } from '@renderer/trace/types/ModelSpanEntity' +import type { Model, Topic } from '@renderer/types' import type { Message } from '@renderer/types/newMessage' import { MessageBlockType } from '@renderer/types/newMessage' -import { SdkRawChunk } from '@renderer/types/sdk' +import type { SdkRawChunk } from '@renderer/types/sdk' import { Stream } from 'openai/streaming' const logger = loggerService.withContext('SpanManagerService') diff --git a/src/renderer/src/services/StoreSyncService.ts b/src/renderer/src/services/StoreSyncService.ts index 30def3a97a..e25b92bc49 100644 --- a/src/renderer/src/services/StoreSyncService.ts +++ b/src/renderer/src/services/StoreSyncService.ts @@ -1,5 +1,5 @@ import { loggerService } from '@logger' -import { Middleware } from '@reduxjs/toolkit' +import type { Middleware } from '@reduxjs/toolkit' import { IpcChannel } from '@shared/IpcChannel' import type { StoreSyncAction } from '@types' diff --git a/src/renderer/src/services/TabsService.ts b/src/renderer/src/services/TabsService.ts index a05220f1a3..a0c22c488b 100644 --- a/src/renderer/src/services/TabsService.ts +++ b/src/renderer/src/services/TabsService.ts @@ -1,9 +1,9 @@ import { loggerService } from '@logger' import store from '@renderer/store' import { removeTab, setActiveTab } from '@renderer/store/tabs' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' import { clearWebviewState } from '@renderer/utils/webviewStateManager' -import { LRUCache } from 'lru-cache' +import type { LRUCache } from 'lru-cache' import NavigationService from './NavigationService' diff --git a/src/renderer/src/services/TokenService.ts b/src/renderer/src/services/TokenService.ts index bb5a64621c..3dd6410234 100644 --- a/src/renderer/src/services/TokenService.ts +++ b/src/renderer/src/services/TokenService.ts @@ -1,4 +1,5 @@ -import { Assistant, FileMetadata, FileTypes, Usage } from '@renderer/types' +import type { Assistant, FileMetadata, Usage } from '@renderer/types' +import { FileTypes } from '@renderer/types' import type { Message } from '@renderer/types/newMessage' import { findFileBlocks, getMainTextContent, getThinkingContent } from '@renderer/utils/messageUtils/find' import { flatten, takeRight } from 'lodash' diff --git a/src/renderer/src/services/TranslateService.ts b/src/renderer/src/services/TranslateService.ts index d5d25458ac..fd6ee0e68c 100644 --- a/src/renderer/src/services/TranslateService.ts +++ b/src/renderer/src/services/TranslateService.ts @@ -1,13 +1,14 @@ import { loggerService } from '@logger' import { db } from '@renderer/databases' -import { +import type { CustomTranslateLanguage, FetchChatCompletionOptions, TranslateHistory, TranslateLanguage, TranslateLanguageCode } from '@renderer/types' -import { Chunk, ChunkType } from '@renderer/types/chunk' +import type { Chunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import { uuid } from '@renderer/utils' import { readyToAbort } from '@renderer/utils/abortController' import { isAbortError } from '@renderer/utils/error' diff --git a/src/renderer/src/services/WebSearchService.ts b/src/renderer/src/services/WebSearchService.ts index b8ce2b91d3..43e0b7719e 100644 --- a/src/renderer/src/services/WebSearchService.ts +++ b/src/renderer/src/services/WebSearchService.ts @@ -5,8 +5,8 @@ import i18n from '@renderer/i18n' import WebSearchEngineProvider from '@renderer/providers/WebSearchProvider' import { addSpan, endSpan } from '@renderer/services/SpanManagerService' import store from '@renderer/store' -import { CompressionConfig, WebSearchState } from '@renderer/store/websearch' -import { +import type { CompressionConfig, WebSearchState } from '@renderer/store/websearch' +import type { KnowledgeBase, KnowledgeItem, KnowledgeReference, @@ -18,7 +18,7 @@ import { import { hasObjectKey, uuid } from '@renderer/utils' import { addAbortController } from '@renderer/utils/abortController' import { formatErrorMessage } from '@renderer/utils/error' -import { ExtractResults } from '@renderer/utils/extract' +import type { ExtractResults } from '@renderer/utils/extract' import { fetchWebContents } from '@renderer/utils/fetch' import { consolidateReferencesByUrl, selectReferences } from '@renderer/utils/websearch' import dayjs from 'dayjs' diff --git a/src/renderer/src/services/WebTraceService.ts b/src/renderer/src/services/WebTraceService.ts index 119da16d05..2a40772c2f 100644 --- a/src/renderer/src/services/WebTraceService.ts +++ b/src/renderer/src/services/WebTraceService.ts @@ -2,7 +2,7 @@ import { loggerService } from '@logger' import { convertSpanToSpanEntity, FunctionSpanExporter, FunctionSpanProcessor } from '@mcp-trace/trace-core' import { WebTracer } from '@mcp-trace/trace-web' import { trace } from '@opentelemetry/api' -import { ReadableSpan } from '@opentelemetry/sdk-trace-base' +import type { ReadableSpan } from '@opentelemetry/sdk-trace-base' const logger = loggerService.withContext('WebTraceService') diff --git a/src/renderer/src/services/__tests__/ApiService.test.ts b/src/renderer/src/services/__tests__/ApiService.test.ts index cd89ae0930..6ad7fc2f1a 100644 --- a/src/renderer/src/services/__tests__/ApiService.test.ts +++ b/src/renderer/src/services/__tests__/ApiService.test.ts @@ -1,33 +1,34 @@ -import { ToolUseBlock } from '@anthropic-ai/sdk/resources' -import { +import type { ToolUseBlock } from '@anthropic-ai/sdk/resources' +import type { TextBlock, TextDelta, Usage, WebSearchResultBlock, WebSearchToolResultError } from '@anthropic-ai/sdk/resources/messages' +import type { FunctionCall } from '@google/genai' import { FinishReason, MediaModality } from '@google/genai' -import { FunctionCall } from '@google/genai' import AiProvider from '@renderer/aiCore' -import { BaseApiClient, OpenAIAPIClient, ResponseChunkTransformerContext } from '@renderer/aiCore/legacy/clients' -import { AnthropicAPIClient } from '@renderer/aiCore/legacy/clients/anthropic/AnthropicAPIClient' +import type { BaseApiClient, OpenAIAPIClient, ResponseChunkTransformerContext } from '@renderer/aiCore/legacy/clients' +import type { AnthropicAPIClient } from '@renderer/aiCore/legacy/clients/anthropic/AnthropicAPIClient' import { ApiClientFactory } from '@renderer/aiCore/legacy/clients/ApiClientFactory' -import { GeminiAPIClient } from '@renderer/aiCore/legacy/clients/gemini/GeminiAPIClient' -import { OpenAIResponseAPIClient } from '@renderer/aiCore/legacy/clients/openai/OpenAIResponseAPIClient' -import { GenericChunk } from '@renderer/aiCore/legacy/middleware/schemas' +import type { GeminiAPIClient } from '@renderer/aiCore/legacy/clients/gemini/GeminiAPIClient' +import type { OpenAIResponseAPIClient } from '@renderer/aiCore/legacy/clients/openai/OpenAIResponseAPIClient' +import type { GenericChunk } from '@renderer/aiCore/legacy/middleware/schemas' import { isVisionModel } from '@renderer/config/models' -import { LlmState } from '@renderer/store/llm' -import { Assistant, MCPCallToolResponse, MCPToolResponse, Model, Provider, WebSearchSource } from '@renderer/types' -import { +import type { LlmState } from '@renderer/store/llm' +import type { Assistant, MCPCallToolResponse, MCPToolResponse, Model, Provider } from '@renderer/types' +import { WebSearchSource } from '@renderer/types' +import type { Chunk, - ChunkType, LLMResponseCompleteChunk, LLMWebSearchCompleteChunk, TextDeltaChunk, TextStartChunk, ThinkingStartChunk } from '@renderer/types/chunk' -import { +import { ChunkType } from '@renderer/types/chunk' +import type { AnthropicSdkRawChunk, GeminiSdkMessageParam, GeminiSdkRawChunk, @@ -38,8 +39,8 @@ import { import { mcpToolCallResponseToGeminiMessage } from '@renderer/utils/mcp-tools' import * as McpToolsModule from '@renderer/utils/mcp-tools' import { cloneDeep } from 'lodash' -import OpenAI from 'openai' -import { ChatCompletionChunk } from 'openai/resources' +import type OpenAI from 'openai' +import type { ChatCompletionChunk } from 'openai/resources' import { beforeEach, describe, expect, it, vi } from 'vitest' // Mock the ApiClientFactory vi.mock('@renderer/aiCore/legacy/clients/ApiClientFactory', () => ({ diff --git a/src/renderer/src/services/__tests__/ModelMessageService.test.ts b/src/renderer/src/services/__tests__/ModelMessageService.test.ts index 0527e0c3cb..161e63aa75 100644 --- a/src/renderer/src/services/__tests__/ModelMessageService.test.ts +++ b/src/renderer/src/services/__tests__/ModelMessageService.test.ts @@ -1,5 +1,5 @@ import type { Model } from '@renderer/types' -import { ChatCompletionMessageParam } from 'openai/resources' +import type { ChatCompletionMessageParam } from 'openai/resources' import { describe, expect, it } from 'vitest' import { processReqMessages } from '../ModelMessageService' diff --git a/src/renderer/src/services/__tests__/ShikiStreamTokenizer.test.ts b/src/renderer/src/services/__tests__/ShikiStreamTokenizer.test.ts index cb74ff4eaf..a87f1a80fd 100644 --- a/src/renderer/src/services/__tests__/ShikiStreamTokenizer.test.ts +++ b/src/renderer/src/services/__tests__/ShikiStreamTokenizer.test.ts @@ -1,4 +1,5 @@ -import { createHighlighter, HighlighterCore } from 'shiki' +import type { HighlighterCore } from 'shiki' +import { createHighlighter } from 'shiki' import { afterEach, beforeEach, describe, expect, it } from 'vitest' import { ShikiStreamTokenizer } from '../ShikiStreamTokenizer' diff --git a/src/renderer/src/services/__tests__/helpers/ShikiStreamTokenizer.helper.ts b/src/renderer/src/services/__tests__/helpers/ShikiStreamTokenizer.helper.ts index ab32c015d2..d9a6c5be9a 100644 --- a/src/renderer/src/services/__tests__/helpers/ShikiStreamTokenizer.helper.ts +++ b/src/renderer/src/services/__tests__/helpers/ShikiStreamTokenizer.helper.ts @@ -1,5 +1,6 @@ -import { ShikiStreamTokenizer } from '@renderer/services/ShikiStreamTokenizer' -import { getTokenStyleObject, HighlighterCore, stringifyTokenStyle, type ThemedToken } from 'shiki/core' +import type { ShikiStreamTokenizer } from '@renderer/services/ShikiStreamTokenizer' +import type { HighlighterCore } from 'shiki/core' +import { getTokenStyleObject, stringifyTokenStyle, type ThemedToken } from 'shiki/core' /** * 使用 ShikiStreamTokenizer 获取流式高亮代码 diff --git a/src/renderer/src/services/messageStreaming/BlockManager.ts b/src/renderer/src/services/messageStreaming/BlockManager.ts index fb0d65913a..62dad360b1 100644 --- a/src/renderer/src/services/messageStreaming/BlockManager.ts +++ b/src/renderer/src/services/messageStreaming/BlockManager.ts @@ -2,7 +2,8 @@ import { loggerService } from '@logger' import type { AppDispatch, RootState } from '@renderer/store' import { updateOneBlock, upsertOneBlock } from '@renderer/store/messageBlock' import { newMessagesActions } from '@renderer/store/newMessage' -import { MessageBlock, MessageBlockType } from '@renderer/types/newMessage' +import type { MessageBlock } from '@renderer/types/newMessage' +import { MessageBlockType } from '@renderer/types/newMessage' const logger = loggerService.withContext('BlockManager') diff --git a/src/renderer/src/services/messageStreaming/callbacks/baseCallbacks.ts b/src/renderer/src/services/messageStreaming/callbacks/baseCallbacks.ts index e7d7f005f7..b38539acde 100644 --- a/src/renderer/src/services/messageStreaming/callbacks/baseCallbacks.ts +++ b/src/renderer/src/services/messageStreaming/callbacks/baseCallbacks.ts @@ -7,21 +7,17 @@ import { estimateMessagesUsage } from '@renderer/services/TokenService' import { selectMessagesForTopic } from '@renderer/store/newMessage' import { newMessagesActions } from '@renderer/store/newMessage' import type { Assistant } from '@renderer/types' -import type { Response } from '@renderer/types/newMessage' -import { - AssistantMessageStatus, - MessageBlockStatus, - MessageBlockType, - PlaceholderMessageBlock -} from '@renderer/types/newMessage' +import type { PlaceholderMessageBlock, Response } from '@renderer/types/newMessage' +import { AssistantMessageStatus, MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' import { uuid } from '@renderer/utils' import { isAbortError, serializeError } from '@renderer/utils/error' import { createBaseMessageBlock, createErrorBlock } from '@renderer/utils/messageUtils/create' import { findAllBlocks, getMainTextContent } from '@renderer/utils/messageUtils/find' import { isFocused, isOnHomePage } from '@renderer/utils/window' -import { AISDKError, NoOutputGeneratedError } from 'ai' +import type { AISDKError } from 'ai' +import { NoOutputGeneratedError } from 'ai' -import { BlockManager } from '../BlockManager' +import type { BlockManager } from '../BlockManager' const logger = loggerService.withContext('BaseCallbacks') interface BaseCallbacksDependencies { diff --git a/src/renderer/src/services/messageStreaming/callbacks/citationCallbacks.ts b/src/renderer/src/services/messageStreaming/callbacks/citationCallbacks.ts index 56d0680839..9e99fe7520 100644 --- a/src/renderer/src/services/messageStreaming/callbacks/citationCallbacks.ts +++ b/src/renderer/src/services/messageStreaming/callbacks/citationCallbacks.ts @@ -1,10 +1,11 @@ import { loggerService } from '@logger' import type { ExternalToolResult } from '@renderer/types' -import { CitationMessageBlock, MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' +import type { CitationMessageBlock } from '@renderer/types/newMessage' +import { MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' import { createCitationBlock } from '@renderer/utils/messageUtils/create' import { findMainTextBlocks } from '@renderer/utils/messageUtils/find' -import { BlockManager } from '../BlockManager' +import type { BlockManager } from '../BlockManager' const logger = loggerService.withContext('CitationCallbacks') diff --git a/src/renderer/src/services/messageStreaming/callbacks/imageCallbacks.ts b/src/renderer/src/services/messageStreaming/callbacks/imageCallbacks.ts index ca5c0060be..00624bc43e 100644 --- a/src/renderer/src/services/messageStreaming/callbacks/imageCallbacks.ts +++ b/src/renderer/src/services/messageStreaming/callbacks/imageCallbacks.ts @@ -1,8 +1,9 @@ import { loggerService } from '@logger' -import { ImageMessageBlock, MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' +import type { ImageMessageBlock } from '@renderer/types/newMessage' +import { MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' import { createImageBlock } from '@renderer/utils/messageUtils/create' -import { BlockManager } from '../BlockManager' +import type { BlockManager } from '../BlockManager' const logger = loggerService.withContext('ImageCallbacks') diff --git a/src/renderer/src/services/messageStreaming/callbacks/index.ts b/src/renderer/src/services/messageStreaming/callbacks/index.ts index 18647745ee..4dc48b8738 100644 --- a/src/renderer/src/services/messageStreaming/callbacks/index.ts +++ b/src/renderer/src/services/messageStreaming/callbacks/index.ts @@ -1,6 +1,6 @@ import type { Assistant } from '@renderer/types' -import { BlockManager } from '../BlockManager' +import type { BlockManager } from '../BlockManager' import { createBaseCallbacks } from './baseCallbacks' import { createCitationCallbacks } from './citationCallbacks' import { createImageCallbacks } from './imageCallbacks' diff --git a/src/renderer/src/services/messageStreaming/callbacks/textCallbacks.ts b/src/renderer/src/services/messageStreaming/callbacks/textCallbacks.ts index 3756c88c82..9d479796e4 100644 --- a/src/renderer/src/services/messageStreaming/callbacks/textCallbacks.ts +++ b/src/renderer/src/services/messageStreaming/callbacks/textCallbacks.ts @@ -1,9 +1,10 @@ import { loggerService } from '@logger' import { WebSearchSource } from '@renderer/types' -import { CitationMessageBlock, MessageBlock, MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' +import type { CitationMessageBlock, MessageBlock } from '@renderer/types/newMessage' +import { MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' import { createMainTextBlock } from '@renderer/utils/messageUtils/create' -import { BlockManager } from '../BlockManager' +import type { BlockManager } from '../BlockManager' const logger = loggerService.withContext('TextCallbacks') diff --git a/src/renderer/src/services/messageStreaming/callbacks/thinkingCallbacks.ts b/src/renderer/src/services/messageStreaming/callbacks/thinkingCallbacks.ts index 80c63858c7..23809e6dae 100644 --- a/src/renderer/src/services/messageStreaming/callbacks/thinkingCallbacks.ts +++ b/src/renderer/src/services/messageStreaming/callbacks/thinkingCallbacks.ts @@ -1,8 +1,9 @@ import { loggerService } from '@logger' -import { MessageBlock, MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' +import type { MessageBlock } from '@renderer/types/newMessage' +import { MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' import { createThinkingBlock } from '@renderer/utils/messageUtils/create' -import { BlockManager } from '../BlockManager' +import type { BlockManager } from '../BlockManager' const logger = loggerService.withContext('ThinkingCallbacks') interface ThinkingCallbacksDependencies { diff --git a/src/renderer/src/services/messageStreaming/callbacks/toolCallbacks.ts b/src/renderer/src/services/messageStreaming/callbacks/toolCallbacks.ts index ef65a4962a..ce64ea90a6 100644 --- a/src/renderer/src/services/messageStreaming/callbacks/toolCallbacks.ts +++ b/src/renderer/src/services/messageStreaming/callbacks/toolCallbacks.ts @@ -1,10 +1,11 @@ import { loggerService } from '@logger' import type { MCPToolResponse } from '@renderer/types' import { WebSearchSource } from '@renderer/types' -import { MessageBlockStatus, MessageBlockType, ToolMessageBlock } from '@renderer/types/newMessage' +import type { ToolMessageBlock } from '@renderer/types/newMessage' +import { MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' import { createCitationBlock, createToolBlock } from '@renderer/utils/messageUtils/create' -import { BlockManager } from '../BlockManager' +import type { BlockManager } from '../BlockManager' const logger = loggerService.withContext('ToolCallbacks') diff --git a/src/renderer/src/services/messageStreaming/callbacks/videoCallbacks.ts b/src/renderer/src/services/messageStreaming/callbacks/videoCallbacks.ts index 88bde439b8..65fd201f5f 100644 --- a/src/renderer/src/services/messageStreaming/callbacks/videoCallbacks.ts +++ b/src/renderer/src/services/messageStreaming/callbacks/videoCallbacks.ts @@ -2,7 +2,7 @@ import { loggerService } from '@logger' import { MessageBlockStatus, MessageBlockType } from '@renderer/types/newMessage' import { createVideoBlock } from '@renderer/utils/messageUtils/create' -import { BlockManager } from '../BlockManager' +import type { BlockManager } from '../BlockManager' const logger = loggerService.withContext('VideoCallbacks') diff --git a/src/renderer/src/services/ocr/OcrService.ts b/src/renderer/src/services/ocr/OcrService.ts index 74fcc0c64d..ba4122fa16 100644 --- a/src/renderer/src/services/ocr/OcrService.ts +++ b/src/renderer/src/services/ocr/OcrService.ts @@ -1,5 +1,6 @@ import { loggerService } from '@logger' -import { isOcrApiProvider, OcrProvider, OcrResult, SupportedOcrFile } from '@renderer/types' +import type { OcrProvider, OcrResult, SupportedOcrFile } from '@renderer/types' +import { isOcrApiProvider } from '@renderer/types' import { OcrApiClientFactory } from './clients/OcrApiClientFactory' diff --git a/src/renderer/src/services/ocr/clients/OcrApiClientFactory.ts b/src/renderer/src/services/ocr/clients/OcrApiClientFactory.ts index e685c0e3f9..1685d1764b 100644 --- a/src/renderer/src/services/ocr/clients/OcrApiClientFactory.ts +++ b/src/renderer/src/services/ocr/clients/OcrApiClientFactory.ts @@ -1,7 +1,7 @@ import { loggerService } from '@logger' -import { OcrApiProvider } from '@renderer/types' +import type { OcrApiProvider } from '@renderer/types' -import { OcrBaseApiClient } from './OcrBaseApiClient' +import type { OcrBaseApiClient } from './OcrBaseApiClient' import { OcrExampleApiClient } from './OcrExampleApiClient' const logger = loggerService.withContext('OcrApiClientFactory') diff --git a/src/renderer/src/services/ocr/clients/OcrBaseApiClient.ts b/src/renderer/src/services/ocr/clients/OcrBaseApiClient.ts index c9605671ae..a81a3f972a 100644 --- a/src/renderer/src/services/ocr/clients/OcrBaseApiClient.ts +++ b/src/renderer/src/services/ocr/clients/OcrBaseApiClient.ts @@ -1,4 +1,4 @@ -import { OcrApiProvider, OcrHandler } from '@renderer/types' +import type { OcrApiProvider, OcrHandler } from '@renderer/types' export abstract class OcrBaseApiClient { public provider: OcrApiProvider diff --git a/src/renderer/src/services/ocr/clients/OcrExampleApiClient.ts b/src/renderer/src/services/ocr/clients/OcrExampleApiClient.ts index 34d28173bb..76a404cf9f 100644 --- a/src/renderer/src/services/ocr/clients/OcrExampleApiClient.ts +++ b/src/renderer/src/services/ocr/clients/OcrExampleApiClient.ts @@ -1,4 +1,4 @@ -import { OcrApiProvider, SupportedOcrFile } from '@renderer/types' +import type { OcrApiProvider, SupportedOcrFile } from '@renderer/types' import { OcrBaseApiClient } from './OcrBaseApiClient' diff --git a/src/renderer/src/store/agents.ts b/src/renderer/src/store/agents.ts index 11bc493959..8da56b9284 100644 --- a/src/renderer/src/store/agents.ts +++ b/src/renderer/src/store/agents.ts @@ -1,6 +1,7 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' -import { Agent, AssistantSettings } from '@renderer/types' +import type { Agent, AssistantSettings } from '@renderer/types' export interface AgentsState { agents: Agent[] diff --git a/src/renderer/src/store/assistants.ts b/src/renderer/src/store/assistants.ts index 8f53977835..32086e2518 100644 --- a/src/renderer/src/store/assistants.ts +++ b/src/renderer/src/store/assistants.ts @@ -1,11 +1,12 @@ -import { createSelector, createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSelector, createSlice } from '@reduxjs/toolkit' import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' import { TopicManager } from '@renderer/hooks/useTopic' import { getDefaultAssistant, getDefaultTopic } from '@renderer/services/AssistantService' -import { Assistant, AssistantSettings, Model, Topic } from '@renderer/types' +import type { Assistant, AssistantSettings, Model, Topic } from '@renderer/types' import { isEmpty, uniqBy } from 'lodash' -import { RootState } from '.' +import type { RootState } from '.' export interface AssistantsState { defaultAssistant: Assistant diff --git a/src/renderer/src/store/backup.ts b/src/renderer/src/store/backup.ts index cf5d8e6e30..fbb3853a12 100644 --- a/src/renderer/src/store/backup.ts +++ b/src/renderer/src/store/backup.ts @@ -1,4 +1,5 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' export interface RemoteSyncState { lastSyncTime: number | null diff --git a/src/renderer/src/store/codeTools.ts b/src/renderer/src/store/codeTools.ts index 689335b43f..a07ae7ef2b 100644 --- a/src/renderer/src/store/codeTools.ts +++ b/src/renderer/src/store/codeTools.ts @@ -1,5 +1,6 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' -import { Model } from '@renderer/types' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' +import type { Model } from '@renderer/types' import { codeTools } from '@shared/config/constant' // 常量定义 diff --git a/src/renderer/src/store/copilot.ts b/src/renderer/src/store/copilot.ts index 5bcf142b1c..ab7e50ee84 100644 --- a/src/renderer/src/store/copilot.ts +++ b/src/renderer/src/store/copilot.ts @@ -1,4 +1,5 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' export interface CopilotState { username?: string diff --git a/src/renderer/src/store/inputTools.ts b/src/renderer/src/store/inputTools.ts index be6ef212c0..98944e44ba 100644 --- a/src/renderer/src/store/inputTools.ts +++ b/src/renderer/src/store/inputTools.ts @@ -1,4 +1,5 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' export type ToolOrder = { visible: string[] diff --git a/src/renderer/src/store/knowledge.ts b/src/renderer/src/store/knowledge.ts index 49f14d4883..64d62aeda4 100644 --- a/src/renderer/src/store/knowledge.ts +++ b/src/renderer/src/store/knowledge.ts @@ -1,7 +1,8 @@ import { loggerService } from '@logger' -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' import FileManager from '@renderer/services/FileManager' -import { +import type { FileMetadata, KnowledgeBase, KnowledgeBaseParams, diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index 6dd1b777a5..737de4440b 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -1,8 +1,9 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' import { isLocalAi } from '@renderer/config/env' import { SYSTEM_MODELS } from '@renderer/config/models' import { SYSTEM_PROVIDERS } from '@renderer/config/providers' -import { Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' import { uniqBy } from 'lodash' type LlmSettings = { diff --git a/src/renderer/src/store/messageBlock.ts b/src/renderer/src/store/messageBlock.ts index 524889bb32..726d184669 100644 --- a/src/renderer/src/store/messageBlock.ts +++ b/src/renderer/src/store/messageBlock.ts @@ -1,7 +1,8 @@ -import { WebSearchResultBlock } from '@anthropic-ai/sdk/resources' +import type { WebSearchResultBlock } from '@anthropic-ai/sdk/resources' import type { GroundingMetadata } from '@google/genai' import { createEntityAdapter, createSelector, createSlice, type PayloadAction } from '@reduxjs/toolkit' -import { AISDKWebSearchResult, Citation, WebSearchProviderResponse, WebSearchSource } from '@renderer/types' +import type { AISDKWebSearchResult, Citation, WebSearchProviderResponse } from '@renderer/types' +import { WebSearchSource } from '@renderer/types' import type { CitationMessageBlock, MessageBlock } from '@renderer/types/newMessage' import { MessageBlockType } from '@renderer/types/newMessage' import type OpenAI from 'openai' diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index 5a90ea1060..a8d839e06a 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -22,17 +22,16 @@ import { import db from '@renderer/databases' import i18n from '@renderer/i18n' import { DEFAULT_ASSISTANT_SETTINGS } from '@renderer/services/AssistantService' -import { +import type { Assistant, BuiltinOcrProvider, - isSystemProvider, Model, Provider, ProviderApiOptions, - SystemProviderIds, TranslateLanguageCode, WebSearchProvider } from '@renderer/types' +import { isSystemProvider, SystemProviderIds } from '@renderer/types' import { getDefaultGroupName, getLeadingEmoji, runAsyncFunction, uuid } from '@renderer/utils' import { defaultByPassRules } from '@shared/config/constant' import { TRANSLATE_PROMPT } from '@shared/config/prompts' @@ -41,7 +40,7 @@ import { UpgradeChannel } from '@shared/data/preference/preferenceTypes' import { isEmpty } from 'lodash' import { createMigrate } from 'redux-persist' -import { RootState } from '.' +import type { RootState } from '.' import { DEFAULT_TOOL_ORDER } from './inputTools' import { initialState as llmInitialState, moveProvider } from './llm' import { mcpSlice } from './mcp' diff --git a/src/renderer/src/store/minapps.ts b/src/renderer/src/store/minapps.ts index 95fea71a09..8ca59a5bd2 100644 --- a/src/renderer/src/store/minapps.ts +++ b/src/renderer/src/store/minapps.ts @@ -1,6 +1,7 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' import { DEFAULT_MIN_APPS } from '@renderer/config/minapps' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' export interface MinAppsState { enabled: MinAppType[] diff --git a/src/renderer/src/store/newMessage.ts b/src/renderer/src/store/newMessage.ts index 205ab1a9cd..5fcfcb5615 100644 --- a/src/renderer/src/store/newMessage.ts +++ b/src/renderer/src/store/newMessage.ts @@ -1,5 +1,6 @@ import { loggerService } from '@logger' -import { createEntityAdapter, createSlice, EntityState, PayloadAction } from '@reduxjs/toolkit' +import type { EntityState, PayloadAction } from '@reduxjs/toolkit' +import { createEntityAdapter, createSlice } from '@reduxjs/toolkit' // Separate type-only imports from value imports import type { Message } from '@renderer/types/newMessage' import { AssistantMessageStatus, MessageBlockStatus } from '@renderer/types/newMessage' diff --git a/src/renderer/src/store/note.ts b/src/renderer/src/store/note.ts index df4478c07a..3fb40b2acb 100644 --- a/src/renderer/src/store/note.ts +++ b/src/renderer/src/store/note.ts @@ -1,7 +1,8 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' -import { RootState } from '@renderer/store/index' -import { EditorView } from '@renderer/types' -import { NotesSortType } from '@renderer/types/note' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' +import type { RootState } from '@renderer/store/index' +import type { EditorView } from '@renderer/types' +import type { NotesSortType } from '@renderer/types/note' export interface NotesSettings { isFullWidth: boolean diff --git a/src/renderer/src/store/nutstore.ts b/src/renderer/src/store/nutstore.ts index e2a05f021e..d494ec269f 100644 --- a/src/renderer/src/store/nutstore.ts +++ b/src/renderer/src/store/nutstore.ts @@ -1,6 +1,7 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' -import { RemoteSyncState } from './backup' +import type { RemoteSyncState } from './backup' export interface NutstoreSyncState extends RemoteSyncState {} diff --git a/src/renderer/src/store/ocr.ts b/src/renderer/src/store/ocr.ts index 6de861d7f5..8e997bd6d5 100644 --- a/src/renderer/src/store/ocr.ts +++ b/src/renderer/src/store/ocr.ts @@ -1,6 +1,7 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' import { BUILTIN_OCR_PROVIDERS, DEFAULT_OCR_PROVIDER } from '@renderer/config/ocr' -import { OcrProvider, OcrProviderConfig } from '@renderer/types' +import type { OcrProvider, OcrProviderConfig } from '@renderer/types' export interface OcrState { providers: OcrProvider[] diff --git a/src/renderer/src/store/paintings.ts b/src/renderer/src/store/paintings.ts index 2f4593f552..36c96eb15c 100644 --- a/src/renderer/src/store/paintings.ts +++ b/src/renderer/src/store/paintings.ts @@ -1,6 +1,7 @@ import { loggerService } from '@logger' -import { createSlice, PayloadAction } from '@reduxjs/toolkit' -import { PaintingAction, PaintingsState } from '@renderer/types' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' +import type { PaintingAction, PaintingsState } from '@renderer/types' const logger = loggerService.withContext('Store:paintings') diff --git a/src/renderer/src/store/preprocess.ts b/src/renderer/src/store/preprocess.ts index 0dfaca4d08..0381951efc 100644 --- a/src/renderer/src/store/preprocess.ts +++ b/src/renderer/src/store/preprocess.ts @@ -1,5 +1,6 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' -import { PreprocessProvider } from '@renderer/types' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' +import type { PreprocessProvider } from '@renderer/types' export interface PreprocessState { providers: PreprocessProvider[] diff --git a/src/renderer/src/store/runtime.ts b/src/renderer/src/store/runtime.ts index 39bcf41672..4c23217c66 100644 --- a/src/renderer/src/store/runtime.ts +++ b/src/renderer/src/store/runtime.ts @@ -3,7 +3,8 @@ * //TODO @deprecated this file will be removed */ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' import type { Topic, WebSearchStatus } from '@renderer/types' import type { UpdateInfo } from 'builder-util-runtime' diff --git a/src/renderer/src/store/selectionStore.ts b/src/renderer/src/store/selectionStore.ts index 8c66481521..5acdbca28d 100644 --- a/src/renderer/src/store/selectionStore.ts +++ b/src/renderer/src/store/selectionStore.ts @@ -1,7 +1,8 @@ /** * @deprecated The whole file will be removed after data refactoring */ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' import type { SelectionActionItem } from '@shared/data/preference/preferenceTypes' import { SelectionFilterMode, SelectionTriggerMode } from '@shared/data/preference/preferenceTypes' diff --git a/src/renderer/src/store/settings.ts b/src/renderer/src/store/settings.ts index eea0c3fa2e..2984378989 100644 --- a/src/renderer/src/store/settings.ts +++ b/src/renderer/src/store/settings.ts @@ -1,9 +1,10 @@ /** * //TODO @deprecated this file will be removed after data refactor */ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' import { isMac } from '@renderer/config/constant' -import { +import type { ApiServerConfig, CodeStyleVarious, MathEngine, @@ -25,9 +26,9 @@ import type { SidebarIcon } from '@shared/data/preference/preferenceTypes' import { ThemeMode, UpgradeChannel } from '@shared/data/preference/preferenceTypes' -import { OpenAIVerbosity } from '@types' +import type { OpenAIVerbosity } from '@types' -import { RemoteSyncState } from './backup' +import type { RemoteSyncState } from './backup' // export type SendMessageShortcut = 'Enter' | 'Shift+Enter' | 'Ctrl+Enter' | 'Command+Enter' | 'Alt+Enter' diff --git a/src/renderer/src/store/shortcuts.ts b/src/renderer/src/store/shortcuts.ts index 634a5fb4d0..9b4cc1341a 100644 --- a/src/renderer/src/store/shortcuts.ts +++ b/src/renderer/src/store/shortcuts.ts @@ -1,5 +1,6 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' -import { Shortcut } from '@renderer/types' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' +import type { Shortcut } from '@renderer/types' import { ZOOM_SHORTCUTS } from '@shared/config/constant' export interface ShortcutsState { diff --git a/src/renderer/src/store/tabs.ts b/src/renderer/src/store/tabs.ts index 16195cd5f2..87d7342779 100644 --- a/src/renderer/src/store/tabs.ts +++ b/src/renderer/src/store/tabs.ts @@ -1,4 +1,5 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' export interface Tab { id: string diff --git a/src/renderer/src/store/thunk/__tests__/knowledgeThunk.test.ts b/src/renderer/src/store/thunk/__tests__/knowledgeThunk.test.ts index b5bb0a5d54..555e5706c0 100644 --- a/src/renderer/src/store/thunk/__tests__/knowledgeThunk.test.ts +++ b/src/renderer/src/store/thunk/__tests__/knowledgeThunk.test.ts @@ -1,5 +1,6 @@ import { addFiles as addFilesAction, addItem, updateNotes } from '@renderer/store/knowledge' -import { FileMetadata, FileTypes, KnowledgeItem } from '@renderer/types' +import type { FileMetadata, KnowledgeItem } from '@renderer/types' +import { FileTypes } from '@renderer/types' import { beforeEach, describe, expect, it, vi } from 'vitest' import { addFilesThunk, addItemThunk, addNoteThunk } from '../knowledgeThunk' diff --git a/src/renderer/src/store/thunk/knowledgeThunk.ts b/src/renderer/src/store/thunk/knowledgeThunk.ts index 169f05c728..97c435d169 100644 --- a/src/renderer/src/store/thunk/knowledgeThunk.ts +++ b/src/renderer/src/store/thunk/knowledgeThunk.ts @@ -1,10 +1,11 @@ import { loggerService } from '@logger' import { db } from '@renderer/databases' import { addFiles as addFilesAction, addItem, updateNotes } from '@renderer/store/knowledge' -import { FileMetadata, isKnowledgeNoteItem, KnowledgeItem } from '@renderer/types' +import type { FileMetadata, KnowledgeItem } from '@renderer/types' +import { isKnowledgeNoteItem } from '@renderer/types' import { v4 as uuidv4 } from 'uuid' -import { AppDispatch } from '..' +import type { AppDispatch } from '..' const logger = loggerService.withContext('knowledgeThunk') diff --git a/src/renderer/src/store/translate.ts b/src/renderer/src/store/translate.ts index 999f7f6580..0e4c56e731 100644 --- a/src/renderer/src/store/translate.ts +++ b/src/renderer/src/store/translate.ts @@ -1,4 +1,5 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' export interface TranslateState { translateInput: string diff --git a/src/renderer/src/store/websearch.ts b/src/renderer/src/store/websearch.ts index 1e3fe2a25b..379a38d5b8 100644 --- a/src/renderer/src/store/websearch.ts +++ b/src/renderer/src/store/websearch.ts @@ -1,4 +1,5 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' import { WEB_SEARCH_PROVIDERS } from '@renderer/config/webSearchProviders' import type { Model, WebSearchProvider } from '@renderer/types' export interface SubscribeSource { diff --git a/src/renderer/src/tools/index.ts b/src/renderer/src/tools/index.ts index 69cddaae3e..2f5168c180 100644 --- a/src/renderer/src/tools/index.ts +++ b/src/renderer/src/tools/index.ts @@ -1,4 +1,4 @@ -import { MCPTool } from '@renderer/types' +import type { MCPTool } from '@renderer/types' import { thinkTool } from './think' diff --git a/src/renderer/src/tools/think.ts b/src/renderer/src/tools/think.ts index 1e17d3e865..4ca7fb4357 100644 --- a/src/renderer/src/tools/think.ts +++ b/src/renderer/src/tools/think.ts @@ -1,4 +1,4 @@ -import { MCPTool } from '@renderer/types' +import type { MCPTool } from '@renderer/types' export const thinkTool: MCPTool = { id: 'dummy-server-think', diff --git a/src/renderer/src/trace/dataHandler/AsyncIterableHandler.ts b/src/renderer/src/trace/dataHandler/AsyncIterableHandler.ts index 1bdcc679e5..ddc0a90f8d 100644 --- a/src/renderer/src/trace/dataHandler/AsyncIterableHandler.ts +++ b/src/renderer/src/trace/dataHandler/AsyncIterableHandler.ts @@ -1,7 +1,7 @@ -import { TokenUsage } from '@mcp-trace/trace-core' -import { Span } from '@opentelemetry/api' +import type { TokenUsage } from '@mcp-trace/trace-core' +import type { Span } from '@opentelemetry/api' import { endSpan } from '@renderer/services/SpanManagerService' -import { SdkRawChunk } from '@renderer/types/sdk' +import type { SdkRawChunk } from '@renderer/types/sdk' export class AsyncIterableHandler { private span: Span diff --git a/src/renderer/src/trace/dataHandler/CommonResultHandler.ts b/src/renderer/src/trace/dataHandler/CommonResultHandler.ts index c66528abb0..468555d948 100644 --- a/src/renderer/src/trace/dataHandler/CommonResultHandler.ts +++ b/src/renderer/src/trace/dataHandler/CommonResultHandler.ts @@ -1,6 +1,6 @@ -import { TokenUsage } from '@mcp-trace/trace-core' -import { Span } from '@opentelemetry/api' -import { CompletionsResult } from '@renderer/aiCore/legacy/middleware/schemas' +import type { TokenUsage } from '@mcp-trace/trace-core' +import type { Span } from '@opentelemetry/api' +import type { CompletionsResult } from '@renderer/aiCore/legacy/middleware/schemas' import { endSpan } from '@renderer/services/SpanManagerService' export class CompletionsResultHandler { diff --git a/src/renderer/src/trace/dataHandler/MessageStreamHandler.ts b/src/renderer/src/trace/dataHandler/MessageStreamHandler.ts index 347194983f..b000dfb5f4 100644 --- a/src/renderer/src/trace/dataHandler/MessageStreamHandler.ts +++ b/src/renderer/src/trace/dataHandler/MessageStreamHandler.ts @@ -1,6 +1,6 @@ -import { Message, MessageStream } from '@anthropic-ai/sdk/resources/messages/messages' -import { TokenUsage } from '@mcp-trace/trace-core' -import { Span } from '@opentelemetry/api' +import type { Message, MessageStream } from '@anthropic-ai/sdk/resources/messages/messages' +import type { TokenUsage } from '@mcp-trace/trace-core' +import type { Span } from '@opentelemetry/api' import { endSpan } from '@renderer/services/SpanManagerService' export class MessageStreamHandler { diff --git a/src/renderer/src/trace/dataHandler/StreamHandler.ts b/src/renderer/src/trace/dataHandler/StreamHandler.ts index 22c1a0c517..35c610caa2 100644 --- a/src/renderer/src/trace/dataHandler/StreamHandler.ts +++ b/src/renderer/src/trace/dataHandler/StreamHandler.ts @@ -1,8 +1,8 @@ -import { TokenUsage } from '@mcp-trace/trace-core' -import { Span } from '@opentelemetry/api' +import type { TokenUsage } from '@mcp-trace/trace-core' +import type { Span } from '@opentelemetry/api' import { endSpan } from '@renderer/services/SpanManagerService' -import { OpenAI } from 'openai' -import { Stream } from 'openai/streaming' +import type { OpenAI } from 'openai' +import type { Stream } from 'openai/streaming' export class StreamHandler { private topicId: string diff --git a/src/renderer/src/trace/pages/SpanDetail.tsx b/src/renderer/src/trace/pages/SpanDetail.tsx index 925dd0d5be..b4f80a8351 100644 --- a/src/renderer/src/trace/pages/SpanDetail.tsx +++ b/src/renderer/src/trace/pages/SpanDetail.tsx @@ -3,8 +3,9 @@ import './Trace.css' import { DoubleLeftOutlined } from '@ant-design/icons' import { loggerService } from '@logger' // import TraceModal from '@renderer/trace/TraceModal' -import { TraceModal } from '@renderer/trace/pages/TraceModel' -import { FC, useCallback, useEffect, useState } from 'react' +import type { TraceModal } from '@renderer/trace/pages/TraceModel' +import type { FC } from 'react' +import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import ReactJson from 'react-json-view' diff --git a/src/renderer/src/trace/pages/TraceModel.tsx b/src/renderer/src/trace/pages/TraceModel.tsx index 5fb8bc0c24..2ec92d7b48 100644 --- a/src/renderer/src/trace/pages/TraceModel.tsx +++ b/src/renderer/src/trace/pages/TraceModel.tsx @@ -1,4 +1,4 @@ -import { SpanEntity } from '@mcp-trace/trace-core' +import type { SpanEntity } from '@mcp-trace/trace-core' export interface TraceModal extends SpanEntity { children: TraceModal[] diff --git a/src/renderer/src/trace/pages/TraceTree.tsx b/src/renderer/src/trace/pages/TraceTree.tsx index 01384bc9cc..31f69f2436 100644 --- a/src/renderer/src/trace/pages/TraceTree.tsx +++ b/src/renderer/src/trace/pages/TraceTree.tsx @@ -1,4 +1,4 @@ -import { TraceModal } from '@renderer/trace/pages/TraceModel' +import type { TraceModal } from '@renderer/trace/pages/TraceModel' import { Divider } from 'antd/lib' import * as React from 'react' import { useEffect, useState } from 'react' diff --git a/src/renderer/src/trace/pages/index.tsx b/src/renderer/src/trace/pages/index.tsx index 507ce813a6..f83d160df9 100644 --- a/src/renderer/src/trace/pages/index.tsx +++ b/src/renderer/src/trace/pages/index.tsx @@ -1,7 +1,7 @@ import './Trace.css' -import { SpanEntity } from '@mcp-trace/trace-core' -import { TraceModal } from '@renderer/trace/pages/TraceModel' +import type { SpanEntity } from '@mcp-trace/trace-core' +import type { TraceModal } from '@renderer/trace/pages/TraceModel' import { Divider } from 'antd/lib' import React, { useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/trace/types/ModelSpanEntity.ts b/src/renderer/src/trace/types/ModelSpanEntity.ts index 1fff3fb2c2..2e638e8eb2 100644 --- a/src/renderer/src/trace/types/ModelSpanEntity.ts +++ b/src/renderer/src/trace/types/ModelSpanEntity.ts @@ -1,4 +1,4 @@ -import { Span } from '@opentelemetry/api' +import type { Span } from '@opentelemetry/api' export interface StartSpanParams { topicId: string diff --git a/src/renderer/src/types/aiCoreTypes.ts b/src/renderer/src/types/aiCoreTypes.ts index e93218ab9e..a2ff5a4cef 100644 --- a/src/renderer/src/types/aiCoreTypes.ts +++ b/src/renderer/src/types/aiCoreTypes.ts @@ -1,5 +1,5 @@ import type { ImageModel, LanguageModel } from 'ai' -import { generateObject, generateText, ModelMessage, streamObject, streamText } from 'ai' +import type { generateObject, generateText, ModelMessage, streamObject, streamText } from 'ai' export type StreamTextParams = Omit[0], 'model' | 'messages'> & ( diff --git a/src/renderer/src/types/chunk.ts b/src/renderer/src/types/chunk.ts index f28cff54c5..18b4d8a376 100644 --- a/src/renderer/src/types/chunk.ts +++ b/src/renderer/src/types/chunk.ts @@ -1,4 +1,4 @@ -import { +import type { ExternalToolResult, KnowledgeReference, MCPTool, @@ -7,8 +7,8 @@ import { ToolUseResponse, WebSearchResponse } from '.' -import { Response, ResponseError } from './newMessage' -import { SdkToolCall } from './sdk' +import type { Response, ResponseError } from './newMessage' +import type { SdkToolCall } from './sdk' // Define Enum for Chunk Types // 目前用到的,并没有列出完整的生命周期 diff --git a/src/renderer/src/types/error.ts b/src/renderer/src/types/error.ts index c260c9c09f..93a53dd9f9 100644 --- a/src/renderer/src/types/error.ts +++ b/src/renderer/src/types/error.ts @@ -1,4 +1,4 @@ -import { +import type { AISDKError, APICallError, DownloadError, @@ -20,7 +20,7 @@ import { UnsupportedFunctionalityError } from 'ai' -import { Serializable } from './serialize' +import type { Serializable } from './serialize' export interface SerializedError { name: string | null diff --git a/src/renderer/src/types/healthCheck.ts b/src/renderer/src/types/healthCheck.ts index 840c4ef277..6cf9a29303 100644 --- a/src/renderer/src/types/healthCheck.ts +++ b/src/renderer/src/types/healthCheck.ts @@ -1,4 +1,4 @@ -import { Model, Provider } from '@types' +import type { Model, Provider } from '@types' /** * 健康检查的通用状态枚举 diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 5782c19cb1..aefaab3fe8 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -10,8 +10,8 @@ export * from './note' import type { StreamTextParams } from './aiCoreTypes' import type { Chunk } from './chunk' import type { FileMetadata } from './file' -import { KnowledgeBase, KnowledgeReference } from './knowledge' -import { MCPConfigSample, McpServerType } from './mcp' +import type { KnowledgeBase, KnowledgeReference } from './knowledge' +import type { MCPConfigSample, McpServerType } from './mcp' import type { Message } from './newMessage' import type { BaseTool, MCPTool } from './tool' diff --git a/src/renderer/src/types/knowledge.ts b/src/renderer/src/types/knowledge.ts index c32e6dd003..390e80880b 100644 --- a/src/renderer/src/types/knowledge.ts +++ b/src/renderer/src/types/knowledge.ts @@ -1,6 +1,6 @@ -import { ApiClient, Model } from '@types' +import type { ApiClient, Model } from '@types' -import { FileMetadata } from './file' +import type { FileMetadata } from './file' export type KnowledgeItemType = 'file' | 'url' | 'note' | 'sitemap' | 'directory' | 'memory' | 'video' diff --git a/src/renderer/src/types/newMessage.ts b/src/renderer/src/types/newMessage.ts index 74e2b8266a..89d445c348 100644 --- a/src/renderer/src/types/newMessage.ts +++ b/src/renderer/src/types/newMessage.ts @@ -15,7 +15,7 @@ import type { WebSearchResponse, WebSearchSource } from '.' -import { SerializedError } from './error' +import type { SerializedError } from './error' // MessageBlock 类型枚举 - 根据实际API返回特性优化 export enum MessageBlockType { diff --git a/src/renderer/src/types/ocr.ts b/src/renderer/src/types/ocr.ts index d67cba958d..a1b7315081 100644 --- a/src/renderer/src/types/ocr.ts +++ b/src/renderer/src/types/ocr.ts @@ -1,6 +1,7 @@ -import Tesseract from 'tesseract.js' +import type Tesseract from 'tesseract.js' -import { FileMetadata, ImageFileMetadata, isImageFileMetadata, TranslateLanguageCode } from '.' +import type { FileMetadata, ImageFileMetadata, TranslateLanguageCode } from '.' +import { isImageFileMetadata } from '.' export const BuiltinOcrProviderIds = { tesseract: 'tesseract', diff --git a/src/renderer/src/types/sdk.ts b/src/renderer/src/types/sdk.ts index 54a7896be4..899b48c82c 100644 --- a/src/renderer/src/types/sdk.ts +++ b/src/renderer/src/types/sdk.ts @@ -1,5 +1,5 @@ -import Anthropic from '@anthropic-ai/sdk' -import { +import type Anthropic from '@anthropic-ai/sdk' +import type { Message, MessageCreateParams, MessageParam, @@ -7,11 +7,11 @@ import { ToolUnion, ToolUseBlock } from '@anthropic-ai/sdk/resources' -import { MessageStream } from '@anthropic-ai/sdk/resources/messages/messages' -import AnthropicVertex from '@anthropic-ai/vertex-sdk' +import type { MessageStream } from '@anthropic-ai/sdk/resources/messages/messages' +import type AnthropicVertex from '@anthropic-ai/vertex-sdk' import type { BedrockClient } from '@aws-sdk/client-bedrock' import type { BedrockRuntimeClient } from '@aws-sdk/client-bedrock-runtime' -import { +import type { Content, CreateChatParameters, FunctionCall, @@ -21,11 +21,12 @@ import { SendMessageParameters, Tool } from '@google/genai' -import OpenAI, { AzureOpenAI } from 'openai' -import { ChatCompletionContentPartImage } from 'openai/resources' -import { Stream } from 'openai/streaming' +import type { AzureOpenAI } from 'openai' +import type OpenAI from 'openai' +import type { ChatCompletionContentPartImage } from 'openai/resources' +import type { Stream } from 'openai/streaming' -import { EndpointType } from './index' +import type { EndpointType } from './index' export type SdkInstance = OpenAI | AzureOpenAI | Anthropic | AnthropicVertex | GoogleGenAI | AwsBedrockSdkInstance export type SdkParams = diff --git a/src/renderer/src/utils/__tests__/assistant.test.ts b/src/renderer/src/utils/__tests__/assistant.test.ts index 1bc6fca8e3..9b0f07f8a2 100644 --- a/src/renderer/src/utils/__tests__/assistant.test.ts +++ b/src/renderer/src/utils/__tests__/assistant.test.ts @@ -1,4 +1,4 @@ -import { Assistant } from '@renderer/types' +import type { Assistant } from '@renderer/types' import { cloneDeep } from 'lodash' import { describe, expect, it } from 'vitest' diff --git a/src/renderer/src/utils/__tests__/citation.test.ts b/src/renderer/src/utils/__tests__/citation.test.ts index 4c877e285a..eb35e28218 100644 --- a/src/renderer/src/utils/__tests__/citation.test.ts +++ b/src/renderer/src/utils/__tests__/citation.test.ts @@ -1,5 +1,6 @@ -import { GroundingSupport } from '@google/genai' -import { Citation, WebSearchSource } from '@renderer/types' +import type { GroundingSupport } from '@google/genai' +import type { Citation } from '@renderer/types' +import { WebSearchSource } from '@renderer/types' import { describe, expect, it, vi } from 'vitest' import { diff --git a/src/renderer/src/utils/__tests__/copy.test.ts b/src/renderer/src/utils/__tests__/copy.test.ts index 5697fe6d66..7908010d1e 100644 --- a/src/renderer/src/utils/__tests__/copy.test.ts +++ b/src/renderer/src/utils/__tests__/copy.test.ts @@ -1,4 +1,4 @@ -import { Message, Topic } from '@renderer/types' +import type { Message, Topic } from '@renderer/types' import { beforeEach, describe, expect, it, vi } from 'vitest' import { copyMessageAsPlainText, copyTopicAsMarkdown, copyTopicAsPlainText } from '../copy' diff --git a/src/renderer/src/utils/__tests__/export.test.ts b/src/renderer/src/utils/__tests__/export.test.ts index 7b51cceff6..fd8a665cd7 100644 --- a/src/renderer/src/utils/__tests__/export.test.ts +++ b/src/renderer/src/utils/__tests__/export.test.ts @@ -82,7 +82,7 @@ vi.mock('@renderer/utils/markdown', async (importOriginal) => { }) // Import the functions to test AFTER setting up mocks -import { Topic } from '@renderer/types' +import type { Topic } from '@renderer/types' import { markdownToPlainText } from '@renderer/utils/markdown' import { copyMessageAsPlainText } from '../copy' diff --git a/src/renderer/src/utils/__tests__/model.test.ts b/src/renderer/src/utils/__tests__/model.test.ts index 4a854bf04a..fe1697e3ed 100644 --- a/src/renderer/src/utils/__tests__/model.test.ts +++ b/src/renderer/src/utils/__tests__/model.test.ts @@ -1,4 +1,4 @@ -import { Model, ModelTag } from '@renderer/types' +import type { Model, ModelTag } from '@renderer/types' import { describe, expect, it, vi } from 'vitest' import { getModelTags, isFreeModel } from '../model' diff --git a/src/renderer/src/utils/__tests__/naming.test.ts b/src/renderer/src/utils/__tests__/naming.test.ts index f51e8cb2cc..d19aa0208c 100644 --- a/src/renderer/src/utils/__tests__/naming.test.ts +++ b/src/renderer/src/utils/__tests__/naming.test.ts @@ -1,4 +1,4 @@ -import { Provider, SystemProvider } from '@renderer/types' +import type { Provider, SystemProvider } from '@renderer/types' import { describe, expect, it, vi } from 'vitest' // Mock i18n to return English provider labels diff --git a/src/renderer/src/utils/__tests__/tagExtraction.test.ts b/src/renderer/src/utils/__tests__/tagExtraction.test.ts index 6533bda3f0..2eac9247bb 100644 --- a/src/renderer/src/utils/__tests__/tagExtraction.test.ts +++ b/src/renderer/src/utils/__tests__/tagExtraction.test.ts @@ -1,6 +1,7 @@ import { describe, expect, test } from 'vitest' -import { TagConfig, TagExtractor } from '../tagExtraction' +import type { TagConfig } from '../tagExtraction' +import { TagExtractor } from '../tagExtraction' describe('TagExtractor', () => { describe('基本标签提取', () => { diff --git a/src/renderer/src/utils/__tests__/websearch.test.ts b/src/renderer/src/utils/__tests__/websearch.test.ts index 2f807d111e..f5aa6c48fd 100644 --- a/src/renderer/src/utils/__tests__/websearch.test.ts +++ b/src/renderer/src/utils/__tests__/websearch.test.ts @@ -1,4 +1,4 @@ -import { KnowledgeReference, WebSearchProviderResult } from '@renderer/types' +import type { KnowledgeReference, WebSearchProviderResult } from '@renderer/types' import { describe, expect, it } from 'vitest' import { consolidateReferencesByUrl, selectReferences } from '../websearch' diff --git a/src/renderer/src/utils/assistant.ts b/src/renderer/src/utils/assistant.ts index e08214aee7..4a1fa62988 100644 --- a/src/renderer/src/utils/assistant.ts +++ b/src/renderer/src/utils/assistant.ts @@ -1,4 +1,4 @@ -import { Assistant } from '@renderer/types' +import type { Assistant } from '@renderer/types' export const isToolUseModeFunction = (assistant: Assistant) => { return assistant.settings?.toolUseMode === 'function' diff --git a/src/renderer/src/utils/blacklistMatchPattern.ts b/src/renderer/src/utils/blacklistMatchPattern.ts index 9e78ab58fb..7f4e4eb4fe 100644 --- a/src/renderer/src/utils/blacklistMatchPattern.ts +++ b/src/renderer/src/utils/blacklistMatchPattern.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' -import { WebSearchState } from '@renderer/store/websearch' -import { WebSearchProviderResponse } from '@renderer/types' +import type { WebSearchState } from '@renderer/store/websearch' +import type { WebSearchProviderResponse } from '@renderer/types' const logger = loggerService.withContext('BlacklistMatchPattern') diff --git a/src/renderer/src/utils/citation.ts b/src/renderer/src/utils/citation.ts index da2cee7706..8c97cbcde5 100644 --- a/src/renderer/src/utils/citation.ts +++ b/src/renderer/src/utils/citation.ts @@ -1,5 +1,6 @@ -import { GroundingSupport } from '@google/genai' -import { Citation, WebSearchSource } from '@renderer/types' +import type { GroundingSupport } from '@google/genai' +import type { Citation } from '@renderer/types' +import { WebSearchSource } from '@renderer/types' import { cleanMarkdownContent, encodeHTML } from './formats' diff --git a/src/renderer/src/utils/copy.ts b/src/renderer/src/utils/copy.ts index 04841a25ca..d58d9cfb28 100644 --- a/src/renderer/src/utils/copy.ts +++ b/src/renderer/src/utils/copy.ts @@ -1,4 +1,4 @@ -import { Message, Topic } from '@renderer/types' +import type { Message, Topic } from '@renderer/types' import i18next from 'i18next' import { messageToPlainText, topicToMarkdown, topicToPlainText } from './export' diff --git a/src/renderer/src/utils/dataLimit.ts b/src/renderer/src/utils/dataLimit.ts index 7678099be2..d5f9e572c1 100644 --- a/src/renderer/src/utils/dataLimit.ts +++ b/src/renderer/src/utils/dataLimit.ts @@ -1,5 +1,5 @@ import { loggerService } from '@logger' -import { AppInfo } from '@renderer/types' +import type { AppInfo } from '@renderer/types' import { GB, MB } from '@shared/config/constant' import { t } from 'i18next' diff --git a/src/renderer/src/utils/error.ts b/src/renderer/src/utils/error.ts index b69073e406..b9d34366eb 100644 --- a/src/renderer/src/utils/error.ts +++ b/src/renderer/src/utils/error.ts @@ -1,15 +1,16 @@ -import { McpError } from '@modelcontextprotocol/sdk/types.js' -import { +import type { McpError } from '@modelcontextprotocol/sdk/types.js' +import type { AiSdkErrorUnion, - isSerializedAiSdkAPICallError, SerializedAiSdkError, SerializedAiSdkInvalidToolInputError, SerializedAiSdkNoSuchToolError, SerializedError } from '@renderer/types/error' -import { InvalidToolInputError, NoSuchToolError } from 'ai' +import { isSerializedAiSdkAPICallError } from '@renderer/types/error' +import type { NoSuchToolError } from 'ai' +import { InvalidToolInputError } from 'ai' import { t } from 'i18next' -import { z } from 'zod' +import type { z } from 'zod' import { parseJSON } from './json' import { safeSerialize } from './serialize' diff --git a/src/renderer/src/utils/export.ts b/src/renderer/src/utils/export.ts index 80e58586e1..3de4e8ec60 100644 --- a/src/renderer/src/utils/export.ts +++ b/src/renderer/src/utils/export.ts @@ -7,7 +7,7 @@ import { getMessageTitle } from '@renderer/services/MessagesService' import { createNote } from '@renderer/services/NotesService' import type { Topic } from '@renderer/types' import type { Message } from '@renderer/types/newMessage' -import { NotesTreeNode } from '@renderer/types/note' +import type { NotesTreeNode } from '@renderer/types/note' import { removeSpecialCharactersForFileName } from '@renderer/utils/file' import { convertMathFormula, markdownToPlainText } from '@renderer/utils/markdown' import { getCitationContent, getMainTextContent, getThinkingContent } from '@renderer/utils/messageUtils/find' diff --git a/src/renderer/src/utils/fetch.ts b/src/renderer/src/utils/fetch.ts index b18378beff..52c91c0896 100644 --- a/src/renderer/src/utils/fetch.ts +++ b/src/renderer/src/utils/fetch.ts @@ -1,7 +1,7 @@ import { loggerService } from '@logger' import { Readability } from '@mozilla/readability' import { nanoid } from '@reduxjs/toolkit' -import { WebSearchProviderResult } from '@renderer/types' +import type { WebSearchProviderResult } from '@renderer/types' import { createAbortPromise } from '@renderer/utils/abortController' import { isAbortError } from '@renderer/utils/error' import TurndownService from 'turndown' diff --git a/src/renderer/src/utils/file.ts b/src/renderer/src/utils/file.ts index a02d6c3a6e..1d4bf4577c 100644 --- a/src/renderer/src/utils/file.ts +++ b/src/renderer/src/utils/file.ts @@ -1,4 +1,5 @@ -import { FileMetadata, FileTypes } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' +import { FileTypes } from '@renderer/types' import { audioExts, documentExts, imageExts, KB, MB, textExts, videoExts } from '@shared/config/constant' import mime from 'mime-types' diff --git a/src/renderer/src/utils/healthCheck.ts b/src/renderer/src/utils/healthCheck.ts index f453cd7592..66b68c0d3a 100644 --- a/src/renderer/src/utils/healthCheck.ts +++ b/src/renderer/src/utils/healthCheck.ts @@ -1,5 +1,6 @@ import i18n from '@renderer/i18n' -import { ApiKeyWithStatus, HealthStatus, ModelWithStatus } from '@renderer/types/healthCheck' +import type { ApiKeyWithStatus, ModelWithStatus } from '@renderer/types/healthCheck' +import { HealthStatus } from '@renderer/types/healthCheck' /** * 聚合多个 API 密钥检查结果,得到模型健康检查的整体状态 diff --git a/src/renderer/src/utils/index.ts b/src/renderer/src/utils/index.ts index 828d288ba8..df4aefb00c 100644 --- a/src/renderer/src/utils/index.ts +++ b/src/renderer/src/utils/index.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' -import { Model, ModelType, Provider } from '@renderer/types' -import { ModalFuncProps } from 'antd' +import type { Model, ModelType, Provider } from '@renderer/types' +import type { ModalFuncProps } from 'antd' import { isEqual } from 'lodash' import { v4 as uuidv4 } from 'uuid' diff --git a/src/renderer/src/utils/input.ts b/src/renderer/src/utils/input.ts index 0de05123e8..f58903a6c1 100644 --- a/src/renderer/src/utils/input.ts +++ b/src/renderer/src/utils/input.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' import { isMac, isWin } from '@renderer/config/constant' -import { FileMetadata } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' import type { SendMessageShortcut } from '@shared/data/preference/preferenceTypes' const logger = loggerService.withContext('Utils:Input') diff --git a/src/renderer/src/utils/markdownConverter.ts b/src/renderer/src/utils/markdownConverter.ts index 3b766cd32c..4c225ee3bb 100644 --- a/src/renderer/src/utils/markdownConverter.ts +++ b/src/renderer/src/utils/markdownConverter.ts @@ -1,5 +1,5 @@ import { loggerService } from '@logger' -import { TurndownPlugin } from '@truto/turndown-plugin-gfm' +import type { TurndownPlugin } from '@truto/turndown-plugin-gfm' import he from 'he' import htmlTags, { type HtmlTags } from 'html-tags' import * as htmlparser2 from 'htmlparser2' diff --git a/src/renderer/src/utils/match.ts b/src/renderer/src/utils/match.ts index 28b12a9b5f..adf8d2fade 100644 --- a/src/renderer/src/utils/match.ts +++ b/src/renderer/src/utils/match.ts @@ -1,5 +1,6 @@ import { getProviderLabel } from '@renderer/i18n/label' -import { isSystemProvider, Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' +import { isSystemProvider } from '@renderer/types' /** * 判断一个字符串是否包含由另一个字符串表示的 keywords diff --git a/src/renderer/src/utils/mcp-tools.ts b/src/renderer/src/utils/mcp-tools.ts index 4175094342..dfb92d4b2f 100644 --- a/src/renderer/src/utils/mcp-tools.ts +++ b/src/renderer/src/utils/mcp-tools.ts @@ -1,14 +1,14 @@ -import { ContentBlockParam, MessageParam, ToolUnion, ToolUseBlock } from '@anthropic-ai/sdk/resources' -import { Content, FunctionCall, Part, Tool, Type as GeminiSchemaType } from '@google/genai' +import type { ContentBlockParam, MessageParam, ToolUnion, ToolUseBlock } from '@anthropic-ai/sdk/resources' +import type { Content, FunctionCall, Part, Tool } from '@google/genai' +import { Type as GeminiSchemaType } from '@google/genai' import { loggerService } from '@logger' import { isFunctionCallingModel, isVisionModel } from '@renderer/config/models' import i18n from '@renderer/i18n' import { currentSpan } from '@renderer/services/SpanManagerService' import store from '@renderer/store' import { addMCPServer } from '@renderer/store/mcp' -import { +import type { Assistant, - BuiltinMCPServerNames, MCPCallToolResponse, MCPServer, MCPTool, @@ -16,13 +16,14 @@ import { Model, ToolUseResponse } from '@renderer/types' +import { BuiltinMCPServerNames } from '@renderer/types' import type { MCPToolCompleteChunk, MCPToolInProgressChunk, MCPToolPendingChunk } from '@renderer/types/chunk' import { ChunkType } from '@renderer/types/chunk' -import { AwsBedrockSdkMessageParam, AwsBedrockSdkTool, AwsBedrockSdkToolCall } from '@renderer/types/sdk' +import type { AwsBedrockSdkMessageParam, AwsBedrockSdkTool, AwsBedrockSdkToolCall } from '@renderer/types/sdk' import { t } from 'i18next' import { nanoid } from 'nanoid' -import OpenAI from 'openai' -import { +import type OpenAI from 'openai' +import type { ChatCompletionContentPart, ChatCompletionMessageParam, ChatCompletionMessageToolCall, diff --git a/src/renderer/src/utils/messageUtils/create.ts b/src/renderer/src/utils/messageUtils/create.ts index c38f89742c..73c90a206b 100644 --- a/src/renderer/src/utils/messageUtils/create.ts +++ b/src/renderer/src/utils/messageUtils/create.ts @@ -1,7 +1,7 @@ import { loggerService } from '@logger' import type { Assistant, FileMetadata, Topic } from '@renderer/types' import { FileTypes } from '@renderer/types' -import { SerializedError } from '@renderer/types/error' +import type { SerializedError } from '@renderer/types/error' import type { BaseMessageBlock, CitationMessageBlock, diff --git a/src/renderer/src/utils/messageUtils/find.ts b/src/renderer/src/utils/messageUtils/find.ts index 811c7960b6..06b2aedaf2 100644 --- a/src/renderer/src/utils/messageUtils/find.ts +++ b/src/renderer/src/utils/messageUtils/find.ts @@ -1,6 +1,6 @@ import store from '@renderer/store' import { formatCitationsFromBlock, messageBlocksSelectors } from '@renderer/store/messageBlock' -import { FileMetadata } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' import type { CitationMessageBlock, FileMessageBlock, diff --git a/src/renderer/src/utils/messageUtils/is.ts b/src/renderer/src/utils/messageUtils/is.ts index b874f08ae2..2bc7896d1b 100644 --- a/src/renderer/src/utils/messageUtils/is.ts +++ b/src/renderer/src/utils/messageUtils/is.ts @@ -1,3 +1,4 @@ +import type { Message } from '@renderer/types/newMessage' import { AssistantMessageStatus, type CitationMessageBlock, @@ -6,7 +7,6 @@ import { type FileMessageBlock, type ImageMessageBlock, type MainTextMessageBlock, - Message, type MessageBlock, MessageBlockType, type PlaceholderMessageBlock, diff --git a/src/renderer/src/utils/model.ts b/src/renderer/src/utils/model.ts index 9795b72d26..924735a0f0 100644 --- a/src/renderer/src/utils/model.ts +++ b/src/renderer/src/utils/model.ts @@ -6,7 +6,8 @@ import { isVisionModel, isWebSearchModel } from '@renderer/config/models' -import { Model, ModelTag, objectKeys } from '@renderer/types' +import type { Model, ModelTag } from '@renderer/types' +import { objectKeys } from '@renderer/types' /** * 获取模型标签的状态 diff --git a/src/renderer/src/utils/naming.ts b/src/renderer/src/utils/naming.ts index 3cc02aadf4..bc24bc7db8 100644 --- a/src/renderer/src/utils/naming.ts +++ b/src/renderer/src/utils/naming.ts @@ -1,5 +1,6 @@ import { getProviderLabel } from '@renderer/i18n/label' -import { isSystemProvider, Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' +import { isSystemProvider } from '@renderer/types' /** * 从模型 ID 中提取默认组名。 diff --git a/src/renderer/src/utils/prompt.ts b/src/renderer/src/utils/prompt.ts index 5cb972a714..6419fa1e0e 100644 --- a/src/renderer/src/utils/prompt.ts +++ b/src/renderer/src/utils/prompt.ts @@ -1,7 +1,7 @@ import { loggerService } from '@logger' import { preferenceService } from '@renderer/data/PreferenceService' import store from '@renderer/store' -import { MCPTool } from '@renderer/types' +import type { MCPTool } from '@renderer/types' import { defaultLanguage } from '@shared/config/constant' const logger = loggerService.withContext('Utils:Prompt') diff --git a/src/renderer/src/utils/shiki.ts b/src/renderer/src/utils/shiki.ts index 2b56c878e1..dab4e17737 100644 --- a/src/renderer/src/utils/shiki.ts +++ b/src/renderer/src/utils/shiki.ts @@ -1,6 +1,7 @@ import { loggerService } from '@logger' -import { BundledLanguage, BundledTheme } from 'shiki/bundle/web' -import { getTokenStyleObject, type HighlighterGeneric, SpecialLanguage, ThemedToken } from 'shiki/core' +import type { BundledLanguage, BundledTheme } from 'shiki/bundle/web' +import type { SpecialLanguage, ThemedToken } from 'shiki/core' +import { getTokenStyleObject, type HighlighterGeneric } from 'shiki/core' import { AsyncInitializer } from './asyncInitializer' diff --git a/src/renderer/src/utils/style.ts b/src/renderer/src/utils/style.ts index a95fa93dd2..7e6d52be70 100644 --- a/src/renderer/src/utils/style.ts +++ b/src/renderer/src/utils/style.ts @@ -1,4 +1,5 @@ -import { HexColor, isHexColor } from '@renderer/types' +import type { HexColor } from '@renderer/types' +import { isHexColor } from '@renderer/types' type ClassValue = string | number | boolean | undefined | null | ClassDictionary | ClassArray diff --git a/src/renderer/src/utils/translate.ts b/src/renderer/src/utils/translate.ts index 1ccec5f593..a5e5cbfaa6 100644 --- a/src/renderer/src/utils/translate.ts +++ b/src/renderer/src/utils/translate.ts @@ -7,11 +7,13 @@ import { fetchChatCompletion } from '@renderer/services/ApiService' import { getDefaultAssistant, getDefaultModel, getQuickModel } from '@renderer/services/AssistantService' import { estimateTextTokens } from '@renderer/services/TokenService' import { getAllCustomLanguages } from '@renderer/services/TranslateService' -import { Assistant, TranslateLanguage, TranslateLanguageCode } from '@renderer/types' -import { Chunk, ChunkType } from '@renderer/types/chunk' +import type { Assistant, TranslateLanguage, TranslateLanguageCode } from '@renderer/types' +import type { Chunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import { LANG_DETECT_PROMPT } from '@shared/config/prompts' import { franc } from 'franc-min' -import React, { RefObject } from 'react' +import type { RefObject } from 'react' +import React from 'react' import { sliceByTokens } from 'tokenx' const logger = loggerService.withContext('Utils:translate') diff --git a/src/renderer/src/utils/websearch.ts b/src/renderer/src/utils/websearch.ts index 05f82861c8..52f1698cef 100644 --- a/src/renderer/src/utils/websearch.ts +++ b/src/renderer/src/utils/websearch.ts @@ -1,4 +1,4 @@ -import { KnowledgeReference, WebSearchProviderResult } from '@renderer/types' +import type { KnowledgeReference, WebSearchProviderResult } from '@renderer/types' /** * 将检索到的知识片段按源URL整合为搜索结果 diff --git a/src/renderer/src/windows/dataRefactorTest/components/PreferenceMultipleTests.tsx b/src/renderer/src/windows/dataRefactorTest/components/PreferenceMultipleTests.tsx index b16e416b0d..f3e1b2aaae 100644 --- a/src/renderer/src/windows/dataRefactorTest/components/PreferenceMultipleTests.tsx +++ b/src/renderer/src/windows/dataRefactorTest/components/PreferenceMultipleTests.tsx @@ -1,6 +1,6 @@ import { useMultiplePreferences } from '@renderer/data/hooks/usePreference' import { Button, Card, Input, message, Select, Slider, Space, Table, Typography } from 'antd' -import { ColumnType } from 'antd/es/table' +import type { ColumnType } from 'antd/es/table' import React, { useState } from 'react' import styled from 'styled-components' diff --git a/src/renderer/src/windows/mini/chat/ChatWindow.tsx b/src/renderer/src/windows/mini/chat/ChatWindow.tsx index ff57494428..bb7fde16a2 100644 --- a/src/renderer/src/windows/mini/chat/ChatWindow.tsx +++ b/src/renderer/src/windows/mini/chat/ChatWindow.tsx @@ -1,6 +1,6 @@ import Scrollbar from '@renderer/components/Scrollbar' -import { Assistant, Topic } from '@renderer/types' -import { FC } from 'react' +import type { Assistant, Topic } from '@renderer/types' +import type { FC } from 'react' import styled from 'styled-components' import Messages from './components/Messages' diff --git a/src/renderer/src/windows/mini/chat/components/Message.tsx b/src/renderer/src/windows/mini/chat/components/Message.tsx index 3434000acb..88e9170746 100644 --- a/src/renderer/src/windows/mini/chat/components/Message.tsx +++ b/src/renderer/src/windows/mini/chat/components/Message.tsx @@ -5,7 +5,8 @@ import MessageErrorBoundary from '@renderer/pages/home/Messages/MessageErrorBoun // import { LegacyMessage } from '@renderer/types' import type { Message } from '@renderer/types/newMessage' import { classNames } from '@renderer/utils' -import { FC, memo, useRef } from 'react' +import type { FC } from 'react' +import { memo, useRef } from 'react' import styled from 'styled-components' interface Props { diff --git a/src/renderer/src/windows/mini/chat/components/Messages.tsx b/src/renderer/src/windows/mini/chat/components/Messages.tsx index 74e689b966..f5d858938f 100644 --- a/src/renderer/src/windows/mini/chat/components/Messages.tsx +++ b/src/renderer/src/windows/mini/chat/components/Messages.tsx @@ -1,8 +1,8 @@ import { LoadingOutlined } from '@ant-design/icons' import Scrollbar from '@renderer/components/Scrollbar' import { useTopicMessages } from '@renderer/hooks/useMessageOperations' -import { Assistant, Topic } from '@renderer/types' -import { FC } from 'react' +import type { Assistant, Topic } from '@renderer/types' +import type { FC } from 'react' import styled from 'styled-components' import MessageItem from './Message' diff --git a/src/renderer/src/windows/mini/home/HomeWindow.tsx b/src/renderer/src/windows/mini/home/HomeWindow.tsx index 5095d048ab..ece64e053b 100644 --- a/src/renderer/src/windows/mini/home/HomeWindow.tsx +++ b/src/renderer/src/windows/mini/home/HomeWindow.tsx @@ -12,8 +12,9 @@ import store, { useAppSelector } from '@renderer/store' import { updateOneBlock, upsertManyBlocks, upsertOneBlock } from '@renderer/store/messageBlock' import { newMessagesActions, selectMessagesForTopic } from '@renderer/store/newMessage' import { cancelThrottledBlockUpdate, throttledBlockUpdate } from '@renderer/store/thunk/messageThunk' -import { Topic } from '@renderer/types' -import { Chunk, ChunkType } from '@renderer/types/chunk' +import type { Topic } from '@renderer/types' +import type { Chunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import { AssistantMessageStatus, MessageBlockStatus } from '@renderer/types/newMessage' import { abortCompletion } from '@renderer/utils/abortController' import { isAbortError } from '@renderer/utils/error' @@ -25,14 +26,16 @@ import { IpcChannel } from '@shared/IpcChannel' import { Divider } from 'antd' import { cloneDeep, isEmpty } from 'lodash' import { last } from 'lodash' -import React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' import ChatWindow from '../chat/ChatWindow' import TranslateWindow from '../translate/TranslateWindow' import ClipboardPreview from './components/ClipboardPreview' -import FeatureMenus, { FeatureMenusRef } from './components/FeatureMenus' +import type { FeatureMenusRef } from './components/FeatureMenus' +import FeatureMenus from './components/FeatureMenus' import Footer from './components/Footer' import InputBar from './components/InputBar' diff --git a/src/renderer/src/windows/mini/home/components/ClipboardPreview.tsx b/src/renderer/src/windows/mini/home/components/ClipboardPreview.tsx index 60fe3a1851..f6456e97ca 100644 --- a/src/renderer/src/windows/mini/home/components/ClipboardPreview.tsx +++ b/src/renderer/src/windows/mini/home/components/ClipboardPreview.tsx @@ -1,7 +1,7 @@ import { CloseOutlined } from '@ant-design/icons' import CopyIcon from '@renderer/components/Icons/CopyIcon' import { Typography } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import styled from 'styled-components' interface ClipboardPreviewProps { diff --git a/src/renderer/src/windows/mini/home/components/FeatureMenus.tsx b/src/renderer/src/windows/mini/home/components/FeatureMenus.tsx index 59774e7047..ebe878644e 100644 --- a/src/renderer/src/windows/mini/home/components/FeatureMenus.tsx +++ b/src/renderer/src/windows/mini/home/components/FeatureMenus.tsx @@ -2,7 +2,8 @@ import { EnterOutlined } from '@ant-design/icons' import Scrollbar from '@renderer/components/Scrollbar' import { Col } from 'antd' import { FileText, Languages, Lightbulb, MessageSquare } from 'lucide-react' -import { Dispatch, SetStateAction, useImperativeHandle, useMemo, useState } from 'react' +import type { Dispatch, SetStateAction } from 'react' +import { useImperativeHandle, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/windows/mini/home/components/Footer.tsx b/src/renderer/src/windows/mini/home/components/Footer.tsx index abebc4ed70..04b4164404 100644 --- a/src/renderer/src/windows/mini/home/components/Footer.tsx +++ b/src/renderer/src/windows/mini/home/components/Footer.tsx @@ -1,7 +1,7 @@ import { ArrowLeftOutlined, LoadingOutlined } from '@ant-design/icons' import { Tag as AntdTag, Tooltip } from 'antd' import { CircleArrowLeft, Copy, Pin } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { useHotkeys } from 'react-hotkeys-hook' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/windows/mini/home/components/InputBar.tsx b/src/renderer/src/windows/mini/home/components/InputBar.tsx index cfd7d29457..648b72080e 100644 --- a/src/renderer/src/windows/mini/home/components/InputBar.tsx +++ b/src/renderer/src/windows/mini/home/components/InputBar.tsx @@ -1,8 +1,8 @@ import ModelAvatar from '@renderer/components/Avatar/ModelAvatar' import { useTimer } from '@renderer/hooks/useTimer' -import { Assistant } from '@renderer/types' +import type { Assistant } from '@renderer/types' import { Input as AntdInput } from 'antd' -import { InputRef } from 'rc-input/lib/interface' +import type { InputRef } from 'rc-input/lib/interface' import React, { useRef } from 'react' import styled from 'styled-components' diff --git a/src/renderer/src/windows/mini/translate/TranslateWindow.tsx b/src/renderer/src/windows/mini/translate/TranslateWindow.tsx index 681e96de1f..b84dafc45b 100644 --- a/src/renderer/src/windows/mini/translate/TranslateWindow.tsx +++ b/src/renderer/src/windows/mini/translate/TranslateWindow.tsx @@ -7,11 +7,12 @@ import db from '@renderer/databases' import { useDefaultModel } from '@renderer/hooks/useAssistant' import useTranslate from '@renderer/hooks/useTranslate' import { translateText } from '@renderer/services/TranslateService' -import { TranslateLanguage } from '@renderer/types' +import type { TranslateLanguage } from '@renderer/types' import { runAsyncFunction } from '@renderer/utils' import { Select } from 'antd' import { isEmpty } from 'lodash' -import { FC, useCallback, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import { useHotkeys } from 'react-hotkeys-hook' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/windows/selection/action/SelectionActionApp.tsx b/src/renderer/src/windows/selection/action/SelectionActionApp.tsx index c10f8f30cf..94ac46d0a8 100644 --- a/src/renderer/src/windows/selection/action/SelectionActionApp.tsx +++ b/src/renderer/src/windows/selection/action/SelectionActionApp.tsx @@ -7,7 +7,8 @@ import { IpcChannel } from '@shared/IpcChannel' import { Button, Slider, Tooltip } from 'antd' import { Droplet, Minus, Pin, X } from 'lucide-react' import { DynamicIcon } from 'lucide-react/dynamic' -import { FC, useCallback, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/windows/selection/action/components/ActionGeneral.tsx b/src/renderer/src/windows/selection/action/components/ActionGeneral.tsx index 28f5445f96..eb3c8abdd9 100644 --- a/src/renderer/src/windows/selection/action/components/ActionGeneral.tsx +++ b/src/renderer/src/windows/selection/action/components/ActionGeneral.tsx @@ -11,11 +11,12 @@ import { getDefaultTopic } from '@renderer/services/AssistantService' import { pauseTrace } from '@renderer/services/SpanManagerService' -import { Assistant, Topic } from '@renderer/types' +import type { Assistant, Topic } from '@renderer/types' import { abortCompletion } from '@renderer/utils/abortController' import type { SelectionActionItem } from '@shared/data/preference/preferenceTypes' import { ChevronDown } from 'lucide-react' -import React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/windows/selection/action/components/ActionTranslate.tsx b/src/renderer/src/windows/selection/action/components/ActionTranslate.tsx index b9a0c668e5..b5e187e851 100644 --- a/src/renderer/src/windows/selection/action/components/ActionTranslate.tsx +++ b/src/renderer/src/windows/selection/action/components/ActionTranslate.tsx @@ -9,7 +9,7 @@ import { useTopicMessages } from '@renderer/hooks/useMessageOperations' import useTranslate from '@renderer/hooks/useTranslate' import MessageContent from '@renderer/pages/home/Messages/MessageContent' import { getDefaultTopic, getDefaultTranslateAssistant } from '@renderer/services/AssistantService' -import { Assistant, Topic, TranslateLanguage, TranslateLanguageCode } from '@renderer/types' +import type { Assistant, Topic, TranslateLanguage, TranslateLanguageCode } from '@renderer/types' import { runAsyncFunction } from '@renderer/utils' import { abortCompletion } from '@renderer/utils/abortController' import { detectLanguage } from '@renderer/utils/translate' @@ -17,7 +17,8 @@ import { defaultLanguage } from '@shared/config/constant' import type { SelectionActionItem } from '@shared/data/preference/preferenceTypes' import { Tooltip } from 'antd' import { ArrowRightFromLine, ArrowRightToLine, ChevronDown, CircleHelp, Globe } from 'lucide-react' -import { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/windows/selection/action/components/ActionUtils.ts b/src/renderer/src/windows/selection/action/components/ActionUtils.ts index 7ef1166258..16537f0e81 100644 --- a/src/renderer/src/windows/selection/action/components/ActionUtils.ts +++ b/src/renderer/src/windows/selection/action/components/ActionUtils.ts @@ -6,8 +6,9 @@ import store from '@renderer/store' import { updateOneBlock, upsertManyBlocks, upsertOneBlock } from '@renderer/store/messageBlock' import { newMessagesActions } from '@renderer/store/newMessage' import { cancelThrottledBlockUpdate, throttledBlockUpdate } from '@renderer/store/thunk/messageThunk' -import { Assistant, Topic } from '@renderer/types' -import { Chunk, ChunkType } from '@renderer/types/chunk' +import type { Assistant, Topic } from '@renderer/types' +import type { Chunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import { AssistantMessageStatus, MessageBlockStatus } from '@renderer/types/newMessage' import { formatErrorMessage, isAbortError } from '@renderer/utils/error' import { createErrorBlock, createMainTextBlock, createThinkingBlock } from '@renderer/utils/messageUtils/create' diff --git a/src/renderer/src/windows/selection/action/components/WindowFooter.tsx b/src/renderer/src/windows/selection/action/components/WindowFooter.tsx index 5c0af02079..4048e8739d 100644 --- a/src/renderer/src/windows/selection/action/components/WindowFooter.tsx +++ b/src/renderer/src/windows/selection/action/components/WindowFooter.tsx @@ -2,7 +2,8 @@ import { LoadingOutlined } from '@ant-design/icons' import { RefreshIcon } from '@renderer/components/Icons' import { useTimer } from '@renderer/hooks/useTimer' import { CircleX, Copy, Pause } from 'lucide-react' -import { FC, useEffect, useRef, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useRef, useState } from 'react' import { useHotkeys } from 'react-hotkeys-hook' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/windows/selection/action/entryPoint.tsx b/src/renderer/src/windows/selection/action/entryPoint.tsx index 75d11046a3..adff4b1515 100644 --- a/src/renderer/src/windows/selection/action/entryPoint.tsx +++ b/src/renderer/src/windows/selection/action/entryPoint.tsx @@ -13,7 +13,8 @@ import { CodeStyleProvider } from '@renderer/context/CodeStyleProvider' import { ThemeProvider } from '@renderer/context/ThemeProvider' import storeSyncService from '@renderer/services/StoreSyncService' import store, { persistor } from '@renderer/store' -import { FC, useEffect } from 'react' +import type { FC } from 'react' +import { useEffect } from 'react' import { createRoot } from 'react-dom/client' import { Provider } from 'react-redux' import { PersistGate } from 'redux-persist/integration/react' diff --git a/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx b/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx index 02ebe673cd..da04a4d936 100644 --- a/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx +++ b/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx @@ -11,9 +11,10 @@ import { IpcChannel } from '@shared/IpcChannel' import { Avatar } from 'antd' import { ClipboardCheck, ClipboardCopy, ClipboardX, MessageSquareHeart } from 'lucide-react' import { DynamicIcon } from 'lucide-react/dynamic' -import { FC, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' -import { TextSelectionData } from 'selection-hook' +import type { TextSelectionData } from 'selection-hook' import styled from 'styled-components' const logger = loggerService.withContext('SelectionToolbar') diff --git a/src/renderer/src/windows/selection/toolbar/entryPoint.tsx b/src/renderer/src/windows/selection/toolbar/entryPoint.tsx index 16efeb3d81..8bbfd270b6 100644 --- a/src/renderer/src/windows/selection/toolbar/entryPoint.tsx +++ b/src/renderer/src/windows/selection/toolbar/entryPoint.tsx @@ -3,7 +3,7 @@ import '@ant-design/v5-patch-for-react-19' import { preferenceService } from '@data/PreferenceService' import { loggerService } from '@logger' import { ThemeProvider } from '@renderer/context/ThemeProvider' -import { FC } from 'react' +import type { FC } from 'react' import { createRoot } from 'react-dom/client' import SelectionToolbar from './SelectionToolbar' diff --git a/src/renderer/src/workers/shiki-stream.worker.ts b/src/renderer/src/workers/shiki-stream.worker.ts index bcc9c89646..a3803f6009 100644 --- a/src/renderer/src/workers/shiki-stream.worker.ts +++ b/src/renderer/src/workers/shiki-stream.worker.ts @@ -5,7 +5,8 @@ import { LRUCache } from 'lru-cache' import type { HighlighterCore, SpecialLanguage, ThemedToken } from 'shiki/core' // 注意保持 ShikiStreamTokenizer 依赖简单,避免打包出问题 -import { ShikiStreamTokenizer, ShikiStreamTokenizerOptions } from '../services/ShikiStreamTokenizer' +import type { ShikiStreamTokenizerOptions } from '../services/ShikiStreamTokenizer' +import { ShikiStreamTokenizer } from '../services/ShikiStreamTokenizer' const logger = loggerService.initWindowSource('Worker').withContext('ShikiStream')