mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-14 06:07:23 +08:00
migrate 1
This commit is contained in:
parent
26a3bd0259
commit
c032f161db
24
package.json
24
package.json
@ -109,17 +109,17 @@
|
||||
"@agentic/exa": "^7.3.3",
|
||||
"@agentic/searxng": "^7.3.3",
|
||||
"@agentic/tavily": "^7.3.3",
|
||||
"@ai-sdk/amazon-bedrock": "^3.0.61",
|
||||
"@ai-sdk/anthropic": "^2.0.49",
|
||||
"@ai-sdk/cerebras": "^1.0.31",
|
||||
"@ai-sdk/gateway": "^2.0.15",
|
||||
"@ai-sdk/google": "patch:@ai-sdk/google@npm%3A2.0.49#~/.yarn/patches/@ai-sdk-google-npm-2.0.49-84720f41bd.patch",
|
||||
"@ai-sdk/google-vertex": "^3.0.94",
|
||||
"@ai-sdk/huggingface": "^0.0.10",
|
||||
"@ai-sdk/mistral": "^2.0.24",
|
||||
"@ai-sdk/openai": "patch:@ai-sdk/openai@npm%3A2.0.85#~/.yarn/patches/@ai-sdk-openai-npm-2.0.85-27483d1d6a.patch",
|
||||
"@ai-sdk/perplexity": "^2.0.20",
|
||||
"@ai-sdk/test-server": "^0.0.1",
|
||||
"@ai-sdk/amazon-bedrock": "^4.0.0-beta.107",
|
||||
"@ai-sdk/anthropic": "^3.0.0-beta.96",
|
||||
"@ai-sdk/cerebras": "^2.0.0-beta.63",
|
||||
"@ai-sdk/gateway": "2.0.0-beta.91",
|
||||
"@ai-sdk/google": "^3.0.0-beta.88",
|
||||
"@ai-sdk/google-vertex": "^4.0.0-beta.132",
|
||||
"@ai-sdk/huggingface": "^1.0.0-beta.55",
|
||||
"@ai-sdk/mistral": "^3.0.0-beta.60",
|
||||
"@ai-sdk/openai": "^3.0.0-beta.111",
|
||||
"@ai-sdk/perplexity": "^3.0.0-beta.60",
|
||||
"@ai-sdk/test-server": "1.0.0-beta.0",
|
||||
"@ant-design/v5-patch-for-react-19": "^1.0.3",
|
||||
"@anthropic-ai/sdk": "^0.41.0",
|
||||
"@anthropic-ai/vertex-sdk": "patch:@anthropic-ai/vertex-sdk@npm%3A0.11.4#~/.yarn/patches/@anthropic-ai-vertex-sdk-npm-0.11.4-c19cb41edb.patch",
|
||||
@ -241,7 +241,7 @@
|
||||
"@viz-js/lang-dot": "^1.0.5",
|
||||
"@viz-js/viz": "^3.14.0",
|
||||
"@xyflow/react": "^12.4.4",
|
||||
"ai": "^5.0.98",
|
||||
"ai": "^6.0.0-beta.166",
|
||||
"antd": "patch:antd@npm%3A5.27.0#~/.yarn/patches/antd-npm-5.27.0-aa91c36546.patch",
|
||||
"archiver": "^7.0.1",
|
||||
"async-mutex": "^0.5.0",
|
||||
|
||||
@ -41,9 +41,9 @@
|
||||
"ai": "^5.0.26"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ai-sdk/openai-compatible": "^1.0.28",
|
||||
"@ai-sdk/provider": "^2.0.0",
|
||||
"@ai-sdk/provider-utils": "^3.0.17"
|
||||
"@ai-sdk/openai-compatible": "^2.0.0-beta.59",
|
||||
"@ai-sdk/provider": "^3.0.0-beta.31",
|
||||
"@ai-sdk/provider-utils": "^4.0.0-beta.58"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tsdown": "^0.13.3",
|
||||
|
||||
@ -11,12 +11,12 @@ import {
|
||||
} from '@ai-sdk/openai/internal'
|
||||
import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible'
|
||||
import {
|
||||
type EmbeddingModelV2,
|
||||
type ImageModelV2,
|
||||
type LanguageModelV2,
|
||||
type ProviderV2,
|
||||
type SpeechModelV2,
|
||||
type TranscriptionModelV2
|
||||
type EmbeddingModelV3,
|
||||
type ImageModelV3,
|
||||
type LanguageModelV3,
|
||||
type ProviderV3,
|
||||
type SpeechModelV3,
|
||||
type TranscriptionModelV3
|
||||
} from '@ai-sdk/provider'
|
||||
import type { FetchFunction } from '@ai-sdk/provider-utils'
|
||||
import { loadApiKey, withoutTrailingSlash } from '@ai-sdk/provider-utils'
|
||||
@ -74,21 +74,19 @@ export interface CherryInProviderSettings {
|
||||
endpointType?: 'openai' | 'openai-response' | 'anthropic' | 'gemini' | 'image-generation' | 'jina-rerank'
|
||||
}
|
||||
|
||||
export interface CherryInProvider extends ProviderV2 {
|
||||
(modelId: string, settings?: OpenAIProviderSettings): LanguageModelV2
|
||||
languageModel(modelId: string, settings?: OpenAIProviderSettings): LanguageModelV2
|
||||
chat(modelId: string, settings?: OpenAIProviderSettings): LanguageModelV2
|
||||
responses(modelId: string): LanguageModelV2
|
||||
completion(modelId: string, settings?: OpenAIProviderSettings): LanguageModelV2
|
||||
embedding(modelId: string, settings?: OpenAIProviderSettings): EmbeddingModelV2<string>
|
||||
textEmbedding(modelId: string, settings?: OpenAIProviderSettings): EmbeddingModelV2<string>
|
||||
textEmbeddingModel(modelId: string, settings?: OpenAIProviderSettings): EmbeddingModelV2<string>
|
||||
image(modelId: string, settings?: OpenAIProviderSettings): ImageModelV2
|
||||
imageModel(modelId: string, settings?: OpenAIProviderSettings): ImageModelV2
|
||||
transcription(modelId: string): TranscriptionModelV2
|
||||
transcriptionModel(modelId: string): TranscriptionModelV2
|
||||
speech(modelId: string): SpeechModelV2
|
||||
speechModel(modelId: string): SpeechModelV2
|
||||
export interface CherryInProvider extends ProviderV3 {
|
||||
(modelId: string, settings?: OpenAIProviderSettings): LanguageModelV3
|
||||
languageModel(modelId: string, settings?: OpenAIProviderSettings): LanguageModelV3
|
||||
chat(modelId: string, settings?: OpenAIProviderSettings): LanguageModelV3
|
||||
responses(modelId: string): LanguageModelV3
|
||||
completion(modelId: string, settings?: OpenAIProviderSettings): LanguageModelV3
|
||||
embedding(modelId: string, settings?: OpenAIProviderSettings): EmbeddingModelV3
|
||||
image(modelId: string, settings?: OpenAIProviderSettings): ImageModelV3
|
||||
imageModel(modelId: string, settings?: OpenAIProviderSettings): ImageModelV3
|
||||
transcription(modelId: string): TranscriptionModelV3
|
||||
transcriptionModel(modelId: string): TranscriptionModelV3
|
||||
speech(modelId: string): SpeechModelV3
|
||||
speechModel(modelId: string): SpeechModelV3
|
||||
}
|
||||
|
||||
const resolveApiKey = (options: CherryInProviderSettings): string =>
|
||||
@ -315,14 +313,8 @@ export const createCherryIn = (options: CherryInProviderSettings = {}): CherryIn
|
||||
fetch
|
||||
})
|
||||
|
||||
const provider: CherryInProvider = function (modelId: string, settings?: OpenAIProviderSettings) {
|
||||
if (new.target) {
|
||||
throw new Error('CherryIN provider function cannot be called with the new keyword.')
|
||||
}
|
||||
|
||||
return createChatModel(modelId, settings)
|
||||
}
|
||||
|
||||
const provider = (modelId: string, settings?: OpenAIProviderSettings) => createChatModel(modelId, settings)
|
||||
provider.specificationVersion = 'v3' as const
|
||||
provider.languageModel = createChatModel
|
||||
provider.chat = createOpenAIChatModel
|
||||
|
||||
@ -330,8 +322,7 @@ export const createCherryIn = (options: CherryInProviderSettings = {}): CherryIn
|
||||
provider.completion = createCompletionModel
|
||||
|
||||
provider.embedding = createEmbeddingModel
|
||||
provider.textEmbedding = createEmbeddingModel
|
||||
provider.textEmbeddingModel = createEmbeddingModel
|
||||
provider.embeddingModel = createEmbeddingModel
|
||||
|
||||
provider.image = createImageModel
|
||||
provider.imageModel = createImageModel
|
||||
@ -342,7 +333,7 @@ export const createCherryIn = (options: CherryInProviderSettings = {}): CherryIn
|
||||
provider.speech = createSpeechModel
|
||||
provider.speechModel = createSpeechModel
|
||||
|
||||
return provider
|
||||
return provider as CherryInProvider
|
||||
}
|
||||
|
||||
export const cherryIn = createCherryIn()
|
||||
|
||||
@ -39,13 +39,13 @@
|
||||
"ai": "^5.0.26"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ai-sdk/anthropic": "^2.0.49",
|
||||
"@ai-sdk/azure": "^2.0.87",
|
||||
"@ai-sdk/deepseek": "^1.0.31",
|
||||
"@ai-sdk/openai-compatible": "patch:@ai-sdk/openai-compatible@npm%3A1.0.27#~/.yarn/patches/@ai-sdk-openai-compatible-npm-1.0.27-06f74278cf.patch",
|
||||
"@ai-sdk/provider": "^2.0.0",
|
||||
"@ai-sdk/provider-utils": "^3.0.17",
|
||||
"@ai-sdk/xai": "^2.0.36",
|
||||
"@ai-sdk/anthropic": "^3.0.0-beta.96",
|
||||
"@ai-sdk/azure": "^3.0.0-beta.113",
|
||||
"@ai-sdk/deepseek": "^2.0.0-beta.61",
|
||||
"@ai-sdk/openai-compatible": "^2.0.0-beta.59",
|
||||
"@ai-sdk/provider": "^3.0.0-beta.31",
|
||||
"@ai-sdk/provider-utils": "^4.0.0-beta.58",
|
||||
"@ai-sdk/xai": "^3.0.0-beta.68",
|
||||
"zod": "^4.1.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@ -3,13 +3,13 @@
|
||||
* Provides mock implementations for all supported AI providers
|
||||
*/
|
||||
|
||||
import type { ImageModelV2, LanguageModelV2 } from '@ai-sdk/provider'
|
||||
import type { ImageModelV3, LanguageModelV3 } from '@ai-sdk/provider'
|
||||
import { vi } from 'vitest'
|
||||
|
||||
/**
|
||||
* Creates a mock language model with customizable behavior
|
||||
*/
|
||||
export function createMockLanguageModel(overrides?: Partial<LanguageModelV2>): LanguageModelV2 {
|
||||
export function createMockLanguageModel(overrides?: Partial<LanguageModelV3>): LanguageModelV3 {
|
||||
return {
|
||||
specificationVersion: 'v1',
|
||||
provider: 'mock-provider',
|
||||
@ -59,15 +59,15 @@ export function createMockLanguageModel(overrides?: Partial<LanguageModelV2>): L
|
||||
}),
|
||||
|
||||
...overrides
|
||||
} as LanguageModelV2
|
||||
} as LanguageModelV3
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a mock image model with customizable behavior
|
||||
*/
|
||||
export function createMockImageModel(overrides?: Partial<ImageModelV2>): ImageModelV2 {
|
||||
export function createMockImageModel(overrides?: Partial<ImageModelV3>): ImageModelV3 {
|
||||
return {
|
||||
specificationVersion: 'v2',
|
||||
specificationVersion: 'V3',
|
||||
provider: 'mock-provider',
|
||||
modelId: 'mock-image-model',
|
||||
|
||||
@ -83,7 +83,7 @@ export function createMockImageModel(overrides?: Partial<ImageModelV2>): ImageMo
|
||||
}),
|
||||
|
||||
...overrides
|
||||
} as ImageModelV2
|
||||
} as ImageModelV3
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -2,15 +2,15 @@
|
||||
* 中间件管理器
|
||||
* 专注于 AI SDK 中间件的管理,与插件系统分离
|
||||
*/
|
||||
import type { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||
import type { LanguageModelV3Middleware } from '@ai-sdk/provider'
|
||||
|
||||
/**
|
||||
* 创建中间件列表
|
||||
* 合并用户提供的中间件
|
||||
*/
|
||||
export function createMiddlewares(userMiddlewares: LanguageModelV2Middleware[] = []): LanguageModelV2Middleware[] {
|
||||
export function createMiddlewares(userMiddlewares: LanguageModelV3Middleware[] = []): LanguageModelV3Middleware[] {
|
||||
// 未来可以在这里添加默认的中间件
|
||||
const defaultMiddlewares: LanguageModelV2Middleware[] = []
|
||||
const defaultMiddlewares: LanguageModelV3Middleware[] = []
|
||||
|
||||
return [...defaultMiddlewares, ...userMiddlewares]
|
||||
}
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
/**
|
||||
* 中间件系统类型定义
|
||||
*/
|
||||
import type { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||
import type { LanguageModelV3Middleware } from '@ai-sdk/provider'
|
||||
|
||||
/**
|
||||
* 具名中间件接口
|
||||
*/
|
||||
export interface NamedMiddleware {
|
||||
name: string
|
||||
middleware: LanguageModelV2Middleware
|
||||
middleware: LanguageModelV3Middleware
|
||||
}
|
||||
|
||||
@ -2,16 +2,16 @@
|
||||
* 模型包装工具函数
|
||||
* 用于将中间件应用到LanguageModel上
|
||||
*/
|
||||
import type { LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||
import type { LanguageModelV3, LanguageModelV3Middleware } from '@ai-sdk/provider'
|
||||
import { wrapLanguageModel } from 'ai'
|
||||
|
||||
/**
|
||||
* 使用中间件包装模型
|
||||
*/
|
||||
export function wrapModelWithMiddlewares(
|
||||
model: LanguageModelV2,
|
||||
middlewares: LanguageModelV2Middleware[]
|
||||
): LanguageModelV2 {
|
||||
model: LanguageModelV3,
|
||||
middlewares: LanguageModelV3Middleware[]
|
||||
): LanguageModelV3 {
|
||||
if (middlewares.length === 0) {
|
||||
return model
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
* 集成了来自 ModelCreator 的特殊处理逻辑
|
||||
*/
|
||||
|
||||
import type { EmbeddingModelV2, ImageModelV2, LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||
import type { EmbeddingModelV3, ImageModelV3, LanguageModelV3, LanguageModelV3Middleware } from '@ai-sdk/provider'
|
||||
|
||||
import { wrapModelWithMiddlewares } from '../middleware/wrapper'
|
||||
import { DEFAULT_SEPARATOR, globalRegistryManagement } from '../providers/RegistryManagement'
|
||||
@ -23,10 +23,10 @@ export class ModelResolver {
|
||||
modelId: string,
|
||||
fallbackProviderId: string,
|
||||
providerOptions?: any,
|
||||
middlewares?: LanguageModelV2Middleware[]
|
||||
): Promise<LanguageModelV2> {
|
||||
middlewares?: LanguageModelV3Middleware[]
|
||||
): Promise<LanguageModelV3> {
|
||||
let finalProviderId = fallbackProviderId
|
||||
let model: LanguageModelV2
|
||||
let model: LanguageModelV3
|
||||
// 🎯 处理 OpenAI 模式选择逻辑 (从 ModelCreator 迁移)
|
||||
if ((fallbackProviderId === 'openai' || fallbackProviderId === 'azure') && providerOptions?.mode === 'chat') {
|
||||
finalProviderId = `${fallbackProviderId}-chat`
|
||||
@ -51,7 +51,7 @@ export class ModelResolver {
|
||||
/**
|
||||
* 解析文本嵌入模型
|
||||
*/
|
||||
async resolveTextEmbeddingModel(modelId: string, fallbackProviderId: string): Promise<EmbeddingModelV2<string>> {
|
||||
async resolveTextEmbeddingModel(modelId: string, fallbackProviderId: string): Promise<EmbeddingModelV3> {
|
||||
if (modelId.includes(DEFAULT_SEPARATOR)) {
|
||||
return this.resolveNamespacedEmbeddingModel(modelId)
|
||||
}
|
||||
@ -62,7 +62,7 @@ export class ModelResolver {
|
||||
/**
|
||||
* 解析图像模型
|
||||
*/
|
||||
async resolveImageModel(modelId: string, fallbackProviderId: string): Promise<ImageModelV2> {
|
||||
async resolveImageModel(modelId: string, fallbackProviderId: string): Promise<ImageModelV3> {
|
||||
if (modelId.includes(DEFAULT_SEPARATOR)) {
|
||||
return this.resolveNamespacedImageModel(modelId)
|
||||
}
|
||||
@ -74,7 +74,7 @@ export class ModelResolver {
|
||||
* 解析命名空间格式的语言模型
|
||||
* aihubmix:anthropic:claude-3 -> globalRegistryManagement.languageModel('aihubmix:anthropic:claude-3')
|
||||
*/
|
||||
private resolveNamespacedModel(modelId: string): LanguageModelV2 {
|
||||
private resolveNamespacedModel(modelId: string): LanguageModelV3 {
|
||||
return globalRegistryManagement.languageModel(modelId as any)
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ export class ModelResolver {
|
||||
* 解析传统格式的语言模型
|
||||
* providerId: 'openai', modelId: 'gpt-4' -> globalRegistryManagement.languageModel('openai:gpt-4')
|
||||
*/
|
||||
private resolveTraditionalModel(providerId: string, modelId: string): LanguageModelV2 {
|
||||
private resolveTraditionalModel(providerId: string, modelId: string): LanguageModelV3 {
|
||||
const fullModelId = `${providerId}${DEFAULT_SEPARATOR}${modelId}`
|
||||
return globalRegistryManagement.languageModel(fullModelId as any)
|
||||
}
|
||||
@ -90,29 +90,29 @@ export class ModelResolver {
|
||||
/**
|
||||
* 解析命名空间格式的嵌入模型
|
||||
*/
|
||||
private resolveNamespacedEmbeddingModel(modelId: string): EmbeddingModelV2<string> {
|
||||
return globalRegistryManagement.textEmbeddingModel(modelId as any)
|
||||
private resolveNamespacedEmbeddingModel(modelId: string): EmbeddingModelV3 {
|
||||
return globalRegistryManagement.embeddingModel(modelId as any)
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析传统格式的嵌入模型
|
||||
*/
|
||||
private resolveTraditionalEmbeddingModel(providerId: string, modelId: string): EmbeddingModelV2<string> {
|
||||
private resolveTraditionalEmbeddingModel(providerId: string, modelId: string): EmbeddingModelV3 {
|
||||
const fullModelId = `${providerId}${DEFAULT_SEPARATOR}${modelId}`
|
||||
return globalRegistryManagement.textEmbeddingModel(fullModelId as any)
|
||||
return globalRegistryManagement.embeddingModel(fullModelId as any)
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析命名空间格式的图像模型
|
||||
*/
|
||||
private resolveNamespacedImageModel(modelId: string): ImageModelV2 {
|
||||
private resolveNamespacedImageModel(modelId: string): ImageModelV3 {
|
||||
return globalRegistryManagement.imageModel(modelId as any)
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析传统格式的图像模型
|
||||
*/
|
||||
private resolveTraditionalImageModel(providerId: string, modelId: string): ImageModelV2 {
|
||||
private resolveTraditionalImageModel(providerId: string, modelId: string): ImageModelV3 {
|
||||
const fullModelId = `${providerId}${DEFAULT_SEPARATOR}${modelId}`
|
||||
return globalRegistryManagement.imageModel(fullModelId as any)
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Creation 模块类型定义
|
||||
*/
|
||||
import type { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||
import type { LanguageModelV3Middleware } from '@ai-sdk/provider'
|
||||
|
||||
import type { ProviderId, ProviderSettingsMap } from '../providers/types'
|
||||
|
||||
@ -9,7 +9,7 @@ export interface ModelConfig<T extends ProviderId = ProviderId> {
|
||||
providerId: T
|
||||
modelId: string
|
||||
providerSettings: ProviderSettingsMap[T] & { mode?: 'chat' | 'responses' }
|
||||
middlewares?: LanguageModelV2Middleware[]
|
||||
middlewares?: LanguageModelV3Middleware[]
|
||||
// 额外模型参数
|
||||
extraModelConfig?: Record<string, any>
|
||||
}
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import { type AnthropicProviderOptions } from '@ai-sdk/anthropic'
|
||||
import { type GoogleGenerativeAIProviderOptions } from '@ai-sdk/google'
|
||||
import { type OpenAIResponsesProviderOptions } from '@ai-sdk/openai'
|
||||
import { type SharedV2ProviderMetadata } from '@ai-sdk/provider'
|
||||
import { type SharedV3ProviderMetadata } from '@ai-sdk/provider'
|
||||
import { type XaiProviderOptions } from '@ai-sdk/xai'
|
||||
import { type OpenRouterProviderOptions } from '@openrouter/ai-sdk-provider'
|
||||
|
||||
export type ProviderOptions<T extends keyof SharedV2ProviderMetadata> = SharedV2ProviderMetadata[T]
|
||||
export type ProviderOptions<T extends keyof SharedV3ProviderMetadata> = SharedV3ProviderMetadata[T]
|
||||
|
||||
/**
|
||||
* 供应商选项类型,如果map中没有,说明没有约束
|
||||
@ -29,4 +29,4 @@ export type TypedProviderOptions = {
|
||||
[K in keyof ProviderOptionsMap]?: ProviderOptionsMap[K]
|
||||
} & {
|
||||
[K in string]?: Record<string, any>
|
||||
} & SharedV2ProviderMetadata
|
||||
} & SharedV3ProviderMetadata
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
// 核心类型和接口
|
||||
export type { AiPlugin, AiRequestContext, HookResult, PluginManagerConfig } from './types'
|
||||
import type { ImageModelV2 } from '@ai-sdk/provider'
|
||||
import type { ImageModelV3 } from '@ai-sdk/provider'
|
||||
import type { LanguageModel } from 'ai'
|
||||
|
||||
import type { ProviderId } from '../providers'
|
||||
@ -12,7 +12,7 @@ export { PluginManager } from './manager'
|
||||
// 工具函数
|
||||
export function createContext<T extends ProviderId>(
|
||||
providerId: T,
|
||||
model: LanguageModel | ImageModelV2,
|
||||
model: LanguageModel | ImageModelV3,
|
||||
originalParams: any
|
||||
): AiRequestContext {
|
||||
return {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import type { ImageModelV2 } from '@ai-sdk/provider'
|
||||
import type { ImageModelV3 } from '@ai-sdk/provider'
|
||||
import type { LanguageModel, TextStreamPart, ToolSet } from 'ai'
|
||||
|
||||
import { type ProviderId } from '../providers/types'
|
||||
@ -14,7 +14,7 @@ export type RecursiveCallFn = (newParams: any) => Promise<any>
|
||||
*/
|
||||
export interface AiRequestContext {
|
||||
providerId: ProviderId
|
||||
model: LanguageModel | ImageModelV2
|
||||
model: LanguageModel | ImageModelV3
|
||||
originalParams: any
|
||||
metadata: Record<string, any>
|
||||
startTime: number
|
||||
@ -36,7 +36,7 @@ export interface AiPlugin {
|
||||
resolveModel?: (
|
||||
modelId: string,
|
||||
context: AiRequestContext
|
||||
) => Promise<LanguageModel | ImageModelV2 | null> | LanguageModel | ImageModelV2 | null
|
||||
) => Promise<LanguageModel | ImageModelV3 | null> | LanguageModel | ImageModelV3 | null
|
||||
loadTemplate?: (templateName: string, context: AiRequestContext) => any | null | Promise<any | null>
|
||||
|
||||
// 【Sequential】串行钩子 - 链式执行,支持数据转换
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
* 例如: aihubmix:anthropic:claude-3.5-sonnet
|
||||
*/
|
||||
|
||||
import type { ProviderV2 } from '@ai-sdk/provider'
|
||||
import type { ProviderV3 } from '@ai-sdk/provider'
|
||||
import { customProvider } from 'ai'
|
||||
|
||||
import { globalRegistryManagement } from './RegistryManagement'
|
||||
@ -47,10 +47,10 @@ function parseHubModelId(modelId: string): { provider: string; actualModelId: st
|
||||
/**
|
||||
* 创建Hub Provider
|
||||
*/
|
||||
export function createHubProvider(config: HubProviderConfig): ProviderV2 {
|
||||
export function createHubProvider(config: HubProviderConfig): ProviderV3 {
|
||||
const { hubId } = config
|
||||
|
||||
function getTargetProvider(providerId: string): ProviderV2 {
|
||||
function getTargetProvider(providerId: string): ProviderV3 {
|
||||
// 从全局注册表获取provider实例
|
||||
try {
|
||||
const provider = globalRegistryManagement.getProvider(providerId)
|
||||
|
||||
@ -4,10 +4,10 @@
|
||||
* 基于 AI SDK 原生的 createProviderRegistry
|
||||
*/
|
||||
|
||||
import type { EmbeddingModelV2, ImageModelV2, LanguageModelV2, ProviderV2 } from '@ai-sdk/provider'
|
||||
import type { EmbeddingModelV3, ImageModelV3, LanguageModelV3, ProviderV3 } from '@ai-sdk/provider'
|
||||
import { createProviderRegistry, type ProviderRegistryProvider } from 'ai'
|
||||
|
||||
type PROVIDERS = Record<string, ProviderV2>
|
||||
type PROVIDERS = Record<string, ProviderV3>
|
||||
|
||||
export const DEFAULT_SEPARATOR = '|'
|
||||
|
||||
@ -26,7 +26,7 @@ export class RegistryManagement<SEPARATOR extends string = typeof DEFAULT_SEPARA
|
||||
/**
|
||||
* 注册已配置好的 provider 实例
|
||||
*/
|
||||
registerProvider(id: string, provider: ProviderV2, aliases?: string[]): this {
|
||||
registerProvider(id: string, provider: ProviderV3, aliases?: string[]): this {
|
||||
// 注册主provider
|
||||
this.providers[id] = provider
|
||||
|
||||
@ -45,14 +45,14 @@ export class RegistryManagement<SEPARATOR extends string = typeof DEFAULT_SEPARA
|
||||
/**
|
||||
* 获取已注册的provider实例
|
||||
*/
|
||||
getProvider(id: string): ProviderV2 | undefined {
|
||||
getProvider(id: string): ProviderV3 | undefined {
|
||||
return this.providers[id]
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量注册 providers
|
||||
*/
|
||||
registerProviders(providers: Record<string, ProviderV2>): this {
|
||||
registerProviders(providers: Record<string, ProviderV3>): this {
|
||||
Object.assign(this.providers, providers)
|
||||
this.rebuildRegistry()
|
||||
return this
|
||||
@ -106,7 +106,7 @@ export class RegistryManagement<SEPARATOR extends string = typeof DEFAULT_SEPARA
|
||||
/**
|
||||
* 获取语言模型 - AI SDK 原生方法
|
||||
*/
|
||||
languageModel(id: `${string}${SEPARATOR}${string}`): LanguageModelV2 {
|
||||
languageModel(id: `${string}${SEPARATOR}${string}`): LanguageModelV3 {
|
||||
if (!this.registry) {
|
||||
throw new Error('No providers registered')
|
||||
}
|
||||
@ -116,17 +116,17 @@ export class RegistryManagement<SEPARATOR extends string = typeof DEFAULT_SEPARA
|
||||
/**
|
||||
* 获取文本嵌入模型 - AI SDK 原生方法
|
||||
*/
|
||||
textEmbeddingModel(id: `${string}${SEPARATOR}${string}`): EmbeddingModelV2<string> {
|
||||
embeddingModel(id: `${string}${SEPARATOR}${string}`): EmbeddingModelV3 {
|
||||
if (!this.registry) {
|
||||
throw new Error('No providers registered')
|
||||
}
|
||||
return this.registry.textEmbeddingModel(id)
|
||||
return this.registry.embeddingModel(id)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取图像模型 - AI SDK 原生方法
|
||||
*/
|
||||
imageModel(id: `${string}${SEPARATOR}${string}`): ImageModelV2 {
|
||||
imageModel(id: `${string}${SEPARATOR}${string}`): ImageModelV3 {
|
||||
if (!this.registry) {
|
||||
throw new Error('No providers registered')
|
||||
}
|
||||
|
||||
@ -30,7 +30,7 @@ export { globalRegistryManagement as providerRegistry }
|
||||
// ==================== 便捷访问方法 ====================
|
||||
|
||||
export const getLanguageModel = (id: string) => globalRegistryManagement.languageModel(id as any)
|
||||
export const getTextEmbeddingModel = (id: string) => globalRegistryManagement.textEmbeddingModel(id as any)
|
||||
export const getTextEmbeddingModel = (id: string) => globalRegistryManagement.embeddingModel(id as any)
|
||||
export const getImageModel = (id: string) => globalRegistryManagement.imageModel(id as any)
|
||||
|
||||
// ==================== 工具函数 ====================
|
||||
|
||||
@ -9,11 +9,10 @@ import { createDeepSeek } from '@ai-sdk/deepseek'
|
||||
import { createGoogleGenerativeAI } from '@ai-sdk/google'
|
||||
import { createOpenAI, type OpenAIProviderSettings } from '@ai-sdk/openai'
|
||||
import { createOpenAICompatible } from '@ai-sdk/openai-compatible'
|
||||
import type { LanguageModelV2 } from '@ai-sdk/provider'
|
||||
import type { ProviderV3 } from '@ai-sdk/provider'
|
||||
import { createXai } from '@ai-sdk/xai'
|
||||
import { type CherryInProviderSettings, createCherryIn } from '@cherrystudio/ai-sdk-provider'
|
||||
import { createOpenRouter } from '@openrouter/ai-sdk-provider'
|
||||
import type { Provider } from 'ai'
|
||||
import { customProvider } from 'ai'
|
||||
import * as z from 'zod'
|
||||
|
||||
@ -52,7 +51,7 @@ export const isBaseProvider = (id: ProviderId): id is BaseProviderId => {
|
||||
type BaseProvider = {
|
||||
id: BaseProviderId
|
||||
name: string
|
||||
creator: (options: any) => Provider | LanguageModelV2
|
||||
creator: (options: any) => ProviderV3
|
||||
supportsImageGeneration: boolean
|
||||
}
|
||||
|
||||
|
||||
@ -5,12 +5,12 @@ import { type GoogleGenerativeAIProviderSettings } from '@ai-sdk/google'
|
||||
import { type OpenAIProviderSettings } from '@ai-sdk/openai'
|
||||
import { type OpenAICompatibleProviderSettings } from '@ai-sdk/openai-compatible'
|
||||
import type {
|
||||
EmbeddingModelV2 as EmbeddingModel,
|
||||
ImageModelV2 as ImageModel,
|
||||
LanguageModelV2 as LanguageModel,
|
||||
ProviderV2,
|
||||
SpeechModelV2 as SpeechModel,
|
||||
TranscriptionModelV2 as TranscriptionModel
|
||||
EmbeddingModelV3 as EmbeddingModel,
|
||||
ImageModelV3 as ImageModel,
|
||||
LanguageModelV3 as LanguageModel,
|
||||
ProviderV3,
|
||||
SpeechModelV3 as SpeechModel,
|
||||
TranscriptionModelV3 as TranscriptionModel
|
||||
} from '@ai-sdk/provider'
|
||||
import { type XaiProviderSettings } from '@ai-sdk/xai'
|
||||
|
||||
@ -69,24 +69,24 @@ export type {
|
||||
XaiProviderSettings
|
||||
}
|
||||
|
||||
export type AiSdkModel = LanguageModel | ImageModel | EmbeddingModel<string> | TranscriptionModel | SpeechModel
|
||||
export type AiSdkModel = LanguageModel | ImageModel | EmbeddingModel | TranscriptionModel | SpeechModel
|
||||
|
||||
export type AiSdkModelType = 'text' | 'image' | 'embedding' | 'transcription' | 'speech'
|
||||
|
||||
export const METHOD_MAP = {
|
||||
text: 'languageModel',
|
||||
image: 'imageModel',
|
||||
embedding: 'textEmbeddingModel',
|
||||
embedding: 'embeddingModel',
|
||||
transcription: 'transcriptionModel',
|
||||
speech: 'speechModel'
|
||||
} as const satisfies Record<AiSdkModelType, keyof ProviderV2>
|
||||
} as const satisfies Record<AiSdkModelType, keyof ProviderV3>
|
||||
|
||||
export type AiSdkModelMethodMap = Record<AiSdkModelType, keyof ProviderV2>
|
||||
export type AiSdkModelMethodMap = Record<AiSdkModelType, keyof ProviderV3>
|
||||
|
||||
export type AiSdkModelReturnMap = {
|
||||
text: LanguageModel
|
||||
image: ImageModel
|
||||
embedding: EmbeddingModel<string>
|
||||
embedding: EmbeddingModel
|
||||
transcription: TranscriptionModel
|
||||
speech: SpeechModel
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import type { ImageModelV2 } from '@ai-sdk/provider'
|
||||
import { experimental_generateImage as aiGenerateImage, NoImageGeneratedError } from 'ai'
|
||||
import type { ImageModelV3 } from '@ai-sdk/provider'
|
||||
import { generateImage as aiGenerateImage, NoImageGeneratedError } from 'ai'
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
|
||||
import { type AiPlugin } from '../../plugins'
|
||||
@ -28,7 +28,7 @@ vi.mock('../../providers/RegistryManagement', () => ({
|
||||
|
||||
describe('RuntimeExecutor.generateImage', () => {
|
||||
let executor: RuntimeExecutor<'openai'>
|
||||
let mockImageModel: ImageModelV2
|
||||
let mockImageModel: ImageModelV3
|
||||
let mockGenerateImageResult: any
|
||||
|
||||
beforeEach(() => {
|
||||
@ -44,7 +44,7 @@ describe('RuntimeExecutor.generateImage', () => {
|
||||
mockImageModel = {
|
||||
modelId: 'dall-e-3',
|
||||
provider: 'openai'
|
||||
} as ImageModelV2
|
||||
} as ImageModelV3
|
||||
|
||||
// Mock generateImage result
|
||||
mockGenerateImageResult = {
|
||||
@ -258,7 +258,7 @@ describe('RuntimeExecutor.generateImage', () => {
|
||||
const customImageModel = {
|
||||
modelId: 'custom-model',
|
||||
provider: 'openai'
|
||||
} as ImageModelV2
|
||||
} as ImageModelV3
|
||||
|
||||
const modelResolutionPlugin: AiPlugin = {
|
||||
name: 'model-resolver',
|
||||
|
||||
@ -2,15 +2,9 @@
|
||||
* 运行时执行器
|
||||
* 专注于插件化的AI调用处理
|
||||
*/
|
||||
import type { ImageModelV2, LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||
import type { ImageModelV3, LanguageModelV3, LanguageModelV3Middleware } from '@ai-sdk/provider'
|
||||
import type { LanguageModel } from 'ai'
|
||||
import {
|
||||
experimental_generateImage as _generateImage,
|
||||
generateObject as _generateObject,
|
||||
generateText as _generateText,
|
||||
streamObject as _streamObject,
|
||||
streamText as _streamText
|
||||
} from 'ai'
|
||||
import { generateImage as _generateImage, generateText as _generateText, streamText as _streamText } from 'ai'
|
||||
|
||||
import { globalModelResolver } from '../models'
|
||||
import { type ModelConfig } from '../models/types'
|
||||
@ -18,14 +12,7 @@ import { type AiPlugin, type AiRequestContext, definePlugin } from '../plugins'
|
||||
import { type ProviderId } from '../providers'
|
||||
import { ImageGenerationError, ImageModelResolutionError } from './errors'
|
||||
import { PluginEngine } from './pluginEngine'
|
||||
import type {
|
||||
generateImageParams,
|
||||
generateObjectParams,
|
||||
generateTextParams,
|
||||
RuntimeConfig,
|
||||
streamObjectParams,
|
||||
streamTextParams
|
||||
} from './types'
|
||||
import type { generateImageParams, generateTextParams, RuntimeConfig, streamTextParams } from './types'
|
||||
|
||||
export class RuntimeExecutor<T extends ProviderId = ProviderId> {
|
||||
public pluginEngine: PluginEngine<T>
|
||||
@ -44,7 +31,7 @@ export class RuntimeExecutor<T extends ProviderId = ProviderId> {
|
||||
this.pluginEngine = new PluginEngine(config.providerId, config.plugins || [])
|
||||
}
|
||||
|
||||
private createResolveModelPlugin(middlewares?: LanguageModelV2Middleware[]) {
|
||||
private createResolveModelPlugin(middlewares?: LanguageModelV3Middleware[]) {
|
||||
return definePlugin({
|
||||
name: '_internal_resolveModel',
|
||||
enforce: 'post',
|
||||
@ -84,7 +71,7 @@ export class RuntimeExecutor<T extends ProviderId = ProviderId> {
|
||||
async streamText(
|
||||
params: streamTextParams,
|
||||
options?: {
|
||||
middlewares?: LanguageModelV2Middleware[]
|
||||
middlewares?: LanguageModelV3Middleware[]
|
||||
}
|
||||
): Promise<ReturnType<typeof _streamText>> {
|
||||
const { model } = params
|
||||
@ -123,7 +110,7 @@ export class RuntimeExecutor<T extends ProviderId = ProviderId> {
|
||||
async generateText(
|
||||
params: generateTextParams,
|
||||
options?: {
|
||||
middlewares?: LanguageModelV2Middleware[]
|
||||
middlewares?: LanguageModelV3Middleware[]
|
||||
}
|
||||
): Promise<ReturnType<typeof _generateText>> {
|
||||
const { model } = params
|
||||
@ -145,60 +132,6 @@ export class RuntimeExecutor<T extends ProviderId = ProviderId> {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成结构化对象
|
||||
*/
|
||||
async generateObject(
|
||||
params: generateObjectParams,
|
||||
options?: {
|
||||
middlewares?: LanguageModelV2Middleware[]
|
||||
}
|
||||
): Promise<ReturnType<typeof _generateObject>> {
|
||||
const { model } = params
|
||||
|
||||
// 根据 model 类型决定插件配置
|
||||
if (typeof model === 'string') {
|
||||
this.pluginEngine.usePlugins([
|
||||
this.createResolveModelPlugin(options?.middlewares),
|
||||
this.createConfigureContextPlugin()
|
||||
])
|
||||
} else {
|
||||
this.pluginEngine.usePlugins([this.createConfigureContextPlugin()])
|
||||
}
|
||||
|
||||
return this.pluginEngine.executeWithPlugins<generateObjectParams, ReturnType<typeof _generateObject>>(
|
||||
'generateObject',
|
||||
params,
|
||||
async (resolvedModel, transformedParams) => _generateObject({ ...transformedParams, model: resolvedModel })
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 流式生成结构化对象
|
||||
*/
|
||||
streamObject(
|
||||
params: streamObjectParams,
|
||||
options?: {
|
||||
middlewares?: LanguageModelV2Middleware[]
|
||||
}
|
||||
): Promise<ReturnType<typeof _streamObject>> {
|
||||
const { model } = params
|
||||
|
||||
// 根据 model 类型决定插件配置
|
||||
if (typeof model === 'string') {
|
||||
this.pluginEngine.usePlugins([
|
||||
this.createResolveModelPlugin(options?.middlewares),
|
||||
this.createConfigureContextPlugin()
|
||||
])
|
||||
} else {
|
||||
this.pluginEngine.usePlugins([this.createConfigureContextPlugin()])
|
||||
}
|
||||
|
||||
return this.pluginEngine.executeStreamWithPlugins('streamObject', params, (resolvedModel, transformedParams) =>
|
||||
_streamObject({ ...transformedParams, model: resolvedModel })
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成图像
|
||||
*/
|
||||
@ -237,8 +170,8 @@ export class RuntimeExecutor<T extends ProviderId = ProviderId> {
|
||||
*/
|
||||
private async resolveModel(
|
||||
modelOrId: LanguageModel,
|
||||
middlewares?: LanguageModelV2Middleware[]
|
||||
): Promise<LanguageModelV2> {
|
||||
middlewares?: LanguageModelV3Middleware[]
|
||||
): Promise<LanguageModelV3> {
|
||||
if (typeof modelOrId === 'string') {
|
||||
// 🎯 字符串modelId,使用新的ModelResolver解析,传递完整参数
|
||||
return await globalModelResolver.resolveLanguageModel(
|
||||
@ -256,7 +189,7 @@ export class RuntimeExecutor<T extends ProviderId = ProviderId> {
|
||||
/**
|
||||
* 解析图像模型:如果是字符串则创建图像模型,如果是模型则直接返回
|
||||
*/
|
||||
private async resolveImageModel(modelOrId: ImageModelV2 | string): Promise<ImageModelV2> {
|
||||
private async resolveImageModel(modelOrId: ImageModelV3 | string): Promise<ImageModelV3> {
|
||||
try {
|
||||
if (typeof modelOrId === 'string') {
|
||||
// 字符串modelId,使用新的ModelResolver解析
|
||||
|
||||
@ -11,7 +11,7 @@ export type { RuntimeConfig } from './types'
|
||||
|
||||
// === 便捷工厂函数 ===
|
||||
|
||||
import type { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||
import type { LanguageModelV3Middleware } from '@ai-sdk/provider'
|
||||
|
||||
import { type AiPlugin } from '../plugins'
|
||||
import { type ProviderId, type ProviderSettingsMap } from '../providers/types'
|
||||
@ -48,7 +48,7 @@ export async function streamText<T extends ProviderId>(
|
||||
options: ProviderSettingsMap[T] & { mode?: 'chat' | 'responses' },
|
||||
params: Parameters<RuntimeExecutor<T>['streamText']>[0],
|
||||
plugins?: AiPlugin[],
|
||||
middlewares?: LanguageModelV2Middleware[]
|
||||
middlewares?: LanguageModelV3Middleware[]
|
||||
): Promise<ReturnType<RuntimeExecutor<T>['streamText']>> {
|
||||
const executor = createExecutor(providerId, options, plugins)
|
||||
return executor.streamText(params, { middlewares })
|
||||
@ -62,40 +62,12 @@ export async function generateText<T extends ProviderId>(
|
||||
options: ProviderSettingsMap[T] & { mode?: 'chat' | 'responses' },
|
||||
params: Parameters<RuntimeExecutor<T>['generateText']>[0],
|
||||
plugins?: AiPlugin[],
|
||||
middlewares?: LanguageModelV2Middleware[]
|
||||
middlewares?: LanguageModelV3Middleware[]
|
||||
): Promise<ReturnType<RuntimeExecutor<T>['generateText']>> {
|
||||
const executor = createExecutor(providerId, options, plugins)
|
||||
return executor.generateText(params, { middlewares })
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接生成结构化对象 - 支持middlewares
|
||||
*/
|
||||
export async function generateObject<T extends ProviderId>(
|
||||
providerId: T,
|
||||
options: ProviderSettingsMap[T] & { mode?: 'chat' | 'responses' },
|
||||
params: Parameters<RuntimeExecutor<T>['generateObject']>[0],
|
||||
plugins?: AiPlugin[],
|
||||
middlewares?: LanguageModelV2Middleware[]
|
||||
): Promise<ReturnType<RuntimeExecutor<T>['generateObject']>> {
|
||||
const executor = createExecutor(providerId, options, plugins)
|
||||
return executor.generateObject(params, { middlewares })
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接流式生成结构化对象 - 支持middlewares
|
||||
*/
|
||||
export async function streamObject<T extends ProviderId>(
|
||||
providerId: T,
|
||||
options: ProviderSettingsMap[T] & { mode?: 'chat' | 'responses' },
|
||||
params: Parameters<RuntimeExecutor<T>['streamObject']>[0],
|
||||
plugins?: AiPlugin[],
|
||||
middlewares?: LanguageModelV2Middleware[]
|
||||
): Promise<ReturnType<RuntimeExecutor<T>['streamObject']>> {
|
||||
const executor = createExecutor(providerId, options, plugins)
|
||||
return executor.streamObject(params, { middlewares })
|
||||
}
|
||||
|
||||
/**
|
||||
* 直接生成图像 - 支持middlewares
|
||||
*/
|
||||
|
||||
@ -1,13 +1,6 @@
|
||||
/* eslint-disable @eslint-react/naming-convention/context-name */
|
||||
import type { ImageModelV2 } from '@ai-sdk/provider'
|
||||
import type {
|
||||
experimental_generateImage,
|
||||
generateObject,
|
||||
generateText,
|
||||
LanguageModel,
|
||||
streamObject,
|
||||
streamText
|
||||
} from 'ai'
|
||||
import type { ImageModelV3 } from '@ai-sdk/provider'
|
||||
import type { generateImage, generateText, LanguageModel, streamText } from 'ai'
|
||||
|
||||
import { type AiPlugin, createContext, PluginManager } from '../plugins'
|
||||
import { type ProviderId } from '../providers/types'
|
||||
@ -70,8 +63,8 @@ export class PluginEngine<T extends ProviderId = ProviderId> {
|
||||
* 提供给AiExecutor使用
|
||||
*/
|
||||
async executeWithPlugins<
|
||||
TParams extends Parameters<typeof generateText | typeof generateObject>[0],
|
||||
TResult extends ReturnType<typeof generateText | typeof generateObject>
|
||||
TParams extends Parameters<typeof generateText>[0],
|
||||
TResult extends ReturnType<typeof generateText>
|
||||
>(
|
||||
methodName: string,
|
||||
params: TParams,
|
||||
@ -148,16 +141,16 @@ export class PluginEngine<T extends ProviderId = ProviderId> {
|
||||
* 提供给AiExecutor使用
|
||||
*/
|
||||
async executeImageWithPlugins<
|
||||
TParams extends Omit<Parameters<typeof experimental_generateImage>[0], 'model'> & { model: string | ImageModelV2 },
|
||||
TResult extends ReturnType<typeof experimental_generateImage>
|
||||
TParams extends Omit<Parameters<typeof generateImage>[0], 'model'> & { model: string | ImageModelV3 },
|
||||
TResult extends ReturnType<typeof generateImage>
|
||||
>(
|
||||
methodName: string,
|
||||
params: TParams,
|
||||
executor: (model: ImageModelV2, transformedParams: TParams) => TResult,
|
||||
executor: (model: ImageModelV3, transformedParams: TParams) => TResult,
|
||||
_context?: ReturnType<typeof createContext>
|
||||
): Promise<TResult> {
|
||||
// 统一处理模型解析
|
||||
let resolvedModel: ImageModelV2 | undefined
|
||||
let resolvedModel: ImageModelV3 | undefined
|
||||
let modelId: string
|
||||
const { model } = params
|
||||
if (typeof model === 'string') {
|
||||
@ -190,7 +183,7 @@ export class PluginEngine<T extends ProviderId = ProviderId> {
|
||||
|
||||
// 2. 解析模型(如果是字符串)
|
||||
if (typeof model === 'string') {
|
||||
const resolved = await this.pluginManager.executeFirst<ImageModelV2>('resolveModel', modelId, context)
|
||||
const resolved = await this.pluginManager.executeFirst<ImageModelV3>('resolveModel', modelId, context)
|
||||
if (!resolved) {
|
||||
throw new Error(`Failed to resolve image model: ${modelId}`)
|
||||
}
|
||||
@ -226,8 +219,8 @@ export class PluginEngine<T extends ProviderId = ProviderId> {
|
||||
* 提供给AiExecutor使用
|
||||
*/
|
||||
async executeStreamWithPlugins<
|
||||
TParams extends Parameters<typeof streamText | typeof streamObject>[0],
|
||||
TResult extends ReturnType<typeof streamText | typeof streamObject>
|
||||
TParams extends Parameters<typeof streamText>[0],
|
||||
TResult extends ReturnType<typeof streamText>
|
||||
>(
|
||||
methodName: string,
|
||||
params: TParams,
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
/**
|
||||
* Runtime 层类型定义
|
||||
*/
|
||||
import type { ImageModelV2 } from '@ai-sdk/provider'
|
||||
import type { experimental_generateImage, generateObject, generateText, streamObject, streamText } from 'ai'
|
||||
import type { ImageModelV3 } from '@ai-sdk/provider'
|
||||
import type { generateImage, generateText, streamText } from 'ai'
|
||||
|
||||
import { type ModelConfig } from '../models/types'
|
||||
import { type AiPlugin } from '../plugins'
|
||||
@ -17,10 +17,8 @@ export interface RuntimeConfig<T extends ProviderId = ProviderId> {
|
||||
plugins?: AiPlugin[]
|
||||
}
|
||||
|
||||
export type generateImageParams = Omit<Parameters<typeof experimental_generateImage>[0], 'model'> & {
|
||||
model: string | ImageModelV2
|
||||
export type generateImageParams = Omit<Parameters<typeof generateImage>[0], 'model'> & {
|
||||
model: string | ImageModelV3
|
||||
}
|
||||
export type generateObjectParams = Parameters<typeof generateObject>[0]
|
||||
export type generateTextParams = Parameters<typeof generateText>[0]
|
||||
export type streamObjectParams = Parameters<typeof streamObject>[0]
|
||||
export type streamTextParams = Parameters<typeof streamText>[0]
|
||||
|
||||
@ -10,7 +10,6 @@ export {
|
||||
createExecutor,
|
||||
createOpenAICompatibleExecutor,
|
||||
generateImage,
|
||||
generateObject,
|
||||
generateText,
|
||||
streamText
|
||||
} from './core/runtime'
|
||||
@ -26,7 +25,7 @@ export { PluginEngine } from './core/runtime/pluginEngine'
|
||||
|
||||
// ==================== AI SDK 常用类型导出 ====================
|
||||
// 直接导出 AI SDK 的常用类型,方便使用
|
||||
export type { LanguageModelV2Middleware, LanguageModelV2StreamPart } from '@ai-sdk/provider'
|
||||
export type { LanguageModelV3Middleware, LanguageModelV3StreamPart } from '@ai-sdk/provider'
|
||||
export type { ToolCall } from '@ai-sdk/provider-utils'
|
||||
export type { ReasoningPart } from '@ai-sdk/provider-utils'
|
||||
|
||||
|
||||
@ -73,7 +73,7 @@ describe('ModelAdapter', () => {
|
||||
name: 'OpenAI GPT-4o',
|
||||
description: 'Gateway entry',
|
||||
specification: {
|
||||
specificationVersion: 'v2',
|
||||
specificationVersion: 'v3',
|
||||
provider: 'openai',
|
||||
modelId: 'gpt-4o'
|
||||
}
|
||||
|
||||
633
yarn.lock
633
yarn.lock
@ -74,175 +74,150 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/amazon-bedrock@npm:^3.0.61":
|
||||
version: 3.0.61
|
||||
resolution: "@ai-sdk/amazon-bedrock@npm:3.0.61"
|
||||
"@ai-sdk/amazon-bedrock@npm:^4.0.0-beta.107":
|
||||
version: 4.0.0-beta.107
|
||||
resolution: "@ai-sdk/amazon-bedrock@npm:4.0.0-beta.107"
|
||||
dependencies:
|
||||
"@ai-sdk/anthropic": "npm:2.0.49"
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.17"
|
||||
"@ai-sdk/anthropic": "npm:3.0.0-beta.96"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
"@smithy/eventstream-codec": "npm:^4.0.1"
|
||||
"@smithy/util-utf8": "npm:^4.0.0"
|
||||
aws4fetch: "npm:^1.0.20"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/10514edcaae942a43e8990685d99dc8e66025b54d4ed6e983229867c7be2d4ac6d6aebe7bf8fcea550525ae86946b8439e1702999778a21e0ad7bc3ca6ee40c7
|
||||
checksum: 10c0/20fb1a6222d72afa839d6beed3fa747ec75f1b2d63a9f22b3697d4ea149313ad9cdc6d39746c888090724dfc09d80affb2b8ce0eae587a6bbe64737f8cadcf55
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/anthropic@npm:2.0.49, @ai-sdk/anthropic@npm:^2.0.49":
|
||||
version: 2.0.49
|
||||
resolution: "@ai-sdk/anthropic@npm:2.0.49"
|
||||
"@ai-sdk/anthropic@npm:3.0.0-beta.96, @ai-sdk/anthropic@npm:^3.0.0-beta.96":
|
||||
version: 3.0.0-beta.96
|
||||
resolution: "@ai-sdk/anthropic@npm:3.0.0-beta.96"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.17"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/7aedd5b4be51c4601f54361de47db60fa03a3d1926957771294961cc6c88aac6eddcd1529324bc2a71734d36f35103225619f2aedf0c01c99f678e97e2bfff50
|
||||
checksum: 10c0/9494a50eb70e1b88e45292a09e0f097ba45ed2cf30bf9c49057b8580d8d3209c32538d2e81a582e42965c6129ce64384cd88445aabef79af425a97a22b5fbd51
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/anthropic@npm:2.0.56":
|
||||
version: 2.0.56
|
||||
resolution: "@ai-sdk/anthropic@npm:2.0.56"
|
||||
"@ai-sdk/azure@npm:^3.0.0-beta.113":
|
||||
version: 3.0.0-beta.113
|
||||
resolution: "@ai-sdk/azure@npm:3.0.0-beta.113"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.19"
|
||||
"@ai-sdk/openai": "npm:3.0.0-beta.111"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/f2b6029c92443f831a2d124420e805d057668003067b1f677a4292d02f27aa3ad533374ea996d77ede7746a42c46fb94a8f2d8c0e7758a4555ea18c8b532052c
|
||||
checksum: 10c0/59b73cc871d827b35e7e35fb68c3ddc03baee277fd7202b8b1552eb621ae9b182e81d164886f83651dabec03f3012064405afa878d028f218ddb58eafdad3a28
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/azure@npm:^2.0.87":
|
||||
version: 2.0.87
|
||||
resolution: "@ai-sdk/azure@npm:2.0.87"
|
||||
"@ai-sdk/cerebras@npm:^2.0.0-beta.63":
|
||||
version: 2.0.0-beta.63
|
||||
resolution: "@ai-sdk/cerebras@npm:2.0.0-beta.63"
|
||||
dependencies:
|
||||
"@ai-sdk/openai": "npm:2.0.85"
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.19"
|
||||
"@ai-sdk/openai-compatible": "npm:2.0.0-beta.59"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/77b0c74966144c3ca715e8357bd36502bd7055edb74a4005d9537cf9175cd9b33df32164a5e3f1925b1d311ed1a4eaf5b8fad6abdb81e1b6c14ba5ea78479f34
|
||||
checksum: 10c0/4b4b4390c7f4a3076a7085ba32af38302a13f962f35668c16f6562ba3b65497f9b81ddccd275108138cf8619f978d7387c503e149a387ecb8a9a5ab3d55f917d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/cerebras@npm:^1.0.31":
|
||||
version: 1.0.31
|
||||
resolution: "@ai-sdk/cerebras@npm:1.0.31"
|
||||
"@ai-sdk/deepseek@npm:^2.0.0-beta.61":
|
||||
version: 2.0.0-beta.61
|
||||
resolution: "@ai-sdk/deepseek@npm:2.0.0-beta.61"
|
||||
dependencies:
|
||||
"@ai-sdk/openai-compatible": "npm:1.0.27"
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.17"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/0723f0041b767acfb7a9d903d51d5c95af83c31c89b83f242cb5c02a076d8b98f6567334eb32dcdbc8565b55ded2aa5195ca68612bbe7b13e68253cf4ef412d6
|
||||
checksum: 10c0/968e09b923ec1fbaa2a2501460af8f4b80f5587335eaddd444dbb405bb07fbca1392944a4d35b30c01c2b2d3adb4cd107deb05053629356f9197851423d31667
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/deepseek@npm:^1.0.31":
|
||||
version: 1.0.31
|
||||
resolution: "@ai-sdk/deepseek@npm:1.0.31"
|
||||
"@ai-sdk/gateway@npm:2.0.0-beta.91":
|
||||
version: 2.0.0-beta.91
|
||||
resolution: "@ai-sdk/gateway@npm:2.0.0-beta.91"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.18"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/851965392ce03c85ffacf74900ec159bccef491b9bf6142ac08bc25f4d2bbf4df1d754e76fe9793403dee4a8da76fb6b7a9ded84491ec309bdea9aa478e6f542
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/gateway@npm:2.0.13":
|
||||
version: 2.0.13
|
||||
resolution: "@ai-sdk/gateway@npm:2.0.13"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.17"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
"@vercel/oidc": "npm:3.0.5"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/c92413bdcbd05bca15d4f96fd9cd2ec3410870cacf9902181fcc9677bd00860d7920aac494a25e307a3d4c6aa2d68f87e6771402019062c88948a767b4a31280
|
||||
checksum: 10c0/7b4227d215e1abaebe9e596dda57dd921f540aab83ad36c99663a2f1e4794c0e58a5301d0d77ad7078a1e73d5aa7968ac9ceb5fd4e40c00e32fefa0b4849007f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/gateway@npm:^2.0.15":
|
||||
version: 2.0.15
|
||||
resolution: "@ai-sdk/gateway@npm:2.0.15"
|
||||
"@ai-sdk/google-vertex@npm:^4.0.0-beta.132":
|
||||
version: 4.0.0-beta.132
|
||||
resolution: "@ai-sdk/google-vertex@npm:4.0.0-beta.132"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.17"
|
||||
"@vercel/oidc": "npm:3.0.5"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/36cbd8a23d3d9c70f274f808b4efc23867b96476a1195b96d9a65e4b19bd19a2120b70d790338734cab91941bab4bca5613a11236b999706103053d7e6992082
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/google-vertex@npm:^3.0.94":
|
||||
version: 3.0.94
|
||||
resolution: "@ai-sdk/google-vertex@npm:3.0.94"
|
||||
dependencies:
|
||||
"@ai-sdk/anthropic": "npm:2.0.56"
|
||||
"@ai-sdk/google": "npm:2.0.49"
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.19"
|
||||
"@ai-sdk/anthropic": "npm:3.0.0-beta.96"
|
||||
"@ai-sdk/google": "npm:3.0.0-beta.88"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
google-auth-library: "npm:^10.5.0"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/68e2ee9e6525a5e43f90304980e64bf2a4227fd3ce74a7bf17e5ace094ea1bca8f8f18a8cc332a492fee4b912568a768f7479a4eed8148b84e7de1adf4104ad0
|
||||
checksum: 10c0/82cd69b23303010dbf67a39e69127a5efd2a784d69c86ac86c58759407bed4414ba42a748fa7a9ec0dd962bb3dc658e087cb4fef5cad68b4e5d5d76674c51802
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/google@npm:2.0.49":
|
||||
version: 2.0.49
|
||||
resolution: "@ai-sdk/google@npm:2.0.49"
|
||||
"@ai-sdk/google@npm:3.0.0-beta.88, @ai-sdk/google@npm:^3.0.0-beta.88":
|
||||
version: 3.0.0-beta.88
|
||||
resolution: "@ai-sdk/google@npm:3.0.0-beta.88"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.19"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/f3f8acfcd956edc7d807d22963d5eff0f765418f1f2c7d18615955ccdfcebb4d43cc26ce1f712c6a53572f1d8becc0773311b77b1f1bf1af87d675c5f017d5a4
|
||||
checksum: 10c0/6a9e40bfdc20d2c9ae6fc4734d59c5f6fcb6de788159838395bc15ad1200fed4f0f160a44f5aca2d2012a12dbcf568af5be3f6859da2c579e523d3467754ab55
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/google@patch:@ai-sdk/google@npm%3A2.0.49#~/.yarn/patches/@ai-sdk-google-npm-2.0.49-84720f41bd.patch":
|
||||
version: 2.0.49
|
||||
resolution: "@ai-sdk/google@patch:@ai-sdk/google@npm%3A2.0.49#~/.yarn/patches/@ai-sdk-google-npm-2.0.49-84720f41bd.patch::version=2.0.49&hash=406c25"
|
||||
"@ai-sdk/huggingface@npm:^1.0.0-beta.55":
|
||||
version: 1.0.0-beta.55
|
||||
resolution: "@ai-sdk/huggingface@npm:1.0.0-beta.55"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.19"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/8d4d881583c2301dce8a4e3066af2ba7d99b30520b6219811f90271c93bf8a07dc23e752fa25ffd0e72c6ec56e97d40d32e04072a362accf7d01a745a2d2a352
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/huggingface@npm:^0.0.10":
|
||||
version: 0.0.10
|
||||
resolution: "@ai-sdk/huggingface@npm:0.0.10"
|
||||
dependencies:
|
||||
"@ai-sdk/openai-compatible": "npm:1.0.27"
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.17"
|
||||
"@ai-sdk/openai-compatible": "npm:2.0.0-beta.59"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4
|
||||
checksum: 10c0/df9f48cb1259dca7ea304a2136d69019350102901c672b90ea26a588c284aebc904a483be3967f2548c1c55dbc4db641e25a2202c435fa53038fa413c0f393df
|
||||
checksum: 10c0/64482ca0e0be4a3c9430d2eb5358a655894456d877612def9f69f6324bc22483d51f88529674703fd33bf370696e127b60258da15a4a89ac6242b163483ec5d9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/mistral@npm:^2.0.24":
|
||||
version: 2.0.24
|
||||
resolution: "@ai-sdk/mistral@npm:2.0.24"
|
||||
"@ai-sdk/mistral@npm:^3.0.0-beta.60":
|
||||
version: 3.0.0-beta.60
|
||||
resolution: "@ai-sdk/mistral@npm:3.0.0-beta.60"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.17"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/da0d37822fa96eb55e41a3a663488c8bfeb492b5dbde3914560fad4f0b70c47004bd649bf0c01359a4fb09d8ab2c63385e94ab280cf554d8ffe35fb5afbad340
|
||||
checksum: 10c0/fbd9bdf1d166ce323e34570af224818366050b51542ec6cc5b0816a9f528f925c817faf945a6224cdd1f9475c01c37355c6654831febd2e857d1dcfd29410cc5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/openai-compatible@npm:1.0.27, @ai-sdk/openai-compatible@npm:^1.0.19":
|
||||
"@ai-sdk/openai-compatible@npm:2.0.0-beta.59, @ai-sdk/openai-compatible@npm:^2.0.0-beta.59":
|
||||
version: 2.0.0-beta.59
|
||||
resolution: "@ai-sdk/openai-compatible@npm:2.0.0-beta.59"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/9fe2a98fa0467f180b29e222510937f9d70ea89f856331799f2a3d89cc1c21dc82c6d34f39d1d53c8e60e775acf78d9857a6aaacdb2eed6e2162fd25b486f4a8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/openai-compatible@npm:^1.0.19":
|
||||
version: 1.0.27
|
||||
resolution: "@ai-sdk/openai-compatible@npm:1.0.27"
|
||||
dependencies:
|
||||
@ -254,30 +229,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/openai-compatible@npm:^1.0.28":
|
||||
version: 1.0.28
|
||||
resolution: "@ai-sdk/openai-compatible@npm:1.0.28"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.18"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/f484774e0094a12674f392d925038a296191723b4c76bd833eabf1b334cf3c84fe77a2e2c5fbac974ec5e18340e113c6a81c86d957c9529a7a60e87cd390ada8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/openai-compatible@patch:@ai-sdk/openai-compatible@npm%3A1.0.27#~/.yarn/patches/@ai-sdk-openai-compatible-npm-1.0.27-06f74278cf.patch":
|
||||
version: 1.0.27
|
||||
resolution: "@ai-sdk/openai-compatible@patch:@ai-sdk/openai-compatible@npm%3A1.0.27#~/.yarn/patches/@ai-sdk-openai-compatible-npm-1.0.27-06f74278cf.patch::version=1.0.27&hash=c44b76"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.17"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/80c8331bc5fc62dc23d99d861bdc76e4eaf8b4b071d0b2bfa42fbd87f50b1bcdfa5ce4a4deaf7026a603a1ba6eaf5c884d87e3c58b4d6515c220121d3f421de5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/openai@npm:2.0.85":
|
||||
version: 2.0.85
|
||||
resolution: "@ai-sdk/openai@npm:2.0.85"
|
||||
@ -290,6 +241,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/openai@npm:3.0.0-beta.111, @ai-sdk/openai@npm:^3.0.0-beta.111":
|
||||
version: 3.0.0-beta.111
|
||||
resolution: "@ai-sdk/openai@npm:3.0.0-beta.111"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/634cbc5b6d8343caa364b00192268e116e829709b6f19f137e5eed71db302bc14a4cd47086b2aaa7be96e7b8b9a540ca112c1e16ca566058b77d61043d606135
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/openai@patch:@ai-sdk/openai@npm%3A2.0.85#~/.yarn/patches/@ai-sdk-openai-npm-2.0.85-27483d1d6a.patch":
|
||||
version: 2.0.85
|
||||
resolution: "@ai-sdk/openai@patch:@ai-sdk/openai@npm%3A2.0.85#~/.yarn/patches/@ai-sdk-openai-npm-2.0.85-27483d1d6a.patch::version=2.0.85&hash=81ee54"
|
||||
@ -302,15 +265,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/perplexity@npm:^2.0.20":
|
||||
version: 2.0.20
|
||||
resolution: "@ai-sdk/perplexity@npm:2.0.20"
|
||||
"@ai-sdk/perplexity@npm:^3.0.0-beta.60":
|
||||
version: 3.0.0-beta.60
|
||||
resolution: "@ai-sdk/perplexity@npm:3.0.0-beta.60"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.17"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/7c48da46c2fec30749b261167384dc5d10bb405d31b69fadf9903ea6df32917470b4d13654d36e3465f96bd63670f94f2c6b1388abfe9f04134b5bf4adc3a770
|
||||
checksum: 10c0/e55e4e5032a1a3e329a5a5f497e3f7efb3d5c89fa508215afaa52520c848a132eaf2300e3304f4bde785319b8e24f17e34fe5a4ab193b63c493f798231cec058
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -327,19 +290,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/provider-utils@npm:3.0.18":
|
||||
version: 3.0.18
|
||||
resolution: "@ai-sdk/provider-utils@npm:3.0.18"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@standard-schema/spec": "npm:^1.0.0"
|
||||
eventsource-parser: "npm:^3.0.6"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/209c15b0dceef0ba95a7d3de544be0a417ad4a0bd5143496b3966a35fedf144156d93a42ff8c3d7db56781b9836bafc8c132c98978c49240e55bc1a36e18a67f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/provider-utils@npm:3.0.19":
|
||||
version: 3.0.19
|
||||
resolution: "@ai-sdk/provider-utils@npm:3.0.19"
|
||||
@ -353,6 +303,19 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/provider-utils@npm:4.0.0-beta.58, @ai-sdk/provider-utils@npm:^4.0.0-beta.58":
|
||||
version: 4.0.0-beta.58
|
||||
resolution: "@ai-sdk/provider-utils@npm:4.0.0-beta.58"
|
||||
dependencies:
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@standard-schema/spec": "npm:^1.1.0"
|
||||
eventsource-parser: "npm:^3.0.6"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/1b8b673836da283b6464e115280086e8d52de6af7abca5388978ad5ef02b54b7be2cef2c27a1409c83d4abebaa277d7363b0ac0bef1fd6ec02d63ce0cfe1d125
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/provider@npm:2.0.0, @ai-sdk/provider@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "@ai-sdk/provider@npm:2.0.0"
|
||||
@ -362,6 +325,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/provider@npm:3.0.0-beta.31, @ai-sdk/provider@npm:^3.0.0-beta.31":
|
||||
version: 3.0.0-beta.31
|
||||
resolution: "@ai-sdk/provider@npm:3.0.0-beta.31"
|
||||
dependencies:
|
||||
json-schema: "npm:^0.4.0"
|
||||
checksum: 10c0/6c1e4c06d615725822387f68bef76c2bf41367efeb32c2c79484882ca21e137c97028e8dc9acad85e09a24632c07c5b9bd0ebf3431cc0492ae23e130032d562f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/provider@npm:^2.1.0-beta.4":
|
||||
version: 2.1.0-beta.5
|
||||
resolution: "@ai-sdk/provider@npm:2.1.0-beta.5"
|
||||
@ -371,25 +343,23 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/test-server@npm:^0.0.1":
|
||||
version: 0.0.1
|
||||
resolution: "@ai-sdk/test-server@npm:0.0.1"
|
||||
dependencies:
|
||||
msw: "npm:^2.7.0"
|
||||
checksum: 10c0/465fbb0444825f169333c98b2f0b12fe51914b6525f2d36fd4a2b5b03d2ac736060519fd14e0fcffdcba615d8b563bc39ddeb11fea6b1e6218419693ce62e029
|
||||
"@ai-sdk/test-server@npm:1.0.0-beta.0":
|
||||
version: 1.0.0-beta.0
|
||||
resolution: "@ai-sdk/test-server@npm:1.0.0-beta.0"
|
||||
checksum: 10c0/06d0bfc83b75065d777317b878dee0aac917c976774e2b8e4a196a90100a4d309dcf25a3f5bb56ba64dc5342f6fa443afa9939aa5094a178efa2c182f99b0243
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ai-sdk/xai@npm:^2.0.36":
|
||||
version: 2.0.36
|
||||
resolution: "@ai-sdk/xai@npm:2.0.36"
|
||||
"@ai-sdk/xai@npm:^3.0.0-beta.68":
|
||||
version: 3.0.0-beta.68
|
||||
resolution: "@ai-sdk/xai@npm:3.0.0-beta.68"
|
||||
dependencies:
|
||||
"@ai-sdk/openai-compatible": "npm:1.0.27"
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.17"
|
||||
"@ai-sdk/openai-compatible": "npm:2.0.0-beta.59"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/f4c84050a96b58442e69f7048253989233da27ca53b54b9372c16adf745806a761d1b0b507516ef003f58cae06e327d30c95a22cbcbb5ec6252d3c4d645f1828
|
||||
checksum: 10c0/79590ee8af808871d6b319ee241797b1acd6a355d2626eda32c528a3111e09096948fdd9d5391d19df69a6bbe68d52ac8125bb07977fabce5cf0f2d2a063b7a5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -1877,13 +1847,13 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@cherrystudio/ai-core@workspace:packages/aiCore"
|
||||
dependencies:
|
||||
"@ai-sdk/anthropic": "npm:^2.0.49"
|
||||
"@ai-sdk/azure": "npm:^2.0.87"
|
||||
"@ai-sdk/deepseek": "npm:^1.0.31"
|
||||
"@ai-sdk/openai-compatible": "patch:@ai-sdk/openai-compatible@npm%3A1.0.27#~/.yarn/patches/@ai-sdk-openai-compatible-npm-1.0.27-06f74278cf.patch"
|
||||
"@ai-sdk/provider": "npm:^2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:^3.0.17"
|
||||
"@ai-sdk/xai": "npm:^2.0.36"
|
||||
"@ai-sdk/anthropic": "npm:^3.0.0-beta.96"
|
||||
"@ai-sdk/azure": "npm:^3.0.0-beta.113"
|
||||
"@ai-sdk/deepseek": "npm:^2.0.0-beta.61"
|
||||
"@ai-sdk/openai-compatible": "npm:^2.0.0-beta.59"
|
||||
"@ai-sdk/provider": "npm:^3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:^4.0.0-beta.58"
|
||||
"@ai-sdk/xai": "npm:^3.0.0-beta.68"
|
||||
tsdown: "npm:^0.12.9"
|
||||
typescript: "npm:^5.0.0"
|
||||
vitest: "npm:^3.2.4"
|
||||
@ -1900,9 +1870,9 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@cherrystudio/ai-sdk-provider@workspace:packages/ai-sdk-provider"
|
||||
dependencies:
|
||||
"@ai-sdk/openai-compatible": "npm:^1.0.28"
|
||||
"@ai-sdk/provider": "npm:^2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:^3.0.17"
|
||||
"@ai-sdk/openai-compatible": "npm:^2.0.0-beta.59"
|
||||
"@ai-sdk/provider": "npm:^3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:^4.0.0-beta.58"
|
||||
tsdown: "npm:^0.13.3"
|
||||
typescript: "npm:^5.8.2"
|
||||
vitest: "npm:^3.2.4"
|
||||
@ -3777,68 +3747,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@inquirer/ansi@npm:^1.0.2":
|
||||
version: 1.0.2
|
||||
resolution: "@inquirer/ansi@npm:1.0.2"
|
||||
checksum: 10c0/8e408cc628923aa93402e66657482ccaa2ad5174f9db526d9a8b443f9011e9cd8f70f0f534f5fe3857b8a9df3bce1e25f66c96f666d6750490bd46e2b4f3b829
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@inquirer/confirm@npm:^5.0.0":
|
||||
version: 5.1.20
|
||||
resolution: "@inquirer/confirm@npm:5.1.20"
|
||||
dependencies:
|
||||
"@inquirer/core": "npm:^10.3.1"
|
||||
"@inquirer/type": "npm:^3.0.10"
|
||||
peerDependencies:
|
||||
"@types/node": ">=18"
|
||||
peerDependenciesMeta:
|
||||
"@types/node":
|
||||
optional: true
|
||||
checksum: 10c0/390cca939f9e9f21cb785624302d4cfa4c009ae67d77a899c71fbe25ec06ee5658a6007559ac78e5c07726b0d4256ab1da8d3549ce677fa111d3ab8a8d1737ff
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@inquirer/core@npm:^10.3.1":
|
||||
version: 10.3.1
|
||||
resolution: "@inquirer/core@npm:10.3.1"
|
||||
dependencies:
|
||||
"@inquirer/ansi": "npm:^1.0.2"
|
||||
"@inquirer/figures": "npm:^1.0.15"
|
||||
"@inquirer/type": "npm:^3.0.10"
|
||||
cli-width: "npm:^4.1.0"
|
||||
mute-stream: "npm:^3.0.0"
|
||||
signal-exit: "npm:^4.1.0"
|
||||
wrap-ansi: "npm:^6.2.0"
|
||||
yoctocolors-cjs: "npm:^2.1.3"
|
||||
peerDependencies:
|
||||
"@types/node": ">=18"
|
||||
peerDependenciesMeta:
|
||||
"@types/node":
|
||||
optional: true
|
||||
checksum: 10c0/077626de567236c67e15947f02fa4266d56aa47f2778b2a3b3637c541752c00ef78ad9bd3614de50d5a8501eb442807f75a0864101ca786df8f39c00b1b6c86d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@inquirer/figures@npm:^1.0.15":
|
||||
version: 1.0.15
|
||||
resolution: "@inquirer/figures@npm:1.0.15"
|
||||
checksum: 10c0/6e39a040d260ae234ae220180b7994ff852673e20be925f8aa95e78c7934d732b018cbb4d0ec39e600a410461bcb93dca771e7de23caa10630d255692e440f69
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@inquirer/type@npm:^3.0.10":
|
||||
version: 3.0.10
|
||||
resolution: "@inquirer/type@npm:3.0.10"
|
||||
peerDependencies:
|
||||
"@types/node": ">=18"
|
||||
peerDependenciesMeta:
|
||||
"@types/node":
|
||||
optional: true
|
||||
checksum: 10c0/a846c7a570e3bf2657d489bcc5dcdc3179d24c7323719de1951dcdb722400ac76e5b2bfe9765d0a789bc1921fac810983d7999f021f30a78a6a174c23fc78dc9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@isaacs/balanced-match@npm:^4.0.1":
|
||||
version: 4.0.1
|
||||
resolution: "@isaacs/balanced-match@npm:4.0.1"
|
||||
@ -4840,20 +4748,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@mswjs/interceptors@npm:^0.40.0":
|
||||
version: 0.40.0
|
||||
resolution: "@mswjs/interceptors@npm:0.40.0"
|
||||
dependencies:
|
||||
"@open-draft/deferred-promise": "npm:^2.2.0"
|
||||
"@open-draft/logger": "npm:^0.3.0"
|
||||
"@open-draft/until": "npm:^2.0.0"
|
||||
is-node-process: "npm:^1.2.0"
|
||||
outvariant: "npm:^1.4.3"
|
||||
strict-event-emitter: "npm:^0.5.1"
|
||||
checksum: 10c0/4500f17b65910b2633182fdb15a81ccb6ccd4488a8c45bc2f7acdaaff4621c3cce5362e6b59ddc4fa28d315d0efb0608fd1f0d536bc5345141f8ac03fd7fab22
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@mux/mux-data-google-ima@npm:0.2.8":
|
||||
version: 0.2.8
|
||||
resolution: "@mux/mux-data-google-ima@npm:0.2.8"
|
||||
@ -5086,30 +4980,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@open-draft/deferred-promise@npm:^2.2.0":
|
||||
version: 2.2.0
|
||||
resolution: "@open-draft/deferred-promise@npm:2.2.0"
|
||||
checksum: 10c0/eafc1b1d0fc8edb5e1c753c5e0f3293410b40dde2f92688211a54806d4136887051f39b98c1950370be258483deac9dfd17cf8b96557553765198ef2547e4549
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@open-draft/logger@npm:^0.3.0":
|
||||
version: 0.3.0
|
||||
resolution: "@open-draft/logger@npm:0.3.0"
|
||||
dependencies:
|
||||
is-node-process: "npm:^1.2.0"
|
||||
outvariant: "npm:^1.4.0"
|
||||
checksum: 10c0/90010647b22e9693c16258f4f9adb034824d1771d3baa313057b9a37797f571181005bc50415a934eaf7c891d90ff71dcd7a9d5048b0b6bb438f31bef2c7c5c1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@open-draft/until@npm:^2.0.0":
|
||||
version: 2.1.0
|
||||
resolution: "@open-draft/until@npm:2.1.0"
|
||||
checksum: 10c0/61d3f99718dd86bb393fee2d7a785f961dcaf12f2055f0c693b27f4d0cd5f7a03d498a6d9289773b117590d794a43cd129366fd8e99222e4832f67b1653d54cf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@openrouter/ai-sdk-provider@npm:^1.2.8":
|
||||
version: 1.2.8
|
||||
resolution: "@openrouter/ai-sdk-provider@npm:1.2.8"
|
||||
@ -7269,6 +7139,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@standard-schema/spec@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "@standard-schema/spec@npm:1.1.0"
|
||||
checksum: 10c0/d90f55acde4b2deb983529c87e8025fa693de1a5e8b49ecc6eb84d1fd96328add0e03d7d551442156c7432fd78165b2c26ff561b970a9a881f046abb78d6a526
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@strongtz/win32-arm64-msvc@npm:^0.4.7":
|
||||
version: 0.4.7
|
||||
resolution: "@strongtz/win32-arm64-msvc@npm:0.4.7"
|
||||
@ -8976,13 +8853,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/statuses@npm:^2.0.4":
|
||||
version: 2.0.6
|
||||
resolution: "@types/statuses@npm:2.0.6"
|
||||
checksum: 10c0/dd88c220b0e2c6315686289525fd61472d2204d2e4bef4941acfb76bda01d3066f749ac74782aab5b537a45314fcd7d6261eefa40b6ec872691f5803adaa608d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/stylis@npm:4.2.5":
|
||||
version: 4.2.5
|
||||
resolution: "@types/stylis@npm:4.2.5"
|
||||
@ -10050,17 +9920,17 @@ __metadata:
|
||||
"@agentic/exa": "npm:^7.3.3"
|
||||
"@agentic/searxng": "npm:^7.3.3"
|
||||
"@agentic/tavily": "npm:^7.3.3"
|
||||
"@ai-sdk/amazon-bedrock": "npm:^3.0.61"
|
||||
"@ai-sdk/anthropic": "npm:^2.0.49"
|
||||
"@ai-sdk/cerebras": "npm:^1.0.31"
|
||||
"@ai-sdk/gateway": "npm:^2.0.15"
|
||||
"@ai-sdk/google": "patch:@ai-sdk/google@npm%3A2.0.49#~/.yarn/patches/@ai-sdk-google-npm-2.0.49-84720f41bd.patch"
|
||||
"@ai-sdk/google-vertex": "npm:^3.0.94"
|
||||
"@ai-sdk/huggingface": "npm:^0.0.10"
|
||||
"@ai-sdk/mistral": "npm:^2.0.24"
|
||||
"@ai-sdk/openai": "patch:@ai-sdk/openai@npm%3A2.0.85#~/.yarn/patches/@ai-sdk-openai-npm-2.0.85-27483d1d6a.patch"
|
||||
"@ai-sdk/perplexity": "npm:^2.0.20"
|
||||
"@ai-sdk/test-server": "npm:^0.0.1"
|
||||
"@ai-sdk/amazon-bedrock": "npm:^4.0.0-beta.107"
|
||||
"@ai-sdk/anthropic": "npm:^3.0.0-beta.96"
|
||||
"@ai-sdk/cerebras": "npm:^2.0.0-beta.63"
|
||||
"@ai-sdk/gateway": "npm:2.0.0-beta.91"
|
||||
"@ai-sdk/google": "npm:^3.0.0-beta.88"
|
||||
"@ai-sdk/google-vertex": "npm:^4.0.0-beta.132"
|
||||
"@ai-sdk/huggingface": "npm:^1.0.0-beta.55"
|
||||
"@ai-sdk/mistral": "npm:^3.0.0-beta.60"
|
||||
"@ai-sdk/openai": "npm:^3.0.0-beta.111"
|
||||
"@ai-sdk/perplexity": "npm:^3.0.0-beta.60"
|
||||
"@ai-sdk/test-server": "npm:1.0.0-beta.0"
|
||||
"@ant-design/v5-patch-for-react-19": "npm:^1.0.3"
|
||||
"@anthropic-ai/claude-agent-sdk": "patch:@anthropic-ai/claude-agent-sdk@npm%3A0.1.62#~/.yarn/patches/@anthropic-ai-claude-agent-sdk-npm-0.1.62-23ae56f8c8.patch"
|
||||
"@anthropic-ai/sdk": "npm:^0.41.0"
|
||||
@ -10188,7 +10058,7 @@ __metadata:
|
||||
"@viz-js/lang-dot": "npm:^1.0.5"
|
||||
"@viz-js/viz": "npm:^3.14.0"
|
||||
"@xyflow/react": "npm:^12.4.4"
|
||||
ai: "npm:^5.0.98"
|
||||
ai: "npm:^6.0.0-beta.166"
|
||||
antd: "patch:antd@npm%3A5.27.0#~/.yarn/patches/antd-npm-5.27.0-aa91c36546.patch"
|
||||
archiver: "npm:^7.0.1"
|
||||
async-mutex: "npm:^0.5.0"
|
||||
@ -10425,17 +10295,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ai@npm:^5.0.98":
|
||||
version: 5.0.98
|
||||
resolution: "ai@npm:5.0.98"
|
||||
"ai@npm:^6.0.0-beta.166":
|
||||
version: 6.0.0-beta.166
|
||||
resolution: "ai@npm:6.0.0-beta.166"
|
||||
dependencies:
|
||||
"@ai-sdk/gateway": "npm:2.0.13"
|
||||
"@ai-sdk/provider": "npm:2.0.0"
|
||||
"@ai-sdk/provider-utils": "npm:3.0.17"
|
||||
"@ai-sdk/gateway": "npm:2.0.0-beta.91"
|
||||
"@ai-sdk/provider": "npm:3.0.0-beta.31"
|
||||
"@ai-sdk/provider-utils": "npm:4.0.0-beta.58"
|
||||
"@opentelemetry/api": "npm:1.9.0"
|
||||
peerDependencies:
|
||||
zod: ^3.25.76 || ^4.1.8
|
||||
checksum: 10c0/87c684263dd8f944287b3241255841aec092e487480c4abc6b28fdcea3a36f998f96022b1972f00d083525ccb95517dadcba6a69cbef1eadb0d6465041dcc092
|
||||
checksum: 10c0/4c91d75352d54eca2b57cb754896141d9e309e94656c19b1bd76a6f5fa5dc8164265f5d80a775154aa25b13c5b95321a6028d55b5c139e446318365e7a76545c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -11812,13 +11682,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cli-width@npm:^4.1.0":
|
||||
version: 4.1.0
|
||||
resolution: "cli-width@npm:4.1.0"
|
||||
checksum: 10c0/1fbd56413578f6117abcaf858903ba1f4ad78370a4032f916745fa2c7e390183a9d9029cf837df320b0fdce8137668e522f60a30a5f3d6529ff3872d265a955f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cliui@npm:^8.0.1":
|
||||
version: 8.0.1
|
||||
resolution: "cliui@npm:8.0.1"
|
||||
@ -12256,13 +12119,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cookie@npm:^1.0.2":
|
||||
version: 1.0.2
|
||||
resolution: "cookie@npm:1.0.2"
|
||||
checksum: 10c0/fd25fe79e8fbcfcaf6aa61cd081c55d144eeeba755206c058682257cb38c4bd6795c6620de3f064c740695bb65b7949ebb1db7a95e4636efb8357a335ad3f54b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"copy-to-clipboard@npm:^3.3.3":
|
||||
version: 3.3.3
|
||||
resolution: "copy-to-clipboard@npm:3.3.3"
|
||||
@ -15826,13 +15682,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"graphql@npm:^16.8.1":
|
||||
version: 16.12.0
|
||||
resolution: "graphql@npm:16.12.0"
|
||||
checksum: 10c0/b6fffa4e8a4e4a9933ebe85e7470b346dbf49050c1a482fac5e03e4a1a7bed2ecd3a4c97e29f04457af929464bc5e4f2aac991090c2f320111eef26e902a5c75
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"gray-matter@npm:^4.0.3":
|
||||
version: 4.0.3
|
||||
resolution: "gray-matter@npm:4.0.3"
|
||||
@ -16140,13 +15989,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"headers-polyfill@npm:^4.0.2":
|
||||
version: 4.0.3
|
||||
resolution: "headers-polyfill@npm:4.0.3"
|
||||
checksum: 10c0/53e85b2c6385f8d411945fb890c5369f1469ce8aa32a6e8d28196df38568148de640c81cf88cbc7c67767103dd9acba48f4f891982da63178fc6e34560022afe
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"hls-video-element@npm:^1.5.6":
|
||||
version: 1.5.7
|
||||
resolution: "hls-video-element@npm:1.5.7"
|
||||
@ -16726,13 +16568,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"is-node-process@npm:^1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "is-node-process@npm:1.2.0"
|
||||
checksum: 10c0/5b24fda6776d00e42431d7bcd86bce81cb0b6cabeb944142fe7b077a54ada2e155066ad06dbe790abdb397884bdc3151e04a9707b8cd185099efbc79780573ed
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"is-number@npm:^7.0.0":
|
||||
version: 7.0.0
|
||||
resolution: "is-number@npm:7.0.0"
|
||||
@ -19525,39 +19360,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"msw@npm:^2.7.0":
|
||||
version: 2.12.1
|
||||
resolution: "msw@npm:2.12.1"
|
||||
dependencies:
|
||||
"@inquirer/confirm": "npm:^5.0.0"
|
||||
"@mswjs/interceptors": "npm:^0.40.0"
|
||||
"@open-draft/deferred-promise": "npm:^2.2.0"
|
||||
"@types/statuses": "npm:^2.0.4"
|
||||
cookie: "npm:^1.0.2"
|
||||
graphql: "npm:^16.8.1"
|
||||
headers-polyfill: "npm:^4.0.2"
|
||||
is-node-process: "npm:^1.2.0"
|
||||
outvariant: "npm:^1.4.3"
|
||||
path-to-regexp: "npm:^6.3.0"
|
||||
picocolors: "npm:^1.1.1"
|
||||
rettime: "npm:^0.7.0"
|
||||
statuses: "npm:^2.0.2"
|
||||
strict-event-emitter: "npm:^0.5.1"
|
||||
tough-cookie: "npm:^6.0.0"
|
||||
type-fest: "npm:^4.26.1"
|
||||
until-async: "npm:^3.0.2"
|
||||
yargs: "npm:^17.7.2"
|
||||
peerDependencies:
|
||||
typescript: ">= 4.8.x"
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
bin:
|
||||
msw: cli/index.js
|
||||
checksum: 10c0/822f4fc0cb2bdade39a67045d56b32fc7b15f30814a64c637a3c55d99358a4c1d61ed00d21fafafbbee320ad600e5a048d938b195e0cef5c59e016a040595176
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"multicast-dns@npm:^7.2.5":
|
||||
version: 7.2.5
|
||||
resolution: "multicast-dns@npm:7.2.5"
|
||||
@ -19579,13 +19381,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mute-stream@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "mute-stream@npm:3.0.0"
|
||||
checksum: 10c0/12cdb36a101694c7a6b296632e6d93a30b74401873cf7507c88861441a090c71c77a58f213acadad03bc0c8fa186639dec99d68a14497773a8744320c136e701
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"mux-embed@npm:5.9.0":
|
||||
version: 5.9.0
|
||||
resolution: "mux-embed@npm:5.9.0"
|
||||
@ -20214,13 +20009,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"outvariant@npm:^1.4.0, outvariant@npm:^1.4.3":
|
||||
version: 1.4.3
|
||||
resolution: "outvariant@npm:1.4.3"
|
||||
checksum: 10c0/5976ca7740349cb8c71bd3382e2a762b1aeca6f33dc984d9d896acdf3c61f78c3afcf1bfe9cc633a7b3c4b295ec94d292048f83ea2b2594fae4496656eba992c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"oxlint-tsgolint@npm:^0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "oxlint-tsgolint@npm:0.2.0"
|
||||
@ -20620,13 +20408,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-to-regexp@npm:^6.3.0":
|
||||
version: 6.3.0
|
||||
resolution: "path-to-regexp@npm:6.3.0"
|
||||
checksum: 10c0/73b67f4638b41cde56254e6354e46ae3a2ebc08279583f6af3d96fe4664fc75788f74ed0d18ca44fa4a98491b69434f9eee73b97bb5314bd1b5adb700f5c18d6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"path-to-regexp@npm:^8.0.0":
|
||||
version: 8.2.0
|
||||
resolution: "path-to-regexp@npm:8.2.0"
|
||||
@ -22765,13 +22546,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rettime@npm:^0.7.0":
|
||||
version: 0.7.0
|
||||
resolution: "rettime@npm:0.7.0"
|
||||
checksum: 10c0/1460539d49415c37e46884bf1db7a5da974b239c1bd6976e1cf076fad169067dc8f55cd2572aec504433162f3627b6d8123eea977d110476258045d620bd051b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"reusify@npm:^1.0.4":
|
||||
version: 1.1.0
|
||||
resolution: "reusify@npm:1.1.0"
|
||||
@ -23748,13 +23522,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"statuses@npm:^2.0.2":
|
||||
version: 2.0.2
|
||||
resolution: "statuses@npm:2.0.2"
|
||||
checksum: 10c0/a9947d98ad60d01f6b26727570f3bcceb6c8fa789da64fe6889908fe2e294d57503b14bf2b5af7605c2d36647259e856635cd4c49eab41667658ec9d0080ec3f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"std-env@npm:^3.9.0":
|
||||
version: 3.9.0
|
||||
resolution: "std-env@npm:3.9.0"
|
||||
@ -23796,13 +23563,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strict-event-emitter@npm:^0.5.1":
|
||||
version: 0.5.1
|
||||
resolution: "strict-event-emitter@npm:0.5.1"
|
||||
checksum: 10c0/f5228a6e6b6393c57f52f62e673cfe3be3294b35d6f7842fc24b172ae0a6e6c209fa83241d0e433fc267c503bc2f4ffdbe41a9990ff8ffd5ac425ec0489417f7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"strict-url-sanitise@npm:^0.0.1":
|
||||
version: 0.0.1
|
||||
resolution: "strict-url-sanitise@npm:0.0.1"
|
||||
@ -24518,13 +24278,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tldts-core@npm:^7.0.17":
|
||||
version: 7.0.17
|
||||
resolution: "tldts-core@npm:7.0.17"
|
||||
checksum: 10c0/39dd6f5852f241c88391dc462dd236fa8241309a76dbf2486afdba0f172358260b16b98c126d1d06e1d9ee9015d83448ed7c4e2885e5e5c06c368f6503bb6a97
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tldts@npm:^6.1.32":
|
||||
version: 6.1.86
|
||||
resolution: "tldts@npm:6.1.86"
|
||||
@ -24536,17 +24289,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tldts@npm:^7.0.5":
|
||||
version: 7.0.17
|
||||
resolution: "tldts@npm:7.0.17"
|
||||
dependencies:
|
||||
tldts-core: "npm:^7.0.17"
|
||||
bin:
|
||||
tldts: bin/cli.js
|
||||
checksum: 10c0/0ef2a40058a11c27a5b310489009002e57cd0789c2cf383c04ecf808e1523d442d9d9688ac0337c64b261609478b7fd85ddcd692976c8f763747a5e1c7c1c451
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tmp-promise@npm:^3.0.2":
|
||||
version: 3.0.3
|
||||
resolution: "tmp-promise@npm:3.0.3"
|
||||
@ -24636,15 +24378,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tough-cookie@npm:^6.0.0":
|
||||
version: 6.0.0
|
||||
resolution: "tough-cookie@npm:6.0.0"
|
||||
dependencies:
|
||||
tldts: "npm:^7.0.5"
|
||||
checksum: 10c0/7b17a461e9c2ac0d0bea13ab57b93b4346d0b8c00db174c963af1e46e4ea8d04148d2a55f2358fc857db0c0c65208a98e319d0c60693e32e0c559a9d9cf20cb5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tr46@npm:^5.1.0":
|
||||
version: 5.1.0
|
||||
resolution: "tr46@npm:5.1.0"
|
||||
@ -24931,13 +24664,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"type-fest@npm:^4.26.1":
|
||||
version: 4.41.0
|
||||
resolution: "type-fest@npm:4.41.0"
|
||||
checksum: 10c0/f5ca697797ed5e88d33ac8f1fec21921839871f808dc59345c9cf67345bfb958ce41bd821165dbf3ae591cedec2bf6fe8882098dfdd8dc54320b859711a2c1e4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"type-fest@npm:^4.39.1":
|
||||
version: 4.40.0
|
||||
resolution: "type-fest@npm:4.40.0"
|
||||
@ -25292,13 +25018,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"until-async@npm:^3.0.2":
|
||||
version: 3.0.2
|
||||
resolution: "until-async@npm:3.0.2"
|
||||
checksum: 10c0/61c8b03895dbe18fe3d90316d0a1894e0c131ea4b1673f6ce78eed993d0bb81bbf4b7adf8477e9ff7725782a76767eed9d077561cfc9f89b4a1ebe61f7c9828e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unzip-crx-3@npm:^0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "unzip-crx-3@npm:0.2.0"
|
||||
@ -26071,17 +25790,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"wrap-ansi@npm:^6.2.0":
|
||||
version: 6.2.0
|
||||
resolution: "wrap-ansi@npm:6.2.0"
|
||||
dependencies:
|
||||
ansi-styles: "npm:^4.0.0"
|
||||
string-width: "npm:^4.1.0"
|
||||
strip-ansi: "npm:^6.0.0"
|
||||
checksum: 10c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"wrap-ansi@npm:^8.1.0":
|
||||
version: 8.1.0
|
||||
resolution: "wrap-ansi@npm:8.1.0"
|
||||
@ -26308,7 +26016,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"yargs@npm:17.7.2, yargs@npm:^17.0.1, yargs@npm:^17.5.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2":
|
||||
"yargs@npm:17.7.2, yargs@npm:^17.0.1, yargs@npm:^17.5.1, yargs@npm:^17.6.2":
|
||||
version: 17.7.2
|
||||
resolution: "yargs@npm:17.7.2"
|
||||
dependencies:
|
||||
@ -26349,13 +26057,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"yoctocolors-cjs@npm:^2.1.3":
|
||||
version: 2.1.3
|
||||
resolution: "yoctocolors-cjs@npm:2.1.3"
|
||||
checksum: 10c0/584168ef98eb5d913473a4858dce128803c4a6cd87c0f09e954fa01126a59a33ab9e513b633ad9ab953786ed16efdd8c8700097a51635aafaeed3fef7712fa79
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"youtube-video-element@npm:^1.6.1":
|
||||
version: 1.6.2
|
||||
resolution: "youtube-video-element@npm:1.6.2"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user