From 322accb9b27f91d70748314e538827162cc28285 Mon Sep 17 00:00:00 2001 From: npmrun <1549469775@qq.com> Date: Sun, 9 Aug 2026 13:22:21 +0800 Subject: [PATCH] fix: buildModelMessages approval-responded without result should not emit tool-call When a tool-call is in 'approval-responded' state with approved=true but hasResult=false (approval executed but result not yet available in approvalToolResults), the code was pushing a tool-call part to the assistant message without a corresponding tool-result in the tool message. This caused providers (e.g. deepseek) to reject the prompt with 'Tool result is missing for tool call' or 'Invalid prompt: The messages do not match the ModelMessage[] schema'. Fix: only push tool-approval-request (not tool-call) when hasResult=false. Also clean up approval-requested branch to only include required fields (type, approvalId, toolCallId) per AI SDK schema. Co-authored-by: CodeFree --- packages/drizzle-pkg/db.sqlite | Bin 659456 -> 708608 bytes server/service/agent/chat-engine.ts | 18 ++++-------------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/packages/drizzle-pkg/db.sqlite b/packages/drizzle-pkg/db.sqlite index d4c4e2e5725a7f156da9d9c15ff05ebf316d80f3..d56f67a8690c3bffe2d9ffd92fde8f1f2bd1cba6 100644 GIT binary patch delta 44177 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 delta 730 zcmY*XT}TvB6ux(6c4qIgd(Vuk(6*-Qn(3M)QqmSy_EZnT3KbaPAG)}ax=XtuLW0{% zPf9h(^kbyZhD2mC;6Mct^pr({5L+*1Nn&IhA!_#0nSAQuyIj6=zVAEdatFtD4~|t_ z-7b?QLdf{Fz!8BgO|{*xb_=kE3>k+%ux6<$`wHgT(T6|QkEqR-%aBC=oRnF_d~5 zv})>U1K^ASVCh59K99vMoT?f>L5I3$r#O`n=PDdu@r z4JAQ$(f1fL;VCNgDujgyb)@3)?$)l0(PXlU}1_~5SJ9xfVVj=p!q4!E=m?8v(h>#Etgp5!SPAfCa zS~Z!*H<5_1JY7br9S(By`mLU5Py9mv z=|pFHD%u%1buQH%HSX?Y4Li;TQ_*B9SQSjf+LO_J!Dd`+G4#VeD}Bby3w96#HVAA$ z4g#N0+cXGB3l+t byfNF%gC9lY#f1OjL%bNb)3{a4T?_OtsN>(y diff --git a/server/service/agent/chat-engine.ts b/server/service/agent/chat-engine.ts index e750631..b67c1d7 100644 --- a/server/service/agent/chat-engine.ts +++ b/server/service/agent/chat-engine.ts @@ -90,8 +90,6 @@ function buildModelMessages( type: "tool-approval-request", approvalId: p.approvalId, toolCallId: p.toolCallId, - toolName: p.toolName, - input: p.args ?? {}, }); } else if (p.state === "approval-responded" && p.approvalId) { const hasResult = opts.approvalToolResults?.[p.toolCallId] !== undefined; @@ -104,17 +102,9 @@ function buildModelMessages( }); } else { assistantContent.push({ - type: "tool-call", - toolCallId: p.toolCallId, - toolName: p.toolName, - input: p.args ?? {}, - }); - assistantContent.push({ type: "tool-approval-request", approvalId: p.approvalId, toolCallId: p.toolCallId, - toolName: p.toolName, - input: p.args ?? {}, }); } } else { @@ -440,10 +430,10 @@ export async function executeChat(params: ChatEngineParams): Promise { - const errMsg = errorData?.error instanceof Error - ? errorData.error.message - : String(errorData?.error ?? "未知错误"); - logger.error("[%s] [CHAT-ENGINE] streamText error: %s", requestId, errMsg); + const err = errorData?.error; + const errMsg = err instanceof Error ? err.message : String(err ?? "未知错误"); + const errCause = err instanceof Error ? JSON.stringify(err.cause ?? null, null, 2) : ""; + logger.error("[%s] [CHAT-ENGINE] streamText error: %s\ncause: %s", requestId, errMsg, errCause); }, onChunk: ({ chunk }) => { if (chunk.type === "text-delta") {