claude-flow 3.7.0-alpha.71 → 3.7.0-alpha.72
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 +6 -6
- package/package.json +1 -1
- package/v3/@claude-flow/cli/README.md +6 -6
- package/v3/@claude-flow/cli/dist/src/commands/memory.js +24 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js +11 -2
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.d.ts +4 -0
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +9 -3
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.d.ts +4 -0
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +9 -3
- package/v3/@claude-flow/cli/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
[](https://goal.ruv.io/agents)
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/ruflo)
|
|
10
|
-
[](https://www.npmjs.com/package/claude-flow)
|
|
10
|
+
[](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.proof.json)
|
|
11
|
+
[](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.ledger.json)
|
|
13
12
|
|
|
14
13
|
[](https://github.com/ruvnet/claude-flow)
|
|
15
14
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -71,14 +70,14 @@ There are **two different install paths** with very different surface areas. Pic
|
|
|
71
70
|
# Install core + any plugins you need
|
|
72
71
|
/plugin install ruflo-core@ruflo
|
|
73
72
|
/plugin install ruflo-swarm@ruflo
|
|
74
|
-
/plugin install ruflo-
|
|
75
|
-
/plugin install ruflo-
|
|
73
|
+
/plugin install ruflo-rag-memory@ruflo
|
|
74
|
+
/plugin install ruflo-neural-trader@ruflo
|
|
76
75
|
```
|
|
77
76
|
|
|
78
77
|
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
78
|
|
|
80
79
|
<details>
|
|
81
|
-
<summary><strong>🔌 All
|
|
80
|
+
<summary><strong>🔌 All 33 plugins</strong></summary>
|
|
82
81
|
|
|
83
82
|
#### Core & Orchestration
|
|
84
83
|
|
|
@@ -106,6 +105,7 @@ This adds slash commands and agent definitions only. The Ruflo MCP server is NOT
|
|
|
106
105
|
| Plugin | What it does |
|
|
107
106
|
|--------|-------------|
|
|
108
107
|
| [**ruflo-intelligence**](plugins/ruflo-intelligence/README.md) | Agents learn from past successes and get smarter |
|
|
108
|
+
| [**ruflo-graph-intelligence**](plugins/ruflo-graph-intelligence/) | Sublinear graph reasoning — PageRank, delta updates, complexity-aware execution (ADR-123) |
|
|
109
109
|
| [**ruflo-daa**](plugins/ruflo-daa/README.md) | Dynamic agent behavior and cognitive patterns |
|
|
110
110
|
| [**ruflo-ruvllm**](plugins/ruflo-ruvllm/README.md) | Run local LLMs (Ollama, etc.) with smart routing |
|
|
111
111
|
| [**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.
|
|
3
|
+
"version": "3.7.0-alpha.72",
|
|
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",
|
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
[](https://goal.ruv.io/agents)
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/ruflo)
|
|
10
|
-
[](https://www.npmjs.com/package/claude-flow)
|
|
10
|
+
[](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.proof.json)
|
|
11
|
+
[](https://github.com/ruvnet/ruflo/blob/main/data/clone-data.ledger.json)
|
|
13
12
|
|
|
14
13
|
[](https://github.com/ruvnet/claude-flow)
|
|
15
14
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -71,14 +70,14 @@ There are **two different install paths** with very different surface areas. Pic
|
|
|
71
70
|
# Install core + any plugins you need
|
|
72
71
|
/plugin install ruflo-core@ruflo
|
|
73
72
|
/plugin install ruflo-swarm@ruflo
|
|
74
|
-
/plugin install ruflo-
|
|
75
|
-
/plugin install ruflo-
|
|
73
|
+
/plugin install ruflo-rag-memory@ruflo
|
|
74
|
+
/plugin install ruflo-neural-trader@ruflo
|
|
76
75
|
```
|
|
77
76
|
|
|
78
77
|
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
78
|
|
|
80
79
|
<details>
|
|
81
|
-
<summary><strong>🔌 All
|
|
80
|
+
<summary><strong>🔌 All 33 plugins</strong></summary>
|
|
82
81
|
|
|
83
82
|
#### Core & Orchestration
|
|
84
83
|
|
|
@@ -106,6 +105,7 @@ This adds slash commands and agent definitions only. The Ruflo MCP server is NOT
|
|
|
106
105
|
| Plugin | What it does |
|
|
107
106
|
|--------|-------------|
|
|
108
107
|
| [**ruflo-intelligence**](plugins/ruflo-intelligence/README.md) | Agents learn from past successes and get smarter |
|
|
108
|
+
| [**ruflo-graph-intelligence**](plugins/ruflo-graph-intelligence/) | Sublinear graph reasoning — PageRank, delta updates, complexity-aware execution (ADR-123) |
|
|
109
109
|
| [**ruflo-daa**](plugins/ruflo-daa/README.md) | Dynamic agent behavior and cognitive patterns |
|
|
110
110
|
| [**ruflo-ruvllm**](plugins/ruflo-ruvllm/README.md) | Run local LLMs (Ollama, etc.) with smart routing |
|
|
111
111
|
| [**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 };
|
|
@@ -1149,14 +1149,23 @@ export const memoryTools = [
|
|
|
1149
1149
|
if (!v.valid)
|
|
1150
1150
|
throw new Error(v.error);
|
|
1151
1151
|
}
|
|
1152
|
-
|
|
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,
|
|
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
|
};
|
|
@@ -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
|
-
|
|
755
|
-
|
|
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
|
-
|
|
2120
|
-
|
|
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.
|
|
3
|
+
"version": "3.7.0-alpha.72",
|
|
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",
|