@sparkleideas/cli 3.1.0-alpha.21 → 3.1.0-alpha.22
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/dist/src/appliance/rvfa-builder.js +4 -4
- package/dist/src/appliance/rvfa-format.d.ts +1 -1
- package/dist/src/appliance/rvfa-format.js +1 -1
- package/dist/src/appliance/rvfa-runner.js +8 -8
- package/dist/src/commands/agent.js +15 -15
- package/dist/src/commands/analyze.js +52 -52
- package/dist/src/commands/appliance-advanced.js +1 -1
- package/dist/src/commands/appliance.js +16 -16
- package/dist/src/commands/benchmark.js +14 -14
- package/dist/src/commands/categories.js +1 -1
- package/dist/src/commands/claims.js +16 -16
- package/dist/src/commands/completions.js +37 -37
- package/dist/src/commands/config.js +9 -9
- package/dist/src/commands/daemon.js +21 -21
- package/dist/src/commands/deployment.js +15 -15
- package/dist/src/commands/doctor.js +26 -26
- package/dist/src/commands/embeddings.js +48 -48
- package/dist/src/commands/guidance.js +22 -22
- package/dist/src/commands/hive-mind.js +21 -21
- package/dist/src/commands/hooks.js +105 -105
- package/dist/src/commands/init.js +32 -32
- package/dist/src/commands/issues.js +6 -6
- package/dist/src/commands/mcp.js +13 -13
- package/dist/src/commands/memory.js +35 -35
- package/dist/src/commands/migrate.js +6 -6
- package/dist/src/commands/neural.js +31 -31
- package/dist/src/commands/performance.js +13 -13
- package/dist/src/commands/plugins.js +26 -26
- package/dist/src/commands/process.js +32 -32
- package/dist/src/commands/progress.js +5 -5
- package/dist/src/commands/providers.js +13 -13
- package/dist/src/commands/route.js +26 -26
- package/dist/src/commands/ruvector/backup.js +9 -9
- package/dist/src/commands/ruvector/benchmark.js +4 -4
- package/dist/src/commands/ruvector/import.d.ts +3 -3
- package/dist/src/commands/ruvector/import.js +11 -11
- package/dist/src/commands/ruvector/index.js +9 -9
- package/dist/src/commands/ruvector/init.js +7 -7
- package/dist/src/commands/ruvector/migrate.js +5 -5
- package/dist/src/commands/ruvector/optimize.js +7 -7
- package/dist/src/commands/ruvector/setup.d.ts +3 -3
- package/dist/src/commands/ruvector/setup.js +9 -9
- package/dist/src/commands/ruvector/status.js +4 -4
- package/dist/src/commands/security.js +19 -19
- package/dist/src/commands/session.js +13 -13
- package/dist/src/commands/start.js +13 -13
- package/dist/src/commands/status.js +9 -9
- package/dist/src/commands/swarm.js +7 -7
- package/dist/src/commands/task.js +9 -9
- package/dist/src/commands/transfer-store.js +16 -16
- package/dist/src/commands/update.js +2 -2
- package/dist/src/commands/workflow.js +13 -13
- package/dist/src/config-adapter.js +3 -3
- package/dist/src/index.js +1 -1
- package/dist/src/init/claudemd-generator.js +1 -1
- package/dist/src/init/executor.js +6 -6
- package/dist/src/init/helpers-generator.js +4 -4
- package/dist/src/init/mcp-generator.js +6 -6
- package/dist/src/init/settings-generator.js +4 -4
- package/dist/src/init/statusline-generator.js +12 -12
- package/dist/src/init/types.d.ts +4 -4
- package/dist/src/init/types.js +3 -3
- package/dist/src/mcp-server.js +2 -2
- package/dist/src/mcp-tools/auto-install.js +5 -5
- package/dist/src/mcp-tools/hooks-tools.js +1 -1
- package/dist/src/mcp-tools/neural-tools.js +6 -6
- package/dist/src/mcp-tools/security-tools.js +2 -2
- package/dist/src/memory/memory-bridge.d.ts +4 -4
- package/dist/src/memory/memory-bridge.js +15 -15
- package/dist/src/memory/memory-initializer.js +10 -10
- package/dist/src/plugins/manager.js +8 -8
- package/dist/src/plugins/tests/demo-plugin-store.js +6 -6
- package/dist/src/ruvector/enhanced-model-router.js +3 -3
- package/dist/src/services/agentic-flow-bridge.d.ts +11 -11
- package/dist/src/services/agentic-flow-bridge.js +11 -11
- package/dist/src/services/container-worker-pool.js +2 -2
- package/dist/src/services/worker-queue.js +1 -1
- package/dist/src/suggest.js +1 -1
- package/dist/src/transfer/models/seraphine.js +1 -1
- package/dist/src/transfer/serialization/cfp.js +1 -1
- package/dist/src/transfer/store/discovery.js +1 -1
- package/dist/src/types.d.ts +1 -1
- package/dist/src/update/validator.js +1 -1
- package/package.json +1 -1
|
@@ -18,9 +18,9 @@ export const storeListCommand = {
|
|
|
18
18
|
{ name: 'limit', short: 'l', type: 'number', description: 'Maximum results', default: 20 },
|
|
19
19
|
],
|
|
20
20
|
examples: [
|
|
21
|
-
{ command: '
|
|
22
|
-
{ command: '
|
|
23
|
-
{ command: '
|
|
21
|
+
{ command: 'claude-flow hooks transfer store list', description: 'List all patterns' },
|
|
22
|
+
{ command: 'claude-flow hooks transfer store list --category routing', description: 'List routing patterns' },
|
|
23
|
+
{ command: 'claude-flow hooks transfer store list --featured', description: 'List featured patterns' },
|
|
24
24
|
],
|
|
25
25
|
action: async (ctx) => {
|
|
26
26
|
const registryName = ctx.flags.registry;
|
|
@@ -116,8 +116,8 @@ export const storeSearchCommand = {
|
|
|
116
116
|
{ name: 'limit', type: 'number', description: 'Maximum results', default: 20 },
|
|
117
117
|
],
|
|
118
118
|
examples: [
|
|
119
|
-
{ command: '
|
|
120
|
-
{ command: '
|
|
119
|
+
{ command: 'claude-flow hooks transfer store search -q "routing"', description: 'Search for routing patterns' },
|
|
120
|
+
{ command: 'claude-flow hooks transfer store search -q "react" --language typescript', description: 'Search with filters' },
|
|
121
121
|
],
|
|
122
122
|
action: async (ctx) => {
|
|
123
123
|
const query = (ctx.args[0] || ctx.flags.query);
|
|
@@ -184,8 +184,8 @@ export const storeDownloadCommand = {
|
|
|
184
184
|
{ name: 'import', short: 'i', type: 'boolean', description: 'Import after download' },
|
|
185
185
|
],
|
|
186
186
|
examples: [
|
|
187
|
-
{ command: '
|
|
188
|
-
{ command: '
|
|
187
|
+
{ command: 'claude-flow hooks transfer store download -n seraphine-genesis', description: 'Download pattern' },
|
|
188
|
+
{ command: 'claude-flow hooks transfer store download -n seraphine-genesis --import', description: 'Download and import' },
|
|
189
189
|
],
|
|
190
190
|
action: async (ctx) => {
|
|
191
191
|
const patternName = (ctx.args[0] || ctx.flags.name);
|
|
@@ -257,7 +257,7 @@ export const storePublishCommand = {
|
|
|
257
257
|
{ name: 'framework', type: 'string', description: 'Primary framework' },
|
|
258
258
|
],
|
|
259
259
|
examples: [
|
|
260
|
-
{ command: '
|
|
260
|
+
{ command: 'claude-flow hooks transfer store publish -i patterns.cfp -n my-patterns -d "My patterns" -c routing -t custom', description: 'Publish pattern' },
|
|
261
261
|
],
|
|
262
262
|
action: async (ctx) => {
|
|
263
263
|
const inputPath = ctx.flags.input;
|
|
@@ -323,7 +323,7 @@ export const storeInfoCommand = {
|
|
|
323
323
|
{ name: 'name', short: 'n', type: 'string', description: 'Pattern name or ID', required: true },
|
|
324
324
|
],
|
|
325
325
|
examples: [
|
|
326
|
-
{ command: '
|
|
326
|
+
{ command: 'claude-flow hooks transfer store info -n seraphine-genesis', description: 'Show pattern info' },
|
|
327
327
|
],
|
|
328
328
|
action: async (ctx) => {
|
|
329
329
|
const patternName = (ctx.args[0] || ctx.flags.name);
|
|
@@ -398,10 +398,10 @@ export const storeCommand = {
|
|
|
398
398
|
storeInfoCommand,
|
|
399
399
|
],
|
|
400
400
|
examples: [
|
|
401
|
-
{ command: '
|
|
402
|
-
{ command: '
|
|
403
|
-
{ command: '
|
|
404
|
-
{ command: '
|
|
401
|
+
{ command: 'claude-flow hooks transfer store list', description: 'List patterns' },
|
|
402
|
+
{ command: 'claude-flow hooks transfer store search -q "routing"', description: 'Search patterns' },
|
|
403
|
+
{ command: 'claude-flow hooks transfer store download -n seraphine-genesis', description: 'Download pattern' },
|
|
404
|
+
{ command: 'claude-flow hooks transfer store publish -i patterns.cfp ...', description: 'Publish pattern' },
|
|
405
405
|
],
|
|
406
406
|
action: async () => {
|
|
407
407
|
output.writeln();
|
|
@@ -418,9 +418,9 @@ export const storeCommand = {
|
|
|
418
418
|
]);
|
|
419
419
|
output.writeln();
|
|
420
420
|
output.writeln('Example:');
|
|
421
|
-
output.writeln(output.dim('
|
|
422
|
-
output.writeln(output.dim('
|
|
423
|
-
output.writeln(output.dim('
|
|
421
|
+
output.writeln(output.dim(' claude-flow hooks transfer store list --featured'));
|
|
422
|
+
output.writeln(output.dim(' claude-flow hooks transfer store search -q "routing"'));
|
|
423
|
+
output.writeln(output.dim(' claude-flow hooks transfer store download -n seraphine-genesis'));
|
|
424
424
|
return { success: true };
|
|
425
425
|
},
|
|
426
426
|
};
|
|
@@ -91,7 +91,7 @@ const checkCommand = {
|
|
|
91
91
|
if (manualUpdates.length > 0) {
|
|
92
92
|
output.writeln();
|
|
93
93
|
output.printInfo('To update manually, run:');
|
|
94
|
-
output.writeln('
|
|
94
|
+
output.writeln(' claude-flow update all');
|
|
95
95
|
}
|
|
96
96
|
return { success: true };
|
|
97
97
|
}
|
|
@@ -268,7 +268,7 @@ const updateCommand = {
|
|
|
268
268
|
`${output.dim('CLAUDE_FLOW_FORCE_UPDATE=true')} - Force update check`,
|
|
269
269
|
]);
|
|
270
270
|
output.writeln();
|
|
271
|
-
output.writeln('Run "
|
|
271
|
+
output.writeln('Run "claude-flow update <subcommand> --help" for subcommand help');
|
|
272
272
|
return { success: true };
|
|
273
273
|
},
|
|
274
274
|
};
|
|
@@ -68,9 +68,9 @@ const runCommand = {
|
|
|
68
68
|
}
|
|
69
69
|
],
|
|
70
70
|
examples: [
|
|
71
|
-
{ command: '
|
|
72
|
-
{ command: '
|
|
73
|
-
{ command: '
|
|
71
|
+
{ command: 'claude-flow workflow run -t development --task "Build auth system"', description: 'Run development workflow' },
|
|
72
|
+
{ command: 'claude-flow workflow run -f ./workflow.yaml', description: 'Run from file' },
|
|
73
|
+
{ command: 'claude-flow workflow run -t sparc --dry-run', description: 'Validate SPARC workflow' }
|
|
74
74
|
],
|
|
75
75
|
action: async (ctx) => {
|
|
76
76
|
let template = ctx.flags.template;
|
|
@@ -143,7 +143,7 @@ const runCommand = {
|
|
|
143
143
|
});
|
|
144
144
|
if (!dryRun) {
|
|
145
145
|
output.writeln();
|
|
146
|
-
output.printInfo(`Track progress:
|
|
146
|
+
output.printInfo(`Track progress: claude-flow workflow status ${result.workflowId}`);
|
|
147
147
|
}
|
|
148
148
|
return { success: true, data: result };
|
|
149
149
|
}
|
|
@@ -180,8 +180,8 @@ const validateCommand = {
|
|
|
180
180
|
}
|
|
181
181
|
],
|
|
182
182
|
examples: [
|
|
183
|
-
{ command: '
|
|
184
|
-
{ command: '
|
|
183
|
+
{ command: 'claude-flow workflow validate -f ./workflow.yaml', description: 'Validate workflow file' },
|
|
184
|
+
{ command: 'claude-flow workflow validate -f ./workflow.json --strict', description: 'Strict validation' }
|
|
185
185
|
],
|
|
186
186
|
action: async (ctx) => {
|
|
187
187
|
const file = ctx.flags.file || ctx.args[0];
|
|
@@ -504,7 +504,7 @@ const templateCommand = {
|
|
|
504
504
|
return { success: false, exitCode: 1 };
|
|
505
505
|
}
|
|
506
506
|
output.printSuccess(`Template "${name}" created`);
|
|
507
|
-
output.writeln(output.dim(' Use with:
|
|
507
|
+
output.writeln(output.dim(' Use with: claude-flow workflow run -t ' + name));
|
|
508
508
|
return { success: true, data: { name, created: true } };
|
|
509
509
|
}
|
|
510
510
|
}
|
|
@@ -513,7 +513,7 @@ const templateCommand = {
|
|
|
513
513
|
output.writeln();
|
|
514
514
|
output.writeln(output.bold('Template Management'));
|
|
515
515
|
output.writeln();
|
|
516
|
-
output.writeln('Usage:
|
|
516
|
+
output.writeln('Usage: claude-flow workflow template <subcommand>');
|
|
517
517
|
output.writeln();
|
|
518
518
|
output.writeln('Subcommands:');
|
|
519
519
|
output.printList([
|
|
@@ -531,15 +531,15 @@ export const workflowCommand = {
|
|
|
531
531
|
subcommands: [runCommand, validateCommand, listCommand, statusCommand, stopCommand, templateCommand],
|
|
532
532
|
options: [],
|
|
533
533
|
examples: [
|
|
534
|
-
{ command: '
|
|
535
|
-
{ command: '
|
|
536
|
-
{ command: '
|
|
534
|
+
{ command: 'claude-flow workflow run -t development --task "Build feature"', description: 'Run workflow' },
|
|
535
|
+
{ command: 'claude-flow workflow validate -f ./workflow.yaml', description: 'Validate workflow' },
|
|
536
|
+
{ command: 'claude-flow workflow list', description: 'List workflows' }
|
|
537
537
|
],
|
|
538
538
|
action: async () => {
|
|
539
539
|
output.writeln();
|
|
540
540
|
output.writeln(output.bold('Workflow Commands'));
|
|
541
541
|
output.writeln();
|
|
542
|
-
output.writeln('Usage:
|
|
542
|
+
output.writeln('Usage: claude-flow workflow <subcommand> [options]');
|
|
543
543
|
output.writeln();
|
|
544
544
|
output.writeln('Subcommands:');
|
|
545
545
|
output.printList([
|
|
@@ -551,7 +551,7 @@ export const workflowCommand = {
|
|
|
551
551
|
`${output.highlight('template')} - Manage templates`
|
|
552
552
|
]);
|
|
553
553
|
output.writeln();
|
|
554
|
-
output.writeln('Run "
|
|
554
|
+
output.writeln('Run "claude-flow workflow <subcommand> --help" for more info');
|
|
555
555
|
return { success: true };
|
|
556
556
|
}
|
|
557
557
|
};
|
|
@@ -109,7 +109,7 @@ export function v3ConfigToSystemConfig(v3Config) {
|
|
|
109
109
|
type: denormalizeMemoryBackend(v3Config.memory.backend),
|
|
110
110
|
path: v3Config.memory.persistPath,
|
|
111
111
|
maxSize: v3Config.memory.cacheSize,
|
|
112
|
-
|
|
112
|
+
agentdb: {
|
|
113
113
|
dimensions: v3Config.memory.vectorDimension,
|
|
114
114
|
indexType: v3Config.memory.enableHNSW ? 'hnsw' : 'flat',
|
|
115
115
|
efConstruction: 200,
|
|
@@ -118,7 +118,7 @@ export function v3ConfigToSystemConfig(v3Config) {
|
|
|
118
118
|
},
|
|
119
119
|
},
|
|
120
120
|
mcp: {
|
|
121
|
-
name: '
|
|
121
|
+
name: 'claude-flow',
|
|
122
122
|
version: '3.0.0',
|
|
123
123
|
transport: {
|
|
124
124
|
type: v3Config.mcp.transportType,
|
|
@@ -168,7 +168,7 @@ function normalizeMemoryBackend(backend) {
|
|
|
168
168
|
switch (backend) {
|
|
169
169
|
case 'memory':
|
|
170
170
|
case 'sqlite':
|
|
171
|
-
case '
|
|
171
|
+
case 'agentdb':
|
|
172
172
|
case 'hybrid':
|
|
173
173
|
return backend;
|
|
174
174
|
case 'redis':
|
package/dist/src/index.js
CHANGED
|
@@ -38,7 +38,7 @@ export class CLI {
|
|
|
38
38
|
output;
|
|
39
39
|
interactive;
|
|
40
40
|
constructor(options = {}) {
|
|
41
|
-
this.name = options.name || '
|
|
41
|
+
this.name = options.name || 'ruflo';
|
|
42
42
|
this.description = options.description || 'RuFlo V3 - AI Agent Orchestration Platform';
|
|
43
43
|
this.version = options.version || VERSION;
|
|
44
44
|
this.parser = commandParser;
|
|
@@ -342,7 +342,7 @@ function setupAndBoundary() {
|
|
|
342
342
|
return `## Quick Setup
|
|
343
343
|
|
|
344
344
|
\`\`\`bash
|
|
345
|
-
claude mcp add
|
|
345
|
+
claude mcp add claude-flow -- npx -y @sparkleideas/cli@latest
|
|
346
346
|
npx @sparkleideas/cli@latest daemon start
|
|
347
347
|
npx @sparkleideas/cli@latest doctor --fix
|
|
348
348
|
\`\`\`
|
|
@@ -32,7 +32,7 @@ const SKILLS_MAP = {
|
|
|
32
32
|
],
|
|
33
33
|
browser: ['browser'], // agent-browser integration
|
|
34
34
|
dualMode: ['dual-mode'], // Claude Code + Codex hybrid execution
|
|
35
|
-
|
|
35
|
+
agentdb: [
|
|
36
36
|
'agentdb-advanced',
|
|
37
37
|
'agentdb-learning',
|
|
38
38
|
'agentdb-memory-patterns',
|
|
@@ -1545,25 +1545,25 @@ npx @sparkleideas/cli@latest hive-mind consensus --propose "task"
|
|
|
1545
1545
|
### Integrated Packages
|
|
1546
1546
|
| Package | Version | Purpose |
|
|
1547
1547
|
|---------|---------|---------|
|
|
1548
|
-
|
|
|
1549
|
-
|
|
|
1548
|
+
| agentic-flow | 3.0.0-alpha.1 | Core coordination + ReasoningBank + Router |
|
|
1549
|
+
| agentdb | 3.0.0-alpha.10 | Vector database + 8 controllers |
|
|
1550
1550
|
| @ruvector/attention | 0.1.3 | Flash attention |
|
|
1551
1551
|
| @ruvector/sona | 0.1.5 | Neural learning |
|
|
1552
1552
|
|
|
1553
1553
|
### Optional Integrations
|
|
1554
1554
|
| Package | Command |
|
|
1555
1555
|
|---------|---------|
|
|
1556
|
-
|
|
|
1556
|
+
| ruv-swarm | \`npx ruv-swarm mcp start\` |
|
|
1557
1557
|
| flow-nexus | \`npx flow-nexus@latest mcp start\` |
|
|
1558
1558
|
| agentic-jujutsu | \`npx agentic-jujutsu@latest\` |
|
|
1559
1559
|
|
|
1560
1560
|
### MCP Server Setup
|
|
1561
1561
|
\`\`\`bash
|
|
1562
1562
|
# Add Claude Flow MCP
|
|
1563
|
-
claude mcp add
|
|
1563
|
+
claude mcp add claude-flow -- npx -y @sparkleideas/cli@latest
|
|
1564
1564
|
|
|
1565
1565
|
# Optional servers
|
|
1566
|
-
claude mcp add
|
|
1566
|
+
claude mcp add ruv-swarm -- npx -y ruv-swarm mcp start
|
|
1567
1567
|
claude mcp add flow-nexus -- npx -y flow-nexus@latest mcp start
|
|
1568
1568
|
\`\`\`
|
|
1569
1569
|
|
|
@@ -48,7 +48,7 @@ COMMIT_MSG=$(git log -1 --pretty=%B)
|
|
|
48
48
|
|
|
49
49
|
echo "📊 Recording commit metrics..."
|
|
50
50
|
|
|
51
|
-
# Notify
|
|
51
|
+
# Notify claude-flow of commit
|
|
52
52
|
npx @sparkleideas/cli hooks notify \\
|
|
53
53
|
--message "Commit: $COMMIT_MSG" \\
|
|
54
54
|
--level info \\
|
|
@@ -828,7 +828,7 @@ if (!existsSync(DATA_DIR)) mkdirSync(DATA_DIR, { recursive: true });
|
|
|
828
828
|
|
|
829
829
|
async function loadMemoryPackage() {
|
|
830
830
|
// Strategy 1: Use createRequire for CJS-style resolution (handles nested node_modules
|
|
831
|
-
// when installed as a transitive dependency via npx
|
|
831
|
+
// when installed as a transitive dependency via npx ruflo / npx claude-flow)
|
|
832
832
|
try {
|
|
833
833
|
const { createRequire } = await import('module');
|
|
834
834
|
const require = createRequire(join(PROJECT_ROOT, 'package.json'));
|
|
@@ -1047,9 +1047,9 @@ function getDataDir() {
|
|
|
1047
1047
|
|
|
1048
1048
|
switch (platform) {
|
|
1049
1049
|
case 'win32':
|
|
1050
|
-
return path.join(process.env.APPDATA || homeDir, '
|
|
1050
|
+
return path.join(process.env.APPDATA || homeDir, 'claude-flow', 'sessions');
|
|
1051
1051
|
case 'darwin':
|
|
1052
|
-
return path.join(homeDir, 'Library', 'Application Support', '
|
|
1052
|
+
return path.join(homeDir, 'Library', 'Application Support', 'claude-flow', 'sessions');
|
|
1053
1053
|
default:
|
|
1054
1054
|
return path.join(homeDir, '.claude-flow', 'sessions');
|
|
1055
1055
|
}
|
|
@@ -42,7 +42,7 @@ export function generateMCPConfig(options) {
|
|
|
42
42
|
};
|
|
43
43
|
// Claude Flow MCP server (core)
|
|
44
44
|
if (config.claudeFlow) {
|
|
45
|
-
mcpServers['
|
|
45
|
+
mcpServers['claude-flow'] = createMCPServerEntry(['@sparkleideas/cli@latest', 'mcp', 'start'], {
|
|
46
46
|
...npmEnv,
|
|
47
47
|
CLAUDE_FLOW_MODE: 'v3',
|
|
48
48
|
CLAUDE_FLOW_HOOKS_ENABLED: 'true',
|
|
@@ -53,7 +53,7 @@ export function generateMCPConfig(options) {
|
|
|
53
53
|
}
|
|
54
54
|
// Ruv-Swarm MCP server (enhanced coordination)
|
|
55
55
|
if (config.ruvSwarm) {
|
|
56
|
-
mcpServers['
|
|
56
|
+
mcpServers['ruv-swarm'] = createMCPServerEntry(['ruv-swarm', 'mcp', 'start'], { ...npmEnv }, { optional: true });
|
|
57
57
|
}
|
|
58
58
|
// Flow Nexus MCP server (cloud features)
|
|
59
59
|
if (config.flowNexus) {
|
|
@@ -76,10 +76,10 @@ export function generateMCPCommands(options) {
|
|
|
76
76
|
const config = options.mcp;
|
|
77
77
|
if (isWindows()) {
|
|
78
78
|
if (config.claudeFlow) {
|
|
79
|
-
commands.push('claude mcp add
|
|
79
|
+
commands.push('claude mcp add claude-flow -- cmd /c npx -y @sparkleideas/cli@latest mcp start');
|
|
80
80
|
}
|
|
81
81
|
if (config.ruvSwarm) {
|
|
82
|
-
commands.push('claude mcp add
|
|
82
|
+
commands.push('claude mcp add ruv-swarm -- cmd /c npx -y ruv-swarm mcp start');
|
|
83
83
|
}
|
|
84
84
|
if (config.flowNexus) {
|
|
85
85
|
commands.push('claude mcp add flow-nexus -- cmd /c npx -y flow-nexus@latest mcp start');
|
|
@@ -87,10 +87,10 @@ export function generateMCPCommands(options) {
|
|
|
87
87
|
}
|
|
88
88
|
else {
|
|
89
89
|
if (config.claudeFlow) {
|
|
90
|
-
commands.push("claude mcp add
|
|
90
|
+
commands.push("claude mcp add claude-flow -- npx -y @sparkleideas/cli@latest mcp start");
|
|
91
91
|
}
|
|
92
92
|
if (config.ruvSwarm) {
|
|
93
|
-
commands.push("claude mcp add
|
|
93
|
+
commands.push("claude mcp add ruv-swarm -- npx -y ruv-swarm mcp start");
|
|
94
94
|
}
|
|
95
95
|
if (config.flowNexus) {
|
|
96
96
|
commands.push("claude mcp add flow-nexus -- npx -y flow-nexus@latest mcp start");
|
|
@@ -20,7 +20,7 @@ export function generateSettings(options) {
|
|
|
20
20
|
settings.permissions = {
|
|
21
21
|
allow: [
|
|
22
22
|
'Bash(npx @claude-flow*)',
|
|
23
|
-
'Bash(npx
|
|
23
|
+
'Bash(npx claude-flow*)',
|
|
24
24
|
'Bash(node .claude/*)',
|
|
25
25
|
'mcp__claude-flow__:*',
|
|
26
26
|
],
|
|
@@ -29,10 +29,10 @@ export function generateSettings(options) {
|
|
|
29
29
|
'Read(./.env.*)',
|
|
30
30
|
],
|
|
31
31
|
};
|
|
32
|
-
// Add
|
|
32
|
+
// Add claude-flow attribution for git commits and PRs
|
|
33
33
|
settings.attribution = {
|
|
34
|
-
commit: 'Co-Authored-By:
|
|
35
|
-
pr: '🤖 Generated with [
|
|
34
|
+
commit: 'Co-Authored-By: claude-flow <ruv@ruv.net>',
|
|
35
|
+
pr: '🤖 Generated with [claude-flow](https://github.com/ruvnet/claude-flow)',
|
|
36
36
|
};
|
|
37
37
|
// Note: Claude Code expects 'model' to be a string, not an object
|
|
38
38
|
// Model preferences are stored in claudeFlow settings instead
|
|
@@ -311,7 +311,7 @@ function getSwarmStatus() {
|
|
|
311
311
|
function getSystemMetrics() {
|
|
312
312
|
const memoryMB = Math.floor(process.memoryUsage().heapUsed / 1024 / 1024);
|
|
313
313
|
const learning = getLearningStats();
|
|
314
|
-
const
|
|
314
|
+
const agentdb = getAgentDBStats();
|
|
315
315
|
|
|
316
316
|
// Intelligence from learning.json
|
|
317
317
|
const learningData = readJSON(path.join(CWD, '.claude-flow', 'metrics', 'learning.json'));
|
|
@@ -322,7 +322,7 @@ function getSystemMetrics() {
|
|
|
322
322
|
intelligencePct = Math.min(100, Math.floor(learningData.intelligence.score));
|
|
323
323
|
} else {
|
|
324
324
|
const fromPatterns = learning.patterns > 0 ? Math.min(100, Math.floor(learning.patterns / 10)) : 0;
|
|
325
|
-
const fromVectors =
|
|
325
|
+
const fromVectors = agentdb.vectorCount > 0 ? Math.min(100, Math.floor(agentdb.vectorCount / 100)) : 0;
|
|
326
326
|
intelligencePct = Math.max(fromPatterns, fromVectors);
|
|
327
327
|
}
|
|
328
328
|
|
|
@@ -438,8 +438,8 @@ function getAgentDBStats() {
|
|
|
438
438
|
|
|
439
439
|
if (vectorCount === 0) {
|
|
440
440
|
const dbDirs = [
|
|
441
|
-
path.join(CWD, '.claude-flow', '
|
|
442
|
-
path.join(CWD, '.swarm', '
|
|
441
|
+
path.join(CWD, '.claude-flow', 'agentdb'),
|
|
442
|
+
path.join(CWD, '.swarm', 'agentdb'),
|
|
443
443
|
path.join(CWD, '.agentdb'),
|
|
444
444
|
];
|
|
445
445
|
for (const dir of dbDirs) {
|
|
@@ -571,7 +571,7 @@ function generateStatusline() {
|
|
|
571
571
|
const system = getSystemMetrics();
|
|
572
572
|
const adrs = getADRStatus();
|
|
573
573
|
const hooks = getHooksStatus();
|
|
574
|
-
const
|
|
574
|
+
const agentdb = getAgentDBStats();
|
|
575
575
|
const tests = getTestStats();
|
|
576
576
|
const session = getSessionStats();
|
|
577
577
|
const integration = getIntegrationStatus();
|
|
@@ -614,8 +614,8 @@ function generateStatusline() {
|
|
|
614
614
|
// Line 1: DDD Domains
|
|
615
615
|
const domainsColor = progress.domainsCompleted >= 3 ? c.brightGreen : progress.domainsCompleted > 0 ? c.yellow : c.red;
|
|
616
616
|
let perfIndicator;
|
|
617
|
-
if (
|
|
618
|
-
const speedup =
|
|
617
|
+
if (agentdb.hasHnsw && agentdb.vectorCount > 0) {
|
|
618
|
+
const speedup = agentdb.vectorCount > 10000 ? '12500x' : agentdb.vectorCount > 1000 ? '150x' : '10x';
|
|
619
619
|
perfIndicator = c.brightGreen + '\\u26A1 HNSW ' + speedup + c.reset;
|
|
620
620
|
} else if (progress.patternsLearned > 0) {
|
|
621
621
|
const pk = progress.patternsLearned >= 1000 ? (progress.patternsLearned / 1000).toFixed(1) + 'k' : String(progress.patternsLearned);
|
|
@@ -658,9 +658,9 @@ function generateStatusline() {
|
|
|
658
658
|
);
|
|
659
659
|
|
|
660
660
|
// Line 4: AgentDB, Tests, Integration
|
|
661
|
-
const hnswInd =
|
|
662
|
-
const sizeDisp =
|
|
663
|
-
const vectorColor =
|
|
661
|
+
const hnswInd = agentdb.hasHnsw ? c.brightGreen + '\\u26A1' + c.reset : '';
|
|
662
|
+
const sizeDisp = agentdb.dbSizeKB >= 1024 ? (agentdb.dbSizeKB / 1024).toFixed(1) + 'MB' : agentdb.dbSizeKB + 'KB';
|
|
663
|
+
const vectorColor = agentdb.vectorCount > 0 ? c.brightGreen : c.dim;
|
|
664
664
|
const testColor = tests.testFiles > 0 ? c.brightGreen : c.dim;
|
|
665
665
|
|
|
666
666
|
let integStr = '';
|
|
@@ -675,7 +675,7 @@ function generateStatusline() {
|
|
|
675
675
|
|
|
676
676
|
lines.push(
|
|
677
677
|
c.brightCyan + '\\uD83D\\uDCCA AgentDB' + c.reset + ' ' +
|
|
678
|
-
c.cyan + 'Vectors' + c.reset + ' ' + vectorColor + '\\u25CF' +
|
|
678
|
+
c.cyan + 'Vectors' + c.reset + ' ' + vectorColor + '\\u25CF' + agentdb.vectorCount + hnswInd + c.reset + ' ' + c.dim + '\\u2502' + c.reset + ' ' +
|
|
679
679
|
c.cyan + 'Size' + c.reset + ' ' + c.brightWhite + sizeDisp + c.reset + ' ' + c.dim + '\\u2502' + c.reset + ' ' +
|
|
680
680
|
c.cyan + 'Tests' + c.reset + ' ' + testColor + '\\u25CF' + tests.testFiles + c.reset + ' ' + c.dim + '(~' + tests.testCases + ' cases)' + c.reset + ' ' + c.dim + '\\u2502' + c.reset + ' ' +
|
|
681
681
|
integStr
|
|
@@ -695,7 +695,7 @@ function generateJSON() {
|
|
|
695
695
|
system: getSystemMetrics(),
|
|
696
696
|
adrs: getADRStatus(),
|
|
697
697
|
hooks: getHooksStatus(),
|
|
698
|
-
|
|
698
|
+
agentdb: getAgentDBStats(),
|
|
699
699
|
tests: getTestStats(),
|
|
700
700
|
git: { modified: git.modified, untracked: git.untracked, staged: git.staged, ahead: git.ahead, behind: git.behind },
|
|
701
701
|
lastUpdated: new Date().toISOString(),
|
package/dist/src/init/types.d.ts
CHANGED
|
@@ -57,7 +57,7 @@ export interface SkillsConfig {
|
|
|
57
57
|
/** Include core skills (swarm, memory, sparc) */
|
|
58
58
|
core: boolean;
|
|
59
59
|
/** Include AgentDB skills */
|
|
60
|
-
|
|
60
|
+
agentdb: boolean;
|
|
61
61
|
/** Include GitHub integration skills */
|
|
62
62
|
github: boolean;
|
|
63
63
|
/** Include Flow Nexus skills */
|
|
@@ -146,9 +146,9 @@ export interface StatuslineConfig {
|
|
|
146
146
|
* MCP configuration
|
|
147
147
|
*/
|
|
148
148
|
export interface MCPConfig {
|
|
149
|
-
/** Include
|
|
149
|
+
/** Include claude-flow MCP server */
|
|
150
150
|
claudeFlow: boolean;
|
|
151
|
-
/** Include
|
|
151
|
+
/** Include ruv-swarm MCP server */
|
|
152
152
|
ruvSwarm: boolean;
|
|
153
153
|
/** Include flow-nexus MCP server */
|
|
154
154
|
flowNexus: boolean;
|
|
@@ -166,7 +166,7 @@ export interface RuntimeConfig {
|
|
|
166
166
|
/** Maximum agents */
|
|
167
167
|
maxAgents: number;
|
|
168
168
|
/** Memory backend */
|
|
169
|
-
memoryBackend: 'memory' | 'sqlite' | '
|
|
169
|
+
memoryBackend: 'memory' | 'sqlite' | 'agentdb' | 'hybrid';
|
|
170
170
|
/** Enable HNSW indexing */
|
|
171
171
|
enableHNSW: boolean;
|
|
172
172
|
/** Enable neural learning */
|
package/dist/src/init/types.js
CHANGED
|
@@ -70,7 +70,7 @@ export const DEFAULT_INIT_OPTIONS = {
|
|
|
70
70
|
},
|
|
71
71
|
skills: {
|
|
72
72
|
core: true,
|
|
73
|
-
|
|
73
|
+
agentdb: true,
|
|
74
74
|
github: true,
|
|
75
75
|
flowNexus: false,
|
|
76
76
|
browser: true,
|
|
@@ -163,7 +163,7 @@ export const MINIMAL_INIT_OPTIONS = {
|
|
|
163
163
|
},
|
|
164
164
|
skills: {
|
|
165
165
|
core: true,
|
|
166
|
-
|
|
166
|
+
agentdb: false,
|
|
167
167
|
github: false,
|
|
168
168
|
flowNexus: false,
|
|
169
169
|
browser: false,
|
|
@@ -223,7 +223,7 @@ export const FULL_INIT_OPTIONS = {
|
|
|
223
223
|
},
|
|
224
224
|
skills: {
|
|
225
225
|
core: true,
|
|
226
|
-
|
|
226
|
+
agentdb: true,
|
|
227
227
|
github: true,
|
|
228
228
|
flowNexus: true,
|
|
229
229
|
browser: true,
|
package/dist/src/mcp-server.js
CHANGED
|
@@ -252,7 +252,7 @@ export class MCPServerManager extends EventEmitter {
|
|
|
252
252
|
method: 'server.initialized',
|
|
253
253
|
params: {
|
|
254
254
|
serverInfo: {
|
|
255
|
-
name: '
|
|
255
|
+
name: 'claude-flow',
|
|
256
256
|
version: VERSION,
|
|
257
257
|
capabilities: {
|
|
258
258
|
tools: { listChanged: true },
|
|
@@ -330,7 +330,7 @@ export class MCPServerManager extends EventEmitter {
|
|
|
330
330
|
id: message.id,
|
|
331
331
|
result: {
|
|
332
332
|
protocolVersion: '2024-11-05',
|
|
333
|
-
serverInfo: { name: '
|
|
333
|
+
serverInfo: { name: 'claude-flow', version: '3.0.0' },
|
|
334
334
|
capabilities: {
|
|
335
335
|
tools: { listChanged: true },
|
|
336
336
|
resources: { subscribe: true, listChanged: true },
|
|
@@ -21,7 +21,7 @@ export async function autoInstallPackage(packageName, options = {}) {
|
|
|
21
21
|
const validPackageName = /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*(@[a-z0-9-._~]+)?$/i;
|
|
22
22
|
if (!validPackageName.test(packageName)) {
|
|
23
23
|
if (!silent) {
|
|
24
|
-
console.error(`[
|
|
24
|
+
console.error(`[claude-flow] Invalid package name: ${packageName}`);
|
|
25
25
|
}
|
|
26
26
|
return false;
|
|
27
27
|
}
|
|
@@ -32,7 +32,7 @@ export async function autoInstallPackage(packageName, options = {}) {
|
|
|
32
32
|
installAttempts.add(packageName);
|
|
33
33
|
try {
|
|
34
34
|
if (!silent) {
|
|
35
|
-
console.error(`[
|
|
35
|
+
console.error(`[claude-flow] Auto-installing ${packageName}...`);
|
|
36
36
|
}
|
|
37
37
|
// Use spawn with array args to prevent shell injection
|
|
38
38
|
const args = ['install', packageName, save ? '--save' : '--no-save'];
|
|
@@ -45,13 +45,13 @@ export async function autoInstallPackage(packageName, options = {}) {
|
|
|
45
45
|
throw new Error(result.stderr?.toString() || 'Installation failed');
|
|
46
46
|
}
|
|
47
47
|
if (!silent) {
|
|
48
|
-
console.error(`[
|
|
48
|
+
console.error(`[claude-flow] Successfully installed ${packageName}`);
|
|
49
49
|
}
|
|
50
50
|
return true;
|
|
51
51
|
}
|
|
52
52
|
catch (error) {
|
|
53
53
|
if (!silent) {
|
|
54
|
-
console.error(`[
|
|
54
|
+
console.error(`[claude-flow] Failed to auto-install ${packageName}: ${error}`);
|
|
55
55
|
}
|
|
56
56
|
return false;
|
|
57
57
|
}
|
|
@@ -79,7 +79,7 @@ export async function tryImportOrInstall(packageName, options = {}) {
|
|
|
79
79
|
return await import(`${packageName}${cacheBuster}`);
|
|
80
80
|
}
|
|
81
81
|
catch {
|
|
82
|
-
console.error(`[
|
|
82
|
+
console.error(`[claude-flow] ${packageName} installed but failed to load. Restart MCP server.`);
|
|
83
83
|
return null;
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -1967,7 +1967,7 @@ export const hooksPatternSearch = {
|
|
|
1967
1967
|
results: [],
|
|
1968
1968
|
searchTimeMs: 0,
|
|
1969
1969
|
backend: 'unavailable',
|
|
1970
|
-
note: 'Real vector search not available. Initialize memory database with:
|
|
1970
|
+
note: 'Real vector search not available. Initialize memory database with: claude-flow memory init',
|
|
1971
1971
|
};
|
|
1972
1972
|
},
|
|
1973
1973
|
};
|
|
@@ -13,29 +13,29 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
15
15
|
import { join } from 'node:path';
|
|
16
|
-
// Try to import real embeddings — prefer
|
|
16
|
+
// Try to import real embeddings — prefer agentic-flow v3 ReasoningBank, then @sparkleideas/embeddings
|
|
17
17
|
let realEmbeddings = null;
|
|
18
18
|
let embeddingServiceName = 'none';
|
|
19
19
|
try {
|
|
20
|
-
// Tier 1:
|
|
21
|
-
const rb = await import('
|
|
20
|
+
// Tier 1: agentic-flow v3 ReasoningBank (fastest — WASM-accelerated)
|
|
21
|
+
const rb = await import('agentic-flow/reasoningbank').catch(() => null);
|
|
22
22
|
if (rb?.computeEmbedding) {
|
|
23
23
|
realEmbeddings = { embed: (text) => rb.computeEmbedding(text) };
|
|
24
|
-
embeddingServiceName = '
|
|
24
|
+
embeddingServiceName = 'agentic-flow/reasoningbank';
|
|
25
25
|
}
|
|
26
26
|
// Tier 2: @sparkleideas/embeddings
|
|
27
27
|
if (!realEmbeddings) {
|
|
28
28
|
const embeddingsModule = await import('@sparkleideas/embeddings').catch(() => null);
|
|
29
29
|
if (embeddingsModule?.createEmbeddingService) {
|
|
30
30
|
try {
|
|
31
|
-
const service = embeddingsModule.createEmbeddingService({ provider: '
|
|
31
|
+
const service = embeddingsModule.createEmbeddingService({ provider: 'agentic-flow' });
|
|
32
32
|
realEmbeddings = {
|
|
33
33
|
embed: async (text) => {
|
|
34
34
|
const result = await service.embed(text);
|
|
35
35
|
return Array.from(result.embedding);
|
|
36
36
|
},
|
|
37
37
|
};
|
|
38
|
-
embeddingServiceName = '
|
|
38
|
+
embeddingServiceName = 'agentic-flow';
|
|
39
39
|
}
|
|
40
40
|
catch {
|
|
41
41
|
const service = embeddingsModule.createEmbeddingService({ provider: 'mock' });
|
|
@@ -49,7 +49,7 @@ async function getAIDefence() {
|
|
|
49
49
|
}
|
|
50
50
|
installAttempted = true;
|
|
51
51
|
// Second attempt - auto-install and retry
|
|
52
|
-
console.error(`[
|
|
52
|
+
console.error(`[claude-flow] ${packageName} not found, attempting auto-install...`);
|
|
53
53
|
const installed = await autoInstallPackage(packageName);
|
|
54
54
|
if (!installed) {
|
|
55
55
|
throw new Error('AIDefence package not available. Install with: npm install @sparkleideas/aidefence');
|
|
@@ -64,7 +64,7 @@ async function getAIDefence() {
|
|
|
64
64
|
throw new Error('createAIDefence returned null after install');
|
|
65
65
|
}
|
|
66
66
|
aidefenceInstance = instance;
|
|
67
|
-
console.error(`[
|
|
67
|
+
console.error(`[claude-flow] ${packageName} loaded successfully after install`);
|
|
68
68
|
return instance;
|
|
69
69
|
}
|
|
70
70
|
catch (retryError) {
|