claude-flow 3.38.3 → 3.38.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-flow",
3
- "version": "3.38.3",
3
+ "version": "3.38.4",
4
4
  "workspaces": [
5
5
  "v3/@claude-flow/codex",
6
6
  "v3/@claude-flow/plugin-agent-federation",
@@ -1,8 +1,6 @@
1
1
  <div align="center">
2
2
 
3
3
  [![Ruflo Banner](ruflo/assets/ruflo-small.jpeg)](https://cognitum.one/agentic-engineering)
4
- [![Agentics Foundation Banner](docs/assets/sv-summit.png)](https://agentics.org/siliconvalley/?UTM=GH-RuFlo-SV)
5
-
6
4
 
7
5
  <!-- Try Ruflo — the 4 badges first-time visitors actually act on -->
8
6
  [![Try the UI Beta — flo.ruv.io](https://img.shields.io/badge/_Try_the_UI_Beta-flo.ruv.io-6366f1?style=for-the-badge&logoColor=white&logo=svelte)](https://flo.ruv.io/)
@@ -58,7 +56,7 @@ There are **two different install paths** with very different surface areas. Pic
58
56
  |---|---|---|
59
57
  | What it gives you | Slash commands + a few skills + agent definitions per-plugin | Full Ruflo loop — 98 agents, 60+ commands, 30 skills, MCP server, hooks, daemon |
60
58
  | Files in your workspace | **Zero** | `.claude/`, `.claude-flow/`, `CLAUDE.md`, helpers, settings |
61
- | MCP server registered | **No** (`memory_store`, `swarm_init`, etc. unavailable to Claude) | Yes |
59
+ | MCP server registered | Only if `ruflo-core` is installed (it ships its own `.mcp.json`) — most other plugins don't | Yes |
62
60
  | Hooks installed | No | Yes |
63
61
  | Best for | Try a single plugin's commands without committing to the full install | Production use — everything works as documented |
64
62
 
@@ -75,7 +73,7 @@ There are **two different install paths** with very different surface areas. Pic
75
73
  /plugin install ruflo-neural-trader@ruflo
76
74
  ```
77
75
 
78
- This adds slash commands and agent definitions only. The Ruflo MCP server is NOT registered, so `memory_store`, `swarm_init`, `agent_spawn`, etc. won't be callable from Claude. For the full loop, use Path B below.
76
+ This adds slash commands and agent definitions. `ruflo-core` (installed above) does register its own MCP server on install — its tools are callable as `mcp__plugin_ruflo-core_ruflo__*` (e.g. `mcp__plugin_ruflo-core_ruflo__memory_store`), not the bare `memory_store`/`swarm_init`/`agent_spawn` names the CLI-track scaffold uses. Other plugins generally don't ship their own MCP server. For the full loop with the CLI-track tool names, use Path B below.
79
77
 
80
78
  <details>
81
79
  <summary><strong>🔌 All 35 plugins</strong></summary>
@@ -189,24 +187,10 @@ npm install -g ruflo@latest
189
187
  ### MCP Server
190
188
 
191
189
  ```bash
192
- # Add Ruflo as an MCP server in Claude Code (canonical form, matches USERGUIDE.md)
193
- claude mcp add ruflo -- npx ruflo@latest mcp start
190
+ # Add Ruflo as an MCP server in Claude Code
191
+ claude mcp add claude-flow -- npx ruflo@latest mcp start
194
192
  ```
195
193
 
196
- Small-context backends can advertise only the tool categories they need:
197
-
198
- ```bash
199
- CLAUDE_FLOW_MCP_TOOLS=memory,swarm,agent,hooks \
200
- npx ruflo@latest mcp start
201
-
202
- # Optional: lets `ruflo doctor -c mcp-overhead` compare the live schema
203
- # estimate with the backend's real context limit.
204
- CLAUDE_FLOW_CONTEXT_WINDOW_TOKENS=32000 ruflo doctor -c mcp-overhead
205
- ```
206
-
207
- The default remains `all` for backwards compatibility. Selectors accept
208
- categories, namespace prefixes, or exact tool names.
209
-
210
194
  ---
211
195
 
212
196
  ## What You Get
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "generation": 4,
4
- "generatedAt": "2026-07-29T19:49:43.000Z",
5
- "gitSha": "bbfbb0a6",
4
+ "generatedAt": "2026-08-12T18:43:20.202Z",
5
+ "gitSha": "d41af6e4",
6
6
  "catalog": {
7
7
  "agents": 164,
8
8
  "tools": 397,
@@ -496,8 +496,16 @@ const initClaudeAction = async (ctx) => {
496
496
  const force = ctx.flags.force;
497
497
  const minimal = ctx.flags.minimal;
498
498
  const full = ctx.flags.full;
499
- const skipClaude = ctx.flags['skip-claude'];
500
- const onlyClaude = ctx.flags['only-claude'];
499
+ // #2952 — every long-flag write path in the parser goes through
500
+ // normalizeKey() (parser.ts:399-402), which converts kebab-case to
501
+ // camelCase before storing. `--skip-claude`/`--only-claude`/
502
+ // `--all-agents`/`--cloud-mcp` land as `flags.skipClaude`/`flags.onlyClaude`/
503
+ // `flags.allAgents`/`flags.cloudMcp` — there is no code path that ever
504
+ // stores the literal kebab-case key. Reading `ctx.flags['skip-claude']`
505
+ // etc. was always undefined, so all four flags were silent no-ops. Same
506
+ // bug class as #2098A below, just never applied to these siblings.
507
+ const skipClaude = ctx.flags.skipClaude;
508
+ const onlyClaude = ctx.flags.onlyClaude;
501
509
  // #2098A — the parser handles `--no-foo` by stripping the prefix and
502
510
  // storing `flags.foo = false` (parser.ts:291-294), not by storing
503
511
  // `flags['no-foo'] = true`. So `--no-global` lands as
@@ -505,8 +513,8 @@ const initClaudeAction = async (ctx) => {
505
513
  // was always undefined and silently no-op'd — every user with the flag
506
514
  // set still got `~/.claude/CLAUDE.md` modified. Read the real key.
507
515
  const noGlobal = ctx.flags['no-global'] === true || ctx.flags['global'] === false;
508
- const allAgents = ctx.flags['all-agents'];
509
- const cloudMcp = ctx.flags['cloud-mcp'];
516
+ const allAgents = ctx.flags.allAgents;
517
+ const cloudMcp = ctx.flags.cloudMcp;
510
518
  const cwd = ctx.cwd;
511
519
  // Check if already initialized
512
520
  const initialized = isInitialized(cwd);
@@ -1377,26 +1377,36 @@ export const hooksPostTask = {
1377
1377
  catch {
1378
1378
  // Intelligence module not available — non-fatal
1379
1379
  }
1380
- // ADR-130 Phase 3: fire-and-forget "reinforced-by" edge on task success
1380
+ // ADR-130 Phase 3: "reinforced-by" edge on task success.
1381
1381
  // Writes: context node → task pattern node (relation: "reinforced-by")
1382
+ //
1383
+ // #2961 — this used to be fire-and-forget (no `await` on the IIFE). That
1384
+ // was invisible from the long-running MCP server, where the process
1385
+ // stays alive long enough for the detached write to finish in the
1386
+ // background. But `hooks post-task` (CLI) is the exact same handler
1387
+ // invoked from a one-shot process that calls `process.exit(0)`
1388
+ // immediately after this action resolves (bin/cli.js, #1552) — the
1389
+ // still-pending dynamic `import(...)` + `insertGraphEdge()` call was
1390
+ // killed before its first tick, so the CLI form dropped this edge on
1391
+ // every single success, not intermittently. Await it — this is a
1392
+ // single fast DB write, not worth losing correctness on one call site
1393
+ // to save latency on the other.
1382
1394
  if (success) {
1383
- (async () => {
1384
- try {
1385
- const { insertGraphEdge } = await import('../memory/graph-edge-writer.js');
1386
- const sessionCtxId = `task:${taskId}`;
1387
- const patternId = `pattern:${taskId}`;
1388
- await insertGraphEdge({
1389
- sourceId: sessionCtxId,
1390
- targetId: patternId,
1391
- relation: 'reinforced-by',
1392
- weight: quality,
1393
- confidence: quality,
1394
- lastReinforced: new Date().toISOString(),
1395
- metadata: { success, agent, taskId },
1396
- });
1397
- }
1398
- catch { /* non-fatal */ }
1399
- })().catch(() => { });
1395
+ try {
1396
+ const { insertGraphEdge } = await import('../memory/graph-edge-writer.js');
1397
+ const sessionCtxId = `task:${taskId}`;
1398
+ const patternId = `pattern:${taskId}`;
1399
+ await insertGraphEdge({
1400
+ sourceId: sessionCtxId,
1401
+ targetId: patternId,
1402
+ relation: 'reinforced-by',
1403
+ weight: quality,
1404
+ confidence: quality,
1405
+ lastReinforced: new Date().toISOString(),
1406
+ metadata: { success, agent, taskId },
1407
+ });
1408
+ }
1409
+ catch { /* non-fatal */ }
1400
1410
  }
1401
1411
  // Persist routing outcome for runtime learning (file-based, always reliable)
1402
1412
  const taskText = params.task || '';
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claude-flow/cli",
3
- "version": "3.38.3",
3
+ "version": "3.38.4",
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",