assistant-stream#
0.3.43#
Patch Changes#
-
#7220
628df88- fix: a producer whose stream expired no longer writes into or finalizes the stream a laterrunstarts under the same id.createResumableStreamContextnow passes a lease from the new optionalResumableStreamStore.acquireLeasetoappendandfinalize; the bundled in-memory and Redis stores implement it, and custom stores opt in by implementing it. (@samdickson22) -
#7262
ed77e95- fix: avoid repeatedly scanning unfinished SSE lines when events arrive in small chunks (@Kinfe123) -
#7198
f6f52cd- fix: a stale Redis append or delete no longer changes a stream that was reacquired between the store's metadata read and its write. the node-redis and ioredis adapters now run append, finalize, and delete as scripts throughEVALSHA, so the Redis endpoint must allowEVALSHAas well asEVAL. a customRedisLikeClientgets the same protection by implementing the optionalappendIfUnchangedanddeleteIfUnchanged. (@Kinfe123) -
#7143
790217b- fix: batch raw AssistantStream enqueue calls (@Kinfe123) -
#7344
dacfcec- fix: skip in-memory resumable stream expiry sweeps until an expiry can be due, avoiding full-store scans on every chunk while preserving TTL and reader wakeups. (@Kinfe123) -
#7241
c0d6150- fix: strictTextStreamController.append()drops deltas instead of throwing after the consumer cancels the stream (@ShobhitPatra) -
#7242
275eeb9- fix: the tool-callargsTextcontroller honors thestrictflag passed tocreateAssistantStreamController(@ShobhitPatra) -
#7327
e57c33f- fix: avoid rescanning emitted tool argument array entries on each streaming update (@Kinfe123) -
#7056
e533f6b- fix: mark tool arguments complete when their text stream ends (@ephraimduncan) -
#7325
28691a5- fix: return only own JSON properties when reading tool argument fields (@Kinfe123)
0.3.42#
Patch Changes#
-
#7058
3bcd6db- fix: prevent tool execution after cancellation during asynchronous schema validation (@ephraimduncan) -
#7061
a16b990- fix: use final message usage for token counts when the stream reports a positive output total (@ephraimduncan) -
#7106
253c80d- fix(assistant-stream): settle cancellation during asynchronous tool validation (@Kinfe123) -
#7107
e6158c8- fix(assistant-stream): preserve prototype-named tool call IDs (@Kinfe123) -
#7158
623d5ff- fix: apply deeply nested GORP paths without overflowing the stack (@Kinfe123) -
#7142
07eeb54- perf: skip partial tool argument parsing without active readers (@Kinfe123) -
#7059
12c5447- fix: remove nested required constraints from partial schemas without properties (@ephraimduncan) -
#7065
9b9d5e9- fix: keep provider messages in backend tool responses and completed pending tool calls (@ephraimduncan) -
#6881
afac9e0- fix: complete aborted in-memory stream reads without throwing a stored error after the last buffered chunk. (@ephraimduncan) -
#6877
4cdcabb- fix: Keep stored replay bytes separate from producer and consumer buffers. (@ephraimduncan) -
#6954
23d2865- fix: keep the first SSE event when a text stream starts with a byte-order mark (@ephraimduncan) -
#7060
b505555- fix: supply the draft-07 target to Standard JSON Schema converters so tool parameter conversion does not throw on missing options (@ephraimduncan) -
#6868
01fdd4b- fix: keep positive exponents incomplete until all argument digits arrive (@ephraimduncan) -
#6952
59a8251- fix: keep the JSON quotes on a successful tool input that is a plain string, so a tool with a string input schema executes instead of failing with a parameter parsing error (@ephraimduncan)
0.3.41#
Patch Changes#
-
#6737
46fad14- fix: prevent stale Redis producers from finalizing replacement streams (@Kinfe123)RedisLikeClientnow requires afinalizeIfUnchangedmethod; no public API accepts aRedisLikeClient, so this only affects code that typed a value against the interface directly. -
#6656
f0d0aa2- fix: await cross-realm and thenable tool validation results (@rupic-app) -
#6589
5bdd416- fix: preserve valid files with empty payload or MIME values (@Kinfe123) -
#6794
e53299b- refactor: drop the redis client members the resumable store never calls (@okisdev)RedisLikeClientno longer declaresset,expire,existsorxAdd,PipelineCommandno longer has a"set"variant, andNodeRedisLikeno longer requiresexpire,exists,xAddor the non-NXsetoverload; no public API accepts aRedisLikeClient, so this only affects code that typed a value against the interface directly.
0.3.40#
Patch Changes#
-
#6235
8626c1f- fix: encode file parts on the data stream (@Kinfe123) -
#6249
531f61a- fix: reject non-canonical gorp array indices (@Kinfe123) -
#6243
dfaa94f- fix: make merge stream seal idempotent (@Kinfe123) -
#6394
a4bc54a- refactor: build accumulated assistant messages through one part-append helper (@samdickson22) -
#6355
fd471e9- fix: keep partial tool args parseable while a\uXXXXescape is still streaming (@ShobhitPatra) -
#6319
ac7ec15- fix: unstable_runPendingTools no longer re-executes tool calls that already have a result (@ShobhitPatra) -
#6417
f96e22f- refactor: split the ui message stream chunk normalizer out of the decoder (@okisdev) -
#6414
bfc8bef- refactor: share the sse pipeline, stream factory, and closed-stream drop scaffolding. (@okisdev) -
#6316
2cd5cbc- fix: TextStreamController.close() no longer throws after the consumer cancels (@ShobhitPatra) -
#6242
105af3e- fix: guard tool-call stream writes after consumer cancellation (@Kinfe123) -
#6368
4c3194a- refactor: share the decoder tool-call controller registry between data-stream and ui-message-stream. (@okisdev)
0.3.39#
Patch Changes#
- #6155
19e52c4- fix: decode AI SDK v6 tool-input/tool-output chunks in UIMessageStreamDecoder (@okisdev)
0.3.38#
Patch Changes#
-
#5938
0e91e27- fix: cancel invalid Gorp stream responses (@rupic-app) -
#5974
c5bc8ed- fix: release merged stream child readers after completion and cancellation (@Kinfe123) -
#5703
f0d1d48- fix: await merged stream cleanup during cancellation (@Kinfe123) -
#5524
ab7f49f- fix: keep partial tool-call args parseable when a negative number is cut before its digits (@VihaanAgarwal)fixJsontreated the-that opens an array element as a complete value, so a stream cut at{"a":[-repaired to{"a":[-]}. That is not valid JSON,parsePartialJsonObjectfell into its catch and returnedundefined, and callers that fall back to{}dropped every field streamed so far until the next delta landed.The
INSIDE_ARRAY_STARTdefault branch advancedlastValidIndexbefore delegating toprocessValueStart, which deliberately leaves it alone for-because a lone minus carries no value yet. Every other value-start site already letsprocessValueStartown that index, which is why{"a":-and{"a":[1,-truncated correctly and only the first element of an array did not. -
#5927
a2ab997- fix: isolate overlapping tool executions that reuse a toolCallId (@rupic-app) -
#5427
e8997d9- fix: cancel and release assistant message stream readers when iteration ends (@Kinfe123) -
#5975
44e574f- fix: release resumable producer readers after stream failures (@Kinfe123) -
#5515
14c3b5a- fix: prevent stale data from leaking into reacquired Redis streams (@Kinfe123)
0.3.37#
Patch Changes#
-
#5729
0ae51a8- feat: support ioredis 6 alongside 5 in the resumable stream store (@okisdev) -
#5734
e319574- fix: isolate tool execution lifecycle callback errors from stream settlement (@Kinfe123)
0.3.36#
Patch Changes#
0.3.35#
Patch Changes#
-
#5534
456b056- fix: preserve streamed tool arguments when other content is interleaved (@Kinfe123) -
#5700
a88751d- fix: carry a reasoning summary on the data stream. a reasoning part opened withunstable_summarypreviously lost it on that wire, and a summary-only part produced no frames at all, so it never reached the client. the encoder now emits a reasoning part-start frame when there is a summary to carry; a stream that does not use the field is unchanged, and one that does requires a decoder that understands the frame. (@okisdev) -
#5639
79253f2- feat: preserve app-authored reasoning summaries on message parts (@rupic-app)
0.3.34#
Patch Changes#
0.3.33#
Patch Changes#
- #5565
78943a3- feat: add opt-instrict: falsemode that reconciles malformed stream input instead of throwing (decoders, state accumulator); assistant-transport resume runs always decode leniently (@Yonom)
0.3.32#
Patch Changes#
-
#5521
01140bd- fix: prevent pending frontend tool output from enqueuing after stream cancellation (@Kinfe123) -
#5463
4c313cf- fix: carry a file part's filename through to the model message (@okisdev)GenericFileParthad nofilenamefield, so aFileMessagePartorImageMessagePartcarrying one arrived at the provider anonymous even thoughLanguageModelV2FilePartaccepts a filename. The field is now declared and forwarded by bothtoGenericMessagesand the react-data-stream converter, and omitted entirely when the source part has none. -
#5537
c868710- fix: keep a settled tool call distinguishable from an unfinished one, so a tool returning false, 0, "" or null no longer loses its result on the cloud round trip and no longer reads as never completed (@okisdev) -
#5535
5ececc1- fix: synthesize a result for tool calls that have none, so a thread holding a cancelled or abandoned tool call no longer breaks every later run (@okisdev)
0.3.31#
Patch Changes#
-
#5296
936c52c- fix: DataStreamDecoder drops tool-call args deltas for an already-closed args stream instead of crashing mid-decode when a text delta interleaves between a tool call's begin and its args (@Solaris-star) -
#5318
ee87dd9- fix: accept case-insensitivedata:URL schemes and normalize parsed mime types to lowercase (@ShobhitPatra)
0.3.30#
Patch Changes#
- #5284
a8cd1c9- fix: addToolCallPart({response}) settles the tool-call part so the stream closes (@ShobhitPatra)
0.3.29#
Patch Changes#
- #5278
f78e579- fix: PlainTextEncoder emits assistant text only. Reasoning and tool-call argument deltas no longer leak into the output, non-text chunks (result, annotations, data, update-state, tool-call-args-text-finish) are skipped instead of throwing mid-stream, and the incorrect x-vercel-ai-data-stream header is removed from the response headers. (@ShobhitPatra)
0.3.28#
Patch Changes#
-
#5236
f9c1b0f- fix: DataStreamChunkDecoder skips blank framing lines and drops colon-less lines with a warning instead of throwing (@Yonom) -
#5206
235c17e- fix: parse SSEDecoder and data-stream chunk frames with secure-json-parse, matching the transport and UIMessageStream decoders; a malformed or prototype-pollution frame is now dropped with a warning and the stream continues instead of erroring the whole stream (@rupic-app) -
#5208
a0ddc86- AdopterasableSyntaxOnly; public enums are nowas constobjects. (@Yonom) -
#5263
06f5266- Same-priority duplicate tool registrations throw again. TheTooltype gains an optionaloverwriteflag (discouraged escape hatch) that lets a later registration silently replace a same-priority tool of the same name; the flag is stripped from the merged output. (@Yonom) -
#5200
d319637- fix: parse UIMessageStream frames with secure-json-parse, matching the transport decoder (@ShobhitPatra)
0.3.27#
Patch Changes#
-
#5176
8630186- fix: dedupe accumulator drop warnings per instance and drop class (@ShobhitPatra) -
#5106
446a118- fix: isolate resumable stream observability hook errors (@Kinfe123) -
#5045
a081656- fix: prevent assistant stream task settlement from escaping as unhandled rejections (@Kinfe123) -
#5044
25a5be0- fix: avoid applying initial gorp stream operations twice (@Kinfe123)The first decoded chunk now represents its authoritative snapshot as a
synthetic rootset; later chunks preserve their incremental operations.
The deprecated object stream aliases share the same encoder and fix. -
#5141
47562fd- fix: clean up abort listeners after frontend tool execution settles (@Kinfe123) -
#5063
5e4dd9f- feat: add GorpStreamDeltaTracker, migrating gorp's delta-tracking (change frames, isChangedAt, getChangedKeys) into GorpStream (@Yonom) -
#5142
5da0d93- fix: guard gorp accumulator path navigation against inherited keys and prototype-polluting path segments (@Yonom) -
#5064
85d4976- refactor: consolidate on a single wire protocol name (assistant-transport). Remove the unpublished gorp-shaped exports, expose diff tracking as AssistantTransportDeltaTracker and the state operation type as AssistantTransportStateOperation, and keep the published ObjectStream aliases working as deprecated delegates. (@Yonom) -
#5061
5135400- feat: rename ObjectStream to GorpStream (old names remain as deprecated aliases) (@Yonom) -
#4988
9a343db- fix: guard object stream settlement after cancellation (@Kinfe123) -
#5107
666aaab- fix: prioritize backend tool results over stale argument parse errors (@Solaris-star) -
#5129
ba948d8- fix: cancel polyfilled async iterators when consumers stop early (@Kinfe123) -
#5152
44aac58- fix: validate assistant-transport chunk shape at the decode boundary and bounds-check accumulator part paths (@ShobhitPatra) -
#5172
9402648- fix: validate per-type required fields at the assistant-transport decode boundary and drop malformed chunks in the accumulator instead of aborting the response; an unsupported part-start now inserts an empty reasoning placeholder to keep later part indices aligned (@ShobhitPatra) -
#5155
4651ea5- fix: drop malformed UIMessageStream frames at the decode boundary and fix tool-result closing the active args stream (@ShobhitPatra) -
#5174
2bc6798- fix: only record firstTokenTime when a text-delta actually mutates a part (@rupic-app)
0.3.26#
Patch Changes#
-
#4883
43b8ce8- fix: accept parameterized event-stream content types (@Kinfe123) -
#4949
1e926b6- refactor: back the internal SSE pipelines with the shared SSEEventDecoder (@okisdev) -
#4880
d6c7571- feat: export a spec-complete SSE event decoder from assistant-stream/utils (@okisdev) -
#4876
4d7a447- fix: parse all standard SSE line endings (@Kinfe123) -
#4875
ca751f4- fix: discard unterminated SSE frames (@Kinfe123) -
#4755
38bf104- feat: detect data stream protocol from response headers (@Kinfe123) -
#4854
19b2a00- fix: accept the AI SDK v5+deltatext chunks,source-url, flatfile, and bare lifecycle chunks in UIMessageStreamDecoder (@ShobhitPatra) -
#4955
c2d2271- refactor: remove the dead is-json copy (@ShobhitPatra) -
#4842
84e8ddf- feat: optional code and severity metadata on error chunks (@okisdev)
0.3.25#
Patch Changes#
0.3.24#
Patch Changes#
0.3.23#
Patch Changes#
0.3.22#
Patch Changes#
- #4379
94cc028- feat: per-tool-call timing and stall detection.ToolCallMessagePartgains atimingfield ({ startedAt, completedAt? }in epoch ms), auto-populated by the assistant-stream accumulator at part start and result, and accepted onThreadMessageLikefor external-store hosts. NewuseToolCallElapsed()hook returns the call's elapsed milliseconds, ticking once per second while running;unstable_useMessageStallDetection({ thresholdMs })reports mid-run output stalls by watching a message content fingerprint. The kitToolFallbacktrigger renders the duration when timing is present. (@okisdev)
0.3.21#
Patch Changes#
0.3.20#
Patch Changes#
-
#4163
cba2b42- fix(assistant-stream): resolveargsReader.get()toundefinedonce args close (@Yonom)Awaiting an optional arg that the model never produced (
reader.args.get("optional")) previously hung forever, because the args stream was never closed and pending handles were never settled. The reader now closes when args streaming finishes, resolving outstandingget()calls toundefinedfor absent fields and closing openstreamValues/streamText/forEachstreams. -
#4226
58f80e0- fix: avoid uploading backend-default schemas for use-generative frontend and human tools (@Yonom) -
#4212
5fe118d- feat: add MCP server support to generative toolkits (@Yonom) -
#4213
dcd5897- feat: add provider-executed tool support to generative toolkits (@Yonom) -
#4236
ae54c55- feat: addstubTool()and experimentaluseAuiToolOverrides()for locally executed generative toolkit tools (@Yonom)
0.3.19#
Patch Changes#
- #4176
27ae936- feat: add theToolkitDeclaration/ToolkitDeclarationDefinitiontypes for authoring a toolkit permissively (a backend tool may declaredescription/parameters/execute); the canonicalToolkitkeeps those fields erased. Author withdefineToolkit()from@assistant-ui/react, which the"use generative"compiler strips per build. (@Yonom)
0.3.18#
Patch Changes#
-
#4172
1315789- feat: add theToolkitDeclaration/ToolkitDeclarationDefinitiontypes for authoring a toolkit permissively (a backend tool may declaredescription/parameters/execute); the canonicalToolkitkeeps those fields erased. Author withdefineToolkit()from@assistant-ui/next, which the"use generative"compiler strips per build. (@Yonom) -
#4151
299d448- chore: drop stalebiome-ignorepragmas now that the repo lints with oxlint (@okisdev) -
#4167
fcb6baf- feat: add adisplaypresentation hint to tools and a"standalone-tool-call"key togroupPartByType. (@Yonom)Tool UIs fall into three buckets: prompting the user (human-in-the-loop), informing the user (generative UI), and traces of what the model is doing (routine frontend/backend tool calls). The first two should be surfaced on their own; the last belongs folded into the chain-of-thought trace. The new
displayfield on a tool lets you place a tool in the right bucket without overloadingtype:const toolkit = { ask_user: { type: "human", render: AskUI }, // standalone (forced — can't opt out) search_web: { type: "frontend", render: SearchUI }, // inline trace (default) checkout: { type: "frontend", render: CheckoutUI, display: "standalone", // opt in }, } satisfies Toolkit;display?: "standalone" | "inline"is a client-only presentation hint (it never reaches the model). Defaults to"inline".humantools are always"standalone"and cannot opt out (the type only allows"standalone"). MCP-app tool calls and the built-in generative-UI tool are standalone too. Every other tool defaults to inline and opts in explicitly.groupPartByTypegains a synthetic"standalone-tool-call"key that matches all of the above.MessagePrimitive.GroupedPartspasses the live tool-UI registry to thegroupByfunction as a secondcontextargument ({ toolUIs }), and the helper reads it to resolve the registry-driven cases; MCP-app calls are detected from the part alone.- The
"mcp-app"key ongroupPartByTypeis deprecated in favor of"standalone-tool-call"(a superset). It still works for back-compat.
The shadcn
thread.tsxtemplate is updated to use"standalone-tool-call": []in place of"mcp-app": []. -
#4133
c4d3eea- forward per-toolproviderOptionsfromuseAssistantToolthroughtoToolsJSONSchemaandfrontendToolsinto the AI SDK request body, and emit tool entries in alphabetical order so identical tool sets produce byte-identical request bodies for stable prompt caching.react-ag-uiinherits the sort viatoAgUiTools, so identical tool sets reach the AG-UI runtime in a stable order regardless of mount order. (@okisdev)this lets you opt into provider-specific tool features (e.g. Anthropic's
defer_loading, Anthropic Tool Search Tool) without any provider-aware code in assistant-ui:useAssistantTool({ toolName: "get_weather", parameters: schema, providerOptions: { anthropic: { deferLoading: true } }, execute: async ({ city }) => fetchWeather(city), });the value is passed through verbatim; the AI SDK provider (
@ai-sdk/anthropic,@ai-sdk/openai, ...) interprets it.
0.3.17#
Patch Changes#
-
#4116
d4f1db4- fix: preserve parentId on streamed text and reasoning parts (@ShobhitPatra)AssistantStreamControllerdroppedparentIdfor text/reasoning parts written through awithParentId(...)controller:addTextPart/addReasoningPartnever attached it, andappendText/appendReasoningreused the open append part across aparentIdchange. This silently merged parts and broke theAuiTextDelta/AuiReasoningDeltadata-stream round trip (including the decoder's ownwithParentId(...).appendText(...)path).
0.3.16#
Patch Changes#
-
#4096
13a12c4- docs(assistant-stream): fix README usage example and clarify wire-format pairing (@okisdev)the README Usage snippet was calling
controller.appendText()with no arguments and treating the return value as a writer, butAssistantStreamController.appendTexthas signature(textDelta: string): void. copy-pasting the old snippet threwTypeError: Cannot read properties of undefined (reading 'append')at the firsttext.append(...)call. switched the example to the actual API.also added a short note that
createAssistantStreamResponsereturns a standard WebResponse(drops into Next.js / Hono / Bun / Deno / Cloudflare Workers; Express and Fastify need a small adapter), and that the emitted bytes are the data stream wire format. on the frontend pair it withuseDataStreamRuntime({ api, protocol: "data-stream" }); the defaultprotocol: "ui-message-stream"expects AI SDK v6's SSE-based UI message stream format and will throwStream ended abruptly without receiving [DONE] markeragainst this output.
0.3.15#
Patch Changes#
- #4023
94548fa- docs: add JSDoc for assistant stream tool definitions (@AVGVSTVS96)
0.3.14#
Patch Changes#
-
#3979
9ecda1d- feat(assistant-stream): add resumable stream primitives (@okisdev)new
assistant-stream/resumableentrypoint for persisting an in-flightAssistantStreamand replaying it after a disconnect or reload.createResumableStreamContext({ store, ttlMs?, waitUntil?, onAcquire?, onAppend?, onFinalize?, onError? })returns{ run, resume, requireResume, status, delete }.createResumableAssistantStreamResponseandcreateResumeAssistantStreamResponsebridgeAssistantStreamControllercallbacks to anyAssistantStreamEncoder.createInMemoryResumableStreamStorecovers dev and tests; Redis adapters live atassistant-stream/resumable/redisandassistant-stream/resumable/ioredis(peer deps), with pipelined appends and binary chunk values.typed errors via
ResumableStreamErrorwith codes"missing" | "exists" | "finalized" | "invalid-id". -
#4008
fa4510a- feat: support multi-modal tool results viatoModelOutput(@okisdev)frontend tools can now project their execution output into multi-modal model content (text + image / pdf / arbitrary file parts), aligning with the AI SDK v6
toModelOutputcallback. previously, tool results were always serialized as a single JSON value, so a "read pdf" style tool had no way to send the PDF back to a multi-modal model.assistant-streamexports a newToolModelContentParttype ({ type: "text", text } | { type: "file", data, mediaType, filename? }) and aToolModelOutputFunction<TArgs, TResult>callback type.Tool.toModelOutputis wired throughunstable_runPendingToolsandToolExecutionStream, attaching the resultingmodelContentto thetool-callpart on the assistant message.@assistant-ui/corere-exportsToolModelContentPartand adds an optionalmodelContent?: readonly ToolModelContentPart[]field onToolCallMessagePart. existing tools and renderers are unchanged.@assistant-ui/react-ai-sdk'sfrontendTools(...)helper now also registers atoModelOutputon each forwarded tool. it transparently unwraps an envelope thatuseAISDKRuntimewrites when a frontend-executed tool producedmodelContent, turning it into AI SDK's{ type: "content", value: [...] }output. plain (non-envelope) outputs fall back to the existing{ type: "text" | "json", value }shape, so behavior for tools withouttoModelOutputis unchanged.
route handlers that adopt
toModelOutputalso need to passtoolstoconvertToModelMessages(this is the AI SDK's documented pattern):const aiSDKTools = { ...frontendTools(tools ?? {}) }; streamText({ messages: await convertToModelMessages(messages, { tools: aiSDKTools }), tools: aiSDKTools, });templates and existing examples are unchanged. they keep the simpler
convertToModelMessages(messages)form because none of the tools they ship with usetoModelOutput. the new tools guide page documents how to opt in.reserved key. when a frontend tool defines
toModelOutput, its result is persisted in the AI SDK chat as{ __aui_modelContent: ToolModelContentPart[], value: <your result> }. tools must not return objects whose top-level key is literally__aui_modelContent, orconvertMessagewill misread the result. the prefix is namespaced for this reason.read/write compatibility for persisted threads. the envelope is recognized by
@assistant-ui/react-ai-sdkfrom this version onward. if you persist UI messages and read them from multiple environments, upgrade every reader before any writer starts producingtoModelOutput; otherwise older readers will treat the envelope object as theresultand break the affected toolrenderfunctions.
0.3.13#
Patch Changes#
0.3.12#
Patch Changes#
0.3.11#
Patch Changes#
- c988db8: chore: update dependencies
0.3.10#
Patch Changes#
- 2c5cd97: fix(assistant-stream): handle CRLF line endings in LineDecoderStream
0.3.9#
Patch Changes#
-
dffb6b4: feat: add data part type to streaming pipeline
Add DataPart as a new streamable content part type, enabling AI to send structured named data that renders via makeAssistantDataUI. Includes appendData() controller method and DataStream serialization support.
-
9103282: fix: resolve biome lint warnings (optional chaining, unused suppressions)
-
bdce66f: chore: update dependencies
-
209ae81: chore: remove aui-source export condition from package.json exports
0.3.8#
Patch Changes#
- 3227e71: feat: add
toPartialJSONSchemautility for making JSON Schema properties optional - 52403c3: chore: update dependencies
0.3.7#
Patch Changes#
- 736344c: chore: update dependencies
0.3.6#
Patch Changes#
- 427ffaa: refactor: drop all barrel files
- 349f3c7: chore: update deps
- 02614aa: feat: add multi-agent support
ReadonlyThreadProviderandMessagePartPrimitive.Messagesfor rendering sub-agent messagesassistant-stream: addmessagesfield totool-resultchunks,ToolResponseLike, andToolCallParttypes, enabling sub-agent messages to flow through the streaming protocol
0.3.5#
Patch Changes#
- 2828b67: fix(assistant-stream): throw a clear error when a Standard Schema (e.g. Zod v3) cannot be converted to JSON Schema, instead of silently passing through invalid data. Also add support for
~standard.jsonSchema.input()conversion path.
0.3.4#
Patch Changes#
- 36ef3a2: chore: update dependencies
0.3.3#
Patch Changes#
- 61b54e9: Add message timing metadata:
AssistantMessageTimingtype, automatic timing tracking inAssistantMessageAccumulator,MessageTimingtype,useMessageTiming()hook, and client-side streaming timing for AI SDK runtime. - 93910bd: Rename .tsx files to .ts where no JSX syntax is used
0.3.2#
Patch Changes#
- a088518: chore: update dependencies
0.3.1#
Patch Changes#
- d45b893: chore: update dependencies
0.3.0#
Minor Changes#
- acbaf07: feat: add framework-agnostic
toToolsJSONSchemaandtoGenericMessagesutilities toassistant-stream
0.2.48#
Patch Changes#
- 605d825: chore: update dependencies
0.2.47#
Patch Changes#
- 3719567: chore: update deps
0.2.46#
Patch Changes#
- 57bd207: chore: update dependencies
- cce009d: chore: use tsc for building packages
0.2.45#
Patch Changes#
- e8ea57b: chore: update deps
0.2.44#
Patch Changes#
- 89aec17: feat: AI SDK frontend tool execution cancellation support
fix: AI SDK isRunning status when running frontend tools
0.2.43#
Patch Changes#
- 01c31fe: chore: update dependencies
0.2.42#
Patch Changes#
- ec662cd: chore: update dependencies
0.2.41#
Patch Changes#
- 2c33091: chore: update deps
0.2.40#
Patch Changes#
- ef58020: feat(assistant-stream): parallel tool calling
0.2.39#
Patch Changes#
- 2fc7e99: chore: update deps
0.2.38#
Patch Changes#
- 2fc5c3d: feat: AssistantTransport wire format
0.2.37#
Patch Changes#
- 953db24: chore: update deps
0.2.36#
Patch Changes#
- chore: update deps
0.2.35#
Patch Changes#
- 7c5943b: fix: detect duplicate tool calls in data stream
0.2.34#
Patch Changes#
- e6a46e4: chore: update deps
0.2.33#
Patch Changes#
- 3caad00: refactor: rename interrupt -> human for tool input handling
0.2.32#
Patch Changes#
- e81784b: feat: Tool Call interrupt() resume() API
0.2.31#
Patch Changes#
- c0f5003: fix(stream): always use async to flush controller appends
0.2.30#
Patch Changes#
- 8812f86: chore: update deps
0.2.29#
Patch Changes#
- d19ebab: feat(assistant-transport): surface stream errors to caller
0.2.28#
Patch Changes#
- feat: throttle only on stream resume
0.2.27#
Patch Changes#
- fix: make accumulator throttling smoother
0.2.26#
Patch Changes#
- 0f21c70: feat: throttle AssistantMessageAccumulator emits
0.2.25#
Patch Changes#
- 2e7a10f: feat: createInitialMessage unstable_state support
feat: export AssistantMetaTransformStream
0.2.24#
Patch Changes#
- cf26771: feat: export AssistantTransformStream API
0.2.23#
Patch Changes#
- 12e0a77: chore: update deps
0.2.22#
Patch Changes#
- 0f063e0: chore: update dependencies
0.2.21#
Patch Changes#
- fix: race condition in RunController when using parentIds
0.2.20#
Patch Changes#
- f23fdb6: feat: add parent ID grouping for message parts
0.2.19#
Patch Changes#
- 20a4649: fix: preserve message error statuses, avoid being overwritten by finish chunks
- 9793e64: fix: if tool calls have no argsText, assume empty object instead of crashing
0.2.18#
Patch Changes#
- 65b3ff1: chore: update deps
0.2.17#
Patch Changes#
- 644abb8: chore: update deps
0.2.16#
Patch Changes#
- de00319: fix: add assistant-stream/utils subpath import workaround
0.2.15#
Patch Changes#
- 51b8493: feat: add missing exports
0.2.14#
Patch Changes#
- 52e18bc: feat: ToolResponseLike
0.2.13#
Patch Changes#
- fix: Last is not a partial call attempt 3
0.2.12#
Patch Changes#
- fix: add another workaround for Last is not a partial call
0.2.11#
Patch Changes#
- fix: Last is not a partial call error
0.2.10#
Patch Changes#
- chore: update deps
0.2.9#
Patch Changes#
- fix: PlainTextEncoder should ignore part-start/finish
0.2.8#
Patch Changes#
- fix: close argsTextController when setResponse is called
0.2.7#
Patch Changes#
- 5cb9598: feat(assistant-stream): ObjectStream
0.2.6#
Patch Changes#
- 0809c9f: feat: add missing exports from 'assistant-stream'
0.2.5#
Patch Changes#
- c4c60cf: fix: server-side tool results should be forwarded to StreamCallController
- 73a6ff1: feat: Tool.type
0.2.4#
Patch Changes#
- 98a680e: chore: update deps
0.2.3#
Patch Changes#
- 30ae924: fix: disabled tools should still execute if invoked
0.2.2#
Patch Changes#
- fix: ESM without bundler compat
0.2.1#
Patch Changes#
- fix: correctly include Typescript declarations
0.2.0#
Patch Changes#
- 557c3f7: build: drop CJS builds
0.1.8#
Patch Changes#
- fix: types in ESM
0.1.7#
Patch Changes#
- 51104f0: feat: ship declarationMaps
0.1.6#
Patch Changes#
- feat: export AssistantStreamController
0.1.5#
Patch Changes#
- 2e4a7c1: fix: correctly forward tool result from data stream
0.1.4#
Patch Changes#
- 62c2af7: feat: tool.streamCall API
- b9c731a: chore: update dependencies
0.1.3#
Patch Changes#
- c0c9422: feat: useToolArgsFieldStatus
0.1.2#
Patch Changes#
- chore: update deps
0.1.1#
Patch Changes#
- fix: throw error when LineDecoderStream ends with incomplete line instead of emitting it
0.1.0#
Patch Changes#
- 1f65c94: fix: ToolResponse instanceof check via named symbol
- 8df35f6: feat: fix duplicate tool calls appearing from ai-sdk
- 476cbfb: fix: make text-delta support reasoning part type
0.0.32#
Patch Changes#
- 545a17c: fix: do not crash on tool call with empty argsText
0.0.31#
Patch Changes#
- 93c3eb4: fix: drop ToolResponseBrand
0.0.30#
Patch Changes#
- a22bc7a: refactor: merge setResult and setArtifact to setResponse
- 39aecd7: chore: update dependencies
0.0.29#
Patch Changes#
- feat: expose assitant-stream ToolResponse API
0.0.28#
Patch Changes#
- 40579cd: feat: ToolResponse support
0.0.27#
Patch Changes#
- fix: assistant-stream appendText must only append to the very last part
0.0.26#
Patch Changes#
- c4d7b29: feat: tool call artifacts
0.0.25#
Patch Changes#
- fix: frontend tool call enqueue bug
0.0.24#
Patch Changes#
- chore: bump assistant-stream
0.0.23#
Patch Changes#
- 439ae67: fix: properly emit tool-call args-text finish
0.0.22#
Patch Changes#
- b07603d: feat: assistant-stream rewrite
0.0.21#
Patch Changes#
- fix: pin nanoid version for CJS compat
0.0.20#
Patch Changes#
- 7f7ab5e: refactor: assitant-stream API
0.0.19#
Patch Changes#
- 72e66db: chore: update dependencies
0.0.18#
Patch Changes#
- b44a7ad: feat: error message part
- 22272e6: chore: update dependencies
0.0.17#
Patch Changes#
- 70ccbe6: feat: AssistantMessageStream
0.0.16#
Patch Changes#
- 345f3d5: chore: update dependencies
0.0.15#
Patch Changes#
- 4c2bf58: chore: update dependencies
0.0.14#
Patch Changes#
- 982a6a2: chore: update dependencies
0.0.13#
Patch Changes#
- ec3b8cc: chore: update dependencies
0.0.12#
Patch Changes#
- ignore unsupported data stream parts
0.0.11#
Patch Changes#
- 4c54273: chore: update dependencies
0.0.10#
Patch Changes#
- interop with module resolution node
0.0.8#
Patch Changes#
- 2112ce8: chore: update dependencies
0.0.7#
Patch Changes#
- 933b8c0: chore: update deps
0.0.6#
Patch Changes#
- c59d8b5: chore: update dependencies
0.0.5#
Patch Changes#
- 1ada091: chore: update deps
0.0.4#
Patch Changes#
- ff5b86c: chore: update deps
0.0.3#
Patch Changes#
- d2375cd: build: disable bundling in UI package releases
0.0.1#
Patch Changes#
- fb32e61: chore: update deps
0.0.0#
Patch Changes#
- fb46305: chore: update dependencies