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,555 @@
1
+ "use strict";
2
+ /**
3
+ * ServiceNow Flow Designer API Integration
4
+ * Complete API integration architecture for flow creation and management
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FlowDesignerAPI = void 0;
8
+ const flow_api_discovery_js_1 = require("../utils/flow-api-discovery.js");
9
+ const logger_js_1 = require("../utils/logger.js");
10
+ class FlowDesignerAPI {
11
+ constructor(client) {
12
+ this.rollbackStack = [];
13
+ this.client = client;
14
+ this.discovery = new flow_api_discovery_js_1.FlowAPIDiscovery(client);
15
+ this.logger = new logger_js_1.Logger('FlowDesignerAPI');
16
+ }
17
+ /**
18
+ * Create a complete flow with all components
19
+ */
20
+ async createFlow(flowDefinition) {
21
+ this.logger.info('Creating flow with API integration', { name: flowDefinition.name });
22
+ // Clear rollback stack
23
+ this.rollbackStack = [];
24
+ try {
25
+ // 1. Validate flow definition
26
+ const validation = await this.validateFlowDefinition(flowDefinition);
27
+ if (!validation.valid) {
28
+ return {
29
+ success: false,
30
+ validation_errors: validation.errors,
31
+ warnings: validation.warnings,
32
+ created_components: this.getEmptyComponents()
33
+ };
34
+ }
35
+ // 2. Create main flow record
36
+ const flowResult = await this.createMainFlow(flowDefinition);
37
+ if (!flowResult.success) {
38
+ return {
39
+ success: false,
40
+ validation_errors: [flowResult.error || 'Failed to create flow'],
41
+ warnings: [],
42
+ created_components: this.getEmptyComponents()
43
+ };
44
+ }
45
+ const flowId = flowResult.data.sys_id;
46
+ const createdComponents = this.getEmptyComponents();
47
+ createdComponents.flow = true;
48
+ // 3. Create trigger
49
+ if (flowDefinition.trigger) {
50
+ const triggerResult = await this.createFlowTrigger(flowId, flowDefinition.trigger);
51
+ if (triggerResult.success) {
52
+ createdComponents.trigger = true;
53
+ }
54
+ else {
55
+ this.logger.warn('Failed to create trigger:', triggerResult.error);
56
+ }
57
+ }
58
+ // 4. Create variables
59
+ for (const variable of flowDefinition.variables) {
60
+ const varResult = await this.createFlowVariable(flowId, variable);
61
+ if (varResult.success) {
62
+ createdComponents.variables++;
63
+ }
64
+ }
65
+ // 5. Create actions
66
+ for (const action of flowDefinition.actions) {
67
+ const actionResult = await this.createFlowAction(flowId, action);
68
+ if (actionResult.success) {
69
+ createdComponents.actions++;
70
+ }
71
+ }
72
+ // 6. Create connections
73
+ for (const connection of flowDefinition.connections) {
74
+ const connResult = await this.createFlowConnection(flowId, connection);
75
+ if (connResult.success) {
76
+ createdComponents.connections++;
77
+ }
78
+ }
79
+ // 7. Create error handling
80
+ for (const errorHandler of flowDefinition.error_handling) {
81
+ await this.createFlowErrorHandling(flowId, errorHandler);
82
+ }
83
+ const credentials = await this.client.credentials;
84
+ const flowUrl = `https://${credentials?.instance}/flow-designer/flow/${flowId}`;
85
+ return {
86
+ success: true,
87
+ flow_id: flowId,
88
+ flow_url: flowUrl,
89
+ warnings: validation.warnings,
90
+ created_components: createdComponents
91
+ };
92
+ }
93
+ catch (error) {
94
+ this.logger.error('Flow creation failed:', error);
95
+ // Attempt rollback
96
+ await this.rollbackChanges();
97
+ return {
98
+ success: false,
99
+ validation_errors: [error instanceof Error ? error.message : String(error)],
100
+ warnings: [],
101
+ created_components: this.getEmptyComponents()
102
+ };
103
+ }
104
+ }
105
+ /**
106
+ * Validate flow definition before creation
107
+ */
108
+ async validateFlowDefinition(flowDefinition) {
109
+ const errors = [];
110
+ const warnings = [];
111
+ const suggestions = [];
112
+ // Basic validation
113
+ if (!flowDefinition.name || !flowDefinition.name.trim()) {
114
+ errors.push('Flow name is required');
115
+ }
116
+ if (!flowDefinition.table || !flowDefinition.table.trim()) {
117
+ errors.push('Target table is required');
118
+ }
119
+ if (!flowDefinition.trigger) {
120
+ errors.push('Flow trigger is required');
121
+ }
122
+ if (flowDefinition.actions.length === 0) {
123
+ warnings.push('Flow has no actions defined');
124
+ }
125
+ // Validate trigger
126
+ if (flowDefinition.trigger) {
127
+ const triggerTypes = await this.discovery.discoverTriggerTypes(flowDefinition.table, flowDefinition.trigger.type);
128
+ if (triggerTypes.length === 0) {
129
+ errors.push(`No trigger type found for '${flowDefinition.trigger.type}' on table '${flowDefinition.table}'`);
130
+ }
131
+ else if (triggerTypes.length > 1) {
132
+ suggestions.push(`Multiple trigger types found for '${flowDefinition.trigger.type}'. Using: ${triggerTypes[0].name}`);
133
+ }
134
+ }
135
+ // Validate actions
136
+ for (const action of flowDefinition.actions) {
137
+ if (!action.action_type_id) {
138
+ const actionTypes = await this.discovery.discoverActionTypes(action.type);
139
+ if (actionTypes.exact_matches.length === 0 && actionTypes.partial_matches.length === 0) {
140
+ errors.push(`No action type found for '${action.type}'`);
141
+ }
142
+ else if (actionTypes.confidence_score < 0.5) {
143
+ warnings.push(`Low confidence match for action '${action.type}'`);
144
+ }
145
+ }
146
+ else {
147
+ // Validate action inputs
148
+ const validation = await this.discovery.validateActionInputs(action.action_type_id, action.inputs);
149
+ if (!validation.valid) {
150
+ errors.push(...validation.errors.map(e => `Action '${action.name}': ${e}`));
151
+ }
152
+ warnings.push(...validation.warnings.map(w => `Action '${action.name}': ${w}`));
153
+ }
154
+ }
155
+ // Validate connections
156
+ const actionIds = new Set(flowDefinition.actions.map(a => a.name));
157
+ for (const connection of flowDefinition.connections) {
158
+ if (!actionIds.has(connection.from_step) && connection.from_step !== 'trigger') {
159
+ errors.push(`Connection from_step '${connection.from_step}' does not exist`);
160
+ }
161
+ if (!actionIds.has(connection.to_step) && connection.to_step !== 'end') {
162
+ errors.push(`Connection to_step '${connection.to_step}' does not exist`);
163
+ }
164
+ }
165
+ return {
166
+ valid: errors.length === 0,
167
+ errors,
168
+ warnings,
169
+ suggestions
170
+ };
171
+ }
172
+ /**
173
+ * Create main flow record
174
+ */
175
+ async createMainFlow(flowDefinition) {
176
+ const flowData = {
177
+ name: flowDefinition.name,
178
+ internal_name: flowDefinition.internal_name,
179
+ description: flowDefinition.description,
180
+ active: flowDefinition.active,
181
+ category: flowDefinition.category,
182
+ run_as: flowDefinition.run_as,
183
+ sys_class_name: 'sys_hub_flow',
184
+ type: 'flow',
185
+ status: 'published',
186
+ access: 'public'
187
+ };
188
+ const result = await this.client.createRecord('sys_hub_flow', flowData);
189
+ if (result.success) {
190
+ this.addToRollbackStack({
191
+ type: 'delete_record',
192
+ table: 'sys_hub_flow',
193
+ sys_id: result.data.sys_id
194
+ });
195
+ }
196
+ return result;
197
+ }
198
+ /**
199
+ * Create flow trigger
200
+ */
201
+ async createFlowTrigger(flowId, triggerDef) {
202
+ // Discover trigger type
203
+ const triggerTypes = await this.discovery.discoverTriggerTypes(triggerDef.table, triggerDef.type);
204
+ if (triggerTypes.length === 0) {
205
+ throw new Error(`No trigger type found for '${triggerDef.type}' on table '${triggerDef.table}'`);
206
+ }
207
+ const triggerType = triggerTypes[0];
208
+ const triggerData = {
209
+ flow: flowId,
210
+ trigger_type: triggerType.sys_id,
211
+ table_name: triggerDef.table,
212
+ condition: triggerDef.condition || '',
213
+ active: triggerDef.active,
214
+ order: triggerDef.order,
215
+ inputs: JSON.stringify(triggerDef.inputs)
216
+ };
217
+ const result = await this.client.createRecord('sys_hub_trigger_instance', triggerData);
218
+ if (result.success) {
219
+ this.addToRollbackStack({
220
+ type: 'delete_record',
221
+ table: 'sys_hub_trigger_instance',
222
+ sys_id: result.data.sys_id
223
+ });
224
+ }
225
+ return result;
226
+ }
227
+ /**
228
+ * Create flow action
229
+ */
230
+ async createFlowAction(flowId, actionDef) {
231
+ let actionTypeId = actionDef.action_type_id;
232
+ // Discover action type if not provided
233
+ if (!actionTypeId) {
234
+ const actionTypes = await this.discovery.discoverActionTypes(actionDef.type);
235
+ if (actionTypes.exact_matches.length > 0) {
236
+ actionTypeId = actionTypes.exact_matches[0].sys_id;
237
+ }
238
+ else if (actionTypes.partial_matches.length > 0) {
239
+ actionTypeId = actionTypes.partial_matches[0].sys_id;
240
+ }
241
+ else {
242
+ throw new Error(`No action type found for '${actionDef.type}'`);
243
+ }
244
+ }
245
+ const actionData = {
246
+ flow: flowId,
247
+ action_name: actionDef.name,
248
+ action_type: actionTypeId,
249
+ order: actionDef.order,
250
+ active: actionDef.active,
251
+ inputs: JSON.stringify(actionDef.inputs),
252
+ outputs: JSON.stringify(actionDef.outputs),
253
+ on_error: JSON.stringify(actionDef.on_error)
254
+ };
255
+ const result = await this.client.createRecord('sys_hub_action_instance', actionData);
256
+ if (result.success) {
257
+ this.addToRollbackStack({
258
+ type: 'delete_record',
259
+ table: 'sys_hub_action_instance',
260
+ sys_id: result.data.sys_id
261
+ });
262
+ }
263
+ return result;
264
+ }
265
+ /**
266
+ * Create flow variable
267
+ */
268
+ async createFlowVariable(flowId, variableDef) {
269
+ const variableData = {
270
+ flow: flowId,
271
+ name: variableDef.name,
272
+ type: variableDef.type,
273
+ default_value: variableDef.default_value,
274
+ description: variableDef.description,
275
+ scope: variableDef.scope
276
+ };
277
+ const result = await this.client.createRecord('sys_hub_flow_variable', variableData);
278
+ if (result.success) {
279
+ this.addToRollbackStack({
280
+ type: 'delete_record',
281
+ table: 'sys_hub_flow_variable',
282
+ sys_id: result.data.sys_id
283
+ });
284
+ }
285
+ return result;
286
+ }
287
+ /**
288
+ * Create flow connection
289
+ */
290
+ async createFlowConnection(flowId, connectionDef) {
291
+ const connectionData = {
292
+ flow: flowId,
293
+ from_step: connectionDef.from_step,
294
+ to_step: connectionDef.to_step,
295
+ condition: connectionDef.condition,
296
+ label: connectionDef.label
297
+ };
298
+ const result = await this.client.createRecord('sys_hub_flow_logic', connectionData);
299
+ if (result.success) {
300
+ this.addToRollbackStack({
301
+ type: 'delete_record',
302
+ table: 'sys_hub_flow_logic',
303
+ sys_id: result.data.sys_id
304
+ });
305
+ }
306
+ return result;
307
+ }
308
+ /**
309
+ * Create flow error handling
310
+ */
311
+ async createFlowErrorHandling(flowId, errorDef) {
312
+ const errorData = {
313
+ flow: flowId,
314
+ step: errorDef.step,
315
+ error_type: errorDef.error_type,
316
+ action: JSON.stringify(errorDef.action),
317
+ retry_count: errorDef.retry_count,
318
+ retry_delay: errorDef.retry_delay
319
+ };
320
+ const result = await this.client.createRecord('sys_hub_flow_error_handling', errorData);
321
+ if (result.success) {
322
+ this.addToRollbackStack({
323
+ type: 'delete_record',
324
+ table: 'sys_hub_flow_error_handling',
325
+ sys_id: result.data.sys_id
326
+ });
327
+ }
328
+ return result;
329
+ }
330
+ /**
331
+ * Test flow execution
332
+ */
333
+ async testFlow(flowId, testData) {
334
+ try {
335
+ const testResult = await this.client.createRecord('sys_hub_flow_test', {
336
+ flow: flowId,
337
+ test_data: JSON.stringify(testData),
338
+ execute: true
339
+ });
340
+ if (testResult.success) {
341
+ return {
342
+ success: true,
343
+ execution_id: testResult.data.sys_id,
344
+ results: testResult.data.results
345
+ };
346
+ }
347
+ else {
348
+ return {
349
+ success: false,
350
+ errors: [testResult.error || 'Test execution failed']
351
+ };
352
+ }
353
+ }
354
+ catch (error) {
355
+ return {
356
+ success: false,
357
+ errors: [error instanceof Error ? error.message : String(error)]
358
+ };
359
+ }
360
+ }
361
+ /**
362
+ * Get flow execution history
363
+ */
364
+ async getFlowExecutionHistory(flowId, limit = 50) {
365
+ try {
366
+ const result = await this.client.getRecords('sys_hub_flow_execution', {
367
+ sysparm_query: `flow=${flowId}`,
368
+ sysparm_orderby: 'sys_created_on^DESC',
369
+ sysparm_limit: limit
370
+ });
371
+ return {
372
+ success: result.success,
373
+ executions: result.data,
374
+ error: result.error
375
+ };
376
+ }
377
+ catch (error) {
378
+ return {
379
+ success: false,
380
+ error: error instanceof Error ? error.message : String(error)
381
+ };
382
+ }
383
+ }
384
+ /**
385
+ * Update flow status
386
+ */
387
+ async updateFlowStatus(flowId, active) {
388
+ try {
389
+ const result = await this.client.updateRecord('sys_hub_flow', flowId, {
390
+ active: active
391
+ });
392
+ return {
393
+ success: result.success,
394
+ error: result.error
395
+ };
396
+ }
397
+ catch (error) {
398
+ return {
399
+ success: false,
400
+ error: error instanceof Error ? error.message : String(error)
401
+ };
402
+ }
403
+ }
404
+ /**
405
+ * Clone existing flow
406
+ */
407
+ async cloneFlow(sourceFlowId, newName) {
408
+ try {
409
+ // Get source flow details
410
+ const sourceFlow = await this.client.getRecord('sys_hub_flow', sourceFlowId);
411
+ if (!sourceFlow) {
412
+ throw new Error('Source flow not found');
413
+ }
414
+ // Create new flow definition based on source
415
+ const flowDefinition = {
416
+ name: newName,
417
+ internal_name: this.sanitizeInternalName(newName),
418
+ description: `Clone of ${sourceFlow.name}`,
419
+ table: sourceFlow.table || 'task',
420
+ active: false, // Start inactive
421
+ category: sourceFlow.category || 'custom',
422
+ run_as: sourceFlow.run_as || 'user_who_triggers',
423
+ trigger: {
424
+ type: 'record_created',
425
+ table: sourceFlow.table || 'task',
426
+ active: true,
427
+ order: 0,
428
+ inputs: {}
429
+ },
430
+ actions: [],
431
+ variables: [],
432
+ connections: [],
433
+ error_handling: []
434
+ };
435
+ // Get source flow components
436
+ const [triggers, actions, variables, connections] = await Promise.all([
437
+ this.client.getRecords('sys_hub_trigger_instance', {
438
+ sysparm_query: `flow=${sourceFlowId}`
439
+ }),
440
+ this.client.getRecords('sys_hub_action_instance', {
441
+ sysparm_query: `flow=${sourceFlowId}`
442
+ }),
443
+ this.client.getRecords('sys_hub_flow_variable', {
444
+ sysparm_query: `flow=${sourceFlowId}`
445
+ }),
446
+ this.client.getRecords('sys_hub_flow_logic', {
447
+ sysparm_query: `flow=${sourceFlowId}`
448
+ })
449
+ ]);
450
+ // Copy components to new flow definition
451
+ if (triggers.success && triggers.data.length > 0) {
452
+ const trigger = triggers.data[0];
453
+ flowDefinition.trigger = {
454
+ type: trigger.trigger_type,
455
+ table: trigger.table_name,
456
+ condition: trigger.condition,
457
+ active: trigger.active,
458
+ order: trigger.order,
459
+ inputs: JSON.parse(trigger.inputs || '{}')
460
+ };
461
+ }
462
+ if (actions.success && actions.data) {
463
+ flowDefinition.actions = actions.data.map((action) => ({
464
+ name: action.action_name,
465
+ type: action.action_type,
466
+ action_type_id: action.action_type,
467
+ order: action.order,
468
+ active: action.active,
469
+ inputs: JSON.parse(action.inputs || '{}'),
470
+ outputs: JSON.parse(action.outputs || '{}'),
471
+ on_error: JSON.parse(action.on_error || '{"type": "stop"}')
472
+ }));
473
+ }
474
+ if (variables.success && variables.data) {
475
+ flowDefinition.variables = variables.data.map((variable) => ({
476
+ name: variable.name,
477
+ type: variable.type,
478
+ default_value: variable.default_value,
479
+ description: variable.description,
480
+ scope: variable.scope
481
+ }));
482
+ }
483
+ if (connections.success && connections.data) {
484
+ flowDefinition.connections = connections.data.map((connection) => ({
485
+ from_step: connection.from_step,
486
+ to_step: connection.to_step,
487
+ condition: connection.condition,
488
+ label: connection.label
489
+ }));
490
+ }
491
+ // Create the cloned flow
492
+ return await this.createFlow(flowDefinition);
493
+ }
494
+ catch (error) {
495
+ return {
496
+ success: false,
497
+ validation_errors: [error instanceof Error ? error.message : String(error)],
498
+ warnings: [],
499
+ created_components: this.getEmptyComponents()
500
+ };
501
+ }
502
+ }
503
+ /**
504
+ * Add action to rollback stack
505
+ */
506
+ addToRollbackStack(action) {
507
+ this.rollbackStack.push(action);
508
+ }
509
+ /**
510
+ * Rollback all changes
511
+ */
512
+ async rollbackChanges() {
513
+ this.logger.warn('Rolling back flow creation changes...');
514
+ // Rollback in reverse order
515
+ for (const action of this.rollbackStack.reverse()) {
516
+ try {
517
+ switch (action.type) {
518
+ case 'delete_record':
519
+ await this.client.deleteRecord(action.table, action.sys_id);
520
+ break;
521
+ }
522
+ }
523
+ catch (error) {
524
+ this.logger.error('Rollback action failed:', error);
525
+ }
526
+ }
527
+ this.rollbackStack = [];
528
+ }
529
+ /**
530
+ * Get empty components structure
531
+ */
532
+ getEmptyComponents() {
533
+ return {
534
+ flow: false,
535
+ trigger: false,
536
+ actions: 0,
537
+ variables: 0,
538
+ connections: 0
539
+ };
540
+ }
541
+ /**
542
+ * Sanitize internal name
543
+ */
544
+ sanitizeInternalName(name) {
545
+ return name
546
+ .toLowerCase()
547
+ .replace(/[^a-z0-9_\s]/g, '')
548
+ .replace(/\s+/g, '_')
549
+ .replace(/_+/g, '_')
550
+ .replace(/^_|_$/g, '')
551
+ .substring(0, 80);
552
+ }
553
+ }
554
+ exports.FlowDesignerAPI = FlowDesignerAPI;
555
+ //# sourceMappingURL=flow-designer-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-designer-api.js","sourceRoot":"","sources":["../../src/api/flow-designer-api.ts"],"names":[],"mappings":"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"}