airi/patches/@xsai__stream-text@0.5.0-beta.2.patch
Lulu 286cc33d0e
feat(stage-ui): let AIRI see tool failures in LLM context (captureToolErrors + xsai patches) (#1602)
---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Cursor
Co-authored-by-agent: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-04-08 01:29:17 +08:00

55 lines
2.5 KiB
Diff

diff --git a/dist/index.d.ts b/dist/index.d.ts
index e184d851f8f0dec7456bab129ed90eaad8944125..e363d3d15261fa57831cf4d6fee384644bd45d00 100644
--- a/dist/index.d.ts
+++ b/dist/index.d.ts
@@ -1,8 +1,10 @@
import { WithUnknown } from '@xsai/shared';
-import { CompletionToolCall, CompletionToolResult, FinishReason, Usage, ChatOptions, CompletionStep, PrepareStep, StopCondition, Message } from '@xsai/shared-chat';
+import { CompletionToolCall, CompletionToolResult, FinishReason, OnToolCallFinishCallback, OnToolCallStartCallback, RepairToolCallFunction, Usage, ChatOptions, CompletionStep, PrepareStep, StopCondition, Message } from '@xsai/shared-chat';
type StreamTextEvent = (CompletionToolCall & {
type: 'tool-call';
+}) | (CompletionToolResult & {
+ type: 'tool-error';
}) | (CompletionToolResult & {
type: 'tool-result';
}) | {
@@ -33,7 +35,11 @@ interface StreamTextOptions extends ChatOptions {
onEvent?: (event: StreamTextEvent) => Promise<unknown> | unknown;
onFinish?: (step?: CompletionStep) => Promise<unknown> | unknown;
onStepFinish?: (step: CompletionStep) => Promise<unknown> | unknown;
+ captureToolErrors?: boolean;
+ onToolCallFinish?: OnToolCallFinishCallback;
+ onToolCallStart?: OnToolCallStartCallback;
prepareStep?: PrepareStep;
+ repairToolCall?: RepairToolCallFunction;
/** @default `stepCountAtLeast(1)` */
stopWhen?: StopCondition;
/**
diff --git a/dist/index.js b/dist/index.js
index 6353da4d45ad65340104530d83b5337bba8d9d77..34e6e4fda7f390be6334fe3eadcbc5199957e998 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -139,6 +139,10 @@ const streamText = (options) => {
validToolCalls.map(async (toolCall) => executeTool({
abortSignal: options.abortSignal,
+ captureToolErrors: options.captureToolErrors,
messages,
+ onToolCallFinish: options.onToolCallFinish,
+ onToolCallStart: options.onToolCallStart,
+ repairToolCall: options.repairToolCall,
toolCall,
tools: options.tools
}))
@@ -148,7 +151,10 @@ const streamText = (options) => {
toolResults.push(completionToolResult);
messages.push(message);
pushEvent({ ...completionToolCall, type: "tool-call" });
- pushEvent({ ...completionToolResult, type: "tool-result" });
+ pushEvent({
+ ...completionToolResult,
+ type: completionToolResult.isError ? "tool-error" : "tool-result"
+ });
}
} else {
pushEvent({