@nxuss/lemma 0.1.0 → 0.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/README.md +347 -181
- package/dist/cjs/cloud/KeyManager.d.ts.map +1 -0
- package/dist/cjs/cloud/KeyManager.js.map +1 -0
- package/dist/cjs/cloud/TenantCache.d.ts.map +1 -0
- package/dist/cjs/cloud/TenantCache.js.map +1 -0
- package/dist/cjs/cloud/index.d.ts.map +1 -0
- package/dist/cjs/cloud/index.js.map +1 -0
- package/dist/cjs/cloud/server.d.ts.map +1 -0
- package/dist/cjs/cloud/server.js.map +1 -0
- package/dist/cjs/cloud/types.d.ts.map +1 -0
- package/dist/cjs/cloud/types.js.map +1 -0
- package/dist/cjs/config/index.d.ts.map +1 -0
- package/dist/cjs/config/index.js.map +1 -0
- package/dist/cjs/consensus/ConsensusEngine.d.ts.map +1 -0
- package/dist/cjs/consensus/ConsensusEngine.js.map +1 -0
- package/dist/cjs/consensus/ModelPool.d.ts.map +1 -0
- package/dist/cjs/consensus/ModelPool.js.map +1 -0
- package/dist/cjs/consensus/index.d.ts.map +1 -0
- package/dist/cjs/consensus/index.js.map +1 -0
- package/dist/cjs/core/AgentRegistry.d.ts.map +1 -0
- package/dist/cjs/core/AgentRegistry.js.map +1 -0
- package/dist/cjs/core/DashboardBroadcaster.d.ts.map +1 -0
- package/dist/cjs/core/DashboardBroadcaster.js.map +1 -0
- package/dist/{core → cjs/core}/OrchestrationEngine.d.ts +1 -0
- package/dist/cjs/core/OrchestrationEngine.d.ts.map +1 -0
- package/dist/{core → cjs/core}/OrchestrationEngine.js +29 -23
- package/dist/cjs/core/OrchestrationEngine.js.map +1 -0
- package/dist/cjs/core/SubconsciousEngine.d.ts.map +1 -0
- package/dist/{core → cjs/core}/SubconsciousEngine.js +15 -3
- package/dist/cjs/core/SubconsciousEngine.js.map +1 -0
- package/dist/cjs/core/WebSocketServer.d.ts.map +1 -0
- package/dist/{core → cjs/core}/WebSocketServer.js +2 -1
- package/dist/cjs/core/WebSocketServer.js.map +1 -0
- package/dist/cjs/core/index.d.ts.map +1 -0
- package/dist/cjs/core/index.js.map +1 -0
- package/dist/cjs/core/router.d.ts.map +1 -0
- package/dist/cjs/core/router.js.map +1 -0
- package/dist/{embed → cjs/embed}/index.d.ts +66 -1
- package/dist/cjs/embed/index.d.ts.map +1 -0
- package/dist/cjs/embed/index.js +979 -0
- package/dist/cjs/embed/index.js.map +1 -0
- package/dist/cjs/embed.d.ts.map +1 -0
- package/dist/cjs/embed.js.map +1 -0
- package/dist/cjs/examples/basic-usage.d.ts +12 -0
- package/dist/cjs/examples/basic-usage.d.ts.map +1 -0
- package/dist/cjs/examples/basic-usage.js +128 -0
- package/dist/cjs/examples/basic-usage.js.map +1 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/protocol/flows.d.ts.map +1 -0
- package/dist/cjs/protocol/flows.js.map +1 -0
- package/dist/cjs/protocol/iap.d.ts.map +1 -0
- package/dist/cjs/protocol/iap.js.map +1 -0
- package/dist/cjs/protocol/index.d.ts.map +1 -0
- package/dist/cjs/protocol/index.js.map +1 -0
- package/dist/cjs/protocol/types.d.ts.map +1 -0
- package/dist/cjs/protocol/types.js.map +1 -0
- package/dist/cjs/protocol/utils.d.ts.map +1 -0
- package/dist/cjs/protocol/utils.js.map +1 -0
- package/dist/cjs/protocol/validators.d.ts.map +1 -0
- package/dist/cjs/protocol/validators.js.map +1 -0
- package/dist/cjs/security/AuthManager.d.ts.map +1 -0
- package/dist/cjs/security/AuthManager.js.map +1 -0
- package/dist/cjs/security/MessageSanitizer.d.ts.map +1 -0
- package/dist/{security → cjs/security}/MessageSanitizer.js +22 -6
- package/dist/cjs/security/MessageSanitizer.js.map +1 -0
- package/dist/cjs/security/RateLimiter.d.ts.map +1 -0
- package/dist/cjs/security/RateLimiter.js.map +1 -0
- package/dist/{security → cjs/security}/SecurityMiddleware.d.ts +3 -1
- package/dist/cjs/security/SecurityMiddleware.d.ts.map +1 -0
- package/dist/{security → cjs/security}/SecurityMiddleware.js +5 -3
- package/dist/cjs/security/SecurityMiddleware.js.map +1 -0
- package/dist/cjs/security/index.d.ts.map +1 -0
- package/dist/cjs/security/index.js.map +1 -0
- package/dist/cjs/speculative/PredictionEngine.d.ts.map +1 -0
- package/dist/cjs/speculative/PredictionEngine.js.map +1 -0
- package/dist/cjs/speculative/SpeculativeCache.d.ts.map +1 -0
- package/dist/cjs/speculative/SpeculativeCache.js.map +1 -0
- package/dist/cjs/speculative/SpeculativeEngine.d.ts.map +1 -0
- package/dist/cjs/speculative/SpeculativeEngine.js.map +1 -0
- package/dist/cjs/speculative/WorkerPool.d.ts.map +1 -0
- package/dist/cjs/speculative/WorkerPool.js.map +1 -0
- package/dist/cjs/speculative/index.d.ts.map +1 -0
- package/dist/cjs/speculative/index.js.map +1 -0
- package/dist/cjs/subconscious/EmbeddingService.d.ts.map +1 -0
- package/dist/cjs/subconscious/EmbeddingService.js.map +1 -0
- package/dist/cjs/subconscious/SemanticCache.d.ts.map +1 -0
- package/dist/cjs/subconscious/SemanticCache.js.map +1 -0
- package/dist/cjs/subconscious/SubconsciousEngine.d.ts.map +1 -0
- package/dist/cjs/subconscious/SubconsciousEngine.js.map +1 -0
- package/dist/cjs/subconscious/VectorStore.d.ts.map +1 -0
- package/dist/{subconscious → cjs/subconscious}/VectorStore.js +3 -3
- package/dist/cjs/subconscious/VectorStore.js.map +1 -0
- package/dist/cjs/subconscious/cache.d.ts.map +1 -0
- package/dist/cjs/subconscious/cache.js.map +1 -0
- package/dist/cjs/subconscious/embeddings.d.ts.map +1 -0
- package/dist/cjs/subconscious/embeddings.js.map +1 -0
- package/dist/cjs/subconscious/index.d.ts.map +1 -0
- package/dist/cjs/subconscious/index.js.map +1 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/utils/logger.d.ts.map +1 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/esm/cloud/KeyManager.d.ts +29 -0
- package/dist/esm/cloud/KeyManager.d.ts.map +1 -0
- package/dist/esm/cloud/KeyManager.js +135 -0
- package/dist/esm/cloud/KeyManager.js.map +1 -0
- package/dist/esm/cloud/TenantCache.d.ts +29 -0
- package/dist/esm/cloud/TenantCache.d.ts.map +1 -0
- package/dist/esm/cloud/TenantCache.js +125 -0
- package/dist/esm/cloud/TenantCache.js.map +1 -0
- package/dist/esm/cloud/index.d.ts +4 -0
- package/dist/esm/cloud/index.d.ts.map +1 -0
- package/dist/esm/cloud/index.js +4 -0
- package/dist/esm/cloud/index.js.map +1 -0
- package/dist/esm/cloud/server.d.ts +17 -0
- package/dist/esm/cloud/server.d.ts.map +1 -0
- package/dist/esm/cloud/server.js +181 -0
- package/dist/esm/cloud/server.js.map +1 -0
- package/dist/esm/cloud/types.d.ts +35 -0
- package/dist/esm/cloud/types.d.ts.map +1 -0
- package/dist/esm/cloud/types.js +11 -0
- package/dist/esm/cloud/types.js.map +1 -0
- package/dist/esm/config/index.d.ts +44 -0
- package/dist/esm/config/index.d.ts.map +1 -0
- package/dist/esm/config/index.js +151 -0
- package/dist/esm/config/index.js.map +1 -0
- package/dist/esm/consensus/ConsensusEngine.d.ts +119 -0
- package/dist/esm/consensus/ConsensusEngine.d.ts.map +1 -0
- package/dist/esm/consensus/ConsensusEngine.js +310 -0
- package/dist/esm/consensus/ConsensusEngine.js.map +1 -0
- package/dist/esm/consensus/ModelPool.d.ts +103 -0
- package/dist/esm/consensus/ModelPool.d.ts.map +1 -0
- package/dist/esm/consensus/ModelPool.js +269 -0
- package/dist/esm/consensus/ModelPool.js.map +1 -0
- package/dist/esm/consensus/index.d.ts +8 -0
- package/dist/esm/consensus/index.d.ts.map +1 -0
- package/dist/esm/consensus/index.js +8 -0
- package/dist/esm/consensus/index.js.map +1 -0
- package/dist/esm/core/AgentRegistry.d.ts +89 -0
- package/dist/esm/core/AgentRegistry.d.ts.map +1 -0
- package/dist/esm/core/AgentRegistry.js +260 -0
- package/dist/esm/core/AgentRegistry.js.map +1 -0
- package/dist/esm/core/DashboardBroadcaster.d.ts +67 -0
- package/dist/esm/core/DashboardBroadcaster.d.ts.map +1 -0
- package/dist/esm/core/DashboardBroadcaster.js +260 -0
- package/dist/esm/core/DashboardBroadcaster.js.map +1 -0
- package/dist/esm/core/OrchestrationEngine.d.ts +85 -0
- package/dist/esm/core/OrchestrationEngine.d.ts.map +1 -0
- package/dist/esm/core/OrchestrationEngine.js +457 -0
- package/dist/esm/core/OrchestrationEngine.js.map +1 -0
- package/dist/esm/core/SubconsciousEngine.d.ts +53 -0
- package/dist/esm/core/SubconsciousEngine.d.ts.map +1 -0
- package/dist/esm/core/SubconsciousEngine.js +278 -0
- package/dist/esm/core/SubconsciousEngine.js.map +1 -0
- package/dist/esm/core/WebSocketServer.d.ts +89 -0
- package/dist/esm/core/WebSocketServer.d.ts.map +1 -0
- package/dist/esm/core/WebSocketServer.js +380 -0
- package/dist/esm/core/WebSocketServer.js.map +1 -0
- package/dist/esm/core/index.d.ts +15 -0
- package/dist/esm/core/index.d.ts.map +1 -0
- package/dist/esm/core/index.js +15 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/core/router.d.ts +105 -0
- package/dist/esm/core/router.d.ts.map +1 -0
- package/dist/esm/core/router.js +416 -0
- package/dist/esm/core/router.js.map +1 -0
- package/dist/esm/embed/index.d.ts +218 -0
- package/dist/esm/embed/index.d.ts.map +1 -0
- package/dist/esm/embed/index.js +939 -0
- package/dist/esm/embed/index.js.map +1 -0
- package/dist/esm/embed.d.ts +11 -0
- package/dist/esm/embed.d.ts.map +1 -0
- package/dist/esm/embed.js +11 -0
- package/dist/esm/embed.js.map +1 -0
- package/dist/esm/examples/basic-usage.d.ts +12 -0
- package/dist/esm/examples/basic-usage.d.ts.map +1 -0
- package/dist/esm/examples/basic-usage.js +126 -0
- package/dist/esm/examples/basic-usage.js.map +1 -0
- package/dist/esm/index.d.ts +83 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +132 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/protocol/flows.d.ts +126 -0
- package/dist/esm/protocol/flows.d.ts.map +1 -0
- package/dist/esm/protocol/flows.js +338 -0
- package/dist/esm/protocol/flows.js.map +1 -0
- package/dist/esm/protocol/iap.d.ts +54 -0
- package/dist/esm/protocol/iap.d.ts.map +1 -0
- package/dist/esm/protocol/iap.js +104 -0
- package/dist/esm/protocol/iap.js.map +1 -0
- package/dist/esm/protocol/index.d.ts +23 -0
- package/dist/esm/protocol/index.d.ts.map +1 -0
- package/dist/esm/protocol/index.js +28 -0
- package/dist/esm/protocol/index.js.map +1 -0
- package/dist/esm/protocol/types.d.ts +332 -0
- package/dist/esm/protocol/types.d.ts.map +1 -0
- package/dist/esm/protocol/types.js +54 -0
- package/dist/esm/protocol/types.js.map +1 -0
- package/dist/esm/protocol/utils.d.ts +130 -0
- package/dist/esm/protocol/utils.d.ts.map +1 -0
- package/dist/esm/protocol/utils.js +260 -0
- package/dist/esm/protocol/utils.js.map +1 -0
- package/dist/esm/protocol/validators.d.ts +54 -0
- package/dist/esm/protocol/validators.d.ts.map +1 -0
- package/dist/esm/protocol/validators.js +332 -0
- package/dist/esm/protocol/validators.js.map +1 -0
- package/dist/esm/security/AuthManager.d.ts +73 -0
- package/dist/esm/security/AuthManager.d.ts.map +1 -0
- package/dist/esm/security/AuthManager.js +95 -0
- package/dist/esm/security/AuthManager.js.map +1 -0
- package/dist/esm/security/MessageSanitizer.d.ts +51 -0
- package/dist/esm/security/MessageSanitizer.d.ts.map +1 -0
- package/dist/esm/security/MessageSanitizer.js +178 -0
- package/dist/esm/security/MessageSanitizer.js.map +1 -0
- package/dist/esm/security/RateLimiter.d.ts +46 -0
- package/dist/esm/security/RateLimiter.d.ts.map +1 -0
- package/dist/esm/security/RateLimiter.js +129 -0
- package/dist/esm/security/RateLimiter.js.map +1 -0
- package/dist/esm/security/SecurityMiddleware.d.ts +90 -0
- package/dist/esm/security/SecurityMiddleware.d.ts.map +1 -0
- package/dist/esm/security/SecurityMiddleware.js +144 -0
- package/dist/esm/security/SecurityMiddleware.js.map +1 -0
- package/dist/esm/security/index.d.ts +35 -0
- package/dist/esm/security/index.d.ts.map +1 -0
- package/dist/esm/security/index.js +35 -0
- package/dist/esm/security/index.js.map +1 -0
- package/dist/esm/speculative/PredictionEngine.d.ts +99 -0
- package/dist/esm/speculative/PredictionEngine.d.ts.map +1 -0
- package/dist/esm/speculative/PredictionEngine.js +284 -0
- package/dist/esm/speculative/PredictionEngine.js.map +1 -0
- package/dist/esm/speculative/SpeculativeCache.d.ts +117 -0
- package/dist/esm/speculative/SpeculativeCache.d.ts.map +1 -0
- package/dist/esm/speculative/SpeculativeCache.js +288 -0
- package/dist/esm/speculative/SpeculativeCache.js.map +1 -0
- package/dist/esm/speculative/SpeculativeEngine.d.ts +114 -0
- package/dist/esm/speculative/SpeculativeEngine.d.ts.map +1 -0
- package/dist/esm/speculative/SpeculativeEngine.js +240 -0
- package/dist/esm/speculative/SpeculativeEngine.js.map +1 -0
- package/dist/esm/speculative/WorkerPool.d.ts +109 -0
- package/dist/esm/speculative/WorkerPool.d.ts.map +1 -0
- package/dist/esm/speculative/WorkerPool.js +323 -0
- package/dist/esm/speculative/WorkerPool.js.map +1 -0
- package/dist/esm/speculative/index.d.ts +10 -0
- package/dist/esm/speculative/index.d.ts.map +1 -0
- package/dist/esm/speculative/index.js +10 -0
- package/dist/esm/speculative/index.js.map +1 -0
- package/dist/esm/subconscious/EmbeddingService.d.ts +73 -0
- package/dist/esm/subconscious/EmbeddingService.d.ts.map +1 -0
- package/dist/esm/subconscious/EmbeddingService.js +189 -0
- package/dist/esm/subconscious/EmbeddingService.js.map +1 -0
- package/dist/esm/subconscious/SemanticCache.d.ts +82 -0
- package/dist/esm/subconscious/SemanticCache.d.ts.map +1 -0
- package/dist/esm/subconscious/SemanticCache.js +160 -0
- package/dist/esm/subconscious/SemanticCache.js.map +1 -0
- package/dist/esm/subconscious/SubconsciousEngine.d.ts +121 -0
- package/dist/esm/subconscious/SubconsciousEngine.d.ts.map +1 -0
- package/dist/esm/subconscious/SubconsciousEngine.js +237 -0
- package/dist/esm/subconscious/SubconsciousEngine.js.map +1 -0
- package/dist/esm/subconscious/VectorStore.d.ts +54 -0
- package/dist/esm/subconscious/VectorStore.d.ts.map +1 -0
- package/dist/esm/subconscious/VectorStore.js +164 -0
- package/dist/esm/subconscious/VectorStore.js.map +1 -0
- package/dist/esm/subconscious/cache.d.ts +34 -0
- package/dist/esm/subconscious/cache.d.ts.map +1 -0
- package/dist/esm/subconscious/cache.js +152 -0
- package/dist/{subconscious → esm/subconscious}/cache.js.map +1 -1
- package/dist/esm/subconscious/embeddings.d.ts +25 -0
- package/dist/esm/subconscious/embeddings.d.ts.map +1 -0
- package/dist/esm/subconscious/embeddings.js +58 -0
- package/dist/esm/subconscious/embeddings.js.map +1 -0
- package/dist/esm/subconscious/index.d.ts +12 -0
- package/dist/esm/subconscious/index.d.ts.map +1 -0
- package/dist/esm/subconscious/index.js +12 -0
- package/dist/esm/subconscious/index.js.map +1 -0
- package/dist/esm/types/index.d.ts +286 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +40 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/utils/logger.d.ts +63 -0
- package/dist/esm/utils/logger.d.ts.map +1 -0
- package/dist/esm/utils/logger.js +122 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/package.json +77 -13
- package/dist/cloud/KeyManager.d.ts.map +0 -1
- package/dist/cloud/KeyManager.js.map +0 -1
- package/dist/cloud/TenantCache.d.ts.map +0 -1
- package/dist/cloud/TenantCache.js.map +0 -1
- package/dist/cloud/index.d.ts.map +0 -1
- package/dist/cloud/index.js.map +0 -1
- package/dist/cloud/server.d.ts.map +0 -1
- package/dist/cloud/server.js.map +0 -1
- package/dist/cloud/types.d.ts.map +0 -1
- package/dist/cloud/types.js.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/consensus/ConsensusEngine.d.ts.map +0 -1
- package/dist/consensus/ConsensusEngine.js.map +0 -1
- package/dist/consensus/ModelPool.d.ts.map +0 -1
- package/dist/consensus/ModelPool.js.map +0 -1
- package/dist/consensus/index.d.ts.map +0 -1
- package/dist/consensus/index.js.map +0 -1
- package/dist/core/AgentRegistry.d.ts.map +0 -1
- package/dist/core/AgentRegistry.js.map +0 -1
- package/dist/core/DashboardBroadcaster.d.ts.map +0 -1
- package/dist/core/DashboardBroadcaster.js.map +0 -1
- package/dist/core/OrchestrationEngine.d.ts.map +0 -1
- package/dist/core/OrchestrationEngine.js.map +0 -1
- package/dist/core/SubconsciousEngine.d.ts.map +0 -1
- package/dist/core/SubconsciousEngine.js.map +0 -1
- package/dist/core/WebSocketServer.d.ts.map +0 -1
- package/dist/core/WebSocketServer.js.map +0 -1
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js.map +0 -1
- package/dist/core/router.d.ts.map +0 -1
- package/dist/core/router.js.map +0 -1
- package/dist/embed/index.d.ts.map +0 -1
- package/dist/embed/index.js +0 -408
- package/dist/embed/index.js.map +0 -1
- package/dist/embed.d.ts.map +0 -1
- package/dist/embed.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/protocol/flows.d.ts.map +0 -1
- package/dist/protocol/flows.js.map +0 -1
- package/dist/protocol/iap.d.ts.map +0 -1
- package/dist/protocol/iap.js.map +0 -1
- package/dist/protocol/index.d.ts.map +0 -1
- package/dist/protocol/index.js.map +0 -1
- package/dist/protocol/types.d.ts.map +0 -1
- package/dist/protocol/types.js.map +0 -1
- package/dist/protocol/utils.d.ts.map +0 -1
- package/dist/protocol/utils.js.map +0 -1
- package/dist/protocol/validators.d.ts.map +0 -1
- package/dist/protocol/validators.js.map +0 -1
- package/dist/security/AuthManager.d.ts.map +0 -1
- package/dist/security/AuthManager.js.map +0 -1
- package/dist/security/MessageSanitizer.d.ts.map +0 -1
- package/dist/security/MessageSanitizer.js.map +0 -1
- package/dist/security/RateLimiter.d.ts.map +0 -1
- package/dist/security/RateLimiter.js.map +0 -1
- package/dist/security/SecurityMiddleware.d.ts.map +0 -1
- package/dist/security/SecurityMiddleware.js.map +0 -1
- package/dist/security/index.d.ts.map +0 -1
- package/dist/security/index.js.map +0 -1
- package/dist/speculative/PredictionEngine.d.ts.map +0 -1
- package/dist/speculative/PredictionEngine.js.map +0 -1
- package/dist/speculative/SpeculativeCache.d.ts.map +0 -1
- package/dist/speculative/SpeculativeCache.js.map +0 -1
- package/dist/speculative/SpeculativeEngine.d.ts.map +0 -1
- package/dist/speculative/SpeculativeEngine.js.map +0 -1
- package/dist/speculative/WorkerPool.d.ts.map +0 -1
- package/dist/speculative/WorkerPool.js.map +0 -1
- package/dist/speculative/index.d.ts.map +0 -1
- package/dist/speculative/index.js.map +0 -1
- package/dist/subconscious/EmbeddingService.d.ts.map +0 -1
- package/dist/subconscious/EmbeddingService.js.map +0 -1
- package/dist/subconscious/SemanticCache.d.ts.map +0 -1
- package/dist/subconscious/SemanticCache.js.map +0 -1
- package/dist/subconscious/SubconsciousEngine.d.ts.map +0 -1
- package/dist/subconscious/SubconsciousEngine.js.map +0 -1
- package/dist/subconscious/VectorStore.d.ts.map +0 -1
- package/dist/subconscious/VectorStore.js.map +0 -1
- package/dist/subconscious/cache.d.ts.map +0 -1
- package/dist/subconscious/embeddings.d.ts.map +0 -1
- package/dist/subconscious/embeddings.js.map +0 -1
- package/dist/subconscious/index.d.ts.map +0 -1
- package/dist/subconscious/index.js.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- /package/dist/{cloud → cjs/cloud}/KeyManager.d.ts +0 -0
- /package/dist/{cloud → cjs/cloud}/KeyManager.js +0 -0
- /package/dist/{cloud → cjs/cloud}/TenantCache.d.ts +0 -0
- /package/dist/{cloud → cjs/cloud}/TenantCache.js +0 -0
- /package/dist/{cloud → cjs/cloud}/index.d.ts +0 -0
- /package/dist/{cloud → cjs/cloud}/index.js +0 -0
- /package/dist/{cloud → cjs/cloud}/server.d.ts +0 -0
- /package/dist/{cloud → cjs/cloud}/server.js +0 -0
- /package/dist/{cloud → cjs/cloud}/types.d.ts +0 -0
- /package/dist/{cloud → cjs/cloud}/types.js +0 -0
- /package/dist/{config → cjs/config}/index.d.ts +0 -0
- /package/dist/{config → cjs/config}/index.js +0 -0
- /package/dist/{consensus → cjs/consensus}/ConsensusEngine.d.ts +0 -0
- /package/dist/{consensus → cjs/consensus}/ConsensusEngine.js +0 -0
- /package/dist/{consensus → cjs/consensus}/ModelPool.d.ts +0 -0
- /package/dist/{consensus → cjs/consensus}/ModelPool.js +0 -0
- /package/dist/{consensus → cjs/consensus}/index.d.ts +0 -0
- /package/dist/{consensus → cjs/consensus}/index.js +0 -0
- /package/dist/{core → cjs/core}/AgentRegistry.d.ts +0 -0
- /package/dist/{core → cjs/core}/AgentRegistry.js +0 -0
- /package/dist/{core → cjs/core}/DashboardBroadcaster.d.ts +0 -0
- /package/dist/{core → cjs/core}/DashboardBroadcaster.js +0 -0
- /package/dist/{core → cjs/core}/SubconsciousEngine.d.ts +0 -0
- /package/dist/{core → cjs/core}/WebSocketServer.d.ts +0 -0
- /package/dist/{core → cjs/core}/index.d.ts +0 -0
- /package/dist/{core → cjs/core}/index.js +0 -0
- /package/dist/{core → cjs/core}/router.d.ts +0 -0
- /package/dist/{core → cjs/core}/router.js +0 -0
- /package/dist/{embed.d.ts → cjs/embed.d.ts} +0 -0
- /package/dist/{embed.js → cjs/embed.js} +0 -0
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{index.js → cjs/index.js} +0 -0
- /package/dist/{protocol → cjs/protocol}/flows.d.ts +0 -0
- /package/dist/{protocol → cjs/protocol}/flows.js +0 -0
- /package/dist/{protocol → cjs/protocol}/iap.d.ts +0 -0
- /package/dist/{protocol → cjs/protocol}/iap.js +0 -0
- /package/dist/{protocol → cjs/protocol}/index.d.ts +0 -0
- /package/dist/{protocol → cjs/protocol}/index.js +0 -0
- /package/dist/{protocol → cjs/protocol}/types.d.ts +0 -0
- /package/dist/{protocol → cjs/protocol}/types.js +0 -0
- /package/dist/{protocol → cjs/protocol}/utils.d.ts +0 -0
- /package/dist/{protocol → cjs/protocol}/utils.js +0 -0
- /package/dist/{protocol → cjs/protocol}/validators.d.ts +0 -0
- /package/dist/{protocol → cjs/protocol}/validators.js +0 -0
- /package/dist/{security → cjs/security}/AuthManager.d.ts +0 -0
- /package/dist/{security → cjs/security}/AuthManager.js +0 -0
- /package/dist/{security → cjs/security}/MessageSanitizer.d.ts +0 -0
- /package/dist/{security → cjs/security}/RateLimiter.d.ts +0 -0
- /package/dist/{security → cjs/security}/RateLimiter.js +0 -0
- /package/dist/{security → cjs/security}/index.d.ts +0 -0
- /package/dist/{security → cjs/security}/index.js +0 -0
- /package/dist/{speculative → cjs/speculative}/PredictionEngine.d.ts +0 -0
- /package/dist/{speculative → cjs/speculative}/PredictionEngine.js +0 -0
- /package/dist/{speculative → cjs/speculative}/SpeculativeCache.d.ts +0 -0
- /package/dist/{speculative → cjs/speculative}/SpeculativeCache.js +0 -0
- /package/dist/{speculative → cjs/speculative}/SpeculativeEngine.d.ts +0 -0
- /package/dist/{speculative → cjs/speculative}/SpeculativeEngine.js +0 -0
- /package/dist/{speculative → cjs/speculative}/WorkerPool.d.ts +0 -0
- /package/dist/{speculative → cjs/speculative}/WorkerPool.js +0 -0
- /package/dist/{speculative → cjs/speculative}/index.d.ts +0 -0
- /package/dist/{speculative → cjs/speculative}/index.js +0 -0
- /package/dist/{subconscious → cjs/subconscious}/EmbeddingService.d.ts +0 -0
- /package/dist/{subconscious → cjs/subconscious}/EmbeddingService.js +0 -0
- /package/dist/{subconscious → cjs/subconscious}/SemanticCache.d.ts +0 -0
- /package/dist/{subconscious → cjs/subconscious}/SemanticCache.js +0 -0
- /package/dist/{subconscious → cjs/subconscious}/SubconsciousEngine.d.ts +0 -0
- /package/dist/{subconscious → cjs/subconscious}/SubconsciousEngine.js +0 -0
- /package/dist/{subconscious → cjs/subconscious}/VectorStore.d.ts +0 -0
- /package/dist/{subconscious → cjs/subconscious}/cache.d.ts +0 -0
- /package/dist/{subconscious → cjs/subconscious}/cache.js +0 -0
- /package/dist/{subconscious → cjs/subconscious}/embeddings.d.ts +0 -0
- /package/dist/{subconscious → cjs/subconscious}/embeddings.js +0 -0
- /package/dist/{subconscious → cjs/subconscious}/index.d.ts +0 -0
- /package/dist/{subconscious → cjs/subconscious}/index.js +0 -0
- /package/dist/{types → cjs/types}/index.d.ts +0 -0
- /package/dist/{types → cjs/types}/index.js +0 -0
- /package/dist/{utils → cjs/utils}/logger.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/logger.js +0 -0
package/README.md
CHANGED
|
@@ -1,311 +1,477 @@
|
|
|
1
1
|
# Lemma
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Shared memory for multi-agent systems.**
|
|
4
4
|
|
|
5
|
-
Lemma is
|
|
5
|
+
Lemma is an orchestration layer that lets AI agents coordinate, share work, and avoid redundant computation. Agents connect via WebSocket, register their capabilities, and automatically benefit from a shared semantic cache — so no two agents ever solve the same problem twice.
|
|
6
6
|
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const lemma = await Lemma.create();
|
|
11
|
-
const ask = lemma.wrap(yourLLMFunction);
|
|
12
|
-
|
|
13
|
-
await ask('chicken and rice recipes'); // → calls your LLM, ~2s
|
|
14
|
-
await ask('rice with chicken ideas'); // → ⚡ cache hit, 0ms, $0
|
|
7
|
+
```
|
|
8
|
+
5 agents. 15 tasks. 10 duplicates across different agents.
|
|
9
|
+
Result: 100% cache hit rate. 20-27ms per response. Zero duplicate LLM calls.
|
|
15
10
|
```
|
|
16
11
|
|
|
17
12
|
---
|
|
18
13
|
|
|
19
|
-
## The problem
|
|
14
|
+
## The problem with multi-agent systems
|
|
20
15
|
|
|
21
|
-
|
|
16
|
+
When you run multiple AI agents in parallel, they don't share context. Agent A solves a problem. Agent B gets the same problem 10 minutes later and solves it again. You pay twice, wait twice, and get the same answer.
|
|
17
|
+
|
|
18
|
+
At scale this compounds fast:
|
|
22
19
|
|
|
23
20
|
```
|
|
24
|
-
|
|
21
|
+
10 agents × 500 tasks/day × 70% overlap = 3,500 redundant LLM calls/day
|
|
25
22
|
```
|
|
26
23
|
|
|
27
|
-
Lemma
|
|
24
|
+
Lemma puts a shared semantic brain between your agents. When any agent solves something, every other agent gets that answer for free — even if they phrase the question differently.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## How it works
|
|
28
29
|
|
|
29
30
|
```
|
|
30
|
-
|
|
31
|
+
Agent A ──┐
|
|
32
|
+
Agent B ──┤──► SubconsciousHub ──► Semantic Cache (ChromaDB + embeddings)
|
|
33
|
+
Agent C ──┘ │
|
|
34
|
+
└──► Agent Registry + Capability Routing
|
|
31
35
|
```
|
|
32
36
|
|
|
37
|
+
1. Agents connect via WebSocket and register their capabilities
|
|
38
|
+
2. Every task request hits the semantic cache first
|
|
39
|
+
3. On a miss, the hub routes to a capable agent and stores the result
|
|
40
|
+
4. On a hit, the response returns in ~20ms — no agent invoked, no LLM called
|
|
41
|
+
|
|
42
|
+
The cache is semantic, not exact. "fibonacci up to n=10" and "compute fibonacci(10)" resolve to the same cached answer.
|
|
43
|
+
|
|
33
44
|
---
|
|
34
45
|
|
|
35
|
-
##
|
|
46
|
+
## Quick start
|
|
47
|
+
|
|
48
|
+
### 1. Install and setup dependencies
|
|
36
49
|
|
|
37
50
|
```bash
|
|
38
|
-
npm install lemma
|
|
51
|
+
npm install @nxuss/lemma
|
|
52
|
+
|
|
53
|
+
# For semantic mode (optional, lightweight embeddings):
|
|
54
|
+
npm install @xenova/transformers
|
|
55
|
+
|
|
56
|
+
# For persistent storage with ChromaDB (optional):
|
|
57
|
+
pip install chromadb
|
|
58
|
+
chroma run --path ./chroma_data --port 8000
|
|
59
|
+
|
|
60
|
+
# For ChromaDB embeddings (optional):
|
|
61
|
+
ollama pull nomic-embed-text
|
|
39
62
|
```
|
|
40
63
|
|
|
41
|
-
|
|
64
|
+
### 2. Choose your mode
|
|
42
65
|
|
|
43
|
-
|
|
66
|
+
#### Option A: Semantic Mode (Recommended) ⚡
|
|
44
67
|
|
|
45
|
-
|
|
68
|
+
Zero external dependencies, true semantic matching:
|
|
46
69
|
|
|
47
70
|
```typescript
|
|
48
|
-
import { Lemma } from 'lemma/embed';
|
|
71
|
+
import { Lemma } from '@nxuss/lemma/embed';
|
|
49
72
|
|
|
50
|
-
const lemma = await Lemma.create(
|
|
73
|
+
const lemma = await Lemma.create({
|
|
74
|
+
storage: 'semantic', // Uses transformers.js
|
|
75
|
+
threshold: 0.85, // Similarity threshold
|
|
76
|
+
});
|
|
51
77
|
|
|
52
|
-
const
|
|
53
|
-
return await
|
|
54
|
-
model: 'gpt-4o-mini',
|
|
55
|
-
messages: [{ role: 'user', content: question }],
|
|
56
|
-
});
|
|
78
|
+
const cachedLLM = lemma.wrap(async (query: string) => {
|
|
79
|
+
return await yourLLMCall(query);
|
|
57
80
|
});
|
|
58
81
|
|
|
59
|
-
|
|
60
|
-
|
|
82
|
+
await cachedLLM('weather in San Francisco'); // Calls LLM
|
|
83
|
+
await cachedLLM('SF weather forecast'); // Cache HIT! ⚡
|
|
84
|
+
await cachedLLM('San Francisco temperature'); // Cache HIT! ⚡
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### Option B: Memory Mode (Fastest)
|
|
88
|
+
|
|
89
|
+
Exact matching, zero dependencies:
|
|
61
90
|
|
|
62
|
-
|
|
63
|
-
|
|
91
|
+
```typescript
|
|
92
|
+
const lemma = await Lemma.create({
|
|
93
|
+
storage: 'memory', // Default, exact match only
|
|
94
|
+
});
|
|
64
95
|
```
|
|
65
96
|
|
|
66
|
-
|
|
97
|
+
#### Option C: Server Mode (Multi-Agent)
|
|
98
|
+
|
|
99
|
+
#### Option C: Server Mode (Multi-Agent)
|
|
100
|
+
|
|
101
|
+
For multi-agent orchestration:
|
|
67
102
|
|
|
68
103
|
```typescript
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
104
|
+
import { SubconsciousHub } from '@nxuss/lemma';
|
|
105
|
+
|
|
106
|
+
const hub = new SubconsciousHub({
|
|
107
|
+
server: { port: 8080 }
|
|
73
108
|
});
|
|
74
109
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
110
|
+
await hub.start();
|
|
111
|
+
console.log('WebSocket hub listening on ws://localhost:8080');
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 3. Connect agents (Server Mode)
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
import WebSocket from 'ws';
|
|
118
|
+
|
|
119
|
+
const ws = new WebSocket('ws://localhost:8080');
|
|
120
|
+
|
|
121
|
+
ws.on('open', () => {
|
|
122
|
+
// Register with the hub
|
|
123
|
+
ws.send(JSON.stringify({
|
|
124
|
+
type: 'handshake',
|
|
125
|
+
messageId: `msg-${Date.now()}`,
|
|
126
|
+
timestamp: Date.now(),
|
|
127
|
+
payload: {
|
|
128
|
+
agentId: 'my-agent-001',
|
|
129
|
+
capabilities: [{ name: 'code-generation', description: 'Writes code', version: '1.0.0' }],
|
|
130
|
+
metadata: { version: '1.0.0' }
|
|
131
|
+
}
|
|
132
|
+
}));
|
|
133
|
+
});
|
|
79
134
|
|
|
80
|
-
|
|
81
|
-
const
|
|
82
|
-
|
|
135
|
+
ws.on('message', (data) => {
|
|
136
|
+
const msg = JSON.parse(data.toString());
|
|
137
|
+
|
|
138
|
+
if (msg.type === 'handshake_ack') {
|
|
139
|
+
// Connected — send a task
|
|
140
|
+
ws.send(JSON.stringify({
|
|
141
|
+
type: 'task_request',
|
|
142
|
+
messageId: `msg-${Date.now()}`,
|
|
143
|
+
timestamp: Date.now(),
|
|
144
|
+
payload: {
|
|
145
|
+
taskId: `task-${Date.now()}`,
|
|
146
|
+
taskType: 'general',
|
|
147
|
+
description: 'Implement binary search in Python',
|
|
148
|
+
requiredCapabilities: ['code-generation'],
|
|
149
|
+
parameters: {}
|
|
150
|
+
}
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (msg.type === 'task_response' || msg.type === 'TASK_RESPONSE') {
|
|
155
|
+
const { cached, executionTime, result } = msg.payload;
|
|
156
|
+
console.log(cached ? `⚡ Cache hit (${executionTime}ms)` : `🔄 Computed (${executionTime}ms)`);
|
|
157
|
+
console.log(result);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (msg.type === 'task_assign') {
|
|
161
|
+
// Hub routed a task to us — process and respond
|
|
162
|
+
const { taskId, description } = msg.payload;
|
|
163
|
+
const result = yourLLM(description); // your actual LLM call
|
|
164
|
+
ws.send(JSON.stringify({
|
|
165
|
+
type: 'task_response',
|
|
166
|
+
messageId: `msg-${Date.now()}`,
|
|
167
|
+
timestamp: Date.now(),
|
|
168
|
+
payload: { taskId, success: true, result, executionTime: 1200, tokensUsed: 800 }
|
|
169
|
+
}));
|
|
170
|
+
}
|
|
83
171
|
});
|
|
84
172
|
```
|
|
85
173
|
|
|
174
|
+
### 4. See it in action
|
|
175
|
+
|
|
176
|
+
When multiple agents request similar tasks, you'll see the cache working:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
[agent-001] 🔄 COMPUTED - Calculate fibonacci(10)... (1000ms)
|
|
180
|
+
[agent-002] ⚡ CACHE HIT - compute the 10th fibonacci... (20ms)
|
|
181
|
+
[agent-003] ⚡ CACHE HIT - fibonacci sequence up to n=10... (22ms)
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Result:** 100% cache hit rate after first computation. ~20ms responses. Zero duplicate LLM calls.
|
|
185
|
+
|
|
86
186
|
---
|
|
87
187
|
|
|
88
|
-
##
|
|
188
|
+
## What's inside
|
|
189
|
+
|
|
190
|
+
### Embedded Mode — Zero-config semantic cache
|
|
89
191
|
|
|
90
|
-
|
|
192
|
+
The simplest way to add semantic caching to any project:
|
|
91
193
|
|
|
92
194
|
```typescript
|
|
93
|
-
|
|
195
|
+
import { Lemma } from '@nxuss/lemma/embed';
|
|
196
|
+
|
|
197
|
+
const lemma = await Lemma.create({
|
|
198
|
+
storage: 'semantic', // or 'memory', 'chroma', 'cloud'
|
|
199
|
+
threshold: 0.85,
|
|
200
|
+
ttl: 3600000, // 1 hour
|
|
201
|
+
cleanupInterval: 60000, // Auto-cleanup every minute
|
|
202
|
+
enableFallback: true, // Auto-fallback on failures
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
// Wrap any async function
|
|
206
|
+
const cached = lemma.wrap(yourExpensiveFunction);
|
|
207
|
+
|
|
208
|
+
// Use it
|
|
209
|
+
const result = await cached('your input');
|
|
210
|
+
console.log(result.fromCache); // true on cache hit
|
|
94
211
|
```
|
|
95
212
|
|
|
96
|
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
213
|
+
**Features:**
|
|
214
|
+
- **Semantic matching** with lightweight embeddings (transformers.js)
|
|
215
|
+
- **Automatic TTL cleanup** prevents memory leaks
|
|
216
|
+
- **Circuit breaker** with automatic fallbacks (Cloud → Chroma → Memory)
|
|
217
|
+
- **Health monitoring** with detailed metrics
|
|
218
|
+
- **Graceful shutdown** with `lemma.stop()`
|
|
219
|
+
|
|
220
|
+
**Storage options:**
|
|
221
|
+
- `memory`: Exact match, zero dependencies, fastest
|
|
222
|
+
- `semantic`: True semantic matching, lightweight (50MB)
|
|
223
|
+
- `chroma`: Persistent semantic cache (requires ChromaDB)
|
|
224
|
+
- `cloud`: Managed cache (requires API key)
|
|
225
|
+
|
|
226
|
+
### SubconsciousHub — the orchestration layer
|
|
100
227
|
|
|
101
|
-
|
|
228
|
+
The core of Lemma. A WebSocket server that manages agent connections, routes tasks by capability, and maintains the shared semantic cache.
|
|
102
229
|
|
|
103
230
|
```typescript
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
231
|
+
import { SubconsciousHub } from '@nxuss/lemma';
|
|
232
|
+
|
|
233
|
+
const hub = new SubconsciousHub({ server: { port: 8080 } });
|
|
234
|
+
await hub.start();
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**What it handles:**
|
|
238
|
+
- Agent registration and capability discovery
|
|
239
|
+
- Semantic cache lookup before every task (ChromaDB + `nomic-embed-text` embeddings)
|
|
240
|
+
- Task routing to capable agents on cache miss
|
|
241
|
+
- Response storage for future cache hits
|
|
242
|
+
- WebSocket heartbeat and connection lifecycle
|
|
243
|
+
- Rate limiting and message sanitization
|
|
244
|
+
|
|
245
|
+
### Semantic cache — the shared memory
|
|
246
|
+
|
|
247
|
+
Built on ChromaDB with Ollama embeddings. Catches paraphrases, not just exact matches.
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
"fibonacci up to n=10" ──► cache hit (similarity: 0.97)
|
|
251
|
+
"compute the 10th fibonacci" ──► cache hit (similarity: 0.91)
|
|
252
|
+
"fib sequence, first 10 terms" ──► cache hit (similarity: 0.88)
|
|
108
253
|
```
|
|
109
254
|
|
|
110
|
-
|
|
111
|
-
- True semantic matching via vector embeddings — catches paraphrases, typos, language variations
|
|
112
|
-
- Requires ChromaDB + Ollama running locally
|
|
113
|
-
- Best for: production apps where users rephrase the same questions
|
|
255
|
+
Threshold is configurable (`SEMANTIC_THRESHOLD=0.85` by default).
|
|
114
256
|
|
|
115
|
-
|
|
116
|
-
> Memory mode does exact normalized matching only.
|
|
257
|
+
### Consensus engine — multi-model voting
|
|
117
258
|
|
|
118
|
-
|
|
259
|
+
For high-stakes decisions, route a query through multiple models and only return when they agree.
|
|
119
260
|
|
|
120
261
|
```typescript
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
262
|
+
import { ConsensusEngine } from '@nxuss/lemma';
|
|
263
|
+
|
|
264
|
+
const consensus = new ConsensusEngine({
|
|
265
|
+
minModels: 3,
|
|
266
|
+
minAgreement: 0.90,
|
|
267
|
+
maxRounds: 3,
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
const result = await consensus.requestConsensus({
|
|
271
|
+
query: 'Is this SQL query safe to run in production?',
|
|
272
|
+
models: ['llama3', 'gpt-4', 'claude-3'],
|
|
124
273
|
});
|
|
274
|
+
// Returns only when 3 models agree ≥90%
|
|
125
275
|
```
|
|
126
276
|
|
|
127
|
-
|
|
128
|
-
- Persistent semantic cache hosted for you
|
|
129
|
-
- Works in serverless (Vercel, AWS Lambda, Cloudflare Workers)
|
|
130
|
-
- Get your key at [lemma.dev](https://lemma.dev)
|
|
277
|
+
Supports Ollama (local), OpenAI, Anthropic, and Google models simultaneously.
|
|
131
278
|
|
|
132
279
|
---
|
|
133
280
|
|
|
134
|
-
##
|
|
281
|
+
## New in v0.2.0 🎉
|
|
282
|
+
|
|
283
|
+
### 1. Semantic Memory Backend
|
|
135
284
|
|
|
136
|
-
|
|
285
|
+
True semantic caching without external dependencies:
|
|
137
286
|
|
|
138
287
|
```typescript
|
|
139
288
|
const lemma = await Lemma.create({
|
|
140
|
-
storage: '
|
|
141
|
-
|
|
142
|
-
apiKey: 'lk_live_...', // required for cloud mode
|
|
143
|
-
debug: false, // log hits/misses
|
|
144
|
-
ttl: 0, // cache TTL in ms (0 = forever)
|
|
145
|
-
maxSize: 10000, // max entries (memory mode)
|
|
289
|
+
storage: 'semantic',
|
|
290
|
+
embeddingModel: 'Xenova/all-MiniLM-L6-v2', // Lightweight!
|
|
146
291
|
});
|
|
292
|
+
|
|
293
|
+
// These all match semantically:
|
|
294
|
+
await lemma.run('weather in SF', fetchWeather);
|
|
295
|
+
await lemma.run('San Francisco weather', fetchWeather); // HIT!
|
|
296
|
+
await lemma.run('SF temperature forecast', fetchWeather); // HIT!
|
|
147
297
|
```
|
|
148
298
|
|
|
149
|
-
###
|
|
299
|
+
### 2. Automatic TTL Cleanup
|
|
150
300
|
|
|
151
|
-
|
|
301
|
+
No more memory leaks from expired entries:
|
|
152
302
|
|
|
153
303
|
```typescript
|
|
154
|
-
const
|
|
155
|
-
|
|
304
|
+
const lemma = await Lemma.create({
|
|
305
|
+
ttl: 3600000, // 1 hour expiry
|
|
306
|
+
cleanupInterval: 60000, // Check every minute
|
|
156
307
|
});
|
|
157
308
|
|
|
158
|
-
|
|
159
|
-
//
|
|
160
|
-
// result.fromCache — true if served from cache
|
|
161
|
-
// result.similarity — how similar to the cached entry (0–1)
|
|
162
|
-
// result.latencyMs — total time including cache lookup
|
|
309
|
+
// Expired entries are automatically removed
|
|
310
|
+
// No manual cleanup needed!
|
|
163
311
|
```
|
|
164
312
|
|
|
165
|
-
###
|
|
313
|
+
### 3. Circuit Breaker & Fallbacks
|
|
166
314
|
|
|
167
|
-
|
|
315
|
+
Automatic resilience when backends fail:
|
|
168
316
|
|
|
169
317
|
```typescript
|
|
170
|
-
const
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
console.log(`Saved an API call! Similarity: ${result.similarity}`);
|
|
177
|
-
}
|
|
178
|
-
```
|
|
318
|
+
const lemma = await Lemma.create({
|
|
319
|
+
storage: 'cloud',
|
|
320
|
+
enableFallback: true, // Auto-fallback on failure
|
|
321
|
+
maxRetries: 3,
|
|
322
|
+
retryDelay: 1000,
|
|
323
|
+
});
|
|
179
324
|
|
|
180
|
-
|
|
325
|
+
// If cloud fails → falls back to chroma
|
|
326
|
+
// If chroma fails → falls back to memory
|
|
327
|
+
// Automatic recovery when backend comes back
|
|
181
328
|
|
|
182
|
-
|
|
329
|
+
lemma.on('backend-degraded', ({ from, to }) => {
|
|
330
|
+
console.log(`Degraded: ${from} → ${to}`);
|
|
331
|
+
});
|
|
183
332
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const data = await callYourLLM(...);
|
|
188
|
-
await lemma.set('what is machine learning?', data);
|
|
189
|
-
}
|
|
333
|
+
lemma.on('backend-recovered', ({ backend }) => {
|
|
334
|
+
console.log(`Recovered: ${backend}`);
|
|
335
|
+
});
|
|
190
336
|
```
|
|
191
337
|
|
|
192
|
-
###
|
|
338
|
+
### 4. Enhanced Metrics & Health Monitoring
|
|
193
339
|
|
|
194
340
|
```typescript
|
|
195
341
|
const metrics = lemma.getMetrics();
|
|
342
|
+
console.log(metrics);
|
|
196
343
|
// {
|
|
197
|
-
// hits:
|
|
198
|
-
// misses:
|
|
199
|
-
//
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
//
|
|
344
|
+
// hits: 150,
|
|
345
|
+
// misses: 50,
|
|
346
|
+
// hitRate: 0.75,
|
|
347
|
+
// backendHealth: 'healthy',
|
|
348
|
+
// failureCount: 0,
|
|
349
|
+
// evictedCount: 23,
|
|
350
|
+
// lastCleanupAt: 1234567890
|
|
203
351
|
// }
|
|
204
|
-
```
|
|
205
352
|
|
|
206
|
-
|
|
353
|
+
const health = lemma.getBackendHealth();
|
|
354
|
+
console.log(health);
|
|
355
|
+
// {
|
|
356
|
+
// state: 'CLOSED',
|
|
357
|
+
// currentBackend: 'semantic',
|
|
358
|
+
// failureCount: 0,
|
|
359
|
+
// totalFailures: 0
|
|
360
|
+
// }
|
|
361
|
+
```
|
|
207
362
|
|
|
208
|
-
|
|
363
|
+
### 5. Dual Module Support (ESM + CJS)
|
|
209
364
|
|
|
210
|
-
|
|
365
|
+
```typescript
|
|
366
|
+
// ESM
|
|
367
|
+
import { Lemma } from '@nxuss/lemma/embed';
|
|
368
|
+
import { ConsensusEngine } from '@nxuss/lemma/consensus';
|
|
369
|
+
import { SpeculativeEngine } from '@nxuss/lemma/speculative';
|
|
370
|
+
|
|
371
|
+
// CJS
|
|
372
|
+
const { Lemma } = require('@nxuss/lemma/embed');
|
|
373
|
+
const { ConsensusEngine } = require('@nxuss/lemma/consensus');
|
|
374
|
+
```
|
|
211
375
|
|
|
212
|
-
|
|
213
|
-
-
|
|
214
|
-
-
|
|
215
|
-
-
|
|
376
|
+
**New exports:**
|
|
377
|
+
- `@nxuss/lemma/consensus` - Multi-model consensus
|
|
378
|
+
- `@nxuss/lemma/speculative` - Speculative execution
|
|
379
|
+
- `@nxuss/lemma/security` - Security utilities
|
|
380
|
+
- `@nxuss/lemma/protocol` - IAP protocol
|
|
381
|
+
- `@nxuss/lemma/langchain` - LangChain SDK
|
|
382
|
+
- `@nxuss/lemma/crewai` - CrewAI SDK
|
|
216
383
|
|
|
217
|
-
|
|
384
|
+
See [MIGRATION_GUIDE.md](docs/MIGRATION_GUIDE.md) for upgrade instructions.
|
|
218
385
|
|
|
219
|
-
|
|
220
|
-
|---|---|---|
|
|
221
|
-
| Customer support chatbot | 85% | ~$340/mo |
|
|
222
|
-
| Recipe / food suggestions | 78% | ~$180/mo |
|
|
223
|
-
| Location / places search | 82% | ~$290/mo |
|
|
224
|
-
| Code assistant | 65% | ~$120/mo |
|
|
386
|
+
---
|
|
225
387
|
|
|
226
|
-
|
|
388
|
+
## Install
|
|
227
389
|
|
|
228
|
-
|
|
390
|
+
```bash
|
|
391
|
+
npm install @nxuss/lemma
|
|
392
|
+
```
|
|
229
393
|
|
|
230
|
-
|
|
394
|
+
**Optional dependencies (install as needed):**
|
|
231
395
|
|
|
232
|
-
|
|
396
|
+
```bash
|
|
397
|
+
# For semantic mode (lightweight embeddings)
|
|
398
|
+
npm install @xenova/transformers
|
|
233
399
|
|
|
234
|
-
|
|
235
|
-
|
|
400
|
+
# For persistent storage with ChromaDB
|
|
401
|
+
pip install chromadb
|
|
402
|
+
chroma run --path ./chroma_data --port 8000
|
|
236
403
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
// Agents connect via WebSocket and share a semantic cache
|
|
404
|
+
# For ChromaDB embeddings
|
|
405
|
+
ollama pull nomic-embed-text
|
|
240
406
|
```
|
|
241
407
|
|
|
242
|
-
|
|
408
|
+
**Zero dependencies required** for basic memory mode!
|
|
243
409
|
|
|
244
|
-
|
|
245
|
-
- **Agent registry** — dynamic capability discovery and routing
|
|
246
|
-
- **Shared semantic cache** — all agents benefit from each other's work
|
|
247
|
-
- **Consensus engine** — multi-model voting for high-stakes decisions
|
|
248
|
-
- **Speculative execution** — pre-compute likely next requests
|
|
249
|
-
- **Security middleware** — API key auth, rate limiting, message sanitization
|
|
410
|
+
---
|
|
250
411
|
|
|
251
|
-
|
|
412
|
+
## Configuration
|
|
413
|
+
|
|
414
|
+
```bash
|
|
415
|
+
# .env
|
|
416
|
+
WS_PORT=8080
|
|
417
|
+
CHROMA_HOST=http://localhost
|
|
418
|
+
CHROMA_PORT=8000
|
|
419
|
+
OLLAMA_HOST=http://localhost:11434
|
|
420
|
+
OLLAMA_MODEL=nomic-embed-text
|
|
421
|
+
SEMANTIC_THRESHOLD=0.85 # similarity cutoff (0–1)
|
|
422
|
+
ENABLE_CACHING=true
|
|
423
|
+
AUTH_ENABLED=false # set true in production
|
|
424
|
+
```
|
|
252
425
|
|
|
253
426
|
---
|
|
254
427
|
|
|
255
|
-
##
|
|
428
|
+
## Examples & Documentation
|
|
256
429
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
430
|
+
For complete examples including:
|
|
431
|
+
- Single agent setup
|
|
432
|
+
- Multi-agent swarms
|
|
433
|
+
- Consensus voting
|
|
434
|
+
- Security & authentication
|
|
435
|
+
- LangChain/CrewAI integration
|
|
260
436
|
|
|
261
|
-
|
|
262
|
-
./scripts/deploy-cloud.sh YOUR_SERVER_IP
|
|
437
|
+
Visit [lemma.nxus.studio/docs](https://lemma.nxus.studio/docs)
|
|
263
438
|
|
|
264
|
-
|
|
265
|
-
curl -X POST http://YOUR_SERVER_IP:3100/admin/keys \
|
|
266
|
-
-H 'X-Admin-Secret: YOUR_ADMIN_SECRET' \
|
|
267
|
-
-H 'Content-Type: application/json' \
|
|
268
|
-
-d '{"tenantId": "user1", "name": "My Project", "plan": "pro"}'
|
|
439
|
+
---
|
|
269
440
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
});
|
|
276
|
-
```
|
|
441
|
+
## Who this is for
|
|
442
|
+
|
|
443
|
+
- Teams running **LangChain, CrewAI, or custom agent frameworks** who need shared memory across agents
|
|
444
|
+
- Systems where **multiple agents handle overlapping queries** — support bots, research pipelines, code assistants
|
|
445
|
+
- Anyone whose **LLM bill scales with agent count** rather than unique queries
|
|
277
446
|
|
|
278
|
-
|
|
447
|
+
Lemma is designed for multi-agent systems where coordination and shared memory provide immediate value.
|
|
279
448
|
|
|
280
449
|
---
|
|
281
450
|
|
|
282
|
-
##
|
|
451
|
+
## Production deployment
|
|
283
452
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
| Savings dashboard | ✅ | ✅ | ✅ |
|
|
290
|
-
| Price | $0 | $29/mo | $99/mo |
|
|
453
|
+
Lemma can be deployed to any Node.js hosting environment. For production setup guides including:
|
|
454
|
+
- Docker deployment
|
|
455
|
+
- API key management
|
|
456
|
+
- Security configuration
|
|
457
|
+
- Monitoring & observability
|
|
291
458
|
|
|
292
|
-
[
|
|
459
|
+
Visit [lemma.nxus.studio/docs/deployment](https://lemma.nxus.studio/docs/deployment)
|
|
460
|
+
|
|
461
|
+
---
|
|
462
|
+
|
|
463
|
+
## Cloud hosting (coming soon)
|
|
464
|
+
|
|
465
|
+
Managed Lemma instances with zero infrastructure setup. Check pricing and availability at [lemma.nxus.studio](https://lemma.nxus.studio)
|
|
293
466
|
|
|
294
467
|
---
|
|
295
468
|
|
|
296
469
|
## Contributing
|
|
297
470
|
|
|
298
|
-
|
|
299
|
-
git clone https://github.com/Nxusbets/lemma.git
|
|
300
|
-
cd lemma
|
|
301
|
-
npm install
|
|
302
|
-
npm run build # compile TypeScript
|
|
303
|
-
npm test # run tests
|
|
304
|
-
npm run dev # start the orchestration server
|
|
305
|
-
```
|
|
471
|
+
Contributions are welcome! For development setup and guidelines, visit [lemma.nxus.studio](https://lemma.nxus.studio)
|
|
306
472
|
|
|
307
473
|
---
|
|
308
474
|
|
|
309
475
|
## License
|
|
310
476
|
|
|
311
|
-
MIT © [Nxus Studio](https://
|
|
477
|
+
MIT © [Nxus Studio](https://nxus.studio)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyManager.d.ts","sourceRoot":"","sources":["../../../src/cloud/KeyManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,MAAM,EAAe,MAAM,SAAS,CAAC;AAE9C,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAA+B;gBAEpC,SAAS,SAAqB;IAO1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,CAAU,GAAG,MAAM;IAkB/E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IA4B1E,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAUlC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO;IAQzD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAQ9B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAIvC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMtC,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,IAAI;CAYb"}
|