@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.
Files changed (452) hide show
  1. package/README.md +347 -181
  2. package/dist/cjs/cloud/KeyManager.d.ts.map +1 -0
  3. package/dist/cjs/cloud/KeyManager.js.map +1 -0
  4. package/dist/cjs/cloud/TenantCache.d.ts.map +1 -0
  5. package/dist/cjs/cloud/TenantCache.js.map +1 -0
  6. package/dist/cjs/cloud/index.d.ts.map +1 -0
  7. package/dist/cjs/cloud/index.js.map +1 -0
  8. package/dist/cjs/cloud/server.d.ts.map +1 -0
  9. package/dist/cjs/cloud/server.js.map +1 -0
  10. package/dist/cjs/cloud/types.d.ts.map +1 -0
  11. package/dist/cjs/cloud/types.js.map +1 -0
  12. package/dist/cjs/config/index.d.ts.map +1 -0
  13. package/dist/cjs/config/index.js.map +1 -0
  14. package/dist/cjs/consensus/ConsensusEngine.d.ts.map +1 -0
  15. package/dist/cjs/consensus/ConsensusEngine.js.map +1 -0
  16. package/dist/cjs/consensus/ModelPool.d.ts.map +1 -0
  17. package/dist/cjs/consensus/ModelPool.js.map +1 -0
  18. package/dist/cjs/consensus/index.d.ts.map +1 -0
  19. package/dist/cjs/consensus/index.js.map +1 -0
  20. package/dist/cjs/core/AgentRegistry.d.ts.map +1 -0
  21. package/dist/cjs/core/AgentRegistry.js.map +1 -0
  22. package/dist/cjs/core/DashboardBroadcaster.d.ts.map +1 -0
  23. package/dist/cjs/core/DashboardBroadcaster.js.map +1 -0
  24. package/dist/{core → cjs/core}/OrchestrationEngine.d.ts +1 -0
  25. package/dist/cjs/core/OrchestrationEngine.d.ts.map +1 -0
  26. package/dist/{core → cjs/core}/OrchestrationEngine.js +29 -23
  27. package/dist/cjs/core/OrchestrationEngine.js.map +1 -0
  28. package/dist/cjs/core/SubconsciousEngine.d.ts.map +1 -0
  29. package/dist/{core → cjs/core}/SubconsciousEngine.js +15 -3
  30. package/dist/cjs/core/SubconsciousEngine.js.map +1 -0
  31. package/dist/cjs/core/WebSocketServer.d.ts.map +1 -0
  32. package/dist/{core → cjs/core}/WebSocketServer.js +2 -1
  33. package/dist/cjs/core/WebSocketServer.js.map +1 -0
  34. package/dist/cjs/core/index.d.ts.map +1 -0
  35. package/dist/cjs/core/index.js.map +1 -0
  36. package/dist/cjs/core/router.d.ts.map +1 -0
  37. package/dist/cjs/core/router.js.map +1 -0
  38. package/dist/{embed → cjs/embed}/index.d.ts +66 -1
  39. package/dist/cjs/embed/index.d.ts.map +1 -0
  40. package/dist/cjs/embed/index.js +979 -0
  41. package/dist/cjs/embed/index.js.map +1 -0
  42. package/dist/cjs/embed.d.ts.map +1 -0
  43. package/dist/cjs/embed.js.map +1 -0
  44. package/dist/cjs/examples/basic-usage.d.ts +12 -0
  45. package/dist/cjs/examples/basic-usage.d.ts.map +1 -0
  46. package/dist/cjs/examples/basic-usage.js +128 -0
  47. package/dist/cjs/examples/basic-usage.js.map +1 -0
  48. package/dist/cjs/index.d.ts.map +1 -0
  49. package/dist/cjs/index.js.map +1 -0
  50. package/dist/cjs/package.json +3 -0
  51. package/dist/cjs/protocol/flows.d.ts.map +1 -0
  52. package/dist/cjs/protocol/flows.js.map +1 -0
  53. package/dist/cjs/protocol/iap.d.ts.map +1 -0
  54. package/dist/cjs/protocol/iap.js.map +1 -0
  55. package/dist/cjs/protocol/index.d.ts.map +1 -0
  56. package/dist/cjs/protocol/index.js.map +1 -0
  57. package/dist/cjs/protocol/types.d.ts.map +1 -0
  58. package/dist/cjs/protocol/types.js.map +1 -0
  59. package/dist/cjs/protocol/utils.d.ts.map +1 -0
  60. package/dist/cjs/protocol/utils.js.map +1 -0
  61. package/dist/cjs/protocol/validators.d.ts.map +1 -0
  62. package/dist/cjs/protocol/validators.js.map +1 -0
  63. package/dist/cjs/security/AuthManager.d.ts.map +1 -0
  64. package/dist/cjs/security/AuthManager.js.map +1 -0
  65. package/dist/cjs/security/MessageSanitizer.d.ts.map +1 -0
  66. package/dist/{security → cjs/security}/MessageSanitizer.js +22 -6
  67. package/dist/cjs/security/MessageSanitizer.js.map +1 -0
  68. package/dist/cjs/security/RateLimiter.d.ts.map +1 -0
  69. package/dist/cjs/security/RateLimiter.js.map +1 -0
  70. package/dist/{security → cjs/security}/SecurityMiddleware.d.ts +3 -1
  71. package/dist/cjs/security/SecurityMiddleware.d.ts.map +1 -0
  72. package/dist/{security → cjs/security}/SecurityMiddleware.js +5 -3
  73. package/dist/cjs/security/SecurityMiddleware.js.map +1 -0
  74. package/dist/cjs/security/index.d.ts.map +1 -0
  75. package/dist/cjs/security/index.js.map +1 -0
  76. package/dist/cjs/speculative/PredictionEngine.d.ts.map +1 -0
  77. package/dist/cjs/speculative/PredictionEngine.js.map +1 -0
  78. package/dist/cjs/speculative/SpeculativeCache.d.ts.map +1 -0
  79. package/dist/cjs/speculative/SpeculativeCache.js.map +1 -0
  80. package/dist/cjs/speculative/SpeculativeEngine.d.ts.map +1 -0
  81. package/dist/cjs/speculative/SpeculativeEngine.js.map +1 -0
  82. package/dist/cjs/speculative/WorkerPool.d.ts.map +1 -0
  83. package/dist/cjs/speculative/WorkerPool.js.map +1 -0
  84. package/dist/cjs/speculative/index.d.ts.map +1 -0
  85. package/dist/cjs/speculative/index.js.map +1 -0
  86. package/dist/cjs/subconscious/EmbeddingService.d.ts.map +1 -0
  87. package/dist/cjs/subconscious/EmbeddingService.js.map +1 -0
  88. package/dist/cjs/subconscious/SemanticCache.d.ts.map +1 -0
  89. package/dist/cjs/subconscious/SemanticCache.js.map +1 -0
  90. package/dist/cjs/subconscious/SubconsciousEngine.d.ts.map +1 -0
  91. package/dist/cjs/subconscious/SubconsciousEngine.js.map +1 -0
  92. package/dist/cjs/subconscious/VectorStore.d.ts.map +1 -0
  93. package/dist/{subconscious → cjs/subconscious}/VectorStore.js +3 -3
  94. package/dist/cjs/subconscious/VectorStore.js.map +1 -0
  95. package/dist/cjs/subconscious/cache.d.ts.map +1 -0
  96. package/dist/cjs/subconscious/cache.js.map +1 -0
  97. package/dist/cjs/subconscious/embeddings.d.ts.map +1 -0
  98. package/dist/cjs/subconscious/embeddings.js.map +1 -0
  99. package/dist/cjs/subconscious/index.d.ts.map +1 -0
  100. package/dist/cjs/subconscious/index.js.map +1 -0
  101. package/dist/cjs/types/index.d.ts.map +1 -0
  102. package/dist/cjs/types/index.js.map +1 -0
  103. package/dist/cjs/utils/logger.d.ts.map +1 -0
  104. package/dist/cjs/utils/logger.js.map +1 -0
  105. package/dist/esm/cloud/KeyManager.d.ts +29 -0
  106. package/dist/esm/cloud/KeyManager.d.ts.map +1 -0
  107. package/dist/esm/cloud/KeyManager.js +135 -0
  108. package/dist/esm/cloud/KeyManager.js.map +1 -0
  109. package/dist/esm/cloud/TenantCache.d.ts +29 -0
  110. package/dist/esm/cloud/TenantCache.d.ts.map +1 -0
  111. package/dist/esm/cloud/TenantCache.js +125 -0
  112. package/dist/esm/cloud/TenantCache.js.map +1 -0
  113. package/dist/esm/cloud/index.d.ts +4 -0
  114. package/dist/esm/cloud/index.d.ts.map +1 -0
  115. package/dist/esm/cloud/index.js +4 -0
  116. package/dist/esm/cloud/index.js.map +1 -0
  117. package/dist/esm/cloud/server.d.ts +17 -0
  118. package/dist/esm/cloud/server.d.ts.map +1 -0
  119. package/dist/esm/cloud/server.js +181 -0
  120. package/dist/esm/cloud/server.js.map +1 -0
  121. package/dist/esm/cloud/types.d.ts +35 -0
  122. package/dist/esm/cloud/types.d.ts.map +1 -0
  123. package/dist/esm/cloud/types.js +11 -0
  124. package/dist/esm/cloud/types.js.map +1 -0
  125. package/dist/esm/config/index.d.ts +44 -0
  126. package/dist/esm/config/index.d.ts.map +1 -0
  127. package/dist/esm/config/index.js +151 -0
  128. package/dist/esm/config/index.js.map +1 -0
  129. package/dist/esm/consensus/ConsensusEngine.d.ts +119 -0
  130. package/dist/esm/consensus/ConsensusEngine.d.ts.map +1 -0
  131. package/dist/esm/consensus/ConsensusEngine.js +310 -0
  132. package/dist/esm/consensus/ConsensusEngine.js.map +1 -0
  133. package/dist/esm/consensus/ModelPool.d.ts +103 -0
  134. package/dist/esm/consensus/ModelPool.d.ts.map +1 -0
  135. package/dist/esm/consensus/ModelPool.js +269 -0
  136. package/dist/esm/consensus/ModelPool.js.map +1 -0
  137. package/dist/esm/consensus/index.d.ts +8 -0
  138. package/dist/esm/consensus/index.d.ts.map +1 -0
  139. package/dist/esm/consensus/index.js +8 -0
  140. package/dist/esm/consensus/index.js.map +1 -0
  141. package/dist/esm/core/AgentRegistry.d.ts +89 -0
  142. package/dist/esm/core/AgentRegistry.d.ts.map +1 -0
  143. package/dist/esm/core/AgentRegistry.js +260 -0
  144. package/dist/esm/core/AgentRegistry.js.map +1 -0
  145. package/dist/esm/core/DashboardBroadcaster.d.ts +67 -0
  146. package/dist/esm/core/DashboardBroadcaster.d.ts.map +1 -0
  147. package/dist/esm/core/DashboardBroadcaster.js +260 -0
  148. package/dist/esm/core/DashboardBroadcaster.js.map +1 -0
  149. package/dist/esm/core/OrchestrationEngine.d.ts +85 -0
  150. package/dist/esm/core/OrchestrationEngine.d.ts.map +1 -0
  151. package/dist/esm/core/OrchestrationEngine.js +457 -0
  152. package/dist/esm/core/OrchestrationEngine.js.map +1 -0
  153. package/dist/esm/core/SubconsciousEngine.d.ts +53 -0
  154. package/dist/esm/core/SubconsciousEngine.d.ts.map +1 -0
  155. package/dist/esm/core/SubconsciousEngine.js +278 -0
  156. package/dist/esm/core/SubconsciousEngine.js.map +1 -0
  157. package/dist/esm/core/WebSocketServer.d.ts +89 -0
  158. package/dist/esm/core/WebSocketServer.d.ts.map +1 -0
  159. package/dist/esm/core/WebSocketServer.js +380 -0
  160. package/dist/esm/core/WebSocketServer.js.map +1 -0
  161. package/dist/esm/core/index.d.ts +15 -0
  162. package/dist/esm/core/index.d.ts.map +1 -0
  163. package/dist/esm/core/index.js +15 -0
  164. package/dist/esm/core/index.js.map +1 -0
  165. package/dist/esm/core/router.d.ts +105 -0
  166. package/dist/esm/core/router.d.ts.map +1 -0
  167. package/dist/esm/core/router.js +416 -0
  168. package/dist/esm/core/router.js.map +1 -0
  169. package/dist/esm/embed/index.d.ts +218 -0
  170. package/dist/esm/embed/index.d.ts.map +1 -0
  171. package/dist/esm/embed/index.js +939 -0
  172. package/dist/esm/embed/index.js.map +1 -0
  173. package/dist/esm/embed.d.ts +11 -0
  174. package/dist/esm/embed.d.ts.map +1 -0
  175. package/dist/esm/embed.js +11 -0
  176. package/dist/esm/embed.js.map +1 -0
  177. package/dist/esm/examples/basic-usage.d.ts +12 -0
  178. package/dist/esm/examples/basic-usage.d.ts.map +1 -0
  179. package/dist/esm/examples/basic-usage.js +126 -0
  180. package/dist/esm/examples/basic-usage.js.map +1 -0
  181. package/dist/esm/index.d.ts +83 -0
  182. package/dist/esm/index.d.ts.map +1 -0
  183. package/dist/esm/index.js +132 -0
  184. package/dist/esm/index.js.map +1 -0
  185. package/dist/esm/package.json +3 -0
  186. package/dist/esm/protocol/flows.d.ts +126 -0
  187. package/dist/esm/protocol/flows.d.ts.map +1 -0
  188. package/dist/esm/protocol/flows.js +338 -0
  189. package/dist/esm/protocol/flows.js.map +1 -0
  190. package/dist/esm/protocol/iap.d.ts +54 -0
  191. package/dist/esm/protocol/iap.d.ts.map +1 -0
  192. package/dist/esm/protocol/iap.js +104 -0
  193. package/dist/esm/protocol/iap.js.map +1 -0
  194. package/dist/esm/protocol/index.d.ts +23 -0
  195. package/dist/esm/protocol/index.d.ts.map +1 -0
  196. package/dist/esm/protocol/index.js +28 -0
  197. package/dist/esm/protocol/index.js.map +1 -0
  198. package/dist/esm/protocol/types.d.ts +332 -0
  199. package/dist/esm/protocol/types.d.ts.map +1 -0
  200. package/dist/esm/protocol/types.js +54 -0
  201. package/dist/esm/protocol/types.js.map +1 -0
  202. package/dist/esm/protocol/utils.d.ts +130 -0
  203. package/dist/esm/protocol/utils.d.ts.map +1 -0
  204. package/dist/esm/protocol/utils.js +260 -0
  205. package/dist/esm/protocol/utils.js.map +1 -0
  206. package/dist/esm/protocol/validators.d.ts +54 -0
  207. package/dist/esm/protocol/validators.d.ts.map +1 -0
  208. package/dist/esm/protocol/validators.js +332 -0
  209. package/dist/esm/protocol/validators.js.map +1 -0
  210. package/dist/esm/security/AuthManager.d.ts +73 -0
  211. package/dist/esm/security/AuthManager.d.ts.map +1 -0
  212. package/dist/esm/security/AuthManager.js +95 -0
  213. package/dist/esm/security/AuthManager.js.map +1 -0
  214. package/dist/esm/security/MessageSanitizer.d.ts +51 -0
  215. package/dist/esm/security/MessageSanitizer.d.ts.map +1 -0
  216. package/dist/esm/security/MessageSanitizer.js +178 -0
  217. package/dist/esm/security/MessageSanitizer.js.map +1 -0
  218. package/dist/esm/security/RateLimiter.d.ts +46 -0
  219. package/dist/esm/security/RateLimiter.d.ts.map +1 -0
  220. package/dist/esm/security/RateLimiter.js +129 -0
  221. package/dist/esm/security/RateLimiter.js.map +1 -0
  222. package/dist/esm/security/SecurityMiddleware.d.ts +90 -0
  223. package/dist/esm/security/SecurityMiddleware.d.ts.map +1 -0
  224. package/dist/esm/security/SecurityMiddleware.js +144 -0
  225. package/dist/esm/security/SecurityMiddleware.js.map +1 -0
  226. package/dist/esm/security/index.d.ts +35 -0
  227. package/dist/esm/security/index.d.ts.map +1 -0
  228. package/dist/esm/security/index.js +35 -0
  229. package/dist/esm/security/index.js.map +1 -0
  230. package/dist/esm/speculative/PredictionEngine.d.ts +99 -0
  231. package/dist/esm/speculative/PredictionEngine.d.ts.map +1 -0
  232. package/dist/esm/speculative/PredictionEngine.js +284 -0
  233. package/dist/esm/speculative/PredictionEngine.js.map +1 -0
  234. package/dist/esm/speculative/SpeculativeCache.d.ts +117 -0
  235. package/dist/esm/speculative/SpeculativeCache.d.ts.map +1 -0
  236. package/dist/esm/speculative/SpeculativeCache.js +288 -0
  237. package/dist/esm/speculative/SpeculativeCache.js.map +1 -0
  238. package/dist/esm/speculative/SpeculativeEngine.d.ts +114 -0
  239. package/dist/esm/speculative/SpeculativeEngine.d.ts.map +1 -0
  240. package/dist/esm/speculative/SpeculativeEngine.js +240 -0
  241. package/dist/esm/speculative/SpeculativeEngine.js.map +1 -0
  242. package/dist/esm/speculative/WorkerPool.d.ts +109 -0
  243. package/dist/esm/speculative/WorkerPool.d.ts.map +1 -0
  244. package/dist/esm/speculative/WorkerPool.js +323 -0
  245. package/dist/esm/speculative/WorkerPool.js.map +1 -0
  246. package/dist/esm/speculative/index.d.ts +10 -0
  247. package/dist/esm/speculative/index.d.ts.map +1 -0
  248. package/dist/esm/speculative/index.js +10 -0
  249. package/dist/esm/speculative/index.js.map +1 -0
  250. package/dist/esm/subconscious/EmbeddingService.d.ts +73 -0
  251. package/dist/esm/subconscious/EmbeddingService.d.ts.map +1 -0
  252. package/dist/esm/subconscious/EmbeddingService.js +189 -0
  253. package/dist/esm/subconscious/EmbeddingService.js.map +1 -0
  254. package/dist/esm/subconscious/SemanticCache.d.ts +82 -0
  255. package/dist/esm/subconscious/SemanticCache.d.ts.map +1 -0
  256. package/dist/esm/subconscious/SemanticCache.js +160 -0
  257. package/dist/esm/subconscious/SemanticCache.js.map +1 -0
  258. package/dist/esm/subconscious/SubconsciousEngine.d.ts +121 -0
  259. package/dist/esm/subconscious/SubconsciousEngine.d.ts.map +1 -0
  260. package/dist/esm/subconscious/SubconsciousEngine.js +237 -0
  261. package/dist/esm/subconscious/SubconsciousEngine.js.map +1 -0
  262. package/dist/esm/subconscious/VectorStore.d.ts +54 -0
  263. package/dist/esm/subconscious/VectorStore.d.ts.map +1 -0
  264. package/dist/esm/subconscious/VectorStore.js +164 -0
  265. package/dist/esm/subconscious/VectorStore.js.map +1 -0
  266. package/dist/esm/subconscious/cache.d.ts +34 -0
  267. package/dist/esm/subconscious/cache.d.ts.map +1 -0
  268. package/dist/esm/subconscious/cache.js +152 -0
  269. package/dist/{subconscious → esm/subconscious}/cache.js.map +1 -1
  270. package/dist/esm/subconscious/embeddings.d.ts +25 -0
  271. package/dist/esm/subconscious/embeddings.d.ts.map +1 -0
  272. package/dist/esm/subconscious/embeddings.js +58 -0
  273. package/dist/esm/subconscious/embeddings.js.map +1 -0
  274. package/dist/esm/subconscious/index.d.ts +12 -0
  275. package/dist/esm/subconscious/index.d.ts.map +1 -0
  276. package/dist/esm/subconscious/index.js +12 -0
  277. package/dist/esm/subconscious/index.js.map +1 -0
  278. package/dist/esm/types/index.d.ts +286 -0
  279. package/dist/esm/types/index.d.ts.map +1 -0
  280. package/dist/esm/types/index.js +40 -0
  281. package/dist/esm/types/index.js.map +1 -0
  282. package/dist/esm/utils/logger.d.ts +63 -0
  283. package/dist/esm/utils/logger.d.ts.map +1 -0
  284. package/dist/esm/utils/logger.js +122 -0
  285. package/dist/esm/utils/logger.js.map +1 -0
  286. package/package.json +77 -13
  287. package/dist/cloud/KeyManager.d.ts.map +0 -1
  288. package/dist/cloud/KeyManager.js.map +0 -1
  289. package/dist/cloud/TenantCache.d.ts.map +0 -1
  290. package/dist/cloud/TenantCache.js.map +0 -1
  291. package/dist/cloud/index.d.ts.map +0 -1
  292. package/dist/cloud/index.js.map +0 -1
  293. package/dist/cloud/server.d.ts.map +0 -1
  294. package/dist/cloud/server.js.map +0 -1
  295. package/dist/cloud/types.d.ts.map +0 -1
  296. package/dist/cloud/types.js.map +0 -1
  297. package/dist/config/index.d.ts.map +0 -1
  298. package/dist/config/index.js.map +0 -1
  299. package/dist/consensus/ConsensusEngine.d.ts.map +0 -1
  300. package/dist/consensus/ConsensusEngine.js.map +0 -1
  301. package/dist/consensus/ModelPool.d.ts.map +0 -1
  302. package/dist/consensus/ModelPool.js.map +0 -1
  303. package/dist/consensus/index.d.ts.map +0 -1
  304. package/dist/consensus/index.js.map +0 -1
  305. package/dist/core/AgentRegistry.d.ts.map +0 -1
  306. package/dist/core/AgentRegistry.js.map +0 -1
  307. package/dist/core/DashboardBroadcaster.d.ts.map +0 -1
  308. package/dist/core/DashboardBroadcaster.js.map +0 -1
  309. package/dist/core/OrchestrationEngine.d.ts.map +0 -1
  310. package/dist/core/OrchestrationEngine.js.map +0 -1
  311. package/dist/core/SubconsciousEngine.d.ts.map +0 -1
  312. package/dist/core/SubconsciousEngine.js.map +0 -1
  313. package/dist/core/WebSocketServer.d.ts.map +0 -1
  314. package/dist/core/WebSocketServer.js.map +0 -1
  315. package/dist/core/index.d.ts.map +0 -1
  316. package/dist/core/index.js.map +0 -1
  317. package/dist/core/router.d.ts.map +0 -1
  318. package/dist/core/router.js.map +0 -1
  319. package/dist/embed/index.d.ts.map +0 -1
  320. package/dist/embed/index.js +0 -408
  321. package/dist/embed/index.js.map +0 -1
  322. package/dist/embed.d.ts.map +0 -1
  323. package/dist/embed.js.map +0 -1
  324. package/dist/index.d.ts.map +0 -1
  325. package/dist/index.js.map +0 -1
  326. package/dist/protocol/flows.d.ts.map +0 -1
  327. package/dist/protocol/flows.js.map +0 -1
  328. package/dist/protocol/iap.d.ts.map +0 -1
  329. package/dist/protocol/iap.js.map +0 -1
  330. package/dist/protocol/index.d.ts.map +0 -1
  331. package/dist/protocol/index.js.map +0 -1
  332. package/dist/protocol/types.d.ts.map +0 -1
  333. package/dist/protocol/types.js.map +0 -1
  334. package/dist/protocol/utils.d.ts.map +0 -1
  335. package/dist/protocol/utils.js.map +0 -1
  336. package/dist/protocol/validators.d.ts.map +0 -1
  337. package/dist/protocol/validators.js.map +0 -1
  338. package/dist/security/AuthManager.d.ts.map +0 -1
  339. package/dist/security/AuthManager.js.map +0 -1
  340. package/dist/security/MessageSanitizer.d.ts.map +0 -1
  341. package/dist/security/MessageSanitizer.js.map +0 -1
  342. package/dist/security/RateLimiter.d.ts.map +0 -1
  343. package/dist/security/RateLimiter.js.map +0 -1
  344. package/dist/security/SecurityMiddleware.d.ts.map +0 -1
  345. package/dist/security/SecurityMiddleware.js.map +0 -1
  346. package/dist/security/index.d.ts.map +0 -1
  347. package/dist/security/index.js.map +0 -1
  348. package/dist/speculative/PredictionEngine.d.ts.map +0 -1
  349. package/dist/speculative/PredictionEngine.js.map +0 -1
  350. package/dist/speculative/SpeculativeCache.d.ts.map +0 -1
  351. package/dist/speculative/SpeculativeCache.js.map +0 -1
  352. package/dist/speculative/SpeculativeEngine.d.ts.map +0 -1
  353. package/dist/speculative/SpeculativeEngine.js.map +0 -1
  354. package/dist/speculative/WorkerPool.d.ts.map +0 -1
  355. package/dist/speculative/WorkerPool.js.map +0 -1
  356. package/dist/speculative/index.d.ts.map +0 -1
  357. package/dist/speculative/index.js.map +0 -1
  358. package/dist/subconscious/EmbeddingService.d.ts.map +0 -1
  359. package/dist/subconscious/EmbeddingService.js.map +0 -1
  360. package/dist/subconscious/SemanticCache.d.ts.map +0 -1
  361. package/dist/subconscious/SemanticCache.js.map +0 -1
  362. package/dist/subconscious/SubconsciousEngine.d.ts.map +0 -1
  363. package/dist/subconscious/SubconsciousEngine.js.map +0 -1
  364. package/dist/subconscious/VectorStore.d.ts.map +0 -1
  365. package/dist/subconscious/VectorStore.js.map +0 -1
  366. package/dist/subconscious/cache.d.ts.map +0 -1
  367. package/dist/subconscious/embeddings.d.ts.map +0 -1
  368. package/dist/subconscious/embeddings.js.map +0 -1
  369. package/dist/subconscious/index.d.ts.map +0 -1
  370. package/dist/subconscious/index.js.map +0 -1
  371. package/dist/types/index.d.ts.map +0 -1
  372. package/dist/types/index.js.map +0 -1
  373. package/dist/utils/logger.d.ts.map +0 -1
  374. package/dist/utils/logger.js.map +0 -1
  375. /package/dist/{cloud → cjs/cloud}/KeyManager.d.ts +0 -0
  376. /package/dist/{cloud → cjs/cloud}/KeyManager.js +0 -0
  377. /package/dist/{cloud → cjs/cloud}/TenantCache.d.ts +0 -0
  378. /package/dist/{cloud → cjs/cloud}/TenantCache.js +0 -0
  379. /package/dist/{cloud → cjs/cloud}/index.d.ts +0 -0
  380. /package/dist/{cloud → cjs/cloud}/index.js +0 -0
  381. /package/dist/{cloud → cjs/cloud}/server.d.ts +0 -0
  382. /package/dist/{cloud → cjs/cloud}/server.js +0 -0
  383. /package/dist/{cloud → cjs/cloud}/types.d.ts +0 -0
  384. /package/dist/{cloud → cjs/cloud}/types.js +0 -0
  385. /package/dist/{config → cjs/config}/index.d.ts +0 -0
  386. /package/dist/{config → cjs/config}/index.js +0 -0
  387. /package/dist/{consensus → cjs/consensus}/ConsensusEngine.d.ts +0 -0
  388. /package/dist/{consensus → cjs/consensus}/ConsensusEngine.js +0 -0
  389. /package/dist/{consensus → cjs/consensus}/ModelPool.d.ts +0 -0
  390. /package/dist/{consensus → cjs/consensus}/ModelPool.js +0 -0
  391. /package/dist/{consensus → cjs/consensus}/index.d.ts +0 -0
  392. /package/dist/{consensus → cjs/consensus}/index.js +0 -0
  393. /package/dist/{core → cjs/core}/AgentRegistry.d.ts +0 -0
  394. /package/dist/{core → cjs/core}/AgentRegistry.js +0 -0
  395. /package/dist/{core → cjs/core}/DashboardBroadcaster.d.ts +0 -0
  396. /package/dist/{core → cjs/core}/DashboardBroadcaster.js +0 -0
  397. /package/dist/{core → cjs/core}/SubconsciousEngine.d.ts +0 -0
  398. /package/dist/{core → cjs/core}/WebSocketServer.d.ts +0 -0
  399. /package/dist/{core → cjs/core}/index.d.ts +0 -0
  400. /package/dist/{core → cjs/core}/index.js +0 -0
  401. /package/dist/{core → cjs/core}/router.d.ts +0 -0
  402. /package/dist/{core → cjs/core}/router.js +0 -0
  403. /package/dist/{embed.d.ts → cjs/embed.d.ts} +0 -0
  404. /package/dist/{embed.js → cjs/embed.js} +0 -0
  405. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  406. /package/dist/{index.js → cjs/index.js} +0 -0
  407. /package/dist/{protocol → cjs/protocol}/flows.d.ts +0 -0
  408. /package/dist/{protocol → cjs/protocol}/flows.js +0 -0
  409. /package/dist/{protocol → cjs/protocol}/iap.d.ts +0 -0
  410. /package/dist/{protocol → cjs/protocol}/iap.js +0 -0
  411. /package/dist/{protocol → cjs/protocol}/index.d.ts +0 -0
  412. /package/dist/{protocol → cjs/protocol}/index.js +0 -0
  413. /package/dist/{protocol → cjs/protocol}/types.d.ts +0 -0
  414. /package/dist/{protocol → cjs/protocol}/types.js +0 -0
  415. /package/dist/{protocol → cjs/protocol}/utils.d.ts +0 -0
  416. /package/dist/{protocol → cjs/protocol}/utils.js +0 -0
  417. /package/dist/{protocol → cjs/protocol}/validators.d.ts +0 -0
  418. /package/dist/{protocol → cjs/protocol}/validators.js +0 -0
  419. /package/dist/{security → cjs/security}/AuthManager.d.ts +0 -0
  420. /package/dist/{security → cjs/security}/AuthManager.js +0 -0
  421. /package/dist/{security → cjs/security}/MessageSanitizer.d.ts +0 -0
  422. /package/dist/{security → cjs/security}/RateLimiter.d.ts +0 -0
  423. /package/dist/{security → cjs/security}/RateLimiter.js +0 -0
  424. /package/dist/{security → cjs/security}/index.d.ts +0 -0
  425. /package/dist/{security → cjs/security}/index.js +0 -0
  426. /package/dist/{speculative → cjs/speculative}/PredictionEngine.d.ts +0 -0
  427. /package/dist/{speculative → cjs/speculative}/PredictionEngine.js +0 -0
  428. /package/dist/{speculative → cjs/speculative}/SpeculativeCache.d.ts +0 -0
  429. /package/dist/{speculative → cjs/speculative}/SpeculativeCache.js +0 -0
  430. /package/dist/{speculative → cjs/speculative}/SpeculativeEngine.d.ts +0 -0
  431. /package/dist/{speculative → cjs/speculative}/SpeculativeEngine.js +0 -0
  432. /package/dist/{speculative → cjs/speculative}/WorkerPool.d.ts +0 -0
  433. /package/dist/{speculative → cjs/speculative}/WorkerPool.js +0 -0
  434. /package/dist/{speculative → cjs/speculative}/index.d.ts +0 -0
  435. /package/dist/{speculative → cjs/speculative}/index.js +0 -0
  436. /package/dist/{subconscious → cjs/subconscious}/EmbeddingService.d.ts +0 -0
  437. /package/dist/{subconscious → cjs/subconscious}/EmbeddingService.js +0 -0
  438. /package/dist/{subconscious → cjs/subconscious}/SemanticCache.d.ts +0 -0
  439. /package/dist/{subconscious → cjs/subconscious}/SemanticCache.js +0 -0
  440. /package/dist/{subconscious → cjs/subconscious}/SubconsciousEngine.d.ts +0 -0
  441. /package/dist/{subconscious → cjs/subconscious}/SubconsciousEngine.js +0 -0
  442. /package/dist/{subconscious → cjs/subconscious}/VectorStore.d.ts +0 -0
  443. /package/dist/{subconscious → cjs/subconscious}/cache.d.ts +0 -0
  444. /package/dist/{subconscious → cjs/subconscious}/cache.js +0 -0
  445. /package/dist/{subconscious → cjs/subconscious}/embeddings.d.ts +0 -0
  446. /package/dist/{subconscious → cjs/subconscious}/embeddings.js +0 -0
  447. /package/dist/{subconscious → cjs/subconscious}/index.d.ts +0 -0
  448. /package/dist/{subconscious → cjs/subconscious}/index.js +0 -0
  449. /package/dist/{types → cjs/types}/index.d.ts +0 -0
  450. /package/dist/{types → cjs/types}/index.js +0 -0
  451. /package/dist/{utils → cjs/utils}/logger.d.ts +0 -0
  452. /package/dist/{utils → cjs/utils}/logger.js +0 -0
package/README.md CHANGED
@@ -1,311 +1,477 @@
1
1
  # Lemma
2
2
 
3
- **Stop paying for the same LLM call twice.**
3
+ **Shared memory for multi-agent systems.**
4
4
 
5
- Lemma is a semantic cache for AI apps. It recognizes when two prompts mean the same thing and returns the cached response — no LLM call, no cost, no wait.
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
- ```typescript
8
- import { Lemma } from 'lemma/embed';
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
- Every AI app has the same leak: users ask the same questions in different ways, and you pay full price every time.
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
- 1,000 users ask about "chicken recipes" 1,000 LLM calls → $60/day
21
+ 10 agents × 500 tasks/day × 70% overlap = 3,500 redundant LLM calls/day
25
22
  ```
26
23
 
27
- Lemma understands that *"chicken and rice"*, *"rice with chicken"*, and *"what can I make with chicken and rice?"* are the same question. One LLM call. 999 cache hits.
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
- 1,000 users ask about "chicken recipes" → 1 LLM call + 999 cache hits → $4/day
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
- ## Install
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
- No config. No server. No Docker. Works in any Node.js project.
64
+ ### 2. Choose your mode
42
65
 
43
- ---
66
+ #### Option A: Semantic Mode (Recommended) ⚡
44
67
 
45
- ## Quick start
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 getAnswer = lemma.wrap(async (question: string) => {
53
- return await llm.chat.completions.create({
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
- const r1 = await getAnswer('what is the capital of France?');
60
- console.log(r1.fromCache); // false first call
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
- const r2 = await getAnswer('capital city of France?');
63
- console.log(r2.fromCache); // true ⚡ 0ms, $0
91
+ ```typescript
92
+ const lemma = await Lemma.create({
93
+ storage: 'memory', // Default, exact match only
94
+ });
64
95
  ```
65
96
 
66
- ### Drop into an existing Express app
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
- // Before every request hits your LLM
70
- app.post('/api/chat', async (req, res) => {
71
- const response = await llm.chat.completions.create({ ... });
72
- res.json(response);
104
+ import { SubconsciousHub } from '@nxuss/lemma';
105
+
106
+ const hub = new SubconsciousHub({
107
+ server: { port: 8080 }
73
108
  });
74
109
 
75
- // After — 3 lines changed, 70% fewer LLM calls
76
- import { Lemma } from 'lemma/embed';
77
- const lemma = await Lemma.create();
78
- const cachedChat = lemma.wrap((msg: string) => llm.chat.completions.create({ ... }));
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
- app.post('/api/chat', async (req, res) => {
81
- const result = await cachedChat(req.body.message);
82
- res.json(result.data);
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
- ## Storage modes
188
+ ## What's inside
189
+
190
+ ### Embedded Mode — Zero-config semantic cache
89
191
 
90
- ### `memory` Zero dependencies (default)
192
+ The simplest way to add semantic caching to any project:
91
193
 
92
194
  ```typescript
93
- const lemma = await Lemma.create();
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
- - In-process, no external services
97
- - Exact string matching (normalized)
98
- - Resets on restart
99
- - Best for: development, low-traffic apps, getting started
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
- ### `chroma` Persistent semantic cache
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
- const lemma = await Lemma.create({
105
- storage: 'chroma',
106
- threshold: 0.90,
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
- - Persists across restarts
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
- > **Note:** The "chicken and rice" → "rice with chicken" magic only works in `chroma` mode.
116
- > Memory mode does exact normalized matching only.
257
+ ### Consensus engine multi-model voting
117
258
 
118
- ### `cloud` — Managed, zero infra
259
+ For high-stakes decisions, route a query through multiple models and only return when they agree.
119
260
 
120
261
  ```typescript
121
- const lemma = await Lemma.create({
122
- storage: 'cloud',
123
- apiKey: 'lk_live_your_key_here',
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
- - No ChromaDB, no Ollama, no servers
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
- ## API
281
+ ## New in v0.2.0 🎉
282
+
283
+ ### 1. Semantic Memory Backend
135
284
 
136
- ### `Lemma.create(config?)`
285
+ True semantic caching without external dependencies:
137
286
 
138
287
  ```typescript
139
288
  const lemma = await Lemma.create({
140
- storage: 'memory' | 'chroma' | 'cloud', // default: 'memory'
141
- threshold: 0.92, // similarity cutoff (0–1)
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
- ### `lemma.wrap(fn)`
299
+ ### 2. Automatic TTL Cleanup
150
300
 
151
- Wraps any async function. Uses the first argument as the cache key.
301
+ No more memory leaks from expired entries:
152
302
 
153
303
  ```typescript
154
- const cached = lemma.wrap(async (input: string, ...rest) => {
155
- return await someExpensiveCall(input, ...rest);
304
+ const lemma = await Lemma.create({
305
+ ttl: 3600000, // 1 hour expiry
306
+ cleanupInterval: 60000, // Check every minute
156
307
  });
157
308
 
158
- const result = await cached('my query');
159
- // result.data — the actual response
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
- ### `lemma.run(input, fn)`
313
+ ### 3. Circuit Breaker & Fallbacks
166
314
 
167
- Manual control check cache first, run function on miss.
315
+ Automatic resilience when backends fail:
168
316
 
169
317
  ```typescript
170
- const result = await lemma.run(
171
- userMessage,
172
- () => llm.chat.completions.create({ ... })
173
- );
174
-
175
- if (result.fromCache) {
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
- ### `lemma.get(input)` / `lemma.set(input, data)`
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
- Direct cache access.
329
+ lemma.on('backend-degraded', ({ from, to }) => {
330
+ console.log(`Degraded: ${from} → ${to}`);
331
+ });
183
332
 
184
- ```typescript
185
- const cached = await lemma.get('what is machine learning?');
186
- if (!cached) {
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
- ### `lemma.getMetrics()`
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: 847,
198
- // misses: 153,
199
- // total: 1000,
200
- // hitRate: 0.847,
201
- // avgLatencyMs: 12,
202
- // cacheSize: 153
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
- ## Who this is for
363
+ ### 5. Dual Module Support (ESM + CJS)
209
364
 
210
- Lemma pays off fast if your app has any of these:
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
- - **Repetitive user queries** — support bots, FAQ assistants, recipe/travel/fitness apps. Users ask the same things in different words constantly.
213
- - **Multiple services calling the same LLM** — if 3 microservices independently ask similar questions, you're paying 3x. Lemma centralizes the cache.
214
- - **LangChain or CrewAI pipelines** — agents in a pipeline often re-derive the same context. Lemma short-circuits that.
215
- - **High-volume, cost-sensitive apps** — if your LLM bill is already noticeable, the ROI is immediate.
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
- ### Real hit rates by app type
384
+ See [MIGRATION_GUIDE.md](docs/MIGRATION_GUIDE.md) for upgrade instructions.
218
385
 
219
- | App type | Avg hit rate | Savings on 50k req/mo |
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
- *Based on gpt-4o-mini pricing at $0.002/1k tokens, avg 800 tokens/request.*
388
+ ## Install
227
389
 
228
- ---
390
+ ```bash
391
+ npm install @nxuss/lemma
392
+ ```
229
393
 
230
- ## For teams building multi-agent systems
394
+ **Optional dependencies (install as needed):**
231
395
 
232
- If you're past the single-app use case and building systems where multiple AI agents collaborate, Lemma ships a full orchestration layer on top of the cache.
396
+ ```bash
397
+ # For semantic mode (lightweight embeddings)
398
+ npm install @xenova/transformers
233
399
 
234
- ```typescript
235
- import { SubconsciousHub } from 'lemma';
400
+ # For persistent storage with ChromaDB
401
+ pip install chromadb
402
+ chroma run --path ./chroma_data --port 8000
236
403
 
237
- const hub = new SubconsciousHub({ server: { port: 8080 } });
238
- await hub.start();
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
- What this adds:
408
+ **Zero dependencies required** for basic memory mode!
243
409
 
244
- - **WebSocket server** — persistent agent connections with heartbeat
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
- This layer is designed for teams already running LangChain, CrewAI, or custom agent frameworks who need coordination and shared memory across agents. See [docs/](./docs/) for the full architecture guide.
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
- ## Self-hosting the cloud server
428
+ ## Examples & Documentation
256
429
 
257
- ```bash
258
- # 1. Build
259
- npm run build
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
- # 2. Deploy to any VPS
262
- ./scripts/deploy-cloud.sh YOUR_SERVER_IP
437
+ Visit [lemma.nxus.studio/docs](https://lemma.nxus.studio/docs)
263
438
 
264
- # 3. Generate an API key
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
- # 4. Use it
271
- const lemma = await Lemma.create({
272
- storage: 'cloud',
273
- apiKey: 'lk_live_...',
274
- cloudUrl: 'http://YOUR_SERVER_IP:3100',
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
- Requirements: Docker, ChromaDB, Ollama with `nomic-embed-text`.
447
+ Lemma is designed for multi-agent systems where coordination and shared memory provide immediate value.
279
448
 
280
449
  ---
281
450
 
282
- ## Pricing
451
+ ## Production deployment
283
452
 
284
- | | Free | Pro | Scale |
285
- |---|---|---|---|
286
- | Requests/day | 1,000 | 100,000 | Unlimited |
287
- | Semantic matching | ✅ | ✅ | ✅ |
288
- | Persistent cache | ✅ | ✅ | ✅ |
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
- [Get your API key →](https://lemma.dev)
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
- ```bash
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://github.com/Nxusbets)
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"}