diff --git a/__tests__/integration/actions/createWorkflow.test.ts b/__tests__/integration/actions/createWorkflow.test.ts index bd57fed..ee88c21 100644 --- a/__tests__/integration/actions/createWorkflow.test.ts +++ b/__tests__/integration/actions/createWorkflow.test.ts @@ -50,7 +50,8 @@ describe('CREATE_N8N_WORKFLOW action', () => { callback ); - expect(result.success).toBe(true); + expect(result?.success).toBe(true); + expect(result?.data).toEqual({ awaitingUserInput: true }); expect(mockService.generateWorkflowDraft).toHaveBeenCalledTimes(1); expect(mockService.deployWorkflow).not.toHaveBeenCalled(); @@ -108,7 +109,8 @@ describe('CREATE_N8N_WORKFLOW action', () => { callback ); - expect(result.success).toBe(true); + expect(result?.success).toBe(true); + expect(result?.data).toEqual({ awaitingUserInput: true }); const calls = (callback as any).mock.calls; const lastText = calls[calls.length - 1][0].text; // Clarification questions should be in the data passed to the LLM @@ -131,7 +133,7 @@ describe('CREATE_N8N_WORKFLOW action', () => { callback ); - expect(result.success).toBe(false); + expect(result?.success).toBe(false); // Callback should be called (LLM formats EMPTY_PROMPT response) expect((callback as any).mock.calls.length).toBeGreaterThan(0); }); @@ -151,7 +153,7 @@ describe('CREATE_N8N_WORKFLOW action', () => { callback ); - expect(result.success).toBe(false); + expect(result?.success).toBe(false); }); test('handles service error gracefully', async () => { @@ -174,7 +176,7 @@ describe('CREATE_N8N_WORKFLOW action', () => { callback ); - expect(result.success).toBe(false); + expect(result?.success).toBe(false); const calls = (callback as any).mock.calls; const errorText = calls[calls.length - 1][0].text; expect(errorText).toContain('LLM generation failed'); @@ -240,8 +242,8 @@ describe('CREATE_N8N_WORKFLOW action', () => { callback ); - expect(result.success).toBe(true); - expect(result.data).toBeDefined(); + expect(result?.success).toBe(true); + expect(result?.data).toBeDefined(); expect(mockService.deployWorkflow).toHaveBeenCalledTimes(1); expect(mockService.generateWorkflowDraft).not.toHaveBeenCalled(); @@ -277,7 +279,7 @@ describe('CREATE_N8N_WORKFLOW action', () => { callback ); - expect(result.success).toBe(true); + expect(result?.success).toBe(true); expect(runtime.deleteCache).toHaveBeenCalled(); // Callback called with cancelled response containing workflow name @@ -313,7 +315,8 @@ describe('CREATE_N8N_WORKFLOW action', () => { callback ); - expect(result.success).toBe(true); + expect(result?.success).toBe(true); + expect(result?.data).toEqual({ awaitingUserInput: true }); // Should call modifyWorkflowDraft (hybrid), NOT generateWorkflowDraft (from scratch) expect(mockService.modifyWorkflowDraft).toHaveBeenCalledTimes(1); expect(mockService.generateWorkflowDraft).not.toHaveBeenCalled(); @@ -379,7 +382,8 @@ describe('CREATE_N8N_WORKFLOW action', () => { callback ); - expect(result.success).toBe(true); + expect(result?.success).toBe(true); + expect(result?.data).toEqual({ awaitingUserInput: true }); // Draft should be restored in cache expect(runtime.setCache).toHaveBeenCalled(); @@ -419,7 +423,7 @@ describe('CREATE_N8N_WORKFLOW action', () => { callback ); - expect(result.success).toBe(true); + expect(result?.success).toBe(true); // Should call modifyWorkflowDraft (override confirm → modify), NOT deployWorkflow expect(mockService.modifyWorkflowDraft).toHaveBeenCalledTimes(1); expect(mockService.deployWorkflow).not.toHaveBeenCalled(); @@ -494,7 +498,7 @@ describe('CREATE_N8N_WORKFLOW action', () => { callback ); - expect(result.success).toBe(true); + expect(result?.success).toBe(true); // Should NOT clear cache — draft stays for retry after auth expect(runtime.deleteCache).not.toHaveBeenCalled(); diff --git a/package.json b/package.json index 545c81c..d440bfc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@elizaos/plugin-n8n-workflow", - "version": "1.0.11", + "version": "1.0.12", "description": "ElizaOS plugin for generating and managing n8n workflows from natural language", "type": "module", "main": "dist/index.js", diff --git a/src/actions/createWorkflow.ts b/src/actions/createWorkflow.ts index 9b3cf29..9a62f4d 100644 --- a/src/actions/createWorkflow.ts +++ b/src/actions/createWorkflow.ts @@ -317,7 +317,7 @@ export const createWorkflowAction: Action = { if (callback) { await callback({ text, success: true }); } - return { success: true }; + return { success: true, data: { awaitingUserInput: true } }; } await runtime.deleteCache(cacheKey); @@ -372,7 +372,7 @@ export const createWorkflowAction: Action = { if (callback) { await callback({ text, success: true }); } - return { success: true }; + return { success: true, data: { awaitingUserInput: true } }; } const text = await formatActionResponse( @@ -383,7 +383,7 @@ export const createWorkflowAction: Action = { if (callback) { await callback({ text, success: true }); } - return { success: true }; + return { success: true, data: { awaitingUserInput: true } }; } case 'new': { @@ -419,7 +419,7 @@ export const createWorkflowAction: Action = { if (callback) { await callback({ text, success: true }); } - return { success: true }; + return { success: true, data: { awaitingUserInput: true } }; } } @@ -436,7 +436,7 @@ export const createWorkflowAction: Action = { if (callback) { await callback({ text, success: true }); } - return { success: true }; + return { success: true, data: { awaitingUserInput: true } }; } } } @@ -516,12 +516,12 @@ async function generateAndPreview( if (callback) { await callback({ text, success: true }); } - return { success: true }; + return { success: true, data: { awaitingUserInput: true } }; } const text = await formatActionResponse(runtime, 'PREVIEW', buildPreviewData(workflow)); if (callback) { await callback({ text, success: true }); } - return { success: true }; + return { success: true, data: { awaitingUserInput: true } }; }