contributing/project-philosophies.md
Unified provider interface (adapter pattern). Keep a layered architecture (Specifications → Utilities → Providers → Core) that enables a single, consistent API across many AI providers.
Keep the building blocks separated. Building blocks beyond the provider abstraction layer must be cleanly architected and not entangled with it.
Lean, focused mission. Keep the AI SDK centered on its core mission: the provider abstraction layer, plus directly associated building blocks on top (e.g. the UI chatbot protocol).
Stability and backward compatibility first. Changes must remain backward compatible — never change the signature of existing public functions. The only exception is a new AI SDK major release.
Be extremely cautious with @ai-sdk/provider. This package contains the spec. Treat any spec changes as potentially breaking.
@ai-sdk/provider changes are only made in alignment with a new AI SDK major release.Conservative API surface. Keep provider option schemas as restrictive as possible to preserve flexibility for future changes.
@ai-sdk/provider package, which is responsible for the spec. Usage of the TypeScript primitives Params and ReturnType is encouraged in consuming code over having direct exports of the underlying types.Beware premature abstraction. Provider APIs evolve quickly. Avoid adding generic parameters or abstractions that translate differently across providers.
providerOptions.Use Experimental_ prefixes to explore new features outside of major releases. When a new feature needs to be explored outside of a major release cycle, use code structures explicitly marked as experimental (e.g. Experimental_* prefix for types, experimental_* prefix for functions). This allows iteration without committing to a stable API contract.
@ai-sdk/provider to export Experimental_* types for this purpose. These types may have breaking changes outside of major releases.Experimental_VideoModelV4 to ProviderV4).Clear, accurate naming. When in doubt, prefer longer, more explicit names that are unambiguous and correct (e.g. .languageModel(id) over .chat(id)).
Build with developers and agents in mind. Consistent APIs, development patterns, and naming conventions are key.
DX through consistency. Consistent naming conventions and development patterns improve developer experience.
AGENTS.md.