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,599 @@
1
+ import { promises as fs } from 'fs';
2
+ // health-checker.js - System health checks for SPARC initialization
3
+
4
+ export class HealthChecker {
5
+ constructor(workingDir) {
6
+ this.workingDir = workingDir;
7
+ }
8
+
9
+ /**
10
+ * Check SPARC mode availability
11
+ */
12
+ async checkModeAvailability() {
13
+ const result = {
14
+ success: true,
15
+ errors: [],
16
+ warnings: [],
17
+ modes: {
18
+ total: 0,
19
+ available: 0,
20
+ unavailable: [],
21
+ },
22
+ };
23
+
24
+ try {
25
+ // Get expected modes
26
+ const expectedModes = [
27
+ 'architect',
28
+ 'code',
29
+ 'tdd',
30
+ 'spec-pseudocode',
31
+ 'integration',
32
+ 'debug',
33
+ 'security-review',
34
+ 'refinement-optimization-mode',
35
+ 'docs-writer',
36
+ 'devops',
37
+ 'mcp',
38
+ 'swarm',
39
+ ];
40
+
41
+ result.modes.total = expectedModes.length;
42
+
43
+ // Check each mode
44
+ for (const mode of expectedModes) {
45
+ const isAvailable = await this.checkSingleModeAvailability(mode);
46
+ if (isAvailable) {
47
+ result.modes.available++;
48
+ } else {
49
+ result.modes.unavailable.push(mode);
50
+ }
51
+ }
52
+
53
+ // Determine overall success
54
+ if (result.modes.available === 0) {
55
+ result.success = false;
56
+ result.errors.push('No SPARC modes are available');
57
+ } else if (result.modes.unavailable.length > 0) {
58
+ result.warnings.push(
59
+ `${result.modes.unavailable.length} modes unavailable: ${result.modes.unavailable.join(', ')}`,
60
+ );
61
+ }
62
+ } catch (error) {
63
+ result.success = false;
64
+ result.errors.push(`Mode availability check failed: ${error.message}`);
65
+ }
66
+
67
+ return result;
68
+ }
69
+
70
+ /**
71
+ * Check template integrity
72
+ */
73
+ async checkTemplateIntegrity() {
74
+ const result = {
75
+ success: true,
76
+ errors: [],
77
+ warnings: [],
78
+ templates: {
79
+ found: [],
80
+ missing: [],
81
+ corrupted: [],
82
+ },
83
+ };
84
+
85
+ try {
86
+ // Check for template directories
87
+ const templateDirs = ['.roo/templates', '.claude/commands'];
88
+
89
+ for (const dir of templateDirs) {
90
+ const dirPath = `${this.workingDir}/${dir}`;
91
+
92
+ try {
93
+ const stat = await Deno.stat(dirPath);
94
+ if (stat.isDirectory) {
95
+ const templateCheck = await this.checkTemplateDirectory(dirPath);
96
+ result.templates.found.push(...templateCheck.found);
97
+ result.templates.missing.push(...templateCheck.missing);
98
+ result.templates.corrupted.push(...templateCheck.corrupted);
99
+ }
100
+ } catch {
101
+ result.templates.missing.push(dir);
102
+ }
103
+ }
104
+
105
+ // Check core template files
106
+ const coreTemplates = ['CLAUDE.md', 'memory-bank.md', 'coordination.md'];
107
+
108
+ for (const template of coreTemplates) {
109
+ const templatePath = `${this.workingDir}/${template}`;
110
+
111
+ try {
112
+ const content = await fs.readFile(templatePath, 'utf8');
113
+ if (content.length < 50) {
114
+ result.templates.corrupted.push(template);
115
+ } else {
116
+ result.templates.found.push(template);
117
+ }
118
+ } catch {
119
+ result.templates.missing.push(template);
120
+ }
121
+ }
122
+
123
+ // Assess results
124
+ if (result.templates.corrupted.length > 0) {
125
+ result.success = false;
126
+ result.errors.push(`Corrupted templates: ${result.templates.corrupted.join(', ')}`);
127
+ }
128
+
129
+ if (result.templates.missing.length > 0) {
130
+ result.warnings.push(`Missing templates: ${result.templates.missing.join(', ')}`);
131
+ }
132
+ } catch (error) {
133
+ result.success = false;
134
+ result.errors.push(`Template integrity check failed: ${error.message}`);
135
+ }
136
+
137
+ return result;
138
+ }
139
+
140
+ /**
141
+ * Check configuration consistency
142
+ */
143
+ async checkConfigConsistency() {
144
+ const result = {
145
+ success: true,
146
+ errors: [],
147
+ warnings: [],
148
+ consistency: {},
149
+ };
150
+
151
+ try {
152
+ // Check consistency between .roomodes and available commands
153
+ const roomodesCheck = await this.checkRoomodesConsistency();
154
+ result.consistency.roomodes = roomodesCheck;
155
+ if (!roomodesCheck.consistent) {
156
+ result.warnings.push('Inconsistency between .roomodes and available commands');
157
+ }
158
+
159
+ // Check consistency between CLAUDE.md and actual setup
160
+ const claudeCheck = await this.checkClaudeConfigConsistency();
161
+ result.consistency.claude = claudeCheck;
162
+ if (!claudeCheck.consistent) {
163
+ result.warnings.push('Inconsistency between CLAUDE.md and actual setup');
164
+ }
165
+
166
+ // Check memory configuration consistency
167
+ const memoryCheck = await this.checkMemoryConsistency();
168
+ result.consistency.memory = memoryCheck;
169
+ if (!memoryCheck.consistent) {
170
+ result.warnings.push('Memory configuration inconsistency detected');
171
+ }
172
+ } catch (error) {
173
+ result.success = false;
174
+ result.errors.push(`Configuration consistency check failed: ${error.message}`);
175
+ }
176
+
177
+ return result;
178
+ }
179
+
180
+ /**
181
+ * Check system resources
182
+ */
183
+ async checkSystemResources() {
184
+ const result = {
185
+ success: true,
186
+ errors: [],
187
+ warnings: [],
188
+ resources: {},
189
+ };
190
+
191
+ try {
192
+ // Check disk space
193
+ const diskCheck = await this.checkDiskSpace();
194
+ result.resources.disk = diskCheck;
195
+ if (!diskCheck.adequate) {
196
+ result.warnings.push('Low disk space detected');
197
+ }
198
+
199
+ // Check memory usage
200
+ const memoryCheck = await this.checkMemoryUsage();
201
+ result.resources.memory = memoryCheck;
202
+ if (!memoryCheck.adequate) {
203
+ result.warnings.push('High memory usage detected');
204
+ }
205
+
206
+ // Check file descriptors
207
+ const fdCheck = await this.checkFileDescriptors();
208
+ result.resources.fileDescriptors = fdCheck;
209
+ if (!fdCheck.adequate) {
210
+ result.warnings.push('Many open file descriptors');
211
+ }
212
+
213
+ // Check process limits
214
+ const processCheck = await this.checkProcessLimits();
215
+ result.resources.processes = processCheck;
216
+ if (!processCheck.adequate) {
217
+ result.warnings.push('Process limits may affect operation');
218
+ }
219
+ } catch (error) {
220
+ result.warnings.push(`System resource check failed: ${error.message}`);
221
+ }
222
+
223
+ return result;
224
+ }
225
+
226
+ /**
227
+ * Run comprehensive health diagnostics
228
+ */
229
+ async runDiagnostics() {
230
+ const result = {
231
+ success: true,
232
+ errors: [],
233
+ warnings: [],
234
+ diagnostics: {},
235
+ timestamp: new Date().toISOString(),
236
+ };
237
+
238
+ try {
239
+ // File system health
240
+ const fsHealth = await this.checkFileSystemHealth();
241
+ result.diagnostics.filesystem = fsHealth;
242
+ if (!fsHealth.healthy) {
243
+ result.success = false;
244
+ result.errors.push(...fsHealth.errors);
245
+ }
246
+
247
+ // Process health
248
+ const processHealth = await this.checkProcessHealth();
249
+ result.diagnostics.processes = processHealth;
250
+ if (!processHealth.healthy) {
251
+ result.warnings.push(...processHealth.warnings);
252
+ }
253
+
254
+ // Network health (for external dependencies)
255
+ const networkHealth = await this.checkNetworkHealth();
256
+ result.diagnostics.network = networkHealth;
257
+ if (!networkHealth.healthy) {
258
+ result.warnings.push(...networkHealth.warnings);
259
+ }
260
+
261
+ // Integration health
262
+ const integrationHealth = await this.checkIntegrationHealth();
263
+ result.diagnostics.integration = integrationHealth;
264
+ if (!integrationHealth.healthy) {
265
+ result.warnings.push(...integrationHealth.warnings);
266
+ }
267
+ } catch (error) {
268
+ result.success = false;
269
+ result.errors.push(`Health diagnostics failed: ${error.message}`);
270
+ }
271
+
272
+ return result;
273
+ }
274
+
275
+ // Helper methods
276
+
277
+ async checkSingleModeAvailability(mode) {
278
+ try {
279
+ // Check if mode exists in .roomodes
280
+ const roomodesPath = `${this.workingDir}/.roomodes`;
281
+ const content = await fs.readFile(roomodesPath, 'utf8');
282
+ const config = JSON.parse(content);
283
+
284
+ return !!(config.modes && config.modes[mode]);
285
+ } catch {
286
+ return false;
287
+ }
288
+ }
289
+
290
+ async checkTemplateDirectory(dirPath) {
291
+ const result = {
292
+ found: [],
293
+ missing: [],
294
+ corrupted: [],
295
+ };
296
+
297
+ try {
298
+ for await (const entry of Deno.readDir(dirPath)) {
299
+ if (entry.isFile) {
300
+ const filePath = `${dirPath}/${entry.name}`;
301
+
302
+ try {
303
+ const stat = await Deno.stat(filePath);
304
+ if (stat.size === 0) {
305
+ result.corrupted.push(entry.name);
306
+ } else {
307
+ result.found.push(entry.name);
308
+ }
309
+ } catch {
310
+ result.corrupted.push(entry.name);
311
+ }
312
+ }
313
+ }
314
+ } catch {
315
+ // Directory not accessible
316
+ }
317
+
318
+ return result;
319
+ }
320
+
321
+ async checkRoomodesConsistency() {
322
+ const result = {
323
+ consistent: true,
324
+ issues: [],
325
+ };
326
+
327
+ try {
328
+ // Compare .roomodes with slash commands
329
+ const roomodesPath = `${this.workingDir}/.roomodes`;
330
+ const content = await fs.readFile(roomodesPath, 'utf8');
331
+ const config = JSON.parse(content);
332
+
333
+ if (config.modes) {
334
+ const commandsDir = `${this.workingDir}/.claude/commands`;
335
+
336
+ try {
337
+ const commandFiles = [];
338
+ for await (const entry of Deno.readDir(commandsDir)) {
339
+ if (entry.isFile && entry.name.endsWith('.js')) {
340
+ commandFiles.push(entry.name.replace('.js', ''));
341
+ }
342
+ }
343
+
344
+ const modeNames = Object.keys(config.modes);
345
+ for (const mode of modeNames) {
346
+ if (!commandFiles.some((cmd) => cmd.includes(mode))) {
347
+ result.consistent = false;
348
+ result.issues.push(`Mode ${mode} has no corresponding command`);
349
+ }
350
+ }
351
+ } catch {
352
+ result.consistent = false;
353
+ result.issues.push('Cannot access commands directory');
354
+ }
355
+ }
356
+ } catch {
357
+ result.consistent = false;
358
+ result.issues.push('Cannot read .roomodes file');
359
+ }
360
+
361
+ return result;
362
+ }
363
+
364
+ async checkClaudeConfigConsistency() {
365
+ const result = {
366
+ consistent: true,
367
+ issues: [],
368
+ };
369
+
370
+ try {
371
+ const claudePath = `${this.workingDir}/CLAUDE.md`;
372
+ const content = await fs.readFile(claudePath, 'utf8');
373
+
374
+ // Check if mentioned commands exist
375
+ const mentionedCommands = ['claude-flow sparc', 'npm run build', 'npm run test'];
376
+
377
+ for (const command of mentionedCommands) {
378
+ if (content.includes(command)) {
379
+ // Check if the command is actually available
380
+ const parts = command.split(' ');
381
+ if (parts[0] === 'claude-flow') {
382
+ const executablePath = `${this.workingDir}/claude-flow`;
383
+ try {
384
+ await Deno.stat(executablePath);
385
+ } catch {
386
+ result.consistent = false;
387
+ result.issues.push(`Command ${command} mentioned but executable not found`);
388
+ }
389
+ }
390
+ }
391
+ }
392
+ } catch {
393
+ result.consistent = false;
394
+ result.issues.push('Cannot read CLAUDE.md');
395
+ }
396
+
397
+ return result;
398
+ }
399
+
400
+ async checkMemoryConsistency() {
401
+ const result = {
402
+ consistent: true,
403
+ issues: [],
404
+ };
405
+
406
+ try {
407
+ // Check if memory structure matches documentation
408
+ const memoryDataPath = `${this.workingDir}/memory/claude-flow-data.json`;
409
+ const data = JSON.parse(await fs.readFile(memoryDataPath, 'utf8'));
410
+
411
+ // Basic structure validation
412
+ if (!data.agents || !data.tasks) {
413
+ result.consistent = false;
414
+ result.issues.push('Memory data structure incomplete');
415
+ }
416
+
417
+ // Check directory structure
418
+ const expectedDirs = ['agents', 'sessions'];
419
+ for (const dir of expectedDirs) {
420
+ try {
421
+ await Deno.stat(`${this.workingDir}/memory/${dir}`);
422
+ } catch {
423
+ result.consistent = false;
424
+ result.issues.push(`Memory directory missing: ${dir}`);
425
+ }
426
+ }
427
+ } catch {
428
+ result.consistent = false;
429
+ result.issues.push('Cannot validate memory structure');
430
+ }
431
+
432
+ return result;
433
+ }
434
+
435
+ async checkDiskSpace() {
436
+ const result = {
437
+ adequate: true,
438
+ available: 0,
439
+ used: 0,
440
+ };
441
+
442
+ try {
443
+ const command = new Deno.Command('df', {
444
+ args: ['-k', this.workingDir],
445
+ stdout: 'piped',
446
+ });
447
+
448
+ const { stdout, success } = await command.output();
449
+
450
+ if (success) {
451
+ const output = new TextDecoder().decode(stdout);
452
+ const lines = output.trim().split('\n');
453
+
454
+ if (lines.length >= 2) {
455
+ const parts = lines[1].split(/\s+/);
456
+ if (parts.length >= 4) {
457
+ result.available = parseInt(parts[3]) / 1024; // MB
458
+ result.used = parseInt(parts[2]) / 1024; // MB
459
+ result.adequate = result.available > 100; // At least 100MB
460
+ }
461
+ }
462
+ }
463
+ } catch {
464
+ // Can't check - assume adequate
465
+ result.adequate = true;
466
+ }
467
+
468
+ return result;
469
+ }
470
+
471
+ async checkMemoryUsage() {
472
+ const result = {
473
+ adequate: true,
474
+ available: 0,
475
+ used: 0,
476
+ };
477
+
478
+ try {
479
+ // This is a simplified check - could be enhanced
480
+ const command = new Deno.Command('free', {
481
+ args: ['-m'],
482
+ stdout: 'piped',
483
+ });
484
+
485
+ const { stdout, success } = await command.output();
486
+
487
+ if (success) {
488
+ const output = new TextDecoder().decode(stdout);
489
+ const lines = output.trim().split('\n');
490
+
491
+ for (const line of lines) {
492
+ if (line.startsWith('Mem:')) {
493
+ const parts = line.split(/\s+/);
494
+ if (parts.length >= 3) {
495
+ result.available = parseInt(parts[6] || parts[3]); // Available
496
+ result.used = parseInt(parts[2]); // Used
497
+ result.adequate = result.available > 100; // At least 100MB
498
+ }
499
+ break;
500
+ }
501
+ }
502
+ }
503
+ } catch {
504
+ // Can't check - assume adequate
505
+ result.adequate = true;
506
+ }
507
+
508
+ return result;
509
+ }
510
+
511
+ async checkFileDescriptors() {
512
+ const result = {
513
+ adequate: true,
514
+ open: 0,
515
+ limit: 0,
516
+ };
517
+
518
+ try {
519
+ // Check current process file descriptors
520
+ const command = new Deno.Command('sh', {
521
+ args: ['-c', 'lsof -p $$ | wc -l'],
522
+ stdout: 'piped',
523
+ });
524
+
525
+ const { stdout, success } = await command.output();
526
+
527
+ if (success) {
528
+ const count = parseInt(new TextDecoder().decode(stdout).trim());
529
+ result.open = count;
530
+ result.adequate = count < 100; // Arbitrary threshold
531
+ }
532
+ } catch {
533
+ // Can't check - assume adequate
534
+ result.adequate = true;
535
+ }
536
+
537
+ return result;
538
+ }
539
+
540
+ async checkProcessLimits() {
541
+ const result = {
542
+ adequate: true,
543
+ limits: {},
544
+ };
545
+
546
+ try {
547
+ const command = new Deno.Command('ulimit', {
548
+ args: ['-a'],
549
+ stdout: 'piped',
550
+ });
551
+
552
+ const { stdout, success } = await command.output();
553
+
554
+ if (success) {
555
+ const output = new TextDecoder().decode(stdout);
556
+ // Parse ulimit output for important limits
557
+ result.adequate = !output.includes('0'); // Very basic check
558
+ }
559
+ } catch {
560
+ // Can't check - assume adequate
561
+ result.adequate = true;
562
+ }
563
+
564
+ return result;
565
+ }
566
+
567
+ async checkFileSystemHealth() {
568
+ return {
569
+ healthy: true,
570
+ errors: [],
571
+ readWrite: true,
572
+ permissions: true,
573
+ };
574
+ }
575
+
576
+ async checkProcessHealth() {
577
+ return {
578
+ healthy: true,
579
+ warnings: [],
580
+ processes: [],
581
+ };
582
+ }
583
+
584
+ async checkNetworkHealth() {
585
+ return {
586
+ healthy: true,
587
+ warnings: [],
588
+ connectivity: true,
589
+ };
590
+ }
591
+
592
+ async checkIntegrationHealth() {
593
+ return {
594
+ healthy: true,
595
+ warnings: [],
596
+ integrations: {},
597
+ };
598
+ }
599
+ }