30 lines
1.8 KiB
TypeScript
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 || [] };
|
|
}
|