264 lines
8.2 KiB
TypeScript
264 lines
8.2 KiB
TypeScript
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,
|
|
});
|
|
}
|