agentdb 3.0.0-alpha.2 → 3.0.0-alpha.20

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 (519) hide show
  1. package/README.md +208 -2593
  2. package/dist/src/backends/GraphBackend.d.ts +8 -8
  3. package/dist/src/backends/GraphBackend.d.ts.map +1 -1
  4. package/dist/src/backends/GraphBackend.js +15 -16
  5. package/dist/src/backends/GraphBackend.js.map +1 -1
  6. package/dist/src/backends/LearningBackend.d.ts +2 -2
  7. package/dist/src/backends/LearningBackend.d.ts.map +1 -1
  8. package/dist/src/backends/LearningBackend.js +10 -11
  9. package/dist/src/backends/LearningBackend.js.map +1 -1
  10. package/dist/src/backends/VectorBackend.d.ts +10 -0
  11. package/dist/src/backends/VectorBackend.d.ts.map +1 -1
  12. package/dist/src/backends/detector.d.ts +3 -25
  13. package/dist/src/backends/detector.d.ts.map +1 -1
  14. package/dist/src/backends/detector.js +15 -119
  15. package/dist/src/backends/detector.js.map +1 -1
  16. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts +55 -1
  17. package/dist/src/backends/graph/GraphDatabaseAdapter.d.ts.map +1 -1
  18. package/dist/src/backends/graph/GraphDatabaseAdapter.js +133 -7
  19. package/dist/src/backends/graph/GraphDatabaseAdapter.js.map +1 -1
  20. package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts +2 -2
  21. package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts.map +1 -1
  22. package/dist/src/backends/hnswlib/HNSWLibBackend.js +12 -21
  23. package/dist/src/backends/hnswlib/HNSWLibBackend.js.map +1 -1
  24. package/dist/src/backends/index.d.ts +3 -25
  25. package/dist/src/backends/index.d.ts.map +1 -1
  26. package/dist/src/backends/index.js +1 -23
  27. package/dist/src/backends/index.js.map +1 -1
  28. package/dist/src/backends/ruvector/RuVectorBackend.d.ts +4 -4
  29. package/dist/src/backends/ruvector/RuVectorBackend.d.ts.map +1 -1
  30. package/dist/src/backends/ruvector/RuVectorBackend.js +2 -2
  31. package/dist/src/backends/ruvector/RuVectorBackend.js.map +1 -1
  32. package/dist/src/backends/ruvector/RuVectorLearning.d.ts.map +1 -1
  33. package/dist/src/backends/ruvector/RuVectorLearning.js +5 -10
  34. package/dist/src/backends/ruvector/RuVectorLearning.js.map +1 -1
  35. package/dist/src/backends/rvf/SelfLearningRvfBackend.d.ts.map +1 -1
  36. package/dist/src/backends/rvf/SelfLearningRvfBackend.js +45 -2
  37. package/dist/src/backends/rvf/SelfLearningRvfBackend.js.map +1 -1
  38. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts +26 -0
  39. package/dist/src/backends/rvf/SqlJsRvfBackend.d.ts.map +1 -1
  40. package/dist/src/backends/rvf/SqlJsRvfBackend.js +93 -31
  41. package/dist/src/backends/rvf/SqlJsRvfBackend.js.map +1 -1
  42. package/dist/src/benchmark/BenchmarkSuite.d.ts.map +1 -1
  43. package/dist/src/benchmark/BenchmarkSuite.js +0 -2
  44. package/dist/src/benchmark/BenchmarkSuite.js.map +1 -1
  45. package/dist/src/benchmarks/wasm-vector-benchmark.d.ts +10 -0
  46. package/dist/src/benchmarks/wasm-vector-benchmark.d.ts.map +1 -0
  47. package/dist/src/benchmarks/wasm-vector-benchmark.js +196 -0
  48. package/dist/src/benchmarks/wasm-vector-benchmark.js.map +1 -0
  49. package/dist/src/browser/AdvancedFeatures.d.ts.map +1 -1
  50. package/dist/src/browser/AdvancedFeatures.js +10 -3
  51. package/dist/src/browser/AdvancedFeatures.js.map +1 -1
  52. package/dist/src/browser/AttentionBrowser.d.ts.map +1 -1
  53. package/dist/src/browser/AttentionBrowser.js +13 -5
  54. package/dist/src/browser/AttentionBrowser.js.map +1 -1
  55. package/dist/src/browser/HNSWIndex.d.ts +1 -31
  56. package/dist/src/browser/HNSWIndex.d.ts.map +1 -1
  57. package/dist/src/browser/HNSWIndex.js +18 -136
  58. package/dist/src/browser/HNSWIndex.js.map +1 -1
  59. package/dist/src/browser/ProductQuantization.d.ts.map +1 -1
  60. package/dist/src/browser/ProductQuantization.js +1 -0
  61. package/dist/src/browser/ProductQuantization.js.map +1 -1
  62. package/dist/src/browser/index.d.ts +3 -3
  63. package/dist/src/browser/index.d.ts.map +1 -1
  64. package/dist/src/browser/index.js +1 -2
  65. package/dist/src/browser/index.js.map +1 -1
  66. package/dist/src/cli/agentdb-cli.d.ts +2 -3
  67. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  68. package/dist/src/cli/agentdb-cli.js +142 -96
  69. package/dist/src/cli/agentdb-cli.js.map +1 -1
  70. package/dist/src/cli/commands/attention.js +15 -5
  71. package/dist/src/cli/commands/attention.js.map +1 -1
  72. package/dist/src/cli/commands/doctor.d.ts +0 -2
  73. package/dist/src/cli/commands/doctor.d.ts.map +1 -1
  74. package/dist/src/cli/commands/doctor.js +6 -111
  75. package/dist/src/cli/commands/doctor.js.map +1 -1
  76. package/dist/src/cli/commands/hyperbolic.d.ts.map +1 -1
  77. package/dist/src/cli/commands/hyperbolic.js +15 -3
  78. package/dist/src/cli/commands/hyperbolic.js.map +1 -1
  79. package/dist/src/cli/commands/init.d.ts +1 -2
  80. package/dist/src/cli/commands/init.d.ts.map +1 -1
  81. package/dist/src/cli/commands/init.js +7 -30
  82. package/dist/src/cli/commands/init.js.map +1 -1
  83. package/dist/src/cli/commands/install-embeddings.d.ts +1 -1
  84. package/dist/src/cli/commands/install-embeddings.d.ts.map +1 -1
  85. package/dist/src/cli/commands/install-embeddings.js +17 -11
  86. package/dist/src/cli/commands/install-embeddings.js.map +1 -1
  87. package/dist/src/cli/commands/learn.d.ts.map +1 -1
  88. package/dist/src/cli/commands/learn.js +12 -6
  89. package/dist/src/cli/commands/learn.js.map +1 -1
  90. package/dist/src/cli/commands/migrate.d.ts.map +1 -1
  91. package/dist/src/cli/commands/migrate.js +31 -10
  92. package/dist/src/cli/commands/migrate.js.map +1 -1
  93. package/dist/src/cli/commands/route.d.ts.map +1 -1
  94. package/dist/src/cli/commands/route.js +6 -1
  95. package/dist/src/cli/commands/route.js.map +1 -1
  96. package/dist/src/cli/commands/simulate-report.js +14 -2
  97. package/dist/src/cli/commands/simulate-report.js.map +1 -1
  98. package/dist/src/cli/commands/simulate-wizard.js.map +1 -1
  99. package/dist/src/cli/commands/simulate.d.ts +7 -0
  100. package/dist/src/cli/commands/simulate.d.ts.map +1 -0
  101. package/dist/src/cli/commands/simulate.js +100 -0
  102. package/dist/src/cli/commands/simulate.js.map +1 -0
  103. package/dist/src/cli/commands/status.js +1 -5
  104. package/dist/src/cli/commands/status.js.map +1 -1
  105. package/dist/src/cli/lib/attention-config.d.ts +2 -2
  106. package/dist/src/cli/lib/attention-config.d.ts.map +1 -1
  107. package/dist/src/cli/lib/attention-config.js +1 -2
  108. package/dist/src/cli/lib/attention-config.js.map +1 -1
  109. package/dist/src/cli/lib/config-manager.d.ts +110 -0
  110. package/dist/src/cli/lib/config-manager.d.ts.map +1 -0
  111. package/dist/src/cli/lib/config-manager.js +512 -0
  112. package/dist/src/cli/lib/config-manager.js.map +1 -0
  113. package/dist/src/cli/lib/config-validator.d.ts +1 -1
  114. package/dist/src/cli/lib/config-validator.d.ts.map +1 -1
  115. package/dist/src/cli/lib/health-monitor.d.ts +149 -0
  116. package/dist/src/cli/lib/health-monitor.d.ts.map +1 -0
  117. package/dist/src/cli/lib/health-monitor.js +380 -0
  118. package/dist/src/cli/lib/health-monitor.js.map +1 -0
  119. package/dist/src/cli/lib/history-tracker.d.ts +103 -0
  120. package/dist/src/cli/lib/history-tracker.d.ts.map +1 -0
  121. package/dist/src/cli/lib/history-tracker.js +352 -0
  122. package/dist/src/cli/lib/history-tracker.js.map +1 -0
  123. package/dist/src/cli/lib/report-store.d.ts.map +1 -1
  124. package/dist/src/cli/lib/report-store.js +3 -5
  125. package/dist/src/cli/lib/report-store.js.map +1 -1
  126. package/dist/src/cli/lib/simulation-registry.d.ts +1 -1
  127. package/dist/src/cli/lib/simulation-registry.d.ts.map +1 -1
  128. package/dist/src/cli/lib/simulation-registry.js +0 -1
  129. package/dist/src/cli/lib/simulation-registry.js.map +1 -1
  130. package/dist/src/cli/lib/simulation-runner.d.ts +1 -1
  131. package/dist/src/cli/lib/simulation-runner.d.ts.map +1 -1
  132. package/dist/src/cli/lib/simulation-runner.js +1 -4
  133. package/dist/src/cli/lib/simulation-runner.js.map +1 -1
  134. package/dist/src/compatibility/DeprecationWarnings.d.ts.map +1 -1
  135. package/dist/src/compatibility/V1toV2Adapter.d.ts +2 -2
  136. package/dist/src/compatibility/V1toV2Adapter.d.ts.map +1 -1
  137. package/dist/src/compatibility/V1toV2Adapter.js +1 -14
  138. package/dist/src/compatibility/V1toV2Adapter.js.map +1 -1
  139. package/dist/src/compatibility/VersionDetector.d.ts +1 -1
  140. package/dist/src/compatibility/VersionDetector.d.ts.map +1 -1
  141. package/dist/src/compatibility/VersionDetector.js +3 -3
  142. package/dist/src/compatibility/VersionDetector.js.map +1 -1
  143. package/dist/src/compatibility/index.d.ts +3 -0
  144. package/dist/src/compatibility/index.d.ts.map +1 -1
  145. package/dist/src/compatibility/index.js +11 -0
  146. package/dist/src/compatibility/index.js.map +1 -1
  147. package/dist/src/controllers/AttentionService.d.ts +98 -122
  148. package/dist/src/controllers/AttentionService.d.ts.map +1 -1
  149. package/dist/src/controllers/AttentionService.js +463 -238
  150. package/dist/src/controllers/AttentionService.js.map +1 -1
  151. package/dist/src/controllers/CausalMemoryGraph.d.ts +4 -4
  152. package/dist/src/controllers/CausalMemoryGraph.d.ts.map +1 -1
  153. package/dist/src/controllers/CausalMemoryGraph.js +7 -8
  154. package/dist/src/controllers/CausalMemoryGraph.js.map +1 -1
  155. package/dist/src/controllers/CausalRecall.d.ts +3 -2
  156. package/dist/src/controllers/CausalRecall.d.ts.map +1 -1
  157. package/dist/src/controllers/CausalRecall.js +21 -10
  158. package/dist/src/controllers/CausalRecall.js.map +1 -1
  159. package/dist/src/controllers/ContextSynthesizer.d.ts +1 -1
  160. package/dist/src/controllers/ContextSynthesizer.d.ts.map +1 -1
  161. package/dist/src/controllers/EmbeddingService.d.ts +29 -0
  162. package/dist/src/controllers/EmbeddingService.d.ts.map +1 -1
  163. package/dist/src/controllers/EmbeddingService.js +149 -34
  164. package/dist/src/controllers/EmbeddingService.js.map +1 -1
  165. package/dist/src/controllers/EnhancedEmbeddingService.d.ts.map +1 -1
  166. package/dist/src/controllers/EnhancedEmbeddingService.js +14 -7
  167. package/dist/src/controllers/EnhancedEmbeddingService.js.map +1 -1
  168. package/dist/src/controllers/ExplainableRecall.d.ts +5 -4
  169. package/dist/src/controllers/ExplainableRecall.d.ts.map +1 -1
  170. package/dist/src/controllers/ExplainableRecall.js +12 -20
  171. package/dist/src/controllers/ExplainableRecall.js.map +1 -1
  172. package/dist/src/controllers/HNSWIndex.d.ts +5 -4
  173. package/dist/src/controllers/HNSWIndex.d.ts.map +1 -1
  174. package/dist/src/controllers/HNSWIndex.js +6 -9
  175. package/dist/src/controllers/HNSWIndex.js.map +1 -1
  176. package/dist/src/controllers/LearningSystem.d.ts +10 -105
  177. package/dist/src/controllers/LearningSystem.d.ts.map +1 -1
  178. package/dist/src/controllers/LearningSystem.js +28 -39
  179. package/dist/src/controllers/LearningSystem.js.map +1 -1
  180. package/dist/src/controllers/MMRDiversityRanker.d.ts +1 -1
  181. package/dist/src/controllers/MMRDiversityRanker.d.ts.map +1 -1
  182. package/dist/src/controllers/MemoryController.d.ts +15 -2
  183. package/dist/src/controllers/MemoryController.d.ts.map +1 -1
  184. package/dist/src/controllers/MemoryController.js +33 -3
  185. package/dist/src/controllers/MemoryController.js.map +1 -1
  186. package/dist/src/controllers/MetadataFilter.d.ts +3 -3
  187. package/dist/src/controllers/MetadataFilter.d.ts.map +1 -1
  188. package/dist/src/controllers/MetadataFilter.js +6 -9
  189. package/dist/src/controllers/MetadataFilter.js.map +1 -1
  190. package/dist/src/controllers/MincutService.d.ts +92 -0
  191. package/dist/src/controllers/MincutService.d.ts.map +1 -0
  192. package/dist/src/controllers/MincutService.js +336 -0
  193. package/dist/src/controllers/MincutService.js.map +1 -0
  194. package/dist/src/controllers/NightlyLearner.d.ts +3 -4
  195. package/dist/src/controllers/NightlyLearner.d.ts.map +1 -1
  196. package/dist/src/controllers/NightlyLearner.js +17 -22
  197. package/dist/src/controllers/NightlyLearner.js.map +1 -1
  198. package/dist/src/controllers/QUICClient.d.ts +7 -10
  199. package/dist/src/controllers/QUICClient.d.ts.map +1 -1
  200. package/dist/src/controllers/QUICClient.js +3 -3
  201. package/dist/src/controllers/QUICClient.js.map +1 -1
  202. package/dist/src/controllers/QUICServer.d.ts +4 -4
  203. package/dist/src/controllers/QUICServer.d.ts.map +1 -1
  204. package/dist/src/controllers/QUICServer.js +14 -22
  205. package/dist/src/controllers/QUICServer.js.map +1 -1
  206. package/dist/src/controllers/ReasoningBank.d.ts +2 -9
  207. package/dist/src/controllers/ReasoningBank.d.ts.map +1 -1
  208. package/dist/src/controllers/ReasoningBank.js +39 -35
  209. package/dist/src/controllers/ReasoningBank.js.map +1 -1
  210. package/dist/src/controllers/ReflexionMemory.d.ts +51 -1
  211. package/dist/src/controllers/ReflexionMemory.d.ts.map +1 -1
  212. package/dist/src/controllers/ReflexionMemory.js +307 -33
  213. package/dist/src/controllers/ReflexionMemory.js.map +1 -1
  214. package/dist/src/controllers/SkillLibrary.d.ts +5 -11
  215. package/dist/src/controllers/SkillLibrary.d.ts.map +1 -1
  216. package/dist/src/controllers/SkillLibrary.js +39 -48
  217. package/dist/src/controllers/SkillLibrary.js.map +1 -1
  218. package/dist/src/controllers/SparsificationService.d.ts +151 -0
  219. package/dist/src/controllers/SparsificationService.d.ts.map +1 -0
  220. package/dist/src/controllers/SparsificationService.js +375 -0
  221. package/dist/src/controllers/SparsificationService.js.map +1 -0
  222. package/dist/src/controllers/SyncCoordinator.d.ts +3 -2
  223. package/dist/src/controllers/SyncCoordinator.d.ts.map +1 -1
  224. package/dist/src/controllers/SyncCoordinator.js +2 -2
  225. package/dist/src/controllers/SyncCoordinator.js.map +1 -1
  226. package/dist/src/controllers/WASMVectorSearch.d.ts +7 -6
  227. package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
  228. package/dist/src/controllers/WASMVectorSearch.js +2 -4
  229. package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
  230. package/dist/src/controllers/attention/AttentionCache.d.ts +38 -0
  231. package/dist/src/controllers/attention/AttentionCache.d.ts.map +1 -0
  232. package/dist/src/controllers/attention/AttentionCache.js +80 -0
  233. package/dist/src/controllers/attention/AttentionCache.js.map +1 -0
  234. package/dist/src/controllers/attention/AttentionConfig.d.ts +127 -0
  235. package/dist/src/controllers/attention/AttentionConfig.d.ts.map +1 -0
  236. package/dist/src/controllers/attention/AttentionConfig.js +124 -0
  237. package/dist/src/controllers/attention/AttentionConfig.js.map +1 -0
  238. package/dist/src/controllers/attention/AttentionCore.d.ts +89 -0
  239. package/dist/src/controllers/attention/AttentionCore.d.ts.map +1 -0
  240. package/dist/src/controllers/attention/AttentionCore.js +289 -0
  241. package/dist/src/controllers/attention/AttentionCore.js.map +1 -0
  242. package/dist/src/controllers/attention/AttentionHelpers.d.ts +55 -0
  243. package/dist/src/controllers/attention/AttentionHelpers.d.ts.map +1 -0
  244. package/dist/src/controllers/attention/AttentionHelpers.js +148 -0
  245. package/dist/src/controllers/attention/AttentionHelpers.js.map +1 -0
  246. package/dist/src/controllers/attention/AttentionMetrics.d.ts +55 -0
  247. package/dist/src/controllers/attention/AttentionMetrics.d.ts.map +1 -0
  248. package/dist/src/controllers/attention/AttentionMetrics.js +72 -0
  249. package/dist/src/controllers/attention/AttentionMetrics.js.map +1 -0
  250. package/dist/src/controllers/attention/AttentionWASM.d.ts +98 -0
  251. package/dist/src/controllers/attention/AttentionWASM.d.ts.map +1 -0
  252. package/dist/src/controllers/attention/AttentionWASM.js +147 -0
  253. package/dist/src/controllers/attention/AttentionWASM.js.map +1 -0
  254. package/dist/src/controllers/attention/CrossAttentionController.d.ts +1 -1
  255. package/dist/src/controllers/attention/CrossAttentionController.d.ts.map +1 -1
  256. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts +1 -1
  257. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts.map +1 -1
  258. package/dist/src/controllers/attention/MultiHeadAttentionController.js +5 -8
  259. package/dist/src/controllers/attention/MultiHeadAttentionController.js.map +1 -1
  260. package/dist/src/controllers/attention/SelfAttentionController.d.ts +1 -1
  261. package/dist/src/controllers/attention/SelfAttentionController.d.ts.map +1 -1
  262. package/dist/src/controllers/attention/index.d.ts +9 -0
  263. package/dist/src/controllers/attention/index.d.ts.map +1 -1
  264. package/dist/src/controllers/attention/index.js +8 -0
  265. package/dist/src/controllers/attention/index.js.map +1 -1
  266. package/dist/src/controllers/frontier-index.d.ts +14 -0
  267. package/dist/src/controllers/frontier-index.d.ts.map +1 -0
  268. package/dist/src/controllers/frontier-index.js +10 -0
  269. package/dist/src/controllers/frontier-index.js.map +1 -0
  270. package/dist/src/controllers/index.d.ts +7 -1
  271. package/dist/src/controllers/index.d.ts.map +1 -1
  272. package/dist/src/controllers/index.js +5 -1
  273. package/dist/src/controllers/index.js.map +1 -1
  274. package/dist/src/controllers/prerequisites.d.ts +76 -0
  275. package/dist/src/controllers/prerequisites.d.ts.map +1 -0
  276. package/dist/src/controllers/prerequisites.js +235 -0
  277. package/dist/src/controllers/prerequisites.js.map +1 -0
  278. package/dist/src/core/AgentDB.d.ts +11 -36
  279. package/dist/src/core/AgentDB.d.ts.map +1 -1
  280. package/dist/src/core/AgentDB.js +31 -89
  281. package/dist/src/core/AgentDB.js.map +1 -1
  282. package/dist/src/core/QueryCache.d.ts +1 -1
  283. package/dist/src/core/QueryCache.d.ts.map +1 -1
  284. package/dist/src/core/QueryCache.js +2 -6
  285. package/dist/src/core/QueryCache.js.map +1 -1
  286. package/dist/src/db-fallback.d.ts +40 -3
  287. package/dist/src/db-fallback.d.ts.map +1 -1
  288. package/dist/src/db-fallback.js +308 -84
  289. package/dist/src/db-fallback.js.map +1 -1
  290. package/dist/src/db-test.d.ts +13 -0
  291. package/dist/src/db-test.d.ts.map +1 -0
  292. package/dist/src/db-test.js +55 -0
  293. package/dist/src/db-test.js.map +1 -0
  294. package/dist/src/db-unified.d.ts +76 -0
  295. package/dist/src/db-unified.d.ts.map +1 -0
  296. package/dist/src/db-unified.js +281 -0
  297. package/dist/src/db-unified.js.map +1 -0
  298. package/dist/src/embedding/EmbeddingSpaceIdentity.d.ts +58 -0
  299. package/dist/src/embedding/EmbeddingSpaceIdentity.d.ts.map +1 -0
  300. package/dist/src/embedding/EmbeddingSpaceIdentity.js +137 -0
  301. package/dist/src/embedding/EmbeddingSpaceIdentity.js.map +1 -0
  302. package/dist/src/embedding/index.d.ts +3 -0
  303. package/dist/src/embedding/index.d.ts.map +1 -0
  304. package/dist/src/embedding/index.js +2 -0
  305. package/dist/src/embedding/index.js.map +1 -0
  306. package/dist/src/examples/quic-sync-example.d.ts +9 -0
  307. package/dist/src/examples/quic-sync-example.d.ts.map +1 -0
  308. package/dist/src/examples/quic-sync-example.js +169 -0
  309. package/dist/src/examples/quic-sync-example.js.map +1 -0
  310. package/dist/src/examples/wasm-vector-usage.d.ts +12 -0
  311. package/dist/src/examples/wasm-vector-usage.d.ts.map +1 -0
  312. package/dist/src/examples/wasm-vector-usage.js +190 -0
  313. package/dist/src/examples/wasm-vector-usage.js.map +1 -0
  314. package/dist/src/governance/MetaHarnessGateway.d.ts +55 -0
  315. package/dist/src/governance/MetaHarnessGateway.d.ts.map +1 -0
  316. package/dist/src/governance/MetaHarnessGateway.js +65 -0
  317. package/dist/src/governance/MetaHarnessGateway.js.map +1 -0
  318. package/dist/src/governance/RvfExperimentBranch.d.ts +65 -0
  319. package/dist/src/governance/RvfExperimentBranch.d.ts.map +1 -0
  320. package/dist/src/governance/RvfExperimentBranch.js +115 -0
  321. package/dist/src/governance/RvfExperimentBranch.js.map +1 -0
  322. package/dist/src/index.d.ts +7 -25
  323. package/dist/src/index.d.ts.map +1 -1
  324. package/dist/src/index.js +9 -10
  325. package/dist/src/index.js.map +1 -1
  326. package/dist/src/mcp/agentdb-mcp-server.js +162 -159
  327. package/dist/src/mcp/agentdb-mcp-server.js.map +1 -1
  328. package/dist/src/mcp/learning-tools-handlers.d.ts +16 -0
  329. package/dist/src/mcp/learning-tools-handlers.d.ts.map +1 -0
  330. package/dist/src/mcp/learning-tools-handlers.js +105 -0
  331. package/dist/src/mcp/learning-tools-handlers.js.map +1 -0
  332. package/dist/src/model/ModelCacheLoader.d.ts +24 -0
  333. package/dist/src/model/ModelCacheLoader.d.ts.map +1 -0
  334. package/dist/src/model/ModelCacheLoader.js +123 -0
  335. package/dist/src/model/ModelCacheLoader.js.map +1 -0
  336. package/dist/src/observability/integration.d.ts +3 -3
  337. package/dist/src/observability/integration.d.ts.map +1 -1
  338. package/dist/src/observability/integration.js +2 -0
  339. package/dist/src/observability/integration.js.map +1 -1
  340. package/dist/src/observability/telemetry.d.ts +3 -3
  341. package/dist/src/observability/telemetry.d.ts.map +1 -1
  342. package/dist/src/observability/telemetry.js +3 -5
  343. package/dist/src/observability/telemetry.js.map +1 -1
  344. package/dist/src/optimizations/BatchOperations.d.ts +6 -6
  345. package/dist/src/optimizations/BatchOperations.d.ts.map +1 -1
  346. package/dist/src/optimizations/BatchOperations.js +6 -5
  347. package/dist/src/optimizations/BatchOperations.js.map +1 -1
  348. package/dist/src/optimizations/Quantization.d.ts +330 -0
  349. package/dist/src/optimizations/Quantization.d.ts.map +1 -0
  350. package/dist/src/optimizations/Quantization.js +793 -0
  351. package/dist/src/optimizations/Quantization.js.map +1 -0
  352. package/dist/src/optimizations/QueryOptimizer.d.ts +4 -4
  353. package/dist/src/optimizations/QueryOptimizer.d.ts.map +1 -1
  354. package/dist/src/optimizations/QueryOptimizer.js +1 -3
  355. package/dist/src/optimizations/QueryOptimizer.js.map +1 -1
  356. package/dist/src/optimizations/ToolCache.d.ts +4 -4
  357. package/dist/src/optimizations/ToolCache.d.ts.map +1 -1
  358. package/dist/src/optimizations/ToolCache.js.map +1 -1
  359. package/dist/src/quantization/vector-quantization.d.ts.map +1 -1
  360. package/dist/src/quantization/vector-quantization.js +1 -5
  361. package/dist/src/quantization/vector-quantization.js.map +1 -1
  362. package/dist/src/schemas/inline.d.ts +3 -0
  363. package/dist/src/schemas/inline.d.ts.map +1 -0
  364. package/dist/src/schemas/inline.js +10 -0
  365. package/dist/src/schemas/inline.js.map +1 -0
  366. package/dist/src/search/HybridSearch.d.ts +6 -6
  367. package/dist/src/search/HybridSearch.d.ts.map +1 -1
  368. package/dist/src/search/HybridSearch.js.map +1 -1
  369. package/dist/src/security/input-validation.d.ts +34 -12
  370. package/dist/src/security/input-validation.d.ts.map +1 -1
  371. package/dist/src/security/input-validation.js +46 -1
  372. package/dist/src/security/input-validation.js.map +1 -1
  373. package/dist/src/security/limits.d.ts +150 -0
  374. package/dist/src/security/limits.d.ts.map +1 -0
  375. package/dist/src/security/limits.js +288 -0
  376. package/dist/src/security/limits.js.map +1 -0
  377. package/dist/src/security/mcp-policy.d.ts +13 -0
  378. package/dist/src/security/mcp-policy.d.ts.map +1 -0
  379. package/dist/src/security/mcp-policy.js +66 -0
  380. package/dist/src/security/mcp-policy.js.map +1 -0
  381. package/dist/src/security/path-security.d.ts +100 -0
  382. package/dist/src/security/path-security.d.ts.map +1 -0
  383. package/dist/src/security/path-security.js +339 -0
  384. package/dist/src/security/path-security.js.map +1 -0
  385. package/dist/src/security/validation.d.ts +95 -0
  386. package/dist/src/security/validation.d.ts.map +1 -0
  387. package/dist/src/security/validation.js +315 -0
  388. package/dist/src/security/validation.js.map +1 -0
  389. package/dist/src/services/AttentionService.d.ts.map +1 -1
  390. package/dist/src/services/AttentionService.js +2 -4
  391. package/dist/src/services/AttentionService.js.map +1 -1
  392. package/dist/src/services/LLMRouter.d.ts +2 -2
  393. package/dist/src/services/LLMRouter.d.ts.map +1 -1
  394. package/dist/src/services/LLMRouter.js +3 -9
  395. package/dist/src/services/LLMRouter.js.map +1 -1
  396. package/dist/src/services/audit-logger.service.d.ts +168 -0
  397. package/dist/src/services/audit-logger.service.d.ts.map +1 -0
  398. package/dist/src/services/audit-logger.service.js +331 -0
  399. package/dist/src/services/audit-logger.service.js.map +1 -0
  400. package/dist/src/services/enhanced-embeddings.d.ts +271 -0
  401. package/dist/src/services/enhanced-embeddings.d.ts.map +1 -0
  402. package/dist/src/services/enhanced-embeddings.js +1035 -0
  403. package/dist/src/services/enhanced-embeddings.js.map +1 -0
  404. package/dist/src/services/federated-learning.d.ts +172 -0
  405. package/dist/src/services/federated-learning.d.ts.map +1 -0
  406. package/dist/src/services/federated-learning.js +342 -0
  407. package/dist/src/services/federated-learning.js.map +1 -0
  408. package/dist/src/simd/simd-vector-ops.d.ts.map +1 -1
  409. package/dist/src/simd/simd-vector-ops.js +0 -2
  410. package/dist/src/simd/simd-vector-ops.js.map +1 -1
  411. package/dist/src/types/attention.d.ts +249 -0
  412. package/dist/src/types/attention.d.ts.map +1 -0
  413. package/dist/src/types/attention.js +43 -0
  414. package/dist/src/types/attention.js.map +1 -0
  415. package/dist/src/types/database.types.d.ts +11 -11
  416. package/dist/src/types/database.types.d.ts.map +1 -1
  417. package/dist/src/types/database.types.js +2 -4
  418. package/dist/src/types/database.types.js.map +1 -1
  419. package/dist/src/types/graph.d.ts +29 -0
  420. package/dist/src/types/graph.d.ts.map +1 -0
  421. package/dist/src/types/graph.js +8 -0
  422. package/dist/src/types/graph.js.map +1 -0
  423. package/dist/src/types/quic.d.ts +518 -0
  424. package/dist/src/types/quic.d.ts.map +1 -0
  425. package/dist/src/types/quic.js +272 -0
  426. package/dist/src/types/quic.js.map +1 -0
  427. package/dist/src/utils/attention-metrics.d.ts +76 -0
  428. package/dist/src/utils/attention-metrics.d.ts.map +1 -0
  429. package/dist/src/utils/attention-metrics.js +178 -0
  430. package/dist/src/utils/attention-metrics.js.map +1 -0
  431. package/dist/src/wasm-loader.d.ts +0 -1
  432. package/dist/src/wasm-loader.d.ts.map +1 -1
  433. package/dist/src/wasm-loader.js +0 -2
  434. package/dist/src/wasm-loader.js.map +1 -1
  435. package/dist/src/wrappers/agentdb-fast.d.ts +5 -4
  436. package/dist/src/wrappers/agentdb-fast.d.ts.map +1 -1
  437. package/dist/src/wrappers/agentdb-fast.js +6 -13
  438. package/dist/src/wrappers/agentdb-fast.js.map +1 -1
  439. package/dist/src/wrappers/attention-fallbacks.d.ts +0 -8
  440. package/dist/src/wrappers/attention-fallbacks.d.ts.map +1 -1
  441. package/dist/src/wrappers/attention-fallbacks.js +3 -6
  442. package/dist/src/wrappers/attention-fallbacks.js.map +1 -1
  443. package/dist/src/wrappers/attention-native.d.ts +111 -0
  444. package/dist/src/wrappers/attention-native.d.ts.map +1 -0
  445. package/dist/src/wrappers/attention-native.js +273 -0
  446. package/dist/src/wrappers/attention-native.js.map +1 -0
  447. package/dist/src/wrappers/embedding-service.d.ts +4 -4
  448. package/dist/src/wrappers/embedding-service.d.ts.map +1 -1
  449. package/dist/src/wrappers/embedding-service.js +2 -8
  450. package/dist/src/wrappers/embedding-service.js.map +1 -1
  451. package/dist/src/wrappers/gnn-wrapper.d.ts.map +1 -1
  452. package/dist/src/wrappers/gnn-wrapper.js +3 -7
  453. package/dist/src/wrappers/gnn-wrapper.js.map +1 -1
  454. package/package.json +87 -18
  455. package/scripts/postinstall.cjs +13 -144
  456. package/dist/src/cli/tests/agentdb-cli.test.d.ts +0 -8
  457. package/dist/src/cli/tests/agentdb-cli.test.d.ts.map +0 -1
  458. package/dist/src/cli/tests/agentdb-cli.test.js +0 -50
  459. package/dist/src/cli/tests/agentdb-cli.test.js.map +0 -1
  460. package/dist/src/cli/tests/attention-cli.test.d.ts +0 -5
  461. package/dist/src/cli/tests/attention-cli.test.d.ts.map +0 -1
  462. package/dist/src/cli/tests/attention-cli.test.js +0 -257
  463. package/dist/src/cli/tests/attention-cli.test.js.map +0 -1
  464. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +0 -348
  465. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +0 -1
  466. package/dist/src/coordination/MultiDatabaseCoordinator.js +0 -803
  467. package/dist/src/coordination/MultiDatabaseCoordinator.js.map +0 -1
  468. package/dist/src/coordination/index.d.ts +0 -10
  469. package/dist/src/coordination/index.d.ts.map +0 -1
  470. package/dist/src/coordination/index.js +0 -10
  471. package/dist/src/coordination/index.js.map +0 -1
  472. package/dist/src/tests/attention-service.test.d.ts +0 -7
  473. package/dist/src/tests/attention-service.test.d.ts.map +0 -1
  474. package/dist/src/tests/attention-service.test.js +0 -401
  475. package/dist/src/tests/attention-service.test.js.map +0 -1
  476. package/dist/src/tests/integration/compatibility/backwards-compat.integration.test.d.ts +0 -7
  477. package/dist/src/tests/integration/compatibility/backwards-compat.integration.test.d.ts.map +0 -1
  478. package/dist/src/tests/integration/compatibility/backwards-compat.integration.test.js +0 -283
  479. package/dist/src/tests/integration/compatibility/backwards-compat.integration.test.js.map +0 -1
  480. package/dist/src/tests/query-cache.test.d.ts +0 -7
  481. package/dist/src/tests/query-cache.test.d.ts.map +0 -1
  482. package/dist/src/tests/query-cache.test.js +0 -343
  483. package/dist/src/tests/query-cache.test.js.map +0 -1
  484. package/dist/src/tests/ruvector-integration.test.d.ts +0 -14
  485. package/dist/src/tests/ruvector-integration.test.d.ts.map +0 -1
  486. package/dist/src/tests/ruvector-integration.test.js +0 -1156
  487. package/dist/src/tests/ruvector-integration.test.js.map +0 -1
  488. package/dist/src/tests/unit/auth/crypto.utils.test.d.ts +0 -6
  489. package/dist/src/tests/unit/auth/crypto.utils.test.d.ts.map +0 -1
  490. package/dist/src/tests/unit/auth/crypto.utils.test.js +0 -310
  491. package/dist/src/tests/unit/auth/crypto.utils.test.js.map +0 -1
  492. package/dist/src/tests/unit/compatibility/deprecation-warnings.test.d.ts +0 -5
  493. package/dist/src/tests/unit/compatibility/deprecation-warnings.test.d.ts.map +0 -1
  494. package/dist/src/tests/unit/compatibility/deprecation-warnings.test.js +0 -207
  495. package/dist/src/tests/unit/compatibility/deprecation-warnings.test.js.map +0 -1
  496. package/dist/src/tests/unit/compatibility/migration-utils.test.d.ts +0 -5
  497. package/dist/src/tests/unit/compatibility/migration-utils.test.d.ts.map +0 -1
  498. package/dist/src/tests/unit/compatibility/migration-utils.test.js +0 -264
  499. package/dist/src/tests/unit/compatibility/migration-utils.test.js.map +0 -1
  500. package/dist/src/tests/unit/compatibility/v1-adapter.test.d.ts +0 -7
  501. package/dist/src/tests/unit/compatibility/v1-adapter.test.d.ts.map +0 -1
  502. package/dist/src/tests/unit/compatibility/v1-adapter.test.js +0 -228
  503. package/dist/src/tests/unit/compatibility/v1-adapter.test.js.map +0 -1
  504. package/dist/src/tests/unit/compatibility/version-detector.test.d.ts +0 -10
  505. package/dist/src/tests/unit/compatibility/version-detector.test.d.ts.map +0 -1
  506. package/dist/src/tests/unit/compatibility/version-detector.test.js +0 -162
  507. package/dist/src/tests/unit/compatibility/version-detector.test.js.map +0 -1
  508. package/dist/src/tests/vector-quantization.test.d.ts +0 -5
  509. package/dist/src/tests/vector-quantization.test.d.ts.map +0 -1
  510. package/dist/src/tests/vector-quantization.test.js +0 -338
  511. package/dist/src/tests/vector-quantization.test.js.map +0 -1
  512. package/dist/src/tests/wasm-vector-search.test.d.ts +0 -7
  513. package/dist/src/tests/wasm-vector-search.test.d.ts.map +0 -1
  514. package/dist/src/tests/wasm-vector-search.test.js +0 -193
  515. package/dist/src/tests/wasm-vector-search.test.js.map +0 -1
  516. package/dist/src/utils/crypto.utils.d.ts +0 -122
  517. package/dist/src/utils/crypto.utils.d.ts.map +0 -1
  518. package/dist/src/utils/crypto.utils.js +0 -296
  519. package/dist/src/utils/crypto.utils.js.map +0 -1
@@ -0,0 +1,150 @@
1
+ /**
2
+ * AgentDB v2 Resource Limit Enforcement
3
+ *
4
+ * Prevents denial of service attacks by enforcing:
5
+ * - Memory usage limits
6
+ * - Query timeouts
7
+ * - Rate limiting
8
+ * - Resource caps
9
+ */
10
+ /**
11
+ * Resource usage tracker
12
+ */
13
+ export declare class ResourceTracker {
14
+ private memoryUsageMB;
15
+ private queryCount;
16
+ private lastQueryTime;
17
+ private queryTimes;
18
+ private readonly startTime;
19
+ /**
20
+ * Update memory usage estimate
21
+ */
22
+ updateMemoryUsage(additionalMB: number): void;
23
+ /**
24
+ * Estimate memory for vectors
25
+ */
26
+ estimateVectorMemory(numVectors: number, dimension: number): number;
27
+ /**
28
+ * Record query execution
29
+ */
30
+ recordQuery(durationMs: number): void;
31
+ /**
32
+ * Get resource usage statistics
33
+ */
34
+ getStats(): ResourceStats;
35
+ /**
36
+ * Reset tracker
37
+ */
38
+ reset(): void;
39
+ }
40
+ /**
41
+ * Resource statistics interface
42
+ */
43
+ export interface ResourceStats {
44
+ memoryUsageMB: number;
45
+ memoryLimitMB: number;
46
+ memoryUtilization: number;
47
+ queryCount: number;
48
+ avgQueryTimeMs: number;
49
+ uptimeSeconds: number;
50
+ queriesPerSecond: number;
51
+ }
52
+ /**
53
+ * Query timeout wrapper
54
+ */
55
+ export declare function withTimeout<T>(promise: Promise<T>, timeoutMs?: number, operation?: string): Promise<T>;
56
+ /**
57
+ * Rate limiter using token bucket algorithm
58
+ */
59
+ export declare class RateLimiter {
60
+ private maxTokens;
61
+ private refillRate;
62
+ private tokens;
63
+ private lastRefill;
64
+ constructor(maxTokens: number, refillRate: number);
65
+ /**
66
+ * Attempt to consume tokens
67
+ * @returns true if allowed, false if rate limited
68
+ */
69
+ tryConsume(tokens?: number): boolean;
70
+ /**
71
+ * Consume tokens or throw error
72
+ */
73
+ consume(tokens?: number, operation?: string): void;
74
+ /**
75
+ * Refill tokens based on time elapsed
76
+ */
77
+ private refill;
78
+ /**
79
+ * Get current token count
80
+ */
81
+ getTokens(): number;
82
+ /**
83
+ * Reset limiter
84
+ */
85
+ reset(): void;
86
+ }
87
+ /**
88
+ * Security error class
89
+ */
90
+ export declare class SecurityError extends Error {
91
+ readonly code: string;
92
+ constructor(message: string, code: string);
93
+ /**
94
+ * Get safe error message for external consumption
95
+ */
96
+ getSafeMessage(): string;
97
+ }
98
+ /**
99
+ * Enforce resource limits on batch operations
100
+ */
101
+ export declare function enforceBatchLimits(batchSize: number, dimension: number, tracker: ResourceTracker): void;
102
+ /**
103
+ * Circuit breaker for fault tolerance
104
+ */
105
+ export declare class CircuitBreaker {
106
+ private maxFailures;
107
+ private resetTimeoutMs;
108
+ private failures;
109
+ private lastFailureTime;
110
+ private state;
111
+ constructor(maxFailures?: number, resetTimeoutMs?: number);
112
+ /**
113
+ * Execute operation with circuit breaker protection
114
+ */
115
+ execute<T>(operation: () => Promise<T>, operationName?: string): Promise<T>;
116
+ /**
117
+ * Record a failure
118
+ */
119
+ private recordFailure;
120
+ /**
121
+ * Get circuit breaker status
122
+ */
123
+ getStatus(): {
124
+ state: string;
125
+ failures: number;
126
+ lastFailure?: number;
127
+ };
128
+ /**
129
+ * Manually reset circuit breaker
130
+ */
131
+ reset(): void;
132
+ }
133
+ /**
134
+ * Global resource tracker instance
135
+ */
136
+ export declare const globalResourceTracker: ResourceTracker;
137
+ /**
138
+ * Default rate limiters
139
+ */
140
+ export declare const rateLimiters: {
141
+ insert: RateLimiter;
142
+ search: RateLimiter;
143
+ delete: RateLimiter;
144
+ batch: RateLimiter;
145
+ };
146
+ /**
147
+ * Monitor and log resource usage
148
+ */
149
+ export declare function logResourceUsage(): void;
150
+ //# sourceMappingURL=limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../../src/security/limits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,288 @@
1
+ /**
2
+ * AgentDB v2 Resource Limit Enforcement
3
+ *
4
+ * Prevents denial of service attacks by enforcing:
5
+ * - Memory usage limits
6
+ * - Query timeouts
7
+ * - Rate limiting
8
+ * - Resource caps
9
+ */
10
+ import { SECURITY_LIMITS } from './validation.js';
11
+ /**
12
+ * Resource usage tracker
13
+ */
14
+ export class ResourceTracker {
15
+ memoryUsageMB = 0;
16
+ queryCount = 0;
17
+ lastQueryTime = Date.now();
18
+ queryTimes = [];
19
+ startTime = Date.now();
20
+ /**
21
+ * Update memory usage estimate
22
+ */
23
+ updateMemoryUsage(additionalMB) {
24
+ this.memoryUsageMB += additionalMB;
25
+ if (this.memoryUsageMB > SECURITY_LIMITS.MAX_MEMORY_MB) {
26
+ throw new SecurityError(`Memory limit exceeded: ${this.memoryUsageMB.toFixed(2)}MB > ${SECURITY_LIMITS.MAX_MEMORY_MB}MB`, 'MEMORY_LIMIT_EXCEEDED');
27
+ }
28
+ }
29
+ /**
30
+ * Estimate memory for vectors
31
+ */
32
+ estimateVectorMemory(numVectors, dimension) {
33
+ // Float32Array: 4 bytes per value
34
+ // Plus overhead for object structure and metadata (~25%)
35
+ const bytesPerVector = dimension * 4 * 1.25;
36
+ const totalBytes = numVectors * bytesPerVector;
37
+ return totalBytes / (1024 * 1024); // Convert to MB
38
+ }
39
+ /**
40
+ * Record query execution
41
+ */
42
+ recordQuery(durationMs) {
43
+ this.queryCount++;
44
+ this.lastQueryTime = Date.now();
45
+ this.queryTimes.push(durationMs);
46
+ // Keep only last 100 query times for stats
47
+ if (this.queryTimes.length > 100) {
48
+ this.queryTimes.shift();
49
+ }
50
+ }
51
+ /**
52
+ * Get resource usage statistics
53
+ */
54
+ getStats() {
55
+ const avgQueryTime = this.queryTimes.length > 0
56
+ ? this.queryTimes.reduce((a, b) => a + b, 0) / this.queryTimes.length
57
+ : 0;
58
+ const uptimeSeconds = (Date.now() - this.startTime) / 1000;
59
+ return {
60
+ memoryUsageMB: this.memoryUsageMB,
61
+ memoryLimitMB: SECURITY_LIMITS.MAX_MEMORY_MB,
62
+ memoryUtilization: (this.memoryUsageMB / SECURITY_LIMITS.MAX_MEMORY_MB) * 100,
63
+ queryCount: this.queryCount,
64
+ avgQueryTimeMs: avgQueryTime,
65
+ uptimeSeconds,
66
+ queriesPerSecond: this.queryCount / uptimeSeconds,
67
+ };
68
+ }
69
+ /**
70
+ * Reset tracker
71
+ */
72
+ reset() {
73
+ this.memoryUsageMB = 0;
74
+ this.queryCount = 0;
75
+ this.queryTimes = [];
76
+ }
77
+ }
78
+ /**
79
+ * Query timeout wrapper
80
+ */
81
+ export async function withTimeout(promise, timeoutMs = SECURITY_LIMITS.QUERY_TIMEOUT_MS, operation = 'operation') {
82
+ const timeout = new Promise((_, reject) => {
83
+ setTimeout(() => {
84
+ reject(new SecurityError(`${operation} timeout after ${timeoutMs}ms`, 'QUERY_TIMEOUT'));
85
+ }, timeoutMs);
86
+ });
87
+ return Promise.race([promise, timeout]);
88
+ }
89
+ /**
90
+ * Rate limiter using token bucket algorithm
91
+ */
92
+ export class RateLimiter {
93
+ maxTokens;
94
+ refillRate;
95
+ tokens;
96
+ lastRefill;
97
+ constructor(maxTokens, refillRate) {
98
+ this.maxTokens = maxTokens;
99
+ this.refillRate = refillRate;
100
+ this.tokens = maxTokens;
101
+ this.lastRefill = Date.now();
102
+ }
103
+ /**
104
+ * Attempt to consume tokens
105
+ * @returns true if allowed, false if rate limited
106
+ */
107
+ tryConsume(tokens = 1) {
108
+ this.refill();
109
+ if (this.tokens >= tokens) {
110
+ this.tokens -= tokens;
111
+ return true;
112
+ }
113
+ return false;
114
+ }
115
+ /**
116
+ * Consume tokens or throw error
117
+ */
118
+ consume(tokens = 1, operation = 'operation') {
119
+ if (!this.tryConsume(tokens)) {
120
+ throw new SecurityError(`Rate limit exceeded for ${operation}. Try again later.`, 'RATE_LIMIT_EXCEEDED');
121
+ }
122
+ }
123
+ /**
124
+ * Refill tokens based on time elapsed
125
+ */
126
+ refill() {
127
+ const now = Date.now();
128
+ const elapsed = (now - this.lastRefill) / 1000; // seconds
129
+ const tokensToAdd = elapsed * this.refillRate;
130
+ this.tokens = Math.min(this.maxTokens, this.tokens + tokensToAdd);
131
+ this.lastRefill = now;
132
+ }
133
+ /**
134
+ * Get current token count
135
+ */
136
+ getTokens() {
137
+ this.refill();
138
+ return this.tokens;
139
+ }
140
+ /**
141
+ * Reset limiter
142
+ */
143
+ reset() {
144
+ this.tokens = this.maxTokens;
145
+ this.lastRefill = Date.now();
146
+ }
147
+ }
148
+ /**
149
+ * Security error class
150
+ */
151
+ export class SecurityError extends Error {
152
+ code;
153
+ constructor(message, code) {
154
+ super(message);
155
+ this.code = code;
156
+ this.name = 'SecurityError';
157
+ }
158
+ /**
159
+ * Get safe error message for external consumption
160
+ */
161
+ getSafeMessage() {
162
+ // Don't expose internal details in production
163
+ return 'A security constraint was violated. Please check your request.';
164
+ }
165
+ }
166
+ /**
167
+ * Enforce resource limits on batch operations
168
+ */
169
+ export function enforceBatchLimits(batchSize, dimension, tracker) {
170
+ // Check batch size
171
+ if (batchSize > SECURITY_LIMITS.MAX_BATCH_SIZE) {
172
+ throw new SecurityError(`Batch size ${batchSize} exceeds limit ${SECURITY_LIMITS.MAX_BATCH_SIZE}`, 'BATCH_TOO_LARGE');
173
+ }
174
+ // Estimate and check memory
175
+ const estimatedMemoryMB = tracker.estimateVectorMemory(batchSize, dimension);
176
+ if (estimatedMemoryMB > SECURITY_LIMITS.MAX_MEMORY_MB * 0.5) {
177
+ throw new SecurityError(`Batch operation would use ${estimatedMemoryMB.toFixed(2)}MB (>50% of limit)`, 'BATCH_MEMORY_EXCESSIVE');
178
+ }
179
+ tracker.updateMemoryUsage(estimatedMemoryMB);
180
+ }
181
+ /**
182
+ * Circuit breaker for fault tolerance
183
+ */
184
+ export class CircuitBreaker {
185
+ maxFailures;
186
+ resetTimeoutMs;
187
+ failures = 0;
188
+ lastFailureTime = 0;
189
+ state = 'closed';
190
+ constructor(maxFailures = 5, resetTimeoutMs = 60000) {
191
+ this.maxFailures = maxFailures;
192
+ this.resetTimeoutMs = resetTimeoutMs;
193
+ }
194
+ /**
195
+ * Execute operation with circuit breaker protection
196
+ */
197
+ async execute(operation, operationName = 'operation') {
198
+ if (this.state === 'open') {
199
+ const timeSinceFailure = Date.now() - this.lastFailureTime;
200
+ if (timeSinceFailure > this.resetTimeoutMs) {
201
+ this.state = 'half-open';
202
+ }
203
+ else {
204
+ throw new SecurityError(`Circuit breaker open for ${operationName}. Service temporarily unavailable.`, 'CIRCUIT_BREAKER_OPEN');
205
+ }
206
+ }
207
+ try {
208
+ const result = await operation();
209
+ // Success - reset on half-open or keep closed
210
+ if (this.state === 'half-open') {
211
+ this.state = 'closed';
212
+ this.failures = 0;
213
+ }
214
+ return result;
215
+ }
216
+ catch (error) {
217
+ this.recordFailure();
218
+ throw error;
219
+ }
220
+ }
221
+ /**
222
+ * Record a failure
223
+ */
224
+ recordFailure() {
225
+ this.failures++;
226
+ this.lastFailureTime = Date.now();
227
+ if (this.failures >= this.maxFailures) {
228
+ this.state = 'open';
229
+ console.error(`[CircuitBreaker] Opened after ${this.failures} failures`);
230
+ }
231
+ }
232
+ /**
233
+ * Get circuit breaker status
234
+ */
235
+ getStatus() {
236
+ return {
237
+ state: this.state,
238
+ failures: this.failures,
239
+ lastFailure: this.lastFailureTime || undefined,
240
+ };
241
+ }
242
+ /**
243
+ * Manually reset circuit breaker
244
+ */
245
+ reset() {
246
+ this.state = 'closed';
247
+ this.failures = 0;
248
+ this.lastFailureTime = 0;
249
+ }
250
+ }
251
+ /**
252
+ * Global resource tracker instance
253
+ */
254
+ export const globalResourceTracker = new ResourceTracker();
255
+ /**
256
+ * Default rate limiters
257
+ */
258
+ export const rateLimiters = {
259
+ // 100 inserts per second
260
+ insert: new RateLimiter(100, 100),
261
+ // 1000 searches per second
262
+ search: new RateLimiter(1000, 1000),
263
+ // 50 deletes per second
264
+ delete: new RateLimiter(50, 50),
265
+ // 10 batch operations per second
266
+ batch: new RateLimiter(10, 10),
267
+ };
268
+ /**
269
+ * Monitor and log resource usage
270
+ */
271
+ export function logResourceUsage() {
272
+ const stats = globalResourceTracker.getStats();
273
+ console.log('[ResourceMonitor]', {
274
+ memory: `${stats.memoryUsageMB.toFixed(2)}MB / ${stats.memoryLimitMB}MB (${stats.memoryUtilization.toFixed(1)}%)`,
275
+ queries: stats.queryCount,
276
+ avgQueryTime: `${stats.avgQueryTimeMs.toFixed(2)}ms`,
277
+ qps: stats.queriesPerSecond.toFixed(2),
278
+ uptime: `${stats.uptimeSeconds.toFixed(0)}s`,
279
+ });
280
+ // Warn if approaching limits
281
+ if (stats.memoryUtilization > 80) {
282
+ console.warn('[ResourceMonitor] WARNING: Memory usage above 80%');
283
+ }
284
+ if (stats.avgQueryTimeMs > SECURITY_LIMITS.QUERY_TIMEOUT_MS * 0.5) {
285
+ console.warn('[ResourceMonitor] WARNING: Average query time approaching timeout');
286
+ }
287
+ }
288
+ //# sourceMappingURL=limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limits.js","sourceRoot":"","sources":["../../../src/security/limits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type AgentDbMcpProfile = 'readonly' | 'retrieval' | 'learning' | 'admin';
2
+ export interface McpToolPolicy {
3
+ profile: AgentDbMcpProfile | null;
4
+ allow: Set<string> | null;
5
+ deny: Set<string>;
6
+ configured: boolean;
7
+ }
8
+ export declare function buildMcpToolPolicy(env?: Record<string, string | undefined>): McpToolPolicy;
9
+ export declare function isMcpToolAllowed(name: string, policy: McpToolPolicy): boolean;
10
+ export declare function filterMcpTools<T extends {
11
+ name: string;
12
+ }>(tools: T[], policy: McpToolPolicy): T[];
13
+ //# sourceMappingURL=mcp-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-policy.d.ts","sourceRoot":"","sources":["../../../src/security/mcp-policy.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAkChF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AASD,wBAAgB,kBAAkB,CAChC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,aAAa,CAmBf;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAI7E;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACvD,KAAK,EAAE,CAAC,EAAE,EACV,MAAM,EAAE,aAAa,GACpB,CAAC,EAAE,CAEL"}
@@ -0,0 +1,66 @@
1
+ const READONLY_TOOLS = [
2
+ 'agentdb_search',
3
+ 'agentdb_pattern_search',
4
+ 'agentdb_pattern_stats',
5
+ 'agentdb_stats',
6
+ 'db_stats',
7
+ 'causal_query',
8
+ 'causal_traverse',
9
+ 'learning_explain',
10
+ 'learning_metrics',
11
+ 'learning_predict',
12
+ 'recall_with_certificate',
13
+ 'reflexion_retrieve',
14
+ 'skill_search',
15
+ ];
16
+ const LEARNING_TOOLS = [
17
+ ...READONLY_TOOLS,
18
+ 'experience_record',
19
+ 'learning_end_session',
20
+ 'learning_feedback',
21
+ 'learning_start_session',
22
+ 'learning_train',
23
+ 'reward_signal',
24
+ ];
25
+ const PROFILE_TOOLS = {
26
+ readonly: READONLY_TOOLS,
27
+ retrieval: READONLY_TOOLS,
28
+ learning: LEARNING_TOOLS,
29
+ };
30
+ function parseList(value) {
31
+ return (value ?? '')
32
+ .split(/[,\s]+/)
33
+ .map((item) => item.trim())
34
+ .filter(Boolean);
35
+ }
36
+ export function buildMcpToolPolicy(env = process.env) {
37
+ const rawProfile = env.AGENTDB_MCP_PROFILE?.trim();
38
+ const profile = rawProfile;
39
+ if (rawProfile && !['readonly', 'retrieval', 'learning', 'admin'].includes(rawProfile)) {
40
+ throw new Error(`Unknown AGENTDB_MCP_PROFILE "${rawProfile}"`);
41
+ }
42
+ const explicitAllow = parseList(env.AGENTDB_MCP_ALLOW);
43
+ const deny = new Set(parseList(env.AGENTDB_MCP_DENY));
44
+ let allow = null;
45
+ if (profile && profile !== 'admin')
46
+ allow = new Set(PROFILE_TOOLS[profile]);
47
+ if (explicitAllow.length > 0)
48
+ allow = new Set([...(allow ?? []), ...explicitAllow]);
49
+ return {
50
+ profile: profile ?? null,
51
+ allow,
52
+ deny,
53
+ configured: Boolean(profile || explicitAllow.length || deny.size),
54
+ };
55
+ }
56
+ export function isMcpToolAllowed(name, policy) {
57
+ if (policy.deny.has(name))
58
+ return false;
59
+ if (policy.allow)
60
+ return policy.allow.has(name);
61
+ return true;
62
+ }
63
+ export function filterMcpTools(tools, policy) {
64
+ return tools.filter((tool) => isMcpToolAllowed(tool.name, policy));
65
+ }
66
+ //# sourceMappingURL=mcp-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-policy.js","sourceRoot":"","sources":["../../../src/security/mcp-policy.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG;IACrB,gBAAgB;IAChB,wBAAwB;IACxB,uBAAuB;IACvB,eAAe;IACf,UAAU;IACV,cAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,yBAAyB;IACzB,oBAAoB;IACpB,cAAc;CACN,CAAC;AAEX,MAAM,cAAc,GAAG;IACrB,GAAG,cAAc;IACjB,mBAAmB;IACnB,sBAAsB;IACtB,mBAAmB;IACnB,wBAAwB;IACxB,gBAAgB;IAChB,eAAe;CACP,CAAC;AAEX,MAAM,aAAa,GAAmE;IACpF,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,cAAc;IACzB,QAAQ,EAAE,cAAc;CACzB,CAAC;AASF,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;SACjB,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,UAAU,GAAG,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,UAA2C,CAAC;IAC5D,IAAI,UAAU,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvF,MAAM,IAAI,KAAK,CAAC,gCAAgC,UAAU,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACtD,IAAI,KAAK,GAAuB,IAAI,CAAC;IACrC,IAAI,OAAO,IAAI,OAAO,KAAK,OAAO;QAAE,KAAK,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;IAEpF,OAAO;QACL,OAAO,EAAE,OAAO,IAAI,IAAI;QACxB,KAAK;QACL,IAAI;QACJ,UAAU,EAAE,OAAO,CAAC,OAAO,IAAI,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAqB;IAClE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAU,EACV,MAAqB;IAErB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * AgentDB v2 Path Security Utilities
3
+ *
4
+ * Prevents path traversal attacks and ensures safe file operations:
5
+ * - Path validation and canonicalization
6
+ * - Symlink detection and handling
7
+ * - Safe file read/write operations
8
+ * - Temporary file cleanup
9
+ */
10
+ import * as fs from 'fs';
11
+ /**
12
+ * Validate and sanitize file path
13
+ * Prevents path traversal attacks
14
+ */
15
+ export declare function validatePath(filePath: string, baseDir: string): string;
16
+ /**
17
+ * Check if path is a symbolic link
18
+ */
19
+ export declare function isSymbolicLink(filePath: string): Promise<boolean>;
20
+ /**
21
+ * Secure file write operation
22
+ * Prevents writing to symbolic links and validates paths
23
+ */
24
+ export declare function secureWrite(filePath: string, data: Buffer | string, baseDir: string, options?: {
25
+ overwrite?: boolean;
26
+ encoding?: BufferEncoding;
27
+ }): Promise<void>;
28
+ /**
29
+ * Secure file read operation
30
+ * Validates paths and prevents symlink attacks
31
+ */
32
+ export declare function secureRead(filePath: string, baseDir: string, options?: {
33
+ encoding?: BufferEncoding;
34
+ followSymlinks?: boolean;
35
+ }): Promise<Buffer | string>;
36
+ /**
37
+ * Secure directory listing
38
+ * Prevents path traversal and filters out sensitive files
39
+ */
40
+ export declare function secureListDir(dirPath: string, baseDir: string, options?: {
41
+ recursive?: boolean;
42
+ includeDotFiles?: boolean;
43
+ }): Promise<string[]>;
44
+ /**
45
+ * Secure file deletion
46
+ * Validates paths and prevents symlink attacks
47
+ */
48
+ export declare function secureDelete(filePath: string, baseDir: string, options?: {
49
+ force?: boolean;
50
+ }): Promise<void>;
51
+ /**
52
+ * Temporary file manager with automatic cleanup
53
+ */
54
+ export declare class TempFileManager {
55
+ private tempFiles;
56
+ private tempDir;
57
+ private cleanupScheduled;
58
+ constructor(baseDir: string);
59
+ /**
60
+ * Initialize temp directory
61
+ */
62
+ init(): Promise<void>;
63
+ /**
64
+ * Create a temporary file
65
+ */
66
+ createTempFile(prefix?: string): Promise<string>;
67
+ /**
68
+ * Write to temporary file
69
+ */
70
+ writeTempFile(data: Buffer | string, prefix?: string): Promise<string>;
71
+ /**
72
+ * Delete a specific temp file
73
+ */
74
+ deleteTempFile(tempPath: string): Promise<void>;
75
+ /**
76
+ * Clean up all temporary files
77
+ */
78
+ cleanup(): Promise<void>;
79
+ /**
80
+ * Synchronous cleanup for process exit
81
+ */
82
+ private cleanupSync;
83
+ /**
84
+ * Get list of managed temp files
85
+ */
86
+ getTempFiles(): string[];
87
+ }
88
+ /**
89
+ * Ensure directory exists with safe permissions
90
+ */
91
+ export declare function ensureDir(dirPath: string, baseDir: string): Promise<string>;
92
+ /**
93
+ * Get safe file stats without following symlinks
94
+ */
95
+ export declare function safeStats(filePath: string, baseDir: string): Promise<fs.Stats>;
96
+ /**
97
+ * Check if path exists within base directory
98
+ */
99
+ export declare function pathExists(filePath: string, baseDir: string): Promise<boolean>;
100
+ //# sourceMappingURL=path-security.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-security.d.ts","sourceRoot":"","sources":["../../../src/security/path-security.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAIzB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAuCtE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWvE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAE,GAC3D,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,cAAc,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAChE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CA2B1B;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3D,OAAO,CAAC,MAAM,EAAE,CAAC,CA0CnB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAkB;gBAE9B,OAAO,EAAE,MAAM;IAI3B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B;;OAEG;IACG,cAAc,CAAC,MAAM,GAAE,MAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAWjE;;OAEG;IACG,aAAa,CACjB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,MAAM,CAAC;IAMlB;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;CAGzB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAGnB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAQlB"}