mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-28 05:11:24 +08:00
feat: update package dependencies and introduce new patches for AI SDK tools
- Added patches for `@ai-sdk/google-vertex` and `@ai-sdk/openai-compatible` to enhance functionality and fix issues. - Updated `package.json` to reflect new dependency versions and patch paths. - Refactored `transformParameters` and `ApiService` to support new tool configurations and improve parameter handling. - Introduced utility functions for setting up tools and managing options, enhancing the overall integration of tools within the AI SDK.
This commit is contained in:
parent
c934b45c09
commit
87f803b0d3
94
.yarn/patches/@ai-sdk-openai-compatible-npm-0.2.14-bb0a64a4be.patch
vendored
Normal file
94
.yarn/patches/@ai-sdk-openai-compatible-npm-0.2.14-bb0a64a4be.patch
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
diff --git a/dist/index.js b/dist/index.js
|
||||
index 287fe679c32d30a9745270a00589eb90de8da786..5892d4526529e89fca868251ee0c1b081748c358 100644
|
||||
--- a/dist/index.js
|
||||
+++ b/dist/index.js
|
||||
@@ -321,8 +321,8 @@ var OpenAICompatibleChatLanguageModel = class {
|
||||
} : { type: "json_object" } : void 0,
|
||||
stop: stopSequences,
|
||||
seed,
|
||||
- ...providerMetadata == null ? void 0 : providerMetadata[this.providerOptionsName],
|
||||
reasoning_effort: (_d = (_b = providerMetadata == null ? void 0 : providerMetadata[this.providerOptionsName]) == null ? void 0 : _b.reasoningEffort) != null ? _d : (_c = providerMetadata == null ? void 0 : providerMetadata["openai-compatible"]) == null ? void 0 : _c.reasoningEffort,
|
||||
+ ...providerMetadata == null ? void 0 : providerMetadata[this.providerOptionsName],
|
||||
// messages:
|
||||
messages: convertToOpenAICompatibleChatMessages(prompt)
|
||||
};
|
||||
@@ -510,7 +510,7 @@ var OpenAICompatibleChatLanguageModel = class {
|
||||
...args,
|
||||
stream: true,
|
||||
// only include stream_options when in strict compatibility mode:
|
||||
- stream_options: this.config.includeUsage ? { include_usage: true } : void 0
|
||||
+ ...(this.config.includeUsage ? { stream_options: { include_usage: true } } : {})
|
||||
};
|
||||
const metadataExtractor = (_a = this.config.metadataExtractor) == null ? void 0 : _a.createStreamExtractor();
|
||||
const { responseHeaders, value: response } = await (0, import_provider_utils2.postJsonToApi)({
|
||||
@@ -1324,10 +1324,11 @@ function createOpenAICompatible(options) {
|
||||
headers: getHeaders,
|
||||
fetch: options.fetch
|
||||
});
|
||||
- const createLanguageModel = (modelId, settings = {}) => createChatModel(modelId, settings);
|
||||
- const createChatModel = (modelId, settings = {}) => new OpenAICompatibleChatLanguageModel(modelId, settings, {
|
||||
+ const createLanguageModel = (modelId, settings = {}, config = {}) => createChatModel(modelId, settings, config);
|
||||
+ const createChatModel = (modelId, settings = {}, config = {}) => new OpenAICompatibleChatLanguageModel(modelId, settings, {
|
||||
...getCommonModelConfig("chat"),
|
||||
- defaultObjectGenerationMode: "tool"
|
||||
+ defaultObjectGenerationMode: "tool",
|
||||
+ ...config
|
||||
});
|
||||
const createCompletionModel = (modelId, settings = {}) => new OpenAICompatibleCompletionLanguageModel(
|
||||
modelId,
|
||||
@@ -1344,7 +1345,7 @@ function createOpenAICompatible(options) {
|
||||
settings,
|
||||
getCommonModelConfig("image")
|
||||
);
|
||||
- const provider = (modelId, settings) => createLanguageModel(modelId, settings);
|
||||
+ const provider = (modelId, settings, config) => createLanguageModel(modelId, settings, config);
|
||||
provider.languageModel = createLanguageModel;
|
||||
provider.chatModel = createChatModel;
|
||||
provider.completionModel = createCompletionModel;
|
||||
diff --git a/dist/index.mjs b/dist/index.mjs
|
||||
index 6446ad8d3a96c798bea3a17c1802810139d24143..7bb81eb126992cc64453134cc2581c2314c022c1 100644
|
||||
--- a/dist/index.mjs
|
||||
+++ b/dist/index.mjs
|
||||
@@ -305,8 +305,8 @@ var OpenAICompatibleChatLanguageModel = class {
|
||||
} : { type: "json_object" } : void 0,
|
||||
stop: stopSequences,
|
||||
seed,
|
||||
- ...providerMetadata == null ? void 0 : providerMetadata[this.providerOptionsName],
|
||||
reasoning_effort: (_d = (_b = providerMetadata == null ? void 0 : providerMetadata[this.providerOptionsName]) == null ? void 0 : _b.reasoningEffort) != null ? _d : (_c = providerMetadata == null ? void 0 : providerMetadata["openai-compatible"]) == null ? void 0 : _c.reasoningEffort,
|
||||
+ ...providerMetadata == null ? void 0 : providerMetadata[this.providerOptionsName],
|
||||
// messages:
|
||||
messages: convertToOpenAICompatibleChatMessages(prompt)
|
||||
};
|
||||
@@ -494,7 +494,7 @@ var OpenAICompatibleChatLanguageModel = class {
|
||||
...args,
|
||||
stream: true,
|
||||
// only include stream_options when in strict compatibility mode:
|
||||
- stream_options: this.config.includeUsage ? { include_usage: true } : void 0
|
||||
+ ...(this.config.includeUsage ? { stream_options: { include_usage: true } } : {})
|
||||
};
|
||||
const metadataExtractor = (_a = this.config.metadataExtractor) == null ? void 0 : _a.createStreamExtractor();
|
||||
const { responseHeaders, value: response } = await postJsonToApi({
|
||||
@@ -1331,10 +1331,11 @@ function createOpenAICompatible(options) {
|
||||
headers: getHeaders,
|
||||
fetch: options.fetch
|
||||
});
|
||||
- const createLanguageModel = (modelId, settings = {}) => createChatModel(modelId, settings);
|
||||
- const createChatModel = (modelId, settings = {}) => new OpenAICompatibleChatLanguageModel(modelId, settings, {
|
||||
+ const createLanguageModel = (modelId, settings = {}, config = {}) => createChatModel(modelId, settings, config);
|
||||
+ const createChatModel = (modelId, settings = {}, config = {}) => new OpenAICompatibleChatLanguageModel(modelId, settings, {
|
||||
...getCommonModelConfig("chat"),
|
||||
- defaultObjectGenerationMode: "tool"
|
||||
+ defaultObjectGenerationMode: "tool",
|
||||
+ ...config
|
||||
});
|
||||
const createCompletionModel = (modelId, settings = {}) => new OpenAICompatibleCompletionLanguageModel(
|
||||
modelId,
|
||||
@@ -1351,7 +1352,7 @@ function createOpenAICompatible(options) {
|
||||
settings,
|
||||
getCommonModelConfig("image")
|
||||
);
|
||||
- const provider = (modelId, settings) => createLanguageModel(modelId, settings);
|
||||
+ const provider = (modelId, settings, config) => createLanguageModel(modelId, settings, config);
|
||||
provider.languageModel = createLanguageModel;
|
||||
provider.chatModel = createChatModel;
|
||||
provider.completionModel = createCompletionModel;
|
||||
@ -231,7 +231,9 @@
|
||||
"app-builder-lib@npm:26.0.13": "patch:app-builder-lib@npm%3A26.0.13#~/.yarn/patches/app-builder-lib-npm-26.0.13-a064c9e1d0.patch",
|
||||
"openai@npm:^4.87.3": "patch:openai@npm%3A5.1.0#~/.yarn/patches/openai-npm-5.1.0-0e7b3ccb07.patch",
|
||||
"app-builder-lib@npm:26.0.15": "patch:app-builder-lib@npm%3A26.0.15#~/.yarn/patches/app-builder-lib-npm-26.0.15-360e5b0476.patch",
|
||||
"@langchain/core@npm:^0.3.26": "patch:@langchain/core@npm%3A0.3.44#~/.yarn/patches/@langchain-core-npm-0.3.44-41d5c3cb0a.patch"
|
||||
"@langchain/core@npm:^0.3.26": "patch:@langchain/core@npm%3A0.3.44#~/.yarn/patches/@langchain-core-npm-0.3.44-41d5c3cb0a.patch",
|
||||
"@ai-sdk/openai-compatible@npm:0.2.14": "patch:@ai-sdk/openai-compatible@npm%3A0.2.14#~/.yarn/patches/@ai-sdk-openai-compatible-npm-0.2.14-bb0a64a4be.patch",
|
||||
"@ai-sdk/google-vertex@npm:2.2.24": "patch:@ai-sdk/google-vertex@npm%3A2.2.24#~/.yarn/patches/@ai-sdk-google-vertex-npm-2.2.24-b89772c4de.patch"
|
||||
},
|
||||
"packageManager": "yarn@4.9.1",
|
||||
"lint-staged": {
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"build": "tsdown",
|
||||
"dev": "tsc -w",
|
||||
"clean": "rm -rf dist"
|
||||
},
|
||||
@ -31,12 +31,13 @@
|
||||
"@ai-sdk/fal": "^0.1.12",
|
||||
"@ai-sdk/fireworks": "^0.2.14",
|
||||
"@ai-sdk/google": "^1.2.19",
|
||||
"@ai-sdk/google-vertex": "^2.2.24",
|
||||
"@ai-sdk/google-vertex": "patch:@ai-sdk/google-vertex@npm%3A2.2.24#~/.yarn/patches/@ai-sdk-google-vertex-npm-2.2.24-b89772c4de.patch",
|
||||
"@ai-sdk/groq": "^1.2.9",
|
||||
"@ai-sdk/mistral": "^1.2.8",
|
||||
"@ai-sdk/openai": "^1.3.22",
|
||||
"@ai-sdk/openai-compatible": "^0.2.14",
|
||||
"@ai-sdk/openai-compatible": "patch:@ai-sdk/openai-compatible@npm%3A0.2.14#~/.yarn/patches/@ai-sdk-openai-compatible-npm-0.2.14-bb0a64a4be.patch",
|
||||
"@ai-sdk/perplexity": "^1.1.9",
|
||||
"@ai-sdk/provider": "^1.1.3",
|
||||
"@ai-sdk/replicate": "^0.2.8",
|
||||
"@ai-sdk/togetherai": "^0.2.14",
|
||||
"@ai-sdk/vercel": "^0.0.1",
|
||||
@ -108,6 +109,7 @@
|
||||
}
|
||||
},
|
||||
"devDependencies": {
|
||||
"tsdown": "^0.12.9",
|
||||
"typescript": "^5.0.0"
|
||||
},
|
||||
"files": [
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,2 +0,0 @@
|
||||
patchedDependencies:
|
||||
'@ai-sdk/google-vertex': patches/@ai-sdk__google-vertex.patch
|
||||
@ -162,16 +162,8 @@ export default class ModernAiProvider {
|
||||
}
|
||||
|
||||
try {
|
||||
// 合并传入的配置和实例配置
|
||||
const finalConfig: AiSdkMiddlewareConfig = {
|
||||
...middlewareConfig,
|
||||
provider: this.provider,
|
||||
// 工具相关信息从 params 中获取
|
||||
enableTool: !!Object.keys(params.tools || {}).length
|
||||
}
|
||||
|
||||
// 动态构建中间件数组
|
||||
const middlewares = buildAiSdkMiddlewares(finalConfig)
|
||||
const middlewares = buildAiSdkMiddlewares(middlewareConfig)
|
||||
console.log('构建的中间件:', middlewares)
|
||||
|
||||
// 创建带有中间件的执行器
|
||||
@ -179,27 +171,29 @@ export default class ModernAiProvider {
|
||||
// 流式处理 - 使用适配器
|
||||
const adapter = new AiSdkToChunkAdapter(middlewareConfig.onChunk)
|
||||
// 创建MCP Prompt插件
|
||||
const mcpPromptPlugin = createMCPPromptPlugin({
|
||||
enabled: true,
|
||||
createSystemMessage: (systemPrompt, params, context) => {
|
||||
console.log('createSystemMessage_context', context.isRecursiveCall)
|
||||
if (context.modelId.includes('o1-mini') || context.modelId.includes('o1-preview')) {
|
||||
if (context.isRecursiveCall) {
|
||||
if (middlewareConfig.enableTool) {
|
||||
const mcpPromptPlugin = createMCPPromptPlugin({
|
||||
enabled: true,
|
||||
createSystemMessage: (systemPrompt, params, context) => {
|
||||
console.log('createSystemMessage_context', context.isRecursiveCall)
|
||||
if (context.modelId.includes('o1-mini') || context.modelId.includes('o1-preview')) {
|
||||
if (context.isRecursiveCall) {
|
||||
return null
|
||||
}
|
||||
params.messages = [
|
||||
{
|
||||
role: 'assistant',
|
||||
content: systemPrompt
|
||||
},
|
||||
...params.messages
|
||||
]
|
||||
return null
|
||||
}
|
||||
params.messages = [
|
||||
{
|
||||
role: 'assistant',
|
||||
content: systemPrompt
|
||||
},
|
||||
...params.messages
|
||||
]
|
||||
return null
|
||||
return systemPrompt
|
||||
}
|
||||
return systemPrompt
|
||||
}
|
||||
})
|
||||
this.modernExecutor.pluginEngine.use(mcpPromptPlugin)
|
||||
})
|
||||
this.modernExecutor.pluginEngine.use(mcpPromptPlugin)
|
||||
}
|
||||
const streamResult = await this.modernExecutor.streamText(
|
||||
modelId,
|
||||
params,
|
||||
|
||||
@ -18,6 +18,7 @@ export interface AiSdkMiddlewareConfig {
|
||||
model?: Model
|
||||
provider?: Provider
|
||||
enableReasoning?: boolean
|
||||
// 是否开启提示词工具调用
|
||||
enableTool?: boolean
|
||||
enableWebSearch?: boolean
|
||||
mcpTools?: MCPTool[]
|
||||
|
||||
@ -39,9 +39,8 @@ export default function thinkingTimeMiddleware(): LanguageModelV1Middleware {
|
||||
hasThinkingContent = false
|
||||
thinkingStartTime = 0
|
||||
accumulatedThinkingContent = ''
|
||||
} else {
|
||||
controller.enqueue(chunk)
|
||||
}
|
||||
controller.enqueue(chunk)
|
||||
}
|
||||
},
|
||||
flush(controller) {
|
||||
|
||||
@ -11,18 +11,18 @@ const PROVIDER_MAPPING: Record<string, ProviderId> = {
|
||||
}
|
||||
|
||||
export function getAiSdkProviderId(provider: Provider): ProviderId | 'openai-compatible' {
|
||||
const providerType = PROVIDER_MAPPING[provider.type] // 有些第三方需要映射到aicore对应sdk
|
||||
|
||||
if (providerType) {
|
||||
return providerType
|
||||
}
|
||||
|
||||
const providerId = PROVIDER_MAPPING[provider.id]
|
||||
|
||||
if (providerId) {
|
||||
return providerId
|
||||
}
|
||||
|
||||
const providerType = PROVIDER_MAPPING[provider.type] // 有些第三方需要映射到aicore对应sdk
|
||||
|
||||
if (providerType) {
|
||||
return providerType
|
||||
}
|
||||
|
||||
if (AiCore.isSupported(provider.id)) {
|
||||
return provider.id as ProviderId as ProviderId
|
||||
}
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
*/
|
||||
|
||||
import { type CoreMessage, type StreamTextParams } from '@cherrystudio/ai-core'
|
||||
import { aiSdk } from '@cherrystudio/ai-core'
|
||||
import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant'
|
||||
import {
|
||||
isGenerateImageModel,
|
||||
@ -18,18 +17,16 @@ import {
|
||||
isWebSearchModel
|
||||
} from '@renderer/config/models'
|
||||
import { getAssistantSettings, getDefaultModel } from '@renderer/services/AssistantService'
|
||||
import type { Assistant, MCPTool, MCPToolInputSchema, MCPToolResponse, Message, Model } from '@renderer/types'
|
||||
import type { Assistant, MCPTool, Message, Model } from '@renderer/types'
|
||||
import { FileTypes } from '@renderer/types'
|
||||
import { callMCPTool } from '@renderer/utils/mcp-tools'
|
||||
import { findFileBlocks, findImageBlocks, getMainTextContent } from '@renderer/utils/messageUtils/find'
|
||||
import { buildSystemPrompt } from '@renderer/utils/prompt'
|
||||
import { defaultTimeout } from '@shared/config/constant'
|
||||
|
||||
// import { jsonSchemaToZod } from 'json-schema-to-zod'
|
||||
import { jsonSchema } from 'ai'
|
||||
import { setupToolsConfig } from './utils/mcp'
|
||||
import { buildProviderOptions } from './utils/options'
|
||||
|
||||
import { buildProviderOptions } from './utils/reasoning'
|
||||
|
||||
const { tool } = aiSdk
|
||||
/**
|
||||
* 获取温度参数
|
||||
*/
|
||||
@ -190,7 +187,6 @@ export async function buildStreamTextParams(
|
||||
assistant: Assistant,
|
||||
options: {
|
||||
mcpTools?: MCPTool[]
|
||||
// FIXME: 上游没传
|
||||
enableTools?: boolean
|
||||
requestOptions?: {
|
||||
signal?: AbortSignal
|
||||
@ -199,7 +195,7 @@ export async function buildStreamTextParams(
|
||||
}
|
||||
} = {}
|
||||
): Promise<{ params: StreamTextParams; modelId: string }> {
|
||||
const { mcpTools } = options
|
||||
const { mcpTools, enableTools } = options
|
||||
|
||||
const model = assistant.model || getDefaultModel()
|
||||
|
||||
@ -221,11 +217,11 @@ export async function buildStreamTextParams(
|
||||
(isSupportedDisableGenerationModel(model) ? assistant.enableGenerateImage || false : true)
|
||||
|
||||
// 构建系统提示
|
||||
let systemPrompt = assistant.prompt || ''
|
||||
// TODO:根据调用类型判断是否添加systemPrompt
|
||||
if (mcpTools && mcpTools.length > 0 && assistant.settings?.toolUseMode === 'prompt') {
|
||||
systemPrompt = await buildSystemPromptWithTools(systemPrompt, mcpTools, assistant)
|
||||
}
|
||||
const { tools } = setupToolsConfig({
|
||||
mcpTools,
|
||||
model,
|
||||
enableToolUse: enableTools
|
||||
})
|
||||
|
||||
// 构建真正的 providerOptions
|
||||
const providerOptions = buildProviderOptions(assistant, model, {
|
||||
@ -240,22 +236,14 @@ export async function buildStreamTextParams(
|
||||
maxTokens: maxTokens || DEFAULT_MAX_TOKENS,
|
||||
temperature: getTemperature(assistant, model),
|
||||
topP: getTopP(assistant, model),
|
||||
system: systemPrompt || undefined,
|
||||
system: assistant.prompt || '',
|
||||
abortSignal: options.requestOptions?.signal,
|
||||
headers: options.requestOptions?.headers,
|
||||
providerOptions,
|
||||
tools,
|
||||
maxSteps: 10
|
||||
}
|
||||
|
||||
const tools = mcpTools ? convertMcpToolsToAiSdkTools(mcpTools) : {}
|
||||
console.log('tools', tools)
|
||||
console.log('enableTools', assistant?.mcpServers?.length)
|
||||
// console.log('tools.length > 0', tools.length > 0)
|
||||
// 添加工具(如果启用且有工具)
|
||||
if (!!assistant?.mcpServers?.length && Object.keys(tools).length > 0) {
|
||||
params.tools = tools
|
||||
}
|
||||
|
||||
return { params, modelId: model.id }
|
||||
}
|
||||
|
||||
@ -273,76 +261,3 @@ export async function buildGenerateTextParams(
|
||||
// 复用流式参数的构建逻辑
|
||||
return await buildStreamTextParams(messages, assistant, options)
|
||||
}
|
||||
|
||||
/**
|
||||
* 将 MCPToolInputSchema 转换为 JSONSchema7 格式
|
||||
*/
|
||||
function convertMcpSchemaToJsonSchema7(schema: MCPToolInputSchema): any {
|
||||
// 创建符合 JSONSchema7 的对象
|
||||
const jsonSchema7: Record<string, any> = {
|
||||
type: 'object',
|
||||
properties: schema.properties || {},
|
||||
required: schema.required || []
|
||||
}
|
||||
|
||||
// 如果有 description,添加它
|
||||
if (schema.description) {
|
||||
jsonSchema7.description = schema.description
|
||||
}
|
||||
|
||||
// 如果有 title,添加它
|
||||
if (schema.title) {
|
||||
jsonSchema7.title = schema.title
|
||||
}
|
||||
|
||||
return jsonSchema7
|
||||
}
|
||||
|
||||
/**
|
||||
* 将 MCPTool 转换为 AI SDK 工具格式
|
||||
*/
|
||||
export function convertMcpToolsToAiSdkTools(mcpTools: MCPTool[]): Record<string, any> {
|
||||
const tools: Record<string, any> = {}
|
||||
|
||||
for (const mcpTool of mcpTools) {
|
||||
console.log('mcpTool', mcpTool.inputSchema)
|
||||
tools[mcpTool.name] = tool({
|
||||
description: mcpTool.description || `Tool from ${mcpTool.serverName}`,
|
||||
parameters: jsonSchema<Record<string, object>>(convertMcpSchemaToJsonSchema7(mcpTool.inputSchema)),
|
||||
execute: async (params) => {
|
||||
console.log('execute_params', params)
|
||||
// 创建适配的 MCPToolResponse 对象
|
||||
const toolResponse: MCPToolResponse = {
|
||||
id: `tool_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
|
||||
tool: mcpTool,
|
||||
arguments: params,
|
||||
status: 'invoking',
|
||||
toolCallId: `call_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`
|
||||
}
|
||||
|
||||
try {
|
||||
// 复用现有的 callMCPTool 函数
|
||||
const result = await callMCPTool(toolResponse)
|
||||
|
||||
// 返回结果,AI SDK 会处理序列化
|
||||
if (result.isError) {
|
||||
throw new Error(result.content?.[0]?.text || 'Tool execution failed')
|
||||
}
|
||||
console.log('result', result)
|
||||
// 返回工具执行结果
|
||||
return {
|
||||
success: true,
|
||||
data: result
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`MCP Tool execution failed: ${mcpTool.name}`, error)
|
||||
throw new Error(
|
||||
`Tool ${mcpTool.name} execution failed: ${error instanceof Error ? error.message : String(error)}`
|
||||
)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return tools
|
||||
}
|
||||
|
||||
88
src/renderer/src/aiCore/utils/mcp.ts
Normal file
88
src/renderer/src/aiCore/utils/mcp.ts
Normal file
@ -0,0 +1,88 @@
|
||||
import { aiSdk, Tool } from '@cherrystudio/ai-core'
|
||||
import { SYSTEM_PROMPT_THRESHOLD } from '@renderer/config/constant'
|
||||
import { isFunctionCallingModel } from '@renderer/config/models'
|
||||
import { MCPCallToolResponse, MCPTool, MCPToolResponse, Model } from '@renderer/types'
|
||||
import { callMCPTool } from '@renderer/utils/mcp-tools'
|
||||
import { JSONSchema7 } from 'json-schema'
|
||||
|
||||
type ToolCallResult = {
|
||||
success: boolean
|
||||
data: MCPCallToolResponse
|
||||
}
|
||||
|
||||
type AiSdkTool = Tool<any, ToolCallResult>
|
||||
|
||||
// Setup tools configuration based on provided parameters
|
||||
export function setupToolsConfig(params: { mcpTools?: MCPTool[]; model: Model; enableToolUse?: boolean }): {
|
||||
tools: Record<string, AiSdkTool>
|
||||
useSystemPromptForTools?: boolean
|
||||
} {
|
||||
const { mcpTools, model, enableToolUse } = params
|
||||
|
||||
let tools: Record<string, AiSdkTool> = {}
|
||||
|
||||
if (!mcpTools?.length) {
|
||||
return { tools }
|
||||
}
|
||||
|
||||
tools = convertMcpToolsToAiSdkTools(mcpTools)
|
||||
|
||||
if (mcpTools.length > SYSTEM_PROMPT_THRESHOLD) {
|
||||
return { tools, useSystemPromptForTools: true }
|
||||
}
|
||||
|
||||
if (isFunctionCallingModel(model) && enableToolUse) {
|
||||
return { tools, useSystemPromptForTools: false }
|
||||
}
|
||||
|
||||
return { tools, useSystemPromptForTools: true }
|
||||
}
|
||||
|
||||
/**
|
||||
* 将 MCPTool 转换为 AI SDK 工具格式
|
||||
*/
|
||||
export function convertMcpToolsToAiSdkTools(mcpTools: MCPTool[]): Record<string, Tool<any, ToolCallResult>> {
|
||||
const tools: Record<string, Tool<any, ToolCallResult>> = {}
|
||||
|
||||
for (const mcpTool of mcpTools) {
|
||||
console.log('mcpTool', mcpTool.inputSchema)
|
||||
tools[mcpTool.name] = aiSdk.tool<any, ToolCallResult>({
|
||||
description: mcpTool.description || `Tool from ${mcpTool.serverName}`,
|
||||
parameters: aiSdk.jsonSchema(mcpTool.inputSchema as JSONSchema7),
|
||||
execute: async (params): Promise<ToolCallResult> => {
|
||||
console.log('execute_params', params)
|
||||
// 创建适配的 MCPToolResponse 对象
|
||||
const toolResponse: MCPToolResponse = {
|
||||
id: `tool_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
|
||||
tool: mcpTool,
|
||||
arguments: params,
|
||||
status: 'invoking',
|
||||
toolCallId: `call_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`
|
||||
}
|
||||
|
||||
try {
|
||||
// 复用现有的 callMCPTool 函数
|
||||
const result = await callMCPTool(toolResponse)
|
||||
|
||||
// 返回结果,AI SDK 会处理序列化
|
||||
if (result.isError) {
|
||||
throw new Error(result.content?.[0]?.text || 'Tool execution failed')
|
||||
}
|
||||
console.log('result', result)
|
||||
// 返回工具执行结果
|
||||
return {
|
||||
success: true,
|
||||
data: result
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`MCP Tool execution failed: ${mcpTool.name}`, error)
|
||||
throw new Error(
|
||||
`Tool ${mcpTool.name} execution failed: ${error instanceof Error ? error.message : String(error)}`
|
||||
)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return tools
|
||||
}
|
||||
203
src/renderer/src/aiCore/utils/options.ts
Normal file
203
src/renderer/src/aiCore/utils/options.ts
Normal file
@ -0,0 +1,203 @@
|
||||
import { getProviderByModel } from '@renderer/services/AssistantService'
|
||||
import { Assistant, Model } from '@renderer/types'
|
||||
|
||||
import { getAiSdkProviderId } from '../provider/factory'
|
||||
import {
|
||||
getAnthropicReasoningParams,
|
||||
getCustomParameters,
|
||||
getGeminiReasoningParams,
|
||||
getOpenAIReasoningParams,
|
||||
getReasoningEffort
|
||||
} from './reasoning'
|
||||
|
||||
/**
|
||||
* 构建 AI SDK 的 providerOptions
|
||||
* 按 provider 类型分离,保持类型安全
|
||||
* 返回格式:{ 'providerId': providerOptions }
|
||||
*/
|
||||
export function buildProviderOptions(
|
||||
assistant: Assistant,
|
||||
model: Model,
|
||||
capabilities: {
|
||||
enableReasoning: boolean
|
||||
enableWebSearch: boolean
|
||||
enableGenerateImage: boolean
|
||||
}
|
||||
): Record<string, any> {
|
||||
const provider = getProviderByModel(model)
|
||||
const providerId = getAiSdkProviderId(provider)
|
||||
|
||||
// 构建 provider 特定的选项
|
||||
let providerSpecificOptions: Record<string, any> = {}
|
||||
|
||||
// 根据 provider 类型分离构建逻辑
|
||||
switch (provider.type) {
|
||||
case 'openai-response':
|
||||
case 'azure-openai':
|
||||
providerSpecificOptions = buildOpenAIProviderOptions(assistant, model, capabilities)
|
||||
break
|
||||
|
||||
case 'anthropic':
|
||||
providerSpecificOptions = buildAnthropicProviderOptions(assistant, model, capabilities)
|
||||
break
|
||||
|
||||
case 'gemini':
|
||||
case 'vertexai':
|
||||
providerSpecificOptions = buildGeminiProviderOptions(assistant, model, capabilities)
|
||||
break
|
||||
|
||||
default:
|
||||
// 对于其他 provider,使用通用的构建逻辑
|
||||
providerSpecificOptions = buildGenericProviderOptions(assistant, model, capabilities)
|
||||
break
|
||||
}
|
||||
|
||||
// 合并自定义参数到 provider 特定的选项中
|
||||
providerSpecificOptions = {
|
||||
...providerSpecificOptions,
|
||||
...getCustomParameters(assistant)
|
||||
}
|
||||
|
||||
// 返回 AI Core SDK 要求的格式:{ 'providerId': providerOptions }
|
||||
return {
|
||||
[providerId]: providerSpecificOptions
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建 OpenAI 特定的 providerOptions
|
||||
*/
|
||||
function buildOpenAIProviderOptions(
|
||||
assistant: Assistant,
|
||||
model: Model,
|
||||
capabilities: {
|
||||
enableReasoning: boolean
|
||||
enableWebSearch: boolean
|
||||
enableGenerateImage: boolean
|
||||
}
|
||||
): Record<string, any> {
|
||||
const { enableReasoning, enableWebSearch, enableGenerateImage } = capabilities
|
||||
let providerOptions: Record<string, any> = {}
|
||||
|
||||
// OpenAI 推理参数
|
||||
if (enableReasoning) {
|
||||
const reasoningParams = getOpenAIReasoningParams(assistant, model)
|
||||
providerOptions = {
|
||||
...providerOptions,
|
||||
...reasoningParams
|
||||
}
|
||||
}
|
||||
|
||||
// Web 搜索和图像生成暂时使用通用格式
|
||||
if (enableWebSearch) {
|
||||
providerOptions.webSearch = { enabled: true }
|
||||
}
|
||||
|
||||
if (enableGenerateImage) {
|
||||
providerOptions.generateImage = { enabled: true }
|
||||
}
|
||||
|
||||
return providerOptions
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建 Anthropic 特定的 providerOptions
|
||||
*/
|
||||
function buildAnthropicProviderOptions(
|
||||
assistant: Assistant,
|
||||
model: Model,
|
||||
capabilities: {
|
||||
enableReasoning: boolean
|
||||
enableWebSearch: boolean
|
||||
enableGenerateImage: boolean
|
||||
}
|
||||
): Record<string, any> {
|
||||
const { enableReasoning, enableWebSearch, enableGenerateImage } = capabilities
|
||||
let providerOptions: Record<string, any> = {}
|
||||
|
||||
// Anthropic 推理参数
|
||||
if (enableReasoning) {
|
||||
const reasoningParams = getAnthropicReasoningParams(assistant, model)
|
||||
providerOptions = {
|
||||
...providerOptions,
|
||||
...reasoningParams
|
||||
}
|
||||
}
|
||||
|
||||
if (enableWebSearch) {
|
||||
providerOptions.webSearch = { enabled: true }
|
||||
}
|
||||
|
||||
if (enableGenerateImage) {
|
||||
providerOptions.generateImage = { enabled: true }
|
||||
}
|
||||
|
||||
return providerOptions
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建 Gemini 特定的 providerOptions
|
||||
*/
|
||||
function buildGeminiProviderOptions(
|
||||
assistant: Assistant,
|
||||
model: Model,
|
||||
capabilities: {
|
||||
enableReasoning: boolean
|
||||
enableWebSearch: boolean
|
||||
enableGenerateImage: boolean
|
||||
}
|
||||
): Record<string, any> {
|
||||
const { enableReasoning, enableWebSearch, enableGenerateImage } = capabilities
|
||||
const providerOptions: Record<string, any> = {}
|
||||
|
||||
// Gemini 推理参数
|
||||
if (enableReasoning) {
|
||||
const reasoningParams = getGeminiReasoningParams(assistant, model)
|
||||
Object.assign(providerOptions, reasoningParams)
|
||||
}
|
||||
|
||||
if (enableWebSearch) {
|
||||
providerOptions.webSearch = { enabled: true }
|
||||
}
|
||||
|
||||
if (enableGenerateImage) {
|
||||
providerOptions.generateImage = { enabled: true }
|
||||
}
|
||||
|
||||
return providerOptions
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建通用的 providerOptions(用于其他 provider)
|
||||
*/
|
||||
function buildGenericProviderOptions(
|
||||
assistant: Assistant,
|
||||
model: Model,
|
||||
capabilities: {
|
||||
enableReasoning: boolean
|
||||
enableWebSearch: boolean
|
||||
enableGenerateImage: boolean
|
||||
}
|
||||
): Record<string, any> {
|
||||
const { enableReasoning, enableWebSearch, enableGenerateImage } = capabilities
|
||||
let providerOptions: Record<string, any> = {}
|
||||
|
||||
// 使用原有的通用推理逻辑
|
||||
if (enableReasoning) {
|
||||
const reasoningParams = getReasoningEffort(assistant, model)
|
||||
providerOptions = {
|
||||
...providerOptions,
|
||||
...reasoningParams
|
||||
}
|
||||
}
|
||||
|
||||
if (enableWebSearch) {
|
||||
providerOptions.webSearch = { enabled: true }
|
||||
}
|
||||
|
||||
if (enableGenerateImage) {
|
||||
providerOptions.generateImage = { enabled: true }
|
||||
}
|
||||
|
||||
return providerOptions
|
||||
}
|
||||
@ -17,8 +17,6 @@ import { getAssistantSettings, getProviderByModel } from '@renderer/services/Ass
|
||||
import { Assistant, EFFORT_RATIO, Model } from '@renderer/types'
|
||||
import { ReasoningEffortOptionalParams } from '@renderer/types/sdk'
|
||||
|
||||
import { getAiSdkProviderId } from '../provider/factory'
|
||||
|
||||
export function getReasoningEffort(assistant: Assistant, model: Model): ReasoningEffortOptionalParams {
|
||||
const provider = getProviderByModel(model)
|
||||
if (provider.id === 'groq') {
|
||||
@ -138,192 +136,11 @@ export function getReasoningEffort(assistant: Assistant, model: Model): Reasonin
|
||||
return {}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建 AI SDK 的 providerOptions
|
||||
* 按 provider 类型分离,保持类型安全
|
||||
* 返回格式:{ 'providerId': providerOptions }
|
||||
*/
|
||||
export function buildProviderOptions(
|
||||
assistant: Assistant,
|
||||
model: Model,
|
||||
capabilities: {
|
||||
enableReasoning: boolean
|
||||
enableWebSearch: boolean
|
||||
enableGenerateImage: boolean
|
||||
}
|
||||
): Record<string, any> {
|
||||
const provider = getProviderByModel(model)
|
||||
const providerId = getAiSdkProviderId(provider)
|
||||
|
||||
// 构建 provider 特定的选项
|
||||
let providerSpecificOptions: Record<string, any> = {}
|
||||
|
||||
// 根据 provider 类型分离构建逻辑
|
||||
switch (provider.type) {
|
||||
case 'openai':
|
||||
case 'azure-openai':
|
||||
providerSpecificOptions = buildOpenAIProviderOptions(assistant, model, capabilities)
|
||||
break
|
||||
|
||||
case 'anthropic':
|
||||
providerSpecificOptions = buildAnthropicProviderOptions(assistant, model, capabilities)
|
||||
break
|
||||
|
||||
case 'gemini':
|
||||
case 'vertexai':
|
||||
providerSpecificOptions = buildGeminiProviderOptions(assistant, model, capabilities)
|
||||
break
|
||||
|
||||
default:
|
||||
// 对于其他 provider,使用通用的构建逻辑
|
||||
providerSpecificOptions = buildGenericProviderOptions(assistant, model, capabilities)
|
||||
break
|
||||
}
|
||||
|
||||
// 合并自定义参数到 provider 特定的选项中
|
||||
const customParameters = getCustomParameters(assistant)
|
||||
Object.assign(providerSpecificOptions, customParameters)
|
||||
|
||||
// 返回 AI Core SDK 要求的格式:{ 'providerId': providerOptions }
|
||||
return {
|
||||
[providerId]: providerSpecificOptions
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建 OpenAI 特定的 providerOptions
|
||||
*/
|
||||
function buildOpenAIProviderOptions(
|
||||
assistant: Assistant,
|
||||
model: Model,
|
||||
capabilities: {
|
||||
enableReasoning: boolean
|
||||
enableWebSearch: boolean
|
||||
enableGenerateImage: boolean
|
||||
}
|
||||
): Record<string, any> {
|
||||
const { enableReasoning, enableWebSearch, enableGenerateImage } = capabilities
|
||||
const providerOptions: Record<string, any> = {}
|
||||
|
||||
// OpenAI 推理参数
|
||||
if (enableReasoning) {
|
||||
const reasoningParams = getOpenAIReasoningParams(assistant, model)
|
||||
Object.assign(providerOptions, reasoningParams)
|
||||
}
|
||||
|
||||
// Web 搜索和图像生成暂时使用通用格式
|
||||
if (enableWebSearch) {
|
||||
providerOptions.webSearch = { enabled: true }
|
||||
}
|
||||
|
||||
if (enableGenerateImage) {
|
||||
providerOptions.generateImage = { enabled: true }
|
||||
}
|
||||
|
||||
return providerOptions
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建 Anthropic 特定的 providerOptions
|
||||
*/
|
||||
function buildAnthropicProviderOptions(
|
||||
assistant: Assistant,
|
||||
model: Model,
|
||||
capabilities: {
|
||||
enableReasoning: boolean
|
||||
enableWebSearch: boolean
|
||||
enableGenerateImage: boolean
|
||||
}
|
||||
): Record<string, any> {
|
||||
const { enableReasoning, enableWebSearch, enableGenerateImage } = capabilities
|
||||
const providerOptions: Record<string, any> = {}
|
||||
|
||||
// Anthropic 推理参数
|
||||
if (enableReasoning) {
|
||||
const reasoningParams = getAnthropicReasoningParams(assistant, model)
|
||||
Object.assign(providerOptions, reasoningParams)
|
||||
}
|
||||
|
||||
if (enableWebSearch) {
|
||||
providerOptions.webSearch = { enabled: true }
|
||||
}
|
||||
|
||||
if (enableGenerateImage) {
|
||||
providerOptions.generateImage = { enabled: true }
|
||||
}
|
||||
|
||||
return providerOptions
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建 Gemini 特定的 providerOptions
|
||||
*/
|
||||
function buildGeminiProviderOptions(
|
||||
assistant: Assistant,
|
||||
model: Model,
|
||||
capabilities: {
|
||||
enableReasoning: boolean
|
||||
enableWebSearch: boolean
|
||||
enableGenerateImage: boolean
|
||||
}
|
||||
): Record<string, any> {
|
||||
const { enableReasoning, enableWebSearch, enableGenerateImage } = capabilities
|
||||
const providerOptions: Record<string, any> = {}
|
||||
|
||||
// Gemini 推理参数
|
||||
if (enableReasoning) {
|
||||
const reasoningParams = getGeminiReasoningParams(assistant, model)
|
||||
Object.assign(providerOptions, reasoningParams)
|
||||
}
|
||||
|
||||
if (enableWebSearch) {
|
||||
providerOptions.webSearch = { enabled: true }
|
||||
}
|
||||
|
||||
if (enableGenerateImage) {
|
||||
providerOptions.generateImage = { enabled: true }
|
||||
}
|
||||
|
||||
return providerOptions
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建通用的 providerOptions(用于其他 provider)
|
||||
*/
|
||||
function buildGenericProviderOptions(
|
||||
assistant: Assistant,
|
||||
model: Model,
|
||||
capabilities: {
|
||||
enableReasoning: boolean
|
||||
enableWebSearch: boolean
|
||||
enableGenerateImage: boolean
|
||||
}
|
||||
): Record<string, any> {
|
||||
const { enableReasoning, enableWebSearch, enableGenerateImage } = capabilities
|
||||
const providerOptions: Record<string, any> = {}
|
||||
|
||||
// 使用原有的通用推理逻辑
|
||||
if (enableReasoning) {
|
||||
const reasoningParams = getReasoningEffort(assistant, model)
|
||||
Object.assign(providerOptions, reasoningParams)
|
||||
}
|
||||
|
||||
if (enableWebSearch) {
|
||||
providerOptions.webSearch = { enabled: true }
|
||||
}
|
||||
|
||||
if (enableGenerateImage) {
|
||||
providerOptions.generateImage = { enabled: true }
|
||||
}
|
||||
|
||||
return providerOptions
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 OpenAI 推理参数
|
||||
* 从 OpenAIResponseAPIClient 和 OpenAIAPIClient 中提取的逻辑
|
||||
*/
|
||||
function getOpenAIReasoningParams(assistant: Assistant, model: Model): Record<string, any> {
|
||||
export function getOpenAIReasoningParams(assistant: Assistant, model: Model): Record<string, any> {
|
||||
if (!isReasoningModel(model)) {
|
||||
return {}
|
||||
}
|
||||
@ -348,7 +165,7 @@ function getOpenAIReasoningParams(assistant: Assistant, model: Model): Record<st
|
||||
* 获取 Anthropic 推理参数
|
||||
* 从 AnthropicAPIClient 中提取的逻辑
|
||||
*/
|
||||
function getAnthropicReasoningParams(assistant: Assistant, model: Model): Record<string, any> {
|
||||
export function getAnthropicReasoningParams(assistant: Assistant, model: Model): Record<string, any> {
|
||||
if (!isReasoningModel(model)) {
|
||||
return {}
|
||||
}
|
||||
@ -394,7 +211,7 @@ function getAnthropicReasoningParams(assistant: Assistant, model: Model): Record
|
||||
* 获取 Gemini 推理参数
|
||||
* 从 GeminiAPIClient 中提取的逻辑
|
||||
*/
|
||||
function getGeminiReasoningParams(assistant: Assistant, model: Model): Record<string, any> {
|
||||
export function getGeminiReasoningParams(assistant: Assistant, model: Model): Record<string, any> {
|
||||
if (!isReasoningModel(model)) {
|
||||
return {}
|
||||
}
|
||||
@ -440,7 +257,7 @@ function getGeminiReasoningParams(assistant: Assistant, model: Model): Record<st
|
||||
* 获取自定义参数
|
||||
* 从 assistant 设置中提取自定义参数
|
||||
*/
|
||||
function getCustomParameters(assistant: Assistant): Record<string, any> {
|
||||
export function getCustomParameters(assistant: Assistant): Record<string, any> {
|
||||
return (
|
||||
assistant?.settings?.customParameters?.reduce((acc, param) => {
|
||||
if (!param.name?.trim()) {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
export const DEFAULT_TEMPERATURE = 1.0
|
||||
export const DEFAULT_CONTEXTCOUNT = 5
|
||||
export const DEFAULT_MAX_TOKENS = 4096
|
||||
export const SYSTEM_PROMPT_THRESHOLD = 128
|
||||
export const DEFAULT_KNOWLEDGE_DOCUMENT_COUNT = 6
|
||||
export const DEFAULT_KNOWLEDGE_THRESHOLD = 0.0
|
||||
|
||||
|
||||
@ -20,6 +20,7 @@ import { type Chunk, ChunkType } from '@renderer/types/chunk'
|
||||
import { Message } from '@renderer/types/newMessage'
|
||||
import { SdkModel } from '@renderer/types/sdk'
|
||||
import { removeSpecialCharactersForTopicName } from '@renderer/utils'
|
||||
import { isEnabledToolUse } from '@renderer/utils/mcp-tools'
|
||||
import { findFileBlocks, getMainTextContent } from '@renderer/utils/messageUtils/find'
|
||||
import { isEmpty, takeRight } from 'lodash'
|
||||
|
||||
@ -302,6 +303,7 @@ export async function fetchChatCompletion({
|
||||
// 使用 transformParameters 模块构建参数
|
||||
const { params: aiSdkParams, modelId } = await buildStreamTextParams(messages, assistant, {
|
||||
mcpTools: mcpTools,
|
||||
enableTools: isEnabledToolUse(assistant),
|
||||
requestOptions: options
|
||||
})
|
||||
|
||||
@ -311,6 +313,7 @@ export async function fetchChatCompletion({
|
||||
model: assistant.model,
|
||||
provider: provider,
|
||||
enableReasoning: assistant.settings?.reasoning_effort !== undefined,
|
||||
enableTool: assistant.settings?.toolUseMode === 'prompt',
|
||||
mcpTools
|
||||
}
|
||||
|
||||
|
||||
492
yarn.lock
492
yarn.lock
@ -190,7 +190,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/google-vertex@npm:^2.2.24":
|
||||
"@ai-sdk/google-vertex@npm:2.2.24":
|
||||
version: 2.2.24
|
||||
resolution: "@ai-sdk/google-vertex@npm:2.2.24"
|
||||
dependencies:
|
||||
@ -205,6 +205,21 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/google-vertex@patch:@ai-sdk/google-vertex@npm%3A2.2.24#~/.yarn/patches/@ai-sdk-google-vertex-npm-2.2.24-b89772c4de.patch":
|
||||
version: 2.2.24
|
||||
resolution: "@ai-sdk/google-vertex@patch:@ai-sdk/google-vertex@npm%3A2.2.24#~/.yarn/patches/@ai-sdk-google-vertex-npm-2.2.24-b89772c4de.patch::version=2.2.24&hash=ec30c6"
|
||||
dependencies:
|
||||
"@ai-sdk/anthropic": "npm:1.2.12"
|
||||
"@ai-sdk/google": "npm:1.2.19"
|
||||
"@ai-sdk/provider": "npm:1.1.3"
|
||||
"@ai-sdk/provider-utils": "npm:2.2.8"
|
||||
google-auth-library: "npm:^9.15.0"
|
||||
peerDependencies:
|
||||
zod: ^3.0.0
|
||||
checksum: 10c0/6afbb0557e5c82e09fa9fed5b9cb77e7a4b667023e4dce883524ad5df41607b416a5e1a0487367434909fb60971d956c1bad6350d5d261fafaf7e4ac123ac0bd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/google@npm:1.2.19, @ai-sdk/google@npm:^1.2.19":
|
||||
version: 1.2.19
|
||||
resolution: "@ai-sdk/google@npm:1.2.19"
|
||||
@ -241,7 +256,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/openai-compatible@npm:0.2.14, @ai-sdk/openai-compatible@npm:^0.2.14":
|
||||
"@ai-sdk/openai-compatible@npm:0.2.14":
|
||||
version: 0.2.14
|
||||
resolution: "@ai-sdk/openai-compatible@npm:0.2.14"
|
||||
dependencies:
|
||||
@ -253,6 +268,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/openai-compatible@patch:@ai-sdk/openai-compatible@npm%3A0.2.14#~/.yarn/patches/@ai-sdk-openai-compatible-npm-0.2.14-bb0a64a4be.patch":
|
||||
version: 0.2.14
|
||||
resolution: "@ai-sdk/openai-compatible@patch:@ai-sdk/openai-compatible@npm%3A0.2.14#~/.yarn/patches/@ai-sdk-openai-compatible-npm-0.2.14-bb0a64a4be.patch::version=0.2.14&hash=f24fda"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:1.1.3"
|
||||
"@ai-sdk/provider-utils": "npm:2.2.8"
|
||||
peerDependencies:
|
||||
zod: ^3.0.0
|
||||
checksum: 10c0/ba49e5fc1434c6fdd8482c82dba98c9775753333c7854300801b3003d503784bfc628acc4abc100e956f72287a14990d65773d3dfab17389d1ff152e749068ab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/openai@npm:1.3.22, @ai-sdk/openai@npm:^1.3.22":
|
||||
version: 1.3.22
|
||||
resolution: "@ai-sdk/openai@npm:1.3.22"
|
||||
@ -368,7 +395,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/provider@npm:1.1.3, @ai-sdk/provider@npm:^1.0.0, @ai-sdk/provider@npm:^1.0.7":
|
||||
"@ai-sdk/provider@npm:1.1.3, @ai-sdk/provider@npm:^1.0.0, @ai-sdk/provider@npm:^1.0.7, @ai-sdk/provider@npm:^1.1.3":
|
||||
version: 1.1.3
|
||||
resolution: "@ai-sdk/provider@npm:1.1.3"
|
||||
dependencies:
|
||||
@ -710,6 +737,19 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/generator@npm:^7.27.5":
|
||||
version: 7.27.5
|
||||
resolution: "@babel/generator@npm:7.27.5"
|
||||
dependencies:
|
||||
"@babel/parser": "npm:^7.27.5"
|
||||
"@babel/types": "npm:^7.27.3"
|
||||
"@jridgewell/gen-mapping": "npm:^0.3.5"
|
||||
"@jridgewell/trace-mapping": "npm:^0.3.25"
|
||||
jsesc: "npm:^3.0.2"
|
||||
checksum: 10c0/8f649ef4cd81765c832bb11de4d6064b035ffebdecde668ba7abee68a7b0bce5c9feabb5dc5bb8aeba5bd9e5c2afa3899d852d2bd9ca77a711ba8c8379f416f0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/helper-compilation-targets@npm:^7.26.5":
|
||||
version: 7.27.0
|
||||
resolution: "@babel/helper-compilation-targets@npm:7.27.0"
|
||||
@ -820,6 +860,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/parser@npm:^7.27.3, @babel/parser@npm:^7.27.5":
|
||||
version: 7.27.7
|
||||
resolution: "@babel/parser@npm:7.27.7"
|
||||
dependencies:
|
||||
"@babel/types": "npm:^7.27.7"
|
||||
bin:
|
||||
parser: ./bin/babel-parser.js
|
||||
checksum: 10c0/f6202faeb873f0b3083022e50a5046fe07266d337c0a3bd80a491f8435ba6d9e383d49725e3dcd666b3b52c0dccb4e0f1f1004915762345f7eeed5ba54ea9fd2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/plugin-transform-arrow-functions@npm:^7.25.9":
|
||||
version: 7.25.9
|
||||
resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.9"
|
||||
@ -893,6 +944,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/types@npm:^7.27.3, @babel/types@npm:^7.27.6, @babel/types@npm:^7.27.7":
|
||||
version: 7.27.7
|
||||
resolution: "@babel/types@npm:7.27.7"
|
||||
dependencies:
|
||||
"@babel/helper-string-parser": "npm:^7.27.1"
|
||||
"@babel/helper-validator-identifier": "npm:^7.27.1"
|
||||
checksum: 10c0/1d1dcb5fa7cfba2b4034a3ab99ba17049bfc4af9e170935575246cdb1cee68b04329a0111506d9ae83fb917c47dbd4394a6db5e32fbd041b7834ffbb17ca086b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@bcoe/v8-coverage@npm:^1.0.2":
|
||||
version: 1.0.2
|
||||
resolution: "@bcoe/v8-coverage@npm:1.0.2"
|
||||
@ -940,12 +1001,13 @@ __metadata:
|
||||
"@ai-sdk/fal": "npm:^0.1.12"
|
||||
"@ai-sdk/fireworks": "npm:^0.2.14"
|
||||
"@ai-sdk/google": "npm:^1.2.19"
|
||||
"@ai-sdk/google-vertex": "npm:^2.2.24"
|
||||
"@ai-sdk/google-vertex": "patch:@ai-sdk/google-vertex@npm%3A2.2.24#~/.yarn/patches/@ai-sdk-google-vertex-npm-2.2.24-b89772c4de.patch"
|
||||
"@ai-sdk/groq": "npm:^1.2.9"
|
||||
"@ai-sdk/mistral": "npm:^1.2.8"
|
||||
"@ai-sdk/openai": "npm:^1.3.22"
|
||||
"@ai-sdk/openai-compatible": "npm:^0.2.14"
|
||||
"@ai-sdk/openai-compatible": "patch:@ai-sdk/openai-compatible@npm%3A0.2.14#~/.yarn/patches/@ai-sdk-openai-compatible-npm-0.2.14-bb0a64a4be.patch"
|
||||
"@ai-sdk/perplexity": "npm:^1.1.9"
|
||||
"@ai-sdk/provider": "npm:^1.1.3"
|
||||
"@ai-sdk/replicate": "npm:^0.2.8"
|
||||
"@ai-sdk/togetherai": "npm:^0.2.14"
|
||||
"@ai-sdk/vercel": "npm:^0.0.1"
|
||||
@ -955,6 +1017,7 @@ __metadata:
|
||||
anthropic-vertex-ai: "npm:^1.0.2"
|
||||
ollama-ai-provider: "npm:^1.2.0"
|
||||
qwen-ai-provider: "npm:^0.1.0"
|
||||
tsdown: "npm:^0.12.9"
|
||||
typescript: "npm:^5.0.0"
|
||||
zhipu-ai-provider: "npm:^0.1.1"
|
||||
peerDependenciesMeta:
|
||||
@ -1897,6 +1960,34 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emnapi/core@npm:^1.4.3":
|
||||
version: 1.4.3
|
||||
resolution: "@emnapi/core@npm:1.4.3"
|
||||
dependencies:
|
||||
"@emnapi/wasi-threads": "npm:1.0.2"
|
||||
tslib: "npm:^2.4.0"
|
||||
checksum: 10c0/e30101d16d37ef3283538a35cad60e22095aff2403fb9226a35330b932eb6740b81364d525537a94eb4fb51355e48ae9b10d779c0dd1cdcd55d71461fe4b45c7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emnapi/runtime@npm:^1.4.3":
|
||||
version: 1.4.3
|
||||
resolution: "@emnapi/runtime@npm:1.4.3"
|
||||
dependencies:
|
||||
tslib: "npm:^2.4.0"
|
||||
checksum: 10c0/3b7ab72d21cb4e034f07df80165265f85f445ef3f581d1bc87b67e5239428baa00200b68a7d5e37a0425c3a78320b541b07f76c5530f6f6f95336a6294ebf30b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emnapi/wasi-threads@npm:1.0.2":
|
||||
version: 1.0.2
|
||||
resolution: "@emnapi/wasi-threads@npm:1.0.2"
|
||||
dependencies:
|
||||
tslib: "npm:^2.4.0"
|
||||
checksum: 10c0/f0621b1fc715221bd2d8332c0ca922617bcd77cdb3050eae50a124eb8923c54fa425d23982dc8f29d505c8798a62d1049bace8b0686098ff9dd82270e06d772e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@emotion/hash@npm:^0.8.0":
|
||||
version: 0.8.0
|
||||
resolution: "@emotion/hash@npm:0.8.0"
|
||||
@ -3573,6 +3664,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@napi-rs/wasm-runtime@npm:^0.2.4":
|
||||
version: 0.2.11
|
||||
resolution: "@napi-rs/wasm-runtime@npm:0.2.11"
|
||||
dependencies:
|
||||
"@emnapi/core": "npm:^1.4.3"
|
||||
"@emnapi/runtime": "npm:^1.4.3"
|
||||
"@tybys/wasm-util": "npm:^0.9.0"
|
||||
checksum: 10c0/049bd14c58b99fbe0967b95e9921c5503df196b59be22948d2155f17652eb305cff6728efd8685338b855da7e476dd2551fbe3a313fc2d810938f0717478441e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@neon-rs/load@npm:^0.0.4":
|
||||
version: 0.0.4
|
||||
resolution: "@neon-rs/load@npm:0.0.4"
|
||||
@ -3707,6 +3809,20 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-project/runtime@npm:0.71.0":
|
||||
version: 0.71.0
|
||||
resolution: "@oxc-project/runtime@npm:0.71.0"
|
||||
checksum: 10c0/37823f241ebb74c902d34c784a1f0d963572812a59129436a9a34c7a8a8ea08a23ec9b13fdff9807482f3715832dd2b96e6d364c038ce91ca05c4d86114464c5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-project/types@npm:0.71.0":
|
||||
version: 0.71.0
|
||||
resolution: "@oxc-project/types@npm:0.71.0"
|
||||
checksum: 10c0/899f3af74f6aaee1ef5611ce78d85867948a5676829b4dce61d4ee6ea75755b574a2cf4671858f1d6015dd7ae66c9aeedb6f89cf61278c319fa0fb2b2abaae89
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@parcel/watcher-android-arm64@npm:2.5.1":
|
||||
version: 2.5.1
|
||||
resolution: "@parcel/watcher-android-arm64@npm:2.5.1"
|
||||
@ -3883,6 +3999,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@quansync/fs@npm:^0.1.1":
|
||||
version: 0.1.3
|
||||
resolution: "@quansync/fs@npm:0.1.3"
|
||||
dependencies:
|
||||
quansync: "npm:^0.2.10"
|
||||
checksum: 10c0/15d9914328d296df6626b6b2d5e9f455f618d5c8ffff09270ca3ce42c1bd21e4a91b53d6c1d857fbcae3be8c07b33ab82a83532870f2c5bf74904fe0ac60a3d1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rc-component/async-validator@npm:^5.0.3":
|
||||
version: 5.0.4
|
||||
resolution: "@rc-component/async-validator@npm:5.0.4"
|
||||
@ -4091,6 +4216,99 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-darwin-arm64@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-darwin-x64@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-freebsd-x64@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
conditions: os=freebsd & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
conditions: os=linux & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-linux-arm64-musl@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-linux-x64-gnu@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-linux-x64-musl@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-wasm32-wasi@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
dependencies:
|
||||
"@napi-rs/wasm-runtime": "npm:^0.2.4"
|
||||
conditions: cpu=wasm32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-win32-ia32-msvc@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-win32-ia32-msvc@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/binding-win32-x64-msvc@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rolldown/pluginutils@npm:1.0.0-beta.9-commit.d91dfb5":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "@rolldown/pluginutils@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
checksum: 10c0/63fa64fdd98a2cc99f21dab5c1819ffec172d2282cbff5dcb1089a84d2bb5c556dc6af503e778058f4a038d1941c0179f677ceddd0e30f024b57c543f21042f0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/rollup-android-arm-eabi@npm:4.40.0":
|
||||
version: 4.40.0
|
||||
resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.0"
|
||||
@ -4705,6 +4923,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@tybys/wasm-util@npm:^0.9.0":
|
||||
version: 0.9.0
|
||||
resolution: "@tybys/wasm-util@npm:0.9.0"
|
||||
dependencies:
|
||||
tslib: "npm:^2.4.0"
|
||||
checksum: 10c0/f9fde5c554455019f33af6c8215f1a1435028803dc2a2825b077d812bed4209a1a64444a4ca0ce2ea7e1175c8d88e2f9173a36a33c199e8a5c671aa31de8242d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/aria-query@npm:^5.0.1":
|
||||
version: 5.0.4
|
||||
resolution: "@types/aria-query@npm:5.0.4"
|
||||
@ -6564,6 +6791,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ansis@npm:^4.0.0, ansis@npm:^4.1.0":
|
||||
version: 4.1.0
|
||||
resolution: "ansis@npm:4.1.0"
|
||||
checksum: 10c0/df62d017a7791babdaf45b93f930d2cfd6d1dab5568b610735c11434c9a5ef8f513740e7cfd80bcbc3530fc8bd892b88f8476f26621efc251230e53cbd1a2c24
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"antd@npm:^5.22.5":
|
||||
version: 5.24.7
|
||||
resolution: "antd@npm:5.24.7"
|
||||
@ -6825,6 +7059,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ast-kit@npm:^2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "ast-kit@npm:2.1.0"
|
||||
dependencies:
|
||||
"@babel/parser": "npm:^7.27.3"
|
||||
pathe: "npm:^2.0.3"
|
||||
checksum: 10c0/67246f34745f40b6a5bee2467a1a00f7f006a051f80d7cda7e3b7fe5f7d7a1f262521b72643fcbffb21d33f36aa59868636229a769b2802355d687815ad7b13d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ast-types@npm:^0.13.4":
|
||||
version: 0.13.4
|
||||
resolution: "ast-types@npm:0.13.4"
|
||||
@ -6980,6 +7224,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"birpc@npm:^2.4.0":
|
||||
version: 2.4.0
|
||||
resolution: "birpc@npm:2.4.0"
|
||||
checksum: 10c0/6ecda217b540189221913f215055baf4f10f264a1a8f0000ef6db3ecb0ccc5e4fde135b5f0719c389f1a593e64af3041404019711225ab31badf23c2a98d7778
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"bl@npm:^1.0.0":
|
||||
version: 1.2.3
|
||||
resolution: "bl@npm:1.2.3"
|
||||
@ -7491,7 +7742,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"chokidar@npm:^4.0.0":
|
||||
"chokidar@npm:^4.0.0, chokidar@npm:^4.0.3":
|
||||
version: 4.0.3
|
||||
resolution: "chokidar@npm:4.0.3"
|
||||
dependencies:
|
||||
@ -8528,6 +8779,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"debug@npm:^4.4.1":
|
||||
version: 4.4.1
|
||||
resolution: "debug@npm:4.4.1"
|
||||
dependencies:
|
||||
ms: "npm:^2.1.3"
|
||||
peerDependenciesMeta:
|
||||
supports-color:
|
||||
optional: true
|
||||
checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"decamelize@npm:1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "decamelize@npm:1.2.0"
|
||||
@ -8717,6 +8980,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"defu@npm:^6.1.4":
|
||||
version: 6.1.4
|
||||
resolution: "defu@npm:6.1.4"
|
||||
checksum: 10c0/2d6cc366262dc0cb8096e429368e44052fdf43ed48e53ad84cc7c9407f890301aa5fcb80d0995abaaf842b3949f154d060be4160f7a46cb2bc2f7726c81526f5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"degenerator@npm:^5.0.0":
|
||||
version: 5.0.1
|
||||
resolution: "degenerator@npm:5.0.1"
|
||||
@ -8843,6 +9113,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"diff@npm:^8.0.2":
|
||||
version: 8.0.2
|
||||
resolution: "diff@npm:8.0.2"
|
||||
checksum: 10c0/abfb387f033e089df3ec3be960205d17b54df8abf0924d982a7ced3a94c557a4e6cbff2e78b121f216b85f466b3d8d041673a386177c311aaea41459286cc9bc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"dingbat-to-unicode@npm:^1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "dingbat-to-unicode@npm:1.0.1"
|
||||
@ -9020,6 +9297,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"dts-resolver@npm:^2.1.1":
|
||||
version: 2.1.1
|
||||
resolution: "dts-resolver@npm:2.1.1"
|
||||
peerDependencies:
|
||||
oxc-resolver: ">=11.0.0"
|
||||
peerDependenciesMeta:
|
||||
oxc-resolver:
|
||||
optional: true
|
||||
checksum: 10c0/bc36d71822d39f23cfe274b6781fae4b1729bd8b0a07e4a011fe243a73c5dbbb30ea067fb0d6248fdfedc29cf4dfc0ff19f0dd38950158444409d109c1c55b7e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"duck@npm:^0.1.12":
|
||||
version: 0.1.12
|
||||
resolution: "duck@npm:0.1.12"
|
||||
@ -9243,6 +9532,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"empathic@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "empathic@npm:2.0.0"
|
||||
checksum: 10c0/7d3b14b04a93b35c47bcc950467ec914fd241cd9acc0269b0ea160f13026ec110f520c90fae64720fde72cc1757b57f3f292fb606617b7fccac1f4d008a76506
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"encodeurl@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "encodeurl@npm:2.0.0"
|
||||
@ -10808,6 +11104,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"get-tsconfig@npm:^4.10.1":
|
||||
version: 4.10.1
|
||||
resolution: "get-tsconfig@npm:4.10.1"
|
||||
dependencies:
|
||||
resolve-pkg-maps: "npm:^1.0.0"
|
||||
checksum: 10c0/7f8e3dabc6a49b747920a800fb88e1952fef871cdf51b79e98db48275a5de6cdaf499c55ee67df5fa6fe7ce65f0063e26de0f2e53049b408c585aa74d39ffa21
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"get-uri@npm:^6.0.1":
|
||||
version: 6.0.4
|
||||
resolution: "get-uri@npm:6.0.4"
|
||||
@ -11286,6 +11591,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"hookable@npm:^5.5.3":
|
||||
version: 5.5.3
|
||||
resolution: "hookable@npm:5.5.3"
|
||||
checksum: 10c0/275f4cc84d27f8d48c5a5cd5685b6c0fea9291be9deea5bff0cfa72856ed566abde1dcd8cb1da0f9a70b4da3d7ec0d60dc3554c4edbba647058cc38816eced3d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"hosted-git-info@npm:^4.1.0":
|
||||
version: 4.1.0
|
||||
resolution: "hosted-git-info@npm:4.1.0"
|
||||
@ -12019,6 +12331,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"jiti@npm:^2.4.2":
|
||||
version: 2.4.2
|
||||
resolution: "jiti@npm:2.4.2"
|
||||
bin:
|
||||
jiti: lib/jiti-cli.mjs
|
||||
checksum: 10c0/4ceac133a08c8faff7eac84aabb917e85e8257f5ad659e843004ce76e981c457c390a220881748ac67ba1b940b9b729b30fb85cbaf6e7989f04b6002c94da331
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"js-base64@npm:^3.7.5":
|
||||
version: 3.7.7
|
||||
resolution: "js-base64@npm:3.7.7"
|
||||
@ -15641,7 +15962,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"quansync@npm:^0.2.8":
|
||||
"quansync@npm:^0.2.10, quansync@npm:^0.2.8":
|
||||
version: 0.2.10
|
||||
resolution: "quansync@npm:0.2.10"
|
||||
checksum: 10c0/f86f1d644f812a3a7c42de79eb401c47a5a67af82a9adff8a8afb159325e03e00f77cebbf42af6340a0bd47bd0c1fbe999e7caf7e1bbb30d7acb00c8729b7530
|
||||
@ -16850,6 +17171,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"resolve-pkg-maps@npm:^1.0.0":
|
||||
version: 1.0.0
|
||||
resolution: "resolve-pkg-maps@npm:1.0.0"
|
||||
checksum: 10c0/fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"responselike@npm:^2.0.0":
|
||||
version: 2.0.1
|
||||
resolution: "responselike@npm:2.0.1"
|
||||
@ -16959,6 +17287,85 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rolldown-plugin-dts@npm:^0.13.12":
|
||||
version: 0.13.12
|
||||
resolution: "rolldown-plugin-dts@npm:0.13.12"
|
||||
dependencies:
|
||||
"@babel/generator": "npm:^7.27.5"
|
||||
"@babel/parser": "npm:^7.27.5"
|
||||
"@babel/types": "npm:^7.27.6"
|
||||
ast-kit: "npm:^2.1.0"
|
||||
birpc: "npm:^2.4.0"
|
||||
debug: "npm:^4.4.1"
|
||||
dts-resolver: "npm:^2.1.1"
|
||||
get-tsconfig: "npm:^4.10.1"
|
||||
peerDependencies:
|
||||
"@typescript/native-preview": ">=7.0.0-dev.20250601.1"
|
||||
rolldown: ^1.0.0-beta.9
|
||||
typescript: ^5.0.0
|
||||
vue-tsc: ~2.2.0
|
||||
peerDependenciesMeta:
|
||||
"@typescript/native-preview":
|
||||
optional: true
|
||||
typescript:
|
||||
optional: true
|
||||
vue-tsc:
|
||||
optional: true
|
||||
checksum: 10c0/811d1bef1649119895aaf7f87f0a23bd73438680d839c9c8331791995184ae4983deee67ed9b21abfc5521f4bda704f3ebbb84fda2259d6789d15d0c4411e36f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rolldown@npm:^1.0.0-beta.19":
|
||||
version: 1.0.0-beta.9-commit.d91dfb5
|
||||
resolution: "rolldown@npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
dependencies:
|
||||
"@oxc-project/runtime": "npm:0.71.0"
|
||||
"@oxc-project/types": "npm:0.71.0"
|
||||
"@rolldown/binding-darwin-arm64": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/binding-darwin-x64": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/binding-freebsd-x64": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/binding-linux-arm64-musl": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/binding-linux-x64-gnu": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/binding-linux-x64-musl": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/binding-wasm32-wasi": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/binding-win32-ia32-msvc": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/binding-win32-x64-msvc": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
"@rolldown/pluginutils": "npm:1.0.0-beta.9-commit.d91dfb5"
|
||||
ansis: "npm:^4.0.0"
|
||||
dependenciesMeta:
|
||||
"@rolldown/binding-darwin-arm64":
|
||||
optional: true
|
||||
"@rolldown/binding-darwin-x64":
|
||||
optional: true
|
||||
"@rolldown/binding-freebsd-x64":
|
||||
optional: true
|
||||
"@rolldown/binding-linux-arm-gnueabihf":
|
||||
optional: true
|
||||
"@rolldown/binding-linux-arm64-gnu":
|
||||
optional: true
|
||||
"@rolldown/binding-linux-arm64-musl":
|
||||
optional: true
|
||||
"@rolldown/binding-linux-x64-gnu":
|
||||
optional: true
|
||||
"@rolldown/binding-linux-x64-musl":
|
||||
optional: true
|
||||
"@rolldown/binding-wasm32-wasi":
|
||||
optional: true
|
||||
"@rolldown/binding-win32-arm64-msvc":
|
||||
optional: true
|
||||
"@rolldown/binding-win32-ia32-msvc":
|
||||
optional: true
|
||||
"@rolldown/binding-win32-x64-msvc":
|
||||
optional: true
|
||||
bin:
|
||||
rolldown: bin/cli.mjs
|
||||
checksum: 10c0/fae589d1e3de6174a00bc02954abc6418fe1df70b109e709c0bc7d95ac51b9d18c478137948dc89283967c1e1e5fb02d3a79c1c448496d14d02ad117d03b761d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rollup-plugin-visualizer@npm:^5.12.0":
|
||||
version: 5.14.0
|
||||
resolution: "rollup-plugin-visualizer@npm:5.14.0"
|
||||
@ -17255,6 +17662,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"semver@npm:^7.7.2":
|
||||
version: 7.7.2
|
||||
resolution: "semver@npm:7.7.2"
|
||||
bin:
|
||||
semver: bin/semver.js
|
||||
checksum: 10c0/aca305edfbf2383c22571cb7714f48cadc7ac95371b4b52362fb8eeffdfbc0de0669368b82b2b15978f8848f01d7114da65697e56cd8c37b0dab8c58e543f9ea
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"send@npm:^1.1.0, send@npm:^1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "send@npm:1.2.0"
|
||||
@ -18219,6 +18635,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tinyglobby@npm:^0.2.14":
|
||||
version: 0.2.14
|
||||
resolution: "tinyglobby@npm:0.2.14"
|
||||
dependencies:
|
||||
fdir: "npm:^6.4.4"
|
||||
picomatch: "npm:^4.0.2"
|
||||
checksum: 10c0/f789ed6c924287a9b7d3612056ed0cda67306cd2c80c249fd280cf1504742b12583a2089b61f4abbd24605f390809017240e250241f09938054c9b363e51c0a6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tinypool@npm:^1.0.2":
|
||||
version: 1.0.2
|
||||
resolution: "tinypool@npm:1.0.2"
|
||||
@ -18437,6 +18863,46 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tsdown@npm:^0.12.9":
|
||||
version: 0.12.9
|
||||
resolution: "tsdown@npm:0.12.9"
|
||||
dependencies:
|
||||
ansis: "npm:^4.1.0"
|
||||
cac: "npm:^6.7.14"
|
||||
chokidar: "npm:^4.0.3"
|
||||
debug: "npm:^4.4.1"
|
||||
diff: "npm:^8.0.2"
|
||||
empathic: "npm:^2.0.0"
|
||||
hookable: "npm:^5.5.3"
|
||||
rolldown: "npm:^1.0.0-beta.19"
|
||||
rolldown-plugin-dts: "npm:^0.13.12"
|
||||
semver: "npm:^7.7.2"
|
||||
tinyexec: "npm:^1.0.1"
|
||||
tinyglobby: "npm:^0.2.14"
|
||||
unconfig: "npm:^7.3.2"
|
||||
peerDependencies:
|
||||
"@arethetypeswrong/core": ^0.18.1
|
||||
publint: ^0.3.0
|
||||
typescript: ^5.0.0
|
||||
unplugin-lightningcss: ^0.4.0
|
||||
unplugin-unused: ^0.5.0
|
||||
peerDependenciesMeta:
|
||||
"@arethetypeswrong/core":
|
||||
optional: true
|
||||
publint:
|
||||
optional: true
|
||||
typescript:
|
||||
optional: true
|
||||
unplugin-lightningcss:
|
||||
optional: true
|
||||
unplugin-unused:
|
||||
optional: true
|
||||
bin:
|
||||
tsdown: dist/run.mjs
|
||||
checksum: 10c0/5dd4842982815181f5a79bc87fff1dd9afc6952aaec065dcececde5ba76887163a01de313272964003ea90df8ac23efdfc8aabb290c5b8f8dae5332e9905c05b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tslib@npm:2.6.2":
|
||||
version: 2.6.2
|
||||
resolution: "tslib@npm:2.6.2"
|
||||
@ -18568,6 +19034,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unconfig@npm:^7.3.2":
|
||||
version: 7.3.2
|
||||
resolution: "unconfig@npm:7.3.2"
|
||||
dependencies:
|
||||
"@quansync/fs": "npm:^0.1.1"
|
||||
defu: "npm:^6.1.4"
|
||||
jiti: "npm:^2.4.2"
|
||||
quansync: "npm:^0.2.8"
|
||||
checksum: 10c0/245a0add92413b9a04a0bad879c7ee4d6904e58c9d091dbb1ea89fb7491d22d0f2ad17bd561329e006cb1954b5ece00f4cd9f9300a72af5013a927dc7fd5d27b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"underscore@npm:^1.13.1":
|
||||
version: 1.13.7
|
||||
resolution: "underscore@npm:1.13.7"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user