refactor: Simplify agent request store (#15743)

This commit is contained in:
Benjamin Schroth
2025-06-02 14:21:49 +02:00
committed by GitHub
parent 61d0c6a6e7
commit 62d70f5225
7 changed files with 181 additions and 323 deletions

View File

@@ -124,8 +124,8 @@ describe('FromAiParametersModal', () => {
workflowsStore.getCurrentWorkflow = vi.fn().mockReturnValue(mockWorkflow);
agentRequestStore = useAgentRequestStore();
agentRequestStore.clearAgentRequests = vi.fn();
agentRequestStore.addAgentRequests = vi.fn();
agentRequestStore.generateAgentRequest = vi.fn();
agentRequestStore.setAgentRequestForNode = vi.fn();
agentRequestStore.getAgentRequest = vi.fn();
nodeTypesStore = useNodeTypesStore();
nodeTypesStore.getNodeParameterOptions = vi.fn().mockResolvedValue(mockTools);
});
@@ -214,9 +214,11 @@ describe('FromAiParametersModal', () => {
await userEvent.click(getByTestId('execute-workflow-button'));
expect(agentRequestStore.addAgentRequests).toHaveBeenCalledWith('test-workflow', 'id1', {
'query.testBoolean': true,
'query.testParam': 'override',
expect(agentRequestStore.setAgentRequestForNode).toHaveBeenCalledWith('test-workflow', 'id1', {
query: {
testBoolean: true,
testParam: 'override',
},
});
});
@@ -266,9 +268,11 @@ describe('FromAiParametersModal', () => {
);
await userEvent.click(getByTestId('execute-workflow-button'));
expect(agentRequestStore.addAgentRequests).toHaveBeenCalledWith('test-workflow', 'id1', {
'query.testBoolean': false,
'query.testParam': 'given value',
expect(agentRequestStore.setAgentRequestForNode).toHaveBeenCalledWith('test-workflow', 'id1', {
query: {
testBoolean: false,
testParam: 'given value',
},
});
});
});

View File

@@ -2,7 +2,7 @@
import { useI18n } from '@n8n/i18n';
import { useRunWorkflow } from '@/composables/useRunWorkflow';
import { FROM_AI_PARAMETERS_MODAL_KEY, AI_MCP_TOOL_NODE_TYPE } from '@/constants';
import { useAgentRequestStore } from '@n8n/stores/useAgentRequestStore';
import { useAgentRequestStore, type IAgentRequest } from '@n8n/stores/useAgentRequestStore';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { createEventBus } from '@n8n/utils/event-bus';
import {
@@ -166,11 +166,8 @@ watch(
const inputQuery = inputOverrides?.query as IDataObject;
const initialValue = inputQuery?.[value.key]
? inputQuery[value.key]
: (agentRequestStore.getAgentRequest(
workflowsStore.workflowId,
newNode.id,
'query.' + value.key,
) ?? mapTypes[type]?.defaultValue);
: (agentRequestStore.getQueryValue(workflowsStore.workflowId, newNode.id, value.key) ??
mapTypes[type]?.defaultValue);
result.push({
name: 'query.' + value.key,
@@ -189,7 +186,7 @@ watch(
}
const queryValue =
inputQuery ??
agentRequestStore.getAgentRequest(workflowsStore.workflowId, newNode.id, 'query') ??
agentRequestStore.getQueryValue(workflowsStore.workflowId, newNode.id, 'query') ??
'';
result.push({
@@ -216,7 +213,24 @@ const onExecute = async () => {
const inputValues = inputs.value?.getValues() ?? {};
agentRequestStore.clearAgentRequests(workflowsStore.workflowId, node.value.id);
agentRequestStore.addAgentRequests(workflowsStore.workflowId, node.value.id, inputValues);
// Structure the input values as IAgentRequest
const agentRequest: IAgentRequest = {
query: {},
toolName: inputValues.toolName as string,
};
// Move all query.* fields to query object
Object.entries(inputValues).forEach(([key, value]) => {
if (key === 'query') {
agentRequest.query = value as string;
} else if (key.startsWith('query.') && 'string' !== typeof agentRequest.query) {
const queryKey = key.replace('query.', '');
agentRequest.query[queryKey] = value;
}
});
agentRequestStore.setAgentRequestForNode(workflowsStore.workflowId, node.value.id, agentRequest);
const telemetryPayload = {
node_type: node.value.type,