claude-flow 3.10.4 → 3.10.5

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 (58) hide show
  1. package/package.json +1 -1
  2. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts +18 -0
  3. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-agent-planning.smoke.js +253 -0
  4. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-agent.d.ts +198 -0
  5. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-agent.js +651 -0
  6. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-causal-memory.d.ts +133 -0
  7. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-causal-memory.js +281 -0
  8. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts +22 -0
  9. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-causal-memory.smoke.js +300 -0
  10. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-convergence.d.ts +138 -0
  11. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-convergence.js +260 -0
  12. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-convergence.smoke.d.ts +19 -0
  13. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-convergence.smoke.js +246 -0
  14. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-critic.d.ts +123 -0
  15. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-critic.js +312 -0
  16. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-critic.smoke.d.ts +21 -0
  17. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-critic.smoke.js +327 -0
  18. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-decomposer.d.ts +125 -0
  19. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-decomposer.js +350 -0
  20. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-decomposer.smoke.d.ts +21 -0
  21. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-decomposer.smoke.js +228 -0
  22. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-e2e-smoke.d.ts +27 -0
  23. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-e2e-smoke.js +136 -0
  24. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-extract.smoke.d.ts +45 -0
  25. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-extract.smoke.js +242 -0
  26. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-hardness/features.d.ts +46 -0
  27. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-hardness/features.js +170 -0
  28. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-hardness/predictor.d.ts +105 -0
  29. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-hardness/predictor.js +260 -0
  30. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts +20 -0
  31. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-hardness/predictor.smoke.js +235 -0
  32. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts +51 -0
  33. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-hardness/train-data-loader.js +179 -0
  34. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-judge.d.ts +88 -0
  35. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-judge.js +437 -0
  36. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-loader.d.ts +87 -0
  37. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-loader.js +326 -0
  38. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-tools/file_read.d.ts +35 -0
  39. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-tools/file_read.js +403 -0
  40. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-tools/grounded_query.d.ts +126 -0
  41. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-tools/grounded_query.js +225 -0
  42. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-tools/index.d.ts +32 -0
  43. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-tools/index.js +36 -0
  44. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-tools/types.d.ts +62 -0
  45. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-tools/types.js +12 -0
  46. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-tools/web_search.d.ts +30 -0
  47. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-tools/web_search.js +210 -0
  48. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-voting.d.ts +88 -0
  49. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-voting.js +297 -0
  50. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-voting.smoke.d.ts +20 -0
  51. package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-voting.smoke.js +332 -0
  52. package/v3/@claude-flow/cli/dist/src/commands/gaia-bench.d.ts +40 -0
  53. package/v3/@claude-flow/cli/dist/src/commands/gaia-bench.js +597 -0
  54. package/v3/@claude-flow/cli/dist/src/commands/index.js +2 -0
  55. package/v3/@claude-flow/cli/dist/src/commands/init.js +41 -4
  56. package/v3/@claude-flow/cli/dist/src/init/executor.js +25 -6
  57. package/v3/@claude-flow/cli/dist/src/init/mcp-generator.js +9 -4
  58. package/v3/@claude-flow/cli/package.json +1 -1
@@ -744,16 +744,22 @@ function detectExistingRufloMCP(targetDir) {
744
744
  const parsed = JSON.parse(fs.readFileSync(candidate, 'utf-8'));
745
745
  if (!parsed || typeof parsed !== 'object')
746
746
  continue;
747
- // (a) Top-level mcpServers (legacy / global form)
747
+ // (a) Top-level mcpServers (legacy / global form).
748
+ // #2207: accept BOTH the old 'ruflo' key AND the new 'claude-flow' key so that
749
+ // a prior install with either key is correctly detected as already-initialized.
750
+ // This also avoids the reverse problem: after #2206 fixed the generator to write
751
+ // 'claude-flow', a second `ruflo init` must still recognise the existing install.
748
752
  if (parsed.mcpServers && typeof parsed.mcpServers === 'object') {
749
- if ('ruflo' in parsed.mcpServers)
753
+ const servers = parsed.mcpServers;
754
+ if ('claude-flow' in servers || 'ruflo' in servers)
750
755
  return candidate;
751
756
  }
752
757
  // (b) #1840: Claude Code project-scoped registrations under
753
- // parsed.projects[<projectPath>].mcpServers.ruflo. Match by
758
+ // parsed.projects[<projectPath>].mcpServers. Match by
754
759
  // normalized path against targetDir or any of its ancestors so
755
- // a `claude mcp add ruflo` in this repo is detected even when
756
- // Claude stored the key with different casing/slash style.
760
+ // a `claude mcp add claude-flow` (or legacy `ruflo`) in this repo is
761
+ // detected even when Claude stored the key with different casing/slash style.
762
+ // #2207: accept both keys here too.
757
763
  if (parsed.projects && typeof parsed.projects === 'object') {
758
764
  for (const [projectKey, projectVal] of Object.entries(parsed.projects)) {
759
765
  if (!projectVal || typeof projectVal !== 'object')
@@ -761,7 +767,8 @@ function detectExistingRufloMCP(targetDir) {
761
767
  const projectMcp = projectVal.mcpServers;
762
768
  if (!projectMcp || typeof projectMcp !== 'object')
763
769
  continue;
764
- if (!('ruflo' in projectMcp))
770
+ const mcp = projectMcp;
771
+ if (!('claude-flow' in mcp) && !('ruflo' in mcp))
765
772
  continue;
766
773
  if (targetAncestors.has(normalizeProjectKey(projectKey))) {
767
774
  return `${candidate} (projects[${projectKey}])`;
@@ -1810,6 +1817,18 @@ async function writeClaudeMd(targetDir, options, result) {
1810
1817
  result.skipped.push('CLAUDE.md');
1811
1818
  }
1812
1819
  else {
1820
+ // #2208: if overwriting an existing CLAUDE.md (force mode), back it up first so
1821
+ // users don't silently lose curated project context.
1822
+ if (fs.existsSync(claudeMdPath)) {
1823
+ const backupBase = `${claudeMdPath}.pre-ruflo`;
1824
+ // Don't clobber an existing backup — append a timestamp if one already exists.
1825
+ const backupPath = fs.existsSync(backupBase)
1826
+ ? `${backupBase}.${Date.now()}`
1827
+ : backupBase;
1828
+ fs.copyFileSync(claudeMdPath, backupPath);
1829
+ result.created.files.push(path.basename(backupPath));
1830
+ console.warn(`[ruflo init] Existing CLAUDE.md backed up to ${path.basename(backupPath)} before overwrite`);
1831
+ }
1813
1832
  // Determine template: explicit option > infer from components > 'standard'
1814
1833
  const inferredTemplate = (!options.components.commands && !options.components.agents) ? 'minimal' : undefined;
1815
1834
  const content = generateClaudeMd(options, inferredTemplate);
@@ -40,9 +40,12 @@ export function generateMCPConfig(options) {
40
40
  const npmEnv = {
41
41
  npm_config_update_notifier: 'false',
42
42
  };
43
- // Ruflo MCP server (core) — uses ruflo wrapper for portable npm-resolved invocation
43
+ // Ruflo MCP server (core) — uses ruflo wrapper for portable npm-resolved invocation.
44
+ // #2206: key MUST be 'claude-flow' so all plugins resolve as mcp__claude-flow__*.
45
+ // The command args (ruflo@latest mcp start) are the correct wrapper invocation — only the
46
+ // registration KEY changes here.
44
47
  if (config.claudeFlow) {
45
- mcpServers['ruflo'] = createMCPServerEntry(['ruflo@latest', 'mcp', 'start'], {
48
+ mcpServers['claude-flow'] = createMCPServerEntry(['ruflo@latest', 'mcp', 'start'], {
46
49
  ...npmEnv,
47
50
  CLAUDE_FLOW_MODE: 'v3',
48
51
  CLAUDE_FLOW_HOOKS_ENABLED: 'true',
@@ -76,7 +79,8 @@ export function generateMCPCommands(options) {
76
79
  const config = options.mcp;
77
80
  if (isWindows()) {
78
81
  if (config.claudeFlow) {
79
- commands.push('claude mcp add ruflo -- cmd /c npx -y ruflo@latest mcp start');
82
+ // #2206: registration name must be 'claude-flow' to match mcp__claude-flow__* tool naming
83
+ commands.push('claude mcp add claude-flow -- cmd /c npx -y ruflo@latest mcp start');
80
84
  }
81
85
  if (config.ruvSwarm) {
82
86
  commands.push('claude mcp add ruv-swarm -- cmd /c npx -y ruv-swarm mcp start');
@@ -87,7 +91,8 @@ export function generateMCPCommands(options) {
87
91
  }
88
92
  else {
89
93
  if (config.claudeFlow) {
90
- commands.push("claude mcp add ruflo -- npx -y ruflo@latest mcp start");
94
+ // #2206: registration name must be 'claude-flow' to match mcp__claude-flow__* tool naming
95
+ commands.push("claude mcp add claude-flow -- npx -y ruflo@latest mcp start");
91
96
  }
92
97
  if (config.ruvSwarm) {
93
98
  commands.push("claude mcp add ruv-swarm -- npx -y ruv-swarm mcp start");
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claude-flow/cli",
3
- "version": "3.10.4",
3
+ "version": "3.10.5",
4
4
  "type": "module",
5
5
  "description": "Ruflo CLI - Enterprise AI agent orchestration with 60+ specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code",
6
6
  "main": "dist/src/index.js",