agentdb 2.0.0-alpha.3.0 → 2.0.0-alpha.3.2

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 (140) hide show
  1. package/dist/agentdb.browser.js +1 -1
  2. package/dist/agentdb.browser.min.js +1 -1
  3. package/dist/src/backends/factory.d.ts.map +1 -1
  4. package/dist/src/backends/factory.js +13 -4
  5. package/dist/src/backends/factory.js.map +1 -1
  6. package/dist/src/backends/hnswlib/HNSWLibBackend.d.ts.map +1 -1
  7. package/dist/src/backends/hnswlib/HNSWLibBackend.js +29 -2
  8. package/dist/src/backends/hnswlib/HNSWLibBackend.js.map +1 -1
  9. package/dist/src/benchmark/BenchmarkSuite.d.ts +318 -0
  10. package/dist/src/benchmark/BenchmarkSuite.d.ts.map +1 -0
  11. package/dist/src/benchmark/BenchmarkSuite.js +984 -0
  12. package/dist/src/benchmark/BenchmarkSuite.js.map +1 -0
  13. package/dist/src/benchmark/index.d.ts +29 -0
  14. package/dist/src/benchmark/index.d.ts.map +1 -0
  15. package/dist/src/benchmark/index.js +39 -0
  16. package/dist/src/benchmark/index.js.map +1 -0
  17. package/dist/src/cli/agentdb-cli.d.ts +13 -0
  18. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  19. package/dist/src/cli/agentdb-cli.js +725 -94
  20. package/dist/src/cli/agentdb-cli.js.map +1 -1
  21. package/dist/src/cli/lib/simulation-runner.d.ts +40 -3
  22. package/dist/src/cli/lib/simulation-runner.d.ts.map +1 -1
  23. package/dist/src/cli/lib/simulation-runner.js +248 -6
  24. package/dist/src/cli/lib/simulation-runner.js.map +1 -1
  25. package/dist/src/controllers/CausalMemoryGraph.d.ts +28 -2
  26. package/dist/src/controllers/CausalMemoryGraph.d.ts.map +1 -1
  27. package/dist/src/controllers/CausalMemoryGraph.js +81 -6
  28. package/dist/src/controllers/CausalMemoryGraph.js.map +1 -1
  29. package/dist/src/controllers/HNSWIndex.d.ts +20 -2
  30. package/dist/src/controllers/HNSWIndex.d.ts.map +1 -1
  31. package/dist/src/controllers/HNSWIndex.js +82 -6
  32. package/dist/src/controllers/HNSWIndex.js.map +1 -1
  33. package/dist/src/controllers/MemoryController.d.ts +161 -0
  34. package/dist/src/controllers/MemoryController.d.ts.map +1 -0
  35. package/dist/src/controllers/MemoryController.js +303 -0
  36. package/dist/src/controllers/MemoryController.js.map +1 -0
  37. package/dist/src/controllers/QUICClient.d.ts +45 -0
  38. package/dist/src/controllers/QUICClient.d.ts.map +1 -1
  39. package/dist/src/controllers/QUICClient.js +190 -0
  40. package/dist/src/controllers/QUICClient.js.map +1 -1
  41. package/dist/src/controllers/SyncCoordinator.d.ts.map +1 -1
  42. package/dist/src/controllers/SyncCoordinator.js +115 -3
  43. package/dist/src/controllers/SyncCoordinator.js.map +1 -1
  44. package/dist/src/controllers/WASMVectorSearch.d.ts +14 -1
  45. package/dist/src/controllers/WASMVectorSearch.d.ts.map +1 -1
  46. package/dist/src/controllers/WASMVectorSearch.js +126 -24
  47. package/dist/src/controllers/WASMVectorSearch.js.map +1 -1
  48. package/dist/src/controllers/attention/CrossAttentionController.d.ts +141 -0
  49. package/dist/src/controllers/attention/CrossAttentionController.d.ts.map +1 -0
  50. package/dist/src/controllers/attention/CrossAttentionController.js +325 -0
  51. package/dist/src/controllers/attention/CrossAttentionController.js.map +1 -0
  52. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts +137 -0
  53. package/dist/src/controllers/attention/MultiHeadAttentionController.d.ts.map +1 -0
  54. package/dist/src/controllers/attention/MultiHeadAttentionController.js +336 -0
  55. package/dist/src/controllers/attention/MultiHeadAttentionController.js.map +1 -0
  56. package/dist/src/controllers/attention/SelfAttentionController.d.ts +117 -0
  57. package/dist/src/controllers/attention/SelfAttentionController.d.ts.map +1 -0
  58. package/dist/src/controllers/attention/SelfAttentionController.js +205 -0
  59. package/dist/src/controllers/attention/SelfAttentionController.js.map +1 -0
  60. package/dist/src/controllers/attention/index.d.ts +15 -0
  61. package/dist/src/controllers/attention/index.d.ts.map +1 -0
  62. package/dist/src/controllers/attention/index.js +12 -0
  63. package/dist/src/controllers/attention/index.js.map +1 -0
  64. package/dist/src/controllers/index.d.ts +8 -0
  65. package/dist/src/controllers/index.d.ts.map +1 -1
  66. package/dist/src/controllers/index.js +6 -0
  67. package/dist/src/controllers/index.js.map +1 -1
  68. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts +348 -0
  69. package/dist/src/coordination/MultiDatabaseCoordinator.d.ts.map +1 -0
  70. package/dist/src/coordination/MultiDatabaseCoordinator.js +803 -0
  71. package/dist/src/coordination/MultiDatabaseCoordinator.js.map +1 -0
  72. package/dist/src/coordination/index.d.ts +10 -0
  73. package/dist/src/coordination/index.d.ts.map +1 -0
  74. package/dist/src/coordination/index.js +10 -0
  75. package/dist/src/coordination/index.js.map +1 -0
  76. package/dist/src/core/AgentDB.d.ts +25 -7
  77. package/dist/src/core/AgentDB.d.ts.map +1 -1
  78. package/dist/src/core/AgentDB.js +77 -25
  79. package/dist/src/core/AgentDB.js.map +1 -1
  80. package/dist/src/index.d.ts +8 -1
  81. package/dist/src/index.d.ts.map +1 -1
  82. package/dist/src/index.js +23 -1
  83. package/dist/src/index.js.map +1 -1
  84. package/dist/src/optimizations/Quantization.d.ts +330 -0
  85. package/dist/src/optimizations/Quantization.d.ts.map +1 -0
  86. package/dist/src/optimizations/Quantization.js +793 -0
  87. package/dist/src/optimizations/Quantization.js.map +1 -0
  88. package/dist/src/search/HybridSearch.d.ts +311 -0
  89. package/dist/src/search/HybridSearch.d.ts.map +1 -0
  90. package/dist/src/search/HybridSearch.js +712 -0
  91. package/dist/src/search/HybridSearch.js.map +1 -0
  92. package/dist/src/search/index.d.ts +12 -0
  93. package/dist/src/search/index.d.ts.map +1 -0
  94. package/dist/src/search/index.js +16 -0
  95. package/dist/src/search/index.js.map +1 -0
  96. package/dist/src/services/AttentionService.d.ts +81 -14
  97. package/dist/src/services/AttentionService.d.ts.map +1 -1
  98. package/dist/src/services/AttentionService.js +860 -103
  99. package/dist/src/services/AttentionService.js.map +1 -1
  100. package/dist/src/services/token.service.d.ts +15 -1
  101. package/dist/src/services/token.service.d.ts.map +1 -1
  102. package/dist/src/services/token.service.js +60 -3
  103. package/dist/src/services/token.service.js.map +1 -1
  104. package/dist/src/wasm-loader.d.ts +52 -0
  105. package/dist/src/wasm-loader.d.ts.map +1 -0
  106. package/dist/src/wasm-loader.js +65 -0
  107. package/dist/src/wasm-loader.js.map +1 -0
  108. package/dist/src/wrappers/attention-fallbacks.d.ts +15 -2
  109. package/dist/src/wrappers/attention-fallbacks.d.ts.map +1 -1
  110. package/dist/src/wrappers/attention-fallbacks.js +181 -12
  111. package/dist/src/wrappers/attention-fallbacks.js.map +1 -1
  112. package/package.json +2 -1
  113. package/src/backends/factory.ts +17 -4
  114. package/src/backends/hnswlib/HNSWLibBackend.ts +32 -2
  115. package/src/benchmark/BenchmarkSuite.ts +1360 -0
  116. package/src/benchmark/index.ts +57 -0
  117. package/src/cli/agentdb-cli.ts +802 -93
  118. package/src/cli/lib/simulation-runner.ts +295 -7
  119. package/src/controllers/CausalMemoryGraph.ts +99 -7
  120. package/src/controllers/HNSWIndex.ts +92 -6
  121. package/src/controllers/MemoryController.ts +461 -0
  122. package/src/controllers/QUICClient.ts +254 -0
  123. package/src/controllers/SyncCoordinator.ts +123 -4
  124. package/src/controllers/WASMVectorSearch.ts +164 -24
  125. package/src/controllers/attention/CrossAttentionController.ts +466 -0
  126. package/src/controllers/attention/MultiHeadAttentionController.ts +493 -0
  127. package/src/controllers/attention/SelfAttentionController.ts +305 -0
  128. package/src/controllers/attention/index.ts +34 -0
  129. package/src/controllers/index.ts +39 -0
  130. package/src/coordination/MultiDatabaseCoordinator.ts +1107 -0
  131. package/src/coordination/index.ts +24 -0
  132. package/src/core/AgentDB.ts +101 -30
  133. package/src/index.ts +63 -1
  134. package/src/optimizations/Quantization.ts +995 -0
  135. package/src/search/HybridSearch.ts +1061 -0
  136. package/src/search/index.ts +31 -0
  137. package/src/services/AttentionService.ts +969 -103
  138. package/src/services/token.service.ts +71 -4
  139. package/src/wasm-loader.ts +162 -0
  140. package/src/wrappers/attention-fallbacks.ts +207 -13
@@ -1,4 +1,4 @@
1
- /*! AgentDB Browser Bundle v2.0.0-alpha.3.0 | MIT License | https://agentdb.ruv.io */
1
+ /*! AgentDB Browser Bundle v2.0.0-alpha.3.2 | MIT License | https://agentdb.ruv.io */
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
4
  var __esm = (fn, res) => function __init() {
@@ -1,3 +1,3 @@
1
- /*! AgentDB Browser Bundle v2.0.0-alpha.3.0 | MIT | https://agentdb.ruv.io */
1
+ /*! AgentDB Browser Bundle v2.0.0-alpha.3.2 | MIT | https://agentdb.ruv.io */
2
2
  var L=Object.defineProperty;var z=(h,t)=>()=>(h&&(t=h(h=0)),t);var H=(h,t)=>{for(var e in t)L(h,e,{get:t[e],enumerable:!0})};var I={};H(I,{initWASM:()=>j,wasmLoadError:()=>P,wasmModule:()=>p});async function j(){return p||M||(M=(async()=>{try{if(typeof WebAssembly>"u")throw new Error("WebAssembly not supported in this browser");let h=await _();return console.log(`WASM SIMD support: ${h}`),p={flashAttention:N(),hyperbolicAttention:D(),memoryConsolidation:k(),simdSupported:h},console.log("\u2705 WASM attention module loaded"),p}catch(h){return P=h,console.warn("\u26A0\uFE0F WASM loading failed, using fallback:",h.message),p={flashAttention:N(),hyperbolicAttention:D(),memoryConsolidation:k(),simdSupported:!1},p}finally{M=null}})(),M)}async function _(){try{let h=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,253,12,253,12,253,84,11]);return await WebAssembly.instantiate(h)instanceof WebAssembly.Instance}catch{return!1}}function N(){return(h,t,e,o={})=>{let{dim:n=384,numHeads:r=4,blockSize:s=64}=o,i=t.length/n,a=new Float32Array(h.length);for(let c=0;c<h.length;c+=n){let u=h.slice(c,c+n),m=0,d=new Float32Array(i);for(let l=0;l<i;l++){let f=t.slice(l*n,(l+1)*n),b=0;for(let g=0;g<n;g++)b+=u[g]*f[g];d[l]=Math.exp(b/Math.sqrt(n)),m+=d[l]}for(let l=0;l<i;l++){d[l]/=m;let f=e.slice(l*n,(l+1)*n);for(let b=0;b<n;b++)a[c+b]+=d[l]*f[b]}}return a}}function D(){return(h,t,e={})=>{let{curvature:o=-1}=e,n=Math.abs(o),r=new Float32Array(t.length/h.length);for(let s=0;s<r.length;s++){let i=s*h.length,a=0,c=0,u=0;for(let l=0;l<h.length;l++)a+=h[l]*t[i+l],c+=h[l]*h[l],u+=t[i+l]*t[i+l];let m=Math.sqrt(c+u-2*a),d=Math.acosh(1+2*n*m*m);r[s]=1/(1+d)}return r}}function k(){return(h,t={})=>{let{threshold:e=.8,maxClusters:o=10}=t,n=[],r=new Set;for(let s=0;s<h.length;s++){if(r.has(s))continue;let i=[h[s]];r.add(s);for(let c=s+1;c<h.length;c++){if(r.has(c))continue;let u=0,m=0,d=0;for(let f=0;f<h[s].length;f++)u+=h[s][f]*h[c][f],m+=h[s][f]*h[s][f],d+=h[c][f]*h[c][f];u/(Math.sqrt(m*d)||1)>e&&(i.push(h[c]),r.add(c))}let a=new Float32Array(h[s].length);for(let c of i)for(let u=0;u<a.length;u++)a[u]+=c[u]/i.length;if(n.push({memory:a,count:i.size,members:i}),n.length>=o)break}return n}}var p,M,P,W=z(()=>{"use strict";p=null,M=null,P=null});var y=class{config;codebook=null;trained=!1;constructor(t){if(this.config={dimension:t.dimension,numSubvectors:t.numSubvectors,numCentroids:t.numCentroids,maxIterations:t.maxIterations||50,convergenceThreshold:t.convergenceThreshold||1e-4},this.config.dimension%this.config.numSubvectors!==0)throw new Error(`Dimension ${this.config.dimension} must be divisible by numSubvectors ${this.config.numSubvectors}`)}async train(t){if(t.length===0)throw new Error("Training requires at least one vector");let e=this.config.dimension/this.config.numSubvectors,o=[];console.log(`[PQ] Training ${this.config.numSubvectors} subvectors with ${this.config.numCentroids} centroids each...`);for(let n=0;n<this.config.numSubvectors;n++){let r=n*e,s=r+e,i=t.map(c=>c.slice(r,s)),a=await this.kMeans(i,this.config.numCentroids);o.push(...a),((n+1)%4===0||n===this.config.numSubvectors-1)&&console.log(`[PQ] Trained ${n+1}/${this.config.numSubvectors} subvectors`)}this.codebook={subvectorDim:e,numSubvectors:this.config.numSubvectors,numCentroids:this.config.numCentroids,centroids:o},this.trained=!0,console.log("[PQ] Training complete")}async kMeans(t,e){let o=t[0].length,n=t.length,r=this.kMeansPlusPlus(t,e),s=new Uint32Array(n),i=1/0;for(let a=0;a<this.config.maxIterations;a++){let c=0;for(let d=0;d<n;d++){let l=1/0,f=0;for(let b=0;b<e;b++){let g=this.squaredDistance(t[d],r[b]);g<l&&(l=g,f=b)}s[d]=f,c+=l}if(Math.abs(i-c)<this.config.convergenceThreshold)break;i=c;let u=new Uint32Array(e),m=Array.from({length:e},()=>new Float32Array(o));for(let d=0;d<n;d++){let l=s[d];u[l]++;for(let f=0;f<o;f++)m[l][f]+=t[d][f]}for(let d=0;d<e;d++)if(u[d]>0)for(let l=0;l<o;l++)r[d][l]=m[d][l]/u[d]}return r}kMeansPlusPlus(t,e){let o=t.length,n=t[0].length,r=[],s=Math.floor(Math.random()*o);r.push(new Float32Array(t[s]));for(let i=1;i<e;i++){let a=new Float32Array(o),c=0;for(let m=0;m<o;m++){let d=1/0;for(let l of r){let f=this.squaredDistance(t[m],l);d=Math.min(d,f)}a[m]=d,c+=d}let u=Math.random()*c;for(let m=0;m<o;m++)if(u-=a[m],u<=0){r.push(new Float32Array(t[m]));break}}return r}compress(t){if(!this.trained||!this.codebook)throw new Error("Codebook must be trained before compression");let e=new Uint8Array(this.config.numSubvectors),o=this.codebook.subvectorDim,n=0;for(let r=0;r<t.length;r++)n+=t[r]*t[r];n=Math.sqrt(n);for(let r=0;r<this.config.numSubvectors;r++){let s=r*o,i=t.slice(s,s+o),a=1/0,c=0,u=r*this.config.numCentroids;for(let m=0;m<this.config.numCentroids;m++){let d=this.codebook.centroids[u+m],l=this.squaredDistance(i,d);l<a&&(a=l,c=m)}e[r]=c}return{codes:e,norm:n}}decompress(t){if(!this.codebook)throw new Error("Codebook not available");let e=new Float32Array(this.config.dimension),o=this.codebook.subvectorDim;for(let n=0;n<this.config.numSubvectors;n++){let r=t.codes[n],s=n*this.config.numCentroids,i=this.codebook.centroids[s+r],a=n*o;for(let c=0;c<o;c++)e[a+c]=i[c]}return e}asymmetricDistance(t,e){if(!this.codebook)throw new Error("Codebook not available");let o=0,n=this.codebook.subvectorDim;for(let r=0;r<this.config.numSubvectors;r++){let s=e.codes[r],i=r*this.config.numCentroids,a=this.codebook.centroids[i+s],c=r*n,u=t.slice(c,c+n);o+=this.squaredDistance(u,a)}return Math.sqrt(o)}batchCompress(t){return t.map(e=>this.compress(e))}getCompressionRatio(){let t=this.config.dimension*4,e=this.config.numSubvectors+4;return t/e}exportCodebook(){if(!this.codebook)throw new Error("No codebook to export");return JSON.stringify({config:this.config,codebook:{subvectorDim:this.codebook.subvectorDim,numSubvectors:this.codebook.numSubvectors,numCentroids:this.codebook.numCentroids,centroids:this.codebook.centroids.map(t=>Array.from(t))}})}importCodebook(t){let e=JSON.parse(t);this.config=e.config,this.codebook={subvectorDim:e.codebook.subvectorDim,numSubvectors:e.codebook.numSubvectors,numCentroids:e.codebook.numCentroids,centroids:e.codebook.centroids.map(o=>new Float32Array(o))},this.trained=!0}squaredDistance(t,e){let o=0;for(let n=0;n<t.length;n++){let r=t[n]-e[n];o+=r*r}return o}getStats(){let t=this.getCompressionRatio(),e=this.config.numSubvectors+4,o=this.codebook?this.config.numSubvectors*this.config.numCentroids*(this.config.dimension/this.config.numSubvectors)*4:0;return{trained:this.trained,compressionRatio:t,memoryPerVector:e,codebookSize:o}}};function B(h){return new y({dimension:h,numSubvectors:8,numCentroids:256,maxIterations:50})}function Q(h){return new y({dimension:h,numSubvectors:16,numCentroids:256,maxIterations:50})}function R(h){return new y({dimension:h,numSubvectors:32,numCentroids:256,maxIterations:50})}var S=class{items=[];push(t,e){this.items.push({item:t,priority:e}),this.bubbleUp(this.items.length-1)}pop(){if(this.items.length===0)return;let t=this.items[0].item,e=this.items.pop();return this.items.length>0&&(this.items[0]=e,this.bubbleDown(0)),t}peek(){var t;return(t=this.items[0])==null?void 0:t.item}size(){return this.items.length}bubbleUp(t){for(;t>0;){let e=Math.floor((t-1)/2);if(this.items[t].priority>=this.items[e].priority)break;[this.items[t],this.items[e]]=[this.items[e],this.items[t]],t=e}}bubbleDown(t){for(;;){let e=2*t+1,o=2*t+2,n=t;if(e<this.items.length&&this.items[e].priority<this.items[n].priority&&(n=e),o<this.items.length&&this.items[o].priority<this.items[n].priority&&(n=o),n===t)break;[this.items[t],this.items[n]]=[this.items[n],this.items[t]],t=n}}},A=class{config;nodes=new Map;entryPoint=null;currentId=0;ml;constructor(t={}){this.config={dimension:t.dimension||384,M:t.M||16,efConstruction:t.efConstruction||200,efSearch:t.efSearch||50,ml:t.ml||1/Math.log(2),maxLayers:t.maxLayers||16,distanceFunction:t.distanceFunction||"cosine"},this.ml=this.config.ml}add(t,e){let o=e!==void 0?e:this.currentId++,n=this.randomLevel(),r={id:o,vector:t,level:n,connections:new Map};for(let a=0;a<=n;a++)r.connections.set(a,[]);if(this.entryPoint===null)return this.entryPoint=o,this.nodes.set(o,r),o;let s=this.entryPoint,i=s;for(let a=this.nodes.get(s).level;a>n;a--)i=this.searchLayer(t,i,1,a)[0];for(let a=Math.min(n,this.nodes.get(s).level);a>=0;a--){let c=this.searchLayer(t,i,this.config.efConstruction,a),u=a===0?this.config.M*2:this.config.M,m=this.selectNeighbors(t,c,u);for(let d of m){this.connect(o,d,a),this.connect(d,o,a);let l=this.nodes.get(d),f=l.connections.get(a);if(f.length>u){let b=this.selectNeighbors(l.vector,f,u);l.connections.set(a,b)}}i=c[0]}return n>this.nodes.get(this.entryPoint).level&&(this.entryPoint=o),this.nodes.set(o,r),o}search(t,e,o){if(this.entryPoint===null)return[];o=o||Math.max(this.config.efSearch,e);let n=this.entryPoint,r=n;for(let i=this.nodes.get(n).level;i>0;i--)r=this.searchLayer(t,r,1,i)[0];return this.searchLayer(t,r,o,0).slice(0,e).map(i=>({id:i,distance:this.distance(t,this.nodes.get(i).vector),vector:this.nodes.get(i).vector}))}searchLayer(t,e,o,n){let r=new Set,s=new S,i=new S,a=this.distance(t,this.nodes.get(e).vector);for(s.push(e,a),i.push(e,-a),r.add(e);s.size()>0;){let u=s.pop(),m=-i.peek();if(this.distance(t,this.nodes.get(u).vector)>m)break;let l=this.nodes.get(u).connections.get(n)||[];for(let f of l){if(r.has(f))continue;r.add(f);let b=this.distance(t,this.nodes.get(f).vector),g=-i.peek();(b<g||i.size()<o)&&(s.push(f,b),i.push(f,-b),i.size()>o&&i.pop())}}let c=[];for(;i.size()>0;)c.unshift(i.pop());return c}selectNeighbors(t,e,o){return e.length<=o?e:e.map(r=>({id:r,distance:this.distance(t,this.nodes.get(r).vector)})).sort((r,s)=>r.distance-s.distance).slice(0,o).map(r=>r.id)}connect(t,e,o){let r=this.nodes.get(t).connections.get(o);r.includes(e)||r.push(e)}randomLevel(){let t=0;for(;Math.random()<this.ml&&t<this.config.maxLayers-1;)t++;return t}distance(t,e){switch(this.config.distanceFunction){case"cosine":return 1-this.cosineSimilarity(t,e);case"euclidean":return this.euclideanDistance(t,e);case"manhattan":return this.manhattanDistance(t,e);default:return 1-this.cosineSimilarity(t,e)}}cosineSimilarity(t,e){let o=0,n=0,r=0;for(let s=0;s<t.length;s++)o+=t[s]*e[s],n+=t[s]*t[s],r+=e[s]*e[s];return o/(Math.sqrt(n)*Math.sqrt(r))}euclideanDistance(t,e){let o=0;for(let n=0;n<t.length;n++){let r=t[n]-e[n];o+=r*r}return Math.sqrt(o)}manhattanDistance(t,e){let o=0;for(let n=0;n<t.length;n++)o+=Math.abs(t[n]-e[n]);return o}getStats(){if(this.nodes.size===0)return{numNodes:0,numLayers:0,avgConnections:0,entryPointLevel:0,memoryBytes:0};let t=Math.max(...Array.from(this.nodes.values()).map(a=>a.level)),e=0;for(let a of this.nodes.values())for(let c of a.connections.values())e+=c.length;let o=e/this.nodes.size,n=this.config.dimension*4,r=o*4,i=this.nodes.size*(n+r+100);return{numNodes:this.nodes.size,numLayers:t+1,avgConnections:o,entryPointLevel:this.entryPoint?this.nodes.get(this.entryPoint).level:0,memoryBytes:i}}export(){let t={config:this.config,entryPoint:this.entryPoint,currentId:this.currentId,nodes:Array.from(this.nodes.entries()).map(([e,o])=>({id:e,vector:Array.from(o.vector),level:o.level,connections:Array.from(o.connections.entries())}))};return JSON.stringify(t)}import(t){let e=JSON.parse(t);this.config=e.config,this.entryPoint=e.entryPoint,this.currentId=e.currentId,this.nodes.clear();for(let o of e.nodes){let n={id:o.id,vector:new Float32Array(o.vector),level:o.level,connections:new Map(o.connections)};this.nodes.set(o.id,n)}}clear(){this.nodes.clear(),this.entryPoint=null,this.currentId=0}size(){return this.nodes.size}};function q(h){return new A({dimension:h,M:16,efConstruction:200,efSearch:50})}function G(h){return new A({dimension:h,M:8,efConstruction:100,efSearch:30})}function O(h){return new A({dimension:h,M:32,efConstruction:400,efSearch:100})}var w=class{config;nodes=new Map;edges=[];attentionWeights=new Map;constructor(t={}){this.config={hiddenDim:t.hiddenDim||64,numHeads:t.numHeads||4,dropout:t.dropout||.1,learningRate:t.learningRate||.01,attentionType:t.attentionType||"gat"}}addNode(t,e){this.nodes.set(t,{id:t,features:e,neighbors:[]})}addEdge(t,e,o=1){this.edges.push({from:t,to:e,weight:o});let n=this.nodes.get(t),r=this.nodes.get(e);n&&!n.neighbors.includes(e)&&n.neighbors.push(e),r&&!r.neighbors.includes(t)&&r.neighbors.push(t)}graphAttention(t){let e=this.nodes.get(t);if(!e)throw new Error(`Node ${t} not found`);let o=e.neighbors;if(o.length===0)return e.features;let n=Math.floor(this.config.hiddenDim/this.config.numHeads),r=new Float32Array(this.config.hiddenDim);for(let s=0;s<this.config.numHeads;s++){let i=0,a=new Float32Array(n);for(let u of o){let m=this.nodes.get(u),d=this.computeAttentionScore(e.features,m.features,s);i+=d;for(let l=0;l<n&&l<m.features.length;l++)a[l]+=d*m.features[l]}if(i>0)for(let u=0;u<n;u++)a[u]/=i;let c=s*n;for(let u=0;u<n;u++)r[c+u]=a[u]}for(let s=0;s<r.length;s++)r[s]=r[s]>0?r[s]:.01*r[s];return r}computeAttentionScore(t,e,o){let n=0,r=Math.min(t.length,e.length);for(let s=0;s<r;s++)n+=t[s]*e[s];return Math.exp(n/Math.sqrt(r))}messagePass(){let t=new Map;for(let[e]of this.nodes)t.set(e,this.graphAttention(e));return t}update(t){for(let[e,o]of t){let n=this.nodes.get(e);n&&(n.features=o)}}computeGraphEmbedding(t,e=2){new Map().set(t,this.nodes.get(t).features);for(let n=0;n<e;n++){let r=this.messagePass();this.update(r)}return this.nodes.get(t).features}getStats(){return{numNodes:this.nodes.size,numEdges:this.edges.length,avgDegree:this.edges.length/Math.max(this.nodes.size,1),config:this.config}}},x=class{config;constructor(t={}){this.config={lambda:t.lambda||.7,metric:t.metric||"cosine"}}rerank(t,e,o){if(e.length===0)return[];let n=[],r=new Set(e.map((a,c)=>c)),s=0,i=-1/0;for(let a=0;a<e.length;a++)e[a].score>i&&(i=e[a].score,s=a);for(n.push(e[s].id),r.delete(s);n.length<o&&r.size>0;){let a=-1/0,c=-1;for(let u of r){let m=e[u],d=this.similarity(t,m.vector),l=-1/0;for(let b of n){let g=e.find(E=>E.id===b),T=this.similarity(m.vector,g.vector);l=Math.max(l,T)}let f=this.config.lambda*d-(1-this.config.lambda)*l;f>a&&(a=f,c=u)}if(c!==-1)n.push(e[c].id),r.delete(c);else break}return n}similarity(t,e){return this.config.metric==="cosine"?this.cosineSimilarity(t,e):1/(1+this.euclideanDistance(t,e))}cosineSimilarity(t,e){let o=0,n=0,r=0;for(let s=0;s<t.length;s++)o+=t[s]*e[s],n+=t[s]*t[s],r+=e[s]*e[s];return o/(Math.sqrt(n)*Math.sqrt(r))}euclideanDistance(t,e){let o=0;for(let n=0;n<t.length;n++){let r=t[n]-e[n];o+=r*r}return Math.sqrt(o)}setLambda(t){this.config.lambda=Math.max(0,Math.min(1,t))}},F=class{static compress(t,e){if(t.length===0)return[];let o=t[0].length;if(e>=o)return t;let n=t.map(u=>Array.from(u)),r=this.computeMean(n),s=n.map(u=>u.map((m,d)=>m-r[d])),i=this.computeCovariance(s),a=this.powerIteration(i,e);return s.map(u=>{let m=new Float32Array(e);for(let d=0;d<e;d++){let l=0;for(let f=0;f<o;f++)l+=u[f]*a[d][f];m[d]=l}return m})}static computeMean(t){let e=t.length,o=t[0].length,n=new Array(o).fill(0);for(let r of t)for(let s=0;s<o;s++)n[s]+=r[s];return n.map(r=>r/e)}static computeCovariance(t){let e=t.length,o=t[0].length,n=Array.from({length:o},()=>new Array(o).fill(0));for(let r=0;r<o;r++)for(let s=0;s<=r;s++){let i=0;for(let a of t)i+=a[r]*a[s];n[r][s]=n[s][r]=i/e}return n}static powerIteration(t,e,o=100){let n=t.length,r=[];for(let s=0;s<e;s++){let i=new Array(n).fill(0).map(()=>Math.random()-.5);for(let a=0;a<o;a++){let c=new Array(n).fill(0);for(let m=0;m<n;m++)for(let d=0;d<n;d++)c[m]+=t[m][d]*i[d];for(let m of r){let d=0;for(let l=0;l<n;l++)d+=c[l]*m[l];for(let l=0;l<n;l++)c[l]-=d*m[l]}let u=0;for(let m of c)u+=m*m;if(u=Math.sqrt(u),u<1e-10)break;i=c.map(m=>m/u)}r.push(i)}return r}},C=class{static batchCosineSimilarity(t,e){let o=new Float32Array(e.length),n=0;for(let r=0;r<t.length;r++)n+=t[r]*t[r];n=Math.sqrt(n);for(let r=0;r<e.length;r++){let s=e[r],i=0,a=0;for(let c=0;c<t.length;c++)i+=t[c]*s[c],a+=s[c]*s[c];a=Math.sqrt(a),o[r]=i/(n*a)}return o}static batchNormalize(t){return t.map(e=>{let o=0;for(let r=0;r<e.length;r++)o+=e[r]*e[r];o=Math.sqrt(o);let n=new Float32Array(e.length);for(let r=0;r<e.length;r++)n[r]=e[r]/o;return n})}};var v=class{wasmModule=null;loadingState="idle";loadError=null;config;constructor(t={}){this.config={dimension:384,numHeads:4,blockSize:64,curvature:-1,useWASM:!0,...t}}getLoadingState(){return this.loadingState}getError(){return this.loadError}async initialize(){if(this.loadingState!=="loaded"){if(this.loadingState==="loading"){for(;this.loadingState==="loading";)await new Promise(t=>setTimeout(t,50));return}this.loadingState="loading";try{if(!this.config.useWASM){this.loadingState="loaded";return}let t=await Promise.resolve().then(()=>(W(),I));this.wasmModule=await t.initWASM(),this.loadingState="loaded"}catch(t){this.loadError=t instanceof Error?t:new Error(String(t)),this.loadingState="error",console.warn("WASM initialization failed, using fallback:",this.loadError.message)}}}async flashAttention(t,e,o){var n;if(await this.initialize(),(n=this.wasmModule)!=null&&n.flashAttention)try{return this.wasmModule.flashAttention(t,e,o,this.config)}catch(r){console.warn("WASM flash attention failed, using fallback:",r)}return this.flashAttentionFallback(t,e,o)}async hyperbolicAttention(t,e){var o;if(await this.initialize(),(o=this.wasmModule)!=null&&o.hyperbolicAttention)try{return this.wasmModule.hyperbolicAttention(t,e,this.config)}catch(n){console.warn("WASM hyperbolic attention failed, using fallback:",n)}return this.hyperbolicAttentionFallback(t,e)}async consolidateMemories(t,e={}){var n;await this.initialize();let o={threshold:.8,maxClusters:10,minClusterSize:1,...e};if((n=this.wasmModule)!=null&&n.memoryConsolidation)try{return this.wasmModule.memoryConsolidation(t,o)}catch(r){console.warn("WASM memory consolidation failed, using fallback:",r)}return this.consolidateMemoriesFallback(t,o)}dispose(){this.wasmModule=null,this.loadingState="idle",this.loadError=null}flashAttentionFallback(t,e,o){let{dimension:n=384}=this.config,r=e.length/n,s=new Float32Array(t.length);for(let i=0;i<t.length;i+=n){let a=t.slice(i,i+n),c=0,u=new Float32Array(r);for(let m=0;m<r;m++){let d=e.slice(m*n,(m+1)*n),l=0;for(let f=0;f<n;f++)l+=a[f]*d[f];u[m]=Math.exp(l/Math.sqrt(n)),c+=u[m]}for(let m=0;m<r;m++){u[m]/=c||1;let d=o.slice(m*n,(m+1)*n);for(let l=0;l<n;l++)s[i+l]+=u[m]*d[l]}}return s}hyperbolicAttentionFallback(t,e){let{curvature:o=-1}=this.config,n=Math.abs(o),r=new Float32Array(e.length/t.length);for(let s=0;s<r.length;s++){let i=s*t.length,a=0,c=0,u=0;for(let l=0;l<t.length;l++)a+=t[l]*e[i+l],c+=t[l]*t[l],u+=e[i+l]*e[i+l];let m=Math.sqrt(c+u-2*a),d=Math.acosh(1+2*n*m*m);r[s]=1/(1+d)}return r}consolidateMemoriesFallback(t,e){let{threshold:o=.8,maxClusters:n=10,minClusterSize:r=1}=e,s=[],i=new Set;for(let a=0;a<t.length;a++){if(i.has(a))continue;let c=[t[a]];i.add(a);for(let u=a+1;u<t.length;u++){if(i.has(u))continue;this.cosineSimilarity(t[a],t[u])>o&&(c.push(t[u]),i.add(u))}if(c.length>=r){let u=new Float32Array(t[a].length);for(let d of c)for(let l=0;l<u.length;l++)u[l]+=d[l]/c.length;let m=0;for(let d=0;d<u.length;d++)m+=u[d]*u[d];if(m=Math.sqrt(m),m>0)for(let d=0;d<u.length;d++)u[d]/=m;s.push({memory:u,count:c.length,members:c})}if(s.length>=n)break}return s}cosineSimilarity(t,e){let o=0,n=0,r=0;for(let i=0;i<t.length;i++)o+=t[i]*e[i],n+=t[i]*t[i],r+=e[i]*e[i];let s=Math.sqrt(n*r);return s>0?o/s:0}};function U(h){return new v(h)}function $(){return new v({dimension:256,numHeads:2,blockSize:32,useWASM:!0})}function V(){return new v({dimension:768,numHeads:8,blockSize:128,useWASM:!0})}function ot(){return{indexedDB:"indexedDB"in globalThis,broadcastChannel:"BroadcastChannel"in globalThis,webWorkers:typeof globalThis.Worker<"u",wasmSIMD:J(),sharedArrayBuffer:typeof SharedArrayBuffer<"u"}}async function J(){try{if(typeof globalThis.WebAssembly>"u")return!1;let h=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,253,12,253,12,253,84,11]),t=globalThis.WebAssembly;return await t.instantiate(h)instanceof t.Instance}catch{return!1}}var Z={pq:{enabled:!1},hnsw:{enabled:!1},gnn:{enabled:!0,numHeads:2},mmr:{enabled:!0,lambda:.7},svd:{enabled:!1}},K={pq:{enabled:!0,subvectors:8},hnsw:{enabled:!0,M:16},gnn:{enabled:!0,numHeads:4},mmr:{enabled:!0,lambda:.7},svd:{enabled:!1}},Y={pq:{enabled:!0,subvectors:16},hnsw:{enabled:!0,M:32},gnn:{enabled:!0,numHeads:4},mmr:{enabled:!0,lambda:.7},svd:{enabled:!0,targetDim:128}},st={pq:{enabled:!0,subvectors:32},hnsw:{enabled:!0,M:8},gnn:{enabled:!1},mmr:{enabled:!1},svd:{enabled:!0,targetDim:64}},it={pq:{enabled:!1},hnsw:{enabled:!0,M:32,efSearch:100},gnn:{enabled:!1},mmr:{enabled:!1},svd:{enabled:!1}},at={pq:{enabled:!1},hnsw:{enabled:!0,M:48,efConstruction:400},gnn:{enabled:!0,numHeads:8},mmr:{enabled:!0,lambda:.8},svd:{enabled:!1}},ct={major:2,minor:0,patch:0,prerelease:"alpha.2",features:"advanced",full:"2.0.0-alpha.2+advanced"};function lt(h,t,e){var s,i,a;let o=h*t*4;if((s=e.pq)!=null&&s.enabled){let c=e.pq.subvectors||8;o=h*(c+4)}if((i=e.svd)!=null&&i.enabled){let c=e.svd.targetDim||t/2;o=h*c*4}let n=0;if((a=e.hnsw)!=null&&a.enabled){let u=(e.hnsw.M||16)*1.5;n=h*u*4}let r=o+n;return{vectors:o,index:n,total:r,totalMB:r/(1024*1024)}}function ut(h,t){return h<1e3?{name:"SMALL_DATASET",config:Z,reason:"Small dataset, linear search is fast enough"}:h<1e4?{name:"MEDIUM_DATASET",config:K,reason:"Medium dataset, HNSW + PQ8 recommended"}:{name:"LARGE_DATASET",config:Y,reason:"Large dataset, aggressive compression + HNSW recommended"}}async function mt(h,t=100,e=10,o=384){let n=[];for(let r=0;r<t;r++){let s=new Float32Array(o);for(let c=0;c<o;c++)s[c]=Math.random()-.5;let i=performance.now();h(s,e);let a=performance.now();n.push(a-i)}return n.sort((r,s)=>r-s),{avgTimeMs:n.reduce((r,s)=>r+s,0)/n.length,minTimeMs:n[0],maxTimeMs:n[n.length-1],p50Ms:n[Math.floor(n.length*.5)],p95Ms:n[Math.floor(n.length*.95)],p99Ms:n[Math.floor(n.length*.99)]}}export{v as AttentionBrowser,C as BatchProcessor,w as GraphNeuralNetwork,A as HNSWIndex,Y as LARGE_DATASET_CONFIG,K as MEDIUM_DATASET_CONFIG,st as MEMORY_OPTIMIZED_CONFIG,x as MaximalMarginalRelevance,y as ProductQuantization,at as QUALITY_OPTIMIZED_CONFIG,Z as SMALL_DATASET_CONFIG,it as SPEED_OPTIMIZED_CONFIG,F as TensorCompression,ct as VERSION,mt as benchmarkSearch,V as createAccurateAttention,O as createAccurateHNSW,U as createAttention,$ as createFastAttention,G as createFastHNSW,q as createHNSW,Q as createPQ16,R as createPQ32,B as createPQ8,ot as detectFeatures,lt as estimateMemoryUsage,ut as recommendConfig};
3
3
  //# sourceMappingURL=agentdb.browser.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/backends/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAItE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAC3C,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO,CAAC;QACd,GAAG,EAAE,OAAO,CAAC;QACb,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA6DhE;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,aAAa,CAAC,CA4ExB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAUlE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ1F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAIzE"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/backends/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMtE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAC3C,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO,CAAC;QACd,GAAG,EAAE,OAAO,CAAC;QACb,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA6DhE;AAUD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,aAAa,CAAC,CA+ExB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,WAAW,CAAC,CAUlE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ1F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAIzE"}
@@ -12,7 +12,6 @@
12
12
  * - Clear error messages for missing dependencies
13
13
  */
14
14
  import { RuVectorBackend } from './ruvector/RuVectorBackend.js';
15
- import { HNSWLibBackend } from './hnswlib/HNSWLibBackend.js';
16
15
  /**
17
16
  * Detect available vector backends
18
17
  */
@@ -77,6 +76,13 @@ export async function detectBackends() {
77
76
  }
78
77
  return result;
79
78
  }
79
+ /**
80
+ * Lazy-load HNSWLibBackend to avoid import failures on systems without build tools
81
+ */
82
+ async function createHNSWLibBackend(config) {
83
+ const { HNSWLibBackend } = await import('./hnswlib/HNSWLibBackend.js');
84
+ return new HNSWLibBackend(config);
85
+ }
80
86
  /**
81
87
  * Create vector backend with automatic detection
82
88
  *
@@ -102,7 +108,8 @@ export async function createBackend(type, config) {
102
108
  throw new Error('HNSWLib not available.\n' +
103
109
  'Install with: npm install hnswlib-node');
104
110
  }
105
- backend = new HNSWLibBackend(config);
111
+ // Lazy-load HNSWLibBackend to avoid module-level import failures
112
+ backend = await createHNSWLibBackend(config);
106
113
  }
107
114
  else {
108
115
  // Auto-detect best available backend
@@ -121,7 +128,8 @@ export async function createBackend(type, config) {
121
128
  if (detection.hnswlib) {
122
129
  console.log('[AgentDB] RuVector initialization failed, falling back to HNSWLib');
123
130
  console.log(`[AgentDB] Reason: ${errorMessage.split('\n')[0]}`);
124
- backend = new HNSWLibBackend(config);
131
+ // Lazy-load HNSWLibBackend for fallback
132
+ backend = await createHNSWLibBackend(config);
125
133
  console.log('[AgentDB] Using HNSWLib backend (fallback)');
126
134
  }
127
135
  else {
@@ -131,7 +139,8 @@ export async function createBackend(type, config) {
131
139
  }
132
140
  }
133
141
  else if (detection.hnswlib) {
134
- backend = new HNSWLibBackend(config);
142
+ // Lazy-load HNSWLibBackend when it's the only option
143
+ backend = await createHNSWLibBackend(config);
135
144
  console.log('[AgentDB] Using HNSWLib backend (fallback)');
136
145
  }
137
146
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/backends/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/backends/factory.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"HNSWLibBackend.d.ts","sourceRoot":"","sources":["../../../../src/backends/hnswlib/HNSWLibBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAgB7B,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAEnC,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,MAAM,CAAe;IAG7B,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,SAAS,CAAa;IAG9B,OAAO,CAAC,UAAU,CAA0B;gBAEhC,MAAM,EAAE,YAAY;IAgBhC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBjC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA6BjF;;OAEG;IACH,WAAW,CACT,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,YAAY,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,CAAC,GACD,IAAI;IAMP;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,EAAE;IAuD/E;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAgB3B;;OAEG;IACH,QAAQ,IAAI,WAAW;IAYvB;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC3C;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyD3C;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;;OAGG;IACH,YAAY,CAAC,eAAe,GAAE,MAAY,GAAG,OAAO;IAOpD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ7B;;OAEG;IACH,OAAO,IAAI,OAAO;CAGnB"}
1
+ {"version":3,"file":"HNSWLibBackend.d.ts","sourceRoot":"","sources":["../../../../src/backends/hnswlib/HNSWLibBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,qBAAqB,CAAC;AA2C7B,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAEnC,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,MAAM,CAAe;IAG7B,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,SAAS,CAAa;IAG9B,OAAO,CAAC,UAAU,CAA0B;gBAEhC,MAAM,EAAE,YAAY;IAgBhC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BjC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA6BjF;;OAEG;IACH,WAAW,CACT,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,YAAY,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,CAAC,GACD,IAAI;IAMP;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,EAAE;IAuD/E;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAgB3B;;OAEG;IACH,QAAQ,IAAI,WAAW;IAYvB;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC3C;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyD3C;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;;OAGG;IACH,YAAY,CAAC,eAAe,GAAE,MAAY,GAAG,OAAO;IAOpD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ7B;;OAEG;IACH,OAAO,IAAI,OAAO;CAGnB"}
@@ -13,11 +13,36 @@
13
13
  * Note: hnswlib-node doesn't support true deletion - removed IDs are
14
14
  * tracked but vectors remain until rebuild.
15
15
  */
16
- import hnswlibNode from 'hnswlib-node';
17
16
  import * as fs from 'fs/promises';
18
17
  import * as fsSync from 'fs';
19
18
  import * as path from 'path';
20
- const { HierarchicalNSW } = hnswlibNode;
19
+ // Lazy-loaded hnswlib-node to avoid import failures on systems without build tools
20
+ let HierarchicalNSW = null;
21
+ let hnswlibLoadAttempted = false;
22
+ let hnswlibLoadError = null;
23
+ async function loadHnswlib() {
24
+ if (hnswlibLoadAttempted) {
25
+ if (hnswlibLoadError)
26
+ throw hnswlibLoadError;
27
+ return HierarchicalNSW !== null;
28
+ }
29
+ hnswlibLoadAttempted = true;
30
+ try {
31
+ const hnswlibNode = await import('hnswlib-node');
32
+ HierarchicalNSW = hnswlibNode.default?.HierarchicalNSW
33
+ || hnswlibNode.HierarchicalNSW;
34
+ return true;
35
+ }
36
+ catch (error) {
37
+ hnswlibLoadError = new Error(`hnswlib-node failed to load: ${error.message}\n` +
38
+ 'This usually means native dependencies are missing.\n' +
39
+ 'Either:\n' +
40
+ ' 1. Install build tools and run npm rebuild\n' +
41
+ ' 2. Use forceWasm: true to skip hnswlib entirely\n' +
42
+ ' 3. Install agentdb/wasm for WASM-only mode');
43
+ throw hnswlibLoadError;
44
+ }
45
+ }
21
46
  export class HNSWLibBackend {
22
47
  name = 'hnswlib';
23
48
  index = null;
@@ -49,6 +74,8 @@ export class HNSWLibBackend {
49
74
  * Must be called after construction
50
75
  */
51
76
  async initialize() {
77
+ // Lazy load hnswlib-node (avoids import failures on systems without build tools)
78
+ await loadHnswlib();
52
79
  // Map metric names to hnswlib format
53
80
  const metricMap = {
54
81
  cosine: 'cosine',
@@ -1 +1 @@
1
- {"version":3,"file":"HNSWLibBackend.js","sourceRoot":"","sources":["../../../../src/backends/hnswlib/HNSWLibBackend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HNSWLibBackend.js","sourceRoot":"","sources":["../../../../src/backends/hnswlib/HNSWLibBackend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,318 @@
1
+ /**
2
+ * AgentDB Benchmark Suite
3
+ *
4
+ * Comprehensive benchmarking framework for measuring:
5
+ * - Vector insert performance (batch and single)
6
+ * - Vector search latency (p50, p95, p99)
7
+ * - Memory consumption
8
+ * - Concurrent read/write performance
9
+ * - Quantization performance comparison
10
+ *
11
+ * Usage:
12
+ * import { BenchmarkSuite, runBenchmarks } from './benchmark/BenchmarkSuite';
13
+ *
14
+ * const suite = new BenchmarkSuite();
15
+ * const report = await suite.runAll();
16
+ * console.log(JSON.stringify(report, null, 2));
17
+ *
18
+ * CLI integration:
19
+ * npx tsx packages/agentdb/src/benchmark/BenchmarkSuite.ts
20
+ */
21
+ /**
22
+ * Latency statistics with percentiles
23
+ */
24
+ export interface LatencyStats {
25
+ /** 50th percentile (median) in milliseconds */
26
+ p50: number;
27
+ /** 95th percentile in milliseconds */
28
+ p95: number;
29
+ /** 99th percentile in milliseconds */
30
+ p99: number;
31
+ /** Mean latency in milliseconds */
32
+ mean: number;
33
+ /** Maximum latency in milliseconds */
34
+ max: number;
35
+ /** Minimum latency in milliseconds */
36
+ min: number;
37
+ }
38
+ /**
39
+ * Result from a single benchmark run
40
+ */
41
+ export interface BenchmarkResult {
42
+ /** Benchmark name */
43
+ name: string;
44
+ /** Operations per second */
45
+ opsPerSecond: number;
46
+ /** Latency statistics */
47
+ latencyMs: LatencyStats;
48
+ /** Memory usage in megabytes */
49
+ memoryMB: number;
50
+ /** Total benchmark duration in milliseconds */
51
+ duration: number;
52
+ /** Total operations performed */
53
+ operations: number;
54
+ /** Optional additional metrics */
55
+ metadata?: Record<string, unknown>;
56
+ }
57
+ /**
58
+ * Complete benchmark report
59
+ */
60
+ export interface BenchmarkReport {
61
+ /** Timestamp of the benchmark run */
62
+ timestamp: string;
63
+ /** Platform information */
64
+ platform: {
65
+ os: string;
66
+ arch: string;
67
+ nodeVersion: string;
68
+ };
69
+ /** Backend information */
70
+ backend: {
71
+ name: string;
72
+ isNative?: boolean;
73
+ };
74
+ /** Configuration used for benchmarks */
75
+ config: {
76
+ vectorDimension: number;
77
+ warmupIterations: number;
78
+ };
79
+ /** Individual benchmark results */
80
+ results: BenchmarkResult[];
81
+ /** Summary statistics */
82
+ summary: {
83
+ totalDuration: number;
84
+ benchmarksRun: number;
85
+ benchmarksPassed: number;
86
+ peakMemoryMB: number;
87
+ };
88
+ }
89
+ /**
90
+ * Comparison between two benchmark runs
91
+ */
92
+ export interface ComparisonReport {
93
+ /** Baseline report timestamp */
94
+ baselineTimestamp: string;
95
+ /** Current report timestamp */
96
+ currentTimestamp: string;
97
+ /** Comparison for each benchmark */
98
+ comparisons: Array<{
99
+ name: string;
100
+ baseline: BenchmarkResult | null;
101
+ current: BenchmarkResult | null;
102
+ /** Percentage change in ops/sec (positive = improvement) */
103
+ opsPerSecondChange: number | null;
104
+ /** Percentage change in p99 latency (negative = improvement) */
105
+ p99LatencyChange: number | null;
106
+ /** Percentage change in memory (negative = improvement) */
107
+ memoryChange: number | null;
108
+ /** Overall assessment */
109
+ status: 'improved' | 'regressed' | 'unchanged' | 'new' | 'removed';
110
+ }>;
111
+ /** Summary of changes */
112
+ summary: {
113
+ improved: number;
114
+ regressed: number;
115
+ unchanged: number;
116
+ new: number;
117
+ removed: number;
118
+ };
119
+ }
120
+ /**
121
+ * Benchmark configuration options
122
+ */
123
+ export interface BenchmarkConfig {
124
+ /** Vector dimension for tests (default: 384) */
125
+ vectorDimension?: number;
126
+ /** Number of warmup iterations before measuring (default: 100) */
127
+ warmupIterations?: number;
128
+ /** Vector counts for insert benchmarks (default: [1000, 10000, 100000]) */
129
+ insertCounts?: number[];
130
+ /** Number of search queries to measure (default: 1000) */
131
+ searchQueries?: number;
132
+ /** k value for k-NN search (default: 10) */
133
+ searchK?: number;
134
+ /** Concurrency levels to test (default: [1, 4, 8, 16]) */
135
+ concurrencyLevels?: number[];
136
+ /** Whether to run memory-intensive tests (default: true) */
137
+ runMemoryTests?: boolean;
138
+ /** Whether to run quantization tests (default: true) */
139
+ runQuantizationTests?: boolean;
140
+ }
141
+ /**
142
+ * Abstract base class for benchmarks
143
+ */
144
+ export declare abstract class Benchmark {
145
+ /** Unique benchmark name */
146
+ abstract readonly name: string;
147
+ /** Description of what this benchmark measures */
148
+ abstract readonly description: string;
149
+ /**
150
+ * Setup phase - prepare resources before benchmarking
151
+ */
152
+ abstract setup(): Promise<void>;
153
+ /**
154
+ * Run the benchmark and return results
155
+ */
156
+ abstract run(): Promise<BenchmarkResult>;
157
+ /**
158
+ * Cleanup phase - release resources after benchmarking
159
+ */
160
+ abstract teardown(): Promise<void>;
161
+ /**
162
+ * Generate a random normalized vector
163
+ */
164
+ protected generateRandomVector(dimension: number): Float32Array;
165
+ /**
166
+ * Generate multiple random vectors
167
+ */
168
+ protected generateRandomVectors(count: number, dimension: number): Float32Array[];
169
+ /**
170
+ * Calculate latency statistics from measurements
171
+ */
172
+ protected calculateLatencyStats(measurements: number[]): LatencyStats;
173
+ /**
174
+ * Get current memory usage in MB
175
+ */
176
+ protected getMemoryUsageMB(): number;
177
+ /**
178
+ * Force garbage collection if available
179
+ */
180
+ protected forceGC(): void;
181
+ }
182
+ /**
183
+ * Vector Insert Benchmark
184
+ *
185
+ * Tests batch insert performance at different scales:
186
+ * - 1K vectors (warm cache scenarios)
187
+ * - 10K vectors (typical use case)
188
+ * - 100K vectors (stress test)
189
+ */
190
+ export declare class VectorInsertBenchmark extends Benchmark {
191
+ readonly name = "VectorInsert";
192
+ readonly description = "Batch insert performance at different scales";
193
+ private backend;
194
+ private config;
195
+ private vectors1K;
196
+ private vectors10K;
197
+ private vectors100K;
198
+ constructor(config?: BenchmarkConfig);
199
+ setup(): Promise<void>;
200
+ run(): Promise<BenchmarkResult>;
201
+ teardown(): Promise<void>;
202
+ }
203
+ /**
204
+ * Vector Search Benchmark
205
+ *
206
+ * Tests k-NN search latency with percentile measurements
207
+ */
208
+ export declare class VectorSearchBenchmark extends Benchmark {
209
+ readonly name = "VectorSearch";
210
+ readonly description = "k-NN search latency (p50, p95, p99)";
211
+ private backend;
212
+ private config;
213
+ private queryVectors;
214
+ constructor(config?: BenchmarkConfig);
215
+ setup(): Promise<void>;
216
+ run(): Promise<BenchmarkResult>;
217
+ teardown(): Promise<void>;
218
+ }
219
+ /**
220
+ * Memory Usage Benchmark
221
+ *
222
+ * Tracks memory consumption at different scales
223
+ */
224
+ export declare class MemoryUsageBenchmark extends Benchmark {
225
+ readonly name = "MemoryUsage";
226
+ readonly description = "Memory consumption tracking";
227
+ private backend;
228
+ private config;
229
+ constructor(config?: BenchmarkConfig);
230
+ setup(): Promise<void>;
231
+ run(): Promise<BenchmarkResult>;
232
+ teardown(): Promise<void>;
233
+ }
234
+ /**
235
+ * Concurrency Benchmark
236
+ *
237
+ * Tests concurrent read/write performance
238
+ */
239
+ export declare class ConcurrencyBenchmark extends Benchmark {
240
+ readonly name = "Concurrency";
241
+ readonly description = "Concurrent read/write performance";
242
+ private backend;
243
+ private config;
244
+ constructor(config?: BenchmarkConfig);
245
+ setup(): Promise<void>;
246
+ run(): Promise<BenchmarkResult>;
247
+ teardown(): Promise<void>;
248
+ }
249
+ /**
250
+ * Quantization Benchmark
251
+ *
252
+ * Compares quantized vs unquantized performance
253
+ */
254
+ export declare class QuantizationBenchmark extends Benchmark {
255
+ readonly name = "Quantization";
256
+ readonly description = "Quantized vs unquantized performance comparison";
257
+ private config;
258
+ constructor(config?: BenchmarkConfig);
259
+ setup(): Promise<void>;
260
+ run(): Promise<BenchmarkResult>;
261
+ teardown(): Promise<void>;
262
+ }
263
+ /**
264
+ * BenchmarkSuite - Orchestrates benchmark execution and reporting
265
+ */
266
+ export declare class BenchmarkSuite {
267
+ private benchmarks;
268
+ private config;
269
+ constructor(config?: BenchmarkConfig);
270
+ /**
271
+ * Register a benchmark to the suite
272
+ */
273
+ register(benchmark: Benchmark): void;
274
+ /**
275
+ * Unregister a benchmark from the suite
276
+ */
277
+ unregister(name: string): boolean;
278
+ /**
279
+ * Get list of registered benchmark names
280
+ */
281
+ listBenchmarks(): string[];
282
+ /**
283
+ * Run all registered benchmarks
284
+ */
285
+ runAll(): Promise<BenchmarkReport>;
286
+ /**
287
+ * Run a specific benchmark by name
288
+ */
289
+ runByName(name: string): Promise<BenchmarkResult>;
290
+ /**
291
+ * Compare two benchmark reports
292
+ */
293
+ compare(baseline: BenchmarkReport, current: BenchmarkReport): ComparisonReport;
294
+ }
295
+ /**
296
+ * Run benchmarks and return results as JSON
297
+ *
298
+ * @param config - Benchmark configuration
299
+ * @returns Promise<BenchmarkReport>
300
+ */
301
+ export declare function runBenchmarks(config?: BenchmarkConfig): Promise<BenchmarkReport>;
302
+ /**
303
+ * Run benchmarks with a specific subset
304
+ *
305
+ * @param names - Names of benchmarks to run
306
+ * @param config - Benchmark configuration
307
+ * @returns Promise<BenchmarkResult[]>
308
+ */
309
+ export declare function runSelectedBenchmarks(names: string[], config?: BenchmarkConfig): Promise<BenchmarkResult[]>;
310
+ /**
311
+ * Format benchmark report as markdown
312
+ */
313
+ export declare function formatReportAsMarkdown(report: BenchmarkReport): string;
314
+ /**
315
+ * Format comparison report as markdown
316
+ */
317
+ export declare function formatComparisonAsMarkdown(comparison: ComparisonReport): string;
318
+ //# sourceMappingURL=BenchmarkSuite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BenchmarkSuite.d.ts","sourceRoot":"","sources":["../../../src/benchmark/BenchmarkSuite.ts"],"names":[],"mappings":"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"}