claude-flow-novice 1.3.0 → 1.3.2

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 (305) hide show
  1. package/.claude-flow-novice/preferences/generation.json +147 -0
  2. package/.claude-flow-novice/preferences/language-configs/javascript.json +51 -0
  3. package/.claude-flow-novice/preferences/language-configs/python.json +50 -0
  4. package/.claude-flow-novice/preferences/language-configs/rust.json +237 -0
  5. package/.claude-flow-novice/preferences/language-configs/typescript.json +54 -0
  6. package/.claude-flow-novice/preferences/project-local.json +91 -0
  7. package/.claude-flow-novice/preferences/resource-delegation.json +120 -0
  8. package/.claude-flow-novice/preferences/team-shared.json +195 -0
  9. package/.claude-flow-novice/preferences/user-global.json +247 -0
  10. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-JAVASCRIPT.md +769 -0
  11. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-PYTHON.md +1214 -0
  12. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-RUST.md +475 -0
  13. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-TYPESCRIPT.md +851 -0
  14. package/.claude-flow-novice/templates/claude-md-templates/README.md +263 -0
  15. package/CLAUDE.md +81 -0
  16. package/README-NPM.md +0 -0
  17. package/package.json +11 -7
  18. package/scripts/build/README.md +167 -0
  19. package/scripts/build/build-config.js +27 -0
  20. package/scripts/build/build-prompt-copier.sh +30 -0
  21. package/scripts/build/performance-monitor.js +869 -0
  22. package/scripts/build/prepare-publish.js +150 -0
  23. package/scripts/build/typescript-fixer.js +621 -0
  24. package/scripts/build/unified-builder.sh +428 -0
  25. package/scripts/build/update-bin-version.js +32 -0
  26. package/scripts/dev/README.md +264 -0
  27. package/scripts/dev/claude-flow-wrapper.sh +35 -0
  28. package/scripts/dev/claude-monitor.py +419 -0
  29. package/scripts/dev/claude-sparc.sh +562 -0
  30. package/scripts/dev/claude-wrapper.sh +17 -0
  31. package/scripts/dev/demo-phase3-compliance.js +172 -0
  32. package/scripts/dev/demo-task-system.ts +224 -0
  33. package/scripts/dev/deployment-validator.js +315 -0
  34. package/scripts/dev/spawn-claude-terminal.sh +32 -0
  35. package/scripts/dev/start-portal.sh +506 -0
  36. package/scripts/dev/start-web-ui.js +15 -0
  37. package/scripts/dev/stop-portal.sh +311 -0
  38. package/scripts/dev/validate-examples.ts +288 -0
  39. package/scripts/dev/validate-phase2.cjs +451 -0
  40. package/scripts/dev/validate-phase2.js +785 -0
  41. package/scripts/dev/validate-phase3.cjs +208 -0
  42. package/scripts/dev/validate-security-remediation.js +1 -0
  43. package/scripts/legacy/README.md +272 -0
  44. package/scripts/legacy/batch-fix-ts.sh +54 -0
  45. package/scripts/legacy/build-migration.sh +105 -0
  46. package/scripts/legacy/build-monitor.js +209 -0
  47. package/scripts/legacy/build-with-filter.sh +84 -0
  48. package/scripts/legacy/build-workaround.sh +71 -0
  49. package/scripts/legacy/fix-ts-advanced.js +358 -0
  50. package/scripts/legacy/fix-ts-final.sh +50 -0
  51. package/scripts/legacy/fix-ts-targeted.sh +49 -0
  52. package/scripts/legacy/fix-typescript-errors.js +305 -0
  53. package/scripts/legacy/force-build.sh +63 -0
  54. package/scripts/legacy/optimize-performance.js +400 -0
  55. package/scripts/legacy/performance-monitor.js +263 -0
  56. package/scripts/legacy/performance-monitoring.js +532 -0
  57. package/scripts/legacy/performance-test-runner.js +645 -0
  58. package/scripts/legacy/quick-fix-ts.js +281 -0
  59. package/scripts/legacy/safe-build.sh +63 -0
  60. package/scripts/migration/README.md +434 -0
  61. package/scripts/migration/install-arm64.js +78 -0
  62. package/scripts/migration/install.js +83 -0
  63. package/scripts/migration/migrate-hooks.js +173 -0
  64. package/scripts/migration/migration-examples.ts +318 -0
  65. package/scripts/optimization/build-optimizer.js +438 -0
  66. package/scripts/optimization/config-validator.js +761 -0
  67. package/scripts/optimization/test-optimization.js +432 -0
  68. package/scripts/optimization/unified-activation.js +839 -0
  69. package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
  70. package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
  71. package/scripts/performance/test-enhanced-backend.sh +504 -0
  72. package/scripts/performance-test-runner.js +698 -0
  73. package/scripts/security/README.md +339 -0
  74. package/scripts/security/install-git-hooks.sh +132 -0
  75. package/scripts/security/ruv-swarm-safe.js +74 -0
  76. package/scripts/test/README.md +236 -0
  77. package/scripts/test/check-links.ts +274 -0
  78. package/scripts/test/check-performance-regression.ts +168 -0
  79. package/scripts/test/coverage-report.ts +692 -0
  80. package/scripts/test/generate-swarm-tests.js +633 -0
  81. package/scripts/test/integration-test-validation.cjs +253 -0
  82. package/scripts/test/load-test-swarm.js +576 -0
  83. package/scripts/test/run-phase3-compliance-tests.js +427 -0
  84. package/scripts/test/test-batch-tasks.ts +29 -0
  85. package/scripts/test/test-byzantine-resolution.js +246 -0
  86. package/scripts/test/test-claude-spawn-options.sh +63 -0
  87. package/scripts/test/test-cli-wizard.js +331 -0
  88. package/scripts/test/test-comprehensive.js +401 -0
  89. package/scripts/test/test-coordination-features.ts +238 -0
  90. package/scripts/test/test-fallback-systems.js +276 -0
  91. package/scripts/test/test-init-command.ts +302 -0
  92. package/scripts/test/test-mcp.ts +251 -0
  93. package/scripts/test/test-runner.ts +568 -0
  94. package/scripts/test/test-swarm-integration.sh +92 -0
  95. package/scripts/test/test-swarm.ts +142 -0
  96. package/scripts/test/validation-summary.ts +408 -0
  97. package/scripts/utils/README.md +261 -0
  98. package/scripts/utils/clean-build-artifacts.sh +94 -0
  99. package/scripts/utils/cleanup-root.sh +69 -0
  100. package/scripts/utils/fix-cliffy-imports.js +307 -0
  101. package/scripts/utils/fix-duplicate-imports.js +114 -0
  102. package/scripts/utils/fix-error-handling.cjs +70 -0
  103. package/scripts/utils/fix-import-paths.js +104 -0
  104. package/scripts/utils/fix-imports.js +116 -0
  105. package/scripts/utils/fix-shebang.js +78 -0
  106. package/scripts/utils/fix-test-modules.js +27 -0
  107. package/scripts/utils/fix-timezone-issue-246.js +200 -0
  108. package/scripts/utils/fix-ts-comprehensive.py +182 -0
  109. package/scripts/utils/fix-ts-targeted-batch.js +250 -0
  110. package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
  111. package/scripts/utils/simple-test-fixer.js +190 -0
  112. package/scripts/utils/validate-metrics-structure.cjs +144 -0
  113. package/scripts/verify-mcp-server.js +86 -0
  114. package/src/cli/simple-commands/__tests__/agent.test.js +291 -0
  115. package/src/cli/simple-commands/__tests__/memory.test.js +8 -0
  116. package/src/cli/simple-commands/__tests__/swarm.test.js +371 -0
  117. package/src/cli/simple-commands/__tests__/task.test.js +8 -0
  118. package/src/cli/simple-commands/agent.js +216 -0
  119. package/src/cli/simple-commands/analysis.js +570 -0
  120. package/src/cli/simple-commands/automation-executor.js +1603 -0
  121. package/src/cli/simple-commands/automation.js +627 -0
  122. package/src/cli/simple-commands/batch-manager.js +338 -0
  123. package/src/cli/simple-commands/claude-telemetry.js +311 -0
  124. package/src/cli/simple-commands/claude-track.js +102 -0
  125. package/src/cli/simple-commands/concurrent-display.js +348 -0
  126. package/src/cli/simple-commands/config.js +319 -0
  127. package/src/cli/simple-commands/coordination.js +307 -0
  128. package/src/cli/simple-commands/enhanced-ui-views.js +654 -0
  129. package/src/cli/simple-commands/enhanced-webui-complete.js +1038 -0
  130. package/src/cli/simple-commands/fix-hook-variables.js +363 -0
  131. package/src/cli/simple-commands/github/gh-coordinator.js +605 -0
  132. package/src/cli/simple-commands/github/github-api.js +624 -0
  133. package/src/cli/simple-commands/github/init.js +543 -0
  134. package/src/cli/simple-commands/github.js +377 -0
  135. package/src/cli/simple-commands/goal.js +145 -0
  136. package/src/cli/simple-commands/hive-mind/auto-save-middleware.js +311 -0
  137. package/src/cli/simple-commands/hive-mind/communication.js +740 -0
  138. package/src/cli/simple-commands/hive-mind/core.js +1031 -0
  139. package/src/cli/simple-commands/hive-mind/db-optimizer.js +872 -0
  140. package/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1364 -0
  141. package/src/cli/simple-commands/hive-mind/memory.js +1292 -0
  142. package/src/cli/simple-commands/hive-mind/performance-optimizer.js +618 -0
  143. package/src/cli/simple-commands/hive-mind/performance-test.js +373 -0
  144. package/src/cli/simple-commands/hive-mind/queen.js +809 -0
  145. package/src/cli/simple-commands/hive-mind/session-manager.js +1223 -0
  146. package/src/cli/simple-commands/hive-mind-optimize.js +361 -0
  147. package/src/cli/simple-commands/hive-mind-wizard.js +281 -0
  148. package/src/cli/simple-commands/hive-mind.js +3112 -0
  149. package/src/cli/simple-commands/hive.js +140 -0
  150. package/src/cli/simple-commands/hook-safety.js +671 -0
  151. package/src/cli/simple-commands/hooks.js +1268 -0
  152. package/src/cli/simple-commands/init/.claude/checkpoints/1756224542.json +7 -0
  153. package/src/cli/simple-commands/init/.claude/checkpoints/1756224544.json +8 -0
  154. package/src/cli/simple-commands/init/README.md +106 -0
  155. package/src/cli/simple-commands/init/VALIDATION_ROLLBACK.md +488 -0
  156. package/src/cli/simple-commands/init/agent-copier.js +347 -0
  157. package/src/cli/simple-commands/init/batch-init.js +663 -0
  158. package/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +438 -0
  159. package/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +876 -0
  160. package/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +356 -0
  161. package/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +501 -0
  162. package/src/cli/simple-commands/init/claude-commands/slash-commands.js +57 -0
  163. package/src/cli/simple-commands/init/claude-commands/sparc-commands.js +296 -0
  164. package/src/cli/simple-commands/init/copy-revised-templates.js +175 -0
  165. package/src/cli/simple-commands/init/executable-wrapper.js +122 -0
  166. package/src/cli/simple-commands/init/gitignore-updater.js +137 -0
  167. package/src/cli/simple-commands/init/help.js +110 -0
  168. package/src/cli/simple-commands/init/hive-mind-init.js +749 -0
  169. package/src/cli/simple-commands/init/index.js +1953 -0
  170. package/src/cli/simple-commands/init/performance-monitor.js +344 -0
  171. package/src/cli/simple-commands/init/rollback/backup-manager.js +542 -0
  172. package/src/cli/simple-commands/init/rollback/index.js +399 -0
  173. package/src/cli/simple-commands/init/rollback/recovery-manager.js +778 -0
  174. package/src/cli/simple-commands/init/rollback/rollback-executor.js +521 -0
  175. package/src/cli/simple-commands/init/rollback/state-tracker.js +486 -0
  176. package/src/cli/simple-commands/init/sparc/roo-readme.js +61 -0
  177. package/src/cli/simple-commands/init/sparc/roomodes-config.js +102 -0
  178. package/src/cli/simple-commands/init/sparc/workflows.js +40 -0
  179. package/src/cli/simple-commands/init/sparc-structure.js +68 -0
  180. package/src/cli/simple-commands/init/template-copier.js +640 -0
  181. package/src/cli/simple-commands/init/templates/CLAUDE.md +1185 -0
  182. package/src/cli/simple-commands/init/templates/CLAUDE.md.optimized +265 -0
  183. package/src/cli/simple-commands/init/templates/claude-flow-universal +81 -0
  184. package/src/cli/simple-commands/init/templates/claude-flow.bat +18 -0
  185. package/src/cli/simple-commands/init/templates/claude-flow.ps1 +24 -0
  186. package/src/cli/simple-commands/init/templates/claude-md.js +1101 -0
  187. package/src/cli/simple-commands/init/templates/commands/analysis/bottleneck-detect.md +162 -0
  188. package/src/cli/simple-commands/init/templates/commands/automation/auto-agent.md +122 -0
  189. package/src/cli/simple-commands/init/templates/commands/coordination/swarm-init.md +85 -0
  190. package/src/cli/simple-commands/init/templates/commands/github/github-swarm.md +121 -0
  191. package/src/cli/simple-commands/init/templates/commands/helpers/standard-checkpoint-hooks.sh +179 -0
  192. package/src/cli/simple-commands/init/templates/commands/hooks/notification.md +113 -0
  193. package/src/cli/simple-commands/init/templates/commands/hooks/post-command.md +116 -0
  194. package/src/cli/simple-commands/init/templates/commands/hooks/post-edit.md +117 -0
  195. package/src/cli/simple-commands/init/templates/commands/hooks/post-task.md +112 -0
  196. package/src/cli/simple-commands/init/templates/commands/hooks/pre-command.md +113 -0
  197. package/src/cli/simple-commands/init/templates/commands/hooks/pre-edit.md +113 -0
  198. package/src/cli/simple-commands/init/templates/commands/hooks/pre-search.md +112 -0
  199. package/src/cli/simple-commands/init/templates/commands/hooks/pre-task.md +111 -0
  200. package/src/cli/simple-commands/init/templates/commands/hooks/session-end.md +118 -0
  201. package/src/cli/simple-commands/init/templates/commands/hooks/session-restore.md +118 -0
  202. package/src/cli/simple-commands/init/templates/commands/hooks/session-start.md +117 -0
  203. package/src/cli/simple-commands/init/templates/coordination-md.js +340 -0
  204. package/src/cli/simple-commands/init/templates/coordination.md +16 -0
  205. package/src/cli/simple-commands/init/templates/enhanced-templates.js +2347 -0
  206. package/src/cli/simple-commands/init/templates/github-safe-enhanced.js +331 -0
  207. package/src/cli/simple-commands/init/templates/github-safe.js +106 -0
  208. package/src/cli/simple-commands/init/templates/memory-bank-md.js +259 -0
  209. package/src/cli/simple-commands/init/templates/memory-bank.md +16 -0
  210. package/src/cli/simple-commands/init/templates/readme-files.js +72 -0
  211. package/src/cli/simple-commands/init/templates/safe-hook-patterns.js +430 -0
  212. package/src/cli/simple-commands/init/templates/settings.json +109 -0
  213. package/src/cli/simple-commands/init/templates/settings.json.enhanced +35 -0
  214. package/src/cli/simple-commands/init/templates/sparc-modes.js +1401 -0
  215. package/src/cli/simple-commands/init/templates/verification-claude-md.js +432 -0
  216. package/src/cli/simple-commands/init/validation/config-validator.js +354 -0
  217. package/src/cli/simple-commands/init/validation/health-checker.js +599 -0
  218. package/src/cli/simple-commands/init/validation/index.js +388 -0
  219. package/src/cli/simple-commands/init/validation/mode-validator.js +387 -0
  220. package/src/cli/simple-commands/init/validation/post-init-validator.js +390 -0
  221. package/src/cli/simple-commands/init/validation/pre-init-validator.js +290 -0
  222. package/src/cli/simple-commands/init/validation/test-runner.js +488 -0
  223. package/src/cli/simple-commands/init.js +4 -0
  224. package/src/cli/simple-commands/mcp-health.js +163 -0
  225. package/src/cli/simple-commands/mcp-integration-layer.js +689 -0
  226. package/src/cli/simple-commands/mcp.js +420 -0
  227. package/src/cli/simple-commands/memory-consolidation.js +631 -0
  228. package/src/cli/simple-commands/memory.js +345 -0
  229. package/src/cli/simple-commands/migrate-hooks.js +63 -0
  230. package/src/cli/simple-commands/monitor.js +417 -0
  231. package/src/cli/simple-commands/neural.js +148 -0
  232. package/src/cli/simple-commands/pair-autofix-only.js +755 -0
  233. package/src/cli/simple-commands/pair-basic.js +751 -0
  234. package/src/cli/simple-commands/pair-old.js +623 -0
  235. package/src/cli/simple-commands/pair-working.js +849 -0
  236. package/src/cli/simple-commands/pair.js +849 -0
  237. package/src/cli/simple-commands/performance-hooks.js +149 -0
  238. package/src/cli/simple-commands/performance-metrics.js +601 -0
  239. package/src/cli/simple-commands/process-ui-enhanced.js +821 -0
  240. package/src/cli/simple-commands/process-ui.js +274 -0
  241. package/src/cli/simple-commands/realtime-update-system.js +659 -0
  242. package/src/cli/simple-commands/sparc/architecture.js +1750 -0
  243. package/src/cli/simple-commands/sparc/commands.js +575 -0
  244. package/src/cli/simple-commands/sparc/completion.js +1831 -0
  245. package/src/cli/simple-commands/sparc/coordinator.js +1045 -0
  246. package/src/cli/simple-commands/sparc/index.js +321 -0
  247. package/src/cli/simple-commands/sparc/phase-base.js +430 -0
  248. package/src/cli/simple-commands/sparc/pseudocode.js +984 -0
  249. package/src/cli/simple-commands/sparc/refinement.js +1856 -0
  250. package/src/cli/simple-commands/sparc/specification.js +736 -0
  251. package/src/cli/simple-commands/sparc-modes/architect.js +125 -0
  252. package/src/cli/simple-commands/sparc-modes/ask.js +126 -0
  253. package/src/cli/simple-commands/sparc-modes/code.js +148 -0
  254. package/src/cli/simple-commands/sparc-modes/debug.js +112 -0
  255. package/src/cli/simple-commands/sparc-modes/devops.js +137 -0
  256. package/src/cli/simple-commands/sparc-modes/docs-writer.js +38 -0
  257. package/src/cli/simple-commands/sparc-modes/generic.js +34 -0
  258. package/src/cli/simple-commands/sparc-modes/index.js +201 -0
  259. package/src/cli/simple-commands/sparc-modes/integration.js +55 -0
  260. package/src/cli/simple-commands/sparc-modes/mcp.js +38 -0
  261. package/src/cli/simple-commands/sparc-modes/monitoring.js +38 -0
  262. package/src/cli/simple-commands/sparc-modes/optimization.js +38 -0
  263. package/src/cli/simple-commands/sparc-modes/security-review.js +130 -0
  264. package/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +167 -0
  265. package/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +38 -0
  266. package/src/cli/simple-commands/sparc-modes/supabase-admin.js +149 -0
  267. package/src/cli/simple-commands/sparc-modes/swarm.js +436 -0
  268. package/src/cli/simple-commands/sparc-modes/tdd.js +112 -0
  269. package/src/cli/simple-commands/sparc-modes/tutorial.js +277 -0
  270. package/src/cli/simple-commands/sparc.js +530 -0
  271. package/src/cli/simple-commands/start-ui.js +147 -0
  272. package/src/cli/simple-commands/start-wrapper.js +285 -0
  273. package/src/cli/simple-commands/start.js +2 -0
  274. package/src/cli/simple-commands/status.js +303 -0
  275. package/src/cli/simple-commands/stream-chain-clean.js +221 -0
  276. package/src/cli/simple-commands/stream-chain-fixed.js +89 -0
  277. package/src/cli/simple-commands/stream-chain-real.js +408 -0
  278. package/src/cli/simple-commands/stream-chain-working.js +323 -0
  279. package/src/cli/simple-commands/stream-chain.js +491 -0
  280. package/src/cli/simple-commands/stream-processor.js +340 -0
  281. package/src/cli/simple-commands/swarm-executor.js +253 -0
  282. package/src/cli/simple-commands/swarm-metrics-integration.js +371 -0
  283. package/src/cli/simple-commands/swarm-ui.js +741 -0
  284. package/src/cli/simple-commands/swarm-webui-integration.js +311 -0
  285. package/src/cli/simple-commands/swarm.js +2277 -0
  286. package/src/cli/simple-commands/task.js +228 -0
  287. package/src/cli/simple-commands/templates/mle-star-workflow.json +294 -0
  288. package/src/cli/simple-commands/timestamp-fix.js +104 -0
  289. package/src/cli/simple-commands/token-tracker.js +372 -0
  290. package/src/cli/simple-commands/tool-execution-framework.js +555 -0
  291. package/src/cli/simple-commands/train-and-stream.js +354 -0
  292. package/src/cli/simple-commands/training-pipeline.js +874 -0
  293. package/src/cli/simple-commands/training.js +288 -0
  294. package/src/cli/simple-commands/verification-hooks.js +336 -0
  295. package/src/cli/simple-commands/verification-integration.js +464 -0
  296. package/src/cli/simple-commands/verification-training-integration.js +646 -0
  297. package/src/cli/simple-commands/verification.js +551 -0
  298. package/src/cli/simple-commands/web-server.js +929 -0
  299. package/src/cli/simple-commands/webui-validator.js +136 -0
  300. package/src/language/README.md +503 -0
  301. package/src/language/claude-md-generator.js +618 -0
  302. package/src/language/cli.js +422 -0
  303. package/src/language/example.js +347 -0
  304. package/src/language/integration-system.js +619 -0
  305. package/src/language/language-detector.js +581 -0
@@ -0,0 +1,399 @@
1
+ // rollback/index.js - Comprehensive rollback system for SPARC initialization
2
+
3
+ import { BackupManager } from './backup-manager.js';
4
+ import { RollbackExecutor } from './rollback-executor.js';
5
+ import { StateTracker } from './state-tracker.js';
6
+ import { RecoveryManager } from './recovery-manager.js';
7
+ import { printSuccess, printError, printWarning } from '../../../utils.js';
8
+
9
+ /**
10
+ * Main rollback orchestrator
11
+ */
12
+ export class RollbackSystem {
13
+ constructor(workingDir) {
14
+ this.workingDir = workingDir;
15
+ this.backupManager = new BackupManager(workingDir);
16
+ this.rollbackExecutor = new RollbackExecutor(workingDir);
17
+ this.stateTracker = new StateTracker(workingDir);
18
+ this.recoveryManager = new RecoveryManager(workingDir);
19
+ }
20
+
21
+ /**
22
+ * Create backup before initialization
23
+ */
24
+ async createPreInitBackup() {
25
+ const result = {
26
+ success: true,
27
+ backupId: null,
28
+ errors: [],
29
+ warnings: [],
30
+ };
31
+
32
+ try {
33
+ console.log('🔄 Creating pre-initialization backup...');
34
+
35
+ const backup = await this.backupManager.createBackup('pre-init');
36
+ result.backupId = backup.id;
37
+ result.success = backup.success;
38
+
39
+ if (backup.success) {
40
+ printSuccess(`Backup created: ${backup.id}`);
41
+ console.log(` 📁 Backup location: ${backup.location}`);
42
+
43
+ // Record rollback point
44
+ await this.stateTracker.recordRollbackPoint('pre-init', {
45
+ backupId: backup.id,
46
+ timestamp: Date.now(),
47
+ state: 'clean',
48
+ });
49
+ } else {
50
+ result.errors.push(...backup.errors);
51
+ printError('Failed to create backup');
52
+ }
53
+ } catch (error) {
54
+ result.success = false;
55
+ result.errors.push(`Backup creation failed: ${error.message}`);
56
+ printError(`Backup failed: ${error.message}`);
57
+ }
58
+
59
+ return result;
60
+ }
61
+
62
+ /**
63
+ * Create checkpoint during initialization
64
+ */
65
+ async createCheckpoint(phase, data = {}) {
66
+ const result = {
67
+ success: true,
68
+ checkpointId: null,
69
+ errors: [],
70
+ };
71
+
72
+ try {
73
+ const checkpoint = await this.stateTracker.createCheckpoint(phase, data);
74
+ result.checkpointId = checkpoint.id;
75
+ result.success = checkpoint.success;
76
+
77
+ if (!checkpoint.success) {
78
+ result.errors.push(...checkpoint.errors);
79
+ }
80
+ } catch (error) {
81
+ result.success = false;
82
+ result.errors.push(`Checkpoint creation failed: ${error.message}`);
83
+ }
84
+
85
+ return result;
86
+ }
87
+
88
+ /**
89
+ * Perform full rollback to pre-initialization state
90
+ */
91
+ async performFullRollback(backupId = null) {
92
+ const result = {
93
+ success: true,
94
+ errors: [],
95
+ warnings: [],
96
+ actions: [],
97
+ };
98
+
99
+ try {
100
+ console.log('🔄 Performing full rollback...');
101
+
102
+ // Find the appropriate backup
103
+ const targetBackup = backupId || (await this.findLatestPreInitBackup());
104
+ if (!targetBackup) {
105
+ result.success = false;
106
+ result.errors.push('No suitable backup found for rollback');
107
+ return result;
108
+ }
109
+
110
+ // Execute rollback
111
+ const rollbackResult = await this.rollbackExecutor.executeFullRollback(targetBackup);
112
+ result.success = rollbackResult.success;
113
+ result.errors.push(...rollbackResult.errors);
114
+ result.warnings.push(...rollbackResult.warnings);
115
+ result.actions.push(...rollbackResult.actions);
116
+
117
+ if (rollbackResult.success) {
118
+ printSuccess('Full rollback completed successfully');
119
+
120
+ // Update state tracking
121
+ await this.stateTracker.recordRollback(targetBackup, 'full');
122
+ } else {
123
+ printError('Full rollback failed');
124
+ }
125
+ } catch (error) {
126
+ result.success = false;
127
+ result.errors.push(`Rollback failed: ${error.message}`);
128
+ printError(`Rollback failed: ${error.message}`);
129
+ }
130
+
131
+ return result;
132
+ }
133
+
134
+ /**
135
+ * Perform partial rollback to specific checkpoint
136
+ */
137
+ async performPartialRollback(phase, checkpointId = null) {
138
+ const result = {
139
+ success: true,
140
+ errors: [],
141
+ warnings: [],
142
+ actions: [],
143
+ };
144
+
145
+ try {
146
+ console.log(`🔄 Performing partial rollback for phase: ${phase}`);
147
+
148
+ // Find checkpoint
149
+ const checkpoint = checkpointId || (await this.findLatestCheckpoint(phase));
150
+ if (!checkpoint) {
151
+ result.success = false;
152
+ result.errors.push(`No checkpoint found for phase: ${phase}`);
153
+ return result;
154
+ }
155
+
156
+ // Execute partial rollback
157
+ const rollbackResult = await this.rollbackExecutor.executePartialRollback(phase, checkpoint);
158
+ result.success = rollbackResult.success;
159
+ result.errors.push(...rollbackResult.errors);
160
+ result.warnings.push(...rollbackResult.warnings);
161
+ result.actions.push(...rollbackResult.actions);
162
+
163
+ if (rollbackResult.success) {
164
+ printSuccess(`Partial rollback completed for phase: ${phase}`);
165
+
166
+ // Update state tracking
167
+ await this.stateTracker.recordRollback(checkpoint, 'partial', phase);
168
+ } else {
169
+ printError(`Partial rollback failed for phase: ${phase}`);
170
+ }
171
+ } catch (error) {
172
+ result.success = false;
173
+ result.errors.push(`Partial rollback failed: ${error.message}`);
174
+ printError(`Partial rollback failed: ${error.message}`);
175
+ }
176
+
177
+ return result;
178
+ }
179
+
180
+ /**
181
+ * Auto-recovery from common failures
182
+ */
183
+ async performAutoRecovery(failureType, context = {}) {
184
+ const result = {
185
+ success: true,
186
+ errors: [],
187
+ warnings: [],
188
+ recoveryActions: [],
189
+ };
190
+
191
+ try {
192
+ console.log(`🔧 Attempting auto-recovery for: ${failureType}`);
193
+
194
+ const recoveryResult = await this.recoveryManager.performRecovery(failureType, context);
195
+ result.success = recoveryResult.success;
196
+ result.errors.push(...recoveryResult.errors);
197
+ result.warnings.push(...recoveryResult.warnings);
198
+ result.recoveryActions.push(...recoveryResult.actions);
199
+
200
+ if (recoveryResult.success) {
201
+ printSuccess(`Auto-recovery completed for: ${failureType}`);
202
+ } else {
203
+ printWarning(`Auto-recovery failed for: ${failureType}`);
204
+ }
205
+ } catch (error) {
206
+ result.success = false;
207
+ result.errors.push(`Auto-recovery failed: ${error.message}`);
208
+ printError(`Auto-recovery failed: ${error.message}`);
209
+ }
210
+
211
+ return result;
212
+ }
213
+
214
+ /**
215
+ * List available rollback points
216
+ */
217
+ async listRollbackPoints() {
218
+ const result = {
219
+ success: true,
220
+ rollbackPoints: [],
221
+ checkpoints: [],
222
+ errors: [],
223
+ };
224
+
225
+ try {
226
+ // Get rollback points
227
+ const rollbackPoints = await this.stateTracker.getRollbackPoints();
228
+ result.rollbackPoints = rollbackPoints;
229
+
230
+ // Get checkpoints
231
+ const checkpoints = await this.stateTracker.getCheckpoints();
232
+ result.checkpoints = checkpoints;
233
+ } catch (error) {
234
+ result.success = false;
235
+ result.errors.push(`Failed to list rollback points: ${error.message}`);
236
+ }
237
+
238
+ return result;
239
+ }
240
+
241
+ /**
242
+ * Clean up old backups and checkpoints
243
+ */
244
+ async cleanupOldBackups(keepCount = 5) {
245
+ const result = {
246
+ success: true,
247
+ cleaned: [],
248
+ errors: [],
249
+ };
250
+
251
+ try {
252
+ const cleanupResult = await this.backupManager.cleanupOldBackups(keepCount);
253
+ result.success = cleanupResult.success;
254
+ result.cleaned = cleanupResult.cleaned;
255
+ result.errors.push(...cleanupResult.errors);
256
+
257
+ if (cleanupResult.success) {
258
+ console.log(`🗑️ Cleaned up ${cleanupResult.cleaned.length} old backups`);
259
+ }
260
+ } catch (error) {
261
+ result.success = false;
262
+ result.errors.push(`Cleanup failed: ${error.message}`);
263
+ }
264
+
265
+ return result;
266
+ }
267
+
268
+ /**
269
+ * Validate rollback system integrity
270
+ */
271
+ async validateRollbackSystem() {
272
+ const result = {
273
+ success: true,
274
+ checks: {},
275
+ errors: [],
276
+ warnings: [],
277
+ };
278
+
279
+ try {
280
+ // Check backup system
281
+ const backupCheck = await this.backupManager.validateBackupSystem();
282
+ result.checks.backup = backupCheck;
283
+ if (!backupCheck.success) {
284
+ result.success = false;
285
+ result.errors.push(...backupCheck.errors);
286
+ }
287
+
288
+ // Check state tracking
289
+ const stateCheck = await this.stateTracker.validateStateTracking();
290
+ result.checks.stateTracking = stateCheck;
291
+ if (!stateCheck.success) {
292
+ result.warnings.push(...stateCheck.errors);
293
+ }
294
+
295
+ // Check recovery system
296
+ const recoveryCheck = await this.recoveryManager.validateRecoverySystem();
297
+ result.checks.recovery = recoveryCheck;
298
+ if (!recoveryCheck.success) {
299
+ result.warnings.push(...recoveryCheck.errors);
300
+ }
301
+ } catch (error) {
302
+ result.success = false;
303
+ result.errors.push(`Rollback system validation failed: ${error.message}`);
304
+ }
305
+
306
+ return result;
307
+ }
308
+
309
+ // Helper methods
310
+
311
+ async findLatestPreInitBackup() {
312
+ try {
313
+ const rollbackPoints = await this.stateTracker.getRollbackPoints();
314
+ const preInitPoints = rollbackPoints.filter((point) => point.type === 'pre-init');
315
+
316
+ if (preInitPoints.length > 0) {
317
+ return preInitPoints.sort((a, b) => b.timestamp - a.timestamp)[0].backupId;
318
+ }
319
+
320
+ return null;
321
+ } catch {
322
+ return null;
323
+ }
324
+ }
325
+
326
+ async findLatestCheckpoint(phase) {
327
+ try {
328
+ const checkpoints = await this.stateTracker.getCheckpoints();
329
+ const phaseCheckpoints = checkpoints.filter((checkpoint) => checkpoint.phase === phase);
330
+
331
+ if (phaseCheckpoints.length > 0) {
332
+ return phaseCheckpoints.sort((a, b) => b.timestamp - a.timestamp)[0];
333
+ }
334
+
335
+ return null;
336
+ } catch {
337
+ return null;
338
+ }
339
+ }
340
+ }
341
+
342
+ /**
343
+ * Atomic operation wrapper
344
+ */
345
+ export class AtomicOperation {
346
+ constructor(rollbackSystem, operationName) {
347
+ this.rollbackSystem = rollbackSystem;
348
+ this.operationName = operationName;
349
+ this.checkpointId = null;
350
+ this.completed = false;
351
+ }
352
+
353
+ /**
354
+ * Begin atomic operation
355
+ */
356
+ async begin() {
357
+ const checkpoint = await this.rollbackSystem.createCheckpoint(`atomic-${this.operationName}`, {
358
+ operation: this.operationName,
359
+ started: Date.now(),
360
+ });
361
+
362
+ this.checkpointId = checkpoint.checkpointId;
363
+ return checkpoint.success;
364
+ }
365
+
366
+ /**
367
+ * Commit atomic operation
368
+ */
369
+ async commit() {
370
+ this.completed = true;
371
+
372
+ // Mark checkpoint as committed
373
+ if (this.checkpointId) {
374
+ await this.rollbackSystem.stateTracker.updateCheckpoint(this.checkpointId, {
375
+ status: 'committed',
376
+ completed: Date.now(),
377
+ });
378
+ }
379
+ }
380
+
381
+ /**
382
+ * Rollback atomic operation
383
+ */
384
+ async rollback() {
385
+ if (this.checkpointId && !this.completed) {
386
+ await this.rollbackSystem.performPartialRollback(
387
+ `atomic-${this.operationName}`,
388
+ this.checkpointId,
389
+ );
390
+ }
391
+ }
392
+ }
393
+
394
+ /**
395
+ * Create and manage atomic operations
396
+ */
397
+ export function createAtomicOperation(rollbackSystem, operationName) {
398
+ return new AtomicOperation(rollbackSystem, operationName);
399
+ }