agentic-flow 2.0.2 → 2.0.4

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 (324) hide show
  1. package/.claude/agents/test-neural.md +14 -0
  2. package/.claude/settings.json +9 -133
  3. package/README.md +622 -1862
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/billing/mcp/tools.js +0 -1
  6. package/dist/billing/mcp/tools.js.map +1 -1
  7. package/dist/cli/commands/hooks.d.ts.map +1 -1
  8. package/dist/cli/commands/hooks.js +4 -79
  9. package/dist/cli/commands/hooks.js.map +1 -1
  10. package/dist/cli-proxy.js +1 -89
  11. package/dist/cli-proxy.js.map +1 -1
  12. package/dist/core/agentdb-fast.js +3 -3
  13. package/dist/core/agentdb-fast.js.map +1 -1
  14. package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
  15. package/dist/core/agentdb-wrapper-enhanced.js +4 -20
  16. package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
  17. package/dist/core/agentdb-wrapper.d.ts +2 -3
  18. package/dist/core/agentdb-wrapper.d.ts.map +1 -1
  19. package/dist/core/agentdb-wrapper.js +1 -15
  20. package/dist/core/agentdb-wrapper.js.map +1 -1
  21. package/dist/core/attention-native.d.ts +0 -4
  22. package/dist/core/attention-native.d.ts.map +1 -1
  23. package/dist/core/attention-native.js +2 -14
  24. package/dist/core/attention-native.js.map +1 -1
  25. package/dist/federation/SecurityManager.d.ts +2 -11
  26. package/dist/federation/SecurityManager.d.ts.map +1 -1
  27. package/dist/federation/SecurityManager.js +17 -50
  28. package/dist/federation/SecurityManager.js.map +1 -1
  29. package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
  30. package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
  31. package/dist/hooks/swarm-learning-optimizer.js +5 -5
  32. package/dist/hooks/swarm-learning-optimizer.js.map +1 -1
  33. package/dist/intelligence/IntelligenceStore.d.ts +26 -35
  34. package/dist/intelligence/IntelligenceStore.d.ts.map +1 -1
  35. package/dist/intelligence/IntelligenceStore.js +123 -308
  36. package/dist/intelligence/IntelligenceStore.js.map +1 -1
  37. package/dist/intelligence/RuVectorIntelligence.d.ts +1 -26
  38. package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -1
  39. package/dist/intelligence/RuVectorIntelligence.js +10 -49
  40. package/dist/intelligence/RuVectorIntelligence.js.map +1 -1
  41. package/dist/intelligence/agent-booster-enhanced.d.ts +0 -1
  42. package/dist/intelligence/agent-booster-enhanced.d.ts.map +1 -1
  43. package/dist/intelligence/agent-booster-enhanced.js +3 -24
  44. package/dist/intelligence/agent-booster-enhanced.js.map +1 -1
  45. package/dist/intelligence/index.d.ts +3 -29
  46. package/dist/intelligence/index.d.ts.map +1 -1
  47. package/dist/intelligence/index.js +3 -13
  48. package/dist/intelligence/index.js.map +1 -1
  49. package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
  50. package/dist/mcp/claudeFlowSdkServer.js +3 -9
  51. package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
  52. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +5 -5
  53. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -1
  54. package/dist/mcp/fastmcp/tools/swarm/init.d.ts.map +1 -1
  55. package/dist/mcp/fastmcp/tools/swarm/init.js +7 -36
  56. package/dist/mcp/fastmcp/tools/swarm/init.js.map +1 -1
  57. package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts.map +1 -1
  58. package/dist/mcp/fastmcp/tools/swarm/spawn.js +8 -47
  59. package/dist/mcp/fastmcp/tools/swarm/spawn.js.map +1 -1
  60. package/dist/mcp/tools/agent-booster-tools.d.ts +1 -1
  61. package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
  62. package/dist/mcp/tools/agent-booster-tools.js +4 -10
  63. package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
  64. package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
  65. package/dist/mcp/tools/sona-tools.js +0 -6
  66. package/dist/mcp/tools/sona-tools.js.map +1 -1
  67. package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
  68. package/dist/optimizations/agent-booster-migration.js +2 -5
  69. package/dist/optimizations/agent-booster-migration.js.map +1 -1
  70. package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
  71. package/dist/proxy/anthropic-to-requesty.js.map +1 -1
  72. package/dist/proxy/quic-proxy.d.ts +1 -0
  73. package/dist/proxy/quic-proxy.d.ts.map +1 -1
  74. package/dist/proxy/quic-proxy.js +2 -2
  75. package/dist/proxy/quic-proxy.js.map +1 -1
  76. package/dist/reasoningbank/AdvancedMemory.js +1 -1
  77. package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
  78. package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
  79. package/dist/reasoningbank/HybridBackend.js +5 -2
  80. package/dist/reasoningbank/HybridBackend.js.map +1 -1
  81. package/dist/reasoningbank/backend-selector.d.ts +1 -11
  82. package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
  83. package/dist/reasoningbank/backend-selector.js +5 -45
  84. package/dist/reasoningbank/backend-selector.js.map +1 -1
  85. package/dist/reasoningbank/core/consolidate.d.ts.map +1 -1
  86. package/dist/reasoningbank/core/consolidate.js +45 -113
  87. package/dist/reasoningbank/core/consolidate.js.map +1 -1
  88. package/dist/reasoningbank/index-new.d.ts +6 -1
  89. package/dist/reasoningbank/index-new.d.ts.map +1 -1
  90. package/dist/reasoningbank/index-new.js +6 -1
  91. package/dist/reasoningbank/index-new.js.map +1 -1
  92. package/dist/reasoningbank/index.d.ts +6 -2
  93. package/dist/reasoningbank/index.d.ts.map +1 -1
  94. package/dist/reasoningbank/index.js +6 -2
  95. package/dist/reasoningbank/index.js.map +1 -1
  96. package/dist/reasoningbank/utils/embeddings.d.ts +0 -1
  97. package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -1
  98. package/dist/reasoningbank/utils/embeddings.js +26 -53
  99. package/dist/reasoningbank/utils/embeddings.js.map +1 -1
  100. package/dist/router/index.d.ts +17 -0
  101. package/dist/router/index.d.ts.map +1 -0
  102. package/dist/router/index.js +19 -0
  103. package/dist/router/index.js.map +1 -0
  104. package/dist/router/providers/onnx-local-optimized.d.ts +0 -2
  105. package/dist/router/providers/onnx-local-optimized.d.ts.map +1 -1
  106. package/dist/router/providers/onnx-local-optimized.js +0 -10
  107. package/dist/router/providers/onnx-local-optimized.js.map +1 -1
  108. package/dist/router/providers/onnx-local.d.ts +0 -1
  109. package/dist/router/providers/onnx-local.d.ts.map +1 -1
  110. package/dist/router/providers/onnx-local.js +5 -22
  111. package/dist/router/providers/onnx-local.js.map +1 -1
  112. package/dist/services/embedding-service.js.map +1 -1
  113. package/dist/services/sona-agent-training.d.ts +0 -1
  114. package/dist/services/sona-agent-training.d.ts.map +1 -1
  115. package/dist/services/sona-agent-training.js.map +1 -1
  116. package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
  117. package/dist/services/sona-agentdb-integration.js +6 -9
  118. package/dist/services/sona-agentdb-integration.js.map +1 -1
  119. package/dist/services/sona-service.d.ts.map +1 -1
  120. package/dist/services/sona-service.js +5 -6
  121. package/dist/services/sona-service.js.map +1 -1
  122. package/dist/utils/cli.d.ts +1 -1
  123. package/dist/utils/cli.d.ts.map +1 -1
  124. package/dist/utils/cli.js +0 -21
  125. package/dist/utils/cli.js.map +1 -1
  126. package/package.json +7 -19
  127. package/scripts/postinstall.js +4 -45
  128. package/wasm/reasoningbank/reasoningbank_wasm_bg.js +2 -2
  129. package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm +0 -0
  130. package/.claude/agents/.claude-flow/metrics/agent-metrics.json +0 -1
  131. package/.claude/agents/.claude-flow/metrics/performance.json +0 -87
  132. package/.claude/agents/.claude-flow/metrics/task-metrics.json +0 -10
  133. package/.claude/skills/.claude-flow/metrics/agent-metrics.json +0 -1
  134. package/.claude/skills/.claude-flow/metrics/performance.json +0 -87
  135. package/.claude/skills/.claude-flow/metrics/task-metrics.json +0 -10
  136. package/.claude/skills/agentic-flow-quickstart/skill.md +0 -69
  137. package/.claude/skills/hooks-automation/skill.md +0 -155
  138. package/.claude/skills/memory-patterns/skill.md +0 -110
  139. package/.claude/skills/skill-builder/.claude-flow/metrics/agent-metrics.json +0 -1
  140. package/.claude/skills/skill-builder/.claude-flow/metrics/performance.json +0 -87
  141. package/.claude/skills/skill-builder/.claude-flow/metrics/task-metrics.json +0 -10
  142. package/.claude/skills/sparc-methodology/skill.md +0 -137
  143. package/.claude/skills/swarm-coordination/skill.md +0 -94
  144. package/.claude/skills/worker-benchmarks/skill.md +0 -135
  145. package/.claude/skills/worker-integration/skill.md +0 -154
  146. package/.claude/statusline.mjs +0 -109
  147. package/.claude/statusline.sh +0 -71
  148. package/dist/agentdb/benchmarks/comprehensive-benchmark.js +0 -664
  149. package/dist/agentdb/benchmarks/frontier-benchmark.js +0 -419
  150. package/dist/agentdb/benchmarks/reflexion-benchmark.js +0 -370
  151. package/dist/agentdb/cli/agentdb-cli.js +0 -717
  152. package/dist/agentdb/controllers/CausalMemoryGraph.js +0 -322
  153. package/dist/agentdb/controllers/CausalRecall.js +0 -281
  154. package/dist/agentdb/controllers/EmbeddingService.d.ts +0 -37
  155. package/dist/agentdb/controllers/EmbeddingService.d.ts.map +0 -1
  156. package/dist/agentdb/controllers/EmbeddingService.js +0 -119
  157. package/dist/agentdb/controllers/EmbeddingService.js.map +0 -1
  158. package/dist/agentdb/controllers/ExplainableRecall.js +0 -387
  159. package/dist/agentdb/controllers/NightlyLearner.js +0 -382
  160. package/dist/agentdb/controllers/ReflexionMemory.js +0 -239
  161. package/dist/agentdb/controllers/SkillLibrary.js +0 -276
  162. package/dist/agentdb/controllers/frontier-index.js +0 -9
  163. package/dist/agentdb/controllers/index.js +0 -8
  164. package/dist/agentdb/optimizations/BatchOperations.js +0 -198
  165. package/dist/agentdb/optimizations/QueryOptimizer.js +0 -225
  166. package/dist/agentdb/optimizations/index.js +0 -7
  167. package/dist/agentdb/tests/frontier-features.test.js +0 -665
  168. package/dist/benchmarks/embeddings-benchmark.d.ts +0 -38
  169. package/dist/benchmarks/embeddings-benchmark.d.ts.map +0 -1
  170. package/dist/benchmarks/embeddings-benchmark.js +0 -282
  171. package/dist/benchmarks/embeddings-benchmark.js.map +0 -1
  172. package/dist/cli/commands/embeddings.d.ts +0 -12
  173. package/dist/cli/commands/embeddings.d.ts.map +0 -1
  174. package/dist/cli/commands/embeddings.js +0 -386
  175. package/dist/cli/commands/embeddings.js.map +0 -1
  176. package/dist/cli/commands/init.d.ts +0 -8
  177. package/dist/cli/commands/init.d.ts.map +0 -1
  178. package/dist/cli/commands/init.js +0 -514
  179. package/dist/cli/commands/init.js.map +0 -1
  180. package/dist/cli/commands/workers.d.ts +0 -9
  181. package/dist/cli/commands/workers.d.ts.map +0 -1
  182. package/dist/cli/commands/workers.js +0 -991
  183. package/dist/cli/commands/workers.js.map +0 -1
  184. package/dist/cli/skills-manager.js +0 -1297
  185. package/dist/cli/update-message.js +0 -175
  186. package/dist/embeddings/index.d.ts +0 -17
  187. package/dist/embeddings/index.d.ts.map +0 -1
  188. package/dist/embeddings/index.js +0 -17
  189. package/dist/embeddings/index.js.map +0 -1
  190. package/dist/embeddings/neural-substrate.d.ts +0 -206
  191. package/dist/embeddings/neural-substrate.d.ts.map +0 -1
  192. package/dist/embeddings/neural-substrate.js +0 -629
  193. package/dist/embeddings/neural-substrate.js.map +0 -1
  194. package/dist/embeddings/optimized-embedder.d.ts +0 -103
  195. package/dist/embeddings/optimized-embedder.d.ts.map +0 -1
  196. package/dist/embeddings/optimized-embedder.js +0 -730
  197. package/dist/embeddings/optimized-embedder.js.map +0 -1
  198. package/dist/examples/embedding-geometry.d.ts +0 -105
  199. package/dist/examples/embedding-geometry.d.ts.map +0 -1
  200. package/dist/examples/embedding-geometry.js +0 -528
  201. package/dist/examples/embedding-geometry.js.map +0 -1
  202. package/dist/memory/SharedMemoryPool.d.ts +0 -129
  203. package/dist/memory/SharedMemoryPool.d.ts.map +0 -1
  204. package/dist/memory/SharedMemoryPool.js +0 -243
  205. package/dist/memory/SharedMemoryPool.js.map +0 -1
  206. package/dist/memory/index.d.ts +0 -8
  207. package/dist/memory/index.d.ts.map +0 -1
  208. package/dist/memory/index.js +0 -7
  209. package/dist/memory/index.js.map +0 -1
  210. package/dist/proxy/http3-proxy-old.js +0 -331
  211. package/dist/proxy/proxy/anthropic-to-gemini.js +0 -439
  212. package/dist/proxy/utils/logger.js +0 -59
  213. package/dist/reasoningbank/agentdb-adapter.js +0 -125
  214. package/dist/reasoningbank/core/database.js +0 -250
  215. package/dist/reasoningbank/core/memory-engine.js +0 -335
  216. package/dist/swarm/ipfs-swarm.d.ts +0 -265
  217. package/dist/swarm/ipfs-swarm.d.ts.map +0 -1
  218. package/dist/swarm/ipfs-swarm.js +0 -508
  219. package/dist/swarm/ipfs-swarm.js.map +0 -1
  220. package/dist/swarm/p2p-free-swarm.d.ts +0 -344
  221. package/dist/swarm/p2p-free-swarm.d.ts.map +0 -1
  222. package/dist/swarm/p2p-free-swarm.js +0 -603
  223. package/dist/swarm/p2p-free-swarm.js.map +0 -1
  224. package/dist/swarm/real-p2p-swarm.d.ts +0 -183
  225. package/dist/swarm/real-p2p-swarm.d.ts.map +0 -1
  226. package/dist/swarm/real-p2p-swarm.js +0 -469
  227. package/dist/swarm/real-p2p-swarm.js.map +0 -1
  228. package/dist/utils/adaptive-pool-sizing.js +0 -414
  229. package/dist/utils/agentdbCommands.js +0 -175
  230. package/dist/utils/circular-rate-limiter.js +0 -391
  231. package/dist/utils/dynamic-compression.js +0 -298
  232. package/dist/utils/http2-multiplexing.js +0 -319
  233. package/dist/utils/index.d.ts +0 -6
  234. package/dist/utils/index.d.ts.map +0 -1
  235. package/dist/utils/index.js +0 -6
  236. package/dist/utils/index.js.map +0 -1
  237. package/dist/utils/lazy-auth.js +0 -311
  238. package/dist/utils/model-cache.d.ts +0 -61
  239. package/dist/utils/model-cache.d.ts.map +0 -1
  240. package/dist/utils/model-cache.js +0 -176
  241. package/dist/utils/model-cache.js.map +0 -1
  242. package/dist/utils/server-push.js +0 -251
  243. package/dist/utils/suppress-warnings.d.ts +0 -19
  244. package/dist/utils/suppress-warnings.d.ts.map +0 -1
  245. package/dist/utils/suppress-warnings.js +0 -59
  246. package/dist/utils/suppress-warnings.js.map +0 -1
  247. package/dist/utils/zero-copy-buffer.js +0 -286
  248. package/dist/workers/consolidated-phases.d.ts +0 -40
  249. package/dist/workers/consolidated-phases.d.ts.map +0 -1
  250. package/dist/workers/consolidated-phases.js +0 -497
  251. package/dist/workers/consolidated-phases.js.map +0 -1
  252. package/dist/workers/custom-worker-config.d.ts +0 -133
  253. package/dist/workers/custom-worker-config.d.ts.map +0 -1
  254. package/dist/workers/custom-worker-config.js +0 -215
  255. package/dist/workers/custom-worker-config.js.map +0 -1
  256. package/dist/workers/custom-worker-factory.d.ts +0 -89
  257. package/dist/workers/custom-worker-factory.d.ts.map +0 -1
  258. package/dist/workers/custom-worker-factory.js +0 -404
  259. package/dist/workers/custom-worker-factory.js.map +0 -1
  260. package/dist/workers/dispatch-service.d.ts +0 -123
  261. package/dist/workers/dispatch-service.d.ts.map +0 -1
  262. package/dist/workers/dispatch-service.js +0 -1024
  263. package/dist/workers/dispatch-service.js.map +0 -1
  264. package/dist/workers/hooks-integration.d.ts +0 -79
  265. package/dist/workers/hooks-integration.d.ts.map +0 -1
  266. package/dist/workers/hooks-integration.js +0 -286
  267. package/dist/workers/hooks-integration.js.map +0 -1
  268. package/dist/workers/index.d.ts +0 -42
  269. package/dist/workers/index.d.ts.map +0 -1
  270. package/dist/workers/index.js +0 -52
  271. package/dist/workers/index.js.map +0 -1
  272. package/dist/workers/mcp-tools.d.ts +0 -56
  273. package/dist/workers/mcp-tools.d.ts.map +0 -1
  274. package/dist/workers/mcp-tools.js +0 -359
  275. package/dist/workers/mcp-tools.js.map +0 -1
  276. package/dist/workers/phase-executors.d.ts +0 -22
  277. package/dist/workers/phase-executors.d.ts.map +0 -1
  278. package/dist/workers/phase-executors.js +0 -445
  279. package/dist/workers/phase-executors.js.map +0 -1
  280. package/dist/workers/resource-governor.d.ts +0 -75
  281. package/dist/workers/resource-governor.d.ts.map +0 -1
  282. package/dist/workers/resource-governor.js +0 -187
  283. package/dist/workers/resource-governor.js.map +0 -1
  284. package/dist/workers/ruvector-integration.d.ts +0 -163
  285. package/dist/workers/ruvector-integration.d.ts.map +0 -1
  286. package/dist/workers/ruvector-integration.js +0 -543
  287. package/dist/workers/ruvector-integration.js.map +0 -1
  288. package/dist/workers/ruvector-native-integration.d.ts +0 -91
  289. package/dist/workers/ruvector-native-integration.d.ts.map +0 -1
  290. package/dist/workers/ruvector-native-integration.js +0 -254
  291. package/dist/workers/ruvector-native-integration.js.map +0 -1
  292. package/dist/workers/trigger-detector.d.ts +0 -68
  293. package/dist/workers/trigger-detector.d.ts.map +0 -1
  294. package/dist/workers/trigger-detector.js +0 -281
  295. package/dist/workers/trigger-detector.js.map +0 -1
  296. package/dist/workers/types.d.ts +0 -145
  297. package/dist/workers/types.d.ts.map +0 -1
  298. package/dist/workers/types.js +0 -6
  299. package/dist/workers/types.js.map +0 -1
  300. package/dist/workers/worker-agent-integration.d.ts +0 -140
  301. package/dist/workers/worker-agent-integration.d.ts.map +0 -1
  302. package/dist/workers/worker-agent-integration.js +0 -471
  303. package/dist/workers/worker-agent-integration.js.map +0 -1
  304. package/dist/workers/worker-benchmarks.d.ts +0 -88
  305. package/dist/workers/worker-benchmarks.d.ts.map +0 -1
  306. package/dist/workers/worker-benchmarks.js +0 -452
  307. package/dist/workers/worker-benchmarks.js.map +0 -1
  308. package/dist/workers/worker-registry.d.ts +0 -85
  309. package/dist/workers/worker-registry.d.ts.map +0 -1
  310. package/dist/workers/worker-registry.js +0 -547
  311. package/dist/workers/worker-registry.js.map +0 -1
  312. package/docs/.claude-flow/metrics/agent-metrics.json +0 -1
  313. package/docs/.claude-flow/metrics/performance.json +0 -87
  314. package/docs/.claude-flow/metrics/task-metrics.json +0 -10
  315. package/docs/embeddings/EMBEDDING_GEOMETRY.md +0 -935
  316. /package/.claude/agents/analysis/{analyze-code-quality.md → code-review/analyze-code-quality.md} +0 -0
  317. /package/.claude/agents/architecture/{arch-system-design.md → system-design/arch-system-design.md} +0 -0
  318. /package/.claude/agents/data/{data-ml-model.md → ml/data-ml-model.md} +0 -0
  319. /package/.claude/agents/development/{dev-backend-api.md → backend/dev-backend-api.md} +0 -0
  320. /package/.claude/agents/devops/{ops-cicd-github.md → ci-cd/ops-cicd-github.md} +0 -0
  321. /package/.claude/agents/documentation/{docs-api-openapi.md → api-docs/docs-api-openapi.md} +0 -0
  322. /package/.claude/agents/specialized/{spec-mobile-react-native.md → mobile/spec-mobile-react-native.md} +0 -0
  323. /package/.claude/agents/testing/{tdd-london-swarm.md → unit/tdd-london-swarm.md} +0 -0
  324. /package/.claude/agents/testing/{production-validator.md → validation/production-validator.md} +0 -0
@@ -1,250 +0,0 @@
1
- /**
2
- * SQLite Database Layer for ReasoningBank
3
- * Handles memory storage, retrieval, and consolidation
4
- */
5
- import Database from 'better-sqlite3';
6
- import { ulid } from 'ulid';
7
- export class ReasoningBankDB {
8
- db;
9
- constructor(dbPath) {
10
- this.db = new Database(dbPath);
11
- this.db.pragma('journal_mode = WAL'); // Enable Write-Ahead Logging for concurrency
12
- this.initSchema();
13
- }
14
- initSchema() {
15
- // Main memory table
16
- this.db.exec(`
17
- CREATE TABLE IF NOT EXISTS reasoning_memory (
18
- id TEXT PRIMARY KEY,
19
- title TEXT NOT NULL,
20
- description TEXT NOT NULL,
21
- content TEXT NOT NULL,
22
- confidence REAL DEFAULT 0.5,
23
- usage_count INTEGER DEFAULT 0,
24
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
25
- pattern_data JSON NOT NULL
26
- );
27
-
28
- CREATE INDEX IF NOT EXISTS idx_memory_confidence ON reasoning_memory(confidence);
29
- CREATE INDEX IF NOT EXISTS idx_memory_created_at ON reasoning_memory(created_at);
30
- CREATE INDEX IF NOT EXISTS idx_memory_domain ON reasoning_memory(json_extract(pattern_data, '$.domain'));
31
- `);
32
- // Pattern embeddings table
33
- this.db.exec(`
34
- CREATE TABLE IF NOT EXISTS pattern_embeddings (
35
- pattern_id TEXT PRIMARY KEY,
36
- embedding BLOB NOT NULL,
37
- FOREIGN KEY (pattern_id) REFERENCES reasoning_memory(id) ON DELETE CASCADE
38
- );
39
-
40
- CREATE INDEX IF NOT EXISTS idx_embeddings_pattern ON pattern_embeddings(pattern_id);
41
- `);
42
- // Task trajectory table
43
- this.db.exec(`
44
- CREATE TABLE IF NOT EXISTS task_trajectory (
45
- id TEXT PRIMARY KEY,
46
- task_id TEXT NOT NULL,
47
- trajectory TEXT NOT NULL,
48
- verdict TEXT NOT NULL CHECK(verdict IN ('Success', 'Failure')),
49
- confidence REAL NOT NULL,
50
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
51
- );
52
-
53
- CREATE INDEX IF NOT EXISTS idx_trajectory_task ON task_trajectory(task_id);
54
- CREATE INDEX IF NOT EXISTS idx_trajectory_verdict ON task_trajectory(verdict);
55
- `);
56
- // MaTTS runs table
57
- this.db.exec(`
58
- CREATE TABLE IF NOT EXISTS matts_runs (
59
- id TEXT PRIMARY KEY,
60
- task_id TEXT NOT NULL,
61
- run_index INTEGER NOT NULL,
62
- result TEXT NOT NULL,
63
- verdict TEXT NOT NULL CHECK(verdict IN ('Success', 'Failure')),
64
- confidence REAL NOT NULL,
65
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
66
- );
67
-
68
- CREATE INDEX IF NOT EXISTS idx_matts_task ON matts_runs(task_id);
69
- `);
70
- }
71
- // Memory operations
72
- insertMemory(memory) {
73
- const id = ulid();
74
- const stmt = this.db.prepare(`
75
- INSERT INTO reasoning_memory (id, title, description, content, confidence, usage_count, pattern_data)
76
- VALUES (?, ?, ?, ?, ?, ?, json(?))
77
- `);
78
- stmt.run(id, memory.title, memory.description, memory.content, memory.confidence, memory.usage_count, JSON.stringify(memory.pattern_data));
79
- return id;
80
- }
81
- getMemory(id) {
82
- const stmt = this.db.prepare(`
83
- SELECT id, title, description, content, confidence, usage_count,
84
- datetime(created_at) as created_at, pattern_data
85
- FROM reasoning_memory
86
- WHERE id = ?
87
- `);
88
- const row = stmt.get(id);
89
- if (!row)
90
- return null;
91
- return {
92
- ...row,
93
- pattern_data: JSON.parse(row.pattern_data)
94
- };
95
- }
96
- getAllMemories() {
97
- const stmt = this.db.prepare(`
98
- SELECT id, title, description, content, confidence, usage_count,
99
- datetime(created_at) as created_at, pattern_data
100
- FROM reasoning_memory
101
- ORDER BY created_at DESC
102
- `);
103
- const rows = stmt.all();
104
- return rows.map(row => ({
105
- ...row,
106
- pattern_data: JSON.parse(row.pattern_data)
107
- }));
108
- }
109
- updateMemoryUsage(id) {
110
- const stmt = this.db.prepare(`
111
- UPDATE reasoning_memory
112
- SET usage_count = usage_count + 1
113
- WHERE id = ?
114
- `);
115
- stmt.run(id);
116
- }
117
- updateMemoryConfidence(id, confidence) {
118
- const stmt = this.db.prepare(`
119
- UPDATE reasoning_memory
120
- SET confidence = ?
121
- WHERE id = ?
122
- `);
123
- stmt.run(confidence, id);
124
- }
125
- deleteMemory(id) {
126
- const stmt = this.db.prepare('DELETE FROM reasoning_memory WHERE id = ?');
127
- stmt.run(id);
128
- }
129
- // Embedding operations
130
- insertEmbedding(patternId, embedding) {
131
- const buffer = Buffer.from(new Float64Array(embedding).buffer);
132
- const stmt = this.db.prepare(`
133
- INSERT OR REPLACE INTO pattern_embeddings (pattern_id, embedding)
134
- VALUES (?, ?)
135
- `);
136
- stmt.run(patternId, buffer);
137
- }
138
- getEmbedding(patternId) {
139
- const stmt = this.db.prepare('SELECT embedding FROM pattern_embeddings WHERE pattern_id = ?');
140
- const row = stmt.get(patternId);
141
- if (!row)
142
- return null;
143
- const buffer = row.embedding;
144
- return Array.from(new Float64Array(buffer.buffer, buffer.byteOffset, buffer.byteLength / 8));
145
- }
146
- getAllEmbeddings() {
147
- const stmt = this.db.prepare('SELECT pattern_id, embedding FROM pattern_embeddings');
148
- const rows = stmt.all();
149
- const embeddings = new Map();
150
- for (const row of rows) {
151
- const buffer = row.embedding;
152
- const embedding = Array.from(new Float64Array(buffer.buffer, buffer.byteOffset, buffer.byteLength / 8));
153
- embeddings.set(row.pattern_id, embedding);
154
- }
155
- return embeddings;
156
- }
157
- // Trajectory operations
158
- insertTrajectory(trajectory) {
159
- const id = ulid();
160
- const stmt = this.db.prepare(`
161
- INSERT INTO task_trajectory (id, task_id, trajectory, verdict, confidence)
162
- VALUES (?, ?, ?, ?, ?)
163
- `);
164
- stmt.run(id, trajectory.task_id, trajectory.trajectory, trajectory.verdict, trajectory.confidence);
165
- return id;
166
- }
167
- getTrajectories(taskId) {
168
- const stmt = this.db.prepare(`
169
- SELECT id, task_id, trajectory, verdict, confidence, datetime(created_at) as created_at
170
- FROM task_trajectory
171
- WHERE task_id = ?
172
- ORDER BY created_at DESC
173
- `);
174
- return stmt.all(taskId);
175
- }
176
- // MaTTS operations
177
- insertMattsRun(run) {
178
- const id = ulid();
179
- const stmt = this.db.prepare(`
180
- INSERT INTO matts_runs (id, task_id, run_index, result, verdict, confidence)
181
- VALUES (?, ?, ?, ?, ?, ?)
182
- `);
183
- stmt.run(id, run.task_id, run.run_index, run.result, run.verdict, run.confidence);
184
- return id;
185
- }
186
- getMattsRuns(taskId) {
187
- const stmt = this.db.prepare(`
188
- SELECT id, task_id, run_index, result, verdict, confidence, datetime(created_at) as created_at
189
- FROM matts_runs
190
- WHERE task_id = ?
191
- ORDER BY run_index ASC
192
- `);
193
- return stmt.all(taskId);
194
- }
195
- // Statistics
196
- getStats() {
197
- const memoryStats = this.db.prepare(`
198
- SELECT COUNT(*) as total, AVG(confidence) as avg_conf, SUM(usage_count) as total_usage
199
- FROM reasoning_memory
200
- `).get();
201
- const trajectoryStats = this.db.prepare(`
202
- SELECT
203
- SUM(CASE WHEN verdict = 'Success' THEN 1 ELSE 0 END) as successes,
204
- COUNT(*) as total
205
- FROM task_trajectory
206
- `).get();
207
- return {
208
- totalMemories: memoryStats.total || 0,
209
- avgConfidence: memoryStats.avg_conf || 0,
210
- totalUsage: memoryStats.total_usage || 0,
211
- successRate: trajectoryStats.total > 0
212
- ? trajectoryStats.successes / trajectoryStats.total
213
- : 0
214
- };
215
- }
216
- // Consolidation helpers
217
- findDuplicates(threshold = 0.95) {
218
- // Returns pairs of memory IDs that are likely duplicates
219
- const memories = this.getAllMemories();
220
- const embeddings = this.getAllEmbeddings();
221
- const duplicates = [];
222
- for (let i = 0; i < memories.length; i++) {
223
- for (let j = i + 1; j < memories.length; j++) {
224
- const emb1 = embeddings.get(memories[i].id);
225
- const emb2 = embeddings.get(memories[j].id);
226
- if (emb1 && emb2) {
227
- const similarity = this.cosineSimilarity(emb1, emb2);
228
- if (similarity >= threshold) {
229
- duplicates.push([memories[i].id, memories[j].id]);
230
- }
231
- }
232
- }
233
- }
234
- return duplicates;
235
- }
236
- cosineSimilarity(a, b) {
237
- let dotProduct = 0;
238
- let normA = 0;
239
- let normB = 0;
240
- for (let i = 0; i < a.length; i++) {
241
- dotProduct += a[i] * b[i];
242
- normA += a[i] * a[i];
243
- normB += b[i] * b[i];
244
- }
245
- return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
246
- }
247
- close() {
248
- this.db.close();
249
- }
250
- }
@@ -1,335 +0,0 @@
1
- /**
2
- * ReasoningBank Memory Engine
3
- * Implements the 4-phase learning loop: RETRIEVE → JUDGE → DISTILL → CONSOLIDATE
4
- */
5
- import { ReasoningBankDB } from './database.js';
6
- import { createEmbeddingProvider, cosineSimilarity } from '../utils/embeddings.js';
7
- import { piiScrubber } from '../utils/pii-scrubber.js';
8
- export class ReasoningBankEngine {
9
- db;
10
- embeddings;
11
- piiEnabled;
12
- weights;
13
- defaultK;
14
- minConfidence;
15
- consolidationThreshold;
16
- memoriesSinceConsolidation = 0;
17
- constructor(config) {
18
- this.db = new ReasoningBankDB(config.dbPath);
19
- this.embeddings = createEmbeddingProvider(config.embeddings?.provider || 'hash', {
20
- apiKey: process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY,
21
- model: config.embeddings?.model
22
- });
23
- this.piiEnabled = config.piiScrub?.enabled !== false;
24
- this.weights = {
25
- alpha: config.retrieval?.weights?.alpha || 0.65, // Similarity
26
- beta: config.retrieval?.weights?.beta || 0.15, // Recency
27
- gamma: config.retrieval?.weights?.gamma || 0.20, // Reliability
28
- delta: config.retrieval?.weights?.delta || 0.10 // Diversity penalty
29
- };
30
- this.defaultK = config.retrieval?.k || 3;
31
- this.minConfidence = config.retrieval?.minConfidence || 0.3;
32
- this.consolidationThreshold = config.consolidation?.scheduleEvery || 20;
33
- }
34
- /**
35
- * Phase 1: RETRIEVE - Get relevant memories using 4-factor scoring
36
- */
37
- async retrieve(options) {
38
- const k = options.k || this.defaultK;
39
- const lambda = options.lambda || 0.9;
40
- // Generate query embedding
41
- const queryEmbedding = await this.embeddings.generate(options.query);
42
- // Get all memories
43
- const allMemories = this.db.getAllMemories();
44
- const embeddings = this.db.getAllEmbeddings();
45
- // Filter by domain if specified
46
- let candidates = allMemories;
47
- if (options.domain) {
48
- candidates = candidates.filter(m => m.pattern_data.domain === options.domain ||
49
- m.pattern_data.domain?.startsWith(options.domain + '.'));
50
- }
51
- // Calculate scores for each candidate
52
- const scoredCandidates = [];
53
- for (const memory of candidates) {
54
- const embedding = embeddings.get(memory.id);
55
- if (!embedding)
56
- continue;
57
- // 1. Similarity score (cosine similarity)
58
- const similarity = cosineSimilarity(queryEmbedding, embedding);
59
- // 2. Recency score (exponential decay, 30-day half-life)
60
- const ageDays = (Date.now() - new Date(memory.created_at).getTime()) / (1000 * 60 * 60 * 24);
61
- const recency = Math.exp(-ageDays / 30);
62
- // 3. Reliability score (confidence × sqrt(usage/10))
63
- const reliability = Math.min(memory.confidence * Math.sqrt(memory.usage_count / 10), 1.0);
64
- // Combined score (before diversity penalty)
65
- const score = this.weights.alpha * similarity +
66
- this.weights.beta * recency +
67
- this.weights.gamma * reliability;
68
- scoredCandidates.push({
69
- ...memory,
70
- score,
71
- similarity,
72
- recency,
73
- reliability,
74
- diversityPenalty: 0 // Will be calculated in MMR
75
- });
76
- }
77
- // Sort by score
78
- scoredCandidates.sort((a, b) => b.score - a.score);
79
- // Apply MMR for diversity
80
- const selected = this.selectWithMMR(scoredCandidates, queryEmbedding, k, lambda);
81
- // Update usage counts
82
- for (const memory of selected) {
83
- this.db.updateMemoryUsage(memory.id);
84
- }
85
- // Filter by minimum confidence
86
- return selected.filter(m => m.confidence >= this.minConfidence);
87
- }
88
- /**
89
- * MMR (Maximal Marginal Relevance) Selection
90
- * Balances relevance and diversity
91
- */
92
- selectWithMMR(candidates, queryEmbedding, k, lambda) {
93
- const selected = [];
94
- const remaining = [...candidates];
95
- const embeddings = this.db.getAllEmbeddings();
96
- while (selected.length < k && remaining.length > 0) {
97
- let bestScore = -Infinity;
98
- let bestIndex = -1;
99
- for (let i = 0; i < remaining.length; i++) {
100
- const candidate = remaining[i];
101
- const candidateEmbedding = embeddings.get(candidate.id);
102
- if (!candidateEmbedding)
103
- continue;
104
- // Relevance to query
105
- const relevance = candidate.score;
106
- // Maximum similarity to already selected
107
- let maxSimilarity = 0;
108
- if (selected.length > 0) {
109
- for (const selectedMemory of selected) {
110
- const selectedEmbedding = embeddings.get(selectedMemory.id);
111
- if (selectedEmbedding) {
112
- const sim = cosineSimilarity(candidateEmbedding, selectedEmbedding);
113
- maxSimilarity = Math.max(maxSimilarity, sim);
114
- }
115
- }
116
- }
117
- // MMR score
118
- const mmrScore = lambda * relevance - (1 - lambda) * maxSimilarity;
119
- if (mmrScore > bestScore) {
120
- bestScore = mmrScore;
121
- bestIndex = i;
122
- }
123
- }
124
- if (bestIndex >= 0) {
125
- selected.push(remaining[bestIndex]);
126
- remaining.splice(bestIndex, 1);
127
- }
128
- else {
129
- break;
130
- }
131
- }
132
- return selected;
133
- }
134
- /**
135
- * Phase 2: JUDGE - Evaluate task outcome
136
- */
137
- async judge(trajectory) {
138
- // Simple heuristic judge (can be upgraded to LLM)
139
- const scrubbed = this.piiEnabled ? piiScrubber.scrub(trajectory) : trajectory;
140
- // Heuristics for success/failure
141
- const errorKeywords = ['error', 'failed', 'exception', 'timeout', 'unauthorized', 'forbidden'];
142
- const successKeywords = ['success', 'completed', 'ok', '200', 'done'];
143
- const lowerTrajectory = scrubbed.toLowerCase();
144
- const hasError = errorKeywords.some(kw => lowerTrajectory.includes(kw));
145
- const hasSuccess = successKeywords.some(kw => lowerTrajectory.includes(kw));
146
- if (hasSuccess && !hasError) {
147
- return { label: 'Success', confidence: 0.8, rationale: 'Success keywords found' };
148
- }
149
- else if (hasError && !hasSuccess) {
150
- return { label: 'Failure', confidence: 0.8, rationale: 'Error keywords found' };
151
- }
152
- else if (hasSuccess && hasError) {
153
- return { label: 'Success', confidence: 0.5, rationale: 'Mixed signals' };
154
- }
155
- else {
156
- return { label: 'Failure', confidence: 0.5, rationale: 'No clear indicators' };
157
- }
158
- }
159
- /**
160
- * Phase 3: DISTILL - Extract patterns from trajectory
161
- */
162
- async distill(taskId, trajectory, verdict, domain) {
163
- const scrubbed = this.piiEnabled ? piiScrubber.scrub(trajectory) : trajectory;
164
- // Store trajectory
165
- this.db.insertTrajectory({
166
- task_id: taskId,
167
- trajectory: scrubbed,
168
- verdict: verdict.label,
169
- confidence: verdict.confidence
170
- });
171
- // Extract pattern based on verdict
172
- const pattern = verdict.label === 'Success'
173
- ? this.extractSuccessPattern(scrubbed, domain)
174
- : this.extractFailureGuardrail(scrubbed, domain);
175
- // Store as memory
176
- const memoryId = this.db.insertMemory({
177
- title: pattern.title,
178
- description: pattern.description,
179
- content: pattern.content,
180
- confidence: verdict.confidence,
181
- usage_count: 0,
182
- pattern_data: {
183
- domain,
184
- success_pattern: verdict.label === 'Success',
185
- failure_guardrail: verdict.label === 'Failure'
186
- }
187
- });
188
- // Generate and store embedding
189
- const embedding = await this.embeddings.generate(pattern.content);
190
- this.db.insertEmbedding(memoryId, embedding);
191
- this.memoriesSinceConsolidation++;
192
- return memoryId;
193
- }
194
- extractSuccessPattern(trajectory, domain) {
195
- // Extract key steps from successful execution
196
- const lines = trajectory.split('\n').filter(l => l.trim());
197
- const keySteps = lines.slice(0, 5).join('\n');
198
- return {
199
- title: `Success pattern for ${domain}`,
200
- description: `Successful execution strategy`,
201
- content: `Successful approach:\n${keySteps}`
202
- };
203
- }
204
- extractFailureGuardrail(trajectory, domain) {
205
- // Extract error information
206
- const lines = trajectory.split('\n').filter(l => l.trim());
207
- const errorInfo = lines.find(l => l.toLowerCase().includes('error') ||
208
- l.toLowerCase().includes('failed')) || 'Unknown error';
209
- return {
210
- title: `Failure guardrail for ${domain}`,
211
- description: `Prevention strategy for common failures`,
212
- content: `Avoid: ${errorInfo}\nRecommend: Check prerequisites and retry with backoff`
213
- };
214
- }
215
- /**
216
- * Phase 4: CONSOLIDATE - Deduplicate and prune
217
- */
218
- async consolidate(options) {
219
- const startTime = Date.now();
220
- const dedupeThreshold = options?.dedupeThreshold || 0.95;
221
- const maxAgeDays = options?.prune?.maxAgeDays || 90;
222
- const minConfidence = options?.prune?.minConfidence || 0.3;
223
- const unusedDays = options?.prune?.unusedDays || 30;
224
- // Find and merge duplicates
225
- const duplicates = this.db.findDuplicates(dedupeThreshold);
226
- for (const [id1, id2] of duplicates) {
227
- const mem1 = this.db.getMemory(id1);
228
- const mem2 = this.db.getMemory(id2);
229
- if (mem1 && mem2) {
230
- // Keep the one with higher confidence and usage
231
- const keepId = mem1.confidence > mem2.confidence ||
232
- (mem1.confidence === mem2.confidence && mem1.usage_count > mem2.usage_count)
233
- ? id1 : id2;
234
- const deleteId = keepId === id1 ? id2 : id1;
235
- this.db.deleteMemory(deleteId);
236
- }
237
- }
238
- // Prune old or low-quality memories
239
- const allMemories = this.db.getAllMemories();
240
- let pruned = 0;
241
- for (const memory of allMemories) {
242
- const ageDays = (Date.now() - new Date(memory.created_at).getTime()) / (1000 * 60 * 60 * 24);
243
- const lastUsedDays = ageDays; // Simplified: assume last used = created
244
- const shouldPrune = ageDays > maxAgeDays ||
245
- memory.confidence < minConfidence ||
246
- (memory.usage_count === 0 && lastUsedDays > unusedDays);
247
- if (shouldPrune) {
248
- this.db.deleteMemory(memory.id);
249
- pruned++;
250
- }
251
- }
252
- // Detect contradictions (simplified)
253
- const contradictions = 0; // TODO: Implement semantic contradiction detection
254
- this.memoriesSinceConsolidation = 0;
255
- return {
256
- processed: allMemories.length,
257
- duplicates: duplicates.length,
258
- contradictions,
259
- pruned,
260
- durationMs: Date.now() - startTime
261
- };
262
- }
263
- /**
264
- * High-level task execution with full learning loop
265
- */
266
- async runTask(options) {
267
- // Phase 1: RETRIEVE
268
- const memories = await this.retrieve({
269
- query: options.query,
270
- domain: options.domain
271
- });
272
- // EXECUTE
273
- const result = await options.executeFn(memories);
274
- // Phase 2: JUDGE
275
- const verdict = await this.judge(result.log);
276
- // Phase 3: DISTILL
277
- await this.distill(options.taskId, result.log, verdict, options.domain);
278
- // Phase 4: CONSOLIDATE (if threshold reached)
279
- if (this.memoriesSinceConsolidation >= this.consolidationThreshold) {
280
- await this.consolidate();
281
- }
282
- return {
283
- success: result.success,
284
- summary: `Task ${options.taskId}: ${verdict.label} (confidence: ${verdict.confidence})`,
285
- memories,
286
- verdict
287
- };
288
- }
289
- /**
290
- * MaTTS: Memory-aware Test-Time Scaling (Parallel)
291
- */
292
- async mattsParallel(options) {
293
- const runs = await Promise.all(Array.from({ length: options.k }, async (_, i) => {
294
- const memories = await this.retrieve({
295
- query: options.query,
296
- domain: options.domain
297
- });
298
- const result = await options.executeFn(memories);
299
- const verdict = await this.judge(result.log);
300
- this.db.insertMattsRun({
301
- task_id: options.taskId,
302
- run_index: i,
303
- result: result.log,
304
- verdict: verdict.label,
305
- confidence: verdict.confidence
306
- });
307
- return { result, verdict };
308
- }));
309
- // Calculate consensus
310
- const successes = runs.filter(r => r.verdict.label === 'Success').length;
311
- const avgConfidence = runs.reduce((sum, r) => sum + r.verdict.confidence, 0) / runs.length;
312
- const consensusVerdict = {
313
- label: successes > runs.length / 2 ? 'Success' : 'Failure',
314
- confidence: avgConfidence
315
- };
316
- return {
317
- success: consensusVerdict.label === 'Success',
318
- summary: `MaTTS Parallel: ${successes}/${runs.length} successes, consensus: ${consensusVerdict.label}`,
319
- memories: [],
320
- verdict: consensusVerdict
321
- };
322
- }
323
- /**
324
- * Get statistics
325
- */
326
- getStats() {
327
- return this.db.getStats();
328
- }
329
- /**
330
- * Close database connection
331
- */
332
- close() {
333
- this.db.close();
334
- }
335
- }