Skip to report

A middleware component joins the model API

Follow the new middleware component into the public Core API, with shared files and the model calls it reaches.

vercel/ai #2759 · PR by lgrammel · Merged

vercel/ai 2be4fb5e..f3787486

base and head as given

  • Experimental language-model middleware is now available from Core
  • Middleware authors can use Core’s re-exported provider language-model types
files changed
23
in a component
5
lines in components
128
components
3
public routes changed
0
schema statements
0
new dependencies
0
excluded by role
18
Based on 5 of 5 eligible changed files

Language-model middleware

Added
Before
did not exist
After
Models can be wrapped with middleware

Developers can transform parameters and intercept generation or streaming when invoking language models. The wrapper preserves model capabilities and lets callers override provider and model identifiers.

In favour

  • In favour: One wrapper applies consistently to generation and streaming calls
  • In favour: Transformed parameters reach optional operation wrappers

The model found nothing to weigh against this.

Files changed in 3 components. Dependencies shown: 1 new, 1 unchanged
unchanged · 1new · 11 component added

1 new dependency between components — Core → Core Middleware

What else could behave differently

5 components · 7 files

These components import changed code, directly or through other files. A traced dependency is a place to review, not a confirmed runtime failure.

Reached 2

ComponentSymbolCited atFilesReached by
Corepackages/ai/core/Added 1 of 2 changed symbols reaching itpackages/ai/core/middleware/language-model-v1-middleware.ts:8-501none direct · 1 at two steps
Trace path

Shortest component path from the changed symbol:

  1. Core Middleware
  2. Core

Later steps follow file imports; they do not prove this symbol is called.

Core Middlewarepackages/ai/core/middleware/Added 1 of 2 changed symbols reaching itpackages/ai/core/middleware/language-model-v1-middleware.ts:8-5022 direct
Trace path

Shortest component path from the changed symbol:

  1. Core Middleware

Later steps follow file imports; they do not prove this symbol is called.

Held back 3

ComponentFilesReached byResolution
packages/ai/streams/1none direct · 1 at three stepsprecise
packages/ai/core/generate-text/2none direct · 2 at four stepsprecise
packages/ai/rsc/stream-ui/1none direct · 1 at four stepsprecise

Statements 2

Experimental_LanguageModelV1Middleware was added and reached 1 file in Core. 1
packages/ai/core/middleware/language-model-v1-middleware.ts:8-50
Experimental_LanguageModelV1Middleware was added and reached 2 files in Core Middleware. 2
packages/ai/core/middleware/language-model-v1-middleware.ts:8-50

17 reached files belong to no component — tests, docs and config.

Routes, schema, dependencies

No public URL, no migration and no new package.

Not stated

  • 91 routes were found on files whose role excludes them, so no route is claimed for them.

Inspect components, files and symbols

Component

Core TypesModified
packages/ai/core/types/

1 file · 8 lines

7 dependents

Core Types added the LanguageModelV1, LanguageModelV1CallOptions, LanguageModelV1Prompt, and LanguageModelV1StreamPart exports.
CoreModified
packages/ai/core/

1 file · 1 line

1 dependent

Core MiddlewareAdded
packages/ai/core/middleware/

3 files · 119 lines

1 dependent

Core Middleware added the Experimental_LanguageModelV1Middleware and experimental_wrapLanguageModel exports.

File

Core Typespackages/ai/core/types/
packages/ai/core/types/language-model.ts

+8 −0

Corepackages/ai/core/
packages/ai/core/index.ts

+1 −0

Core Middlewarepackages/ai/core/middleware/
packages/ai/core/middleware/wrap-language-model.ts

+67 −0

Core Middlewarepackages/ai/core/middleware/
packages/ai/core/middleware/language-model-v1-middleware.ts

+50 −0

Core Middlewarepackages/ai/core/middleware/
packages/ai/core/middleware/index.ts

+2 −0

Function

imports what changeddownstream of it, one mark per step

Experimental_LanguageModelV1Middleware()packages/ai/core/middleware/language-model-v1-middleware.ts

reaches 3 components

Experimental_LanguageModelV1Middleware was added and reached 1 file in Streams. 1
packages/ai/core/middleware/language-model-v1-middleware.ts:8-50
Experimental_LanguageModelV1Middleware was added and reached 2 files in Generate Text. 2
packages/ai/core/middleware/language-model-v1-middleware.ts:8-50
Experimental_LanguageModelV1Middleware was added and reached 1 file in Stream UI. 1
packages/ai/core/middleware/language-model-v1-middleware.ts:8-50

Diff

Core Typespackages/ai/core/types/
packages/ai/core/types/language-model.ts

8–15

Corepackages/ai/core/
packages/ai/core/index.ts

6–6

Core Middlewarepackages/ai/core/middleware/
packages/ai/core/middleware/wrap-language-model.ts

1–67

Core Middlewarepackages/ai/core/middleware/
packages/ai/core/middleware/language-model-v1-middleware.ts

1–50

Core Middlewarepackages/ai/core/middleware/
packages/ai/core/middleware/index.ts

1–2

Analysis scope

1370 → 3
  1. 1,370
    files at head
  2. 47
    components
  3. 3
    changed by this change

Where the new files landed

3 new files
New fileBelongs toUsed byCallsServes
packages/ai/core/middleware/3 new files
Core Middlewarenew territory
Core
nothing outside its own component

15 added files carry no component — 10 example, 4 docs, 1 test.

3components changed
3reached, not changed
1components added/removed
1dependencies added between components
0dependencies removed between components
0files moved to another path

23 files changed, 10 claims stated. 5 components reached in total.

naming: “model

narrative: “model

analyzer 0.1.0, config v1.9.0-phase8

Every line above is derived from 2be4fb5e..f3787486 and nothing else.