@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.
Files changed (52) hide show
  1. package/dist/src/commands/benchmark.js +2 -2
  2. package/dist/src/commands/claims.js +1 -1
  3. package/dist/src/commands/config.js +1 -1
  4. package/dist/src/commands/daemon.js +5 -5
  5. package/dist/src/commands/deployment.js +5 -5
  6. package/dist/src/commands/doctor.js +5 -5
  7. package/dist/src/commands/embeddings.js +3 -3
  8. package/dist/src/commands/guidance.js +1 -1
  9. package/dist/src/commands/hooks.js +11 -11
  10. package/dist/src/commands/init.js +11 -11
  11. package/dist/src/commands/migrate.js +7 -7
  12. package/dist/src/commands/neural.js +3 -3
  13. package/dist/src/commands/process.js +4 -4
  14. package/dist/src/commands/progress.js +1 -1
  15. package/dist/src/commands/start.js +4 -4
  16. package/dist/src/commands/status.js +1 -1
  17. package/dist/src/config-adapter.js +2 -2
  18. package/dist/src/init/executor.js +41 -41
  19. package/dist/src/init/helpers-generator.js +10 -10
  20. package/dist/src/init/statusline-generator.js +16 -16
  21. package/dist/src/init/types.d.ts +2 -2
  22. package/dist/src/mcp-tools/agent-tools.js +1 -1
  23. package/dist/src/mcp-tools/claims-tools.js +1 -1
  24. package/dist/src/mcp-tools/config-tools.js +1 -1
  25. package/dist/src/mcp-tools/coordination-tools.js +1 -1
  26. package/dist/src/mcp-tools/daa-tools.js +1 -1
  27. package/dist/src/mcp-tools/embeddings-tools.js +1 -1
  28. package/dist/src/mcp-tools/github-tools.js +1 -1
  29. package/dist/src/mcp-tools/hive-mind-tools.js +3 -3
  30. package/dist/src/mcp-tools/hooks-tools.js +1 -1
  31. package/dist/src/mcp-tools/memory-tools.js +1 -1
  32. package/dist/src/mcp-tools/neural-tools.js +1 -1
  33. package/dist/src/mcp-tools/performance-tools.js +1 -1
  34. package/dist/src/mcp-tools/progress-tools.js +1 -1
  35. package/dist/src/mcp-tools/session-tools.js +1 -1
  36. package/dist/src/mcp-tools/system-tools.js +2 -2
  37. package/dist/src/mcp-tools/task-tools.js +1 -1
  38. package/dist/src/mcp-tools/terminal-tools.js +1 -1
  39. package/dist/src/mcp-tools/workflow-tools.js +1 -1
  40. package/dist/src/memory/intelligence.js +5 -5
  41. package/dist/src/memory/memory-bridge.js +2 -2
  42. package/dist/src/memory/memory-initializer.js +1 -1
  43. package/dist/src/plugins/manager.js +2 -2
  44. package/dist/src/plugins/store/discovery.js +1 -1
  45. package/dist/src/services/claim-service.js +1 -1
  46. package/dist/src/services/container-worker-pool.js +2 -2
  47. package/dist/src/services/headless-worker-executor.js +2 -2
  48. package/dist/src/services/worker-daemon.js +14 -14
  49. package/dist/src/transfer/store/registry.js +1 -1
  50. package/dist/src/update/executor.js +1 -1
  51. package/dist/src/update/rate-limiter.js +1 -1
  52. package/package.json +1 -1
@@ -45,7 +45,7 @@ const pretrainCommand = {
45
45
  }
46
46
  // Save to file if requested
47
47
  if (saveFile) {
48
- const resultsDir = join(process.cwd(), '.@sparkleideas/claude-flow', 'benchmarks');
48
+ const resultsDir = join(process.cwd(), '.claude-flow', 'benchmarks');
49
49
  if (!existsSync(resultsDir)) {
50
50
  mkdirSync(resultsDir, { recursive: true });
51
51
  }
@@ -404,7 +404,7 @@ const allCommand = {
404
404
  // Save if requested
405
405
  const saveFile = ctx.flags.save;
406
406
  if (saveFile) {
407
- const resultsDir = join(process.cwd(), '.@sparkleideas/claude-flow', 'benchmarks');
407
+ const resultsDir = join(process.cwd(), '.claude-flow', 'benchmarks');
408
408
  if (!existsSync(resultsDir)) {
409
409
  mkdirSync(resultsDir, { recursive: true });
410
410
  }
@@ -78,7 +78,7 @@ const checkCommand = {
78
78
  try {
79
79
  // Check for claims config file
80
80
  const claimsConfigPaths = [
81
- path.resolve('.@sparkleideas/claude-flow/claims.json'),
81
+ path.resolve('.claude-flow/claims.json'),
82
82
  path.resolve('@sparkleideas/claude-flow.claims.json'),
83
83
  path.resolve(process.env.HOME || '~', '.config/claude-flow/claims.json'),
84
84
  ];
@@ -70,7 +70,7 @@ const initCommand = {
70
70
  ]
71
71
  };
72
72
  output.writeln(output.dim(' Creating @sparkleideas/claude-flow.config.json...'));
73
- output.writeln(output.dim(' Creating .@sparkleideas/claude-flow/ directory...'));
73
+ output.writeln(output.dim(' Creating .claude-flow/ directory...'));
74
74
  if (sparc) {
75
75
  output.writeln(output.dim(' Initializing SPARC methodology...'));
76
76
  output.writeln(output.dim(' Creating SPARC workflow files...'));
@@ -47,7 +47,7 @@ const startCommand = {
47
47
  }
48
48
  // Foreground mode: run in current process (blocks terminal)
49
49
  try {
50
- const stateDir = join(projectRoot, '.@sparkleideas/claude-flow');
50
+ const stateDir = join(projectRoot, '.claude-flow');
51
51
  const pidFile = join(stateDir, 'daemon.pid');
52
52
  // Ensure state directory exists
53
53
  if (!fs.existsSync(stateDir)) {
@@ -146,7 +146,7 @@ function validatePath(path, label) {
146
146
  throw new Error(`${label} contains shell metacharacters`);
147
147
  }
148
148
  // Prevent path traversal outside expected directories
149
- if (!resolved.includes('.@sparkleideas/claude-flow') && !resolved.includes('bin')) {
149
+ if (!resolved.includes('.claude-flow') && !resolved.includes('bin')) {
150
150
  // Allow only paths within project structure
151
151
  const cwd = process.cwd();
152
152
  if (!resolved.startsWith(cwd)) {
@@ -161,7 +161,7 @@ async function startBackgroundDaemon(projectRoot, quiet) {
161
161
  // Validate and resolve project root
162
162
  const resolvedRoot = resolve(projectRoot);
163
163
  validatePath(resolvedRoot, 'Project root');
164
- const stateDir = join(resolvedRoot, '.@sparkleideas/claude-flow');
164
+ const stateDir = join(resolvedRoot, '.claude-flow');
165
165
  const pidFile = join(stateDir, 'daemon.pid');
166
166
  const logFile = join(stateDir, 'daemon.log');
167
167
  // Validate all paths
@@ -262,7 +262,7 @@ const stopCommand = {
262
262
  * Kill background daemon process using PID file
263
263
  */
264
264
  async function killBackgroundDaemon(projectRoot) {
265
- const pidFile = join(projectRoot, '.@sparkleideas/claude-flow', 'daemon.pid');
265
+ const pidFile = join(projectRoot, '.claude-flow', 'daemon.pid');
266
266
  if (!fs.existsSync(pidFile)) {
267
267
  return false;
268
268
  }
@@ -311,7 +311,7 @@ async function killBackgroundDaemon(projectRoot) {
311
311
  * Get PID of background daemon from PID file
312
312
  */
313
313
  function getBackgroundDaemonPid(projectRoot) {
314
- const pidFile = join(projectRoot, '.@sparkleideas/claude-flow', 'daemon.pid');
314
+ const pidFile = join(projectRoot, '.claude-flow', 'daemon.pid');
315
315
  if (!fs.existsSync(pidFile)) {
316
316
  return null;
317
317
  }
@@ -52,7 +52,7 @@ const deployCommand = {
52
52
  `Version: ${version}`,
53
53
  `Status: ${output.success('Deployed')}`,
54
54
  ``,
55
- `URL: https://${env === 'prod' ? 'api' : env}.@sparkleideas/claude-flow.io`,
55
+ `URL: https://${env === 'prod' ? 'api' : env}.claude-flow.io`,
56
56
  `Deployed at: ${new Date().toISOString()}`,
57
57
  `Duration: 12.4s`,
58
58
  ].join('\n'), 'Deployment Complete');
@@ -197,10 +197,10 @@ const environmentsCommand = {
197
197
  { key: 'protected', header: 'Protected', width: 12 },
198
198
  ],
199
199
  data: [
200
- { name: 'production', url: 'https://api.@sparkleideas/claude-flow.io', auto: output.error('No'), protected: output.success('Yes') },
201
- { name: 'staging', url: 'https://staging.@sparkleideas/claude-flow.io', auto: output.success('Yes'), protected: output.error('No') },
202
- { name: 'development', url: 'https://dev.@sparkleideas/claude-flow.io', auto: output.success('Yes'), protected: output.error('No') },
203
- { name: 'preview/*', url: 'https://pr-*.@sparkleideas/claude-flow.io', auto: output.success('Yes'), protected: output.error('No') },
200
+ { name: 'production', url: 'https://api.claude-flow.io', auto: output.error('No'), protected: output.success('Yes') },
201
+ { name: 'staging', url: 'https://staging.claude-flow.io', auto: output.success('Yes'), protected: output.error('No') },
202
+ { name: 'development', url: 'https://dev.claude-flow.io', auto: output.success('Yes'), protected: output.error('No') },
203
+ { name: 'preview/*', url: 'https://pr-*.claude-flow.io', auto: output.success('Yes'), protected: output.error('No') },
204
204
  ],
205
205
  });
206
206
  return { success: true };
@@ -60,9 +60,9 @@ async function checkNpmVersion() {
60
60
  // Check config file
61
61
  async function checkConfigFile() {
62
62
  const configPaths = [
63
- '.@sparkleideas/claude-flow/config.json',
63
+ '.claude-flow/config.json',
64
64
  '@sparkleideas/claude-flow.config.json',
65
- '.@sparkleideas/claude-flow.json'
65
+ '.claude-flow.json'
66
66
  ];
67
67
  for (const configPath of configPaths) {
68
68
  if (existsSync(configPath)) {
@@ -81,7 +81,7 @@ async function checkConfigFile() {
81
81
  // Check daemon status
82
82
  async function checkDaemonStatus() {
83
83
  try {
84
- const pidFile = '.@sparkleideas/claude-flow/daemon.pid';
84
+ const pidFile = '.claude-flow/daemon.pid';
85
85
  if (existsSync(pidFile)) {
86
86
  const pid = readFileSync(pidFile, 'utf8').trim();
87
87
  try {
@@ -89,7 +89,7 @@ async function checkDaemonStatus() {
89
89
  return { name: 'Daemon Status', status: 'pass', message: `Running (PID: ${pid})` };
90
90
  }
91
91
  catch {
92
- return { name: 'Daemon Status', status: 'warn', message: 'Stale PID file', fix: 'rm .@sparkleideas/claude-flow/daemon.pid && @sparkleideas/claude-flow daemon start' };
92
+ return { name: 'Daemon Status', status: 'warn', message: 'Stale PID file', fix: 'rm .claude-flow/daemon.pid && @sparkleideas/claude-flow daemon start' };
93
93
  }
94
94
  }
95
95
  return { name: 'Daemon Status', status: 'warn', message: 'Not running', fix: '@sparkleideas/claude-flow daemon start' };
@@ -101,7 +101,7 @@ async function checkDaemonStatus() {
101
101
  // Check memory database
102
102
  async function checkMemoryDatabase() {
103
103
  const dbPaths = [
104
- '.@sparkleideas/claude-flow/memory.db',
104
+ '.claude-flow/memory.db',
105
105
  '.swarm/memory.db',
106
106
  'data/memory.db'
107
107
  ];
@@ -605,7 +605,7 @@ const initCommand = {
605
605
  const fs = await import('fs');
606
606
  const path = await import('path');
607
607
  // Create directories
608
- const configDir = path.join(process.cwd(), '.@sparkleideas/claude-flow');
608
+ const configDir = path.join(process.cwd(), '.claude-flow');
609
609
  const modelDir = path.join(configDir, 'models');
610
610
  const configPath = path.join(configDir, 'embeddings.json');
611
611
  // Check for existing config
@@ -969,7 +969,7 @@ const neuralCommand = {
969
969
  // Check if embeddings config exists
970
970
  const fs = await import('fs');
971
971
  const path = await import('path');
972
- const configPath = path.join(process.cwd(), '.@sparkleideas/claude-flow', 'embeddings.json');
972
+ const configPath = path.join(process.cwd(), '.claude-flow', 'embeddings.json');
973
973
  if (!fs.existsSync(configPath)) {
974
974
  output.printWarning('Embeddings not initialized');
975
975
  output.printInfo('Run "embeddings init" first to configure ONNX model');
@@ -1082,7 +1082,7 @@ const neuralCommand = {
1082
1082
  output.printInfo('Run with --init to enable neural substrate');
1083
1083
  }
1084
1084
  else {
1085
- output.writeln(output.dim('Configuration: .@sparkleideas/claude-flow/embeddings.json'));
1085
+ output.writeln(output.dim('Configuration: .claude-flow/embeddings.json'));
1086
1086
  output.writeln(output.dim('Next: Use "hooks pretrain" to train patterns'));
1087
1087
  }
1088
1088
  return { success: true, data: { config: neuralConfig, feature } };
@@ -268,7 +268,7 @@ const statusCommand = {
268
268
  const statusData = {
269
269
  rootGuidance: rootExists ? 'found' : 'not found',
270
270
  localOverlay: localExists ? 'found' : 'not configured',
271
- dataDir: existsSync('./.@sparkleideas/claude-flow/guidance') ? 'exists' : 'not created',
271
+ dataDir: existsSync('./.claude-flow/guidance') ? 'exists' : 'not created',
272
272
  };
273
273
  if (jsonOutput) {
274
274
  output.writeln(JSON.stringify(statusData, null, 2));
@@ -2492,7 +2492,7 @@ const progressHookCommand = {
2492
2492
  }
2493
2493
  output.writeln();
2494
2494
  output.printSuccess(`Progress synced: ${result.progress}%`);
2495
- output.writeln(output.dim(` Persisted to .@sparkleideas/claude-flow/metrics/v3-progress.json`));
2495
+ output.writeln(output.dim(` Persisted to .claude-flow/metrics/v3-progress.json`));
2496
2496
  output.writeln(output.dim(` Last updated: ${result.lastUpdated}`));
2497
2497
  return { success: true, data: result };
2498
2498
  }
@@ -2749,8 +2749,8 @@ const statuslineCommand = {
2749
2749
  let intelligencePct = 0;
2750
2750
  // 1. Check learning.json for REAL intelligence metrics first
2751
2751
  const learningJsonPaths = [
2752
- path.join(process.cwd(), '.@sparkleideas/claude-flow', 'learning.json'),
2753
- path.join(process.cwd(), '.claude', '.@sparkleideas/claude-flow', 'learning.json'),
2752
+ path.join(process.cwd(), '.claude-flow', 'learning.json'),
2753
+ path.join(process.cwd(), '.claude', '.claude-flow', 'learning.json'),
2754
2754
  path.join(process.cwd(), '.swarm', 'learning.json'),
2755
2755
  ];
2756
2756
  for (const lPath of learningJsonPaths) {
@@ -2777,7 +2777,7 @@ const statuslineCommand = {
2777
2777
  // Check for key project files/dirs
2778
2778
  if (fs.existsSync(path.join(process.cwd(), '.claude')))
2779
2779
  maturityScore += 15;
2780
- if (fs.existsSync(path.join(process.cwd(), '.@sparkleideas/claude-flow')))
2780
+ if (fs.existsSync(path.join(process.cwd(), '.claude-flow')))
2781
2781
  maturityScore += 15;
2782
2782
  if (fs.existsSync(path.join(process.cwd(), 'CLAUDE.md')))
2783
2783
  maturityScore += 10;
@@ -2893,12 +2893,12 @@ const statuslineCommand = {
2893
2893
  // Check for direct database files first
2894
2894
  const dbPaths = [
2895
2895
  path.join(process.cwd(), '.swarm', 'memory.db'),
2896
- path.join(process.cwd(), '.@sparkleideas/claude-flow', 'memory.db'),
2896
+ path.join(process.cwd(), '.claude-flow', 'memory.db'),
2897
2897
  path.join(process.cwd(), '.claude', 'memory.db'),
2898
2898
  path.join(process.cwd(), 'data', 'memory.db'),
2899
2899
  path.join(process.cwd(), 'memory.db'),
2900
- path.join(process.cwd(), '.@sparkleideas/agentdb', 'memory.db'),
2901
- path.join(process.cwd(), '.@sparkleideas/claude-flow', 'memory', '@sparkleideas/agentdb.db'),
2900
+ path.join(process.cwd(), '.agentdb', 'memory.db'),
2901
+ path.join(process.cwd(), '.claude-flow', 'memory', '@sparkleideas/agentdb.db'),
2902
2902
  ];
2903
2903
  for (const dbPath of dbPaths) {
2904
2904
  if (fs.existsSync(dbPath)) {
@@ -2915,10 +2915,10 @@ const statuslineCommand = {
2915
2915
  // Check for AgentDB directories if no direct db found
2916
2916
  if (agentdbStats.vectorCount === 0) {
2917
2917
  const agentdbDirs = [
2918
- path.join(process.cwd(), '.@sparkleideas/claude-flow', '@sparkleideas/agentdb'),
2918
+ path.join(process.cwd(), '.claude-flow', '@sparkleideas/agentdb'),
2919
2919
  path.join(process.cwd(), '.swarm', '@sparkleideas/agentdb'),
2920
2920
  path.join(process.cwd(), 'data', '@sparkleideas/agentdb'),
2921
- path.join(process.cwd(), '.@sparkleideas/agentdb'),
2921
+ path.join(process.cwd(), '.agentdb'),
2922
2922
  ];
2923
2923
  for (const dir of agentdbDirs) {
2924
2924
  if (fs.existsSync(dir)) {
@@ -2942,7 +2942,7 @@ const statuslineCommand = {
2942
2942
  }
2943
2943
  // Check for HNSW index files
2944
2944
  const hnswPaths = [
2945
- path.join(process.cwd(), '.@sparkleideas/claude-flow', 'hnsw'),
2945
+ path.join(process.cwd(), '.claude-flow', 'hnsw'),
2946
2946
  path.join(process.cwd(), '.swarm', 'hnsw'),
2947
2947
  path.join(process.cwd(), 'data', 'hnsw'),
2948
2948
  ];
@@ -2963,7 +2963,7 @@ const statuslineCommand = {
2963
2963
  }
2964
2964
  }
2965
2965
  // Check for vectors.json file
2966
- const vectorsPath = path.join(process.cwd(), '.@sparkleideas/claude-flow', 'vectors.json');
2966
+ const vectorsPath = path.join(process.cwd(), '.claude-flow', 'vectors.json');
2967
2967
  if (fs.existsSync(vectorsPath) && agentdbStats.vectorCount === 0) {
2968
2968
  try {
2969
2969
  const data = JSON.parse(fs.readFileSync(vectorsPath, 'utf-8'));
@@ -131,7 +131,7 @@ async function initCodexAction(ctx, options) {
131
131
  // Check if project is already initialized
132
132
  function isInitialized(cwd) {
133
133
  const claudePath = path.join(cwd, '.claude', 'settings.json');
134
- const claudeFlowPath = path.join(cwd, '.@sparkleideas/claude-flow', 'config.yaml');
134
+ const claudeFlowPath = path.join(cwd, '.claude-flow', 'config.yaml');
135
135
  return {
136
136
  claude: fs.existsSync(claudePath),
137
137
  claudeFlow: fs.existsSync(claudeFlowPath),
@@ -159,7 +159,7 @@ const initAction = async (ctx) => {
159
159
  if (initialized.claude)
160
160
  output.printInfo(' Found: .claude/settings.json');
161
161
  if (initialized.claudeFlow)
162
- output.printInfo(' Found: .@sparkleideas/claude-flow/config.yaml');
162
+ output.printInfo(' Found: .claude-flow/config.yaml');
163
163
  output.printInfo('Use --force to reinitialize');
164
164
  if (ctx.interactive) {
165
165
  const proceed = await confirm({
@@ -245,10 +245,10 @@ const initAction = async (ctx) => {
245
245
  }
246
246
  if (options.components.runtime) {
247
247
  output.printBox([
248
- `Config: .@sparkleideas/claude-flow/config.yaml`,
249
- `Data: .@sparkleideas/claude-flow/data/`,
250
- `Logs: .@sparkleideas/claude-flow/logs/`,
251
- `Sessions: .@sparkleideas/claude-flow/sessions/`,
248
+ `Config: .claude-flow/config.yaml`,
249
+ `Data: .claude-flow/data/`,
250
+ `Logs: .claude-flow/logs/`,
251
+ `Sessions: .claude-flow/sessions/`,
252
252
  ].join('\n'), 'V3 Runtime');
253
253
  output.writeln();
254
254
  }
@@ -399,7 +399,7 @@ const wizardCommand = {
399
399
  { value: 'helpers', label: 'Helpers', hint: 'Utility scripts in .claude/helpers/', selected: true },
400
400
  { value: 'statusline', label: 'Statusline', hint: 'Shell statusline integration', selected: false },
401
401
  { value: 'mcp', label: 'MCP', hint: '.mcp.json for MCP server configuration', selected: true },
402
- { value: 'runtime', label: 'Runtime', hint: '.@sparkleideas/claude-flow/ directory for V3 runtime', selected: true },
402
+ { value: 'runtime', label: 'Runtime', hint: '.claude-flow/ directory for V3 runtime', selected: true },
403
403
  ],
404
404
  });
405
405
  options.components.claudeMd = components.includes('claudeMd');
@@ -424,7 +424,7 @@ const wizardCommand = {
424
424
  ],
425
425
  });
426
426
  options.skills.core = skillSets.includes('core');
427
- options.skills.@sparkleideas/agentdb = skillSets.includes('@sparkleideas/agentdb');
427
+ options.skills.agentdb = skillSets.includes('@sparkleideas/agentdb');
428
428
  options.skills.github = skillSets.includes('github');
429
429
  options.skills.flowNexus = skillSets.includes('flowNexus');
430
430
  options.skills.v3 = skillSets.includes('v3');
@@ -604,7 +604,7 @@ const checkCommand = {
604
604
  claudeFlow: initialized.claudeFlow,
605
605
  paths: {
606
606
  claudeSettings: initialized.claude ? path.join(ctx.cwd, '.claude', 'settings.json') : null,
607
- claudeFlowConfig: initialized.claudeFlow ? path.join(ctx.cwd, '.@sparkleideas/claude-flow', 'config.yaml') : null,
607
+ claudeFlowConfig: initialized.claudeFlow ? path.join(ctx.cwd, '.claude-flow', 'config.yaml') : null,
608
608
  },
609
609
  };
610
610
  if (ctx.flags.format === 'json') {
@@ -617,7 +617,7 @@ const checkCommand = {
617
617
  output.printInfo(` Claude Code: .claude/settings.json`);
618
618
  }
619
619
  if (initialized.claudeFlow) {
620
- output.printInfo(` V3 Runtime: .@sparkleideas/claude-flow/config.yaml`);
620
+ output.printInfo(` V3 Runtime: .claude-flow/config.yaml`);
621
621
  }
622
622
  }
623
623
  else {
@@ -657,7 +657,7 @@ const skillsCommand = {
657
657
  skills: {
658
658
  all: ctx.flags.all,
659
659
  core: ctx.flags.core,
660
- @sparkleideas/agentdb: ctx.flags.@sparkleideas/agentdb,
660
+ @sparkleideas/agentdb: ctx.flags.agentdb,
661
661
  github: ctx.flags.github,
662
662
  flowNexus: false,
663
663
  browser: false,
@@ -25,8 +25,8 @@ const statusCommand = {
25
25
  migrationState: 'partial',
26
26
  components: [
27
27
  { name: 'Configuration', status: 'migrated', v2Path: './claude-flow.json', v3Path: './claude-flow.config.json' },
28
- { name: 'Memory Data', status: 'pending', v2Path: './.@sparkleideas/claude-flow/memory', v3Path: './data/memory' },
29
- { name: 'Agent Configs', status: 'pending', v2Path: './.@sparkleideas/claude-flow/agents', v3Path: './v3/agents' },
28
+ { name: 'Memory Data', status: 'pending', v2Path: './.claude-flow/memory', v3Path: './data/memory' },
29
+ { name: 'Agent Configs', status: 'pending', v2Path: './.claude-flow/agents', v3Path: './v3/agents' },
30
30
  { name: 'Hooks', status: 'pending', v2Path: './src/hooks', v3Path: './v3/hooks' },
31
31
  { name: 'Workflows', status: 'not-required', v2Path: 'N/A', v3Path: 'N/A' },
32
32
  { name: 'Embeddings', status: 'pending', v2Path: 'OpenAI/TF.js', v3Path: 'ONNX + Hyperbolic' }
@@ -295,7 +295,7 @@ const breakingCommand = {
295
295
  changes: [
296
296
  { change: 'Backend option changed', from: 'memory: { type }', to: 'memory: { backend }' },
297
297
  { change: 'HNSW enabled by default', from: 'Manual opt-in', to: 'Auto-enabled' },
298
- { change: 'Storage path changed', from: '.@sparkleideas/claude-flow/memory', to: 'data/memory' }
298
+ { change: 'Storage path changed', from: '.claude-flow/memory', to: 'data/memory' }
299
299
  ]
300
300
  },
301
301
  {
@@ -396,11 +396,11 @@ function formatMigrationStatus(status) {
396
396
  function getMigrationSteps(target) {
397
397
  const allSteps = [
398
398
  { name: 'Configuration Files', description: 'Migrate config schema to V3 format', source: './claude-flow.json', dest: './claude-flow.config.json' },
399
- { name: 'Memory Backend', description: 'Upgrade to hybrid backend with AgentDB', source: './.@sparkleideas/claude-flow/memory', dest: './data/memory' },
400
- { name: 'Agent Definitions', description: 'Convert agent configs to V3 format', source: './.@sparkleideas/claude-flow/agents', dest: './v3/agents' },
399
+ { name: 'Memory Backend', description: 'Upgrade to hybrid backend with AgentDB', source: './.claude-flow/memory', dest: './data/memory' },
400
+ { name: 'Agent Definitions', description: 'Convert agent configs to V3 format', source: './.claude-flow/agents', dest: './v3/agents' },
401
401
  { name: 'Hook Registry', description: 'Migrate hooks to V3 hook system', source: './src/hooks', dest: './v3/hooks' },
402
- { name: 'Workflow Definitions', description: 'Convert workflows to event-sourced format', source: './.@sparkleideas/claude-flow/workflows', dest: './data/workflows' },
403
- { name: 'Embeddings System', description: 'Migrate to ONNX with hyperbolic (Poincaré ball)', source: 'OpenAI/TF.js embeddings', dest: '.@sparkleideas/claude-flow/embeddings.json' }
402
+ { name: 'Workflow Definitions', description: 'Convert workflows to event-sourced format', source: './.claude-flow/workflows', dest: './data/workflows' },
403
+ { name: 'Embeddings System', description: 'Migrate to ONNX with hyperbolic (Poincaré ball)', source: 'OpenAI/TF.js embeddings', dest: '.claude-flow/embeddings.json' }
404
404
  ];
405
405
  if (target === 'all')
406
406
  return allSteps;
@@ -673,7 +673,7 @@ const optimizeCommand = {
673
673
  const patterns = await getAllPatterns();
674
674
  const stats = getIntelligenceStats();
675
675
  // Get actual pattern storage size
676
- const patternDir = path.join(process.cwd(), '.@sparkleideas/claude-flow', 'neural');
676
+ const patternDir = path.join(process.cwd(), '.claude-flow', 'neural');
677
677
  let beforeSize = 0;
678
678
  try {
679
679
  const patternFile = path.join(patternDir, 'patterns.json');
@@ -849,7 +849,7 @@ const exportCommand = {
849
849
  },
850
850
  };
851
851
  // Load patterns from local storage
852
- const memoryDir = path.join(process.cwd(), '.@sparkleideas/claude-flow', 'memory');
852
+ const memoryDir = path.join(process.cwd(), '.claude-flow', 'memory');
853
853
  const patternsFile = path.join(memoryDir, 'patterns.json');
854
854
  if (fs.existsSync(patternsFile)) {
855
855
  const patterns = JSON.parse(fs.readFileSync(patternsFile, 'utf8'));
@@ -1242,7 +1242,7 @@ const importCommand = {
1242
1242
  output.writeln(output.warning(`Filtered ${patterns.length - validPatterns.length} suspicious patterns`));
1243
1243
  }
1244
1244
  // Save to local memory
1245
- const memoryDir = path.join(process.cwd(), '.@sparkleideas/claude-flow', 'memory');
1245
+ const memoryDir = path.join(process.cwd(), '.claude-flow', 'memory');
1246
1246
  if (!fs.existsSync(memoryDir)) {
1247
1247
  fs.mkdirSync(memoryDir, { recursive: true });
1248
1248
  }
@@ -62,13 +62,13 @@ const daemonCommand = {
62
62
  name: 'pid-file',
63
63
  type: 'string',
64
64
  description: 'PID file location',
65
- default: '.@sparkleideas/claude-flow/daemon.pid',
65
+ default: '.claude-flow/daemon.pid',
66
66
  },
67
67
  {
68
68
  name: 'log-file',
69
69
  type: 'string',
70
70
  description: 'Log file location',
71
- default: '.@sparkleideas/claude-flow/daemon.log',
71
+ default: '.claude-flow/daemon.log',
72
72
  },
73
73
  {
74
74
  name: 'detach',
@@ -86,8 +86,8 @@ const daemonCommand = {
86
86
  action: async (ctx) => {
87
87
  const action = ctx.flags?.action || 'status';
88
88
  const port = ctx.flags?.port || 3847;
89
- const pidFile = ctx.flags?.['pid-file'] || '.@sparkleideas/claude-flow/daemon.pid';
90
- const logFile = ctx.flags?.['log-file'] || '.@sparkleideas/claude-flow/daemon.log';
89
+ const pidFile = ctx.flags?.['pid-file'] || '.claude-flow/daemon.pid';
90
+ const logFile = ctx.flags?.['log-file'] || '.claude-flow/daemon.log';
91
91
  const detach = ctx.flags?.detach !== false;
92
92
  // Check existing daemon state from PID file
93
93
  const existingDaemon = readPidFile(pidFile);
@@ -93,7 +93,7 @@ const syncCommand = {
93
93
  }
94
94
  output.writeln();
95
95
  output.printSuccess(`Progress synced: ${result.progress}%`);
96
- output.writeln(output.dim(` Persisted to .@sparkleideas/claude-flow/metrics/v3-progress.json`));
96
+ output.writeln(output.dim(` Persisted to .claude-flow/metrics/v3-progress.json`));
97
97
  output.writeln(output.dim(` Last updated: ${result.lastUpdated}`));
98
98
  return { success: true, data: result };
99
99
  }
@@ -13,7 +13,7 @@ const DEFAULT_TOPOLOGY = 'hierarchical-mesh';
13
13
  const DEFAULT_MAX_AGENTS = 15;
14
14
  // Check if project is initialized
15
15
  function isInitialized(cwd) {
16
- const configPath = path.join(cwd, '.@sparkleideas/claude-flow', 'config.yaml');
16
+ const configPath = path.join(cwd, '.claude-flow', 'config.yaml');
17
17
  return fs.existsSync(configPath);
18
18
  }
19
19
  // Simple YAML parser for config (basic implementation)
@@ -69,7 +69,7 @@ function parseSimpleYaml(content) {
69
69
  }
70
70
  // Load configuration
71
71
  function loadConfig(cwd) {
72
- const configPath = path.join(cwd, '.@sparkleideas/claude-flow', 'config.yaml');
72
+ const configPath = path.join(cwd, '.claude-flow', 'config.yaml');
73
73
  if (!fs.existsSync(configPath))
74
74
  return null;
75
75
  try {
@@ -175,7 +175,7 @@ const startAction = async (ctx) => {
175
175
  output.writeln();
176
176
  output.printInfo('Running in daemon mode. Use "@sparkleideas/claude-flow stop" to stop.');
177
177
  // Store PID for daemon management
178
- const daemonPidPath = path.join(cwd, '.@sparkleideas/claude-flow', 'daemon.pid');
178
+ const daemonPidPath = path.join(cwd, '.claude-flow', 'daemon.pid');
179
179
  fs.writeFileSync(daemonPidPath, String(process.pid));
180
180
  // Detach from parent process for true daemon behavior
181
181
  if (process.platform !== 'win32') {
@@ -289,7 +289,7 @@ const stopCommand = {
289
289
  spinner.fail('Swarm was not running');
290
290
  }
291
291
  // Clean up daemon PID
292
- const daemonPidPath = path.join(ctx.cwd, '.@sparkleideas/claude-flow', 'daemon.pid');
292
+ const daemonPidPath = path.join(ctx.cwd, '.claude-flow', 'daemon.pid');
293
293
  if (fs.existsSync(daemonPidPath)) {
294
294
  fs.unlinkSync(daemonPidPath);
295
295
  }
@@ -34,7 +34,7 @@ function getProcessMemoryUsage() {
34
34
  }
35
35
  // Check if project is initialized
36
36
  function isInitialized(cwd) {
37
- const configPath = path.join(cwd, '.@sparkleideas/claude-flow', 'config.yaml');
37
+ const configPath = path.join(cwd, '.claude-flow', 'config.yaml');
38
38
  return fs.existsSync(configPath);
39
39
  }
40
40
  // Format uptime
@@ -30,8 +30,8 @@ export function systemConfigToV3Config(systemConfig) {
30
30
  backend: normalizeMemoryBackend(systemConfig.memory?.type),
31
31
  persistPath: systemConfig.memory?.path || './data/memory',
32
32
  cacheSize: systemConfig.memory?.maxSize ?? 1000000,
33
- enableHNSW: systemConfig.memory?.@sparkleideas/agentdb?.indexType === 'hnsw',
34
- vectorDimension: systemConfig.memory?.@sparkleideas/agentdb?.dimensions ?? 1536,
33
+ enableHNSW: systemConfig.memory?.agentdb?.indexType === 'hnsw',
34
+ vectorDimension: systemConfig.memory?.agentdb?.dimensions ?? 1536,
35
35
  },
36
36
  // MCP configuration
37
37
  mcp: {