agentic-flow 3.0.0 → 3.2.0

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 (115) hide show
  1. package/.agents/skills/agentic-flow-ecosystem/SKILL.md +50 -0
  2. package/.claude/skills/agentic-flow-ecosystem/skill.md +58 -0
  3. package/.claude/skills/agentic-flow-quickstart/skill.md +6 -6
  4. package/.claude/skills/hooks-automation/skill.md +11 -11
  5. package/.claude/skills/memory-patterns/skill.md +7 -7
  6. package/.claude/skills/sparc-methodology/skill.md +13 -13
  7. package/.claude/skills/swarm-coordination/skill.md +5 -5
  8. package/.claude/skills/worker-benchmarks/skill.md +5 -5
  9. package/.claude/skills/worker-integration/skill.md +5 -5
  10. package/.claude/statusline.mjs +22 -5
  11. package/CHANGELOG.md +48 -0
  12. package/README.md +83 -71
  13. package/dist/.tsbuildinfo +1 -1
  14. package/dist/cli/commands/hooks.d.ts.map +1 -1
  15. package/dist/cli/commands/hooks.js +17 -17
  16. package/dist/cli/commands/hooks.js.map +1 -1
  17. package/dist/cli/commands/init.d.ts +2 -5
  18. package/dist/cli/commands/init.d.ts.map +1 -1
  19. package/dist/cli/commands/init.js +11 -15
  20. package/dist/cli/commands/init.js.map +1 -1
  21. package/dist/cli/commands/swarm.d.ts.map +1 -1
  22. package/dist/cli/commands/swarm.js +3 -2
  23. package/dist/cli/commands/swarm.js.map +1 -1
  24. package/dist/core/agentdb-fast.d.ts +21 -11
  25. package/dist/core/agentdb-fast.d.ts.map +1 -1
  26. package/dist/core/agentdb-fast.js +39 -14
  27. package/dist/core/agentdb-fast.js.map +1 -1
  28. package/dist/integrations/agent-booster.d.ts +35 -0
  29. package/dist/integrations/agent-booster.d.ts.map +1 -0
  30. package/dist/integrations/agent-booster.js +45 -0
  31. package/dist/integrations/agent-booster.js.map +1 -0
  32. package/dist/integrations/index.d.ts +15 -0
  33. package/dist/integrations/index.d.ts.map +1 -0
  34. package/dist/integrations/index.js +11 -0
  35. package/dist/integrations/index.js.map +1 -0
  36. package/dist/integrations/onnx-wasm-embedder.d.ts +59 -0
  37. package/dist/integrations/onnx-wasm-embedder.d.ts.map +1 -0
  38. package/dist/integrations/onnx-wasm-embedder.js +145 -0
  39. package/dist/integrations/onnx-wasm-embedder.js.map +1 -0
  40. package/dist/integrations/optional.d.ts +44 -0
  41. package/dist/integrations/optional.d.ts.map +1 -0
  42. package/dist/integrations/optional.js +107 -0
  43. package/dist/integrations/optional.js.map +1 -0
  44. package/dist/integrations/prompt-injection.d.ts +52 -0
  45. package/dist/integrations/prompt-injection.d.ts.map +1 -0
  46. package/dist/integrations/prompt-injection.js +126 -0
  47. package/dist/integrations/prompt-injection.js.map +1 -0
  48. package/dist/integrations/sublinear.d.ts +71 -0
  49. package/dist/integrations/sublinear.d.ts.map +1 -0
  50. package/dist/integrations/sublinear.js +227 -0
  51. package/dist/integrations/sublinear.js.map +1 -0
  52. package/dist/integrations/task-partition.d.ts +40 -0
  53. package/dist/integrations/task-partition.d.ts.map +1 -0
  54. package/dist/integrations/task-partition.js +173 -0
  55. package/dist/integrations/task-partition.js.map +1 -0
  56. package/dist/mcp/mcp-policy.d.ts.map +1 -1
  57. package/dist/mcp/mcp-policy.js +2 -0
  58. package/dist/mcp/mcp-policy.js.map +1 -1
  59. package/dist/mcp/standalone-stdio.js +12 -26
  60. package/dist/mcp/standalone-stdio.js.map +1 -1
  61. package/dist/mcp/tools/ecosystem-tools.d.ts +49 -0
  62. package/dist/mcp/tools/ecosystem-tools.d.ts.map +1 -0
  63. package/dist/mcp/tools/ecosystem-tools.js +126 -0
  64. package/dist/mcp/tools/ecosystem-tools.js.map +1 -0
  65. package/dist/proxy/anthropic-to-gemini.d.ts.map +1 -1
  66. package/dist/proxy/anthropic-to-gemini.js +10 -14
  67. package/dist/proxy/anthropic-to-gemini.js.map +1 -1
  68. package/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -1
  69. package/dist/proxy/anthropic-to-openrouter.js +6 -25
  70. package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
  71. package/dist/proxy/anthropic-to-requesty.d.ts.map +1 -1
  72. package/dist/proxy/anthropic-to-requesty.js +8 -10
  73. package/dist/proxy/anthropic-to-requesty.js.map +1 -1
  74. package/dist/proxy/sse-lines.d.ts +9 -0
  75. package/dist/proxy/sse-lines.d.ts.map +1 -0
  76. package/dist/proxy/sse-lines.js +37 -0
  77. package/dist/proxy/sse-lines.js.map +1 -0
  78. package/dist/reasoningbank/index.d.ts +2 -1
  79. package/dist/reasoningbank/index.d.ts.map +1 -1
  80. package/dist/reasoningbank/index.js +1 -1
  81. package/dist/reasoningbank/index.js.map +1 -1
  82. package/dist/reasoningbank/utils/embeddings.d.ts +17 -0
  83. package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -1
  84. package/dist/reasoningbank/utils/embeddings.js +48 -17
  85. package/dist/reasoningbank/utils/embeddings.js.map +1 -1
  86. package/dist/routing/SemanticRouter.d.ts +25 -9
  87. package/dist/routing/SemanticRouter.d.ts.map +1 -1
  88. package/dist/routing/SemanticRouter.js +63 -12
  89. package/dist/routing/SemanticRouter.js.map +1 -1
  90. package/dist/utils/input-validator.d.ts +10 -2
  91. package/dist/utils/input-validator.d.ts.map +1 -1
  92. package/dist/utils/input-validator.js +30 -2
  93. package/dist/utils/input-validator.js.map +1 -1
  94. package/dist/utils/model-cache.d.ts.map +1 -1
  95. package/dist/utils/model-cache.js +6 -25
  96. package/dist/utils/model-cache.js.map +1 -1
  97. package/dist/utils/package-version.d.ts +9 -0
  98. package/dist/utils/package-version.d.ts.map +1 -0
  99. package/dist/utils/package-version.js +39 -0
  100. package/dist/utils/package-version.js.map +1 -0
  101. package/dist/wasm/onnx-embeddings-wasm.d.ts.map +1 -1
  102. package/dist/wasm/onnx-embeddings-wasm.js +21 -10
  103. package/dist/wasm/onnx-embeddings-wasm.js.map +1 -1
  104. package/docs/docker-tests/TEST-V1.7.8.Dockerfile +2 -2
  105. package/docs/docker-tests/TEST-V1.7.9-NODE20.Dockerfile +2 -2
  106. package/docs/docker-tests/TEST-V1.7.9.Dockerfile +2 -2
  107. package/docs/guides/CLAUDE-CODE-INTEGRATION.md +25 -8
  108. package/docs/guides/PROXY-ARCHITECTURE-AND-EXTENSION.md +22 -9
  109. package/docs/guides/STANDALONE_PROXY_GUIDE.md +16 -6
  110. package/docs/integrations/FASTMCP_CLI_INTEGRATION.md +1 -1
  111. package/docs/plans/requesty/02-architecture.md +5 -6
  112. package/docs/plans/requesty/03-implementation-phases.md +3 -4
  113. package/docs/plans/requesty/05-migration-guide.md +2 -2
  114. package/package.json +12 -7
  115. package/scripts/validate-providers.sh +7 -4
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * CLI Init Command\n * Creates .claude/ folder structure and configuration files for Claude Code integration\n * Copies all agents, commands, skills, and helpers from the package\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n/**\n * The installed package version, so generated hooks and the MCP server run\n * exactly this release instead of whatever the @alpha tag points at later.\n */\nexport function readPackageVersion(): string {\n try {\n const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../../package.json'), 'utf-8'));\n if (typeof pkg.version === 'string' && /^\\d+\\.\\d+\\.\\d+[\\w.+-]*$/.test(pkg.version)) return pkg.version;\n } catch {\n // fall through\n }\n return 'latest';\n}\n\nconst PACKAGE_SPEC = `agentic-flow@${readPackageVersion()}`;\n\nconst CLAUDE_MD_TEMPLATE = `# Claude Code Configuration - Agentic Flow\n\n## 🚨 CRITICAL: CONCURRENT EXECUTION & FILE MANAGEMENT\n\n**ABSOLUTE RULES**:\n1. ALL operations MUST be concurrent/parallel in a single message\n2. **NEVER save working files, text/mds and tests to the root folder**\n3. ALWAYS organize files in appropriate subdirectories\n4. **USE CLAUDE CODE'S TASK TOOL** for spawning agents concurrently, not just MCP\n\n### ⚡ GOLDEN RULE: \"1 MESSAGE = ALL RELATED OPERATIONS\"\n\n**MANDATORY PATTERNS:**\n- **TodoWrite**: ALWAYS batch ALL todos in ONE call (5-10+ todos minimum)\n- **Task tool (Claude Code)**: ALWAYS spawn ALL agents in ONE message with full instructions\n- **File operations**: ALWAYS batch ALL reads/writes/edits in ONE message\n- **Bash commands**: ALWAYS batch ALL terminal operations in ONE message\n- **Memory operations**: ALWAYS batch ALL memory store/retrieve in ONE message\n\n### 🎯 CRITICAL: Claude Code Task Tool for Agent Execution\n\n**Claude Code's Task tool is the PRIMARY way to spawn agents:**\n\\`\\`\\`javascript\n// ✅ CORRECT: Use Claude Code's Task tool for parallel agent execution\n[Single Message]:\n Task(\"Research agent\", \"Analyze requirements and patterns...\", \"researcher\")\n Task(\"Coder agent\", \"Implement core features...\", \"coder\")\n Task(\"Tester agent\", \"Create comprehensive tests...\", \"tester\")\n Task(\"Reviewer agent\", \"Review code quality...\", \"reviewer\")\n Task(\"Architect agent\", \"Design system architecture...\", \"system-architect\")\n\\`\\`\\`\n\n**MCP tools are ONLY for coordination setup:**\n- \\`mcp__claude-flow__swarm_init\\` - Initialize coordination topology\n- \\`mcp__claude-flow__agent_spawn\\` - Define agent types for coordination\n- \\`mcp__claude-flow__task_orchestrate\\` - Orchestrate high-level workflows\n\n### 📁 File Organization Rules\n\n**NEVER save to root folder. Use these directories:**\n- \\`/src\\` - Source code files\n- \\`/tests\\` - Test files\n- \\`/docs\\` - Documentation and markdown files\n- \\`/config\\` - Configuration files\n- \\`/scripts\\` - Utility scripts\n- \\`/examples\\` - Example code\n\n## 🚀 Quick Start\n\n\\`\\`\\`bash\n# Start MCP server for Claude Code integration\nnpx ${PACKAGE_SPEC} mcp start\n\n# Run an agent directly\nnpx ${PACKAGE_SPEC} --agent coder --task \"Your task here\"\n\n# List available agents\nnpx ${PACKAGE_SPEC} --list\n\\`\\`\\`\n\n## 🚀 Available Agents (54 Total)\n\n### Core Development\n\\`coder\\`, \\`reviewer\\`, \\`tester\\`, \\`planner\\`, \\`researcher\\`\n\n### Swarm Coordination\n\\`hierarchical-coordinator\\`, \\`mesh-coordinator\\`, \\`adaptive-coordinator\\`, \\`collective-intelligence-coordinator\\`, \\`swarm-memory-manager\\`\n\n### Consensus & Distributed\n\\`byzantine-coordinator\\`, \\`raft-manager\\`, \\`gossip-coordinator\\`, \\`consensus-builder\\`, \\`crdt-synchronizer\\`, \\`quorum-manager\\`, \\`security-manager\\`\n\n### Performance & Optimization\n\\`perf-analyzer\\`, \\`performance-benchmarker\\`, \\`task-orchestrator\\`, \\`memory-coordinator\\`, \\`smart-agent\\`\n\n### GitHub & Repository\n\\`github-modes\\`, \\`pr-manager\\`, \\`code-review-swarm\\`, \\`issue-tracker\\`, \\`release-manager\\`, \\`workflow-automation\\`, \\`project-board-sync\\`, \\`repo-architect\\`, \\`multi-repo-swarm\\`\n\n### SPARC Methodology\n\\`sparc-coord\\`, \\`sparc-coder\\`, \\`specification\\`, \\`pseudocode\\`, \\`architecture\\`, \\`refinement\\`\n\n### Specialized Development\n\\`backend-dev\\`, \\`mobile-dev\\`, \\`ml-developer\\`, \\`cicd-engineer\\`, \\`api-docs\\`, \\`system-architect\\`, \\`code-analyzer\\`, \\`base-template-generator\\`\n\n## 🎯 Claude Code vs MCP Tools\n\n### Claude Code Handles ALL EXECUTION:\n- **Task tool**: Spawn and run agents concurrently for actual work\n- File operations (Read, Write, Edit, MultiEdit, Glob, Grep)\n- Code generation and programming\n- Bash commands and system operations\n- Implementation work\n- Project navigation and analysis\n- TodoWrite and task management\n- Git operations\n- Package management\n- Testing and debugging\n\n### MCP Tools ONLY COORDINATE:\n- Swarm initialization (topology setup)\n- Agent type definitions (coordination patterns)\n- Task orchestration (high-level planning)\n- Memory management\n- Neural features\n- Performance tracking\n- GitHub integration\n\n**KEY**: MCP coordinates the strategy, Claude Code's Task tool executes with real agents.\n\n## MCP Tool Categories\n\n### Coordination\n\\`swarm_init\\`, \\`agent_spawn\\`, \\`task_orchestrate\\`\n\n### Monitoring\n\\`swarm_status\\`, \\`agent_list\\`, \\`agent_metrics\\`, \\`task_status\\`, \\`task_results\\`\n\n### Memory & Neural\n\\`memory_usage\\`, \\`neural_status\\`, \\`neural_train\\`, \\`neural_patterns\\`\n\n### GitHub Integration\n\\`github_swarm\\`, \\`repo_analyze\\`, \\`pr_enhance\\`, \\`issue_triage\\`, \\`code_review\\`\n\n## 🧠 Self-Learning Hooks System\n\n### Available Hooks Commands:\n\\`\\`\\`bash\n# Before editing - get context and agent suggestions\nnpx ${PACKAGE_SPEC} hooks pre-edit <filePath>\n\n# After editing - record outcome for learning\nnpx ${PACKAGE_SPEC} hooks post-edit <filePath> --success true\n\n# Before commands - assess risk\nnpx ${PACKAGE_SPEC} hooks pre-command \"<command>\"\n\n# After commands - record outcome\nnpx ${PACKAGE_SPEC} hooks post-command \"<command>\" --success true\n\n# Route task to optimal agent using learned patterns\nnpx ${PACKAGE_SPEC} hooks route \"<task description>\"\n\n# Explain routing decision with transparency\nnpx ${PACKAGE_SPEC} hooks explain \"<task description>\"\n\n# Bootstrap intelligence from repository\nnpx ${PACKAGE_SPEC} hooks pretrain\n\n# Generate optimized agent configs from pretrain data\nnpx ${PACKAGE_SPEC} hooks build-agents\n\n# View learning metrics dashboard\nnpx ${PACKAGE_SPEC} hooks metrics\n\n# Transfer patterns from another project\nnpx ${PACKAGE_SPEC} hooks transfer <sourceProject>\n\n# RuVector intelligence (SONA, MoE, HNSW 150x faster)\nnpx ${PACKAGE_SPEC} hooks intelligence\n\\`\\`\\`\n\n### Pretraining System (4-Step Pipeline):\n1. **RETRIEVE** - Top-k memory injection with MMR diversity\n2. **JUDGE** - LLM-as-judge trajectory evaluation\n3. **DISTILL** - Extract strategy memories from trajectories\n4. **CONSOLIDATE** - Dedup, detect contradictions, prune old patterns\n\n## Performance Benefits\n\n- **84.8% SWE-Bench solve rate**\n- **32.3% token reduction**\n- **2.8-4.4x speed improvement**\n- **27+ neural models**\n\n## Advanced Features (v2.0.0)\n\n- 🚀 Automatic Topology Selection\n- ⚡ Parallel Execution (2.8-4.4x speed)\n- 🧠 Neural Training\n- 📊 Bottleneck Analysis\n- 🤖 Smart Auto-Spawning\n- 🛡️ Self-Healing Workflows\n- 💾 Cross-Session Memory\n- 🔗 GitHub Integration\n\n## Code Style & Best Practices\n\n- **Modular Design**: Files under 500 lines\n- **Environment Safety**: Never hardcode secrets\n- **Test-First**: Write tests before implementation\n- **Clean Architecture**: Separate concerns\n- **Documentation**: Keep updated\n\n## Support\n\n- Documentation: https://github.com/ruvnet/agentic-flow\n- Issues: https://github.com/ruvnet/agentic-flow/issues\n\n---\n\nRemember: **Agentic Flow coordinates, Claude Code creates!**\n\n# important-instruction-reminders\nDo what has been asked; nothing more, nothing less.\nNEVER create files unless they're absolutely necessary for achieving your goal.\nALWAYS prefer editing an existing file to creating a new one.\nNEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.\nNever save working files, text/mds and tests to the root folder.\n`;\n\n/**\n * settings.json written by `init`. Hooks and the MCP server are pinned to\n * `version`. Permissions do not pre-approve npx/npm or whole MCP servers:\n * those would let any package or tool run without a prompt.\n */\nexport function buildSettingsTemplate(version: string = readPackageVersion()) {\n const spec = `agentic-flow@${version}`;\n return {\n model: \"claude-sonnet-4-20250514\",\n customInstructions: \"Follow the project's CLAUDE.md guidelines. Use concurrent execution for all operations.\",\n env: {\n AGENTIC_FLOW_INTELLIGENCE: \"true\",\n AGENTIC_FLOW_LEARNING_RATE: \"0.1\",\n AGENTIC_FLOW_EPSILON: \"0.1\",\n AGENTIC_FLOW_MEMORY_BACKEND: \"agentdb\"\n },\n permissions: {\n allowedTools: [\"Read\", \"Write\", \"Edit\", \"Bash\", \"Glob\", \"Grep\", \"Task\", \"WebFetch\", \"WebSearch\", \"TodoWrite\", \"LSP\", \"NotebookEdit\"],\n deniedTools: [],\n allow: [\n \"Bash(agentic-flow:*)\"\n ]\n },\n hooks: {\n PreToolUse: [\n {\n matcher: \"Edit|Write|MultiEdit\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks pre-edit \"$TOOL_INPUT_file_path\"` }]\n },\n {\n matcher: \"Bash\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks pre-command \"$TOOL_INPUT_command\"` }]\n }\n ],\n PostToolUse: [\n {\n matcher: \"Edit|Write|MultiEdit\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks post-edit \"$TOOL_INPUT_file_path\" --success` }]\n },\n {\n matcher: \"Bash\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks post-command \"$TOOL_INPUT_command\"` }]\n }\n ],\n PostToolUseFailure: [\n {\n matcher: \"Edit|Write|MultiEdit\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks post-edit \"$TOOL_INPUT_file_path\" --fail --error \"$ERROR_MESSAGE\"` }]\n }\n ],\n SessionStart: [\n {\n hooks: [{ type: \"command\", command: `npx ${spec} hooks intelligence stats --json 2>/dev/null || true` }]\n }\n ],\n SessionEnd: [\n {\n hooks: [{ type: \"command\", command: `npx ${spec} hooks metrics --session --json 2>/dev/null || true` }]\n }\n ],\n UserPromptSubmit: [\n {\n hooks: [\n { type: \"command\", timeout: 3000, command: `npx ${spec} hooks route \"$USER_PROMPT\" --json 2>/dev/null || true` }\n ]\n }\n ],\n Stop: [\n {\n matcher: \".*\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks metrics --session 2>/dev/null || true` }]\n }\n ]\n },\n agents: {\n source: \".claude/agents\",\n customAgents: []\n },\n skills: {\n source: \".claude/commands\",\n enabled: true\n },\n statusLine: {\n type: \"command\",\n command: \".claude/statusline.sh\"\n },\n mcpServers: {\n \"agentic-flow\": {\n command: \"npx\",\n args: [spec, \"mcp\", \"start\"]\n }\n }\n };\n}\n\ninterface InitOptions {\n force?: boolean;\n minimal?: boolean;\n verbose?: boolean;\n}\n\n/**\n * Recursively copy a directory\n */\nfunction copyDirRecursive(src: string, dest: string, verbose: boolean = false): number {\n let fileCount = 0;\n\n if (!fs.existsSync(src)) {\n return fileCount;\n }\n\n if (!fs.existsSync(dest)) {\n fs.mkdirSync(dest, { recursive: true });\n }\n\n const entries = fs.readdirSync(src, { withFileTypes: true });\n\n for (const entry of entries) {\n const srcPath = path.join(src, entry.name);\n const destPath = path.join(dest, entry.name);\n\n if (entry.isDirectory()) {\n fileCount += copyDirRecursive(srcPath, destPath, verbose);\n } else {\n fs.copyFileSync(srcPath, destPath);\n fileCount++;\n if (verbose) {\n console.log(` 📄 ${path.relative(dest, destPath)}`);\n }\n }\n }\n\n return fileCount;\n}\n\n/**\n * Find the package's .claude directory\n */\nfunction findPackageClaudeDir(): string | null {\n // Try multiple potential locations\n const potentialPaths = [\n // When running from dist/\n path.resolve(__dirname, '..', '..', '..', '.claude'),\n // When running from src/\n path.resolve(__dirname, '..', '..', '.claude'),\n // When installed as package\n path.resolve(__dirname, '..', '.claude'),\n // Fallback to package root\n path.resolve(process.cwd(), 'node_modules', 'agentic-flow', '.claude'),\n ];\n\n for (const p of potentialPaths) {\n if (fs.existsSync(p) && fs.statSync(p).isDirectory()) {\n return p;\n }\n }\n\n return null;\n}\n\nexport async function handleInitCommand(args: string[]): Promise<void> {\n const options: InitOptions = {\n force: args.includes('--force') || args.includes('-f'),\n minimal: args.includes('--minimal') || args.includes('-m'),\n verbose: args.includes('--verbose') || args.includes('-v')\n };\n\n if (args.includes('--help') || args.includes('-h')) {\n printInitHelp();\n return;\n }\n\n const cwd = process.cwd();\n const claudeDir = path.join(cwd, '.claude');\n const claudeMdFile = path.join(cwd, 'CLAUDE.md');\n\n console.log(`\n╔═══════════════════════════════════════════════════════╗\n║ Agentic Flow - Project Initialization ║\n╚═══════════════════════════════════════════════════════╝\n`);\n\n // Check if already initialized\n if (fs.existsSync(claudeDir) && !options.force) {\n console.log('⚠️ .claude/ directory already exists.');\n console.log(' Use --force to overwrite existing configuration.\\n');\n return;\n }\n\n try {\n // Find the package's .claude directory\n const packageClaudeDir = findPackageClaudeDir();\n\n if (packageClaudeDir && !options.minimal) {\n console.log('📦 Copying full .claude/ structure from agentic-flow package...\\n');\n\n // Copy entire .claude directory structure\n const directories = ['agents', 'commands', 'skills', 'helpers'];\n let totalFiles = 0;\n\n for (const dir of directories) {\n const srcDir = path.join(packageClaudeDir, dir);\n const destDir = path.join(claudeDir, dir);\n\n if (fs.existsSync(srcDir)) {\n const count = copyDirRecursive(srcDir, destDir, options.verbose);\n totalFiles += count;\n console.log(`✅ Copied .claude/${dir}/ (${count} files)`);\n }\n }\n\n // Copy individual files (settings.json is generated fresh with our template).\n // mcp.json is not copied: the packaged one pointed at a developer-machine\n // path (/workspaces/flow-cloud/...), so every initialized project got a\n // flow-nexus MCP server entry that could not start.\n const individualFiles = ['statusline.sh'];\n for (const file of individualFiles) {\n const srcFile = path.join(packageClaudeDir, file);\n const destFile = path.join(claudeDir, file);\n if (fs.existsSync(srcFile)) {\n fs.copyFileSync(srcFile, destFile);\n console.log(`✅ Copied .claude/${file}`);\n totalFiles++;\n }\n }\n\n console.log(`\\n📊 Total: ${totalFiles} files copied`);\n } else {\n // Minimal mode: create basic structure\n console.log('📦 Creating minimal .claude/ structure...\\n');\n\n if (!fs.existsSync(claudeDir)) {\n fs.mkdirSync(claudeDir, { recursive: true });\n }\n\n const dirs = ['agents', 'commands', 'skills', 'helpers'];\n for (const dir of dirs) {\n const dirPath = path.join(claudeDir, dir);\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n console.log(`✅ Created .claude/${dir}/`);\n }\n }\n }\n\n // Always generate fresh settings.json with our template\n const settingsFile = path.join(claudeDir, 'settings.json');\n if (!fs.existsSync(settingsFile) || options.force) {\n fs.writeFileSync(settingsFile, JSON.stringify(buildSettingsTemplate(), null, 2));\n console.log('✅ Created .claude/settings.json (with hooks, agents, skills, statusline)');\n }\n\n // Create CLAUDE.md in project root (unless minimal mode)\n if (!options.minimal) {\n if (!fs.existsSync(claudeMdFile) || options.force) {\n fs.writeFileSync(claudeMdFile, CLAUDE_MD_TEMPLATE);\n console.log('✅ Created CLAUDE.md');\n } else {\n console.log('ℹ️ CLAUDE.md already exists (skipped)');\n }\n }\n\n console.log(`\n╔═══════════════════════════════════════════════════════╗\n║ Initialization Complete! ║\n╚═══════════════════════════════════════════════════════╝\n\n📁 Created structure:\n .claude/\n ├── settings.json # Claude Code settings (hooks, agents, skills, statusline)\n ├── statusline.sh # Custom statusline (model, tokens, cost, swarm status)\n ├── agents/ # 80+ agent definitions (coder, tester, reviewer, etc.)\n ├── commands/ # 100+ slash commands (swarm, github, sparc, etc.)\n ├── skills/ # Custom skills and workflows\n └── helpers/ # Helper utilities\n CLAUDE.md # Project instructions\n\n🚀 Next steps:\n 1. Start the MCP server:\n npx ${PACKAGE_SPEC} mcp start\n\n 2. Run Claude Code:\n claude\n\n 3. Or run agents directly:\n npx ${PACKAGE_SPEC} --agent coder --task \"Your task\"\n\n📖 Documentation:\n https://github.com/ruvnet/agentic-flow\n`);\n\n } catch (error) {\n console.error('❌ Initialization failed:', error);\n process.exit(1);\n }\n}\n\nfunction printInitHelp(): void {\n console.log(`\nAgentic Flow - Project Initialization\n\nUSAGE:\n npx ${PACKAGE_SPEC} init [OPTIONS]\n\nOPTIONS:\n --force, -f Overwrite existing configuration\n --minimal, -m Create minimal setup (empty directories only)\n --verbose, -v Show detailed file copy output\n --help, -h Show this help\n\nEXAMPLES:\n npx ${PACKAGE_SPEC} init # Initialize with full agent/command library\n npx ${PACKAGE_SPEC} init --force # Reinitialize (overwrite existing)\n npx ${PACKAGE_SPEC} init --minimal # Minimal setup (empty directories)\n npx ${PACKAGE_SPEC} init --verbose # Show all files being copied\n\nCREATED FILES:\n .claude/ Claude Code configuration directory\n .claude/settings.json Settings with hooks, agents, skills, statusline, MCP servers\n .claude/agents/ 80+ agent definitions (coder, tester, reviewer, sparc, etc.)\n .claude/commands/ 100+ slash commands (swarm, github, sparc, etc.)\n .claude/skills/ Custom skills and workflows\n .claude/helpers/ Helper utilities\n CLAUDE.md Project instructions for Claude\n`);\n}\n\n// Run if executed directly\nif (process.argv[1]?.endsWith('init.js') || process.argv[1]?.endsWith('init.ts')) {\n const args = process.argv.slice(2);\n handleInitCommand(args);\n}\n"]}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * CLI Init Command\n * Creates .claude/ folder structure and configuration files for Claude Code integration\n * Copies all agents, commands, skills, and helpers from the package\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { fileURLToPath } from 'url';\nimport { readPackageVersion } from '../../utils/package-version.js';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nexport { readPackageVersion };\n\nconst PACKAGE_SPEC = `agentic-flow@${readPackageVersion()}`;\n\nconst CLAUDE_MD_TEMPLATE = `# Claude Code Configuration - Agentic Flow\n\n## 🚨 CRITICAL: CONCURRENT EXECUTION & FILE MANAGEMENT\n\n**ABSOLUTE RULES**:\n1. ALL operations MUST be concurrent/parallel in a single message\n2. **NEVER save working files, text/mds and tests to the root folder**\n3. ALWAYS organize files in appropriate subdirectories\n4. **USE CLAUDE CODE'S TASK TOOL** for spawning agents concurrently, not just MCP\n\n### ⚡ GOLDEN RULE: \"1 MESSAGE = ALL RELATED OPERATIONS\"\n\n**MANDATORY PATTERNS:**\n- **TodoWrite**: ALWAYS batch ALL todos in ONE call (5-10+ todos minimum)\n- **Task tool (Claude Code)**: ALWAYS spawn ALL agents in ONE message with full instructions\n- **File operations**: ALWAYS batch ALL reads/writes/edits in ONE message\n- **Bash commands**: ALWAYS batch ALL terminal operations in ONE message\n- **Memory operations**: ALWAYS batch ALL memory store/retrieve in ONE message\n\n### 🎯 CRITICAL: Claude Code Task Tool for Agent Execution\n\n**Claude Code's Task tool is the PRIMARY way to spawn agents:**\n\\`\\`\\`javascript\n// ✅ CORRECT: Use Claude Code's Task tool for parallel agent execution\n[Single Message]:\n Task(\"Research agent\", \"Analyze requirements and patterns...\", \"researcher\")\n Task(\"Coder agent\", \"Implement core features...\", \"coder\")\n Task(\"Tester agent\", \"Create comprehensive tests...\", \"tester\")\n Task(\"Reviewer agent\", \"Review code quality...\", \"reviewer\")\n Task(\"Architect agent\", \"Design system architecture...\", \"system-architect\")\n\\`\\`\\`\n\n**MCP tools are ONLY for coordination setup:**\n- \\`mcp__claude-flow__swarm_init\\` - Initialize coordination topology\n- \\`mcp__claude-flow__agent_spawn\\` - Define agent types for coordination\n- \\`mcp__claude-flow__task_orchestrate\\` - Orchestrate high-level workflows\n\n### 📁 File Organization Rules\n\n**NEVER save to root folder. Use these directories:**\n- \\`/src\\` - Source code files\n- \\`/tests\\` - Test files\n- \\`/docs\\` - Documentation and markdown files\n- \\`/config\\` - Configuration files\n- \\`/scripts\\` - Utility scripts\n- \\`/examples\\` - Example code\n\n## 🚀 Quick Start\n\n\\`\\`\\`bash\n# Start MCP server for Claude Code integration\nnpx ${PACKAGE_SPEC} mcp start\n\n# Run an agent directly\nnpx ${PACKAGE_SPEC} --agent coder --task \"Your task here\"\n\n# List available agents\nnpx ${PACKAGE_SPEC} --list\n\\`\\`\\`\n\n## 🚀 Available Agents (54 Total)\n\n### Core Development\n\\`coder\\`, \\`reviewer\\`, \\`tester\\`, \\`planner\\`, \\`researcher\\`\n\n### Swarm Coordination\n\\`hierarchical-coordinator\\`, \\`mesh-coordinator\\`, \\`adaptive-coordinator\\`, \\`collective-intelligence-coordinator\\`, \\`swarm-memory-manager\\`\n\n### Consensus & Distributed\n\\`byzantine-coordinator\\`, \\`raft-manager\\`, \\`gossip-coordinator\\`, \\`consensus-builder\\`, \\`crdt-synchronizer\\`, \\`quorum-manager\\`, \\`security-manager\\`\n\n### Performance & Optimization\n\\`perf-analyzer\\`, \\`performance-benchmarker\\`, \\`task-orchestrator\\`, \\`memory-coordinator\\`, \\`smart-agent\\`\n\n### GitHub & Repository\n\\`github-modes\\`, \\`pr-manager\\`, \\`code-review-swarm\\`, \\`issue-tracker\\`, \\`release-manager\\`, \\`workflow-automation\\`, \\`project-board-sync\\`, \\`repo-architect\\`, \\`multi-repo-swarm\\`\n\n### SPARC Methodology\n\\`sparc-coord\\`, \\`sparc-coder\\`, \\`specification\\`, \\`pseudocode\\`, \\`architecture\\`, \\`refinement\\`\n\n### Specialized Development\n\\`backend-dev\\`, \\`mobile-dev\\`, \\`ml-developer\\`, \\`cicd-engineer\\`, \\`api-docs\\`, \\`system-architect\\`, \\`code-analyzer\\`, \\`base-template-generator\\`\n\n## 🎯 Claude Code vs MCP Tools\n\n### Claude Code Handles ALL EXECUTION:\n- **Task tool**: Spawn and run agents concurrently for actual work\n- File operations (Read, Write, Edit, MultiEdit, Glob, Grep)\n- Code generation and programming\n- Bash commands and system operations\n- Implementation work\n- Project navigation and analysis\n- TodoWrite and task management\n- Git operations\n- Package management\n- Testing and debugging\n\n### MCP Tools ONLY COORDINATE:\n- Swarm initialization (topology setup)\n- Agent type definitions (coordination patterns)\n- Task orchestration (high-level planning)\n- Memory management\n- Neural features\n- Performance tracking\n- GitHub integration\n\n**KEY**: MCP coordinates the strategy, Claude Code's Task tool executes with real agents.\n\n## MCP Tool Categories\n\n### Coordination\n\\`swarm_init\\`, \\`agent_spawn\\`, \\`task_orchestrate\\`\n\n### Monitoring\n\\`swarm_status\\`, \\`agent_list\\`, \\`agent_metrics\\`, \\`task_status\\`, \\`task_results\\`\n\n### Memory & Neural\n\\`memory_usage\\`, \\`neural_status\\`, \\`neural_train\\`, \\`neural_patterns\\`\n\n### GitHub Integration\n\\`github_swarm\\`, \\`repo_analyze\\`, \\`pr_enhance\\`, \\`issue_triage\\`, \\`code_review\\`\n\n## 🧠 Self-Learning Hooks System\n\n### Available Hooks Commands:\n\\`\\`\\`bash\n# Before editing - get context and agent suggestions\nnpx ${PACKAGE_SPEC} hooks pre-edit <filePath>\n\n# After editing - record outcome for learning\nnpx ${PACKAGE_SPEC} hooks post-edit <filePath> --success true\n\n# Before commands - assess risk\nnpx ${PACKAGE_SPEC} hooks pre-command \"<command>\"\n\n# After commands - record outcome\nnpx ${PACKAGE_SPEC} hooks post-command \"<command>\" --success true\n\n# Route task to optimal agent using learned patterns\nnpx ${PACKAGE_SPEC} hooks route \"<task description>\"\n\n# Explain routing decision with transparency\nnpx ${PACKAGE_SPEC} hooks explain \"<task description>\"\n\n# Bootstrap intelligence from repository\nnpx ${PACKAGE_SPEC} hooks pretrain\n\n# Generate optimized agent configs from pretrain data\nnpx ${PACKAGE_SPEC} hooks build-agents\n\n# View learning metrics dashboard\nnpx ${PACKAGE_SPEC} hooks metrics\n\n# Transfer patterns from another project\nnpx ${PACKAGE_SPEC} hooks transfer <sourceProject>\n\n# RuVector intelligence (SONA, MoE, HNSW 150x faster)\nnpx ${PACKAGE_SPEC} hooks intelligence\n\\`\\`\\`\n\n### Pretraining System (4-Step Pipeline):\n1. **RETRIEVE** - Top-k memory injection with MMR diversity\n2. **JUDGE** - LLM-as-judge trajectory evaluation\n3. **DISTILL** - Extract strategy memories from trajectories\n4. **CONSOLIDATE** - Dedup, detect contradictions, prune old patterns\n\n## Performance Benefits\n\n- **84.8% SWE-Bench solve rate**\n- **32.3% token reduction**\n- **2.8-4.4x speed improvement**\n- **27+ neural models**\n\n## Advanced Features (v2.0.0)\n\n- 🚀 Automatic Topology Selection\n- ⚡ Parallel Execution (2.8-4.4x speed)\n- 🧠 Neural Training\n- 📊 Bottleneck Analysis\n- 🤖 Smart Auto-Spawning\n- 🛡️ Self-Healing Workflows\n- 💾 Cross-Session Memory\n- 🔗 GitHub Integration\n\n## Code Style & Best Practices\n\n- **Modular Design**: Files under 500 lines\n- **Environment Safety**: Never hardcode secrets\n- **Test-First**: Write tests before implementation\n- **Clean Architecture**: Separate concerns\n- **Documentation**: Keep updated\n\n## Support\n\n- Documentation: https://github.com/ruvnet/agentic-flow\n- Issues: https://github.com/ruvnet/agentic-flow/issues\n\n---\n\nRemember: **Agentic Flow coordinates, Claude Code creates!**\n\n# important-instruction-reminders\nDo what has been asked; nothing more, nothing less.\nNEVER create files unless they're absolutely necessary for achieving your goal.\nALWAYS prefer editing an existing file to creating a new one.\nNEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.\nNever save working files, text/mds and tests to the root folder.\n`;\n\n/**\n * settings.json written by `init`. Hooks and the MCP server are pinned to\n * `version`. Permissions do not pre-approve npx/npm or whole MCP servers:\n * those would let any package or tool run without a prompt.\n */\nexport function buildSettingsTemplate(version: string = readPackageVersion()) {\n const spec = `agentic-flow@${version}`;\n return {\n model: \"claude-sonnet-4-20250514\",\n customInstructions: \"Follow the project's CLAUDE.md guidelines. Use concurrent execution for all operations.\",\n env: {\n AGENTIC_FLOW_INTELLIGENCE: \"true\",\n AGENTIC_FLOW_LEARNING_RATE: \"0.1\",\n AGENTIC_FLOW_EPSILON: \"0.1\",\n AGENTIC_FLOW_MEMORY_BACKEND: \"agentdb\"\n },\n permissions: {\n allowedTools: [\"Read\", \"Write\", \"Edit\", \"Bash\", \"Glob\", \"Grep\", \"Task\", \"WebFetch\", \"WebSearch\", \"TodoWrite\", \"LSP\", \"NotebookEdit\"],\n deniedTools: [],\n allow: [\n \"Bash(agentic-flow:*)\"\n ]\n },\n hooks: {\n PreToolUse: [\n {\n matcher: \"Edit|Write|MultiEdit\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks pre-edit \"$TOOL_INPUT_file_path\"` }]\n },\n {\n matcher: \"Bash\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks pre-command \"$TOOL_INPUT_command\"` }]\n }\n ],\n PostToolUse: [\n {\n matcher: \"Edit|Write|MultiEdit\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks post-edit \"$TOOL_INPUT_file_path\" --success` }]\n },\n {\n matcher: \"Bash\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks post-command \"$TOOL_INPUT_command\"` }]\n }\n ],\n PostToolUseFailure: [\n {\n matcher: \"Edit|Write|MultiEdit\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks post-edit \"$TOOL_INPUT_file_path\" --fail --error \"$ERROR_MESSAGE\"` }]\n }\n ],\n SessionStart: [\n {\n hooks: [{ type: \"command\", command: `npx ${spec} hooks intelligence stats --json 2>/dev/null || true` }]\n }\n ],\n SessionEnd: [\n {\n hooks: [{ type: \"command\", command: `npx ${spec} hooks metrics --session --json 2>/dev/null || true` }]\n }\n ],\n UserPromptSubmit: [\n {\n hooks: [\n { type: \"command\", timeout: 3000, command: `npx ${spec} hooks route \"$USER_PROMPT\" --json 2>/dev/null || true` }\n ]\n }\n ],\n Stop: [\n {\n matcher: \".*\",\n hooks: [{ type: \"command\", command: `npx ${spec} hooks metrics --session 2>/dev/null || true` }]\n }\n ]\n },\n agents: {\n source: \".claude/agents\",\n customAgents: []\n },\n skills: {\n source: \".claude/commands\",\n enabled: true\n },\n statusLine: {\n type: \"command\",\n command: \".claude/statusline.sh\"\n },\n mcpServers: {\n \"agentic-flow\": {\n command: \"npx\",\n args: [spec, \"mcp\", \"start\"]\n }\n }\n };\n}\n\ninterface InitOptions {\n force?: boolean;\n minimal?: boolean;\n verbose?: boolean;\n}\n\n/**\n * Recursively copy a directory\n */\nfunction copyDirRecursive(src: string, dest: string, verbose: boolean = false): number {\n let fileCount = 0;\n\n if (!fs.existsSync(src)) {\n return fileCount;\n }\n\n if (!fs.existsSync(dest)) {\n fs.mkdirSync(dest, { recursive: true });\n }\n\n const entries = fs.readdirSync(src, { withFileTypes: true });\n\n for (const entry of entries) {\n const srcPath = path.join(src, entry.name);\n const destPath = path.join(dest, entry.name);\n\n if (entry.isDirectory()) {\n fileCount += copyDirRecursive(srcPath, destPath, verbose);\n } else {\n fs.copyFileSync(srcPath, destPath);\n fileCount++;\n if (verbose) {\n console.log(` 📄 ${path.relative(dest, destPath)}`);\n }\n }\n }\n\n return fileCount;\n}\n\n/**\n * Find the package's .claude directory\n */\nfunction findPackageClaudeDir(): string | null {\n // Try multiple potential locations\n const potentialPaths = [\n // When running from dist/\n path.resolve(__dirname, '..', '..', '..', '.claude'),\n // When running from src/\n path.resolve(__dirname, '..', '..', '.claude'),\n // When installed as package\n path.resolve(__dirname, '..', '.claude'),\n // Fallback to package root\n path.resolve(process.cwd(), 'node_modules', 'agentic-flow', '.claude'),\n ];\n\n for (const p of potentialPaths) {\n if (fs.existsSync(p) && fs.statSync(p).isDirectory()) {\n return p;\n }\n }\n\n return null;\n}\n\nexport async function handleInitCommand(args: string[]): Promise<void> {\n const options: InitOptions = {\n force: args.includes('--force') || args.includes('-f'),\n minimal: args.includes('--minimal') || args.includes('-m'),\n verbose: args.includes('--verbose') || args.includes('-v')\n };\n\n if (args.includes('--help') || args.includes('-h')) {\n printInitHelp();\n return;\n }\n\n const cwd = process.cwd();\n const claudeDir = path.join(cwd, '.claude');\n const claudeMdFile = path.join(cwd, 'CLAUDE.md');\n\n console.log(`\n╔═══════════════════════════════════════════════════════╗\n║ Agentic Flow - Project Initialization ║\n╚═══════════════════════════════════════════════════════╝\n`);\n\n // Check if already initialized\n if (fs.existsSync(claudeDir) && !options.force) {\n console.log('⚠️ .claude/ directory already exists.');\n console.log(' Use --force to overwrite existing configuration.\\n');\n return;\n }\n\n try {\n // Find the package's .claude directory\n const packageClaudeDir = findPackageClaudeDir();\n\n if (packageClaudeDir && !options.minimal) {\n console.log('📦 Copying full .claude/ structure from agentic-flow package...\\n');\n\n // Copy entire .claude directory structure\n const directories = ['agents', 'commands', 'skills', 'helpers'];\n let totalFiles = 0;\n\n for (const dir of directories) {\n const srcDir = path.join(packageClaudeDir, dir);\n const destDir = path.join(claudeDir, dir);\n\n if (fs.existsSync(srcDir)) {\n const count = copyDirRecursive(srcDir, destDir, options.verbose);\n totalFiles += count;\n console.log(`✅ Copied .claude/${dir}/ (${count} files)`);\n }\n }\n\n // Copy individual files (settings.json is generated fresh with our template).\n // mcp.json is not copied: the packaged one pointed at a developer-machine\n // path (/workspaces/flow-cloud/...), so every initialized project got a\n // flow-nexus MCP server entry that could not start.\n const individualFiles = ['statusline.sh'];\n for (const file of individualFiles) {\n const srcFile = path.join(packageClaudeDir, file);\n const destFile = path.join(claudeDir, file);\n if (fs.existsSync(srcFile)) {\n fs.copyFileSync(srcFile, destFile);\n console.log(`✅ Copied .claude/${file}`);\n totalFiles++;\n }\n }\n\n // Codex reads skills from <project>/.agents/skills; ship the same\n // guidance there for Codex users (the package keeps them in .agents/skills).\n const codexSkillsSrc = path.join(path.dirname(packageClaudeDir), '.agents', 'skills');\n if (fs.existsSync(codexSkillsSrc)) {\n const count = copyDirRecursive(codexSkillsSrc, path.join(cwd, '.agents', 'skills'), options.verbose);\n totalFiles += count;\n console.log(`✅ Copied .agents/skills/ for Codex (${count} files)`);\n }\n\n console.log(`\\n📊 Total: ${totalFiles} files copied`);\n } else {\n // Minimal mode: create basic structure\n console.log('📦 Creating minimal .claude/ structure...\\n');\n\n if (!fs.existsSync(claudeDir)) {\n fs.mkdirSync(claudeDir, { recursive: true });\n }\n\n const dirs = ['agents', 'commands', 'skills', 'helpers'];\n for (const dir of dirs) {\n const dirPath = path.join(claudeDir, dir);\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n console.log(`✅ Created .claude/${dir}/`);\n }\n }\n }\n\n // Always generate fresh settings.json with our template\n const settingsFile = path.join(claudeDir, 'settings.json');\n if (!fs.existsSync(settingsFile) || options.force) {\n fs.writeFileSync(settingsFile, JSON.stringify(buildSettingsTemplate(), null, 2));\n console.log('✅ Created .claude/settings.json (with hooks, agents, skills, statusline)');\n }\n\n // Create CLAUDE.md in project root (unless minimal mode)\n if (!options.minimal) {\n if (!fs.existsSync(claudeMdFile) || options.force) {\n fs.writeFileSync(claudeMdFile, CLAUDE_MD_TEMPLATE);\n console.log('✅ Created CLAUDE.md');\n } else {\n console.log('ℹ️ CLAUDE.md already exists (skipped)');\n }\n }\n\n console.log(`\n╔═══════════════════════════════════════════════════════╗\n║ Initialization Complete! ║\n╚═══════════════════════════════════════════════════════╝\n\n📁 Created structure:\n .claude/\n ├── settings.json # Claude Code settings (hooks, agents, skills, statusline)\n ├── statusline.sh # Custom statusline (model, tokens, cost, swarm status)\n ├── agents/ # 80+ agent definitions (coder, tester, reviewer, etc.)\n ├── commands/ # 100+ slash commands (swarm, github, sparc, etc.)\n ├── skills/ # Custom skills and workflows\n └── helpers/ # Helper utilities\n CLAUDE.md # Project instructions\n .agents/skills/ # Codex skills (same integrations guidance)\n\n🚀 Next steps:\n 1. Start the MCP server:\n npx ${PACKAGE_SPEC} mcp start\n\n 2. Run Claude Code:\n claude\n\n 3. Or run agents directly:\n npx ${PACKAGE_SPEC} --agent coder --task \"Your task\"\n\n📖 Documentation:\n https://github.com/ruvnet/agentic-flow\n`);\n\n } catch (error) {\n console.error('❌ Initialization failed:', error);\n process.exit(1);\n }\n}\n\nfunction printInitHelp(): void {\n console.log(`\nAgentic Flow - Project Initialization\n\nUSAGE:\n npx ${PACKAGE_SPEC} init [OPTIONS]\n\nOPTIONS:\n --force, -f Overwrite existing configuration\n --minimal, -m Create minimal setup (empty directories only)\n --verbose, -v Show detailed file copy output\n --help, -h Show this help\n\nEXAMPLES:\n npx ${PACKAGE_SPEC} init # Initialize with full agent/command library\n npx ${PACKAGE_SPEC} init --force # Reinitialize (overwrite existing)\n npx ${PACKAGE_SPEC} init --minimal # Minimal setup (empty directories)\n npx ${PACKAGE_SPEC} init --verbose # Show all files being copied\n\nCREATED FILES:\n .claude/ Claude Code configuration directory\n .claude/settings.json Settings with hooks, agents, skills, statusline, MCP servers\n .claude/agents/ 80+ agent definitions (coder, tester, reviewer, sparc, etc.)\n .claude/commands/ 100+ slash commands (swarm, github, sparc, etc.)\n .claude/skills/ Custom skills and workflows\n .claude/helpers/ Helper utilities\n CLAUDE.md Project instructions for Claude\n`);\n}\n\n// Run if executed directly\nif (process.argv[1]?.endsWith('init.js') || process.argv[1]?.endsWith('init.ts')) {\n const args = process.argv.slice(2);\n handleInitCommand(args);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/swarm.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAoB,MAAM,6BAA6B,CAAC;AAM3E,wBAAgB,kBAAkB,IAAI,OAAO,CAkV5C;AAGD,wBAAgB,gBAAgB,IAAI,UAAU,GAAG,IAAI,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI,CAE3D"}
1
+ {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/swarm.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAoB,MAAM,6BAA6B,CAAC;AAO3E,wBAAgB,kBAAkB,IAAI,OAAO,CAkV5C;AAGD,wBAAgB,gBAAgB,IAAI,UAAU,GAAG,IAAI,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI,CAE3D"}
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import { Command } from 'commander';
13
13
  import { createP2PSwarmV2 } from '../../swarm/p2p-swarm-v2.js';
14
+ import { packageSpec } from '../../utils/package-version.js';
14
15
  // Global swarm instance
15
16
  let swarmInstance = null;
16
17
  export function createSwarmCommand() {
@@ -51,7 +52,7 @@ export function createSwarmCommand() {
51
52
  console.log(` Relays: ${status.relays.healthy}/${status.relays.total} healthy`);
52
53
  console.log(` Executor: ${options.executor ? 'Enabled' : 'Disabled'}`);
53
54
  console.log(`\nShare the swarm key to invite others:`);
54
- console.log(` npx agentic-flow@alpha swarm connect -k "${swarmInstance.getSwarmKey()}"`);
55
+ console.log(` npx ${packageSpec()} swarm connect -k "${swarmInstance.getSwarmKey()}"`);
55
56
  }
56
57
  // Keep process alive for background operations
57
58
  if (options.executor) {
@@ -311,7 +312,7 @@ export function createSwarmCommand() {
311
312
  console.log(`🔑 New Swarm Key:`);
312
313
  console.log(` ${key}`);
313
314
  console.log(`\nUse with:`);
314
- console.log(` npx agentic-flow@alpha swarm connect -k "${key}"`);
315
+ console.log(` npx ${packageSpec()} swarm connect -k "${key}"`);
315
316
  });
316
317
  return swarm;
317
318
  }
@@ -1 +1 @@
1
- {"version":3,"file":"swarm.js","sourceRoot":"","sources":["../../../src/cli/commands/swarm.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAc,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG3E,wBAAwB;AACxB,IAAI,aAAa,GAAsB,IAAI,CAAC;AAE5C,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;SAC/B,WAAW,CAAC,4DAA4D,CAAC,CAAC;IAE7E,kCAAkC;IAClC,KAAK;SACF,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;SACnE,MAAM,CAAC,uBAAuB,EAAE,sCAAsC,CAAC;SACvE,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;SAC3D,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,OAKd,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAEtE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC1C,aAAa,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAElE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,aAAa,CAAC,iBAAiB,EAAE,CAAC;YACpC,CAAC;YAED,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;YAEzC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;oBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,QAAQ,EAAE,aAAa,CAAC,WAAW,EAAE;oBACrC,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;iBACpC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,iBAAiB,aAAa,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;gBACrF,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,+CAA+C,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC7F,CAAC;YAED,+CAA+C;YAC/C,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;gBAC9D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACxB,aAAa,EAAE,UAAU,EAAE,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;gBACH,aAAa;gBACb,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,mBAAmB;IACnB,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QAEnD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzB,GAAG,MAAM;gBACT,WAAW;gBACX,eAAe,EAAE,aAAa,CAAC,kBAAkB,EAAE;aACpD,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,sBAAsB,aAAa,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACxE,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,eAAe;IACf,KAAK;SACF,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,WAAW,EAAE,yBAAyB,CAAC;SAC9C,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,OAA0C,EAAE,EAAE;QAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAExE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACvD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;gBAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,OAAO,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,2BAA2B;IAC3B,KAAK;SACF,OAAO,CAAC,2BAA2B,CAAC;SACpC,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAAe,EAAE,OAA2B,EAAE,EAAE;QAC5E,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACvE,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,qBAAqB;IACrB,KAAK;SACF,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,2BAA2B,CAAC,CAAC;QAClE,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,aAAa;QACb,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,aAAa,EAAE,UAAU,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEL,eAAe;IACf,KAAK;SACF,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,cAAc,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,OAAyB,EAAE,EAAE;QAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEhC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,sBAAsB;IACtB,KAAK;SACF,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,cAAc,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;SAChE,MAAM,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,SAAS,CAAC;SAC7D,MAAM,CAAC,KAAK,EAAE,OAA4C,EAAE,EAAE;QAC7D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,cAAc;IACd,KAAK;SACF,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,cAAc,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;SACvD,cAAc,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;SACrD,MAAM,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,CAAC;SAC9D,MAAM,CAAC,gBAAgB,EAAE,YAAY,EAAE,SAAS,CAAC;SACjD,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,IAAI,CAAC;SACvD,MAAM,CAAC,oBAAoB,EAAE,eAAe,EAAE,OAAO,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,OAOd,EAAE,EAAE;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC;gBAC5C,MAAM,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;gBACzC,SAAS,EAAE,OAAO,CAAC,MAAM;gBACzB,QAAQ,EAAE,OAAO,CAAC,KAAK;gBACvB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,gBAAgB,EAAE,EAAE;gBACpB,OAAO,EAAE;oBACP,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;oBACjC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;oBAClC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;iBACrC;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,iBAAiB;IACjB,KAAK;SACF,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEzC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,aAAa,EAAE,gBAAgB,EAAE,CAAC;YAClC,aAAa,EAAE,UAAU,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEL,aAAa;IACb,KAAK;SACF,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,UAAU,EAAE,CAAC;YAC3B,aAAa,GAAG,IAAI,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,yBAAyB;IACzB,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,+CAA+C,GAAG,GAAG,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEL,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAoB;IACnD,aAAa,GAAG,QAAQ,CAAC;AAC3B,CAAC","sourcesContent":["#!/usr/bin/env node\n/**\n * P2P Swarm V2 CLI Commands\n *\n * Production-grade P2P swarm coordination with:\n * - Ed25519/X25519 cryptography\n * - GunDB relay coordination\n * - Task execution with claim resolution\n * - Heartbeat-based liveness\n * - Verified member registry\n */\n\nimport { Command } from 'commander';\nimport { P2PSwarmV2, createP2PSwarmV2 } from '../../swarm/p2p-swarm-v2.js';\nimport { logger } from '../../utils/logger.js';\n\n// Global swarm instance\nlet swarmInstance: P2PSwarmV2 | null = null;\n\nexport function createSwarmCommand(): Command {\n const swarm = new Command('swarm')\n .description('P2P Swarm V2 - Production-grade decentralized coordination');\n\n // Initialize and connect to swarm\n swarm\n .command('connect')\n .description('Connect to a P2P swarm')\n .option('-a, --agent-id <id>', 'Agent ID (default: auto-generated)')\n .option('-k, --swarm-key <key>', 'Swarm key for joining existing swarm')\n .option('-e, --executor', 'Enable task executor capability')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: {\n agentId?: string;\n swarmKey?: string;\n executor?: boolean;\n json?: boolean;\n }) => {\n try {\n const agentId = options.agentId || `agent-${Date.now().toString(36)}`;\n\n console.log(`Connecting to P2P Swarm...`);\n swarmInstance = await createP2PSwarmV2(agentId, options.swarmKey);\n\n if (options.executor) {\n swarmInstance.startTaskExecutor();\n }\n\n const status = swarmInstance.getStatus();\n\n if (options.json) {\n console.log(JSON.stringify({\n connected: status.connected,\n agentId: status.agentId,\n swarmId: status.swarmId,\n swarmKey: swarmInstance.getSwarmKey(),\n relays: status.relays,\n executor: options.executor || false,\n }, null, 2));\n } else {\n console.log(`\\n✅ Connected to P2P Swarm V2`);\n console.log(` Agent ID: ${status.agentId}`);\n console.log(` Swarm ID: ${status.swarmId}`);\n console.log(` Swarm Key: ${swarmInstance.getSwarmKey().slice(0, 20)}...`);\n console.log(` Relays: ${status.relays.healthy}/${status.relays.total} healthy`);\n console.log(` Executor: ${options.executor ? 'Enabled' : 'Disabled'}`);\n console.log(`\\nShare the swarm key to invite others:`);\n console.log(` npx agentic-flow@alpha swarm connect -k \"${swarmInstance.getSwarmKey()}\"`);\n }\n\n // Keep process alive for background operations\n if (options.executor) {\n console.log(`\\nTask executor running. Press Ctrl+C to stop.`);\n process.on('SIGINT', () => {\n swarmInstance?.disconnect();\n process.exit(0);\n });\n // Keep alive\n await new Promise(() => {});\n }\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Get swarm status\n swarm\n .command('status')\n .description('Get current swarm status')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: { json?: boolean }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n const status = swarmInstance.getStatus();\n const liveMembers = swarmInstance.getLiveMembers();\n\n if (options.json) {\n console.log(JSON.stringify({\n ...status,\n liveMembers,\n liveMemberCount: swarmInstance.getLiveMemberCount(),\n }, null, 2));\n } else {\n console.log(`\\n📊 P2P Swarm Status`);\n console.log(` Connected: ${status.connected}`);\n console.log(` Agent ID: ${status.agentId}`);\n console.log(` Swarm ID: ${status.swarmId}`);\n console.log(` Relays: ${status.relays.healthy}/${status.relays.total} healthy`);\n console.log(` Avg Latency: ${status.relays.avgLatency.toFixed(0)}ms`);\n console.log(`\\n👥 Live Members: ${swarmInstance.getLiveMemberCount()}`);\n for (const member of liveMembers) {\n const status = member.isAlive ? '🟢' : '🔴';\n const age = Math.round((Date.now() - member.lastSeen) / 1000);\n console.log(` ${status} ${member.agentId} (${member.capabilities.join(', ')}) - ${age}s ago`);\n }\n }\n });\n\n // List members\n swarm\n .command('members')\n .description('List swarm members')\n .option('-a, --all', 'Include offline members')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: { all?: boolean; json?: boolean }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n const members = swarmInstance.getLiveMembers();\n const filtered = options.all ? members : members.filter(m => m.isAlive);\n\n if (options.json) {\n console.log(JSON.stringify(filtered, null, 2));\n } else {\n console.log(`\\n👥 Swarm Members (${filtered.length})`);\n for (const member of filtered) {\n const status = member.isAlive ? '🟢 Online' : '🔴 Offline';\n const age = Math.round((Date.now() - member.lastSeen) / 1000);\n console.log(`\\n ${member.agentId}`);\n console.log(` Status: ${status}`);\n console.log(` Capabilities: ${member.capabilities.join(', ')}`);\n console.log(` Last Seen: ${age}s ago`);\n }\n }\n });\n\n // Publish message to topic\n swarm\n .command('publish <topic> <message>')\n .description('Publish a message to a topic')\n .option('-j, --json', 'Parse message as JSON')\n .action(async (topic: string, message: string, options: { json?: boolean }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n try {\n const payload = options.json ? JSON.parse(message) : { text: message };\n const messageId = await swarmInstance.publish(topic, payload);\n console.log(`✅ Published to ${topic}`);\n console.log(` Message ID: ${messageId}`);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Subscribe to topic\n swarm\n .command('subscribe <topic>')\n .description('Subscribe to a topic and print messages')\n .action(async (topic: string) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n console.log(`📡 Subscribed to ${topic}. Waiting for messages...`);\n swarmInstance.subscribe(topic, (data, from) => {\n console.log(`\\n[${new Date().toISOString()}] From: ${from}`);\n console.log(JSON.stringify(data, null, 2));\n });\n\n // Keep alive\n process.on('SIGINT', () => {\n swarmInstance?.disconnect();\n process.exit(0);\n });\n await new Promise(() => {});\n });\n\n // Sync Q-table\n swarm\n .command('sync-qtable')\n .description('Sync a Q-table to the swarm')\n .requiredOption('-f, --file <path>', 'Path to Q-table JSON file')\n .action(async (options: { file: string }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n try {\n const fs = await import('fs');\n const data = fs.readFileSync(options.file, 'utf-8');\n const qTable = JSON.parse(data);\n\n if (!Array.isArray(qTable) || !Array.isArray(qTable[0])) {\n throw new Error('Q-table must be a 2D array');\n }\n\n const pointer = await swarmInstance.syncQTable(qTable);\n console.log(`✅ Q-table synced`);\n console.log(` CID: ${pointer.cid}`);\n console.log(` Dimensions: ${pointer.dimensions}`);\n console.log(` Checksum: ${pointer.checksum}`);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Sync memory vectors\n swarm\n .command('sync-memory')\n .description('Sync memory vectors to the swarm')\n .requiredOption('-f, --file <path>', 'Path to vectors JSON file')\n .option('-n, --namespace <ns>', 'Memory namespace', 'default')\n .action(async (options: { file: string; namespace: string }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n try {\n const fs = await import('fs');\n const data = fs.readFileSync(options.file, 'utf-8');\n const vectors = JSON.parse(data);\n\n if (!Array.isArray(vectors) || !Array.isArray(vectors[0])) {\n throw new Error('Vectors must be a 2D array');\n }\n\n const pointer = await swarmInstance.syncMemory(vectors, options.namespace);\n console.log(`✅ Memory vectors synced`);\n console.log(` CID: ${pointer.cid}`);\n console.log(` Namespace: ${options.namespace}`);\n console.log(` Dimensions: ${pointer.dimensions}`);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Submit task\n swarm\n .command('submit-task')\n .description('Submit a task for execution')\n .requiredOption('-m, --module <cid>', 'WASM module CID')\n .requiredOption('-i, --input <cid>', 'Input data CID')\n .option('-e, --entrypoint <fn>', 'Entrypoint function', 'main')\n .option('-f, --fuel <n>', 'Fuel limit', '1000000')\n .option('-M, --memory <mb>', 'Memory limit in MB', '64')\n .option('-t, --timeout <ms>', 'Timeout in ms', '30000')\n .action(async (options: {\n module: string;\n input: string;\n entrypoint: string;\n fuel: string;\n memory: string;\n timeout: string;\n }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n try {\n const taskId = await swarmInstance.submitTask({\n taskId: `task-${Date.now().toString(36)}`,\n moduleCID: options.module,\n inputCID: options.input,\n entrypoint: options.entrypoint,\n outputSchemaHash: '',\n budgets: {\n fuelLimit: parseInt(options.fuel),\n memoryMB: parseInt(options.memory),\n timeoutMs: parseInt(options.timeout),\n },\n });\n\n console.log(`✅ Task submitted`);\n console.log(` Message ID: ${taskId}`);\n console.log(` Module: ${options.module}`);\n console.log(` Input: ${options.input}`);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Start executor\n swarm\n .command('executor')\n .description('Start task executor daemon')\n .action(async () => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n swarmInstance.startTaskExecutor();\n console.log(`✅ Task executor started`);\n console.log(` Listening for tasks...`);\n\n process.on('SIGINT', () => {\n swarmInstance?.stopTaskExecutor();\n swarmInstance?.disconnect();\n process.exit(0);\n });\n await new Promise(() => {});\n });\n\n // Disconnect\n swarm\n .command('disconnect')\n .description('Disconnect from the swarm')\n .action(async () => {\n if (swarmInstance) {\n swarmInstance.disconnect();\n swarmInstance = null;\n console.log('✅ Disconnected from swarm');\n } else {\n console.log('Not connected to swarm');\n }\n });\n\n // Generate new swarm key\n swarm\n .command('keygen')\n .description('Generate a new swarm key')\n .action(async () => {\n const crypto = await import('crypto');\n const key = crypto.randomBytes(32).toString('base64');\n console.log(`🔑 New Swarm Key:`);\n console.log(` ${key}`);\n console.log(`\\nUse with:`);\n console.log(` npx agentic-flow@alpha swarm connect -k \"${key}\"`);\n });\n\n return swarm;\n}\n\n// Export singleton getter for hooks/MCP integration\nexport function getSwarmInstance(): P2PSwarmV2 | null {\n return swarmInstance;\n}\n\nexport function setSwarmInstance(instance: P2PSwarmV2): void {\n swarmInstance = instance;\n}\n"]}
1
+ {"version":3,"file":"swarm.js","sourceRoot":"","sources":["../../../src/cli/commands/swarm.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * P2P Swarm V2 CLI Commands\n *\n * Production-grade P2P swarm coordination with:\n * - Ed25519/X25519 cryptography\n * - GunDB relay coordination\n * - Task execution with claim resolution\n * - Heartbeat-based liveness\n * - Verified member registry\n */\n\nimport { Command } from 'commander';\nimport { P2PSwarmV2, createP2PSwarmV2 } from '../../swarm/p2p-swarm-v2.js';\nimport { logger } from '../../utils/logger.js';\nimport { packageSpec } from '../../utils/package-version.js';\n\n// Global swarm instance\nlet swarmInstance: P2PSwarmV2 | null = null;\n\nexport function createSwarmCommand(): Command {\n const swarm = new Command('swarm')\n .description('P2P Swarm V2 - Production-grade decentralized coordination');\n\n // Initialize and connect to swarm\n swarm\n .command('connect')\n .description('Connect to a P2P swarm')\n .option('-a, --agent-id <id>', 'Agent ID (default: auto-generated)')\n .option('-k, --swarm-key <key>', 'Swarm key for joining existing swarm')\n .option('-e, --executor', 'Enable task executor capability')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: {\n agentId?: string;\n swarmKey?: string;\n executor?: boolean;\n json?: boolean;\n }) => {\n try {\n const agentId = options.agentId || `agent-${Date.now().toString(36)}`;\n\n console.log(`Connecting to P2P Swarm...`);\n swarmInstance = await createP2PSwarmV2(agentId, options.swarmKey);\n\n if (options.executor) {\n swarmInstance.startTaskExecutor();\n }\n\n const status = swarmInstance.getStatus();\n\n if (options.json) {\n console.log(JSON.stringify({\n connected: status.connected,\n agentId: status.agentId,\n swarmId: status.swarmId,\n swarmKey: swarmInstance.getSwarmKey(),\n relays: status.relays,\n executor: options.executor || false,\n }, null, 2));\n } else {\n console.log(`\\n✅ Connected to P2P Swarm V2`);\n console.log(` Agent ID: ${status.agentId}`);\n console.log(` Swarm ID: ${status.swarmId}`);\n console.log(` Swarm Key: ${swarmInstance.getSwarmKey().slice(0, 20)}...`);\n console.log(` Relays: ${status.relays.healthy}/${status.relays.total} healthy`);\n console.log(` Executor: ${options.executor ? 'Enabled' : 'Disabled'}`);\n console.log(`\\nShare the swarm key to invite others:`);\n console.log(` npx ${packageSpec()} swarm connect -k \"${swarmInstance.getSwarmKey()}\"`);\n }\n\n // Keep process alive for background operations\n if (options.executor) {\n console.log(`\\nTask executor running. Press Ctrl+C to stop.`);\n process.on('SIGINT', () => {\n swarmInstance?.disconnect();\n process.exit(0);\n });\n // Keep alive\n await new Promise(() => {});\n }\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Get swarm status\n swarm\n .command('status')\n .description('Get current swarm status')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: { json?: boolean }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n const status = swarmInstance.getStatus();\n const liveMembers = swarmInstance.getLiveMembers();\n\n if (options.json) {\n console.log(JSON.stringify({\n ...status,\n liveMembers,\n liveMemberCount: swarmInstance.getLiveMemberCount(),\n }, null, 2));\n } else {\n console.log(`\\n📊 P2P Swarm Status`);\n console.log(` Connected: ${status.connected}`);\n console.log(` Agent ID: ${status.agentId}`);\n console.log(` Swarm ID: ${status.swarmId}`);\n console.log(` Relays: ${status.relays.healthy}/${status.relays.total} healthy`);\n console.log(` Avg Latency: ${status.relays.avgLatency.toFixed(0)}ms`);\n console.log(`\\n👥 Live Members: ${swarmInstance.getLiveMemberCount()}`);\n for (const member of liveMembers) {\n const status = member.isAlive ? '🟢' : '🔴';\n const age = Math.round((Date.now() - member.lastSeen) / 1000);\n console.log(` ${status} ${member.agentId} (${member.capabilities.join(', ')}) - ${age}s ago`);\n }\n }\n });\n\n // List members\n swarm\n .command('members')\n .description('List swarm members')\n .option('-a, --all', 'Include offline members')\n .option('-j, --json', 'Output as JSON')\n .action(async (options: { all?: boolean; json?: boolean }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n const members = swarmInstance.getLiveMembers();\n const filtered = options.all ? members : members.filter(m => m.isAlive);\n\n if (options.json) {\n console.log(JSON.stringify(filtered, null, 2));\n } else {\n console.log(`\\n👥 Swarm Members (${filtered.length})`);\n for (const member of filtered) {\n const status = member.isAlive ? '🟢 Online' : '🔴 Offline';\n const age = Math.round((Date.now() - member.lastSeen) / 1000);\n console.log(`\\n ${member.agentId}`);\n console.log(` Status: ${status}`);\n console.log(` Capabilities: ${member.capabilities.join(', ')}`);\n console.log(` Last Seen: ${age}s ago`);\n }\n }\n });\n\n // Publish message to topic\n swarm\n .command('publish <topic> <message>')\n .description('Publish a message to a topic')\n .option('-j, --json', 'Parse message as JSON')\n .action(async (topic: string, message: string, options: { json?: boolean }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n try {\n const payload = options.json ? JSON.parse(message) : { text: message };\n const messageId = await swarmInstance.publish(topic, payload);\n console.log(`✅ Published to ${topic}`);\n console.log(` Message ID: ${messageId}`);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Subscribe to topic\n swarm\n .command('subscribe <topic>')\n .description('Subscribe to a topic and print messages')\n .action(async (topic: string) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n console.log(`📡 Subscribed to ${topic}. Waiting for messages...`);\n swarmInstance.subscribe(topic, (data, from) => {\n console.log(`\\n[${new Date().toISOString()}] From: ${from}`);\n console.log(JSON.stringify(data, null, 2));\n });\n\n // Keep alive\n process.on('SIGINT', () => {\n swarmInstance?.disconnect();\n process.exit(0);\n });\n await new Promise(() => {});\n });\n\n // Sync Q-table\n swarm\n .command('sync-qtable')\n .description('Sync a Q-table to the swarm')\n .requiredOption('-f, --file <path>', 'Path to Q-table JSON file')\n .action(async (options: { file: string }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n try {\n const fs = await import('fs');\n const data = fs.readFileSync(options.file, 'utf-8');\n const qTable = JSON.parse(data);\n\n if (!Array.isArray(qTable) || !Array.isArray(qTable[0])) {\n throw new Error('Q-table must be a 2D array');\n }\n\n const pointer = await swarmInstance.syncQTable(qTable);\n console.log(`✅ Q-table synced`);\n console.log(` CID: ${pointer.cid}`);\n console.log(` Dimensions: ${pointer.dimensions}`);\n console.log(` Checksum: ${pointer.checksum}`);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Sync memory vectors\n swarm\n .command('sync-memory')\n .description('Sync memory vectors to the swarm')\n .requiredOption('-f, --file <path>', 'Path to vectors JSON file')\n .option('-n, --namespace <ns>', 'Memory namespace', 'default')\n .action(async (options: { file: string; namespace: string }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n try {\n const fs = await import('fs');\n const data = fs.readFileSync(options.file, 'utf-8');\n const vectors = JSON.parse(data);\n\n if (!Array.isArray(vectors) || !Array.isArray(vectors[0])) {\n throw new Error('Vectors must be a 2D array');\n }\n\n const pointer = await swarmInstance.syncMemory(vectors, options.namespace);\n console.log(`✅ Memory vectors synced`);\n console.log(` CID: ${pointer.cid}`);\n console.log(` Namespace: ${options.namespace}`);\n console.log(` Dimensions: ${pointer.dimensions}`);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Submit task\n swarm\n .command('submit-task')\n .description('Submit a task for execution')\n .requiredOption('-m, --module <cid>', 'WASM module CID')\n .requiredOption('-i, --input <cid>', 'Input data CID')\n .option('-e, --entrypoint <fn>', 'Entrypoint function', 'main')\n .option('-f, --fuel <n>', 'Fuel limit', '1000000')\n .option('-M, --memory <mb>', 'Memory limit in MB', '64')\n .option('-t, --timeout <ms>', 'Timeout in ms', '30000')\n .action(async (options: {\n module: string;\n input: string;\n entrypoint: string;\n fuel: string;\n memory: string;\n timeout: string;\n }) => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n try {\n const taskId = await swarmInstance.submitTask({\n taskId: `task-${Date.now().toString(36)}`,\n moduleCID: options.module,\n inputCID: options.input,\n entrypoint: options.entrypoint,\n outputSchemaHash: '',\n budgets: {\n fuelLimit: parseInt(options.fuel),\n memoryMB: parseInt(options.memory),\n timeoutMs: parseInt(options.timeout),\n },\n });\n\n console.log(`✅ Task submitted`);\n console.log(` Message ID: ${taskId}`);\n console.log(` Module: ${options.module}`);\n console.log(` Input: ${options.input}`);\n } catch (error) {\n console.error('Error:', error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n // Start executor\n swarm\n .command('executor')\n .description('Start task executor daemon')\n .action(async () => {\n if (!swarmInstance) {\n console.error('Not connected to swarm. Run: swarm connect');\n process.exit(1);\n }\n\n swarmInstance.startTaskExecutor();\n console.log(`✅ Task executor started`);\n console.log(` Listening for tasks...`);\n\n process.on('SIGINT', () => {\n swarmInstance?.stopTaskExecutor();\n swarmInstance?.disconnect();\n process.exit(0);\n });\n await new Promise(() => {});\n });\n\n // Disconnect\n swarm\n .command('disconnect')\n .description('Disconnect from the swarm')\n .action(async () => {\n if (swarmInstance) {\n swarmInstance.disconnect();\n swarmInstance = null;\n console.log('✅ Disconnected from swarm');\n } else {\n console.log('Not connected to swarm');\n }\n });\n\n // Generate new swarm key\n swarm\n .command('keygen')\n .description('Generate a new swarm key')\n .action(async () => {\n const crypto = await import('crypto');\n const key = crypto.randomBytes(32).toString('base64');\n console.log(`🔑 New Swarm Key:`);\n console.log(` ${key}`);\n console.log(`\\nUse with:`);\n console.log(` npx ${packageSpec()} swarm connect -k \"${key}\"`);\n });\n\n return swarm;\n}\n\n// Export singleton getter for hooks/MCP integration\nexport function getSwarmInstance(): P2PSwarmV2 | null {\n return swarmInstance;\n}\n\nexport function setSwarmInstance(instance: P2PSwarmV2): void {\n swarmInstance = instance;\n}\n"]}
@@ -5,6 +5,14 @@
5
5
  * Eliminates 2.3s overhead from process spawning and transformers.js init
6
6
  */
7
7
  import { EventEmitter } from 'events';
8
+ /**
9
+ * How AgentDBFast embeds text:
10
+ * - 'auto' (default): all-MiniLM-L6-v2 via ruvector-onnx-embeddings-wasm when the
11
+ * package and model are available and vectorDimensions is 384, else hash
12
+ * - 'onnx-wasm': same, but emit a 'warning' event when it is unavailable
13
+ * - 'hash': deterministic hash vectors (no semantics; fast, offline)
14
+ */
15
+ export type FastEmbeddingMode = 'auto' | 'onnx-wasm' | 'hash';
8
16
  export interface Episode {
9
17
  id?: string;
10
18
  sessionId: string;
@@ -48,12 +56,15 @@ export declare class AgentDBFast extends EventEmitter {
48
56
  private config;
49
57
  private initialized;
50
58
  private embeddingCache;
59
+ private embeddingSource;
60
+ private semanticEmbedder;
51
61
  constructor(config?: {
52
62
  path?: string;
53
63
  vectorDimensions?: number;
54
64
  enableHNSW?: boolean;
55
65
  hnswM?: number;
56
66
  hnswEfConstruction?: number;
67
+ embeddings?: FastEmbeddingMode;
57
68
  });
58
69
  /**
59
70
  * Initialize database connection (lazy)
@@ -88,22 +99,20 @@ export declare class AgentDBFast extends EventEmitter {
88
99
  * Close database connection
89
100
  */
90
101
  close(): Promise<void>;
102
+ /** Which embedder produced vectors so far: 'onnx-wasm', 'hash', or null before the first. */
103
+ getEmbeddingSource(): 'onnx-wasm' | 'hash' | null;
104
+ private getSemanticEmbedder;
91
105
  /**
92
- * Generate embedding for text (with caching)
106
+ * Generate embedding for text (with caching).
93
107
  *
94
- * Note: This is a simple mock. In production, replace with:
95
- * - OpenAI embeddings API
96
- * - Local transformer model
97
- * - SentenceTransformers
108
+ * Real all-MiniLM-L6-v2 vectors when ruvector-onnx-embeddings-wasm is
109
+ * available (see FastEmbeddingMode), deterministic hash vectors otherwise.
110
+ * The source is fixed by the first embedding so one store never mixes both.
98
111
  */
99
112
  private getEmbedding;
100
113
  /**
101
- * Simple hash-based embedding (MOCK - REPLACE IN PRODUCTION)
102
- *
103
- * Production alternatives:
104
- * 1. OpenAI: https://platform.openai.com/docs/guides/embeddings
105
- * 2. Transformers.js: https://huggingface.co/docs/transformers.js
106
- * 3. SBERT: https://www.sbert.net/
114
+ * Deterministic hash-based embedding: the offline fallback. It carries no
115
+ * semantics (similar texts do not get similar vectors).
107
116
  */
108
117
  private simpleHashEmbedding;
109
118
  /**
@@ -118,6 +127,7 @@ export declare function createFastAgentDB(config?: {
118
127
  path?: string;
119
128
  vectorDimensions?: number;
120
129
  enableHNSW?: boolean;
130
+ embeddings?: FastEmbeddingMode;
121
131
  }): AgentDBFast;
122
132
  /**
123
133
  * Performance comparison helper
@@ -1 +1 @@
1
- {"version":3,"file":"agentdb-fast.d.ts","sourceRoot":"","sources":["../../src/core/agentdb-fast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentdb-fast.d.ts","sourceRoot":"","sources":["../../src/core/agentdb-fast.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { AgentDB } from 'agentdb';
8
8
  import { EventEmitter } from 'events';
9
+ import { getOnnxWasmEmbedder, ONNX_WASM_DIMENSION } from '../integrations/onnx-wasm-embedder.js';
9
10
  /**
10
11
  * Fast AgentDB client that avoids CLI overhead
11
12
  *
@@ -20,6 +21,8 @@ export class AgentDBFast extends EventEmitter {
20
21
  config;
21
22
  initialized = false;
22
23
  embeddingCache = new Map();
24
+ embeddingSource = null;
25
+ semanticEmbedder = null;
23
26
  constructor(config = {}) {
24
27
  super();
25
28
  this.config = {
@@ -27,7 +30,8 @@ export class AgentDBFast extends EventEmitter {
27
30
  vectorDimensions: config.vectorDimensions || 384,
28
31
  enableHNSW: config.enableHNSW !== false,
29
32
  hnswM: config.hnswM || 16,
30
- hnswEfConstruction: config.hnswEfConstruction || 200
33
+ hnswEfConstruction: config.hnswEfConstruction || 200,
34
+ embeddings: config.embeddings ?? (process.env.AGENTIC_FLOW_EMBEDDINGS === 'hash' ? 'hash' : 'auto'),
31
35
  };
32
36
  }
33
37
  /**
@@ -204,21 +208,46 @@ export class AgentDBFast extends EventEmitter {
204
208
  }
205
209
  this.initialized = false;
206
210
  }
211
+ /** Which embedder produced vectors so far: 'onnx-wasm', 'hash', or null before the first. */
212
+ getEmbeddingSource() {
213
+ return this.embeddingSource;
214
+ }
215
+ getSemanticEmbedder() {
216
+ if (!this.semanticEmbedder) {
217
+ this.semanticEmbedder =
218
+ this.config.embeddings !== 'hash' && this.config.vectorDimensions === ONNX_WASM_DIMENSION
219
+ ? getOnnxWasmEmbedder()
220
+ : Promise.resolve(null);
221
+ }
222
+ return this.semanticEmbedder;
223
+ }
207
224
  /**
208
- * Generate embedding for text (with caching)
225
+ * Generate embedding for text (with caching).
209
226
  *
210
- * Note: This is a simple mock. In production, replace with:
211
- * - OpenAI embeddings API
212
- * - Local transformer model
213
- * - SentenceTransformers
227
+ * Real all-MiniLM-L6-v2 vectors when ruvector-onnx-embeddings-wasm is
228
+ * available (see FastEmbeddingMode), deterministic hash vectors otherwise.
229
+ * The source is fixed by the first embedding so one store never mixes both.
214
230
  */
215
231
  async getEmbedding(text) {
216
232
  // Check cache
217
233
  if (this.embeddingCache.has(text)) {
218
234
  return this.embeddingCache.get(text);
219
235
  }
220
- // Simple hash-based embedding (REPLACE IN PRODUCTION)
221
- const embedding = this.simpleHashEmbedding(text);
236
+ let embedding = null;
237
+ if (this.embeddingSource !== 'hash') {
238
+ const semantic = await this.getSemanticEmbedder();
239
+ if (semantic) {
240
+ embedding = Array.from(await semantic.embed(text));
241
+ this.embeddingSource = 'onnx-wasm';
242
+ }
243
+ else if (this.config.embeddings === 'onnx-wasm') {
244
+ this.emit('warning', new Error('onnx-wasm embeddings requested but unavailable; using hash embeddings'));
245
+ }
246
+ }
247
+ if (!embedding) {
248
+ embedding = this.simpleHashEmbedding(text);
249
+ this.embeddingSource = 'hash';
250
+ }
222
251
  // Cache it
223
252
  this.embeddingCache.set(text, embedding);
224
253
  if (this.embeddingCache.size > 1000) {
@@ -231,12 +260,8 @@ export class AgentDBFast extends EventEmitter {
231
260
  return embedding;
232
261
  }
233
262
  /**
234
- * Simple hash-based embedding (MOCK - REPLACE IN PRODUCTION)
235
- *
236
- * Production alternatives:
237
- * 1. OpenAI: https://platform.openai.com/docs/guides/embeddings
238
- * 2. Transformers.js: https://huggingface.co/docs/transformers.js
239
- * 3. SBERT: https://www.sbert.net/
263
+ * Deterministic hash-based embedding: the offline fallback. It carries no
264
+ * semantics (similar texts do not get similar vectors).
240
265
  */
241
266
  simpleHashEmbedding(text) {
242
267
  const embedding = new Array(this.config.vectorDimensions);
@@ -1 +1 @@
1
- {"version":3,"file":"agentdb-fast.js","sourceRoot":"","sources":["../../src/core/agentdb-fast.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AgentDB Fast API\n *\n * Provides programmatic access to AgentDB without CLI overhead\n * Eliminates 2.3s overhead from process spawning and transformers.js init\n */\n\nimport { AgentDB } from 'agentdb';\nimport { EventEmitter } from 'events';\n\nexport interface Episode {\n id?: string;\n sessionId: string;\n task: string;\n trajectory: string[];\n reward: number;\n quality?: number;\n embedding?: number[];\n context?: Record<string, any>;\n timestamp?: number;\n}\n\nexport interface EpisodeSearchOptions {\n task?: string;\n minReward?: number;\n maxReward?: number;\n sessionId?: string;\n k?: number;\n filter?: Record<string, any>;\n}\n\nexport interface Pattern {\n id?: string;\n task: string;\n input: string;\n output: string;\n quality: number;\n embedding?: number[];\n context?: Record<string, any>;\n timestamp?: number;\n}\n\n/**\n * Fast AgentDB client that avoids CLI overhead\n *\n * Performance:\n * - CLI: ~2,350ms per operation\n * - Direct API: ~10-50ms per operation\n * - Speedup: ~50-200x faster\n */\nexport class AgentDBFast extends EventEmitter {\n private db: AgentDB | null = null;\n private backend: any = null;\n private config: {\n path: string;\n vectorDimensions: number;\n enableHNSW: boolean;\n hnswM?: number;\n hnswEfConstruction?: number;\n };\n private initialized: boolean = false;\n private embeddingCache: Map<string, number[]> = new Map();\n\n constructor(config: {\n path?: string;\n vectorDimensions?: number;\n enableHNSW?: boolean;\n hnswM?: number;\n hnswEfConstruction?: number;\n } = {}) {\n super();\n\n this.config = {\n path: config.path || '.agentdb-fast',\n vectorDimensions: config.vectorDimensions || 384,\n enableHNSW: config.enableHNSW !== false,\n hnswM: config.hnswM || 16,\n hnswEfConstruction: config.hnswEfConstruction || 200\n };\n }\n\n /**\n * Initialize database connection (lazy)\n */\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n try {\n // Create AgentDB instance - use any for flexible config\n this.db = new AgentDB({\n dimensions: this.config.vectorDimensions,\n storagePath: this.config.path\n } as any);\n\n await this.db.initialize();\n\n // Access the vector backend as a direct property\n if (this.db.vectorBackend) {\n this.backend = this.db.vectorBackend;\n } else {\n throw new Error('Vector backend not available');\n }\n\n this.initialized = true;\n this.emit('initialized');\n } catch (error: any) {\n throw new Error(`Failed to initialize AgentDB: ${error.message}`);\n }\n }\n\n /**\n * Store an episode (fast, no CLI overhead)\n */\n async storeEpisode(episode: Episode): Promise<string> {\n await this.initialize();\n\n // Generate embedding if not provided\n if (!episode.embedding) {\n episode.embedding = await this.getEmbedding(episode.task);\n }\n\n const episodeId = episode.id || this.generateId('episode');\n\n // Use backend insert method\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n await this.backend.insert(\n episodeId,\n new Float32Array(episode.embedding),\n {\n type: 'episode',\n sessionId: episode.sessionId,\n task: episode.task,\n trajectory: JSON.stringify(episode.trajectory),\n reward: episode.reward,\n quality: episode.quality,\n context: episode.context,\n timestamp: episode.timestamp || Date.now()\n }\n );\n\n this.emit('episode:stored', episodeId);\n return episodeId;\n }\n\n /**\n * Retrieve episodes by task similarity (fast)\n */\n async retrieveEpisodes(options: EpisodeSearchOptions): Promise<Episode[]> {\n await this.initialize();\n\n const dimensions = this.config.vectorDimensions ?? 384;\n const queryEmbedding = options.task\n ? await this.getEmbedding(options.task)\n : Array(dimensions).fill(0);\n\n const k = options.k || 5;\n\n // Build filter\n const filter: Record<string, any> = { type: 'episode' };\n if (options.sessionId) filter.sessionId = options.sessionId;\n if (options.minReward !== undefined) filter.reward = { $gte: options.minReward };\n if (options.maxReward !== undefined) {\n filter.reward = { ...(filter.reward || {}), $lte: options.maxReward };\n }\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const results = await this.backend.search(\n new Float32Array(queryEmbedding),\n k,\n { filter: Object.keys(filter).length > 1 ? filter : undefined }\n );\n\n return results.map((result: any) => ({\n id: result.id,\n sessionId: result.metadata.sessionId,\n task: result.metadata.task,\n trajectory: JSON.parse(result.metadata.trajectory || '[]'),\n reward: result.metadata.reward,\n quality: result.metadata.quality,\n embedding: result.vector,\n context: result.metadata.context,\n timestamp: result.metadata.timestamp\n }));\n }\n\n /**\n * Store a pattern (for ReasoningBank)\n */\n async storePattern(pattern: Pattern): Promise<string> {\n await this.initialize();\n\n if (!pattern.embedding) {\n pattern.embedding = await this.getEmbedding(`${pattern.input} ${pattern.output}`);\n }\n\n const patternId = pattern.id || this.generateId('pattern');\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n await this.backend.insert(\n patternId,\n new Float32Array(pattern.embedding),\n {\n type: 'pattern',\n task: pattern.task,\n input: pattern.input,\n output: pattern.output,\n quality: pattern.quality,\n context: pattern.context,\n timestamp: pattern.timestamp || Date.now()\n }\n );\n\n this.emit('pattern:stored', patternId);\n return patternId;\n }\n\n /**\n * Search for similar patterns\n */\n async searchPatterns(\n query: string,\n k: number = 5,\n minQuality?: number\n ): Promise<Pattern[]> {\n await this.initialize();\n\n const queryEmbedding = await this.getEmbedding(query);\n\n const filter: Record<string, any> = { type: 'pattern' };\n if (minQuality !== undefined) {\n filter.quality = { $gte: minQuality };\n }\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const results = await this.backend.search(\n new Float32Array(queryEmbedding),\n k,\n { filter: Object.keys(filter).length > 1 ? filter : undefined }\n );\n\n return results.map((result: any) => ({\n id: result.id,\n task: result.metadata.task,\n input: result.metadata.input,\n output: result.metadata.output,\n quality: result.metadata.quality,\n embedding: result.vector,\n context: result.metadata.context,\n timestamp: result.metadata.timestamp\n }));\n }\n\n /**\n * Get database statistics\n */\n async getStats(): Promise<{\n totalVectors: number;\n totalEpisodes: number;\n totalPatterns: number;\n avgQuality: number;\n }> {\n await this.initialize();\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const stats = await this.backend.stats();\n\n // Count by type - get all results\n const allResults = await this.backend.search(\n new Float32Array(this.config.vectorDimensions).fill(0),\n 10000, // Get all\n {}\n );\n\n const episodes = allResults.filter((r: any) => r.metadata?.type === 'episode');\n const patterns = allResults.filter((r: any) => r.metadata?.type === 'pattern');\n\n const avgQuality =\n patterns.reduce((sum: number, p: any) => sum + (p.metadata?.quality || 0), 0) /\n (patterns.length || 1);\n\n return {\n totalVectors: stats.totalVectors || allResults.length || 0,\n totalEpisodes: episodes.length,\n totalPatterns: patterns.length,\n avgQuality\n };\n }\n\n /**\n * Close database connection\n */\n async close(): Promise<void> {\n this.removeAllListeners();\n this.embeddingCache.clear();\n\n if (this.db) {\n await this.db.close();\n this.db = null;\n this.backend = null;\n }\n\n this.initialized = false;\n }\n\n /**\n * Generate embedding for text (with caching)\n *\n * Note: This is a simple mock. In production, replace with:\n * - OpenAI embeddings API\n * - Local transformer model\n * - SentenceTransformers\n */\n private async getEmbedding(text: string): Promise<number[]> {\n // Check cache\n if (this.embeddingCache.has(text)) {\n return this.embeddingCache.get(text)!;\n }\n\n // Simple hash-based embedding (REPLACE IN PRODUCTION)\n const embedding = this.simpleHashEmbedding(text);\n\n // Cache it\n this.embeddingCache.set(text, embedding);\n if (this.embeddingCache.size > 1000) {\n // LRU-style cleanup\n const firstKey = this.embeddingCache.keys().next().value as string | undefined;\n if (firstKey) {\n this.embeddingCache.delete(firstKey);\n }\n }\n\n return embedding;\n }\n\n /**\n * Simple hash-based embedding (MOCK - REPLACE IN PRODUCTION)\n *\n * Production alternatives:\n * 1. OpenAI: https://platform.openai.com/docs/guides/embeddings\n * 2. Transformers.js: https://huggingface.co/docs/transformers.js\n * 3. SBERT: https://www.sbert.net/\n */\n private simpleHashEmbedding(text: string): number[] {\n const embedding = new Array(this.config.vectorDimensions);\n\n // Seed with text hash\n let hash = 0;\n for (let i = 0; i < text.length; i++) {\n hash = (hash << 5) - hash + text.charCodeAt(i);\n hash = hash & hash;\n }\n\n // Generate pseudo-random embedding\n for (let i = 0; i < this.config.vectorDimensions; i++) {\n const seed = hash + i * 2654435761;\n const x = Math.sin(seed) * 10000;\n embedding[i] = x - Math.floor(x);\n }\n\n // Normalize\n const norm = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));\n return embedding.map(v => v / norm);\n }\n\n /**\n * Generate unique ID\n */\n private generateId(prefix: string): string {\n return `${prefix}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n\n/**\n * Convenience function to create a fast AgentDB client\n */\nexport function createFastAgentDB(config?: {\n path?: string;\n vectorDimensions?: number;\n enableHNSW?: boolean;\n}): AgentDBFast {\n return new AgentDBFast(config);\n}\n\n/**\n * Performance comparison helper\n */\nexport async function benchmarkAgentDB(): Promise<{\n cli: { store: number; retrieve: number };\n api: { store: number; retrieve: number };\n speedup: { store: number; retrieve: number };\n}> {\n const client = createFastAgentDB({ path: '.agentdb-benchmark' });\n\n // API benchmark\n const apiStoreStart = Date.now();\n const episodeId = await client.storeEpisode({\n sessionId: 'test-session',\n task: 'test-task',\n trajectory: ['step1', 'step2'],\n reward: 0.8\n });\n const apiStoreTime = Date.now() - apiStoreStart;\n\n const apiRetrieveStart = Date.now();\n await client.retrieveEpisodes({ task: 'test-task', k: 5 });\n const apiRetrieveTime = Date.now() - apiRetrieveStart;\n\n await client.close();\n\n // CLI times from benchmarks\n const cliStoreTime = 2350;\n const cliRetrieveTime = 2400;\n\n return {\n cli: {\n store: cliStoreTime,\n retrieve: cliRetrieveTime\n },\n api: {\n store: apiStoreTime,\n retrieve: apiRetrieveTime\n },\n speedup: {\n store: cliStoreTime / apiStoreTime,\n retrieve: cliRetrieveTime / apiRetrieveTime\n }\n };\n}\n"]}
1
+ {"version":3,"file":"agentdb-fast.js","sourceRoot":"","sources":["../../src/core/agentdb-fast.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AgentDB Fast API\n *\n * Provides programmatic access to AgentDB without CLI overhead\n * Eliminates 2.3s overhead from process spawning and transformers.js init\n */\n\nimport { AgentDB } from 'agentdb';\nimport { EventEmitter } from 'events';\nimport { getOnnxWasmEmbedder, ONNX_WASM_DIMENSION } from '../integrations/onnx-wasm-embedder.js';\n\n/**\n * How AgentDBFast embeds text:\n * - 'auto' (default): all-MiniLM-L6-v2 via ruvector-onnx-embeddings-wasm when the\n * package and model are available and vectorDimensions is 384, else hash\n * - 'onnx-wasm': same, but emit a 'warning' event when it is unavailable\n * - 'hash': deterministic hash vectors (no semantics; fast, offline)\n */\nexport type FastEmbeddingMode = 'auto' | 'onnx-wasm' | 'hash';\n\nexport interface Episode {\n id?: string;\n sessionId: string;\n task: string;\n trajectory: string[];\n reward: number;\n quality?: number;\n embedding?: number[];\n context?: Record<string, any>;\n timestamp?: number;\n}\n\nexport interface EpisodeSearchOptions {\n task?: string;\n minReward?: number;\n maxReward?: number;\n sessionId?: string;\n k?: number;\n filter?: Record<string, any>;\n}\n\nexport interface Pattern {\n id?: string;\n task: string;\n input: string;\n output: string;\n quality: number;\n embedding?: number[];\n context?: Record<string, any>;\n timestamp?: number;\n}\n\n/**\n * Fast AgentDB client that avoids CLI overhead\n *\n * Performance:\n * - CLI: ~2,350ms per operation\n * - Direct API: ~10-50ms per operation\n * - Speedup: ~50-200x faster\n */\nexport class AgentDBFast extends EventEmitter {\n private db: AgentDB | null = null;\n private backend: any = null;\n private config: {\n path: string;\n vectorDimensions: number;\n enableHNSW: boolean;\n hnswM?: number;\n hnswEfConstruction?: number;\n embeddings: FastEmbeddingMode;\n };\n private initialized: boolean = false;\n private embeddingCache: Map<string, number[]> = new Map();\n private embeddingSource: 'onnx-wasm' | 'hash' | null = null;\n private semanticEmbedder: Promise<{ embed(text: string): Promise<Float32Array> } | null> | null = null;\n\n constructor(config: {\n path?: string;\n vectorDimensions?: number;\n enableHNSW?: boolean;\n hnswM?: number;\n hnswEfConstruction?: number;\n embeddings?: FastEmbeddingMode;\n } = {}) {\n super();\n\n this.config = {\n path: config.path || '.agentdb-fast',\n vectorDimensions: config.vectorDimensions || 384,\n enableHNSW: config.enableHNSW !== false,\n hnswM: config.hnswM || 16,\n hnswEfConstruction: config.hnswEfConstruction || 200,\n embeddings: config.embeddings ?? (process.env.AGENTIC_FLOW_EMBEDDINGS === 'hash' ? 'hash' : 'auto'),\n };\n }\n\n /**\n * Initialize database connection (lazy)\n */\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n try {\n // Create AgentDB instance - use any for flexible config\n this.db = new AgentDB({\n dimensions: this.config.vectorDimensions,\n storagePath: this.config.path\n } as any);\n\n await this.db.initialize();\n\n // Access the vector backend as a direct property\n if (this.db.vectorBackend) {\n this.backend = this.db.vectorBackend;\n } else {\n throw new Error('Vector backend not available');\n }\n\n this.initialized = true;\n this.emit('initialized');\n } catch (error: any) {\n throw new Error(`Failed to initialize AgentDB: ${error.message}`);\n }\n }\n\n /**\n * Store an episode (fast, no CLI overhead)\n */\n async storeEpisode(episode: Episode): Promise<string> {\n await this.initialize();\n\n // Generate embedding if not provided\n if (!episode.embedding) {\n episode.embedding = await this.getEmbedding(episode.task);\n }\n\n const episodeId = episode.id || this.generateId('episode');\n\n // Use backend insert method\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n await this.backend.insert(\n episodeId,\n new Float32Array(episode.embedding),\n {\n type: 'episode',\n sessionId: episode.sessionId,\n task: episode.task,\n trajectory: JSON.stringify(episode.trajectory),\n reward: episode.reward,\n quality: episode.quality,\n context: episode.context,\n timestamp: episode.timestamp || Date.now()\n }\n );\n\n this.emit('episode:stored', episodeId);\n return episodeId;\n }\n\n /**\n * Retrieve episodes by task similarity (fast)\n */\n async retrieveEpisodes(options: EpisodeSearchOptions): Promise<Episode[]> {\n await this.initialize();\n\n const dimensions = this.config.vectorDimensions ?? 384;\n const queryEmbedding = options.task\n ? await this.getEmbedding(options.task)\n : Array(dimensions).fill(0);\n\n const k = options.k || 5;\n\n // Build filter\n const filter: Record<string, any> = { type: 'episode' };\n if (options.sessionId) filter.sessionId = options.sessionId;\n if (options.minReward !== undefined) filter.reward = { $gte: options.minReward };\n if (options.maxReward !== undefined) {\n filter.reward = { ...(filter.reward || {}), $lte: options.maxReward };\n }\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const results = await this.backend.search(\n new Float32Array(queryEmbedding),\n k,\n { filter: Object.keys(filter).length > 1 ? filter : undefined }\n );\n\n return results.map((result: any) => ({\n id: result.id,\n sessionId: result.metadata.sessionId,\n task: result.metadata.task,\n trajectory: JSON.parse(result.metadata.trajectory || '[]'),\n reward: result.metadata.reward,\n quality: result.metadata.quality,\n embedding: result.vector,\n context: result.metadata.context,\n timestamp: result.metadata.timestamp\n }));\n }\n\n /**\n * Store a pattern (for ReasoningBank)\n */\n async storePattern(pattern: Pattern): Promise<string> {\n await this.initialize();\n\n if (!pattern.embedding) {\n pattern.embedding = await this.getEmbedding(`${pattern.input} ${pattern.output}`);\n }\n\n const patternId = pattern.id || this.generateId('pattern');\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n await this.backend.insert(\n patternId,\n new Float32Array(pattern.embedding),\n {\n type: 'pattern',\n task: pattern.task,\n input: pattern.input,\n output: pattern.output,\n quality: pattern.quality,\n context: pattern.context,\n timestamp: pattern.timestamp || Date.now()\n }\n );\n\n this.emit('pattern:stored', patternId);\n return patternId;\n }\n\n /**\n * Search for similar patterns\n */\n async searchPatterns(\n query: string,\n k: number = 5,\n minQuality?: number\n ): Promise<Pattern[]> {\n await this.initialize();\n\n const queryEmbedding = await this.getEmbedding(query);\n\n const filter: Record<string, any> = { type: 'pattern' };\n if (minQuality !== undefined) {\n filter.quality = { $gte: minQuality };\n }\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const results = await this.backend.search(\n new Float32Array(queryEmbedding),\n k,\n { filter: Object.keys(filter).length > 1 ? filter : undefined }\n );\n\n return results.map((result: any) => ({\n id: result.id,\n task: result.metadata.task,\n input: result.metadata.input,\n output: result.metadata.output,\n quality: result.metadata.quality,\n embedding: result.vector,\n context: result.metadata.context,\n timestamp: result.metadata.timestamp\n }));\n }\n\n /**\n * Get database statistics\n */\n async getStats(): Promise<{\n totalVectors: number;\n totalEpisodes: number;\n totalPatterns: number;\n avgQuality: number;\n }> {\n await this.initialize();\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const stats = await this.backend.stats();\n\n // Count by type - get all results\n const allResults = await this.backend.search(\n new Float32Array(this.config.vectorDimensions).fill(0),\n 10000, // Get all\n {}\n );\n\n const episodes = allResults.filter((r: any) => r.metadata?.type === 'episode');\n const patterns = allResults.filter((r: any) => r.metadata?.type === 'pattern');\n\n const avgQuality =\n patterns.reduce((sum: number, p: any) => sum + (p.metadata?.quality || 0), 0) /\n (patterns.length || 1);\n\n return {\n totalVectors: stats.totalVectors || allResults.length || 0,\n totalEpisodes: episodes.length,\n totalPatterns: patterns.length,\n avgQuality\n };\n }\n\n /**\n * Close database connection\n */\n async close(): Promise<void> {\n this.removeAllListeners();\n this.embeddingCache.clear();\n\n if (this.db) {\n await this.db.close();\n this.db = null;\n this.backend = null;\n }\n\n this.initialized = false;\n }\n\n /** Which embedder produced vectors so far: 'onnx-wasm', 'hash', or null before the first. */\n getEmbeddingSource(): 'onnx-wasm' | 'hash' | null {\n return this.embeddingSource;\n }\n\n private getSemanticEmbedder() {\n if (!this.semanticEmbedder) {\n this.semanticEmbedder =\n this.config.embeddings !== 'hash' && this.config.vectorDimensions === ONNX_WASM_DIMENSION\n ? getOnnxWasmEmbedder()\n : Promise.resolve(null);\n }\n return this.semanticEmbedder;\n }\n\n /**\n * Generate embedding for text (with caching).\n *\n * Real all-MiniLM-L6-v2 vectors when ruvector-onnx-embeddings-wasm is\n * available (see FastEmbeddingMode), deterministic hash vectors otherwise.\n * The source is fixed by the first embedding so one store never mixes both.\n */\n private async getEmbedding(text: string): Promise<number[]> {\n // Check cache\n if (this.embeddingCache.has(text)) {\n return this.embeddingCache.get(text)!;\n }\n\n let embedding: number[] | null = null;\n if (this.embeddingSource !== 'hash') {\n const semantic = await this.getSemanticEmbedder();\n if (semantic) {\n embedding = Array.from(await semantic.embed(text));\n this.embeddingSource = 'onnx-wasm';\n } else if (this.config.embeddings === 'onnx-wasm') {\n this.emit('warning', new Error('onnx-wasm embeddings requested but unavailable; using hash embeddings'));\n }\n }\n if (!embedding) {\n embedding = this.simpleHashEmbedding(text);\n this.embeddingSource = 'hash';\n }\n\n // Cache it\n this.embeddingCache.set(text, embedding);\n if (this.embeddingCache.size > 1000) {\n // LRU-style cleanup\n const firstKey = this.embeddingCache.keys().next().value as string | undefined;\n if (firstKey) {\n this.embeddingCache.delete(firstKey);\n }\n }\n\n return embedding;\n }\n\n /**\n * Deterministic hash-based embedding: the offline fallback. It carries no\n * semantics (similar texts do not get similar vectors).\n */\n private simpleHashEmbedding(text: string): number[] {\n const embedding = new Array(this.config.vectorDimensions);\n\n // Seed with text hash\n let hash = 0;\n for (let i = 0; i < text.length; i++) {\n hash = (hash << 5) - hash + text.charCodeAt(i);\n hash = hash & hash;\n }\n\n // Generate pseudo-random embedding\n for (let i = 0; i < this.config.vectorDimensions; i++) {\n const seed = hash + i * 2654435761;\n const x = Math.sin(seed) * 10000;\n embedding[i] = x - Math.floor(x);\n }\n\n // Normalize\n const norm = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));\n return embedding.map(v => v / norm);\n }\n\n /**\n * Generate unique ID\n */\n private generateId(prefix: string): string {\n return `${prefix}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n\n/**\n * Convenience function to create a fast AgentDB client\n */\nexport function createFastAgentDB(config?: {\n path?: string;\n vectorDimensions?: number;\n enableHNSW?: boolean;\n embeddings?: FastEmbeddingMode;\n}): AgentDBFast {\n return new AgentDBFast(config);\n}\n\n/**\n * Performance comparison helper\n */\nexport async function benchmarkAgentDB(): Promise<{\n cli: { store: number; retrieve: number };\n api: { store: number; retrieve: number };\n speedup: { store: number; retrieve: number };\n}> {\n const client = createFastAgentDB({ path: '.agentdb-benchmark' });\n\n // API benchmark\n const apiStoreStart = Date.now();\n const episodeId = await client.storeEpisode({\n sessionId: 'test-session',\n task: 'test-task',\n trajectory: ['step1', 'step2'],\n reward: 0.8\n });\n const apiStoreTime = Date.now() - apiStoreStart;\n\n const apiRetrieveStart = Date.now();\n await client.retrieveEpisodes({ task: 'test-task', k: 5 });\n const apiRetrieveTime = Date.now() - apiRetrieveStart;\n\n await client.close();\n\n // CLI times from benchmarks\n const cliStoreTime = 2350;\n const cliRetrieveTime = 2400;\n\n return {\n cli: {\n store: cliStoreTime,\n retrieve: cliRetrieveTime\n },\n api: {\n store: apiStoreTime,\n retrieve: apiRetrieveTime\n },\n speedup: {\n store: cliStoreTime / apiStoreTime,\n retrieve: cliRetrieveTime / apiRetrieveTime\n }\n };\n}\n"]}