agentic-flow 2.0.1-alpha.2 → 2.0.1-alpha.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/CHANGELOG.md +352 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/agentdb/controllers/EmbeddingService.d.ts +37 -0
  4. package/dist/agentdb/controllers/EmbeddingService.d.ts.map +1 -0
  5. package/dist/agentdb/controllers/EmbeddingService.js +1 -0
  6. package/dist/agentdb/controllers/EmbeddingService.js.map +1 -0
  7. package/dist/billing/mcp/tools.d.ts.map +1 -1
  8. package/dist/billing/mcp/tools.js +2 -0
  9. package/dist/billing/mcp/tools.js.map +1 -1
  10. package/dist/cli/commands/hooks.d.ts +18 -0
  11. package/dist/cli/commands/hooks.d.ts.map +1 -0
  12. package/dist/cli/commands/hooks.js +755 -0
  13. package/dist/cli/commands/hooks.js.map +1 -0
  14. package/dist/cli-proxy.d.ts +1 -1
  15. package/dist/cli-proxy.d.ts.map +1 -1
  16. package/dist/cli-proxy.js +28 -1
  17. package/dist/cli-proxy.js.map +1 -1
  18. package/dist/core/agentdb-fast.js +3 -3
  19. package/dist/core/agentdb-fast.js.map +1 -1
  20. package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
  21. package/dist/core/agentdb-wrapper-enhanced.js +32 -17
  22. package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
  23. package/dist/core/attention-native.d.ts +1 -0
  24. package/dist/core/attention-native.d.ts.map +1 -1
  25. package/dist/core/attention-native.js +6 -1
  26. package/dist/core/attention-native.js.map +1 -1
  27. package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
  28. package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
  29. package/dist/intelligence/EmbeddingCache.d.ts +112 -0
  30. package/dist/intelligence/EmbeddingCache.d.ts.map +1 -0
  31. package/dist/intelligence/EmbeddingCache.js +624 -0
  32. package/dist/intelligence/EmbeddingCache.js.map +1 -0
  33. package/dist/intelligence/EmbeddingService.d.ts +380 -0
  34. package/dist/intelligence/EmbeddingService.d.ts.map +1 -0
  35. package/dist/intelligence/EmbeddingService.js +1484 -0
  36. package/dist/intelligence/EmbeddingService.js.map +1 -0
  37. package/dist/intelligence/IntelligenceStore.d.ts +168 -0
  38. package/dist/intelligence/IntelligenceStore.d.ts.map +1 -0
  39. package/dist/intelligence/IntelligenceStore.js +364 -0
  40. package/dist/intelligence/IntelligenceStore.js.map +1 -0
  41. package/dist/intelligence/RuVectorIntelligence.d.ts +362 -0
  42. package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -0
  43. package/dist/intelligence/RuVectorIntelligence.js +853 -0
  44. package/dist/intelligence/RuVectorIntelligence.js.map +1 -0
  45. package/dist/intelligence/embedding-benchmark.d.ts +7 -0
  46. package/dist/intelligence/embedding-benchmark.d.ts.map +1 -0
  47. package/dist/intelligence/embedding-benchmark.js +155 -0
  48. package/dist/intelligence/embedding-benchmark.js.map +1 -0
  49. package/dist/intelligence/index.d.ts +14 -0
  50. package/dist/intelligence/index.d.ts.map +1 -0
  51. package/dist/intelligence/index.js +14 -0
  52. package/dist/intelligence/index.js.map +1 -0
  53. package/dist/llm/RuvLLMOrchestrator.d.ts +184 -0
  54. package/dist/llm/RuvLLMOrchestrator.d.ts.map +1 -0
  55. package/dist/llm/RuvLLMOrchestrator.js +442 -0
  56. package/dist/llm/RuvLLMOrchestrator.js.map +1 -0
  57. package/dist/llm/index.d.ts +9 -0
  58. package/dist/llm/index.d.ts.map +1 -0
  59. package/dist/llm/index.js +8 -0
  60. package/dist/llm/index.js.map +1 -0
  61. package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
  62. package/dist/mcp/claudeFlowSdkServer.js +86 -21
  63. package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
  64. package/dist/mcp/fastmcp/servers/hooks-server.d.ts +15 -0
  65. package/dist/mcp/fastmcp/servers/hooks-server.d.ts.map +1 -0
  66. package/dist/mcp/fastmcp/servers/hooks-server.js +63 -0
  67. package/dist/mcp/fastmcp/servers/hooks-server.js.map +1 -0
  68. package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts +20 -0
  69. package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts.map +1 -0
  70. package/dist/mcp/fastmcp/tools/hooks/benchmark.js +110 -0
  71. package/dist/mcp/fastmcp/tools/hooks/benchmark.js.map +1 -0
  72. package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts +7 -0
  73. package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts.map +1 -0
  74. package/dist/mcp/fastmcp/tools/hooks/build-agents.js +276 -0
  75. package/dist/mcp/fastmcp/tools/hooks/build-agents.js.map +1 -0
  76. package/dist/mcp/fastmcp/tools/hooks/explain.d.ts +6 -0
  77. package/dist/mcp/fastmcp/tools/hooks/explain.d.ts.map +1 -0
  78. package/dist/mcp/fastmcp/tools/hooks/explain.js +164 -0
  79. package/dist/mcp/fastmcp/tools/hooks/explain.js.map +1 -0
  80. package/dist/mcp/fastmcp/tools/hooks/index.d.ts +28 -0
  81. package/dist/mcp/fastmcp/tools/hooks/index.d.ts.map +1 -0
  82. package/dist/mcp/fastmcp/tools/hooks/index.js +59 -0
  83. package/dist/mcp/fastmcp/tools/hooks/index.js.map +1 -0
  84. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts +307 -0
  85. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts.map +1 -0
  86. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +714 -0
  87. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -0
  88. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts +58 -0
  89. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts.map +1 -0
  90. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js +425 -0
  91. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js.map +1 -0
  92. package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts +6 -0
  93. package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts.map +1 -0
  94. package/dist/mcp/fastmcp/tools/hooks/metrics.js +137 -0
  95. package/dist/mcp/fastmcp/tools/hooks/metrics.js.map +1 -0
  96. package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts +7 -0
  97. package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts.map +1 -0
  98. package/dist/mcp/fastmcp/tools/hooks/post-command.js +91 -0
  99. package/dist/mcp/fastmcp/tools/hooks/post-command.js.map +1 -0
  100. package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts +12 -0
  101. package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts.map +1 -0
  102. package/dist/mcp/fastmcp/tools/hooks/post-edit.js +146 -0
  103. package/dist/mcp/fastmcp/tools/hooks/post-edit.js.map +1 -0
  104. package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts +7 -0
  105. package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts.map +1 -0
  106. package/dist/mcp/fastmcp/tools/hooks/pre-command.js +70 -0
  107. package/dist/mcp/fastmcp/tools/hooks/pre-command.js.map +1 -0
  108. package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts +14 -0
  109. package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts.map +1 -0
  110. package/dist/mcp/fastmcp/tools/hooks/pre-edit.js +121 -0
  111. package/dist/mcp/fastmcp/tools/hooks/pre-edit.js.map +1 -0
  112. package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts +7 -0
  113. package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts.map +1 -0
  114. package/dist/mcp/fastmcp/tools/hooks/pretrain.js +171 -0
  115. package/dist/mcp/fastmcp/tools/hooks/pretrain.js.map +1 -0
  116. package/dist/mcp/fastmcp/tools/hooks/route.d.ts +12 -0
  117. package/dist/mcp/fastmcp/tools/hooks/route.d.ts.map +1 -0
  118. package/dist/mcp/fastmcp/tools/hooks/route.js +267 -0
  119. package/dist/mcp/fastmcp/tools/hooks/route.js.map +1 -0
  120. package/dist/mcp/fastmcp/tools/hooks/shared.d.ts +46 -0
  121. package/dist/mcp/fastmcp/tools/hooks/shared.d.ts.map +1 -0
  122. package/dist/mcp/fastmcp/tools/hooks/shared.js +159 -0
  123. package/dist/mcp/fastmcp/tools/hooks/shared.js.map +1 -0
  124. package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts +7 -0
  125. package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts.map +1 -0
  126. package/dist/mcp/fastmcp/tools/hooks/transfer.js +151 -0
  127. package/dist/mcp/fastmcp/tools/hooks/transfer.js.map +1 -0
  128. package/dist/mcp/tools/agent-booster-tools.d.ts +10 -1
  129. package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
  130. package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
  131. package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
  132. package/dist/mcp/tools/sona-tools.js +15 -3
  133. package/dist/mcp/tools/sona-tools.js.map +1 -1
  134. package/dist/memory/SharedMemoryPool.d.ts +16 -3
  135. package/dist/memory/SharedMemoryPool.d.ts.map +1 -1
  136. package/dist/memory/SharedMemoryPool.js +33 -1
  137. package/dist/memory/SharedMemoryPool.js.map +1 -1
  138. package/dist/middleware/auth.middleware.d.ts +114 -0
  139. package/dist/middleware/auth.middleware.d.ts.map +1 -0
  140. package/dist/middleware/auth.middleware.js +222 -0
  141. package/dist/middleware/auth.middleware.js.map +1 -0
  142. package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
  143. package/dist/optimizations/agent-booster-migration.js.map +1 -1
  144. package/dist/proxy/anthropic-to-gemini.d.ts.map +1 -1
  145. package/dist/proxy/anthropic-to-gemini.js.map +1 -1
  146. package/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -1
  147. package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
  148. package/dist/proxy/anthropic-to-requesty.d.ts.map +1 -1
  149. package/dist/proxy/anthropic-to-requesty.js.map +1 -1
  150. package/dist/proxy/quic-proxy.d.ts +0 -1
  151. package/dist/proxy/quic-proxy.d.ts.map +1 -1
  152. package/dist/proxy/quic-proxy.js +2 -1
  153. package/dist/proxy/quic-proxy.js.map +1 -1
  154. package/dist/reasoningbank/AdvancedMemory.d.ts.map +1 -1
  155. package/dist/reasoningbank/AdvancedMemory.js +12 -1
  156. package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
  157. package/dist/reasoningbank/HybridBackend.d.ts +9 -0
  158. package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
  159. package/dist/reasoningbank/HybridBackend.js +48 -4
  160. package/dist/reasoningbank/HybridBackend.js.map +1 -1
  161. package/dist/reasoningbank/backend-selector.d.ts +1 -1
  162. package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
  163. package/dist/reasoningbank/backend-selector.js.map +1 -1
  164. package/dist/reasoningbank/index-new.d.ts +0 -6
  165. package/dist/reasoningbank/index-new.d.ts.map +1 -1
  166. package/dist/reasoningbank/index-new.js +9 -7
  167. package/dist/reasoningbank/index-new.js.map +1 -1
  168. package/dist/reasoningbank/index.d.ts +1 -6
  169. package/dist/reasoningbank/index.d.ts.map +1 -1
  170. package/dist/reasoningbank/index.js +10 -7
  171. package/dist/reasoningbank/index.js.map +1 -1
  172. package/dist/router/providers/onnx-local.d.ts.map +1 -1
  173. package/dist/router/providers/onnx-local.js +3 -1
  174. package/dist/router/providers/onnx-local.js.map +1 -1
  175. package/dist/routing/CircuitBreakerRouter.d.ts +187 -0
  176. package/dist/routing/CircuitBreakerRouter.d.ts.map +1 -0
  177. package/dist/routing/CircuitBreakerRouter.js +460 -0
  178. package/dist/routing/CircuitBreakerRouter.js.map +1 -0
  179. package/dist/routing/SemanticRouter.d.ts +164 -0
  180. package/dist/routing/SemanticRouter.d.ts.map +1 -0
  181. package/dist/routing/SemanticRouter.js +291 -0
  182. package/dist/routing/SemanticRouter.js.map +1 -0
  183. package/dist/routing/index.d.ts +12 -0
  184. package/dist/routing/index.d.ts.map +1 -0
  185. package/dist/routing/index.js +10 -0
  186. package/dist/routing/index.js.map +1 -0
  187. package/dist/services/embedding-service.d.ts.map +1 -1
  188. package/dist/services/embedding-service.js +5 -2
  189. package/dist/services/embedding-service.js.map +1 -1
  190. package/dist/services/sona-agent-training.js +1 -1
  191. package/dist/services/sona-agent-training.js.map +1 -1
  192. package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
  193. package/dist/services/sona-agentdb-integration.js +10 -5
  194. package/dist/services/sona-agentdb-integration.js.map +1 -1
  195. package/dist/services/sona-service.d.ts +6 -6
  196. package/dist/services/sona-service.d.ts.map +1 -1
  197. package/dist/services/sona-service.js +3 -1
  198. package/dist/services/sona-service.js.map +1 -1
  199. package/dist/utils/agentdb-runtime-patch.d.ts +1 -0
  200. package/dist/utils/agentdb-runtime-patch.d.ts.map +1 -1
  201. package/dist/utils/agentdb-runtime-patch.js +97 -2
  202. package/dist/utils/agentdb-runtime-patch.js.map +1 -1
  203. package/dist/utils/audit-logger.d.ts +115 -0
  204. package/dist/utils/audit-logger.d.ts.map +1 -0
  205. package/dist/utils/audit-logger.js +228 -0
  206. package/dist/utils/audit-logger.js.map +1 -0
  207. package/dist/utils/cli.d.ts +1 -1
  208. package/dist/utils/cli.d.ts.map +1 -1
  209. package/dist/utils/cli.js +5 -0
  210. package/dist/utils/cli.js.map +1 -1
  211. package/dist/utils/input-validator.d.ts +116 -0
  212. package/dist/utils/input-validator.d.ts.map +1 -0
  213. package/dist/utils/input-validator.js +299 -0
  214. package/dist/utils/input-validator.js.map +1 -0
  215. package/dist/utils/rate-limiter.js +2 -2
  216. package/dist/utils/rate-limiter.js.map +1 -1
  217. package/package.json +14 -3
  218. package/scripts/postinstall.js +72 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingCache.js","sourceRoot":"","sources":["../../src/intelligence/EmbeddingCache.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * EmbeddingCache - Persistent cache for embeddings\n *\n * Makes ONNX embeddings practical by caching across sessions:\n * - First embed: ~400ms (ONNX inference)\n * - Cached embed: ~0.1ms (SQLite lookup) or ~0.01ms (in-memory fallback)\n *\n * Storage: ~/.agentic-flow/embedding-cache.db (if SQLite available)\n *\n * Windows Compatibility:\n * - Falls back to in-memory cache if better-sqlite3 compilation fails\n * - No native module compilation required for basic functionality\n */\n\nimport { existsSync, mkdirSync, statSync, readFileSync, writeFileSync, unlinkSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\nimport { createHash } from 'crypto';\n\nexport interface CacheStats {\n totalEntries: number;\n hits: number;\n misses: number;\n hitRate: number;\n dbSizeBytes: number;\n oldestEntry: number;\n newestEntry: number;\n backend: 'sqlite' | 'memory' | 'file';\n}\n\nexport interface CacheConfig {\n maxEntries?: number; // Max cache entries (default: 10000)\n maxAgeDays?: number; // Max age before eviction (default: 30)\n dbPath?: string; // Custom database path\n dimension?: number; // Embedding dimension (default: 384)\n forceMemory?: boolean; // Force in-memory cache (no persistence)\n}\n\n// Default config\nconst DEFAULT_CONFIG: Required<CacheConfig> = {\n maxEntries: 10000,\n maxAgeDays: 30,\n dbPath: join(homedir(), '.agentic-flow', 'embedding-cache.db'),\n dimension: 384,\n forceMemory: false,\n};\n\n// Check if better-sqlite3 is available (native, fastest)\nlet BetterSqlite3: any = null;\nlet nativeSqliteAvailable = false;\n\n// Check if sql.js is available (WASM, cross-platform)\nlet SqlJs: any = null;\nlet wasmSqliteAvailable = false;\n\ntry {\n // Try native SQLite first (fastest)\n BetterSqlite3 = require('better-sqlite3');\n nativeSqliteAvailable = true;\n} catch {\n // Native not available, try WASM fallback\n try {\n SqlJs = require('sql.js');\n wasmSqliteAvailable = true;\n } catch {\n // Neither available, will use memory cache\n }\n}\n\nconst sqliteAvailable = nativeSqliteAvailable || wasmSqliteAvailable;\n\n/**\n * In-memory cache fallback for Windows compatibility\n */\nclass MemoryCache {\n private cache: Map<string, { embedding: Float32Array; model: string; hits: number; created: number; accessed: number }> = new Map();\n private maxEntries: number;\n private hits: number = 0;\n private misses: number = 0;\n\n constructor(maxEntries: number = 10000) {\n this.maxEntries = maxEntries;\n }\n\n get(hash: string): { embedding: Float32Array; dimension: number } | null {\n const entry = this.cache.get(hash);\n if (entry) {\n entry.hits++;\n entry.accessed = Date.now();\n this.hits++;\n return { embedding: entry.embedding, dimension: entry.embedding.length };\n }\n this.misses++;\n return null;\n }\n\n set(hash: string, text: string, embedding: Float32Array, model: string): void {\n const now = Date.now();\n this.cache.set(hash, {\n embedding,\n model,\n hits: 1,\n created: now,\n accessed: now,\n });\n\n // Evict if over limit\n if (this.cache.size > this.maxEntries) {\n this.evictLRU(Math.ceil(this.maxEntries * 0.1));\n }\n }\n\n has(hash: string): boolean {\n return this.cache.has(hash);\n }\n\n private evictLRU(count: number): void {\n const entries = Array.from(this.cache.entries())\n .sort((a, b) => a[1].accessed - b[1].accessed)\n .slice(0, count);\n for (const [key] of entries) {\n this.cache.delete(key);\n }\n }\n\n clear(): void {\n this.cache.clear();\n this.hits = 0;\n this.misses = 0;\n }\n\n getStats(): CacheStats {\n const entries = Array.from(this.cache.values());\n const oldest = entries.length > 0 ? Math.min(...entries.map(e => e.created)) : 0;\n const newest = entries.length > 0 ? Math.max(...entries.map(e => e.created)) : 0;\n\n return {\n totalEntries: this.cache.size,\n hits: this.hits,\n misses: this.misses,\n hitRate: this.hits + this.misses > 0 ? this.hits / (this.hits + this.misses) : 0,\n dbSizeBytes: this.cache.size * 384 * 4, // Approximate\n oldestEntry: oldest,\n newestEntry: newest,\n backend: 'memory',\n };\n }\n}\n\n/**\n * WASM SQLite cache (sql.js) - Cross-platform with persistence\n * Works on Windows without native compilation\n */\nclass WasmSqliteCache {\n private db: any = null;\n private config: Required<CacheConfig>;\n private hits: number = 0;\n private misses: number = 0;\n private dirty: boolean = false;\n private saveTimeout: any = null;\n\n constructor(config: Required<CacheConfig>) {\n this.config = config;\n }\n\n async init(): Promise<void> {\n if (this.db) return;\n\n // Ensure directory exists\n const dir = join(homedir(), '.agentic-flow');\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n // Initialize sql.js\n const SQL = await SqlJs();\n\n // Load existing database or create new\n const dbPath = this.config.dbPath.replace('.db', '-wasm.db');\n try {\n if (existsSync(dbPath)) {\n const buffer = readFileSync(dbPath);\n this.db = new SQL.Database(buffer);\n } else {\n this.db = new SQL.Database();\n }\n } catch {\n this.db = new SQL.Database();\n }\n\n this.initSchema();\n this.cleanupOldEntries();\n }\n\n private initSchema(): void {\n this.db.run(`\n CREATE TABLE IF NOT EXISTS embeddings (\n hash TEXT PRIMARY KEY,\n text TEXT NOT NULL,\n embedding BLOB NOT NULL,\n dimension INTEGER NOT NULL,\n model TEXT NOT NULL,\n hits INTEGER DEFAULT 1,\n created_at INTEGER NOT NULL,\n last_accessed INTEGER NOT NULL\n )\n `);\n this.db.run(`CREATE INDEX IF NOT EXISTS idx_last_accessed ON embeddings(last_accessed)`);\n this.db.run(`CREATE INDEX IF NOT EXISTS idx_created_at ON embeddings(created_at)`);\n }\n\n private save(): void {\n // Debounce saves\n if (this.saveTimeout) return;\n\n this.saveTimeout = setTimeout(() => {\n try {\n const data = this.db.export();\n const buffer = Buffer.from(data);\n const dbPath = this.config.dbPath.replace('.db', '-wasm.db');\n writeFileSync(dbPath, buffer);\n this.dirty = false;\n } catch (err) {\n console.warn('[WasmSqliteCache] Save failed:', err);\n }\n this.saveTimeout = null;\n }, 1000);\n }\n\n get(hash: string): { embedding: Float32Array; dimension: number } | null {\n if (!this.db) return null;\n\n const stmt = this.db.prepare(`SELECT embedding, dimension FROM embeddings WHERE hash = ?`);\n stmt.bind([hash]);\n\n if (stmt.step()) {\n const row = stmt.getAsObject();\n stmt.free();\n\n this.hits++;\n this.db.run(`UPDATE embeddings SET hits = hits + 1, last_accessed = ? WHERE hash = ?`, [Date.now(), hash]);\n this.dirty = true;\n this.save();\n\n // Convert Uint8Array to Float32Array\n const uint8 = row.embedding as Uint8Array;\n const float32 = new Float32Array(uint8.buffer, uint8.byteOffset, row.dimension as number);\n return { embedding: float32, dimension: row.dimension as number };\n }\n\n stmt.free();\n this.misses++;\n return null;\n }\n\n set(hash: string, text: string, embedding: Float32Array, model: string): void {\n if (!this.db) return;\n\n const now = Date.now();\n const buffer = new Uint8Array(embedding.buffer, embedding.byteOffset, embedding.byteLength);\n\n this.db.run(\n `INSERT OR REPLACE INTO embeddings (hash, text, embedding, dimension, model, hits, created_at, last_accessed)\n VALUES (?, ?, ?, ?, ?, 1, ?, ?)`,\n [hash, text, buffer, embedding.length, model, now, now]\n );\n\n this.dirty = true;\n this.maybeEvict();\n this.save();\n }\n\n has(hash: string): boolean {\n if (!this.db) return false;\n const stmt = this.db.prepare(`SELECT 1 FROM embeddings WHERE hash = ? LIMIT 1`);\n stmt.bind([hash]);\n const found = stmt.step();\n stmt.free();\n return found;\n }\n\n private maybeEvict(): void {\n const countStmt = this.db.prepare(`SELECT COUNT(*) as count FROM embeddings`);\n countStmt.step();\n const count = countStmt.getAsObject().count as number;\n countStmt.free();\n\n if (count > this.config.maxEntries) {\n const toEvict = Math.ceil(this.config.maxEntries * 0.1);\n this.db.run(`DELETE FROM embeddings WHERE hash IN (\n SELECT hash FROM embeddings ORDER BY last_accessed ASC LIMIT ?\n )`, [toEvict]);\n }\n }\n\n private cleanupOldEntries(): void {\n const cutoff = Date.now() - (this.config.maxAgeDays * 24 * 60 * 60 * 1000);\n this.db.run(`DELETE FROM embeddings WHERE created_at < ?`, [cutoff]);\n }\n\n clear(): void {\n if (this.db) {\n this.db.run('DELETE FROM embeddings');\n this.hits = 0;\n this.misses = 0;\n this.save();\n }\n }\n\n close(): void {\n if (this.saveTimeout) {\n clearTimeout(this.saveTimeout);\n // Force save\n try {\n const data = this.db.export();\n const buffer = Buffer.from(data);\n const dbPath = this.config.dbPath.replace('.db', '-wasm.db');\n writeFileSync(dbPath, buffer);\n } catch {}\n }\n if (this.db) {\n this.db.close();\n this.db = null;\n }\n }\n\n getStats(): CacheStats {\n if (!this.db) {\n return {\n totalEntries: 0,\n hits: this.hits,\n misses: this.misses,\n hitRate: 0,\n dbSizeBytes: 0,\n oldestEntry: 0,\n newestEntry: 0,\n backend: 'memory',\n };\n }\n\n const countStmt = this.db.prepare(`SELECT COUNT(*) as count FROM embeddings`);\n countStmt.step();\n const count = countStmt.getAsObject().count as number;\n countStmt.free();\n\n const oldestStmt = this.db.prepare(`SELECT MIN(created_at) as oldest FROM embeddings`);\n oldestStmt.step();\n const oldest = oldestStmt.getAsObject().oldest as number || 0;\n oldestStmt.free();\n\n const newestStmt = this.db.prepare(`SELECT MAX(created_at) as newest FROM embeddings`);\n newestStmt.step();\n const newest = newestStmt.getAsObject().newest as number || 0;\n newestStmt.free();\n\n let dbSizeBytes = 0;\n try {\n const dbPath = this.config.dbPath.replace('.db', '-wasm.db');\n const stats = statSync(dbPath);\n dbSizeBytes = stats.size;\n } catch {}\n\n return {\n totalEntries: count,\n hits: this.hits,\n misses: this.misses,\n hitRate: this.hits + this.misses > 0 ? this.hits / (this.hits + this.misses) : 0,\n dbSizeBytes,\n oldestEntry: oldest,\n newestEntry: newest,\n backend: 'file',\n };\n }\n}\n\n/**\n * Native SQLite cache (better-sqlite3) - Fastest option\n */\nclass SqliteCache {\n private db: any;\n private config: Required<CacheConfig>;\n private hits: number = 0;\n private misses: number = 0;\n\n // Prepared statements for performance\n private stmtGet!: any;\n private stmtInsert!: any;\n private stmtUpdateHits!: any;\n private stmtCount!: any;\n private stmtEvictOld!: any;\n private stmtEvictLRU!: any;\n private stmtHas!: any;\n\n constructor(config: Required<CacheConfig>) {\n this.config = config;\n\n // Ensure directory exists\n const dir = join(homedir(), '.agentic-flow');\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n // Open database with WAL mode for better concurrency\n this.db = new BetterSqlite3(this.config.dbPath);\n this.db.pragma('journal_mode = WAL');\n this.db.pragma('synchronous = NORMAL');\n this.db.pragma('cache_size = 10000');\n\n this.initSchema();\n this.prepareStatements();\n this.cleanupOldEntries();\n }\n\n private initSchema(): void {\n this.db.exec(`\n CREATE TABLE IF NOT EXISTS embeddings (\n hash TEXT PRIMARY KEY,\n text TEXT NOT NULL,\n embedding BLOB NOT NULL,\n dimension INTEGER NOT NULL,\n model TEXT NOT NULL,\n hits INTEGER DEFAULT 1,\n created_at INTEGER NOT NULL,\n last_accessed INTEGER NOT NULL\n );\n\n CREATE INDEX IF NOT EXISTS idx_last_accessed ON embeddings(last_accessed);\n CREATE INDEX IF NOT EXISTS idx_created_at ON embeddings(created_at);\n CREATE INDEX IF NOT EXISTS idx_model ON embeddings(model);\n `);\n }\n\n private prepareStatements(): void {\n this.stmtGet = this.db.prepare(`\n SELECT embedding, dimension FROM embeddings WHERE hash = ?\n `);\n\n this.stmtInsert = this.db.prepare(`\n INSERT OR REPLACE INTO embeddings (hash, text, embedding, dimension, model, hits, created_at, last_accessed)\n VALUES (?, ?, ?, ?, ?, 1, ?, ?)\n `);\n\n this.stmtUpdateHits = this.db.prepare(`\n UPDATE embeddings SET hits = hits + 1, last_accessed = ? WHERE hash = ?\n `);\n\n this.stmtCount = this.db.prepare(`SELECT COUNT(*) as count FROM embeddings`);\n\n this.stmtEvictOld = this.db.prepare(`\n DELETE FROM embeddings WHERE created_at < ?\n `);\n\n this.stmtEvictLRU = this.db.prepare(`\n DELETE FROM embeddings WHERE hash IN (\n SELECT hash FROM embeddings ORDER BY last_accessed ASC LIMIT ?\n )\n `);\n\n this.stmtHas = this.db.prepare(`SELECT 1 FROM embeddings WHERE hash = ? LIMIT 1`);\n }\n\n get(hash: string): { embedding: Float32Array; dimension: number } | null {\n const row = this.stmtGet.get(hash) as { embedding: Buffer; dimension: number } | undefined;\n\n if (row) {\n this.hits++;\n this.stmtUpdateHits.run(Date.now(), hash);\n return {\n embedding: new Float32Array(row.embedding.buffer, row.embedding.byteOffset, row.dimension),\n dimension: row.dimension,\n };\n }\n\n this.misses++;\n return null;\n }\n\n set(hash: string, text: string, embedding: Float32Array, model: string): void {\n const now = Date.now();\n const buffer = Buffer.from(embedding.buffer, embedding.byteOffset, embedding.byteLength);\n this.stmtInsert.run(hash, text, buffer, embedding.length, model, now, now);\n this.maybeEvict();\n }\n\n has(hash: string): boolean {\n return this.stmtHas.get(hash) !== undefined;\n }\n\n private maybeEvict(): void {\n const count = (this.stmtCount.get() as { count: number }).count;\n if (count > this.config.maxEntries) {\n const toEvict = Math.ceil(this.config.maxEntries * 0.1);\n this.stmtEvictLRU.run(toEvict);\n }\n }\n\n private cleanupOldEntries(): void {\n const cutoff = Date.now() - (this.config.maxAgeDays * 24 * 60 * 60 * 1000);\n this.stmtEvictOld.run(cutoff);\n }\n\n clear(): void {\n this.db.exec('DELETE FROM embeddings');\n this.hits = 0;\n this.misses = 0;\n }\n\n vacuum(): void {\n this.db.exec('VACUUM');\n }\n\n close(): void {\n this.db.close();\n }\n\n getStats(): CacheStats {\n const count = (this.stmtCount.get() as { count: number }).count;\n const oldest = this.db.prepare(`SELECT MIN(created_at) as oldest FROM embeddings`).get() as { oldest: number | null };\n const newest = this.db.prepare(`SELECT MAX(created_at) as newest FROM embeddings`).get() as { newest: number | null };\n\n let dbSizeBytes = 0;\n try {\n const stats = statSync(this.config.dbPath);\n dbSizeBytes = stats.size;\n } catch {}\n\n return {\n totalEntries: count,\n hits: this.hits,\n misses: this.misses,\n hitRate: this.hits + this.misses > 0 ? this.hits / (this.hits + this.misses) : 0,\n dbSizeBytes,\n oldestEntry: oldest.oldest || 0,\n newestEntry: newest.newest || 0,\n backend: 'sqlite',\n };\n }\n}\n\n/**\n * EmbeddingCache - Auto-selects best available backend\n *\n * Backend priority:\n * 1. Native SQLite (better-sqlite3) - Fastest, 9000x speedup\n * 2. WASM SQLite (sql.js) - Cross-platform with persistence\n * 3. Memory cache - Fallback, no persistence\n */\nexport class EmbeddingCache {\n private backend: SqliteCache | WasmSqliteCache | MemoryCache;\n private config: Required<CacheConfig>;\n private wasmInitPromise: Promise<void> | null = null;\n\n constructor(config: CacheConfig = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n\n // Try native SQLite first (fastest)\n if (nativeSqliteAvailable && !this.config.forceMemory) {\n try {\n this.backend = new SqliteCache(this.config);\n return;\n } catch (err) {\n console.warn('[EmbeddingCache] Native SQLite failed, trying WASM fallback');\n }\n }\n\n // Try WASM SQLite second (cross-platform with persistence)\n if (wasmSqliteAvailable && !this.config.forceMemory) {\n this.backend = new WasmSqliteCache(this.config);\n this.wasmInitPromise = (this.backend as WasmSqliteCache).init().catch(err => {\n console.warn('[EmbeddingCache] WASM SQLite init failed, using memory cache');\n this.backend = new MemoryCache(this.config.maxEntries);\n });\n return;\n }\n\n // Fallback to memory cache\n this.backend = new MemoryCache(this.config.maxEntries);\n }\n\n /**\n * Ensure WASM backend is initialized (if using)\n */\n private async ensureInit(): Promise<void> {\n if (this.wasmInitPromise) {\n await this.wasmInitPromise;\n }\n }\n\n /**\n * Generate hash key for text + model combination\n */\n private hashKey(text: string, model: string = 'default'): string {\n return createHash('sha256').update(`${model}:${text}`).digest('hex').slice(0, 32);\n }\n\n /**\n * Get embedding from cache\n */\n get(text: string, model: string = 'default'): Float32Array | null {\n const hash = this.hashKey(text, model);\n const result = this.backend.get(hash);\n return result ? result.embedding : null;\n }\n\n /**\n * Store embedding in cache\n */\n set(text: string, embedding: Float32Array, model: string = 'default'): void {\n const hash = this.hashKey(text, model);\n if (this.backend instanceof SqliteCache) {\n this.backend.set(hash, text, embedding, model);\n } else {\n this.backend.set(hash, text, embedding, model);\n }\n }\n\n /**\n * Check if text is cached\n */\n has(text: string, model: string = 'default'): boolean {\n const hash = this.hashKey(text, model);\n return this.backend.has(hash);\n }\n\n /**\n * Get multiple embeddings at once\n */\n getMany(texts: string[], model: string = 'default'): Map<string, Float32Array> {\n const result = new Map<string, Float32Array>();\n for (const text of texts) {\n const embedding = this.get(text, model);\n if (embedding) {\n result.set(text, embedding);\n }\n }\n return result;\n }\n\n /**\n * Store multiple embeddings at once\n */\n setMany(entries: Array<{ text: string; embedding: Float32Array }>, model: string = 'default'): void {\n for (const { text, embedding } of entries) {\n this.set(text, embedding, model);\n }\n }\n\n /**\n * Get cache statistics\n */\n getStats(): CacheStats {\n return this.backend.getStats();\n }\n\n /**\n * Clear all cached embeddings\n */\n clear(): void {\n this.backend.clear();\n }\n\n /**\n * Vacuum database (SQLite only)\n */\n vacuum(): void {\n if (this.backend instanceof SqliteCache) {\n this.backend.vacuum();\n }\n }\n\n /**\n * Close database connection\n */\n close(): void {\n if (this.backend instanceof SqliteCache || this.backend instanceof WasmSqliteCache) {\n this.backend.close();\n }\n }\n\n /**\n * Check if using SQLite backend (native or WASM)\n */\n isSqliteBackend(): boolean {\n return this.backend instanceof SqliteCache || this.backend instanceof WasmSqliteCache;\n }\n\n /**\n * Get backend type\n */\n getBackendType(): 'native' | 'wasm' | 'memory' {\n if (this.backend instanceof SqliteCache) return 'native';\n if (this.backend instanceof WasmSqliteCache) return 'wasm';\n return 'memory';\n }\n}\n\n// Singleton instance\nlet cacheInstance: EmbeddingCache | null = null;\n\n/**\n * Get the singleton embedding cache\n */\nexport function getEmbeddingCache(config?: CacheConfig): EmbeddingCache {\n if (!cacheInstance) {\n cacheInstance = new EmbeddingCache(config);\n }\n return cacheInstance;\n}\n\n/**\n * Reset the cache singleton (for testing)\n */\nexport function resetEmbeddingCache(): void {\n if (cacheInstance) {\n cacheInstance.close();\n cacheInstance = null;\n }\n}\n\n/**\n * Check if SQLite is available\n */\nexport function isSqliteAvailable(): boolean {\n return sqliteAvailable;\n}\n"]}
@@ -0,0 +1,380 @@
1
+ /**
2
+ * EmbeddingService - Unified embedding interface for agentic-flow
3
+ *
4
+ * Uses ruvector@0.1.61+ for ONNX embeddings with:
5
+ * - SIMD128 acceleration (6x faster)
6
+ * - Parallel worker threads (7 workers)
7
+ * - all-MiniLM-L6-v2 model (384 dimensions)
8
+ * - Persistent SQLite cache (0.1ms vs 400ms)
9
+ *
10
+ * Configure via:
11
+ * - AGENTIC_FLOW_EMBEDDINGS=simple|onnx|auto (default: auto)
12
+ * - AGENTIC_FLOW_EMBEDDING_MODEL=all-MiniLM-L6-v2 (default)
13
+ * - AGENTIC_FLOW_EMBEDDING_CACHE=true|false (default: true)
14
+ * - AGENTIC_FLOW_PERSISTENT_CACHE=true|false (default: true)
15
+ */
16
+ export type EmbeddingBackend = 'simple' | 'onnx' | 'auto';
17
+ export interface EmbeddingStats {
18
+ backend: EmbeddingBackend;
19
+ effectiveBackend: EmbeddingBackend;
20
+ dimension: number;
21
+ totalEmbeddings: number;
22
+ totalLatencyMs: number;
23
+ avgLatencyMs: number;
24
+ cacheHits: number;
25
+ modelLoaded: boolean;
26
+ modelName?: string;
27
+ simdAvailable?: boolean;
28
+ parallelWorkers?: number;
29
+ persistentCache?: {
30
+ enabled: boolean;
31
+ entries: number;
32
+ hits: number;
33
+ misses: number;
34
+ hitRate: number;
35
+ dbSizeKB: number;
36
+ };
37
+ }
38
+ export interface SimilarityResult {
39
+ similarity: number;
40
+ timeMs: number;
41
+ }
42
+ export interface SearchResult {
43
+ text: string;
44
+ index: number;
45
+ similarity: number;
46
+ }
47
+ export interface DuplicateGroup {
48
+ indices: number[];
49
+ texts: string[];
50
+ similarity: number;
51
+ }
52
+ export declare class EmbeddingService {
53
+ private static instance;
54
+ private backend;
55
+ private effectiveBackend;
56
+ private dimension;
57
+ private modelName;
58
+ private modelLoaded;
59
+ private loadingPromise;
60
+ private totalEmbeddings;
61
+ private totalLatencyMs;
62
+ private cacheHits;
63
+ private cache;
64
+ private cacheEnabled;
65
+ private persistentCache;
66
+ private persistentCacheEnabled;
67
+ private corpus;
68
+ private constructor();
69
+ static getInstance(): EmbeddingService;
70
+ /**
71
+ * Resolve the effective backend based on ONNX detection
72
+ */
73
+ private resolveBackend;
74
+ /**
75
+ * Get configured backend (may be 'auto')
76
+ */
77
+ getBackend(): EmbeddingBackend;
78
+ /**
79
+ * Get effective backend after detection
80
+ */
81
+ getEffectiveBackend(): EmbeddingBackend;
82
+ /**
83
+ * Get embedding dimension
84
+ */
85
+ getDimension(): number;
86
+ /**
87
+ * Check if ONNX model is loaded
88
+ */
89
+ isModelLoaded(): boolean;
90
+ /**
91
+ * Generate embedding for text
92
+ * Auto-detects ONNX and uses it if available (default behavior)
93
+ */
94
+ embed(text: string): Promise<Float32Array>;
95
+ /**
96
+ * Generate embeddings for multiple texts (batch processing with parallel workers)
97
+ * Batch processing provides significant speedup with parallel ONNX workers
98
+ */
99
+ embedBatch(texts: string[]): Promise<Float32Array[]>;
100
+ /**
101
+ * Compute similarity between two texts
102
+ */
103
+ similarity(text1: string, text2: string): Promise<number>;
104
+ /**
105
+ * Compute NxN similarity matrix for a list of texts
106
+ * Uses parallel workers for ONNX backend
107
+ */
108
+ similarityMatrix(texts: string[]): Promise<number[][]>;
109
+ /**
110
+ * Build a corpus for semantic search
111
+ */
112
+ buildCorpus(texts: string[]): Promise<void>;
113
+ /**
114
+ * Semantic search against the corpus
115
+ * Returns top-k most similar texts
116
+ */
117
+ semanticSearch(query: string, topK?: number): Promise<SearchResult[]>;
118
+ /**
119
+ * Find near-duplicate texts in a list
120
+ * Groups texts with similarity above threshold
121
+ */
122
+ findDuplicates(texts: string[], threshold?: number): Promise<DuplicateGroup[]>;
123
+ /**
124
+ * K-means clustering of texts
125
+ * Returns cluster assignments and centroids
126
+ */
127
+ clusterTexts(texts: string[], k?: number, maxIterations?: number): Promise<{
128
+ clusters: number[];
129
+ centroids: Float32Array[];
130
+ }>;
131
+ /**
132
+ * Stream embeddings for large batches (memory efficient)
133
+ * Yields embeddings one at a time
134
+ */
135
+ streamEmbed(texts: string[], batchSize?: number): AsyncGenerator<{
136
+ index: number;
137
+ text: string;
138
+ embedding: Float32Array;
139
+ }>;
140
+ /**
141
+ * Simple hash-based embedding (fast, not semantic)
142
+ */
143
+ simpleEmbed(text: string, dim?: number): Float32Array;
144
+ /**
145
+ * Compute cosine similarity between two embeddings
146
+ */
147
+ cosineSimilarity(a: Float32Array, b: Float32Array): number;
148
+ /**
149
+ * Get statistics
150
+ */
151
+ getStats(): EmbeddingStats;
152
+ /**
153
+ * Clear in-memory cache
154
+ */
155
+ clearCache(): void;
156
+ /**
157
+ * Clear persistent cache (SQLite)
158
+ */
159
+ clearPersistentCache(): void;
160
+ /**
161
+ * Clear all caches (memory + persistent)
162
+ */
163
+ clearAllCaches(): void;
164
+ /**
165
+ * Get persistent cache stats
166
+ */
167
+ getPersistentCacheStats(): {
168
+ entries: number;
169
+ hits: number;
170
+ misses: number;
171
+ hitRate: number;
172
+ } | null;
173
+ /**
174
+ * Clear corpus
175
+ */
176
+ clearCorpus(): void;
177
+ /**
178
+ * Shutdown (cleanup workers)
179
+ */
180
+ shutdown(): Promise<void>;
181
+ /**
182
+ * Reset instance (for testing)
183
+ */
184
+ static reset(): Promise<void>;
185
+ /**
186
+ * Pretrain cache with texts from files
187
+ * Embeds content and stores in persistent cache for fast retrieval
188
+ *
189
+ * @param sources - File paths or glob patterns, or array of texts
190
+ * @param options - Pretrain options
191
+ * @returns Stats about pretraining
192
+ */
193
+ pretrain(sources: string | string[], options?: {
194
+ batchSize?: number;
195
+ onProgress?: (processed: number, total: number) => void;
196
+ chunkSize?: number;
197
+ overlapSize?: number;
198
+ skipCached?: boolean;
199
+ }): Promise<{
200
+ processed: number;
201
+ cached: number;
202
+ skipped: number;
203
+ timeMs: number;
204
+ }>;
205
+ /**
206
+ * Pretrain with common programming patterns
207
+ * Pre-caches embeddings for frequently used code patterns
208
+ */
209
+ pretrainCodePatterns(): Promise<{
210
+ cached: number;
211
+ timeMs: number;
212
+ }>;
213
+ /**
214
+ * Pretrain from repository structure
215
+ * Analyzes file names and paths to pre-cache common patterns
216
+ */
217
+ pretrainFromRepo(repoPath?: string): Promise<{
218
+ files: number;
219
+ chunks: number;
220
+ timeMs: number;
221
+ }>;
222
+ /**
223
+ * Incremental pretrain - only process changed files since last run
224
+ * Uses git diff to detect modified files
225
+ */
226
+ pretrainIncremental(options?: {
227
+ since?: string;
228
+ repoPath?: string;
229
+ }): Promise<{
230
+ changedFiles: number;
231
+ newChunks: number;
232
+ skipped: number;
233
+ timeMs: number;
234
+ }>;
235
+ /**
236
+ * Smart chunking - split code by semantic boundaries
237
+ * (functions, classes, etc.) instead of fixed size
238
+ */
239
+ semanticChunk(content: string, fileType: string): string[];
240
+ /**
241
+ * Pretrain with semantic chunking
242
+ * Uses code structure to create meaningful chunks
243
+ */
244
+ pretrainSemantic(sources: string[], options?: {
245
+ batchSize?: number;
246
+ onProgress?: (processed: number, total: number) => void;
247
+ }): Promise<{
248
+ files: number;
249
+ chunks: number;
250
+ timeMs: number;
251
+ }>;
252
+ /**
253
+ * Priority pretrain - cache most frequently used patterns first
254
+ * Tracks access patterns and prioritizes high-frequency queries
255
+ */
256
+ private accessCounts;
257
+ recordAccess(text: string): void;
258
+ getTopPatterns(n?: number): string[];
259
+ pretrainPriority(n?: number): Promise<{
260
+ cached: number;
261
+ timeMs: number;
262
+ }>;
263
+ /**
264
+ * Warmup cache on session start
265
+ * Combines code patterns + recent repo changes
266
+ */
267
+ warmup(repoPath?: string): Promise<{
268
+ patterns: number;
269
+ recentChanges: number;
270
+ timeMs: number;
271
+ }>;
272
+ /**
273
+ * Intelligent pretrain using ruvector worker pool
274
+ * Analyzes repo structure, code patterns, and prepares cache
275
+ * Uses parallel workers for maximum throughput
276
+ */
277
+ pretrainIntelligent(options?: {
278
+ repoPath?: string;
279
+ parallel?: boolean;
280
+ onProgress?: (stage: string, progress: number) => void;
281
+ }): Promise<{
282
+ stages: {
283
+ codePatterns: {
284
+ count: number;
285
+ timeMs: number;
286
+ };
287
+ astAnalysis: {
288
+ files: number;
289
+ functions: number;
290
+ timeMs: number;
291
+ };
292
+ gitHistory: {
293
+ commits: number;
294
+ hotFiles: number;
295
+ timeMs: number;
296
+ };
297
+ dependencies: {
298
+ modules: number;
299
+ imports: number;
300
+ timeMs: number;
301
+ };
302
+ semanticChunks: {
303
+ chunks: number;
304
+ timeMs: number;
305
+ };
306
+ };
307
+ totalCached: number;
308
+ totalTimeMs: number;
309
+ }>;
310
+ /**
311
+ * Background pretrain - runs in worker if available
312
+ * Non-blocking, returns immediately with a promise
313
+ */
314
+ pretrainBackground(options?: {
315
+ repoPath?: string;
316
+ }): {
317
+ promise: Promise<void>;
318
+ cancel: () => void;
319
+ };
320
+ /**
321
+ * AI-enhanced pretrain using ruvector attention mechanisms
322
+ * Uses HyperbolicAttention for code structure, MoE for routing
323
+ */
324
+ pretrainWithAI(options?: {
325
+ repoPath?: string;
326
+ attentionType?: 'hyperbolic' | 'moe' | 'graph' | 'auto';
327
+ onProgress?: (stage: string, detail: string) => void;
328
+ }): Promise<{
329
+ patterns: {
330
+ type: string;
331
+ count: number;
332
+ }[];
333
+ attention: {
334
+ type: string;
335
+ timeMs: number;
336
+ };
337
+ predictions: {
338
+ prefetch: number;
339
+ confidence: number;
340
+ };
341
+ totalCached: number;
342
+ totalTimeMs: number;
343
+ }>;
344
+ /**
345
+ * Context-aware prefetch using attention
346
+ * Predicts what embeddings will be needed based on current context
347
+ */
348
+ prefetchForContext(context: {
349
+ currentFile?: string;
350
+ recentFiles?: string[];
351
+ taskType?: 'edit' | 'review' | 'debug' | 'test' | 'refactor';
352
+ userQuery?: string;
353
+ }): Promise<{
354
+ prefetched: number;
355
+ confidence: number;
356
+ timeMs: number;
357
+ }>;
358
+ }
359
+ export declare function getEmbeddingService(): EmbeddingService;
360
+ export declare function embed(text: string): Promise<Float32Array>;
361
+ export declare function embedBatch(texts: string[]): Promise<Float32Array[]>;
362
+ export declare function pretrainCodePatterns(): Promise<{
363
+ cached: number;
364
+ timeMs: number;
365
+ }>;
366
+ export declare function pretrainFromRepo(repoPath?: string): Promise<{
367
+ files: number;
368
+ chunks: number;
369
+ timeMs: number;
370
+ }>;
371
+ export declare function textSimilarity(text1: string, text2: string): Promise<number>;
372
+ export declare function simpleEmbed(text: string, dim?: number): Float32Array;
373
+ export declare function similarityMatrix(texts: string[]): Promise<number[][]>;
374
+ export declare function semanticSearch(query: string, topK?: number): Promise<SearchResult[]>;
375
+ export declare function findDuplicates(texts: string[], threshold?: number): Promise<DuplicateGroup[]>;
376
+ export declare function clusterTexts(texts: string[], k?: number): Promise<{
377
+ clusters: number[];
378
+ centroids: Float32Array[];
379
+ }>;
380
+ //# sourceMappingURL=EmbeddingService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingService.d.ts","sourceRoot":"","sources":["../../src/intelligence/EmbeddingService.ts"],"names":[],"mappings":"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"}