mcp-adr-analysis-server 2.0.21 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/README.md +94 -839
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/config/ai-config.d.ts.map +1 -1
  4. package/dist/src/config/ai-config.js +9 -9
  5. package/dist/src/config/ai-config.js.map +1 -1
  6. package/dist/src/index.d.ts +15 -0
  7. package/dist/src/index.d.ts.map +1 -1
  8. package/dist/src/index.js +1594 -837
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/prompts/analysis-prompts.d.ts +4 -1
  11. package/dist/src/prompts/analysis-prompts.d.ts.map +1 -1
  12. package/dist/src/prompts/analysis-prompts.js +61 -30
  13. package/dist/src/prompts/analysis-prompts.js.map +1 -1
  14. package/dist/src/prompts/index.d.ts +17 -1
  15. package/dist/src/prompts/index.d.ts.map +1 -1
  16. package/dist/src/prompts/index.js +325 -1
  17. package/dist/src/prompts/index.js.map +1 -1
  18. package/dist/src/prompts/rule-generation-prompts.d.ts +5 -1
  19. package/dist/src/prompts/rule-generation-prompts.d.ts.map +1 -1
  20. package/dist/src/prompts/rule-generation-prompts.js +5 -1
  21. package/dist/src/prompts/rule-generation-prompts.js.map +1 -1
  22. package/dist/src/prompts/security-prompts.d.ts +6 -1
  23. package/dist/src/prompts/security-prompts.d.ts.map +1 -1
  24. package/dist/src/prompts/security-prompts.js +6 -1
  25. package/dist/src/prompts/security-prompts.js.map +1 -1
  26. package/dist/src/prompts/todo-prompts.d.ts +49 -0
  27. package/dist/src/prompts/todo-prompts.d.ts.map +1 -0
  28. package/dist/src/prompts/todo-prompts.js +824 -0
  29. package/dist/src/prompts/todo-prompts.js.map +1 -0
  30. package/dist/src/resources/index.d.ts.map +1 -1
  31. package/dist/src/resources/index.js +9 -7
  32. package/dist/src/resources/index.js.map +1 -1
  33. package/dist/src/tools/adr-bootstrap-validation-tool.d.ts +47 -0
  34. package/dist/src/tools/adr-bootstrap-validation-tool.d.ts.map +1 -0
  35. package/dist/src/tools/adr-bootstrap-validation-tool.js +979 -0
  36. package/dist/src/tools/adr-bootstrap-validation-tool.js.map +1 -0
  37. package/dist/src/tools/adr-suggestion-tool.d.ts +1 -0
  38. package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
  39. package/dist/src/tools/adr-suggestion-tool.js +330 -32
  40. package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
  41. package/dist/src/tools/content-masking-tool.d.ts +5 -0
  42. package/dist/src/tools/content-masking-tool.d.ts.map +1 -1
  43. package/dist/src/tools/content-masking-tool.js +631 -28
  44. package/dist/src/tools/content-masking-tool.js.map +1 -1
  45. package/dist/src/tools/deployment-readiness-tool.d.ts +8 -5
  46. package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -1
  47. package/dist/src/tools/deployment-readiness-tool.js +1017 -93
  48. package/dist/src/tools/deployment-readiness-tool.js.map +1 -1
  49. package/dist/src/tools/environment-analysis-tool.d.ts +4 -0
  50. package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -1
  51. package/dist/src/tools/environment-analysis-tool.js +568 -24
  52. package/dist/src/tools/environment-analysis-tool.js.map +1 -1
  53. package/dist/src/tools/interactive-adr-planning-tool.d.ts.map +1 -1
  54. package/dist/src/tools/interactive-adr-planning-tool.js +270 -108
  55. package/dist/src/tools/interactive-adr-planning-tool.js.map +1 -1
  56. package/dist/src/tools/mcp-planning-tool.d.ts.map +1 -1
  57. package/dist/src/tools/mcp-planning-tool.js +316 -183
  58. package/dist/src/tools/mcp-planning-tool.js.map +1 -1
  59. package/dist/src/tools/memory-loading-tool.d.ts +60 -0
  60. package/dist/src/tools/memory-loading-tool.d.ts.map +1 -0
  61. package/dist/src/tools/memory-loading-tool.js +457 -0
  62. package/dist/src/tools/memory-loading-tool.js.map +1 -0
  63. package/dist/src/tools/research-integration-tool.d.ts +4 -1
  64. package/dist/src/tools/research-integration-tool.d.ts.map +1 -1
  65. package/dist/src/tools/research-integration-tool.js +5 -1
  66. package/dist/src/tools/research-integration-tool.js.map +1 -1
  67. package/dist/src/tools/review-existing-adrs-tool.d.ts +19 -0
  68. package/dist/src/tools/review-existing-adrs-tool.d.ts.map +1 -0
  69. package/dist/src/tools/review-existing-adrs-tool.js +1204 -0
  70. package/dist/src/tools/review-existing-adrs-tool.js.map +1 -0
  71. package/dist/src/tools/rule-generation-tool.d.ts +2 -0
  72. package/dist/src/tools/rule-generation-tool.d.ts.map +1 -1
  73. package/dist/src/tools/rule-generation-tool.js +274 -33
  74. package/dist/src/tools/rule-generation-tool.js.map +1 -1
  75. package/dist/src/tools/smart-git-push-tool-v2.d.ts +4 -0
  76. package/dist/src/tools/smart-git-push-tool-v2.d.ts.map +1 -1
  77. package/dist/src/tools/smart-git-push-tool-v2.js +423 -229
  78. package/dist/src/tools/smart-git-push-tool-v2.js.map +1 -1
  79. package/dist/src/tools/smart-git-push-tool.d.ts +3 -0
  80. package/dist/src/tools/smart-git-push-tool.d.ts.map +1 -1
  81. package/dist/src/tools/smart-git-push-tool.js +241 -235
  82. package/dist/src/tools/smart-git-push-tool.js.map +1 -1
  83. package/dist/src/tools/tool-chain-orchestrator.d.ts +2 -2
  84. package/dist/src/tools/tool-chain-orchestrator.d.ts.map +1 -1
  85. package/dist/src/tools/tool-chain-orchestrator.js +152 -93
  86. package/dist/src/tools/tool-chain-orchestrator.js.map +1 -1
  87. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +22 -13
  88. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -1
  89. package/dist/src/tools/troubleshoot-guided-workflow-tool.js +660 -28
  90. package/dist/src/tools/troubleshoot-guided-workflow-tool.js.map +1 -1
  91. package/dist/src/types/ape-framework.d.ts +93 -0
  92. package/dist/src/types/ape-framework.d.ts.map +1 -1
  93. package/dist/src/types/ape-framework.js +10 -10
  94. package/dist/src/types/ape-framework.js.map +1 -1
  95. package/dist/src/types/enhanced-errors.d.ts +173 -0
  96. package/dist/src/types/enhanced-errors.d.ts.map +1 -0
  97. package/dist/src/types/enhanced-errors.js +668 -0
  98. package/dist/src/types/enhanced-errors.js.map +1 -0
  99. package/dist/src/types/index.d.ts +129 -3
  100. package/dist/src/types/index.d.ts.map +1 -1
  101. package/dist/src/types/index.js +15 -0
  102. package/dist/src/types/index.js.map +1 -1
  103. package/dist/src/types/knowledge-generation.d.ts +78 -0
  104. package/dist/src/types/knowledge-generation.d.ts.map +1 -1
  105. package/dist/src/types/knowledge-generation.js +10 -6
  106. package/dist/src/types/knowledge-generation.js.map +1 -1
  107. package/dist/src/types/knowledge-graph-schemas.d.ts +92 -0
  108. package/dist/src/types/knowledge-graph-schemas.d.ts.map +1 -1
  109. package/dist/src/types/knowledge-graph-schemas.js +45 -17
  110. package/dist/src/types/knowledge-graph-schemas.js.map +1 -1
  111. package/dist/src/types/memory-entities.d.ts +7209 -0
  112. package/dist/src/types/memory-entities.d.ts.map +1 -0
  113. package/dist/src/types/memory-entities.js +395 -0
  114. package/dist/src/types/memory-entities.js.map +1 -0
  115. package/dist/src/types/reflexion-framework.d.ts +44 -0
  116. package/dist/src/types/reflexion-framework.d.ts.map +1 -1
  117. package/dist/src/types/reflexion-framework.js +7 -7
  118. package/dist/src/types/reflexion-framework.js.map +1 -1
  119. package/dist/src/types/todo-json-schemas.d.ts +7 -653
  120. package/dist/src/types/todo-json-schemas.d.ts.map +1 -1
  121. package/dist/src/types/todo-json-schemas.js +6 -110
  122. package/dist/src/types/todo-json-schemas.js.map +1 -1
  123. package/dist/src/types/tool-arguments.d.ts +224 -0
  124. package/dist/src/types/tool-arguments.d.ts.map +1 -0
  125. package/dist/src/types/tool-arguments.js +6 -0
  126. package/dist/src/types/tool-arguments.js.map +1 -0
  127. package/dist/src/utils/actual-file-operations.d.ts.map +1 -1
  128. package/dist/src/utils/actual-file-operations.js +25 -9
  129. package/dist/src/utils/actual-file-operations.js.map +1 -1
  130. package/dist/src/utils/adr-discovery.d.ts +33 -1
  131. package/dist/src/utils/adr-discovery.d.ts.map +1 -1
  132. package/dist/src/utils/adr-discovery.js +14 -9
  133. package/dist/src/utils/adr-discovery.js.map +1 -1
  134. package/dist/src/utils/adr-suggestions.d.ts +72 -0
  135. package/dist/src/utils/adr-suggestions.d.ts.map +1 -1
  136. package/dist/src/utils/adr-suggestions.js +6 -0
  137. package/dist/src/utils/adr-suggestions.js.map +1 -1
  138. package/dist/src/utils/cache.d.ts.map +1 -1
  139. package/dist/src/utils/cache.js +22 -19
  140. package/dist/src/utils/cache.js.map +1 -1
  141. package/dist/src/utils/chain-of-thought-template.d.ts +13 -1
  142. package/dist/src/utils/chain-of-thought-template.d.ts.map +1 -1
  143. package/dist/src/utils/chain-of-thought-template.js +31 -22
  144. package/dist/src/utils/chain-of-thought-template.js.map +1 -1
  145. package/dist/src/utils/config.d.ts.map +1 -1
  146. package/dist/src/utils/config.js +1 -0
  147. package/dist/src/utils/config.js.map +1 -1
  148. package/dist/src/utils/directory-compat.js +1 -1
  149. package/dist/src/utils/directory-compat.js.map +1 -1
  150. package/dist/src/utils/enhanced-logging.d.ts +195 -0
  151. package/dist/src/utils/enhanced-logging.d.ts.map +1 -0
  152. package/dist/src/utils/enhanced-logging.js +449 -0
  153. package/dist/src/utils/enhanced-logging.js.map +1 -0
  154. package/dist/src/utils/file-system.d.ts +182 -34
  155. package/dist/src/utils/file-system.d.ts.map +1 -1
  156. package/dist/src/utils/file-system.js +648 -774
  157. package/dist/src/utils/file-system.js.map +1 -1
  158. package/dist/src/utils/gitleaks-detector.d.ts +50 -0
  159. package/dist/src/utils/gitleaks-detector.d.ts.map +1 -0
  160. package/dist/src/utils/gitleaks-detector.js +334 -0
  161. package/dist/src/utils/gitleaks-detector.js.map +1 -0
  162. package/dist/src/utils/interactive-approval.d.ts +1 -1
  163. package/dist/src/utils/interactive-approval.d.ts.map +1 -1
  164. package/dist/src/utils/interactive-approval.js +22 -17
  165. package/dist/src/utils/interactive-approval.js.map +1 -1
  166. package/dist/src/utils/json-safe.d.ts.map +1 -1
  167. package/dist/src/utils/json-safe.js +9 -6
  168. package/dist/src/utils/json-safe.js.map +1 -1
  169. package/dist/src/utils/knowledge-graph-manager.d.ts +37 -1
  170. package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
  171. package/dist/src/utils/knowledge-graph-manager.js +315 -70
  172. package/dist/src/utils/knowledge-graph-manager.js.map +1 -1
  173. package/dist/src/utils/location-filter.d.ts +35 -10
  174. package/dist/src/utils/location-filter.d.ts.map +1 -1
  175. package/dist/src/utils/location-filter.js +360 -94
  176. package/dist/src/utils/location-filter.js.map +1 -1
  177. package/dist/src/utils/mcp-response-validator.d.ts.map +1 -1
  178. package/dist/src/utils/mcp-response-validator.js +34 -19
  179. package/dist/src/utils/mcp-response-validator.js.map +1 -1
  180. package/dist/src/utils/memory-entity-manager.d.ts +134 -0
  181. package/dist/src/utils/memory-entity-manager.d.ts.map +1 -0
  182. package/dist/src/utils/memory-entity-manager.js +851 -0
  183. package/dist/src/utils/memory-entity-manager.js.map +1 -0
  184. package/dist/src/utils/memory-health-scoring.d.ts +125 -0
  185. package/dist/src/utils/memory-health-scoring.d.ts.map +1 -0
  186. package/dist/src/utils/memory-health-scoring.js +277 -0
  187. package/dist/src/utils/memory-health-scoring.js.map +1 -0
  188. package/dist/src/utils/memory-migration-manager.d.ts +93 -0
  189. package/dist/src/utils/memory-migration-manager.d.ts.map +1 -0
  190. package/dist/src/utils/memory-migration-manager.js +842 -0
  191. package/dist/src/utils/memory-migration-manager.js.map +1 -0
  192. package/dist/src/utils/memory-relationship-mapper.d.ts +87 -0
  193. package/dist/src/utils/memory-relationship-mapper.d.ts.map +1 -0
  194. package/dist/src/utils/memory-relationship-mapper.js +482 -0
  195. package/dist/src/utils/memory-relationship-mapper.js.map +1 -0
  196. package/dist/src/utils/memory-rollback-manager.d.ts +105 -0
  197. package/dist/src/utils/memory-rollback-manager.d.ts.map +1 -0
  198. package/dist/src/utils/memory-rollback-manager.js +575 -0
  199. package/dist/src/utils/memory-rollback-manager.js.map +1 -0
  200. package/dist/src/utils/memory-transformation.d.ts +59 -0
  201. package/dist/src/utils/memory-transformation.d.ts.map +1 -0
  202. package/dist/src/utils/memory-transformation.js +742 -0
  203. package/dist/src/utils/memory-transformation.js.map +1 -0
  204. package/dist/src/utils/output-masking.d.ts +12 -0
  205. package/dist/src/utils/output-masking.d.ts.map +1 -1
  206. package/dist/src/utils/output-masking.js +5 -0
  207. package/dist/src/utils/output-masking.js.map +1 -1
  208. package/dist/src/utils/prompt-execution.d.ts.map +1 -1
  209. package/dist/src/utils/prompt-execution.js +72 -51
  210. package/dist/src/utils/prompt-execution.js.map +1 -1
  211. package/dist/src/utils/release-readiness-detector.d.ts.map +1 -1
  212. package/dist/src/utils/release-readiness-detector.js +43 -42
  213. package/dist/src/utils/release-readiness-detector.js.map +1 -1
  214. package/dist/src/utils/research-integration.d.ts.map +1 -1
  215. package/dist/src/utils/research-integration.js +73 -44
  216. package/dist/src/utils/research-integration.js.map +1 -1
  217. package/dist/src/utils/research-questions.d.ts.map +1 -1
  218. package/dist/src/utils/research-questions.js +40 -14
  219. package/dist/src/utils/research-questions.js.map +1 -1
  220. package/dist/src/utils/ripgrep-wrapper.d.ts +84 -0
  221. package/dist/src/utils/ripgrep-wrapper.d.ts.map +1 -0
  222. package/dist/src/utils/ripgrep-wrapper.js +255 -0
  223. package/dist/src/utils/ripgrep-wrapper.js.map +1 -0
  224. package/dist/src/utils/rule-generation.d.ts.map +1 -1
  225. package/dist/src/utils/rule-generation.js +26 -15
  226. package/dist/src/utils/rule-generation.js.map +1 -1
  227. package/dist/src/utils/todo-file-watcher.d.ts +11 -23
  228. package/dist/src/utils/todo-file-watcher.d.ts.map +1 -1
  229. package/dist/src/utils/todo-file-watcher.js +18 -156
  230. package/dist/src/utils/todo-file-watcher.js.map +1 -1
  231. package/dist/src/utils/tree-sitter-analyzer.d.ts +185 -0
  232. package/dist/src/utils/tree-sitter-analyzer.d.ts.map +1 -0
  233. package/dist/src/utils/tree-sitter-analyzer.js +885 -0
  234. package/dist/src/utils/tree-sitter-analyzer.js.map +1 -0
  235. package/package.json +51 -10
  236. package/dist/src/tools/smart-score-tool.d.ts +0 -173
  237. package/dist/src/tools/smart-score-tool.d.ts.map +0 -1
  238. package/dist/src/tools/smart-score-tool.js +0 -681
  239. package/dist/src/tools/smart-score-tool.js.map +0 -1
  240. package/dist/src/tools/todo-management-tool-v2.d.ts +0 -368
  241. package/dist/src/tools/todo-management-tool-v2.d.ts.map +0 -1
  242. package/dist/src/tools/todo-management-tool-v2.js +0 -922
  243. package/dist/src/tools/todo-management-tool-v2.js.map +0 -1
  244. package/dist/src/utils/enhanced-sensitive-detector.d.ts +0 -61
  245. package/dist/src/utils/enhanced-sensitive-detector.d.ts.map +0 -1
  246. package/dist/src/utils/enhanced-sensitive-detector.js +0 -437
  247. package/dist/src/utils/enhanced-sensitive-detector.js.map +0 -1
  248. package/dist/src/utils/project-health-scoring.d.ts +0 -177
  249. package/dist/src/utils/project-health-scoring.d.ts.map +0 -1
  250. package/dist/src/utils/project-health-scoring.js +0 -370
  251. package/dist/src/utils/project-health-scoring.js.map +0 -1
  252. package/dist/src/utils/todo-json-manager.d.ts +0 -71
  253. package/dist/src/utils/todo-json-manager.d.ts.map +0 -1
  254. package/dist/src/utils/todo-json-manager.js +0 -396
  255. package/dist/src/utils/todo-json-manager.js.map +0 -1
  256. package/dist/src/utils/todo-markdown-converter.d.ts +0 -16
  257. package/dist/src/utils/todo-markdown-converter.d.ts.map +0 -1
  258. package/dist/src/utils/todo-markdown-converter.js +0 -362
  259. package/dist/src/utils/todo-markdown-converter.js.map +0 -1
  260. package/dist/src/utils/todo-migration.d.ts +0 -47
  261. package/dist/src/utils/todo-migration.d.ts.map +0 -1
  262. package/dist/src/utils/todo-migration.js +0 -261
  263. package/dist/src/utils/todo-migration.js.map +0 -1
@@ -0,0 +1,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"}