diff --git a/.oxlintrc.json b/.oxlintrc.json index 5bd988159..5d63538e2 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -140,7 +140,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/packages/aiCore/src/core/middleware/manager.ts b/packages/aiCore/src/core/middleware/manager.ts index bcb044b3a..f285b8ecd 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 50b5210b5..f500b0a91 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 625eddbab..059c82380 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 20bf3d76d..ed9fa910e 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 57cb72366..560d5bbea 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 ffeb15185..ecd53e633 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 a2cc7d9af..274fdcee5 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 33ed6189e..4937b2560 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 fd68da27d..42bd17e09 100644 --- a/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/helper.ts +++ b/packages/aiCore/src/core/plugins/built-in/webSearchPlugin/helper.ts @@ -1,10 +1,11 @@ -import { anthropic } from '@ai-sdk/anthropic' -import { google } from '@ai-sdk/google' -import { openai } from '@ai-sdk/openai' -import { InferToolInput, InferToolOutput, type Tool } from 'ai' +import type { anthropic } from '@ai-sdk/anthropic' +import type { google } from '@ai-sdk/google' +import type { openai } from '@ai-sdk/openai' +import type { InferToolInput, InferToolOutput } from 'ai' +import { type Tool } from 'ai' -import { ProviderOptionsMap } from '../../../options/types' -import { OpenRouterSearchConfig } from './openrouter' +import type { ProviderOptionsMap } from '../../../options/types' +import type { OpenRouterSearchConfig } from './openrouter' /** * 从 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 abd3ce3e2..34eba7963 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 { createOpenRouterOptions, 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 4c927ed1d..40f5836c4 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 0283d634b..e87274be9 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 a8aefd44b..67d10f3f2 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 0d507d5cc..7ca4f6b0c 100644 --- a/packages/aiCore/src/core/providers/schemas.ts +++ b/packages/aiCore/src/core/providers/schemas.ts @@ -10,10 +10,11 @@ import { createGoogleGenerativeAI } from '@ai-sdk/google' import { createHuggingFace } from '@ai-sdk/huggingface' import { createOpenAI, type OpenAIProviderSettings } from '@ai-sdk/openai' import { createOpenAICompatible } from '@ai-sdk/openai-compatible' -import { LanguageModelV2 } from '@ai-sdk/provider' +import type { LanguageModelV2 } from '@ai-sdk/provider' import { createXai } from '@ai-sdk/xai' import { createOpenRouter } from '@openrouter/ai-sdk-provider' -import { customProvider, Provider } from 'ai' +import type { Provider } from 'ai' +import { customProvider } from 'ai' import * as z from 'zod' /** diff --git a/packages/aiCore/src/core/providers/types.ts b/packages/aiCore/src/core/providers/types.ts index f862f43a7..6f1ec2c40 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 bde5779fd..217319aac 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 ab764bacd..85c1fb64d 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 37aa4fec3..3dae7d0c2 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 d0100d2bc..a2fc08b92 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 fbdcf4633..b95e00be4 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 00221c5bf..eb0fefb59 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 a226f5d10..1a5eafff0 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 cc5ba795f..6b181fa3c 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 48d769daf..0bc97b82e 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 b20a61de0..3d3e1a73a 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 41015b208..c09ec352d 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 8a7281d95..ba88e322d 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 37f705eb8..aa86353ea 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 aee952501..79fa4c439 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 a2688fc02..2962ae868 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 ee99722b7..d529c3ca5 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 0b8af5813..fdf221f3f 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/anthropic/index.ts b/packages/shared/anthropic/index.ts index 777cbd13e..b9e9cb884 100644 --- a/packages/shared/anthropic/index.ts +++ b/packages/shared/anthropic/index.ts @@ -9,9 +9,9 @@ */ import Anthropic from '@anthropic-ai/sdk' -import { TextBlockParam } from '@anthropic-ai/sdk/resources' +import type { TextBlockParam } from '@anthropic-ai/sdk/resources' import { loggerService } from '@logger' -import { Provider } from '@types' +import type { Provider } from '@types' import type { ModelMessage } from 'ai' const logger = loggerService.withContext('anthropic-sdk') diff --git a/packages/shared/config/types.ts b/packages/shared/config/types.ts index 8012ed902..6d76173e2 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/src/main/apiServer/config.ts b/src/main/apiServer/config.ts index c962726d2..60b1986be 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 93548c4a5..bf44e4eb3 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 401a8cad8..03c2d5617 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 da3cfe0c4..c136fecdd 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/agents/handlers/agents.ts b/src/main/apiServer/routes/agents/handlers/agents.ts index d6f31a555..53e5f9433 100644 --- a/src/main/apiServer/routes/agents/handlers/agents.ts +++ b/src/main/apiServer/routes/agents/handlers/agents.ts @@ -1,7 +1,8 @@ import { loggerService } from '@logger' import { AgentModelValidationError, agentService, sessionService } from '@main/services/agents' -import { ListAgentsResponse, type ReplaceAgentRequest, type UpdateAgentRequest } from '@types' -import { Request, Response } from 'express' +import type { ListAgentsResponse } from '@types' +import { type ReplaceAgentRequest, type UpdateAgentRequest } from '@types' +import type { Request, Response } from 'express' import type { ValidationRequest } from '../validators/zodValidator' diff --git a/src/main/apiServer/routes/agents/handlers/messages.ts b/src/main/apiServer/routes/agents/handlers/messages.ts index e18fadc0e..1b547abba 100644 --- a/src/main/apiServer/routes/agents/handlers/messages.ts +++ b/src/main/apiServer/routes/agents/handlers/messages.ts @@ -2,7 +2,7 @@ import { loggerService } from '@logger' import { MESSAGE_STREAM_TIMEOUT_MS } from '@main/apiServer/config/timeouts' import { createStreamAbortController, STREAM_TIMEOUT_REASON } from '@main/apiServer/utils/createStreamAbortController' import { agentService, sessionMessageService, sessionService } from '@main/services/agents' -import { Request, Response } from 'express' +import type { Request, Response } from 'express' const logger = loggerService.withContext('ApiServerMessagesHandlers') diff --git a/src/main/apiServer/routes/agents/handlers/sessions.ts b/src/main/apiServer/routes/agents/handlers/sessions.ts index 72875dab8..efd5d8257 100644 --- a/src/main/apiServer/routes/agents/handlers/sessions.ts +++ b/src/main/apiServer/routes/agents/handlers/sessions.ts @@ -1,7 +1,8 @@ import { loggerService } from '@logger' import { AgentModelValidationError, sessionMessageService, sessionService } from '@main/services/agents' -import { ListAgentSessionsResponse, type ReplaceSessionRequest, UpdateSessionResponse } from '@types' -import { Request, Response } from 'express' +import type { ListAgentSessionsResponse, UpdateSessionResponse } from '@types' +import { type ReplaceSessionRequest } from '@types' +import type { Request, Response } from 'express' import type { ValidationRequest } from '../validators/zodValidator' diff --git a/src/main/apiServer/routes/agents/middleware/common.ts b/src/main/apiServer/routes/agents/middleware/common.ts index d45f197e4..7ca5db8ba 100644 --- a/src/main/apiServer/routes/agents/middleware/common.ts +++ b/src/main/apiServer/routes/agents/middleware/common.ts @@ -1,4 +1,4 @@ -import { Request, Response } from 'express' +import type { Request, Response } from 'express' import { agentService } from '../../../../services/agents' import { loggerService } from '../../../../services/LoggerService' diff --git a/src/main/apiServer/routes/agents/validators/zodValidator.ts b/src/main/apiServer/routes/agents/validators/zodValidator.ts index 1a0e83786..971c1445e 100644 --- a/src/main/apiServer/routes/agents/validators/zodValidator.ts +++ b/src/main/apiServer/routes/agents/validators/zodValidator.ts @@ -1,5 +1,6 @@ -import { NextFunction, Request, Response } from 'express' -import { ZodError, ZodType } from 'zod' +import type { NextFunction, Request, Response } from 'express' +import type { ZodType } from 'zod' +import { ZodError } from 'zod' export interface ValidationRequest extends Request { validatedBody?: any diff --git a/src/main/apiServer/routes/chat.ts b/src/main/apiServer/routes/chat.ts index baf29aae0..3dd58b965 100644 --- a/src/main/apiServer/routes/chat.ts +++ b/src/main/apiServer/routes/chat.ts @@ -1,5 +1,6 @@ -import { ChatCompletionCreateParams } from '@cherrystudio/openai/resources' -import express, { Request, Response } from 'express' +import type { ChatCompletionCreateParams } from '@cherrystudio/openai/resources' +import type { Request, Response } from 'express' +import express from 'express' import { loggerService } from '../../services/LoggerService' import { diff --git a/src/main/apiServer/routes/mcp.ts b/src/main/apiServer/routes/mcp.ts index 647419471..90626af15 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/messages.ts b/src/main/apiServer/routes/messages.ts index 3b7c33819..02ce0544e 100644 --- a/src/main/apiServer/routes/messages.ts +++ b/src/main/apiServer/routes/messages.ts @@ -1,7 +1,8 @@ -import { MessageCreateParams } from '@anthropic-ai/sdk/resources' +import type { MessageCreateParams } from '@anthropic-ai/sdk/resources' import { loggerService } from '@logger' -import { Provider } from '@types' -import express, { Request, Response } from 'express' +import type { Provider } from '@types' +import type { Request, Response } from 'express' +import express from 'express' import { messagesService } from '../services/messages' import { getProviderById, validateModelId } from '../utils' diff --git a/src/main/apiServer/routes/models.ts b/src/main/apiServer/routes/models.ts index d926a2352..8481e1ea5 100644 --- a/src/main/apiServer/routes/models.ts +++ b/src/main/apiServer/routes/models.ts @@ -1,5 +1,7 @@ -import { ApiModelsFilterSchema, ApiModelsResponse } from '@types' -import express, { Request, Response } from 'express' +import type { ApiModelsResponse } from '@types' +import { ApiModelsFilterSchema } from '@types' +import type { Request, Response } from 'express' +import express from 'express' import { loggerService } from '../../services/LoggerService' import { modelsService } from '../services/models' diff --git a/src/main/apiServer/services/chat-completion.ts b/src/main/apiServer/services/chat-completion.ts index 63eed3ed8..a7c6160e8 100644 --- a/src/main/apiServer/services/chat-completion.ts +++ b/src/main/apiServer/services/chat-completion.ts @@ -1,9 +1,10 @@ import OpenAI from '@cherrystudio/openai' -import { ChatCompletionCreateParams, ChatCompletionCreateParamsStreaming } from '@cherrystudio/openai/resources' -import { Provider } from '@types' +import type { ChatCompletionCreateParams, ChatCompletionCreateParamsStreaming } from '@cherrystudio/openai/resources' +import type { Provider } from '@types' import { loggerService } from '../../services/LoggerService' -import { ModelValidationError, validateModelId } from '../utils' +import type { ModelValidationError } from '../utils' +import { validateModelId } from '../utils' const logger = loggerService.withContext('ChatCompletionService') diff --git a/src/main/apiServer/services/mcp.ts b/src/main/apiServer/services/mcp.ts index c03a90f93..d75fadee6 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 { getMcpServerById, getMCPServersFromRedux } from '../utils/mcp' diff --git a/src/main/apiServer/services/messages.ts b/src/main/apiServer/services/messages.ts index edce9a952..8b46deaa8 100644 --- a/src/main/apiServer/services/messages.ts +++ b/src/main/apiServer/services/messages.ts @@ -1,10 +1,10 @@ -import Anthropic from '@anthropic-ai/sdk' -import { MessageCreateParams, MessageStreamEvent } from '@anthropic-ai/sdk/resources' +import type Anthropic from '@anthropic-ai/sdk' +import type { MessageCreateParams, MessageStreamEvent } from '@anthropic-ai/sdk/resources' import { loggerService } from '@logger' import anthropicService from '@main/services/AnthropicService' import { buildClaudeCodeSystemMessage, getSdkClient } from '@shared/anthropic' -import { Provider } from '@types' -import { Response } from 'express' +import type { Provider } from '@types' +import type { Response } from 'express' const logger = loggerService.withContext('MessagesService') const EXCLUDED_FORWARD_HEADERS: ReadonlySet = new Set([ diff --git a/src/main/apiServer/services/models.ts b/src/main/apiServer/services/models.ts index 660686ef4..a32d6d37d 100644 --- a/src/main/apiServer/services/models.ts +++ b/src/main/apiServer/services/models.ts @@ -1,6 +1,6 @@ import { isEmpty } from 'lodash' -import { ApiModel, ApiModelsFilter, ApiModelsResponse } from '../../../renderer/src/types/apiModels' +import type { ApiModel, ApiModelsFilter, ApiModelsResponse } from '../../../renderer/src/types/apiModels' import { loggerService } from '../../services/LoggerService' import { getAvailableProviders, diff --git a/src/main/apiServer/utils/index.ts b/src/main/apiServer/utils/index.ts index 7fb0c3511..f9f751c55 100644 --- a/src/main/apiServer/utils/index.ts +++ b/src/main/apiServer/utils/index.ts @@ -1,7 +1,7 @@ import { CacheService } from '@main/services/CacheService' import { loggerService } from '@main/services/LoggerService' import { reduxService } from '@main/services/ReduxService' -import { ApiModel, Model, Provider } from '@types' +import type { ApiModel, 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 40a900652..f110df584 100644 --- a/src/main/apiServer/utils/mcp.ts +++ b/src/main/apiServer/utils/mcp.ts @@ -1,8 +1,9 @@ import { CacheService } from '@main/services/CacheService' 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/ipc.ts b/src/main/ipc.ts index 08fef1195..0e63f1160 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -8,11 +8,12 @@ import { generateSignature } from '@main/integration/cherryai' 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 { MIN_WINDOW_HEIGHT, MIN_WINDOW_WIDTH, UpgradeChannel } from '@shared/config/constant' +import type { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' +import type { UpgradeChannel } from '@shared/config/constant' +import { MIN_WINDOW_HEIGHT, MIN_WINDOW_WIDTH } from '@shared/config/constant' import { IpcChannel } from '@shared/IpcChannel' import type { PluginError } from '@types' -import { +import type { AgentPersistedMessage, FileMetadata, Notification, @@ -23,7 +24,8 @@ import { ThemeMode } 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 { agentMessageRepository } from './services/agents/database' diff --git a/src/main/knowledge/embedjs/embeddings/Embeddings.ts b/src/main/knowledge/embedjs/embeddings/Embeddings.ts index 17bb8ff47..3f5b6ced1 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 f34555bed..8a780d561 100644 --- a/src/main/knowledge/embedjs/embeddings/EmbeddingsFactory.ts +++ b/src/main/knowledge/embedjs/embeddings/EmbeddingsFactory.ts @@ -1,7 +1,7 @@ import type { BaseEmbeddings } from '@cherrystudio/embedjs-interfaces' import { OllamaEmbeddings } from '@cherrystudio/embedjs-ollama' import { OpenAiEmbeddings } from '@cherrystudio/embedjs-openai' -import { ApiClient } from '@types' +import type { ApiClient } from '@types' import { net } from 'electron' import { VoyageEmbeddings } from './VoyageEmbeddings' diff --git a/src/main/knowledge/embedjs/loader/index.ts b/src/main/knowledge/embedjs/loader/index.ts index 4b3841819..9f1efd268 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 03825bf4d..7e325966a 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 daf990149..ed4a5fb8d 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 3899a3d25..64169d935 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 6708e8f93..4e2fb0960 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 1976f64c0..0e93af674 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 d5ad3d4e1..a8f7b350e 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/OpenMineruPreprocessProvider.ts b/src/main/knowledge/preprocess/OpenMineruPreprocessProvider.ts index 4225b8700..9a3bca65a 100644 --- a/src/main/knowledge/preprocess/OpenMineruPreprocessProvider.ts +++ b/src/main/knowledge/preprocess/OpenMineruPreprocessProvider.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' import FormData from 'form-data' diff --git a/src/main/knowledge/preprocess/PreprocessProvider.ts b/src/main/knowledge/preprocess/PreprocessProvider.ts index 44a34f64a..f0b3d8f12 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 e82460174..94d4e70d5 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 1e321e2d8..ddf5a089c 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 e3ac5e8c2..96beffbb4 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 59de4b047..26cb61f6b 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 e5932b9f4..8953bfe85 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 59ee3fb47..9bd8e69f7 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 200190f54..b348f2f9b 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 9e04547e3..e0e782f72 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 58f24661b..df92f1ea5 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 e81319f02..2bd13f85e 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 d11a4f258..7ba6bb65f 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 74266d7d3..2323701e4 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 DiDiMcpServer from './didi-mcp' diff --git a/src/main/mcpServers/sequentialthinking.ts b/src/main/mcpServers/sequentialthinking.ts index 90c1c329d..485e0279e 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 76a5eca61..40452b6d1 100644 --- a/src/main/services/ApiServerService.ts +++ b/src/main/services/ApiServerService.ts @@ -1,5 +1,5 @@ import { IpcChannel } from '@shared/IpcChannel' -import { +import type { ApiServerConfig, GetApiServerStatusResult, RestartApiServerStatusResult, diff --git a/src/main/services/AppMenuService.ts b/src/main/services/AppMenuService.ts index 749251650..abb494f70 100644 --- a/src/main/services/AppMenuService.ts +++ b/src/main/services/AppMenuService.ts @@ -2,7 +2,8 @@ import { isMac } from '@main/constant' import { windowService } from '@main/services/WindowService' import { locales } from '@main/utils/locales' import { IpcChannel } from '@shared/IpcChannel' -import { app, Menu, MenuItemConstructorOptions, shell } from 'electron' +import type { MenuItemConstructorOptions } from 'electron' +import { app, Menu, shell } from 'electron' import { configManager } from './ConfigManager' export class AppMenuService { diff --git a/src/main/services/AppUpdater.ts b/src/main/services/AppUpdater.ts index ec0f1b97e..168084bd3 100644 --- a/src/main/services/AppUpdater.ts +++ b/src/main/services/AppUpdater.ts @@ -4,9 +4,11 @@ import { getIpCountry } from '@main/utils/ipService' import { generateUserAgent } from '@main/utils/systemInfo' import { FeedUrl, UpgradeChannel } from '@shared/config/constant' import { IpcChannel } from '@shared/IpcChannel' -import { CancellationToken, UpdateInfo } from 'builder-util-runtime' +import type { UpdateInfo } from 'builder-util-runtime' +import { CancellationToken } from 'builder-util-runtime' import { app, net } from 'electron' -import { AppUpdater as _AppUpdater, autoUpdater, Logger, NsisUpdater, UpdateCheckResult } from 'electron-updater' +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 c6d3ee184..f331254fd 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/CodeToolsService.ts b/src/main/services/CodeToolsService.ts index d6eea8a9e..3a93a40d7 100644 --- a/src/main/services/CodeToolsService.ts +++ b/src/main/services/CodeToolsService.ts @@ -7,13 +7,12 @@ import { isMac, isWin } from '@main/constant' import { removeEnvProxy } from '@main/utils' import { isUserInChina } from '@main/utils/ipService' import { getBinaryName } from '@main/utils/process' +import type { TerminalConfig, TerminalConfigWithCommand } from '@shared/config/constant' import { codeTools, MACOS_TERMINALS, MACOS_TERMINALS_WITH_COMMANDS, terminalApps, - TerminalConfig, - TerminalConfigWithCommand, WINDOWS_TERMINALS, WINDOWS_TERMINALS_WITH_COMMANDS } from '@shared/config/constant' diff --git a/src/main/services/ConfigManager.ts b/src/main/services/ConfigManager.ts index 3cab0bf91..61e285ac1 100644 --- a/src/main/services/ConfigManager.ts +++ b/src/main/services/ConfigManager.ts @@ -1,5 +1,7 @@ -import { defaultLanguage, UpgradeChannel, ZOOM_SHORTCUTS } from '@shared/config/constant' -import { LanguageVarious, Shortcut, ThemeMode } from '@types' +import type { UpgradeChannel } from '@shared/config/constant' +import { defaultLanguage, ZOOM_SHORTCUTS } from '@shared/config/constant' +import type { LanguageVarious, Shortcut } from '@types' +import { ThemeMode } from '@types' import { app } from 'electron' import Store from 'electron-store' import { v4 as uuidv4 } from 'uuid' diff --git a/src/main/services/ContextMenu.ts b/src/main/services/ContextMenu.ts index 411d6e075..e735a2501 100644 --- a/src/main/services/ContextMenu.ts +++ b/src/main/services/ContextMenu.ts @@ -1,4 +1,5 @@ -import { Menu, MenuItemConstructorOptions } from 'electron' +import type { MenuItemConstructorOptions } from 'electron' +import { Menu } from 'electron' import { locales } from '../utils/locales' import { configManager } from './ConfigManager' diff --git a/src/main/services/FileStorage.ts b/src/main/services/FileStorage.ts index 2244b97cb..00dda778b 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 4e8707b2b..f139b3e2c 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 f1bfbaa84..ba3340780 100644 --- a/src/main/services/MCPService.ts +++ b/src/main/services/MCPService.ts @@ -10,7 +10,8 @@ import { getBinaryName, getBinaryPath } from '@main/utils/process' import getLoginShellEnvironment from '@main/utils/shell-env' 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 c2efe35d1..8f5a90f76 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 d2e4db20c..70fd92a28 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 fa9261aa7..5a599b409 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 6fcf20da1..a4a2211a2 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 13b4546e5..b4b259683 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 97216e6a6..583dbbd95 100644 --- a/src/main/services/ShortcutService.ts +++ b/src/main/services/ShortcutService.ts @@ -1,7 +1,8 @@ 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 98ff36d29..62707388a 100644 --- a/src/main/services/SpanCacheService.ts +++ b/src/main/services/SpanCacheService.ts @@ -1,7 +1,8 @@ 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 205d7fdee..41c64e06c 100644 --- a/src/main/services/TrayService.ts +++ b/src/main/services/TrayService.ts @@ -1,6 +1,7 @@ import { isLinux, isMac, isWin } from '@main/constant' import { locales } from '@main/utils/locales' -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 11a2d7ebf..150227f98 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/WebSocketService.ts b/src/main/services/WebSocketService.ts index f1cbe8f42..f81251717 100644 --- a/src/main/services/WebSocketService.ts +++ b/src/main/services/WebSocketService.ts @@ -2,7 +2,8 @@ import { loggerService } from '@logger' import * as fs from 'fs' import { networkInterfaces } from 'os' import * as path from 'path' -import { Server, Socket } from 'socket.io' +import type { Socket } from 'socket.io' +import { Server } from 'socket.io' import { windowService } from './WindowService' diff --git a/src/main/services/__tests__/AppUpdater.test.ts b/src/main/services/__tests__/AppUpdater.test.ts index 4b3ac70d4..1be0e2f48 100644 --- a/src/main/services/__tests__/AppUpdater.test.ts +++ b/src/main/services/__tests__/AppUpdater.test.ts @@ -1,4 +1,4 @@ -import { UpdateInfo } from 'builder-util-runtime' +import type { UpdateInfo } from 'builder-util-runtime' import { beforeEach, describe, expect, it, vi } from 'vitest' // Mock dependencies diff --git a/src/main/services/agents/BaseService.ts b/src/main/services/agents/BaseService.ts index 86d4aef52..d96ce1b8e 100644 --- a/src/main/services/agents/BaseService.ts +++ b/src/main/services/agents/BaseService.ts @@ -1,8 +1,10 @@ import { type Client, createClient } from '@libsql/client' import { loggerService } from '@logger' import { mcpApiService } from '@main/apiServer/services/mcp' -import { ModelValidationError, validateModelId } from '@main/apiServer/utils' -import { AgentType, MCPTool, objectKeys, SlashCommand, Tool } from '@types' +import type { ModelValidationError } from '@main/apiServer/utils' +import { validateModelId } from '@main/apiServer/utils' +import type { AgentType, MCPTool, SlashCommand, Tool } from '@types' +import { objectKeys } from '@types' import { drizzle, type LibSQLDatabase } from 'drizzle-orm/libsql' import fs from 'fs' import path from 'path' @@ -10,7 +12,8 @@ import path from 'path' import { MigrationService } from './database/MigrationService' import * as schema from './database/schema' import { dbPath } from './drizzle.config' -import { AgentModelField, AgentModelValidationError } from './errors' +import type { AgentModelField } from './errors' +import { AgentModelValidationError } from './errors' import { builtinSlashCommands } from './services/claudecode/commands' import { builtinTools } from './services/claudecode/tools' diff --git a/src/main/services/agents/database/MigrationService.ts b/src/main/services/agents/database/MigrationService.ts index fce09bc68..834e39dd8 100644 --- a/src/main/services/agents/database/MigrationService.ts +++ b/src/main/services/agents/database/MigrationService.ts @@ -5,7 +5,7 @@ import { type LibSQLDatabase } from 'drizzle-orm/libsql' import fs from 'fs' import path from 'path' -import * as schema from './schema' +import type * as schema from './schema' import { migrations, type NewMigration } from './schema/migrations.schema' const logger = loggerService.withContext('MigrationService') diff --git a/src/main/services/agents/errors.ts b/src/main/services/agents/errors.ts index b0df2341d..95f1202e8 100644 --- a/src/main/services/agents/errors.ts +++ b/src/main/services/agents/errors.ts @@ -1,5 +1,5 @@ -import { ModelValidationError } from '@main/apiServer/utils' -import { AgentType } from '@types' +import type { ModelValidationError } from '@main/apiServer/utils' +import type { AgentType } from '@types' export type AgentModelField = 'model' | 'plan_model' | 'small_model' diff --git a/src/main/services/agents/interfaces/AgentStreamInterface.ts b/src/main/services/agents/interfaces/AgentStreamInterface.ts index 1b9c6f136..7b5251525 100644 --- a/src/main/services/agents/interfaces/AgentStreamInterface.ts +++ b/src/main/services/agents/interfaces/AgentStreamInterface.ts @@ -1,9 +1,9 @@ // Agent-agnostic streaming interface // This interface should be implemented by all agent services -import { EventEmitter } from 'node:events' +import type { EventEmitter } from 'node:events' -import { GetAgentSessionResponse } from '@types' +import type { GetAgentSessionResponse } from '@types' import type { TextStreamPart } from 'ai' // Generic agent stream event that works with any agent type diff --git a/src/main/services/agents/services/AgentService.ts b/src/main/services/agents/services/AgentService.ts index c3ae2fb79..07ed89a0f 100644 --- a/src/main/services/agents/services/AgentService.ts +++ b/src/main/services/agents/services/AgentService.ts @@ -3,8 +3,7 @@ import path from 'node:path' import { loggerService } from '@logger' import { pluginService } from '@main/services/agents/plugins/PluginService' import { getDataPath } from '@main/utils' -import { - AgentBaseSchema, +import type { AgentEntity, CreateAgentRequest, CreateAgentResponse, @@ -13,11 +12,12 @@ import { UpdateAgentRequest, UpdateAgentResponse } from '@types' +import { AgentBaseSchema } from '@types' import { asc, count, desc, eq } from 'drizzle-orm' import { BaseService } from '../BaseService' import { type AgentRow, agentsTable, type InsertAgentRow } from '../database/schema' -import { AgentModelField } from '../errors' +import type { AgentModelField } from '../errors' const logger = loggerService.withContext('AgentService') diff --git a/src/main/services/agents/services/SessionMessageService.ts b/src/main/services/agents/services/SessionMessageService.ts index f7d44e161..46435fa37 100644 --- a/src/main/services/agents/services/SessionMessageService.ts +++ b/src/main/services/agents/services/SessionMessageService.ts @@ -5,12 +5,12 @@ import type { GetAgentSessionResponse, ListOptions } from '@types' -import { TextStreamPart } from 'ai' +import type { TextStreamPart } from 'ai' import { and, desc, eq, not } from 'drizzle-orm' import { BaseService } from '../BaseService' import { sessionMessagesTable } from '../database/schema' -import { AgentStreamEvent } from '../interfaces/AgentStreamInterface' +import type { AgentStreamEvent } from '../interfaces/AgentStreamInterface' import ClaudeCodeService from './claudecode' const logger = loggerService.withContext('SessionMessageService') diff --git a/src/main/services/agents/services/SessionService.ts b/src/main/services/agents/services/SessionService.ts index 5fcb60600..62dad3ed5 100644 --- a/src/main/services/agents/services/SessionService.ts +++ b/src/main/services/agents/services/SessionService.ts @@ -1,3 +1,4 @@ +import type { UpdateSessionResponse } from '@types' import { AgentBaseSchema, type AgentEntity, @@ -5,14 +6,13 @@ import { type CreateSessionRequest, type GetAgentSessionResponse, type ListOptions, - type UpdateSessionRequest, - UpdateSessionResponse + type UpdateSessionRequest } from '@types' import { and, count, desc, eq, type SQL } from 'drizzle-orm' import { BaseService } from '../BaseService' import { agentsTable, type InsertSessionRow, type SessionRow, sessionsTable } from '../database/schema' -import { AgentModelField } from '../errors' +import type { AgentModelField } from '../errors' export class SessionService extends BaseService { private static instance: SessionService | null = null diff --git a/src/main/services/agents/services/claudecode/commands.ts b/src/main/services/agents/services/claudecode/commands.ts index ce90e0978..f30d62057 100644 --- a/src/main/services/agents/services/claudecode/commands.ts +++ b/src/main/services/agents/services/claudecode/commands.ts @@ -1,4 +1,4 @@ -import { SlashCommand } from '@types' +import type { SlashCommand } from '@types' export const builtinSlashCommands: SlashCommand[] = [ { command: '/add-dir', description: 'Add additional working directories' }, diff --git a/src/main/services/agents/services/claudecode/index.ts b/src/main/services/agents/services/claudecode/index.ts index e8e79694d..c9a8c677c 100644 --- a/src/main/services/agents/services/claudecode/index.ts +++ b/src/main/services/agents/services/claudecode/index.ts @@ -2,15 +2,16 @@ import { EventEmitter } from 'node:events' import { createRequire } from 'node:module' -import { CanUseTool, McpHttpServerConfig, Options, query, SDKMessage } from '@anthropic-ai/claude-agent-sdk' +import type { CanUseTool, McpHttpServerConfig, Options, SDKMessage } from '@anthropic-ai/claude-agent-sdk' +import { query } from '@anthropic-ai/claude-agent-sdk' import { loggerService } from '@logger' import { config as apiConfigService } from '@main/apiServer/config' import { validateModelId } from '@main/apiServer/utils' import getLoginShellEnvironment from '@main/utils/shell-env' import { app } from 'electron' -import { GetAgentSessionResponse } from '../..' -import { AgentServiceInterface, AgentStream, AgentStreamEvent } from '../../interfaces/AgentStreamInterface' +import type { GetAgentSessionResponse } from '../..' +import type { AgentServiceInterface, AgentStream, AgentStreamEvent } from '../../interfaces/AgentStreamInterface' import { promptForToolApproval } from './tool-permissions' import { ClaudeStreamState, transformSDKMessageToStreamParts } from './transform' diff --git a/src/main/services/agents/services/claudecode/tool-permissions.ts b/src/main/services/agents/services/claudecode/tool-permissions.ts index 1479b13ad..c95f4c679 100644 --- a/src/main/services/agents/services/claudecode/tool-permissions.ts +++ b/src/main/services/agents/services/claudecode/tool-permissions.ts @@ -1,6 +1,6 @@ import { randomUUID } from 'node:crypto' -import { PermissionResult, PermissionUpdate } from '@anthropic-ai/claude-agent-sdk' +import type { PermissionResult, PermissionUpdate } from '@anthropic-ai/claude-agent-sdk' import { loggerService } from '@logger' import { IpcChannel } from '@shared/IpcChannel' import { ipcMain } from 'electron' diff --git a/src/main/services/agents/services/claudecode/tools.ts b/src/main/services/agents/services/claudecode/tools.ts index 0785827cd..483caded8 100644 --- a/src/main/services/agents/services/claudecode/tools.ts +++ b/src/main/services/agents/services/claudecode/tools.ts @@ -1,4 +1,4 @@ -import { Tool } from '@types' +import type { Tool } from '@types' // https://docs.anthropic.com/en/docs/claude-code/settings#tools-available-to-claude export const builtinTools: Tool[] = [ diff --git a/src/main/services/agents/services/claudecode/transform.ts b/src/main/services/agents/services/claudecode/transform.ts index f421e91f2..5905ed643 100644 --- a/src/main/services/agents/services/claudecode/transform.ts +++ b/src/main/services/agents/services/claudecode/transform.ts @@ -20,7 +20,7 @@ * emitting `text-*` parts and a synthetic `finish-step`. */ -import { SDKMessage } from '@anthropic-ai/claude-agent-sdk' +import type { SDKMessage } from '@anthropic-ai/claude-agent-sdk' import type { BetaStopReason } from '@anthropic-ai/sdk/resources/beta/messages/messages.mjs' import { loggerService } from '@logger' import type { FinishReason, LanguageModelUsage, ProviderMetadata, TextStreamPart } from 'ai' diff --git a/src/main/services/mcp/oauth/callback.ts b/src/main/services/mcp/oauth/callback.ts index 22d5b4c6b..81d435f86 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 811ce8a27..29fdfc0c5 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 d2dbb589c..1a872d1e1 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 f081fbe70..1eecf08d4 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 * as z from 'zod' export interface OAuthStorageData { diff --git a/src/main/services/memory/MemoryService.ts b/src/main/services/memory/MemoryService.ts index 85f182b68..3466e2c3c 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 b2943e30e..80cd54767 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 { ovOcrService } from './builtin/OvOcrService' import { ppocrService } from './builtin/PpocrService' diff --git a/src/main/services/ocr/builtin/OcrBaseService.ts b/src/main/services/ocr/builtin/OcrBaseService.ts index 9c36e79c3..dabe2e50b 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/OvOcrService.ts b/src/main/services/ocr/builtin/OvOcrService.ts index 1650ca883..6e0eee1c3 100644 --- a/src/main/services/ocr/builtin/OvOcrService.ts +++ b/src/main/services/ocr/builtin/OvOcrService.ts @@ -1,6 +1,7 @@ import { loggerService } from '@logger' import { isWin } from '@main/constant' -import { isImageFileMetadata, OcrOvConfig, OcrResult, SupportedOcrFile } from '@types' +import type { OcrOvConfig, OcrResult, SupportedOcrFile } from '@types' +import { isImageFileMetadata } from '@types' import { exec } from 'child_process' import * as fs from 'fs' import * as os from 'os' diff --git a/src/main/services/ocr/builtin/PpocrService.ts b/src/main/services/ocr/builtin/PpocrService.ts index 4b00be4be..61c923c54 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 * as z from 'zod' diff --git a/src/main/services/ocr/builtin/SystemOcrService.ts b/src/main/services/ocr/builtin/SystemOcrService.ts index b496df398..f166718e4 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 9fd7bbcf0..8d41ce085 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 ff06eb0b4..49067b424 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 14f622757..962214af5 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 ba5a8fae8..16214dff5 100644 --- a/src/main/services/remotefile/GeminiService.ts +++ b/src/main/services/remotefile/GeminiService.ts @@ -1,7 +1,8 @@ -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 { CacheService } from '../CacheService' diff --git a/src/main/services/remotefile/MistralService.ts b/src/main/services/remotefile/MistralService.ts index d3867a619..6045e2597 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 734bf6f26..59640f75a 100644 --- a/src/main/services/remotefile/OpenAIService.ts +++ b/src/main/services/remotefile/OpenAIService.ts @@ -1,7 +1,7 @@ import OpenAI from '@cherrystudio/openai' 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 { CacheService } from '../CacheService' diff --git a/src/main/services/urlschema/mcp-install.ts b/src/main/services/urlschema/mcp-install.ts index e35c40d52..2d783255e 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 20305d1c9..17155f423 100644 --- a/src/main/utils/file.ts +++ b/src/main/utils/file.ts @@ -6,7 +6,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/ocr.ts b/src/main/utils/ocr.ts index 493b837dd..fdb5ff174 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' const preprocessImage = async (buffer: Buffer): Promise => { diff --git a/src/main/utils/windowUtil.ts b/src/main/utils/windowUtil.ts index 4000156ff..454ce917f 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 d91d41159..d75b31724 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 30536b8a3..d60e0edfe 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -1,13 +1,13 @@ import type { PermissionUpdate } from '@anthropic-ai/claude-agent-sdk' import { electronAPI } from '@electron-toolkit/preload' -import { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' -import { SpanContext } from '@opentelemetry/api' -import { TerminalConfig, UpgradeChannel } from '@shared/config/constant' +import type { SpanEntity, TokenUsage } from '@mcp-trace/trace-core' +import type { SpanContext } from '@opentelemetry/api' +import type { TerminalConfig, UpgradeChannel } from '@shared/config/constant' import type { LogLevel, LogSourceWithContext } from '@shared/config/logger' import type { FileChangeEvent, WebviewKeyEvent } from '@shared/config/types' import { IpcChannel } from '@shared/IpcChannel' import type { Notification } from '@types' -import { +import type { AddMemoryOptions, AssistantMessage, FileListResponse, @@ -33,8 +33,9 @@ import { ThemeMode, 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' import type { InstalledPlugin, diff --git a/src/preload/preload.d.ts b/src/preload/preload.d.ts index 7e46ae82a..a7c633130 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 edaebfa14..cb3c494f1 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 3f27f9440..6e4288d24 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 { ProviderSpecificError } from '@renderer/types/provider-specific-error' import { formatErrorMessage } from '@renderer/utils/error' import { convertLinks, flushLinkConverterBuffer } from '@renderer/utils/linkConverter' diff --git a/src/renderer/src/aiCore/chunk/handleToolCallChunk.ts b/src/renderer/src/aiCore/chunk/handleToolCallChunk.ts index 4d18024f8..32c7e534e 100644 --- a/src/renderer/src/aiCore/chunk/handleToolCallChunk.ts +++ b/src/renderer/src/aiCore/chunk/handleToolCallChunk.ts @@ -6,7 +6,7 @@ import { loggerService } from '@logger' import { processKnowledgeReferences } from '@renderer/services/KnowledgeService' -import { +import type { BaseTool, MCPCallToolResponse, MCPTool, @@ -14,7 +14,8 @@ import { MCPToolResultContent, NormalToolResponse } from '@renderer/types' -import { Chunk, ChunkType } from '@renderer/types/chunk' +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 f6d6673cb..800d2ff30 100644 --- a/src/renderer/src/aiCore/index_new.ts +++ b/src/renderer/src/aiCore/index_new.ts @@ -11,7 +11,7 @@ import { createExecutor } from '@cherrystudio/ai-core' import { loggerService } from '@logger' import { getEnableDeveloperMode } from '@renderer/hooks/useSettings' 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 { SUPPORTED_IMAGE_ENDPOINT_LIST } from '@renderer/utils' @@ -20,8 +20,9 @@ import { type ImageModel, type LanguageModel, type Provider as AiSdkProvider, wr 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 { createAiSdkProvider } from './provider/factory' import { diff --git a/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts b/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts index e7194c240..bc416161c 100644 --- a/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts +++ b/src/renderer/src/aiCore/legacy/clients/ApiClientFactory.ts @@ -1,11 +1,11 @@ import { loggerService } from '@logger' import { isNewApiProvider } from '@renderer/config/providers' -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 { CherryAiAPIClient } from './cherryai/CherryAiAPIClient' 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 4a41db7c9..767cad129 100644 --- a/src/renderer/src/aiCore/legacy/clients/BaseApiClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/BaseApiClient.ts @@ -9,29 +9,31 @@ import { REFERENCE_PROMPT } from '@renderer/config/prompts' 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 { defaultTimeout } from '@shared/config/constant' 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 36a207ecb..fb5568a6e 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 b8870fdb7..03ec1e1ea 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 { beforeEach, describe, expect, it, vi } from 'vitest' import { AihubmixAPIClient } from '../aihubmix/AihubmixAPIClient' 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 dd85730c3..bcff57241 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 1149c04b3..a8a0ca5ac 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 4f9bb28e4..15f3cf100 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 Anthropic from '@anthropic-ai/sdk' +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, @@ -71,9 +69,9 @@ import { findFileBlocks, findImageBlocks } from '@renderer/utils/messageUtils/fi import { buildClaudeCodeSystemMessage, getSdkClient } from '@shared/anthropic' 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 bb96ac90a..2fe16e887 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 1de8a724c..94f74eecf 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/cherryai/CherryAiAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/cherryai/CherryAiAPIClient.ts index 08e4d9df3..b72e0a882 100644 --- a/src/renderer/src/aiCore/legacy/clients/cherryai/CherryAiAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/cherryai/CherryAiAPIClient.ts @@ -1,6 +1,6 @@ -import OpenAI from '@cherrystudio/openai' -import { Provider } from '@renderer/types' -import { OpenAISdkParams, OpenAISdkRawOutput } from '@renderer/types/sdk' +import type OpenAI from '@cherrystudio/openai' +import type { Provider } from '@renderer/types' +import type { OpenAISdkParams, OpenAISdkRawOutput } from '@renderer/types/sdk' 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 33d34c796..27e659c1a 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 37e667736..49a96a8f1 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 58b349a2b..f3e04e0d5 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 618d9b461..239890c7a 100644 --- a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIApiClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIApiClient.ts @@ -1,5 +1,6 @@ -import OpenAI, { AzureOpenAI } from '@cherrystudio/openai' -import { +import type { AzureOpenAI } from '@cherrystudio/openai' +import type OpenAI from '@cherrystudio/openai' +import type { ChatCompletionContentPart, ChatCompletionContentPartRefusal, ChatCompletionTool @@ -48,25 +49,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, @@ -86,8 +90,8 @@ import { import { findFileBlocks, findImageBlocks } from '@renderer/utils/messageUtils/find' import { t } from 'i18next' -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 8a0a3fe0f..abd179361 100644 --- a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIBaseClient.ts @@ -10,9 +10,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 5d13d6ff7..b9131be66 100644 --- a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts @@ -1,8 +1,8 @@ import OpenAI, { AzureOpenAI } from '@cherrystudio/openai' -import { ResponseInput } from '@cherrystudio/openai/resources/responses/responses' +import type { ResponseInput } from '@cherrystudio/openai/resources/responses/responses' 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, @@ -14,21 +14,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, @@ -48,7 +47,7 @@ import { MB } from '@shared/config/constant' import { t } from 'i18next' import { isEmpty } from 'lodash' -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/ovms/OVMSClient.ts b/src/renderer/src/aiCore/legacy/clients/ovms/OVMSClient.ts index 5dc91550a..179bb54a1 100644 --- a/src/renderer/src/aiCore/legacy/clients/ovms/OVMSClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/ovms/OVMSClient.ts @@ -1,7 +1,8 @@ -import OpenAI from '@cherrystudio/openai' +import type OpenAI from '@cherrystudio/openai' import { loggerService } from '@logger' import { isSupportedModel } from '@renderer/config/models' -import { objectKeys, Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' +import { objectKeys } from '@renderer/types' import { OpenAIAPIClient } from '../openai/OpenAIApiClient' diff --git a/src/renderer/src/aiCore/legacy/clients/ppio/PPIOAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/ppio/PPIOAPIClient.ts index 57b54b961..345496e15 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 OpenAI from '@cherrystudio/openai' +import type OpenAI from '@cherrystudio/openai' import { loggerService } from '@logger' import { isSupportedModel } from '@renderer/config/models' -import { Model, Provider } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' 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 6d10f4285..bf7b129d9 100644 --- a/src/renderer/src/aiCore/legacy/clients/types.ts +++ b/src/renderer/src/aiCore/legacy/clients/types.ts @@ -1,8 +1,8 @@ -import Anthropic from '@anthropic-ai/sdk' -import OpenAI from '@cherrystudio/openai' -import { Assistant, MCPTool, MCPToolResponse, Model, ToolCallResponse } from '@renderer/types' -import { Provider } from '@renderer/types' -import { +import type Anthropic from '@anthropic-ai/sdk' +import type OpenAI from '@cherrystudio/openai' +import type { Assistant, MCPTool, MCPToolResponse, Model, ToolCallResponse } from '@renderer/types' +import type { Provider } from '@renderer/types' +import type { AnthropicSdkRawChunk, OpenAIResponseSdkRawChunk, OpenAIResponseSdkRawOutput, @@ -15,8 +15,8 @@ import { SdkToolCall } from '@renderer/types/sdk' -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 c04e08fb7..ea6c141e3 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 OpenAI from '@cherrystudio/openai' +import type OpenAI from '@cherrystudio/openai' import { loggerService } from '@logger' -import { Provider } from '@renderer/types' -import { GenerateImageParams } from '@renderer/types' +import type { Provider } from '@renderer/types' +import type { GenerateImageParams } from '@renderer/types' import { OpenAIAPIClient } from '../openai/OpenAIApiClient' diff --git a/src/renderer/src/aiCore/legacy/index.ts b/src/renderer/src/aiCore/legacy/index.ts index adc81f03a..da6cdb672 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 2ea20d493..1d0b9d136 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 a733e45d7..5f2479781 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 dde98cbd1..7d6a7f631 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 { getStoreProviders } from '@renderer/hooks/useStore' -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 57498b97f..0325e4e21 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 acd371d77..480cbbc39 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 82b9fd170..97bbf0a38 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 fc0327925..6affa5a56 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 0d59ad9de..04bfd751e 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 850da8306..bdab7b878 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 8bb526631..b6dc13e60 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 41157bf50..837244981 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 2149d8fe7..5920cdc0e 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 71831a3ef..ebc86f5a5 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 ae346af83..3365b163b 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 40ab43c56..0df303e41 100644 --- a/src/renderer/src/aiCore/legacy/middleware/feat/ImageGenerationMiddleware.ts +++ b/src/renderer/src/aiCore/legacy/middleware/feat/ImageGenerationMiddleware.ts @@ -1,4 +1,4 @@ -import OpenAI from '@cherrystudio/openai' +import type OpenAI from '@cherrystudio/openai' import { toFile } from '@cherrystudio/openai/uploads' import { isDedicatedImageGenerationModel } from '@renderer/config/models' import FileManager from '@renderer/services/FileManager' @@ -6,9 +6,9 @@ import { ChunkType } from '@renderer/types/chunk' import { findImageBlocks, getMainTextContent } from '@renderer/utils/messageUtils/find' import { defaultTimeout } from '@shared/config/constant' -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 447b9d2f2..dea679eaa 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 1f559bf5a..38d842e08 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 64be4edd4..66213c33b 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 ce89934f0..9119d818d 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 0a7dbe390..376203510 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 12a2fe651..32e94e16b 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 b10607b67..3f14917cd 100644 --- a/src/renderer/src/aiCore/middleware/AiSdkMiddlewareBuilder.ts +++ b/src/renderer/src/aiCore/middleware/AiSdkMiddlewareBuilder.ts @@ -1,10 +1,12 @@ -import { WebSearchPluginConfig } from '@cherrystudio/ai-core/built-in/plugins' +import type { WebSearchPluginConfig } from '@cherrystudio/ai-core/built-in/plugins' import { loggerService } from '@logger' import { isSupportedThinkingTokenQwenModel } from '@renderer/config/models' import { isSupportEnableThinkingProvider } from '@renderer/config/providers' -import { type Assistant, MCPTool, type Message, type Model, type Provider } from '@renderer/types' +import type { MCPTool } from '@renderer/types' +import { type Assistant, type Message, type Model, type 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' import { isEmpty } from 'lodash' import { isOpenRouterGeminiGenerateImageModel } from '../utils/image' diff --git a/src/renderer/src/aiCore/middleware/noThinkMiddleware.ts b/src/renderer/src/aiCore/middleware/noThinkMiddleware.ts index 9d7d933bc..3e5624983 100644 --- a/src/renderer/src/aiCore/middleware/noThinkMiddleware.ts +++ b/src/renderer/src/aiCore/middleware/noThinkMiddleware.ts @@ -1,5 +1,5 @@ import { loggerService } from '@logger' -import { LanguageModelMiddleware } from 'ai' +import type { LanguageModelMiddleware } from 'ai' const logger = loggerService.withContext('noThinkMiddleware') diff --git a/src/renderer/src/aiCore/middleware/openrouterGenerateImageMiddleware.ts b/src/renderer/src/aiCore/middleware/openrouterGenerateImageMiddleware.ts index 0110d9a4f..792192b93 100644 --- a/src/renderer/src/aiCore/middleware/openrouterGenerateImageMiddleware.ts +++ b/src/renderer/src/aiCore/middleware/openrouterGenerateImageMiddleware.ts @@ -1,4 +1,4 @@ -import { LanguageModelMiddleware } from 'ai' +import type { LanguageModelMiddleware } from 'ai' /** * Returns a LanguageModelMiddleware that ensures the OpenRouter provider is configured to support both diff --git a/src/renderer/src/aiCore/middleware/qwenThinkingMiddleware.ts b/src/renderer/src/aiCore/middleware/qwenThinkingMiddleware.ts index 34515a42c..931831a1c 100644 --- a/src/renderer/src/aiCore/middleware/qwenThinkingMiddleware.ts +++ b/src/renderer/src/aiCore/middleware/qwenThinkingMiddleware.ts @@ -1,4 +1,4 @@ -import { LanguageModelMiddleware } from 'ai' +import type { LanguageModelMiddleware } from 'ai' /** * Qwen Thinking Middleware diff --git a/src/renderer/src/aiCore/middleware/toolChoiceMiddleware.ts b/src/renderer/src/aiCore/middleware/toolChoiceMiddleware.ts index 6d3ba37d1..7bb00aff5 100644 --- a/src/renderer/src/aiCore/middleware/toolChoiceMiddleware.ts +++ b/src/renderer/src/aiCore/middleware/toolChoiceMiddleware.ts @@ -1,5 +1,5 @@ import { loggerService } from '@logger' -import { LanguageModelMiddleware } from 'ai' +import type { LanguageModelMiddleware } from 'ai' const logger = loggerService.withContext('toolChoiceMiddleware') diff --git a/src/renderer/src/aiCore/plugins/PluginBuilder.ts b/src/renderer/src/aiCore/plugins/PluginBuilder.ts index c24914233..eb46eb752 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, webSearchPlugin } from '@cherrystudio/ai-core/built-in/plugins' import { loggerService } from '@logger' import { getEnableDeveloperMode } from '@renderer/hooks/useSettings' -import { Assistant } from '@renderer/types' +import type { Assistant } from '@renderer/types' -import { AiSdkMiddlewareConfig } from '../middleware/AiSdkMiddlewareBuilder' +import type { AiSdkMiddlewareConfig } from '../middleware/AiSdkMiddlewareBuilder' 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 7e662ddee..6be577f19 100644 --- a/src/renderer/src/aiCore/plugins/searchOrchestrationPlugin.ts +++ b/src/renderer/src/aiCore/plugins/searchOrchestrationPlugin.ts @@ -18,7 +18,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 type { LanguageModel, ModelMessage } from 'ai' import { generateText } from 'ai' import { isEmpty } from 'lodash' diff --git a/src/renderer/src/aiCore/plugins/telemetryPlugin.ts b/src/renderer/src/aiCore/plugins/telemetryPlugin.ts index 0f06091c5..485d339d2 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 49048122c..5ee881223 100644 --- a/src/renderer/src/aiCore/prepareParams/fileProcessor.ts +++ b/src/renderer/src/aiCore/prepareParams/fileProcessor.ts @@ -8,7 +8,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' diff --git a/src/renderer/src/aiCore/prepareParams/messageConverter.ts b/src/renderer/src/aiCore/prepareParams/messageConverter.ts index 46cacb5b7..72f387d9a 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 { isImageEnhancementModel, 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/prepareParams/parameterBuilder.ts b/src/renderer/src/aiCore/prepareParams/parameterBuilder.ts index c693ed235..d3fa1cb65 100644 --- a/src/renderer/src/aiCore/prepareParams/parameterBuilder.ts +++ b/src/renderer/src/aiCore/prepareParams/parameterBuilder.ts @@ -7,7 +7,7 @@ import { anthropic } from '@ai-sdk/anthropic' import { google } from '@ai-sdk/google' import { vertexAnthropic } from '@ai-sdk/google-vertex/anthropic/edge' import { vertex } from '@ai-sdk/google-vertex/edge' -import { WebSearchPluginConfig } from '@cherrystudio/ai-core/built-in/plugins' +import type { WebSearchPluginConfig } from '@cherrystudio/ai-core/built-in/plugins' import { isBaseProvider } from '@cherrystudio/ai-core/core/providers/schemas' import { loggerService } from '@logger' import { @@ -21,7 +21,7 @@ import { } from '@renderer/config/models' import { getAssistantSettings, getDefaultModel } from '@renderer/services/AssistantService' import store from '@renderer/store' -import { CherryWebSearchConfig } from '@renderer/store/websearch' +import type { CherryWebSearchConfig } from '@renderer/store/websearch' import { type Assistant, type MCPTool, type Provider } from '@renderer/types' import type { StreamTextParams } from '@renderer/types/aiCoreTypes' import { mapRegexToPatterns } from '@renderer/utils/blacklistMatchPattern' diff --git a/src/renderer/src/aiCore/provider/config/aihubmix.ts b/src/renderer/src/aiCore/provider/config/aihubmix.ts index 819e9cd28..432be5ee3 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 { isOpenAILLMModel } 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/newApi.ts b/src/renderer/src/aiCore/provider/config/newApi.ts index 5277495cd..97de62597 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 62211100f..4cdbfb6d4 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 f3a476189..9a1a94f89 100644 --- a/src/renderer/src/aiCore/tools/KnowledgeSearchTool.ts +++ b/src/renderer/src/aiCore/tools/KnowledgeSearchTool.ts @@ -1,7 +1,7 @@ import { REFERENCE_PROMPT } from '@renderer/config/prompts' 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 { type InferToolInput, type InferToolOutput, tool } from 'ai' import { isEmpty } from 'lodash' import * as z from 'zod' diff --git a/src/renderer/src/aiCore/tools/WebSearchTool.ts b/src/renderer/src/aiCore/tools/WebSearchTool.ts index 61d5d3b2c..9545b64be 100644 --- a/src/renderer/src/aiCore/tools/WebSearchTool.ts +++ b/src/renderer/src/aiCore/tools/WebSearchTool.ts @@ -1,7 +1,7 @@ import { REFERENCE_PROMPT } from '@renderer/config/prompts' 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 { type InferToolInput, type InferToolOutput, tool } from 'ai' import * as z from 'zod' diff --git a/src/renderer/src/aiCore/trace/AiSdkSpanAdapter.ts b/src/renderer/src/aiCore/trace/AiSdkSpanAdapter.ts index fc844b5fe..732397de4 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/image.ts b/src/renderer/src/aiCore/utils/image.ts index 43d916640..37dbe76a2 100644 --- a/src/renderer/src/aiCore/utils/image.ts +++ b/src/renderer/src/aiCore/utils/image.ts @@ -1,4 +1,5 @@ -import { isSystemProvider, Model, Provider, SystemProviderIds } from '@renderer/types' +import type { Model, Provider } from '@renderer/types' +import { isSystemProvider, SystemProviderIds } from '@renderer/types' export function buildGeminiGenerateImageParams(): Record { return { diff --git a/src/renderer/src/aiCore/utils/mcp.ts b/src/renderer/src/aiCore/utils/mcp.ts index 9606d9ea6..84bc661aa 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 087a9ef15..eaf4764c7 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 86a762897..0246ac31c 100644 --- a/src/renderer/src/aiCore/utils/reasoning.ts +++ b/src/renderer/src/aiCore/utils/reasoning.ts @@ -30,9 +30,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' import { toInteger } from 'lodash' const logger = loggerService.withContext('reasoning') diff --git a/src/renderer/src/aiCore/utils/websearch.ts b/src/renderer/src/aiCore/utils/websearch.ts index 0ab41d5ad..fde4ff534 100644 --- a/src/renderer/src/aiCore/utils/websearch.ts +++ b/src/renderer/src/aiCore/utils/websearch.ts @@ -1,12 +1,12 @@ -import { +import type { AnthropicSearchConfig, OpenAISearchConfig, WebSearchPluginConfig } from '@cherrystudio/ai-core/core/plugins/built-in/webSearchPlugin/helper' -import { BaseProviderId } from '@cherrystudio/ai-core/provider' +import type { BaseProviderId } from '@cherrystudio/ai-core/provider' import { isOpenAIDeepResearchModel, isOpenAIWebSearchChatCompletionOnlyModel } from '@renderer/config/models' -import { CherryWebSearchConfig } from '@renderer/store/websearch' -import { Model } from '@renderer/types' +import type { CherryWebSearchConfig } from '@renderer/store/websearch' +import type { Model } from '@renderer/types' import { mapRegexToPatterns } from '@renderer/utils/blacklistMatchPattern' export function getWebSearchParams(model: Model): Record { diff --git a/src/renderer/src/api/agent.ts b/src/renderer/src/api/agent.ts index ecc772464..cc997e77b 100644 --- a/src/renderer/src/api/agent.ts +++ b/src/renderer/src/api/agent.ts @@ -1,37 +1,40 @@ import { loggerService } from '@logger' import { formatAgentServerError } from '@renderer/utils/error' -import { +import type { AddAgentForm, - AgentServerErrorSchema, ApiModelsFilter, ApiModelsResponse, - ApiModelsResponseSchema, CreateAgentRequest, CreateAgentResponse, - CreateAgentResponseSchema, CreateAgentSessionResponse, - CreateAgentSessionResponseSchema, CreateSessionForm, CreateSessionRequest, GetAgentResponse, - GetAgentResponseSchema, GetAgentSessionResponse, - GetAgentSessionResponseSchema, ListAgentSessionsResponse, - ListAgentSessionsResponseSchema, - type ListAgentsResponse, - ListAgentsResponseSchema, ListOptions, - objectEntries, - objectKeys, UpdateAgentForm, UpdateAgentRequest, UpdateAgentResponse, - UpdateAgentResponseSchema, UpdateSessionForm, UpdateSessionRequest } from '@types' -import axios, { Axios, AxiosRequestConfig, isAxiosError } from 'axios' +import { + AgentServerErrorSchema, + ApiModelsResponseSchema, + CreateAgentResponseSchema, + CreateAgentSessionResponseSchema, + GetAgentResponseSchema, + GetAgentSessionResponseSchema, + ListAgentSessionsResponseSchema, + type ListAgentsResponse, + ListAgentsResponseSchema, + objectEntries, + objectKeys, + UpdateAgentResponseSchema +} from '@types' +import type { Axios, AxiosRequestConfig } from 'axios' +import axios, { isAxiosError } from 'axios' import { ZodError } from 'zod' type ApiVersion = 'v1' diff --git a/src/renderer/src/components/ActionTools/__tests__/useToolManager.test.ts b/src/renderer/src/components/ActionTools/__tests__/useToolManager.test.ts index 86ec67b76..d910a1579 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 c2b4966e5..bade7d123 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 3481b9279..f99847040 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 ae73fcdb5..b3d85aaa2 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/ApiModelLabel.tsx b/src/renderer/src/components/ApiModelLabel.tsx index c101689ff..3e36083a6 100644 --- a/src/renderer/src/components/ApiModelLabel.tsx +++ b/src/renderer/src/components/ApiModelLabel.tsx @@ -1,6 +1,6 @@ import { Avatar, cn } from '@heroui/react' import { getModelLogoById } from '@renderer/config/models' -import { ApiModel } from '@renderer/types' +import type { ApiModel } from '@renderer/types' import React from 'react' import Ellipsis from './Ellipsis' diff --git a/src/renderer/src/components/Avatar/ModelAvatar.tsx b/src/renderer/src/components/Avatar/ModelAvatar.tsx index 04e8615fb..ef4f37c2d 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 144800809..9f5c98abf 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 9f5ab5998..875138204 100644 --- a/src/renderer/src/components/CodeBlockView/HtmlArtifactsCard.tsx +++ b/src/renderer/src/components/CodeBlockView/HtmlArtifactsCard.tsx @@ -1,11 +1,12 @@ import { CodeOutlined } from '@ant-design/icons' import { loggerService } from '@logger' import { useTheme } from '@renderer/context/ThemeProvider' -import { ThemeMode } from '@renderer/types' +import type { ThemeMode } from '@renderer/types' import { extractHtmlTitle, getFileNameFromHtmlTitle } from '@renderer/utils/formats' 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/HtmlArtifactsPopup.tsx b/src/renderer/src/components/CodeBlockView/HtmlArtifactsPopup.tsx index 9453866f2..2cd8171d0 100644 --- a/src/renderer/src/components/CodeBlockView/HtmlArtifactsPopup.tsx +++ b/src/renderer/src/components/CodeBlockView/HtmlArtifactsPopup.tsx @@ -1,4 +1,5 @@ -import CodeEditor, { CodeEditorHandles } from '@renderer/components/CodeEditor' +import type { CodeEditorHandles } from '@renderer/components/CodeEditor' +import CodeEditor from '@renderer/components/CodeEditor' import { CopyIcon, FilePngIcon } from '@renderer/components/Icons' import { isMac } from '@renderer/config/constant' import { useTemporaryValue } from '@renderer/hooks/useTemporaryValue' diff --git a/src/renderer/src/components/CodeBlockView/StatusBar.tsx b/src/renderer/src/components/CodeBlockView/StatusBar.tsx index defd070ac..72589b904 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 939095262..2ba94d0ef 100644 --- a/src/renderer/src/components/CodeBlockView/view.tsx +++ b/src/renderer/src/components/CodeBlockView/view.tsx @@ -1,6 +1,7 @@ import { loggerService } from '@logger' -import { ActionTool } from '@renderer/components/ActionTools' -import CodeEditor, { CodeEditorHandles } from '@renderer/components/CodeEditor' +import type { ActionTool } from '@renderer/components/ActionTools' +import type { CodeEditorHandles } from '@renderer/components/CodeEditor' +import CodeEditor from '@renderer/components/CodeEditor' import { CodeToolbar, useCopyTool, @@ -14,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 { useSettings } from '@renderer/hooks/useSettings' import { pyodideService } from '@renderer/services/PyodideService' @@ -27,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/hooks.ts b/src/renderer/src/components/CodeEditor/hooks.ts index 65c18a5a0..b502c6e9d 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 { useCallback, useEffect, useMemo, useState } from 'react' import { getNormalizedExtension } from './utils' diff --git a/src/renderer/src/components/CodeEditor/index.tsx b/src/renderer/src/components/CodeEditor/index.tsx index 31c4ce798..128e1b1fe 100644 --- a/src/renderer/src/components/CodeEditor/index.tsx +++ b/src/renderer/src/components/CodeEditor/index.tsx @@ -1,6 +1,7 @@ import { useCodeStyle } from '@renderer/context/CodeStyleProvider' import { useSettings } from '@renderer/hooks/useSettings' -import CodeMirror, { Annotation, BasicSetupOptions, EditorView, Extension } from '@uiw/react-codemirror' +import type { BasicSetupOptions, Extension } from '@uiw/react-codemirror' +import CodeMirror, { Annotation, EditorView } from '@uiw/react-codemirror' import diff from 'fast-diff' import { useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react' import { memo } from 'react' diff --git a/src/renderer/src/components/CodeToolbar/__tests__/CodeToolButton.test.tsx b/src/renderer/src/components/CodeToolbar/__tests__/CodeToolButton.test.tsx index 045d24215..2a5f43f7f 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 5c38de461..4f75409c8 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 2b39950ea..67c8cc48f 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 0181dfc5f..0cc5d8c4e 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 fbe52bbb3..ef408c562 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 9bac34c57..a35a06342 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 148875272..874407aed 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 ea928df4f..0f5d3f08e 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 397c51c92..835c01efb 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 6428a9c54..0cf2e2500 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 4c46681a4..0da586d4c 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 c847b6ca9..62895bbdd 100644 --- a/src/renderer/src/components/CodeToolbar/hooks/useSaveTool.tsx +++ b/src/renderer/src/components/CodeToolbar/hooks/useSaveTool.tsx @@ -1,5 +1,6 @@ -import { ActionTool, TOOL_SPECS, useToolManager } from '@renderer/components/ActionTools' -import { CodeEditorHandles } from '@renderer/components/CodeEditor' +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' import { useCallback, useEffect } from 'react' diff --git a/src/renderer/src/components/CodeToolbar/hooks/useSplitViewTool.tsx b/src/renderer/src/components/CodeToolbar/hooks/useSplitViewTool.tsx index 63367d692..64b3c0af4 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 a3a6da015..fa6d71ea6 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 bea1e4a5b..d4bfa6e27 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 7b17a6f0e..7b78d8e53 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 ac7a14e0a..af6063367 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 04b838e37..2b7eb1e27 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/ConfirmDialog.tsx b/src/renderer/src/components/ConfirmDialog.tsx index 3f2313b17..5ac0ae127 100644 --- a/src/renderer/src/components/ConfirmDialog.tsx +++ b/src/renderer/src/components/ConfirmDialog.tsx @@ -1,6 +1,6 @@ import { Button } from '@heroui/react' import { CheckIcon, XIcon } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { createPortal } from 'react-dom' interface Props { diff --git a/src/renderer/src/components/CopyButton.tsx b/src/renderer/src/components/CopyButton.tsx index cfa80a02c..173a1fddf 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 8362d8a47..4e8e7a949 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 764550381..30f287e9f 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 a9ffd3d88..c2f566aad 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 fbb5f2976..62a7c636c 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 5438635cd..7f7ed902c 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 b2efe7c24..e6f08e4c7 100644 --- a/src/renderer/src/components/DraggableList/virtual-list.tsx +++ b/src/renderer/src/components/DraggableList/virtual-list.tsx @@ -1,13 +1,11 @@ -import { - DragDropContext, - Draggable, - Droppable, +import type { DroppableProps, DropResult, OnDragEndResponder, OnDragStartResponder, ResponderProvided } from '@hello-pangea/dnd' +import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd' import Scrollbar from '@renderer/components/Scrollbar' import { droppableReorder } from '@renderer/utils' import { type ScrollToOptions, useVirtualizer, type VirtualItem } from '@tanstack/react-virtual' diff --git a/src/renderer/src/components/EditableNumber/index.tsx b/src/renderer/src/components/EditableNumber/index.tsx index a428dfc04..6102a3a89 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 6cd06b871..e8a787c9b 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 69ac7ccda..8ba9d3e96 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 1ee3967e9..12e9ab593 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 2e294d930..ad142ae0c 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 9dce1c21b..2807549e2 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 f87376b78..87bff48c1 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 456961c97..1027324ee 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/HighlightText.tsx b/src/renderer/src/components/HighlightText.tsx index debf02c92..d24b9c607 100644 --- a/src/renderer/src/components/HighlightText.tsx +++ b/src/renderer/src/components/HighlightText.tsx @@ -1,4 +1,5 @@ -import { FC, memo, useMemo } from 'react' +import type { FC } from 'react' +import { memo, useMemo } from 'react' interface HighlightTextProps { text: string diff --git a/src/renderer/src/components/Icons/FileIcons.tsx b/src/renderer/src/components/Icons/FileIcons.tsx index 0fbfcdebf..fd095335a 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 98974da74..58da46a72 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' interface Props { app: MinAppType diff --git a/src/renderer/src/components/Icons/OcrIcon.tsx b/src/renderer/src/components/Icons/OcrIcon.tsx index 41367445a..9f73867a0 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 4f98f5735..8d7aa94fe 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 b17f7397c..ad503f0e3 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 6cebfa333..7efa37a66 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 69f8da260..2d7b5d614 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 7a591d231..36b831e71 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 4ab4c408c..d1f2b4e18 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 6dc99000a..156ea1307 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 179babeaf..757a69441 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 888aefc70..04ea1e7c3 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 056ebaea5..8e6357a91 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 cc1829471..e9799096a 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 257457362..3ab38bcb4 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 427ff1ccc..5b5ab445e 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 be9c9f293..b07564da7 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 5833ed9b1..b6a623d30 100644 --- a/src/renderer/src/components/MinApp/MinApp.tsx +++ b/src/renderer/src/components/MinApp/MinApp.tsx @@ -7,10 +7,10 @@ import { useMinapps } from '@renderer/hooks/useMinapps' import { useRuntime } from '@renderer/hooks/useRuntime' import { useNavbarPosition } from '@renderer/hooks/useSettings' import { setOpenedKeepAliveMinapps } from '@renderer/store/runtime' -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 { useDispatch } from 'react-redux' import { useNavigate } from 'react-router-dom' diff --git a/src/renderer/src/components/MinApp/MinAppTabsPool.tsx b/src/renderer/src/components/MinApp/MinAppTabsPool.tsx index af2c255f5..5c5633636 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 { useRuntime } from '@renderer/hooks/useRuntime' import { useNavbarPosition } from '@renderer/hooks/useSettings' 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 57e514104..8e361f0bc 100644 --- a/src/renderer/src/components/MinApp/MinappPopupContainer.tsx +++ b/src/renderer/src/components/MinApp/MinappPopupContainer.tsx @@ -23,11 +23,11 @@ import { useNavbarPosition, useSettings } from '@renderer/hooks/useSettings' import { useTimer } from '@renderer/hooks/useTimer' import { useAppDispatch } from '@renderer/store' import { setMinappsOpenLinkExternal } from '@renderer/store/settings' -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 545772ef0..66bb9e554 100644 --- a/src/renderer/src/components/MinApp/WebviewContainer.tsx +++ b/src/renderer/src/components/MinApp/WebviewContainer.tsx @@ -1,6 +1,6 @@ import { loggerService } from '@logger' import { useSettings } from '@renderer/hooks/useSettings' -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 bf902ae1c..76e7f99e1 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 d803f5dbd..00f081bb1 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 98fa195fb..12666b4d4 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 263292dca..93e52f6a0 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 3368f60af..b8e485a8e 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, @@ -8,8 +8,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 e795de400..8c10f0f6b 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 { useSystemAssistantPresets } from '@renderer/pages/store/assistants/presets' import { createAssistantFromAgent } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { Assistant, AssistantPreset } from '@renderer/types' +import type { Assistant, AssistantPreset } 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 e69341a86..f28e034bd 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 83c938993..3ddcc383c 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 86076b4ca..661141633 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 ad713b40f..f90c4240d 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 3307b1016..f68d132a1 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 4560ac74e..7594d6a20 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 9a00e311c..f84fcb96b 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 0d254d3fb..fe70d32e8 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 ed7c3d407..de5a94948 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 cea3aca7c..892c30e33 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 aec91bd80..19fe49e1b 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/api-model-popup.tsx b/src/renderer/src/components/Popups/SelectModelPopup/api-model-popup.tsx index 3871e593d..df4dbb048 100644 --- a/src/renderer/src/components/Popups/SelectModelPopup/api-model-popup.tsx +++ b/src/renderer/src/components/Popups/SelectModelPopup/api-model-popup.tsx @@ -7,7 +7,8 @@ import { getModelLogoById } from '@renderer/config/models' import { useApiModels } from '@renderer/hooks/agents/useModels' import { getModelUniqId } from '@renderer/services/ModelService' import { getProviderNameById } from '@renderer/services/ProviderService' -import { AdaptedApiModel, ApiModel, ApiModelsFilter, Model, ModelType, objectEntries } from '@renderer/types' +import type { AdaptedApiModel, ApiModel, ApiModelsFilter, Model, ModelType } from '@renderer/types' +import { objectEntries } from '@renderer/types' import { classNames, filterModelsByKeywords } from '@renderer/utils' import { apiModelAdapter, getModelTags } from '@renderer/utils/model' import { Avatar, Divider, Empty, Modal } from 'antd' @@ -27,7 +28,7 @@ import styled from 'styled-components' import { useModelTagFilter } from './filters' import SelectModelSearchBar from './searchbar' import TagFilterSection from './TagFilterSection' -import { FlatListApiItem, FlatListApiModel } from './types' +import type { FlatListApiItem, FlatListApiModel } from './types' const PAGE_SIZE = 12 const ITEM_HEIGHT = 36 diff --git a/src/renderer/src/components/Popups/SelectModelPopup/filters.ts b/src/renderer/src/components/Popups/SelectModelPopup/filters.ts index d2ee6c774..f43d86f79 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 60ebc3fe7..eb982ffe9 100644 --- a/src/renderer/src/components/Popups/SelectModelPopup/popup.tsx +++ b/src/renderer/src/components/Popups/SelectModelPopup/popup.tsx @@ -8,7 +8,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' @@ -30,7 +31,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 ab641cf14..8f8b98170 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 6c6e3c2ca..a811930fc 100644 --- a/src/renderer/src/components/Popups/SelectModelPopup/types.ts +++ b/src/renderer/src/components/Popups/SelectModelPopup/types.ts @@ -1,5 +1,5 @@ -import { AdaptedApiModel, Model } from '@renderer/types' -import { ReactNode } from 'react' +import type { AdaptedApiModel, 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 49dca0254..6ae6cb575 100644 --- a/src/renderer/src/components/Popups/TextEditPopup.tsx +++ b/src/renderer/src/components/Popups/TextEditPopup.tsx @@ -3,10 +3,11 @@ import { loggerService } from '@logger' import { useSettings } from '@renderer/hooks/useSettings' 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 3cb33b43c..06b3f1bcd 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/Popups/agent/AgentModal.tsx b/src/renderer/src/components/Popups/agent/AgentModal.tsx index d49dbb812..cb53879fc 100644 --- a/src/renderer/src/components/Popups/agent/AgentModal.tsx +++ b/src/renderer/src/components/Popups/agent/AgentModal.tsx @@ -1,3 +1,4 @@ +import type { SelectedItemProps } from '@heroui/react' import { Button, Form, @@ -8,7 +9,6 @@ import { ModalFooter, ModalHeader, Select, - SelectedItemProps, SelectItem, Textarea, useDisclosure @@ -21,23 +21,24 @@ import { agentModelFilter, getModelLogoById } from '@renderer/config/models' import { useAgents } from '@renderer/hooks/agents/useAgents' import { useApiModels } from '@renderer/hooks/agents/useModels' import { useUpdateAgent } from '@renderer/hooks/agents/useUpdateAgent' -import { +import type { AddAgentForm, - AgentConfigurationSchema, AgentEntity, AgentType, BaseAgentForm, - isAgentType, PermissionMode, Tool, UpdateAgentForm } from '@renderer/types' +import { AgentConfigurationSchema, isAgentType } from '@renderer/types' import { AlertTriangleIcon } from 'lucide-react' -import { ChangeEvent, FormEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { ChangeEvent, FormEvent } from 'react' +import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { ErrorBoundary } from '../../ErrorBoundary' -import { BaseOption, ModelOption, Option, renderOption } from './shared' +import type { BaseOption, ModelOption } from './shared' +import { Option, renderOption } from './shared' const logger = loggerService.withContext('AddAgentPopup') diff --git a/src/renderer/src/components/Popups/agent/SessionModal.tsx b/src/renderer/src/components/Popups/agent/SessionModal.tsx index 80ca25f47..368c943a1 100644 --- a/src/renderer/src/components/Popups/agent/SessionModal.tsx +++ b/src/renderer/src/components/Popups/agent/SessionModal.tsx @@ -17,7 +17,7 @@ import { AllowedToolsSelect } from '@renderer/components/agent' import { useAgent } from '@renderer/hooks/agents/useAgent' import { useSessions } from '@renderer/hooks/agents/useSessions' import { useUpdateSession } from '@renderer/hooks/agents/useUpdateSession' -import { +import type { AgentEntity, AgentSessionEntity, BaseSessionForm, @@ -25,7 +25,8 @@ import { Tool, UpdateSessionForm } from '@renderer/types' -import { FormEvent, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { FormEvent, ReactNode } from 'react' +import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { ErrorBoundary } from '../../ErrorBoundary' diff --git a/src/renderer/src/components/Popups/agent/shared.tsx b/src/renderer/src/components/Popups/agent/shared.tsx index 5de33d0bc..d85e26ac9 100644 --- a/src/renderer/src/components/Popups/agent/shared.tsx +++ b/src/renderer/src/components/Popups/agent/shared.tsx @@ -1,4 +1,5 @@ -import { Avatar, SelectedItemProps, SelectedItems } from '@heroui/react' +import type { SelectedItemProps, SelectedItems } from '@heroui/react' +import { Avatar } from '@heroui/react' import { getProviderLabel } from '@renderer/i18n/label' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/components/Preview/GraphvizPreview.tsx b/src/renderer/src/components/Preview/GraphvizPreview.tsx index 578a35450..05c4371c7 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 cff446e25..2c1b7c428 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 60708fbee..fcb09af64 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 f29a0c1ff..2653805f1 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 673d7ded0..396a651c0 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 82ad03253..186153904 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 630d4f7c9..d38ab741c 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 57eae70ef..cda1d0fa9 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 6ad34b455..47a0c6299 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 5f35799da..3d0eb5b7d 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 b1ac0b903..a0cea425c 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 bc0282aac..317d5772e 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 a838782ec..ce8ff28f1 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 75ccf6bef..fafd1e447 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 c37064f8f..443c3bef7 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 c0d2dcf1c..1df06262a 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 160948cda..bdf3bc69f 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 ebed37349..9b28979ba 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 15727e1a8..8dcadbb66 100644 --- a/src/renderer/src/components/RichEditor/types.ts +++ b/src/renderer/src/components/RichEditor/types.ts @@ -241,7 +241,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 e50e128d5..493628f07 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 58b587f6e..e30bc6419 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/Tab/TabContainer.tsx b/src/renderer/src/components/Tab/TabContainer.tsx index 6747066c6..8fdaf3ac5 100644 --- a/src/renderer/src/components/Tab/TabContainer.tsx +++ b/src/renderer/src/components/Tab/TabContainer.tsx @@ -13,10 +13,11 @@ import tabsService from '@renderer/services/TabsService' import { useAppDispatch, useAppSelector } from '@renderer/store' import type { Tab } from '@renderer/store/tabs' import { addTab, removeTab, setActiveTab, setTabs } from '@renderer/store/tabs' -import { MinAppType, ThemeMode } from '@renderer/types' +import type { MinAppType } from '@renderer/types' +import { ThemeMode } from '@renderer/types' import { classNames } from '@renderer/utils' import { Tooltip } from 'antd' -import { LRUCache } from 'lru-cache' +import type { LRUCache } from 'lru-cache' import { FileSearch, Folder, diff --git a/src/renderer/src/components/Tags/CustomTag.tsx b/src/renderer/src/components/Tags/CustomTag.tsx index 4873a3ba7..5bb38c99f 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 8a2e5e2a3..01fe51db3 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 44b19012e..4bbbe4680 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 8e6d94bea..9cab2ed58 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 6d6811f77..f317a736e 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 1532564be..311d7e806 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 4ff219cfc..ae0d8bc44 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 099c9b383..b7b3777ef 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 1945810b2..d531d425e 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 6ce75d514..d0de56dbe 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 7a0e608a3..b69e59c8b 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 b5292365d..b78fb0746 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 d37f9d507..cd1dff143 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 b5108315f..d1e572631 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 f8231d348..4f3c8ec65 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/UpdateDialog.tsx b/src/renderer/src/components/UpdateDialog.tsx index e5cc8fa14..ee87265c0 100644 --- a/src/renderer/src/components/UpdateDialog.tsx +++ b/src/renderer/src/components/UpdateDialog.tsx @@ -1,7 +1,7 @@ import { Button, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, ScrollShadow } from '@heroui/react' import { loggerService } from '@logger' import { handleSaveData } from '@renderer/store' -import { ReleaseNoteInfo, UpdateInfo } from 'builder-util-runtime' +import type { ReleaseNoteInfo, UpdateInfo } from 'builder-util-runtime' import React, { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import Markdown from 'react-markdown' diff --git a/src/renderer/src/components/WindowControls/index.tsx b/src/renderer/src/components/WindowControls/index.tsx index c31476a88..02212222e 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 2504bba01..3880f33e3 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 4e904efeb..ee64ef13d 100644 --- a/src/renderer/src/components/__tests__/QuickPanelView.test.tsx +++ b/src/renderer/src/components/__tests__/QuickPanelView.test.tsx @@ -5,11 +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) => { - const mod = await importOriginal() + const mod = (await importOriginal()) as any return { ...mod, DynamicVirtualList: ({ ref, list, children, scrollerStyle }: any & { ref?: React.RefObject }) => { diff --git a/src/renderer/src/components/agent/AllowedToolsSelect.tsx b/src/renderer/src/components/agent/AllowedToolsSelect.tsx index 775ae24b8..0ca6320b4 100644 --- a/src/renderer/src/components/agent/AllowedToolsSelect.tsx +++ b/src/renderer/src/components/agent/AllowedToolsSelect.tsx @@ -1,5 +1,6 @@ -import { Chip, cn, Select, SelectedItems, SelectItem, SelectProps } from '@heroui/react' -import { Tool } from '@renderer/types' +import type { SelectedItems, SelectProps } from '@heroui/react' +import { Chip, cn, Select, SelectItem } from '@heroui/react' +import type { Tool } from '@renderer/types' import React, { useCallback } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/components/app/PinnedMinapps.tsx b/src/renderer/src/components/app/PinnedMinapps.tsx index 730192d44..d2e128775 100644 --- a/src/renderer/src/components/app/PinnedMinapps.tsx +++ b/src/renderer/src/components/app/PinnedMinapps.tsx @@ -3,10 +3,11 @@ import { useMinappPopup } from '@renderer/hooks/useMinappPopup' import { useMinapps } from '@renderer/hooks/useMinapps' import { useRuntime } from '@renderer/hooks/useRuntime' import { useNavbarPosition, useSettings } from '@renderer/hooks/useSettings' -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 8de40ff15..56a095f7d 100644 --- a/src/renderer/src/components/app/Sidebar.tsx +++ b/src/renderer/src/components/app/Sidebar.tsx @@ -28,7 +28,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 d13e29896..607458f82 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 8a681e337..24ef2752b 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 ec91f54da..2b8d2ee90 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 60beaf925..0651a1ae6 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 53a9b5c42..d55a3b9dd 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/agent.ts b/src/renderer/src/config/agent.ts index e6ae3902b..1757c74b2 100644 --- a/src/renderer/src/config/agent.ts +++ b/src/renderer/src/config/agent.ts @@ -1,6 +1,6 @@ import ClaudeAvatar from '@renderer/assets/images/models/claude.png' -import { AgentBase, AgentType } from '@renderer/types' -import { PermissionModeCard } from '@renderer/types/agent' +import type { AgentBase, AgentType } from '@renderer/types' +import type { PermissionModeCard } from '@renderer/types/agent' // base agent config. no default config for now. const DEFAULT_AGENT_CONFIG: Omit = { diff --git a/src/renderer/src/config/endpointTypes.ts b/src/renderer/src/config/endpointTypes.ts index 4340e5628..e82f74163 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 6b0f1689e..815b3f476 100644 --- a/src/renderer/src/config/minapps.ts +++ b/src/renderer/src/config/minapps.ts @@ -57,7 +57,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 4133e8eb8..5b242f297 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 7aa48a6d0..5eb9cd6ff 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/logo.ts b/src/renderer/src/config/models/logo.ts index 9e1ef2ce2..ce592ad46 100644 --- a/src/renderer/src/config/models/logo.ts +++ b/src/renderer/src/config/models/logo.ts @@ -156,7 +156,7 @@ import ZhipuModelLogoDark from '@renderer/assets/images/models/zhipu_dark.png' import YoudaoLogo from '@renderer/assets/images/providers/netease-youdao.svg' import NomicLogo from '@renderer/assets/images/providers/nomic.png' import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' export function getModelLogoById(modelId: string): string | undefined { const isLight = true diff --git a/src/renderer/src/config/models/reasoning.ts b/src/renderer/src/config/models/reasoning.ts index b3d7ae6ef..3a4d97e59 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 cd8184251..76c441e9f 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 5d8be539d..743f72252 100644 --- a/src/renderer/src/config/models/utils.ts +++ b/src/renderer/src/config/models/utils.ts @@ -1,6 +1,6 @@ -import OpenAI from '@cherrystudio/openai' +import type OpenAI from '@cherrystudio/openai' import { isEmbeddingModel, isRerankModel } from '@renderer/config/models/embedding' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { getLowerBaseModelName } from '@renderer/utils' import { WEB_SEARCH_PROMPT_FOR_OPENROUTER } from '../prompts' diff --git a/src/renderer/src/config/models/vision.ts b/src/renderer/src/config/models/vision.ts index 19e6ce604..18b348071 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 0327e611e..418c81133 100644 --- a/src/renderer/src/config/models/websearch.ts +++ b/src/renderer/src/config/models/websearch.ts @@ -1,5 +1,6 @@ import { getProviderByModel } from '@renderer/services/AssistantService' -import { Model, SystemProviderIds } from '@renderer/types' +import type { Model } from '@renderer/types' +import { SystemProviderIds } from '@renderer/types' import { getLowerBaseModelName, isUserSelectedModelType } from '@renderer/utils' import { isGeminiProvider, isNewApiProvider, isOpenAICompatibleProvider, isOpenAIProvider } from '../providers' diff --git a/src/renderer/src/config/ocr.ts b/src/renderer/src/config/ocr.ts index 6eb52f1ad..2f5141c0f 100644 --- a/src/renderer/src/config/ocr.ts +++ b/src/renderer/src/config/ocr.ts @@ -1,4 +1,4 @@ -import { +import type { BuiltinOcrProvider, BuiltinOcrProviderId, OcrOvProvider, diff --git a/src/renderer/src/config/preprocessProviders.ts b/src/renderer/src/config/preprocessProviders.ts index c01880eb9..7f41235c1 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 7c9a77a19..4c25dfff9 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -56,16 +56,15 @@ 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 { +import type { AtLeast, AzureOpenAIProvider, - isSystemProvider, - OpenAIServiceTiers, Provider, ProviderType, SystemProvider, SystemProviderId } from '@renderer/types' +import { isSystemProvider, OpenAIServiceTiers } from '@renderer/types' import { TOKENFLUX_HOST } from './constant' import { glm45FlashModel, qwen38bModel, SYSTEM_MODELS } from './models' diff --git a/src/renderer/src/config/sidebar.ts b/src/renderer/src/config/sidebar.ts index 637dc3438..5fd5aecff 100644 --- a/src/renderer/src/config/sidebar.ts +++ b/src/renderer/src/config/sidebar.ts @@ -1,4 +1,4 @@ -import { SidebarIcon } from '@renderer/types' +import type { SidebarIcon } from '@renderer/types' /** * 默认显示的侧边栏图标 diff --git a/src/renderer/src/config/tools.ts b/src/renderer/src/config/tools.ts index f7c06a4ef..98cb5f7a1 100644 --- a/src/renderer/src/config/tools.ts +++ b/src/renderer/src/config/tools.ts @@ -1,5 +1,5 @@ -import { ChatCompletionTool } from '@cherrystudio/openai/resources' -import { Model } from '@renderer/types' +import type { ChatCompletionTool } from '@cherrystudio/openai/resources' +import type { Model } from '@renderer/types' import { WEB_SEARCH_PROMPT_FOR_ZHIPU } from './prompts' diff --git a/src/renderer/src/config/translate.ts b/src/renderer/src/config/translate.ts index 05a5e825b..22659b73e 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 abeac5293..1ce3297af 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 1c95067f5..685b3b0fb 100644 --- a/src/renderer/src/context/AntdProvider.tsx +++ b/src/renderer/src/context/AntdProvider.tsx @@ -1,5 +1,5 @@ import { useSettings } from '@renderer/hooks/useSettings' -import { LanguageVarious } from '@renderer/types' +import type { LanguageVarious } from '@renderer/types' import { ConfigProvider, theme } from 'antd' import deDE from 'antd/locale/de_DE' import elGR from 'antd/locale/el_GR' @@ -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 1ef41d1eb..ec369aaa6 100644 --- a/src/renderer/src/context/CodeStyleProvider.tsx +++ b/src/renderer/src/context/CodeStyleProvider.tsx @@ -1,7 +1,8 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useMermaid } from '@renderer/hooks/useMermaid' import { useSettings } from '@renderer/hooks/useSettings' -import { HighlightChunkResult, ShikiPreProperties, shikiStreamService } from '@renderer/services/ShikiStreamService' +import type { HighlightChunkResult, ShikiPreProperties } from '@renderer/services/ShikiStreamService' +import { shikiStreamService } from '@renderer/services/ShikiStreamService' import { ThemeMode } from '@renderer/types' import { getHighlighter, getMarkdownIt, getShiki, loadLanguageIfNeeded, loadThemeIfNeeded } from '@renderer/utils/shiki' import * as cmThemes from '@uiw/codemirror-themes-all' diff --git a/src/renderer/src/context/MessageEditingContext.tsx b/src/renderer/src/context/MessageEditingContext.tsx index 5c864908b..90a9037c6 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 c6de09b72..8db0b980b 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 226caefca..eab4bd138 100644 --- a/src/renderer/src/context/ThemeProvider.tsx +++ b/src/renderer/src/context/ThemeProvider.tsx @@ -3,7 +3,8 @@ import { useNavbarPosition, useSettings } from '@renderer/hooks/useSettings' import useUserTheme from '@renderer/hooks/useUserTheme' import { ThemeMode } from '@renderer/types' 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 diff --git a/src/renderer/src/databases/index.ts b/src/renderer/src/databases/index.ts index 83ad6b663..fc47e37cb 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, diff --git a/src/renderer/src/databases/upgrades.ts b/src/renderer/src/databases/upgrades.ts index 79a36419d..8f952e245 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 b07d74d87..563d74cb8 100644 --- a/src/renderer/src/env.d.ts +++ b/src/renderer/src/env.d.ts @@ -1,12 +1,12 @@ /// import type { PermissionUpdate } from '@anthropic-ai/claude-agent-sdk' -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/agents/useAgents.ts b/src/renderer/src/hooks/agents/useAgents.ts index 3f5dcb6e3..7b0081126 100644 --- a/src/renderer/src/hooks/agents/useAgents.ts +++ b/src/renderer/src/hooks/agents/useAgents.ts @@ -1,6 +1,6 @@ import { useAppDispatch } from '@renderer/store' import { setActiveAgentId, setActiveSessionIdAction } from '@renderer/store/runtime' -import { AddAgentForm, CreateAgentResponse } from '@renderer/types' +import type { AddAgentForm, CreateAgentResponse } from '@renderer/types' import { formatErrorMessageWithPrefix } from '@renderer/utils/error' import { useCallback } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/hooks/agents/useModel.ts b/src/renderer/src/hooks/agents/useModel.ts index 17c1b0214..87070fce5 100644 --- a/src/renderer/src/hooks/agents/useModel.ts +++ b/src/renderer/src/hooks/agents/useModel.ts @@ -1,4 +1,4 @@ -import { ApiModelsFilter } from '@renderer/types' +import type { ApiModelsFilter } from '@renderer/types' import { useApiModels } from './useModels' diff --git a/src/renderer/src/hooks/agents/useModels.ts b/src/renderer/src/hooks/agents/useModels.ts index c23a056c7..78d1c5904 100644 --- a/src/renderer/src/hooks/agents/useModels.ts +++ b/src/renderer/src/hooks/agents/useModels.ts @@ -1,4 +1,4 @@ -import { ApiModel, ApiModelsFilter } from '@renderer/types' +import type { ApiModel, ApiModelsFilter } from '@renderer/types' import { merge } from 'lodash' import { useCallback } from 'react' import useSWR from 'swr' diff --git a/src/renderer/src/hooks/agents/useSessions.ts b/src/renderer/src/hooks/agents/useSessions.ts index 2be85d5eb..a9977ba2e 100644 --- a/src/renderer/src/hooks/agents/useSessions.ts +++ b/src/renderer/src/hooks/agents/useSessions.ts @@ -1,4 +1,4 @@ -import { CreateAgentSessionResponse, CreateSessionForm, GetAgentSessionResponse } from '@renderer/types' +import type { CreateAgentSessionResponse, CreateSessionForm, GetAgentSessionResponse } from '@renderer/types' import { formatErrorMessageWithPrefix } from '@renderer/utils/error' import { useCallback } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/hooks/agents/useUpdateAgent.ts b/src/renderer/src/hooks/agents/useUpdateAgent.ts index 76d3fbd9e..abbe1ed46 100644 --- a/src/renderer/src/hooks/agents/useUpdateAgent.ts +++ b/src/renderer/src/hooks/agents/useUpdateAgent.ts @@ -1,5 +1,5 @@ -import { AgentEntity, ListAgentsResponse, UpdateAgentForm } from '@renderer/types' -import { UpdateAgentBaseOptions, UpdateAgentFunction } from '@renderer/types/agent' +import type { AgentEntity, ListAgentsResponse, UpdateAgentForm } from '@renderer/types' +import type { UpdateAgentBaseOptions, UpdateAgentFunction } from '@renderer/types/agent' import { formatErrorMessageWithPrefix } from '@renderer/utils/error' import { useCallback } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/hooks/agents/useUpdateSession.ts b/src/renderer/src/hooks/agents/useUpdateSession.ts index 44a5839d7..759b7d25f 100644 --- a/src/renderer/src/hooks/agents/useUpdateSession.ts +++ b/src/renderer/src/hooks/agents/useUpdateSession.ts @@ -1,5 +1,5 @@ -import { AgentSessionEntity, ListAgentSessionsResponse, UpdateSessionForm } from '@renderer/types' -import { UpdateAgentBaseOptions, UpdateAgentSessionFunction } from '@renderer/types/agent' +import type { AgentSessionEntity, ListAgentSessionsResponse, UpdateSessionForm } from '@renderer/types' +import type { UpdateAgentBaseOptions, UpdateAgentSessionFunction } from '@renderer/types/agent' import { getErrorMessage } from '@renderer/utils/error' import { useCallback } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/hooks/useAssistant.ts b/src/renderer/src/hooks/useAssistant.ts index 8a038bec3..dc0f5c28e 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/useAssistantPresets.ts b/src/renderer/src/hooks/useAssistantPresets.ts index b6db1dffa..a92bc9989 100644 --- a/src/renderer/src/hooks/useAssistantPresets.ts +++ b/src/renderer/src/hooks/useAssistantPresets.ts @@ -7,7 +7,7 @@ import { updateAssistantPreset, updateAssistantPresetSettings } from '@renderer/store/assistants' -import { AssistantPreset, AssistantSettings } from '@renderer/types' +import type { AssistantPreset, AssistantSettings } from '@renderer/types' const logger = loggerService.withContext('useAssistantPresets') diff --git a/src/renderer/src/hooks/useChatContext.ts b/src/renderer/src/hooks/useChatContext.ts index 415ab0c61..2e829cb85 100644 --- a/src/renderer/src/hooks/useChatContext.ts +++ b/src/renderer/src/hooks/useChatContext.ts @@ -1,11 +1,11 @@ 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 { useDispatch, useSelector, useStore } from 'react-redux' diff --git a/src/renderer/src/hooks/useCodeHighlight.ts b/src/renderer/src/hooks/useCodeHighlight.ts index 4ae5e9e97..7e6e40b6e 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 44ffd29d9..246858768 100644 --- a/src/renderer/src/hooks/useCodeTools.ts +++ b/src/renderer/src/hooks/useCodeTools.ts @@ -11,7 +11,7 @@ import { setSelectedModel, setSelectedTerminal } from '@renderer/store/codeTools' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' import { codeTools } from '@shared/config/constant' import { useCallback } from 'react' diff --git a/src/renderer/src/hooks/useFiles.ts b/src/renderer/src/hooks/useFiles.ts index 19e6d98e7..958d41b27 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 e4dc8f12f..464195aff 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 70dc83c27..a42fc90fa 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 57b454e6b..a14591c52 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/useMCPServerTrust.tsx b/src/renderer/src/hooks/useMCPServerTrust.tsx index 817ae0310..ee3fefba6 100644 --- a/src/renderer/src/hooks/useMCPServerTrust.tsx +++ b/src/renderer/src/hooks/useMCPServerTrust.tsx @@ -3,7 +3,7 @@ import { ensureServerTrusted as ensureServerTrustedCore, getCommandPreview } from '@renderer/pages/settings/MCPSettings/utils' -import { MCPServer } from '@renderer/types' +import type { MCPServer } from '@renderer/types' import { modalConfirm } from '@renderer/utils' import { useCallback } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/hooks/useMCPServers.ts b/src/renderer/src/hooks/useMCPServers.ts index c4f2815f4..26731e14f 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 99b49e43e..9d372a6b3 100644 --- a/src/renderer/src/hooks/useMinappPopup.ts +++ b/src/renderer/src/hooks/useMinappPopup.ts @@ -10,7 +10,7 @@ import { setOpenedKeepAliveMinapps, setOpenedOneOffMinapp } from '@renderer/store/runtime' -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 4a8fe5a44..77ea3cb89 100644 --- a/src/renderer/src/hooks/useMinapps.ts +++ b/src/renderer/src/hooks/useMinapps.ts @@ -1,7 +1,8 @@ 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 aba2d0078..822623679 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 f72b1e7d2..21a4fee58 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 284b31695..84db7c523 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 bd597e226..accc6df00 100644 --- a/src/renderer/src/hooks/useOcrProvider.tsx +++ b/src/renderer/src/hooks/useOcrProvider.tsx @@ -6,14 +6,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 e7c7f2235..978cb5cb3 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 96e01ec40..19d422ac9 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 96120d4dc..be4ed772f 100644 --- a/src/renderer/src/hooks/useProvider.ts +++ b/src/renderer/src/hooks/useProvider.ts @@ -11,7 +11,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/useSelectionAssistant.ts b/src/renderer/src/hooks/useSelectionAssistant.ts index 93a51b2c7..74e72065d 100644 --- a/src/renderer/src/hooks/useSelectionAssistant.ts +++ b/src/renderer/src/hooks/useSelectionAssistant.ts @@ -12,7 +12,7 @@ import { setSelectionEnabled, setTriggerMode } from '@renderer/store/selectionStore' -import { ActionItem, FilterMode, TriggerMode } from '@renderer/types/selectionTypes' +import type { ActionItem, FilterMode, TriggerMode } from '@renderer/types/selectionTypes' export function useSelectionAssistant() { const dispatch = useAppDispatch() diff --git a/src/renderer/src/hooks/useSettings.ts b/src/renderer/src/hooks/useSettings.ts index 2b9178f4a..55d40e435 100644 --- a/src/renderer/src/hooks/useSettings.ts +++ b/src/renderer/src/hooks/useSettings.ts @@ -1,7 +1,6 @@ import store, { useAppDispatch, useAppSelector } from '@renderer/store' +import type { AssistantIconType, SendMessageShortcut, SettingsState } from '@renderer/store/settings' import { - AssistantIconType, - SendMessageShortcut, setAssistantIconType, setAutoCheckUpdate as _setAutoCheckUpdate, setDisableHardwareAcceleration, @@ -16,14 +15,13 @@ import { setTestChannel as _setTestChannel, setTestPlan as _setTestPlan, setTheme, - SettingsState, setTopicPosition, setTray as _setTray, setTrayOnClose, setWindowStyle } from '@renderer/store/settings' -import { SidebarIcon, ThemeMode, TranslateLanguageCode } from '@renderer/types' -import { UpgradeChannel } from '@shared/config/constant' +import type { SidebarIcon, ThemeMode, TranslateLanguageCode } from '@renderer/types' +import type { UpgradeChannel } from '@shared/config/constant' 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 0bd252d8e..5c2ed91f5 100644 --- a/src/renderer/src/hooks/useSidebarIcon.ts +++ b/src/renderer/src/hooks/useSidebarIcon.ts @@ -1,4 +1,4 @@ -import { SidebarIcon } from '@renderer/types' +import type { SidebarIcon } from '@renderer/types' import { useSettings } from './useSettings' diff --git a/src/renderer/src/hooks/useStore.ts b/src/renderer/src/hooks/useStore.ts index 53e464645..bb77e1f0d 100644 --- a/src/renderer/src/hooks/useStore.ts +++ b/src/renderer/src/hooks/useStore.ts @@ -7,7 +7,7 @@ import { toggleShowAssistants, toggleShowTopics } from '@renderer/store/settings' -import { AssistantsSortType } from '@renderer/types' +import type { AssistantsSortType } from '@renderer/types' export function useShowAssistants() { const showAssistants = useAppSelector((state) => state.settings.showAssistants) diff --git a/src/renderer/src/hooks/useTags.ts b/src/renderer/src/hooks/useTags.ts index cdd0af524..0a0bb134c 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 b8a3dc977..15ecb99d8 100644 --- a/src/renderer/src/hooks/useTopic.ts +++ b/src/renderer/src/hooks/useTopic.ts @@ -7,7 +7,7 @@ import store from '@renderer/store' import { updateTopic } from '@renderer/store/assistants' import { setNewlyRenamedTopics, setRenamingTopics } from '@renderer/store/runtime' 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 { type Dispatch, type SetStateAction, useEffect, useState } from 'react' diff --git a/src/renderer/src/hooks/useTranslate.ts b/src/renderer/src/hooks/useTranslate.ts index 5f5f1cbde..6191560d3 100644 --- a/src/renderer/src/hooks/useTranslate.ts +++ b/src/renderer/src/hooks/useTranslate.ts @@ -1,8 +1,9 @@ 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/useUserTheme.ts b/src/renderer/src/hooks/useUserTheme.ts index 177d23a52..5958026e7 100644 --- a/src/renderer/src/hooks/useUserTheme.ts +++ b/src/renderer/src/hooks/useUserTheme.ts @@ -1,5 +1,6 @@ import { useAppDispatch, useAppSelector } from '@renderer/store' -import { setUserTheme, UserTheme } from '@renderer/store/settings' +import type { UserTheme } from '@renderer/store/settings' +import { setUserTheme } from '@renderer/store/settings' import Color from 'color' export default function useUserTheme() { diff --git a/src/renderer/src/hooks/useVertexAI.ts b/src/renderer/src/hooks/useVertexAI.ts index 76539e172..17b83118f 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 34ee07403..d34990062 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 64125c2a8..3736437fc 100644 --- a/src/renderer/src/i18n/label.ts +++ b/src/renderer/src/i18n/label.ts @@ -5,13 +5,8 @@ */ import { loggerService } from '@logger' -import { - AgentType, - BuiltinMCPServerName, - BuiltinMCPServerNames, - BuiltinOcrProviderId, - ThinkingOption -} from '@renderer/types' +import type { AgentType, BuiltinMCPServerName, BuiltinOcrProviderId, ThinkingOption } from '@renderer/types' +import { BuiltinMCPServerNames } from '@renderer/types' import i18n from './index' diff --git a/src/renderer/src/pages/code/CodeToolsPage.tsx b/src/renderer/src/pages/code/CodeToolsPage.tsx index ff63510e6..3d62a82d0 100644 --- a/src/renderer/src/pages/code/CodeToolsPage.tsx +++ b/src/renderer/src/pages/code/CodeToolsPage.tsx @@ -13,12 +13,14 @@ 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 { EndpointType, Model } from '@renderer/types' +import type { EndpointType, Model } from '@renderer/types' import { getClaudeSupportedProviders } from '@renderer/utils/provider' -import { codeTools, terminalApps, TerminalConfig } from '@shared/config/constant' +import type { TerminalConfig } from '@shared/config/constant' +import { codeTools, terminalApps } from '@shared/config/constant' import { Alert, Avatar, Button, Checkbox, Input, Popover, Select, Space, Tooltip } from 'antd' import { ArrowUpRight, Download, FolderOpen, 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 b2ddeb9d6..c0a00a02c 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 a1c1f00aa..190148933 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 d6ec0d850..b6ffb5db9 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 190a10389..74d29d116 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 c8c493740..71324cf7f 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 9ba138cde..026bf8502 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 a88e97dd0..e0ffba8b2 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 9f5111a25..36b1fc35d 100644 --- a/src/renderer/src/pages/history/components/TopicMessages.tsx +++ b/src/renderer/src/pages/history/components/TopicMessages.tsx @@ -10,12 +10,13 @@ import { getAssistantById } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { isGenerating, 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 37113891f..d307200ce 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 c90d21c8c..8a0291865 100644 --- a/src/renderer/src/pages/home/Chat.tsx +++ b/src/renderer/src/pages/home/Chat.tsx @@ -1,6 +1,7 @@ import { Alert } from '@heroui/react' 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' @@ -14,12 +15,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, useCallback, useMemo, useState } from 'react' +import type { FC } from 'react' +import React, { useCallback, useMemo, 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 43d04cd1a..bdc000f22 100644 --- a/src/renderer/src/pages/home/ChatNavbar.tsx +++ b/src/renderer/src/pages/home/ChatNavbar.tsx @@ -9,12 +9,12 @@ import { useShowAssistants, useShowTopics } from '@renderer/hooks/useStore' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { useAppDispatch } from '@renderer/store' import { setNarrowMode } from '@renderer/store/settings' -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 3825630ba..712c78712 100644 --- a/src/renderer/src/pages/home/HomePage.tsx +++ b/src/renderer/src/pages/home/HomePage.tsx @@ -7,10 +7,11 @@ import { useActiveTopic } from '@renderer/hooks/useTopic' import NavigationService from '@renderer/services/NavigationService' import { newMessagesActions } from '@renderer/store/newMessage' import { setActiveAgentId, setActiveTopicOrSessionAction } from '@renderer/store/runtime' -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/AgentSessionInputbar.tsx b/src/renderer/src/pages/home/Inputbar/AgentSessionInputbar.tsx index 153f921d5..e98dd0ac6 100644 --- a/src/renderer/src/pages/home/Inputbar/AgentSessionInputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/AgentSessionInputbar.tsx @@ -15,16 +15,19 @@ import { useAppDispatch, useAppSelector } from '@renderer/store' import { newMessagesActions, selectMessagesForTopic } from '@renderer/store/newMessage' import { sendMessage as dispatchSendMessage } from '@renderer/store/thunk/messageThunk' import type { Assistant, Message, Model, Topic } from '@renderer/types' -import { MessageBlock, MessageBlockStatus } from '@renderer/types/newMessage' +import type { MessageBlock } from '@renderer/types/newMessage' +import { MessageBlockStatus } from '@renderer/types/newMessage' import { classNames } from '@renderer/utils' import { abortCompletion } from '@renderer/utils/abortController' import { buildAgentSessionTopicId } from '@renderer/utils/agentSession' import { getSendMessageShortcutLabel, isSendMessageKeyPressed } from '@renderer/utils/input' import { createMainTextBlock, createMessage } from '@renderer/utils/messageUtils/create' -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 } from 'lodash' import { CirclePause, MessageSquareDiff } 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 { v4 as uuid } from 'uuid' diff --git a/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx b/src/renderer/src/pages/home/Inputbar/AttachmentButton.tsx index df0dbf9f5..a2ccd40e4 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 b6962c0f9..657003750 100644 --- a/src/renderer/src/pages/home/Inputbar/AttachmentPreview.tsx +++ b/src/renderer/src/pages/home/Inputbar/AttachmentPreview.tsx @@ -16,11 +16,12 @@ import ConfirmDialog from '@renderer/components/ConfirmDialog' 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, MouseEvent, useState } from 'react' +import type { FC, MouseEvent } from 'react' +import { useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Inputbar/GenerateImageButton.tsx b/src/renderer/src/pages/home/Inputbar/GenerateImageButton.tsx index dc6553188..683c1fef6 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 0206053eb..aea8a5758 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -33,7 +33,7 @@ import WebSearchService from '@renderer/services/WebSearchService' import { useAppDispatch, useAppSelector } from '@renderer/store' import { setSearching } from '@renderer/store/runtime' 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 fa87973a3..a24d63e8b 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 { isAnthropicModel, isGeminiModel, @@ -19,12 +20,13 @@ 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 { InputBarToolType } from '@renderer/types/chat' +import type { FileType, KnowledgeBase, Model } from '@renderer/types' +import { FileTypes } from '@renderer/types' +import type { InputBarToolType } from '@renderer/types/chat' 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, @@ -41,21 +43,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 552017e42..daa2df9c7 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 711288f4b..473da6f31 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 6680177b2..4d28b4824 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 1122fef0d..ffb707242 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 70af60976..755c678bd 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 7cf9237a2..f4dd1886a 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 e01447b3f..17d54ce24 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 32f8b26b0..740575286 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 7e2b7edd3..e5d31a116 100644 --- a/src/renderer/src/pages/home/Inputbar/ThinkingButton.tsx +++ b/src/renderer/src/pages/home/Inputbar/ThinkingButton.tsx @@ -17,9 +17,10 @@ import { } 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 7316e3549..4340d7a58 100644 --- a/src/renderer/src/pages/home/Inputbar/TokenCount.tsx +++ b/src/renderer/src/pages/home/Inputbar/TokenCount.tsx @@ -3,7 +3,7 @@ import MaxContextCount from '@renderer/components/MaxContextCount' import { useSettings } from '@renderer/hooks/useSettings' 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 3b96d0cd0..8cdc568fc 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 807781bac..b4107d7de 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, isGPT5SeriesReasoningModel, @@ -15,12 +16,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 f2d65e9a7..a20e090ad 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 1313b95a4..754d4215a 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 3f96c6f99..da197240f 100644 --- a/src/renderer/src/pages/home/Messages/Blocks/CitationBlock.tsx +++ b/src/renderer/src/pages/home/Messages/Blocks/CitationBlock.tsx @@ -1,4 +1,4 @@ -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 243bec8cc..17613e942 100644 --- a/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx +++ b/src/renderer/src/pages/home/Messages/Blocks/ErrorBlock.tsx @@ -6,6 +6,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, @@ -28,10 +29,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 455938743..6fe15023e 100644 --- a/src/renderer/src/pages/home/Messages/ChatFlowHistory.tsx +++ b/src/renderer/src/pages/home/Messages/ChatFlowHistory.tsx @@ -9,16 +9,18 @@ import useAvatar from '@renderer/hooks/useAvatar' import { useSettings } from '@renderer/hooks/useSettings' 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 4214abc5b..4aeb275b6 100644 --- a/src/renderer/src/pages/home/Messages/ChatNavigation.tsx +++ b/src/renderer/src/pages/home/Messages/ChatNavigation.tsx @@ -8,10 +8,11 @@ import { } from '@ant-design/icons' import { useSettings } from '@renderer/hooks/useSettings' import { useTimer } from '@renderer/hooks/useTimer' -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 96765d3fb..c9967d9f6 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 926aa6641..dcf476004 100644 --- a/src/renderer/src/pages/home/Messages/Message.tsx +++ b/src/renderer/src/pages/home/Messages/Message.tsx @@ -13,12 +13,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 73fcd4ea5..ea8787e11 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 953dccaa2..a5e43cc53 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/MessageGroup.tsx b/src/renderer/src/pages/home/Messages/MessageGroup.tsx index fde7ccd13..8b4c35e10 100644 --- a/src/renderer/src/pages/home/Messages/MessageGroup.tsx +++ b/src/renderer/src/pages/home/Messages/MessageGroup.tsx @@ -6,7 +6,7 @@ import { useMessageOperations } from '@renderer/hooks/useMessageOperations' import { useSettings } from '@renderer/hooks/useSettings' import { useTimer } from '@renderer/hooks/useTimer' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { MultiModelMessageStyle } from '@renderer/store/settings' +import type { MultiModelMessageStyle } from '@renderer/store/settings' import type { Topic } from '@renderer/types' import type { Message } from '@renderer/types/newMessage' import { classNames } from '@renderer/utils' diff --git a/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx b/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx index 0e7b7ab28..d4700f502 100644 --- a/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx +++ b/src/renderer/src/pages/home/Messages/MessageGroupMenuBar.tsx @@ -9,13 +9,14 @@ import { import { HStack } from '@renderer/components/Layout' import { useAssistant } from '@renderer/hooks/useAssistant' import { useMessageOperations } from '@renderer/hooks/useMessageOperations' -import { MultiModelMessageStyle } from '@renderer/store/settings' +import type { MultiModelMessageStyle } from '@renderer/store/settings' 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 { 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 917184f16..c88157f66 100644 --- a/src/renderer/src/pages/home/Messages/MessageGroupModelList.tsx +++ b/src/renderer/src/pages/home/Messages/MessageGroupModelList.tsx @@ -10,7 +10,8 @@ import { AssistantMessageStatus, type Message } from '@renderer/types/newMessage import { lightbulbSoftVariants } from '@renderer/utils/motionVariants' 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' diff --git a/src/renderer/src/pages/home/Messages/MessageGroupSettings.tsx b/src/renderer/src/pages/home/Messages/MessageGroupSettings.tsx index 9ae20180f..4705547fa 100644 --- a/src/renderer/src/pages/home/Messages/MessageGroupSettings.tsx +++ b/src/renderer/src/pages/home/Messages/MessageGroupSettings.tsx @@ -7,7 +7,8 @@ import { useAppDispatch } from '@renderer/store' import { setGridColumns, setGridPopoverTrigger } from '@renderer/store/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 b43e12ce1..5f6a69663 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 52bb4a227..444189c15 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 138393040..bb7a17e05 100644 --- a/src/renderer/src/pages/home/Messages/MessageMenubar.tsx +++ b/src/renderer/src/pages/home/Messages/MessageMenubar.tsx @@ -5,12 +5,8 @@ import ObsidianExportPopup from '@renderer/components/Popups/ObsidianExportPopup import SaveToKnowledgePopup from '@renderer/components/Popups/SaveToKnowledgePopup' import { SelectModelPopup } from '@renderer/components/Popups/SelectModelPopup' import { isEmbeddingModel, isRerankModel, isVisionModel } from '@renderer/config/models' -import { - DEFAULT_MESSAGE_MENUBAR_SCOPE, - getMessageMenubarConfig, - MessageMenubarButtonId, - MessageMenubarScope -} from '@renderer/config/registry/messageMenubar' +import type { MessageMenubarButtonId, MessageMenubarScope } from '@renderer/config/registry/messageMenubar' +import { DEFAULT_MESSAGE_MENUBAR_SCOPE, getMessageMenubarConfig } from '@renderer/config/registry/messageMenubar' import { useMessageEditing } from '@renderer/context/MessageEditingContext' import { useChatContext } from '@renderer/hooks/useChatContext' import { useMessageOperations } from '@renderer/hooks/useMessageOperations' @@ -21,7 +17,8 @@ import useTranslate from '@renderer/hooks/useTranslate' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { getMessageTitle } from '@renderer/services/MessagesService' import { translateText } from '@renderer/services/TranslateService' -import store, { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import store, { useAppDispatch } from '@renderer/store' import { messageBlocksSelectors, removeOneBlock } from '@renderer/store/messageBlock' import { selectMessagesForTopic } from '@renderer/store/newMessage' import { TraceIcon } from '@renderer/trace/pages/Component' @@ -63,8 +60,8 @@ import { ThumbsUp, Upload } from 'lucide-react' -import type { Dispatch, ReactNode, SetStateAction } from 'react' -import { FC, Fragment, memo, useCallback, useMemo, useState } from 'react' +import type { Dispatch, FC, ReactNode, SetStateAction } from 'react' +import { Fragment, 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 1f967a2f6..1327dd4a8 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 d3d67fb7f..b5e41d689 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 91135ed73..dd0a02ecf 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 979b50ab6..dd8438180 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 7bf037411..7e0e03a77 100644 --- a/src/renderer/src/pages/home/Messages/Messages.tsx +++ b/src/renderer/src/pages/home/Messages/Messages.tsx @@ -20,7 +20,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 7a7c64167..c5de99b35 100644 --- a/src/renderer/src/pages/home/Messages/NarrowLayout.tsx +++ b/src/renderer/src/pages/home/Messages/NarrowLayout.tsx @@ -1,5 +1,5 @@ import { useSettings } from '@renderer/hooks/useSettings' -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 350822053..b80a45bf0 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 '@renderer/types' 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 e02389d91..1be977059 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/MessageAgentTools/GenericTools.tsx b/src/renderer/src/pages/home/Messages/Tools/MessageAgentTools/GenericTools.tsx index 11314e984..9eaaf76f2 100644 --- a/src/renderer/src/pages/home/Messages/Tools/MessageAgentTools/GenericTools.tsx +++ b/src/renderer/src/pages/home/Messages/Tools/MessageAgentTools/GenericTools.tsx @@ -1,6 +1,6 @@ // 通用工具组件 - 减少重复代码 -import { ReactNode } from 'react' +import type { ReactNode } from 'react' // 生成 AccordionItem 的标题 export function ToolTitle({ diff --git a/src/renderer/src/pages/home/Messages/Tools/MessageAgentTools/index.tsx b/src/renderer/src/pages/home/Messages/Tools/MessageAgentTools/index.tsx index 8b10508bf..8d1f5eee8 100644 --- a/src/renderer/src/pages/home/Messages/Tools/MessageAgentTools/index.tsx +++ b/src/renderer/src/pages/home/Messages/Tools/MessageAgentTools/index.tsx @@ -1,6 +1,6 @@ import { Accordion } from '@heroui/react' import { loggerService } from '@logger' -import { NormalToolResponse } from '@renderer/types' +import type { NormalToolResponse } from '@renderer/types' // 导出所有类型 export * from './types' @@ -20,7 +20,8 @@ import { SearchTool } from './SearchTool' import { SkillTool } from './SkillTool' import { TaskTool } from './TaskTool' import { TodoWriteTool } from './TodoWriteTool' -import { AgentToolsType, ToolInput, ToolOutput } from './types' +import type { ToolInput, ToolOutput } from './types' +import { AgentToolsType } from './types' import { UnknownToolRenderer } from './UnknownToolRenderer' import { WebFetchTool } from './WebFetchTool' import { WebSearchTool } from './WebSearchTool' diff --git a/src/renderer/src/pages/home/Messages/Tools/MessageKnowledgeSearch.tsx b/src/renderer/src/pages/home/Messages/Tools/MessageKnowledgeSearch.tsx index 19c3a135d..08c8884a2 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 { NormalToolResponse } from '@renderer/types' +import type { NormalToolResponse } 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 71d3c68b8..455e64d05 100644 --- a/src/renderer/src/pages/home/Messages/Tools/MessageMcpTool.tsx +++ b/src/renderer/src/pages/home/Messages/Tools/MessageMcpTool.tsx @@ -4,11 +4,11 @@ import { useCodeStyle } from '@renderer/context/CodeStyleProvider' import { useMCPServers } from '@renderer/hooks/useMCPServers' import { useSettings } from '@renderer/hooks/useSettings' import { useTimer } from '@renderer/hooks/useTimer' -import { MCPToolResponse } from '@renderer/types' +import type { MCPToolResponse } from '@renderer/types' 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, @@ -35,7 +35,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 2d4914463..86b1237de 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 { NormalToolResponse } from '@renderer/types' +import type { NormalToolResponse } 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 20f7f0165..f78f5e221 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 { NormalToolResponse } from '@renderer/types' +import type { NormalToolResponse } from '@renderer/types' import type { ToolMessageBlock } from '@renderer/types/newMessage' import { MessageAgentTools } from './MessageAgentTools' diff --git a/src/renderer/src/pages/home/Messages/Tools/MessageWebSearch.tsx b/src/renderer/src/pages/home/Messages/Tools/MessageWebSearch.tsx index 5fe71bbae..0f2cfe4ee 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 { NormalToolResponse } from '@renderer/types' +import type { NormalToolResponse } 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/Messages/Tools/ToolPermissionRequestCard.tsx b/src/renderer/src/pages/home/Messages/Tools/ToolPermissionRequestCard.tsx index 1ef93a534..e2678357c 100644 --- a/src/renderer/src/pages/home/Messages/Tools/ToolPermissionRequestCard.tsx +++ b/src/renderer/src/pages/home/Messages/Tools/ToolPermissionRequestCard.tsx @@ -3,7 +3,7 @@ import { Button, Chip, ScrollShadow } from '@heroui/react' import { loggerService } from '@logger' import { useAppDispatch, useAppSelector } from '@renderer/store' import { selectPendingPermissionByToolName, toolPermissionsActions } from '@renderer/store/toolPermissions' -import { NormalToolResponse } from '@renderer/types' +import type { NormalToolResponse } from '@renderer/types' import { ChevronDown, CirclePlay, CircleX } from 'lucide-react' import { useCallback, useEffect, useMemo, useState } from '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 c643391d8..dd3a21592 100644 --- a/src/renderer/src/pages/home/Navbar.tsx +++ b/src/renderer/src/pages/home/Navbar.tsx @@ -9,12 +9,12 @@ import { useShowAssistants, useShowTopics } from '@renderer/hooks/useStore' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { useAppDispatch } from '@renderer/store' import { setNarrowMode } from '@renderer/store/settings' -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 4eebe45bc..383319a3b 100644 --- a/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/AssistantsTab.tsx @@ -9,9 +9,10 @@ import { useAssistantsTabSortType } from '@renderer/hooks/useStore' import { useTags } from '@renderer/hooks/useTags' import { useAppDispatch } from '@renderer/store' import { addIknowAction } from '@renderer/store/runtime' -import { Assistant, AssistantsSortType, Topic } from '@renderer/types' +import type { Assistant, AssistantsSortType, Topic } from '@renderer/types' import { getErrorMessage } from '@renderer/utils' -import { FC, useCallback, useRef, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Tabs/SessionSettingsTab.tsx b/src/renderer/src/pages/home/Tabs/SessionSettingsTab.tsx index 099d22a72..346c3abb1 100644 --- a/src/renderer/src/pages/home/Tabs/SessionSettingsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/SessionSettingsTab.tsx @@ -1,10 +1,10 @@ import { Button, Divider } from '@heroui/react' -import { useUpdateSession } from '@renderer/hooks/agents/useUpdateSession' +import type { useUpdateSession } from '@renderer/hooks/agents/useUpdateSession' import { SessionSettingsPopup } from '@renderer/pages/settings/AgentSettings' import AdvancedSettings from '@renderer/pages/settings/AgentSettings/AdvancedSettings' import EssentialSettings from '@renderer/pages/settings/AgentSettings/EssentialSettings' -import { GetAgentSessionResponse } from '@renderer/types' -import { FC } from 'react' +import type { GetAgentSessionResponse } from '@renderer/types' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' interface Props { diff --git a/src/renderer/src/pages/home/Tabs/SessionsTab.tsx b/src/renderer/src/pages/home/Tabs/SessionsTab.tsx index fed7668c0..6241893c3 100644 --- a/src/renderer/src/pages/home/Tabs/SessionsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/SessionsTab.tsx @@ -2,7 +2,8 @@ import { Alert, cn } from '@heroui/react' import { useRuntime } from '@renderer/hooks/useRuntime' import { useSettings } from '@renderer/hooks/useSettings' import { AnimatePresence, motion } from 'framer-motion' -import { FC, memo } from 'react' +import type { FC } from 'react' +import { memo } from 'react' import { useTranslation } from 'react-i18next' import Sessions from './components/Sessions' diff --git a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx index 9aca265c4..8b39e766f 100644 --- a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx @@ -22,8 +22,8 @@ import AssistantSettingsPopup from '@renderer/pages/settings/AssistantSettings' import { CollapsibleSettingGroup } from '@renderer/pages/settings/SettingGroup' import { getDefaultModel } from '@renderer/services/AssistantService' import { useAppDispatch } from '@renderer/store' +import type { SendMessageShortcut } from '@renderer/store/settings' import { - SendMessageShortcut, setAutoTranslateWithSpace, setCodeCollapsible, setCodeEditor, @@ -52,12 +52,14 @@ import { setShowTranslateConfirm, setThoughtAutoCollapse } from '@renderer/store/settings' -import { Assistant, AssistantSettings, CodeStyleVarious, MathEngine, ThemeMode } from '@renderer/types' +import type { Assistant, AssistantSettings, CodeStyleVarious, MathEngine } from '@renderer/types' +import { ThemeMode } from '@renderer/types' import { modalConfirm } from '@renderer/utils' import { getSendMessageShortcutLabel } from '@renderer/utils/input' 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 ce413aaca..640063035 100644 --- a/src/renderer/src/pages/home/Tabs/TopicsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/TopicsTab.tsx @@ -1,6 +1,6 @@ import { useRuntime } from '@renderer/hooks/useRuntime' -import { Assistant, Topic } from '@renderer/types' -import { FC } from 'react' +import type { Assistant, Topic } from '@renderer/types' +import type { FC } from 'react' import { Topics } from './components/Topics' import SessionsTab from './SessionsTab' diff --git a/src/renderer/src/pages/home/Tabs/components/AddButton.tsx b/src/renderer/src/pages/home/Tabs/components/AddButton.tsx index 99868861b..62feecd22 100644 --- a/src/renderer/src/pages/home/Tabs/components/AddButton.tsx +++ b/src/renderer/src/pages/home/Tabs/components/AddButton.tsx @@ -1,6 +1,7 @@ -import { Button, ButtonProps, cn } from '@heroui/react' +import type { ButtonProps } from '@heroui/react' +import { Button, cn } from '@heroui/react' import { PlusIcon } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' interface Props extends ButtonProps { children: React.ReactNode diff --git a/src/renderer/src/pages/home/Tabs/components/AgentItem.tsx b/src/renderer/src/pages/home/Tabs/components/AgentItem.tsx index 4ecc862ae..59eafaa45 100644 --- a/src/renderer/src/pages/home/Tabs/components/AgentItem.tsx +++ b/src/renderer/src/pages/home/Tabs/components/AgentItem.tsx @@ -5,10 +5,11 @@ import { useSettings } from '@renderer/hooks/useSettings' import AgentSettingsPopup from '@renderer/pages/settings/AgentSettings/AgentSettingsPopup' import { AgentLabel } from '@renderer/pages/settings/AgentSettings/shared' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { AgentEntity } from '@renderer/types' +import type { AgentEntity } from '@renderer/types' import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuTrigger } from '@renderer/ui/context-menu' import { Bot } from 'lucide-react' -import { FC, memo, useCallback } from 'react' +import type { FC } from 'react' +import { memo, useCallback } from 'react' import { useTranslation } from 'react-i18next' // const logger = loggerService.withContext('AgentItem') diff --git a/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx b/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx index faa00576d..e18c3da9a 100644 --- a/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx +++ b/src/renderer/src/pages/home/Tabs/components/AssistantItem.tsx @@ -11,10 +11,11 @@ import { getDefaultModel } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { useAppDispatch } from '@renderer/store' import { setActiveTopicOrSessionAction } from '@renderer/store/runtime' -import { Assistant, AssistantsSortType } from '@renderer/types' +import type { Assistant, AssistantsSortType } from '@renderer/types' import { getLeadingEmoji, uuid } from '@renderer/utils' import { hasTopicPendingRequests } from '@renderer/utils/queue' -import { Dropdown, MenuProps } from 'antd' +import type { MenuProps } from 'antd' +import { Dropdown } from 'antd' import { omit } from 'lodash' import { AlignJustify, @@ -29,7 +30,8 @@ import { Tag, Tags } from 'lucide-react' -import { FC, memo, PropsWithChildren, useCallback, useEffect, useMemo, useState } from 'react' +import type { FC, PropsWithChildren } from 'react' +import { memo, useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' 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 e3992d5b6..e752f450b 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/components/SessionItem.tsx b/src/renderer/src/pages/home/Tabs/components/SessionItem.tsx index f934c7a01..d4dcc4cb9 100644 --- a/src/renderer/src/pages/home/Tabs/components/SessionItem.tsx +++ b/src/renderer/src/pages/home/Tabs/components/SessionItem.tsx @@ -9,7 +9,7 @@ import { SessionSettingsPopup } from '@renderer/pages/settings/AgentSettings' import { SessionLabel } from '@renderer/pages/settings/AgentSettings/shared' import { useAppDispatch, useAppSelector } from '@renderer/store' import { newMessagesActions } from '@renderer/store/newMessage' -import { AgentSessionEntity } from '@renderer/types' +import type { AgentSessionEntity } from '@renderer/types' import { ContextMenu, ContextMenuContent, @@ -23,7 +23,8 @@ import { classNames } from '@renderer/utils' import { buildAgentSessionTopicId } from '@renderer/utils/agentSession' import { Tooltip } from 'antd' import { MenuIcon, XIcon } from 'lucide-react' -import React, { FC, memo, startTransition, useEffect, useMemo, useState } from 'react' +import type { FC } from 'react' +import React, { memo, startTransition, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' diff --git a/src/renderer/src/pages/home/Tabs/components/TagGroup.tsx b/src/renderer/src/pages/home/Tabs/components/TagGroup.tsx index 6f751e65d..a5d1f3ef3 100644 --- a/src/renderer/src/pages/home/Tabs/components/TagGroup.tsx +++ b/src/renderer/src/pages/home/Tabs/components/TagGroup.tsx @@ -1,7 +1,7 @@ import { DownOutlined, RightOutlined } from '@ant-design/icons' import { cn } from '@heroui/react' import { Tooltip } from 'antd' -import { FC, ReactNode } from 'react' +import type { FC, ReactNode } from 'react' interface TagGroupProps { tag: string diff --git a/src/renderer/src/pages/home/Tabs/components/Topics.tsx b/src/renderer/src/pages/home/Tabs/components/Topics.tsx index ce2cd25d3..04e8bead7 100644 --- a/src/renderer/src/pages/home/Tabs/components/Topics.tsx +++ b/src/renderer/src/pages/home/Tabs/components/Topics.tsx @@ -12,11 +12,11 @@ import { useSettings } from '@renderer/hooks/useSettings' import { finishTopicRenaming, startTopicRenaming, TopicManager } from '@renderer/hooks/useTopic' import { fetchMessagesSummary } from '@renderer/services/ApiService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' +import type { RootState } from '@renderer/store' import store from '@renderer/store' -import { RootState } from '@renderer/store' import { newMessagesActions } from '@renderer/store/newMessage' import { setGenerating } from '@renderer/store/runtime' -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 { diff --git a/src/renderer/src/pages/home/Tabs/components/UnifiedAddButton.tsx b/src/renderer/src/pages/home/Tabs/components/UnifiedAddButton.tsx index 433709d20..2f382ec69 100644 --- a/src/renderer/src/pages/home/Tabs/components/UnifiedAddButton.tsx +++ b/src/renderer/src/pages/home/Tabs/components/UnifiedAddButton.tsx @@ -3,8 +3,9 @@ import AddAssistantOrAgentPopup from '@renderer/components/Popups/AddAssistantOr import { AgentModal } from '@renderer/components/Popups/agent/AgentModal' import { useAppDispatch } from '@renderer/store' import { setActiveTopicOrSessionAction } from '@renderer/store/runtime' -import { AgentEntity, Assistant, Topic } from '@renderer/types' -import { FC, useCallback } from 'react' +import type { AgentEntity, Assistant, Topic } from '@renderer/types' +import type { FC } from 'react' +import { useCallback } from 'react' import { useTranslation } from 'react-i18next' import AddButton from './AddButton' diff --git a/src/renderer/src/pages/home/Tabs/components/UnifiedList.tsx b/src/renderer/src/pages/home/Tabs/components/UnifiedList.tsx index 2d8cef69e..a5dda02fd 100644 --- a/src/renderer/src/pages/home/Tabs/components/UnifiedList.tsx +++ b/src/renderer/src/pages/home/Tabs/components/UnifiedList.tsx @@ -1,8 +1,9 @@ import { DraggableList } from '@renderer/components/DraggableList' -import { Assistant, AssistantsSortType } from '@renderer/types' -import { FC, useCallback } from 'react' +import type { Assistant, AssistantsSortType } from '@renderer/types' +import type { FC } from 'react' +import { useCallback } from 'react' -import { UnifiedItem } from '../hooks/useUnifiedItems' +import type { UnifiedItem } from '../hooks/useUnifiedItems' import AgentItem from './AgentItem' import AssistantItem from './AssistantItem' diff --git a/src/renderer/src/pages/home/Tabs/components/UnifiedTagGroups.tsx b/src/renderer/src/pages/home/Tabs/components/UnifiedTagGroups.tsx index 6c3b1fe9a..e27599e1f 100644 --- a/src/renderer/src/pages/home/Tabs/components/UnifiedTagGroups.tsx +++ b/src/renderer/src/pages/home/Tabs/components/UnifiedTagGroups.tsx @@ -1,9 +1,10 @@ import { DraggableList } from '@renderer/components/DraggableList' -import { Assistant, AssistantsSortType } from '@renderer/types' -import { FC, useCallback } from 'react' +import type { Assistant, AssistantsSortType } from '@renderer/types' +import type { FC } from 'react' +import { useCallback } from 'react' import { useTranslation } from 'react-i18next' -import { UnifiedItem } from '../hooks/useUnifiedItems' +import type { UnifiedItem } from '../hooks/useUnifiedItems' import AgentItem from './AgentItem' import AssistantItem from './AssistantItem' import { TagGroup } from './TagGroup' diff --git a/src/renderer/src/pages/home/Tabs/hooks/useUnifiedGrouping.ts b/src/renderer/src/pages/home/Tabs/hooks/useUnifiedGrouping.ts index 90d2601f6..cff7b865e 100644 --- a/src/renderer/src/pages/home/Tabs/hooks/useUnifiedGrouping.ts +++ b/src/renderer/src/pages/home/Tabs/hooks/useUnifiedGrouping.ts @@ -1,11 +1,12 @@ 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 { setUnifiedListOrder } from '@renderer/store/assistants' -import { AgentEntity, Assistant } from '@renderer/types' +import type { AgentEntity, Assistant } from '@renderer/types' import { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' -import { UnifiedItem } from './useUnifiedItems' +import type { UnifiedItem } from './useUnifiedItems' interface UseUnifiedGroupingOptions { unifiedItems: UnifiedItem[] diff --git a/src/renderer/src/pages/home/Tabs/hooks/useUnifiedItems.ts b/src/renderer/src/pages/home/Tabs/hooks/useUnifiedItems.ts index d9190b430..1fd35c3b3 100644 --- a/src/renderer/src/pages/home/Tabs/hooks/useUnifiedItems.ts +++ b/src/renderer/src/pages/home/Tabs/hooks/useUnifiedItems.ts @@ -1,6 +1,6 @@ import { useAppDispatch, useAppSelector } from '@renderer/store' import { setUnifiedListOrder } from '@renderer/store/assistants' -import { AgentEntity, Assistant } from '@renderer/types' +import type { AgentEntity, Assistant } from '@renderer/types' import { useCallback, useMemo } from 'react' export type UnifiedItem = { type: 'agent'; data: AgentEntity } | { type: 'assistant'; data: Assistant } diff --git a/src/renderer/src/pages/home/Tabs/hooks/useUnifiedSorting.ts b/src/renderer/src/pages/home/Tabs/hooks/useUnifiedSorting.ts index 317376fa0..533427813 100644 --- a/src/renderer/src/pages/home/Tabs/hooks/useUnifiedSorting.ts +++ b/src/renderer/src/pages/home/Tabs/hooks/useUnifiedSorting.ts @@ -1,10 +1,10 @@ import { useAppDispatch } from '@renderer/store' import { setUnifiedListOrder } from '@renderer/store/assistants' -import { Assistant } from '@renderer/types' +import type { Assistant } from '@renderer/types' import { useCallback } from 'react' import * as tinyPinyin from 'tiny-pinyin' -import { UnifiedItem } from './useUnifiedItems' +import type { UnifiedItem } from './useUnifiedItems' interface UseUnifiedSortingOptions { unifiedItems: UnifiedItem[] diff --git a/src/renderer/src/pages/home/Tabs/index.tsx b/src/renderer/src/pages/home/Tabs/index.tsx index 4914ae134..3b9e057d8 100644 --- a/src/renderer/src/pages/home/Tabs/index.tsx +++ b/src/renderer/src/pages/home/Tabs/index.tsx @@ -9,10 +9,11 @@ import { useShowTopics } from '@renderer/hooks/useStore' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' import { useAppDispatch } from '@renderer/store' import { setActiveAgentId, setActiveTopicOrSessionAction } from '@renderer/store/runtime' -import { Assistant, Topic } from '@renderer/types' -import { Tab } from '@renderer/types/chat' +import type { Assistant, Topic } from '@renderer/types' +import type { Tab } from '@renderer/types/chat' import { classNames, getErrorMessage, 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 d37f39a23..97bfef4d8 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/ChatNavbarContent.tsx b/src/renderer/src/pages/home/components/ChatNavbarContent.tsx index 8f0f2b119..65b9cdee1 100644 --- a/src/renderer/src/pages/home/components/ChatNavbarContent.tsx +++ b/src/renderer/src/pages/home/components/ChatNavbarContent.tsx @@ -4,11 +4,12 @@ import { useActiveAgent } from '@renderer/hooks/agents/useActiveAgent' import { useActiveSession } from '@renderer/hooks/agents/useActiveSession' import { useUpdateSession } from '@renderer/hooks/agents/useUpdateSession' import { useRuntime } from '@renderer/hooks/useRuntime' -import { AgentEntity, AgentSessionEntity, ApiModel, Assistant } from '@renderer/types' +import type { AgentEntity, AgentSessionEntity, ApiModel, Assistant } from '@renderer/types' import { formatErrorMessageWithPrefix } from '@renderer/utils/error' import { t } from 'i18next' import { Folder } from 'lucide-react' -import { FC, ReactNode, useCallback } from 'react' +import type { FC, ReactNode } from 'react' +import { useCallback } from 'react' import { AgentSettingsPopup, SessionSettingsPopup } from '../../settings/AgentSettings' import { AgentLabel, SessionLabel } from '../../settings/AgentSettings/shared' diff --git a/src/renderer/src/pages/home/components/SelectAgentBaseModelButton.tsx b/src/renderer/src/pages/home/components/SelectAgentBaseModelButton.tsx index 0a2e6c1fb..1d46335e1 100644 --- a/src/renderer/src/pages/home/components/SelectAgentBaseModelButton.tsx +++ b/src/renderer/src/pages/home/components/SelectAgentBaseModelButton.tsx @@ -4,11 +4,12 @@ import { SelectApiModelPopup } from '@renderer/components/Popups/SelectModelPopu import { agentModelFilter } from '@renderer/config/models' import { useApiModel } from '@renderer/hooks/agents/useModel' import { getProviderNameById } from '@renderer/services/ProviderService' -import { AgentBaseWithId, ApiModel, isAgentEntity } from '@renderer/types' +import type { AgentBaseWithId, ApiModel } from '@renderer/types' +import { isAgentEntity } from '@renderer/types' import { getModelFilterByAgentType } from '@renderer/utils/agentSession' import { apiModelAdapter } from '@renderer/utils/model' import { ChevronsUpDown } 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/components/SelectModelButton.tsx b/src/renderer/src/pages/home/components/SelectModelButton.tsx index 2d3ce4d34..78892124b 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 { useProvider } from '@renderer/hooks/useProvider' import { getProviderName } from '@renderer/services/ProviderService' -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 4d8f3f126..afd553109 100644 --- a/src/renderer/src/pages/home/components/UpdateAppButton.tsx +++ b/src/renderer/src/pages/home/components/UpdateAppButton.tsx @@ -4,7 +4,7 @@ import UpdateDialog from '@renderer/components/UpdateDialog' import { useRuntime } from '@renderer/hooks/useRuntime' import { useSettings } from '@renderer/hooks/useSettings' 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 3a2225a2c..c3b294e6e 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 cf0fc5170..5c62c22ac 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 7d961b5a6..64c566ac2 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 ba85bcea3..4c9229cfc 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 b6a3819fd..d7e2fa30b 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 82dfc02a9..60a37dc4d 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 d50d75883..cf7b6f18b 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 daef3d638..4d3ec4c78 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 b11369fa8..35d018419 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 40b651332..d5159363f 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 a6fd8695b..d7f8a9c6d 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 9cdb2546c..a48b9b822 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 d8682f7fb..03b6d1b4e 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 c5125c4af..f8fe0e61a 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 25ee7cbe8..6ea885da7 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 b6f29ce5d..f2f3fc29b 100644 --- a/src/renderer/src/pages/knowledge/components/QuotaTag.tsx +++ b/src/renderer/src/pages/knowledge/components/QuotaTag.tsx @@ -2,9 +2,10 @@ import { loggerService } from '@logger' import { usePreprocessProvider } from '@renderer/hooks/usePreprocess' import { getStoreSetting } from '@renderer/hooks/useSettings' 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 cfe21d50c..e8ced3077 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 65b62f48f..f021a95d4 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 eb7e51966..800a6f565 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 86abec6b1..322467111 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 ab46fead5..2f8d32d22 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 a6b0b649e..68bd13544 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 0bf735586..fe8f0c17a 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 4b51632b5..c1703cad5 100644 --- a/src/renderer/src/pages/launchpad/LaunchpadPage.tsx +++ b/src/renderer/src/pages/launchpad/LaunchpadPage.tsx @@ -3,7 +3,8 @@ import { useMinapps } from '@renderer/hooks/useMinapps' import { useRuntime } from '@renderer/hooks/useRuntime' 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 bbfb68f17..996baebd1 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 75c6c284c..e13a1059c 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/useSettings' 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 5aadc2202..57f9670e2 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/useSettings' 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 958a0e6ea..426d25cf1 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 506d1092f..d8b61603a 100644 --- a/src/renderer/src/pages/minapps/MiniappSettings/MiniAppSettings.tsx +++ b/src/renderer/src/pages/minapps/MiniappSettings/MiniAppSettings.tsx @@ -10,7 +10,8 @@ import { setShowOpenedMinappsInSidebar } from '@renderer/store/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 9b2eb3068..22d9f9345 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 1265e693f..24aca3db0 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 ef89fe640..7cb80de1e 100644 --- a/src/renderer/src/pages/minapps/components/MinimalToolbar.tsx +++ b/src/renderer/src/pages/minapps/components/MinimalToolbar.tsx @@ -15,10 +15,11 @@ import { useMinapps } from '@renderer/hooks/useMinapps' import { useSettings } from '@renderer/hooks/useSettings' import { useAppDispatch } from '@renderer/store' import { setMinappsOpenLinkExternal } from '@renderer/store/settings' -import { MinAppType } from '@renderer/types' +import type { MinAppType } from '@renderer/types' import { Tooltip } 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 { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' import styled from 'styled-components' diff --git a/src/renderer/src/pages/minapps/components/WebviewSearch.tsx b/src/renderer/src/pages/minapps/components/WebviewSearch.tsx index a5340ee2c..59499232d 100644 --- a/src/renderer/src/pages/minapps/components/WebviewSearch.tsx +++ b/src/renderer/src/pages/minapps/components/WebviewSearch.tsx @@ -2,7 +2,8 @@ import { Button, Input } from '@heroui/react' import { loggerService } from '@logger' import type { WebviewTag } from 'electron' import { ChevronDown, ChevronUp, X } 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' type FoundInPageResult = Electron.FoundInPageResult diff --git a/src/renderer/src/pages/notes/MenuConfig.tsx b/src/renderer/src/pages/notes/MenuConfig.tsx index 2e637ab78..0f8f2b012 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 66bbf2225..5ec76441a 100644 --- a/src/renderer/src/pages/notes/NotesEditor.tsx +++ b/src/renderer/src/pages/notes/NotesEditor.tsx @@ -1,17 +1,19 @@ import ActionIconButton from '@renderer/components/Buttons/ActionIconButton' -import CodeEditor, { CodeEditorHandles } from '@renderer/components/CodeEditor' +import type { CodeEditorHandles } from '@renderer/components/CodeEditor' +import CodeEditor from '@renderer/components/CodeEditor' 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 { useNotesSettings } from '@renderer/hooks/useNotesSettings' import { useSettings } from '@renderer/hooks/useSettings' import { useAppDispatch } from '@renderer/store' import { setEnableSpellCheck } from '@renderer/store/settings' -import { EditorView } from '@renderer/types' +import type { EditorView } from '@renderer/types' import { Empty, Tooltip } from 'antd' import { SpellCheck } from 'lucide-react' -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 fb7df83bf..105ceee36 100644 --- a/src/renderer/src/pages/notes/NotesPage.tsx +++ b/src/renderer/src/pages/notes/NotesPage.tsx @@ -1,7 +1,7 @@ import { loggerService } from '@logger' import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar' -import { CodeEditorHandles } from '@renderer/components/CodeEditor' -import { RichEditorRef } from '@renderer/components/RichEditor/types' +import type { CodeEditorHandles } from '@renderer/components/CodeEditor' +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' @@ -37,11 +37,12 @@ import { setSortType, setStarredPaths } 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 { 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 d09c228f6..8663d9625 100644 --- a/src/renderer/src/pages/notes/NotesSidebar.tsx +++ b/src/renderer/src/pages/notes/NotesSidebar.tsx @@ -9,14 +9,16 @@ import { useActiveNode } from '@renderer/hooks/useNotesQuery' import NotesSidebarHeader from '@renderer/pages/notes/NotesSidebarHeader' import { fetchNoteSummary } from '@renderer/services/ApiService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { SearchMatch, SearchResult } from '@renderer/services/NotesSearchService' -import { RootState, useAppSelector } from '@renderer/store' +import type { SearchMatch, SearchResult } from '@renderer/services/NotesSearchService' +import type { RootState } from '@renderer/store' +import { useAppSelector } from '@renderer/store' import { selectSortType } from '@renderer/store/note' -import { NotesSortType, NotesTreeNode } from '@renderer/types/note' +import type { NotesSortType, NotesTreeNode } from '@renderer/types/note' import { exportNote } from '@renderer/utils/export' import { useVirtualizer } from '@tanstack/react-virtual' -import { Dropdown, Input, InputRef, MenuProps } from 'antd' -import { ItemType, MenuItemType } from 'antd/es/menu/interface' +import type { InputRef, MenuProps } from 'antd' +import { Dropdown, Input } from 'antd' +import type { ItemType, MenuItemType } from 'antd/es/menu/interface' import { ChevronDown, ChevronRight, @@ -33,7 +35,8 @@ import { UploadIcon, X } from 'lucide-react' -import { FC, memo, Ref, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import type { FC, Ref } from 'react' +import { memo, useCallback, useEffect, useMemo, 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/notes/NotesSidebarHeader.tsx b/src/renderer/src/pages/notes/NotesSidebarHeader.tsx index af40c672b..20bb41600 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/notes/hooks/useFullTextSearch.ts b/src/renderer/src/pages/notes/hooks/useFullTextSearch.ts index 6a2d12c2c..5877d8d96 100644 --- a/src/renderer/src/pages/notes/hooks/useFullTextSearch.ts +++ b/src/renderer/src/pages/notes/hooks/useFullTextSearch.ts @@ -1,5 +1,6 @@ -import { searchAllFiles, SearchOptions, SearchResult } from '@renderer/services/NotesSearchService' -import { NotesTreeNode } from '@renderer/types/note' +import type { SearchOptions, SearchResult } from '@renderer/services/NotesSearchService' +import { searchAllFiles } from '@renderer/services/NotesSearchService' +import type { NotesTreeNode } from '@renderer/types/note' import { useCallback, useEffect, useRef, useState } from 'react' export interface UseFullTextSearchOptions extends SearchOptions { diff --git a/src/renderer/src/pages/paintings/DmxapiPage.tsx b/src/renderer/src/pages/paintings/DmxapiPage.tsx index 976dc4f24..ebc53c4f7 100644 --- a/src/renderer/src/pages/paintings/DmxapiPage.tsx +++ b/src/renderer/src/pages/paintings/DmxapiPage.tsx @@ -13,11 +13,12 @@ import { useAppDispatch } from '@renderer/store' import { setGenerating } from '@renderer/store/runtime' 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 893736d4d..eae48e531 100644 --- a/src/renderer/src/pages/paintings/NewApiPage.tsx +++ b/src/renderer/src/pages/paintings/NewApiPage.tsx @@ -26,11 +26,12 @@ import { translateText } from '@renderer/services/TranslateService' import { useAppDispatch } from '@renderer/store' import { setGenerating } from '@renderer/store/runtime' 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 d3e8cd97a..9c516560b 100644 --- a/src/renderer/src/pages/paintings/PaintingsRoutePage.tsx +++ b/src/renderer/src/pages/paintings/PaintingsRoutePage.tsx @@ -3,8 +3,9 @@ import { isNewApiProvider } from '@renderer/config/providers' import { useAllProviders } from '@renderer/hooks/useProvider' import { useAppDispatch } from '@renderer/store' import { setDefaultPaintingProvider } from '@renderer/store/settings' -import { PaintingProvider, SystemProviderId } from '@renderer/types' -import { FC, useEffect, useMemo, useState } from 'react' +import type { PaintingProvider, SystemProviderId } from '@renderer/types' +import type { FC } from 'react' +import { useEffect, useMemo, useState } 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 279f9d0a1..e8b25a3fe 100644 --- a/src/renderer/src/pages/paintings/ZhipuPage.tsx +++ b/src/renderer/src/pages/paintings/ZhipuPage.tsx @@ -14,7 +14,8 @@ import { setGenerating } from '@renderer/store/runtime' 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 2c56c40c1..7e915450b 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 8d0464083..b1559c4ff 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 fc119af09..fab92e30d 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/components/ProviderSelect.tsx b/src/renderer/src/pages/paintings/components/ProviderSelect.tsx index 4b5a7b7fb..e047d878b 100644 --- a/src/renderer/src/pages/paintings/components/ProviderSelect.tsx +++ b/src/renderer/src/pages/paintings/components/ProviderSelect.tsx @@ -3,8 +3,9 @@ import { ProviderAvatarPrimitive } from '@renderer/components/ProviderAvatar' import { getProviderLogo } from '@renderer/config/providers' import ImageStorage from '@renderer/services/ImageStorage' import { getProviderNameById } from '@renderer/services/ProviderService' -import { Provider } from '@types' -import React, { FC, useEffect, useState } from 'react' +import type { Provider } from '@types' +import type { FC } from 'react' +import React, { useEffect, useState } from 'react' type ProviderSelectProps = { provider: Provider diff --git a/src/renderer/src/pages/paintings/config/DmxapiConfig.ts b/src/renderer/src/pages/paintings/config/DmxapiConfig.ts index 090ae7885..7880f6305 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 1b8b3f04b..1efa2f05f 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 c88eff3a7..db119faa9 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 cbe7fa2ca..4b1e224a8 100644 --- a/src/renderer/src/pages/paintings/utils/TokenFluxService.ts +++ b/src/renderer/src/pages/paintings/utils/TokenFluxService.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' import { CacheService } from '@renderer/services/CacheService' -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 ae26c0f15..8df6108c1 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 dcf95324d..ef8ecc11e 100644 --- a/src/renderer/src/pages/settings/AboutSettings.tsx +++ b/src/renderer/src/pages/settings/AboutSettings.tsx @@ -15,11 +15,12 @@ import { ThemeMode } from '@renderer/types' import { runAsyncFunction } from '@renderer/utils' import { UpgradeChannel } from '@shared/config/constant' import { Avatar, Button, Progress, Radio, Row, Switch, Tag, Tooltip } from 'antd' -import { UpdateInfo } from 'builder-util-runtime' +import type { UpdateInfo } from 'builder-util-runtime' import { debounce } from 'lodash' import { Bug, Building2, 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/AgentSettings/AccessibleDirsSetting.tsx b/src/renderer/src/pages/settings/AgentSettings/AccessibleDirsSetting.tsx index fcdaee231..a24c6cdb2 100644 --- a/src/renderer/src/pages/settings/AgentSettings/AccessibleDirsSetting.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/AccessibleDirsSetting.tsx @@ -1,6 +1,6 @@ import { Button, Tooltip } from '@heroui/react' import { loggerService } from '@logger' -import { AgentBaseWithId, UpdateAgentBaseForm, UpdateAgentFunctionUnion } from '@renderer/types' +import type { AgentBaseWithId, UpdateAgentBaseForm, UpdateAgentFunctionUnion } from '@renderer/types' import { Plus } from 'lucide-react' import { useCallback } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/AgentSettings/AdvancedSettings.tsx b/src/renderer/src/pages/settings/AgentSettings/AdvancedSettings.tsx index 209258ce6..424154360 100644 --- a/src/renderer/src/pages/settings/AgentSettings/AdvancedSettings.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/AdvancedSettings.tsx @@ -1,13 +1,13 @@ import { Input, Tooltip } from '@heroui/react' -import { useUpdateAgent } from '@renderer/hooks/agents/useUpdateAgent' -import { useUpdateSession } from '@renderer/hooks/agents/useUpdateSession' -import { +import type { useUpdateAgent } from '@renderer/hooks/agents/useUpdateAgent' +import type { useUpdateSession } from '@renderer/hooks/agents/useUpdateSession' +import type { AgentConfiguration, - AgentConfigurationSchema, GetAgentResponse, GetAgentSessionResponse, UpdateAgentBaseForm } from '@renderer/types' +import { AgentConfigurationSchema } from '@renderer/types' import { Info } from 'lucide-react' import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/AgentSettings/AvatarSetting.tsx b/src/renderer/src/pages/settings/AgentSettings/AvatarSetting.tsx index af0c92e72..be38bc14a 100644 --- a/src/renderer/src/pages/settings/AgentSettings/AvatarSetting.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/AvatarSetting.tsx @@ -1,11 +1,6 @@ import { EmojiAvatarWithPicker } from '@renderer/components/Avatar/EmojiAvatarWithPicker' -import { - AgentConfigurationSchema, - AgentEntity, - isAgentType, - UpdateAgentForm, - UpdateAgentFunction -} from '@renderer/types' +import type { AgentEntity, UpdateAgentForm, UpdateAgentFunction } from '@renderer/types' +import { AgentConfigurationSchema, isAgentType } from '@renderer/types' import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/AgentSettings/DescriptionSetting.tsx b/src/renderer/src/pages/settings/AgentSettings/DescriptionSetting.tsx index 4adeff9d0..6ed63a773 100644 --- a/src/renderer/src/pages/settings/AgentSettings/DescriptionSetting.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/DescriptionSetting.tsx @@ -1,5 +1,5 @@ import { Textarea } from '@heroui/react' -import { AgentBaseWithId, UpdateAgentBaseForm, UpdateAgentFunctionUnion } from '@renderer/types' +import type { AgentBaseWithId, UpdateAgentBaseForm, UpdateAgentFunctionUnion } from '@renderer/types' import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/AgentSettings/EssentialSettings.tsx b/src/renderer/src/pages/settings/AgentSettings/EssentialSettings.tsx index c21dca768..97dd111a8 100644 --- a/src/renderer/src/pages/settings/AgentSettings/EssentialSettings.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/EssentialSettings.tsx @@ -1,10 +1,11 @@ import { Avatar } from '@heroui/react' import { getAgentTypeAvatar } from '@renderer/config/agent' -import { useUpdateAgent } from '@renderer/hooks/agents/useUpdateAgent' -import { useUpdateSession } from '@renderer/hooks/agents/useUpdateSession' +import type { useUpdateAgent } from '@renderer/hooks/agents/useUpdateAgent' +import type { useUpdateSession } from '@renderer/hooks/agents/useUpdateSession' import { getAgentTypeLabel } from '@renderer/i18n/label' -import { GetAgentResponse, GetAgentSessionResponse, isAgentEntity } from '@renderer/types' -import { FC } from 'react' +import type { GetAgentResponse, GetAgentSessionResponse } from '@renderer/types' +import { isAgentEntity } from '@renderer/types' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { AccessibleDirsSetting } from './AccessibleDirsSetting' diff --git a/src/renderer/src/pages/settings/AgentSettings/ModelSetting.tsx b/src/renderer/src/pages/settings/AgentSettings/ModelSetting.tsx index 6662b22e7..8bf32e76f 100644 --- a/src/renderer/src/pages/settings/AgentSettings/ModelSetting.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/ModelSetting.tsx @@ -1,5 +1,5 @@ import SelectAgentBaseModelButton from '@renderer/pages/home/components/SelectAgentBaseModelButton' -import { AgentBaseWithId, ApiModel, UpdateAgentFunctionUnion } from '@renderer/types' +import type { AgentBaseWithId, ApiModel, UpdateAgentFunctionUnion } from '@renderer/types' import { useTranslation } from 'react-i18next' import { SettingsItem, SettingsTitle } from './shared' diff --git a/src/renderer/src/pages/settings/AgentSettings/NameSetting.tsx b/src/renderer/src/pages/settings/AgentSettings/NameSetting.tsx index 0cdc3e28b..ea4ced54e 100644 --- a/src/renderer/src/pages/settings/AgentSettings/NameSetting.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/NameSetting.tsx @@ -1,5 +1,5 @@ import { Input } from '@heroui/react' -import { AgentBaseWithId, UpdateAgentBaseForm, UpdateAgentFunctionUnion } from '@renderer/types' +import type { AgentBaseWithId, UpdateAgentBaseForm, UpdateAgentFunctionUnion } from '@renderer/types' import { useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/AgentSettings/PluginSettings.tsx b/src/renderer/src/pages/settings/AgentSettings/PluginSettings.tsx index 74d63ecba..347791241 100644 --- a/src/renderer/src/pages/settings/AgentSettings/PluginSettings.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/PluginSettings.tsx @@ -1,7 +1,8 @@ import { Card, CardBody, Tab, Tabs } from '@heroui/react' import { useAvailablePlugins, useInstalledPlugins, usePluginActions } from '@renderer/hooks/usePlugins' -import { GetAgentResponse, GetAgentSessionResponse, UpdateAgentFunctionUnion } from '@renderer/types/agent' -import { FC, useCallback } from 'react' +import type { GetAgentResponse, GetAgentSessionResponse, UpdateAgentFunctionUnion } from '@renderer/types/agent' +import type { FC } from 'react' +import { useCallback } from 'react' import { useTranslation } from 'react-i18next' import { InstalledPluginsList } from './components/InstalledPluginsList' diff --git a/src/renderer/src/pages/settings/AgentSettings/PromptSettings.tsx b/src/renderer/src/pages/settings/AgentSettings/PromptSettings.tsx index f93195012..463405fcb 100644 --- a/src/renderer/src/pages/settings/AgentSettings/PromptSettings.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/PromptSettings.tsx @@ -1,14 +1,15 @@ import CodeEditor from '@renderer/components/CodeEditor' import { HSpaceBetweenStack } from '@renderer/components/Layout' -import { RichEditorRef } from '@renderer/components/RichEditor/types' -import { useUpdateAgent } from '@renderer/hooks/agents/useUpdateAgent' -import { useUpdateSession } from '@renderer/hooks/agents/useUpdateSession' +import type { RichEditorRef } from '@renderer/components/RichEditor/types' +import type { useUpdateAgent } from '@renderer/hooks/agents/useUpdateAgent' +import type { useUpdateSession } from '@renderer/hooks/agents/useUpdateSession' import { usePromptProcessor } from '@renderer/hooks/usePromptProcessor' import { estimateTextTokens } from '@renderer/services/TokenService' -import { AgentEntity, AgentSessionEntity, UpdateAgentBaseForm } from '@renderer/types' +import type { AgentEntity, AgentSessionEntity, UpdateAgentBaseForm } from '@renderer/types' import { Button, Popover } from 'antd' import { Edit, HelpCircle, Save } 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 ReactMarkdown from 'react-markdown' import styled from 'styled-components' diff --git a/src/renderer/src/pages/settings/AgentSettings/ToolingSettings.tsx b/src/renderer/src/pages/settings/AgentSettings/ToolingSettings.tsx index d828e921a..f5e871f28 100644 --- a/src/renderer/src/pages/settings/AgentSettings/ToolingSettings.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/ToolingSettings.tsx @@ -2,9 +2,8 @@ import { Alert, Card, CardBody, CardHeader, Chip, Input, Switch } from '@heroui/ import { permissionModeCards } from '@renderer/config/agent' import { useMCPServers } from '@renderer/hooks/useMCPServers' import useScrollPosition from '@renderer/hooks/useScrollPosition' -import { +import type { AgentConfiguration, - AgentConfigurationSchema, GetAgentResponse, GetAgentSessionResponse, PermissionMode, @@ -13,9 +12,11 @@ import { UpdateAgentFunction, UpdateAgentSessionFunction } from '@renderer/types' +import { AgentConfigurationSchema } from '@renderer/types' import { Modal } from 'antd' import { ShieldAlert, ShieldCheck, Wrench } from 'lucide-react' -import { FC, useCallback, useMemo, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingsContainer, SettingsItem, SettingsTitle } from './shared' diff --git a/src/renderer/src/pages/settings/AgentSettings/components/InstalledPluginsList.tsx b/src/renderer/src/pages/settings/AgentSettings/components/InstalledPluginsList.tsx index 1a6924a6d..f1578f10a 100644 --- a/src/renderer/src/pages/settings/AgentSettings/components/InstalledPluginsList.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/components/InstalledPluginsList.tsx @@ -1,7 +1,8 @@ import { Button, Chip, Skeleton, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow } from '@heroui/react' -import { InstalledPlugin } from '@renderer/types/plugin' +import type { InstalledPlugin } from '@renderer/types/plugin' import { Trash2 } from 'lucide-react' -import { FC, useCallback, useState } from 'react' +import type { FC } from 'react' +import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' export interface InstalledPluginsListProps { diff --git a/src/renderer/src/pages/settings/AgentSettings/components/PluginBrowser.tsx b/src/renderer/src/pages/settings/AgentSettings/components/PluginBrowser.tsx index fd106325f..e84ef5108 100644 --- a/src/renderer/src/pages/settings/AgentSettings/components/PluginBrowser.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/components/PluginBrowser.tsx @@ -1,7 +1,8 @@ import { Button, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger, Input, Tab, Tabs } from '@heroui/react' -import { InstalledPlugin, PluginMetadata } from '@renderer/types/plugin' +import type { InstalledPlugin, PluginMetadata } from '@renderer/types/plugin' import { Filter, Search } from 'lucide-react' -import { FC, useEffect, useMemo, useRef, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { PluginCard } from './PluginCard' diff --git a/src/renderer/src/pages/settings/AgentSettings/components/PluginCard.tsx b/src/renderer/src/pages/settings/AgentSettings/components/PluginCard.tsx index ee94bc0ad..bf14c25e2 100644 --- a/src/renderer/src/pages/settings/AgentSettings/components/PluginCard.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/components/PluginCard.tsx @@ -1,8 +1,8 @@ import { Button, Card, CardBody, CardFooter, CardHeader, Chip, Spinner } from '@heroui/react' -import { PluginMetadata } from '@renderer/types/plugin' +import type { PluginMetadata } from '@renderer/types/plugin' import { upperFirst } from 'lodash' import { Download, Trash2 } from 'lucide-react' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' export interface PluginCardProps { diff --git a/src/renderer/src/pages/settings/AgentSettings/components/PluginDetailModal.tsx b/src/renderer/src/pages/settings/AgentSettings/components/PluginDetailModal.tsx index 910cad444..948b0c212 100644 --- a/src/renderer/src/pages/settings/AgentSettings/components/PluginDetailModal.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/components/PluginDetailModal.tsx @@ -9,9 +9,10 @@ import { Spinner, Textarea } from '@heroui/react' -import { PluginMetadata } from '@renderer/types/plugin' +import type { PluginMetadata } from '@renderer/types/plugin' import { Download, Edit, Save, Trash2, X } from 'lucide-react' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { createPortal } from 'react-dom' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/settings/AgentSettings/shared.tsx b/src/renderer/src/pages/settings/AgentSettings/shared.tsx index 143dcc755..3549c59d4 100644 --- a/src/renderer/src/pages/settings/AgentSettings/shared.tsx +++ b/src/renderer/src/pages/settings/AgentSettings/shared.tsx @@ -1,9 +1,10 @@ import { cn } from '@heroui/react' import EmojiIcon from '@renderer/components/EmojiIcon' import { getAgentTypeLabel } from '@renderer/i18n/label' -import { AgentEntity, AgentSessionEntity } from '@renderer/types' +import type { AgentEntity, AgentSessionEntity } from '@renderer/types' import { Menu, Modal } from 'antd' -import React, { ReactNode } from 'react' +import type { ReactNode } from 'react' +import React from 'react' import styled from 'styled-components' import { SettingDivider } from '..' diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantKnowledgeBaseSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantKnowledgeBaseSettings.tsx index 6dde8e501..90bab1a5d 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 a625663fb..ac8914109 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 b7ab156ca..8987d31bc 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 d340b6a67..c650011b0 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 a8f8da4ec..d03aee185 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx @@ -4,10 +4,10 @@ import { CloseCircleFilled } from '@ant-design/icons' import CodeEditor from '@renderer/components/CodeEditor' 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 { 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 b244f4e4c..b75766789 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 e26e8da64..1c78be4bb 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 { useAssistant } from '@renderer/hooks/useAssistant' import { useAssistantPreset } from '@renderer/hooks/useAssistantPresets' 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 b5af28133..ecf4fbc75 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 aa6078b6b..346834dd9 100644 --- a/src/renderer/src/pages/settings/DataSettings/DataSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/DataSettings.tsx @@ -21,12 +21,13 @@ import { useTimer } from '@renderer/hooks/useTimer' import { reset } from '@renderer/services/BackupService' import store, { useAppDispatch } from '@renderer/store' import { setSkipBackupFile as _setSkipBackupFile } from '@renderer/store/settings' -import { AppInfo } from '@renderer/types' +import type { AppInfo } from '@renderer/types' import { formatFileSize } from '@renderer/utils' import { occupiedDirs } from '@shared/config/constant' import { Progress, 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 243f53487..2062b5762 100644 --- a/src/renderer/src/pages/settings/DataSettings/ExportMenuSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/ExportMenuSettings.tsx @@ -1,8 +1,9 @@ import { useTheme } from '@renderer/context/ThemeProvider' -import { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch } from '@renderer/store' import { setExportMenuOptions } from '@renderer/store/settings' import { Switch } from 'antd' -import { FC } from 'react' +import type { FC } from 'react' import { useTranslation } from 'react-i18next' import { useSelector } from 'react-redux' diff --git a/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx b/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx index cbd3d96c3..19f36fcea 100644 --- a/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/JoplinSettings.tsx @@ -3,11 +3,12 @@ import { HStack } from '@renderer/components/Layout' import { AppLogo } from '@renderer/config/env' import { useTheme } from '@renderer/context/ThemeProvider' import { useMinappPopup } from '@renderer/hooks/useMinappPopup' -import { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch } from '@renderer/store' import { setJoplinExportReasoning, setJoplinToken, setJoplinUrl } from '@renderer/store/settings' 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 { useSelector } from 'react-redux' diff --git a/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx b/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx index f967e381b..48d987c52 100644 --- a/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/LocalBackupSettings.tsx @@ -15,7 +15,7 @@ import { setLocalBackupSkipBackupFile as _setLocalBackupSkipBackupFile, setLocalBackupSyncInterval as _setLocalBackupSyncInterval } from '@renderer/store/settings' -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 50b03b9ae..bcc6d5170 100644 --- a/src/renderer/src/pages/settings/DataSettings/MarkdownExportSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/MarkdownExportSettings.tsx @@ -1,7 +1,8 @@ import { DeleteOutlined, FolderOpenOutlined } from '@ant-design/icons' import { HStack } from '@renderer/components/Layout' import { useTheme } from '@renderer/context/ThemeProvider' -import { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch } from '@renderer/store' import { setExcludeCitationsInExport, setForceDollarMathInMarkdown, @@ -13,7 +14,7 @@ import { } from '@renderer/store/settings' 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 { useSelector } from 'react-redux' diff --git a/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx b/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx index eb0aff9e6..907afc202 100644 --- a/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/NotionSettings.tsx @@ -4,7 +4,8 @@ import { HStack } from '@renderer/components/Layout' import { AppLogo } from '@renderer/config/env' import { useTheme } from '@renderer/context/ThemeProvider' import { useMinappPopup } from '@renderer/hooks/useMinappPopup' -import { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch } from '@renderer/store' import { setNotionApiKey, setNotionDatabaseID, @@ -13,7 +14,7 @@ import { } from '@renderer/store/settings' 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 { useSelector } from 'react-redux' diff --git a/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx b/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx index a5d2a7f77..d79ba24fc 100644 --- a/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/NutstoreSettings.tsx @@ -28,7 +28,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 a232fc799..ce30d5a73 100644 --- a/src/renderer/src/pages/settings/DataSettings/ObsidianSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/ObsidianSettings.tsx @@ -4,7 +4,8 @@ import { useSettings } from '@renderer/hooks/useSettings' import { useAppDispatch } from '@renderer/store' import { setDefaultObsidianVault } from '@renderer/store/settings' 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 9ea3dbcea..fbb57cdec 100644 --- a/src/renderer/src/pages/settings/DataSettings/S3Settings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/S3Settings.tsx @@ -10,10 +10,11 @@ import { useSettings } from '@renderer/hooks/useSettings' import { startAutoSync, stopAutoSync } from '@renderer/services/BackupService' import { useAppDispatch, useAppSelector } from '@renderer/store' import { setS3Partial } from '@renderer/store/settings' -import { S3Config } from '@renderer/types' +import type { S3Config } from '@renderer/types' 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 dc4f9b1d0..3a3b6ebb2 100644 --- a/src/renderer/src/pages/settings/DataSettings/SiyuanSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/SiyuanSettings.tsx @@ -4,11 +4,12 @@ import { HStack } from '@renderer/components/Layout' import { AppLogo } from '@renderer/config/env' import { useTheme } from '@renderer/context/ThemeProvider' import { useMinappPopup } from '@renderer/hooks/useMinappPopup' -import { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch } from '@renderer/store' import { setSiyuanApiUrl, setSiyuanBoxId, setSiyuanRootPath, setSiyuanToken } from '@renderer/store/settings' 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 { useSelector } from 'react-redux' diff --git a/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx b/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx index 729cdafe4..77829c508 100644 --- a/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/WebDavSettings.tsx @@ -20,7 +20,8 @@ import { } from '@renderer/store/settings' 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 25cb87f2d..aee377860 100644 --- a/src/renderer/src/pages/settings/DataSettings/YuqueSettings.tsx +++ b/src/renderer/src/pages/settings/DataSettings/YuqueSettings.tsx @@ -3,11 +3,12 @@ import { HStack } from '@renderer/components/Layout' import { AppLogo } from '@renderer/config/env' import { useTheme } from '@renderer/context/ThemeProvider' import { useMinappPopup } from '@renderer/hooks/useMinappPopup' -import { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch } from '@renderer/store' import { setYuqueRepoId, setYuqueToken, setYuqueUrl } from '@renderer/store/settings' 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 { useSelector } from 'react-redux' diff --git a/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx b/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx index b1d670792..49b3b386a 100644 --- a/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx +++ b/src/renderer/src/pages/settings/DisplaySettings/DisplaySettings.tsx @@ -8,8 +8,8 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useNavbarPosition, useSettings } from '@renderer/hooks/useSettings' import useUserTheme from '@renderer/hooks/useUserTheme' import { useAppDispatch } from '@renderer/store' +import type { AssistantIconType } from '@renderer/store/settings' import { - AssistantIconType, setAssistantIconType, setClickAssistantToShowTopic, setCustomCss, @@ -20,7 +20,8 @@ import { import { ThemeMode } from '@renderer/types' 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 62887d8a7..db55275bb 100644 --- a/src/renderer/src/pages/settings/DisplaySettings/SidebarIconsManager.tsx +++ b/src/renderer/src/pages/settings/DisplaySettings/SidebarIconsManager.tsx @@ -1,16 +1,10 @@ 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 { useAppDispatch } from '@renderer/store' import { setSidebarIcons } from '@renderer/store/settings' -import { SidebarIcon } from '@renderer/types' +import type { SidebarIcon } from '@renderer/types' import { message } from 'antd' import { Code, @@ -23,7 +17,8 @@ import { Palette, Sparkle } from 'lucide-react' -import { FC, ReactNode, useCallback, useMemo } from 'react' +import type { FC, ReactNode } 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 9050088d5..06908e80e 100644 --- a/src/renderer/src/pages/settings/DocProcessSettings/OcrImageSettings.tsx +++ b/src/renderer/src/pages/settings/DocProcessSettings/OcrImageSettings.tsx @@ -3,7 +3,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 { getErrorMessage } from '@renderer/utils' import { Select } from 'antd' import { useCallback, useEffect, useMemo } from 'react' diff --git a/src/renderer/src/pages/settings/DocProcessSettings/OcrProviderSettings.tsx b/src/renderer/src/pages/settings/DocProcessSettings/OcrProviderSettings.tsx index 482ff2b9e..8dda4ab70 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 409390b00..077451dd4 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 8032b7e29..bd24326e2 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 4c0b5eb80..3c284656a 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 56fea50ec..4d6df731f 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 a09265a63..5172c6892 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 526f507ff..3553bdc26 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 3c7370343..9588631ce 100644 --- a/src/renderer/src/pages/settings/GeneralSettings.tsx +++ b/src/renderer/src/pages/settings/GeneralSettings.tsx @@ -6,7 +6,8 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useEnableDeveloperMode, useSettings } from '@renderer/hooks/useSettings' import { useTimer } from '@renderer/hooks/useTimer' import i18n from '@renderer/i18n' -import { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch } from '@renderer/store' import { setEnableDataCollection, setEnableSpellCheck, @@ -17,13 +18,14 @@ import { setProxyUrl as _setProxyUrl, setSpellCheckLanguages } from '@renderer/store/settings' -import { LanguageVarious } from '@renderer/types' -import { NotificationSource } from '@renderer/types/notification' +import type { LanguageVarious } from '@renderer/types' +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 { 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 { useSelector } from 'react-redux' diff --git a/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx b/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx index 73a7993f6..fbd6e4067 100644 --- a/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/AddMcpServerModal.tsx @@ -5,11 +5,13 @@ import CodeEditor from '@renderer/components/CodeEditor' 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 c5af5da06..617688fb2 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 48df875fc..0734a04d7 100644 --- a/src/renderer/src/pages/settings/MCPSettings/EditMcpJsonPopup.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/EditMcpJsonPopup.tsx @@ -3,7 +3,8 @@ import CodeEditor from '@renderer/components/CodeEditor' import { TopView } from '@renderer/components/TopView' 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 b213b982d..b30ba5e7d 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 82597b544..99c186e3e 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 62fffd340..274fa9368 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 bbf869d66..0d5e6e286 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 80660c98a..d97bffacb 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 683fe1437..d7c5f314b 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 ec8de05f9..f7d30d1cf 100644 --- a/src/renderer/src/pages/settings/MCPSettings/McpServersList.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/McpServersList.tsx @@ -6,12 +6,13 @@ import { EditIcon, RefreshIcon } from '@renderer/components/Icons' import Scrollbar from '@renderer/components/Scrollbar' import { useMCPServers } from '@renderer/hooks/useMCPServers' import { useMCPServerTrust } from '@renderer/hooks/useMCPServerTrust' -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 55e86d98d..d8f26610c 100644 --- a/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx +++ b/src/renderer/src/pages/settings/MCPSettings/McpSettings.tsx @@ -5,9 +5,10 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { useMCPServer, useMCPServers } from '@renderer/hooks/useMCPServers' import { useMCPServerTrust } from '@renderer/hooks/useMCPServerTrust' 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 d5d8a7b4c..bfd9992dc 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 e2279e977..7db63a241 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 a3e2a680c..9fe0a1cc6 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/MCPSettings/utils.ts b/src/renderer/src/pages/settings/MCPSettings/utils.ts index d137c669e..729d8745e 100644 --- a/src/renderer/src/pages/settings/MCPSettings/utils.ts +++ b/src/renderer/src/pages/settings/MCPSettings/utils.ts @@ -1,5 +1,5 @@ import { loggerService } from '@logger' -import { MCPServer } from '@renderer/types' +import type { MCPServer } from '@renderer/types' const logger = loggerService.withContext('MCPSettings/utils') diff --git a/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx b/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx index 096327416..2b1bed5eb 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 e7b9ebb72..76ef0aa59 100644 --- a/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx +++ b/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx @@ -11,11 +11,12 @@ import { useSettings } from '@renderer/hooks/useSettings' import { getModelUniqId, hasModel } from '@renderer/services/ModelService' import { useAppDispatch } from '@renderer/store' import { setTranslateModelPrompt } from '@renderer/store/settings' -import { Model } from '@renderer/types' +import type { Model } from '@renderer/types' 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 99dc8ba1d..be36c0fe6 100644 --- a/src/renderer/src/pages/settings/NotesSettings.tsx +++ b/src/renderer/src/pages/settings/NotesSettings.tsx @@ -2,10 +2,11 @@ import { loggerService } from '@logger' import Selector from '@renderer/components/Selector' import { useTheme } from '@renderer/context/ThemeProvider' import { useNotesSettings } from '@renderer/hooks/useNotesSettings' -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 33bd80b51..e4923de1b 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 ae2cb1dda..8a47152a8 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 1410ce067..198765da9 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 80324fd99..9afd4b413 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/CustomHeaderPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/CustomHeaderPopup.tsx @@ -2,7 +2,7 @@ import CodeEditor from '@renderer/components/CodeEditor' import { TopView } from '@renderer/components/TopView' 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 c2d4e2f20..ffdaff895 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 bcef2b6e3..ee82e16ef 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 fed30fddb..820973441 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/EditModelPopup/ModelEditContent.tsx @@ -19,25 +19,14 @@ import { } from '@renderer/config/models' import { isNewApiProvider } from '@renderer/config/providers' 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 1ee1832e0..b157c5373 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 5dc9ec74c..5928537e0 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 eab065e54..826bc1ea7 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 020cb42ba..821afa615 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 5a992074d..6fc79df47 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/DownloadOVMSModelPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/ModelList/DownloadOVMSModelPopup.tsx index 0efe081a2..518017d5b 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/DownloadOVMSModelPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/DownloadOVMSModelPopup.tsx @@ -1,7 +1,8 @@ import { loggerService } from '@logger' import { TopView } from '@renderer/components/TopView' -import { Provider } from '@renderer/types' -import { AutoComplete, Button, Flex, Form, FormProps, Input, Modal, Progress, Select } from 'antd' +import type { Provider } from '@renderer/types' +import type { FormProps } from 'antd' +import { AutoComplete, Button, Flex, Form, Input, Modal, Progress, Select } from 'antd' 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 4d36d14be..9099561b0 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 064055129..fed943319 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsList.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsList.tsx @@ -6,7 +6,7 @@ import { getModelLogoById } from '@renderer/config/models' import { isNewApiProvider } from '@renderer/config/providers' 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 706cd8bfc..27f5c67ea 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ManageModelsPopup.tsx @@ -18,7 +18,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 2e06cc6e7..ad7923c6b 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelList.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/ModelList.tsx @@ -11,7 +11,7 @@ import AddModelPopup from '@renderer/pages/settings/ProviderSettings/ModelList/A import DownloadOVMSModelPopup from '@renderer/pages/settings/ProviderSettings/ModelList/DownloadOVMSModelPopup' 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 e471aab64..0185ef597 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 24d64fdfb..e8fe90e7b 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 8812a5926..486753f78 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ModelList/NewApiAddModelPopup.tsx @@ -4,9 +4,10 @@ import { isNotSupportedTextDelta } from '@renderer/config/models' import { isNewApiProvider } from '@renderer/config/providers' 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 40a4fb529..73905197f 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 ca73ad831..61c08ba28 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 3ced57621..0b484fded 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 263503853..dd0417612 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/OVMSSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/OVMSSettings.tsx index 057408375..068b83ac8 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/OVMSSettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/OVMSSettings.tsx @@ -1,6 +1,7 @@ import { VStack } from '@renderer/components/Layout' import { Alert, Button } from 'antd' -import { FC, useEffect, useState } from 'react' +import type { FC } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { SettingRow, SettingSubtitle } from '..' diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderList.tsx index 5dc53ca75..7502e4d80 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 2d8b38be8..f1ec95e43 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderOAuth.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderOAuth.tsx @@ -13,7 +13,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 af75729d6..3f8743b66 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx @@ -25,8 +25,10 @@ import { checkApi } from '@renderer/services/ApiService' import { isProviderSupportAuth } from '@renderer/services/ProviderService' import { useAppDispatch } from '@renderer/store' import { updateWebSearchProvider } from '@renderer/store/websearch' -import { isSystemProvider, isSystemProviderId, SystemProviderId, SystemProviderIds } from '@renderer/types' -import { ApiKeyConnectivity, HealthStatus } from '@renderer/types/healthCheck' +import type { SystemProviderId } from '@renderer/types' +import { isSystemProvider, isSystemProviderId, SystemProviderIds } from '@renderer/types' +import type { ApiKeyConnectivity } from '@renderer/types/healthCheck' +import { HealthStatus } from '@renderer/types/healthCheck' import { formatApiHost, formatApiKeys, @@ -40,7 +42,8 @@ import { Button, Divider, Flex, Input, Select, Space, Switch, Tooltip } from 'an 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 581169488..299f689fc 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 77a06b222..540e6bf7d 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/QuickAssistantSettings.tsx b/src/renderer/src/pages/settings/QuickAssistantSettings.tsx index a547a5450..86ab83cb7 100644 --- a/src/renderer/src/pages/settings/QuickAssistantSettings.tsx +++ b/src/renderer/src/pages/settings/QuickAssistantSettings.tsx @@ -14,7 +14,8 @@ import { import { matchKeywordsInString } from '@renderer/utils' import HomeWindow from '@renderer/windows/mini/home/HomeWindow' import { Button, Select, Switch, Tooltip } from 'antd' -import { FC, useMemo } from 'react' +import type { FC } from 'react' +import { useMemo } 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 a8b395a2e..72914260f 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 1ca437aa1..aeff5907c 100644 --- a/src/renderer/src/pages/settings/SelectionAssistantSettings/SelectionAssistantSettings.tsx +++ b/src/renderer/src/pages/settings/SelectionAssistantSettings/SelectionAssistantSettings.tsx @@ -2,11 +2,12 @@ import { isMac, isWin } from '@renderer/config/constant' import { useTheme } from '@renderer/context/ThemeProvider' import { useSelectionAssistant } from '@renderer/hooks/useSelectionAssistant' import { getSelectionDescriptionLabel } from '@renderer/i18n/label' -import { FilterMode, TriggerMode } from '@renderer/types/selectionTypes' +import type { FilterMode, TriggerMode } from '@renderer/types/selectionTypes' import SelectionToolbar from '@renderer/windows/selection/toolbar/SelectionToolbar' 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 4c5f9fa60..f07ffd165 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 dbc6ef75f..b433cd015 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 { ActionItem } from '@renderer/types/selectionTypes' 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 e1673e7cf..24ac2b16e 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 { ActionItem } from '@renderer/types/selectionTypes' 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 3925dfbb5..bc1a63c85 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 { defaultActionItems } from '@renderer/store/selectionStore' import type { ActionItem } from '@renderer/types/selectionTypes' import SelectionToolbar from '@renderer/windows/selection/toolbar/SelectionToolbar' 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 ce267e5ab..ccab63b8d 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 eaaa55806..341ac8f9c 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 { defaultActionItems } from '@renderer/store/selectionStore' import type { ActionItem } from '@renderer/types/selectionTypes' diff --git a/src/renderer/src/pages/settings/SettingGroup.tsx b/src/renderer/src/pages/settings/SettingGroup.tsx index 575e672da..3257b5d06 100644 --- a/src/renderer/src/pages/settings/SettingGroup.tsx +++ b/src/renderer/src/pages/settings/SettingGroup.tsx @@ -1,4 +1,4 @@ -import { ThemeMode } from '@renderer/types' +import type { ThemeMode } from '@renderer/types' 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 ca83e149f..a14e10973 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 834f5e283..72bb3c376 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 f89897d47..9fdb471c3 100644 --- a/src/renderer/src/pages/settings/ToolSettings/ApiServerSettings/ApiServerSettings.tsx +++ b/src/renderer/src/pages/settings/ToolSettings/ApiServerSettings/ApiServerSettings.tsx @@ -1,12 +1,13 @@ // TODO: Refactor this component to use HeroUI import { useTheme } from '@renderer/context/ThemeProvider' import { useApiServer } from '@renderer/hooks/useApiServer' -import { RootState, useAppDispatch } from '@renderer/store' +import type { RootState } from '@renderer/store' +import { useAppDispatch } from '@renderer/store' import { setApiServerApiKey, setApiServerPort } from '@renderer/store/settings' import { formatErrorMessage } from '@renderer/utils/error' import { Button, Input, InputNumber, Tooltip, Typography } from 'antd' import { Copy, ExternalLink, Play, RotateCcw, Square } from 'lucide-react' -import { FC } from 'react' +import type { FC } 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 1a1965c10..3d298c43a 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 abe34eabf..d898c09f9 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 4d975e825..7aee23588 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 2f301ac95..95c074912 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 8486a62f4..b3304b03d 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 325915f21..ece17ebac 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 cb0f3fc8c..438fc053d 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 146900887..7867cb57e 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 ae9697189..245fce110 100644 --- a/src/renderer/src/pages/settings/index.tsx +++ b/src/renderer/src/pages/settings/index.tsx @@ -1,7 +1,8 @@ -import { ThemeMode } from '@renderer/types' +import type { ThemeMode } from '@renderer/types' 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/store/assistants/presets/AssistantPresetsPage.tsx b/src/renderer/src/pages/store/assistants/presets/AssistantPresetsPage.tsx index 4f78e94e0..b5fdc1d33 100644 --- a/src/renderer/src/pages/store/assistants/presets/AssistantPresetsPage.tsx +++ b/src/renderer/src/pages/store/assistants/presets/AssistantPresetsPage.tsx @@ -7,12 +7,13 @@ import CustomTag from '@renderer/components/Tags/CustomTag' import { useAssistantPresets } from '@renderer/hooks/useAssistantPresets' import { useNavbarPosition } from '@renderer/hooks/useSettings' import { createAssistantFromAgent } from '@renderer/services/AssistantService' -import { AssistantPreset } from '@renderer/types' +import type { AssistantPreset } 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/store/assistants/presets/components/AddAssistantPresetPopup.tsx b/src/renderer/src/pages/store/assistants/presets/components/AddAssistantPresetPopup.tsx index af8204487..d5558b8e8 100644 --- a/src/renderer/src/pages/store/assistants/presets/components/AddAssistantPresetPopup.tsx +++ b/src/renderer/src/pages/store/assistants/presets/components/AddAssistantPresetPopup.tsx @@ -11,9 +11,10 @@ import { fetchGenerate } from '@renderer/services/ApiService' import { getDefaultModel } from '@renderer/services/AssistantService' import { estimateTextTokens } from '@renderer/services/TokenService' import { useAppSelector } from '@renderer/store' -import { AssistantPreset, KnowledgeBase } from '@renderer/types' +import type { AssistantPreset, KnowledgeBase } from '@renderer/types' import { getLeadingEmoji, uuid } from '@renderer/utils' -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/store/assistants/presets/components/AssistantPresetGroupIcon.tsx b/src/renderer/src/pages/store/assistants/presets/components/AssistantPresetGroupIcon.tsx index a315a2579..37140f08c 100644 --- a/src/renderer/src/pages/store/assistants/presets/components/AssistantPresetGroupIcon.tsx +++ b/src/renderer/src/pages/store/assistants/presets/components/AssistantPresetGroupIcon.tsx @@ -1,6 +1,7 @@ import { groupTranslations } from '@renderer/pages/store/assistants/presets/assistantPresetGroupTranslations' -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/store/assistants/presets/components/ImportAssistantPresetPopup.tsx b/src/renderer/src/pages/store/assistants/presets/components/ImportAssistantPresetPopup.tsx index 3874719e6..9a76d1d02 100644 --- a/src/renderer/src/pages/store/assistants/presets/components/ImportAssistantPresetPopup.tsx +++ b/src/renderer/src/pages/store/assistants/presets/components/ImportAssistantPresetPopup.tsx @@ -3,7 +3,7 @@ import { useAssistantPresets } from '@renderer/hooks/useAssistantPresets' import { useTimer } from '@renderer/hooks/useTimer' import { getDefaultModel } from '@renderer/services/AssistantService' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' -import { AssistantPreset } from '@renderer/types' +import type { AssistantPreset } 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/store/assistants/presets/index.ts b/src/renderer/src/pages/store/assistants/presets/index.ts index 5dd2604e5..9df20bc88 100644 --- a/src/renderer/src/pages/store/assistants/presets/index.ts +++ b/src/renderer/src/pages/store/assistants/presets/index.ts @@ -2,7 +2,7 @@ import { loggerService } from '@logger' import { useRuntime } from '@renderer/hooks/useRuntime' import { useSettings } from '@renderer/hooks/useSettings' import store from '@renderer/store' -import { AssistantPreset } from '@renderer/types' +import type { AssistantPreset } from '@renderer/types' import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/src/renderer/src/pages/translate/TranslateHistory.tsx b/src/renderer/src/pages/translate/TranslateHistory.tsx index e9a79200a..df5b48d49 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 76e50ce4b..61b49893f 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 fd149e0d4..54bdd1961 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 558a328b5..b3047dc7e 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 81d85df5d..af2313b1c 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 25d2d46a4..abc5a8bbf 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 a01ba9354..4759d4df9 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 47972e080..614873f48 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 7ed498b16..d068bfc36 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 834f11655..29f4018f2 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 2a17dc3a2..485485542 100644 --- a/src/renderer/src/providers/WebSearchProvider/LocalSearchProvider.ts +++ b/src/renderer/src/providers/WebSearchProvider/LocalSearchProvider.ts @@ -1,8 +1,8 @@ import { loggerService } from '@logger' import { nanoid } from '@reduxjs/toolkit' import store from '@renderer/store' -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 cf3a75f84..89fc03892 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 3ca9b0676..40a5ce04a 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 b389a98de..0b961c23d 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 e7c95fb1c..f434477f3 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 e1fe8f185..b5212bd80 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 daabe9fb4..7b23895b4 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 403fdc2cf..cc0f94934 100644 --- a/src/renderer/src/services/ApiService.ts +++ b/src/renderer/src/services/ApiService.ts @@ -3,19 +3,19 @@ */ 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 { getStoreSetting } from '@renderer/hooks/useSettings' 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 c168bd489..1c97ebd08 100644 --- a/src/renderer/src/services/BackupService.ts +++ b/src/renderer/src/services/BackupService.ts @@ -4,7 +4,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 a7f3fab13..f9e3f4dea 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 8f54e8969..149ea2f2a 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 ec32535da..40d61937f 100644 --- a/src/renderer/src/services/FileManager.ts +++ b/src/renderer/src/services/FileManager.ts @@ -2,7 +2,7 @@ import { loggerService } from '@logger' import db from '@renderer/databases' import i18n from '@renderer/i18n' import store from '@renderer/store' -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 02c3217dc..df814653f 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 e49a7fca6..ed065c3a1 100644 --- a/src/renderer/src/services/KnowledgeService.ts +++ b/src/renderer/src/services/KnowledgeService.ts @@ -1,5 +1,5 @@ import { loggerService } from '@logger' -import { Span } from '@opentelemetry/api' +import type { Span } from '@opentelemetry/api' import { ModernAiProvider } from '@renderer/aiCore' import AiProvider from '@renderer/aiCore/legacy' import { DEFAULT_KNOWLEDGE_DOCUMENT_COUNT, DEFAULT_KNOWLEDGE_THRESHOLD } from '@renderer/config/constant' @@ -7,16 +7,17 @@ import { getEmbeddingMaxContext } from '@renderer/config/embedings' import { isAzureOpenAIProvider, isGeminiProvider } from '@renderer/config/providers' 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 type { Chunk } from '@renderer/types/chunk' +import { ChunkType } from '@renderer/types/chunk' import { routeToEndpoint } from '@renderer/utils' -import { ExtractResults } from '@renderer/utils/extract' +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 28656e54e..01ba5eeb7 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 4307060aa..8f572194d 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 bbb5263c1..e213af7ff 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 d5953db7c..66d00e1c0 100644 --- a/src/renderer/src/services/ModelMessageService.ts +++ b/src/renderer/src/services/ModelMessageService.ts @@ -1,5 +1,5 @@ -import { ChatCompletionContentPart, ChatCompletionMessageParam } from '@cherrystudio/openai/resources' -import { Model } from '@renderer/types' +import type { ChatCompletionContentPart, ChatCompletionMessageParam } from '@cherrystudio/openai/resources' +import type { Model } from '@renderer/types' import { findLast } from 'lodash' export function processReqMessages( diff --git a/src/renderer/src/services/ModelService.ts b/src/renderer/src/services/ModelService.ts index 266271e0b..308dd09b5 100644 --- a/src/renderer/src/services/ModelService.ts +++ b/src/renderer/src/services/ModelService.ts @@ -1,5 +1,5 @@ import { getStoreProviders } from '@renderer/hooks/useStore' -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 dc678825f..3c4ae54ab 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/NotesSearchService.ts b/src/renderer/src/services/NotesSearchService.ts index f4331ff16..fa9c3e318 100644 --- a/src/renderer/src/services/NotesSearchService.ts +++ b/src/renderer/src/services/NotesSearchService.ts @@ -1,5 +1,5 @@ import { loggerService } from '@logger' -import { NotesTreeNode } from '@renderer/types/note' +import type { NotesTreeNode } from '@renderer/types/note' const logger = loggerService.withContext('NotesSearchService') diff --git a/src/renderer/src/services/NotesService.ts b/src/renderer/src/services/NotesService.ts index a76df9d84..4cd73d12d 100644 --- a/src/renderer/src/services/NotesService.ts +++ b/src/renderer/src/services/NotesService.ts @@ -1,5 +1,5 @@ import { loggerService } from '@logger' -import { NotesSortType, NotesTreeNode } from '@renderer/types/note' +import type { NotesSortType, NotesTreeNode } from '@renderer/types/note' import { getFileDirectory } from '@renderer/utils' const logger = loggerService.withContext('NotesService') diff --git a/src/renderer/src/services/NotesTreeService.ts b/src/renderer/src/services/NotesTreeService.ts index 676b4996a..d5ccf0b56 100644 --- a/src/renderer/src/services/NotesTreeService.ts +++ b/src/renderer/src/services/NotesTreeService.ts @@ -1,4 +1,4 @@ -import { NotesTreeNode } from '@renderer/types/note' +import type { NotesTreeNode } from '@renderer/types/note' export function normalizePathValue(path: string): string { return path.replace(/\\/g, '/') diff --git a/src/renderer/src/services/NutstoreService.ts b/src/renderer/src/services/NutstoreService.ts index 17dee7470..4d314d2e2 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 eef206d14..1f365b39b 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 25767dacd..d12a73648 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 2d10581eb..6ec4fa4cc 100644 --- a/src/renderer/src/services/ProviderService.ts +++ b/src/renderer/src/services/ProviderService.ts @@ -1,5 +1,5 @@ import { getStoreProviders } from '@renderer/hooks/useStore' -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 31a063727..b1e4c4fe4 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 1a2c6e633..4aacac1dd 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 331db3881..71f00d85b 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 { Stream } from '@cherrystudio/openai/streaming' 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 { getEnableDeveloperMode } from '@renderer/hooks/useSettings' @@ -12,11 +13,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' const logger = loggerService.withContext('SpanManagerService') diff --git a/src/renderer/src/services/StoreSyncService.ts b/src/renderer/src/services/StoreSyncService.ts index 30def3a97..e25b92bc4 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 a05220f1a..a0c22c488 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 bb5a64621..3dd641023 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 0eb7fd24f..f7abfdb3b 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 ed274b04a..f92d2d90b 100644 --- a/src/renderer/src/services/WebSearchService.ts +++ b/src/renderer/src/services/WebSearchService.ts @@ -5,8 +5,8 @@ import WebSearchEngineProvider from '@renderer/providers/WebSearchProvider' import { addSpan, endSpan } from '@renderer/services/SpanManagerService' import store from '@renderer/store' import { setWebSearchStatus } from '@renderer/store/runtime' -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, removeSpecialCharactersForFileName, 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 119da16d0..2a40772c2 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 a5dabc112..f94be936c 100644 --- a/src/renderer/src/services/__tests__/ApiService.test.ts +++ b/src/renderer/src/services/__tests__/ApiService.test.ts @@ -1,35 +1,36 @@ -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 OpenAI from '@cherrystudio/openai' -import { ChatCompletionChunk } from '@cherrystudio/openai/resources' +import type OpenAI from '@cherrystudio/openai' +import type { ChatCompletionChunk } from '@cherrystudio/openai/resources' +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, diff --git a/src/renderer/src/services/__tests__/ModelMessageService.test.ts b/src/renderer/src/services/__tests__/ModelMessageService.test.ts index 4017f028c..a54ac6f9e 100644 --- a/src/renderer/src/services/__tests__/ModelMessageService.test.ts +++ b/src/renderer/src/services/__tests__/ModelMessageService.test.ts @@ -1,4 +1,4 @@ -import { ChatCompletionMessageParam } from '@cherrystudio/openai/resources' +import type { ChatCompletionMessageParam } from '@cherrystudio/openai/resources' import type { Model } from '@renderer/types' import { describe, expect, it } from 'vitest' diff --git a/src/renderer/src/services/__tests__/ShikiStreamTokenizer.test.ts b/src/renderer/src/services/__tests__/ShikiStreamTokenizer.test.ts index cb74ff4ea..a87f1a80f 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 ab32c015d..d9a6c5be9 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 c07c67f80..9e638ebf1 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 e7d7f005f..b38539acd 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 56d068083..9e99fe752 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 ca5c0060b..00624bc43 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 18647745e..4dc48b873 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 3756c88c8..9d479796e 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 605259b64..aeb160fd0 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 ef65a4962..ce64ea90a 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 88bde439b..65fd201f5 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 74fcc0c64..ba4122fa1 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 e685c0e3f..1685d1764 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 c9605671a..a81a3f972 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 34d28173b..76a404cf9 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/assistants.ts b/src/renderer/src/store/assistants.ts index 98454097c..9b3d7c0e0 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 { DEFAULT_ASSISTANT_SETTINGS, getDefaultAssistant, getDefaultTopic } from '@renderer/services/AssistantService' -import { Assistant, AssistantPreset, AssistantSettings, Model, Topic } from '@renderer/types' +import type { Assistant, AssistantPreset, 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 cf5d8e6e3..fbb3853a1 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 fd23d9fff..44070a76e 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, terminalApps } from '@shared/config/constant' // 常量定义 diff --git a/src/renderer/src/store/copilot.ts b/src/renderer/src/store/copilot.ts index 5bcf142b1..ab7e50ee8 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 4906bb58c..0ecc8b003 100644 --- a/src/renderer/src/store/inputTools.ts +++ b/src/renderer/src/store/inputTools.ts @@ -1,5 +1,6 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' -import { InputBarToolType } from '@renderer/types/chat' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' +import type { InputBarToolType } from '@renderer/types/chat' type ToolOrder = { visible: InputBarToolType[] diff --git a/src/renderer/src/store/knowledge.ts b/src/renderer/src/store/knowledge.ts index f74752b21..6280a99e8 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 { FileMetadata, KnowledgeBase, KnowledgeItem, PreprocessProvider, ProcessingStatus } from '@renderer/types' +import type { FileMetadata, KnowledgeBase, KnowledgeItem, PreprocessProvider, ProcessingStatus } from '@renderer/types' const logger = loggerService.withContext('Store:Knowledge') diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index 6dd1b777a..737de4440 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 cddb8dcd6..ba0e11be0 100644 --- a/src/renderer/src/store/messageBlock.ts +++ b/src/renderer/src/store/messageBlock.ts @@ -1,8 +1,9 @@ -import { WebSearchResultBlock } from '@anthropic-ai/sdk/resources' +import type { WebSearchResultBlock } from '@anthropic-ai/sdk/resources' import type OpenAI from '@cherrystudio/openai' 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' diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index 10c0c4e91..c6e3a9576 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -21,24 +21,22 @@ import db from '@renderer/databases' import i18n from '@renderer/i18n' import { DEFAULT_ASSISTANT_SETTINGS } from '@renderer/services/AssistantService' import { defaultPreprocessProviders } from '@renderer/store/preprocess' -import { +import type { Assistant, BuiltinOcrProvider, - isBuiltinMCPServer, - isSystemProvider, Model, Provider, ProviderApiOptions, - SystemProviderIds, TranslateLanguageCode, WebSearchProvider } from '@renderer/types' +import { isBuiltinMCPServer, isSystemProvider, SystemProviderIds } from '@renderer/types' import { getDefaultGroupName, getLeadingEmoji, runAsyncFunction, uuid } from '@renderer/utils' import { defaultByPassRules, UpgradeChannel } from '@shared/config/constant' 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 95fea71a0..8ca59a5bd 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 82b81adb8..cd8c0dde8 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, MessageBlockType } from '@renderer/types/newMessage' diff --git a/src/renderer/src/store/note.ts b/src/renderer/src/store/note.ts index 38f331c76..25347a876 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 e2a05f021..d494ec269 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 6de861d7f..8e997bd6d 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 d14404131..e5fc6f59e 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 2beab719f..29fc2993b 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 f86a79cec..c3487aaa1 100644 --- a/src/renderer/src/store/runtime.ts +++ b/src/renderer/src/store/runtime.ts @@ -1,4 +1,5 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' import { AppLogo, UserAvatar } from '@renderer/config/env' import type { MinAppType, 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 0eaecb25f..fe63ae230 100644 --- a/src/renderer/src/store/selectionStore.ts +++ b/src/renderer/src/store/selectionStore.ts @@ -1,5 +1,6 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' -import { ActionItem, FilterMode, SelectionState, TriggerMode } from '@renderer/types/selectionTypes' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' +import type { ActionItem, FilterMode, SelectionState, TriggerMode } from '@renderer/types/selectionTypes' export const defaultActionItems: ActionItem[] = [ { id: 'translate', name: 'selection.action.builtin.translate', enabled: true, isBuiltIn: true, icon: 'languages' }, diff --git a/src/renderer/src/store/settings.ts b/src/renderer/src/store/settings.ts index 273653aa0..eccaf733d 100644 --- a/src/renderer/src/store/settings.ts +++ b/src/renderer/src/store/settings.ts @@ -1,8 +1,9 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' import { isMac } from '@renderer/config/constant' import { TRANSLATE_PROMPT } from '@renderer/config/prompts' import { DEFAULT_SIDEBAR_ICONS } from '@renderer/config/sidebar' -import { +import type { ApiServerConfig, AssistantsSortType, CodeStyleVarious, @@ -13,14 +14,14 @@ import { PaintingProvider, S3Config, SidebarIcon, - ThemeMode, TranslateLanguageCode } from '@renderer/types' +import { ThemeMode } from '@renderer/types' import { uuid } from '@renderer/utils' import { UpgradeChannel } from '@shared/config/constant' -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 634a5fb4d..9b4cc1341 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 16195cd5f..87d734277 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 b5bb0a5d5..555e5706c 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 169f05c72..97c435d16 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/toolPermissions.ts b/src/renderer/src/store/toolPermissions.ts index dad8c13d4..a7ac87482 100644 --- a/src/renderer/src/store/toolPermissions.ts +++ b/src/renderer/src/store/toolPermissions.ts @@ -1,5 +1,6 @@ import type { PermissionUpdate } from '@anthropic-ai/claude-agent-sdk' -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import type { PayloadAction } from '@reduxjs/toolkit' +import { createSlice } from '@reduxjs/toolkit' export type ToolPermissionRequestPayload = { requestId: string diff --git a/src/renderer/src/store/translate.ts b/src/renderer/src/store/translate.ts index 999f7f658..0e4c56e73 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 16029ccf4..f166bb194 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 69cddaae3..2f5168c18 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 1e17d3e86..4ca7fb435 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 1bdcc679e..ddc0a90f8 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 c66528abb..468555d94 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 347194983..b000dfb5f 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 c071bdacd..dddec93ed 100644 --- a/src/renderer/src/trace/dataHandler/StreamHandler.ts +++ b/src/renderer/src/trace/dataHandler/StreamHandler.ts @@ -1,7 +1,7 @@ -import { OpenAI } from '@cherrystudio/openai' -import { Stream } from '@cherrystudio/openai/streaming' -import { TokenUsage } from '@mcp-trace/trace-core' -import { Span } from '@opentelemetry/api' +import type { OpenAI } from '@cherrystudio/openai' +import type { Stream } from '@cherrystudio/openai/streaming' +import type { TokenUsage } from '@mcp-trace/trace-core' +import type { Span } from '@opentelemetry/api' import { endSpan } from '@renderer/services/SpanManagerService' export class StreamHandler { diff --git a/src/renderer/src/trace/pages/SpanDetail.tsx b/src/renderer/src/trace/pages/SpanDetail.tsx index 925dd0d5b..b4f80a835 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 5fb8bc0c2..2ec92d7b4 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 01384bc9c..31f69f243 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 507ce813a..f83d160df 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 1fff3fb2c..2e638e8eb 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/agent.ts b/src/renderer/src/types/agent.ts index cc04dc3f7..b66e7475b 100644 --- a/src/renderer/src/types/agent.ts +++ b/src/renderer/src/types/agent.ts @@ -4,7 +4,7 @@ * * WARNING: Any null value will be converted to undefined from api. */ -import { ModelMessage, TextStreamPart } from 'ai' +import type { ModelMessage, TextStreamPart } from 'ai' import * as z from 'zod' import type { Message, MessageBlock } from './newMessage' diff --git a/src/renderer/src/types/aiCoreTypes.ts b/src/renderer/src/types/aiCoreTypes.ts index e93218ab9..a2ff5a4ce 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/apiModels.ts b/src/renderer/src/types/apiModels.ts index 68141bf68..565eb9241 100644 --- a/src/renderer/src/types/apiModels.ts +++ b/src/renderer/src/types/apiModels.ts @@ -1,4 +1,4 @@ -import { Model } from '@types' +import type { Model } from '@types' import * as z from 'zod' import { ProviderTypeSchema } from './provider' diff --git a/src/renderer/src/types/chunk.ts b/src/renderer/src/types/chunk.ts index 913f40287..345d8a385 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 78bfe0a52..440ad5f14 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,8 +20,8 @@ import { UnsupportedFunctionalityError } from 'ai' -import { ProviderSpecificError } from './provider-specific-error' -import { Serializable } from './serialize' +import type { ProviderSpecificError } from './provider-specific-error' +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 840c4ef27..6cf9a2930 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 20add5724..28e0aff88 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, MCPServerInstallSource, McpServerType } from './mcp' +import type { KnowledgeBase, KnowledgeReference } from './knowledge' +import type { MCPConfigSample, MCPServerInstallSource, 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 d168349c8..b584c31b8 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 4d0aa72f5..ac6169130 100644 --- a/src/renderer/src/types/newMessage.ts +++ b/src/renderer/src/types/newMessage.ts @@ -17,7 +17,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 765c4e411..66e0f9616 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/provider.ts b/src/renderer/src/types/provider.ts index 181a342f8..e013d3d58 100644 --- a/src/renderer/src/types/provider.ts +++ b/src/renderer/src/types/provider.ts @@ -1,4 +1,4 @@ -import { Model } from '@types' +import type { Model } from '@types' import * as z from 'zod' export const ProviderTypeSchema = z.enum([ diff --git a/src/renderer/src/types/sdk.ts b/src/renderer/src/types/sdk.ts index 83898429d..f0ea79693 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,14 +7,15 @@ 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 OpenAI, { AzureOpenAI } from '@cherrystudio/openai' -import { ChatCompletionContentPartImage } from '@cherrystudio/openai/resources' -import { Stream } from '@cherrystudio/openai/streaming' -import { +import type { AzureOpenAI } from '@cherrystudio/openai' +import type OpenAI from '@cherrystudio/openai' +import type { ChatCompletionContentPartImage } from '@cherrystudio/openai/resources' +import type { Stream } from '@cherrystudio/openai/streaming' +import type { Content, CreateChatParameters, FunctionCall, @@ -26,7 +27,7 @@ import { Tool } from '@google/genai' -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 1bc6fca8e..9b0f07f8a 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 4c877e285..eb35e2821 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 5697fe6d6..7908010d1 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 559e2e489..c7a89207e 100644 --- a/src/renderer/src/utils/__tests__/export.test.ts +++ b/src/renderer/src/utils/__tests__/export.test.ts @@ -75,7 +75,8 @@ vi.mock('@renderer/utils/markdown', async (importOriginal) => { }) // Import the functions to test AFTER setting up mocks -import { Topic, TopicType } from '@renderer/types' +import type { Topic } from '@renderer/types' +import { TopicType } 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 4a854bf04..fe1697e3e 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 0dfabedda..411cd8148 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 } from 'vitest' import { diff --git a/src/renderer/src/utils/__tests__/tagExtraction.test.ts b/src/renderer/src/utils/__tests__/tagExtraction.test.ts index 6533bda3f..2eac9247b 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 2f807d111..f5aa6c48f 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/agentSession.ts b/src/renderer/src/utils/agentSession.ts index df3441364..69cccfcc1 100644 --- a/src/renderer/src/utils/agentSession.ts +++ b/src/renderer/src/utils/agentSession.ts @@ -1,4 +1,4 @@ -import { AgentType, ApiModelsFilter } from '@renderer/types' +import type { AgentType, ApiModelsFilter } from '@renderer/types' const SESSION_TOPIC_PREFIX = 'agent-session:' diff --git a/src/renderer/src/utils/api.ts b/src/renderer/src/utils/api.ts index f02eb780e..845187eb8 100644 --- a/src/renderer/src/utils/api.ts +++ b/src/renderer/src/utils/api.ts @@ -1,5 +1,5 @@ import store from '@renderer/store' -import { VertexProvider } from '@renderer/types' +import type { VertexProvider } from '@renderer/types' import { trim } from 'lodash' /** diff --git a/src/renderer/src/utils/assistant.ts b/src/renderer/src/utils/assistant.ts index e08214aee..4a1fa6298 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 b00e07a78..597e0e0b1 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 da2cee770..8c97cbcde 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 04841a25c..d58d9cfb2 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 7678099be..d5f9e572c 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 2e7f10964..ebf9671fb 100644 --- a/src/renderer/src/utils/error.ts +++ b/src/renderer/src/utils/error.ts @@ -1,17 +1,20 @@ -import { McpError } from '@modelcontextprotocol/sdk/types.js' -import { AgentServerError, AgentServerErrorSchema } from '@renderer/types' -import { +import type { McpError } from '@modelcontextprotocol/sdk/types.js' +import type { AgentServerError } from '@renderer/types' +import { AgentServerErrorSchema } from '@renderer/types' +import type { AiSdkErrorUnion, - isSerializedAiSdkAPICallError, SerializedAiSdkError, SerializedAiSdkInvalidToolInputError, SerializedAiSdkNoSuchToolError, SerializedError } from '@renderer/types/error' -import { InvalidToolInputError, NoSuchToolError } from 'ai' -import { AxiosError, isAxiosError } from 'axios' +import { isSerializedAiSdkAPICallError } from '@renderer/types/error' +import type { NoSuchToolError } from 'ai' +import { InvalidToolInputError } from 'ai' +import type { AxiosError } from 'axios' +import { isAxiosError } from 'axios' import { t } from 'i18next' -import * as z from 'zod' +import type * as z from 'zod' import { ZodError } from 'zod' import { parseJSON } from './json' diff --git a/src/renderer/src/utils/fetch.ts b/src/renderer/src/utils/fetch.ts index b18378bef..52c91c089 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 a02d6c3a6..1d4bf4577 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 f453cd759..66b68c0d3 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 f69078286..91d4961ec 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 } from '@renderer/types' -import { ModalFuncProps } from 'antd' +import type { Model, ModelType } 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 85eb80425..8778f43ec 100644 --- a/src/renderer/src/utils/input.ts +++ b/src/renderer/src/utils/input.ts @@ -1,7 +1,7 @@ import { loggerService } from '@logger' import { isMac, isWin } from '@renderer/config/constant' import type { SendMessageShortcut } from '@renderer/store/settings' -import { FileMetadata } from '@renderer/types' +import type { FileMetadata } from '@renderer/types' const logger = loggerService.withContext('Utils:Input') diff --git a/src/renderer/src/utils/markdownConverter.ts b/src/renderer/src/utils/markdownConverter.ts index 51d684612..ac55d16ed 100644 --- a/src/renderer/src/utils/markdownConverter.ts +++ b/src/renderer/src/utils/markdownConverter.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' import { MARKDOWN_SOURCE_LINE_ATTR } from '@renderer/components/RichEditor/constants' -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 55d39df9e..a7a405f9d 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 934d4d882..49628628d 100644 --- a/src/renderer/src/utils/mcp-tools.ts +++ b/src/renderer/src/utils/mcp-tools.ts @@ -1,21 +1,21 @@ -import { ContentBlockParam, MessageParam, ToolUnion, ToolUseBlock } from '@anthropic-ai/sdk/resources' -import OpenAI from '@cherrystudio/openai' -import { +import type { ContentBlockParam, MessageParam, ToolUnion, ToolUseBlock } from '@anthropic-ai/sdk/resources' +import type OpenAI from '@cherrystudio/openai' +import type { ChatCompletionContentPart, ChatCompletionMessageParam, ChatCompletionMessageToolCall, ChatCompletionTool } from '@cherrystudio/openai/resources' -import { Content, FunctionCall, Part, Tool, Type as GeminiSchemaType } from '@google/genai' +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, @@ -23,9 +23,10 @@ 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' diff --git a/src/renderer/src/utils/messageUtils/create.ts b/src/renderer/src/utils/messageUtils/create.ts index faeb094f1..c367b8f11 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 811c7960b..06b2aedaf 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 b874f08ae..2bc7896d1 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 1319fe432..a74ffab25 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 { AdaptedApiModel, ApiModel, Model, ModelTag, objectKeys } from '@renderer/types' +import type { AdaptedApiModel, ApiModel, 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 3cc02aadf..bc24bc7db 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 85766953b..5db92d06a 100644 --- a/src/renderer/src/utils/prompt.ts +++ b/src/renderer/src/utils/prompt.ts @@ -1,6 +1,6 @@ import { loggerService } from '@logger' import store from '@renderer/store' -import { MCPTool } from '@renderer/types' +import type { MCPTool } from '@renderer/types' const logger = loggerService.withContext('Utils:Prompt') diff --git a/src/renderer/src/utils/provider.ts b/src/renderer/src/utils/provider.ts index 1ff8badb8..b8d761f8a 100644 --- a/src/renderer/src/utils/provider.ts +++ b/src/renderer/src/utils/provider.ts @@ -1,5 +1,5 @@ import { CLAUDE_SUPPORTED_PROVIDERS } from '@renderer/pages/code' -import { Provider } from '@renderer/types' +import type { Provider } from '@renderer/types' export const getClaudeSupportedProviders = (providers: Provider[]) => { return providers.filter((p) => p.type === 'anthropic' || CLAUDE_SUPPORTED_PROVIDERS.includes(p.id)) diff --git a/src/renderer/src/utils/shiki.ts b/src/renderer/src/utils/shiki.ts index 2b56c878e..dab4e1773 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 a95fa93dd..7e6d52be7 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 f717ee015..4e0164936 100644 --- a/src/renderer/src/utils/translate.ts +++ b/src/renderer/src/utils/translate.ts @@ -8,10 +8,12 @@ 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 { 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 05f82861c..52f1698ce 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/mini/chat/ChatWindow.tsx b/src/renderer/src/windows/mini/chat/ChatWindow.tsx index ff5749442..bb7fde16a 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 93671fac4..0a2f80ccd 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 74e689b96..f5d858938 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 e2082d7b9..bf0114601 100644 --- a/src/renderer/src/windows/mini/home/HomeWindow.tsx +++ b/src/renderer/src/windows/mini/home/HomeWindow.tsx @@ -12,8 +12,10 @@ 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 { ThemeMode, Topic } from '@renderer/types' -import { Chunk, ChunkType } from '@renderer/types/chunk' +import type { Topic } from '@renderer/types' +import { ThemeMode } 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 +27,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 60fe3a185..f6456e97c 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 59774e704..ebe878644 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 abebc4ed7..04b416440 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 cfd7d2945..648b72080 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 681e96de1..b84dafc45 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 5112caf94..ab8e94a72 100644 --- a/src/renderer/src/windows/selection/action/SelectionActionApp.tsx +++ b/src/renderer/src/windows/selection/action/SelectionActionApp.tsx @@ -8,7 +8,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 6046da9ae..9dd2fbc4f 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 type { ActionItem } from '@renderer/types/selectionTypes' import { abortCompletion } from '@renderer/utils/abortController' 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 0d2968778..5e83071ad 100644 --- a/src/renderer/src/windows/selection/action/components/ActionTranslate.tsx +++ b/src/renderer/src/windows/selection/action/components/ActionTranslate.tsx @@ -9,14 +9,15 @@ import { useSettings } from '@renderer/hooks/useSettings' 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 type { ActionItem } from '@renderer/types/selectionTypes' import { runAsyncFunction } from '@renderer/utils' import { abortCompletion } from '@renderer/utils/abortController' import { detectLanguage } from '@renderer/utils/translate' 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 7ef116625..16537f0e8 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 5c0af0207..4048e8739 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 5aa8d3f74..e1ed8bac3 100644 --- a/src/renderer/src/windows/selection/action/entryPoint.tsx +++ b/src/renderer/src/windows/selection/action/entryPoint.tsx @@ -12,7 +12,8 @@ import { HeroUIProvider } from '@renderer/context/HeroUIProvider' 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 2d00b127b..b28a0c0f9 100644 --- a/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx +++ b/src/renderer/src/windows/selection/toolbar/SelectionToolbar.tsx @@ -12,9 +12,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 02d68607e..e85509e59 100644 --- a/src/renderer/src/windows/selection/toolbar/entryPoint.tsx +++ b/src/renderer/src/windows/selection/toolbar/entryPoint.tsx @@ -4,7 +4,7 @@ import { loggerService } from '@logger' import { ThemeProvider } from '@renderer/context/ThemeProvider' import storeSyncService from '@renderer/services/StoreSyncService' import store, { persistor } from '@renderer/store' -import { FC } from 'react' +import type { FC } 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/workers/shiki-stream.worker.ts b/src/renderer/src/workers/shiki-stream.worker.ts index bcc9c8964..a3803f600 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')