snow-flow 1.1.0

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 (240) hide show
  1. package/.env.example +49 -0
  2. package/.mcp.json +106 -0
  3. package/.mcp.json.template +106 -0
  4. package/LICENSE +21 -0
  5. package/README.md +236 -0
  6. package/bin/snow-flow +4 -0
  7. package/bin/snow-flow.js +3 -0
  8. package/claude-flow +79 -0
  9. package/claude-flow.bat +18 -0
  10. package/claude-flow.config.json +20 -0
  11. package/claude-flow.ps1 +24 -0
  12. package/dist/agents/app-creator.agent.d.ts +55 -0
  13. package/dist/agents/app-creator.agent.d.ts.map +1 -0
  14. package/dist/agents/app-creator.agent.js +1292 -0
  15. package/dist/agents/app-creator.agent.js.map +1 -0
  16. package/dist/agents/base-snow-agent.d.ts +63 -0
  17. package/dist/agents/base-snow-agent.d.ts.map +1 -0
  18. package/dist/agents/base-snow-agent.js +296 -0
  19. package/dist/agents/base-snow-agent.js.map +1 -0
  20. package/dist/agents/script-generator.agent.d.ts +32 -0
  21. package/dist/agents/script-generator.agent.d.ts.map +1 -0
  22. package/dist/agents/script-generator.agent.js +772 -0
  23. package/dist/agents/script-generator.agent.js.map +1 -0
  24. package/dist/agents/ui-builder.agent.d.ts +50 -0
  25. package/dist/agents/ui-builder.agent.d.ts.map +1 -0
  26. package/dist/agents/ui-builder.agent.js +1539 -0
  27. package/dist/agents/ui-builder.agent.js.map +1 -0
  28. package/dist/agents/widget-builder.agent.d.ts +32 -0
  29. package/dist/agents/widget-builder.agent.d.ts.map +1 -0
  30. package/dist/agents/widget-builder.agent.js +439 -0
  31. package/dist/agents/widget-builder.agent.js.map +1 -0
  32. package/dist/agents/workflow-designer.agent.d.ts +31 -0
  33. package/dist/agents/workflow-designer.agent.d.ts.map +1 -0
  34. package/dist/agents/workflow-designer.agent.js +583 -0
  35. package/dist/agents/workflow-designer.agent.js.map +1 -0
  36. package/dist/api/error-handling.d.ts +214 -0
  37. package/dist/api/error-handling.d.ts.map +1 -0
  38. package/dist/api/error-handling.js +594 -0
  39. package/dist/api/error-handling.js.map +1 -0
  40. package/dist/api/flow-designer-api.d.ts +167 -0
  41. package/dist/api/flow-designer-api.d.ts.map +1 -0
  42. package/dist/api/flow-designer-api.js +555 -0
  43. package/dist/api/flow-designer-api.js.map +1 -0
  44. package/dist/api/natural-language-mapper.d.ts +126 -0
  45. package/dist/api/natural-language-mapper.d.ts.map +1 -0
  46. package/dist/api/natural-language-mapper.js +498 -0
  47. package/dist/api/natural-language-mapper.js.map +1 -0
  48. package/dist/api/performance-optimizer.d.ts +240 -0
  49. package/dist/api/performance-optimizer.d.ts.map +1 -0
  50. package/dist/api/performance-optimizer.js +701 -0
  51. package/dist/api/performance-optimizer.js.map +1 -0
  52. package/dist/api/transaction-manager.d.ts +189 -0
  53. package/dist/api/transaction-manager.d.ts.map +1 -0
  54. package/dist/api/transaction-manager.js +576 -0
  55. package/dist/api/transaction-manager.js.map +1 -0
  56. package/dist/cli/deploy-artifact.d.ts +7 -0
  57. package/dist/cli/deploy-artifact.d.ts.map +1 -0
  58. package/dist/cli/deploy-artifact.js +279 -0
  59. package/dist/cli/deploy-artifact.js.map +1 -0
  60. package/dist/cli.d.ts +6 -0
  61. package/dist/cli.d.ts.map +1 -0
  62. package/dist/cli.js +2057 -0
  63. package/dist/cli.js.map +1 -0
  64. package/dist/index.d.ts +10 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +35 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/managers/scope-manager.d.ts +75 -0
  69. package/dist/managers/scope-manager.d.ts.map +1 -0
  70. package/dist/managers/scope-manager.js +448 -0
  71. package/dist/managers/scope-manager.js.map +1 -0
  72. package/dist/mcp/mcp-wrapper.d.ts +8 -0
  73. package/dist/mcp/mcp-wrapper.d.ts.map +1 -0
  74. package/dist/mcp/mcp-wrapper.js +77 -0
  75. package/dist/mcp/mcp-wrapper.js.map +1 -0
  76. package/dist/mcp/servicenow-automation-mcp.d.ts +8 -0
  77. package/dist/mcp/servicenow-automation-mcp.d.ts.map +1 -0
  78. package/dist/mcp/servicenow-automation-mcp.js +683 -0
  79. package/dist/mcp/servicenow-automation-mcp.js.map +1 -0
  80. package/dist/mcp/servicenow-deployment-mcp.d.ts +7 -0
  81. package/dist/mcp/servicenow-deployment-mcp.d.ts.map +1 -0
  82. package/dist/mcp/servicenow-deployment-mcp.js +972 -0
  83. package/dist/mcp/servicenow-deployment-mcp.js.map +1 -0
  84. package/dist/mcp/servicenow-flow-composer-mcp.d.ts +7 -0
  85. package/dist/mcp/servicenow-flow-composer-mcp.d.ts.map +1 -0
  86. package/dist/mcp/servicenow-flow-composer-mcp.js +1121 -0
  87. package/dist/mcp/servicenow-flow-composer-mcp.js.map +1 -0
  88. package/dist/mcp/servicenow-graph-memory-mcp.d.ts +7 -0
  89. package/dist/mcp/servicenow-graph-memory-mcp.d.ts.map +1 -0
  90. package/dist/mcp/servicenow-graph-memory-mcp.js +703 -0
  91. package/dist/mcp/servicenow-graph-memory-mcp.js.map +1 -0
  92. package/dist/mcp/servicenow-integration-mcp.d.ts +8 -0
  93. package/dist/mcp/servicenow-integration-mcp.d.ts.map +1 -0
  94. package/dist/mcp/servicenow-integration-mcp.js +689 -0
  95. package/dist/mcp/servicenow-integration-mcp.js.map +1 -0
  96. package/dist/mcp/servicenow-intelligent-mcp.d.ts +7 -0
  97. package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +1 -0
  98. package/dist/mcp/servicenow-intelligent-mcp.js +1138 -0
  99. package/dist/mcp/servicenow-intelligent-mcp.js.map +1 -0
  100. package/dist/mcp/servicenow-mcp-server.d.ts +37 -0
  101. package/dist/mcp/servicenow-mcp-server.d.ts.map +1 -0
  102. package/dist/mcp/servicenow-mcp-server.js +648 -0
  103. package/dist/mcp/servicenow-mcp-server.js.map +1 -0
  104. package/dist/mcp/servicenow-operations-mcp.d.ts +15 -0
  105. package/dist/mcp/servicenow-operations-mcp.d.ts.map +1 -0
  106. package/dist/mcp/servicenow-operations-mcp.js +1287 -0
  107. package/dist/mcp/servicenow-operations-mcp.js.map +1 -0
  108. package/dist/mcp/servicenow-platform-development-mcp.d.ts +8 -0
  109. package/dist/mcp/servicenow-platform-development-mcp.d.ts.map +1 -0
  110. package/dist/mcp/servicenow-platform-development-mcp.js +557 -0
  111. package/dist/mcp/servicenow-platform-development-mcp.js.map +1 -0
  112. package/dist/mcp/servicenow-progressive-indexer.d.ts +79 -0
  113. package/dist/mcp/servicenow-progressive-indexer.d.ts.map +1 -0
  114. package/dist/mcp/servicenow-progressive-indexer.js +320 -0
  115. package/dist/mcp/servicenow-progressive-indexer.js.map +1 -0
  116. package/dist/mcp/servicenow-reporting-analytics-mcp.d.ts +8 -0
  117. package/dist/mcp/servicenow-reporting-analytics-mcp.d.ts.map +1 -0
  118. package/dist/mcp/servicenow-reporting-analytics-mcp.js +888 -0
  119. package/dist/mcp/servicenow-reporting-analytics-mcp.js.map +1 -0
  120. package/dist/mcp/servicenow-security-compliance-mcp.d.ts +8 -0
  121. package/dist/mcp/servicenow-security-compliance-mcp.d.ts.map +1 -0
  122. package/dist/mcp/servicenow-security-compliance-mcp.js +812 -0
  123. package/dist/mcp/servicenow-security-compliance-mcp.js.map +1 -0
  124. package/dist/mcp/servicenow-update-set-mcp.d.ts +7 -0
  125. package/dist/mcp/servicenow-update-set-mcp.d.ts.map +1 -0
  126. package/dist/mcp/servicenow-update-set-mcp.js +599 -0
  127. package/dist/mcp/servicenow-update-set-mcp.js.map +1 -0
  128. package/dist/mcp/start-all-mcp-servers.d.ts +6 -0
  129. package/dist/mcp/start-all-mcp-servers.d.ts.map +1 -0
  130. package/dist/mcp/start-all-mcp-servers.js +65 -0
  131. package/dist/mcp/start-all-mcp-servers.js.map +1 -0
  132. package/dist/mcp/start-servicenow-mcp.d.ts +7 -0
  133. package/dist/mcp/start-servicenow-mcp.d.ts.map +1 -0
  134. package/dist/mcp/start-servicenow-mcp.js +64 -0
  135. package/dist/mcp/start-servicenow-mcp.js.map +1 -0
  136. package/dist/mcp/test-simple-mcp.d.ts +6 -0
  137. package/dist/mcp/test-simple-mcp.d.ts.map +1 -0
  138. package/dist/mcp/test-simple-mcp.js +64 -0
  139. package/dist/mcp/test-simple-mcp.js.map +1 -0
  140. package/dist/orchestrator/flow-composer.d.ts +269 -0
  141. package/dist/orchestrator/flow-composer.d.ts.map +1 -0
  142. package/dist/orchestrator/flow-composer.js +2221 -0
  143. package/dist/orchestrator/flow-composer.js.map +1 -0
  144. package/dist/orchestrator/flow-pattern-templates.d.ts +260 -0
  145. package/dist/orchestrator/flow-pattern-templates.d.ts.map +1 -0
  146. package/dist/orchestrator/flow-pattern-templates.js +906 -0
  147. package/dist/orchestrator/flow-pattern-templates.js.map +1 -0
  148. package/dist/orchestrator/flow-subflow-decision-engine.d.ts +202 -0
  149. package/dist/orchestrator/flow-subflow-decision-engine.d.ts.map +1 -0
  150. package/dist/orchestrator/flow-subflow-decision-engine.js +769 -0
  151. package/dist/orchestrator/flow-subflow-decision-engine.js.map +1 -0
  152. package/dist/orchestrator/flow-validation-engine.d.ts +145 -0
  153. package/dist/orchestrator/flow-validation-engine.d.ts.map +1 -0
  154. package/dist/orchestrator/flow-validation-engine.js +663 -0
  155. package/dist/orchestrator/flow-validation-engine.js.map +1 -0
  156. package/dist/orchestrator/snow-orchestrator.d.ts +49 -0
  157. package/dist/orchestrator/snow-orchestrator.d.ts.map +1 -0
  158. package/dist/orchestrator/snow-orchestrator.js +235 -0
  159. package/dist/orchestrator/snow-orchestrator.js.map +1 -0
  160. package/dist/orchestrator/subflow-creation-handler.d.ts +230 -0
  161. package/dist/orchestrator/subflow-creation-handler.d.ts.map +1 -0
  162. package/dist/orchestrator/subflow-creation-handler.js +791 -0
  163. package/dist/orchestrator/subflow-creation-handler.js.map +1 -0
  164. package/dist/strategies/global-scope-strategy.d.ts +123 -0
  165. package/dist/strategies/global-scope-strategy.d.ts.map +1 -0
  166. package/dist/strategies/global-scope-strategy.js +585 -0
  167. package/dist/strategies/global-scope-strategy.js.map +1 -0
  168. package/dist/types/index.d.ts +138 -0
  169. package/dist/types/index.d.ts.map +1 -0
  170. package/dist/types/index.js +4 -0
  171. package/dist/types/index.js.map +1 -0
  172. package/dist/types/servicenow.types.d.ts +260 -0
  173. package/dist/types/servicenow.types.d.ts.map +1 -0
  174. package/dist/types/servicenow.types.js +3 -0
  175. package/dist/types/servicenow.types.js.map +1 -0
  176. package/dist/types/snow-flow.types.d.ts +114 -0
  177. package/dist/types/snow-flow.types.d.ts.map +1 -0
  178. package/dist/types/snow-flow.types.js +3 -0
  179. package/dist/types/snow-flow.types.js.map +1 -0
  180. package/dist/utils/action-type-cache.d.ts +66 -0
  181. package/dist/utils/action-type-cache.d.ts.map +1 -0
  182. package/dist/utils/action-type-cache.js +237 -0
  183. package/dist/utils/action-type-cache.js.map +1 -0
  184. package/dist/utils/agent-detector.d.ts +35 -0
  185. package/dist/utils/agent-detector.d.ts.map +1 -0
  186. package/dist/utils/agent-detector.js +353 -0
  187. package/dist/utils/agent-detector.js.map +1 -0
  188. package/dist/utils/flow-api-discovery.d.ts +151 -0
  189. package/dist/utils/flow-api-discovery.d.ts.map +1 -0
  190. package/dist/utils/flow-api-discovery.js +440 -0
  191. package/dist/utils/flow-api-discovery.js.map +1 -0
  192. package/dist/utils/flow-xml-generator.d.ts +41 -0
  193. package/dist/utils/flow-xml-generator.d.ts.map +1 -0
  194. package/dist/utils/flow-xml-generator.js +258 -0
  195. package/dist/utils/flow-xml-generator.js.map +1 -0
  196. package/dist/utils/logger.d.ts +13 -0
  197. package/dist/utils/logger.d.ts.map +1 -0
  198. package/dist/utils/logger.js +51 -0
  199. package/dist/utils/logger.js.map +1 -0
  200. package/dist/utils/mcp-auth-middleware.d.ts +58 -0
  201. package/dist/utils/mcp-auth-middleware.d.ts.map +1 -0
  202. package/dist/utils/mcp-auth-middleware.js +227 -0
  203. package/dist/utils/mcp-auth-middleware.js.map +1 -0
  204. package/dist/utils/mcp-config-manager.d.ts +126 -0
  205. package/dist/utils/mcp-config-manager.d.ts.map +1 -0
  206. package/dist/utils/mcp-config-manager.js +209 -0
  207. package/dist/utils/mcp-config-manager.js.map +1 -0
  208. package/dist/utils/mcp-server-manager.d.ts +91 -0
  209. package/dist/utils/mcp-server-manager.d.ts.map +1 -0
  210. package/dist/utils/mcp-server-manager.js +338 -0
  211. package/dist/utils/mcp-server-manager.js.map +1 -0
  212. package/dist/utils/scope-utils.d.ts +72 -0
  213. package/dist/utils/scope-utils.d.ts.map +1 -0
  214. package/dist/utils/scope-utils.js +386 -0
  215. package/dist/utils/scope-utils.js.map +1 -0
  216. package/dist/utils/servicenow-client.d.ts +233 -0
  217. package/dist/utils/servicenow-client.d.ts.map +1 -0
  218. package/dist/utils/servicenow-client.js +1465 -0
  219. package/dist/utils/servicenow-client.js.map +1 -0
  220. package/dist/utils/snow-oauth-old.d.ts +65 -0
  221. package/dist/utils/snow-oauth-old.d.ts.map +1 -0
  222. package/dist/utils/snow-oauth-old.js +345 -0
  223. package/dist/utils/snow-oauth-old.js.map +1 -0
  224. package/dist/utils/snow-oauth.d.ts +85 -0
  225. package/dist/utils/snow-oauth.d.ts.map +1 -0
  226. package/dist/utils/snow-oauth.js +512 -0
  227. package/dist/utils/snow-oauth.js.map +1 -0
  228. package/dist/utils/template-engine.d.ts +76 -0
  229. package/dist/utils/template-engine.d.ts.map +1 -0
  230. package/dist/utils/template-engine.js +391 -0
  231. package/dist/utils/template-engine.js.map +1 -0
  232. package/dist/version.d.ts +35 -0
  233. package/dist/version.d.ts.map +1 -0
  234. package/dist/version.js +72 -0
  235. package/dist/version.js.map +1 -0
  236. package/mcp-wrapper.sh +12 -0
  237. package/package.json +77 -0
  238. package/reports/swarm-auto-centralized-1752649029776.json +13 -0
  239. package/scripts/postinstall.js +30 -0
  240. package/scripts/setup-mcp.js +89 -0
@@ -0,0 +1,583 @@
1
+ "use strict";
2
+ /**
3
+ * Workflow Designer Agent for Flow Designer workflows
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WorkflowDesignerAgent = void 0;
7
+ const base_agent_js_1 = require("../core/base-agent.js");
8
+ class WorkflowDesignerAgent extends base_agent_js_1.BaseServiceNowAgent {
9
+ constructor(config) {
10
+ super('workflow-designer', servicenow_types_js_1.AgentType.WORKFLOW_DESIGNER, [
11
+ 'create_workflow',
12
+ 'add_trigger',
13
+ 'add_action',
14
+ 'add_condition',
15
+ 'validate_workflow',
16
+ 'generate_flow_json',
17
+ 'create_subflow'
18
+ ], config);
19
+ }
20
+ async execute(task) {
21
+ this.logger.info(`Executing workflow design task: ${task.description}`);
22
+ try {
23
+ switch (task.type) {
24
+ case 'create_workflow':
25
+ return await this.createWorkflow(task);
26
+ case 'add_workflow_components':
27
+ return await this.addWorkflowComponents(task);
28
+ case 'generate_flow_from_requirements':
29
+ return await this.generateFlowFromRequirements(task);
30
+ case 'optimize_workflow':
31
+ return await this.optimizeWorkflow(task);
32
+ default:
33
+ throw new Error(`Unknown task type: ${task.type}`);
34
+ }
35
+ }
36
+ catch (error) {
37
+ this.logger.error(`Workflow design task failed: ${error.message}`);
38
+ return {
39
+ taskId: task.id,
40
+ success: false,
41
+ error: error.message
42
+ };
43
+ }
44
+ }
45
+ async createWorkflow(task) {
46
+ const { name, description, triggers, initialActions } = task.payload;
47
+ const workflow = {
48
+ name,
49
+ description: description || `Automated workflow: ${name}`,
50
+ triggers: triggers || [this.createDefaultTrigger()],
51
+ actions: initialActions || [],
52
+ conditions: []
53
+ };
54
+ // Generate Flow Designer JSON
55
+ const flowJson = this.generateFlowDesignerJSON(workflow);
56
+ // Generate orchestration commands
57
+ const commands = [
58
+ this.generateCommand('Bash', 'create', {
59
+ command: `mkdir -p /Users/nielsvanderwerf/Projects/servicenow_multiagent/output/workflows/${this.sanitizeName(name)}`,
60
+ description: `Create workflow directory for ${name}`
61
+ }, 'Create workflow directory'),
62
+ this.generateCommand('Write', 'create', {
63
+ file_path: `/Users/nielsvanderwerf/Projects/servicenow_multiagent/output/workflows/${this.sanitizeName(name)}/flow.json`,
64
+ content: JSON.stringify(flowJson, null, 2)
65
+ }, `Create Flow Designer JSON for ${name}`),
66
+ this.generateCommand('Write', 'create', {
67
+ file_path: `/Users/nielsvanderwerf/Projects/servicenow_multiagent/output/workflows/${this.sanitizeName(name)}/README.md`,
68
+ content: this.generateWorkflowDocumentation(workflow)
69
+ }, `Create workflow documentation`)
70
+ ];
71
+ // Store workflow in memory
72
+ await this.storeInMemory(`workflows:${this.sanitizeName(name)}`, workflow);
73
+ return {
74
+ taskId: task.id,
75
+ success: true,
76
+ output: {
77
+ workflow,
78
+ flowJson
79
+ },
80
+ artifacts: [
81
+ this.createArtifact('flow_designer_workflow', name, flowJson, {
82
+ triggers: workflow.triggers.length,
83
+ actions: workflow.actions.length,
84
+ conditions: workflow.conditions?.length || 0
85
+ })
86
+ ],
87
+ commands
88
+ };
89
+ }
90
+ async addWorkflowComponents(task) {
91
+ const { workflowName, components } = task.payload;
92
+ // Retrieve existing workflow
93
+ const workflow = await this.retrieveFromMemory(`workflows:${this.sanitizeName(workflowName)}`);
94
+ if (!workflow) {
95
+ throw new Error(`Workflow ${workflowName} not found`);
96
+ }
97
+ // Add components
98
+ if (components.triggers) {
99
+ workflow.triggers.push(...components.triggers);
100
+ }
101
+ if (components.actions) {
102
+ workflow.actions.push(...components.actions.map((action) => this.createWorkflowAction(action)));
103
+ }
104
+ if (components.conditions) {
105
+ workflow.conditions = workflow.conditions || [];
106
+ workflow.conditions.push(...components.conditions.map((condition) => this.createWorkflowCondition(condition)));
107
+ }
108
+ // Update stored workflow
109
+ await this.storeInMemory(`workflows:${this.sanitizeName(workflowName)}`, workflow);
110
+ // Regenerate Flow Designer JSON
111
+ const flowJson = this.generateFlowDesignerJSON(workflow);
112
+ return {
113
+ taskId: task.id,
114
+ success: true,
115
+ output: {
116
+ workflow,
117
+ flowJson,
118
+ componentsAdded: {
119
+ triggers: components.triggers?.length || 0,
120
+ actions: components.actions?.length || 0,
121
+ conditions: components.conditions?.length || 0
122
+ }
123
+ },
124
+ artifacts: [
125
+ this.createArtifact('flow_designer_workflow', workflowName, flowJson)
126
+ ]
127
+ };
128
+ }
129
+ async generateFlowFromRequirements(task) {
130
+ const { requirements, name, businessProcess } = task.payload;
131
+ // Analyze requirements to determine workflow components
132
+ const analyzedFlow = this.analyzeRequirements(requirements, businessProcess);
133
+ // Create workflow based on analysis
134
+ const workflow = {
135
+ name: name || 'Generated Workflow',
136
+ description: `Automated workflow generated from requirements: ${requirements.substring(0, 100)}...`,
137
+ triggers: analyzedFlow.triggers,
138
+ actions: analyzedFlow.actions,
139
+ conditions: analyzedFlow.conditions
140
+ };
141
+ // Generate comprehensive workflow package
142
+ const flowJson = this.generateFlowDesignerJSON(workflow);
143
+ const testScenarios = this.generateTestScenarios(workflow);
144
+ const documentation = this.generateDetailedDocumentation(workflow, requirements);
145
+ const commands = [
146
+ // Create workflow directory structure
147
+ this.generateCommand('Bash', 'create', {
148
+ command: `mkdir -p /Users/nielsvanderwerf/Projects/servicenow_multiagent/output/workflows/${this.sanitizeName(workflow.name)}/{tests,docs,scripts}`,
149
+ description: 'Create workflow directory structure'
150
+ }, 'Create directories'),
151
+ // Main workflow file
152
+ this.generateCommand('Write', 'create', {
153
+ file_path: `/Users/nielsvanderwerf/Projects/servicenow_multiagent/output/workflows/${this.sanitizeName(workflow.name)}/flow.json`,
154
+ content: JSON.stringify(flowJson, null, 2)
155
+ }, 'Create Flow Designer JSON'),
156
+ // Test scenarios
157
+ this.generateCommand('Write', 'create', {
158
+ file_path: `/Users/nielsvanderwerf/Projects/servicenow_multiagent/output/workflows/${this.sanitizeName(workflow.name)}/tests/test-scenarios.json`,
159
+ content: JSON.stringify(testScenarios, null, 2)
160
+ }, 'Create test scenarios'),
161
+ // Documentation
162
+ this.generateCommand('Write', 'create', {
163
+ file_path: `/Users/nielsvanderwerf/Projects/servicenow_multiagent/output/workflows/${this.sanitizeName(workflow.name)}/docs/workflow-guide.md`,
164
+ content: documentation
165
+ }, 'Create workflow documentation')
166
+ ];
167
+ return {
168
+ taskId: task.id,
169
+ success: true,
170
+ output: {
171
+ workflow,
172
+ flowJson,
173
+ testScenarios,
174
+ analysis: analyzedFlow
175
+ },
176
+ artifacts: [
177
+ this.createArtifact('flow_designer_workflow', workflow.name, flowJson),
178
+ this.createArtifact('test_scenarios', 'test-scenarios.json', testScenarios),
179
+ this.createArtifact('documentation', 'workflow-guide.md', documentation)
180
+ ],
181
+ commands
182
+ };
183
+ }
184
+ async optimizeWorkflow(task) {
185
+ const { workflowName, optimizationGoals } = task.payload;
186
+ const workflow = await this.retrieveFromMemory(`workflows:${this.sanitizeName(workflowName)}`);
187
+ if (!workflow) {
188
+ throw new Error(`Workflow ${workflowName} not found`);
189
+ }
190
+ // Perform optimization
191
+ const optimizationResults = this.performOptimization(workflow, optimizationGoals);
192
+ // Apply optimizations
193
+ const optimizedWorkflow = this.applyOptimizations(workflow, optimizationResults);
194
+ // Update stored workflow
195
+ await this.storeInMemory(`workflows:${this.sanitizeName(workflowName)}`, optimizedWorkflow);
196
+ return {
197
+ taskId: task.id,
198
+ success: true,
199
+ output: {
200
+ originalWorkflow: workflow,
201
+ optimizedWorkflow,
202
+ optimizationResults
203
+ },
204
+ artifacts: [
205
+ this.createArtifact('optimization_report', 'optimization-report.json', optimizationResults)
206
+ ]
207
+ };
208
+ }
209
+ // Helper methods
210
+ createDefaultTrigger() {
211
+ return {
212
+ type: 'record',
213
+ table: 'incident',
214
+ conditions: 'active=true^priority=1'
215
+ };
216
+ }
217
+ createWorkflowAction(actionSpec) {
218
+ return {
219
+ name: actionSpec.name || 'Unnamed Action',
220
+ type: actionSpec.type || 'script',
221
+ configuration: actionSpec.configuration || {}
222
+ };
223
+ }
224
+ createWorkflowCondition(conditionSpec) {
225
+ return {
226
+ name: conditionSpec.name || 'Unnamed Condition',
227
+ type: conditionSpec.type || 'if',
228
+ expression: conditionSpec.expression || 'true'
229
+ };
230
+ }
231
+ generateFlowDesignerJSON(workflow) {
232
+ return {
233
+ name: workflow.name,
234
+ description: workflow.description,
235
+ definition: {
236
+ version: '1.0',
237
+ triggers: workflow.triggers.map((trigger, index) => ({
238
+ id: `trigger_${index}`,
239
+ type: trigger.type,
240
+ configuration: this.getTriggerConfiguration(trigger)
241
+ })),
242
+ stages: this.generateStages(workflow),
243
+ connections: this.generateConnections(workflow)
244
+ },
245
+ metadata: {
246
+ created: new Date().toISOString(),
247
+ createdBy: this.name,
248
+ version: '1.0.0'
249
+ }
250
+ };
251
+ }
252
+ getTriggerConfiguration(trigger) {
253
+ const config = {
254
+ type: trigger.type
255
+ };
256
+ switch (trigger.type) {
257
+ case 'record':
258
+ config.table = trigger.table;
259
+ config.conditions = trigger.conditions;
260
+ break;
261
+ case 'schedule':
262
+ config.schedule = trigger.schedule;
263
+ break;
264
+ case 'rest':
265
+ config.endpoint = '/api/workflow/trigger';
266
+ break;
267
+ }
268
+ return config;
269
+ }
270
+ generateStages(workflow) {
271
+ const stages = [];
272
+ // Add action stages
273
+ workflow.actions.forEach((action, index) => {
274
+ stages.push({
275
+ id: `action_${index}`,
276
+ type: 'action',
277
+ name: action.name,
278
+ action: action.type,
279
+ configuration: action.configuration
280
+ });
281
+ });
282
+ // Add condition stages
283
+ if (workflow.conditions) {
284
+ workflow.conditions.forEach((condition, index) => {
285
+ stages.push({
286
+ id: `condition_${index}`,
287
+ type: 'condition',
288
+ name: condition.name,
289
+ conditionType: condition.type,
290
+ expression: condition.expression
291
+ });
292
+ });
293
+ }
294
+ return stages;
295
+ }
296
+ generateConnections(workflow) {
297
+ const connections = [];
298
+ // Connect triggers to first action
299
+ if (workflow.actions.length > 0) {
300
+ workflow.triggers.forEach((trigger, triggerIndex) => {
301
+ connections.push({
302
+ from: `trigger_${triggerIndex}`,
303
+ to: 'action_0'
304
+ });
305
+ });
306
+ }
307
+ // Connect actions sequentially (simplified)
308
+ for (let i = 0; i < workflow.actions.length - 1; i++) {
309
+ connections.push({
310
+ from: `action_${i}`,
311
+ to: `action_${i + 1}`
312
+ });
313
+ }
314
+ return connections;
315
+ }
316
+ generateWorkflowDocumentation(workflow) {
317
+ return `# ${workflow.name}
318
+
319
+ ## Description
320
+ ${workflow.description}
321
+
322
+ ## Triggers
323
+ ${workflow.triggers.map(trigger => `- **${trigger.type}**: ${this.describeTrigger(trigger)}`).join('\n')}
324
+
325
+ ## Actions
326
+ ${workflow.actions.map((action, index) => `${index + 1}. **${action.name}** (${action.type})`).join('\n')}
327
+
328
+ ## Conditions
329
+ ${workflow.conditions?.map(condition => `- **${condition.name}**: ${condition.expression}`).join('\n') || 'No conditions defined'}
330
+
331
+ ## Usage
332
+ This workflow is automatically triggered based on the configured triggers and will execute the defined actions in sequence.
333
+
334
+ ## Testing
335
+ Test scenarios are available in the tests directory.
336
+
337
+ Generated by ServiceNow Multi-Agent Framework
338
+ `;
339
+ }
340
+ describeTrigger(trigger) {
341
+ switch (trigger.type) {
342
+ case 'record':
343
+ return `When records in ${trigger.table} match: ${trigger.conditions}`;
344
+ case 'schedule':
345
+ return `Scheduled: ${trigger.schedule}`;
346
+ case 'rest':
347
+ return 'REST API trigger';
348
+ case 'inbound_email':
349
+ return 'Inbound email trigger';
350
+ default:
351
+ return 'Custom trigger';
352
+ }
353
+ }
354
+ analyzeRequirements(requirements, businessProcess) {
355
+ // Simplified requirement analysis
356
+ const triggers = [];
357
+ const actions = [];
358
+ const conditions = [];
359
+ // Detect trigger patterns
360
+ if (requirements.toLowerCase().includes('when incident')) {
361
+ triggers.push({
362
+ type: 'record',
363
+ table: 'incident',
364
+ conditions: this.extractConditions(requirements, 'incident')
365
+ });
366
+ }
367
+ if (requirements.toLowerCase().includes('scheduled') || requirements.toLowerCase().includes('daily')) {
368
+ triggers.push({
369
+ type: 'schedule',
370
+ schedule: '0 0 * * *' // Daily at midnight
371
+ });
372
+ }
373
+ // Detect action patterns
374
+ if (requirements.toLowerCase().includes('create')) {
375
+ actions.push({
376
+ name: 'Create Record',
377
+ type: 'create_record',
378
+ configuration: {
379
+ table: this.extractTable(requirements, 'create')
380
+ }
381
+ });
382
+ }
383
+ if (requirements.toLowerCase().includes('send email') || requirements.toLowerCase().includes('notify')) {
384
+ actions.push({
385
+ name: 'Send Notification',
386
+ type: 'send_email',
387
+ configuration: {
388
+ template: 'notification_template'
389
+ }
390
+ });
391
+ }
392
+ if (requirements.toLowerCase().includes('update')) {
393
+ actions.push({
394
+ name: 'Update Record',
395
+ type: 'update_record',
396
+ configuration: {
397
+ table: this.extractTable(requirements, 'update')
398
+ }
399
+ });
400
+ }
401
+ // Add script action for complex logic
402
+ if (businessProcess && businessProcess.length > 50) {
403
+ actions.push({
404
+ name: 'Execute Business Logic',
405
+ type: 'script',
406
+ configuration: {
407
+ script: '// Business logic implementation'
408
+ }
409
+ });
410
+ }
411
+ // Detect condition patterns
412
+ if (requirements.toLowerCase().includes('if') || requirements.toLowerCase().includes('when')) {
413
+ conditions.push({
414
+ name: 'Check Condition',
415
+ type: 'if',
416
+ expression: 'current.state == "new"'
417
+ });
418
+ }
419
+ return { triggers, actions, conditions };
420
+ }
421
+ extractConditions(text, table) {
422
+ // Simplified condition extraction
423
+ if (text.toLowerCase().includes('high priority')) {
424
+ return 'priority=1';
425
+ }
426
+ if (text.toLowerCase().includes('new')) {
427
+ return 'state=1';
428
+ }
429
+ return 'active=true';
430
+ }
431
+ extractTable(text, action) {
432
+ // Simplified table extraction
433
+ const tables = ['incident', 'change_request', 'problem', 'task'];
434
+ for (const table of tables) {
435
+ if (text.toLowerCase().includes(table)) {
436
+ return table;
437
+ }
438
+ }
439
+ return 'task';
440
+ }
441
+ generateTestScenarios(workflow) {
442
+ return {
443
+ scenarios: [
444
+ {
445
+ name: 'Happy Path',
446
+ description: 'Test successful workflow execution',
447
+ inputs: {
448
+ trigger: workflow.triggers[0],
449
+ data: {
450
+ priority: '1',
451
+ state: 'new'
452
+ }
453
+ },
454
+ expectedOutcomes: workflow.actions.map(action => ({
455
+ action: action.name,
456
+ result: 'success'
457
+ }))
458
+ },
459
+ {
460
+ name: 'Error Handling',
461
+ description: 'Test workflow error handling',
462
+ inputs: {
463
+ trigger: workflow.triggers[0],
464
+ data: {
465
+ invalid: true
466
+ }
467
+ },
468
+ expectedOutcomes: [
469
+ {
470
+ action: 'Error Handler',
471
+ result: 'handled'
472
+ }
473
+ ]
474
+ }
475
+ ]
476
+ };
477
+ }
478
+ generateDetailedDocumentation(workflow, requirements) {
479
+ return `# ${workflow.name} - Detailed Documentation
480
+
481
+ ## Overview
482
+ ${workflow.description}
483
+
484
+ ## Business Requirements
485
+ ${requirements}
486
+
487
+ ## Workflow Components
488
+
489
+ ### Triggers
490
+ ${workflow.triggers.map((trigger, index) => `
491
+ #### Trigger ${index + 1}: ${trigger.type}
492
+ ${this.describeTrigger(trigger)}
493
+ - Configuration: ${JSON.stringify(this.getTriggerConfiguration(trigger), null, 2)}
494
+ `).join('\n')}
495
+
496
+ ### Actions
497
+ ${workflow.actions.map((action, index) => `
498
+ #### Action ${index + 1}: ${action.name}
499
+ - Type: ${action.type}
500
+ - Configuration: ${JSON.stringify(action.configuration, null, 2)}
501
+ `).join('\n')}
502
+
503
+ ### Conditions
504
+ ${workflow.conditions?.map((condition, index) => `
505
+ #### Condition ${index + 1}: ${condition.name}
506
+ - Type: ${condition.type}
507
+ - Expression: ${condition.expression}
508
+ `).join('\n') || 'No conditions defined'}
509
+
510
+ ## Implementation Notes
511
+ - This workflow was automatically generated based on the provided requirements
512
+ - Review and adjust the configuration as needed
513
+ - Test thoroughly before deploying to production
514
+
515
+ ## Testing
516
+ See test-scenarios.json for comprehensive test cases
517
+
518
+ Generated on: ${new Date().toISOString()}
519
+ Generated by: ServiceNow Multi-Agent Framework
520
+ `;
521
+ }
522
+ performOptimization(workflow, goals) {
523
+ const results = {
524
+ optimizations: [],
525
+ improvements: []
526
+ };
527
+ // Check for optimization opportunities
528
+ if (goals.includes('performance')) {
529
+ // Check for sequential actions that could be parallelized
530
+ if (workflow.actions.length > 3) {
531
+ results.optimizations.push({
532
+ type: 'parallelization',
533
+ description: 'Some actions can be executed in parallel',
534
+ impact: 'high'
535
+ });
536
+ }
537
+ }
538
+ if (goals.includes('reliability')) {
539
+ // Add error handling
540
+ results.optimizations.push({
541
+ type: 'error_handling',
542
+ description: 'Add error handling stages',
543
+ impact: 'medium'
544
+ });
545
+ }
546
+ if (goals.includes('maintainability')) {
547
+ // Suggest subflow extraction
548
+ if (workflow.actions.length > 5) {
549
+ results.optimizations.push({
550
+ type: 'subflow_extraction',
551
+ description: 'Extract common patterns into subflows',
552
+ impact: 'medium'
553
+ });
554
+ }
555
+ }
556
+ return results;
557
+ }
558
+ applyOptimizations(workflow, optimizationResults) {
559
+ const optimized = { ...workflow };
560
+ // Apply optimizations based on results
561
+ optimizationResults.optimizations.forEach((opt) => {
562
+ switch (opt.type) {
563
+ case 'error_handling':
564
+ // Add error handling action
565
+ optimized.actions.push({
566
+ name: 'Error Handler',
567
+ type: 'script',
568
+ configuration: {
569
+ script: 'gs.error("Workflow error: " + error.message);'
570
+ }
571
+ });
572
+ break;
573
+ // Add more optimization applications as needed
574
+ }
575
+ });
576
+ return optimized;
577
+ }
578
+ sanitizeName(name) {
579
+ return name.toLowerCase().replace(/[^a-z0-9]/g, '_');
580
+ }
581
+ }
582
+ exports.WorkflowDesignerAgent = WorkflowDesignerAgent;
583
+ //# sourceMappingURL=workflow-designer.agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-designer.agent.js","sourceRoot":"","sources":["../../src/agents/workflow-designer.agent.ts"],"names":[],"mappings":"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"}