import type { DirectAgentToolCapability, DirectAgentToolName, } from "@/lib/ai/runtime/direct-agent-execution"; type DirectAgentProgressStage = | "planning" | "clarify" | "executing" | "completed" | "failed"; type DirectAgentProgressStep = | "lock_target" | "analyze" | "select_tool" | "execute" | "finalize"; export interface DirectAgentProgressPayload { stage: DirectAgentProgressStage; currentStep: DirectAgentProgressStep; title?: string; message?: string; toolName?: DirectAgentToolName; capability?: DirectAgentToolCapability; } function buildDirectAgentProgressPayload(params: DirectAgentProgressPayload) { return params; } export function buildDirectAgentImageContextProgress(params: { imageCount?: number; mode?: "generate" | "edit" | "video"; }) { const imageCount = Math.max(0, Math.floor(Number(params.imageCount || 0))); const hasMultipleImages = imageCount > 1; const hasImage = imageCount > 0; if (params.mode === "edit") { return buildDirectAgentProgressPayload({ stage: "planning", currentStep: "lock_target", title: hasMultipleImages ? "正在理解多张待编辑图片" : "正在理解待编辑图片", message: hasImage ? "我会先识别主体、风格、构图和需要保留的内容,再确认这次要改变的部分。" : "我会先根据你的文字需求确认编辑目标,再整理成适合模型执行的方向。", toolName: "editImage", capability: "generic_edit", }); } if (params.mode === "video") { return buildDirectAgentProgressPayload({ stage: "planning", currentStep: "lock_target", title: hasImage ? "正在理解视频参考图" : "正在规划视频画面", message: hasImage ? "我会先提取参考图的主体、镜头、风格和运动约束,再整理成视频生成方向。" : "我会先根据你的描述整理镜头主体、运动节奏和画面风格。", toolName: "generateVideo", capability: "generate_video", }); } return buildDirectAgentProgressPayload({ stage: "planning", currentStep: "lock_target", title: hasMultipleImages ? "正在理解多张参考图片" : hasImage ? "正在理解参考图片" : "正在规划画面方向", message: hasImage ? "我会先识别图片主体、风格、构图和关键约束,再提炼可执行的创作方向。" : "我会先根据你的描述整理画面主体、风格和关键约束。", toolName: "generateImage", capability: "generate_image", }); } export function buildDirectAgentAnalyzePlanningProgress() { return buildDirectAgentProgressPayload({ stage: "planning", currentStep: "analyze", title: "正在描述目标图片", message: "我会先识别主体、风格、构图、光线和材质,再整理成可直接阅读的观察结论。", toolName: "analyzeImage", capability: "analyze", }); } export function buildDirectAgentAnalyzeCompletedProgress() { return buildDirectAgentProgressPayload({ stage: "completed", currentStep: "finalize", title: "图片分析完成", message: "我已经把图片要点整理成清晰结论,方便继续修图、生图或做风格延展。", toolName: "analyzeImage", capability: "analyze", }); } export function buildDirectAgentAnalyzeFailedProgress(errorMessage: string) { return buildDirectAgentProgressPayload({ stage: "failed", currentStep: "analyze", title: "图片分析失败", message: errorMessage, toolName: "analyzeImage", capability: "analyze", }); } export function buildDirectAgentImageGenerateSelectProgress() { return buildDirectAgentProgressPayload({ stage: "planning", currentStep: "select_tool", title: "正在优化生图提示词", message: "我会把你的需求转成更适合当前模型的提示词,并保留主体、风格、构图和画面约束。", toolName: "generateImage", capability: "generate_image", }); } export function buildDirectAgentImageGenerateExecutingProgress() { return buildDirectAgentProgressPayload({ stage: "executing", currentStep: "execute", title: "正在提交生图模型", message: "已将优化后的提示词与参考图一起提交生成,完成后会回写到对话和画布。", toolName: "generateImage", capability: "generate_image", }); } export function buildDirectAgentImageGenerateCompletedProgress() { return buildDirectAgentProgressPayload({ stage: "completed", currentStep: "finalize", title: "图片生成完成", message: "结果已整理并回写到当前对话和画布。", toolName: "generateImage", capability: "generate_image", }); } export function buildDirectAgentImageGenerateFailedProgress(errorMessage: string) { return buildDirectAgentProgressPayload({ stage: "failed", currentStep: "execute", title: "图片生成失败", message: errorMessage, toolName: "generateImage", capability: "generate_image", }); } export function buildDirectAgentVideoGenerateSelectProgress() { return buildDirectAgentProgressPayload({ stage: "planning", currentStep: "select_tool", title: "正在优化视频提示词", message: "我会把你的描述整理成镜头、主体、运动和风格更明确的视频生成提示词。", toolName: "generateVideo", capability: "generate_video", }); } export function buildDirectAgentVideoGenerateExecutingProgress() { return buildDirectAgentProgressPayload({ stage: "executing", currentStep: "execute", title: "正在提交视频生成", message: "已将优化后的镜头提示词与参考图提交生成,完成后会回写到对话和画布。", toolName: "generateVideo", capability: "generate_video", }); } export function buildDirectAgentVideoGenerateCompletedProgress() { return buildDirectAgentProgressPayload({ stage: "completed", currentStep: "finalize", title: "视频生成完成", message: "结果已整理并回写到当前对话和画布。", toolName: "generateVideo", capability: "generate_video", }); } export function buildDirectAgentVideoGenerateFailedProgress(errorMessage: string) { return buildDirectAgentProgressPayload({ stage: "failed", currentStep: "execute", title: "视频生成失败", message: errorMessage, toolName: "generateVideo", capability: "generate_video", }); } export function buildDirectAgentImageEditSelectProgress(params: { toolName: DirectAgentToolName; capability: DirectAgentToolCapability; label: string; }) { return buildDirectAgentProgressPayload({ stage: "planning", currentStep: "select_tool", title: "正在优化修图提示词", message: `我会把你的编辑需求整理成更适合${params.label}执行的提示词,明确保留项和变化项。`, toolName: params.toolName, capability: params.capability, }); } export function buildDirectAgentImageEditExecutingProgress(params: { toolName: DirectAgentToolName; capability: DirectAgentToolCapability; label: string; }) { return buildDirectAgentProgressPayload({ stage: "executing", currentStep: "execute", title: `正在提交${params.label}`, message: "已将优化后的编辑提示词和目标图提交生成,完成后会回写到当前对话和画布。", toolName: params.toolName, capability: params.capability, }); } export function buildDirectAgentImageEditCompletedProgress(params: { toolName: DirectAgentToolName; capability: DirectAgentToolCapability; label: string; }) { return buildDirectAgentProgressPayload({ stage: "completed", currentStep: "finalize", title: `${params.label}完成`, message: "结果已整理并回写到当前对话和画布。", toolName: params.toolName, capability: params.capability, }); } export function buildDirectAgentImageEditFailedProgress(params: { toolName: DirectAgentToolName; capability: DirectAgentToolCapability; label: string; errorMessage: string; }) { return buildDirectAgentProgressPayload({ stage: "failed", currentStep: "execute", title: `${params.label}失败`, message: params.errorMessage, toolName: params.toolName, capability: params.capability, }); }