agentic-flow 2.0.3 → 2.0.5

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 (322) hide show
  1. package/.claude/agents/test-neural.md +14 -0
  2. package/.claude/settings.json +9 -133
  3. package/README.md +624 -1776
  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 +18 -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/.claude/agents/.claude-flow/metrics/agent-metrics.json +0 -1
  129. package/.claude/agents/.claude-flow/metrics/performance.json +0 -87
  130. package/.claude/agents/.claude-flow/metrics/task-metrics.json +0 -10
  131. package/.claude/skills/.claude-flow/metrics/agent-metrics.json +0 -1
  132. package/.claude/skills/.claude-flow/metrics/performance.json +0 -87
  133. package/.claude/skills/.claude-flow/metrics/task-metrics.json +0 -10
  134. package/.claude/skills/agentic-flow-quickstart/skill.md +0 -69
  135. package/.claude/skills/hooks-automation/skill.md +0 -155
  136. package/.claude/skills/memory-patterns/skill.md +0 -110
  137. package/.claude/skills/skill-builder/.claude-flow/metrics/agent-metrics.json +0 -1
  138. package/.claude/skills/skill-builder/.claude-flow/metrics/performance.json +0 -87
  139. package/.claude/skills/skill-builder/.claude-flow/metrics/task-metrics.json +0 -10
  140. package/.claude/skills/sparc-methodology/skill.md +0 -137
  141. package/.claude/skills/swarm-coordination/skill.md +0 -94
  142. package/.claude/skills/worker-benchmarks/skill.md +0 -135
  143. package/.claude/skills/worker-integration/skill.md +0 -154
  144. package/.claude/statusline.mjs +0 -109
  145. package/.claude/statusline.sh +0 -71
  146. package/dist/agentdb/benchmarks/comprehensive-benchmark.js +0 -664
  147. package/dist/agentdb/benchmarks/frontier-benchmark.js +0 -419
  148. package/dist/agentdb/benchmarks/reflexion-benchmark.js +0 -370
  149. package/dist/agentdb/cli/agentdb-cli.js +0 -717
  150. package/dist/agentdb/controllers/CausalMemoryGraph.js +0 -322
  151. package/dist/agentdb/controllers/CausalRecall.js +0 -281
  152. package/dist/agentdb/controllers/EmbeddingService.d.ts +0 -37
  153. package/dist/agentdb/controllers/EmbeddingService.d.ts.map +0 -1
  154. package/dist/agentdb/controllers/EmbeddingService.js +0 -119
  155. package/dist/agentdb/controllers/EmbeddingService.js.map +0 -1
  156. package/dist/agentdb/controllers/ExplainableRecall.js +0 -387
  157. package/dist/agentdb/controllers/NightlyLearner.js +0 -382
  158. package/dist/agentdb/controllers/ReflexionMemory.js +0 -239
  159. package/dist/agentdb/controllers/SkillLibrary.js +0 -276
  160. package/dist/agentdb/controllers/frontier-index.js +0 -9
  161. package/dist/agentdb/controllers/index.js +0 -8
  162. package/dist/agentdb/optimizations/BatchOperations.js +0 -198
  163. package/dist/agentdb/optimizations/QueryOptimizer.js +0 -225
  164. package/dist/agentdb/optimizations/index.js +0 -7
  165. package/dist/agentdb/tests/frontier-features.test.js +0 -665
  166. package/dist/benchmarks/embeddings-benchmark.d.ts +0 -38
  167. package/dist/benchmarks/embeddings-benchmark.d.ts.map +0 -1
  168. package/dist/benchmarks/embeddings-benchmark.js +0 -282
  169. package/dist/benchmarks/embeddings-benchmark.js.map +0 -1
  170. package/dist/cli/commands/embeddings.d.ts +0 -12
  171. package/dist/cli/commands/embeddings.d.ts.map +0 -1
  172. package/dist/cli/commands/embeddings.js +0 -386
  173. package/dist/cli/commands/embeddings.js.map +0 -1
  174. package/dist/cli/commands/init.d.ts +0 -8
  175. package/dist/cli/commands/init.d.ts.map +0 -1
  176. package/dist/cli/commands/init.js +0 -514
  177. package/dist/cli/commands/init.js.map +0 -1
  178. package/dist/cli/commands/workers.d.ts +0 -9
  179. package/dist/cli/commands/workers.d.ts.map +0 -1
  180. package/dist/cli/commands/workers.js +0 -991
  181. package/dist/cli/commands/workers.js.map +0 -1
  182. package/dist/cli/skills-manager.js +0 -1297
  183. package/dist/cli/update-message.js +0 -175
  184. package/dist/embeddings/index.d.ts +0 -17
  185. package/dist/embeddings/index.d.ts.map +0 -1
  186. package/dist/embeddings/index.js +0 -17
  187. package/dist/embeddings/index.js.map +0 -1
  188. package/dist/embeddings/neural-substrate.d.ts +0 -206
  189. package/dist/embeddings/neural-substrate.d.ts.map +0 -1
  190. package/dist/embeddings/neural-substrate.js +0 -629
  191. package/dist/embeddings/neural-substrate.js.map +0 -1
  192. package/dist/embeddings/optimized-embedder.d.ts +0 -103
  193. package/dist/embeddings/optimized-embedder.d.ts.map +0 -1
  194. package/dist/embeddings/optimized-embedder.js +0 -730
  195. package/dist/embeddings/optimized-embedder.js.map +0 -1
  196. package/dist/examples/embedding-geometry.d.ts +0 -105
  197. package/dist/examples/embedding-geometry.d.ts.map +0 -1
  198. package/dist/examples/embedding-geometry.js +0 -528
  199. package/dist/examples/embedding-geometry.js.map +0 -1
  200. package/dist/memory/SharedMemoryPool.d.ts +0 -129
  201. package/dist/memory/SharedMemoryPool.d.ts.map +0 -1
  202. package/dist/memory/SharedMemoryPool.js +0 -243
  203. package/dist/memory/SharedMemoryPool.js.map +0 -1
  204. package/dist/memory/index.d.ts +0 -8
  205. package/dist/memory/index.d.ts.map +0 -1
  206. package/dist/memory/index.js +0 -7
  207. package/dist/memory/index.js.map +0 -1
  208. package/dist/proxy/http3-proxy-old.js +0 -331
  209. package/dist/proxy/proxy/anthropic-to-gemini.js +0 -439
  210. package/dist/proxy/utils/logger.js +0 -59
  211. package/dist/reasoningbank/agentdb-adapter.js +0 -125
  212. package/dist/reasoningbank/core/database.js +0 -250
  213. package/dist/reasoningbank/core/memory-engine.js +0 -335
  214. package/dist/swarm/ipfs-swarm.d.ts +0 -265
  215. package/dist/swarm/ipfs-swarm.d.ts.map +0 -1
  216. package/dist/swarm/ipfs-swarm.js +0 -508
  217. package/dist/swarm/ipfs-swarm.js.map +0 -1
  218. package/dist/swarm/p2p-free-swarm.d.ts +0 -344
  219. package/dist/swarm/p2p-free-swarm.d.ts.map +0 -1
  220. package/dist/swarm/p2p-free-swarm.js +0 -603
  221. package/dist/swarm/p2p-free-swarm.js.map +0 -1
  222. package/dist/swarm/real-p2p-swarm.d.ts +0 -183
  223. package/dist/swarm/real-p2p-swarm.d.ts.map +0 -1
  224. package/dist/swarm/real-p2p-swarm.js +0 -469
  225. package/dist/swarm/real-p2p-swarm.js.map +0 -1
  226. package/dist/utils/adaptive-pool-sizing.js +0 -414
  227. package/dist/utils/agentdbCommands.js +0 -175
  228. package/dist/utils/circular-rate-limiter.js +0 -391
  229. package/dist/utils/dynamic-compression.js +0 -298
  230. package/dist/utils/http2-multiplexing.js +0 -319
  231. package/dist/utils/index.d.ts +0 -6
  232. package/dist/utils/index.d.ts.map +0 -1
  233. package/dist/utils/index.js +0 -6
  234. package/dist/utils/index.js.map +0 -1
  235. package/dist/utils/lazy-auth.js +0 -311
  236. package/dist/utils/model-cache.d.ts +0 -61
  237. package/dist/utils/model-cache.d.ts.map +0 -1
  238. package/dist/utils/model-cache.js +0 -176
  239. package/dist/utils/model-cache.js.map +0 -1
  240. package/dist/utils/server-push.js +0 -251
  241. package/dist/utils/suppress-warnings.d.ts +0 -19
  242. package/dist/utils/suppress-warnings.d.ts.map +0 -1
  243. package/dist/utils/suppress-warnings.js +0 -59
  244. package/dist/utils/suppress-warnings.js.map +0 -1
  245. package/dist/utils/zero-copy-buffer.js +0 -286
  246. package/dist/workers/consolidated-phases.d.ts +0 -40
  247. package/dist/workers/consolidated-phases.d.ts.map +0 -1
  248. package/dist/workers/consolidated-phases.js +0 -497
  249. package/dist/workers/consolidated-phases.js.map +0 -1
  250. package/dist/workers/custom-worker-config.d.ts +0 -133
  251. package/dist/workers/custom-worker-config.d.ts.map +0 -1
  252. package/dist/workers/custom-worker-config.js +0 -215
  253. package/dist/workers/custom-worker-config.js.map +0 -1
  254. package/dist/workers/custom-worker-factory.d.ts +0 -89
  255. package/dist/workers/custom-worker-factory.d.ts.map +0 -1
  256. package/dist/workers/custom-worker-factory.js +0 -404
  257. package/dist/workers/custom-worker-factory.js.map +0 -1
  258. package/dist/workers/dispatch-service.d.ts +0 -123
  259. package/dist/workers/dispatch-service.d.ts.map +0 -1
  260. package/dist/workers/dispatch-service.js +0 -1024
  261. package/dist/workers/dispatch-service.js.map +0 -1
  262. package/dist/workers/hooks-integration.d.ts +0 -79
  263. package/dist/workers/hooks-integration.d.ts.map +0 -1
  264. package/dist/workers/hooks-integration.js +0 -286
  265. package/dist/workers/hooks-integration.js.map +0 -1
  266. package/dist/workers/index.d.ts +0 -42
  267. package/dist/workers/index.d.ts.map +0 -1
  268. package/dist/workers/index.js +0 -52
  269. package/dist/workers/index.js.map +0 -1
  270. package/dist/workers/mcp-tools.d.ts +0 -56
  271. package/dist/workers/mcp-tools.d.ts.map +0 -1
  272. package/dist/workers/mcp-tools.js +0 -359
  273. package/dist/workers/mcp-tools.js.map +0 -1
  274. package/dist/workers/phase-executors.d.ts +0 -22
  275. package/dist/workers/phase-executors.d.ts.map +0 -1
  276. package/dist/workers/phase-executors.js +0 -445
  277. package/dist/workers/phase-executors.js.map +0 -1
  278. package/dist/workers/resource-governor.d.ts +0 -75
  279. package/dist/workers/resource-governor.d.ts.map +0 -1
  280. package/dist/workers/resource-governor.js +0 -187
  281. package/dist/workers/resource-governor.js.map +0 -1
  282. package/dist/workers/ruvector-integration.d.ts +0 -163
  283. package/dist/workers/ruvector-integration.d.ts.map +0 -1
  284. package/dist/workers/ruvector-integration.js +0 -543
  285. package/dist/workers/ruvector-integration.js.map +0 -1
  286. package/dist/workers/ruvector-native-integration.d.ts +0 -91
  287. package/dist/workers/ruvector-native-integration.d.ts.map +0 -1
  288. package/dist/workers/ruvector-native-integration.js +0 -254
  289. package/dist/workers/ruvector-native-integration.js.map +0 -1
  290. package/dist/workers/trigger-detector.d.ts +0 -68
  291. package/dist/workers/trigger-detector.d.ts.map +0 -1
  292. package/dist/workers/trigger-detector.js +0 -281
  293. package/dist/workers/trigger-detector.js.map +0 -1
  294. package/dist/workers/types.d.ts +0 -145
  295. package/dist/workers/types.d.ts.map +0 -1
  296. package/dist/workers/types.js +0 -6
  297. package/dist/workers/types.js.map +0 -1
  298. package/dist/workers/worker-agent-integration.d.ts +0 -140
  299. package/dist/workers/worker-agent-integration.d.ts.map +0 -1
  300. package/dist/workers/worker-agent-integration.js +0 -471
  301. package/dist/workers/worker-agent-integration.js.map +0 -1
  302. package/dist/workers/worker-benchmarks.d.ts +0 -88
  303. package/dist/workers/worker-benchmarks.d.ts.map +0 -1
  304. package/dist/workers/worker-benchmarks.js +0 -452
  305. package/dist/workers/worker-benchmarks.js.map +0 -1
  306. package/dist/workers/worker-registry.d.ts +0 -85
  307. package/dist/workers/worker-registry.d.ts.map +0 -1
  308. package/dist/workers/worker-registry.js +0 -547
  309. package/dist/workers/worker-registry.js.map +0 -1
  310. package/docs/.claude-flow/metrics/agent-metrics.json +0 -1
  311. package/docs/.claude-flow/metrics/performance.json +0 -87
  312. package/docs/.claude-flow/metrics/task-metrics.json +0 -10
  313. package/docs/embeddings/EMBEDDING_GEOMETRY.md +0 -935
  314. /package/.claude/agents/analysis/{analyze-code-quality.md → code-review/analyze-code-quality.md} +0 -0
  315. /package/.claude/agents/architecture/{arch-system-design.md → system-design/arch-system-design.md} +0 -0
  316. /package/.claude/agents/data/{data-ml-model.md → ml/data-ml-model.md} +0 -0
  317. /package/.claude/agents/development/{dev-backend-api.md → backend/dev-backend-api.md} +0 -0
  318. /package/.claude/agents/devops/{ops-cicd-github.md → ci-cd/ops-cicd-github.md} +0 -0
  319. /package/.claude/agents/documentation/{docs-api-openapi.md → api-docs/docs-api-openapi.md} +0 -0
  320. /package/.claude/agents/specialized/{spec-mobile-react-native.md → mobile/spec-mobile-react-native.md} +0 -0
  321. /package/.claude/agents/testing/{tdd-london-swarm.md → unit/tdd-london-swarm.md} +0 -0
  322. /package/.claude/agents/testing/{production-validator.md → validation/production-validator.md} +0 -0
@@ -1,129 +0,0 @@
1
- /**
2
- * Shared Memory Pool for AgentDB
3
- *
4
- * Provides a singleton memory pool that multiple agents can share:
5
- * - Single SQLite database connection (reduces overhead)
6
- * - Single embedding model instance (saves ~150MB per agent)
7
- * - Shared query cache (LRU with TTL)
8
- * - Shared embedding cache (deduplication)
9
- *
10
- * Memory savings: ~300-500MB for 4+ concurrent agents
11
- *
12
- * @example
13
- * ```typescript
14
- * import { SharedMemoryPool } from 'agentic-flow/memory';
15
- *
16
- * const pool = SharedMemoryPool.getInstance();
17
- * const db = pool.getDatabase();
18
- * const embedder = pool.getEmbedder();
19
- * ```
20
- */
21
- import { Database as DatabaseInstance } from 'better-sqlite3';
22
- declare class EmbeddingService {
23
- private model;
24
- private dimension;
25
- constructor(config: {
26
- model?: string;
27
- dimension?: number;
28
- cacheSize?: number;
29
- provider?: string;
30
- });
31
- embed(text: string): Promise<Float32Array>;
32
- initialize(): Promise<void>;
33
- }
34
- export interface SharedMemoryPoolConfig {
35
- dbPath?: string;
36
- cacheSize?: number;
37
- embeddingCacheSize?: number;
38
- embeddingModel?: string;
39
- embeddingDimension?: number;
40
- }
41
- export declare class SharedMemoryPool {
42
- private static instance;
43
- private db;
44
- private embedder;
45
- private queryCache;
46
- private embeddingCache;
47
- private config;
48
- private initialized;
49
- private constructor();
50
- /**
51
- * Get singleton instance of SharedMemoryPool
52
- */
53
- static getInstance(config?: SharedMemoryPoolConfig): SharedMemoryPool;
54
- /**
55
- * Reset singleton instance (for testing)
56
- */
57
- static resetInstance(): void;
58
- /**
59
- * Ensure embedding service is initialized
60
- */
61
- ensureInitialized(): Promise<void>;
62
- /**
63
- * Get shared database connection
64
- */
65
- getDatabase(): DatabaseInstance;
66
- /**
67
- * Get shared embedding service
68
- */
69
- getEmbedder(): EmbeddingService;
70
- /**
71
- * Get or compute embedding with caching
72
- *
73
- * @param text Text to embed
74
- * @returns Cached or newly computed embedding
75
- */
76
- getCachedEmbedding(text: string): Promise<Float32Array>;
77
- /**
78
- * Cache query result with TTL
79
- *
80
- * @param key Cache key
81
- * @param result Result to cache
82
- * @param ttl Time-to-live in milliseconds (default: 60s)
83
- */
84
- cacheQuery(key: string, result: any, ttl?: number): void;
85
- /**
86
- * Get cached query result
87
- *
88
- * @param key Cache key
89
- * @returns Cached result or null if expired/missing
90
- */
91
- getCachedQuery(key: string): any | null;
92
- /**
93
- * Clear all caches
94
- */
95
- clearCaches(): void;
96
- /**
97
- * Get memory pool statistics
98
- */
99
- getStats(): {
100
- database: {
101
- path: string;
102
- size: any;
103
- tables: any;
104
- walMode: unknown;
105
- };
106
- cache: {
107
- queryCacheSize: number;
108
- queryCacheMax: number;
109
- embeddingCacheSize: number;
110
- embeddingCacheMax: number;
111
- };
112
- embedder: {
113
- model: string;
114
- dimension: number;
115
- initialized: boolean;
116
- };
117
- memory: {
118
- heapUsed: number;
119
- external: number;
120
- };
121
- };
122
- /**
123
- * Close database connection and cleanup
124
- */
125
- close(): void;
126
- }
127
- export declare const getSharedMemoryPool: typeof SharedMemoryPool.getInstance;
128
- export {};
129
- //# sourceMappingURL=SharedMemoryPool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SharedMemoryPool.d.ts","sourceRoot":"","sources":["../../src/memory/SharedMemoryPool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAiB,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAMxE,cAAM,gBAAgB;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAK3F,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqB1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAClC;AAOD,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO;IAqCP;;OAEG;WACW,WAAW,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,gBAAgB;IAO5E;;OAEG;WACW,aAAa,IAAI,IAAI;IAOnC;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/C;;OAEG;IACI,WAAW,IAAI,gBAAgB;IAItC;;OAEG;IACI,WAAW,IAAI,gBAAgB;IAItC;;;;;OAKG;IACU,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAmBpE;;;;;;OAMG;IACI,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAE,MAAc,GAAG,IAAI;IAetE;;;;;OAKG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAY9C;;OAEG;IACI,WAAW,IAAI,IAAI;IAK1B;;OAEG;IACI,QAAQ;;;;;;;;;;;;;;;;;;;;;;;IAgCf;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB;AAGD,eAAO,MAAM,mBAAmB,qCAA+B,CAAC"}
@@ -1,243 +0,0 @@
1
- /**
2
- * Shared Memory Pool for AgentDB
3
- *
4
- * Provides a singleton memory pool that multiple agents can share:
5
- * - Single SQLite database connection (reduces overhead)
6
- * - Single embedding model instance (saves ~150MB per agent)
7
- * - Shared query cache (LRU with TTL)
8
- * - Shared embedding cache (deduplication)
9
- *
10
- * Memory savings: ~300-500MB for 4+ concurrent agents
11
- *
12
- * @example
13
- * ```typescript
14
- * import { SharedMemoryPool } from 'agentic-flow/memory';
15
- *
16
- * const pool = SharedMemoryPool.getInstance();
17
- * const db = pool.getDatabase();
18
- * const embedder = pool.getEmbedder();
19
- * ```
20
- */
21
- // Use better-sqlite3 for local SQLite
22
- import Database from 'better-sqlite3';
23
- import * as path from 'path';
24
- import * as fs from 'fs';
25
- // Stub implementation for EmbeddingService
26
- // TODO: Replace with actual import when agentdb v3.x is released
27
- class EmbeddingService {
28
- model;
29
- dimension;
30
- constructor(config) {
31
- this.model = config.model || 'mock';
32
- this.dimension = config.dimension || 384;
33
- }
34
- async embed(text) {
35
- // Simple hash-based mock embedding
36
- const embedding = new Float32Array(this.dimension);
37
- let hash = 0;
38
- for (let i = 0; i < text.length; i++) {
39
- hash = (hash << 5) - hash + text.charCodeAt(i);
40
- hash = hash & hash;
41
- }
42
- for (let i = 0; i < this.dimension; i++) {
43
- const seed = hash + i * 2654435761;
44
- const x = Math.sin(seed) * 10000;
45
- embedding[i] = x - Math.floor(x);
46
- }
47
- // Normalize
48
- const norm = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));
49
- for (let i = 0; i < this.dimension; i++) {
50
- embedding[i] /= norm;
51
- }
52
- return embedding;
53
- }
54
- async initialize() { }
55
- }
56
- export class SharedMemoryPool {
57
- static instance;
58
- db;
59
- embedder;
60
- queryCache;
61
- embeddingCache;
62
- config;
63
- initialized = false;
64
- constructor(config = {}) {
65
- this.config = {
66
- dbPath: config.dbPath || './agentdb.db',
67
- cacheSize: config.cacheSize || 1000,
68
- embeddingCacheSize: config.embeddingCacheSize || 10000,
69
- embeddingModel: config.embeddingModel || 'Xenova/all-MiniLM-L6-v2',
70
- embeddingDimension: config.embeddingDimension || 384
71
- };
72
- // Initialize SQLite with optimized settings
73
- const dbDir = path.dirname(this.config.dbPath);
74
- if (!fs.existsSync(dbDir)) {
75
- fs.mkdirSync(dbDir, { recursive: true });
76
- }
77
- this.db = new Database(this.config.dbPath);
78
- // Optimize SQLite for performance
79
- this.db.pragma('journal_mode = WAL'); // Write-Ahead Logging
80
- this.db.pragma('synchronous = NORMAL'); // Balanced safety/performance
81
- this.db.pragma('cache_size = -65536'); // 64MB cache
82
- this.db.pragma('mmap_size = 268435456'); // 256MB memory-mapped I/O
83
- this.db.pragma('page_size = 8192'); // 8KB pages
84
- this.db.pragma('temp_store = MEMORY'); // Keep temp tables in memory
85
- // Initialize embedding service (will be lazy-loaded)
86
- this.embedder = new EmbeddingService({
87
- model: this.config.embeddingModel,
88
- dimension: this.config.embeddingDimension,
89
- provider: 'transformers'
90
- });
91
- // Initialize caches
92
- this.queryCache = new Map();
93
- this.embeddingCache = new Map();
94
- }
95
- /**
96
- * Get singleton instance of SharedMemoryPool
97
- */
98
- static getInstance(config) {
99
- if (!SharedMemoryPool.instance) {
100
- SharedMemoryPool.instance = new SharedMemoryPool(config);
101
- }
102
- return SharedMemoryPool.instance;
103
- }
104
- /**
105
- * Reset singleton instance (for testing)
106
- */
107
- static resetInstance() {
108
- if (SharedMemoryPool.instance) {
109
- SharedMemoryPool.instance.close();
110
- SharedMemoryPool.instance = null;
111
- }
112
- }
113
- /**
114
- * Ensure embedding service is initialized
115
- */
116
- async ensureInitialized() {
117
- if (!this.initialized) {
118
- await this.embedder.initialize();
119
- this.initialized = true;
120
- }
121
- }
122
- /**
123
- * Get shared database connection
124
- */
125
- getDatabase() {
126
- return this.db;
127
- }
128
- /**
129
- * Get shared embedding service
130
- */
131
- getEmbedder() {
132
- return this.embedder;
133
- }
134
- /**
135
- * Get or compute embedding with caching
136
- *
137
- * @param text Text to embed
138
- * @returns Cached or newly computed embedding
139
- */
140
- async getCachedEmbedding(text) {
141
- const cached = this.embeddingCache.get(text);
142
- if (cached)
143
- return cached;
144
- await this.ensureInitialized();
145
- const embedding = await this.embedder.embed(text);
146
- // LRU eviction if cache too large
147
- if (this.embeddingCache.size >= this.config.embeddingCacheSize) {
148
- const firstKey = this.embeddingCache.keys().next().value;
149
- if (firstKey) {
150
- this.embeddingCache.delete(firstKey);
151
- }
152
- }
153
- this.embeddingCache.set(text, embedding);
154
- return embedding;
155
- }
156
- /**
157
- * Cache query result with TTL
158
- *
159
- * @param key Cache key
160
- * @param result Result to cache
161
- * @param ttl Time-to-live in milliseconds (default: 60s)
162
- */
163
- cacheQuery(key, result, ttl = 60000) {
164
- // LRU eviction if cache too large
165
- if (this.queryCache.size >= this.config.cacheSize) {
166
- const firstKey = this.queryCache.keys().next().value;
167
- if (firstKey) {
168
- this.queryCache.delete(firstKey);
169
- }
170
- }
171
- this.queryCache.set(key, {
172
- result,
173
- expires: Date.now() + ttl
174
- });
175
- }
176
- /**
177
- * Get cached query result
178
- *
179
- * @param key Cache key
180
- * @returns Cached result or null if expired/missing
181
- */
182
- getCachedQuery(key) {
183
- const cached = this.queryCache.get(key);
184
- if (!cached)
185
- return null;
186
- if (Date.now() > cached.expires) {
187
- this.queryCache.delete(key);
188
- return null;
189
- }
190
- return cached.result;
191
- }
192
- /**
193
- * Clear all caches
194
- */
195
- clearCaches() {
196
- this.queryCache.clear();
197
- this.embeddingCache.clear();
198
- }
199
- /**
200
- * Get memory pool statistics
201
- */
202
- getStats() {
203
- const dbStats = this.db.prepare(`
204
- SELECT
205
- (SELECT COUNT(*) FROM sqlite_master WHERE type='table') as tables,
206
- (SELECT page_count * page_size FROM pragma_page_count(), pragma_page_size()) as dbSize
207
- `).get();
208
- return {
209
- database: {
210
- path: this.config.dbPath,
211
- size: dbStats.dbSize,
212
- tables: dbStats.tables,
213
- walMode: this.db.pragma('journal_mode', { simple: true }),
214
- },
215
- cache: {
216
- queryCacheSize: this.queryCache.size,
217
- queryCacheMax: this.config.cacheSize,
218
- embeddingCacheSize: this.embeddingCache.size,
219
- embeddingCacheMax: this.config.embeddingCacheSize,
220
- },
221
- embedder: {
222
- model: this.config.embeddingModel,
223
- dimension: this.config.embeddingDimension,
224
- initialized: this.initialized,
225
- },
226
- memory: {
227
- heapUsed: Math.round(process.memoryUsage().heapUsed / 1024 / 1024),
228
- external: Math.round(process.memoryUsage().external / 1024 / 1024),
229
- }
230
- };
231
- }
232
- /**
233
- * Close database connection and cleanup
234
- */
235
- close() {
236
- this.clearCaches();
237
- this.db.close();
238
- this.initialized = false;
239
- }
240
- }
241
- // Export singleton getter for convenience
242
- export const getSharedMemoryPool = SharedMemoryPool.getInstance;
243
- //# sourceMappingURL=SharedMemoryPool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SharedMemoryPool.js","sourceRoot":"","sources":["../../src/memory/SharedMemoryPool.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared Memory Pool for AgentDB\n *\n * Provides a singleton memory pool that multiple agents can share:\n * - Single SQLite database connection (reduces overhead)\n * - Single embedding model instance (saves ~150MB per agent)\n * - Shared query cache (LRU with TTL)\n * - Shared embedding cache (deduplication)\n *\n * Memory savings: ~300-500MB for 4+ concurrent agents\n *\n * @example\n * ```typescript\n * import { SharedMemoryPool } from 'agentic-flow/memory';\n *\n * const pool = SharedMemoryPool.getInstance();\n * const db = pool.getDatabase();\n * const embedder = pool.getEmbedder();\n * ```\n */\n\n// Use better-sqlite3 for local SQLite\nimport Database, { Database as DatabaseInstance } from 'better-sqlite3';\nimport * as path from 'path';\nimport * as fs from 'fs';\n\n// Stub implementation for EmbeddingService\n// TODO: Replace with actual import when agentdb v3.x is released\nclass EmbeddingService {\n private model: string;\n private dimension: number;\n\n constructor(config: { model?: string; dimension?: number; cacheSize?: number; provider?: string }) {\n this.model = config.model || 'mock';\n this.dimension = config.dimension || 384;\n }\n\n async embed(text: string): Promise<Float32Array> {\n // Simple hash-based mock embedding\n const embedding = new Float32Array(this.dimension);\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 for (let i = 0; i < this.dimension; i++) {\n const seed = hash + i * 2654435761;\n const x = Math.sin(seed) * 10000;\n embedding[i] = x - Math.floor(x);\n }\n // Normalize\n const norm = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));\n for (let i = 0; i < this.dimension; i++) {\n embedding[i] /= norm;\n }\n return embedding;\n }\n\n async initialize(): Promise<void> {}\n}\n\ninterface CachedQuery {\n result: any;\n expires: number;\n}\n\nexport interface SharedMemoryPoolConfig {\n dbPath?: string;\n cacheSize?: number;\n embeddingCacheSize?: number;\n embeddingModel?: string;\n embeddingDimension?: number;\n}\n\nexport class SharedMemoryPool {\n private static instance: SharedMemoryPool;\n private db: DatabaseInstance;\n private embedder: EmbeddingService;\n private queryCache: Map<string, CachedQuery>;\n private embeddingCache: Map<string, Float32Array>;\n private config: Required<SharedMemoryPoolConfig>;\n private initialized: boolean = false;\n\n private constructor(config: SharedMemoryPoolConfig = {}) {\n this.config = {\n dbPath: config.dbPath || './agentdb.db',\n cacheSize: config.cacheSize || 1000,\n embeddingCacheSize: config.embeddingCacheSize || 10000,\n embeddingModel: config.embeddingModel || 'Xenova/all-MiniLM-L6-v2',\n embeddingDimension: config.embeddingDimension || 384\n };\n\n // Initialize SQLite with optimized settings\n const dbDir = path.dirname(this.config.dbPath);\n if (!fs.existsSync(dbDir)) {\n fs.mkdirSync(dbDir, { recursive: true });\n }\n\n this.db = new Database(this.config.dbPath);\n\n // Optimize SQLite for performance\n this.db.pragma('journal_mode = WAL'); // Write-Ahead Logging\n this.db.pragma('synchronous = NORMAL'); // Balanced safety/performance\n this.db.pragma('cache_size = -65536'); // 64MB cache\n this.db.pragma('mmap_size = 268435456'); // 256MB memory-mapped I/O\n this.db.pragma('page_size = 8192'); // 8KB pages\n this.db.pragma('temp_store = MEMORY'); // Keep temp tables in memory\n\n // Initialize embedding service (will be lazy-loaded)\n this.embedder = new EmbeddingService({\n model: this.config.embeddingModel,\n dimension: this.config.embeddingDimension,\n provider: 'transformers'\n });\n\n // Initialize caches\n this.queryCache = new Map();\n this.embeddingCache = new Map();\n }\n\n /**\n * Get singleton instance of SharedMemoryPool\n */\n public static getInstance(config?: SharedMemoryPoolConfig): SharedMemoryPool {\n if (!SharedMemoryPool.instance) {\n SharedMemoryPool.instance = new SharedMemoryPool(config);\n }\n return SharedMemoryPool.instance;\n }\n\n /**\n * Reset singleton instance (for testing)\n */\n public static resetInstance(): void {\n if (SharedMemoryPool.instance) {\n SharedMemoryPool.instance.close();\n SharedMemoryPool.instance = null as any;\n }\n }\n\n /**\n * Ensure embedding service is initialized\n */\n public async ensureInitialized(): Promise<void> {\n if (!this.initialized) {\n await this.embedder.initialize();\n this.initialized = true;\n }\n }\n\n /**\n * Get shared database connection\n */\n public getDatabase(): DatabaseInstance {\n return this.db;\n }\n\n /**\n * Get shared embedding service\n */\n public getEmbedder(): EmbeddingService {\n return this.embedder;\n }\n\n /**\n * Get or compute embedding with caching\n *\n * @param text Text to embed\n * @returns Cached or newly computed embedding\n */\n public async getCachedEmbedding(text: string): Promise<Float32Array> {\n const cached = this.embeddingCache.get(text);\n if (cached) return cached;\n\n await this.ensureInitialized();\n const embedding = await this.embedder.embed(text);\n\n // LRU eviction if cache too large\n if (this.embeddingCache.size >= this.config.embeddingCacheSize) {\n const firstKey = this.embeddingCache.keys().next().value;\n if (firstKey) {\n this.embeddingCache.delete(firstKey);\n }\n }\n\n this.embeddingCache.set(text, embedding);\n return embedding;\n }\n\n /**\n * Cache query result with TTL\n *\n * @param key Cache key\n * @param result Result to cache\n * @param ttl Time-to-live in milliseconds (default: 60s)\n */\n public cacheQuery(key: string, result: any, ttl: number = 60000): void {\n // LRU eviction if cache too large\n if (this.queryCache.size >= this.config.cacheSize) {\n const firstKey = this.queryCache.keys().next().value;\n if (firstKey) {\n this.queryCache.delete(firstKey);\n }\n }\n\n this.queryCache.set(key, {\n result,\n expires: Date.now() + ttl\n });\n }\n\n /**\n * Get cached query result\n *\n * @param key Cache key\n * @returns Cached result or null if expired/missing\n */\n public getCachedQuery(key: string): any | null {\n const cached = this.queryCache.get(key);\n if (!cached) return null;\n\n if (Date.now() > cached.expires) {\n this.queryCache.delete(key);\n return null;\n }\n\n return cached.result;\n }\n\n /**\n * Clear all caches\n */\n public clearCaches(): void {\n this.queryCache.clear();\n this.embeddingCache.clear();\n }\n\n /**\n * Get memory pool statistics\n */\n public getStats() {\n const dbStats = this.db.prepare(`\n SELECT\n (SELECT COUNT(*) FROM sqlite_master WHERE type='table') as tables,\n (SELECT page_count * page_size FROM pragma_page_count(), pragma_page_size()) as dbSize\n `).get() as any;\n\n return {\n database: {\n path: this.config.dbPath,\n size: dbStats.dbSize,\n tables: dbStats.tables,\n walMode: this.db.pragma('journal_mode', { simple: true }),\n },\n cache: {\n queryCacheSize: this.queryCache.size,\n queryCacheMax: this.config.cacheSize,\n embeddingCacheSize: this.embeddingCache.size,\n embeddingCacheMax: this.config.embeddingCacheSize,\n },\n embedder: {\n model: this.config.embeddingModel,\n dimension: this.config.embeddingDimension,\n initialized: this.initialized,\n },\n memory: {\n heapUsed: Math.round(process.memoryUsage().heapUsed / 1024 / 1024),\n external: Math.round(process.memoryUsage().external / 1024 / 1024),\n }\n };\n }\n\n /**\n * Close database connection and cleanup\n */\n public close(): void {\n this.clearCaches();\n this.db.close();\n this.initialized = false;\n }\n}\n\n// Export singleton getter for convenience\nexport const getSharedMemoryPool = SharedMemoryPool.getInstance;\n"]}
@@ -1,8 +0,0 @@
1
- /**
2
- * Memory Management Exports
3
- *
4
- * Provides shared memory pool and optimization utilities
5
- */
6
- export { SharedMemoryPool, getSharedMemoryPool } from './SharedMemoryPool.js';
7
- export type { SharedMemoryPoolConfig } from './SharedMemoryPool.js';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Memory Management Exports
3
- *
4
- * Provides shared memory pool and optimization utilities
5
- */
6
- export { SharedMemoryPool, getSharedMemoryPool } from './SharedMemoryPool.js';
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["/**\n * Memory Management Exports\n *\n * Provides shared memory pool and optimization utilities\n */\n\nexport { SharedMemoryPool, getSharedMemoryPool } from './SharedMemoryPool.js';\nexport type { SharedMemoryPoolConfig } from './SharedMemoryPool.js';\n"]}