30 lines
1.8 KiB
TypeScript

import type { AgentRunSnapshot, AgentRunView } from "./protocol";
/** Public task activity only. Native engine diagnostics stay in server snapshots. */
export function canvasAgentProgressLabel(message: string): string {
if (/zcode|沙箱|sandbox|bwrap|seatbelt|systemd|\/var\/|\/opt\//i.test(message)) {
if (/规划|执行画布|running/i.test(message)) return "正在分析需求并安排处理步骤";
if (/失败|error|failed|unavailable|denied|拒绝|不足/i.test(message)) return "任务暂时无法继续,已保留完成的结果";
return "正在准备处理任务";
}
return message;
}
const oldTitles: Record<string, string> = {
planCanvasTask: "安排处理步骤", readCanvas: "查看画布", analyzeCanvasImages: "分析图片",
generateCanvasImages: "生成图片", editTargetImage: "编辑图片", readProjectService: "读取所需资料",
getWeather: "查询天气", createDocument: "创建文档", updateDocument: "更新文档", requestSuggestions: "整理修改建议",
runProjectService: "处理创作内容", listProjectServices: "查找所需功能", loadProjectSkill: "读取技能要求",
};
export function canvasAgentActivities(snapshot: AgentRunSnapshot) {
return snapshot.calls.slice(-12).map(call => ({
id: call.id,
title: canvasAgentProgressLabel((call.title && call.title !== call.name ? call.title : oldTitles[call.name]) || "处理任务"),
status: call.status,
}));
}
export type CanvasAgentProgress = Pick<AgentRunView, "id" | "status" | "message" | "toolCount" | "activities">;
export function canvasAgentProgress(run: AgentRunView): CanvasAgentProgress {
return { id: run.id, status: run.status, message: canvasAgentProgressLabel(run.message),
toolCount: run.toolCount, activities: run.activities || [] };
}