定义于: activities/chat/stream/processor.ts:120
StreamProcessor - 用于处理 AI 响应流的状态机
管理完整的 UIMessage[] 对话,并在更改时发出事件。信任适配器契约:适配器发出干净的 AG-UI 事件,顺序正确。
状态跟踪
new StreamProcessor(options): StreamProcessor;
定义于: activities/chat/stream/processor.ts:147
StreamProcessor
addToolApprovalResponse(approvalId, approved): void;
定义于: activities/chat/stream/processor.ts:329
添加一个审批响应(由客户端在处理 onApprovalRequest 后调用)
string
boolean
void
addToolResult(
toolCallId,
output,
error?): void;
定义于: activities/chat/stream/processor.ts:285
添加一个工具结果(由客户端在处理 onToolCall 后调用)
string
any
string
void
addUserMessage(content, id?): UIMessage;
定义于: activities/chat/stream/processor.ts:194
将用户消息添加到对话中。支持简单的字符串内容和多模态内容数组。
消息内容(字符串或内容部分数组)
string | ContentPart[]
string
可选的自定义消息 ID(如果未提供则生成)
创建的 UIMessage
// Simple text message
processor.addUserMessage('Hello!')
// Multimodal message with image
processor.addUserMessage([
{ type: 'text', content: 'What is in this image?' },
{ type: 'image', source: { type: 'url', value: 'https://example.com/photo.jpg' } }
])
// With custom ID
processor.addUserMessage('Hello!', 'custom-id-123')
areAllToolsComplete(): boolean;
定义于: activities/chat/stream/processor.ts:360
检查上次助手消息中的所有工具调用是否完成。用于自动继续逻辑
boolean
clearMessages(): void;
定义于: activities/chat/stream/processor.ts:404
清除所有消息
void
finalizeStream(): void;
定义于: activities/chat/stream/processor.ts:954
完成流 — 完成所有待处理的操作。
在异步迭代器结束时调用(流关闭)。作为最后的安全网:完成所有剩余的工具调用,刷新未发出的文本,并触发 onStreamEnd。
void
docs/chat-architecture.md#single-shot-text-response — 完成步骤
getCurrentAssistantMessageId(): string | null;
定义于: activities/chat/stream/processor.ts:246
获取当前助手消息 ID(如果已创建)。如果 prepareAssistantMessage() 被调用但没有收到任何内容,则返回 null。
string | null
getMessages(): UIMessage[];
定义于: activities/chat/stream/processor.ts:352
获取当前消息
getRecording(): ChunkRecording | null;
定义于: activities/chat/stream/processor.ts:1051
获取当前的录制
ChunkRecording | null
getState(): ProcessorState;
定义于: activities/chat/stream/processor.ts:1024
获取当前处理器状态
prepareAssistantMessage(): void;
定义于: activities/chat/stream/processor.ts:224
为新的助手消息流做准备。不会立即创建消息 — 消息在收到第一个包含内容的块时延迟创建。这可以防止在自动继续生成没有内容时,助手消息在 UI 中闪烁。
void
process(stream): Promise<ProcessorResult>;
定义于: activities/chat/stream/processor.ts:417
处理流并调用处理程序发出事件
AsyncIterable<any>
Promise<ProcessorResult>
processChunk(chunk): void;
定义于: activities/chat/stream/processor.ts:451
处理流中的单个块。
中央调度所有 AG-UI 事件。每种事件类型映射到特定的处理程序。列表中未包含的事件会被故意忽略(RUN_STARTED、TEXT_MESSAGE_END、STEP_STARTED、STATE_SNAPSHOT、STATE_DELTA)。
void
docs/chat-architecture.md#adapter-contract — 预期的事件类型和顺序
removeMessagesAfter(index): void;
定义于: activities/chat/stream/processor.ts:396
删除某个索引后的消息(用于重新加载/重试)
number
void
reset(): void;
定义于: activities/chat/stream/processor.ts:1074
完全重置(包括消息)
void
setMessages(messages): void;
定义于: activities/chat/stream/processor.ts:166
设置消息数组(例如,从持久化状态)
void
startAssistantMessage(): string;
定义于: activities/chat/stream/processor.ts:236
string
使用 prepareAssistantMessage() 代替。这将立即创建一个助手消息,可能导致空消息在 UI 中闪烁。
startRecording(): void;
定义于: activities/chat/stream/processor.ts:1038
开始录制块
void
toModelMessages(): ModelMessage<
| string
| ContentPart<unknown, unknown, unknown, unknown, unknown>[]
| null>[];
定义于: activities/chat/stream/processor.ts:341
将对话作为 ModelMessages 获取(用于发送到 LLM)
ModelMessage< | string | ContentPart<unknown, unknown, unknown, unknown, unknown>[] | null>[]
static replay(recording, options?): Promise<ProcessorResult>;
定义于: activities/chat/stream/processor.ts:1094
通过处理器重放录制
Promise<ProcessorResult>