优化渲染节点功能,使用 ref 文件渲染大量节点
Build Push and Deploy / docker-image (push) Successful in 7s
Build Push and Deploy / deploy-fallback-log (push) Has been skipped

This commit is contained in:
2026-05-18 16:15:38 +08:00
parent 39ee9a02e5
commit e4424b87d1
5 changed files with 140 additions and 76 deletions
@@ -136,26 +136,6 @@ const resolveTimeRange = (params: Record<string, unknown>) => ({
(params.end as string | undefined),
});
const resolveStringRecord = (value: unknown): Record<string, string> => {
if (!value || typeof value !== "object" || Array.isArray(value)) {
return {};
}
return Object.fromEntries(
Object.entries(value as Record<string, unknown>)
.map(([key, recordValue]) => [String(key), String(recordValue ?? "")])
.filter(([, recordValue]) => recordValue.trim().length > 0),
);
};
const resolveStringArray = (value: unknown): string[] => {
if (!Array.isArray(value)) {
return [];
}
return value.map((item) => String(item).trim()).filter(Boolean);
};
const compactNames = (names: string[]) => {
if (!names.length) return "";
return names.length > 3
@@ -251,20 +231,20 @@ const buildToolAction = (
}
if (tool === "render_junctions") {
const nodeAreaMap = resolveStringRecord(params.node_area_map);
const areaIds = resolveStringArray(params.area_ids);
const areaColors = resolveStringRecord(params.area_colors);
const renderRef =
typeof params.render_ref === "string" ? params.render_ref.trim() : "";
return {
action: {
type: "render_junctions",
nodeAreaMap,
areaIds,
areaColors,
},
action: renderRef
? {
type: "render_junctions",
renderRef,
sessionId: undefined,
}
: null,
kind: "map",
title: "渲染节点分区",
description: `${Object.keys(nodeAreaMap).length} 个节点`,
description: renderRef || "渲染引用",
};
}
@@ -286,6 +266,11 @@ export const useAgentToolActions = () => {
event.params,
);
const normalizedAction =
action?.type === "render_junctions"
? { ...action, sessionId: event.sessionId }
: action;
options.appendArtifact(options.assistantMessageId, {
id: `${event.tool}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
tool: event.tool,
@@ -295,8 +280,8 @@ export const useAgentToolActions = () => {
params: event.params,
});
if (action) {
dispatchToolAction(action);
if (normalizedAction) {
dispatchToolAction(normalizedAction);
}
},
[dispatchToolAction],