46 lines
1.6 KiB
TypeScript
46 lines
1.6 KiB
TypeScript
export type CanvasAgentOperationErrorCode =
|
|
| "STALE_CANVAS_REVISION"
|
|
| "CANVAS_AGENT_CONFIRMATION_REQUIRED"
|
|
| "CANVAS_AGENT_CONFLICT"
|
|
| "CANVAS_AGENT_WRITEBACK_DISABLED"
|
|
| "CANVAS_AGENT_WRITEBACK_FAILED";
|
|
|
|
const CANVAS_AGENT_OPERATION_ERROR_CODES = new Set<string>([
|
|
"STALE_CANVAS_REVISION",
|
|
"CANVAS_AGENT_CONFIRMATION_REQUIRED",
|
|
"CANVAS_AGENT_CONFLICT",
|
|
"CANVAS_AGENT_WRITEBACK_DISABLED",
|
|
"CANVAS_AGENT_WRITEBACK_FAILED",
|
|
]);
|
|
|
|
export function normalizeCanvasAgentOperationErrorCode(
|
|
value: unknown
|
|
): CanvasAgentOperationErrorCode {
|
|
const code = String(value || "").trim();
|
|
return CANVAS_AGENT_OPERATION_ERROR_CODES.has(code)
|
|
? (code as CanvasAgentOperationErrorCode)
|
|
: "CANVAS_AGENT_WRITEBACK_FAILED";
|
|
}
|
|
|
|
export function getCanvasAgentOperationErrorMessage(params: {
|
|
code?: unknown;
|
|
fallbackMessage?: string;
|
|
}) {
|
|
const code = normalizeCanvasAgentOperationErrorCode(params.code);
|
|
if (code === "STALE_CANVAS_REVISION") {
|
|
return "画布已更新,生成结果已保留在对话中。请刷新画布后重新确认写回。";
|
|
}
|
|
if (code === "CANVAS_AGENT_CONFIRMATION_REQUIRED") {
|
|
return "这个画布操作需要确认后再执行,生成结果已保留在对话中。";
|
|
}
|
|
if (code === "CANVAS_AGENT_CONFLICT") {
|
|
return "画布目标状态有冲突,生成结果已保留在对话中。请检查槽位或刷新后重试。";
|
|
}
|
|
if (code === "CANVAS_AGENT_WRITEBACK_DISABLED") {
|
|
return "当前画布 Agent 写回处于灰度保护,未修改画布。";
|
|
}
|
|
|
|
const fallback = String(params.fallbackMessage || "").trim();
|
|
return fallback || "画布写回失败,生成结果已保留在对话中。";
|
|
}
|