assistant-stream
Version:
Streaming utilities for AI assistants
136 lines • 4.83 kB
TypeScript
import type { ReadonlyJSONValue } from "../utils/json/json-value.js";
import type { PartProviderMetadata, ToolCallApproval } from "./utils/types.js";
import type { AssistantTransportStateOperation } from "./gorp/types.js";
import type { ToolModelContentPart } from "./tool/tool-types.js";
/**
* Initial metadata for a stream part.
*
* A part starts with `part-start`, receives zero or more chunks at the same
* path, and ends with `part-finish`.
*/
export type PartInit = {
readonly type: "text";
readonly providerMetadata?: PartProviderMetadata;
readonly parentId?: string;
} | {
readonly type: "reasoning";
/** @deprecated Experimental since 2026-08-07. Not scheduled for removal; the API may change in any release. */
readonly unstable_summary?: string;
readonly providerMetadata?: PartProviderMetadata;
readonly parentId?: string;
} | {
readonly type: "tool-call";
readonly toolCallId: string;
readonly toolName: string;
readonly parentId?: string;
} | {
readonly type: "source";
readonly sourceType: "url";
readonly id: string;
readonly url: string;
readonly title?: string;
readonly parentId?: string;
} | {
readonly type: "source";
readonly sourceType: "document";
readonly id: string;
readonly url?: undefined;
readonly title: string;
readonly mediaType: string;
readonly filename?: string;
readonly parentId?: string;
} | {
readonly type: "file";
readonly data: string;
readonly mimeType: string;
readonly parentId?: string;
} | {
readonly type: "data";
readonly name: string;
readonly data: ReadonlyJSONValue;
readonly parentId?: string;
};
/**
* Normalized assistant-ui streaming protocol chunk.
*
* `path` identifies the part or nested position the chunk belongs to. Encoders
* may translate these chunks into provider-specific wire formats, while
* accumulators consume them to build assistant messages.
*/
export type AssistantStreamChunk = {
readonly path: readonly number[];
} & ({
/** Opens a new content part at `path`. */
readonly type: "part-start";
readonly part: PartInit;
} | {
/** Closes the current part at `path`. */
readonly type: "part-finish";
readonly providerMetadata?: PartProviderMetadata;
} | {
/** Marks streamed tool-call argument text as complete. */
readonly type: "tool-call-args-text-finish";
} | {
/** Sets the approval gate of the tool-call part at `path`, replacing any earlier one. */
readonly type: "tool-call-approval";
readonly approval: ToolCallApproval;
} | {
/** Appends text to a text, reasoning, or tool-call argument part. */
readonly type: "text-delta";
readonly textDelta: string;
readonly providerMetadata?: PartProviderMetadata;
} | {
/** Appends provider or application annotations to the current message. */
readonly type: "annotations";
readonly annotations: ReadonlyJSONValue[];
} | {
/** Emits application data chunks associated with the current message. */
readonly type: "data";
readonly data: ReadonlyJSONValue[];
} | {
/** Starts a model generation step. */
readonly type: "step-start";
readonly messageId: string;
} | {
/** Finishes a model generation step and reports usage for that step. */
readonly type: "step-finish";
readonly finishReason: "stop" | "length" | "content-filter" | "tool-calls" | "error" | "other" | "unknown";
readonly usage: {
readonly inputTokens: number;
readonly outputTokens: number;
};
readonly isContinued: boolean;
} | {
/** Finishes the assistant message and reports final usage. */
readonly type: "message-finish";
readonly finishReason: "stop" | "length" | "content-filter" | "tool-calls" | "error" | "other" | "unknown";
readonly usage: {
readonly inputTokens: number;
readonly outputTokens: number;
};
} | {
/**
* Emits the result for a tool-call part.
*
* `artifact` is UI-visible metadata, while `modelContent` can override
* what is sent back to the model.
*/
readonly type: "result";
readonly artifact?: ReadonlyJSONValue;
readonly result: ReadonlyJSONValue;
readonly isError: boolean;
readonly isPreliminary?: boolean;
readonly modelContent?: readonly ToolModelContentPart[];
readonly messages?: ReadonlyJSONValue;
} | {
/** Emits a stream-level error message. */
readonly type: "error";
readonly error: string;
readonly code?: string;
readonly severity?: "critical" | "warning" | "info";
} | {
/** Applies gorp-stream operations to state carried by this stream. */
readonly type: "update-state";
readonly operations: AssistantTransportStateOperation[];
});
//# sourceMappingURL=AssistantStreamChunk.d.ts.map