agentic-flow 2.0.1-alpha.2 → 2.0.1-alpha.21
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.
- package/CHANGELOG.md +371 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/agentdb/controllers/EmbeddingService.d.ts +37 -0
- package/dist/agentdb/controllers/EmbeddingService.d.ts.map +1 -0
- package/dist/agentdb/controllers/EmbeddingService.js +1 -0
- package/dist/agentdb/controllers/EmbeddingService.js.map +1 -0
- package/dist/billing/mcp/tools.d.ts.map +1 -1
- package/dist/billing/mcp/tools.js +2 -0
- package/dist/billing/mcp/tools.js.map +1 -1
- package/dist/cli/commands/hooks.d.ts +18 -0
- package/dist/cli/commands/hooks.d.ts.map +1 -0
- package/dist/cli/commands/hooks.js +755 -0
- package/dist/cli/commands/hooks.js.map +1 -0
- package/dist/cli-proxy.d.ts +1 -1
- package/dist/cli-proxy.d.ts.map +1 -1
- package/dist/cli-proxy.js +28 -1
- package/dist/cli-proxy.js.map +1 -1
- package/dist/core/agentdb-fast.js +3 -3
- package/dist/core/agentdb-fast.js.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.js +32 -17
- package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
- package/dist/core/attention-native.d.ts +1 -0
- package/dist/core/attention-native.d.ts.map +1 -1
- package/dist/core/attention-native.js +6 -1
- package/dist/core/attention-native.js.map +1 -1
- package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
- package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
- package/dist/intelligence/EmbeddingCache.d.ts +112 -0
- package/dist/intelligence/EmbeddingCache.d.ts.map +1 -0
- package/dist/intelligence/EmbeddingCache.js +624 -0
- package/dist/intelligence/EmbeddingCache.js.map +1 -0
- package/dist/intelligence/EmbeddingService.d.ts +380 -0
- package/dist/intelligence/EmbeddingService.d.ts.map +1 -0
- package/dist/intelligence/EmbeddingService.js +1484 -0
- package/dist/intelligence/EmbeddingService.js.map +1 -0
- package/dist/intelligence/IntelligenceStore.d.ts +168 -0
- package/dist/intelligence/IntelligenceStore.d.ts.map +1 -0
- package/dist/intelligence/IntelligenceStore.js +364 -0
- package/dist/intelligence/IntelligenceStore.js.map +1 -0
- package/dist/intelligence/RuVectorIntelligence.d.ts +362 -0
- package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -0
- package/dist/intelligence/RuVectorIntelligence.js +853 -0
- package/dist/intelligence/RuVectorIntelligence.js.map +1 -0
- package/dist/intelligence/embedding-benchmark.d.ts +7 -0
- package/dist/intelligence/embedding-benchmark.d.ts.map +1 -0
- package/dist/intelligence/embedding-benchmark.js +155 -0
- package/dist/intelligence/embedding-benchmark.js.map +1 -0
- package/dist/intelligence/index.d.ts +14 -0
- package/dist/intelligence/index.d.ts.map +1 -0
- package/dist/intelligence/index.js +14 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/llm/RuvLLMOrchestrator.d.ts +184 -0
- package/dist/llm/RuvLLMOrchestrator.d.ts.map +1 -0
- package/dist/llm/RuvLLMOrchestrator.js +442 -0
- package/dist/llm/RuvLLMOrchestrator.js.map +1 -0
- package/dist/llm/index.d.ts +9 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +8 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.js +114 -22
- package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
- package/dist/mcp/fastmcp/servers/hooks-server.d.ts +15 -0
- package/dist/mcp/fastmcp/servers/hooks-server.d.ts.map +1 -0
- package/dist/mcp/fastmcp/servers/hooks-server.js +63 -0
- package/dist/mcp/fastmcp/servers/hooks-server.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts +20 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.js +110 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.js +276 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.d.ts +6 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.js +164 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/index.d.ts +28 -0
- package/dist/mcp/fastmcp/tools/hooks/index.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/index.js +59 -0
- package/dist/mcp/fastmcp/tools/hooks/index.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts +307 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +714 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts +58 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js +425 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts +6 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.js +137 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.js +91 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts +12 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.js +146 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.js +70 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts +14 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.js +121 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.js +171 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/route.d.ts +12 -0
- package/dist/mcp/fastmcp/tools/hooks/route.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/route.js +267 -0
- package/dist/mcp/fastmcp/tools/hooks/route.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.d.ts +46 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.js +159 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.js +151 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.js.map +1 -0
- package/dist/mcp/tools/agent-booster-tools.d.ts +15 -2
- package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
- package/dist/mcp/tools/agent-booster-tools.js +34 -6
- package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
- package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
- package/dist/mcp/tools/sona-tools.js +15 -3
- package/dist/mcp/tools/sona-tools.js.map +1 -1
- package/dist/memory/SharedMemoryPool.d.ts +16 -3
- package/dist/memory/SharedMemoryPool.d.ts.map +1 -1
- package/dist/memory/SharedMemoryPool.js +33 -1
- package/dist/memory/SharedMemoryPool.js.map +1 -1
- package/dist/middleware/auth.middleware.d.ts +114 -0
- package/dist/middleware/auth.middleware.d.ts.map +1 -0
- package/dist/middleware/auth.middleware.js +222 -0
- package/dist/middleware/auth.middleware.js.map +1 -0
- package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
- package/dist/optimizations/agent-booster-migration.js +22 -6
- package/dist/optimizations/agent-booster-migration.js.map +1 -1
- package/dist/proxy/anthropic-to-gemini.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-gemini.js.map +1 -1
- package/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
- package/dist/proxy/anthropic-to-requesty.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-requesty.js.map +1 -1
- package/dist/proxy/quic-proxy.d.ts +0 -1
- package/dist/proxy/quic-proxy.d.ts.map +1 -1
- package/dist/proxy/quic-proxy.js +2 -1
- package/dist/proxy/quic-proxy.js.map +1 -1
- package/dist/reasoningbank/AdvancedMemory.d.ts.map +1 -1
- package/dist/reasoningbank/AdvancedMemory.js +12 -1
- package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
- package/dist/reasoningbank/HybridBackend.d.ts +9 -0
- package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
- package/dist/reasoningbank/HybridBackend.js +48 -4
- package/dist/reasoningbank/HybridBackend.js.map +1 -1
- package/dist/reasoningbank/backend-selector.d.ts +1 -1
- package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
- package/dist/reasoningbank/backend-selector.js.map +1 -1
- package/dist/reasoningbank/index-new.d.ts +0 -6
- package/dist/reasoningbank/index-new.d.ts.map +1 -1
- package/dist/reasoningbank/index-new.js +9 -7
- package/dist/reasoningbank/index-new.js.map +1 -1
- package/dist/reasoningbank/index.d.ts +1 -6
- package/dist/reasoningbank/index.d.ts.map +1 -1
- package/dist/reasoningbank/index.js +10 -7
- package/dist/reasoningbank/index.js.map +1 -1
- package/dist/router/providers/onnx-local.d.ts.map +1 -1
- package/dist/router/providers/onnx-local.js +3 -1
- package/dist/router/providers/onnx-local.js.map +1 -1
- package/dist/routing/CircuitBreakerRouter.d.ts +187 -0
- package/dist/routing/CircuitBreakerRouter.d.ts.map +1 -0
- package/dist/routing/CircuitBreakerRouter.js +460 -0
- package/dist/routing/CircuitBreakerRouter.js.map +1 -0
- package/dist/routing/SemanticRouter.d.ts +164 -0
- package/dist/routing/SemanticRouter.d.ts.map +1 -0
- package/dist/routing/SemanticRouter.js +291 -0
- package/dist/routing/SemanticRouter.js.map +1 -0
- package/dist/routing/index.d.ts +12 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +10 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/services/embedding-service.d.ts.map +1 -1
- package/dist/services/embedding-service.js +5 -2
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/sona-agent-training.js +1 -1
- package/dist/services/sona-agent-training.js.map +1 -1
- package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
- package/dist/services/sona-agentdb-integration.js +10 -5
- package/dist/services/sona-agentdb-integration.js.map +1 -1
- package/dist/services/sona-service.d.ts +6 -6
- package/dist/services/sona-service.d.ts.map +1 -1
- package/dist/services/sona-service.js +3 -1
- package/dist/services/sona-service.js.map +1 -1
- package/dist/utils/agentdb-runtime-patch.d.ts +1 -0
- package/dist/utils/agentdb-runtime-patch.d.ts.map +1 -1
- package/dist/utils/agentdb-runtime-patch.js +97 -2
- package/dist/utils/agentdb-runtime-patch.js.map +1 -1
- package/dist/utils/audit-logger.d.ts +115 -0
- package/dist/utils/audit-logger.d.ts.map +1 -0
- package/dist/utils/audit-logger.js +228 -0
- package/dist/utils/audit-logger.js.map +1 -0
- package/dist/utils/cli.d.ts +1 -1
- package/dist/utils/cli.d.ts.map +1 -1
- package/dist/utils/cli.js +5 -0
- package/dist/utils/cli.js.map +1 -1
- package/dist/utils/input-validator.d.ts +116 -0
- package/dist/utils/input-validator.d.ts.map +1 -0
- package/dist/utils/input-validator.js +299 -0
- package/dist/utils/input-validator.js.map +1 -0
- package/dist/utils/rate-limiter.js +2 -2
- package/dist/utils/rate-limiter.js.map +1 -1
- package/package.json +14 -4
- 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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"}
|