Fix stale agent mode fallback and error messaging
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled

This commit is contained in:
Your Name 2026-03-27 11:35:49 +08:00
parent 25b20e1730
commit 1f864294c9
2 changed files with 31 additions and 3 deletions

View File

@ -3506,6 +3506,19 @@ export function CanvasChatPanel({
activeComposerModeRef.current = activeComposerMode;
}, [activeComposerMode]);
useEffect(() => {
if (composerModeOverride !== "agent") return;
if (agentEnabled && hasSelectedAgentPreset) return;
activeComposerModeRef.current = computedComposerMode;
setComposerModeOverride(null);
}, [
agentEnabled,
composerModeOverride,
computedComposerMode,
hasSelectedAgentPreset,
]);
useEffect(() => {
if (!selectedModelId && siteSettings) {
const nextModelId = agentEnabled ? "auto" : firstImageModelId || firstVideoModelId || "";
@ -7637,6 +7650,12 @@ export function CanvasChatPanel({
textContent = `请基于当前工作流设定生成方案:${workflowContext.summaryText}`;
}
const effectiveComposerMode = activeComposerModeRef.current || activeComposerMode;
if (effectiveComposerMode === "agent" && !selectedAgentPresetId) {
toast.error("智能体模式缺少生图模式配置,请先选择智能体后再发送");
activeComposerModeRef.current = computedComposerMode;
setComposerModeOverride(null);
return;
}
if (!textContent && hasAgentUploadSlots && selectedAgentPreset) {
textContent = `请按「${selectedAgentPreset.name}」智能体配置顺序处理产品图1、产品图2和模特图。`;
@ -7791,6 +7810,7 @@ export function CanvasChatPanel({
ensureImagePointsBeforeSend,
getSendGuard,
clearStreamImageGenerationStateForChat,
computedComposerMode,
releaseSendGuard,
setSendGuard,
shouldBlockDuplicateSend,

View File

@ -19,8 +19,12 @@ export const fetcher = async (url: string) => {
const response = await fetch(url);
if (!response.ok) {
const { code, cause } = await response.json();
throw new ChatSDKError(code as ErrorCode, cause);
const { code, cause, message } = await response.json();
const error = new ChatSDKError(code as ErrorCode, cause);
if (typeof message === "string" && message.trim()) {
error.message = message;
}
throw error;
}
return response.json();
@ -48,7 +52,11 @@ export async function fetchWithErrorHandlers(
const cause = typeof payload?.cause === "string" ? payload.cause : undefined;
if (code) {
throw new ChatSDKError(code, cause);
const error = new ChatSDKError(code, cause);
if (typeof payload?.message === "string" && payload.message.trim()) {
error.message = payload.message;
}
throw error;
}
const fallbackMessage =