agentic-flow 2.0.7 → 2.0.8

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 (316) hide show
  1. package/.claude/settings.json +133 -9
  2. package/.claude/skills/agentic-flow-quickstart/skill.md +69 -0
  3. package/.claude/skills/hooks-automation/skill.md +155 -0
  4. package/.claude/skills/memory-patterns/skill.md +110 -0
  5. package/.claude/skills/sparc-methodology/skill.md +137 -0
  6. package/.claude/skills/swarm-coordination/skill.md +94 -0
  7. package/.claude/skills/worker-benchmarks/skill.md +135 -0
  8. package/.claude/skills/worker-integration/skill.md +154 -0
  9. package/.claude/statusline.mjs +109 -0
  10. package/.claude/statusline.sh +71 -0
  11. package/README.md +1797 -624
  12. package/dist/.tsbuildinfo +1 -1
  13. package/dist/agentdb/index.d.ts +2 -0
  14. package/dist/agentdb/index.d.ts.map +1 -1
  15. package/dist/agentdb/index.js +5 -0
  16. package/dist/agentdb/index.js.map +1 -1
  17. package/dist/agentdb/prerequisites.d.ts +25 -0
  18. package/dist/agentdb/prerequisites.d.ts.map +1 -0
  19. package/dist/agentdb/prerequisites.js +180 -0
  20. package/dist/agentdb/prerequisites.js.map +1 -0
  21. package/dist/benchmarks/embeddings-benchmark.d.ts +38 -0
  22. package/dist/benchmarks/embeddings-benchmark.d.ts.map +1 -0
  23. package/dist/benchmarks/embeddings-benchmark.js +282 -0
  24. package/dist/benchmarks/embeddings-benchmark.js.map +1 -0
  25. package/dist/billing/mcp/tools.js +1 -0
  26. package/dist/billing/mcp/tools.js.map +1 -1
  27. package/dist/cli/commands/embeddings.d.ts +12 -0
  28. package/dist/cli/commands/embeddings.d.ts.map +1 -0
  29. package/dist/cli/commands/embeddings.js +386 -0
  30. package/dist/cli/commands/embeddings.js.map +1 -0
  31. package/dist/cli/commands/hooks.d.ts.map +1 -1
  32. package/dist/cli/commands/hooks.js +79 -4
  33. package/dist/cli/commands/hooks.js.map +1 -1
  34. package/dist/cli/commands/init.d.ts +8 -0
  35. package/dist/cli/commands/init.d.ts.map +1 -0
  36. package/dist/cli/commands/init.js +514 -0
  37. package/dist/cli/commands/init.js.map +1 -0
  38. package/dist/cli/commands/workers.d.ts +9 -0
  39. package/dist/cli/commands/workers.d.ts.map +1 -0
  40. package/dist/cli/commands/workers.js +991 -0
  41. package/dist/cli/commands/workers.js.map +1 -0
  42. package/dist/cli/config-wizard.d.ts.map +1 -1
  43. package/dist/cli/config-wizard.js +47 -25
  44. package/dist/cli/config-wizard.js.map +1 -1
  45. package/dist/cli-proxy.js +89 -1
  46. package/dist/cli-proxy.js.map +1 -1
  47. package/dist/core/agentdb-fast.js +3 -3
  48. package/dist/core/agentdb-fast.js.map +1 -1
  49. package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
  50. package/dist/core/agentdb-wrapper-enhanced.js +37 -11
  51. package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
  52. package/dist/core/agentdb-wrapper.d.ts +3 -2
  53. package/dist/core/agentdb-wrapper.d.ts.map +1 -1
  54. package/dist/core/agentdb-wrapper.js +15 -1
  55. package/dist/core/agentdb-wrapper.js.map +1 -1
  56. package/dist/core/attention-native.d.ts +4 -0
  57. package/dist/core/attention-native.d.ts.map +1 -1
  58. package/dist/core/attention-native.js +14 -2
  59. package/dist/core/attention-native.js.map +1 -1
  60. package/dist/core/gnn-wrapper.d.ts.map +1 -1
  61. package/dist/core/gnn-wrapper.js +14 -0
  62. package/dist/core/gnn-wrapper.js.map +1 -1
  63. package/dist/embeddings/index.d.ts +17 -0
  64. package/dist/embeddings/index.d.ts.map +1 -0
  65. package/dist/embeddings/index.js +17 -0
  66. package/dist/embeddings/index.js.map +1 -0
  67. package/dist/embeddings/neural-substrate.d.ts +206 -0
  68. package/dist/embeddings/neural-substrate.d.ts.map +1 -0
  69. package/dist/embeddings/neural-substrate.js +629 -0
  70. package/dist/embeddings/neural-substrate.js.map +1 -0
  71. package/dist/embeddings/optimized-embedder.d.ts +103 -0
  72. package/dist/embeddings/optimized-embedder.d.ts.map +1 -0
  73. package/dist/embeddings/optimized-embedder.js +730 -0
  74. package/dist/embeddings/optimized-embedder.js.map +1 -0
  75. package/dist/examples/embedding-geometry.d.ts +105 -0
  76. package/dist/examples/embedding-geometry.d.ts.map +1 -0
  77. package/dist/examples/embedding-geometry.js +528 -0
  78. package/dist/examples/embedding-geometry.js.map +1 -0
  79. package/dist/federation/SecurityManager.d.ts +11 -2
  80. package/dist/federation/SecurityManager.d.ts.map +1 -1
  81. package/dist/federation/SecurityManager.js +50 -17
  82. package/dist/federation/SecurityManager.js.map +1 -1
  83. package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
  84. package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
  85. package/dist/hooks/swarm-learning-optimizer.js +5 -5
  86. package/dist/hooks/swarm-learning-optimizer.js.map +1 -1
  87. package/dist/index.d.ts +5 -3
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +89 -51
  90. package/dist/index.js.map +1 -1
  91. package/dist/intelligence/IntelligenceStore.d.ts +35 -26
  92. package/dist/intelligence/IntelligenceStore.d.ts.map +1 -1
  93. package/dist/intelligence/IntelligenceStore.js +308 -123
  94. package/dist/intelligence/IntelligenceStore.js.map +1 -1
  95. package/dist/intelligence/RuVectorIntelligence.d.ts +26 -1
  96. package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -1
  97. package/dist/intelligence/RuVectorIntelligence.js +49 -10
  98. package/dist/intelligence/RuVectorIntelligence.js.map +1 -1
  99. package/dist/intelligence/agent-booster-enhanced.d.ts +1 -0
  100. package/dist/intelligence/agent-booster-enhanced.d.ts.map +1 -1
  101. package/dist/intelligence/agent-booster-enhanced.js +24 -3
  102. package/dist/intelligence/agent-booster-enhanced.js.map +1 -1
  103. package/dist/intelligence/index.d.ts +29 -3
  104. package/dist/intelligence/index.d.ts.map +1 -1
  105. package/dist/intelligence/index.js +13 -3
  106. package/dist/intelligence/index.js.map +1 -1
  107. package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
  108. package/dist/mcp/claudeFlowSdkServer.js +162 -115
  109. package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
  110. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +5 -5
  111. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -1
  112. package/dist/mcp/fastmcp/tools/swarm/init.d.ts.map +1 -1
  113. package/dist/mcp/fastmcp/tools/swarm/init.js +36 -7
  114. package/dist/mcp/fastmcp/tools/swarm/init.js.map +1 -1
  115. package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts.map +1 -1
  116. package/dist/mcp/fastmcp/tools/swarm/spawn.js +47 -8
  117. package/dist/mcp/fastmcp/tools/swarm/spawn.js.map +1 -1
  118. package/dist/mcp/tools/agent-booster-tools.d.ts +15 -1
  119. package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
  120. package/dist/mcp/tools/agent-booster-tools.js +79 -63
  121. package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
  122. package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
  123. package/dist/mcp/tools/sona-tools.js +6 -0
  124. package/dist/mcp/tools/sona-tools.js.map +1 -1
  125. package/dist/memory/SharedMemoryPool.d.ts +103 -0
  126. package/dist/memory/SharedMemoryPool.d.ts.map +1 -0
  127. package/dist/memory/SharedMemoryPool.js +263 -0
  128. package/dist/memory/SharedMemoryPool.js.map +1 -0
  129. package/dist/optimizations/agent-booster-migration.d.ts +2 -1
  130. package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
  131. package/dist/optimizations/agent-booster-migration.js +69 -45
  132. package/dist/optimizations/agent-booster-migration.js.map +1 -1
  133. package/dist/orchestration/index.d.ts +11 -0
  134. package/dist/orchestration/index.d.ts.map +1 -0
  135. package/dist/orchestration/index.js +10 -0
  136. package/dist/orchestration/index.js.map +1 -0
  137. package/dist/orchestration/memory-plane-types.d.ts +23 -0
  138. package/dist/orchestration/memory-plane-types.d.ts.map +1 -0
  139. package/dist/orchestration/memory-plane-types.js +5 -0
  140. package/dist/orchestration/memory-plane-types.js.map +1 -0
  141. package/dist/orchestration/memory-plane.d.ts +41 -0
  142. package/dist/orchestration/memory-plane.d.ts.map +1 -0
  143. package/dist/orchestration/memory-plane.js +84 -0
  144. package/dist/orchestration/memory-plane.js.map +1 -0
  145. package/dist/orchestration/orchestration-client.d.ts +104 -0
  146. package/dist/orchestration/orchestration-client.d.ts.map +1 -0
  147. package/dist/orchestration/orchestration-client.js +94 -0
  148. package/dist/orchestration/orchestration-client.js.map +1 -0
  149. package/dist/orchestration/orchestration-runtime.d.ts +26 -0
  150. package/dist/orchestration/orchestration-runtime.d.ts.map +1 -0
  151. package/dist/orchestration/orchestration-runtime.js +78 -0
  152. package/dist/orchestration/orchestration-runtime.js.map +1 -0
  153. package/dist/orchestration/orchestration-types.d.ts +124 -0
  154. package/dist/orchestration/orchestration-types.d.ts.map +1 -0
  155. package/dist/orchestration/orchestration-types.js +7 -0
  156. package/dist/orchestration/orchestration-types.js.map +1 -0
  157. package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
  158. package/dist/proxy/anthropic-to-requesty.js.map +1 -1
  159. package/dist/proxy/quic-proxy.d.ts +0 -1
  160. package/dist/proxy/quic-proxy.d.ts.map +1 -1
  161. package/dist/proxy/quic-proxy.js +2 -2
  162. package/dist/proxy/quic-proxy.js.map +1 -1
  163. package/dist/reasoningbank/AdvancedMemory.js +1 -1
  164. package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
  165. package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
  166. package/dist/reasoningbank/HybridBackend.js +2 -5
  167. package/dist/reasoningbank/HybridBackend.js.map +1 -1
  168. package/dist/reasoningbank/backend-selector.d.ts +10 -0
  169. package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
  170. package/dist/reasoningbank/backend-selector.js +45 -5
  171. package/dist/reasoningbank/backend-selector.js.map +1 -1
  172. package/dist/reasoningbank/core/consolidate.d.ts.map +1 -1
  173. package/dist/reasoningbank/core/consolidate.js +113 -45
  174. package/dist/reasoningbank/core/consolidate.js.map +1 -1
  175. package/dist/reasoningbank/index-new.d.ts +1 -6
  176. package/dist/reasoningbank/index-new.d.ts.map +1 -1
  177. package/dist/reasoningbank/index-new.js +1 -6
  178. package/dist/reasoningbank/index-new.js.map +1 -1
  179. package/dist/reasoningbank/index.d.ts +6 -0
  180. package/dist/reasoningbank/index.d.ts.map +1 -1
  181. package/dist/reasoningbank/index.js +6 -13
  182. package/dist/reasoningbank/index.js.map +1 -1
  183. package/dist/reasoningbank/utils/embeddings.d.ts +1 -0
  184. package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -1
  185. package/dist/reasoningbank/utils/embeddings.js +53 -26
  186. package/dist/reasoningbank/utils/embeddings.js.map +1 -1
  187. package/dist/router/index.d.ts +2 -1
  188. package/dist/router/index.d.ts.map +1 -1
  189. package/dist/router/index.js +1 -0
  190. package/dist/router/index.js.map +1 -1
  191. package/dist/router/providers/ollama.d.ts +20 -0
  192. package/dist/router/providers/ollama.d.ts.map +1 -0
  193. package/dist/router/providers/ollama.js +242 -0
  194. package/dist/router/providers/ollama.js.map +1 -0
  195. package/dist/router/providers/onnx-local-optimized.d.ts +2 -0
  196. package/dist/router/providers/onnx-local-optimized.d.ts.map +1 -1
  197. package/dist/router/providers/onnx-local-optimized.js +10 -0
  198. package/dist/router/providers/onnx-local-optimized.js.map +1 -1
  199. package/dist/router/providers/onnx-local.d.ts +1 -0
  200. package/dist/router/providers/onnx-local.d.ts.map +1 -1
  201. package/dist/router/providers/onnx-local.js +22 -5
  202. package/dist/router/providers/onnx-local.js.map +1 -1
  203. package/dist/router/router.d.ts.map +1 -1
  204. package/dist/router/router.js +39 -23
  205. package/dist/router/router.js.map +1 -1
  206. package/dist/sdk/index.d.ts +2 -1
  207. package/dist/sdk/index.d.ts.map +1 -1
  208. package/dist/sdk/index.js +3 -1
  209. package/dist/sdk/index.js.map +1 -1
  210. package/dist/services/embedding-service.js.map +1 -1
  211. package/dist/services/sona-agent-training.d.ts +1 -0
  212. package/dist/services/sona-agent-training.d.ts.map +1 -1
  213. package/dist/services/sona-agent-training.js.map +1 -1
  214. package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
  215. package/dist/services/sona-agentdb-integration.js +9 -6
  216. package/dist/services/sona-agentdb-integration.js.map +1 -1
  217. package/dist/services/sona-service.d.ts.map +1 -1
  218. package/dist/services/sona-service.js +6 -5
  219. package/dist/services/sona-service.js.map +1 -1
  220. package/dist/utils/cli.d.ts +1 -1
  221. package/dist/utils/cli.d.ts.map +1 -1
  222. package/dist/utils/cli.js +21 -0
  223. package/dist/utils/cli.js.map +1 -1
  224. package/dist/utils/index.d.ts +6 -0
  225. package/dist/utils/index.d.ts.map +1 -0
  226. package/dist/utils/index.js +6 -0
  227. package/dist/utils/index.js.map +1 -0
  228. package/dist/utils/model-cache.d.ts +61 -0
  229. package/dist/utils/model-cache.d.ts.map +1 -0
  230. package/dist/utils/model-cache.js +176 -0
  231. package/dist/utils/model-cache.js.map +1 -0
  232. package/dist/utils/suppress-warnings.d.ts +19 -0
  233. package/dist/utils/suppress-warnings.d.ts.map +1 -0
  234. package/dist/utils/suppress-warnings.js +59 -0
  235. package/dist/utils/suppress-warnings.js.map +1 -0
  236. package/dist/workers/consolidated-phases.d.ts +40 -0
  237. package/dist/workers/consolidated-phases.d.ts.map +1 -0
  238. package/dist/workers/consolidated-phases.js +497 -0
  239. package/dist/workers/consolidated-phases.js.map +1 -0
  240. package/dist/workers/custom-worker-config.d.ts +133 -0
  241. package/dist/workers/custom-worker-config.d.ts.map +1 -0
  242. package/dist/workers/custom-worker-config.js +215 -0
  243. package/dist/workers/custom-worker-config.js.map +1 -0
  244. package/dist/workers/custom-worker-factory.d.ts +89 -0
  245. package/dist/workers/custom-worker-factory.d.ts.map +1 -0
  246. package/dist/workers/custom-worker-factory.js +404 -0
  247. package/dist/workers/custom-worker-factory.js.map +1 -0
  248. package/dist/workers/dispatch-service.d.ts +123 -0
  249. package/dist/workers/dispatch-service.d.ts.map +1 -0
  250. package/dist/workers/dispatch-service.js +1024 -0
  251. package/dist/workers/dispatch-service.js.map +1 -0
  252. package/dist/workers/hooks-integration.d.ts +79 -0
  253. package/dist/workers/hooks-integration.d.ts.map +1 -0
  254. package/dist/workers/hooks-integration.js +286 -0
  255. package/dist/workers/hooks-integration.js.map +1 -0
  256. package/dist/workers/index.d.ts +42 -0
  257. package/dist/workers/index.d.ts.map +1 -0
  258. package/dist/workers/index.js +52 -0
  259. package/dist/workers/index.js.map +1 -0
  260. package/dist/workers/mcp-tools.d.ts +56 -0
  261. package/dist/workers/mcp-tools.d.ts.map +1 -0
  262. package/dist/workers/mcp-tools.js +359 -0
  263. package/dist/workers/mcp-tools.js.map +1 -0
  264. package/dist/workers/phase-executors.d.ts +22 -0
  265. package/dist/workers/phase-executors.d.ts.map +1 -0
  266. package/dist/workers/phase-executors.js +445 -0
  267. package/dist/workers/phase-executors.js.map +1 -0
  268. package/dist/workers/resource-governor.d.ts +75 -0
  269. package/dist/workers/resource-governor.d.ts.map +1 -0
  270. package/dist/workers/resource-governor.js +187 -0
  271. package/dist/workers/resource-governor.js.map +1 -0
  272. package/dist/workers/ruvector-integration.d.ts +163 -0
  273. package/dist/workers/ruvector-integration.d.ts.map +1 -0
  274. package/dist/workers/ruvector-integration.js +543 -0
  275. package/dist/workers/ruvector-integration.js.map +1 -0
  276. package/dist/workers/ruvector-native-integration.d.ts +91 -0
  277. package/dist/workers/ruvector-native-integration.d.ts.map +1 -0
  278. package/dist/workers/ruvector-native-integration.js +254 -0
  279. package/dist/workers/ruvector-native-integration.js.map +1 -0
  280. package/dist/workers/trigger-detector.d.ts +68 -0
  281. package/dist/workers/trigger-detector.d.ts.map +1 -0
  282. package/dist/workers/trigger-detector.js +281 -0
  283. package/dist/workers/trigger-detector.js.map +1 -0
  284. package/dist/workers/types.d.ts +145 -0
  285. package/dist/workers/types.d.ts.map +1 -0
  286. package/dist/workers/types.js +6 -0
  287. package/dist/workers/types.js.map +1 -0
  288. package/dist/workers/worker-agent-integration.d.ts +140 -0
  289. package/dist/workers/worker-agent-integration.d.ts.map +1 -0
  290. package/dist/workers/worker-agent-integration.js +471 -0
  291. package/dist/workers/worker-agent-integration.js.map +1 -0
  292. package/dist/workers/worker-benchmarks.d.ts +88 -0
  293. package/dist/workers/worker-benchmarks.d.ts.map +1 -0
  294. package/dist/workers/worker-benchmarks.js +452 -0
  295. package/dist/workers/worker-benchmarks.js.map +1 -0
  296. package/dist/workers/worker-registry.d.ts +85 -0
  297. package/dist/workers/worker-registry.d.ts.map +1 -0
  298. package/dist/workers/worker-registry.js +547 -0
  299. package/dist/workers/worker-registry.js.map +1 -0
  300. package/docs/embeddings/EMBEDDING_GEOMETRY.md +935 -0
  301. package/package.json +27 -9
  302. package/scripts/postinstall.js +45 -4
  303. package/wasm/reasoningbank/reasoningbank_wasm.js +1 -1
  304. package/wasm/reasoningbank/reasoningbank_wasm_bg.js +54 -54
  305. package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm +0 -0
  306. package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm.d.ts +4 -3
  307. package/.claude/agents/test-neural.md +0 -14
  308. /package/.claude/agents/analysis/{code-review/analyze-code-quality.md → analyze-code-quality.md} +0 -0
  309. /package/.claude/agents/architecture/{system-design/arch-system-design.md → arch-system-design.md} +0 -0
  310. /package/.claude/agents/data/{ml/data-ml-model.md → data-ml-model.md} +0 -0
  311. /package/.claude/agents/development/{backend/dev-backend-api.md → dev-backend-api.md} +0 -0
  312. /package/.claude/agents/devops/{ci-cd/ops-cicd-github.md → ops-cicd-github.md} +0 -0
  313. /package/.claude/agents/documentation/{api-docs/docs-api-openapi.md → docs-api-openapi.md} +0 -0
  314. /package/.claude/agents/specialized/{mobile/spec-mobile-react-native.md → spec-mobile-react-native.md} +0 -0
  315. /package/.claude/agents/testing/{validation/production-validator.md → production-validator.md} +0 -0
  316. /package/.claude/agents/testing/{unit/tdd-london-swarm.md → tdd-london-swarm.md} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"attention-native.d.ts","sourceRoot":"","sources":["../../src/core/attention-native.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAmBD;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,eAAe;IAenC;;OAEG;IACH,OAAO,CACL,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,EAC9B,GAAG,EAAE,MAAM,EAAE,GAAG,YAAY,EAC5B,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,EAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,GAC7B;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,CAAA;KAAE;IAqBrD;;OAEG;IACH,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,eAAe;IAUnC;;OAEG;IACH,OAAO,CACL,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,YAAY,EAAE,EAClC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,YAAY,EAAE,EAChC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,YAAY,EAAE,EAClC,QAAQ,GAAE,MAAU,GACnB;QAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,EAAE,CAAA;KAAE;CAmBvD;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,eAAe;IAenC,OAAO,CACL,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,YAAY,EAAE,EAClC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,YAAY,EAAE,EAChC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,YAAY,EAAE,GACjC;QAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAA;KAAE;CAe1B;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,eAAe;IAUnC,OAAO,CACL,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,EAC9B,GAAG,EAAE,MAAM,EAAE,GAAG,YAAY,EAC5B,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,GAC7B;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAgB1C;AAED;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,eAAe,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAc7D,OAAO,CACL,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,EAC9B,GAAG,EAAE,MAAM,EAAE,GAAG,YAAY,EAC5B,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,EAC9B,IAAI,GAAE,MAAU,GACf;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,EAAE,CAAA;KAAE;CAgBjD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,EAAE,MAAM,EAAE,EACb,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,GACd;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAuBzC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAOpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,KAAK,EAC9D,MAAM,EAAE,eAAe,GACtB,kBAAkB,GAAG,cAAc,GAAG,eAAe,GAAG,mBAAmB,GAAG,YAAY,CAe5F"}
1
+ {"version":3,"file":"attention-native.d.ts","sourceRoot":"","sources":["../../src/core/attention-native.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,19 @@
3
3
  *
4
4
  * Properly wraps @ruvector/attention native Rust implementations
5
5
  * with TypedArray conversions and proper error handling
6
+ *
7
+ * Note: @ruvector/attention is optional - falls back gracefully
6
8
  */
7
- import * as nativeAttention from '@ruvector/attention';
9
+ let nativeAttention = null;
10
+ let attentionAvailable = false;
11
+ try {
12
+ nativeAttention = await import('@ruvector/attention');
13
+ attentionAvailable = true;
14
+ }
15
+ catch {
16
+ console.warn('[attention-native] @ruvector/attention not available');
17
+ }
18
+ export { attentionAvailable };
8
19
  /**
9
20
  * Convert regular array to Float32Array if needed
10
21
  */
@@ -190,7 +201,8 @@ export class MoEAttention {
190
201
  this.hiddenDim = config.hiddenDim;
191
202
  this.numExperts = config.numExperts || 4;
192
203
  try {
193
- this.nativeInstance = new nativeAttention.MoEAttention(this.hiddenDim, this.numExperts);
204
+ // MoEAttention constructor may have different signature in different versions
205
+ this.nativeInstance = new nativeAttention.MoEAttention(this.hiddenDim);
194
206
  }
195
207
  catch (error) {
196
208
  throw new Error(`Failed to initialize native MoEAttention: ${error.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"attention-native.js","sourceRoot":"","sources":["../../src/core/attention-native.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Native Attention Wrappers\n *\n * Properly wraps @ruvector/attention native Rust implementations\n * with TypedArray conversions and proper error handling\n */\n\nimport * as nativeAttention from '@ruvector/attention';\n\nexport interface AttentionConfig {\n hiddenDim: number;\n numHeads?: number;\n dropoutRate?: number;\n useFlash?: boolean;\n}\n\n/**\n * Convert regular array to Float32Array if needed\n */\nfunction toFloat32Array(input: number[] | Float32Array): Float32Array {\n if (input instanceof Float32Array) {\n return input;\n }\n return new Float32Array(input);\n}\n\n/**\n * Convert Float32Array to regular array for JS compatibility\n */\nfunction toArray(input: Float32Array): number[] {\n return Array.from(input);\n}\n\n/**\n * Native Multi-Head Attention (uses Rust implementation)\n *\n * This wrapper properly converts between JavaScript arrays and TypedArrays\n * required by the native Rust implementation.\n */\nexport class MultiHeadAttention {\n private nativeInstance: any;\n private hiddenDim: number;\n private numHeads: number;\n\n constructor(config: AttentionConfig) {\n this.hiddenDim = config.hiddenDim;\n this.numHeads = config.numHeads || 8;\n\n try {\n // Create native Rust instance\n this.nativeInstance = new nativeAttention.MultiHeadAttention(\n this.hiddenDim,\n this.numHeads\n );\n } catch (error: any) {\n throw new Error(`Failed to initialize native MultiHeadAttention: ${error.message}`);\n }\n }\n\n /**\n * Forward pass using native Rust implementation\n */\n forward(\n query: number[] | Float32Array,\n key: number[] | Float32Array,\n value: number[] | Float32Array,\n mask?: number[] | Float32Array\n ): { output: number[]; attentionWeights: number[][] } {\n try {\n // Convert to Float32Array for native code\n const q = toFloat32Array(query);\n const k = toFloat32Array(key);\n const v = toFloat32Array(value);\n const m = mask ? toFloat32Array(mask) : undefined;\n\n // Call native compute method\n const result = this.nativeInstance.compute(q, k, v, m);\n\n // Convert result back to regular arrays\n return {\n output: toArray(result),\n attentionWeights: [[]] // Native doesn't return weights separately\n };\n } catch (error: any) {\n throw new Error(`MultiHeadAttention forward failed: ${error.message}`);\n }\n }\n\n /**\n * Get dimensions\n */\n get dim(): number {\n return this.nativeInstance.dim;\n }\n\n get headDim(): number {\n return this.nativeInstance.headDim;\n }\n}\n\n/**\n * Native Flash Attention (uses Rust implementation)\n *\n * Memory-efficient attention with tiling/chunking\n */\nexport class FlashAttention {\n private nativeInstance: any;\n private hiddenDim: number;\n\n constructor(config: AttentionConfig) {\n this.hiddenDim = config.hiddenDim;\n\n try {\n this.nativeInstance = new nativeAttention.FlashAttention(this.hiddenDim);\n } catch (error: any) {\n throw new Error(`Failed to initialize native FlashAttention: ${error.message}`);\n }\n }\n\n /**\n * Forward pass with batch support\n */\n forward(\n query: number[][] | Float32Array[],\n key: number[][] | Float32Array[],\n value: number[][] | Float32Array[],\n numHeads: number = 8\n ): { output: number[][]; attentionScores: number[][] } {\n try {\n // Convert batch to Float32Array\n const q = query.map(toFloat32Array);\n const k = key.map(toFloat32Array);\n const v = value.map(toFloat32Array);\n\n // Call native compute\n const result = this.nativeInstance.compute(q, k, v, numHeads);\n\n // Convert result back\n return {\n output: result.map((r: Float32Array) => toArray(r)),\n attentionScores: [[]]\n };\n } catch (error: any) {\n throw new Error(`FlashAttention forward failed: ${error.message}`);\n }\n }\n}\n\n/**\n * Native Linear Attention (uses Rust implementation)\n *\n * O(n) complexity approximation of attention\n */\nexport class LinearAttention {\n private nativeInstance: any;\n private hiddenDim: number;\n\n constructor(config: AttentionConfig) {\n this.hiddenDim = config.hiddenDim;\n\n try {\n // LinearAttention constructor: (hiddenDim, seqLen)\n // We'll use hiddenDim for both since seqLen varies per forward call\n this.nativeInstance = new nativeAttention.LinearAttention(\n this.hiddenDim,\n this.hiddenDim\n );\n } catch (error: any) {\n throw new Error(`Failed to initialize native LinearAttention: ${error.message}`);\n }\n }\n\n forward(\n query: number[][] | Float32Array[],\n key: number[][] | Float32Array[],\n value: number[][] | Float32Array[]\n ): { output: number[][] } {\n try {\n const q = query.map(toFloat32Array);\n const k = key.map(toFloat32Array);\n const v = value.map(toFloat32Array);\n\n const result = this.nativeInstance.compute(q, k, v);\n\n return {\n output: result.map((r: Float32Array) => toArray(r))\n };\n } catch (error: any) {\n throw new Error(`LinearAttention forward failed: ${error.message}`);\n }\n }\n}\n\n/**\n * Native Hyperbolic Attention (uses Rust implementation)\n */\nexport class HyperbolicAttention {\n private nativeInstance: any;\n private hiddenDim: number;\n\n constructor(config: AttentionConfig) {\n this.hiddenDim = config.hiddenDim;\n\n try {\n this.nativeInstance = new nativeAttention.HyperbolicAttention(this.hiddenDim);\n } catch (error: any) {\n throw new Error(`Failed to initialize native HyperbolicAttention: ${error.message}`);\n }\n }\n\n forward(\n query: number[] | Float32Array,\n key: number[] | Float32Array,\n value: number[] | Float32Array\n ): { output: number[]; distance: number } {\n try {\n const q = toFloat32Array(query);\n const k = toFloat32Array(key);\n const v = toFloat32Array(value);\n\n const result = this.nativeInstance.compute(q, k, v);\n\n return {\n output: toArray(result.output),\n distance: result.distance\n };\n } catch (error: any) {\n throw new Error(`HyperbolicAttention forward failed: ${error.message}`);\n }\n }\n}\n\n/**\n * Native MoE Attention (uses Rust implementation)\n *\n * Mixture of Experts with top-k routing\n */\nexport class MoEAttention {\n private nativeInstance: any;\n private hiddenDim: number;\n private numExperts: number;\n\n constructor(config: AttentionConfig & { numExperts?: number }) {\n this.hiddenDim = config.hiddenDim;\n this.numExperts = config.numExperts || 4;\n\n try {\n this.nativeInstance = new nativeAttention.MoEAttention(\n this.hiddenDim,\n this.numExperts\n );\n } catch (error: any) {\n throw new Error(`Failed to initialize native MoEAttention: ${error.message}`);\n }\n }\n\n forward(\n query: number[] | Float32Array,\n key: number[] | Float32Array,\n value: number[] | Float32Array,\n topK: number = 2\n ): { output: number[]; expertWeights: number[] } {\n try {\n const q = toFloat32Array(query);\n const k = toFloat32Array(key);\n const v = toFloat32Array(value);\n\n const result = this.nativeInstance.compute(q, k, v, topK);\n\n return {\n output: toArray(result.output),\n expertWeights: toArray(result.expertWeights)\n };\n } catch (error: any) {\n throw new Error(`MoEAttention forward failed: ${error.message}`);\n }\n }\n}\n\n/**\n * Scaled Dot-Product Attention (pure JavaScript, always works)\n */\nexport function scaledDotProductAttention(\n query: number[],\n key: number[],\n value: number[],\n mask?: number[]\n): { output: number[]; weights: number[] } {\n const dk = query.length;\n\n // Compute attention scores: Q · K^T / sqrt(dk)\n let score = 0;\n for (let i = 0; i < dk; i++) {\n score += query[i] * key[i];\n }\n score /= Math.sqrt(dk);\n\n // Apply mask if provided\n if (mask && mask[0] === 0) {\n score = -Infinity;\n }\n\n // Softmax (single score version)\n const expScore = Math.exp(score);\n const weight = expScore;\n\n // Weighted value\n const output = value.map(v => v * weight);\n\n return { output, weights: [weight] };\n}\n\n/**\n * Check if native attention is available\n */\nexport function isNativeAttentionAvailable(): boolean {\n try {\n const test = new nativeAttention.MultiHeadAttention(128, 4);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Factory function to create appropriate attention module\n */\nexport function createAttention(\n type: 'multi-head' | 'flash' | 'linear' | 'hyperbolic' | 'moe',\n config: AttentionConfig\n): MultiHeadAttention | FlashAttention | LinearAttention | HyperbolicAttention | MoEAttention {\n switch (type) {\n case 'multi-head':\n return new MultiHeadAttention(config);\n case 'flash':\n return new FlashAttention(config);\n case 'linear':\n return new LinearAttention(config);\n case 'hyperbolic':\n return new HyperbolicAttention(config);\n case 'moe':\n return new MoEAttention(config);\n default:\n return new MultiHeadAttention(config);\n }\n}\n"]}
1
+ {"version":3,"file":"attention-native.js","sourceRoot":"","sources":["../../src/core/attention-native.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Native Attention Wrappers\n *\n * Properly wraps @ruvector/attention native Rust implementations\n * with TypedArray conversions and proper error handling\n *\n * Note: @ruvector/attention is optional - falls back gracefully\n */\n\nlet nativeAttention: any = null;\nlet attentionAvailable = false;\n\ntry {\n nativeAttention = await import('@ruvector/attention');\n attentionAvailable = true;\n} catch {\n console.warn('[attention-native] @ruvector/attention not available');\n}\n\nexport { attentionAvailable };\n\nexport interface AttentionConfig {\n hiddenDim: number;\n numHeads?: number;\n dropoutRate?: number;\n useFlash?: boolean;\n}\n\n/**\n * Convert regular array to Float32Array if needed\n */\nfunction toFloat32Array(input: number[] | Float32Array): Float32Array {\n if (input instanceof Float32Array) {\n return input;\n }\n return new Float32Array(input);\n}\n\n/**\n * Convert Float32Array to regular array for JS compatibility\n */\nfunction toArray(input: Float32Array): number[] {\n return Array.from(input);\n}\n\n/**\n * Native Multi-Head Attention (uses Rust implementation)\n *\n * This wrapper properly converts between JavaScript arrays and TypedArrays\n * required by the native Rust implementation.\n */\nexport class MultiHeadAttention {\n private nativeInstance: any;\n private hiddenDim: number;\n private numHeads: number;\n\n constructor(config: AttentionConfig) {\n this.hiddenDim = config.hiddenDim;\n this.numHeads = config.numHeads || 8;\n\n try {\n // Create native Rust instance\n this.nativeInstance = new nativeAttention.MultiHeadAttention(\n this.hiddenDim,\n this.numHeads\n );\n } catch (error: any) {\n throw new Error(`Failed to initialize native MultiHeadAttention: ${error.message}`);\n }\n }\n\n /**\n * Forward pass using native Rust implementation\n */\n forward(\n query: number[] | Float32Array,\n key: number[] | Float32Array,\n value: number[] | Float32Array,\n mask?: number[] | Float32Array\n ): { output: number[]; attentionWeights: number[][] } {\n try {\n // Convert to Float32Array for native code\n const q = toFloat32Array(query);\n const k = toFloat32Array(key);\n const v = toFloat32Array(value);\n const m = mask ? toFloat32Array(mask) : undefined;\n\n // Call native compute method\n const result = this.nativeInstance.compute(q, k, v, m);\n\n // Convert result back to regular arrays\n return {\n output: toArray(result),\n attentionWeights: [[]] // Native doesn't return weights separately\n };\n } catch (error: any) {\n throw new Error(`MultiHeadAttention forward failed: ${error.message}`);\n }\n }\n\n /**\n * Get dimensions\n */\n get dim(): number {\n return this.nativeInstance.dim;\n }\n\n get headDim(): number {\n return this.nativeInstance.headDim;\n }\n}\n\n/**\n * Native Flash Attention (uses Rust implementation)\n *\n * Memory-efficient attention with tiling/chunking\n */\nexport class FlashAttention {\n private nativeInstance: any;\n private hiddenDim: number;\n\n constructor(config: AttentionConfig) {\n this.hiddenDim = config.hiddenDim;\n\n try {\n this.nativeInstance = new nativeAttention.FlashAttention(this.hiddenDim);\n } catch (error: any) {\n throw new Error(`Failed to initialize native FlashAttention: ${error.message}`);\n }\n }\n\n /**\n * Forward pass with batch support\n */\n forward(\n query: number[][] | Float32Array[],\n key: number[][] | Float32Array[],\n value: number[][] | Float32Array[],\n numHeads: number = 8\n ): { output: number[][]; attentionScores: number[][] } {\n try {\n // Convert batch to Float32Array\n const q = query.map(toFloat32Array);\n const k = key.map(toFloat32Array);\n const v = value.map(toFloat32Array);\n\n // Call native compute\n const result = this.nativeInstance.compute(q, k, v, numHeads);\n\n // Convert result back\n return {\n output: result.map((r: Float32Array) => toArray(r)),\n attentionScores: [[]]\n };\n } catch (error: any) {\n throw new Error(`FlashAttention forward failed: ${error.message}`);\n }\n }\n}\n\n/**\n * Native Linear Attention (uses Rust implementation)\n *\n * O(n) complexity approximation of attention\n */\nexport class LinearAttention {\n private nativeInstance: any;\n private hiddenDim: number;\n\n constructor(config: AttentionConfig) {\n this.hiddenDim = config.hiddenDim;\n\n try {\n // LinearAttention constructor: (hiddenDim, seqLen)\n // We'll use hiddenDim for both since seqLen varies per forward call\n this.nativeInstance = new nativeAttention.LinearAttention(\n this.hiddenDim,\n this.hiddenDim\n );\n } catch (error: any) {\n throw new Error(`Failed to initialize native LinearAttention: ${error.message}`);\n }\n }\n\n forward(\n query: number[][] | Float32Array[],\n key: number[][] | Float32Array[],\n value: number[][] | Float32Array[]\n ): { output: number[][] } {\n try {\n const q = query.map(toFloat32Array);\n const k = key.map(toFloat32Array);\n const v = value.map(toFloat32Array);\n\n const result = this.nativeInstance.compute(q, k, v);\n\n return {\n output: result.map((r: Float32Array) => toArray(r))\n };\n } catch (error: any) {\n throw new Error(`LinearAttention forward failed: ${error.message}`);\n }\n }\n}\n\n/**\n * Native Hyperbolic Attention (uses Rust implementation)\n */\nexport class HyperbolicAttention {\n private nativeInstance: any;\n private hiddenDim: number;\n\n constructor(config: AttentionConfig) {\n this.hiddenDim = config.hiddenDim;\n\n try {\n this.nativeInstance = new nativeAttention.HyperbolicAttention(this.hiddenDim);\n } catch (error: any) {\n throw new Error(`Failed to initialize native HyperbolicAttention: ${error.message}`);\n }\n }\n\n forward(\n query: number[] | Float32Array,\n key: number[] | Float32Array,\n value: number[] | Float32Array\n ): { output: number[]; distance: number } {\n try {\n const q = toFloat32Array(query);\n const k = toFloat32Array(key);\n const v = toFloat32Array(value);\n\n const result = this.nativeInstance.compute(q, k, v);\n\n return {\n output: toArray(result.output),\n distance: result.distance\n };\n } catch (error: any) {\n throw new Error(`HyperbolicAttention forward failed: ${error.message}`);\n }\n }\n}\n\n/**\n * Native MoE Attention (uses Rust implementation)\n *\n * Mixture of Experts with top-k routing\n */\nexport class MoEAttention {\n private nativeInstance: any;\n private hiddenDim: number;\n private numExperts: number;\n\n constructor(config: AttentionConfig & { numExperts?: number }) {\n this.hiddenDim = config.hiddenDim;\n this.numExperts = config.numExperts || 4;\n\n try {\n // MoEAttention constructor may have different signature in different versions\n this.nativeInstance = new (nativeAttention.MoEAttention as any)(\n this.hiddenDim\n );\n } catch (error: any) {\n throw new Error(`Failed to initialize native MoEAttention: ${error.message}`);\n }\n }\n\n forward(\n query: number[] | Float32Array,\n key: number[] | Float32Array,\n value: number[] | Float32Array,\n topK: number = 2\n ): { output: number[]; expertWeights: number[] } {\n try {\n const q = toFloat32Array(query);\n const k = toFloat32Array(key);\n const v = toFloat32Array(value);\n\n const result = this.nativeInstance.compute(q, k, v, topK);\n\n return {\n output: toArray(result.output),\n expertWeights: toArray(result.expertWeights)\n };\n } catch (error: any) {\n throw new Error(`MoEAttention forward failed: ${error.message}`);\n }\n }\n}\n\n/**\n * Scaled Dot-Product Attention (pure JavaScript, always works)\n */\nexport function scaledDotProductAttention(\n query: number[],\n key: number[],\n value: number[],\n mask?: number[]\n): { output: number[]; weights: number[] } {\n const dk = query.length;\n\n // Compute attention scores: Q · K^T / sqrt(dk)\n let score = 0;\n for (let i = 0; i < dk; i++) {\n score += query[i] * key[i];\n }\n score /= Math.sqrt(dk);\n\n // Apply mask if provided\n if (mask && mask[0] === 0) {\n score = -Infinity;\n }\n\n // Softmax (single score version)\n const expScore = Math.exp(score);\n const weight = expScore;\n\n // Weighted value\n const output = value.map(v => v * weight);\n\n return { output, weights: [weight] };\n}\n\n/**\n * Check if native attention is available\n */\nexport function isNativeAttentionAvailable(): boolean {\n try {\n const test = new nativeAttention.MultiHeadAttention(128, 4);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Factory function to create appropriate attention module\n */\nexport function createAttention(\n type: 'multi-head' | 'flash' | 'linear' | 'hyperbolic' | 'moe',\n config: AttentionConfig\n): MultiHeadAttention | FlashAttention | LinearAttention | HyperbolicAttention | MoEAttention {\n switch (type) {\n case 'multi-head':\n return new MultiHeadAttention(config);\n case 'flash':\n return new FlashAttention(config);\n case 'linear':\n return new LinearAttention(config);\n case 'hyperbolic':\n return new HyperbolicAttention(config);\n case 'moe':\n return new MoEAttention(config);\n default:\n return new MultiHeadAttention(config);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"gnn-wrapper.d.ts","sourceRoot":"","sources":["../../src/core/gnn-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,QAAA,MAAM,GAAG,EAAE,GAOP,CAAC;AAEL,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EAAE,EACf,mBAAmB,EAAE,MAAM,EAAE,EAAE,EAC/B,CAAC,EAAE,MAAM,EACT,WAAW,GAAE,MAAY,GACxB,YAAY,CAiBd;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAeV;AAmCD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,UAAU,CAAuC;gBAGvD,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAe;IAY3D,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAqBlC,OAAO,CAAC,eAAe;IAevB,UAAU,IAAI,MAAM,EAAE,EAAE;IAIxB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;CAMtC;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAQ9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAiCpC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAK1C,mBAAmB,IAAI,MAAM;CAgB9B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAgBpE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CASxC;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAI9B;AAGD,OAAO,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC;AAGzB,YAAY,EAAE,YAAY,IAAI,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"gnn-wrapper.d.ts","sourceRoot":"","sources":["../../src/core/gnn-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,QAAA,MAAM,GAAG,EAAE,GAOP,CAAC;AAEL,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EAAE,EACf,mBAAmB,EAAE,MAAM,EAAE,EAAE,EAC/B,CAAC,EAAE,MAAM,EACT,WAAW,GAAE,MAAY,GACxB,YAAY,CAiBd;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,EAAE,CAeV;AAmCD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,UAAU,CAAuC;gBAGvD,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAe;IAiC3D,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAqBlC,OAAO,CAAC,eAAe;IAevB,UAAU,IAAI,MAAM,EAAE,EAAE;IAIxB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;CAMtC;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAQ9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAiCpC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAK1C,mBAAmB,IAAI,MAAM;CAgB9B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAgBpE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CASxC;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAI9B;AAGD,OAAO,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC;AAGzB,YAAY,EAAE,YAAY,IAAI,eAAe,EAAE,CAAC"}
@@ -90,6 +90,20 @@ export class RuvectorLayer {
90
90
  weights;
91
91
  activation;
92
92
  constructor(inputDim, outputDim, activation = 'relu') {
93
+ // Issue #118/#119 — validate constructor arguments instead of letting
94
+ // an upstream native panic tear down the FFI / process. Callers
95
+ // sometimes pass `config.layers` (an array or count) where the
96
+ // constructor expects an integer dimension; surface that as a typed
97
+ // error rather than a panic.
98
+ if (typeof inputDim !== 'number' || !Number.isFinite(inputDim) || inputDim <= 0 || !Number.isInteger(inputDim)) {
99
+ throw new TypeError(`RuvectorLayer: inputDim must be a positive integer, got ${typeof inputDim} ${String(inputDim)}`);
100
+ }
101
+ if (typeof outputDim !== 'number' || !Number.isFinite(outputDim) || outputDim <= 0 || !Number.isInteger(outputDim)) {
102
+ throw new TypeError(`RuvectorLayer: outputDim must be a positive integer, got ${typeof outputDim} ${String(outputDim)}`);
103
+ }
104
+ if (!['relu', 'tanh', 'sigmoid', 'none'].includes(activation)) {
105
+ throw new TypeError(`RuvectorLayer: activation must be one of relu|tanh|sigmoid|none, got ${String(activation)}`);
106
+ }
93
107
  this.inputDim = inputDim;
94
108
  this.outputDim = outputDim;
95
109
  this.activation = activation;
@@ -1 +1 @@
1
- {"version":3,"file":"gnn-wrapper.js","sourceRoot":"","sources":["../../src/core/gnn-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+CAA+C;AAC/C,MAAM,GAAG,GAAQ,MAAM,CAAC,KAAK,IAAI,EAAE;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAgBL;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAe,EACf,mBAA+B,EAC/B,CAAS,EACT,cAAsB,GAAG;IAEzB,0BAA0B;IAC1B,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAC7C,SAAS,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,CACzC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC,UAAU,EAAE,eAAe,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;QAErF,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACnC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;SACpC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAe,EACf,OAA8B,EAC9B,QAAgB,EAChB,SAAiB;IAEjB,IAAI,CAAC;QACH,kCAAkC;QAClC,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAE,OAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC,CAAC,IAAI,YAAY,CAAC,OAAmB,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtF,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wCAAwC;QACxC,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC9E,OAAO,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAClC,KAAe,EACf,OAA8B,EAC9B,QAAgB,EAChB,SAAiB;IAEjB,2DAA2D;IAC3D,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE5C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,4CAA4C;QAC5C,MAAM,aAAa,GAAG,OAAqB,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,kCAAkC;QAClC,MAAM,WAAW,GAAG,OAAmB,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,QAAQ,CAAS;IACjB,SAAS,CAAS;IAClB,OAAO,CAAa;IACpB,UAAU,CAAuC;IAEzD,YACE,QAAgB,EAChB,SAAiB,EACjB,aAAmD,MAAM;QAEzD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,4BAA4B;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,CACpD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CACpE,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAAe;QACrB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,CAAC,QAAQ,SAAS,KAAK,CAAC,MAAM,EAAE,CAC3E,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,IAAI,MAAM,GAAG,2BAA2B,CACtC,KAAK,EACL,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,CACf,CAAC;QAEF,mBAAmB;QACnB,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,eAAe,CAAC,MAAgB;QACtC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,KAAK,SAAS;gBACZ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB;gBACE,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,OAAmB;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7E,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,MAAM,CAAoB;IAElC,YAAY,MAAkC;QAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,GAAG,EAAE,SAAS,EAAE,MAAa,EAAE,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,MAAgB;QACvB,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC9B,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAEhB,KAAK,MAAM;gBACT,oDAAoD;gBACpD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;gBACvC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;YAExD,KAAK,KAAK,CAAC;YACX,KAAK,KAAK;gBACR,oCAAoC;gBACpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;gBAChC,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;gBACxB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACpB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;oBACjE,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;gBAClD,CAAC,CAAC,CAAC;YAEL,KAAK,QAAQ;gBACX,sBAAsB;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;gBAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAElD;gBACE,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAoB;QAC7B,qDAAqD;QACrD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,mBAAmB;QACjB,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC9B,KAAK,MAAM;gBACT,OAAO,CAAC,CAAC;YACX,KAAK,MAAM;gBACT,OAAO,CAAC,CAAC,CAAC,kBAAkB;YAC9B,KAAK,KAAK;gBACR,OAAO,CAAC,CAAC,CAAC,iBAAiB;YAC7B,KAAK,KAAK;gBACR,OAAO,CAAC,CAAC,CAAC,iBAAiB;YAC7B,KAAK,QAAQ;gBACX,OAAO,EAAE,CAAC,CAAC,iBAAiB;YAC9B;gBACE,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,OAAO,GAAsC;QACjD,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;QAC3B,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;QACvC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE;QACxD,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE;QAC9E,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE;KAChD,CAAC;IAEF,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,oBAAoB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,GAAG,CAAC,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO;IACrB,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,OAAO,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC","sourcesContent":["/**\n * GNN Compatibility Wrapper\n *\n * Fixes API issues with @ruvector/gnn by:\n * 1. Auto-converting regular arrays to Float32Array\n * 2. Providing fallback implementations for broken functions\n * 3. Type-safe interface matching documentation\n */\n\n// Dynamic GNN import with graceful degradation\nconst gnn: any = await (async () => {\n try {\n const module = await import('@ruvector/gnn');\n return module.default || module;\n } catch {\n return null;\n }\n})();\n\nexport interface SearchResult {\n indices: number[];\n weights: number[];\n}\n\nexport interface CompressionConfig {\n levelType: 'none' | 'half' | 'pq8' | 'pq4' | 'binary';\n scale?: number;\n subvectors?: number;\n centroids?: number;\n outlierThreshold?: number;\n threshold?: number;\n}\n\n/**\n * Fixed differentiableSearch that accepts regular arrays\n * Automatically converts to Float32Array internally\n */\nexport function differentiableSearch(\n query: number[],\n candidateEmbeddings: number[][],\n k: number,\n temperature: number = 1.0\n): SearchResult {\n // Convert to Float32Array\n const queryTyped = new Float32Array(query);\n const candidatesTyped = candidateEmbeddings.map(\n candidate => new Float32Array(candidate)\n );\n\n try {\n const result = gnn.differentiableSearch(queryTyped, candidatesTyped, k, temperature);\n\n return {\n indices: Array.from(result.indices),\n weights: Array.from(result.weights)\n };\n } catch (error: any) {\n throw new Error(`GNN differentiableSearch failed: ${error.message}`);\n }\n}\n\n/**\n * Fallback hierarchicalForward using simple matrix multiplication\n * Since the native implementation is broken\n */\nexport function hierarchicalForward(\n input: number[],\n weights: number[] | number[][],\n inputDim: number,\n outputDim: number\n): number[] {\n try {\n // Try native implementation first\n const inputTyped = new Float32Array(input);\n const weightsTyped = Array.isArray(weights[0])\n ? (weights as number[][]).map(w => new Float32Array(w))\n : new Float32Array(weights as number[]);\n\n const result = gnn.hierarchicalForward(inputTyped, weightsTyped, inputDim, outputDim);\n return Array.from(result);\n } catch (error) {\n // Fallback to JavaScript implementation\n console.warn('GNN hierarchicalForward failed, using fallback implementation');\n return hierarchicalForwardFallback(input, weights, inputDim, outputDim);\n }\n}\n\n/**\n * Fallback implementation using basic matrix multiplication\n */\nfunction hierarchicalForwardFallback(\n input: number[],\n weights: number[] | number[][],\n inputDim: number,\n outputDim: number\n): number[] {\n // Simple matrix multiplication: output = input * weights^T\n const output = new Array(outputDim).fill(0);\n\n if (Array.isArray(weights[0])) {\n // weights is 2D array [outputDim][inputDim]\n const weightsMatrix = weights as number[][];\n for (let i = 0; i < outputDim; i++) {\n for (let j = 0; j < inputDim; j++) {\n output[i] += input[j] * weightsMatrix[i][j];\n }\n }\n } else {\n // weights is 1D array (flattened)\n const weightsFlat = weights as number[];\n for (let i = 0; i < outputDim; i++) {\n for (let j = 0; j < inputDim; j++) {\n output[i] += input[j] * weightsFlat[i * inputDim + j];\n }\n }\n }\n\n return output;\n}\n\n/**\n * RuvectorLayer wrapper with fallback\n */\nexport class RuvectorLayer {\n private inputDim: number;\n private outputDim: number;\n private weights: number[][];\n private activation: 'relu' | 'tanh' | 'sigmoid' | 'none';\n\n constructor(\n inputDim: number,\n outputDim: number,\n activation: 'relu' | 'tanh' | 'sigmoid' | 'none' = 'relu'\n ) {\n this.inputDim = inputDim;\n this.outputDim = outputDim;\n this.activation = activation;\n\n // Initialize random weights\n this.weights = Array.from({ length: outputDim }, () =>\n Array.from({ length: inputDim }, () => (Math.random() - 0.5) * 0.1)\n );\n }\n\n forward(input: number[]): number[] {\n if (input.length !== this.inputDim) {\n throw new Error(\n `Input dimension mismatch: expected ${this.inputDim}, got ${input.length}`\n );\n }\n\n // Matrix multiplication\n let output = hierarchicalForwardFallback(\n input,\n this.weights,\n this.inputDim,\n this.outputDim\n );\n\n // Apply activation\n output = this.applyActivation(output);\n\n return output;\n }\n\n private applyActivation(values: number[]): number[] {\n switch (this.activation) {\n case 'relu':\n return values.map(v => Math.max(0, v));\n case 'tanh':\n return values.map(v => Math.tanh(v));\n case 'sigmoid':\n return values.map(v => 1 / (1 + Math.exp(-v)));\n case 'none':\n return values;\n default:\n return values;\n }\n }\n\n getWeights(): number[][] {\n return this.weights;\n }\n\n setWeights(weights: number[][]): void {\n if (weights.length !== this.outputDim || weights[0].length !== this.inputDim) {\n throw new Error('Weight dimensions do not match layer dimensions');\n }\n this.weights = weights;\n }\n}\n\n/**\n * TensorCompress wrapper with working compression levels\n */\nexport class TensorCompress {\n private config: CompressionConfig;\n\n constructor(config: string | CompressionConfig) {\n if (typeof config === 'string') {\n this.config = { levelType: config as any };\n } else {\n this.config = config;\n }\n }\n\n compress(tensor: number[]): number[] {\n switch (this.config.levelType) {\n case 'none':\n return tensor;\n\n case 'half':\n // 16-bit float compression (approximate with scale)\n const scale = this.config.scale || 1.0;\n return tensor.map(v => Math.round(v / scale) * scale);\n\n case 'pq8':\n case 'pq4':\n // Product quantization (simplified)\n const bits = this.config.levelType === 'pq8' ? 8 : 4;\n const levels = Math.pow(2, bits);\n const min = Math.min(...tensor);\n const max = Math.max(...tensor);\n const range = max - min;\n return tensor.map(v => {\n const quantized = Math.round(((v - min) / range) * (levels - 1));\n return (quantized / (levels - 1)) * range + min;\n });\n\n case 'binary':\n // Binary quantization\n const threshold = this.config.threshold || 0;\n return tensor.map(v => (v > threshold ? 1 : 0));\n\n default:\n return tensor;\n }\n }\n\n decompress(compressed: number[]): number[] {\n // For simple compressions, decompression is identity\n return compressed;\n }\n\n getCompressionRatio(): number {\n switch (this.config.levelType) {\n case 'none':\n return 1;\n case 'half':\n return 2; // 32-bit → 16-bit\n case 'pq8':\n return 4; // 32-bit → 8-bit\n case 'pq4':\n return 8; // 32-bit → 4-bit\n case 'binary':\n return 32; // 32-bit → 1-bit\n default:\n return 1;\n }\n }\n}\n\n/**\n * Get compression level configuration\n * Fixed version that returns proper config objects\n */\nexport function getCompressionLevel(level: string): CompressionConfig {\n const configs: Record<string, CompressionConfig> = {\n none: { levelType: 'none' },\n half: { levelType: 'half', scale: 1.0 },\n pq8: { levelType: 'pq8', subvectors: 8, centroids: 256 },\n pq4: { levelType: 'pq4', subvectors: 8, centroids: 16, outlierThreshold: 0.1 },\n binary: { levelType: 'binary', threshold: 0.0 }\n };\n\n if (!(level in configs)) {\n throw new Error(\n `Invalid compression level: ${level}. Valid options: ${Object.keys(configs).join(', ')}`\n );\n }\n\n return configs[level];\n}\n\n/**\n * Check if GNN native module is available and working\n */\nexport function isGNNAvailable(): boolean {\n try {\n const query = new Float32Array([1.0, 0.0]);\n const candidates = [new Float32Array([1.0, 0.0]), new Float32Array([0.0, 1.0])];\n gnn.differentiableSearch(query, candidates, 2, 1.0);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Initialize GNN module (if needed)\n */\nexport function initGNN(): void {\n if (typeof gnn.init === 'function') {\n gnn.init();\n }\n}\n\n// Export original for advanced users who want direct access\nexport { gnn as gnnRaw };\n\n// Re-export SearchResult type\nexport type { SearchResult as GNNSearchResult };\n"]}
1
+ {"version":3,"file":"gnn-wrapper.js","sourceRoot":"","sources":["../../src/core/gnn-wrapper.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * GNN Compatibility Wrapper\n *\n * Fixes API issues with @ruvector/gnn by:\n * 1. Auto-converting regular arrays to Float32Array\n * 2. Providing fallback implementations for broken functions\n * 3. Type-safe interface matching documentation\n */\n\n// Dynamic GNN import with graceful degradation\nconst gnn: any = await (async () => {\n try {\n const module = await import('@ruvector/gnn');\n return module.default || module;\n } catch {\n return null;\n }\n})();\n\nexport interface SearchResult {\n indices: number[];\n weights: number[];\n}\n\nexport interface CompressionConfig {\n levelType: 'none' | 'half' | 'pq8' | 'pq4' | 'binary';\n scale?: number;\n subvectors?: number;\n centroids?: number;\n outlierThreshold?: number;\n threshold?: number;\n}\n\n/**\n * Fixed differentiableSearch that accepts regular arrays\n * Automatically converts to Float32Array internally\n */\nexport function differentiableSearch(\n query: number[],\n candidateEmbeddings: number[][],\n k: number,\n temperature: number = 1.0\n): SearchResult {\n // Convert to Float32Array\n const queryTyped = new Float32Array(query);\n const candidatesTyped = candidateEmbeddings.map(\n candidate => new Float32Array(candidate)\n );\n\n try {\n const result = gnn.differentiableSearch(queryTyped, candidatesTyped, k, temperature);\n\n return {\n indices: Array.from(result.indices),\n weights: Array.from(result.weights)\n };\n } catch (error: any) {\n throw new Error(`GNN differentiableSearch failed: ${error.message}`);\n }\n}\n\n/**\n * Fallback hierarchicalForward using simple matrix multiplication\n * Since the native implementation is broken\n */\nexport function hierarchicalForward(\n input: number[],\n weights: number[] | number[][],\n inputDim: number,\n outputDim: number\n): number[] {\n try {\n // Try native implementation first\n const inputTyped = new Float32Array(input);\n const weightsTyped = Array.isArray(weights[0])\n ? (weights as number[][]).map(w => new Float32Array(w))\n : new Float32Array(weights as number[]);\n\n const result = gnn.hierarchicalForward(inputTyped, weightsTyped, inputDim, outputDim);\n return Array.from(result);\n } catch (error) {\n // Fallback to JavaScript implementation\n console.warn('GNN hierarchicalForward failed, using fallback implementation');\n return hierarchicalForwardFallback(input, weights, inputDim, outputDim);\n }\n}\n\n/**\n * Fallback implementation using basic matrix multiplication\n */\nfunction hierarchicalForwardFallback(\n input: number[],\n weights: number[] | number[][],\n inputDim: number,\n outputDim: number\n): number[] {\n // Simple matrix multiplication: output = input * weights^T\n const output = new Array(outputDim).fill(0);\n\n if (Array.isArray(weights[0])) {\n // weights is 2D array [outputDim][inputDim]\n const weightsMatrix = weights as number[][];\n for (let i = 0; i < outputDim; i++) {\n for (let j = 0; j < inputDim; j++) {\n output[i] += input[j] * weightsMatrix[i][j];\n }\n }\n } else {\n // weights is 1D array (flattened)\n const weightsFlat = weights as number[];\n for (let i = 0; i < outputDim; i++) {\n for (let j = 0; j < inputDim; j++) {\n output[i] += input[j] * weightsFlat[i * inputDim + j];\n }\n }\n }\n\n return output;\n}\n\n/**\n * RuvectorLayer wrapper with fallback\n */\nexport class RuvectorLayer {\n private inputDim: number;\n private outputDim: number;\n private weights: number[][];\n private activation: 'relu' | 'tanh' | 'sigmoid' | 'none';\n\n constructor(\n inputDim: number,\n outputDim: number,\n activation: 'relu' | 'tanh' | 'sigmoid' | 'none' = 'relu'\n ) {\n // Issue #118/#119 — validate constructor arguments instead of letting\n // an upstream native panic tear down the FFI / process. Callers\n // sometimes pass `config.layers` (an array or count) where the\n // constructor expects an integer dimension; surface that as a typed\n // error rather than a panic.\n if (typeof inputDim !== 'number' || !Number.isFinite(inputDim) || inputDim <= 0 || !Number.isInteger(inputDim)) {\n throw new TypeError(\n `RuvectorLayer: inputDim must be a positive integer, got ${typeof inputDim} ${String(inputDim)}`\n );\n }\n if (typeof outputDim !== 'number' || !Number.isFinite(outputDim) || outputDim <= 0 || !Number.isInteger(outputDim)) {\n throw new TypeError(\n `RuvectorLayer: outputDim must be a positive integer, got ${typeof outputDim} ${String(outputDim)}`\n );\n }\n if (!['relu', 'tanh', 'sigmoid', 'none'].includes(activation)) {\n throw new TypeError(\n `RuvectorLayer: activation must be one of relu|tanh|sigmoid|none, got ${String(activation)}`\n );\n }\n\n this.inputDim = inputDim;\n this.outputDim = outputDim;\n this.activation = activation;\n\n // Initialize random weights\n this.weights = Array.from({ length: outputDim }, () =>\n Array.from({ length: inputDim }, () => (Math.random() - 0.5) * 0.1)\n );\n }\n\n forward(input: number[]): number[] {\n if (input.length !== this.inputDim) {\n throw new Error(\n `Input dimension mismatch: expected ${this.inputDim}, got ${input.length}`\n );\n }\n\n // Matrix multiplication\n let output = hierarchicalForwardFallback(\n input,\n this.weights,\n this.inputDim,\n this.outputDim\n );\n\n // Apply activation\n output = this.applyActivation(output);\n\n return output;\n }\n\n private applyActivation(values: number[]): number[] {\n switch (this.activation) {\n case 'relu':\n return values.map(v => Math.max(0, v));\n case 'tanh':\n return values.map(v => Math.tanh(v));\n case 'sigmoid':\n return values.map(v => 1 / (1 + Math.exp(-v)));\n case 'none':\n return values;\n default:\n return values;\n }\n }\n\n getWeights(): number[][] {\n return this.weights;\n }\n\n setWeights(weights: number[][]): void {\n if (weights.length !== this.outputDim || weights[0].length !== this.inputDim) {\n throw new Error('Weight dimensions do not match layer dimensions');\n }\n this.weights = weights;\n }\n}\n\n/**\n * TensorCompress wrapper with working compression levels\n */\nexport class TensorCompress {\n private config: CompressionConfig;\n\n constructor(config: string | CompressionConfig) {\n if (typeof config === 'string') {\n this.config = { levelType: config as any };\n } else {\n this.config = config;\n }\n }\n\n compress(tensor: number[]): number[] {\n switch (this.config.levelType) {\n case 'none':\n return tensor;\n\n case 'half':\n // 16-bit float compression (approximate with scale)\n const scale = this.config.scale || 1.0;\n return tensor.map(v => Math.round(v / scale) * scale);\n\n case 'pq8':\n case 'pq4':\n // Product quantization (simplified)\n const bits = this.config.levelType === 'pq8' ? 8 : 4;\n const levels = Math.pow(2, bits);\n const min = Math.min(...tensor);\n const max = Math.max(...tensor);\n const range = max - min;\n return tensor.map(v => {\n const quantized = Math.round(((v - min) / range) * (levels - 1));\n return (quantized / (levels - 1)) * range + min;\n });\n\n case 'binary':\n // Binary quantization\n const threshold = this.config.threshold || 0;\n return tensor.map(v => (v > threshold ? 1 : 0));\n\n default:\n return tensor;\n }\n }\n\n decompress(compressed: number[]): number[] {\n // For simple compressions, decompression is identity\n return compressed;\n }\n\n getCompressionRatio(): number {\n switch (this.config.levelType) {\n case 'none':\n return 1;\n case 'half':\n return 2; // 32-bit → 16-bit\n case 'pq8':\n return 4; // 32-bit → 8-bit\n case 'pq4':\n return 8; // 32-bit → 4-bit\n case 'binary':\n return 32; // 32-bit → 1-bit\n default:\n return 1;\n }\n }\n}\n\n/**\n * Get compression level configuration\n * Fixed version that returns proper config objects\n */\nexport function getCompressionLevel(level: string): CompressionConfig {\n const configs: Record<string, CompressionConfig> = {\n none: { levelType: 'none' },\n half: { levelType: 'half', scale: 1.0 },\n pq8: { levelType: 'pq8', subvectors: 8, centroids: 256 },\n pq4: { levelType: 'pq4', subvectors: 8, centroids: 16, outlierThreshold: 0.1 },\n binary: { levelType: 'binary', threshold: 0.0 }\n };\n\n if (!(level in configs)) {\n throw new Error(\n `Invalid compression level: ${level}. Valid options: ${Object.keys(configs).join(', ')}`\n );\n }\n\n return configs[level];\n}\n\n/**\n * Check if GNN native module is available and working\n */\nexport function isGNNAvailable(): boolean {\n try {\n const query = new Float32Array([1.0, 0.0]);\n const candidates = [new Float32Array([1.0, 0.0]), new Float32Array([0.0, 1.0])];\n gnn.differentiableSearch(query, candidates, 2, 1.0);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Initialize GNN module (if needed)\n */\nexport function initGNN(): void {\n if (typeof gnn.init === 'function') {\n gnn.init();\n }\n}\n\n// Export original for advanced users who want direct access\nexport { gnn as gnnRaw };\n\n// Re-export SearchResult type\nexport type { SearchResult as GNNSearchResult };\n"]}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Embeddings Module
3
+ *
4
+ * Optimized embedding generation for agentic-flow with:
5
+ * - ONNX model download and caching
6
+ * - LRU embedding cache (256 entries)
7
+ * - SIMD-friendly vector operations
8
+ * - Multiple model support
9
+ * - Neural Embedding Substrate (synthetic nervous system)
10
+ */
11
+ export * from './optimized-embedder.js';
12
+ export * from './neural-substrate.js';
13
+ export { OptimizedEmbedder, getOptimizedEmbedder, downloadModel, listAvailableModels, initEmbeddings, cosineSimilarity, euclideanDistance, normalizeVector, DEFAULT_CONFIG } from './optimized-embedder.js';
14
+ export { NeuralSubstrate, getNeuralSubstrate, SemanticDriftDetector, MemoryPhysics, EmbeddingStateMachine, SwarmCoordinator, CoherenceMonitor } from './neural-substrate.js';
15
+ export type { EmbedderConfig, DownloadProgress } from './optimized-embedder.js';
16
+ export type { DriftResult, MemoryEntry, AgentState, CoherenceResult, SubstrateHealth } from './neural-substrate.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,eAAe,EAChB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Embeddings Module
3
+ *
4
+ * Optimized embedding generation for agentic-flow with:
5
+ * - ONNX model download and caching
6
+ * - LRU embedding cache (256 entries)
7
+ * - SIMD-friendly vector operations
8
+ * - Multiple model support
9
+ * - Neural Embedding Substrate (synthetic nervous system)
10
+ */
11
+ export * from './optimized-embedder.js';
12
+ export * from './neural-substrate.js';
13
+ // Re-export key functions
14
+ export { OptimizedEmbedder, getOptimizedEmbedder, downloadModel, listAvailableModels, initEmbeddings, cosineSimilarity, euclideanDistance, normalizeVector, DEFAULT_CONFIG } from './optimized-embedder.js';
15
+ // Re-export Neural Substrate
16
+ export { NeuralSubstrate, getNeuralSubstrate, SemanticDriftDetector, MemoryPhysics, EmbeddingStateMachine, SwarmCoordinator, CoherenceMonitor } from './neural-substrate.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AAEtC,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC,6BAA6B;AAC7B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC","sourcesContent":["/**\n * Embeddings Module\n *\n * Optimized embedding generation for agentic-flow with:\n * - ONNX model download and caching\n * - LRU embedding cache (256 entries)\n * - SIMD-friendly vector operations\n * - Multiple model support\n * - Neural Embedding Substrate (synthetic nervous system)\n */\n\nexport * from './optimized-embedder.js';\nexport * from './neural-substrate.js';\n\n// Re-export key functions\nexport {\n OptimizedEmbedder,\n getOptimizedEmbedder,\n downloadModel,\n listAvailableModels,\n initEmbeddings,\n cosineSimilarity,\n euclideanDistance,\n normalizeVector,\n DEFAULT_CONFIG\n} from './optimized-embedder.js';\n\n// Re-export Neural Substrate\nexport {\n NeuralSubstrate,\n getNeuralSubstrate,\n SemanticDriftDetector,\n MemoryPhysics,\n EmbeddingStateMachine,\n SwarmCoordinator,\n CoherenceMonitor\n} from './neural-substrate.js';\n\n// Re-export types\nexport type {\n EmbedderConfig,\n DownloadProgress\n} from './optimized-embedder.js';\n\nexport type {\n DriftResult,\n MemoryEntry,\n AgentState,\n CoherenceResult,\n SubstrateHealth\n} from './neural-substrate.js';\n"]}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Neural Embedding Substrate Integration
3
+ *
4
+ * Wraps ruvector's NeuralSubstrate for agentic-flow agents
5
+ * treating embeddings as a synthetic nervous system.
6
+ *
7
+ * Based on ruvector@0.1.85 neural-embeddings.ts
8
+ */
9
+ export interface DriftResult {
10
+ distance: number;
11
+ velocity: number;
12
+ acceleration: number;
13
+ trend: 'stable' | 'drifting' | 'accelerating' | 'recovering';
14
+ shouldEscalate: boolean;
15
+ shouldTriggerReasoning: boolean;
16
+ }
17
+ export interface MemoryEntry {
18
+ id: string;
19
+ embedding: Float32Array;
20
+ content: string;
21
+ strength: number;
22
+ timestamp: number;
23
+ accessCount: number;
24
+ associations: string[];
25
+ }
26
+ export interface AgentState {
27
+ id: string;
28
+ position: Float32Array;
29
+ velocity: Float32Array;
30
+ attention: Float32Array;
31
+ energy: number;
32
+ lastUpdate: number;
33
+ }
34
+ export interface CoherenceResult {
35
+ isCoherent: boolean;
36
+ anomalyScore: number;
37
+ stabilityScore: number;
38
+ driftDirection: Float32Array | null;
39
+ warnings: string[];
40
+ }
41
+ export interface SubstrateHealth {
42
+ memoryCount: number;
43
+ activeAgents: number;
44
+ avgDrift: number;
45
+ avgCoherence: number;
46
+ lastConsolidation: number;
47
+ uptime: number;
48
+ }
49
+ /**
50
+ * Semantic Drift Detector
51
+ * Monitors semantic movement and triggers reflexes
52
+ * Optimized with pre-allocated buffers (80-95% less GC pressure)
53
+ */
54
+ export declare class SemanticDriftDetector {
55
+ private driftThreshold;
56
+ private escalationThreshold;
57
+ private historySize;
58
+ private embedder;
59
+ private baseline;
60
+ private history;
61
+ private velocity;
62
+ private acceleration;
63
+ private dimension;
64
+ private tempVelocityBuffer;
65
+ constructor(driftThreshold?: number, escalationThreshold?: number, historySize?: number);
66
+ init(): Promise<void>;
67
+ setBaseline(context: string): Promise<void>;
68
+ detect(input: string): Promise<DriftResult>;
69
+ getStats(): {
70
+ avgDrift: number;
71
+ maxDrift: number;
72
+ driftEvents: number;
73
+ };
74
+ }
75
+ /**
76
+ * Memory Physics
77
+ * Hippocampal-like dynamics: decay, interference, consolidation
78
+ */
79
+ export declare class MemoryPhysics {
80
+ private decayRate;
81
+ private interferenceRadius;
82
+ private forgettingThreshold;
83
+ private embedder;
84
+ private memories;
85
+ private lastConsolidation;
86
+ constructor(decayRate?: number, interferenceRadius?: number, forgettingThreshold?: number);
87
+ init(): Promise<void>;
88
+ store(id: string, content: string): Promise<{
89
+ stored: boolean;
90
+ interference: string[];
91
+ }>;
92
+ recall(query: string, topK?: number): Promise<Array<MemoryEntry & {
93
+ relevance: number;
94
+ }>>;
95
+ private applyDecay;
96
+ consolidate(): {
97
+ merged: number;
98
+ forgotten: number;
99
+ remaining: number;
100
+ };
101
+ getStats(): {
102
+ total: number;
103
+ active: number;
104
+ avgStrength: number;
105
+ };
106
+ }
107
+ /**
108
+ * Embedding State Machine
109
+ * Agent state through geometry: position, velocity, attention
110
+ */
111
+ export declare class EmbeddingStateMachine {
112
+ private dimension;
113
+ private embedder;
114
+ private agents;
115
+ private stateRegions;
116
+ constructor(dimension?: number);
117
+ init(): Promise<void>;
118
+ registerAgent(id: string, initialRole: string): Promise<AgentState>;
119
+ updateState(agentId: string, observation: string): Promise<{
120
+ newState: AgentState;
121
+ nearestRegion: string;
122
+ regionProximity: number;
123
+ }>;
124
+ getAgent(id: string): AgentState | undefined;
125
+ getAllAgents(): AgentState[];
126
+ }
127
+ /**
128
+ * Swarm Coordinator
129
+ * Multi-agent coordination through shared embedding space
130
+ */
131
+ export declare class SwarmCoordinator {
132
+ private embedder;
133
+ private stateMachine;
134
+ constructor(dimension?: number);
135
+ init(): Promise<void>;
136
+ addAgent(id: string, role: string): Promise<AgentState>;
137
+ coordinate(task: string): Promise<Array<{
138
+ agentId: string;
139
+ taskAlignment: number;
140
+ bestCollaborator: string | null;
141
+ collaborationScore: number;
142
+ }>>;
143
+ specialize(): void;
144
+ getStatus(): {
145
+ agentCount: number;
146
+ avgEnergy: number;
147
+ coherence: number;
148
+ };
149
+ }
150
+ /**
151
+ * Coherence Monitor
152
+ * Safety and alignment detection
153
+ */
154
+ export declare class CoherenceMonitor {
155
+ private embedder;
156
+ private baseline;
157
+ private centroid;
158
+ private avgDistance;
159
+ init(): Promise<void>;
160
+ calibrate(goodOutputs: string[]): Promise<{
161
+ calibrated: boolean;
162
+ sampleCount: number;
163
+ }>;
164
+ check(output: string): Promise<CoherenceResult>;
165
+ }
166
+ /**
167
+ * Neural Substrate
168
+ * Unified nervous system combining all components
169
+ */
170
+ export declare class NeuralSubstrate {
171
+ drift: SemanticDriftDetector;
172
+ memory: MemoryPhysics;
173
+ states: EmbeddingStateMachine;
174
+ swarm: SwarmCoordinator;
175
+ coherence: CoherenceMonitor;
176
+ private startTime;
177
+ constructor(config?: {
178
+ dimension?: number;
179
+ driftThreshold?: number;
180
+ decayRate?: number;
181
+ });
182
+ init(): Promise<void>;
183
+ process(input: string, context?: {
184
+ agentId?: string;
185
+ memoryId?: string;
186
+ checkCoherence?: boolean;
187
+ }): Promise<{
188
+ drift: DriftResult;
189
+ state?: {
190
+ nearestRegion: string;
191
+ regionProximity: number;
192
+ };
193
+ coherence?: CoherenceResult;
194
+ stored?: boolean;
195
+ }>;
196
+ consolidate(): {
197
+ memory: ReturnType<MemoryPhysics['consolidate']>;
198
+ };
199
+ health(): SubstrateHealth;
200
+ }
201
+ export declare function getNeuralSubstrate(config?: {
202
+ dimension?: number;
203
+ driftThreshold?: number;
204
+ decayRate?: number;
205
+ }): Promise<NeuralSubstrate>;
206
+ //# sourceMappingURL=neural-substrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neural-substrate.d.ts","sourceRoot":"","sources":["../../src/embeddings/neural-substrate.ts"],"names":[],"mappings":"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"}