@easynet/agent-memory 0.0.2 → 1.0.1

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 (298) hide show
  1. package/README.md +89 -224
  2. package/dist/src/core/agent-memory.d.ts +41 -0
  3. package/dist/src/core/agent-memory.d.ts.map +1 -0
  4. package/dist/src/core/agent-memory.js +127 -0
  5. package/dist/src/core/agent-memory.js.map +1 -0
  6. package/dist/src/core/config.d.ts +78 -0
  7. package/dist/src/core/config.d.ts.map +1 -0
  8. package/dist/src/core/config.js +41 -0
  9. package/dist/src/core/config.js.map +1 -0
  10. package/dist/src/core/observability.d.ts +22 -0
  11. package/dist/src/core/observability.d.ts.map +1 -0
  12. package/dist/src/core/observability.js +33 -0
  13. package/dist/src/core/observability.js.map +1 -0
  14. package/dist/src/core/policy.d.ts +47 -0
  15. package/dist/src/core/policy.d.ts.map +1 -0
  16. package/dist/src/core/policy.js +73 -0
  17. package/dist/src/core/policy.js.map +1 -0
  18. package/dist/src/core/privacy.d.ts +23 -0
  19. package/dist/src/core/privacy.d.ts.map +1 -0
  20. package/dist/src/core/privacy.js +45 -0
  21. package/dist/src/core/privacy.js.map +1 -0
  22. package/dist/src/core/router.d.ts +35 -0
  23. package/dist/src/core/router.d.ts.map +1 -0
  24. package/dist/src/core/router.js +86 -0
  25. package/dist/src/core/router.js.map +1 -0
  26. package/dist/src/core/types.d.ts +82 -0
  27. package/dist/src/core/types.d.ts.map +1 -0
  28. package/dist/src/core/types.js +7 -0
  29. package/dist/{adapters → src/core}/types.js.map +1 -1
  30. package/dist/src/create-agent-memory.d.ts +47 -0
  31. package/dist/src/create-agent-memory.d.ts.map +1 -0
  32. package/dist/src/create-agent-memory.js +148 -0
  33. package/dist/src/create-agent-memory.js.map +1 -0
  34. package/dist/src/index.d.ts +8 -0
  35. package/dist/src/index.d.ts.map +1 -0
  36. package/dist/src/index.js +13 -0
  37. package/dist/src/index.js.map +1 -0
  38. package/dist/src/ingest/pdf-ingest.d.ts +27 -0
  39. package/dist/src/ingest/pdf-ingest.d.ts.map +1 -0
  40. package/dist/src/ingest/pdf-ingest.js +89 -0
  41. package/dist/src/ingest/pdf-ingest.js.map +1 -0
  42. package/dist/src/ingest/url-ingest.d.ts +27 -0
  43. package/dist/src/ingest/url-ingest.d.ts.map +1 -0
  44. package/dist/src/ingest/url-ingest.js +301 -0
  45. package/dist/src/ingest/url-ingest.js.map +1 -0
  46. package/dist/src/integrations/deepagents-adapter.d.ts +42 -0
  47. package/dist/src/integrations/deepagents-adapter.d.ts.map +1 -0
  48. package/dist/src/integrations/deepagents-adapter.js +146 -0
  49. package/dist/src/integrations/deepagents-adapter.js.map +1 -0
  50. package/dist/src/integrations/langchain.d.ts +27 -0
  51. package/dist/src/integrations/langchain.d.ts.map +1 -0
  52. package/dist/src/integrations/langchain.js +28 -0
  53. package/dist/src/integrations/langchain.js.map +1 -0
  54. package/dist/src/integrations/langgraph.d.ts +23 -0
  55. package/dist/src/integrations/langgraph.d.ts.map +1 -0
  56. package/dist/src/integrations/langgraph.js +30 -0
  57. package/dist/src/integrations/langgraph.js.map +1 -0
  58. package/dist/src/providers/in-memory-store.d.ts +15 -0
  59. package/dist/src/providers/in-memory-store.d.ts.map +1 -0
  60. package/dist/src/providers/in-memory-store.js +62 -0
  61. package/dist/src/providers/in-memory-store.js.map +1 -0
  62. package/dist/src/providers/mem0-provider.d.ts +47 -0
  63. package/dist/src/providers/mem0-provider.d.ts.map +1 -0
  64. package/dist/src/providers/mem0-provider.js +99 -0
  65. package/dist/src/providers/mem0-provider.js.map +1 -0
  66. package/dist/src/providers/rag-provider.d.ts +27 -0
  67. package/dist/src/providers/rag-provider.d.ts.map +1 -0
  68. package/dist/src/providers/rag-provider.js +58 -0
  69. package/dist/src/providers/rag-provider.js.map +1 -0
  70. package/dist/src/providers/sqlite-store.d.ts +21 -0
  71. package/dist/src/providers/sqlite-store.d.ts.map +1 -0
  72. package/dist/src/providers/sqlite-store.js +142 -0
  73. package/dist/src/providers/sqlite-store.js.map +1 -0
  74. package/dist/test/core/agent-memory.test.d.ts +2 -0
  75. package/dist/test/core/agent-memory.test.d.ts.map +1 -0
  76. package/dist/test/core/agent-memory.test.js +119 -0
  77. package/dist/test/core/agent-memory.test.js.map +1 -0
  78. package/dist/test/core/config.test.d.ts +2 -0
  79. package/dist/test/core/config.test.d.ts.map +1 -0
  80. package/dist/test/core/config.test.js +48 -0
  81. package/dist/test/core/config.test.js.map +1 -0
  82. package/dist/test/core/observability.test.d.ts +2 -0
  83. package/dist/test/core/observability.test.d.ts.map +1 -0
  84. package/dist/test/core/observability.test.js +53 -0
  85. package/dist/test/core/observability.test.js.map +1 -0
  86. package/dist/test/core/policy.test.d.ts +2 -0
  87. package/dist/test/core/policy.test.d.ts.map +1 -0
  88. package/dist/test/core/policy.test.js +42 -0
  89. package/dist/test/core/policy.test.js.map +1 -0
  90. package/dist/test/core/privacy.test.d.ts +2 -0
  91. package/dist/test/core/privacy.test.d.ts.map +1 -0
  92. package/dist/test/core/privacy.test.js +44 -0
  93. package/dist/test/core/privacy.test.js.map +1 -0
  94. package/dist/test/core/router.test.d.ts +2 -0
  95. package/dist/test/core/router.test.d.ts.map +1 -0
  96. package/dist/test/core/router.test.js +118 -0
  97. package/dist/test/core/router.test.js.map +1 -0
  98. package/dist/test/create-agent-memory.test.d.ts +2 -0
  99. package/dist/test/create-agent-memory.test.d.ts.map +1 -0
  100. package/dist/test/create-agent-memory.test.js +122 -0
  101. package/dist/test/create-agent-memory.test.js.map +1 -0
  102. package/dist/test/ingest/url-ingest.test.d.ts +2 -0
  103. package/dist/test/ingest/url-ingest.test.d.ts.map +1 -0
  104. package/dist/test/ingest/url-ingest.test.js +142 -0
  105. package/dist/test/ingest/url-ingest.test.js.map +1 -0
  106. package/dist/test/integration/agent-memory-flow.test.d.ts +5 -0
  107. package/dist/test/integration/agent-memory-flow.test.d.ts.map +1 -0
  108. package/dist/test/integration/agent-memory-flow.test.js +80 -0
  109. package/dist/test/integration/agent-memory-flow.test.js.map +1 -0
  110. package/dist/test/integration/helpers/ollama-live.d.ts +16 -0
  111. package/dist/test/integration/helpers/ollama-live.d.ts.map +1 -0
  112. package/dist/test/integration/helpers/ollama-live.js +101 -0
  113. package/dist/test/integration/helpers/ollama-live.js.map +1 -0
  114. package/dist/test/integration/url-ingest-flow.test.d.ts +5 -0
  115. package/dist/test/integration/url-ingest-flow.test.d.ts.map +1 -0
  116. package/dist/test/integration/url-ingest-flow.test.js +50 -0
  117. package/dist/test/integration/url-ingest-flow.test.js.map +1 -0
  118. package/dist/test/integration/vlm-llm-live.test.d.ts +9 -0
  119. package/dist/test/integration/vlm-llm-live.test.d.ts.map +1 -0
  120. package/dist/test/integration/vlm-llm-live.test.js +141 -0
  121. package/dist/test/integration/vlm-llm-live.test.js.map +1 -0
  122. package/dist/test/providers/in-memory-store.test.d.ts +2 -0
  123. package/dist/test/providers/in-memory-store.test.d.ts.map +1 -0
  124. package/dist/test/providers/in-memory-store.test.js +44 -0
  125. package/dist/test/providers/in-memory-store.test.js.map +1 -0
  126. package/dist/test/providers/rag-provider.test.d.ts +2 -0
  127. package/dist/test/providers/rag-provider.test.d.ts.map +1 -0
  128. package/dist/test/providers/rag-provider.test.js +113 -0
  129. package/dist/test/providers/rag-provider.test.js.map +1 -0
  130. package/dist/test/providers/sqlite-store.test.d.ts +2 -0
  131. package/dist/test/providers/sqlite-store.test.d.ts.map +1 -0
  132. package/dist/test/providers/sqlite-store.test.js +119 -0
  133. package/dist/test/providers/sqlite-store.test.js.map +1 -0
  134. package/package.json +79 -39
  135. package/bin/chat +0 -11
  136. package/dist/adapters/index.d.ts +0 -8
  137. package/dist/adapters/index.d.ts.map +0 -1
  138. package/dist/adapters/index.js +0 -29
  139. package/dist/adapters/index.js.map +0 -1
  140. package/dist/adapters/mem0/mem0-store.d.ts +0 -29
  141. package/dist/adapters/mem0/mem0-store.d.ts.map +0 -1
  142. package/dist/adapters/mem0/mem0-store.js +0 -174
  143. package/dist/adapters/mem0/mem0-store.js.map +0 -1
  144. package/dist/adapters/rag-http/rag-http-retriever.d.ts +0 -18
  145. package/dist/adapters/rag-http/rag-http-retriever.d.ts.map +0 -1
  146. package/dist/adapters/rag-http/rag-http-retriever.js +0 -71
  147. package/dist/adapters/rag-http/rag-http-retriever.js.map +0 -1
  148. package/dist/adapters/types.d.ts +0 -25
  149. package/dist/adapters/types.d.ts.map +0 -1
  150. package/dist/adapters/types.js +0 -6
  151. package/dist/boot/boot-rebuilder.d.ts +0 -26
  152. package/dist/boot/boot-rebuilder.d.ts.map +0 -1
  153. package/dist/boot/boot-rebuilder.js +0 -112
  154. package/dist/boot/boot-rebuilder.js.map +0 -1
  155. package/dist/boot/index.d.ts +0 -3
  156. package/dist/boot/index.d.ts.map +0 -1
  157. package/dist/boot/index.js +0 -6
  158. package/dist/boot/index.js.map +0 -1
  159. package/dist/cli/chat-split.d.ts +0 -22
  160. package/dist/cli/chat-split.d.ts.map +0 -1
  161. package/dist/cli/chat-split.js +0 -187
  162. package/dist/cli/chat-split.js.map +0 -1
  163. package/dist/cli/chat.d.ts +0 -19
  164. package/dist/cli/chat.d.ts.map +0 -1
  165. package/dist/cli/chat.js +0 -266
  166. package/dist/cli/chat.js.map +0 -1
  167. package/dist/cli/commands/command-handler.d.ts +0 -32
  168. package/dist/cli/commands/command-handler.d.ts.map +0 -1
  169. package/dist/cli/commands/command-handler.js +0 -143
  170. package/dist/cli/commands/command-handler.js.map +0 -1
  171. package/dist/cli/index.d.ts +0 -3
  172. package/dist/cli/index.d.ts.map +0 -1
  173. package/dist/cli/index.js +0 -8
  174. package/dist/cli/index.js.map +0 -1
  175. package/dist/cli/ui/display-manager.d.ts +0 -18
  176. package/dist/cli/ui/display-manager.d.ts.map +0 -1
  177. package/dist/cli/ui/display-manager.js +0 -69
  178. package/dist/cli/ui/display-manager.js.map +0 -1
  179. package/dist/cli/ui/screen-layout.d.ts +0 -12
  180. package/dist/cli/ui/screen-layout.d.ts.map +0 -1
  181. package/dist/cli/ui/screen-layout.js +0 -125
  182. package/dist/cli/ui/screen-layout.js.map +0 -1
  183. package/dist/config/index.d.ts +0 -2
  184. package/dist/config/index.d.ts.map +0 -1
  185. package/dist/config/index.js +0 -6
  186. package/dist/config/index.js.map +0 -1
  187. package/dist/config/loader.d.ts +0 -9
  188. package/dist/config/loader.d.ts.map +0 -1
  189. package/dist/config/loader.js +0 -107
  190. package/dist/config/loader.js.map +0 -1
  191. package/dist/context/context-builder.d.ts +0 -18
  192. package/dist/context/context-builder.d.ts.map +0 -1
  193. package/dist/context/context-builder.js +0 -91
  194. package/dist/context/context-builder.js.map +0 -1
  195. package/dist/core/agent-memory.d.ts +0 -50
  196. package/dist/core/agent-memory.d.ts.map +0 -1
  197. package/dist/core/agent-memory.js +0 -297
  198. package/dist/core/agent-memory.js.map +0 -1
  199. package/dist/embedding/embedder.d.ts +0 -49
  200. package/dist/embedding/embedder.d.ts.map +0 -1
  201. package/dist/embedding/embedder.js +0 -146
  202. package/dist/embedding/embedder.js.map +0 -1
  203. package/dist/embedding/index.d.ts +0 -3
  204. package/dist/embedding/index.d.ts.map +0 -1
  205. package/dist/embedding/index.js +0 -8
  206. package/dist/embedding/index.js.map +0 -1
  207. package/dist/gate/deduplicator.d.ts +0 -22
  208. package/dist/gate/deduplicator.d.ts.map +0 -1
  209. package/dist/gate/deduplicator.js +0 -74
  210. package/dist/gate/deduplicator.js.map +0 -1
  211. package/dist/gate/extractor.d.ts +0 -33
  212. package/dist/gate/extractor.d.ts.map +0 -1
  213. package/dist/gate/extractor.js +0 -122
  214. package/dist/gate/extractor.js.map +0 -1
  215. package/dist/gate/index.d.ts +0 -3
  216. package/dist/gate/index.d.ts.map +0 -1
  217. package/dist/gate/index.js +0 -6
  218. package/dist/gate/index.js.map +0 -1
  219. package/dist/gate/memory-gate.d.ts +0 -27
  220. package/dist/gate/memory-gate.d.ts.map +0 -1
  221. package/dist/gate/memory-gate.js +0 -86
  222. package/dist/gate/memory-gate.js.map +0 -1
  223. package/dist/gate/redactor.d.ts +0 -14
  224. package/dist/gate/redactor.d.ts.map +0 -1
  225. package/dist/gate/redactor.js +0 -24
  226. package/dist/gate/redactor.js.map +0 -1
  227. package/dist/index.d.ts +0 -6
  228. package/dist/index.d.ts.map +0 -1
  229. package/dist/index.js +0 -24
  230. package/dist/index.js.map +0 -1
  231. package/dist/indexing/in-memory-index.d.ts +0 -67
  232. package/dist/indexing/in-memory-index.d.ts.map +0 -1
  233. package/dist/indexing/in-memory-index.js +0 -135
  234. package/dist/indexing/in-memory-index.js.map +0 -1
  235. package/dist/indexing/index.d.ts +0 -3
  236. package/dist/indexing/index.d.ts.map +0 -1
  237. package/dist/indexing/index.js +0 -6
  238. package/dist/indexing/index.js.map +0 -1
  239. package/dist/persistence/database/schema.d.ts +0 -6
  240. package/dist/persistence/database/schema.d.ts.map +0 -1
  241. package/dist/persistence/database/schema.js +0 -75
  242. package/dist/persistence/database/schema.js.map +0 -1
  243. package/dist/persistence/index.d.ts +0 -3
  244. package/dist/persistence/index.d.ts.map +0 -1
  245. package/dist/persistence/index.js +0 -6
  246. package/dist/persistence/index.js.map +0 -1
  247. package/dist/persistence/repository/embedding-operations.d.ts +0 -17
  248. package/dist/persistence/repository/embedding-operations.d.ts.map +0 -1
  249. package/dist/persistence/repository/embedding-operations.js +0 -58
  250. package/dist/persistence/repository/embedding-operations.js.map +0 -1
  251. package/dist/persistence/repository/memory-operations.d.ts +0 -28
  252. package/dist/persistence/repository/memory-operations.d.ts.map +0 -1
  253. package/dist/persistence/repository/memory-operations.js +0 -87
  254. package/dist/persistence/repository/memory-operations.js.map +0 -1
  255. package/dist/persistence/repository/meta-operations.d.ts +0 -15
  256. package/dist/persistence/repository/meta-operations.d.ts.map +0 -1
  257. package/dist/persistence/repository/meta-operations.js +0 -20
  258. package/dist/persistence/repository/meta-operations.js.map +0 -1
  259. package/dist/persistence/sqlite-repo.d.ts +0 -58
  260. package/dist/persistence/sqlite-repo.d.ts.map +0 -1
  261. package/dist/persistence/sqlite-repo.js +0 -81
  262. package/dist/persistence/sqlite-repo.js.map +0 -1
  263. package/dist/persistence/utils/hash.d.ts +0 -8
  264. package/dist/persistence/utils/hash.d.ts.map +0 -1
  265. package/dist/persistence/utils/hash.js +0 -48
  266. package/dist/persistence/utils/hash.js.map +0 -1
  267. package/dist/persistence/utils/serialization.d.ts +0 -33
  268. package/dist/persistence/utils/serialization.d.ts.map +0 -1
  269. package/dist/persistence/utils/serialization.js +0 -85
  270. package/dist/persistence/utils/serialization.js.map +0 -1
  271. package/dist/processing/document/document-processor.d.ts +0 -30
  272. package/dist/processing/document/document-processor.d.ts.map +0 -1
  273. package/dist/processing/document/document-processor.js +0 -158
  274. package/dist/processing/document/document-processor.js.map +0 -1
  275. package/dist/processing/document/index.d.ts +0 -3
  276. package/dist/processing/document/index.d.ts.map +0 -1
  277. package/dist/processing/document/index.js +0 -6
  278. package/dist/processing/document/index.js.map +0 -1
  279. package/dist/ranker/ranker.d.ts +0 -26
  280. package/dist/ranker/ranker.d.ts.map +0 -1
  281. package/dist/ranker/ranker.js +0 -40
  282. package/dist/ranker/ranker.js.map +0 -1
  283. package/dist/recall/recall-engine.d.ts +0 -19
  284. package/dist/recall/recall-engine.d.ts.map +0 -1
  285. package/dist/recall/recall-engine.js +0 -79
  286. package/dist/recall/recall-engine.js.map +0 -1
  287. package/dist/types/config.d.ts +0 -821
  288. package/dist/types/config.d.ts.map +0 -1
  289. package/dist/types/config.js +0 -128
  290. package/dist/types/config.js.map +0 -1
  291. package/dist/types/document.d.ts +0 -37
  292. package/dist/types/document.d.ts.map +0 -1
  293. package/dist/types/document.js +0 -6
  294. package/dist/types/document.js.map +0 -1
  295. package/dist/types/index.d.ts +0 -86
  296. package/dist/types/index.d.ts.map +0 -1
  297. package/dist/types/index.js +0 -6
  298. package/dist/types/index.js.map +0 -1
@@ -1,91 +0,0 @@
1
- "use strict";
2
- /**
3
- * Context builder - Format memory and docs into prompt-ready context
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ContextBuilder = void 0;
7
- class ContextBuilder {
8
- constructor(config) {
9
- this.config = config;
10
- }
11
- /**
12
- * Build context string from memory and docs
13
- */
14
- build(memory, docs) {
15
- if (!this.config.enabled) {
16
- return "";
17
- }
18
- const parts = [];
19
- // Add memory section
20
- if (memory.length > 0) {
21
- parts.push("[MEMORY]");
22
- const memoryByType = {};
23
- for (const item of memory) {
24
- if (!memoryByType[item.type]) {
25
- memoryByType[item.type] = [];
26
- }
27
- memoryByType[item.type].push(item);
28
- }
29
- for (const [type, items] of Object.entries(memoryByType)) {
30
- for (const item of items) {
31
- parts.push(`- (${type}) ${item.content}`);
32
- }
33
- }
34
- parts.push("");
35
- }
36
- // Add docs section
37
- if (docs.length > 0) {
38
- parts.push("[DOC EVIDENCE]");
39
- for (const doc of docs) {
40
- const sourceParts = [];
41
- if (doc.source.title)
42
- sourceParts.push(doc.source.title);
43
- if (doc.source.section)
44
- sourceParts.push(`#${doc.source.section}`);
45
- if (doc.source.page)
46
- sourceParts.push(`p${doc.source.page}`);
47
- const sourceStr = sourceParts.length > 0 ? ` (${sourceParts.join(", ")})` : "";
48
- const citation = doc.citations && doc.citations.length > 0
49
- ? ` [${doc.citations.map(c => c.label).join(", ")}]`
50
- : "";
51
- parts.push(`- ${doc.text}${sourceStr}${citation}`);
52
- }
53
- }
54
- let context = parts.join("\n");
55
- // Simple token estimation (rough: 1 token ≈ 4 characters)
56
- const estimatedTokens = context.length / 4;
57
- if (estimatedTokens > this.config.max_tokens) {
58
- // Truncate if needed (simple approach: cut from docs first, then memory)
59
- const maxChars = this.config.max_tokens * 4;
60
- if (memory.length > 0 && docs.length > 0) {
61
- // Try to keep memory, truncate docs
62
- const memoryPart = parts.slice(0, memory.length + 2).join("\n") + "\n\n";
63
- const memoryPartSize = memoryPart.length;
64
- const availableForDocs = Math.max(0, maxChars - memoryPartSize - 20); // Reserve for header
65
- if (availableForDocs > 0) {
66
- const docsPart = parts.slice(memory.length > 0 ? memory.length + 3 : 1).join("\n");
67
- const truncatedDocs = docsPart.substring(0, availableForDocs);
68
- context = memoryPart + "[DOC EVIDENCE]\n" + truncatedDocs;
69
- }
70
- else {
71
- // Not enough space, truncate memory only
72
- const memoryText = parts.slice(1, memory.length + 1).join("\n");
73
- context = "[MEMORY]\n" + memoryText.substring(0, maxChars - 20);
74
- }
75
- }
76
- else if (memory.length > 0) {
77
- // Only memory, truncate it
78
- const memoryText = parts.slice(1, memory.length + 1).join("\n");
79
- context = "[MEMORY]\n" + memoryText.substring(0, maxChars - 20);
80
- }
81
- else if (docs.length > 0) {
82
- // Only docs, truncate them
83
- const docsText = parts.slice(1).join("\n");
84
- context = "[DOC EVIDENCE]\n" + docsText.substring(0, maxChars - 20);
85
- }
86
- }
87
- return context;
88
- }
89
- }
90
- exports.ContextBuilder = ContextBuilder;
91
- //# sourceMappingURL=context-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/context/context-builder.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- /**
2
- * AgentMemory - Main class for agent memory management
3
- */
4
- import { RememberOptions, RecallOptions, RecallResult, FeedbackOptions } from "../types";
5
- import { DocumentMemoryOptions } from "../types/document";
6
- export declare class AgentMemory {
7
- private config;
8
- private store;
9
- private retriever;
10
- private gate;
11
- private recallEngine;
12
- private repo;
13
- private index;
14
- private embedder;
15
- private rebuilder;
16
- private isInMemoryMode;
17
- private documentProcessor;
18
- private constructor();
19
- private initInMemoryMode;
20
- /**
21
- * Create AgentMemory instance from YAML configuration file
22
- */
23
- static fromYaml(configPath: string): Promise<AgentMemory>;
24
- /**
25
- * Remember - Store memories from messages or text
26
- */
27
- remember(options: RememberOptions): Promise<void>;
28
- private rememberInMemory;
29
- private persistEmbeddingsAsync;
30
- /**
31
- * Recall - Retrieve memories and documents
32
- */
33
- recall(options: RecallOptions): Promise<RecallResult>;
34
- private recallInMemory;
35
- private generateTraceId;
36
- /**
37
- * Remember documents - Store document content as memories
38
- * Supports multi-modal documents (text, PDF, images, etc.)
39
- */
40
- rememberDocument(options: DocumentMemoryOptions): Promise<void>;
41
- /**
42
- * Feedback - Provide feedback for memory utility learning (reserved for v0.2+)
43
- */
44
- feedback(options: FeedbackOptions): Promise<void>;
45
- /**
46
- * Close resources (SQLite connection, etc.)
47
- */
48
- close(): void;
49
- }
50
- //# sourceMappingURL=agent-memory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-memory.d.ts","sourceRoot":"","sources":["../../src/core/agent-memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EAEhB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAO1D,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,YAAY,CAA6B;IAGjD,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,cAAc,CAAkB;IAGxC,OAAO,CAAC,iBAAiB,CAAoB;IAE7C,OAAO;IAmBP,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;WACU,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAY/D;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YA6BzC,gBAAgB;YA2BhB,sBAAsB;IAyBpC;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YAW7C,cAAc;IAmD5B,OAAO,CAAC,eAAe;IAQvB;;;OAGG;IACG,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4FrE;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvD;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd"}
@@ -1,297 +0,0 @@
1
- "use strict";
2
- /**
3
- * AgentMemory - Main class for agent memory management
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AgentMemory = void 0;
7
- const config_1 = require("../config");
8
- const adapters_1 = require("../adapters");
9
- const gate_1 = require("../gate");
10
- const recall_engine_1 = require("../recall/recall-engine");
11
- const context_builder_1 = require("../context/context-builder");
12
- const document_processor_1 = require("../processing/document/document-processor");
13
- const persistence_1 = require("../persistence");
14
- const indexing_1 = require("../indexing");
15
- const embedding_1 = require("../embedding");
16
- const boot_1 = require("../boot");
17
- class AgentMemory {
18
- constructor(config) {
19
- this.store = null;
20
- this.retriever = null;
21
- this.recallEngine = null;
22
- // Route A (in-memory) components
23
- this.repo = null;
24
- this.index = null;
25
- this.embedder = null;
26
- this.rebuilder = null;
27
- this.isInMemoryMode = false;
28
- this.config = config;
29
- this.gate = new gate_1.MemoryGate(config);
30
- this.documentProcessor = new document_processor_1.DocumentProcessor();
31
- const mem0Mode = config.store.mem0.mode || "platform";
32
- this.isInMemoryMode = mem0Mode === "in_memory";
33
- if (this.isInMemoryMode) {
34
- // Route A: Initialize SQLite + InMemoryIndex
35
- this.initInMemoryMode();
36
- }
37
- else {
38
- // Original: Platform API mode
39
- this.store = (0, adapters_1.createMemoryStore)(config);
40
- this.retriever = (0, adapters_1.createDocRetriever)(config);
41
- this.recallEngine = new recall_engine_1.RecallEngine(this.store, this.retriever, config);
42
- }
43
- }
44
- initInMemoryMode() {
45
- if (!this.config.persistence?.sqlite) {
46
- throw new Error("persistence.sqlite is required for in_memory mode");
47
- }
48
- if (!this.config.embedding) {
49
- throw new Error("embedding configuration is required for in_memory mode");
50
- }
51
- // Initialize SQLite repository
52
- this.repo = new persistence_1.SqliteMemoryRepo({
53
- path: this.config.persistence.sqlite.path,
54
- wal: this.config.persistence.sqlite.wal !== false,
55
- });
56
- // Initialize in-memory index
57
- this.index = new indexing_1.InMemoryIndex();
58
- // Initialize embedder
59
- this.embedder = (0, embedding_1.createEmbedder)(this.config.embedding);
60
- // Initialize boot rebuilder
61
- if (this.config.boot?.rebuild?.enabled !== false) {
62
- this.rebuilder = new boot_1.BootRebuilder(this.repo, this.index, this.embedder, {
63
- batchSize: this.config.boot?.rebuild?.batch_size,
64
- onModelMismatch: this.config.boot?.rebuild?.on_model_mismatch,
65
- });
66
- }
67
- }
68
- /**
69
- * Create AgentMemory instance from YAML configuration file
70
- */
71
- static async fromYaml(configPath) {
72
- const config = await (0, config_1.loadConfig)(configPath);
73
- const instance = new AgentMemory(config);
74
- // If in-memory mode, rebuild index on startup
75
- if (instance.isInMemoryMode && instance.rebuilder) {
76
- await instance.rebuilder.rebuild();
77
- }
78
- return instance;
79
- }
80
- /**
81
- * Remember - Store memories from messages or text
82
- */
83
- async remember(options) {
84
- // Process through MemoryGate
85
- const items = await this.gate.process({
86
- messages: options.messages,
87
- text: options.text,
88
- actor: options.actor,
89
- scope: options.scope,
90
- hint: options.hint,
91
- });
92
- if (items.length === 0) {
93
- return;
94
- }
95
- if (this.isInMemoryMode) {
96
- // Route A: Write to SQLite first, then index
97
- await this.rememberInMemory(items, options);
98
- }
99
- else {
100
- // Original: Write to platform API
101
- if (!this.store) {
102
- throw new Error("Store not initialized");
103
- }
104
- await this.store.add(items, {
105
- actor: options.actor,
106
- scope: options.scope,
107
- });
108
- }
109
- }
110
- async rememberInMemory(items, options) {
111
- if (!this.repo || !this.index || !this.embedder) {
112
- throw new Error("In-memory components not initialized");
113
- }
114
- // 1. Write to SQLite (source of truth)
115
- const toIndex = [];
116
- for (const item of items) {
117
- const { inserted } = await this.repo.upsertMemory(item);
118
- if (inserted) {
119
- toIndex.push(item);
120
- }
121
- }
122
- if (toIndex.length === 0) {
123
- return; // All items were duplicates
124
- }
125
- // 2. Compute embeddings asynchronously (don't block)
126
- this.persistEmbeddingsAsync(toIndex).catch((error) => {
127
- console.error("Failed to persist embeddings:", error);
128
- });
129
- // 3. Add to in-memory index (for immediate recall)
130
- await this.index.add(toIndex);
131
- }
132
- async persistEmbeddingsAsync(items) {
133
- if (!this.repo || !this.index || !this.embedder || items.length === 0) {
134
- return;
135
- }
136
- try {
137
- const texts = items.map((item) => item.content);
138
- const embeddings = await this.embedder.embed(texts);
139
- for (let i = 0; i < items.length; i++) {
140
- const item = items[i];
141
- const embedding = embeddings[i];
142
- // Save to SQLite
143
- await this.repo.saveEmbedding(item.id, this.embedder.model, this.embedder.dim, embedding);
144
- // Add to index
145
- await this.index.addEmbedding(item.id, embedding);
146
- }
147
- }
148
- catch (error) {
149
- console.error("Failed to persist embeddings:", error);
150
- // Mark as failed in SQLite (optional)
151
- }
152
- }
153
- /**
154
- * Recall - Retrieve memories and documents
155
- */
156
- async recall(options) {
157
- if (this.isInMemoryMode) {
158
- return this.recallInMemory(options);
159
- }
160
- else {
161
- if (!this.recallEngine) {
162
- throw new Error("Recall engine not initialized");
163
- }
164
- return this.recallEngine.recall(options);
165
- }
166
- }
167
- async recallInMemory(options) {
168
- if (!this.repo || !this.index || !this.embedder) {
169
- throw new Error("In-memory components not initialized");
170
- }
171
- const topK = options.topK || 10;
172
- // 1. Embed query
173
- const queryEmbedding = (await this.embedder.embed([options.query]))[0];
174
- // 2. Search in-memory index
175
- const { ids } = await this.index.search(queryEmbedding, topK, {
176
- actor: options.actor,
177
- scope: options.scope,
178
- });
179
- // 3. Load full items from SQLite (source of truth)
180
- const memory = await this.repo.loadByIds(ids);
181
- // 4. Build context
182
- const contextBuilder = new context_builder_1.ContextBuilder(this.config.recall?.context || {
183
- enabled: true,
184
- template: "default",
185
- max_tokens: 1400,
186
- });
187
- // Get docs if enabled
188
- let docs = [];
189
- if (options.includeDocs !== false && this.retriever) {
190
- try {
191
- docs = await this.retriever.search(options.query, {
192
- scope: options.scope,
193
- topK,
194
- });
195
- }
196
- catch (error) {
197
- console.error("Failed to retrieve documents:", error);
198
- }
199
- }
200
- const context = contextBuilder.build(memory, docs);
201
- return {
202
- memory,
203
- docs,
204
- context,
205
- traceId: this.generateTraceId(),
206
- };
207
- }
208
- generateTraceId() {
209
- return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
210
- const r = (Math.random() * 16) | 0;
211
- const v = c === "x" ? r : (r & 0x3) | 0x8;
212
- return v.toString(16);
213
- });
214
- }
215
- /**
216
- * Remember documents - Store document content as memories
217
- * Supports multi-modal documents (text, PDF, images, etc.)
218
- */
219
- async rememberDocument(options) {
220
- const { document, actor, scope, autoChunk = true, chunkSize, chunkOverlap, extractMetadata = false, tags = [], } = options;
221
- // Process documents into chunks
222
- const chunks = autoChunk
223
- ? this.documentProcessor.processDocument(document, {
224
- chunkSize,
225
- chunkOverlap,
226
- })
227
- : Array.isArray(document)
228
- ? document
229
- : [document];
230
- // Convert chunks to memory items
231
- const memoryItems = [];
232
- for (const chunk of chunks) {
233
- // Convert chunk to memory items
234
- const items = this.documentProcessor.chunksToMemoryItems([chunk], actor, scope, tags);
235
- memoryItems.push(...items);
236
- // Extract metadata if requested
237
- if (extractMetadata) {
238
- const metaItems = this.documentProcessor.extractMetadataAsMemories(chunk, actor, scope);
239
- memoryItems.push(...metaItems);
240
- }
241
- }
242
- if (memoryItems.length === 0) {
243
- return;
244
- }
245
- // Process through MemoryGate for redaction and deduplication
246
- // Documents already have structure, so we apply light processing
247
- // Use gate's internal components for redaction and deduplication only
248
- const gateInternal = this.gate;
249
- const redactor = gateInternal.redactor;
250
- const deduplicator = gateInternal.deduplicator;
251
- // Apply redaction to content
252
- const redactedItems = memoryItems.map((item) => ({
253
- ...item,
254
- content: redactor.redact(item.content),
255
- }));
256
- // Filter out items with too little content after redaction
257
- const validItems = redactedItems.filter((item) => item.content.trim().length >= 10);
258
- // Apply deduplication
259
- const finalItems = deduplicator.dedupe(validItems);
260
- if (finalItems.length === 0) {
261
- return;
262
- }
263
- // Store memories
264
- if (this.isInMemoryMode) {
265
- await this.rememberInMemory(finalItems, {
266
- actor,
267
- scope,
268
- });
269
- }
270
- else {
271
- if (!this.store) {
272
- throw new Error("Store not initialized");
273
- }
274
- await this.store.add(finalItems, {
275
- actor,
276
- scope,
277
- });
278
- }
279
- }
280
- /**
281
- * Feedback - Provide feedback for memory utility learning (reserved for v0.2+)
282
- */
283
- async feedback(options) {
284
- // Placeholder for future implementation
285
- console.warn("feedback() is not yet implemented in v0.1");
286
- }
287
- /**
288
- * Close resources (SQLite connection, etc.)
289
- */
290
- close() {
291
- if (this.repo) {
292
- this.repo.close();
293
- }
294
- }
295
- }
296
- exports.AgentMemory = AgentMemory;
297
- //# sourceMappingURL=agent-memory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-memory.js","sourceRoot":"","sources":["../../src/core/agent-memory.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- /**
2
- * Embedding provider interface and implementations
3
- */
4
- export interface Embedder {
5
- model: string;
6
- dim: number;
7
- embed(texts: string[]): Promise<Float32Array[]>;
8
- }
9
- export interface EmbedderConfig {
10
- provider: "ollama" | "openai";
11
- model: string;
12
- dim: number;
13
- base_url?: string;
14
- api_key?: string;
15
- concurrency?: number;
16
- }
17
- /**
18
- * Ollama Embedder
19
- */
20
- export declare class OllamaEmbedder implements Embedder {
21
- readonly model: string;
22
- readonly dim: number;
23
- private baseUrl;
24
- private concurrency;
25
- private queue;
26
- private running;
27
- constructor(config: EmbedderConfig);
28
- embed(texts: string[]): Promise<Float32Array[]>;
29
- private embedOne;
30
- }
31
- /**
32
- * OpenAI Embedder
33
- */
34
- export declare class OpenAIEmbedder implements Embedder {
35
- readonly model: string;
36
- readonly dim: number;
37
- private apiKey;
38
- private baseUrl;
39
- private concurrency;
40
- private running;
41
- constructor(config: EmbedderConfig);
42
- embed(texts: string[]): Promise<Float32Array[]>;
43
- private embedBatch;
44
- }
45
- /**
46
- * Create embedder from config
47
- */
48
- export declare function createEmbedder(config: EmbedderConfig): Embedder;
49
- //# sourceMappingURL=embedder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/embedding/embedder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,OAAO,CAAK;gBAER,MAAM,EAAE,cAAc;IAO5B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAevC,QAAQ;CAoCvB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAK;gBAER,MAAM,EAAE,cAAc;IAW5B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YA4BvC,UAAU;CA6BzB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAS/D"}
@@ -1,146 +0,0 @@
1
- "use strict";
2
- /**
3
- * Embedding provider interface and implementations
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.OpenAIEmbedder = exports.OllamaEmbedder = void 0;
7
- exports.createEmbedder = createEmbedder;
8
- /**
9
- * Ollama Embedder
10
- */
11
- class OllamaEmbedder {
12
- constructor(config) {
13
- this.queue = [];
14
- this.running = 0;
15
- this.model = config.model;
16
- this.dim = config.dim;
17
- this.baseUrl = config.base_url || "http://localhost:11434";
18
- this.concurrency = config.concurrency || 4;
19
- }
20
- async embed(texts) {
21
- const results = [];
22
- const promises = [];
23
- for (const text of texts) {
24
- const promise = this.embedOne(text).then((vector) => {
25
- results.push(vector);
26
- });
27
- promises.push(promise);
28
- }
29
- await Promise.all(promises);
30
- return results;
31
- }
32
- async embedOne(text) {
33
- // Wait for available slot
34
- while (this.running >= this.concurrency) {
35
- await new Promise((resolve) => setTimeout(resolve, 10));
36
- }
37
- this.running++;
38
- try {
39
- const response = await fetch(`${this.baseUrl}/api/embeddings`, {
40
- method: "POST",
41
- headers: {
42
- "Content-Type": "application/json",
43
- },
44
- body: JSON.stringify({
45
- model: this.model,
46
- prompt: text,
47
- }),
48
- });
49
- if (!response.ok) {
50
- const error = await response.text();
51
- throw new Error(`Ollama embedding error: ${response.status} ${error}`);
52
- }
53
- const result = await response.json();
54
- const embedding = result.embedding || result.embedding || [];
55
- if (!Array.isArray(embedding) || embedding.length !== this.dim) {
56
- throw new Error(`Invalid embedding dimension: expected ${this.dim}, got ${embedding.length}`);
57
- }
58
- return new Float32Array(embedding);
59
- }
60
- finally {
61
- this.running--;
62
- }
63
- }
64
- }
65
- exports.OllamaEmbedder = OllamaEmbedder;
66
- /**
67
- * OpenAI Embedder
68
- */
69
- class OpenAIEmbedder {
70
- constructor(config) {
71
- this.running = 0;
72
- if (!config.api_key) {
73
- throw new Error("OpenAI API key is required");
74
- }
75
- this.model = config.model;
76
- this.dim = config.dim;
77
- this.apiKey = config.api_key;
78
- this.baseUrl = config.base_url || "https://api.openai.com/v1";
79
- this.concurrency = config.concurrency || 4;
80
- }
81
- async embed(texts) {
82
- const results = [];
83
- const batches = [];
84
- const batchSize = 100; // OpenAI allows up to 2048 inputs per request
85
- // Batch texts
86
- for (let i = 0; i < texts.length; i += batchSize) {
87
- batches.push(texts.slice(i, i + batchSize));
88
- }
89
- // Process batches with concurrency control
90
- for (const batch of batches) {
91
- while (this.running >= this.concurrency) {
92
- await new Promise((resolve) => setTimeout(resolve, 10));
93
- }
94
- this.running++;
95
- try {
96
- const vectors = await this.embedBatch(batch);
97
- results.push(...vectors);
98
- }
99
- finally {
100
- this.running--;
101
- }
102
- }
103
- return results;
104
- }
105
- async embedBatch(texts) {
106
- const response = await fetch(`${this.baseUrl}/embeddings`, {
107
- method: "POST",
108
- headers: {
109
- "Content-Type": "application/json",
110
- Authorization: `Bearer ${this.apiKey}`,
111
- },
112
- body: JSON.stringify({
113
- model: this.model,
114
- input: texts,
115
- }),
116
- });
117
- if (!response.ok) {
118
- const error = await response.text();
119
- throw new Error(`OpenAI embedding error: ${response.status} ${error}`);
120
- }
121
- const result = await response.json();
122
- const embeddings = result.data || [];
123
- return embeddings.map((item) => {
124
- const embedding = item.embedding || [];
125
- if (!Array.isArray(embedding) || embedding.length !== this.dim) {
126
- throw new Error(`Invalid embedding dimension: expected ${this.dim}, got ${embedding.length}`);
127
- }
128
- return new Float32Array(embedding);
129
- });
130
- }
131
- }
132
- exports.OpenAIEmbedder = OpenAIEmbedder;
133
- /**
134
- * Create embedder from config
135
- */
136
- function createEmbedder(config) {
137
- switch (config.provider) {
138
- case "ollama":
139
- return new OllamaEmbedder(config);
140
- case "openai":
141
- return new OpenAIEmbedder(config);
142
- default:
143
- throw new Error(`Unsupported embedding provider: ${config.provider}`);
144
- }
145
- }
146
- //# sourceMappingURL=embedder.js.map