UNPKG

claude-flow

Version:

Ruflo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration

87 lines 3.6 kB
/** * Bridge to @claude-flow/neural — Phase 1 convergence (#1773). * * The cli has historically reimplemented SONA / ReasoningBank / PatternLearner * locally in `intelligence.ts`. The dedicated `@claude-flow/neural` package * (3.0.0-alpha.7+) ships the canonical implementations plus 7 RL algorithms * (PPO/DQN/A2C/Decision Transformer/Q-Learning/SARSA/Curiosity), 5 SONA * modes (RealTime/Balanced/Research/Edge/Batch), and an event listener * system that the cli's local impl doesn't have. * * This bridge lazy-loads `NeuralLearningSystem` from the package and exposes * a stable accessor for cli code that wants to use the richer surface. The * existing local LocalSonaCoordinator + LocalReasoningBank in intelligence.ts * stay intact for now — Phase 1 just proves the wiring works without * breaking the 769 cli tests. Phase 2+ migrates functions one at a time. * * Why lazy: instantiating NeuralLearningSystem pulls in @ruvector/sona and * a few transitive WASM modules — not free at process startup. The bridge * defers until something actually asks for it. */ let pkgInstance = null; let pkgInitPromise = null; let pkgInitFailed = false; /** * Lazy-load + initialize the @claude-flow/neural NeuralLearningSystem. Returns * null if the package isn't resolvable (defensive — the package is in cli's * regular dependencies, but environments with --ignore-scripts or pnpm prune * can leave it unavailable). Idempotent across calls. */ export async function getNeuralPackage(mode = 'balanced') { if (pkgInstance) return pkgInstance; if (pkgInitFailed) return null; if (pkgInitPromise) return pkgInitPromise; pkgInitPromise = (async () => { try { const m = await import('@claude-flow/neural'); const sys = m.createNeuralLearningSystem(mode); await sys.initialize(); pkgInstance = sys; return sys; } catch (err) { // CLAUDE_FLOW_DEBUG-gated log so future regressions of this shape // don't disappear silently — same convention as the ruvllm coordinator // bridge (#1770). if (process.env.CLAUDE_FLOW_DEBUG) { // eslint-disable-next-line no-console console.error('[neural-package] @claude-flow/neural load failed:', err.message); } pkgInitFailed = true; return null; } })(); return pkgInitPromise; } /** * Quick "is the package available?" probe without forcing initialization. * Returns true if a previous getNeuralPackage() call succeeded; null if * never tried or failed. Useful for dashboards that want to surface package * status without triggering load. */ export function isNeuralPackageLoaded() { return pkgInstance !== null; } /** * Get aggregated stats from the neural package alongside cli's local stats. * Returns null if the package isn't loaded — caller should fall back to * local-only stats. The return shape mirrors the package's NeuralLearningSystem * .getStats() output: { sona, reasoningBank, patternLearner }. */ export async function getNeuralPackageStats() { const sys = await getNeuralPackage(); return sys ? sys.getStats() : null; } /** * Reset the bridge (mainly for tests). Drops the cached instance and * forgets any prior init failure so the next getNeuralPackage() retries. */ export function resetNeuralPackageBridge() { pkgInstance = null; pkgInitPromise = null; pkgInitFailed = false; } //# sourceMappingURL=neural-package-bridge.js.map