agentic-flow 3.1.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 (72) 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/CHANGELOG.md +25 -0
  11. package/README.md +82 -67
  12. package/dist/.tsbuildinfo +1 -1
  13. package/dist/cli/commands/init.d.ts.map +1 -1
  14. package/dist/cli/commands/init.js +9 -0
  15. package/dist/cli/commands/init.js.map +1 -1
  16. package/dist/core/agentdb-fast.d.ts +21 -11
  17. package/dist/core/agentdb-fast.d.ts.map +1 -1
  18. package/dist/core/agentdb-fast.js +39 -14
  19. package/dist/core/agentdb-fast.js.map +1 -1
  20. package/dist/integrations/agent-booster.d.ts +35 -0
  21. package/dist/integrations/agent-booster.d.ts.map +1 -0
  22. package/dist/integrations/agent-booster.js +45 -0
  23. package/dist/integrations/agent-booster.js.map +1 -0
  24. package/dist/integrations/index.d.ts +15 -0
  25. package/dist/integrations/index.d.ts.map +1 -0
  26. package/dist/integrations/index.js +11 -0
  27. package/dist/integrations/index.js.map +1 -0
  28. package/dist/integrations/onnx-wasm-embedder.d.ts +59 -0
  29. package/dist/integrations/onnx-wasm-embedder.d.ts.map +1 -0
  30. package/dist/integrations/onnx-wasm-embedder.js +145 -0
  31. package/dist/integrations/onnx-wasm-embedder.js.map +1 -0
  32. package/dist/integrations/optional.d.ts +44 -0
  33. package/dist/integrations/optional.d.ts.map +1 -0
  34. package/dist/integrations/optional.js +107 -0
  35. package/dist/integrations/optional.js.map +1 -0
  36. package/dist/integrations/prompt-injection.d.ts +52 -0
  37. package/dist/integrations/prompt-injection.d.ts.map +1 -0
  38. package/dist/integrations/prompt-injection.js +126 -0
  39. package/dist/integrations/prompt-injection.js.map +1 -0
  40. package/dist/integrations/sublinear.d.ts +71 -0
  41. package/dist/integrations/sublinear.d.ts.map +1 -0
  42. package/dist/integrations/sublinear.js +227 -0
  43. package/dist/integrations/sublinear.js.map +1 -0
  44. package/dist/integrations/task-partition.d.ts +40 -0
  45. package/dist/integrations/task-partition.d.ts.map +1 -0
  46. package/dist/integrations/task-partition.js +173 -0
  47. package/dist/integrations/task-partition.js.map +1 -0
  48. package/dist/mcp/mcp-policy.d.ts.map +1 -1
  49. package/dist/mcp/mcp-policy.js +2 -0
  50. package/dist/mcp/mcp-policy.js.map +1 -1
  51. package/dist/mcp/standalone-stdio.js +12 -26
  52. package/dist/mcp/standalone-stdio.js.map +1 -1
  53. package/dist/mcp/tools/ecosystem-tools.d.ts +49 -0
  54. package/dist/mcp/tools/ecosystem-tools.d.ts.map +1 -0
  55. package/dist/mcp/tools/ecosystem-tools.js +126 -0
  56. package/dist/mcp/tools/ecosystem-tools.js.map +1 -0
  57. package/dist/routing/SemanticRouter.d.ts +25 -9
  58. package/dist/routing/SemanticRouter.d.ts.map +1 -1
  59. package/dist/routing/SemanticRouter.js +63 -12
  60. package/dist/routing/SemanticRouter.js.map +1 -1
  61. package/dist/utils/input-validator.d.ts +10 -2
  62. package/dist/utils/input-validator.d.ts.map +1 -1
  63. package/dist/utils/input-validator.js +30 -2
  64. package/dist/utils/input-validator.js.map +1 -1
  65. package/dist/utils/model-cache.d.ts.map +1 -1
  66. package/dist/utils/model-cache.js +6 -25
  67. package/dist/utils/model-cache.js.map +1 -1
  68. package/dist/wasm/onnx-embeddings-wasm.d.ts.map +1 -1
  69. package/dist/wasm/onnx-embeddings-wasm.js +21 -10
  70. package/dist/wasm/onnx-embeddings-wasm.js.map +1 -1
  71. package/docs/integrations/FASTMCP_CLI_INTEGRATION.md +1 -1
  72. package/package.json +12 -7
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAKH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAKpE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAqN9B;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwF3E;AAmED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuIrE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAKH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAKpE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAqN9B;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwF3E;AAmED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiJrE"}
@@ -419,6 +419,14 @@ export async function handleInitCommand(args) {
419
419
  totalFiles++;
420
420
  }
421
421
  }
422
+ // Codex reads skills from <project>/.agents/skills; ship the same
423
+ // guidance there for Codex users (the package keeps them in .agents/skills).
424
+ const codexSkillsSrc = path.join(path.dirname(packageClaudeDir), '.agents', 'skills');
425
+ if (fs.existsSync(codexSkillsSrc)) {
426
+ const count = copyDirRecursive(codexSkillsSrc, path.join(cwd, '.agents', 'skills'), options.verbose);
427
+ totalFiles += count;
428
+ console.log(`āœ… Copied .agents/skills/ for Codex (${count} files)`);
429
+ }
422
430
  console.log(`\nšŸ“Š Total: ${totalFiles} files copied`);
423
431
  }
424
432
  else {
@@ -466,6 +474,7 @@ export async function handleInitCommand(args) {
466
474
  ā”œā”€ā”€ skills/ # Custom skills and workflows
467
475
  └── helpers/ # Helper utilities
468
476
  CLAUDE.md # Project instructions
477
+ .agents/skills/ # Codex skills (same integrations guidance)
469
478
 
470
479
  šŸš€ Next steps:
471
480
  1. Start the MCP server:
@@ -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';\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 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"]}
@@ -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"]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Agent Booster edits: in-process library first, `npx` CLI as the fallback.
3
+ *
4
+ * `agent-booster` is an optionalDependency. When it is installed (the default)
5
+ * edits run in-process through its WASM engine. When it is not, we fall back
6
+ * to the pinned CLI via `npx --yes agent-booster@0.2.2 apply`, which is what
7
+ * the MCP server always did before (and which downloads on first use).
8
+ */
9
+ export declare const AGENT_BOOSTER_CLI = "agent-booster@0.2.2";
10
+ export interface BoosterEditResult {
11
+ output: string;
12
+ success: boolean;
13
+ latency: number;
14
+ confidence: number;
15
+ strategy: string;
16
+ /** How the edit was applied. */
17
+ via: 'library' | 'npx';
18
+ }
19
+ type BoosterInstance = {
20
+ apply(input: {
21
+ code: string;
22
+ edit: string;
23
+ language: string;
24
+ }): Promise<Omit<BoosterEditResult, 'via'>>;
25
+ };
26
+ /** The in-process Agent Booster, or null when the optional package is absent. */
27
+ export declare function getAgentBoosterLibrary(): Promise<BoosterInstance | null>;
28
+ /** Apply `edit` to `code`. Never shells out when the library is installed. */
29
+ export declare function applyAgentBoosterEdit(code: string, edit: string, language: string, options?: {
30
+ npxTimeoutMs?: number;
31
+ }): Promise<BoosterEditResult>;
32
+ /** Test hook. */
33
+ export declare function _resetAgentBoosterForTests(): void;
34
+ export {};
35
+ //# sourceMappingURL=agent-booster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-booster.d.ts","sourceRoot":"","sources":["../../src/integrations/agent-booster.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,GAAG,EAAE,SAAS,GAAG,KAAK,CAAC;CACxB;AAED,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;CACzG,CAAC;AAIF,iFAAiF;AACjF,wBAAgB,sBAAsB,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CASxE;AAED,8EAA8E;AAC9E,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACtC,OAAO,CAAC,iBAAiB,CAAC,CAc5B;AAED,iBAAiB;AACjB,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Agent Booster edits: in-process library first, `npx` CLI as the fallback.
3
+ *
4
+ * `agent-booster` is an optionalDependency. When it is installed (the default)
5
+ * edits run in-process through its WASM engine. When it is not, we fall back
6
+ * to the pinned CLI via `npx --yes agent-booster@0.2.2 apply`, which is what
7
+ * the MCP server always did before (and which downloads on first use).
8
+ */
9
+ import { execFileSync } from 'node:child_process';
10
+ import { importOptional } from './optional.js';
11
+ export const AGENT_BOOSTER_CLI = 'agent-booster@0.2.2';
12
+ let instance = null;
13
+ /** The in-process Agent Booster, or null when the optional package is absent. */
14
+ export function getAgentBoosterLibrary() {
15
+ if (!instance) {
16
+ instance = importOptional('agent-booster').then((mod) => {
17
+ const Ctor = mod?.AgentBooster ?? mod?.default?.AgentBooster ?? mod?.default;
18
+ if (typeof Ctor !== 'function')
19
+ return null;
20
+ return new Ctor({ confidenceThreshold: 0.5, maxChunks: 100 });
21
+ });
22
+ }
23
+ return instance;
24
+ }
25
+ /** Apply `edit` to `code`. Never shells out when the library is installed. */
26
+ export async function applyAgentBoosterEdit(code, edit, language, options = {}) {
27
+ const lib = await getAgentBoosterLibrary();
28
+ if (lib) {
29
+ const r = await lib.apply({ code, edit, language });
30
+ return { ...r, via: 'library' };
31
+ }
32
+ const stdout = execFileSync('npx', ['--yes', AGENT_BOOSTER_CLI, 'apply', '--language', language], {
33
+ shell: false,
34
+ encoding: 'utf-8',
35
+ input: JSON.stringify({ code, edit }),
36
+ maxBuffer: 10 * 1024 * 1024,
37
+ timeout: options.npxTimeoutMs ?? 30000,
38
+ });
39
+ return { ...JSON.parse(stdout), via: 'npx' };
40
+ }
41
+ /** Test hook. */
42
+ export function _resetAgentBoosterForTests() {
43
+ instance = null;
44
+ }
45
+ //# sourceMappingURL=agent-booster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-booster.js","sourceRoot":"","sources":["../../src/integrations/agent-booster.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAgBvD,IAAI,QAAQ,GAA2C,IAAI,CAAC;AAE5D,iFAAiF;AACjF,MAAM,UAAU,sBAAsB;IACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,cAAc,CAAM,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3D,MAAM,IAAI,GAAG,GAAG,EAAE,YAAY,IAAI,GAAG,EAAE,OAAO,EAAE,YAAY,IAAI,GAAG,EAAE,OAAO,CAAC;YAC7E,IAAI,OAAO,IAAI,KAAK,UAAU;gBAAE,OAAO,IAAI,CAAC;YAC5C,OAAO,IAAI,IAAI,CAAC,EAAE,mBAAmB,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAoB,CAAC;QACnF,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,IAAY,EACZ,QAAgB,EAChB,UAAqC,EAAE;IAEvC,MAAM,GAAG,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAC3C,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpD,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE;QAChG,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACrC,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;QAC3B,OAAO,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK;KACvC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,0BAA0B;IACxC,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC","sourcesContent":["/**\n * Agent Booster edits: in-process library first, `npx` CLI as the fallback.\n *\n * `agent-booster` is an optionalDependency. When it is installed (the default)\n * edits run in-process through its WASM engine. When it is not, we fall back\n * to the pinned CLI via `npx --yes agent-booster@0.2.2 apply`, which is what\n * the MCP server always did before (and which downloads on first use).\n */\n\nimport { execFileSync } from 'node:child_process';\nimport { importOptional } from './optional.js';\n\nexport const AGENT_BOOSTER_CLI = 'agent-booster@0.2.2';\n\nexport interface BoosterEditResult {\n output: string;\n success: boolean;\n latency: number;\n confidence: number;\n strategy: string;\n /** How the edit was applied. */\n via: 'library' | 'npx';\n}\n\ntype BoosterInstance = {\n apply(input: { code: string; edit: string; language: string }): Promise<Omit<BoosterEditResult, 'via'>>;\n};\n\nlet instance: Promise<BoosterInstance | null> | null = null;\n\n/** The in-process Agent Booster, or null when the optional package is absent. */\nexport function getAgentBoosterLibrary(): Promise<BoosterInstance | null> {\n if (!instance) {\n instance = importOptional<any>('agent-booster').then((mod) => {\n const Ctor = mod?.AgentBooster ?? mod?.default?.AgentBooster ?? mod?.default;\n if (typeof Ctor !== 'function') return null;\n return new Ctor({ confidenceThreshold: 0.5, maxChunks: 100 }) as BoosterInstance;\n });\n }\n return instance;\n}\n\n/** Apply `edit` to `code`. Never shells out when the library is installed. */\nexport async function applyAgentBoosterEdit(\n code: string,\n edit: string,\n language: string,\n options: { npxTimeoutMs?: number } = {},\n): Promise<BoosterEditResult> {\n const lib = await getAgentBoosterLibrary();\n if (lib) {\n const r = await lib.apply({ code, edit, language });\n return { ...r, via: 'library' };\n }\n const stdout = execFileSync('npx', ['--yes', AGENT_BOOSTER_CLI, 'apply', '--language', language], {\n shell: false,\n encoding: 'utf-8',\n input: JSON.stringify({ code, edit }),\n maxBuffer: 10 * 1024 * 1024,\n timeout: options.npxTimeoutMs ?? 30000,\n });\n return { ...JSON.parse(stdout), via: 'npx' };\n}\n\n/** Test hook. */\nexport function _resetAgentBoosterForTests(): void {\n instance = null;\n}\n"]}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * agentic-flow/integrations — programmatic access to the optional ruvnet
3
+ * package integrations (each with a built-in fallback).
4
+ */
5
+ export { scanPromptInjection, promptInjectionEngine, getInjectionPolicy } from './prompt-injection.js';
6
+ export type { InjectionScan, InjectionThreat, InjectionPolicy, InjectionSeverity } from './prompt-injection.js';
7
+ export { partitionTaskGraph } from './task-partition.js';
8
+ export type { TaskDependency, TaskPartition } from './task-partition.js';
9
+ export { solveLinearSystem, pageRank } from './sublinear.js';
10
+ export type { LinearSolveResult, PageRankResult, MatrixInput, SparseEntry } from './sublinear.js';
11
+ export { applyAgentBoosterEdit, getAgentBoosterLibrary } from './agent-booster.js';
12
+ export type { BoosterEditResult } from './agent-booster.js';
13
+ export { OnnxWasmTextEmbedder, getOnnxWasmEmbedder, loadOnnxWasmModule, onnxWasmModelCached } from './onnx-wasm-embedder.js';
14
+ export { isOptionalInstalled } from './optional.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACvG,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAChH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC7H,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * agentic-flow/integrations — programmatic access to the optional ruvnet
3
+ * package integrations (each with a built-in fallback).
4
+ */
5
+ export { scanPromptInjection, promptInjectionEngine, getInjectionPolicy } from './prompt-injection.js';
6
+ export { partitionTaskGraph } from './task-partition.js';
7
+ export { solveLinearSystem, pageRank } from './sublinear.js';
8
+ export { applyAgentBoosterEdit, getAgentBoosterLibrary } from './agent-booster.js';
9
+ export { OnnxWasmTextEmbedder, getOnnxWasmEmbedder, loadOnnxWasmModule, onnxWasmModelCached } from './onnx-wasm-embedder.js';
10
+ export { isOptionalInstalled } from './optional.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEvG,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEnF,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC7H,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC","sourcesContent":["/**\n * agentic-flow/integrations — programmatic access to the optional ruvnet\n * package integrations (each with a built-in fallback).\n */\n\nexport { scanPromptInjection, promptInjectionEngine, getInjectionPolicy } from './prompt-injection.js';\nexport type { InjectionScan, InjectionThreat, InjectionPolicy, InjectionSeverity } from './prompt-injection.js';\nexport { partitionTaskGraph } from './task-partition.js';\nexport type { TaskDependency, TaskPartition } from './task-partition.js';\nexport { solveLinearSystem, pageRank } from './sublinear.js';\nexport type { LinearSolveResult, PageRankResult, MatrixInput, SparseEntry } from './sublinear.js';\nexport { applyAgentBoosterEdit, getAgentBoosterLibrary } from './agent-booster.js';\nexport type { BoosterEditResult } from './agent-booster.js';\nexport { OnnxWasmTextEmbedder, getOnnxWasmEmbedder, loadOnnxWasmModule, onnxWasmModelCached } from './onnx-wasm-embedder.js';\nexport { isOptionalInstalled } from './optional.js';\n"]}