Skip to content

fix(memory): wire LearningBridge into intelligence module (WM-013)#1263

Open
invidias-codem wants to merge 1 commit intoruvnet:mainfrom
invidias-codem:fix/wm-013-wire-learning-bridge
Open

fix(memory): wire LearningBridge into intelligence module (WM-013)#1263
invidias-codem wants to merge 1 commit intoruvnet:mainfrom
invidias-codem:fix/wm-013-wire-learning-bridge

Conversation

@invidias-codem
Copy link

Summary

Fixes #1213

LearningBridge was exported from @claude-flow/memory but never instantiated at runtime inside intelligence.ts (compiled: dist/src/memory/memory-initializer.js). Config keys learningBridge.sonaMode, confidenceDecayRate, accessBoostAmount, and consolidationThreshold were read by WM-007b but never wired to an actual LearningBridge instance, leaving confidence decay, trajectory tracking, and pattern consolidation as dead code.

Changes

Following the WM-011 (ReasoningBank) initialization pattern:

Op Target Change
WM-013a intelligence.ts Add let _learningBridge: any | null = null; module-level variable after reasoningBank
WM-013b intelligence.ts Instantiate LearningBridge after ReasoningBank init block, reading config from finalConfig.learningBridge.*
WM-013c intelligence.ts Export getLearningBridge() getter function

Additional:

  • Add optional learningBridge? field to SonaConfig interface
  • Add learningBridgeEnabled: boolean to IntelligenceStats
  • Update initializeIntelligence() return type to surface learningBridgeEnabled
  • Call _learningBridge.destroy() inside clearIntelligence() to flush active trajectories before teardown

Implementation Notes

@claude-flow/memory is not a direct dependency of @claude-flow/cli, so LearningBridge is loaded via dynamic import (same optional-peer pattern that LearningBridge itself uses internally for @claude-flow/neural). The backend is resolved through ControllerRegistry via memory-bridge.js. When either is unavailable, _learningBridge stays null and all paths degrade gracefully — no change in behavior for environments without @claude-flow/memory installed.

Testing

Existing learning-bridge.test.ts covers the LearningBridge class API. The wiring in intelligence.ts degrades silently when the package is absent, so no new required tests — but a follow-up integration test (checking getLearningBridge() !== null after initializeIntelligence({ learningBridge: { enabled: true } }) in a full install) would be a useful addition.

Related

Closes ruvnet#1213

LearningBridge was exported from @claude-flow/memory but never
instantiated at runtime. Config keys learningBridge.sonaMode,
confidenceDecayRate, accessBoostAmount, and consolidationThreshold
were read by WM-007b into intelligence.ts but never passed to an
actual LearningBridge instance.

Changes (WM-013a/b/c):
- WM-013a: Add `_learningBridge` module-level singleton after `reasoningBank`
- WM-013b: Instantiate LearningBridge in initializeIntelligence() after
  ReasoningBank init, reading config from `cfgMemory.learningBridge.*`.
  Uses dynamic import of @claude-flow/memory (optional peer) and resolves
  backend from ControllerRegistry via memory-bridge — degrades to null
  when either is unavailable, matching the graceful-degrade pattern
  used by LearningBridge for @claude-flow/neural.
- WM-013c: Export getLearningBridge() getter function

Additional:
- Add optional `learningBridge` field to SonaConfig interface
- Add `learningBridgeEnabled` to IntelligenceStats
- Update initializeIntelligence() return type to include learningBridgeEnabled
- Call _learningBridge.destroy() in clearIntelligence() to flush active
  trajectories before teardown

Related: ruvnet#1210 (WM-011 ReasoningBank pattern), ruvnet#1204 (WM-007 config reads)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: LearningBridge from @claude-flow/memory has zero runtime callers

1 participant