agentic-qe 1.1.0 → 1.2.0
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/.claude/agents/qe-coverage-analyzer.md +8 -0
- package/.claude/agents/qe-flaky-test-hunter.md +9 -1
- package/.claude/agents/qe-test-generator.md +7 -0
- package/.claude/agents/reasoning/agent.md +816 -0
- package/.claude/agents/reasoning/goal-planner.md +73 -0
- package/.claude/settings.json +21 -20
- package/.claude/skills/README.md +124 -0
- package/.claude/skills/agentdb-advanced/SKILL.md +550 -0
- package/.claude/skills/agentdb-learning/SKILL.md +545 -0
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -0
- package/.claude/skills/agentdb-optimization/SKILL.md +509 -0
- package/.claude/skills/agentdb-vector-search/SKILL.md +339 -0
- package/.claude/skills/agentic-quality-engineering/SKILL.md +604 -0
- package/.claude/skills/api-testing-patterns/SKILL.md +686 -0
- package/.claude/skills/bug-reporting-excellence/SKILL.md +632 -0
- package/.claude/skills/code-review-quality/SKILL.md +683 -0
- package/.claude/skills/consultancy-practices/SKILL.md +540 -0
- package/.claude/skills/context-driven-testing/SKILL.md +466 -0
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +676 -0
- package/.claude/skills/flow-nexus-neural/SKILL.md +738 -0
- package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -0
- package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -0
- package/.claude/skills/github-code-review/SKILL.md +1140 -0
- package/.claude/skills/github-multi-repo/SKILL.md +874 -0
- package/.claude/skills/github-project-management/SKILL.md +1277 -0
- package/.claude/skills/github-release-management/SKILL.md +1081 -0
- package/.claude/skills/github-workflow-automation/SKILL.md +1065 -0
- package/.claude/skills/hive-mind-advanced/SKILL.md +712 -0
- package/.claude/skills/holistic-testing-pact/SKILL.md +225 -0
- package/.claude/skills/hooks-automation/SKILL.md +1201 -0
- package/.claude/skills/pair-programming/SKILL.md +1202 -0
- package/.claude/skills/performance-analysis/SKILL.md +563 -0
- package/.claude/skills/performance-testing/SKILL.md +662 -0
- package/.claude/skills/quality-metrics/SKILL.md +592 -0
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -0
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -0
- package/.claude/skills/refactoring-patterns/SKILL.md +778 -0
- package/.claude/skills/risk-based-testing/SKILL.md +721 -0
- package/.claude/skills/security-testing/SKILL.md +651 -0
- package/.claude/skills/skill-builder/SKILL.md +910 -0
- package/.claude/skills/sparc-methodology/SKILL.md +1115 -0
- package/.claude/skills/stream-chain/SKILL.md +563 -0
- package/.claude/skills/swarm-advanced/SKILL.md +973 -0
- package/.claude/skills/swarm-orchestration/SKILL.md +179 -0
- package/.claude/skills/tdd-london-chicago/SKILL.md +567 -0
- package/.claude/skills/technical-writing/SKILL.md +235 -0
- package/.claude/skills/test-automation-strategy/SKILL.md +842 -0
- package/.claude/skills/verification-quality/SKILL.md +649 -0
- package/.claude/skills/xp-practices/SKILL.md +671 -0
- package/.claude/statusline-command.sh +176 -0
- package/CHANGELOG.md +536 -1
- package/README.md +92 -3
- package/config/improvement-loop.config.ts +323 -0
- package/config/neural-agent.config.ts +197 -0
- package/dist/adapters/MemoryStoreAdapter.d.ts +16 -16
- package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
- package/dist/adapters/MemoryStoreAdapter.js +16 -16
- package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
- package/dist/agents/BaseAgent.d.ts +69 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +382 -1
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +13 -2
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +105 -6
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.js +13 -13
- package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +28 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +159 -4
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
- package/dist/agents/FleetCommanderAgent.js +2 -2
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/agents/LearningAgent.d.ts +14 -5
- package/dist/agents/LearningAgent.d.ts.map +1 -1
- package/dist/agents/LearningAgent.js +36 -16
- package/dist/agents/LearningAgent.js.map +1 -1
- package/dist/agents/NeuralAgentExtension.d.ts +117 -0
- package/dist/agents/NeuralAgentExtension.d.ts.map +1 -0
- package/dist/agents/NeuralAgentExtension.js +288 -0
- package/dist/agents/NeuralAgentExtension.js.map +1 -0
- package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
- package/dist/agents/PerformanceTesterAgent.js +4 -3
- package/dist/agents/PerformanceTesterAgent.js.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.js +7 -7
- package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.js +2 -2
- package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
- package/dist/agents/QualityGateAgent.js +5 -5
- package/dist/agents/QualityGateAgent.js.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.js +7 -7
- package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.js +1 -1
- package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
- package/dist/agents/SecurityScannerAgent.js +6 -6
- package/dist/agents/SecurityScannerAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +1 -3
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +15 -4
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +165 -43
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/mixins/NeuralCapableMixin.d.ts +130 -0
- package/dist/agents/mixins/NeuralCapableMixin.d.ts.map +1 -0
- package/dist/agents/mixins/NeuralCapableMixin.js +358 -0
- package/dist/agents/mixins/NeuralCapableMixin.js.map +1 -0
- package/dist/agents/mixins/QUICCapableMixin.d.ts +34 -0
- package/dist/agents/mixins/QUICCapableMixin.d.ts.map +1 -0
- package/dist/agents/mixins/QUICCapableMixin.js +346 -0
- package/dist/agents/mixins/QUICCapableMixin.js.map +1 -0
- package/dist/cli/commands/agent/index.d.ts +5 -0
- package/dist/cli/commands/agent/index.d.ts.map +1 -1
- package/dist/cli/commands/agent/index.js +11 -6
- package/dist/cli/commands/agent/index.js.map +1 -1
- package/dist/cli/commands/agent/kill.d.ts +13 -0
- package/dist/cli/commands/agent/kill.d.ts.map +1 -0
- package/dist/cli/commands/agent/kill.js +65 -0
- package/dist/cli/commands/agent/kill.js.map +1 -0
- package/dist/cli/commands/agent/list.d.ts +19 -0
- package/dist/cli/commands/agent/list.d.ts.map +1 -0
- package/dist/cli/commands/agent/list.js +92 -0
- package/dist/cli/commands/agent/list.js.map +1 -0
- package/dist/cli/commands/agent/logs.d.ts +14 -0
- package/dist/cli/commands/agent/logs.d.ts.map +1 -0
- package/dist/cli/commands/agent/logs.js +77 -0
- package/dist/cli/commands/agent/logs.js.map +1 -0
- package/dist/cli/commands/agent/metrics.d.ts +21 -0
- package/dist/cli/commands/agent/metrics.d.ts.map +1 -0
- package/dist/cli/commands/agent/metrics.js +87 -0
- package/dist/cli/commands/agent/metrics.js.map +1 -0
- package/dist/cli/commands/agent/spawn.d.ts +28 -0
- package/dist/cli/commands/agent/spawn.d.ts.map +1 -0
- package/dist/cli/commands/agent/spawn.js +83 -0
- package/dist/cli/commands/agent/spawn.js.map +1 -0
- package/dist/cli/commands/init.d.ts +24 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +475 -7
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/skills/index.d.ts +51 -0
- package/dist/cli/commands/skills/index.d.ts.map +1 -0
- package/dist/cli/commands/skills/index.js +364 -0
- package/dist/cli/commands/skills/index.js.map +1 -0
- package/dist/cli/index.js +92 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/core/EventBus.d.ts +38 -0
- package/dist/core/EventBus.d.ts.map +1 -1
- package/dist/core/EventBus.js +176 -31
- package/dist/core/EventBus.js.map +1 -1
- package/dist/core/FleetManager.d.ts +35 -1
- package/dist/core/FleetManager.d.ts.map +1 -1
- package/dist/core/FleetManager.js +121 -45
- package/dist/core/FleetManager.js.map +1 -1
- package/dist/core/MemoryManager.d.ts +19 -1
- package/dist/core/MemoryManager.d.ts.map +1 -1
- package/dist/core/MemoryManager.js +25 -1
- package/dist/core/MemoryManager.js.map +1 -1
- package/dist/core/embeddings/EmbeddingCache.d.ts +134 -0
- package/dist/core/embeddings/EmbeddingCache.d.ts.map +1 -0
- package/dist/core/embeddings/EmbeddingCache.js +239 -0
- package/dist/core/embeddings/EmbeddingCache.js.map +1 -0
- package/dist/core/embeddings/EmbeddingGenerator.d.ts +224 -0
- package/dist/core/embeddings/EmbeddingGenerator.d.ts.map +1 -0
- package/dist/core/embeddings/EmbeddingGenerator.js +459 -0
- package/dist/core/embeddings/EmbeddingGenerator.js.map +1 -0
- package/dist/core/embeddings/index.d.ts +15 -0
- package/dist/core/embeddings/index.d.ts.map +1 -0
- package/dist/core/embeddings/index.js +22 -0
- package/dist/core/embeddings/index.js.map +1 -0
- package/dist/core/memory/AgentDBIntegration.d.ts +35 -0
- package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -0
- package/dist/core/memory/AgentDBIntegration.js +75 -0
- package/dist/core/memory/AgentDBIntegration.js.map +1 -0
- package/dist/core/memory/AgentDBManager.d.ts +200 -0
- package/dist/core/memory/AgentDBManager.d.ts.map +1 -0
- package/dist/core/memory/AgentDBManager.js +263 -0
- package/dist/core/memory/AgentDBManager.js.map +1 -0
- package/dist/core/memory/AgentDBService.d.ts +160 -0
- package/dist/core/memory/AgentDBService.d.ts.map +1 -0
- package/dist/core/memory/AgentDBService.js +450 -0
- package/dist/core/memory/AgentDBService.js.map +1 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts +51 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -0
- package/dist/core/memory/RealAgentDBAdapter.js +230 -0
- package/dist/core/memory/RealAgentDBAdapter.js.map +1 -0
- package/dist/core/memory/ReasoningBankAdapter.d.ts +58 -0
- package/dist/core/memory/ReasoningBankAdapter.d.ts.map +1 -0
- package/dist/core/memory/ReasoningBankAdapter.js +80 -0
- package/dist/core/memory/ReasoningBankAdapter.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +75 -3
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +236 -52
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/index.d.ts +4 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +9 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/neural/NeuralTrainer.d.ts +137 -0
- package/dist/core/neural/NeuralTrainer.d.ts.map +1 -0
- package/dist/core/neural/NeuralTrainer.js +543 -0
- package/dist/core/neural/NeuralTrainer.js.map +1 -0
- package/dist/core/neural/index.d.ts +8 -0
- package/dist/core/neural/index.d.ts.map +1 -0
- package/dist/core/neural/index.js +24 -0
- package/dist/core/neural/index.js.map +1 -0
- package/dist/core/neural/types.d.ts +216 -0
- package/dist/core/neural/types.d.ts.map +1 -0
- package/dist/core/neural/types.js +8 -0
- package/dist/core/neural/types.js.map +1 -0
- package/dist/core/security/CertificateValidator.d.ts +130 -0
- package/dist/core/security/CertificateValidator.d.ts.map +1 -0
- package/dist/core/security/CertificateValidator.js +376 -0
- package/dist/core/security/CertificateValidator.js.map +1 -0
- package/dist/core/transport/QUICTransport.d.ts +62 -0
- package/dist/core/transport/QUICTransport.d.ts.map +1 -0
- package/dist/core/transport/QUICTransport.js +381 -0
- package/dist/core/transport/QUICTransport.js.map +1 -0
- package/dist/core/transport/SecureQUICTransport.d.ts +71 -0
- package/dist/core/transport/SecureQUICTransport.d.ts.map +1 -0
- package/dist/core/transport/SecureQUICTransport.js +253 -0
- package/dist/core/transport/SecureQUICTransport.js.map +1 -0
- package/dist/learning/AdvancedFeatureExtractor.d.ts +123 -0
- package/dist/learning/AdvancedFeatureExtractor.d.ts.map +1 -0
- package/dist/learning/AdvancedFeatureExtractor.js +423 -0
- package/dist/learning/AdvancedFeatureExtractor.js.map +1 -0
- package/dist/learning/FlakyPredictionModel.d.ts +11 -1
- package/dist/learning/FlakyPredictionModel.d.ts.map +1 -1
- package/dist/learning/FlakyPredictionModel.js +82 -35
- package/dist/learning/FlakyPredictionModel.js.map +1 -1
- package/dist/learning/FlakyTestDetector.d.ts +9 -0
- package/dist/learning/FlakyTestDetector.d.ts.map +1 -1
- package/dist/learning/FlakyTestDetector.js +28 -6
- package/dist/learning/FlakyTestDetector.js.map +1 -1
- package/dist/learning/ImprovementLoop.d.ts +16 -2
- package/dist/learning/ImprovementLoop.d.ts.map +1 -1
- package/dist/learning/ImprovementLoop.js +67 -8
- package/dist/learning/ImprovementLoop.js.map +1 -1
- package/dist/learning/ImprovementWorker.d.ts +83 -0
- package/dist/learning/ImprovementWorker.d.ts.map +1 -0
- package/dist/learning/ImprovementWorker.js +164 -0
- package/dist/learning/ImprovementWorker.js.map +1 -0
- package/dist/learning/NeuralPatternMatcher.d.ts +184 -0
- package/dist/learning/NeuralPatternMatcher.d.ts.map +1 -0
- package/dist/learning/NeuralPatternMatcher.js +702 -0
- package/dist/learning/NeuralPatternMatcher.js.map +1 -0
- package/dist/learning/NeuralTrainer.d.ts +209 -0
- package/dist/learning/NeuralTrainer.d.ts.map +1 -0
- package/dist/learning/NeuralTrainer.js +478 -0
- package/dist/learning/NeuralTrainer.js.map +1 -0
- package/dist/learning/index.d.ts +13 -7
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +27 -11
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/types.d.ts +1 -0
- package/dist/learning/types.d.ts.map +1 -1
- package/dist/learning/types.js +16 -0
- package/dist/learning/types.js.map +1 -1
- package/dist/mcp/MCPToolRegistry.d.ts +34 -0
- package/dist/mcp/MCPToolRegistry.d.ts.map +1 -0
- package/dist/mcp/MCPToolRegistry.js +48 -0
- package/dist/mcp/MCPToolRegistry.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -4
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +7 -1
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/transport/QUICTransport.d.ts +340 -0
- package/dist/transport/QUICTransport.d.ts.map +1 -0
- package/dist/transport/QUICTransport.js +814 -0
- package/dist/transport/QUICTransport.js.map +1 -0
- package/dist/transport/UDPTransport.d.ts +348 -0
- package/dist/transport/UDPTransport.d.ts.map +1 -0
- package/dist/transport/UDPTransport.js +820 -0
- package/dist/transport/UDPTransport.js.map +1 -0
- package/dist/types/errors.d.ts +1 -1
- package/dist/types/index.d.ts +37 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/quic.d.ts +339 -0
- package/dist/types/quic.d.ts.map +1 -0
- package/dist/types/quic.js +48 -0
- package/dist/types/quic.js.map +1 -0
- package/dist/utils/Config.js +1 -1
- package/dist/utils/Config.js.map +1 -1
- package/dist/utils/Database.d.ts +14 -0
- package/dist/utils/Database.d.ts.map +1 -1
- package/dist/utils/Database.js +51 -4
- package/dist/utils/Database.js.map +1 -1
- package/dist/utils/Logger.d.ts.map +1 -1
- package/dist/utils/Logger.js +111 -26
- package/dist/utils/Logger.js.map +1 -1
- package/package.json +30 -7
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Cache - LRU cache for embedding vectors
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - LRU eviction policy
|
|
6
|
+
* - Separate namespaces for text and code
|
|
7
|
+
* - Memory-efficient storage
|
|
8
|
+
* - Cache statistics
|
|
9
|
+
*
|
|
10
|
+
* Performance:
|
|
11
|
+
* - Get: O(1)
|
|
12
|
+
* - Set: O(1)
|
|
13
|
+
* - Memory: ~4KB per 1000 cached embeddings (256D)
|
|
14
|
+
*
|
|
15
|
+
* @module EmbeddingCache
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Cache statistics
|
|
19
|
+
*/
|
|
20
|
+
export interface CacheStats {
|
|
21
|
+
/** Text embeddings cached */
|
|
22
|
+
textCount: number;
|
|
23
|
+
/** Code embeddings cached */
|
|
24
|
+
codeCount: number;
|
|
25
|
+
/** Total entries */
|
|
26
|
+
totalCount: number;
|
|
27
|
+
/** Cache hits */
|
|
28
|
+
hits: number;
|
|
29
|
+
/** Cache misses */
|
|
30
|
+
misses: number;
|
|
31
|
+
/** Hit rate percentage */
|
|
32
|
+
hitRate: number;
|
|
33
|
+
/** Memory usage in bytes */
|
|
34
|
+
memoryUsage: number;
|
|
35
|
+
/** Maximum capacity */
|
|
36
|
+
maxSize: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Embedding Cache
|
|
40
|
+
*
|
|
41
|
+
* LRU cache for storing embedding vectors with separate namespaces
|
|
42
|
+
* for text and code embeddings.
|
|
43
|
+
*/
|
|
44
|
+
export declare class EmbeddingCache {
|
|
45
|
+
private maxSize;
|
|
46
|
+
private textCache;
|
|
47
|
+
private codeCache;
|
|
48
|
+
private hits;
|
|
49
|
+
private misses;
|
|
50
|
+
/**
|
|
51
|
+
* Create a new embedding cache
|
|
52
|
+
*
|
|
53
|
+
* @param maxSize - Maximum number of entries per namespace (default: 10000)
|
|
54
|
+
*/
|
|
55
|
+
constructor(maxSize?: number);
|
|
56
|
+
/**
|
|
57
|
+
* Get cached embedding
|
|
58
|
+
*
|
|
59
|
+
* @param key - Cache key
|
|
60
|
+
* @param type - Namespace ('text' | 'code')
|
|
61
|
+
* @returns Cached embedding or null
|
|
62
|
+
*/
|
|
63
|
+
get(key: string, type?: 'text' | 'code'): number[] | null;
|
|
64
|
+
/**
|
|
65
|
+
* Set cached embedding
|
|
66
|
+
*
|
|
67
|
+
* @param key - Cache key
|
|
68
|
+
* @param embedding - Vector embedding
|
|
69
|
+
* @param type - Namespace ('text' | 'code')
|
|
70
|
+
*/
|
|
71
|
+
set(key: string, embedding: number[], type?: 'text' | 'code'): void;
|
|
72
|
+
/**
|
|
73
|
+
* Check if key exists
|
|
74
|
+
*
|
|
75
|
+
* @param key - Cache key
|
|
76
|
+
* @param type - Namespace
|
|
77
|
+
* @returns True if key exists
|
|
78
|
+
*/
|
|
79
|
+
has(key: string, type?: 'text' | 'code'): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Delete cached entry
|
|
82
|
+
*
|
|
83
|
+
* @param key - Cache key
|
|
84
|
+
* @param type - Namespace
|
|
85
|
+
* @returns True if deleted
|
|
86
|
+
*/
|
|
87
|
+
delete(key: string, type?: 'text' | 'code'): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Clear cache
|
|
90
|
+
*
|
|
91
|
+
* @param type - Type to clear ('text' | 'code' | 'all')
|
|
92
|
+
*/
|
|
93
|
+
clear(type?: 'text' | 'code' | 'all'): void;
|
|
94
|
+
/**
|
|
95
|
+
* Evict least recently used entry
|
|
96
|
+
*
|
|
97
|
+
* @param cache - Cache to evict from
|
|
98
|
+
*/
|
|
99
|
+
private evictLRU;
|
|
100
|
+
/**
|
|
101
|
+
* Get cache statistics
|
|
102
|
+
*
|
|
103
|
+
* @returns Cache stats
|
|
104
|
+
*/
|
|
105
|
+
getStats(): CacheStats;
|
|
106
|
+
/**
|
|
107
|
+
* Get most frequently accessed entries
|
|
108
|
+
*
|
|
109
|
+
* @param type - Namespace
|
|
110
|
+
* @param limit - Number of entries to return
|
|
111
|
+
* @returns Array of [key, accessCount] tuples
|
|
112
|
+
*/
|
|
113
|
+
getMostAccessed(type?: 'text' | 'code', limit?: number): Array<[string, number]>;
|
|
114
|
+
/**
|
|
115
|
+
* Get cache size in bytes
|
|
116
|
+
*
|
|
117
|
+
* @param type - Namespace ('text' | 'code' | 'all')
|
|
118
|
+
* @returns Memory usage in bytes
|
|
119
|
+
*/
|
|
120
|
+
getSize(type?: 'text' | 'code' | 'all'): number;
|
|
121
|
+
/**
|
|
122
|
+
* Optimize cache by removing least used entries
|
|
123
|
+
*
|
|
124
|
+
* @param threshold - Minimum access count to keep
|
|
125
|
+
* @param type - Namespace ('text' | 'code' | 'all')
|
|
126
|
+
* @returns Number of entries removed
|
|
127
|
+
*/
|
|
128
|
+
optimize(threshold?: number, type?: 'text' | 'code' | 'all'): number;
|
|
129
|
+
/**
|
|
130
|
+
* Reset statistics
|
|
131
|
+
*/
|
|
132
|
+
resetStats(): void;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=EmbeddingCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbeddingCache.d.ts","sourceRoot":"","sources":["../../../src/core/embeddings/EmbeddingCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAmBH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IAEnB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IAEf,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAEhB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IAEpB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IAWb,OAAO,CAAC,OAAO;IAV3B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAE3B;;;;OAIG;gBACiB,OAAO,GAAE,MAAc;IAK3C;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,MAAe,GAAG,MAAM,EAAE,GAAG,IAAI;IAqBjE;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,MAAM,GAAG,MAAe,GAAG,IAAI;IAoB3E;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,MAAe,GAAG,OAAO;IAKzD;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,MAAe,GAAG,OAAO;IAK5D;;;;OAIG;IACH,KAAK,CAAC,IAAI,GAAE,MAAM,GAAG,MAAM,GAAG,KAAa,GAAG,IAAI;IAalD;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,QAAQ,IAAI,UAAU;IA4BtB;;;;;;OAMG;IACH,eAAe,CAAC,IAAI,GAAE,MAAM,GAAG,MAAe,EAAE,KAAK,GAAE,MAAW,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAU5F;;;;;OAKG;IACH,OAAO,CAAC,IAAI,GAAE,MAAM,GAAG,MAAM,GAAG,KAAa,GAAG,MAAM;IAkBtD;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,GAAE,MAAU,EAAE,IAAI,GAAE,MAAM,GAAG,MAAM,GAAG,KAAa,GAAG,MAAM;IA0B9E;;OAEG;IACH,UAAU,IAAI,IAAI;CAInB"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Embedding Cache - LRU cache for embedding vectors
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - LRU eviction policy
|
|
7
|
+
* - Separate namespaces for text and code
|
|
8
|
+
* - Memory-efficient storage
|
|
9
|
+
* - Cache statistics
|
|
10
|
+
*
|
|
11
|
+
* Performance:
|
|
12
|
+
* - Get: O(1)
|
|
13
|
+
* - Set: O(1)
|
|
14
|
+
* - Memory: ~4KB per 1000 cached embeddings (256D)
|
|
15
|
+
*
|
|
16
|
+
* @module EmbeddingCache
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.EmbeddingCache = void 0;
|
|
20
|
+
/**
|
|
21
|
+
* Embedding Cache
|
|
22
|
+
*
|
|
23
|
+
* LRU cache for storing embedding vectors with separate namespaces
|
|
24
|
+
* for text and code embeddings.
|
|
25
|
+
*/
|
|
26
|
+
class EmbeddingCache {
|
|
27
|
+
/**
|
|
28
|
+
* Create a new embedding cache
|
|
29
|
+
*
|
|
30
|
+
* @param maxSize - Maximum number of entries per namespace (default: 10000)
|
|
31
|
+
*/
|
|
32
|
+
constructor(maxSize = 10000) {
|
|
33
|
+
this.maxSize = maxSize;
|
|
34
|
+
this.hits = 0;
|
|
35
|
+
this.misses = 0;
|
|
36
|
+
this.textCache = new Map();
|
|
37
|
+
this.codeCache = new Map();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get cached embedding
|
|
41
|
+
*
|
|
42
|
+
* @param key - Cache key
|
|
43
|
+
* @param type - Namespace ('text' | 'code')
|
|
44
|
+
* @returns Cached embedding or null
|
|
45
|
+
*/
|
|
46
|
+
get(key, type = 'text') {
|
|
47
|
+
const cache = type === 'text' ? this.textCache : this.codeCache;
|
|
48
|
+
const entry = cache.get(key);
|
|
49
|
+
if (entry) {
|
|
50
|
+
// Update access stats
|
|
51
|
+
entry.lastAccess = Date.now();
|
|
52
|
+
entry.accessCount++;
|
|
53
|
+
// Move to end (most recently used)
|
|
54
|
+
cache.delete(key);
|
|
55
|
+
cache.set(key, entry);
|
|
56
|
+
this.hits++;
|
|
57
|
+
return entry.embedding;
|
|
58
|
+
}
|
|
59
|
+
this.misses++;
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Set cached embedding
|
|
64
|
+
*
|
|
65
|
+
* @param key - Cache key
|
|
66
|
+
* @param embedding - Vector embedding
|
|
67
|
+
* @param type - Namespace ('text' | 'code')
|
|
68
|
+
*/
|
|
69
|
+
set(key, embedding, type = 'text') {
|
|
70
|
+
const cache = type === 'text' ? this.textCache : this.codeCache;
|
|
71
|
+
// Check if we need to evict
|
|
72
|
+
if (cache.size >= this.maxSize && !cache.has(key)) {
|
|
73
|
+
this.evictLRU(cache);
|
|
74
|
+
}
|
|
75
|
+
// Calculate entry size (rough estimate)
|
|
76
|
+
const size = embedding.length * 8 + key.length * 2 + 24; // 8 bytes per number, 2 per char, 24 overhead
|
|
77
|
+
// Store entry
|
|
78
|
+
cache.set(key, {
|
|
79
|
+
embedding: [...embedding], // Clone array
|
|
80
|
+
lastAccess: Date.now(),
|
|
81
|
+
accessCount: 0,
|
|
82
|
+
size
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Check if key exists
|
|
87
|
+
*
|
|
88
|
+
* @param key - Cache key
|
|
89
|
+
* @param type - Namespace
|
|
90
|
+
* @returns True if key exists
|
|
91
|
+
*/
|
|
92
|
+
has(key, type = 'text') {
|
|
93
|
+
const cache = type === 'text' ? this.textCache : this.codeCache;
|
|
94
|
+
return cache.has(key);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Delete cached entry
|
|
98
|
+
*
|
|
99
|
+
* @param key - Cache key
|
|
100
|
+
* @param type - Namespace
|
|
101
|
+
* @returns True if deleted
|
|
102
|
+
*/
|
|
103
|
+
delete(key, type = 'text') {
|
|
104
|
+
const cache = type === 'text' ? this.textCache : this.codeCache;
|
|
105
|
+
return cache.delete(key);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Clear cache
|
|
109
|
+
*
|
|
110
|
+
* @param type - Type to clear ('text' | 'code' | 'all')
|
|
111
|
+
*/
|
|
112
|
+
clear(type = 'all') {
|
|
113
|
+
if (type === 'text' || type === 'all') {
|
|
114
|
+
this.textCache.clear();
|
|
115
|
+
}
|
|
116
|
+
if (type === 'code' || type === 'all') {
|
|
117
|
+
this.codeCache.clear();
|
|
118
|
+
}
|
|
119
|
+
if (type === 'all') {
|
|
120
|
+
this.hits = 0;
|
|
121
|
+
this.misses = 0;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Evict least recently used entry
|
|
126
|
+
*
|
|
127
|
+
* @param cache - Cache to evict from
|
|
128
|
+
*/
|
|
129
|
+
evictLRU(cache) {
|
|
130
|
+
// First entry is the least recently used (Map maintains insertion order)
|
|
131
|
+
const firstKey = cache.keys().next().value;
|
|
132
|
+
if (firstKey) {
|
|
133
|
+
cache.delete(firstKey);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get cache statistics
|
|
138
|
+
*
|
|
139
|
+
* @returns Cache stats
|
|
140
|
+
*/
|
|
141
|
+
getStats() {
|
|
142
|
+
const textCount = this.textCache.size;
|
|
143
|
+
const codeCount = this.codeCache.size;
|
|
144
|
+
const totalCount = textCount + codeCount;
|
|
145
|
+
const totalRequests = this.hits + this.misses;
|
|
146
|
+
const hitRate = totalRequests > 0 ? (this.hits / totalRequests) * 100 : 0;
|
|
147
|
+
// Calculate memory usage
|
|
148
|
+
let memoryUsage = 0;
|
|
149
|
+
for (const entry of this.textCache.values()) {
|
|
150
|
+
memoryUsage += entry.size;
|
|
151
|
+
}
|
|
152
|
+
for (const entry of this.codeCache.values()) {
|
|
153
|
+
memoryUsage += entry.size;
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
textCount,
|
|
157
|
+
codeCount,
|
|
158
|
+
totalCount,
|
|
159
|
+
hits: this.hits,
|
|
160
|
+
misses: this.misses,
|
|
161
|
+
hitRate,
|
|
162
|
+
memoryUsage,
|
|
163
|
+
maxSize: this.maxSize * 2 // Total max size (both namespaces)
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Get most frequently accessed entries
|
|
168
|
+
*
|
|
169
|
+
* @param type - Namespace
|
|
170
|
+
* @param limit - Number of entries to return
|
|
171
|
+
* @returns Array of [key, accessCount] tuples
|
|
172
|
+
*/
|
|
173
|
+
getMostAccessed(type = 'text', limit = 10) {
|
|
174
|
+
const cache = type === 'text' ? this.textCache : this.codeCache;
|
|
175
|
+
const entries = Array.from(cache.entries());
|
|
176
|
+
return entries
|
|
177
|
+
.sort((a, b) => b[1].accessCount - a[1].accessCount)
|
|
178
|
+
.slice(0, limit)
|
|
179
|
+
.map(([key, entry]) => [key, entry.accessCount]);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get cache size in bytes
|
|
183
|
+
*
|
|
184
|
+
* @param type - Namespace ('text' | 'code' | 'all')
|
|
185
|
+
* @returns Memory usage in bytes
|
|
186
|
+
*/
|
|
187
|
+
getSize(type = 'all') {
|
|
188
|
+
let size = 0;
|
|
189
|
+
if (type === 'text' || type === 'all') {
|
|
190
|
+
for (const entry of this.textCache.values()) {
|
|
191
|
+
size += entry.size;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (type === 'code' || type === 'all') {
|
|
195
|
+
for (const entry of this.codeCache.values()) {
|
|
196
|
+
size += entry.size;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return size;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Optimize cache by removing least used entries
|
|
203
|
+
*
|
|
204
|
+
* @param threshold - Minimum access count to keep
|
|
205
|
+
* @param type - Namespace ('text' | 'code' | 'all')
|
|
206
|
+
* @returns Number of entries removed
|
|
207
|
+
*/
|
|
208
|
+
optimize(threshold = 1, type = 'all') {
|
|
209
|
+
let removed = 0;
|
|
210
|
+
const optimizeCache = (cache) => {
|
|
211
|
+
const toRemove = [];
|
|
212
|
+
for (const [key, entry] of cache.entries()) {
|
|
213
|
+
if (entry.accessCount < threshold) {
|
|
214
|
+
toRemove.push(key);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
for (const key of toRemove) {
|
|
218
|
+
cache.delete(key);
|
|
219
|
+
removed++;
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
if (type === 'text' || type === 'all') {
|
|
223
|
+
optimizeCache(this.textCache);
|
|
224
|
+
}
|
|
225
|
+
if (type === 'code' || type === 'all') {
|
|
226
|
+
optimizeCache(this.codeCache);
|
|
227
|
+
}
|
|
228
|
+
return removed;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Reset statistics
|
|
232
|
+
*/
|
|
233
|
+
resetStats() {
|
|
234
|
+
this.hits = 0;
|
|
235
|
+
this.misses = 0;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
exports.EmbeddingCache = EmbeddingCache;
|
|
239
|
+
//# sourceMappingURL=EmbeddingCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbeddingCache.js","sourceRoot":"","sources":["../../../src/core/embeddings/EmbeddingCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Generator - Convert patterns into vector embeddings
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Phase 1 (Simple): Hash-based embeddings for quick start
|
|
6
|
+
* - Phase 2 (ML): Transformers.js for production embeddings
|
|
7
|
+
* - Caching for performance optimization
|
|
8
|
+
* - Batch processing support
|
|
9
|
+
* - Graceful fallback if ML models unavailable
|
|
10
|
+
*
|
|
11
|
+
* Models:
|
|
12
|
+
* - Text: "Xenova/all-MiniLM-L6-v2" (384 dimensions)
|
|
13
|
+
* - Code: "microsoft/codebert-base" (768 dimensions)
|
|
14
|
+
*
|
|
15
|
+
* Performance:
|
|
16
|
+
* - Hash-based: ~50µs per embedding
|
|
17
|
+
* - ML-based: ~5-10ms per embedding (cached)
|
|
18
|
+
* - Batch: ~2ms per embedding (10+ texts)
|
|
19
|
+
*
|
|
20
|
+
* @module EmbeddingGenerator
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Embedding generation options
|
|
24
|
+
*/
|
|
25
|
+
export interface EmbeddingOptions {
|
|
26
|
+
/** Use ML-based embeddings (default: true) */
|
|
27
|
+
useML?: boolean;
|
|
28
|
+
/** Cache embeddings for performance (default: true) */
|
|
29
|
+
useCache?: boolean;
|
|
30
|
+
/** Normalize embeddings to unit length (default: true) */
|
|
31
|
+
normalize?: boolean;
|
|
32
|
+
/** Language for code embeddings (e.g., 'typescript', 'python') */
|
|
33
|
+
language?: string;
|
|
34
|
+
/** Model to use ('text' | 'code') */
|
|
35
|
+
model?: 'text' | 'code';
|
|
36
|
+
/** Target dimension (for hash-based only) */
|
|
37
|
+
dimension?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Embedding result
|
|
41
|
+
*/
|
|
42
|
+
export interface EmbeddingResult {
|
|
43
|
+
/** Vector embedding */
|
|
44
|
+
embedding: number[];
|
|
45
|
+
/** Embedding dimension */
|
|
46
|
+
dimension: number;
|
|
47
|
+
/** Method used ('hash' | 'ml') */
|
|
48
|
+
method: 'hash' | 'ml';
|
|
49
|
+
/** Generation time in milliseconds */
|
|
50
|
+
generationTime: number;
|
|
51
|
+
/** Whether result was cached */
|
|
52
|
+
cached: boolean;
|
|
53
|
+
/** Model name used */
|
|
54
|
+
model: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Batch embedding result
|
|
58
|
+
*/
|
|
59
|
+
export interface BatchEmbeddingResult {
|
|
60
|
+
/** Array of embeddings */
|
|
61
|
+
embeddings: number[][];
|
|
62
|
+
/** Total generation time */
|
|
63
|
+
totalTime: number;
|
|
64
|
+
/** Average time per embedding */
|
|
65
|
+
avgTime: number;
|
|
66
|
+
/** Number of cache hits */
|
|
67
|
+
cacheHits: number;
|
|
68
|
+
/** Method used */
|
|
69
|
+
method: 'hash' | 'ml';
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Embedding Generator
|
|
73
|
+
*
|
|
74
|
+
* Provides both simple hash-based and ML-based embedding generation
|
|
75
|
+
* with intelligent fallback and caching.
|
|
76
|
+
*/
|
|
77
|
+
export declare class EmbeddingGenerator {
|
|
78
|
+
private cacheSize;
|
|
79
|
+
private autoInitML;
|
|
80
|
+
private cache;
|
|
81
|
+
private mlAvailable;
|
|
82
|
+
private pipeline;
|
|
83
|
+
private codePipeline;
|
|
84
|
+
private initPromise;
|
|
85
|
+
private readonly TEXT_MODEL;
|
|
86
|
+
private readonly CODE_MODEL;
|
|
87
|
+
private readonly TEXT_DIMENSION;
|
|
88
|
+
private readonly CODE_DIMENSION;
|
|
89
|
+
private readonly DEFAULT_HASH_DIMENSION;
|
|
90
|
+
/**
|
|
91
|
+
* Create a new embedding generator
|
|
92
|
+
*
|
|
93
|
+
* @param cacheSize - Maximum number of cached embeddings (default: 10000)
|
|
94
|
+
* @param autoInitML - Automatically initialize ML models (default: false)
|
|
95
|
+
*/
|
|
96
|
+
constructor(cacheSize?: number, autoInitML?: boolean);
|
|
97
|
+
/**
|
|
98
|
+
* Initialize ML models
|
|
99
|
+
*
|
|
100
|
+
* Lazy-loads Transformers.js models for production embeddings.
|
|
101
|
+
* Falls back to hash-based if models unavailable.
|
|
102
|
+
*/
|
|
103
|
+
initializeML(): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Initialize code embedding model
|
|
106
|
+
*
|
|
107
|
+
* Separate initialization for code model to avoid loading if not needed.
|
|
108
|
+
*/
|
|
109
|
+
initializeCodeModel(): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Generate text embedding
|
|
112
|
+
*
|
|
113
|
+
* @param text - Text to embed
|
|
114
|
+
* @param options - Embedding options
|
|
115
|
+
* @returns Embedding result with vector and metadata
|
|
116
|
+
*/
|
|
117
|
+
generateTextEmbedding(text: string, options?: EmbeddingOptions): Promise<EmbeddingResult>;
|
|
118
|
+
/**
|
|
119
|
+
* Generate code embedding
|
|
120
|
+
*
|
|
121
|
+
* @param code - Code to embed
|
|
122
|
+
* @param language - Programming language
|
|
123
|
+
* @param options - Embedding options
|
|
124
|
+
* @returns Embedding result
|
|
125
|
+
*/
|
|
126
|
+
generateCodeEmbedding(code: string, language: string, options?: EmbeddingOptions): Promise<EmbeddingResult>;
|
|
127
|
+
/**
|
|
128
|
+
* Generate batch text embeddings
|
|
129
|
+
*
|
|
130
|
+
* More efficient than generating one at a time.
|
|
131
|
+
*
|
|
132
|
+
* @param texts - Array of texts to embed
|
|
133
|
+
* @param options - Embedding options
|
|
134
|
+
* @returns Batch embedding result
|
|
135
|
+
*/
|
|
136
|
+
generateBatchTextEmbeddings(texts: string[], options?: EmbeddingOptions): Promise<BatchEmbeddingResult>;
|
|
137
|
+
/**
|
|
138
|
+
* Generate hash-based embedding
|
|
139
|
+
*
|
|
140
|
+
* Fast, deterministic embedding using cryptographic hashing.
|
|
141
|
+
* Suitable for testing and development.
|
|
142
|
+
*
|
|
143
|
+
* @param text - Text to embed
|
|
144
|
+
* @param dimension - Target dimension (default: 256)
|
|
145
|
+
* @param salt - Optional salt for different embeddings (default: '')
|
|
146
|
+
* @returns Vector embedding
|
|
147
|
+
*/
|
|
148
|
+
generateHashEmbedding(text: string, dimension?: number, salt?: string): number[];
|
|
149
|
+
/**
|
|
150
|
+
* Generate ML-based text embedding
|
|
151
|
+
*
|
|
152
|
+
* Uses Transformers.js for production-quality embeddings.
|
|
153
|
+
*
|
|
154
|
+
* @param text - Text to embed
|
|
155
|
+
* @returns Vector embedding
|
|
156
|
+
*/
|
|
157
|
+
private generateMLTextEmbedding;
|
|
158
|
+
/**
|
|
159
|
+
* Generate ML-based code embedding
|
|
160
|
+
*
|
|
161
|
+
* Uses CodeBERT for code-specific embeddings.
|
|
162
|
+
*
|
|
163
|
+
* @param code - Code to embed
|
|
164
|
+
* @param language - Programming language
|
|
165
|
+
* @returns Vector embedding
|
|
166
|
+
*/
|
|
167
|
+
private generateMLCodeEmbedding;
|
|
168
|
+
/**
|
|
169
|
+
* Normalize embedding to unit length
|
|
170
|
+
*
|
|
171
|
+
* @param embedding - Vector to normalize
|
|
172
|
+
* @returns Normalized vector
|
|
173
|
+
*/
|
|
174
|
+
private normalizeEmbedding;
|
|
175
|
+
/**
|
|
176
|
+
* Get cached embedding
|
|
177
|
+
*
|
|
178
|
+
* @param key - Cache key
|
|
179
|
+
* @param type - Embedding type ('text' | 'code')
|
|
180
|
+
* @returns Cached embedding or null
|
|
181
|
+
*/
|
|
182
|
+
getCachedEmbedding(key: string, type?: 'text' | 'code'): number[] | null;
|
|
183
|
+
/**
|
|
184
|
+
* Cache embedding manually
|
|
185
|
+
*
|
|
186
|
+
* @param key - Cache key
|
|
187
|
+
* @param embedding - Vector embedding
|
|
188
|
+
* @param type - Embedding type
|
|
189
|
+
*/
|
|
190
|
+
cacheEmbedding(key: string, embedding: number[], type?: 'text' | 'code'): void;
|
|
191
|
+
/**
|
|
192
|
+
* Clear cache
|
|
193
|
+
*
|
|
194
|
+
* @param type - Type to clear ('text' | 'code' | 'all')
|
|
195
|
+
*/
|
|
196
|
+
clearCache(type?: 'text' | 'code' | 'all'): void;
|
|
197
|
+
/**
|
|
198
|
+
* Get cache statistics
|
|
199
|
+
*
|
|
200
|
+
* @returns Cache stats
|
|
201
|
+
*/
|
|
202
|
+
getCacheStats(): import("./EmbeddingCache").CacheStats;
|
|
203
|
+
/**
|
|
204
|
+
* Check if ML models are available
|
|
205
|
+
*
|
|
206
|
+
* @returns True if ML models initialized
|
|
207
|
+
*/
|
|
208
|
+
isMLAvailable(): boolean;
|
|
209
|
+
/**
|
|
210
|
+
* Get model information
|
|
211
|
+
*
|
|
212
|
+
* @returns Model info
|
|
213
|
+
*/
|
|
214
|
+
getModelInfo(): {
|
|
215
|
+
textModel: string;
|
|
216
|
+
codeModel: string;
|
|
217
|
+
textDimension: number;
|
|
218
|
+
codeDimension: number;
|
|
219
|
+
hashDimension: number;
|
|
220
|
+
mlAvailable: boolean;
|
|
221
|
+
cacheSize: number;
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=EmbeddingGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbeddingGenerator.d.ts","sourceRoot":"","sources":["../../../src/core/embeddings/EmbeddingGenerator.ts"],"names":[],"mappings":"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"}
|