mcp-adr-analysis-server 2.0.21 → 2.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 (263) hide show
  1. package/README.md +94 -839
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/config/ai-config.d.ts.map +1 -1
  4. package/dist/src/config/ai-config.js +9 -9
  5. package/dist/src/config/ai-config.js.map +1 -1
  6. package/dist/src/index.d.ts +15 -0
  7. package/dist/src/index.d.ts.map +1 -1
  8. package/dist/src/index.js +1594 -837
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/prompts/analysis-prompts.d.ts +4 -1
  11. package/dist/src/prompts/analysis-prompts.d.ts.map +1 -1
  12. package/dist/src/prompts/analysis-prompts.js +61 -30
  13. package/dist/src/prompts/analysis-prompts.js.map +1 -1
  14. package/dist/src/prompts/index.d.ts +17 -1
  15. package/dist/src/prompts/index.d.ts.map +1 -1
  16. package/dist/src/prompts/index.js +325 -1
  17. package/dist/src/prompts/index.js.map +1 -1
  18. package/dist/src/prompts/rule-generation-prompts.d.ts +5 -1
  19. package/dist/src/prompts/rule-generation-prompts.d.ts.map +1 -1
  20. package/dist/src/prompts/rule-generation-prompts.js +5 -1
  21. package/dist/src/prompts/rule-generation-prompts.js.map +1 -1
  22. package/dist/src/prompts/security-prompts.d.ts +6 -1
  23. package/dist/src/prompts/security-prompts.d.ts.map +1 -1
  24. package/dist/src/prompts/security-prompts.js +6 -1
  25. package/dist/src/prompts/security-prompts.js.map +1 -1
  26. package/dist/src/prompts/todo-prompts.d.ts +49 -0
  27. package/dist/src/prompts/todo-prompts.d.ts.map +1 -0
  28. package/dist/src/prompts/todo-prompts.js +824 -0
  29. package/dist/src/prompts/todo-prompts.js.map +1 -0
  30. package/dist/src/resources/index.d.ts.map +1 -1
  31. package/dist/src/resources/index.js +9 -7
  32. package/dist/src/resources/index.js.map +1 -1
  33. package/dist/src/tools/adr-bootstrap-validation-tool.d.ts +47 -0
  34. package/dist/src/tools/adr-bootstrap-validation-tool.d.ts.map +1 -0
  35. package/dist/src/tools/adr-bootstrap-validation-tool.js +979 -0
  36. package/dist/src/tools/adr-bootstrap-validation-tool.js.map +1 -0
  37. package/dist/src/tools/adr-suggestion-tool.d.ts +1 -0
  38. package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
  39. package/dist/src/tools/adr-suggestion-tool.js +330 -32
  40. package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
  41. package/dist/src/tools/content-masking-tool.d.ts +5 -0
  42. package/dist/src/tools/content-masking-tool.d.ts.map +1 -1
  43. package/dist/src/tools/content-masking-tool.js +631 -28
  44. package/dist/src/tools/content-masking-tool.js.map +1 -1
  45. package/dist/src/tools/deployment-readiness-tool.d.ts +8 -5
  46. package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -1
  47. package/dist/src/tools/deployment-readiness-tool.js +1017 -93
  48. package/dist/src/tools/deployment-readiness-tool.js.map +1 -1
  49. package/dist/src/tools/environment-analysis-tool.d.ts +4 -0
  50. package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -1
  51. package/dist/src/tools/environment-analysis-tool.js +568 -24
  52. package/dist/src/tools/environment-analysis-tool.js.map +1 -1
  53. package/dist/src/tools/interactive-adr-planning-tool.d.ts.map +1 -1
  54. package/dist/src/tools/interactive-adr-planning-tool.js +270 -108
  55. package/dist/src/tools/interactive-adr-planning-tool.js.map +1 -1
  56. package/dist/src/tools/mcp-planning-tool.d.ts.map +1 -1
  57. package/dist/src/tools/mcp-planning-tool.js +316 -183
  58. package/dist/src/tools/mcp-planning-tool.js.map +1 -1
  59. package/dist/src/tools/memory-loading-tool.d.ts +60 -0
  60. package/dist/src/tools/memory-loading-tool.d.ts.map +1 -0
  61. package/dist/src/tools/memory-loading-tool.js +457 -0
  62. package/dist/src/tools/memory-loading-tool.js.map +1 -0
  63. package/dist/src/tools/research-integration-tool.d.ts +4 -1
  64. package/dist/src/tools/research-integration-tool.d.ts.map +1 -1
  65. package/dist/src/tools/research-integration-tool.js +5 -1
  66. package/dist/src/tools/research-integration-tool.js.map +1 -1
  67. package/dist/src/tools/review-existing-adrs-tool.d.ts +19 -0
  68. package/dist/src/tools/review-existing-adrs-tool.d.ts.map +1 -0
  69. package/dist/src/tools/review-existing-adrs-tool.js +1204 -0
  70. package/dist/src/tools/review-existing-adrs-tool.js.map +1 -0
  71. package/dist/src/tools/rule-generation-tool.d.ts +2 -0
  72. package/dist/src/tools/rule-generation-tool.d.ts.map +1 -1
  73. package/dist/src/tools/rule-generation-tool.js +274 -33
  74. package/dist/src/tools/rule-generation-tool.js.map +1 -1
  75. package/dist/src/tools/smart-git-push-tool-v2.d.ts +4 -0
  76. package/dist/src/tools/smart-git-push-tool-v2.d.ts.map +1 -1
  77. package/dist/src/tools/smart-git-push-tool-v2.js +423 -229
  78. package/dist/src/tools/smart-git-push-tool-v2.js.map +1 -1
  79. package/dist/src/tools/smart-git-push-tool.d.ts +3 -0
  80. package/dist/src/tools/smart-git-push-tool.d.ts.map +1 -1
  81. package/dist/src/tools/smart-git-push-tool.js +241 -235
  82. package/dist/src/tools/smart-git-push-tool.js.map +1 -1
  83. package/dist/src/tools/tool-chain-orchestrator.d.ts +2 -2
  84. package/dist/src/tools/tool-chain-orchestrator.d.ts.map +1 -1
  85. package/dist/src/tools/tool-chain-orchestrator.js +152 -93
  86. package/dist/src/tools/tool-chain-orchestrator.js.map +1 -1
  87. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +22 -13
  88. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -1
  89. package/dist/src/tools/troubleshoot-guided-workflow-tool.js +660 -28
  90. package/dist/src/tools/troubleshoot-guided-workflow-tool.js.map +1 -1
  91. package/dist/src/types/ape-framework.d.ts +93 -0
  92. package/dist/src/types/ape-framework.d.ts.map +1 -1
  93. package/dist/src/types/ape-framework.js +10 -10
  94. package/dist/src/types/ape-framework.js.map +1 -1
  95. package/dist/src/types/enhanced-errors.d.ts +173 -0
  96. package/dist/src/types/enhanced-errors.d.ts.map +1 -0
  97. package/dist/src/types/enhanced-errors.js +668 -0
  98. package/dist/src/types/enhanced-errors.js.map +1 -0
  99. package/dist/src/types/index.d.ts +129 -3
  100. package/dist/src/types/index.d.ts.map +1 -1
  101. package/dist/src/types/index.js +15 -0
  102. package/dist/src/types/index.js.map +1 -1
  103. package/dist/src/types/knowledge-generation.d.ts +78 -0
  104. package/dist/src/types/knowledge-generation.d.ts.map +1 -1
  105. package/dist/src/types/knowledge-generation.js +10 -6
  106. package/dist/src/types/knowledge-generation.js.map +1 -1
  107. package/dist/src/types/knowledge-graph-schemas.d.ts +92 -0
  108. package/dist/src/types/knowledge-graph-schemas.d.ts.map +1 -1
  109. package/dist/src/types/knowledge-graph-schemas.js +45 -17
  110. package/dist/src/types/knowledge-graph-schemas.js.map +1 -1
  111. package/dist/src/types/memory-entities.d.ts +7209 -0
  112. package/dist/src/types/memory-entities.d.ts.map +1 -0
  113. package/dist/src/types/memory-entities.js +395 -0
  114. package/dist/src/types/memory-entities.js.map +1 -0
  115. package/dist/src/types/reflexion-framework.d.ts +44 -0
  116. package/dist/src/types/reflexion-framework.d.ts.map +1 -1
  117. package/dist/src/types/reflexion-framework.js +7 -7
  118. package/dist/src/types/reflexion-framework.js.map +1 -1
  119. package/dist/src/types/todo-json-schemas.d.ts +7 -653
  120. package/dist/src/types/todo-json-schemas.d.ts.map +1 -1
  121. package/dist/src/types/todo-json-schemas.js +6 -110
  122. package/dist/src/types/todo-json-schemas.js.map +1 -1
  123. package/dist/src/types/tool-arguments.d.ts +224 -0
  124. package/dist/src/types/tool-arguments.d.ts.map +1 -0
  125. package/dist/src/types/tool-arguments.js +6 -0
  126. package/dist/src/types/tool-arguments.js.map +1 -0
  127. package/dist/src/utils/actual-file-operations.d.ts.map +1 -1
  128. package/dist/src/utils/actual-file-operations.js +25 -9
  129. package/dist/src/utils/actual-file-operations.js.map +1 -1
  130. package/dist/src/utils/adr-discovery.d.ts +33 -1
  131. package/dist/src/utils/adr-discovery.d.ts.map +1 -1
  132. package/dist/src/utils/adr-discovery.js +14 -9
  133. package/dist/src/utils/adr-discovery.js.map +1 -1
  134. package/dist/src/utils/adr-suggestions.d.ts +72 -0
  135. package/dist/src/utils/adr-suggestions.d.ts.map +1 -1
  136. package/dist/src/utils/adr-suggestions.js +6 -0
  137. package/dist/src/utils/adr-suggestions.js.map +1 -1
  138. package/dist/src/utils/cache.d.ts.map +1 -1
  139. package/dist/src/utils/cache.js +22 -19
  140. package/dist/src/utils/cache.js.map +1 -1
  141. package/dist/src/utils/chain-of-thought-template.d.ts +13 -1
  142. package/dist/src/utils/chain-of-thought-template.d.ts.map +1 -1
  143. package/dist/src/utils/chain-of-thought-template.js +31 -22
  144. package/dist/src/utils/chain-of-thought-template.js.map +1 -1
  145. package/dist/src/utils/config.d.ts.map +1 -1
  146. package/dist/src/utils/config.js +1 -0
  147. package/dist/src/utils/config.js.map +1 -1
  148. package/dist/src/utils/directory-compat.js +1 -1
  149. package/dist/src/utils/directory-compat.js.map +1 -1
  150. package/dist/src/utils/enhanced-logging.d.ts +195 -0
  151. package/dist/src/utils/enhanced-logging.d.ts.map +1 -0
  152. package/dist/src/utils/enhanced-logging.js +449 -0
  153. package/dist/src/utils/enhanced-logging.js.map +1 -0
  154. package/dist/src/utils/file-system.d.ts +182 -34
  155. package/dist/src/utils/file-system.d.ts.map +1 -1
  156. package/dist/src/utils/file-system.js +648 -774
  157. package/dist/src/utils/file-system.js.map +1 -1
  158. package/dist/src/utils/gitleaks-detector.d.ts +50 -0
  159. package/dist/src/utils/gitleaks-detector.d.ts.map +1 -0
  160. package/dist/src/utils/gitleaks-detector.js +334 -0
  161. package/dist/src/utils/gitleaks-detector.js.map +1 -0
  162. package/dist/src/utils/interactive-approval.d.ts +1 -1
  163. package/dist/src/utils/interactive-approval.d.ts.map +1 -1
  164. package/dist/src/utils/interactive-approval.js +22 -17
  165. package/dist/src/utils/interactive-approval.js.map +1 -1
  166. package/dist/src/utils/json-safe.d.ts.map +1 -1
  167. package/dist/src/utils/json-safe.js +9 -6
  168. package/dist/src/utils/json-safe.js.map +1 -1
  169. package/dist/src/utils/knowledge-graph-manager.d.ts +37 -1
  170. package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
  171. package/dist/src/utils/knowledge-graph-manager.js +315 -70
  172. package/dist/src/utils/knowledge-graph-manager.js.map +1 -1
  173. package/dist/src/utils/location-filter.d.ts +35 -10
  174. package/dist/src/utils/location-filter.d.ts.map +1 -1
  175. package/dist/src/utils/location-filter.js +360 -94
  176. package/dist/src/utils/location-filter.js.map +1 -1
  177. package/dist/src/utils/mcp-response-validator.d.ts.map +1 -1
  178. package/dist/src/utils/mcp-response-validator.js +34 -19
  179. package/dist/src/utils/mcp-response-validator.js.map +1 -1
  180. package/dist/src/utils/memory-entity-manager.d.ts +134 -0
  181. package/dist/src/utils/memory-entity-manager.d.ts.map +1 -0
  182. package/dist/src/utils/memory-entity-manager.js +851 -0
  183. package/dist/src/utils/memory-entity-manager.js.map +1 -0
  184. package/dist/src/utils/memory-health-scoring.d.ts +125 -0
  185. package/dist/src/utils/memory-health-scoring.d.ts.map +1 -0
  186. package/dist/src/utils/memory-health-scoring.js +277 -0
  187. package/dist/src/utils/memory-health-scoring.js.map +1 -0
  188. package/dist/src/utils/memory-migration-manager.d.ts +93 -0
  189. package/dist/src/utils/memory-migration-manager.d.ts.map +1 -0
  190. package/dist/src/utils/memory-migration-manager.js +842 -0
  191. package/dist/src/utils/memory-migration-manager.js.map +1 -0
  192. package/dist/src/utils/memory-relationship-mapper.d.ts +87 -0
  193. package/dist/src/utils/memory-relationship-mapper.d.ts.map +1 -0
  194. package/dist/src/utils/memory-relationship-mapper.js +482 -0
  195. package/dist/src/utils/memory-relationship-mapper.js.map +1 -0
  196. package/dist/src/utils/memory-rollback-manager.d.ts +105 -0
  197. package/dist/src/utils/memory-rollback-manager.d.ts.map +1 -0
  198. package/dist/src/utils/memory-rollback-manager.js +575 -0
  199. package/dist/src/utils/memory-rollback-manager.js.map +1 -0
  200. package/dist/src/utils/memory-transformation.d.ts +59 -0
  201. package/dist/src/utils/memory-transformation.d.ts.map +1 -0
  202. package/dist/src/utils/memory-transformation.js +742 -0
  203. package/dist/src/utils/memory-transformation.js.map +1 -0
  204. package/dist/src/utils/output-masking.d.ts +12 -0
  205. package/dist/src/utils/output-masking.d.ts.map +1 -1
  206. package/dist/src/utils/output-masking.js +5 -0
  207. package/dist/src/utils/output-masking.js.map +1 -1
  208. package/dist/src/utils/prompt-execution.d.ts.map +1 -1
  209. package/dist/src/utils/prompt-execution.js +72 -51
  210. package/dist/src/utils/prompt-execution.js.map +1 -1
  211. package/dist/src/utils/release-readiness-detector.d.ts.map +1 -1
  212. package/dist/src/utils/release-readiness-detector.js +43 -42
  213. package/dist/src/utils/release-readiness-detector.js.map +1 -1
  214. package/dist/src/utils/research-integration.d.ts.map +1 -1
  215. package/dist/src/utils/research-integration.js +73 -44
  216. package/dist/src/utils/research-integration.js.map +1 -1
  217. package/dist/src/utils/research-questions.d.ts.map +1 -1
  218. package/dist/src/utils/research-questions.js +40 -14
  219. package/dist/src/utils/research-questions.js.map +1 -1
  220. package/dist/src/utils/ripgrep-wrapper.d.ts +84 -0
  221. package/dist/src/utils/ripgrep-wrapper.d.ts.map +1 -0
  222. package/dist/src/utils/ripgrep-wrapper.js +255 -0
  223. package/dist/src/utils/ripgrep-wrapper.js.map +1 -0
  224. package/dist/src/utils/rule-generation.d.ts.map +1 -1
  225. package/dist/src/utils/rule-generation.js +26 -15
  226. package/dist/src/utils/rule-generation.js.map +1 -1
  227. package/dist/src/utils/todo-file-watcher.d.ts +11 -23
  228. package/dist/src/utils/todo-file-watcher.d.ts.map +1 -1
  229. package/dist/src/utils/todo-file-watcher.js +18 -156
  230. package/dist/src/utils/todo-file-watcher.js.map +1 -1
  231. package/dist/src/utils/tree-sitter-analyzer.d.ts +185 -0
  232. package/dist/src/utils/tree-sitter-analyzer.d.ts.map +1 -0
  233. package/dist/src/utils/tree-sitter-analyzer.js +885 -0
  234. package/dist/src/utils/tree-sitter-analyzer.js.map +1 -0
  235. package/package.json +51 -10
  236. package/dist/src/tools/smart-score-tool.d.ts +0 -173
  237. package/dist/src/tools/smart-score-tool.d.ts.map +0 -1
  238. package/dist/src/tools/smart-score-tool.js +0 -681
  239. package/dist/src/tools/smart-score-tool.js.map +0 -1
  240. package/dist/src/tools/todo-management-tool-v2.d.ts +0 -368
  241. package/dist/src/tools/todo-management-tool-v2.d.ts.map +0 -1
  242. package/dist/src/tools/todo-management-tool-v2.js +0 -922
  243. package/dist/src/tools/todo-management-tool-v2.js.map +0 -1
  244. package/dist/src/utils/enhanced-sensitive-detector.d.ts +0 -61
  245. package/dist/src/utils/enhanced-sensitive-detector.d.ts.map +0 -1
  246. package/dist/src/utils/enhanced-sensitive-detector.js +0 -437
  247. package/dist/src/utils/enhanced-sensitive-detector.js.map +0 -1
  248. package/dist/src/utils/project-health-scoring.d.ts +0 -177
  249. package/dist/src/utils/project-health-scoring.d.ts.map +0 -1
  250. package/dist/src/utils/project-health-scoring.js +0 -370
  251. package/dist/src/utils/project-health-scoring.js.map +0 -1
  252. package/dist/src/utils/todo-json-manager.d.ts +0 -71
  253. package/dist/src/utils/todo-json-manager.d.ts.map +0 -1
  254. package/dist/src/utils/todo-json-manager.js +0 -396
  255. package/dist/src/utils/todo-json-manager.js.map +0 -1
  256. package/dist/src/utils/todo-markdown-converter.d.ts +0 -16
  257. package/dist/src/utils/todo-markdown-converter.d.ts.map +0 -1
  258. package/dist/src/utils/todo-markdown-converter.js +0 -362
  259. package/dist/src/utils/todo-markdown-converter.js.map +0 -1
  260. package/dist/src/utils/todo-migration.d.ts +0 -47
  261. package/dist/src/utils/todo-migration.d.ts.map +0 -1
  262. package/dist/src/utils/todo-migration.js +0 -261
  263. package/dist/src/utils/todo-migration.js.map +0 -1
@@ -0,0 +1,449 @@
1
+ /**
2
+ * Enhanced Logging System
3
+ *
4
+ * Provides comprehensive logging with structured error reporting,
5
+ * diagnostic context, and actionable error messages.
6
+ */
7
+ import { EnhancedError } from '../types/enhanced-errors.js';
8
+ /**
9
+ * Enhanced Logger with comprehensive error reporting and diagnostics
10
+ */
11
+ export class EnhancedLogger {
12
+ config;
13
+ logBuffer = [];
14
+ maxBufferSize = 1000;
15
+ constructor(config = {}) {
16
+ this.config = {
17
+ level: 'info',
18
+ enableConsole: true,
19
+ enableFile: false,
20
+ enableStructuredLogging: true,
21
+ enablePerformanceMetrics: true,
22
+ maxFileSize: 10 * 1024 * 1024, // 10MB
23
+ maxFiles: 5,
24
+ ...config,
25
+ };
26
+ }
27
+ /**
28
+ * Log debug information
29
+ */
30
+ debug(message, component, context) {
31
+ this.log('debug', message, component, context ? { context } : {});
32
+ }
33
+ /**
34
+ * Log informational messages
35
+ */
36
+ info(message, component, context) {
37
+ this.log('info', message, component, context ? { context } : {});
38
+ }
39
+ /**
40
+ * Log warning messages
41
+ */
42
+ warn(message, component, context) {
43
+ this.log('warn', message, component, context ? { context } : {});
44
+ }
45
+ /**
46
+ * Log error messages
47
+ */
48
+ error(message, component, error, context) {
49
+ const options = {};
50
+ if (error)
51
+ options.error = error;
52
+ if (context)
53
+ options.context = context;
54
+ this.log('error', message, component, options);
55
+ }
56
+ /**
57
+ * Log critical errors
58
+ */
59
+ critical(message, component, error, context) {
60
+ const options = {};
61
+ if (error)
62
+ options.error = error;
63
+ if (context)
64
+ options.context = context;
65
+ this.log('critical', message, component, options);
66
+ }
67
+ /**
68
+ * Log enhanced errors with full diagnostic information
69
+ */
70
+ logEnhancedError(error) {
71
+ const entry = {
72
+ timestamp: new Date(),
73
+ level: this.mapSeverityToLogLevel(error.severity),
74
+ message: error.message,
75
+ component: error.diagnostics.component,
76
+ ...(error.diagnostics.operation && { operation: error.diagnostics.operation }),
77
+ context: {
78
+ code: error.code,
79
+ severity: error.severity,
80
+ recoverable: error.recoverable,
81
+ retryable: error.retryable,
82
+ suggestions: error.suggestions,
83
+ ...error.diagnostics.context,
84
+ },
85
+ error: error.toLogObject(),
86
+ diagnostics: error.diagnostics,
87
+ ...(error.diagnostics.performanceMetrics && {
88
+ performanceMetrics: error.diagnostics.performanceMetrics,
89
+ }),
90
+ };
91
+ this.writeLogEntry(entry);
92
+ }
93
+ /**
94
+ * Log operation start with performance tracking
95
+ */
96
+ logOperationStart(operation, component, context) {
97
+ const operationId = this.generateOperationId();
98
+ this.log('info', `Operation started: ${operation}`, component, {
99
+ context: { operationId, ...context },
100
+ operation,
101
+ });
102
+ return operationId;
103
+ }
104
+ /**
105
+ * Log operation completion with performance metrics
106
+ */
107
+ logOperationComplete(operationId, operation, component, duration, context) {
108
+ this.log('info', `Operation completed: ${operation}`, component, {
109
+ context: { operationId, duration, ...context },
110
+ operation,
111
+ performanceMetrics: { duration },
112
+ });
113
+ }
114
+ /**
115
+ * Log operation failure with recovery suggestions
116
+ */
117
+ logOperationFailure(operationId, operation, component, error, duration, context) {
118
+ this.log('error', `Operation failed: ${operation}`, component, {
119
+ error,
120
+ context: { operationId, duration, ...context },
121
+ operation,
122
+ performanceMetrics: { duration },
123
+ });
124
+ }
125
+ /**
126
+ * Log performance metrics
127
+ */
128
+ logPerformanceMetrics(component, operation, metrics) {
129
+ this.log('info', `Performance metrics for ${operation}`, component, {
130
+ operation,
131
+ performanceMetrics: metrics,
132
+ });
133
+ }
134
+ /**
135
+ * Get recent log entries for debugging
136
+ */
137
+ getRecentLogs(count = 100) {
138
+ return this.logBuffer.slice(-count);
139
+ }
140
+ /**
141
+ * Get logs filtered by level and component
142
+ */
143
+ getFilteredLogs(filters) {
144
+ return this.logBuffer.filter(entry => {
145
+ if (filters.level && !this.levelMeetsFilter(filters.level, entry.level)) {
146
+ return false;
147
+ }
148
+ if (filters.component && entry.component !== filters.component) {
149
+ return false;
150
+ }
151
+ if (filters.operation && entry.operation !== filters.operation) {
152
+ return false;
153
+ }
154
+ if (filters.since && entry.timestamp < filters.since) {
155
+ return false;
156
+ }
157
+ return true;
158
+ });
159
+ }
160
+ /**
161
+ * Clear log buffer
162
+ */
163
+ clearLogs() {
164
+ this.logBuffer = [];
165
+ }
166
+ /**
167
+ * Core logging method
168
+ */
169
+ log(level, message, component, options = {}) {
170
+ if (!this.isLevelEnabled(level)) {
171
+ return;
172
+ }
173
+ const entry = {
174
+ timestamp: new Date(),
175
+ level,
176
+ message,
177
+ component,
178
+ ...(options.operation && { operation: options.operation }),
179
+ ...(options.context && { context: options.context }),
180
+ ...(options.error && { error: this.serializeError(options.error) }),
181
+ ...((this.config.enablePerformanceMetrics || options.performanceMetrics) && {
182
+ performanceMetrics: this.config.enablePerformanceMetrics
183
+ ? {
184
+ memoryUsage: this.getMemoryUsage(),
185
+ ...options.performanceMetrics,
186
+ }
187
+ : options.performanceMetrics,
188
+ }),
189
+ };
190
+ this.writeLogEntry(entry);
191
+ }
192
+ /**
193
+ * Write log entry to configured outputs
194
+ */
195
+ writeLogEntry(entry) {
196
+ // Add to buffer
197
+ this.logBuffer.push(entry);
198
+ if (this.logBuffer.length > this.maxBufferSize) {
199
+ this.logBuffer.shift();
200
+ }
201
+ // Console output
202
+ if (this.config.enableConsole) {
203
+ this.writeToConsole(entry);
204
+ }
205
+ // File output (if configured)
206
+ if (this.config.enableFile && this.config.filePath) {
207
+ this.writeToFile(entry);
208
+ }
209
+ }
210
+ /**
211
+ * Write to console with appropriate formatting
212
+ */
213
+ writeToConsole(entry) {
214
+ const timestamp = entry.timestamp.toISOString();
215
+ const prefix = `[${timestamp}] [${entry.level.toUpperCase()}] [${entry.component}]`;
216
+ if (this.config.enableStructuredLogging) {
217
+ const logData = {
218
+ ...entry,
219
+ timestamp: timestamp,
220
+ };
221
+ switch (entry.level) {
222
+ case 'critical':
223
+ case 'error':
224
+ console.error(prefix, entry.message, logData);
225
+ break;
226
+ case 'warn':
227
+ console.warn(prefix, entry.message, logData);
228
+ break;
229
+ case 'debug':
230
+ console.debug(prefix, entry.message, logData);
231
+ break;
232
+ default:
233
+ console.log(prefix, entry.message, logData);
234
+ }
235
+ }
236
+ else {
237
+ const message = `${prefix} ${entry.message}`;
238
+ switch (entry.level) {
239
+ case 'critical':
240
+ case 'error':
241
+ console.error(message);
242
+ if (entry.error) {
243
+ console.error('Error details:', entry.error);
244
+ }
245
+ break;
246
+ case 'warn':
247
+ console.warn(message);
248
+ break;
249
+ case 'debug':
250
+ console.debug(message);
251
+ break;
252
+ default:
253
+ console.log(message);
254
+ }
255
+ }
256
+ }
257
+ /**
258
+ * Write to file (placeholder - would need file system implementation)
259
+ */
260
+ writeToFile(_entry) {
261
+ // File logging would be implemented here
262
+ // For now, this is a placeholder as file operations depend on environment
263
+ }
264
+ /**
265
+ * Check if log level is enabled
266
+ */
267
+ isLevelEnabled(level, entryLevel) {
268
+ const levels = ['debug', 'info', 'warn', 'error', 'critical'];
269
+ const configLevelIndex = levels.indexOf(this.config.level);
270
+ const checkLevelIndex = levels.indexOf(entryLevel || level);
271
+ return checkLevelIndex >= configLevelIndex;
272
+ }
273
+ /**
274
+ * Check if a specific level meets the filter criteria
275
+ */
276
+ levelMeetsFilter(filterLevel, entryLevel) {
277
+ const levels = ['debug', 'info', 'warn', 'error', 'critical'];
278
+ const filterLevelIndex = levels.indexOf(filterLevel);
279
+ const entryLevelIndex = levels.indexOf(entryLevel);
280
+ return entryLevelIndex >= filterLevelIndex;
281
+ }
282
+ /**
283
+ * Map error severity to log level
284
+ */
285
+ mapSeverityToLogLevel(severity) {
286
+ switch (severity) {
287
+ case 'critical':
288
+ return 'critical';
289
+ case 'high':
290
+ return 'error';
291
+ case 'medium':
292
+ return 'warn';
293
+ case 'low':
294
+ return 'info';
295
+ default:
296
+ return 'info';
297
+ }
298
+ }
299
+ /**
300
+ * Serialize error for logging
301
+ */
302
+ serializeError(error) {
303
+ if (error instanceof EnhancedError) {
304
+ return error.toLogObject();
305
+ }
306
+ return {
307
+ name: error.name,
308
+ message: error.message,
309
+ stack: error.stack,
310
+ cause: error.cause ? this.serializeError(error.cause) : undefined,
311
+ };
312
+ }
313
+ /**
314
+ * Get current memory usage
315
+ */
316
+ getMemoryUsage() {
317
+ if (typeof process !== 'undefined' && process.memoryUsage) {
318
+ return Math.round(process.memoryUsage().heapUsed / 1024 / 1024); // MB
319
+ }
320
+ return 0;
321
+ }
322
+ /**
323
+ * Generate unique operation ID
324
+ */
325
+ generateOperationId() {
326
+ return `op_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
327
+ }
328
+ }
329
+ /**
330
+ * Global logger instance
331
+ */
332
+ export const logger = new EnhancedLogger();
333
+ /**
334
+ * Create component-specific logger
335
+ */
336
+ export function createComponentLogger(component, config) {
337
+ return new ComponentLogger(component, config);
338
+ }
339
+ /**
340
+ * Component-specific logger wrapper
341
+ */
342
+ export class ComponentLogger {
343
+ logger;
344
+ component;
345
+ constructor(component, config) {
346
+ this.component = component;
347
+ this.logger = config ? new EnhancedLogger(config) : logger; // Use global logger if no config
348
+ }
349
+ debug(message, context) {
350
+ this.logger.debug(message, this.component, context);
351
+ }
352
+ info(message, context) {
353
+ this.logger.info(message, this.component, context);
354
+ }
355
+ warn(message, context) {
356
+ this.logger.warn(message, this.component, context);
357
+ }
358
+ error(message, error, context) {
359
+ this.logger.error(message, this.component, error, context);
360
+ }
361
+ critical(message, error, context) {
362
+ this.logger.critical(message, this.component, error, context);
363
+ }
364
+ logEnhancedError(error) {
365
+ this.logger.logEnhancedError(error);
366
+ }
367
+ logOperationStart(operation, context) {
368
+ return this.logger.logOperationStart(operation, this.component, context);
369
+ }
370
+ logOperationComplete(operationId, operation, duration, context) {
371
+ this.logger.logOperationComplete(operationId, operation, this.component, duration, context);
372
+ }
373
+ logOperationFailure(operationId, operation, error, duration, context) {
374
+ this.logger.logOperationFailure(operationId, operation, this.component, error, duration, context);
375
+ }
376
+ logPerformanceMetrics(operation, metrics) {
377
+ this.logger.logPerformanceMetrics(this.component, operation, metrics);
378
+ }
379
+ }
380
+ /**
381
+ * Error recovery utilities
382
+ */
383
+ export class ErrorRecoveryManager {
384
+ logger;
385
+ recoveryStrategies = new Map();
386
+ constructor(logger) {
387
+ this.logger = logger || new EnhancedLogger();
388
+ }
389
+ /**
390
+ * Register recovery strategy for specific error codes
391
+ */
392
+ registerRecoveryStrategy(errorCode, strategy) {
393
+ this.recoveryStrategies.set(errorCode, strategy);
394
+ }
395
+ /**
396
+ * Attempt to recover from an enhanced error
397
+ */
398
+ async attemptRecovery(error) {
399
+ if (!error.recoverable) {
400
+ this.logger.warn('Error is not recoverable', 'ErrorRecoveryManager', {
401
+ errorCode: error.code,
402
+ message: error.message,
403
+ });
404
+ return false;
405
+ }
406
+ const strategy = this.recoveryStrategies.get(error.code);
407
+ if (!strategy) {
408
+ this.logger.warn('No recovery strategy found', 'ErrorRecoveryManager', {
409
+ errorCode: error.code,
410
+ message: error.message,
411
+ });
412
+ return false;
413
+ }
414
+ try {
415
+ this.logger.info('Attempting error recovery', 'ErrorRecoveryManager', {
416
+ errorCode: error.code,
417
+ message: error.message,
418
+ });
419
+ const recovered = await strategy(error);
420
+ if (recovered) {
421
+ this.logger.info('Error recovery successful', 'ErrorRecoveryManager', {
422
+ errorCode: error.code,
423
+ message: error.message,
424
+ });
425
+ }
426
+ else {
427
+ this.logger.warn('Error recovery failed', 'ErrorRecoveryManager', {
428
+ errorCode: error.code,
429
+ message: error.message,
430
+ });
431
+ }
432
+ return recovered;
433
+ }
434
+ catch (recoveryError) {
435
+ this.logger.error('Error recovery threw exception', 'ErrorRecoveryManager', recoveryError, {
436
+ originalErrorCode: error.code,
437
+ originalMessage: error.message,
438
+ });
439
+ return false;
440
+ }
441
+ }
442
+ /**
443
+ * Get recovery suggestions for an error
444
+ */
445
+ getRecoverySuggestions(error) {
446
+ return error.suggestions.map(s => `${s.action}: ${s.description}`);
447
+ }
448
+ }
449
+ //# sourceMappingURL=enhanced-logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanced-logging.js","sourceRoot":"","sources":["../../../src/utils/enhanced-logging.ts"],"names":[],"mappings":"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"}