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.
- package/README.md +240 -0
- package/package.json +10 -2
- package/src/agents/Agent.js +300 -0
- package/src/agents/AgentAdditionService.js +311 -0
- package/src/agents/AgentCheckService.js +690 -0
- package/src/agents/AgentInstallationService.js +140 -0
- package/src/agents/AgentSetupService.js +467 -0
- package/src/agents/AgentStatus.js +183 -0
- package/src/agents/AgentVerificationService.js +634 -0
- package/src/agents/ConfigurationSchemaValidator.js +543 -0
- package/src/agents/EnvironmentConfigurationManager.js +602 -0
- package/src/agents/InstallationErrorHandler.js +372 -0
- package/src/agents/InstallationLog.js +363 -0
- package/src/agents/InstallationMethod.js +510 -0
- package/src/agents/InstallationOrchestrator.js +352 -0
- package/src/agents/InstallationProgressReporter.js +372 -0
- package/src/agents/InstallationRetryManager.js +322 -0
- package/src/agents/InstallationType.js +254 -0
- package/src/agents/OperationTypes.js +310 -0
- package/src/agents/PerformanceMetricsCollector.js +493 -0
- package/src/agents/SecurityValidationService.js +534 -0
- package/src/agents/VerificationTest.js +354 -0
- package/src/agents/VerificationType.js +226 -0
- package/src/agents/WindowsPermissionHandler.js +518 -0
- package/src/agents/config/AgentConfigManager.js +393 -0
- package/src/agents/config/AgentDefaultsRegistry.js +373 -0
- package/src/agents/config/ConfigValidator.js +281 -0
- package/src/agents/discovery/AgentDiscoveryService.js +707 -0
- package/src/agents/logging/AgentLogger.js +511 -0
- package/src/agents/status/AgentStatusManager.js +481 -0
- package/src/agents/storage/FileManager.js +454 -0
- package/src/agents/verification/AgentCommunicationTester.js +474 -0
- package/src/agents/verification/BaseVerifier.js +430 -0
- package/src/agents/verification/CommandVerifier.js +480 -0
- package/src/agents/verification/FileOperationVerifier.js +453 -0
- package/src/agents/verification/ResultAnalyzer.js +707 -0
- package/src/agents/verification/TestRequirementManager.js +495 -0
- package/src/agents/verification/VerificationRunner.js +433 -0
- package/src/agents/windows/BaseWindowsInstaller.js +441 -0
- package/src/agents/windows/ChocolateyInstaller.js +509 -0
- package/src/agents/windows/DirectInstaller.js +443 -0
- package/src/agents/windows/InstallerFactory.js +391 -0
- package/src/agents/windows/NpmInstaller.js +505 -0
- package/src/agents/windows/PowerShellInstaller.js +458 -0
- package/src/agents/windows/WinGetInstaller.js +390 -0
- package/src/analysis/analysis-reporter.js +132 -0
- package/src/analysis/boundary-detector.js +712 -0
- package/src/analysis/categorizer.js +340 -0
- package/src/analysis/codebase-scanner.js +384 -0
- package/src/analysis/line-counter.js +513 -0
- package/src/analysis/priority-calculator.js +679 -0
- package/src/analysis/report/analysis-report.js +250 -0
- package/src/analysis/report/package-analyzer.js +278 -0
- package/src/analysis/report/recommendation-generator.js +382 -0
- package/src/analysis/report/statistics-generator.js +515 -0
- package/src/analysis/reports/analysis-report-model.js +101 -0
- package/src/analysis/reports/recommendation-generator.js +283 -0
- package/src/analysis/reports/report-generators.js +191 -0
- package/src/analysis/reports/statistics-calculator.js +231 -0
- package/src/analysis/reports/trend-analyzer.js +219 -0
- package/src/analysis/strategy-generator.js +814 -0
- package/src/auto-mode/AutoModeBusinessLogic.js +836 -0
- package/src/config/refactoring-config.js +307 -0
- package/src/health-tracking/json-storage.js +38 -2
- package/src/ide-integration/applescript-manager-core.js +233 -0
- package/src/ide-integration/applescript-manager.cjs +357 -28
- package/src/ide-integration/applescript-manager.js +89 -3599
- package/src/ide-integration/cdp-manager.js +306 -0
- package/src/ide-integration/claude-code-cli-manager.cjs +1 -1
- package/src/ide-integration/continuation-handler.js +337 -0
- package/src/ide-integration/ide-status-checker.js +292 -0
- package/src/ide-integration/macos-ide-manager.js +627 -0
- package/src/ide-integration/macos-text-sender.js +528 -0
- package/src/ide-integration/response-reader.js +548 -0
- package/src/ide-integration/windows-automation-manager.js +121 -0
- package/src/ide-integration/windows-ide-manager.js +373 -0
- package/src/index.cjs +25 -3
- package/src/index.js +15 -1
- package/src/llm/direct-llm-manager.cjs +90 -2
- package/src/models/compliance-report.js +538 -0
- package/src/models/file-analysis.js +681 -0
- package/src/models/refactoring-plan.js +770 -0
- package/src/monitoring/alert-system.js +834 -0
- package/src/monitoring/compliance-progress-tracker.js +437 -0
- package/src/monitoring/continuous-scan-notifications.js +661 -0
- package/src/monitoring/continuous-scanner.js +279 -0
- package/src/monitoring/file-monitor/file-analyzer.js +262 -0
- package/src/monitoring/file-monitor/file-monitor.js +237 -0
- package/src/monitoring/file-monitor/watcher.js +194 -0
- package/src/monitoring/file-monitor.js +17 -0
- package/src/monitoring/notification-manager.js +437 -0
- package/src/monitoring/scanner-core.js +368 -0
- package/src/monitoring/scanner-events.js +214 -0
- package/src/monitoring/violation-notification-system.js +515 -0
- package/src/refactoring/boundaries/cohesion-analyzer.js +316 -0
- package/src/refactoring/boundaries/extraction-result.js +285 -0
- package/src/refactoring/boundaries/extraction-strategies.js +392 -0
- package/src/refactoring/boundaries/module-boundary.js +209 -0
- package/src/refactoring/boundary/boundary-detector.js +741 -0
- package/src/refactoring/boundary/boundary-types.js +405 -0
- package/src/refactoring/boundary/extraction-strategies.js +554 -0
- package/src/refactoring/boundary-extraction-result.js +77 -0
- package/src/refactoring/boundary-extraction-strategies.js +330 -0
- package/src/refactoring/boundary-extractor.js +384 -0
- package/src/refactoring/boundary-types.js +46 -0
- package/src/refactoring/circular/circular-dependency.js +88 -0
- package/src/refactoring/circular/cycle-detection.js +147 -0
- package/src/refactoring/circular/dependency-node.js +82 -0
- package/src/refactoring/circular/dependency-result.js +107 -0
- package/src/refactoring/circular/dependency-types.js +58 -0
- package/src/refactoring/circular/graph-builder.js +213 -0
- package/src/refactoring/circular/resolution-strategy.js +72 -0
- package/src/refactoring/circular/strategy-generator.js +229 -0
- package/src/refactoring/circular-dependency-resolver-original.js +809 -0
- package/src/refactoring/circular-dependency-resolver.js +200 -0
- package/src/refactoring/code-mover.js +761 -0
- package/src/refactoring/file-splitter.js +696 -0
- package/src/refactoring/functionality-validator.js +816 -0
- package/src/refactoring/import-manager.js +774 -0
- package/src/refactoring/module-boundary.js +107 -0
- package/src/refactoring/refactoring-executor.js +672 -0
- package/src/refactoring/refactoring-rollback.js +614 -0
- package/src/refactoring/test-validator.js +631 -0
- package/src/requirement-management/default-requirement-manager.js +321 -0
- package/src/requirement-management/requirement-file-parser.js +159 -0
- package/src/requirement-management/requirement-sequencer.js +221 -0
- package/src/rui/commands/AgentCommandParser.js +600 -0
- package/src/rui/commands/AgentCommands.js +487 -0
- package/src/rui/commands/AgentResponseFormatter.js +832 -0
- package/src/scripts/verify-full-compliance.js +269 -0
- package/src/sync/sync-engine-core.js +1 -0
- package/src/sync/sync-engine-remote-handlers.js +135 -0
- package/src/task-generation/automated-task-generator.js +351 -0
- package/src/task-generation/prioritizer.js +287 -0
- package/src/task-generation/task-list-updater.js +215 -0
- package/src/task-generation/task-management-integration.js +480 -0
- package/src/task-generation/task-manager-integration.js +270 -0
- package/src/task-generation/violation-task-generator.js +474 -0
- package/src/task-management/continuous-scan-integration.js +342 -0
- package/src/timeout-management/index.js +12 -3
- package/src/timeout-management/response-time-tracker.js +167 -0
- package/src/timeout-management/timeout-calculator.js +159 -0
- package/src/timeout-management/timeout-config-manager.js +172 -0
- package/src/utils/ast-analyzer.js +417 -0
- package/src/utils/current-requirement-manager.js +276 -0
- package/src/utils/current-requirement-operations.js +472 -0
- package/src/utils/dependency-mapper.js +456 -0
- package/src/utils/download-with-progress.js +4 -2
- package/src/utils/electron-update-checker.js +4 -1
- package/src/utils/file-size-analyzer.js +272 -0
- package/src/utils/import-updater.js +280 -0
- package/src/utils/refactoring-tools.js +512 -0
- package/src/utils/report-generator.js +569 -0
- package/src/utils/reports/report-analysis.js +218 -0
- package/src/utils/reports/report-types.js +55 -0
- package/src/utils/reports/summary-generators.js +102 -0
- package/src/utils/requirement-file-management.js +157 -0
- package/src/utils/requirement-helpers/requirement-file-ops.js +392 -0
- package/src/utils/requirement-helpers/requirement-mover.js +414 -0
- package/src/utils/requirement-helpers/requirement-parser.js +326 -0
- package/src/utils/requirement-helpers/requirement-status.js +320 -0
- package/src/utils/requirement-helpers-new.js +55 -0
- package/src/utils/requirement-helpers-refactored.js +367 -0
- package/src/utils/requirement-helpers.js +291 -1191
- package/src/utils/requirement-movement-operations.js +450 -0
- package/src/utils/requirement-movement.js +312 -0
- package/src/utils/requirement-parsing-helpers.js +56 -0
- package/src/utils/requirement-statistics.js +200 -0
- package/src/utils/requirement-text-utils.js +58 -0
- package/src/utils/rollback/rollback-handlers.js +125 -0
- package/src/utils/rollback/rollback-operation.js +63 -0
- package/src/utils/rollback/rollback-recorder.js +166 -0
- package/src/utils/rollback/rollback-state-manager.js +175 -0
- package/src/utils/rollback/rollback-types.js +33 -0
- package/src/utils/rollback/rollback-utils.js +110 -0
- package/src/utils/rollback-manager-original.js +569 -0
- package/src/utils/rollback-manager.js +202 -0
- package/src/utils/smoke-test-cli.js +362 -0
- package/src/utils/smoke-test-gui.js +351 -0
- package/src/utils/smoke-test-orchestrator.js +321 -0
- package/src/utils/smoke-test-runner.js +60 -0
- package/src/utils/smoke-test-web.js +347 -0
- package/src/utils/specification-helpers.js +39 -13
- package/src/utils/specification-migration.js +97 -0
- package/src/utils/test-runner.js +579 -0
- package/src/utils/validation-framework.js +518 -0
- package/src/validation/compliance-analyzer.js +197 -0
- package/src/validation/compliance-report-generator.js +343 -0
- package/src/validation/compliance-reporter.js +711 -0
- package/src/validation/compliance-rules.js +127 -0
- package/src/validation/constitution-validator-new.js +196 -0
- package/src/validation/constitution-validator.js +17 -0
- package/src/validation/file-validators.js +170 -0
- package/src/validation/line-limit/file-analyzer.js +201 -0
- package/src/validation/line-limit/line-limit-validator.js +208 -0
- package/src/validation/line-limit/validation-result.js +144 -0
- package/src/validation/line-limit-core.js +225 -0
- package/src/validation/line-limit-reporter.js +134 -0
- package/src/validation/line-limit-result.js +125 -0
- package/src/validation/line-limit-validator.js +41 -0
- package/src/validation/metrics-calculator.js +660 -0
- 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;
|