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.
- package/README.md +94 -839
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/config/ai-config.d.ts.map +1 -1
- package/dist/src/config/ai-config.js +9 -9
- package/dist/src/config/ai-config.js.map +1 -1
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1594 -837
- package/dist/src/index.js.map +1 -1
- package/dist/src/prompts/analysis-prompts.d.ts +4 -1
- package/dist/src/prompts/analysis-prompts.d.ts.map +1 -1
- package/dist/src/prompts/analysis-prompts.js +61 -30
- package/dist/src/prompts/analysis-prompts.js.map +1 -1
- package/dist/src/prompts/index.d.ts +17 -1
- package/dist/src/prompts/index.d.ts.map +1 -1
- package/dist/src/prompts/index.js +325 -1
- package/dist/src/prompts/index.js.map +1 -1
- package/dist/src/prompts/rule-generation-prompts.d.ts +5 -1
- package/dist/src/prompts/rule-generation-prompts.d.ts.map +1 -1
- package/dist/src/prompts/rule-generation-prompts.js +5 -1
- package/dist/src/prompts/rule-generation-prompts.js.map +1 -1
- package/dist/src/prompts/security-prompts.d.ts +6 -1
- package/dist/src/prompts/security-prompts.d.ts.map +1 -1
- package/dist/src/prompts/security-prompts.js +6 -1
- package/dist/src/prompts/security-prompts.js.map +1 -1
- package/dist/src/prompts/todo-prompts.d.ts +49 -0
- package/dist/src/prompts/todo-prompts.d.ts.map +1 -0
- package/dist/src/prompts/todo-prompts.js +824 -0
- package/dist/src/prompts/todo-prompts.js.map +1 -0
- package/dist/src/resources/index.d.ts.map +1 -1
- package/dist/src/resources/index.js +9 -7
- package/dist/src/resources/index.js.map +1 -1
- package/dist/src/tools/adr-bootstrap-validation-tool.d.ts +47 -0
- package/dist/src/tools/adr-bootstrap-validation-tool.d.ts.map +1 -0
- package/dist/src/tools/adr-bootstrap-validation-tool.js +979 -0
- package/dist/src/tools/adr-bootstrap-validation-tool.js.map +1 -0
- package/dist/src/tools/adr-suggestion-tool.d.ts +1 -0
- package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.js +330 -32
- package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
- package/dist/src/tools/content-masking-tool.d.ts +5 -0
- package/dist/src/tools/content-masking-tool.d.ts.map +1 -1
- package/dist/src/tools/content-masking-tool.js +631 -28
- package/dist/src/tools/content-masking-tool.js.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.d.ts +8 -5
- package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.js +1017 -93
- package/dist/src/tools/deployment-readiness-tool.js.map +1 -1
- package/dist/src/tools/environment-analysis-tool.d.ts +4 -0
- package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -1
- package/dist/src/tools/environment-analysis-tool.js +568 -24
- package/dist/src/tools/environment-analysis-tool.js.map +1 -1
- package/dist/src/tools/interactive-adr-planning-tool.d.ts.map +1 -1
- package/dist/src/tools/interactive-adr-planning-tool.js +270 -108
- package/dist/src/tools/interactive-adr-planning-tool.js.map +1 -1
- package/dist/src/tools/mcp-planning-tool.d.ts.map +1 -1
- package/dist/src/tools/mcp-planning-tool.js +316 -183
- package/dist/src/tools/mcp-planning-tool.js.map +1 -1
- package/dist/src/tools/memory-loading-tool.d.ts +60 -0
- package/dist/src/tools/memory-loading-tool.d.ts.map +1 -0
- package/dist/src/tools/memory-loading-tool.js +457 -0
- package/dist/src/tools/memory-loading-tool.js.map +1 -0
- package/dist/src/tools/research-integration-tool.d.ts +4 -1
- package/dist/src/tools/research-integration-tool.d.ts.map +1 -1
- package/dist/src/tools/research-integration-tool.js +5 -1
- package/dist/src/tools/research-integration-tool.js.map +1 -1
- package/dist/src/tools/review-existing-adrs-tool.d.ts +19 -0
- package/dist/src/tools/review-existing-adrs-tool.d.ts.map +1 -0
- package/dist/src/tools/review-existing-adrs-tool.js +1204 -0
- package/dist/src/tools/review-existing-adrs-tool.js.map +1 -0
- package/dist/src/tools/rule-generation-tool.d.ts +2 -0
- package/dist/src/tools/rule-generation-tool.d.ts.map +1 -1
- package/dist/src/tools/rule-generation-tool.js +274 -33
- package/dist/src/tools/rule-generation-tool.js.map +1 -1
- package/dist/src/tools/smart-git-push-tool-v2.d.ts +4 -0
- package/dist/src/tools/smart-git-push-tool-v2.d.ts.map +1 -1
- package/dist/src/tools/smart-git-push-tool-v2.js +423 -229
- package/dist/src/tools/smart-git-push-tool-v2.js.map +1 -1
- package/dist/src/tools/smart-git-push-tool.d.ts +3 -0
- package/dist/src/tools/smart-git-push-tool.d.ts.map +1 -1
- package/dist/src/tools/smart-git-push-tool.js +241 -235
- package/dist/src/tools/smart-git-push-tool.js.map +1 -1
- package/dist/src/tools/tool-chain-orchestrator.d.ts +2 -2
- package/dist/src/tools/tool-chain-orchestrator.d.ts.map +1 -1
- package/dist/src/tools/tool-chain-orchestrator.js +152 -93
- package/dist/src/tools/tool-chain-orchestrator.js.map +1 -1
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +22 -13
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -1
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js +660 -28
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js.map +1 -1
- package/dist/src/types/ape-framework.d.ts +93 -0
- package/dist/src/types/ape-framework.d.ts.map +1 -1
- package/dist/src/types/ape-framework.js +10 -10
- package/dist/src/types/ape-framework.js.map +1 -1
- package/dist/src/types/enhanced-errors.d.ts +173 -0
- package/dist/src/types/enhanced-errors.d.ts.map +1 -0
- package/dist/src/types/enhanced-errors.js +668 -0
- package/dist/src/types/enhanced-errors.js.map +1 -0
- package/dist/src/types/index.d.ts +129 -3
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +15 -0
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/knowledge-generation.d.ts +78 -0
- package/dist/src/types/knowledge-generation.d.ts.map +1 -1
- package/dist/src/types/knowledge-generation.js +10 -6
- package/dist/src/types/knowledge-generation.js.map +1 -1
- package/dist/src/types/knowledge-graph-schemas.d.ts +92 -0
- package/dist/src/types/knowledge-graph-schemas.d.ts.map +1 -1
- package/dist/src/types/knowledge-graph-schemas.js +45 -17
- package/dist/src/types/knowledge-graph-schemas.js.map +1 -1
- package/dist/src/types/memory-entities.d.ts +7209 -0
- package/dist/src/types/memory-entities.d.ts.map +1 -0
- package/dist/src/types/memory-entities.js +395 -0
- package/dist/src/types/memory-entities.js.map +1 -0
- package/dist/src/types/reflexion-framework.d.ts +44 -0
- package/dist/src/types/reflexion-framework.d.ts.map +1 -1
- package/dist/src/types/reflexion-framework.js +7 -7
- package/dist/src/types/reflexion-framework.js.map +1 -1
- package/dist/src/types/todo-json-schemas.d.ts +7 -653
- package/dist/src/types/todo-json-schemas.d.ts.map +1 -1
- package/dist/src/types/todo-json-schemas.js +6 -110
- package/dist/src/types/todo-json-schemas.js.map +1 -1
- package/dist/src/types/tool-arguments.d.ts +224 -0
- package/dist/src/types/tool-arguments.d.ts.map +1 -0
- package/dist/src/types/tool-arguments.js +6 -0
- package/dist/src/types/tool-arguments.js.map +1 -0
- package/dist/src/utils/actual-file-operations.d.ts.map +1 -1
- package/dist/src/utils/actual-file-operations.js +25 -9
- package/dist/src/utils/actual-file-operations.js.map +1 -1
- package/dist/src/utils/adr-discovery.d.ts +33 -1
- package/dist/src/utils/adr-discovery.d.ts.map +1 -1
- package/dist/src/utils/adr-discovery.js +14 -9
- package/dist/src/utils/adr-discovery.js.map +1 -1
- package/dist/src/utils/adr-suggestions.d.ts +72 -0
- package/dist/src/utils/adr-suggestions.d.ts.map +1 -1
- package/dist/src/utils/adr-suggestions.js +6 -0
- package/dist/src/utils/adr-suggestions.js.map +1 -1
- package/dist/src/utils/cache.d.ts.map +1 -1
- package/dist/src/utils/cache.js +22 -19
- package/dist/src/utils/cache.js.map +1 -1
- package/dist/src/utils/chain-of-thought-template.d.ts +13 -1
- package/dist/src/utils/chain-of-thought-template.d.ts.map +1 -1
- package/dist/src/utils/chain-of-thought-template.js +31 -22
- package/dist/src/utils/chain-of-thought-template.js.map +1 -1
- package/dist/src/utils/config.d.ts.map +1 -1
- package/dist/src/utils/config.js +1 -0
- package/dist/src/utils/config.js.map +1 -1
- package/dist/src/utils/directory-compat.js +1 -1
- package/dist/src/utils/directory-compat.js.map +1 -1
- package/dist/src/utils/enhanced-logging.d.ts +195 -0
- package/dist/src/utils/enhanced-logging.d.ts.map +1 -0
- package/dist/src/utils/enhanced-logging.js +449 -0
- package/dist/src/utils/enhanced-logging.js.map +1 -0
- package/dist/src/utils/file-system.d.ts +182 -34
- package/dist/src/utils/file-system.d.ts.map +1 -1
- package/dist/src/utils/file-system.js +648 -774
- package/dist/src/utils/file-system.js.map +1 -1
- package/dist/src/utils/gitleaks-detector.d.ts +50 -0
- package/dist/src/utils/gitleaks-detector.d.ts.map +1 -0
- package/dist/src/utils/gitleaks-detector.js +334 -0
- package/dist/src/utils/gitleaks-detector.js.map +1 -0
- package/dist/src/utils/interactive-approval.d.ts +1 -1
- package/dist/src/utils/interactive-approval.d.ts.map +1 -1
- package/dist/src/utils/interactive-approval.js +22 -17
- package/dist/src/utils/interactive-approval.js.map +1 -1
- package/dist/src/utils/json-safe.d.ts.map +1 -1
- package/dist/src/utils/json-safe.js +9 -6
- package/dist/src/utils/json-safe.js.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.d.ts +37 -1
- package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.js +315 -70
- package/dist/src/utils/knowledge-graph-manager.js.map +1 -1
- package/dist/src/utils/location-filter.d.ts +35 -10
- package/dist/src/utils/location-filter.d.ts.map +1 -1
- package/dist/src/utils/location-filter.js +360 -94
- package/dist/src/utils/location-filter.js.map +1 -1
- package/dist/src/utils/mcp-response-validator.d.ts.map +1 -1
- package/dist/src/utils/mcp-response-validator.js +34 -19
- package/dist/src/utils/mcp-response-validator.js.map +1 -1
- package/dist/src/utils/memory-entity-manager.d.ts +134 -0
- package/dist/src/utils/memory-entity-manager.d.ts.map +1 -0
- package/dist/src/utils/memory-entity-manager.js +851 -0
- package/dist/src/utils/memory-entity-manager.js.map +1 -0
- package/dist/src/utils/memory-health-scoring.d.ts +125 -0
- package/dist/src/utils/memory-health-scoring.d.ts.map +1 -0
- package/dist/src/utils/memory-health-scoring.js +277 -0
- package/dist/src/utils/memory-health-scoring.js.map +1 -0
- package/dist/src/utils/memory-migration-manager.d.ts +93 -0
- package/dist/src/utils/memory-migration-manager.d.ts.map +1 -0
- package/dist/src/utils/memory-migration-manager.js +842 -0
- package/dist/src/utils/memory-migration-manager.js.map +1 -0
- package/dist/src/utils/memory-relationship-mapper.d.ts +87 -0
- package/dist/src/utils/memory-relationship-mapper.d.ts.map +1 -0
- package/dist/src/utils/memory-relationship-mapper.js +482 -0
- package/dist/src/utils/memory-relationship-mapper.js.map +1 -0
- package/dist/src/utils/memory-rollback-manager.d.ts +105 -0
- package/dist/src/utils/memory-rollback-manager.d.ts.map +1 -0
- package/dist/src/utils/memory-rollback-manager.js +575 -0
- package/dist/src/utils/memory-rollback-manager.js.map +1 -0
- package/dist/src/utils/memory-transformation.d.ts +59 -0
- package/dist/src/utils/memory-transformation.d.ts.map +1 -0
- package/dist/src/utils/memory-transformation.js +742 -0
- package/dist/src/utils/memory-transformation.js.map +1 -0
- package/dist/src/utils/output-masking.d.ts +12 -0
- package/dist/src/utils/output-masking.d.ts.map +1 -1
- package/dist/src/utils/output-masking.js +5 -0
- package/dist/src/utils/output-masking.js.map +1 -1
- package/dist/src/utils/prompt-execution.d.ts.map +1 -1
- package/dist/src/utils/prompt-execution.js +72 -51
- package/dist/src/utils/prompt-execution.js.map +1 -1
- package/dist/src/utils/release-readiness-detector.d.ts.map +1 -1
- package/dist/src/utils/release-readiness-detector.js +43 -42
- package/dist/src/utils/release-readiness-detector.js.map +1 -1
- package/dist/src/utils/research-integration.d.ts.map +1 -1
- package/dist/src/utils/research-integration.js +73 -44
- package/dist/src/utils/research-integration.js.map +1 -1
- package/dist/src/utils/research-questions.d.ts.map +1 -1
- package/dist/src/utils/research-questions.js +40 -14
- package/dist/src/utils/research-questions.js.map +1 -1
- package/dist/src/utils/ripgrep-wrapper.d.ts +84 -0
- package/dist/src/utils/ripgrep-wrapper.d.ts.map +1 -0
- package/dist/src/utils/ripgrep-wrapper.js +255 -0
- package/dist/src/utils/ripgrep-wrapper.js.map +1 -0
- package/dist/src/utils/rule-generation.d.ts.map +1 -1
- package/dist/src/utils/rule-generation.js +26 -15
- package/dist/src/utils/rule-generation.js.map +1 -1
- package/dist/src/utils/todo-file-watcher.d.ts +11 -23
- package/dist/src/utils/todo-file-watcher.d.ts.map +1 -1
- package/dist/src/utils/todo-file-watcher.js +18 -156
- package/dist/src/utils/todo-file-watcher.js.map +1 -1
- package/dist/src/utils/tree-sitter-analyzer.d.ts +185 -0
- package/dist/src/utils/tree-sitter-analyzer.d.ts.map +1 -0
- package/dist/src/utils/tree-sitter-analyzer.js +885 -0
- package/dist/src/utils/tree-sitter-analyzer.js.map +1 -0
- package/package.json +51 -10
- package/dist/src/tools/smart-score-tool.d.ts +0 -173
- package/dist/src/tools/smart-score-tool.d.ts.map +0 -1
- package/dist/src/tools/smart-score-tool.js +0 -681
- package/dist/src/tools/smart-score-tool.js.map +0 -1
- package/dist/src/tools/todo-management-tool-v2.d.ts +0 -368
- package/dist/src/tools/todo-management-tool-v2.d.ts.map +0 -1
- package/dist/src/tools/todo-management-tool-v2.js +0 -922
- package/dist/src/tools/todo-management-tool-v2.js.map +0 -1
- package/dist/src/utils/enhanced-sensitive-detector.d.ts +0 -61
- package/dist/src/utils/enhanced-sensitive-detector.d.ts.map +0 -1
- package/dist/src/utils/enhanced-sensitive-detector.js +0 -437
- package/dist/src/utils/enhanced-sensitive-detector.js.map +0 -1
- package/dist/src/utils/project-health-scoring.d.ts +0 -177
- package/dist/src/utils/project-health-scoring.d.ts.map +0 -1
- package/dist/src/utils/project-health-scoring.js +0 -370
- package/dist/src/utils/project-health-scoring.js.map +0 -1
- package/dist/src/utils/todo-json-manager.d.ts +0 -71
- package/dist/src/utils/todo-json-manager.d.ts.map +0 -1
- package/dist/src/utils/todo-json-manager.js +0 -396
- package/dist/src/utils/todo-json-manager.js.map +0 -1
- package/dist/src/utils/todo-markdown-converter.d.ts +0 -16
- package/dist/src/utils/todo-markdown-converter.d.ts.map +0 -1
- package/dist/src/utils/todo-markdown-converter.js +0 -362
- package/dist/src/utils/todo-markdown-converter.js.map +0 -1
- package/dist/src/utils/todo-migration.d.ts +0 -47
- package/dist/src/utils/todo-migration.d.ts.map +0 -1
- package/dist/src/utils/todo-migration.js +0 -261
- package/dist/src/utils/todo-migration.js.map +0 -1
|
@@ -0,0 +1,575 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Rollback Manager
|
|
3
|
+
*
|
|
4
|
+
* Provides safe rollback capabilities for memory-centric architecture migration.
|
|
5
|
+
* Handles restoration of legacy systems and data integrity validation.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs/promises';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import { existsSync } from 'fs';
|
|
10
|
+
import { EnhancedLogger } from './enhanced-logging.js';
|
|
11
|
+
import { loadConfig } from './config.js';
|
|
12
|
+
import { McpAdrError } from '../types/index.js';
|
|
13
|
+
export class MemoryRollbackManager {
|
|
14
|
+
// Memory manager could be used for selective rollback operations
|
|
15
|
+
logger;
|
|
16
|
+
config;
|
|
17
|
+
projectConfig;
|
|
18
|
+
constructor(_memoryManager, config) {
|
|
19
|
+
// Store memory manager reference if needed for future selective rollback features
|
|
20
|
+
this.logger = new EnhancedLogger();
|
|
21
|
+
this.projectConfig = loadConfig();
|
|
22
|
+
this.config = {
|
|
23
|
+
backupDirectory: path.join(this.projectConfig.projectPath, '.mcp-migration-backups'),
|
|
24
|
+
validateBeforeRollback: true,
|
|
25
|
+
createPreRollbackBackup: true,
|
|
26
|
+
preserveMemoryData: true,
|
|
27
|
+
rollbackTimeout: 300000, // 5 minutes
|
|
28
|
+
...config,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create a rollback point (wrapper for backup functionality)
|
|
33
|
+
*/
|
|
34
|
+
async createRollbackPoint(name) {
|
|
35
|
+
const backupPath = await this.createPreRollbackBackup();
|
|
36
|
+
this.logger.info(`Created rollback point: ${name || 'unnamed'} at ${backupPath}`, 'MemoryRollbackManager');
|
|
37
|
+
return backupPath;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Execute a rollback (wrapper for performFullRollback)
|
|
41
|
+
*/
|
|
42
|
+
async executeRollback(backupPath) {
|
|
43
|
+
return await this.performFullRollback(backupPath);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* List available rollback points
|
|
47
|
+
*/
|
|
48
|
+
async listRollbackPoints() {
|
|
49
|
+
try {
|
|
50
|
+
if (!existsSync(this.config.backupDirectory)) {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
const files = await fs.readdir(this.config.backupDirectory);
|
|
54
|
+
return files
|
|
55
|
+
.filter(f => f.endsWith('.backup.json'))
|
|
56
|
+
.sort()
|
|
57
|
+
.reverse();
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
this.logger.warn(`Failed to list rollback points: ${error}`, 'MemoryRollbackManager');
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Perform complete rollback to legacy system
|
|
66
|
+
*/
|
|
67
|
+
async performFullRollback(backupPath) {
|
|
68
|
+
const startTime = new Date();
|
|
69
|
+
this.logger.info('Starting full rollback to legacy system', 'MemoryRollbackManager');
|
|
70
|
+
const result = {
|
|
71
|
+
success: false,
|
|
72
|
+
rollbackType: 'failed',
|
|
73
|
+
restoredFiles: [],
|
|
74
|
+
errors: [],
|
|
75
|
+
performance: {
|
|
76
|
+
startTime: startTime.toISOString(),
|
|
77
|
+
endTime: '',
|
|
78
|
+
durationMs: 0,
|
|
79
|
+
},
|
|
80
|
+
validation: {
|
|
81
|
+
preRollbackValid: false,
|
|
82
|
+
postRollbackValid: false,
|
|
83
|
+
issues: [],
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
try {
|
|
87
|
+
// Find backup to restore from
|
|
88
|
+
const resolvedBackupPath = backupPath || (await this.findLatestBackup());
|
|
89
|
+
if (!resolvedBackupPath) {
|
|
90
|
+
throw new McpAdrError('No backup found for rollback', 'ROLLBACK_NO_BACKUP');
|
|
91
|
+
}
|
|
92
|
+
this.logger.info('Using backup for rollback', 'MemoryRollbackManager', {
|
|
93
|
+
backupPath: resolvedBackupPath,
|
|
94
|
+
});
|
|
95
|
+
// Validate backup before proceeding
|
|
96
|
+
if (this.config.validateBeforeRollback) {
|
|
97
|
+
const backupValidation = await this.validateBackup(resolvedBackupPath);
|
|
98
|
+
result.validation.preRollbackValid = backupValidation.isValid;
|
|
99
|
+
result.validation.issues.push(...backupValidation.issues);
|
|
100
|
+
if (!backupValidation.isValid) {
|
|
101
|
+
throw new McpAdrError(`Backup validation failed: ${backupValidation.issues.join(', ')}`, 'ROLLBACK_INVALID_BACKUP');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Create pre-rollback backup if enabled
|
|
105
|
+
if (this.config.createPreRollbackBackup) {
|
|
106
|
+
const preRollbackBackup = await this.createPreRollbackBackup();
|
|
107
|
+
this.logger.info('Pre-rollback backup created', 'MemoryRollbackManager', {
|
|
108
|
+
backupPath: preRollbackBackup,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
// Preserve memory data if requested
|
|
112
|
+
if (this.config.preserveMemoryData) {
|
|
113
|
+
result.preservedData = await this.preserveMemoryData();
|
|
114
|
+
}
|
|
115
|
+
// Stop memory services (in a real implementation, this would stop the server)
|
|
116
|
+
await this.stopMemoryServices();
|
|
117
|
+
// Clear memory data
|
|
118
|
+
await this.clearMemoryData();
|
|
119
|
+
// Restore legacy data
|
|
120
|
+
const restoredFiles = await this.restoreLegacyData(resolvedBackupPath);
|
|
121
|
+
result.restoredFiles = restoredFiles;
|
|
122
|
+
// Validate restoration
|
|
123
|
+
const postValidation = await this.validateLegacyRestoration(resolvedBackupPath);
|
|
124
|
+
result.validation.postRollbackValid = postValidation.isValid;
|
|
125
|
+
result.validation.issues.push(...postValidation.issues);
|
|
126
|
+
// Restart services (in a real implementation)
|
|
127
|
+
await this.restartLegacyServices();
|
|
128
|
+
result.success = true;
|
|
129
|
+
result.rollbackType = 'full';
|
|
130
|
+
this.logger.info('Full rollback completed successfully', 'MemoryRollbackManager', {
|
|
131
|
+
restoredFiles: restoredFiles.length,
|
|
132
|
+
preservedData: !!result.preservedData,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
result.success = false;
|
|
137
|
+
result.errors.push({
|
|
138
|
+
operation: 'full_rollback',
|
|
139
|
+
error: error instanceof Error ? error.message : String(error),
|
|
140
|
+
critical: true,
|
|
141
|
+
});
|
|
142
|
+
this.logger.error('Full rollback failed', 'MemoryRollbackManager');
|
|
143
|
+
// Attempt partial recovery
|
|
144
|
+
try {
|
|
145
|
+
await this.attemptPartialRecovery();
|
|
146
|
+
result.rollbackType = 'partial';
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
this.logger.error('Partial recovery also failed', 'MemoryRollbackManager');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Calculate performance metrics
|
|
153
|
+
const endTime = new Date();
|
|
154
|
+
result.performance.endTime = endTime.toISOString();
|
|
155
|
+
result.performance.durationMs = endTime.getTime() - startTime.getTime();
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Perform selective rollback of specific components
|
|
160
|
+
*/
|
|
161
|
+
async performSelectiveRollback(components, backupPath) {
|
|
162
|
+
const startTime = new Date();
|
|
163
|
+
this.logger.info('Starting selective rollback', 'MemoryRollbackManager', { components });
|
|
164
|
+
const result = {
|
|
165
|
+
success: false,
|
|
166
|
+
rollbackType: 'failed',
|
|
167
|
+
restoredFiles: [],
|
|
168
|
+
errors: [],
|
|
169
|
+
performance: {
|
|
170
|
+
startTime: startTime.toISOString(),
|
|
171
|
+
endTime: '',
|
|
172
|
+
durationMs: 0,
|
|
173
|
+
},
|
|
174
|
+
validation: {
|
|
175
|
+
preRollbackValid: true,
|
|
176
|
+
postRollbackValid: false,
|
|
177
|
+
issues: [],
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
try {
|
|
181
|
+
const resolvedBackupPath = backupPath || (await this.findLatestBackup());
|
|
182
|
+
if (!resolvedBackupPath) {
|
|
183
|
+
throw new McpAdrError('No backup found for rollback', 'ROLLBACK_NO_BACKUP');
|
|
184
|
+
}
|
|
185
|
+
for (const component of components) {
|
|
186
|
+
try {
|
|
187
|
+
const componentFiles = await this.restoreComponent(component, resolvedBackupPath);
|
|
188
|
+
result.restoredFiles.push(...componentFiles);
|
|
189
|
+
this.logger.debug('Component restored successfully', 'MemoryRollbackManager', {
|
|
190
|
+
component,
|
|
191
|
+
filesRestored: componentFiles.length,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
result.errors.push({
|
|
196
|
+
operation: `restore_${component}`,
|
|
197
|
+
error: error instanceof Error ? error.message : String(error),
|
|
198
|
+
critical: false,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
result.success = result.errors.filter(e => e.critical).length === 0;
|
|
203
|
+
result.rollbackType = result.success ? 'full' : 'partial';
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
result.errors.push({
|
|
207
|
+
operation: 'selective_rollback',
|
|
208
|
+
error: error instanceof Error ? error.message : String(error),
|
|
209
|
+
critical: true,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
const endTime = new Date();
|
|
213
|
+
result.performance.endTime = endTime.toISOString();
|
|
214
|
+
result.performance.durationMs = endTime.getTime() - startTime.getTime();
|
|
215
|
+
return result;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Validate that rollback can be performed safely
|
|
219
|
+
*/
|
|
220
|
+
async validateRollbackReadiness(backupPath) {
|
|
221
|
+
const issues = [];
|
|
222
|
+
const recommendations = [];
|
|
223
|
+
let backupInfo;
|
|
224
|
+
try {
|
|
225
|
+
// Find and validate backup
|
|
226
|
+
const resolvedBackupPath = backupPath || (await this.findLatestBackup());
|
|
227
|
+
if (!resolvedBackupPath) {
|
|
228
|
+
issues.push('No backup available for rollback');
|
|
229
|
+
recommendations.push('Create a backup before attempting rollback');
|
|
230
|
+
return { canRollback: false, issues, recommendations };
|
|
231
|
+
}
|
|
232
|
+
// Load backup manifest
|
|
233
|
+
const manifestPath = path.join(resolvedBackupPath, 'backup-manifest.json');
|
|
234
|
+
if (existsSync(manifestPath)) {
|
|
235
|
+
const manifestContent = await fs.readFile(manifestPath, 'utf-8');
|
|
236
|
+
backupInfo = JSON.parse(manifestContent);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
issues.push('Backup manifest not found');
|
|
240
|
+
}
|
|
241
|
+
// Validate backup integrity
|
|
242
|
+
const backupValidation = await this.validateBackup(resolvedBackupPath);
|
|
243
|
+
if (!backupValidation.isValid) {
|
|
244
|
+
issues.push(...backupValidation.issues);
|
|
245
|
+
}
|
|
246
|
+
// Check disk space
|
|
247
|
+
const spaceCheck = await this.checkDiskSpace(resolvedBackupPath);
|
|
248
|
+
if (!spaceCheck.sufficient) {
|
|
249
|
+
issues.push(`Insufficient disk space: ${spaceCheck.available} available, ${spaceCheck.required} required`);
|
|
250
|
+
recommendations.push('Free up disk space before rollback');
|
|
251
|
+
}
|
|
252
|
+
// Check for running processes
|
|
253
|
+
const processCheck = await this.checkRunningProcesses();
|
|
254
|
+
if (processCheck.hasRunningProcesses) {
|
|
255
|
+
issues.push('Memory-related processes are still running');
|
|
256
|
+
recommendations.push('Stop all memory-related services before rollback');
|
|
257
|
+
}
|
|
258
|
+
// Check backup age
|
|
259
|
+
if (backupInfo) {
|
|
260
|
+
const backupAge = Date.now() - new Date(backupInfo.timestamp).getTime();
|
|
261
|
+
const maxAge = 7 * 24 * 60 * 60 * 1000; // 7 days
|
|
262
|
+
if (backupAge > maxAge) {
|
|
263
|
+
recommendations.push('Backup is older than 7 days - consider creating a fresh backup');
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
issues.push(`Rollback validation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
269
|
+
}
|
|
270
|
+
return {
|
|
271
|
+
canRollback: issues.length === 0,
|
|
272
|
+
issues,
|
|
273
|
+
recommendations,
|
|
274
|
+
...(backupInfo && { backupInfo }),
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Create rollback plan documentation
|
|
279
|
+
*/
|
|
280
|
+
async generateRollbackPlan(backupPath) {
|
|
281
|
+
const resolvedBackupPath = backupPath || (await this.findLatestBackup());
|
|
282
|
+
const readinessCheck = await this.validateRollbackReadiness(resolvedBackupPath || undefined);
|
|
283
|
+
const plan = [
|
|
284
|
+
'# Memory System Rollback Plan',
|
|
285
|
+
'',
|
|
286
|
+
`Generated: ${new Date().toISOString()}`,
|
|
287
|
+
`Backup Path: ${resolvedBackupPath || 'Not found'}`,
|
|
288
|
+
'',
|
|
289
|
+
'## Pre-Rollback Checklist',
|
|
290
|
+
'',
|
|
291
|
+
'- [ ] Stop MCP ADR Analysis Server',
|
|
292
|
+
'- [ ] Verify backup integrity',
|
|
293
|
+
'- [ ] Create pre-rollback backup',
|
|
294
|
+
'- [ ] Ensure sufficient disk space',
|
|
295
|
+
'- [ ] Notify stakeholders',
|
|
296
|
+
'',
|
|
297
|
+
'## Rollback Steps',
|
|
298
|
+
'',
|
|
299
|
+
'### 1. Preparation',
|
|
300
|
+
'```bash',
|
|
301
|
+
'# Stop the server (implementation specific)',
|
|
302
|
+
'systemctl stop mcp-adr-server # or your stop command',
|
|
303
|
+
'',
|
|
304
|
+
'# Verify backup location',
|
|
305
|
+
`ls -la "${resolvedBackupPath}"`,
|
|
306
|
+
'```',
|
|
307
|
+
'',
|
|
308
|
+
'### 2. Clear Memory Data',
|
|
309
|
+
'```bash',
|
|
310
|
+
`rm -rf "${path.join(this.projectConfig.projectPath, '.mcp-adr-memory')}"`,
|
|
311
|
+
'```',
|
|
312
|
+
'',
|
|
313
|
+
'### 3. Restore Legacy Data',
|
|
314
|
+
'```bash',
|
|
315
|
+
`cp -r "${path.join(resolvedBackupPath || '', 'cache')}" "${path.join(this.projectConfig.projectPath, '.mcp-adr-cache')}"`,
|
|
316
|
+
`cp -r "${path.join(resolvedBackupPath || '', 'docs')}" "${path.join(this.projectConfig.projectPath, 'docs')}"`,
|
|
317
|
+
'```',
|
|
318
|
+
'',
|
|
319
|
+
'### 4. Restart System',
|
|
320
|
+
'```bash',
|
|
321
|
+
'# Start the server with legacy configuration',
|
|
322
|
+
'systemctl start mcp-adr-server # or your start command',
|
|
323
|
+
'```',
|
|
324
|
+
'',
|
|
325
|
+
'## Post-Rollback Validation',
|
|
326
|
+
'',
|
|
327
|
+
'- [ ] Verify ADR files are accessible',
|
|
328
|
+
'- [ ] Check deployment history is available',
|
|
329
|
+
'- [ ] Confirm troubleshooting data is present',
|
|
330
|
+
'- [ ] Test basic server functionality',
|
|
331
|
+
'',
|
|
332
|
+
'## Rollback Readiness Assessment',
|
|
333
|
+
'',
|
|
334
|
+
`**Can Rollback**: ${readinessCheck.canRollback ? '✅ Yes' : '❌ No'}`,
|
|
335
|
+
'',
|
|
336
|
+
];
|
|
337
|
+
if (readinessCheck.issues.length > 0) {
|
|
338
|
+
plan.push('### Issues to Resolve:');
|
|
339
|
+
readinessCheck.issues.forEach(issue => {
|
|
340
|
+
plan.push(`- ❌ ${issue}`);
|
|
341
|
+
});
|
|
342
|
+
plan.push('');
|
|
343
|
+
}
|
|
344
|
+
if (readinessCheck.recommendations.length > 0) {
|
|
345
|
+
plan.push('### Recommendations:');
|
|
346
|
+
readinessCheck.recommendations.forEach(rec => {
|
|
347
|
+
plan.push(`- 💡 ${rec}`);
|
|
348
|
+
});
|
|
349
|
+
plan.push('');
|
|
350
|
+
}
|
|
351
|
+
if (readinessCheck.backupInfo) {
|
|
352
|
+
plan.push('### Backup Information:');
|
|
353
|
+
plan.push(`- **Created**: ${readinessCheck.backupInfo.timestamp}`);
|
|
354
|
+
plan.push(`- **Version**: ${readinessCheck.backupInfo.migrationVersion}`);
|
|
355
|
+
plan.push(`- **Contents**: ${Object.entries(readinessCheck.backupInfo.backupContents)
|
|
356
|
+
.filter(([_, exists]) => exists)
|
|
357
|
+
.map(([name]) => name)
|
|
358
|
+
.join(', ')}`);
|
|
359
|
+
plan.push('');
|
|
360
|
+
}
|
|
361
|
+
plan.push('## Emergency Contacts');
|
|
362
|
+
plan.push('');
|
|
363
|
+
plan.push('- **System Administrator**: [Contact Info]');
|
|
364
|
+
plan.push('- **Database Administrator**: [Contact Info]');
|
|
365
|
+
plan.push('- **Development Team Lead**: [Contact Info]');
|
|
366
|
+
return plan.join('\n');
|
|
367
|
+
}
|
|
368
|
+
// Private helper methods
|
|
369
|
+
async findLatestBackup() {
|
|
370
|
+
try {
|
|
371
|
+
if (!existsSync(this.config.backupDirectory)) {
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
const backupDirs = await fs.readdir(this.config.backupDirectory);
|
|
375
|
+
const migrationBackups = backupDirs
|
|
376
|
+
.filter(dir => dir.startsWith('migration-'))
|
|
377
|
+
.sort()
|
|
378
|
+
.reverse();
|
|
379
|
+
return migrationBackups.length > 0
|
|
380
|
+
? path.join(this.config.backupDirectory, migrationBackups[0] || '')
|
|
381
|
+
: null;
|
|
382
|
+
}
|
|
383
|
+
catch {
|
|
384
|
+
this.logger.error('Failed to find latest backup', 'MemoryRollbackManager');
|
|
385
|
+
return null;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
async validateBackup(backupPath) {
|
|
389
|
+
const issues = [];
|
|
390
|
+
try {
|
|
391
|
+
// Check if backup directory exists
|
|
392
|
+
if (!existsSync(backupPath)) {
|
|
393
|
+
issues.push('Backup directory does not exist');
|
|
394
|
+
return { isValid: false, issues };
|
|
395
|
+
}
|
|
396
|
+
// Check for manifest file
|
|
397
|
+
const manifestPath = path.join(backupPath, 'backup-manifest.json');
|
|
398
|
+
if (!existsSync(manifestPath)) {
|
|
399
|
+
issues.push('Backup manifest file missing');
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
try {
|
|
403
|
+
const manifest = JSON.parse(await fs.readFile(manifestPath, 'utf-8'));
|
|
404
|
+
if (!manifest.timestamp || !manifest.projectPath) {
|
|
405
|
+
issues.push('Invalid backup manifest format');
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
catch {
|
|
409
|
+
issues.push('Cannot parse backup manifest');
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
// Check for expected backup contents
|
|
413
|
+
const expectedDirs = ['cache', 'docs'];
|
|
414
|
+
for (const dir of expectedDirs) {
|
|
415
|
+
const dirPath = path.join(backupPath, dir);
|
|
416
|
+
if (!existsSync(dirPath)) {
|
|
417
|
+
issues.push(`Expected backup directory missing: ${dir}`);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
catch (error) {
|
|
422
|
+
issues.push(`Backup validation error: ${error instanceof Error ? error.message : String(error)}`);
|
|
423
|
+
}
|
|
424
|
+
return {
|
|
425
|
+
isValid: issues.length === 0,
|
|
426
|
+
issues,
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
async createPreRollbackBackup() {
|
|
430
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
431
|
+
const backupDir = path.join(this.config.backupDirectory, `pre-rollback-${timestamp}`);
|
|
432
|
+
await fs.mkdir(backupDir, { recursive: true });
|
|
433
|
+
// Backup current memory data if it exists
|
|
434
|
+
const memoryDir = path.join(this.projectConfig.projectPath, '.mcp-adr-memory');
|
|
435
|
+
if (existsSync(memoryDir)) {
|
|
436
|
+
await this.copyDirectory(memoryDir, path.join(backupDir, 'memory'));
|
|
437
|
+
}
|
|
438
|
+
return backupDir;
|
|
439
|
+
}
|
|
440
|
+
async preserveMemoryData() {
|
|
441
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
442
|
+
const preservationDir = path.join(this.config.backupDirectory, `preserved-memory-${timestamp}`);
|
|
443
|
+
await fs.mkdir(preservationDir, { recursive: true });
|
|
444
|
+
const memoryDir = path.join(this.projectConfig.projectPath, '.mcp-adr-memory');
|
|
445
|
+
if (existsSync(memoryDir)) {
|
|
446
|
+
await this.copyDirectory(memoryDir, preservationDir);
|
|
447
|
+
}
|
|
448
|
+
return preservationDir;
|
|
449
|
+
}
|
|
450
|
+
async stopMemoryServices() {
|
|
451
|
+
this.logger.info('Stopping memory services', 'MemoryRollbackManager');
|
|
452
|
+
// In a real implementation, this would stop the MCP server
|
|
453
|
+
// For now, we'll just log the action
|
|
454
|
+
}
|
|
455
|
+
async clearMemoryData() {
|
|
456
|
+
const memoryDir = path.join(this.projectConfig.projectPath, '.mcp-adr-memory');
|
|
457
|
+
if (existsSync(memoryDir)) {
|
|
458
|
+
await fs.rm(memoryDir, { recursive: true, force: true });
|
|
459
|
+
this.logger.info('Memory data cleared', 'MemoryRollbackManager');
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
async restoreLegacyData(backupPath) {
|
|
463
|
+
const restoredFiles = [];
|
|
464
|
+
// Restore cache directory
|
|
465
|
+
const cacheBackupPath = path.join(backupPath, 'cache');
|
|
466
|
+
const cacheTargetPath = path.join(this.projectConfig.projectPath, '.mcp-adr-cache');
|
|
467
|
+
if (existsSync(cacheBackupPath)) {
|
|
468
|
+
await this.copyDirectory(cacheBackupPath, cacheTargetPath);
|
|
469
|
+
restoredFiles.push(cacheTargetPath);
|
|
470
|
+
}
|
|
471
|
+
// Restore docs directory
|
|
472
|
+
const docsBackupPath = path.join(backupPath, 'docs');
|
|
473
|
+
const docsTargetPath = path.join(this.projectConfig.projectPath, 'docs');
|
|
474
|
+
if (existsSync(docsBackupPath)) {
|
|
475
|
+
await this.copyDirectory(docsBackupPath, docsTargetPath);
|
|
476
|
+
restoredFiles.push(docsTargetPath);
|
|
477
|
+
}
|
|
478
|
+
return restoredFiles;
|
|
479
|
+
}
|
|
480
|
+
async restoreComponent(component, backupPath) {
|
|
481
|
+
const restoredFiles = [];
|
|
482
|
+
let sourcePath;
|
|
483
|
+
let targetPath;
|
|
484
|
+
switch (component) {
|
|
485
|
+
case 'cache':
|
|
486
|
+
sourcePath = path.join(backupPath, 'cache');
|
|
487
|
+
targetPath = path.join(this.projectConfig.projectPath, '.mcp-adr-cache');
|
|
488
|
+
break;
|
|
489
|
+
case 'docs':
|
|
490
|
+
sourcePath = path.join(backupPath, 'docs');
|
|
491
|
+
targetPath = path.join(this.projectConfig.projectPath, 'docs');
|
|
492
|
+
break;
|
|
493
|
+
case 'memory':
|
|
494
|
+
sourcePath = path.join(backupPath, 'memory');
|
|
495
|
+
targetPath = path.join(this.projectConfig.projectPath, '.mcp-adr-memory');
|
|
496
|
+
break;
|
|
497
|
+
}
|
|
498
|
+
if (existsSync(sourcePath)) {
|
|
499
|
+
await this.copyDirectory(sourcePath, targetPath);
|
|
500
|
+
restoredFiles.push(targetPath);
|
|
501
|
+
}
|
|
502
|
+
return restoredFiles;
|
|
503
|
+
}
|
|
504
|
+
async validateLegacyRestoration(_backupPath) {
|
|
505
|
+
const issues = [];
|
|
506
|
+
try {
|
|
507
|
+
// Check if expected legacy files exist
|
|
508
|
+
const cacheDir = path.join(this.projectConfig.projectPath, '.mcp-adr-cache');
|
|
509
|
+
const docsDir = path.join(this.projectConfig.projectPath, 'docs');
|
|
510
|
+
if (!existsSync(cacheDir)) {
|
|
511
|
+
issues.push('Cache directory not restored');
|
|
512
|
+
}
|
|
513
|
+
if (!existsSync(docsDir)) {
|
|
514
|
+
issues.push('Docs directory not restored');
|
|
515
|
+
}
|
|
516
|
+
// Verify specific legacy files exist
|
|
517
|
+
const expectedFiles = [
|
|
518
|
+
path.join(cacheDir, 'deployment-history.json'),
|
|
519
|
+
path.join(docsDir, 'adrs'),
|
|
520
|
+
];
|
|
521
|
+
for (const filePath of expectedFiles) {
|
|
522
|
+
if (!existsSync(filePath)) {
|
|
523
|
+
issues.push(`Expected file/directory not found: ${filePath}`);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
catch (error) {
|
|
528
|
+
issues.push(`Legacy restoration validation error: ${error instanceof Error ? error.message : String(error)}`);
|
|
529
|
+
}
|
|
530
|
+
return {
|
|
531
|
+
isValid: issues.length === 0,
|
|
532
|
+
issues,
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
async restartLegacyServices() {
|
|
536
|
+
this.logger.info('Restarting legacy services', 'MemoryRollbackManager');
|
|
537
|
+
// In a real implementation, this would restart the server with legacy configuration
|
|
538
|
+
}
|
|
539
|
+
async attemptPartialRecovery() {
|
|
540
|
+
this.logger.info('Attempting partial recovery', 'MemoryRollbackManager');
|
|
541
|
+
// Implement partial recovery logic here
|
|
542
|
+
}
|
|
543
|
+
async checkDiskSpace(_backupPath) {
|
|
544
|
+
// Simplified disk space check
|
|
545
|
+
// In a real implementation, you'd use fs.stat or a system call
|
|
546
|
+
return {
|
|
547
|
+
sufficient: true,
|
|
548
|
+
available: '10GB',
|
|
549
|
+
required: '5GB',
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
async checkRunningProcesses() {
|
|
553
|
+
// Simplified process check
|
|
554
|
+
// In a real implementation, you'd check for running MCP processes
|
|
555
|
+
return {
|
|
556
|
+
hasRunningProcesses: false,
|
|
557
|
+
processes: [],
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
async copyDirectory(src, dest) {
|
|
561
|
+
await fs.mkdir(dest, { recursive: true });
|
|
562
|
+
const entries = await fs.readdir(src, { withFileTypes: true });
|
|
563
|
+
for (const entry of entries) {
|
|
564
|
+
const srcPath = path.join(src, entry.name);
|
|
565
|
+
const destPath = path.join(dest, entry.name);
|
|
566
|
+
if (entry.isDirectory()) {
|
|
567
|
+
await this.copyDirectory(srcPath, destPath);
|
|
568
|
+
}
|
|
569
|
+
else {
|
|
570
|
+
await fs.copyFile(srcPath, destPath);
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
//# sourceMappingURL=memory-rollback-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-rollback-manager.js","sourceRoot":"","sources":["../../../src/utils/memory-rollback-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Transformation Utilities
|
|
3
|
+
*
|
|
4
|
+
* Utilities for transforming existing ADRs and system data into memory entities
|
|
5
|
+
* for the memory-centric architecture migration.
|
|
6
|
+
*/
|
|
7
|
+
import { ArchitecturalDecisionMemory, CodeComponentMemory, KnowledgeArtifactMemory, MemoryRelationship } from '../types/memory-entities.js';
|
|
8
|
+
import { DiscoveredAdr } from './adr-discovery.js';
|
|
9
|
+
import { MemoryEntityManager } from './memory-entity-manager.js';
|
|
10
|
+
export declare class MemoryTransformer {
|
|
11
|
+
private logger;
|
|
12
|
+
private _memoryManager;
|
|
13
|
+
constructor(memoryManager: MemoryEntityManager);
|
|
14
|
+
/**
|
|
15
|
+
* Transform a discovered ADR into an Architectural Decision Memory entity
|
|
16
|
+
*/
|
|
17
|
+
transformAdrToMemory(adr: DiscoveredAdr): Promise<ArchitecturalDecisionMemory>;
|
|
18
|
+
/**
|
|
19
|
+
* Transform multiple ADRs and infer relationships between them
|
|
20
|
+
*/
|
|
21
|
+
transformAdrCollectionToMemories(adrs: DiscoveredAdr[]): Promise<{
|
|
22
|
+
entities: ArchitecturalDecisionMemory[];
|
|
23
|
+
relationships: MemoryRelationship[];
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Create a knowledge artifact memory from documentation or research
|
|
27
|
+
*/
|
|
28
|
+
createKnowledgeArtifact(title: string, content: string, artifactType: KnowledgeArtifactMemory['artifactData']['artifactType'], sourceFile?: string): Promise<KnowledgeArtifactMemory>;
|
|
29
|
+
/**
|
|
30
|
+
* Transform project code structure into code component memories
|
|
31
|
+
*/
|
|
32
|
+
transformCodeStructureToMemories(codeStructure: any, // From project analysis
|
|
33
|
+
projectPath: string): Promise<CodeComponentMemory[]>;
|
|
34
|
+
private parseConsequences;
|
|
35
|
+
private extractListItems;
|
|
36
|
+
private extractImplementationTasks;
|
|
37
|
+
private mapAdrStatusToImplementation;
|
|
38
|
+
private mapAdrStatus;
|
|
39
|
+
private calculateConfidenceFromAdr;
|
|
40
|
+
private calculateRelevanceFromAdr;
|
|
41
|
+
private extractTagsFromAdr;
|
|
42
|
+
private inferProjectPhase;
|
|
43
|
+
private inferBusinessDomain;
|
|
44
|
+
private inferTechnicalStack;
|
|
45
|
+
private inferTechnicalStackFromContent;
|
|
46
|
+
private inferEnvironmentalFactors;
|
|
47
|
+
private inferStakeholders;
|
|
48
|
+
private extractAlternatives;
|
|
49
|
+
private parseAdrDate;
|
|
50
|
+
private inferAdrRelationships;
|
|
51
|
+
private extractDescriptionFromContent;
|
|
52
|
+
private extractTagsFromContent;
|
|
53
|
+
private detectContentFormat;
|
|
54
|
+
private inferApplicabilityScope;
|
|
55
|
+
private extractKeyInsights;
|
|
56
|
+
private extractActionableItems;
|
|
57
|
+
private inferActionPriority;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=memory-transformation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-transformation.d.ts","sourceRoot":"","sources":["../../../src/utils/memory-transformation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAIjE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAiB;IAE/B,OAAO,CAAC,cAAc,CAAsB;gBAEhC,aAAa,EAAE,mBAAmB;IAM9C;;OAEG;IACG,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAuGpF;;OAEG;IACG,gCAAgC,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;QACrE,QAAQ,EAAE,2BAA2B,EAAE,CAAC;QACxC,aAAa,EAAE,kBAAkB,EAAE,CAAC;KACrC,CAAC;IAuCF;;OAEG;IACG,uBAAuB,CAC3B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,uBAAuB,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,EACrE,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,CAAC;IAqDnC;;OAEG;IACG,gCAAgC,CACpC,aAAa,EAAE,GAAG,EAAE,wBAAwB;IAC5C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAgBjC,OAAO,CAAC,iBAAiB;IA8DzB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,0BAA0B;IAwBlC,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,0BAA0B;IAkBlC,OAAO,CAAC,yBAAyB;IAkBjC,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,8BAA8B;IA6DtC,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,qBAAqB;IA8G7B,OAAO,CAAC,6BAA6B;IAMrC,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,sBAAsB;IA4B9B,OAAO,CAAC,mBAAmB;CAO5B"}
|