vibecodingmachine-core 2026.2.20-438 → 2026.2.26-1642
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,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Manager Integration
|
|
3
|
+
*
|
|
4
|
+
* Integrates continuous scanning with the task management system
|
|
5
|
+
* to automatically update and manage refactoring tasks.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const fs = require('fs').promises;
|
|
9
|
+
const path = require('path');
|
|
10
|
+
const taskListUpdater = require('./task-list-updater');
|
|
11
|
+
const prioritizer = require('./prioritizer');
|
|
12
|
+
const violationTaskGenerator = require('./violation-task-generator');
|
|
13
|
+
|
|
14
|
+
class TaskManagerIntegration {
|
|
15
|
+
constructor(options = {}) {
|
|
16
|
+
this.tasksFilePath = options.tasksFilePath || path.join(process.cwd(), 'specs/010-555-max-file-size/tasks.md');
|
|
17
|
+
this.backupEnabled = options.backup !== false;
|
|
18
|
+
this.autoCommit = options.autoCommit || false;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Integrate continuous scan results with task management
|
|
23
|
+
*/
|
|
24
|
+
async integrateScanResults(scanResults, options = {}) {
|
|
25
|
+
try {
|
|
26
|
+
// Create backup before making changes
|
|
27
|
+
if (this.backupEnabled) {
|
|
28
|
+
await this.createBackup();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Process violations and update tasks
|
|
32
|
+
const integrationResult = await this.processViolations(scanResults.violations, options);
|
|
33
|
+
|
|
34
|
+
// Update task file if there are changes
|
|
35
|
+
if (integrationResult.tasksModified) {
|
|
36
|
+
await this.updateTaskFile(integrationResult.taskUpdates);
|
|
37
|
+
|
|
38
|
+
if (this.autoCommit) {
|
|
39
|
+
await this.commitChanges(integrationResult.commitMessage);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return integrationResult;
|
|
44
|
+
|
|
45
|
+
} catch (error) {
|
|
46
|
+
console.error('Task manager integration failed:', error);
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Process violations and determine task updates
|
|
53
|
+
*/
|
|
54
|
+
async processViolations(violations, options = {}) {
|
|
55
|
+
const taskUpdates = {
|
|
56
|
+
newTasks: [],
|
|
57
|
+
updatedTasks: [],
|
|
58
|
+
completedTasks: []
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// Read current tasks
|
|
62
|
+
const currentTasks = await this.readCurrentTasks();
|
|
63
|
+
|
|
64
|
+
// Generate tasks for new violations
|
|
65
|
+
const newViolations = this.filterNewViolations(violations, currentTasks);
|
|
66
|
+
|
|
67
|
+
if (newViolations.length > 0) {
|
|
68
|
+
const generatedTasks = await violationTaskGenerator.generateTasks(newViolations);
|
|
69
|
+
taskUpdates.newTasks = generatedTasks;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Mark tasks as completed for files that are now compliant
|
|
73
|
+
const completedTasks = this.findCompletedTasks(violations, currentTasks);
|
|
74
|
+
taskUpdates.completedTasks = completedTasks;
|
|
75
|
+
|
|
76
|
+
// Update task priorities if needed
|
|
77
|
+
if (options.reprioritize) {
|
|
78
|
+
const updatedTasks = await this.reprioritizeTasks(currentTasks, violations);
|
|
79
|
+
taskUpdates.updatedTasks = updatedTasks;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return {
|
|
83
|
+
tasksModified: taskUpdates.newTasks.length > 0 ||
|
|
84
|
+
taskUpdates.completedTasks.length > 0 ||
|
|
85
|
+
taskUpdates.updatedTasks.length > 0,
|
|
86
|
+
taskUpdates,
|
|
87
|
+
summary: {
|
|
88
|
+
newTasks: taskUpdates.newTasks.length,
|
|
89
|
+
completedTasks: taskUpdates.completedTasks.length,
|
|
90
|
+
updatedTasks: taskUpdates.updatedTasks.length,
|
|
91
|
+
totalViolations: violations.length
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Filter violations that don't have corresponding tasks
|
|
98
|
+
*/
|
|
99
|
+
filterNewViolations(violations, currentTasks) {
|
|
100
|
+
const existingTaskFiles = new Set(
|
|
101
|
+
currentTasks.map(task => this.extractFilePathFromTask(task))
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
return violations.filter(violation =>
|
|
105
|
+
!existingTaskFiles.has(violation.filePath)
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Find tasks for files that are now compliant
|
|
111
|
+
*/
|
|
112
|
+
findCompletedTasks(violations, currentTasks) {
|
|
113
|
+
const violationFiles = new Set(violations.map(v => v.filePath));
|
|
114
|
+
|
|
115
|
+
return currentTasks.filter(task => {
|
|
116
|
+
const taskFilePath = this.extractFilePathFromTask(task);
|
|
117
|
+
return taskFilePath && !violationFiles.has(taskFilePath);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Reprioritize tasks based on current violations
|
|
123
|
+
*/
|
|
124
|
+
async reprioritizeTasks(currentTasks, violations) {
|
|
125
|
+
const updatedTasks = [];
|
|
126
|
+
|
|
127
|
+
for (const task of currentTasks) {
|
|
128
|
+
const taskFilePath = this.extractFilePathFromTask(task);
|
|
129
|
+
const violation = violations.find(v => v.filePath === taskFilePath);
|
|
130
|
+
|
|
131
|
+
if (violation) {
|
|
132
|
+
const newPriority = prioritizer.calculatePriority(violation);
|
|
133
|
+
const updatedTask = this.updateTaskPriority(task, newPriority);
|
|
134
|
+
updatedTasks.push(updatedTask);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return updatedTasks;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Update the task file with changes
|
|
143
|
+
*/
|
|
144
|
+
async updateTaskFile(taskUpdates) {
|
|
145
|
+
const content = await fs.readFile(this.tasksFilePath, 'utf8');
|
|
146
|
+
const lines = content.split('\n');
|
|
147
|
+
|
|
148
|
+
let modifiedContent = content;
|
|
149
|
+
|
|
150
|
+
// Add new tasks
|
|
151
|
+
if (taskUpdates.newTasks.length > 0) {
|
|
152
|
+
const insertionPoint = this.findInsertionPoint(lines);
|
|
153
|
+
const newTaskText = taskUpdates.newTasks.map(task => `- [ ] ${task}`).join('\n');
|
|
154
|
+
modifiedContent = this.insertTasksAtPoint(modifiedContent, insertionPoint, newTaskText);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Mark completed tasks
|
|
158
|
+
for (const completedTask of taskUpdates.completedTasks) {
|
|
159
|
+
modifiedContent = modifiedContent.replace(
|
|
160
|
+
`- [ ] ${completedTask}`,
|
|
161
|
+
`- [x] ${completedTask}`
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Update task priorities
|
|
166
|
+
for (const updatedTask of taskUpdates.updatedTasks) {
|
|
167
|
+
modifiedContent = this.updateTaskInContent(modifiedContent, updatedTask);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
await fs.writeFile(this.tasksFilePath, modifiedContent, 'utf8');
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Read current tasks from the task file
|
|
175
|
+
*/
|
|
176
|
+
async readCurrentTasks() {
|
|
177
|
+
const content = await fs.readFile(this.tasksFilePath, 'utf8');
|
|
178
|
+
const taskRegex = /^- \[([ x])\] (.+)$/gm;
|
|
179
|
+
const tasks = [];
|
|
180
|
+
let match;
|
|
181
|
+
|
|
182
|
+
while ((match = taskRegex.exec(content)) !== null) {
|
|
183
|
+
if (match[1] === ' ') { // Only include uncompleted tasks
|
|
184
|
+
tasks.push(match[2]);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return tasks;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Extract file path from task description
|
|
193
|
+
*/
|
|
194
|
+
extractFilePathFromTask(taskDescription) {
|
|
195
|
+
const pathMatch = taskDescription.match(/packages\/[^)]+/);
|
|
196
|
+
return pathMatch ? pathMatch[0] : null;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Find the appropriate insertion point for new tasks
|
|
201
|
+
*/
|
|
202
|
+
findInsertionPoint(lines) {
|
|
203
|
+
// Find the end of User Story 4 section
|
|
204
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
205
|
+
if (lines[i].includes('T082') && lines[i].includes('[US4]')) {
|
|
206
|
+
return i + 1;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return lines.length - 1;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Insert new tasks at the specified point
|
|
214
|
+
*/
|
|
215
|
+
insertTasksAtPoint(content, insertionPoint, newTaskText) {
|
|
216
|
+
const lines = content.split('\n');
|
|
217
|
+
lines.splice(insertionPoint, 0, newTaskText);
|
|
218
|
+
return lines.join('\n');
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Update task priority in content
|
|
223
|
+
*/
|
|
224
|
+
updateTaskInContent(content, updatedTask) {
|
|
225
|
+
// Implementation would depend on the specific task format
|
|
226
|
+
// This is a placeholder for the actual update logic
|
|
227
|
+
return content;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Create backup of task file
|
|
232
|
+
*/
|
|
233
|
+
async createBackup() {
|
|
234
|
+
const backupPath = `${this.tasksFilePath}.backup.${Date.now()}`;
|
|
235
|
+
await fs.copyFile(this.tasksFilePath, backupPath);
|
|
236
|
+
console.log(`Backup created: ${backupPath}`);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Commit changes to git
|
|
241
|
+
*/
|
|
242
|
+
async commitChanges(commitMessage) {
|
|
243
|
+
const { execSync } = require('child_process');
|
|
244
|
+
try {
|
|
245
|
+
execSync('git add ' + this.tasksFilePath);
|
|
246
|
+
execSync(`git commit -m "${commitMessage}"`);
|
|
247
|
+
console.log('Changes committed to git');
|
|
248
|
+
} catch (error) {
|
|
249
|
+
console.warn('Failed to commit changes:', error.message);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Get integration status and statistics
|
|
255
|
+
*/
|
|
256
|
+
async getIntegrationStatus() {
|
|
257
|
+
const currentTasks = await this.readCurrentTasks();
|
|
258
|
+
const completedTasks = currentTasks.filter(task => task.startsWith('[x]')).length;
|
|
259
|
+
const pendingTasks = currentTasks.length - completedTasks;
|
|
260
|
+
|
|
261
|
+
return {
|
|
262
|
+
totalTasks: currentTasks.length,
|
|
263
|
+
completedTasks,
|
|
264
|
+
pendingTasks,
|
|
265
|
+
completionRate: (completedTasks / currentTasks.length * 100).toFixed(1)
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
module.exports = TaskManagerIntegration;
|