@elizaos/plugin-n8n-workflow 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +199 -0
  2. package/dist/actions/activateWorkflow.d.ts +4 -0
  3. package/dist/actions/activateWorkflow.d.ts.map +1 -0
  4. package/dist/actions/activateWorkflow.js +116 -0
  5. package/dist/actions/activateWorkflow.js.map +1 -0
  6. package/dist/actions/createWorkflow.d.ts +4 -0
  7. package/dist/actions/createWorkflow.d.ts.map +1 -0
  8. package/dist/actions/createWorkflow.js +141 -0
  9. package/dist/actions/createWorkflow.js.map +1 -0
  10. package/dist/actions/deactivateWorkflow.d.ts +4 -0
  11. package/dist/actions/deactivateWorkflow.d.ts.map +1 -0
  12. package/dist/actions/deactivateWorkflow.js +121 -0
  13. package/dist/actions/deactivateWorkflow.js.map +1 -0
  14. package/dist/actions/deleteWorkflow.d.ts +4 -0
  15. package/dist/actions/deleteWorkflow.d.ts.map +1 -0
  16. package/dist/actions/deleteWorkflow.js +115 -0
  17. package/dist/actions/deleteWorkflow.js.map +1 -0
  18. package/dist/actions/executeWorkflow.d.ts +4 -0
  19. package/dist/actions/executeWorkflow.d.ts.map +1 -0
  20. package/dist/actions/executeWorkflow.js +74 -0
  21. package/dist/actions/executeWorkflow.js.map +1 -0
  22. package/dist/actions/getExecutions.d.ts +4 -0
  23. package/dist/actions/getExecutions.d.ts.map +1 -0
  24. package/dist/actions/getExecutions.js +108 -0
  25. package/dist/actions/getExecutions.js.map +1 -0
  26. package/dist/actions/index.d.ts +9 -0
  27. package/dist/actions/index.d.ts.map +1 -0
  28. package/dist/actions/index.js +9 -0
  29. package/dist/actions/index.js.map +1 -0
  30. package/dist/actions/listCredentials.d.ts +4 -0
  31. package/dist/actions/listCredentials.d.ts.map +1 -0
  32. package/dist/actions/listCredentials.js +102 -0
  33. package/dist/actions/listCredentials.js.map +1 -0
  34. package/dist/actions/listWorkflows.d.ts +4 -0
  35. package/dist/actions/listWorkflows.d.ts.map +1 -0
  36. package/dist/actions/listWorkflows.js +97 -0
  37. package/dist/actions/listWorkflows.js.map +1 -0
  38. package/dist/data/defaultNodes.json +427888 -0
  39. package/dist/index.d.ts +35 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +75 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/prompts/index.d.ts +3 -0
  44. package/dist/prompts/index.d.ts.map +1 -0
  45. package/dist/prompts/index.js +3 -0
  46. package/dist/prompts/index.js.map +1 -0
  47. package/dist/prompts/keywordExtraction.d.ts +6 -0
  48. package/dist/prompts/keywordExtraction.d.ts.map +1 -0
  49. package/dist/prompts/keywordExtraction.js +19 -0
  50. package/dist/prompts/keywordExtraction.js.map +1 -0
  51. package/dist/prompts/workflowGeneration.d.ts +7 -0
  52. package/dist/prompts/workflowGeneration.d.ts.map +1 -0
  53. package/dist/prompts/workflowGeneration.js +330 -0
  54. package/dist/prompts/workflowGeneration.js.map +1 -0
  55. package/dist/prompts/workflowMatching.d.ts +7 -0
  56. package/dist/prompts/workflowMatching.d.ts.map +1 -0
  57. package/dist/prompts/workflowMatching.js +25 -0
  58. package/dist/prompts/workflowMatching.js.map +1 -0
  59. package/dist/providers/activeWorkflows.d.ts +12 -0
  60. package/dist/providers/activeWorkflows.d.ts.map +1 -0
  61. package/dist/providers/activeWorkflows.js +69 -0
  62. package/dist/providers/activeWorkflows.js.map +1 -0
  63. package/dist/providers/index.d.ts +3 -0
  64. package/dist/providers/index.d.ts.map +1 -0
  65. package/dist/providers/index.js +3 -0
  66. package/dist/providers/index.js.map +1 -0
  67. package/dist/providers/workflowStatus.d.ts +4 -0
  68. package/dist/providers/workflowStatus.d.ts.map +1 -0
  69. package/dist/providers/workflowStatus.js +66 -0
  70. package/dist/providers/workflowStatus.js.map +1 -0
  71. package/dist/schemas/index.d.ts +3 -0
  72. package/dist/schemas/index.d.ts.map +1 -0
  73. package/dist/schemas/index.js +3 -0
  74. package/dist/schemas/index.js.map +1 -0
  75. package/dist/schemas/keywordExtraction.d.ts +14 -0
  76. package/dist/schemas/keywordExtraction.d.ts.map +1 -0
  77. package/dist/schemas/keywordExtraction.js +12 -0
  78. package/dist/schemas/keywordExtraction.js.map +1 -0
  79. package/dist/schemas/workflowMatching.d.ts +36 -0
  80. package/dist/schemas/workflowMatching.d.ts.map +1 -0
  81. package/dist/schemas/workflowMatching.js +30 -0
  82. package/dist/schemas/workflowMatching.js.map +1 -0
  83. package/dist/services/index.d.ts +2 -0
  84. package/dist/services/index.d.ts.map +1 -0
  85. package/dist/services/index.js +2 -0
  86. package/dist/services/index.js.map +1 -0
  87. package/dist/services/n8n-workflow-service.d.ts +83 -0
  88. package/dist/services/n8n-workflow-service.d.ts.map +1 -0
  89. package/dist/services/n8n-workflow-service.js +234 -0
  90. package/dist/services/n8n-workflow-service.js.map +1 -0
  91. package/dist/types/index.d.ts +313 -0
  92. package/dist/types/index.d.ts.map +1 -0
  93. package/dist/types/index.js +43 -0
  94. package/dist/types/index.js.map +1 -0
  95. package/dist/utils/api.d.ts +137 -0
  96. package/dist/utils/api.d.ts.map +1 -0
  97. package/dist/utils/api.js +247 -0
  98. package/dist/utils/api.js.map +1 -0
  99. package/dist/utils/catalog.d.ts +22 -0
  100. package/dist/utils/catalog.d.ts.map +1 -0
  101. package/dist/utils/catalog.js +81 -0
  102. package/dist/utils/catalog.js.map +1 -0
  103. package/dist/utils/context.d.ts +8 -0
  104. package/dist/utils/context.d.ts.map +1 -0
  105. package/dist/utils/context.js +17 -0
  106. package/dist/utils/context.js.map +1 -0
  107. package/dist/utils/credentialResolver.d.ts +13 -0
  108. package/dist/utils/credentialResolver.d.ts.map +1 -0
  109. package/dist/utils/credentialResolver.js +177 -0
  110. package/dist/utils/credentialResolver.js.map +1 -0
  111. package/dist/utils/generation.d.ts +46 -0
  112. package/dist/utils/generation.d.ts.map +1 -0
  113. package/dist/utils/generation.js +145 -0
  114. package/dist/utils/generation.js.map +1 -0
  115. package/dist/utils/index.d.ts +6 -0
  116. package/dist/utils/index.d.ts.map +1 -0
  117. package/dist/utils/index.js +11 -0
  118. package/dist/utils/index.js.map +1 -0
  119. package/dist/utils/workflow.d.ts +27 -0
  120. package/dist/utils/workflow.d.ts.map +1 -0
  121. package/dist/utils/workflow.js +289 -0
  122. package/dist/utils/workflow.js.map +1 -0
  123. package/package.json +65 -0
@@ -0,0 +1,115 @@
1
+ import { logger, } from '@elizaos/core';
2
+ import { N8N_WORKFLOW_SERVICE_TYPE } from '../services/index';
3
+ import { matchWorkflow } from '../utils/generation';
4
+ import { buildConversationContext } from '../utils/context';
5
+ const examples = [
6
+ [
7
+ {
8
+ name: '{{user1}}',
9
+ content: {
10
+ text: 'Delete the old payment workflow',
11
+ },
12
+ },
13
+ {
14
+ name: '{{agent}}',
15
+ content: {
16
+ text: "I'll delete that workflow for you.",
17
+ actions: ['DELETE_N8N_WORKFLOW'],
18
+ },
19
+ },
20
+ ],
21
+ [
22
+ {
23
+ name: '{{user1}}',
24
+ content: {
25
+ text: 'Remove workflow abc123',
26
+ },
27
+ },
28
+ {
29
+ name: '{{agent}}',
30
+ content: {
31
+ text: 'Deleting workflow abc123.',
32
+ actions: ['DELETE_N8N_WORKFLOW'],
33
+ },
34
+ },
35
+ ],
36
+ [
37
+ {
38
+ name: '{{user1}}',
39
+ content: {
40
+ text: 'Get rid of the broken email automation',
41
+ },
42
+ },
43
+ {
44
+ name: '{{agent}}',
45
+ content: {
46
+ text: 'Removing that workflow.',
47
+ actions: ['DELETE_N8N_WORKFLOW'],
48
+ },
49
+ },
50
+ ],
51
+ ];
52
+ export const deleteWorkflowAction = {
53
+ name: 'DELETE_N8N_WORKFLOW',
54
+ similes: ['DELETE_WORKFLOW', 'REMOVE_WORKFLOW', 'DESTROY_WORKFLOW'],
55
+ description: 'Delete an n8n workflow permanently. This action cannot be undone. Identifies workflows by ID, name, or semantic description in any language.',
56
+ validate: async (runtime) => {
57
+ const service = runtime.getService(N8N_WORKFLOW_SERVICE_TYPE);
58
+ return !!service;
59
+ },
60
+ handler: async (runtime, message, state, _options, callback) => {
61
+ const service = runtime.getService(N8N_WORKFLOW_SERVICE_TYPE);
62
+ if (!service) {
63
+ logger.error({ src: 'plugin:n8n-workflow:action:delete' }, 'N8n Workflow service not available');
64
+ if (callback) {
65
+ await callback({
66
+ text: 'N8n Workflow service is not available.',
67
+ });
68
+ }
69
+ return { success: false };
70
+ }
71
+ try {
72
+ const workflows = state?.data?.workflows || [];
73
+ if (workflows.length === 0) {
74
+ if (callback) {
75
+ await callback({
76
+ text: 'No workflows available to delete.',
77
+ });
78
+ }
79
+ return { success: false };
80
+ }
81
+ const context = buildConversationContext(runtime, message, state);
82
+ const matchResult = await matchWorkflow(runtime, context, workflows);
83
+ if (!matchResult.matchedWorkflowId || matchResult.confidence === 'none') {
84
+ const workflowList = matchResult.matches.map((m) => `- ${m.name} (ID: ${m.id})`).join('\n');
85
+ if (callback) {
86
+ await callback({
87
+ text: `Could not identify which workflow to delete. Available workflows:\n${workflowList}`,
88
+ });
89
+ }
90
+ return { success: false };
91
+ }
92
+ await service.deleteWorkflow(matchResult.matchedWorkflowId);
93
+ logger.info({ src: 'plugin:n8n-workflow:action:delete' }, `Deleted workflow ${matchResult.matchedWorkflowId}`);
94
+ if (callback) {
95
+ await callback({
96
+ text: '🗑️ Workflow deleted permanently.',
97
+ });
98
+ }
99
+ return { success: true };
100
+ }
101
+ catch (error) {
102
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
103
+ logger.error({ src: 'plugin:n8n-workflow:action:delete' }, `Failed to delete workflow: ${errorMessage}`);
104
+ if (callback) {
105
+ await callback({
106
+ text: `Failed to delete workflow: ${errorMessage}`,
107
+ });
108
+ }
109
+ return { success: false };
110
+ }
111
+ },
112
+ examples,
113
+ };
114
+ export default deleteWorkflowAction;
115
+ //# sourceMappingURL=deleteWorkflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteWorkflow.js","sourceRoot":"","sources":["../../src/actions/deleteWorkflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type Action } from '@elizaos/core';
2
+ export declare const executeWorkflowAction: Action;
3
+ export default executeWorkflowAction;
4
+ //# sourceMappingURL=executeWorkflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeWorkflow.d.ts","sourceRoot":"","sources":["../../src/actions/executeWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAQZ,MAAM,eAAe,CAAC;AAqBvB,eAAO,MAAM,qBAAqB,EAAE,MA+EnC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { logger, } from '@elizaos/core';
2
+ import { N8N_WORKFLOW_SERVICE_TYPE } from '../services/index';
3
+ const examples = [
4
+ [
5
+ {
6
+ name: '{{user1}}',
7
+ content: {
8
+ text: 'Run workflow abc123 manually',
9
+ },
10
+ },
11
+ {
12
+ name: '{{agent}}',
13
+ content: {
14
+ text: "I'll execute that workflow for you.",
15
+ actions: ['EXECUTE_N8N_WORKFLOW'],
16
+ },
17
+ },
18
+ ],
19
+ ];
20
+ export const executeWorkflowAction = {
21
+ name: 'EXECUTE_N8N_WORKFLOW',
22
+ similes: ['EXECUTE_WORKFLOW', 'RUN_WORKFLOW', 'TRIGGER_WORKFLOW', 'MANUAL_RUN_WORKFLOW'],
23
+ description: 'Manually execute an n8n workflow. Runs the workflow immediately, regardless of triggers.',
24
+ validate: async (runtime) => {
25
+ return !!runtime.getService(N8N_WORKFLOW_SERVICE_TYPE);
26
+ },
27
+ handler: async (runtime, message, state, _options, callback) => {
28
+ const service = runtime.getService(N8N_WORKFLOW_SERVICE_TYPE);
29
+ if (!service) {
30
+ logger.error({ src: 'plugin:n8n-workflow:action:execute' }, 'N8n Workflow service not available');
31
+ if (callback) {
32
+ await callback({
33
+ text: 'N8n Workflow service is not available.',
34
+ });
35
+ }
36
+ return { success: false };
37
+ }
38
+ try {
39
+ const workflowId = state?.workflowId || '';
40
+ if (!workflowId) {
41
+ if (callback) {
42
+ await callback({
43
+ text: 'Please provide a workflow ID.',
44
+ });
45
+ }
46
+ return { success: false };
47
+ }
48
+ const execution = await service.executeWorkflow(workflowId);
49
+ logger.info({ src: 'plugin:n8n-workflow:action:execute' }, `Executed workflow ${workflowId}, execution ID: ${execution.id}`);
50
+ if (callback) {
51
+ await callback({
52
+ text: `▶️ Workflow ${workflowId} has been triggered.\n\nExecution ID: ${execution.id}\nStatus: ${execution.status}`,
53
+ });
54
+ }
55
+ return {
56
+ success: true,
57
+ data: { execution },
58
+ };
59
+ }
60
+ catch (error) {
61
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
62
+ logger.error({ src: 'plugin:n8n-workflow:action:execute' }, `Failed to execute workflow: ${errorMessage}`);
63
+ if (callback) {
64
+ await callback({
65
+ text: `Failed to execute workflow: ${errorMessage}`,
66
+ });
67
+ }
68
+ return { success: false };
69
+ }
70
+ },
71
+ examples,
72
+ };
73
+ export default executeWorkflowAction;
74
+ //# sourceMappingURL=executeWorkflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeWorkflow.js","sourceRoot":"","sources":["../../src/actions/executeWorkflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type Action } from '@elizaos/core';
2
+ export declare const getExecutionsAction: Action;
3
+ export default getExecutionsAction;
4
+ //# sourceMappingURL=getExecutions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExecutions.d.ts","sourceRoot":"","sources":["../../src/actions/getExecutions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAQZ,MAAM,eAAe,CAAC;AAqBvB,eAAO,MAAM,mBAAmB,EAAE,MAyHjC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { logger, } from '@elizaos/core';
2
+ import { N8N_WORKFLOW_SERVICE_TYPE } from '../services/index';
3
+ const examples = [
4
+ [
5
+ {
6
+ name: '{{user1}}',
7
+ content: {
8
+ text: 'Show me the execution history for workflow abc123',
9
+ },
10
+ },
11
+ {
12
+ name: '{{agent}}',
13
+ content: {
14
+ text: "I'll fetch the execution history for that workflow.",
15
+ actions: ['GET_N8N_EXECUTIONS'],
16
+ },
17
+ },
18
+ ],
19
+ ];
20
+ export const getExecutionsAction = {
21
+ name: 'GET_N8N_EXECUTIONS',
22
+ similes: [
23
+ 'GET_EXECUTIONS',
24
+ 'SHOW_EXECUTIONS',
25
+ 'EXECUTION_HISTORY',
26
+ 'WORKFLOW_RUNS',
27
+ 'WORKFLOW_EXECUTIONS',
28
+ ],
29
+ description: 'Get execution history for an n8n workflow. Shows status, start time, and error messages if any.',
30
+ validate: async (runtime) => {
31
+ return !!runtime.getService(N8N_WORKFLOW_SERVICE_TYPE);
32
+ },
33
+ handler: async (runtime, message, state, _options, callback) => {
34
+ const service = runtime.getService(N8N_WORKFLOW_SERVICE_TYPE);
35
+ if (!service) {
36
+ logger.error({ src: 'plugin:n8n-workflow:action:get-executions' }, 'N8n Workflow service not available');
37
+ if (callback) {
38
+ await callback({
39
+ text: 'N8n Workflow service is not available.',
40
+ });
41
+ }
42
+ return { success: false };
43
+ }
44
+ try {
45
+ const workflowId = state?.workflowId || '';
46
+ if (!workflowId) {
47
+ if (callback) {
48
+ await callback({
49
+ text: 'Please provide a workflow ID.',
50
+ });
51
+ }
52
+ return { success: false };
53
+ }
54
+ const executions = await service.getWorkflowExecutions(workflowId, 10);
55
+ logger.info({ src: 'plugin:n8n-workflow:action:get-executions' }, `Retrieved ${executions.length} executions for workflow ${workflowId}`);
56
+ if (executions.length === 0) {
57
+ if (callback) {
58
+ await callback({
59
+ text: `No executions found for workflow ${workflowId}. The workflow may not have run yet.`,
60
+ });
61
+ }
62
+ return { success: true, data: { executions: [] } };
63
+ }
64
+ let responseText = `📊 **Execution History** (Last ${executions.length} runs)\n\n`;
65
+ for (const execution of executions) {
66
+ const statusEmoji = execution.status === 'success'
67
+ ? '✅'
68
+ : execution.status === 'error'
69
+ ? '❌'
70
+ : execution.status === 'running'
71
+ ? '⏳'
72
+ : '⏸️';
73
+ responseText += `${statusEmoji} ${execution.status.toUpperCase()}\n`;
74
+ responseText += ` Execution ID: ${execution.id}\n`;
75
+ responseText += ` Started: ${new Date(execution.startedAt).toLocaleString()}\n`;
76
+ if (execution.stoppedAt) {
77
+ responseText += ` Finished: ${new Date(execution.stoppedAt).toLocaleString()}\n`;
78
+ }
79
+ if (execution.data?.resultData?.error) {
80
+ responseText += ` Error: ${execution.data.resultData.error.message}\n`;
81
+ }
82
+ responseText += '\n';
83
+ }
84
+ if (callback) {
85
+ await callback({
86
+ text: responseText,
87
+ });
88
+ }
89
+ return {
90
+ success: true,
91
+ data: { executions },
92
+ };
93
+ }
94
+ catch (error) {
95
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
96
+ logger.error({ src: 'plugin:n8n-workflow:action:get-executions' }, `Failed to get executions: ${errorMessage}`);
97
+ if (callback) {
98
+ await callback({
99
+ text: `Failed to get executions: ${errorMessage}`,
100
+ });
101
+ }
102
+ return { success: false };
103
+ }
104
+ },
105
+ examples,
106
+ };
107
+ export default getExecutionsAction;
108
+ //# sourceMappingURL=getExecutions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExecutions.js","sourceRoot":"","sources":["../../src/actions/getExecutions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export { createWorkflowAction } from './createWorkflow';
2
+ export { listWorkflowsAction } from './listWorkflows';
3
+ export { getExecutionsAction } from './getExecutions';
4
+ export { activateWorkflowAction } from './activateWorkflow';
5
+ export { deactivateWorkflowAction } from './deactivateWorkflow';
6
+ export { deleteWorkflowAction } from './deleteWorkflow';
7
+ export { executeWorkflowAction } from './executeWorkflow';
8
+ export { listCredentialsAction } from './listCredentials';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { createWorkflowAction } from './createWorkflow';
2
+ export { listWorkflowsAction } from './listWorkflows';
3
+ export { getExecutionsAction } from './getExecutions';
4
+ export { activateWorkflowAction } from './activateWorkflow';
5
+ export { deactivateWorkflowAction } from './deactivateWorkflow';
6
+ export { deleteWorkflowAction } from './deleteWorkflow';
7
+ export { executeWorkflowAction } from './executeWorkflow';
8
+ export { listCredentialsAction } from './listCredentials';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type Action } from '@elizaos/core';
2
+ export declare const listCredentialsAction: Action;
3
+ export default listCredentialsAction;
4
+ //# sourceMappingURL=listCredentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listCredentials.d.ts","sourceRoot":"","sources":["../../src/actions/listCredentials.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAQZ,MAAM,eAAe,CAAC;AAqBvB,eAAO,MAAM,qBAAqB,EAAE,MA8GnC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { logger, } from '@elizaos/core';
2
+ import { N8N_WORKFLOW_SERVICE_TYPE } from '../services/index';
3
+ const examples = [
4
+ [
5
+ {
6
+ name: '{{user1}}',
7
+ content: {
8
+ text: 'Show me my n8n credentials',
9
+ },
10
+ },
11
+ {
12
+ name: '{{agent}}',
13
+ content: {
14
+ text: "I'll list all your configured n8n credentials.",
15
+ actions: ['LIST_N8N_CREDENTIALS'],
16
+ },
17
+ },
18
+ ],
19
+ ];
20
+ export const listCredentialsAction = {
21
+ name: 'LIST_N8N_CREDENTIALS',
22
+ similes: [
23
+ 'LIST_CREDENTIALS',
24
+ 'SHOW_CREDENTIALS',
25
+ 'GET_CREDENTIALS',
26
+ 'MY_CREDENTIALS',
27
+ 'LIST_CONNECTIONS',
28
+ ],
29
+ description: 'List all configured credentials in n8n (Gmail, Slack, Stripe, etc.). ' +
30
+ 'Useful in local mode to see which services are connected and get their credential IDs.',
31
+ validate: async (runtime) => {
32
+ return !!runtime.getService(N8N_WORKFLOW_SERVICE_TYPE);
33
+ },
34
+ handler: async (runtime, message, _state, _options, callback) => {
35
+ const service = runtime.getService(N8N_WORKFLOW_SERVICE_TYPE);
36
+ if (!service) {
37
+ logger.error({ src: 'plugin:n8n-workflow:action:list-credentials' }, 'N8n Workflow service not available');
38
+ if (callback) {
39
+ await callback({
40
+ text: 'N8n Workflow service is not available.',
41
+ });
42
+ }
43
+ return { success: false };
44
+ }
45
+ try {
46
+ const credentials = await service.listCredentials();
47
+ logger.info({ src: 'plugin:n8n-workflow:action:list-credentials' }, `Retrieved ${credentials.length} credentials`);
48
+ if (credentials.length === 0) {
49
+ if (callback) {
50
+ await callback({
51
+ text: "You don't have any configured credentials in n8n yet. " +
52
+ 'Connect services in n8n Cloud to use them in workflows.',
53
+ });
54
+ }
55
+ return { success: true, data: { credentials: [] } };
56
+ }
57
+ let responseText = `🔑 **Your n8n Credentials** (${credentials.length} total)\n\n`;
58
+ for (const cred of credentials) {
59
+ responseText += `**${cred.name}**\n`;
60
+ responseText += ` Type: ${cred.type}\n`;
61
+ responseText += ` ID: ${cred.id}\n`;
62
+ responseText += ` Created: ${new Date(cred.createdAt).toLocaleDateString()}\n\n`;
63
+ }
64
+ responseText +=
65
+ '\n💡 **Tip:** To use pre-configured credentials in workflows, add them to your character settings:\n';
66
+ responseText += '```json\n';
67
+ responseText += '{\n';
68
+ responseText += ' "settings": {\n';
69
+ responseText += ' "n8n": {\n';
70
+ responseText += ' "credentials": {\n';
71
+ responseText += ' "gmailOAuth2Api": "YOUR_GMAIL_CRED_ID",\n';
72
+ responseText += ' "slackApi": "YOUR_SLACK_CRED_ID"\n';
73
+ responseText += ' }\n';
74
+ responseText += ' }\n';
75
+ responseText += ' }\n';
76
+ responseText += '}\n';
77
+ responseText += '```';
78
+ if (callback) {
79
+ await callback({
80
+ text: responseText,
81
+ });
82
+ }
83
+ return {
84
+ success: true,
85
+ data: { credentials },
86
+ };
87
+ }
88
+ catch (error) {
89
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
90
+ logger.error({ src: 'plugin:n8n-workflow:action:list-credentials' }, `Failed to list credentials: ${errorMessage}`);
91
+ if (callback) {
92
+ await callback({
93
+ text: `Failed to list credentials: ${errorMessage}`,
94
+ });
95
+ }
96
+ return { success: false };
97
+ }
98
+ },
99
+ examples,
100
+ };
101
+ export default listCredentialsAction;
102
+ //# sourceMappingURL=listCredentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listCredentials.js","sourceRoot":"","sources":["../../src/actions/listCredentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,MAAM,GAGP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,yBAAyB,EAA2B,MAAM,mBAAmB,CAAC;AAEvF,MAAM,QAAQ,GAAsB;IAClC;QACE;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,IAAI,EAAE,4BAA4B;aACnC;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,IAAI,EAAE,gDAAgD;gBACtD,OAAO,EAAE,CAAC,sBAAsB,CAAC;aAClC;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAW;IAC3C,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE;QACP,kBAAkB;QAClB,kBAAkB;QAClB,iBAAiB;QACjB,gBAAgB;QAChB,kBAAkB;KACnB;IACD,WAAW,EACT,uEAAuE;QACvE,wFAAwF;IAE1F,QAAQ,EAAE,KAAK,EAAE,OAAsB,EAAoB,EAAE;QAC3D,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,EAAE,KAAK,EACZ,OAAsB,EACtB,OAAe,EACf,MAAyB,EACzB,QAAkB,EAClB,QAA0B,EACH,EAAE;QACzB,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAqB,yBAAyB,CAAC,CAAC;QAElF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,6CAA6C,EAAE,EACtD,oCAAoC,CACrC,CAAC;YACF,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,CAAC;oBACb,IAAI,EAAE,wCAAwC;iBAC/C,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;YAEpD,MAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,6CAA6C,EAAE,EACtD,aAAa,WAAW,CAAC,MAAM,cAAc,CAC9C,CAAC;YAEF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,QAAQ,CAAC;wBACb,IAAI,EACF,wDAAwD;4BACxD,yDAAyD;qBAC5D,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC;YACtD,CAAC;YAED,IAAI,YAAY,GAAG,gCAAgC,WAAW,CAAC,MAAM,aAAa,CAAC;YAEnF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,YAAY,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC;gBACrC,YAAY,IAAI,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC;gBAC1C,YAAY,IAAI,UAAU,IAAI,CAAC,EAAE,IAAI,CAAC;gBACtC,YAAY,IAAI,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,MAAM,CAAC;YACrF,CAAC;YAED,YAAY;gBACV,sGAAsG,CAAC;YACzG,YAAY,IAAI,WAAW,CAAC;YAC5B,YAAY,IAAI,KAAK,CAAC;YACtB,YAAY,IAAI,mBAAmB,CAAC;YACpC,YAAY,IAAI,gBAAgB,CAAC;YACjC,YAAY,IAAI,0BAA0B,CAAC;YAC3C,YAAY,IAAI,mDAAmD,CAAC;YACpE,YAAY,IAAI,4CAA4C,CAAC;YAC7D,YAAY,IAAI,WAAW,CAAC;YAC5B,YAAY,IAAI,SAAS,CAAC;YAC1B,YAAY,IAAI,OAAO,CAAC;YACxB,YAAY,IAAI,KAAK,CAAC;YACtB,YAAY,IAAI,KAAK,CAAC;YAEtB,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,CAAC;oBACb,IAAI,EAAE,YAAY;iBACnB,CAAC,CAAC;YACL,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,WAAW,EAAE;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,MAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,6CAA6C,EAAE,EACtD,+BAA+B,YAAY,EAAE,CAC9C,CAAC;YAEF,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,CAAC;oBACb,IAAI,EAAE,+BAA+B,YAAY,EAAE;iBACpD,CAAC,CAAC;YACL,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,QAAQ;CACT,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type Action } from '@elizaos/core';
2
+ export declare const listWorkflowsAction: Action;
3
+ export default listWorkflowsAction;
4
+ //# sourceMappingURL=listWorkflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listWorkflows.d.ts","sourceRoot":"","sources":["../../src/actions/listWorkflows.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAQZ,MAAM,eAAe,CAAC;AAoCvB,eAAO,MAAM,mBAAmB,EAAE,MAwFjC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { logger, } from '@elizaos/core';
2
+ import { N8N_WORKFLOW_SERVICE_TYPE } from '../services/index';
3
+ const examples = [
4
+ [
5
+ {
6
+ name: '{{user1}}',
7
+ content: {
8
+ text: 'Show me my n8n workflows',
9
+ },
10
+ },
11
+ {
12
+ name: '{{agent}}',
13
+ content: {
14
+ text: "I'll list all your n8n workflows.",
15
+ actions: ['LIST_N8N_WORKFLOWS'],
16
+ },
17
+ },
18
+ ],
19
+ [
20
+ {
21
+ name: '{{user1}}',
22
+ content: {
23
+ text: 'What workflows do I have?',
24
+ },
25
+ },
26
+ {
27
+ name: '{{agent}}',
28
+ content: {
29
+ text: 'Let me fetch your workflows.',
30
+ actions: ['LIST_N8N_WORKFLOWS'],
31
+ },
32
+ },
33
+ ],
34
+ ];
35
+ export const listWorkflowsAction = {
36
+ name: 'LIST_N8N_WORKFLOWS',
37
+ similes: ['LIST_WORKFLOWS', 'SHOW_WORKFLOWS', 'GET_WORKFLOWS', 'VIEW_WORKFLOWS', 'MY_WORKFLOWS'],
38
+ description: 'List all n8n workflows for the current user. Shows workflow ID, name, status (active/inactive), and node count.',
39
+ validate: async (runtime) => {
40
+ return !!runtime.getService(N8N_WORKFLOW_SERVICE_TYPE);
41
+ },
42
+ handler: async (runtime, message, _state, _options, callback) => {
43
+ const service = runtime.getService(N8N_WORKFLOW_SERVICE_TYPE);
44
+ if (!service) {
45
+ logger.error({ src: 'plugin:n8n-workflow:action:list' }, 'N8n Workflow service not available');
46
+ if (callback) {
47
+ await callback({
48
+ text: 'N8n Workflow service is not available.',
49
+ });
50
+ }
51
+ return { success: false };
52
+ }
53
+ try {
54
+ const userId = message.entityId;
55
+ const workflows = await service.listWorkflows(userId);
56
+ logger.info({ src: 'plugin:n8n-workflow:action:list' }, `Retrieved ${workflows.length} workflows for user ${userId || 'all'}`);
57
+ if (workflows.length === 0) {
58
+ if (callback) {
59
+ await callback({
60
+ text: "You don't have any n8n workflows yet. Would you like me to create one for you?",
61
+ });
62
+ }
63
+ return { success: true, data: { workflows: [] } };
64
+ }
65
+ let responseText = `📋 **Your n8n Workflows** (${workflows.length} total)\n\n`;
66
+ for (const workflow of workflows) {
67
+ const statusEmoji = workflow.active ? '✅' : '⏸️';
68
+ responseText += `${statusEmoji} **${workflow.name}**\n`;
69
+ responseText += ` ID: ${workflow.id}\n`;
70
+ responseText += ` Nodes: ${workflow.nodes?.length || 0}\n`;
71
+ responseText += ` Status: ${workflow.active ? 'Active' : 'Inactive'}\n\n`;
72
+ }
73
+ if (callback) {
74
+ await callback({
75
+ text: responseText,
76
+ });
77
+ }
78
+ return {
79
+ success: true,
80
+ data: { workflows },
81
+ };
82
+ }
83
+ catch (error) {
84
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
85
+ logger.error({ src: 'plugin:n8n-workflow:action:list' }, `Failed to list workflows: ${errorMessage}`);
86
+ if (callback) {
87
+ await callback({
88
+ text: `Failed to list workflows: ${errorMessage}`,
89
+ });
90
+ }
91
+ return { success: false };
92
+ }
93
+ },
94
+ examples,
95
+ };
96
+ export default listWorkflowsAction;
97
+ //# sourceMappingURL=listWorkflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listWorkflows.js","sourceRoot":"","sources":["../../src/actions/listWorkflows.ts"],"names":[],"mappings":"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"}