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,488 @@
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
+
8
+ /**
9
+ * 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
+ /**
20
+ * 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
+ }
56
+ }
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
+ }
65
+ }
66
+
67
+ this.generateTestReport();
68
+ }
69
+
70
+ /**
71
+ * 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}`);
94
+ }
95
+
96
+ return result;
97
+ }
98
+
99
+ /**
100
+ * 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}`);
119
+ }
120
+
121
+ return result;
122
+ }
123
+
124
+ /**
125
+ * 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}`);
144
+ }
145
+
146
+ return result;
147
+ }
148
+
149
+ /**
150
+ * 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}`);
169
+ }
170
+
171
+ return result;
172
+ }
173
+
174
+ /**
175
+ * 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}`);
188
+ }
189
+
190
+ return result;
191
+ }
192
+
193
+ /**
194
+ * 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');
224
+ }
225
+ }
226
+ } catch (error) {
227
+ result.success = false;
228
+ result.errors.push(`Backup system test failed: ${error.message}`);
229
+ }
230
+
231
+ return result;
232
+ }
233
+
234
+ /**
235
+ * 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}`);
258
+ }
259
+
260
+ return result;
261
+ }
262
+
263
+ /**
264
+ * 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}`);
298
+ }
299
+
300
+ return result;
301
+ }
302
+
303
+ /**
304
+ * 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}`);
326
+ }
327
+
328
+ return result;
329
+ }
330
+
331
+ /**
332
+ * 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');
349
+ 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
+ }
359
+
360
+ return result;
361
+ }
362
+
363
+ /**
364
+ * 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`);
381
+ }
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');
407
+ }
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
423
+ }
424
+ }
425
+
426
+ async cleanupTestFiles() {
427
+ try {
428
+ await fs.unlink(`${this.workingDir}/test-temp`, { recursive: true });
429
+ } catch {
430
+ // Cleanup failed - not critical
431
+ }
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
451
+ }
452
+ }
453
+
454
+ async cleanupTestConfigs() {
455
+ try {
456
+ await fs.unlink(`${this.workingDir}/test-roomodes`);
457
+ } catch {
458
+ // Cleanup failed - not critical
459
+ }
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
468
+ }
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
477
+ }
478
+ }
479
+ }
480
+
481
+ /**
482
+ * 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;
488
+ }
@@ -0,0 +1,4 @@
1
+ // init.js - Initialize Claude Code integration files
2
+ // This file now re-exports from the modular init structure
3
+
4
+ export { initCommand } from './init/index.js';
@@ -0,0 +1,163 @@
1
+ // MCP Health Check Command
2
+ // Provides comprehensive health monitoring for MCP configuration
3
+ // Uses the bulletproof MCP configuration manager for diagnostics
4
+
5
+ import { printSuccess, printWarning, printError } from '../utils.js';
6
+
7
+ /**
8
+ * MCP Health Check Command
9
+ * Provides detailed health assessment of MCP configuration
10
+ */
11
+ export async function mcpHealthCommand(subArgs, flags) {
12
+ // Show help if requested
13
+ if (flags.help || flags.h || subArgs.includes('--help') || subArgs.includes('-h')) {
14
+ console.log(`
15
+ ๐Ÿฅ MCP Health Check
16
+
17
+ Usage: claude-flow-novice mcp health [options]
18
+
19
+ Options:
20
+ --verbose Show detailed diagnostic information
21
+ --fix Automatically fix detected issues
22
+ --dry-run Preview fixes without applying changes
23
+ --help, -h Show this help message
24
+
25
+ This command performs a comprehensive health check of your MCP configuration:
26
+ โ€ข Detects broken server configurations
27
+ โ€ข Identifies conflicts between local and project configs
28
+ โ€ข Validates Claude Code CLI installation
29
+ โ€ข Tests MCP server connectivity
30
+ โ€ข Provides actionable recommendations
31
+
32
+ The health check is safe and read-only by default. Use --fix to automatically
33
+ resolve detected issues with full backup and rollback protection.
34
+ `.trim());
35
+ return;
36
+ }
37
+
38
+ const options = {
39
+ verbose: flags.verbose || false,
40
+ autoFix: flags.fix || false,
41
+ dryRun: flags['dry-run'] || false
42
+ };
43
+
44
+ console.log('๐Ÿฅ Running MCP health check...');
45
+
46
+ try {
47
+ // Import the bulletproof MCP configuration manager
48
+ const { quickMcpHealthCheck, enhancedMcpInit } = await import('../mcp/mcp-config-manager.js');
49
+
50
+ // Run comprehensive health check
51
+ const healthResult = await quickMcpHealthCheck(options);
52
+
53
+ // Display results using the enhanced UX
54
+ try {
55
+ const { displayHealthCheckResults } = await import('./mcp-user-experience.js');
56
+ displayHealthCheckResults(healthResult, options);
57
+ } catch (uxError) {
58
+ // Fallback to basic output if UX module isn't available
59
+ displayBasicHealthResults(healthResult, options);
60
+ }
61
+
62
+ // If issues were found and fix is requested, run the bulletproof setup
63
+ if (!healthResult.healthy && options.autoFix) {
64
+ console.log('\n๐Ÿ› ๏ธ Attempting to fix detected issues...');
65
+
66
+ const fixResult = await enhancedMcpInit({
67
+ verbose: options.verbose,
68
+ autoFix: true,
69
+ dryRun: options.dryRun,
70
+ enhancedUx: true
71
+ });
72
+
73
+ if (fixResult.success) {
74
+ printSuccess('๐ŸŽ‰ All issues have been automatically resolved!');
75
+ console.log(' โ€ข Run health check again to verify: npx claude-flow-novice mcp health');
76
+ } else {
77
+ printWarning('โš ๏ธ Some issues could not be automatically resolved');
78
+ if (fixResult.recovery && fixResult.recovery.recommendedActions) {
79
+ console.log('\n๐Ÿ› ๏ธ Manual actions required:');
80
+ fixResult.recovery.recommendedActions.slice(0, 3).forEach((action, i) => {
81
+ console.log(` ${i + 1}. ${action}`);
82
+ });
83
+ }
84
+ }
85
+ } else if (!healthResult.healthy && !options.autoFix) {
86
+ console.log('\n๐Ÿ’ก To automatically fix issues, run:');
87
+ console.log(' npx claude-flow-novice mcp health --fix');
88
+ console.log('\n Or preview fixes with:');
89
+ console.log(' npx claude-flow-novice mcp health --fix --dry-run');
90
+ }
91
+
92
+ // Exit with appropriate code
93
+ process.exit(healthResult.healthy ? 0 : 1);
94
+
95
+ } catch (error) {
96
+ printError(`Health check failed: ${error.message}`);
97
+
98
+ if (options.verbose) {
99
+ console.error('\n๐Ÿ“‹ Stack trace:');
100
+ console.error(error.stack);
101
+ }
102
+
103
+ console.log('\n๐Ÿ†˜ Troubleshooting:');
104
+ console.log(' โ€ข Ensure claude-flow-novice is properly installed');
105
+ console.log(' โ€ข Check if Claude Code CLI is installed: claude --version');
106
+ console.log(' โ€ข Try running: npx claude-flow-novice init --force');
107
+
108
+ process.exit(1);
109
+ }
110
+ }
111
+
112
+ /**
113
+ * Basic health results display (fallback when UX module isn't available)
114
+ */
115
+ function displayBasicHealthResults(results, options) {
116
+ console.log('\n๐Ÿ“Š Health Check Results:');
117
+ console.log('โ”'.repeat(40));
118
+
119
+ const healthIcon = results.healthy ? 'โœ…' : results.needsAttention ? 'โš ๏ธ' : 'โŒ';
120
+ const healthStatus = results.healthy ? 'Healthy' : 'Needs Attention';
121
+
122
+ console.log(`Overall Status: ${healthIcon} ${healthStatus}`);
123
+
124
+ if (results.healthScore !== undefined) {
125
+ console.log(`Health Score: ${results.healthScore}/100`);
126
+ }
127
+
128
+ if (results.state) {
129
+ console.log('\nConfiguration Status:');
130
+ console.log(` Claude Code: ${results.state.claudeCodeInstalled ? 'โœ…' : 'โŒ'}`);
131
+ console.log(` Local Config: ${results.state.hasLocalConfig ? 'โœ…' : 'โŒ'}`);
132
+ console.log(` Project Config: ${results.state.hasProjectConfig ? 'โœ…' : 'โŒ'}`);
133
+
134
+ if (results.state.brokenPaths && results.state.brokenPaths.length > 0) {
135
+ console.log('\nโŒ Issues Found:');
136
+ results.state.brokenPaths.forEach(broken => {
137
+ console.log(` โ€ข ${broken.serverName}: ${broken.issues ? broken.issues.join(', ') : 'Configuration issues'}`);
138
+ });
139
+ }
140
+
141
+ if (results.state.conflictingServers && results.state.conflictingServers.length > 0) {
142
+ console.log('\nโš ๏ธ Configuration Conflicts:');
143
+ results.state.conflictingServers.forEach(conflict => {
144
+ console.log(` โ€ข ${conflict.serverName}: Local vs Project configuration`);
145
+ });
146
+ }
147
+ }
148
+
149
+ if (results.verification && results.verification.tests) {
150
+ console.log('\n๐Ÿงช Verification Tests:');
151
+ results.verification.tests.forEach(test => {
152
+ const status = test.passed ? 'โœ…' : 'โŒ';
153
+ console.log(` ${status} ${test.name}`);
154
+ if (options.verbose && test.details) {
155
+ console.log(` ${test.details}`);
156
+ }
157
+ });
158
+ }
159
+
160
+ console.log('โ”'.repeat(40));
161
+ }
162
+
163
+ export default mcpHealthCommand;