mirror of
https://github.com/n8n-io/n8n.git
synced 2025-02-21 02:56:40 -08:00
fix(editor): Reduce cases for Auto-Add of ChatTrigger for AI Agents (#12154)
This commit is contained in:
parent
614aad55f0
commit
365e82d200
|
@ -212,24 +212,10 @@ export const useActions = () => {
|
|||
];
|
||||
|
||||
const isCompatibleNode = addedNodes.some((node) => COMPATIBLE_CHAT_NODES.includes(node.type));
|
||||
|
||||
if (!isCompatibleNode) return false;
|
||||
|
||||
const { allNodes, getNodeTypes } = useWorkflowsStore();
|
||||
const { getByNameAndVersion } = getNodeTypes();
|
||||
|
||||
// We want to add a trigger if there are no triggers other than Manual Triggers
|
||||
// Performance here should be fine as `getByNameAndVersion` fetches nodeTypes once in bulk
|
||||
// and `every` aborts on first `false`
|
||||
const shouldAddChatTrigger = allNodes.every((node) => {
|
||||
const nodeType = getByNameAndVersion(node.type, node.typeVersion);
|
||||
|
||||
return (
|
||||
!nodeType.description.group.includes('trigger') || node.type === MANUAL_TRIGGER_NODE_TYPE
|
||||
);
|
||||
});
|
||||
|
||||
return shouldAddChatTrigger;
|
||||
const { allNodes } = useWorkflowsStore();
|
||||
return allNodes.filter((x) => x.type !== MANUAL_TRIGGER_NODE_TYPE).length === 0;
|
||||
}
|
||||
|
||||
// AI-226: Prepend LLM Chain node when adding a language model
|
||||
|
|
|
@ -73,10 +73,11 @@ describe('useActions', () => {
|
|||
});
|
||||
});
|
||||
|
||||
test('should insert a ChatTrigger node when an AI Agent is added without trigger', () => {
|
||||
test('should insert a ChatTrigger node when an AI Agent is added on an empty canvas', () => {
|
||||
const workflowsStore = useWorkflowsStore();
|
||||
|
||||
vi.spyOn(workflowsStore, 'workflowTriggerNodes', 'get').mockReturnValue([]);
|
||||
vi.spyOn(workflowsStore, 'allNodes', 'get').mockReturnValue([]);
|
||||
|
||||
const { getAddedNodesAndConnections } = useActions();
|
||||
|
||||
|
@ -98,15 +99,15 @@ describe('useActions', () => {
|
|||
});
|
||||
});
|
||||
|
||||
test('should insert a ChatTrigger node when an AI Agent is added with only a Manual Trigger', () => {
|
||||
test('should insert a ChatTrigger node when an AI Agent is added with only a Manual Trigger present', () => {
|
||||
const workflowsStore = useWorkflowsStore();
|
||||
|
||||
vi.spyOn(workflowsStore, 'workflowTriggerNodes', 'get').mockReturnValue([
|
||||
{ type: MANUAL_TRIGGER_NODE_TYPE } as never,
|
||||
]);
|
||||
vi.spyOn(workflowsStore, 'getNodeTypes').mockReturnValue({
|
||||
getByNameAndVersion: () => ({ description: { group: ['trigger'] } }),
|
||||
} as never);
|
||||
vi.spyOn(workflowsStore, 'allNodes', 'get').mockReturnValue([
|
||||
{ type: MANUAL_TRIGGER_NODE_TYPE } as never,
|
||||
]);
|
||||
|
||||
const { getAddedNodesAndConnections } = useActions();
|
||||
|
||||
|
@ -128,15 +129,17 @@ describe('useActions', () => {
|
|||
});
|
||||
});
|
||||
|
||||
test('should not insert a ChatTrigger node when an AI Agent is added with a trigger already present', () => {
|
||||
test('should not insert a ChatTrigger node when an AI Agent is added with a non-trigger node prseent', () => {
|
||||
const workflowsStore = useWorkflowsStore();
|
||||
|
||||
vi.spyOn(workflowsStore, 'workflowTriggerNodes', 'get').mockReturnValue([
|
||||
{ type: GITHUB_TRIGGER_NODE_TYPE } as never,
|
||||
]);
|
||||
|
||||
vi.spyOn(workflowsStore, 'allNodes', 'get').mockReturnValue([
|
||||
{ type: GITHUB_TRIGGER_NODE_TYPE } as never,
|
||||
{ type: HTTP_REQUEST_NODE_TYPE } as never,
|
||||
]);
|
||||
vi.spyOn(workflowsStore, 'getNodeTypes').mockReturnValue({
|
||||
getByNameAndVersion: () => ({ description: { group: ['trigger'] } }),
|
||||
} as never);
|
||||
|
||||
const { getAddedNodesAndConnections } = useActions();
|
||||
|
||||
|
@ -155,9 +158,6 @@ describe('useActions', () => {
|
|||
vi.spyOn(workflowsStore, 'allNodes', 'get').mockReturnValue([
|
||||
{ type: CHAT_TRIGGER_NODE_TYPE } as never,
|
||||
]);
|
||||
vi.spyOn(workflowsStore, 'getNodeTypes').mockReturnValue({
|
||||
getByNameAndVersion: () => ({ description: { group: ['trigger'] } }),
|
||||
} as never);
|
||||
|
||||
const { getAddedNodesAndConnections } = useActions();
|
||||
|
||||
|
|
Loading…
Reference in a new issue