@claude-flow/cli 3.1.0-alpha.9 → 3.5.1
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/.claude/agents/core/coder.md +1 -1
- package/.claude/agents/core/planner.md +2 -2
- package/.claude/agents/core/researcher.md +1 -1
- package/.claude/agents/core/reviewer.md +1 -1
- package/.claude/agents/core/tester.md +1 -1
- package/.claude/agents/data/data-ml-model.md +4 -4
- package/.claude/agents/development/dev-backend-api.md +4 -4
- package/.claude/agents/documentation/docs-api-openapi.md +4 -4
- package/.claude/agents/github/code-review-swarm.md +2 -2
- package/.claude/agents/github/issue-tracker.md +2 -2
- package/.claude/agents/github/pr-manager.md +2 -2
- package/.claude/agents/github/release-manager.md +2 -2
- package/.claude/agents/github/workflow-automation.md +2 -2
- package/.claude/agents/sparc/architecture.md +3 -3
- package/.claude/agents/sparc/pseudocode.md +2 -2
- package/.claude/agents/sparc/refinement.md +3 -3
- package/.claude/agents/sparc/specification.md +2 -2
- package/.claude/agents/swarm/adaptive-coordinator.md +1 -1
- package/.claude/agents/swarm/hierarchical-coordinator.md +1 -1
- package/.claude/agents/swarm/mesh-coordinator.md +1 -1
- package/.claude/agents/templates/base-template-generator.md +3 -3
- package/.claude/agents/templates/sparc-coordinator.md +3 -3
- package/.claude/helpers/auto-memory-hook.mjs +350 -0
- package/.claude/helpers/hook-handler.cjs +232 -0
- package/.claude/helpers/intelligence.cjs +916 -0
- package/.claude/helpers/session.js +8 -0
- package/.claude/helpers/statusline.cjs +96 -28
- package/.claude/settings.json +86 -141
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +2 -2
- package/.claude/skills/swarm-orchestration/SKILL.md +1 -1
- package/README.md +910 -475
- package/bin/preinstall.cjs +2 -0
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +45 -2
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +292 -82
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +48 -4
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/neural.js.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/executor.d.ts +8 -2
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +315 -43
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.d.ts +18 -0
- package/dist/src/init/helpers-generator.d.ts.map +1 -1
- package/dist/src/init/helpers-generator.js +498 -0
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/mcp-generator.d.ts +0 -1
- package/dist/src/init/mcp-generator.d.ts.map +1 -1
- package/dist/src/init/mcp-generator.js +32 -16
- package/dist/src/init/mcp-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +138 -95
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts +16 -8
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +506 -930
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/init/types.d.ts +8 -0
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +7 -0
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +4 -0
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-tools/agentdb-tools.d.ts +30 -0
- package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/agentdb-tools.js +557 -0
- package/dist/src/mcp-tools/agentdb-tools.js.map +1 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +184 -32
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/neural-tools.js +32 -27
- package/dist/src/mcp-tools/neural-tools.js.map +1 -1
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +34 -6
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +407 -0
- package/dist/src/memory/memory-bridge.d.ts.map +1 -0
- package/dist/src/memory/memory-bridge.js +1493 -0
- package/dist/src/memory/memory-bridge.js.map +1 -0
- package/dist/src/memory/memory-initializer.d.ts +3 -0
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +125 -1
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/ruvector/enhanced-model-router.d.ts.map +1 -1
- package/dist/src/ruvector/enhanced-model-router.js +25 -15
- package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
- package/dist/src/services/agentic-flow-bridge.d.ts +50 -0
- package/dist/src/services/agentic-flow-bridge.d.ts.map +1 -0
- package/dist/src/services/agentic-flow-bridge.js +95 -0
- package/dist/src/services/agentic-flow-bridge.js.map +1 -0
- package/dist/src/services/ruvector-training.d.ts +2 -1
- package/dist/src/services/ruvector-training.d.ts.map +1 -1
- package/dist/src/services/ruvector-training.js +1 -2
- package/dist/src/services/ruvector-training.js.map +1 -1
- package/dist/src/update/validator.js +1 -1
- package/dist/src/update/validator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -6
|
@@ -351,6 +351,504 @@ if (command && commands[command]) {
|
|
|
351
351
|
module.exports = commands;
|
|
352
352
|
`;
|
|
353
353
|
}
|
|
354
|
+
/**
|
|
355
|
+
* Generate hook-handler.cjs (cross-platform hook dispatcher)
|
|
356
|
+
* This is the inline fallback when file copy from the package fails.
|
|
357
|
+
* Uses string concatenation instead of template literals to avoid escaping issues.
|
|
358
|
+
*/
|
|
359
|
+
export function generateHookHandler() {
|
|
360
|
+
// Build as array of lines to avoid template-in-template escaping nightmares
|
|
361
|
+
const lines = [
|
|
362
|
+
'#!/usr/bin/env node',
|
|
363
|
+
'/**',
|
|
364
|
+
' * Claude Flow Hook Handler (Cross-Platform)',
|
|
365
|
+
' * Dispatches hook events to the appropriate helper modules.',
|
|
366
|
+
' */',
|
|
367
|
+
'',
|
|
368
|
+
"const path = require('path');",
|
|
369
|
+
"const fs = require('fs');",
|
|
370
|
+
'',
|
|
371
|
+
'const helpersDir = __dirname;',
|
|
372
|
+
'',
|
|
373
|
+
'function safeRequire(modulePath) {',
|
|
374
|
+
' try {',
|
|
375
|
+
' if (fs.existsSync(modulePath)) {',
|
|
376
|
+
' const origLog = console.log;',
|
|
377
|
+
' const origError = console.error;',
|
|
378
|
+
' console.log = () => {};',
|
|
379
|
+
' console.error = () => {};',
|
|
380
|
+
' try {',
|
|
381
|
+
' const mod = require(modulePath);',
|
|
382
|
+
' return mod;',
|
|
383
|
+
' } finally {',
|
|
384
|
+
' console.log = origLog;',
|
|
385
|
+
' console.error = origError;',
|
|
386
|
+
' }',
|
|
387
|
+
' }',
|
|
388
|
+
' } catch (e) {',
|
|
389
|
+
' // silently fail',
|
|
390
|
+
' }',
|
|
391
|
+
' return null;',
|
|
392
|
+
'}',
|
|
393
|
+
'',
|
|
394
|
+
"const router = safeRequire(path.join(helpersDir, 'router.js'));",
|
|
395
|
+
"const session = safeRequire(path.join(helpersDir, 'session.js'));",
|
|
396
|
+
"const memory = safeRequire(path.join(helpersDir, 'memory.js'));",
|
|
397
|
+
"const intelligence = safeRequire(path.join(helpersDir, 'intelligence.cjs'));",
|
|
398
|
+
'',
|
|
399
|
+
'const [,, command, ...args] = process.argv;',
|
|
400
|
+
"const prompt = process.env.PROMPT || process.env.TOOL_INPUT_command || args.join(' ') || '';",
|
|
401
|
+
'',
|
|
402
|
+
'const handlers = {',
|
|
403
|
+
" 'route': () => {",
|
|
404
|
+
' if (intelligence && intelligence.getContext) {',
|
|
405
|
+
' try {',
|
|
406
|
+
' const ctx = intelligence.getContext(prompt);',
|
|
407
|
+
' if (ctx) console.log(ctx);',
|
|
408
|
+
' } catch (e) { /* non-fatal */ }',
|
|
409
|
+
' }',
|
|
410
|
+
' if (router && router.routeTask) {',
|
|
411
|
+
' const result = router.routeTask(prompt);',
|
|
412
|
+
' var output = [];',
|
|
413
|
+
" output.push('[INFO] Routing task: ' + (prompt.substring(0, 80) || '(no prompt)'));",
|
|
414
|
+
" output.push('');",
|
|
415
|
+
" output.push('+------------------- Primary Recommendation -------------------+');",
|
|
416
|
+
" output.push('| Agent: ' + result.agent.padEnd(53) + '|');",
|
|
417
|
+
" output.push('| Confidence: ' + (result.confidence * 100).toFixed(1) + '%' + ' '.repeat(44) + '|');",
|
|
418
|
+
" output.push('| Reason: ' + result.reason.substring(0, 53).padEnd(53) + '|');",
|
|
419
|
+
" output.push('+--------------------------------------------------------------+');",
|
|
420
|
+
" console.log(output.join('\\n'));",
|
|
421
|
+
' } else {',
|
|
422
|
+
" console.log('[INFO] Router not available, using default routing');",
|
|
423
|
+
' }',
|
|
424
|
+
' },',
|
|
425
|
+
'',
|
|
426
|
+
" 'pre-bash': () => {",
|
|
427
|
+
' var cmd = prompt.toLowerCase();',
|
|
428
|
+
" var dangerous = ['rm -rf /', 'format c:', 'del /s /q c:\\\\', ':(){:|:&};:'];",
|
|
429
|
+
' for (var i = 0; i < dangerous.length; i++) {',
|
|
430
|
+
' if (cmd.includes(dangerous[i])) {',
|
|
431
|
+
" console.error('[BLOCKED] Dangerous command detected: ' + dangerous[i]);",
|
|
432
|
+
' process.exit(1);',
|
|
433
|
+
' }',
|
|
434
|
+
' }',
|
|
435
|
+
" console.log('[OK] Command validated');",
|
|
436
|
+
' },',
|
|
437
|
+
'',
|
|
438
|
+
" 'post-edit': () => {",
|
|
439
|
+
' if (session && session.metric) {',
|
|
440
|
+
" try { session.metric('edits'); } catch (e) { /* no active session */ }",
|
|
441
|
+
' }',
|
|
442
|
+
' if (intelligence && intelligence.recordEdit) {',
|
|
443
|
+
' try {',
|
|
444
|
+
" var file = process.env.TOOL_INPUT_file_path || args[0] || '';",
|
|
445
|
+
' intelligence.recordEdit(file);',
|
|
446
|
+
' } catch (e) { /* non-fatal */ }',
|
|
447
|
+
' }',
|
|
448
|
+
" console.log('[OK] Edit recorded');",
|
|
449
|
+
' },',
|
|
450
|
+
'',
|
|
451
|
+
" 'session-restore': () => {",
|
|
452
|
+
' if (session) {',
|
|
453
|
+
' var existing = session.restore && session.restore();',
|
|
454
|
+
' if (!existing) {',
|
|
455
|
+
' session.start && session.start();',
|
|
456
|
+
' }',
|
|
457
|
+
' } else {',
|
|
458
|
+
" console.log('[OK] Session restored: session-' + Date.now());",
|
|
459
|
+
' }',
|
|
460
|
+
' if (intelligence && intelligence.init) {',
|
|
461
|
+
' try {',
|
|
462
|
+
' var result = intelligence.init();',
|
|
463
|
+
' if (result && result.nodes > 0) {',
|
|
464
|
+
" console.log('[INTELLIGENCE] Loaded ' + result.nodes + ' patterns, ' + result.edges + ' edges');",
|
|
465
|
+
' }',
|
|
466
|
+
' } catch (e) { /* non-fatal */ }',
|
|
467
|
+
' }',
|
|
468
|
+
' },',
|
|
469
|
+
'',
|
|
470
|
+
" 'session-end': () => {",
|
|
471
|
+
' if (intelligence && intelligence.consolidate) {',
|
|
472
|
+
' try {',
|
|
473
|
+
' var result = intelligence.consolidate();',
|
|
474
|
+
' if (result && result.entries > 0) {',
|
|
475
|
+
" var msg = '[INTELLIGENCE] Consolidated: ' + result.entries + ' entries, ' + result.edges + ' edges';",
|
|
476
|
+
" if (result.newEntries > 0) msg += ', ' + result.newEntries + ' new';",
|
|
477
|
+
" msg += ', PageRank recomputed';",
|
|
478
|
+
' console.log(msg);',
|
|
479
|
+
' }',
|
|
480
|
+
' } catch (e) { /* non-fatal */ }',
|
|
481
|
+
' }',
|
|
482
|
+
' if (session && session.end) {',
|
|
483
|
+
' session.end();',
|
|
484
|
+
' } else {',
|
|
485
|
+
" console.log('[OK] Session ended');",
|
|
486
|
+
' }',
|
|
487
|
+
' },',
|
|
488
|
+
'',
|
|
489
|
+
" 'pre-task': () => {",
|
|
490
|
+
' if (session && session.metric) {',
|
|
491
|
+
" try { session.metric('tasks'); } catch (e) { /* no active session */ }",
|
|
492
|
+
' }',
|
|
493
|
+
' if (router && router.routeTask && prompt) {',
|
|
494
|
+
' var result = router.routeTask(prompt);',
|
|
495
|
+
" console.log('[INFO] Task routed to: ' + result.agent + ' (confidence: ' + result.confidence + ')');",
|
|
496
|
+
' } else {',
|
|
497
|
+
" console.log('[OK] Task started');",
|
|
498
|
+
' }',
|
|
499
|
+
' },',
|
|
500
|
+
'',
|
|
501
|
+
" 'post-task': () => {",
|
|
502
|
+
' if (intelligence && intelligence.feedback) {',
|
|
503
|
+
' try {',
|
|
504
|
+
' intelligence.feedback(true);',
|
|
505
|
+
' } catch (e) { /* non-fatal */ }',
|
|
506
|
+
' }',
|
|
507
|
+
" console.log('[OK] Task completed');",
|
|
508
|
+
' },',
|
|
509
|
+
'',
|
|
510
|
+
" 'compact-manual': () => {",
|
|
511
|
+
" console.log('PreCompact Guidance:');",
|
|
512
|
+
" console.log('IMPORTANT: Review CLAUDE.md in project root for:');",
|
|
513
|
+
" console.log(' - Available agents and concurrent usage patterns');",
|
|
514
|
+
" console.log(' - Swarm coordination strategies (hierarchical, mesh, adaptive)');",
|
|
515
|
+
" console.log(' - Critical concurrent execution rules (1 MESSAGE = ALL OPERATIONS)');",
|
|
516
|
+
" console.log('Ready for compact operation');",
|
|
517
|
+
' },',
|
|
518
|
+
'',
|
|
519
|
+
" 'compact-auto': () => {",
|
|
520
|
+
" console.log('Auto-Compact Guidance (Context Window Full):');",
|
|
521
|
+
" console.log('CRITICAL: Before compacting, ensure you understand:');",
|
|
522
|
+
" console.log(' - All agents available in .claude/agents/ directory');",
|
|
523
|
+
" console.log(' - Concurrent execution patterns from CLAUDE.md');",
|
|
524
|
+
" console.log(' - Swarm coordination strategies for complex tasks');",
|
|
525
|
+
" console.log('Apply GOLDEN RULE: Always batch operations in single messages');",
|
|
526
|
+
" console.log('Auto-compact proceeding with full agent context');",
|
|
527
|
+
' },',
|
|
528
|
+
'',
|
|
529
|
+
" 'status': () => {",
|
|
530
|
+
" console.log('[OK] Status check');",
|
|
531
|
+
' },',
|
|
532
|
+
'',
|
|
533
|
+
" 'stats': () => {",
|
|
534
|
+
' if (intelligence && intelligence.stats) {',
|
|
535
|
+
" intelligence.stats(args.includes('--json'));",
|
|
536
|
+
' } else {',
|
|
537
|
+
" console.log('[WARN] Intelligence module not available. Run session-restore first.');",
|
|
538
|
+
' }',
|
|
539
|
+
' },',
|
|
540
|
+
'};',
|
|
541
|
+
'',
|
|
542
|
+
'if (command && handlers[command]) {',
|
|
543
|
+
' try {',
|
|
544
|
+
' handlers[command]();',
|
|
545
|
+
' } catch (e) {',
|
|
546
|
+
" console.log('[WARN] Hook ' + command + ' encountered an error: ' + e.message);",
|
|
547
|
+
' }',
|
|
548
|
+
'} else if (command) {',
|
|
549
|
+
" console.log('[OK] Hook: ' + command);",
|
|
550
|
+
'} else {',
|
|
551
|
+
" console.log('Usage: hook-handler.cjs <route|pre-bash|post-edit|session-restore|session-end|pre-task|post-task|compact-manual|compact-auto|status|stats>');",
|
|
552
|
+
'}',
|
|
553
|
+
];
|
|
554
|
+
return lines.join('\n') + '\n';
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* Generate a minimal intelligence.cjs stub for fallback installs.
|
|
558
|
+
* Provides the same API as the full intelligence.cjs but with simplified logic.
|
|
559
|
+
* Gets overwritten when source copy succeeds (full version has PageRank, Jaccard, etc.)
|
|
560
|
+
*/
|
|
561
|
+
export function generateIntelligenceStub() {
|
|
562
|
+
const lines = [
|
|
563
|
+
'#!/usr/bin/env node',
|
|
564
|
+
'/**',
|
|
565
|
+
' * Intelligence Layer Stub (ADR-050)',
|
|
566
|
+
' * Minimal fallback — full version is copied from package source.',
|
|
567
|
+
' * Provides: init, getContext, recordEdit, feedback, consolidate',
|
|
568
|
+
' */',
|
|
569
|
+
"'use strict';",
|
|
570
|
+
'',
|
|
571
|
+
"const fs = require('fs');",
|
|
572
|
+
"const path = require('path');",
|
|
573
|
+
"const os = require('os');",
|
|
574
|
+
'',
|
|
575
|
+
"const DATA_DIR = path.join(process.cwd(), '.claude-flow', 'data');",
|
|
576
|
+
"const STORE_PATH = path.join(DATA_DIR, 'auto-memory-store.json');",
|
|
577
|
+
"const RANKED_PATH = path.join(DATA_DIR, 'ranked-context.json');",
|
|
578
|
+
"const PENDING_PATH = path.join(DATA_DIR, 'pending-insights.jsonl');",
|
|
579
|
+
"const SESSION_DIR = path.join(process.cwd(), '.claude-flow', 'sessions');",
|
|
580
|
+
"const SESSION_FILE = path.join(SESSION_DIR, 'current.json');",
|
|
581
|
+
'',
|
|
582
|
+
'function ensureDir(dir) {',
|
|
583
|
+
' if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });',
|
|
584
|
+
'}',
|
|
585
|
+
'',
|
|
586
|
+
'function readJSON(p) {',
|
|
587
|
+
' try { return fs.existsSync(p) ? JSON.parse(fs.readFileSync(p, "utf-8")) : null; }',
|
|
588
|
+
' catch { return null; }',
|
|
589
|
+
'}',
|
|
590
|
+
'',
|
|
591
|
+
'function writeJSON(p, data) {',
|
|
592
|
+
' ensureDir(path.dirname(p));',
|
|
593
|
+
' fs.writeFileSync(p, JSON.stringify(data, null, 2), "utf-8");',
|
|
594
|
+
'}',
|
|
595
|
+
'',
|
|
596
|
+
'// Read session context key',
|
|
597
|
+
'function sessionGet(key) {',
|
|
598
|
+
' var session = readJSON(SESSION_FILE);',
|
|
599
|
+
' if (!session) return null;',
|
|
600
|
+
' return key ? (session.context || {})[key] : session.context;',
|
|
601
|
+
'}',
|
|
602
|
+
'',
|
|
603
|
+
'// Write session context key',
|
|
604
|
+
'function sessionSet(key, value) {',
|
|
605
|
+
' var session = readJSON(SESSION_FILE);',
|
|
606
|
+
' if (!session) return;',
|
|
607
|
+
' if (!session.context) session.context = {};',
|
|
608
|
+
' session.context[key] = value;',
|
|
609
|
+
' writeJSON(SESSION_FILE, session);',
|
|
610
|
+
'}',
|
|
611
|
+
'',
|
|
612
|
+
'// Tokenize text into words',
|
|
613
|
+
'function tokenize(text) {',
|
|
614
|
+
' if (!text) return [];',
|
|
615
|
+
' return text.toLowerCase().replace(/[^a-z0-9\\s]/g, " ").split(/\\s+/).filter(function(w) { return w.length > 2; });',
|
|
616
|
+
'}',
|
|
617
|
+
'',
|
|
618
|
+
'// Bootstrap entries from MEMORY.md files when store is empty',
|
|
619
|
+
'function bootstrapFromMemoryFiles() {',
|
|
620
|
+
' var entries = [];',
|
|
621
|
+
' var candidates = [',
|
|
622
|
+
' path.join(os.homedir(), ".claude", "projects"),',
|
|
623
|
+
' path.join(process.cwd(), ".claude-flow", "memory"),',
|
|
624
|
+
' path.join(process.cwd(), ".claude", "memory"),',
|
|
625
|
+
' ];',
|
|
626
|
+
' for (var i = 0; i < candidates.length; i++) {',
|
|
627
|
+
' try {',
|
|
628
|
+
' if (!fs.existsSync(candidates[i])) continue;',
|
|
629
|
+
' var files = [];',
|
|
630
|
+
' try {',
|
|
631
|
+
' var items = fs.readdirSync(candidates[i], { withFileTypes: true, recursive: true });',
|
|
632
|
+
' for (var j = 0; j < items.length; j++) {',
|
|
633
|
+
' if (items[j].name === "MEMORY.md") {',
|
|
634
|
+
' var fp = items[j].path ? path.join(items[j].path, items[j].name) : path.join(candidates[i], items[j].name);',
|
|
635
|
+
' files.push(fp);',
|
|
636
|
+
' }',
|
|
637
|
+
' }',
|
|
638
|
+
' } catch (e) { continue; }',
|
|
639
|
+
' for (var k = 0; k < files.length; k++) {',
|
|
640
|
+
' try {',
|
|
641
|
+
' var content = fs.readFileSync(files[k], "utf-8");',
|
|
642
|
+
' var sections = content.split(/^##\\s+/m).filter(function(s) { return s.trim().length > 20; });',
|
|
643
|
+
' for (var s = 0; s < sections.length; s++) {',
|
|
644
|
+
' var lines2 = sections[s].split("\\n");',
|
|
645
|
+
' var title = lines2[0] ? lines2[0].trim() : "section-" + s;',
|
|
646
|
+
' entries.push({',
|
|
647
|
+
' id: "mem-" + entries.length,',
|
|
648
|
+
' content: sections[s].substring(0, 500),',
|
|
649
|
+
' summary: title.substring(0, 100),',
|
|
650
|
+
' category: "memory",',
|
|
651
|
+
' confidence: 0.5,',
|
|
652
|
+
' sourceFile: files[k],',
|
|
653
|
+
' words: tokenize(sections[s].substring(0, 500)),',
|
|
654
|
+
' });',
|
|
655
|
+
' }',
|
|
656
|
+
' } catch (e) { /* skip */ }',
|
|
657
|
+
' }',
|
|
658
|
+
' } catch (e) { /* skip */ }',
|
|
659
|
+
' }',
|
|
660
|
+
' return entries;',
|
|
661
|
+
'}',
|
|
662
|
+
'',
|
|
663
|
+
'// Load entries from auto-memory-store or bootstrap from MEMORY.md',
|
|
664
|
+
'function loadEntries() {',
|
|
665
|
+
' var store = readJSON(STORE_PATH);',
|
|
666
|
+
' if (store && store.entries && store.entries.length > 0) {',
|
|
667
|
+
' return store.entries.map(function(e, i) {',
|
|
668
|
+
' return {',
|
|
669
|
+
' id: e.id || ("entry-" + i),',
|
|
670
|
+
' content: e.content || e.value || "",',
|
|
671
|
+
' summary: e.summary || e.key || "",',
|
|
672
|
+
' category: e.category || e.namespace || "default",',
|
|
673
|
+
' confidence: e.confidence || 0.5,',
|
|
674
|
+
' sourceFile: e.sourceFile || "",',
|
|
675
|
+
' words: tokenize((e.content || e.value || "") + " " + (e.summary || e.key || "")),',
|
|
676
|
+
' };',
|
|
677
|
+
' });',
|
|
678
|
+
' }',
|
|
679
|
+
' return bootstrapFromMemoryFiles();',
|
|
680
|
+
'}',
|
|
681
|
+
'',
|
|
682
|
+
'// Simple keyword match score',
|
|
683
|
+
'function matchScore(promptWords, entryWords) {',
|
|
684
|
+
' if (!promptWords.length || !entryWords.length) return 0;',
|
|
685
|
+
' var entrySet = {};',
|
|
686
|
+
' for (var i = 0; i < entryWords.length; i++) entrySet[entryWords[i]] = true;',
|
|
687
|
+
' var overlap = 0;',
|
|
688
|
+
' for (var j = 0; j < promptWords.length; j++) {',
|
|
689
|
+
' if (entrySet[promptWords[j]]) overlap++;',
|
|
690
|
+
' }',
|
|
691
|
+
' var union = Object.keys(entrySet).length + promptWords.length - overlap;',
|
|
692
|
+
' return union > 0 ? overlap / union : 0;',
|
|
693
|
+
'}',
|
|
694
|
+
'',
|
|
695
|
+
'var cachedEntries = null;',
|
|
696
|
+
'',
|
|
697
|
+
'module.exports = {',
|
|
698
|
+
' init: function() {',
|
|
699
|
+
' cachedEntries = loadEntries();',
|
|
700
|
+
' var ranked = cachedEntries.map(function(e) {',
|
|
701
|
+
' return { id: e.id, content: e.content, summary: e.summary, category: e.category, confidence: e.confidence, words: e.words };',
|
|
702
|
+
' });',
|
|
703
|
+
' writeJSON(RANKED_PATH, { version: 1, computedAt: Date.now(), entries: ranked });',
|
|
704
|
+
' return { nodes: cachedEntries.length, edges: 0 };',
|
|
705
|
+
' },',
|
|
706
|
+
'',
|
|
707
|
+
' getContext: function(prompt) {',
|
|
708
|
+
' if (!prompt) return null;',
|
|
709
|
+
' var ranked = readJSON(RANKED_PATH);',
|
|
710
|
+
' var entries = (ranked && ranked.entries) || (cachedEntries || []);',
|
|
711
|
+
' if (!entries.length) return null;',
|
|
712
|
+
' var promptWords = tokenize(prompt);',
|
|
713
|
+
' if (!promptWords.length) return null;',
|
|
714
|
+
' var scored = entries.map(function(e) {',
|
|
715
|
+
' return { entry: e, score: matchScore(promptWords, e.words || tokenize(e.content + " " + e.summary)) };',
|
|
716
|
+
' }).filter(function(s) { return s.score > 0.05; });',
|
|
717
|
+
' scored.sort(function(a, b) { return b.score - a.score; });',
|
|
718
|
+
' var top = scored.slice(0, 5);',
|
|
719
|
+
' if (!top.length) return null;',
|
|
720
|
+
' var prevMatched = sessionGet("lastMatchedPatterns");',
|
|
721
|
+
' var matchedIds = top.map(function(s) { return s.entry.id; });',
|
|
722
|
+
' sessionSet("lastMatchedPatterns", matchedIds);',
|
|
723
|
+
' if (prevMatched && Array.isArray(prevMatched)) {',
|
|
724
|
+
' var newSet = {};',
|
|
725
|
+
' for (var i = 0; i < matchedIds.length; i++) newSet[matchedIds[i]] = true;',
|
|
726
|
+
' }',
|
|
727
|
+
' var lines2 = ["[INTELLIGENCE] Relevant patterns for this task:"];',
|
|
728
|
+
' for (var j = 0; j < top.length; j++) {',
|
|
729
|
+
' var e = top[j];',
|
|
730
|
+
' var conf = e.entry.confidence || 0.5;',
|
|
731
|
+
' var summary = (e.entry.summary || e.entry.content || "").substring(0, 80);',
|
|
732
|
+
' lines2.push(" * (" + conf.toFixed(2) + ") " + summary);',
|
|
733
|
+
' }',
|
|
734
|
+
' return lines2.join("\\n");',
|
|
735
|
+
' },',
|
|
736
|
+
'',
|
|
737
|
+
' recordEdit: function(file) {',
|
|
738
|
+
' if (!file) return;',
|
|
739
|
+
' ensureDir(DATA_DIR);',
|
|
740
|
+
' var line = JSON.stringify({ type: "edit", file: file, timestamp: Date.now() }) + "\\n";',
|
|
741
|
+
' fs.appendFileSync(PENDING_PATH, line, "utf-8");',
|
|
742
|
+
' },',
|
|
743
|
+
'',
|
|
744
|
+
' feedback: function(success) {',
|
|
745
|
+
' // Stub: no-op in minimal version',
|
|
746
|
+
' },',
|
|
747
|
+
'',
|
|
748
|
+
' consolidate: function() {',
|
|
749
|
+
' var count = 0;',
|
|
750
|
+
' if (fs.existsSync(PENDING_PATH)) {',
|
|
751
|
+
' try {',
|
|
752
|
+
' var content = fs.readFileSync(PENDING_PATH, "utf-8").trim();',
|
|
753
|
+
' count = content ? content.split("\\n").length : 0;',
|
|
754
|
+
' fs.writeFileSync(PENDING_PATH, "", "utf-8");',
|
|
755
|
+
' } catch (e) { /* skip */ }',
|
|
756
|
+
' }',
|
|
757
|
+
' return { entries: count, edges: 0, newEntries: 0 };',
|
|
758
|
+
' },',
|
|
759
|
+
'};',
|
|
760
|
+
];
|
|
761
|
+
return lines.join('\n') + '\n';
|
|
762
|
+
}
|
|
763
|
+
/**
|
|
764
|
+
* Generate a minimal auto-memory-hook.mjs fallback for fresh installs.
|
|
765
|
+
* This ESM script handles import/sync/status commands gracefully when
|
|
766
|
+
* @claude-flow/memory is not installed. Gets overwritten when source copy succeeds.
|
|
767
|
+
*/
|
|
768
|
+
export function generateAutoMemoryHook() {
|
|
769
|
+
return `#!/usr/bin/env node
|
|
770
|
+
/**
|
|
771
|
+
* Auto Memory Bridge Hook (ADR-048/049) — Minimal Fallback
|
|
772
|
+
* Full version is copied from package source when available.
|
|
773
|
+
*
|
|
774
|
+
* Usage:
|
|
775
|
+
* node auto-memory-hook.mjs import # SessionStart
|
|
776
|
+
* node auto-memory-hook.mjs sync # SessionEnd / Stop
|
|
777
|
+
* node auto-memory-hook.mjs status # Show bridge status
|
|
778
|
+
*/
|
|
779
|
+
|
|
780
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
781
|
+
import { join, dirname } from 'path';
|
|
782
|
+
import { fileURLToPath } from 'url';
|
|
783
|
+
|
|
784
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
785
|
+
const __dirname = dirname(__filename);
|
|
786
|
+
const PROJECT_ROOT = join(__dirname, '../..');
|
|
787
|
+
const DATA_DIR = join(PROJECT_ROOT, '.claude-flow', 'data');
|
|
788
|
+
const STORE_PATH = join(DATA_DIR, 'auto-memory-store.json');
|
|
789
|
+
|
|
790
|
+
const DIM = '\\x1b[2m';
|
|
791
|
+
const RESET = '\\x1b[0m';
|
|
792
|
+
const dim = (msg) => console.log(\` \${DIM}\${msg}\${RESET}\`);
|
|
793
|
+
|
|
794
|
+
// Ensure data dir
|
|
795
|
+
if (!existsSync(DATA_DIR)) mkdirSync(DATA_DIR, { recursive: true });
|
|
796
|
+
|
|
797
|
+
async function doImport() {
|
|
798
|
+
// Try loading @claude-flow/memory for full functionality
|
|
799
|
+
let memPkg = null;
|
|
800
|
+
try { memPkg = await import('@claude-flow/memory'); } catch {}
|
|
801
|
+
|
|
802
|
+
if (!memPkg || !memPkg.AutoMemoryBridge) {
|
|
803
|
+
dim('Memory package not available — auto memory import skipped (non-critical)');
|
|
804
|
+
return;
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
// Full implementation deferred to copied version
|
|
808
|
+
dim('Auto memory import available — run init --upgrade for full support');
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
async function doSync() {
|
|
812
|
+
if (!existsSync(STORE_PATH)) {
|
|
813
|
+
dim('No entries to sync');
|
|
814
|
+
return;
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
let memPkg = null;
|
|
818
|
+
try { memPkg = await import('@claude-flow/memory'); } catch {}
|
|
819
|
+
|
|
820
|
+
if (!memPkg || !memPkg.AutoMemoryBridge) {
|
|
821
|
+
dim('Memory package not available — sync skipped (non-critical)');
|
|
822
|
+
return;
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
dim('Auto memory sync available — run init --upgrade for full support');
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
function doStatus() {
|
|
829
|
+
console.log('\\n=== Auto Memory Bridge Status ===\\n');
|
|
830
|
+
console.log(' Package: Fallback mode (run init --upgrade for full)');
|
|
831
|
+
console.log(\` Store: \${existsSync(STORE_PATH) ? 'Initialized' : 'Not initialized'}\`);
|
|
832
|
+
console.log('');
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
const command = process.argv[2] || 'status';
|
|
836
|
+
|
|
837
|
+
try {
|
|
838
|
+
switch (command) {
|
|
839
|
+
case 'import': await doImport(); break;
|
|
840
|
+
case 'sync': await doSync(); break;
|
|
841
|
+
case 'status': doStatus(); break;
|
|
842
|
+
default:
|
|
843
|
+
console.log('Usage: auto-memory-hook.mjs <import|sync|status>');
|
|
844
|
+
process.exit(1);
|
|
845
|
+
}
|
|
846
|
+
} catch (err) {
|
|
847
|
+
// Hooks must never crash Claude Code - fail silently
|
|
848
|
+
dim(\`Error (non-critical): \${err.message}\`);
|
|
849
|
+
}
|
|
850
|
+
`;
|
|
851
|
+
}
|
|
354
852
|
/**
|
|
355
853
|
* Generate Windows PowerShell daemon manager
|
|
356
854
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers-generator.js","sourceRoot":"","sources":["../../../src/init/helpers-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAE7F;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;CAgBR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+HR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkER,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmGR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;;;;;CAKR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mCAAmC;IACjD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkHR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAoB;IAClD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC/B,2BAA2B;QAC3B,OAAO,CAAC,YAAY,CAAC,GAAG,qBAAqB,EAAE,CAAC;QAChD,OAAO,CAAC,aAAa,CAAC,GAAG,sBAAsB,EAAE,CAAC;QAElD,iCAAiC;QACjC,OAAO,CAAC,YAAY,CAAC,GAAG,mCAAmC,EAAE,CAAC;QAC9D,OAAO,CAAC,WAAW,CAAC,GAAG,mBAAmB,EAAE,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,GAAG,oBAAoB,EAAE,CAAC;QAE9C,2BAA2B;QAC3B,OAAO,CAAC,oBAAoB,CAAC,GAAG,4BAA4B,EAAE,CAAC;QAC/D,OAAO,CAAC,oBAAoB,CAAC,GAAG,2BAA2B,EAAE,CAAC;IAChE,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,gBAAgB,CAAC,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAE,mCAAmC;QACnG,OAAO,CAAC,oBAAoB,CAAC,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"helpers-generator.js","sourceRoot":"","sources":["../../../src/init/helpers-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,6 @@ export declare function generateMCPConfig(options: InitOptions): object;
|
|
|
14
14
|
export declare function generateMCPJson(options: InitOptions): string;
|
|
15
15
|
/**
|
|
16
16
|
* Generate MCP server add commands for manual setup
|
|
17
|
-
* Windows uses 'cmd /c' wrapper for npx execution
|
|
18
17
|
*/
|
|
19
18
|
export declare function generateMCPCommands(options: InitOptions): string[];
|
|
20
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-generator.d.ts","sourceRoot":"","sources":["../../../src/init/mcp-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-generator.d.ts","sourceRoot":"","sources":["../../../src/init/mcp-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,YAAY,CAAC;AAqCzD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CA2C9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE,CA2BlE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAW5E"}
|
|
@@ -11,20 +11,22 @@ function isWindows() {
|
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* Generate platform-specific MCP server entry
|
|
14
|
-
* Windows
|
|
14
|
+
* - Windows: uses 'cmd /c npx' directly
|
|
15
|
+
* - Unix: uses 'npx' directly (simple, reliable)
|
|
15
16
|
*/
|
|
16
17
|
function createMCPServerEntry(npxArgs, env, additionalProps = {}) {
|
|
17
18
|
if (isWindows()) {
|
|
18
19
|
return {
|
|
19
20
|
command: 'cmd',
|
|
20
|
-
args: ['/c', 'npx', ...npxArgs],
|
|
21
|
+
args: ['/c', 'npx', '-y', ...npxArgs],
|
|
21
22
|
env,
|
|
22
23
|
...additionalProps,
|
|
23
24
|
};
|
|
24
25
|
}
|
|
26
|
+
// Unix: direct npx invocation — simple and reliable
|
|
25
27
|
return {
|
|
26
28
|
command: 'npx',
|
|
27
|
-
args: npxArgs,
|
|
29
|
+
args: ['-y', ...npxArgs],
|
|
28
30
|
env,
|
|
29
31
|
...additionalProps,
|
|
30
32
|
};
|
|
@@ -35,9 +37,13 @@ function createMCPServerEntry(npxArgs, env, additionalProps = {}) {
|
|
|
35
37
|
export function generateMCPConfig(options) {
|
|
36
38
|
const config = options.mcp;
|
|
37
39
|
const mcpServers = {};
|
|
40
|
+
const npmEnv = {
|
|
41
|
+
npm_config_update_notifier: 'false',
|
|
42
|
+
};
|
|
38
43
|
// Claude Flow MCP server (core)
|
|
39
44
|
if (config.claudeFlow) {
|
|
40
45
|
mcpServers['claude-flow'] = createMCPServerEntry(['@claude-flow/cli@latest', 'mcp', 'start'], {
|
|
46
|
+
...npmEnv,
|
|
41
47
|
CLAUDE_FLOW_MODE: 'v3',
|
|
42
48
|
CLAUDE_FLOW_HOOKS_ENABLED: 'true',
|
|
43
49
|
CLAUDE_FLOW_TOPOLOGY: options.runtime.topology,
|
|
@@ -47,11 +53,11 @@ export function generateMCPConfig(options) {
|
|
|
47
53
|
}
|
|
48
54
|
// Ruv-Swarm MCP server (enhanced coordination)
|
|
49
55
|
if (config.ruvSwarm) {
|
|
50
|
-
mcpServers['ruv-swarm'] = createMCPServerEntry(['ruv-swarm', 'mcp', 'start'], {}, { optional: true });
|
|
56
|
+
mcpServers['ruv-swarm'] = createMCPServerEntry(['ruv-swarm', 'mcp', 'start'], { ...npmEnv }, { optional: true });
|
|
51
57
|
}
|
|
52
58
|
// Flow Nexus MCP server (cloud features)
|
|
53
59
|
if (config.flowNexus) {
|
|
54
|
-
mcpServers['flow-nexus'] = createMCPServerEntry(['flow-nexus@latest', 'mcp', 'start'], {}, { optional: true, requiresAuth: true });
|
|
60
|
+
mcpServers['flow-nexus'] = createMCPServerEntry(['flow-nexus@latest', 'mcp', 'start'], { ...npmEnv }, { optional: true, requiresAuth: true });
|
|
55
61
|
}
|
|
56
62
|
return { mcpServers };
|
|
57
63
|
}
|
|
@@ -64,21 +70,31 @@ export function generateMCPJson(options) {
|
|
|
64
70
|
}
|
|
65
71
|
/**
|
|
66
72
|
* Generate MCP server add commands for manual setup
|
|
67
|
-
* Windows uses 'cmd /c' wrapper for npx execution
|
|
68
73
|
*/
|
|
69
74
|
export function generateMCPCommands(options) {
|
|
70
75
|
const commands = [];
|
|
71
76
|
const config = options.mcp;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
if (isWindows()) {
|
|
78
|
+
if (config.claudeFlow) {
|
|
79
|
+
commands.push('claude mcp add claude-flow -- cmd /c npx -y @claude-flow/cli@latest mcp start');
|
|
80
|
+
}
|
|
81
|
+
if (config.ruvSwarm) {
|
|
82
|
+
commands.push('claude mcp add ruv-swarm -- cmd /c npx -y ruv-swarm mcp start');
|
|
83
|
+
}
|
|
84
|
+
if (config.flowNexus) {
|
|
85
|
+
commands.push('claude mcp add flow-nexus -- cmd /c npx -y flow-nexus@latest mcp start');
|
|
86
|
+
}
|
|
79
87
|
}
|
|
80
|
-
|
|
81
|
-
|
|
88
|
+
else {
|
|
89
|
+
if (config.claudeFlow) {
|
|
90
|
+
commands.push("claude mcp add claude-flow -- npx -y @claude-flow/cli@latest mcp start");
|
|
91
|
+
}
|
|
92
|
+
if (config.ruvSwarm) {
|
|
93
|
+
commands.push("claude mcp add ruv-swarm -- npx -y ruv-swarm mcp start");
|
|
94
|
+
}
|
|
95
|
+
if (config.flowNexus) {
|
|
96
|
+
commands.push("claude mcp add flow-nexus -- npx -y flow-nexus@latest mcp start");
|
|
97
|
+
}
|
|
82
98
|
}
|
|
83
99
|
return commands;
|
|
84
100
|
}
|
|
@@ -94,7 +110,7 @@ export function getPlatformInstructions() {
|
|
|
94
110
|
}
|
|
95
111
|
return {
|
|
96
112
|
platform: process.platform === 'darwin' ? 'macOS' : 'Linux',
|
|
97
|
-
note: 'MCP configuration uses
|
|
113
|
+
note: 'MCP configuration uses npx directly.',
|
|
98
114
|
};
|
|
99
115
|
}
|
|
100
116
|
//# sourceMappingURL=mcp-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-generator.js","sourceRoot":"","sources":["../../../src/init/mcp-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AACtC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"mcp-generator.js","sourceRoot":"","sources":["../../../src/init/mcp-generator.ts"],"names":[],"mappings":"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"}
|