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,387 @@
1
+ import { promises as fs } from 'fs';
2
+ // mode-validator.js - SPARC mode functionality testing
3
+
4
+ export class ModeValidator {
5
+ constructor(workingDir) {
6
+ this.workingDir = workingDir;
7
+ }
8
+
9
+ /**
10
+ * Test all SPARC modes for basic functionality
11
+ */
12
+ async testAllModes() {
13
+ const result = {
14
+ success: true,
15
+ errors: [],
16
+ warnings: [],
17
+ modes: {},
18
+ };
19
+
20
+ try {
21
+ // First, check if SPARC is initialized
22
+ const sparcInitialized = await this.checkSparcInitialization();
23
+ if (!sparcInitialized.initialized) {
24
+ result.warnings.push('SPARC not initialized - mode testing skipped');
25
+ return result;
26
+ }
27
+
28
+ // Get available modes
29
+ const availableModes = await this.getAvailableModes();
30
+ if (availableModes.length === 0) {
31
+ result.warnings.push('No SPARC modes found for testing');
32
+ return result;
33
+ }
34
+
35
+ // Test each mode
36
+ for (const mode of availableModes) {
37
+ const modeTest = await this.testMode(mode);
38
+ result.modes[mode] = modeTest;
39
+
40
+ if (!modeTest.success) {
41
+ result.success = false;
42
+ result.errors.push(`Mode ${mode} failed testing: ${modeTest.error}`);
43
+ }
44
+ }
45
+ } catch (error) {
46
+ result.success = false;
47
+ result.errors.push(`Mode testing failed: ${error.message}`);
48
+ }
49
+
50
+ return result;
51
+ }
52
+
53
+ /**
54
+ * Test a specific SPARC mode
55
+ */
56
+ async testMode(modeName) {
57
+ const result = {
58
+ success: true,
59
+ error: null,
60
+ checks: {
61
+ accessible: false,
62
+ configValid: false,
63
+ executable: false,
64
+ },
65
+ };
66
+
67
+ try {
68
+ // Test 1: Check if mode is accessible via CLI
69
+ const accessTest = await this.testModeAccess(modeName);
70
+ result.checks.accessible = accessTest.success;
71
+ if (!accessTest.success) {
72
+ result.success = false;
73
+ result.error = accessTest.error;
74
+ return result;
75
+ }
76
+
77
+ // Test 2: Validate mode configuration
78
+ const configTest = await this.testModeConfig(modeName);
79
+ result.checks.configValid = configTest.success;
80
+ if (!configTest.success) {
81
+ result.success = false;
82
+ result.error = configTest.error;
83
+ return result;
84
+ }
85
+
86
+ // Test 3: Test mode execution (dry run)
87
+ const execTest = await this.testModeExecution(modeName);
88
+ result.checks.executable = execTest.success;
89
+ if (!execTest.success) {
90
+ result.success = false;
91
+ result.error = execTest.error;
92
+ return result;
93
+ }
94
+ } catch (error) {
95
+ result.success = false;
96
+ result.error = error.message;
97
+ }
98
+
99
+ return result;
100
+ }
101
+
102
+ /**
103
+ * Check if SPARC is properly initialized
104
+ */
105
+ async checkSparcInitialization() {
106
+ const result = {
107
+ initialized: false,
108
+ hasRoomodes: false,
109
+ hasExecutable: false,
110
+ error: null,
111
+ };
112
+
113
+ try {
114
+ // Check for .roomodes file
115
+ try {
116
+ const stat = await Deno.stat(`${this.workingDir}/.roomodes`);
117
+ result.hasRoomodes = stat.isFile;
118
+ } catch {
119
+ result.error = '.roomodes file not found';
120
+ }
121
+
122
+ // Check for claude-flow executable
123
+ try {
124
+ const stat = await Deno.stat(`${this.workingDir}/claude-flow`);
125
+ result.hasExecutable = stat.isFile;
126
+ } catch {
127
+ result.error = 'claude-flow executable not found';
128
+ }
129
+
130
+ result.initialized = result.hasRoomodes && result.hasExecutable;
131
+ } catch (error) {
132
+ result.error = error.message;
133
+ }
134
+
135
+ return result;
136
+ }
137
+
138
+ /**
139
+ * Get list of available SPARC modes
140
+ */
141
+ async getAvailableModes() {
142
+ const modes = [];
143
+
144
+ try {
145
+ // Try to get modes from .roomodes
146
+ const roomodesPath = `${this.workingDir}/.roomodes`;
147
+ const content = await fs.readFile(roomodesPath, 'utf8');
148
+ const config = JSON.parse(content);
149
+
150
+ if (config.modes && typeof config.modes === 'object') {
151
+ modes.push(...Object.keys(config.modes));
152
+ }
153
+ } catch (error) {
154
+ // Fallback to common modes
155
+ modes.push(
156
+ 'architect',
157
+ 'code',
158
+ 'tdd',
159
+ 'spec-pseudocode',
160
+ 'integration',
161
+ 'debug',
162
+ 'docs-writer',
163
+ );
164
+ }
165
+
166
+ return modes;
167
+ }
168
+
169
+ /**
170
+ * Test if a mode is accessible via CLI
171
+ */
172
+ async testModeAccess(modeName) {
173
+ const result = {
174
+ success: false,
175
+ error: null,
176
+ };
177
+
178
+ try {
179
+ // Test with sparc info command
180
+ const command = new Deno.Command('./claude-flow', {
181
+ args: ['sparc', 'info', modeName],
182
+ cwd: this.workingDir,
183
+ stdout: 'piped',
184
+ stderr: 'piped',
185
+ });
186
+
187
+ const { success, stdout, stderr } = await command.output();
188
+
189
+ if (success) {
190
+ result.success = true;
191
+ } else {
192
+ const errorOutput = new TextDecoder().decode(stderr);
193
+ result.error = `Mode not accessible: ${errorOutput}`;
194
+ }
195
+ } catch (error) {
196
+ result.error = `Failed to test mode access: ${error.message}`;
197
+ }
198
+
199
+ return result;
200
+ }
201
+
202
+ /**
203
+ * Test mode configuration validity
204
+ */
205
+ async testModeConfig(modeName) {
206
+ const result = {
207
+ success: false,
208
+ error: null,
209
+ };
210
+
211
+ try {
212
+ // Read .roomodes and validate mode config
213
+ const roomodesPath = `${this.workingDir}/.roomodes`;
214
+ const content = await fs.readFile(roomodesPath, 'utf8');
215
+ const config = JSON.parse(content);
216
+
217
+ if (!config.modes || !config.modes[modeName]) {
218
+ result.error = `Mode ${modeName} not found in configuration`;
219
+ return result;
220
+ }
221
+
222
+ const modeConfig = config.modes[modeName];
223
+
224
+ // Basic validation
225
+ if (typeof modeConfig !== 'object') {
226
+ result.error = `Invalid configuration for mode ${modeName}`;
227
+ return result;
228
+ }
229
+
230
+ // Check for required fields
231
+ const requiredFields = ['description'];
232
+ for (const field of requiredFields) {
233
+ if (!modeConfig[field]) {
234
+ result.error = `Mode ${modeName} missing required field: ${field}`;
235
+ return result;
236
+ }
237
+ }
238
+
239
+ result.success = true;
240
+ } catch (error) {
241
+ result.error = `Configuration validation failed: ${error.message}`;
242
+ }
243
+
244
+ return result;
245
+ }
246
+
247
+ /**
248
+ * Test mode execution with a safe dry run
249
+ */
250
+ async testModeExecution(modeName) {
251
+ const result = {
252
+ success: false,
253
+ error: null,
254
+ };
255
+
256
+ try {
257
+ // Test with a safe, non-destructive command
258
+ const command = new Deno.Command('./claude-flow', {
259
+ args: ['sparc', 'run', modeName, 'test validation', '--dry-run'],
260
+ cwd: this.workingDir,
261
+ stdout: 'piped',
262
+ stderr: 'piped',
263
+ });
264
+
265
+ const { success, stdout, stderr } = await command.output();
266
+
267
+ if (success) {
268
+ result.success = true;
269
+ } else {
270
+ // Check if it's just because --dry-run isn't supported
271
+ const errorOutput = new TextDecoder().decode(stderr);
272
+ if (errorOutput.includes('dry-run') || errorOutput.includes('unknown flag')) {
273
+ // Try without dry-run but with a safe test task
274
+ const testCommand = new Deno.Command('./claude-flow', {
275
+ args: ['sparc', 'modes'],
276
+ cwd: this.workingDir,
277
+ stdout: 'piped',
278
+ stderr: 'piped',
279
+ });
280
+
281
+ const testResult = await testCommand.output();
282
+ if (testResult.success) {
283
+ const output = new TextDecoder().decode(testResult.stdout);
284
+ result.success = output.includes(modeName);
285
+ if (!result.success) {
286
+ result.error = `Mode ${modeName} not listed in available modes`;
287
+ }
288
+ } else {
289
+ result.error = `Mode execution test failed: ${errorOutput}`;
290
+ }
291
+ } else {
292
+ result.error = `Mode execution failed: ${errorOutput}`;
293
+ }
294
+ }
295
+ } catch (error) {
296
+ result.error = `Execution test failed: ${error.message}`;
297
+ }
298
+
299
+ return result;
300
+ }
301
+
302
+ /**
303
+ * Test SPARC workflow functionality
304
+ */
305
+ async testWorkflowFunctionality() {
306
+ const result = {
307
+ success: true,
308
+ errors: [],
309
+ warnings: [],
310
+ workflows: {},
311
+ };
312
+
313
+ try {
314
+ // Check for workflow files
315
+ const workflowDir = `${this.workingDir}/.roo/workflows`;
316
+
317
+ try {
318
+ const entries = [];
319
+ for await (const entry of Deno.readDir(workflowDir)) {
320
+ if (entry.isFile && entry.name.endsWith('.json')) {
321
+ entries.push(entry.name);
322
+ }
323
+ }
324
+
325
+ // Test each workflow file
326
+ for (const workflowFile of entries) {
327
+ const workflowTest = await this.testWorkflowFile(workflowFile);
328
+ result.workflows[workflowFile] = workflowTest;
329
+
330
+ if (!workflowTest.success) {
331
+ result.warnings.push(`Workflow ${workflowFile} has issues: ${workflowTest.error}`);
332
+ }
333
+ }
334
+
335
+ if (entries.length === 0) {
336
+ result.warnings.push('No workflow files found');
337
+ }
338
+ } catch {
339
+ result.warnings.push('Workflow directory not accessible');
340
+ }
341
+ } catch (error) {
342
+ result.errors.push(`Workflow testing failed: ${error.message}`);
343
+ }
344
+
345
+ return result;
346
+ }
347
+
348
+ /**
349
+ * Test a specific workflow file
350
+ */
351
+ async testWorkflowFile(filename) {
352
+ const result = {
353
+ success: true,
354
+ error: null,
355
+ };
356
+
357
+ try {
358
+ const workflowPath = `${this.workingDir}/.roo/workflows/${filename}`;
359
+ const content = await fs.readFile(workflowPath, 'utf8');
360
+
361
+ // Parse JSON
362
+ const workflow = JSON.parse(content);
363
+
364
+ // Basic validation
365
+ if (typeof workflow !== 'object' || workflow === null) {
366
+ result.success = false;
367
+ result.error = 'Workflow must be a JSON object';
368
+ return result;
369
+ }
370
+
371
+ // Check for recommended fields
372
+ const recommendedFields = ['name', 'description', 'steps'];
373
+ for (const field of recommendedFields) {
374
+ if (!(field in workflow)) {
375
+ result.success = false;
376
+ result.error = `Missing recommended field: ${field}`;
377
+ return result;
378
+ }
379
+ }
380
+ } catch (error) {
381
+ result.success = false;
382
+ result.error = `Workflow validation failed: ${error.message}`;
383
+ }
384
+
385
+ return result;
386
+ }
387
+ }