vibecodingmachine-core 2026.2.20-438 → 2026.2.26-1739

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 (202) hide show
  1. package/README.md +240 -0
  2. package/package.json +10 -2
  3. package/src/agents/Agent.js +300 -0
  4. package/src/agents/AgentAdditionService.js +311 -0
  5. package/src/agents/AgentCheckService.js +690 -0
  6. package/src/agents/AgentInstallationService.js +140 -0
  7. package/src/agents/AgentSetupService.js +467 -0
  8. package/src/agents/AgentStatus.js +183 -0
  9. package/src/agents/AgentVerificationService.js +634 -0
  10. package/src/agents/ConfigurationSchemaValidator.js +543 -0
  11. package/src/agents/EnvironmentConfigurationManager.js +602 -0
  12. package/src/agents/InstallationErrorHandler.js +372 -0
  13. package/src/agents/InstallationLog.js +363 -0
  14. package/src/agents/InstallationMethod.js +510 -0
  15. package/src/agents/InstallationOrchestrator.js +352 -0
  16. package/src/agents/InstallationProgressReporter.js +372 -0
  17. package/src/agents/InstallationRetryManager.js +322 -0
  18. package/src/agents/InstallationType.js +254 -0
  19. package/src/agents/OperationTypes.js +310 -0
  20. package/src/agents/PerformanceMetricsCollector.js +493 -0
  21. package/src/agents/SecurityValidationService.js +534 -0
  22. package/src/agents/VerificationTest.js +354 -0
  23. package/src/agents/VerificationType.js +226 -0
  24. package/src/agents/WindowsPermissionHandler.js +518 -0
  25. package/src/agents/config/AgentConfigManager.js +393 -0
  26. package/src/agents/config/AgentDefaultsRegistry.js +373 -0
  27. package/src/agents/config/ConfigValidator.js +281 -0
  28. package/src/agents/discovery/AgentDiscoveryService.js +707 -0
  29. package/src/agents/logging/AgentLogger.js +511 -0
  30. package/src/agents/status/AgentStatusManager.js +481 -0
  31. package/src/agents/storage/FileManager.js +454 -0
  32. package/src/agents/verification/AgentCommunicationTester.js +474 -0
  33. package/src/agents/verification/BaseVerifier.js +430 -0
  34. package/src/agents/verification/CommandVerifier.js +480 -0
  35. package/src/agents/verification/FileOperationVerifier.js +453 -0
  36. package/src/agents/verification/ResultAnalyzer.js +707 -0
  37. package/src/agents/verification/TestRequirementManager.js +495 -0
  38. package/src/agents/verification/VerificationRunner.js +433 -0
  39. package/src/agents/windows/BaseWindowsInstaller.js +441 -0
  40. package/src/agents/windows/ChocolateyInstaller.js +509 -0
  41. package/src/agents/windows/DirectInstaller.js +443 -0
  42. package/src/agents/windows/InstallerFactory.js +391 -0
  43. package/src/agents/windows/NpmInstaller.js +505 -0
  44. package/src/agents/windows/PowerShellInstaller.js +458 -0
  45. package/src/agents/windows/WinGetInstaller.js +390 -0
  46. package/src/analysis/analysis-reporter.js +132 -0
  47. package/src/analysis/boundary-detector.js +712 -0
  48. package/src/analysis/categorizer.js +340 -0
  49. package/src/analysis/codebase-scanner.js +384 -0
  50. package/src/analysis/line-counter.js +513 -0
  51. package/src/analysis/priority-calculator.js +679 -0
  52. package/src/analysis/report/analysis-report.js +250 -0
  53. package/src/analysis/report/package-analyzer.js +278 -0
  54. package/src/analysis/report/recommendation-generator.js +382 -0
  55. package/src/analysis/report/statistics-generator.js +515 -0
  56. package/src/analysis/reports/analysis-report-model.js +101 -0
  57. package/src/analysis/reports/recommendation-generator.js +283 -0
  58. package/src/analysis/reports/report-generators.js +191 -0
  59. package/src/analysis/reports/statistics-calculator.js +231 -0
  60. package/src/analysis/reports/trend-analyzer.js +219 -0
  61. package/src/analysis/strategy-generator.js +814 -0
  62. package/src/auto-mode/AutoModeBusinessLogic.js +836 -0
  63. package/src/config/refactoring-config.js +307 -0
  64. package/src/health-tracking/json-storage.js +38 -2
  65. package/src/ide-integration/applescript-manager-core.js +233 -0
  66. package/src/ide-integration/applescript-manager.cjs +357 -28
  67. package/src/ide-integration/applescript-manager.js +89 -3599
  68. package/src/ide-integration/cdp-manager.js +306 -0
  69. package/src/ide-integration/claude-code-cli-manager.cjs +1 -1
  70. package/src/ide-integration/continuation-handler.js +337 -0
  71. package/src/ide-integration/ide-status-checker.js +292 -0
  72. package/src/ide-integration/macos-ide-manager.js +627 -0
  73. package/src/ide-integration/macos-text-sender.js +528 -0
  74. package/src/ide-integration/response-reader.js +548 -0
  75. package/src/ide-integration/windows-automation-manager.js +121 -0
  76. package/src/ide-integration/windows-ide-manager.js +373 -0
  77. package/src/index.cjs +25 -3
  78. package/src/index.js +15 -1
  79. package/src/llm/direct-llm-manager.cjs +90 -2
  80. package/src/models/compliance-report.js +538 -0
  81. package/src/models/file-analysis.js +681 -0
  82. package/src/models/refactoring-plan.js +770 -0
  83. package/src/monitoring/alert-system.js +834 -0
  84. package/src/monitoring/compliance-progress-tracker.js +437 -0
  85. package/src/monitoring/continuous-scan-notifications.js +661 -0
  86. package/src/monitoring/continuous-scanner.js +279 -0
  87. package/src/monitoring/file-monitor/file-analyzer.js +262 -0
  88. package/src/monitoring/file-monitor/file-monitor.js +237 -0
  89. package/src/monitoring/file-monitor/watcher.js +194 -0
  90. package/src/monitoring/file-monitor.js +17 -0
  91. package/src/monitoring/notification-manager.js +437 -0
  92. package/src/monitoring/scanner-core.js +368 -0
  93. package/src/monitoring/scanner-events.js +214 -0
  94. package/src/monitoring/violation-notification-system.js +515 -0
  95. package/src/refactoring/boundaries/cohesion-analyzer.js +316 -0
  96. package/src/refactoring/boundaries/extraction-result.js +285 -0
  97. package/src/refactoring/boundaries/extraction-strategies.js +392 -0
  98. package/src/refactoring/boundaries/module-boundary.js +209 -0
  99. package/src/refactoring/boundary/boundary-detector.js +741 -0
  100. package/src/refactoring/boundary/boundary-types.js +405 -0
  101. package/src/refactoring/boundary/extraction-strategies.js +554 -0
  102. package/src/refactoring/boundary-extraction-result.js +77 -0
  103. package/src/refactoring/boundary-extraction-strategies.js +330 -0
  104. package/src/refactoring/boundary-extractor.js +384 -0
  105. package/src/refactoring/boundary-types.js +46 -0
  106. package/src/refactoring/circular/circular-dependency.js +88 -0
  107. package/src/refactoring/circular/cycle-detection.js +147 -0
  108. package/src/refactoring/circular/dependency-node.js +82 -0
  109. package/src/refactoring/circular/dependency-result.js +107 -0
  110. package/src/refactoring/circular/dependency-types.js +58 -0
  111. package/src/refactoring/circular/graph-builder.js +213 -0
  112. package/src/refactoring/circular/resolution-strategy.js +72 -0
  113. package/src/refactoring/circular/strategy-generator.js +229 -0
  114. package/src/refactoring/circular-dependency-resolver-original.js +809 -0
  115. package/src/refactoring/circular-dependency-resolver.js +200 -0
  116. package/src/refactoring/code-mover.js +761 -0
  117. package/src/refactoring/file-splitter.js +696 -0
  118. package/src/refactoring/functionality-validator.js +816 -0
  119. package/src/refactoring/import-manager.js +774 -0
  120. package/src/refactoring/module-boundary.js +107 -0
  121. package/src/refactoring/refactoring-executor.js +672 -0
  122. package/src/refactoring/refactoring-rollback.js +614 -0
  123. package/src/refactoring/test-validator.js +631 -0
  124. package/src/requirement-management/default-requirement-manager.js +321 -0
  125. package/src/requirement-management/requirement-file-parser.js +159 -0
  126. package/src/requirement-management/requirement-sequencer.js +221 -0
  127. package/src/rui/commands/AgentCommandParser.js +600 -0
  128. package/src/rui/commands/AgentCommands.js +487 -0
  129. package/src/rui/commands/AgentResponseFormatter.js +832 -0
  130. package/src/scripts/verify-full-compliance.js +269 -0
  131. package/src/sync/sync-engine-core.js +1 -0
  132. package/src/sync/sync-engine-remote-handlers.js +135 -0
  133. package/src/task-generation/automated-task-generator.js +351 -0
  134. package/src/task-generation/prioritizer.js +287 -0
  135. package/src/task-generation/task-list-updater.js +215 -0
  136. package/src/task-generation/task-management-integration.js +480 -0
  137. package/src/task-generation/task-manager-integration.js +270 -0
  138. package/src/task-generation/violation-task-generator.js +474 -0
  139. package/src/task-management/continuous-scan-integration.js +342 -0
  140. package/src/timeout-management/index.js +12 -3
  141. package/src/timeout-management/response-time-tracker.js +167 -0
  142. package/src/timeout-management/timeout-calculator.js +159 -0
  143. package/src/timeout-management/timeout-config-manager.js +172 -0
  144. package/src/utils/ast-analyzer.js +417 -0
  145. package/src/utils/current-requirement-manager.js +276 -0
  146. package/src/utils/current-requirement-operations.js +472 -0
  147. package/src/utils/dependency-mapper.js +456 -0
  148. package/src/utils/download-with-progress.js +4 -2
  149. package/src/utils/electron-update-checker.js +4 -1
  150. package/src/utils/file-size-analyzer.js +272 -0
  151. package/src/utils/import-updater.js +280 -0
  152. package/src/utils/refactoring-tools.js +512 -0
  153. package/src/utils/report-generator.js +569 -0
  154. package/src/utils/reports/report-analysis.js +218 -0
  155. package/src/utils/reports/report-types.js +55 -0
  156. package/src/utils/reports/summary-generators.js +102 -0
  157. package/src/utils/requirement-file-management.js +157 -0
  158. package/src/utils/requirement-helpers/requirement-file-ops.js +392 -0
  159. package/src/utils/requirement-helpers/requirement-mover.js +414 -0
  160. package/src/utils/requirement-helpers/requirement-parser.js +326 -0
  161. package/src/utils/requirement-helpers/requirement-status.js +320 -0
  162. package/src/utils/requirement-helpers-new.js +55 -0
  163. package/src/utils/requirement-helpers-refactored.js +367 -0
  164. package/src/utils/requirement-helpers.js +291 -1191
  165. package/src/utils/requirement-movement-operations.js +450 -0
  166. package/src/utils/requirement-movement.js +312 -0
  167. package/src/utils/requirement-parsing-helpers.js +56 -0
  168. package/src/utils/requirement-statistics.js +200 -0
  169. package/src/utils/requirement-text-utils.js +58 -0
  170. package/src/utils/rollback/rollback-handlers.js +125 -0
  171. package/src/utils/rollback/rollback-operation.js +63 -0
  172. package/src/utils/rollback/rollback-recorder.js +166 -0
  173. package/src/utils/rollback/rollback-state-manager.js +175 -0
  174. package/src/utils/rollback/rollback-types.js +33 -0
  175. package/src/utils/rollback/rollback-utils.js +110 -0
  176. package/src/utils/rollback-manager-original.js +569 -0
  177. package/src/utils/rollback-manager.js +202 -0
  178. package/src/utils/smoke-test-cli.js +362 -0
  179. package/src/utils/smoke-test-gui.js +351 -0
  180. package/src/utils/smoke-test-orchestrator.js +321 -0
  181. package/src/utils/smoke-test-runner.js +60 -0
  182. package/src/utils/smoke-test-web.js +347 -0
  183. package/src/utils/specification-helpers.js +39 -13
  184. package/src/utils/specification-migration.js +97 -0
  185. package/src/utils/test-runner.js +579 -0
  186. package/src/utils/validation-framework.js +518 -0
  187. package/src/validation/compliance-analyzer.js +197 -0
  188. package/src/validation/compliance-report-generator.js +343 -0
  189. package/src/validation/compliance-reporter.js +711 -0
  190. package/src/validation/compliance-rules.js +127 -0
  191. package/src/validation/constitution-validator-new.js +196 -0
  192. package/src/validation/constitution-validator.js +17 -0
  193. package/src/validation/file-validators.js +170 -0
  194. package/src/validation/line-limit/file-analyzer.js +201 -0
  195. package/src/validation/line-limit/line-limit-validator.js +208 -0
  196. package/src/validation/line-limit/validation-result.js +144 -0
  197. package/src/validation/line-limit-core.js +225 -0
  198. package/src/validation/line-limit-reporter.js +134 -0
  199. package/src/validation/line-limit-result.js +125 -0
  200. package/src/validation/line-limit-validator.js +41 -0
  201. package/src/validation/metrics-calculator.js +660 -0
  202. package/src/sync/sync-engine-backup.js +0 -559
@@ -0,0 +1,511 @@
1
+ /**
2
+ * Agent Logger
3
+ *
4
+ * Provides structured logging for agent operations.
5
+ * Follows constitutional requirements: <555 lines, test-first approach.
6
+ */
7
+
8
+ const FileManager = require('../storage/FileManager');
9
+
10
+ /**
11
+ * Agent logger class for structured logging
12
+ */
13
+ class AgentLogger {
14
+ /**
15
+ * Create logger instance
16
+ * @param {Object} options - Logger options
17
+ * @param {string} options.logLevel - Minimum log level
18
+ * @param {FileManager} options.fileManager - File manager instance
19
+ * @param {boolean} options.console - Enable console logging
20
+ */
21
+ constructor(options = {}) {
22
+ this.logLevel = options.logLevel || 'info';
23
+ this.fileManager = options.fileManager || new FileManager();
24
+ this.console = options.console !== false;
25
+ this.levels = {
26
+ error: 0,
27
+ warn: 1,
28
+ info: 2,
29
+ debug: 3
30
+ };
31
+ }
32
+
33
+ /**
34
+ * Check if log level should be logged
35
+ * @param {string} level - Log level to check
36
+ * @returns {boolean} - True if should log
37
+ */
38
+ shouldLog(level) {
39
+ return this.levels[level] <= this.levels[this.logLevel];
40
+ }
41
+
42
+ /**
43
+ * Format log message
44
+ * @param {string} level - Log level
45
+ * @param {string} message - Log message
46
+ * @param {Object} meta - Additional metadata
47
+ * @returns {Object} - Formatted log entry
48
+ */
49
+ formatMessage(level, message, meta = {}) {
50
+ return {
51
+ level: level.toUpperCase(),
52
+ message,
53
+ timestamp: new Date().toISOString(),
54
+ ...meta
55
+ };
56
+ }
57
+
58
+ /**
59
+ * Write log to file
60
+ * @param {string} level - Log level
61
+ * @param {Object} logEntry - Log entry
62
+ * @returns {Promise<void>}
63
+ */
64
+ async writeToFile(level, logEntry) {
65
+ try {
66
+ await this.fileManager.writeLog('agent', logEntry);
67
+ } catch (error) {
68
+ // Fallback to console if file logging fails
69
+ if (this.console) {
70
+ console.error('Failed to write log to file:', error.message);
71
+ }
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Log error message
77
+ * @param {string} message - Error message
78
+ * @param {Object} meta - Additional metadata
79
+ * @returns {Promise<void>}
80
+ */
81
+ async error(message, meta = {}) {
82
+ if (!this.shouldLog('error')) return;
83
+
84
+ const logEntry = this.formatMessage('error', message, meta);
85
+
86
+ if (this.console) {
87
+ console.error(`[ERROR] ${logEntry.timestamp} - ${message}`, meta);
88
+ }
89
+
90
+ await this.writeToFile('error', logEntry);
91
+ }
92
+
93
+ /**
94
+ * Log warning message
95
+ * @param {string} message - Warning message
96
+ * @param {Object} meta - Additional metadata
97
+ * @returns {Promise<void>}
98
+ */
99
+ async warn(message, meta = {}) {
100
+ if (!this.shouldLog('warn')) return;
101
+
102
+ const logEntry = this.formatMessage('warn', message, meta);
103
+
104
+ if (this.console) {
105
+ console.warn(`[WARN] ${logEntry.timestamp} - ${message}`, meta);
106
+ }
107
+
108
+ await this.writeToFile('agent', logEntry);
109
+ }
110
+
111
+ /**
112
+ * Log info message
113
+ * @param {string} message - Info message
114
+ * @param {Object} meta - Additional metadata
115
+ * @returns {Promise<void>}
116
+ */
117
+ async info(message, meta = {}) {
118
+ if (!this.shouldLog('info')) return;
119
+
120
+ const logEntry = this.formatMessage('info', message, meta);
121
+
122
+ if (this.console) {
123
+ console.info(`[INFO] ${logEntry.timestamp} - ${message}`, meta);
124
+ }
125
+
126
+ await this.writeToFile('agent', logEntry);
127
+ }
128
+
129
+ /**
130
+ * Log debug message
131
+ * @param {string} message - Debug message
132
+ * @param {Object} meta - Additional metadata
133
+ * @returns {Promise<void>}
134
+ */
135
+ async debug(message, meta = {}) {
136
+ if (!this.shouldLog('debug')) return;
137
+
138
+ const logEntry = this.formatMessage('debug', message, meta);
139
+
140
+ if (this.console) {
141
+ console.debug(`[DEBUG] ${logEntry.timestamp} - ${message}`, meta);
142
+ }
143
+
144
+ await this.writeToFile('debug', logEntry);
145
+ }
146
+
147
+ /**
148
+ * Log agent operation start
149
+ * @param {string} agentId - Agent identifier
150
+ * @param {string} operation - Operation type
151
+ * @param {Object} meta - Additional metadata
152
+ * @returns {Promise<void>}
153
+ */
154
+ async logOperationStart(agentId, operation, meta = {}) {
155
+ await this.info(`Starting ${operation} for agent ${agentId}`, {
156
+ agentId,
157
+ operation,
158
+ phase: 'start',
159
+ ...meta
160
+ });
161
+ }
162
+
163
+ /**
164
+ * Log agent operation success
165
+ * @param {string} agentId - Agent identifier
166
+ * @param {string} operation - Operation type
167
+ * @param {number} duration - Operation duration in milliseconds
168
+ * @param {Object} meta - Additional metadata
169
+ * @returns {Promise<void>}
170
+ */
171
+ async logOperationSuccess(agentId, operation, duration, meta = {}) {
172
+ await this.info(`Successfully completed ${operation} for agent ${agentId}`, {
173
+ agentId,
174
+ operation,
175
+ duration,
176
+ phase: 'success',
177
+ ...meta
178
+ });
179
+ }
180
+
181
+ /**
182
+ * Log agent operation failure
183
+ * @param {string} agentId - Agent identifier
184
+ * @param {string} operation - Operation type
185
+ * @param {Error|string} error - Error details
186
+ * @param {number} duration - Operation duration in milliseconds
187
+ * @param {Object} meta - Additional metadata
188
+ * @returns {Promise<void>}
189
+ */
190
+ async logOperationFailure(agentId, operation, error, duration, meta = {}) {
191
+ const errorMessage = error instanceof Error ? error.message : error;
192
+ const errorStack = error instanceof Error ? error.stack : undefined;
193
+
194
+ await this.error(`Failed ${operation} for agent ${agentId}: ${errorMessage}`, {
195
+ agentId,
196
+ operation,
197
+ duration,
198
+ phase: 'failure',
199
+ error: errorMessage,
200
+ stack: errorStack,
201
+ ...meta
202
+ });
203
+ }
204
+
205
+ /**
206
+ * Log agent operation timeout
207
+ * @param {string} agentId - Agent identifier
208
+ * @param {string} operation - Operation type
209
+ * @param {number} timeout - Timeout duration in milliseconds
210
+ * @param {Object} meta - Additional metadata
211
+ * @returns {Promise<void>}
212
+ */
213
+ async logOperationTimeout(agentId, operation, timeout, meta = {}) {
214
+ await this.warn(`Operation ${operation} for agent ${agentId} timed out after ${timeout}ms`, {
215
+ agentId,
216
+ operation,
217
+ timeout,
218
+ phase: 'timeout',
219
+ ...meta
220
+ });
221
+ }
222
+
223
+ /**
224
+ * Log installation method attempt
225
+ * @param {string} agentId - Agent identifier
226
+ * @param {string} methodType - Installation method type
227
+ * @param {Object} meta - Additional metadata
228
+ * @returns {Promise<void>}
229
+ */
230
+ async logInstallationAttempt(agentId, methodType, meta = {}) {
231
+ await this.info(`Attempting installation of ${agentId} using ${methodType}`, {
232
+ agentId,
233
+ methodType,
234
+ phase: 'installation_attempt',
235
+ ...meta
236
+ });
237
+ }
238
+
239
+ /**
240
+ * Log verification test result
241
+ * @param {string} agentId - Agent identifier
242
+ * @param {string} testType - Test type
243
+ * @param {boolean} passed - Test result
244
+ * @param {number} duration - Test duration in milliseconds
245
+ * @param {Object} meta - Additional metadata
246
+ * @returns {Promise<void>}
247
+ */
248
+ async logVerificationResult(agentId, testType, passed, duration, meta = {}) {
249
+ const level = passed ? 'info' : 'warn';
250
+ const message = passed
251
+ ? `Verification ${testType} passed for ${agentId}`
252
+ : `Verification ${testType} failed for ${agentId}`;
253
+
254
+ await this[level](message, {
255
+ agentId,
256
+ testType,
257
+ passed,
258
+ duration,
259
+ phase: 'verification',
260
+ ...meta
261
+ });
262
+ }
263
+
264
+ /**
265
+ * Log agent status change
266
+ * @param {string} agentId - Agent identifier
267
+ * @param {string} oldStatus - Previous status
268
+ * @param {string} newStatus - New status
269
+ * @param {Object} meta - Additional metadata
270
+ * @returns {Promise<void>}
271
+ */
272
+ async logStatusChange(agentId, oldStatus, newStatus, meta = {}) {
273
+ await this.info(`Agent ${agentId} status changed from ${oldStatus} to ${newStatus}`, {
274
+ agentId,
275
+ oldStatus,
276
+ newStatus,
277
+ phase: 'status_change',
278
+ ...meta
279
+ });
280
+ }
281
+
282
+ /**
283
+ * Log system requirements check
284
+ * @param {string} agentId - Agent identifier
285
+ * @param {string} methodType - Installation method type
286
+ * @param {Object} requirements - Requirements check result
287
+ * @param {Object} meta - Additional metadata
288
+ * @returns {Promise<void>}
289
+ */
290
+ async logRequirementsCheck(agentId, methodType, requirements, meta = {}) {
291
+ const level = requirements.allMet ? 'info' : 'warn';
292
+ const message = requirements.allMet
293
+ ? `All requirements met for ${agentId} using ${methodType}`
294
+ : `Some requirements not met for ${agentId} using ${methodType}`;
295
+
296
+ await this[level](message, {
297
+ agentId,
298
+ methodType,
299
+ requirements,
300
+ phase: 'requirements_check',
301
+ ...meta
302
+ });
303
+ }
304
+
305
+ /**
306
+ * Log detailed verification analysis
307
+ * @param {string} agentId - Agent identifier
308
+ * @param {Object} analysis - Verification analysis result
309
+ * @param {Object} meta - Additional metadata
310
+ * @returns {Promise<void>}
311
+ */
312
+ async logVerificationAnalysis(agentId, analysis, meta = {}) {
313
+ const level = analysis.overallSuccess ? 'info' : 'warn';
314
+ const message = analysis.overallSuccess
315
+ ? `Verification analysis completed for ${agentId}`
316
+ : `Verification analysis indicates issues for ${agentId}`;
317
+
318
+ await this[level](message, {
319
+ agentId,
320
+ analysis: {
321
+ status: analysis.status,
322
+ confidence: analysis.confidence,
323
+ issues: analysis.issues?.length || 0,
324
+ recommendations: analysis.recommendations?.length || 0
325
+ },
326
+ phase: 'verification_analysis',
327
+ ...meta
328
+ });
329
+ }
330
+
331
+ /**
332
+ * Log communication test cycle
333
+ * @param {string} agentId - Agent identifier
334
+ * @param {Object} cycleResult - Communication test cycle result
335
+ * @param {Object} meta - Additional metadata
336
+ * @returns {Promise<void>}
337
+ */
338
+ async logCommunicationCycle(agentId, cycleResult, meta = {}) {
339
+ const level = cycleResult.success ? 'info' : 'warn';
340
+ const message = cycleResult.success
341
+ ? `Communication test cycle completed for ${agentId}`
342
+ : `Communication test cycle failed for ${agentId}`;
343
+
344
+ await this[level](message, {
345
+ agentId,
346
+ cycleId: cycleResult.cycleId,
347
+ success: cycleResult.success,
348
+ duration: cycleResult.duration,
349
+ summary: cycleResult.summary,
350
+ phase: 'communication_cycle',
351
+ ...meta
352
+ });
353
+ }
354
+
355
+ /**
356
+ * Log test requirement management
357
+ * @param {string} operation - Operation type (create, read, verify, delete, cleanup)
358
+ * @param {Object} result - Operation result
359
+ * @param {Object} meta - Additional metadata
360
+ * @returns {Promise<void>}
361
+ */
362
+ async logTestRequirement(operation, result, meta = {}) {
363
+ const level = result.success ? 'info' : 'warn';
364
+ const message = result.success
365
+ ? `Test requirement ${operation} completed`
366
+ : `Test requirement ${operation} failed`;
367
+
368
+ await this[level](message, {
369
+ operation,
370
+ agentId: result.agentId,
371
+ fileName: result.fileName,
372
+ filePath: result.filePath,
373
+ success: result.success,
374
+ duration: result.duration,
375
+ phase: 'test_requirement',
376
+ ...meta
377
+ });
378
+ }
379
+
380
+ /**
381
+ * Log verification batch operation
382
+ * @param {string} operation - Batch operation type
383
+ * @param {Object} batchResult - Batch operation result
384
+ * @param {Object} meta - Additional metadata
385
+ * @returns {Promise<void>}
386
+ */
387
+ async logVerificationBatch(operation, batchResult, meta = {}) {
388
+ const level = batchResult.success ? 'info' : 'warn';
389
+ const message = batchResult.success
390
+ ? `Verification batch ${operation} completed`
391
+ : `Verification batch ${operation} failed`;
392
+
393
+ await this[level](message, {
394
+ operation,
395
+ batchId: batchResult.batchId,
396
+ totalAgents: batchResult.summary?.totalAgents || 0,
397
+ successfulAgents: batchResult.summary?.successfulAgents || 0,
398
+ failedAgents: batchResult.summary?.failedAgents || 0,
399
+ duration: batchResult.duration,
400
+ phase: 'verification_batch',
401
+ ...meta
402
+ });
403
+ }
404
+
405
+ /**
406
+ * Log performance metrics
407
+ * @param {string} operation - Operation type
408
+ * @param {Object} metrics - Performance metrics
409
+ * @param {Object} meta - Additional metadata
410
+ * @returns {Promise<void>}
411
+ */
412
+ async logPerformance(operation, metrics, meta = {}) {
413
+ await this.info(`Performance metrics for ${operation}`, {
414
+ operation,
415
+ metrics,
416
+ phase: 'performance',
417
+ ...meta
418
+ });
419
+ }
420
+
421
+ /**
422
+ * Create child logger with additional context
423
+ * @param {Object} context - Additional context for child logger
424
+ * @returns {AgentLogger} - Child logger instance
425
+ */
426
+ child(context = {}) {
427
+ const childLogger = new AgentLogger({
428
+ logLevel: this.logLevel,
429
+ fileManager: this.fileManager,
430
+ console: this.console
431
+ });
432
+
433
+ // Add context to all log messages
434
+ childLogger.context = context;
435
+
436
+ // Override log methods to include context
437
+ ['error', 'warn', 'info', 'debug'].forEach(level => {
438
+ const originalMethod = childLogger[level];
439
+ childLogger[level] = async (message, meta = {}) => {
440
+ await originalMethod.call(childLogger, message, { ...this.context, ...meta });
441
+ };
442
+ });
443
+
444
+ return childLogger;
445
+ }
446
+
447
+ /**
448
+ * Get recent logs for an agent
449
+ * @param {string} agentId - Agent identifier
450
+ * @param {Object} options - Query options
451
+ * @returns {Promise<Array>} - Array of log entries
452
+ */
453
+ async getAgentLogs(agentId, options = {}) {
454
+ const { limit = 50, level = null, since = null } = options;
455
+
456
+ const logs = await this.fileManager.readLogs('agent', {
457
+ limit: limit * 3, // Get more to filter
458
+ since
459
+ });
460
+
461
+ return logs
462
+ .filter(log => log.agentId === agentId)
463
+ .filter(log => !level || log.level === level.toUpperCase())
464
+ .slice(0, limit);
465
+ }
466
+
467
+ /**
468
+ * Get error logs
469
+ * @param {Object} options - Query options
470
+ * @returns {Promise<Array>} - Array of error log entries
471
+ */
472
+ async getErrorLogs(options = {}) {
473
+ const { limit = 50, since = null } = options;
474
+
475
+ return await this.fileManager.readLogs('error', {
476
+ limit,
477
+ since
478
+ });
479
+ }
480
+
481
+ /**
482
+ * Clean old logs
483
+ * @param {number} olderThanDays - Remove logs older than this many days
484
+ * @returns {Promise<Object>} - Cleanup results
485
+ */
486
+ async cleanOldLogs(olderThanDays = 30) {
487
+ const results = {};
488
+
489
+ try {
490
+ results.agent = await this.fileManager.cleanOldLogs('agent', olderThanDays);
491
+ } catch (error) {
492
+ results.agent = { error: error.message };
493
+ }
494
+
495
+ try {
496
+ results.error = await this.fileManager.cleanOldLogs('error', olderThanDays);
497
+ } catch (error) {
498
+ results.error = { error: error.message };
499
+ }
500
+
501
+ try {
502
+ results.debug = await this.fileManager.cleanOldLogs('debug', olderThanDays);
503
+ } catch (error) {
504
+ results.debug = { error: error.message };
505
+ }
506
+
507
+ return results;
508
+ }
509
+ }
510
+
511
+ module.exports = AgentLogger;