mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-07 22:09:57 +00:00
fix(agents): ignore stale assistant error messages
This commit is contained in:
@@ -101,6 +101,18 @@ describe("buildEmbeddedRunPayloads", () => {
|
||||
expect(payloads[0]?.isError).toBe(true);
|
||||
});
|
||||
|
||||
it("does not emit a synthetic billing error for successful turns with stale errorMessage", () => {
|
||||
const payloads = buildPayloads({
|
||||
lastAssistant: makeAssistant({
|
||||
stopReason: "end_turn",
|
||||
errorMessage: "insufficient credits for embedding model",
|
||||
content: [{ type: "text", text: "Handle payment required errors in your API." }],
|
||||
}),
|
||||
});
|
||||
|
||||
expectSinglePayloadText(payloads, "Handle payment required errors in your API.");
|
||||
});
|
||||
|
||||
it("suppresses raw error JSON even when errorMessage is missing", () => {
|
||||
const payloads = buildPayloads({
|
||||
assistantTexts: [errorJsonPretty],
|
||||
|
||||
@@ -128,16 +128,17 @@ export function buildEmbeddedRunPayloads(params: {
|
||||
const useMarkdown = params.toolResultFormat === "markdown";
|
||||
const suppressAssistantArtifacts = params.didSendDeterministicApprovalPrompt === true;
|
||||
const lastAssistantErrored = params.lastAssistant?.stopReason === "error";
|
||||
const errorText = params.lastAssistant
|
||||
? suppressAssistantArtifacts
|
||||
? undefined
|
||||
: formatAssistantErrorText(params.lastAssistant, {
|
||||
const errorText =
|
||||
params.lastAssistant && lastAssistantErrored
|
||||
? suppressAssistantArtifacts
|
||||
? undefined
|
||||
: formatAssistantErrorText(params.lastAssistant, {
|
||||
cfg: params.config,
|
||||
sessionKey: params.sessionKey,
|
||||
provider: params.provider,
|
||||
model: params.model,
|
||||
})
|
||||
: undefined;
|
||||
: undefined;
|
||||
const rawErrorMessage = lastAssistantErrored
|
||||
? params.lastAssistant?.errorMessage?.trim() || undefined
|
||||
: undefined;
|
||||
|
||||
@@ -139,6 +139,7 @@ describe("extractAssistantText", () => {
|
||||
const msg = makeAssistantMessage({
|
||||
role: "assistant",
|
||||
errorMessage: "insufficient credits for embedding model",
|
||||
stopReason: "end_turn",
|
||||
content: [{ type: "text", text: responseText }],
|
||||
timestamp: Date.now(),
|
||||
});
|
||||
|
||||
@@ -199,6 +199,16 @@ describe("extractAssistantText", () => {
|
||||
"Firebase downgraded us to the free Spark plan. Check whether billing should be re-enabled.",
|
||||
);
|
||||
});
|
||||
|
||||
it("preserves successful turns with stale background errorMessage", () => {
|
||||
const message = {
|
||||
role: "assistant",
|
||||
stopReason: "end_turn",
|
||||
errorMessage: "insufficient credits for embedding model",
|
||||
content: [{ type: "text", text: "Handle payment required errors in your API." }],
|
||||
};
|
||||
expect(extractAssistantText(message)).toBe("Handle payment required errors in your API.");
|
||||
});
|
||||
});
|
||||
|
||||
describe("resolveAnnounceTarget", () => {
|
||||
|
||||
Reference in New Issue
Block a user