Uh oh!
There was an error while loading. Please reload this page.
Add provider wrappers for all official AI SDK providers - #986
Conversation
…K providers Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
🦋 Changeset detectedLatest commit: 0a9f8c1 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
🧪 E2E Test Results❌ Some tests failed Summary
❌ Failed Tests▲ Vercel Production (1 failed)nextjs-webpack (1 failed):
💻 Local Development (41 failed)express-stable (41 failed):
🌍 Community Worlds (41 failed)turso (41 failed):
Details by Category❌ ▲ Vercel Production
❌ 💻 Local Development
✅ 📦 Local Production
✅ 🐘 Local Postgres
✅ 🪟 Windows
❌ 🌍 Community Worlds
✅ 📋 Other
❌ Some E2E test jobs failed:
Check the workflow run for details. |
📊 Benchmark Results
workflow with no steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) workflow with 1 step💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) workflow with 10 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Next.js (Turbopack) | Express workflow with 25 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Next.js (Turbopack) | Nitro | Express workflow with 50 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Next.js (Turbopack) | Nitro | Express Promise.all with 10 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Next.js (Turbopack) | Nitro Promise.all with 25 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Next.js (Turbopack) | Nitro | Express Promise.all with 50 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) Promise.race with 10 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Next.js (Turbopack) | Express | Nitro Promise.race with 25 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Next.js (Turbopack) | Express | Nitro Promise.race with 50 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Next.js (Turbopack) | Express | Nitro Stream Benchmarks(includes TTFB metrics)workflow with stream💻 Local Development
▲ Production (Vercel)
🔍 Observability: Next.js (Turbopack) | Nitro | Express SummaryFastest Framework by WorldWinner determined by most benchmark wins
Fastest World by FrameworkWinner determined by most benchmark wins
Column Definitions
Worlds:
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
There was a problem hiding this comment.
Pull request overview
Adds @workflow/ai/* entrypoints for additional official AI SDK providers using the existing 'use step' wrapper approach so model factory functions can cross workflow step boundaries.
Changes:
- Added 12 new provider wrapper modules under
packages/ai/src/providers/*. - Exposed new provider entrypoints via
packages/ai/package.jsonexportsand added corresponding optional dependencies. - Updated lockfile and added a changeset for a patch release of
@workflow/ai.
Reviewed changes
Copilot reviewed 14 out of 15 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| pnpm-lock.yaml | Adds resolved optional dependencies for the new AI SDK provider packages (and their transitive deps). |
| packages/ai/package.json | Adds exports entries for new provider subpath entrypoints and lists new provider SDKs as optional dependencies. |
| packages/ai/src/providers/amazon-bedrock.ts | Adds step-compatible wrapper for Bedrock provider factory. |
| packages/ai/src/providers/azure.ts | Adds step-compatible wrapper for Azure provider factory. |
| packages/ai/src/providers/cerebras.ts | Adds step-compatible wrapper for Cerebras provider factory. |
| packages/ai/src/providers/cohere.ts | Adds step-compatible wrapper for Cohere provider factory. |
| packages/ai/src/providers/deepinfra.ts | Adds step-compatible wrapper for DeepInfra provider factory. |
| packages/ai/src/providers/deepseek.ts | Adds step-compatible wrapper for DeepSeek provider factory. |
| packages/ai/src/providers/fireworks.ts | Adds step-compatible wrapper for Fireworks provider factory. |
| packages/ai/src/providers/google-vertex.ts | Adds step-compatible wrapper for Google Vertex provider factory. |
| packages/ai/src/providers/groq.ts | Adds step-compatible wrapper for Groq provider factory. |
| packages/ai/src/providers/mistral.ts | Adds step-compatible wrapper for Mistral provider factory. |
| packages/ai/src/providers/perplexity.ts | Adds step-compatible wrapper for Perplexity provider factory. |
| packages/ai/src/providers/togetherai.ts | Adds step-compatible wrapper for TogetherAI provider factory. |
| .changeset/add-ai-sdk-providers.md | Declares a patch release noting the new provider wrappers. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Closing: blocked on AI SDK v6 upgradeAfter investigating the type compatibility issues flagged by Copilot's review, I'm closing this PR. The Root causeAll 12 new provider SDKs resolve to a different copy of
pnpm installs these as separate package instances, and TypeScript treats types from different copies as incompatible — even when structurally identical. This causes TS2742 ("inferred type cannot be named") on every new provider when you try to match the clean pattern used by the existing 5 providers (openai, anthropic, google, xai, gateway), which all happen to resolve to The only workaround is explicit return type annotations + Why the existing providers workopenai, anthropic, google, xai, and gateway SDKs all depend on Path forwardUpgrading to AI SDK v6 exclusively (dropping v5 support) would unify the workspace on
Once v6 is landed, adding these provider wrappers becomes trivial — just copy the existing openai/anthropic pattern with no casts needed. cc @gr2m@lgrammel@TooTallNate — tagging for visibility since this is blocked on |
lgrammel
commented
Feb 11, 2026
@pranaygp@gr2m all ai sdk 6 providers should use the v3 provider spec. the dependencies happen automatically: https://github.com/vercel/ai/blob/main/packages/amazon-bedrock/package.json#L54 so I do not understand how you can have providers with older |
Summary
Adds step-boundary-compatible provider wrappers for 12 additional official AI SDK providers, matching the existing pattern used by
openai,anthropic,google,xai, andgateway.New providers:
@workflow/ai/amazon-bedrock)@workflow/ai/azure)@workflow/ai/cerebras)@workflow/ai/cohere)@workflow/ai/deepinfra)@workflow/ai/deepseek)@workflow/ai/fireworks)@workflow/ai/google-vertex)@workflow/ai/groq)@workflow/ai/mistral)@workflow/ai/perplexity)@workflow/ai/togetherai)Each provider follows the same
'use step'wrapper pattern so that the model factory function survives step boundary serialization via theStepFunctionserde mechanism. All provider SDK packages are added as optional dependencies.Usage is identical to existing providers:
Skipped providers:
@ai-sdk/huggingface— not a published package yet@ai-sdk/openai-compatible— no default provider instance; requires custom configuration viacreateOpenAICompatible(). Users who need OpenAI-compatible providers can use the SDK package directly with a factory function.Why some providers need
as CompatibleLanguageModelcastsThe 5 existing providers (openai, anthropic, google, xai, gateway) don't need casts because their SDK packages depend on
@ai-sdk/provider@2.0.0— the same copy that@workflow/airesolves to. TypeScript sees identical types from the same package instance, soLanguageModelV2satisfiesCompatibleLanguageModeldirectly.The 12 new providers depend on
@ai-sdk/provider@3.0.8(or@2.0.1for amazon-bedrock/google-vertex), which pnpm resolves as a separate package instance. TypeScript treats types from different package copies as incompatible — even when they're structurally identical — causing TS2742 ("inferred type cannot be named") and TS2322 errors. The explicit return type annotation andas CompatibleLanguageModelcast is the only way to make these compile cleanly.This is safe at runtime because both V2 and V3 models have the same structural
doStreaminterface that@workflow/airelies on.Note: Upgrading to AI SDK v6 exclusively (dropping v5 support) was explored as a way to unify on
@ai-sdk/provider@3.xacross all packages. However, this requires migrating all consumer code (do-stream-step.ts, durable-agent.ts, etc.) from V2 to V3 types, and several provider SDKs still don't have v3 releases. That's a larger effort tracked separately.Test plan
🤖 Generated with Claude Code