claude-flow-novice 2.0.3 → 2.0.4

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 (272) hide show
  1. package/dist/src/cli/commands/guidance.js +487 -668
  2. package/dist/src/cli/commands/index-validate.js +18 -29
  3. package/dist/src/cli/commands/mcp-troubleshoot.js +230 -282
  4. package/dist/src/cli/commands/neural-goal-init.js +92 -125
  5. package/dist/src/cli/commands/swarm-exec.js +317 -393
  6. package/dist/src/cli/commands/swarm.js +1 -1
  7. package/dist/src/cli/commands/validate-framework.js +983 -1100
  8. package/dist/src/cli/commands/validate.js +144 -223
  9. package/dist/src/cli/simple-commands/__tests__/agent.test.js +265 -277
  10. package/dist/src/cli/simple-commands/__tests__/memory.test.js +6 -7
  11. package/dist/src/cli/simple-commands/__tests__/swarm.test.js +373 -356
  12. package/dist/src/cli/simple-commands/__tests__/task.test.js +6 -7
  13. package/dist/src/cli/simple-commands/agent.js +157 -193
  14. package/dist/src/cli/simple-commands/analysis.js +336 -446
  15. package/dist/src/cli/simple-commands/automation-executor.js +1095 -1339
  16. package/dist/src/cli/simple-commands/automation.js +481 -469
  17. package/dist/src/cli/simple-commands/batch-manager.js +261 -313
  18. package/dist/src/cli/simple-commands/claude-telemetry.js +241 -267
  19. package/dist/src/cli/simple-commands/claude-track.js +68 -90
  20. package/dist/src/cli/simple-commands/concurrent-display.js +266 -320
  21. package/dist/src/cli/simple-commands/config.js +245 -290
  22. package/dist/src/cli/simple-commands/coordination.js +182 -234
  23. package/dist/src/cli/simple-commands/enhanced-ui-views.js +812 -615
  24. package/dist/src/cli/simple-commands/enhanced-webui-complete.js +922 -981
  25. package/dist/src/cli/simple-commands/fix-hook-variables.js +274 -294
  26. package/dist/src/cli/simple-commands/github/gh-coordinator.js +378 -457
  27. package/dist/src/cli/simple-commands/github/github-api.js +535 -574
  28. package/dist/src/cli/simple-commands/github/init.js +276 -303
  29. package/dist/src/cli/simple-commands/github.js +222 -247
  30. package/dist/src/cli/simple-commands/goal.js +51 -63
  31. package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +208 -278
  32. package/dist/src/cli/simple-commands/hive-mind/communication.js +601 -696
  33. package/dist/src/cli/simple-commands/hive-mind/core.js +907 -979
  34. package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +406 -655
  35. package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1125 -1245
  36. package/dist/src/cli/simple-commands/hive-mind/memory.js +854 -1090
  37. package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +459 -574
  38. package/dist/src/cli/simple-commands/hive-mind/performance-test.js +263 -347
  39. package/dist/src/cli/simple-commands/hive-mind/queen.js +727 -768
  40. package/dist/src/cli/simple-commands/hive-mind/session-manager.js +745 -1049
  41. package/dist/src/cli/simple-commands/hive-mind-optimize.js +227 -283
  42. package/dist/src/cli/simple-commands/hive-mind-wizard.js +174 -217
  43. package/dist/src/cli/simple-commands/hive-mind.js +1842 -2283
  44. package/dist/src/cli/simple-commands/hive.js +90 -79
  45. package/dist/src/cli/simple-commands/hook-safety.js +431 -521
  46. package/dist/src/cli/simple-commands/hooks/session-start-soul.js +203 -254
  47. package/dist/src/cli/simple-commands/hooks.js +1064 -1204
  48. package/dist/src/cli/simple-commands/init/agent-copier.js +294 -319
  49. package/dist/src/cli/simple-commands/init/batch-init.js +496 -562
  50. package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +13 -19
  51. package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +13 -19
  52. package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +61 -88
  53. package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +125 -150
  54. package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +42 -49
  55. package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +43 -61
  56. package/dist/src/cli/simple-commands/init/copy-revised-templates.js +141 -147
  57. package/dist/src/cli/simple-commands/init/executable-wrapper.js +31 -44
  58. package/dist/src/cli/simple-commands/init/gitignore-updater.js +64 -90
  59. package/dist/src/cli/simple-commands/init/help.js +104 -107
  60. package/dist/src/cli/simple-commands/init/hive-mind-init.js +509 -528
  61. package/dist/src/cli/simple-commands/init/index.js +1510 -1759
  62. package/dist/src/cli/simple-commands/init/performance-monitor.js +234 -317
  63. package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +441 -504
  64. package/dist/src/cli/simple-commands/init/rollback/index.js +289 -364
  65. package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +652 -728
  66. package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +416 -481
  67. package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +369 -448
  68. package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +1 -2
  69. package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +122 -99
  70. package/dist/src/cli/simple-commands/init/sparc/workflows.js +32 -37
  71. package/dist/src/cli/simple-commands/init/sparc-structure.js +55 -62
  72. package/dist/src/cli/simple-commands/init/template-copier.js +421 -533
  73. package/dist/src/cli/simple-commands/init/templates/coordination-md.js +3 -6
  74. package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +344 -318
  75. package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +173 -218
  76. package/dist/src/cli/simple-commands/init/templates/github-safe.js +65 -75
  77. package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +3 -6
  78. package/dist/src/cli/simple-commands/init/templates/readme-files.js +2 -4
  79. package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +187 -230
  80. package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +53 -80
  81. package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +101 -85
  82. package/dist/src/cli/simple-commands/init/validation/config-validator.js +283 -330
  83. package/dist/src/cli/simple-commands/init/validation/health-checker.js +495 -561
  84. package/dist/src/cli/simple-commands/init/validation/index.js +302 -358
  85. package/dist/src/cli/simple-commands/init/validation/mode-validator.js +308 -359
  86. package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +389 -366
  87. package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +270 -268
  88. package/dist/src/cli/simple-commands/init/validation/test-runner.js +427 -447
  89. package/dist/src/cli/simple-commands/init.js +1 -2
  90. package/dist/src/cli/simple-commands/mcp-health.js +131 -158
  91. package/dist/src/cli/simple-commands/mcp-integration-layer.js +533 -634
  92. package/dist/src/cli/simple-commands/mcp.js +345 -400
  93. package/dist/src/cli/simple-commands/memory-consolidation.js +426 -537
  94. package/dist/src/cli/simple-commands/memory.js +247 -311
  95. package/dist/src/cli/simple-commands/migrate-hooks.js +39 -46
  96. package/dist/src/cli/simple-commands/monitor.js +294 -363
  97. package/dist/src/cli/simple-commands/neural.js +51 -65
  98. package/dist/src/cli/simple-commands/pair-autofix-only.js +538 -662
  99. package/dist/src/cli/simple-commands/pair-basic.js +528 -656
  100. package/dist/src/cli/simple-commands/pair-old.js +430 -543
  101. package/dist/src/cli/simple-commands/pair-working.js +615 -751
  102. package/dist/src/cli/simple-commands/pair.js +615 -751
  103. package/dist/src/cli/simple-commands/performance-hooks.js +83 -111
  104. package/dist/src/cli/simple-commands/performance-metrics.js +348 -433
  105. package/dist/src/cli/simple-commands/process-ui-enhanced.js +708 -787
  106. package/dist/src/cli/simple-commands/process-ui.js +230 -254
  107. package/dist/src/cli/simple-commands/realtime-update-system.js +525 -611
  108. package/dist/src/cli/simple-commands/sparc/architecture.js +1704 -1530
  109. package/dist/src/cli/simple-commands/sparc/commands.js +438 -516
  110. package/dist/src/cli/simple-commands/sparc/completion.js +1224 -1481
  111. package/dist/src/cli/simple-commands/sparc/coordinator.js +913 -978
  112. package/dist/src/cli/simple-commands/sparc/index.js +241 -298
  113. package/dist/src/cli/simple-commands/sparc/phase-base.js +314 -390
  114. package/dist/src/cli/simple-commands/sparc/pseudocode.js +965 -869
  115. package/dist/src/cli/simple-commands/sparc/refinement.js +980 -1273
  116. package/dist/src/cli/simple-commands/sparc/specification.js +559 -645
  117. package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
  118. package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
  119. package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
  120. package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
  121. package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
  122. package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
  123. package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
  124. package/dist/src/cli/simple-commands/sparc-modes/index.js +47 -55
  125. package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
  126. package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
  127. package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
  128. package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
  129. package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
  130. package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
  131. package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
  132. package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
  133. package/dist/src/cli/simple-commands/sparc-modes/swarm.js +101 -87
  134. package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
  135. package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
  136. package/dist/src/cli/simple-commands/sparc.js +465 -493
  137. package/dist/src/cli/simple-commands/start-ui.js +108 -132
  138. package/dist/src/cli/simple-commands/start-wrapper.js +240 -268
  139. package/dist/src/cli/simple-commands/start.js +1 -1
  140. package/dist/src/cli/simple-commands/status.js +254 -275
  141. package/dist/src/cli/simple-commands/stream-chain-clean.js +128 -171
  142. package/dist/src/cli/simple-commands/stream-chain-fixed.js +61 -82
  143. package/dist/src/cli/simple-commands/stream-chain-real.js +267 -331
  144. package/dist/src/cli/simple-commands/stream-chain-working.js +211 -263
  145. package/dist/src/cli/simple-commands/stream-chain.js +260 -318
  146. package/dist/src/cli/simple-commands/stream-processor.js +290 -315
  147. package/dist/src/cli/simple-commands/swarm-executor.js +189 -222
  148. package/dist/src/cli/simple-commands/swarm-metrics-integration.js +208 -300
  149. package/dist/src/cli/simple-commands/swarm-ui.js +623 -703
  150. package/dist/src/cli/simple-commands/swarm-webui-integration.js +258 -286
  151. package/dist/src/cli/simple-commands/swarm.js +887 -1082
  152. package/dist/src/cli/simple-commands/task.js +161 -206
  153. package/dist/src/cli/simple-commands/timestamp-fix.js +59 -89
  154. package/dist/src/cli/simple-commands/token-tracker.js +258 -316
  155. package/dist/src/cli/simple-commands/tool-execution-framework.js +433 -519
  156. package/dist/src/cli/simple-commands/train-and-stream.js +275 -331
  157. package/dist/src/cli/simple-commands/training-pipeline.js +619 -725
  158. package/dist/src/cli/simple-commands/training.js +170 -227
  159. package/dist/src/cli/simple-commands/verification-hooks.js +261 -284
  160. package/dist/src/cli/simple-commands/verification-integration.js +389 -417
  161. package/dist/src/cli/simple-commands/verification-training-integration.js +486 -606
  162. package/dist/src/cli/simple-commands/verification.js +493 -513
  163. package/dist/src/cli/simple-commands/web-server.js +766 -836
  164. package/dist/src/cli/simple-commands/webui-validator.js +106 -124
  165. package/dist/src/coordination/event-bus/demo-wasm-integration.js +212 -251
  166. package/dist/src/coordination/event-bus/qe-event-bus.js +608 -748
  167. package/dist/src/coordination/event-bus/qe-event-bus.test.js +379 -454
  168. package/dist/src/coordination/iteration-tracker.js +363 -454
  169. package/dist/src/enterprise/analytics-manager.js +1135 -0
  170. package/dist/src/enterprise/audit-manager.js +1115 -0
  171. package/dist/src/enterprise/cloud-manager.js +891 -0
  172. package/dist/src/enterprise/deployment-manager.js +966 -0
  173. package/dist/src/enterprise/index.js +6 -0
  174. package/dist/src/enterprise/project-manager.js +584 -0
  175. package/dist/src/enterprise/security-manager.js +991 -0
  176. package/dist/src/index.js +1 -1
  177. package/dist/src/mcp/DEPRECATED.js +46 -60
  178. package/dist/src/mcp/fixes/mcp-error-fixes.js +115 -134
  179. package/dist/src/mcp/implementations/agent-tracker.js +114 -128
  180. package/dist/src/mcp/implementations/daa-tools.js +292 -350
  181. package/dist/src/mcp/implementations/workflow-tools.js +329 -361
  182. package/dist/src/mcp/mcp-config-manager.js +1183 -1331
  183. package/dist/src/mcp/mcp-server-novice-simplified.js +11 -17
  184. package/dist/src/mcp/mcp-server-novice.js +11 -17
  185. package/dist/src/mcp/mcp-server-sdk.js +11 -17
  186. package/dist/src/mcp/mcp-server.js +1620 -1484
  187. package/dist/src/mcp/ruv-swarm-wrapper.js +209 -239
  188. package/dist/src/memory/advanced-serializer.js +609 -589
  189. package/dist/src/memory/enhanced-examples.js +220 -305
  190. package/dist/src/memory/enhanced-memory.js +295 -336
  191. package/dist/src/memory/enhanced-session-serializer.js +408 -492
  192. package/dist/src/memory/fallback-memory-system.js +900 -1021
  193. package/dist/src/memory/fallback-store.js +93 -131
  194. package/dist/src/memory/high-performance-serialization.js +592 -730
  195. package/dist/src/memory/in-memory-store.js +161 -213
  196. package/dist/src/memory/index.js +123 -157
  197. package/dist/src/memory/lock-free-structures.js +578 -764
  198. package/dist/src/memory/memory-mapped-persistence.js +585 -766
  199. package/dist/src/memory/memory-pressure-manager.js +569 -707
  200. package/dist/src/memory/migration.js +358 -445
  201. package/dist/src/memory/shared-memory.js +641 -768
  202. package/dist/src/memory/sqlite-store.js +245 -325
  203. package/dist/src/memory/sqlite-wrapper.js +122 -151
  204. package/dist/src/memory/swarm-memory.js +470 -603
  205. package/dist/src/memory/test-example.js +126 -134
  206. package/dist/src/memory/ultra-fast-memory-store.js +622 -821
  207. package/dist/src/memory/unified-memory-manager.js +356 -437
  208. package/dist/src/migration/index.js +92 -0
  209. package/dist/src/migration/logger.js +121 -0
  210. package/dist/src/migration/migration-analyzer.js +268 -0
  211. package/dist/src/migration/migration-runner.js +522 -0
  212. package/dist/src/migration/migration-validator.js +285 -0
  213. package/dist/src/migration/progress-reporter.js +150 -0
  214. package/dist/src/migration/rollback-manager.js +321 -0
  215. package/dist/src/migration/tests/migration-system.test.js +7 -0
  216. package/dist/src/migration/types.js +3 -0
  217. package/dist/src/swarm/CodeRefactoringSwarm.js +777 -952
  218. package/dist/src/swarm/__tests__/integration.test.js +227 -0
  219. package/dist/src/swarm/__tests__/prompt-copier.test.js +344 -0
  220. package/dist/src/swarm/advanced-orchestrator.js +1095 -0
  221. package/dist/src/swarm/claude-code-interface.js +961 -0
  222. package/dist/src/swarm/claude-flow-executor.js +229 -0
  223. package/dist/src/swarm/consensus-coordinator.js +475 -0
  224. package/dist/src/swarm/coordinator.js +2993 -0
  225. package/dist/src/swarm/direct-executor.js +1180 -0
  226. package/dist/src/swarm/error-recovery/advanced-error-detection.js +691 -0
  227. package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +998 -0
  228. package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +1197 -0
  229. package/dist/src/swarm/error-recovery/recovery-monitoring.js +772 -0
  230. package/dist/src/swarm/error-recovery/resilience-architecture.js +714 -0
  231. package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +1319 -0
  232. package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +808 -0
  233. package/dist/src/swarm/executor-v2.js +322 -0
  234. package/dist/src/swarm/executor.js +815 -0
  235. package/dist/src/swarm/hive-mind-integration.js +703 -0
  236. package/dist/src/swarm/index.js +41 -0
  237. package/dist/src/swarm/json-output-aggregator.js +267 -0
  238. package/dist/src/swarm/large-scale-coordinator.js +542 -0
  239. package/dist/src/swarm/mcp-integration-wrapper.js +628 -0
  240. package/dist/src/swarm/memory.js +1117 -0
  241. package/dist/src/swarm/optimizations/__tests__/optimization.test.js +348 -0
  242. package/dist/src/swarm/optimizations/async-file-manager.js +285 -0
  243. package/dist/src/swarm/optimizations/circular-buffer.js +162 -0
  244. package/dist/src/swarm/optimizations/connection-pool.js +244 -0
  245. package/dist/src/swarm/optimizations/index.js +28 -0
  246. package/dist/src/swarm/optimizations/optimized-executor.js +320 -0
  247. package/dist/src/swarm/optimizations/ttl-map.js +234 -0
  248. package/dist/src/swarm/prompt-cli.js +200 -0
  249. package/dist/src/swarm/prompt-copier-enhanced.js +202 -0
  250. package/dist/src/swarm/prompt-copier.js +381 -0
  251. package/dist/src/swarm/prompt-manager.js +295 -0
  252. package/dist/src/swarm/prompt-utils.js +310 -0
  253. package/dist/src/swarm/result-aggregator.js +718 -0
  254. package/dist/src/swarm/sparc-executor.js +1568 -0
  255. package/dist/src/swarm/strategies/auto.js +758 -0
  256. package/dist/src/swarm/strategies/base.js +128 -0
  257. package/dist/src/swarm/strategies/research.js +914 -0
  258. package/dist/src/swarm/strategies/strategy-metrics-patch.js +2 -0
  259. package/dist/src/swarm/types.js +52 -0
  260. package/dist/src/swarm/workers/copy-worker.js +56 -0
  261. package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +332 -400
  262. package/dist/src/utils/github-cli-safe.js +56 -64
  263. package/dist/src/utils/github-cli-safety-wrapper.js +451 -546
  264. package/dist/src/utils/npx-isolated-cache.js +104 -119
  265. package/dist/src/utils/preference-manager.js +622 -652
  266. package/dist/src/utils/timezone-utils.js +86 -105
  267. package/dist/src/validators/epic-config-schema.js +214 -0
  268. package/dist/src/validators/index.js +10 -0
  269. package/dist/src/validators/swarm-init-validator.js +259 -0
  270. package/dist/src/validators/todowrite-batching-validator.js +215 -0
  271. package/dist/src/validators/todowrite-integration.js +187 -0
  272. package/package.json +2 -2
@@ -1,488 +1,468 @@
1
1
  // test-runner.js - Test runner for validation and rollback systems
2
-
3
- import { ValidationSystem } from './index.js';
4
- import { promises as fs } from 'fs';
5
- import { RollbackSystem } from '../rollback/index.js';
6
- import { printSuccess, printError, printWarning } from '../../../utils.js';
7
-
2
+ import { ValidationSystem } from "./index.js";
3
+ import { promises as fs } from "fs";
4
+ import { RollbackSystem } from "../rollback/index.js";
5
+ import { printSuccess, printError, printWarning } from "../../../utils.js";
8
6
  /**
9
7
  * Test runner for validation and rollback systems
10
- */
11
- export class ValidationTestRunner {
12
- constructor(workingDir) {
13
- this.workingDir = workingDir;
14
- this.validationSystem = new ValidationSystem(workingDir);
15
- this.rollbackSystem = new RollbackSystem(workingDir);
16
- this.testResults = [];
17
- }
18
-
19
- /**
8
+ */ export class ValidationTestRunner {
9
+ /**
20
10
  * Run all validation and rollback tests
21
- */
22
- async runAllTests() {
23
- console.log('🧪 Running validation and rollback system tests...');
24
-
25
- const tests = [
26
- { name: 'Pre-init Validation', test: () => this.testPreInitValidation() },
27
- { name: 'Post-init Validation', test: () => this.testPostInitValidation() },
28
- { name: 'Configuration Validation', test: () => this.testConfigValidation() },
29
- { name: 'Mode Functionality', test: () => this.testModeFunctionality() },
30
- { name: 'Health Checks', test: () => this.testHealthChecks() },
31
- { name: 'Backup System', test: () => this.testBackupSystem() },
32
- { name: 'Rollback System', test: () => this.testRollbackSystem() },
33
- { name: 'State Tracking', test: () => this.testStateTracking() },
34
- { name: 'Recovery Procedures', test: () => this.testRecoveryProcedures() },
35
- { name: 'Atomic Operations', test: () => this.testAtomicOperations() },
36
- ];
37
-
38
- for (const testCase of tests) {
39
- console.log(`\n🔬 Testing: ${testCase.name}`);
40
-
41
- try {
42
- const result = await testCase.test();
43
- this.testResults.push({
44
- name: testCase.name,
45
- success: result.success,
46
- details: result,
47
- });
48
-
49
- if (result.success) {
50
- printSuccess(`✅ ${testCase.name} passed`);
51
- } else {
52
- printError(`❌ ${testCase.name} failed`);
53
- if (result.errors) {
54
- result.errors.forEach((error) => console.error(` - ${error}`));
55
- }
11
+ */ async runAllTests() {
12
+ console.log('🧪 Running validation and rollback system tests...');
13
+ const tests = [
14
+ {
15
+ name: 'Pre-init Validation',
16
+ test: ()=>this.testPreInitValidation()
17
+ },
18
+ {
19
+ name: 'Post-init Validation',
20
+ test: ()=>this.testPostInitValidation()
21
+ },
22
+ {
23
+ name: 'Configuration Validation',
24
+ test: ()=>this.testConfigValidation()
25
+ },
26
+ {
27
+ name: 'Mode Functionality',
28
+ test: ()=>this.testModeFunctionality()
29
+ },
30
+ {
31
+ name: 'Health Checks',
32
+ test: ()=>this.testHealthChecks()
33
+ },
34
+ {
35
+ name: 'Backup System',
36
+ test: ()=>this.testBackupSystem()
37
+ },
38
+ {
39
+ name: 'Rollback System',
40
+ test: ()=>this.testRollbackSystem()
41
+ },
42
+ {
43
+ name: 'State Tracking',
44
+ test: ()=>this.testStateTracking()
45
+ },
46
+ {
47
+ name: 'Recovery Procedures',
48
+ test: ()=>this.testRecoveryProcedures()
49
+ },
50
+ {
51
+ name: 'Atomic Operations',
52
+ test: ()=>this.testAtomicOperations()
53
+ }
54
+ ];
55
+ for (const testCase of tests){
56
+ console.log(`\n🔬 Testing: ${testCase.name}`);
57
+ try {
58
+ const result = await testCase.test();
59
+ this.testResults.push({
60
+ name: testCase.name,
61
+ success: result.success,
62
+ details: result
63
+ });
64
+ if (result.success) {
65
+ printSuccess(`✅ ${testCase.name} passed`);
66
+ } else {
67
+ printError(`❌ ${testCase.name} failed`);
68
+ if (result.errors) {
69
+ result.errors.forEach((error)=>console.error(` - ${error}`));
70
+ }
71
+ }
72
+ } catch (error) {
73
+ this.testResults.push({
74
+ name: testCase.name,
75
+ success: false,
76
+ error: error.message
77
+ });
78
+ printError(`❌ ${testCase.name} threw exception: ${error.message}`);
79
+ }
56
80
  }
57
- } catch (error) {
58
- this.testResults.push({
59
- name: testCase.name,
60
- success: false,
61
- error: error.message,
62
- });
63
- printError(`❌ ${testCase.name} threw exception: ${error.message}`);
64
- }
81
+ this.generateTestReport();
65
82
  }
66
-
67
- this.generateTestReport();
68
- }
69
-
70
- /**
83
+ /**
71
84
  * Test pre-initialization validation
72
- */
73
- async testPreInitValidation() {
74
- const result = { success: true, errors: [], details: {} };
75
-
76
- try {
77
- // Test with normal conditions
78
- const normalValidation = await this.validationSystem.validatePreInit();
79
- result.details.normal = normalValidation;
80
-
81
- if (!normalValidation.success && normalValidation.errors.length > 0) {
82
- // Some failures are expected in test environment
83
- result.details.expectedFailures = normalValidation.errors;
84
- }
85
-
86
- // Test with force flag
87
- const forceValidation = await this.validationSystem.validatePreInit({ force: true });
88
- result.details.force = forceValidation;
89
-
90
- result.success = true; // Pre-init validation tested successfully
91
- } catch (error) {
92
- result.success = false;
93
- result.errors.push(`Pre-init validation test failed: ${error.message}`);
85
+ */ async testPreInitValidation() {
86
+ const result = {
87
+ success: true,
88
+ errors: [],
89
+ details: {}
90
+ };
91
+ try {
92
+ // Test with normal conditions
93
+ const normalValidation = await this.validationSystem.validatePreInit();
94
+ result.details.normal = normalValidation;
95
+ if (!normalValidation.success && normalValidation.errors.length > 0) {
96
+ // Some failures are expected in test environment
97
+ result.details.expectedFailures = normalValidation.errors;
98
+ }
99
+ // Test with force flag
100
+ const forceValidation = await this.validationSystem.validatePreInit({
101
+ force: true
102
+ });
103
+ result.details.force = forceValidation;
104
+ result.success = true; // Pre-init validation tested successfully
105
+ } catch (error) {
106
+ result.success = false;
107
+ result.errors.push(`Pre-init validation test failed: ${error.message}`);
108
+ }
109
+ return result;
94
110
  }
95
-
96
- return result;
97
- }
98
-
99
- /**
111
+ /**
100
112
  * Test post-initialization validation
101
- */
102
- async testPostInitValidation() {
103
- const result = { success: true, errors: [], details: {} };
104
-
105
- try {
106
- // Create minimal test files for validation
107
- await this.createTestFiles();
108
-
109
- const postValidation = await this.validationSystem.validatePostInit();
110
- result.details.postValidation = postValidation;
111
-
112
- // Clean up test files
113
- await this.cleanupTestFiles();
114
-
115
- result.success = true;
116
- } catch (error) {
117
- result.success = false;
118
- result.errors.push(`Post-init validation test failed: ${error.message}`);
113
+ */ async testPostInitValidation() {
114
+ const result = {
115
+ success: true,
116
+ errors: [],
117
+ details: {}
118
+ };
119
+ try {
120
+ // Create minimal test files for validation
121
+ await this.createTestFiles();
122
+ const postValidation = await this.validationSystem.validatePostInit();
123
+ result.details.postValidation = postValidation;
124
+ // Clean up test files
125
+ await this.cleanupTestFiles();
126
+ result.success = true;
127
+ } catch (error) {
128
+ result.success = false;
129
+ result.errors.push(`Post-init validation test failed: ${error.message}`);
130
+ }
131
+ return result;
119
132
  }
120
-
121
- return result;
122
- }
123
-
124
- /**
133
+ /**
125
134
  * Test configuration validation
126
- */
127
- async testConfigValidation() {
128
- const result = { success: true, errors: [], details: {} };
129
-
130
- try {
131
- // Create test configuration files
132
- await this.createTestConfigs();
133
-
134
- const configValidation = await this.validationSystem.validateConfiguration();
135
- result.details.configValidation = configValidation;
136
-
137
- // Clean up test configs
138
- await this.cleanupTestConfigs();
139
-
140
- result.success = true;
141
- } catch (error) {
142
- result.success = false;
143
- result.errors.push(`Config validation test failed: ${error.message}`);
135
+ */ async testConfigValidation() {
136
+ const result = {
137
+ success: true,
138
+ errors: [],
139
+ details: {}
140
+ };
141
+ try {
142
+ // Create test configuration files
143
+ await this.createTestConfigs();
144
+ const configValidation = await this.validationSystem.validateConfiguration();
145
+ result.details.configValidation = configValidation;
146
+ // Clean up test configs
147
+ await this.cleanupTestConfigs();
148
+ result.success = true;
149
+ } catch (error) {
150
+ result.success = false;
151
+ result.errors.push(`Config validation test failed: ${error.message}`);
152
+ }
153
+ return result;
144
154
  }
145
-
146
- return result;
147
- }
148
-
149
- /**
155
+ /**
150
156
  * Test mode functionality
151
- */
152
- async testModeFunctionality() {
153
- const result = { success: true, errors: [], details: {} };
154
-
155
- try {
156
- // Create test SPARC configuration
157
- await this.createTestSparcConfig();
158
-
159
- const modeTests = await this.validationSystem.testModeFunctionality();
160
- result.details.modeTests = modeTests;
161
-
162
- // Clean up test SPARC config
163
- await this.cleanupTestSparcConfig();
164
-
165
- result.success = true;
166
- } catch (error) {
167
- result.success = false;
168
- result.errors.push(`Mode functionality test failed: ${error.message}`);
157
+ */ async testModeFunctionality() {
158
+ const result = {
159
+ success: true,
160
+ errors: [],
161
+ details: {}
162
+ };
163
+ try {
164
+ // Create test SPARC configuration
165
+ await this.createTestSparcConfig();
166
+ const modeTests = await this.validationSystem.testModeFunctionality();
167
+ result.details.modeTests = modeTests;
168
+ // Clean up test SPARC config
169
+ await this.cleanupTestSparcConfig();
170
+ result.success = true;
171
+ } catch (error) {
172
+ result.success = false;
173
+ result.errors.push(`Mode functionality test failed: ${error.message}`);
174
+ }
175
+ return result;
169
176
  }
170
-
171
- return result;
172
- }
173
-
174
- /**
177
+ /**
175
178
  * Test health checks
176
- */
177
- async testHealthChecks() {
178
- const result = { success: true, errors: [], details: {} };
179
-
180
- try {
181
- const healthChecks = await this.validationSystem.runHealthChecks();
182
- result.details.healthChecks = healthChecks;
183
-
184
- result.success = true;
185
- } catch (error) {
186
- result.success = false;
187
- result.errors.push(`Health checks test failed: ${error.message}`);
179
+ */ async testHealthChecks() {
180
+ const result = {
181
+ success: true,
182
+ errors: [],
183
+ details: {}
184
+ };
185
+ try {
186
+ const healthChecks = await this.validationSystem.runHealthChecks();
187
+ result.details.healthChecks = healthChecks;
188
+ result.success = true;
189
+ } catch (error) {
190
+ result.success = false;
191
+ result.errors.push(`Health checks test failed: ${error.message}`);
192
+ }
193
+ return result;
188
194
  }
189
-
190
- return result;
191
- }
192
-
193
- /**
195
+ /**
194
196
  * Test backup system
195
- */
196
- async testBackupSystem() {
197
- const result = { success: true, errors: [], details: {} };
198
-
199
- try {
200
- // Test backup creation
201
- const backupResult = await this.rollbackSystem.backupManager.createBackup(
202
- 'test',
203
- 'Test backup',
204
- );
205
- result.details.backupCreation = backupResult;
206
-
207
- if (!backupResult.success) {
208
- result.success = false;
209
- result.errors.push('Backup creation failed');
210
- return result;
211
- }
212
-
213
- // Test backup listing
214
- const backups = await this.rollbackSystem.backupManager.listBackups();
215
- result.details.backupListing = { count: backups.length };
216
-
217
- // Test backup deletion
218
- if (backupResult.id) {
219
- const deleteResult = await this.rollbackSystem.backupManager.deleteBackup(backupResult.id);
220
- result.details.backupDeletion = deleteResult;
221
-
222
- if (!deleteResult.success) {
223
- result.errors.push('Backup deletion failed');
197
+ */ async testBackupSystem() {
198
+ const result = {
199
+ success: true,
200
+ errors: [],
201
+ details: {}
202
+ };
203
+ try {
204
+ // Test backup creation
205
+ const backupResult = await this.rollbackSystem.backupManager.createBackup('test', 'Test backup');
206
+ result.details.backupCreation = backupResult;
207
+ if (!backupResult.success) {
208
+ result.success = false;
209
+ result.errors.push('Backup creation failed');
210
+ return result;
211
+ }
212
+ // Test backup listing
213
+ const backups = await this.rollbackSystem.backupManager.listBackups();
214
+ result.details.backupListing = {
215
+ count: backups.length
216
+ };
217
+ // Test backup deletion
218
+ if (backupResult.id) {
219
+ const deleteResult = await this.rollbackSystem.backupManager.deleteBackup(backupResult.id);
220
+ result.details.backupDeletion = deleteResult;
221
+ if (!deleteResult.success) {
222
+ result.errors.push('Backup deletion failed');
223
+ }
224
+ }
225
+ } catch (error) {
226
+ result.success = false;
227
+ result.errors.push(`Backup system test failed: ${error.message}`);
224
228
  }
225
- }
226
- } catch (error) {
227
- result.success = false;
228
- result.errors.push(`Backup system test failed: ${error.message}`);
229
+ return result;
229
230
  }
230
-
231
- return result;
232
- }
233
-
234
- /**
231
+ /**
235
232
  * Test rollback system
236
- */
237
- async testRollbackSystem() {
238
- const result = { success: true, errors: [], details: {} };
239
-
240
- try {
241
- // Test rollback system validation
242
- const rollbackValidation = await this.rollbackSystem.validateRollbackSystem();
243
- result.details.rollbackValidation = rollbackValidation;
244
-
245
- if (!rollbackValidation.success) {
246
- result.errors.push(...rollbackValidation.errors);
247
- }
248
-
249
- // Test rollback point listing
250
- const rollbackPoints = await this.rollbackSystem.listRollbackPoints();
251
- result.details.rollbackPoints = {
252
- count: rollbackPoints.rollbackPoints.length,
253
- checkpoints: rollbackPoints.checkpoints.length,
254
- };
255
- } catch (error) {
256
- result.success = false;
257
- result.errors.push(`Rollback system test failed: ${error.message}`);
233
+ */ async testRollbackSystem() {
234
+ const result = {
235
+ success: true,
236
+ errors: [],
237
+ details: {}
238
+ };
239
+ try {
240
+ // Test rollback system validation
241
+ const rollbackValidation = await this.rollbackSystem.validateRollbackSystem();
242
+ result.details.rollbackValidation = rollbackValidation;
243
+ if (!rollbackValidation.success) {
244
+ result.errors.push(...rollbackValidation.errors);
245
+ }
246
+ // Test rollback point listing
247
+ const rollbackPoints = await this.rollbackSystem.listRollbackPoints();
248
+ result.details.rollbackPoints = {
249
+ count: rollbackPoints.rollbackPoints.length,
250
+ checkpoints: rollbackPoints.checkpoints.length
251
+ };
252
+ } catch (error) {
253
+ result.success = false;
254
+ result.errors.push(`Rollback system test failed: ${error.message}`);
255
+ }
256
+ return result;
258
257
  }
259
-
260
- return result;
261
- }
262
-
263
- /**
258
+ /**
264
259
  * Test state tracking
265
- */
266
- async testStateTracking() {
267
- const result = { success: true, errors: [], details: {} };
268
-
269
- try {
270
- const stateTracker = this.rollbackSystem.stateTracker;
271
-
272
- // Test checkpoint creation
273
- const checkpoint = await stateTracker.createCheckpoint('test-phase', { test: true });
274
- result.details.checkpointCreation = checkpoint;
275
-
276
- if (!checkpoint.success) {
277
- result.errors.push('Checkpoint creation failed');
278
- }
279
-
280
- // Test rollback point recording
281
- const rollbackPoint = await stateTracker.recordRollbackPoint('test', { testData: true });
282
- result.details.rollbackPointCreation = rollbackPoint;
283
-
284
- if (!rollbackPoint.success) {
285
- result.errors.push('Rollback point creation failed');
286
- }
287
-
288
- // Test state validation
289
- const stateValidation = await stateTracker.validateStateTracking();
290
- result.details.stateValidation = stateValidation;
291
-
292
- if (!stateValidation.success) {
293
- result.errors.push(...stateValidation.errors);
294
- }
295
- } catch (error) {
296
- result.success = false;
297
- result.errors.push(`State tracking test failed: ${error.message}`);
260
+ */ async testStateTracking() {
261
+ const result = {
262
+ success: true,
263
+ errors: [],
264
+ details: {}
265
+ };
266
+ try {
267
+ const stateTracker = this.rollbackSystem.stateTracker;
268
+ // Test checkpoint creation
269
+ const checkpoint = await stateTracker.createCheckpoint('test-phase', {
270
+ test: true
271
+ });
272
+ result.details.checkpointCreation = checkpoint;
273
+ if (!checkpoint.success) {
274
+ result.errors.push('Checkpoint creation failed');
275
+ }
276
+ // Test rollback point recording
277
+ const rollbackPoint = await stateTracker.recordRollbackPoint('test', {
278
+ testData: true
279
+ });
280
+ result.details.rollbackPointCreation = rollbackPoint;
281
+ if (!rollbackPoint.success) {
282
+ result.errors.push('Rollback point creation failed');
283
+ }
284
+ // Test state validation
285
+ const stateValidation = await stateTracker.validateStateTracking();
286
+ result.details.stateValidation = stateValidation;
287
+ if (!stateValidation.success) {
288
+ result.errors.push(...stateValidation.errors);
289
+ }
290
+ } catch (error) {
291
+ result.success = false;
292
+ result.errors.push(`State tracking test failed: ${error.message}`);
293
+ }
294
+ return result;
298
295
  }
299
-
300
- return result;
301
- }
302
-
303
- /**
296
+ /**
304
297
  * Test recovery procedures
305
- */
306
- async testRecoveryProcedures() {
307
- const result = { success: true, errors: [], details: {} };
308
-
309
- try {
310
- const recoveryManager = this.rollbackSystem.recoveryManager;
311
-
312
- // Test recovery system validation
313
- const recoveryValidation = await recoveryManager.validateRecoverySystem();
314
- result.details.recoveryValidation = recoveryValidation;
315
-
316
- if (!recoveryValidation.success) {
317
- result.errors.push(...recoveryValidation.errors);
318
- }
319
-
320
- // Test generic recovery
321
- const genericRecovery = await recoveryManager.performRecovery('test-failure', { test: true });
322
- result.details.genericRecovery = genericRecovery;
323
- } catch (error) {
324
- result.success = false;
325
- result.errors.push(`Recovery procedures test failed: ${error.message}`);
298
+ */ async testRecoveryProcedures() {
299
+ const result = {
300
+ success: true,
301
+ errors: [],
302
+ details: {}
303
+ };
304
+ try {
305
+ const recoveryManager = this.rollbackSystem.recoveryManager;
306
+ // Test recovery system validation
307
+ const recoveryValidation = await recoveryManager.validateRecoverySystem();
308
+ result.details.recoveryValidation = recoveryValidation;
309
+ if (!recoveryValidation.success) {
310
+ result.errors.push(...recoveryValidation.errors);
311
+ }
312
+ // Test generic recovery
313
+ const genericRecovery = await recoveryManager.performRecovery('test-failure', {
314
+ test: true
315
+ });
316
+ result.details.genericRecovery = genericRecovery;
317
+ } catch (error) {
318
+ result.success = false;
319
+ result.errors.push(`Recovery procedures test failed: ${error.message}`);
320
+ }
321
+ return result;
326
322
  }
327
-
328
- return result;
329
- }
330
-
331
- /**
323
+ /**
332
324
  * Test atomic operations
333
- */
334
- async testAtomicOperations() {
335
- const result = { success: true, errors: [], details: {} };
336
-
337
- try {
338
- const { createAtomicOperation } = await import('../rollback/index.js');
339
-
340
- // Test atomic operation creation
341
- const atomicOp = createAtomicOperation(this.rollbackSystem, 'test-operation');
342
-
343
- // Test begin
344
- const beginResult = await atomicOp.begin();
345
- result.details.atomicBegin = { success: beginResult };
346
-
347
- if (!beginResult) {
348
- result.errors.push('Atomic operation begin failed');
325
+ */ async testAtomicOperations() {
326
+ const result = {
327
+ success: true,
328
+ errors: [],
329
+ details: {}
330
+ };
331
+ try {
332
+ const { createAtomicOperation } = await import("../rollback/index.js");
333
+ // Test atomic operation creation
334
+ const atomicOp = createAtomicOperation(this.rollbackSystem, 'test-operation');
335
+ // Test begin
336
+ const beginResult = await atomicOp.begin();
337
+ result.details.atomicBegin = {
338
+ success: beginResult
339
+ };
340
+ if (!beginResult) {
341
+ result.errors.push('Atomic operation begin failed');
342
+ return result;
343
+ }
344
+ // Test commit
345
+ await atomicOp.commit();
346
+ result.details.atomicCommit = {
347
+ success: true
348
+ };
349
+ } catch (error) {
350
+ result.success = false;
351
+ result.errors.push(`Atomic operations test failed: ${error.message}`);
352
+ }
349
353
  return result;
350
- }
351
-
352
- // Test commit
353
- await atomicOp.commit();
354
- result.details.atomicCommit = { success: true };
355
- } catch (error) {
356
- result.success = false;
357
- result.errors.push(`Atomic operations test failed: ${error.message}`);
358
354
  }
359
-
360
- return result;
361
- }
362
-
363
- /**
355
+ /**
364
356
  * Generate test report
365
- */
366
- generateTestReport() {
367
- console.log('\n' + '='.repeat(60));
368
- console.log('🧪 VALIDATION & ROLLBACK SYSTEM TEST REPORT');
369
- console.log('='.repeat(60));
370
-
371
- const passed = this.testResults.filter((test) => test.success).length;
372
- const failed = this.testResults.filter((test) => !test.success).length;
373
- const total = this.testResults.length;
374
-
375
- console.log(`\n📊 Summary: ${passed}/${total} tests passed`);
376
-
377
- if (failed === 0) {
378
- printSuccess('🎉 All tests passed!');
379
- } else {
380
- printError(`❌ ${failed} tests failed`);
357
+ */ generateTestReport() {
358
+ console.log('\n' + '='.repeat(60));
359
+ console.log('🧪 VALIDATION & ROLLBACK SYSTEM TEST REPORT');
360
+ console.log('='.repeat(60));
361
+ const passed = this.testResults.filter((test)=>test.success).length;
362
+ const failed = this.testResults.filter((test)=>!test.success).length;
363
+ const total = this.testResults.length;
364
+ console.log(`\n📊 Summary: ${passed}/${total} tests passed`);
365
+ if (failed === 0) {
366
+ printSuccess('🎉 All tests passed!');
367
+ } else {
368
+ printError(`❌ ${failed} tests failed`);
369
+ }
370
+ console.log('\n📋 Test Results:');
371
+ this.testResults.forEach((test)=>{
372
+ const status = test.success ? '✅' : '❌';
373
+ console.log(` ${status} ${test.name}`);
374
+ if (!test.success && test.error) {
375
+ console.log(` Error: ${test.error}`);
376
+ }
377
+ });
378
+ console.log('\n' + '='.repeat(60));
379
+ // Overall system health assessment
380
+ const healthScore = passed / total * 100;
381
+ console.log(`\n🏥 System Health Score: ${healthScore.toFixed(1)}%`);
382
+ if (healthScore >= 90) {
383
+ printSuccess('🟢 Excellent - System is fully operational');
384
+ } else if (healthScore >= 70) {
385
+ printWarning('🟡 Good - System is mostly operational with minor issues');
386
+ } else if (healthScore >= 50) {
387
+ printWarning('🟠 Fair - System has some significant issues');
388
+ } else {
389
+ printError('🔴 Poor - System has major issues requiring attention');
390
+ }
381
391
  }
382
-
383
- console.log('\n📋 Test Results:');
384
- this.testResults.forEach((test) => {
385
- const status = test.success ? '✅' : '❌';
386
- console.log(` ${status} ${test.name}`);
387
-
388
- if (!test.success && test.error) {
389
- console.log(` Error: ${test.error}`);
390
- }
391
- });
392
-
393
- console.log('\n' + '='.repeat(60));
394
-
395
- // Overall system health assessment
396
- const healthScore = (passed / total) * 100;
397
- console.log(`\n🏥 System Health Score: ${healthScore.toFixed(1)}%`);
398
-
399
- if (healthScore >= 90) {
400
- printSuccess('🟢 Excellent - System is fully operational');
401
- } else if (healthScore >= 70) {
402
- printWarning('🟡 Good - System is mostly operational with minor issues');
403
- } else if (healthScore >= 50) {
404
- printWarning('🟠 Fair - System has some significant issues');
405
- } else {
406
- printError('🔴 Poor - System has major issues requiring attention');
392
+ // Helper methods for creating test files
393
+ async createTestFiles() {
394
+ try {
395
+ await fs.mkdir(`${this.workingDir}/test-temp`, {
396
+ recursive: true
397
+ });
398
+ await fs.writeFile(`${this.workingDir}/test-temp/CLAUDE.md`, '# Test CLAUDE.md', 'utf8');
399
+ await fs.writeFile(`${this.workingDir}/test-temp/memory-bank.md`, '# Test Memory Bank', 'utf8');
400
+ } catch {
401
+ // Test files creation failed - not critical for testing
402
+ }
407
403
  }
408
- }
409
-
410
- // Helper methods for creating test files
411
-
412
- async createTestFiles() {
413
- try {
414
- await fs.mkdir(`${this.workingDir}/test-temp`, { recursive: true });
415
- await fs.writeFile(`${this.workingDir}/test-temp/CLAUDE.md`, '# Test CLAUDE.md', 'utf8');
416
- await fs.writeFile(
417
- `${this.workingDir}/test-temp/memory-bank.md`,
418
- '# Test Memory Bank',
419
- 'utf8',
420
- );
421
- } catch {
422
- // Test files creation failed - not critical for testing
404
+ async cleanupTestFiles() {
405
+ try {
406
+ await fs.unlink(`${this.workingDir}/test-temp`, {
407
+ recursive: true
408
+ });
409
+ } catch {
410
+ // Cleanup failed - not critical
411
+ }
423
412
  }
424
- }
425
-
426
- async cleanupTestFiles() {
427
- try {
428
- await fs.unlink(`${this.workingDir}/test-temp`, { recursive: true });
429
- } catch {
430
- // Cleanup failed - not critical
413
+ async createTestConfigs() {
414
+ try {
415
+ const testConfig = {
416
+ version: '1.0',
417
+ modes: {
418
+ 'test-mode': {
419
+ description: 'Test mode for validation'
420
+ }
421
+ }
422
+ };
423
+ await fs.writeFile(`${this.workingDir}/test-roomodes`, JSON.stringify(testConfig, null, 2, 'utf8'));
424
+ } catch {
425
+ // Test config creation failed - not critical
426
+ }
431
427
  }
432
- }
433
-
434
- async createTestConfigs() {
435
- try {
436
- const testConfig = {
437
- version: '1.0',
438
- modes: {
439
- 'test-mode': {
440
- description: 'Test mode for validation',
441
- },
442
- },
443
- };
444
-
445
- await fs.writeFile(
446
- `${this.workingDir}/test-roomodes`,
447
- JSON.stringify(testConfig, null, 2, 'utf8'),
448
- );
449
- } catch {
450
- // Test config creation failed - not critical
428
+ async cleanupTestConfigs() {
429
+ try {
430
+ await fs.unlink(`${this.workingDir}/test-roomodes`);
431
+ } catch {
432
+ // Cleanup failed - not critical
433
+ }
451
434
  }
452
- }
453
-
454
- async cleanupTestConfigs() {
455
- try {
456
- await fs.unlink(`${this.workingDir}/test-roomodes`);
457
- } catch {
458
- // Cleanup failed - not critical
435
+ async createTestSparcConfig() {
436
+ try {
437
+ await this.createTestConfigs();
438
+ await fs.mkdir(`${this.workingDir}/test-roo`, {
439
+ recursive: true
440
+ });
441
+ } catch {
442
+ // Test SPARC config creation failed - not critical
443
+ }
459
444
  }
460
- }
461
-
462
- async createTestSparcConfig() {
463
- try {
464
- await this.createTestConfigs();
465
- await fs.mkdir(`${this.workingDir}/test-roo`, { recursive: true });
466
- } catch {
467
- // Test SPARC config creation failed - not critical
445
+ async cleanupTestSparcConfig() {
446
+ try {
447
+ await this.cleanupTestConfigs();
448
+ await fs.unlink(`${this.workingDir}/test-roo`, {
449
+ recursive: true
450
+ });
451
+ } catch {
452
+ // Cleanup failed - not critical
453
+ }
468
454
  }
469
- }
470
-
471
- async cleanupTestSparcConfig() {
472
- try {
473
- await this.cleanupTestConfigs();
474
- await fs.unlink(`${this.workingDir}/test-roo`, { recursive: true });
475
- } catch {
476
- // Cleanup failed - not critical
455
+ constructor(workingDir){
456
+ this.workingDir = workingDir;
457
+ this.validationSystem = new ValidationSystem(workingDir);
458
+ this.rollbackSystem = new RollbackSystem(workingDir);
459
+ this.testResults = [];
477
460
  }
478
- }
479
461
  }
480
-
481
462
  /**
482
463
  * Run validation and rollback tests
483
- */
484
- export async function runValidationTests(workingDir) {
485
- const testRunner = new ValidationTestRunner(workingDir);
486
- await testRunner.runAllTests();
487
- return testRunner.testResults;
464
+ */ export async function runValidationTests(workingDir) {
465
+ const testRunner = new ValidationTestRunner(workingDir);
466
+ await testRunner.runAllTests();
467
+ return testRunner.testResults;
488
468
  }