@orbytautomation/engine 0.2.3 → 0.3.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.
- package/README.md +1 -1
- package/dist/core/EngineLogger.d.ts +34 -2
- package/dist/core/EngineLogger.d.ts.map +1 -1
- package/dist/core/EngineLogger.js +44 -3
- package/dist/core/EngineLogger.js.map +1 -1
- package/dist/errors/ErrorCodes.d.ts +205 -6
- package/dist/errors/ErrorCodes.d.ts.map +1 -1
- package/dist/errors/ErrorCodes.js +398 -5
- package/dist/errors/ErrorCodes.js.map +1 -1
- package/dist/errors/ErrorDebugger.d.ts +98 -0
- package/dist/errors/ErrorDebugger.d.ts.map +1 -0
- package/dist/errors/ErrorDebugger.js +283 -0
- package/dist/errors/ErrorDebugger.js.map +1 -0
- package/dist/errors/ErrorDetector.d.ts +148 -0
- package/dist/errors/ErrorDetector.d.ts.map +1 -0
- package/dist/errors/ErrorDetector.js +358 -0
- package/dist/errors/ErrorDetector.js.map +1 -0
- package/dist/errors/ErrorFormatter.d.ts +92 -3
- package/dist/errors/ErrorFormatter.d.ts.map +1 -1
- package/dist/errors/ErrorFormatter.js +220 -4
- package/dist/errors/ErrorFormatter.js.map +1 -1
- package/dist/errors/ErrorHandler.d.ts +259 -0
- package/dist/errors/ErrorHandler.d.ts.map +1 -0
- package/dist/errors/ErrorHandler.js +378 -0
- package/dist/errors/ErrorHandler.js.map +1 -0
- package/dist/errors/FieldRegistry.d.ts +39 -0
- package/dist/errors/FieldRegistry.d.ts.map +1 -1
- package/dist/errors/FieldRegistry.js +172 -74
- package/dist/errors/FieldRegistry.js.map +1 -1
- package/dist/errors/OrbytError.d.ts +85 -3
- package/dist/errors/OrbytError.d.ts.map +1 -1
- package/dist/errors/OrbytError.js +151 -4
- package/dist/errors/OrbytError.js.map +1 -1
- package/dist/errors/SchedulerError.d.ts +93 -1
- package/dist/errors/SchedulerError.d.ts.map +1 -1
- package/dist/errors/SchedulerError.js +145 -1
- package/dist/errors/SchedulerError.js.map +1 -1
- package/dist/errors/SecurityErrors.d.ts +94 -12
- package/dist/errors/SecurityErrors.d.ts.map +1 -1
- package/dist/errors/SecurityErrors.js +162 -18
- package/dist/errors/SecurityErrors.js.map +1 -1
- package/dist/errors/StepError.d.ts +111 -1
- package/dist/errors/StepError.d.ts.map +1 -1
- package/dist/errors/StepError.js +182 -1
- package/dist/errors/StepError.js.map +1 -1
- package/dist/errors/WorkflowError.d.ts +139 -2
- package/dist/errors/WorkflowError.d.ts.map +1 -1
- package/dist/errors/WorkflowError.js +264 -22
- package/dist/errors/WorkflowError.js.map +1 -1
- package/dist/errors/index.d.ts +5 -1
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +7 -4
- package/dist/errors/index.js.map +1 -1
- package/dist/loader/WorkflowLoader.d.ts +83 -21
- package/dist/loader/WorkflowLoader.d.ts.map +1 -1
- package/dist/loader/WorkflowLoader.js +169 -55
- package/dist/loader/WorkflowLoader.js.map +1 -1
- package/dist/parser/SchemaValidator.d.ts.map +1 -1
- package/dist/parser/SchemaValidator.js +2 -1
- package/dist/parser/SchemaValidator.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,21 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Orbyt Error Codes
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Structured error codes for the Orbyt workflow execution engine.
|
|
5
|
+
* These codes are separate from ecosystem exit codes (process-level).
|
|
6
|
+
*
|
|
7
|
+
* ARCHITECTURE:
|
|
8
|
+
* ============
|
|
9
|
+
* - Error Codes (ORB-XX-NNN): Structured diagnostic codes for detailed error identification
|
|
10
|
+
* - Exit Codes (100-509): Process-level codes from @dev-ecosystem/core for shell scripts
|
|
11
|
+
*
|
|
12
|
+
* TWO-LAYER SYSTEM:
|
|
13
|
+
* ================
|
|
14
|
+
* 1. Exit Codes (@dev-ecosystem/core): Process termination codes for the whole ecosystem
|
|
15
|
+
* - Used by CLI, API, SDK to determine process exit status
|
|
16
|
+
* - Example: ExitCodes.INVALID_SCHEMA (103) for schema validation failures
|
|
17
|
+
*
|
|
18
|
+
* 2. Error Codes (This file): Detailed diagnostic codes specific to Orbyt
|
|
19
|
+
* - Used internally by engine for precise error identification
|
|
20
|
+
* - Maps to exit codes for process termination
|
|
21
|
+
* - Example: ORB-S-001 (unknown field) → ExitCodes.INVALID_SCHEMA
|
|
22
|
+
*
|
|
5
23
|
* Format: ORB-[Category]-[Number]
|
|
6
24
|
*
|
|
7
25
|
* Categories:
|
|
8
|
-
* - S: Schema/Structure errors
|
|
9
|
-
* - V: Validation/Logic errors
|
|
10
|
-
* - E: Execution errors
|
|
11
|
-
* - R: Runtime errors
|
|
26
|
+
* - S: Schema/Structure errors (YAML syntax, field validation)
|
|
27
|
+
* - V: Validation/Logic errors (duplicate IDs, circular deps)
|
|
28
|
+
* - E: Execution errors (step failures, timeouts)
|
|
29
|
+
* - R: Runtime errors (file not found, permissions)
|
|
30
|
+
*
|
|
31
|
+
* ADDING NEW ERRORS:
|
|
32
|
+
* =================
|
|
33
|
+
* 1. Add error code enum value below
|
|
34
|
+
* 2. Add description in getErrorDescription()
|
|
35
|
+
* 3. Add exit code mapping in getExitCodeForError()
|
|
36
|
+
* 4. Add to appropriate error class (WorkflowError, StepError, etc.)
|
|
12
37
|
*
|
|
13
38
|
* @module errors
|
|
14
39
|
*/
|
|
40
|
+
import { ExitCodes } from '@dev-ecosystem/core';
|
|
15
41
|
export var OrbytErrorCode;
|
|
16
42
|
(function (OrbytErrorCode) {
|
|
17
43
|
// ============================================================================
|
|
18
44
|
// SCHEMA ERRORS (S) - Structure problems
|
|
45
|
+
// Exit Code: ExitCodes.INVALID_SCHEMA (103)
|
|
19
46
|
// ============================================================================
|
|
20
47
|
/** Unknown field in workflow definition */
|
|
21
48
|
OrbytErrorCode["SCHEMA_UNKNOWN_FIELD"] = "ORB-S-001";
|
|
@@ -29,8 +56,11 @@ export var OrbytErrorCode;
|
|
|
29
56
|
OrbytErrorCode["SCHEMA_PARSE_ERROR"] = "ORB-S-005";
|
|
30
57
|
/** Invalid field format/pattern */
|
|
31
58
|
OrbytErrorCode["SCHEMA_INVALID_FORMAT"] = "ORB-S-006";
|
|
59
|
+
/** Reserved field detected (security) */
|
|
60
|
+
OrbytErrorCode["SCHEMA_RESERVED_FIELD"] = "ORB-S-007";
|
|
32
61
|
// ============================================================================
|
|
33
62
|
// VALIDATION ERRORS (V) - Logic problems
|
|
63
|
+
// Exit Code: ExitCodes.VALIDATION_FAILED (105)
|
|
34
64
|
// ============================================================================
|
|
35
65
|
/** Duplicate step ID */
|
|
36
66
|
OrbytErrorCode["VALIDATION_DUPLICATE_ID"] = "ORB-V-001";
|
|
@@ -48,8 +78,13 @@ export var OrbytErrorCode;
|
|
|
48
78
|
OrbytErrorCode["VALIDATION_MISSING_INPUT"] = "ORB-V-007";
|
|
49
79
|
/** Invalid adapter/action */
|
|
50
80
|
OrbytErrorCode["VALIDATION_UNKNOWN_ADAPTER"] = "ORB-V-008";
|
|
81
|
+
/** Workflow has no steps */
|
|
82
|
+
OrbytErrorCode["VALIDATION_EMPTY_WORKFLOW"] = "ORB-V-009";
|
|
83
|
+
/** Invalid condition expression syntax */
|
|
84
|
+
OrbytErrorCode["VALIDATION_INVALID_CONDITION"] = "ORB-V-010";
|
|
51
85
|
// ============================================================================
|
|
52
86
|
// EXECUTION ERRORS (E) - Runtime failures
|
|
87
|
+
// Exit Code: ExitCodes.WORKFLOW_FAILED (300), ExitCodes.STEP_FAILED (301)
|
|
53
88
|
// ============================================================================
|
|
54
89
|
/** Step execution failed */
|
|
55
90
|
OrbytErrorCode["EXECUTION_STEP_FAILED"] = "ORB-E-001";
|
|
@@ -59,8 +94,13 @@ export var OrbytErrorCode;
|
|
|
59
94
|
OrbytErrorCode["EXECUTION_ADAPTER_ERROR"] = "ORB-E-003";
|
|
60
95
|
/** Workflow cancelled */
|
|
61
96
|
OrbytErrorCode["EXECUTION_CANCELLED"] = "ORB-E-004";
|
|
97
|
+
/** Step dependency failed */
|
|
98
|
+
OrbytErrorCode["EXECUTION_DEPENDENCY_FAILED"] = "ORB-E-005";
|
|
99
|
+
/** Conditional check failed */
|
|
100
|
+
OrbytErrorCode["EXECUTION_CONDITION_FAILED"] = "ORB-E-006";
|
|
62
101
|
// ============================================================================
|
|
63
102
|
// RUNTIME ERRORS (R) - System/Infrastructure
|
|
103
|
+
// Exit Code: ExitCodes.INTERNAL_ERROR (500), ExitCodes.FILESYSTEM_ERROR (506)
|
|
64
104
|
// ============================================================================
|
|
65
105
|
/** File not found */
|
|
66
106
|
OrbytErrorCode["RUNTIME_FILE_NOT_FOUND"] = "ORB-R-001";
|
|
@@ -68,18 +108,51 @@ export var OrbytErrorCode;
|
|
|
68
108
|
OrbytErrorCode["RUNTIME_PERMISSION_DENIED"] = "ORB-R-002";
|
|
69
109
|
/** Internal engine error */
|
|
70
110
|
OrbytErrorCode["RUNTIME_INTERNAL_ERROR"] = "ORB-R-003";
|
|
111
|
+
/** Adapter not registered */
|
|
112
|
+
OrbytErrorCode["RUNTIME_ADAPTER_NOT_FOUND"] = "ORB-R-004";
|
|
113
|
+
/** Resource exhausted */
|
|
114
|
+
OrbytErrorCode["RUNTIME_RESOURCE_EXHAUSTED"] = "ORB-R-005";
|
|
71
115
|
})(OrbytErrorCode || (OrbytErrorCode = {}));
|
|
72
116
|
/**
|
|
73
117
|
* Error severity levels
|
|
118
|
+
* Used for prioritizing and determining execution control
|
|
119
|
+
*
|
|
120
|
+
* EXECUTION CONTROL BEHAVIOR:
|
|
121
|
+
* - CRITICAL/FATAL: Stop entire workflow execution immediately
|
|
122
|
+
* - ERROR/HIGH: Stop entire workflow execution (default for errors)
|
|
123
|
+
* - MEDIUM: Stop current step, attempt to continue to next step
|
|
124
|
+
* - LOW: Log warning and continue current step
|
|
125
|
+
* - WARNING: Log warning message, continue execution
|
|
126
|
+
* - INFO: Log informational message, continue execution
|
|
74
127
|
*/
|
|
75
128
|
export var ErrorSeverity;
|
|
76
129
|
(function (ErrorSeverity) {
|
|
130
|
+
/** Critical error - stop entire workflow immediately (unrecoverable) */
|
|
131
|
+
ErrorSeverity["CRITICAL"] = "critical";
|
|
132
|
+
/** Fatal error - stop entire workflow (severe failure) */
|
|
133
|
+
ErrorSeverity["FATAL"] = "fatal";
|
|
134
|
+
/** High severity error - stop entire workflow */
|
|
77
135
|
ErrorSeverity["ERROR"] = "error";
|
|
136
|
+
/** Medium severity - stop current step, try to continue workflow */
|
|
137
|
+
ErrorSeverity["MEDIUM"] = "medium";
|
|
138
|
+
/** Low severity - log and continue current step */
|
|
139
|
+
ErrorSeverity["LOW"] = "low";
|
|
140
|
+
/** Warning - log warning message, continue execution */
|
|
78
141
|
ErrorSeverity["WARNING"] = "warning";
|
|
142
|
+
/** Informational message */
|
|
79
143
|
ErrorSeverity["INFO"] = "info";
|
|
80
144
|
})(ErrorSeverity || (ErrorSeverity = {}));
|
|
81
145
|
/**
|
|
82
146
|
* Get human-readable category name from error code
|
|
147
|
+
*
|
|
148
|
+
* @param code - Orbyt error code
|
|
149
|
+
* @returns Category name (e.g., "Schema Error")
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```typescript
|
|
153
|
+
* const category = getErrorCategory(OrbytErrorCode.SCHEMA_UNKNOWN_FIELD);
|
|
154
|
+
* // Returns: "Schema Error"
|
|
155
|
+
* ```
|
|
83
156
|
*/
|
|
84
157
|
export function getErrorCategory(code) {
|
|
85
158
|
if (code.startsWith('ORB-S-'))
|
|
@@ -92,4 +165,324 @@ export function getErrorCategory(code) {
|
|
|
92
165
|
return 'Runtime Error';
|
|
93
166
|
return 'Unknown Error';
|
|
94
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Get detailed description for an error code
|
|
170
|
+
* Helps users understand what went wrong
|
|
171
|
+
*
|
|
172
|
+
* @param code - Orbyt error code
|
|
173
|
+
* @returns Human-readable description
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* const desc = getErrorDescription(OrbytErrorCode.SCHEMA_UNKNOWN_FIELD);
|
|
178
|
+
* // Returns: "Workflow contains an unknown or misspelled field name"
|
|
179
|
+
* ```
|
|
180
|
+
*/
|
|
181
|
+
export function getErrorDescription(code) {
|
|
182
|
+
const descriptions = {
|
|
183
|
+
// Schema Errors
|
|
184
|
+
[OrbytErrorCode.SCHEMA_UNKNOWN_FIELD]: 'Workflow contains an unknown or misspelled field name. Check that all field names match the Orbyt schema.',
|
|
185
|
+
[OrbytErrorCode.SCHEMA_INVALID_TYPE]: 'Field has incorrect type (e.g., string instead of number). Review the expected type for this field.',
|
|
186
|
+
[OrbytErrorCode.SCHEMA_MISSING_FIELD]: 'Required field is missing from workflow definition. All required fields must be present.',
|
|
187
|
+
[OrbytErrorCode.SCHEMA_INVALID_ENUM]: 'Field value is not one of the allowed options. Check the valid values for this field.',
|
|
188
|
+
[OrbytErrorCode.SCHEMA_PARSE_ERROR]: 'YAML/JSON syntax error prevents parsing. Check for missing colons, incorrect indentation, or unmatched brackets.',
|
|
189
|
+
[OrbytErrorCode.SCHEMA_INVALID_FORMAT]: 'Field value does not match expected format or pattern (e.g., invalid ID format, malformed timeout).',
|
|
190
|
+
[OrbytErrorCode.SCHEMA_RESERVED_FIELD]: 'Workflow uses a reserved field that is controlled by the engine. Remove fields starting with "_" or other reserved names.',
|
|
191
|
+
// Validation Errors
|
|
192
|
+
[OrbytErrorCode.VALIDATION_DUPLICATE_ID]: 'Two or more steps have the same ID. Each step must have a unique identifier.',
|
|
193
|
+
[OrbytErrorCode.VALIDATION_UNKNOWN_STEP]: 'Step references another step that does not exist. Verify that all step references point to valid step IDs.',
|
|
194
|
+
[OrbytErrorCode.VALIDATION_CIRCULAR_DEPENDENCY]: 'Steps depend on each other in a circular way (A needs B, B needs A). Break the cycle.',
|
|
195
|
+
[OrbytErrorCode.VALIDATION_INVALID_ORDER]: 'Steps are not in valid execution order. Check the "needs" dependencies.',
|
|
196
|
+
[OrbytErrorCode.VALIDATION_FORWARD_REFERENCE]: 'Step references another step that executes later. Steps can only reference earlier steps.',
|
|
197
|
+
[OrbytErrorCode.VALIDATION_INVALID_VARIABLE]: 'Variable reference is invalid or undefined. Check variable syntax and availability.',
|
|
198
|
+
[OrbytErrorCode.VALIDATION_MISSING_INPUT]: 'Required input parameter is missing. Provide all required inputs.',
|
|
199
|
+
[OrbytErrorCode.VALIDATION_UNKNOWN_ADAPTER]: 'Adapter or action does not exist. Verify the "uses" field references a valid adapter.',
|
|
200
|
+
[OrbytErrorCode.VALIDATION_EMPTY_WORKFLOW]: 'Workflow has no steps defined. At least one step is required.',
|
|
201
|
+
[OrbytErrorCode.VALIDATION_INVALID_CONDITION]: 'Condition expression has invalid syntax. Check operators and variable references.',
|
|
202
|
+
// Execution Errors
|
|
203
|
+
[OrbytErrorCode.EXECUTION_STEP_FAILED]: 'Step execution failed during runtime. Check step configuration and adapter logs.',
|
|
204
|
+
[OrbytErrorCode.EXECUTION_TIMEOUT]: 'Step or workflow exceeded time limit. Consider increasing timeout or optimizing the step.',
|
|
205
|
+
[OrbytErrorCode.EXECUTION_ADAPTER_ERROR]: 'Adapter encountered an error during execution. Check adapter configuration and logs.',
|
|
206
|
+
[OrbytErrorCode.EXECUTION_CANCELLED]: 'Workflow was cancelled by user or system. Execution was interrupted intentionally.',
|
|
207
|
+
[OrbytErrorCode.EXECUTION_DEPENDENCY_FAILED]: 'Step could not run because a dependency failed. Fix the failing dependency first.',
|
|
208
|
+
[OrbytErrorCode.EXECUTION_CONDITION_FAILED]: 'Step condition evaluated to false. This is expected behavior when conditions are not met.',
|
|
209
|
+
// Runtime Errors
|
|
210
|
+
[OrbytErrorCode.RUNTIME_FILE_NOT_FOUND]: 'Required file or workflow does not exist at the specified path. Check file path and spelling.',
|
|
211
|
+
[OrbytErrorCode.RUNTIME_PERMISSION_DENIED]: 'Insufficient permissions to access resource. Check file permissions and user access rights.',
|
|
212
|
+
[OrbytErrorCode.RUNTIME_INTERNAL_ERROR]: 'Internal engine error occurred. This may indicate a bug - please report with details.',
|
|
213
|
+
[OrbytErrorCode.RUNTIME_ADAPTER_NOT_FOUND]: 'Adapter is not registered with the engine. Make sure the adapter is installed and loaded.',
|
|
214
|
+
[OrbytErrorCode.RUNTIME_RESOURCE_EXHAUSTED]: 'System resources exhausted (memory, CPU, disk). Reduce resource usage or increase limits.',
|
|
215
|
+
};
|
|
216
|
+
return descriptions[code] || 'Unknown error occurred';
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Map Orbyt error code to ecosystem exit code
|
|
220
|
+
* Determines which process exit code should be used
|
|
221
|
+
*
|
|
222
|
+
* @param code - Orbyt error code
|
|
223
|
+
* @returns Exit code from @dev-ecosystem/core
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```typescript
|
|
227
|
+
* const exitCode = getExitCodeForError(OrbytErrorCode.SCHEMA_UNKNOWN_FIELD);
|
|
228
|
+
* // Returns: ExitCodes.INVALID_SCHEMA (103)
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
export function getExitCodeForError(code) {
|
|
232
|
+
// Schema errors → INVALID_SCHEMA
|
|
233
|
+
if (code.startsWith('ORB-S-')) {
|
|
234
|
+
if (code === OrbytErrorCode.SCHEMA_PARSE_ERROR) {
|
|
235
|
+
return ExitCodes.INVALID_FORMAT;
|
|
236
|
+
}
|
|
237
|
+
if (code === OrbytErrorCode.SCHEMA_RESERVED_FIELD) {
|
|
238
|
+
return ExitCodes.SECURITY_VIOLATION;
|
|
239
|
+
}
|
|
240
|
+
return ExitCodes.INVALID_SCHEMA;
|
|
241
|
+
}
|
|
242
|
+
// Validation errors → VALIDATION_FAILED
|
|
243
|
+
if (code.startsWith('ORB-V-')) {
|
|
244
|
+
if (code === OrbytErrorCode.VALIDATION_CIRCULAR_DEPENDENCY) {
|
|
245
|
+
return ExitCodes.CIRCULAR_DEPENDENCY;
|
|
246
|
+
}
|
|
247
|
+
if (code === OrbytErrorCode.VALIDATION_MISSING_INPUT) {
|
|
248
|
+
return ExitCodes.MISSING_REQUIRED_INPUT;
|
|
249
|
+
}
|
|
250
|
+
return ExitCodes.VALIDATION_FAILED;
|
|
251
|
+
}
|
|
252
|
+
// Execution errors → specific execution codes
|
|
253
|
+
if (code.startsWith('ORB-E-')) {
|
|
254
|
+
if (code === OrbytErrorCode.EXECUTION_TIMEOUT) {
|
|
255
|
+
return ExitCodes.TIMEOUT;
|
|
256
|
+
}
|
|
257
|
+
if (code === OrbytErrorCode.EXECUTION_STEP_FAILED) {
|
|
258
|
+
return ExitCodes.STEP_FAILED;
|
|
259
|
+
}
|
|
260
|
+
if (code === OrbytErrorCode.EXECUTION_ADAPTER_ERROR) {
|
|
261
|
+
return ExitCodes.ADAPTER_FAILED;
|
|
262
|
+
}
|
|
263
|
+
if (code === OrbytErrorCode.EXECUTION_DEPENDENCY_FAILED) {
|
|
264
|
+
return ExitCodes.DEPENDENCY_FAILED;
|
|
265
|
+
}
|
|
266
|
+
return ExitCodes.WORKFLOW_FAILED;
|
|
267
|
+
}
|
|
268
|
+
// Runtime errors → system-level codes
|
|
269
|
+
if (code.startsWith('ORB-R-')) {
|
|
270
|
+
if (code === OrbytErrorCode.RUNTIME_FILE_NOT_FOUND) {
|
|
271
|
+
return ExitCodes.INVALID_FILE;
|
|
272
|
+
}
|
|
273
|
+
if (code === OrbytErrorCode.RUNTIME_PERMISSION_DENIED) {
|
|
274
|
+
return ExitCodes.PERMISSION_DENIED;
|
|
275
|
+
}
|
|
276
|
+
if (code === OrbytErrorCode.RUNTIME_ADAPTER_NOT_FOUND) {
|
|
277
|
+
return ExitCodes.MISSING_DEPENDENCY;
|
|
278
|
+
}
|
|
279
|
+
return ExitCodes.INTERNAL_ERROR;
|
|
280
|
+
}
|
|
281
|
+
return ExitCodes.INTERNAL_ERROR;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Check if an error code represents a user error (fixable by changing workflow)
|
|
285
|
+
* vs system error (infrastructure, permissions, etc.)
|
|
286
|
+
*
|
|
287
|
+
* User errors are problems with the workflow definition that the user can fix.
|
|
288
|
+
* System errors are infrastructure/runtime issues outside user control.
|
|
289
|
+
*
|
|
290
|
+
* @param code - Orbyt error code
|
|
291
|
+
* @returns True if error is user-fixable
|
|
292
|
+
*
|
|
293
|
+
* @example
|
|
294
|
+
* ```typescript
|
|
295
|
+
* if (isUserError(error.code)) {
|
|
296
|
+
* console.log('Fix your workflow definition');
|
|
297
|
+
* } else {
|
|
298
|
+
* console.log('Contact system administrator');
|
|
299
|
+
* }
|
|
300
|
+
* ```
|
|
301
|
+
*/
|
|
302
|
+
export function isUserError(code) {
|
|
303
|
+
// Schema and validation errors are always user-fixable
|
|
304
|
+
return code.startsWith('ORB-S-') || code.startsWith('ORB-V-');
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Check if an error code represents a retryable error
|
|
308
|
+
* Some errors (like timeouts, adapter failures) might succeed on retry.
|
|
309
|
+
* Others (like validation errors) will always fail.
|
|
310
|
+
*
|
|
311
|
+
* @param code - Orbyt error code
|
|
312
|
+
* @returns True if error might succeed on retry
|
|
313
|
+
*
|
|
314
|
+
* @example
|
|
315
|
+
* ```typescript
|
|
316
|
+
* if (isRetryable(error.code) && retryCount < maxRetries) {
|
|
317
|
+
* console.log('Retrying...');
|
|
318
|
+
* await retry();
|
|
319
|
+
* }
|
|
320
|
+
* ```
|
|
321
|
+
*/
|
|
322
|
+
export function isRetryable(code) {
|
|
323
|
+
// Only specific execution and runtime errors are retryable
|
|
324
|
+
const retryableErrors = [
|
|
325
|
+
OrbytErrorCode.EXECUTION_TIMEOUT,
|
|
326
|
+
OrbytErrorCode.EXECUTION_ADAPTER_ERROR,
|
|
327
|
+
OrbytErrorCode.RUNTIME_RESOURCE_EXHAUSTED,
|
|
328
|
+
];
|
|
329
|
+
return retryableErrors.includes(code);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Get suggested action for an error code
|
|
333
|
+
* Provides actionable guidance for users
|
|
334
|
+
*
|
|
335
|
+
* @param code - Orbyt error code
|
|
336
|
+
* @returns Suggested action to fix the error
|
|
337
|
+
*
|
|
338
|
+
* @example
|
|
339
|
+
* ```typescript
|
|
340
|
+
* const action = getSuggestedAction(OrbytErrorCode.SCHEMA_UNKNOWN_FIELD);
|
|
341
|
+
* console.log(action); // "Check field names against schema documentation"
|
|
342
|
+
* ```
|
|
343
|
+
*/
|
|
344
|
+
export function getSuggestedAction(code) {
|
|
345
|
+
const actions = {
|
|
346
|
+
// Schema Errors
|
|
347
|
+
[OrbytErrorCode.SCHEMA_UNKNOWN_FIELD]: 'Check field names against schema documentation',
|
|
348
|
+
[OrbytErrorCode.SCHEMA_INVALID_TYPE]: 'Review field type requirements in schema',
|
|
349
|
+
[OrbytErrorCode.SCHEMA_MISSING_FIELD]: 'Add the missing required field',
|
|
350
|
+
[OrbytErrorCode.SCHEMA_INVALID_ENUM]: 'Use one of the allowed values',
|
|
351
|
+
[OrbytErrorCode.SCHEMA_PARSE_ERROR]: 'Fix YAML/JSON syntax errors',
|
|
352
|
+
[OrbytErrorCode.SCHEMA_INVALID_FORMAT]: 'Correct the field format (check regex patterns)',
|
|
353
|
+
[OrbytErrorCode.SCHEMA_RESERVED_FIELD]: 'Remove reserved fields (those starting with "_")',
|
|
354
|
+
// Validation Errors
|
|
355
|
+
[OrbytErrorCode.VALIDATION_DUPLICATE_ID]: 'Rename duplicate steps to have unique IDs',
|
|
356
|
+
[OrbytErrorCode.VALIDATION_UNKNOWN_STEP]: 'Fix step reference or add missing step',
|
|
357
|
+
[OrbytErrorCode.VALIDATION_CIRCULAR_DEPENDENCY]: 'Break the dependency cycle',
|
|
358
|
+
[OrbytErrorCode.VALIDATION_INVALID_ORDER]: 'Reorder steps or fix "needs" dependencies',
|
|
359
|
+
[OrbytErrorCode.VALIDATION_FORWARD_REFERENCE]: 'Ensure steps only reference earlier steps',
|
|
360
|
+
[OrbytErrorCode.VALIDATION_INVALID_VARIABLE]: 'Check variable name and availability',
|
|
361
|
+
[OrbytErrorCode.VALIDATION_MISSING_INPUT]: 'Provide the required input parameter',
|
|
362
|
+
[OrbytErrorCode.VALIDATION_UNKNOWN_ADAPTER]: 'Install adapter or fix "uses" field',
|
|
363
|
+
[OrbytErrorCode.VALIDATION_EMPTY_WORKFLOW]: 'Add at least one step to workflow',
|
|
364
|
+
[OrbytErrorCode.VALIDATION_INVALID_CONDITION]: 'Fix condition syntax or check variable references',
|
|
365
|
+
// Execution Errors
|
|
366
|
+
[OrbytErrorCode.EXECUTION_STEP_FAILED]: 'Check step configuration and logs',
|
|
367
|
+
[OrbytErrorCode.EXECUTION_TIMEOUT]: 'Increase timeout or optimize step',
|
|
368
|
+
[OrbytErrorCode.EXECUTION_ADAPTER_ERROR]: 'Check adapter configuration and logs',
|
|
369
|
+
[OrbytErrorCode.EXECUTION_CANCELLED]: 'Resume workflow or investigate cancellation',
|
|
370
|
+
[OrbytErrorCode.EXECUTION_DEPENDENCY_FAILED]: 'Fix the failing dependency step',
|
|
371
|
+
[OrbytErrorCode.EXECUTION_CONDITION_FAILED]: 'Review condition logic or accept skip',
|
|
372
|
+
// Runtime Errors
|
|
373
|
+
[OrbytErrorCode.RUNTIME_FILE_NOT_FOUND]: 'Check file path exists and is accessible',
|
|
374
|
+
[OrbytErrorCode.RUNTIME_PERMISSION_DENIED]: 'Check file permissions',
|
|
375
|
+
[OrbytErrorCode.RUNTIME_INTERNAL_ERROR]: 'Report bug with full error details',
|
|
376
|
+
[OrbytErrorCode.RUNTIME_ADAPTER_NOT_FOUND]: 'Install and register the adapter',
|
|
377
|
+
[OrbytErrorCode.RUNTIME_RESOURCE_EXHAUSTED]: 'Free up resources or increase limits',
|
|
378
|
+
};
|
|
379
|
+
return actions[code] || 'Review error details and check documentation';
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Execution Control Actions
|
|
383
|
+
* Determines what action to take when error occurs
|
|
384
|
+
*/
|
|
385
|
+
export var ExecutionControl;
|
|
386
|
+
(function (ExecutionControl) {
|
|
387
|
+
/** Stop entire workflow execution immediately */
|
|
388
|
+
ExecutionControl["STOP_WORKFLOW"] = "STOP_WORKFLOW";
|
|
389
|
+
/** Stop current step, try to continue to next step */
|
|
390
|
+
ExecutionControl["STOP_STEP"] = "STOP_STEP";
|
|
391
|
+
/** Continue execution, just log the issue */
|
|
392
|
+
ExecutionControl["CONTINUE"] = "CONTINUE";
|
|
393
|
+
})(ExecutionControl || (ExecutionControl = {}));
|
|
394
|
+
/**
|
|
395
|
+
* Get execution control action based on severity
|
|
396
|
+
* Determines whether to stop workflow, stop step, or continue
|
|
397
|
+
*
|
|
398
|
+
* @param severity - Error severity level
|
|
399
|
+
* @returns Execution control action
|
|
400
|
+
*
|
|
401
|
+
* @example
|
|
402
|
+
* ```typescript
|
|
403
|
+
* const action = getExecutionControl(ErrorSeverity.CRITICAL);
|
|
404
|
+
* // Returns: ExecutionControl.STOP_WORKFLOW
|
|
405
|
+
*
|
|
406
|
+
* const action2 = getExecutionControl(ErrorSeverity.MEDIUM);
|
|
407
|
+
* // Returns: ExecutionControl.STOP_STEP
|
|
408
|
+
* ```
|
|
409
|
+
*/
|
|
410
|
+
export function getExecutionControl(severity) {
|
|
411
|
+
switch (severity) {
|
|
412
|
+
case ErrorSeverity.CRITICAL:
|
|
413
|
+
case ErrorSeverity.FATAL:
|
|
414
|
+
case ErrorSeverity.ERROR:
|
|
415
|
+
return ExecutionControl.STOP_WORKFLOW;
|
|
416
|
+
case ErrorSeverity.MEDIUM:
|
|
417
|
+
return ExecutionControl.STOP_STEP;
|
|
418
|
+
case ErrorSeverity.LOW:
|
|
419
|
+
case ErrorSeverity.WARNING:
|
|
420
|
+
case ErrorSeverity.INFO:
|
|
421
|
+
return ExecutionControl.CONTINUE;
|
|
422
|
+
default:
|
|
423
|
+
return ExecutionControl.STOP_WORKFLOW; // Safe default
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Check if severity should stop workflow execution
|
|
428
|
+
*
|
|
429
|
+
* @param severity - Error severity level
|
|
430
|
+
* @returns True if workflow should stop
|
|
431
|
+
*/
|
|
432
|
+
export function shouldStopWorkflow(severity) {
|
|
433
|
+
return getExecutionControl(severity) === ExecutionControl.STOP_WORKFLOW;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Check if severity should stop step execution
|
|
437
|
+
*
|
|
438
|
+
* @param severity - Error severity level
|
|
439
|
+
* @returns True if step should stop
|
|
440
|
+
*/
|
|
441
|
+
export function shouldStopStep(severity) {
|
|
442
|
+
const control = getExecutionControl(severity);
|
|
443
|
+
return control === ExecutionControl.STOP_WORKFLOW || control === ExecutionControl.STOP_STEP;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Get severity level from error code
|
|
447
|
+
* Auto-determines appropriate severity for error code
|
|
448
|
+
*
|
|
449
|
+
* @param code - Orbyt error code
|
|
450
|
+
* @returns Appropriate severity level
|
|
451
|
+
*/
|
|
452
|
+
export function getSeverityForErrorCode(code) {
|
|
453
|
+
// Critical errors (security violations, internal errors)
|
|
454
|
+
if (code === OrbytErrorCode.RUNTIME_INTERNAL_ERROR) {
|
|
455
|
+
return ErrorSeverity.CRITICAL;
|
|
456
|
+
}
|
|
457
|
+
if (code === OrbytErrorCode.RUNTIME_PERMISSION_DENIED) {
|
|
458
|
+
return ErrorSeverity.FATAL;
|
|
459
|
+
}
|
|
460
|
+
// Schema and validation errors are typically ERROR level
|
|
461
|
+
if (code.startsWith('ORB-S-') || code.startsWith('ORB-V-')) {
|
|
462
|
+
// But some validation errors are less severe
|
|
463
|
+
if (code === OrbytErrorCode.VALIDATION_FORWARD_REFERENCE) {
|
|
464
|
+
return ErrorSeverity.MEDIUM;
|
|
465
|
+
}
|
|
466
|
+
return ErrorSeverity.ERROR;
|
|
467
|
+
}
|
|
468
|
+
// Execution errors
|
|
469
|
+
if (code.startsWith('ORB-E-')) {
|
|
470
|
+
if (code === OrbytErrorCode.EXECUTION_TIMEOUT) {
|
|
471
|
+
return ErrorSeverity.ERROR;
|
|
472
|
+
}
|
|
473
|
+
if (code === OrbytErrorCode.EXECUTION_CONDITION_FAILED) {
|
|
474
|
+
return ErrorSeverity.LOW; // Conditions failing is often expected
|
|
475
|
+
}
|
|
476
|
+
return ErrorSeverity.MEDIUM; // Most execution errors can try next step
|
|
477
|
+
}
|
|
478
|
+
// Runtime errors
|
|
479
|
+
if (code.startsWith('ORB-R-')) {
|
|
480
|
+
if (code === OrbytErrorCode.RUNTIME_FILE_NOT_FOUND) {
|
|
481
|
+
return ErrorSeverity.MEDIUM;
|
|
482
|
+
}
|
|
483
|
+
return ErrorSeverity.ERROR;
|
|
484
|
+
}
|
|
485
|
+
// Default to ERROR for unknown codes
|
|
486
|
+
return ErrorSeverity.ERROR;
|
|
487
|
+
}
|
|
95
488
|
//# sourceMappingURL=ErrorCodes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorCodes.js","sourceRoot":"","sources":["../../src/errors/ErrorCodes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ErrorCodes.js","sourceRoot":"","sources":["../../src/errors/ErrorCodes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,CAAN,IAAY,cAwGX;AAxGD,WAAY,cAAc;IACxB,+EAA+E;IAC/E,yCAAyC;IACzC,4CAA4C;IAC5C,+EAA+E;IAE/E,2CAA2C;IAC3C,oDAAkC,CAAA;IAElC,yBAAyB;IACzB,mDAAiC,CAAA;IAEjC,6BAA6B;IAC7B,oDAAkC,CAAA;IAElC,yBAAyB;IACzB,mDAAiC,CAAA;IAEjC,iCAAiC;IACjC,kDAAgC,CAAA;IAEhC,mCAAmC;IACnC,qDAAmC,CAAA;IAEnC,yCAAyC;IACzC,qDAAmC,CAAA;IAEnC,+EAA+E;IAC/E,yCAAyC;IACzC,+CAA+C;IAC/C,+EAA+E;IAE/E,wBAAwB;IACxB,uDAAqC,CAAA;IAErC,qCAAqC;IACrC,uDAAqC,CAAA;IAErC,mCAAmC;IACnC,8DAA4C,CAAA;IAE5C,yBAAyB;IACzB,wDAAsC,CAAA;IAEtC,uCAAuC;IACvC,4DAA0C,CAAA;IAE1C,iCAAiC;IACjC,2DAAyC,CAAA;IAEzC,6BAA6B;IAC7B,wDAAsC,CAAA;IAEtC,6BAA6B;IAC7B,0DAAwC,CAAA;IAExC,4BAA4B;IAC5B,yDAAuC,CAAA;IAEvC,0CAA0C;IAC1C,4DAA0C,CAAA;IAE1C,+EAA+E;IAC/E,0CAA0C;IAC1C,0EAA0E;IAC1E,+EAA+E;IAE/E,4BAA4B;IAC5B,qDAAmC,CAAA;IAEnC,uBAAuB;IACvB,iDAA+B,CAAA;IAE/B,oBAAoB;IACpB,uDAAqC,CAAA;IAErC,yBAAyB;IACzB,mDAAiC,CAAA;IAEjC,6BAA6B;IAC7B,2DAAyC,CAAA;IAEzC,+BAA+B;IAC/B,0DAAwC,CAAA;IAExC,+EAA+E;IAC/E,6CAA6C;IAC7C,8EAA8E;IAC9E,+EAA+E;IAE/E,qBAAqB;IACrB,sDAAoC,CAAA;IAEpC,wBAAwB;IACxB,yDAAuC,CAAA;IAEvC,4BAA4B;IAC5B,sDAAoC,CAAA;IAEpC,6BAA6B;IAC7B,yDAAuC,CAAA;IAEvC,yBAAyB;IACzB,0DAAwC,CAAA;AAC1C,CAAC,EAxGW,cAAc,KAAd,cAAc,QAwGzB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAN,IAAY,aAqBX;AArBD,WAAY,aAAa;IACvB,wEAAwE;IACxE,sCAAqB,CAAA;IAErB,0DAA0D;IAC1D,gCAAe,CAAA;IAEf,iDAAiD;IACjD,gCAAe,CAAA;IAEf,oEAAoE;IACpE,kCAAiB,CAAA;IAEjB,mDAAmD;IACnD,4BAAW,CAAA;IAEX,wDAAwD;IACxD,oCAAmB,CAAA;IAEnB,4BAA4B;IAC5B,8BAAa,CAAA;AACf,CAAC,EArBW,aAAa,KAAb,aAAa,QAqBxB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,cAAc,CAAC;IACrD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,kBAAkB,CAAC;IACzD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,iBAAiB,CAAC;IACxD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,eAAe,CAAC;IACtD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,MAAM,YAAY,GAAmC;QACnD,gBAAgB;QAChB,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE,2GAA2G;QAClJ,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,qGAAqG;QAC3I,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE,0FAA0F;QACjI,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,uFAAuF;QAC7H,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,kHAAkH;QACvJ,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,qGAAqG;QAC7I,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,2HAA2H;QAEnK,oBAAoB;QACpB,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,8EAA8E;QACxH,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,4GAA4G;QACtJ,CAAC,cAAc,CAAC,8BAA8B,CAAC,EAAE,uFAAuF;QACxI,CAAC,cAAc,CAAC,wBAAwB,CAAC,EAAE,yEAAyE;QACpH,CAAC,cAAc,CAAC,4BAA4B,CAAC,EAAE,2FAA2F;QAC1I,CAAC,cAAc,CAAC,2BAA2B,CAAC,EAAE,qFAAqF;QACnI,CAAC,cAAc,CAAC,wBAAwB,CAAC,EAAE,mEAAmE;QAC9G,CAAC,cAAc,CAAC,0BAA0B,CAAC,EAAE,uFAAuF;QACpI,CAAC,cAAc,CAAC,yBAAyB,CAAC,EAAE,+DAA+D;QAC3G,CAAC,cAAc,CAAC,4BAA4B,CAAC,EAAE,mFAAmF;QAElI,mBAAmB;QACnB,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,kFAAkF;QAC1H,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,2FAA2F;QAC/H,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,sFAAsF;QAChI,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,oFAAoF;QAC1H,CAAC,cAAc,CAAC,2BAA2B,CAAC,EAAE,mFAAmF;QACjI,CAAC,cAAc,CAAC,0BAA0B,CAAC,EAAE,2FAA2F;QAExI,iBAAiB;QACjB,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,+FAA+F;QACxI,CAAC,cAAc,CAAC,yBAAyB,CAAC,EAAE,6FAA6F;QACzI,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,uFAAuF;QAChI,CAAC,cAAc,CAAC,yBAAyB,CAAC,EAAE,2FAA2F;QACvI,CAAC,cAAc,CAAC,0BAA0B,CAAC,EAAE,2FAA2F;KACzI,CAAC;IAEF,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,iCAAiC;IACjC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,cAAc,CAAC,kBAAkB,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAC,cAAc,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,KAAK,cAAc,CAAC,qBAAqB,EAAE,CAAC;YAClD,OAAO,SAAS,CAAC,kBAAkB,CAAC;QACtC,CAAC;QACD,OAAO,SAAS,CAAC,cAAc,CAAC;IAClC,CAAC;IAED,wCAAwC;IACxC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,cAAc,CAAC,8BAA8B,EAAE,CAAC;YAC3D,OAAO,SAAS,CAAC,mBAAmB,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,KAAK,cAAc,CAAC,wBAAwB,EAAE,CAAC;YACrD,OAAO,SAAS,CAAC,sBAAsB,CAAC;QAC1C,CAAC;QACD,OAAO,SAAS,CAAC,iBAAiB,CAAC;IACrC,CAAC;IAED,8CAA8C;IAC9C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,cAAc,CAAC,iBAAiB,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC,OAAO,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,KAAK,cAAc,CAAC,qBAAqB,EAAE,CAAC;YAClD,OAAO,SAAS,CAAC,WAAW,CAAC;QAC/B,CAAC;QACD,IAAI,IAAI,KAAK,cAAc,CAAC,uBAAuB,EAAE,CAAC;YACpD,OAAO,SAAS,CAAC,cAAc,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,KAAK,cAAc,CAAC,2BAA2B,EAAE,CAAC;YACxD,OAAO,SAAS,CAAC,iBAAiB,CAAC;QACrC,CAAC;QACD,OAAO,SAAS,CAAC,eAAe,CAAC;IACnC,CAAC;IAED,sCAAsC;IACtC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,cAAc,CAAC,sBAAsB,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC,YAAY,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,KAAK,cAAc,CAAC,yBAAyB,EAAE,CAAC;YACtD,OAAO,SAAS,CAAC,iBAAiB,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,KAAK,cAAc,CAAC,yBAAyB,EAAE,CAAC;YACtD,OAAO,SAAS,CAAC,kBAAkB,CAAC;QACtC,CAAC;QACD,OAAO,SAAS,CAAC,cAAc,CAAC;IAClC,CAAC;IAED,OAAO,SAAS,CAAC,cAAc,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,WAAW,CAAC,IAAoB;IAC9C,uDAAuD;IACvD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAC,IAAoB;IAC9C,2DAA2D;IAC3D,MAAM,eAAe,GAAG;QACtB,cAAc,CAAC,iBAAiB;QAChC,cAAc,CAAC,uBAAuB;QACtC,cAAc,CAAC,0BAA0B;KAC1C,CAAC;IAEF,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IACrD,MAAM,OAAO,GAAmC;QAC9C,gBAAgB;QAChB,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE,gDAAgD;QACvF,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,0CAA0C;QAChF,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE,gCAAgC;QACvE,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,+BAA+B;QACrE,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,6BAA6B;QAClE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,iDAAiD;QACzF,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,kDAAkD;QAE1F,oBAAoB;QACpB,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,2CAA2C;QACrF,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,wCAAwC;QAClF,CAAC,cAAc,CAAC,8BAA8B,CAAC,EAAE,4BAA4B;QAC7E,CAAC,cAAc,CAAC,wBAAwB,CAAC,EAAE,2CAA2C;QACtF,CAAC,cAAc,CAAC,4BAA4B,CAAC,EAAE,2CAA2C;QAC1F,CAAC,cAAc,CAAC,2BAA2B,CAAC,EAAE,sCAAsC;QACpF,CAAC,cAAc,CAAC,wBAAwB,CAAC,EAAE,sCAAsC;QACjF,CAAC,cAAc,CAAC,0BAA0B,CAAC,EAAE,qCAAqC;QAClF,CAAC,cAAc,CAAC,yBAAyB,CAAC,EAAE,mCAAmC;QAC/E,CAAC,cAAc,CAAC,4BAA4B,CAAC,EAAE,mDAAmD;QAElG,mBAAmB;QACnB,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,mCAAmC;QAC3E,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,mCAAmC;QACvE,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,sCAAsC;QAChF,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,6CAA6C;QACnF,CAAC,cAAc,CAAC,2BAA2B,CAAC,EAAE,iCAAiC;QAC/E,CAAC,cAAc,CAAC,0BAA0B,CAAC,EAAE,uCAAuC;QAEpF,iBAAiB;QACjB,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,0CAA0C;QACnF,CAAC,cAAc,CAAC,yBAAyB,CAAC,EAAE,wBAAwB;QACpE,CAAC,cAAc,CAAC,sBAAsB,CAAC,EAAE,oCAAoC;QAC7E,CAAC,cAAc,CAAC,yBAAyB,CAAC,EAAE,kCAAkC;QAC9E,CAAC,cAAc,CAAC,0BAA0B,CAAC,EAAE,sCAAsC;KACpF,CAAC;IAEF,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,8CAA8C,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,gBASX;AATD,WAAY,gBAAgB;IAC1B,iDAAiD;IACjD,mDAA+B,CAAA;IAE/B,sDAAsD;IACtD,2CAAuB,CAAA;IAEvB,6CAA6C;IAC7C,yCAAqB,CAAA;AACvB,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,QAS3B;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAuB;IACzD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,aAAa,CAAC,QAAQ,CAAC;QAC5B,KAAK,aAAa,CAAC,KAAK,CAAC;QACzB,KAAK,aAAa,CAAC,KAAK;YACtB,OAAO,gBAAgB,CAAC,aAAa,CAAC;QAExC,KAAK,aAAa,CAAC,MAAM;YACvB,OAAO,gBAAgB,CAAC,SAAS,CAAC;QAEpC,KAAK,aAAa,CAAC,GAAG,CAAC;QACvB,KAAK,aAAa,CAAC,OAAO,CAAC;QAC3B,KAAK,aAAa,CAAC,IAAI;YACrB,OAAO,gBAAgB,CAAC,QAAQ,CAAC;QAEnC;YACE,OAAO,gBAAgB,CAAC,aAAa,CAAC,CAAC,eAAe;IAC1D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAuB;IACxD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,KAAK,gBAAgB,CAAC,aAAa,CAAC;AAC1E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,QAAuB;IACpD,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,OAAO,KAAK,gBAAgB,CAAC,aAAa,IAAI,OAAO,KAAK,gBAAgB,CAAC,SAAS,CAAC;AAC9F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAoB;IAC1D,yDAAyD;IACzD,IAAI,IAAI,KAAK,cAAc,CAAC,sBAAsB,EAAE,CAAC;QACnD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,IAAI,IAAI,KAAK,cAAc,CAAC,yBAAyB,EAAE,CAAC;QACtD,OAAO,aAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,yDAAyD;IACzD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,6CAA6C;QAC7C,IAAI,IAAI,KAAK,cAAc,CAAC,4BAA4B,EAAE,CAAC;YACzD,OAAO,aAAa,CAAC,MAAM,CAAC;QAC9B,CAAC;QACD,OAAO,aAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,mBAAmB;IACnB,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,cAAc,CAAC,iBAAiB,EAAE,CAAC;YAC9C,OAAO,aAAa,CAAC,KAAK,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,KAAK,cAAc,CAAC,0BAA0B,EAAE,CAAC;YACvD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,uCAAuC;QACnE,CAAC;QACD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,0CAA0C;IACzE,CAAC;IAED,iBAAiB;IACjB,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,cAAc,CAAC,sBAAsB,EAAE,CAAC;YACnD,OAAO,aAAa,CAAC,MAAM,CAAC;QAC9B,CAAC;QACD,OAAO,aAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,qCAAqC;IACrC,OAAO,aAAa,CAAC,KAAK,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Debugger (Smart Fix Suggestions)
|
|
3
|
+
*
|
|
4
|
+
* Analyzes errors and provides actionable fix suggestions.
|
|
5
|
+
* Makes debugging easy by suggesting concrete solutions.
|
|
6
|
+
*
|
|
7
|
+
* PHILOSOPHY:
|
|
8
|
+
* ==========
|
|
9
|
+
* Instead of just showing errors, guide users to fix them.
|
|
10
|
+
* Provide step-by-step solutions based on error context.
|
|
11
|
+
*
|
|
12
|
+
* USAGE:
|
|
13
|
+
* ======
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // Get debug info for an error
|
|
16
|
+
* const debug = ErrorDebugger.analyze(error);
|
|
17
|
+
* console.log(debug.explanation);
|
|
18
|
+
* console.log(debug.fixSteps);
|
|
19
|
+
*
|
|
20
|
+
* // Get formatted debug output
|
|
21
|
+
* const output = ErrorDebugger.format(error);
|
|
22
|
+
* console.error(output);
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @module errors/debugger
|
|
26
|
+
*/
|
|
27
|
+
import { OrbytError } from './OrbytError.js';
|
|
28
|
+
/**
|
|
29
|
+
* Debug information for an error
|
|
30
|
+
*/
|
|
31
|
+
export interface ErrorDebugInfo {
|
|
32
|
+
/** Plain English explanation of what went wrong */
|
|
33
|
+
explanation: string;
|
|
34
|
+
/** Why this error occurred (root cause) */
|
|
35
|
+
cause: string;
|
|
36
|
+
/** Step-by-step fix instructions */
|
|
37
|
+
fixSteps: string[];
|
|
38
|
+
/** Common mistakes that lead to this error */
|
|
39
|
+
commonMistakes?: string[];
|
|
40
|
+
/** Related documentation links */
|
|
41
|
+
docsLinks?: string[];
|
|
42
|
+
/** Example of correct implementation */
|
|
43
|
+
example?: {
|
|
44
|
+
description: string;
|
|
45
|
+
code: string;
|
|
46
|
+
};
|
|
47
|
+
/** Whether this requires immediate action */
|
|
48
|
+
urgent: boolean;
|
|
49
|
+
/** Estimated time to fix */
|
|
50
|
+
estimatedFixTime?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Error Debugger
|
|
54
|
+
*
|
|
55
|
+
* Smart system that analyzes errors and provides fix suggestions.
|
|
56
|
+
*/
|
|
57
|
+
export declare class ErrorDebugger {
|
|
58
|
+
/**
|
|
59
|
+
* Analyze error and generate debug information
|
|
60
|
+
*
|
|
61
|
+
* @param error - OrbytError to analyze
|
|
62
|
+
* @returns Debug information with fix suggestions
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const debug = ErrorDebugger.analyze(error);
|
|
67
|
+
* console.log(debug.explanation);
|
|
68
|
+
* debug.fixSteps.forEach((step, i) => {
|
|
69
|
+
* console.log(`${i + 1}. ${step}`);
|
|
70
|
+
* });
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
static analyze(error: OrbytError): ErrorDebugInfo;
|
|
74
|
+
/**
|
|
75
|
+
* Format debug information for display
|
|
76
|
+
*
|
|
77
|
+
* @param error - Error to format
|
|
78
|
+
* @param useColors - Whether to use ANSI colors (default: true)
|
|
79
|
+
* @returns Formatted debug output
|
|
80
|
+
*/
|
|
81
|
+
static format(error: OrbytError, useColors?: boolean): string;
|
|
82
|
+
/**
|
|
83
|
+
* Get base debug information for error code
|
|
84
|
+
*/
|
|
85
|
+
private static getBaseDebugInfo;
|
|
86
|
+
/**
|
|
87
|
+
* Analyze error context for more specific information
|
|
88
|
+
*/
|
|
89
|
+
private static analyzeContext;
|
|
90
|
+
/**
|
|
91
|
+
* Quick debug - one-line summary
|
|
92
|
+
*
|
|
93
|
+
* @param error - Error to summarize
|
|
94
|
+
* @returns One-line debug summary
|
|
95
|
+
*/
|
|
96
|
+
static quickDebug(error: OrbytError): string;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=ErrorDebugger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorDebugger.d.ts","sourceRoot":"","sources":["../../src/errors/ErrorDebugger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IAEpB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IAEd,oCAAoC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,wCAAwC;IACxC,OAAO,CAAC,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,6CAA6C;IAC7C,MAAM,EAAE,OAAO,CAAC;IAEhB,4BAA4B;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,qBAAa,aAAa;IACxB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc;IAgBjD;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,GAAE,OAAc,GAAG,MAAM;IAqEnE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IA4H/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IA+B7B;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;CAI7C"}
|