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,594 @@
1
+ "use strict";
2
+ /**
3
+ * Comprehensive Error Handling and Rollback System
4
+ * Advanced error handling with automatic rollback capabilities
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FlowErrorHandler = exports.ErrorSeverity = exports.ErrorType = void 0;
8
+ const logger_js_1 = require("../utils/logger.js");
9
+ var ErrorType;
10
+ (function (ErrorType) {
11
+ ErrorType["VALIDATION_ERROR"] = "validation_error";
12
+ ErrorType["API_ERROR"] = "api_error";
13
+ ErrorType["AUTHENTICATION_ERROR"] = "authentication_error";
14
+ ErrorType["AUTHORIZATION_ERROR"] = "authorization_error";
15
+ ErrorType["NETWORK_ERROR"] = "network_error";
16
+ ErrorType["TIMEOUT_ERROR"] = "timeout_error";
17
+ ErrorType["RATE_LIMIT_ERROR"] = "rate_limit_error";
18
+ ErrorType["RESOURCE_NOT_FOUND"] = "resource_not_found";
19
+ ErrorType["CONFLICT_ERROR"] = "conflict_error";
20
+ ErrorType["SERVICE_UNAVAILABLE"] = "service_unavailable";
21
+ ErrorType["FLOW_LOGIC_ERROR"] = "flow_logic_error";
22
+ ErrorType["ROLLBACK_ERROR"] = "rollback_error";
23
+ ErrorType["UNKNOWN_ERROR"] = "unknown_error";
24
+ })(ErrorType || (exports.ErrorType = ErrorType = {}));
25
+ var ErrorSeverity;
26
+ (function (ErrorSeverity) {
27
+ ErrorSeverity["CRITICAL"] = "critical";
28
+ ErrorSeverity["HIGH"] = "high";
29
+ ErrorSeverity["MEDIUM"] = "medium";
30
+ ErrorSeverity["LOW"] = "low";
31
+ })(ErrorSeverity || (exports.ErrorSeverity = ErrorSeverity = {}));
32
+ class FlowErrorHandler {
33
+ constructor(client) {
34
+ this.transactions = new Map();
35
+ this.errorHistory = [];
36
+ this.maxErrorHistory = 1000;
37
+ this.retryDelays = [1000, 2000, 5000, 10000, 30000]; // Exponential backoff
38
+ this.client = client;
39
+ this.logger = new logger_js_1.Logger('FlowErrorHandler');
40
+ }
41
+ /**
42
+ * Handle an error with automatic recovery
43
+ */
44
+ async handleError(error, context) {
45
+ const flowError = this.classifyError(error, context);
46
+ this.errorHistory.push(flowError);
47
+ // Limit error history size
48
+ if (this.errorHistory.length > this.maxErrorHistory) {
49
+ this.errorHistory.shift();
50
+ }
51
+ this.logger.error('Flow error occurred', {
52
+ type: flowError.type,
53
+ severity: flowError.severity,
54
+ message: flowError.message,
55
+ context: flowError.context
56
+ });
57
+ // Determine recovery strategy
58
+ const recoveryActions = this.determineRecoveryActions(flowError);
59
+ const result = {
60
+ success: false,
61
+ recovered: false,
62
+ actions_taken: []
63
+ };
64
+ // Execute recovery actions
65
+ for (const action of recoveryActions) {
66
+ try {
67
+ const actionResult = await this.executeRecoveryAction(action, flowError);
68
+ result.actions_taken.push(action);
69
+ if (actionResult.success) {
70
+ result.success = true;
71
+ result.recovered = true;
72
+ result.final_state = actionResult.final_state;
73
+ break;
74
+ }
75
+ }
76
+ catch (recoveryError) {
77
+ this.logger.error('Recovery action failed', {
78
+ action: action.type,
79
+ error: recoveryError
80
+ });
81
+ }
82
+ }
83
+ // Generate user-friendly message
84
+ result.user_message = this.generateUserMessage(flowError, result);
85
+ result.technical_details = this.generateTechnicalDetails(flowError, result);
86
+ return result;
87
+ }
88
+ /**
89
+ * Start a new transaction
90
+ */
91
+ startTransaction(flowId) {
92
+ const transactionId = this.generateTransactionId();
93
+ const transaction = {
94
+ id: transactionId,
95
+ flow_id: flowId,
96
+ operations: [],
97
+ status: 'active',
98
+ start_time: new Date(),
99
+ checkpoints: []
100
+ };
101
+ this.transactions.set(transactionId, transaction);
102
+ this.logger.info('Transaction started', { transactionId, flowId });
103
+ return transactionId;
104
+ }
105
+ /**
106
+ * Add operation to transaction
107
+ */
108
+ addOperation(transactionId, operation) {
109
+ const transaction = this.transactions.get(transactionId);
110
+ if (!transaction) {
111
+ throw new Error(`Transaction ${transactionId} not found`);
112
+ }
113
+ const rollbackOperation = {
114
+ ...operation,
115
+ id: this.generateOperationId(),
116
+ timestamp: new Date()
117
+ };
118
+ transaction.operations.push(rollbackOperation);
119
+ this.logger.debug('Operation added to transaction', { transactionId, operationId: rollbackOperation.id });
120
+ }
121
+ /**
122
+ * Create checkpoint in transaction
123
+ */
124
+ createCheckpoint(transactionId, description) {
125
+ const transaction = this.transactions.get(transactionId);
126
+ if (!transaction) {
127
+ throw new Error(`Transaction ${transactionId} not found`);
128
+ }
129
+ const checkpoint = {
130
+ id: this.generateCheckpointId(),
131
+ timestamp: new Date(),
132
+ operation_count: transaction.operations.length,
133
+ state_snapshot: this.captureStateSnapshot(transaction),
134
+ description
135
+ };
136
+ transaction.checkpoints.push(checkpoint);
137
+ this.logger.info('Checkpoint created', { transactionId, checkpointId: checkpoint.id, description });
138
+ return checkpoint.id;
139
+ }
140
+ /**
141
+ * Commit transaction
142
+ */
143
+ async commitTransaction(transactionId) {
144
+ const transaction = this.transactions.get(transactionId);
145
+ if (!transaction) {
146
+ throw new Error(`Transaction ${transactionId} not found`);
147
+ }
148
+ transaction.status = 'committed';
149
+ transaction.end_time = new Date();
150
+ this.logger.info('Transaction committed', {
151
+ transactionId,
152
+ operationCount: transaction.operations.length,
153
+ duration: transaction.end_time.getTime() - transaction.start_time.getTime()
154
+ });
155
+ // Clean up transaction after some time
156
+ setTimeout(() => {
157
+ this.transactions.delete(transactionId);
158
+ }, 300000); // 5 minutes
159
+ }
160
+ /**
161
+ * Rollback transaction
162
+ */
163
+ async rollbackTransaction(transactionId, toCheckpoint) {
164
+ const transaction = this.transactions.get(transactionId);
165
+ if (!transaction) {
166
+ throw new Error(`Transaction ${transactionId} not found`);
167
+ }
168
+ this.logger.info('Starting transaction rollback', { transactionId, toCheckpoint });
169
+ let operationsToRollback = transaction.operations.slice();
170
+ // If rolling back to a checkpoint, only rollback operations after that checkpoint
171
+ if (toCheckpoint) {
172
+ const checkpoint = transaction.checkpoints.find(cp => cp.id === toCheckpoint);
173
+ if (checkpoint) {
174
+ operationsToRollback = transaction.operations.slice(checkpoint.operation_count);
175
+ }
176
+ }
177
+ // Rollback operations in reverse order
178
+ operationsToRollback.reverse();
179
+ const rollbackErrors = [];
180
+ for (const operation of operationsToRollback) {
181
+ try {
182
+ await this.rollbackOperation(operation);
183
+ this.logger.debug('Operation rolled back', { operationId: operation.id });
184
+ }
185
+ catch (error) {
186
+ rollbackErrors.push(error instanceof Error ? error : new Error(String(error)));
187
+ this.logger.error('Rollback operation failed', { operationId: operation.id, error });
188
+ }
189
+ }
190
+ transaction.status = rollbackErrors.length > 0 ? 'failed' : 'rolled_back';
191
+ transaction.end_time = new Date();
192
+ if (rollbackErrors.length > 0) {
193
+ throw new Error(`Rollback failed with ${rollbackErrors.length} errors: ${rollbackErrors.map(e => e.message).join(', ')}`);
194
+ }
195
+ this.logger.info('Transaction rollback completed', { transactionId });
196
+ }
197
+ /**
198
+ * Rollback a single operation
199
+ */
200
+ async rollbackOperation(operation) {
201
+ switch (operation.type) {
202
+ case 'create':
203
+ // Delete the created record
204
+ if (operation.record_id) {
205
+ await this.client.deleteRecord(operation.table, operation.record_id);
206
+ }
207
+ break;
208
+ case 'update':
209
+ // Restore original data
210
+ if (operation.record_id && operation.original_data) {
211
+ await this.client.updateRecord(operation.table, operation.record_id, operation.original_data);
212
+ }
213
+ break;
214
+ case 'delete':
215
+ // Recreate the deleted record
216
+ if (operation.original_data) {
217
+ await this.client.createRecord(operation.table, operation.original_data);
218
+ }
219
+ break;
220
+ }
221
+ // Execute custom rollback function if provided
222
+ if (operation.rollback_function) {
223
+ await operation.rollback_function();
224
+ }
225
+ }
226
+ /**
227
+ * Classify error type and severity
228
+ */
229
+ classifyError(error, context) {
230
+ let type = ErrorType.UNKNOWN_ERROR;
231
+ let severity = ErrorSeverity.MEDIUM;
232
+ let recoverable = true;
233
+ let suggestedActions = [];
234
+ const errorMessage = error.message.toLowerCase();
235
+ // Classify by error message patterns
236
+ if (errorMessage.includes('validation') || errorMessage.includes('invalid')) {
237
+ type = ErrorType.VALIDATION_ERROR;
238
+ severity = ErrorSeverity.HIGH;
239
+ suggestedActions = [
240
+ { type: 'fallback', description: 'Use fallback values', priority: 'high' },
241
+ { type: 'notify', description: 'Notify user of validation issues', priority: 'medium' }
242
+ ];
243
+ }
244
+ else if (errorMessage.includes('unauthorized') || errorMessage.includes('authentication')) {
245
+ type = ErrorType.AUTHENTICATION_ERROR;
246
+ severity = ErrorSeverity.CRITICAL;
247
+ recoverable = false;
248
+ suggestedActions = [
249
+ { type: 'notify', description: 'Request user to re-authenticate', priority: 'high' }
250
+ ];
251
+ }
252
+ else if (errorMessage.includes('forbidden') || errorMessage.includes('access denied')) {
253
+ type = ErrorType.AUTHORIZATION_ERROR;
254
+ severity = ErrorSeverity.HIGH;
255
+ recoverable = false;
256
+ suggestedActions = [
257
+ { type: 'notify', description: 'Inform user of insufficient permissions', priority: 'high' }
258
+ ];
259
+ }
260
+ else if (errorMessage.includes('network') || errorMessage.includes('connection')) {
261
+ type = ErrorType.NETWORK_ERROR;
262
+ severity = ErrorSeverity.MEDIUM;
263
+ suggestedActions = [
264
+ { type: 'retry', description: 'Retry with exponential backoff', priority: 'high' },
265
+ { type: 'fallback', description: 'Use cached data if available', priority: 'medium' }
266
+ ];
267
+ }
268
+ else if (errorMessage.includes('timeout')) {
269
+ type = ErrorType.TIMEOUT_ERROR;
270
+ severity = ErrorSeverity.MEDIUM;
271
+ suggestedActions = [
272
+ { type: 'retry', description: 'Retry with increased timeout', priority: 'high' }
273
+ ];
274
+ }
275
+ else if (errorMessage.includes('rate limit') || errorMessage.includes('too many requests')) {
276
+ type = ErrorType.RATE_LIMIT_ERROR;
277
+ severity = ErrorSeverity.LOW;
278
+ suggestedActions = [
279
+ { type: 'retry', description: 'Retry after delay', priority: 'high', parameters: { delay: 60000 } }
280
+ ];
281
+ }
282
+ else if (errorMessage.includes('not found') || errorMessage.includes('404')) {
283
+ type = ErrorType.RESOURCE_NOT_FOUND;
284
+ severity = ErrorSeverity.HIGH;
285
+ suggestedActions = [
286
+ { type: 'fallback', description: 'Create missing resource', priority: 'high' },
287
+ { type: 'notify', description: 'Inform user of missing resource', priority: 'medium' }
288
+ ];
289
+ }
290
+ else if (errorMessage.includes('conflict') || errorMessage.includes('409')) {
291
+ type = ErrorType.CONFLICT_ERROR;
292
+ severity = ErrorSeverity.MEDIUM;
293
+ suggestedActions = [
294
+ { type: 'retry', description: 'Retry after resolving conflict', priority: 'high' },
295
+ { type: 'fallback', description: 'Use alternative approach', priority: 'medium' }
296
+ ];
297
+ }
298
+ else if (errorMessage.includes('service unavailable') || errorMessage.includes('503')) {
299
+ type = ErrorType.SERVICE_UNAVAILABLE;
300
+ severity = ErrorSeverity.HIGH;
301
+ suggestedActions = [
302
+ { type: 'retry', description: 'Retry after service recovery', priority: 'high' },
303
+ { type: 'notify', description: 'Inform user of service unavailability', priority: 'medium' }
304
+ ];
305
+ }
306
+ // Determine if rollback is needed
307
+ if (context.flow_id && ['create', 'update', 'delete'].includes(context.operation)) {
308
+ suggestedActions.unshift({
309
+ type: 'rollback',
310
+ description: 'Rollback partial changes',
311
+ priority: 'high'
312
+ });
313
+ }
314
+ return {
315
+ type,
316
+ severity,
317
+ message: error.message,
318
+ context,
319
+ original_error: error,
320
+ recoverable,
321
+ suggested_actions: suggestedActions,
322
+ retry_count: 0,
323
+ max_retries: this.getMaxRetries(type)
324
+ };
325
+ }
326
+ /**
327
+ * Determine recovery actions based on error
328
+ */
329
+ determineRecoveryActions(error) {
330
+ const actions = [];
331
+ // Sort suggested actions by priority
332
+ const sortedActions = error.suggested_actions.sort((a, b) => {
333
+ const priorityOrder = { high: 3, medium: 2, low: 1 };
334
+ return priorityOrder[b.priority] - priorityOrder[a.priority];
335
+ });
336
+ // Add retry logic for recoverable errors
337
+ if (error.recoverable && error.retry_count < error.max_retries) {
338
+ actions.push({
339
+ type: 'retry',
340
+ description: `Retry operation (attempt ${error.retry_count + 1}/${error.max_retries})`,
341
+ priority: 'high',
342
+ parameters: {
343
+ delay: this.retryDelays[Math.min(error.retry_count, this.retryDelays.length - 1)]
344
+ }
345
+ });
346
+ }
347
+ // Add suggested actions
348
+ actions.push(...sortedActions);
349
+ return actions;
350
+ }
351
+ /**
352
+ * Execute a recovery action
353
+ */
354
+ async executeRecoveryAction(action, error) {
355
+ switch (action.type) {
356
+ case 'retry':
357
+ return await this.executeRetry(action, error);
358
+ case 'rollback':
359
+ return await this.executeRollback(action, error);
360
+ case 'fallback':
361
+ return await this.executeFallback(action, error);
362
+ case 'skip':
363
+ return await this.executeSkip(action, error);
364
+ case 'notify':
365
+ return await this.executeNotify(action, error);
366
+ default:
367
+ return { success: false };
368
+ }
369
+ }
370
+ /**
371
+ * Execute retry action
372
+ */
373
+ async executeRetry(action, error) {
374
+ const delay = action.parameters?.delay || 1000;
375
+ this.logger.info('Executing retry', { delay, retryCount: error.retry_count });
376
+ // Wait before retry
377
+ await new Promise(resolve => setTimeout(resolve, delay));
378
+ try {
379
+ // Retry the original operation
380
+ const result = await this.retryOriginalOperation(error);
381
+ return { success: true, final_state: result };
382
+ }
383
+ catch (retryError) {
384
+ error.retry_count = (error.retry_count || 0) + 1;
385
+ return { success: false };
386
+ }
387
+ }
388
+ /**
389
+ * Execute rollback action
390
+ */
391
+ async executeRollback(action, error) {
392
+ if (!error.context.flow_id) {
393
+ return { success: false };
394
+ }
395
+ // Find transaction for this flow
396
+ const transaction = Array.from(this.transactions.values())
397
+ .find(t => t.flow_id === error.context.flow_id && t.status === 'active');
398
+ if (!transaction) {
399
+ return { success: false };
400
+ }
401
+ try {
402
+ await this.rollbackTransaction(transaction.id);
403
+ return { success: true, final_state: 'rolled_back' };
404
+ }
405
+ catch (rollbackError) {
406
+ return { success: false };
407
+ }
408
+ }
409
+ /**
410
+ * Execute fallback action
411
+ */
412
+ async executeFallback(action, error) {
413
+ // Implement fallback logic based on error type
414
+ switch (error.type) {
415
+ case ErrorType.RESOURCE_NOT_FOUND:
416
+ return await this.createMissingResource(error);
417
+ case ErrorType.VALIDATION_ERROR:
418
+ return await this.useFallbackValues(error);
419
+ case ErrorType.NETWORK_ERROR:
420
+ return await this.useCachedData(error);
421
+ default:
422
+ return { success: false };
423
+ }
424
+ }
425
+ /**
426
+ * Execute skip action
427
+ */
428
+ async executeSkip(action, error) {
429
+ this.logger.info('Skipping failed operation', { error: error.type });
430
+ return { success: true, final_state: 'skipped' };
431
+ }
432
+ /**
433
+ * Execute notify action
434
+ */
435
+ async executeNotify(action, error) {
436
+ // Create notification record
437
+ try {
438
+ await this.client.createRecord('sys_email', {
439
+ to: 'admin@company.com',
440
+ subject: `Flow Error: ${error.type}`,
441
+ body: `An error occurred in flow operation: ${error.message}`
442
+ });
443
+ return { success: true, final_state: 'notified' };
444
+ }
445
+ catch (notifyError) {
446
+ return { success: false };
447
+ }
448
+ }
449
+ /**
450
+ * Retry original operation
451
+ */
452
+ async retryOriginalOperation(error) {
453
+ // This would contain the logic to retry the original operation
454
+ // Implementation depends on the specific operation being retried
455
+ throw new Error('Retry logic not implemented for this operation');
456
+ }
457
+ /**
458
+ * Create missing resource
459
+ */
460
+ async createMissingResource(error) {
461
+ // Implementation depends on the specific resource type
462
+ return { success: false };
463
+ }
464
+ /**
465
+ * Use fallback values
466
+ */
467
+ async useFallbackValues(error) {
468
+ // Implementation depends on the specific validation error
469
+ return { success: false };
470
+ }
471
+ /**
472
+ * Use cached data
473
+ */
474
+ async useCachedData(error) {
475
+ // Implementation depends on the specific cached data available
476
+ return { success: false };
477
+ }
478
+ /**
479
+ * Generate user-friendly error message
480
+ */
481
+ generateUserMessage(error, result) {
482
+ if (result.recovered) {
483
+ return `The operation encountered an issue but was automatically recovered. ${error.message}`;
484
+ }
485
+ switch (error.type) {
486
+ case ErrorType.AUTHENTICATION_ERROR:
487
+ return 'Authentication failed. Please check your credentials and try again.';
488
+ case ErrorType.AUTHORIZATION_ERROR:
489
+ return 'You do not have permission to perform this operation.';
490
+ case ErrorType.VALIDATION_ERROR:
491
+ return 'The provided data is invalid. Please check your inputs and try again.';
492
+ case ErrorType.NETWORK_ERROR:
493
+ return 'Network connection failed. Please check your connection and try again.';
494
+ case ErrorType.RESOURCE_NOT_FOUND:
495
+ return 'The requested resource was not found. It may have been deleted or moved.';
496
+ default:
497
+ return `An error occurred: ${error.message}`;
498
+ }
499
+ }
500
+ /**
501
+ * Generate technical details
502
+ */
503
+ generateTechnicalDetails(error, result) {
504
+ const details = {
505
+ error_type: error.type,
506
+ severity: error.severity,
507
+ message: error.message,
508
+ context: error.context,
509
+ actions_taken: result.actions_taken.map(a => a.type),
510
+ recovered: result.recovered,
511
+ timestamp: new Date().toISOString()
512
+ };
513
+ return JSON.stringify(details, null, 2);
514
+ }
515
+ /**
516
+ * Get max retries for error type
517
+ */
518
+ getMaxRetries(errorType) {
519
+ switch (errorType) {
520
+ case ErrorType.NETWORK_ERROR:
521
+ case ErrorType.TIMEOUT_ERROR:
522
+ return 3;
523
+ case ErrorType.RATE_LIMIT_ERROR:
524
+ return 2;
525
+ case ErrorType.SERVICE_UNAVAILABLE:
526
+ return 5;
527
+ default:
528
+ return 1;
529
+ }
530
+ }
531
+ /**
532
+ * Capture state snapshot
533
+ */
534
+ captureStateSnapshot(transaction) {
535
+ return {
536
+ transaction_id: transaction.id,
537
+ flow_id: transaction.flow_id,
538
+ operation_count: transaction.operations.length,
539
+ status: transaction.status,
540
+ timestamp: new Date().toISOString()
541
+ };
542
+ }
543
+ /**
544
+ * Generate transaction ID
545
+ */
546
+ generateTransactionId() {
547
+ return `tx_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
548
+ }
549
+ /**
550
+ * Generate operation ID
551
+ */
552
+ generateOperationId() {
553
+ return `op_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
554
+ }
555
+ /**
556
+ * Generate checkpoint ID
557
+ */
558
+ generateCheckpointId() {
559
+ return `cp_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
560
+ }
561
+ /**
562
+ * Get error statistics
563
+ */
564
+ getErrorStatistics() {
565
+ const stats = {
566
+ total_errors: this.errorHistory.length,
567
+ errors_by_type: {},
568
+ errors_by_severity: {},
569
+ recovery_rate: 0
570
+ };
571
+ let recoveredCount = 0;
572
+ for (const error of this.errorHistory) {
573
+ // Count by type
574
+ stats.errors_by_type[error.type] = (stats.errors_by_type[error.type] || 0) + 1;
575
+ // Count by severity
576
+ stats.errors_by_severity[error.severity] = (stats.errors_by_severity[error.severity] || 0) + 1;
577
+ // Count recovered errors
578
+ if (error.recoverable) {
579
+ recoveredCount++;
580
+ }
581
+ }
582
+ stats.recovery_rate = stats.total_errors > 0 ? recoveredCount / stats.total_errors : 0;
583
+ return stats;
584
+ }
585
+ /**
586
+ * Get active transactions
587
+ */
588
+ getActiveTransactions() {
589
+ return Array.from(this.transactions.values())
590
+ .filter(t => t.status === 'active');
591
+ }
592
+ }
593
+ exports.FlowErrorHandler = FlowErrorHandler;
594
+ //# sourceMappingURL=error-handling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handling.js","sourceRoot":"","sources":["../../src/api/error-handling.ts"],"names":[],"mappings":"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"}