claude-flow 3.7.0-alpha.71 → 3.7.0-alpha.73

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/README.md CHANGED
@@ -1,15 +1,14 @@
1
1
  <div align="center">
2
2
 
3
- [![Ruflo Banner](ruflo/assets/ruflo-small.jpeg)](https://flo.ruv.io/)
3
+ [![Ruflo Banner](ruflo/assets/ruflo-small.jpeg)](https://cognitum.one/agentic-engineering)
4
4
 
5
5
  [![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/)
6
6
  [![Goal Planner — goal.ruv.io](https://img.shields.io/badge/_Goal_Planner-goal.ruv.io-8b5cf6?style=for-the-badge&logoColor=white&logo=react)](https://goal.ruv.io/)
7
7
  [![Live Agents — goal.ruv.io/agents](https://img.shields.io/badge/_Live_Agents-goal.ruv.io%2Fagents-10b981?style=for-the-badge&logoColor=white&logo=react)](https://goal.ruv.io/agents)
8
8
 
9
9
  [![npm version (ruflo)](https://img.shields.io/npm/v/ruflo?label=ruflo&style=for-the-badge&logo=npm&color=cb3837)](https://www.npmjs.com/package/ruflo)
10
- [![npm downloads (ruflo)](https://img.shields.io/npm/dm/ruflo?label=ruflo%20downloads&style=for-the-badge&logo=npm&color=cb3837)](https://www.npmjs.com/package/ruflo)
11
- [![npm version (claude-flow)](https://img.shields.io/npm/v/claude-flow?label=claude-flow&style=for-the-badge&logo=npm&color=blue)](https://www.npmjs.com/package/claude-flow)
12
- [![npm downloads (claude-flow)](https://img.shields.io/npm/dm/claude-flow?label=claude-flow%20downloads&style=for-the-badge&logo=npm&color=blue)](https://www.npmjs.com/package/claude-flow)
10
+ [![Ecosystem downloads](https://img.shields.io/badge/ecosystem%20downloads-22.2M%2B-blue?style=for-the-badge&logo=npm)](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.proof.json)
11
+ [![Git clones (14d)](https://img.shields.io/badge/git%20clones%2014d-115k-blueviolet?style=for-the-badge&logo=github)](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.ledger.json)
13
12
 
14
13
  [![Star on GitHub](https://img.shields.io/github/stars/ruvnet/claude-flow?style=for-the-badge&logo=github&color=gold)](https://github.com/ruvnet/claude-flow)
15
14
  [![MIT License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)](https://opensource.org/licenses/MIT)
@@ -17,6 +16,8 @@
17
16
  [![Codex Plugin](https://img.shields.io/badge/Codex-Plugin-412991?style=for-the-badge&logoColor=white&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI%2BPHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0yMi4yODIgOS44MjFhNS45ODUgNS45ODUgMCAwIDAtLjUxNi00LjkxIDYuMDQ2IDYuMDQ2IDAgMCAwLTYuNTEtMi45QTYuMDY1IDYuMDY1IDAgMCAwIDQuOTgxIDQuMThhNS45ODUgNS45ODUgMCAwIDAtMy45OTggMi45IDYuMDQ2IDYuMDQ2IDAgMCAwIC43NDMgNy4wOTcgNS45OCA1Ljk4IDAgMCAwIC41MSA0LjkxMSA2LjA1MSA2LjA1MSAwIDAgMCA2LjUxNSAyLjlBNS45ODUgNS45ODUgMCAwIDAgMTMuMjYgMjRhNi4wNTYgNi4wNTYgMCAwIDAgNS43NzItNC4yMDYgNS45OSA1Ljk5IDAgMCAwIDMuOTk4LTIuOSA2LjA1NiA2LjA1NiAwIDAgMC0uNzQ3LTcuMDczek0xMy4yNiAyMi40M2E0LjQ3NiA0LjQ3NiAwIDAgMS0yLjg3Ni0xLjA0bC4xNDItLjA4IDQuNzc4LTIuNzU4YS43OTUuNzk1IDAgMCAwIC4zOTMtLjY4MXYtNi43MzdsMi4wMiAxLjE2OGEuMDcxLjA3MSAwIDAgMSAuMDM4LjA1MnY1LjU4M2E0LjUwNCA0LjUwNCAwIDAgMS00LjQ5NSA0LjQ5NHpNMy42IDE4LjMwNGE0LjQ3IDQuNDcgMCAwIDEtLjUzNS0zLjAxNGwuMTQyLjA4NSA0Ljc4MyAyLjc1OWEuNzcxLjc3MSAwIDAgMCAuNzgxIDBsNS44NDMtMy4zNjl2Mi4zMzJhLjA4LjA4IDAgMCAxLS4wMzMuMDYyTDkuNzQgMTkuOTVhNC41IDQuNSAwIDAgMS02LjE0LTEuNjQ2ek0yLjM0IDcuODk2YTQuNDg1IDQuNDg1IDAgMCAxIDIuMzY2LTEuOTczVjExLjZhLjc2Ni43NjYgMCAwIDAgLjM4OC42NzdsNS44MTUgMy4zNTQtMi4wMiAxLjE2OGEuMDc2LjA3NiAwIDAgMS0uMDcyIDBsLTQuODMtMi43ODZBNC41MDQgNC41MDQgMCAwIDEgMi4zNCA3Ljg3MnptMTYuNTk3IDMuODU1LTUuODMzLTMuMzg3IDIuMDE2LTEuMTY1YS4wNzYuMDc2IDAgMCAxIC4wNzEgMGw0LjgzIDIuNzkxYTQuNDk0IDQuNDk0IDAgMCAxLS42NzYgOC4xMDR2LTUuNjc3YS43OS43OSAwIDAgMC0uNDA3LS42Njd6bTIuMDEtMy4wMjMtLjE0MS0uMDg1LTQuNzc0LTIuNzgyYS43NzYuNzc2IDAgMCAwLS43ODUgMEw5LjQwOSA5LjIzVjYuODk3YS4wNjYuMDY2IDAgMCAxIC4wMjgtLjA2Mmw0LjgzLTIuNzg3YTQuNDk5IDQuNDk5IDAgMCAxIDYuNjggNC42NnpNOC4zMDcgMTIuODYzbC0yLjAyLTEuMTY0YS4wOC4wOCAwIDAgMS0uMDM4LS4wNTdWNi4wNzRhNC40OTkgNC40OTkgMCAwIDEgNy4zNzYtMy40NTRsLS4xNDIuMDgtNC43NzggMi43NThhLjc5NS43OTUgMCAwIDAtLjM5My42ODJ6bTEuMDk3LTIuMzY2IDIuNjAyLTEuNSAyLjYwNyAxLjV2Mi45OTlsLTIuNTk3IDEuNS0yLjYwNy0xLjVaIi8%2BPC9zdmc%2B)](https://www.npmjs.com/package/@claude-flow/codex)
18
17
  [![🕸️ RuVector Graph Ai](https://img.shields.io/badge/RuVector_Agentic-DB-06b6d4?style=for-the-badge&logoColor=white&logo=graphql)](https://github.com/ruvnet/ruvector)
19
18
 
19
+ [![RuFlo Agentic Appliance](v3/docs/assets/RuFlo-agentic-appliance.png)](https://cognitum.one/appliance)
20
+
20
21
  [![ruFlo Summit — Budapest, June 2–3, 2026](v3/docs/assets/ruFlo-Summit.jpg)](https://github.com/ruvnet/ruflo/issues/1967)
21
22
 
22
23
  # Ruflo
@@ -71,14 +72,14 @@ There are **two different install paths** with very different surface areas. Pic
71
72
  # Install core + any plugins you need
72
73
  /plugin install ruflo-core@ruflo
73
74
  /plugin install ruflo-swarm@ruflo
74
- /plugin install ruflo-autopilot@ruflo
75
- /plugin install ruflo-federation@ruflo
75
+ /plugin install ruflo-rag-memory@ruflo
76
+ /plugin install ruflo-neural-trader@ruflo
76
77
  ```
77
78
 
78
79
  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.
79
80
 
80
81
  <details>
81
- <summary><strong>🔌 All 32 plugins</strong></summary>
82
+ <summary><strong>🔌 All 33 plugins</strong></summary>
82
83
 
83
84
  #### Core & Orchestration
84
85
 
@@ -106,6 +107,7 @@ This adds slash commands and agent definitions only. The Ruflo MCP server is NOT
106
107
  | Plugin | What it does |
107
108
  |--------|-------------|
108
109
  | [**ruflo-intelligence**](plugins/ruflo-intelligence/README.md) | Agents learn from past successes and get smarter |
110
+ | [**ruflo-graph-intelligence**](plugins/ruflo-graph-intelligence/) | Sublinear graph reasoning — PageRank, delta updates, complexity-aware execution (ADR-123) |
109
111
  | [**ruflo-daa**](plugins/ruflo-daa/README.md) | Dynamic agent behavior and cognitive patterns |
110
112
  | [**ruflo-ruvllm**](plugins/ruflo-ruvllm/README.md) | Run local LLMs (Ollama, etc.) with smart routing |
111
113
  | [**ruflo-goals**](plugins/ruflo-goals/README.md) | Break big goals into plans and track progress |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-flow",
3
- "version": "3.7.0-alpha.71",
3
+ "version": "3.7.0-alpha.73",
4
4
  "description": "Ruflo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -1,15 +1,14 @@
1
1
  <div align="center">
2
2
 
3
- [![Ruflo Banner](ruflo/assets/ruflo-small.jpeg)](https://flo.ruv.io/)
3
+ [![Ruflo Banner](ruflo/assets/ruflo-small.jpeg)](https://cognitum.one/agentic-engineering)
4
4
 
5
5
  [![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/)
6
6
  [![Goal Planner — goal.ruv.io](https://img.shields.io/badge/_Goal_Planner-goal.ruv.io-8b5cf6?style=for-the-badge&logoColor=white&logo=react)](https://goal.ruv.io/)
7
7
  [![Live Agents — goal.ruv.io/agents](https://img.shields.io/badge/_Live_Agents-goal.ruv.io%2Fagents-10b981?style=for-the-badge&logoColor=white&logo=react)](https://goal.ruv.io/agents)
8
8
 
9
9
  [![npm version (ruflo)](https://img.shields.io/npm/v/ruflo?label=ruflo&style=for-the-badge&logo=npm&color=cb3837)](https://www.npmjs.com/package/ruflo)
10
- [![npm downloads (ruflo)](https://img.shields.io/npm/dm/ruflo?label=ruflo%20downloads&style=for-the-badge&logo=npm&color=cb3837)](https://www.npmjs.com/package/ruflo)
11
- [![npm version (claude-flow)](https://img.shields.io/npm/v/claude-flow?label=claude-flow&style=for-the-badge&logo=npm&color=blue)](https://www.npmjs.com/package/claude-flow)
12
- [![npm downloads (claude-flow)](https://img.shields.io/npm/dm/claude-flow?label=claude-flow%20downloads&style=for-the-badge&logo=npm&color=blue)](https://www.npmjs.com/package/claude-flow)
10
+ [![Ecosystem downloads](https://img.shields.io/badge/ecosystem%20downloads-22.2M%2B-blue?style=for-the-badge&logo=npm)](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.proof.json)
11
+ [![Git clones (14d)](https://img.shields.io/badge/git%20clones%2014d-115k-blueviolet?style=for-the-badge&logo=github)](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.ledger.json)
13
12
 
14
13
  [![Star on GitHub](https://img.shields.io/github/stars/ruvnet/claude-flow?style=for-the-badge&logo=github&color=gold)](https://github.com/ruvnet/claude-flow)
15
14
  [![MIT License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)](https://opensource.org/licenses/MIT)
@@ -17,6 +16,8 @@
17
16
  [![Codex Plugin](https://img.shields.io/badge/Codex-Plugin-412991?style=for-the-badge&logoColor=white&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI%2BPHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0yMi4yODIgOS44MjFhNS45ODUgNS45ODUgMCAwIDAtLjUxNi00LjkxIDYuMDQ2IDYuMDQ2IDAgMCAwLTYuNTEtMi45QTYuMDY1IDYuMDY1IDAgMCAwIDQuOTgxIDQuMThhNS45ODUgNS45ODUgMCAwIDAtMy45OTggMi45IDYuMDQ2IDYuMDQ2IDAgMCAwIC43NDMgNy4wOTcgNS45OCA1Ljk4IDAgMCAwIC41MSA0LjkxMSA2LjA1MSA2LjA1MSAwIDAgMCA2LjUxNSAyLjlBNS45ODUgNS45ODUgMCAwIDAgMTMuMjYgMjRhNi4wNTYgNi4wNTYgMCAwIDAgNS43NzItNC4yMDYgNS45OSA1Ljk5IDAgMCAwIDMuOTk4LTIuOSA2LjA1NiA2LjA1NiAwIDAgMC0uNzQ3LTcuMDczek0xMy4yNiAyMi40M2E0LjQ3NiA0LjQ3NiAwIDAgMS0yLjg3Ni0xLjA0bC4xNDItLjA4IDQuNzc4LTIuNzU4YS43OTUuNzk1IDAgMCAwIC4zOTMtLjY4MXYtNi43MzdsMi4wMiAxLjE2OGEuMDcxLjA3MSAwIDAgMSAuMDM4LjA1MnY1LjU4M2E0LjUwNCA0LjUwNCAwIDAgMS00LjQ5NSA0LjQ5NHpNMy42IDE4LjMwNGE0LjQ3IDQuNDcgMCAwIDEtLjUzNS0zLjAxNGwuMTQyLjA4NSA0Ljc4MyAyLjc1OWEuNzcxLjc3MSAwIDAgMCAuNzgxIDBsNS44NDMtMy4zNjl2Mi4zMzJhLjA4LjA4IDAgMCAxLS4wMzMuMDYyTDkuNzQgMTkuOTVhNC41IDQuNSAwIDAgMS02LjE0LTEuNjQ2ek0yLjM0IDcuODk2YTQuNDg1IDQuNDg1IDAgMCAxIDIuMzY2LTEuOTczVjExLjZhLjc2Ni43NjYgMCAwIDAgLjM4OC42NzdsNS44MTUgMy4zNTQtMi4wMiAxLjE2OGEuMDc2LjA3NiAwIDAgMS0uMDcyIDBsLTQuODMtMi43ODZBNC41MDQgNC41MDQgMCAwIDEgMi4zNCA3Ljg3MnptMTYuNTk3IDMuODU1LTUuODMzLTMuMzg3IDIuMDE2LTEuMTY1YS4wNzYuMDc2IDAgMCAxIC4wNzEgMGw0LjgzIDIuNzkxYTQuNDk0IDQuNDk0IDAgMCAxLS42NzYgOC4xMDR2LTUuNjc3YS43OS43OSAwIDAgMC0uNDA3LS42Njd6bTIuMDEtMy4wMjMtLjE0MS0uMDg1LTQuNzc0LTIuNzgyYS43NzYuNzc2IDAgMCAwLS43ODUgMEw5LjQwOSA5LjIzVjYuODk3YS4wNjYuMDY2IDAgMCAxIC4wMjgtLjA2Mmw0LjgzLTIuNzg3YTQuNDk5IDQuNDk5IDAgMCAxIDYuNjggNC42NnpNOC4zMDcgMTIuODYzbC0yLjAyLTEuMTY0YS4wOC4wOCAwIDAgMS0uMDM4LS4wNTdWNi4wNzRhNC40OTkgNC40OTkgMCAwIDEgNy4zNzYtMy40NTRsLS4xNDIuMDgtNC43NzggMi43NThhLjc5NS43OTUgMCAwIDAtLjM5My42ODJ6bTEuMDk3LTIuMzY2IDIuNjAyLTEuNSAyLjYwNyAxLjV2Mi45OTlsLTIuNTk3IDEuNS0yLjYwNy0xLjVaIi8%2BPC9zdmc%2B)](https://www.npmjs.com/package/@claude-flow/codex)
18
17
  [![🕸️ RuVector Graph Ai](https://img.shields.io/badge/RuVector_Agentic-DB-06b6d4?style=for-the-badge&logoColor=white&logo=graphql)](https://github.com/ruvnet/ruvector)
19
18
 
19
+ [![RuFlo Agentic Appliance](v3/docs/assets/RuFlo-agentic-appliance.png)](https://cognitum.one/appliance)
20
+
20
21
  [![ruFlo Summit — Budapest, June 2–3, 2026](v3/docs/assets/ruFlo-Summit.jpg)](https://github.com/ruvnet/ruflo/issues/1967)
21
22
 
22
23
  # Ruflo
@@ -71,14 +72,14 @@ There are **two different install paths** with very different surface areas. Pic
71
72
  # Install core + any plugins you need
72
73
  /plugin install ruflo-core@ruflo
73
74
  /plugin install ruflo-swarm@ruflo
74
- /plugin install ruflo-autopilot@ruflo
75
- /plugin install ruflo-federation@ruflo
75
+ /plugin install ruflo-rag-memory@ruflo
76
+ /plugin install ruflo-neural-trader@ruflo
76
77
  ```
77
78
 
78
79
  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.
79
80
 
80
81
  <details>
81
- <summary><strong>🔌 All 32 plugins</strong></summary>
82
+ <summary><strong>🔌 All 33 plugins</strong></summary>
82
83
 
83
84
  #### Core & Orchestration
84
85
 
@@ -106,6 +107,7 @@ This adds slash commands and agent definitions only. The Ruflo MCP server is NOT
106
107
  | Plugin | What it does |
107
108
  |--------|-------------|
108
109
  | [**ruflo-intelligence**](plugins/ruflo-intelligence/README.md) | Agents learn from past successes and get smarter |
110
+ | [**ruflo-graph-intelligence**](plugins/ruflo-graph-intelligence/) | Sublinear graph reasoning — PageRank, delta updates, complexity-aware execution (ADR-123) |
109
111
  | [**ruflo-daa**](plugins/ruflo-daa/README.md) | Dynamic agent behavior and cognitive patterns |
110
112
  | [**ruflo-ruvllm**](plugins/ruflo-ruvllm/README.md) | Run local LLMs (Ollama, etc.) with smart routing |
111
113
  | [**ruflo-goals**](plugins/ruflo-goals/README.md) | Break big goals into plans and track progress |
@@ -162,6 +162,19 @@ const retrieveCommand = {
162
162
  description: 'Memory namespace',
163
163
  type: 'string',
164
164
  default: 'default'
165
+ },
166
+ // #2073: --format is the GLOBAL option (parser.ts:78) with choices
167
+ // ['text', 'json', 'table'] and default 'text'. The retrieve handler
168
+ // discriminates: 'json' emits parseable JSON, anything else (text/box/...)
169
+ // emits the human-readable box. No per-command override needed; we just
170
+ // document the behavior in the help text via examples.
171
+ {
172
+ // #2073: --value-only emits ONLY the value string (no wrapper).
173
+ // Designed for piping into JSON.parse without any cleanup.
174
+ name: 'value-only',
175
+ description: 'Print only the stored value to stdout (no wrapper)',
176
+ type: 'boolean',
177
+ default: false
165
178
  }
166
179
  ],
167
180
  action: async (ctx) => {
@@ -184,6 +197,17 @@ const retrieveCommand = {
184
197
  return { success: false, exitCode: 1, data: { key, found: false } };
185
198
  }
186
199
  const entry = result.entry;
200
+ // #2073: --value-only emits just the raw value (no decoration) for
201
+ // piping into JSON.parse / jq / other downstream parsers without
202
+ // any cleanup.
203
+ if (ctx.flags['value-only'] || ctx.flags.valueOnly) {
204
+ // Use process.stdout.write directly to bypass any printer-side
205
+ // transformation of quotes/structural characters.
206
+ process.stdout.write(entry.content);
207
+ if (process.stdout.isTTY)
208
+ process.stdout.write('\n');
209
+ return { success: true, data: entry };
210
+ }
187
211
  if (ctx.flags.format === 'json') {
188
212
  output.printJson(entry);
189
213
  return { success: true, data: entry };
@@ -39,9 +39,15 @@ export function generateSettings(options) {
39
39
  // line into the user's commits — that pattern silently inflated GitHub
40
40
  // contributor graphs and was hard to undo without rewriting history. Pass
41
41
  // `--attribution` (or `attribution: true` in InitOptions) to enable.
42
+ //
43
+ // #2078 — when the user DOES opt in, write a no-reply bot email so GitHub
44
+ // treats this as a tool, not a personal contribution. Personal emails get
45
+ // added to user repos' contributor graphs even when the trailer is opt-in.
46
+ // `ruflo-bot@users.noreply.github.com` is GitHub's no-reply convention and
47
+ // is excluded from contributor graphs / mapped to a tool identity.
42
48
  if (options.attribution === true) {
43
49
  settings.attribution = {
44
- commit: 'Co-Authored-By: RuFlo <ruv@ruv.net>',
50
+ commit: 'Co-Authored-By: ruflo-bot <ruflo-bot@users.noreply.github.com>',
45
51
  pr: '🤖 Generated with [RuFlo](https://github.com/ruvnet/ruflo)',
46
52
  };
47
53
  }
@@ -1149,14 +1149,23 @@ export const memoryTools = [
1149
1149
  if (!v.valid)
1150
1150
  throw new Error(v.error);
1151
1151
  }
1152
- const all = await listEntries({ limit: 100000, namespace });
1152
+ // #2073: pass includeContent so the value field carries the actual
1153
+ // entry body. Without this, `value` is always null because listEntries
1154
+ // strips content by default (callers pay for the JSON parse only when
1155
+ // they need it).
1156
+ const all = await listEntries({ limit: 100000, namespace, includeContent: true });
1153
1157
  const payload = {
1154
1158
  schema: 'ruflo-memory-export/v1',
1155
1159
  exportedAt: new Date().toISOString(),
1156
1160
  namespace: namespace ?? null,
1157
1161
  count: all.entries.length,
1158
1162
  entries: all.entries.map(e => ({
1159
- key: e.key, namespace: e.namespace, value: e.value ?? null,
1163
+ key: e.key,
1164
+ namespace: e.namespace,
1165
+ // #2073: `e.content` is the stored value string; `e.value` was a
1166
+ // never-populated alias. Fall back to null only if content is
1167
+ // missing for backward-compat with the schema.
1168
+ value: typeof e.content === 'string' ? e.content : (e.value ?? null),
1160
1169
  createdAt: e.createdAt, updatedAt: e.updatedAt, accessCount: e.accessCount, hasEmbedding: e.hasEmbedding, size: e.size,
1161
1170
  })),
1162
1171
  };
@@ -5,7 +5,23 @@
5
5
  * All tools gracefully degrade when the WASM package is not installed.
6
6
  */
7
7
  import { validateIdentifier, validateText } from './validate-input.js';
8
+ // #2086 — every ruvllm_* MCP handler that touches the WASM runtime calls
9
+ // this. The downstream `createSonaInstant`/`createMicroLora`/`createHnswRouter`
10
+ // helpers all need `initSync({ module: wasmBytes })` to have run, otherwise
11
+ // the WASM exports throw. Doing it here makes the bootstrap invisible to
12
+ // MCP callers — they don't need a separate `ruvllm_init` tool. `_wasmReady`
13
+ // inside `initRuvllmWasm` short-circuits on the second+ call, so the cost
14
+ // after the first invocation is one boolean check.
15
+ //
16
+ // `ruvllm_status` deliberately uses `loadRuvllmWasmModule()` (no init) so a
17
+ // caller diagnosing why nothing works gets `initialized=false` instead of
18
+ // an error from a failed init.
8
19
  async function loadRuvllmWasm() {
20
+ const mod = await loadRuvllmWasmModule();
21
+ await mod.initRuvllmWasm();
22
+ return mod;
23
+ }
24
+ async function loadRuvllmWasmModule() {
9
25
  return import('../ruvector/ruvllm-wasm.js');
10
26
  }
11
27
  export const ruvllmWasmTools = [
@@ -15,7 +31,7 @@ export const ruvllmWasmTools = [
15
31
  inputSchema: { type: 'object', properties: {} },
16
32
  handler: async () => {
17
33
  try {
18
- const mod = await loadRuvllmWasm();
34
+ const mod = await loadRuvllmWasmModule();
19
35
  const wasmStatus = await mod.getRuvllmStatus();
20
36
  // Also include native ruvllm CJS backend status (ADR-086)
21
37
  let nativeBackend = { available: false };
@@ -76,6 +76,8 @@ export declare function bridgeListEntries(options: {
76
76
  limit?: number;
77
77
  offset?: number;
78
78
  dbPath?: string;
79
+ /** #2073: When true, include the entry's full `content` string in each result. */
80
+ includeContent?: boolean;
79
81
  }): Promise<{
80
82
  success: boolean;
81
83
  entries: {
@@ -87,6 +89,8 @@ export declare function bridgeListEntries(options: {
87
89
  createdAt: string;
88
90
  updatedAt: string;
89
91
  hasEmbedding: boolean;
92
+ /** #2073: Present when `includeContent: true` was requested. */
93
+ content?: string;
90
94
  }[];
91
95
  total: number;
92
96
  error?: string;
@@ -751,8 +751,10 @@ export async function bridgeListEntries(options) {
751
751
  `);
752
752
  const rows = stmt.all(...nsParams, limit, offset);
753
753
  for (const row of rows) {
754
- entries.push({
755
- id: String(row.id).substring(0, 20),
754
+ const entry = {
755
+ // #2073: don't truncate id when content is requested — callers
756
+ // (notably memory_export) need the full id to round-trip via import.
757
+ id: options.includeContent ? String(row.id) : String(row.id).substring(0, 20),
756
758
  key: row.key || String(row.id).substring(0, 15),
757
759
  namespace: row.namespace || 'default',
758
760
  size: (row.content || '').length,
@@ -760,7 +762,11 @@ export async function bridgeListEntries(options) {
760
762
  createdAt: row.created_at || new Date().toISOString(),
761
763
  updatedAt: row.updated_at || new Date().toISOString(),
762
764
  hasEmbedding: !!(row.embedding && String(row.embedding).length > 10),
763
- });
765
+ };
766
+ if (options.includeContent) {
767
+ entry.content = row.content || '';
768
+ }
769
+ entries.push(entry);
764
770
  }
765
771
  }
766
772
  catch {
@@ -344,6 +344,8 @@ export declare function listEntries(options: {
344
344
  limit?: number;
345
345
  offset?: number;
346
346
  dbPath?: string;
347
+ /** #2073: When true, include the entry's full `content` string in each result. */
348
+ includeContent?: boolean;
347
349
  }): Promise<{
348
350
  success: boolean;
349
351
  entries: {
@@ -355,6 +357,8 @@ export declare function listEntries(options: {
355
357
  createdAt: string;
356
358
  updatedAt: string;
357
359
  hasEmbedding: boolean;
360
+ /** #2073: Present when `includeContent: true` was requested. */
361
+ content?: string;
358
362
  }[];
359
363
  total: number;
360
364
  error?: string;
@@ -2116,8 +2116,10 @@ export async function listEntries(options) {
2116
2116
  if (result[0]?.values) {
2117
2117
  for (const row of result[0].values) {
2118
2118
  const [id, key, ns, content, embedding, accessCount, createdAt, updatedAt] = row;
2119
- entries.push({
2120
- id: String(id).substring(0, 20),
2119
+ const entry = {
2120
+ // #2073: don't truncate id when content is requested — callers
2121
+ // (notably memory_export) need the full id to round-trip via import.
2122
+ id: options.includeContent ? String(id) : String(id).substring(0, 20),
2121
2123
  key: key || String(id).substring(0, 15),
2122
2124
  namespace: ns || 'default',
2123
2125
  size: (content || '').length,
@@ -2125,7 +2127,11 @@ export async function listEntries(options) {
2125
2127
  createdAt: createdAt || new Date().toISOString(),
2126
2128
  updatedAt: updatedAt || new Date().toISOString(),
2127
2129
  hasEmbedding: !!embedding && embedding.length > 10
2128
- });
2130
+ };
2131
+ if (options.includeContent) {
2132
+ entry.content = content || '';
2133
+ }
2134
+ entries.push(entry);
2129
2135
  }
2130
2136
  }
2131
2137
  db.close();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claude-flow/cli",
3
- "version": "3.7.0-alpha.71",
3
+ "version": "3.7.0-alpha.73",
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",