AI SDK 7.0.0 removes exports that earlier renames left behind as deprecated aliases, and deletes a long tail of internal types alongside them. Four experimental-prefixed functions, two names v6 already deprecated, and the types for streamText’s finish callbacks are gone or renamed. Anyone importing the old names from ai needs a typecheck to find every site before upgrading. Many more break code whose imports are already correct: four experimental_ option keys on the two generation calls, the two token counts v7 moved under detail objects, the property the response helpers take their stream on, the options object handed to a tool’s execute, and a middleware written against the v3 provider types.

What changed

Before and after

The clearest deterministic patch is the experimental-prefix rename, on a file that calls four of them and re-exports one under another name:

import {
experimental_customProvider,
experimental_generateImage,
experimental_generateSpeech,
experimental_transcribe,
} from 'ai';
export const registry = experimental_customProvider({ languageModels: {} });
export const image = () => experimental_generateImage({ model: null as never, prompt: 'a cat' });
export const speech = () => experimental_generateSpeech({ model: null as never, text: 'hello' });
export const text = () => experimental_transcribe({ model: null as never, audio: new Uint8Array() });
export { experimental_transcribe as transcribeAudio };

After npx emendant fix, every import and every reference is renamed, including inside the re-export:

import {
customProvider,
generateImage,
generateSpeech,
transcribe,
} from 'ai';
export const registry = customProvider({ languageModels: {} });
export const image = () => generateImage({ model: null as never, prompt: 'a cat' });
export const speech = () => generateSpeech({ model: null as never, text: 'hello' });
export const text = () => transcribe({ model: null as never, audio: new Uint8Array() });
export { transcribe as transcribeAudio };

The other four deterministic patches are the same specifier rewrite: ToolCallOptions to ToolExecutionOptions, isToolOrDynamicToolUIPart to isToolUIPart, stepCountIs to isStepCount, and CallSettings to LanguageModelCallOptions.

Fourteen more rename a property rather than an import specifier. One of them rewrites fullStream to stream, and only where the receiver is what streamText returned, so the read on streamObject’s result beside it is left alone:

const result = streamText({ model, prompt: 'hi' });
for await (const part of result.fullStream) console.log(part);
const object = streamObject({ model, prompt: 'hi', schema: undefined as never });
for await (const part of object.fullStream) console.log(part);

After the patch the first loop reads result.stream and the second is unchanged. A pipeThrough or a tee over the same read is the same site and needs no other edit.

The largest group of property renames is the four experimental_ options, reported at the key in the options literal:

return generateText({
model,
prompt: 'hi',
experimental_activeTools: ['weather'],
experimental_output: undefined,
experimental_prepareStep: () => undefined,
experimental_context: { tenant: 'acme' },
});

After the patches, three keys have lost the prefix and the fourth has a new name:

return generateText({
model,
prompt: 'hi',
activeTools: ['weather'],
output: undefined,
prepareStep: () => undefined,
runtimeContext: { tenant: 'acme' },
});

The token counts move a path rather than a name, so usage.reasoningTokens becomes usage.outputTokenDetails.reasoningTokens and usage.cachedInputTokens becomes usage.inputTokenDetails.cacheReadTokens, on the usage and the totalUsage of both results. generateText’s result.experimental_output becomes result.output. The two response helpers take stream where they took textStream, and a shorthand property is rewritten as a pair: createTextStreamResponse({ status: 200, textStream }) becomes createTextStreamResponse({ status: 200, stream: textStream }).

Thirty-eight changes are assisted rather than deterministic, and two of them are worth showing. The first is the streamText callback types. Emendant reports the import of StreamTextOnFinishCallback, StreamTextOnStepFinishCallback or TelemetrySettings, but writing the replacement means typing the callback from the option it fills (onEnd or onStepEnd) rather than from a name that no longer exists, and that needs a named model provider.

The second is the tool options literal, which is reported at the literal rather than at an import, because the key that would be the site is the one that is missing:

await weather.execute({ city: 'Exeter' }, { toolCallId: 'a', messages: [] });

The value to add is the tool’s context, an empty object where the tool declares no contextSchema and otherwise a value of that schema’s type. toolCallId and messages stay as they are. An options object passed by name, or a literal holding a spread, is not reported, since the key may be there at runtime.

The other thirty-six assisted changes are the removed and newly deprecated exports the table names, and the option keys on consumeStream, experimental_generateVideo and the two internal helpers. Emendant reports the site and asks a model for the name that belongs there, because the name is documented by the release and is not in the two published packages the entry was derived from.

Migration guidance and its limits

Apply the twenty-two deterministic patches. Eight rename an import specifier and fourteen rename a property, which is an option key in a literal or a read on a result. The values either side are unchanged, so the call sites are correct once the name is, with one thing to check after: runtimeContext is typed through the call’s own runtime context parameter where experimental_context was unknown, so a context object that carried no type of its own may now need one.

The thirty-eight assisted changes need a model provider named on the command line or in emendant.json. Without one they are reported with their guidance and nothing is sent anywhere. Two of them are assisted because the edit means reading how your code builds an object: the callback types have to be written from the option they fill, and the tool context from the tool’s own contextSchema. The rest are assisted because the replacement name is documented by the release and is not in the two published packages, so the entry states the construct that broke and asks a model for what belongs there instead.

Read those patches before applying them. A deterministic patch is the same rewrite in every repository, from parameters a person curated; an assisted patch is one model’s answer to one prompt. Both are bounded to the site and both are proved the same way, in a copy of your repository moved to 7.0.0 and put through whichever of your own typecheck and tests it finds there, and a patch that fails is withheld. A repository declaring neither gets its patches graded structurally checked, which says the edits applied and the workspace matched again, and that nothing compiled or ran the code. Where the release documented no replacement at all, such as OutputInterface and the telemetry hooks, the guidance tells the model to decline rather than invent a name, so expect some of these to come back unfixed and stay yours to write.

Seven findings are report only, and each for its own reason. The two telemetry keys are the first: neither has a destination inside the call. A custom Tracer now goes to the OpenTelemetry constructor from @ai-sdk/otel and is registered once with registerTelemetry, which the migration guide places at application startup rather than in the file the finding is in. metadata has no replacement key at all; per-call attributes reach telemetry through includeRuntimeContext and includeToolsContext, which name properties of a runtime context rather than carrying a literal map.

timeout on generateObject and streamObject is report only because there is no option to rename it to. Pass an abortSignal from a timer instead, which both releases accept.

StepResult’s functionId and metadata are report only for the same reason as the telemetry keys: v7 keeps no per-step copy of what you passed in. Read them from the telemetry settings you handed to the call, which still declares both.

LanguageModelMiddleware is report only for a third reason: the edit is inside your middleware’s own body, wherever it names a v3 type or reads a field the v4 call options and results dropped. The finding says a value is built against the type, not which members that value names, which is why its confidence is medium and no patch is offered.

This page needs emendant@0.3.0 or later. The entries behind six of the rows below use a matcher kind or a receiver no earlier client reads, and an older CLI skips the whole file for this release with a coverage warning rather than reporting part of it.

This release also renamed the system prompt option to instructions, and moved onRerankFinish and onEmbedFinish to onRerankEnd and onEmbedEnd. Neither is a name the table below covers, so nothing here detects them. A clean scan says a file uses none of the constructs below, nothing more.

What Emendant detects, fixes and verifies

67 changes in ai 7.0.0. 22 patched by a transform, 38 patched only with a model provider you name, 7 report only. Every patch is proved in a copy of your repository before it is offered, and its header names the checks that passed. This table is generated from the feed entry, so it cannot claim more than the entry does.

ChangeSeverityDetectsFixVerified by
experimental_customProvider was removed
ai-npm-7.0.0-experimental-customprovider-removed
Breaking
  • experimental_customProvider imported from ai
Patch, written by the replace-import-specifier transformYour typecheck and tests
experimental_generateImage was removed
ai-npm-7.0.0-experimental-generateimage-removed
Breaking
  • experimental_generateImage imported from ai
Patch, written by the replace-import-specifier transformYour typecheck and tests
ToolCallOptions was removed
ai-npm-7.0.0-toolcalloptions-removed
Breaking
deprecated in 6.0.0
  • ToolCallOptions imported from ai
Patch, written by the replace-import-specifier transformYour typecheck and tests
isToolOrDynamicToolUIPart was removed
ai-npm-7.0.0-istoolordynamictooluipart-removed
Breaking
deprecated in 6.0.0
  • isToolOrDynamicToolUIPart imported from ai
Patch, written by the replace-import-specifier transformYour typecheck and tests
experimental_transcribe became transcribe
ai-npm-7.0.0-experimental-transcribe-renamed
Deprecation
  • experimental_transcribe imported from ai
Patch, written by the replace-import-specifier transformYour typecheck and tests
experimental_generateSpeech became generateSpeech
ai-npm-7.0.0-experimental-generatespeech-renamed
Deprecation
  • experimental_generateSpeech imported from ai
Patch, written by the replace-import-specifier transformYour typecheck and tests
stepCountIs became isStepCount
ai-npm-7.0.0-stepcountis-renamed
Deprecation
  • stepCountIs imported from ai
Patch, written by the replace-import-specifier transformYour typecheck and tests
CallSettings became LanguageModelCallOptions
ai-npm-7.0.0-callsettings-renamed
Deprecation
  • CallSettings imported from ai
Patch, written by the replace-import-specifier transformYour typecheck and tests
The streamText callback types were removed
ai-npm-7.0.0-streamtext-callback-types-removed
Breaking
  • StreamTextOnFinishCallback imported from ai
  • StreamTextOnStepFinishCallback imported from ai
  • TelemetrySettings imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed Experimental_GenerateImageResult
ai-npm-7.0.0-experimental-generate-image-result-removed
Breaking
  • Experimental_GenerateImageResult imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed GenerateTextOnToolCallFinishCallback
ai-npm-7.0.0-generate-text-on-tool-call-finish-callback-removed
Breaking
  • GenerateTextOnToolCallFinishCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed GenerateTextOnToolCallStartCallback
ai-npm-7.0.0-generate-text-on-tool-call-start-callback-removed
Breaking
  • GenerateTextOnToolCallStartCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed OutputInterface
ai-npm-7.0.0-output-interface-removed
Breaking
  • OutputInterface imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed StreamTextOnStartCallback
ai-npm-7.0.0-stream-text-on-start-callback-removed
Breaking
  • StreamTextOnStartCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed StreamTextOnStepStartCallback
ai-npm-7.0.0-stream-text-on-step-start-callback-removed
Breaking
  • StreamTextOnStepStartCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed StreamTextOnToolCallFinishCallback
ai-npm-7.0.0-stream-text-on-tool-call-finish-callback-removed
Breaking
  • StreamTextOnToolCallFinishCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed StreamTextOnToolCallStartCallback
ai-npm-7.0.0-stream-text-on-tool-call-start-callback-removed
Breaking
  • StreamTextOnToolCallStartCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed TelemetryIntegration
ai-npm-7.0.0-telemetry-integration-removed
Breaking
  • TelemetryIntegration imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed ToolLoopAgentOnFinishCallback
ai-npm-7.0.0-tool-loop-agent-on-finish-callback-removed
Breaking
  • ToolLoopAgentOnFinishCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed ToolLoopAgentOnStepFinishCallback
ai-npm-7.0.0-tool-loop-agent-on-step-finish-callback-removed
Breaking
  • ToolLoopAgentOnStepFinishCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed bindTelemetryIntegration
ai-npm-7.0.0-bind-telemetry-integration-removed
Breaking
  • bindTelemetryIntegration imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed registerTelemetryIntegration
ai-npm-7.0.0-register-telemetry-integration-removed
Breaking
  • registerTelemetryIntegration imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated Experimental_SpeechResult
ai-npm-7.0.0-experimental-speech-result-deprecated
Deprecation
  • Experimental_SpeechResult imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated Experimental_TranscriptionResult
ai-npm-7.0.0-experimental-transcription-result-deprecated
Deprecation
  • Experimental_TranscriptionResult imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated GenerateTextOnFinishCallback
ai-npm-7.0.0-generate-text-on-finish-callback-deprecated
Deprecation
  • GenerateTextOnFinishCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated GenerateTextOnStepFinishCallback
ai-npm-7.0.0-generate-text-on-step-finish-callback-deprecated
Deprecation
  • GenerateTextOnStepFinishCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated OnFinishEvent
ai-npm-7.0.0-on-finish-event-deprecated
Deprecation
  • OnFinishEvent imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated OnStartEvent
ai-npm-7.0.0-on-start-event-deprecated
Deprecation
  • OnStartEvent imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated OnStepFinishEvent
ai-npm-7.0.0-on-step-finish-event-deprecated
Deprecation
  • OnStepFinishEvent imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated OnStepStartEvent
ai-npm-7.0.0-on-step-start-event-deprecated
Deprecation
  • OnStepStartEvent imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated OnToolCallFinishEvent
ai-npm-7.0.0-on-tool-call-finish-event-deprecated
Deprecation
  • OnToolCallFinishEvent imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated OnToolCallStartEvent
ai-npm-7.0.0-on-tool-call-start-event-deprecated
Deprecation
  • OnToolCallStartEvent imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated UIMessageStreamOnFinishCallback
ai-npm-7.0.0-uimessage-stream-on-finish-callback-deprecated
Deprecation
  • UIMessageStreamOnFinishCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Deprecated UIMessageStreamOnStepFinishCallback
ai-npm-7.0.0-uimessage-stream-on-step-finish-callback-deprecated
Deprecation
  • UIMessageStreamOnStepFinishCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed prepareToolsAndToolChoice
ai-npm-7.0.0-internal-prepare-tools-and-tool-choice-removed
Breaking
  • prepareToolsAndToolChoice imported from ai/internal
Patch, only when you name a model providerYour typecheck and tests
Removed StreamTextEndEvent
ai-npm-7.0.0-stream-text-end-event-removed
Breaking
  • StreamTextEndEvent imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed StreamTextOnEndCallback
ai-npm-7.0.0-stream-text-on-end-callback-removed
Breaking
  • StreamTextOnEndCallback imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed ToolChoiceViolationError
ai-npm-7.0.0-tool-choice-violation-error-removed
Breaking
  • ToolChoiceViolationError imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed UIMessageStreamOutcome
ai-npm-7.0.0-uimessage-stream-outcome-removed
Breaking
  • UIMessageStreamOutcome imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed UIMessageStreamWriterWithOutcome
ai-npm-7.0.0-uimessage-stream-writer-with-outcome-removed
Breaking
  • UIMessageStreamWriterWithOutcome imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed abortSignal from the first argument of consumeStream()
ai-npm-7.0.0-consume-stream-argument-1-abort-signal-removed
Breaking
  • the abortSignal key in the object passed to consumeStream imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed frameImages from the first argument of experimental_generateVideo()
ai-npm-7.0.0-experimental-generate-video-argument-1-frame-images-removed
Breaking
  • the frameImages key in the object passed to experimental_generateVideo imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed inputReferences from the first argument of experimental_generateVideo()
ai-npm-7.0.0-experimental-generate-video-argument-1-input-references-removed
Breaking
  • the inputReferences key in the object passed to experimental_generateVideo imported from ai
Patch, only when you name a model providerYour typecheck and tests
Removed timeout from the first argument of prepareCallSettings()
ai-npm-7.0.0-internal-prepare-call-settings-argument-1-timeout-removed
Breaking
  • the timeout key in the object passed to prepareCallSettings imported from ai/internal
Patch, only when you name a model providerYour typecheck and tests
Removed additionalRetryableError from the first argument of prepareRetries()
ai-npm-7.0.0-internal-prepare-retries-argument-1-additional-retryable-error-removed
Breaking
  • the additionalRetryableError key in the object passed to prepareRetries imported from ai/internal
Patch, only when you name a model providerYour typecheck and tests
metadata is gone from the telemetry options
ai-npm-7.0.0-telemetry-metadata-removed
Breaking
  • the metadata key under experimental_telemetry in the object passed to generateText imported from ai
  • the metadata key under experimental_telemetry in the object passed to streamText imported from ai
  • the metadata key under experimental_telemetry in the object passed to generateObject imported from ai
  • the metadata key under experimental_telemetry in the object passed to streamObject imported from ai
  • the metadata key under experimental_telemetry in the object passed to embed imported from ai
  • the metadata key under experimental_telemetry in the object passed to embedMany imported from ai
  • the metadata key under experimental_telemetry in the object passed to rerank imported from ai
Report onlyNot applicable
tracer is gone from the telemetry options
ai-npm-7.0.0-telemetry-tracer-removed
Breaking
  • the tracer key under experimental_telemetry in the object passed to generateText imported from ai
  • the tracer key under experimental_telemetry in the object passed to streamText imported from ai
  • the tracer key under experimental_telemetry in the object passed to generateObject imported from ai
  • the tracer key under experimental_telemetry in the object passed to streamObject imported from ai
  • the tracer key under experimental_telemetry in the object passed to embed imported from ai
  • the tracer key under experimental_telemetry in the object passed to embedMany imported from ai
  • the tracer key under experimental_telemetry in the object passed to rerank imported from ai
Report onlyNot applicable
streamText's result names its parts stream instead of fullStream
ai-npm-7.0.0-stream-text-result-fullstream-deprecated
Deprecation
  • .fullStream read on what streamText imported from ai returns
Patch, written by the rename-property transformYour typecheck and tests
A tool's execute takes a context in its options
ai-npm-7.0.0-tool-execution-options-context-required
Breaking
  • a context key absent from argument 1 of .execute() on what tool imported from ai returns
  • a context key absent from argument 1 of .execute() on what dynamicTool imported from ai returns
Patch, only when you name a model providerYour typecheck and tests
LanguageModelMiddleware is declared against the v4 provider types
ai-npm-7.0.0-language-model-middleware-members-changed
Breaking
medium confidence
  • a value declared, returned or implemented as LanguageModelMiddleware imported from ai
Report onlyNot applicable
generateText's result no longer declares experimental_output
ai-npm-7.0.0-generate-text-result-experimental-output-removed
Breaking
  • .experimental_output read on what generateText imported from ai returns
Patch, written by the rename-property transformYour typecheck and tests
LanguageModelUsage moved reasoningTokens under outputTokenDetails
ai-npm-7.0.0-language-model-usage-reasoning-tokens-removed
Breaking
  • .reasoningTokens read on .usage of what generateText imported from ai returns
  • .reasoningTokens read on .totalUsage of what generateText imported from ai returns
  • .reasoningTokens read on .usage of what streamText imported from ai returns
  • .reasoningTokens read on .totalUsage of what streamText imported from ai returns
Patch, written by the rename-property transformYour typecheck and tests
LanguageModelUsage replaced cachedInputTokens with inputTokenDetails.cacheReadTokens
ai-npm-7.0.0-language-model-usage-cached-input-tokens-removed
Breaking
  • .cachedInputTokens read on .usage of what generateText imported from ai returns
  • .cachedInputTokens read on .totalUsage of what generateText imported from ai returns
  • .cachedInputTokens read on .usage of what streamText imported from ai returns
  • .cachedInputTokens read on .totalUsage of what streamText imported from ai returns
Patch, written by the rename-property transformYour typecheck and tests
generateText no longer accepts experimental_activeTools
ai-npm-7.0.0-generate-text-argument-1-experimental-active-tools-removed
Breaking
  • the experimental_activeTools key in the object passed to generateText imported from ai
Patch, written by the rename-property transformYour typecheck and tests
streamText no longer accepts experimental_activeTools
ai-npm-7.0.0-stream-text-argument-1-experimental-active-tools-removed
Breaking
  • the experimental_activeTools key in the object passed to streamText imported from ai
Patch, written by the rename-property transformYour typecheck and tests
generateText no longer accepts experimental_output
ai-npm-7.0.0-generate-text-argument-1-experimental-output-removed
Breaking
  • the experimental_output key in the object passed to generateText imported from ai
Patch, written by the rename-property transformYour typecheck and tests
streamText no longer accepts experimental_output
ai-npm-7.0.0-stream-text-argument-1-experimental-output-removed
Breaking
  • the experimental_output key in the object passed to streamText imported from ai
Patch, written by the rename-property transformYour typecheck and tests
generateText no longer accepts experimental_prepareStep
ai-npm-7.0.0-generate-text-argument-1-experimental-prepare-step-removed
Breaking
  • the experimental_prepareStep key in the object passed to generateText imported from ai
Patch, written by the rename-property transformYour typecheck and tests
generateText renamed experimental_context to runtimeContext
ai-npm-7.0.0-generate-text-argument-1-experimental-context-removed
Breaking
  • the experimental_context key in the object passed to generateText imported from ai
Patch, written by the rename-property transformYour typecheck and tests
streamText renamed experimental_context to runtimeContext
ai-npm-7.0.0-stream-text-argument-1-experimental-context-removed
Breaking
  • the experimental_context key in the object passed to streamText imported from ai
Patch, written by the rename-property transformYour typecheck and tests
generateObject no longer accepts timeout
ai-npm-7.0.0-generate-object-argument-1-timeout-removed
Breaking
  • the timeout key in the object passed to generateObject imported from ai
Report onlyNot applicable
streamObject no longer accepts timeout
ai-npm-7.0.0-stream-object-argument-1-timeout-removed
Breaking
  • the timeout key in the object passed to streamObject imported from ai
Report onlyNot applicable
createTextStreamResponse renamed textStream to stream
ai-npm-7.0.0-create-text-stream-response-argument-1-text-stream-renamed
Breaking
  • the textStream key in the object passed to createTextStreamResponse imported from ai
Patch, written by the rename-property transformYour typecheck and tests
pipeTextStreamToResponse renamed textStream to stream
ai-npm-7.0.0-pipe-text-stream-to-response-argument-1-text-stream-renamed
Breaking
  • the textStream key in the object passed to pipeTextStreamToResponse imported from ai
Patch, written by the rename-property transformYour typecheck and tests
StepResult no longer carries functionId
ai-npm-7.0.0-step-result-function-id-removed
Breaking
  • .functionId read on each element iterated through .steps from what generateText imported from ai returns
  • .functionId read on each element iterated through .steps from what streamText imported from ai returns
Report onlyNot applicable
StepResult no longer carries metadata
ai-npm-7.0.0-step-result-metadata-removed
Breaking
  • .metadata read on each element iterated through .steps from what generateText imported from ai returns
  • .metadata read on each element iterated through .steps from what streamText imported from ai returns
Report onlyNot applicable
StepResult renamed experimental_context to runtimeContext
ai-npm-7.0.0-step-result-experimental-context-removed
Breaking
  • .experimental_context read on each element iterated through .steps from what generateText imported from ai returns
  • .experimental_context read on each element iterated through .steps from what streamText imported from ai returns
Patch, written by the rename-property transformYour typecheck and tests

emendant explain <change-id> prints any row's entry, guidance and sources at the terminal.

Coverage

Snapshot
2026-09-20.1, sequence 27, signed 20 September 2026
Minimum CLI
emendant@0.3.0
Feed entry
feed/npm/ai/7.0.0.json

emendant feed status shows the snapshot your machine holds, and emendant feed update fetches the latest.

Primary sources

Every claim above was checked against these, each pinned to the release rather than to a default branch.

Scan your repository

Runs locally, reads your lockfile and source, sends nothing anywhere.

npx emendant scan

Then npx emendant fix writes the patches the table says exist. The getting started guide covers the flags and the patch grades.