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,530 @@
1
+ // sparc.js - SPARC development mode commands
2
+ import { printSuccess, printError, printWarning } from '../utils.js';
3
+ import { promises as fs } from 'fs';
4
+ import { spawn } from 'child_process';
5
+ import { promisify } from 'util';
6
+ import { createSparcPrompt } from './sparc-modes/index.js';
7
+ import { cwd, exit, existsSync } from '../node-compat.js';
8
+ import process from 'process';
9
+
10
+ export async function sparcCommand(subArgs, flags) {
11
+ const sparcCmd = subArgs[0];
12
+
13
+ // Show help if requested or no args
14
+ if (
15
+ flags.help ||
16
+ flags.h ||
17
+ sparcCmd === '--help' ||
18
+ sparcCmd === '-h' ||
19
+ (!sparcCmd && Object.keys(flags).length === 0)
20
+ ) {
21
+ showSparcHelp();
22
+ return;
23
+ }
24
+
25
+ // Merge flags back into subArgs for backward compatibility
26
+ const mergedArgs = [...subArgs];
27
+ for (const [key, value] of Object.entries(flags)) {
28
+ if (key === 'non-interactive' || key === 'n') {
29
+ mergedArgs.push('--non-interactive');
30
+ } else if (key === 'dry-run' || key === 'd') {
31
+ mergedArgs.push('--dry-run');
32
+ } else if (key === 'verbose' || key === 'v') {
33
+ mergedArgs.push('--verbose');
34
+ } else if (key === 'no-permissions') {
35
+ mergedArgs.push('--no-permissions');
36
+ } else if (key === 'enable-permissions') {
37
+ mergedArgs.push('--enable-permissions');
38
+ } else if (key === 'namespace') {
39
+ mergedArgs.push('--namespace', value);
40
+ } else if (key === 'config') {
41
+ mergedArgs.push('--config', value);
42
+ } else if (key === 'interactive' || key === 'i') {
43
+ mergedArgs.push('--interactive');
44
+ }
45
+ }
46
+
47
+ // Check if first arg is a known subcommand
48
+ const knownSubcommands = ['modes', 'info', 'run', 'tdd'];
49
+
50
+ if (!knownSubcommands.includes(sparcCmd)) {
51
+ // If not a known subcommand, treat it as a task description for sparc orchestrator
52
+ // Insert 'run' and 'sparc' to make it: ['run', 'sparc', ...rest of args]
53
+ mergedArgs.unshift('run', 'sparc');
54
+ }
55
+
56
+ // Now process the command
57
+ const actualCmd = mergedArgs[0];
58
+
59
+ switch (actualCmd) {
60
+ case 'modes':
61
+ await listSparcModes(mergedArgs);
62
+ break;
63
+
64
+ case 'info':
65
+ await showModeInfo(mergedArgs);
66
+ break;
67
+
68
+ case 'run':
69
+ await runSparcMode(mergedArgs, flags);
70
+ break;
71
+
72
+ case 'tdd':
73
+ await runTddWorkflow(mergedArgs);
74
+ break;
75
+
76
+ default:
77
+ showSparcHelp();
78
+ }
79
+ }
80
+
81
+ async function listSparcModes(subArgs) {
82
+ try {
83
+ // Get the actual working directory where the command was run from
84
+ const workingDir = process.env.PWD || cwd();
85
+ const configPath = `${workingDir}/.roomodes`;
86
+ let configContent;
87
+ try {
88
+ configContent = await fs.readFile(configPath, 'utf8');
89
+ } catch (error) {
90
+ printError('SPARC configuration file (.roomodes) not found');
91
+ console.log(`Please ensure .roomodes file exists in: ${workingDir}`);
92
+ console.log();
93
+ console.log('To enable SPARC development modes, run:');
94
+ console.log(' npx claude-flow@latest init --sparc');
95
+ console.log();
96
+ console.log('This will create:');
97
+ console.log(' â€ĸ .roomodes file with 17+ SPARC development modes');
98
+ console.log(' â€ĸ .roo/ directory with templates and workflows');
99
+ console.log(' â€ĸ SPARC-enhanced CLAUDE.md configuration');
100
+ return;
101
+ }
102
+
103
+ const config = JSON.parse(configContent);
104
+ const verbose = subArgs.includes('--verbose') || subArgs.includes('-v');
105
+
106
+ printSuccess('Available SPARC Modes:');
107
+ console.log();
108
+
109
+ for (const mode of config.customModes) {
110
+ console.log(`â€ĸ ${mode.name} (${mode.slug})`);
111
+ if (verbose) {
112
+ console.log(` ${mode.roleDefinition}`);
113
+ console.log(` Tools: ${mode.groups.join(', ')}`);
114
+ console.log();
115
+ }
116
+ }
117
+
118
+ if (!verbose) {
119
+ console.log();
120
+ console.log('Use --verbose for detailed descriptions');
121
+ }
122
+ } catch (err) {
123
+ printError(`Failed to list SPARC modes: ${err.message}`);
124
+ }
125
+ }
126
+
127
+ async function showModeInfo(subArgs) {
128
+ const modeSlug = subArgs[1];
129
+ if (!modeSlug) {
130
+ printError('Usage: sparc info <mode-slug>');
131
+ return;
132
+ }
133
+
134
+ try {
135
+ // Get the actual working directory where the command was run from
136
+ const workingDir = process.env.PWD || cwd();
137
+ const configPath = `${workingDir}/.roomodes`;
138
+ let configContent;
139
+ try {
140
+ configContent = await fs.readFile(configPath, 'utf8');
141
+ } catch (error) {
142
+ printError('SPARC configuration file (.roomodes) not found');
143
+ console.log(`Please ensure .roomodes file exists in: ${workingDir}`);
144
+ console.log();
145
+ console.log('To enable SPARC development modes, run:');
146
+ console.log(' npx claude-flow@latest init --sparc');
147
+ return;
148
+ }
149
+ const config = JSON.parse(configContent);
150
+ const mode = config.customModes.find((m) => m.slug === modeSlug);
151
+
152
+ if (!mode) {
153
+ printError(`Mode not found: ${modeSlug}`);
154
+ console.log('Available modes:');
155
+ for (const m of config.customModes) {
156
+ console.log(` ${m.slug} - ${m.name}`);
157
+ }
158
+ return;
159
+ }
160
+
161
+ printSuccess(`SPARC Mode: ${mode.name}`);
162
+ console.log();
163
+ console.log('Role Definition:');
164
+ console.log(mode.roleDefinition);
165
+ console.log();
166
+ console.log('Custom Instructions:');
167
+ console.log(mode.customInstructions);
168
+ console.log();
169
+ console.log('Tool Groups:');
170
+ console.log(mode.groups.join(', '));
171
+ console.log();
172
+ console.log('Source:');
173
+ console.log(mode.source);
174
+ } catch (err) {
175
+ printError(`Failed to show mode info: ${err.message}`);
176
+ }
177
+ }
178
+
179
+ async function runSparcMode(subArgs, flags) {
180
+ const runModeSlug = subArgs[1];
181
+ const taskDescription = subArgs
182
+ .slice(2)
183
+ .filter((arg) => !arg.startsWith('--'))
184
+ .join(' ');
185
+
186
+ if (!runModeSlug || !taskDescription) {
187
+ printError('Usage: sparc run <mode-slug> <task-description>');
188
+ return;
189
+ }
190
+
191
+ try {
192
+ // Get the actual working directory where the command was run from
193
+ const workingDir = process.env.PWD || cwd();
194
+ const configPath = `${workingDir}/.roomodes`;
195
+ let configContent;
196
+ try {
197
+ configContent = await fs.readFile(configPath, 'utf8');
198
+ } catch (error) {
199
+ printError('SPARC configuration file (.roomodes) not found');
200
+ console.log(`Please ensure .roomodes file exists in: ${workingDir}`);
201
+ console.log();
202
+ console.log('To enable SPARC development modes, run:');
203
+ console.log(' npx claude-flow@latest init --sparc');
204
+ return;
205
+ }
206
+ const config = JSON.parse(configContent);
207
+ const mode = config.customModes.find((m) => m.slug === runModeSlug);
208
+
209
+ if (!mode) {
210
+ printError(`Mode not found: ${runModeSlug}`);
211
+ return;
212
+ }
213
+
214
+ // Build enhanced SPARC prompt
215
+ const memoryNamespace = subArgs.includes('--namespace')
216
+ ? subArgs[subArgs.indexOf('--namespace') + 1]
217
+ : mode.slug;
218
+
219
+ const enhancedTask = createSparcPrompt(mode, taskDescription, memoryNamespace);
220
+
221
+ // Build tools based on mode groups
222
+ const tools = buildToolsFromGroups(mode.groups);
223
+ const toolsList = Array.from(tools).join(',');
224
+ const instanceId = `sparc-${runModeSlug}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
225
+
226
+ if (subArgs.includes('--dry-run') || subArgs.includes('-d')) {
227
+ printWarning('DRY RUN - SPARC Mode Configuration:');
228
+ console.log(`Mode: ${mode.name} (${mode.slug})`);
229
+ console.log(`Instance ID: ${instanceId}`);
230
+
231
+ const enablePermissions = subArgs.includes('--enable-permissions');
232
+ if (!enablePermissions) {
233
+ console.log(`Tools: ALL (via --dangerously-skip-permissions)`);
234
+ console.log(`Permissions: Will be auto-skipped`);
235
+ } else {
236
+ console.log(`Tools: ${toolsList}`);
237
+ console.log(`Permissions: Will prompt for actions`);
238
+ }
239
+
240
+ console.log(`Task: ${taskDescription}`);
241
+ console.log();
242
+ console.log('Enhanced prompt preview:');
243
+ console.log(enhancedTask.substring(0, 300) + '...');
244
+ return;
245
+ }
246
+
247
+ printSuccess(`Starting SPARC mode: ${mode.name}`);
248
+ console.log(`📝 Instance ID: ${instanceId}`);
249
+ console.log(`đŸŽ¯ Mode: ${mode.slug}`);
250
+
251
+ const isNonInteractive = subArgs.includes('--non-interactive') || subArgs.includes('-n');
252
+ const enablePermissions = subArgs.includes('--enable-permissions');
253
+
254
+ if (!enablePermissions) {
255
+ console.log(`🔧 Tools: ALL (including MCP and WebSearch via --dangerously-skip-permissions)`);
256
+ console.log(`⚡ Permissions: Auto-skipped (--dangerously-skip-permissions)`);
257
+ } else {
258
+ console.log(`🔧 Tools: ${toolsList}`);
259
+ console.log(`✅ Permissions: Enabled (will prompt for actions)`);
260
+ }
261
+ console.log(`📋 Task: ${taskDescription}`);
262
+
263
+ if (isNonInteractive) {
264
+ console.log(`🚀 Running in non-interactive mode with stream-json output`);
265
+ console.log();
266
+
267
+ // Show debug info immediately for non-interactive mode
268
+ console.log('🔍 Debug: Preparing claude command...');
269
+ console.log(`Enhanced prompt length: ${enhancedTask.length} characters`);
270
+ console.log(`First 200 chars of prompt: ${enhancedTask.substring(0, 200)}...`);
271
+ }
272
+ console.log();
273
+
274
+ // Execute Claude with SPARC configuration
275
+ await executeClaude(enhancedTask, toolsList, instanceId, memoryNamespace, subArgs);
276
+ } catch (err) {
277
+ printError(`Failed to run SPARC mode: ${err.message}`);
278
+ }
279
+ }
280
+
281
+ async function runTddWorkflow(subArgs) {
282
+ const tddTaskDescription = subArgs.slice(1).join(' ');
283
+
284
+ if (!tddTaskDescription) {
285
+ printError('Usage: sparc tdd <task-description>');
286
+ return;
287
+ }
288
+
289
+ printSuccess('Starting SPARC TDD Workflow');
290
+ console.log('Following Test-Driven Development with SPARC methodology');
291
+ console.log();
292
+
293
+ const phases = [
294
+ { name: 'Red', description: 'Write failing tests', mode: 'tdd' },
295
+ { name: 'Green', description: 'Minimal implementation', mode: 'code' },
296
+ { name: 'Refactor', description: 'Optimize and clean', mode: 'tdd' },
297
+ ];
298
+
299
+ console.log('TDD Phases:');
300
+ for (const phase of phases) {
301
+ console.log(` ${phase.name}: ${phase.description} (${phase.mode} mode)`);
302
+ }
303
+ console.log();
304
+
305
+ if (subArgs.includes('--interactive') || subArgs.includes('-i')) {
306
+ printSuccess('Starting interactive TDD workflow');
307
+ console.log('This would walk through each phase interactively');
308
+ console.log('Run each phase with: sparc run <mode> "Phase: <task>"');
309
+ } else {
310
+ printSuccess('Starting full TDD workflow');
311
+ console.log('This would execute all phases automatically');
312
+ console.log('Use --interactive for step-by-step control');
313
+ }
314
+ }
315
+
316
+ // Remove the createSparcPrompt function from here as it's now imported from sparc-modes/index.js
317
+
318
+ function buildToolsFromGroups(groups) {
319
+ const toolMappings = {
320
+ read: ['View', 'LS', 'GlobTool', 'GrepTool'],
321
+ edit: ['Edit', 'Replace', 'MultiEdit', 'Write'],
322
+ browser: ['WebFetch'],
323
+ mcp: ['mcp_tools'],
324
+ command: ['Bash', 'Terminal'],
325
+ };
326
+
327
+ const tools = new Set(['View', 'Edit', 'Bash']); // Always include basic tools
328
+
329
+ for (const group of groups) {
330
+ if (Array.isArray(group)) {
331
+ const groupName = group[0];
332
+ if (toolMappings[groupName]) {
333
+ toolMappings[groupName].forEach((tool) => tools.add(tool));
334
+ }
335
+ } else if (toolMappings[group]) {
336
+ toolMappings[group].forEach((tool) => tools.add(tool));
337
+ }
338
+ }
339
+
340
+ return tools;
341
+ }
342
+
343
+ async function executeClaude(enhancedTask, toolsList, instanceId, memoryNamespace, subArgs) {
344
+ // Check for non-interactive mode
345
+ const isNonInteractive = subArgs.includes('--non-interactive') || subArgs.includes('-n');
346
+ const enablePermissions = subArgs.includes('--enable-permissions');
347
+
348
+ // Build arguments array correctly
349
+ const claudeArgs = [];
350
+ claudeArgs.push(enhancedTask);
351
+
352
+ // Add --dangerously-skip-permissions by default unless --enable-permissions is set
353
+ if (!enablePermissions) {
354
+ claudeArgs.push('--dangerously-skip-permissions');
355
+ }
356
+
357
+ if (isNonInteractive) {
358
+ // Non-interactive mode: add additional flags
359
+ claudeArgs.push('-p'); // Use short form for print
360
+ claudeArgs.push('--output-format', 'stream-json');
361
+ claudeArgs.push('--verbose');
362
+ } else {
363
+ // Interactive mode - check for verbose flag
364
+ if (subArgs.includes('--verbose') || subArgs.includes('-v')) {
365
+ claudeArgs.push('--verbose');
366
+ }
367
+ }
368
+
369
+ // When using --dangerously-skip-permissions, we don't need to specify individual tools
370
+ // as it enables ALL tools including mcp and websearch
371
+ // Only add --allowedTools if permissions are enabled
372
+ if (enablePermissions) {
373
+ claudeArgs.push('--allowedTools', toolsList);
374
+ }
375
+
376
+ if (subArgs.includes('--config')) {
377
+ const configIndex = subArgs.indexOf('--config');
378
+ claudeArgs.push('--mcp-config', subArgs[configIndex + 1]);
379
+ }
380
+
381
+ // Show debug info for non-interactive mode or when verbose
382
+ if (isNonInteractive || subArgs.includes('--verbose') || subArgs.includes('-v')) {
383
+ console.log('\n🔍 Debug: Executing claude with:');
384
+ console.log('Command: claude');
385
+ console.log(
386
+ 'Permissions:',
387
+ enablePermissions
388
+ ? '✅ Enabled (will prompt)'
389
+ : '⚡ Skipped (--dangerously-skip-permissions)',
390
+ );
391
+ console.log(
392
+ 'Tools:',
393
+ enablePermissions ? `Specified: ${toolsList}` : 'ALL tools enabled (MCP, WebSearch, etc.)',
394
+ );
395
+ console.log('Mode:', isNonInteractive ? '🤖 Non-interactive' : 'đŸ’Ŧ Interactive');
396
+ console.log('Args array length:', claudeArgs.length);
397
+ console.log('First arg (prompt) length:', claudeArgs[0].length, 'characters');
398
+
399
+ if (isNonInteractive) {
400
+ console.log('First 200 chars of prompt:', claudeArgs[0].substring(0, 200) + '...');
401
+ console.log('\nAll arguments:');
402
+ claudeArgs.forEach((arg, i) => {
403
+ if (i === 0) {
404
+ console.log(` [0] <SPARC prompt with ${arg.length} characters>`);
405
+ } else {
406
+ console.log(` [${i}] ${arg}`);
407
+ }
408
+ });
409
+ console.log('\nFull command structure:');
410
+ console.log('claude "<SPARC prompt>" ' + claudeArgs.slice(1).join(' '));
411
+ }
412
+ console.log();
413
+ }
414
+
415
+ try {
416
+ // Log the actual command being executed
417
+ console.log('\n🚀 Executing command:');
418
+ console.log(`Command: claude`);
419
+ console.log(`Working Directory: ${cwd()}`);
420
+ console.log(`Number of args: ${claudeArgs.length}`);
421
+
422
+ // Check if claude command exists
423
+ try {
424
+ const checkResult = await new Promise((resolve) => {
425
+ const child = spawn('which', ['claude'], {
426
+ stdio: ['pipe', 'pipe', 'pipe'],
427
+ });
428
+ let stdout = '';
429
+ child.stdout?.on('data', (data) => {
430
+ stdout += data;
431
+ });
432
+ child.on('close', (code) => {
433
+ resolve({ success: code === 0, stdout: Buffer.from(stdout) });
434
+ });
435
+ });
436
+ if (!checkResult.success) {
437
+ console.error('❌ Error: claude command not found in PATH');
438
+ console.error('Please ensure claude CLI is installed and in your PATH');
439
+ return;
440
+ }
441
+ const claudePath = new TextDecoder().decode(checkResult.stdout).trim();
442
+ console.log(`Claude path: ${claudePath}`);
443
+ } catch (e) {
444
+ console.warn('âš ī¸ Could not verify claude command location');
445
+ }
446
+
447
+ // Use spawn for claude command
448
+ const env = { ...process.env, CLAUDE_INSTANCE_ID: instanceId };
449
+
450
+ console.log('\n📡 Spawning claude process...\n');
451
+ const child = spawn('claude', claudeArgs, {
452
+ cwd: cwd(),
453
+ env: env,
454
+ stdio: 'inherit',
455
+ });
456
+ const status = await new Promise((resolve) => {
457
+ child.on('close', (code) => {
458
+ resolve({ code, success: code === 0 });
459
+ });
460
+ });
461
+
462
+ if (status.success) {
463
+ printSuccess(`SPARC instance ${instanceId} completed successfully`);
464
+ } else {
465
+ printError(`SPARC instance ${instanceId} exited with code ${status.code}`);
466
+ }
467
+ } catch (err) {
468
+ printError(`Failed to execute Claude: ${err.message}`);
469
+ console.error('Stack trace:', err.stack);
470
+ }
471
+ }
472
+
473
+ function showSparcHelp() {
474
+ console.log('SPARC commands:');
475
+ console.log(' <task> Run SPARC orchestrator (default mode)');
476
+ console.log(' modes List available SPARC development modes');
477
+ console.log(' info <mode> Show detailed information about a mode');
478
+ console.log(' run <mode> <task> Execute a task in specified SPARC mode');
479
+ console.log(' tdd <task> Run Test-Driven Development workflow');
480
+ console.log();
481
+ console.log('Examples:');
482
+ console.log(' claude-flow sparc "orchestrate app development" # Uses sparc orchestrator');
483
+ console.log(' claude-flow sparc modes --verbose');
484
+ console.log(' claude-flow sparc info architect');
485
+ console.log(' claude-flow sparc run code "implement user authentication"');
486
+ console.log(' claude-flow sparc run code "add login feature" --non-interactive');
487
+ console.log(' claude-flow sparc run tdd "create test suite" --namespace tests');
488
+ console.log(' claude-flow sparc tdd "payment processing system" --interactive');
489
+ console.log();
490
+ console.log('Parallel Execution with BatchTool:');
491
+ console.log(' # Run multiple SPARC modes concurrently');
492
+ console.log(' batchtool run --parallel \\');
493
+ console.log(' "npx claude-flow sparc run code \'user service\' --non-interactive" \\');
494
+ console.log(' "npx claude-flow sparc run code \'auth service\' --non-interactive" \\');
495
+ console.log(' "npx claude-flow sparc run tdd \'test suite\' --non-interactive"');
496
+ console.log();
497
+ console.log(' # Boomerang orchestration pattern');
498
+ console.log(' batchtool orchestrate --boomerang \\');
499
+ console.log(
500
+ ' --research "npx claude-flow sparc run ask \'requirements\' --non-interactive" \\',
501
+ );
502
+ console.log(' --design "npx claude-flow sparc run architect \'system\' --non-interactive" \\');
503
+ console.log(' --implement "npx claude-flow sparc run code \'features\' --non-interactive" \\');
504
+ console.log(' --test "npx claude-flow sparc run tdd \'validation\' --non-interactive"');
505
+ console.log();
506
+ console.log('Flags:');
507
+ console.log(' --dry-run, -d Show configuration without executing');
508
+ console.log(' --verbose, -v Show detailed output');
509
+ console.log(' --interactive, -i Run TDD workflow interactively');
510
+ console.log(' --non-interactive, -n Run in non-interactive mode with stream-json output');
511
+ console.log(' --enable-permissions Enable permission prompts (default: skip permissions)');
512
+ console.log(' --namespace <ns> Use custom memory namespace (default: mode slug)');
513
+ console.log(' --config <path> Use custom MCP configuration file');
514
+ console.log();
515
+ console.log('Permission Behavior:');
516
+ console.log(' By default, SPARC runs with --dangerously-skip-permissions for efficiency');
517
+ console.log(' Use --enable-permissions to restore permission prompts if needed');
518
+ console.log();
519
+ console.log('Non-Interactive Mode:');
520
+ console.log(' When using --non-interactive, claude will be executed with:');
521
+ console.log(' - --dangerously-skip-permissions (unless --enable-permissions is set)');
522
+ console.log(' - -p (print mode for streaming output)');
523
+ console.log(' - --output-format stream-json (structured output format)');
524
+ console.log(' - --verbose (detailed execution logs)');
525
+ console.log();
526
+ console.log('Boomerang Pattern:');
527
+ console.log(' A cyclical orchestration where outputs from one phase feed into the next:');
528
+ console.log(' Research → Design → Implement → Test → Optimize → Loop back');
529
+ console.log(' Perfect for iterative development with continuous refinement');
530
+ }
@@ -0,0 +1,147 @@
1
+ // start-ui.js - Standalone UI launcher (Web UI by default)
2
+ import { printSuccess, printError, printWarning, printInfo } from '../utils.js';
3
+ import { compat } from '../runtime-detector.js';
4
+
5
+ export async function launchUI(args = []) {
6
+ try {
7
+ // Parse arguments
8
+ const portValue = getArgValue(args, '--port') || getArgValue(args, '-p');
9
+ const port = portValue ? parseInt(portValue) : 3000;
10
+
11
+ const terminal = args.includes('--terminal') || args.includes('-t');
12
+ const web = !terminal; // Default to web UI unless terminal is specified
13
+
14
+ if (web) {
15
+ // Launch Web UI
16
+ try {
17
+ const { ClaudeCodeWebServer } = await import('./web-server.js');
18
+ const webServer = new ClaudeCodeWebServer(port);
19
+ await webServer.start();
20
+
21
+ printSuccess('🌐 Claude Flow Web UI is running!');
22
+ console.log(`📍 Open your browser to: http://localhost:${port}/console`);
23
+ console.log();
24
+ console.log('Features:');
25
+ console.log(' ✨ Access all 71+ MCP tools through the web interface');
26
+ console.log(' 📊 Real-time monitoring and analytics');
27
+ console.log(' 🧠 Neural network training and management');
28
+ console.log(' 🔄 Workflow automation and SPARC modes');
29
+ console.log(' 🐙 GitHub integration and DAA management');
30
+ console.log();
31
+ console.log('Press Ctrl+C to stop the server');
32
+
33
+ // Open browser if possible
34
+ try {
35
+ const openCommand =
36
+ process.platform === 'darwin'
37
+ ? 'open'
38
+ : process.platform === 'win32'
39
+ ? 'start'
40
+ : 'xdg-open';
41
+
42
+ const { exec } = await import('child_process');
43
+ exec(`${openCommand} http://localhost:${port}/console`);
44
+ } catch {
45
+ // Browser opening failed, that's okay
46
+ }
47
+
48
+ // Handle shutdown
49
+ const shutdown = async () => {
50
+ console.log('\n' + 'âšī¸ Shutting down Web UI...');
51
+ await webServer.stop();
52
+ printSuccess('✓ Shutdown complete');
53
+ process.exit(0);
54
+ };
55
+
56
+ process.on('SIGINT', shutdown);
57
+ process.on('SIGTERM', shutdown);
58
+
59
+ // Keep process alive
60
+ await new Promise(() => {});
61
+ } catch (err) {
62
+ printError(`Failed to launch Web UI: ${err.message}`);
63
+ console.error('Stack trace:', err.stack);
64
+ console.log();
65
+ printWarning('Falling back to terminal UI...');
66
+ // Fall back to terminal UI
67
+ await launchTerminalUI(port);
68
+ }
69
+ }
70
+
71
+ if (terminal) {
72
+ await launchTerminalUI(port);
73
+ }
74
+ } catch (err) {
75
+ printError(`Failed to launch UI: ${err.message}`);
76
+ console.error('Stack trace:', err.stack);
77
+ }
78
+ }
79
+
80
+ async function launchTerminalUI(port) {
81
+ // Launch Terminal UI
82
+ try {
83
+ // Try enhanced UI first
84
+ const { launchEnhancedUI } = await import('./process-ui-enhanced.js');
85
+ await launchEnhancedUI();
86
+ } catch (err) {
87
+ // Try simple UI as fallback
88
+ try {
89
+ let ProcessManager, ProcessUI;
90
+ try {
91
+ // Try the compiled version first (for production/npm packages)
92
+ const pmModule = await import('../../../dist/cli/commands/start/process-manager.js');
93
+ const puiModule = await import('../../../dist/cli/commands/start/process-ui-simple.js');
94
+ ProcessManager = pmModule.ProcessManager;
95
+ ProcessUI = puiModule.ProcessUI;
96
+ } catch (distError) {
97
+ // If dist version not found, try TypeScript version (for development)
98
+ const pmModule = await import('../commands/start/process-manager.ts');
99
+ const puiModule = await import('../commands/start/process-ui-simple.ts');
100
+ ProcessManager = pmModule.ProcessManager;
101
+ ProcessUI = puiModule.ProcessUI;
102
+ }
103
+
104
+ printSuccess('🚀 Claude-Flow Process Management UI');
105
+ console.log('─'.repeat(60));
106
+
107
+ // Initialize process manager
108
+ const processManager = new ProcessManager();
109
+ await processManager.initialize();
110
+
111
+ // Start the UI
112
+ const ui = new ProcessUI(processManager);
113
+ await ui.start();
114
+
115
+ // Cleanup on exit
116
+ await processManager.stopAll();
117
+ console.log();
118
+ printSuccess('✓ Shutdown complete');
119
+ } catch (fallbackErr) {
120
+ printError(`Failed to launch Terminal UI: ${fallbackErr.message}`);
121
+ console.error('Stack trace:', fallbackErr.stack);
122
+
123
+ // Final fallback
124
+ console.log();
125
+ printWarning('UI launch failed. Use these commands instead:');
126
+ console.log();
127
+ console.log('Process Management Commands:');
128
+ console.log(' â€ĸ Start all: claude-flow start');
129
+ console.log(' â€ĸ Check status: claude-flow status');
130
+ console.log(' â€ĸ View logs: claude-flow logs');
131
+ console.log(' â€ĸ Stop: claude-flow stop');
132
+ }
133
+ }
134
+ }
135
+
136
+ function getArgValue(args, flag) {
137
+ const index = args.indexOf(flag);
138
+ if (index !== -1 && index < args.length - 1) {
139
+ return args[index + 1];
140
+ }
141
+ return null;
142
+ }
143
+
144
+ // Run if called directly
145
+ if (import.meta.main) {
146
+ await launchUI();
147
+ }