agentic-flow 2.0.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/.claude/agents/test-neural.md +14 -0
  2. package/.claude/settings.json +9 -133
  3. package/README.md +624 -1776
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/billing/mcp/tools.js +0 -1
  6. package/dist/billing/mcp/tools.js.map +1 -1
  7. package/dist/cli/commands/hooks.d.ts.map +1 -1
  8. package/dist/cli/commands/hooks.js +4 -79
  9. package/dist/cli/commands/hooks.js.map +1 -1
  10. package/dist/cli-proxy.js +1 -89
  11. package/dist/cli-proxy.js.map +1 -1
  12. package/dist/core/agentdb-fast.js +3 -3
  13. package/dist/core/agentdb-fast.js.map +1 -1
  14. package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
  15. package/dist/core/agentdb-wrapper-enhanced.js +4 -20
  16. package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
  17. package/dist/core/agentdb-wrapper.d.ts +2 -3
  18. package/dist/core/agentdb-wrapper.d.ts.map +1 -1
  19. package/dist/core/agentdb-wrapper.js +1 -15
  20. package/dist/core/agentdb-wrapper.js.map +1 -1
  21. package/dist/core/attention-native.d.ts +0 -4
  22. package/dist/core/attention-native.d.ts.map +1 -1
  23. package/dist/core/attention-native.js +2 -14
  24. package/dist/core/attention-native.js.map +1 -1
  25. package/dist/federation/SecurityManager.d.ts +2 -11
  26. package/dist/federation/SecurityManager.d.ts.map +1 -1
  27. package/dist/federation/SecurityManager.js +17 -50
  28. package/dist/federation/SecurityManager.js.map +1 -1
  29. package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
  30. package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
  31. package/dist/hooks/swarm-learning-optimizer.js +5 -5
  32. package/dist/hooks/swarm-learning-optimizer.js.map +1 -1
  33. package/dist/intelligence/IntelligenceStore.d.ts +26 -35
  34. package/dist/intelligence/IntelligenceStore.d.ts.map +1 -1
  35. package/dist/intelligence/IntelligenceStore.js +123 -308
  36. package/dist/intelligence/IntelligenceStore.js.map +1 -1
  37. package/dist/intelligence/RuVectorIntelligence.d.ts +1 -26
  38. package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -1
  39. package/dist/intelligence/RuVectorIntelligence.js +10 -49
  40. package/dist/intelligence/RuVectorIntelligence.js.map +1 -1
  41. package/dist/intelligence/agent-booster-enhanced.d.ts +0 -1
  42. package/dist/intelligence/agent-booster-enhanced.d.ts.map +1 -1
  43. package/dist/intelligence/agent-booster-enhanced.js +3 -24
  44. package/dist/intelligence/agent-booster-enhanced.js.map +1 -1
  45. package/dist/intelligence/index.d.ts +3 -29
  46. package/dist/intelligence/index.d.ts.map +1 -1
  47. package/dist/intelligence/index.js +3 -13
  48. package/dist/intelligence/index.js.map +1 -1
  49. package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
  50. package/dist/mcp/claudeFlowSdkServer.js +3 -9
  51. package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
  52. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +5 -5
  53. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -1
  54. package/dist/mcp/fastmcp/tools/swarm/init.d.ts.map +1 -1
  55. package/dist/mcp/fastmcp/tools/swarm/init.js +7 -36
  56. package/dist/mcp/fastmcp/tools/swarm/init.js.map +1 -1
  57. package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts.map +1 -1
  58. package/dist/mcp/fastmcp/tools/swarm/spawn.js +8 -47
  59. package/dist/mcp/fastmcp/tools/swarm/spawn.js.map +1 -1
  60. package/dist/mcp/tools/agent-booster-tools.d.ts +1 -1
  61. package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
  62. package/dist/mcp/tools/agent-booster-tools.js +4 -10
  63. package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
  64. package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
  65. package/dist/mcp/tools/sona-tools.js +0 -6
  66. package/dist/mcp/tools/sona-tools.js.map +1 -1
  67. package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
  68. package/dist/optimizations/agent-booster-migration.js +2 -5
  69. package/dist/optimizations/agent-booster-migration.js.map +1 -1
  70. package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
  71. package/dist/proxy/anthropic-to-requesty.js.map +1 -1
  72. package/dist/proxy/quic-proxy.d.ts +1 -0
  73. package/dist/proxy/quic-proxy.d.ts.map +1 -1
  74. package/dist/proxy/quic-proxy.js +2 -2
  75. package/dist/proxy/quic-proxy.js.map +1 -1
  76. package/dist/reasoningbank/AdvancedMemory.js +1 -1
  77. package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
  78. package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
  79. package/dist/reasoningbank/HybridBackend.js +5 -2
  80. package/dist/reasoningbank/HybridBackend.js.map +1 -1
  81. package/dist/reasoningbank/backend-selector.d.ts +1 -11
  82. package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
  83. package/dist/reasoningbank/backend-selector.js +5 -45
  84. package/dist/reasoningbank/backend-selector.js.map +1 -1
  85. package/dist/reasoningbank/core/consolidate.d.ts.map +1 -1
  86. package/dist/reasoningbank/core/consolidate.js +45 -113
  87. package/dist/reasoningbank/core/consolidate.js.map +1 -1
  88. package/dist/reasoningbank/index-new.d.ts +6 -1
  89. package/dist/reasoningbank/index-new.d.ts.map +1 -1
  90. package/dist/reasoningbank/index-new.js +6 -1
  91. package/dist/reasoningbank/index-new.js.map +1 -1
  92. package/dist/reasoningbank/index.d.ts +6 -2
  93. package/dist/reasoningbank/index.d.ts.map +1 -1
  94. package/dist/reasoningbank/index.js +6 -2
  95. package/dist/reasoningbank/index.js.map +1 -1
  96. package/dist/reasoningbank/utils/embeddings.d.ts +0 -1
  97. package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -1
  98. package/dist/reasoningbank/utils/embeddings.js +26 -53
  99. package/dist/reasoningbank/utils/embeddings.js.map +1 -1
  100. package/dist/router/index.d.ts +17 -0
  101. package/dist/router/index.d.ts.map +1 -0
  102. package/dist/router/index.js +19 -0
  103. package/dist/router/index.js.map +1 -0
  104. package/dist/router/providers/onnx-local-optimized.d.ts +0 -2
  105. package/dist/router/providers/onnx-local-optimized.d.ts.map +1 -1
  106. package/dist/router/providers/onnx-local-optimized.js +0 -10
  107. package/dist/router/providers/onnx-local-optimized.js.map +1 -1
  108. package/dist/router/providers/onnx-local.d.ts +0 -1
  109. package/dist/router/providers/onnx-local.d.ts.map +1 -1
  110. package/dist/router/providers/onnx-local.js +5 -22
  111. package/dist/router/providers/onnx-local.js.map +1 -1
  112. package/dist/services/embedding-service.js.map +1 -1
  113. package/dist/services/sona-agent-training.d.ts +0 -1
  114. package/dist/services/sona-agent-training.d.ts.map +1 -1
  115. package/dist/services/sona-agent-training.js.map +1 -1
  116. package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
  117. package/dist/services/sona-agentdb-integration.js +6 -9
  118. package/dist/services/sona-agentdb-integration.js.map +1 -1
  119. package/dist/services/sona-service.d.ts.map +1 -1
  120. package/dist/services/sona-service.js +5 -6
  121. package/dist/services/sona-service.js.map +1 -1
  122. package/dist/utils/cli.d.ts +1 -1
  123. package/dist/utils/cli.d.ts.map +1 -1
  124. package/dist/utils/cli.js +0 -21
  125. package/dist/utils/cli.js.map +1 -1
  126. package/package.json +7 -19
  127. package/scripts/postinstall.js +4 -45
  128. package/.claude/agents/.claude-flow/metrics/agent-metrics.json +0 -1
  129. package/.claude/agents/.claude-flow/metrics/performance.json +0 -87
  130. package/.claude/agents/.claude-flow/metrics/task-metrics.json +0 -10
  131. package/.claude/skills/.claude-flow/metrics/agent-metrics.json +0 -1
  132. package/.claude/skills/.claude-flow/metrics/performance.json +0 -87
  133. package/.claude/skills/.claude-flow/metrics/task-metrics.json +0 -10
  134. package/.claude/skills/agentic-flow-quickstart/skill.md +0 -69
  135. package/.claude/skills/hooks-automation/skill.md +0 -155
  136. package/.claude/skills/memory-patterns/skill.md +0 -110
  137. package/.claude/skills/skill-builder/.claude-flow/metrics/agent-metrics.json +0 -1
  138. package/.claude/skills/skill-builder/.claude-flow/metrics/performance.json +0 -87
  139. package/.claude/skills/skill-builder/.claude-flow/metrics/task-metrics.json +0 -10
  140. package/.claude/skills/sparc-methodology/skill.md +0 -137
  141. package/.claude/skills/swarm-coordination/skill.md +0 -94
  142. package/.claude/skills/worker-benchmarks/skill.md +0 -135
  143. package/.claude/skills/worker-integration/skill.md +0 -154
  144. package/.claude/statusline.mjs +0 -109
  145. package/.claude/statusline.sh +0 -71
  146. package/dist/agentdb/benchmarks/comprehensive-benchmark.js +0 -664
  147. package/dist/agentdb/benchmarks/frontier-benchmark.js +0 -419
  148. package/dist/agentdb/benchmarks/reflexion-benchmark.js +0 -370
  149. package/dist/agentdb/cli/agentdb-cli.js +0 -717
  150. package/dist/agentdb/controllers/CausalMemoryGraph.js +0 -322
  151. package/dist/agentdb/controllers/CausalRecall.js +0 -281
  152. package/dist/agentdb/controllers/EmbeddingService.d.ts +0 -37
  153. package/dist/agentdb/controllers/EmbeddingService.d.ts.map +0 -1
  154. package/dist/agentdb/controllers/EmbeddingService.js +0 -119
  155. package/dist/agentdb/controllers/EmbeddingService.js.map +0 -1
  156. package/dist/agentdb/controllers/ExplainableRecall.js +0 -387
  157. package/dist/agentdb/controllers/NightlyLearner.js +0 -382
  158. package/dist/agentdb/controllers/ReflexionMemory.js +0 -239
  159. package/dist/agentdb/controllers/SkillLibrary.js +0 -276
  160. package/dist/agentdb/controllers/frontier-index.js +0 -9
  161. package/dist/agentdb/controllers/index.js +0 -8
  162. package/dist/agentdb/optimizations/BatchOperations.js +0 -198
  163. package/dist/agentdb/optimizations/QueryOptimizer.js +0 -225
  164. package/dist/agentdb/optimizations/index.js +0 -7
  165. package/dist/agentdb/tests/frontier-features.test.js +0 -665
  166. package/dist/benchmarks/embeddings-benchmark.d.ts +0 -38
  167. package/dist/benchmarks/embeddings-benchmark.d.ts.map +0 -1
  168. package/dist/benchmarks/embeddings-benchmark.js +0 -282
  169. package/dist/benchmarks/embeddings-benchmark.js.map +0 -1
  170. package/dist/cli/commands/embeddings.d.ts +0 -12
  171. package/dist/cli/commands/embeddings.d.ts.map +0 -1
  172. package/dist/cli/commands/embeddings.js +0 -386
  173. package/dist/cli/commands/embeddings.js.map +0 -1
  174. package/dist/cli/commands/init.d.ts +0 -8
  175. package/dist/cli/commands/init.d.ts.map +0 -1
  176. package/dist/cli/commands/init.js +0 -514
  177. package/dist/cli/commands/init.js.map +0 -1
  178. package/dist/cli/commands/workers.d.ts +0 -9
  179. package/dist/cli/commands/workers.d.ts.map +0 -1
  180. package/dist/cli/commands/workers.js +0 -991
  181. package/dist/cli/commands/workers.js.map +0 -1
  182. package/dist/cli/skills-manager.js +0 -1297
  183. package/dist/cli/update-message.js +0 -175
  184. package/dist/embeddings/index.d.ts +0 -17
  185. package/dist/embeddings/index.d.ts.map +0 -1
  186. package/dist/embeddings/index.js +0 -17
  187. package/dist/embeddings/index.js.map +0 -1
  188. package/dist/embeddings/neural-substrate.d.ts +0 -206
  189. package/dist/embeddings/neural-substrate.d.ts.map +0 -1
  190. package/dist/embeddings/neural-substrate.js +0 -629
  191. package/dist/embeddings/neural-substrate.js.map +0 -1
  192. package/dist/embeddings/optimized-embedder.d.ts +0 -103
  193. package/dist/embeddings/optimized-embedder.d.ts.map +0 -1
  194. package/dist/embeddings/optimized-embedder.js +0 -730
  195. package/dist/embeddings/optimized-embedder.js.map +0 -1
  196. package/dist/examples/embedding-geometry.d.ts +0 -105
  197. package/dist/examples/embedding-geometry.d.ts.map +0 -1
  198. package/dist/examples/embedding-geometry.js +0 -528
  199. package/dist/examples/embedding-geometry.js.map +0 -1
  200. package/dist/memory/SharedMemoryPool.d.ts +0 -129
  201. package/dist/memory/SharedMemoryPool.d.ts.map +0 -1
  202. package/dist/memory/SharedMemoryPool.js +0 -243
  203. package/dist/memory/SharedMemoryPool.js.map +0 -1
  204. package/dist/memory/index.d.ts +0 -8
  205. package/dist/memory/index.d.ts.map +0 -1
  206. package/dist/memory/index.js +0 -7
  207. package/dist/memory/index.js.map +0 -1
  208. package/dist/proxy/http3-proxy-old.js +0 -331
  209. package/dist/proxy/proxy/anthropic-to-gemini.js +0 -439
  210. package/dist/proxy/utils/logger.js +0 -59
  211. package/dist/reasoningbank/agentdb-adapter.js +0 -125
  212. package/dist/reasoningbank/core/database.js +0 -250
  213. package/dist/reasoningbank/core/memory-engine.js +0 -335
  214. package/dist/swarm/ipfs-swarm.d.ts +0 -265
  215. package/dist/swarm/ipfs-swarm.d.ts.map +0 -1
  216. package/dist/swarm/ipfs-swarm.js +0 -508
  217. package/dist/swarm/ipfs-swarm.js.map +0 -1
  218. package/dist/swarm/p2p-free-swarm.d.ts +0 -344
  219. package/dist/swarm/p2p-free-swarm.d.ts.map +0 -1
  220. package/dist/swarm/p2p-free-swarm.js +0 -603
  221. package/dist/swarm/p2p-free-swarm.js.map +0 -1
  222. package/dist/swarm/real-p2p-swarm.d.ts +0 -183
  223. package/dist/swarm/real-p2p-swarm.d.ts.map +0 -1
  224. package/dist/swarm/real-p2p-swarm.js +0 -469
  225. package/dist/swarm/real-p2p-swarm.js.map +0 -1
  226. package/dist/utils/adaptive-pool-sizing.js +0 -414
  227. package/dist/utils/agentdbCommands.js +0 -175
  228. package/dist/utils/circular-rate-limiter.js +0 -391
  229. package/dist/utils/dynamic-compression.js +0 -298
  230. package/dist/utils/http2-multiplexing.js +0 -319
  231. package/dist/utils/index.d.ts +0 -6
  232. package/dist/utils/index.d.ts.map +0 -1
  233. package/dist/utils/index.js +0 -6
  234. package/dist/utils/index.js.map +0 -1
  235. package/dist/utils/lazy-auth.js +0 -311
  236. package/dist/utils/model-cache.d.ts +0 -61
  237. package/dist/utils/model-cache.d.ts.map +0 -1
  238. package/dist/utils/model-cache.js +0 -176
  239. package/dist/utils/model-cache.js.map +0 -1
  240. package/dist/utils/server-push.js +0 -251
  241. package/dist/utils/suppress-warnings.d.ts +0 -19
  242. package/dist/utils/suppress-warnings.d.ts.map +0 -1
  243. package/dist/utils/suppress-warnings.js +0 -59
  244. package/dist/utils/suppress-warnings.js.map +0 -1
  245. package/dist/utils/zero-copy-buffer.js +0 -286
  246. package/dist/workers/consolidated-phases.d.ts +0 -40
  247. package/dist/workers/consolidated-phases.d.ts.map +0 -1
  248. package/dist/workers/consolidated-phases.js +0 -497
  249. package/dist/workers/consolidated-phases.js.map +0 -1
  250. package/dist/workers/custom-worker-config.d.ts +0 -133
  251. package/dist/workers/custom-worker-config.d.ts.map +0 -1
  252. package/dist/workers/custom-worker-config.js +0 -215
  253. package/dist/workers/custom-worker-config.js.map +0 -1
  254. package/dist/workers/custom-worker-factory.d.ts +0 -89
  255. package/dist/workers/custom-worker-factory.d.ts.map +0 -1
  256. package/dist/workers/custom-worker-factory.js +0 -404
  257. package/dist/workers/custom-worker-factory.js.map +0 -1
  258. package/dist/workers/dispatch-service.d.ts +0 -123
  259. package/dist/workers/dispatch-service.d.ts.map +0 -1
  260. package/dist/workers/dispatch-service.js +0 -1024
  261. package/dist/workers/dispatch-service.js.map +0 -1
  262. package/dist/workers/hooks-integration.d.ts +0 -79
  263. package/dist/workers/hooks-integration.d.ts.map +0 -1
  264. package/dist/workers/hooks-integration.js +0 -286
  265. package/dist/workers/hooks-integration.js.map +0 -1
  266. package/dist/workers/index.d.ts +0 -42
  267. package/dist/workers/index.d.ts.map +0 -1
  268. package/dist/workers/index.js +0 -52
  269. package/dist/workers/index.js.map +0 -1
  270. package/dist/workers/mcp-tools.d.ts +0 -56
  271. package/dist/workers/mcp-tools.d.ts.map +0 -1
  272. package/dist/workers/mcp-tools.js +0 -359
  273. package/dist/workers/mcp-tools.js.map +0 -1
  274. package/dist/workers/phase-executors.d.ts +0 -22
  275. package/dist/workers/phase-executors.d.ts.map +0 -1
  276. package/dist/workers/phase-executors.js +0 -445
  277. package/dist/workers/phase-executors.js.map +0 -1
  278. package/dist/workers/resource-governor.d.ts +0 -75
  279. package/dist/workers/resource-governor.d.ts.map +0 -1
  280. package/dist/workers/resource-governor.js +0 -187
  281. package/dist/workers/resource-governor.js.map +0 -1
  282. package/dist/workers/ruvector-integration.d.ts +0 -163
  283. package/dist/workers/ruvector-integration.d.ts.map +0 -1
  284. package/dist/workers/ruvector-integration.js +0 -543
  285. package/dist/workers/ruvector-integration.js.map +0 -1
  286. package/dist/workers/ruvector-native-integration.d.ts +0 -91
  287. package/dist/workers/ruvector-native-integration.d.ts.map +0 -1
  288. package/dist/workers/ruvector-native-integration.js +0 -254
  289. package/dist/workers/ruvector-native-integration.js.map +0 -1
  290. package/dist/workers/trigger-detector.d.ts +0 -68
  291. package/dist/workers/trigger-detector.d.ts.map +0 -1
  292. package/dist/workers/trigger-detector.js +0 -281
  293. package/dist/workers/trigger-detector.js.map +0 -1
  294. package/dist/workers/types.d.ts +0 -145
  295. package/dist/workers/types.d.ts.map +0 -1
  296. package/dist/workers/types.js +0 -6
  297. package/dist/workers/types.js.map +0 -1
  298. package/dist/workers/worker-agent-integration.d.ts +0 -140
  299. package/dist/workers/worker-agent-integration.d.ts.map +0 -1
  300. package/dist/workers/worker-agent-integration.js +0 -471
  301. package/dist/workers/worker-agent-integration.js.map +0 -1
  302. package/dist/workers/worker-benchmarks.d.ts +0 -88
  303. package/dist/workers/worker-benchmarks.d.ts.map +0 -1
  304. package/dist/workers/worker-benchmarks.js +0 -452
  305. package/dist/workers/worker-benchmarks.js.map +0 -1
  306. package/dist/workers/worker-registry.d.ts +0 -85
  307. package/dist/workers/worker-registry.d.ts.map +0 -1
  308. package/dist/workers/worker-registry.js +0 -547
  309. package/dist/workers/worker-registry.js.map +0 -1
  310. package/docs/.claude-flow/metrics/agent-metrics.json +0 -1
  311. package/docs/.claude-flow/metrics/performance.json +0 -87
  312. package/docs/.claude-flow/metrics/task-metrics.json +0 -10
  313. package/docs/embeddings/EMBEDDING_GEOMETRY.md +0 -935
  314. /package/.claude/agents/analysis/{analyze-code-quality.md → code-review/analyze-code-quality.md} +0 -0
  315. /package/.claude/agents/architecture/{arch-system-design.md → system-design/arch-system-design.md} +0 -0
  316. /package/.claude/agents/data/{data-ml-model.md → ml/data-ml-model.md} +0 -0
  317. /package/.claude/agents/development/{dev-backend-api.md → backend/dev-backend-api.md} +0 -0
  318. /package/.claude/agents/devops/{ops-cicd-github.md → ci-cd/ops-cicd-github.md} +0 -0
  319. /package/.claude/agents/documentation/{docs-api-openapi.md → api-docs/docs-api-openapi.md} +0 -0
  320. /package/.claude/agents/specialized/{spec-mobile-react-native.md → mobile/spec-mobile-react-native.md} +0 -0
  321. /package/.claude/agents/testing/{tdd-london-swarm.md → unit/tdd-london-swarm.md} +0 -0
  322. /package/.claude/agents/testing/{production-validator.md → validation/production-validator.md} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"optimized-embedder.js","sourceRoot":"","sources":["../../src/embeddings/optimized-embedder.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Optimized Embedder for Agentic-Flow\n *\n * Uses ruvector's AdaptiveEmbedder optimizations:\n * - Float32Array with flattened matrices\n * - 256-entry LRU cache with FNV-1a hash\n * - SIMD-friendly loop unrolling (4x)\n * - Pre-allocated buffers (no GC pressure)\n *\n * Downloads ONNX models at init for offline use.\n */\n\nimport { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';\nimport { join, dirname, resolve, normalize } from 'path';\nimport { homedir } from 'os';\nimport { createHash } from 'crypto';\n\n// ============================================================================\n// Security Constants\n// ============================================================================\n\nconst MAX_TEXT_LENGTH = 10000; // 10KB limit per text\nconst MAX_BATCH_SIZE = 100; // Maximum batch size\nconst VALID_MODEL_ID_PATTERN = /^[a-zA-Z0-9._-]+$/;\n\n// ============================================================================\n// Configuration\n// ============================================================================\n\nexport interface EmbedderConfig {\n modelId: string;\n dimension: number;\n cacheSize: number;\n modelDir: string;\n autoDownload: boolean;\n}\n\nexport const DEFAULT_CONFIG: EmbedderConfig = {\n modelId: 'all-MiniLM-L6-v2',\n dimension: 384,\n cacheSize: 256,\n modelDir: join(homedir(), '.agentic-flow', 'models'),\n autoDownload: true\n};\n\n// Model registry with download URLs and integrity checksums\nconst MODEL_REGISTRY: Record<string, {\n url: string;\n dimension: number;\n size: string;\n quantized?: boolean;\n sha256?: string; // Optional integrity checksum\n}> = {\n 'all-MiniLM-L6-v2': {\n url: 'https://huggingface.co/Xenova/all-MiniLM-L6-v2/resolve/main/onnx/model_quantized.onnx',\n dimension: 384,\n size: '23MB',\n quantized: true\n // sha256: 'to-be-computed-on-first-download'\n },\n 'all-MiniLM-L6-v2-full': {\n url: 'https://huggingface.co/Xenova/all-MiniLM-L6-v2/resolve/main/onnx/model.onnx',\n dimension: 384,\n size: '91MB'\n },\n 'bge-small-en-v1.5': {\n url: 'https://huggingface.co/Xenova/bge-small-en-v1.5/resolve/main/onnx/model_quantized.onnx',\n dimension: 384,\n size: '33MB',\n quantized: true\n },\n 'gte-small': {\n url: 'https://huggingface.co/Xenova/gte-small/resolve/main/onnx/model_quantized.onnx',\n dimension: 384,\n size: '33MB',\n quantized: true\n }\n};\n\n// ============================================================================\n// Security Validation Functions\n// ============================================================================\n\n/**\n * Validate model ID format and existence in registry\n * Prevents path traversal attacks\n */\nfunction validateModelId(modelId: string): void {\n if (!modelId || typeof modelId !== 'string') {\n throw new Error('Model ID must be a non-empty string');\n }\n if (!VALID_MODEL_ID_PATTERN.test(modelId)) {\n throw new Error(`Invalid model ID format: ${modelId}. Only alphanumeric, dots, hyphens, and underscores allowed.`);\n }\n if (!(modelId in MODEL_REGISTRY)) {\n throw new Error(`Unknown model: ${modelId}. Available: ${Object.keys(MODEL_REGISTRY).join(', ')}`);\n }\n}\n\n/**\n * Validate text input length\n * Prevents memory exhaustion attacks\n */\nfunction validateTextInput(text: string): void {\n if (!text || typeof text !== 'string') {\n throw new Error('Text input must be a non-empty string');\n }\n if (text.length > MAX_TEXT_LENGTH) {\n throw new Error(`Text exceeds maximum length of ${MAX_TEXT_LENGTH} characters`);\n }\n}\n\n/**\n * Validate batch size\n * Prevents CPU exhaustion attacks\n */\nfunction validateBatchSize(texts: string[]): void {\n if (!Array.isArray(texts)) {\n throw new Error('Batch input must be an array');\n }\n if (texts.length > MAX_BATCH_SIZE) {\n throw new Error(`Batch size ${texts.length} exceeds maximum of ${MAX_BATCH_SIZE}`);\n }\n}\n\n/**\n * Validate target directory is safe\n * Prevents writing outside intended directories\n */\nfunction validateTargetDir(targetDir: string, modelId: string): string {\n const normalizedDir = normalize(resolve(targetDir));\n const modelPath = join(normalizedDir, `${modelId}.onnx`);\n const resolvedPath = normalize(resolve(modelPath));\n\n // Ensure the resolved path starts with the target directory\n if (!resolvedPath.startsWith(normalizedDir)) {\n throw new Error('Path traversal detected: model path escapes target directory');\n }\n\n return resolvedPath;\n}\n\n/**\n * Compute SHA256 hash of buffer\n */\nfunction computeSha256(buffer: Uint8Array): string {\n return createHash('sha256').update(buffer).digest('hex');\n}\n\n// ============================================================================\n// O(1) LRU Cache with Doubly-Linked List (10-50x faster than array-based)\n// ============================================================================\n\ninterface CacheNode {\n key: string;\n hash: number;\n value: Float32Array;\n prev: CacheNode | null;\n next: CacheNode | null;\n}\n\nclass EmbeddingCache {\n private cache: Map<number, CacheNode> = new Map();\n private head: CacheNode | null = null; // Most recently used\n private tail: CacheNode | null = null; // Least recently used\n private maxSize: number;\n private hits = 0;\n private misses = 0;\n\n constructor(maxSize: number = 256) {\n this.maxSize = maxSize;\n }\n\n // FNV-1a hash for fast key generation\n private hash(key: string): number {\n let hash = 2166136261;\n for (let i = 0; i < key.length; i++) {\n hash ^= key.charCodeAt(i);\n hash = (hash * 16777619) >>> 0;\n }\n return hash;\n }\n\n // O(1) - Move node to head (most recently used)\n private moveToHead(node: CacheNode): void {\n if (node === this.head) return;\n\n // Remove from current position\n if (node.prev) node.prev.next = node.next;\n if (node.next) node.next.prev = node.prev;\n if (node === this.tail) this.tail = node.prev;\n\n // Move to head\n node.prev = null;\n node.next = this.head;\n if (this.head) this.head.prev = node;\n this.head = node;\n if (!this.tail) this.tail = node;\n }\n\n // O(1) - Remove tail node (least recently used)\n private removeTail(): void {\n if (!this.tail) return;\n\n this.cache.delete(this.tail.hash);\n\n if (this.tail.prev) {\n this.tail.prev.next = null;\n this.tail = this.tail.prev;\n } else {\n this.head = this.tail = null;\n }\n }\n\n // O(1) - Get cached value\n get(key: string): Float32Array | undefined {\n const h = this.hash(key);\n const node = this.cache.get(h);\n\n if (node && node.key === key) {\n this.hits++;\n this.moveToHead(node);\n return node.value;\n }\n\n this.misses++;\n return undefined;\n }\n\n // O(1) - Set cached value\n set(key: string, value: Float32Array): void {\n const h = this.hash(key);\n const existing = this.cache.get(h);\n\n if (existing && existing.key === key) {\n // Update existing node\n existing.value = value;\n this.moveToHead(existing);\n return;\n }\n\n // Handle hash collision - evict old entry\n if (existing) {\n // Remove the colliding entry from the linked list\n if (existing.prev) existing.prev.next = existing.next;\n if (existing.next) existing.next.prev = existing.prev;\n if (existing === this.head) this.head = existing.next;\n if (existing === this.tail) this.tail = existing.prev;\n this.cache.delete(h);\n }\n\n // Evict LRU if at capacity\n if (this.cache.size >= this.maxSize) {\n this.removeTail();\n }\n\n // Create new node at head\n const node: CacheNode = {\n key,\n hash: h,\n value,\n prev: null,\n next: this.head\n };\n\n if (this.head) this.head.prev = node;\n this.head = node;\n if (!this.tail) this.tail = node;\n\n this.cache.set(h, node);\n }\n\n get size(): number {\n return this.cache.size;\n }\n\n clear(): void {\n this.cache.clear();\n this.head = this.tail = null;\n this.hits = this.misses = 0;\n }\n\n stats(): { size: number; maxSize: number; hitRate: number } {\n const total = this.hits + this.misses;\n return {\n size: this.cache.size,\n maxSize: this.maxSize,\n hitRate: total > 0 ? this.hits / total : 0\n };\n }\n}\n\n// ============================================================================\n// Semaphore for Concurrency Control (enables parallel batch processing)\n// ============================================================================\n\nclass Semaphore {\n private available: number;\n private queue: (() => void)[] = [];\n\n constructor(count: number) {\n this.available = count;\n }\n\n async acquire(): Promise<void> {\n if (this.available > 0) {\n this.available--;\n return;\n }\n return new Promise(resolve => this.queue.push(resolve));\n }\n\n release(): void {\n if (this.queue.length > 0) {\n const next = this.queue.shift()!;\n next();\n } else {\n this.available++;\n }\n }\n}\n\n// ============================================================================\n// Optimized Vector Operations (8x unrolling, separate accumulators for ILP)\n// ============================================================================\n\n/**\n * Optimized cosine similarity with 8x loop unrolling and separate accumulators\n * ~3-4x faster than naive implementation due to instruction-level parallelism\n */\nexport function cosineSimilarity(a: Float32Array, b: Float32Array): number {\n const len = a.length;\n\n // Use 4 separate accumulators to maximize instruction-level parallelism\n let dot0 = 0, dot1 = 0, dot2 = 0, dot3 = 0;\n let normA0 = 0, normA1 = 0, normA2 = 0, normA3 = 0;\n let normB0 = 0, normB1 = 0, normB2 = 0, normB3 = 0;\n\n // Process 8 elements at a time\n const unrolledLen = len - (len % 8);\n let i = 0;\n\n for (; i < unrolledLen; i += 8) {\n // Load 8 elements from each array\n const a0 = a[i], a1 = a[i+1], a2 = a[i+2], a3 = a[i+3];\n const a4 = a[i+4], a5 = a[i+5], a6 = a[i+6], a7 = a[i+7];\n const b0 = b[i], b1 = b[i+1], b2 = b[i+2], b3 = b[i+3];\n const b4 = b[i+4], b5 = b[i+5], b6 = b[i+6], b7 = b[i+7];\n\n // Accumulate dot products (pairs to separate accumulators)\n dot0 += a0*b0 + a4*b4;\n dot1 += a1*b1 + a5*b5;\n dot2 += a2*b2 + a6*b6;\n dot3 += a3*b3 + a7*b7;\n\n // Accumulate norm A\n normA0 += a0*a0 + a4*a4;\n normA1 += a1*a1 + a5*a5;\n normA2 += a2*a2 + a6*a6;\n normA3 += a3*a3 + a7*a7;\n\n // Accumulate norm B\n normB0 += b0*b0 + b4*b4;\n normB1 += b1*b1 + b5*b5;\n normB2 += b2*b2 + b6*b6;\n normB3 += b3*b3 + b7*b7;\n }\n\n // Combine accumulators\n let dot = dot0 + dot1 + dot2 + dot3;\n let normA = normA0 + normA1 + normA2 + normA3;\n let normB = normB0 + normB1 + normB2 + normB3;\n\n // Handle remainder\n for (; i < len; i++) {\n const ai = a[i], bi = b[i];\n dot += ai * bi;\n normA += ai * ai;\n normB += bi * bi;\n }\n\n // Single sqrt with product (faster than two separate sqrts)\n const denom = Math.sqrt(normA * normB);\n return denom > 0 ? dot / denom : 0;\n}\n\n/**\n * Optimized euclidean distance with loop unrolling\n */\nexport function euclideanDistance(a: Float32Array, b: Float32Array): number {\n const len = a.length;\n let sum = 0;\n\n const unrolledLen = len - (len % 4);\n let i = 0;\n\n for (; i < unrolledLen; i += 4) {\n const d0 = a[i] - b[i];\n const d1 = a[i+1] - b[i+1];\n const d2 = a[i+2] - b[i+2];\n const d3 = a[i+3] - b[i+3];\n sum += d0 * d0 + d1 * d1 + d2 * d2 + d3 * d3;\n }\n\n for (; i < len; i++) {\n const d = a[i] - b[i];\n sum += d * d;\n }\n\n return Math.sqrt(sum);\n}\n\n/**\n * Normalize vector in-place (optimized)\n */\nexport function normalizeVector(v: Float32Array): Float32Array {\n let norm = 0;\n const len = v.length;\n\n // Compute norm with unrolling\n const unrolledLen = len - (len % 4);\n let i = 0;\n\n for (; i < unrolledLen; i += 4) {\n norm += v[i] * v[i] + v[i+1] * v[i+1] + v[i+2] * v[i+2] + v[i+3] * v[i+3];\n }\n for (; i < len; i++) {\n norm += v[i] * v[i];\n }\n\n norm = Math.sqrt(norm);\n\n if (norm > 0) {\n const invNorm = 1 / norm;\n for (let j = 0; j < len; j++) {\n v[j] *= invNorm;\n }\n }\n\n return v;\n}\n\n// ============================================================================\n// Model Downloader\n// ============================================================================\n\nexport interface DownloadProgress {\n modelId: string;\n bytesDownloaded: number;\n totalBytes: number;\n percent: number;\n}\n\nexport async function downloadModel(\n modelId: string,\n targetDir: string,\n onProgress?: (progress: DownloadProgress) => void\n): Promise<string> {\n // Security: Validate model ID before any file operations\n validateModelId(modelId);\n\n const modelInfo = MODEL_REGISTRY[modelId];\n\n // Security: Validate target path to prevent path traversal\n const modelPath = validateTargetDir(targetDir, modelId);\n\n // Check if already downloaded\n if (existsSync(modelPath)) {\n console.log(`Model ${modelId} already exists at ${modelPath}`);\n return modelPath;\n }\n\n // Create directory with restricted permissions\n mkdirSync(targetDir, { recursive: true, mode: 0o700 });\n\n console.log(`Downloading ${modelId} (${modelInfo.size})...`);\n\n try {\n // Security: Enforce HTTPS for all model downloads\n if (!modelInfo.url.startsWith('https://')) {\n throw new Error('Only HTTPS URLs are allowed for model downloads');\n }\n\n const response = await fetch(modelInfo.url);\n if (!response.ok) {\n throw new Error(`Failed to download: ${response.statusText}`);\n }\n\n const totalBytes = parseInt(response.headers.get('content-length') || '0', 10);\n const reader = response.body?.getReader();\n\n if (!reader) {\n throw new Error('No response body');\n }\n\n const chunks: Uint8Array[] = [];\n let bytesDownloaded = 0;\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n chunks.push(value);\n bytesDownloaded += value.length;\n\n if (onProgress) {\n onProgress({\n modelId,\n bytesDownloaded,\n totalBytes,\n percent: totalBytes > 0 ? (bytesDownloaded / totalBytes) * 100 : 0\n });\n }\n }\n\n // Concatenate chunks\n const totalLength = chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n const buffer = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n buffer.set(chunk, offset);\n offset += chunk.length;\n }\n\n // Security: Verify integrity if checksum is available\n const actualHash = computeSha256(buffer);\n if (modelInfo.sha256 && actualHash !== modelInfo.sha256) {\n throw new Error(\n `Integrity check failed for ${modelId}. ` +\n `Expected: ${modelInfo.sha256}, Got: ${actualHash}. ` +\n 'The downloaded model may be corrupted or tampered with.'\n );\n }\n\n // Write to file with restricted permissions\n writeFileSync(modelPath, buffer, { mode: 0o600 });\n console.log(`Downloaded ${modelId} to ${modelPath}`);\n\n // Save metadata including computed hash for future verification\n const metaPath = join(targetDir, `${modelId}.meta.json`);\n writeFileSync(metaPath, JSON.stringify({\n modelId,\n dimension: modelInfo.dimension,\n quantized: modelInfo.quantized || false,\n downloadedAt: new Date().toISOString(),\n size: totalLength,\n sha256: actualHash // Store hash for future integrity checks\n }, null, 2), { mode: 0o600 });\n\n return modelPath;\n } catch (error) {\n throw new Error(`Failed to download ${modelId}: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\nexport function listAvailableModels(): Array<{\n id: string;\n dimension: number;\n size: string;\n quantized: boolean;\n downloaded: boolean;\n}> {\n const modelDir = DEFAULT_CONFIG.modelDir;\n\n return Object.entries(MODEL_REGISTRY).map(([id, info]) => ({\n id,\n dimension: info.dimension,\n size: info.size,\n quantized: info.quantized || false,\n downloaded: existsSync(join(modelDir, `${id}.onnx`))\n }));\n}\n\n// ============================================================================\n// Optimized Embedder Class\n// ============================================================================\n\nexport class OptimizedEmbedder {\n private config: EmbedderConfig;\n private cache: EmbeddingCache;\n private onnxSession: any = null;\n private tokenizer: any = null;\n private initialized = false;\n private initPromise: Promise<void> | null = null;\n\n // Pre-allocated buffers for reduced GC pressure\n private outputBuffer: Float32Array | null = null;\n\n // Pre-allocated tensor buffers (max 512 tokens)\n private static readonly MAX_TOKENS = 512;\n private inputIdsBuffer: BigInt64Array = new BigInt64Array(OptimizedEmbedder.MAX_TOKENS);\n private attentionMaskBuffer: BigInt64Array = new BigInt64Array(OptimizedEmbedder.MAX_TOKENS);\n private tokenTypeIdsBuffer: BigInt64Array = new BigInt64Array(OptimizedEmbedder.MAX_TOKENS);\n\n constructor(config: Partial<EmbedderConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.cache = new EmbeddingCache(this.config.cacheSize);\n }\n\n /**\n * Initialize the embedder (download model if needed)\n */\n async init(): Promise<void> {\n if (this.initialized) return;\n if (this.initPromise) return this.initPromise;\n\n this.initPromise = this._init();\n await this.initPromise;\n this.initialized = true;\n }\n\n private async _init(): Promise<void> {\n const modelPath = join(this.config.modelDir, `${this.config.modelId}.onnx`);\n\n // Download if needed\n if (this.config.autoDownload && !existsSync(modelPath)) {\n await downloadModel(this.config.modelId, this.config.modelDir, (progress) => {\n process.stdout.write(`\\rDownloading ${this.config.modelId}: ${progress.percent.toFixed(1)}%`);\n });\n console.log('');\n }\n\n if (!existsSync(modelPath)) {\n throw new Error(`Model not found: ${modelPath}. Run 'agentic-flow embeddings init' to download.`);\n }\n\n // Load ONNX Runtime\n try {\n const ort = await import('onnxruntime-node');\n this.onnxSession = await ort.InferenceSession.create(modelPath, {\n executionProviders: ['cpu'],\n graphOptimizationLevel: 'all'\n });\n } catch (error) {\n // Fallback to transformers.js\n console.warn('ONNX Runtime not available, using transformers.js fallback');\n const { pipeline } = await import('@xenova/transformers');\n this.tokenizer = await pipeline('feature-extraction', `Xenova/${this.config.modelId}`);\n }\n\n // Pre-allocate output buffer\n this.outputBuffer = new Float32Array(this.config.dimension);\n }\n\n /**\n * Embed a single text (with caching)\n */\n async embed(text: string): Promise<Float32Array> {\n // Security: Validate input before processing\n validateTextInput(text);\n\n await this.init();\n\n // Check cache\n const cached = this.cache.get(text);\n if (cached) {\n return cached;\n }\n\n let embedding: Float32Array;\n\n if (this.onnxSession) {\n embedding = await this.embedWithOnnx(text);\n } else if (this.tokenizer) {\n embedding = await this.embedWithTransformers(text);\n } else {\n throw new Error('No embedding backend available');\n }\n\n // Normalize\n normalizeVector(embedding);\n\n // Cache\n this.cache.set(text, embedding);\n\n return embedding;\n }\n\n private async embedWithOnnx(text: string): Promise<Float32Array> {\n // Simple tokenization (for MiniLM models)\n const tokens = this.simpleTokenize(text);\n const seqLen = Math.min(tokens.length, OptimizedEmbedder.MAX_TOKENS);\n\n // Reuse pre-allocated buffers (50-70% less allocation overhead)\n for (let i = 0; i < seqLen; i++) {\n this.inputIdsBuffer[i] = BigInt(tokens[i]);\n this.attentionMaskBuffer[i] = 1n;\n this.tokenTypeIdsBuffer[i] = 0n;\n }\n\n const ort = await import('onnxruntime-node');\n const TensorClass = (ort as any).Tensor;\n\n // Create tensors with views into pre-allocated buffers\n const inputIds = new TensorClass(\n 'int64',\n this.inputIdsBuffer.subarray(0, seqLen),\n [1, seqLen]\n );\n const attentionMask = new TensorClass(\n 'int64',\n this.attentionMaskBuffer.subarray(0, seqLen),\n [1, seqLen]\n );\n const tokenTypeIds = new TensorClass(\n 'int64',\n this.tokenTypeIdsBuffer.subarray(0, seqLen),\n [1, seqLen]\n );\n\n const feeds = {\n input_ids: inputIds,\n attention_mask: attentionMask,\n token_type_ids: tokenTypeIds\n };\n\n const results = await this.onnxSession.run(feeds);\n const output = results['last_hidden_state'] || results['sentence_embedding'] || Object.values(results)[0];\n\n // Mean pooling with 4x unrolling\n const data = output.data as Float32Array;\n const hiddenSize = this.config.dimension;\n\n const pooled = new Float32Array(hiddenSize);\n const unrolledHidden = hiddenSize - (hiddenSize % 4);\n\n for (let i = 0; i < seqLen; i++) {\n const offset = i * hiddenSize;\n let j = 0;\n\n // 4x unrolled inner loop\n for (; j < unrolledHidden; j += 4) {\n pooled[j] += data[offset + j];\n pooled[j+1] += data[offset + j+1];\n pooled[j+2] += data[offset + j+2];\n pooled[j+3] += data[offset + j+3];\n }\n\n // Remainder\n for (; j < hiddenSize; j++) {\n pooled[j] += data[offset + j];\n }\n }\n\n // Normalize by sequence length\n const invSeqLen = 1 / seqLen;\n for (let j = 0; j < hiddenSize; j++) {\n pooled[j] *= invSeqLen;\n }\n\n return pooled;\n }\n\n private simpleTokenize(text: string): number[] {\n // Simple word-piece tokenization approximation\n // In production, use proper tokenizer\n const words = text.toLowerCase().split(/\\s+/).slice(0, 128);\n const tokens: number[] = [101]; // [CLS]\n\n for (const word of words) {\n // Simple hash to token ID\n let hash = 0;\n for (let i = 0; i < word.length; i++) {\n hash = ((hash << 5) - hash + word.charCodeAt(i)) | 0;\n }\n tokens.push(Math.abs(hash) % 30000 + 1000);\n }\n\n tokens.push(102); // [SEP]\n return tokens;\n }\n\n private async embedWithTransformers(text: string): Promise<Float32Array> {\n const result = await this.tokenizer(text, { pooling: 'mean', normalize: true });\n return new Float32Array(result.data);\n }\n\n /**\n * Embed multiple texts in batch with parallel processing\n * 3-4x faster than sequential processing for large batches\n */\n async embedBatch(texts: string[], concurrency: number = 4): Promise<Float32Array[]> {\n // Security: Validate batch size\n validateBatchSize(texts);\n\n // Security: Validate each text input\n for (const text of texts) {\n validateTextInput(text);\n }\n\n await this.init();\n\n const results: Float32Array[] = new Array(texts.length);\n const toEmbed: { index: number; text: string }[] = [];\n\n // Check cache first (O(1) per item with new LRU cache)\n for (let i = 0; i < texts.length; i++) {\n const cached = this.cache.get(texts[i]);\n if (cached) {\n results[i] = cached;\n } else {\n toEmbed.push({ index: i, text: texts[i] });\n }\n }\n\n // Parallel processing for uncached items\n if (toEmbed.length > 0) {\n const semaphore = new Semaphore(Math.min(concurrency, toEmbed.length));\n\n await Promise.all(toEmbed.map(async ({ index, text }) => {\n await semaphore.acquire();\n try {\n // Direct embedding (skip validation since already done)\n let embedding: Float32Array;\n\n if (this.onnxSession) {\n embedding = await this.embedWithOnnx(text);\n } else if (this.tokenizer) {\n embedding = await this.embedWithTransformers(text);\n } else {\n throw new Error('No embedding backend available');\n }\n\n normalizeVector(embedding);\n this.cache.set(text, embedding);\n results[index] = embedding;\n } finally {\n semaphore.release();\n }\n }));\n }\n\n return results;\n }\n\n /**\n * Find similar texts using optimized cosine similarity\n */\n async findSimilar(\n query: string,\n candidates: string[],\n topK: number = 5\n ): Promise<Array<{ text: string; score: number; index: number }>> {\n const queryEmb = await this.embed(query);\n const candidateEmbs = await this.embedBatch(candidates);\n\n const scores = candidateEmbs.map((emb, index) => ({\n text: candidates[index],\n score: cosineSimilarity(queryEmb, emb),\n index\n }));\n\n return scores\n .sort((a, b) => b.score - a.score)\n .slice(0, topK);\n }\n\n /**\n * Get cache statistics\n */\n getCacheStats(): { size: number; maxSize: number } {\n return {\n size: this.cache.size,\n maxSize: this.config.cacheSize\n };\n }\n\n /**\n * Clear the embedding cache\n */\n clearCache(): void {\n this.cache.clear();\n }\n\n /**\n * Check if initialized\n */\n isInitialized(): boolean {\n return this.initialized;\n }\n}\n\n// ============================================================================\n// Singleton Instance\n// ============================================================================\n\nlet defaultEmbedder: OptimizedEmbedder | null = null;\n\nexport function getOptimizedEmbedder(config?: Partial<EmbedderConfig>): OptimizedEmbedder {\n if (!defaultEmbedder) {\n defaultEmbedder = new OptimizedEmbedder(config);\n }\n return defaultEmbedder;\n}\n\n// ============================================================================\n// CLI Integration\n// ============================================================================\n\nexport async function initEmbeddings(modelId?: string): Promise<void> {\n const id = modelId || DEFAULT_CONFIG.modelId;\n console.log(`Initializing embeddings with model: ${id}`);\n\n await downloadModel(id, DEFAULT_CONFIG.modelDir, (progress) => {\n process.stdout.write(`\\r Downloading: ${progress.percent.toFixed(1)}% (${(progress.bytesDownloaded / 1024 / 1024).toFixed(1)}MB)`);\n });\n console.log('\\n ✓ Model downloaded');\n\n const embedder = getOptimizedEmbedder({ modelId: id });\n await embedder.init();\n console.log(' ✓ Embedder initialized');\n\n // Quick validation\n const testEmb = await embedder.embed('test');\n console.log(` ✓ Validation: ${testEmb.length}d embedding, norm=${Math.sqrt(testEmb.reduce((s, v) => s + v * v, 0)).toFixed(4)}`);\n}\n"]}
@@ -1,105 +0,0 @@
1
- /**
2
- * Embedding Geometry Examples
3
- *
4
- * Demonstrates frontier embedding patterns:
5
- * 1. Control signals (semantic drift detection)
6
- * 2. Memory physics (decay, interference, consolidation)
7
- * 3. Coordination primitives (swarm alignment)
8
- * 4. Safety monitors (coherence detection)
9
- * 5. Synthetic nervous system (reflexes, attention)
10
- */
11
- export declare class SemanticDriftMonitor {
12
- private driftThreshold;
13
- private escalationThreshold;
14
- private embedder;
15
- private baseline;
16
- private history;
17
- constructor(driftThreshold?: number, escalationThreshold?: number);
18
- init(): Promise<void>;
19
- setBaseline(context: string): Promise<void>;
20
- checkDrift(current: string): Promise<{
21
- drift: number;
22
- shouldEscalate: boolean;
23
- shouldTriggerReasoning: boolean;
24
- trendDirection: 'stable' | 'drifting' | 'recovering';
25
- }>;
26
- }
27
- export declare class GeometricMemory {
28
- private decayRate;
29
- private interferenceRadius;
30
- private forgettingThreshold;
31
- private embedder;
32
- private memories;
33
- constructor(decayRate?: number, // Strength decay per hour
34
- interferenceRadius?: number, // Similarity threshold for interference
35
- forgettingThreshold?: number);
36
- init(): Promise<void>;
37
- store(content: string): Promise<{
38
- stored: boolean;
39
- interferenceWith: string[];
40
- }>;
41
- recall(query: string, topK?: number): Promise<Array<{
42
- content: string;
43
- relevance: number;
44
- strength: number;
45
- }>>;
46
- private applyDecay;
47
- consolidate(): Promise<{
48
- merged: number;
49
- remaining: number;
50
- }>;
51
- getStats(): {
52
- total: number;
53
- active: number;
54
- forgotten: number;
55
- };
56
- }
57
- export declare class EmbeddingSwarm {
58
- private embedder;
59
- private agents;
60
- init(): Promise<void>;
61
- addAgent(id: string, role: string): Promise<void>;
62
- coordinate(task: string): Promise<Array<{
63
- agentId: string;
64
- role: string;
65
- taskAlignment: number;
66
- bestCollaborator: string | null;
67
- }>>;
68
- specialize(): void;
69
- }
70
- export declare class CoherenceMonitor {
71
- private embedder;
72
- private baselineDistribution;
73
- private centroid;
74
- private avgDistanceFromCentroid;
75
- init(): Promise<void>;
76
- calibrate(goodOutputs: string[]): Promise<{
77
- centroid: number[];
78
- avgDistance: number;
79
- }>;
80
- check(output: string): Promise<{
81
- isCoherent: boolean;
82
- anomalyScore: number;
83
- nearestNeighborSim: number;
84
- warnings: string[];
85
- }>;
86
- }
87
- export declare class SyntheticNervousSystem {
88
- private embedder;
89
- private sensoryBuffer;
90
- private attentionWeights;
91
- private internalState;
92
- private reflexes;
93
- init(): Promise<void>;
94
- registerReflex(name: string, triggerConcept: string, threshold: number, response: (activation: number) => void): Promise<void>;
95
- sense(input: string): Promise<{
96
- encoding: Float32Array;
97
- novelty: number;
98
- reflexesTriggered: string[];
99
- }>;
100
- getInternalState(): Float32Array | null;
101
- getAttention(): Float32Array | null;
102
- }
103
- declare function demo(): Promise<void>;
104
- export { demo };
105
- //# sourceMappingURL=embedding-geometry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding-geometry.d.ts","sourceRoot":"","sources":["../../src/examples/embedding-geometry.ts"],"names":[],"mappings":"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"}