modestbench 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/LICENSE.md +55 -0
  3. package/README.md +699 -0
  4. package/dist/bootstrap.cjs +37 -0
  5. package/dist/bootstrap.cjs.map +1 -0
  6. package/dist/bootstrap.d.cts +17 -0
  7. package/dist/bootstrap.d.cts.map +1 -0
  8. package/dist/bootstrap.d.ts +17 -0
  9. package/dist/bootstrap.d.ts.map +1 -0
  10. package/dist/bootstrap.js +33 -0
  11. package/dist/bootstrap.js.map +1 -0
  12. package/dist/cli/commands/history.cjs +459 -0
  13. package/dist/cli/commands/history.cjs.map +1 -0
  14. package/dist/cli/commands/history.d.cts +34 -0
  15. package/dist/cli/commands/history.d.cts.map +1 -0
  16. package/dist/cli/commands/history.d.ts +34 -0
  17. package/dist/cli/commands/history.d.ts.map +1 -0
  18. package/dist/cli/commands/history.js +422 -0
  19. package/dist/cli/commands/history.js.map +1 -0
  20. package/dist/cli/commands/init.cjs +566 -0
  21. package/dist/cli/commands/init.cjs.map +1 -0
  22. package/dist/cli/commands/init.d.cts +26 -0
  23. package/dist/cli/commands/init.d.cts.map +1 -0
  24. package/dist/cli/commands/init.d.ts +26 -0
  25. package/dist/cli/commands/init.d.ts.map +1 -0
  26. package/dist/cli/commands/init.js +562 -0
  27. package/dist/cli/commands/init.js.map +1 -0
  28. package/dist/cli/commands/run.cjs +285 -0
  29. package/dist/cli/commands/run.cjs.map +1 -0
  30. package/dist/cli/commands/run.d.cts +37 -0
  31. package/dist/cli/commands/run.d.cts.map +1 -0
  32. package/dist/cli/commands/run.d.ts +37 -0
  33. package/dist/cli/commands/run.d.ts.map +1 -0
  34. package/dist/cli/commands/run.js +248 -0
  35. package/dist/cli/commands/run.js.map +1 -0
  36. package/dist/cli/index.cjs +523 -0
  37. package/dist/cli/index.cjs.map +1 -0
  38. package/dist/cli/index.d.cts +58 -0
  39. package/dist/cli/index.d.cts.map +1 -0
  40. package/dist/cli/index.d.ts +58 -0
  41. package/dist/cli/index.d.ts.map +1 -0
  42. package/dist/cli/index.js +515 -0
  43. package/dist/cli/index.js.map +1 -0
  44. package/dist/config/manager.cjs +370 -0
  45. package/dist/config/manager.cjs.map +1 -0
  46. package/dist/config/manager.d.cts +46 -0
  47. package/dist/config/manager.d.cts.map +1 -0
  48. package/dist/config/manager.d.ts +46 -0
  49. package/dist/config/manager.d.ts.map +1 -0
  50. package/dist/config/manager.js +333 -0
  51. package/dist/config/manager.js.map +1 -0
  52. package/dist/config/schema.cjs +182 -0
  53. package/dist/config/schema.cjs.map +1 -0
  54. package/dist/config/schema.d.cts +51 -0
  55. package/dist/config/schema.d.cts.map +1 -0
  56. package/dist/config/schema.d.ts +51 -0
  57. package/dist/config/schema.d.ts.map +1 -0
  58. package/dist/config/schema.js +145 -0
  59. package/dist/config/schema.js.map +1 -0
  60. package/dist/constants.cjs +22 -0
  61. package/dist/constants.cjs.map +1 -0
  62. package/dist/constants.d.cts +10 -0
  63. package/dist/constants.d.cts.map +1 -0
  64. package/dist/constants.d.ts +10 -0
  65. package/dist/constants.d.ts.map +1 -0
  66. package/dist/constants.js +19 -0
  67. package/dist/constants.js.map +1 -0
  68. package/dist/core/benchmark-schema.cjs +135 -0
  69. package/dist/core/benchmark-schema.cjs.map +1 -0
  70. package/dist/core/benchmark-schema.d.cts +139 -0
  71. package/dist/core/benchmark-schema.d.cts.map +1 -0
  72. package/dist/core/benchmark-schema.d.ts +139 -0
  73. package/dist/core/benchmark-schema.d.ts.map +1 -0
  74. package/dist/core/benchmark-schema.js +132 -0
  75. package/dist/core/benchmark-schema.js.map +1 -0
  76. package/dist/core/engine.cjs +669 -0
  77. package/dist/core/engine.cjs.map +1 -0
  78. package/dist/core/engine.d.cts +128 -0
  79. package/dist/core/engine.d.cts.map +1 -0
  80. package/dist/core/engine.d.ts +128 -0
  81. package/dist/core/engine.d.ts.map +1 -0
  82. package/dist/core/engine.js +632 -0
  83. package/dist/core/engine.js.map +1 -0
  84. package/dist/core/engines/accurate-engine.cjs +292 -0
  85. package/dist/core/engines/accurate-engine.cjs.map +1 -0
  86. package/dist/core/engines/accurate-engine.d.cts +63 -0
  87. package/dist/core/engines/accurate-engine.d.cts.map +1 -0
  88. package/dist/core/engines/accurate-engine.d.ts +63 -0
  89. package/dist/core/engines/accurate-engine.d.ts.map +1 -0
  90. package/dist/core/engines/accurate-engine.js +288 -0
  91. package/dist/core/engines/accurate-engine.js.map +1 -0
  92. package/dist/core/engines/index.cjs +21 -0
  93. package/dist/core/engines/index.cjs.map +1 -0
  94. package/dist/core/engines/index.d.cts +16 -0
  95. package/dist/core/engines/index.d.cts.map +1 -0
  96. package/dist/core/engines/index.d.ts +16 -0
  97. package/dist/core/engines/index.d.ts.map +1 -0
  98. package/dist/core/engines/index.js +16 -0
  99. package/dist/core/engines/index.js.map +1 -0
  100. package/dist/core/engines/tinybench-engine.cjs +286 -0
  101. package/dist/core/engines/tinybench-engine.cjs.map +1 -0
  102. package/dist/core/engines/tinybench-engine.d.cts +18 -0
  103. package/dist/core/engines/tinybench-engine.d.cts.map +1 -0
  104. package/dist/core/engines/tinybench-engine.d.ts +18 -0
  105. package/dist/core/engines/tinybench-engine.d.ts.map +1 -0
  106. package/dist/core/engines/tinybench-engine.js +282 -0
  107. package/dist/core/engines/tinybench-engine.js.map +1 -0
  108. package/dist/core/error-manager.cjs +303 -0
  109. package/dist/core/error-manager.cjs.map +1 -0
  110. package/dist/core/error-manager.d.cts +77 -0
  111. package/dist/core/error-manager.d.cts.map +1 -0
  112. package/dist/core/error-manager.d.ts +77 -0
  113. package/dist/core/error-manager.d.ts.map +1 -0
  114. package/dist/core/error-manager.js +299 -0
  115. package/dist/core/error-manager.js.map +1 -0
  116. package/dist/core/loader.cjs +287 -0
  117. package/dist/core/loader.cjs.map +1 -0
  118. package/dist/core/loader.d.cts +55 -0
  119. package/dist/core/loader.d.cts.map +1 -0
  120. package/dist/core/loader.d.ts +55 -0
  121. package/dist/core/loader.d.ts.map +1 -0
  122. package/dist/core/loader.js +250 -0
  123. package/dist/core/loader.js.map +1 -0
  124. package/dist/core/stats-utils.cjs +99 -0
  125. package/dist/core/stats-utils.cjs.map +1 -0
  126. package/dist/core/stats-utils.d.cts +50 -0
  127. package/dist/core/stats-utils.d.cts.map +1 -0
  128. package/dist/core/stats-utils.d.ts +50 -0
  129. package/dist/core/stats-utils.d.ts.map +1 -0
  130. package/dist/core/stats-utils.js +94 -0
  131. package/dist/core/stats-utils.js.map +1 -0
  132. package/dist/index.cjs +64 -0
  133. package/dist/index.cjs.map +1 -0
  134. package/dist/index.d.cts +22 -0
  135. package/dist/index.d.cts.map +1 -0
  136. package/dist/index.d.ts +22 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +30 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/progress/manager.cjs +325 -0
  141. package/dist/progress/manager.cjs.map +1 -0
  142. package/dist/progress/manager.d.cts +125 -0
  143. package/dist/progress/manager.d.cts.map +1 -0
  144. package/dist/progress/manager.d.ts +125 -0
  145. package/dist/progress/manager.d.ts.map +1 -0
  146. package/dist/progress/manager.js +321 -0
  147. package/dist/progress/manager.js.map +1 -0
  148. package/dist/reporters/csv.cjs +250 -0
  149. package/dist/reporters/csv.cjs.map +1 -0
  150. package/dist/reporters/csv.d.cts +92 -0
  151. package/dist/reporters/csv.d.cts.map +1 -0
  152. package/dist/reporters/csv.d.ts +92 -0
  153. package/dist/reporters/csv.d.ts.map +1 -0
  154. package/dist/reporters/csv.js +246 -0
  155. package/dist/reporters/csv.js.map +1 -0
  156. package/dist/reporters/human.cjs +516 -0
  157. package/dist/reporters/human.cjs.map +1 -0
  158. package/dist/reporters/human.d.cts +86 -0
  159. package/dist/reporters/human.d.cts.map +1 -0
  160. package/dist/reporters/human.d.ts +86 -0
  161. package/dist/reporters/human.d.ts.map +1 -0
  162. package/dist/reporters/human.js +509 -0
  163. package/dist/reporters/human.js.map +1 -0
  164. package/dist/reporters/index.cjs +17 -0
  165. package/dist/reporters/index.cjs.map +1 -0
  166. package/dist/reporters/index.d.cts +10 -0
  167. package/dist/reporters/index.d.cts.map +1 -0
  168. package/dist/reporters/index.d.ts +10 -0
  169. package/dist/reporters/index.d.ts.map +1 -0
  170. package/dist/reporters/index.js +10 -0
  171. package/dist/reporters/index.js.map +1 -0
  172. package/dist/reporters/json.cjs +215 -0
  173. package/dist/reporters/json.cjs.map +1 -0
  174. package/dist/reporters/json.d.cts +79 -0
  175. package/dist/reporters/json.d.cts.map +1 -0
  176. package/dist/reporters/json.d.ts +79 -0
  177. package/dist/reporters/json.d.ts.map +1 -0
  178. package/dist/reporters/json.js +211 -0
  179. package/dist/reporters/json.js.map +1 -0
  180. package/dist/reporters/registry.cjs +255 -0
  181. package/dist/reporters/registry.cjs.map +1 -0
  182. package/dist/reporters/registry.d.cts +155 -0
  183. package/dist/reporters/registry.d.cts.map +1 -0
  184. package/dist/reporters/registry.d.ts +155 -0
  185. package/dist/reporters/registry.d.ts.map +1 -0
  186. package/dist/reporters/registry.js +249 -0
  187. package/dist/reporters/registry.js.map +1 -0
  188. package/dist/reporters/simple.cjs +328 -0
  189. package/dist/reporters/simple.cjs.map +1 -0
  190. package/dist/reporters/simple.d.cts +51 -0
  191. package/dist/reporters/simple.d.cts.map +1 -0
  192. package/dist/reporters/simple.d.ts +51 -0
  193. package/dist/reporters/simple.d.ts.map +1 -0
  194. package/dist/reporters/simple.js +321 -0
  195. package/dist/reporters/simple.js.map +1 -0
  196. package/dist/schema/modestbench-config.schema.json +162 -0
  197. package/dist/storage/history.cjs +456 -0
  198. package/dist/storage/history.cjs.map +1 -0
  199. package/dist/storage/history.d.cts +99 -0
  200. package/dist/storage/history.d.cts.map +1 -0
  201. package/dist/storage/history.d.ts +99 -0
  202. package/dist/storage/history.d.ts.map +1 -0
  203. package/dist/storage/history.js +452 -0
  204. package/dist/storage/history.js.map +1 -0
  205. package/dist/types/cli.cjs +21 -0
  206. package/dist/types/cli.cjs.map +1 -0
  207. package/dist/types/cli.d.cts +296 -0
  208. package/dist/types/cli.d.cts.map +1 -0
  209. package/dist/types/cli.d.ts +296 -0
  210. package/dist/types/cli.d.ts.map +1 -0
  211. package/dist/types/cli.js +18 -0
  212. package/dist/types/cli.js.map +1 -0
  213. package/dist/types/core.cjs +14 -0
  214. package/dist/types/core.cjs.map +1 -0
  215. package/dist/types/core.d.cts +380 -0
  216. package/dist/types/core.d.cts.map +1 -0
  217. package/dist/types/core.d.ts +380 -0
  218. package/dist/types/core.d.ts.map +1 -0
  219. package/dist/types/core.js +13 -0
  220. package/dist/types/core.js.map +1 -0
  221. package/dist/types/index.cjs +27 -0
  222. package/dist/types/index.cjs.map +1 -0
  223. package/dist/types/index.d.cts +11 -0
  224. package/dist/types/index.d.cts.map +1 -0
  225. package/dist/types/index.d.ts +11 -0
  226. package/dist/types/index.d.ts.map +1 -0
  227. package/dist/types/index.js +11 -0
  228. package/dist/types/index.js.map +1 -0
  229. package/dist/types/interfaces.cjs +10 -0
  230. package/dist/types/interfaces.cjs.map +1 -0
  231. package/dist/types/interfaces.d.cts +381 -0
  232. package/dist/types/interfaces.d.cts.map +1 -0
  233. package/dist/types/interfaces.d.ts +381 -0
  234. package/dist/types/interfaces.d.ts.map +1 -0
  235. package/dist/types/interfaces.js +9 -0
  236. package/dist/types/interfaces.js.map +1 -0
  237. package/dist/types/utility.cjs +92 -0
  238. package/dist/types/utility.cjs.map +1 -0
  239. package/dist/types/utility.d.cts +330 -0
  240. package/dist/types/utility.d.cts.map +1 -0
  241. package/dist/types/utility.d.ts +330 -0
  242. package/dist/types/utility.d.ts.map +1 -0
  243. package/dist/types/utility.js +78 -0
  244. package/dist/types/utility.js.map +1 -0
  245. package/package.json +211 -0
  246. package/src/bootstrap.ts +35 -0
  247. package/src/cli/commands/history.ts +569 -0
  248. package/src/cli/commands/init.ts +658 -0
  249. package/src/cli/commands/run.ts +346 -0
  250. package/src/cli/index.ts +642 -0
  251. package/src/config/manager.ts +387 -0
  252. package/src/config/schema.ts +188 -0
  253. package/src/constants.ts +21 -0
  254. package/src/core/benchmark-schema.ts +185 -0
  255. package/src/core/engine.ts +888 -0
  256. package/src/core/engines/accurate-engine.ts +408 -0
  257. package/src/core/engines/index.ts +16 -0
  258. package/src/core/engines/tinybench-engine.ts +335 -0
  259. package/src/core/error-manager.ts +372 -0
  260. package/src/core/loader.ts +324 -0
  261. package/src/core/stats-utils.ts +135 -0
  262. package/src/index.ts +46 -0
  263. package/src/progress/manager.ts +415 -0
  264. package/src/reporters/csv.ts +368 -0
  265. package/src/reporters/human.ts +707 -0
  266. package/src/reporters/index.ts +10 -0
  267. package/src/reporters/json.ts +302 -0
  268. package/src/reporters/registry.ts +349 -0
  269. package/src/reporters/simple.ts +459 -0
  270. package/src/storage/history.ts +600 -0
  271. package/src/types/cli.ts +312 -0
  272. package/src/types/core.ts +414 -0
  273. package/src/types/index.ts +18 -0
  274. package/src/types/interfaces.ts +451 -0
  275. package/src/types/utility.ts +446 -0
@@ -0,0 +1,303 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench Error Manager
4
+ *
5
+ * Handles execution errors with context tracking, categorization, and provides
6
+ * structured error information for graceful degradation.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ModestBenchErrorManager = void 0;
10
+ /**
11
+ * Error code mappings for different error types and contexts
12
+ */
13
+ const ERROR_CODES = {
14
+ // Benchmark file errors
15
+ BENCH_001: 'Benchmark file syntax error',
16
+ BENCH_002: 'Invalid benchmark structure',
17
+ BENCH_003: 'Missing dependency',
18
+ BENCH_004: 'Timeout exceeded',
19
+ BENCH_005: 'Memory limit exceeded',
20
+ // Configuration errors
21
+ CONFIG_001: 'Invalid configuration file',
22
+ CONFIG_002: 'Missing required option',
23
+ // Execution errors
24
+ EXEC_001: 'Task execution failed',
25
+ EXEC_002: 'Setup function failed',
26
+ EXEC_003: 'Teardown function failed',
27
+ EXEC_004: 'Memory leak detected',
28
+ // File system errors
29
+ FILE_001: 'File not found',
30
+ FILE_002: 'Permission denied',
31
+ FILE_003: 'Invalid file format',
32
+ // History storage errors
33
+ HIST_001: 'History data corruption',
34
+ HIST_002: 'Disk space insufficient',
35
+ HIST_003: 'Index corruption',
36
+ // System errors
37
+ SYS_001: 'Out of memory',
38
+ SYS_002: 'Process crashed',
39
+ SYS_003: 'System resource unavailable',
40
+ // Unknown errors
41
+ UNKNOWN: 'Unknown error',
42
+ // Validation errors
43
+ VALID_001: 'Schema validation failed',
44
+ VALID_002: 'Type validation failed',
45
+ VALID_003: 'Range validation failed',
46
+ };
47
+ /**
48
+ * Recoverable error types that shouldn't stop entire execution
49
+ */
50
+ const RECOVERABLE_ERRORS = new Set([
51
+ 'BENCH_003', // Missing dependency (can skip specific benchmark)
52
+ 'EXEC_001', // Task execution failed (can continue with other tasks)
53
+ 'FILE_001', // File not found (can continue with other files)
54
+ 'VALID_002', // Type validation failed (can skip invalid items)
55
+ 'VALID_003', // Range validation failed (can skip invalid items)
56
+ ]);
57
+ /**
58
+ * Default error manager implementation
59
+ */
60
+ class ModestBenchErrorManager {
61
+ errors = [];
62
+ handlers = [];
63
+ maxRecentErrors = 50;
64
+ /**
65
+ * Clear error history
66
+ */
67
+ clearStats() {
68
+ this.errors = [];
69
+ }
70
+ /**
71
+ * Format error for display
72
+ */
73
+ formatError(error) {
74
+ const { code, context, message } = error;
75
+ let formatted = `[${code}] ${message}`;
76
+ // Add context information
77
+ const contextParts = [];
78
+ if (context.file) {
79
+ contextParts.push(`file: ${context.file}`);
80
+ }
81
+ if (context.suite) {
82
+ contextParts.push(`suite: ${context.suite}`);
83
+ }
84
+ if (context.task) {
85
+ contextParts.push(`task: ${context.task}`);
86
+ }
87
+ if (contextParts.length > 0) {
88
+ formatted += ` (${contextParts.join(', ')})`;
89
+ }
90
+ formatted += ` at ${context.timestamp.toISOString()}`;
91
+ return formatted;
92
+ }
93
+ /**
94
+ * Get error code for a given error
95
+ */
96
+ getErrorCode(error, context) {
97
+ // Check for specific error patterns
98
+ const message = error.message.toLowerCase();
99
+ const name = error.name.toLowerCase();
100
+ // File system errors
101
+ if (message.includes('enoent') || message.includes('no such file')) {
102
+ return 'FILE_001';
103
+ }
104
+ if (message.includes('eacces') || message.includes('permission denied')) {
105
+ return 'FILE_002';
106
+ }
107
+ // Memory errors
108
+ if (message.includes('out of memory') || name.includes('rangeerror')) {
109
+ return 'SYS_001';
110
+ }
111
+ // Timeout errors
112
+ if (message.includes('timeout') || name.includes('timeout')) {
113
+ return 'BENCH_004';
114
+ }
115
+ // Syntax errors in benchmark files
116
+ if (name.includes('syntaxerror') && context.phase === 'loading') {
117
+ return 'BENCH_001';
118
+ }
119
+ // Validation errors
120
+ if (context.phase === 'validation') {
121
+ if (message.includes('schema') || message.includes('structure')) {
122
+ return 'VALID_001';
123
+ }
124
+ if (message.includes('type')) {
125
+ return 'VALID_002';
126
+ }
127
+ if (message.includes('range') || message.includes('limit')) {
128
+ return 'VALID_003';
129
+ }
130
+ }
131
+ // Configuration errors
132
+ if (context.phase === 'discovery' && message.includes('config')) {
133
+ return 'CONFIG_001';
134
+ }
135
+ // Execution phase errors
136
+ if (context.phase === 'execution') {
137
+ if (context.task) {
138
+ return 'EXEC_001';
139
+ }
140
+ }
141
+ if (context.phase === 'setup') {
142
+ return 'EXEC_002';
143
+ }
144
+ if (context.phase === 'teardown') {
145
+ return 'EXEC_003';
146
+ }
147
+ // Storage errors
148
+ if (message.includes('disk') && message.includes('space')) {
149
+ return 'HIST_002';
150
+ }
151
+ if (message.includes('corrupt') || message.includes('invalid json')) {
152
+ return 'HIST_001';
153
+ }
154
+ // Default to unknown
155
+ return 'UNKNOWN';
156
+ }
157
+ /**
158
+ * Get error count by phase
159
+ */
160
+ getErrorCountByPhase(phase) {
161
+ return this.errors.filter((error) => error.context.phase === phase).length;
162
+ }
163
+ /**
164
+ * Get human-readable description for error code
165
+ */
166
+ getErrorDescription(code) {
167
+ return ERROR_CODES[code] || 'Unknown error';
168
+ }
169
+ /**
170
+ * Get all error handlers (for testing)
171
+ */
172
+ getHandlers() {
173
+ return [...this.handlers];
174
+ }
175
+ /**
176
+ * Get recent errors for a specific phase
177
+ */
178
+ getRecentErrorsForPhase(phase, limit = 10) {
179
+ return this.errors
180
+ .filter((error) => error.context.phase === phase)
181
+ .slice(-limit);
182
+ }
183
+ /**
184
+ * Get error statistics
185
+ */
186
+ getStats() {
187
+ const byPhase = {
188
+ cleanup: 0,
189
+ discovery: 0,
190
+ execution: 0,
191
+ loading: 0,
192
+ reporting: 0,
193
+ setup: 0,
194
+ teardown: 0,
195
+ validation: 0,
196
+ };
197
+ const byType = {};
198
+ let firstError;
199
+ let lastError;
200
+ for (const error of this.errors) {
201
+ // Count by phase
202
+ byPhase[error.context.phase]++;
203
+ // Count by type (error code)
204
+ const type = error.code;
205
+ byType[type] = (byType[type] || 0) + 1;
206
+ // Track timestamps
207
+ const timestamp = error.processedAt;
208
+ if (!firstError || timestamp < firstError) {
209
+ firstError = timestamp;
210
+ }
211
+ if (!lastError || timestamp > lastError) {
212
+ lastError = timestamp;
213
+ }
214
+ }
215
+ const result = {
216
+ byPhase,
217
+ byType,
218
+ ...(firstError && { firstError }),
219
+ ...(lastError && { lastError }),
220
+ recent: this.errors.slice(-this.maxRecentErrors),
221
+ total: this.errors.length,
222
+ };
223
+ return result;
224
+ }
225
+ /**
226
+ * Handle an execution error
227
+ */
228
+ handleError(error, context) {
229
+ const code = this.getErrorCode(error, context);
230
+ const recoverable = this.isRecoverableByCode(code);
231
+ const executionError = {
232
+ code,
233
+ context,
234
+ message: this.createMessage(error, context, code),
235
+ originalError: error,
236
+ processedAt: new Date(),
237
+ recoverable,
238
+ ...(error.stack && { stack: error.stack }),
239
+ };
240
+ // Store error for statistics
241
+ this.errors.push(executionError);
242
+ // Keep only recent errors to prevent memory leaks
243
+ if (this.errors.length > this.maxRecentErrors * 2) {
244
+ this.errors = this.errors.slice(-this.maxRecentErrors);
245
+ }
246
+ // Notify handlers
247
+ for (const handler of this.handlers) {
248
+ try {
249
+ handler(executionError);
250
+ }
251
+ catch (handlerError) {
252
+ // Don't let handler errors break error handling
253
+ console.error('Error in error handler:', handlerError);
254
+ }
255
+ }
256
+ return executionError;
257
+ }
258
+ /**
259
+ * Check if an error is recoverable
260
+ */
261
+ isRecoverable(error) {
262
+ return error.recoverable;
263
+ }
264
+ /**
265
+ * Register error handler callback
266
+ */
267
+ onError(handler) {
268
+ this.handlers.push(handler);
269
+ }
270
+ /**
271
+ * Remove error handler
272
+ */
273
+ removeHandler(handler) {
274
+ const index = this.handlers.indexOf(handler);
275
+ if (index >= 0) {
276
+ this.handlers.splice(index, 1);
277
+ return true;
278
+ }
279
+ return false;
280
+ }
281
+ /**
282
+ * Create human-readable error message
283
+ */
284
+ createMessage(error, context, code) {
285
+ const baseMessage = this.getErrorDescription(code);
286
+ const originalMessage = error.message;
287
+ // If the original message is more descriptive, use it
288
+ if (originalMessage &&
289
+ originalMessage !== baseMessage &&
290
+ !originalMessage.includes('[object')) {
291
+ return `${baseMessage}: ${originalMessage}`;
292
+ }
293
+ return baseMessage;
294
+ }
295
+ /**
296
+ * Check if error is recoverable by code
297
+ */
298
+ isRecoverableByCode(code) {
299
+ return RECOVERABLE_ERRORS.has(code);
300
+ }
301
+ }
302
+ exports.ModestBenchErrorManager = ModestBenchErrorManager;
303
+ //# sourceMappingURL=error-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-manager.js","sourceRoot":"","sources":["../../src/core/error-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * ModestBench Error Manager
3
+ *
4
+ * Handles execution errors with context tracking, categorization, and provides
5
+ * structured error information for graceful degradation.
6
+ */
7
+ import type { ErrorContext, ErrorManager, ErrorStats, ExecutionError, ExecutionPhase } from "../types/index.cjs";
8
+ /**
9
+ * Error handler callback type
10
+ */
11
+ type ErrorHandler = (error: ExecutionError) => void;
12
+ /**
13
+ * Default error manager implementation
14
+ */
15
+ export declare class ModestBenchErrorManager implements ErrorManager {
16
+ private errors;
17
+ private handlers;
18
+ private readonly maxRecentErrors;
19
+ /**
20
+ * Clear error history
21
+ */
22
+ clearStats(): void;
23
+ /**
24
+ * Format error for display
25
+ */
26
+ formatError(error: ExecutionError): string;
27
+ /**
28
+ * Get error code for a given error
29
+ */
30
+ getErrorCode(error: Error, context: ErrorContext): string;
31
+ /**
32
+ * Get error count by phase
33
+ */
34
+ getErrorCountByPhase(phase: ExecutionPhase): number;
35
+ /**
36
+ * Get human-readable description for error code
37
+ */
38
+ getErrorDescription(code: string): string;
39
+ /**
40
+ * Get all error handlers (for testing)
41
+ */
42
+ getHandlers(): readonly ErrorHandler[];
43
+ /**
44
+ * Get recent errors for a specific phase
45
+ */
46
+ getRecentErrorsForPhase(phase: ExecutionPhase, limit?: number): ExecutionError[];
47
+ /**
48
+ * Get error statistics
49
+ */
50
+ getStats(): ErrorStats;
51
+ /**
52
+ * Handle an execution error
53
+ */
54
+ handleError(error: Error, context: ErrorContext): ExecutionError;
55
+ /**
56
+ * Check if an error is recoverable
57
+ */
58
+ isRecoverable(error: ExecutionError): boolean;
59
+ /**
60
+ * Register error handler callback
61
+ */
62
+ onError(handler: ErrorHandler): void;
63
+ /**
64
+ * Remove error handler
65
+ */
66
+ removeHandler(handler: ErrorHandler): boolean;
67
+ /**
68
+ * Create human-readable error message
69
+ */
70
+ private createMessage;
71
+ /**
72
+ * Check if error is recoverable by code
73
+ */
74
+ private isRecoverableByCode;
75
+ }
76
+ export {};
77
+ //# sourceMappingURL=error-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-manager.d.ts","sourceRoot":"","sources":["../../src/core/error-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACf,2BAA0B;AAE3B;;GAEG;AACH,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AA0DpD;;GAEG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAC1D,OAAO,CAAC,MAAM,CAAwB;IAEtC,OAAO,CAAC,QAAQ,CAAsB;IAEtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAM;IAEtC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;IA0B1C;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM;IA0EzD;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;IAInD;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIzC;;OAEG;IACH,WAAW,IAAI,SAAS,YAAY,EAAE;IAItC;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,SAAK,GAAG,cAAc,EAAE;IAM5E;;OAEG;IACH,QAAQ,IAAI,UAAU;IA8CtB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc;IAmChE;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAI7C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAIpC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAS7C;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAG5B"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * ModestBench Error Manager
3
+ *
4
+ * Handles execution errors with context tracking, categorization, and provides
5
+ * structured error information for graceful degradation.
6
+ */
7
+ import type { ErrorContext, ErrorManager, ErrorStats, ExecutionError, ExecutionPhase } from "../types/index.js";
8
+ /**
9
+ * Error handler callback type
10
+ */
11
+ type ErrorHandler = (error: ExecutionError) => void;
12
+ /**
13
+ * Default error manager implementation
14
+ */
15
+ export declare class ModestBenchErrorManager implements ErrorManager {
16
+ private errors;
17
+ private handlers;
18
+ private readonly maxRecentErrors;
19
+ /**
20
+ * Clear error history
21
+ */
22
+ clearStats(): void;
23
+ /**
24
+ * Format error for display
25
+ */
26
+ formatError(error: ExecutionError): string;
27
+ /**
28
+ * Get error code for a given error
29
+ */
30
+ getErrorCode(error: Error, context: ErrorContext): string;
31
+ /**
32
+ * Get error count by phase
33
+ */
34
+ getErrorCountByPhase(phase: ExecutionPhase): number;
35
+ /**
36
+ * Get human-readable description for error code
37
+ */
38
+ getErrorDescription(code: string): string;
39
+ /**
40
+ * Get all error handlers (for testing)
41
+ */
42
+ getHandlers(): readonly ErrorHandler[];
43
+ /**
44
+ * Get recent errors for a specific phase
45
+ */
46
+ getRecentErrorsForPhase(phase: ExecutionPhase, limit?: number): ExecutionError[];
47
+ /**
48
+ * Get error statistics
49
+ */
50
+ getStats(): ErrorStats;
51
+ /**
52
+ * Handle an execution error
53
+ */
54
+ handleError(error: Error, context: ErrorContext): ExecutionError;
55
+ /**
56
+ * Check if an error is recoverable
57
+ */
58
+ isRecoverable(error: ExecutionError): boolean;
59
+ /**
60
+ * Register error handler callback
61
+ */
62
+ onError(handler: ErrorHandler): void;
63
+ /**
64
+ * Remove error handler
65
+ */
66
+ removeHandler(handler: ErrorHandler): boolean;
67
+ /**
68
+ * Create human-readable error message
69
+ */
70
+ private createMessage;
71
+ /**
72
+ * Check if error is recoverable by code
73
+ */
74
+ private isRecoverableByCode;
75
+ }
76
+ export {};
77
+ //# sourceMappingURL=error-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-manager.d.ts","sourceRoot":"","sources":["../../src/core/error-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACf,0BAA0B;AAE3B;;GAEG;AACH,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AA0DpD;;GAEG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAC1D,OAAO,CAAC,MAAM,CAAwB;IAEtC,OAAO,CAAC,QAAQ,CAAsB;IAEtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAM;IAEtC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;IA0B1C;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM;IA0EzD;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;IAInD;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIzC;;OAEG;IACH,WAAW,IAAI,SAAS,YAAY,EAAE;IAItC;;OAEG;IACH,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,SAAK,GAAG,cAAc,EAAE;IAM5E;;OAEG;IACH,QAAQ,IAAI,UAAU;IA8CtB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc;IAmChE;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAI7C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAIpC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAS7C;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAG5B"}