From 837e929731da689a1843d2c6c05a0fcf67923f9b Mon Sep 17 00:00:00 2001 From: lizhixuan Date: Sat, 30 Aug 2025 17:58:28 +0800 Subject: [PATCH] refactor(aiCore): consolidate StreamTextParams type imports and enhance type definitions - Moved StreamTextParams type definition to a new file for better organization. - Updated imports across multiple files to reference the new location. - Adjusted related type definitions in ApiService and ConversationService for consistency. --- src/renderer/src/aiCore/index_new.ts | 2 +- .../src/aiCore/transformParameters.ts | 2 +- src/renderer/src/config/providers.ts | 2 +- src/renderer/src/services/ApiService.ts | 32 ++----------------- .../src/services/ConversationService.ts | 2 +- .../{aiCore/types.ts => types/aiCoreTypes.ts} | 0 src/renderer/src/types/index.ts | 29 +++++++++++++++++ 7 files changed, 36 insertions(+), 33 deletions(-) rename src/renderer/src/{aiCore/types.ts => types/aiCoreTypes.ts} (100%) diff --git a/src/renderer/src/aiCore/index_new.ts b/src/renderer/src/aiCore/index_new.ts index 9d94fdb544..b5998e013d 100644 --- a/src/renderer/src/aiCore/index_new.ts +++ b/src/renderer/src/aiCore/index_new.ts @@ -15,6 +15,7 @@ import { getEnableDeveloperMode } from '@renderer/hooks/useSettings' import { addSpan, endSpan } from '@renderer/services/SpanManagerService' import { StartSpanParams } from '@renderer/trace/types/ModelSpanEntity' import type { Assistant, GenerateImageParams, Model, Provider } from '@renderer/types' +import type { StreamTextParams } from '@renderer/types/aiCoreTypes' import { ChunkType } from '@renderer/types/chunk' import AiSdkToChunkAdapter from './chunk/AiSdkToChunkAdapter' @@ -28,7 +29,6 @@ import { prepareSpecialProviderConfig, providerToAiSdkConfig } from './provider/providerConfig' -import type { StreamTextParams } from './types' const logger = loggerService.withContext('ModernAiProvider') diff --git a/src/renderer/src/aiCore/transformParameters.ts b/src/renderer/src/aiCore/transformParameters.ts index 9e6e1bc8e3..b47f8a326e 100644 --- a/src/renderer/src/aiCore/transformParameters.ts +++ b/src/renderer/src/aiCore/transformParameters.ts @@ -20,6 +20,7 @@ import { import { getAssistantSettings, getDefaultModel, getProviderByModel } from '@renderer/services/AssistantService' import type { Assistant, MCPTool, Message, Model, Provider } from '@renderer/types' import { FileTypes } from '@renderer/types' +import type { StreamTextParams } from '@renderer/types/aiCoreTypes' import { FileMessageBlock, ImageMessageBlock, ThinkingMessageBlock } from '@renderer/types/newMessage' // import { getWebSearchTools } from './utils/websearch' import { @@ -33,7 +34,6 @@ import type { AssistantModelMessage, FilePart, ImagePart, ModelMessage, TextPart import { stepCountIs } from 'ai' import { getAiSdkProviderId } from './provider/factory' -import type { StreamTextParams } from './types' // import { webSearchTool } from './tools/WebSearchTool' // import { jsonSchemaToZod } from 'json-schema-to-zod' import { setupToolsConfig } from './utils/mcp' diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index 795b243c62..798df72d70 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -250,7 +250,7 @@ export const SYSTEM_PROVIDERS_CONFIG: Record = name: 'Anthropic', type: 'anthropic', apiKey: '', - apiHost: 'https://api.anthropic.com/', + apiHost: 'https://api.anthropic.com', models: SYSTEM_MODELS.anthropic, isSystem: true, enabled: false diff --git a/src/renderer/src/services/ApiService.ts b/src/renderer/src/services/ApiService.ts index d9a79ee978..e443c5a976 100644 --- a/src/renderer/src/services/ApiService.ts +++ b/src/renderer/src/services/ApiService.ts @@ -6,12 +6,13 @@ import AiProvider from '@renderer/aiCore' import { CompletionsParams } from '@renderer/aiCore/legacy/middleware/schemas' import { AiSdkMiddlewareConfig } from '@renderer/aiCore/middleware/AiSdkMiddlewareBuilder' import { buildStreamTextParams } from '@renderer/aiCore/transformParameters' -import type { StreamTextParams } from '@renderer/aiCore/types' 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 { 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' @@ -54,7 +55,7 @@ export async function fetchMcpTools(assistant: Assistant) { if (enabledMCPs && enabledMCPs.length > 0) { try { - const toolPromises = enabledMCPs.map>(async (mcpServer: MCPServer) => { + const toolPromises = enabledMCPs.map(async (mcpServer: MCPServer) => { try { const tools = await window.api.mcp.listTools(mcpServer) return tools.filter((tool: any) => !mcpServer.disabledTools?.includes(tool.name)) @@ -75,33 +76,6 @@ export async function fetchMcpTools(assistant: Assistant) { return mcpTools } -export type FetchChatCompletionOptions = { - signal?: AbortSignal - timeout?: number - headers?: Record -} - -type BaseParams = { - assistant: Assistant - options?: FetchChatCompletionOptions - onChunkReceived: (chunk: Chunk) => void - topicId?: string // 添加 topicId 参数 -} - -type MessagesParams = BaseParams & { - messages: StreamTextParams['messages'] - prompt?: never -} - -type PromptParams = BaseParams & { - messages?: never - // prompt: StreamTextParams['prompt'] - // see https://github.com/vercel/ai/issues/8363 - prompt: string -} - -export type FetchChatCompletionParams = MessagesParams | PromptParams - export async function fetchChatCompletion({ messages, prompt, diff --git a/src/renderer/src/services/ConversationService.ts b/src/renderer/src/services/ConversationService.ts index b119d4abfc..63db517731 100644 --- a/src/renderer/src/services/ConversationService.ts +++ b/src/renderer/src/services/ConversationService.ts @@ -1,6 +1,6 @@ import { convertMessagesToSdkMessages } from '@renderer/aiCore/transformParameters' -import type { StreamTextParams } from '@renderer/aiCore/types' import { Assistant, Message } from '@renderer/types' +import type { StreamTextParams } from '@renderer/types/aiCoreTypes' import { filterAdjacentUserMessaegs, filterLastAssistantMessage } from '@renderer/utils/messageUtils/filters' import { isEmpty, takeRight } from 'lodash' diff --git a/src/renderer/src/aiCore/types.ts b/src/renderer/src/types/aiCoreTypes.ts similarity index 100% rename from src/renderer/src/aiCore/types.ts rename to src/renderer/src/types/aiCoreTypes.ts diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index d67801a1c0..d21b8972b9 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -6,6 +6,8 @@ import * as z from 'zod/v4' export * from './file' +import type { StreamTextParams } from './aiCoreTypes' +import type { Chunk } from './chunk' import type { FileMetadata } from './file' import type { Message } from './newMessage' import type { BaseTool, MCPTool } from './tool' @@ -1254,3 +1256,30 @@ export type HexColor = string export const isHexColor = (value: string): value is HexColor => { return /^#([0-9A-F]{3}){1,2}$/i.test(value) } + +export type FetchChatCompletionOptions = { + signal?: AbortSignal + timeout?: number + headers?: Record +} + +type BaseParams = { + assistant: Assistant + options?: FetchChatCompletionOptions + onChunkReceived: (chunk: Chunk) => void + topicId?: string // 添加 topicId 参数 +} + +type MessagesParams = BaseParams & { + messages: StreamTextParams['messages'] + prompt?: never +} + +type PromptParams = BaseParams & { + messages?: never + // prompt: StreamTextParams['prompt'] + // see https://github.com/vercel/ai/issues/8363 + prompt: string +} + +export type FetchChatCompletionParams = MessagesParams | PromptParams