claude-flow-novice 2.0.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/dist/src/cli/commands/guidance.js +487 -668
  2. package/dist/src/cli/commands/index-validate.js +18 -29
  3. package/dist/src/cli/commands/mcp-troubleshoot.js +230 -282
  4. package/dist/src/cli/commands/neural-goal-init.js +92 -125
  5. package/dist/src/cli/commands/swarm-exec.js +317 -393
  6. package/dist/src/cli/commands/swarm.js +1 -1
  7. package/dist/src/cli/commands/validate-framework.js +983 -1100
  8. package/dist/src/cli/commands/validate.js +144 -223
  9. package/dist/src/cli/simple-commands/__tests__/agent.test.js +265 -277
  10. package/dist/src/cli/simple-commands/__tests__/memory.test.js +6 -7
  11. package/dist/src/cli/simple-commands/__tests__/swarm.test.js +373 -356
  12. package/dist/src/cli/simple-commands/__tests__/task.test.js +6 -7
  13. package/dist/src/cli/simple-commands/agent.js +157 -193
  14. package/dist/src/cli/simple-commands/analysis.js +336 -446
  15. package/dist/src/cli/simple-commands/automation-executor.js +1095 -1339
  16. package/dist/src/cli/simple-commands/automation.js +481 -469
  17. package/dist/src/cli/simple-commands/batch-manager.js +261 -313
  18. package/dist/src/cli/simple-commands/claude-telemetry.js +241 -267
  19. package/dist/src/cli/simple-commands/claude-track.js +68 -90
  20. package/dist/src/cli/simple-commands/concurrent-display.js +266 -320
  21. package/dist/src/cli/simple-commands/config.js +245 -290
  22. package/dist/src/cli/simple-commands/coordination.js +182 -234
  23. package/dist/src/cli/simple-commands/enhanced-ui-views.js +812 -615
  24. package/dist/src/cli/simple-commands/enhanced-webui-complete.js +922 -981
  25. package/dist/src/cli/simple-commands/fix-hook-variables.js +274 -294
  26. package/dist/src/cli/simple-commands/github/gh-coordinator.js +378 -457
  27. package/dist/src/cli/simple-commands/github/github-api.js +535 -574
  28. package/dist/src/cli/simple-commands/github/init.js +276 -303
  29. package/dist/src/cli/simple-commands/github.js +222 -247
  30. package/dist/src/cli/simple-commands/goal.js +51 -63
  31. package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +208 -278
  32. package/dist/src/cli/simple-commands/hive-mind/communication.js +601 -696
  33. package/dist/src/cli/simple-commands/hive-mind/core.js +907 -979
  34. package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +406 -655
  35. package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1125 -1245
  36. package/dist/src/cli/simple-commands/hive-mind/memory.js +854 -1090
  37. package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +459 -574
  38. package/dist/src/cli/simple-commands/hive-mind/performance-test.js +263 -347
  39. package/dist/src/cli/simple-commands/hive-mind/queen.js +727 -768
  40. package/dist/src/cli/simple-commands/hive-mind/session-manager.js +745 -1049
  41. package/dist/src/cli/simple-commands/hive-mind-optimize.js +227 -283
  42. package/dist/src/cli/simple-commands/hive-mind-wizard.js +174 -217
  43. package/dist/src/cli/simple-commands/hive-mind.js +1842 -2283
  44. package/dist/src/cli/simple-commands/hive.js +90 -79
  45. package/dist/src/cli/simple-commands/hook-safety.js +431 -521
  46. package/dist/src/cli/simple-commands/hooks/session-start-soul.js +203 -254
  47. package/dist/src/cli/simple-commands/hooks.js +1064 -1204
  48. package/dist/src/cli/simple-commands/init/agent-copier.js +294 -319
  49. package/dist/src/cli/simple-commands/init/batch-init.js +496 -562
  50. package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +13 -19
  51. package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +13 -19
  52. package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +61 -88
  53. package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +125 -150
  54. package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +42 -49
  55. package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +43 -61
  56. package/dist/src/cli/simple-commands/init/copy-revised-templates.js +141 -147
  57. package/dist/src/cli/simple-commands/init/executable-wrapper.js +31 -44
  58. package/dist/src/cli/simple-commands/init/gitignore-updater.js +64 -90
  59. package/dist/src/cli/simple-commands/init/help.js +104 -107
  60. package/dist/src/cli/simple-commands/init/hive-mind-init.js +509 -528
  61. package/dist/src/cli/simple-commands/init/index.js +1510 -1759
  62. package/dist/src/cli/simple-commands/init/performance-monitor.js +234 -317
  63. package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +441 -504
  64. package/dist/src/cli/simple-commands/init/rollback/index.js +289 -364
  65. package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +652 -728
  66. package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +416 -481
  67. package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +369 -448
  68. package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +1 -2
  69. package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +122 -99
  70. package/dist/src/cli/simple-commands/init/sparc/workflows.js +32 -37
  71. package/dist/src/cli/simple-commands/init/sparc-structure.js +55 -62
  72. package/dist/src/cli/simple-commands/init/template-copier.js +421 -533
  73. package/dist/src/cli/simple-commands/init/templates/coordination-md.js +3 -6
  74. package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +344 -318
  75. package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +173 -218
  76. package/dist/src/cli/simple-commands/init/templates/github-safe.js +65 -75
  77. package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +3 -6
  78. package/dist/src/cli/simple-commands/init/templates/readme-files.js +2 -4
  79. package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +187 -230
  80. package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +53 -80
  81. package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +101 -85
  82. package/dist/src/cli/simple-commands/init/validation/config-validator.js +283 -330
  83. package/dist/src/cli/simple-commands/init/validation/health-checker.js +495 -561
  84. package/dist/src/cli/simple-commands/init/validation/index.js +302 -358
  85. package/dist/src/cli/simple-commands/init/validation/mode-validator.js +308 -359
  86. package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +389 -366
  87. package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +270 -268
  88. package/dist/src/cli/simple-commands/init/validation/test-runner.js +427 -447
  89. package/dist/src/cli/simple-commands/init.js +1 -2
  90. package/dist/src/cli/simple-commands/mcp-health.js +131 -158
  91. package/dist/src/cli/simple-commands/mcp-integration-layer.js +533 -634
  92. package/dist/src/cli/simple-commands/mcp.js +345 -400
  93. package/dist/src/cli/simple-commands/memory-consolidation.js +426 -537
  94. package/dist/src/cli/simple-commands/memory.js +247 -311
  95. package/dist/src/cli/simple-commands/migrate-hooks.js +39 -46
  96. package/dist/src/cli/simple-commands/monitor.js +294 -363
  97. package/dist/src/cli/simple-commands/neural.js +51 -65
  98. package/dist/src/cli/simple-commands/pair-autofix-only.js +538 -662
  99. package/dist/src/cli/simple-commands/pair-basic.js +528 -656
  100. package/dist/src/cli/simple-commands/pair-old.js +430 -543
  101. package/dist/src/cli/simple-commands/pair-working.js +615 -751
  102. package/dist/src/cli/simple-commands/pair.js +615 -751
  103. package/dist/src/cli/simple-commands/performance-hooks.js +83 -111
  104. package/dist/src/cli/simple-commands/performance-metrics.js +348 -433
  105. package/dist/src/cli/simple-commands/process-ui-enhanced.js +708 -787
  106. package/dist/src/cli/simple-commands/process-ui.js +230 -254
  107. package/dist/src/cli/simple-commands/realtime-update-system.js +525 -611
  108. package/dist/src/cli/simple-commands/sparc/architecture.js +1704 -1530
  109. package/dist/src/cli/simple-commands/sparc/commands.js +438 -516
  110. package/dist/src/cli/simple-commands/sparc/completion.js +1224 -1481
  111. package/dist/src/cli/simple-commands/sparc/coordinator.js +913 -978
  112. package/dist/src/cli/simple-commands/sparc/index.js +241 -298
  113. package/dist/src/cli/simple-commands/sparc/phase-base.js +314 -390
  114. package/dist/src/cli/simple-commands/sparc/pseudocode.js +965 -869
  115. package/dist/src/cli/simple-commands/sparc/refinement.js +980 -1273
  116. package/dist/src/cli/simple-commands/sparc/specification.js +559 -645
  117. package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
  118. package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
  119. package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
  120. package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
  121. package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
  122. package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
  123. package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
  124. package/dist/src/cli/simple-commands/sparc-modes/index.js +47 -55
  125. package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
  126. package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
  127. package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
  128. package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
  129. package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
  130. package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
  131. package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
  132. package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
  133. package/dist/src/cli/simple-commands/sparc-modes/swarm.js +101 -87
  134. package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
  135. package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
  136. package/dist/src/cli/simple-commands/sparc.js +465 -493
  137. package/dist/src/cli/simple-commands/start-ui.js +108 -132
  138. package/dist/src/cli/simple-commands/start-wrapper.js +240 -268
  139. package/dist/src/cli/simple-commands/start.js +1 -1
  140. package/dist/src/cli/simple-commands/status.js +254 -275
  141. package/dist/src/cli/simple-commands/stream-chain-clean.js +128 -171
  142. package/dist/src/cli/simple-commands/stream-chain-fixed.js +61 -82
  143. package/dist/src/cli/simple-commands/stream-chain-real.js +267 -331
  144. package/dist/src/cli/simple-commands/stream-chain-working.js +211 -263
  145. package/dist/src/cli/simple-commands/stream-chain.js +260 -318
  146. package/dist/src/cli/simple-commands/stream-processor.js +290 -315
  147. package/dist/src/cli/simple-commands/swarm-executor.js +189 -222
  148. package/dist/src/cli/simple-commands/swarm-metrics-integration.js +208 -300
  149. package/dist/src/cli/simple-commands/swarm-ui.js +623 -703
  150. package/dist/src/cli/simple-commands/swarm-webui-integration.js +258 -286
  151. package/dist/src/cli/simple-commands/swarm.js +887 -1082
  152. package/dist/src/cli/simple-commands/task.js +161 -206
  153. package/dist/src/cli/simple-commands/timestamp-fix.js +59 -89
  154. package/dist/src/cli/simple-commands/token-tracker.js +258 -316
  155. package/dist/src/cli/simple-commands/tool-execution-framework.js +433 -519
  156. package/dist/src/cli/simple-commands/train-and-stream.js +275 -331
  157. package/dist/src/cli/simple-commands/training-pipeline.js +619 -725
  158. package/dist/src/cli/simple-commands/training.js +170 -227
  159. package/dist/src/cli/simple-commands/verification-hooks.js +261 -284
  160. package/dist/src/cli/simple-commands/verification-integration.js +389 -417
  161. package/dist/src/cli/simple-commands/verification-training-integration.js +486 -606
  162. package/dist/src/cli/simple-commands/verification.js +493 -513
  163. package/dist/src/cli/simple-commands/web-server.js +766 -836
  164. package/dist/src/cli/simple-commands/webui-validator.js +106 -124
  165. package/dist/src/coordination/event-bus/demo-wasm-integration.js +212 -251
  166. package/dist/src/coordination/event-bus/qe-event-bus.js +608 -748
  167. package/dist/src/coordination/event-bus/qe-event-bus.test.js +379 -454
  168. package/dist/src/coordination/iteration-tracker.js +363 -454
  169. package/dist/src/enterprise/analytics-manager.js +1135 -0
  170. package/dist/src/enterprise/audit-manager.js +1115 -0
  171. package/dist/src/enterprise/cloud-manager.js +891 -0
  172. package/dist/src/enterprise/deployment-manager.js +966 -0
  173. package/dist/src/enterprise/index.js +6 -0
  174. package/dist/src/enterprise/project-manager.js +584 -0
  175. package/dist/src/enterprise/security-manager.js +991 -0
  176. package/dist/src/index.js +1 -1
  177. package/dist/src/mcp/DEPRECATED.js +46 -60
  178. package/dist/src/mcp/fixes/mcp-error-fixes.js +115 -134
  179. package/dist/src/mcp/implementations/agent-tracker.js +114 -128
  180. package/dist/src/mcp/implementations/daa-tools.js +292 -350
  181. package/dist/src/mcp/implementations/workflow-tools.js +329 -361
  182. package/dist/src/mcp/mcp-config-manager.js +1183 -1331
  183. package/dist/src/mcp/mcp-server-novice-simplified.js +11 -17
  184. package/dist/src/mcp/mcp-server-novice.js +11 -17
  185. package/dist/src/mcp/mcp-server-sdk.js +11 -17
  186. package/dist/src/mcp/mcp-server.js +1620 -1484
  187. package/dist/src/mcp/ruv-swarm-wrapper.js +209 -239
  188. package/dist/src/memory/advanced-serializer.js +609 -589
  189. package/dist/src/memory/enhanced-examples.js +220 -305
  190. package/dist/src/memory/enhanced-memory.js +295 -336
  191. package/dist/src/memory/enhanced-session-serializer.js +408 -492
  192. package/dist/src/memory/fallback-memory-system.js +900 -1021
  193. package/dist/src/memory/fallback-store.js +93 -131
  194. package/dist/src/memory/high-performance-serialization.js +592 -730
  195. package/dist/src/memory/in-memory-store.js +161 -213
  196. package/dist/src/memory/index.js +123 -157
  197. package/dist/src/memory/lock-free-structures.js +578 -764
  198. package/dist/src/memory/memory-mapped-persistence.js +585 -766
  199. package/dist/src/memory/memory-pressure-manager.js +569 -707
  200. package/dist/src/memory/migration.js +358 -445
  201. package/dist/src/memory/shared-memory.js +641 -768
  202. package/dist/src/memory/sqlite-store.js +245 -325
  203. package/dist/src/memory/sqlite-wrapper.js +122 -151
  204. package/dist/src/memory/swarm-memory.js +470 -603
  205. package/dist/src/memory/test-example.js +126 -134
  206. package/dist/src/memory/ultra-fast-memory-store.js +622 -821
  207. package/dist/src/memory/unified-memory-manager.js +356 -437
  208. package/dist/src/migration/index.js +92 -0
  209. package/dist/src/migration/logger.js +121 -0
  210. package/dist/src/migration/migration-analyzer.js +268 -0
  211. package/dist/src/migration/migration-runner.js +522 -0
  212. package/dist/src/migration/migration-validator.js +285 -0
  213. package/dist/src/migration/progress-reporter.js +150 -0
  214. package/dist/src/migration/rollback-manager.js +321 -0
  215. package/dist/src/migration/tests/migration-system.test.js +7 -0
  216. package/dist/src/migration/types.js +3 -0
  217. package/dist/src/swarm/CodeRefactoringSwarm.js +777 -952
  218. package/dist/src/swarm/__tests__/integration.test.js +227 -0
  219. package/dist/src/swarm/__tests__/prompt-copier.test.js +344 -0
  220. package/dist/src/swarm/advanced-orchestrator.js +1095 -0
  221. package/dist/src/swarm/claude-code-interface.js +961 -0
  222. package/dist/src/swarm/claude-flow-executor.js +229 -0
  223. package/dist/src/swarm/consensus-coordinator.js +475 -0
  224. package/dist/src/swarm/coordinator.js +2993 -0
  225. package/dist/src/swarm/direct-executor.js +1180 -0
  226. package/dist/src/swarm/error-recovery/advanced-error-detection.js +691 -0
  227. package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +998 -0
  228. package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +1197 -0
  229. package/dist/src/swarm/error-recovery/recovery-monitoring.js +772 -0
  230. package/dist/src/swarm/error-recovery/resilience-architecture.js +714 -0
  231. package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +1319 -0
  232. package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +808 -0
  233. package/dist/src/swarm/executor-v2.js +322 -0
  234. package/dist/src/swarm/executor.js +815 -0
  235. package/dist/src/swarm/hive-mind-integration.js +703 -0
  236. package/dist/src/swarm/index.js +41 -0
  237. package/dist/src/swarm/json-output-aggregator.js +267 -0
  238. package/dist/src/swarm/large-scale-coordinator.js +542 -0
  239. package/dist/src/swarm/mcp-integration-wrapper.js +628 -0
  240. package/dist/src/swarm/memory.js +1117 -0
  241. package/dist/src/swarm/optimizations/__tests__/optimization.test.js +348 -0
  242. package/dist/src/swarm/optimizations/async-file-manager.js +285 -0
  243. package/dist/src/swarm/optimizations/circular-buffer.js +162 -0
  244. package/dist/src/swarm/optimizations/connection-pool.js +244 -0
  245. package/dist/src/swarm/optimizations/index.js +28 -0
  246. package/dist/src/swarm/optimizations/optimized-executor.js +320 -0
  247. package/dist/src/swarm/optimizations/ttl-map.js +234 -0
  248. package/dist/src/swarm/prompt-cli.js +200 -0
  249. package/dist/src/swarm/prompt-copier-enhanced.js +202 -0
  250. package/dist/src/swarm/prompt-copier.js +381 -0
  251. package/dist/src/swarm/prompt-manager.js +295 -0
  252. package/dist/src/swarm/prompt-utils.js +310 -0
  253. package/dist/src/swarm/result-aggregator.js +718 -0
  254. package/dist/src/swarm/sparc-executor.js +1568 -0
  255. package/dist/src/swarm/strategies/auto.js +758 -0
  256. package/dist/src/swarm/strategies/base.js +128 -0
  257. package/dist/src/swarm/strategies/research.js +914 -0
  258. package/dist/src/swarm/strategies/strategy-metrics-patch.js +2 -0
  259. package/dist/src/swarm/types.js +52 -0
  260. package/dist/src/swarm/workers/copy-worker.js +56 -0
  261. package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +332 -400
  262. package/dist/src/utils/github-cli-safe.js +56 -64
  263. package/dist/src/utils/github-cli-safety-wrapper.js +451 -546
  264. package/dist/src/utils/npx-isolated-cache.js +104 -119
  265. package/dist/src/utils/preference-manager.js +622 -652
  266. package/dist/src/utils/timezone-utils.js +86 -105
  267. package/dist/src/validators/epic-config-schema.js +214 -0
  268. package/dist/src/validators/index.js +10 -0
  269. package/dist/src/validators/swarm-init-validator.js +259 -0
  270. package/dist/src/validators/todowrite-batching-validator.js +215 -0
  271. package/dist/src/validators/todowrite-integration.js +187 -0
  272. package/package.json +2 -2
@@ -1,57 +1,50 @@
1
1
  // slash-commands.js - Create Claude Code slash commands
2
-
3
- import { createSparcSlashCommand, createMainSparcCommand } from './sparc-commands.js';
4
- import { createClaudeFlowCommands } from './claude-flow-commands.js';
5
- import { copyTemplates } from '../template-copier.js';
6
- import { promises as fs } from 'fs';
7
- import { join } from 'path';
8
-
2
+ import { createSparcSlashCommand, createMainSparcCommand } from "./sparc-commands.js";
3
+ import { createClaudeFlowCommands } from "./claude-flow-commands.js";
4
+ import { copyTemplates } from "../template-copier.js";
5
+ import { promises as fs } from "fs";
6
+ import { join } from "path";
9
7
  // Create Claude Code slash commands for SPARC modes
10
8
  export async function createClaudeSlashCommands(workingDir) {
11
- try {
12
- console.log('\n📝 Creating Claude Code slash commands...');
13
-
14
- // Use template copier for SPARC slash commands
15
- const slashCommandOptions = {
16
- sparc: true,
17
- force: true,
18
- dryRun: false,
19
- };
20
-
21
- // Check if .roomodes exists for dynamic generation
22
- const roomodesPath = `${workingDir}/.roomodes`;
23
9
  try {
24
- const roomodesContent = await fs.readFile(roomodesPath, 'utf8');
25
- const roomodes = JSON.parse(roomodesContent);
26
-
27
- // Create slash commands for each SPARC mode
28
- for (const mode of roomodes.customModes) {
29
- const commandPath = join(workingDir, '.claude', 'commands', 'sparc', `${mode.slug}.md`);
30
- const commandContent = createSparcSlashCommand(mode);
31
-
32
- await fs.mkdir(join(workingDir, '.claude', 'commands', 'sparc'), { recursive: true });
33
- await fs.writeFile(commandPath, commandContent);
34
- console.log(` ✓ Created slash command: /sparc-${mode.slug}`);
35
- }
36
-
37
- // Create main SPARC command
38
- const mainSparcCommand = createMainSparcCommand(roomodes.customModes);
39
- await fs.writeFile(join(workingDir, '.claude', 'commands', 'sparc.md'), mainSparcCommand);
40
- console.log(' Created main slash command: /sparc');
10
+ console.log('\n📝 Creating Claude Code slash commands...');
11
+ // Use template copier for SPARC slash commands
12
+ const slashCommandOptions = {
13
+ sparc: true,
14
+ force: true,
15
+ dryRun: false
16
+ };
17
+ // Check if .roomodes exists for dynamic generation
18
+ const roomodesPath = `${workingDir}/.roomodes`;
19
+ try {
20
+ const roomodesContent = await fs.readFile(roomodesPath, 'utf8');
21
+ const roomodes = JSON.parse(roomodesContent);
22
+ // Create slash commands for each SPARC mode
23
+ for (const mode of roomodes.customModes){
24
+ const commandPath = join(workingDir, '.claude', 'commands', 'sparc', `${mode.slug}.md`);
25
+ const commandContent = createSparcSlashCommand(mode);
26
+ await fs.mkdir(join(workingDir, '.claude', 'commands', 'sparc'), {
27
+ recursive: true
28
+ });
29
+ await fs.writeFile(commandPath, commandContent);
30
+ console.log(` ✓ Created slash command: /sparc-${mode.slug}`);
31
+ }
32
+ // Create main SPARC command
33
+ const mainSparcCommand = createMainSparcCommand(roomodes.customModes);
34
+ await fs.writeFile(join(workingDir, '.claude', 'commands', 'sparc.md'), mainSparcCommand);
35
+ console.log(' ✓ Created main slash command: /sparc');
36
+ } catch (err) {
37
+ // Fallback to template copier if .roomodes doesn't exist
38
+ console.log(' 🔄 Using template copier for SPARC commands...');
39
+ const copyResults = await copyTemplates(workingDir, slashCommandOptions);
40
+ if (!copyResults.success) {
41
+ console.log(` ⚠️ Template copier failed: ${copyResults.errors.join(', ')}`);
42
+ }
43
+ }
44
+ // Create claude-flow-novice specific commands
45
+ await createClaudeFlowCommands(workingDir);
41
46
  } catch (err) {
42
- // Fallback to template copier if .roomodes doesn't exist
43
- console.log(' 🔄 Using template copier for SPARC commands...');
44
- const copyResults = await copyTemplates(workingDir, slashCommandOptions);
45
-
46
- if (!copyResults.success) {
47
- console.log(` ⚠️ Template copier failed: ${copyResults.errors.join(', ')}`);
48
- }
49
- }
50
-
51
- // Create claude-flow-novice specific commands
52
- await createClaudeFlowCommands(workingDir);
53
- } catch (err) {
54
47
  // Legacy slash command creation - silently skip if it fails
55
48
  // SPARC slash commands are already created successfully
56
- }
49
+ }
57
50
  }
@@ -1,14 +1,9 @@
1
1
  // sparc-commands.js - SPARC-specific slash commands
2
-
3
2
  // Create SPARC mode slash command
4
3
  export function createSparcSlashCommand(mode) {
5
- // Extract the full description without truncation
6
- const fullDescription =
7
- mode.roleDefinition.length > 100
8
- ? `${mode.roleDefinition.substring(0, 97)}...`
9
- : mode.roleDefinition;
10
-
11
- return `---
4
+ // Extract the full description without truncation
5
+ const fullDescription = mode.roleDefinition.length > 100 ? `${mode.roleDefinition.substring(0, 97)}...` : mode.roleDefinition;
6
+ return `---
12
7
  name: sparc-${mode.slug}
13
8
  description: ${mode.name} - ${fullDescription}
14
9
  ---
@@ -22,20 +17,14 @@ ${mode.roleDefinition}
22
17
  ${mode.customInstructions}
23
18
 
24
19
  ## Available Tools
25
- ${
26
- Array.isArray(mode.groups)
27
- ? mode.groups
28
- .map((g) => {
29
- if (typeof g === 'string') {
20
+ ${Array.isArray(mode.groups) ? mode.groups.map((g)=>{
21
+ if (typeof g === 'string') {
30
22
  return `- **${g}**: ${getToolDescription(g)}`;
31
- } else if (Array.isArray(g)) {
23
+ } else if (Array.isArray(g)) {
32
24
  return `- **${g[0]}**: ${g[1]?.description || getToolDescription(g[0])} ${g[1]?.fileRegex ? `(Files matching: ${g[1].fileRegex})` : ''}`;
33
- }
34
- return `- ${JSON.stringify(g)}`;
35
- })
36
- .join('\n')
37
- : 'None'
38
- }
25
+ }
26
+ return `- ${JSON.stringify(g)}`;
27
+ }).join('\n') : 'None'}
39
28
 
40
29
  ## Usage
41
30
 
@@ -102,55 +91,48 @@ npx claude-flow-novice memory query "${mode.slug}" --limit 5
102
91
  \`\`\`
103
92
  `;
104
93
  }
105
-
106
94
  // Helper function to get tool descriptions
107
95
  function getToolDescription(tool) {
108
- const toolDescriptions = {
109
- read: 'File reading and viewing',
110
- edit: 'File modification and creation',
111
- browser: 'Web browsing capabilities',
112
- mcp: 'Model Context Protocol tools',
113
- command: 'Command execution',
114
- };
115
- return toolDescriptions[tool] || 'Tool access';
96
+ const toolDescriptions = {
97
+ read: 'File reading and viewing',
98
+ edit: 'File modification and creation',
99
+ browser: 'Web browsing capabilities',
100
+ mcp: 'Model Context Protocol tools',
101
+ command: 'Command execution'
102
+ };
103
+ return toolDescriptions[tool] || 'Tool access';
116
104
  }
117
-
118
105
  // Helper function to get example tasks
119
106
  function getExampleTask(slug) {
120
- const examples = {
121
- architect: 'design microservices architecture',
122
- code: 'implement REST API endpoints',
123
- tdd: 'create user authentication tests',
124
- debug: 'fix memory leak in service',
125
- 'security-review': 'audit API security',
126
- 'docs-writer': 'create API documentation',
127
- integration: 'connect payment service',
128
- 'post-deployment-monitoring-mode': 'monitor production metrics',
129
- 'refinement-optimization-mode': 'optimize database queries',
130
- devops: 'deploy to AWS Lambda',
131
- 'supabase-admin': 'create user authentication schema',
132
- 'spec-pseudocode': 'define payment flow requirements',
133
- mcp: 'integrate with external API',
134
- swarm: 'build complete feature with tests',
135
- sparc: 'orchestrate authentication system',
136
- ask: 'help me choose the right mode',
137
- tutorial: 'guide me through SPARC methodology',
138
- };
139
- return examples[slug] || 'implement feature';
107
+ const examples = {
108
+ architect: 'design microservices architecture',
109
+ code: 'implement REST API endpoints',
110
+ tdd: 'create user authentication tests',
111
+ debug: 'fix memory leak in service',
112
+ 'security-review': 'audit API security',
113
+ 'docs-writer': 'create API documentation',
114
+ integration: 'connect payment service',
115
+ 'post-deployment-monitoring-mode': 'monitor production metrics',
116
+ 'refinement-optimization-mode': 'optimize database queries',
117
+ devops: 'deploy to AWS Lambda',
118
+ 'supabase-admin': 'create user authentication schema',
119
+ 'spec-pseudocode': 'define payment flow requirements',
120
+ mcp: 'integrate with external API',
121
+ swarm: 'build complete feature with tests',
122
+ sparc: 'orchestrate authentication system',
123
+ ask: 'help me choose the right mode',
124
+ tutorial: 'guide me through SPARC methodology'
125
+ };
126
+ return examples[slug] || 'implement feature';
140
127
  }
141
-
142
128
  // Create main SPARC command
143
129
  export function createMainSparcCommand(modes) {
144
- const modeList = modes.map((m) => `- \`/sparc-${m.slug}\` - ${m.name}`).join('\n');
145
-
146
- // Find the sparc orchestrator mode for its full description
147
- const sparcMode = modes.find((m) => m.slug === 'sparc');
148
- const sparcDescription = sparcMode
149
- ? sparcMode.roleDefinition
150
- : 'SPARC orchestrator for complex workflows';
151
- const sparcInstructions = sparcMode ? sparcMode.customInstructions : '';
152
-
153
- return `---
130
+ const modeList = modes.map((m)=>`- \`/sparc-${m.slug}\` - ${m.name}`).join('\n');
131
+ // Find the sparc orchestrator mode for its full description
132
+ const sparcMode = modes.find((m)=>m.slug === 'sparc');
133
+ const sparcDescription = sparcMode ? sparcMode.roleDefinition : 'SPARC orchestrator for complex workflows';
134
+ const sparcInstructions = sparcMode ? sparcMode.customInstructions : '';
135
+ return `---
154
136
  name: sparc
155
137
  description: Execute SPARC methodology workflows with Claude-Flow
156
138
  ---
@@ -1,175 +1,169 @@
1
1
  // copy-revised-templates.js - Copy the revised template files from repository
2
-
3
- import fs from 'fs';
4
- import path from 'path';
5
- import { fileURLToPath } from 'url';
6
-
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import { fileURLToPath } from "url";
7
5
  const __filename = fileURLToPath(import.meta.url);
8
6
  const __dirname = path.dirname(__filename);
9
-
10
7
  // Source directory for revised templates (repository root .claude/commands)
11
8
  const REPO_TEMPLATES_DIR = path.join(__dirname, '../../../../.claude/commands');
12
-
13
9
  /**
14
10
  * Copy revised template files from repository to target project
15
- */
16
- export async function copyRevisedTemplates(targetDir, options = {}) {
17
- const results = {
18
- success: true,
19
- copiedFiles: [],
20
- skippedFiles: [],
21
- errors: [],
22
- };
23
-
24
- const targetCommandsDir = path.join(targetDir, '.claude/commands');
25
-
26
- try {
27
- // Ensure target directory exists
28
- await fs.promises.mkdir(targetCommandsDir, { recursive: true });
29
-
30
- // Copy all template files recursively
31
- await copyDirectoryRecursive(REPO_TEMPLATES_DIR, targetCommandsDir, options, results);
32
-
33
- // Copy additional .claude files if they exist
34
- const additionalFiles = [
35
- { source: '../config.json', target: '.claude/config.json' },
36
- { source: '../settings.json', target: '.claude/settings.json' },
37
- ];
38
-
39
- for (const file of additionalFiles) {
40
- const sourcePath = path.join(REPO_TEMPLATES_DIR, file.source);
41
- const targetPath = path.join(targetDir, file.target);
42
-
43
- if (fs.existsSync(sourcePath)) {
44
- try {
45
- const targetDirPath = path.dirname(targetPath);
46
- await fs.promises.mkdir(targetDirPath, { recursive: true });
47
-
48
- if (!fs.existsSync(targetPath) || options.force) {
49
- await fs.promises.copyFile(sourcePath, targetPath);
50
- results.copiedFiles.push(file.target);
51
- if (!options.dryRun) {
52
- console.log(` ✓ Copied ${file.target}`);
11
+ */ export async function copyRevisedTemplates(targetDir, options = {}) {
12
+ const results = {
13
+ success: true,
14
+ copiedFiles: [],
15
+ skippedFiles: [],
16
+ errors: []
17
+ };
18
+ const targetCommandsDir = path.join(targetDir, '.claude/commands');
19
+ try {
20
+ // Ensure target directory exists
21
+ await fs.promises.mkdir(targetCommandsDir, {
22
+ recursive: true
23
+ });
24
+ // Copy all template files recursively
25
+ await copyDirectoryRecursive(REPO_TEMPLATES_DIR, targetCommandsDir, options, results);
26
+ // Copy additional .claude files if they exist
27
+ const additionalFiles = [
28
+ {
29
+ source: '../config.json',
30
+ target: '.claude/config.json'
31
+ },
32
+ {
33
+ source: '../settings.json',
34
+ target: '.claude/settings.json'
53
35
  }
54
- } else {
55
- results.skippedFiles.push(file.target);
56
- if (!options.dryRun) {
57
- console.log(` ⏭️ Skipped ${file.target} (already exists)`);
36
+ ];
37
+ for (const file of additionalFiles){
38
+ const sourcePath = path.join(REPO_TEMPLATES_DIR, file.source);
39
+ const targetPath = path.join(targetDir, file.target);
40
+ if (fs.existsSync(sourcePath)) {
41
+ try {
42
+ const targetDirPath = path.dirname(targetPath);
43
+ await fs.promises.mkdir(targetDirPath, {
44
+ recursive: true
45
+ });
46
+ if (!fs.existsSync(targetPath) || options.force) {
47
+ await fs.promises.copyFile(sourcePath, targetPath);
48
+ results.copiedFiles.push(file.target);
49
+ if (!options.dryRun) {
50
+ console.log(` ✓ Copied ${file.target}`);
51
+ }
52
+ } else {
53
+ results.skippedFiles.push(file.target);
54
+ if (!options.dryRun) {
55
+ console.log(` ⏭️ Skipped ${file.target} (already exists)`);
56
+ }
57
+ }
58
+ } catch (err) {
59
+ results.errors.push(`Failed to copy ${file.target}: ${err.message}`);
60
+ }
58
61
  }
59
- }
60
- } catch (err) {
61
- results.errors.push(`Failed to copy ${file.target}: ${err.message}`);
62
62
  }
63
- }
63
+ results.success = results.errors.length === 0;
64
+ } catch (err) {
65
+ results.success = false;
66
+ results.errors.push(`Failed to copy revised templates: ${err.message}`);
64
67
  }
65
-
66
- results.success = results.errors.length === 0;
67
- } catch (err) {
68
- results.success = false;
69
- results.errors.push(`Failed to copy revised templates: ${err.message}`);
70
- }
71
-
72
- return results;
68
+ return results;
73
69
  }
74
-
75
70
  /**
76
71
  * Recursively copy directory contents
77
- */
78
- async function copyDirectoryRecursive(sourceDir, targetDir, options, results) {
79
- try {
80
- const entries = await fs.promises.readdir(sourceDir, { withFileTypes: true });
81
-
82
- for (const entry of entries) {
83
- const sourcePath = path.join(sourceDir, entry.name);
84
- const targetPath = path.join(targetDir, entry.name);
85
-
86
- if (entry.isDirectory()) {
87
- // Create directory and recurse
88
- await fs.promises.mkdir(targetPath, { recursive: true });
89
- await copyDirectoryRecursive(sourcePath, targetPath, options, results);
90
- } else if (entry.isFile() && entry.name.endsWith('.md')) {
91
- // Copy markdown files
92
- try {
93
- if (!fs.existsSync(targetPath) || options.force) {
94
- if (!options.dryRun) {
95
- await fs.promises.copyFile(sourcePath, targetPath);
96
- }
97
- const relativePath = path.relative(targetDir, targetPath);
98
- results.copiedFiles.push(relativePath);
99
- if (!options.dryRun && options.verbose) {
100
- console.log(` ✓ Copied ${relativePath}`);
72
+ */ async function copyDirectoryRecursive(sourceDir, targetDir, options, results) {
73
+ try {
74
+ const entries = await fs.promises.readdir(sourceDir, {
75
+ withFileTypes: true
76
+ });
77
+ for (const entry of entries){
78
+ const sourcePath = path.join(sourceDir, entry.name);
79
+ const targetPath = path.join(targetDir, entry.name);
80
+ if (entry.isDirectory()) {
81
+ // Create directory and recurse
82
+ await fs.promises.mkdir(targetPath, {
83
+ recursive: true
84
+ });
85
+ await copyDirectoryRecursive(sourcePath, targetPath, options, results);
86
+ } else if (entry.isFile() && entry.name.endsWith('.md')) {
87
+ // Copy markdown files
88
+ try {
89
+ if (!fs.existsSync(targetPath) || options.force) {
90
+ if (!options.dryRun) {
91
+ await fs.promises.copyFile(sourcePath, targetPath);
92
+ }
93
+ const relativePath = path.relative(targetDir, targetPath);
94
+ results.copiedFiles.push(relativePath);
95
+ if (!options.dryRun && options.verbose) {
96
+ console.log(` ✓ Copied ${relativePath}`);
97
+ }
98
+ } else {
99
+ const relativePath = path.relative(targetDir, targetPath);
100
+ results.skippedFiles.push(relativePath);
101
+ if (!options.dryRun && options.verbose) {
102
+ console.log(` ⏭️ Skipped ${relativePath} (already exists)`);
103
+ }
104
+ }
105
+ } catch (err) {
106
+ results.errors.push(`Failed to copy ${entry.name}: ${err.message}`);
107
+ }
101
108
  }
102
- } else {
103
- const relativePath = path.relative(targetDir, targetPath);
104
- results.skippedFiles.push(relativePath);
105
- if (!options.dryRun && options.verbose) {
106
- console.log(` ⏭️ Skipped ${relativePath} (already exists)`);
107
- }
108
- }
109
- } catch (err) {
110
- results.errors.push(`Failed to copy ${entry.name}: ${err.message}`);
111
109
  }
112
- }
110
+ } catch (err) {
111
+ results.errors.push(`Failed to read directory ${sourceDir}: ${err.message}`);
113
112
  }
114
- } catch (err) {
115
- results.errors.push(`Failed to read directory ${sourceDir}: ${err.message}`);
116
- }
117
113
  }
118
-
119
114
  /**
120
115
  * Copy only specific categories
121
- */
122
- export async function copyRevisedTemplatesByCategory(targetDir, categories, options = {}) {
123
- const results = {
124
- success: true,
125
- copiedFiles: [],
126
- skippedFiles: [],
127
- errors: [],
128
- };
129
-
130
- for (const category of categories) {
131
- const sourceCategoryDir = path.join(REPO_TEMPLATES_DIR, category);
132
- const targetCategoryDir = path.join(targetDir, '.claude/commands', category);
133
-
134
- if (fs.existsSync(sourceCategoryDir)) {
135
- await fs.promises.mkdir(targetCategoryDir, { recursive: true });
136
- await copyDirectoryRecursive(sourceCategoryDir, targetCategoryDir, options, results);
137
- } else {
138
- results.errors.push(`Category '${category}' not found in templates`);
116
+ */ export async function copyRevisedTemplatesByCategory(targetDir, categories, options = {}) {
117
+ const results = {
118
+ success: true,
119
+ copiedFiles: [],
120
+ skippedFiles: [],
121
+ errors: []
122
+ };
123
+ for (const category of categories){
124
+ const sourceCategoryDir = path.join(REPO_TEMPLATES_DIR, category);
125
+ const targetCategoryDir = path.join(targetDir, '.claude/commands', category);
126
+ if (fs.existsSync(sourceCategoryDir)) {
127
+ await fs.promises.mkdir(targetCategoryDir, {
128
+ recursive: true
129
+ });
130
+ await copyDirectoryRecursive(sourceCategoryDir, targetCategoryDir, options, results);
131
+ } else {
132
+ results.errors.push(`Category '${category}' not found in templates`);
133
+ }
139
134
  }
140
- }
141
-
142
- results.success = results.errors.length === 0;
143
- return results;
135
+ results.success = results.errors.length === 0;
136
+ return results;
144
137
  }
145
-
146
138
  /**
147
139
  * Validate that source templates exist
148
- */
149
- export function validateTemplatesExist() {
150
- if (!fs.existsSync(REPO_TEMPLATES_DIR)) {
151
- return {
152
- valid: false,
153
- error: `Template directory not found: ${REPO_TEMPLATES_DIR}`,
154
- };
155
- }
156
-
157
- const requiredCategories = ['analysis', 'github', 'sparc', 'coordination'];
158
- const missingCategories = [];
159
-
160
- for (const category of requiredCategories) {
161
- const categoryPath = path.join(REPO_TEMPLATES_DIR, category);
162
- if (!fs.existsSync(categoryPath)) {
163
- missingCategories.push(category);
140
+ */ export function validateTemplatesExist() {
141
+ if (!fs.existsSync(REPO_TEMPLATES_DIR)) {
142
+ return {
143
+ valid: false,
144
+ error: `Template directory not found: ${REPO_TEMPLATES_DIR}`
145
+ };
146
+ }
147
+ const requiredCategories = [
148
+ 'analysis',
149
+ 'github',
150
+ 'sparc',
151
+ 'coordination'
152
+ ];
153
+ const missingCategories = [];
154
+ for (const category of requiredCategories){
155
+ const categoryPath = path.join(REPO_TEMPLATES_DIR, category);
156
+ if (!fs.existsSync(categoryPath)) {
157
+ missingCategories.push(category);
158
+ }
159
+ }
160
+ if (missingCategories.length > 0) {
161
+ return {
162
+ valid: false,
163
+ error: `Missing required template categories: ${missingCategories.join(', ')}`
164
+ };
164
165
  }
165
- }
166
-
167
- if (missingCategories.length > 0) {
168
166
  return {
169
- valid: false,
170
- error: `Missing required template categories: ${missingCategories.join(', ')}`,
167
+ valid: true
171
168
  };
172
- }
173
-
174
- return { valid: true };
175
169
  }