feat(core): load native provider packages
This commit is contained in:
parent
248db536e2
commit
cd3885910d
66 changed files with 588 additions and 693 deletions
|
|
@ -29,8 +29,7 @@ describe("AlibabaPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("alibaba"), ModelV2.ID.make("qwen")),
|
||||
modelID: ModelV2.ID.make("qwen"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/alibaba",
|
||||
options: { name: "alibaba" },
|
||||
|
|
@ -48,8 +47,7 @@ describe("AlibabaPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("alibaba"), ModelV2.ID.make("qwen")),
|
||||
modelID: ModelV2.ID.make("qwen"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "alibaba" },
|
||||
|
|
@ -67,8 +65,7 @@ describe("AlibabaPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-alibaba"), ModelV2.ID.make("qwen")),
|
||||
modelID: ModelV2.ID.make("qwen"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/alibaba",
|
||||
options: { name: "custom-alibaba", apiKey: "test" },
|
||||
|
|
@ -88,8 +85,7 @@ describe("AlibabaPlugin", () => {
|
|||
const item = ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("alibaba"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("qwen-plus"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
})
|
||||
const result = yield* aisdk.runSDK({ model: item, package: "@ai-sdk/alibaba", options: {} })
|
||||
const language = result.sdk?.languageModel(item.modelID ?? item.id)
|
||||
|
|
|
|||
|
|
@ -85,13 +85,12 @@ describe("AmazonBedrockPlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const bedrock = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.amazonBedrock),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/amazon-bedrock",
|
||||
package: "aisdk:@ai-sdk/amazon-bedrock",
|
||||
headers: {},
|
||||
settings: { endpoint: "https://bedrock.example" },
|
||||
})
|
||||
catalog.provider.update(bedrock.id, (item) => {
|
||||
item.aisdk = bedrock.aisdk
|
||||
item.package = bedrock.package
|
||||
item.package = bedrock.package
|
||||
item.headers = bedrock.headers
|
||||
item.settings = { endpoint: "https://bedrock.example" }
|
||||
|
|
@ -100,8 +99,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
yield* addPlugin()
|
||||
const result = required(yield* catalog.provider.get(ProviderV2.ID.amazonBedrock))
|
||||
expect(result).toMatchObject({
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/amazon-bedrock",
|
||||
package: "aisdk:@ai-sdk/amazon-bedrock",
|
||||
settings: { baseURL: "https://bedrock.example" },
|
||||
})
|
||||
expect(result.settings?.endpoint).toBeUndefined()
|
||||
|
|
@ -118,8 +116,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/amazon-bedrock",
|
||||
options: {
|
||||
|
|
@ -145,8 +142,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/amazon-bedrock",
|
||||
options: {
|
||||
|
|
@ -181,8 +177,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/amazon-bedrock",
|
||||
options: { name: "amazon-bedrock" },
|
||||
|
|
@ -203,8 +198,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/amazon-bedrock",
|
||||
options: { name: "amazon-bedrock", region: "eu-west-1" },
|
||||
|
|
@ -224,8 +218,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/amazon-bedrock",
|
||||
options: { name: "amazon-bedrock" },
|
||||
|
|
@ -245,8 +238,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/amazon-bedrock",
|
||||
options: { name: "amazon-bedrock" },
|
||||
|
|
@ -267,8 +259,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/amazon-bedrock",
|
||||
options: {
|
||||
|
|
@ -298,8 +289,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/amazon-bedrock",
|
||||
options: {
|
||||
|
|
@ -328,8 +318,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("openai.gpt-5.5")),
|
||||
modelID: ModelV2.ID.make("openai.gpt-5.5"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/amazon-bedrock/mantle",
|
||||
package: "aisdk:@ai-sdk/amazon-bedrock/mantle",
|
||||
}),
|
||||
package: "@ai-sdk/amazon-bedrock/mantle",
|
||||
options: {
|
||||
|
|
@ -357,8 +346,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("openai.gpt-5.5")),
|
||||
modelID: ModelV2.ID.make("openai.gpt-5.5"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/amazon-bedrock/mantle",
|
||||
package: "aisdk:@ai-sdk/amazon-bedrock/mantle",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: { baseURL: "https://bedrock-mantle.us-east-2.api.aws/openai/v1", region: "us-east-2" },
|
||||
|
|
@ -367,8 +355,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("openai.gpt-oss-safeguard-120b")),
|
||||
modelID: ModelV2.ID.make("openai.gpt-oss-safeguard-120b"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/amazon-bedrock/mantle",
|
||||
package: "aisdk:@ai-sdk/amazon-bedrock/mantle",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: { region: "us-east-1" },
|
||||
|
|
@ -386,8 +373,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/amazon-bedrock/anthropic",
|
||||
package: "aisdk:@ai-sdk/amazon-bedrock/anthropic",
|
||||
}),
|
||||
package: "@ai-sdk/amazon-bedrock/anthropic",
|
||||
options: { name: "amazon-bedrock" },
|
||||
|
|
@ -415,8 +401,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/amazon-bedrock",
|
||||
options: {
|
||||
|
|
@ -448,8 +433,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: {},
|
||||
|
|
@ -458,8 +442,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: { region: "eu-west-1" },
|
||||
|
|
@ -468,8 +451,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("global.anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("global.anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: { region: "eu-west-1" },
|
||||
|
|
@ -478,8 +460,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: { region: "ap-northeast-1" },
|
||||
|
|
@ -488,8 +469,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: { region: "ap-southeast-2" },
|
||||
|
|
@ -515,8 +495,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: {},
|
||||
|
|
@ -603,8 +582,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.amazonBedrock, ModelV2.ID.make(item.modelID)),
|
||||
modelID: ModelV2.ID.make(item.modelID),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: { region: item.region },
|
||||
|
|
@ -624,8 +602,7 @@ describe("AmazonBedrockPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.openai, ModelV2.ID.make("anthropic.claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("anthropic.claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: { region: "eu-west-1" },
|
||||
|
|
|
|||
|
|
@ -31,13 +31,12 @@ describe("AnthropicPlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const item = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.anthropic),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/anthropic",
|
||||
package: "aisdk:@ai-sdk/anthropic",
|
||||
headers: { Existing: "1" },
|
||||
settings: {},
|
||||
})
|
||||
catalog.provider.update(item.id, (draft) => {
|
||||
draft.aisdk = item.aisdk
|
||||
draft.package = item.package
|
||||
draft.package = item.package
|
||||
draft.headers = item.headers
|
||||
})
|
||||
|
|
@ -68,8 +67,7 @@ describe("AnthropicPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-anthropic"), ModelV2.ID.make("claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/anthropic",
|
||||
package: "aisdk:@ai-sdk/anthropic",
|
||||
}),
|
||||
package: "@ai-sdk/anthropic",
|
||||
options: { name: "custom-anthropic", apiKey: "test" },
|
||||
|
|
@ -87,8 +85,7 @@ describe("AnthropicPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.anthropic, ModelV2.ID.make("claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/anthropic",
|
||||
package: "aisdk:@ai-sdk/anthropic",
|
||||
}),
|
||||
package: "@ai-sdk/anthropic",
|
||||
options: { name: "anthropic", apiKey: "test" },
|
||||
|
|
|
|||
|
|
@ -66,15 +66,13 @@ describe("AzureCognitiveServicesPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("azure-cognitive-services"), (item) => {
|
||||
item.aisdk = true
|
||||
item.package = "@ai-sdk/openai-compatible"
|
||||
item.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
})
|
||||
})
|
||||
yield* addPlugin()
|
||||
const result = required(yield* catalog.provider.get(ProviderV2.ID.make("azure-cognitive-services")))
|
||||
expect(result).toMatchObject({
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
package: "aisdk:@ai-sdk/openai-compatible",
|
||||
settings: { baseURL: "https://cognitive.cognitiveservices.azure.com/openai" },
|
||||
})
|
||||
expect(result.settings?.resourceName).toBeUndefined()
|
||||
|
|
@ -89,20 +87,18 @@ describe("AzureCognitiveServicesPlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const azure = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.make("azure-cognitive-services")),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
package: "aisdk:@ai-sdk/openai-compatible",
|
||||
})
|
||||
const openai = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.openai),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
})
|
||||
catalog.provider.update(azure.id, (item) => {
|
||||
item.aisdk = azure.aisdk
|
||||
item.package = azure.package
|
||||
item.package = azure.package
|
||||
})
|
||||
catalog.provider.update(openai.id, (item) => {
|
||||
item.aisdk = openai.aisdk
|
||||
item.package = openai.package
|
||||
item.package = openai.package
|
||||
})
|
||||
})
|
||||
|
|
@ -110,9 +106,9 @@ describe("AzureCognitiveServicesPlugin", () => {
|
|||
const azure = required(yield* catalog.provider.get(ProviderV2.ID.make("azure-cognitive-services")))
|
||||
const openai = required(yield* catalog.provider.get(ProviderV2.ID.openai))
|
||||
expect(azure.settings?.baseURL).toBeUndefined()
|
||||
expect(azure).toMatchObject({ aisdk: true, package: "@ai-sdk/openai-compatible" })
|
||||
expect(azure).toMatchObject({ package: "aisdk:@ai-sdk/openai-compatible" })
|
||||
expect(openai.settings?.baseURL).toBeUndefined()
|
||||
expect(openai).toMatchObject({ aisdk: true, package: "test-provider" })
|
||||
expect(openai).toMatchObject({ package: "aisdk:test-provider" })
|
||||
}),
|
||||
),
|
||||
)
|
||||
|
|
@ -127,8 +123,7 @@ describe("AzureCognitiveServicesPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("azure-cognitive-services"), ModelV2.ID.make("deployment")),
|
||||
modelID: ModelV2.ID.make("deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: { useCompletionUrls: true },
|
||||
|
|
@ -147,8 +142,7 @@ describe("AzureCognitiveServicesPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("azure-cognitive-services"), ModelV2.ID.make("deployment")),
|
||||
modelID: ModelV2.ID.make("deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -157,8 +151,7 @@ describe("AzureCognitiveServicesPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.openai, ModelV2.ID.make("deployment")),
|
||||
modelID: ModelV2.ID.make("deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -179,8 +172,7 @@ describe("AzureCognitiveServicesPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("azure-cognitive-services"), ModelV2.ID.make("messages-deployment")),
|
||||
modelID: ModelV2.ID.make("messages-deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { messages: sdk.messages, chat: sdk.chat, languageModel: sdk.languageModel },
|
||||
options: {},
|
||||
|
|
@ -189,8 +181,7 @@ describe("AzureCognitiveServicesPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("azure-cognitive-services"), ModelV2.ID.make("chat-deployment")),
|
||||
modelID: ModelV2.ID.make("chat-deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { chat: sdk.chat, languageModel: sdk.languageModel },
|
||||
options: {},
|
||||
|
|
@ -199,8 +190,7 @@ describe("AzureCognitiveServicesPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("azure-cognitive-services"), ModelV2.ID.make("language-deployment")),
|
||||
modelID: ModelV2.ID.make("language-deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: sdk.languageModel },
|
||||
options: {},
|
||||
|
|
|
|||
|
|
@ -66,8 +66,7 @@ describe("AzurePlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.azure, (item) => {
|
||||
item.aisdk = true
|
||||
item.package = "@ai-sdk/azure"
|
||||
item.package = ProviderV2.aisdk("@ai-sdk/azure")
|
||||
})
|
||||
})
|
||||
yield* addPlugin()
|
||||
|
|
@ -83,13 +82,12 @@ describe("AzurePlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const azure = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.azure),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/azure",
|
||||
package: "aisdk:@ai-sdk/azure",
|
||||
headers: {},
|
||||
settings: { resourceName: "from-config" },
|
||||
})
|
||||
catalog.provider.update(azure.id, (item) => {
|
||||
item.aisdk = azure.aisdk
|
||||
item.package = azure.package
|
||||
item.package = azure.package
|
||||
item.headers = azure.headers
|
||||
item.settings = { resourceName: "from-config" }
|
||||
|
|
@ -110,13 +108,12 @@ describe("AzurePlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const azure = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.azure),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/azure",
|
||||
package: "aisdk:@ai-sdk/azure",
|
||||
headers: {},
|
||||
settings: { resourceName: "" },
|
||||
})
|
||||
catalog.provider.update(azure.id, (item) => {
|
||||
item.aisdk = azure.aisdk
|
||||
item.package = azure.package
|
||||
item.package = azure.package
|
||||
item.headers = azure.headers
|
||||
item.settings = { resourceName: "" }
|
||||
|
|
@ -135,13 +132,12 @@ describe("AzurePlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const azure = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.azure),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/azure",
|
||||
package: "aisdk:@ai-sdk/azure",
|
||||
headers: {},
|
||||
settings: { resourceName: " " },
|
||||
})
|
||||
catalog.provider.update(azure.id, (item) => {
|
||||
item.aisdk = azure.aisdk
|
||||
item.package = azure.package
|
||||
item.package = azure.package
|
||||
item.headers = azure.headers
|
||||
item.settings = { resourceName: " " }
|
||||
|
|
@ -163,8 +159,7 @@ describe("AzurePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.azure, ModelV2.ID.make("deployment")),
|
||||
modelID: ModelV2.ID.make("deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/azure",
|
||||
options: { name: "azure", baseURL: "https://proxy.example.com/openai" },
|
||||
|
|
@ -184,8 +179,7 @@ describe("AzurePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.azure, ModelV2.ID.make("deployment")),
|
||||
modelID: ModelV2.ID.make("deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/azure",
|
||||
options: { name: "azure" },
|
||||
|
|
@ -206,8 +200,7 @@ describe("AzurePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.azure, ModelV2.ID.make("deployment")),
|
||||
modelID: ModelV2.ID.make("deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: { useCompletionUrls: true },
|
||||
|
|
@ -226,8 +219,7 @@ describe("AzurePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.azure, ModelV2.ID.make("deployment")),
|
||||
modelID: ModelV2.ID.make("deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: { useCompletionUrls: true },
|
||||
|
|
@ -246,8 +238,7 @@ describe("AzurePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.azure, ModelV2.ID.make("deployment")),
|
||||
modelID: ModelV2.ID.make("deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
headers: {},
|
||||
settings: { useCompletionUrls: true },
|
||||
}),
|
||||
|
|
@ -268,8 +259,7 @@ describe("AzurePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.azure, ModelV2.ID.make("deployment")),
|
||||
modelID: ModelV2.ID.make("deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -278,8 +268,7 @@ describe("AzurePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.openai, ModelV2.ID.make("deployment")),
|
||||
modelID: ModelV2.ID.make("deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -303,8 +292,7 @@ describe("AzurePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.azure, ModelV2.ID.make("messages-deployment")),
|
||||
modelID: ModelV2.ID.make("messages-deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { messages: make("messages"), chat: make("chat"), languageModel: make("languageModel") },
|
||||
options: {},
|
||||
|
|
@ -313,8 +301,7 @@ describe("AzurePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.azure, ModelV2.ID.make("language-deployment")),
|
||||
modelID: ModelV2.ID.make("language-deployment"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: make("languageModel") },
|
||||
options: {},
|
||||
|
|
|
|||
|
|
@ -36,8 +36,7 @@ describe("CerebrasPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("cerebras"), (item) => {
|
||||
item.aisdk = true
|
||||
item.package = "@ai-sdk/cerebras"
|
||||
item.package = ProviderV2.aisdk("@ai-sdk/cerebras")
|
||||
item.headers = { ...item.headers, Existing: "1" }
|
||||
})
|
||||
})
|
||||
|
|
@ -71,8 +70,7 @@ describe("CerebrasPlugin", () => {
|
|||
ModelV2.ID.make("llama-4-scout-17b-16e-instruct"),
|
||||
),
|
||||
modelID: ModelV2.ID.make("llama-4-scout-17b-16e-instruct"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/cerebras",
|
||||
options: { name: "custom-cerebras", apiKey: "test" },
|
||||
|
|
@ -95,8 +93,7 @@ describe("CerebrasPlugin", () => {
|
|||
ModelV2.ID.make("llama-4-scout-17b-16e-instruct"),
|
||||
),
|
||||
modelID: ModelV2.ID.make("llama-4-scout-17b-16e-instruct"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/cerebras",
|
||||
options: { name: "configured-cerebras", apiKey: "test" },
|
||||
|
|
@ -118,8 +115,7 @@ describe("CerebrasPlugin", () => {
|
|||
ModelV2.ID.make("llama-4-scout-17b-16e-instruct"),
|
||||
),
|
||||
modelID: ModelV2.ID.make("llama-4-scout-17b-16e-instruct"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/groq",
|
||||
options: { name: "custom-cerebras", apiKey: "test" },
|
||||
|
|
|
|||
|
|
@ -119,8 +119,7 @@ describe("CloudflareAIGatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-ai-gateway"), ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "ai-gateway-provider",
|
||||
options: { name: "cloudflare-ai-gateway" },
|
||||
|
|
@ -142,8 +141,7 @@ describe("CloudflareAIGatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-ai-gateway"), ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "ai-gateway-provider",
|
||||
options: {
|
||||
|
|
@ -188,8 +186,7 @@ describe("CloudflareAIGatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-ai-gateway"), ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "ai-gateway-provider",
|
||||
options: {
|
||||
|
|
@ -219,8 +216,7 @@ describe("CloudflareAIGatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-ai-gateway"), ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "ai-gateway-provider",
|
||||
options: {
|
||||
|
|
@ -258,8 +254,7 @@ describe("CloudflareAIGatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-ai-gateway"), ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "ai-gateway-provider",
|
||||
options: {
|
||||
|
|
@ -291,8 +286,7 @@ describe("CloudflareAIGatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-ai-gateway"), ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "ai-gateway-provider",
|
||||
options: { name: "cloudflare-ai-gateway" },
|
||||
|
|
@ -315,8 +309,7 @@ describe("CloudflareAIGatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-ai-gateway"), ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "ai-gateway-provider",
|
||||
options: { name: "cloudflare-ai-gateway" },
|
||||
|
|
@ -340,8 +333,7 @@ describe("CloudflareAIGatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-ai-gateway"), ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "ai-gateway-provider",
|
||||
options: { name: "cloudflare-ai-gateway" },
|
||||
|
|
@ -371,8 +363,7 @@ describe("CloudflareAIGatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-ai-gateway"), ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "ai-gateway-provider",
|
||||
options: { name: "cloudflare-ai-gateway", baseURL: "https://proxy.example/v1" },
|
||||
|
|
@ -399,8 +390,7 @@ describe("CloudflareAIGatewayPlugin", () => {
|
|||
ModelV2.ID.make("anthropic/claude-sonnet-4-5"),
|
||||
),
|
||||
modelID: ModelV2.ID.make("anthropic/claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "ai-gateway-provider",
|
||||
options: { name: "cloudflare-ai-gateway" },
|
||||
|
|
@ -429,8 +419,7 @@ describe("CloudflareAIGatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-ai-gateway"), ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "cloudflare-ai-gateway" },
|
||||
|
|
|
|||
|
|
@ -87,8 +87,7 @@ describe("CloudflareWorkersAIPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.make("cloudflare-workers-ai"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "test-provider"
|
||||
provider.package = ProviderV2.aisdk("test-provider")
|
||||
}),
|
||||
)
|
||||
yield* addPlugin()
|
||||
|
|
@ -97,7 +96,6 @@ describe("CloudflareWorkersAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-workers-ai"), ModelV2.ID.make("@cf/model")),
|
||||
modelID: ModelV2.ID.make("@cf/model"),
|
||||
aisdk: provider.aisdk,
|
||||
package: provider.package,
|
||||
settings: provider.settings,
|
||||
}),
|
||||
|
|
@ -105,8 +103,7 @@ describe("CloudflareWorkersAIPlugin", () => {
|
|||
options: { name: "cloudflare-workers-ai", headers: { custom: "header" } },
|
||||
})
|
||||
expect(provider).toMatchObject({
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
settings: { baseURL: "https://api.cloudflare.com/client/v4/accounts/acct/ai/v1" },
|
||||
})
|
||||
expect(sdk.sdk).toBeDefined()
|
||||
|
|
@ -120,15 +117,13 @@ describe("CloudflareWorkersAIPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.make("cloudflare-workers-ai"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "test-provider"
|
||||
provider.package = ProviderV2.aisdk("test-provider")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://proxy.example/v1" }
|
||||
}),
|
||||
)
|
||||
yield* addPlugin()
|
||||
expect(required(yield* catalog.provider.get(ProviderV2.ID.make("cloudflare-workers-ai")))).toMatchObject({
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
settings: { baseURL: "https://proxy.example/v1" },
|
||||
})
|
||||
}),
|
||||
|
|
@ -145,8 +140,7 @@ describe("CloudflareWorkersAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-workers-ai"), ModelV2.ID.make("@cf/model")),
|
||||
modelID: ModelV2.ID.make("@cf/model"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
package: "aisdk:@ai-sdk/openai-compatible",
|
||||
settings: { baseURL: "https://proxy.example/v1" },
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
|
|
@ -163,15 +157,13 @@ describe("CloudflareWorkersAIPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.make("cloudflare-workers-ai"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "test-provider"
|
||||
provider.package = ProviderV2.aisdk("test-provider")
|
||||
provider.settings = { ...provider.settings, accountId: "configured-acct" }
|
||||
}),
|
||||
)
|
||||
yield* addPlugin()
|
||||
expect(required(yield* catalog.provider.get(ProviderV2.ID.make("cloudflare-workers-ai")))).toMatchObject({
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
settings: { baseURL: "https://api.cloudflare.com/client/v4/accounts/env-acct/ai/v1" },
|
||||
})
|
||||
}),
|
||||
|
|
@ -188,8 +180,7 @@ describe("CloudflareWorkersAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-workers-ai"), ModelV2.ID.make("@cf/model")),
|
||||
modelID: ModelV2.ID.make("@cf/model"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
package: "aisdk:@ai-sdk/openai-compatible",
|
||||
settings: { baseURL: "https://proxy.example/v1" },
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
|
|
@ -218,8 +209,7 @@ describe("CloudflareWorkersAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-workers-ai"), ModelV2.ID.make("@cf/model")),
|
||||
modelID: ModelV2.ID.make("@cf/model"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
package: "aisdk:@ai-sdk/openai-compatible",
|
||||
settings: { baseURL: "https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/ai/v1" },
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
|
|
@ -245,8 +235,7 @@ describe("CloudflareWorkersAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-workers-ai"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("@cf/api-model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -266,8 +255,7 @@ describe("CloudflareWorkersAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-workers-ai"), ModelV2.ID.make("@cf/model")),
|
||||
modelID: ModelV2.ID.make("@cf/model"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/anthropic",
|
||||
package: "aisdk:@ai-sdk/anthropic",
|
||||
settings: { baseURL: "https://proxy.example/v1" },
|
||||
}),
|
||||
package: "@ai-sdk/anthropic",
|
||||
|
|
|
|||
|
|
@ -57,8 +57,7 @@ describe("CoherePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cohere"), ModelV2.ID.make("command")),
|
||||
modelID: ModelV2.ID.make("command"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "cohere" },
|
||||
|
|
@ -69,8 +68,7 @@ describe("CoherePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cohere"), ModelV2.ID.make("command")),
|
||||
modelID: ModelV2.ID.make("command"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/cohere",
|
||||
options: { name: "cohere" },
|
||||
|
|
@ -88,8 +86,7 @@ describe("CoherePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-cohere"), ModelV2.ID.make("command-r-plus")),
|
||||
modelID: ModelV2.ID.make("command-r-plus"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/cohere",
|
||||
options: { name: "custom-cohere", apiKey: "test", baseURL: "https://cohere.example" },
|
||||
|
|
@ -115,8 +112,7 @@ describe("CoherePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cohere"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("command-r-plus"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk,
|
||||
options: {},
|
||||
|
|
|
|||
|
|
@ -49,8 +49,7 @@ describe("DeepInfraPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("deepinfra"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/deepinfra",
|
||||
package: "aisdk:@ai-sdk/deepinfra",
|
||||
}),
|
||||
package: "@ai-sdk/deepinfra",
|
||||
options: { name: "deepinfra" },
|
||||
|
|
@ -69,8 +68,7 @@ describe("DeepInfraPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-deepinfra"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/deepinfra",
|
||||
package: "aisdk:@ai-sdk/deepinfra",
|
||||
}),
|
||||
package: "@ai-sdk/deepinfra",
|
||||
options: { name: "custom-deepinfra", apiKey: "test" },
|
||||
|
|
@ -90,8 +88,7 @@ describe("DeepInfraPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("deepinfra"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/deepinfra",
|
||||
package: "aisdk:@ai-sdk/deepinfra",
|
||||
}),
|
||||
package: "@ai-sdk/deepinfra",
|
||||
options: { name: "deepinfra", apiKey: "test" },
|
||||
|
|
@ -118,8 +115,7 @@ describe("DeepInfraPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("deepinfra"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/deepinfra",
|
||||
package: "aisdk:@ai-sdk/deepinfra",
|
||||
}),
|
||||
package: item,
|
||||
options: { name: "deepinfra" },
|
||||
|
|
@ -131,8 +127,7 @@ describe("DeepInfraPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("deepinfra"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/deepinfra",
|
||||
package: "aisdk:@ai-sdk/deepinfra",
|
||||
}),
|
||||
package: "@ai-sdk/deepinfra",
|
||||
options: { name: "deepinfra" },
|
||||
|
|
@ -152,8 +147,7 @@ describe("DeepInfraPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("deepinfra"), ModelV2.ID.make("meta-llama/Llama-3.3-70B-Instruct")),
|
||||
modelID: ModelV2.ID.make("meta-llama/Llama-3.3-70B-Instruct"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/deepinfra",
|
||||
package: "aisdk:@ai-sdk/deepinfra",
|
||||
}),
|
||||
package: "@ai-sdk/deepinfra",
|
||||
options: { name: "deepinfra" },
|
||||
|
|
|
|||
|
|
@ -54,8 +54,7 @@ describe("DynamicProviderPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom"), ModelV2.ID.make("test-model")),
|
||||
modelID: ModelV2.ID.make("test-model"),
|
||||
aisdk: true,
|
||||
package: fixtureProvider,
|
||||
package: ProviderV2.aisdk(fixtureProvider),
|
||||
}),
|
||||
package: fixtureProvider,
|
||||
options: { name: "custom", marker: "dynamic" },
|
||||
|
|
@ -74,8 +73,7 @@ describe("DynamicProviderPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom"), ModelV2.ID.make("test-model")),
|
||||
modelID: ModelV2.ID.make("test-model"),
|
||||
aisdk: true,
|
||||
package: fixtureProvider,
|
||||
package: ProviderV2.aisdk(fixtureProvider),
|
||||
}),
|
||||
package: fixtureProvider,
|
||||
options: { name: "custom", marker: "dynamic" },
|
||||
|
|
@ -93,8 +91,7 @@ describe("DynamicProviderPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-provider"), ModelV2.ID.make("test-model")),
|
||||
modelID: ModelV2.ID.make("test-model"),
|
||||
aisdk: true,
|
||||
package: fixtureProvider,
|
||||
package: ProviderV2.aisdk(fixtureProvider),
|
||||
}),
|
||||
package: fixtureProvider,
|
||||
options: { name: "custom-provider", marker: "dynamic" },
|
||||
|
|
@ -111,8 +108,7 @@ describe("DynamicProviderPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("npm-provider"), ModelV2.ID.make("test-model")),
|
||||
modelID: ModelV2.ID.make("test-model"),
|
||||
aisdk: true,
|
||||
package: "fixture-provider",
|
||||
package: "aisdk:fixture-provider",
|
||||
}),
|
||||
package: "fixture-provider",
|
||||
options: { name: "npm-provider", marker: "npm" },
|
||||
|
|
@ -130,8 +126,7 @@ describe("DynamicProviderPlugin", () => {
|
|||
ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("missing-entrypoint"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("alias"),
|
||||
aisdk: true,
|
||||
package: "fixture-provider",
|
||||
package: "aisdk:fixture-provider",
|
||||
}),
|
||||
)
|
||||
.pipe(Effect.exit)
|
||||
|
|
@ -149,8 +144,7 @@ describe("DynamicProviderPlugin", () => {
|
|||
ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("bad-import"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("alias"),
|
||||
aisdk: true,
|
||||
package: "file:///missing/provider-factory.js",
|
||||
package: "aisdk:file:///missing/provider-factory.js",
|
||||
}),
|
||||
)
|
||||
.pipe(Effect.exit)
|
||||
|
|
@ -170,8 +164,7 @@ describe("DynamicProviderPlugin", () => {
|
|||
ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("missing-factory"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("alias"),
|
||||
aisdk: true,
|
||||
package: "fixture-provider",
|
||||
package: "aisdk:fixture-provider",
|
||||
}),
|
||||
)
|
||||
.pipe(Effect.exit)
|
||||
|
|
@ -189,8 +182,7 @@ describe("DynamicProviderPlugin", () => {
|
|||
ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("test-model-api"),
|
||||
aisdk: true,
|
||||
package: fixtureProvider,
|
||||
package: ProviderV2.aisdk(fixtureProvider),
|
||||
}),
|
||||
)
|
||||
expect(language).toMatchObject({ modelID: "test-model-api", options: { name: "custom" } })
|
||||
|
|
|
|||
|
|
@ -46,8 +46,7 @@ describe("GatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("gateway"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/gateway",
|
||||
options: { name: "gateway" },
|
||||
|
|
@ -68,8 +67,7 @@ describe("GatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("vercel"), ModelV2.ID.make("anthropic/claude-sonnet-4")),
|
||||
modelID: ModelV2.ID.make("anthropic/claude-sonnet-4"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/gateway",
|
||||
options: { name: "vercel", apiKey: "test-key" },
|
||||
|
|
@ -92,8 +90,7 @@ describe("GatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("vercel"), ModelV2.ID.make(modelID)),
|
||||
modelID: ModelV2.ID.make(modelID),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/vercel",
|
||||
options: { name: "vercel" },
|
||||
|
|
@ -104,8 +101,7 @@ describe("GatewayPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("vercel"), ModelV2.ID.make(modelID)),
|
||||
modelID: ModelV2.ID.make(modelID),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/gateway",
|
||||
options: { name: "vercel" },
|
||||
|
|
|
|||
|
|
@ -48,8 +48,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("gpt-5")),
|
||||
modelID: ModelV2.ID.make("gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "github-copilot" },
|
||||
|
|
@ -58,8 +57,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("gpt-5")),
|
||||
modelID: ModelV2.ID.make("gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/github-copilot",
|
||||
options: { name: "github-copilot" },
|
||||
|
|
@ -79,8 +77,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("claude-sonnet-4")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: {},
|
||||
|
|
@ -99,8 +96,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: {},
|
||||
|
|
@ -119,8 +115,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("gpt-5")),
|
||||
modelID: ModelV2.ID.make("gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -129,8 +124,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("gpt-5.1-codex")),
|
||||
modelID: ModelV2.ID.make("gpt-5.1-codex"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -139,8 +133,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("gpt-4o")),
|
||||
modelID: ModelV2.ID.make("gpt-4o"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -149,8 +142,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("gpt-5-mini")),
|
||||
modelID: ModelV2.ID.make("gpt-5-mini"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -159,8 +151,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("gpt-5-mini-2025-08-07")),
|
||||
modelID: ModelV2.ID.make("gpt-5-mini-2025-08-07"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -185,8 +176,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("default")),
|
||||
modelID: ModelV2.ID.make("gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -195,8 +185,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("small")),
|
||||
modelID: ModelV2.ID.make("gpt-5-mini"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -205,8 +194,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("github-copilot"), ModelV2.ID.make("sonnet")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -255,8 +243,7 @@ describe("GithubCopilotPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("openai"), ModelV2.ID.make("gpt-5")),
|
||||
modelID: ModelV2.ID.make("gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
|
|||
|
|
@ -71,8 +71,7 @@ describe("GitLabPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("gitlab"), ModelV2.ID.make("claude")),
|
||||
modelID: ModelV2.ID.make("claude"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "gitlab-ai-provider",
|
||||
options: { name: "gitlab" },
|
||||
|
|
@ -110,8 +109,7 @@ describe("GitLabPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("gitlab"), ModelV2.ID.make("claude")),
|
||||
modelID: ModelV2.ID.make("claude"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "gitlab-ai-provider",
|
||||
options: { name: "gitlab" },
|
||||
|
|
@ -137,8 +135,7 @@ describe("GitLabPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("gitlab"), ModelV2.ID.make("claude")),
|
||||
modelID: ModelV2.ID.make("claude"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "gitlab-ai-provider",
|
||||
options: {
|
||||
|
|
@ -180,8 +177,7 @@ describe("GitLabPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("gitlab"), ModelV2.ID.make("claude")),
|
||||
modelID: ModelV2.ID.make("claude"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai",
|
||||
options: { name: "gitlab" },
|
||||
|
|
@ -201,8 +197,7 @@ describe("GitLabPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("gitlab"), ModelV2.ID.make("duo-workflow-custom")),
|
||||
modelID: ModelV2.ID.make("duo-workflow-custom"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
headers: {},
|
||||
settings: { workflowRef: "ref", workflowDefinition: "definition" },
|
||||
}),
|
||||
|
|
@ -236,8 +231,7 @@ describe("GitLabPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("gitlab"), ModelV2.ID.make("duo-workflow-exact")),
|
||||
modelID: ModelV2.ID.make("duo-workflow-exact"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: {
|
||||
workflowChat: (id: string, options: unknown) => {
|
||||
|
|
@ -265,8 +259,7 @@ describe("GitLabPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("gitlab"), ModelV2.ID.make("duo-workflow-custom")),
|
||||
modelID: ModelV2.ID.make("duo-workflow-custom"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
headers: {},
|
||||
settings: { featureFlags: { request_flag: true } },
|
||||
}),
|
||||
|
|
@ -293,8 +286,7 @@ describe("GitLabPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("gitlab"), ModelV2.ID.make("claude")),
|
||||
modelID: ModelV2.ID.make("claude"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
headers: { h: "v" },
|
||||
settings: {},
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -64,8 +64,7 @@ describe("GoogleVertexAnthropicPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.make("google-vertex-anthropic"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/google-vertex/anthropic"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/google-vertex/anthropic")
|
||||
}),
|
||||
)
|
||||
yield* addPlugin(GoogleVertexAnthropicPlugin)
|
||||
|
|
@ -85,8 +84,7 @@ describe("GoogleVertexAnthropicPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.make("google-vertex-anthropic"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/google-vertex/anthropic"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/google-vertex/anthropic")
|
||||
provider.settings = { ...provider.settings, project: "configured-project", location: "configured-location" }
|
||||
}),
|
||||
)
|
||||
|
|
@ -123,8 +121,7 @@ describe("GoogleVertexAnthropicPlugin", () => {
|
|||
ModelV2.ID.make("claude-sonnet-4-5"),
|
||||
),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/google-vertex/anthropic",
|
||||
options: { name: "google-vertex-anthropic" },
|
||||
|
|
@ -151,8 +148,7 @@ describe("GoogleVertexAnthropicPlugin", () => {
|
|||
ModelV2.ID.make("claude-sonnet-4-5"),
|
||||
),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/google-vertex/anthropic",
|
||||
options: { name: "google-vertex-anthropic" },
|
||||
|
|
@ -173,8 +169,7 @@ describe("GoogleVertexAnthropicPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("google-vertex"), ModelV2.ID.make("claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/google-vertex/anthropic",
|
||||
options: { name: "google-vertex", project: "project", location: "eu" },
|
||||
|
|
@ -194,8 +189,7 @@ describe("GoogleVertexAnthropicPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("google-vertex"), ModelV2.ID.make("claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/google-vertex/anthropic",
|
||||
options: { name: "google-vertex", project: "project", location: "eu", baseURL: "https://proxy.example/v1" },
|
||||
|
|
@ -214,8 +208,7 @@ describe("GoogleVertexAnthropicPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("google-vertex"), ModelV2.ID.make(" claude-sonnet-4-5 ")),
|
||||
modelID: ModelV2.ID.make(" claude-sonnet-4-5 "),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/google-vertex/anthropic",
|
||||
options: { name: "google-vertex", project: "project", location: "us" },
|
||||
|
|
@ -224,8 +217,7 @@ describe("GoogleVertexAnthropicPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("google-vertex"), ModelV2.ID.make(" claude-sonnet-4-5 ")),
|
||||
modelID: ModelV2.ID.make(" claude-sonnet-4-5 "),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: sdkResult.sdk,
|
||||
options: {},
|
||||
|
|
@ -248,8 +240,7 @@ describe("GoogleVertexAnthropicPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("google-vertex-anthropic"), ModelV2.ID.make(" claude-sonnet-4-5 ")),
|
||||
modelID: ModelV2.ID.make(" claude-sonnet-4-5 "),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: selector(calls) },
|
||||
options: {},
|
||||
|
|
@ -268,8 +259,7 @@ describe("GoogleVertexAnthropicPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("google-vertex"), ModelV2.ID.make("claude-sonnet-4-5")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: selector(calls) },
|
||||
options: {},
|
||||
|
|
|
|||
|
|
@ -92,8 +92,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.opencode, (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://opencode.ai/zen/v1" }
|
||||
}),
|
||||
)
|
||||
|
|
@ -119,8 +118,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.make("google-vertex"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = {
|
||||
...provider.settings,
|
||||
baseURL:
|
||||
|
|
@ -133,8 +131,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
expect(provider.settings?.project).toBe("google-cloud-project")
|
||||
expect(provider.settings?.location).toBe("google-vertex-location")
|
||||
expect(provider).toMatchObject({
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
package: "aisdk:@ai-sdk/openai-compatible",
|
||||
settings: {
|
||||
baseURL:
|
||||
"https://google-vertex-location-aiplatform.googleapis.com/v1/projects/google-cloud-project/locations/google-vertex-location",
|
||||
|
|
@ -163,8 +160,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.make("google-vertex"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = {
|
||||
...provider.settings,
|
||||
baseURL:
|
||||
|
|
@ -178,8 +174,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("google-vertex"), ModelV2.ID.make("gemini")),
|
||||
modelID: ModelV2.ID.make("gemini"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/google-vertex",
|
||||
package: "aisdk:@ai-sdk/google-vertex",
|
||||
}),
|
||||
package: "@ai-sdk/google-vertex",
|
||||
options: { name: "google-vertex" },
|
||||
|
|
@ -187,8 +182,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
|
||||
expect(provider.settings?.project).toBe("vertex-project")
|
||||
expect(provider).toMatchObject({
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
package: "aisdk:@ai-sdk/openai-compatible",
|
||||
settings: {
|
||||
baseURL:
|
||||
"https://europe-west4-aiplatform.googleapis.com/v1/projects/vertex-project/locations/europe-west4",
|
||||
|
|
@ -215,8 +209,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.make("google-vertex"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = {
|
||||
...provider.settings,
|
||||
baseURL:
|
||||
|
|
@ -230,8 +223,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
expect(provider.settings?.project).toBe("config-project")
|
||||
expect(provider.settings?.location).toBe("global")
|
||||
expect(provider).toMatchObject({
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
package: "aisdk:@ai-sdk/openai-compatible",
|
||||
settings: { baseURL: "https://aiplatform.googleapis.com/v1/projects/config-project/locations/global" },
|
||||
})
|
||||
}),
|
||||
|
|
@ -243,8 +235,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.make("google-vertex"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = {
|
||||
...provider.settings,
|
||||
baseURL:
|
||||
|
|
@ -256,8 +247,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
yield* addPlugin()
|
||||
const provider = required(yield* catalog.provider.get(ProviderV2.ID.make("google-vertex")))
|
||||
expect(provider).toMatchObject({
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
package: "aisdk:@ai-sdk/openai-compatible",
|
||||
settings: { baseURL: "https://eu-aiplatform.googleapis.com/v1/projects/config-project/locations/eu" },
|
||||
})
|
||||
}),
|
||||
|
|
@ -278,8 +268,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.make("google-vertex"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/google-vertex"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/google-vertex")
|
||||
provider.settings = { ...provider.settings, project: "config-project" }
|
||||
}),
|
||||
)
|
||||
|
|
@ -307,8 +296,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("google-vertex"), ModelV2.ID.make("gemini")),
|
||||
modelID: ModelV2.ID.make("gemini"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/google-vertex",
|
||||
package: "aisdk:@ai-sdk/google-vertex",
|
||||
}),
|
||||
package: "@ai-sdk/google-vertex",
|
||||
options: { name: "google-vertex" },
|
||||
|
|
@ -353,8 +341,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("google-vertex"), ModelV2.ID.make("gemini")),
|
||||
modelID: ModelV2.ID.make("gemini"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
package: "aisdk:@ai-sdk/openai-compatible",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "google-vertex" },
|
||||
|
|
@ -382,8 +369,7 @@ describe("GoogleVertexPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("google-vertex"), ModelV2.ID.make(" gemini-2.5-pro ")),
|
||||
modelID: ModelV2.ID.make(" gemini-2.5-pro "),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: {},
|
||||
|
|
|
|||
|
|
@ -28,8 +28,7 @@ describe("GooglePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-google"), ModelV2.ID.make("gemini")),
|
||||
modelID: ModelV2.ID.make("gemini"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/google",
|
||||
package: "aisdk:@ai-sdk/google",
|
||||
}),
|
||||
package: "@ai-sdk/google",
|
||||
options: { name: "custom-google", apiKey: "test" },
|
||||
|
|
@ -48,8 +47,7 @@ describe("GooglePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("google"), ModelV2.ID.make("gemini")),
|
||||
modelID: ModelV2.ID.make("gemini"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/google",
|
||||
package: "aisdk:@ai-sdk/google",
|
||||
}),
|
||||
package: "@ai-sdk/google-vertex",
|
||||
options: { name: "google" },
|
||||
|
|
@ -67,8 +65,7 @@ describe("GooglePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-google"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("gemini-api"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/google",
|
||||
package: "aisdk:@ai-sdk/google",
|
||||
}),
|
||||
package: "@ai-sdk/google",
|
||||
options: { name: "custom-google", apiKey: "test" },
|
||||
|
|
|
|||
|
|
@ -29,8 +29,7 @@ describe("GroqPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("groq"), ModelV2.ID.make("llama")),
|
||||
modelID: ModelV2.ID.make("llama"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/groq",
|
||||
package: "aisdk:@ai-sdk/groq",
|
||||
}),
|
||||
package: "@ai-sdk/groq",
|
||||
options: { name: "groq" },
|
||||
|
|
@ -48,8 +47,7 @@ describe("GroqPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("groq"), ModelV2.ID.make("llama")),
|
||||
modelID: ModelV2.ID.make("llama"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/groq",
|
||||
package: "aisdk:@ai-sdk/groq",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "groq" },
|
||||
|
|
@ -67,8 +65,7 @@ describe("GroqPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("groq"), ModelV2.ID.make("llama")),
|
||||
modelID: ModelV2.ID.make("llama"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/groq",
|
||||
package: "aisdk:@ai-sdk/groq",
|
||||
}),
|
||||
package: "@ai-sdk/groq/compat",
|
||||
options: { name: "groq" },
|
||||
|
|
@ -86,8 +83,7 @@ describe("GroqPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-groq"), ModelV2.ID.make("llama")),
|
||||
modelID: ModelV2.ID.make("llama"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/groq",
|
||||
package: "aisdk:@ai-sdk/groq",
|
||||
}),
|
||||
package: "@ai-sdk/groq",
|
||||
options: { name: "custom-groq", apiKey: "test" },
|
||||
|
|
@ -113,8 +109,7 @@ describe("GroqPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("groq"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("llama-api"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/groq",
|
||||
package: "aisdk:@ai-sdk/groq",
|
||||
}),
|
||||
sdk,
|
||||
options: { name: "groq", apiKey: "test" },
|
||||
|
|
|
|||
|
|
@ -27,8 +27,7 @@ describe("KiloPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("kilo"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://api.kilo.ai/api/gateway" }
|
||||
provider.headers = { Existing: "value" }
|
||||
})
|
||||
|
|
@ -49,8 +48,7 @@ describe("KiloPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("kilo"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://api.kilo.ai/api/gateway" }
|
||||
})
|
||||
})
|
||||
|
|
@ -71,13 +69,11 @@ describe("KiloPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("kilo"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://api.kilo.ai/api/gateway" }
|
||||
})
|
||||
catalog.provider.update(ProviderV2.ID.make("custom-kilo"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "kilo"
|
||||
provider.package = ProviderV2.aisdk("kilo")
|
||||
})
|
||||
})
|
||||
yield* addPlugin()
|
||||
|
|
|
|||
|
|
@ -34,8 +34,7 @@ describe("LLMGatewayPlugin", () => {
|
|||
})
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("llmgateway"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://api.llmgateway.io/v1" }
|
||||
provider.headers = { Existing: "value" }
|
||||
})
|
||||
|
|
@ -62,8 +61,7 @@ describe("LLMGatewayPlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("llmgateway"), (provider) => {
|
||||
provider.disabled = true
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://api.llmgateway.io/v1" }
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -29,8 +29,7 @@ describe("MistralPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("mistral"), ModelV2.ID.make("mistral-large")),
|
||||
modelID: ModelV2.ID.make("mistral-large"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/mistral",
|
||||
options: { name: "mistral" },
|
||||
|
|
@ -48,8 +47,7 @@ describe("MistralPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("mistral"), ModelV2.ID.make("mistral-large")),
|
||||
modelID: ModelV2.ID.make("mistral-large"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "mistral" },
|
||||
|
|
@ -73,8 +71,7 @@ describe("MistralPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("mistral"), ModelV2.ID.make("mistral-large")),
|
||||
modelID: ModelV2.ID.make("mistral-large"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/mistral",
|
||||
options: { name: "mistral" },
|
||||
|
|
@ -99,8 +96,7 @@ describe("MistralPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-mistral"), ModelV2.ID.make("mistral-large")),
|
||||
modelID: ModelV2.ID.make("mistral-large"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/mistral",
|
||||
options: { name: "custom-mistral" },
|
||||
|
|
@ -125,8 +121,7 @@ describe("MistralPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("mistral"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("mistral-large"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk,
|
||||
options: {},
|
||||
|
|
|
|||
|
|
@ -27,8 +27,7 @@ describe("NvidiaPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("nvidia"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://integrate.api.nvidia.com/v1" }
|
||||
provider.headers = { Existing: "value" }
|
||||
})
|
||||
|
|
@ -50,8 +49,7 @@ describe("NvidiaPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("nvidia"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://integrate.api.nvidia.com/v1" }
|
||||
})
|
||||
})
|
||||
|
|
@ -70,8 +68,7 @@ describe("NvidiaPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("nvidia"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://integrate.api.nvidia.com/v1" }
|
||||
provider.headers = { "X-BILLING-INVOKE-ORIGIN": "CustomOrigin" }
|
||||
})
|
||||
|
|
|
|||
|
|
@ -28,8 +28,7 @@ describe("OpenAICompatiblePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "custom" },
|
||||
|
|
@ -38,8 +37,7 @@ describe("OpenAICompatiblePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "custom", includeUsage: false },
|
||||
|
|
@ -58,8 +56,7 @@ describe("OpenAICompatiblePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "file:///tmp/@ai-sdk/openai-compatible-provider.js",
|
||||
options: { name: "custom" },
|
||||
|
|
@ -83,8 +80,7 @@ describe("OpenAICompatiblePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-provider"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "custom-provider", baseURL: "https://example.com/v1" },
|
||||
|
|
@ -105,8 +101,7 @@ describe("OpenAICompatiblePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("cloudflare-workers-ai"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "cloudflare-workers-ai" },
|
||||
|
|
|
|||
|
|
@ -68,8 +68,7 @@ describe("OpenAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-openai"), ModelV2.ID.make("gpt-5")),
|
||||
modelID: ModelV2.ID.make("gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai",
|
||||
options: { name: "custom-openai", apiKey: "test" },
|
||||
|
|
@ -87,8 +86,7 @@ describe("OpenAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.openai, ModelV2.ID.make("gpt-5")),
|
||||
modelID: ModelV2.ID.make("gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "openai" },
|
||||
|
|
@ -107,8 +105,7 @@ describe("OpenAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.openai, ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -128,8 +125,7 @@ describe("OpenAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.anthropic, ModelV2.ID.make("gpt-5")),
|
||||
modelID: ModelV2.ID.make("gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -145,11 +141,10 @@ describe("OpenAIPlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const item = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.openai),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai",
|
||||
package: "aisdk:@ai-sdk/openai",
|
||||
})
|
||||
catalog.provider.update(item.id, (draft) => {
|
||||
draft.aisdk = item.aisdk
|
||||
draft.package = item.package
|
||||
draft.package = item.package
|
||||
})
|
||||
catalog.model.update(item.id, ModelV2.ID.make("gpt-5"), () => {})
|
||||
|
|
@ -169,11 +164,10 @@ describe("OpenAIPlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const item = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.make("custom-openai")),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
})
|
||||
catalog.provider.update(item.id, (draft) => {
|
||||
draft.aisdk = item.aisdk
|
||||
draft.package = item.package
|
||||
draft.package = item.package
|
||||
})
|
||||
catalog.model.update(item.id, ModelV2.ID.make("gpt-5-chat-latest"), () => {})
|
||||
|
|
|
|||
|
|
@ -133,8 +133,7 @@ describe("OpencodePlugin", () => {
|
|||
expect(provider).toMatchObject({
|
||||
name: "Remote",
|
||||
integrationID: "opencode",
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
package: "aisdk:@ai-sdk/openai-compatible",
|
||||
settings: { baseURL: `${server.url.origin}/v1` },
|
||||
})
|
||||
expect(provider.headers).toEqual({ "x-org-id": "org" })
|
||||
|
|
@ -178,14 +177,12 @@ describe("OpencodePlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const provider = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.opencode),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
})
|
||||
const model = ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(provider.id, ModelV2.ID.make("paid")),
|
||||
modelID: ModelV2.ID.make("paid"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
cost: cost(1),
|
||||
})
|
||||
catalog.provider.update(provider.id, () => {})
|
||||
|
|
@ -207,14 +204,12 @@ describe("OpencodePlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const provider = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.opencode),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
})
|
||||
const model = ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(provider.id, ModelV2.ID.make("free")),
|
||||
modelID: ModelV2.ID.make("free"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
cost: cost(0),
|
||||
})
|
||||
catalog.provider.update(provider.id, () => {})
|
||||
|
|
@ -236,14 +231,12 @@ describe("OpencodePlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const provider = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.opencode),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
})
|
||||
const model = ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(provider.id, ModelV2.ID.make("output-only")),
|
||||
modelID: ModelV2.ID.make("output-only"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
cost: cost(0, 1),
|
||||
})
|
||||
catalog.provider.update(provider.id, () => {})
|
||||
|
|
@ -267,14 +260,12 @@ describe("OpencodePlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const provider = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.opencode),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
})
|
||||
const model = ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(provider.id, ModelV2.ID.make("paid")),
|
||||
modelID: ModelV2.ID.make("paid"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
cost: cost(1),
|
||||
})
|
||||
catalog.provider.update(provider.id, () => {})
|
||||
|
|
@ -303,14 +294,12 @@ describe("OpencodePlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const provider = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.opencode),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
})
|
||||
const model = ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(provider.id, ModelV2.ID.make("paid")),
|
||||
modelID: ModelV2.ID.make("paid"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
cost: cost(1),
|
||||
})
|
||||
catalog.provider.update(provider.id, () => {})
|
||||
|
|
@ -332,16 +321,14 @@ describe("OpencodePlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const provider = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.opencode),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
headers: {},
|
||||
settings: { apiKey: "configured" },
|
||||
})
|
||||
const model = ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(provider.id, ModelV2.ID.make("paid")),
|
||||
modelID: ModelV2.ID.make("paid"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
cost: cost(1),
|
||||
})
|
||||
catalog.provider.update(provider.id, (draft) => {
|
||||
|
|
@ -366,14 +353,12 @@ describe("OpencodePlugin", () => {
|
|||
yield* catalog.transform((catalog) => {
|
||||
const provider = ProviderV2.Info.make({
|
||||
...ProviderV2.Info.empty(ProviderV2.ID.openai),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
})
|
||||
const model = ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(provider.id, ModelV2.ID.make("paid")),
|
||||
modelID: ModelV2.ID.make("paid"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
cost: cost(1),
|
||||
})
|
||||
catalog.provider.update(provider.id, () => {})
|
||||
|
|
|
|||
|
|
@ -30,8 +30,7 @@ describe("OpenRouterPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.openrouter, (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@openrouter/ai-sdk-provider"
|
||||
provider.package = ProviderV2.aisdk("@openrouter/ai-sdk-provider")
|
||||
provider.headers = { Existing: "value" }
|
||||
provider.settings = {}
|
||||
})
|
||||
|
|
@ -58,8 +57,7 @@ describe("OpenRouterPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.openrouter, ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "openrouter" },
|
||||
|
|
@ -70,8 +68,7 @@ describe("OpenRouterPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom"), ModelV2.ID.make("openai/gpt-5")),
|
||||
modelID: ModelV2.ID.make("openai/gpt-5"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@openrouter/ai-sdk-provider",
|
||||
options: { name: "custom" },
|
||||
|
|
@ -85,8 +82,7 @@ describe("OpenRouterPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.openrouter, (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@openrouter/ai-sdk-provider"
|
||||
provider.package = ProviderV2.aisdk("@openrouter/ai-sdk-provider")
|
||||
})
|
||||
catalog.provider.update(ProviderV2.ID.openai, () => {})
|
||||
catalog.model.update(ProviderV2.ID.openrouter, ModelV2.ID.make("openai/gpt-5-chat"), () => {})
|
||||
|
|
|
|||
|
|
@ -42,8 +42,7 @@ describe("PerplexityPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("perplexity"), ModelV2.ID.make("sonar")),
|
||||
modelID: ModelV2.ID.make("sonar"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/perplexity",
|
||||
options: { name: "perplexity" },
|
||||
|
|
@ -61,8 +60,7 @@ describe("PerplexityPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("perplexity"), ModelV2.ID.make("sonar")),
|
||||
modelID: ModelV2.ID.make("sonar"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/perplexity-compatible",
|
||||
options: { name: "perplexity" },
|
||||
|
|
@ -80,8 +78,7 @@ describe("PerplexityPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("perplexity"), ModelV2.ID.make("sonar")),
|
||||
modelID: ModelV2.ID.make("sonar"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/perplexity",
|
||||
options: { name: "perplexity" },
|
||||
|
|
@ -99,8 +96,7 @@ describe("PerplexityPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-perplexity"), ModelV2.ID.make("sonar")),
|
||||
modelID: ModelV2.ID.make("sonar"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/perplexity",
|
||||
options: { name: "custom-perplexity" },
|
||||
|
|
@ -119,8 +115,7 @@ describe("PerplexityPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("perplexity"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("sonar"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
|
|||
|
|
@ -50,8 +50,7 @@ function model(providerID: string) {
|
|||
return ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make(providerID), ModelV2.ID.make("sap-model")),
|
||||
modelID: ModelV2.ID.make("sap-model"),
|
||||
aisdk: true,
|
||||
package: fixtureProvider,
|
||||
package: ProviderV2.aisdk(fixtureProvider),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -58,8 +58,7 @@ describe("SnowflakeCortexPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("openai"), ModelV2.ID.make("gpt-4")),
|
||||
modelID: ModelV2.ID.make("gpt-4"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai",
|
||||
options: { name: "openai" },
|
||||
|
|
@ -78,8 +77,7 @@ describe("SnowflakeCortexPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("snowflake-cortex"), ModelV2.ID.make("claude-sonnet-4-6")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-6"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "snowflake-cortex", baseURL: "https://test.snowflakecomputing.com/api/v2/cortex/v1" },
|
||||
|
|
@ -99,8 +97,7 @@ describe("SnowflakeCortexPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("snowflake-cortex"), ModelV2.ID.make("claude-sonnet-4-6")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-6"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: {
|
||||
|
|
@ -124,8 +121,7 @@ describe("SnowflakeCortexPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("snowflake-cortex"), ModelV2.ID.make("claude-sonnet-4-6")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-6"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "snowflake-cortex", baseURL: "https://test.snowflakecomputing.com/api/v2/cortex/v1" },
|
||||
|
|
@ -145,8 +141,7 @@ describe("SnowflakeCortexPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("snowflake-cortex"), ModelV2.ID.make("claude-sonnet-4-6")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-6"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: {
|
||||
|
|
@ -170,8 +165,7 @@ describe("SnowflakeCortexPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("snowflake-cortex"), ModelV2.ID.make("claude-sonnet-4-6")),
|
||||
modelID: ModelV2.ID.make("claude-sonnet-4-6"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "snowflake-cortex", baseURL: "https://test.snowflakecomputing.com/api/v2/cortex/v1" },
|
||||
|
|
|
|||
|
|
@ -42,8 +42,7 @@ describe("TogetherAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("togetherai"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/togetherai",
|
||||
options: { name: "togetherai" },
|
||||
|
|
@ -62,8 +61,7 @@ describe("TogetherAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("togetherai"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "file:///tmp/@ai-sdk/togetherai-provider.js",
|
||||
options: { name: "togetherai" },
|
||||
|
|
@ -74,8 +72,7 @@ describe("TogetherAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("togetherai"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/togetherai",
|
||||
options: { name: "togetherai" },
|
||||
|
|
@ -94,8 +91,7 @@ describe("TogetherAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-togetherai"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/togetherai",
|
||||
options: { name: "custom-togetherai" },
|
||||
|
|
@ -119,8 +115,7 @@ describe("TogetherAIPlugin", () => {
|
|||
ModelV2.ID.make("meta-llama/Llama-3.3-70B-Instruct-Turbo"),
|
||||
),
|
||||
modelID: ModelV2.ID.make("meta-llama/Llama-3.3-70B-Instruct-Turbo"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: { languageModel: fakeSelectorSdk(calls).languageModel },
|
||||
options: {},
|
||||
|
|
|
|||
|
|
@ -42,8 +42,7 @@ describe("VenicePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("venice"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "venice-ai-sdk-provider",
|
||||
options: { name: "venice" },
|
||||
|
|
@ -61,8 +60,7 @@ describe("VenicePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-venice"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "venice-ai-sdk-provider",
|
||||
options: { name: "custom-venice", apiKey: "test" },
|
||||
|
|
@ -81,8 +79,7 @@ describe("VenicePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("venice"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "file:///tmp/venice-ai-sdk-provider.js",
|
||||
options: { name: "venice" },
|
||||
|
|
@ -91,8 +88,7 @@ describe("VenicePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("venice"), ModelV2.ID.make("model")),
|
||||
modelID: ModelV2.ID.make("model"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: { name: "venice" },
|
||||
|
|
@ -112,8 +108,7 @@ describe("VenicePlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("venice"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("alias"),
|
||||
aisdk: true,
|
||||
package: "test-provider",
|
||||
package: "aisdk:test-provider",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
|
|||
|
|
@ -25,8 +25,7 @@ describe("VercelPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("vercel"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/vercel"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/vercel")
|
||||
provider.headers = { ...provider.headers, Existing: "1" }
|
||||
})
|
||||
})
|
||||
|
|
@ -44,8 +43,7 @@ describe("VercelPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) =>
|
||||
catalog.provider.update(ProviderV2.ID.make("vercel"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/vercel"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/vercel")
|
||||
}),
|
||||
)
|
||||
yield* addPlugin()
|
||||
|
|
@ -63,8 +61,7 @@ describe("VercelPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-vercel"), ModelV2.ID.make("v0-1.0-md")),
|
||||
modelID: ModelV2.ID.make("v0-1.0-md"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/vercel",
|
||||
package: "aisdk:@ai-sdk/vercel",
|
||||
}),
|
||||
package: "@ai-sdk/vercel",
|
||||
options: { name: "custom-vercel" },
|
||||
|
|
|
|||
|
|
@ -43,8 +43,7 @@ describe("XAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("xai"), ModelV2.ID.make("grok-4")),
|
||||
modelID: ModelV2.ID.make("grok-4"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/xai",
|
||||
package: "aisdk:@ai-sdk/xai",
|
||||
}),
|
||||
package: "@ai-sdk/openai-compatible",
|
||||
options: {},
|
||||
|
|
@ -54,8 +53,7 @@ describe("XAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("xai"), ModelV2.ID.make("grok-4")),
|
||||
modelID: ModelV2.ID.make("grok-4"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/xai",
|
||||
package: "aisdk:@ai-sdk/xai",
|
||||
}),
|
||||
package: "@ai-sdk/xai",
|
||||
options: {},
|
||||
|
|
@ -76,8 +74,7 @@ describe("XAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("custom-xai"), ModelV2.ID.make("grok-4")),
|
||||
modelID: ModelV2.ID.make("grok-4"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/xai",
|
||||
package: "aisdk:@ai-sdk/xai",
|
||||
}),
|
||||
package: "@ai-sdk/xai",
|
||||
options: {},
|
||||
|
|
@ -98,8 +95,7 @@ describe("XAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.make("xai"), ModelV2.ID.make("alias")),
|
||||
modelID: ModelV2.ID.make("grok-4"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/xai",
|
||||
package: "aisdk:@ai-sdk/xai",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
@ -121,8 +117,7 @@ describe("XAIPlugin", () => {
|
|||
model: ModelV2.Info.make({
|
||||
...ModelV2.Info.empty(ProviderV2.ID.openai, ModelV2.ID.make("grok-4")),
|
||||
modelID: ModelV2.ID.make("grok-4"),
|
||||
aisdk: true,
|
||||
package: "@ai-sdk/xai",
|
||||
package: "aisdk:@ai-sdk/xai",
|
||||
}),
|
||||
sdk: fakeSelectorSdk(calls),
|
||||
options: {},
|
||||
|
|
|
|||
|
|
@ -32,8 +32,7 @@ describe("ZenmuxPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("zenmux"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://zenmux.ai/api/v1" }
|
||||
})
|
||||
})
|
||||
|
|
@ -49,8 +48,7 @@ describe("ZenmuxPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("zenmux"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://zenmux.ai/api/v1" }
|
||||
provider.headers = { ...provider.headers, Existing: "value" }
|
||||
})
|
||||
|
|
@ -70,8 +68,7 @@ describe("ZenmuxPlugin", () => {
|
|||
const catalog = yield* Catalog.Service
|
||||
yield* catalog.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.make("zenmux"), (provider) => {
|
||||
provider.aisdk = true
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
provider.settings = { ...provider.settings, baseURL: "https://zenmux.ai/api/v1" }
|
||||
provider.headers = { "HTTP-Referer": "https://example.com/", "X-Title": "custom-title" }
|
||||
})
|
||||
|
|
|
|||
|
|
@ -23,13 +23,7 @@ const connections = Credential.defaultLayer.pipe(Layer.fresh)
|
|||
const integrations = Integration.locationLayer.pipe(Layer.provide(events), Layer.provide(connections))
|
||||
const catalog = Catalog.layer.pipe(
|
||||
Layer.provide(
|
||||
Layer.mergeAll(
|
||||
events,
|
||||
locationLayer,
|
||||
Policy.layer.pipe(Layer.provide(locationLayer)),
|
||||
connections,
|
||||
integrations,
|
||||
),
|
||||
Layer.mergeAll(events, locationLayer, Policy.layer.pipe(Layer.provide(locationLayer)), connections, integrations),
|
||||
),
|
||||
)
|
||||
const it = testEffect(
|
||||
|
|
@ -42,13 +36,11 @@ describe("VariantPlugin", () => {
|
|||
const service = yield* Catalog.Service
|
||||
yield* service.transform((catalog) => {
|
||||
catalog.provider.update(ProviderV2.ID.opencode, (provider) => {
|
||||
provider.package = "@ai-sdk/openai-compatible"
|
||||
provider.aisdk = true
|
||||
provider.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
})
|
||||
catalog.model.update(ProviderV2.ID.opencode, ModelV2.ID.make("glm-5.2"), (model) => {
|
||||
model.modelID = ModelV2.ID.make("glm-5.2")
|
||||
model.package = "@ai-sdk/openai-compatible"
|
||||
model.aisdk = true
|
||||
model.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
})
|
||||
})
|
||||
yield* VariantPlugin.Plugin.effect(host({ catalog: catalogHost(service) }))
|
||||
|
|
@ -66,11 +58,8 @@ describe("VariantPlugin", () => {
|
|||
yield* service.transform((catalog) => {
|
||||
catalog.model.update(ProviderV2.ID.opencode, ModelV2.ID.make("glm-5.2"), (model) => {
|
||||
model.modelID = ModelV2.ID.make("glm-5.2")
|
||||
model.package = "@ai-sdk/openai-compatible"
|
||||
model.aisdk = true
|
||||
model.variants = [
|
||||
{ id: ModelV2.VariantID.make("high"), headers: { custom: "true" } },
|
||||
]
|
||||
model.package = ProviderV2.aisdk("@ai-sdk/openai-compatible")
|
||||
model.variants = [{ id: ModelV2.VariantID.make("high"), headers: { custom: "true" } }]
|
||||
})
|
||||
})
|
||||
yield* VariantPlugin.Plugin.effect(host({ catalog: catalogHost(service) }))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue