@sparkleideas/cli 3.1.0-alpha.20 → 3.1.0-alpha.21
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/commands/benchmark.js +2 -2
- package/dist/src/commands/claims.js +1 -1
- package/dist/src/commands/config.js +1 -1
- package/dist/src/commands/daemon.js +5 -5
- package/dist/src/commands/deployment.js +5 -5
- package/dist/src/commands/doctor.js +5 -5
- package/dist/src/commands/embeddings.js +3 -3
- package/dist/src/commands/guidance.js +1 -1
- package/dist/src/commands/hooks.js +11 -11
- package/dist/src/commands/init.js +11 -11
- package/dist/src/commands/migrate.js +7 -7
- package/dist/src/commands/neural.js +3 -3
- package/dist/src/commands/process.js +4 -4
- package/dist/src/commands/progress.js +1 -1
- package/dist/src/commands/start.js +4 -4
- package/dist/src/commands/status.js +1 -1
- package/dist/src/config-adapter.js +2 -2
- package/dist/src/init/executor.js +41 -41
- package/dist/src/init/helpers-generator.js +10 -10
- package/dist/src/init/statusline-generator.js +16 -16
- package/dist/src/init/types.d.ts +2 -2
- package/dist/src/mcp-tools/agent-tools.js +1 -1
- package/dist/src/mcp-tools/claims-tools.js +1 -1
- package/dist/src/mcp-tools/config-tools.js +1 -1
- package/dist/src/mcp-tools/coordination-tools.js +1 -1
- package/dist/src/mcp-tools/daa-tools.js +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +1 -1
- package/dist/src/mcp-tools/github-tools.js +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +3 -3
- package/dist/src/mcp-tools/hooks-tools.js +1 -1
- package/dist/src/mcp-tools/memory-tools.js +1 -1
- package/dist/src/mcp-tools/neural-tools.js +1 -1
- package/dist/src/mcp-tools/performance-tools.js +1 -1
- package/dist/src/mcp-tools/progress-tools.js +1 -1
- package/dist/src/mcp-tools/session-tools.js +1 -1
- package/dist/src/mcp-tools/system-tools.js +2 -2
- package/dist/src/mcp-tools/task-tools.js +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +1 -1
- package/dist/src/memory/intelligence.js +5 -5
- package/dist/src/memory/memory-bridge.js +2 -2
- package/dist/src/memory/memory-initializer.js +1 -1
- package/dist/src/plugins/manager.js +2 -2
- package/dist/src/plugins/store/discovery.js +1 -1
- package/dist/src/services/claim-service.js +1 -1
- package/dist/src/services/container-worker-pool.js +2 -2
- package/dist/src/services/headless-worker-executor.js +2 -2
- package/dist/src/services/worker-daemon.js +14 -14
- package/dist/src/transfer/store/registry.js +1 -1
- package/dist/src/update/executor.js +1 -1
- package/dist/src/update/rate-limiter.js +1 -1
- package/package.json +1 -1
|
@@ -121,13 +121,13 @@ const DIRECTORIES = {
|
|
|
121
121
|
'.claude/helpers',
|
|
122
122
|
],
|
|
123
123
|
runtime: [
|
|
124
|
-
'
|
|
125
|
-
'
|
|
126
|
-
'
|
|
127
|
-
'
|
|
128
|
-
'
|
|
129
|
-
'
|
|
130
|
-
'
|
|
124
|
+
'.claude-flow',
|
|
125
|
+
'.claude-flow/data',
|
|
126
|
+
'.claude-flow/logs',
|
|
127
|
+
'.claude-flow/sessions',
|
|
128
|
+
'.claude-flow/hooks',
|
|
129
|
+
'.claude-flow/agents',
|
|
130
|
+
'.claude-flow/workflows',
|
|
131
131
|
],
|
|
132
132
|
};
|
|
133
133
|
/**
|
|
@@ -343,9 +343,9 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
343
343
|
// Ensure required directories exist
|
|
344
344
|
const dirs = [
|
|
345
345
|
'.claude/helpers',
|
|
346
|
-
'
|
|
347
|
-
'
|
|
348
|
-
'
|
|
346
|
+
'.claude-flow/metrics',
|
|
347
|
+
'.claude-flow/security',
|
|
348
|
+
'.claude-flow/learning',
|
|
349
349
|
];
|
|
350
350
|
for (const dir of dirs) {
|
|
351
351
|
const fullPath = path.join(targetDir, dir);
|
|
@@ -418,8 +418,8 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
418
418
|
}
|
|
419
419
|
fs.writeFileSync(statuslinePath, statuslineContent, 'utf-8');
|
|
420
420
|
// 2. Create MISSING metrics files only (preserve existing data)
|
|
421
|
-
const metricsDir = path.join(targetDir, '
|
|
422
|
-
const securityDir = path.join(targetDir, '
|
|
421
|
+
const metricsDir = path.join(targetDir, '.claude-flow', 'metrics');
|
|
422
|
+
const securityDir = path.join(targetDir, '.claude-flow', 'security');
|
|
423
423
|
// v3-progress.json
|
|
424
424
|
const progressPath = path.join(metricsDir, 'v3-progress.json');
|
|
425
425
|
if (!fs.existsSync(progressPath)) {
|
|
@@ -433,10 +433,10 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
433
433
|
_note: 'Metrics will update as you use Claude Flow'
|
|
434
434
|
};
|
|
435
435
|
fs.writeFileSync(progressPath, JSON.stringify(progress, null, 2), 'utf-8');
|
|
436
|
-
result.created.push('
|
|
436
|
+
result.created.push('.claude-flow/metrics/v3-progress.json');
|
|
437
437
|
}
|
|
438
438
|
else {
|
|
439
|
-
result.preserved.push('
|
|
439
|
+
result.preserved.push('.claude-flow/metrics/v3-progress.json');
|
|
440
440
|
}
|
|
441
441
|
// swarm-activity.json
|
|
442
442
|
const activityPath = path.join(metricsDir, 'swarm-activity.json');
|
|
@@ -449,10 +449,10 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
449
449
|
_initialized: true
|
|
450
450
|
};
|
|
451
451
|
fs.writeFileSync(activityPath, JSON.stringify(activity, null, 2), 'utf-8');
|
|
452
|
-
result.created.push('
|
|
452
|
+
result.created.push('.claude-flow/metrics/swarm-activity.json');
|
|
453
453
|
}
|
|
454
454
|
else {
|
|
455
|
-
result.preserved.push('
|
|
455
|
+
result.preserved.push('.claude-flow/metrics/swarm-activity.json');
|
|
456
456
|
}
|
|
457
457
|
// learning.json
|
|
458
458
|
const learningPath = path.join(metricsDir, 'learning.json');
|
|
@@ -465,10 +465,10 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
465
465
|
_note: 'Intelligence grows as you use Claude Flow'
|
|
466
466
|
};
|
|
467
467
|
fs.writeFileSync(learningPath, JSON.stringify(learning, null, 2), 'utf-8');
|
|
468
|
-
result.created.push('
|
|
468
|
+
result.created.push('.claude-flow/metrics/learning.json');
|
|
469
469
|
}
|
|
470
470
|
else {
|
|
471
|
-
result.preserved.push('
|
|
471
|
+
result.preserved.push('.claude-flow/metrics/learning.json');
|
|
472
472
|
}
|
|
473
473
|
// audit-status.json
|
|
474
474
|
const auditPath = path.join(securityDir, 'audit-status.json');
|
|
@@ -482,10 +482,10 @@ export async function executeUpgrade(targetDir, upgradeSettings = false) {
|
|
|
482
482
|
_note: 'Run: npx @sparkleideas/cli@latest security scan'
|
|
483
483
|
};
|
|
484
484
|
fs.writeFileSync(auditPath, JSON.stringify(audit, null, 2), 'utf-8');
|
|
485
|
-
result.created.push('
|
|
485
|
+
result.created.push('.claude-flow/security/audit-status.json');
|
|
486
486
|
}
|
|
487
487
|
else {
|
|
488
|
-
result.preserved.push('
|
|
488
|
+
result.preserved.push('.claude-flow/security/audit-status.json');
|
|
489
489
|
}
|
|
490
490
|
// 3. Merge settings if requested
|
|
491
491
|
if (upgradeSettings) {
|
|
@@ -678,8 +678,8 @@ async function copySkills(targetDir, options, result) {
|
|
|
678
678
|
else {
|
|
679
679
|
if (skillsConfig.core)
|
|
680
680
|
skillsToCopy.push(...SKILLS_MAP.core);
|
|
681
|
-
if (skillsConfig
|
|
682
|
-
skillsToCopy.push(...SKILLS_MAP
|
|
681
|
+
if (skillsConfig.agentdb)
|
|
682
|
+
skillsToCopy.push(...SKILLS_MAP.agentdb);
|
|
683
683
|
if (skillsConfig.github)
|
|
684
684
|
skillsToCopy.push(...SKILLS_MAP.github);
|
|
685
685
|
if (skillsConfig.flowNexus)
|
|
@@ -1020,12 +1020,12 @@ async function writeStatusline(targetDir, options, result) {
|
|
|
1020
1020
|
}
|
|
1021
1021
|
}
|
|
1022
1022
|
/**
|
|
1023
|
-
* Write runtime configuration (
|
|
1023
|
+
* Write runtime configuration (.claude-flow/)
|
|
1024
1024
|
*/
|
|
1025
1025
|
async function writeRuntimeConfig(targetDir, options, result) {
|
|
1026
|
-
const configPath = path.join(targetDir, '
|
|
1026
|
+
const configPath = path.join(targetDir, '.claude-flow', 'config.yaml');
|
|
1027
1027
|
if (fs.existsSync(configPath) && !options.force) {
|
|
1028
|
-
result.skipped.push('
|
|
1028
|
+
result.skipped.push('.claude-flow/config.yaml');
|
|
1029
1029
|
return;
|
|
1030
1030
|
}
|
|
1031
1031
|
const config = `# RuFlo V3 Runtime Configuration
|
|
@@ -1042,7 +1042,7 @@ swarm:
|
|
|
1042
1042
|
memory:
|
|
1043
1043
|
backend: ${options.runtime.memoryBackend}
|
|
1044
1044
|
enableHNSW: ${options.runtime.enableHNSW}
|
|
1045
|
-
persistPath:
|
|
1045
|
+
persistPath: .claude-flow/data
|
|
1046
1046
|
cacheSize: 100
|
|
1047
1047
|
# ADR-049: Self-Learning Memory
|
|
1048
1048
|
learningBridge:
|
|
@@ -1062,7 +1062,7 @@ memory:
|
|
|
1062
1062
|
|
|
1063
1063
|
neural:
|
|
1064
1064
|
enabled: ${options.runtime.enableNeural}
|
|
1065
|
-
modelPath:
|
|
1065
|
+
modelPath: .claude-flow/neural
|
|
1066
1066
|
|
|
1067
1067
|
hooks:
|
|
1068
1068
|
enabled: true
|
|
@@ -1073,9 +1073,9 @@ mcp:
|
|
|
1073
1073
|
port: ${options.mcp.port}
|
|
1074
1074
|
`;
|
|
1075
1075
|
fs.writeFileSync(configPath, config, 'utf-8');
|
|
1076
|
-
result.created.files.push('
|
|
1076
|
+
result.created.files.push('.claude-flow/config.yaml');
|
|
1077
1077
|
// Write .gitignore
|
|
1078
|
-
const gitignorePath = path.join(targetDir, '
|
|
1078
|
+
const gitignorePath = path.join(targetDir, '.claude-flow', '.gitignore');
|
|
1079
1079
|
const gitignore = `# Claude Flow runtime files
|
|
1080
1080
|
data/
|
|
1081
1081
|
logs/
|
|
@@ -1086,7 +1086,7 @@ neural/
|
|
|
1086
1086
|
`;
|
|
1087
1087
|
if (!fs.existsSync(gitignorePath) || options.force) {
|
|
1088
1088
|
fs.writeFileSync(gitignorePath, gitignore, 'utf-8');
|
|
1089
|
-
result.created.files.push('
|
|
1089
|
+
result.created.files.push('.claude-flow/.gitignore');
|
|
1090
1090
|
}
|
|
1091
1091
|
// Write CAPABILITIES.md with full system overview
|
|
1092
1092
|
await writeCapabilitiesDoc(targetDir, options, result);
|
|
@@ -1096,9 +1096,9 @@ neural/
|
|
|
1096
1096
|
* Creates baseline data so statusline shows meaningful state instead of all zeros
|
|
1097
1097
|
*/
|
|
1098
1098
|
async function writeInitialMetrics(targetDir, options, result) {
|
|
1099
|
-
const metricsDir = path.join(targetDir, '
|
|
1100
|
-
const learningDir = path.join(targetDir, '
|
|
1101
|
-
const securityDir = path.join(targetDir, '
|
|
1099
|
+
const metricsDir = path.join(targetDir, '.claude-flow', 'metrics');
|
|
1100
|
+
const learningDir = path.join(targetDir, '.claude-flow', 'learning');
|
|
1101
|
+
const securityDir = path.join(targetDir, '.claude-flow', 'security');
|
|
1102
1102
|
// Ensure directories exist
|
|
1103
1103
|
for (const dir of [metricsDir, learningDir, securityDir]) {
|
|
1104
1104
|
if (!fs.existsSync(dir)) {
|
|
@@ -1135,7 +1135,7 @@ async function writeInitialMetrics(targetDir, options, result) {
|
|
|
1135
1135
|
_note: 'Metrics will update as you use Claude Flow. Run: npx @sparkleideas/cli@latest daemon start'
|
|
1136
1136
|
};
|
|
1137
1137
|
fs.writeFileSync(progressPath, JSON.stringify(progress, null, 2), 'utf-8');
|
|
1138
|
-
result.created.files.push('
|
|
1138
|
+
result.created.files.push('.claude-flow/metrics/v3-progress.json');
|
|
1139
1139
|
}
|
|
1140
1140
|
// Create initial swarm-activity.json
|
|
1141
1141
|
const activityPath = path.join(metricsDir, 'swarm-activity.json');
|
|
@@ -1159,7 +1159,7 @@ async function writeInitialMetrics(targetDir, options, result) {
|
|
|
1159
1159
|
_initialized: true
|
|
1160
1160
|
};
|
|
1161
1161
|
fs.writeFileSync(activityPath, JSON.stringify(activity, null, 2), 'utf-8');
|
|
1162
|
-
result.created.files.push('
|
|
1162
|
+
result.created.files.push('.claude-flow/metrics/swarm-activity.json');
|
|
1163
1163
|
}
|
|
1164
1164
|
// Create initial learning.json
|
|
1165
1165
|
const learningPath = path.join(metricsDir, 'learning.json');
|
|
@@ -1182,7 +1182,7 @@ async function writeInitialMetrics(targetDir, options, result) {
|
|
|
1182
1182
|
_note: 'Intelligence grows as you use Claude Flow'
|
|
1183
1183
|
};
|
|
1184
1184
|
fs.writeFileSync(learningPath, JSON.stringify(learning, null, 2), 'utf-8');
|
|
1185
|
-
result.created.files.push('
|
|
1185
|
+
result.created.files.push('.claude-flow/metrics/learning.json');
|
|
1186
1186
|
}
|
|
1187
1187
|
// Create initial audit-status.json
|
|
1188
1188
|
const auditPath = path.join(securityDir, 'audit-status.json');
|
|
@@ -1196,16 +1196,16 @@ async function writeInitialMetrics(targetDir, options, result) {
|
|
|
1196
1196
|
_note: 'Run: npx @sparkleideas/cli@latest security scan'
|
|
1197
1197
|
};
|
|
1198
1198
|
fs.writeFileSync(auditPath, JSON.stringify(audit, null, 2), 'utf-8');
|
|
1199
|
-
result.created.files.push('
|
|
1199
|
+
result.created.files.push('.claude-flow/security/audit-status.json');
|
|
1200
1200
|
}
|
|
1201
1201
|
}
|
|
1202
1202
|
/**
|
|
1203
1203
|
* Write CAPABILITIES.md - comprehensive overview of all Claude Flow features
|
|
1204
1204
|
*/
|
|
1205
1205
|
async function writeCapabilitiesDoc(targetDir, options, result) {
|
|
1206
|
-
const capabilitiesPath = path.join(targetDir, '
|
|
1206
|
+
const capabilitiesPath = path.join(targetDir, '.claude-flow', 'CAPABILITIES.md');
|
|
1207
1207
|
if (fs.existsSync(capabilitiesPath) && !options.force) {
|
|
1208
|
-
result.skipped.push('
|
|
1208
|
+
result.skipped.push('.claude-flow/CAPABILITIES.md');
|
|
1209
1209
|
return;
|
|
1210
1210
|
}
|
|
1211
1211
|
const capabilities = `# RuFlo V3 - Complete Capabilities Reference
|
|
@@ -1596,7 +1596,7 @@ npx @sparkleideas/cli@latest hooks worker dispatch --trigger optimize
|
|
|
1596
1596
|
|
|
1597
1597
|
### File Structure
|
|
1598
1598
|
\`\`\`
|
|
1599
|
-
|
|
1599
|
+
.claude-flow/
|
|
1600
1600
|
├── config.yaml # Runtime configuration
|
|
1601
1601
|
├── CAPABILITIES.md # This file
|
|
1602
1602
|
├── data/ # Memory storage
|
|
@@ -1613,7 +1613,7 @@ npx @sparkleideas/cli@latest hooks worker dispatch --trigger optimize
|
|
|
1613
1613
|
**Issues**: https://github.com/ruvnet/claude-flow/issues
|
|
1614
1614
|
`;
|
|
1615
1615
|
fs.writeFileSync(capabilitiesPath, capabilities, 'utf-8');
|
|
1616
|
-
result.created.files.push('
|
|
1616
|
+
result.created.files.push('.claude-flow/CAPABILITIES.md');
|
|
1617
1617
|
}
|
|
1618
1618
|
/**
|
|
1619
1619
|
* Write CLAUDE.md with swarm guidance
|
|
@@ -70,7 +70,7 @@ export function generateSessionManager() {
|
|
|
70
70
|
const fs = require('fs');
|
|
71
71
|
const path = require('path');
|
|
72
72
|
|
|
73
|
-
const SESSION_DIR = path.join(process.cwd(), '
|
|
73
|
+
const SESSION_DIR = path.join(process.cwd(), '.claude-flow', 'sessions');
|
|
74
74
|
const SESSION_FILE = path.join(SESSION_DIR, 'current.json');
|
|
75
75
|
|
|
76
76
|
const commands = {
|
|
@@ -275,7 +275,7 @@ export function generateMemoryHelper() {
|
|
|
275
275
|
const fs = require('fs');
|
|
276
276
|
const path = require('path');
|
|
277
277
|
|
|
278
|
-
const MEMORY_DIR = path.join(process.cwd(), '
|
|
278
|
+
const MEMORY_DIR = path.join(process.cwd(), '.claude-flow', 'data');
|
|
279
279
|
const MEMORY_FILE = path.join(MEMORY_DIR, 'memory.json');
|
|
280
280
|
|
|
281
281
|
function loadMemory() {
|
|
@@ -604,11 +604,11 @@ export function generateIntelligenceStub() {
|
|
|
604
604
|
"const path = require('path');",
|
|
605
605
|
"const os = require('os');",
|
|
606
606
|
'',
|
|
607
|
-
"const DATA_DIR = path.join(process.cwd(), '
|
|
607
|
+
"const DATA_DIR = path.join(process.cwd(), '.claude-flow', 'data');",
|
|
608
608
|
"const STORE_PATH = path.join(DATA_DIR, 'auto-memory-store.json');",
|
|
609
609
|
"const RANKED_PATH = path.join(DATA_DIR, 'ranked-context.json');",
|
|
610
610
|
"const PENDING_PATH = path.join(DATA_DIR, 'pending-insights.jsonl');",
|
|
611
|
-
"const SESSION_DIR = path.join(process.cwd(), '
|
|
611
|
+
"const SESSION_DIR = path.join(process.cwd(), '.claude-flow', 'sessions');",
|
|
612
612
|
"const SESSION_FILE = path.join(SESSION_DIR, 'current.json');",
|
|
613
613
|
'',
|
|
614
614
|
'function ensureDir(dir) {',
|
|
@@ -652,7 +652,7 @@ export function generateIntelligenceStub() {
|
|
|
652
652
|
' var entries = [];',
|
|
653
653
|
' var candidates = [',
|
|
654
654
|
' path.join(os.homedir(), ".claude", "projects"),',
|
|
655
|
-
' path.join(process.cwd(), "
|
|
655
|
+
' path.join(process.cwd(), ".claude-flow", "memory"),',
|
|
656
656
|
' path.join(process.cwd(), ".claude", "memory"),',
|
|
657
657
|
' ];',
|
|
658
658
|
' for (var i = 0; i < candidates.length; i++) {',
|
|
@@ -816,7 +816,7 @@ import { fileURLToPath } from 'url';
|
|
|
816
816
|
const __filename = fileURLToPath(import.meta.url);
|
|
817
817
|
const __dirname = dirname(__filename);
|
|
818
818
|
const PROJECT_ROOT = join(__dirname, '../..');
|
|
819
|
-
const DATA_DIR = join(PROJECT_ROOT, '
|
|
819
|
+
const DATA_DIR = join(PROJECT_ROOT, '.claude-flow', 'data');
|
|
820
820
|
const STORE_PATH = join(DATA_DIR, 'auto-memory-store.json');
|
|
821
821
|
|
|
822
822
|
const DIM = '\\x1b[2m';
|
|
@@ -918,7 +918,7 @@ param(
|
|
|
918
918
|
)
|
|
919
919
|
|
|
920
920
|
$ErrorActionPreference = 'SilentlyContinue'
|
|
921
|
-
$ClaudeFlowDir = Join-Path $PWD '
|
|
921
|
+
$ClaudeFlowDir = Join-Path $PWD '.claude-flow'
|
|
922
922
|
$PidDir = Join-Path $ClaudeFlowDir 'pids'
|
|
923
923
|
|
|
924
924
|
# Ensure directories exist
|
|
@@ -951,7 +951,7 @@ function Start-SwarmMonitor {
|
|
|
951
951
|
Write-Host "Starting swarm monitor..." -ForegroundColor Cyan
|
|
952
952
|
$process = Start-Process -FilePath 'node' -ArgumentList @(
|
|
953
953
|
'-e',
|
|
954
|
-
'setInterval(() => { require("fs").writeFileSync("
|
|
954
|
+
'setInterval(() => { require("fs").writeFileSync(".claude-flow/metrics/swarm-activity.json", JSON.stringify({swarm:{active:true,agent_count:0},timestamp:Date.now()})) }, 5000)'
|
|
955
955
|
) -PassThru -WindowStyle Hidden
|
|
956
956
|
|
|
957
957
|
$process.Id | Out-File $pidFile
|
|
@@ -1040,7 +1040,7 @@ const homeDir = os.homedir();
|
|
|
1040
1040
|
|
|
1041
1041
|
// Get data directory based on platform
|
|
1042
1042
|
function getDataDir() {
|
|
1043
|
-
const localDir = path.join(process.cwd(), '
|
|
1043
|
+
const localDir = path.join(process.cwd(), '.claude-flow', 'sessions');
|
|
1044
1044
|
if (fs.existsSync(path.dirname(localDir))) {
|
|
1045
1045
|
return localDir;
|
|
1046
1046
|
}
|
|
@@ -1051,7 +1051,7 @@ function getDataDir() {
|
|
|
1051
1051
|
case 'darwin':
|
|
1052
1052
|
return path.join(homeDir, 'Library', 'Application Support', '@sparkleideas/claude-flow', 'sessions');
|
|
1053
1053
|
default:
|
|
1054
|
-
return path.join(homeDir, '
|
|
1054
|
+
return path.join(homeDir, '.claude-flow', 'sessions');
|
|
1055
1055
|
}
|
|
1056
1056
|
}
|
|
1057
1057
|
|
|
@@ -202,10 +202,10 @@ function getModelName() {
|
|
|
202
202
|
function getLearningStats() {
|
|
203
203
|
const memoryPaths = [
|
|
204
204
|
path.join(CWD, '.swarm', 'memory.db'),
|
|
205
|
-
path.join(CWD, '
|
|
205
|
+
path.join(CWD, '.claude-flow', 'memory.db'),
|
|
206
206
|
path.join(CWD, '.claude', 'memory.db'),
|
|
207
207
|
path.join(CWD, 'data', 'memory.db'),
|
|
208
|
-
path.join(CWD, '
|
|
208
|
+
path.join(CWD, '.agentdb', 'memory.db'),
|
|
209
209
|
];
|
|
210
210
|
|
|
211
211
|
for (const dbPath of memoryPaths) {
|
|
@@ -237,7 +237,7 @@ function getV3Progress() {
|
|
|
237
237
|
const learning = getLearningStats();
|
|
238
238
|
const totalDomains = 5;
|
|
239
239
|
|
|
240
|
-
const dddData = readJSON(path.join(CWD, '
|
|
240
|
+
const dddData = readJSON(path.join(CWD, '.claude-flow', 'metrics', 'ddd-progress.json'));
|
|
241
241
|
let dddProgress = dddData ? (dddData.progress || 0) : 0;
|
|
242
242
|
let domainsCompleted = Math.min(5, Math.floor(dddProgress / 20));
|
|
243
243
|
|
|
@@ -260,7 +260,7 @@ function getV3Progress() {
|
|
|
260
260
|
// Security status (pure file reads)
|
|
261
261
|
function getSecurityStatus() {
|
|
262
262
|
const totalCves = 3;
|
|
263
|
-
const auditData = readJSON(path.join(CWD, '
|
|
263
|
+
const auditData = readJSON(path.join(CWD, '.claude-flow', 'security', 'audit-status.json'));
|
|
264
264
|
if (auditData) {
|
|
265
265
|
return {
|
|
266
266
|
status: auditData.status || 'PENDING',
|
|
@@ -286,7 +286,7 @@ function getSecurityStatus() {
|
|
|
286
286
|
|
|
287
287
|
// Swarm status (pure file reads, NO ps aux)
|
|
288
288
|
function getSwarmStatus() {
|
|
289
|
-
const activityData = readJSON(path.join(CWD, '
|
|
289
|
+
const activityData = readJSON(path.join(CWD, '.claude-flow', 'metrics', 'swarm-activity.json'));
|
|
290
290
|
if (activityData && activityData.swarm) {
|
|
291
291
|
return {
|
|
292
292
|
activeAgents: activityData.swarm.agent_count || 0,
|
|
@@ -295,7 +295,7 @@ function getSwarmStatus() {
|
|
|
295
295
|
};
|
|
296
296
|
}
|
|
297
297
|
|
|
298
|
-
const progressData = readJSON(path.join(CWD, '
|
|
298
|
+
const progressData = readJSON(path.join(CWD, '.claude-flow', 'metrics', 'v3-progress.json'));
|
|
299
299
|
if (progressData && progressData.swarm) {
|
|
300
300
|
return {
|
|
301
301
|
activeAgents: progressData.swarm.activeAgents || progressData.swarm.agent_count || 0,
|
|
@@ -314,7 +314,7 @@ function getSystemMetrics() {
|
|
|
314
314
|
const @sparkleideas/agentdb = getAgentDBStats();
|
|
315
315
|
|
|
316
316
|
// Intelligence from learning.json
|
|
317
|
-
const learningData = readJSON(path.join(CWD, '
|
|
317
|
+
const learningData = readJSON(path.join(CWD, '.claude-flow', 'metrics', 'learning.json'));
|
|
318
318
|
let intelligencePct = 0;
|
|
319
319
|
let contextPct = 0;
|
|
320
320
|
|
|
@@ -347,7 +347,7 @@ function getSystemMetrics() {
|
|
|
347
347
|
|
|
348
348
|
// Sub-agents from file metrics (no ps aux)
|
|
349
349
|
let subAgents = 0;
|
|
350
|
-
const activityData = readJSON(path.join(CWD, '
|
|
350
|
+
const activityData = readJSON(path.join(CWD, '.claude-flow', 'metrics', 'swarm-activity.json'));
|
|
351
351
|
if (activityData && activityData.processes && activityData.processes.estimated_agents) {
|
|
352
352
|
subAgents = activityData.processes.estimated_agents;
|
|
353
353
|
}
|
|
@@ -357,7 +357,7 @@ function getSystemMetrics() {
|
|
|
357
357
|
|
|
358
358
|
// ADR status (count files only — don't read contents)
|
|
359
359
|
function getADRStatus() {
|
|
360
|
-
const complianceData = readJSON(path.join(CWD, '
|
|
360
|
+
const complianceData = readJSON(path.join(CWD, '.claude-flow', 'metrics', 'adr-compliance.json'));
|
|
361
361
|
if (complianceData) {
|
|
362
362
|
const checks = complianceData.checks || {};
|
|
363
363
|
const total = Object.keys(checks).length;
|
|
@@ -369,7 +369,7 @@ function getADRStatus() {
|
|
|
369
369
|
const adrPaths = [
|
|
370
370
|
path.join(CWD, 'v3', 'implementation', 'adrs'),
|
|
371
371
|
path.join(CWD, 'docs', 'adrs'),
|
|
372
|
-
path.join(CWD, '
|
|
372
|
+
path.join(CWD, '.claude-flow', 'adrs'),
|
|
373
373
|
];
|
|
374
374
|
|
|
375
375
|
for (const adrPath of adrPaths) {
|
|
@@ -421,7 +421,7 @@ function getAgentDBStats() {
|
|
|
421
421
|
|
|
422
422
|
const dbFiles = [
|
|
423
423
|
path.join(CWD, '.swarm', 'memory.db'),
|
|
424
|
-
path.join(CWD, '
|
|
424
|
+
path.join(CWD, '.claude-flow', 'memory.db'),
|
|
425
425
|
path.join(CWD, '.claude', 'memory.db'),
|
|
426
426
|
path.join(CWD, 'data', 'memory.db'),
|
|
427
427
|
];
|
|
@@ -438,9 +438,9 @@ function getAgentDBStats() {
|
|
|
438
438
|
|
|
439
439
|
if (vectorCount === 0) {
|
|
440
440
|
const dbDirs = [
|
|
441
|
-
path.join(CWD, '
|
|
441
|
+
path.join(CWD, '.claude-flow', '@sparkleideas/agentdb'),
|
|
442
442
|
path.join(CWD, '.swarm', '@sparkleideas/agentdb'),
|
|
443
|
-
path.join(CWD, '
|
|
443
|
+
path.join(CWD, '.agentdb'),
|
|
444
444
|
];
|
|
445
445
|
for (const dir of dbDirs) {
|
|
446
446
|
try {
|
|
@@ -460,7 +460,7 @@ function getAgentDBStats() {
|
|
|
460
460
|
|
|
461
461
|
const hnswPaths = [
|
|
462
462
|
path.join(CWD, '.swarm', 'hnsw.index'),
|
|
463
|
-
path.join(CWD, '
|
|
463
|
+
path.join(CWD, '.claude-flow', 'hnsw.index'),
|
|
464
464
|
];
|
|
465
465
|
for (const p of hnswPaths) {
|
|
466
466
|
const stat = safeStat(p);
|
|
@@ -529,7 +529,7 @@ function getIntegrationStatus() {
|
|
|
529
529
|
}
|
|
530
530
|
}
|
|
531
531
|
|
|
532
|
-
const hasDatabase = ['.swarm/memory.db', '
|
|
532
|
+
const hasDatabase = ['.swarm/memory.db', '.claude-flow/memory.db', 'data/memory.db']
|
|
533
533
|
.some(p => fs.existsSync(path.join(CWD, p)));
|
|
534
534
|
const hasApi = !!(process.env.ANTHROPIC_API_KEY || process.env.OPENAI_API_KEY);
|
|
535
535
|
|
|
@@ -538,7 +538,7 @@ function getIntegrationStatus() {
|
|
|
538
538
|
|
|
539
539
|
// Session stats (pure file reads)
|
|
540
540
|
function getSessionStats() {
|
|
541
|
-
var sessionPaths = ['
|
|
541
|
+
var sessionPaths = ['.claude-flow/session.json', '.claude/session.json'];
|
|
542
542
|
for (var i = 0; i < sessionPaths.length; i++) {
|
|
543
543
|
const data = readJSON(path.join(CWD, sessionPaths[i]));
|
|
544
544
|
if (data && data.startTime) {
|
package/dist/src/init/types.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export interface InitComponents {
|
|
|
20
20
|
statusline: boolean;
|
|
21
21
|
/** Create MCP configuration */
|
|
22
22
|
mcp: boolean;
|
|
23
|
-
/** Create
|
|
23
|
+
/** Create .claude-flow/ directory (V3 runtime) */
|
|
24
24
|
runtime: boolean;
|
|
25
25
|
/** Create CLAUDE.md with swarm guidance */
|
|
26
26
|
claudeMd: boolean;
|
|
@@ -158,7 +158,7 @@ export interface MCPConfig {
|
|
|
158
158
|
port: number;
|
|
159
159
|
}
|
|
160
160
|
/**
|
|
161
|
-
* Runtime configuration (
|
|
161
|
+
* Runtime configuration (.claude-flow/)
|
|
162
162
|
*/
|
|
163
163
|
export interface RuntimeConfig {
|
|
164
164
|
/** Swarm topology */
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
8
8
|
import { join } from 'node:path';
|
|
9
9
|
// Storage paths
|
|
10
|
-
const STORAGE_DIR = '
|
|
10
|
+
const STORAGE_DIR = '.claude-flow';
|
|
11
11
|
const AGENT_DIR = 'agents';
|
|
12
12
|
const AGENT_FILE = 'store.json';
|
|
13
13
|
function getAgentDir() {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// File-based persistence
|
|
10
10
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
11
11
|
import { join, resolve } from 'path';
|
|
12
|
-
const CLAIMS_DIR = '
|
|
12
|
+
const CLAIMS_DIR = '.claude-flow/claims';
|
|
13
13
|
const CLAIMS_FILE = 'claims.json';
|
|
14
14
|
function getClaimsPath() {
|
|
15
15
|
return resolve(join(CLAIMS_DIR, CLAIMS_FILE));
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
// Storage paths
|
|
9
|
-
const STORAGE_DIR = '
|
|
9
|
+
const STORAGE_DIR = '.claude-flow';
|
|
10
10
|
const CONFIG_FILE = 'config.json';
|
|
11
11
|
const DEFAULT_CONFIG = {
|
|
12
12
|
'swarm.topology': 'mesh',
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
12
12
|
import { join } from 'node:path';
|
|
13
13
|
// Storage paths
|
|
14
|
-
const STORAGE_DIR = '
|
|
14
|
+
const STORAGE_DIR = '.claude-flow';
|
|
15
15
|
const COORD_DIR = 'coordination';
|
|
16
16
|
const COORD_FILE = 'store.json';
|
|
17
17
|
function getCoordDir() {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
12
12
|
import { join } from 'node:path';
|
|
13
13
|
// Storage paths
|
|
14
|
-
const STORAGE_DIR = '
|
|
14
|
+
const STORAGE_DIR = '.claude-flow';
|
|
15
15
|
const DAA_DIR = 'daa';
|
|
16
16
|
const DAA_FILE = 'store.json';
|
|
17
17
|
function getDAADir() {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
8
8
|
import { join, resolve } from 'path';
|
|
9
9
|
// Configuration paths
|
|
10
|
-
const CONFIG_DIR = '
|
|
10
|
+
const CONFIG_DIR = '.claude-flow';
|
|
11
11
|
const EMBEDDINGS_CONFIG = 'embeddings.json';
|
|
12
12
|
const MODELS_DIR = 'models';
|
|
13
13
|
function getConfigPath() {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
12
12
|
import { join } from 'node:path';
|
|
13
13
|
// Storage paths
|
|
14
|
-
const STORAGE_DIR = '
|
|
14
|
+
const STORAGE_DIR = '.claude-flow';
|
|
15
15
|
const GITHUB_DIR = 'github';
|
|
16
16
|
const GITHUB_FILE = 'store.json';
|
|
17
17
|
function getGitHubDir() {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
// Storage paths
|
|
9
|
-
const STORAGE_DIR = '
|
|
9
|
+
const STORAGE_DIR = '.claude-flow';
|
|
10
10
|
const HIVE_DIR = 'hive-mind';
|
|
11
11
|
const HIVE_FILE = 'state.json';
|
|
12
12
|
function getHiveDir() {
|
|
@@ -50,7 +50,7 @@ function saveHiveState(state) {
|
|
|
50
50
|
// Import agent store helpers for spawn functionality
|
|
51
51
|
import { existsSync as agentStoreExists, readFileSync as readAgentStore, writeFileSync as writeAgentStore, mkdirSync as mkdirAgentStore } from 'node:fs';
|
|
52
52
|
function loadAgentStore() {
|
|
53
|
-
const storePath = join(process.cwd(), '
|
|
53
|
+
const storePath = join(process.cwd(), '.claude-flow', 'agents.json');
|
|
54
54
|
try {
|
|
55
55
|
if (agentStoreExists(storePath)) {
|
|
56
56
|
return JSON.parse(readAgentStore(storePath, 'utf-8'));
|
|
@@ -60,7 +60,7 @@ function loadAgentStore() {
|
|
|
60
60
|
return { agents: {} };
|
|
61
61
|
}
|
|
62
62
|
function saveAgentStore(store) {
|
|
63
|
-
const storeDir = join(process.cwd(), '
|
|
63
|
+
const storeDir = join(process.cwd(), '.claude-flow');
|
|
64
64
|
if (!agentStoreExists(storeDir)) {
|
|
65
65
|
mkdirAgentStore(storeDir, { recursive: true });
|
|
66
66
|
}
|
|
@@ -279,7 +279,7 @@ async function getLoRAAdapter() {
|
|
|
279
279
|
}
|
|
280
280
|
// In-memory trajectory tracking (persisted on end)
|
|
281
281
|
const activeTrajectories = new Map();
|
|
282
|
-
const MEMORY_DIR = '
|
|
282
|
+
const MEMORY_DIR = '.claude-flow/memory';
|
|
283
283
|
const MEMORY_FILE = 'store.json';
|
|
284
284
|
function getMemoryPath() {
|
|
285
285
|
return resolve(join(MEMORY_DIR, MEMORY_FILE));
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'fs';
|
|
13
13
|
import { join, resolve } from 'path';
|
|
14
14
|
// Paths
|
|
15
|
-
const MEMORY_DIR = '
|
|
15
|
+
const MEMORY_DIR = '.claude-flow/memory';
|
|
16
16
|
const LEGACY_MEMORY_FILE = 'store.json';
|
|
17
17
|
const MIGRATION_MARKER = '.migrated-to-sqlite';
|
|
18
18
|
function getMemoryDir() {
|
|
@@ -54,7 +54,7 @@ catch {
|
|
|
54
54
|
// No embedding provider available, will use fallback
|
|
55
55
|
}
|
|
56
56
|
// Storage paths
|
|
57
|
-
const STORAGE_DIR = '
|
|
57
|
+
const STORAGE_DIR = '.claude-flow';
|
|
58
58
|
const NEURAL_DIR = 'neural';
|
|
59
59
|
const MODELS_FILE = 'models.json';
|
|
60
60
|
const PATTERNS_FILE = 'patterns.json';
|
|
@@ -15,7 +15,7 @@ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
|
15
15
|
import { join } from 'node:path';
|
|
16
16
|
import * as os from 'node:os';
|
|
17
17
|
// Storage paths
|
|
18
|
-
const STORAGE_DIR = '
|
|
18
|
+
const STORAGE_DIR = '.claude-flow';
|
|
19
19
|
const PERF_DIR = 'performance';
|
|
20
20
|
const METRICS_FILE = 'metrics.json';
|
|
21
21
|
const BENCHMARKS_FILE = 'benchmarks.json';
|
|
@@ -186,7 +186,7 @@ async function calculateProgress() {
|
|
|
186
186
|
async function syncProgress() {
|
|
187
187
|
const metrics = await calculateProgress();
|
|
188
188
|
// Persist to file
|
|
189
|
-
const metricsDir = join(PROJECT_ROOT, '
|
|
189
|
+
const metricsDir = join(PROJECT_ROOT, '.claude-flow/metrics');
|
|
190
190
|
if (!existsSync(metricsDir)) {
|
|
191
191
|
mkdirSync(metricsDir, { recursive: true });
|
|
192
192
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync, unlinkSync, statSync } from 'node:fs';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
// Storage paths
|
|
9
|
-
const STORAGE_DIR = '
|
|
9
|
+
const STORAGE_DIR = '.claude-flow';
|
|
10
10
|
const SESSION_DIR = 'sessions';
|
|
11
11
|
function getSessionDir() {
|
|
12
12
|
return join(process.cwd(), STORAGE_DIR, SESSION_DIR);
|
|
@@ -27,7 +27,7 @@ function getPackageVersion() {
|
|
|
27
27
|
}
|
|
28
28
|
const PKG_VERSION = getPackageVersion();
|
|
29
29
|
// Storage paths
|
|
30
|
-
const STORAGE_DIR = '
|
|
30
|
+
const STORAGE_DIR = '.claude-flow';
|
|
31
31
|
const SYSTEM_DIR = 'system';
|
|
32
32
|
const METRICS_FILE = 'metrics.json';
|
|
33
33
|
function getSystemDir() {
|
|
@@ -392,7 +392,7 @@ export const systemTools = [
|
|
|
392
392
|
},
|
|
393
393
|
handler: async () => {
|
|
394
394
|
// Read from the task store file
|
|
395
|
-
const storePath = join(process.cwd(), '
|
|
395
|
+
const storePath = join(process.cwd(), '.claude-flow', 'tasks', 'store.json');
|
|
396
396
|
let tasks = [];
|
|
397
397
|
try {
|
|
398
398
|
if (existsSync(storePath)) {
|