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,354 @@
1
+ import { promises as fs } from 'fs';
2
+ // config-validator.js - Configuration file validation
3
+
4
+ export class ConfigValidator {
5
+ constructor(workingDir) {
6
+ this.workingDir = workingDir;
7
+ }
8
+
9
+ /**
10
+ * Validate .roomodes configuration file
11
+ */
12
+ async validateRoomodes() {
13
+ const result = {
14
+ success: true,
15
+ errors: [],
16
+ warnings: [],
17
+ config: null,
18
+ };
19
+
20
+ const roomodesPath = `${this.workingDir}/.roomodes`;
21
+
22
+ try {
23
+ // Check if file exists
24
+ const stat = await fs.stat(roomodesPath);
25
+ if (!stat.isFile) {
26
+ result.success = false;
27
+ result.errors.push('.roomodes exists but is not a file');
28
+ return result;
29
+ }
30
+
31
+ // Read and parse JSON
32
+ const content = await fs.readFile(roomodesPath, 'utf8');
33
+
34
+ try {
35
+ const config = JSON.parse(content);
36
+ result.config = config;
37
+
38
+ // Validate structure
39
+ const validationResult = this.validateRoomodesStructure(config);
40
+ if (!validationResult.valid) {
41
+ result.success = false;
42
+ result.errors.push(...validationResult.errors);
43
+ }
44
+ result.warnings.push(...validationResult.warnings);
45
+ } catch (jsonError) {
46
+ result.success = false;
47
+ result.errors.push(`Invalid JSON in .roomodes: ${jsonError.message}`);
48
+ }
49
+ } catch (error) {
50
+ if (error instanceof Deno.errors.NotFound) {
51
+ result.warnings.push('.roomodes file not found - SPARC features may not be available');
52
+ } else {
53
+ result.success = false;
54
+ result.errors.push(`Could not read .roomodes: ${error.message}`);
55
+ }
56
+ }
57
+
58
+ return result;
59
+ }
60
+
61
+ /**
62
+ * Validate CLAUDE.md configuration
63
+ */
64
+ async validateClaudeMd() {
65
+ const result = {
66
+ success: true,
67
+ errors: [],
68
+ warnings: [],
69
+ content: null,
70
+ };
71
+
72
+ const claudeMdPath = `${this.workingDir}/CLAUDE.md`;
73
+
74
+ try {
75
+ const content = await fs.readFile(claudeMdPath, 'utf8');
76
+ result.content = content;
77
+
78
+ // Check for required sections
79
+ const requiredSections = [
80
+ '# Claude Code Configuration',
81
+ '## Project Overview',
82
+ '## SPARC Development Commands',
83
+ ];
84
+
85
+ for (const section of requiredSections) {
86
+ if (!content.includes(section)) {
87
+ result.warnings.push(`Missing recommended section: ${section}`);
88
+ }
89
+ }
90
+
91
+ // Check for important command patterns
92
+ const importantCommands = ['npx claude-flow sparc', 'npm run build', 'npm run test'];
93
+
94
+ for (const command of importantCommands) {
95
+ if (!content.includes(command)) {
96
+ result.warnings.push(`Missing important command reference: ${command}`);
97
+ }
98
+ }
99
+
100
+ // Check file size
101
+ if (content.length < 100) {
102
+ result.success = false;
103
+ result.errors.push('CLAUDE.md appears to be too short or empty');
104
+ }
105
+ } catch (error) {
106
+ result.success = false;
107
+ result.errors.push(`Could not read CLAUDE.md: ${error.message}`);
108
+ }
109
+
110
+ return result;
111
+ }
112
+
113
+ /**
114
+ * Validate memory configuration
115
+ */
116
+ async validateMemoryConfig() {
117
+ const result = {
118
+ success: true,
119
+ errors: [],
120
+ warnings: [],
121
+ data: null,
122
+ };
123
+
124
+ const memoryDataPath = `${this.workingDir}/memory/claude-flow-data.json`;
125
+
126
+ try {
127
+ const content = await fs.readFile(memoryDataPath, 'utf8');
128
+
129
+ try {
130
+ const data = JSON.parse(content);
131
+ result.data = data;
132
+
133
+ // Validate structure
134
+ const validationResult = this.validateMemoryDataStructure(data);
135
+ if (!validationResult.valid) {
136
+ result.success = false;
137
+ result.errors.push(...validationResult.errors);
138
+ }
139
+ result.warnings.push(...validationResult.warnings);
140
+ } catch (jsonError) {
141
+ result.success = false;
142
+ result.errors.push(`Invalid JSON in memory data: ${jsonError.message}`);
143
+ }
144
+ } catch (error) {
145
+ result.success = false;
146
+ result.errors.push(`Could not read memory data: ${error.message}`);
147
+ }
148
+
149
+ return result;
150
+ }
151
+
152
+ /**
153
+ * Validate coordination configuration
154
+ */
155
+ async validateCoordinationConfig() {
156
+ const result = {
157
+ success: true,
158
+ errors: [],
159
+ warnings: [],
160
+ content: null,
161
+ };
162
+
163
+ const coordinationPath = `${this.workingDir}/coordination.md`;
164
+
165
+ try {
166
+ const content = await fs.readFile(coordinationPath, 'utf8');
167
+ result.content = content;
168
+
169
+ // Check for required sections
170
+ const requiredSections = [
171
+ '# Multi-Agent Coordination',
172
+ '## Agent Coordination Patterns',
173
+ '## Memory Management',
174
+ ];
175
+
176
+ for (const section of requiredSections) {
177
+ if (!content.includes(section)) {
178
+ result.warnings.push(`Missing recommended section in coordination.md: ${section}`);
179
+ }
180
+ }
181
+
182
+ // Check file size
183
+ if (content.length < 50) {
184
+ result.warnings.push('coordination.md appears to be very short');
185
+ }
186
+ } catch (error) {
187
+ result.success = false;
188
+ result.errors.push(`Could not read coordination.md: ${error.message}`);
189
+ }
190
+
191
+ return result;
192
+ }
193
+
194
+ /**
195
+ * Validate executable configuration
196
+ */
197
+ async validateExecutable() {
198
+ const result = {
199
+ success: true,
200
+ errors: [],
201
+ warnings: [],
202
+ };
203
+
204
+ const executablePath = `${this.workingDir}/claude-flow`;
205
+
206
+ try {
207
+ const stat = await fs.stat(executablePath);
208
+
209
+ if (!stat.isFile) {
210
+ result.success = false;
211
+ result.errors.push('claude-flow executable is not a file');
212
+ return result;
213
+ }
214
+
215
+ // Check if executable (on Unix systems)
216
+ if (Deno.build.os !== 'windows') {
217
+ const isExecutable = (stat.mode & 0o111) !== 0;
218
+ if (!isExecutable) {
219
+ result.warnings.push('claude-flow file is not executable');
220
+ }
221
+ }
222
+
223
+ // Read and validate content
224
+ const content = await fs.readFile(executablePath, 'utf8');
225
+
226
+ // Check for required elements
227
+ if (content.includes('#!/usr/bin/env')) {
228
+ // Script file
229
+ if (!content.includes('claude-flow') && !content.includes('deno run')) {
230
+ result.warnings.push('Executable script may not be properly configured');
231
+ }
232
+ } else {
233
+ result.warnings.push('Executable may not have proper shebang');
234
+ }
235
+ } catch (error) {
236
+ result.success = false;
237
+ result.errors.push(`Could not validate executable: ${error.message}`);
238
+ }
239
+
240
+ return result;
241
+ }
242
+
243
+ // Helper methods
244
+
245
+ validateRoomodesStructure(config) {
246
+ const result = {
247
+ valid: true,
248
+ errors: [],
249
+ warnings: [],
250
+ };
251
+
252
+ // Check top-level structure
253
+ if (typeof config !== 'object' || config === null) {
254
+ result.valid = false;
255
+ result.errors.push('.roomodes must be a JSON object');
256
+ return result;
257
+ }
258
+
259
+ // Check for required fields
260
+ const requiredFields = ['modes', 'version'];
261
+ for (const field of requiredFields) {
262
+ if (!(field in config)) {
263
+ result.warnings.push(`Missing recommended field in .roomodes: ${field}`);
264
+ }
265
+ }
266
+
267
+ // Validate modes if present
268
+ if ('modes' in config) {
269
+ if (typeof config.modes !== 'object' || config.modes === null) {
270
+ result.valid = false;
271
+ result.errors.push('.roomodes modes must be an object');
272
+ } else {
273
+ // Check each mode
274
+ for (const [modeName, modeConfig] of Object.entries(config.modes)) {
275
+ const modeValidation = this.validateModeConfig(modeName, modeConfig);
276
+ if (!modeValidation.valid) {
277
+ result.warnings.push(...modeValidation.errors.map((err) => `Mode ${modeName}: ${err}`));
278
+ }
279
+ }
280
+ }
281
+ }
282
+
283
+ return result;
284
+ }
285
+
286
+ validateModeConfig(modeName, modeConfig) {
287
+ const result = {
288
+ valid: true,
289
+ errors: [],
290
+ };
291
+
292
+ if (typeof modeConfig !== 'object' || modeConfig === null) {
293
+ result.valid = false;
294
+ result.errors.push('mode configuration must be an object');
295
+ return result;
296
+ }
297
+
298
+ // Check for recommended fields
299
+ const recommendedFields = ['description', 'persona', 'tools'];
300
+ for (const field of recommendedFields) {
301
+ if (!(field in modeConfig)) {
302
+ result.errors.push(`missing recommended field: ${field}`);
303
+ }
304
+ }
305
+
306
+ // Validate specific fields
307
+ if ('tools' in modeConfig && !Array.isArray(modeConfig.tools)) {
308
+ result.errors.push('tools must be an array');
309
+ }
310
+
311
+ if ('description' in modeConfig && typeof modeConfig.description !== 'string') {
312
+ result.errors.push('description must be a string');
313
+ }
314
+
315
+ return result;
316
+ }
317
+
318
+ validateMemoryDataStructure(data) {
319
+ const result = {
320
+ valid: true,
321
+ errors: [],
322
+ warnings: [],
323
+ };
324
+
325
+ if (typeof data !== 'object' || data === null) {
326
+ result.valid = false;
327
+ result.errors.push('Memory data must be a JSON object');
328
+ return result;
329
+ }
330
+
331
+ // Check for required fields
332
+ const requiredFields = ['agents', 'tasks', 'lastUpdated'];
333
+ for (const field of requiredFields) {
334
+ if (!(field in data)) {
335
+ result.warnings.push(`Missing field in memory data: ${field}`);
336
+ }
337
+ }
338
+
339
+ // Validate field types
340
+ if ('agents' in data && !Array.isArray(data.agents)) {
341
+ result.errors.push('agents must be an array');
342
+ }
343
+
344
+ if ('tasks' in data && !Array.isArray(data.tasks)) {
345
+ result.errors.push('tasks must be an array');
346
+ }
347
+
348
+ if ('lastUpdated' in data && typeof data.lastUpdated !== 'number') {
349
+ result.warnings.push('lastUpdated should be a timestamp number');
350
+ }
351
+
352
+ return result;
353
+ }
354
+ }