fix(editor): AI Agent shows logs from multiple runs in same view (#16825)

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
This commit is contained in:
Suguru Inoue
2025-06-30 15:02:38 +02:00
committed by GitHub
parent 624a720978
commit 913334005f
3 changed files with 109 additions and 43 deletions

View File

@@ -30,6 +30,14 @@ const selectedRun: Ref<IAiData[]> = ref([]);
const i18n = useI18n();
const aiData = computed<AIResult[]>(() =>
createAiData(props.node.name, props.workflow, workflowsStore.getWorkflowResultDataByNodeName),
);
const executionTree = computed<TreeNode[]>(() =>
getTreeNodeData(props.node.name, props.workflow, aiData.value, props.runIndex),
);
function isTreeNodeSelected(node: TreeNode) {
return selectedRun.value.some((run) => run.node === node.node && run.runIndex === node.runIndex);
}
@@ -79,14 +87,6 @@ function selectFirst() {
}
}
const aiData = computed<AIResult[]>(() =>
createAiData(props.node.name, props.workflow, workflowsStore.getWorkflowResultDataByNodeName),
);
const executionTree = computed<TreeNode[]>(() =>
getTreeNodeData(props.node.name, props.workflow, aiData.value),
);
watch(() => props.runIndex, selectFirst, { immediate: true });
</script>
@@ -103,7 +103,7 @@ watch(() => props.runIndex, selectFirst, { immediate: true });
data-test-id="lm-chat-logs-tree"
@node-click="onItemClick"
>
<template #default="{ node, data }">
<template #default="{ node: currentNode, data }">
<div
:class="{
[$style.treeNode]: true,
@@ -115,13 +115,13 @@ watch(() => props.runIndex, selectFirst, { immediate: true });
<button
v-if="data.children.length"
:class="$style.treeToggle"
@click="toggleTreeItem(node)"
@click="toggleTreeItem(currentNode)"
>
<font-awesome-icon :icon="node.expanded ? 'angle-down' : 'angle-right'" />
<font-awesome-icon :icon="currentNode.expanded ? 'angle-down' : 'angle-right'" />
</button>
<n8n-tooltip :disabled="!slim" placement="right">
<template #content>
{{ node.label }}
{{ currentNode.label }}
</template>
<span :class="$style.leafLabel">
<NodeIcon
@@ -129,7 +129,7 @@ watch(() => props.runIndex, selectFirst, { immediate: true });
:size="17"
:class="$style.nodeIcon"
/>
<span v-if="!slim" v-text="node.label" />
<span v-if="!slim" v-text="currentNode.label" />
</span>
</n8n-tooltip>
</div>
@@ -157,7 +157,9 @@ watch(() => props.runIndex, selectFirst, { immediate: true });
</div>
</div>
</template>
<div v-else :class="$style.noData">{{ i18n.baseText('ndv.output.ai.waiting') }}</div>
<div v-else :class="$style.noData">
{{ i18n.baseText('ndv.output.ai.waiting') }}
</div>
</div>
</template>